Volver a actualizaciones
Nuevo releaseSep 8, 2026

Dark-Moon v1.4.0

Motor autónomo de pentesting con IA, seguridad ofensiva continua en web, cloud, AD y Kubernetes. Razonamiento agéntico + ejecución real de exploits ofrecen vulnerabilidades basadas en pruebas. Pasarela de privacidad: el LLM nunca ve tus IPs, hosts, credenciales o rutas reales (marcadores de posición deterministas rehidratados localmente), nada sale de tu perímetro.

Compartir
DarkMoon — autonomous AI penetration testing on a local model

DarkMoon

Open-source autonomous AI penetration testing — finds, exploits and qualifies every vulnerability on your own infrastructure

GitHub stars Latest release License GPLv3 Made with local LLM Autonomous AI pentesting

⭐ Star DarkMoon · 🚀 Quick Start · 🧩 Integrations · 📊 Benchmark · 🔒 Darkmoon Pro · ▶️ Watch the demo (Pro)

DarkMoon es pentesting autónomo con IA para tu propia infraestructura. Apúntalo a un objetivo autorizado y ejecuta toda la evaluación por su cuenta, luego documenta cada hallazgo con el comando exacto y la salida sin procesar.

  • 🟢 Verdaderamente open source. GPLv3 y autoalojado, la metodología de cada agente es Markdown plano que puedes leer, comparar y bifurcar.
  • 🎯 Encuentra Y demuestra. Cada vulnerabilidad se entrega con el comando exacto y la salida sin procesar (la explotación es afirmada por el agente; la remediación con reintento de prueba de Pro es el paso verificado por máquina), así que casi no hay nada que clasificar.
  • 🔒 Se ejecuta en un LLM local + Privacy Gateway. El gateway tokeniza tus IPs, hosts y credenciales reales localmente, de modo que el modelo razona sobre marcadores de posición mientras los valores reales permanecen en tu perímetro.
  • 🧩 En todas partes donde construyes. Ejecútalo desde GitHub, GitLab, Jenkins, VS Code, JetBrains, n8n, Grafana o Splunk — la edición open source funciona con las basadas en CLI. Ver las integraciones ↓

See the open source engine (CLI)

The open source Darkmoon is a command line tool. This is what you get when you clone the repo. You launch an assessment from the command line and watch every agent, command and finding stream past in real time.

Launching a DarkMoon assessment from the command line with a single TARGET line

Kick off a run from the CLI. One TARGET line and DarkMoon takes over the whole assessment.

A DarkMoon sub-agent state machine in the terminal detecting CVE-2019-9978 and moving straight to exploitation

Autonomous agents reason and exploit, live in your terminal. Here a sub-agent flags CVE-2019-9978 and pivots straight to exploitation.

DarkMoon recon and environment model summary printed in the terminal

Recon and environment model. DarkMoon fingerprints the stack and confirms the attack surface before it strikes.

Live MCP output stream in the terminal with timestamped commands and raw responses

Live MCP stream. Every command the agent runs and its raw output, timestamped, with ./darkmoon.sh --log <session>.

Signal detection matrix in the terminal mapping detected technologies to the agents DarkMoon dispatches

Signal to agent dispatch. DarkMoon decides which specialist agents to deploy from exactly what it detects on the target.

As featured in Help Net Security · Cyber Security News · DevOps.com · SecurityBrief · LinuxLinks · IT Brief · ChannelLife


Quick Start```bash

git clone https://github.com/ASCIT31/Dark-Moon.git cd Dark-Moon ./install.sh

`install.sh` configura tu proveedor de LLM de forma interactiva (no es necesario editar `docker-compose.yml`) y construye el stack completo:```bash
./install.sh           # skip form if .opencode.env already configured
./install.sh --init    # force reconfiguration (cloud or local model)
./install.sh --help    # show usage

Admite proveedores en la nube (Anthropic, OpenAI, OpenRouter…) y modelos locales (Ollama, llama.cpp). Luego ejecuta tu primera evaluación y obsérvala en vivo:```bash ./darkmoon.sh "TARGET: example.com" ./darkmoon.sh --log <session_id>

**Requisitos previos:** Docker y Docker Compose, y una clave de API de LLM (o un modelo local). La configuración de GPU, las variables de entorno y la referencia completa de flags están en la [Documentación completa](https://github.com/ascit31/dark-moon/blob/master/docs/full.md).

---

## Cuadrícula de características

| | |
|---|---|
| 🧠 **50 agentes especialistas** | Un sistema agéntico razona, planifica y despacha agentes especialistas por cada superficie que descubre. |
| 🌐 **Todas las superficies** | Web, APIs, Active Directory, Kubernetes, cloud (AWS, Azure, GCP), CI/CD, bases de datos, firmware IoT y endpoints de IA/LLM, encadenados de extremo a extremo. |
| 🔒 **Privacy Gateway** | La tokenización local reversible convierte IPs, hosts, URLs y credenciales reales en marcadores deterministas, rehidratados solo localmente en el momento en que se ejecuta una herramienta. |
| 🏠 **Modelo local** | Ejecuta toda la evaluación con un LLM local (Ollama, llama.cpp) para que los valores de tu infraestructura permanezcan en tu propio perímetro. |
| 🧾 **Evidencia, no puntuaciones** | Cada hallazgo se entrega con el comando exacto y la salida sin procesar; el retest de Pro vuelve a ejecutar el exploit para confirmar una corrección. |
| 🛡️ **Seguridad por diseño** | La IA nunca ejecuta un comando directamente, cada acción fluye a través de una interfaz MCP controlada y registrada. |
| 🤖 **También hace pentesting a tu IA** | Un agente LLM dedicado sondea endpoints de inferencia de IA/LLM para el OWASP LLM Top 10 con sondas respaldadas por garak. |
| ♾️ **Nativo de CI/CD** | Lanza un pentest en el pipeline y recibe los hallazgos como artefactos. |
| 🔌 **MCP** | Orquesta más de 140 herramientas ofensivas a través de MCP. |
| 🔧 **Corrígelo (Pro)** | El nivel Pro de pago convierte los hallazgos en pull requests revisados por humanos, con retest contra el exploit original. |

Diseñado para **equipos de seguridad**, **ingenieros DevSecOps**, **red teamers** y profesionales del **ethical hacking**.

---

## 🧩 DarkMoon en todas partes

<p align="center">
  <img src="https://raw.githubusercontent.com/ascit31/dark-moon/master/docs/pics/integrations.svg" alt="DarkMoon integrations: GitHub, GitLab, Jenkins, VS Code, JetBrains, n8n, Grafana, Splunk — Community + Pro" width="100%" />
</p>

Ejecuta DarkMoon donde ya construyes — en CI/CD, tu IDE, automatización y SecOps. Las integraciones marcadas como **OSS + Pro** funcionan con la edición de código abierto (CLI local + JSON); las exclusivas de Pro consumen la API REST de [DarkMoon Pro](#-darkmoon-pro--paid-edition-web-dashboard-and-automated-remediation) (panel en vivo, remediación→PR).

| Plataforma | Qué hace | Consíguelo | Edición |
|---|---|---|---|
| **GitHub Actions** | Falla el pipeline según los hallazgos por severidad | [GitHub Marketplace](https://github.com/marketplace/actions/darkmoon-pentest) | OSS + Pro |
| **GitLab CI/CD** | Hallazgos como informes de Code Quality + SAST | [CI/CD Catalog](https://gitlab.com/explore/catalog/Dark-Moon-X/darkmoon-scan) | OSS + Pro |
| **Jenkins** | Hallazgos como issues de Warnings-NG en la build | [Plugin `.hpi` (Releases)](https://github.com/ASCIT31/darkmoon-jenkins/releases) | OSS + Pro |
| **VS Code** | Explora y lanza evaluaciones desde el editor | [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Darkmoon.darkmoon-vscode) | OSS + Pro |
| **JetBrains** | Hallazgos en una ventana de herramientas del IDE | [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/34497-darkmoon) | OSS + Pro |
| **n8n** | Automatiza campañas, retests y alertas | [npm `n8n-nodes-darkmoon`](https://www.npmjs.com/package/n8n-nodes-darkmoon) | Pro |
| **Grafana** | Paneles de postura de seguridad | [Self-host (Releases)](https://github.com/ASCIT31/darkmoon-grafana/releases) | Pro |
| **Splunk** | Ingesta en el SOC (HEC) + acción de alerta "Send to Darkmoon" | [App (Releases)](https://github.com/ASCIT31/darkmoon-splunk/releases) — Splunkbase pendiente | OSS + Pro |
| **SDK / CLI** | Construye tu propia integración sobre el contrato compartido | [npm `@darkmoon_ai/client`](https://www.npmjs.com/package/@darkmoon_ai/client) | OSS + Pro |

Cada integración emite **solo metadatos seguros** (severidad, estado, MITRE, ids) — nunca evidencia, secretos ni tokens. Guías completas en [docs.dark-moon.org](https://docs.dark-moon.org); código fuente en [ASCIT31](https://github.com/ASCIT31).

---

## 🔒 Darkmoon Pro — edición de pago: panel web y remediación automatizada

> 🔒 **Estas son características de Darkmoon Pro (de pago).** La edición de código abierto es la CLI mostrada arriba; el panel web y la remediación automatizada a pull requests no están en la build de código abierto.

Las capturas de pantalla a continuación son el panel web de **Darkmoon Pro de pago**. **No** forman parte del repositorio de código abierto que clonas. La edición de código abierto es la herramienta de línea de comandos mostrada en la sección anterior.

<table>
<tr>
<td width="50%" valign="top">
<img src="https://raw.githubusercontent.com/ascit31/dark-moon/master/docs/pics/dashboard.png" alt="Darkmoon Pro web dashboard showing projects, targets, campaigns and vulnerabilities by severity" />
<p align="center"><b>Pro: panel web en vivo.</b> Proyectos, objetivos y campañas de un vistazo, con cada hallazgo clasificado por severidad.</p>
</td>
<td width="50%" valign="top">
<img src="https://raw.githubusercontent.com/ascit31/dark-moon/master/docs/pics/vulnerability-1.png" alt="Darkmoon Pro finding detail with CVSS, MITRE ATT&CK and ISO 27001 mapping and EXPLOITED status" />
<p align="center"><b>Pro: hallazgos con mapeo CVSS y ATT&CK.</b> Cada hallazgo lleva mapeo de CVSS, MITRE ATT&CK e ISO 27001 con un estado <code>EXPLOITED</code> respaldado por un exploit real.</p>
</td>
</tr>
<tr>
<td width="50%" valign="top">
<img src="https://raw.githubusercontent.com/ascit31/dark-moon/master/docs/pics/markdown-report-1.png" alt="Darkmoon Pro structured web report with management summary, exportable to Markdown and PDF" />
<p align="center"><b>Pro: informes web exportables.</b> Un resumen ejecutivo en lenguaje sencillo más el detalle técnico completo, exportable a Markdown y PDF.</p>
</td>
<td width="50%" valign="top">
<img src="https://raw.githubusercontent.com/ascit31/dark-moon/master/docs/pics/infra-map-2.png" alt="Darkmoon Pro interactive infrastructure map of the attack surface with per-node vulnerabilities" />
<p align="center"><b>Pro: mapa interactivo de la superficie de ataque.</b> Un grafo de nodos, conexiones y vulnerabilidades por nodo en todo el objetivo.</p>
</td>
</tr>
<tr>
<td width="50%" valign="top">
<img src="https://raw.githubusercontent.com/ascit31/dark-moon/master/docs/pics/scheduler.png" alt="Darkmoon Pro campaign scheduler for recurring automated pentest campaigns with focus, severity and recurrence" />
<p align="center"><b>Pro: ejecuciones recurrentes programadas.</b> Campañas automatizadas recurrentes con FOCUS, severidad y recurrencia integrados en el panel web.</p>
</td>
<td width="50%" valign="top">
<img src="https://raw.githubusercontent.com/ascit31/dark-moon/master/docs/pics/campaign.png" alt="Darkmoon Pro campaign view listing the 57 vulnerabilities with severity and status" />
<p align="center"><b>Pro: vista de campaña.</b> Cada vulnerabilidad de una campaña con su severidad y estado de confirmación.</p>
</td>
</tr>
</table>

### 🔒 Pro: del hallazgo a la corrección (remediación automatizada, de pago)

> 🔒 **Característica Pro de pago.** El motor de código abierto encuentra y demuestra vulnerabilidades. La remediación automatizada a pull requests solo está disponible en Darkmoon Pro.

En el nivel Pro de pago, cada hallazgo fluye _hallazgo → corrección validada en sandbox → **pull request revisado por humanos, con retest contra el exploit original**_, y nunca se fusiona automáticamente. En nuestra ejecución de demostración con OWASP Juice Shop, el agente de remediación de Pro **corrigió hallazgos de extremo a extremo con un retest limpio del exploit en vivo** (una corrección solo cuenta cuando el exploit original se vuelve a ejecutar y se confirma cerrado). Consulta el [benchmark de remediación](https://dark-moon.org/remediation-benchmark/), la [documentación del agente de remediación](https://github.com/ascit31/dark-moon/blob/master/docs/remediation-agent.md) y los [57 PRs abiertos en ASCIT31/juice-shop](https://github.com/ASCIT31/juice-shop/pulls).

<div align="center">

<a href="https://youtu.be/1bFRVuMkZzY?si=peKxwuxzbXBnb2zO">
  <img src="https://assets.kitploit.com/production/public/readmes/42241/95a4689eb8c0d2931c09f243615e0a57071b7d7698d88e2d0c6477a477b2d6c5.png" alt="Watch the demo of the Darkmoon Pro web dashboard running a full autonomous penetration test" width="70%" />
</a>

**▶️ Mira la demo (muestra el panel web de Darkmoon Pro)**

</div>

---

## ¿Qué es DarkMoon?

DarkMoon es una plataforma **open-source de pentesting con IA**. Apúntala a un objetivo que estés autorizado a probar, y ejecuta toda la evaluación por sí sola: razona, planifica y despacha **50 agentes especialistas** que ejecutan operaciones ofensivas reales a través de una capa MCP controlada, y luego reporta cada vulnerabilidad con el comando exacto, la salida sin procesar y la prueba que la respalda.

No reemplaza al pentester. Elimina la parte repetitiva de una evaluación con evidencia, para que tus expertos dediquen su tiempo al criterio, no al trabajo mecánico.

---

## 📊 Benchmark: 57 vulnerabilidades reales en OWASP Juice Shop

Ejecución **black-box** real y reproducible contra OWASP Juice Shop con un **modelo frontera en la nube (Anthropic Claude)**. DarkMoon también se ejecuta **totalmente local** (Ollama / llama.cpp) detrás del Privacy Gateway — así nada sale de tu infraestructura; la cobertura con modelo local depende del modelo que ejecutes.

| Métrica | Resultado |
|---|---|
| Vulnerabilidades encontradas | **57** (8 críticas / 24 altas / 21 medias / 4 bajas) |
| Tiempo de reloj | **28,5 min** |
| Prueba de explotación | comando + salida sin procesar por hallazgo |
| LLM | Anthropic Claude (frontera en la nube); modelos locales soportados |

Reprodúcelo y compara herramientas tú mismo: **[ASCIT31/Darkmoon-Benchmarks](https://github.com/ASCIT31/Darkmoon-Benchmarks)**.

## 🆚 Cómo se compara DarkMoon

| | **DarkMoon** | strix | shannon | PentAGI |
|---|:--:|:--:|:--:|:--:|
| Se ejecuta con **LLM local** (los datos nunca salen) | ✅ | ❌ nube | ❌ nube | parcial |
| Privacy Gateway (tokenización local) | ✅ | ❌ | ❌ | ❌ |
| Active Directory + Kubernetes | ✅ | ❌ | ❌ | parcial |
| Prueba de explotación | ✅ | ✅ | ✅ | ✅ |
| Código abierto | ✅ GPL-3.0 | ✅ | ✅ | ✅ |

*Recopilado de repositorios/documentación públicos (2026-08); correcciones bienvenidas vía PR.*

---

## Cómo funciona

DarkMoon opera como un orquestador estratégico de **agente de seguridad con IA** alineado con las metodologías ISO 27001, NIST SP 800-115 y MITRE ATT&CK.

Cuando proporcionas un objetivo, la plataforma automáticamente:

1. 🔍 **Descubre** el entorno objetivo (puertos, servicios, protocolos)
2. 🧠 **Huella** la pila tecnológica (frameworks, CMS, APIs)
3. 🎯 **Modela** la superficie de ataque
4. 🚀 **Despliega** subagentes especializados según las tecnologías detectadas
5. 🔬 **Ejecuta** un bucle de **escaneo inteligente de vulnerabilidades** con adaptación reactiva
6. ✅ **Valida** los hallazgos con evidencia (peticiones, payloads, respuestas)
7. 📝 **Genera** un informe de auditoría estructurado

### Orquestación de subagentes

DarkMoon selecciona y despacha dinámicamente agentes especializados según las tecnologías descubiertas:

| Tecnología detectada | Agente activado |
|---|---|
| WordPress, Drupal, Joomla, Magento, PrestaShop, Moodle | Agente específico de CMS |
| PHP, Node.js, Flask, ASP.NET, Spring Boot, Ruby on Rails, Go | Agente específico de stack |
| GraphQL | Agente GraphQL |
| Endpoint de inferencia LLM / IA (compatible con OpenAI, Ollama, vLLM, TGI) | Agente LLM |
| Active Directory | Agente AD |
| Kubernetes | Agente Kubernetes |
| AWS, Azure, GCP | Agente de proveedor cloud |
| Entra ID (identidad de Microsoft) | Agente de identidad |
| GitHub, GitLab, Jenkins | Agente de SCM y CI/CD |
| Terraform, Ansible | Agente de Infrastructure-as-Code |
| Docker, registros de contenedores | Agente de contenedores |
| HashiCorp Vault | Agente de secretos |
| PostgreSQL, MySQL, MSSQL, Oracle | Agente de bases de datos |
| Redis, RabbitMQ, Kafka, MQTT | Agente de mensajería y caché |
| Imágenes de firmware / IoT | Agente de firmware |
| Se requiere navegador headless | Agente de navegador headless |

Múltiples agentes pueden ejecutarse **en paralelo** en arquitecturas híbridas.

Los planos que requieren credenciales para ser significativos (cuentas cloud, CI/CD, almacenes de secretos, bases de datos, Active Directory, Kubernetes) **nunca se despachan por inferencia**. Se activan solo cuando se encuentra un artefacto concreto (una clave, un token, un endpoint de metadatos accesible) o cuando los autorizas explícitamente, y de lo contrario se señalan en el informe.

> **Nota:** Para la lista completa de agentes, su estructura, ciclo de vida y cómo crear agentes personalizados, consulta [Documentación completa, Agentes de IA](https://github.com/ascit31/dark-moon/blob/master/docs/full.md#v-ai-agents).

### Descripción general de la arquitectura```
User ──> DarkmoonCLI ──> OpenCode (AI Brain) ──> MCP (Security Gatekeeper) ──> Docker Toolbox (Real Tools)

4.3.2.2.2. get_network_connections

Recupera las conexiones de red activas del sistema, incluyendo las direcciones locales y remotas, los estados y los procesos asociados.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
protocolstrNo"tcp"Protocolo a consultar ("tcp", "udp", "all")
statestrNoNoneFiltrar por estado de conexión (p. ej., "ESTABLISHED", "LISTEN")
process_namestrNoNoneFiltrar por nombre del proceso
pidintNoNoneFiltrar por ID de proceso
resolve_dnsboolNoFalseResolver direcciones IP a nombres de host
include_ipv6boolNoTrueIncluir conexiones IPv6

Retorna: List[Dict[str, Any]] - Lista de diccionarios de conexión con claves: protocol, local_address, local_port, remote_address, remote_port, state, pid, process_name, family

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones TCP establecidas
connections = kit.get_network_connections(
    protocol="tcp",
    state="ESTABLISHED"
)

for conn in connections:
    print(f"{conn['process_name']} ({conn['pid']}): "
          f"{conn['local_address']}:{conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener todos los puertos UDP en escucha
udp_listeners = kit.get_network_connections(
    protocol="udp",
    state="LISTEN"
)

# Obtener conexiones de un proceso específico
nginx_conns = kit.get_network_connections(
    process_name="nginx",
    resolve_dns=True
)

4.3.2.2.3. get_network_interfaces

Recupera información detallada sobre todas las interfaces de red del sistema.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
interface_namestrNoNoneNombre de interfaz específico a consultar
include_statsboolNoTrueIncluir estadísticas de tráfico
include_addressesboolNoTrueIncluir direcciones IP

Retorna: List[Dict[str, Any]] - Lista de diccionarios de interfaz con claves: name, status, mac_address, addresses, mtu, speed, stats

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las interfaces de red
interfaces = kit.get_network_interfaces()

for iface in interfaces:
    print(f"Interfaz: {iface['name']}")
    print(f"  Estado: {iface['status']}")
    print(f"  MAC: {iface['mac_address']}")
    print(f"  MTU: {iface['mtu']}")
    
    for addr in iface['addresses']:
        print(f"  Dirección: {addr['address']}/{addr['prefix_length']}")
    
    if iface['stats']:
        print(f"  Bytes enviados: {iface['stats']['bytes_sent']}")
        print(f"  Bytes recibidos: {iface['stats']['bytes_recv']}")

# Obtener una interfaz específica
eth0 = kit.get_network_interfaces(interface_name="eth0")

4.3.2.2.4. get_network_stats

Recupera estadísticas de red agregadas del sistema, incluyendo totales de tráfico y tasas.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
interface_namestrNoNoneInterfaz específica (todas si es None)
per_interfaceboolNoFalseDevolver estadísticas por interfaz
include_ratesboolNoTrueIncluir tasas de transferencia calculadas

Retorna: Dict[str, Any] - Diccionario de estadísticas de red con claves: bytes_sent, bytes_recv, packets_sent, packets_recv, errors_in, errors_out, drops_in, drops_out, rates

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener estadísticas de red agregadas
stats = kit.get_network_stats()

print(f"Total enviado: {stats['bytes_sent'] / 1024 / 1024:.2f} MB")
print(f"Total recibido: {stats['bytes_recv'] / 1024 / 1024:.2f} MB")
print(f"Paquetes enviados: {stats['packets_sent']}")
print(f"Paquetes recibidos: {stats['packets_recv']}")

if stats['rates']:
    print(f"Tasa de subida: {stats['rates']['upload'] / 1024:.2f} KB/s")
    print(f"Tasa de bajada: {stats['rates']['download'] / 1024:.2f} KB/s")

# Obtener estadísticas por interfaz
per_iface = kit.get_network_stats(per_interface=True)
for iface_name, iface_stats in per_iface.items():
    print(f"{iface_name}: {iface_stats['bytes_sent']} bytes enviados")

4.3.2.2.5. get_network_io_counters

Recupera contadores de E/S de red sin procesar del sistema operativo.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
per_nicboolNoFalseDevolver contadores por NIC
nic_namestrNoNoneNombre de NIC específico

Retorna: Dict[str, Any] o List[Dict[str, Any]] - Contadores de E/S de red

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener contadores de E/S agregados
io_counters = kit.get_network_io_counters()

print(f"Bytes enviados: {io_counters['bytes_sent']}")
print(f"Bytes recibidos: {io_counters['bytes_recv']}")
print(f"Paquetes enviados: {io_counters['packets_sent']}")
print(f"Paquetes recibidos: {io_counters['packets_recv']}")
print(f"Errores de entrada: {io_counters['errin']}")
print(f"Errores de salida: {io_counters['errout']}")
print(f"Paquetes descartados de entrada: {io_counters['dropin']}")
print(f"Paquetes descartados de salida: {io_counters['dropout']}")

# Obtener contadores por NIC
per_nic = kit.get_network_io_counters(per_nic=True)
for nic in per_nic:
    print(f"{nic['name']}: {nic['bytes_sent']} bytes enviados")

4.3.2.2.6. get_network_connections_summary

Recupera un resumen agregado de todas las conexiones de red, agrupadas por estado, protocolo y proceso.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
group_bystrNo"state"Criterio de agrupación ("state", "protocol", "process")
include_ipv6boolNoTrueIncluir conexiones IPv6

Retorna: Dict[str, Any] - Resumen de conexiones con recuentos y detalles

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener resumen de conexiones agrupadas por estado
summary = kit.get_network_connections_summary(group_by="state")

print(f"Total de conexiones: {summary['total']}")
for state, count in summary['groups'].items():
    print(f"  {state}: {count}")

# Agrupar por proceso
by_process = kit.get_network_connections_summary(group_by="process")
for process, count in by_process['groups'].items():
    print(f"  {process}: {count} conexiones")

# Agrupar por protocolo
by_protocol = kit.get_network_connections_summary(group_by="protocol")
for proto, count in by_protocol['groups'].items():
    print(f"  {proto}: {count}")

4.3.2.3. Métodos de Red - Avanzados

4.3.2.3.1. get_network_connections_detailed

Recupera información exhaustiva sobre las conexiones de red, incluyendo detalles a nivel de socket, información de enrutamiento y datos de geolocalización cuando estén disponibles.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
include_socket_infoboolNoTrueIncluir detalles a nivel de socket
include_routingboolNoFalseIncluir información de enrutamiento
include_geoboolNoFalseIncluir geolocalización de IP remotas
timeoutfloatNo5.0Tiempo de espera para búsquedas

Retorna: List[Dict[str, Any]] - Lista de diccionarios de conexión detallados

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexiones detalladas con información de socket
detailed = kit.get_network_connections_detailed(
    include_socket_info=True,
    include_routing=True
)

for conn in detailed:
    print(f"Conexión: {conn['local_address']}:{conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")
    
    if conn.get('socket_info'):
        print(f"  Socket FD: {conn['socket_info']['fd']}")
        print(f"  Tipo de socket: {conn['socket_info']['type']}")
    
    if conn.get('routing'):
        print(f"  Interfaz: {conn['routing']['interface']}")
        print(f"  Gateway: {conn['routing']['gateway']}")

4.3.2.3.2. get_network_connections_by_process

Recupera todas las conexiones de red agrupadas por proceso, proporcionando una vista centrada en procesos de la actividad de red.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
process_namestrNoNoneFiltrar por nombre de proceso específico
pidintNoNoneFiltrar por ID de proceso
include_childrenboolNoFalseIncluir procesos hijos
protocolstrNo"all"Filtrar por protocolo

Retorna: Dict[str, List[Dict[str, Any]]] - Diccionario que asigna procesos a sus conexiones

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexiones agrupadas por proceso
by_process = kit.get_network_connections_by_process()

for process_name, connections in by_process.items():
    print(f"\n{process_name}: {len(connections)} conexiones")
    for conn in connections:
        print(f"  {conn['local_port']} -> {conn['remote_address']}:{conn['remote_port']} "
              f"({conn['state']})")

# Obtener conexiones de un proceso específico incluyendo hijos
nginx_conns = kit.get_network_connections_by_process(
    process_name="nginx",
    include_children=True
)

4.3.2.3.3. get_network_connections_by_port

Recupera todas las conexiones de red que involucran un puerto específico, ya sea local o remoto.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
portintSí-Número de puerto a consultar
directionstrNo"both"Dirección del puerto ("local", "remote", "both")
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones que involucran el puerto especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones en el puerto 443
port_443 = kit.get_network_connections_by_port(port=443)

for conn in port_443:
    print(f"{conn['process_name']}: {conn['local_address']}:{conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones donde el puerto 8080 es el puerto local
local_8080 = kit.get_network_connections_by_port(
    port=8080,
    direction="local"
)

4.3.2.3.4. get_network_connections_by_address

Recupera todas las conexiones de red que involucran una dirección IP específica.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
addressstrSí-Dirección IP a consultar
directionstrNo"both"Dirección de la dirección ("local", "remote", "both")
exact_matchboolNoTrueCoincidencia exacta o por subcadena

Retorna: List[Dict[str, Any]] - Lista de conexiones que involucran la dirección especificada

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexiones a una dirección remota específica
remote_conns = kit.get_network_connections_by_address(
    address="8.8.8.8",
    direction="remote"
)

for conn in remote_conns:
    print(f"{conn['process_name']}: {conn['local_port']} -> {conn['remote_port']}")

# Obtener conexiones desde una dirección local específica
local_conns = kit.get_network_connections_by_address(
    address="192.168.1.100",
    direction="local"
)

4.3.2.3.5. get_network_connections_by_state

Recupera todas las conexiones de red en un estado específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
statestrSí-Estado de conexión a filtrar
protocolstrNo"all"Filtrar por protocolo
include_ipv6boolNoTrueIncluir conexiones IPv6

Retorna: List[Dict[str, Any]] - Lista de conexiones en el estado especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones establecidas
established = kit.get_network_connections_by_state(state="ESTABLISHED")

print(f"Conexiones establecidas: {len(established)}")
for conn in established:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener todos los sockets en escucha
listening = kit.get_network_connections_by_state(state="LISTEN")
for conn in listening:
    print(f"Escuchando en: {conn['local_address']}:{conn['local_port']} "
          f"({conn['process_name']})")

4.3.2.3.6. get_network_connections_by_family

Recupera todas las conexiones de red de una familia de direcciones específica (IPv4 o IPv6).

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
familystrSí-Familia de direcciones ("ipv4", "ipv6", "unix")
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones en la familia especificada

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones IPv6
ipv6_conns = kit.get_network_connections_by_family(family="ipv6")

print(f"Conexiones IPv6: {len(ipv6_conns)}")
for conn in ipv6_conns:
    print(f"  {conn['local_address']}:{conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener todas las conexiones de socket de dominio Unix
unix_conns = kit.get_network_connections_by_family(family="unix")
for conn in unix_conns:
    print(f"Socket Unix: {conn['local_address']}")

4.3.2.3.7. get_network_connections_by_type

Recupera todas las conexiones de red de un tipo específico (stream, datagram, raw).

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
socket_typestrSí-Tipo de socket ("stream", "dgram", "raw")
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones del tipo especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones de socket de tipo stream (TCP)
stream_conns = kit.get_network_connections_by_type(socket_type="stream")

print(f"Conexiones de tipo stream: {len(stream_conns)}")

# Obtener todas las conexiones de socket de tipo datagram (UDP)
dgram_conns = kit.get_network_connections_by_type(socket_type="dgram")
print(f"Conexiones de tipo datagram: {len(dgram_conns)}")

# Obtener todos los sockets raw
raw_conns = kit.get_network_connections_by_type(socket_type="raw")
for conn in raw_conns:
    print(f"Socket raw: {conn['local_address']}:{conn['local_port']}")

4.3.2.3.8. get_network_connections_by_interface

Recupera todas las conexiones de red asociadas con una interfaz de red específica.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
interface_namestrSí-Nombre de la interfaz de red
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones en la interfaz especificada

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones en la interfaz eth0
eth0_conns = kit.get_network_connections_by_interface(interface_name="eth0")

print(f"Conexiones en eth0: {len(eth0_conns)}")
for conn in eth0_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones en la interfaz loopback
lo_conns = kit.get_network_connections_by_interface(interface_name="lo")
for conn in lo_conns:
    print(f"Loopback: {conn['local_port']} ({conn['state']})")

4.3.2.3.9. get_network_connections_by_user

Recupera todas las conexiones de red propiedad de un usuario específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
usernamestrNoNoneNombre de usuario a filtrar
uidintNoNoneID de usuario a filtrar
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones propiedad del usuario especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones propiedad del usuario www-data
www_conns = kit.get_network_connections_by_user(username="www-data")

print(f"Conexiones de www-data: {len(www_conns)}")
for conn in www_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones por UID
uid_conns = kit.get_network_connections_by_user(uid=1000)
for conn in uid_conns:
    print(f"UID 1000: {conn['process_name']} ({conn['state']})")

4.3.2.3.10. get_network_connections_by_container

Recupera todas las conexiones de red asociadas con un contenedor específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
container_idstrNoNoneID del contenedor
container_namestrNoNoneNombre del contenedor
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones del contenedor especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexiones de un contenedor por nombre
container_conns = kit.get_network_connections_by_container(
    container_name="nginx-proxy"
)

print(f"Conexiones del contenedor: {len(container_conns)}")
for conn in container_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones de un contenedor por ID
container_conns = kit.get_network_connections_by_container(
    container_id="abc123def456"
)

4.3.2.3.11. get_network_connections_by_namespace

Recupera todas las conexiones de red dentro de un espacio de nombres de red específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
namespacestrSí-Nombre o ruta del espacio de nombres de red
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones dentro del espacio de nombres especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexiones dentro de un espacio de nombres de red
ns_conns = kit.get_network_connections_by_namespace(
    namespace="mynamespace"
)

print(f"Conexiones en el espacio de nombres: {len(ns_conns)}")
for conn in ns_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones de un espacio de nombres por ruta
ns_conns = kit.get_network_connections_by_namespace(
    namespace="/var/run/netns/mynamespace"
)

4.3.2.3.12. get_network_connections_by_cgroup

Recupera todas las conexiones de red asociadas con un cgroup específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
cgroup_pathstrSí-Ruta del cgroup
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones dentro del cgroup especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexiones dentro de un cgroup
cgroup_conns = kit.get_network_connections_by_cgroup(
    cgroup_path="/sys/fs/cgroup/system.slice/nginx.service"
)

print(f"Conexiones en el cgroup: {len(cgroup_conns)}")
for conn in cgroup_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

4.3.2.3.13. get_network_connections_by_service

Recupera todas las conexiones de red asociadas con un servicio systemd específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
service_namestrSí-Nombre del servicio systemd
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones del servicio especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexiones del servicio nginx
service_conns = kit.get_network_connections_by_service(
    service_name="nginx.service"
)

print(f"Conexiones del servicio nginx: {len(service_conns)}")
for conn in service_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones del servicio sshd
sshd_conns = kit.get_network_connections_by_service(
    service_name="sshd.service"
)
for conn in sshd_conns:
    print(f"SSH: {conn['local_port']} -> {conn['remote_address']}:{conn['remote_port']}")

4.3.2.3.14. get_network_connections_by_socket

Recupera información detallada sobre un socket de red específico por su descriptor de archivo.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
fdintSí-Descriptor de archivo del socket
pidintNoNoneID de proceso propietario del socket

Retorna: Dict[str, Any] - Diccionario de información del socket

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener información del socket por descriptor de archivo
socket_info = kit.get_network_connections_by_socket(fd=3, pid=1234)

print(f"Socket FD: {socket_info['fd']}")
print(f"Tipo: {socket_info['type']}")
print(f"Estado: {socket_info['state']}")
print(f"Dirección local: {socket_info['local_address']}:{socket_info['local_port']}")
print(f"Dirección remota: {socket_info['remote_address']}:{socket_info['remote_port']}")

4.3.2.3.15. get_network_connections_by_inode

Recupera información de conexión de red por número de inodo de socket.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
inodeintSí-Número de inodo del socket

Retorna: Dict[str, Any] - Diccionario de información de conexión

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener conexión por número de inodo
conn = kit.get_network_connections_by_inode(inode=12345678)

print(f"Inodo: {conn['inode']}")
print(f"Protocolo: {conn['protocol']}")
print(f"Estado: {conn['state']}")
print(f"Local: {conn['local_address']}:{conn['local_port']}")
print(f"Remoto: {conn['remote_address']}:{conn['remote_port']}")
print(f"Proceso: {conn['process_name']} ({conn['pid']})")

4.3.2.3.16. get_network_connections_by_uid

Recupera todas las conexiones de red propiedad de un ID de usuario específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
uidintSí-ID de usuario a filtrar
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones propiedad del UID especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones propiedad del UID 1000
uid_conns = kit.get_network_connections_by_uid(uid=1000)

print(f"Conexiones del UID 1000: {len(uid_conns)}")
for conn in uid_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones del UID 0 (root)
root_conns = kit.get_network_connections_by_uid(uid=0)
for conn in root_conns:
    print(f"Root: {conn['process_name']} ({conn['state']})")

4.3.2.3.17. get_network_connections_by_gid

Recupera todas las conexiones de red propiedad de un ID de grupo específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
gidintSí-ID de grupo a filtrar
protocolstrNo"all"Filtrar por protocolo

Retorna: List[Dict[str, Any]] - Lista de conexiones propiedad del GID especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones propiedad del GID 1000
gid_conns = kit.get_network_connections_by_gid(gid=1000)

print(f"Conexiones del GID 1000: {len(gid_conns)}")
for conn in gid_conns:
    print(f"  {conn['process_name']}: {conn['local_port']} -> "
          f"{conn['remote_address']}:{conn['remote_port']}")

# Obtener conexiones del GID 0 (root)
root_conns = kit.get_network_connections_by_gid(gid=0)
for conn in root_conns:
    print(f"Root: {conn['process_name']} ({conn['state']})")

4.3.2.3.18. get_network_connections_by_pid

Recupera todas las conexiones de red propiedad de un ID de proceso específico.

Parámetros:

ParámetroTipoObligatorioPor defectoDescripción
pidintSí-ID de proceso a filtrar
protocolstrNo"all"Filtrar por protocolo
include_childrenboolNoFalseIncluir procesos hijos

Retorna: List[Dict[str, Any]] - Lista de conexiones propiedad del PID especificado

Ejemplo:

from kitploit import Kitploit

kit = Kitploit()

# Obtener todas las conexiones propiedad del PID 1234
pid_conns = kit.get_network_connections_by_pid(pid=1234)

print(f"Conexiones del PID 1234: {len(pid_conns)}")
for conn in pid_conns:
    print(f"  {conn['local_port']} -> {conn['remote_address']}:{conn['```mermaid
sequenceDiagram
  participant U as User
  participant O as OpenCode
  participant A as AI Agent
  participant M as MCP Darkmoon
  participant T as Docker Toolbox

  U->>O: User prompt
  O->>A: Delegate task
  A->>M: MCP function call
  M->>T: Execute real tool
  T-->>M: Results
  M-->>A: Structured output
  A-->>O: Next decision
  O-->>U: Summary / result

La IA razona y planifica. El MCP controla lo que se puede ejecutar. La Toolbox ejecuta herramientas aisladas dentro de Docker. La IA nunca toca directamente el sistema, esto es seguridad por diseño.

Nota: Para el desglose completo de la arquitectura (diagramas de despliegue, flujos de red, límites de seguridad), consulta Documentación completa, Arquitectura.


Definición del alcance

DarkMoon admite una definición flexible del alcance directamente desde la línea de comandos.

Pentest rápido (sin configuración):```bash ./darkmoon.sh "TARGET: http://172.19.0.3:3000"

**Modo bug bounty (los flags se activan automáticamente):**```bash
./darkmoon.sh "TARGET: http://172.19.0.3:3000 PROGRAM=\"Juice Shop\" FOCUS=sqli,xss,idor NOISE=moderate FORMAT=h1"

Los flags clave incluyen FOCUS, EXCLUDE, CREDS, TOKEN, NOISE, SEVERITY, FORMAT, y más, todos interpretados de forma natural por la IA.

Nota: Para la referencia completa de flags, tipos de activos, sintaxis libre de EXCLUDE/FOCUS y alcance avanzado multi-objetivo, consulta Documentación Completa, Definición de Alcance.


Caja de Herramientas Integrada

DarkMoon incluye una imagen Docker diseñada específicamente que contiene más de 140 herramientas de seguridad compiladas y optimizadas en una compilación multi-etapa:

CategoríaHerramientas (ejemplos)
Escaneo de puertosNaabu (descubrimiento), nmap (sondeos de servicios dirigidos)
Escaneo webNuclei, ffuf, dirb, sqlmap, Arjun, wafw00f
Reconocimiento y rastreoSubfinder, Katana, Waybackurls, httpx
CMSWPScan, CMSeeK, WhatWeb
Active DirectoryNetExec, BloodHound, Impacket (más de 30 scripts)
Kuberneteskubectl, Kubescape, Kubeletctl, kube-bench, rbac-police
CLIs de nubeaws, az, gcloud, gsutil, bq
Bases de datos y cachépsql, mysql, redis-cli, sqlite3
Firmware / IoTbinwalk, unsquashfs, sasquatch, firmwalker
Crackinghashcat, john, 7z2john
RedHydra, curl, dig, herramientas SNMP
NavegadorLightpanda (headless)

Todas las herramientas son accesibles directamente, sin necesidad de configurar rutas.

Nota: Para la lista completa de herramientas con detalles de instalación y cómo añadir nuevas herramientas, consulta Documentación Completa, Caja de Herramientas.


📖 Guía de Documentación

La Documentación Completa de DarkMoon cubre todo lo que necesitas para operar la plataforma. Aquí tienes una referencia rápida a las secciones más importantes:

TemaQué EncontrarásEnlace
Configuración de GPU y ControladoresSolución de problemas de NVIDIA para Docker, WSL y Linux nativoGuía de GPU
Variables de EntornoConfiguración del proveedor LLM, claves API, selección de modeloConfiguración de Entorno
Inicio y CompilaciónComportamiento de install.sh, docker compose build, gestión del stackCompilación y Lanzamiento
Alcance y FlagsSintaxis de TARGET, modo bug bounty, FOCUS/EXCLUDE, credencialesDefinición de Alcance
Flujo de Trabajo de EvaluaciónPaso a paso: descubrimiento, fingerprinting, agentes, informesMotor de Evaluación
Registros de Sesión en Tiempo RealMonitorea en vivo los comandos ejecutados por el servidor MCPRegistros de Sesión
Agentes de IAEstructura de agentes, ciclo de vida, cómo crear o modificar agentesAgentes de IA
ArquitecturaDiagramas de despliegue, límites de seguridad, flujo de ejecuciónArquitectura
Caja de HerramientasLista completa de herramientas, añadir herramientas, interioridades de la imagen DockerCaja de Herramientas
Flujos de Trabajo MCPEstructura de flujos de trabajo, creación de flujos personalizados, mejores prácticasFlujos de Trabajo MCP
Lista de Herramientas DisponiblesTabla completa de 142 herramientas de seguridad con rutas y fuentesLista de Herramientas
Laboratorios de EntrenamientoLaboratorios vulnerables recomendados para entrenar a DarkMoonLaboratorios de Pentester
Agente de Remediación (Pro)Hallazgos → corrección validada en sandbox → pull request para revisión humana (nunca fusionado)Agente de Remediación
n8n (Pro)Nodo de la comunidad para lanzar un pentest, obtener hallazgos y revisar PRs de corrección desde un flujo de trabajo de n8nNodo n8n

Casos de Uso

DarkMoon está diseñado como una plataforma versátil de pruebas de seguridad para:

  • 🔒 Equipos de seguridad, ejecuta pruebas de penetración automatizadas continuas en toda tu infraestructura
  • ⚙️ Pipelines de DevSecOps, integra investigación de seguridad impulsada por IA en flujos de trabajo CI/CD
  • 🎯 Cazadores de bug bounty, acelera el hacking ético con análisis autónomo de objetivos
  • 🔬 Investigadores de seguridad, explora superficies de ataque con una plataforma de ciberseguridad con IA que se adapta en tiempo real
  • 🎓 Formación y educación, aprende seguridad ofensiva con evaluaciones guiadas y reproducibles

Ejemplos de Prompts```bash

Web application pentest

./darkmoon.sh "TARGET: http://172.19.0.3:3000"

Active Directory assessment

./darkmoon.sh "TARGET: 192.168.1.10"

Bug bounty with specific focus

./darkmoon.sh "TARGET: https://app.example.com PROGRAM="Example BB" FOCUS=sqli,rce,ssrf EXCLUDE=H1 FORMAT=h1"

> **Nota:** Para más ejemplos de prompts, incluidos DVGA, Juice Shop y escenarios de navegador headless, consulta [Documentación completa, Ejemplos de prompts](https://github.com/ascit31/dark-moon/blob/master/docs/full.md#iii-uses).

---

## Contribuir

DarkMoon es de código abierto y acepta contribuciones. Ya sea que quieras añadir nuevos agentes, integrar herramientas, crear flujos de trabajo o mejorar la documentación, consulta [CONTRIBUTING.md](https://github.com/ascit31/dark-moon/blob/master/CONTRIBUTING.md) para obtener las directrices.

---

## Licencia

Este proyecto está licenciado bajo la **GNU General Public License v3.0**. Consulta [LICENSE](https://github.com/ascit31/dark-moon/blob/master/LICENSE) para más detalles.

---

<div align="center">

**Creado por ASC-IT con 💚 para la comunidad global de seguridad**

🔒 Código abierto · 🤖 Impulsado por IA · 🇫🇷 Hecho en Francia

[⭐ Danos una estrella en GitHub](https://github.com/ASCIT31/Dark-Moon) · [📖 Documentación completa](https://github.com/ascit31/dark-moon/blob/master/docs/full.md) · [▶️ Ver la demo (panel Pro)](https://youtu.be/1bFRVuMkZzY?si=peKxwuxzbXBnb2zO)

</div>

Categorías