TCPVcon.exe – tworzymy prosty skaner używanych portów i otwartych połączeń


 

tcpview_ikonaDziś tekst podyktowany życiowym zadaniem. Zapewne również odliczacie już czas kiedy Windows XP ostatecznie przestanie być wspierany przez Microsoft i nowe poprawki nie będą już się ukazywały. Jeden z najbardziej rozpowszechnionych systemów operacyjnych odejdzie w niepamięć i dołączy do reszty OSów zapomnianych przez deweloperów. Niezałatane dziury będę podatne na exploity, które będą pojawiały się tak długo jak długo system będzie używany. Problem w tym, że nawet najnowsze dane pokazują, że XP to ponad 11% udziału w rynku, więcej niż Windows 8. W firmach nie jest inaczej, migracje do nowszych wersji systemu zaczęły się już dawno i pewnie spora część komputerów jest już zapewne gotowa, ale jak to zazwyczaj bywa, w zderzeniu z rzeczywistością, pozostała garstka specyficznych urządzeń, których nijak nie można zaktualizować. Czasem są to niekompatybilne sterowniki, czasem specyficzne oprogramowanie, które nie zadziała na innym kompie. Wszystkie takie urządzenia należałoby odseparować od reszty sieci (a szczególnie od internetu) i otworzyć tylko niezbędne porty do komunikacji z innymi. Doszliśmy do sedna problemu, czyli

Jak odnaleźć porty, przez które komunikuje się komputer

Gdy XP to zwykły komputer biurowy nie będzie z tym pewnie większego problemu. Jeżeli natomiast, zainstalowany tam jest kawałek softu, który odpowiada za sterowanie urządzeniem niezbędnym do produkcji bądź kontroli, to może nie być to takie proste. Możemy użyć opisywanych wcześniej narzędzie takich jak TCPView lub Netstat, ale wtedy liczyć musimy się z ręczną robotą. Ja wymyśliłem sobie inny sposób. Problematyczne komputery cały czas działają, wymagane porty mogą nie być używane cały czas, a komunikacja może odbywać się tylko przez krótki czas. Najlepszym rozwiązaniem byłoby monitorowanie takiego komputera dzień lub dwa i wychwycenie pojawiających się połączeń. Kto jednak ma czas, żeby robić to osobiście? Potrzebny był automatyczny skaner portów. Z pomocą przyszedł brzydki (choć to kwestia gustu) brat TCPView. Nie jest tak urodziwy, gdyż jest programem dostępnym z wiersza poleceń. Nie jest nawet tak funkcjonalny jak kuzyn Netstat, jednak ma jedną niezaprzeczalną zaletę. Wyniki może przedstawiać w formacie plików csv, co przedstawia go jako idealnego kandydata do oskryptowania.

Krótko o opcjach TCPVcon.exe

Zobaczy zatem co oferuje nam programik.
Jeżeli odpalimy go z domyślnymi ustawieniami dostaniemy listę aktywnych połączeń, nazwy procesów oraz nazwy łączących się urządzeń

c:\>tcpvconTCPView v3.01 – TCP/UDP endpoint viewer
Copyright (C) 1998-2010 Mark Russinovich and Bryce Cogswell
Sysinternals – www.sysinternals.com[TCP] thunderbird.exe
PID: 8684
State: ESTABLISHED
Local: spec.home
Remote: fa-in-f16.1e100.net
[TCP] thunderbird.exe
PID: 8684
State: ESTABLISHED
Local: spec.home
Remote: fa-in-f16.1e100.net
[TCP] opera.exe
PID: 4936
State: ESTABLISHED
Local: spec.home
Remote: fra02s20-in-f1.1e100.net
[TCP] [System Process]
PID: 0
State: TIME_WAIT
Local: spec.home
Remote: s2.linuxpl.com

Dodatkowo użyć możemy przełącznika -a, aby wyświetlić nawet nasłuchujące procesy.
Jeżeli nie interesuje nas rozwiązywanie nazw urządzeń zdalnych używamy -n, nazwy zostaną zastąpione adresami IP, a samo skanowanie znacznie przyspieszy.
Możemy również zawęzić wyświetlanie jedynie do jednego procesu, w takim przypadku musimy wpisać jego nazwę lub PID.

Najlepszą opcję zostawiłem na koniec, dzięki -c tcpvcon zaprezentuje nam wyniki w postaci bloku CSV

c:\>tcpvcon -ancTCPView v3.01 – TCP/UDP endpoint viewer
Copyright (C) 1998-2010 Mark Russinovich and Bryce Cogswell
Sysinternals – www.sysinternals.comTCP,svchost.exe,792,LISTENING,0.0.0.0,0.0.0.0
TCP,System,4,LISTENING,192.168.1.10,0.0.0.0
TCP,wininit.exe,564,LISTENING,0.0.0.0,0.0.0.0
TCP,svchost.exe,488,LISTENING,0.0.0.0,0.0.0.0
TCP,svchost.exe,712,LISTENING,0.0.0.0,0.0.0.0
TCP,spoolsv.exe,1312,LISTENING,0.0.0.0,0.0.0.0
TCP,lsass.exe,676,LISTENING,0.0.0.0,0.0.0.0
TCP,services.exe,664,LISTENING,0.0.0.0,0.0.0.0
TCP,Steam.exe,14932,LISTENING,0.0.0.0,0.0.0.0
TCP,thunderbird.exe,8684,ESTABLISHED,192.168.1.10,173.194.70.16
TCP,thunderbird.exe,8684,ESTABLISHED,192.168.1.10,173.194.70.16
TCP,NIS.exe,11464,LISTENING,0.0.0.0,0.0.0.0
TCP,explorer.exe,14296,ESTABLISHED,192.168.1.10,157.55.236.64
TCP,googledrivesync.exe,8264,ESTABLISHED,192.168.1.10,173.194.70.125

Skryptujemy

Nie ma sensu tworzenia zaawansowanych rozwiązań, skrypt ma działać i wykonywać co do niego należy. Możemy więc po prostu zaatakować problem z partyzanta i użyć batcha :)

:scan
tcpvcon -anc >> PortCapture.csv
ping 7.7.7.7 -n 1 -w 60000 > nul
goto :scan

Skrypt jest zapętlony, będzie działał dopóki go nie przerwiemy Lista portów będzie dopisywana do pliku PortCapture.csv co 1 minutę. Należy się słowo wyjaśnienia co do użytego powyżej „opóźniacza”. Po wielu próbach okazało się, że takie nietypowe zastosowanie pinga jest najbardziej skuteczne i wiarygodne. Użyć możecie jakiegokolwiek nieistniejącego adresu IP. Wartość po przełączniku -w określa czas pauzy w milisekundach. Tak, wiem, jest komenda timeout, jednak okazało się, że na XPkach nie do końca działa tak jak powinna.

Obróbka danych

Po cały dniu skanowania, plik będzie zapewne ogromny. Nie zamierzam jednak analizować w czystej postaci. CSV otworzyć możemy sobie w jakimkolwiek arkuszu kalkulacyjnym. Dodajemy kolumny z opisem, segregujemy wedle uznania i mamy wszystko jak na talerzu.

TCPVcon_excel1

Dla lepszych rezultatów proponuję skorzystać z tabeli przestawnej, wtedy jeszcze lepiej widać zależności połączeń oraz ich ilość.

TCPVcon_excel2

Po takiej analizie mamy spore szanse że wyłapiemy wszystkie niezbędna porty, a migracja komputerów do wyodrębnionej podsieci pójdzie zgodnie z planem.
A wy jakie macie sposoby na określanie portów używanych przez komputery?


Podobne Tematy:

  • porramsiqsi

    Sunbelt Personall Firewall ładnie pokazuje co i jak fruwa.
    Dodatkowo kontroluje uruchamiane aplikacje i zmiany w plikach. Brakuje tylko kontroli nad ładowanymi plikami DLL.