소개
바쁜 고속도로를 지나가는 모든 빨간색 자동차를 실시간으로 세고 있다고 상상해 보세요. 매우 스트레스가 많고 오류가 발생하기 쉽습니다. 이제 그 고속도로를 영상으로 녹화한 뒤, 집으로 가져와 일시 정지, 되감기, 빨리 감기를 하며 자동차를 완벽하게 세는 상황을 상상해 보세요.
사이버 보안 및 디지털 포렌식 분야에서 전문가들은 빠르게 지나가는 네트워크 트래픽을 실시간으로 분석하는 경우가 드뭅니다. 대신 그들은 "영상을 녹화"합니다. 원시 트래픽을 캡처하여 PCAP(Packet Capture) 파일이라는 표준 형식으로 저장하는 것이죠. 이러한 접근 방식은 네트워크 이벤트에 대한 영구적이고 변조되지 않은 기록을 제공하여, 사건 발생 후 한참이 지난 뒤에도 스트레스 없이 심층적인 분석을 가능하게 합니다.
많은 보안 이벤트는 순식간에 지나가기 때문에 이러한 기록 유지 방식은 필수적입니다. 의심스러운 연결은 몇 초 만에 끝날 수 있고, 악성 코드 요청은 단 한 번 발생하고 다시는 나타나지 않을 수도 있습니다. 사건 발생 당시 트래픽을 보존하지 않았다면, 나중에 이벤트를 재구성할 기회를 영영 잃어버릴지도 모릅니다. 따라서 PCAP 파일은 다른 포렌식 조사에서 디스크 이미지나 로그 아카이브가 수행하는 것과 동일한 역할을 네트워크 활동에 대해 수행합니다.
이 실습에서는 tcpdump를 사용하여 PCAP 파일을 관리하는 필수 기술을 배웁니다. 실시간 네트워크 트래픽을 파일로 조용히 기록하고, 오프라인 검토를 위해 터미널로 다시 읽어들이며, 정밀한 필터를 적용하여 과거 트래픽을 조사하고, 다른 사람들과 공유하기 위해 증거의 작은 조각을 깔끔하게 추출하는 연습을 할 것입니다.
트래픽을 PCAP 파일로 쓰기
오프라인 분석의 첫 번째 단계는 데이터를 실제로 기록하는 것입니다. tcpdump가 빠르게 스크롤되는 텍스트로 화면을 어지럽히게 하는 대신, 모든 내용을 저장 파일에 직접 조용히 쓰도록 지시할 수 있습니다. 이는 -w (write) 플래그를 사용하여 수행됩니다.
화면 캡처와 PCAP 캡처의 목적 차이를 주목하세요. 터미널에 출력할 때 tcpdump는 이미 사람이 읽을 수 있도록 패킷을 요약하고 있습니다. PCAP 파일에 쓸 때는 나중에 다른 분석 도구가 파싱할 수 있는 형태로 패킷 데이터를 보존합니다. 이것이 바로 증거를 다시 확인해야 할 가능성이 있을 때 파일로 저장하는 것이 더 나은 선택인 이유입니다.
-w 플래그 뒤에 파일 이름을 사용하면 tcpdump는 화면 출력을 완전히 중단합니다. 네트워크 인터페이스에서 원시 패킷 데이터를 직접 가져와 표준 PCAP 형식으로 안전하게 패키징합니다.
먼저, 파일을 저장하기에 안전한 메인 프로젝트 디렉토리에 있는지 확인합니다.
cd ~/project
이제 캡처를 시작할 시간입니다. 프로그램이 끝없이 기록하여 하드 드라이브를 채우는 것을 방지하기 위해 -c (count) 플래그를 사용하여 정확히 50 개의 패킷 후에 중지하도록 설정하겠습니다. 또한 -i any 플래그를 도입하여, 사용 가능한 모든 네트워크 인터페이스를 통해 이동하는 트래픽을 동시에 캡처하도록 하겠습니다.
다음 명령어를 실행하여 50 개의 패킷을 캡처하고 capture.pcap이라는 파일에 저장합니다.
sudo tcpdump -i any -c 50 -w capture.pcap
브라우저 기반 터미널은 연결 상태를 유지하기 위해 지속적으로 소량의 백그라운드 네트워크 트래픽을 생성하므로, 캡처는 매우 빠르게 완료될 것입니다. 다음과 같은 간략한 요약 출력을 볼 수 있습니다.
tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
50 packets captured
52 packets received by filter
0 packets dropped by kernel
여기서 중요한 차이점을 주목하세요. 구체적인 패킷 세부 정보는 전혀 출력되지 않았습니다. 모든 민감한 데이터는 파일 안에 조용히 저장되었습니다.
표준 Linux ls 명령어를 사용하여 새 녹화 파일이 존재하는지 확인하고 물리적 크기를 확인할 수 있습니다.
ls -lh capture.pcap
capture.pcap 파일이 파일 크기와 함께 나열되는 것을 보면 원시 네트워크 트래픽이 성공적으로 저장되었으며 분석 준비가 완료되었음을 확인할 수 있습니다.
PCAP 파일에서 트래픽 읽기
이제 증거를 안전하게 저장했으므로, 이를 확인하는 방법이 필요합니다. 이 과정을 흔히 오프라인 분석이라고 합니다.
오프라인 분석은 수집과 해석을 분리한다는 중요한 실용적 이점이 있습니다. 실시간 사건 발생 시, 방어자는 어떤 패킷이 중요한지 아직 모르는 경우가 많습니다. 그들의 첫 번째 임무는 가능한 한 많은 관련 증거를 보존하는 것입니다. 상황이 안정된 후에야 비로소 저장된 데이터에 대해 목표 지향적인 질문을 던지는 느린 분석 과정을 시작합니다.
PCAP 파일을 열고 읽으려면 -r 플래그 뒤에 파일 이름을 사용하여 쓰기 모드에서 읽기 모드로 전환합니다. 이 명령어의 장점은 tcpdump가 마치 패킷이 지금 실시간 네트워크를 통해 흐르고 있는 것처럼 저장된 파일을 처리한다는 것입니다.
다음 명령어를 실행하여 새로 생성된 capture.pcap 파일의 패킷을 터미널 화면으로 다시 출력합니다.
tcpdump -r capture.pcap
참고: 실시간 트래픽을 캡처하려면 시스템에 대한 깊은 접근 권한이 필요하므로 sudo를 사용합니다. 하지만 본인이 소유한 일반 파일을 읽는 데는 권한이 필요하지 않습니다. 특별한 관리자 권한 없이도 읽기 명령어를 안전하게 실행할 수 있습니다.
갑자기 아까 조용히 캡처했던 50 개의 패킷이 터미널 화면에 쏟아져 나오며, 실시간 캡처와 동일하게 보일 것입니다.
reading from file capture.pcap, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144
10:25:31.123456 IP 10.0.2.100.22 > 10.0.2.2.54321: Flags [P.], seq 1:100, ack 1, win 500, length 99
10:25:31.123500 IP 10.0.2.2.54321 > 10.0.2.100.22: Flags [.], ack 100, win 500, length 0
...
정적 파일에서 읽는 것은 분석가에게 큰 안도감을 줍니다. 데이터가 특정 시점에 고정되어 있기 때문에, 원본 증거를 전혀 변경하지 않고 필요한 만큼 시간을 들여 -r 명령어를 반복해서 실행할 수 있습니다.
분석을 효율화하기 위해 -r 플래그를 다른 표시 옵션과 함께 사용할 수 있습니다. 예를 들어, -n 플래그를 사용하면 tcpdump가 IP 주소를 컴퓨터 이름으로 변환하지 않도록 지시합니다. 이렇게 하면 도구가 추가적인 백그라운드 조회를 수행하지 않아 훨씬 빠르게 표시되며, 더 깔끔하고 기술적인 출력을 얻을 수 있습니다.
tcpdump -n -r capture.pcap
기존 PCAP 에 필터 적용하기
대량의 트래픽을 기록하면 종종 관련 없는 잡음으로 가득 찬 거대한 파일이 생성됩니다. 조사를 수행할 때 모든 패킷 라인을 하나하나 읽고 싶어 하는 경우는 거의 없습니다.
이것이 바로 좋은 증거 수집은 일반적으로 광범위하게 이루어지고, 좋은 증거 분석은 일반적으로 좁게 이루어지는 이유입니다. 수집 중에는 가능한 한 놓치는 것이 없도록 하는 것을 선호합니다. 분석 중에는 현재 질문에 답이 되는 패킷에 집중할 수 있도록 범위를 공격적으로 줄입니다. 저장된 PCAP 에 필터를 사용하면 원본 캡처를 반복하지 않고도 이 두 가지를 모두 수행할 수 있습니다.
tcpdump의 진정한 마법은 실시간 네트워크에서 사용하는 모든 강력한 BPF(Berkeley Packet Filters) 가 저장된 파일에서도 동일하게 작동한다는 점입니다. tcpdump는 백그라운드에서 전체 PCAP 파일을 빠르게 읽어들이지만, 선택한 필터와 일치하는 특정 패킷만 출력합니다.
capture.pcap 파일을 필터링하여 TCP 트래픽만 독점적으로 표시하고 나머지는 무시하도록 테스트해 보겠습니다. 다음 명령어를 실행하세요.
tcpdump -n -r capture.pcap tcp
출력은 눈에 띄게 짧아지며, TCP 프로토콜로 식별된 패킷만 표시됩니다.
필요한 만큼 정밀하게 설정할 수 있습니다. 예를 들어, 보안 셸 (SSH) 서비스 (터미널 환경의 백그라운드에서 포트 22 번으로 활발하게 실행됨) 에 문제가 있다고 의심되는 경우, 사후에 포트 필터를 적용할 수 있습니다.
다음 명령어를 실행하세요.
tcpdump -n -r capture.pcap port 22
화면의 출력에는 소스나 대상이 포트 22 와 일치하는 패킷만 엄격하게 표시됩니다.
reading from file capture.pcap, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144
10:25:31.123456 IP 10.0.2.100.22 > 10.0.2.2.54321: Flags [P.], seq 1:100, ack 1, win 500, length 99
...
사후에 필터를 적용할 수 있는 이 능력은 디지털 포렌식에서 가장 중요한 기술이라고 할 수 있습니다. 실제 위기 상황에서 방어자는 넓은 그물을 던지고 -w를 사용하여 네트워크의 모든 것을 무차별적으로 기록합니다. 상황이 정리되면 -r과 복잡한 BPF 필터를 사용하여 증거의 산을 차분하게 조사하고, 공격자가 시스템을 침해한 정확한 순간을 찾아냅니다.
특정 트래픽을 새 PCAP 으로 추출하기
때로는 캡처 파일이 너무 커서 다른 컴퓨터로 전송하기 어렵거나, 전문 보안 팀에 보낼 의심스러운 패킷 몇 개만 격리해야 할 수도 있습니다.
증거가 팀 간에 이동해야 하는 경우가 많기 때문에 실제 조사에서 이러한 관행은 흔합니다. 일선 분석가가 거대한 파일을 캡처한 다음, 악성 코드 분석가, 사고 대응자 또는 개발자를 위해 의심스러운 트래픽만 추출할 수 있습니다. 작고 집중된 PCAP 은 공유하기 쉽고, 검사 속도가 빠르며, 다른 팀이 필요로 하지 않는 관련 없는 백그라운드 데이터를 노출할 가능성이 적습니다.
읽기 (-r), 필터링, 쓰기 (-w) 기능을 하나의 명령어로 결합하면 관련 패킷만 잘라내어 완전히 새로운, 매우 집중된 PCAP 파일로 영구 저장할 수 있습니다.
포렌식 분석가로서 원본 capture.pcap 증거 파일에서 TCP 패킷만 추출해 보겠습니다. 해당 특정 패킷들을 tcp_only.pcap이라는 새 파일로 모아보겠습니다.
다음 명령어를 실행하세요.
tcpdump -r capture.pcap tcp -w tcp_only.pcap
이 명령어를 실행하면 터미널은 다시 한번 완전히 조용해집니다. tcpdump는 원본 파일을 읽고, tcp 필터를 조용히 적용하며, 승인된 패킷을 화면에 아무것도 출력하지 않고 새로운 tcp_only.pcap 파일에 안전하게 씁니다.
파일 목록을 확인하여 새로운 고도로 특화된 증거 파일이 성공적으로 생성되었는지 확인할 수 있습니다.
ls -lh capture.pcap tcp_only.pcap
두 파일이 나란히 있는 것을 볼 수 있습니다. 초기 캡처 중에 발생한 백그라운드 트래픽에 따라 다르겠지만, tcp_only.pcap은 관련 없는 비 TCP 노이즈를 성공적으로 제거했기 때문에 마스터 capture.pcap 파일보다 약간 더 작을 것입니다.
새 파일에 의도한 데이터만 포함되어 있는지 확인하려면 다시 읽어보면 됩니다.
tcpdump -n -r tcp_only.pcap
이 간단한 추출 기술은 혼란스러운 데이터를 정리하고 조사의 필요한 부분만 안전하게 공유하는 데 매우 유용합니다.
요약
축하합니다! PCAP 파일 관리의 기초를 성공적으로 마스터했습니다.
이 실습에서 여러분은 네트워크 트래픽을 기록된 증거처럼 다루는 방법을 배웠습니다. -w 플래그를 사용하여 실시간 네트워크 이벤트를 저장 파일로 안전하게 캡처하는 연습을 했습니다. 오프라인 분석 사고방식으로 전환하여 -r 플래그를 사용하여 저장된 패킷을 터미널로 다시 읽어들였습니다. 기존 캡처 파일에 BPF 필터를 사후 적용하여 노이즈를 빠르게 제거하는 방법을 시연했으며, 마지막으로 간결하고 목표 지향적인 조사를 위해 매우 구체적인 데이터를 새 PCAP 파일로 추출하는 방법을 배웠습니다.
이러한 파일 관리 기술은 디지털 포렌식, 사고 대응 및 고급 네트워크 문제 해결을 위한 절대적인 표준 운영 절차입니다. 이제 여러분은 현대 세계를 움직이는 보이지 않는 데이터 스트림을 적절하게 캡처하고 분석할 수 있는 핵심 기술을 갖추게 되었습니다.

