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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Chimera — EDR 우회 기능을 갖춘 자동화된 DLL 사이드로딩 도구 | Kitploit
도구/GitHubGitHub/georgesotiriadis/chimera
Payload GenerationExploitationShellcodeRed Teaming
GitHubgeorgesotiriadis/chimera

Chimera

EDR 우회 기능을 갖춘 자동화된 DLL 사이드로딩 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Chimera Unlea$ed 

도구 배경


DLL 사이드로딩은 프로그램이 정상적으로 작동하는 데 필요한 라이브러리를 로드하는 등 합법적인 목적으로 사용될 수 있지만, 악의적인 목적으로도 사용될 수 있습니다. 공격자는 DLL 사이드로딩을 이용해 대상 시스템에서 임의 코드를 실행할 수 있으며, 이는 주로 DLL을 로드하는 데 사용되는 합법적인 애플리케이션의 취약점을 악용하여 이루어집니다.

DLL 사이드로딩 프로세스를 자동화하고 더 효과적으로 만들기 위해 Chimera가 개발되었습니다. 이 도구는 EDR/AV 제품을 우회하기 위한 회피 방법론을 포함하고 있으며, XOR을 통해 셸코드를 임의의 키로 자동 암호화하고 Visual Studio로 가져와 악성 DLL을 생성할 수 있는 템플릿 이미지를 생성합니다.

또한, SysWhispers3의 동적 시스템 콜(Dynamic Syscalls)과 수정된 어셈블리 버전을 사용하여 EDR이 탐지하는 패턴을 회피합니다. 임의의 NOP 슬레드(Nop sled)가 추가되고 레지스터가 이동됩니다. 또한, 사용자가 지정할 수 있는 다른 프로세스에 셸코드를 주입하기 위해 얼리 버드 인젝션(Early Bird Injection)이 사용되며, 하드디스크 확인 및 디버깅 여부 확인과 같은 샌드박스 회피 메커니즘이 포함됩니다. 마지막으로 로더에는 웨이티블 타이머(Waitable Timer)를 사용하여 셸코드 실행을 지연시키는 타이밍 공격(Timing attack)이 적용됩니다.

이 도구는 EDR/AV 제품을 우회하고 대상 시스템에서 임의 코드를 실행하는 데 효과적인 것으로 테스트되었습니다.

업데이트된 버전의 Chimera Unleashed는 정적 분석 및 동적 분석 모두를 회피하는 데 있어 상당한 발전을 보여주었으며, 특히 Microsoft 365의 EDR(Endpoint Detection and Response) 시스템과 관련하여 두드러집니다. 이 도구의 사이드로딩 기술은 OneDrive와 같은 잘 알려진 바이너리에 적용되었을 때도 탐지를 성공적으로 회피했습니다. 그러나 사이드로딩 측면은 탐지되지 않았지만, 도구에서 사용된 얼리 버드 인젝션 프로세스는 EDR 시스템에 의해 식별되었습니다. 이는 도구의 전반적인 은밀성 능력을 향상시키기 위한 추가 개선 영역을 강조합니다.

도구 사용법


주요 업데이트 및 기능:

  • 구조 개편: 향후 개발 용이성과 유지보수성을 높이기 위해 전체 프로그램이 재구성되었습니다.
  • 다형성 코드 통합: 다형성 코드를 통합하여 회피 능력을 크게 향상시키고 정적 분석에 대한 저항성을 높였습니다.
  • SysWhispers 3 통합: SysWhispers 2에서 수정된 버전의 SysWhispers 3으로 전환되었습니다. 이 업데이트는 동적 시스템 콜과 수정된 어셈블리 기술을 사용하여 EDR 시스템이 사용하는 패턴 인식 메커니즘을 우회하는 능력을 향상시킵니다.
  • AES 암호화: 셸코드를 보호하기 위해 AES 암호화를 구현하여 추가적인 보안 및 난독화 계층을 추가했습니다.
  • 얼리 버드 인젝션: 이 도구는 얼리 버드 인젝션 기술을 사용하여 대상 프로세스 내에서 더 은밀하게 코드를 실행할 수 있습니다.
  • 모듈 스톰핑(Module Stomping): 향후 추가될 예정이며, 사용자가 자신만의 코드 인젝션 기술을 도구에 구현할 수도 있습니다.

Chimera는 Python3로 작성되었으며 추가적인 종속성을 설치할 필요가 없습니다.

Chimera는 현재 Microsoft Teams 또는 Microsoft OneDrive의 두 가지 DLL 옵션을 지원합니다.

사용자는 Microsoft Teams에서 누락된 DLL인 userenv.dll을 생성하여 다음 폴더에 삽입할 수 있습니다:
⁠%USERPROFILE%/Appdata/local/Microsoft/Teams/current

Microsoft OneDrive의 경우, 스크립트는 버전 DLL(version DLL)을 사용합니다. 이는 예를 들어 onedriveupdater.exe 바이너리에서 누락된 DLL이기 때문에 일반적입니다.

명령줄 인수

Chimera Unleashed는 명령줄 인수 파싱을 위해 argparser를 사용합니다. 사용 가능한 인수는 다음과 같습니다:

  • --raw 또는 -r: 셸코드가 포함된 파일 경로. 필수.
  • --path 또는 -p: C 템플릿 파일을 출력할 경로. 필수.
  • --pname 또는 -n: 셸코드를 주입할 프로세스 이름. 필수.
  • --dexports 또는 -d: 사용할 DLL 내보내기(Exports) 지정 ('teams' 또는 'onedrive'). 필수.
  • --enc 또는 -e: 선호하는 암호화 방식 지정 (XOR / AES). 필수.
  • --inj 또는 -i: 선호하는 인젝션 기술 지정 (EB / MS). 필수.
  • --rshell 또는 -s: [선택 사항] 셸코드 변수 이름을 고유한 이름으로 변경. 기본값은 'encoded_shell'.
  • --rxor 또는 : [선택 사항] XOR 암호화 이름을 고유한 이름으로 변경. 기본값은 'do_xor'.

사용 예시: python Chimera.py --raw <셸코드_경로> --path <출력_경로> --pname <프로세스_이름> --dexports <내보내기_파일> --enc AES --inj EB --rshell my_shellcode

유용한 참고 사항

컴파일 프로세스가 완료되면 OneDrive용 version.dll 또는 Microsoft Teams용 userenv.dll 중 하나가 포함된 DLL이 생성됩니다. 그런 다음 원래 DLL의 이름을 변경해야 합니다.

예를 들어, 원래 userenv.dll은 tmpB0F7.dll로, 원래 version.dll은 tmp44BC.dll로 이름을 변경해야 합니다. 또한, 프록시 DLL의 이름을 기본 스크립트 이름 대신 DLL 내보내기 소스 코드를 수정하여 원하는 대로 변경할 수도 있습니다.

code.h 파일에는 셸코드가 포함되어 있습니다.

Visual Studio 프로젝트 설정


1단계: DLL 템플릿으로 새 Visual Studio 프로젝트 만들기

  1. Visual Studio를 실행하고 "Create a new project"를 클릭하거나 "File" -> "New" -> "Project"로 이동합니다.
  2. 프로젝트 템플릿 창에서 왼쪽에서 "Visual C++"를 선택합니다.
  3. 사용 가능한 템플릿에서 "Empty Project"를 선택합니다.
  4. 프로젝트에 적합한 이름과 위치를 지정하고 "OK"를 클릭합니다.
  5. 프로젝트 속성 창에서 "Configuration Properties" -> "General"로 이동하여 "Configuration Type"을 "Dynamic Library (.dll)"로 설정합니다.
  6. 원하는 대로 다른 프로젝트 설정을 구성하고 프로젝트를 저장합니다.

2단계: Visual Studio 프로젝트에 파일 가져오기

  1. 필요한 이미지가 포함된 "chimera_automation" 폴더를 찾습니다.
  2. 폴더를 열고 다음 파일을 확인합니다: main.c, syscalls.c, syscallsstubs.std.x64.asm.
  3. Visual Studio의 "Solution Explorer" 패널에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "Add" -> "Existing Item"을 선택합니다.
  4. 각 파일(main.c, syscalls.c, syscallsstubs.std.x64.asm)의 위치로 이동하여 하나씩 선택하고 "Add"를 클릭하여 프로젝트로 가져옵니다.
  5. 프로젝트 디렉터리에 "header_files" 폴더가 없으면 생성합니다.
  6. "chimera_automation" 디렉터리의 "header_files" 폴더에서 "syscalls_mem.h" 헤더 파일을 찾습니다.
  7. Visual Studio의 "Solution Explorer" 패널에서 "header_files" 폴더를 마우스 오른쪽 버튼으로 클릭하고 "Add" -> "Existing Item"을 선택합니다.
  8. "syscalls_mem.h"의 위치로 이동하여 선택하고 "Add"를 클릭하여 프로젝트로 가져옵니다.

3단계: 빌드 사용자 지정

  1. 프로젝트 속성 창에서 "Configuration Properties" -> "Build Customizations"로 이동합니다.
  2. "Build Customizations" 버튼을 클릭하여 빌드 사용자 지정 대화 상자를 엽니다.

4단계: MASM 활성화

  1. 빌드 사용자 지정 대화 상자에서 "masm" 옆의 확인란을 선택하여 활성화합니다.
  2. "OK"를 클릭하여 빌드 사용자 지정 대화 상자를 닫습니다.

5단계:

  1. 어셈블리 파일을 마우스 오른쪽 버튼으로 클릭 -> 속성에서 다음을 선택합니다.
  2. Exclude from build -> No
  3. Content -> Yes
  4. Item type -> Microsoft Macro Assembler

최종 프로젝트 설정

컴파일러 최적화


1단계: 최적화 변경

  1. Visual Studio에서 Project -> properties를 선택합니다.
  2. C/C++ -> Optimization으로 이동하여 다음과 같이 변경합니다.

2단계: 디버그 정보 제거

  1. Visual Studio에서 Project -> properties를 선택합니다.
  2. Linker -> Debugging -> Generate Debug Info -> No

기여자

원래 기여자:

  • George Sotiriadis
    • 최초 릴리스 및 개념 제공.
    • 업데이트 버전의 코드 리팩토링.
    • 업데이트 버전에서 수정된 SysWhispers3 사용.

기여자:

  • Efstratios Chatzoglou
    • 업데이트 버전에서 다형성 코드, 난독화기, AES 암호화 추가.
    • 코드 리팩토링 및 추가 개발 지원.

책임 부인


적용 가능한 법률이 허용하는 최대 범위 내에서, 본인(George Sotiriadis) 및/또는 내 저장소에 콘텐츠를 제출한 관련자는 어떠한 간접적, 부수적, 특별, 결과적 또는 징벌적 손해, 또는 직접적 또는 간접적으로 발생한 이익 또는 수익 손실, 또는 데이터, 사용, 평판, 기타 무형 자산의 손실에 대해 책임을 지지 않습니다. 이는 (i) 본 리소스에 대한 액세스 및/또는 액세스 불능; (ii) 본 리소스에서 참조된 제3자의 모든 행위 또는 콘텐츠(비방, 공격적 또는 불법적인 행위 또는 다른 사용자 또는 제3자의 행위 포함); (iii) 본 리소스에서 획득한 모든 콘텐츠로 인해 발생합니다.

참고 자료


https://www.ired.team/offensive-security/code-injection-process-injection/early-bird-apc-queue-code-injection

https://evasions.checkpoint.com/

https://github.com/Flangvik/SharpDllProxy

https://github.com/jthuraisamy/SysWhispers2

https://systemweakness.com/on-disk-detection-bypass-avs-edr-s-using-syscalls-with-legacy-instruction-series-of-instructions-5c1f31d1af7d

https://github.com/Mr-Un1k0d3r

도구 다운로드
-x
  • --rkey 또는 -k: [선택 사항] 키 변수 이름을 고유한 이름으로 변경. 기본값은 'key'.
  • --rsleep 또는 -z: [선택 사항] 실행 중 포함될 총 슬립 시간(초). 기본값은 4000.
  • --size 또는 -f: [선택 사항] 정크 데이터의 파일 크기(KB). 0은 비활성화, 1은 임의 파일 크기. 기본값은 0.