[Security] 악성코드 샘플 분석 2차 (동적 분석)
정적 분석 후 동적 분석으로 악성코드의 자기삭제 메커니즘, 레지스트리 변조, C2 통신 시도를 추적했습니다. WireShark, Process Monitor, ANY.RUN을 활용한 상세 분석 결과를 제시합니다.
개요
정적 분석 내용을 바탕으로 동적 분석을 수행했습니다
WireShark
악성 코드가 네트워크에서 악용되는지를 우선 파악했습니다. 네트워크의 경우 다른 컴퓨터에 직접적인 피해를 입힐 수 있는만큼 우선적으로 모니터링해야한다고 생각합니다.
dns 쿼리는 정적 분석을 통해 확인했던 Strings와 도메인, IP 주소로 설정했습니다.
dns.qry.name contains "wisemansupport" or dns.qry.name contains "dotmap.co.kr" or dns.qry.name contains "sina.com.cn" or dns.qry.name contains ".ki" or dns.qry.name contains "hanabenk"...
하지만 WireShark 모니터링 시 정상적으로 캡쳐되지 않는 것을 확인했습니다. 인터넷을 접근했을 때 캡쳐되는 것을 보아 프로세스가 정상 실행되지 않은 것을 의심했습니다.
이는 Process Monitor를 통해 더 확신할 수 있습니다.
Process Monitor


Process Monitor를 통해 확인할 수 있었는데 xtajit이 정상적으로 실행되지 않았습니다.
dgrep.exe를 ARM용 x86 JIT 컴파일러에서 레지스트리를 조회했으나 값이 존재하지 않았습니다.(value not set).
이는 분석 환경이 ARM 기반이라 x86 모듈이 없는 것이며, 악성코드의 실행 환경 문제로 판단했습니다.
Wow64\x86\xtajit- 하드웨어 및 VMWare 환경 상으로 셸 코드 / 자기 변조 코드를 복호화 불가능
- XTA = X86-To-ARM, JIT = Just-In-Time
- x86을 ARM으로 즉석 번역하는 JIT 컴파일러
- 하드웨어 및 VMWare 환경 상으로 셸 코드 / 자기 변조 코드를 복호화 불가능
ANY.RUN
동적 분석 도구를 알아보다가 Any Run이라는 툴을 확인했고 동적 분석으로 실제 동작을 확인하는 것과 유사하게 여러 번 실행시켜보며 동작을 확인했습니다.


Process
우선 Any.run에서 확인 가능한 프로세스 흐름을 추적했습니다.
반복적으로 exe를 복사해서 실행되는 것을 확인했습니다. 그 중에서 악성 코드로 분류된 3가지를 확인할 수 있었는데 cmd.exe, 랜덤 생성된 파일 하나, rundll32.exe 파일입니다.
각 파일이 실행하는 특징은 3가지인데 파일 삭제 및 덮어쓰기, C2 서버 통신, 레지스트리 등록입니다.



실제 명령어가 분해되어 자기삭제 되는 것으로 판단됩니다.
- 자기 자신(localhost)에 ping 2회 (새 파일을 작성하거나 파일 변조를 수행)
- 약 2초 sleep과 유사
- kjftsqtp.exe 실행 (랜덤 이름 → 악성 파일)
- dgrep.exe를 인자로 전달하여 계속해서 파일을 조작하고 최종 삭제하는 것으로 보임
cmd.exe /c ping 127.0.0.1 -n 2&C:\Users\admin\AppData\Local\Temp\\kjftsqtp.exe "C:\Users\admin\AppData\Local\Temp\dgrep.exe"
흐름을 정리하면 dgrep.exe → kjftsqtp.exe Temp에 생성 → Ping 2초 대기 → kjftsqtp.exe가 dgrep.exe를 삭제하는 방식입니다.

실행 흐름을 따라가며 생성되는 랜덤 파일부터 추적했습니다. 앞선 dgrep.exe가 실제 실행하는 쿼리 중 랜덤 파일명이 생성됩니다. 이를 루트에 생성하는 것까지 확인했습니다.
이를 기반으로 rundll32.exe가 실행되는데 이는 실제 악성 행위를 수행하는 파일로 확인했습니다.
Registry
악성코드의 실행 흐름을 따라가며 레지스트리부터 분석했습니다. Raw를 확인해봤을 때 많은 레지스트리가 조회되지만 실제 Write 되는 레지스트리를 확인했습니다.
여러 리팩토링 자료들을 참고했을 때 auto runs가 등록되지 않아 환경상에서 놓칠 수 있는 부분이 생긴다는 것을 확인했습니다.




HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run- 사용자가 부팅 후 Windows에 로그인할 때마다 실행
EvtMgr→rundll32.exe "c:\rhloq\tdugh.dgt",XML_MemFree- 명령어 수행 됨
Network
정적 분석에서 수행했던 IP Port 주소를 확인했습니다.



악성코드가 오래되어 실제 C2 통신은 수행되지 않은 것으로 파악했습니다.
- 6520, 12354 포트로 요청갔지만 정상적인 TCP 통신은 수행되지 않음
107.163.241.198: 6520107.163.241.197: 12354
wisemansupport.com
Process
그 외 확인된 악성동작들 정리했습니다.
- Mutex: C2 통신과의 중복 수행을 방지
- 실행 파일을 잠궈서 중복 실행되는 것을 방지하고 C2 서버를 하나만 사용할 수 있도록 보장하는 프로그램으로 판단됩니다.

다음으로 만료된 패키지입니다. 로드된 패키지 중 랜덤으로 생성되지만 인증서가 만료되었고, 심지어 서명된 기업도 위조 혹은 탈취해서 생성한 것으로 판단됩니다.


결론
우선 악성 코드 분석은 네트워크 동작을 탐지해서 패턴을 만드는 것이 목적입니다. 특히 네트워크 특징을 WireShark로 분석하여 탐지 패턴을 생성하고 차단해보는 것이 이후 목적입니다.
하지만 네트워크 차단이 아닌 단순 분석이 목적이라면 외부 SaaS를 사용할 수 있습니다. 다만 주의해야할 점은 실제 해당하는 내용이나 특정 조건에 따라 동작을 수행하는 악성 코드의 정상적인 동작을 확인할 수 없습니다.