Wireshark kullanarak belirli bir işlem kimliğine dayalı bir TCP / SSL akışını filtrelemenin / izlemenin bir yolu var mı ?
Wireshark kullanarak belirli bir işlem kimliğine dayalı bir TCP / SSL akışını filtrelemenin / izlemenin bir yolu var mı ?
Yanıtlar:
Nasıl olduğunu anlamıyorum. PID onu tele aktarmaz (genel olarak konuşursak), ayrıca Wireshark telde ne olduğuna bakmanıza izin verir - potansiyel olarak tel üzerinden iletişim kuran tüm makineler. İşlem kimlikleri zaten farklı makinelerde benzersiz değildir.
Alternatif bir yol arıyorsanız ve kullandığınız ortam Windows ise, Microsoft'un Ağ İzleyicisi 3.3 iyi bir seçimdir. İşlem adı sütununa sahiptir. Bağlam menüsünü kullanarak kolayca bir filtreye ekler ve filtreyi uygularsınız .. Her zamanki gibi GUI çok sezgiseldir ...
Bağlantı noktası numaralarını wireshark'tan bağlantı noktası numaralarına kadar eşleştirebilirsiniz, örneğin netstat bu bağlantı noktasında dinleyen bir sürecin PID'sini size söyleyecektir.
Microsoft Message Analyzer v1.4'ü kullanın
Alan seçiciden ProcessId'ye gidin.
Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
Sağ tıklayın ve Sütun Olarak Ekle
Windows'ta, posta listesinde açıklandığı gibi bunu yapan deneysel bir yapı vardır, Yerel işlem adına göre filtrele
Bu, belirli işlemlerin nerede bağlanmaya çalıştığını izlemek için yapabileceğiniz önemli bir şey ve bunu Linux'ta yapmanın uygun bir yolu yok gibi görünüyor. Bununla birlikte, birkaç geçici çözüm mümkündür ve bu yüzden bunlardan bahsetmeye değer olduğunu düşünüyorum.
İnternet erişimi olmayan bir programın çalıştırılmasına izin veren nonet adında bir program var (sistemimde bununla ayarlanan çoğu program başlatıcısı var). Nonet grubundaki bir işlemi çalıştırmak için setguid kullanır ve bu gruptan gelen tüm bağlantıları reddetmek için bir iptables kuralı ayarlar .
Güncelleme: Şimdiye kadar daha da basit bir sistem kullanıyorum, ferm ile kolayca okunabilir bir iptables konfigürasyonuna sahip olabilirsiniz ve sadece sg
programı belirli bir grupla bir program çalıştırmak için kullanabilirsiniz . Iptables ayrıca trafiği yeniden yönlendirmenize izin verir, böylece bunu ayrı bir arayüze veya bir bağlantı noktasındaki yerel bir proxy'ye yönlendirebilirsiniz; böylece, tüm interneti devre dışı bırakmak istemiyorsanız, kablo ağında filtreleme veya paketleri doğrudan iptables'dan GÜNLÜKLEME sağlar. trafiği kontrol ediyor.
Bunu bir gruptaki bir programı çalıştıracak şekilde uyarlamak ve diğer tüm trafiği iptables ile yürütme ömrü boyunca kesecek şekilde uyarlamak çok karmaşık değildir ve daha sonra yalnızca bu işlemden gelen trafiği yakalayabilirsiniz.
Bir daha yazmaya gelirsem, buraya bir bağlantı göndereceğim.
Başka bir notta, sanal bir makinede bir işlemi her zaman çalıştırabilir ve yaptığı bağlantıları izole etmek için doğru arabirimi koklayabilirsiniz, ancak bu oldukça düşük bir çözüm olur ...
Hala başlatılması gereken bir uygulamayı takip etmek istiyorsanız, kesinlikle mümkündür:
docker run -t -i ubuntu /bin/bash
("ubuntu" yu en sevdiğiniz dağıtımla değiştirin, bunun gerçek sisteminizdekiyle aynı olması gerekmez)any
, wlan0
, eth0
, ... yeni sanal arayüz seçim docker0
yerine.Yazılımınızı bir kapsayıcıda çalıştırmayla ilgili bazı şüpheleriniz olabilir, bu nedenle muhtemelen sormak isteyeceğiniz soruların yanıtları:
Bazı durumlarda işlem kimliğine göre filtre uygulayamazsınız. Örneğin, benim durumumda bir işlemden gelen trafiği koklamam gerekiyordu. Ancak yapılandırma hedef makinesinin IP adresini, filtre ip.dst==someip
ve işi ekledim . Hiçbir durumda işe yaramaz, ancak bazıları için faydalıdır.
Bağlantı noktası numarasını kullanarak alın netstat
:
netstat -b
Ve sonra Wireshark filtresini kullanın:
tcp.port == portnumber
strace
Bu durum için kullanım daha uygundur.
strace -f -e trace=network -s 10000 -p <PID>;
seçenekleri -f
de tüm çatallı süreçleri izlemek için -e trace=netwrok
yalnızca filtre ağ sistemi-çağrısına ve -s
10000 char kadar görüntüleme dizesi uzunluğuna.
Ayrıca, yalnızca gönderme, alma, okuma işlemleri gibi belirli çağrıları da izleyebilirsiniz.
strace -f -e trace=send,recv,read -s 10000 -p <PID>;
Wireshark'ta aşağıdaki komut örnekleriyle bağlantı noktası numaralarını kontrol edebilirsiniz: -
tcp.port == 80
tcp.port == 14220