Hoşgeldin Misafir

Sıfırdan Etik Network Penetration Testing Öğreniyorum - Bölüm 2: Linux Komut Satırı Temelleri

YARBAY

28 Haz 2025
1,341 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:

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.

ttlf54x.png


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
cd (Change Directory): Dizin değiştirme.

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:
  1. Owner (sahip)
  2. Group (grup)
  3. Others (diğerleri)
Her grup için 3 izin:
  • r (read): okuma (4)
  • w (write): yazma (2)
  • x (execute): çalıştırma (1)
chmod (Change Mode): İzinleri değiştirir.

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:
  1. nano system_info.sh ile dosyayı oluştur, yukarıdaki içeriği tek tek kendin yaz. Copy - Paste Yasak :)
  2. chmod +x system_info.sh ile çalıştırılabilir yap
  3. ./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

  1. Terminali açın ve mkdir penetration_lab komutu ile yeni bir dizin oluşturun.
  2. Bu dizine girin ve touch target1.txt target2.txt scan1.txt ile 3 dosya oluşturun.
  3. ls -la ile dosyaları listeleyin.
  4. cat > target1.txt yazıp Enter'a basın, içine 192.168.1.1 yazın, Ctrl+D ile kaydedip çıkın.
  5. ip addr show > network_info.txt ile ağ bilgilerinizi dosyaya kaydedin.
  6. cat network_info.txt | grep inet ile sadece IP satırlarını görün.
  7. 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

  1. "Permission denied": Root değilsiniz veya izniniz yok. sudo ile çalıştırın veya chmod ile izin verin.
  2. "Command not found": Komut yüklü değil veya yanlış yazdınız. apt install [komut] ile yükleyin.
  3. "No such file or directory": Dizin/dosya yolu yanlış. pwd ile nerede olduğunuza bakın, ls ile dosyaları kontrol edin.
  4. "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 🫡