SelamünAleyküm Dostlar
Birinci bölümde etik hacking'in ne olduğunu, neden öğrenmemiz gerektiğini ve genel metodolojiyi konuştuk. Şimdi asıl işe koyulma zamanı! Bu bölümde Linux komut satırı temellerini öğreneceğiz.
Neden mi? Çünkü Kali Linux ve diğer penetration testing dağıtımları Linux tabanlı, ve bu dünyada "siyah ekran" (terminal) olmadan hiçbir şey yapamazsınız. Terminal sizin en yakın arkadaşınız olacak.
Bu seride yasal uyarıyı her defasın da dile getireceğim:
Bu seride gösterilen tüm komutlar ve teknikler sadece kendi laboratuvar ortamınızda veya açıkça yazılı izin verilen sistemlerde kullanılmalıdır.
İzinsiz erişim, tarama veya test yapmak TCK 243-244. maddelere göre suçtur.
Lütfen etik ve yasal sınırlar içinde kalın.
Neden Linux ve Terminal Bu Kadar Önemli?
Penetration testing dünyasında %90'dan fazla araç Linux'ta çalışır. Kali Linux, Parrot Security, BlackArch gibi özel dağıtımlar tüm araçları hazır sunar.Windows'ta GUI (grafik arayüz) varken, Linux'ta terminal ile çok daha hızlı, güçlü ve otomatize işlemler yapabilirsiniz.
Ayrıca çoğu sunucu Linux olduğu için, onları anlamak için de Linux bilmek şart.
Temel Terminal Kavramları
Terminal (veya console): Komutları yazdığımız metin tabanlı arayüz.Shell: Komutları yorumlayan program (Bash, Zsh, Fish gibi). Kali Linux'ta genelde Bash kullanılır.
Komut: root@kali:~# gibi görünen, komut bekleyen satır.
Burada:
- root: kullanıcı adı
- kali: makine adı
- ~: bulunulan dizin (~ ev dizini demek yani /home/yarbay )
- #: root (yönetici) kullanıcı olduğunu gösterir (normal kullanıcıda $ olur)
Temel Linux Komutları Kategorileri
1. Dosya Sistemi Gezintisi
pwd (Print Working Directory): Hangi dizinde olduğunuzu gösterir.
Kod:
pwd
# /home/kali (örnek çıktı, sizin bulunduğunuz dizini gösterir)
ls (List): Dizindeki dosya ve klasörleri listeler.
Kod:
ls
# Dosya ve klasör isimlerini listeler
Kod:
ls -la
# -l: detaylı liste (izinler, boyut, tarih)
# -a: gizli dosyaları da gösterir (nokta ile başlayanlar)
Detaylı çıktıda şöyle görünür:
Kod:
drwxr-xr-x 2 kali kali 4096 Şub 9 10:30 Desktop
-rw-r--r-- 1 kali kali 123 Şub 1 09:20 not.txt
- İlk karakter: d = dizin, - = dosya, l = link
- Sonraki 9 karakter: izinler (rwx: read, write, execute)
- Sayı: hard link sayısı
- İki kali: sahibi ve grubu
- 4096: boyut
- Tarih: son değiştirilme
- Son: isim
Kod:
cd /etc
# /etc dizinine geçer
Kod:
cd ..
# Bir üst dizine çıkar
Kod:
cd ~
# Ev dizinine (/home/kali) döner
Kod:
cd -
# Bir önceki dizine döner
tree: Dizin yapısını ağaç şeklinde gösterir.
Kod:
tree -L 2
# -L 2: 2 seviye derinlikte göster
2. Dosya ve Dizin İşlemleri
mkdir (Make Directory): Yeni dizin oluşturur.
Kod:
mkdir penetration_testing
# penetration_testing adında dizin oluşturur
Kod:
mkdir -p lab/network/scans
# -p: ara dizinleri de oluşturur (parent)
touch: Boş dosya oluşturur veya dosyanın tarihini günceller.
Kod:
touch targets.txt scan_results.txt
# İki boş dosya oluşturur
cp (Copy): Kopyalama.
Kod:
cp file1.txt file2.txt
# file1.txt'i file2.txt olarak kopyalar
Kod:
cp -r directory1/ directory2/
# -r: dizini ve içindekileri rekürsif kopyalar
mv (Move): Taşıma veya yeniden adlandırma.
Kod:
mv old_name.txt new_name.txt
# Dosyayı yeniden adlandırır
Kod:
mv file.txt /tmp/
# Dosyayı /tmp/ dizinine taşır
rm (Remove): Silme.
Kod:
rm unwanted_file.txt
# Dosyayı siler
Kod:
rm -r old_directory/
# -r: dizini ve içindekileri siler
Kod:
rm -rf force_delete/
# -f: onay sormadan zorla siler (ÇOK TEHLİKELİ!)
cat (Concatenate): Dosya içeriğini gösterir.
Kod:
cat /etc/passwd
# /etc/passwd dosyasının içeriğini gösterir
Kod:
cat file1.txt file2.txt > combined.txt
# İki dosyayı birleştirip combined.txt'ye yazar
less / more: Dosyayı sayfa sayfa gösterir.
Kod:
less large_file.log
# Ok tuşlarıyla ileri geri gidebilirsiniz, çıkmak için 'q'
head / tail: Dosyanın başını veya sonunu gösterir.
Kod:
head -n 20 access.log
# İlk 20 satırı gösterir
Kod:
tail -f live_log.log
# -f: dosyaya eklenen yeni satırları anlık gösterir (log takibi için harika)
nano / vim: Metin editörleri.
Kod:
nano targets.txt
# Nano editor ile dosyayı açar (başlangıç için daha kolay)
Kod:
vim script.py
# Vim editor ile açar (daha güçlü ama öğrenmesi zaman alır.Bu yüzden vim tek başına ayrı bir konu.)
Nano'da çıkmak için: Ctrl+X, kaydetmek için Y ve Enter
3. Dosya İzinleri (Permissions)
Linux'ta her dosyanın izinleri vardır. 3 grup var:- Owner (sahip)
- Group (grup)
- Others (diğerleri)
- r (read): okuma (4)
- w (write): yazma (2)
- x (execute): çalıştırma (1)
Kod:
chmod 755 script.sh
# 7: owner için rwx (4+2+1)
# 5: group için r-x (4+0+1)
# 5: others için r-x (4+0+1)
Kod:
chmod +x executable_file
# Tüm kullanıcılar için execute izni ekler
chown (Change Owner): Sahibini değiştirir.
Kod:
chown root:root file.txt
# Sahibini ve grubunu root yapar
Kod:
chown kali file.txt
# Sadece sahibini kali yapar
4. Sistem Bilgisi ve Proses Yönetimi
uname: Sistem bilgisi.
Kod:
uname -a
# Tüm sistem bilgisi: kernel, işlemci, vs.
whoami: Hangi kullanıcı olduğunuzu gösterir.
Kod:
whoami
# root veya kali gibi çıktı verir
ps (Process Status): Çalışan prosesleri gösterir.
Kod:
ps aux
# Tüm prosesleri detaylı gösterir
# a: tüm kullanıcıların prosesleri
# u: kullanıcı bazlı format
# x: terminale bağlı olmayan prosesler
top / htop: Anlık proses izleme.
Kod:
top
# CPU, RAM kullanımı ve prosesleri gösterir, çıkmak için 'q'
Kod:
htop
# Daha renkli ve interaktif versiyonu (yüklemek gerekebilir: apt install htop)
kill / pkill: Proses durdurma.
Kod:
kill 1234
# PID'si 1234 olan prosesi durdurur
Kod:
kill -9 1234
# -9: Zorla durdurur (SIGKILL)
Kod:
pkill firefox
# firefox adındaki tüm prosesleri durdurur
5. Ağ Komutları
ip addr: Ağ arabirim bilgisi.
Kod:
ip addr show
# Tüm ağ arabirimlerini gösterir (eth0, wlan0, lo, vs.)
ping: Hedefe ICMP paketi gönderir.
Kod:
ping 8.8.8.8
# Google DNS'e ping atar
# -c 4: sadece 4 paket gönder: ping -c 4 8.8.8.8
netstat: Ağ bağlantılarını gösterir.
Kod:
netstat -tulpn
# -t: TCP bağlantıları
# -u: UDP bağlantıları
# -l: listening (dinlenen) portlar
# -p: proses isimleri
# -n: sayısal adresler
ss: Netstat'ın modern versiyonu.
Kod:
ss -tulpn
# Daha hızlı çalışır
curl / wget: Web içeriği indirme.
Kod:
curl https://example.com
# Sayfa içeriğini terminalde gösterir
Kod:
wget https://example.com/file.zip
# Dosyayı indirir
6. Paket Yönetimi (Kali Linux - Debian Tabanlı)
apt (Advanced Package Tool): Paket yönetimi.
Kod:
apt update
# Paket listesini günceller
Kod:
apt upgrade
# Tüm paketleri günceller
Kod:
apt install nmap
# nmap paketini yükler
Kod:
apt remove nmap
# nmap paketini kaldırır
Kod:
apt search "penetration"
# Penetration kelimesi geçen paketleri arar
7. Dosya Arama
find: Dosya arama.
Kod:
find / -name "*.conf" 2>/dev/null
# Kökten başlayarak .conf uzantılı dosyaları arar
# 2>/dev/null: hataları gizler
Kod:
find /home/kali -type f -size +1M
# /home/kali'de 1MB'tan büyük dosyaları bulur
grep (Global Regular Expression Print): Metin arama.
Kod:
grep "password" /var/log/auth.log
# auth.log'da password geçen satırları bulur
Kod:
grep -r "192.168.1" /etc/
# -r: rekürsif olarak /etc/ altında 192.168.1 arar
Kod:
ps aux | grep python
# | (pipe): sol tarafın çıktısını sağ tarafa gönderir
# python proseslerini bulur
8. Yardım Alma
man (Manual): Kullanım kılavuzu.
Kod:
man ls
# ls komutunun tüm seçeneklerini gösterir
--help: Hızlı yardım.
Kod:
ls --help
# ls için kısa yardım
whatis: Komutun ne işe yaradığını kısaca açıklar.
Kod:
whatis nmap
# "nmap - network exploration tool and security scanner" gibi çıktı verir
Öğrendiklerimizle Pratik için Basit Bilgi Toplama Script'i Yazalım
Şimdi öğrendiklerimizi kullanarak basit bir sistem bilgi toplama script'i yazalım:
Kod:
#!/bin/bash
# Bu bir bash script'i, yorum satırları # ile başlar
echo "=== SİSTEM BİLGİLERİ ==="
echo "Tarih ve Saat:"
date # Sistem tarih ve saatini gösterir
echo ""
echo "Kullanıcı Bilgisi:"
whoami # Hangi kullanıcı olduğumuzu gösterir
echo ""
echo "Bulunulan Dizin:"
pwd # Hangi dizinde olduğumuzu gösterir
echo ""
echo "Ağ Arabirimleri:"
ip addr show | grep inet # Sadece IP adreslerini göster
echo ""
echo "Disk Kullanımı:"
df -h # Disk kullanımını insan tarafından okunabilir şekilde göster
echo ""
echo "Bellek Kullanımı:"
free -h # Bellek kullanımını göster
echo ""
echo "Çalışan Servisler (ilk 10):"
netstat -tulpn | head -n 15 # Dinlenen portların ilk 15'ini göster
Bu script'i çalıştırmak için:
- nano system_info.sh ile dosyayı oluştur, yukarıdaki içeriği tek tek kendin yaz. Copy - Paste Yasak
- chmod +x system_info.sh ile çalıştırılabilir yap
- ./system_info.sh ile çalıştır
Terminal Püf Noktaları
Tab tuşu: Otomatik tamamlama yapar. cd /e yazıp Tab'a basarsanız /etc/ olur.Ok tuşları: Yukarı/ok: önceki komutlar, aşağı ok: sonraki komutlar.
Ctrl+C: Çalışan komutu durdurur.
Ctrl+D: Terminali kapatır veya oturumu sonlandırır.
Ctrl+Z: Çalışan komutu arka plana atar (geri getirmek için fg).
Ctrl+R: Komut geçmişinde arama yapar.
!!: Son komutu tekrar çalıştırır.
!n: History'de n. komutu çalıştırır.
alias: Komutlara takma ad verir.
Kod:
alias ll='ls -la'
# Artık ll yazınca ls -la çalışır
history: Komut geçmişini gösterir.
Kod:
history
# Tüm komut geçmişini gösterir
Kod:
history | grep nmap
# Geçmişte nmap geçen komutları bulur
Pratiklik için Bu Egzersizleri Yap
- Terminali açın ve mkdir penetration_lab komutu ile yeni bir dizin oluşturun.
- Bu dizine girin ve touch target1.txt target2.txt scan1.txt ile 3 dosya oluşturun.
- ls -la ile dosyaları listeleyin.
- cat > target1.txt yazıp Enter'a basın, içine 192.168.1.1 yazın, Ctrl+D ile kaydedip çıkın.
- ip addr show > network_info.txt ile ağ bilgilerinizi dosyaya kaydedin.
- cat network_info.txt | grep inet ile sadece IP satırlarını görün.
- ps aux | grep -v root | head -n 10 ile root olmayan proseslerin ilk 10'unu görün.
Sık Karşılaşılan Hatalar ve Çözümleri
- "Permission denied": Root değilsiniz veya izniniz yok. sudo ile çalıştırın veya chmod ile izin verin.
- "Command not found": Komut yüklü değil veya yanlış yazdınız. apt install [komut] ile yükleyin.
- "No such file or directory": Dizin/dosya yolu yanlış. pwd ile nerede olduğunuza bakın, ls ile dosyaları kontrol edin.
- "Argument list too long": Çok fazla dosya ile işlem yapmaya çalışıyorsunuz. find veya xargs kullanın.
Sonraki Bölümde Bizi Neler Bekliyor?
Bir sonraki bölümde Windows komut satırı ve PowerShell temellerini işleyeceğiz.Neden Windows?
Çünkü hedef sistemlerin çoğu Windows olacak ve Active Directory, Windows exploitation için PowerShell bilmek şart. Ayrıca PowerShell artık bir penetration testing aracı haline geldi.
Linux terminaline alışmak zaman alır. Her gün 15-20 dakika pratik yapın. Komutları ezberlemeye çalışmayın, sürekli kullanın.
Unuttuğunuzda man veya --help kullanın.
Not:
- Bu serideki tüm uygulamaları kendi sanal lab'ınızda yapın.Gerçek sistemlerde DENEMEYİN.
- Mümkünse öğrenmek için gidin forumda LINUX bölümü altında diğer kardeşlerimizin konularını okuyun.
Sağlıcakla Kalın. Bir sonraki bölümde görüşmek üzere




