네트워크 인터페이스 및 기본 패킷 캡처

LinuxBeginner
지금 연습하기

소개

네트워크 인터페이스 및 기본 캡처 실습에 오신 것을 환영합니다!

여러분의 컴퓨터를 하나의 집이라고 상상해 보세요. 네트워크 트래픽은 그 집으로 배달되거나 발송되는 우편물과 같습니다. 무슨 일이 일어나고 있는지 이해하려면 우편함을 지켜보는 보안 카메라가 필요하겠죠. 리눅스 세계에서 tcpdump는 네트워크를 위한 강력한 보안 카메라 역할을 합니다. 이는 시스템을 드나드는 데이터를 검사할 수 있는 명령줄 도구로, 연결 문제를 해결하고 의심스러운 활동을 포착하는 데 도움을 줍니다.

더 나아가기 전에, 우리가 관찰할 기본 대상을 정의해 보겠습니다. 네트워크 통신은 '패킷 (packet)'이라는 작은 단위로 나뉩니다. 패킷은 배달 지침과 실제 내용을 모두 담고 있는 작은 정보 꾸러미입니다. 배달 지침은 헤더 (header) 에 들어 있으며, 여기에는 출발지 주소, 목적지 주소, 프로토콜, 포트 정보 등이 포함됩니다. 실제 내용은 페이로드 (payload) 라고 부릅니다. 이번 첫 번째 실습에서는 모든 필드를 해독할 필요는 없습니다. tcpdump를 통해 시스템을 이동하는 패킷을 관찰하는 개념에 익숙해지는 것이 목표입니다.

이 실습에서는 tcpdump 사용의 아주 기초적인 내용을 배웁니다. 먼저 컴퓨터의 '문'인 네트워크 인터페이스를 식별하는 것부터 시작합니다. 그런 다음 실시간 네트워크 트래픽을 캡처하고, 수집할 데이터 양을 제어하며, 마지막으로 녹화된 영상처럼 나중에 검토할 수 있도록 캡처 내용을 저장하는 방법을 연습합니다.

네트워크 인터페이스 식별

트래픽을 감시할 "보안 카메라"를 설치하기 전에, 문이 어디에 있는지 알아야 합니다. 네트워킹에서 이 문들을 "네트워크 인터페이스"라고 부릅니다. 네트워크 인터페이스는 컴퓨터와 외부 네트워크 사이의 연결 지점입니다. 예를 들어, 일반적인 유선 연결은 보통 eth0라는 이름을 가지며, 컴퓨터가 자기 자신과 통신하는 내부 루프백 연결은 lo라고 불립니다.

이러한 구분은 중요합니다. tcpdump는 막연하게 "인터넷" 전체를 캡처하는 것이 아니기 때문입니다. 운영 체제 내부의 특정 관찰 지점에서 데이터를 수신합니다. 잘못된 인터페이스에 캡처를 연결하면, 기기가 매우 바쁘게 작동 중일 때도 아무것도 보이지 않을 수 있습니다. 올바른 인터페이스를 선택하는 법을 배우는 것은 패킷 분석의 첫 번째 실무 습관입니다.

사용 가능한 인터페이스를 찾기 위해 tcpdump는 간단한 탐색 명령을 제공합니다. -D 플래그는 "Discover(탐색)" 또는 "Display(표시)"를 의미합니다.

네트워크 트래픽을 도청하는 것은 권한이 필요한 작업이므로, sudo 명령을 사용하여 관리자 (슈퍼 유저) 권한으로 tcpdump를 실행해야 합니다.

터미널에서 다음 명령을 실행하여 인터페이스 목록을 확인하세요:

sudo tcpdump -D

다음과 유사한 출력이 나타날 것입니다:

1.eth0 [Up, Running, Connected]
2.lo [Up, Running, Loopback]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
5.nflog (Linux netfilter log (NFLOG) interface) [none]
6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]

이 목록을 보면 eth0(또는 특정 가상 머신 환경에 따라 eth1) 가 가상 머신을 외부 네트워크에 연결하는 주된 문임을 알 수 있습니다. lo 인터페이스는 순수하게 내부 통신용으로 사용됩니다. 또한 any라는 특별한 의사 장치 (pseudo-device) 도 볼 수 있는데, 이는 모든 활성 문을 통과하는 트래픽을 동시에 캡처하고 싶을 때 유용한 단축 경로입니다.

참고: 주 인터페이스가 eth0가 아닌 eth1인 경우, 이 실습의 모든 후속 명령에서 eth0를 eth1로 대체하여 사용하세요.

실시간 트래픽 캡처

이제 네트워크 문이 어디에 있는지 알았으니, 그곳을 통과하는 패킷 (우편물) 을 캡처할 수 있습니다. 주요 네트워크 연결을 담당하는 eth0 인터페이스에 집중해 보겠습니다.

처음 tcpdump를 사용하면 각 줄이 패킷 하나에 대한 간략한 요약 정보이기 때문에 출력 내용이 다소 위협적으로 느껴질 수 있습니다. 각 줄을 짧은 사건 기록 로그라고 생각하세요. 아직 모든 바이트를 보여주지는 않지만, 누가 누구와 통신했는지, 어떤 프로토콜이 사용되었는지, 데이터가 얼마나 이동했는지와 같은 상위 수준의 질문에 답하기에는 충분한 정보를 제공합니다. 보안 작업에서 이러한 요약 보기는 시스템이 정상적으로 작동하는지, 아니면 이상하게 작동하는지 감지하는 가장 빠른 방법인 경우가 많습니다.

tcpdump에 모니터링할 특정 인터페이스를 지정하려면 "interface"를 의미하는 -i 플래그를 사용합니다.

다음 명령을 실행하여 eth0에서 트래픽 캡처를 시작하세요:

sudo tcpdump -i eth0

이 명령을 실행하면 tcpdump가 즉시 각 패킷에 대한 정보를 터미널에 출력하기 시작합니다. 마치 빠르게 스크롤되는 매트릭스 텍스트처럼 보일 것입니다:

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:23:45.123456 IP 192.168.1.10.22 > 192.168.1.20.54321: Flags [P.], seq 1:100, ack 1, win 500, length 99
10:23:45.124567 IP 192.168.1.20.54321 > 192.168.1.10.22: Flags [.], ack 100, win 499, length 0
...

이 프로그램은 사용자가 명시적으로 중지하라고 할 때까지 계속 실행되며 모든 것을 캡처하려고 시도합니다. 이는 리눅스 모니터링 도구의 일반적인 동작 방식입니다.

캡처를 중지하고 터미널 제어권을 되찾으려면 Ctrl 키를 누른 상태에서 C를 누르세요. 이 키보드 단축키 (Ctrl+C) 는 리눅스에서 실행 중인 프로그램을 중단하고 취소할 때 보편적으로 사용됩니다.

중지하면 tcpdump가 정상적으로 종료되면서 성공적으로 캡처된 패킷 수와 드롭된 패킷 수를 포함한 간단한 요약 정보를 제공합니다.

캡처 길이 (패킷 수) 관리

Ctrl+C를 사용하여 수동으로 패킷 캡처를 중지하는 것도 좋은 기술이지만, 항상 실용적인 것은 아닙니다. 바쁜 네트워크에서는 단 몇 초 만에 수천 줄의 텍스트가 화면을 뒤덮을 수 있습니다. 때로는 무슨 일이 일어나고 있는지 확인하기 위해 트래픽의 작은 샘플만 필요할 때가 있습니다.

여기서 중요한 분석가적 사고방식이 등장합니다. 데이터 수집은 관리 가능한 상태가 아니라면 자동으로 유용해지지 않습니다. 실제 환경에서 잘못 계획된 캡처는 화면을 압도하거나, 저장 공간을 채우거나, 수천 개의 관련 없는 패킷 속에 중요한 이벤트를 묻어버릴 수 있습니다. 패킷 수를 제한하는 것은 범위를 제어하는 간단한 방법입니다. 훌륭한 조사관은 자신이 보고 있는 것을 명확하게 생각할 수 있도록 끊임없이 수집 범위를 좁힙니다.

이를 해결하기 위해 tcpdump는 "count(개수)"를 의미하는 -c 플래그를 제공합니다. 이 플래그를 사용하면 캡처하려는 패킷 수에 엄격한 제한을 둘 수 있습니다. 해당 숫자에 도달하면 도구가 자동으로 중지됩니다.

다음 명령을 실행하여 eth0 인터페이스에서 정확히 5 개의 패킷을 캡처하세요:

sudo tcpdump -i eth0 -c 5

화면에 정확히 5 개의 패킷이 출력되는 것을 볼 수 있습니다. 그 후에는 Ctrl+C를 누를 필요 없이 자동으로 명령 프롬프트가 돌아옵니다.

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:28:12.345678 IP 10.0.0.5.443 > 10.0.0.2.34567: Flags [P.], seq 1:50, ack 1, win 256, length 49
...
5 packets captured
5 packets received by filter
0 packets dropped by kernel

-c 플래그를 사용하는 것은 익숙하지 않은 네트워크를 탐색할 때 매우 좋은 습관입니다. 터미널이 압도되는 것을 방지하고, 자신의 속도에 맞춰 분석할 수 있는 관리 가능한 데이터 덩어리를 제공합니다.

중지 및 출력 검토

실시간으로 스크롤되는 텍스트를 지켜보는 것은 특히 특정 세부 사항을 찾으려 할 때 어렵습니다. 훨씬 더 좋은 방법은 네트워크 트래픽을 파일로 기록하여 나중에 신중하게 검토하는 것입니다. 이는 마치 보안 영상을 테이프에 녹화하는 것과 정확히 같습니다.

실시간 보기에서 저장된 증거로의 전환은 사이버 보안 작업의 중요한 전환점입니다. 실시간 캡처는 즉각적인 문제 해결에 유용하지만, 저장된 캡처는 신중한 분석, 협업, 사건 재구성을 가능하게 합니다. 트래픽이 파일에 보존되면, 원래 사건이 다시 발생할 필요 없이 반복해서 재생하고, 팀원들과 공유하며, 나중에 새로운 필터를 적용할 수 있습니다.

이러한 기록은 일반적으로 "packet capture"를 의미하는 .pcap 확장자로 저장됩니다.

PCAP 파일은 단순한 텍스트 로그가 아닙니다. 분석 도구가 이해할 수 있는 구조화된 이진 형식으로 패킷 데이터를 저장합니다. 이것이 전문가들이 터미널 출력을 메모장에 복사하는 것보다 PCAP 을 선호하는 이유입니다. 이 파일은 원래의 타이밍과 원시 바이트를 매우 정밀하게 보존하므로, 나중에 다른 도구들이 동일한 증거를 다양한 방식으로 재해석할 수 있습니다.

출력을 저장하려면 "write(쓰기)"를 의미하는 -w 플래그를 사용합니다. 여기에 유용한 -c 플래그를 결합하여 5 개의 패킷 샘플을 빠르게 가져와 capture.pcap이라는 파일에 기록해 보겠습니다.

다음 명령을 실행하세요:

sudo tcpdump -i eth0 -c 5 -w capture.pcap

이번에는 터미널이 평소보다 조용할 것입니다. -w를 사용하면 tcpdump가 패킷 세부 정보를 화면에 출력하지 않기 때문입니다. 대신, 원시 이진 데이터를 현재 디렉토리의 capture.pcap 파일에 조용히 기록합니다.

트래픽이 저장되었으니 이제 재생할 수 있습니다. 파일을 열기 위해 "read(읽기)"를 의미하는 -r 플래그를 사용합니다. 단순히 본인이 소유한 파일을 읽는 것이므로 이 단계에서는 sudo 권한이 필요하지 않습니다.

다음 명령을 실행하여 저장된 패킷을 읽으세요:

tcpdump -r capture.pcap

앞서 캡처한 5 개의 패킷이 터미널에 깔끔하게 출력되어, 충분한 시간을 가지고 검토할 수 있게 됩니다:

reading from file capture.pcap, link-type EN10MB (Ethernet), snapshot length 262144
10:35:22.111222 IP 10.0.0.2.22 > 10.0.0.5.55555: Flags [P.], seq 1:100, ack 1, win 300, length 99
...

캡처 내용을 PCAP 파일로 저장하는 것은 전문적인 네트워크 분석의 초석입니다. 이를 통해 신뢰할 수 있는 기록을 유지하고, 동작을 일시 중지하며, 복잡한 문제를 조사할 때 팀원들과 트래픽 로그를 쉽게 공유할 수 있습니다.

요약

축하합니다! 네트워크 분석을 향한 첫걸음을 성공적으로 내디뎠습니다.

이번 실습에서 여러분은 강력한 관찰 도구로서 tcpdump를 배포하는 방법을 배웠습니다. -D 플래그를 사용하여 네트워크 인터페이스를 식별하고, -i 플래그를 사용하여 특정 인터페이스에서 실시간 트래픽을 캡처하는 연습을 했습니다. 또한 -c 플래그로 패킷 수를 제한하여 출력 볼륨을 제어하는 방법도 배웠습니다. 마지막으로 -w 플래그를 사용하여 원시 네트워크 데이터를 영구적인 .pcap 파일로 저장하고, -r 플래그를 사용하여 신중한 검토를 위해 다시 읽어오는 방법을 익혔습니다.

이러한 기본 명령들은 네트워크 문제 해결 및 보안 조사의 절대적인 토대입니다. 이 기초를 마스터함으로써 여러분은 시스템 전반에서 일어나는 보이지 않는 대화를 이해하는 길에 들어섰습니다. 계속 연습하다 보면 흐르는 데이터가 곧 완벽하게 이해되기 시작할 것입니다!