Einmal bei einem Pentest oder wie man mit Hilfe eines Urologen und Roskomnadzors alles kaputt macht


Dieser Artikel basiert auf einem sehr erfolgreichen Pentest, der vor einigen Jahren von Group-IB-Spezialisten durchgeführt wurde: Eine Geschichte, die behauptet, eine Verfilmung in Bollywood zu sein. Nun wird wahrscheinlich die Reaktion des Lesers folgen: "Oh, ein weiterer PR-Artikel, wieder sind diese gezeichnet, wie gut sie sind, vergessen Sie nicht, einen Pentest zu kaufen." Einerseits ist es das. Es gibt jedoch eine Reihe von Gründen, warum dieser Artikel veröffentlicht wurde. Ich wollte zeigen, was genau Pentester tun, wie interessant und nicht trivial diese Arbeit sein kann, welche amüsanten Umstände sich bei Projekten entwickeln können und vor allem Live-Material mit realen Beispielen zeigen.

Um das Gleichgewicht der Bescheidenheit in der Welt wiederherzustellen, werden wir nach einer Weile über das Pentest schreiben, das nicht gegangen ist. Wir zeigen, wie gut etablierte Prozesse in einem Unternehmen vor einer ganzen Reihe von Angriffen schützen können, auch vor gut vorbereiteten, einfach weil diese Prozesse existieren und wirklich funktionieren.

Auch dem Kunden aus diesem Artikel war im Allgemeinen alles in Ordnung, zumindest besser als 95% des Marktes in der Russischen Föderation, nach unseren Gefühlen, aber es gab eine Reihe kleinerer Nuancen, die eine lange Kette von Ereignissen bildeten, die zunächst zu einem langen Bericht über die Arbeit führten und dann zu diesem Artikel.

Also, tanken Sie Popcorn und heißen Sie den Detektiv willkommen. Ich erteile Pavel Suprunyuk , dem technischen Direktor der Audit and Consulting Group-IB , das Wort .

Teil 1. Pochkin Arzt


2018 Jahr. Es gibt einen Kunden - ein High-Tech-IT-Unternehmen, das selbst viele Kunden bedient. Er möchte eine Antwort auf die Frage erhalten: Ist es möglich, ohne anfängliche Kenntnisse und Zugriff über das Internet Administratorrechte für eine Active Directory-Domäne zu erlangen? Kein Social Engineering ist von Interesse ( eh, aber vergebens ), sie werden die Arbeit nicht speziell stören, aber sie können beispielsweise versehentlich einen fremden Arbeitsserver neu laden. Eine zusätzliche Aufgabe besteht darin, so viele andere Angriffsvektoren wie möglich in Bezug auf den Außenumfang zu identifizieren. Das Unternehmen führt regelmäßig solche Tests durch und jetzt die Frist für einen neuen Test. Die Bedingungen sind fast typisch, angemessen, verständlich. Runter.

Es gibt einen Kundennamen - sei es "Unternehmen" mit der Hauptseite www.company.ru. Natürlich wird der Kunde anders angerufen, aber in diesem Artikel wird alles entpersönlicht.
Ich führe Netzwerkinformationen durch - Ich finde heraus, welche Adressen und Domänen vom Kunden aufgelistet werden, zeichne ein Netzwerkdiagramm und wie Dienste an diese Adressen verteilt werden. Ich bekomme das Ergebnis: mehr als 4000 Live-IP-Adressen. Ich schaue mir die Domänen in diesen Netzwerken an: Glücklicherweise handelt es sich bei der überwiegenden Mehrheit um Netzwerke, die für Kundenkunden bestimmt sind, und sie interessieren uns formal nicht. Der Kunde glaubt das auch.

Es bleibt ein Netzwerk mit 256 Adressen übrig, für das zu diesem Zeitpunkt bereits ein Verständnis für die Verteilung von Domänen und Subdomänen nach IP-Adressen besteht. Es gibt Informationen zu den gescannten Ports, sodass Sie die Dienste mit Ihren Augen nach interessanten durchsuchen können. Parallel dazu werden alle Arten von Scannern unter zugänglichen IP-Adressen und separat auf Websites gestartet.

Es gibt viele Dienstleistungen. Dies ist normalerweise eine Freude für den Pentester und die Erwartung eines schnellen Sieges, denn je mehr Dienste, desto größer das Angriffsfeld und desto einfacher ist es, ein Artefakt zu finden. Ein kurzer Blick auf die Websites zeigte, dass die meisten von ihnen Webschnittstellen der bekannten Produkte großer Unternehmen der Welt sind, die sagen, dass sie mit Ihnen nicht zufrieden sind. Sie fragen nach einem Benutzernamen und einem Kennwort. Ab dem Schwellenwert, an dem sie ein Feld für die Eingabe des zweiten Faktors schütteln, fragen sie nach einem TLS-Client-Zertifikat oder senden sie an Microsoft ADFS. Einige sind im Internet einfach nicht verfügbar. Für einige müssen Sie offensichtlich einen speziell bezahlten Kunden für drei Gehälter haben oder die genaue URL kennen, die Sie eingeben müssen. Wir werden eine weitere Woche nach und nach entmutigen, wenn wir versuchen, die Software nach bekannten Sicherheitslücken zu "durchbrechen", nach versteckten Inhalten in Webpfaden zu suchen und Konten von Drittanbieterdiensten wie LinkedIn zu verlieren.Versuche, Passwörter für sie auszuwählen und Schwachstellen in selbst beschriebenen Websites aufzudecken - laut Statistik ist dies übrigens der vielversprechendste Vektor eines externen Angriffs bis heute. Sofort bemerke ich die Kinokanone, die anschließend abgefeuert wurde.

Es gab also zwei Standorte, die sich von Hunderten von Diensten abheben. Diese Sites hatten eines gemeinsam: Wenn Sie keine sorgfältige Netzwerkaufklärung nach Domänen durchführen, sondern „auf der Vorderseite“ nach offenen Ports suchen oder den Schwachstellenscanner über einen bekannten IP-Bereich vergiften, werden diese Sites nicht mehr überprüft, sondern ohne Kenntnis des DNS-Namens einfach nicht sichtbar. Vielleicht wurden sie zumindest früher übersehen, und unsere automatischen Tools fanden keine Probleme darin, selbst wenn sie direkt auf die Ressource eingestellt waren.

Übrigens über die Tatsache, dass zuvor eingeführte Scanner in der Regel gefunden wurden. Ich möchte Sie daran erinnern: Für manche Menschen ist „Pentest“ gleichbedeutend mit „automatisiertem Scannen“. Und die Scanner dieses Projekts sagten nichts. Nun, mittlere Sicherheitslücken zeigten das Maximum (3 von 5 in Bezug auf die Gefahr): Einige Dienste haben ein schlechtes TLS-Zertifikat oder veraltete Verschlüsselungsalgorithmen, und die meisten Websites verfügen über Clickjacking. Aber damit kommen Sie nicht zum Ziel. Wahrscheinlich wären Scanner hier nützlicher, aber ich möchte Sie daran erinnern: Der Kunde selbst kann solche Programme kaufen und sich mit ihnen testen, und nach den langweiligen Ergebnissen zu urteilen, hat er sie bereits überprüft.

Zurück zu den "abnormalen" Stellen. Das erste ist so etwas wie ein lokales Wiki an einer nicht standardmäßigen Adresse, aber lassen Sie wiki.company [.] Ru in diesem Artikel sein. Sie forderte auch sofort einen Benutzernamen und ein Passwort an, jedoch bereits über NTLM im Browser. Für den Benutzer sieht dies wie ein asketisches Fenster aus, in dem Sie nach einem Benutzernamen und einem Kennwort gefragt werden. Und das ist schlechte Praxis.

. NTLM - . — Active Directory. company.ru, «» DNS-. , - , , - . — NTLM (, ?), «» , . , . — , . — . — , , . — pass-the-hash-. ADFS .

Es gibt eine schlechte Funktion von Microsoft-Produkten: Selbst wenn Sie ein solches NTLM nicht speziell veröffentlicht haben, wird es zumindest in der Standardinstallation in OWA und Lync installiert.

Übrigens hat der Autor dieses Artikels einmal auf die gleiche Weise versehentlich in nur einer Stunde ungefähr 1000 Konten von Mitarbeitern einer großen Bank gesperrt und hatte dann ein etwas blasses Aussehen. Die IT-Services der Bank waren ebenfalls blass, aber alles endete gut und angemessen. Wir wurden sogar gelobt, dass wir die ersten waren, die dieses Problem fanden, und provozierten eine schnelle und entscheidende Korrektur.
Die zweite Site hatte die Adresse "offensichtlich ein Nachname.company.ru". Gefunden über Google, so etwas auf Seite 10. Das Design beginnt bis Mitte 2000, und eine angesehene Person sah von der Hauptseite aus wie folgt aus:


Dann nahm er einen Rahmen aus "Hundeherz", aber glauben Sie mir, es war im entferntesten ähnlich, sogar das Farbschema in ähnlichen Farben. Lassen Sie die Site preobrazhensky.company.ru heißen .

Es war eine persönliche Seite ... eines Urologen. Es wurde interessant, was der Standort des Urologen auf der Subdomain eines High-Tech-Unternehmens tut. Ein kurzer Blick auf Google zeigte, dass dieser Arzt Mitbegründer einer der juristischen Personen unseres Kunden war und sogar etwa 1000 Rubel eingetragenes Kapital beisteuerte. Die Site wurde wahrscheinlich vor vielen Jahren erstellt und die Serverressourcen des Kunden wurden als Hosting verwendet. Die Seite hat lange an Relevanz verloren, aber aus irgendeinem Grund funktioniert sie schon lange nicht mehr.

In Bezug auf Schwachstellen war die Website selbst sicher. Mit Blick auf die Zukunft werde ich sagen, dass es sich um eine Reihe von statischen Daten handelte - einfache HTML-Seiten mit Beilagen von Abbildungen in Form von Nieren und Blasen. Das "Brechen" einer solchen Site ist nutzlos.

Aber der Webserver darunter war interessanter. Dem HTTP-Server-Header nach zu urteilen, gab es IIS 6.0, was bedeutet, dass Windows 2003 als Betriebssystem verwendet wurde. Der Scanner hat zuvor festgestellt, dass diese bestimmte Website des Urologen im Gegensatz zu anderen virtuellen Hosts auf demselben Webserver auf den Befehl PROPFIND reagiert hat, dh, WebDAV hat dort gearbeitet. Übrigens hat der Scanner diese Informationen mit der Markierung Info versehen (in der Sprache der Scannerberichte ist dies die geringste Gefahr) - solche Dinge werden normalerweise einfach übersprungen. In Kombination ergab dies einen interessanten Effekt, der erst nach einem erneuten Einstieg in Google aufgedeckt wurde: eine seltene Sicherheitsanfälligkeit in Bezug auf Pufferüberlauf, die mit einer Reihe von Shadow Brokers verbunden ist, nämlich CVE-2017-7269, die bereits einen Exploit hatten. Mit anderen Worten, es wird eine Katastrophe sein, wenn Sie Windows 2003 haben und WebDAV unter IIS ausgeführt wird.Obwohl 2018 in der Produktion von Windows 2003 gearbeitet wird, ist dies an sich schon eine Katastrophe.

Der Exploit endete in Metasploit und wurde sofort mit einer Last getestet, die eine DNS-Abfrage an einen kontrollierten Dienst sendete. Burp Collaborator wird traditionell zum Abfangen von DNS-Abfragen verwendet. Überraschenderweise hat es beim ersten Mal funktioniert: In DNS wurde ein Ruck empfangen. Dann wurde versucht, eine Back-End-Verbindung über Port 80 herzustellen (dh eine Netzwerkverbindung vom Server zum Angreifer mit Zugriff auf cmd.exe auf dem Host des Opfers), aber dann kam es zu einem Fiasko. Die Verbindung wurde nicht hergestellt, und nach dem dritten Operationsversuch verschwand die Site zusammen mit allen unterhaltsamen Bildern endgültig.

Normalerweise folgt ein Brief im Stil von "Kunde, wach auf, wir haben alles fallen lassen". Uns wurde jedoch mitgeteilt, dass die Site nichts mit Geschäftsprozessen zu tun hat und dort im Allgemeinen funktioniert. Es ist nicht klar, warum, wie der gesamte Server, und dass wir diese Ressource nach Belieben verwenden können.
Nach ungefähr einem Tag begann die Site plötzlich von selbst zu arbeiten. Nachdem ich einen Stand von WebDAV auf IIS 6.0 erstellt hatte, stellte ich fest, dass die Standardeinstellung darin besteht, IIS-Workflows alle 30 Stunden neu zu starten. Das heißt, wenn das Steuerelement aus dem Shell-Code beendet wurde, wurde der IIS-Workflow beendet, dann selbst ein paar Mal neu gestartet und dann 30 Stunden lang angehalten.

Da das erste Mal die bekconnect auf tcp fehlgeschlagen ist, habe ich dieses Problem an einen geschlossenen Port abgeschrieben. Das heißt, er schlug das Vorhandensein einer Firewall vor, die ausgehende Verbindungen nicht herausließ. Ich fing an, Shell-Codes auszuführen, die viele TCP- und UDP-Ports sortieren. Es gab keine Auswirkungen. Das Laden der umgekehrten Verbindung über http (s) von Metasploit - meterpreter / reverse_http (s) funktionierte nicht. Plötzlich wurde die Verbindung zu demselben Port 80 hergestellt, aber sofort unterbrochen. Er schrieb es an die Aktion des immer noch imaginären IPS ab, das keinen Meterpreter-Verkehr mochte. Angesichts der Tatsache, dass die Verbindung von reinem TCP zu Port 80 fehlschlug, http jedoch, kam ich zu dem Schluss, dass der http-Proxy irgendwie im System konfiguriert war.

Versuchte sogar Meterpreter über DNS (danked00kiefür seine Bemühungen rettete er viele Projekte) und erinnerte sich an den allerersten Erfolg, aber er arbeitete nicht einmal am Stand - der Shell-Code war zu umfangreich für diese Sicherheitsanfälligkeit.

In Wirklichkeit sah es so aus: 3-4 Versuche, innerhalb von 5 Minuten anzugreifen, dann 30 Stunden warten. Und so drei Wochen hintereinander. Ich habe sogar eine Erinnerung eingerichtet, um keine Zeit zu verschwenden. Darüber hinaus gab es einen Unterschied im Verhalten der Test- und Kampfumgebungen: Für diese Sicherheitsanfälligkeit gab es zwei ähnliche Exploits, einen von Metasploit und einen vom Internet, der aus der Version von Shadow Brokers überarbeitet wurde. Im Kampf hat also nur Metasploit am Stand geklappt - nur der zweite, was das Debuggen weiter erschwerte und das Gehirn brach.

Am Ende erwies sich der Shell-Code als effektiv, der eine exe-Datei von einem bestimmten Server über http herunterlud und auf dem Zielsystem ausführte. Der Shellcode war klein genug, um hinein zu passen, und zumindest funktionierte er. Da der TCP-Server überhaupt keinen Datenverkehr mochte und http (s) auf Meterpreter überprüft wurden, entschied ich, dass der schnellste Weg darin besteht, die exe-Datei, die den DNS-Meterpreter enthielt, über diesen Shellcode herunterzuladen.

Auch hier trat das Problem auf: Beim Herunterladen der exe-Datei wurde, wie die Versuche zeigten, der Download unterbrochen, egal was passierte. Wiederum mochte eine Art Schutzgerät zwischen meinem Server und dem Urologen den http-Verkehr mit exe im Inneren nicht. Es schien eine „schnelle“ Lösung zu sein, den Shellcode so zu ändern, dass der http-Verkehr im laufenden Betrieb verschleiert wurde und abstrakte Binärdaten anstelle von exe übertragen wurden. Schließlich war der Angriff erfolgreich, die Kontrolle kam über den dünnen DNS-Kanal:


Es wurde sofort klar, dass ich die einfachsten Rechte am IIS-Workflow hatte, mit denen ich nichts tun konnte. So sah es auf der Metasploit-Konsole aus:


Alle Pentest-Methoden empfehlen dringend, dass Sie die Rechte erhöhen müssen, wenn Sie Zugriff erhalten. Normalerweise mache ich das nicht lokal, da der allererste Zugriff einfach als Netzwerkeintrittspunkt betrachtet wird und das Kompromittieren eines anderen Computers im selben Netzwerk normalerweise einfacher und schneller ist als das Erhöhen der Berechtigungen auf einem vorhandenen Host. Dies ist jedoch nicht der Fall, da der DNS-Kanal sehr eng ist und kein Roaming des Datenverkehrs zulässt.

Unter der Annahme, dass dieser Server mit Windows 2003 nicht von der bekannten Sicherheitsanfälligkeit MS17-010 repariert wurde, tunnele ich den Datenverkehr über den Meterpreter-DNS-Tunnel zum lokalen Host an Port 445 / TCP (ja, dies ist auch möglich) und versuche, eine zuvor heruntergeladene Exe über die Sicherheitsanfälligkeit auszuführen. Der Angriff funktioniert, ich bekomme eine zweite Verbindung, aber mit SYSTEM-Berechtigungen.


Interessanterweise versuchte der Server immer noch, sich vor MS17-010 zu schützen - er hatte anfällige Netzwerkdienste auf der externen Schnittstelle deaktiviert. Dies schützt wirklich vor Angriffen über das Netzwerk, aber der Angriff innerhalb des lokalen Hosts hat funktioniert, da Sie SMB auf localhost nicht einfach ausschalten und schnell deaktivieren können.
Als nächstes werden neue interessante Details enthüllt:

  1. Mit SYSTEM-Berechtigungen können Sie Back-Connect problemlos über TCP installieren. Offensichtlich ist das Verbot von direktem TCP ausschließlich ein IIS-beschränktes Benutzerproblem. Spoiler: Der IIS-Benutzerverkehr wurde in beide Richtungen irgendwie in den lokalen ISA-Proxy eingeschlossen. Wie genau das funktioniert, wird nicht reproduziert.
  2. Ich bin in einer bestimmten "DMZ" (und dies ist keine Active Directory-Domäne, sondern WORKGROUP) - das klingt logisch. Aber anstelle der erwarteten privaten ("grauen") IP-Adresse bin ich ziemlich "weiß", genau so, wie ich es zuvor angegriffen habe. Dies bedeutet, dass das Unternehmen für die Welt der IPv4-Adressierung so alt ist, dass es sich leisten kann, die DMZ-Zone gemäß dem Schema auf 128 „weißen“ Adressen ohne NAT zu halten, wie in den Cisco-Handbüchern von 2005 dargestellt.

Da der Server alt ist, funktioniert Mimikatz garantiert direkt aus dem Speicher:


Ich erhalte das Passwort des lokalen Administrators, tunnele RDP-Verkehr über TCP und gehe auf einen gemütlichen Desktop. Da Sie mit dem Server alles tun können, lösche ich das Antivirenprogramm. Ich stelle fest, dass der Server nur über die TCP-Ports 80 und 443 über das Internet erreichbar ist und 443 nicht ausgelastet war. Ich erhöhe den OpenVPN-Server auf 443, füge die NAT-Funktionen für meinen VPN-Verkehr hinzu und erhalte über mein OpenVPN unbegrenzten direkten Zugriff auf das DMZ-Netzwerk. Es ist bemerkenswert, dass ISA mit einigen nicht deaktivierbaren IPS-Funktionen meinen Datenverkehr durch Port-Scanning blockierte, für das es durch ein einfacheres und flexibleres RRAS ersetzt werden musste. So müssen Pentester manchmal noch alles verwalten.


Ein aufmerksamer Leser wird fragen: "Und was ist die zweite Seite - ein Wiki mit NTLM-Authentifizierung, über das so viel geschrieben wurde?" Darüber weiter.

Teil 2. Verschlüsseln Sie immer noch nicht? Dann gehen wir schon hier zu dir


Es besteht also Zugriff auf das DMZ-Netzwerksegment. Sie müssen zum Domänenadministrator gehen. Das erste, was mir in den Sinn kommt, ist die automatische Überprüfung der Dienste innerhalb des DMZ-Segments, zumal sie jetzt viel offener für Forschung sind. Ein typisches Bild bei einem Penetrationstest: Der externe Perimeter ist besser geschützt als interne Dienste, und wenn Sie Zugriff auf eine große Infrastruktur erhalten, ist es viel einfacher, erweiterte Rechte in einer Domäne zu erhalten, nur weil diese Domäne für Tools zugänglich ist, und zweitens. Es gibt immer ein paar kritische Probleme in der Infrastruktur für mehrere tausend Hosts.

Ich lade Scanner in DMZ über den OpenVPN-Tunnel, ich warte. Ich öffne den Bericht - wieder nichts Ernstes, anscheinend ging jemand auf die gleiche Weise zu mir. Der nächste Schritt besteht darin, zu untersuchen, wie Hosts innerhalb des DMZ-Netzwerks kommunizieren. Zu diesem Zweck wird zunächst ein regulärer Wireshark gestartet, der Broadcast-Anfragen abhört, hauptsächlich ARP. ARP-Pakete wurden den ganzen Tag gesammelt. Es stellt sich heraus, dass in diesem Segment mehrere Gateways verwendet werden. Dies wird später nützlich sein. Beim Kleben von Daten auf ARP-Anforderungs-Antwort- und Port-Scan-Daten fand ich die Ausgabepunkte des Benutzerverkehrs aus dem lokalen Netzwerk zusätzlich zu den zuvor bekannten Diensten wie Web und E-Mail.

Da ich im Moment keinen Zugriff auf andere Systeme hatte und es kein einziges Konto für Unternehmensdienste gab, wurde beschlossen, mit ARP Spoofing mindestens ein Konto aus dem Datenverkehr abzurufen.

Cain & Abel wurde auf dem Server des Urologen gestartet. Unter Berücksichtigung der identifizierten Verkehrsströme wurden die vielversprechendsten Paare für den Angriff „Mann in der Mitte“ ausgewählt. Bei einem kurzfristigen Start von 5 bis 10 Minuten und einem Timer zum Neustart des Servers im Falle eines „Einfrierens“ wurde ein Teil des Netzwerkverkehrs empfangen. Wie im Witz gab es zwei Neuigkeiten:

  1. Gut: Es wurden viele Anmeldeinformationen abgefangen und der Angriff insgesamt hat funktioniert.
  2. Schlecht: Alle Anmeldeinformationen stammten von Kunden des Kunden selbst. Kundenspezialisten bieten Support-Services an und sind mit Kundenservices verbunden, für die nicht immer die Verkehrsverschlüsselung konfiguriert war.

Infolgedessen erhielt ich viele Anmeldeinformationen, die im Rahmen des Projekts nutzlos waren, aber auf jeden Fall als Demonstration der Gefahr eines Angriffs interessant waren. Grenzrouter großer Unternehmen mit Telnet, weitergeleitete Debugging-HTTP-Ports an das interne CRM mit allen Daten, direkter Zugriff auf RDP von Windows XP im lokalen Netzwerk und anderer Obskurantismus. Es stellte sich nach MITRE-Matrix eine Art Supply-Chain-Kompromiss heraus .

Auch eine lustige Gelegenheit gefunden, E-Mails aus dem Verkehr zu sammeln, so etwas. Dies ist ein Beispiel für einen fertigen Brief, der ohne Verschlüsselung von unserem Kunden an den SMTP-Port seines Kunden gesendet wurde. Ein bestimmter Andrei bittet seinen Namensvetter, die Dokumentation erneut zu senden. Sie befindet sich auf einer Cloud-Festplatte mit einem Benutzernamen, einem Kennwort und einem Link in einem Antwortschreiben:


Dies ist eine weitere Erinnerung daran, dass Sie alle Dienste verschlüsseln müssen. Es ist nicht bekannt, wer und wann Ihre Daten speziell lesen und anwenden wird - ein Anbieter, ein Systemadministrator eines anderen Unternehmens oder ein solcher Pentester. Ich schweige, dass viele einfach unverschlüsselten Datenverkehr abfangen können.

Trotz des offensichtlichen Erfolgs wurde dies dem Ziel nicht näher gebracht. Es war natürlich möglich, lange zu sitzen und wertvolle Informationen herauszuholen, aber nicht die Tatsache, dass sie dort erschienen wären, und der Angriff selbst ist im Hinblick auf die Integrität des Netzwerks sehr riskant.

Nach einem weiteren Eingraben in die Dienste kam mir eine interessante Idee in den Sinn. Es gibt ein solches Dienstprogramm namens Responder (es ist leicht, Beispiele für Anwendungen mit diesem Namen zu finden), das durch "Vergiften" von Broadcast-Anforderungen Verbindungen über eine Vielzahl von Protokollen wie SMB, HTTP, LDAP usw. hervorruft. Auf unterschiedliche Weise wird dann jede Person, die eine Verbindung herstellt, aufgefordert, sich zu authentifizieren, und passt sich an, sodass die Authentifizierung über NTLM und in einem für das Opfer transparenten Modus erfolgt. In den meisten Fällen sammelt ein Angreifer daher NetNTLMv2-Handshakes und stellt laut Wörterbuch schnell Kennwörter für Benutzerdomänen wieder her. Ich wollte hier etwas Ähnliches, aber Benutzer saßen „hinter der Wand“, oder besser gesagt, sie waren durch eine Firewall getrennt, und im WEB gingen sie durch den Blue Coat-Proxy-Cluster.

Denken Sie daran, dass ich angegeben habe, dass der Active Directory-Domänenname mit der "externen" Domäne übereinstimmt, dh company.ru? Windows, genauer gesagt Internet Explorer (und Edge und Chrome), ermöglicht es dem Benutzer, sich transparent in HTTP über NTLM zu authentifizieren, wenn er der Ansicht ist, dass sich die Site in einer „Intranetzone“ befindet. Eines der Anzeichen für „Intranet“ ist der Aufruf einer „grauen“ IP-Adresse oder eines kurzen DNS-Namens, dh ohne Punkte. Da ein Server mit einem „weißen“ IP- und DNS-Namen preobrazhensky.company.ru zur Verfügung stand und Domänencomputer normalerweise das Active Directory-Domänensuffix über DHCP zur vereinfachten Namenseingabe erhalten, mussten sie lediglich die preobrazhensky- URL in die Adressleiste schreibendamit sie den richtigen Weg zu einem kompromittierten Urologen-Server finden, nicht zu vergessen, dass er jetzt "Intranet" heißt. Das heißt, gleichzeitig gibt er mir den NTLM-Handshake-Benutzer ohne sein Wissen. Es bleibt abzuwarten, ob Client-Browser über die dringende Notwendigkeit nachdenken, auf diesen Server zuzugreifen.

Das wunderbare Dienstprogramm Intercepter-NG kam zur Rettung (dankeIntercepter) Sie konnten den Datenverkehr unterwegs ändern und funktionierten perfekt unter Windows 2003. Es gab sogar eine separate Funktion, mit der nur JavaScript-Dateien im Datenverkehr geändert werden konnten. Es war eine Art massives Cross-Site-Scripting geplant.

Blue Coat-Proxys, über die Benutzer auf das globale WEB zugegriffen haben, haben regelmäßig statische Inhalte zwischengespeichert. Durch das Abfangen des Datenverkehrs wurde deutlich, dass sie rund um die Uhr arbeiten und häufig verwendete Statiken endlos anfordern, um die Anzeige von Inhalten während der Stoßzeiten zu beschleunigen. Darüber hinaus verfügte BlueCoat über einen speziellen User-Agent, der sich deutlich von einem lebenden Benutzer unterschied.

Es wurde Javascript erstellt, das mit Hilfe von Intercepter-NG nachts eine ganze Stunde damit verbrachte, jede Antwort mit JS-Dateien für Blue Coat zu implementieren. Das Skript hat Folgendes ausgeführt:

  • Der aktuelle Browser wurde vom User-Agent erkannt. Wenn es Internet Explorer, Edge oder Chrome war, hat es funktioniert.
  • Warten, bis das DOM der Seite gebildet ist.
  • Ich habe ein unsichtbares Bild mit dem Attribut src vom Typ preobrazhensky in das DOM eingefügt : 8080 / NNNNNNN.png, wobei NNN beliebige Ziffern sind, damit BlueCoat nicht zwischenspeichert.
  • Legen Sie eine globale Flag-Variable fest, für die die Injektion vorgenommen wurde und für die Sie keine Bilder mehr einfügen müssen.

Der Browser hat versucht, dieses Bild auf Port 8080 des gefährdeten Servers zu laden. Er hat auf den TCP-Tunnel zu meinem Laptop gewartet, auf dem derselbe Responder gestartet wurde, für den eine NTLM-Anmeldung vom Browser erforderlich ist.


Nach den Responder-Protokollen zu urteilen, kamen die Leute am Morgen zur Arbeit, schalteten ihre Arbeitsstationen ein und begannen dann, den Server des Urologen massenhaft und unsichtbar zu besuchen, ohne zu vergessen, NTLM-Handshakes zusammenzuführen. Handshakes regneten den ganzen Tag und sammelten deutlich Material für einen notorisch erfolgreichen Passwortwiederherstellungsangriff. So sahen die Responder-Protokolle aus:

Massive geheime Besuche von Benutzern auf dem Server des Urologen

Sie haben wahrscheinlich bereits bemerkt, dass diese ganze Geschichte auf dem Prinzip basiert: "Alles war in Ordnung, aber es gab einen Mist, dann gab es Überwindung und dann kam alles zum Erfolg." Es gab also einen Mist. Von den fünfhundert einzigartigen Handshakes wurde keiner enthüllt. Und dies berücksichtigt die Tatsache, dass diese NTLMv2-Handshakes selbst auf einem Laptop mit einem toten Prozessor mit einer Geschwindigkeit von mehreren hundert Millionen Versuchen pro Sekunde überwunden werden.

Ich musste mich mit Passwortmutationstechniken, einer Grafikkarte und einem dickeren Wörterbuch ausrüsten und warten. Nach langer Zeit wurden mehrere Konten mit Passwörtern der Form „Q11111111 ... .1111111q“ eröffnet, was darauf hindeutet, dass alle Benutzer einmal gezwungen waren, ein sehr langes Passwort mit einem anderen Zeichenfall zu erstellen, was kompliziert sein sollte. Aber Sie können einen erfahrenen Benutzer nicht einfach scheitern lassen, und auf diese Weise hat er es einfacher gemacht, sich zu erinnern. Insgesamt wurden etwa 5 Stücke geöffnet, von denen nur eines wertvolle Rechte an den Dienstleistungen hatte.

Teil 3. Roskomnadzor schlägt zurück


So wurden die ersten Domain-Accounts empfangen. Wenn Sie zu diesem Zeitpunkt nach einer langen Lektüre nicht eingeschlafen sind, werden Sie sich wahrscheinlich daran erinnern, dass ich einen Dienst erwähnt habe, für den kein zweiter Authentifizierungsfaktor erforderlich war: Dies ist ein Wiki mit NTLM-Authentifizierung. Das erste, was sie taten, war natürlich einzutreten. Das Eingraben in die interne Wissensbasis brachte schnell Ergebnisse:

  • Das Unternehmen verfügt über ein WiFi-Netzwerk mit Domänenkontoauthentifizierung und Zugriff auf ein lokales Netzwerk. Mit dem aktuellen Datensatz ist dies bereits ein funktionierender Angriffsvektor, aber Sie müssen mit Ihren Füßen ins Büro gehen und sich irgendwo im Büro des Kunden platzieren.
  • , , … « » , . «» «» . , DMZ.

Natürlich wurde der „zweite Faktor“ sofort als Anwendung auf meinem Telefon zum gefährdeten Konto hinzugefügt. Es gab ein Programm, das entweder lautstark eine Push-Anfrage mit den Tasten "Genehmigen" / "Ablehnen" an das Telefon senden oder den OTP-Code für weitere unabhängige Eingaben still auf dem Bildschirm anzeigen konnte. Darüber hinaus sollte die erste Methode die einzig richtige Anweisung sein, funktionierte jedoch im Gegensatz zur OTP-Methode nicht.

Mit dem defekten "zweiten Faktor" konnte ich mich bei Outlook Web Access-E-Mails anmelden und remote auf das Citrix Netscaler Gateway zugreifen. In Outlook wartete eine Überraschung in der Mail:


In dieser seltenen Einstellung können Sie sehen, wie Roskomnadzor Pentestern hilft.

Dies waren die ersten Monate nach der berühmten Telegramm- Lüftersperre , als ganze Netzwerke mit Tausenden von Adressen unaufhaltsam aus dem Zugriff verschwanden. Es wurde klar, warum Push nicht sofort funktionierte und warum mein "Opfer" keinen Alarm auslöste, weil sie ihr Konto in den Öffnungszeiten nutzten.

Diejenigen, die mit Citrix Netscaler vertraut sind, stellen sich vor, dass es normalerweise so implementiert ist, dass es möglich ist, dem Benutzer nur eine Bildschnittstelle zu übermitteln, ohne ihm die Werkzeuge zum Starten von Anwendungen von Drittanbietern und zum Übertragen von Daten zu geben, wodurch Aktionen durch Standard-Control-Shells auf jede mögliche Weise eingeschränkt werden. Durch meinen Beruf bekam ich nur 1C:


Nachdem ich ein wenig auf der 1C-Schnittstelle gelaufen war, stellte ich fest, dass es dort externe Verarbeitungsmodule gibt. Sie können von der Schnittstelle geladen werden und werden abhängig von den Rechten und Einstellungen auf dem Client oder Server ausgeführt.

Ich bat Freunde von 1C-Programmierern, eine solche Verarbeitung zu erstellen, die einen String benötigt und ausführt. In 1C sieht der Start des Prozesses ungefähr so ​​aus (aus dem Internet). Stimmen Sie zu, die Syntax der 1C-Sprache trifft eine russischsprachige Person mit ihrer Unmittelbarkeit?



Die Verarbeitung wurde perfekt ausgeführt, es stellte sich heraus, was Pentester die "Shell" nennen - Internet Explorer wurde dadurch gestartet.


Zuvor wurde die Adresse eines Systems in der E-Mail gefunden, mit der Sie Pässe für das Gebiet bestellen können. Ich habe einen Pass bestellt, falls ich den Angriffsvektor über WLAN verwenden muss.


Im Internet heißt es, dass es im Büro des Kunden immer noch ein leckeres kostenloses Catering gab, aber ich habe es immer noch vorgezogen, einen Angriff über eine entfernte Site zu entwickeln, es ist ruhiger.

AppLocker wurde auf dem Anwendungsserver mit Citrix aktiviert, aber umgangen. Derselbe Meterpreter wurde über DNS geladen und gestartet, da die http (s) -Versionen keine Verbindung herstellen wollten und ich die interne Proxy-Adresse damals nicht kannte. Übrigens verwandelte sich von diesem Moment an der äußere Pentest im Wesentlichen in den inneren.

Teil 4. Administratorrechte für Benutzer - das ist schlecht, p-nyatnenko?


Das erste, was ein Pentester tut, wenn er die Kontrolle über die Sitzung eines Domänenbenutzers übernimmt, ist, alle Informationen über die Rechte in der Domäne zu sammeln. Es gibt ein solches Dienstprogramm BloodHound, mit dem Sie automatisch Informationen über Benutzer, Computer, Sicherheitsgruppen über das LDAP-Protokoll vom Domänencontroller herunterladen und Informationen darüber, welcher Benutzer sich kürzlich angemeldet hat und wer der lokale Administrator über SMB ist.

Eine typische Technik zum Erfassen von Domänenadministratorrechten sieht vereinfacht aus wie ein Zyklus monotoner Aktionen:

  • Wir gehen zu Domänencomputern, auf denen lokale Administratorrechte vorhanden sind, basierend auf bereits erfassten Domänenkonten.
  • Mimikatz , Kerberos NTLM , . lsass.exe . Windows 2012R2/Windows 8.1 .
  • , . . - .

"End of Cycle", wie 1C-Programmierer hier schreiben würden.

Es stellte sich heraus, dass unser Benutzer ein lokaler Administrator auf nur einem Host mit Windows 7 war, dessen Name das Wort "VDI" oder "Virtual Desktop Infrastructure" (persönliche virtuelle Maschinen) war. Wahrscheinlich hat der Entwickler des VDI-Dienstes impliziert, dass der Benutzer, da VDI das persönliche Betriebssystem des Benutzers ist, die Softwareumgebung nach Belieben ändern kann, der Host jedoch trotzdem "neu geladen" werden kann. Ich dachte auch, dass die Idee im Allgemeinen gut ist. Ich ging zu diesem persönlichen VDI-Host und machte dort einen Socket:

  • Ich habe dort den OpenVPN-Client installiert, der einen Tunnel über das Internet zu meinem Server hergestellt hat. Der Client musste mit der Domänenauthentifizierung durch den Blue Coat kommen, aber OpenVPN kam, wie es heißt, sofort fertig.
  • Installiert auf VDI OpenSSH. Was ist Windows 7 ohne SSH?

So sah es lebendig aus. Ich erinnere Sie daran, dass dies alles über Citrix und 1C erfolgen muss:


Eine der Techniken zur Förderung des Zugriffs auf benachbarte Computer besteht darin, die Kennwörter lokaler Administratoren auf Übereinstimmung zu überprüfen. Hier wartete das Glück sofort: Der NTLM-Hash des lokalen Standardadministrators (der plötzlich als Administrator bezeichnet wurde) näherte sich durch den Pass-the-Hash-Angriff benachbarten VDI-Hosts, von denen es mehrere hundert gab. Natürlich ging der Angriff sofort über sie hinweg.
Dann haben sich die VDI-Administratoren zweimal in den Fuß geschossen:
  • Das erste Mal, dass VDI-Computer von LAPS nicht in Betrieb genommen wurden, wurde im Wesentlichen dasselbe lokale Administratorkennwort aus einem Image gespeichert, das massiv für VDI bereitgestellt wurde.
  • — , pass-the-hash . , , — .
Warum SSH-Dienst unter Windows? Ganz einfach: Jetzt bot der OpenSSH-Server nicht nur eine praktische interaktive Befehlsshell, ohne die Arbeit des Benutzers zu beeinträchtigen, sondern auch einen socks5-Proxy auf VDI. Über diese Socken stellte ich eine Verbindung über SMB her, sammelte zwischengespeicherte Konten von all diesen Hunderten von VDI-Computern und suchte dann in den BloodHound-Diagrammen nach dem Pfad zum Domänenadministrator. Mit Hunderten von Gastgebern, die mir zur Verfügung standen, fand ich diesen Weg ziemlich schnell. Domänenadministratorrechte wurden erhalten.

Hier ist ein Bild aus dem Internet, das eine ähnliche Suche zeigt. Die Links zeigen, wer der Administrator ist und wer wo eingegeben hat.


Denken Sie übrigens an die Bedingung von Beginn des Projekts an: "Wenden Sie kein Social Engineering an." Also schlage ich vor, darüber nachzudenken, wie viel dieser ganze Bollywood mit Spezialeffekten abgeschnitten würde, wenn man trotzdem banales Phishing anwenden könnte. Aber ich persönlich war sehr daran interessiert. Ich hoffe, Sie waren daran interessiert, dies zu lesen. Natürlich sieht nicht jedes Projekt so faszinierend aus, aber die Arbeit insgesamt ist sehr rätselhaft und stagniert nicht.

Wahrscheinlich wird jemand eine Frage haben: Wie kann man sich schützen? Selbst in diesem Artikel werden viele Techniken beschrieben, von denen Windows-Administratoren nicht einmal viele kennen. Ich schlage jedoch vor, sie aus der Perspektive abgedroschener Prinzipien und Maßnahmen der Informationssicherheit zu betrachten:

  • Verwenden Sie keine veraltete Software (erinnern Sie sich an Windows 2003 am Anfang?)
  • Lassen Sie nicht unnötige Systeme eingeschaltet (warum war der Standort des Urologen?)
  • Überprüfen Sie die Benutzerpasswörter selbst auf Stärke (andernfalls tun Soldaten ... Pentester dies )
  • Haben Sie nicht die gleichen Passwörter für verschiedene Konten (VDI-Kompromiss)
  • usw

Natürlich ist die Implementierung sehr schwierig, aber im nächsten Artikel werden wir in der Praxis zeigen, dass dies durchaus möglich ist.

All Articles