Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

마스터 TCPDump:패킷 분석을 위한 15가지 필수 명령 예

마스터 TCPDump:패킷 분석을 위한 15가지 필수 명령 예

tcpdump 명령은 패킷 분석기라고도 합니다.

tcpdump 명령은 대부분의 Unix 운영 체제에서 작동합니다. tcpdump를 사용하면 캡처된 패킷을 저장하여 향후 분석에 사용할 수 있습니다. 저장된 파일은 동일한 tcpdump 명령으로 볼 수 있습니다. Wireshark와 같은 오픈 소스 소프트웨어를 사용하여 tcpdump pcap 파일을 읽을 수도 있습니다.

이 tcpdump 튜토리얼에서는 tcpdump 명령을 사용하는 방법에 대한 몇 가지 실제 예를 논의하겠습니다.

1. tcpdump -i를 사용하여 특정 이더넷 인터페이스에서 패킷 캡처

옵션 없이 tcpdump 명령을 실행하면 모든 인터페이스를 통과하는 모든 패킷이 캡처됩니다. -i 옵션을 tcpdump 명령과 함께 사용하면 특정 이더넷 인터페이스를 필터링할 수 있습니다.

$ tcpdump -i eth1
14:59:26.608728 IP xx.domain.netbcp.net.52497 > valh4.lell.net.ssh: . ack 540 win 16554
14:59:26.610602 IP resolver.lell.net.domain > valh4.lell.net.24151: 4278 1/0/0 (73)
14:59:26.611262 IP valh4.lell.net.38527 > resolver.lell.net.domain: 26364+ PTR? 244.207.104.10.in-addr.arpa. (45)

이 예에서 tcpdump는 eth1 인터페이스의 모든 패킷 흐름을 캡처하여 표준 출력에 표시합니다.

참고 :Editcap 유틸리티는 덤프 파일에서 특정 패킷을 선택하거나 제거하고 이를 지정된 형식으로 변환하는 데 사용됩니다.

2. tcpdump -c를 사용하여 N개의 패킷만 캡처

tcpdump 명령을 실행하면 tcpdump 명령을 취소할 때까지 패킷이 제공됩니다. -c 옵션을 사용하면 캡처할 패킷 수를 지정할 수 있습니다.

$ tcpdump -c 2 -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:38:38.184913 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457255642:1457255758(116) ack 1561463966 win 63652
14:38:38.690919 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
2 packets captured
13 packets received by filter
0 packets dropped by kernel

위의 tcpdump 명령은 인터페이스 eth0에서 2개의 패킷만 캡처했습니다.

참고: Mergecap 및 TShark:Mergecap은 여러 덤프를 단일 덤프 파일로 결합하는 패킷 덤프 결합 도구입니다. Tshark는 네트워크 트래픽을 분석하는 데 사용할 수 있는 네트워크 패킷을 캡처하는 강력한 도구입니다. Wireshark 네트워크 분석기 배포와 함께 제공됩니다.

3. tcpdump -A를 사용하여 캡처된 패킷을 ASCII로 표시

다음 tcpdump 구문은 패킷을 ASCII로 인쇄합니다.

$ tcpdump -A -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:34:50.913995 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457239478:1457239594(116) ack 1561461262 win 63652
E.....@.@..]..i...9...*.V...]...P....h....E...>{..U=...g.
......G..7\+KA....A...L.
14:34:51.423640 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
E.....@.@..\..i...9...*.V..*]...P....h....7......X..!....Im.S.g.u:*..O&....^#Ba...
E..(R.@.|.....9...i.*...]...V..*P..OWp........

참고: Ifconfig 명령은 네트워크 인터페이스를 구성하는 데 사용됩니다.

4. tcpdump -XX를 사용하여 캡처된 패킷을 HEX 및 ASCII로 표시

일부 사용자는 16진수 값으로 패킷을 분석하고 싶을 수도 있습니다. tcpdump는 ASCII 및 HEX 형식 모두로 패킷을 인쇄하는 방법을 제공합니다.

$tcpdump -XX -i eth0
18:52:54.859697 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 232 win 16511
 0x0000: 0050 569c 35a3 0019 bb1c 0c00 0800 4500 .PV.5.........E.
 0x0010: 0028 042a 4000 7906 c89c 10b5 aaf6 0f9a .(.*@.y.........
 0x0020: 69c4 f999 0016 57db 6e08 c712 ea2e 5010 i.....W.n.....P.
 0x0030: 407f c976 0000 0000 0000 0000 @..v........
18:52:54.877713 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]
 0x0000: 0050 569c 35a3 0000 0000 0000 0800 4600 .PV.5.........F.
 0x0010: 0024 0000 0000 0102 3ad3 0a00 0000 e000 .$......:.......
 0x0020: 0001 9404 0000 1101 ebfe 0000 0000 0300 ................
 0x0030: 0000 0000 0000 0000 0000 0000 ............

5. tcpdump -w를 사용하여 패킷을 캡처하고 파일에 씁니다.

tcpdump를 사용하면 패킷을 파일에 저장할 수 있으며 나중에 추가 분석을 위해 패킷 파일을 사용할 수 있습니다.

$ tcpdump -w 08232010.pcap -i eth0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
32 packets captured
32 packets received by filter
0 packets dropped by kernel

-w 옵션은 패킷을 주어진 파일에 기록합니다. 파일 확장자는 모든 네트워크 프로토콜에서 읽을 수 있는 .pcap이어야 합니다.
분석기.

6. tcpdump -r을 사용하여 저장된 파일에서 패킷 읽기

아래와 같이 캡처된 pcap 파일을 읽고 분석할 패킷을 볼 수 있습니다.

$tcpdump -tttt -r data.pcap
2010-08-22 21:35:26.571793 00:50:56:9c:69:38 (oui Unknown) > Broadcast, ethertype Unknown (0xcafe), length 74:
 0x0000: 0200 000a ffff 0000 ffff 0c00 3c00 0000 ............<...
 0x0010: 0000 0000 0100 0080 3e9e 2900 0000 0000 ........>.).....
 0x0020: 0000 0000 ffff ffff ad00 996b 0600 0050 ...........k...P
 0x0030: 569c 6938 0000 0000 8e07 0000 V.i8........
2010-08-22 21:35:26.571797 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 800464396:800464448(52) ack 203316566 win 71
2010-08-22 21:35:26.571800 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 52:168(116) ack 1 win 71
2010-08-22 21:35:26.584865 IP valh5.lell.net.ssh > 11.154.12.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADC

7. tcpdump -n

을 사용하여 IP 주소로 패킷 캡처

위의 모든 예에서는 IP 주소가 아닌 DNS 주소로 패킷을 인쇄합니다. 다음 예에서는 패킷을 캡처하고 관련된 컴퓨터의 IP 주소를 표시합니다.

$ tcpdump -n -i eth0
15:01:35.170763 IP 10.0.19.121.52497 > 11.154.12.121.ssh: P 105:157(52) ack 18060 win 16549
15:01:35.170776 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 23988:24136(148) ack 157 win 113
15:01:35.170894 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 24136:24380(244) ack 157 win 113

8. tcpdump -tttt를 사용하여 적절하게 읽을 수 있는 타임스탬프로 패킷을 캡처하세요.

$ tcpdump -n -tttt -i eth0
2010-08-22 15:10:39.162830 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 49800 win 16390
2010-08-22 15:10:39.162833 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50288 win 16660
2010-08-22 15:10:39.162867 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50584 win 16586

9. N바이트보다 긴 패킷 읽기

tcpdump 명령을 통해 'greater' 필터를 사용하면 n 바이트보다 큰 패킷만 수신할 수 있습니다.

$ tcpdump -w g_1024.pcap greater 1024

10. 특정 프로토콜 유형의 패킷만 수신

프로토콜 유형에 따라 패킷을 수신할 수 있습니다. fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp 및 udp 프로토콜 중 하나를 지정할 수 있습니다. 다음 예에서는 eth0 인터페이스를 통해 흐르는 arp 패킷만 캡처합니다.

$ tcpdump -i eth0 arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
19:41:52.809642 arp who-has valh5.lell.net tell valh9.lell.net
19:41:52.863689 arp who-has 11.154.12.1 tell valh6.lell.net
19:41:53.024769 arp who-has 11.154.12.1 tell valh7.lell.net

11. N바이트보다 작은 패킷 읽기

tcpdump 명령을 통해 'less' 필터를 사용하면 n 바이트보다 작은 패킷만 수신할 수 있습니다.

$ tcpdump -w l_1024.pcap less 1024

12. tcpdump 포트를 사용하여 특정 포트에서 패킷 흐름 수신

컴퓨터의 특정 포트에서 수신된 모든 패킷을 알고 싶다면 아래와 같이 tcpdump 명령을 사용할 수 있습니다.

$ tcpdump -i eth0 port 22
19:44:44.934459 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 18932:19096(164) ack 105 win 71
19:44:44.934533 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19096:19260(164) ack 105 win 71
19:44:44.934612 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19260:19424(164) ack 105 win 71

13. 특정 대상 IP 및 포트에 대한 패킷 캡처

패킷에는 소스 및 대상 IP와 포트 번호가 있습니다. tcpdump를 사용하면 소스 또는 대상 IP와 포트 번호에 필터를 적용할 수 있습니다. 다음 명령은 특정 대상 IP와 포트 번호 22를 사용하여 eth0의 패킷 흐름을 캡처합니다.

$ tcpdump -w xpackets.pcap -i eth0 dst 10.181.140.216 and port 22

14. 두 호스트 간의 TCP 통신 패킷 캡처

서로 다른 두 시스템의 서로 다른 두 프로세스가 tcp 프로토콜을 통해 통신하는 경우 아래와 같이 tcpdump를 사용하여 해당 패킷을 캡처할 수 있습니다.

$tcpdump -w comm.pcap -i eth0 dst 16.181.170.246 and port 22

네트워크 프로토콜 분석 도구를 사용하여 comm.pcap 파일을 열어 잠재적인 문제를 디버깅할 수 있습니다.

15. tcpdump 필터 패킷 – arp 및 rarp를 제외한 모든 패킷 캡처

tcpdump 명령에서 "and", "or" 및 "not" 조건을 제공하여 그에 따라 패킷을 필터링할 수 있습니다.

$ tcpdump -i eth0 not arp and not rarp
20:33:15.479278 IP resolver.lell.net.domain > valh4.lell.net.64639: 26929 1/0/0 (73)
20:33:15.479890 IP valh4.lell.net.16053 > resolver.lell.net.domain: 56556+ PTR? 255.107.154.15.in-addr.arpa. (45)
20:33:15.480197 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 540:1504(964) ack 1 win 96
20:33:15.487118 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 540 win 16486
20:33:15.668599 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]