Attack! … or not?

Bei einem kürzlich durchgeführten Pentest für einen Kunden geschah das Unerwartete: Wir konnten trotz allen Anstrengungen keine C2-Verbindung zum Opfer herstellen.

Am Phishing-Mail dürfte es nicht liegen, denn die ersten User klickten bereits unseren Link an („Bitte installieren sie das verlinkte Plugin um ihren PC auf DSGVO-Kompatibilität zu prüfen“ ist zwar gemein, funktioniert aber). Der Kundenseitige Mailfilter war also nicht Schuld. Am Webserver sahen wir Zugriffslogs auf den ersten Stage der Schadsoftware. Kurz darauf, Nachladen der zweiten Stage. Doch dann – nichts! Es fand keine C2-Kommunikation statt.

Hat der Kunde einen besonders guten Virenscanner? Oder eine neuartige Firewall-Lösung, von der wir nichts wussten? War ein Security-Admin vor Ort, der sein Handwerk versteht und uns zum Narren hält? Ist eine moderne EDR-Lösung im Einsatz? Ganz klar, wir mussten der Sache auf den Grund gehen.

 

Debugging

Im Testlab installierten wir ein der Kundensituation ähnliches Systemumfeld, und fanden dabei (eher durch Zufall) folgende Situation vor:

Ein Powershell-Befehl unseres Staging-Scripts konnte nicht ausgeführt werden – genauer gesagt: System.Text.Encoding soll angeblich nicht existieren?  Diese Klasse ist aber Bestandteil der Standard-Assemblies, und existiert auf jedem System. Und bei unseren Tests vor dem eigentlichen Angriff trat der Fehler auch nicht auf (ja, selbstverständlich testen wir unsere eigenen Hacks 😉 )

Der Fehler lag im „Nichts“: wer genau hinsieht, wird zwischen Encoding und ] ein Leerzeichen erkennen. Diese Technik benutzen wir (unter anderem) gerne für Obfuskierungen von Malicious Code, was erschreckenderweise in vielen Fällen ausreicht, um AV und IDS Systeme zu umgehen. In diesem Fall scheint das Leerzeichen aber dazu zu führen, dass der Parser die PS-Syntax nicht mehr akzeptiert. Doch wieso funktioniert auf unseren Testsystemen alles?

 

Patch me up, Scotty

Auf Windows 10 (beliebige Versionen) wird das Leerzeichen ignoriert:

 

Auf einem Windows 7 SP1 jedoch nicht:

 

Die Moral der Geschichte: Liebe Kunden, bitte updated eure Systeme, sonst funktionieren manche obfuskierte Pentest-Scripts nicht 🙂