AD RMS Root-Key Extraction Can Permanently Expose Protected Documents

Summary
The article details how an AD RMS Service Group member can extract a software-held SLC private key, decrypt documents protected by the deployment offline, and forge trusted identities. It explains detection gaps and limits of remediation.
Key points
- A member of the AD RMS Service Group can export the SLC private key through the admin SOAP surface; the article assumes the member’s credentials are already compromised.
- With the extracted key, an attacker can decrypt any document protected by that deployment offline, without RMS rights or further server access.
- The key can also sign forged Rights Account Certificates, allowing an attacker to impersonate an identity and request licenses for documents that identity may access.
- The article says TPD exports are not recorded in the AD RMS logging database and have no default Windows event; IIS logs can capture the admin endpoint POST if SOAP bodies are monitored.
- The SLC has no rotation mechanism that revokes access to previously protected files; rebuilding a deployment does not make documents sealed to an old key unreadable.
- Recommended controls include restricting and auditing Service Group membership, protecting TPD export files, using TLS and Extended Protection for Authentication, and using an HSM-backed key.
- The analysis concerns on-premises AD RMS; the article says cloud-only Azure Information Protection or Purview deployments are not affected, while HYOK deployments using on-premises AD RMS share the exposure.
Article Details
- Attack Vectors
- The demonstrated attack assumes credentials for an AD RMS Service Group member are already compromised. That membership permits a remote Trusted Publishing Domain export through the administrative SOAP surface, using an attacker-chosen export password to recover the deployment's SLC private key.
- For software-keyed deployments, the article identifies the configuration database as another location containing encrypted SLC key material. The keyprotection administrative operation reveals the database connection string to a Service Group member.
- Stored Trusted Publishing Domain exports contain password-wrapped SLC private key material. Reachable copies protected with weak or guessable passwords can be unwrapped offline; the article describes an unsalted, single-pass SHA-256 password derivation and a hardcoded IV.
- The extracted SLC private key allows offline decryption and removal of protection from any available document sealed to that key, without server contact, user credentials, or document access rights.
- The demonstrated certificate forgery replaces a genuine Rights Account Certificate's identity, public key, and validity, then signs it with the extracted SLC key. The live cluster accepts the forged identity and issues a use license when that identity has actual rights to the document.
- The forged certificate does not supply authorization or group membership. A negative control using an identity without document rights was accepted as an identity but denied a use license.
- The article identifies on-premises AD RMS-backed HYOK deployments as within scope, while stating that default Azure Information Protection and Microsoft Purview cloud configurations are not exposed through this administrative SOAP extraction path.
- Defensive Notes
- Treat AD RMS Service Group membership as highly privileged: use Protected Users, require privileged-access workstations, review membership quarterly, and alert on membership changes.
- Treat Trusted Publishing Domain exports as private-key material. Use strong passwords, encrypted storage, access auditing, and restrictive share and NTFS permissions; avoid general-purpose shares.
- Monitor IIS W3SVC logs for POST requests to /_wmcs/admin/ and parse SOAP bodies to identify ExportTrustedPublishingDomain. The article reports that these exports do not appear in the RMS application logging database and generate no Windows Event ID by default.
- Use TLS to protect SOAP traffic and Extended Protection for Authentication to mitigate NTLM relay against the administrative surface.
- Use HSM-backed key storage to prevent direct extraction of usable private-key material from the configuration database. The article's statements about TPD exports from HSM-backed deployments are inconsistent: an earlier section says export may work when administrators allow it, while remediation says exported material cannot be unwrapped without the hardware.
- Rebuilding a deployment or introducing a new SLC does not revoke an extracted key's ability to decrypt existing documents protected by that key. The article identifies decommissioning and re-protecting sensitive documents as the way to address that historical exposure.
- Changing an export password does not invalidate previously copied exports. Remove exposed files, tighten permissions, and assess whether the underlying key was already recovered.
- The demonstrated impact is compromise of RMS-protected content and RMS identity trust, not acquisition of AD credentials or domain compromise.
MITRE ATT&CK
T1078.002 · Domain AccountsThe lab demonstration uses already-compromised credentials for a domain account in the AD RMS Service Group to authenticate to the administrative SOAP surface and export the SLC key.T1552.004 · Private KeysSharpRMS extracts the deployment's SLC private key through a Trusted Publishing Domain export; the article also identifies stored TPD exports and software-keyed configuration database material as recovery paths.T1649 · Steal or Forge Authentication CertificatesSharpRMS signs forged Rights Account Certificates with the extracted SLC private key, substitutes an attacker-controlled keypair, and obtains use licenses as an identity authorized to read the protected document.
People
Aaron MargosisAcknowledged for feedback improving the research's accuracy and argument.Andrew SchwartzArticle author who describes the server-side SLC extraction and certificate forgery research and reports porting prior client-side attack code into SharpRMS.Charlie ClarkAcknowledged as @exploitph for helping threat-model the attacks and refactoring SharpRMS.Christian MainkaNamed coauthor of the DisARMS research at WOOT 2016, which demonstrated client-side attacks against AD RMS protection.Enrique SaggeseAuthor of cited AD RMS architecture material used as the basis for the article's certificate and license relationship diagram.Jörg SchwenkNamed coauthor of the DisARMS research at WOOT 2016, which demonstrated client-side attacks against AD RMS protection.Martin GrotheNamed coauthor of the DisARMS research at WOOT 2016, which demonstrated client-side attacks against AD RMS protection.Paul RöslerNamed coauthor of the DisARMS research at WOOT 2016, which demonstrated client-side attacks against AD RMS protection.Sean MetcalfAcknowledged for feedback improving the research's accuracy and argument.Susannah MattAcknowledged for reviewing, formatting, and publishing the article.
Vendors
Products
AD RMSThis blog breaks down how to extract an AD Rights Management Services deployment's root key as an AD RMS Service Group member, ultimately gaining access to every document that deployment ever protected, including filesAzure Information Protectionto the live extraction. It matters for stored backups. Microsoft's Migrate from AD RMS to Azure Information Protection guidance has admins export the Trusted Publishing Domains, noting that "the trusted publishingAzure Key Vaultconfiguration. The Azure tenant key lives in Microsoft's infrastructure,or in a customer-managed Azure Key Vault for bring your own key (BYOK) deployments. It is not reachable from a compromised on-premisesMicrosoft PurviewThis series covers on-premises AD RMS. The finding does not apply to Azure Information Protection or Microsoft Purview in their default configuration. The Azure tenant key lives in Microsoft's infrastructure,or in aWordA document protected for tony.soprano and silvio.dante, created by Tony, saved to the workstation. The protection is visible in the file's raw bytes, before Word ever runs:
Tools
Mimikatzbut cuts in a specific direction. A Golden Ticket's validity is set by the attacker at forgery time, and Mimikatz defaults to 10 years because that is a round number that fits the Kerberos lifetime field. The SLC'sMS-RMS-Attacks- RUB-NDS: MS-RMS-Attacks (https://github.com/RUB-NDS/MS-RMS-Attacks)(reference implementation for the DisARMS attacks)SharpRMSThe SharpRMS tool forges the signature and Rights Account Certificate (RAC) needed to decrypt the extracted slc.bin offline, unlocking every document the deployment protected.