소개
이 랩에서는 Wireshark 의 "TCP 스트림 따라가기 (Follow TCP Stream)" 기능을 사용하여 TCP 트래픽을 분석하는 방법을 배우게 됩니다. 이 기능을 사용하면 특정 TCP 대화의 데이터 페이로드 (data payload) 를 추출하고 볼 수 있습니다. 이는 의심스러운 네트워크 트래픽을 조사하고 애플리케이션 프로토콜을 분석하는 등 다양한 사이버 보안 시나리오에서 매우 유용합니다.
이 랩을 마치면 이 강력한 도구를 사용하여 네트워크 통신에 대한 통찰력을 얻는 방법을 이해하게 될 것입니다. 이는 네트워크 분석 능력을 크게 향상시킬 것입니다.
TCP 이해 및 네트워크 트래픽 캡처
이 단계에서는 네트워크 통신의 기본 부분인 TCP (Transmission Control Protocol) 에 대해 알아보겠습니다. 그런 다음 Wireshark 라는 강력한 도구를 사용하여 네트워크 트래픽을 캡처합니다. TCP 를 이해하고 네트워크 트래픽을 캡처하는 능력은 사이버 보안 분야에서 필수적인 기술입니다. 이를 통해 네트워크에서 무슨 일이 일어나고 있는지 확인하고 잠재적인 문제를 분석할 수 있습니다.
TCP 란 무엇인가?
TCP, 즉 전송 제어 프로토콜 (Transmission Control Protocol) 은 인터넷 프로토콜 제품군에서 가장 중요한 프로토콜 중 하나입니다. 인터넷 프로토콜 제품군은 인터넷을 통해 데이터가 전송되는 방식을 제어하는 규칙 집합입니다. TCP 는 IP 네트워크를 통해 통신하는 서로 다른 호스트에서 실행되는 애플리케이션 간에 데이터를 안정적으로 전송하는 방법을 제공합니다.
안정성이란 TCP 가 한 애플리케이션에서 다른 애플리케이션으로 전송된 모든 데이터 패킷이 올바르게, 그리고 올바른 순서로 도착하도록 보장한다는 의미입니다. 이는 연결이 없는 프로토콜인 UDP (User Datagram Protocol) 와는 다릅니다. UDP 는 데이터를 전송하기 전에 연결을 설정하지 않으며 모든 패킷이 도착하거나 순서대로 도착한다는 것을 보장하지 않습니다. 반면에 TCP 는 연결 지향적입니다. 먼저 송신자와 수신자 간에 연결을 설정한 다음 데이터를 전송합니다. 이 프로세스는 전송되는 데이터의 무결성을 유지하는 데 도움이 됩니다.
Wireshark 실행
네트워크 트래픽 캡처를 시작하려면 Wireshark 를 실행해야 합니다. 방법은 다음과 같습니다.
먼저 터미널 창을 엽니다. 도크의 터미널 아이콘을 클릭하거나
Ctrl+Alt+T를 눌러 이 작업을 수행할 수 있습니다. 터미널은 명령을 입력하여 컴퓨터의 운영 체제와 상호 작용할 수 있는 텍스트 기반 인터페이스입니다.터미널이 열리면 Wireshark 를 실행하는 명령을 입력해야 합니다. 다음 명령을 입력한 다음 Enter 키를 누릅니다.
wireshark
이 명령은 운영 체제에 Wireshark 애플리케이션을 시작하도록 지시합니다.
- Wireshark 가 열리면 메인 인터페이스가 표시됩니다. 이 인터페이스에서 사용 가능한 네트워크 인터페이스 목록을 볼 수 있습니다. 네트워크 인터페이스는 컴퓨터와 네트워크 간의 연결 지점입니다. 각 인터페이스는 네트워크 트래픽을 송수신하는 데 사용할 수 있습니다.

네트워크 트래픽 캡처
이제 Wireshark 가 열렸으므로 네트워크 트래픽 캡처를 시작할 준비가 되었습니다. 단계는 다음과 같습니다.
네트워크 인터페이스 목록에서
eth1인터페이스를 클릭합니다. 이것은 일반적으로 가상 머신 (virtual machine) 의 기본 네트워크 인터페이스입니다. 가상 머신은 컴퓨터 내의 컴퓨터와 같으며,eth1인터페이스는 네트워크에 연결하는 방법입니다.eth1인터페이스를 선택한 후, 툴바에서 파란색 상어 지느러미 아이콘으로 표시된Start capturing packets버튼을 클릭합니다. 이 작업은 Wireshark 에 선택한 네트워크 인터페이스를 모니터링하고 이를 통과하는 모든 네트워크 패킷을 캡처하도록 지시합니다.

Wireshark 가 캡처를 시작하면 메인 Wireshark 창에 패킷이 나타나는 것을 볼 수 있습니다. 이러한 패킷은 네트워크 트래픽의 구성 요소입니다. 각 패킷에는 소량의 데이터와 어디에서 오고 어디로 가는지에 대한 정보가 포함되어 있습니다.
분석할 수 있는 TCP 트래픽을 생성하기 위해
curl명령을 사용합니다. 새 터미널 창을 열고 다음 명령을 입력합니다.
curl https://labex.io
curl 명령은 서버에서 또는 서버로 데이터를 전송하는 데 사용됩니다. 이 경우 https://labex.io에서 웹 페이지 콘텐츠를 가져옵니다. 이 작업은 웹 페이지에 대한 HTTP 요청이 TCP 프로토콜을 사용하기 때문에 TCP 트래픽을 생성합니다.
curl명령을 실행하면 터미널에 웹 페이지 콘텐츠가 표시됩니다. 동시에 Wireshark 는 이 HTTP 요청과 관련된 모든 TCP 패킷을 캡처합니다. 이러한 패킷에는 컴퓨터와 웹 서버 간의 요청 및 응답에 대한 정보가 포함되어 있습니다.약 10~15 초 동안 캡처한 후 (일반적으로 트래픽의 좋은 샘플을 얻기에 충분함), Wireshark 로 돌아가 툴바에서 빨간색 사각형 아이콘으로 표시된
Stop capturing packets버튼을 클릭합니다. 이렇게 하면 Wireshark 가 더 이상 패킷을 캡처하지 않습니다.

- 캡처된 트래픽을 나중에 분석하기 위해 저장하려면
File메뉴로 이동하여Save를 선택하거나Ctrl+S를 누릅니다./home/labex/project/디렉토리로 이동하여 파일 이름을capture.pcapng로 지정한 다음Save를 클릭합니다..pcapng파일 형식은 네트워크 패킷 캡처를 저장하기 위한 표준 형식이며, 나중에 캡처된 트래픽을 열고 분석할 수 있습니다.
이제 TCP 대화가 포함된 네트워크 트래픽을 성공적으로 캡처했습니다. 다음 단계에서는 이 캡처된 트래픽을 분석하여 TCP 에 대해 자세히 알아보겠습니다.
TCP 스트림 필터링 및 Follow
이 단계에서는 이전 단계에서 캡처한 labex.io 트래픽을 분석합니다. 특정 TCP 대화를 격리하기 위해 네트워크 트래픽을 필터링하는 방법과 Wireshark 의 강력한 "TCP 스트림 따라가기 (Follow TCP Stream)" 기능을 살펴보겠습니다. 이 기능은 네트워크 통신을 위한 돋보기 역할을 하여 두 엔드포인트 간의 전체 대화를 볼 수 있도록 합니다.
TCP 트래픽 필터링
먼저, labex.io 통신에 집중하기 위해 트래픽을 필터링해 보겠습니다.
- Wireshark 메인 창에서 패킷 목록 상단을 봅니다. "디스플레이 필터 적용 (Apply a display filter)"이라는 자리 표시자 텍스트가 있는 디스플레이 필터 텍스트 상자가 표시됩니다.
- 필터 상자에
tcp를 입력하고 Enter 키를 누르거나 화살표 버튼을 클릭하여 필터를 적용합니다. - 이제 패킷 목록에 TCP 패킷만 표시되지만, 더 좁힐 수 있습니다.
curl명령으로 생성한 labex.io 트래픽에 관심이 있으므로 필터를 구체화해 보겠습니다. - 필터 상자에
tcp contains "labex"를 입력하고 적용합니다. 이렇게 하면 내용에 "labex"가 포함된 TCP 패킷만 표시되어 관련 트래픽을 찾는 데 도움이 됩니다.

TCP 대화 이해
TCP 스트림을 따라가기 전에 TCP 대화가 무엇인지 이해하는 것이 중요합니다. TCP 대화는 TCP 세션 동안 두 엔드포인트 (IP 주소 및 포트 조합) 간에 교환된 모든 패킷으로 구성됩니다. 각 TCP 대화에는 몇 가지 주요 구성 요소가 있습니다.
- 소스 및 대상 IP 주소: 이 경우, 사용자의 컴퓨터 IP 와 labex.io 서버 IP
- 소스 및 대상 포트: labex.io 에 대한 HTTPS 연결의 경우 대상 포트는 443 일 가능성이 높습니다.
- 시퀀스 및 확인 번호: 이는 데이터를 추적하고 올바른 전달을 보장합니다.
- 다양한 플래그 (SYN, ACK, FIN 등): 이는 연결 상태를 제어합니다.
캡처에서 사용자의 컴퓨터와 labex.io 서버 간의 TCP 대화를 볼 수 있습니다.
TCP 스트림 따라가기
이제 labex.io 요청에 대한 TCP 스트림을 분석해 보겠습니다.
- 필터링된 패킷 목록에서
labex.io에 속할 가능성이 있는 대상 IP 가 있는 패킷을 찾습니다. 보안 웹 트래픽에 사용되는 대상 포트443(HTTPS) 가 있는 패킷이 표시됩니다. - 이러한 패킷 중 하나를 클릭하여 선택합니다.
- 선택한 패킷을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서
Follow>TCP Stream을 선택합니다.

- 새 창이 열리고 사용자의 컴퓨터와
labex.io서버 간의 전체 TCP 대화가 표시됩니다.

이 창에서:
- 빨간색 텍스트는 사용자의 컴퓨터 (클라이언트) 에서 labex.io 서버로 전송된 데이터를 나타냅니다.
- 파란색 텍스트는 labex.io 서버에서 사용자의 컴퓨터로 다시 전송된 데이터를 나타냅니다.
- 전체 대화는 발생한 순서대로 재구성됩니다.
HTTPS 를 통해 labex.io 에 액세스했으므로 스트림에서 대부분 암호화된 데이터를 보게 됩니다. 이는 HTTPS 가 전송 중에 데이터를 보호하기 위해 데이터를 암호화하기 때문에 정상적이고 예상되는 현상입니다. 통신의 시작 부분에서 TLS 핸드셰이크를 식별할 수 있지만 실제 HTTP 요청 및 응답은 암호화됩니다.
"데이터를 표시하고 저장 (Show and save data as)" 드롭다운 메뉴를 사용하여 다양한 보기 옵션을 탐색합니다.
ASCII: 데이터를 텍스트로 표시합니다 (암호화되지 않은 부분을 읽는 데 유용함).Hex Dump: 16 진수 및 ASCII 표현을 모두 표시합니다 (암호화된 데이터를 검사하는 데 적합함).C Arrays: 데이터를 C 프로그래밍 언어 배열로 형식화합니다.Raw: 원시 바이너리 데이터만 표시합니다.
이 분석 기록을 보관하려면
Print버튼을 클릭합니다./home/labex/project/디렉토리에print.pdf라는 이름으로 인쇄 출력을 PDF 로 저장합니다.

TCP 스트림을 따라가면 개별 패킷에서 데이터를 수동으로 조립하지 않고도 사용자의 컴퓨터와 labex.io 서버 간의 전체 통신을 볼 수 있습니다. 다음 단계에서는 이 데이터를 저장하고 자세히 분석하는 방법을 배우겠습니다.
TCP 스트림 데이터 저장 및 분석
이 단계에서는 이전 단계에서 검토한 labex.io TCP 스트림 데이터를 오프라인 분석을 위해 저장합니다. 또한 이 저장된 정보를 해석하여 암호화된 HTTPS 통신에서 가치 있는 통찰력을 추출하는 방법도 배웁니다.
TCP 스트림 데이터 저장
labex.io 연결에서 TCP 스트림 데이터를 저장해 보겠습니다.
이전 단계에서 열어둔 TCP 스트림 창이 여전히 열려 있어야 하며, 사용자의 컴퓨터와 labex.io 간의 통신이 표시되어야 합니다. 실수로 닫은 경우, labex.io 패킷 중 하나의 TCP 스트림을 따라가는 단계를 반복하십시오.
TCP 스트림 창 하단에서
Save As버튼을 찾습니다.

Save As버튼을 클릭하면 저장 대화 상자가 열립니다./home/labex/project/디렉토리로 이동하여 파일 이름tcp_stream_data.txt를 입력합니다.Save버튼을 클릭합니다. 이렇게 하면 전체 labex.io TCP 스트림이 지정된 이름의 텍스트 파일로 저장됩니다.내용은 "데이터를 표시하고 저장 (Show and save data as)" 드롭다운 메뉴에서 선택한 형식으로 저장됩니다. 다른 형식 (ASCII 대신 Hex Dump 등) 으로 저장하려면 저장하기 전에 드롭다운 메뉴에서 형식을 변경할 수 있습니다.
저장된 데이터 이해
이제 labex.io 연결에서 TCP 스트림을 저장했으므로 내용을 검토해 보겠습니다.
- 저장된 파일을 보려면 터미널을 엽니다.
head /home/labex/project/tcp_stream_data.txt
또는 cat을 사용하여 전체 파일을 볼 수 있습니다.
cat /home/labex/project/tcp_stream_data.txt
파일 내용을 검토합니다. labex.io 에 대한 트래픽이 HTTPS 를 통해 이루어졌으므로 대부분의 데이터는 암호화되어 읽을 수 없는 문자로 표시됩니다. 그러나 몇 가지 중요한 요소를 여전히 관찰할 수 있습니다.
- 통신의 시작 부분에서 클라이언트와
labex.io서버가 암호화 매개변수를 협상하는 TLS 핸드셰이크 (TLS handshake) - TLS 핸드셰이크의 일부인 클라이언트 hello 및 서버 hello 메시지
- 실제 HTTP 요청과 서버의 응답을 포함하는 암호화된 애플리케이션 데이터
- 통신의 시작 부분에서 클라이언트와
데이터가 TCP 스트림 창에 표시된 것과 동일한 방식으로 구성되어 있으며, 클라이언트 데이터 (사용자 컴퓨터에서 labex.io 로) 가 서버 데이터 (labex.io 에서 사용자 컴퓨터로) 와 분리되어 있음을 확인합니다.
TCP 스트림 분석의 실제 적용
개발 중인 TCP 스트림 분석 기술은 많은 사이버 보안 시나리오에서 유용합니다. labex.io 트래픽에서 관찰한 내용과 관련하여 살펴보겠습니다.
- TLS/SSL 검사 (TLS/SSL Inspection): labex.io 스트림에서 TLS 핸드셰이크를 분석하여 보안 전문가는 보안 연결이 강력한 암호화 알고리즘을 사용하고 있는지 확인할 수 있습니다.
- 보안 모니터링 (Security Monitoring): labex.io 연결과 같은 암호화된 HTTPS 트래픽에서도 분석가는 콘텐츠를 해독하지 않고도 통신 패턴을 식별할 수 있습니다.
- 네트워크 문제 해결 (Network Troubleshooting): labex.io 에 대한 연결이 실패한 경우 TCP 스트림을 분석하면 문제가 TCP 연결 설정, TLS 핸드셰이크 또는 HTTP 교환 중에 발생했는지 식별하는 데 도움이 될 수 있습니다.
- 네트워크 포렌식 (Network Forensics): 조사 시나리오에서 labex.io 연결과 같은 TCP 스트림은 네트워크 활동의 타임라인을 재구성하는 데 도움이 됩니다.
- 성능 분석 (Performance Analysis): labex.io TCP 스트림에서 패킷의 타이밍과 순서를 검사하여 네트워크에서 잠재적인 성능 병목 현상을 식별할 수 있습니다.
labex.io 연결에서 했던 것처럼 TCP 스트림을 저장하면 다음과 같은 영구적인 기록을 만들 수 있습니다.
- 공동 분석을 위해 팀 구성원과 공유
- 보안 조사에서 증거로 사용
- 패턴을 식별하기 위해 다른 캡처된 스트림과 비교
- Wireshark 외에 추가 도구로 분석
실제 네트워크 통신 데이터를 추출, 저장 및 분석하는 이러한 능력은 TCP 스트림 분석을 네트워크 보안 전문가에게 매우 강력한 기술로 만드는 요소입니다.
고급 TCP 스트림 분석 기법
이 마지막 단계에서는 labex.io 트래픽 및 존재할 수 있는 다른 TCP 대화에 중점을 두고 캡처에서 TCP 스트림을 분석하기 위한 몇 가지 고급 기술을 살펴보겠습니다. 이러한 고급 기술은 복잡한 네트워크 트래픽 캡처 작업을 할 때 더 효율적으로 작업하는 데 도움이 됩니다.
여러 TCP 스트림 필터링
labex.io 트래픽뿐만 아니라 캡처의 모든 TCP 대화를 탐색하고 필터링하는 방법을 알아보겠습니다.
- Wireshark 메인 창으로 돌아갑니다. labex.io 분석에서 TCP 스트림 창이 아직 열려 있으면 닫습니다.
- 캡처의 모든 TCP 대화를 보려면 상단 메뉴에서
Statistics>Conversations로 이동합니다. - Conversations 창에서
TCP탭을 클릭하여 보기를 TCP 대화만 표시하도록 필터링합니다.

이 보기에는 다음을 포함하여 캡처의 모든 TCP 대화에 대한 세부 정보가 표시됩니다.
- 소스 및 대상 주소와 포트
- 각 방향으로 전송된 바이트 수
- 각 대화의 기간
- 각 방향의 패킷 수
labex.io 연결에 해당하는 대화를 찾습니다. 2 단계에서 관찰한 것과 동일한 IP 주소가 포함되어야 합니다. 캡처 기간 동안 발생한 다른 TCP 대화도 볼 수 있습니다.
labex.io 대화를 선택하고 하단의
Follow Stream버튼을 클릭합니다. 이는 이전에 분석한 동일한 TCP 스트림에 액세스하는 또 다른 방법을 제공합니다.
TCP 스트림 번호 사용
캡처의 각 TCP 스트림에는 "tcp.stream" 번호라는 고유 식별자가 있습니다. 이는 특정 스트림을 필터링하고 분석하는 정확한 방법을 제공합니다.
Wireshark 메인 창이 열린 상태에서 이전에 식별한 labex.io 패킷 중 하나의 패킷 세부 정보를 봅니다. 중간 창에서 "Transmission Control Protocol" 섹션을 확장하고 "Stream index" 또는 이와 유사한 필드를 찾습니다. 이 번호는 labex.io TCP 스트림의 고유 식별자입니다.
이 특정 스트림에 속하는 패킷을 필터링하려면 다음과 같은 디스플레이 필터를 사용합니다.
tcp.stream eq N
N을 찾은 스트림 인덱스 번호로 바꿉니다. 예를 들어 labex.io 스트림의 인덱스가 0 인 경우 다음을 사용합니다.
tcp.stream eq 2
디스플레이 필터 상자에 이 필터를 적용합니다. 이제 Wireshark 는 labex.io TCP 스트림에 속하는 패킷만 표시하여 이 대화만 더 깔끔하게 볼 수 있습니다.
이 필터는 캡처에 많은 TCP 대화가 있고 매번 패킷을 찾아서 마우스 오른쪽 버튼으로 클릭하지 않고도 특정 대화에 집중하려는 경우 특히 유용합니다.

이러한 고급 TCP 스트림 분석 기술을 마스터하면 네트워크 트래픽 분석 기능이 크게 향상되었습니다. 이제 복잡한 네트워크 캡처에서 TCP 대화를 효율적으로 격리, 검사 및 문서화할 수 있습니다. 이는 사이버 보안 전문가에게 매우 중요한 기술입니다.
요약
이 랩에서는 심층적인 네트워크 트래픽 분석을 위해 Wireshark 의 "Follow TCP Stream" 기능을 사용하는 방법을 배웠습니다. 네트워크 트래픽 캡처, TCP 대화 필터링, 다양한 형식의 데이터 해석, 오프라인 사용을 위한 스트림 데이터 저장 및 고급 분석 기술 적용에 대한 실질적인 경험을 얻었습니다.
이러한 기술은 네트워크 관리자, 보안 분석가 및 IT 전문가에게 필수적입니다. 네트워크 문제를 해결하고, 보안 사고를 조사하며, 애플리케이션 동작을 이해할 수 있게 해줍니다. 진행하면서 Wireshark 에는 훨씬 더 많은 기능이 있으며, TCP 스트림 분석은 사이버 보안 무기고에서 가치 있는 도구 중 하나라는 것을 기억하십시오.


