Wireshark'ta işleme / PID'ye göre filtrele


Yanıtlar:


58

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.


7
iyi nokta..ben de öyle düşünmüştüm .. bunu kapatmadan önce bir gün beklememe izin verin, bunu yapmayı başaran bir wireshark ninja olması durumunda ..
Ryan Fernandes

30
Wireshark hangi bağlantı noktasının kullanıldığını bilir ve işletim sistemi bağlantı noktasını kullanan sürecin PID'sini bilir. Kod değişiklikleri ile Wireshark'ın bağlantı noktasını PID ile eşleştirmesi mümkün olmalıdır. Wireshark işletim sistemini bir bağlantı noktası için PID için sorgulamadan hemen önce, işletim sisteminin bir bağlantı noktasını farklı bir uygulamaya yeniden tahsis etmesi gibi bunun başarısız olduğu bazı durumlar vardır. Yani bu aptalca bir kanıt olmayacak, ancak kullanıcı bu sınırlamalardan haberdar edilirse, yine de yararlı bir özellik olacaktır.
Dojo

Bağlantı noktasını dinleyen / kapatan ve PID'yi bağlantı noktasına eşleyen wireshark'a modül ekleyin derim. Bunu ana işlemle senkronize edin ve mükemmel bir bağlantı noktasından işleme eşleştiricisine sahip olursunuz. Ancak, hatayı soru yorumundan okumak, modülü oluşturmak kadar basit değildir.
Vesper

Wireshark'ı ilk indirdiğim zamanı hatırlıyorum, işlem ağacını gösteriyordu ve izlemek için bir işlem seçebiliyordunuz. Bu seçenek ortadan kalktığında Dunno, ama oradaydı.
Tomáš Zato - Monica'yı eski durumuna getir

90

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 ...


10
Microsoft Network Monitor 3.4, microsoft.com/en-us/download/details.aspx?id=4865
gt

39
Ayrıca , temelde Microsoft'un Wireshark'ın (ve anladığım kadarıyla Ağ İzleyicisi'nin ardılı) sürümü olan, ancak biraz daha entegre olan Microsoft Message Analyzer da var. Sütun seçicide, "Etw" -> "EtwProviderMsg" altında "PID" için bir sütun vardır. İyi çalışıyor!
Cameron

3
Tam yol EtwProviderMsg -> EventRecord -> Header -> ProcessId
r590

Yeni denedim ve bu Microsoft Message Analyzer çok sıkıcı bir yazılım parçası! Neredeyse sistemimi yavaşlatıyordum. Çok mantıksız bir kullanıcı arayüzü. Listeyi toplanan verilerle temizlemenin bir yolunu bulan oldu mu? Vazgeçtim ve o çöpü kaldırdım. (Not. Wireshark geliştiricilerinin PID / İşlem adını filtredeki bir bağlantı noktasına bağlamak için bir özellik eklememesi çok kötü. Yapması çok kolay. Bu, başlatma sırasında süreçte neler olup bittiğini görmek için kritik olabilir. SysInternals'dan ProcMon kullanarak genel bir fikir edinebileceğim bir geçici çözüm.)
c00000fd

1
Kısa süre önce Microsoft Message Analyzer'ı keşfettim ve çok kullanışlı bir araç! Bunu hiç duymamış olmam nasıl mümkün olabilir? Çok küçümsenmiş. Windows ile Wireshark'tan çok daha iyi entegrasyon nedeniyle harika filtreleme yeteneklerine sahiptir. Günlük olarak çalıştıktan sonra ~ 3 ay içinde tüm şirket ana bilgisayarlarında buna geçiş yapıyorum. @Cameron'a bu cevabın altındaki yorumu için büyük minnettarız! :-)
Skipper

16

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.


12
iyi, bu işe yaramayabilir ... program birçok yerel ve uzak bağlantı noktasını açıp kapatıyor
Ryan Fernandes

11

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


1
Beni bunun yönüne yönlendirdiğiniz için teşekkürler, tam da ihtiyacım olan şey buydu. FWIW, "ProcMon" üst düzey grubu, aynı ProcessId'i ve ayrıca proses adı, ParentId, vb. Gibi diğer bilgileri içeriyor gibi görünüyor
Tobias J

3

Windows'ta, posta listesinde açıklandığı gibi bunu yapan deneysel bir yapı vardır, Yerel işlem adına göre filtrele


Bu, Wireshark içinde, "Bağlantı noktası numaralarını wireshark'tan bağlantı noktası numaralarına, örneğin netstat'tan bağlantı noktası numaralarını eşleştirebilirsiniz, bu da size o bağlantı noktasında dinleme işleminin PID'sini söyler." Tom Woolfrey'in yorumundan bazı şeyler, dolayısıyla (mesajın not ettiği gibi) bu mekanizmanın sınırlamalarına tabidir.

3

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 sgprogramı 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 ...


3

Hala başlatılması gereken bir uygulamayı takip etmek istiyorsanız, kesinlikle mümkündür:

  1. Docker'ı yükleyin (bkz. Https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/ )
  2. Bir terminal açın ve küçük bir kapsayıcı çalıştırın: 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)
  3. Uygulamanızı, gerçek bir sisteme kurduğunuz şekilde, konteynere kurun.
  4. Gerçek sisteminizde wireshark'ı başlatın, capture> options'a gidin. Açılan pencerede tüm arayüzlerinizi göreceksiniz. Bunun yerine seçmenin any, wlan0, eth0, ... yeni sanal arayüz seçim docker0yerine.
  5. Yakalamaya başlayın
  6. Uygulamanızı kapta başlatın

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ı:

  • Başvurum bir konteyner içinde çalışacak mı? Neredeyse kesinlikle evet, ancak çalışmasını sağlamak için docker hakkında biraz bilgi edinmeniz gerekebilir
  • Uygulamam yavaş çalışmayacak mı? İhmal edilebilir. Programınız bir hafta boyunca ağır hesaplamalar yapan bir şeyse, şimdi bir hafta 3 saniye sürebilir
  • Ya yazılımım veya başka bir şey kapta kırılırsa? Kapların güzel yanı bu. İçeride çalışan her ne varsa, yalnızca mevcut kabı kırabilir ve sistemin geri kalanına zarar veremez.

0

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==someipve işi ekledim . Hiçbir durumda işe yaramaz, ancak bazıları için faydalıdır.


0

Bağlantı noktası numarasını kullanarak alın netstat:

netstat -b

Ve sonra Wireshark filtresini kullanın:

tcp.port == portnumber

Bunun kusursuz bir yol olduğundan emin değilim. Bir bağlantı noktasını dinleyen bir TCP sunucunuz varsa, ancak çekirdeğin TCP işlemesini engellemediyseniz, çekirdek veya uygulamanızın biri veya her ikisi bağlantı noktasına yanıt verebilir.
aeb0

0

straceBu durum için kullanım daha uygundur.

strace -f -e trace=network -s 10000 -p <PID>;

seçenekleri -fde tüm çatallı süreçleri izlemek için -e trace=netwrokyalnızca filtre ağ sistemi-çağrısına ve -s10000 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>;

-16

Wireshark'ta aşağıdaki komut örnekleriyle bağlantı noktası numaralarını kontrol edebilirsiniz: -

tcp.port == 80

tcp.port == 14220

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.