Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
FalconHound — Actualizador automatizado del grafo de BloodHound para equipos azules. Enriquece las rutas de ataque de AD con datos en tiempo real de sesiones, grupos y CVE desde SIEMs, permitiendo monitoreo continuo y alertas. | Kitploit
Herramientas/GitHubGitHub/falconforceteam/falconhound
Pruebas de PenetraciónInteligencia de Amenazas
GitHubfalconforceteam/falconhound

FalconHound

Actualizador automatizado del grafo de BloodHound para equipos azules. Enriquece las rutas de ataque de AD con datos en tiempo real de sesiones, grupos y CVE desde SIEMs, permitiendo monitoreo continuo y alertas.

Ver Repositorio
82659hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Maintenance Twitter Discord Shield

FalconHound

logo


NOTA:

A partir del lanzamiento de BloodHound CE 7.0, la base de datos predeterminada se ha cambiado a Postgres. Esta versión de FalconHound todavía depende de Neo4j como base de datos predeterminada. Si deseas seguir usando FalconHound mientras ejecutas la versión más reciente de BloodHound, agrega la siguiente línea a tu archivo bloodhound.config.json.```json "graph_driver": "neo4j",

root@kitploit:~
El equipo de BloodHound mantendrá el soporte para Neo4j durante al menos un año. Dentro de este período, con suerte, habrá una gran mejora de la API o habremos implementado el soporte de PGSQL para FalconHound.

---

FalconHound es una herramienta múltiple para el equipo azul. Te permite utilizar y potenciar el poder de BloodHound de una manera más automatizada. Está diseñado para ser utilizado junto con un SIEM u otra herramienta de agregación de registros.

Uno de los aspectos desafiantes de BloodHound es que es una instantánea en el tiempo. FalconHound incluye funcionalidad que se puede utilizar para mantener un gráfico de su entorno actualizado. Esto le permite ver su entorno tal como es AHORA. Esto es especialmente útil para entornos que cambian constantemente.

Una de las relaciones más difíciles de recopilar para BloodHound son las membresías de grupos locales y la información de sesión. Como miembros del equipo azul, tenemos esta información fácilmente disponible en nuestros registros. FalconHound se puede utilizar para recopilar esta información y agregarla al gráfico, permitiendo que sea utilizada por BloodHound.

Esto es solo un ejemplo de cómo se puede usar FalconHound. Se puede usar 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 usar para activar alertas o generar listas de enriquecimiento. 
Por ejemplo, si se agrega un usuario a un grupo determinado, FalconHound se puede usar para consultar la base de datos del gráfico en busca de 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 usar para activar una alerta.

Otros ejemplos donde se puede usar FalconHound:
- Agregar, eliminar o temporizar sesiones en el gráfico, basándose 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 de CVE y si hay un exploit público disponible al gráfico.
- Todo tipo de actividades de Azure.
- Recalcular la ruta más corta 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 de, por ejemplo, usuarios Kerberoastable o usuarios con propiedad de ciertas entidades.

Las posibilidades son infinitas aquí. Por favor, agregue más ideas al rastreador de problemas o envíe un PR.

Se puede encontrar un blog que detalla más sobre por qué lo desarrollamos y algunos ejemplos de casos de uso [aquí](https://medium.com/falconforce/falconhound-attack-path-management-for-blue-teams-42adedc9cae5?source=friends_link&sk=9f64b6b3028c5a2a6087d63b4fd2c82f)

Index:
- [Fuentes de datos y destinos compatibles](#supported-data-sources-and-targets)
- [Instalación](#installation)
- [Uso](#usage)
- [Acciones](#actions)
- [Extensiones al gráfico](#extensions-to-the-graph)
- [Gestión de credenciales](#credential-management)
- [Despliegue](#deployment)
- [Licencia](#license)

## Fuentes de datos y destinos compatibles

FalconHound está diseñado para ser usado con BloodHound. No es un reemplazo de BloodHound. Está diseñado para aprovechar el poder de BloodHound y todas las demás plataformas de datos que soporta de manera automatizada.

Actualmente, FalconHound soporta las siguientes fuentes de datos y/o destinos:
- Azure Sentinel
- Azure Sentinel Watchlists
- Splunk
- Microsoft Defender for Endpoint
- Neo4j
- MS Graph API (etapa temprana)
- archivos CSV
- Azure Data Explorer (ADX) - beta
- LogScale
- BloodHound CE y BHE (etapa temprana)
- archivos MarkDown
- Elastic (etapa temprana)

Se planean fuentes de datos y destinos adicionales para el futuro.

En este momento, FalconHound solo soporta 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 lanzamientos y ejecútelo.
Hay binarios compilados disponibles para Windows, Linux y MacOS. Puede encontrarlos en la sección de [lanzamientos](https://github.com/FalconForceTeam/FalconHound/releases).

Antes de ejecutarlo, debe crear un archivo de configuración. Puede encontrar un archivo de configuración de ejemplo en la carpeta raíz. Las instrucciones sobre cómo crear todas las credenciales se pueden encontrar [aquí](https://github.com/falconforceteam/falconhound/blob/HEAD/docs/required_permissions.md).

La forma recomendada de ejecutar FalconHound es hacerlo como una tarea programada o un trabajo cron. Esto le permitirá ejecutarlo regularmente y mantener su gráfico, alertas y enriquecimientos actualizados.

### Requisitos

- BloodHound, o al menos la base de datos Neo4j por ahora.
- Un SIEM u otra herramienta de agregación de registros. Actualmente, se soportan Azure Sentinel y Splunk.
- Credenciales para cada endpoint con el que desee comunicarse, con los [permisos requeridos](https://github.com/falconforceteam/falconhound/blob/HEAD/docs/required_permissions.md).

### Configuración

FalconHound se configura mediante un archivo YAML. Puede encontrar un archivo de configuración de ejemplo en la carpeta raíz.
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.```bash
./falconhound -go

Listar todas las acciones habilitadas

Para listar todas las acciones habilitadas, use el parámetro -actionlist. Esto listará todas las acciones que están habilitadas en los archivos de configuración en la carpeta de acciones. Debe usarse en combinación con el parámetro -go.```bash ./falconhound -actionlist -go

root@kitploit:~
### 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 IDs de acciones separados por comas. Esto ejecutará las acciones especificadas en el parámetro, lo cual puede ser muy útil al realizar pruebas, solucionar problemas o cuando se requieren actualizaciones específicas y más frecuentes. Esto debe usarse en combinación con el parámetro `-go`.```bash
./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 puedes especificar un archivo de configuración usando la bandera -config. Esto puede permitirte ejecutar múltiples instancias de FalconHound con diferentes configuraciones, contra diferentes entornos.```bash ./falconhound -go -config /path/to/config.yml

root@kitploit:~
#### 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`. Esto facilita las pruebas y la resolución de problemas, pero también permite ejecutar múltiples instancias de FalconHound con diferentes configuraciones, contra diferentes entornos o en diferentes intervalos de tiempo.```bash
./falconhound -go -actions-dir /path/to/actions

Ejecutar con credenciales desde un keyvault

Por defecto, FalconHound usará las credenciales en config.yml (o una personalizada cargada). Al establecer la bandera -keyvault, FalconHound obtendrá el keyvault de la configuración y recuperará todos los secretos de allí. Si faltan elementos en el keyvault, recurrirá al archivo de configuración. Si se desea obtener los secretos de un keyvault de Azure usando una identidad administrada, defina la variable authtype como msi.```bash ./falconhound -go -keyvault

root@kitploit:~
## Acciones

Las acciones son el núcleo de FalconHound. Son las consultas que FalconHound ejecutará. Están escritas en el lenguaje nativo de la fuente y el destino y se almacenan en la carpeta actions. Cada acción es un archivo separado y se almacena en el directorio de la fuente de la información, el destino de la consulta. El nombre del archivo se utiliza como nombre de la acción.

### Estructura de la carpeta de acciones

La carpeta de acciones está dividida en subdirectorios por fuente de consulta. Todas las carpetas se procesarán de forma recursiva y todos los archivos YAML se ejecutarán en orden alfabético.

Las acciones de Neo4j **deberían** procesarse al final, ya que su salida depende de que otras fuentes de datos hayan actualizado primero la base de datos de grafos, para obtener los resultados más actualizados.

### Archivos de acción

Todos los archivos son archivos YAML. El archivo YAML contiene la consulta, algunos metadatos y el(los) destino(s) de la información consultada.

Hay un archivo de plantilla disponible en la carpeta raíz. Puedes usarlo para crear tus propias acciones. Echa un vistazo a las acciones en la carpeta actions para más ejemplos.

Si bien la mayoría de los elementos serán bastante autoexplicativos, hay algunas cosas importantes que tener en cuenta sobre las acciones:

#### Enabled

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

Debug

Esto 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. Esto mostrará los resultados de la consulta en la consola. Es útil para pruebas y solución de problemas, pero no se recomienda su uso en producción. Ralentizará el procesamiento de la acción dependiendo del número de resultados.```yaml Debug: false

root@kitploit:~
#### Consulta

El campo `Query` es la consulta que se ejecutará contra el origen. Puede ser una consulta KQL, una consulta SPL o una consulta Cypher dependiendo de tu `SourcePlatform`.
IMPORTANTE: Intenta mantener la consulta lo más exacta posible y solo devuelve los campos que necesites. Esto hará que el procesamiento de los resultados sea más rápido y eficiente.

Además, al ejecutar consultas Cypher, asegúrate de devolver un objeto JSON como resultado, de lo contrario el procesamiento fallará.
Por ejemplo, esto devolverá el Nombre, Conteo, Rol y Propietarios de las Suscripciones de Azure:```cypher
MATCH p = (n)-[r:AZOwns|AZUserAccessAdministrator]->(g:AZSubscription) 
  RETURN {Name:g.name , Count:COUNT(g.name), Role:type(r), Owners:COLLECT(n.name)}

Objetivos

Cada objetivo tiene varias opciones que se pueden configurar. Dependiendo del objetivo, algunos pueden requerir más configuración que otros. Todos los objetivos tienen los campos Name y Enabled. El campo Name se utiliza para identificar el objetivo. El campo Enabled se utiliza para habilitar o deshabilitar el objetivo. Si se establece en falso, el objetivo será ignorado.

CSV

CSV soporta la variable {{date}}, la cual será reemplazada por la fecha actual en el formato YYYY-MM-DD. Esto se puede usar para crear informes diarios. Esto se puede usar en un nombre de carpeta o archivo (ej. path/to/filename-{{date}}.csv) o en el nombre de la carpeta en sí.```yaml

  • Name: CSV Enabled: true Path: path/to/filename.csv
root@kitploit:~
#### Markdown

Markdown admite la variable {{date}}, que será reemplazada por la fecha actual en el formato `YYYY-MM-DD`. Esto puede usarse para crear informes diarios.
Esto puede utilizarse en un nombre de carpeta o archivo (p.ej. `path/to/filename-{{date}}.md`) o en el propio nombre de carpeta.```yaml
  - Name: Markdown
    Enabled: true
    Path: path/to/filename.md

Ejemplo de salida:```markdown

Results for query: N4J_REPORT_DomainAdmins

Get a list of Domain Admins

Description: Get a list of Domain Admins. Date: 2024-02-19

NameObjectID
[email protected]S-1-5-21-1122334455-112233445-1112223334-11223344
root@kitploit:~
#### Neo4j

El objetivo Neo4j escribirá los resultados de la consulta a una base de datos Neo4j. Esta salida es por línea y, por lo tanto, requiere configuración adicional.
Dado que podemos transferir todo tipo de datos en todas direcciones, FalconHound necesita entender qué hacer con los datos. Esto se hace mediante el uso de variables de reemplazo en la primera línea de sus consultas Cypher. Estas se pasan a Neo4j como parámetros y se pueden usar en la consulta.
Los campos `ReplacementFields` se configuran a continuación.```yaml
  - 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

La sección de Parameters define un conjunto de parámetros que serán reemplazados por los valores de los resultados de la consulta. Se pueden referenciar como parámetros de Neo4j usando la sintaxis $parameter_name.

Sentinel

El objetivo Sentinel escribirá los resultados de la consulta en una tabla de Sentinel. La tabla se creará si no existe. La tabla se creará en el espacio de trabajo especificado en el archivo de configuración. Los datos de la consulta se añadirán al campo EventData. El EventID será el ID de la acción y la Description será el nombre de la acción.

Por eso también es necesario controlar la salida de la consulta, de lo contrario podrías inundar tu objetivo.```yaml

  • Name: Sentinel Enabled: true
root@kitploit:~
#### Sentinel Watchlists

El destino de Sentinel Watchlists escribirá los resultados de la consulta en una watchlist de Sentinel. La watchlist se creará si no existe. La watchlist se creará en el espacio de trabajo que se especifica en el archivo de configuración. Todas las columnas devueltas por la consulta se agregarán a la watchlist.```yaml
 - Name: Watchlist
    Enabled: true
    WatchlistName: FH_MDE_Exploitable_Machines
    DisplayName: MDE Exploitable Machines
    SearchKey: DeviceName
    Overwrite: true

El campo WatchlistName es el nombre de la lista de seguimiento. El campo DisplayName es el nombre para mostrar de la lista de seguimiento.

El campo SearchKey es la columna que se utilizará como clave de búsqueda.

El campo Overwrite se utiliza para determinar si la lista de seguimiento debe sobrescribirse o agregarse. Si se establece en false, los resultados de la consulta se agregarán a la lista de seguimiento. Si se establece en true, la lista de seguimiento se eliminará y se volverá a crear con los resultados de la consulta.

Splunk

Al igual que Sentinel, Splunk escribirá los resultados de la consulta en un índice de Splunk. Será necesario crear el índice y vincularlo a un endpoint HEC. Los datos de la consulta se agregarán al campo EventData. El EventID será el ID de la acción y el Description será el nombre de la acción.```yaml

  • Name: Splunk Enabled: true
root@kitploit:~
#### Azure Data Explorer

Al igual que Sentinel, Splunk escribirá los resultados de la consulta a una tabla de ADX. Los datos de la consulta se agregarán al campo EventData. El EventID será el ID de la acción y la Description será el nombre de la acción.```yaml
  - Name: ADX
    Enabled: true
    Table: "name"

Para crear una tabla en ADX puedes usar el siguiente comando:```kql .create table FalconHound (Name: string, Description: string, EventID: string, BHQuery: string, EventData: dynamic, Timestamp: datetime)

root@kitploit:~
### Extensiones al gráfico

#### Relación: HadSession

Una vez que una sesión ha finalizado, debía ser eliminada del gráfico, pero esto parecía un desperdicio de información. Así que, en lugar de eliminar la sesión,se añadirá como una relación entre el equipo y el usuario. La relación se llamará `HadSession`. La relación tendrá las siguientes propiedades:```json
{
  "till": "2021-08-31T14:00:00Z",
  "source": "falconhound",
  "reason": "logoff",
}

Esto permite descubrimientos adicionales de rutas donde podemos investigar si el usuario alguna vez inició sesión en un sistema determinado, incluso si la sesión ha terminado.

Propiedades

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

Computadora: - 'exploitable': true/false - 'exploits': lista de CVEs - 'exposed': true/false - 'ports': lista de puertos accesibles desde Internet - 'alertids': lista de IDs de alertas

Gestión de credenciales

Las formas actualmente compatibles de proporcionar credenciales a FalconHound son:

  • A través del archivo config.yml en disco.
  • Secretos de Keyvault. Esto requiere una identidad administrada del sistema asignada a la VM o un ServicePrincipal con secretos en el yaml.
  • Modo mixto.

Config.yml

El archivo de configuración contiene todos los detalles requeridos por cada plataforma. Todos los elementos en el archivo de configuración son sensibles a mayúsculas y minúsculas. La mejor práctica es separar las aplicaciones por nivel de servicio, pero puede usar 1 AppID/AppSecret para todas las acciones basadas en Azure.

Los permisos requeridos para su AppID/AppSecret se enumeran aquí.

Keyvault

Una forma más segura de almacenar las credenciales sería usar un Azure KeyVault. Tenga en cuenta que hay un pequeño aspecto de costo al usar Keyvaults. El acceso a los KeyVaults actualmente admite autenticación basada en una identidad administrada del sistema o AppID/AppSecret que deben configurarse en el archivo config.yml.

La forma recomendada de configurar esto es asignar una identidad administrada del sistema a la VM donde se ejecuta FalconHound y asignarle el rol Key Vault Secrets User a este Keyvault. Esto permitirá que FalconHound se autentique en el Keyvault sin necesidad de configuración adicional.

Alternativamente, puede usar un ServicePrincipal que solo tenga el rol Key Vault Secrets User para este Keyvault. Este rol solo permite el acceso a los secretos, ni siquiera listarlos. NO reutilice el ServicePrincipal que tiene acceso a Sentinel y/o MDE, ya que esto casi anula por completo el uso de un Keyvault.

Los elementos a configurar en el Keyvault se enumeran a continuación. Tenga en cuenta que los secretos de Keyvault no distinguen entre mayúsculas y minúsculas.``` SentinelAppSecret SentinelAppID SentinelTenantID SentinelTargetTable SentinelResourceGroup SentinelSharedKey SentinelSubscriptionID SentinelWorkspaceID SentinelWorkspaceName MDETenantID MDEAppID MDEAppSecret Neo4jUri Neo4jUsername Neo4jPassword GraphTenantID GraphAppID GraphAppSecret AdxTenantID AdxAppID AdxAppSecret AdxClusterURL AdxDatabase SplunkUrl SplunkApiToken SplunkIndex SplunkApiPort SplunkHecToken SplunkHecPort BHUrl BHTokenID BHTokenKey LogScaleUrl LogScaleToken LogScaleRepository LimaCharlieAPIUrl LimaCharlieOrgId LimaCharlieIngestKey ElasticCloudID ElasticApiKey

root@kitploit:~
Una vez configurado, puede agregar el parámetro `-keyvault` al iniciar FalconHound.

#### Modo mixto / fallback

Cuando el parámetro `-keyvault` se establece en la línea de comandos, esta será la fuente principal para todos los secretos requeridos. Si FalconHound no logra recuperar elementos, recurrirá al elemento equivalente en `config.yml`. 
Si ambos fallan y hay acciones habilitadas para ese origen o destino, se lanzará una advertencia y se omitirá(n) la(s) acción(es).

## Implementación

FalconHound está diseñado para ejecutarse como una tarea programada o trabajo cron. Esto le permitirá ejecutarlo de forma regular y mantener su gráfico, alertas y enriquecimientos actualizados.
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 tomar un tiempo.

Todas las consultas basadas en registros están diseñadas para ejecutarse cada 15 minutos. Si el procesamiento toma demasiado tiempo, es posible que necesite ajustar un poco esto.
Si ese es el caso, 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 deshabilitar las acciones de sesión de Sentinel y confiar en la de MDE. Esto asume que tiene MDE y Sentinel conectados y que la mayoría de las máquinas están integradas en MDE.

### Sharphound / Azurehound

Si bien FalconHound está diseñado para usarse con BloodHound, no es un reemplazo de Sharphound y Azurehound. Está diseñado para complementar la recopilación y eliminar el problema del momento puntual de la recopilación periódica. Tanto Sharphound como Azurehound aún son necesarios para recopilar los datos, ya que no todos los datos similares están disponibles en los registros.

Se recomienda ejecutar Sharphound y Azurehound de forma regular, por ejemplo, una vez al día/semana o mes, y FalconHound cada 15 minutos.

## Licencia

Este proyecto está licenciado bajo la Licencia BSD3 - consulte el archivo [LICENSE](https://github.com/falconforceteam/falconhound/blob/HEAD/LICENSE) para más detalles.

Esto significa que puede usar este software de forma gratuita, incluso en productos comerciales, siempre que nos dé crédito.
No puede responsabilizarnos por ningún daño causado por este software.
Descargar herramienta