Update of exercises

master
Thomas Smits 2024-10-02 15:10:42 +02:00
parent 4df498d68c
commit 7f4e0dbfc9
10 changed files with 131 additions and 4 deletions

Binary file not shown.

View File

@ -1,6 +1,6 @@
# Assignment: Java-Klasse analysieren und patchen
<!-- Points: 5 -->
[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/).

View File

@ -0,0 +1,6 @@
public class KeyCheck {
public boolean checkKey(String key) {
return true;
}
}

View File

@ -0,0 +1 @@
FLAG{coffee babe}

View File

@ -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}
```

Binary file not shown.

View File

@ -0,0 +1,40 @@
# Assignment: Importe mit rabin2 untersuchen (payload_1)
<!-- Points: 5 -->
**🎓 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)<!-- binary -->
## 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.

Binary file not shown.

View File

@ -0,0 +1,43 @@
# Assignment: Exports und Imports mit rabin2 untersuchen (payload_2.so)
<!-- Points: 5 -->
**🎓 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.

View File

@ -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