Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
OutOfTune — Rogue-Device-Enrollment-Tool für Entra ID und Intune MDM. Automatisiert den Gerätebeitritt, Token-Erfassung, MDM-Registrierung und OMA-DM-Check-in, um Richtlinien, WLAN-Anmeldedaten, Skripte und Apps zu extrahieren, während Conditional Access umgangen wird. | Kitploit
Tools/GitHubGitHub/stra-x/outoftune
Authentifizierung & AutorisierungPrivilege EscalationSchwachstellenanalyseLaterale BewegungKonfigurationsprüfungInformationsbeschaffungPost-ExploitationPenetrationstestsCloud-SicherheitMobile SicherheitIdentitäts- & Zugriffsmanagement (IAM)
313vor 4 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Red Teaming
GitHubstra-x/outoftune

OutOfTune

Rogue-Device-Enrollment-Tool für Entra ID und Intune MDM. Automatisiert den Gerätebeitritt, Token-Erfassung, MDM-Registrierung und OMA-DM-Check-in, um Richtlinien, WLAN-Anmeldedaten, Skripte und Apps zu extrahieren, während Conditional Access umgangen wird.

Repository anzeigen

OutOfTune

Inspiriert vom ursprünglichen Pytune, registriert OutOfTune ein nicht autorisiertes Gerät in Entra ID, meldet es bei Intune MDM an und prüft den resultierenden Compliance-Status.

Unterstützt nur Windows-Geräte, da dies mein Hauptziel war. Möglicherweise werden in Zukunft weitere hinzugefügt.

Begleitende Blogbeiträge:

  • 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/

Anforderungen

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

Funktionsweise

Die Kette läuft in Phasen ab, die jeweils auf dem in chain_state.json gespeicherten Zustand aufbauen.

root@kitploit:~
drs-token  ->  device-join  ->  device-token  ->  mdm-enroll  ->  mdm-checkin
  1. drs-token – ein DRS-Zugriffstoken abrufen (ROPC oder vorab erbeutet)
  2. device-join – ein neues Geräteobjekt in Entra ID registrieren, ein Gerätezertifikat abrufen
  3. device-token – sich als Geräteprinzipal authentifizieren, ein Intune-Registrierungstoken abrufen
  4. mdm-enroll – SOAP-Discovery + WS-Trust-Registrierung, ein MDM-Clientzertifikat abrufen
  5. mdm-checkin – OMA-DM SyncML-Checkin, Richtlinien abrufen, optional einen primären Benutzer festlegen

Verwendung

1. Ein DRS-Token abrufen

ROPC (Anmeldedaten bekannt):

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

Vorab erhaltenes Token:

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

2. Ein Gerät mit Entra ID verbinden

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

Erzeugt <GERÄTENAME>.pfx – das Gerätezertifikat. Passwort ist password.


3. Ein Geräteprinzipal-Token abrufen

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

Authentifiziert sich bei AAD als Geräteobjekt (nicht als Benutzer). Umgeht benutzerbezogene CA-Richtlinien.


4. Bei Intune MDM anmelden

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

Führt SOAP-Discovery gegen den MDM-Endpunkt durch und sendet dann eine WS-Trust PKCS10-Registrierungsanfrage. Erzeugt <GERÄTENAME>_mdm.pfx.

Verwenden Sie --profile, um die an Intune gesendeten Hardware-/OS-Attribute des Geräts zu fälschen (siehe Geräteprofile).


5. OMA-DM Checkin

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

Führt die OMA-DM SyncML-Schleife gegen r.manage.microsoft.com aus. Intune überträgt Konfigurationsprofile, App-Zuweisungen und alle anderen Richtlinien, die auf das Gerät abzielen. Nach Abschluss der Schleife werden die Erkenntnisse automatisch extrahiert und angezeigt.

Wenn -r angegeben wird, wird das Refresh-Token gegen ein manage.microsoft.com-Zugriffstoken eingetauscht und als Authorization: Bearer in jeder SyncML-Anfrage gesendet. Intune liest den UPN aus diesem Token und legt ihn als primären Benutzer des Geräts fest, sodass benutzerbezogene Compliance-Richtlinien gebunden werden. Sie müssen dies nur einmal mit -r ausführen, damit ein Benutzer zugewiesen wird; alle nachfolgenden Checkins können ohne Refresh-Token durchgeführt werden.

Ohne -r hat das Gerät keinen primären Benutzer.

Nach diesem ersten Checkin, wenn Sie sich für einen längeren Zeitraum (normalerweise 5–7 Tage) nicht erneut anmelden, könnte das Gerät aufgrund der Standardrichtlinie für „Ist aktiv“ nicht mehr konform sein. Abhängig von der Konfiguration von Intune kann das Gerät in eine Schonfrist eintreten, bevor es als nicht konform markiert wird. In diesem Fall führen Sie mdm-checkin erneut aus. Wenn Sie zuvor ein Refresh-Token verwendet haben, um einen primären Benutzer zuzuweisen, muss dieses nicht erneut übermittelt werden, da der primäre Benutzer jetzt im Intune-Backend gespeichert ist.

Flags

Extraktierte nützliche Informationen


Gespeicherte SyncML-Runden parsen

Rohe XML-Runden, die mit --save-syncml gespeichert wurden, ohne Live-Checkin erneut parsen.

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

Compliance-Status prüfen

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

Erstellt ein PRT aus dem Gerätezertifikat, tauscht es gegen ein IWService-Token ein und fragt IWService/Devices nach dem Compliance-Status des Geräts und etwaigen nicht konformen Regeln ab.

Verwenden Sie -r mit einem MFA-Sitzungs-Refresh-Token, wenn der Mandant CA für die Registrierungsressource MFA erfordert.


Apps und Skripte herunterladen

Ruft Win32-Apps und PowerShell-Skripte ab, die dem Gerät über die IME SideCarGateway zugewiesen sind. Verwendet nur das MDM-Clientzertifikat – kein Benutzertoken erforderlich.

root@kitploit:~
python OutOfTune.py download-apps
python OutOfTune.py download-apps --cert CORP-LAPTOP-01_mdm.pfx
  • PowerShell-Skripte werden in scripts/<PolicyId>.ps1 gespeichert
  • Win32-Apps werden vom CDN heruntergeladen, entschlüsselt und in apps/<AppName>/ extrahiert

Remediation-Skripte herunterladen

Ruft proaktive Remediation-Skripte (Erkennungs- und Behebungspaare) ab, die dem Gerät zugewiesen sind.

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

Jede Richtlinie wird in remediations/<PolicyId>/ gespeichert, mit:

  • detection.ps1 – das Erkennungsskript
  • remediation.ps1 – das Behebungsskript
  • params.json – Richtlinien-ID und etwaige Skriptparameter

Bereinigen

Wenn das Entfernen des Geräts aus Intune fehlschlägt, löschen Sie es aus Entra. Es fällt dann in eine Schonfrist in Intune und wird zu einem späteren Zeitpunkt automatisch wieder verwaltet.

Gerät aus Intune entfernen:

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

Geräteobjekt aus Entra ID entfernen:

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

Kettenfortschritt prüfen

root@kitploit:~
python OutOfTune.py status

Geräteprofile

Die Geräteattribute, die während der Registrierung und des Checkins an Intune gesendet werden, können über ein JSON-Profil vollständig gefälscht werden. Dies umfasst Hardware-Identifikatoren, Betriebssystemversion, Hersteller und alle selbst gemeldeten Compliance-CSP-Werte (BitLocker, Firewall, Defender, TPM, Secure Boot).

root@kitploit:~
python OutOfTune.py mdm-enroll --profile profiles/dell_win11_ent.json
python OutOfTune.py mdm-checkin   # Das Profil wird im Zustand gespeichert und automatisch wiederverwendet

Enthaltene Profile

DateiGerät
profiles/default.jsonStandardwerte (VMware / Win10 Enterprise)
profiles/dell_win11_ent.jsonDell Latitude 5540 / Windows 11 Enterprise 23H2

Profilfelder

Alle DeviceStatus-CSP-Werte werden selbst gemeldet und von Intune ohne unabhängige Überprüfung als vertrauenswürdig eingestuft. HAS-attestierte Compliance-Prüfungen (BitLockerEnabled, SecureBootEnabled über das HealthAttestation CSP) erfordern ein echtes TPM und können auf diese Weise nicht gefälscht werden.


Globale Flags

root@kitploit:~
--debug          ausführliches HTTP- und Token-Logging
--proxy <url>    Datenverkehr über einen Proxy leiten (z. B. http://127.0.0.1:8080)

Diese werden vor dem Befehl platziert:

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

Zertifikatsüberschreibungen

Wenn Sie Zertifikate von einem vorherigen Durchlauf haben oder bestimmte PFX-Dateien verwenden möchten:

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

Zustandsdatei

Alle Phasenausgaben werden in chain_state.json im Arbeitsverzeichnis gespeichert. Löschen Sie sie, um neu zu beginnen. Verwenden Sie status, um den aktuellen Zustand zu prüfen, ohne etwas auszuführen. Wenn Sie mit mehreren Geräten arbeiten, stellen Sie sicher, dass jedes seine eigene Zustandsdatei hat. Die Standard-Zustandsdatei kann am Anfang des Skripts auf das jeweilige Gerät geändert werden, mit dem Sie arbeiten. Seien Sie vorsichtig mit den Zertifikatsüberschreibungsoptionen; sie sind hauptsächlich für Debugging-Zwecke gedacht.

Danksagungen

Ein großer Dank geht an @temp43487580, der das ursprüngliche Pytune erstellt und dessen ursprüngliche Forschung dies ermöglicht hat.

  • 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
Tool herunterladen
FlagBeschreibung
--cert DATEIMDM-PFX-Datei – Gerätename wird automatisch aus dem Dateinamen abgeleitet
-r RTBenutzer-Refresh-Token – legt den primären Benutzer fest (nur einmal erforderlich)
-O VERZExtraktierte Artefakte in VERZ speichern (wifi/, vpn/, scripts/, certs/, add_values.json, policy_values.json)
--save-syncml VERZRohe SyncML-XML pro Runde in VERZ zur Offline-Wiederverarbeitung speichern
-o DATEIVollständige Konsolenausgabe in DATEI schreiben
KategorieGespeichert inHinweise
WLAN-Profilewifi/<SSID>.xml + _psk.txtKlartext-PSK extrahiert, falls vorhanden
VPN-Profilevpn/<name>.xmlVollständiges ProfileXML
Zertifikat-Payloadscerts/cert_N.b64Verschlüsselte PFX-Blobs (roh, noch nicht entschlüsselt)
SCEP-HerausforderungenangezeigtCA-Modellname, Challenge-URL
Skriptescripts/<name>.ps1PowerShell-Skripte, die über OMA-DM übertragen wurden
MSI-Download-URLsangezeigtDirekte CDN-Links für LOB-Apps
ODJ-Blobodj_blob.b64 + odj_strings.txtOffline Domain Join – lesbare Zeichenketten extrahiert
Add-Werteadd_values.jsonAlle anderen Add-Befehle (Root-CA-Zertifikate, MDE-Onboarding, Richtlinienkonfiguration)
Replace-Wertepolicy_values.jsonVon Intune gesetzte Policy-CSP-Werte
FeldCSPHinweise
os_versionDevDetail/SwVMin-/Max-OS-Versions-Compliance-Prüfungen
os_edition_syncmlWindowsLicensing/Edition4 = Enterprise, 48 = Pro
manufacturerDevInfo/ManEinige Richtlinien erlauben bestimmte Hersteller
mac_addressSOAP AdditionalContext/MACNur Nullen ist ein offensichtlicher Indikator
hw_dev_id_enrollSOAP AdditionalContext/HWDevID64 Hex-Zeichen
bitlocker_statusBitLocker/Status/DeviceEncryptionStatus2 = verschlüsselt (selbst gemeldet)
encryption_complianceDeviceStatus/Compliance/EncryptionCompliance1 = konform (selbst gemeldet)
firewall_statusDeviceStatus/Firewall/Status0 = an (selbst gemeldet)
secure_boot_stateDeviceStatus/SecureBootState1 = aktiviert (selbst gemeldet, nicht HAS-attestiert)
tpm_versionDeviceStatus/TPM/SpecificationVersionKein kryptografischer Nachweis
defender_enabledDefender/Health/DefenderEnabledtrue = läuft
defender_versionDefender/Health/DefenderVersionEinige Richtlinien erzwingen eine Mindestversion