소개
이 실습에서는 네트워크 분석의 필수 도구인 Wireshark 를 사용하여 네트워크 트래픽을 필터링하는 방법을 배웁니다. 미리 캡처된 패킷 파일을 분석하고, 디스플레이 필터를 적용하여 특정 트래픽을 추출하며, 추가 검토를 위해 필터링된 결과를 내보내는 과정을 연습합니다. 이러한 기술은 네트워크 패턴 식별, 연결 문제 해결, 네트워크 통신 방식 이해에 큰 도움이 됩니다.
이 실습에서는 네트워크 분석의 필수 도구인 Wireshark 를 사용하여 네트워크 트래픽을 필터링하는 방법을 배웁니다. 미리 캡처된 패킷 파일을 분석하고, 디스플레이 필터를 적용하여 특정 트래픽을 추출하며, 추가 검토를 위해 필터링된 결과를 내보내는 과정을 연습합니다. 이러한 기술은 네트워크 패턴 식별, 연결 문제 해결, 네트워크 통신 방식 이해에 큰 도움이 됩니다.
그래픽 인터페이스를 살펴보기 전에 Wireshark 의 명령줄 버전인 tshark로 시작해 보겠습니다. tshark는 빠른 분석과 스크립팅에 매우 강력한 도구입니다. 이 단계에서는 설치 상태를 확인하고 제공된 패킷 캡처 파일의 기본 정보를 점검합니다.
먼저 tshark가 올바르게 설치되었는지 버전을 확인합니다.
tshark --version
다음과 같이 Wireshark 및 tshark 버전 정보가 출력되어야 합니다.
TShark (Wireshark) x.x.x (Git vx.x.x packaged as x.x.x-1)
...
프로젝트 디렉토리에 capture.pcap이라는 샘플 패킷 캡처 파일이 준비되어 있습니다. ls 명령어로 파일이 있는지 확인합니다.
ls -lh capture.pcap
파일 크기와 이름을 포함한 상세 정보가 표시됩니다.
-rw-rw-r-- 1 labex labex 9.1M Oct 24 2015 capture.pcap
캡처 파일의 전체적인 요약 정보를 얻으려면 Wireshark 와 함께 제공되는 capinfos 유틸리티를 사용합니다.
capinfos capture.pcap
이 명령어는 패킷 수, 캡처 시간, 평균 패킷 크기 등 파일에 대한 메타데이터를 제공합니다.
File name: capture.pcap
File type: Wireshark/tcpdump/... - pcap
File encapsulation: Ethernet
File timestamp precision: microseconds (6)
Packet size limit: file hdr: 65535 bytes
Number of packets: 14 k
File size: 9444 kB
Data size: 9216 kB
Capture duration: 298.505344 seconds
First packet time: 2011-01-26 02:52:22.484409
Last packet time: 2011-01-26 02:57:20.989753
Data byte rate: 30 kBps
Data bit rate: 247 kbps
Average packet size: 646.28 bytes
Average packet rate: 47 packets/s
SHA256: 77d06d3f33f1a95fb9f2610f20ead8ce978449077d6ba22d4945b85bd48f75d1
RIPEMD160: 68e950b2e438c7be011a46646ddfc8105b65b339
SHA1: 06e502dca8dbfe8e6a9cabc61f722d94756f6db9
Strict time order: True
Number of interfaces in file: 1
Interface #0 info:
Encapsulation = Ethernet (1 - ether)
Capture length = 65535
Time precision = microseconds (6)
Time ticks per second = 1000000
Number of stat entries = 0
Number of packets = 14261
마지막으로 tshark를 사용하여 파일에서 처음 5 개의 패킷을 읽어봅니다. -r 플래그는 입력 파일을 지정하고, -c는 패킷 개수를 제한합니다.
tshark -r capture.pcap -c 5
처음 5 개 패킷에 대한 한 줄 요약이 표시되어 트래픽의 내용을 빠르게 훑어볼 수 있습니다.
1 0.000000 192.168.3.131 → 72.14.213.138 HTTP 997 GET /complete/search?client=chrome&hl=en-US&q=cr HTTP/1.1
2 0.029841 72.14.213.138 → 192.168.3.131 HTTP 440 HTTP/1.1 200 OK (text/javascript)
3 0.223883 192.168.3.131 → 72.14.213.102 TCP 66 55950 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1
4 0.229423 192.168.3.131 → 72.14.213.138 TCP 54 57011 → 80 [ACK] Seq=944 Ack=387 Win=16192 Len=0
5 0.242649 72.14.213.102 → 192.168.3.131 TCP 66 80 → 55950 [SYN, ACK] Seq=0 Ack=1 Win=5720 Len=0 MSS=1430 SACK_PERM=1 WS=64
패킷 캡처 파일에는 수천 개의 패킷이 포함될 수 있어 특정 정보를 찾기가 어려울 수 있습니다. 디스플레이 필터는 특정 기준에 맞는 패킷만 골라내어 보여주는 역할을 합니다. 이 단계에서는 tshark를 사용하여 기본 필터를 적용하는 방법을 배웁니다.
디스플레이 필터는 -Y(대문자 Y) 플래그를 사용하여 적용합니다. TCP 패킷만 보려면 tcp 필터를 사용합니다. 파일에서 처음 5 개의 TCP 패킷을 확인해 보겠습니다.
tshark -r capture.pcap -Y "tcp" -c 5
이제 프로토콜이 TCP 인 패킷만 출력됩니다.
IP 주소를 기준으로 필터링할 수도 있습니다. 출발지 IP 주소가 192.168.3.131인 모든 패킷을 보려면 ip.src 필터를 사용합니다.
tshark -r capture.pcap -Y "ip.src == 192.168.3.131" -c 5
정확한 일치를 위해 == 연산자를 사용한 점에 유의하세요.
필터는 &&(AND) 와 같은 논리 연산자를 사용하여 조합할 수 있습니다. 출발지 IP 가 192.168.3.131인 TCP 패킷을 찾으려면 앞의 두 필터를 결합합니다.
tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131"
나중에 분석하기 위해 필터링된 결과를 새로운 캡처 파일로 저장할 수 있습니다. -w 플래그는 출력 파일을 지정합니다. 필터링된 TCP 패킷을 filtered_tcp.pcap이라는 파일로 저장해 보겠습니다.
tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131" -w filtered_tcp.pcap
새 파일이 생성되었는지 확인합니다.
ls -lh filtered_tcp.pcap
디렉토리에 크기가 줄어든 새로운 캡처 파일이 표시될 것입니다.
tshark는 자동화에 탁월하지만, Wireshark 의 그래픽 사용자 인터페이스 (GUI) 는 심층적인 패킷 분석을 위한 풍부하고 대화형인 환경을 제공합니다. 이 단계에서는 Wireshark GUI 를 실행하고 주요 구성 요소를 살펴봅니다.
터미널에서 Wireshark 애플리케이션을 실행합니다. 중요: Wireshark 는 그래픽 환경이 필요한 GUI 애플리케이션이므로 독립형 터미널 인터페이스가 아닌 데스크톱 인터페이스를 사용하고 있는지 확인하세요. 명령어 끝에 붙는 앰퍼샌드 (&) 는 애플리케이션을 백그라운드에서 실행하여 터미널을 계속 사용할 수 있게 해줍니다.
wireshark &
참고: 데스크톱 환경이 없는 독립형 터미널에서 이 명령을 실행하면 Wireshark 가 시작되지 않습니다. GUI 애플리케이션을 실행할 때는 항상 데스크톱 인터페이스를 사용하세요.

Wireshark 메인 창이 나타납니다. 기존 파일을 분석하는 것이므로 네트워크 인터페이스를 선택할 필요 없이 capture.pcap 파일을 엽니다.
File -> Open...을 클릭합니다./home/labex/project로 이동하여 capture.pcap을 선택합니다.Open 버튼을 클릭합니다.이제 메인 창에 파일의 패킷들이 채워집니다. 다음 세 가지 주요 영역 (Pane) 을 살펴보세요.

패킷 목록 영역에서 여러 패킷을 클릭해 보며 패킷 상세 영역과 패킷 바이트 영역의 정보가 어떻게 바뀌는지 관찰하세요. 이러한 대화형 탐색은 Wireshark 의 가장 강력한 기능 중 하나입니다.
tshark에서 배운 디스플레이 필터 구문은 Wireshark GUI 에서도 동일하게 작동합니다. GUI 는 즉각적인 시각적 피드백을 제공하므로 복잡한 필터를 만들고 테스트하기에 매우 편리합니다.
Wireshark 창 상단에서 **디스플레이 필터 바 (display filter bar)**를 찾으세요. "Apply a display filter..."라는 안내 문구가 적힌 긴 텍스트 입력창입니다.
HTTP 트래픽을 필터링해 보겠습니다. 필터 바에 http를 입력하고 Enter를 누르거나 바 오른쪽에 있는 화살표 모양의 Apply 버튼을 클릭합니다.
http

패킷 목록 영역이 즉시 업데이트되어 HTTP 패킷만 표시됩니다. 필터 구문이 올바르면 필터 바가 초록색으로 변합니다. 잘못된 필터를 입력하면 빨간색으로 변합니다.
이번에는 모든 DNS 트래픽을 찾아보겠습니다. 이전 필터를 지우고 필터 바에 dns를 입력한 후 Enter를 누릅니다.
dns
캡처 파일 내의 모든 도메인 이름 시스템 (DNS) 질의와 응답을 볼 수 있습니다.
tshark에서 했던 것처럼 필터를 조합할 수 있습니다. IP 주소가 192.168.3.131인 대상 (출발지 또는 목적지) 과 관련된 HTTP 트래픽을 찾으려면 ip.addr 필터와 http 필터를 결합합니다.
http && ip.addr == 192.168.3.131

이러한 강력한 조합을 통해 특정 대화 내용을 정밀하게 타격할 수 있습니다. tcp.port == 80(표준 HTTP 포트 트래픽) 이나 udp(UDP 트래픽) 와 같은 다른 필터도 실험해 보세요. 필터를 해제하고 다시 모든 패킷을 보려면 필터 바의 X 버튼을 클릭합니다.
관심 있는 이벤트를 분리하기 위해 트래픽을 필터링한 후에는 보고서 작성, 공유 또는 다른 도구에서의 추가 분석을 위해 결과를 내보내야 할 때가 많습니다. Wireshark 와 tshark는 데이터를 내보내는 여러 가지 방법을 제공합니다.
먼저 Wireshark GUI 에서 이전 단계와 같이 http 필터를 적용합니다.
현재 화면에 표시된 (필터링된) 패킷만 새로운 캡처 파일로 저장하려면 다음과 같이 합니다.
File -> Export Specified Packets...를 클릭합니다.Displayed 라디오 버튼이 선택되어 있는지 확인합니다.http_capture.pcap으로 지정하고 /home/labex/project 디렉토리에 저장합니다.
패킷 요약 정보를 텍스트나 CSV 파일로 내보낼 수도 있습니다. CSV 로 내보내려면 다음과 같이 합니다.
File -> Export Packet Dissections -> As CSV...를 클릭합니다.Displayed가 선택되었는지 확인합니다.http_packets.csv로 지정하고 프로젝트 디렉토리에 저장합니다.명령줄에서 tshark를 사용하여 동일한 내보내기 작업을 수행할 수 있습니다. 이는 자동화에 매우 유용합니다. 다음 명령어는 원본 capture.pcap을 읽어 http로 필터링하고, 특정 필드만 추출하여 CSV 파일로 내보냅니다.
tshark -r capture.pcap -Y "http" -T fields -e frame.number -e ip.src -e ip.dst -e http.request.method -e http.host -E header=y -E separator=, > http_export_cli.csv
-T fields: 출력 형식을 지정합니다.-e ...: 내보낼 필드 (컬럼) 를 지정합니다.-E header=y: 헤더 행을 추가합니다.-E separator=,: 구분자로 쉼표를 사용합니다.내보낸 파일들이 생성되었는지 확인합니다.
ls -lh http_*
디렉토리에 http_capture.pcap, http_packets.csv, http_export_cli.csv 파일이 생성된 것을 볼 수 있습니다.
이 실습에서는 Wireshark 와 명령줄 도구인 tshark를 사용하여 네트워크 트래픽을 필터링하는 핵심 방법을 배웠습니다. tshark와 capinfos를 사용하여 캡처 파일을 점검하는 것으로 시작하여, 특정 프로토콜과 IP 주소를 분리하기 위해 tshark와 Wireshark GUI 에서 디스플레이 필터를 적용하는 연습을 했습니다. 마지막으로, 보고 및 분석을 위해 필터링된 결과를 새로운 캡처 파일과 읽기 쉬운 CSV 파일로 내보내는 방법을 익혔습니다. 이러한 핵심 기술은 모든 네트워크 분석 및 트러블슈팅 작업의 기초가 됩니다.