
이 도구는 Windows 이벤트 로깅에서 보고되는 이벤트에 필터를 적용하기 위해 YARA를 공격적으로 사용할 수 있게 합니다.
최신 버전은 여기에서 받으세요. EvtMuteHook.dll에는 핵심 기능이 포함되어 있으며, 주입되면 모든 이벤트가 보고되도록 허용하는 임시 필터가 적용됩니다. 이 필터는 재주입 없이 동적으로 업데이트할 수 있습니다. 저는 SharpEvtMute.exe를 작성했으며, 이는 C# 어셈블리로 shad0w의 execute 또는 cobalt strike의 execute-assembly를 통해 쉽게 실행할 수 있습니다. 더 나은 shad0w 통합을 위해 C로 네이티브 버전을 작성할 예정입니다.
간단한 사용 사례는 시스템 전체에서 이벤트 로깅을 비활성화하는 것입니다. 이를 위해 다음 yara 규칙을 사용할 수 있습니다.
rule disable { condition: true }
먼저 이벤트 서비스에 후크를 주입해야 합니다.
.\SharpEvtMute.exe --Inject

이제 후크가 배치되었으므로 필터를 추가할 수 있습니다.
.\SharpEvtMute.exe --Filter "rule disable { condition: true }"

이제 모든 이벤트가 이벤트 서비스에 의해 차단됩니다.
필터는 후크를 재주입하지 않고도 동적으로 변경할 수 있습니다. 이를 통해 활성 필터를 빠르고 쉽게 업데이트할 수 있습니다.
더 복잡한 필터의 예는 다음과 같습니다. 이 필터는 sysmon이 lsass 메모리 덤프와 관련된 이벤트를 보고하지 못하도록 차단할 수 있습니다.
rule block_lsass_dump {
meta:
author = "@_batsec_"
description = "Prevent lsass dumping being reported by sysmon"
strings:
$provider = "Microsoft-Windows-Sysmon"
$image = "lsass.exe" nocase
$access = "GrantedAccess"
$type = "0x1fffff"
condition:
all of them
}
이와 같은 복잡한 규칙은 한 줄로 압축하기가 훨씬 어렵습니다. 그래서 base64로 인코딩된 규칙을 전달할 수 있는 기능을 추가했습니다.
규칙은 Linux 명령줄에서 쉽게 base64로 변환할 수 있습니다.
base64 -w 0 YaraFilters/lsassdump.yar | echo $(</dev/stdin)
그런 다음 --Encoded 플래그를 사용하여 필터로 전달할 수 있습니다.

후크를 주입할 때 SharpEvtMute.exe는 CreateRemoteThread를 호출하며, 이 호출은 후크가 배치되기 전에 이루어지므로 Sysmon에 보고됩니다. 이는 SharpEvtMute.exe의 주입 기능이 PoC로만 사용되어야 하기 때문입니다. 은밀함이 중요할 때는 이벤트 로깅 서비스에 EvtMuteHook.dll을 수동으로 주입하는 것을 권장합니다.
해당 PID는 SharpEvtMute.exe --Pid를 실행하여 찾을 수 있습니다. 후크는 C2 프레임워크(예: shad0w의 shinject)를 통해 셸코드를 수동으로 주입하여 배치할 수 있습니다(EvtMuteBin에서 make 실행).
또한 후크는 필터를 업데이트하기 위해 명명된 파이프를 사용한다는 점을 언급할 가치가 있습니다. 명명된 파이프의 이름은 EvtMuteHook_Rule_Pipe입니다(이 이름은 쉽게 변경할 수 있습니다). 이 이름을 포함하는 모든 이벤트가 자동으로 차단되도록 후크에 규칙이 하드코딩되어 있지만, 파이프가 수신 대기 중이면 여전히 IOC가 되므로 변경을 권장합니다.
유용한 필터를 만드셨다면 YaraFilters 디렉터리에 풀 리퀘스트를 보내 주세요. 모두가 혜택을 볼 수 있는 일반적인 작업을 숨기는 좋은 필터 컬렉션이 생기면 좋겠습니다.