netstat ve TCPView ile Şüpheli Bağlantı Tespiti
Bir sabah işe geldiniz, sunucularınızdan birinin gecenin üçünde aniden ağ trafiğini ikiye katladığını görüyorsunuz. Kimse o saatte çalışmıyor, hiçbir yedekleme planlanmamış. Ne yaparsınız? İşte tam bu noktada netstat ve TCPView gibi araçlar hayat kurtarıcı oluyor. Bu yazıda Windows ortamında şüpheli ağ bağlantılarını nasıl tespit edeceğinizi, hangi sinyallere dikkat etmeniz gerektiğini ve gerçek saldırı senaryolarında bu araçları nasıl kullanacağınızı ele alacağız.
Neden Bağlantı Takibi Bu Kadar Önemli?
Modern saldırıların büyük çoğunluğu ağ bağlantısı gerektirir. Bir zararlı yazılım sisteminize sızdıktan sonra mutlaka bir komuta kontrol (C2) sunucusuna bağlanmaya çalışır. Veri sızdırma işlemleri bir dış adrese giden bağlantı açar. Ransomware şifreleme anahtarlarını uzak bir sunucudan alır. Tüm bu aktiviteler ağ katmanında iz bırakır ve doğru araçlarla yakalanabilir.
Windows’ta aktif bağlantıları izlemek için iki temel yöntem var: komut satırı tabanlı netstat ve grafiksel arayüzlü TCPView. İkisi de birbirini tamamlayan araçlar, hangisini tercih edeceğiniz duruma ve kişisel alışkanlıklarınıza göre değişir. Ben genellikle hızlı bir ilk tarama için netstat, detaylı inceleme ve gerçek zamanlı izleme için TCPView kullanıyorum.
netstat ile Bağlantı Analizi
netstat (Network Statistics), Windows’ta yerleşik gelen ve herhangi bir kurulum gerektirmeyen bir komut satırı aracıdır. Temel kullanımı basit gibi görünse de parametrelerin kombinasyonuyla son derece güçlü analizler yapabilirsiniz.
Temel netstat Parametreleri
En sık kullandığım parametreler şunlar:
- -a: Tüm aktif bağlantıları ve dinleme portlarını gösterir
- -n: Adresleri ve port numaralarını sayısal formatta gösterir (DNS çözümleme yapmaz, bu yüzden çok daha hızlıdır)
- -o: Her bağlantının sahip olduğu işlemin PID numarasını gösterir
- -b: Her bağlantıyı oluşturan yürütülebilir dosyanın adını gösterir (yönetici yetkisi gerektirir)
- -p: Belirli bir protokolü filtreler (TCP, UDP, TCPv6, UDPv6)
- -r: Routing tablosunu gösterir
- -s: Protokol bazında istatistikleri gösterir
İlk Tarama Komutu
Sisteme ilk bağlandığınızda şüpheli bir durum olup olmadığını hızlıca kontrol etmek için şu komutu çalıştırın:
netstat -ano
Bu komut tüm bağlantıları, dinleme portlarını ve her bağlantının PID numarasını gösterir. Çıktı şuna benzer görünür:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 4
TCP 192.168.1.100:52341 203.0.113.45:4444 ESTABLISHED 3892
TCP 192.168.1.100:49231 185.220.101.7:443 ESTABLISHED 7641
Burada dikkat edilmesi gereken birkaç şey var. Port 4444, Metasploit’in varsayılan dinleme portu olarak bilinir ve ciddi bir kırmızı bayraktır. Öte yandan 443 portu üzerinden giden bağlantılar meşru HTTPS trafiği gibi görünebilir ama hedef IP adresi şüpheli olabilir.
PID’den Sürece Ulaşmak
PID numarasını öğrendikten sonra hangi sürece ait olduğunu bulmak için:
tasklist /fi "PID eq 3892"
Ya da daha fazla detay için:
wmic process where processid=3892 get name,executablepath,commandline
Bu komut size sürecin adını, tam çalıştırılabilir dosya yolunu ve komut satırı argümanlarını verir. Eğer C:UsersPublicsvchost.exe gibi alışılmadık bir yol görüyorsanız, bu ciddi bir şüphe işaretidir. Gerçek svchost.exe her zaman C:WindowsSystem32 altında bulunur.
Belirli Bir Port veya IP’yi Filtrelemek
Belirli bir portu dinleyen süreçleri bulmak için findstr ile filtreleme yapabilirsiniz:
netstat -ano | findstr ":4444"
Belirli bir IP adresine giden bağlantıları görmek için:
netstat -ano | findstr "203.0.113.45"
Sadece kurulu (ESTABLISHED) bağlantıları listelemek için:
netstat -ano | findstr "ESTABLISHED"
netstat Çıktısını Dosyaya Kaydetmek
Forensic analiz için veya zaman damgalı kayıt tutmak amacıyla çıktıyı dosyaya yönlendirebilirsiniz:
netstat -ano >> C:logsnetstat_%date:~-4,4%%date:~-7,2%%date:~-10,2%_%time:~0,2%%time:~3,2%.txt
Periyodik olarak bu çıktıyı kaydetmek, sonradan karşılaştırma yapmanızı sağlar. Önceki gece saat 03:00’teki durumla şu anki durumu karşılaştırmak çok değerli bilgiler verebilir.
Düzenli Aralıklarla Yenileme
Bağlantıları gerçek zamanlıya yakın izlemek için -n saniyede bir yenileme yapabilirsiniz. Ne yazık ki netstat doğrudan bir “canlı izleme” modu sunmuyor, ama şu PowerShell döngüsüyle benzer bir etki elde edebilirsiniz:
while ($true) { netstat -ano | findstr "ESTABLISHED"; Start-Sleep -Seconds 5; Write-Host "---"; }
Bu komut her 5 saniyede bir kurulu bağlantıları listeler ve aralarına ayraç koyar. Şüpheli bir aktivite sırasında bu komutu çalıştırmak, hangi sürecin ne zaman bağlantı kurduğunu takip etmenizi sağlar.
TCPView ile Görsel Analiz
TCPView, Microsoft Sysinternals takımının ürettiği ücretsiz bir araçtır ve netstat‘ın grafiksel, gerçek zamanlı versiyonu olarak düşünülebilir. [Sysinternals Suite](https://docs.microsoft.com/en-us/sysinternals/) paketinden indirebilir veya doğrudan tcpview.exe olarak Microsoft’un sitesinden alabilirsiniz.
TCPView’in Temel Özellikleri
TCPView’in netstat‘a göre önemli avantajları var:
- Gerçek zamanlı güncelleme: Bağlantılar açıldığında yeşil, kapandığında kırmızı ile vurgulanır. Bu görsel geri bildirim, hızla değişen bir ortamda paha biçilmezdir.
- Süreç bilgisi: Her bağlantının yanında süreç adını ve PID’ini gösterir
- DNS çözümleme: IP adreslerini hostname’e çevirir (bu özelliği bazen kapatmak istersiniz, zira gecikmeye yol açar)
- Süreç öldürme: Şüpheli bir bağlantıyı bulduğunuzda doğrudan arayüzden süreci sonlandırabilirsiniz
- Bağlantı kapatma: Süreci öldürmeden sadece bağlantıyı kesebilirsiniz
TCPView ile Şüpheli Aktivite Tespiti
TCPView’i açtığınızda ilk bakışta her şey karmaşık görünebilir, özellikle meşgul bir sunucuda yüzlerce bağlantı olabilir. Sistematik bir yaklaşım benimsemeniz gerekiyor.
Adım 1: DNS çözümlemeyi kapatın. Üst menüden Options > Resolve Addresses seçeneğini kapatın. Bu, her IP için DNS sorgusu yapmayı durdurur ve listeyi çok daha hızlı yükler.
Adım 2: Bağlantıları sürece göre gruplayın. View > Group by Process seçeneğini etkinleştirin. Bu şekilde hangi sürecin kaç bağlantısı olduğunu kolayca görebilirsiniz.
Adım 3: Bilinmeyen süreçlere odaklanın. svchost.exe, lsass.exe, explorer.exe gibi sistem süreçlerini bir kenara bırakıp chrome.exe, outlook.exe veya hiç tanımadığınız isimlerle bağlantı kuran süreçlere bakın.
Gerçek Dünya Senaryosu: Bir Reverse Shell Tespiti
Bir müşteri sisteminde yaşadığım gerçek bir olayı anlatayım. Sunucunun CPU kullanımı aniden yükseldi ve IT ekibi neden olduğunu bulamadı. TCPView’i açtığımda şunu gördüm:
Süreç adı update_helper.exe, kurulu bağlantı hedefi 91.108.4.x:8080, durum ESTABLISHED. Bu süreç hiçbir tanıdık yazılıma ait değildi. Sağ tıklayıp “Process Properties” dediğimde dosyanın C:UsersAdministratorAppDataRoaming altında olduğunu gördüm. Bir sistem aracı bu dizinde bulunmamalı.
Sonraki adım, bu süreci öldürmek ve dosyayı incelemekti. VirusTotal’a yüklediğimizde 47/72 antivirus motoru tarafından zararlı olarak işaretlenmişti. Bu bir reverse shell vakasıydı ve TCPView sayesinde dakikalar içinde tespit ettik.
Şüpheli Bağlantı İşaretleri
Hem netstat hem de TCPView kullanırken dikkat etmeniz gereken temel şüphe işaretlerini şöyle sıralayabilirim:
- Alışılmadık portlar üzerinden dış bağlantılar: Port 4444, 5555, 6666, 7777, 8888, 9999 klasik C2 portlarıdır. Ayrıca yüksek numaralı rastgele portlar (50000 üzeri) da dikkat çekici olabilir
- Meşru süreç adları yanlış konumda:
svchost.exeSystem32 dışında bir yerde mi?explorer.exebirden fazla kez mi çalışıyor? - Gece saatlerindeki beklenmedik bağlantılar: Kimsenin çalışmadığı saatlerde aktif bağlantılar ciddi şüphe yaratır
- Coğrafi olarak anlamsız hedefler: Türkiye’deki bir şirketin sunucusu neden Rusya, Çin veya Kuzey Kore’deki bir IP’ye bağlanıyor?
- UDP üzerinden yoğun trafik: DNS tünelleme saldırıları genellikle yoğun UDP trafiği yaratır
- Çok sayıda kısa süreli bağlantı: Beacon davranışı gösteren zararlı yazılımlar belirli aralıklarla kısa bağlantılar kurar
PowerShell ile Gelişmiş Bağlantı Analizi
netstat güçlü bir araç ama çıktısını programatik olarak işlemek için PowerShell çok daha esnek. Windows’ta Get-NetTCPConnection cmdlet’i netstat -ano‘nun PowerShell versiyonu olarak kullanılabilir:
Get-NetTCPConnection -State Established | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess | Sort-Object RemoteAddress
Şüpheli portlara bağlantıları doğrudan filtrelemek için:
Get-NetTCPConnection -State Established | Where-Object {$_.RemotePort -eq 4444 -or $_.RemotePort -eq 5555 -or $_.RemotePort -eq 8080} | ForEach-Object { $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue; [PSCustomObject]@{RemoteIP=$_.RemoteAddress; Port=$_.RemotePort; PID=$_.OwningProcess; ProcessName=$proc.Name; Path=$proc.Path}}
Bu komut hem bağlantı bilgilerini hem de süreç adını ve tam yolunu tek seferde verir. Şüpheli bir bağlantı bulduğunuzda tüm kritik bilgiler elinizin altında olur.
Otomatik Şüpheli Bağlantı Taraması
Rutin bir kontrol için şu scripti kullanabilirsiniz:
$suspiciousPorts = @(4444, 5555, 6666, 7777, 8080, 8888, 9999, 1337, 31337)
$connections = Get-NetTCPConnection -State Established
foreach ($conn in $connections) {
if ($conn.RemotePort -in $suspiciousPorts) {
$proc = Get-Process -Id $conn.OwningProcess -ErrorAction SilentlyContinue
Write-Warning "SUPHELی BAGLANТИ: $($proc.Name) ($($conn.OwningProcess)) -> $($conn.RemoteAddress):$($conn.RemotePort)"
Write-Warning "Proses Yolu: $($proc.Path)"
}
}
Bu scripti bir zamanlanmış görev olarak çalıştırıp sonuçları e-posta veya SIEM sisteminize gönderebilirsiniz.
netstat ve TCPView’i Birlikte Kullanmak
İki aracı birbirinin rakibi değil, tamamlayıcısı olarak düşünün. Benim tercih ettiğim iş akışı şöyle:
Hızlı ilk tarama için netstat -ano | findstr ESTABLISHED komutunu çalıştırırım. Çıktı hızla gelir ve genel tabloya bakarım. Şüpheli bir IP veya port görürsem o PID’i not ederim.
Detaylı inceleme için TCPView’i açarım. Gerçek zamanlı görsel takip yaparak hangi bağlantıların kalıcı, hangilerinin geçici olduğunu gözlemlerim. Özellikle “beacon” davranışı gösteren zararlılar, düzenli aralıklarla bağlantı kurar ve bu TCPView’de çok belirgin görünür.
Forensic dokümantasyon için her iki aracın çıktısını da zaman damgasıyla kaydederim. TCPView’de File > Save seçeneğiyle anlık görüntüyü CSV olarak alabilirsiniz.
Bağlantı Tespitinin Ötesi: Sonraki Adımlar
Şüpheli bir bağlantı tespit ettiğinizde netstat veya TCPView’de “Şüpheli var” demek yeterli değil. Olayı doğru şekilde ele almak için sistematik bir süreç izlemeniz gerekiyor.
1. Belgeleme: Bağlantının ekran görüntüsünü ve netstat çıktısını hemen kaydedin. Delil zinciri açısından kritik.
2. Süreç bilgisi toplama: Şüpheli sürece ait tüm bilgileri toplayın. Çalışma dizini, komut satırı argümanları, ana süreç (parent process), yüklenen DLL’ler.
3. Hash kontrolü: Şüpheli dosyanın MD5/SHA256 hash değerini alın ve VirusTotal’da sorgulayın.
4. Ağ izolasyonu kararı: Eğer aktif bir saldırı söz konusuysa, sistemi ağdan izole etmeyi düşünün. Ama aceleci davranmayın, bazı durumlarda bağlantıyı canlı tutmak saldırganı izlemenizi sağlar.
5. SIEM ve log analizi: Windows Event Log’ları, özellikle Security (4688 – yeni süreç oluşturma) ve Network events (5156 – ağ bağlantısı izin verildi) loglarını inceleyin.
Sonuç
netstat ve TCPView, bir Windows sistem yöneticisinin veya güvenlik analistinin araç kutusunda her zaman hazır bulunması gereken temel araçlar. Özellikle netstat -ano kombinasyonu, kurulum gerektirmeden herhangi bir Windows sisteminde çalışır ve anlık durum tespiti için yeterlidir. TCPView ise gerçek zamanlı izleme ve görsel analiz konusunda birkaç adım öne çıkar.
Önemli olan bu araçları sadece bir olay anında değil, rutin güvenlik kontrollerinin parçası olarak kullanmaktır. Sisteminizdeki “normal” trafiği iyi tanırsanız, anormal olan hemen dikkatinizi çeker. Haftalık bir netstat çıktısı karşılaştırması, aylarca fark edilmeden çalışan bir zararlıyı ortaya çıkarabilir.
Son olarak şunu söylemek isterim: Bu araçlar size nerede bakacağınızı gösterir, ama soruşturmanın geri kalanı hala sizin uzmanlığınıza bağlı. Bir IP adresinin şüpheli olup olmadığına karar vermek, süreç davranışlarını yorumlamak ve doğru müdahaleyi planlamak için bağlamı anlamak zorundasınız. Araçlar güçlüdür, ama analitik düşünce her zaman onların önünde gelir.
