레이블이 pcapng인 게시물을 표시합니다. 모든 게시물 표시
레이블이 pcapng인 게시물을 표시합니다. 모든 게시물 표시

2013년 7월 25일 목요일

차세대 패킷 포맷, Pcap-NG 를 알고싶다 _ 첫번째 이야기

저번 포스팅에서 pcap-ng 를 pcap 으로 그리고 pcap 을 pcap-ng 로 변환하는 방법에 대해서 소개했습니다. 오늘은 말씀드렸던것과 같이 차세대 패킷 저장 포맷인 pcap-ng 를 자세히 알아보고자 합니다. 첫번째로, pcap-ng 의 주요한 특징/기능 에 대해서 말씀드리겠습니다.

차세대 패킷 저장 포맷을 만들시 고려사항, 즉 최종 목표는 다음과 같습니다.

- Extensibility
- Portability
- Merge/Append data

확장성도 좋아야 하고 패킷 파일을 덤프한 곳에 대한 최대한 많은 정보를 포함시키고 데이터를 통합하거나 추가하기도 유연해야 했습니다. 이렇게 해서 디자인 된 것이 pcap-ng 입니다.

주요한 사항들에 대해서 아래와 같이 적어보았습니다.

- 와이어샤크 1.8 에서 기본 파일 포맷이 Pcap-NG 로 변경됨
- Tcpdump 버전 4.1.1 이상에서 Pcap-NG 를 지원
- NTAR(Network Trace Archival and Retrieval) 로 불리기도 함
- Pcap-NG 에서 메타 데이터를 포함할 수 있음 (운영체제, 패킷 캡쳐 프로그램, 캡쳐 필터 등)

<주요특징>

- 한개의 파일에 여러개의 인터페이스 트래픽이 캡쳐되어 저장될 수 있습니다. 인터페이스가 다른 형태의 데이터 링크 타입이라도 가능합니다. 예를들어 802.11, PPP 를 동시에 저장하는 것이 가능하게 되었습니다.

- 메타데이터 정보 기록이 가능합니다. 어떤 운영체제, 하드웨어 인지, 캡쳐 프로그램에 사용한 패킷 캡쳐 프로그램과 같은 정보로 와이어샤크와 dumpcap 은 Pcap-NG로 저장할때 자동생성합니다.

- 패킷 시간 기록 한계가 해결되었습니다. 현재 10^6 의 마이크로세컨드를 이용하여 표현을 하다보니 초당 999,999 개 이상의 패킷 시간 기록에 한계가 있습니다. 오늘날과 같은 1기가 이상의 고속 네트워크에서는 이 비율을 쉽게 초과하므로 문제가 있죠. pcapng 에서는 64비트 시간을 이용하여 표현하게 되어 이런 문제를 해결할 수 있습니다. 아래 화면은 10g 구간에서 패킷 덤프를 한 것으로 같은 타임스탬프가 찍히는 것을 볼 수 있습니다. 바로 이런 문제가 극복된 것이죠.
[Image]
[Image Source] CESNET

- 각 개별 프레임마다 코멘트가 기록되어 저장될 수 있습니다. 와이어샤크에서 필터이름 "pkt_comment" 로 출력이 가능합니다. 예를들어, tshark -r test.pcapng -T fields -e pkt_comment -R pkt_comment 로 사용하면 코멘트를 출력할 수 있습니다.

- 유연한 파일포맷을 제공하여 해당 포맷을 이용하는 소프트웨어에서 유연하게 사용할 수 있게 되었습니다. 포맷 형태가 블럭별로 되어 있어 필요치 않은 블럭은 제외되어도 패킷 포맷을 처리하는데 문제가 없게 되었고 이것은 도구에서 제공하는 기능상황에 따라 유연한 포맷형태로 사용가능하다는 뜻입니다.

- 각 인터페이스에 대한 메타 정보가 기록되어 있습니다. 이런 정보는 인터페이스 이름, 손실된 패킷, 캡쳐 필터 정보가 해당됩니다.

너무 길게 설명하면 지루하니 오늘은 pcap-ng 의 특징들 까지만 알아보고 다음번에 포맷에 대해서 좀더 알아보겠습니다.

[참고]
[1] PCAPNG 파일 포맷
http://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html
[2] 차세대 패킷 포맷 PCAP-NG 를 PCAP 으로 쉽게 변환하기
http://www.packetinside.com/2013/07/pcap-ng-pcap.html

2013년 7월 19일 금요일

차세대 패킷 포맷 PCAP-NG 를 PCAP 으로 쉽게 변환하기

인기있는 패킷분석 도구인 최신 와이어샤크를 사용하면 패킷파일 저장시에 기본적으로 차세대 PCAP 포맷인 PCAPNG 형태로 저장되고 있습니다. 항상 확장자가 cap 또는 pcap 으로 되어 있는 것으로만 익숙해져 있는데 말이죠. 디폴트로 사용되다 보니 과거 보다는 pcapng 포맷이 조금 더 증가한 느낌입니다. pcapng 포맷은 pcap 보다 패킷 파일 저장시 더 많은 정보를 기록하고 있습니다. 더 많은 정보를 주니 분석가 입장에서는 싫을 이유는 없겠죠. 다만, 패킷 파일 사이즈가 더 커지는 문제는 있습니다.

오늘은 PCAP 에 익숙하신 분들을 위하여 PCAP-NG 포맷을 PCAP 으로 쉽게 바꾸는 방법에 대해서 알려드릴께요.

와이어샤크가 설치되어 있다면 editcap 을 통해 쉽게 하실 수가 있습니다. editcap 의 -F 옵션을 보면 캡쳐 타입 리스트를 볼 수 있습니다.

# editcap -F
editcap: The available capture file types for the "-F" flag are:
    5views - Accellent 5Views capture
    btsnoop - Symbian OS btsnoop
    commview - TamoSoft CommView
    dct2000 - Catapult DCT2000 trace (.out format)
    erf - Endace ERF capture
    eyesdn - EyeSDN USB S0/E1 ISDN trace format
    k12text - K12 text file
    lanalyzer - Novell LANalyzer
    libpcap - Wireshark/tcpdump/... - libpcap
    modlibpcap - Modified tcpdump - libpcap
    netmon1 - Microsoft NetMon 1.x
    netmon2 - Microsoft NetMon 2.x
    nettl - HP-UX nettl trace
    ngsniffer - NA Sniffer (DOS)
    ngwsniffer_1_1 - NA Sniffer (Windows) 1.1
    ngwsniffer_2_0 - NA Sniffer (Windows) 2.00x
    niobserver - Network Instruments Observer
    nokialibpcap - Nokia tcpdump - libpcap
    nseclibpcap - Wireshark - nanosecond libpcap
    nstrace10 - NetScaler Trace (Version 1.0)
    nstrace20 - NetScaler Trace (Version 2.0)
    pcapng - Wireshark - pcapng
    rf5 - Tektronix K12xx 32-bit .rf5 format
    rh6_1libpcap - RedHat 6.1 tcpdump - libpcap
    snoop - Sun snoop
    suse6_3libpcap - SuSE 6.3 tcpdump - libpcap
    visual - Visual Networks traffic capture

눈에 익숙한 libpcap 과 pcapng 가 보입니다. 바로 이것을 이용하면 됩니다.

1. PCAPNG 포맷 PCAP 으로 변환하기 


editcap 을 이용해 캡쳐 타입과 -T 를 통해 캡슐화를 정의해 주어야 합니다. 캡슐화라는 용어가 익숙하지 않다면 다음글을 우선 참고해 보세요.

패킷을 보다 자주 접하는 캡슐화(Encapsulation)는 무엇이지?



# editcap -F libpcap -T ether test.pcapng test.pcap

만약 -T 로 encapsulation 을 지정하지 않으면 다음과 같은 에러가 발생합니다.

# editcap -F libpcap test.pcapng test3.pcapeditcap: Can't open or create test3.pcap: Files from that network type can't be saved in that forma

2. PCAP 포맷을 PCAPNG 포맷으로 변경하기 


PCAPNG -> PCAP 변환이 있다면 이 반대 방법도 존재하겠죠. 여기서는 -T 옵션을 사용할 필요가 없습니다.

# editcap -F pcapng test.pcap test.pcapng

또는 tshark 를 이용할 수도 있습니다.

# tshark -F pcapng -r test.pcap -w test.pcapng

만들어진 파일을 살펴보겠습니다.

# ls -l
-rw-r--r-- 1 root    root     3015906 Jul 10 06:25 test.pcap
-rw-r--r-- 1 root    root     3551608 Jul 10 06:28 test.pcapng

원본 test.pcap 이 3메가 정도가 되는데, pcapng 포맷으로 변경하니 3.5 메가 정도로 크기가 증가하였습니다. file 명령어를 이용해 타입을 살펴보겠습니다.

# file test.pcapng
test.pcapng: pcap-ng capture file - version 1.0
# file test.pcap
test.pcap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 1514)

정확히 포맷을 인식하고 있네요. 정상적으로 변환이 잘 된것 같습니다. 이 2개 파일을 비교하면 당연히 완전 다릅니다. 패킷 내용 자체는 같더라도 부가적으로 포함되어 있는 내용과 구조가 다르기 때문입니다.

차세대 패킷 파일 포맷, PCAP-NG 를 다음번 포스팅에서 자세히 소개해 보도록 하겠습니다.

아, 참고로 pcapng.com  에서는 온라인에서 pcap-ng 를  pcap 으로 변환할 수 있습니다.