TCPflow - Analysoi ja korjaa verkkoliikennettä Linuxissa


TCPflow on ilmainen, avoimen lähdekoodin tehokas komentorivipohjainen työkalu verkkoliikenteen analysointiin Unixin kaltaisissa järjestelmissä, kuten Linuxissa. Se sieppaa TCP-yhteyksien kautta vastaanotetut tai siirretyt tiedot ja tallentaa ne tiedostoon myöhempää analysointia varten hyödyllisessä muodossa, joka mahdollistaa protokollan analysoinnin ja virheenkorjauksen.

Se on itse asiassa tcpdump-tyyppisiä työkaluja, koska se käsittelee paketteja langasta tai tallennetusta tiedostosta. Se tukee samoja tehokkaita suodatusilmauksia, joita sen vastine tukee. Ainoa ero on, että tcpflow asettaa kaikki TCP-paketit järjestykseen ja kokoaa jokaisen vuon erilliseen tiedostoon (tiedosto jokaiselle virtaussuunnalle) myöhempää analysointia varten.

Sen ominaisuusjoukko sisältää edistyneen laajennusjärjestelmän pakattujen HTTP-yhteyksien purkamiseen, MIME-koodauksen kumoamiseen tai kolmannen osapuolen ohjelmien kutsumiseen jälkikäsittelyyn ja paljon muuta.

Tcpflow-sovelluksessa on monia käyttötapauksia, joihin sisältyy verkkopakettivirtojen ymmärtäminen ja tukee myös verkon rikosteknisiä tutkimuksia ja HTTP-istuntojen sisällön paljastamista.

Kuinka asentaa TCPflow Linux-järjestelmiin

TCPflow on saatavana GNU/Linux-jakelujen virallisten arkistojen kautta. Voit asentaa sen pakettien hallinnan avulla kuvan mukaisesti.

$ sudo apt install tcpflow	#Debian/Ubuntu
$ sudo yum install tcpflow	#CentOS/RHEL
$ sudo dnf install tcpflow	#Fedora 22+

Kun olet asentanut tcpflow, voit käyttää sitä pääkäyttäjän oikeuksilla, muuten käytä sudo-komentoa. Huomaa, että se kuuntelee aktiivista verkkoliitäntää (esimerkiksi enp0s3).

$ sudo tcpflow

tcpflow: listening on enp0s3

Oletusarvoisesti tcpflow tallentaa kaikki siepatut tiedot tiedostoihin, joiden nimiä on muodossa (tämä voi olla erilainen, jos käytät tiettyjä vaihtoehtoja, kuten aikaleima).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Tehdään nyt hakemistoluettelo, jotta voidaan tarkistaa, onko TCP-virtaus kaapattu mihinkään tiedostoon.

$ ls -1

total 20
-rw-r--r--. 1 root    root     808 Sep 19 12:49 192.168.043.031.52920-216.058.210.034.00443
-rw-r--r--. 1 root    root      59 Sep 19 12:49 216.058.210.034.00443-192.168.043.031.52920

Kuten aiemmin mainitsimme, kukin TCP-virta tallennetaan omaan tiedostoonsa. Yllä olevasta lähdöstä näet, että transkriptiotiedostoja on kolme, jotka osoittavat tcpflow: n kahteen vastakkaiseen suuntaan, missä lähde-IP ensimmäisessä tiedostossa ja kohde-IP toisessa tiedostossa ja päinvastoin.

Ensimmäinen tiedosto 192.168.043.031.52920-216.058.210.034.00443 sisältää dataa, joka on siirretty isännältä 192.168.043.031 (paikallinen isäntä, jolle tcpflow suoritettiin) portin 52920 kautta isäntään 216.058.210.034 (etäisäntä) portin 443 kautta.

Ja toinen tiedosto 216.058.210.034.00443-192.168.043.031.52920 sisältää tietoja, jotka on lähetetty isännältä 216.058.210.034 (etäisäntä) portin 443 kautta isännälle 192.168.043.031 (paikallinen isäntä, jolle tcpflow suoritettiin) portin 52920 kautta.

Luotu on myös XML-raportti, joka sisältää tietoja ohjelmasta, esimerkiksi siitä, miten se on koottu, tietokoneesta, jolla sitä ajettiin, sekä tietueen jokaisesta TCP-yhteydestä.

Kuten olet ehkä huomannut, tcpflow tallentaa transkriptiotiedostot oletusarvoisesti nykyiseen hakemistoon. Vaihtoehto -o voi auttaa määrittämään lähtöhakemiston, johon transkriptiotiedostot kirjoitetaan.

$ sudo tcpflow -o tcpflow_files
$ sudo ls -l tcpflow_files

total 32
-rw-r--r--. 1 root root 1665 Sep 19 12:56 157.240.016.035.00443-192.168.000.103.45986
-rw-r--r--. 1 root root   45 Sep 19 12:56 169.044.082.101.00443-192.168.000.103.55496
-rw-r--r--. 1 root root 2738 Sep 19 12:56 172.217.166.046.00443-192.168.000.103.39954
-rw-r--r--. 1 root root   68 Sep 19 12:56 192.168.000.102.00022-192.168.000.103.42436
-rw-r--r--. 1 root root  573 Sep 19 12:56 192.168.000.103.39954-172.217.166.046.00443
-rw-r--r--. 1 root root 4067 Sep 19 12:56 192.168.000.103.45986-157.240.016.035.00443
-rw-r--r--. 1 root root   38 Sep 19 12:56 192.168.000.103.55496-169.044.082.101.00443
-rw-r--r--. 1 root root 3159 Sep 19 12:56 report.xml

Voit myös tulostaa pakettien sisällön vakiona heti, kun ne vastaanotetaan, tallentamatta siepattuja tietoja tiedostoihin käyttämällä -c -merkkiä seuraavasti.

Testaa tämä tehokkaasti avaamalla toinen pääte ja suorittamalla ping tai selaamalla Internetiä. Sinun pitäisi pystyä näkemään ping-yksityiskohdat tai selaustietosi, jotka tcpflow sieppaa.

$ sudo tcpflow -c

On mahdollista siepata kaikki tietyn portin liikenne, esimerkiksi portti 80 (HTTP). HTTP-liikenteen tapauksessa näet HTTP-otsikot ja sen sisällön koko vakiotiedostossa tai yhdessä tiedostossa, jos -c -kytkin poistetaan.

$ sudo tcpflow port 80

Jos haluat kaapata paketteja tietyltä verkkoliitännältä, määritä käyttöliittymän nimi -i -lipulla.

$ sudo tcpflow -i eth0 port 80

Voit myös määrittää kohde-isännän (hyväksytyt arvot ovat IP-osoite, isäntänimi tai toimialueet), kuten kuvassa.

$ sudo tcpflow -c host 192.68.43.1
OR
$ sudo tcpflow -c host www.google.com 

Voit ottaa kaiken käsittelyn käyttöön kaikilla skannereilla, joissa on lippu -a , tämä vastaa kytkintä -e all.

$ sudo tcpflow -a  
OR
$ sudo tcpflow -e all

Erityinen skanneri voidaan myös aktivoida; käytettävissä olevat skannerit sisältävät md5, http, netviz, tcpdemux ja wifiviz (suorita tcpflow -H nähdäksesi tarkat tiedot kustakin skannerista).

$ sudo tcpflow -e http
OR
$ sudo tcpflow -e md5
OR
$ sudo tcpflow -e netviz
OR
$ sudo tcpflow -e tcpdemux
OR
$ sudo tcpflow -e wifiviz

Seuraava esimerkki näyttää, kuinka kaikki skannerit otetaan käyttöön paitsi tcpdemux.

$ sudo tcpflow -a -x tcpdemux 

TCPflow yrittää yleensä laittaa verkkoliitännän lupaavaan tilaan ennen pakettien sieppaamista. Voit estää tämän käyttämällä -p -lippua kuvan mukaisesti.

$ sudo tcpflow -p -i eth0

Voit lukea paketteja tcpdump pcap-tiedostosta käyttämällä -r -lippua.

$ sudo tcpflow -f file.pcap

Voit ottaa käyttöön tarkan tilan käyttämällä vaihtoehtoja -v tai -d 10 .

$ sudo tcpflow -v
OR
$ sudo tcpflow -d 10

Tärkeää: Yksi tcpflow: n rajoitus on, että se ei tällä hetkellä ymmärrä IP-fragmentteja, joten IP-fragmentteja sisältävien TCP-yhteyksien osana lähetettyä dataa ei siepata oikein.

Lisätietoja ja käyttömahdollisuudet ovat tcpflow-man-sivulla.

$ man tcpflow 

TCPflow Github -tietovarasto: https://github.com/simsong/tcpflow

Tässä kaikki tältä erää! TCPflow on tehokas TCP-vuontallennin, joka on hyödyllinen verkon pakettivirtojen ymmärtämisessä ja verkon rikosteknisen tutkimuksen suorittamisessa ja niin edelleen. Kokeile sitä ja jaa ajatuksesi siitä meille kommenteissa.