USB: Dr. Jekyll und Mr. Hyde: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 35: Line 35:
== GadgetFS ==
== GadgetFS ==
== Scenario 1: Hidden Volume ==
== Scenario 1: Hidden Volume ==

was
- usb hat 2 partitionen, sind auf dem raspberry pi 2 images,
- je nach User wird eine oder beide Partionen sichtbar
- beispielsweise hier loesungen der klausur und passwörter

wie
, sind auf dem raspberry pi 2 images, eine partition wird default angezeigt als massenspeicher
- außerdem emuliert gadgetfs eine serielle schnittstelle, wenn auf der seriellen schnittstelle
daten rein kommen, soll die geheime partition angezeigt werden


resultat/probleme

- Der Pi erkennt nicht an welchem PC er angeschlossen wird, demnach nicht möglich so zu entscheiden
wieviele Partionen gezeigt werden
--> wir nutzten die serielle Schnittstelle als zusätzlichen Kanal, wenn Daten auf der seriellen Schnittstelle auf dem Pi
ankommen, mountet er die hidden Partition

- Functions können nicht später (d.h. im gemounteten Zustand) hinzugefügt werden
--> Lösung: um zwei Partionen statt einer zu erkennen, muss der Pi neu gestartet werden

== Scenario 2: Passive Attack ==
== Scenario 2: Passive Attack ==

was
- Alice speichert ein Dateien auf einem USB Stick und gibt diesem Bob
- bevor Bob den Stick ansteckt, werden die Dateien auf dem Stick verändert.
- Bob guckt sich modifizierte Daten an


wie
- Dateien werden verändert nach dem unmounten des USB Sticks
- Demo: Beispielsweise: Skript sucht auf dem Stick nach Bild Dateien und rotiert diese
- weitere Ideen: veränderung der IBAN oder Geldbeträge, weitere kompromittierte Dateien hinzufügen


resultat/problem
- nicht erkennbar für den Pi ob er gemountet ist oder nicht
- dadurch kann nicht automatisch nach unmounten des Sticks das Skript ausgeführt werden
---> Skript manuell ausführen nach unmounten

== Scenario 3: Active Attack ==
== Scenario 3: Active Attack ==

dee
virenscanner scannt dateien, sagt alles virenfrei
schadcode im gemounteten Zustand einfügen


was
- der Stick wird angesteckt, eine Datei wird geladen angeguckt wieder geschlossen, und während der Stick gemountet ist, wird die Datei vom pi geändert bsp. mit schadcode
- danach wird die datei wieder geöffnet und ist verändert


wie

- kleine dateien verändern 00 zu 11
- keine veränderunng: gecacht oder gehasht
fehlermeldung bei windows und linux korruptes filesystem

-versuch mit sehr großen dateien bsp. 4 gb bei 4 gb ram linux
- swap deaktiviert
veränderung wird gesehen - siehe demo

- versuche auf windows teilweise speicher volllaufen
auf glück? veränderung gesehen einmal gesehen

- verschiedene Ansätze / Versuche
- OS: Windows und Linux reagieren unterschiedlich

- text file erstellt, vom pi sollte dann dieser string eingefüght werden
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

https://en.wikipedia.org/wiki/EICAR_test_file


resultat/problem

- OS nimmt an totale Kontrolle über das File System zu haben
- Dateien werden vermutkich im RAM gecacht (I/O Buffer)

Linux: wie in Demo, wird gezwungen File neu zu öffnen

Windows: caching verhalten nicht so vorhersehbar


unser Windows system hatte 8gb ram, dass linux system nur 4gb


Demo:
1. raspberry pi:
* create one images
- dd if=/dev/zero of=image.img bs=1M count=4000
- msdosfs image.img
* sudo mount -o loop,rw image.img usbdisk.d
* sudo umount usbdisk.d
* yes 0 | sudo dd of=four_gb.txt bs=1M count=4000 iflag=fullblock
- - - - - schon erledigt - - - - - - - - -

2. ninas rechner:
sudo modprobe usbmon
sudo wireshark
cat four_gb.txt > /dev/null
wireshark zeigen

3. robbys rechner:
sudo mount -o loop,rw usbdisk.img usbdisk.d
sudo dd if=/dev/urandom of=four_gb.txt bs=1M count=4000 conv=notrunc status=progress
sudo umount usbdisk.d

4. ninas rechner

cat four_gb.txt > /dev/null
--> wireshark zeigen

datei erstellt 0000
pi mount verändert unmount
datei anders

Revision as of 12:44, 19 October 2017

Introduction

Gliederung

Dr. Jekyll and Mr Hyde

Hardware

Software

Raspberry Pi Zero einrichten

dd bs=4M if=2017-09-07-raspbian-stretch-lite.img of/dev/mmcblk0p1 conv=fsync

weiterhin muss das wlan eingerichtet werden


dd if=/dev/zer of=mass_storage bs=1M seek=1024 count=16000

mkdosfs mass_storage


das Image muss dann gemountet werden

mkdir ~/mount_usb

mount -o loop,rw mass_storage ~/mount_usb

cd ~/mount_usb

yes 0 | dd of=test_file1.text bs=1M count=4000

yes 1 | dd of=test_file1.text bs=1M count=4000

GadgetFS

Scenario 1: Hidden Volume

was - usb hat 2 partitionen, sind auf dem raspberry pi 2 images, - je nach User wird eine oder beide Partionen sichtbar - beispielsweise hier loesungen der klausur und passwörter

wie , sind auf dem raspberry pi 2 images, eine partition wird default angezeigt als massenspeicher - außerdem emuliert gadgetfs eine serielle schnittstelle, wenn auf der seriellen schnittstelle daten rein kommen, soll die geheime partition angezeigt werden


resultat/probleme

- Der Pi erkennt nicht an welchem PC er angeschlossen wird, demnach nicht möglich so zu entscheiden wieviele Partionen gezeigt werden --> wir nutzten die serielle Schnittstelle als zusätzlichen Kanal, wenn Daten auf der seriellen Schnittstelle auf dem Pi ankommen, mountet er die hidden Partition

- Functions können nicht später (d.h. im gemounteten Zustand) hinzugefügt werden --> Lösung: um zwei Partionen statt einer zu erkennen, muss der Pi neu gestartet werden

Scenario 2: Passive Attack

was - Alice speichert ein Dateien auf einem USB Stick und gibt diesem Bob - bevor Bob den Stick ansteckt, werden die Dateien auf dem Stick verändert. - Bob guckt sich modifizierte Daten an


wie - Dateien werden verändert nach dem unmounten des USB Sticks - Demo: Beispielsweise: Skript sucht auf dem Stick nach Bild Dateien und rotiert diese - weitere Ideen: veränderung der IBAN oder Geldbeträge, weitere kompromittierte Dateien hinzufügen


resultat/problem - nicht erkennbar für den Pi ob er gemountet ist oder nicht - dadurch kann nicht automatisch nach unmounten des Sticks das Skript ausgeführt werden ---> Skript manuell ausführen nach unmounten

Scenario 3: Active Attack

dee virenscanner scannt dateien, sagt alles virenfrei schadcode im gemounteten Zustand einfügen


was - der Stick wird angesteckt, eine Datei wird geladen angeguckt wieder geschlossen, und während der Stick gemountet ist, wird die Datei vom pi geändert bsp. mit schadcode - danach wird die datei wieder geöffnet und ist verändert


wie

- kleine dateien verändern 00 zu 11 - keine veränderunng: gecacht oder gehasht fehlermeldung bei windows und linux korruptes filesystem

-versuch mit sehr großen dateien bsp. 4 gb bei 4 gb ram linux - swap deaktiviert veränderung wird gesehen - siehe demo

- versuche auf windows teilweise speicher volllaufen auf glück? veränderung gesehen einmal gesehen

- verschiedene Ansätze / Versuche - OS: Windows und Linux reagieren unterschiedlich

- text file erstellt, vom pi sollte dann dieser string eingefüght werden X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

https://en.wikipedia.org/wiki/EICAR_test_file


resultat/problem

- OS nimmt an totale Kontrolle über das File System zu haben - Dateien werden vermutkich im RAM gecacht (I/O Buffer)

   Linux: wie in Demo, wird gezwungen File neu zu öffnen
   Windows: caching verhalten nicht so vorhersehbar


   unser Windows system hatte 8gb ram, dass linux system nur 4gb


Demo: 1. raspberry pi:

  • create one images
- dd if=/dev/zero of=image.img bs=1M count=4000
- msdosfs image.img
  • sudo mount -o loop,rw image.img usbdisk.d
  • sudo umount usbdisk.d
  • yes 0 | sudo dd of=four_gb.txt bs=1M count=4000 iflag=fullblock

- - - - - schon erledigt - - - - - - - - -

2. ninas rechner: sudo modprobe usbmon sudo wireshark cat four_gb.txt > /dev/null wireshark zeigen

3. robbys rechner: sudo mount -o loop,rw usbdisk.img usbdisk.d sudo dd if=/dev/urandom of=four_gb.txt bs=1M count=4000 conv=notrunc status=progress sudo umount usbdisk.d

4. ninas rechner

cat four_gb.txt > /dev/null

--> wireshark zeigen

datei erstellt 0000 pi mount verändert unmount datei anders