La complejidad de las soluciones implementadas para proteger contra amenazas crecientes aumenta constantemente. Los actores maliciosos y los operadores Red Team se ven obligados a identificar y explotar nuevas deficiencias en los sistemas, adaptando sus métodos y desarrollando nuevas técnicas de ataque (TTPs). Las herramientas desarrolladas por ambos lados están diseñadas para la evasión de soluciones de seguridad como los EDR.
Objetivo principal de EDRSilencer
Mantener la operación fuera del radar del Blue Team es vital, ya que su detección supondría la obtención de indicadores de compromiso (IOC) por parte del equipo defensor. Se presenta una técnica que difiere del resto. A diferencia de las herramientas o técnicas cuyo objetivo es la ejecución de un shellcode malicioso, la creación de persistencia o el movimiento lateral, esta herramienta se categoriza como de apoyo.
Funcionamiento y mecanismos
El propósito principal de EDRSilencer es silenciar las alertas generadas por un agente EDR al detectar actividad maliciosa, impidiendo que la notificación llegue a la central y alerte al Blue Team. EDRSilencer se integra en la Windows Filtering Platform (WFP), que es un conjunto de servicios de APIs que permiten la gestión y monitorización del tráfico de red.
EDRSilencer realiza una acción similar al funcionamiento que un firewall podría llegar a tener, bloqueando las comunicaciones salientes de un proceso. La herramienta verifica el nivel de integridad del proceso en ejecución para confirmar que posee un nivel High o SYSTEM, ya que es necesario contar con privilegios de administrador.
Identificación y obtención de información
EDRSilencer identifica los procesos a silenciar mediante un array compuesto por nombres de procesos generados por agentes de diferentes EDRs, entre ellos MicrosoftDefender, ElasticEDR, SentinelOne, FortiEDR, CortexEDR y otros. La herramienta activa el flag SeDebugPrivilege en el token de acceso mediante la función AdjustTokenPrivileges.
Para obtener el identificador del proceso, la herramienta obtiene el identificador necesario para la implementación del filtro WFP, denominado como AppId, generado a partir de la ruta al ejecutable. La obtención de la ruta es una fase crítica, ya que en múltiples ocasiones esta función suele estar hookeada. Por ello, la herramienta implementa una aproximación diferente para la obtención del AppId.