Terminal ve Ağ Araçları Cheatsheet: Günlük Güvenlik İş Akışı
Günlük güvenlik çalışmalarında terminal, ağ gözlemi ve dokümantasyon için kullanılan temel araç kategorileri.
Terminal ve Ağ Araçları Cheatsheet#
Güvenlik çalışmalarında araç bilgisi önemlidir, fakat asıl değer hangi aracı ne zaman kullanacağını bilmektir. Bu cheatsheet, günlük iş akışında sık kullanılan araç kategorilerini güvenli ve düzenli bir çerçevede özetler.
Cheatsheet'in amacı; bir operatörün sabah kahvesini alırken başvurabileceği, kapsam, hız ve loglama disiplinini hatırlatan bir çalışma kağıdı olmaktır.
Threat Model: Operatör Neye Karşı Sorumlu?#
Bir güvenlik operatörü üç hatadan sorumludur:
- Yanlış hedefe trafik: kapsam dışı bir IP'ye yanlışlıkla paket göndermek.
- Kendi ağını tıkamak: yüksek hızlı taramayla servis düşürmek.
- Kanıtsız bulgu: tekrar üretilemeyen bir iddiayı rapora koymak.
Bu yüzden her komut üç şeyi taşısın: kapsam, hız, çıktı yolu.
nmap -sV --top-ports 100 -T3 -oA scans/target-$(date +%F) target # ^^^^ hız: T3 ^^^ kapsam: top-ports 100 # ^^^ çıktı yolu: scans/
Trust Boundaries: Hangi Ağda Ne Çalışır?#
[kendi cihazın] --(1)--> [internet] --(2)--> [hedef] | |--(3)--> [iç ağ / VPN'e bağlı yerel servisler]
Üç sınır; üç kural:
- Kamu internetine giden trafik: açıkça izinli, yetkili, kısa süreli.
- Hedefin yanıtı: güvenilir kabul etme; sanitization yap.
- İç ağa yapılan tarama: iş saatlerinde, ekip bilgilendirilerek, rate limit ile.
Sınır ötesi bir komut çalıştırmadan önce pwd ve ip a çıktısından bulunduğun ağı doğrulamak iyi bir alışkanlıktır.
1. Keşif ve Envanter#
İlk hedef, hangi varlıkların bulunduğunu anlamaktır. Bu aşamada amaç sistemi zorlamak değil, görünür yüzeyi belgelemektir.
Kullanım alanları:
- Alan adı ve alt alan adı envanteri
- Açık servislerin listelenmesi
- Sertifika ve DNS kayıtlarının kontrolü
- Bulut varlıklarının sahiplik eşlemesi
Çıktı mutlaka bir tabloya dönmelidir. Dağınık terminal çıktısı, sonraki adımlarda karar vermeyi zorlaştırır.
Tipik komutlar:
# Alt alan adı keşfi (pasif) subfinder -d example.com -silent -o subs.txt # Açılan HTTP servisleri httpx -l subs.txt -status-code -title -tech-detect -o live.txt # Hızlı port taraması masscan -p1-65535 --rate 1000 example.com -oG masscan.txt # Derinlemesine servis bilgisi nmap -sV -sC -p 80,443,8080 example.com -oN nmap-example.txt
-oN, -oX, -oG gibi çıktı formatlarını ilk günden standartlaştır; sonraki raporlamada grep ve jq ile birleştirilebilir.
2. Trafik Gözlemi#
Trafik gözlemi, uygulamanın veya ağın nasıl konuştuğunu anlamaya yarar. Wireshark, tcpdump ve proxy tabanlı araçlar bu aşamada kullanılır.
Not edilmesi gerekenler:
| Gözlem | Neden önemli? |
|---|---|
| Protokol | Trafiğin şifreli olup olmadığını gösterir |
| Kaynak/hedef | Hangi sistemlerin konuştuğunu gösterir |
| Hata kodları | Yanlış yapılandırmaları işaret edebilir |
| Tekrar eden istekler | Performans veya güvenlik etkisi doğurabilir |
tcpdump ile minimal yakalama:
sudo tcpdump -i eth0 -nn -s0 -w capture.pcap host example.com and port 443
Yakalama dosyalarını açık bırakma; içerikleri hassas veri içerebilir. PCAP'i şifreli kanalda sakla ve erişim log'u tut. tshark ile özet çıkarmak sonrasını kolaylaştırır:
tshark -r capture.pcap -Y "tls.handshake.type == 1" \ -T fields -e ip.dst -e tls.handshake.extensions_server_name | sort | uniq -c
3. Günlük ve Kanıt Yönetimi#
Bir bulgunun değeri, tekrar edilebilir kanıtıyla artar. Terminal çıktısını rastgele kopyalamak yerine tarih, komut, kapsam ve sonuç birlikte saklanmalıdır.
Basit format:
Tarih: Kapsam: Komut/araç: Amaç: Özet sonuç: Ekran görüntüsü veya çıktı yolu:
Bu düzen, hem rapor yazmayı hem de bulguyu doğrulamayı kolaylaştırır.
Kanıt zinciri (chain of custody) için üç kural:
- Her kanıt dosyasının
sha256sumdeğerini not et. - Kanıtı read-only sakla (
chmod 444). - İlk bulgu ile rapor arasındaki değişiklikleri tek bir "evidence log" dosyasında tut.
4. Güvenli Otomasyon#
Otomasyon zamandan kazandırır ama kontrolsüz çalışırsa zarar verir. Script yazarken varsayılan olarak düşük hız, net kapsam ve açık loglama kullanın.
İyi otomasyon şu özellikleri taşır:
- Kapsam dosyasını açık ister
- Hata durumunda durur
- Çıktıyı yapılandırılmış formatta üretir
- Aynı hedefe aşırı istek göndermez
- Çalışma zamanını ve sürüm bilgisini kaydeder
Örnek bir skeleton (Python):
import argparse, json, subprocess, datetime p = argparse.ArgumentParser() p.add_argument('--scope', required=True) p.add_argument('--rate', type=int, default=50) args = p.parse_args() with open(args.scope) as f: targets = [l.strip() for l in f if l.strip()] run = { 'started_at': datetime.datetime.utcnow().isoformat() + 'Z', 'rate': args.rate, 'targets': targets, 'results': [], } # hedefler üzerinde düşük hızlı döngü with open(f'run-{args.started_at if False else "out"}.json', 'w') as f: json.dump(run, f, indent=2)
argparse --scope ile kapsamı açık almadan çalışan bir otomasyon, kaza ile üretim hedefine dönebilir. Kapsam dosyası boşsa betiğin kendini kapatması iyi bir defanstir.
5. Proxy ve El İşi Araçlar#
Günlük çalışmada sık kullanılan birkaç araç:
- curl: HTTP'yi anlamak için neredeyse her şeyin altında.
-ibaşlıkları,-vverbose,--resolveDNS override. - ffuf/gobuster: dizin ve vhost fuzzing; kapsam dosyasını
-wile değil, hedef listesiyle beslemek daha kontrollüdür. - jq: JSON API yanıtlarını boru hattında dönüştürür;
httpx -jsonile birlikte güçlüdür. - dig/nslookup: DNS envanteri;
+shortfor quick grepler. - openssl s_client: sertifika zinciri ve TLS versiyon kontrolü;
s_client -connect example.com:443 -servername example.com.
Her araç için --help çıktısını bir kez oku; sık kullanılan iki flag'i alias olarak ~/.zshrc veya ~/.bashrc içine yaz.
6. Gözlem -> Bulgu -> Rapor Akışı#
[pcap / nmap / screenshot] | v evidence.log (sha256 + açıklama) | v bulgu dosyası: markdown | v rapor: yönetici özeti + teknik detay
Her ok, bir "el değişimidir"; sahibi ve zamanı not edilmemiş bir ok, raporda kırık bırakır.
Version Differences: Önemli Sürüm Farkları#
- nmap 7.x:
-sVversion detection,-sCdefault scripts; 7.80+ ile yeni NSE scriptleri. - masscan: hızlı port keşfi;
--rateyanlış ayarlanırsa yerel güvenlik duvarları otomatik inatlaşır. - tshark 4.x: Wireshark 4.0 sonrası çıktı formatı sık update'ler; eski 3.x script'lerinde
-T jsonçıktı yapısı aynı kalır ama bazı field isimleri değişebilir. - curl 8.x: HTTP/3 desteği varsayılan optional;
--http3flag'i build'a bağlı. Sunucunun HTTP/3 desteklediğinicurl -I --http3 https://example.comile kontrol et. - OpenSSL 3.x: legacy algoritmalar (RC4, eski cipher'lar) varsayılan olarak devre dışı; eski bir hedefle konuşurken hata almak şaşırtıcı olmasın.
- tcpdump: modern sürümlerde
-nnhost/port çözümlemeyi kapatır; eski alışkanlıkta-neksik kalabilir,-nnkullan.
Komutun sürümünü her zaman not et: nmap --version, tshark --version, curl --version. Çıktının en üstüne yapıştırmak, raporda neye bakıldığını netleştirir.
Detection ve Mitigation Workflow#
Bir keşif bulgusunu kapatırken şu sırayı izle:
[Bulgu] -> [Doğrula] -> [Tehdit?] -> [Düzeltme planı] -> [Re-test] -> [Kapat] | +-- [Ara ölçüm: log / alert]
- Doğrula: aynı komutla tekrar üret, mümkünse başka bir operatör.
- Tehdit?: iç ağdan mı, dıştan mı, ön koşul gerekir mi?
- Düzeltme planı: en küçük değişiklik, rollback adımlarıyla.
- Re-test: aynı değilse, daha geniş bir kapsamla regresyon testi.
- Kapat: kanıtı arşivle, commit hash'ini yaz.
Sonuç#
Terminal araçları tek başına güvenlik programı oluşturmaz. Doğru değer; keşif, gözlem, kanıt ve otomasyonu tekrarlanabilir bir iş akışına bağlayınca ortaya çıkar. Her komutun yanına üç bilgi yaz: neden, nerede, neyle doğrulandı. Bu alışkanlık, altı ay sonra bile kendi bulgunu anlamanı sağlar.
Sürüm Notları: Hızlı Referans#
| Araç | Sürüm farkı | Pratik not |
|---|---|---|
| nmap | 7.x | -Pn no ping, -sV version, -sC default scripts |
| masscan | 1.x | --rate ile ayarla; TSO/GSO etkilerini ölç |
| tshark | 4.x | field isimleri değişebilir; -G fields ile kontrol |
| curl | 8.x | HTTP/3 --http3; -k devre dışı TLS doğrulamasını açar |
| openssl | 3.x | legacy cipher'lar default off |
| tcpdump | 4.x | -nn her zaman; -s0 full snaplen |
| ffuf | 2.x | JSON çıktı -of json; recursive -recursion |
| httpx | 1.x | -json ile pipeline; -mc 200,301 |
Bu tablo, kendi cheatsheet'in başına kopyala; yeni sürüm kurduğunda sağ sütunu güncelle.
Komut Şablonları#
# TLS versiyonu kontrolü openssl s_client -connect example.com:443 -tls1_2 </dev/null 2>&1 | grep -i cipher # DNS envanteri dig example.com ANY +noall +answer dig +short TXT example.com # Sertifika özeti echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \ | openssl x509 -noout -dates -subject -issuer # JSON API quick smoke curl -sS -H 'Accept: application/json' https://example.com/api/health | jq . # Hızlı dizin keşfi (lab hedefe) ffuf -u http://target/FUZZ -w common.txt -mc 200,301,302 -t 20 -o out.json -of json
Her satır çalıştırılmadan önce hedefin scoping belgesiyle eşleşmeli. Kapsam dışı hedefte ffuf koşturmak, yarım saat emek tasarrufundan daha büyük bir problemi tetikler.
Log ve Alarm Döngüsü#
Operasyon disiplininin bel kemiği şudur:
[komut] -> [çıkış] -> [kanıt dosyası] -> [not] -> [bulgu?] -> [rapor]
Her ok bir disiplindir; bir ok kaçarsa kanıt zinciri kopar. "Sonra kaydederim" yaklaşımıyla çalışan hiçbir operatör uzun vadede güvenilir bulgu üretemez.
Örnek Günlük Akış#
09:00 kapsam dosyasını kontrol et, yeni hedef eklendi mi 09:15 pasif keşif: subfinder + crt.sh 10:00 canlı HTTP envanteri: httpx 11:00 nmap -sV top 100 port, T3 hız 12:00 öğlen: log'u gözden geçir, gereksiz alert'i ayırt et 14:00 ffuf ile dizin keşfi (scope içi) 15:00 tcpdump ile ilginç akışı yakalar -> tshark ile özet 16:00 bulgu formu: tarih, komut, kanıt, etki 17:00 gün sonu: rapor iskeletini yaz, ertesi güne not bırak
Bu akış bir şablon; her gün birebir aynısını uygulamak zorunda değilsin. Ama akışsız bir gün geçirmemeye çalış.
Sonuç: Cheatsheet'i Sabit Tutma#
Cheatsheet'in kendisi canlı bir dosyadır. Her yeni öğrendiğin komutu ekle, kullanmadığını sil. Üç ayda bir dosyayı baştan sona oku; bir kısmını unuttuysan ya unutulmuş ya da değerli değildir. Değerli olan, belleğinde kalmayı hak eder; değersiz olan, komut geçmişinden silinmelidir.
Hızlı Sürüm Kontrol Komutları#
nmap --version | head -1 tshark --version | head -1 curl --version ffuf -V httpx -version openssl version tcpdump --version
Çıktıyı evidence/YYYY-MM-DD/env.txt altına yapıştır; sonradan "o bulgu hangi sürümde üretildi" sorusuna tek satırda cevap verilir.
Ne düşünüyorsun?
Tepki bırakarak geri bildirim ver