DEFCON-Konferenz 17. Lachen Sie über Ihre Viren! Teil 1Dann können Sie es in die IDA laden und sehen, dass alles in der Tabelle der importierten Adressen gut aussieht, und wir können den Querverbindungen folgen, um den Zeiger auf die gewünschte Datei zu setzen. So gelangen wir zum genauen Ort des abhängigen Verschlüsselungscodes.

So fanden wir mit nur wenigen Befehlen zum Speichern des Speichers den Ort, an dem sich Coreflood versteckte. Wir haben den PE-Header zerlegt, abgerufen und eingefügt, ohne ihn überhaupt zu haben, und in weniger als 20 Sekunden eine vollständig wiederhergestellte Adresstabelle erhalten.
Die nächste Geschichte heißt "Schatz, es tut mir leid, dich wieder zu stören - ich bin vom Internet gestochen!" Diese Geschichte erzählt uns, dass der defekte IP-Generator Conficker.B nur einen Teil des Internets scannt. Hier kehren wir wieder zur Rand-Funktion zurück. Ein wichtiger Teil dieser Funktion ist die allerletzte Anweisung, die ich mit einem grünen Pfeil markiert habe - sie führt jeden Endwert in EAX mit einem Wert von 7FFF aus. Wenn Sie mit den Prinzipien der Montage nicht vertraut sind und nicht wissen, was diese Anweisung bewirken kann, finden Sie hier eine kleine Demo dazu.

Wir verschieben den Maximalwert, den EAX enthalten kann, in diese Registrierung und führen die endgültige Anweisung aus. Sie können sehen, dass es die obere Hälfte des Werts "abschneidet" und dann 7FFF subtrahiert, das im Dezimalsystem in 32767 konvertiert wird. Anscheinend haben die Autoren nicht erkannt, dass diese Einschränkung, die Windows ausführt, nicht die gewünschte Größe an die Ganzzahl zurückgibt . Es "schneidet" es ab, so dass der Wert 7FFF nicht überschreitet, so dass ein Byte von 7F niemals größer als dieser Wert von 7F sein wird, das heißt, es wird niemals gleich 80 oder so ähnlich sein.
Weiter links auf der Folie, die ich als "bösartige Methode" bezeichnet habe, sehen Sie den Conficker.B-Code. Dies zeigt einen Aufruf von rand, der das erste Oktett der IP-Adresse initiiert, das nach der Rückkehr von rand gescannt werden soll. Der folgende Rand-Systemaufruf initiiert das dritte und vierte Oktett der IP-Adresse, aber aus den oben genannten Gründen sind zwei dieser Oktette niemals größer als 7F. Daher kann der größte Teil des Internets nicht gescannt werden, da Conficker.B diesen Algorithmus verwendet.
Auf der rechten Seite der Folie befindet sich der Teil des Quellcodes, der den Assembler zeigt. Es ist schwierig, auf dem Bildschirm zu lesen, aber dieses Beispiel ist öffentlich verfügbar und Sie können es online lesen, wenn Sie interessiert sind.

Ein Link zu diesem Tool befindet sich unten auf der nächsten Folie mit dem Titel „Simulation der bösartigen Methode“. Sie können auch sehen, dass die IP-Adresse mit PRNG generiert, aber nicht gescannt wird.

Ich möchte Brandon Enright ein großes Dankeschön sagen, der den Zeitplan für die nächste Folie erstellt hat. Dieses Diagramm wird als "Hilbert-Kurve" bezeichnet. Jetzt vergrößere ich das Bild, damit Sie es besser auf dem Bildschirm sehen können. Die blaue Farbe in der Grafik zeigt den Bereich der IP-Adressen an, die von Conficker.B mit diesem bösartigen Algorithmus nicht gescannt werden können. Die dunkelrote Farbe zeigt an, was gescannt werden kann. Sie sehen, dass die meisten Teile des Diagramms nicht dunkelrot, sondern lila sind, und Sie werden nicht sehen, warum dies geschieht, bis Sie das entsprechende Rechteck vergrößern.

Selbst in diesem vergrößerten Rechteck sehen Sie in jedem Block / 16 viele blaue Fragmente, die dunkelrot in lila verwandeln. Dies sind die Teile der Adressen, die Conficker.B nicht scannen kann.

Dies ist sehr interessant, da viele Leute sicher sind, dass Conficker.B "großartige Köpfe" geschaffen hat. Vielleicht ist es das, aber diese Köpfe waren sich der Einschränkungen, die in Windows rand () bestehen, nicht bewusst.
Matthew Richard: Zurück zu den Jungs, die, wie gesagt, ihre Viren nicht sehr gut verwalten. In der Internetkriminalität ähnelt dies dem Sprichwort „Mensch zu Mensch Wolf“, daher werden diese Jungs in ihren Kreisen nicht respektiert.
Lassen Sie uns über die Hacker-Tools Neosploit sprechen, die alle "erwischt" haben. Wir können sagen, dass das Motto der Entwickler lautete: "Danke für das Geld, jetzt ist es Zeit zu rennen." Neosploit ist ein Toolkit zum Organisieren von Webangriffen, sodass die Leute von Cybercrime es kaufen und gegen die Leute auf dem Server konfigurieren, den Server hacken, Codes herunterladen und so weiter.

Die Entwickler von Neosploit haben eine gute Investition getätigt, indem sie ihr Werkzeug verkauft haben, aber nicht zugelassen haben, dass es geändert, modifiziert oder in Teilen verwendet wird. Die dritte Version dieses Toolkits wurde im April 2008 veröffentlicht, und die meisten einzigartigen Exploits sind in C geschrieben. Es handelt sich also nicht um PHP oder eine Art Mist-Webanwendung. Kunden erhielten eine Binärdistribution mit einer Reihe von CGI-Exploits.
Neosploit verfügt über Funktionen, die verhindern, dass Kunden Exploits aufteilen oder kürzen. Zu diesem Zweck wurden alle Exploits im Binärformat dargestellt und mit XOR verschlüsselt. Die Macher haben es so gemacht, dass niemand seine eigenen Exploits basierend auf Neosploit schneiden, kleben und erstellen konnte. Es gibt 40-50-60 verschiedene Arten von Web-Angriffen, die auf gestohlenen und kopierten Codes basieren, die in ihre eigenen Exploits eingefügt wurden. Die Neosploit-Leute sind also etwas schlauer, indem sie ihre Exploits von innen verschlüsseln. Auf dem Screenshot sehen Sie, dass sie eine Datei mit dem Schlüssel neosploit.key haben. Dies ist also eine vollständig lizenzierte Software.

Ich habe keinen Zweifel daran, dass sie eine Menge wirklich guter Kunden hatten, mit denen sie viel Geld verdient haben. Ihre bekanntesten Kunden waren Torpig. Ich denke, Sie haben von dem Mebroot-Rootkit gehört, mit dem Systeme kompromittiert wurden, um ein Botnetz-Netzwerk zu erstellen. Aber die Macher von Neosploit hatten viele andere Kunden. Im Mai 2008 veröffentlichten sie eine neue Verbesserung - die 3. Version ihres Toolkits. Kunden wurden gebeten, das Exploit-Paket mit allen nachfolgenden Updates für 1000 US-Dollar im Voraus zu bezahlen. Später werde ich ausführlicher darüber sprechen, denn jetzt werde ich feststellen, dass sie sich wirklich Sorgen um die Piraten gemacht haben und versucht haben, ihr Produkt so weit wie möglich vor ihnen zu schützen, also hat es definitiv viel Spaß gemacht.

Sogar die Medien schrieben, dass diese Exploits überall sind. Wir werden natürlich versuchen, den Code zu zerlegen und zu zeigen, wie Neosploit funktioniert.
Das erste lustige, was sie taten, nachdem sie diese Reihe von Exploits von April bis Juli intensiv beworben hatten, war ihre Unterstützung vom 20. Juli 2008. Die Erklärung, die sie einfach auf ihrer Website veröffentlichten, lautete wie folgt: „Leider Eine weitere Produktunterstützung ist nicht möglich. Wir entschuldigen uns für die Unannehmlichkeiten, aber Geschäft ist Geschäft, und die für das Projekt aufgewendete Zeit hat sich nicht gerechtfertigt. In den letzten Monaten haben wir bis zuletzt versucht, die Kundenanforderungen zu erfüllen, aber eines Tages sollte der Support eingestellt werden. Wir sind seit anderthalb Jahren bei Ihnen und hoffen, dass dies nicht die schlechteste Zeit für Ihr Unternehmen war. Jetzt werden wir nicht in Ihrer Nähe sein, aber wir möchten dennoch, dass Ihr Geschäft sehr lange floriert. “ Im Allgemeinen haben wir Ihr Geld erhalten, Sie haben das Abonnement bezahlt, seien Sie also gesund!
Sie scherzten jedoch nur und kehrten im August 2008 zurück und veröffentlichten eine völlig neue Version 3.1, die sie ihren Hauptkunden zur Verfügung stellten, was darauf hinweist, dass alle anderen Kunden ein Update erhalten, nachdem sie dafür bezahlt haben. Dieses Update enthielt mehrere neue Exploits für Adobe PDF, Shockwave Flash und Quicktime für Firefox.
Dann entschieden sie sich erneut, ernst zu sein und kündigten an, dass sie die Veröffentlichung von Updates tatsächlich einstellen würden, sodass alle, die ein Prepaid-Abonnement abgeschlossen hatten, es vermasselten.
Kommen wir also zu Neosploit, diesem ziemlich coolen Kit zum Organisieren von Webangriffen. Da die Entwickler gegen Piraten kämpften und Exploits stahlen, die kopiert und in die Kits anderer Leute eingefügt werden konnten, nahmen sie jeden Exploit in eine CGI-Datei und codierten ihn so, dass es sehr schwierig war, ihn dort herauszuholen. C-Exploit-Binärdateien unterschieden sich geringfügig von PHP-Skripten.

Auf dem Neosploit-Blog wurde Dancho Danchevs Satz veröffentlicht, dass "jeder einen neuen Exploit erstellen kann", aber es ist ziemlich schwierig. Ich beschloss herauszufinden, wie schwierig es war und begann, einen der Exploits zu zerlegen.
Jeder Exploit wurde in verschlüsselter Form mit einem 3-Byte-XOR-Schlüssel gespeichert. Für jede eingehende Anfrage wurde der Exploit entschlüsselt und dem Benutzer zur Arbeit zur Verfügung gestellt, und ein solcher Zyklus wurde ständig wiederholt.

Selbst wenn Sie den Speicher durchsuchen und den Speicherauszug entfernen könnten, ist dies immer noch recht schwierig, und Sie können trotzdem alle Exploits abrufen. Diese Puffer werden jedes Mal gelöscht.
Wenn Sie diese Exploits kopieren und in das gewünschte Programm einfügen können, finden Sie glücklicherweise die Antwort. Hierfür wird ein sehr leistungsfähiges Entschlüsselungswerkzeug verwendet - IDA-Scripting. Mit ihm können Sie einen bestimmten Speicherbereich kommentieren oder sichern, Exploits aktualisieren. Dies kann nützlich sein, um mit Malware zu arbeiten, die Zeichenfolgen verwendet, die durch xor, base64 usw. kompliziert sind. Ich habe ein IDE-Skript geschrieben, mit dem ich versucht habe, einen erfassten Speicherauszug eines verschlüsselten Exploits zu zerlegen.

Es durchsucht alle verschlüsselten Objekte, sucht nach allen Aufrufen der Entschlüsselungsfunktionen, erfasst die verschlüsselten Objekte, entschlüsselt sie mit XOR und entfernt dann den Speicherauszug. Dies ist eine Möglichkeit, aber ich denke, Sie könnten Ihr eigenes Skript schreiben, eine Anwendung, die dasselbe tut. Wenn Sie wissen, wie Sie Neosploit neue Exploits hinzufügen können, können Sie etwas in diese Richtung tun. Sobald Sie den Speicherauszug entfernen, erkennen Sie natürlich den gesamten Klartext. Sie können ihn aus der Instrumentierung herausreißen und weiterverkaufen. Die neuen Leute, die die Exploits entwickelten, gaben einfach auf, weil jemand gutes Geld verdiente, ohne sich um ihre Kunden zu kümmern.
Wenn jemand den großen Hip-Hop-Philosophen Biggie Smalls von Notorius BIG gehört hat, dann kennt er sein Lied namens Ten Crack Commandments, "The Ten Commandments of Crack", das große Weisheit enthält. Wenn Sie ein Drogendealer sind, befolgen Sie das 4-Gebot: "Setzen Sie sich niemals auf Ihren eigenen Dope, den Sie drücken." Wahrscheinlich hat der Typ, den ich Peeper genannt habe und der seinen eigenen Schadcode verbreitet hat, dieses Lied nie gehört, weil er sein Produkt an sich selbst getestet hat.
Sein Angriff war wie folgt. Er schickte E-Mails, die als verschiedene Regierungsbehörden getarnt waren, und sprach Personen mit dem Namen an: „Lieber so und so, jemand hat bei der Federal Trade Commission eine Beschwerde gegen Ihr Unternehmen eingereicht. Klicken Sie hier, um ein Dokument herunterzuladen, das das Wesentliche im Detail beschreibt.“ .

Dann folgte der Benutzer dem Link und versuchte, dieses Dokument herunterzuladen, und es war wirklich ein Word-Dokument im DOC-Format. Es gab jedoch eine sehr schwierige Funktion. Sie hatten die Möglichkeit, einfach ausführbare Dateien per Drag & Drop aus einem Word-Dokument zu ziehen und dann umzubenennen. Beim Versuch, die Datei herunterzuladen, wurde jedoch die Meldung „Microsoft Word hat ein Problem festgestellt und das Dokument konnte nicht heruntergeladen werden. Bitte doppelklicken Sie auf das Dokumentsymbol, um fortzufahren. " Tolle Idee!

Natürlich haben die Leute geklickt, sie haben 6 Mal geklickt, um diese infizierte Nachricht zu erhalten, also hatte dieser Typ eine Menge Opfer. Ich mochte diese Nachricht: "Sie haben versucht, mich auszutricksen, bla bla bla."
Das nächste, was wir beim Verfolgen dieses Typen fanden, waren die offenen Verzeichnisse des Drop-Verzeichnisses, in denen er die erhaltenen Informationen ablegte.

Vielleicht hatte er keine eigenen Tools, um sie zu verwalten, oder er fand, dass offene Verzeichnisse eine gute Sache sind, aber offene Verzeichnisse sind schlecht, wenn Sie viele Informationen speichern, die von verschiedenen Personen erhalten wurden. Jeder Server, den er für seine "Landing" -Site konfigurieren würde, hatte ein offenes Verzeichnis, und Sie konnten einfach dort hineingehen und die Listen aller seiner Opfer und jedes einzeln anzeigen.
In gewisser Weise war er ein guter Entwickler, weil er Qualitätscode schrieb. Der Nachteil war jedoch, dass er bei der Adressierung seines Codes an einen Live-Server seine echte IP-Adresse verwendet hat und Sie solche Dinge nicht lange verwenden.

Tatsächlich hatte er ein Standard-DSL-Modem, das mit der Ukraine in Kontakt trat. Er testete seinen gesamten Code und seine gesamte Malware, die eine gute Funktion namens "Follow me" oder "Follow me" hat. Dieser Typ war damit beschäftigt, Bankdaten zu stehlen, aber manchmal wollte er nur seine Opfer beobachten, um zu sehen, was sie taten, also nannten wir ihn Peeper oder "Observer". Er war nicht zufrieden mit der einfachen Funktionalität seiner Software, er begann sich selbst zu überwachen. Es sieht ziemlich seltsam aus, als hätten Sie VNC-Fernzugriffsfenster auf Ihrem eigenen Computer geöffnet und sie in einer Schleife herumgeführt, um immer kleinere Bilder zu erhalten. Tatsächlich tat er dies viele Male auf vielen "Landing" -Servern, tatsächlich war es sehr, sehr seltsam. Wenn man also durch diese "Landungs" -Server schaut, könnte man sagen: "Oh, sieh mal, das ist ein Bild, auf dem er sich selbst beobachtet, sich selbst beobachtet, der sich selbst beobachtet."

"Mein Licht, Spiegel, sag mir, wer auf der Welt ist am süßesten"?
Am meisten hat mir gefallen, was er für sich getan hat. Er verwendete diese Follow Me-Funktion im Codeentwicklungsprozess. Tatsächlich schrieb er den Code, beobachtete sich selbst und schickte dies alles an den Befehls- und Kontrollserver zurück. So ermöglichte er den Beamten, die Hintertür zu durchbrechen, sein Gesicht auf den Boden zu legen und seinen Computer zu beschlagnahmen. Kurz gesagt, nichts hilft, Sie loszuwerden, wie ein Bild eines Quellbaums, der an Ihre IP-Adresse angehängt ist.

Die letzte Malware, die wir uns ansehen werden, wird sicherlich Leute interessieren, die mit Internet Explorer 7 vertraut sind. Aber keine Sorge, Microsoft sagt, dass alles unter Kontrolle ist, vertrauen Sie ihnen!

Microsoft hatte also ein großes Problem mit Internet Explorer 6, da es sehr einfach war, gespeicherte Passwörter von diesem Browser zu stehlen. Normalerweise gehen Sie zur Site, sie fragen Sie, ob Sie das Passwort speichern möchten, ein spezielles Formular wird aufgerufen, Sie antworten mit "Ja" und es wird in der Registrierung gespeichert. Das Problem mit IE 6 war, dass Sie, wenn Sie sich als Benutzer anmelden, nur einen CryptUnprotectData () -Systemaufruf ausführen müssen, um diese Kennwörter zu entschlüsseln, die wirklich keinen Schutz haben.
Daher liest Malware mit Benutzerrechten diese Kennwörter frei und sendet sie an den Angreifer. Daher haben sie in IE 7 einen hervorragenden „Patch“ installiert - Passwörter wurden mit einem 128-Bit-Schlüssel verschlüsselt. Wirklich keine knackbare Lösung!
Wenn Sie genauer hinschauen, können Sie den auf der Site verfügbaren Hash sehen. Ich werde dies etwas später erklären, in dem sich eine Binärdatei befindet, die den Benutzernamen und das Passwort enthält. Ich möchte einen anderen großen Philosophen, John Travolta, aus dem Film Swordfish zitieren. Meine Lieblingspassage ist, wenn er dort sitzt und erklärt: "Dieser Code ist so gut, dass selbst ich ihn nicht knacken kann." Ich denke, er hatte eine 512-Bit-Verschlüsselung im Sinn, und er, der beste Verschlüsseler der Welt, warum er eingestellt wurde, sagt, dass selbst er das nicht kann.
Also hier ist, was Microsoft getan hat. Sie verschlüsseln das Kennwort, für das sie einen 128-Bit-Schlüssel basierend auf dem MD5-Hash der Site generieren, für die sie dieses Kennwort speichern. Dies scheint ziemlich vernünftig zu sein. Wenn Sie also zu
www.bank.com/login.sp gehen, werden sie diese Zeile verwenden, alle Buchstaben in Kleinbuchstaben
schreiben , sie dann in große Zeichen codieren und den MD5-Algorithmus verwenden, wobei diese Zeile in einen Schlüssel umgewandelt wird wird verwendet, um das Passwort in der Registrierung für den Benutzernamen zu verschlüsseln.
Wenn Sie dann diese Site besuchen, für die ein Kennwort gespeichert ist, tun sie das Gegenteil: Der IE normalisiert die URL, transkodiert die Zeichenfolge und überprüft in der Registrierung, ob Werte für Sie gespeichert sind. Im Detail passiert es so:
- Lesen Sie den Hash des Registers für jede URL in index.dat.
- URL wird in Kleinbuchstaben konvertiert;
- GET-Parameter werden reduziert;
- Die URL wird in große Zeichen konvertiert.
- Wenn der Hash des URL-Werts einem beliebigen Wert im Register entspricht, werden die Daten mithilfe dieser URL entschlüsselt.
Dies scheint ziemlich vernünftig zu sein, aber wenn Sie darüber nachdenken, gibt es ein kleines Problem. Tatsächlich gibt es zu wenig Entropie, und der Hacker kann damit leicht umgehen. Dies ist nicht viel komplizierter als die Kennwortverschlüsselung in IE 6.
Es zu hacken ist ziemlich einfach. Um das Kennwort zu speichern, muss der Benutzer die Site besuchen, die dann leicht in index.dat oder im Registrierungsschlüsselabschnitt „TypedURLS“ zu finden ist. Wenn wir nur die Vereinigten Staaten betrachten, dann gibt es ungefähr 15.000 Standorte von Banken und Kreditgenossenschaften, und Sie können sie leicht finden. Sie kennen die Websites, für die Sie Kennwörter suchen möchten, und jede dieser Websites verfügt über Anmeldeseiten. Daher ist es einfach, eine ganze Sammlung von Schlüsseln zusammenzustellen. Wie Sie sehen, ist der Schutz hier eindeutig unzureichend.
Wenn Sie ein Bösewicht sind, kennen Sie wahrscheinlich viele Websites, die Kennwörter benötigen: Facebook, Myspace oder Twitter oder andere mit einer Anmeldeseite, sodass Sie diese Websites einfach herausfinden können. Sie können den Alexa-Dienst verwenden, der eine Liste der beliebtesten Websites verwaltet und Statistiken über deren Verkehr sammelt. Die Schlüssel sind wirklich einfach zu entschlüsseln. Sie können so etwas wie eine „Regenbogentabelle“ erstellen, die auf diesen allgemeinen Quellen basiert, und dann haben Sie alle Schlüssel, um die Passwörter zu entschlüsseln.
, IE 7 : , .
? , . . , Mozilla Firefox, , . , , , «Remember My password». . Firefox IE 7 , , , , .
, , , .
Laqma. , , . - , , , command and control.

, . , , PHP -, PHP , – .
.
: , , , . , . Laqma, . , , Laqma , . , SSDT, IDA - .
, Volatility, . , Laqma, SSDT , , . SSDT, , SSDT, SSDT.

TOS, win32k, , . SSDT , , TOS win32k.
, , , , drv, .sys, . , . , SSDT . .
Dieser Vorgang wird mithilfe des SSDT-Plugins leicht automatisiert. Sie sehen, wie BSOD auf dem Bildschirm blitzte, es funktionierte das IDA-Befehlszeilenprogramm. Als Ergebnis der automatischen Verarbeitung wird eine IDB erstellt. Dies ist etwas automatisierter, wodurch IDB-Funktionen, die den "eingebundenen" SSDT-Funktionen entsprechen, gekennzeichnet werden.Mit einem kleinen Schritt erfuhren wir, welche SSDT-Funktionen mit dem Speicherauszug verknüpft sind, dem das erstellte IDB-Modul gehört, und wir konnten sie benennen, um genau zu wissen, wo in IDB gesucht werden muss, wenn ich mit dem Reverse Engineering beginne.Ich hoffe du hattest Spaß!Vielen 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 Dezember 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?