Wir kriechen ohne Eingabe-Tools in den Computer, suchen nach dem Joker und stellen unter Android eine Verbindung zum Server her - in den Aufgaben von NeoQUEST-2014!


    Die NeoQUEST-2015-Qualifikationsrunde startet in Kürze und zur Vorbereitung schlagen wir vor, die Aufgaben der NeoQUEST-2014-Vollzeit-Tour mitzunehmen! Wir haben bereits erzählt, wie NeoQUEST-2014 gelaufen ist, haben die Berichte und Fotos geteilt (vielleicht hat sich sogar jemand auf ihnen wiedergefunden!). Lassen Sie uns nun über das Geheimnisvolle sprechen, das vor den Augen des Publikums verborgen ist, aber den wichtigsten Teil von NeoQUEST - den Wettbewerb der Cybersicherheitsexperten, der sich nach den Ergebnissen der Online-Tour im Februar als der Beste herausstellte.

    Die Konfrontation für die Teilnehmer umfasste 5 Aufgaben, von denen eine fehlschlug. In diesem Artikel analysieren wir vier bestandene:

    • „Bin ich ein Joker?“ - Wir beschäftigen uns mit Wettbewerbsinformationen und verwenden alle Benutzerinformationen, die wir von sozialen Netzwerken erhalten haben, um eine Website eines Drittanbieters aufzurufen und deren Schwachstelle auszunutzen.
    • "Unerwarteter Fund" - gibt es einen Computer und ein Flash-Laufwerk, aber keine Maus oder Tastatur? Dies spielt keine Rolle, da das Flash-Laufwerk nicht einfach ist, sondern mit SecureDrive und der Computer einen seiner Abschnitte als CD identifizieren kann.
    • "Glaub deinen Augen nicht" - wie finde ich ein Schadprogramm auf einem Computer, der seine Netzwerkaktivität verbirgt, und gleichzeitig Dateien auf einer Festplatte?
    • "Frames entscheiden über alles" - wir verbinden uns mit einem Webserver, der auf einem Telefon mit Android-Betriebssystem unerwartet hochgefahren ist, und bilden ein spezielles Glas, um den Schlüssel zu erhalten.


    Bevor wir mit der Analyse der Aufgaben beginnen, sagen wir die wichtigsten - die trotzdem den NeoQUEST-2014 gewonnen haben:
    Ich platziere - AV1ct0r
    II-Platz - Dor1s
    III-Platz - Abr1k0s


    AV1ct0r erhielt den Hauptpreis - eine Reise zur internationalen Konferenz für Informationssicherheit und die Jungs untereinander einen LEGO Roboter und einen 3D-Stift mit einem Satz aus farbigem Kunststoff geteilt.
    Übrigens haben viele Gäste der Veranstaltung auch kleine, aber angenehme Geschenke in Wettbewerben mitgebracht (mehr dazu im Artikel über den Verlauf der NeoQUEST-2014-Vollzeit-Tour).

    Bin ich Joker? - Aufgabe Nr. 1


    Der Einstiegspunkt für die Aufgabe wurde im Titel selbst ausgeblendet. Der weitere Verlauf des Auftrags gliederte sich in folgende Phasen:

    1. Eine Suche nach dem Begriff amijoker auf google.com lieferte interessante Informationen für die Teilnehmer:
      • gleichnamiger Account auf dem Gelände der Tourismusgemeinde "Turbina"
      • Link zum Benutzerprofil im sozialen Netzwerk Facebook
    2. Für das Abrufen nützlicher Informationen von einem Konto auf der Turbina-Website war keine Registrierung durch die Teilnehmer erforderlich. Folgendes konnten die Teilnehmer feststellen, wenn sie das AmIJoker-Benutzerprofil sorgfältig durchgesehen hatten:
      • John Smith Twitter Blog Link
      • Twitter Follow-up-Anruf
      • Information, dass der Benutzer als Programmierer arbeitet
    3. Wenn Sie den Twitter-Blog des Benutzers aufrufen und ihn sofort abonnieren, hat sich John Smith für den Account des Mitglieds registriert und ihm eine persönliche Nachricht mit folgendem Text gesendet: "Ihr Twitter-Name in PNG an meine Pinnwand". In diesem Teil der Aufgabe mussten die Teilnehmer raten, dass der Name in png mithilfe der Steganographie verborgen werden sollte. Aber nicht jeder Algorithmus wird ausreichen. Von den Ideen, nach dem gewünschten Algorithmus zu suchen, war die Idee, in Ihrem Facebook-Konto zu suchen, die logischste.
    4. In der Tat wird ein Link zu einem Projekt, das auf github.com gepostet wurde, auf der Kontowand und ein weiterer Link zu github.com in persönlichen Informationen veröffentlicht
    5. Wir gehen auf github.com unter dem ersten Link und schauen uns das Projekt an. Das Programm ist in PHP geschrieben und arbeitet mit der Twitter-API. Mit dieser Option können Sie ein Foto hochladen, es sind jedoch nicht genügend Schlüssel für die API und OAuth vorhanden. Hier bietet sich der zweite Link zu github.com an, den wir anklicken.
    6. Dieses Repository enthält ein in C geschriebenes Projekt. Es implementiert einen der einfachsten Steganographiealgorithmen. Aber wie bringt man die Schlüssel dazu, mit der Twitter-API zu arbeiten?
    7. Hier wurde die Aufmerksamkeit der Teilnehmer überprüft! In der Legende war es nicht umsonst, dass der Aerosmith-Song „Girls Of Summer“ erwähnt wurde. Nach kurzer Suche fanden viele die Seite der Sommermädchen. Die Adresse dieser Website finden Sie auch in den allgemeinen Informationen des Kontos auf Facebook. Die Website sieht im Sommer frisch und angenehm für das Auge aus!
    8. Die Site verfügt über keine spezielle Funktionalität. Ein erfahrenes Auge kann jedoch feststellen, dass der Wechsel zwischen Fotos durch die Übertragung von GET-Parametern erfolgt. Einer der beiden Parameter ist anfällig für SQL-Injection. Mit dieser einfachen Injektion könnten die Teilnehmer die Schlüssel erhalten, die für die Arbeit mit der Twitter-API erforderlich sind:
      • id 1
      • apiKey 603445921-b8c9k8OMhalLS8FakTpDHoUuXIzKuHLabOPWspsR
      • apiSecret O0DWIqmlNT02RKUZcXHIvkyMWG7Hwd9vKzAjd7JJ89Kbg
      • consumerKey vlC5S1NCMHHg8mD1ghPRkA
      • consumerSecret 3w4cIrHyI3IYUZW5O2ppcFXmsACDaENzFdLIKmEU84


    Nachdem Sie alle erforderlichen Tools erhalten hatten, mussten Sie nur die Schlüssel im fertigen Programm austauschen und das Bild auf Twitter hochladen.
    Wenn der Name des Teilnehmers korrekt in die PNG-Datei geschrieben wurde, erhielt er als Antwort auf das Bild eine persönliche Nachricht mit dem Auftragsschlüssel.

    Im Allgemeinen sah das Aufgabenschema ungefähr so ​​aus:



    Ein unerwarteter Fund - Quest Nummer 2


    Den Teilnehmern wurden lediglich ein Computer ohne Eingabemittel und ein Transcend-Flash-Laufwerk mit der SecureDrive-Funktion zur Verfügung gestellt. Auf dem Computer funktionierten nur der Monitor und der USB-Anschluss, und die Tastatur mit der Maus funktionierte nicht. Das BIOS war übrigens passwortgeschützt, so dass die Teilnehmer mit dem auskommen mussten, was sie hatten. Bei der Aufgabe mussten die Teilnehmer Sicherungskopien der gesendeten E-Mails von diesem Computer kopieren und einen Brief mit einem geheimen Schlüssel finden.

    In dieser Situation ist es offensichtlich, dass die Interaktion mit einem Computer nur mit Hilfe von Autorun-Programmen von einem Flash-Laufwerk möglich ist. Eine einfache Überprüfung zeigt, dass die automatische Ausführung von Wechseldatenträgern deaktiviert ist. Hier müssen Sie bedenken, dass nicht nur von ihnen, sondern auch von CDs ein Autorun möglich ist, und achten Sie auf das ausgegebene Flash-Laufwerk, nämlich SecureDrive. Es gibt einen Abschnitt auf dem Flash-Laufwerk, der vom Computer als CD definiert wird, und auf dem anderen Abschnitt gab es nur ein spezielles Programm, mit dessen Hilfe der geschützte Abschnitt des Flash-Laufwerks funktionierte! Dies hätte zur Idee führen sollen, den Abschnitt für eigene Zwecke zu nutzen!

    Solche Flash-Laufwerke sind weit verbreitet und werden häufig als bootfähige Laufwerke verwendet. Daher finden Sie leicht Informationen dazu, wie Sie den Inhalt einer virtuellen CD-ROM durch Ihren eigenen ersetzen können. Hierzu wird ein Hilfsprogramm des Herstellers JetFlash Online Recovery verwendet, um die Partition bei Problemen mit dem Gerät mit SecureDrive wiederherzustellen. Eine Studie des Dienstprogramms zeigt, dass die Partition auf der Grundlage eines ISO-Images erstellt wird, das getrennt von der ausführbaren Datei gespeichert wird. In diesem Fall finden keine Überprüfungen statt, wodurch die erforderliche Änderung des Flash-Laufwerks erreicht wird, indem dieses Image durch ein speziell vorbereitetes ersetzt wird.

    Nachdem Sie in der Lage sind, beliebige Befehle auf dem Zielcomputer auszuführen, können Sie nach Sicherungen suchen. Das Vorhandensein der IIS-Verknüpfung auf dem Desktop fordert den Benutzer auf, das Stammverzeichnis des Laufwerks C: \ auf das Vorhandensein des entsprechenden Ordners zu überprüfen:

    dir C:\
    


    Dort befindet sich auch der Sicherungsordner. Da die Suche nach dem gewünschten Buchstaben ohne die Möglichkeit, die Tastatur zu verwenden, sehr lange dauern kann, besteht der nächste Schritt darin, diesen Ordner in den zweiten Abschnitt des Flash-Laufwerks zu kopieren. Vorher müssen Sie den zugewiesenen Laufwerksbuchstaben bestimmen, um den Kopierbefehl vorzubereiten:

    xcopy C:\backup F:\backup /I /Q /Y
    


    Das Kopieren dauert aufgrund der Anzahl der Dateien mit Buchstaben sehr lange. Aus dem gleichen Grund kann der gewünschte Buchstabe nicht manuell gefunden werden. Die Questlegende gibt jedoch einen Hinweis: Der geheime Schlüssel wurde am 12. Juni verschickt! Es bleibt nur, den Suchvorgang mit einem Parameter zu automatisieren, was recht einfach ist:

    grep -l "12 Jun" * | sort -u | xargs grep -E "\<[a-f0-9]{32}\>"
    


    Unter den gefundenen Zeilen können Sie den gewünschten Schlüssel bereits manuell finden.

    Traue deinen Augen nicht - Aufgabe Nr. 3


    Um den Schlüssel zu finden, erhielten die Teilnehmer Blätter mit dem NeoQUEST-Logo, das das Wort RDP, eine IP-Adresse und ein Anmeldekennwort enthielt. Der erste logische Gedanke ist, RDP auf dem angegebenen Computer einzugeben ... und es funktioniert!



    Die Aufgabe sagt nichts darüber aus, wie man nach einem Schlüssel sucht, was bedeutet, dass man ahnungslos handeln muss. Der Desktop des Computers war leer, mit Ausnahme von drei Verknüpfungen mit Browsern, die sich aus einem bestimmten Grund eindeutig dort befanden. Wenn ich versuche, Google Chrome zu starten, passiert nichts. Es öffnet sich ein normales Browserfenster, Sie können zu jeder Site gehen und beispielsweise die Nachrichten lesen. Wenn Sie Mozilla Firefox starten, ist die Situation ähnlich. Internet Explorer - alles unverändert. Es ist logisch, einen Blick auf browserspezifische Daten zu werfen: den Verlauf des Besuchs von Webseiten, gespeicherte Kennwörter, Cookies usw. ... Aber alles erweist sich als zwecklos - der Verlauf wird gelöscht, es gibt keine Kennwörter.





    Okay, wenn der Browser "extern" wie gewohnt funktioniert und keine Ahnung hat, dann hat vielleicht die "interne" Operation, die für den Durchschnittsbenutzer unsichtbar ist, ihre eigenen Besonderheiten. Die erste erkannte Funktion sind die regelmäßigen Aufrufe des Browsers an den Remote-Server, obwohl die geöffneten Registerkarten leer sind. Solche Aktionen werden von der Standard-Betriebssystemanwendung - Resource Monitor - leicht erkannt.



    Durch die Installation des Wireshark-Sniffers und die Analyse des ausgehenden Datenverkehrs konnten die Teilnehmer den Datenstrom zum 10.0.25.120 WEB-Server in der Datei stub.php erkennen. Es könnte interessant sein! Aber nein, egal wie oft Sie diese IP-Adresse scannen, egal wie oft Sie in diesen Server eindringen - es gibt kein Ergebnis. Und mit Blick auf die Zukunft: Der Server ist komplett leer, es gibt keine wertvollen Informationen und es wird nur verwendet, um anzuzeigen, dass sich die Teilnehmer in die richtige Richtung bewegen.

    Das nächste Merkmal ist nach einer eingehenderen Analyse der Funktionsweise der Browserprozesse, nämlich der von ihnen verwendeten Ressourcen. Zu diesem Zweck können Sie sowohl Standardtools (Ressourcenmonitor) als auch Tools von Drittanbietern verwenden (dies ist jedoch immer noch eine Frage, wie Sie als Drittanbieter Mittel von Herrn Russinovich abrufen können). Prozess-Explorer und Prozess-Monitor.

    Mit Process Explorer können Sie die hierarchische Anzeige von Prozessen, deren Eigenschaften, Sicherheitseinstellungen, den vorhandenen Ressourcen usw. anzeigen. In einem Cursory-Scan zeigen die interessierenden Prozesse jedoch nichts Interessantes.



    Aber nach dem Einsatz von Process Monitor liegt die Antwort auf die Aufgabe praktisch in den Händen.



    Der Prozessmonitor zeigt an, dass regelmäßig eine Anforderung an die Datei key.txt gesendet wird, die sich auf dem Desktop befindet. Seltsam, aber eine solche Datei gibt es nicht. Wie zu sein Und hier lohnt es sich, sich an den alten Trick zu erinnern - die Datei ist möglicherweise versteckt, aber wenn Sie den Speicherort kennen, können Sie sie öffnen. Und ein brillantes Programm ermöglicht es Ihnen, dies zu tun (ausatmen!): Notepad.exe



    Das ist alles. Im sich öffnenden Editor-Fenster ist ein Schlüssel für den Teilnehmer erforderlich. Sieg!



    Jetzt ist alles klar geworden. Auf dem Computer befindet sich Malware, die den Code in alle Browser einbettet und mit deren Hilfe die Netzwerkkommunikation mit der Website ausgeblendet wird. Darüber hinaus versteckt es auch seine Dateien auf der Festplatte, insbesondere die Datei mit dem Schlüssel für die Aufgabe.

    Kader entscheiden alles - Aufgabe №4


    In der Legende wurde den Teilnehmern mitgeteilt, dass die Geschäftskontakte einer Person nachverfolgt werden müssten: „Sicherlich sind im Telefonbuch viele nützliche Nummern gespeichert“ (Auszug aus der Legende) und eine IP-Adresse angegeben, über die Sie auf dieses Buch zugreifen können.

    Beim Wechsel zu dieser IP über einen Browser wurde der Benutzer aufgefordert, ein Bild hochzuladen. Wenn der Benutzer die JPG-Datei hochgeladen hat, wurde ihm ein Link zum bearbeiteten Bild gegeben.

    Auf den ersten Blick handelt es sich hierbei um eine Web-Sicherheitsaufgabe, aber keinesfalls. Wenn Sie eine Website auswählen, sehen Sie einige interessante Dinge!

    Erstens können Sie unter Ausnutzung der Sicherheitsanfälligkeit bezüglich der Offenlegung des Quellcodes die Datei upload.php herunterladen, indem Sie einfach etwas wie 192.168.0.222 in die Adressleiste Ihres Browsers schreiben: 8080 / upload.php oder auf andere Weise, indem Sie die Groß- / Kleinschreibung in der Dateierweiterung ändern. Der Quellcode für upload.php ist:

    Make your retro pattern
    
    
     1024*1024)
    {
        echo ("Sorry bro ... your file is more then 1Mb...");
        exit();
    }
    $valid_types = array("jpg", "jar");
    $ext = substr($_FILES['filename']['name'], 1 + strrpos($_FILES['filename']['name'], "."));
    if (!in_array($ext, $valid_types))
    {
        echo 'invalid file type';
        exit();
    }
    if(copy($_FILES["filename"]["tmp_name"],
        "/sdcard/pws/www/".$my_name."_".md5($_FILES["filename"]["name"].date_timestamp_get($date)).$_FILES["filename"]["name"]))
    {
        echo("success");
    }
    else
    {
        echo("error");
    }
    sleep(5);
    echo("
    Your file is here"); $url="/res/".$my_name."_".md5($_FILES["filename"]["name"].date_timestamp_get($date)).$_FILES["filename"]["name"]; echo("

    Your new file

    "); ?>


    Was ist hier interessant? Zunächst sehen wir, dass Sie nicht nur jpg herunterladen können, das für uns nicht interessant ist, sondern auch ein sehr interessantes jar, anscheinend kann dieser Server mit Java arbeiten. Als nächstes sehen wir den Pfad "/ sdcard / pws / www /", das Wort sdcard ist der Tatsache sehr ähnlich, dass der Server am Telefon ist (obwohl es immer noch schwierig ist, daran zu glauben!). Und wenn Sie nur diese Zeile bei Google suchen, ähnelt dies der Tatsache, dass es sich um Palapa Web Server handelt, der auf Android entwickelt wurde.
    Darüber hinaus konnten die Teilnehmer eine sehr interessante Informationsdatei finden, indem sie die Site einfach mit einem Scanner, beispielsweise ArxScanSite, scannten, der die Dateistruktur der Site festlegt. Diese Datei ist ein Bild unten.



    Und danach sollten keine Zweifel mehr bestehen, dass dies ein Telefon ist. Es bleibt Java + phone = Android zu verbinden und es stellt sich heraus, dass wir einen Webserver auf einem Android-Telefon haben, obwohl Sie dies erneut überprüfen können, indem Sie es mit Nmap scannen.
    Итак, что имеем: перед нами web-сервер на Android, мы знаем путь к корню сервера «/sdcard/pws/www/», нам можно загружать jar-файлы. И тут самое главное вспомнить о том, что в задании нам сказано «Наверняка в телефонной книге хранится немало полезных номеров», а значит согласно скачанной картинке нам нужно создать jar, который запишет все телефонные номера, хранящиеся телефоне на Android в файл на карту памяти по следующему пути: «/sdcard/pws/www/». Взглянув на картинку становится понятно, что нужно создать пакет com.example.QUEST2014.contactBackup в котором создать метод start, который принимает на вход Context и ContentResolver и осуществляет запись телефонных номеров в файл.

    Далее необходимо сделать этот jar применимым для Android, тут есть несколько путей. Первый путь выполняется в 4 этапа:
    1. Exportieren Sie nur unsere Klasse in eine JAR-Datei. Anschließend erhalten Sie eine reguläre JAR-Datei als Zip-Archiv mit einer Klassendatei.
    2. Das Erstellen einer Dex-Datei aus unserer JAR-Datei mit dem Dienstprogramm jar2dex führt zu einer classes.dex-Datei.
    3. Archivieren der classes.dex-Datei in einem Zip-Archiv.
    4. Umbenennen des resultierenden Zip-Archivs in eine JAR-Datei.


    Eine andere Methode umfasst 5 Schritte.
    1. Zusammenstellung unserer Bewerbung.
    2. Suchen Sie in dem Verzeichnis, in dem sich das Android SDK befindet, das Verzeichnis, in dem sich das Dienstprogramm dx.bat befindet (z. B. "android-sdk \ platform \ android-3 \ tools").
    3. Erstellen eines Verzeichnisses mit einem beliebigen Namen in diesem Verzeichnis, z. B. "1". Erstellen Sie im Verzeichnis "1" eine Dateistruktur, die der Struktur unserer Anwendung ähnelt, d. H. Msgstr "1 \ com \ example \ QUEST2014 \ contactBackup".
    4. Kopieren Sie den Inhalt des Verzeichnisses "\ out \ production \ APPLICATION_NAME \ com \ example \ QUEST2014 \ contactBackup" in dieses Verzeichnis.
    5. Rufen Sie dx.bat mit den folgenden Parametern auf - "dx --dex --no-strict --output = ctf.jar 1 /". Als Ergebnis haben wir die gewünschte Datei erhalten - ctf.jar.


    Es scheint, dass alles ein Sieg war, aber da war es! Beim Versuch, diese JAR-Datei herunterzuladen, wird auf der Website die Fehlermeldung angezeigt, dass convert.jar eine solche Datei nicht kennt. Alles gestaltet sich sehr einfach, wenn man sich index.html ansieht (der Quellcode ist unten angegeben). Möglicherweise stellen Sie fest, dass ein verstecktes Tag mit dem Namen action an upload.php übergeben wird und den Wert convert.jar hat.

    Make your retro pattern

    Upload your image



    Теперь необходимо изменить значение на имя загружаемого jar-файла и все, вуаля! Мы получаем список контактов.

    ID 190 NAME Max Smith PHONE +44234234234
    ID 134 NAME Max Smith PHONE +4467652341
    ID 137 NAME Alex Smith PHONE +4487653827
    ID 193 NAME NeoQuestKey PHONE +78123123481
    ID 4 NAME Andrey Petrov PHONE +79219325680
    ID 11 NAME Макс Сушинский PHONE +79843214982
    ID 13 NAME Аркадий Мамонтов PHONE 000001
    ID 1 NAME Test Test PHONE 1234567
    ID 7 NAME Petr Ivanov PHONE 2359631
    ID 119 NAME Иван Жуков PHONE 89215897894

    Понятно, что нужно взять телефон NeoQuestKey и посчитать от него hash. Ну вот и все, флаг добыт, задание пройдено!

    Продолжение следует...

    Während die Zuschauer Berichte über Cybersicherheit hörten und Geschenke durch die Teilnahme an lustigen Wettbewerben erhielten, wurden unsere heldenhaften Wettbewerber sehr dynamisch mit Aufgaben fertig. Nochmals herzlichen Glückwunsch an die Gewinner und daran erinnern, dass sich die Online-Bühne von NeoQUEST-2015 bereits nähert - mit noch interessanteren Aufgaben, die durch eine mysteriöse (wie in der Tat immer) Legende verbunden sind! Auf unserer
    Website und in unserem Blog Habrahabr finden Sie stets aktuelle Informationen.


    Jetzt auch beliebt: