odizoluj aplikację i sprawdź, jakie pakiety wysyła przez Internet

18

Nie jestem pewien, czy takie pytanie jest tutaj odpowiednie, więc wybacz mi, jeśli się mylę.

Oto problem: chcę zobaczyć, co konkretny program wysyła do Internetu, ale chodzi o to, że na komputerze jest wiele aplikacji i usług, które korzystają z Internetu. Nie można więc dowiedzieć się, jakie pakiety zostały wysłane przez aplikację, którą jestem zainteresowany.

Jednym ze sposobów jest próba zamknięcia wszystkich innych aplikacji, ale jest to niemożliwe.

Czy jest więc sposób na wyodrębnienie konkretnej aplikacji? Pracuję na Windows7 i przechwytywanie pakietów za pomocą wireshark

Salvador Dali
źródło

Odpowiedzi:

13

Biorąc pod uwagę, że używasz Wireshark, twoje numery portów nie są automatycznie przekształcane w nazwę aplikacji, więc musisz zrobić jeszcze więcej, aby zawęzić poszukiwane informacje. Każda aplikacja korzystająca z protokołu TCP / IP do komunikacji w sieci będzie korzystała z portów, dzięki czemu stos sieci będzie wiedział, gdzie dostarczyć segmenty (lubię to nazywać adresem aplikacji).

Klienci łączący się z aplikacją serwera na określonym porcie będą dynamicznie przydzielani numerowi portu z zakresu dynamicznego. Musisz najpierw dowiedzieć się, jakie połączenia TCP / UDP otworzyła twoja aplikacja:

netstat -b

w wierszu polecenia wyświetli listę połączeń z nazwą pliku wykonywalnego, który utworzył połączenie. Każdy plik wykonywalny ma jedno lub więcej połączeń wymienionych jako 127.0.0.1:xxxxx, gdzie X jest numerem portu lokalnego dla połączenia.

Teraz w wireshark musisz powiedzieć mu, aby wyświetlał pakiety, które pochodzą z tego portu lub są przez niego przeznaczone, za pomocą jednego lub więcej z tych filtrów:

tcp.port == xxxxx lub udp.port == xxxxx

Dodaj dodatkowy or tcp.port == xxxxxdla każdego połączenia, które chcesz pokazać.

Pozwoli ci to zobaczyć cały ruch dla połączeń, które twoja aplikacja otworzyła, a Wireshark nie będzie zawierał tylko surowych segmentów TCP / UDP, ale obejmie różne protokoły warstwy aplikacji (np. HTTP), które również używały tych numerów portów.

Jeśli wydaje się, że Twoja aplikacja komunikuje się tylko z jednym serwerem, możesz po prostu użyć adresu IP tego serwera do filtrowania według:

ip.addr == x.x.x.x
Jan
źródło
Największym problemem z gniazdami (korzystającymi z niezarezerwowanych portów) jest to, że gniazdo otwierane i zamykane przez aplikację ma bardzo dynamiczny charakter. Po uruchomieniu polecenia netstat -b daje on różne wyniki dla każdej aplikacji na liście, nawet jeśli uruchomisz ją w odstępie 5 sekund. Dlatego bardzo trudno jest zauważyć wszystkie numery portów, które są przydzielane do mojej aplikacji. To samo obserwowałem dla mojej aplikacji w narzędziu „TCPView” (pakiet sysInternals). Zauważyłem, że w ciągu 10 sekund około 15 połączeń gniazd TCP zostało otwartych przez moją aplikację i wiele z nich również zginęło
RBT
1
Tutaj przydatny jest Microsoft Network Monitor, ponieważ może śledzić proces, z którego pochodzi komunikacja sieciowa i grupuje go w ramach tego procesu. Jednak odkąd to zostało napisane, została wydana nowa główna wersja Wireshark. Może się zdarzyć, że takie grupowanie jest również możliwe przy użyciu Wireshark, ale od jakiegoś czasu go nie używałem.
Jan
7

Jeśli korzystasz z Monitora procesów firmy Microsoft , możesz zmienić filtry, aby wyświetlać tylko komunikację sieciową z określonych procesów. Nie podaje zawartości pakietów, ale pokazuje hosty, z którymi rozmawia aplikacja.

długa szyja
źródło
1
? Chciał zobaczyć paczki.
Pacerier
1

Microsoft Network Monitor pokaże proces odpowiedzialny za przepływ ruchu.

joeqwerty
źródło
1

Uważam, że Microsoft Message Analyzer jest bardzo przydatny do dokładnie tego samego celu. Umożliwia przechwytywanie ruchu sieciowego i agregowanie go według drzewa procesów.

YaoLen
źródło
0

Użyj Monitora procesów wewnętrznych systemu, aby uzyskać numer procesu aplikacji i sprawdź inne narzędzia wewnętrzne systemu pod adresem:

https://docs.microsoft.com/en-us/sysinternals/

Otwórz cmd.exe i uruchom, pokaż opcje wiersza poleceń netstat, netstat /? .

Teraz spróbuj netstat -bo 1 >> c: /test.log. Umożliwi to znalezienie danych połączenia sieciowego określonych aplikacji w stale aktualizowanym pliku.

Pamiętaj, że musisz zatrzymać zapisywanie komendy netstat -bo >> c: /test.log w dzienniku przez wprowadzenie ctl-C w oknie cmd.

Jef Mar
źródło
-2

Wystarczy zastąpić My_Applicationaplikacją PNAMElubPID

netstat --programy | grep „My_Application”

Nie testuję tego w systemie Windows 7., ale działa w systemie Linux.

Mostafa Lavaei
źródło