RelocAlloc: .reloc 섹션을 사용하여 일반적인 할당 호출을 대체하기
코드 설명:
- 먼저, 프로세스에 매핑된 모든 dll의 주소를 찾습니다.
- 그런 다음 구조체 배열을 구성하고 일부 데이터로 채웁니다. 이것이 Initialize() 함수입니다.
- 이제 배열이 완성되었으니, 다음 단계는 올바른 주소를 검색하는 것입니다.
- GetSuitableAddress(SIZE_T ShellcodeSize) 를 호출하면 작업이 수행됩니다. 즉, 셸코드 크기에 맞는 올바른 코드 케이브(메모리의 빈 공간)를 찾아줍니다.
- 발견되면 반환됩니다.
- 사용하려면 메모리 보호를 쓰기/실행 가능으로 조정해야 합니다 ... (poc는 직접 rwx입니다)
데모:
img1
img2
참고: 이는 작은 셸코드에서만 작동합니다. 매핑된 dll에 의존하기 때문입니다. .reloc 섹션이 클수록 유효한 주소를 얻을 확률이 높아집니다. 또한 이는 x64 머신에서만 테스트되었지만, x86에서도 작동할 것입니다 (아마도 :p)
# 더 많은 소식을 기다려 주세요
120064592-a5c83480-c075-11eb-89c1-78732ecaf8d3