17 Ocak 2013 Perşembe

WD MyBook'u Nasıl Hackledim?


Uzun zamandır yoğunluğumdan ötürü yazı eklemek istesem de hatta yazacak aklıma bir çok konu gelse de yazamamaktaydım. Bu sefer anlatacağım konu çok uzun olmasa da en azından uzun zamandan sonra yazı eklemeye başlamam için de başlangıç olacak.

Elime bir tane Western Digital marka my book serisi disk geçti, yanda görmüş olduğunuz. Amacım bunu ağ diski olarak bağlamak ancak bunu yaparken WD'nin mutlaka kurun demiş olduğu programı kullanmadan işi halletmekti. Sonuçta kurduğum şey alt tarafı disk olduğundan herhangi bir ek program kurmak istemiyordum. Ancak diskin bir Ethernet bir de USB arabirimi var ve USB kablosu yoktu, zaten USB sanırım ek disk bağlamak için (açıkçası kullanma kılavuzunu baştan sona okumadım.)


Alet bir ağ diski olduğundan biraz ağı kurcalamak gerekiyordu. Aletin MAC adresi üzerinde yazdığından ötürü belki DHCP'den IP almıyordur diyerek en önce diski elektriğe ve şebekeye bağlayıp sonra MAC adresini statik olarak windows'un ARP tablosuna ekleyerek ping'lemeyi düşündüm. Bir komut penceresinde ping -t 10.0.0.15 yazarken diğer pencerede de statik MAC adres tanımlaması yaptım:

arp -s 10.0.0.15 XX-XX-XX-XX-XX-XX

Ancak ping'lemeye devam ederken aleti kapatıp açtım, herhangi bir değişiklik olmadı. Statik IP kullandığım için diskle bilgisayarımı çapraz (cross) ağ kablosuyla bağlayıp aynı işleri yaptım yine yemedi.

Internette özellikle de wikipedia'da biraz araştırdım: [ http://en.wikipedia.org/wiki/Western_Digital_My_Book ] ilginç bir şekilde diskin içinde arm işlemci var ve linux çalıştırdığını öğrendim. Internetteki bir yerde SSH bağlanarak en ince ayarlara bile ulaşmanın mümkün olduğunu ancak bunu yapmanın garantiyi iptal ettiğiyle de karşılaştım. Bu SSH konusuna biraz daha ileride tekrar değineceğim. WD'nin destek forumlarında sürücünün Linux'u desteklemediğini okudum. Disk DHCP ile IP alıyordu ve dosya paylaşımı için de öyle çok karmaşık bir protokol kullanmıyordu dolayısıyla aslında ek bir programa gerek olmadan rahatlıkla ayarları yapılabilmeliydi. Üstelik içinde linux bir bilgisayar çalıştıran bir makinanın linux istemcileri desteklememesi de oldukça garip bir durumdu.

Madem DHCP çalıştırıyordu o zaman Wireshark ile gidip gelen DHCP paketlerini dinlersem muhtemelen benim diskimin IP alacağı sırada hangi IP verildiğini görebilirdim. Ben de aynen bu şekilde yaptım ancak yine bir sorun çıktı. Kalabalık bir ağda bulunduğumdan ötürü ağ DHCP manyağı olmuştu.

İç ağa ait IP'leri gizlemek zorundayım.

Açıkçası ben bunu hesaba katmadım ve ben çıktılara bakarken benim diskim de IP'sini aldı ben büyük olasılıkla bunu kaçırdım. Filtreyi DHCP paketleri yerine doğrudan MAC adresine koymak aklıma gelmedi ve ağda otomatik DHCP olduğundan ben diski söküp tekrar taksam bile büyük olasılıkla aynı IP'yi alacağından tekrar bir DHCP alışverişi olmayacaktı. Bu arada diskin boot etmesi 3dk civarında sürdüğünden tekrar boot edip DHCP denemek istemedim. Büyük olasılıkla olmayacaktı zaten.

Sonradan aklıma artık nmap geldi. nmap çok bilinmese de aslında sinemalara bile çıkmış önemli bir program:


Trinity bile şehrin elektriğini kesmek için nmap'le tarıyorsa nmap'de bir hayır vardır diyip bir tarama yaptım. Normalde nmap taramaları elbette ki yasal değil bunu aklınızdan çıkarmamanızda yarar var ancak taramayı Internet'e çıkmayan bir özel ağda yaptığım için benim açımdan bir sorun yok. Komut:

nmap 10.0.0.0/24 

biçiminde verdim. Bütün ağı tarayıp hangi portların açık olduğunu bulduktan sonra çıktıda benim istediğim diske ait MAC adresini buldum. Zaten MAC adresinin yanında IP adresi de yazıyordu. Bu adresi bulduktan sonra zaten gerisi oldukça kolay. SYN taraması yaptığım için (açıkçası nmap'i çok iyi bilmediğimden emin değilim ama SYN taraması yapıyor olmam gerekir diye düşünüyorum.) nmap bir makinanın bütün portlarına SYN paketleri yolluyor ve TCP, 3-aşamalı elsıkışma (three way handshake) gerçekleştirmeye çalışıyor. Karşıdaki makina da ACK/SYN yolladığı zaman nmap bu portları çıktısında bildiriyor. Daha önceki OSI/TCP yazısında bahsettim mi hatırlamıyorum ama her SYN paketi TCP çalıştıran bir sunucunun belli bir miktar kaynağını kullanır (biri size istek gönderdiyse bu isteği kimin gönderdiğini ne istediğini bellekte saklarsınız) dolayısıyla bir sürü anlamsız SYN paketiyle bir bilgisayarda çalışan daemon'un çok fazla bellek kullanmasına neden olabilirsiniz. Bunun için bir TCP sunucunun birim süre içerisinde cevap vereceği SYN paketlerinin sayısı sınırlandırılır. Sunucuya bir saniyede 100 tane SYN gelse bile bunlardan sadece 10 tanesine cevap vermesi sağlanabilir. Herneyse ben yaptığım port taraması sonucu diskin netbios ve http portlarının açık olduğunu gördüm. http ile bağlanarak ayarlar yapılabiliyor ve netbios yani samba ile de dosya paylaşımı gerçekleştiriliyordu. Bu kadar basit aslında. Bu arada SSH'a sonradan değineceğim demiştim. Dikkat ettiyseniz yukarıda açık portlarda SSH'ı saymadım. Sonradan putty ile bağlanmayı denedim ama bağlantı engellendi (connection refused). Yani ya firewall'dan bir engelleme var yada SSHd çalışıyor ancak bağlantıları kabul etmiyor. Tabi daha ince ayar çekebilmek için ikinci durumun geçerli olması daha avantajlı olur.

Sonrası, diskin kullanım kılavuzundan ilk açılıştaki kullanıcı adı ve şifreyi bulup gereken diğer ayarlamaları yapmak ve hizmete almak. Böylelikle disk için herhangi ekstra bir program kurmadan bütün yapılacak işi halletmiş oldum. Diskin normalde ayarı DHCP ancak her mantıklı alet gibi kendisine statik IP atama seçeneği de var. Fabrika ayarlarına döndürünce DHCP oluyor. Ben ayarlamaları yaparken bir daha bunlarla uğraşmamak için diski kapatmadan önce bir statik IP verip öyle kapatacağım.




Hiç yorum yok:

Yorum Gönder