소개
이 랩에서는 Wireshark 의 tshark 명령줄 도구를 사용하여 16 진수 출력을 통해 네트워크 패킷을 분석하는 방법을 배우게 됩니다. -r 플래그를 사용하여 패킷 캡처 파일 (capture.pcap) 을 읽고, -x를 사용하여 원시 패킷 데이터를 16 진수 형식으로 표시하는 연습을 할 것입니다.
이 연습을 통해 tshark 명령을 실행하고, 패킷 요약을 해석하며, 16 진수 덤프를 검사하는 방법을 익히게 됩니다. TCP 핸드셰이크 (TCP handshake) 예제를 분석하여 이 기술이 네트워크 문제 해결 및 보안 조사에 어떻게 도움이 되는지 이해하게 될 것입니다.
-r capture.pcap 으로 파일 읽기
이 단계에서는 Wireshark 의 명령줄 도구 tshark를 사용하여 -r 옵션으로 패킷 캡처 파일을 읽는 방법을 배우게 됩니다. 이는 미리 캡처된 네트워크 트래픽 데이터를 분석하는 기본적인 방법입니다.
시작하기 전에 PCAP 파일이 네트워크 인터페이스에서 캡처된 원시 네트워크 트래픽 데이터를 포함한다는 것을 이해하는 것이 중요합니다. -r 플래그를 사용하면 읽을 패킷 캡처 파일을 지정할 수 있으며, 이는 텍스트 편집기로 문서를 여는 것과 유사합니다. ~/project 디렉토리에 있는 capture.pcap이라는 샘플 파일을 사용합니다.
- 먼저, 올바른 디렉토리에 있는지 확인합니다.
tshark가 캡처 파일을 어디에서 찾아야 하는지 알아야 하므로 이는 매우 중요합니다.
cd ~/project
- 이제
tshark를 사용하여 캡처 파일을 읽습니다. 필터 없이 기본 명령을 사용하면 파일의 모든 패킷이 표시됩니다.
tshark -r capture.pcap
이 명령은 캡처 파일의 각 패킷에 대한 기본 정보를 표시합니다. 여기에는 다음이 포함됩니다.
- 패킷 번호 (캡처 순서 표시)
- 타임스탬프 (패킷이 캡처된 시간)
- 소스 및 대상 IP 주소 (패킷을 보내고 받은 주소)
- 프로토콜 (이것이 어떤 유형의 네트워크 통신인지)
- 패킷 길이 (패킷의 크기)
- 기본 프로토콜 정보 (각 프로토콜에 특정한 세부 정보)
예시 출력 (실제 출력은 다를 수 있습니다):
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
2 0.000123 192.168.1.2 → 192.168.1.1 TCP 66 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
3 0.000234 192.168.1.1 → 192.168.1.2 TCP 54 443 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0
이 출력은 두 호스트 간의 기본적인 TCP 핸드셰이크를 보여줍니다. [SYN]이 있는 첫 번째 패킷은 연결 요청을 나타내고, [SYN, ACK]가 있는 두 번째 패킷은 응답이며, 세 번째 [ACK]는 핸드셰이크를 완료합니다. 각 줄은 네트워크 통신의 연대기적 보기를 제공하면서 필수 세부 정보와 함께 하나의 네트워크 패킷을 나타냅니다.
-x 로 16 진수 덤프 활성화
이 단계에서는 Wireshark 의 명령줄 도구 tshark를 사용하여 네트워크 패킷의 원시 바이너리 콘텐츠를 검사하는 방법을 살펴봅니다. -x 옵션은 각 패킷을 구성하는 실제 16 진수 데이터를 보여주므로 심층적인 패킷 분석에 필수적이므로 특히 강력합니다.
네트워크 트래픽으로 작업할 때 패킷은 기본적으로 단순히 바이트 시퀀스입니다. -x 플래그는 tshark에게 다음을 표시하도록 지시합니다.
- 표준 패킷 헤더 정보 (소스/대상 주소 등)
- 패킷의 원시 데이터에 대한 완전한 16 진수 표현
- 해당 데이터의 ASCII 해석 (해당하는 경우)
진행하기 전에 패킷 캡처 파일이 저장된 올바른 작업 디렉토리에 있는지 확인해 보겠습니다.
cd ~/project
이제 16 진수 출력을 활성화하여 패킷 캡처 파일 (capture.pcap) 을 분석합니다.
tshark -r capture.pcap -x
이 명령은 각 패킷에 대해 세 가지 주요 섹션으로 나뉜 출력을 생성합니다.
- 기본 패킷 정보를 보여주는 요약 줄
- 원시 패킷 바이트를 보여주는 16 진수 덤프
- 해당 바이트의 ASCII 표현 (인쇄 가능한 문자 표시)
다음은 일반적인 출력 섹션의 모습입니다 (데모를 위해 축약됨).
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
0000 00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00 45 00 ..K.4V..."3D..E.
0010 00 34 12 34 00 00 80 06 78 9a c0 a8 01 01 c0 a8 .4.4....x.......
0020 01 02 01 bb c0 52 00 00 00 00 00 00 00 00 50 02 .....R........P.
0030 fa f0 00 00 00 00 00 00 00 00 ..........
16 진수 표시는 다음과 같이 구성됩니다.
- 가장 왼쪽 열 (0000, 0010 등) 은 16 진수로 바이트 오프셋을 표시합니다.
- 중간 섹션은 16 진수 형식으로 한 줄에 16 바이트의 패킷 데이터를 표시합니다.
- 오른쪽 섹션은 ASCII 문자 표현을 표시합니다 (인쇄할 수 없는 문자는 점으로 표시됨).
이 보기는 바이트 수준에서 프로토콜 헤더를 검사하거나 네트워크 전송의 정확한 내용을 확인해야 할 때 매우 중요합니다.
--hexdump frames 로 프레임 제한
이 단계에서는 Wireshark 의 --hexdump 옵션과 프레임 필터링을 사용하여 16 진수 출력에 표시될 패킷을 정확하게 제어하는 방법을 배우게 됩니다. 이 기술은 원시 16 진수 데이터를 검사하는 동안 특정 네트워크 패킷에 집중하는 데 도움이 됩니다. 특히 많은 패킷을 포함하는 대용량 캡처 파일로 작업할 때 유용합니다.
--hexdump 옵션은 기본 -x 플래그보다 더 정확한 제어를 제공합니다. -x는 모든 패킷에 대한 16 진수 덤프를 표시하는 반면, --hexdump를 사용하면 표시할 프레임 번호를 정확하게 지정할 수 있습니다. 이는 자세히 검사하려는 패킷만 보여주는 돋보기를 갖는 것과 같습니다.
- 먼저, 캡처 파일이 저장된 올바른 작업 디렉토리에 있는지 확인해 보겠습니다. 이렇게 하면 Tshark 가 분석하려는 파일을 찾을 수 있습니다.
cd ~/project
- 이제 Tshark 를 사용하여 특정 프레임에 대한 16 진수 데이터를 표시합니다. 명령 구조는 다음과 같습니다.
-r capture.pcap는 패킷 캡처 파일을 읽습니다.--hexdump frame=1-3은 Tshark 에게 프레임 1~3 만 원한다고 알려줍니다.- 등호 (=) 는 프레임 필터를 hexdump 옵션에 연결합니다.
이 명령을 실행하여 1-3 프레임을 16 진수로 확인합니다.
tshark -r capture.pcap --hexdump frame=1-3
이 명령은 다음을 표시하는 출력을 생성합니다.
- 요청한 세 개의 프레임만 (1, 2, 3)
- 각 프레임의 완전한 16 진수 표현
- 일반적인 패킷 요약 정보 없이 원시 바이트 데이터
예시 출력 (데모를 위해 축약됨):
Frame 1: 66 bytes on wire
0000 00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00 45 00 ..K.4V..."3D..E.
0010 00 34 12 34 00 00 80 06 78 9a c0 a8 01 01 c0 a8 .4.4....x.......
0020 01 02 01 bb c0 52 00 00 00 00 00 00 00 00 50 02 .....R........P.
0030 fa f0 00 00 00 00 00 00 00 00 ..........
Frame 2: 66 bytes on wire
0000 00 1b 11 22 33 44 00 1a 4b 12 34 56 08 00 45 00 ..."3D..K.4V..E.
0010 00 34 ab cd 00 00 80 06 12 34 c0 a8 01 02 c0 a8 .4.......4......
0020 01 01 c0 52 01 bb 00 00 00 00 00 00 00 01 50 12 ...R..........P.
0030 ff ff 00 00 00 00 00 00 00 00 ..........
이전 출력과의 주요 차이점을 확인하십시오.
- 지정한 프레임만 나타납니다 (추가 패킷 없음).
- 각 프레임은 완전한 16 진수 표현을 보여줍니다.
- 출력은 일반적인 패킷 요약 줄을 건너뛰어 분석할 더 깨끗한 16 진수 데이터를 제공합니다.
16 진수 출력 검토
이 마지막 단계에서는 패킷 캡처에서 얻은 16 진수 출력을 분석하고 해석합니다. 16 진수 덤프는 네트워크 분석에 필수적입니다. 네트워크를 통해 전송되는 원시 바이너리 데이터를 정확하게 보여주기 때문입니다. 이 기술은 네트워크 프로토콜을 이해하고, 통신 문제를 디버깅하며, 낮은 수준의 패킷 검사를 수행하는 데 필수적입니다.
- 먼저, 처음 3 개의 프레임에 대한 포괄적인 16 진수 덤프를 생성해 보겠습니다. 프로젝트 디렉토리에서 이 명령을 사용합니다.
cd ~/project
tshark -r capture.pcap --hexdump frame=1-3
이 명령은 capture.pcap 파일을 읽고 프레임 1~3 의 16 진수 표현을 표시합니다. --hexdump 옵션은 Tshark 에게 16 진수와 ASCII 표현을 나란히 표시하도록 지시합니다.
- 출력을 주의 깊게 검토하십시오. 16 진수 덤프는 패킷 구조를 시각화하는 데 도움이 되도록 구성됩니다.
- 각 프레임은 총 패킷 길이를 보여주는 크기 (예: "Frame 1: 66 bytes on wire") 로 시작합니다.
- 왼쪽 열은 특정 바이트를 찾는 데 도움이 되는 바이트 오프셋 (0000, 0010 등) 을 표시합니다.
- 중간 섹션은 한 줄에 16 바이트의 16 진수 데이터를 표시하여 실제 패킷 내용을 보여줍니다.
- 오른쪽 열은 인쇄 가능한 문자의 ASCII 표현을 보여주며, 텍스트 프로토콜을 식별하는 데 유용합니다.
- 이제 16 진수 덤프에서 주요 프로토콜 헤더를 식별해 보겠습니다. 네트워크 패킷은 계층화된 구조를 따르며, 16 진수 출력에서 이를 확인할 수 있습니다.
## Ethernet header (first 14 bytes)
0000 00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00
## IP header (next 20 bytes)
0010 45 00 00 34 12 34 00 00 80 06 78 9a c0 a8 01 01
0020 c0 a8 01 02
## TCP header (next 20 bytes)
0020 01 bb c0 52 00 00 00 00 00 00 00 00 50 02
0030 fa f0 00 00 00 00 00 00 00 00
이더넷 헤더가 먼저 오고, 그 다음 IP 헤더, 그 다음 TCP 헤더가 옵니다. 각 프로토콜 헤더에는 디코딩할 수 있는 고정 위치에 특정 필드가 포함되어 있습니다.
- 네트워크 패킷에서 접하게 될 몇 가지 일반적인 값을 해석하는 연습을 해보겠습니다.
08 00은 IPv4 (EtherType) 를 나타냅니다. 이는 네트워크 카드에 다음에 오는 프로토콜을 알려줍니다.45는 5 단어 헤더 길이의 IPv4 를 보여줍니다 ('4'는 IP 버전이고, '5'는 32 비트 단어 단위의 헤더 길이입니다).c0 a8 01 01은 16 진수로 192.168.1.1 입니다 (각 쌍은 IP 주소의 1 옥텟을 나타냅니다).01 bb는 10 진수로 포트 443 입니다 (첫 번째 바이트 01 은 256 이고, bb 는 187 이므로 총 443 입니다).
네트워크 프로토콜은 빅 엔디안 (big-endian) 바이트 순서를 사용하므로, 다중 바이트 필드를 해석할 때 가장 중요한 바이트가 먼저 온다는 점을 기억하십시오.
요약
이 랩에서는 패킷 캡처를 분석하고 16 진수 데이터를 검사하기 위해 Wireshark 의 tshark 명령줄 도구를 활용하는 방법을 배웠습니다. 연습에서는 -r 옵션을 사용하여 PCAP 파일을 읽어 기본 패킷 정보를 확인하고, -x 플래그를 사용하여 자세한 16 진수 덤프를 생성하는 방법을 보여주었습니다.
TCP 핸드셰이크 관찰부터 바이트 수준의 원시 패킷 데이터 검사에 이르기까지 이러한 기술이 어떻게 포괄적인 네트워크 트래픽 분석을 가능하게 하는지 살펴보았습니다. 패킷 요약과 16 진수 및 ASCII 표현의 조합은 네트워크 문제 해결 및 프로토콜 검사를 위한 강력한 기능을 제공합니다.


