300x250

lab8_t4_t2.pdf

(사진올리기 귀찮아서 생략했습니다. pdf 다운받으세요)

악성코드 분석 보고서

그림입니다.

원본 그림의 이름: mem000013e40001.png

원본 그림의 크기: 가로 235pixel, 세로 66pixel

학 번

20156161

작 성 자

김진홍

작 성 일

2015514

Keyword

Downloader, Mouse cursor modification, Registry modification

1. 개 요

1.1 요 약

 

해당 악성 코드는 악성 코드를 다운로드 하는 역할을 하는 Dropper.exe, 실제 악성 행위를 유발하는 malware.exe, reverse connection을 요청하는 nc.exe로 구성되어 있다.

 

최초 유포된 Dropper.exe를 실행하게 되면 명령에 따라 지정된 URL에서 실행에 필요한 malware.exenc.exe excutenc.vbs를 다운로드하고 다운로드 받은 파일의 URL 캐시를 제거한뒤 실행한다. malware.exe가 실행되면 레지스트리 값들의 수정을 통해 재부팅시에도 악성행위를 실행하도록 하고, 사용자에게 공격이 일어났다는 것을 보여주기 위해서 마우스 위치를 임의로 조작하며, Internet Explorer를 실행한 뒤 gsis.kaist.ac.kr로 이동한다. 또한 nc.exe 파일을 실행시켜 143.248.102.118:100 번지로 SYN 패킷을 보내게 된다.

 

 

1.2 악성코드 기본 정보

악성코드 명

Dropper.exe

분 류

Downloader

샘플 수집일

2015513

형 태

PE EXE

파일 크기

33.0KB

대상 플랫폼

Win32

대표 증상

malware.exemaIware.exe 추가 파일 다운로드

디렉토리 생성
URLCacheEntry제거

감염, 설치 경로

팀별 분배

MD5

60db683a295d561adebe243659aa2f92

36f28cfa42700d499245b5003822852050ba0cf8

SHA-1

239ba6b794f55c3aa08978c02269b649a05716744df863d742af80d1af9492fe

SHA-256

 

악성코드 명

malware.exe

분 류

Trojan

샘플 수집일

2015513

형 태

PE EXE

파일 크기

73.5KB

대상 플랫폼

Win32

대표적 증상

cipher.exe 실행, 마우스 커서 위치 변경
nc.exeexcutenc.vbs 파일 추가 다운로드
run 레지스트리에 excutenc 등록,
현재 열려있는 윈도우가 IEFrame이 아니면 프로세스 종료후 gsis.kaist.ac.kr 홈페이지 열기.

감염, 설치경로

Dropper.exe를 통한 추가 파일 다운로드

MD5

040a70fc7c40fee389bfa8a75f5218c2

1dbfea66e6306ccd882629cd4eed863359010544

SHA-1

c366861918e41e7bf906bebd8871e335310c0904cf21cc2226b96f357d9bb148

SHA-256

 

악성코드 명

excutenc.vbs

분 류

 

샘플 수집일

2015513

형 태

vbs

파일 크기

1KB

대상 플랫폼

Win32

대표적 증상

nc.exe 실행을 통해 143.248.102.118:100으로 패킷 전송

감염, 설치경로

malware.exe를 통한 추가 파일 다운로드

MD5

9a8ddd83b54a66ab55091ba4102ad572

f7e3fcfb0f49c5cbdd4c6b97b5b05b64f25745ff

SHA-1

cf66b39cab1c1bacc5c80b0af39392b4bec2d8a8689cc649951f7ab3af4c5743

SHA-256

악성코드 명

nc.exe

분 류

Trojan

샘플 수집일

2015513

형 태

PE EXE

파일 크기

58KB

대상 플랫폼

Win32

대표적 증상

상용 프로그램임.(netcat)

감염, 설치경로

malware.exe를 통한 추가 파일 다운로드

MD5

e0fb946c00b140693e3cf5de258c22a1

57f0839433234285cc9df96198a6ca58248a4707

SHA-1

be4211fe5c1a19ff393a2bcfa21dad8d0a687663263a63789552bda446d9421b

SHA-256

2. 설 명

2.1 악성코드 증상 요약

1) 마우스 조작 : 마우스를 화면의 중간에 위치하게 함.(프로그램 실행 -> 마우스 조작)

그림입니다.

원본 그림의 이름: CLP000002d8000e.bmp

원본 그림의 크기: 가로 1650pixel, 세로 1002pixel

[그림 1] 마우스 위치 조작

2) IE 실행 : 인터넷 익스프롤러가 열려 있을 경우 닫고, gsis.kaist.ac.kr로 이동하는 페이지를 반복해서 띄움.(프로그램 실행 -> IE 실행 -> IE가 닫히고 gsis 홈페이지 반복 실행)

그림입니다.

원본 그림의 이름: CLP000002d8000f.bmp

원본 그림의 크기: 가로 1655pixel, 세로 1007pixel

[그림 2] IE 실행

 2.2 악성코드 상세 분석

(1) IDA를 사용한 정적분석

1) Dropper.exe

- malware.exe 다운로드, 실행

그림입니다.

원본 그림의 이름: CLP000002d8000b.bmp

원본 그림의 크기: 가로 375pixel, 세로 89pixel

윈도우 이름에 AlYac 이라고 이름을 붙임.

그림입니다.

원본 그림의 이름: CLP000002d8000c.bmp

원본 그림의 크기: 가로 669pixel, 세로 244pixel

malware.exemaIware.exeC:\\windows\\system32에 다운 받고 있음.

SetFileAttributesA api를 이용하여 숨김파일로 지정함.

MakeSureDirectoryPathExists api를 이용하여 syste m32 디렉토리를 생성

그림입니다.

원본 그림의 이름: CLP000002d8000b.bmp

원본 그림의 크기: 가로 375pixel, 세로 89pixel

윈도우 이름에 AlYac 이라고 이름을 붙임.

그림입니다.

원본 그림의 이름: CLP000002d8000c.bmp

원본 그림의 크기: 가로 669pixel, 세로 244pixel

malware.exemaIware.exeC:\\windows\\system32에 다운 받고 있음.

SetFileAttributesA api를 이용하여 숨김파일로 지정함.

MakeSureDirectoryPathExists api를 이용하여 syste m32 디렉토리를 생성

 

 

[사용된 trick]

syste m32가 아닌 system32에 있는 malware를 실행시키면 위와 같은 창이 뜸.

그림입니다.

원본 그림의 이름: CLP000002d80017.bmp

원본 그림의 크기: 가로 806pixel, 세로 597pixel

[그림 3] system32폴더 내부

그림입니다.

원본 그림의 이름: CLP000002d80016.bmp

원본 그림의 크기: 가로 666pixel, 세로 434pixel

[그림 4] 가짜 malware.exe

악성 코드에서 실행하는 malwaresyste m32에 있는 malware.exe .

그림입니다.

원본 그림의 이름: CLP000002d80018.bmp

원본 그림의 크기: 가로 799pixel, 세로 595pixel

[그림 5] 진짜 malware.exe

 

2) malware.exe

그림입니다.

원본 그림의 이름: CLP000002d80003.bmp

원본 그림의 크기: 가로 461pixel, 세로 256pixel

프로세스모니터라고 이름붙임

그림입니다.

원본 그림의 이름: CLP000002d80004.bmp

원본 그림의 크기: 가로 636pixel, 세로 51pixel cipher.exe 실행 시킴.(프로그램이 실행 될 뿐 악성 행위 없음)

그림입니다.

원본 그림의 이름: CLP000002d80007.bmp

원본 그림의 크기: 가로 382pixel, 세로 81pixel

커서포지션을 화면의 중앙으로 위치시킴

메소드 401220()실행(nc.exe excutenc.vbs 다운과 레지스트리 변조 메소드)

 

그림입니다.

원본 그림의 이름: CLP000002d80012.bmp

원본 그림의 크기: 가로 659pixel, 세로 497pixel

무한 루프를 내부에서 EnumWindows(EnumFunc) 실행
(EnumWindws는 운영체제상의 모든 윈도우 목록을 조사해서 콜백 함수로 넘김.)

 

그림입니다.

원본 그림의 이름: CLP000002d80013.bmp

원본 그림의 크기: 가로 449pixel, 세로 69pixel

마우스 커서의 위치를 계산하면서 커서의 위치를 계속해서 설정. (x좌표 제곱 + y좌표 제곱)을 루트를 씌우고 5로 나눈 값을 xy 좌표에 더하면서 커서를 설정함.

 

[in 401220()]

그림입니다.

원본 그림의 이름: CLP000002d80008.bmp

원본 그림의 크기: 가로 669pixel, 세로 275pixel

nc.exeexcutenc.vbs를 다운받을 URLmemcpy

기록된 문자열을 통해 파일 다운로드

그림입니다.

원본 그림의 이름: CLP000002d80009.bmp

원본 그림의 크기: 가로 755pixel, 세로 345pixel

run 레지스트리를 변조하여 excutenc.vbs를 실행시킴

그림입니다.

원본 그림의 이름: CLP000002d80011.bmp

원본 그림의 크기: 가로 798pixel, 세로 417pixel

해당 레지스트리에 등록된 value

그림입니다.

원본 그림의 이름: CLP000002d80001.bmp

원본 그림의 크기: 가로 758pixel, 세로 190pixel

[그림 6] excutenc.vbs 내용

excutenc.vbs 파일 내용을 실행시킴.

nc.exenetcat 프로그램이며, nettcat(nc.exe)과 관련된 내용은 다음을 참조. (http://noon.tistory.com/346)

그림입니다.

원본 그림의 이름: CLP000002d80015.bmp

원본 그림의 크기: 가로 669pixel, 세로 305pixel

[그림 7] vbs 내용을 실행

.vbs 파일의 내용을 직접 실행 시킴.

그림입니다.

원본 그림의 이름: CLP000002d8059e.bmp

원본 그림의 크기: 가로 660pixel, 세로 383pixel

[그림 8] 실행 후 netstat 결과

netstat으로 확인해 본 결과 143.248.102.118:100state에서 SYN_SENT를 확인.

그림입니다.

원본 그림의 이름: CLP000002d80002.bmp

원본 그림의 크기: 가로 1164pixel, 세로 614pixel

[그림 9] 실행 후 wireshark 캡쳐 결과

Wireshark를 통해 본 네트워크상의 캡쳐된 패킷 내용 Flags:0x02(SYN)

해당 ip:port로 연결을 설정하는 커맨드임을 알 수 있음.(백도어로의 이용 추측)

 

 

[EnumFunc] 메소드

그림입니다.

원본 그림의 이름: CLP000002d80014.bmp

원본 그림의 크기: 가로 549pixel, 세로 540pixel

활성화된 창의 classname을 얻어옴.

이 값이 IEFrame과 같지 않을 경우 종료시킴.

gsis.kaist.ac.kr을 인자로 하여 iexplore.exe를 실행시킴.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2) 올리 디버거를 이용한 동적 분석

그림입니다.

원본 그림의 이름: CLP000002d8003d.bmp

원본 그림의 크기: 가로 1207pixel, 세로 906pixel

[그림 10] 올리디버거 apibreak 설정

먼저 Dropper에서 쓰이는 API들의 목록이다. API목록에 오른쪽 버튼을 눌러 Set breakpoint on every reference를 하여 모든 호출에 break를 건다. 나머지도 같은 방법으로 한다.

F8 : step over(call 내부로 진입하지 않고 수행한다.) F7: step into(call 내부로 진입한다.)

(1) Dropper.exe

그림입니다.

원본 그림의 이름: CLP000002d8001b.bmp

원본 그림의 크기: 가로 1009pixel, 세로 608pixel

[그림 11] Dropper.exe 분석 시작

그림입니다.

원본 그림의 이름: CLP000002d8001c.bmp

원본 그림의 크기: 가로 504pixel, 세로 119pixel

[그림 12] stack 내용

위 그림은 URL주소를 저장하고 URLDownloadToFileA apicall 하기 직전의 코드를 보여주고 있으며 call 직전 stack 영역에 쌓여있는 파라미터들을 보여주고 있다.

 

그림입니다.

원본 그림의 이름: CLP000002d8001d.bmp

원본 그림의 크기: 가로 677pixel, 세로 61pixel

[그림 13] SetFileAttributesA call 부분

그리고 setFileAttributesA를 통해 다운 받은 malware.exe를 숨김파일로 설정해주고 있다.

그림입니다.

원본 그림의 이름: CLP000002d8001e.bmp

원본 그림의 크기: 가로 1009pixel, 세로 609pixel

[그림 14] URLDownloadToFileA 호출 직전

그림입니다.

원본 그림의 이름: CLP000002d8001f.bmp

원본 그림의 크기: 가로 499pixel, 세로 87pixel

[그림 15] stack의 모습

위 그림은 URLDownloadToFileA로 다른 malware.exe를 받는 코드를 보여주고 있다. 그 아래 그림은 call 직전의 stack의 모습이다.

 

그림입니다.

원본 그림의 이름: CLP000002d80020.bmp

원본 그림의 크기: 가로 780pixel, 세로 315pixel

[그림 16] shellExecuteAmalware.exe를 실행

그림입니다.

원본 그림의 이름: CLP000002d80021.bmp

원본 그림의 크기: 가로 507pixel, 세로 145pixel

[그림 17] stack의 모습

 

그림입니다.

원본 그림의 이름: CLP000002d80022.bmp

원본 그림의 크기: 가로 799pixel, 세로 57pixel

[그림 18] DeleteUrlCacheEntryA

shellExecuteA api를 통해 다운받은 malware.exe를 실행하고 있으며, DeleteUrlCacheEntryA api를 통해 캐시를 삭제하고 있다.

(2) malware.exe

 

그림입니다.

원본 그림의 이름: CLP000002d80023.bmp

원본 그림의 크기: 가로 767pixel, 세로 111pixel

[그림 19] ShellExcuteAcipher.exe를 실행

그림입니다.

원본 그림의 이름: CLP000002d80024.bmp

원본 그림의 크기: 가로 586pixel, 세로 203pixel

[그림 20] stack의 모습

cipher.exe를 실행하는 부분이다. 스택에 파라미터들이 쌓여있다.

 

그림입니다.

원본 그림의 이름: CLP000002d80025.bmp

원본 그림의 크기: 가로 596pixel, 세로 85pixel

[그림 21] GetSystemMetrics

api를 이용하여 화면사이즈를 호출하는 부분이다.

그림입니다.

원본 그림의 이름: CLP000002d8002a.bmp

원본 그림의 크기: 가로 796pixel, 세로 234pixel

[그림 22] SetCursorPos 호출

그림입니다.

원본 그림의 이름: CLP000002d80027.bmp

원본 그림의 크기: 가로 594pixel, 세로 153pixel

[그림 23] Stack의 모습

위 그림의 004010F0번지는 마우스의 cursor를 설정하는 부분이다. 스택에는 x좌표 y좌표가 쌓여 있다.

그리고 다음으로 004010F6부분에는 nc를 다운받는 4010220() 메소드를 실행 하게 된다.

그림입니다.

원본 그림의 이름: CLP000002d8002b.bmp

원본 그림의 크기: 가로 950pixel, 세로 540pixel

[그림 24] 4010220() 내부로 진입한 뒤의 모습

4010220() 내부로 들어가보면 위 그림과 같이 url과 위치를 지정하게 된다.

그림입니다.

원본 그림의 이름: CLP000002d8002c.bmp

원본 그림의 크기: 가로 954pixel, 세로 173pixel

[그림 25] URLDownloadToFileA

그림입니다.

원본 그림의 이름: CLP000002d8002d.bmp

원본 그림의 크기: 가로 596pixel, 세로 129pixel

[그림 26] stack의 모습

URLDownloadToFileA를 호출하게 되어 nc.exe를 다운 받는다. 이와 관련된 파라미터들은 스택에 저장되어 있다.

그림입니다.

원본 그림의 이름: CLP000002d8002e.bmp

원본 그림의 크기: 가로 937pixel, 세로 144pixel

[그림 27] URLDownloadToFile

그림입니다.

원본 그림의 이름: CLP000002d8002f.bmp

원본 그림의 크기: 가로 569pixel, 세로 139pixel

[그림 28] stack의 모습

위와 같은 원리로 excutenc.vbs 파일을 받는다.

 

그림입니다.

원본 그림의 이름: CLP000002d80030.bmp

원본 그림의 크기: 가로 950pixel, 세로 176pixel

[그림 29] RegCreateKeyExA

파라미터를 스택에 쌓아놓고 RegCreateKeyExA를 호출하여 run 레지스트리의 키를 생성한다.

그림입니다.

원본 그림의 이름: CLP000002d80031.bmp

원본 그림의 크기: 가로 839pixel, 세로 118pixel

[그림 30] RegSetValueExA

그림입니다.

원본 그림의 이름: CLP000002d80032.bmp

원본 그림의 크기: 가로 395pixel, 세로 87pixel

[그림 31] stack의 모습

run 레지스트리에 exc라는 이름을 가진 값을 쓰게 되는데 이 값은 직접확인해보면 .vbs를 실행시키는 내용을 지니고 있다.

그림입니다.

원본 그림의 이름: CLP000002d80033.bmp

원본 그림의 크기: 가로 865pixel, 세로 104pixel

[그림 32] ShellExcecuteA

그림입니다.

원본 그림의 이름: CLP000002d80034.bmp

원본 그림의 크기: 가로 323pixel, 세로 98pixel

[그림 33] stack의 모습

shellExcuteA api를 호출하여 excutenc.vbs를 실행시키고 있다.

그림입니다.

원본 그림의 이름: CLP000002d80035.bmp

원본 그림의 크기: 가로 813pixel, 세로 200pixel

4010220() 완료되면 다시 리턴 됨.

[그림 34] Return 401220을 빠져나온 그림

그림입니다.

원본 그림의 이름: CLP000002d80028.bmp

원본 그림의 크기: 가로 692pixel, 세로 138pixel

[그림 34] SetCursorPos의 반복

ida 코드를 통해 봤던 계산 루틴을 지나 마우스 커서를 다시 셋팅하고 반복문을 돌기위해 다시 돌아간다.

다음으로 EnumWindows를 호출하는 함수로 들어가게 되면

그림입니다.

원본 그림의 이름: CLP000002d80036.bmp

원본 그림의 크기: 가로 762pixel, 세로 567pixel

[그림 35] EnumWindows 내부로 진입한 그림

활성화되어 있는 윈도우에 대한 핸들을 얻어오는 isWindowVisible, 클래스 이름을 가져오는 GetClassNameA을 실행하게 된다.

그림입니다.

원본 그림의 이름: CLP000002d80037.bmp

원본 그림의 크기: 가로 753pixel, 세로 177pixel

[그림 36] GetClassNameA 호출 직전

그림입니다.

원본 그림의 이름: CLP000002d80038.bmp

원본 그림의 크기: 가로 261pixel, 세로 115pixel

[그림 37] Stack의 모습

현재 수행결과 EAXECX에는 다음의 값이 들어있다.

EAXECX의 값이 다르므로 인터넷창을 반복띄우던 악성행위가 수행되지 않는다. 따라서 테스트를위해 분기 코드를 수정하고 실행한다.

그림입니다.

원본 그림의 이름: CLP000002d80039.bmp

원본 그림의 크기: 가로 583pixel, 세로 324pixel

[그림 38] 코드 수정

하지만 현재 프로세스는 올리디버거 이므로 계속 실행 하게되면 디버거가 종료되게 된다. 따라서 NOPJMP 처리하여 종료되지 않고 진행할 수 있게 한다.

그림입니다.

원본 그림의 이름: CLP000002d8003a.bmp

원본 그림의 크기: 가로 776pixel, 세로 601pixel

[그림 39] IE를 띄우는 코드로 접근하기 위한 코드수정 후 ShellExecuteA호출 직전

그림입니다.

원본 그림의 이름: CLP000002d8003b.bmp

원본 그림의 크기: 가로 497pixel, 세로 96pixel

[그림 40] stack의 모습

마지막으로 ShellExcuteA api를 통해 gsis.kaist.ac.kr을 띄우는 iexplore.exe를 실행하게 된다.

그림입니다.

원본 그림의 이름: CLP000002d8003c.bmp

원본 그림의 크기: 가로 910pixel, 세로 653pixel

[그림 41] ShellExecuteA 호출 후

무한루프로 인해 증상이 반복 실행되지만 재부팅시 nc.exe만 실행될뿐 다른 악성행위는 실행되지 않는다.

반응형

+ Recent posts