본문 바로가기

Project/Anti-Virus (Python)

2. 악성코드와 백신

2.1 악성코드

2.1.1 악성코드란?

 컴퓨터에 악영향을 미칠 수 있는 모든 소프트웨어의 총칭이다. 과거에는 디스크 복제 등 저장매체를 따라 전파되었으나 네트워크의 발전으로 이메일이나 웹으로 감염되는 경우가 훨씬 많아졌다.


2.1.2 악성코드의 역사

 가장 영향력 있었던 악성코드 15개

  • Brain(1986) : 최초의 PC 바이러스
  • Morris(1988) : 인터넷에 연결된 컴퓨터의 약 10%가 이 웜에 의해서 감염
  • Michelangelo(1992) : 언론에 주목받은 최초의 바이러스
  • Concept(1995) : 최초의 매크로 바이러스
  • Melissa(1999) : 글로벌 감염에 따른 악성코드에 의한 대량 메일 발송 시대를 만듦
  • Slammer(2003) : 전 세계적으로 네트워크를 마비시킨 웜, 1.25 대란
  • Cabir(2004) : 심비안 플랫폼의 최초의 기술 검증 바이러스, 블루투스를 통해 전파
  • Leap(2006) : 최초의 Mac OSX용 바이러스
  • Storm(2007) : 스팸 웜 바이러스, 분산 C&C 서버 사용의 선구자적 바이러스
  • Koobface(2008) : 페이스북을 타깃으로 하는 최초의 악성코드
  • Conficker(2008) : 역사적으로 가장 넓게 퍼진 바이러스 중 하나
  • FakePlayer(2010) : 안드로이드용 SMS 트로이목마
  • Stuxnet(2010) : 국가 기관망인 SCADA 시스템을 목표로 한 공격, 사이버 전쟁의 시작을 알리는 신호
  • Duqu(2011) : 목표에 대한 정보를 수집하는 정교한 트로이목마
  • Flame(2012) : 목표 대상에 대한 사이버 무기로 적극 사용되고 있는 정교한 악성코드

2.1.3 악성코드 분류법
 악성코드를 분류하는 이유는 백신의 입장에서 악성코드마다 치료 방법이 다르기 때문이다. 악성코드를 정확하게 치료하기 위해서는 악성코드의 분류가 상당히 중요하다.

1995년 안철수님은 바이러스를 다음의 기준으로 분류했다.

  • 감염 대상에 의한 분류 : 파일 바이러스, 부트 바이러스, 부트/파일 바이러스
  • 메모리 상주 여부에 의한 분류 : 상주형 바이러스, 비상주형 바이러스
  • 감염 위치에 의한 분류 : 전위형 바이러스, 후위형 바이러스
  • 감염형태에 의한 분류 : 기생형 바이러스, 겹쳐쓰기형 바이러스
위의 기준은 파일이나 부트 섹터를 감염시키는 바이러스를 분류한 것이다.
책에서 다루는 악성코드 분류법은 악성코드 형태에 의한 분류법이다.

바이러스

 바이러스는 정상적인 파일이나 부트 섹터를 감염시켜 악의적인 행동을 하는 악성코드이다. 주로 저장 매체를 통해 감염되는 경우가 많다. 사용자는 정상 파일에 감염되기 때문에 그 존재를 쉽게 알아채지 못한다. 바이러스에 감염된 파일이나 부트 섹터는 대부분 정상 파일이나 정상 부트 섹터로 치료할 수 있다. 단, 바이러스에 의해 원본이 손상된 경우에는 치료가 불가능하다.


 웜은 인터넷 등의 네트워크 자원을 이용하여 확산에 집중하는 악성코드를 일컫는다. 이메일 등 다양한 경로를 통해 확산되는 것이 특징이다. 주로 이메일을 통해 유입되는 경우가 많았으며, 사용자가 이메일의 첨부 파일을 클릭하는 순간 악성코드가 시스템에 설치되고, 그 순간부터 네트워크 자원을 활용하여 다른 시스템으로 확산된다. 웜은 해당 파일 자체가 악성코드이기 때문에 파일을 삭제하는 것이 치료 방법이다.


트로이목마

 트로이목마는 주로 시스템에 잠복했다가 특정 조건이 성립될 때 동작하는 것이 특징인 악성코드이다. 최근에는 악성코드의 종류가 다양해지고 있고, 복합적 형태가 등장하면서 특정 악성코드로 분류하기가 어려워졌다. 그런 이유로 대부분 트로이목마로 분류되고 있다. 트로이목마도 웜과 같이 파일 자체가 악성코드이므로 파일을 삭제하는 것이 치료 방법이다.


백도어

 백도어는 정보의 유출을 목적으로 한다는 측면에서 보면 트로이목마와 유사해 보인다. 하지만, 트로이목마와는 반대로 정보 유출을 직접 수행하지 않는다. 주로 해커들의 유입이 가능하게 몰래 뒷문을 만들어 놓는 것이 백도어의 일이다. 백도어 또한 해당 파일 자체가 악성코드이므로 파일을 삭제하는 것이 치료 방법이다.


스파이웨어

 스파이웨어는 스파이 + 소프트웨어의 합성어로 애드웨어와 비슷해보이지만, 완전히 다른 악성코드이다. 스파이웨어는 정식으로 판매하는 소프트웨어 내부에 광고 등이 삽입되어 있는데, 이들 광고를 클릭하는 경우 해당 사용자의 클릭 정보를 수집하는 형태를 가지기도 한다. 이렇게 수집된 정보는 마케팅의 목적으로 거래가 이루어진다. 사실 스파이웨어를 포함하고 있는 소프트웨어의 경우 프로그램 설치 시에 동의서에 그 내용이 포함되지만, 대체로 제대로 확인을 하지 않고 동의를 하는 경우가 많다. 이렇게 되는 이유는 바로 사용자에게 충분히 알리지 않았기 때문이다. 이와 같은 문제로 실제로 법정 공방도 이뤄졌다. 결과적으로 백신 업체가 이겼다. 백신이 사용자의 컴퓨터 이용환경 개선과 보안을 위해 스파이웨어를 삭제하는 것은 백신 업체의 정당한 업무 활동으로 규정되었다. 스파이웨어 또한 해당 파일 자체가 악성코드이므로 치료방법은 파일을 삭제하는 것이다.


애드웨어

 애드웨어는 광고 노출을 목적으로 하는 악성코드이다. 사용자의 컴퓨터 이용을 방해할 정도로 많은 광고를 노출하는 것이 특징이다. 애드웨어 역시 파일 자체가 악성코드이므로 치료 방법은 파일을 삭제하는 것이다.


2.1.4 악성코드 명명법

 백신 업체들이 자체적으로 악성코드를 명명하지만, 공통적으로 사용하는 명명법이 몇가지 존재한다. 이를 알아보겠다.


악성코드 내부의 문자열을 사용하는 방법

 가장 자연스러운 방법 중 하나로 악성코드 내부의 문자열을 통해 악성코드를 명명하는 방법이다. 간혹, 악성코드 내부 문자열은 존재하나 악성코드 명명에서 사용되지 않는 예도 있다. 악성코드 제작자가 미리 악성코드 내부에 명명해둔 경우나 악성코드 제작자 이름 등은 명명에 사용하지 않는다. 이유는 만약에 이러한 문자열을 사용할 경우 악성코드 제작자가 자신을 과시하기 위해 또 다른 악성코드를 생산할 가능성이 있기 때문이다.


악성코드의 특징을 사용하는 방법

 내부의 문자열을 사용할 수 없는 경우에는 악성코드의 특징을 통해 이름을 짓는다. 이 특징들은 별다른 기준이 없다. 이처럼 악성코드 명명법은 백신 업체마다 다른것이 일반적이다. 프로젝트를 진행하는 동안에는 나만의 악성코드 명명법을 사용할 것이다.




2.2 백신

2.2.1 백신이란?

 백신이란 사용자의 컴퓨터 업무 환경을 저해하는 악성코드를 진단하고, 치료하여 원래의 상태로 되돌리는 일련의 소프트웨어를 말한다.




※ 참고 서적 : 파이썬으로 배우는 Anti-Virus 구조와 원리 (최원혁 지음)

'Project > Anti-Virus (Python)' 카테고리의 다른 글

5. 다양한 악성코드 진단/치료  (0) 2019.03.17
4. 전용백신 개발하기  (0) 2019.03.16
3. 개발환경 구축  (0) 2019.03.15
1. 백신 개발에 필요한 지식  (0) 2019.03.15
개요  (0) 2019.03.15