# 실전 악성코드와 멀웨어 분석에서 제공하는 실습 파일을 이용한 악성코드 분석 연습.
해당 실습 파일들은 http://practicalmalwareanalysis.com/labs/ 에서 제공되고 있습니다.
# 실습 1-1
Lab01-01.exe / Lab01-01.dll 파일 분석
# 질문 (1)
- Http://www.VirusTotal.com/에 파일을 업로드한 후 보고서를 보자. 기존 안티바이러스 시그니처에 일치하는 파일이 존재하는가?
[ 그림 1 ] Lab01-01.exe VirusTotal 분석
- 해당 파일이 최초로 2012-02-16 에 이미 분석됬다는 것을 확인할 수 있었다.
[ 그림 2 ] Lab01-01.exe VirusTotal 분석 결과
- 기존 안티바이러스 시그니처 존재하는 파일이였으며, 각 안티바이러스들의 진단 결과를 확인할 수 있었다.
- 대부분 안티바이러스들이 트로이목마 악성코드로 진단을 하였다.
- 트로이목마 악성코드는 정상 프로그램으로 가장하고, 악의적인 행위를 실행하는 프로그램 또는 코드
(트로이목마 악성코드에 대한 자세한 내용은 http://blog.alyac.co.kr/48 참고. 쉽게 잘 설명되어 있음)
[ 그림 3 ] Lab01-01.dll VirusTotal 분석
- Lab01-01.dll 파일 역시 이미 분석되어 있었으며, 최초로 2011-07-04 에 분석이 되었다.
[ 그림 4 ] Lab01-01.dll VirusTotal 분석 결과
- 역시 이미 여러 안티바이러스들에 일치하는 시그니처가 있다는 것을 확인할 수 있고, 이 dll 파일 또한 Trojan 악성코드 유형으로 많이 진단되어 있는 것을
확인할 수 있었다.
# 질문 (2)
- 이 파일은 언제 컴파일됐는가?
[ 그림 5 ] Lab01-01.exe 컴파일 시간 정보
- 3가지 도구를 이용하여 확인한 결과이다.
- 첫번째로는 PEView를 이용하여 확인한 결과이며, 두번째는 peframe 이라는 Python의 악성코드분석 모듈을 이용한 것이고, 세번째는 VirusTotal의
File Detail 정보이다.
- 세가지 모두 [ 2010/12/19 16:16:19 ] 같은 값인 것을 확인할 수 있다. 이러한 결과는 당연한 결과이다. PE Format의 IMAGE_NT_HEADERS
구조체의 IMAGE_FILE_HEADER 구조체의 TimeDateStamp 라는 멤버변수의 값을 읽어와서 컴파일 시간을 확인하기 때문이다.
[ 그림 6 ] Lab01-01.dll 컴파일 시간 정보
- 마찬가지로 PEView, peframe, VirusTotal을 이용하여 Lab01-01.dll 컴파일 시간 정보를 확인한 결과이다.
# 질문 (3)
- 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가?
[ 그림 7 ] Lab01-01.dll 파일 패킹 여부 체크 결과
- Armadilo 라는 패커로 패킹되어 있다는 정보를 확인할 수 있었는데, 현재 Armadilo 패커 배포하는 곳에서 서비스를 중지한 것 같네요.
- Armadilo 패커는 프로텍션 기능등이 포함되어 있다고 하는데요. 패커를 다운받아서 언팩하려했으나, 안되더군요.
그래서 책에 실습문제 풀이를 참고했는데, "어떤 파일도 패킹됐거나 난독화된 징후는 없다" 라네요.
PEID에서 패킹여부를 체크하는 방법이 특정 패커에 의해 패킹된 파일에서 공통적으로 발견되는 시그니처를 이용해서
패킹여부를 체크하는데요. 아마도 패킹은 되지 않았지만, 해당 시그니처와 같은 바이너리값이 발견되어서 저렇게 진단된게
아닌가 싶습니다.
[ 그림 8 ] Lab01-01.exe 파일 패킹 여부 체크 결과
- Lab01-01.exe 파일 역시 VirusTotal에서는 Armadillo 패커로 패킹되었다고 나오네요. 다른 툴에서는 발견되지 않았다.
→ 결론적으로 패킹 또는 난독화가 되지 않은 것으로 판단
# 질문 (4)
- 임포트를 보고 악성코드 행위를 알아낼 수 있는가? 그렇다면 어떤 임포트인가?
[ 그림 9 ] Lab01-01.exe Import 함수
- CreateFileMappingA 함수 : 파일을 메모리로 로드하는 파일 매핑 핸들을 생성하고 메모리 주소를 통해 접근 가능하게 한다.
실행기, 로더, 인젝터등이 이 함수를 이용하여 PE 파일을 읽고 수정할 수 있다.
- FindFirstFileA, FindNextFileA, CopyFileA , CreateFileA 함수 등을 보면, 어떠한 파일을 찾고 복제하는 행위를 할 가능성이
있다고 예상된다.
[ 그림 10 ] Lab01-01.dll Import 함수
- 우선 가장 의심이 가는 것은 WS2_32.dll 을 import 한다는 사실이다. WS2_32.dll은 Windows Socket 통신을 하기 위해서
사용하는 Dll 파일이다. socket 함수로 소켓을 생성하고, 데이터를 주고 받고, 그리고 연결된 소켓을 종료하는 함수등으로
소켓 통신을 이용하여 감염된 pc의 정보를 송수신한다던가 그런 행위들을 할 수 있을 것이라고 예상된다.
- Kernel32.dll 에서 import 되는 함수로는 CreateProcessA 함수가 의심이된다. 새로운 프로세스를 생성하여 소켓을 생성하고
주기적으로 소켓을 이용한 통신을 할 수 있을 것으로 예상된다.
# 질문 (5)
- 감염된 시스템에서 검색할 수 있는 다른 파일이나 호스트 기반의 증거가 존재하는가?
[ 그림 11 ] Lab01-01.exe 에서 발견된 문자열
- C:\Windows\system32\kernel32.dll 그리고 kerne132.dll 이라는 문자열을 찾을 수 있었는데, l 대신 1로 대체한 문자열이다.
그냥 문자열만 보고 어떠한 행위를 할지는 모르겠지만, 확인해봐야할 부분으로 생각된다.
# 질문 (6)
- 감염된 장비에서 이 악성코드를 발견하기 위해 사용한 네트워크 기반의 증거는 무엇인가?
[ 그림 12 ] Lab01-01.dll 에서 발견된 문자열
- Lab01-01.dll 에서 발견된 문자열 중 "127.26.152.13" 으로 IP 주소로 생각되는 문자열이 발견되었다.
앞에서 WS2_32.dll 을 import 하는 것으로 보면, 소켓 통신을 할 때 사용할 IP 주소로 판단된다.
# 질문 (7)
- 이 파일의 목적은 무엇이라고 판단했는가?
→ 앞에서 분석한 내용으로만으로, '해당 파일이 어떤 행위를 할 것이다' 라고 확실하게 답할수는 없지만
전체적인 분석 내용을 본다면, Lab01-01.exe 파일이 실행되면, 시스템상에서 kernel32.dll 이라는 파일을 찾아서
kerne132.dll 으로 파일명을 변경한다던지, 기존의 kernel32.dll을 복제하는데 파일명을 kerne132.dll로 만든다던지,
시스템 파일에 변경사항이 생길것으로 판단되며, Lab01-01.exe 파일에서 Lab01-01.dll 파일이 로딩되면서,
프로세스를 생성하고, 그 생성된 프로세스는 "127.26.152.13" 이라는 IP 주소 정보를 가지고, 소켓통신을 할 것으로
판단된다.
# 참고
- 실전 악성코드와 멀웨어 분석
- http://boanin.tistory.com/6
'0x00 > 0x02 Malware' 카테고리의 다른 글
- 실전 악성코드와 멀웨어 분석 Chap.1 [실습 1-3] (0) | 2015.03.09 |
---|---|
- 실전 악성코드와 멀웨어 분석 Chap.1 [실습 1-2] (0) | 2015.02.10 |
- 악성코드 (MaxRootkit_2011_1.exe) 분석 - 미완. (0) | 2015.01.26 |
- 악성코드 분석 환경 구축 (VMware) (0) | 2015.01.23 |
- 악성코드의 유형 (0) | 2014.10.28 |