728x90
반응형

TCPDump 사용법: 설치부터 활용까지

TCPDump는 네트워크 트래픽을 캡처하고 분석하는 데 사용되는 강력한 명령줄 도구입니다. TCPDump의 설치부터 기본적인 활용법까지 단계적으로 설명하겠습니다.

1. TCPDump 설치

  • Ubuntu/Debian 기반 시스템:

    • 패키지 목록 업데이트:
      sudo apt-get update
    • TCPDump 설치:
      sudo apt-get install tcpdump
  • CentOS/RHEL 기반 시스템:

    • TCPDump 설치:
      sudo yum install tcpdump
  • Fedora:

    • TCPDump 설치:
      sudo dnf install tcpdump

2. 기본 사용법

  • 네트워크 인터페이스 확인:

    • 사용 가능한 네트워크 인터페이스 목록 출력:
      sudo tcpdump -D
    • 출력 예시:
      1. eth0
      2. wlan0
      3. lo
  • 기본 패킷 캡처:

    • 특정 인터페이스에서 패킷 캡처 시작:
      sudo tcpdump -i eth0
    • -i 옵션은 캡처할 인터페이스를 지정

3. 패킷 저장 및 읽기

  • 패킷을 파일로 저장:

    • 캡처한 데이터를 파일로 저장:
      sudo tcpdump -i eth0 -w capture.pcap
    • -w 옵션은 캡처한 데이터를 파일로 저장
  • 저장된 패킷 파일 읽기:

    • 파일에서 패킷 읽기:
      sudo tcpdump -r capture.pcap
    • -r 옵션은 파일에서 패킷을 읽음

4. 필터링 옵션

  • 특정 호스트의 트래픽 캡처:

    • 특정 호스트의 트래픽만 캡처:
      sudo tcpdump -i eth0 host 192.168.1.1
  • 특정 포트의 트래픽 캡처:

    • 특정 포트의 트래픽만 캡처:
      sudo tcpdump -i eth0 port 80
  • 특정 프로토콜의 트래픽 캡처:

    • 특정 프로토콜의 트래픽만 캡처:
      sudo tcpdump -i eth0 tcp

5. 출력 형식 조정

  • 더 자세한 출력:

    • 패킷에 대한 더 자세한 정보 출력:
      sudo tcpdump -i eth0 -v
    • -v 옵션은 더 자세한 정보를 출력
  • 가장 자세한 출력:

    • 가장 자세한 정보 출력:
      sudo tcpdump -i eth0 -vv
  • 헤더와 페이로드 모두 출력:

    • 패킷의 헤더와 페이로드 모두 출력:
      sudo tcpdump -i eth0 -X
    • -X 옵션은 패킷의 헤더와 페이로드를 모두 출력

6. 실전 예제

  • HTTP 트래픽 캡처:

    • HTTP 트래픽 캡처 및 파일로 저장:
      sudo tcpdump -i eth0 tcp port 80 -w http_traffic.pcap
  • 특정 서브넷의 트래픽 캡처:

    • 특정 서브넷의 트래픽 캡처:
      sudo tcpdump -i eth0 net 192.168.1.0/24
  • ICMP 패킷 캡처:

    • ICMP 패킷 캡처:
      sudo tcpdump -i eth0 icmp

7. TCPDump 출력 해석

TCPDump의 출력은 네트워크 트래픽을 분석하는 데 중요한 정보를 제공합니다. 여기서는 TCPDump 출력의 각 부분을 해석하는 방법을 예제로 설명하겠습니다.

  • 기본 출력 예시:

    sudo tcpdump -i eth0
    • 출력 예시:
      12:34:56.789123 IP 192.168.1.2.12345 > 192.168.1.1.80: Flags [S], seq 123456789, win 65535, options [mss 1460,sackOK,TS val 123456789 ecr 0,nop,wscale 7], length 0
  • 출력 해석:

    • 12:34:56.789123: 패킷이 캡처된 시간 (시:분:초.마이크로초)
    • IP: 캡처된 패킷의 프로토콜 (여기서는 IP)
    • 192.168.1.2.12345: 출발지 IP 주소와 포트 번호
    • >: 패킷이 전송되는 방향
    • 192.168.1.1.80: 목적지 IP 주소와 포트 번호
    • Flags [S]: TCP 플래그 (여기서는 SYN 플래그)
    • seq 123456789: 시퀀스 번호
    • win 65535: 윈도우 크기
    • options [mss 1460,sackOK,TS val 123456789 ecr 0,nop,wscale 7]: TCP 옵션
    • length 0: 패킷의 데이터 길이

8. HTTP 헤더와 페이로드 디코딩

TCPDump를 사용하여 HTTP 트래픽을 캡처하고, 헤더와 페이로드를 디코딩하여 분석하는 방법을 설명합니다.

  • HTTP 트래픽 캡처:

    • HTTP 트래픽 캡처 및 파일로 저장:
      sudo tcpdump -i eth0 tcp port 80 -w http_traffic.pcap
  • HTTP 트래픽 디코딩:

    • 캡처된 HTTP 트래픽을 읽고 디코딩:
      sudo tcpdump -A -r http_traffic.pcap
    • -A 옵션은 패킷의 페이로드를 ASCII 형식으로 출력
    • -r 옵션은 파일에서 패킷을 읽음
  • 출력 예시:

    12:34:56.789123 IP 192.168.1.2.12345 > 192.168.1.1.80: Flags [P.], seq 123456789:123456890, ack 987654321, win 65535, length 101
    E..e..@.@.u...........P..GET / HTTP/1.1
    Host: example.com
    User-Agent: curl/7.68.0
    Accept: */*
  • 출력 해석:

    • GET / HTTP/1.1: HTTP 요청 메서드와 경로
    • Host: example.com: 요청된 호스트
    • User-Agent: curl/7.68.0: 요청을 보낸 클라이언트 정보
    • Accept: */*: 클라이언트가 수락할 수 있는 콘텐츠 유형

9. 결론

  • TCPDump는 네트워크 트래픽을 분석하는 데 매우 유용한 도구
  • 기본적인 사용법과 예제를 통해 TCPDump를 효과적으로 활용할 수 있기를 바람
  • 추가적인 옵션과 고급 사용법은 TCPDump의 공식 문서를 참고
man tcpdump
728x90
반응형

+ Recent posts