
Big Iron Recon & Pwnage
von @singe (Dominic White @ SensePost)
BIRP ist ein Werkzeug, das bei der Sicherheitsbewertung von Mainframe-Anwendungen hilft, die über TN3270 bereitgestellt werden. Ähnlich wie BURP und andere Webanwendungs-Proxys für Webanwendungs-Assessments, zielt BIRP darauf ab, dasselbe für TN3270-Anwendungs-Assessments zu tun. Und ähnlich wie bei Webanwendungen ermöglicht das Sehen und Ändern von Feldern, von denen der Anwendungsentwickler annahm, dass sie weder sichtbar noch modifizierbar seien, das Umgehen von Sicherheitsannahmen.
Insbesondere bietet BIRP zwei Fähigkeiten für den angehenden TN3270-Hacker. Die erste ist, dass es alle vom Anwendungsbildschirm zurückgegebenen Daten anzeigt. Dies schließt versteckte Felder ein. Die zweite ist, dass es Felder, die als "geschützt" oder "nicht modifizierbar" markiert sind, zu ändern erlaubt. Abhängig davon, wie die Anwendung entwickelt wurde, kann dies die Änderung der Anwendungsfunktionalität ermöglichen.
./birp.py -h zeigt Ihnen Start Hilfe, wenn Sie loslegen möchten.
Alles was Sie brauchen, ist ein Ziel mit -t anzugeben. Die Zielangabe kann einen Port mit einem : nach der IP enthalten, z.B. 10.10.10.10:1023. Wenn kein Port angegeben wird, wird standardmäßig :23 verwendet, entsprechend dem Standardverhalten von x3270.
Sie können -l verwenden, um eine zuvor gespeicherte Historie zu laden. Sie müssen immer ein Ziel angeben und können noch nicht nur die Historie anzeigen.
Überprüfen Sie die Voraussetzungen unten für die Installation. Leider läuft dies momentan nur in Unix-Umgebungen, kein Windows-Support.
Derzeit hat BIRP eine ziemlich begrenzte Funktionalität. Diese sind:
Der interaktive Modus ist das Herzstück der BIRP-Funktionalität. Er übergibt Tastendrücke und andere Befehle von BIRP an x3270 und erlaubt dem Analysten, mit der Anwendung zu interagieren, als würde er x3270 direkt verwenden. Allerdings zeigt er auch die markierte 'Hackeransicht' jedes zurückgegebenen Bildschirms an, zeichnet 'Transaktionen' auf und speichert sie in der Proxy-Historie für spätere Analyse und Inspektion.
Im interaktiven Modus zeigt Ctrl-h einen Hilfebildschirm, Ctrl-k eine Farbtaste und ESC kehrt zum Menü zurück.
BIRP versucht zu erkennen, wann eine 'Transaktion' stattgefunden hat, und zeichnet den Bildschirm vorher und nachher sowie die geänderten Felder auf. Bestimmte Tasten lösen normalerweise eine Transaktion aus, wie Enter oder die PF/PA-Tasten. Falls der Bildschirm aus irgendeinem Grund andere Tasten benötigt, können Sie mit Ctrl-u direkt nach der Aktion manuell eine Transaktion 'pushen'. Wenn Sie den Bildschirm erneut anzeigen lassen möchten, drücken Sie Ctrl-r.
Dies zeigt die Historie aller von BIRP aufgezeichneten Transaktionen an und erlaubt deren Inspektion. Insbesondere bietet es Zugriff auf den gesendeten Bildschirm, die in diesem Bildschirm geänderten Felder (d.h. die gesendeten Daten) und die Antwort.
Für jeden Bildschirm wird nur die erste Zeile als Kontext angezeigt, aber der vollständige Bildschirm kann beim Anzeigen der Transaktion ausgegeben werden. Außerdem können Sie in Python einsteigen und das Bildschirmobjekt direkt untersuchen.
Hier können Sie eine case-sensitive Suche durchführen, um Transaktionen mit Bildschirmen zu finden, die bestimmten Text enthalten.
Sie können Ihre Historie in eine Datei speichern und später mit dem Schalter -l in der Befehlszeile wieder laden. Sie müssen sie unter einem eindeutigen Dateinamen speichern.
Das Tool ist noch nicht fertig und es gibt viele gute Gründe, direkt mit den Objekten zu spielen. Sie können an verschiedenen Stellen in eine eingebettete IPython-Shell einsteigen. BIRP hat einen recht nützlichen Satz von Python-Objekten, die Sie abfragen können, und ich habe sichergestellt, dass sie nützliche Python-Ausgaben haben (str/repr). Das oberste Objekt ist die 'history', die eine Liste von 'transactions' enthält. Sie können die zuletzt hinzugefügte Transaktion mit history.last() abfragen. Jede Transaktion hat ein request- und ein response-Bildschirmobjekt. Um beispielsweise eine Liste aller versteckten Felder in der letzten Antwort des Servers zu erhalten, könnten Sie: history.last().response.hidden_fields
Für weitere Details wäre es am besten, das Modul tn3270.py anzusehen.
Python-Bibliotheken: py3270 (v0.3.4), colorama, IPython Diese können mit pip oder easy_install installiert werden. Bis py3270 diesen Pull-Request akzeptiert (https://github.com/py3270/py3270/pull/13) verwenden Sie meine py3270-Bibliothek (https://github.com/singe/py3270).
Gepatcher x3270-Client (v3.6) Die Patches sind beigefügt. Sie können den Quellcode unter http://x3270.bgp.nu/download.html herunterladen, dann in das Verzeichnis suite3270 wechseln (nach dem Entpacken) und patch -p1 < suite3270-full.patch anwenden. Sie können einen unveränderten Client verwenden, aber dann können Sie geschützte Felder nicht bearbeiten. Der Patch nimmt zwei Änderungen vor: die erste erlaubt das Bearbeiten geschützter Felder, die andere macht versteckte Felder sichtbar (hervorgehoben mit inverser Textdarstellung). Diese Funktionalität ist in zwei separate Patches aufgeteilt, falls Sie aus irgendeinem Grund nur das eine oder andere wünschen.
Die Tastenverarbeitungsfunktionalität, die ich verwende, ist meine eigene benutzerdefinierte getch-Implementierung. Sie ist ziemlich schrecklich, funktioniert aber. Ich würde gerne eine ausgereiftere Tastenverarbeitung wie curses, pygame, urwid verwenden, aber alle wollen Ihren Bildschirm übernehmen. Persönlich finde ich den Rückspulpuffer unverzichtbar, um meine Aktivitäten aufzuzeichnen oder hochscrollen zu können, um mich zu erinnern, was ich getan habe, daher wollte ich das nicht verlieren, daher dieser Ansatz.
Ich fand py3270 ziemlich rau und habe am Ende einige Teile umwickelt. Ich habe dies als separaten Wrapper bereitgestellt, den Sie in eigenen Programmen verwenden können.
Von dominic () sensepost.com (@singe)
Big Iron Recon & Pwnage by SensePost ist lizenziert unter einer Creative Commons Attribution-ShareAlike 4.0 International License (http://creativecommons.org/licenses/by-sa/4.0/) Die Erlaubnis über den Geltungsbereich dieser Lizenz hinaus kann unter http://sensepost.com/contact/ eingeholt werden.