BadUsb – Kötü USB

Gerçek bir USB Bellek gibi görünen kötü USB

Donanımsal hacking ürünleri genelde pahalı olduğundan ve yurtdışından getirmesi ayrı bir sorun teşkil ettiğinden deneme yapmak pek kolay olmuyor, yeni çıkan bir yazılım gibi gibi hemen indirip deneyeyim diyemiyoruz. Fakat Badusb bu konuda bizi üzmüyor. İlk çıkan Badusb’ler Rubber Ducy olarak geçiyordu ve maliyetleri çok yüksekti. Bazı usb belleklerin kontrolcüsü’nün donanım yazılımı değiştirilerek badusb olarak kullanılabiliyordu ama artık daha kolayı var. Ardunio Leanardo Beetle BadUSB kargo dahil sadece 5,56$ (Vergi Hariç) evet yanlış duymadınız sadece 5,56$ diye reklama devam edebilirim çünkü gerçekten rubber ducky den hiç bir eksiği yok. Cihazı satın aldığımda nasıl kullanılacağı bilmiyordum cihaz içerisinde SD Kart barındırmıyor zaten ihtiyaç da yok cihaz bir ATMEGA marka mikro denetleyici içerisinde ram ve rom I/O barındırıyor bize ise sadece Ardunio programlamak düşüyor. Cihazımızın içerisinde normal usb belleklerde olduğu gibi yığın depolama için kullanılan bellek modülleri değil bir mikro denetleyici bulunmakta.

Ardunio Programlayıcısını bilgisayarımıza kuruyoruz. Araçlar’dan cihaz olarak Ardunio Leanardo‘yu seçip Port Kısmından cihazımızı seçiyoruz ve kod yazmaya başlıyoruz. Ardunio yu bir klavye gibi kullanacağız bu sebeple keyboard.h kütüphanesini kullanmamız gerekiyor. Bizim klavyemiz türkçe olduğu için bu kütüphane url girerken nokta gibi karakterlerde sıkıntı çıkarıyor bu sebeple kütüphaneyi düzenlemeye karar veriyorum ve önce bir türkçe layout destekli TRKeyboard.h kütüphanesi hazırlıyorum.

Sonra kodumuzu daha kolay yazmak için internetten örneklerini inceliyorum ve bizim BadUsb mize uygun yani ardunio için yazılmış güzel bir kod parçasına rastlıyorum. Bu kod parçasını kendim için düzenliyorum kendi klavye kütüphanemi kullanıyorum.

Yazdığım kod klavyeden windows + R tuşuna basıyor. Bu çalıştır’ı başlatıyor.Çalıştıra buradaki powershell dosyamızı indirtip çalıştırmamız gerekiyor. İndidip çalıştıracağımız kod büyük olduğundan uzak sunucuda barındırıyor sadece indirip çalıştıracak olan kodu çalıştır’a yazdırıyoruz.

Çalıştır’a eğer komutumuzu encode etmeden yazarsak antivirüsler bunu algılayıp engel olduğu için öncelikle kodumuzu encode ediyoruz ve öyle yazıyoruz. Fakat kodumuzu oldukça kısa tutmalıyız çünkü çalıştır’a varsayılan olarak 255 karakterden fazla komut giremiyoruz indirmek istediğimiz dosyanın path’i çok uzun ayrıca powershell UTF-16 tipinde base64 kullandığı için base64 encode yaptığımız zaman çok uzun bir string elde ediyoruz bu sebeple indireceğimiz dosyayı önce bit.ly gibi bir url shortener ile kısaltıyoruz ve o şekilde komutumuzu oluşturuyoruz.

Yazdığımız kod çalıştığında bize reverse shell ile bağlantı kuruyor klasik netcat ile dinlemek birden fazla cihaza aynı port ile bağlantı kurmak istediğimizde çok mantıklı değil bu sebeple çoklu reverse shell yönetebileceğimiz yazılımlara ihtiyaç duyabiliriz bu yazılımlardan en iyi iki tanesini buraya bırakıyorum.

Multiple Reverse Shell:
https://github.com/WangYihang/Platypus
https://github.com/buckyroberts/Turtle

Yeni bir hack donanım yazısında görüşmek üzere..