악성코드 샘플 분석2
샘플파일
이번에 분석해 볼 파일은 dgrep.exe
기초 분석
Virustotal
-Virustotal에서 스캔을 해보았다.
-72개의 엔징 중 68개의 엔진이 해당 파일을 악성 파일로 추정된다.
-각 엔진들을 봐보면 Backdoor, Trojan, Win32. worm, Malicious 등 진단명이 보인다.
-Threat categories를 보면 trojan이 보인다.
-해당 파일은 win32에서 구동될 것으로 보인다.
-디테일탭을 들어오면 더 자세히 알 수 있다.
-먼저 해시값을 확인할 수 있다
-packer에 대한 정보도 알 수 있는데 SVK-Protector v1.11과 UPX라는 패킹 툴을 이용하여 패킹이 되었음을 추정 가능하다.
-그리고 파일이 언제 만들어졌는지 또한 확인 가능하다.
-relations탭에서는 분석하려는 파일과 관련된 ip와 url 정보를 확인할 수 있다.
-해당 파일은 107.163.241.198 라는 IP 및 api.wisemansupport.com 이라는 URL과 연관이 있을 것으로 의심이 된다
정적 분석
패킹되어 있는 파일을 언패킹 하여 내부를 들여다 볼거다.
-우선 분석이 들어가기 앞서 윈도우의 실시간 보호를 꺼줘야 한다.
-설정이 되어 있다면 악성코드를 압축 해제 시 자동적으로 삭제가 되거나 실행이 안된다.
Exeinfo PE
-dgrep.exe를 검사해 본 결과 EP section은 .mmmym으로 일반적이지 않은 이름으로 난독화 또는 수동으로 조작이 되었다.
-UPX라는 패킹 툴로 압축되었을 확률이 높다.
PE explorer
-패킹을 언패킹 하기 위해 PE explorer를 사용해 줬다.
-(보통은 언패킹을 수동으로 하는 경우와 패킹 툴을 사용하는 경우로 나눠지는데 수동은 아직 내 수준으로는 힘들기에 툴을 사용했다.)
-(Exeinfo pe에서는 RL!Depacker v 1.15 를 사용하라고 권장하지만 구글링을 해도 나오지 않고 gunpacker나 De4dot를 사용한 글들을 보기도 했지만 이 또한 구글링을 해도 나오지 않는 사고가...쩔 수 없이 PE explorer는 30일 무료 버전이 있길래 사용해 줬다.)
-언패킹을 한 파일을 dgrep123.exe로 만들어 다시 검사를 돌려줬다.
-C++로 만든 프로그램이라는 걸 알 수 있다
-not packed가 나온 걸 보면 언패킹이 되었단 걸 알 수 있다.
+추가로 언패킹하고 난 후 언패킹한 파일이 패킹한 파일보다 데이터 크기가 컸다.
Bintext
-문자열이 보이는 걸 보니 언패킹이 되었단 걸 다시 한번 확인 가능했다.
-문자열 중에 cmd.exe를 이용하여 ping 127.0.01-n2명령어를 사용하는 것 같은 문자열이 보인다.
-그리고 wiseman.exe를 설치하여 실행하기 위한 문자열로 보이는 문자열도 보인다.
-C:\Windows\System32\rundll32.exe 해당 경로의 파일을 실행하기 위한 문자열로 의심되는 문자열을 확인했다.
-RedTom21@HotMail.com 이라는 메일주소를 확인하였는데 악성 파일과 관련되어 보인다.
-저번 주에서도 말했지만 악성코드에 자주 사용된다는 dll파일도 문자열에서 보이는 걸 확인했다.
-라이브러리 중 WS_32.dll의 경우 네트워크 행위를 할 때 사용되는 라이브러리이기에 해당 파일은 네트워크 행위를 할 가능성이 높다.
PEview
-4D 5A (MZ) 시그니처를 확인했기에 이 파일은 exe파일임을 알 수 있다.
-IMAGE_FILE_HEADER 탭의 Time Date Stamp 를 활용해 파일 생성 날짜가 2015.10.09 라는 것도 알 수 있다.
-세션 헤더 탭을 들어가 해당 파일의 패킹 여부를 확인할 수 있었다.
-해당 세션 이름은 .text로 일반적인 세션 이름으로 패킹이 되었단 걸 알 수 있다.
-해당 파일은 언패킹을 진행한 파일이지만 Virtual Size 와 Size of Raw Data 의 값의 차이를 보인다.
-그러나 데이터 차이가 수백이상이 아닌 27정도만 차이가 나고 bintext에서도 확인했듯이 문자열 확인이 가능하기에 완전하지는 못해도 분석하는 데에 무리 없이 언패킹이 되었다는 걸 알 수 있다.
-bintext에서 봤던 dll 라이브러리들이 보인다.
동적분석
이제부터는 실제 패킹되어 있는 파일을 실행을 해본다.
Process Explorer
-drep.exe를 실행한 후 모습을 캡처를 해보았다.
-drep.exe 실행 후 cmd.exe, conhost.exe, PING.EXE가 프로세스 목록에 생성되는 걸 볼 수 있었다.
-또한 cmd.exe에서 gzoyo.exe(실행할 때 마다 이름이 다른 파일)을 생성하고 rundll32.exe을 실행한다.
-이후 rundll32.exe와 taskkill.exe가 실행이 되었다가 gzoyo.exe파일과 taskkill.exe 는 사라지고 rundll32.exe만 계속해서 실행 상태인 것을 알 수 있다.
Process Monitor
tree로 본 악성코드 프로세스 순서
1. dgrep.exe
악성코드 실행
2.cmd.exe
추가적인 명령어 실행
3.conhost.exe. ping.exe, rddbo.exe 병렬실행
-conhost.exe: 악성 프로세스 숨기는데 사용
-ping.exe네트워크 연결 테스트 및 원격 서버와 통신 시도
-rddbo.exe: 실행 때마다 이름이 바뀌며 악성 프로세스 실행하거나 제어
4.rddbo.exe -> rundll32.exe실행
rundll32.exe를 호출하여 악성 DLL 파일을 실행하거나 시스템에 백도어를 설정하려 시도
5.rundll32.exe -> taskkill.exe 실행
프로세스를 종료하려고 시도
6.taskkill.exe -> conhost.exe 실행
악성코드가 계속해서 제어를 유지하려는 시도로, 자신을 재활성화하려는 목적
taskkill.exe로 모든 파일들이 종료되었지만 rundll32.exe만 계속 실행중인 이유는 자기보호 메커니즘을 가지고 있어서
taskkill.exe -> conhost.exe 실행은 악성코드가 계속해서 지속적인 제어를 유지하려는 의도로 추정된다.
-dgrep.exe 프로세스 이름만 필터를 거쳐 분석을 진행해보았다.
-explorer에서 확인했듯이 이름 모를 파일이 생성되는 걸 볼 수 있었다.(실행마다 이름이 바뀐다. ex :rddbo.exe )
-cmd.exe프로세스가 ping명령어 사용을 위해 ping.exe파일을 실행하는 모습을 확인이 가능하다.
-악성 경유지와 통신하기 위해 사전에 네트워크 체크하는 과정으로 추정이 된다.
*근데 정적분석에서 발견한 wiseman.exe는 왜 실행이 안되는걸까?
-악성코드는 시간에 따라서 특성이 변한다.
-네트워크 행위를 하다가 하지 않을 수도 있다.
-그렇기에 현재 네트워크 행위를 하지않아 해당 파일을 다운받아오지 못한 걸로 보면 될 거 같다.
Autorns
-dgrep.exe 파일 실행 전과 후 레지스트리 변화를 확인할 수 있다.
-EvtMgr파일이 부팅 후 자동으로 실행되는 프로그램에 등록된 것을 확인할 수 있다.
-파일에 등록된 레지스트리 주소는 윈도우를 재시작했을 때 자동으로 시작되게끔 하는 영역이다.
-대부분의 악성 코드들이 등록하는 영역(재부팅 시 악성코드가 다시 실행되도록 하기 위함이다.)
Currports
-네트워크 상태를 확인하기 위해 새로운 툴을 사용해 보았다.
-기초분석에 확인했던 IP주소와 연관되어 있는 IP주소 확인을 했다.(rundell32.exe파일의 remote address에 바이러스 토탈에서 확인했던 107.163.241.198가 있다. )
-상태 창을 보면 전송됨 이라는 상태 즉 SYN_SENT 상태가 보이지만 해당 상태에서 변함이 없는 것을 보았을 때 최종 세션 성립에는 실패하는 것으로 보여진다.
WireShark
-앞에서 기초분석과 currports에서 수집했던 연관 있는 ip를 검색해 보았다. (107.163.241.197, 107.163.241.198)
-특정 IP(107.163.241.197, 107.163.241.198)에 syn플래그를 전송하는 게 보인다
-해당 IP에서 RST 패킷으로 답신이 보인다.(RST: 연결 확립된 회선에 강제 리셋 요청)
->연결에 실패한 것으로 추정된다.
결론
기초 분석
- VirusTotal 검사에서 68개의 엔진이 dgrep.exe 파일을 악성으로 추정된다.
- 파일은 Win32 환경에서 실행되며 SVK-Protector v1.11과 UPX 패킹 툴이 사용된 것으로 추정된다.
- 특정 IP 107.163.241.198과 URL api.wisemansupport.com과의 연관이 의심된다.
정적 분석
- Exeinfo PE로 파일의 EP 섹션이 .mmmym으로 설정된 비정상적 섹션 이름을 확인하였고, UPX 패킹 가능성을 파악하였다.
- PE Explorer를 통해 언패킹 후 C++로 작성된 프로그램임을 확인하였다.
- Bintext에서 cmd.exe의 ping 명령어, wiseman.exe 실행 문자열, WS_32.dll 네트워크 라이브러리를 확인하였다.
동적 분석
- Process Explorer에서 dgrep.exe 실행 시 cmd.exe, PING.EXE 등 프로세스가 생성되는 것을 관찰하였다.
- Process Monitor에서 ping 명령어 수행과 익명 파일 생성이 확인되었다.
- Cports와 Wireshark로 악성 IP 107.163.241.198와의 통신 시도 및 연결 실패를 확인하였다.
결론
- dgrep.exe는 백도어 및 트로이 목마 유형의 악성코드로, 특정 IP와의 통신 시도를 지속하는 악성 파일로 보인다.
- 패킹이 되어 있었으나 언패킹을 통해 분석이 가능했으며, 네트워크 기반 악성 행위가 확인되었다.
- 통신 시도에 응답이 없어 현재는 작동하지 않지만, IP나 URL이 복구되면 재작동할 가능성이 있다.
참고 자료
https://vkdnj2040.tistory.com/14
ppt
보고서
https://eatitstory.tistory.com/77