2016. 11. 7. 03:29 :: 리버싱

Chapter 06 악성코드

Section 01 악성코드

- 제작자가 의도적으로 사용자에게 피해를 주고자 만든 모든 악의적 목적을 가진 프로그램 및 매크로, 스크립트 등 컴퓨터 상에서 작동하는 모든 실행 가능한 형태

 

1. 악성코드의 분류

가. 악성코드의 분류

이름(코드) 

설명 

바이러스 

- 사용자 컴퓨터(네트워크로 공유된 컴퓨터 포함) 내에서 사용자 몰래 프로그램이나 실행 가능한 부분을 변형해 자신 또는 자신의 변형을 복사하는 프로그램

- 가장 큰 특성은 복제와 감염

- 네트워크의 컴퓨터로 스스로 전파되지는 않음 

웜 

- 인터넷 또는 네트워크를 통해서 컴퓨터에서 전파되는 악성 프로그램

- 윈도우의 취약점 또는 응용 프로그램의 취약점을 이용하거나 이메일이나 공유 폴더를 통해 전파, 최든에는 공유 프로그램(P2P)을 이용하여 전파되기도 한다.

- 바이러스와 달리 스스로 전파되는 특성 

트로이 목마 

- 바이러스나 웜처럼 컴퓨터에 직접적인 피해를 주지는 않지만, 악의적인 공격자가 컴퓨터에 침투하여 사용자의 컴퓨터를 조종할 수 있는 프로그램

- 고의적으로 만들어졌다는 점에서 프로그래머의 실수인 버그와는 다름

- 자시 자신을 다른 파일에 복사하지 않는다는 점에서 바이러스와 구별 

인터넷 악성코드 

- 인가되지 않은 성인 사이트나 크랙 사이트 등에 접속할 때 감염

- 예전에는 인터넷 악성코드로 끝나는 경우가 많았으나 최근에는 웜의 형태로 전이되고 있다. 

스파이웨어 

- 자신이 설치된 시스템의 정보를 원격지의 특정한 서버에 주기적으로 보내는 프로그램

- 사용자가 주로 방문하는 사이트, 검새어 등 취향을 파악하기 위한 것도 있지만 패스워드 등과 같은 특정 정보를 원격지에 보내는 스파이웨어도 존재 


나. 악성 프로그램으로 인해 발생할 수 있는 증상

대분류 

소분류 

설명 

시스템 관련

시스템 설정 정보 변경 

변경 레지스트리 키 값을 변경하여 시스템의 정보를 변경

FAT 파괴 

시스템의 파일 시스템을 파괴 

CMOS 변경 

CMOS 내용을 변경하여 부팅 때 에러를 발생시킴 

CMOS 정보 파괴 

CMOS의 일부를 파괴 

기본 메모리 감소 

시스템의 기본 메모리를 줄인다. 

시스템 속도 저하 

시스템의 속도를 저하시킨다. 

프로그램 자동 실행 

레지스트리 값을 변경해 시스템을 부팅할 때 특정 프로그램을 자동으로 실행 

프로세스 종료 

특정 프로세스를 강제로 종료 

시스템 재부팅 

시스템을 재부팅 

네트워크 관련 

메일 발송 

특정 사용자에게 메일을 발송

정보 유출 

사용자의 정보를 네트워크를 통해서 공격자로 전송 

네트워크 속도 저하 

감염된 컴퓨터가 속한 네트워크가 느려짐 

메시지 전송 

메시지를 네트워크를 통해 다른 컴퓨터로 전송 

특정 포트 오픈 

특정 백도어 포트를 연다 

하드 디스크 관련 

하드 디스크 포맷 

하드 디스크를 포맷 

부트 섹터 파괴 

하드 디스크의 특정 ㅂ분을 파괴 

파일 관련 

파일 생성 

특정 파일(주로 백도어 파일)을 생성 

파일 삭제 

특정 파일이나 디렉터리를 삭제 

파일 감염 

바이러스가 특정 파일을 감염 

파일 손상 

바이러스가 특정 파일에 겹쳐 쓰기 형태로 감염되면 파일이 손상된다. 

특이 증상 

이상 화면 출력 

출력 화면에 특정 내용이 나타남 

특정음 

발생 컴퓨터에서 특정음이 발생 

메시지 상자 출력 

화면에 특정 메시지 상자가 나타남 

증상 없음 

특이한 증상 없음 



Section 02 바이러스

1. 1세대 : 원시형 바이러스

가. 부트 바이러스

- 플로피 디스크나 하디 디스크의 부트 섹터에 감염되는 바이러스로 MBR과 함께 PC 메모리에 저장

- 부팅할 때 자동으로 동작하여 부팅 후에 사용되는 모든 프로그램을 감염시킨다.

- 컴퓨터의 부팅 순서

■ 1단계 : POST

- POST(Power On Self Test)는 운영체제와 관련 있는 부분은 아님. 설치할때 하드웨어 자체가 시스템에 문제가 없는지 기본 사항을 스스로 체크하는 과정이다.

- BIOS(Basin Input/Outpur System)에 의해 실행

■ 2단게 : CMOS

- CMOS(Complementary Metal-Oxicle Semiconductor)에서는 기본 장치에 대한 설정과 부팅 순서를 설정할 수 있으며 BIOS는 CMOS에서 이런 기본 설정 사항을 읽어 시스템에 적용한다.

■ 3단계 : 운영체제 위치 정보 로드

- 윈도우 2003 이전 : 마스터 부트 레코드(MBr : Master Boot Record) 정보를 읽음. CMOS 정보를 읽어 부팅 매체를 확인할 뒤에는 부팅 매체의 MBR 정보를 읽는다.

- MBR은 운영체제가 어디에, 어떻게 위치해 있는지를 식별하여 컴퓨터의 주 기억장치에 적재될 수 있도록 하기 위한 정보

- 하드디스크나 디스켓의 첫 번째 섹터에 저장되어 있다.

- 메모리에 적재될 운영체제가 저장된 파티션의 부트 섹터 레코드를 읽을 수 있는 프로그램(부트 섹터 레코드는 운영체제의 나머지 부분을 메모리에 적재시키는 프로그램을 담고 있다.)


- 윈도우 2008 이후 : 윈도우 부트 서브 시스템(Window Boot Manager)이 실행됨.

- MBR에서 NTLDR이 실행되지 않고, 윈도우 부트 서브시스템이 실행된다. 윈도우 부트 서브 시스템은 bootmgr.exe가 실행되고 부트 설정 데이터(BCD, Boot Configuration Data)를 읽어 실행 가능한 운영체제의 목록을 보여주는데, 이것은 NTLDR이 boot.ini을 읽어 실행 가능한 운영체제의 목록을 보여주는 것과 같다.

- 부트 바이러스는 바로 이 3단계에서 동작.

- 과거 부트 바이러스에 감염된 플로피 디스크로 운영체제를 구동시키면 바이러스가 MBR과 함께 PC메모리에 저장되고 부팅 후에 사용되는 모든 프로그램에 자신을 감염시킨다.

- 부트 바이러스의 종류로는 브레인, 몽키, 미켈란젤로 바이러스가 있다.


나. 파일 바이러스

- 파일을 직접 감염시키는 바이러스.

- 바이러스에 감염된 실행 파일이 실행될 때 바이러스 코드를 실행한다.

- 프로그램을 덮어쓰는 경우, 프로그램 앞부분에 실행 코드를 붙이는 경우, 프로그램의 뒷부분에 코드를 붙이는 경우가 있다.

- 파일 바이러스에는 예루살렘 바이러스, 썬데이(Sunday), 스콜피온(Scorpion), 크로우(Crow), FCL, CIH 바이러스가 있다.


2. 2세대 : 암호형 바이러스

- 바이러스 코드를 쉽게 파악하고 제거할 수 없도록 암호화한 바이러스

- 암호형 바이러스의 종류로는 슬로우(Slow), 캐스케이드(Cascade), 원더러(Wanderer), 버글러(burglar) 바이러스가 있다.


3. 3세대 : 은폐형 바이러스

- 바이러스에 감염된 파일들이 일정한 잠복 기간을 가지게 한 바이러스

- 은폐형 바이러스에는 브레인(Brain), 조시(Joshi), 512, 4096 바이러스가 있다.


4. 4세대 : 다형성 바이러스

- 코드 조합을 다양하게 할 수 있는 조합(Mutation) 프로그램을 암호형 바이러스에 덧붙여 감염된다. 실행될 때마다 바이러스 코드 자체를 변경시켜 식별자를 통해 구분하기 어렵게 한다.


5. 5세대 : 매크로 바이러스

- 응용 프로그램 및 사무용 관련 프로그램이 개발되면서 스크립트 형태의 실행 환경을 이용하여 전파되는 바이러스이다. 주로 MS 오피스 프로그램의 매크로 기능을 이용하여 감염된다.



Section 03 웜

- 인터넷 또는 네트워크를 통해서 컴퓨터에서 컴퓨터로 전파되는 프로그램이다.

- 다른 컴퓨터의 취약점을 이용하여 스스로 전파되거나 메일로 전파된다.


1. MASS Mailer 형 웜

- 자기 자신을 포함하는 대량 메일 발송을 통해 확산되는 웜이다.

- 제목이 없거나 특정 제목으로 전송되는 메일을 읽었을 때 감염되며, 시스템 내부에서 메일 주소를 수집하여 메일을 계속 발송한다.

- 주요 증상

◆ 감염된 시스템이 많으면 SMTP(TCP 25)의 네트워크 트래픽이 증가

◆ 베이글은 웜 파일을 실행할 때 'Can't find a viewer associated with the file' 같은 가짜 오류 메시지를 출력

◆ 넷스카이는 윈도우 디렉터리 밑에 CSRSS.exe을 만든다.

- 베이글(Bagle), 넷스카이(Netsky), 두마루(Dumaru), 소빅(Sobig) 등이 있다.

- MASS Mailer 형 웜은 내부 교육을 통해 예방가능


2. 시스템 공격형 웜

- 운영체제 고유의 취약점을 통해 내부 정보를 파괴 혹은 컴퓨터를 사용할 수 없는 상태로 만들거나 외부 공격자가 시스템 내부에 접속할 수 있도록 백도어를 설치한다.

- 주요 증상

◆ 과다한 TCP 135, 445 트래픽이 증가

◆ windows, windows/system32, winnt, winnt/system32 폴더에 SVCHOST.EXE 등의 파일을 설치

◆ 공격 성공 후 UDP 5599 등의 특정 포트를 열어 외부 시스템과 통신한다.

- 아고봇(Agobot), 블래스터(Blaster worm), 웰치아(Welchia) 등이 있다.


3. 네트워크 공격형 웜

- 특정 네트워크나 시스템에 대해 서비스 거부(DoS) 공격을 수행한다.

- 주요 증상

◆ 네트워크가 마비되거나, 급속도로 느려진다.

◆ 네트워크 장비가 비정상적으로 동작한다.

- 져봇(Zerbot), 클레즈(Klea) 등이 있다.



Section 04 기타 악성코드

1. 백도어와 트로이 목마

- 정상적인 인증 과정을 거치지 않고 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 관리 목적의 통로이다.


2. 인터넷 악성코드

- 인가되지 않은 성인 사이트나 크랙 사이트 등에 접속할 때 감염된다.

- 예전에는 인터넷 악성코드로 끝나는 경우가 많았으나 최근에는 웜의 형태로 전이되고 있다.

- 주요 증상

◆ 인터넷 익스플로러의 시작 페이지가 계속 다른 곳으로 변경

◆ 인터넷 속도가 느려지거나 끊긴다.

◆ 시스템의 비정상적인 작동으로 운영체제가 사용 불능의 상태가 된다.


3. 스파이웨이

- 자신이 설치된 시스템의 정보를 원격지의 특정한 서버에 주기적으로 보내는 프로그램이다.

- 사용자가 주로 방문하는 사이트, 검색어 등 취향을 파악하기 위한 것도 있지만 패스워드 등과 같은 특정 정보를 원격지에 보내는 스파이웨어도 존재



Section 05 악성코드 탐지 및 대응책

- 악성코드 탐지에 사용되는 툴은 다음과 같다.

■ 윈도우 7 악성코드 : Win-Trojan.Pearmor

■ Process Explorer

■ Total Commander(http://www.ghisler.com)

■ CPorts(http://www.nirsoft.net/utils/cports.html)


1. 네트워크 상태 점검하기

- 상당수의 백도어는 외부(해커, 악성코드 작성자)와의 통신을 위해 서비스 포트를 생성한다.

- 주요 백도어의 사용 포트

포트번호 

트로이 목마 

포트번호 

트로이 목마 

21

 TrojanFore

1080 

WinHole 

23 

Tiny Telnet Server[TTS]

1090 

Xtreme 

25 

NaebiHappy

1150 

Orion 

31 

Agent, ParadiseMasters

1234 

Ultors Trojan 

41 

DeepThroat Foreplay 

1243 

Backdoor G 

80 

WWW Tunnel 

1245 

VooDoo Doll 

119 

Happy 99 

1257 

Frenzy 2000 

133 

Farnaz 

1272 

The Matrix 

137 

ChodeMSint(UDP) 

1441 

Remote Storm 

514 

RPCBackdoor 

1524 

Trin00 

555 

Seven Eleven 

1999 

Sub Seven 

666 

ServeU 

2140 

Deep Throat 1.3 

667 

SniperNet 

2255 

Nirvana

777 

AIM Spy

2583 

WinCrash

808 

WinHole

2773 

Sub Seven Gold 2.1 

999 

Deep Throat 

3459 

Eclipse 2000 

1001 

Silencer 

5400 

Blade Runner 

1016 

Doly Trojan 

5880 

Y3K Rat 

1024 

NetSpy 

8787 

BackOrifice  

- 시스템에서는 netstat 와 같은 명령으로 열려 있는 포트를 확인할 수 있다.


2. 정상적인 프로세스와 비교하기

- 대부분의 백도어는 티가 나지 않기 때문에, 윈도우와 유닉스 시스템 등의 정상적인 프로세스를 외워두면 비정상적인 프로세스를 식별하는데 많은 도움이 된다.

- 현재 동작 중인 정상적인 프로세스를 아는 것도 매우 중요. 윈도우의 작업 관리자에서 확인 가능하다.

- 다음의 20여 개의 프로세스는 윈도우 시스템이 동작힉 위한 기본 프로세스로 알아두면 유용하다.

● Csrss.EXE(Client/Server Runtime SubSystem : Win 32)

 - 윈도우 콘솔을 관장하고, 스레드를 생성/삭제하며 32비트 가장 MS-DOS 모드를 지원한다.

● Explorer.exe

 - 작업표시줄, 바탕화면과 같은 사용자 셸을 지원한다.

● Lsass.exe(Local Security Authentication Server)

 - Winlogon 서비스에 필요한 인증 프로세스를 담당한다.

● Mstask.exe(Window Task Scheduler)

 - 시스템에 대한 백업이나 업데이트 등에 관련된 작업의 스케줄러이다.

● Smss.exe(Session Manager SubSystem)

 - 사용자 세션을 시작하는 기능을 담당한다.

 - Winlogon, Win32(Csrss.exe)을 구동시키고, 시스템 변수를 설정한다.

 - 또한 Smss는 Wonlogon이나 Csrss가 끝나기를 기다려 정상적인 Winlogon, Csrss 종료시 시스템을 종료시킨다.

● Spoolsv.exe(Printer Spooler Service)

 - 프린터와 팩스의 스풀링 기능을 담당한다.

● Svchost.exe(Service Host Process)

 - DLL(Dynamic Link Libraries)에 의해 실행되는 프로세스의 기본 프로세스이다.

 - 한 시스템에서 여러 개의 svchost 프로세스를 볼 수 있다.

- 이 중에 웜/바이러스가 주로 사용하는 서비스명은 Csrss와 Svchost이다.

● Services.exe(Service Control Manager)

 - 시스템 서비스를 시작/정지시키고, 그들간의 상호 작용하는 기능을 수행한다.

● System

 - 대부분의 커널 모드 스레드의 시작점이 되는 프로세스이다.

● System Idle Process

 - 각 CPU마다 하나씩 실행되는 스레드로서 CPU의 잔여 프로세스 처리량을 %로 나타낸 값이다.

● Taskmgr.exe(Task Manager)

 - 작업관리자 자신

● Winlogon.exe(Windows Logon Process)

 - 사용자 로그인/로그오프를 담당하는 프로세스이다.

 - 윈도우의 시작/종료 시에 활성화되며 Ctrl+Alt+Delete 키를 눌렀을 경우에도 활성화된다.

● Winmgmt.exe(Window Management Service)

 - 장치에 대한 관리 및 계정 관리, 네트워크 등의 동작에 관련한 스크립트를 위한 프로세스이다.

● msdtc.exe(Distriduted Transaction Coordinator)

 - 웹 서버 및 SQL 서버 구동 시에 다른 서버와의 연동을 위한 프로세스이다.

● ctfmon.exe(Alternative User Input Services)

 - 키보드, 음성, 손으로 적은 글 등 여러가지 텍스트 입력에 대한 처리를 할 수 있도록 지원하는 프로세스이다.

● dfssvc.exe(Distributed File System (DFS))

 - 분산 파일 시스템에 대한 지원을 위해 백그라운드로 실행되고 있는 프로세스이다.


3. 백도어의 실질적인 파일 확인하기

- 네트워크 상태와 프로세스 분석을 통해 확인한 백도의 실질적인 파일을 확인한다.

- 악성코드 파일을 확인할 때는 total commander 같은 툴을 사용한다.

- 윈도우 탐색기가 악성코드에 이미 공격을 받았을 때는 특정한 파일이 숨겨져서 보이지 않거나 삭제되지 않는 경우도 있다.

- 파일 확인 과정에서 반드시 확인하고 가야할 폴더인 C:\Windows\system32 가 있다. 이 폴더에는 주요 DLL과 운영체제의 기본적인 실행 파일이 존재하는데, 대부분의 악성코드는 이 폴더를 공략한다.

- 폴더 내에서 가장 최근에 생성된 파일 중에 이상한 것이 없는지 확인하는 방법을 우선 이용한다.


4. 시작 프로그램과 레지스트리 확인하기

- 시작 프로그램 목록은 'msconfig' 명령을 통해 쉽게 확인할 수 있다.


5. 백도어 제거하기

- 확인한 백도어를 삭제하는 절차는 다음과 같이 할 수 있다.

① 백도어 프로세스의 중지

② 백도어 파일의 삭제

③ 레지스트리 삭제

 - regedit 으로 레지스트리 경로를 확인할 수 있다.





출처 : 정보 보안 개론(한 권으로 배우는 보안 이론의 모든 것) / 양대일 저 / 한빛아카데미 출판

':: 리버싱' 카테고리의 다른 글

UPack PE 헤더 분석 + 디버깅  (1) 2016.12.31
Red_Seek :: 스택 프레임  (0) 2014.01.29
[Red_Seek] abex' crackme #1 (크랙미 #1)  (0) 2014.01.23
[Red_Seek] 스택  (0) 2014.01.22
[Red_Seek] IA-32 Register  (0) 2014.01.14
posted by Red_Seek