1. 분석 환경
1.1. 분석 환경
l Windows 10 l Windows XP (vmware) |
1.2. 분석 도구
정적 분석 | l Virustotal l PEID l Dependency Walker l BinText l IDA l OllyDbg |
동적 분석 | l Process Explorer l Process Monitor l Wireshark l apateDNS l netcat |
1.3. 분석 샘플
Practical Malware Analysis Labs - Lab03-01.exe |
1.4. 질문
Lab03-01.exe 파일에서 발견된 맬웨어를 기본 동적 분석 도구를 사용하여 분석하세요.
- 이 악성코드의 임포트(import)와 문자열(strings)은 무엇인가요?
- 악성코드의 호스트 기반 지표는 무엇인가요?
- 이 파일을 악성코드로 진단하는데 유용한 네트워크 기반 시그니처가 있나요? 있다면 어떤 것들인가요?
2. 분석 과정
2.1. http://www.VirusTotal.com/에 업로드하여 결과를 확인한다.
Virustotal에 lab03-01.exe를 업로드한 결과로 72개 엔진에서 67개 엔진이 악성코드라 진단했다.
Backdoor poison 등의 공통된 문구가 보인다.
2.2. [PEID]로 패킹여부를 확인한다.
Lab03-01.exe는 패킹되어 있으며,이번 실습에서는 언패킹 하지 않고 진행한다.
2.3. Dependency Walker로 import를 확인한다.
패킹되어 있어 일부밖에 보이지 않는다.
ExitProcess : 호출 프로세스와 모든 스레드를 종료한다.
2.4. IDA,OllDbg
보이는코드가 패킹되어 있기 때문에 매우짧다. 단지 Sub_400400을 호출하고 ExitProcess로 종료되고 끝난다. 악성코드의 주요 기능은 sub_400400에서 실행될 것이라고 추측한다.
Sub_400400으로 step into 해 보았지만 의미 없는 코드가 계속 반복되었다.
2.5. BinText로 문자열을 확인한다.
l ws2_32 : 네트워크에 사용되는 동적라이브러리의 이름이다.
l advapi32 : 레지스트리와 windows 서비스, 사용자 계정을 관리한다.
l StubPath : 코드 난독화를 위한 정크 코드와 관련이 있을 것이라고 추측한다.
l SOFTWARE\Classes\http\shell\open\command : Windows 운영 체제에서 HTTP 프로토콜을 통해 열리는 웹 페이지나 리소스에 대한 기본 응용 프로그램의 실행 경로를 지정하는 데 사용된다. 예를 들어 악성코드를 실행해 웹페이지를 열 때, 기본 응용프로그램으로 IE가 설정되어있다면 IE로 접속한다는 의미이다.
l Software\Microsoft\Active Setup\Installed Components\ : 로그온하는 새 사용자에 대한 초기 구성을 설정하는 데 사용된다.
l SOFTWARE\Microsoft\Windows\CurrentVersion\Run : 시작 프로그램을 설정하는 데 사용된다. 즉 윈도우 사용자 로그인을 할 때마다 프로그램이 실행되도록 한다.
l SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders : 사용자의 특수 폴더 경로를 관리하는 데 사용된다.
l www.practicalmalwareanalysis.com : 이url과 네트워크 연결이 있을 것으로 추정된다.
l Admin, AppData, VideoDriver, WinVMX32, Vmx32to64.exe
위 문자열들은 상세분석에서 다시 본다.
2.6. Process Explorer
Lab03-01.exe는 실행시키면 악성 행위를 한 뒤 종료되는 것이 아니라 계속 실행 중인 상태로 남아있다는 특징이 있다.
BIntext에서 보았던 WinVMX32, type Mutant이 눈에 띈다.
뮤텍스(mutant) 는 자원의 동시접근을 제어하고 실행 중인 여러 인스턴스의 충돌을 막기 위해 사용되는데, 악성코드에서 사용될 경우 중복실행을 방지하여 탐지가 어렵도록 만든다.
2.7. Process Monitor
Procmon을 사용하면 모든 로그가 기록되므로 Lab03-01.exe의 실행내용만 볼 수 있도록 필터를 만든다.
Lab03-01.exe를 ReadFile하여 그 내용으로 vmx32to64를 생성한다.
그래서 Lab03-01.exe과 vmx32to64는 이름만 다른 같은 내용의 파일이며, 파일의 size와 해시값이 서로 같은 것을 확인할 수 있었다.
다시 돌아와서, 프로세스는 VideoDriver 이라는 값을 CurrentVersion\Run디렉토리에 추가한다.
Jump to로 확인해 본다.
이름은 VideoDriver이나 실제
데이터는 wmx32to64.exe를 실행하도록 되어있다.
그리고 TCP 연결을 계속해서 하는 것 이 보인다.
이는 procmon으로 자세한 내용을 알 수 없어 다른 분석도구로 확인해 본다.
2.8. WireShark
www.practicalmalwareanalysis.com 에 dns요청을 보내고 응답을 받는다.
Tcp 세션을 맺기 위해 443(https)포트로 [syn]패킷을 보내나 서버가 열려있지 않아 [rst,ack]로 연결을 닫는다.
이 행위를 지속적으로 반복하는 것이 보인다.
2.9. apateDNS,netcat
DNS Reply를 루프백 IP인 127.0.0.1로 대체하여 감염된 host가 보내는 패킷을 내 쪽에서 볼 수 있도록 한다.
netcat으로 443포트 리스닝을 하면, 랜덤한 데이터를 감염된 host가 전송하는 것을 볼 수 있다.
2.10. 재시작 후 프로그램 실행 확인
SOFTWARE\Microsoft\Windows\CurrentVersion\Run의 값 대로 windows를 재부팅하면 vmx32to64.exe가 실행되는지 확인한다.
이제 Lab03-01.exe 대신 vmx32to64.exe가 www.practicalmalwareanalysis.com 로 접속을 시도한다.
3. 질문에 대한 답
3.1. 이 악성코드의 임포트(import)와 문자열(strings)은 무엇인가요?
Import : ExitProcess (코드가 패킹되어 의도적으로 import가 숨겨짐)
Strings
SOFTWARE\Microsoft\Windows\CurrentVersion\Run VideoDriver Vmx32to64.exe WinVMX32 ws2_32 www.practicalmalwareanalysis.com |
SOFTWARE\Microsoft\Windows\CurrentVersion\Run에 VideoDriver라는 key 값을 추가하고 Vmx32to64.exe가 시스템이 시작될 때 실행되도록 내용을 설정한다.
Vmx32to64.exe가 실행되면 WinVMX32 뮤텍스를 사용하고 ws2_32 동적라이브러리를 이용하여 www.practicalmalwareanalysis.com 와 네트워크 연결이 이루어진다.
3.2. 악성코드의 호스트 기반 지표는 무엇인가요?
\windows\system32\vmx32to64.exe를 생성 했다.
SOFTWARE\Microsoft\Windows\CurrentVersion\Run 에 VideoDriver key를 추가 했다.
3.3. 이 파일을 악성코드로 진단하는데 유용한 네트워크 기반 시그니처가 있나요? 있다면 어떤 것들인가요?
netcat으로 443포트를 리스닝 한 결과 www.practicalmalwareanalysis.com 로 전송되는 패킷을 볼 수 있었다.
4. 정리
Lab03-01.exe는 자신을 복제하여 \windows\system32\vmx32to64.exe 를 생성한다. 이 실행파일은 WinVMX32 라는 뮤텍스를 생성하며 악성코드가 중복으로 실행되는 것을 방지한다.
그 후 www.practicalmalwareanalysis.com 에 dns 질의를 하고 tcp 연결을 맺어 랜덤한 데이터를 443(HTTPS)포트로 전송한다. 이 맬웨어는 악성코드 감염자 host에서 공격자 서버로 데이터를 전송하는 백도어로 추측된다.