

하드웨어 샌드박스 툴킷
악성코드는 종종 탐지 및 대응이 어려울 수 있는 다양한 안티-VM 기술을 사용합니다. 연구실에서 안티 탐지 조치를 통합하는 것은 자주 사용되는 옵션이지만, 이상하게 들릴지라도 실제 하드웨어 샌드박스를 사용하는 것도 고려해야 합니다. 뛰어난 PCILeech 프로젝트와 DMA 하드웨어 액세스를 활용하여 XenoboxX는 동적으로 할당된 메모리를 덤프하고 IoC를 검색하는 등 분석 작업을 위한 도구 모음을 제공합니다. 이러한 도구를 사용하면 DMA를 통해 커널 수준에서 코드를 주입할 수 있어 탐지가 훨씬 더 어려워지고 분석에 새로운 관점을 제공합니다.
XenoboxX는 현재 64비트 Windows에 중점을 두고 있지만, 향후 다른 플랫폼으로도 확장될 수 있습니다.
이 도구는 DEFCON 32 Demo Labs에서 발표되었습니다: 여기
분명 물리적 환경에 대해 이야기하고 있으므로:
대상 PC에 DMA 보드를 설치합니다. 보드를 호스트 PC에 연결합니다.
호스트 PC에 PCILeech를 설치합니다: 개발이나 수정을 할 계획이 없다면, 릴리스 페이지에 있는 바이너리(가장 일반적인 옵션)를 설치하면 됩니다.
호스트 PC에 XenoboxX를 설치합니다: 이전과 마찬가지로, 미리 컴파일된 바이너리(pcileech 폴더 내)만 원할 수도 있습니다.
PCILeech 모듈을 주입합니다:
./pcileech kmdload -kmd WIN10_X64_3
그러면 셸코드를 실행하는 데 사용할 메모리 주소(예: 0x7ffff000)가 반환됩니다.
XenoboxX 셸코드를 실행합니다:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
현재 XenoboxX에는 3개의 wx64 셸코드가 있습니다:
wx64_dumpalloc: 특정 PID에 연결하여 프로세스가 수행한 모든 메모리 할당을 덤프합니다. 기존 메모리의 보호 플래그가 변경되면 해당 영역이 다시 덤프됩니다(때로 악성코드는 검사를 피하기 위해 보호를 전환합니다).wx64_memgrep: PID가 할당한 메모리에서 사용자 정의 문자열을 검색합니다. 일정 시간 동안 프로세스에 연결될 수 있습니다.wx64_strings: PID가 할당한 메모리에서 모든 문자열을 검색합니다. 일정 시간 동안 프로세스에 연결될 수 있습니다.참고: 실험적 접근 방식으로, Xenobox는 현재 후킹을 전혀 사용하지 않으며 모든 탐지는 폴링을 통해 수행됩니다. 분명히 몇 가지 단점이 있지만, 최대한 은밀하게 작동하기 위한 현재의 설계 선택입니다.
예시:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
-0 연결할 PID (16진수 형식, 필수)-1 프로세스 모니터링 시간. 기본값 0x20-s 출력 폴더, 메모리 덤프와 로그가 저장될 경로예시:
./pcileech wx64_memgrep -0 0x564 -1 0x80 -s "Hello, 123" -2 1 -kmd 0x7ffff000
-0 연결할 PID (16진수 형식, 필수)-1 프로세스 모니터링 시간. 기본값 0x20-2 ASCII(0x0) 또는 WIDE(0x1) 문자열 검색. 기본값 0x0-3 대소문자 구분(0x1) 또는 구분 안 함(0x0). 대소문자 구분이 더 빠름. 기본값 0x0-4 쓰기 가능한 메모리 페이지만(0x0) 또는 전체(0x01) 검색. 기본값 0x0-s 검색 문자열 (따옴표로 묶음)예시:
./pcileech wx64_strings -0 0x19e0 -1 0x100 -3 0x15 -kmd 0x7ffff000
-0 연결할 PID (16진수 형식, 필수)-1 프로세스 모니터링 시간. 기본값 0x20-2 ASCII(0x0) 또는 WIDE(0x1) 문자열 검색. 기본값 0x0-3 문자열 최소 길이. 기본값 0xA-4 쓰기 가능한 메모리 페이지만(0x0) 또는 전체(0x01) 검색. 기본값 0x0XenoboxX 스크립트를 수정하거나 다시 빌드하려면 PCILeech 저장소의 일부 파일이 필요합니다:
wx64_common.hwx64_common.cshellcode64.exe각 .c 파일의 주석에 컴파일 지침이 있습니다. 예:
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_common.c
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_dumpalloc.c
ml64.exe wx64_common_a.asm /Fewx64_dumpalloc.exe /link /NODEFAULTLIB /RELEASE /MACHINE:X64 /entry:main wx64_dumpalloc.obj wx64_common.obj
shellcode64.exe -o wx64_dumpalloc.exe "DUMP ALLOCATED MEMORY \n===============================================================\nREQUIRED OPTIONS: \n -0 : Process PID to open. Example '-0 0x0fe0'. \nOPTIONAL OPTIONS: \n -1 : Process monitoring timeout Default: 0x20. Example: '-1 0x100'. \n -s : Specify output folder/file for dumps. Example: \"\\??\C:\temp\test\"\n===== RESULT OF DUMPALLOC OPERATION ======================%s\nNTSTATUS : 0x%08X \n===============================================================\n"
XenoboxX는 최종 분석 도구가 아닙니다: 이는 특정 분석에 유용한 매우 특수한 접근 방식입니다. 이 도구가 현재 워크플로를 대체할 것이라고 생각하지 않지만, 특정 까다로운 악성코드에 유용할 수도 있습니다.
기여와 제안은 언제나 환영합니다. 질문이 있으면 이슈를 열어주시고, 기여를 원하시면 풀 리퀘스트를 보내주세요. 감사합니다!