
합법적인 WFP 콜아웃 드라이버를 활용하여 EDR 에이전트가 텔레메트리를 전송하지 못하도록 방지
공동 저자: @oops4git(https://github.com/oops4git)
EDRPrison은 합법적인 WFP 콜아웃 드라이버인 WinDivert를 활용하여 EDR 시스템을 효과적으로 무력화합니다. Shutter, FireBlock, EDRSilencer와 같은 도구에서 영감을 얻은 이 프로젝트는 네트워크 기반 우회 기술에 중점을 둡니다. 이전 도구들과 달리 EDRPrison은 내장 WFP에만 의존하는 대신 외부의 합법적인 WFP 콜아웃 드라이버를 설치하고 로드합니다. 또한 EDR 프로세스 또는 해당 실행 파일과 직접 상호작용하지 않고 런타임 필터를 동적으로 추가하여 EDR 프로세스의 아웃바운드 트래픽을 차단합니다.
요약하자면, EDRPrison은 다음과 같은 주요 기능과 역량을 보유하고 있습니다.
더 자세한 기술적 내용은 다음 문서를 참조하세요: https://winslow1984.com/books/malware/page/edrprison-borrow-a-legitimate-driver-to-mute-edr-agent
EDRPrison을 성공적으로 실행하려면 상승된 권한이 필요합니다. EDRPrison은 다음 세 가지 구성 요소로 이루어져 있습니다.
EDRPrison은 이전 도구들보다 몇 가지 향상 및 개선된 기능을 제공하여 네트워크 기반 EDR 우회를 위한 더욱 강력하고 은밀한 도구입니다.
제게 주어진 리소스로 인해 지금까지는 물리적 서버에서 Elastic Endpoint와 Microsoft Defender for Endpoint(MDE)를 대상으로 EDRPrison을 테스트했습니다.
Elastic Endpoint 및 MDE 관련 프로세스는 소스 코드에 하드코딩되어 있습니다. 테스트 중 보안 시스템은 메인 프로그램과 WinDivert를 모두 탐지하지 못했습니다.
Mimikatz와 같은 몇 가지 일반적인 악성코드 샘플을 테스트했습니다. 인터넷 연결이 없더라도 EDR 시스템은 해시 기반 서명과 같은 기본 탐지 기능을 유지하므로 이러한 샘플은 여전히 탐지될 수 있습니다. 악성코드 실행 후 패킷 수가 증가했으며, 이는 해당 패킷에 알림 데이터가 포함되어 있음을 나타냅니다.

일부 탐지는 로컬에서 발생하지만 EDR 패널에는 표시되지 않습니다. 인터넷 연결이 없으면 EDR 시스템은 머신러닝 및 클라우드 컴퓨팅과 같은 고급 기능을 활용하여 더욱 정교한 악성코드 공격을 방지할 수 없습니다.


다음 코드 조각을 수정하여 더 많은 EDR 프로세스를 하드코딩하세요.
static void initData()
{
processDictionary.TryAdd("MsMpEng.exe", 1);
processDictionary.TryAdd("MsSense.exe", 1);
processDictionary.TryAdd("SenseIR.exe", 1);
processDictionary.TryAdd("SenseNdr.exe", 1);
processDictionary.TryAdd("SenseCncProxy.exe", 1);
processDictionary.TryAdd("SenseSampleUploader.exe", 1);
processDictionary.TryAdd("elastic-endpoint.exe", 1);
processDictionary.TryAdd("elastic-agent.exe", 1);
}
다음 방법을 사용하여 EDRPrison의 사용을 탐지하거나 완화할 수 있습니다. 그러나 환경에 따라 일부 탐지는 오탐(FP)을 유발할 수 있습니다.
시스템에 WinDivert 드라이버가 이미 설치되어 있지 않은 경우, EDRPrison은 첫 실행 시 콜아웃 드라이버를 설치합니다. OS와 텔레메트리 데이터 모두 이 이벤트를 기록합니다.
EDRPrison 및 WinDivert에 의존하는 다른 프로그램은 디스크에 WinDivert64.sys와 WinDivert.dll이 존재해야 합니다. 이러한 파일을 모니터링하면 해당 프로그램을 탐지하는 데 도움이 될 수 있습니다.
WinDivertTool과 같은 도구는 현재 WFP(Windows Filtering Platform)를 사용 중인 프로세스를 탐지할 수 있습니다.

Elastic에는 보안 소프트웨어 프로세스에 대한 패킷 드롭 또는 차단 작업을 식별할 수 있는 탐지 규칙이 있으며, 이는 EDRPrison의 존재를 나타낼 수 있습니다.
WFPExplorer 도구는 관리자가 활성 WFP 세션, 등록된 콜아웃 및 필터를 검토하는 데 도움을 줍니다.




잠재적인 향후 기능으로 드라이버 설치에 대한 추가 보호 기능을 추가하여 WinDivert와 같은 드라이버의 무단 사용에 대한 보안을 더욱 강화할 수 있습니다.
레드팀 관점에서 환경의 보안 구성에 따라 앞서 언급한 탐지를 우회하기 위해 여러 전략을 사용할 수 있습니다.
환경에서 WinDivert가 악성으로 간주되는 경우, 서명된 오픈소스 대체 드라이버를 사용할 수 있습니다. 이러한 대안은 악성 사용 기록이 더 적어야 하며 패킷 인터셉트, 재주입 및 기타 조작 기술을 계속 지원해야 합니다.
승인되지 않은 외부 드라이버가 허용되지 않는 환경에서는 설치된 또는 내장 WFP 콜아웃 드라이버를 리버스 엔지니어링하는 것이 어렵지만 가능합니다. 해당 콜아웃 함수를 재사용함으로써 레드팀은 기존 드라이버를 활용할 수 있습니다. 많은 보안 소프트웨어 솔루션에는 용도 변경이 가능한 자체 WFP 콜아웃 드라이버가 포함되어 있습니다.
인터셉트된 패킷을 차단하거나 드롭하는 대신 레드팀은 패킷을 리다이렉트하거나 프록시할 수 있습니다. 이 방법은 패킷 드롭 또는 차단 작업에 초점을 맞춘 탐지 규칙을 피하면서도 EDR 프로세스에 대한 원하는 간섭을 달성할 수 있습니다.
다음 리소스들은 연구 중에 저에게 큰 영감과 도움을 주었습니다. 모든 작성자에게 감사를 표합니다: