
Брандмауэр Windows RPC, который аудирует, обнаруживает и блокирует вредоносные удалённые вызовы процедур для предотвращения горизонтального перемещения, разведки и эксплуатации атак на основе RPC, таких как DCSync и ZeroLogon.
Ознакомьтесь с нашим постом в блоге о RPC Firewall или нашим выступлением на BlackHat, чтобы лучше понять RPC, атаки на RPC и решение: RPC Firewall.
Присоединяйтесь к нашему сообществу в Slack |Zero| Labs для любых вопросов, проблем или просто чтобы высказаться.
Мы также будем рады услышать вас по электронной почте (если вы из тех людей). Свяжитесь с нами по адресу [email protected]
Следующее руководство показывает базовую установку и настройку RPC Firewall, а также демонстрацию того, как он защищает от различных атак на основе RPC.
RPC — это основной механизм, используемый для многочисленных техник горизонтального перемещения, разведки, атак-ретрансляторов или просто для эксплуатации уязвимых RPC-сервисов.
Атака DCSync? через RPC. Удаленный DCOM? через RPC. WMIC? через RPC. SharpHound? через RPC. PetitPotam? через RPC. PsExec? через RPC. ZeroLogon? через RPC... ну, вы поняли :)
В этом документе мы будем использовать следующие термины:
Может использоваться для аудита всех удаленных RPC-вызовов. Как только вы запустите любые инструменты удаленной атаки, вы увидите, какие RPC UUID и Opnums были вызваны удаленно.
Пример конфигурации см. здесь.
Когда RPCFW Configuration настроена на аудит, события записываются в Журнал событий Windows. События RPC Filter записываются в журнал безопасности с идентификатором события 5712. Журналы RPC Firewall записываются в Application/RPCFW.
Пользователи могут пересылать эти журналы в свою SIEM и использовать их для создания базовых показателей удаленного RPC-трафика для различных серверов. Как только будет зафиксирован аномальный RPC-вызов, используйте его для генерации оповещения для вашей команды SOC.
Мы интегрировали несколько правил Sigma, которые можно использовать для обнаружения необычных RPC-действий и атак.
RPCFW Configuration можно настроить на блокировку и аудит только потенциально вредоносных RPC-вызовов. Все остальные RPC-вызовы не аудитируются для снижения шума и повышения производительности.
При обнаружении потенциально вредоносного RPC-вызова он блокируется и аудитируется. Это можно использовать для оповещения вашей команды SOC, сохраняя при этом защиту ваших серверов.
Для дополнения защиты вы можете использовать возможности фильтрации RPC, которые также поддерживаются через RpcFwManager.exe.
Пример такой конфигурации можно найти здесь.
Он состоит из 3 компонентов:
Хотя у каждого метода есть свои плюсы и минусы, есть несколько основных преимуществ использования RPC Firewall, которые требуют особого внимания. Это:
С другой стороны, RPC Filters отлично подходят для массового разрешения или запрета целых UUID, так как они делают это без каких-либо проблем.
Перед выполнением любой команды рекомендуется проверить статус развертывания. Это делается с помощью команды '/status':
RpcFwManager.exe /status
Это покажет статус как RPC Firewall, так и RPC Filters. Это выведет подробную информацию о статусе установки, а также о рабочем статусе развертывания.
Почти каждая команда может иметь суффикс fw или flt в конце. Это сообщает RPCFW Manager, применяется ли команда к RPC Firewall ('fw'), RPC Filters ('flt') или к обоим, если суффикс не используется.
Выполните установку соответствующей функции (RPC Filters / RPC Firewall / обе).
Убедитесь, что просмотр событий закрыт во время установки/удаления. Также рекомендуется остановить и удалить перед установкой, чтобы убедиться, что предыдущие версии не установлены.
RpcFwManager.exe /stop
RpcFwManager.exe /uninstall
RpcFwManager.exe /install
Удаление делает обратное. Также здесь рекомендуется убедиться, что служба остановлена перед удалением.
RpcFwManager.exe /stop
RpcFwManager.exe /uninstall
RPC Filters по своей природе применяются системно к любому RPC-серверу. Применение таких фильтров также сохраняется после перезагрузки. Любой новый или старый процесс будет защищен RPC Filters в соответствии с RPCFW Configuration.
RPC Firewall внедряется и защищает любые процессы RPC-сервера, которые прослушивают удаленные RPC-вызовы. Это делается путем внедрения RPC Firewall в процессы, которые загружают RPCRT4.DLL (среда выполнения RPC). После загрузки RPC Firewall определяет, прослушивает ли RPC-сервер удаленные RPC-вызовы. Если нет, он выгружает себя. Если процесс является действующим RPC-сервером, rpcFirewall начинает аудит и мониторинг входящих RPC-вызовов в соответствии с RPCFW Configuration.
Рекомендуемый метод защиты RPC-сервисов — использование команды '/start'. Она запускает службу RPC Firewall (для 'fw' или без суффикса) и создает RPC Filters (для 'flt' или без суффикса).
RpcFwManager.exe /start
Также возможно использовать RPC Firewall в ad-hoc режиме для защиты конкретных процессов. Это не запустит службу RPC Firewall и не сохранится после перезагрузки.
Для защиты отдельного процесса по идентификатору процесса (PID):
RpcFwManager.exe /start pid <pid>
Для защиты отдельного процесса по имени:
RpcFwManager.exe /start process <process name>
Чтобы остановить защиту, просто выполните команду '/stop' с соответствующим суффиксом (невозможно остановить защиту для конкретного процесса).
RpcFwManager.exe /stop
В зависимости от используемого суффикса ('fw', 'flt' или ни одного), это остановит службу RPC Firewall и выгрузит DLL RPC Firewall из всех процессов. Для RPC Filters это удалит все фильтры, созданные RPCFW Manager.
После запуска RPC Firewall будет сохраняться после перезагрузок. RPC Filters также являются постоянными.
RPCFW Manager ищет файл RpcFw.conf в том же каталоге, что и исполняемый файл. Этот файл использует следующие параметры конфигурации:
Важно: Каждая строка конфигурации должна иметь префикс 'fw:' или 'flt:', чтобы указать, применяется ли строка для RPC Firewall или RPC Filter.
Чтобы увидеть больше RPC-связанных «вещей», существует команда show. Пока она показывает только защищенные процессы, которые нельзя защитить с помощью модуля RPC Firewall.
RpcFwManager.exe /show
Порядок конфигурации важен, так как первое совпадение определяет результат RPC-вызова.
Например, следующий фрагмент конфигурации защитит контроллер домена от атаки DCSync с помощью RPC Firewall. Это делается путем разрешения «опасного» номера операции 3 DRSGetNCChanges UUID MS-DRSR только от других контроллеров домена.
fw:uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 addr:<dc_addr1> opnum:3 action:allow
fw:uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 addr:<dc_addr2> opnum:3 action:allow
fw:uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 opnum:3 action:block
При каждом изменении конфигурации необходимо уведомить rpcFirewall.dll с помощью команды update:
RpcFwManager.exe /update
Для RPC Firewall откройте Просмотр событий -> Журналы приложений и служб -> RPCFW. Идентификаторы событий 1 и 2 относятся к событиям «защита» и «снятие защиты». Событие 3 аудитирует фактические RPC-вызовы. Также добавьте столбец «Ключевые слова». Этот столбец будет содержать «Успех аудита»/«Сбой аудита», указывая, был ли RPC-вызов заблокирован или нет.
Для RPC Filters откройте Просмотр событий -> Безопасность -> RPCFW. Отфильтруйте по идентификатору события 5712.
Да! Не стесняйтесь создавать pull request.
Мы тоже этого хотим! Пожалуйста, обращайтесь к нам с любыми мыслями, идеями или проблемами: [email protected]
Подробнее см. LICENSE.
| Имя параметра | Объяснение | Поддерживается... |
|---|
| opnum: | Сопоставление номера операции RPC | RPC Firewall |
| verbose: | Может быть true или false. Если true, выводит отладочную информацию для конкретных RPC-вызовов (по умолчанию false) | RPC Firewall |
| prot: | Сопоставление используемого протокола с любой из констант последовательности протоколов | и RPC Firewall, и Filters |
| addr: | Сопоставление удаленного IP-адреса (IPv4 или IPv6, включая CIDR) | RPC Firewall и частично RPC Filters, подробнее здесь |
| uuid: | Сопоставление конкретного UUID | и RPC Firewall, и Filters |
| action: | Может быть allow или block (по умолчанию allow) | и RPC Firewall, и Filters |
| audit: | Может быть true или false. Управляет записью событий в журнал RPCFW (по умолчанию false) | и RPC Firewall, и Filters |
| sid: | Сопоставление аутентифицированного пользователя с идентификатором безопасности. Может быть конкретный пользователь или группа. | и RPC Firewall, и Filters |