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 으로 변환할 수 있습니다.

2013년 7월 9일 화요일

수성 탐사선 메신저호에 사용된 CPU 는 겨우 25MHz


몇일 전 부터 읽어보기 시작한 '행성이야기'라는 책이 있습니다. 제목과 같이 각 행성별로 다양한 이야기를 풀어 놓고 있습니다. 수성편을 보다가 2011년에 수성궤도에 안착한 '메신저호' 가 궁금해 살짝 찾아보았습니다. 수성을 탐사했던 것이 1975년 '마리너 10호'가 표면의 일부 사진을 찍어 전송해 왔습니다. 수성은 상대적으로 알려진 것이 많지 않은 행성이었고, 나사에서는 수성의 신비를 캐기 위해 2004년 8월 메신저호를 발사합니다.


6년7개월간 79Km 긴 항해 끝에 2011년3월18일 수성 궤도에 진입하여 본격적인 수성탐사가 시작되었습니다. 그리고 첫번째로 전송되어 온 사진이 아래와 같습니다.


메신저호에 관한것은 검색해 보면 많은 내용들이 있으니 한번 보시고요, 제가 관심이 갔던 내용은 이 위성에 사용된 하드웨어 입니다. 그 중에서도 프로세서 인데요, IBM RAD6000 이라는 것입니다. 2개의 CPU 가 탑재되어 있고 메인 프로세서는 25MHz 로 동작하고 나머지 백업프로세서는 10MHz 라고 합니다. 이걸로 모든 데이터를 취합하고 압축하여 위성에 달린 3개의 안테나를 이용해 지구로 데이터를 전송합니다. 저희가 지금 사용하는 프로세서가 GHz 에 달하는데 아니 겨우 25MHz 라니 놀랍지 않은가요?

해당 프로세서는 또 우주의 환경을 잘 견딜 수 있도록 방사능 같은것에서도 안정적으로 동작할 수 있도록 만들어졌다고 합니다. 그만큼 빠른 속도보다도 안정적으로 동작하는 것이 최우선이기 때문입니다. RAD6000 은 클럭을 33 또는 66MHz 를 선택할 수 있는데 낮은 클럭을 선택할 수록 신뢰성은 더욱 높아진다고 볼 수 있습니다. 그래서 메신저호에서 선택한 클럭 스피드는 25MHz 입니다. 그리고 해당 프로세서가 파이프라인을 통해 한 클럭 사이클에서도 여러 명령어를 한번에 실행할 수 있다고 합니다. 이 뜻은 클럭이 낮은 경우라도 보다 빠른 처리를 할 수 있는 부분입니다. 또 전체 칩셋은 110만개의 트랜지스터로 구성되어 있어 보다 낮은 전력을 소모합니다. 트랜지스터가 적을 수록 우주 방사능 노출 에서도 더 안정적이라고 하더군요. 이외 태양 전지판으로 전력을 받는 것도 제한적이므로 전력 소모가 적어야 하는 것은 당연한 일입니다.

RAD6000 은 화성 탐사선 스피릿 로버와 오퍼튜니티에서도 사용되었다고 합니다. 중요한 임무를 수행하는 로봇에서도 이 정도로도 가능하다니 대단하지 않나요. 그래도 이 작은 프로세서가 가격이 $200,000 이 넘는다고 합니다.

이상 위성의 CPU 가 궁금했던 Rigel 이었습니다.

[ 참고]
1. RAD6000 위키피디아
2. 나사 메신저 홈페이지
3. 네이버 과학지식(수성 탐사선 메신저호)

2013년 7월 2일 화요일

미 국가안보국의 감청 프로젝트, 프리즘(PRISM)

Edward Snowden 이 미국의 종합적인 감청 시스템에 대해 폭로하면서 많은 이야기들이 나오고 있습니다. NSA 감청 프로그램인 프리즘(PRISM) 에 대한 세부적인 슬라이드가 워싱펀 포스트지에 의해 추가로 공개되었습니다. 초기(6월6일)에 4장의 슬라이드가 공개되었고 이후(6월29일)에 4장의 슬라이드가 또 공개되어졌습니다. 이 슬라이드에 따르면 NSA 는 이메일 로긴, 이메일 발송, 채팅 서비스등의 이벤트를 감청할 수 있는 것으로 보인다고 합니다. 실시간으로 가능한지 여부는 정확히 모르겠네요.

데이타 수집에 대한 프로세스도 세부적으로 표시되어 있는데, 인터넷 데이터, 전화 기록, 음성 데이터, 비디오 데이터를 포함해 광범위하게 수집되고 있습니다. 프리즘 데이터베이스에는 117,675 개의 주요 감청 대상이 있으나 정확하게 알려져 있지는 않습니다.

프리즘 프로그램에 처음으로 참여한 기업은 마이크로소프트로 2007년9월부터라고 합니다. 슬라이드에 있는 프리즘 Provider 를 보면 Microsoft, Yahoo, Google, Facebook, PalTalk, YouTube, Skype, AOL, Apple 입니다. 굵직한 기업은 다 포함되어 있네요.

슬라이드중 PRINTAURA 가 트래픽 데이터를 자동으로 수집하는 것인가 봅니다. 이 트래픽 데이터를 다 수집하려면 만만치 않은 작업인거 같은데, 대단하네요. 기사에 보니까 한국도 감청 대상이었다고 하네요 ㅜㅜ



[참고]
1. 워싱턴포스트 프리즘 자료
http://www.washingtonpost.com/wp-srv/special/politics/prism-collection-documents/