TCPflow - Pag-analisar ug Pag-debug sa Trapiko sa Network sa Linux


Ang TCPflow usa ka libre, bukas nga tinubdan, gamhanan nga command line base nga himan alang sa pag-analisar sa trapiko sa network sa mga sistema nga sama sa Unix sama sa Linux. Gikuha niini ang mga datos nga nadawat o gibalhin sa mga koneksyon sa TCP, ug gitipigan kini sa usa ka file alang sa ulahi nga pagtuki, sa usa ka mapuslanon nga pormat nga nagtugot sa pagtuki sa protocol ug pag-debug.

Kini sa tinuud usa ka himan nga sama sa tcpdump samtang nagproseso kini sa mga pakete gikan sa wire o gikan sa gitipig nga file. Gisuportahan niini ang parehas nga kusgan nga mga ekspresyon sa pagsala nga gisuportahan sa katugbang niini. Ang bugtong kalainan mao nga ang tcpflow nagbutang sa tanan nga mga pakete sa TCP sa pagkahan-ay ug nag-assemble sa matag dagan sa usa ka bulag nga file (usa ka file alang sa matag direksyon sa dagan) alang sa ulahi nga pagtuki.

Ang feature set niini naglakip sa usa ka advanced plug-in system para sa pag-decompress sa compressed HTTP connections, pag-undo sa MIME encoding, o pag-imbitar sa mga third-party nga programa para sa post-processing ug daghan pa.

Adunay daghang mga kaso sa paggamit alang sa tcpflow nga naglakip sa pagsabut sa mga agianan sa packet sa network ug nagsuporta usab sa paghimo sa forensics sa network ug pagpadayag sa mga sulud sa mga sesyon sa HTTP.

Giunsa ang Pag-install sa TCPflow sa Linux Systems

Ang TCPflow anaa sa mga opisyal nga repositoryo sa mainstream GNU/Linux distributions, mahimo nimo kining i-install gamit ang imong package manager sama sa gipakita.

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

Human sa pag-instalar sa tcpflow, mahimo nimo kini ipadagan sa mga pribilehiyo sa superuser, kung dili gamiton ang sudo nga sugo. Timan-i nga kini naminaw sa aktibong network interface (pananglitan enp0s3).

$ sudo tcpflow

tcpflow: listening on enp0s3

Pinaagi sa default gitipigan sa tcpflow ang tanan nga nakuha nga datos sa mga file nga adunay mga ngalan sa porma (mahimo kini nga lahi kung mogamit ka pipila nga mga kapilian sama sa timestamp).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Karon maghimo kita usa ka lista sa direktoryo aron makita kung ang dagan sa tcp nakuha sa bisan unsang mga file.

$ 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

Sama sa among gihisgutan sa sayo pa, ang matag TCP flow gitipigan sa kaugalingon nga file. Gikan sa output sa ibabaw, imong makita nga adunay tulo ka transcript file, nga nagpakita sa tcpflow sa duha ka atbang nga direksyon, diin ang tinubdan IP sa unang file ug ang destinasyon IP sa ikaduhang file ug vice versa.

Ang unang file nga 192.168.043.031.52920-216.058.210.034.00443 naglangkob sa datos nga gibalhin gikan sa host 192.168.043.031 (ang localhost diin ang tcpflow gipadagan) pinaagi sa port 52920, ngadto sa host 8.0.341.

Ug ang ikaduhang file 216.058.210.034.00443-192.168.043.031.52920 naglangkob sa data nga gipadala gikan sa host 216.058.210.034 (ang hilit nga host) pinaagi sa port 443 ngadto sa host 192.168.043.03.

Adunay usab usa ka XML nga report nga nahimo, nga adunay sulud nga kasayuran bahin sa programa sama sa kung giunsa kini gihugpong, ug ang kompyuter nga gipadagan niini ug usa ka rekord sa matag koneksyon sa tcp.

Sama sa imong namatikdan, ang tcpflow nagtipig sa mga transcript file sa kasamtangan nga direktoryo pinaagi sa default. Ang -o nga opsyon makatabang kanimo sa pagtino sa output directory diin ang mga transcript files isulat.

$ 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

Mahimo usab nimo nga i-print ang mga sulod sa mga pakete aron ma-stdout samtang kini madawat, nga dili magtago sa bisan unsang nakuha nga datos sa mga file, gamit ang -c nga bandila sama sa mosunod.

Aron masulayan kini nga epektibo, pag-abli sa ikaduhang terminal ug pagdagan og ping, o pag-browse sa internet. Kinahanglan nimo nga makita ang mga detalye sa ping o ang imong mga detalye sa pag-browse nga nakuha sa tcpflow.

$ sudo tcpflow -c

Posible nga makuha ang tanan nga trapiko sa usa ka partikular nga pantalan, pananglitan port 80 (HTTP). Sa kaso sa HTTP nga trapiko, imong makita ang HTTP Headers nga gisundan sa sulod sa tanan sa stdout o sa usa ka file kung ang -c switch matangtang.

$ sudo tcpflow port 80

Aron makuha ang mga pakete gikan sa usa ka piho nga interface sa network, gamita ang bandila nga -i aron itakda ang ngalan sa interface.

$ sudo tcpflow -i eth0 port 80

Mahimo usab nimong itakda ang usa ka target host (ang gidawat nga mga kantidad mao ang IP address, hostname o mga domain), ingon sa gipakita.

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

Mahimo nimong palihokon ang tanan nga pagproseso gamit ang tanang scanner gamit ang -a flag, kini katumbas sa -e all switch.

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

Ang usa ka piho nga scanner mahimo usab nga ma-aktibo; ang magamit nga mga scanner naglakip sa md5, http, netviz, tcpdemux ug wifiviz (pagdagan ang tcpflow -H aron makita ang detalyado nga kasayuran bahin sa matag scanner).

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

Ang mosunod nga pananglitan nagpakita kon unsaon pagpagana ang tanang scanner gawas sa tcpdemux.

$ sudo tcpflow -a -x tcpdemux 

Ang TCPflow kasagaran mosulay sa pagbutang sa network interface ngadto sa promiscuous mode sa dili pa makuha ang mga packet. Mahimo nimo kining mapugngan gamit ang -p nga bandera sama sa gipakita.

$ sudo tcpflow -p -i eth0

Para basahon ang mga packet gikan sa tcpdump pcap file, gamita ang -r flag.

$ sudo tcpflow -f file.pcap

Mahimo nimong palihokon ang verbose mode gamit ang -v o -d 10 nga mga opsyon.

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

Importante: Usa ka limitasyon sa tcpflow mao nga, sa pagkakaron wala kini makasabot sa mga tipik sa IP, busa ang datos nga gipasa isip kabahin sa mga koneksyon sa TCP nga adunay mga IP fragment dili makuha sa hustong paagi.

Para sa dugang nga impormasyon ug mga opsyon sa paggamit, tan-awa ang tcpflow man page.

$ man tcpflow 

TCPflow Github repository: https://github.com/simsong/tcpflow

Kana lang sa pagkakaron! Ang TCPflow usa ka gamhanan nga TCP flow recorder nga mapuslanon sa pagsabot sa network packet flow ug paghimo sa network forensics, ug uban pa. Sulayi kini ug ipaambit kanamo ang imong mga hunahuna bahin niini sa mga komento.