
템플릿 기반 AV/EDR 우회 프레임워크
🚩 이곳은 Inceptor의 공개 저장소입니다. 최신 버전과 업데이트를 원하시면 https://porchetta.industries/ 를 통해 지원해 주시기 바랍니다.
이 프로젝트를 후원하고 Inceptor의 최신 업데이트, 수정된 최신 이슈, 최신 기능을 받으시려면 https://porchetta.industries/ 에서 지원해 주세요.
Discord에서 함께 놀아요!
NW: 현재 템플릿 엔진을 개선하기 위해 작업 중입니다! 다음 버전을 출시하는 즉시 도구 사용, 사용자 지정 및 확장 방법에 대한 지침이 Wiki에 제공될 예정입니다.
현대 침투 테스트 및 레드 팀 공격은 종종 대상에서 코드를 실행하기 위해 일반적인 AV/EDR 장비를 우회해야 합니다. 시간이 지남에 따라 방어 체계는 더욱 복잡해지고 본질적으로 일관되게 우회하기가 더 어려워지고 있습니다.
Inceptor는 이 과정의 상당 부분을 자동화하는 데 도움이 되는 도구로, 추가적인 노력이 필요하지 않기를 바랍니다.
Inceptor는 Windows용 템플릿 기반 PE 패커로, 침투 테스터와 레드 팀원이 일반적인 AV 및 EDR 솔루션을 우회할 수 있도록 설계되었습니다. Inceptor는 사용 편의성에 중점을 두고 설계되었으며 사용자가 광범위하게 사용자 지정할 수 있습니다.
구현된 기능과 그 이유에 대한 좋은 개요를 얻으려면 다음 자료를 살펴보는 것이 유용할 수 있습니다.
Inceptor는 다양한 오픈 소스 변환기를 사용하여 기존 EXE/DLL을 쉘코드로 변환할 수 있습니다.
Inceptor는 다양한 수단을 사용하여 쉘코드를 인코딩, 압축 또는 암호화할 수 있습니다. 도구를 개발하는 동안, 저는 로더 독립적(LI) 인코딩과 로더 종속적(LD) 인코딩이라고 부르는 것 사이를 구분하기 시작했습니다.
로더 독립적 인코딩은 사용자가 선택한 템플릿(로더)에 의해 관리되지 않는 인코딩 유형입니다. 이는 일반적으로 디코딩 스텁이 템플릿의 일부가 아니라 쉘코드 자체에 포함됨을 의미합니다. Inceptor는 오픈 소스 도구 sgn을 사용하여 이러한 기능을 제공하며, 이는 페이로드를 다형성으로 만들고 일반 시그니처 탐지로 감지되지 않도록 하는 데 사용됩니다.
강력하지만, Shikata-Ga-Nai는 특정 템플릿에 적합하지 않습니다. 이러한 이유로 Inceptor는 로더가 디코딩을 처리하도록 설계된 로더 종속적 인코더도 구현합니다. 따라서 LD 인코더는 디코딩 스텁을 템플릿에 직접 설치합니다. Inceptor에 구현된 이러한 종류의 인코더는 '연결 가능'하여 함께 연결하여 페이로드를 인코딩할 수 있습니다.
인코더 체인을 사용하면 때로는 주어진 페이로드의 난독화가 개선될 수 있지만, 이 기술은 여러 디코딩 루틴을 노출시켜 방어자가 이에 대한 시그니처를 설계하는 데 도움이 될 수 있습니다. 이러한 이유로 Inceptor는 최종 아티팩트를 난독화하는 여러 방법을 제공하여 RE 과정을 강화합니다.
현재 작성 시점에서 Inceptor의 공개 버전은 다음과 같은 인코더/압축기/암호화기를 제공합니다.
Inceptor는 인코딩 체인을 정적으로 그리고 동적으로 검증할 수 있으며, 디코더의 입력/출력 유형을 정적으로 확인하고 독립적인 구현으로 구현을 동적으로 검증합니다.
사용자는 언제든지 chain-validate.py 유틸리티를 사용하여 체인을 쉽게 검증할 수 있습니다.
Inceptor는 또한 AV 우회 메커니즘을 기본적으로 구현하며, 따라서 '모듈'(플러그인) 형태로 페이로드에 AV 우회 기능을 포함할 수 있는 가능성을 제공합니다.
포함할 수 있는 플러그인은 다음과 같습니다.
Inceptor는 또한 전체 언후킹, 직접 시스템 콜 호출 및 수동 DLL 매핑과 같은 EDR 우회 메커니즘을 구현합니다. 직접 시스템 콜은 뛰어난 "DInvoke" 프로젝트를 사용하여 C#으로 구현되었으며, 이는 다시 TheWover에 의한 것입니다. C/C++에서 시스템 콜은 Jackson_T의 SysWhispers 및 SysWhispers2 프로젝트를 사용하여 구현됩니다. 또한 Inceptor는 x86 시스템 콜도 기본 지원합니다.
AV 우회 기능과 마찬가지로 이러한 기능은 모듈로 활성화할 수 있으며, 유일한 차이점은 이를 지원하는 템플릿에서 작동해야 한다는 것입니다. 지금까지 구현된 기술은 다음과 같습니다.
Inceptor는 ConfuserEx 및 Chameleon과 같은 외부 유틸리티를 사용하여 페이로드 난독화를 지원하며, LLVM-Obfuscator를 사용한 C/C++ 난독화를 지원합니다.
Inceptor의 또 다른 기능은 CarbonCopy 도구를 사용하여 결과 바이너리/DLL에 코드 서명할 수 있다는 것입니다. 일반적으로 코드 서명 인증서로 서명된 파일은 덜 엄격하게 분석됩니다. 많은 안티멀웨어 제품이 이러한 인증서를 검증/확인하지 않습니다.
전체 워크플로우는 다음과 같은 상위 수준의 단순화된 체계로 요약할 수 있습니다.

Inceptor는 Windows에서 작동하도록 설계되었습니다. update-config.py 유틸리티는 필요한 Microsoft 바이너리를 찾아 그에 따라 구성을 업데이트할 수 있습니다. Microsoft Build Tools, Windows SDK 및 Visual Studio를 설치해야 할 수 있으며, update-config.py는 필요한 종속성을 설치하는 방법을 안내합니다.
git clone --recursive https://github.com/klezVirus/inceptor.git
cd inceptor
virtualenv venv
venv\Scripts\activate.bat
pip install -r requirements.txt
cd inceptor
python update-config.py
현재 버전의 Inceptor는 간단한 명명 규칙(템플릿 이름을 변경하지 마십시오)과 사용자가 제공한 인수 집합을 사용하여 특정 템플릿을 찾습니다. 인수 중에는 로더(-t)도 있습니다. 지정하지 않으면 다음 간단한 체계에 따라 패킹할 파일의 함수로 로더가 선택됩니다.
$ python inceptor.py -hh
[*] Default Loaders
Input File Extension SpecialCondition Guessed Filetype Default Loader Default Template
0 .raw NaN Shellcode Simple Loader Classic
1 .exe .NET Dotnet Executable Donut Classic
2 .exe NaN Native Executable Pe2Shellcode PE Load
3 .dll NaN Native Library sRDI Classic
$ usage: inceptor.py [-h] [-hh] [-Z] {native,dotnet,powershell} ...
inceptor: A Windows-based PE Packing framework designed to help
Red Team Operators to bypass common AV and EDR solutions
positional arguments:
{native,dotnet,powershell}
native Native Binaries Generator
dotnet .NET Binaries Generator
powershell PowerShell Wrapper Scripts Generator
optional arguments:
-h, --help show this help message and exit
-hh Show functional table
-Z, --check Check file against ThreatCheck