Kurzfassung: Wer Daten herausschleusen will, braucht keinen eigenen Server mehr - ein Chat-Webhook von Discord, Slack oder Telegram genügt. Die Verbindung geht zu einem bekannten, oft erlaubten Dienst und fällt im Netzwerk kaum auf. Für den Verteidiger wird der Abfluss dort sichtbar, wo ein Prozess eine Webhook-URL aufruft: PowerShell mit Invoke-WebRequest, curl mit der URL oder ein Datei-Upload per Multipart. Drei sigma-cli-validierte Sigma-Regeln, dazu Härtung und der Test im Lab. Serie "Angriff erkennen".
Am Ende der Angriffskette stehen die gesammelten Daten, und sie sollen das Netz verlassen. Klassisch geschieht das über Werkzeuge wie rclone in die Cloud oder über den bestehenden C2-Kanal. Der Weg über einen Webhook ist bequemer: Der Angreifer legt in einem Discord-, Slack- oder Telegram-Kanal einen Webhook an und schickt die Daten per einfachem HTTP-POST dorthin. Es braucht keine eigene Infrastruktur, und der Zielserver gehört einem populären Dienst, den viele Firmen nicht blockieren. Genau diese Bequemlichkeit macht den Weg bei Infostealern beliebt. Dieser Beitrag nimmt die Erkennung in den Blick und bleibt auf der Verteidigerseite.
Einordnung in ATT&CK: Exfiltration Over Webhook (T1567.004), eine Untertechnik von Exfiltration Over Web Service. MITRE führt sie in der Taktik Exfiltration; in dieser Serie steht sie entsprechend in der Spalte Exfiltration. Sie grenzt sich von der Exfiltration über den C2-Kanal ab, weil hier kein eigener Server beteiligt ist, sondern ein fremder, legitimer Webdienst als Briefkasten dient.
Was der Angreifer tut
Die Exfiltration über einen Webhook läuft - auf der Ebene des Prinzips, nicht als Anleitung - in wenigen Mustern ab:
- Einen Webhook einrichten. In einem Discord-, Slack- oder Telegram-Kanal wird eine Webhook-URL erzeugt, die Nachrichten und Dateien ohne weitere Anmeldung entgegennimmt.
- Die URL in den Code legen. Die Webhook-URL wird fest in das Schadprogramm oder Skript geschrieben; sie ist der einzige benötigte Endpunkt.
- Daten per POST senden. Gesammelte Inhalte werden per HTTP-POST an die URL geschickt - als Textnachricht oder als angehängte Datei im Multipart-Format.
- Im erlaubten Verkehr verschwinden. Da das Ziel ein bekannter Dienst ist, geht der Abfluss im normalen Web-Verkehr unter und braucht keine auffällige eigene Gegenstelle.
Für die Erkennung ist entscheidend: Der Abfluss hinterlässt auf dem Endpunkt eine klare Spur - einen Prozess, dessen Befehlszeile eine Webhook-URL eines dieser Dienste enthält. Genau daran setzen die Regeln an.
Welche Logquellen die Technik zeigt
- Prozess-Telemetrie zuerst. Event 4688 und Sysmon Event 1 zeigen PowerShell, curl oder ein anderes Werkzeug mit der Webhook-URL im Klartext der Befehlszeile. Die wichtigste Quelle.
- Netzwerk und Proxy. Proxy- und DNS-Logs zeigen Verbindungen zu discord.com, hooks.slack.com oder api.telegram.org; vor allem ausgehende POSTs mit Datenmengen sind auffällig.
- Skript-Telemetrie. PowerShell Script Block Logging macht die Webhook-URL auch dann sichtbar, wenn sie in einem Skript steht und nicht direkt auf der Kommandozeile.
- Werkzeug-Kontext. curl ist seit Langem Teil von Windows; Grundlagen zum Missbrauch mitgelieferter Werkzeuge unter Living off the Land.
Das Muster im Log
Drei Signale tragen. Das erste ist PowerShell, das mit Invoke-WebRequest oder Invoke-RestMethod eine Webhook-URL eines Chat-Dienstes aufruft. Das zweite ist curl mit einer solchen URL. Das dritte ist ein Datei-Upload: ein Multipart-Marker wie -F oder --data-binary zusammen mit der Webhook-URL, unabhängig vom Werkzeug. Legitime Treffer gibt es durchaus - viele Teams melden Status oder Alarme per Webhook in ihren eigenen Kanal. Auffällig wird es, wenn der Aufruf aus einem ungewöhnlichen Prozess stammt, eine Datei anhängt oder der Zielkanal nicht zu den bekannten Firmen-Webhooks gehört. Der Blick auf Werkzeug, Zielhost und angehängte Datei trennt den Alltag vom Angriff.
Drei Sigma-Regeln
Die Regeln sind mit sigma-cli geprüft und nehmen die drei Signale: PowerShell an einen Webhook, curl an einen Webhook und den Datei-Upload per Multipart. Alle drei werten die Prozess-Telemetrie aus und suchen die Webhook-Hosts der gängigen Chat-Dienste.
1. PowerShell sendet an Chat-Webhook (T1567.004). PowerShell mit Invoke-WebRequest, Invoke-RestMethod oder Upload-Methoden auf eine Webhook-URL. Die Regel steht auf level: high.
title: PowerShell sendet an Chat-Webhook
id: 4a7c1e05-9d82-4b36-a1f7-2c6e8b3d5a09
status: experimental
description: |
Erkennt, dass PowerShell Daten an einen Chat-Webhook sendet - Discord, Slack oder Telegram. Angreifer
und Infostealer nutzen diese Webhooks, um gestohlene Daten an einen beliebten, oft erlaubten Dienst
abfliessen zu lassen (Exfiltration ueber Webhook). Ein PowerShell-Aufruf mit Invoke-WebRequest oder
Invoke-RestMethod auf eine Webhook-URL ist ein starkes Signal.
references:
- https://attack.mitre.org/techniques/T1567/004/
author: blue-team.net
tags:
- attack.exfiltration
- attack.t1567.004
logsource:
product: windows
category: process_creation
detection:
sel_ps:
Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
sel_method:
CommandLine|contains:
- 'Invoke-WebRequest'
- 'Invoke-RestMethod'
- 'iwr '
- 'irm '
- 'UploadString'
- 'UploadFile'
sel_hook:
CommandLine|contains:
- 'discord.com/api/webhooks'
- 'discordapp.com/api/webhooks'
- 'hooks.slack.com'
- 'api.telegram.org/bot'
condition: sel_ps and sel_method and sel_hook
falsepositives:
- Legitime Benachrichtigungs-Skripte senden an Chat-Webhooks - bekannte Skripte und Hosts als Baseline ausnehmen
level: high
2. curl sendet an Chat-Webhook (T1567.004). curl.exe mit einer Webhook-URL von Discord, Slack oder Telegram. Ebenfalls level: high.
title: curl sendet an Chat-Webhook
id: 6b9e2a14-3c57-4d68-8f21-7a4d9c2b6e35
status: experimental
description: |
Erkennt, dass curl.exe Daten an einen Chat-Webhook sendet - Discord, Slack oder Telegram. Nach dem
Sammeln von Daten nutzen Angreifer curl, um sie per HTTP-POST an einen Webhook abzugeben (Exfiltration
ueber Webhook). curl auf eine solche Webhook-URL ist ausserhalb von Automatisierung ungewoehnlich.
references:
- https://attack.mitre.org/techniques/T1567/004/
author: blue-team.net
tags:
- attack.exfiltration
- attack.t1567.004
logsource:
product: windows
category: process_creation
detection:
sel_curl:
Image|endswith: '\curl.exe'
sel_hook:
CommandLine|contains:
- 'discord.com/api/webhooks'
- 'discordapp.com/api/webhooks'
- 'hooks.slack.com'
- 'api.telegram.org/bot'
condition: sel_curl and sel_hook
falsepositives:
- Legitime Automatisierung meldet Status an Chat-Webhooks - bekannte Hosts und Aufrufe als Baseline ausnehmen
level: high
3. Datei per Multipart-Upload an Chat-Webhook angehängt (T1567.004). Ein Upload-Marker wie -F oder --data-binary zusammen mit einer Webhook-URL. Ebenfalls level: high.
title: Datei per Multipart-Upload an Chat-Webhook angehaengt
id: 8c1f3d26-5a79-4e84-9b02-3d6c7a4e9f18
status: experimental
description: |
Erkennt, dass ein Prozess eine Datei per Multipart-Formular an einen Chat-Webhook anhaengt - erkennbar
an einem Upload-Marker wie -F, --form oder --data-binary zusammen mit einer Webhook-URL. Genau so laden
Angreifer gesammelte Dateien an Discord, Slack oder Telegram hoch (Exfiltration ueber Webhook). Der
Datei-Upload an eine Webhook-URL ist ein deutliches Signal, unabhaengig vom genutzten Werkzeug.
references:
- https://attack.mitre.org/techniques/T1567/004/
author: blue-team.net
tags:
- attack.exfiltration
- attack.t1567.004
logsource:
product: windows
category: process_creation
detection:
sel_upload:
CommandLine|contains:
- ' -F '
- '--form'
- '--data-binary'
- 'multipart/form-data'
sel_hook:
CommandLine|contains:
- 'discord.com/api/webhooks'
- 'discordapp.com/api/webhooks'
- 'hooks.slack.com'
- 'api.telegram.org/bot'
condition: sel_upload and sel_hook
falsepositives:
- Legitime Upload-Automatisierung an Chat-Webhooks - bekannte Hosts und Aufrufe als Baseline ausnehmen
level: high
Härtung: der Angriff, der ins Leere läuft
- Webhook-Dienste am Proxy steuern. Zugriff auf Discord-, Slack- und Telegram-Webhook-Endpunkte auf die wirklich benötigten Kanäle beschränken und den Rest am Web-Proxy blockieren. Die wirksamste Maßnahme gegen diesen Weg.
- Ausgehenden Verkehr filtern. POSTs an Webhook-Hosts gezielt protokollieren und ungewöhnliche Datenmengen aufzeigen, statt dem Verkehr zu bekannten Diensten blind zu vertrauen.
- Skript-Umgebung einschränken. Mit Script Block Logging und Constrained Language Mode die Nutzung von PowerShell für solche Uploads sichtbar und schwerer machen.
- Gezielt überwachen. Prozesse mit Webhook-URLs der Chat-Dienste in der Befehlszeile als feste Erkennung führen, besonders in Verbindung mit einem Datei-Upload.
Der Test
Die Erkennung lässt sich im Lab gefahrlos prüfen, auf einem isolierten System mit aktivem Sysmon - mit einem eigenen Test-Webhook oder einer harmlosen Platzhalter-URL, ohne echte Daten:
- Für Regel 1 mit PowerShell und Invoke-RestMethod eine kurze Testnachricht an eine Webhook-URL senden und prüfen, dass Event 4688 die URL in der Befehlszeile zeigt.
- Für Regel 2 denselben Aufruf mit curl.exe nachstellen und den Treffer in der Prozess-Telemetrie kontrollieren.
- Für Regel 3 mit curl und -F eine harmlose Testdatei an die Webhook-URL anhängen und prüfen, dass der Multipart-Marker zusammen mit dem Host erkannt wird.
- Breiter wird der Test mit den Fällen zu T1567 aus Atomic Red Team.
Fehlalarme und Tuning
- Legitime Benachrichtigungen. Viele Teams senden Build-, Monitoring- oder Alarmmeldungen per Webhook. Bekannte Skripte, Hosts und Zielkanäle als Baseline ausnehmen, bevor die Regeln scharf geschaltet werden.
- Automatisierung. CI/CD- und Monitoring-Systeme rufen Webhooks regelmäßig auf. Diese bekannten Quellen nach Prozess und Zielkanal ausnehmen.
- Datei-Upload wiegt schwerer. Eine reine Textnachricht an einen bekannten Kanal ist meist harmlos; ein Datei-Upload an einen unbekannten Webhook ist das deutlichere Signal - danach priorisieren.
- Kette schlägt Einzelzeile. Der Webhook-Aufruf kurz nach einer Datensammlung oder Archivierung ist weit aussagekräftiger als ein Treffer allein - die Korrelation schärft die Bewertung.
Fazit
Die Exfiltration über einen Webhook ist Datendiebstahl ohne eigene Infrastruktur: Ein Kanal bei Discord, Slack oder Telegram genügt als Briefkasten, und der Verkehr geht zu einem erlaubten Dienst. Erkennbar wird der Weg auf dem Endpunkt - an einem Prozess, dessen Befehlszeile eine Webhook-URL und oft einen Datei-Upload enthält. Die wirksamste Härtung ist, die Webhook-Dienste am Proxy auf die benötigten Kanäle zu beschränken. Die klassischen Wege zeigen der Datenabfluss mit rclone in die Cloud und die Exfiltration über den C2-Kanal; das Nachladen der Werkzeuge dafür der Ingress Tool Transfer. Weitere Techniken dieser Taktik führt das Lexikon nach Taktik unter Exfiltration.