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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
BumbleCrypt — A Bumblebee-inspired Crypter | Kitploit
도구/GitHubGitHub/knight0x07/bumblecrypt
Encryption/Decryption ToolsRed TeamingPayload DevelopmentAdversarial Attack
GitHubknight0x07/bumblecrypt

BumbleCrypt

A Bumblebee-inspired Crypter

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BumbleCrypt

Bumblebee에서 영감을 받은 Crypter

배경

BumbleCrypt는 Bumblebee의 crypter에서 영감을 받았습니다. Bumblebee의 경우, 메인 Bumblebee DLL이 메모리에 로드되어 다음과 같은 방식으로 실행됩니다:

  • Heap에 페이로드를 복호화하여 기록합니다
  • NtOpenFile, NtCreateSection, NtMapViewOfSection 세 가지 NtApi를 후킹합니다
  • LoadLibraryW("gdiplus.dll")를 호출합니다. LoadLibrary()가 라이브러리를 로드할 때 위 세 가지 API를 사용하므로 인라인 후크가 트리거됩니다.
  • 그런 다음 인라인 후크와 LoadLibrary 자체가 "gdiplus.dll" 대신 메인 Bumblebee DLL을 로드합니다.
  • 마지막으로 제어는 메인 Bumblebee DLL의 내보낸 함수 "SetPath"로 전달됩니다.

BumbleCrypt의 작동 방식

BumbleBee의 crypter를 분석하면서, Bumblebee Crypter에서 사용된 세 개의 인라인 후크 대신 "NtMapViewOfSection" 하나만으로도 복호화된 DLL을 로드할 수 있다는 것을 깨달았습니다. 그 결과 "BumbleCrypt"가 개발되었습니다.

BumbleCrypt의 동작:

  • BumbleCrypt는 먼저 .rsrc 섹션에서 암호화된 리소스를 로드한 다음 최종 DLL 페이로드를 복호화합니다: encrypted res -> Base64 decode -> Rc4 Decrypt -> xor decrypt

  • Crypter는 Bumblebee의 crypter처럼 Heap을 활용하여 복호화된 DLL 페이로드를 저장합니다.

  • 최종 페이로드가 복호화되면 BumbleCrypt는 NtApi "NtMapViewOfSection"을 후킹합니다. 이 API는 섹션의 뷰를 가상 주소 공간에 매핑하는 데 사용됩니다.

  • 그런 다음 BumbleCrypt는 LoadLibraryW("msimg32.dll")를 호출합니다. 이제 인라인 후크가 어떻게 트리거되는지 이해해 보겠습니다:

    • LoadLibraryW()는 먼저 NtOpenFile을 호출하여 인수로 전달된 모듈의 핸들을 얻습니다.
    • 그런 다음 NtCreateSection을 사용하여 모듈의 핸들로 섹션 객체를 생성합니다.
    • 섹션이 생성되면 LoadLibrary는 섹션의 뷰를 메모리에 매핑하기 위해 NtMapViewOfSection을 호출합니다.
    • 여기서 NtMapViewOfSection에 대한 후크가 트리거되며, 프록시 함수는 다음 작업을 수행합니다:
      • 먼저 NtMapViewOfSection의 후크를 해제합니다.
      • NtCreateSection()을 사용하여 필요한 크기의 섹션을 생성합니다.
      • 그런 다음 (이전에 후크를 해제한) NtMapViewOfSection을 사용하여 생성된 섹션의 뷰를 가상 주소 공간에 매핑합니다.
      • 마지막으로 이전에 복호화된 최종 DLL을 메모리 매핑된 섹션의 기본 주소에 수동으로 매핑한 다음 LoadLibraryW에 NTSTATUS_SUCCESS를 반환하고 프록시 함수에서 종료합니다.
    • 그런 다음 LoadLibraryW는 NtMapViewOfSection에 대한 응답으로 NTSTATUS_SUCCESS를 수신하고, 복호화된 악성 DLL이 메모리에 존재하는 메모리 매핑된 섹션의 기본 주소도 수신합니다. 이후 LoadLibrary는 반환 값에 따라 DLL을 로드하며, 그 결과 로드된 모듈에 msimg32.dll이 보이지만 실제로는 복호화된 페이로드를 가리키게 됩니다. 또한 Crypter는 내보낸 함수 "CallPath"를 실행하여 복호화된 DLL로 제어를 전달합니다.
  • 이제 BumbleCrypt의 로드된 모듈 스크린샷을 보면 "msimg32.dll"이 포함되어 있지만 기본 주소가 복호화된 악성 페이로드를 가리키는 것을 확인할 수 있습니다.

스크린샷

s2

s3

PoC - BumbleCrypter

s1

정말 감사합니다! 마음에 드셨길 바랍니다 =D Ciao.

피드백이나 의견이 있으시면 Twitter로 연락해 주세요.

Twitter: https://twitter.com/knight0x07

참고

교육 목적으로만 사용하세요. 개인 주말 프로젝트입니다 =)

도구 다운로드