미소띠움

파일이 어떻게 바이러스에 감염이 되는가? 본문

Diary/Diary

파일이 어떻게 바이러스에 감염이 되는가?

미소띠움 2009. 3. 24. 17:56


최근, virut바이러스와 같은 파일 감염형 바이러스가 많이 발생되어지고 있으며, 더욱 복잡한 형태인 다형성 바이러스와 같이 분석을 어렵게 하는 기술들도 계속 진화하고 있는 상태이다. 이에 본 칼럼에서는 파일 바이러스가 어떠한 방법을 통해서 감염되어 지며 실행되고, 어떻게 치료를 해야 하는지에 대해 알아본다.

1. Overwriting Viruses(OV)

OV는 원래 파일(호스트 파일)을 파괴하기 위해 덮어쓰는 형태의 바이러스로, 대부분 디스크상의 파일을 바이러스로 덮어씌운다. 매우 기초적이며 간단한 방법이지만, 바이러스의 모든 특성을 지니고 있다. 일단 파일이 실행되면 바이러스는 디스크의 모든 파일들을 지우기 때문에 바이러스만 실행될 뿐 정상적인 프로그램은 실행되지 않아 사용자가 쉽게 바이러스라는 것을 인식할 수 있다.
OV는 시스템에서 치료될 수 없다. 감염된 파일은 디스크에서 지워져야 하며 백업한 곳에서 복원해야 한다.

바이러스 코드를 다음과 같은 확장자를 갖는 파일에 겹쳐 쓴다.

아래의 그림은 겹쳐 쓰기 바이러스에서 파일의 크기가 변하여 사용자에게 인식될 수 있던 단점을 보완한 기술로, 파일 안에 바이러스 코드가 숨어있다. 파일의 사이즈는 그대로이며 파일의 원형을 그대로 보존하기 때문에 겹쳐 쓰기 바이러스보다 발견이 쉽지 않아 위험하다.


2. Random Overwriting Viruses

OV의 다른 방법으로, 드물지만 Overwriting method의 다른 방법에는 호스트파일에서 첫 부분의 프로그램 코드를 변경하지 않는 방법이 있다. 대신, 바이러스는 호스트 프로그램 내에서 무작위로 위치를 찾은 뒤 그곳에 덮어쓴다. 물론 바이러스는 호스트가 실행되는 동안에 컨트롤을 갖지 못할 수도 있다.


3. Appending Viruses

매우 전형적인 DOS COM file 감염 기술은 normal COM이라 불린다. 이 기술에서는 jump 명령어가 호스트의 맨 앞에 삽입되어 원래 호스트의 맨 뒤를 가리키게 된다. 일반적인 예로는 Ralf Burger의 컴퓨터 바이러스 책에 소개된 것에서 약간 변형된 Vienna가 있다. 이 기술의 이름은 파일의 마지막 부분에 삽입된 바이러스 body에서 따온 이름이다. 몇몇의 바이러스들은 EXE 파일을 먼저 COM 파일로 변형한 뒤 감염시킨다. Vacsina 바이러스 군들이 이러한 기술을 이용한다.

주로 바이러스 코드는 파일의 뒤쪽에 붙으며, 파일의 첫 3byte를 JMP 명령어로 수정하여 바이러스 코드로 이동한다. 바이러스 코드의 수행이 끝나면 메모리상에서 JMP로 수정되었던 영역을 원래의 3byte 값으로 수정한 후, 이동하여 프로그램을 실행한다. 정상프로그램이 실행되기 때문에, 파일의 크기 변화를 인식하지 못한다면 바이러스를 의심하기 힘들지만 바이러스 코드 안에 정상코드가 존재하므로 백신으로 치료 가능하다.


4. Prepending Viruses(PV)

평범한 바이러스 감염 기술들은 호스트 파일의 첫 부분에 바이러스 코드를 삽입하는 기술을 이용한다. 이러한 바이러스들은 Prepending Viruses라고 한다. PV는 단순한 종류의 감염이지만, 상당히 좋은 방법이다.
PV는 제일 먼저 바이러스가 실행된 후에 정상 프로그램이 실행되는 유형이다. 바이러스의 크기를 안다면 백신으로 치료가능하다.


5. Classic Parasitic Viruses(CPV)

PV(기생형 바이러스)의 변종으로, 이러한 바이러스들은 호스트 파일의 맨 첫 부분을 바이러스 코드의 길이만큼을 뒤쪽으로 보낸 뒤 파일의 앞부분에 바이러스 코드를 붙여 넣은 유형이다. 바이러스 실행이 끝나면 뒤쪽에서 바이러스 크기만큼 읽어와 프로그램을 실행한다. 바이러스의 크기를 안다면 백신으로 치료 가능하다.  


6. Cavity Viruses

Cavity viruses는 보통 감염시키는 오브젝트의 사이즈가 늘어나지 않는 형태를 갖는다. 대신 그들은 바이러스 코드를 안전하게 저장할 수 있는 파일의 특정 부분을 덮어쓴다. CV는 파일내부의 사용하지 않는 공간(zero)에 바이러스 코드가 존재한다. 파일의 첫 3byte를 JMP 명령어로 수정하여 바이러스 코드로 이동하며, 바이러스 코드의 실행이 종료되면 원래의 3byte를 메모리에서 복원하여 파일을 실행한다. 바이러스 코드에 원래의 3byte코드가 있으므로 백신으로 치료 가능하다.


7. Compressing Viruses(CV)

특수한 바이러스 감염 기술들은 호스트 파일의 내용을 압축하는 방법이 있다. 이러한 기술은 호스트 파일의 사이즈가 감염 이후 증가하는 것을 숨길 수 있다. 이중 많은 것들은 trojan horses, 바이러스, 웜과 같은 것들의 내용을 감추기 위해 공격자들이 사용한다.(런타임 바이너리 패커들, PKLITE, LZEXE, UPX, ASPACK 과 같은 것들은 매우 유명한 프로그램들을 사용하여 디스크 공간을 절약할 수 있다.)
CV는 정상 파일을 압축하여 이미지로 보관하는 유형으로 바이러스코드 실행이 끝나면 압축 이미지를 메모리에 풀어 실행한다. 파일 크기가 변하지 않으며, 압축 해제 알고리즘을 보유해야만 백신으로 치료 할 수 있다.


8. Amoeba Infection Technique

Amoeba는 바이러스 body를 호스트 파일 안에 넣는 기술이다. 바이러스 코드를 두 부분으로 나누어 첫 부분을 파일의 앞부분에 붙이고, 바이러스의 뒷부분을 호스트 파일의 마지막에 붙여 넣는다. 바이러스 코드 헤드의 실행이 끝나면 Tail로 이동하여 실행하고 마지막으로 호스트 파일을 실행한다. 원본 호스트 파일은 디스크에서 실행될 수 있도록 새로운 파일로서 재구성된다.


 

 (주)하우리 연구소 엔진개발팀 연구원 한정화

'Diary > Diary' 카테고리의 다른 글

알면 사랑한다  (0) 2009.03.27
효과적인 공부법  (0) 2009.03.26
스마트폰이 위험하다  (0) 2009.03.23
이 이메일 열어봐도 괜찮을까?  (0) 2009.03.22
몰입과 헌신하기  (0) 2009.03.21
Comments