Chinesische staatsnahe Angreifer gehen auf Postfächer und Active Directory. Die konkreten Prüfungen und fertige KQL-Queries für Defender.

Am 8. Oktober 2026 haben FBI, CISA und NSA zusammen mit Partnerbehörden aus Großbritannien, Australien, Kanada, Japan, Neuseeland und Spanien die gemeinsame Warnung AA26-281A veröffentlicht. Dahinter stehen chinesische, staatsnahe Akteure, unterstützt von der Integrity Technology Group. Ihre Vorgehensweise entspricht dem, was Hersteller als Flax Typhoon, Ethereal Panda oder Red Juliett führen. Sie kombinieren automatisierte Scanner, große Botnetze und Handarbeit, um weltweit sensible Daten abzugreifen. Die beiden Hauptziele sind Postfächer und das Active Directory.
Klingt nach Großkonzern-Problem, ist es aber nicht. Fast jeder kleine Betrieb hat heute Microsoft 365, oft eine öffentlich erreichbare Website und manchmal noch einen Exchange im Haus. Genau das ist die Angriffsfläche. Dieser Beitrag fasst zusammen, was für kleine und mittlere Unternehmen wirklich zählt, und gibt dir fertige KQL-Queries für Microsoft Defender, die du direkt im Advanced Hunting laufen lassen kannst.
Wie die Angreifer vorgehen
In Kurzform, damit die Prüfungen Sinn ergeben:
- Aufklärung: gezielte Scans auf die Ports 21, 22, 53, 80, 443 und 1080, dazu dirsearch und ein MicroScan mit über 1.300 Skripten gegen WordPress, Jenkins, WebLogic und Struts.
- Einstieg über XSS: ein Payload blendet auf einer verwundbaren Seite ein falsches Login ein. Danach bekommt das Opfer ein passwortgeschütztes ZIP mit live700_v1.exe, das DiagTrack.exe startet, welches mit dns.studiocloud[.]xyz spricht.
- Password Spraying: mit dem Tool EBurst gegen Exchange und 365, nicht nur über OWA, sondern auch ECP, EWS und OAB.
- Persistenz: SoftEther-VPN-Clients, getarnt als conhost.exe oder dllhost.exe, die sich beim Systemstart automatisch neu verbinden.
- Exfiltration: ein PHP-Skript (Curlc4.txt) zieht Mails über die EWS-API ab, DC.exe fährt DCSync gegen Domain Controller, und das Linux-Tool office-cli liest 365-Postfächer über App-Zugangsdaten aus.
Wie so ein Webserver-Einbruch in der Realität aussieht und wie man ihn forensisch aufdröselt, habe ich am eigenen Fall beschrieben: Vier Server, ein Hack und die Leute davor.
Die größten Hebel für KMU
Bevor du in die Logs steigst, die Maßnahmen mit dem besten Verhältnis von Aufwand zu Wirkung:
- Phishing-resistente MFA für alle Mail-Konten, und Legacy-Authentifizierung aus. Fehlende MFA ist für genau diese Kampagne das größte Einfallstor.
- ECP und EWS nicht aus dem Internet erreichbar machen, wenn es nicht zwingend nötig ist. Jede nach außen offene Exchange-Funktion ist eine Spraying-Fläche.
- Öffentliche Web-Anwendungen patchen und Eingaben bereinigen. WordPress, Jenkins und Co. sind die Türen aus dem MicroScan. CISA empfiehlt ausdrücklich, Benutzereingaben gegen XSS zu säubern.
- Entra-App-Registrierungen prüfen. Wegen office-cli: alle Apps mit Application-Berechtigungen wie Mail.Read, Mail.ReadWrite oder full_access_as_app und mit Client-Secrets auflisten. Unbekannte Apps oder frische Secrets sind ein starkes Warnsignal.
- IoCs einspielen. CISA stellt die Indikatoren als STIX bereit. Importiere sie als Custom Indicators in Defender und prüfe DNS- und Proxy-Logs rückwirkend auf studiocloud[.]xyz. Ein Hinweis aus dem Advisory: Ein Teil der Indikatoren reicht bis 2016 zurück, prüfe sie, bevor du hart blockst.
Konkrete KQL-Queries für Microsoft Defender
Diese Abfragen laufen im Advanced Hunting von Microsoft Defender (XDR, Defender for Business oder 365). Je nach Lizenz und angebundenen Produkten stehen nicht alle Tabellen zur Verfügung: Die Endpunkt-Queries brauchen Defender for Endpoint, die Identitäts-Queries Defender for Identity beziehungsweise Entra.
Bekannte Schaddateien an ihren Hashes finden:
let badHashes = dynamic([
"804a53be802378a8ec4c94602fd3d6584e0d472d83148e8a42c731950fec415d", // DiagTrack.exe
"c4503db6ece93eddf4511e787607cb14606a1df9f526f1e39992497119437cec", // live700_v1.exe
"add7dd142e4f7e2873bc8f7b7fb6308063608e0b49a773dea93abad4047f1489", // office-cli
"9dc85f9569a15eaf51c7d34254767ea30dd67b2178cec4cc7125288b9544fe00", // dc.exe
"b1552703ff0035f197c22cdb3a514bb6aa45ec98de3ef5409faab0978f18c35e", // conhost.exe (SoftEther)
"8a592e22c51311d482272ec5aba0103c9cd0cfd78e5b5ba75dfa8f1c56926672", // dllhost.exe (SoftEther)
"86f1cfa6a2e0a8cb6fc1fbee28472308e6467932f8658a6a4885e29ed8c34a67" // dllhost.exe (SoftEther)
]);
union DeviceProcessEvents, DeviceFileEvents, DeviceImageLoadEvents
| where SHA256 in (badHashes)
| project Timestamp, DeviceName, ActionType, FileName, FolderPath, SHA256
Prozess-Tarnung: System-Namen, die außerhalb von System32 laufen:
DeviceProcessEvents
| where FileName in~ ("conhost.exe","dllhost.exe","DiagTrack.exe")
| where not(FolderPath startswith "C:\\Windows\\System32"
or FolderPath startswith "C:\\Windows\\SysWOW64")
| project Timestamp, DeviceName, AccountName, FileName, FolderPath,
ProcessCommandLine, InitiatingProcessFileName, SHA256
Verbindungen zu den Command-and-Control-Domains und zur bekannten IP:
let c2Domains = dynamic(["studiocloud.xyz","natcloudservice.com",
"javacheck.ooguy.com","javaupdate.giize.com","98aiblog.com","hmbcloud.com"]);
DeviceNetworkEvents
| where RemoteUrl has_any (c2Domains) or RemoteIP == "149.28.132.137"
| project Timestamp, DeviceName, InitiatingProcessFileName,
RemoteUrl, RemoteIP, RemotePort, InitiatingProcessCommandLine
SoftEther-VPN als Persistenz:
DeviceProcessEvents
| where FileName in~ ("vpnclient.exe","vpncmd.exe","vpnserver.exe")
or ProcessCommandLine has_any ("vpncmd","vpnclient","SoftEther")
| project Timestamp, DeviceName, AccountName, FileName,
ProcessCommandLine, InitiatingProcessFileName
Webserver, die selbst nach außen telefonieren (curl oder wget aus einem Web-Prozess):
DeviceProcessEvents
| where FileName in~ ("curl.exe","wget.exe","bitsadmin.exe","certutil.exe")
| where InitiatingProcessFileName in~ ("w3wp.exe","php.exe","php-cgi.exe","httpd.exe","nginx.exe","java.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine
Staging- und Ablage-Dateien auf Web- und Linux-Servern:
DeviceFileEvents
| where FileName in~ ("001.gif","Css.js","Include.png","M2k.js","M2k_list.js",
"M2k_ui_adm.js","live700_v1.exe","Curlc4.txt")
or FolderPath has ".sess.zip"
| project Timestamp, DeviceName, ActionType, FileName, FolderPath, InitiatingProcessFileName
Password Spraying gegen Microsoft 365 (viele Fehlschläge, viele Konten, wenige IPs):
AADSignInEventsBeta
| where ErrorCode == 50126 // ungültiger Benutzername oder Passwort
| summarize Fehlversuche = count(), Konten = dcount(AccountUpn)
by IPAddress, bin(Timestamp, 1h)
| where Konten >= 10 and Fehlversuche >= 50
| order by Fehlversuche desc
DCSync-Verdacht über Defender for Identity:
IdentityDirectoryEvents
| where ActionType == "Directory Services replication"
| project Timestamp, AccountName, DestinationDeviceName, AdditionalFields
Wenn du nur die Roh-Sicherheitsereignisse hast, suche Event 4662 mit den Replication-GUIDs 1131f6aa-… und 1131f6ad-… von Konten oder Hosts, die keine Domain Controller sind.
Wenn eine Query anschlägt
Ein Treffer ist noch kein Beweis, aber ein Grund für Tempo. Betroffenes System isolieren, die Zugangsdaten der betroffenen Konten zurücksetzen, Persistenz suchen (SoftEther, Autostarts, neue App-Secrets), und bei Verdacht auf DCSync das Active Directory als kompromittiert behandeln. Und wie immer bei fertigen Queries und KI-gestützter Auswertung gilt: Der Mensch prüft den Fund, bevor er handelt. Die Query findet die Spur, die Entscheidung triffst du.
Zum Mitnehmen
AA26-281A ist keine exotische Hochsicherheitsgeschichte, sondern zielt auf genau die Dienste, die auch ein kleiner Betrieb betreibt: Mail und Verzeichnis. Die wirksamsten Schritte kosten kein Geld, nur Konsequenz. Phishing-resistente MFA, keine Legacy-Auth, kein offenes ECP, saubere Web-Anwendungen. Danach lässt du die Queries von oben einmal durchlaufen. Wer Postfächer und Active Directory im Griff hat, nimmt dieser Kampagne ihre beiden Lieblingsziele.