
악성코드 분석 중 추출된 셸코드를 빠르게 디버깅합니다.
BlobRunner는 악성코드 분석 중 추출된 셸코드를 빠르게 디버깅할 수 있는 간단한 도구입니다.
BlobRunner는 대상 파일에 메모리를 할당하고 할당된 메모리의 기본(또는 오프셋)으로 점프합니다. 이를 통해 분석가는 최소한의 오버헤드와 노력으로 추출된 아티팩트를 빠르게 디버깅할 수 있습니다.

BlobRunner를 사용하려면 릴리스 페이지에서 컴파일된 실행 파일을 다운로드하거나 아래 단계를 따라 직접 빌드할 수 있습니다.
실행 파일 빌드는 간단하고 비교적 고통이 없습니다.
요구 사항
빌드 단계
cl blobrunner.c
x64 버전 빌드는 위와 거의 동일하지만 x64 도구를 사용합니다.
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c
디버깅하려면:
BlobRunner.exe shellcode.bin
특정 오프셋에서 파일 디버깅.
BlobRunner.exe shellcode.bin --offset 0x0100
파일 디버깅 시 점프 전에 일시 중지하지 않음. 경고: 점프 전에 중단점이 설정되어 있는지 확인하십시오.
BlobRunner.exe shellcode.bin --nopause
선택적 매개변수 --jit는 설정된 JIT 디버거로 셸 코드를 디버깅하는 데 사용할 수 있습니다.
디버거를 트리거하기 위해 BlobRunner는 새로 할당된 메모리 영역에서 실행 권한을 제거합니다. 이로 인해 로드된 셸코드를 실행하려고 할 때 프로그램이 AccessViolation(0xC0000005) 예외를 발생시킵니다.
Windows에서 JIT 디버거를 구성하는 방법은 여기에서 확인할 수 있습니다. x64Dbg의 경우 setjit 또는 setjitauto를 참조하십시오.
예시:
BlobRunner.exe shellcode.bin --jit
디버거가 로드되면 영역에 실행 권한을 부여합니다. x64Dbg를 사용하면 BlobRunner에서 반환된 주소로 setpagerights 명령을 실행할 수 있습니다.
setpagerights <region>, ExecuteReadWrite
인라인 어셈블리는 x64 컴파일러에서 지원되지 않습니다. 따라서 x64 셸코드 디버깅을 지원하기 위해 로더는 일시 중단된 스레드를 생성하여 스레드가 재개되기 전에 스레드 진입점에 중단점을 설정할 수 있도록 합니다.
프로세스는 로컬에서 셸코드를 디버깅하는 것과 거의 동일합니다. 단, 셸코드 파일을 원격 시스템에 복사해야 한다는 점이 다릅니다. 파일을 _win32_remote.exe_를 실행 중인 동일한 경로에 복사한 경우 매개변수로 파일 이름을 사용해야 합니다. 그렇지 않으면 원격 시스템의 셸코드 파일 경로를 지정해야 합니다.
Metasploit 도구 msfvenom을 사용하여 셸코드 샘플을 빠르게 생성할 수 있습니다.
간단한 Windows exec 페이로드 생성.
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -o test2.bin