# önder online
Teknoloji ve siber güvenlik dünyasına hoş geldiniz Güncel siber tehditler ve korunma yöntemleri Yapay zekâ ve otomasyonun güvenliğe etkileri Microsoft 365 ve Active Directory güvenlik rehberleri Yazılım geliştirmede güvenlik odaklı yaklaşımlar Teknoloji ve siber güvenlik dünyasına hoş geldiniz Güncel siber tehditler ve korunma yöntemleri

Menu

Windows Sunucularda SMB Bağlantılarının Derin Analizi

Windows Sunucularda SMB Bağlantılarının Derin Analizi

PID 4, Netstat Çıktıları ve Hangi Dosyalara Erişildiğinin Tespiti Kurumsal ağlarda dosya sunucuları hâlâ kritik öneme sahip bileşenlerdir. Kullanıcıların günlük iş...

PID 4, Netstat Çıktıları ve Hangi Dosyalara Erişildiğinin Tespiti

Kurumsal ağlarda dosya sunucuları hâlâ kritik öneme sahip bileşenlerdir. Kullanıcıların günlük işlemleri, paylaşılan klasör yapıları, departman dizinleri, otomasyon yazılımlarının dosya tabanlı süreçleri gibi pek çok aktivite, SMB (Server Message Block) protokolü üzerinden gerçekleşir.

Bir sistem yöneticisi olarak, dosya sunucularını incelerken karşımıza sık sık bazı sorular çıkar:

 Hangi istemci sunucuma bağlanıyor?
 Bu istemci hangi paylaşım klasörlerine erişiyor?
 Açtığı dosyalar neler?
 Bu bağlantı hangi uygulama üzerinden geliyor?
 Neden PID 4 görünüyor? bu bir problem mi? kötü amaçlı bir şey mi?

İşte bu blog yazısında, bu soruların tamamını gerçek bir örnek üzerinden adım adım ele alıyoruz.

Bir Durum İncelemesi: Netstat Çıktısında PID 4

Örnek senaryomuzda, dosya sunucusunda şu komut çalıştırılıyor:

cmd
netstat ano | findstr 10.20.30.5


Ve sonuç şu şekilde geliyor:


TCP    10.20.30.9:445    10.20.30.5:51795    ESTABLISHED     4
TCP    10.20.30.9:445    10.20.30.5:51797    ESTABLISHED     4
TCP    10.20.30.9:445    10.20.30.5:51798    ESTABLISHED     4


İlk bakışta anlamlı olan şey:
10.20.30.5, sunucuya 445 numaralı port üzerinden bağlanıyor.
Bu port, SMBv2/v3 protokollerinin standart bağlantı noktasıdır.

Dikkat çeken şey ise: PID 4.

PID 4 Neden Özel Bir PID'dir?

Windows’ta PID 4, dünyada yalnızca bir tek süreç için ayrılmıştır:

SYSTEM (NT Kernel & System Process)

Bu süreç, işletim sisteminin çekirdeğinin çalışmasını sağlar.
İçinde:

 SMB sunucusu sürücüleri
 Dosya paylaşımı bileşenleri
 NFS / CIFS işleyicileri
 Kernelmode network stack
 Windows Defender’ın bazı çekirdek eklentileri
 I/O scheduler yönetimi
 Bellek yönetiminin büyük kısmı

gibi en düşük seviyeli bileşenler vardır.

Dolayısıyla bir SMB bağlantısı geldiğinde Windows işlem tablosu şu şekilde çalışır:

 "Bu bağlantıyı kullanıcı uygulaması başlatmıyor. SMB protokolü kernel seviyesinden işleniyor. O hâlde bu bağlantı PID 4 üzerinden görünecek."

Ve bu tamamen doğru, beklenen, olağan bir durumdur.
Bir uygulamanın kötü amaçlı olduğuna işaret etmez.

SMB Trafiği Neden Kernel (PID 4) Üzerinden Yönetilir?

SMB çok sık kullanılan ve performans açısından kritik bir protokoldür. Bu nedenle Microsoft, SMBv2’den itibaren protokolü kullanıcı modundan çıkarıp kernel seviyesine taşımıştır.

Bu sayede:

 Daha düşük gecikme
 Daha hızlı dosya listeleme
 Daha az CPU kullanımı
 Yüksek yoğunluklu bağlantılarda kararlılık
 Kaya gibi sağlam bir güvenlik modeli

elde edilir.

Bu yüzden SMB bağlantısının PID 4 olarak görünmesi:

✔ Doğru
✔ Güvenli
✔ Tasarımsal bir davranıştır

> “Sunucuma bir şey mi bulaştı?”
> Hayır. Bu davranış Windows Server’ın doğal çalışma şeklidir.

 

10.20.30.5 Hangi Dosyalara Erişiyor?

İşte işin teknik olarak ilginç kısmı burada başlıyor.
Netstat yalnızca bağlantının olduğunu gösterir.
Ama bağlantının içeriği hakkında hiçbir şey söylemez.

Yani:

 Hangi klasör?
 Hangi dosya?
 Ne zaman açtı?
 Ne kadar süre açık kaldı?
 Kullanıcı kimliği ne?
 Okuma mı yaptı yazma mı yaptı?

Bunların hiçbirini netstat ile göremezsiniz.

Peki nasıl görürüz?

Windows Server bize bunun için çok güçlü araçlar sunuyor.

 

1. SMB Oturumlarını Görme – Bağlantının Kimliği

İlk adım, istemcinin sunucuda aktif bir oturumu olup olmadığını görmek:

powershell
GetSmbSession | Select ClientComputerName, ClientUserName, NumOpens


Bu komut size şunu söyler:

 10.20.30.5 şu kullanıcı ile bağlı
 Bu oturumda X adet dosya açık
 Bağlantı SMBv2 mi SMBv3 mü
 Oturum trafiği kaç MB

 

 2. En Kritik Adım: Açık Dosyaları Listeme – Gerçekleri Görme

Bu komut, bir istemcinin o anda hangi dosyaları açtığını birebir gösterir:

powershell
GetSmbOpenFile | WhereObject {$_.ClientComputerName eq "10.20.30.5"} |
    Select ClientComputerName, Path, ClientUserName


Bu sayede direkt olarak:

 “Hangi paylaşım klasörüne girilmiş?”
 “Hangi dosya açılmış?”
 “Okuma mı yazma mı yapılmış?”
 “Kim erişmiş?”

hepsini net bir şekilde görürüz.

Örnek bir çıktı:


ClientComputerName : 10.20.30.5
Path               : \\10.20.30.9\Shared\HR\salary.xlsx
ClientUserName     : corpintra\user1


Bu noktada artık bütün tablo netleşmiş olur:

 İstemci → 10.20.30.5
 Erişilen dosya → salary.xlsx
 Paylaşım yolu → HR
 Kullanıcı → user1

 

 🟧 3. Gerçek Zamanlı İzleme – ShareMonitor / Sysinternals

Eğer canlı olarak:

 kim hangi klasörü açtı,
 dosyanın adı neydi,
 paylaşımdan ne okundu ne yazıldı

görmek istiyorsanız Sysinternals’ın “ShareMonitor” aracı bunu anlık gösterir.

Her açılan dosya şöyle görünür:


10.20.30.5 opened \\10.20.30.9\Accounting\Rapor.xlsx
10.20.30.5 read   \\10.20.30.9\Shared\TaskList.docx


Ağ trafiğini canlı takip etmek, özellikle de büyük şirket ortamlarında çok değerli bir yetenektir.

İleri Seviye: Event Viewer – SMB Access Logları

Eğer SMB Audit Log aktifse:

Event Viewer → Microsoft → Windows → SMBServer → Operational

Başlıklar altında:

 3000 → File Read
 3001 → File Write
 3002 → File Create
 3003 → Directory Access

gibi ID’lerle tüm hareketler kaydedilir.

Bu loglar:

 Forensic incelemelerde
 Veri sızıntısı araştırmalarında
 Kullanıcı hareket analizlerinde

çok işe yarar.

PID 4 Görmek Normaldir, Asıl Önemli Olan Dosya Erişimlerini İzlemektir

Bir istemci dosya sunucusuna bağlandığında bağlantının PID 4 altında görünmesi tamamen olağan bir durumdur.
Bu SMB protokolünün Windows’ta kernel seviyesinde çalışmasından kaynaklanır.

Önemli olan; istemcinin hangi dosyalara eriştiğini, hangi kullanıcıyla bağlandığını, hangi klasörü açtığını doğru araçlarla tespit edebilmektir.

Bu yazıda anlattığımız araçlar:

 GetSmbSession → Oturum kimliği
 GetSmbOpenFile → Açılan dosyalar
 ShareMonitor → Canlı izleme
 SMBServer Logs → Adli inceleme

sistemin tüm resmini net şekilde görmeyi sağlar.

Aşağıya talep ettiğin üç bölümü blog yazısına ek içerik olarak hazırladım.
Hepsi profesyonel – anlaşılır – teknik olarak doğru şekilde düzenlendi.


SMB Teknik Terimler Sözlüğü (TR/EN)

SMB dünyasında sık geçen kavramların Türkçe–İngilizce karşılıkları ve kısa açıklamaları:

Türkçe Terim İngilizce Terim Açıklama
Dosya Paylaşımı File Sharing Ağ üzerinden klasör/dosya paylaşımı. SMB’nin temel amacı.
Paylaşım (Paylaştırılmış klasör) Share / Shared Folder SMB ile erişilebilen paylaştırılmış klasör.
Oturum Session Bir istemcinin sunucuya kurduğu kimlik doğrulamalı bağlantı.
Oturum Kimliği Session ID Her SMB bağlantısına verilen benzersiz numara.
Dosya Tanıtıcısı File Handle Açık bir dosyayı temsil eden sistem tanıtıcısı.
Okuma / Yazma Read / Write SMB üzerinden dosya erişim türleri.
Paylaşım Yolu UNC Path \server\share\ klasör yapısının tam yolu.
Kimlik Doğrulama Authentication Kullanıcı giriş kontrolü (NTLM/Kerberos).
Yetkilendirme Authorization Kullanıcının klasör/dosyaya erişim yetkisi.
SMB Protokolü SMB Protocol Windows dosya paylaşım protokolü (CIFS olarak da bilinir).
SMBv1 SMB Version 1 Güvensiz, eski sürüm. Artık devre dışı bırakılması önerilir.
SMBv2 SMB Version 2 Performans ve güvenlik olarak büyük sıçrama, modern sürüm.
SMBv3 SMB Version 3 Şifreleme, kararlılık ve hız geliştirmeleri içerir.
Network Signed SMB Signing SMB paketlerinin imzalanması, güvenlik artırır.
SMB Encryption SMB Şifreleme Veri akışını uçtan uca şifreler.
SMB Session Key Oturum Anahtarı İstemci–sunucu arasındaki şifreleme anahtarı.
Kernel-Mode Driver Çekirdek Modu Sürücüsü SMB gibi trafiklerin PID 4 altında çalışmasının nedeni.
File Locking Dosya Kilitleme Çoklu kullanıcı erişiminde çakışmayı önler.

Bu sözlük, blog yazına ayrı bir bölüm olarak eklenebilir.


SMBv2 ve SMBv3 Arasındaki Farklar (Detaylı Tablo)

SMBv2 → Windows Vista/Server 2008 ile geldi
SMBv3 → Windows 8/Server 2012 ile geldi

Aşağıdaki tablo, iki sürüm arasındaki farkları net şekilde ortaya koyar:

Özellik SMBv2 SMBv3
Çıkış Yılı 2006 2012
Performans SMBv1’e göre çok daha hızlı SMBv2’den %20–40 daha hızlı
Güvenlik SMB Signing destekler SMB Encryption destekler (büyük fark!)
Şifreleme Yok AES-128-GCM / AES-128-CCM
Çoklu Kanal Yok Multichannel (birden fazla ağ arayüzü → yüksek hız)
Dayanıklılık Temel düzeyde SMB Durable Handles ile kesintisiz bağlantı
Failover Yok Clustered Shared Volume desteği, kesintisiz failover
Sıkıştırma Yok SMB Compression (2020 güncellemesiyle)
OTOMATİK Yük Paylaşımı Yok SMB Direct + RDMA desteği
Kullanım Alanı Genel dosya paylaşımı Veri merkezleri, yüksek yük, büyük dosya akışı, Hyper-V

SMBv3, hem hız hem güvenlik hem dayanıklılık açısından en ideal sürümdür.
Günümüz sunucularında SMBv1 kapalı, SMBv2/3 açık olarak çalışması önerilir.


Powershell ile Otomatik SMB İzleme Scripti

Aşağıdaki script, belirli bir istemci IP adresinin (ör: 10.1.0.24) hangi dosyalara eriştiğini otomatik izler, her 10 saniyede bir kontrol eder ve log kaydı oluşturur.

Script Özellikleri

✔ Hangi dosyalara erişildiğini bulur
✔ Kullanıcı bilgisiyle birlikte log’a yazar
✔ Tarih-saat damgası ekler
✔ Gerçek zamanlı takip sağlar
✔ Log dosyasını CSV olarak üretir


smb-monitor.ps1 — Otomatik SMB Dosya Erişim İzleme Scripti

# ============================
# SMB Otomatik İzleme Scripti
# ============================

$TargetIP = "10.1.0.24"         # İzlenecek istemci IP
$LogFile = "C:\SMB_Logs\smb_log.csv"

# Log dosyası yoksa oluştur
if (-Not (Test-Path $LogFile)) {
    "Timestamp,ClientIP,User,FilePath" | Out-File -FilePath $LogFile -Encoding utf8
}

Write-Host "SMB izleme başlatıldı... IP: $TargetIP" -ForegroundColor Green
Write-Host "Log dosyası: $LogFile"

while ($true) {

    $files = Get-SmbOpenFile | Where-Object {
        $_.ClientComputerName -eq $TargetIP
    }

    foreach ($file in $files) {
        $timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
        $entry = "$timestamp,$($file.ClientComputerName),$($file.ClientUserName),$($file.Path)"

        # Log kaydını yaz
        Add-Content -Path $LogFile -Value $entry

        Write-Host "[KAYIT] $entry" -ForegroundColor Yellow
    }

    Start-Sleep -Seconds 10  # Her 10 saniyede bir kontrol et
}

Kullanım Talimatı

1. Scripti bir dosyaya kaydet:

C:\Scripts\smb-monitor.ps1

2. Log klasörü oluştur:

mkdir C:\SMB_Logs

3. Scripti çalıştır:

powershell -ExecutionPolicy Bypass -File C:\Scripts\smb-monitor.ps1

4. Log dosyasına bak:

C:\SMB_Logs\smb_log.csv

Her satırda şunlar olacak:

2025-12-03 16:22:10,10.1.0.24,corpintra\user1,\\10.1.0.9\Shared\Finance\budget.xlsx