FalconHound: Una Herramienta Multiusos para el Equipo Azul

FalconHound está diseñado para ser utilizado junto con un SIEM u otra herramienta de agregación de registros. Una de las dificultades de BloodHound es que es una instantánea en el tiempo. FalconHound incluye funcionalidades que se pueden utilizar para mantener actualizado un gráfico de su entorno. Esto le permite ver su entorno tal como es AHORA, especialmente útil para entornos en constante cambio.

Uno de los aspectos más desafiantes para BloodHound es reunir las membresías locales de grupos y la información de sesión. Como equipo azul, tenemos esta información disponible en nuestros registros. FalconHound se puede utilizar para recopilar esta información y agregarla al gráfico de BloodHound, permitiendo que BloodHound la utilice. Esto es solo un ejemplo de cómo FalconHound puede ser utilizado. Puede usarse para recopilar cualquier información que tenga en sus registros o herramientas de seguridad y agregarla al gráfico de BloodHound.

Además, el gráfico se puede utilizar para activar alertas o generar listas de enriquecimiento. Por ejemplo, si se agrega un usuario a un grupo específico, FalconHound puede consultarse en la base de datos del gráfico para encontrar la ruta más corta a un grupo sensible o de alto privilegio. Si hay una ruta, esto se puede registrar en el SIEM o utilizarse para activar una alerta.

Otros ejemplos de dónde se puede utilizar FalconHound:

  • Agregar, eliminar o cronometrar sesiones en el gráfico, basado en eventos de inicio y cierre de sesión.
  • Marcar usuarios y computadoras como comprometidos en el gráfico cuando tienen un incidente en Sentinel o MDE.
  • Agregar información CVE y si hay un exploit público disponible al gráfico.
  • Todo tipo de actividades de Azure.
  • Recalcular el camino más corto a grupos sensibles cuando se agrega un usuario a un grupo o tiene un nuevo rol.
  • Agregar nuevos usuarios, grupos y computadoras al gráfico.
  • Generar listas de enriquecimiento para Sentinel y Splunk, por ejemplo, usuarios Kerberoastable o usuarios con propiedades de ciertas entidades.

Las posibilidades son infinitas aquí. Por favor, agregue más ideas al rastreador de problemas o envíe una solicitud de extracción.

Fuentes y objetivos de datos admitidos

FalconHound está diseñado para utilizarse con BloodHound. Actualmente, FalconHound admite las siguientes fuentes y/o objetivos de datos:

  • Azure Sentinel
  • Listas de observación de Azure Sentinel
  • Splunk
  • Microsoft Defender for Endpoint
  • Neo4j
  • MS Graph API (en una etapa temprana)
  • Archivos CSV

Se planea admitir más fuentes y objetivos de datos en el futuro. En este momento, FalconHound solo admite la base de datos Neo4j para BloodHound. El soporte para la API de BH CE y BHE está en desarrollo activo.

Instalación

Dado que FalconHound está escrito en Go, no se requiere instalación. Simplemente descargue el binario de la sección de versiones y ejecútelo. Hay binarios compilados disponibles para Windows, Linux y MacOS. Antes de ejecutarlo, es necesario crear un archivo de configuración.

Requisitos:

  • BloodHound, o al menos la base de datos Neo4j por ahora.
  • Un SIEM u otra herramienta de agregación de registros. Actualmente, se admiten Azure Sentinel y Splunk.
  • Credenciales para cada punto de conexión al que desee acceder, con los permisos requeridos.

Configuración

FalconHound se configura utilizando un archivo YAML. Cada sección del archivo de configuración se explica a continuación.

Uso

Ejecución predeterminada:

Para ejecutar FalconHound, simplemente ejecute el binario y agregue el parámetro -go para que ejecute todas las consultas en la carpeta de acciones.

./falconhound -go

Listar todas las acciones habilitadas:

Para listar todas las acciones habilitadas, use el parámetro -actionlist. Esto se debe utilizar en combinación con el parámetro -go.

./falconhound -actionlist -go

Ejecutar con un conjunto selecto de acciones:

Para ejecutar un conjunto selecto de acciones, use el parámetro -ids, seguido de uno o una lista de identificaciones de acciones separadas por comas. Esto se debe utilizar en combinación con el parámetro -go.

./falconhound -ids action1,action2,action3 -go

Ejecutar con un archivo de configuración diferente:

Por defecto, FalconHound buscará un archivo de configuración en el directorio actual. También puede especificar un archivo de configuración usando la bandera -config.

./falconhound -go -config /path/to/config.yml

Ejecutar con una carpeta de acciones diferente:

Por defecto, FalconHound buscará la carpeta de acciones en el directorio actual. También puede especificar una carpeta diferente usando la bandera -actions-dir.

./falconhound -go -actions-dir /path/to/actions

Ejecutar con credenciales desde un almacén de claves:

Por defecto, FalconHound utilizará las credenciales en el archivo de configuración config.yml (o uno cargado personalizado). Al establecer la bandera -keyvault, FalconHound obtendrá el almacén de claves desde la configuración y recuperará todas las claves desde allí.

./falconhound -go -keyvault

Acciones

Las acciones son el núcleo de FalconHound. Son las consultas que FalconHound ejecutará. Se escriben en el lenguaje nativo de la fuente y el destino y se almacenan en la carpeta de acciones.

Estructura de la carpeta de acciones: La carpeta de acciones se divide en subdirectorios por fuente de consulta. Todos los directorios se procesarán de manera recursiva y todos los archivos YAML se ejecutarán en orden alfabético. Las acciones de Neo4j deben procesarse al final, ya que su salida depende de otras fuentes de datos para tener actualizada la base de datos del gráfico.

Archivos de acción: Todos los archivos son archivos YAML. El archivo YAML contiene la consulta, metadatos y los objetivos de la información consultada. Hay un archivo de plantilla disponible en la carpeta raíz.

Enabled: true
Debug: false
Query: | 
  MATCH (x:Computer {name:$Computer}) MATCH (y:User {objectid:$TargetUserSid}) 
  MERGE (x)-[r:HasSession]->(y) SET r.since=$Timestamp SET r.source='falconhound'
Parameters: 
  Computer: Computer 
  TargetUserSid: TargetUserSid 
  Timestamp: Timestamp
Targets:
  - Name: Neo4j
    Enabled: true
    Query: |
      MATCH (x:Computer {name:$Computer}) MATCH (y:User {objectid:$TargetUserSid}) 
      MERGE (x)-[r:HasSession]->(y) SET r.since=$Timestamp SET r.source='falconhound'
    Parameters:
      Computer: Computer 
      TargetUserSid: TargetUserSid 
      Timestamp: Timestamp

Campo Enabled:

Como su nombre indica, se utiliza para habilitar o deshabilitar una acción. Si se establece en false, la acción no se ejecutará.

Enabled: true

Campo Debug:

Se utiliza para habilitar o deshabilitar el modo de depuración para una acción. Si se establece en true, la acción se ejecutará en modo de depuración.

Debug: false

Campo Query:

El campo Query es la consulta que se ejecutará contra la fuente. Puede ser una consulta KQL, una consulta SPL o una consulta Cypher según su plataforma de origen. Es importante mantener la consulta lo más exacta posible y devolver solo los campos que necesita.

Query: |
  MATCH (x:Computer {name:$Computer}) MATCH (y:User {objectid:$TargetUserSid}) 
  MERGE (x)-[r:HasSession]->(y) SET r.since=$Timestamp SET r.source='falconhound'

Campo Targets:

Cada objetivo tiene varias opciones que se pueden configurar. Todos los objetivos tienen los campos Name y Enabled. El campo Name se utiliza para identificar el objetivo, y el campo Enabled se utiliza para habilitar o deshabilitar el objetivo.

Targets:
  - Name: Neo4j
    Enabled: true
    Query: |
      MATCH (x:Computer {name:$Computer}) MATCH (y:User {objectid:$TargetUserSid}) 
      MERGE (x)-[r:HasSession]->(y) SET r.since=$Timestamp SET r.source='falconhound'
    Parameters:
      Computer: Computer 
      TargetUserSid: TargetUserSid 
      Timestamp: Timestamp

Extensiones al gráfico

Relación: HadSession

Una vez que una sesión ha terminado, en lugar de eliminarla del gráfico, se agregará como una relación entre la computadora y el usuario. La relación se llamará HadSession. La relación tendrá propiedades como till, source y reason.

{ "till": "2021-08-31T14:00:00Z", "source": "falconhound", "reason": "logoff" }

Propiedades adicionales:

FalconHound agregará las siguientes propiedades a los nodos en el gráfico:

Para la Computadora:

  • ‘exploitable’: true/false
  • ‘exploits’: lista de CVEs
  • ‘exposed’: true/false
  • ‘ports’: lista de puertos accesibles desde Internet
  • ‘alertids’: lista de identificaciones de alertas

Gestión de credenciales

Las formas actualmente admitidas de proporcionar a FalconHound las credenciales son:

  1. A través del archivo config.yml en el disco.
  2. Secretos de KeyVault. Esto aún requiere un ServicePrincipal con secretos en el archivo YAML.
  3. Modo mixto.

Implementación

FalconHound está diseñado para ejecutarse como una tarea programada o trabajo cron. Esto le permitirá ejecutarlo regularmente y mantener actualizado su gráfico, alertas y enriquecimientos. Dependiendo de la cantidad de acciones que tenga habilitadas, la cantidad de datos que está procesando y la cantidad de datos que está escribiendo en el gráfico, esto puede llevar un tiempo.

Todos los registros basados en consultas están construidos para ejecutarse cada 15 minutos. Si el procesamiento lleva demasiado tiempo, es posible que deba ajustar esto un poco..

Si es así, se recomienda deshabilitar ciertas acciones. También puede haber cierta superposición, por ejemplo, con las acciones de sesión. Si tiene muchas sesiones, es posible que desee desactivar las acciones de sesión para Sentinel y depender de las de MDE.

Sharphound / Azurehound: Si bien FalconHound está diseñado para utilizarse con BloodHound, no reemplaza a Sharphound y Azurehound. Está diseñado para complementar la recopilación y eliminar el problema del momento en el tiempo de la colección periódica. Aún se recomienda ejecutar Sharphound y Azurehound regularmente, por ejemplo, una vez al día/semana o mes, y FalconHound cada 15 minutos.


Licencia

Este proyecto está bajo la Licencia BSD3, consulte el archivo LICENSE para más detalles. Esto significa que puede usar este software de forma gratuita, incluso en productos comerciales, siempre y cuando nos acredite por ello. No podemos ser responsables de los daños causados por este software.

Relacionado

ForEach de Javascript: Array para bucles

Como una de las estructuras de control básicas en la programación, los bucles son casi una adición diaria al código que escribimos. El bucle forEach clásico es uno de los primeros fragmentos de código que aprendemos a escribir como programadores. Si fueras un desarrollador de Javascript, sabrías que Javascript no es ajeno a la iteración a través de los elementos de una matriz o un mapa ¡SEGUIR LEYENDO!

10 Mejores alternativas de Sci-hub para descargar artículos de investigación gratis

Como sabemos, Sci-hub es un sitio web increíble con millones de artículos de investigación para todos los estudiantes universitarios y académicos. El sitio web de Sci-Hub se encarga de obtener los artículos de investigación y artículos de pago utilizando las credenciales que se filtran. La fuente de credenciales utilizada por este sitio web no está clara. Sin embargo, se supone que muchas de ellas son donadas, ¡SEGUIR LEYENDO!

10 Características Sorprendentes de Windows que Deberías Conocer en 2024

Aunque haya sido usuario de Windows durante décadas, el sistema operativo es tan amplio y complejo que siempre existen características útiles, pero menos conocidas, que podrían sorprenderte. En este sentido, he identificado diez funciones poco conocidas de Windows que pueden potenciar su eficiencia, comodidad e incluso su experiencia de uso lúdico en su PC.

¡REBAJADO!
Microsoft Surface Go 2 - Portátil 2 en 1 de 10.5 pulgadas Full HD, Wifi, Intel...
  • Procesador Dual-Core Intel Pentium Gold 4425Y (2...
  • Memoria RAM de 8 GB LPDDR3
  • Disco SSD de 128 GB
Todas estas características deberían ser compatibles tanto con Windows 10 ¡SEGUIR LEYENDO!
10 Criptomonedas con Potencial de Crecimiento de Futuro

El rumor en torno a las criptomonedas no se desvanece por mucho que existan grandes pesimistas alrededor de los malos rumores. Entonces, si consideras invertir en el mundo de las criptomonedas, deberías estar atento a las criptomonedas que se espera que tengan un buen desempeño para el resto de 2021. En los últimos tiempos, los tokens DeFi están recibiendo toda la atención y es más que ¡SEGUIR LEYENDO!

10 Empresas de robótica más importantes del mundo

Los cambios de paradigma revolucionarios debido a los desarrollos de la robótica en todo el mundo están generando nuevos puntos de vista en muchos sectores, entre ellos en los de la industria y la tecnología. Con la ayuda de la Inteligencia Artificial, la tecnología produce resultados innovadores cada segundo y el campo de la robótica define y reconfigura su uso a cada instante. Cada día que ¡SEGUIR LEYENDO!

10 Frameworks que los Desarrolladores de Software deberían Aprender 2024

Bienvenidos desarrolladores web y de software, estamos en los inicios de 2023 y es posible que muchos se esten planteado sus objetivos para lo largo del año. Con anterioridad ya he compartidos las rutas de aprendizaje para un desarrollador front-end, un desarrollador full-stack o un desarrollador back-end entre otros muchos contenidos más. En este artículo, me gustaría compartir algunos de los mejores frameworks y bibliotecas para ¡SEGUIR LEYENDO!

10 Repositorio de GitHub que todo Desarrollador Web debería conocer

GitHub es el lugar que debes buscar cuando intentas mejorar como desarrollador, toda la información que necesitas está disponible en algún repositorio que alguien ya se ha molestado en indexar. Sin embargo, la parte complicado es encontrar el repositorio más adecuado. Es fácil sentirse perdido en todos los repositorios disponibles dentro de GitHub. Para ayudarte, he elaborado una lista de 10 repositorios de GitHub que pueden ¡SEGUIR LEYENDO!

Salir de la versión móvil