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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
BokuLoader — 개념 증명용 Cobalt Strike 반사 로더로, Cobalt Strike의 회피 기능을 재현·통합·향상시키는 것을 목표로 합니다! | Kitploit
도구/GitHubGitHub/boku7/bokuloader
Penetration Testing FrameworksExploit FrameworksShellcodeBinary AnalysisRed TeamingPayload Development
GitHubboku7/bokuloader

BokuLoader

개념 증명용 Cobalt Strike 반사 로더로, Cobalt Strike의 회피 기능을 재현·통합·향상시키는 것을 목표로 합니다!

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BokuLoader : Cobalt Strike 반사 로더

Cobalt Strike의 회피 기능을 재현, 통합 및 향상시키는 것을 목표로 하는 개념 증명 사용자 정의 반사 로더 (UDRL)입니다!

기여자:

기여자트위터주요 기여
Bobby Cooke@0xBoku프로젝트 원작자 및 유지보수자
Santiago Pecin@s4ntiago_p반사 로더 주요 개선
Chris Spehn@ConsciousHacker어그레서 스크립팅
Joshua Magri@passthehashbrwnIAT 후킹
Dylan Tran@d_tranman반사 호출 스택 스푸핑
James Yeung@5cript1diot간접 시스템 호출

UDRL 사용 고려 사항

내장된 Cobalt Strike 반사 로더는 강력하며, Cobalt Strike가 제공하는 모든 Malleable PE 회피 기능을 처리합니다. 사용자 정의 UDRL을 사용할 때의 주요 단점은 Malleable PE 회피 기능이 기본적으로 지원되거나 지원되지 않을 수 있다는 점입니다.

공개 BokuLoader 프로젝트의 목표는 레드 팀이 자체 사내 Cobalt Strike UDRL을 만들 수 있도록 지원하는 것입니다. 이 프로젝트는 가치 있는 모든 CS Malleable PE 회피 기능을 지원하는 것을 목표로 합니다. 일부 회피 기능은 CS 통합을 활용하고, 다른 기능은 완전히 재현되었으며, 일부는 지원되지 않습니다.

이 프로젝트를 어떤 형태로든 사용하기 전에 회피 기능이 의도한 대로 작동하는지 적절히 테스트해야 합니다. C 코드와 Aggressor 스크립트 간에 운영체제, 컴파일러, Java의 다양한 버전으로 컴파일하면 다른 결과가 나올 수 있습니다.

회피 기능

BokuLoader 특정 회피 기능

  • 합성 프레임을 통한 반사 호출 스택 스푸핑.
  • 사용자 정의 ASM/C 반사 로더 코드
  • HellsGate 및 HalosGate 기술을 통한 간접 NT 시스템 호출
    • 모든 할당 옵션에 대한 모든 메모리 보호 변경은 NtProtectVirtualMemory에 대한 간접 시스템 호출을 통해 수행됩니다.
  • 사용자 정의 UDRL Aggressor 스크립트 구현을 통한 obfuscate "true"
  • NOHEADERCOPY
    • 로더가 원본 비콘 DLL의 헤더를 가상 비콘 DLL로 복사하지 않습니다. 처음 0x1000 바이트는 null이 됩니다.
  • 심볼 해결을 위한 XGetProcAddress
    • Kernel32.GetProcAddress를 사용하지 않습니다.
  • DLL의 기본 주소 및 DLL 로딩 해결을 위한 xLoadLibrary
    • 로드된 DLL의 경우 TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList에서 DLL 기본 주소를 가져옵니다.
    • Kernel32.LoadLibraryA를 사용하지 않습니다.
  • 문자열 난독화를 위한 시저 암호
  • 100k UDRL 크기
  • 가상 비콘 DLL에서 가져오기 DLL 이름과 가져오기 항목 이름 문자열이 스톰프됩니다.

지원되는 Malleable PE 회피 기능

테스트

  • (2023년 2월 22일) 4가지 할당자 방법 모두 threatexpress/malleable-c2/master/jquery-c2.4.7.profile로 테스트됨

프로젝트 기원

  • Stephen Fewer의 놀라운 Reflective Loader 프로젝트 기반:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • 처음에는 Sektor7 Malware Developer Intermediate (MDI) Course의 Renz0h의 Reflective DLL 비디오를 공부하면서 만들어졌습니다.

사용법

  1. make로 BokuLoader 개체 파일 컴파일
  2. Cobalt Strike 팀 서버 시작
  3. Cobalt Strike 내에서 BokuLoader.cna Aggressor 스크립트 가져오기
  4. x64 비콘 생성 (Attacks -> Packages -> Windows Executable (S))
  5. Script Console을 사용하여 비콘 빌드에 BokuLoader가 구현되었는지 확인
  • x86 옵션을 지원하지 않습니다. x86 bin은 원본 Reflective Loader 개체 파일입니다.
  • RAW 비콘 생성은 기본적으로 작동합니다. 비콘 로더에 Artifact Kit를 사용할 때 stagesize 변수는 기본값보다 커야 합니다.
    • 추가 정보는 Cobalt Strike 사용자 정의 반사 로더 문서를 참조하세요.

탐지 지침

하드코딩된 문자열

  • BokuLoader는 일반적으로 탐지되는 일부 문자열을 새로운 하드코딩된 값으로 변경합니다. 이러한 문자열은 BokuLoader 시그니처에 사용될 수 있습니다:
원본 Cobalt Strike 문자열BokuLoader Cobalt Strike 문자열
ReflectiveLoaderBokuLoader
Microsoft Base Cryptographic Provider v1.012367321236742382543232341241261363163151d
(admin)(tomin)
beaconbacons

메모리 할당자

DLL 모듈 스톰핑

  • Kernel32.LoadLibraryExA가 호출되어 디스크에서 DLL을 매핑합니다.
  • Kernel32.LoadLibraryExA의 세 번째 인수는 DONT_RESOLVE_DLL_REFERENCES (0x00000001)입니다.
    • 시스템이 DllMain을 호출하지 않습니다.
  • MDSec가 여기에서 설명한 대로 LDR PEB 항목의 주소를 확인하지 않습니다.
  • pe-sieve 도구로 프로세스 메모리를 스캔하여 탐지 가능합니다.

힙 할당

  • 슬립마스크 키트를 사용하지 않으면 힙에 실행 가능한 RX 또는 RWX 메모리가 존재합니다.

매핑 할당자

  • 가상 비콘 DLL을 위한 메모리를 할당하기 위해 Kernel32.CreateFileMappingA와 Kernel32.MapViewOfFile이 호출됩니다.

슬립마스크 탐지

  • 슬립마스크 키트가 사용되는 경우, MDSec가 여기에서 자세히 설명한 대로 이 독립적인 메모리 할당에 대한 탐지 방법이 존재합니다.

간접 시스템 호출

  • BokuLoader는 로드된 실행 가능한 비콘 메모리를 설정하기 위해 다음 NT 시스템 호출을 호출합니다: NtAllocateVirtualMemory, NtProtectVirtualMemory
  • 이들은 BokuLoader 실행 가능 메모리에서 간접적으로 호출됩니다.
  • ntdll.dll에 사용자 랜드 후크를 설정해도 이러한 시스템 호출을 탐지하지 못합니다.
  • 커널 드라이버를 사용하여 커널 콜백을 등록하여 위의 시스템 호출을 모니터링하고 사용을 탐지할 수 있습니다.
  • BokuLoader 자체의 실행 가능 메모리에는 mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 어셈블리 명령어가 포함됩니다.

가상 비콘 DLL 헤더

  • 가상 비콘 DLL의 처음 0x1000 바이트는 0입니다.

소스 코드 사용 가능

  • BokuLoader 소스 코드는 리포지토리 내에 제공되며 메모리 시그니처를 만드는 데 사용할 수 있습니다.
  • 추가 탐지 지침이 있으면 풀 리퀘스트를 제출하여 자유롭게 기여해 주세요.

크레딧 / 참고 자료

반사 호출 스택 스푸핑

  • LoudSunRun: 간접 시스템 호출을 사용한 호출 스택 합성 프레임 스푸퍼
  • SilentMoonwalk: 완전 동적 호출 스택 스푸퍼의 PoC 구현
  • Vulcan Raven: 시스템 호출 시 임의의 호출 스택 스푸핑을 위한 PoC 구현
  • CallStackMasker: 타이머로 호출 스택을 동적으로 마스킹하는 PoC 구현
  • ThreadStackSpoofer: 스레드 스택 스푸핑 PoC
  • Behind the Mask: 타이머로 호출 스택을 동적으로 스푸핑하기

반사 로더

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Reflective DLL에 관심이 있다면 다음 비디오를 확인하세요:
    • 가져오기 주소 테이블(IAT)과 춤추기 - Sektor 7 MDI 과정
    • 내보내기 주소 테이블 살펴보기 - Sektor 7 MDI 과정
    • 반사 인젝션 설명 - Sektor 7 MDI 과정
    • ReflectiveLoader 소스 검토 - Sektor 7 MDI 과정
  • TitanLdr
  • AceLdr
  • KaynLdr

HalosGate 시스템 호출자

  • Reenz0h (@SEKTOR7net 출신)
    • Reenz0h의 훌륭한 과정과 블로그를 확인하세요!
    • 내가 수강한 맬웨어 개발 최고의 수업.
    • halos gate 기술의 창시자. 그의 작업이 이 작업의 초기 동기였습니다.
    • Sektor7 HalosGate 블로그

HellsGate 시스템 호출자

  • @smelly__vx 및 @am0nsec (Hells Gate 기술의 창시자/게시자)
    • 그들 없이는 HellsGate 구현을 만들 수 없었을 것입니다 :)
    • 이 방법에 대한 훌륭한 작업, 직접 해보면서 정말 즐거웠습니다. 감사합니다!
    • https://github.com/am0nsec/HellsGate
    • Hell's Gate 논문 링크: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

어그레서 스크립팅

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Cobalt Strike 사용자 정의 반사 로더

  • https://www.cobaltstrike.com/help-user-defined-reflective-loader

Intel ASM 학습을 위한 훌륭한 자료

  • Pentester Academy - SLAE64

ETW 및 AMSI 우회

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - 반사 로더에 우회를 구현하는 멋진 아이디어를 제공해 주셨습니다!
  • @XPN .NET 숨기기 – ETW
  • ajpc500/BOFs
  • Offensive Security OSEP

GCC로 C 코드에서 ASM 구현

  • https://outflank.nl/blog/2020/12/26/direct-syscalls-in-beacon-object-files/
  • https://www.cs.uaf.edu/2011/fall/cs301/lecture/10_12_asm_c.html
  • http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Extended-Asm.html#Extended-Asm

Cobalt Strike C2 프로필

  • Tylous의 대단한 SourcePoint 프로젝트
  • threatexpress/malleable-c2/jquery-c2.4.7.profile
도구 다운로드
명령옵션지원 여부
allocatorHeapAlloc, MapViewOfFile, VirtualAlloc모두 BokuLoader 구현을 통해 지원됨
module_x64string (DLL Name)BokuLoader 구현을 통해 지원됩니다. CS 구현과 동일한 DLL 스톰프 요구 사항이 적용됩니다.
obfuscatetrue/falseHTTP/S 비콘은 BokuLoader 구현을 통해 지원됩니다. SMB/TCP는 현재 obfuscate true에 대해 지원되지 않습니다. 자세한 내용은 이슈를 참조하세요. 수정할 수 있다면 도움을 받습니다 :)
entry_pointRVA as decimal numberBokuLoader 구현을 통해 지원됨
cleanuptrueCS 통합을 통해 지원됨
userwxtrue/falseBokuLoader 구현을 통해 지원됨
sleep_mask(true/false) 또는 (Sleepmask Kit+true)지원됨. 기본 "sleepmask true"(sleepmask kit 없음)를 사용할 때는 "userwx true"를 설정하세요. RX beacon.text 메모리(src47/Ekko)를 지원하는 sleepmask kit를 사용할 때는 "sleepmask true"와 "userwx false"를 설정하세요.
magic_mz_x644자 문자열CS 통합을 통해 지원됨
magic_pe2자 문자열CS 통합을 통해 지원됨
transform-x64 prepend이스케이프된 16진 문자열BokuLoader.cna Aggressor 스크립트 수정
transform-x64 strrep문자열 문자열BokuLoader.cna Aggressor 스크립트 수정
stomppetrue/false지원되지 않음. BokuLoader는 비콘 DLL 헤더를 복사하지 않습니다. 가상 비콘 DLL의 처음 0x1000 바이트는 0x00입니다.
checksum숫자실험적. BokuLoader.cna Aggressor 스크립트 수정
compile_time날짜-시간 문자열실험적. BokuLoader.cna Aggressor 스크립트 수정
image_size_x6410진 값지원되지 않음
name문자열실험적. BokuLoader.cna Aggressor 스크립트 수정
rich_header이스케이프된 16진 문자열실험적. BokuLoader.cna Aggressor 스크립트 수정
stringw문자열지원되지 않음
string문자열지원되지 않음