Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
OutOfTune — Ferramenta de inscrição de dispositivos rogue para Entra ID e Intune MDM. Automatiza a junção de dispositivos, aquisição de token, inscrição MDM e check-in OMA-DM para extrair políticas, credenciais Wi-Fi, scripts e aplicativos, contornando o acesso condicional. | Kitploit
Ferramentas/GitHubGitHub/stra-x/outoftune
Autenticação e AutorizaçãoEscalada de PrivilégiosAnálise de VulnerabilidadesMovimento LateralAuditoria de ConfiguraçãoColeta de InformaçõesPós-ExploraçãoTestes de PenetraçãoSegurança na NuvemSegurança MóvelGerenciamento de Identidade e Acesso (IAM)
313há 4 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Red Teaming
GitHubstra-x/outoftune

OutOfTune

Ferramenta de inscrição de dispositivos rogue para Entra ID e Intune MDM. Automatiza a junção de dispositivos, aquisição de token, inscrição MDM e check-in OMA-DM para extrair políticas, credenciais Wi-Fi, scripts e aplicativos, contornando o acesso condicional.

Ver Repositório

OutOfTune

Inspirado pelo Pytune original, o OutOfTune registra um dispositivo invasor no Entra ID, inscreve-o no Intune MDM e verifica o estado de conformidade resultante.

Suporta apenas dispositivos Windows, pois este era meu objetivo principal; talvez adicione outros no futuro.

Blog de acompanhamento:

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

Requisitos

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

Como funciona

A cadeia é executada em fases, cada uma baseada no estado salvo em chain_state.json.

root@kitploit:~
drs-token  ->  device-join  ->  device-token  ->  mdm-enroll  ->  mdm-checkin
  1. drs-token - obter um token de acesso DRS (ROPC ou pré-phishing)
  2. device-join - registrar um novo objeto de dispositivo no Entra ID, obter um certificado de dispositivo
  3. device-token - autenticar como principal do dispositivo, obter um token de inscrição do Intune
  4. mdm-enroll - descoberta SOAP + inscrição WS-Trust, obter um certificado de cliente MDM
  5. mdm-checkin - check-in OMA-DM SyncML, buscar políticas, opcionalmente definir um usuário principal

Uso

1. Obter um token DRS

ROPC (credenciais conhecidas):

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

Token pré-obtido:

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

2. Associar um dispositivo ao Entra ID

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

Gera <NOMEDODISPOSITIVO>.pfx - o certificado do dispositivo. A senha é password.


3. Obter um token de principal do dispositivo

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

Autentica no AAD como o objeto do dispositivo (não como um usuário). Ignora políticas de CA com escopo de usuário.


4. Inscrever no Intune MDM

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

Executa a descoberta SOAP contra o endpoint MDM e, em seguida, envia uma solicitação de inscrição WS-Trust PKCS10. Gera <NOMEDODISPOSITIVO>_mdm.pfx.

Use --profile para falsificar os atributos de hardware/OS do dispositivo enviados ao Intune (consulte Perfis de Dispositivo).


5. Check-in 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

Executa o loop OMA-DM SyncML contra r.manage.microsoft.com. O Intune enviará perfis de configuração, atribuições de aplicativos e quaisquer outras políticas direcionadas ao dispositivo. Após a conclusão do loop, as informações são automaticamente extraídas e exibidas.

Se -r for fornecido, o refresh token é trocado por um token de acesso do manage.microsoft.com e enviado como Authorization: Bearer em cada solicitação SyncML. O Intune lê o UPN deste token e o define como o usuário principal do dispositivo, fazendo com que as políticas de conformidade com escopo de usuário sejam vinculadas. Você só precisa executar uma vez com -r para que um usuário seja atribuído; todos os check-ins subsequentes podem ser executados sem um refresh token.

Sem -r, o dispositivo não terá usuário principal.

Após este check-in inicial, se você não fizer check-in novamente por um período prolongado (geralmente 5-7 dias), o dispositivo pode ficar fora de conformidade devido à política padrão "Is Active". Dependendo da configuração do Intune, o dispositivo pode entrar em um período de carência antes de ser marcado como não conforme. Se isso acontecer, execute mdm-checkin novamente. Se você usou anteriormente um refresh token para atribuir um usuário principal, isso não precisa ser enviado novamente, pois o usuário principal agora está armazenado no backend do Intune.

Flags

Informações úteis extraídas


Analisar rodadas SyncML salvas

Re-analisar as rodadas XML brutas salvas com --save-syncml sem executar um check-in ao vivo.

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

Verificar estado de conformidade

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

Gera um PRT a partir do certificado do dispositivo, troca-o por um token IWService e consulta IWService/Devices pelo estado de conformidade do dispositivo e quaisquer regras não conformes.

Use -r com um refresh token de sessão MFA se o CA do locatário exigir MFA para o recurso de inscrição.


Baixar aplicativos e scripts

Busca aplicativos Win32 e scripts PowerShell atribuídos ao dispositivo via IME SideCarGateway. Usa apenas o certificado do cliente MDM — nenhum token de usuário é necessário.

root@kitploit:~
python OutOfTune.py download-apps
python OutOfTune.py download-apps --cert CORP-LAPTOP-01_mdm.pfx
  • Scripts PowerShell são salvos em scripts/<PolicyId>.ps1
  • Aplicativos Win32 são baixados do CDN, descriptografados e extraídos para apps/<AppName>/

Baixar scripts de remediação

Busca scripts de remediação proativa (pares de detecção + remediação) atribuídos ao dispositivo.

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

Cada política é salva em remediations/<PolicyId>/ contendo:

  • detection.ps1 — o script de detecção
  • remediation.ps1 — o script de remediação
  • params.json — ID da política e quaisquer parâmetros de script

Limpeza

Se a remoção do dispositivo do Intune falhar, exclua-o do Entra. Ele então entrará em um período de carência no Intune e será automaticamente removido posteriormente.

Remover o dispositivo do Intune:

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

Remover o objeto do dispositivo do Entra ID:

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

Verificar progresso da cadeia

root@kitploit:~
python OutOfTune.py status

Perfis de Dispositivo

Os atributos do dispositivo enviados ao Intune durante a inscrição e o check-in são totalmente falsificáveis através de um perfil JSON. Isso inclui identificadores de hardware, versão do SO, fabricante e todos os valores de CSP de conformidade auto-relatados (BitLocker, Firewall, Defender, TPM, Secure Boot).

root@kitploit:~
python OutOfTune.py mdm-enroll --profile profiles/dell_win11_ent.json
python OutOfTune.py mdm-checkin   # o perfil é salvo no estado e reutilizado automaticamente

Perfis incluídos

ArquivoDispositivo
profiles/default.jsonValores padrão (VMware / Win10 Enterprise)
profiles/dell_win11_ent.jsonDell Latitude 5540 / Windows 11 Enterprise 23H2

Campos do perfil

Todos os valores de CSP DeviceStatus são auto-relatados e confiados pelo Intune sem verificação independente. As verificações de conformidade atestadas por HAS (BitLockerEnabled, SecureBootEnabled via CSP HealthAttestation) exigem um TPM real e não podem ser falsificadas desta forma.


Flags globais

root@kitploit:~
--debug          log detalhado de HTTP + tokens
--proxy <url>    rotear tráfego através de um proxy (ex.: http://127.0.0.1:8080)

Estes vão antes do comando:

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

Substituições de certificado

Se você tiver certificados de uma execução anterior ou quiser usar arquivos PFX específicos:

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

Arquivo de estado

Todas as saídas de fase são salvas em chain_state.json no diretório de trabalho. Exclua-o para começar do zero. Use status para inspecionar o estado atual sem executar nada. Se estiver lidando com vários dispositivos, certifique-se de que cada um tenha seu próprio arquivo de estado. O arquivo de estado padrão pode ser alterado no início do script para o dispositivo com o qual você está mexendo. Tenha cuidado com as opções de substituição de certificado; elas são principalmente para fins de depuração.

Créditos

Uma enorme quantidade de crédito vai para @temp43487580, que criou o Pytune original e cuja pesquisa original tornou isso possível

  • 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
Baixar ferramenta
FlagDescrição
--cert FILEPFX MDM a ser usado — o nome do dispositivo é derivado automaticamente do nome do arquivo
-r RTRefresh token do usuário — define o usuário principal (necessário apenas uma vez)
-O DIRSalvar artefatos extraídos em DIR (wifi/, vpn/, scripts/, certs/, add_values.json, policy_values.json)
--save-syncml DIRSalvar XML SyncML bruto por rodada em DIR para análise posterior offline
-o FILEEscrever toda a saída do console em FILE
CategoriaSalvo emNotas
Perfis Wi-Fiwifi/<SSID>.xml + _psk.txtPSK em texto puro extraído, se presente
Perfis VPNvpn/<name>.xmlProfileXML completo
Payloads de certificadocerts/cert_N.b64Blobs PFX criptografados (brutos, ainda não descriptografados)
Desafios SCEPexibidoNome do modelo CA, URL do desafio
Scriptsscripts/<name>.ps1Scripts PowerShell enviados via OMA-DM
URLs de download MSIexibidoLinks diretos de CDN para aplicativos LOB
Blob ODJodj_blob.b64 + odj_strings.txtOffline Domain Join — strings legíveis extraídas
Valores Addadd_values.jsonTodos os outros comandos Add (certificados de CA raiz, integração MDE, configuração de políticas)
Valores Replacepolicy_values.jsonValores de CSP de política definidos pelo Intune
CampoCSPNotas
os_versionDevDetail/SwVVerificações de conformidade de versão mínima/máxima do SO
os_edition_syncmlWindowsLicensing/Edition4 = Enterprise, 48 = Pro
manufacturerDevInfo/ManAlgumas políticas permitem lista de fabricantes
mac_addressSOAP AdditionalContext/MACTodos zeros é um indicador óbvio
hw_dev_id_enrollSOAP AdditionalContext/HWDevID64 caracteres hexadecimais
bitlocker_statusBitLocker/Status/DeviceEncryptionStatus2 = criptografado (auto-relatado)
encryption_complianceDeviceStatus/Compliance/EncryptionCompliance1 = conforme (auto-relatado)
firewall_statusDeviceStatus/Firewall/Status0 = ligado (auto-relatado)
secure_boot_stateDeviceStatus/SecureBootState1 = habilitado (auto-relatado, não atestado por HAS)
tpm_versionDeviceStatus/TPM/SpecificationVersionNenhuma prova criptográfica
defender_enabledDefender/Health/DefenderEnabledtrue = em execução
defender_versionDefender/Health/DefenderVersionAlgumas políticas impõem versão mínima