1.9Kпросмотров
23 октября 2024 г.
Score: 2.1K
#rpc #shell #rpcfilter Сегодня познакомимся с инструментом для выполнения кода с использованием уже имеющихся сервисов в системе - SCShell . В репе есть пример реализации на C# и Python. Принцип работы прост, но отличается от PSExec и SMBExec. При запуска указывается имя сервиса (по умолчанию XblAuthManager), далее через svcctl (интерфейс служб) заменяет его бинарь (binary path) на 'C:\windows\system32\cmd.exe /c <команда>, запускает сервис. После выполнения возвращает исходное состояние сервиса. При таком обмене атакующий не получает вывода команды, но это позволяет не трогать жесткий диск. Ключевая особенность этого инструмента в том, что всё взаимодействие с целью происходит по DCERPC, а значит событий 5145 (доступ к шаре \PIPE\svcctl) не будет. Как в итоге ловить? Для анализа трафика RPC нам необходимо, например, настроить логгирование через ETW, либо настроить RPC фильтры. Для настройки RPC фильтров необходимо включить Аудит событий RPC (в категории подробное отслеживание) и настроить сам фильтр: Предположим нас интересует фильтр на доступ к svcctl через RPC, у него uuid будет 367abb81-9844-35f1-ad32-98f038001003 (из доки MS):
rpc filter
add rule layer=um actiontype=permit audit=enable
add condition field=if_uuid matchtype=equal data=367abb81-9844-35f1-ad32-98f038001003
add filter
Сохраняем это в файл, устанавливаем фильтр через netsh:
netsh -f rpcauditrule.txt
Далее в журнале ищем события с EventId 5712, это и будут наши обращения к svcctl через RPC. При таком методе мы не можем понять к каким именно функциям было обращение, это можно обогатить через трафик, а именно через поле OpNum. Аналогично при помощи RPC Filter можно ловить и другие интерфейсы, которые используют атакующие, детали в ссылках ниже. Ссылки:
- Детальная статья по теории RPC и мониторингу: https://habr.com/ru/companies/rvision/articles/716656/
- Репа с другими сервисами RPC и их ловле: https://github.com/jsecurity101/MSRPC-to-ATTACK/