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
Herramientas/GitHubGitHub/shellkraft/ledger
Scripting y AutomatizaciónPost-ExplotaciónPruebas de PenetraciónComando y ControlUtilidades y FrameworksRed TeamingRespuesta a IncidentesAnálisis de Registros
GitHubshellkraft/ledger

Ledger

Un script de Aggressor que rastrea los cambios operativos realizados durante un ejercicio de red team. Te proporciona un registro de auditoría completo de lo que se cambió y de lo que aún queda por limpiar.

27152hace 3 mesesRevisado por Kitploit
Ver Repositorio

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

Ledger — Script agresor de seguimiento de cambios operativos

Ledger es un script agresor de Cobalt Strike que registra cada cambio operativo realizado durante un compromiso. Cada servicio que habilitas, regla de firewall que abres, cuenta que creas o clave de registro que tocas queda registrada con una puntuación de riesgo, atribución al operador y estado de limpieza. Al final del compromiso tienes un rastro de auditoría completo de lo que se cambió y de lo que aún necesita limpieza.


Por qué

Los compromisos de red team dejan artefactos. Se habilitan servicios, se crean cuentas, se abren reglas de firewall, se modifican claves de registro. Sin un registro estructurado es fácil olvidarlos, especialmente en compromisos largos o cuando varios operadores trabajan simultáneamente.

Ledger te ofrece un diario en curso con:

  • Puntuación de riesgo por entrada y por host
  • Seguimiento de limpieza para que no quede nada atrás
  • Atribución por operador mediante el registro de eventos de Cobalt Strike
  • Exportación a JSON o texto plano para informes posteriores a la acción
  • Avisos automáticos de baliza muerta cuando hay cambios sin limpiar pendientes

Instalación

  1. Copia ledger.cna al directorio de scripts de Cobalt Strike.
  2. En la barra de menús: Cobalt Strike → Script Manager → Load → selecciona ledger.cna.
  • Aparecerá un menú Ledger en la barra de menús.
  • El alias dirty ya está disponible en cada consola de Beacon.

  • Uso

    Todos los comandos se ejecutan desde una consola de Beacon usando el alias dirty.


    Registrar un cambio (sin ejecución)

    root@kitploit:~
    dirty <CATEGORY> <command> [comment] [score]
    

    comment y score son opcionales. Si se omiten, se usan valores predeterminados sensatos según la categoría.

    root@kitploit:~
    dirty RPC "sql-enablerpc lon-db-1 lon-db-2"
    dirty DEFENDER "add-exclusion C:\windows\temp" "Payload staging" 8
    dirty GROUP "net group 'Domain Admins' svc_backup /add /domain"
    dirty USER "net user backdoor P@ssw0rd! /add"
    dirty SCHEDULED_TASK "schtasks /create /tn updater /tr C:\temp\beacon.exe /sc onlogon"
    
    image

    Ejecutar y registrar en un solo paso

    root@kitploit:~
    dirty exec <CATEGORY> <command> [comment] [score]
    

    Registra el cambio y ejecuta inmediatamente el comando en el beacon: un solo paso en lugar de dos.

    root@kitploit:~
    dirty exec RPC "sql-enablerpc lon-db-1 lon-db-2"
    dirty exec USER "net user backdoor P@ssw0rd! /add"
    dirty exec DEFENDER "sc config WinDefend start= disabled"
    dirty exec FIREWALL "netsh advfirewall set allprofiles state off"
    

    Limitaciones de dirty exec

    dirty exec usa brun internamente, que ejecuta un binario directamente sin un envoltorio cmd.exe /c. Esto significa:

    • Funciona con ejecutables reales: net, sc, reg, nltest, whoami, ipconfig, etc.
    • No funciona con funciones integradas de Beacon: sleep, cd, ls, pwd, download, upload, execute-assembly, inject, etc. Para esas, ejecuta el comando de Beacon normalmente y usa dirty <CATEGORY> <command> por separado para registrarlo.
    • No funciona con funciones integradas del shell que requieren cmd.exe: dir, echo, set, type, tuberías (|), redirecciones (>), etc. Regístralas manualmente con dirty CATEGORY "shell <command>".
    • Los alias BOF personalizados cargados desde otros archivos .cna no se despacharán correctamente a través de dirty exec.

    Ver el diario

    root@kitploit:~
    dirty show
    dirty show DEFENDER
    dirty show DESKTOP-ABC123
    

    Muestra todas las entradas registradas. El filtro opcional coincide con comando, comentario, categoría, nombre de host y nombre de usuario.

    image

    Resumen de puntuación

    root@kitploit:~
    dirty score
    

    Muestra un resumen de riesgo por host con puntuación agregada, recuento de limpieza pendiente y una barra visual. Los hosts se ordenan de mayor a menor puntuación.


    Marcar entradas como limpiadas

    root@kitploit:~
    dirty clean <id>
    dirty clean all
    dirty clean host <hostname>
    

    La coincidencia de nombre de host no distingue mayúsculas y admite coincidencias parciales: DESKTOP coincide con DESKTOP-FGN4LPG.


    Exportar

    root@kitploit:~
    dirty export text
    dirty export json
    dirty export text DEFENDER
    dirty export json DESKTOP-ABC
    

    Las exportaciones se escriben en el directorio que contiene ledger.cna e incluyen un resumen de puntuación por host al principio seguido del registro de cambios completo. Los botones del menú Ledger en la barra de menús activan exportaciones sin filtro directamente.


    Ayuda

    root@kitploit:~
    dirty help
    

    Categorías y puntuaciones predeterminadas

    CategoríaPuntuación predeterminadaComentario predeterminado
    REGISTRY2Registro modificado
    FIREWALL3Regla de firewall modificada
    SERVICE3Configuración de servicio cambiada
    RPC4Cambios realizados en RPC
    WINRM4WinRM habilitado
    SMB4Firma SMB cambiada
    DCOM4DCOM habilitado
    RDP5RDP habilitado
    SCHEDULED_TASK5Tarea programada creada
    DEFENDER6Configuración de Defender cambiada
    GROUP6Membresía de grupo modificada
    USER7Cuenta de usuario modificada
    ACL8ACL modificada
    SPN8SPN modificado
    DOMAIN_ADMIN9Grupo de administradores de dominio modificado
    TRUST9Relación de confianza modificada

    Cualquier categoría no listada se acepta con una puntuación predeterminada de 3.


    Umbrales de riesgo

    Por entrada

    EtiquetaPuntuación
    LOW< 5
    MEDIUM5 – 7
    HIGH8+

    Agregado (por host)

    EtiquetaPuntuación
    LOW< 5
    MEDIUM5 – 9
    HIGH10 – 14
    CRITICAL15+

    Aviso de baliza muerta

    Cuando una baliza muere con entradas de Ledger sin limpiar pendientes, Ledger envía una advertencia roja al registro de eventos de Cobalt Strike visible para todos los operadores conectados:

    image

    La advertencia se dispara una vez por baliza y se restablece automáticamente si la baliza se recupera y vuelve a conectarse. Las balizas vinculadas (hijas) y las balizas eliminadas explícitamente por un operador quedan excluidas. El tiempo del aviso se escala con el ajuste de sueño de la baliza: un sueño de 60s se dispara después de ~2 minutos, un sueño de 5m después de ~10 minutos.


    Formato de exportación

    Texto

    root@kitploit:~
    LEDGER EXPORT -- 2026-05-21 19:50:34
    
    HOST SCORE SUMMARY
    ================================================================================
    Host  Risk  Score  Pending  Bar
    --------------------------------------------------------------------------------
    DESKTOP-RLP4KBJ (sally *)  CRITICAL  +21  2 pend  [##########]
    DESKTOP-FGN4LPG (Admin)  CRITICAL  +18  0 pend  [#########]
    ================================================================================
    
    CHANGE LOG
    ================================================================================
    
    [000002] 2026-05-21 19:22:56 | neo | GROUP | MEDIUM +6 | CLEANED
      Host          : DESKTOP-FGN4LPG
      User          : Admin
      Process       : HTTP Listener_x64.exe (PID 4716)
      Command       : net group 'Domain Admins' svc_backup /add /domain
      Comment       : Added svc_backup to Domain Admins for lateral movement
    

    JSON

    root@kitploit:~
    {
      "exported":    "2026-05-21 19:53:19",
      "host_summary": [
        {
          "host":    "DESKTOP-FGN4LPG (Admin)",
          "risk":    "CRITICAL",
          "score":   18,
          "pending": 0
        },
        {
          "host":    "DESKTOP-RLP4KBJ (sally *)",
          "risk":    "CRITICAL",
          "score":   21,
          "pending": 2
        }
      ],
      "entries": [
      {
        "id":             "000004",
        "timestamp":      "2026-05-21 19:31:36",
        "operator":       "neo",
        "beacon_id":      "1607712302",
        "computer":       "DESKTOP-RLP4KBJ",
        "beacon_user":    "sally *",
        "beacon_process": "HTTP Listener_x64.exe (PID 11540)",
        "functionality":  "USER",
        "command":        "net user svc_backup P@ssw0rd123! /add /domain",
        "comment":        "Created service account for persistence",
        "score":          7,
        "risk":           "MEDIUM",
        "cleaned":        false
      }
    

    Uso con múltiples operadores

    Cada entrada registrada y limpiada se transmite al registro de eventos de Cobalt Strike mediante elog, de modo que todos los operadores conectados ven los cambios de los demás en tiempo real. El diario vive en la memoria del teamserver durante la sesión.


    Notas

    • El diario es solo en memoria y no persiste entre reinicios del teamserver. Exporta antes de apagar.
    • Las exportaciones se escriben en el directorio que contiene ledger.cna.
    • Se admiten anulaciones de puntuación: dirty USER "net user ..." "my comment" 9 — el argumento final establece una puntuación explícita.
    • Cargar el script dos veces (por ejemplo, una vez mediante Script Manager y otra manualmente) registrará manejadores de eventos duplicados. Revisa Script Manager si ves salida duplicada.
    Descargar herramienta