Hallo, ich bin Zach Feysel, ich werde schnell sprechen. Wenn es zu schnell ist, kannst du mich verlangsamen. Tagsüber bin ich ein Pentester, nachts bin ich DJ und Fotograf. Ich bin auf Twitter unter dem Spitznamen @zfazel zu finden. Die Leute fragen mich immer nach Diplomen. Ich gehöre nicht zu den Leuten, die eine Reihe von Abschlüssen auflisten. Sie sollten mich also besser anhand dieser Präsentation beurteilen und nicht anhand der Anzahl meiner Zertifikate.

Ein unverschämter Kommentar: Wir haben hier wenig Konkurrenz, im Moment sind die Jungs aus Chicago auf Spur 4, wir sind alle aus Chicago, heben Sie schnell Ihre Hände, wer hier aus Chicago ist. Ich glaube, ich habe die Wette verloren. Ich werde heute Abend DJ im Pool sein. Wenn Sie also frei sind, begrüßen Sie den Kampf mit Kate Myers. Danach werde ich zu einer weiteren Hacker-Konferenz nach Chicago zurückkehren. Letztes Jahr waren 500 Personen anwesend, dieses Jahr hoffen wir, dass es mehr Gäste geben wird. Meine 312 Leute werden auch da sein, weitere Informationen zu dieser Konferenz finden Sie auf thotcon.org.
Um keine Zeit zu verschwenden: Wir werden über eine Alternative zum Pass-the-Hash-Angriff namens NTLM-Relay sprechen, über eine Reihe neuer Tools für das protokollübergreifende protokollübergreifende Relaying für NTLM-Authentifizierungsanforderungen, über neue Methoden der automatischen Clientauthentifizierung und über neue Zwecke, für die Sie Pass-the-Hash verwenden können.
Beginnen wir mit NTLM. Für diejenigen, die nicht wissen, was NTLM 101 ist, kann der ganze Punkt in weniger als 10 Minuten angegeben werden. Was ist LM / NTLM? Es handelt sich um ein Kennwort-Repository und ein Netzwerkauthentifizierungsprotokoll, die von Microsoft für die Verwendung unter Windows entwickelt wurden. Verdammt, meine Folien sind nicht in Ordnung! Der LM-Hash ist also ein Format zum Speichern von Benutzerkennwörtern mit einer Länge von weniger als 15 Zeichen. Das Kennwort wird in 2 Teile von 7 Bytes unterteilt und in Großbuchstaben konvertiert. Ich hoffe, Sie können sehen, wie die LM- und NTLM-Hashes aussehen. Ich werde keine Zeit damit verschwenden, zu erzählen, wie schlecht und schwach LM ist. Sie alle wissen das und wenn nicht, googeln Sie es.

Ein NTLM-Hash unterscheidet normalerweise zwischen Groß- und Kleinschreibung, hat eine unbegrenzte Länge, ist nicht in Zeichengruppen aufgeteilt und ist etwas stärker als LM, aber auch nicht ohne Probleme. Jetzt werde ich über sie sprechen. Die erste Sicherheitsanfälligkeit ist die Möglichkeit eines Pass-the-Hash-Angriffs, bei dem sich ein Hacker bei einem Remoteserver anmelden kann, der eine Clientauthentifizierung basierend auf NTLM / LM-Protokollen verwendet. Sorry, Leute, ich habe die Folien durcheinander gebracht, ich habe sie vor 5 Minuten gemacht, kurz gesagt, LM ist scheiße.
Was ist die NTLM-Authentifizierung? Dies ist die Netzwerkauthentifizierung für Remotedienste. Sie muss beweisen, dass du wirklich das bist, was du dich nennst. Der Dienst wird normalerweise auf einem separaten Computer ausgeführt, auf dem Sie auf die vom Dienst angebotenen Ressourcen zugreifen möchten. Beispielsweise ist ein Dateiserver ein Dienst und Dateien sind Ressourcen. In einer Minute werden wir uns ansehen, was diese Dienste sind.
Wir können verwirrt sein, wenn wir über NTLM v1, v2, NTLM 2, signiert oder nicht signiert, sprechen. Lassen Sie uns also schnell die NTLM-Authentifizierung durchgehen. Während der Authentifizierung werden 3 Arten von Nachrichten gesendet.

Typ 1 ist die Anforderung des Clients an den Server, einen Kontakt herzustellen, z. B. "Ich möchte mich authentifizieren". Sie sehen das von Wireshark erfasste Paket in Stücke zerlegt. Es gibt Flags zur Unterstützung der Authentifizierung, den Namen der Workstation und ihren Domänennamen.
Die Nachricht vom Typ 2 ist eine Serverantwort. Wenn Sie anhand der Nachricht vom Typ 1 bemerkt haben, dass wir noch nicht wissen, wer dieser Benutzer ist, hat er nur um eine Verbindung zum Server gebeten und möchte herausfinden, ob die Anforderung unterstützt wird.

Hier sehen Sie die Antwort des NTML Challenge-Servers als eine Reihe von Zahlen, die sich jedes Mal ändern. Der Screenshot zeigt eine statische Antwort, mit der „Regenbogentabellen“ erstellt werden können. Der Server antwortet also mit einer Nachricht des zweiten Typs: "Dies ist, was ich unterstütze, hier ist mein Domainname, hier ist mein Servername". Diese Antwort wird verwendet, um den Hash Ihres Passworts zu "salzen", sodass jedes Mal, wenn eine eindeutige Antwort erhalten wird, Sie diese nicht immer wieder mit derselben Anfrage wiederholen können.
Nachricht vom Typ 3 - Dies ist die Clientauthentifizierungsnachricht.

Dies ist die Antwort des Servers, der mit dem Kennwort-Hash für den NTML-Hash zusammen mit dem Benutzernamen, dem Namen der Arbeitsstation und dem Domänennamen sowie dem Sitzungsschlüssel gehasht wird, wenn Sie die Sitzung signieren.
Dies ist, was NTML Version 1 ist. NTML Version 2 ist dem sehr ähnlich, aber es gibt zusätzliche Parameter im Antwortkennwort und beim Aufruf des Clients, um vor der Verwendung von "Regenbogentabellen" zu schützen, dh der Client verwendet ein Element der Zufälligkeit gegen diese.
Eine andere Sache, über die wir sprechen müssen, ist die integrierte Windows-Authentifizierung. Dies ist erforderlich, damit Sie das System nicht jedes Mal mit einem Kennwort erneut eingeben müssen, um Ressourcen und Dienste nutzen zu können. Wenn Sie mit einem Domänenserver oder einem internen Webserver verbunden sind, fordert Windows Sie nicht zur Eingabe eines Kennworts auf, sondern fordert lediglich eine API an und empfängt Informationen, die das System zur Authentifizierung verwenden soll.
Im Kontext der lokalen Sicherheit schützt HTTP durch Verwendung vertrauenswürdiger Sicherheitszonen, vertrauenswürdiger Sites oder lokaler Sites, indem nur ein Domänenname mit nur einem Wort überprüft wird. Ich werde versuchen, Ihr Gedächtnis schnell aufzufrischen. Eine Einzelwortdomäne sucht zuerst auf DNS-Servern nach einem DNS-Namen, überprüft dann ihren Host- oder DNS-Hostnamen und gibt ihn zurück. Es überprüft die Struktur Ihres vollständigen Namens und führt dann NBNS aus, die Broadcast-Anforderung für diesen Domainnamen. Tatsächlich fragt er das Netzwerk: „Hey, ich suche einen
Namen , kennen Sie jemanden mit diesem Namen?“, Verteilt diese Anfrage im MBNS-Multimedia-Broadcast-Modus über das lokale Netzwerk.
Wie gesagt, da wir das SMB-Protokoll überall verwenden, gibt es keine Einschränkungen, wir haben nur eine automatische Authentifizierung mit SMB. Dies verursacht einige Probleme.
Betrachten Sie die Pass-the-Hash-Methode. Aus den Protokollen geht hervor, dass NTML nicht das ursprüngliche Kennwort für die Authentifizierung verwendet. Wir benötigen also nur den NTML-Hash selbst. Wir können mit verschiedenen Windows-Tools auf den NTML-Hash zugreifen, dh diesen Hash aus dem lokalen Speicher oder aus dem Speicher abrufen. All dies wurde in anderen Reden beschrieben. Ich möchte Sie nur schnell an das Wesentliche des Problems erinnern, um die Unterschiede zwischen den beiden Methoden aufzuzeigen.
Tatsache ist, dass Sie für diesen Pass-the-Hash normalerweise Zugriff auf lokaler Systemadministratorebene benötigen, da Sie mit einem Gastkonto keinen Zugriff auf lokalen Speicher oder lokalen Speicher erhalten.
Was ist NTLM-Relaying und wie unterscheidet es sich von der Pass-the-Hash-Methode? Sie sagen mir ständig: "Ah, Sie sprechen von Pass-the-Hash!" Und ich antworte: "Nein, ich spreche von NTLM-Relaying!". Der Unterschied besteht darin, dass für NTLM Relaying keine Administratorrechte erforderlich sind, um auf das Netzwerk oder das System zuzugreifen. Tatsächlich stellen Sie von innen oder außen eine Verbindung zum Netzwerk her und beginnen als Gast zu arbeiten. Es gibt keine Anmeldeinformationen, es gibt keinen Zugriff auf das System, nur die Anforderung wird authentifiziert, wenn Sie zu den oben genannten Nachrichtentypen 1,2,3 zurückkehren. Es erfolgt keine Überprüfung, wenn der Host auf Ihre Anfrage antwortet und sicherstellt, dass Sie Sie sind.
Wir erstellen einen betrügerischen Server, um Authentifizierungsanforderungen zu empfangen und diese dann an den Zielserver weiterzuleiten.
Hören wir uns die Geschichte an, damit Sie die Essenz des Problems verstehen. Als Dominic Brezinsky 1996 eine Sicherheitslücke im Authentifizierungsprozess mithilfe des CIFS-Zugriffsprotokolls entdeckte, der ersten Version des SMB-Protokolls. Danach sprachen sie zunächst über die Möglichkeit der Verwendung von NTLM-Relaying. Im Jahr 2001 gelang es NTLM, ein Loch in SMB zu finden. Zuerst sagte Veracode-Mitarbeiter Christian Ryu (alias Dildog) dies auf einer DefCon-Konferenz, und dann veröffentlichte Hacker Josh Bushbinder (alias Sir Dystic) einen Exploit-Code, der mit dieser Sicherheitsanfälligkeit funktioniert. Wir haben das Telnet-Protokoll und die Sicherheitsanfälligkeit des IE-Browsers verwendet, bei der Sie einfach telnet: // ip eingeben und sich automatisch authentifizieren konnten.

Danach wurde die NTLM-Relaying-Methode verwendet, um SMB-Anforderungen an andere Hosts oder an ihren eigenen Host umzuleiten. Dies dauerte bis November 2008, als Microsoft Windows Lücken reparierte, wo dies möglich war, und verhinderte, dass die NTLM-Authentifizierungsanforderung mit dem Patch MS08-068 zurückgegeben wurde.
Daher haben wir die Möglichkeit verloren, eine Authentifizierungsanforderung an unseren Host zurückzugeben, und konnten sie aufgrund der Protokolldesignfunktionen nur an andere Hosts weiterleiten. Im Jahr 2008 gab ein Mann unter dem Spitznamen Grutz eine Erklärung zum Tod von DefLon NTLM ab. Ich denke, dies war eine der besten Leistungen der letzten Jahre, da dies einen enormen Einfluss auf das Unternehmensumfeld hatte.

Er nannte sein Instrument den Namen des Pokemon Squirtle und die Technologie - "Affe in der Mitte" in Analogie zu "Mann in der Mitte". Dieses Tool ermöglichte die Ausführung von NTLM-Relaying über HTTP und funktionierte auch gut mit SMB, die Authentifizierungsanforderungen empfingen.

Dieser Screenshot wurde vor zwei Tagen aufgenommen und die Entwicklung seiner Squirtle-Anwendung ist noch nicht abgeschlossen. Ich habe beschlossen, dass Sie alle mit diesen Sicherheitslücken vertraut sind, über deren Probleme wir immer wieder sprechen, weil sie in keiner Weise behoben sind und sich überall manifestieren. Ich gehöre zur Unternehmensumgebung, daher bin ich mir des Problems bewusst, über das ich mich ständig beschwere - dass Websites keine SSL-Verschlüsselung von Authentifizierungsanforderungen durchführen, genauso wie sie ihre Cookies nicht verschlüsseln. Im Jahr 2010 wurde eine Firefox-Browsererweiterung namens Firesheep veröffentlicht.
Sie sind wahrscheinlich mit diesem Tool zum Abfangen unverschlüsselter HTTP-Cookies beliebter Websites und anderer Sitzungen zum Arbeiten mit Websites über WLAN oder Netzwerk-Sniffing vertraut, die sich als andere Benutzer ausgeben.

Ich fragte mich, woher die Leute den Drang hatten, solche Werkzeuge zu entwickeln. Es stellt sich heraus, dass es um Benutzerfreundlichkeit geht. Es ist einfach genug, eine Anwendung zu erstellen, mit der Sie sich als jemand anderes ausgeben können. Deshalb habe ich mich entschlossen, von derselben Seite aus zu beginnen und eine Anwendung zu erstellen, mit der die NTLM-Relaying-Methode verwendet werden kann, um den Leuten zu zeigen, dass es so einfach wie Firesheep ist.

Ich habe angefangen, an NTLM Relaying zu arbeiten, um zu sehen, wie Multiprotokollunterstützung möglich ist. Viele Leute sprachen über die theoretische Möglichkeit einer solchen Unterstützung, aber niemand setzte sie in die Praxis um. Mein Ziel war es also, Firesheep für NTLM zu erstellen.
Ich habe beschlossen, Ruby zu lernen, weil ich meinen Exploit ursprünglich in Metasploit integrieren wollte. 2012 wollte ich dieses Thema auf Black Hat- und DefCon-Konferenzen ansprechen, aber mein Bericht wurde abgelehnt. Meine Reden wurden nicht nur abgelehnt, ich erhielt eine gefälschte E-Mail, dass DefCon meinen Bericht akzeptierte. Ein Freund dachte, es wäre sehr lustig, mich zu trollen, er ist so ein Idiot. Er hatte hier einen Freund, dessen Leistung genehmigt wurde, und mein Freund nahm mich auf und schickte mir den Inhalt seiner E-Mail. Ich habe nicht auf die Überschrift geachtet, die "From Nikita" lautete und in Panik geriet, als mir klar wurde, dass ich in anderthalb Stunden bei DefCon sprechen sollte, aber dann erhielt ich einen echten Brief mit einer Ablehnung.
Glaubst du, das beendet die Geschichte? Nein, drei Wochen später sagt mir Nikita: "Hey, wir haben am Sonntag eine Eröffnung, jemand hat sich geweigert teilzunehmen, willst du an seiner Stelle sprechen?" Ich fand es in Ordnung, aber dann wurde mir klar, dass ich vor der Aufführung nur sehr wenig Zeit hatte, und ich begann wie verrückt zu programmieren und versuchte, alles pünktlich zu beenden.
Was waren meine Probleme? Erstens konnten fremde Tools den von mir benötigten Pentester-Job nicht ausführen, da ihnen verschiedene Protokolle fehlten, die Authentifizierungsanforderungen zurückgeben konnten. Die meisten Protokolle bezogen sich auf die Verwendung von SMB und HTTP, und keines von ihnen unterstützte LDAP für die MySQL-Authentifizierung oder zumindest das Testen von Remotedesktop, VPNs und dergleichen.
Ein weiteres Problem bestand darin, dass alle Anfragen an dasselbe Ziel weitergeleitet wurden. Das heißt, wir haben Benutzerdaten und Computerkonten empfangen und die gesamte Authentifizierung an einen einzigen Zweck gesendet. Daher konnten wir Benutzer vor der Authentifizierung, dh vor dem Empfang einer Nachricht vom Typ 3, nicht identifizieren. Wenn Sie sich an diese Nachrichten vom Typ 1,2,3 erinnern, ist die Nachricht vom Typ 2 die Antwort des Servers. Es ist für jede Sitzung einzigartig und ich weiß nicht, wer diese Benutzer sind, bis sie die letzte Nachricht vom Typ 3 senden, und ich weiß nicht, welche Antwort und von welchem Server der Benutzer ist. Ich war daran interessiert, warum es keine Tools gibt, die dies tun würden, deshalb habe ich mir Protokolle wie SMB und HTTP genauer angesehen. Später werden wir genauer darauf eingehen.
Windows 8 und Windows 2012 unterstützen weiterhin standardmäßig NTLM. Dies ist beängstigend, da wir über die Sicherheitsanfälligkeit dieser Protokolle Bescheid wissen, NTLM jedoch nicht verschwunden ist. Deshalb informieren wir als Pentester Organisationen, dass sie sich vor solchen Angriffen schützen müssen.
Also wollte ich dieses Problem lösen und habe ein Tool namens ZackAttack erstellt. Ich weiß, dass es hässlich aussieht, aber wir haben eine ganze Reihe von Namen durchgesehen. Ich persönlich mochte den letzten am meisten - „NTLMv2? Hündin bitte ... ".

Was ist in diesem Tool enthalten? Ich werde diese Folien schnell durchgehen, weil ich denke, dass Sie bereits genug unterhalten wurden. ZackAttack besteht aus mehreren verschiedenen Komponenten, wir werden über jede von ihnen sprechen und wie sie miteinander zusammenhängen.
Zunächst gibt es einen HTTP-SMB-Server - dies ist ein betrügerischer Server, der Authentifizierungsanforderungen akzeptiert. Clients zielen also auf diesen Server ab, authentifizieren sich und der Server hält sie authentifiziert. Als nächstes haben wir eine Reihe von Regeln für den automatischen Betrieb.
Wir haben Clients für solche automatischen Exploits sowie APIs, die wir mit jeder Drittanbieteranwendung verknüpfen können, die NTLM-Relaying-Anforderungen überträgt.

Schließlich haben wir eine Generation von Nutzdaten, die Kunden dazu zwingen, sich automatisch für uns zu authentifizieren.
Was sind betrügerische Server? Erstens authentifizieren sie Benutzer und speichern sie für uns, später werde ich Ihnen sagen, wie wir sie verwenden.

Wir brauchen all diese Leute, um ihren Authentifizierungsstatus aufrechtzuerhalten. Es gibt viele Tools, die Benutzer nach der ersten erfolgreichen Authentifizierung deaktivieren, aber unser ZackAttack-Tool hält Benutzer so lange wie möglich authentifiziert. In Windows LAN für SMB dauert dies ungefähr 30 Mal, bevor die Verbindung getrennt wird. Wir müssen also herausfinden, wer dieser Benutzer ist, während wir ihn authentifizieren.
Die erste Authentifizierungsanforderung ist ein statischer Aufruf vom Typ 112233. Diejenigen unter Ihnen, die am Pentesting beteiligt sind, wissen, dass dies eine Art Aufgabe für „Regenbogentabellen“ ist. Wie gesagt, wir müssen herausfinden, wer dieser Benutzer ist, aber wir wissen das nicht, bis wir zur Typ 3-Nachricht kommen, also senden wir eine Reihe von Anrufen. Ich nenne dies das "Alzheimer-Element", wenn das System vergisst, wer der Benutzer ist, und ihn jedes Mal auffordert, sich zu authentifizieren, um eine Verbindung herzustellen, ohne die Sitzung zu schließen.
Der Grund, warum wir dies tun, ist, dass HTTP, WPAD und andere Anforderungen Cookies nicht immer unterstützen. Außerdem funktioniert die SMB-Identifizierung über IP oder Quellport. Quellport funktioniert nicht, wenn Sie versuchen, dies remote über das Internet zu tun.
Daher verwenden wir für den HTTP-Server eine 302-Umleitung mit dem Keep-Alive-Parameter, mit der wir die Sitzung offen halten können, während der Socket geschlossen ist. Nach der Authentifizierung wissen wir, wer sie sind, und wir wissen dies bis zum Ende dieser Sitzung.
Mit SMB war es schwieriger, ich musste einen benutzerdefinierten SMB-Server schreiben, es ist ein bisschen fehlerhaft, aber es funktioniert trotzdem. Ich werde mich nicht mit dem Authentifizierungsmechanismus des SMB-Protokolls befassen, da dies einige Stunden dauern wird, daher werde ich kurz darauf eingehen. Nachdem der Server die Authentifizierungsanforderung erhalten hat, scheint er zu vergessen, wer dieser Benutzer ist, und sagt: "Oh, hallo, schön Sie kennenzulernen!" "Cool, ich möchte mich verbinden!" "Warten Sie, und wer sind Sie?" Und erfordert erneut eine Authentifizierungsanforderung.
Daher müssen wir Authentifizierungsanforderungen empfangen, die an HTTP- und SMB-Server gesendet werden. Viele Leute fragen, wie wir den Angriff „Mann in der Mitte“ durchführen. Es gibt verschiedene Möglichkeiten, um Benutzer dazu zu bringen, sich bei unserem Server zu authentifizieren und sie dann zu anderen Aufgaben zu senden. Überlegen Sie daher, wie hoch die Nutzlast in unserem Tool ist.
Dies ist zunächst WPAD - ein Protokoll für die automatische Proxy-Konfiguration, mit dem Sie den Speicherort der Konfigurationsdatei bestimmen können. Wenn Sie unter Windows versuchen, wie Sie wissen, eine Verbindung herzustellen, wird ein Fenster mit einem kleinen Häkchen "Meine Verbindungseinstellungen automatisch finden" angezeigt, das WPAD aktiviert. Dieses Protokoll sendet Anforderungen zum Überprüfen von DNS- und Netzwerksendungen, damit Sie diese Anforderungen fälschen und darauf antworten können.
Standardmäßig authentifiziert der Computer unter Windows den WPAD-Server automatisch über HTTP mit den aktuellen Benutzeranmeldeinformationen.
18:00 min
DEFCON 20-Konferenz. Erfassung in 60 Sekunden: von einem Gastkonto zu einem Windows-Domänenadministrator. Teil 2Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung
aufgeben oder Ihren Freunden empfehlen, einen
Rabatt von 30% für Habr-Benutzer auf ein einzigartiges Analogon von Einstiegsservern, das wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s von $ 20 oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).
VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s bis zum Frühjahr kostenlos, wenn Sie für einen Zeitraum von sechs Monaten bezahlen, können Sie
hier bestellen.
Dell R730xd 2 mal günstiger? Nur wir haben
2 x Intel Dodeca-Core Xeon E5-2650v4 128 GB DDR4 6 x 480 GB SSD 1 Gbit / s 100 TV von 249 US-Dollar in den Niederlanden und den USA! Lesen Sie mehr über
den Aufbau eines Infrastrukturgebäudes. Klasse mit Dell R730xd E5-2650 v4 Servern für 9.000 Euro für einen Cent?