1. 분석 환경
1.1. 분석 환경
l Windows 10 l Windows XP (vmware) |
1.2. 분석 도구
정적 분석 | l Virustotal l PEID l Dependency Walker l BinText l IDA |
동적 분석 | l System Explorer l Process Explorer l Process Monitor l Wireshark l apateDNS l netcat |
1.3. 분석 샘플
Practical Malware Analysis Labs - Lab03-02.dll |
1.4. 질문
Lab03-01.exe 파일에서 발견된 맬웨어를 기본 동적 분석 도구를 사용하여 분석하세요.
- 어떻게 이 악성 코드를 자체로 설치할 수 있을까요?
- 설치 후에 이 악성 코드를 실행시키는 방법은 무엇일까요?
- 이 악성 코드가 실행 중인 프로세스를 찾는 방법은 무엇일까요?
- Procmon을 사용하여 정보를 수집하기 위해 어떤 필터를 설정할 수 있을까요?
- 이 악성 코드의 호스트 기반 지표는 무엇일까요?
- 이 악성 코드에 대한 유용한 네트워크 기반 시그니처가 있을까요?
Lab03-02.dll의 특이점은 실행파일 없이 dll만 존재한다는 것이다. 이점에 유의하여 실습을 진행한다. |
2. 분석 과정
2.1. http://www.VirusTotal.com/에 업로드하여 결과를 확인한다.
Virustotal에 lab03-02.exe를 업로드한 결과로 71개 엔진에서 61개 엔진이 악성코드라 진단했다.
특별한 문구는 보이지 않았다.
2.2. [PEID]로 패킹여부를 확인한다.
Lab03-02.dll은 패킹되어 있지 않다.
2.3. Dependency Walker로 import와 export를 확인한다.
CreateServiceA로 서비스가 생성되고, RegCreateKeyA, RegSetValueEXA로 레지스트리 값이 추가될 것 이다. 또 특이한 점은 Export 테이블에 install, uninstall이있는데, 무언가를 설치하거나 설치제거를 할 것이라고 추측된다. |
2.4. BinText로 문자열을 확인한다.
Practicalmalwareanalysis.com 으로 인터넷 연결이 있을 것이라 추측된다. 서비스를 생성하고, 레지스트리 키 값을 생성한다 Svchost.exe -k netsvcs 명령어를 실행 할 것 이라고 추측된다. IPRIP이라는 문자열이 있는데, 어떤 역할을 할 지는 좀더 봐야할 것 같다. |
2.5. 어떻게 이 악성 코드를 자체로 설치할 수 있을까요?
Rundll32.exe은 Dll내에 있는 함수를 실행하는데 사용되는 유틸리티이다.
이를 이용해서0 Lab03-02.dll을 실행시킬 수 있다.
rundll32.exe [실행파일],[함수] ( 따옴표 사이에는 띄어쓰기 없어야 한다.) |
여기서 넘겨줄 함수가 무엇인지 찾아야한다.
Dependency Walker로 확인했던 export 테이블의 install, installA가 의심스러워 IDA로 확인해 보았다.
installA의 경우 install을 call하고 종료되는 모습이다.
Install은 createServiceA나 svhost.exe등 BinText에서 보았던 문자열이 있었다.
이 함수가 악성코드로서 실질적인 기능을 수행하는 것으로 추측된다.
그러므로 Install을 call하는 installA를 함수로 넣어 rundll32로 실행해 본다.
동시에 SystemExplorer, processMonitor, ProcessExplorer, wireShark도 같이 준비한다.
2.6. 설치 후에 이 악성 코드를 실행시키는 방법은 무엇일까요?
설치가 완료되면 각각 분석도구들을 살펴본다.
SystemExplorer에서 설치 전, 설치 후 snapshot을 비교해 보았다.
레지스트리에 변경점이 있었다. IPRIP 서비스가 생성되었으며, Intranet Netwrok Awareness 로 표기된다.
ImagePath는 서비스의 실행경로를 나타내는데, 즉 system~\svchost.exe가 IPRIP를 실행하고 관리한다는 뜻이다.
ServiceDll는 서비스 실행에 필요한 dll 파일정보 값이 담겨 있다. 여기서는 Lab03-02.dll이며
이는 IPRIP 서비스가 실행될 때 로드되어 사용된다는 의미이다.
(정확히는 IPRIP을 관리하는 svchost가 로드한다.)
즉 Lab03-02.dll은 자기 자신을 실행하는 서비스를 생성한 것이다.
Services.msc로 서비스 목록을 확인하니 Displayname인 INA로 등록된 것이 보인다.
현재상태는 중지 되어있는데, 레지스트리 변경사항은 재부팅 되면 적용되므로 재부팅 하면 서비스가 시작될 것이다.
또는 서비스 시작 명령어인 net start를 사용한다
여기서는 Displayname이 아닌 서비스 원래 이름(IPRIP)을 사용한다.
이제 서비스가 잘 실행되었다.
2.7. 이 악성 코드가 실행 중인 프로세스를 찾는 방법은 무엇일까요?
Process Explorer을 보면 여러 svchost가 동시에 실행되고 있음을 알 수 있다.
레지스트리 편집기에서 보았듯이 우리가 찾아야하는 svchost는 Lab03-02.dll을 로드 해 사용하므로 이를 검색하면 된다.
PID는 1112이다.
.
2.8. Procmon을 사용하여 정보를 수집하기 위해 어떤 필터를 설정할 수 있을까요?
processExplorer에서 확인했던 PID(process ID)를 필터로 설정한다.
2.9. 이 악성 코드의 호스트 기반 지표는 무엇일까요?
레지스트리에 IPRIP서비스와 그 값들이 추가되었다.
2.10. 이 악성 코드에 대한 유용한 네트워크 기반 시그니처가 있을까요?
Wiresshark로 패킷을 캡쳐 해 본다.
Practicalmawareanalysis.com 로 DNS 질의를 하고 응답을 받는다. 그 다음 http get 요청을 하나 404 not found응답을 받고 연결이 종료된다.
같은 내용을 apateDNS와 netcat으로도 볼 수 있다.
주의할 점은 서비스가 시작된 후 첫 패킷이 잡히기까지 시간이 조금 걸리는데, 그 이유는 sleep 때문이다
문자열에서 보았던 windows XP 6.11, HTTP/1.1을 확인 할 수 있다.
3. 결론
Lab03-02.dll은 레지스트리를 수정해 자기자신을 로드 하는 IPRIP서비스를 생성하고, 이는 svchost로 실행된다. 그리고 Practicalmawareanalysis.com로 http get 요청을 보낸다.