Practical Malware Analysis 1-4
실습 1-4
실습 환경 : Vmware (Windows 7 32 bit)
사용한 툴 : IDA free 5.0, PEiD, PE View, String
[01] http://www.VirusTotal.com/에 Lab01-04.exe 파일을 업로드하자. 기존 안티바이러스에 정의된 것과 일치하는가?
파일을 업로드한 결과 64개 중 51개의 안티바이러스 엔진에서 악성코드로 인식하였다.
[02] 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가? 파일이 패킹되어 있으면 가능하다면 언패킹 해보자.
PEiD를 사용하여 파일을 열어보니 패킹은 되어있지 않았음을 확인할 수 있다.
[03] 이 프로그램은 언제 컴파일됐는가?
PE View를 사용하여 파일을 연 뒤에 IMAGE_NT_HEADERS -> IMAGE_FILE_HEADER의 Time Date Stamp를 살펴보면 컴파일된 시간을 알 수 있다. 2019/08/30 22:26:59에 컴파일되었다.
[04] 임포트를 보고 악성코드의 기능을 알아낼 수 있는가? 그렇다면 어떤 임포트를 보고 알 수 있었는가?
IDA free를 사용해 파일을 열어 임포트 함수를 살펴보니 ADVAPI32.dll의 임포트 함수인 OpenProcessToken, LookupPrivilegeValueA, AdjustTokenPrivileges를 확일할 수 있는데 이 함수들이 뭐하는 함수들인지 궁금하여
구글링을 해보니 OpenProcessToken은 프로세스와 관련된 토큰 핸들 값을 획득하고 획득한 토큰으로 권한을 변경하는 함수이고 LookupPrivilegeValueA는 지정된 시스템에서 명시된 권한을 표현할 LUID(특정권한을 표현하는 구조체)를 검색하는 함수이고 AdjustTokenPrivileges는 권한을 조정하는 함수이다. 이를 통해 프로그램의 권한을 가지고 무엇인가를 했구나를 생각할 수 있었다. 다음으로는 KERNEL32.dll의 임포트 함수인 FindResource, LoadResource, SizeofResource함수를 보며 파일이 리소스 섹션에서 데이터를 로드하고 WinExec함수와 CreateFile, WriteFile함수를 보면서 리소스 섹션에서 로드한 데이터를 WriteFile을 사용하여 파일에 쓰고 그 파일을 WinExec함수로 열 것이라고 생각해 볼 수 있었다.
[05] 감염된 시스템에서 악성코드를 인식하는데 어떤 호스트 기반이나 네트워크 기반의 증거를 사용했는가?
String을 이용해 문자열을 살펴보면 \system32\wupdmgr.exe가 보이는데 위에 보이는 GetWindowsDirectory함수와 관련되어 C:\Windows\system32\wupdmgr.exe에 파일이 생성되거나 관련됨을 생각해 볼 수 있다. 그리고 http://www.practicalmalwareanalysis.com/updater.exe도 확인할 수 있는데 아래에서 확인한 리소스 섹션 안에 들어있는 다운로더 파일이 다운로드할 악성코드가 저장되어 있는 주소이다.
[06] 이 파일은 리소스 섹션에 하나의 리소스가 있다. Resource Hacker를 이용해 리소스를 점검하고 리소스를 추출해보자. 리소스로부터 무엇을 알 수 있는가?
리소스 해커를 사용하여 파일을 열어보니 파일의 리소스 섹션에 또 다른 실행 파일이 있는 것을 확인할 수 있었다.
(MZ로 시작하는 PE 파일 구조와 동일하다.) 이 리소스를 BIN으로 저장한 후에 IDA free로 열어서 확인해 보니 아래와 같은 임포트 함수를 가지고 있었다.
분석을 해보니 GetTempPath함수를 사용하여 임시 폴더 경로를 가져오고 snprintf를 사용하여 \winup.exe를 버퍼에 출력한 뒤 WinExec함수를 이용해 실행한다. 그 후 GetWindowsDirectory함수를 사용하여 windows디렉터리 경로를 가져오고 snprintf를 사용하여 \system32\wupdmgrd.exe를 버퍼에 출력한 뒤 URLDownloadToFile함수를 사용하여 위에서 확인한 주소에서 악성코드를 다운로드하는 것을 확인할 수 있었다. 즉 C:/windows/system32/wupdmged.exe구간에 악성코드를 설치하는 다운로더이다.
이번 장을 공부하면서 다양한 API함수들의 개념들에 대하여 배울 수 있었다.