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
aggrokatz — Aggrokatz es una extensión de plugin agresor para Cobalt Strike que permite que pypykatz interactúe con los beacons de forma remota y permite analizar archivos de volcado de LSASS y archivos de hive del registro para extraer credenciales y otros secretos almacenados sin descargar el archivo y sin subir ningún código sospechoso al beacon. | Kitploit
Herramientas/GitHubGitHub/sec-consult/aggrokatz
Frameworks de ExploitsPost-ExplotaciónPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubsec-consult/aggrokatz

aggrokatz

Ver Repositorio
15526hace 5 añosRevisado 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 →

Acerca de

Aggrokatz es una extensión de plugin agresor para Cobalt Strike que permite que pypykatz interactúe con los beacons de forma remota y permite analizar archivos de volcado de LSASS y archivos de hive del registro para extraer credenciales y otros secretos almacenados sin descargar el archivo y sin subir ningún código sospechoso al beacon.

Compartir

aggrokatz

aggro_card

¿Qué es esto?

aggrokatz es una extensión de plugin Aggressor para CobaltStrike que permite que pypykatz interactúe con los beacons de forma remota.
La versión actual de aggrokatz permite que pypykatz analice archivos de volcado LSASS y archivos de Hives del Registro para extraer credenciales y otros secretos almacenados sin descargar el archivo y sin subir ningún código sospechoso al beacon (Cobalt Strike ya está allí de todas formas). En el futuro, este proyecto pretende proporcionar características adicionales para operaciones encubiertas, como la búsqueda y descifrado de todos los secretos de DPAPI/kerberoasting, etc.

Hemos publicado un breve blog post para el lanzamiento de esta herramienta, que también incluye algunas capturas de pantalla.

NOTAS IMPORTANTES - POR FAVOR, LEA ESTO

El volcado de LSASS/Registro no es el objetivo de este proyecto, solo el análisis. Razones:

  1. Ya existen múltiples técnicas de volcado implementadas desde Cobalt Strike (CS) y ampliamente disponibles para el público. Recientemente cambiamos a una versión modificada de CredBandit que vuelca los bytes sin procesar al disco en lugar de base64. Herramienta genial, échale un vistazo.
  2. Queremos mantener nuestra técnica de volcado en privado.

En el cliente de CS, no use "reload" ni intente descargar y volver a cargar manualmente el script si lo ha modificado. DEBE descargarlo, cerrar el cliente y abrirlo de nuevo, luego cargar el script modificado. ¡De lo contrario, tendrá varias versiones ejecutándose simultáneamente y se producirán un montón de errores y comportamientos extraños!
Mientras analiza archivos LSASS/registro en el extremo remoto, no interactúe con el beacon específico en el que inició el script. Normalmente no causaría problemas, pero no puedo dar garantías.

Instalación

  • Necesitará tener pycobalt instalado y configurado. Hay un readme en su página de github.
  • Necesitará instalar pypykatz versión >=0.4.8
  • Necesitará Cobalt Strike

Configuración

  • Asegúrese de que el archivo aggressor.cna de pycobalt esté configurado y conozca la ubicación de su intérprete de Python
  • Cambie la ruta pycobalt_path en aggrokatz.cna para que apunte a pycobalt.cna
  • En CS use las ventanas View > Script Console y Cobalt Strike > Script Manager. Usando Script Manager cargue el script aggkatz.cna.

Uso

  • Si el script aggkatz.cna se cargó correctamente, tendrá un nuevo elemento de menú pypykatz al hacer clic derecho en un beacon.
  • Durante el análisis, verá mensajes de depuración en la ventana Script Console.
  • Una vez finalizado el análisis, los resultados se mostrarán tanto en la ventana Script Console como en la propia ventana del Beacon.

Parámetros del menú de análisis de volcado LSASS

  • LSASS file: La ubicación del archivo lsass.dmp en la computadora remota. También puede usar rutas UNC para acceder a archivos lsass.dmp compartidos a través de SMB
  • chunksize : La cantidad máxima que se leerá de una sola vez
  • BOF file : El archivo BOF (Beacon Object File) que permite lecturas fragmentadas. Este archivo se cargará y ejecutará (en memoria) cada vez que se lea un nuevo fragmento.
  • (module) : Especifica qué módulos se analizarán. Por defecto: all
  • Output : Especifica el/los formato(s) de salida
  • Populate Credential tab : Después de un análisis exitoso, todas las credenciales obtenidas estarán disponibles en la pestaña de Credenciales de Cobalt Strike. Esta característica está en beta
  • Delete remote file after parsing : Después de un análisis exitoso, el archivo de volcado LSASS se eliminará del destino

Parámetros del menú de análisis de volcado de registro

  • SYSTEM file: La ubicación del archivo SYSTEM.reg en la computadora remota. También puede usar rutas UNC para acceder a archivos compartidos a través de SMB
  • SAM file (optional): La ubicación del archivo SAM.reg en la computadora remota. También puede usar rutas UNC para acceder a archivos compartidos a través de SMB
  • SECURITY file (optional): La ubicación del archivo SECURITY.reg en la computadora remota. También puede usar rutas UNC para acceder a archivos compartidos a través de SMB
  • SOFTWARE file (optional): La ubicación del archivo SOFTWARE.reg en la computadora remota. También puede usar rutas UNC para acceder a archivos compartidos a través de SMB
  • chunksize : La cantidad máxima que se leerá de una sola vez
  • BOF file : El archivo BOF (Beacon Object File) que permite lecturas fragmentadas. Este archivo se cargará y ejecutará (en memoria) cada vez que se lea un nuevo fragmento.
  • Output : Especifica el/los formato(s) de salida

Limitaciones

El BOF de lectura de archivos actualmente admite lecturas de archivos de hasta 4Gb. Esto se puede ampliar con algunas modificaciones, pero hasta ahora no se han observado archivos tan grandes.

Cómo funciona

TL;DR

Normalmente, el analizador de pypykatz realiza una serie de operaciones de lectura de archivos en el disco, pero con la ayuda de aggrokatz, estas operaciones de lectura se canalizan al beacon utilizando un BOF (Beacon Object File) especialmente diseñado que permite leer el contenido del archivo remoto en fragmentos. Esto permite que pypykatz extraiga todos los secretos de los archivos remotos sin leer todo el archivo, solo tomando los fragmentos necesarios donde se encuentran los secretos.

En profundidad

Para tener una visión completa de todo el proceso, debemos resaltar dos partes:

  1. cómo se integra pypykatz con CobaltStrike
  2. cómo pypykatz realiza la extracción de credenciales sin leer todo el archivo

Integración de pypykatz con CobaltStrike

CobaltStrike (agente) está escrito en Java, pypykatz está escrito en Python. Esto es un problema. Por suerte para nosotros, una entidad desconocida creó pycobalt que proporciona una interfaz ordenada entre ambos mundos, completa con APIs útiles que se pueden invocar directamente desde Python. A pesar de que pycobalt es una pieza de ingeniería maravillosa, hay algunos problemas/inconvenientes que debemos señalar:

  1. Sobre la confianza en el proyecto pycobalt:
  • Intentamos contactar al autor pero no obtuvimos respuesta.
  • No podemos garantizar que el proyecto pycobalt se mantendrá en el futuro.
  • No controlamos ningún aspecto del desarrollo de pycobalt.
  1. Sobre problemas técnicos observados:
  • En general, hay algunos problemas de codificación entre pycobalt y CobaltStrike. Esto da como resultado que algunas llamadas a la API devuelvan bytes que no se pueden usar porque algunos bytes se alteran por el codificador. Al revisar el código, concluimos que la mayoría de los problemas de codificación/descodificación se deben a que pycobalt usa STDOUT/STDIN para comunicarse con el proceso de Java.
  • Específicamente, la llamada a la API bof_pack, que es crucial para este proyecto, tuvo que ser implementada como un script puramente Aggressor e invocada solo desde Python usando estructuras de datos básicas (string e int) y no usando bytes.
  • Solo se proporcionan APIs bloqueantes del paquete pycobalt sin soporte de subprocesos (threading). Bueno, al menos observamos que los subprocesos se rompen aleatoriamente, pero algo esperábamos esto.
  • API bloqueante + sin subprocesos + dependencia de callbacks = tuvimos que emplear algunos hacks extraños para que funcionara correctamente.

Análisis de credenciales sobre una pila de cartas

Fue necesario modificar pypykatz y su módulo complementario minidump para permitir un análisis fragmentado más eficiente que el implementado anteriormente, pero este es un tema para otro día.
Después de que pypykatz fue capaz de interactuar con CobaltStrike a través de pycobalt, el siguiente paso fue permitir la lectura fragmentada de archivos. Lamentablemente, esta característica no está disponible de forma predeterminada en ninguna de las soluciones C2 que hemos visto, por lo que tuvimos que implementarla. La forma en que abordamos este problema fue implementando la lectura fragmentada mediante el uso de la interfaz Beacon Object Files de CobaltStrike, BOF para abreviar. Los BOF son programas en C que se ejecutan en el beacon no como un ejecutable separado, sino como parte del beacon ya en ejecución. Esta interfaz es súper útil porque hace que los BOF sean mucho más sigilosos, ya que todo el código se ejecuta en memoria sin que se escriba nada en el disco.
Nuestra solución BOF es una función simple que toma 4 argumentos:

  • fileName : Ruta completa del archivo de volcado LSASS o hive del registro (en el extremo remoto)
  • buffsize : Cantidad (en bytes) a leer del archivo
  • seekSize : La posición donde debe comenzar la operación de lectura del archivo (desde el principio del archivo)
  • rplyid : Un número de identificación para incorporar en la respuesta para evitar posibles colisiones

Con estos parámetros, pypykatz (ejecutándose en el agente) puede emitir operaciones de lectura de archivos en el beacon (computadora objetivo) que se dirigen específicamente a ciertas partes del archivo.
En el otro extremo (en CobaltStrike), aggrokatz registra un callback para monitorear cada mensaje devuelto por el beacon objetivo. Si el encabezado del mensaje coincide con el encabezado de una operación de lectura de archivo, se procesará como un fragmento de un archivo minidump y se enviará al analizador minidump, que enviará el resultado a pypykatz. En caso de que se necesite más lectura, pypykatz emitirá una lectura usando el lector minidump, que enviará un nuevo comando de lectura al beacon a través de la interfaz BOF. Este proceso se repite hasta que el archivo se analiza.

Resultados

Después de analizar alrededor de 100 volcados LSASS utilizando este método, podemos afirmar lo siguiente (el tamaño de fragmento utilizado fue de 20k):

  • Dependiendo del tamaño del archivo de volcado LSASS (nuestros volcados tenían entre 40Mb y 300Mb), en promedio todos los secretos se podían extraer usando 3,5Mb. Tenga en cuenta que este número no depende del tamaño del volcado LSASS, sino de la cantidad de secretos y la cantidad de paquetes que seleccione para analizar.
  • En promedio se utilizaron 250 operaciones de lectura para un análisis exitoso.
  • El tiempo de análisis solo depende de su configuración de jitter/sleep, por lo que medirlo no tiene sentido.

Inconvenientes

  • Para cada operación de lectura, se debe cargar un BOF en el beacon. (Secretamente esperamos que alguien de CobaltStrike vea este artículo y decida implementar operaciones básicas de lectura de archivos como predeterminadas, para que podamos saltarnos esta solución).
  • El número de operaciones de lectura puede ser problemático si está utilizando un beacon con un jitter/sleep muy grande.

Kudos

dcsync - autor de pycobalt
@anthemtotheego Twitter - Creador de CredBandit
Nicol Jos @shinepaw - diseño del logotipo

Descargar herramienta