AS ABAP Credential-Material Taxonomy
AS ABAP stores secrets in several formats, each with its own storage location, protection scheme, and recovery technique. This page maps every ABAP credential-material type an attacker encounters after gaining a foothold to where it lives, how it is recovered, and the page documenting that technique.
Most are post-compromise primitives: they turn one foothold (OS command execution, table read, or file access) into credentials that enable lateral movement across the whole landscape. The recurring theme is that SAP’s default protection for stored secrets is frequently obfuscation, not encryption (SAP itself says so for Secure Storage in SAP Note 1902611) - so the control is protecting the storage and the key, not the format.
Credential material on the non-ABAP platforms lives in that platform’s own tree - see the per-service pages linked at the bottom.
Recovered credential material - RFC/DB destination passwords, ticket-signing keys, OAuth secrets - lets an attacker authenticate as legitimate users and services across trusting systems without any further exploitation, defeating the authorization concept landscape-wide. A single compromised application server frequently yields the keys to every system it trusts (RFC and SSO). Impact spans confidentiality, integrity, and availability across the trust domain.
ABAP credential material, by type - recover the ciphertext/file via the foothold, then decrypt with the referenced tool (lead with an existing PoC, do not re-implement crypto):
| Credential material | Where it lives | Protection | Recovery | Page |
|---|---|---|---|---|
Password hashes (USR02 etc.) | ABAP DB tables | BCODE/PASSCODE (weak) / PWDSALTEDHASH | table read -> hashcat/John | Password hashes |
| MYSAPSSO2 logon tickets | issued/verified via STRUSTSSO2 | PKCS#7 sig by SAPSYS.pse key | steal PSE+PIN -> forge | MYSAPSSO2 forgery |
SAPSYS.pse + cred_v2 (PSE PIN) | $SECUDIR (OS) | PIN-wrapped; cred_v2 self-decrypts as <sid>adm | OS read as <sid>adm | MYSAPSSO2 forgery |
ABAP Secure Storage (RSECTAB) | ABAP DB table | default 3DES key (obfuscation, Note 1902611) | table read -> ERPScan RSECTAB algo | Secure Store decryption |
SSFS (SSFS_<SID>.KEY/.DAT) | .../rsecssfs/ (OS) | RSECCipher, hardcoded KEK | file read -> pysap SAPSSFS | Secure Store decryption |
| OAuth 2.0 client secrets | /OA2C/CS_* in Secure Storage | as Secure Storage | OA2C config read + SecStore decrypt | Secure Store decryption |
General methodology: after a foothold, harvest every reachable store above, decrypt with the referenced PoC, then follow the recovered RFC/HTTP/DB destinations and SSO trust to pivot (see Lateral movement).
- Configure an individual key where the default is obfuscation-only:
SECSTOREindividual key (Note 1902611), per-system SSO certs. - Restrict OS-level access to
$SECUDIRand.../rsecssfs/to the relevant service account only; no world-readable key/PSE files. - Restrict table read (
S_TABU_DIS/S_TABU_NAM,RFC_READ_TABLE) on credential tables (USR02,RSECTAB,OA2C_*). - Harden the upstream footholds (RFC Gateway ACLs,
SXPG, CVE patching) that grant the OS/DB access these recoveries depend on. - Prune SSO/RFC trust (
STRUSTSSO2,SMT1). - After suspected exposure, rotate the key AND the downstream secrets it protected - rotating the key alone is insufficient.
- OS-level file-access auditing on
$SECUDIR/rsecssfsdirectories. - Security Audit Log (
SM20/RSAU):RFC_ABAP_INSTALL_AND_RUN,SXPGexternal commands,RFC_READ_TABLEon credential tables, SSO-ticket logons from unusual sources. - Watch for the specific IOCs in the individual pages (e.g. the
sapmap@pentestSSH key, virtual SAP*EUPevents).
- SAP Note 1902611 - Secure Storage default key is obfuscation only
- pysap (OWASP CBAS) - SSFS reference
- Secure Store decryption
- MYSAPSSO2 forgery
- Password hashes
- Lateral movement
- Other platforms’ credential material: AS Java Credential Material, BTP Credential Material, Cloud Connector Admin Access & Keystore/SSFS Extraction, HANA Default Users & Credential Harvesting
