Arduino Pro Micro(Arduino Leonardo) ile Usb Rubber Ducky Yapımı

Merhabalar, bugün Siber Güvenlik dünyasına meraklı olanların çoğunun adını bir kere de olsa duyduğu, veya çeşitli filmlerin sahnelerinde kullanıldığını gördüğü "USB Rubber Ducky" yapımını paylaşacağım.

Rubber Ducky Nedir ? 


Rubber Ducky'nin kısaca tanımını yapacak olursak, kendisini HID(Human Interface Device) olarak tanıtıp, bir dizi kodlarla payload enjekte etmemizi sağlayan bir saldırı tekniğidir.Rubber Ducky saldırısını cazip kılan nokta, işletim sistemine kendisini klavye olarak gösterdiği için herhangi bir güvenlik çözümü engeline takılmayıp, programlandığı amacı sorunsuz yerine getirebilmesidir.


Ducky'ler, saniyede 1000 kelime girişi gerçekleştirebilmekte olup, çok kompleks işlemler haricinde 10 saniyeden kısa bir süre zarfında hazırlanan payloadı sisteme enjekte edebilmektedirler.Bilgisayarlarda kullanılmasının dışında, otg ve benzeri dönüştürücüler vasıtasıyla tablet, telefon gibi her cihaza uyarlanabilmesi de popüleritesinin sebeplerinden birisidir.Günümüzde teknolojinin gelişmesiyle programlanabilir kartların boyutunun ciddi anlamda küçülmesi, hazırlanılan bu programlanabilir kartın bir usb kabına koyulmasıyla şüphe uyandıran durumlardan kurtarmaktadır.


Ducky hazırlamak için bir çok programlanabilir kart(Digispark Attiny85,Arduino Uno) kullanabiliriz.Ben Arduino Leonardo kullanmayı tercih ettim fakat seçimimden biraz pişmanlık duyduğum için önümüzdeki hafta Digispark Attiny85 ile çalışmaya başlayacağım.Leonardo'dan pişman olmamın tek sebebi Türkçe Q Klavye ile aşırı sorunlu çalışmasıdır.İnternette çeşitli kullanıcılar çeşitli kütüphaneler eklemişler bu sorunu aşmak için ki özel karakter kullanmayacaksınız "TRKeyboard" kütüphanesi işinizi sorunsuz görmektedir fakat bir powershell betiği çalıştırmak isterseniz en basitinden  " $ " işaretini yapamadığınız için betik hatalı çalışacaktır.Belki bu sorunun benim bilmediğim bir çözümü vardır ben bulamamışımdır tabii kesinlikle çözümü yok demiyorum ama uzunca araştırıp sorunun çözümüne ulaşamayınca "Keyboard" kütüphanesini düzenlemeye çalıştım ve 1 günden fazla vakit ayırmama rağmen istediğim karakterleri oluşturamadım.Bende powershellden vazgeçip ilerleyen aşamalarda da göreceğiniz gibi çok basit bir şekilde backdoor oluşturabileceğim, özel karakter içermeyen bir ducky scripti geliştirdim ve en azından ilk başarılı ducky scriptimi 2. günün sonunda oluşturabildim.Eğer copy-paste ile bir sorununuz yok ise veya fikir edinmek isterseniz github veya çeşitli platformlarda bir çok ducky scriptine erişip, inceleyebilirsiniz.


Hazırlık ve Ön Bilgi




Resimde gördüğünüz kart Arduino Pro Micro(Leonardo)dur.Küçük boyutu gayet güzel ve bence tek eksi yönü giriş noktası micro usb olmasıdır ama bu sorun da ufak lehim işlemi ile USB ye çevrilerek çözülebilmektedir.Ben digispark a geçeceğim için leonardo ile bu dönüştürme işlemini yapma gereğinde bulunmadım, ilerleyen zamanlarda VINN kutusu içerisine koyup o aşamayı da buraya ekleyeceğim eğer vakit bulabilirsem.

Programlama işlerimizi Arduino IDE üzerinden gerçekleştireceğimiz için üreticinin adresinden en güncel sürümünü edinebiliriz.Scriptlerin yazımına değinmeyeceğim ufak bir araştırmayla çok rahat nasıl kendi ducky scriptinizi geliştirebileceğinizi öğrenebilirsiniz.

Eğer internetten script edinecek olursanız aşağıdaki gibi bir görüntüyle karşılaşacaksınız ;



















Arduino IDE platformunda C++ dilinde kodlama yapacağımız için bu türdeki scriptlerde dönüştürme işlemi uygulamamız gerekecektir.Bir çok converter denedim ve benim en hoşuma giden malduino oldu ama sizler diğerlerini de deneyerek herhangi birisini kullanabilirsiniz(Ayrıca bazı converterlar size kart üzerinde ledleri kontrol edeceğiniz hazır kodlar ile birlikte çıktı vermektedir.).Bu çevirinin ardından kodlar aşağıdaki gibi görünecektir ;

























Uygulama

Cihazımın girişini Micro USB den USB ye çevirmediğim için kablo aracılığıyla Arduino'yu bilgisayara bağladıktan sonra Arduino IDE'yi açıyoruz.





















Kart kısmından kart modelimizi seçip, port kısmından da cihazın bağlı olduğu portu seçeceğiz.

Bu işlem sonrasında kodlama aşamasına geçiyoruz, ben kendi kodum üzerinden gideceğim.






















Bahsettiğim Türkçe Q Klavye uyumsuzluğunu en aza indirgeyen TRKeyboard kütüphanesini kullanarak klavye komutlarını kullandım. Kısaca kodu özetleyecek olursam, Ctrl + Esc kombinasyonu ile başlat çubuğuna erişip, arama kısmına cmd yazıp Ctrl + Shift + Enter kombinasyonu ile yönetici olarak başlat diyoruz.Bizden izin isteyen bir pencere açılıyor ve işaretçi varsayılan olarak hayır da geliyor.Sol ok tuşu ile evet üzerine getirip Enter tuşuna bastırıyoruz, cmd açıldıktan sonra diğer bilgisayarımda python modüllerinden SimpleHTTPServer üzerinden erişilebilir hale getirdiğim(başka senaryolar için anonfiles benzeri dosya paylaşım platformlarından faydalanılabilir), C# da hazırlanmış basit netcat reverse shell bağlantısı sağlayan dosyamı hedef bilgisayara indirip açtırıyorum.Ardından cmd ekranından çıkıp klavyeyi durduruyoruz.



























Kodumuzu Arduinoya yükledikten sonra bağlantısını kesip tekrardan takıyoruz ve kırmızı ışığı yanmaya başlayınca işlerin yolunda gittiğini görüyoruz.






Ardından saldırgan bilgisayarımızda netcat ile 443 portunu gelecek bağlantı için dinlemeye alıyoruz ve bağlantı düşmesini bekliyoruz.Cihazı taktıktan sonra yaklaşık 3 saniye içerisinde bağlantımızı alabiliyoruz.



Görüldüğü üzere bağlantıyı sağlıyoruz ve herhangi bir güvenlik çözümü engeline de takılmıyoruz.

Arka Planda Neler Oldu
Biz cihazımı klavye olarak tanıttık ve herhangi bir güvenlik çözümü tarafından durdurulmadan dosyamızı indirdik ve çalıştırdık.Burada arka kapı için kullandığımız netcat reverse shellinin arka planında olanları özetleyecek olursak, aslında kurban bilgisayarda arka planda bir cmd konsolu açtık ve gelip bizden komut almasını söyledik.Kurban bilgisayar bizden çalıştırmak için komut alıp, kendi içerisinde çalıştırıp, çıktısını da bize verdi ve böylelikle amacımıza ulaşmış olduk.

Benim bu çalışmam giriş niteliğinde çok basit bir örnektir, çok daha gelişmişlerini hazırlamak mümkündür.

Rubber Ducky Saldırısından Korunmanın Yolları

Saldırıdan bahsedip korunma yolundan bahsetmemek olmaz diyerekten bu tarz bir saldırıya maruz kalmamak için gerekenlerden bahsedeceğim.

Öncelikle kısa süreliğine bilgisayar başından ayrılacaksanız ekranı kilitleyip gitmeniz saldırıdan korunmak için önemlidir.Bunlara ek olarak ;

  • Group Policy'den tüm USB HID'leri devre dışı bırakın
  • USB portlarını BIOS üzerinden kontrol edin
  • Bilgisayara USB HID takıldığında bir kontrol aşaması ekleyin
diyebiliriz.

Yazımın burada sona ermektedir.Digispark Attiny85 çalışmamda görüşmek dileğiyle.

Hiç yorum yok:

Yorum Gönder