Penetrasyon Testi 1 - Giriş ve Temel Araçların Kullanımı
                    Bu yazıda, penetrasyon testine giriş yaparak temel kavramları ve araçları öğreneceğiz. Penetrasyon testinin aşamalarını inceleyecek, Kali Linux’un arayüzüne göz atacak ve temel terminal komutlarını kullanacağız. Ayrıca nmap ile port taraması, netcat ile bağlantı testleri ve whois, dig, nslookup gibi araçlarla bilgi toplama işlemlerini uygulamalı olarak gerçekleştireceğiz.
Penetrasyon Testi Nedir ve Aşamaları
Penetrasyon testi, bir sistemin, ağın veya uygulamanın güvenlik açıklarını tespit etmek ve bu açıkların kötü niyetli kişiler tarafından istismar edilmesini önlemek amacıyla gerçekleştirilen kontrollü bir siber saldırı simülasyonudur. Bu testler, bir organizasyonun bilgi güvenliği seviyesini değerlendirmek, potansiyel tehditleri belirlemek ve güvenlik politikalarını güçlendirmek için kullanılır. Penetrasyon testi, etik hackerlar veya güvenlik uzmanları tarafından yapılır ve genellikle “pentest” olarak kısaltılır. Test, gerçek dünyadaki siber saldırı senaryolarını taklit ederek sistemlerin ne kadar güvenli olduğunu ölçer.
Penetrasyon testi, farklı yaklaşımlarla yapılabilir: Black Box (sistem hakkında bilgi olmadan), White Box (tam sistem bilgisiyle) veya Gray Box (kısmi bilgiyle). Aşağıda, penetrasyon testinin temel aşamaları detaylı bir şekilde açıklanmıştır:
1. Keşif (Reconnaissance)
Keşif aşaması, penetrasyon testinin temel taşıdır ve hedef sistem hakkında mümkün olduğunca fazla bilgi toplanmasını içerir. Bu aşama, pasif ve aktif keşif olarak ikiye ayrılır:
- Pasif Keşif: Hedef hakkında halka açık kaynaklardan (OSINT — Open Source Intelligence) bilgi toplanır. Örneğin, web siteleri, sosyal medya, WHOIS kayıtları, DNS bilgileri ve diğer açık kaynaklar incelenir. Bu süreçte hedef sisteme doğrudan bir etkileşim yoktur, bu nedenle tespit edilme riski düşüktür.
 - Aktif Keşif: Hedef sistemle doğrudan etkileşime geçilerek bilgi toplanır. Örneğin, ağ taramaları veya port taramaları yapılabilir. Bu yöntem daha risklidir çünkü hedef sistemin güvenlik mekanizmaları tarafından fark edilebilir.
 
Amaç: Hedefin ağ yapısını, kullanılan teknolojileri, çalışan hizmetleri, domain bilgilerini ve potansiyel giriş noktalarını anlamak.
Kullanılan Araçlar: Maltego, Shodan, Google Dorking, theHarvester, WHOIS.
2. Tarama (Scanning)
Tarama aşaması, keşif aşamasında toplanan bilgilerin daha derinlemesine analiz edilmesi ve hedef sistemin teknik detaylarının ortaya çıkarılması için gerçekleştirilir. Bu aşamada, sistemdeki açık portlar, hizmetler, işletim sistemleri ve yazılımlar tespit edilir. Ayrıca, potansiyel güvenlik açıkları aranır.
- Ağ Taraması: Ağdaki cihazları, IP adreslerini ve açık portları belirlemek için yapılır.
 - Zafiyet Taraması: Bilinen güvenlik açıklarını (örneğin, eski yazılım sürümleri veya yanlış yapılandırmalar) tespit etmek için zafiyet tarama araçları kullanılır.
 - Uygulama Taraması: Web uygulamaları veya diğer yazılımlar için özel taramalar yapılır.
 
Amaç: Hedef sistemin zayıf noktalarını ve potansiyel istismar edilebilir açıklarını belirlemek.
Kullanılan Araçlar: Nmap, Nessus, OpenVAS, Burp Suite, Nikto.
3. Erişim Sağlama (Gaining Access)
Bu aşama, tespit edilen güvenlik açıklarının istismar edilerek hedef sisteme erişim sağlanmasını içerir. Güvenlik uzmanı, sistemde yetkisiz erişim elde etmeye çalışır ve bunu yaparken gerçek bir saldırganın kullanabileceği teknikleri taklit eder. Örneğin:
- Parola Kırma: Brute force, sözlük saldırıları veya sosyal mühendislik teknikleriyle parolalar kırılabilir.
 - Yazılım Zafiyetleri: SQL enjeksiyonu, çapraz site betiği çalıştırma (XSS) veya diğer yazılım açıkları kullanılarak erişim sağlanabilir.
 - Ağ Saldırıları: Man-in-the-Middle (MitM) veya ARP spoofing gibi tekniklerle ağ trafiği manipüle edilebilir.
 
Amaç: Sisteme yetkisiz erişim elde ederek potansiyel bir saldırganın neler yapabileceğini test etmek.
Kullanılan Araçlar: Metasploit, SQLmap, Hydra, Burp Suite.
4. Erişimi Sürdürme (Maintaining Access)
Erişim sağlandıktan sonra, bir saldırganın sistemi uzun süre kontrol altında tutma yeteneğini test etmek için erişimin sürekliliği sağlanır. Bu aşamada, kalıcı erişim mekanizmaları (backdoor, rootkit vb.) kurulabilir veya sistemde yetki yükseltme (privilege escalation) işlemleri gerçekleştirilebilir.
- Kalıcı Erişim: Sisteme tekrar erişim sağlamak için gizli kullanıcı hesapları veya arka kapılar oluşturulabilir.
 - Yetki Yükseltme: Düşük seviyeli bir erişimden yönetici (admin) seviyesine geçiş yapılabilir.
 
Amaç: Sistemin uzun süreli kontrol altında tutulup tutulmayacağını ve güvenlik mekanizmalarının bu tür tehditleri tespit edip edemeyeceğini değerlendirmek.
Kullanılan Araçlar: Netcat, Meterpreter, Mimikatz.
5. İzleri Silme (Covering Tracks)
Bu aşamada, penetrasyon testi yapan kişi, sistemde bıraktığı izleri silerek fark edilmesini önlemeye çalışır. Bu, gerçek bir saldırganın tespit edilmekten kaçınmak için yapacağı işlemleri simüle eder. Örneğin:
- Log Temizleme: Sistem logları veya güvenlik olay kayıtları silinir veya değiştirilir.
 - Dosya ve Kayıt Temizliği: Test sırasında oluşturulan dosyalar veya sistem değişiklikleri geri alınır.
 - Kimlik Gizleme: Proxy, VPN veya anonimleştirme araçları kullanılarak IP adresleri gizlenir.
 
Amaç: Güvenlik sistemlerinin, bir saldırının gerçekleştiğini tespit etme yeteneğini test etmek.
Kullanılan Araçlar: CCleaner, log düzenleme araçları, Tor.
Penetrasyon testi, bir organizasyonun siber güvenlik duruşunu güçlendirmek için kritik bir süreçtir. Yukarıdaki aşamalar, sistemlerin zayıf noktalarını belirlemek ve bu açıkları kapatmak için yapılandırılmış bir yaklaşım sunar. Test sonucunda, güvenlik açıklarının nasıl kapatılacağına dair öneriler içeren detaylı bir rapor hazırlanır. Bu rapor, sistem yöneticilerinin ve güvenlik ekiplerinin savunmalarını güçlendirmesine yardımcı olur.
Penetrasyon testi, düzenli olarak yapılmalı ve yeni tehditlere karşı sistemlerin güncel kalması sağlanmalıdır. Bu süreç, hem teknik hem de stratejik bir yaklaşımla, organizasyonların siber saldırılara karşı hazırlıklı olmasını sağlar.
VirtualBox Kali Linux Kurulumu
Bu aşamayı https://sadikcantuluk.online/Blog/Detail/virtualbox-ve-kali-linux-kurulumu yazısından inceleyebilirsiniz.
Temel Terminal Komutları
- ls (Listeleme)
 
Dosya ve dizinleri listeler.
Temel Kullanım: ls
Geçerli dizindeki dosyaları ve dizinleri listeler.
Parametreler:
- ls -l: Uzun formatta listeleme (izinler, sahip, boyut, tarih vb.).
 - ls -a: Gizli dosyaları da listeler (örneğin, .bashrc).
 - ls -lh: İnsan okuyabilir formatta dosya boyutları (KB, MB vb.).
 - ls -R: Dizinleri ve alt dizinleri rekürsif olarak listeler.
 
Örnek: ls -la → Gizli dosyalar dahil uzun formatta listeleme.

2. pwd (Çalışma Dizini)
Geçerli çalışma dizinini gösterir.
Temel Kullanım: pwd
Örnek çıktı: /home/user
Parametreler: Genellikle parametresiz kullanılır, ancak -L (mantıksal yol) veya -P (fiziksel yol) kullanılabilir.
Örnek: pwd -P → Sembolik bağlantılar çözülerek fiziksel dizin gösterilir.

3. cd (Dizin Değiştirme)
Dizinler arasında geçiş yapar.
Temel Kullanım: cd dizin_adi
Parametreli Kombinasyonlar:
- cd ..: Bir üst dizine geçer.
 - cd ~: Kullanıcının ev dizinine gider (/home/user).
 - cd /: Kök dizine gider.
 - cd -: Önceki dizine geri döner.
 - cd /path/to/dizin: Belirtilen tam yola gider.
 
Örnek: cd Documents → Documents dizinine geçiş.

4. sudo su (Yönetici Moduna Geçiş)
Root kullanıcısına geçiş yapar.
Temel Kullanım: sudo su
- Parola sorar ve root haklarıyla komut satırına geçiş sağlar.
 
Örnek: sudo su → Root kullanıcısına geçer ve komutlar root olarak çalıştırılır.

5. mkdir (Dizin Oluşturma)
Yeni bir dizin oluşturur.
Temel Kullanım: mkdir dizin_adi
Parametreler:
- mkdir -p: İç içe dizinler oluşturur (örneğin, mkdir -p dizin1/dizin2).
 
Örnek: mkdir test_dizin → test_dizin adında bir dizin oluşturur.

6. rmdir (Dizin Silme)
Boş dizinleri siler.
Temel Kullanım: rmdir dizin_adi
Not: Dizin boş değilse hata verir. Dolu dizinler için rm -r kullanılır.
Örnek: rmdir test_dizin → test_dizin adlı boş dizini siler.

7. touch (Dosya Oluşturma)
Boş bir dosya oluşturur veya mevcut dosyanın zaman damgasını günceller.
Temel Kullanım: touch dosya_adi
Örnek: touch test.txt → test.txt adında boş bir dosya oluşturur.

8. cat (Dosya İçeriğini Görüntüleme)
Dosya içeriğini terminalde gösterir.
Temel Kullanım: cat dosya_adi
Parametreler:
- cat -n: Satır numaralarını gösterir.
 
Örnek: cat test.txt → test.txt dosyasının içeriğini gösterir.

9. nano (Metin Editörü)
Terminal tabanlı bir metin editörüdür.
Temel Kullanım: nano dosya_adi
Dosyayı açar veya yeni bir dosya oluşturur.
Örnek: nano test.txt → test.txt dosyasını düzenlemek için açar.
Kısayollar:
- Ctrl+O: Kaydet
 - Ctrl+X: Çıkış
 - Ctrl+W: Arama
 


10. rm (Dosya/Dizin Silme)
Dosya veya dizinleri siler.
Temel Kullanım: rm dosya_adi
Parametreler:
- rm -r: Dosyaları ve içeriğini rekürsif olarak siler.
 - rm -f: Onay sormadan siler.
 - rm -rf: Dosyaları ve içeriğini onay sormadan siler (dikkatli kullanılmalı!).
 
Örnek: rm -rf text.txt→ text.txt ve içeriğini siler.

11. cp (Dosya/Dizin Kopyalama)
Dosya veya dizinleri kopyalar.
Temel Kullanım: cp kaynak hedef
Parametreler:
- cp -r: Dizinleri rekürsif olarak kopyalar.
 
Örnek: cp test.txt copy.txt → test.txt dosyasını test_kopya.txt olarak kopyalar.

12. mv (Dosya/Dizin Taşıma/Yeniden Adlandırma)
Dosya veya dizinleri taşır veya yeniden adlandırır.
Temel Kullanım: mv kaynak hedef
Örnek:
- mv test.txt yeni_test.txt → Dosyayı yeniden adlandırır.
 

- mv test.txt /home/user/dizin → Dosyayı belirtilen dizine taşır.
 

13. locate (Dosya Bulma)
Dosya sisteminde hızlı dosya araması yapar.
Temel Kullanım: locate dosya_adi
Not: Veritabanına dayalı çalışır, bu nedenle updatedb ile veritabanı güncellenmelidir.
Örnek: locate test.txt → test.txt dosyasının konumlarını listeler.

14. find (Dosya/Dizin Arama)
Dosya sisteminde detaylı arama yapar.
Temel Kullanım: find /dizin -name “dosya_adi”
Parametreler:
- -type f: Sadece dosyaları arar.
 - -type d: Sadece dizinleri arar.
 
Örnek: find /home -name “*.txt” → .txt uzantılı dosyaları arar.

15. cat ve grep Kombinasyonu
cat ile dosya içeriği görüntülenirken, grep ile belirli bir desen aranır.
Temel Kullanım: cat dosya_adi | grep desen
Örnek: cat /var/log/syslog | grep “error” → syslog dosyasında “error” kelimesini arar.

16. head (Dosyanın Başını Görüntüleme)
Dosyanın ilk satırlarını gösterir (varsayılan: 10 satır).
Temel Kullanım: head dosya_adi
Parametreler:
- head -n 5: İlk 5 satırı gösterir.
 
Örnek: head -n 3 test.txt → test.txt dosyasının ilk 3 satırını gösterir.

17. tail (Dosyanın Sonunu Görüntüleme)
Dosyanın son satırlarını gösterir (varsayılan: 10 satır).
Temel Kullanım: tail dosya_adi
Parametreler:
- tail -n 5: Son 5 satırı gösterir.
 - tail -f: Dosyayı gerçek zamanlı takip eder (log dosyaları için kullanışlı).
 
Örnek: tail -f test.txt→ syslog dosyasını gerçek zamanlı izler.

18. uname (Sistem Bilgisi)
Sistem bilgilerini gösterir.
Temel Kullanım: uname
Örnek çıktı: Linux
Parametreler:
- uname -a: Tüm sistem bilgilerini (çekirdek sürümü, hostname vb.) gösterir.
 
Örnek: uname -a → Çekirdek, sistem adı ve diğer detayları gösterir.

19. cat /etc/*-release
Sistem sürüm bilgilerini gösterir.
Temel Kullanım: cat /etc/*-release
Örnek: cat /etc/os-release → Kali Linux sürüm bilgilerini gösterir.

20. man ls (Komut Kılavuzu)
ls komutunun kılavuzunu gösterir.
Temel Kullanım: man ls
Örnek: man ls → ls komutunun detaylı açıklamasını açar.

21. ls — help
ls komutunun yardım bilgilerini gösterir.
Temel Kullanım: ls — help
Örnek: ls — help → ls komutunun parametrelerini ve açıklamalarını listeler.

22. sudo apt-get install (Paket Yükleme)
Paketleri yükler.
Temel Kullanım: sudo apt-get install paket_adi
Örnek: sudo apt-get install nmap → nmap aracını yükler.
Not : Komutları çalıştırıken bazen yetki hatasıyla karşılaşabiliriz.Bu durumlarda yukarıdaki gibi komutun başına sudo ekleyerek sorunu çözebilriz.

23. wget (Dosya İndirme)
URL’den dosya indirir.
Temel Kullanım: wget url
Örnek: wget https://www.exploit-db.com/exploits/48410 → Apache Shiro 1.2.4 — Cookie RememberME Deserial RCE (Metasploit) dosyasını indirir.


24. git clone (Depo Klonlama)
GitHub veya diğer Git depolarından klonlama yapar.
Temel Kullanım: git clone url
Örnek: git clone https://github.com/sadikcantuluk/sadik.git → Depoyu klonlar.


25. ifconfig (Ağ Arayüzü Bilgisi)
Ağ arayüzü bilgilerini gösterir.
Temel Kullanım: ifconfig
Örnek: ifconfig eth0 → eth0 arayüzünün bilgilerini gösterir.
Not: Modern sistemlerde ip addr tercih edilebilir.

26. id (Kullanıcı Bilgisi)
Geçerli kullanıcının kimlik bilgilerini gösterir.
Temel Kullanım: id
Örnek: id → Kullanıcı ID’si, grup ID’si ve diğer bilgileri gösterir.
Not: 1000 kodlu kullancıı en yetkili kullanıcıdır.

27. useradd -m (Kullanıcı Ekleme)
Yeni bir kullanıcı ekler ve ev dizini oluşturur.
Temel Kullanım: useradd -m kullanici_adi
Örnek: useradd -m testuser → testuser kullanıcısını oluşturur.

28. w (Aktif Kullanıcılar)
Sistemdeki aktif kullanıcıları gösterir.
Temel Kullanım: w
Örnek: w → Oturum açmış kullanıcıların detaylarını listeler.

29. who -a (Sistem Kullanıcı Bilgileri)
Sistemdeki kullanıcılar ve süreçler hakkında detaylı bilgi verir.
Temel Kullanım: who -a
Örnek: who -a → Tüm kullanıcı ve sistem bilgilerini gösterir.

30. last -a (Son Oturumlar)
Son oturum açma bilgilerini gösterir.
Temel Kullanım: last -a
Örnek: last -a → Son oturum açma kayıtlarını listeler.

31. ps -aux ve ps -ef (Çalışan Süreçler)
Sistemdeki çalışan süreçleri listeler.
Temel Kullanım:
- ps -aux: Tüm süreçleri detaylı listeler (kullanıcı, CPU, bellek vb.).
 - ps -ef: Tüm süreçleri farklı bir formatta listeler.
 
Örnek: ps -aux | grep firefox → Firefox süreçlerini listeler.

32. df -h (Disk Kullanımı)
Disk kullanımını insan okuyabilir formatta gösterir.
Temel Kullanım: df -h
Örnek: df -h → Disk alanını GB/MB cinsinden gösterir.

33. dirb (Web Dizin Taraması)
Web sunucularında dizin ve dosya taraması yapar.Bu şekilde yeni bir süreç de eklemiş oluruz.
Temel Kullanım: dirb http://hedef_url
Örnek: dirb https://sadikcantuluk.online/Blog üzerindeki dizinleri tarar.

34. sudo kill (Süreç Sonlandırma)
Belirtilen süreci sonlandırır.
Temel Kullanım: sudo kill pid
Parametreler:
- kill -9: Zorla sonlandırma.
 
Örnek: sudo kill -9 8932→ PID’si 1234 olan süreci sonlandırır.

35. chmod (Dosya İzinleri Değiştirme)
Dosya veya dizin izinlerini değiştirir.
Temel Kullanım: chmod mod dosya_adi
Örnek: chmod 755 script.sh → script.sh dosyasına çalıştırma izni verir.

36. chown (Dosya Sahipliği Değiştirme)
Dosya veya dizinlerin sahibini değiştirir.
Temel Kullanım: chown kullanici dosya_adi
Örnek: chown user test.txt → test.txt dosyasının sahibini user yapar.


37. top (Sistem İzleme)
Sistem kaynaklarını ve çalışan süreçleri gerçek zamanlı izler.
Temel Kullanım: top
Örnek: top → CPU, bellek ve süreç kullanımını gösterir.

38. netstat (Ağ Bağlantıları)
Ağ bağlantılarını ve istatistikleri gösterir.
Temel Kullanım: netstat -tulnp
Örnek: netstat -tulnp → Aktif TCP/UDP bağlantılarını ve süreçleri listeler.

Bu rehber, Kali Linux’ta temel komutların kullanımını ve parametrelerini kapsamlı bir şekilde açıklamaktadır. Bu komutlar, sistem yönetimi, dosya işlemleri, ağ analizi ve güvenlik testleri gibi çeşitli görevler için temel oluşturur. Kali Linux’un güçlü araç setini etkili bir şekilde kullanmak için bu komutlara hakim olmak önemlidir.
Nmap ile Basit Port Taraması
Nmap (Network Mapper), bir ağ üzerindeki cihazları keşfetmek ve bu cihazların hangi servisleri (örneğin web, dosya paylaşımı, uzak erişim vb.) çalıştırdığını tespit etmek için kullanılan açık kaynak kodlu bir ağ tarama aracıdır.
Hackerlar, siber güvenlik uzmanları ve ağ yöneticileri tarafından sıkça kullanılır. Bir cihazın hangi portlarının açık olduğunu ve bu portlarda hangi servislerin çalıştığını gösterir.
Nmap Kurulumu

Yüklü olup olmadığını kontrol etmek için:

Bir cihazı taramak için onun IP adresine ihtiyacımız var.
Terminale şu komutlardan birini yaz: “ip a” veya “ifconfig”
IP adresin genellikle 192.168.x.x veya 10.x.x.x şeklinde olur.

Nmap ile Temel Taramalar
-sS — SYN Tarama (Yarı Açık Tarama)
- Bu tarama, TCP bağlantısının ilk adımı olan SYN paketini gönderir.
 - Hedef sistem bağlantıyı kabul ederse, portun açık olduğunu anlarız.
 - Ancak bağlantıyı tamamlamadan durduğu için gizli (stealth) tarama olarak bilinir.
 - Root (sudo) yetkisi gerekir.
 

-sT — TCP Connect Tarama (Tam Açık Tarama)
- SYN → SYN/ACK → ACK üçlü el sıkışması tamamlanır.
 - Hedefle gerçek bir bağlantı kurar.
 - Root yetkisi gerekmez.
 - Daha kolay fark edilir (loglara düşer).
 

-p- — Tüm Portları Tara (1-65535)
- Nmap varsayılan olarak ilk 1000 portu tarar.
 - Ancak bazı servisler daha farklı portları kullanabilir.
 -p-parametresi ile tüm 65535 portu tararız.

-O — İşletim Sistemi Tanıma
- Nmap, açık portlardan ve paket cevaplarından yola çıkarak hedefin işletim sistemini tahmin etmeye çalışır.
 - Yüzdeyle birlikte Linux, Windows vb. bilgileri verir.
 - Root yetkisi gerekir.
 

Netcat (nc) ile Basit Bağlantı Denemeleri
Netcat, “ağ dünyasının İsviçre çakısı” olarak bilinen, hem istemci hem sunucu gibi çalışabilen çok yönlü bir araçtır.
- Açık bir port üzerinden veri gönderebilir veya alabilir.
 - Hızlıca port dinleyebilir veya tarayabilir.
 - Temel bir TCP/UDP bağlantısı kurabilir.
 
Netcat Kurulumu
“ sudo apt install netcat ”
Yüklü olup olmadığını kontrol etmek için:
“ nc -h ”

Netcat ile bir portu dinleyip başka bir terminalden bu porta bağlantı kurabiliriz. Bu, en temel bağlantı testidir.
🟢 A. “Sunucu” Rolü: Dinleme (Port Açma)
Açıklama:
-l: listen (dinle)-v: verbose (ayrıntılı bilgi)-p 1234: 1234 numaralı portu dinle

Netcat şu anda 1234 numaralı portu dinliyor.
🔵 B. “İstemci” Rolü: Bağlantı Kurma
Yeni bir terminal aç ve şu komutu yaz:
“ nc 10.0.2.9 1234 “ 10.0.2.9 yerine kendi ip bilgini yaz.

🗨️ C. İletişim
Bağlantı kurulduktan sonra:
- Bir terminalden yazı yaz ve ENTER’a bas.
 - Diğer terminalde yazdığın mesaj görünür.
 
Bu yöntemle iki terminal arasında metin alışverişi yapılabilir.


Domain Bilgi Toplama: whois, dig ve nslookup Komutlarıyla Uygulama
Whois Komutu ile Domain Kayıt Bilgisi Öğrenme
Whois, bir alan adının kime ait olduğunu, kayıt tarihini, kayıtlı kişi/kurum bilgilerini ve diğer kayıt detaylarını gösteren araçtır.
Kullanımı:
whois example.com
Örnek:

Dig Komutu ile DNS Kayıtlarını Öğrenme
Dig (Domain Information Groper), DNS kayıtlarını sorgulamak için kullanılan güçlü bir araçtır.
Kullanımı:
dig example.com
Örnek:

Nslookup Komutu ile DNS Çözümleme
Nslookup, bir alan adının IP adresini veya tam tersi IP adresinden alan adını öğrenmek için kullanılır.
Kullanımı:
nslookup example.com
Örnek:
