
메모리에서 디스크로 악성코드 PE 파일을 덤프하여 분석하기 위한 Windows 도구.
Process Dump는 Windows 역공학 명령줄 도구로, 악성코드 메모리 구성 요소를 디스크로 덤프하여 분석합니다. 악성코드 파일은 종종 AV 스캐너를 피하기 위해 실행 전에 패킹되거나 난독화되지만, 이러한 파일이 실행되면 메모리에서 악성코드 코드의 정상 버전을 언패킹하거나 인젝션하는 경우가 많습니다. 악성코드 연구자가 악성코드를 분석할 때 일반적인 작업 중 하나는 이 언패킹된 코드를 메모리에서 디스크로 덤프하여 AV 제품으로 스캔하거나 IDA와 같은 정적 분석 도구로 분석하는 것입니다.
Process Dump는 Windows 32비트 및 64비트 운영 체제에서 작동하며, 특정 프로세스 또는 현재 실행 중인 모든 프로세스에서 메모리 구성 요소를 덤프할 수 있습니다. Process Dump는 클린 해시 데이터베이스의 생성 및 사용을 지원하므로, kernel32.dll과 같은 모든 정상 파일의 덤프를 건너뛸 수 있습니다. 주요 기능은 다음과 같습니다:
공식 컴파일된 릴리스를 제 웹사이트에서 유지 관리하고 있습니다: https://split-code.com/processdump.html
Process Dump의 최신 컴파일 릴리스를 여기에서 다운로드할 수 있습니다:
이는 Visual Studio 2019용으로 설계되었으며 무료 Community 에디션에서 작동합니다. VS2019로 프로젝트 파일을 열고 컴파일하면 됩니다. 아주 쉽습니다!
Process dump는 메모리에서 알 수 없는 모든 코드를 덤프하거나('-system' 플래그), 특정 프로세스를 덤프하거나, 모든 프로세스가 종료되기 직전에 덤프하는 모니터링 모드로 실행할 수 있습니다.
이 도구를 처음 사용하기 전에, 클린 워크스테이션에서 클린 제외 해시 데이터베이스를 다음 중 하나로 생성할 수 있습니다:
사용 예:
명령줄 인수는 다음과 같이 그룹화할 수 있습니다:
일반 덤프 옵션
클린 해시 데이터베이스 옵션
출력 옵션
| 옵션 | 설명 |
|---|---|
| -v | 디버깅을 위해 더 많은 세부 정보를 출력하는 상세 모드입니다. |
| -nh | 출력에 헤더가 출력되지 않습니다. |
고급 옵션
좋습니다, 더 간소화된 버전의 정보는 다음과 같습니다:
자동화된 샌드박스에서 Process Dump를 사용하거나 수동 안티멀웨어 연구를 위해 다음 단계가 유용할 수 있습니다. 모든 명령을 관리자로 클린 환경에서 실행해야 합니다.
pd64.exe -db gen을 실행하거나 더 빠르지만 덜 완전한 방법으로 pd64.exe -db genquick를 사용합니다. 상황에 따라 이 클린 해시 데이터베이스를 만든 후 VM 스냅샷을 찍어 매번 반복할 필요가 없도록 할 수 있습니다.pd64.exe -closemon을 백그라운드에서 실행합니다. 악성코드가 사용한 모든 중간 프로세스를 덤프합니다.pd64.exe가 종료하려는 모든 프로세스를 자동으로 덤프합니다.pd64.exe -system을 사용하여 모든 프로세스를 덤프합니다.덤프된 구성 요소는 pd64.exe의 작업 디렉터리에서 찾을 수 있습니다. 출력 경로를 변경하려면 -o 플래그를 사용합니다.
덤프된 파일 이름 예시
| 옵션 | 설명 |
|---|
| -system | 액세스 가능한 모든 프로세스에서 클린 해시 데이터베이스와 일치하지 않는 모든 모듈을 작업 디렉터리로 덤프합니다. |
| -pid <pid> | 지정된 PID에서 클린 해시 데이터베이스와 일치하지 않는 모든 모듈을 현재 작업 디렉터리로 덤프합니다. '0x' 접두사를 사용하여 16진수 PID를 지정합니다. |
| -closemon | 모니터 모드로 실행됩니다. 프로세스가 종료될 때, process dump가 먼저 프로세스를 덤프합니다. |
| -p <regex process name> | 필터와 일치하는 프로세스 이름에서 클린 해시 데이터베이스와 일치하지 않는 모든 모듈을 지정된 PID에서 현재 작업 디렉터리로 덤프합니다. |
| -a <module base address> | 프로세스에서 지정된 기준 주소의 모듈을 덤프합니다. |
| -o <path> | 덤프된 구성 요소의 기본 출력 루트 폴더를 설정합니다. |
| 옵션 | 설명 |
|---|
| -db gen | 일반 폴더 몇 개와 현재 실행 중인 모든 프로세스를 자동으로 처리하고 찾은 모듈 해시를 클린 해시 데이터베이스에 추가합니다. %WINDIR%, %HOMEPATH%, C:\Program Files\, C:\Program Files (x86)\에 있는 모든 파일과 실행 중인 모든 프로세스의 모든 모듈을 재귀적으로 추가합니다. 이러한 클린 해시는 애플리케이션 디렉터리의 clean.hashes 파일에 추가됩니다. 향후 프로세스 덤프 명령에서 이러한 알려진 모듈은 덤프되지 않습니다. 도구를 사용하기 전에 클린 시스템에서 이 명령을 한 번 실행하여 메모리에서 너무 많은 모듈이 덤프되지 않도록 하는 것이 좋습니다. |
| -db genquick | 위와 동일하지만 모든 프로세스의 모든 모듈에서 해시만 클린 해시 데이터베이스에 추가합니다. 클린 해시 데이터베이스를 구축하는 훨씬 빠른 방법이지만 덜 완전합니다. |
| -db add <dir> | 지정된 디렉터리의 모든 파일을 재귀적으로 클린 해시 데이터베이스에 추가합니다. |
| -db rem <dir> | 지정된 디렉터리의 모든 파일을 재귀적으로 클린 해시 데이터베이스에서 제거합니다. |
| -nr | 해시 데이터베이스 디렉터리 추가 또는 제거 명령에서 재귀를 비활성화합니다. |
| -db clean | 클린 해시 데이터베이스를 지웁니다. |
| -db ignore | 이번에 프로세스를 덤프할 때 클린 해시 데이터베이스를 무시합니다. 일치 항목이 발견되더라도 모든 모듈이 덤프됩니다. |
| -cdb <filepath> | 이 실행에 사용할 클린 해시 데이터베이스의 전체 파일 경로입니다. 기본값 clean.hashes를 재정의하려는 경우 사용합니다. |
| -edb <filepath> | 이 실행에 사용할 진입점 해시 데이터베이스의 전체 파일 경로입니다. |
| -esdb <filepath> | 이 실행에 사용할 진입점 짧은 해시 데이터베이스의 전체 파일 경로입니다. |
| 옵션 | 설명 |
|---|
| -g | 기존 헤더를 무시하고 PE 헤더를 처음부터 강제로 생성합니다. |
| -eprec | 유효한 진입점이 있는 것처럼 보여도 진입점을 재구성하도록 강제합니다. |
| -ni | 임포트 재구성을 비활성화합니다. |
| -nc | 느슨한 코드 영역 덤프를 비활성화합니다. |
| -nt | 멀티스레딩을 비활성화합니다. |
| -nep | 진입점 해싱을 비활성화합니다. |
| -t <thread count> | 사용할 스레드 수를 설정합니다(기본값 16). |
| 명령 | 설명 |
|---|
pd64.exe -db genquick | 현재 실행 중인 프로세스를 기반으로 클린 모듈 데이터베이스를 빠르게 구축합니다. 이후 작업에서 Process Dump는 인식되지 않은 모듈만 덤프합니다. |
pd64.exe -system | 모든 프로세스에서 모든 모듈과 숨겨진 청크를 덤프하고 정상 모듈은 무시합니다. |
pd64.exe -closemon | 종료 모니터 모드로 실행합니다. 프로세스가 종료를 시도할 때 모든 프로세스를 덤프합니다. |
pd64.exe -pid 0x18A | 특정 프로세스 ID에서 모듈과 숨겨진 청크를 덤프합니다. |
pd64.exe -p .\*chrome.\* | 프로세스 이름으로 모듈과 숨겨진 청크를 덤프합니다. |
pd64.exe -db gen | 알려진 모듈의 클린 해시 데이터베이스를 구축합니다. 이후 작업에서 알려진 정상 모듈을 덤프하지 않도록 하는 데 사용됩니다. |
pd64.exe -pid 0x1a3 -a 0xffb4000 | PID의 특정 주소에서 코드를 덤프합니다. 재구성된 32비트 및 64비트 PE 헤더로 분석을 위한 두 파일을 생성합니다: notepad_exe_x64_hidden_FFB40000.exe 및 notepad_exe_x86_hidden_FFB40000.exe. |