[Security] 악성코드 샘플 분석 2차
UPX와 SVK Protector로 패킹된 악성코드를 언패킹하여 정적 분석을 수행했습니다. wiseman.exe와 DXMSFT.DLL 파일에서 C2 서버 통신, 프로세스 인젝션, 금융사 도메인 탈취 등 금융 해킹을 목표로 하는 악성 행위를 확인했습니다.
개요
2차 악성코드 분석을 수행했습니다.
코드를 언패킹하는 과정과 언패킹 파일을 기반으로 한 정적 분석 내용을 정리했습니다.
VirusTotal
PEStudio를 켜서 엔트로피로 패킹 여부를 확인했습니다. 다만 패킹되어있더라도 VirusTotal에서 파일 해시가 패킹 된 기준을 따라가며 패킹 여부도 확인할 수 있기에 VIrusTotal을 먼저 정리했습니다.

- Trojan, Backdoor, Downloader…
- peexe, persistence, executes-dropped-file, checks-network-adapters, spreader, service-scan, checks-cpu-name, checks-user-input, calls-wmi, long-sleeps, direct-cpu-clock-access, self-delete, runtime-modules, upx, detect-debug-environment

- Packing 탐지 툴을 통해 패킹 여부를 쉽게 확인 가능
Unpacking
해당 악성 코드가 패킹되어있다는 것은 PEStudio를 통해 확인 가능합니다.

1. 엔트로피 7.880 (매우 높음)
- 최대값 8.0에 근접하여 데이터가 압축 또는 암호화되어 있음을 의미
- 정상 실행파일은 보통 5.0~6.5 범위
2. Entry Point 바이트 패턴 이상
F0 F0 00 F0 F0 00 F0 F0 00...반복 패턴- 정상 컴파일러가 생성하는 프롤로그 코드(push ebp, mov esp 등)와 전혀 다름
- 패커가 삽입한 언패킹 스텁 또는 난독화된 코드로 추정

- https://m.blog.naver.com/dudemr2201/222897778220
- Detect It Easy (DIE): 시그니처 + 휴리스틱 기반 패커 식별
UPX+SVK Protector 1.11upx -d dgrep.exe→ 실패- upx → Compressor, Protector → Anti-reversing(실행 파일 보호)
언패킹 도구들

아래 깃허브에서 언패커들의 정보와 사용할 수 있는 것들을 확인할 수 있습니다.


ARM64를 지원하지 않는다. 현재는 테스트를 위해 어떻게 동작하는지만 참고했습니다.




- 언패킹을 차단하는 동작 과정을 확인
- 언패커 중 Mac Silicon ARM으로 인한 실패
- 언패킹을 감지하고 레지스터가 초기화 된 것을 확인




- 엔트로피가 낮아진 것을 확인
- 정상 실행파일은 보통 5.0~6.5 범위
- 원본 파일 이름 확인
Strings정상 확인
정적 분석
원본 패킹 파일에서 덤프된 두 가지 파일을 확인했습니다.
wiseman.exeDXMSFT.DLL- Microsoft DirectX Transform → IE에서 이미지 필터/트랜지션 효과 등 사용
Wiseman.exe 분석
Indicators

언패킹/복호화한 실제 페이로드는 Parent를 메모리에서 덤프해준 것이기에 파일 해시를 VirusTotal에 검색하더라도 유의미한 데이터를 찾기 어려울 수 있습니다.
따라서 파일의 정보만 확인합니다.
- Indicators
- 파일 크기: 380,928 bytes
- 엔트로피: 6.510 (패킹 가능성 중간)
- 파일 타입: executable, 32-bit, GUI
- 컴파일러: Microsoft Linker 6.0 / Visual C++ / Visual Studio 6.0
- 컴파일 시각: 2015-04-27 06:59:34
- 파일 이름: Wiseman.exe / wiseman
- 언어: Korean
- 설명: wiseman MFC
- Entry Point: 0x00024D34 (.text 섹션)
- Manifest 권한: asInvoker (관리자 권한 미요구)
- 인증서: 없음 (서명되지 않음)
- C2/통신 URL 패턴 (의심 지표)
wisemansupport.comapi.wisemansupport.com
click.dotmap.co.kr광고 트래킹 URL
Libraries

악성코드 라이브러리 패턴을 확인
- WININET.dll → C2(Command & Control) 서버와 HTTP 기반 통신
- WS2_32.dll → 소켓 레벨의 직접 통신 (WININET을 우회하거나 보완)
- NETAPI32.dll → 내부 네트워크 정찰 또는 측면 이동(lateral movement)
Imports

네트워크 통신
InternetOpenA,InternetOpenUrlA,InternetReadFile,InternetGetConnectedState,InternetSetOptionA,InternetQueryOptionA,InternetCloseHandle- C2 서버 접속 및 데이터 다운로드
inet_ntoa,gethostbyvalue,gethostvalue- IP/호스트 정보 변환
Netbios- NetBIOS 네트워크 호출
레지스트리 조작
RegCreateKeyA,RegCreateKeyExA,RegSetValueExA,RegDeleteKeyA,RegDeleteValueA- 자동 실행 등록 및 흔적 삭제
파일 시스템
WriteFile,CreateDirectoryA,DeleteFileA,FindFirstFileA- 파일 드롭/삭제/탐색
프로세스/윈도우
AttachThreadInput,GetWindowThreadProcessId,GetDesktopWindow,SystemParametersInfoA,PostThreadMessageA- 윈도우 조작 및 키 입력 가로채기 가능
실행/기타
ShellExecuteA→ 외부 프로그램 실행srand,rand→ 난수 생성OleRun→ OLE 객체 실행CWinThread::Process→ MFC 스레드 처리
일부 DLL은 번호로 ordinal Import 되어 Strings 상에서 검색이 안될 수 있음
Resource

- HTML, CSS, JPEG 이미지 리소스 존재 확인
- 실행 시 웹페이지를 띄울 수 있음
Strings

- Imports된 DLl 외에도 C2 서버 확인 가능
wisemansupport.com
- HTML, CSS 관련 코드까지 확인 됨
Version

- MFC(Microsoft Foundation Class)
- MS Windows API를 C++ 클래스로 감싼 응용 프로그램 프레임워크
- 윈도우 데스크톱 GUI 애플리케이션 개발 목적
DXMSFT.DLL 분석
Indicators

- Microsoft DirectX Transform → IE에서 이미지 필터/트랜지션 효과 등 사용
description→ 시각적 효과 툴인데 URL 패턴이 존재함
- C2 통신/URL 패턴
- C2 서버 의심:
http://blog.sina.com.cn/u/%s - Local:
127.0.0.1 - DNS:
8.8.8.8
- C2 서버 의심:
- 의심 URL 패턴 중 금융사 도메인을 확인
www.shinhan.com|search.daum.net|search.naver.com|www.kbstar.com.ki|www.knbank.co.kr.ki|openbank.cu.co.kr.ki|www.busanbank.co.kr.ki|www.nonghyup.com.ki|www.shinhan.com.ki|www.wooribank.com.ki|www.hanabank.com.ki|www.epostbank.go.kr.ki|www.ibk.co.kr.ki|www.idk.co.ki|www.keb.co.kr.ki|www.kfcc.co.kr.ki|www.lottirich.co.ki|www.nlotto.co.ki|www.gmarket.net|nate.com|www.nate.com|daum.com|www.daum.net|daum.net|www.zum.com|zum.com|naver.com|www.nonghyup.com|www.naver.com||www.nate.net|hanmail.net|www.hanmail.net|www.hanacbs.com|kfcc.co.ki|www.kfcc.co.ki|www.daum.net|daum.net|www.kbstir.com|www.nonghuyp.com|www.wooribank.com|www.ibek.co.ki|www.epostbenk.go.ki|www.hanabenk.com|www.keb.co.ki|www.citibank.co.ki|www.citibank.co.kr.ki|www.standardchartered.co.kr.ki|www.standardchartered.co.ki|www.suhyup-bank.com.ki|www.suhyup-bank.com|www.kjbank.com.ki|www.kjbank.com|openbank.cu.co.kr.ki|openbank.cu.co.ki|www.knbank.co.ki|www.knbank.co.kr.ki|www.busanbank.co.kr.ki|www.busanbank.co.ki|www.suhyup-bank.com|www.suhyup-bank.com.ki|www.standardchartered.co.kr.ki|www.nonghuyp.com.ki|
Section

- Execute
- base-of-code → .pla (0x00001000)
- entry-point → .text (0x000121CC)
- 실행하는 섹션이 2개 →
.pla→ 표준이 아닌 확장자 명 .text가.pla언패킹(복호화) → 복호화 후.pla가 실행 됨- 주로 정적 분석 방지를 위한 커스텀 패커일 가능성 존재
Imports

프로세스 인젝션
OpenProcess,ReadProcessMemory,WriteProcessMemory,VirtualQueryEx,MapViewOfFile,UnmapViewOfFile- 정상 프로세스에 악성코드 주입
프로세스 열거
CreateToolhelp32Snapshot,Process32First,Process32Next,GetCurrentProcess,GetCurrentProcessId- 실행 중인 프로세스 스캔 및 인젝션 타겟 탐색
파일 조작
WriteFile,CreateDirectoryA,DeleteFileA,MoveFileExA,FindFirstFileA,FindNextFileA- 파일 드롭/이동/삭제/탐색
실행/기타
WinExec— 프로그램 실행GlobalMemoryStatusEx— 메모리 상태 확인 (VM/샌드박스 탐지 가능)RaiseException— 예외 발생 (안티디버깅 가능)srand,rand— 난수 생성
Strings

권한 상승 / 토큰 조작
AdjustTokenPrivileges,LookupPrivilegeValue,OpenProcessTokenGetWindowThreadProcessId,GetDesktopWindow
레지스트리 조작
RegCreateKey,RegCreateKeyEx,RegSetValueEx,RegDeleteKey,RegDeleteValue
서비스 조작
OpenSCManager,CreateService,StartService,ChangeServiceConfig
네트워크 / URL
Netbios,GetUrlCacheEntryInfo,URLDownloadToCacheFilehttp://107.163.241.197:12354/show.phphttp://blog.sina.com.cn/u/%s
www.shinhan.com|search.daum.net|search.naver.com|www.kbstar.com.ki|www.knbank.co...
실행 / 기타
SELECT * FROM(프로세스 목록, OS 정보, 백신 탐지 등 다양하게 활용 됨)
정리
이를 바탕으로 종합해보면 해당 악성코드는 금융 정보 해킹을 위한 키로거 혹은 HTML이 존재한다는 점 등으로 피싱 등 금융 관련 악성 목적을 수행하는 것으로 의심됩니다.
이후 동적 분석을 통해 관련 동작을 살펴보도록 하겠습니다.
정적분석 발표 관련 정리
- 기업에서 오픈 소스 관련된 툴을 사용할 때 신뢰할 수 있는 기관이나 회사에서 만든 것인지, 업데이트가 잘 되는지를 판단 → 해당 툴을 우선적으로 사용(PEStudio, BinText)
- wiseman.exe 파일은 악성 경유지와 연결되어 HTTP Get Method를 활용해 wiseman을 다운로드 받음
- 현재는 동작되지 않는다는 것을 확인
- wisemansupport.com → VirusTotal에서 악성으로 등록되어있음
- imports & exports(DLL)
- 기본 내장되어있는 경우 imports / 악성코드 개발자가 만든 경우 exports
- imports는 각각의 기능이 존재하기에 어떤 기능을 수행하는지 예상
- WS로 시작하는 경우 네트워크를 수행하는 것으로 예상
- exports는 임의로 수행
- imports와 이름이 같더라도 다르게 수행될 수 있음
- 추측은 가능하지만 실제 동작은 반드시 다를 수 있음
- 동적분석을 수행하고 어떠한 내용을 수행하는지 예상해서 정리하는게 필요
- 이후에 네트워크쪽 행위를 직접 파악하면서 탐지 패턴을 어떻게 만들 것인지 확인할 예정
- 파일과 레지스트리, 프로세스, 네트워크 → 동적 분석시 확인이 필요
- 하나의 툴을 사용하더라도 반복적으로 수행해야 정확한 분석 가능
- 금융이나 공공기관에서는 분석 환경이 구체적으로 분리가 되어있음
- 악성코드 분석 룸이 존재 → 농협(네트워크가 전부 단절되어있음)
- 공공기관의 경우 망분리를 필수로 하지 않음 → 금융 대비 투자가 부족함 (별도의 인터넷 PC가 존재해야 잘 되어있는 경우임)