(사진올리기 귀찮아서 생략했습니다. pdf 다운받으세요)
악성코드 분석 보고서 |
| |||||
학 번 | 20156161 | 작 성 자 | 김진홍 | 작 성 일 | 2015년 5월 14일 | |
Keyword | Downloader, Mouse cursor modification, Registry modification |
1. 개 요
1.1 요 약
해당 악성 코드는 악성 코드를 다운로드 하는 역할을 하는 Dropper.exe, 실제 악성 행위를 유발하는 malware.exe, reverse connection을 요청하는 nc.exe로 구성되어 있다.
최초 유포된 Dropper.exe를 실행하게 되면 명령에 따라 지정된 URL에서 실행에 필요한 malware.exe와 nc.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 |
샘플 수집일 | 2015년 5월 13일 | 형 태 | PE EXE |
파일 크기 | 33.0KB | 대상 플랫폼 | Win32 |
대표 증상 | ➀ malware.exe와 maIware.exe 추가 파일 다운로드 ➁ 디렉토리 생성 | ||
감염, 설치 경로 | 팀별 분배 | ||
MD5 | 60db683a295d561adebe243659aa2f92 | ||
36f28cfa42700d499245b5003822852050ba0cf8 | |||
SHA-1 | |||
239ba6b794f55c3aa08978c02269b649a05716744df863d742af80d1af9492fe | |||
SHA-256 |
악성코드 명 | malware.exe | 분 류 | Trojan |
샘플 수집일 | 2015년 5월 13일 | 형 태 | PE EXE |
파일 크기 | 73.5KB | 대상 플랫폼 | Win32 |
대표적 증상 | ➀ cipher.exe 실행, 마우스 커서 위치 변경 | ||
감염, 설치경로 | Dropper.exe를 통한 추가 파일 다운로드 | ||
MD5 | 040a70fc7c40fee389bfa8a75f5218c2 | ||
1dbfea66e6306ccd882629cd4eed863359010544 | |||
SHA-1 | |||
c366861918e41e7bf906bebd8871e335310c0904cf21cc2226b96f357d9bb148 | |||
SHA-256 |
악성코드 명 | excutenc.vbs | 분 류 |
|
샘플 수집일 | 2015년 5월 13일 | 형 태 | vbs |
파일 크기 | 1KB | 대상 플랫폼 | Win32 |
대표적 증상 | nc.exe 실행을 통해 143.248.102.118:100으로 패킷 전송 | ||
감염, 설치경로 | malware.exe를 통한 추가 파일 다운로드 | ||
MD5 | 9a8ddd83b54a66ab55091ba4102ad572 | ||
f7e3fcfb0f49c5cbdd4c6b97b5b05b64f25745ff | |||
SHA-1 | |||
cf66b39cab1c1bacc5c80b0af39392b4bec2d8a8689cc649951f7ab3af4c5743 | |||
SHA-256 |
악성코드 명 | nc.exe | 분 류 | Trojan |
샘플 수집일 | 2015년 5월 13일 | 형 태 | PE EXE |
파일 크기 | 58KB | 대상 플랫폼 | Win32 |
대표적 증상 | 상용 프로그램임.(netcat) | ||
감염, 설치경로 | malware.exe를 통한 추가 파일 다운로드 | ||
MD5 | e0fb946c00b140693e3cf5de258c22a1 | ||
57f0839433234285cc9df96198a6ca58248a4707 | |||
SHA-1 | |||
be4211fe5c1a19ff393a2bcfa21dad8d0a687663263a63789552bda446d9421b | |||
SHA-256 |
2. 설 명
2.1 악성코드 증상 요약
1) 마우스 조작 : 마우스를 화면의 중간에 위치하게 함.(프로그램 실행 -> 마우스 조작)
[그림 1] 마우스 위치 조작
2) IE 실행 : 인터넷 익스프롤러가 열려 있을 경우 닫고, gsis.kaist.ac.kr로 이동하는 페이지를 반복해서 띄움.(프로그램 실행 -> IE 실행 -> IE가 닫히고 gsis 홈페이지 반복 실행)
[그림 2] IE 실행
(1) IDA를 사용한 정적분석
1) Dropper.exe - malware.exe 다운로드, 실행
|
[사용된 trick]
|
2) malware.exe
|
[EnumFunc] 메소드
➀ 활성화된 창의 classname을 얻어옴. ➁ 이 값이 IEFrame과 같지 않을 경우 종료시킴. ➂ gsis.kaist.ac.kr을 인자로 하여 iexplore.exe를 실행시킴. |
(2) 올리 디버거를 이용한 동적 분석
[그림 10] 올리디버거 api에 break 설정 먼저 Dropper에서 쓰이는 API들의 목록이다. API목록에 오른쪽 버튼을 눌러 Set breakpoint on every reference를 하여 모든 호출에 break를 건다. 나머지도 같은 방법으로 한다. F8 : step over(call 내부로 진입하지 않고 수행한다.) F7: step into(call 내부로 진입한다.) |
(1) Dropper.exe
[그림 11] Dropper.exe 분석 시작
[그림 12] stack 내용
위 그림은 URL주소를 저장하고 URLDownloadToFileA api를 call 하기 직전의 코드를 보여주고 있으며 call 직전 stack 영역에 쌓여있는 파라미터들을 보여주고 있다.
[그림 13] SetFileAttributesA call 부분
그리고 setFileAttributesA를 통해 다운 받은 malware.exe를 숨김파일로 설정해주고 있다.
[그림 14] URLDownloadToFileA 호출 직전
[그림 15] stack의 모습
위 그림은 URLDownloadToFileA로 다른 malware.exe를 받는 코드를 보여주고 있다. 그 아래 그림은 call 직전의 stack의 모습이다.
[그림 16] shellExecuteA로 malware.exe를 실행
[그림 17] stack의 모습
[그림 18] DeleteUrlCacheEntryA
shellExecuteA api를 통해 다운받은 malware.exe를 실행하고 있으며, DeleteUrlCacheEntryA api를 통해 캐시를 삭제하고 있다.
(2) malware.exe
[그림 19] ShellExcuteA로 cipher.exe를 실행
[그림 20] stack의 모습
cipher.exe를 실행하는 부분이다. 스택에 파라미터들이 쌓여있다.
[그림 21] GetSystemMetrics
api를 이용하여 화면사이즈를 호출하는 부분이다.
[그림 22] SetCursorPos 호출
[그림 23] Stack의 모습
위 그림의 004010F0번지는 마우스의 cursor를 설정하는 부분이다. 스택에는 x좌표 y좌표가 쌓여 있다.
그리고 다음으로 004010F6부분에는 nc를 다운받는 4010220() 메소드를 실행 하게 된다.
[그림 24] 4010220() 내부로 진입한 뒤의 모습
4010220() 내부로 들어가보면 위 그림과 같이 url과 위치를 지정하게 된다.
[그림 25] URLDownloadToFileA
[그림 26] stack의 모습
URLDownloadToFileA를 호출하게 되어 nc.exe를 다운 받는다. 이와 관련된 파라미터들은 스택에 저장되어 있다.
[그림 27] URLDownloadToFile
[그림 28] stack의 모습
위와 같은 원리로 excutenc.vbs 파일을 받는다.
[그림 29] RegCreateKeyExA
파라미터를 스택에 쌓아놓고 RegCreateKeyExA를 호출하여 run 레지스트리의 키를 생성한다.
[그림 30] RegSetValueExA
[그림 31] stack의 모습
run 레지스트리에 exc라는 이름을 가진 값을 쓰게 되는데 이 값은 직접확인해보면 .vbs를 실행시키는 내용을 지니고 있다.
[그림 32] ShellExcecuteA
[그림 33] stack의 모습
shellExcuteA api를 호출하여 excutenc.vbs를 실행시키고 있다.
4010220()이 완료되면 다시 리턴 됨.
[그림 34] Return 후 401220을 빠져나온 그림
[그림 34] SetCursorPos의 반복
ida 코드를 통해 봤던 계산 루틴을 지나 마우스 커서를 다시 셋팅하고 반복문을 돌기위해 다시 돌아간다.
다음으로 EnumWindows를 호출하는 함수로 들어가게 되면
[그림 35] EnumWindows 내부로 진입한 그림
활성화되어 있는 윈도우에 대한 핸들을 얻어오는 isWindowVisible, 클래스 이름을 가져오는 GetClassNameA을 실행하게 된다.
[그림 36] GetClassNameA 호출 직전
[그림 37] Stack의 모습
현재 수행결과 EAX와 ECX에는 다음의 값이 들어있다.
EAX와 ECX의 값이 다르므로 인터넷창을 반복띄우던 악성행위가 수행되지 않는다. 따라서 테스트를위해 분기 코드를 수정하고 실행한다.
[그림 38] 코드 수정
하지만 현재 프로세스는 올리디버거 이므로 계속 실행 하게되면 디버거가 종료되게 된다. 따라서 NOP나 JMP 처리하여 종료되지 않고 진행할 수 있게 한다.
[그림 39] IE를 띄우는 코드로 접근하기 위한 코드수정 후 ShellExecuteA호출 직전
[그림 40] stack의 모습
마지막으로 ShellExcuteA api를 통해 gsis.kaist.ac.kr을 띄우는 iexplore.exe를 실행하게 된다.
[그림 41] ShellExecuteA 호출 후
무한루프로 인해 증상이 반복 실행되지만 재부팅시 nc.exe만 실행될뿐 다른 악성행위는 실행되지 않는다.
'정보보안 > 사이버공격방어' 카테고리의 다른 글
Lab #1 Collecting Information[Hacking with google] (0) | 2015.05.16 |
---|