1. WIFI DUCKY ile tanışın
Ducky Scripts'i uzaktan çalıştırmak için Wi-Fi kontrollü bir BadUSB cihazıdır.
Saldırıyı enjekte etmek için klavye görevi gören bir USB cihazı kullanın. Hak5'in USB Rubber Ducky, bu saldırı için bir bilgisayar korsanlığı aracıdır. Bu projede de kullanılan Ducky Script adlı basit bir betik dili tanıttı.
Cihaz, bir WIFI sinyali oluşturmak, uzaktan yüklemek, saldırmak için komut dosyalarını kaydetmek ve çalıştırmak için ESP8266 + ATMEGA32U4 kullanır
Ama neden Wi-Fi eklediniz diye sorabilirsiniz.
Wi-Fi kullanarak, Ducky Script'i uzaktan yükleyebilir ve çalıştırabilirsiniz.
Hedef makineyi tam olarak kontrol etmek için cihazı takın ve Wi-Fi ağına bağlanın.
Ayrıca size diğer BadUSB'ye göre daha büyük bir avantaj sağlar, betiğinizi test edebilirsiniz! Bunları micro-sd karta kopyalamanıza veya derlemenize gerek yoktur. Bunları doğrudan web arayüzü üzerinden çalıştırabilirsiniz, bu da komut dosyalarını test etmeyi ve geliştirmeyi çok kolaylaştırır.
Ayrıca farklı saldırılar için pek çok olasılık ekler. Hedef indirilen yürütülebilir dosyaları İnternet yerine Wi-Fi ağından yapabilirsiniz. Veya farklı bir saldırı yürütün ve sonuçları geri gönderin. Veya ESP8266s Wi-Fi üzerindeki ters kabuğu açın.
Bekle ... çok fazla olasılık var, acele et ve yap!
2. Gerekli malzemeler:
1. CJMCU-Beetle Leonardo USB ATMEGA32U4
2. ESP8266-12F
3. AMS1117-3.3V güç modülü
3. Gerekli yazılım:
ARDUINO IDE İndirme bağlantısı: https://www.arduino.cc/en/Main/Software
NodeMCU Flaşör İndirme bağlantısı: https://github.com/nodemcu/nodemcu-flasher
4. Bağlantı şeması:
5. Ürün yazılımını ESP8266'ya yazın
İlk önce aşağıdaki kodu Arduino'ya yükleyin:
int program_pin = 12; int enable_pin = 13; geçersiz kurulum () { Serial1.begin (115200); Serial.begin (115200); pinMode (enable_pin, OUTPUT); pinMode (program_pin, OUTPUT); digitalWrite (program_pin, DÜŞÜK); digitalWrite (enable_pin, HIGH); } geçersiz döngü () { while (Serial1.available ()) { Serial.write ((uint8_t) Serial1.read ()); } eğer (Serial.available ()) { while (Serial.available ()) { Serial1.write ((uint8_t) Serial.read ()); } } }Cihazı PC'ye bağlayın, Arduino IDE'yi açın, geliştirme kartını ve bağlantı noktasını seçin
Ardından kodu Arduino'ya yazmak için Yükle'ye tıklayın
Başarıyla yazdıktan sonra indirmek için https://github.com/spacehuhn/wifi_ducky/releases adresine gidin esp8266_wifi_duck_4mb.bin aygıt yazılımı
Derlediğim Çince web arayüzü aygıt yazılımı İndirmek için tıklayın
Ardından NodeMCU Flasher yazma yazılımını açın
Parametreleri aşağıdaki gibi ayarlayın
Ardından ürün yazılımını seçin
Bağlantı noktasını seçin, aygıt yazılımını yazmaya başlamak için Flash'ı tıklayın
Yazma işlemi tamamlandıktan sonra GPIO0 hattının bağlantısını kesmeniz ve bunu aşağıdaki kablolamaya çevirmeniz gerekir ve ardından bir sonraki adımda kodu yazabilirsiniz.
6. ATMEGA32U4'e kod yazın
#Dahil etmek < Keyboard.h > #define BAUD_RATE 57200 #define ExternSerial Serial1 String bufferStr = ""; Dize last = ""; int defaultDelay = 0; void Line (String _line) { int firstSpace = _line.indexOf (""); if (firstSpace == -1) (_line) tuşuna basın; else if (_line.substring (0, firstSpace) == "STRING") { for (int i = firstSpace + 1; i < _line.length (); i ++) Keyboard.write (_line ); } else if (_line.substring (0, firstSpace) == "GECİKME") { int gecikme süresi = _line.substring (firstSpace + 1) .toInt (); gecikme (gecikme süresi); } aksi takdirde (_line.substring (0, firstSpace) == "DEFAULTDELAY") defaultDelay = _line.substring (firstSpace + 1) .toInt (); else if (_line.substring (0, firstSpace) == "REM") {} // hiçbir şey: / else if (_line.substring (0, firstSpace) == "YENİDEN OYNAT") { int replaynum = _line.substring (firstSpace + 1) .toInt (); while (replaynum) { Satır (son); --replaynum; } } Başka{ Dize kalır = _line; while (stay.length () > 0) { int latest_space = stay.indexOf (""); if (latest_space == -1) { Basın (kalsın); kalmak = ""; } Başka{ (Stay.substring (0, latest_space)) tuşuna basın; stay = stay.substring (en son_uzay + 1); } gecikme (5); } } Keyboard.releaseAll (); gecikme (defaultDelay); } void Press (String b) { if (b.length () == 1) Keyboard.press (char (b)); aksi takdirde (b.equals ("ENTER")) Keyboard.press (KEY_RETURN); else if (b.equals ("CTRL")) Keyboard.press (KEY_LEFT_CTRL); else if (b.equals ("SHIFT")) Keyboard.press (KEY_LEFT_SHIFT); else if (b.equals ("ALT")) Keyboard.press (KEY_LEFT_ALT); else if (b.equals ("GUI")) Keyboard.press (KEY_LEFT_GUI); else if (b.equals ("UP") || b.equals ("UPARROW")) Keyboard.press (KEY_UP_ARROW); else if (b.equals ("DOWN") || b.equals ("DOWNARROW")) Keyboard.press (KEY_DOWN_ARROW); else if (b.equals ("LEFT") || b.equals ("LEFTARROW")) Keyboard.press (KEY_LEFT_ARROW); else if (b.equals ("RIGHT") || b.equals ("RIGHTARROW")) Keyboard.press (KEY_RIGHT_ARROW); else if (b.equals ("DELETE")) Keyboard.press (KEY_DELETE); else if (b.equals ("PAGEUP")) Keyboard.press (KEY_PAGE_UP); else if (b.equals ("PAGEDOWN")) Keyboard.press (KEY_PAGE_DOWN); else if (b.equals ("HOME")) Keyboard.press (KEY_HOME); else if (b.equals ("ESC")) Keyboard.press (KEY_ESC); else if (b.equals ("BACKSPACE")) Keyboard.press (KEY_BACKSPACE); else if (b.equals ("INSERT")) Keyboard.press (KEY_INSERT); else if (b.equals ("TAB")) Keyboard.press (KEY_TAB); else if (b.equals ("END")) Keyboard.press (KEY_END); else if (b.equals ("CAPSLOCK")) Keyboard.press (KEY_CAPS_LOCK); else if (b.equals ("F1")) Keyboard.press (KEY_F1); else if (b.equals ("F2")) Keyboard.press (KEY_F2); else if (b.equals ("F3")) Keyboard.press (KEY_F3); else if (b.equals ("F4")) Keyboard.press (KEY_F4); else if (b.equals ("F5")) Keyboard.press (KEY_F5); else if (b.equals ("F6")) Keyboard.press (KEY_F6); else if (b.equals ("F7")) Keyboard.press (KEY_F7); else if (b.equals ("F8")) Keyboard.press (KEY_F8); else if (b.equals ("F9")) Keyboard.press (KEY_F9); else if (b.equals ("F10")) Keyboard.press (KEY_F10); else if (b.equals ("F11")) Keyboard.press (KEY_F11); else if (b.equals ("F12")) Keyboard.press (KEY_F12); else if (b.equals ("SPACE")) Keyboard.press (''); // else Serial.println ("bulunamadı: '" + b + "' (" + String (b.length ()) + ")"); } geçersiz kurulum () { Serial.begin (BAUD_RATE); ExternSerial.begin (BAUD_RATE); pinMode (13, ÇIKIŞ); digitalWrite (13, YÜKSEK); Keyboard.begin (); } geçersiz döngü () { eğer (ExternSerial.available ()) { bufferStr = ExternSerial.readStringUntil ("END"); Serial.println (bufferStr); } if (bufferStr.length () > 0) { bufferStr.replace ("r", "n"); bufferStr.replace ("nn", "n"); while (bufferStr.length () > 0) { int latest_return = bufferStr.indexOf ("n"); if (latest_return == -1) { Serial.println ("çalıştır:" + bufferStr); Satır (bufferStr); bufferStr = ""; } Başka{ Serial.println ("run: '" + bufferStr.substring (0, latest_return) + "'"); Satır (bufferStr.substring (0, latest_return)); last = bufferStr.substring (0, latest_return); bufferStr = bufferStr.substring (en son_turn + 1); } } bufferStr = ""; ExternSerial.write (0x99); Serial.println ("tamamlandı"); } }Başarılı bir şekilde yazma istemini bekleyin, cihazın fişini çekin ve bilgisayara yeniden bağlanın
7. Nasıl kullanılır
Şu anda, cep telefonunuzla WIFI arayın ve bulacaksınız
WIFI: WIFI ÖRDEK PASSWD: şarlatan
Tarayıcıyı açın ve yönetim adresini girmek için girin
Burada yeni Ducky Komut Dosyalarını yükleyebilir, görüntüleyebilir, silebilir ve çalıştırabilirsiniz.
Lütfen komut dosyasının her satırının maksimum uzunluğunun 600 karakter olduğunu unutmayın.
Ducky Scripts nasıl yazılır: https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript
8. ESP8266 donanım yazılımını web arayüzü üzerinden güncelleyin
Donanım yazılımını güncellemek istiyorsanız, web arayüzü üzerinden güncelleyebilirsiniz.
192.168.4.1/info adresine gidin ve yeni .bin dosyasını yükleyin
9. Özel bellenimi derleyin
Arduino kütüphanesini kurun
ESP8266 SDK
ESPAsyncWebServer
ESPAsyncTCP
Arduino'yu açın ve Dosya'ya tıklayın. > Tercih edilen hat
Yukarıdaki kodu ek geliştirme panosu yönetim URL'sine ekleyin ve ardından Araçlar- > Geliştirme Kurulu > Development Board Manager Arama ESP Kur'a tıklayın
Ardından Arduino'da ESPAsyncWebServer ve ESPAsyncTCP'yi indirin ve projeye tıklayın- > Kitaplığı yükle- > .Zip kitaplığı ekleyin
Dosyayı esp8266_wifi_duckhtmlfiles altında değiştirin, ardından minifier.html'yi açın ve biçimi dönüştürmek için "minify + byte-ify" i tıklayın ve data.h içindeki içeriği değiştirin (işte Çince-Çince WEB arayüzüm: indirmek için tıklayın)
Ardından Arduino IDE'de esp8266_wifi_duck.ino geliştirme kartı seçimini açın: Genel ESP8266 Modülü Flaş boyutu seçimi: 4 milyon (1 milyon SPIFFS) Ardından öğeye tıklayın- > Doğrulayın / derleyin ve projeye tıklayın- > Derlenmiş ikili dosyayı dışa aktar
10. Üretim sürecinin videosu (çiğ et)
11. Referans malzemeleri
https://github.com/spacehuhn/wifi_ducky
https://github.com/basic4/WiDucky
Orijinal makale, yazar: Eagle Xiao Bian,
Yeniden basıldıysa, lütfen kaynağı belirtin: