libpcap

agnusdei·2025년 9월 1일
0

CTF

목록 보기
78/154

libpcap(라이브러리) 설명

1. 개요

  • libpcap (packet capture library)

    • 네트워크 패킷을 커널에서 캡처(user-space로 전달)하기 위한 C 라이브러리
    • 주요 OS: Linux, BSD 계열, macOS
    • 윈도우에서는 WinPcap/Npcap으로 포팅됨

주요 역할:

  • 네트워크 인터페이스에서 들어오고 나가는 패킷을 실시간으로 모니터링
  • 고급 필터(BPF, Berkeley Packet Filter)를 지원해 원하는 패킷만 선택적으로 캡처

2. 동작 원리

  1. 커널 수준

    • NIC(Network Interface Card)에서 패킷이 수신되면 OS 커널 내 패킷 버퍼에 저장
    • libpcap은 Packet Capture Driver를 통해 커널 버퍼 접근
  2. 사용자 공간

    • 애플리케이션이 libpcap API를 호출 → 커널 버퍼에서 패킷 복사
    • BPF 필터를 적용하여 필요한 패킷만 선택적 전달
    • 이벤트 기반 또는 폴링 방식으로 캡처 가능
  3. BPF(Berkeley Packet Filter)

    • 커널에서 패킷 필터링 수행
    • 효율적: 커널에서 불필요한 패킷을 제외하고 사용자 공간으로 전달 → 성능 최적화

3. libpcap API 구조

  1. 핸들 생성 및 초기화

    pcap_t *pcap_open_live(const char *device, int snaplen,
                           int promisc, int to_ms, char *errbuf);
    • device → 인터페이스 (eth0, wlan0 등)
    • snaplen → 캡처 최대 바이트
    • promisc → Promiscuous mode 여부
    • to_ms → 타임아웃(ms)
  2. 패킷 캡처 루프

    pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
    • 패킷이 도착할 때마다 callback 함수 호출
  3. 필터 적용

    struct bpf_program fp;
    pcap_compile(handle, &fp, "tcp port 80", 0, net);
    pcap_setfilter(handle, &fp);
  4. 종료 및 정리

    pcap_close(handle);

4. 주요 특징

특징설명
실시간 패킷 캡처커널 레벨에서 직접 패킷을 잡아 사용자 공간으로 전달
포터블Unix 계열 및 Windows(WinPcap/Npcap) 호환
고급 필터BPF 지원으로 효율적 패킷 필터링
다양한 프로토콜Ethernet, IP, TCP, UDP, ICMP 등 대부분 지원
Sniffer 기반 도구tcpdump, Wireshark 등 다수 도구의 기반

5. 사용 사례

  1. 네트워크 분석

    • tcpdump, Wireshark, tshark
  2. 보안 모니터링

    • IDS/IPS (Snort, Suricata)
  3. DevSecOps / 펜테스트

    • 패킷 스니핑, 트래픽 분석, 네트워크 취약점 탐지
  4. 성능 측정

    • 대역폭, 지연, 패킷 손실률 분석

6. 보안 관점

  • 권한 문제

    • libpcap은 커널 패킷 버퍼 접근 필요 → 일반적으로 root 권한 필요
  • 취약점 가능성

    • 오래된 libpcap 버전은 buffer overflow, DoS 공격 가능성 있음
  • DevSecOps 적용

    • 패킷 캡처용 계정 최소 권한 원칙
    • 최신 버전 유지, 취약점 패치

정리

  • libpcap은 네트워크 패킷을 커널에서 캡처해 사용자 공간으로 안전하게 전달하는 표준 라이브러리
  • BPF 기반 필터링으로 효율적이며, tcpdump/Wireshark 등 도구의 핵심 엔진
  • DevSecOps/펜테스트에서는 패킷 분석, 보안 모니터링, 트래픽 검증용 필수 도구

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글