HallWatch: usermode-ловушка для indirect syscalls — 17 июня 2026 г. в 11:29:02.491
HallWatch: usermode-ловушка для indirect syscalls #windows #blue_team HallWatch — PoC usermode-детектора indirect syscalls для Windows. Вместо классического хука в начале Nt*-стаба он патчит первый байт инструкции syscall: пара 0F 05 превращается в CC 05, и любой путь, который реально доходит до этого адреса, получает EXCEPTION_BREAKPOINT. Дальше VEH ловит брейкпоинт, по заранее собранной карте экспортов ntdll понимает, какому стабу принадлежит адрес, делает проверки и переводит Context->Rip на приватный trampoline. Trampoline уже выполняет настоящий syscall и возвращает управление. За счет этого ловятся сценарии, где код не вызывает экспорт напрямую, а прыгает сразу на 0F 05: Hell's Hall, Tartarus' Gate, RecycledGate и VEH syscall. Проверки у автора практичные: return address должен вести в доверенный модуль, SSN в eax должен совпадать с SSN этого стаба, а короткий stack walk через RtlVirtualUnwind должен выглядеть как нормальный модульный стек, а не shellcode/ROP. Hell's Gate хуже ложится на INT3-подход, потому что syscall может жить в чужой RWX-странице. Для этого HallWatch отдельным worker'ом обходит executable memory через VirtualQuery, сканирует до 64 KB региона на пары 0F 05, дедуплицирует адреса и логирует уникальные находки. Автор прямо признает, что это дорогой и грубый PoC-сканер, но он покрывает свежий RWX syscall stub и shadow ntdll. Есть и второй сканер по .text модулей: он ищет 0F 05 рядом с C3, пропуская системные модули, где такие инструкции легитимны. Ограничения: usermode не решает kernel-level противника, allowlist покрывает не все Nt*-стабы, возможны integrity checks со стороны sample, а периодический scanner тратит CPU. Из мелких инженерных деталей стоит отметить ABI-ловушку: после INT3 в VEH Context->Rip указывает на следующий байт, поэтому обработчик должен опираться на ExceptionAddress, иначе trampoline стартует со смещением. Хорошая мысль здесь не в конкретном CC, а в выборе места контроля: если атакующая техника обходит пролог стаба, перехват в прологе уже не является надежной точкой наблюдения. Источник: Zypherion-Technologies/HallWatch p.s. посты выходят не часто, т.к. я в запаре. Постараюсь восстановить плотной поток постов в июле @poxek | @poxek_ai | MAX

