Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ModuleShifting — 더 은밀한 모듈 스톰핑(Module Stomping) 및 모듈 오버로딩(Module Overloading) 인젝션 기법의 변형으로, 메모리 IoC를 줄입니다. Python ctypes로 구현됨. | Kitploit
도구/GitHubGitHub/naksyn/moduleshifting
Memory ForensicsRed TeamingPayload DevelopmentBinary Exploitation
GitHubnaksyn/moduleshifting

ModuleShifting

더 은밀한 모듈 스톰핑(Module Stomping) 및 모듈 오버로딩(Module Overloading) 인젝션 기법의 변형으로, 메모리 IoC를 줄입니다. Python ctypes로 구현됨.

저장소 보기
135142년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Supported Python versions Twitter

ModuleShifting

이 도구는 2023 x33fcon 발표: "메모리 인젝션 기법의 은밀성 개선" [비디오] [블로그 포스트] 에서 발표되었습니다.

무엇인가요

ModuleShifting은 Module Stomping 및 Module Overloading 인젝션 기법보다 더 은밀한 변형입니다. 실제로 Python ctypes로 구현되어 Python 인터프리터와 Pyramid를 통해 완전히 메모리 내에서 실행될 수 있으므로, 컴파일된 로더를 사용할 필요가 없습니다.

이 기법은 PE 또는 셸코드 페이로드와 함께 사용할 수 있지만, 더 은밀한 변형은 셸코드가 로드하는 최종 페이로드와 기능적으로 독립적이어야 하는 셸코드 페이로드와 함께 사용됩니다.

ModuleShifting은 셸코드 페이로드와 함께 사용될 때 다음 작업을 수행합니다:

  1. LoadLibrary를 통해 합법적인 호스팅 dll을 로드합니다.
  2. 지정된 섹션의 메모리 권한을 RW로 변경합니다.
  3. 대상 섹션 위에 셸코드를 덮어씁니다.
  4. 선택적으로 패딩을 추가하여 거짓 긍정 동작에 더 잘 혼합되도록 합니다 (자세한 정보는 여기).
  5. 권한을 RX로 변경합니다.
  6. 함수 포인터를 통해 셸코드를 실행합니다 - 추가 실행 방법: 함수 콜백 또는 CreateThread API
  7. 실행된 셸코드 위로 원래 dll 내용을 다시 씁니다 - 이 단계는 호스팅 dll의 이미지 메모리 공간에 악성 메모리 아티팩트를 남기지 않습니다. 셸코드는 추가 단계와 기능적으로 독립적이어야 합니다. 그렇지 않으면 실행이 중단됩니다.

immagine

PE 페이로드를 사용할 때 ModuleShifting은 다음 작업을 수행합니다:

  1. LoadLibrary를 통해 합법적인 호스팅 dll을 로드합니다.
  2. 지정된 섹션의 메모리 권한을 RW로 변경합니다.
  3. 지정된 대상 지점에 PE를 섹션별로 복사합니다.
  4. 선택적으로 패딩을 추가하여 거짓 긍정 동작에 더 잘 혼합되도록 합니다.
  5. 기본 재배치를 수행합니다.
  6. 임포트를 해결합니다.
  7. 섹션을 완료하기 위해 권한을 원래 값으로 설정합니다 (RWX 메모리 영역 생성을 방지).
  8. TLS 콜백 실행
  9. PE 진입점 실행

왜 유용한가요

ModuleShifting은 동적으로 메모리를 할당하지 않고 (즉, VirtualAlloc) 페이로드를 인젝션하는 데 사용할 수 있습니다. Module Stomping 및 Module Overloading과 비교할 때 인젝션 기법 자체에서 생성되는 IoC의 양을 줄이기 때문에 더 은밀합니다.

Module Shifting과 일부 공개된 Module Stomping 구현 (Bobby Cooke의 Ninja_UUID_Runner 및 WithSecure) 간에는 세 가지 주요 차이점이 있습니다:

  1. 패딩: 셸코드 또는 PE를 쓸 때 패딩을 사용하여 일반적인 거짓 긍정 동작 (예: 타사 애플리케이션 또는 .net dll이 .text 섹션에 x 바이트를 쓰는 경우)에 더 잘 혼합될 수 있습니다.
  2. 함수 포인터를 사용한 셸코드 실행. 이는 새 스레드 생성이나 비정상적인 함수 콜백 호출을 피하는 데 도움이 됩니다.
  3. 실행된 셸코드 위로 원래 dll 내용 복원. 이것이 핵심 차이점입니다.

Module Shifting과 Module Overloading의 차이점은 다음과 같습니다:

  1. PE는 호스팅 dll의 PE부터 시작하는 대신 지정된 섹션에서부터 작성될 수 있습니다. 대상 섹션을 신중하게 선택하면 생성되는 IoC의 양을 줄일 수 있습니다 (예: 호스팅 dll의 PE 헤더가 덮어쓰이지 않거나 .text 섹션에 더 적은 바이트가 덮어쓰이는 등).
  2. PE 페이로드 자체에 추가할 수 있는 패딩으로 거짓 긍정에 더 잘 혼합됩니다.

기능적으로 독립적인 셸코드 페이로드 (예: AceLdr Beacon Stageless 셸코드 페이로드)를 사용하면 ModuleShifting은 동적으로 메모리를 할당하지 않고 로컬 인젝션을 수행할 수 있으며, 현재 Moneta 및 PE-Sieve 스캔에서 제로 IoC를 생성합니다. AceLdr 슬리핑 페이로드는 Hunt-Sleeping-Beacon과 같은 다른 훌륭한 도구로 탐지될 수 있다는 점을 알고 있지만, 여기서는 페이로드가 아닌 인젝션 기법 자체에 초점을 맞추고 있습니다. 우리의 경우, 더 은밀함을 가능하게 하는 것은 셸코드의 기능적 독립성입니다. 이를 통해 쓰여진 악성 바이트를 원래 내용으로 복원하여 인젝션의 흔적을 효과적으로 지울 수 있습니다.

면책 조항

모든 정보와 내용은 교육 목적으로만 제공됩니다. 지침은 본인의 책임 하에 따르십시오. 저자나 그 고용주는 개인이나 조직이 입은 직접적 또는 결과적 손해나 손실에 대해 책임을 지지 않습니다.

감사의 말

이 작업은 Aleksandra Doniec (@hasherezade), Forest Orr 및 Kyle Avery와 같은 놀라운 사람들이 공유한 지식과 도구 덕분에 가능했습니다. 저는 학습 과정 전반에 걸쳐 Moneta, PeSieve, PE-Bear 및 AceLdr를 많이 사용했으며, 이들은 이 주제에 대한 이해에 핵심적인 역할을 했습니다.

사용법

ModuleShifting은 Pyramid 및 Python 인터프리터와 함께 사용하여 로컬 프로세스 인젝션을 완전히 메모리 내에서 실행할 수 있으므로, 컴파일된 로더를 피할 수 있습니다.

  1. Pyramid 레포지토리를 클론합니다:

git clone https://github.com/naksyn/Pyramid

  1. 선호하는 C2로 셸코드 페이로드를 생성하고 Pyramid Delivery_files 폴더에 넣습니다. 페이로드 요구 사항은 주의사항 섹션을 참조하세요.
  2. Pyramid Modules 폴더 내의 moduleshifting.py 스크립트 매개변수를 수정합니다.
  3. Pyramid 서버를 시작합니다: python3 pyramid.py -u testuser -pass testpass -p 443 -enc chacha20 -passenc superpass -generate -server 192.168.1.2 -setcradle moduleshifting.py
  4. 생성된 크래들 코드를 Python 인터프리터에서 실행합니다.

데모

https://github.com/naksyn/ModuleShifting/assets/59816245/67fcf888-3385-47da-b828-8a2dafeeb1e2

주의사항

이 기법을 성공적으로 실행하려면 메모리의 다른 영역에 추가 자체 지속 가능 페이로드를 로드할 수 있는 셸코드 페이로드를 사용해야 합니다. ModuleShifting은 AceLdr 페이로드로 테스트되었으며, 이 페이로드는 힙에 Beacon의 전체 복사본을 로드할 수 있어 초기 셸코드와의 기능적 종속성을 끊습니다. 이 기법은 유사한 기능을 가진 모든 셸코드 페이로드에서 작동합니다. 따라서 초기 셸코드는 실행 후 쓸모없게 되며, IoC로서 메모리에 보관할 이유가 없습니다.

또한 대상 섹션에 셸코드를 위한 충분한 공간이 있는 호스팅 dll을 선택해야 합니다. 그렇지 않으면 기법이 실패합니다.

탐지 기회

Module Stomping과 Module Shifting은 합법적인 dll 메모리 공간에 셸코드를 작성해야 합니다. ModuleShifting은 정리 단계 후 이 IoC를 제거하지만, 실시간 검사 기능이 있는 스캐너가 지표를 발견할 수 있습니다.

immagine

도구 다운로드