From cd0ae6e8432f896a14eb605d9c05c3456e77b6cc Mon Sep 17 00:00:00 2001 From: Thomas Smits Date: Wed, 2 Oct 2024 15:11:46 +0200 Subject: [PATCH] Update of exercises --- Assignment_001/flag_printer.jar | Bin 1702 -> 1702 bytes Assignment_002/files.zip | Bin 0 -> 92667 bytes Assignment_002/readme.md | 37 ++++---- Assignment_002/solution/readme.md | 84 ++++++++++++++++++ {Assignment_002 => Assignment_003}/payload_1 | Bin Assignment_003/readme.md | 13 ++- .../payload_2.so | Bin Assignment_004/readme.md | 43 +++++++++ readme.md | 5 +- 9 files changed, 152 insertions(+), 30 deletions(-) create mode 100644 Assignment_002/files.zip create mode 100644 Assignment_002/solution/readme.md rename {Assignment_002 => Assignment_003}/payload_1 (100%) rename {Assignment_003 => Assignment_004}/payload_2.so (100%) create mode 100644 Assignment_004/readme.md diff --git a/Assignment_001/flag_printer.jar b/Assignment_001/flag_printer.jar index 7600f4d7736b14cc0109e2cbede76f4280d2266e..e34f172f917b57a5f4a341a4dfdc675308ba353a 100644 GIT binary patch delta 61 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 z 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

0*~%Tp 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 -**🎓 Benotetes Assignment 🎓** - -📆 **FĂ€llig: 08.10.2024** 📆 + [Musterlösung](solution/) -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. +In diesem Assignment werden Sie unbekannte Dateien mit dem `file`-Werkzeug untersuchen. Hierbei geht es darum, in einem allerersten Schritt einer Analyse herauszufinden, um was fĂŒr Dateien es sich handeln _könnte_. -## 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. +Das Werkzeug `file` kann dazu verwendet werden, um den Typ einer Datei zu erkennen. Hierzu analysiert `file` den Inhalt und vergleicht ihn mit einer Datenbank von bekannten Dateitypen. Die Ausgabe ist zwar nicht absolut zuverlĂ€ssig, immerhin aber ein erster Hinweis auf den Inhalt. Mit dieser Information kann man dann weitere Analysen durchfĂŒhren, die zu dem jeweiligen Dateityp passen. -Nehmen Sie sich die folgende Datei vor und verwenden Sie `rabin2`, um sich die Importe anzeigen zu lassen. +Gegeben sind die folgenden unbekannten Dateien in Form eines Archivs, die Sie in einem ersten Schritt mit `file` untersuchen werden: - * [payload_1](payload_1) + * [files.zip](files.zip) +Entpacken Sie das Archiv und wenden Sie dann auf jede Datei das `file`-Kommando an. -## Hinweis +Sie bekommen zu einer Datei Informationen, Ă€hnlich der folgenden: -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. +```console +$ file files.zip +files.zip: Zip archive data, at least v2.0 to extract, compression method=deflate +``` -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. +Schauen Sie sich die Informationen zu jeder Datei an und notieren Sie sich Ihre Erkenntnisse. -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. +Ausgehend von den gewonnenen Erkenntnissen können Sie versuchen, die Dateien mit Ihnen bekannten Werkzeugen weiter zu untersuchen, z.B. können Sie Bilddateien in einem Bildbetrachter ansehen. **Auf keinen Fall sollten Sie ohne Vorsichtsmaßnahmen Dateien ausfĂŒhren, da sie ein Risiko darstellen könnten!*** -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? + * Schreiben Sie auf, um welchen Dateityp es sich wahrscheinlich handelt. + * Nennen Sie weitere Werkzeuge, mit denen Sie die Datei untersucht haben. + * Beschreiben Sie, was Sie zum Inhalt der Datei herausgefunden haben, falls dies möglich war. Die Abgabe erfolgt ĂŒber das Repository, das Ihrem Team zugeordnet ist. \ No newline at end of file diff --git a/Assignment_002/solution/readme.md b/Assignment_002/solution/readme.md new file mode 100644 index 0000000..c698cbe --- /dev/null +++ b/Assignment_002/solution/readme.md @@ -0,0 +1,84 @@ +# Lösung: Dateien mit `file` untersuchen (files.zip) + +Nach dem Auspacken des Archivs kann man durch den Aufruf von `file *` die entsprechenden Dateien analysieren. + +| Datei | Ausgabe von `file` | Werkzeug | Inhalt | +|---|---|---|---| +| `a` | PNG image data, 100 x 100, 8-bit gray+alpha, non-interlaced | Bildbetrachter | Rick Astley | +| `b` |JPEG image data, ... , 250x157, components 3 | Bildbetrachter | JPG-Bild eines Egg Mac Muffins | +| `c` | PE32 executable (DLL) (console) Intel 80386 (stripped to external PDB), for MS Windows | `rabin2` | Shared Library fĂŒr Windows mit nur zwei Exports: `GetDiskKey` und `GetDiskKey_Version` | +| `d` | PE32 executable (GUI) Intel 80386, for MS Windows | `rabin2` | AusfĂŒhrbare Datei fĂŒr Windows. Symbole und Strings können mit `rabin2` ausgegeben werden. AusfĂŒhren der Datei ist zu riskant. | +| `e` | ELF 64-bit LSB shared object, ... , not stripped | `rabin2` | Bibliothek (shared object) fĂŒr Linux x86, nicht gestrippt | +| `f` | ELF 64-bit LSB pie executable, ... , not stripped | `rabin2` | AusfĂŒhrbares Programm fĂŒr Linux. AusfĂŒhren der Datei ist zu riskant. | +| `g` | ELF 64-bit LSB shared object, ... , stripped | `rabin2` | Bibliothek (shared object) fĂŒr Linux x86, gestrippt | +| `h` | ELF 64-bit LSB pie executable, ... , stripped | `rabin2` | AusfĂŒhrbares Programm fĂŒr Linux. AusfĂŒhren der Datei ist zu riskant. | +| `i` | ELF 64-bit LSB relocatable, ... , not stripped | `rabin2` | Objekt-Datei mit der Main-Funktion eines Programms. | +| `j` | Compiled Java class data, version 61.0 | `javap` | Java-Klasse mit dem Namen `FlagPrinter`, die nur eine `main`-Methode enthĂ€lt. | +| `k` | ASCII text | `less` | Rick Astley Song | +| `l` | data | `hexyl` | BinĂ€rdaten: ff ff 00 00 ca fe ba be 00 00 00 | +| `m` | Atari ST M68K contiguous executable | `strings` | Teil des Softwarepaketes Degas | +| `n` | gzip compressed data, was "n" ... | `gzip`, `less` | Komprimierte Version von k | + +## zu `e`, `f`, `g`, `h` + +Betrachtet man die Build-IDs, die von `file` ausgegeben werden sieht man: + +```console +e: ELF ... BuildID[sha1]=82d337f3906e7639b404001a5c501e9308848c80 +f: ELF ... BuildID[sha1]=94fbda07657d2a358c1844e7682632621affde92 +g: ELF ... BuildID[sha1]=82d337f3906e7639b404001a5c501e9308848c80 +h: ELF ... BuildID[sha1]=94fbda07657d2a358c1844e7682632621affde92 +``` + +`e` + `g` und `f` + `h` haben jeweils dieselben Build-IDs. Dies deutet darauf hin, dass es auch dieselben Programme bzw. Bibliotheken sind -- nur einmal jeweils gestrippt. + +## Zu `j` + +`javap` braucht den Namen der Java-Klasse, um sie zu laden und auszugeben. Den Namen kann leicht mit dem `strings`-Kommando finden, weil der Namen der Quelldatei ebenfalls in der Klasse gespeichert ist. + +```console +$ strings j +... +SourceFile +FlagPrinter.java +... +``` + +Damit kann man die Datei umbenennen und `javap` verwenden: + +```console +$ cp j FlagPrinter.class +$ javap -cp . FlagPrinter +Compiled from "FlagPrinter.java" +public class FlagPrinter { + public FlagPrinter(); + public static void main(java.lang.String[]) throws java.lang.Exception; + static {}; +} +``` + +## zu `l` + +Der Inhalt der Datei kann einfach mit einem Hexeditor, z.B. `hexyl` oder `hexedit` angesehen werden: + +```console +$ hexyl l +┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐ +│00000000│ ff ff 00 00 ca fe ba be ┊ 00 00 00 │××00××××┊000 │ +└────────┮─────────────────────────┮─────────────────────────┮────────┮────────┘ +``` + +## zu `m` + +Da es sich um ein sehr altes Format handelt (1980er Jahre), kommen die normalen Werkzeuge damit nicht klar. Man kann allerdings zumindest die enthaltenen Strings ausgeben lassen. + +```console +$ strings -n 10 +... +D:\DEGASART\ART1.SCPD:\DEGASART\PICS\D:\DEGASART\DEGASART.RSCTITLE.PC1 +... +``` + +## zu `n` + +Nach dem Auspacken sieht man, dass `n` nur eine komprimierte Version von `k` ist. diff --git a/Assignment_002/payload_1 b/Assignment_003/payload_1 similarity index 100% rename from Assignment_002/payload_1 rename to Assignment_003/payload_1 diff --git a/Assignment_003/readme.md b/Assignment_003/readme.md index 9f19147..6083234 100644 --- a/Assignment_003/readme.md +++ b/Assignment_003/readme.md @@ -1,4 +1,4 @@ -# Assignment: Exports und Imports mit rabin2 untersuchen (payload_2.so) +# Assignment: Importe mit rabin2 untersuchen (payload_1) **🎓 Benotetes Assignment 🎓** @@ -14,13 +14,11 @@ FĂŒr diese Übung werden wir das Kommandozeilen-Reverse-Engineering-Werkzeug Rad ## 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`. +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. -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 anzeigen zu lassen. -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) + * [payload_1](payload_1) ## Hinweis @@ -29,8 +27,7 @@ Bei dem Executable handelt es sich um ein Programm unbekannter FunktionalitĂ€t, 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. +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. diff --git a/Assignment_003/payload_2.so b/Assignment_004/payload_2.so similarity index 100% rename from Assignment_003/payload_2.so rename to Assignment_004/payload_2.so diff --git a/Assignment_004/readme.md b/Assignment_004/readme.md new file mode 100644 index 0000000..9f19147 --- /dev/null +++ b/Assignment_004/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 910e1af..cba2fc5 100644 --- a/readme.md +++ b/readme.md @@ -16,8 +16,9 @@ Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/software.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** | | +| 2. | 02.10.2024 | [Dateien mit `file` untersuchen (files.zip)](Assignment_002/readme.md) | | [✅](Assignment_002/solution/) | +| 3. | 02.10.2024 | [Importe mit rabin2 untersuchen (payload_1)](Assignment_003/readme.md) | **08.10.2024** | | +| 4. | 02.10.2024 | [Exports und Imports mit rabin2 untersuchen (payload_2.so)](Assignment_004/readme.md) | **08.10.2024** | | ## 🎓 Benotung