Howto: SAP Security #4 – RFC

Im vierten Teil der  Serie „Howto SAP Security“ (Gateway , Netzwerk, Datenbank ) ist das Thema ABAP RFC.

Sicherheitsrisiken bei ABAP RFC

Die Remote Function Calls (RFC) finden breite Anwendung in SAP ABAP Systemen. Ein Benutzer kann ABAP Funktionen, die Remote aufrufbar sind, von anderen Systemen aus aufrufen.

Dazu muss er jedoch die System ID, den Mandanten, sowie die Zugangsdaten des Benutzers kennen.

Es gibt weit über 30.000 RFC Funktionen im ABAP Standard. Diese sind in unterschiedlichen Gruppen gebündelt.

SAP stellt verschiedene Lösungen bereit, um die RFCs aufrufen zu können. Dazu zählen unter anderem das RFC SDK, NW RFC SDK oder JCo . In den Beispielen sind auch Programme enthalten, die direkt verwendet werden können, um RFCs aufzurufen. Beispielsweise startrfc.exe .

SAP-Systeme ermöglichen nicht nur Benutzern RFC für Aufrufe zu verwenden, sondern nutzen diesen Weg auch selbst zur Kommunikation mit anderen Systemen.

SAP RFC Kommunikation
RFC Kommunikation bei SAP-Systemen (Quelle SAP)

Anonymes RFC

Aus Sicherheitsaspekten ist es vorteilhaft, wenn eine Aktion im System immer einem Benutzer zugeordnet werden kann und ebenso ein Benutzer die erforderlichen Berechtigungen für diese Aktion besitzen muss.

Eben dieses Konzept hebeln anonyme RFC Aufrufe aus. Dessen muss man sich bewusst sein, wenn man diese Aufrufe erlaubt.

Typische anonyme Funktionen sind:

  • RFC_PING: Einfache Prüfung der Erreichbarkeit
  • RFC_SYSTEM_INFO: Informationen zu dem System (OS, Datenbank, Version, Identifier)
  • RFC_GET_LOCAL_DESTINATIONS: Liefert alle momentan aktiven RFC-Destinations an derselben Datenbank
  • RFC_GET_LOCAL_SERVERS: Informationen zu den lokalen Servern
  • SYSTEM_INVISIBLE_GUI: Setzt die Sichtbarkeit der aktuellen SAP GUI auf unsichtbar.

Mit diesen Funktionen kann ein Angreifer bereits Informationen über das System sammeln oder die SAP GUI unsichtbar im Hintergrund steuern.

Standardzugangsdaten

Standardbenutzer dürfen in der Regel RFC Aufrufe tätigen. Teilweise mit weitreichenden Berechtigungen. Faktisch kann dies zu einem Vollzugriff der Systeme über das Einfallstor RFC führen.

Folgende User können hierzu verwendet werden:

USER — Passwort — Mandanten

SAP* — 06071992, PASS — 000,001,066, Kundenmandanten
DDIC — 19920706 — 000, 001, Kundenmandanten
TMSADM — PASSWORD,$1Pawd2& — 000
SAPCPIC — ADMIN — 000,001
EARLYWATCH — SUPPORT — 066

Einige dieser Benutzer sind in der Lage über RFC weitere Benutzer anzulegen und diese mit SAP_ALL auszustatten.

SMB Relay Angriffe

Bei dieser Art von Angriffen, wird das SAP-System dazu gebracht eine beliebige Datei auf dem System des Angreifers über das Netzwerk anzufragen.
Bei einer solchen Anfrage sendet das SAP-System dann automatisch die Zugangsdaten des <SID>ADM Benutzers an das System des Angreifers. Der kann diesen Hash dann mit Hashcat oder John in Klartext überführen.

Es gibt viele RFC Funktionen die für diesen Angriff anfällig sind, dazu zählen auch diese:

EPS_DELETE_FILE
EPS_CLOSE_FILE
CLBA_CLASSIF_FILE_REMOTE_HOST
CLBA_UPDATE_FILE_REMOTE_HOST
EDI_DATA_INCOMMING
RZL_READ_FILE

Befehlsausführung

Einige Funktionen wie SXPG_COMMAND_EXECUTE erlauben sogar die Ausführung von Betriebssystembefehlen. Allerdings nur wenn man existierende Schwachstellen in einigen Kommandos ausnutzt. Dennoch zeigt dies wie schnell ein RFC Aufruf zu der Ausführung eines Befehls auf OS-Ebene als <SID>ADM erfolgen kann.

Schutzmaßnahmen

Zum Schutz vor den hier genannten Angriffswegen reichen schon wenige Schritte aus.

Schränken Sie zunächst die Nutzung von anonymen RFC-Aufrufen über den Parameter auth/rfc_authority_check ein.
Dann ändern Sie Standardzugangsdaten ab.
Zuletzt gilt es RFC Berechtigungen restriktiv zu vergeben. Nur Benutzer die RFC wirklich benötigen dürfen Zugriff erhalten und auch nur in dem notwendigen Umfang. Ein S_RFC * ist zwar einfach, aber ermöglicht auch die hier vorgestellten Angriffe. Besser ist es moderne Schutzmaßnahmen wie SAP UCON zu nutzen.