'capinfos'에 해당되는 글 1건

  1. 2009.09.23 pcap file format 1
0x04 reference&tools2009. 9. 23. 12:21

어제 직원이 가져온 "해킹과 보안" 책을 봤습니다.
SecurityProof에서 만든 잡지인데 POC2008 Reverse Engineering Contest 우승팀 분석 보고서가 있더군요..
문제에 사용되었던 파일은 http://www.powerofcommunity.net/recon.zip 에서 다운로드 가능합니다.

첫번째 나오는 내용이 pcap 파일을 분석하는 내용인데 pcap 파일 포맷과 타입에 대해서 알고 있어야 풀이가 가능한 문제더군요..
그래서 간단히 공부한 내용 정리해서 올려봅니다.


Wireshark

아마 현재 가장 많이 사용하는 패킷 캡쳐툴은 Wireshark가 아닌가 생각됩니다.
물론 아직도 Ethereal을 고집하시는 분들도 계시지만 Wireshark랑 기능이나 GUI나 다 똑같으니...

공부하던 중 Wireshark 설치시 같이 설치되는 CLI 명령 중 잘 사용하면 좋을 것 같은 명령이 있었습니다.
(저만 모르고 있었던건 아니겠죠...-_-;;)


capinfos.exe

pcap 파일의 정보를 보여줍니다.

PS C:\Program Files\Wireshark> .\capinfos.exe E:\wargame\POC_RE_Contest\Network\analysis_1.cap
File name: E:\wargame\POC_RE_Contest\Network\analysis_1.cap
File type: Wireshark/tcpdump/... - libpcap
File encapsulation: SLIP
Number of packets: 914
File size: 269172 bytes
Data size: 255896 bytes
Capture duration: 133057646.198371 seconds
Start time: Fri Apr 16 17:03:30 2004
End time: Fri Jul 04 17:30:56 2008
Data rate: 0.00 bytes/s
Data rate: 0.02 bits/s
Average packet size: 279.97 bytes

파일 타입은 libpcap이고 파일은 SLIP형태로 캡슐화되어 있다는 것을 알 수 있습니다.



editcap.exe

pcap 파일 포캣을 수정하거나 변경합니다.

PS C:\Program Files\Wireshark> .\editcap.exe E:\wargame\POC_RE_Contest\Network\analysis_1.cap -F libpcap -T etherE:\wargame\POC_RE_Contest\Network\analysis_1_ether.cap

파일 타입을 libpcap으로 변경하고 캡슐화 방식을 ethernet으로 변경하라는 명령입니다.



-T 옵션을 쓰고 캡슐화 타입을 쓰지 않으시면 전체 캡슐화 타입을 확인하실 수 있고 -F 옵션을 쓰고 캡쳐 타입을 쓰지 않으시면 전체 캡쳐 타입을 확인하실 수 있습니다.

ethernet 캡슐화 타입은 우리가 일반적으로 알고 있는 ethernet상에서의 패킷을 의미하고 SLIP는 Serial Line Internet Protocol로 일반 가정PC에 모뎀을 달아서 통신하게 되는데 이 때 전화국 서버와 PC의 시리얼 라인상으로 TCP나 IP 트래픽을 전송하는데 있어서 필요한 프로토콜입니다.

어차피 pcap은 네트워크 통신에 사용된 패킷을 캡쳐한 것인데 어느 구간에서 캡쳐하느냐에 따라서 캡슐화 타입이 다를 것입니다.

문제에서 제시했던 pcap 파일을 까보면 다음과 같이 프로토콜이 UNKNOWN이라고 나오는걸 확인하실 수 있습니다.




이것은 파일 자체에 캡슐화 타입과 실제 캡쳐된 파일의 캡슐화 타입이 다르기 때문인데요 캡슐화 타입을 ethernet으로 바꾸면 정상적인 패킷을 볼 수 있습니다.




capinfos.exe 파일로 pcap 파일의 형태를 파악하고 editcap.exe로 타입을 변경하니 정상적인 패킷을 볼 수 있었습니다.
앞으로 이상한 pcap 파일을 보면 두개의 명령을 통해서 먼저 확인하는 습관을 들여야 겠군요...^^


PCAP file format

위 내용을 보다보니 pcap 파일의 포맷이 궁금해서 찾아봤습니다. 생각보다 단순했었습니다.

Global Header

Packet Header

Packet Data

Packet Header

Packet Data

Packet Header

Packet Data

...






파란색이 Global Header이고 붉은색으로 된 부분이 Packet Header와 Packet Data입니다.
Wireshark에서 볼 때 한줄 한줄의 내용이 붉은색으로 된 Packet Header와 Data가 되는거죠.

좀 자세한 내용은 아래 링크를 참조하시면 되겠습니다.
아래 링크에 나오는 구조체는 wireshark 소스코드에서 wiretap/libpcap.h 파일에서 확인하실 수 있습니다.
소스코드에서 약간 다른부분이라면 magic number를 따로 선언해서 사용하고 있다는 점입니다.(그냥 참고만 하시면 되겠습니다)

http://wiki.wireshark.org/Development/LibpcapFileFormat

http://mindori.egloos.com/2390488





이로써 아주 간단한 pcap file format에 대해서 알아보았습니다.

패킷 분석을 자주하시는 분들께 도움이 되었으면 합니다.






Posted by demantos