은닉된 코드 실행
**Hunt & Hackett**는 Windows에서 코드 실행을 은닉하는 공격 기법을 설명하는 도구 세트와 기술 문서를 제공합니다. 여기서는 이러한 기법의 작동 방식에 대한 설명, 탐지에 대한 조언, 탐지 범위를 테스트하기 위한 샘플 소스 코드를 얻을 수 있습니다.
내용
이 저장소는 Windows 내부 메커니즘을 광범위하게 사용하는 두 가지 공격 기법 클래스를 다루며, 이를 탐지하기 위한 제안과 도구를 제공합니다:
프로젝트의 핵심 가치:
- 체계적인 접근. 이 저장소는 단순한 도구 모음이나 외부 리소스 링크 이상의 것을 포함합니다. 각 주제는 기본 개념에 대한 상세한 설명을 제공하며, 각 특정 사례는 일반적인 범주로 분류됩니다.
- 개념 증명 도구. 문서에는 설명된 기능을 실제로 사용하는 방법을 보여주는 C 언어 예제 프로젝트가 함께 제공됩니다.
- 초보자부터 전문가까지. 우리가 설명하는 개념을 이해하기 위해 사이버 보안 전문가일 필요는 없습니다. 그러나 해당 분야의 전문가라도 세부 사항과 함정에 대한 주의 덕분에 이 콘텐츠가 가치 있고 교육적이라고 느낄 것입니다.
구현
이 프로젝트의 마지막 독특한 특징은 샘플 전반에 걸쳐 Native API를 광범위하게 사용한다는 점입니다. 이 선택의 동기는 다음과 같습니다:
- 기능. 가장 고급 기법(예: Process Tampering)에 필요한 일부 작업은 다른 API를 통해 노출되지 않습니다.
- 제어. 운영 체제와의 가장 낮은 수준의 상호 작용이므로 동작에 대한 최대 제어를 제공합니다. Win32 API는 Native API 위에 구현되므로, 전자로 가능한 모든 것은 후자로도 가능합니다.
- 가용성. ntdll.dll에 의해 노출되므로 Native API는 시스템 프로세스를 포함한 모든 프로세스에서 사용할 수 있습니다.
- 일관성. 이 API가 노출하는 인터페이스는 매우 일관적입니다. 기본 설계 선택을 학습하면 API 이름만으로 대부분의 함수 프로토타입을 올바르게 예측하는 것이 가능해집니다.
- 후킹 저항성. Native API를 사용할 때 사용자 모드 후크를 제거하거나 우회하는 것이 훨씬 쉬워지며, 보안 소프트웨어를 부분적으로 무력화합니다. 패치될 수 있는 하위 수준 라이브러리가 없기 때문에, 후크 해제는 ntdll.dll의 두 번째 인스턴스를 로드하고 호출을 거기로 리디렉션하는 것만큼 간단해집니다.
컴파일 참고사항
샘플 코드는 PHNT 프로젝트에서 제공하는 Native API 헤더를 사용합니다. 이 종속성을 가져오려면 git clone --recurse-submodules 명령을 사용하여 저장소를 복제하십시오. 또는 저장소를 복제한 후 git submodule update --init을 사용할 수 있습니다.
저장소에 포함된 프로젝트를 빌드하려면 최신 버전의 Windows SDK가 필요합니다. Visual Studio를 사용하는 경우 내장된 SDK 설치를 참조하십시오. 또는 EWDK의 독립 실행형 빌드 환경을 사용할 수도 있습니다. 모든 도구를 한 번에 컴파일하려면 MSBuild AllTools.sln /t:build /p:configuration=Release /p:platform=x64를 사용하십시오.