Ein Deuce für Sie oder ein Audit mit Hacking

Wie immer, ohne Namen und da ich zusätzlich mit einer Geheimhaltungssignatur verbunden bin, hat sie auch eine leicht veränderte Geschichte (und einige Details weggelassen, für deren Veröffentlichung ich keine Erlaubnis erhalten habe).
Das Folgende ist die wahre Geschichte eines Mitarbeiters, der in einen Computer eindringt ... sagen wir mal eine Privatbank. Die Ereignisse, von denen Ihr bescheidener Diener erzählt, ereigneten sich in einem europäischen Land vor nicht allzu langer Zeit, noch vor der DSGVO (DSGVO, RGPD), aber im Vorgriff darauf, eins zu werden, in Erwartung der sogenannten.


Eigentlich begann alles mit einem Sicherheitsaudit - ..., einem Interview, das unter die Lupe von allem und jedem blickte, nach potenziellen Lücken und Engpässen suchte und diese herausarbeitete (sowohl dort als auch von dort), ... und tatsächlich der Nachbesprechung. An dem der Kunde am Ende eine enttäuschende Schlussfolgerung für ihn erhielt - "C-Note mit einer Strecke".


Lassen wir die Worte weg, die IT-Sicherheitsmitarbeiter vor ihren Augen erröteten, aber die allgemeine lyrische Botschaft lautet, dass ich unbegründete Anschuldigungen vorwerfe und sie alles gesperrt haben und der CSO- Schlüssel in meiner Tasche unter meinem Herzen ist.


Versuche zu erklären, dass das Sicherheitssystem auf Firewall + Proxy + Webwasher wie Inhaltsfilter und Antivirus basiert, ohne sehr schlecht konfigurierte Hybrid-IDS (HIDS + APIDS), Honepots usw. usw. ist erstens per definitionem nicht sicher, zweitens habe ich sozusagen schon mehrere Stellen gezeigt, an denen es zumindest nicht comme il faut ist. Versuche, zu einem konstruktiven Dialog zurückzukehren (eigentlich zurück zur Analyse), wurden gegen eine dreistöckige Ressentimentswand geschlagen, die von der gesamten Abteilung errichtet wurde.


CSO beschränkte das Meeting und entließ die Mitarbeiter. Zusammen mit zwei wichtigen Vorgesetzten versuchte er dennoch ehrlich von mir herauszufinden, wo der Hund stöberte und verstand wie man weiter lebt in der Tat und was genau, meiner bescheidenen Meinung nach, getan werden muss.


Weil Ein Hauch von Verständnis wurde auch in Zukunft nicht beobachtet, mit Begeisterung traf ich einen Vorschlag, um ihn in der Praxis zu zeigen. Nachdem ich erklärt hatte, dass es im Moment nicht klappen wird, Formalitäten zu erledigen (ein paar weitere Papiere zu unterschreiben usw.), bekam ich die Erlaubnis.


Ich mag die Tatsache nicht wirklich, dass ich „blind“ arbeite (es ist mühsam, langwierig und teuer, und Pentesting ist eine Frage des Glücks) und bitte geben Sie einige zusätzliche Informationen an (zum Beispiel einige personenbezogene Daten einzelner Mitarbeiter wie Entwickler und Sicherheitspersonal) ) Habe ich auch kein Gegenverständnis getroffen.


Bist du ein Hacker oder nicht ?! (Nein, ich bin Entwickler, sonst ist es eher ein Hobby.)


Ich werde nicht lange auf weitere Diskussionen eingehen - wie immer habe ich den Faktor Geld und Zeit (d. H. Tatsächlich das gleiche Geld) überzeugt.


Das heißt, Infolgedessen verfügen wir über Kenntnisse über die Verteidigungsstruktur des Unternehmens (die als Ergebnis einer vorläufigen Prüfung erhalten wurden) sowie über einen vollständigen Namen und eine kurze Biografie von 4 Administratoren und 3 Entwicklern.


Warum sind Administratoren und Entwickler eigentlich richtig? Man könnte schließlich nach „Buchhalterinnen“ fragen, ihnen eine Art „Katze“ mit einem viel weniger sicheren Tier schicken (oder etwas Ähnliches aus dem Bereich Social Engineering aufdrehen). . Aber ...
Viele Unternehmen mögen es jedoch in der Regel nicht wirklich, wenn sie bei der PoC- Präsentation darüber sprechen, d. H. Ein „Hacking-System“, das auf Intrigen aus dem Bereich Social Engineering basiert, wird zumindest nicht begrüßt, egal wie brillant es gebaut wurde.


Zurück zu den Technikfreaks: Erstens sind sie nicht weniger "sozial" (was nicht bedeutet, dass sie eine Art "Katze" starten, aber die Tatsache selbst ist wichtig), und zweitens haben sie normalerweise einen "funktional entwickelten" Computer ( was du einfach nicht treffen wirst). Und was noch interessanter ist, außerdem haben sie oft eine Art „Privileg“, im Gegensatz zu demselben Buchhaltermädchen, das heißt, Sie können entweder in Bezug auf Sicherheits- und Systemeinschränkungen weniger verletzt werden (z. B. Richtlinien und Co - es ist beispielsweise erforderlich, einen neu kompilierten Exe-Shnik auszuführen) und / oder sie können durch eine von Sicherheitspersonal errichtete „Mauer“ klettern (z. B. durch Erzwingen eines Tunnels) durch einen Proxy) usw. usw.


Auch hier klingt das Durchkriechen des Schutzes mit dem Computerprogrammierer oder dem Administrator gleichzeitig völlig anders, als beispielsweise den Trojaner des Buchhalters zum Ausführen zu "zwingen".


Das heißt, anfänglich erhalten, Aufgaben geäußert - los geht's ...


Der erste Schritt besteht darin, Informationen über "Kunden" zu sammeln - wer, was, wo, wann.


Ich werde hier nicht sehr abgelenkt sein, der Artikel handelt nicht nur davon, also sage ich nur - ich habe mich mit Facebook und Co für einen ziemlich sozialen Typ entschieden, einschließlich seines eigenen Youtube-Kanals (YouTube, Vasya!), Mehrere Open-Source-Projekte (sowohl in der Gruppe als auch in der Gruppe) und besitzen) und nur eine riesige Beitragsaktivität (fragt, aber er arbeitet in der Regel an der Hauptstelle) .


Das Herausfinden von Hoo-Hoo ist heute im Allgemeinen überhaupt kein Problem (irgendwo habe ich meinen richtigen Namen an einem Ort mit einem Spitznamen verwendet, irgendwo habe ich eine Proxy-IP-Adresse von der Firma erhalten und das Bild wurde erstellt), aber niemand versteckt es wirklich.


Ich war gezwungen, langsamer zu fahren, einschließlich mein natürliches Flair Die Tatsache, dass unser Held in einer Community mehr oder weniger aktiv im Chat unterstützt wurde und den IRC-Client verwendete, der in Benutzerinformationen zusätzlich zu IP bereitgestellt wurde, von wo aus die Beine wachsen, der Name und die Version von sich selbst liebten, nun, das war berühmt Bugs / Löcher und standardmäßig wurde es von Plugins umsonst verpackt.


Nun, wie immer, eines Abends, Das Haus ist eingeschlafen, man hat Rückstände in der Kiste, unsere verlieren wieder :) In diesem Chat fand ich einen bekannten Spitznamen als aktiver Benutzer mit einer Verbindung, die länger als 12 Stunden dauerte (gemessen am Protokoll mit Zwischenabtrennungen / Wiederverbindungen, da ein Unternehmens-Proxy so etwas ist, aber mehr als einen halben Tag seit der ersten Verbindung), von der IP-Adresse, die ich benötige d.h. mit einem Login des Formulars max.mustermann@proxyext.our-company.example.com .


Das heißt, entweder hat unser Client einen Tag - 24 Stunden oder wahrscheinlicher (weil seit seiner letzten Nachricht 2 Stunden vergangen sind), er hat den funktionierenden Computer einfach nicht ausgeschaltet und den IRC-Client aktiv gelassen.


Oder vielleicht hat er den Computer in den Ruhezustand versetzt, aber (wieder der Fehler der Sicherheit oder der Administratoren) es kommt vor, dass dieser sich selbst aufweckt, um beispielsweise Updates für Windows zu aktualisieren (und nach einer 4-stündigen Pause zum Neustart) oder einfach nur dumm ein Wake-on-LAN-Signal abzufangen. .


Wie dem auch sei, ich hatte etwas Zeit, um den Computer oder vielmehr den IRC-Client unseres „Opfers“ zu tätscheln.


In dieser speziellen (zu diesem Zeitpunkt übrigens relevanten) Version des IRC-Clients, die mit einer IDA, einem Olydbg usw. bewaffnet ist, wurde kein einziges bekanntes Loch gefunden. und als er auf die Quelle blickte (leises Entsetzen, Vasya!), suchte er nach einer Art Sicherheitslücke, die es ihm ermöglichte, dort zumindest etwas auszuführen, um den IRC-Client zumindest fernzusteuern (und wir erinnern uns an die Plugins).


Und es wurde sogar relativ schnell gefunden!


Das Abfangen des Steuerelements ermöglichte das Vorhandensein eines unsicheren sprintf Aufrufs des Puffers vom Stapel mit %s innerhalb der schlecht gefilterten Fremd-Eingabe (in Verbindung mit der Codierungsinjektion), wodurch der "Exploit Code Loader" an der richtigen Stelle auf den Stapel geschrieben werden kann (dank der Entwickler des Clients für den Code). Microsoft für Lowland Stack und Glück).


Obwohl die Qual noch musste - weil Wir haben DEP. Sie können nicht direkt vom Stapel aus ausführen. Sie müssen eine Kopie des "Programmcodes" auf den Stapel schreiben, um ihn auszuführen. Suchen Sie den memcpy Aufruf mit ret am Ende, um ihn an die richtige Stelle zu kopieren (schreiben Sie die weniger verwendete Klasse neu). Leiten Sie die Ausgabe von mehreren Prozeduren an die richtige Stelle um. Überschreiben Sie mehrere VTABLE-Werte, um ein Ereignis zu generieren, indem Sie die nächste virtuelle Methode aufrufen, die Python-Code als Plug-In verursacht (und ändern Sie diesen Python-Code wie einen Loader aus fehlerhaften Nachrichten in Ihren eigenen, um bereits ein fertiges zusammenzustellen ployt-Toolkit).


Oh ja, Sie mussten immer noch ein Plugin erstellen (nochmals danke an die Entwickler des Clients für diese großzügige Funktionalität), als Proxy, um Nachrichten im laufenden Betrieb zu ändern (Hinzufügen eines Wrappers, um eine Injektion zu initiieren, die Codierung dafür zu unterbrechen und unvollständige Surrogate an der richtigen Stelle einzufügen, und t usw.), codieren Sie den anfänglichen Lader der Injektionsnachricht usw.
Außerdem musste ich ein kleines Python-Skript als neues Client-Plugin für das Zielsystem als Konsolenemulator erstellen (meine Nachrichten in seinem Standard empfangen und stdout + stderr in einer privaten Nachricht an meinen Spitznamen zurücksenden).


Nachdem er all dies auf seinem Knie gesammelt hatte, startete er diesen IRC-Client, um sich als Opfer zu versuchen, d. H. sehen, wie es in voller, fertiger Form sein wird.


Und als ich mein Plug-In von einer anderen Sitzung aus der zweiten gestarteten Version der Anwendung, mehrere private Nachrichten-Injektionen, verschickte, war ich erfreut, die übliche Python-Begrüßung >>> (die ich der Klarheit halber im Emulator steckte - die Python).


Als Elefant zufrieden (er bemerkte, dass die angegriffene Anwendung nicht gefallen war), sah er, was in seinem Nachrichtenausgabefenster geschah - es war voller verschiedener Nicht-ASCII-Zeichen, von denen das auffälligste war Mit der Seriennummer 90h (was zumindest nicht üblich ist, gibt es sogar einen Hacking-Versuch) dachte ich, ich müsste den Bootloader noch wiederholen, um die folgenden Meldungen zu maskieren (plötzlich funktioniert es immer noch und bemerkt).


Er schaute in den Code und dort warteten sie auf die NTS-Leitung am Ausgang. Er beschloss, sich nicht viel Mühe zu machen und schrieb das erste Byte der Nachricht nach dem Laden von Null dumm neu (mit der Hoffnung, dass die Nachricht etwas später auf dem Bildschirm angezeigt wird).


Das Wiederholen des gesamten Vorgangs und das Warten auf das gewünschte >>> schaute erneut auf ein anderes Fenster und stellte fest, dass im Chat nichts überflüssig war (Ich bin immer noch ein Genie) beschlossen, den Test fortzusetzen.
Die Nachricht from glob import glob as ls; ls('*') from glob import glob as ls; ls('*') und ich sahen die Antwort freudig als eine Liste von Ordnern und Dateien, die im Anwendungsordner enthalten sind.


Es stimmt, ich habe im Fenster des angreifenden Clients dieselbe Nachricht gesehen, die an meinen Spitznamen gesendet wurde. Ich musste auch 0-Byte (NTS) am Anfang der Zeile setzen, nachdem ich es an mich gesendet hatte.


Nachdem er damit die Vorbereitungsphase beendet hatte, bemerkte er, dass unser experimenteller Freund immer noch plauderte (ohne Nachrichten, Vasya!). Er hatte bereits einen Exploit für unseren Kandidaten vorbereitet.


Lass uns gehen ...


Die Injektionsnachrichten waren weg ... Und nach ein paar langen Sekunden (anscheinend hat die Festplatte geschlafen oder der Proxy war dumm) sah ich wieder die Einladung >>> .
Während ich durch den Raum hüpfte, werde ich es immer noch nicht sagen (dieses Spektakel ist nichts für schwache Nerven, da ich infolge eines unkontrollierten Prozesses der Manifestation von Freude immer noch meine kleinen Füße auf ein Stuhlbein schob).


Ich zuckte vor Schmerz zusammen und dachte sofort: „Was ist, wenn etwas in seinem Rückstoßfenster nicht sichtbar ist? Plötzlich habe ich es irgendwo vermasselt und die Anwendung stürzt infolgedessen ab.“ Erinnerte sich an einen möglichen erzwungenen Neustart nach dem Update (wenn auch plötzlich) Der Computer wachte davon auf und rollte bereits das Update. In kaltem Schweiß (ich schaute auf den schwellenden kleinen Finger und entfernte zitternde Hände) beschleunigte ich.


Der erste Schritt ist zu überprüfen, ob wir überhaupt da sind.


 >>> import os; os.environ['userdomain'] 

und die Antwort lautet:


 'OUR-COMPANY' >>> 

Nun, alles, Hände sind losgebunden ... Lass uns gehen.


Nachdem ich mit einem kleinen Skript überprüft hatte, ob die Anmeldung gesperrt ist, nachdem ich mich etwas beruhigt hatte, entschied ich mich zu sehen, was auf dem Computer im Allgemeinen verfügbar ist:


 >>> from glob import glob as ls; ls(r'C:\Program Files\*') 

und in der Antwort, ohne sein Glück zu glauben, sah ich unter vielen interessanten Dingen Folgendes:


 [...,'C:\\Program Files\\TeamViewer',...] >>> 

Das heißt, Es sind keine zusätzlichen Gesten erforderlich. Sie müssen nichts herunterladen, kompilieren und nach einem Ordner suchen, in den Sie alles schreiben können, ohne gegen Richtlinien zu verstoßen.


Und dann flog mittlerweile:


 >>> import subprocess; subprocess.call([r'C:\Program Files\TeamViewer\TeamViewer.exe']) 

Nun, nach der Antwort:


 0 >>> 

Nachdem ich darauf gewartet hatte, dass TeamViewer den Proxy durchlief und der Server ihm eine ID (mit Passwort) gab, führte ich dort ein Skript aus, suchte nach dem TeamViewer-Fenster, machte einen Screenshot davon und schickte es mir in Form einer Base64-Zeile zurück, in der ich es wieder auf erweiterte Bitmap, ich war erfreut, sowohl die ID als auch das Passwort für die Verbindung zu finden.


...


Am nächsten Morgen wurde ich von einem überraschten CSO angerufen, der zuerst einen Brief von mir erhielt (aber irgendwie vom internen Exchange-Konto seines Mitarbeiters kam) und dann einen verängstigten Anruf desselben Mitarbeiters mit den Worten "Chef, wir haben ihn verloren - sie haben uns kaputt gemacht", der am Morgen ein offenes Fenster fand Wort mit einem großen Text in "Zwei für Ihre Sicherheit. Sie wurden gehackt!", Datum, Unterschrift.


Danach war die Kommunikation mit den Sicherheitsleuten bereits fruchtbarer, ohne Speichelspray, zerreißende Hemden und Schreie. Aufgrund bitterer Erfahrungen ( zum Beispiel wie in diesem Artikel beschrieben ) habe ich versucht, den Einbruch später so weit wie möglich zu verschieben (weil ich zunächst eine Zahlungsanweisung für ein neues „Sicherheitskonzept“ erhalten wollte), aber nach viel Überzeugungsarbeit, Hinweisen auf eine langfristige Zusammenarbeit usw. n., sowie Versprechen von ihrer Seite, den beschuldigenden Angestellten (schließlich Kollegen) nicht zu berühren, mussten sie fast alle Hauptpunkte darlegen.


Ich habe dann die ausgehandelte Prämie für das Hacken (sowie die Kosten für das vorläufige Audit) vollständig erhalten, aber dann hat sich das Büro verhalten ... sagen wir, nicht ganz sportlich. Um das Konzert fortzusetzen, stellten sie eine bekannte und bekannte Wirtschaftsprüfungsgesellschaft ein, die sich grundsätzlich weigerte, in meinem Namen mit externen Mitarbeitern zusammenzuarbeiten.


Na dann, wie man in Deutschland sagt, "Man sieht sich immer wieder im Leben", was "Wiedersehen" bedeutet.

Source: https://habr.com/ru/post/de416767/


All Articles