From 7f4e0dbfc93303f74add77595cd3eba030b2f52f Mon Sep 17 00:00:00 2001 From: Thomas Smits Date: Wed, 2 Oct 2024 15:10:42 +0200 Subject: [PATCH] Update of exercises --- Assignment_001/flag_printer.jar | Bin 1702 -> 1702 bytes Assignment_001/readme.md | 2 +- Assignment_001/solution/KeyCheck.java | 6 ++++ Assignment_001/solution/flag | 1 + Assignment_001/solution/readme.md | 35 +++++++++++++++++++++ Assignment_002/payload_1 | Bin 0 -> 16640 bytes Assignment_002/readme.md | 40 ++++++++++++++++++++++++ Assignment_003/payload_2.so | Bin 0 -> 21520 bytes Assignment_003/readme.md | 43 ++++++++++++++++++++++++++ readme.md | 8 +++-- 10 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 Assignment_001/solution/KeyCheck.java create mode 100644 Assignment_001/solution/flag create mode 100644 Assignment_001/solution/readme.md create mode 100755 Assignment_002/payload_1 create mode 100644 Assignment_002/readme.md create mode 100755 Assignment_003/payload_2.so create mode 100644 Assignment_003/readme.md diff --git a/Assignment_001/flag_printer.jar b/Assignment_001/flag_printer.jar index ef98df7a65c384305f039671fa5aa8dd81730e31..7600f4d7736b14cc0109e2cbede76f4280d2266e 100644 GIT binary patch delta 77 zcmZ3+yNs7Nz?+#xgn@&DgCQu>X(F!`Gl=q<0HQYDoz4uRHMGJ+VBm$O=c=|`;g OU|NOE223ZjIRgL~ycKQ$ delta 77 zcmZ3+yNs7Nz?+#xgn@&DgJGGs<3wI7W)S5y0Yq)QJDnLsZ!TxiWdt!MFK4v?(~nr~ O!L$mS4VX@5a|QrY=@%9N diff --git a/Assignment_001/readme.md b/Assignment_001/readme.md index 0d049d4..b54294a 100644 --- a/Assignment_001/readme.md +++ b/Assignment_001/readme.md @@ -1,6 +1,6 @@ # Assignment: Java-Klasse analysieren und patchen - + [Musterlösung](solution/) In diesem Assignment werden Sie Java-Klassen analysieren und so verändern, dass ein Flag ausgegeben wird. Hierzu verwenden wir den [Java Decompiler (JD)](http://java-decompiler.github.io/). diff --git a/Assignment_001/solution/KeyCheck.java b/Assignment_001/solution/KeyCheck.java new file mode 100644 index 0000000..a2dfa8b --- /dev/null +++ b/Assignment_001/solution/KeyCheck.java @@ -0,0 +1,6 @@ +public class KeyCheck { + + public boolean checkKey(String key) { + return true; + } +} diff --git a/Assignment_001/solution/flag b/Assignment_001/solution/flag new file mode 100644 index 0000000..4b515d6 --- /dev/null +++ b/Assignment_001/solution/flag @@ -0,0 +1 @@ +FLAG{coffee babe} diff --git a/Assignment_001/solution/readme.md b/Assignment_001/solution/readme.md new file mode 100644 index 0000000..5a544ab --- /dev/null +++ b/Assignment_001/solution/readme.md @@ -0,0 +1,35 @@ +# Lösung: Java-Klasse analysieren und patchen + +Die entscheidende Klasse ist `KeyCheck`. Diese hat folgenden Inhalt: + +```java +public class KeyCheck { + + public boolean checkKey(String key) { + return (key == "Its so magic" && false); + } +} +``` + +Wir ersetzen sie durch eine neue Version, die bei `checkKey` immer `true` zurückgibt: + +```java +public class KeyCheck { + + public boolean checkKey(String key) { + return true; + } +} +``` + +Die neue Version wird compiliert `javac KeyCheck.java` und dann in das JAR eingefügt: + +```console +$ javac KeyCheck.java +$ cp flag_printer.jar flag_printer_patched.jar +$ jar uf flag_printer_patched.jar KeyCheck.class +$ java -jar flag_printer.jar +Enter magic key: haha + +FLAG{coffee babe} +``` diff --git a/Assignment_002/payload_1 b/Assignment_002/payload_1 new file mode 100755 index 0000000000000000000000000000000000000000..2aa48c151d01c0f5900493430893489bb88cfd4d GIT binary patch literal 16640 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 +**🎓 Benotetes Assignment 🎓** + +📆 **Fällig: 08.10.2024** 📆 + + +In diesem Assignment geht es darum, durch die statisch Analyse einer Datei Aussagen über deren Funktionalität und die Intentionen des Programmierers zu machen. Hierzu werden wir das `rabin2`-Tool aus dem Radare 2 Paket verwenden. + + +## Radare 2 + +Für diese Übung werden wir das Kommandozeilen-Reverse-Engineering-Werkzeug Radare 2 einsetzen. Sie finden Tipps zur Installation und Verwendung in der [Kurzanleitung](../help/radare2.md). + +## Aufgabe + +Das Werkzeug `rabin2` kann dazu verwendet werden, die importierten Funktionen einer Binärdatei zu untersuchen. Damit sind die Funktionen gemeint, die das Programm zur Laufzeit aus der Standardbibliothek importiert und benutzt. Die Importe lassen sich mit `rabin2 -i DATEINAME` ausgeben. + +Nehmen Sie sich die folgende Datei vor und verwenden Sie `rabin2`, um sich die Importe anzeigen zu lassen. + + * [payload_1](payload_1) + + +## Hinweis + +Bei dem Executable handelt es sich um ein Programm unbekannter Funktionalität, wie man sie z.B. bei der Untersuchung von kompromittierten Rechner finden könnte. Es kann gut sein, dass es sich um eine _Malware_ handelt, welche bei der Ausführung Schaden verursacht, bis hin zur Zerstörung aller Daten auf dem Rechner. Deswegen sollten Sie die Datei __auf keinen Fall__ ohne Schutzmaßnahmen (virtuelle Maschine etc.) __ausführen__. Die hier vorgenommene Analyse kommt ohne Ausführung der Datei aus und ist insofern sicher auch ohne Schutzmaßnahmen durchführbar. + +Sie müssen in der Realität damit rechnen, dass die Malware Schwachstellen in den von Ihnen verwendeten Werkzeugen nutzt, um bei einem Reverse-Engineering Ihren Rechner anzugreifen. Da wir uns hier in einem Übungskontext befinden, ignorieren wir dieses Problem. + +Sie werden eine Reihe von Funktionen aus der C-Standard-Bibliothek sehen. Rufen Sie die Hilfeseiten zu den Funktionen auf, z.B. `man memset`, oder googeln Sie die Funktionsnamen. Versuchen Sie aus diesen Informationen abzuleiten, was das Programm möglicherweise tut. + +Hinweis: Da Malware oft versucht, die Importe über diverse Techniken zu verschleiern, bedeutet die Abwesenheit von "gefährlichen" Bibliotheksfunktionen nicht zwingend, dass ein Programm gutartig ist. Im vorliegenden Fall macht es Ihnen das Programm aber einfach und verwendet keine Techniken zur Verschleierung der Importe. + +## Abgabe + + * Schreiben Sie auf, was Sie über die Datei herausgefunden haben. + * Geben Sie eine Einschätzung ab, ob es sich möglicherweise um eine Malware handelt. + * Welche Art von Malware könnte vorliegen? Was macht sie wahrscheinlich? + +Die Abgabe erfolgt über das Repository, das Ihrem Team zugeordnet ist. \ No newline at end of file diff --git a/Assignment_003/payload_2.so b/Assignment_003/payload_2.so new file mode 100755 index 0000000000000000000000000000000000000000..a158640d8772f0c6f3c42254c5cf721e447ddbd0 GIT binary patch literal 21520 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 M3yy&%2a~A%6L*VejsO4v literal 0 HcmV?d00001 diff --git a/Assignment_003/readme.md b/Assignment_003/readme.md new file mode 100644 index 0000000..9f19147 --- /dev/null +++ b/Assignment_003/readme.md @@ -0,0 +1,43 @@ +# Assignment: Exports und Imports mit rabin2 untersuchen (payload_2.so) + +**🎓 Benotetes Assignment 🎓** + +📆 **Fällig: 08.10.2024** 📆 + + +In diesem Assignment geht es darum, durch die statisch Analyse einer Datei Aussagen über deren Funktionalität und die Intentionen des Programmierers zu machen. Hierzu werden wir das `rabin2`-Tool aus dem Radare 2 Paket verwenden. + + +## Radare 2 + +Für diese Übung werden wir das Kommandozeilen-Reverse-Engineering-Werkzeug Radare 2 einsetzen. Sie finden Tipps zur Installation und Verwendung in der [Kurzanleitung](../help/radare2.md). + +## Aufgabe + +Das Werkzeug `rabin2` kann dazu verwendet werden, die exportierten und importierten Funktionen einer Binärdatei zu untersuchen. Damit sind die Funktionen gemeint, die das Programm zur Laufzeit aus der Standardbibliothek importiert und benutzt. Die Importe lassen sich mit `rabin2 -i DATEINAME` ausgeben, die Exporte mit `rabin2 -s DATEINAME`. + +Da es sich hier um eine Shared-Library (Dateiendung unter Linux `.so`) handelt, die möglicherweise zu einer Malware gehört, sind insbesondere die Funktionen interessant, die von der Bibliothek exportiert werden. + +Nehmen Sie sich die folgende Datei vor und verwenden Sie `rabin2`, um sich die Importe und Exporte anzeigen zu lassen. + + * [payload_2.so](payload_2.so) + + +## Hinweis + +Bei dem Executable handelt es sich um ein Programm unbekannter Funktionalität, wie man sie z.B. bei der Untersuchung von kompromittierten Rechner finden könnte. Es kann gut sein, dass es sich um eine _Malware_ handelt, welche bei der Ausführung Schaden verursacht, bis hin zur Zerstörung aller Daten auf dem Rechner. Deswegen sollten Sie die Datei __auf keinen Fall__ ohne Schutzmaßnahmen (virtuelle Maschine etc.) __ausführen__. Die hier vorgenommene Analyse kommt ohne Ausführung der Datei aus und ist insofern sicher auch ohne Schutzmaßnahmen durchführbar. + +Sie müssen in der Realität damit rechnen, dass die Malware Schwachstellen in den von Ihnen verwendeten Werkzeugen nutzt, um bei einem Reverse-Engineering Ihren Rechner anzugreifen. Da wir uns hier in einem Übungskontext befinden, ignorieren wir dieses Problem. + + +Sie werden bei den Symbolen eine Reihe von Funktionen aus der C-Standard-Bibliothek sehen. Rufen Sie die Hilfeseiten zu den Funktionen auf, z.B. `man memset`, oder googeln Sie die Funktionsnamen. Versuchen Sie aus diesen Informationen abzuleiten, was das Programm möglicherweise tut. + +Hinweis: Da Malware oft versucht, die Importe über diverse Techniken zu verschleiern, bedeutet die Abwesenheit von "gefährlichen" Bibliotheksfunktionen nicht zwingend, dass ein Programm gutartig ist. Im vorliegenden Fall macht es Ihnen das Programm aber einfach und verwendet keine Techniken zur Verschleierung der Importe. + +## Abgabe + + * Schreiben Sie auf, was Sie über die Datei herausgefunden haben. + * Geben Sie eine Einschätzung ab, ob es sich möglicherweise um eine Malware handelt. + * Welche Art von Malware könnte vorliegen? Was macht sie wahrscheinlich? + +Die Abgabe erfolgt über das Repository, das Ihrem Team zugeordnet ist. \ No newline at end of file diff --git a/readme.md b/readme.md index 827a181..910e1af 100644 --- a/readme.md +++ b/readme.md @@ -13,9 +13,11 @@ Einige dieser Assignments sind _benotet_, d.h. die Qualität Ihrer Ausarbeitung Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/software.md). -| # | Ausgabe | Thema | Fällig am 📆 | -|-----|------------|------------------------------------------------------------------|----------------| -| 1. | 02.10.2024 | [Java-Klasse analysieren und patchen](Assignment_001/readme.md) | | +| # | Ausgabe | Thema | Fällig am 📆 | Musterlösung | +|-----|------------|----------------------------------------------------------------------------------------|----------------|----------------| +| 1. | 02.10.2024 | [Java-Klasse analysieren und patchen](Assignment_001/readme.md) | | [✅](Assignment_001/solution/) | +| 2. | 02.10.2024 | [Importe mit rabin2 untersuchen (payload_1)](Assignment_002/readme.md) | **08.10.2024** | | +| 3. | 02.10.2024 | [Exports und Imports mit rabin2 untersuchen (payload_2.so)](Assignment_003/readme.md) | **08.10.2024** | | ## 🎓 Benotung