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
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:
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.
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.
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.
źródło
Microsoft Network Monitor pokaże proces odpowiedzialny za przepływ ruchu.
źródło
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.
źródło
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.
źródło
Wystarczy zastąpić
My_Application
aplikacjąPNAME
lubPID
Nie testuję tego w systemie Windows 7., ale działa w systemie Linux.
źródło