
Firewall de RPC para Windows que audita, detecta y bloquea llamadas a procedimientos remotos maliciosas para prevenir movimiento lateral, reconocimiento y explotación de ataques basados en RPC como DCSync y ZeroLogon.
Consulte nuestra publicación del blog sobre RPC Firewall o nuestra charla de BlackHat para comprender mejor RPC, los ataques RPC y la solución: RPC Firewall.
Únase a nuestro espacio de trabajo de la comunidad Slack de |Zero| Labs para cualquier pregunta, problema o simplemente para dar un grito.
Nos encantaría saber de usted también por correo electrónico (si es ese tipo de persona). Contáctenos en [email protected]
El siguiente tutorial muestra la instalación y configuración básica de RPC Firewall, así como una demostración de cómo protege contra varios ataques basados en RPC.
RPC es el mecanismo subyacente que se utiliza para numerosas técnicas de movimiento lateral, reconocimiento, ataques de retransmisión, o simplemente para explotar servicios RPC vulnerables.
¿Ataque DCSync? sobre RPC. ¿DCOM remoto? sobre RPC. ¿WMIC? sobre RPC. ¿SharpHound? sobre RPC. ¿PetitPotam? sobre RPC. ¿PsExec? sobre RPC. ¿ZeroLogon? sobre RPC... bueno, ya se hace una idea :)
A lo largo de este documento, utilizaremos los siguientes términos:
Se puede utilizar para auditar todas las llamadas RPC remotas. Al ejecutar cualquier herramienta de ataque remota, verá qué UUID y Opnums de RPC se llamaron de forma remota.
Vea un ejemplo de configuración aquí.
Cuando la Configuración de RPCFW está configurada para auditar, los eventos se escriben en el Registro de Eventos de Windows. Los eventos de RPC Filter se escriben en el registro de seguridad, con el ID de evento 5712. Los registros de RPC Firewall se escriben en Aplicación/RPCFW.
Los usuarios pueden reenviar estos registros a su SIEM y usarlos para crear líneas de base del tráfico RPC remoto para varios servidores. Una vez que se audita una llamada RPC anormal, úsela para activar una alerta para su equipo del SOC.
Integramos varias reglas Sigma que se pueden usar para detectar actividades y ataques RPC inusuales.
La Configuración de RPCFW se puede configurar para bloquear y auditar solo las llamadas RPC potencialmente maliciosas. Todas las demás llamadas RPC no se auditan para reducir el ruido y mejorar el rendimiento.
Una vez que se detecta una llamada RPC potencialmente maliciosa, se bloquea y se audita. Esto podría usarse para alertar a su equipo del SOC, mientras mantiene sus servidores protegidos.
Para complementar la protección, puede usar las capacidades de filtrado RPC, que también son compatibles a través de RpcFwManager.exe.
Un ejemplo de dicha configuración se puede encontrar aquí.
Se compone de 3 componentes:
Si bien hay ventajas y desventajas al usar cada método, hay un par de beneficios importantes al usar RPC Firewall que requieren atención especial. Estos son:
Por otro lado, RPC Filters son excelentes para permitir o denegar en masa UUID completos, ya que lo hacen sin ningún problema.
Antes de ejecutar cualquier comando, se recomienda verificar el estado de la implementación. Esto se hace emitiendo el comando '/status':
RpcFwManager.exe /status
Esto mostrará el estado tanto de RPC Firewall como de RPC Filters. Esto generará información detallada sobre el estado de la instalación y también el estado de ejecución de la implementación.
Casi todos los comandos pueden tener el sufijo fw o flt al final. Esto le indica a RPCFW Manager si el comando se aplica a RPC Firewall ('fw'), RPC Filters ('flt') o ambos cuando no se usa ningún sufijo.
Realice la instalación de la función relevante (RPC Filters / RPC Firewall / ambas).
Asegúrese de que el visor de eventos esté cerrado durante la instalación/desinstalación. Además, es una buena práctica detener y desinstalar antes de la instalación, para asegurarse de que no haya versiones anteriores instaladas.
RpcFwManager.exe /stop
RpcFwManager.exe /uninstall
RpcFwManager.exe /install
La desinstalación hace lo contrario. También aquí es una buena práctica asegurarse de que el servicio esté detenido antes de la desinstalación.
RpcFwManager.exe /stop
RpcFwManager.exe /uninstall
RPC Filters, por su naturaleza, se aplican a todo el sistema, a cualquier servidor RPC. La aplicación de dichos filtros también es persistente entre reinicios. Cualquier proceso nuevo o antiguo estará protegido por RPC Filters, según la Configuración de RPCFW.
RPC Firewall se inyecta y protege cualquier proceso de servidor RPC que esté escuchando llamadas RPC remotas. Esto se hace inyectando RPC Firewall en procesos que cargan RPCRT4.DLL (el tiempo de ejecución de RPC). Una vez cargado, RPC Firewall detectará si el servidor RPC está escuchando llamadas RPC remotas. Si no, se descarga a sí mismo. Si el proceso es un servidor RPC válido, el rpcFirewall comienza a auditar y monitorear las llamadas RPC entrantes, según la Configuración de RPCFW.
El método recomendado para proteger los servicios RPC es usar el comando '/start'. Esto inicia el servicio de RPC Firewall (para 'fw' o sin sufijo), y crea RPC Filters (para 'flt' o sin sufijo).
RpcFwManager.exe /start
También es posible usar RPC Firewall de forma ad-hoc, para proteger procesos específicos. Esto no iniciará el servicio de RPC Firewall y no persistirá entre reinicios.
Para proteger un solo proceso por ID de proceso (PID):
RpcFwManager.exe /start pid <pid>
Para proteger un solo proceso por nombre:
RpcFwManager.exe /start process <nombre del proceso>
Para detener la protección, simplemente emita el comando '/stop' con el sufijo apropiado (no es posible detener la protección para un proceso específico).
RpcFwManager.exe /stop
Según el sufijo utilizado ('fw' o 'flt' o ninguno), esto detendrá el servicio de RPC Firewall y descargará el dll de RPC Firewall de todos los procesos. Para RPC Filters, eliminará todos los filtros generados por el RPCFW Manager.
Una vez iniciado, el RPC Firewall persistirá entre reinicios. RPC Filters también son persistentes.
El RPCFW Manager busca un archivo RpcFw.conf, en el mismo directorio del ejecutable. Este archivo utiliza las siguientes opciones de configuración:
Importante: Cada línea de configuración debe tener el prefijo 'fw:' o 'flt:' para indicar si la línea se aplica para RPC Firewall o RPC Filter.
| Nombre del Parámetro | Explicación | Soportado por ... |
|---|---|---|
| opnum: | Coincide con un opnum de RPC | RPC Firewall |
| verbose: | Puede ser true o false. Cuando es true, genera información de depuración para llamadas RPC específicas (por defecto false) | RPC Firewall |
| prot: | Coincide con el protocolo utilizado con cualquiera de las constantes de secuencia de protocolo | tanto RPC Firewall como Filters |
| addr: | Coincide con una dirección IP remota (IPv4 o IPv6, incluyendo CIDR) | RPC Firewall y parcialmente por RPC Filters, lea más aquí |
| uuid: | Coincide con un uuid específico | tanto RPC Firewall como Filters |
| action: | Puede ser allow o block (por defecto allow) | tanto RPC Firewall como Filters |
| audit: | Puede ser true o false. Controla si los eventos se escriben en el registro RPCFW (por defecto false) | tanto RPC Firewall como Filters |
| sid: | Coincide un usuario autenticado con un identificador de seguridad. Puede ser un usuario o grupo específico. | tanto RPC Firewall como Filters |
Para ver más "cosas" relacionadas con RPC, hay un comando show. Por ahora, solo muestra procesos protegidos, que no pueden protegerse con el módulo de firewall RPC.
RpcFwManager.exe /show
El orden de configuración es importante, ya que la primera coincidencia determina el resultado de la llamada RPC.
Por ejemplo, el siguiente fragmento de configuración protegerá un DC de un DCSync usando RPC Firewall. Lo hace habilitando el opnum 3 "peligroso" DRSGetNCChanges del UUID MS-DRSR solo desde otros controladores de dominio.
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
Siempre que cambie la configuración, debe notificar a rpcFirewall.dll mediante el comando de actualización:
RpcFwManager.exe /update
Para RPC Firewall, abra el Visor de Eventos -> Registros de Aplicaciones y Servicios -> RPCFW. Los ID de evento 1 y 2 se refieren a eventos de 'proteger' y 'desproteger'. El evento 3 audita las llamadas RPC reales. Además, agregue la columna Palabras clave. Esta columna contendría Auditoría de Éxito/Fallo, lo que implica si la llamada RPC fue bloqueada o no.
Para RPC Filters, abra el Visor de Eventos -> Seguridad -> RPCFW. Filtre por ID de evento 5712.
¡Sí! No sea tímido para hacer una solicitud de extracción.
¡También queremos esto! Comuníquese con nosotros con cualquier pensamiento, idea o problema que tenga: [email protected]
Para más detalles, consulte LICENSE.