시스템 관리자 및 보안 분석가를 위한 12가지 네트워크 패킷 분석기

네트워크는 현대 비즈니스의 핵심 동맥과 같습니다. 이 동맥 안에서 실제로 무슨 일이 벌어지고 있는지 자세히 살펴보는 것은 매우 중요합니다.

디지털 비즈니스 환경은 급격한 변화를 겪어왔습니다. 초기에는 단순한 CGI 스크립트(Perl로 작성됨)로 시작했지만, 지금은 Kubernetes와 같은 오케스트레이션 프레임워크를 통해 완전 자동화된 클러스터 배포로 발전했습니다.

(출처: medium.com)에서 제공된 최신 컨테이너화 및 분산 웹 애플리케이션의 일반적인 구조입니다.

그러나 1970년대의 기본 개념은 여전히 ​​유효하다는 점이 흥미롭습니다. 이것은 마치 추상화 위에 추상화를 쌓는 것과 같지만, 모든 것은 네트워크를 형성하는 견고한 물리적 케이블에 의해 뒷받침됩니다. OSI 모델을 사용하여 네트워크를 계층으로 나누어 더 복잡하게 만들 수도 있습니다. 결국, 모든 것은 데이터 패킷을 전송하는 것입니다. 우리는 항상 TCP/IP 프로토콜, 핑, 라우터 등을 사용합니다. (미리 경고하지만, 앞으로 이러한 용어들을 자주 접하게 될 것입니다!)

그렇다면 네트워크 패킷이란 정확히 무엇일까요?

채팅, 비디오 스트리밍, 게임, 웹 서핑, 온라인 쇼핑 등 우리가 하는 모든 것은 결국 두 컴퓨터 (또는 네트워크) 간의 데이터 패킷 교환으로 귀결됩니다. “패킷”은 네트워크 내에서 또는 네트워크 간에 이동하는 정보의 가장 작은 단위입니다. 네트워크 패킷을 구성하고 확인하는 데에는 명확하게 정의된 방법이 있습니다. (이 주제는 이 글의 범위를 벗어나지만, 더 자세히 알고 싶다면 여기를 참고하세요: 더 알아보기).

(출처: training.ukdw.ac.id)에서 가져온 네트워크 패킷 흐름의 시각적 표현입니다.

간단히 말해, 모든 패킷은 체인의 연결고리 역할을 합니다. 데이터는 소스에서 적절하게 전송되고, 목적지에서 유효성이 검증됩니다. 단일 패킷이 누락되거나 순서가 잘못되면, 전체 프로세스가 올바른 순서로 모든 패킷을 수신할 때까지 일시 중단됩니다. 그 후에야 패킷들이 결합되어 원래의 데이터(예: 이미지)를 형성합니다.

이제 네트워크가 어떻게 작동하는지 이해했으므로, 네트워크 분석기가 하는 일을 이해할 때입니다. 네트워크 분석기는 네트워크의 개별 패킷을 들여다볼 수 있도록 도와주는 도구입니다.

하지만 왜 굳이 이런 복잡한 과정을 거쳐야 할까요? 그 이유는 다음 섹션에서 알아보겠습니다.

왜 패킷을 분석해야 할까요?

원자가 모든 물질의 기본 구성 요소인 것처럼, 패킷은 네트워크 데이터 흐름의 기본 요소입니다. 하지만 물질이나 가스를 분석할 때, 우리는 개별 원자의 행동에 대해 자세히 알려고 하지는 않습니다. 그렇다면 왜 우리는 개별 네트워크 패킷에 관심을 가져야 할까요? 우리가 이미 알고 있는 것 외에 무엇을 더 알 수 있을까요?

패킷 수준 분석의 중요성을 이해하는 것이 어려울 수 있지만, 한번 시도해 보겠습니다.

패킷 분석은 직접적인 접근을 의미합니다. 문제 해결을 위해 배관을 직접 들여다보는 것과 같습니다. 일반적으로 다른 모든 방법이 실패했을 때 네트워크 패킷을 분석합니다. 이는 다음과 같은 상황에서 흔히 발생합니다.

  • 명백한 침해가 없는데도 설명할 수 없는 기밀 데이터 유출이 발생하는 경우
  • 뚜렷한 이유 없이 응용 프로그램이 느리게 실행되는 경우
  • 컴퓨터 또는 네트워크가 공격을 받지 않았는지 확인하려는 경우
  • 누군가가 Wi-Fi를 무단으로 사용하고 있지 않은지 확인하는 경우
  • 낮은 트래픽에도 불구하고 서버에 병목 현상이 발생하는 원인을 파악해야 하는 경우

기본적으로, 패킷 분석은 일종의 ‘증거’ 역할을 합니다. 패킷 분석 방법을 알고, 그 스냅샷을 가지고 있다면, 해킹의 누명을 쓰거나 무능한 개발자 또는 네트워크 관리자로 비난받는 것을 피할 수 있습니다.

핵심은 바로 ‘두뇌’입니다! (출처: 데일리닷컴)

실제 사례를 하나 들어보겠습니다. 이 댓글은 한 블로그 게시물에서 발견되었습니다. 여기에서 확인할 수 있습니다. (일부 내용은 여기에도 재현되어 있습니다.)

우리 회사에서는 중요한 응용 프로그램에 성능 문제가 발생하여 고객에게 배포하는 데 어려움을 겪었습니다. 이것은 전 세계 금융 회사에서 사용하는 주식 시세 응용 프로그램이었습니다. 2000년대 초반에 401(k)에 투자했다면 아마 이 응용 프로그램에 의존했을 것입니다. 저는 TCP 동작을 특히 자세히 분석했습니다. 그 결과 문제는 OS 공급업체의 TCP 구현에 있다는 것을 발견했습니다. 버그가 있는 동작은 전송 스택이 혼잡 제어에 들어갈 때 복구되지 않는다는 것이었습니다. 결과적으로 전송 창이 MSS 크기의 몇 배에 불과한 정도로 아주 작아지는 경우가 있었습니다.

문제는 OS 공급업체 측에서 설명에 대해 이해하지 못하거나, 응용 프로그램이 TCP 메커니즘을 이해하지 못하기 때문에 응용 프로그램에 문제가 *없을 수 없다*고 주장하는 담당자들과 싸워야 했다는 것입니다. 그것은 마치 벽에 대고 이야기하는 것 같았습니다. 모든 전화 회의에서 저는 처음부터 다시 시작해야 했습니다. 결국 좋은 논의를 할 수 있는 담당자와 연결이 되었습니다. 그 담당자는 스택에 RFC1323 확장을 구현했습니다! 다음 날, 저는 OS 패치를 받았고 제품은 그 이후로 완벽하게 작동했습니다.

개발자는 스택이 혼잡 제어 상태일 때, 수신되는 ACK *페이로드*가 DUPACK으로 잘못 분류되는 버그가 있다고 설명했습니다.

이러한 현상은 HTTP와 같은 반이중 응용 프로그램에서는 발생하지 않지만, 제가 지원하는 응용 프로그램은 항상 소켓에서 양방향으로 데이터를 전송했습니다.

당시 경영진의 지원은 부족했고 (제 관리자는 “항상 스니퍼를 사용하려 한다”고 소리치기까지 했습니다.), 문제의 원인이 OS 공급업체의 TCP 구현에 있다고 주장한 사람은 저밖에 없었습니다. OS 공급업체와 혼자서 문제를 해결하는 과정은 이 승리를 더욱 값지게 만들었고, 업무에 대한 자신감을 얻을 수 있었으며, 그 이후로 매우 흥미로운 문제들을 다루게 되었습니다.

만약 긴 글을 읽고 싶지 않거나 이해가 안 간다면, 요약하자면 이 신사는 성능 문제로 어려움을 겪었지만 경영진의 지원을 받지 못했습니다. 하지만 철저한 패킷 분석을 통해 문제가 응용 프로그램이 아닌 운영 체제가 네트워킹 프로토콜을 처리하는 방식에 있다는 것을 증명했습니다.

수정 사항은 응용 프로그램 조정이 아닌 운영 체제 개발자의 패치였습니다! 😮

정말 놀랍습니다. 만약 패킷 수준 분석이 없었다면 이 사람은 어떻게 되었을까요? 아마도 직장을 잃었을 수도 있습니다. 이것이 패킷 분석(패킷 스니핑이라고도 함)의 중요성을 확신시키지 못한다면 더 이상 할 말이 없습니다. 🙂

이제 패킷 분석이 매우 강력한 도구라는 것을 알았으므로, 좋은 소식이 있습니다. 패킷 분석은 생각보다 어렵지 않습니다!

강력하면서도 사용하기 쉬운 패킷 스니핑 도구 덕분에 패킷 수준 분석에서 정보를 수집하는 것은 판매 대시보드를 읽는 것만큼 쉬울 수 있습니다. 즉, 네트워크 내부에서 무슨 일이 일어나는지 피상적인 지식 이상이 필요하다는 뜻입니다. 하지만 로켓 과학이 필요한 것은 아닙니다. 약간의 상식만 있으면 됩니다.

네트워크 환경에서 이러한 도구 중 하나의 사용 설명서를 읽기 시작하면 곧 전문가가 될 것입니다. 😀

와이어샤크

와이어샤크는 1998년에 시작된 오래된 프로젝트로, 네트워크를 깊숙이 분석하는 데 있어서 거의 업계 표준입니다. 자원봉사자들에 의해 운영되는 조직이라는 점을 감안할 때, 이들의 성과는 매우 인상적입니다. 와이어샤크는 오픈 소스이며 (GitHub에는 없지만 코드는 여기에서 찾을 수 있습니다), 자체 기술 회의까지 개최하고 있습니다.

와이어샤크의 다양한 기능은 다음과 같습니다.

  • 수백 가지의 네트워크 프로토콜 지원
  • 다양한 파일 형식 (tcpdump(libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer®(압축 및 비압축), Sniffer® Pro, NetXray® 등)과의 호환성
  • 거의 모든 플랫폼 (Linux, Windows, macOS, Solaris, FreeBSD 등)에서 실행
  • 이더넷, IEEE 802.11, PPP/HDLC, ATM, 블루투스, USB, 토큰링 등에서의 실시간 데이터 읽기
  • 실시간 gzip 압축 해제
  • 다양한 암호 해독 프로토콜 (WPA/WPA2, SNMPv3 등) 지원
  • 광범위한 VoIP 분석
  • 빠른 시각적 스캔을 위한 색상 지정 규칙

다음의 훌륭한 온라인 코스를 확인해 보세요. 와이어샤크 마스터링 강좌.

터미널에서 와이어샤크를 찾고 계신가요? 그렇다면 텀샤크를 사용해 보세요.

TCP 덤프

만약 여러분이 구식이라면 (명령줄을 즐겨 사용하는 사람이라면), TCP 덤프가 적합할 것입니다.

이 도구는 (curl과 같이) 상징적인 Linux 유틸리티 중 하나로, 다른 모든 “더 멋진” 도구들이 이 도구를 기반으로 만들어질 정도로 여전히 유용합니다. 앞서 말했듯이 그래픽 환경은 없지만, 이 도구는 그 이상의 기능을 제공합니다.

그러나 설치 과정은 다소 어려울 수 있습니다. 대부분의 최신 Linux 배포판에는 tcpdump가 함께 제공되지만, 그렇지 않은 경우 소스에서 빌드해야 합니다.

tcpdump 명령은 다음과 같은 특정 문제를 해결하는 데 유용합니다.

  • 사용 가능한 모든 인터페이스 표시
  • 특정 인터페이스만 캡처
  • 캡처한 패킷을 파일에 저장
  • 실패한 패킷만 캡처

필요한 사항이 간단하고 빠른 검사를 실행해야 하는 경우, tcpdump는 좋은 선택이 될 수 있습니다 (특히 이미 설치되어 있는 경우). 실시간 tcpdump 명령 예제를 보려면 이 게시물을 참고하세요.

프록시

프록시는 네트워크를 통해 TCP 연결을 프록시하는 간단한 오픈 소스 명령줄 도구입니다. Tproxy는 Go 프로그래밍 언어로 작성되었으며, Go 명령줄 도구로서 Go 바이너리로 패키지되어 모든 최신 Linux 및 macOS 플랫폼에서 사용할 수 있습니다.

아래 이미지는 Mysql 연결을 모니터링하는 명령줄을 보여줍니다.

주요 사용 사례는 HTTP 연결을 프록시하고 HTTP 요청의 내용과 응답을 검사하는 것입니다. 또한 SOCKS 또는 TCP와 같은 다른 프로토콜을 프록시하는 데에도 사용할 수 있습니다. 두 호스트 간의 TCP 연결을 프록시하거나 라이브 연결의 트래픽을 분석하는 데 사용할 수 있습니다. TCP를 전송 프로토콜로 사용하는 응용 프로그램을 디버깅 및 테스트하고 TCP 프록시 서비스를 구축하는 데 유용합니다.

이 도구는 기본 TCP 프로토콜을 이해할 필요 없이 TCP 연결을 프록시하고 다른 고급 네트워크 분석을 수행할 수 있도록 tcpdump 명령줄 유틸리티에 사용하기 쉬운 인터페이스를 제공하는 것을 목표로 합니다.

아래 명령줄은 gRPC 연결을 보여줍니다.

TCP 프록시 역할을 함으로써 마치 로컬 시스템에 있는 것처럼 원격 서비스 및 응용 프로그램에 연결할 수 있습니다. TCP를 사용하는 응용 프로그램을 다룰 때 다양한 보안, 문제 해결 및 성능 향상을 허용하는 역방향 TCP 프록시와 유사한 방식으로 원격 호스트에서 사용자 지정 TCP 서비스를 구축할 수 있습니다.

Tproxy의 추가적인 사용 사례는 다음과 같습니다.

  • TCP 연결을 디버깅하고 최적화하는 데 유용합니다.
  • Burp Suite 및 ZAP와 같은 다른 프록시 프로그램의 작동 방식을 이해하는 데에도 유용합니다.
  • 두 호스트 간 또는 호스트와 데이터베이스 또는 웹 서비스와 같은 원격 TCP 서비스 간의 TCP 연결을 프록시하는 데 사용할 수 있습니다.
  • MySQL 연결 및 gRPC 연결을 모니터링하고 Retrans rate 및 RTT 측면에서 연결 안정성을 확인합니다.

대부분의 사용자는 Tproxy가 워크플로를 단순화하고 애플리케이션이나 네트워크 자체를 변경할 필요 없이 복잡한 네트워크 분석을 수행하고 웹 애플리케이션을 분석할 수 있다는 것을 알게 될 것입니다. 이 도구는 GitHub에서 다운로드할 수 있습니다.

네트워크마이너

스스로를 FNAT (Forensic Network Analysis Tool)라고 칭하는 네트워크마이너는 최고의 패킷 수준 분석기 중 하나입니다. 이 도구는 네트워크를 수동적으로 분석할 수 있는 오픈 소스이며, 개별 이미지와 전송된 다른 파일을 표시할 수 있는 분석용 GUI 인터페이스가 인상적입니다.

하지만 이것이 전부가 아닙니다. NetworkMiner는 다음과 같은 뛰어난 추가 기능을 제공합니다.

  • IPv6 지원
  • PCAP 파일 파싱
  • SSL 암호화 트래픽에서 X.509 인증서 추출
  • Pcap-over-IP
  • FTP, TFTP, HTTP, SMB, SMB2, SMTP, POP3 등 다양한 유형의 트래픽 지원
  • OS 지문 인식
  • 지리적 IP 위치 파악
  • 명령줄 스크립팅 지원

이러한 기능 중 일부는 상용 버전에서 사용할 수 있습니다.

피들러

다른 패시브 네트워크 스니퍼와 달리, 피들러는 장치와 외부 세계 사이에 위치하므로 어느 정도 설정이 필요합니다 (그래서 ‘피들러(Fiddler)’라는 이름을 가졌을지도 모르겠습니다. 😉 ).

피들러는 오랜 역사와 함께 사용자 정의가 가능한 무료 도구(FiddlerScript 사용)입니다. 만약 여러분의 목표가 HTTP/HTTPS 트래픽을 스니핑하는 것이라면 피들러가 적합할 것입니다.

피들러로 할 수 있는 일은 매우 많습니다. 특히 해커와 같은 느낌을 받고 싶다면 더욱 그렇습니다.

  • 세션 조작: 열린 HTTP 헤더와 세션 데이터를 추출하고 원하는 방식으로 수정할 수 있습니다.
  • 보안 테스트: 중간자(man-in-the-middle) 공격을 시뮬레이션하고 모든 HTTPS 트래픽의 암호를 해독할 수 있습니다.
  • 성능 테스트: 페이지 로드 (또는 API 응답) 시간을 분석하고 응답에서 병목 현상이 발생한 부분을 확인할 수 있습니다.

만약 길을 잃었다면 설명서를 참고하세요. 매우 유용하며 적극 권장합니다.

윈덤프

만약 tcpdump의 단순함이 그리워서 Windows 시스템으로 가져오고 싶다면 윈덤프를 사용해 보세요. 설치가 완료되면 Linux 시스템에서 유틸리티가 작동하는 방식과 동일하게 명령줄에서 “tcpdump”를 입력하여 사용할 수 있습니다.

그 자체로는 설치할 것이 없습니다. WinDump는 Pcap 라이브러리 구현이 설치되어 있으면 즉시 실행할 수 있는 바이너리입니다. (winpcap은 더 이상 개발되지 않으므로 npcap을 사용하는 것이 좋습니다.)

브루트샤크

브루트샤크는 PCAP 파일과 같은 네트워크 트래픽을 처리 및 검사하고 네트워크 인터페이스에서 직접 캡처하는 데 사용할 수 있는 효과적인 NFAT (네트워크 포렌식 분석 도구)입니다.

여기에는 TCP 세션 재구성, 네트워크 맵 구축, 강력하게 암호화된 암호의 해시 추출, 해시를 Hashcat 형식으로 변환하여 오프라인에서 무차별 대입 공격을 수행하는 작업이 포함됩니다.

이 프로젝트의 주요 목적은 네트워크 트래픽을 분석하고 약점을 식별해야 하는 네트워크 관리자와 보안 연구원을 돕는 것입니다.

BruteShark에는 Windows용 GUI (그래픽 사용자 인터페이스) 기반 응용 프로그램과 Linux 및 Windows용 CLI 도구의 두 가지 버전이 있습니다. 이 솔루션에 포함된 일부 프로젝트는 Windows 및 Linux 시스템에서 네트워크 트래픽을 분석하는 데 독립적으로 사용할 수도 있습니다.

BruteShark는 DNS 쿼리 추출, 파일 조각 추출, VoIP 호출 추출(SIP, RTP), 사용자 및 네트워크 노드에 대한 네트워크 다이어그램 구축, Hashcat (NTLM, HTTP-Digest, CRAM-MD5, Kerberos 등) 호환 해시, 비밀번호 및 사용자 이름 검색 및 인코딩을 수행할 수 있습니다.

모든 프로젝트는 플랫폼 간 호환성과 최신 기술 지원을 위해 .Net Standard 및 .Net Core를 통해 구현됩니다. 이 솔루션은 3계층 아키텍처를 제공하며, 각 계층에는 PL, BLL 및 DAL을 포함한 하나 이상의 프로젝트가 있습니다.

DAL(데이터 액세스 레이어)은 WinPcap, libpcap과 같은 드라이버 및 SharpPcap과 같은 래퍼 라이브러리를 사용하여 PCAP의 원시 파일을 읽는 데 도움을 줍니다. 마찬가지로 BLL (비즈니스 로직 레이어)은 네트워크 정보 분석(TCP, 패킷 등)을 담당하고, PL은 교차 프로젝트를 활용하여 BLL 및 DAL 계층을 모두 나타냅니다.

옴니픽

초당 수많은 MB의 데이터가 흐르는 대규모 네트워크의 경우, 다른 사람들이 사용하는 도구로는 부족할 수 있습니다. 만약 여러분이 이러한 상황에 처해 있다면, 옴니픽을 고려해 볼 가치가 있습니다.

옴니픽은 특히 저수준 기능과 포괄적인 대시보드가 모두 필요한 경우, 네트워크 분석을 위한 성능, 분석 및 포렌식 도구입니다.

출처: sniffwifi.com

캡사

만약 여러분이 Windows 플랫폼을 주로 사용한다면, 캡사 또한 강력한 경쟁자입니다. 무료, 표준, 엔터프라이즈의 세 가지 버전으로 제공되며, 각 버전마다 기능이 다릅니다.

무료 버전조차 300개 이상의 프로토콜을 지원하며, 경고 (특정 조건이 충족될 때 트리거됨)와 같은 흥미로운 기능이 있습니다. 표준 제품은 1000개 이상의 프로토콜을 지원하며, 대화를 분석하고 패킷 스트림을 재구성할 수 있도록 하는 한 단계 더 나아간 제품입니다.

대체로 Windows 사용자에게는 매우 훌륭한 선택입니다.

이더에이프

만약 강력한 시각화와 오픈 소스를 추구한다면, 이더에이프는 좋은 선택입니다. 미리 빌드된 바이너리는 소수의 Linux 배포판에서만 사용할 수 있지만, 소스를 사용할 수 있으므로 (SourceForge와 GitHub 모두에서) 직접 빌드하는 것이 가능합니다.

제 생각에 EtherApe를 훌륭하게 만드는 이유는 다음과 같습니다.

  • 다중 노드, 색상으로 구분된 모니터링
  • ETH_II, 802.2, 803.3, IP, IPv6, ARP, X25L3, REVARP, ATALK, AARP, IPX, VINES, TRAIN, LOOP, VLAN 등과 같은 수많은 패킷 형식 지원
  • “와이어” 또는 tcpdump 파일에서 실시간으로 데이터를 읽기
  • 표준 이름 확인 지원
  • 최신 버전에서는 GUI가 GTK3로 변경되어 더욱 향상된 경험 제공

CommView

만약 여러분이 Windows 환경을 선호하고 안정적인 지원을 중요하게 생각한다면, CommView를 고려해 보는 것이 좋습니다. CommView는 VoIP 분석, 원격 추적 등과 같은 고급 기능이 내장된 강력한 네트워크 트래픽 분석기입니다.

가장 인상적인 점은 Sniffer®, EtherPeek™, AiroPeek™, Observer®, NetMon, Wireshark/Tcpdump, Wireshark/pcapng, 심지어 일반적인 16진 덤프와 같은 여러 공개 및 독점 형식에서 사용되는 형식으로 데이터를 내보낼 수 있다는 점입니다.

와이파이 익스플로러

마지막으로, 와이파이 익스플로러를 소개합니다. 와이파이 익스플로러는 Windows용 무료 버전과 Windows 및 macOS용 Standard 버전이 있습니다. 만약 여러분에게 필요한 것이 와이파이 네트워크 분석뿐이라면 (요즘은 거의 표준이 되어버렸지만), 와이파이 익스플로러가 여러분의 삶을 더 쉽게 만들어 줄 것입니다.

와이파이 익스플로러는 네트워크의 핵심을 파고들 수 있는 아름답게 디자인되고 기능이 풍부한 도구입니다.

추신: 우연히 발견한 macOS 전용 네트워크 분석기를 언급하지 않고 이 게시물을 마감하는 것은 아쉬울 것입니다. 그것은 바로 리틀 스니치입니다. 리틀 스니치는 방화벽이 내장되어 있어 모든 트래픽을 완벽하게 제어할 수 있다는 추가적인 이점을 제공합니다. (처음에는 번거로울 수 있지만, 장기적으로는 매우 큰 이점이 될 수 있습니다.)

다음 단계는 무엇일까요?

더 나은 인프라 가시성을 위해 이러한 네트워크 모니터링 소프트웨어를 사용해 보세요. 만약 네트워크 및 보안 분야에서 경력을 쌓고 싶다면 여기에서 최고의 온라인 강좌를 확인해 보세요.