1. 분석 환경
1.1. 분석 환경
l Windows 10 l Windows XP (VMware) |
1.2. 분석 도구
정적 분석 | l Virustotal l PEID l Dependency Walker l BinText |
동적 분석 | l Process Explorer l SysAnalyzer |
1.3. 분석 샘플
Practical Malware Analysis Labs - Lab03-03.exe |
1.4. 질문
“Lab03-03.exe" 파일에서 발견된 멀웨어를 안전한 환경에서 기본 동적 분석 도구를 사용하여 실행하십시오.
- 이 멀웨어를 Process Explorer로 모니터링할 때 어떤 점을 주목하나요?
- 실시간 메모리 변조를 식별할 수 있나요?
- 멀웨어의 호스트 기반 지표는 무엇인가요?
- 이 프로그램의 목적은 무엇인가요?
2. 분석 과정
2.1. http://www.VirusTotal.com/에 업로드하여 결과를 확인한다.
Virustotal에 lab03-02.exe를 업로드한 결과로 71개 엔진에서 61개 엔진이 악성코드라 진단했다.
2.2. <PEID>로 패킹여부를 확인한다.
Lab03-02.exe는 패킹 되어 있지 않다.
2.3. Dependency Walker
이전과 다른 생소한 import들이 많이 보였는데 많은 수가 문자열에 관한 것이었다. |
FreeEnvironmentStringA, FreeEnvironmentStringW : 환경변수 문자열을 해제 한다.
GetACP : 현재 시스템의 ANSI코드 페이지를 가져온다.
GetOEMCP : 현재 시스템의 OEMC코드 페이지를 가져온다.
GetCommandLineA : 현재 프로세스의 명령줄 인수를 가져온다.
2.4. BinText로 문자열을 확인한다.
\svchost.exe로 보아 svchost프로세스를 생성할 것 같다. R0000 숫자와 문구들은 런타임 에러에 대한 알림문이며 메모리 할당에 관련 되어있다. UNICODE는 문자 인코딩 표준이다.
2.5. 이 멀웨어를 Process Explorer로 모니터링할 때 어떤 점을 주목하나요?
Lab03-03.exe 실행 시 svchost.exe를 자식프로세스로 생성하고 몇 초 이내에 종료된다.
Svchost.exe는 고아프로세스가 되는데, Lab03-03을 숨겨 악성코드 탐지를 어렵게 만든다고 생각된다.
Lab03-03.exe가 실행된 직후
몇 초 뒤 Lab03-03.exe는 종료되고 svchost.exe만 남는다.
2.6. 실시간 메모리 변조를 식별할 수 있나요?
Image와 memory를 비교해본다.
Image는 실행파일의 정적표현이며, memory는 실행중인 프로세스의 동적상태를 나타낸다.
이미지의 내용이 메모리에 적재되어 프로세스가 실행 된다.
그러므로 image와 memory를 비교하면 실행 중 메모리의 변조된(바뀐) 부분을 알 수 있다.
memory항목으로 보면 practicalmalwareanalysis.log 와 그 밑으로 키 이름들이 나와 있는 것을 알 수 있다. 추측하자면 무언가 기록하는 파일과 그 기록내용은 키 입력 값이 될 것이며 기록되는 형태는 [SHIFT], [TAB]… 과 같을 것이다.
2.7. 멀웨어의 호스트 기반 지표는 무엇인가요?
memory에서 보았던 log 파일이 생성되었을 것이다. SysAnalyzer로 파일의 위치를 찾아본다.
Practicalmalwareanalysis.log는 악성코드가 실행된 후 키를 한번이라도 입력해야 생성된다.
실행만 해서는 아무것도 생성되지 않고, 로그가 잡히지 않았다.
test라는 문자열을 입력하자, 즉시 log파일이 생성됨을 확인했다.
디렉토리를 보니 Lab03-03.exe가 위치하는 곳에 Practicalmalwareanalysis.log가 Created되고, 방금 입력한 키를 기록하는 것이 보인다.
2.8. 이 프로그램의 목적은 무엇인가요?
이 프로그램은 사용자의 키 입력을 기록하는 키로거로 보인다.
Lab03-03.exe는 실행되어 svchost 프로세스를 생성하고 자신은 종료된다.
Svchost는 악성코드 감염자가 키를 입력하면 키를 기록하는 Practicalmalwareanalysis.log를 생성하고 사용자가 입력하는 키를 기록한다.