2009년 12월 31일 목요일

패킷감청 가능성, GSM 암호코드 해킹되다.

유럽,미국등지에서 사용하고 있는 GSM(Global System for Mobile Communication) 통신 방식이 해킹되었다는 기사를 접했다. GSM 에서는 개발된지 20년이 넘은 오래된 암호화 방식을 통해 음성과 데이터를 암호화하고 있었는데, 독일의 해킹그룹인 CCC(Chaos Computer Club) 에서 해킹에 성공했다고 밝힌것이다.

GSM 에서 사용하는 암호 알고리즘은 A5/1 과 A5/2 이다. 이 알고리즘은 이전에도 취약한 부분에 대해서 알려져 있었다. 이번 발표와 관련해 필자도 처음 이러한 알고리즘에 대해서 알았는데, A5/1 은 1987년에 개발되었다고 한다. 이 알고리즘에 대해 궁금한 분들은 다음 위키피디아 정보를 참고해 보기 바란다.
http://en.wikipedia.org/wiki/A5/1

이번 알고리즘을 해독하기 위해 대략 2테라 바이트의 테이블을 만들어 사용했다고 한다. 다음 사이트에서
A5/1 크랙킹 프로젝트가 진행되고 있는데, 테이블 생성과 관련한 정보를 얻을 수 있다.

$ a51table --advance XXX --consume file:prefix=data:append --network nickname=<your_name>:password=<your_passwd>:host=reflextor.com:port=80 --operations 512 generate

참고로 Airprobe 라는 프로젝트는 GSM 스니퍼 프로젝트로, 이 프로젝트의 목표는 GSM 모바일 환경에 대한
분석 도구를 제공하는 것이다.

이번 발표로 GSM 암호해독이 우리가 말하는 실시간 감청 처럼 바로 이어지기는 힘들다. 다만, 암호 해독이
가능하다고 발표된 만큼 분명 위험성은 증가했다. 보안성이 더욱 강화된 A5/3 이 향후 대체된다면
A5/1,2 의 알고리즘 취약점은 보강될 것이다.

앞으로 GSM 의 행보를 지켜보도록 하자! 참고로 GSM 협회에서는 이번 시도가 이동통신의 보안 위험을
과장한 것이라 비판했으며, 이론적으로는 해킹이 가능할지 몰라도 실질적으로는 불가능하다고 말하고 있다.

2009년 12월 30일 수요일

TCP 통신과정을 한눈에 쉽게 살펴보기

패킷 분석기에서는 패킷 단위로 정보를 보여주다 보니,해당 정보에 나타나는 정보만을 가지고 빠르게 판단하기에는 한계가 있다. 예를 들어, A 와 B 사이의 통신과정을 ASCII 문자열로 한눈에 쉽게 볼 수 있으면 어떨까? 초기 분석 접근때 빠르게 분석이 가능할 것이다. 와이어샤크에서 제공하는 기능 중 하나인 Follow TCP Stream 기능을 이용하면 A와 B 사이의 통신과정을 한눈에 빠르게 파악할 수 있다.

다음 그림을 보면 HTTP 통신인걸 볼 수 있고, wireshark.org 에 GET 요청을 하고 있다. 빨간색 부분이 클라이언트에서 서버로 요청한 부분이고 그 아래 이어지는 파란색 부분이 서버에서 응답한 부분이다. 서버는 아파치 웹 서버를 사용하고 있음을 알수 있고 출력되는 HTML 문을 볼 수 있다.


패킷 캡쳐된 리스트 화면에서 다음과 같이 오른쪽 클릭을 하여 Follow TCP Stream 을 선택하면 된다. Find 기능을 이용해 문자열을 찾거나 내용을 저장 또는 프린트를 할 수도 있다. 기본적으로는 전체 대화 내용이 출력되며 리스트 박스를 클릭하면 A->B or B->A 로 통신 과정을 따로 떼어서 볼 수 있다. 출력형식은 아스키 형태 또는 HEX 값으로도 볼수 있고 C 배열 형태로도 데이터를 만들어 준다. 각 출력 기능은 분석 형태에 따라서 유용하게 사용될 수 있고, 추후 C Array 를 이용한 활용방법도 언급해 보도록 하겠다.


출력되는 데이터의 대화 내용을 보면 ASCII 로 쉽게 알아 볼 수 있는 것도 있지만, 그렇지 않은 이미지 파일등도 있다. 하나의 통신과정에는 HTML, CSS, 스크립트, 이미지 파일등이 모두 포함된 것이어서 웹 페이지 하나가 요청이 큰 경우에는 출력되는 내용이 많다.

2009년 12월 29일 화요일

패킷 분석 기본 정보를 얻고 시작해 보자.

패킷 분석 시작 전, 패킷의 기본정보를 파악하는 것은 중요하다. 패킷 요약 정보를 통해 기본 정보를 얻고 시작해 보는 것은 어떨까 ? 다음 이미지는 패킷이 초당 평균 114 바이트라는 것을 보여주고, 평균 전송된 바이트는 22 바이트라는 것을 나타내주고 있다.  321 초 동안 64 개의 패킷을 캡쳐한 수준이니 상당히 적은 수준이다.
그럼 대략 지금 분석하고자 하는 패킷이 크게 많은 정보를 갖고 있지 않음은 짐작할 수 있다. 또 여기서 활용할 수 있는 정보가 Displayed 라고 표시되어 있는 부분이다.

지금은 따로 정보가 표시되어 있지만, 만약 여러분이 출력 필터를 사용한 경우에는 아래 Displayed 에 출력필터로 적용한 정보만 따로 나타난다. 이 정보는 유용하게 사용할 수 있다. 예를 들어, 특정 사이트를 대상으로 임의의 패킷이 대량으로 발생되었다면 다른 패킷정보는 제외하고 해당 패킷만을 대상으로 필터를 걸어 보면

- 초당 전송된 평균 패킷 개수
- 초당 전송된 평균 패킷 사이즈
- 전체 바이트
- 초당 전송된 평균 바이트
- 초당 전송된 평균 메가비트 (메가 바이트가 아니라 Bit 라는 점을 주의하자!)

위와 같은 정보를 얻을 수 있으니 보고서 작성등에 유용할 것이다. 아, 이 정보는 메뉴에서
Statistics -> Summary 통해 얻을 수 있다.

2009년 12월 27일 일요일

패킷 파일의 크기, 개수등 저장 옵션을 지정해 보자

장시간 패킷 캡쳐를 해야 할 경우나 하드웨어의 스펙이 높지 않은 경우 패킷 캡쳐시 적절한 방법이 필요하다. 패킷 파일 크기가 커지는 경우 파일을 로드하기 까지도 많은 시간이 걸리므로 적절하게 파일 크기를 제한하는 방법도 필요하다. 몇개의 파일로도 나눌 수 있고, 언제 캡쳐를 중지해야 할지도 정할 수 있다.

이 옵션을 적절하게 사용하면 유용할 것이다. 더불어 캡쳐필터 옵션과 함께 사용하면 말이다.

- 각 패킷의 최대 크기를 지정
Limit each packet to (    ) bytes 옵션을 체크하고 바이트 크기를 지정한다.

- 캡쳐파일의 사이즈와 , 개수 등을 지정해 보자
우선 패킷 파일을 저장한 위치와 파일 이름을 정의하고 옵션을 선택한다.
use multiple files 는 파일을 여러개로 나누어 사용할 것을 정의한다.
next file every (   ) megabytes 는 캡쳐시 파일의 크기를 정의한다. (킬로바이트,메가바이트등)
next file every (   ) minutes 는 초,분,시,일로 지정된 시간만큼 캡쳐할 것인지 정의
Ring buffer with (   ) files 는 지정된 크기이상일 경우 와이어샤크는 Ring Buffer 로 모드로 동작하고 파일을여러개로 나누어 저장하게 된다. 위에서 지정한 옵션으로 지정된 값 이상이 넘을경우 다음 파일로 넘어가고 지속적으로 캡쳐를 하게 된다. 다음 그림을 보면 hah_00001 부터해서 파일이름에 시간이 자동적으로 만들어져 과거기록은 삭제되고 만들어지는 것을 볼 수 있다.
stop capture after (   ) files 지정한 파일 개수 후에 캡쳐를 중지한다.


- 캡쳐 중지는 언제?
...after (   ) packets 는 몇 개의 패킷 후에 중지할 것을 정의한다.
...after (   ) megabytes 는 킬로바이트, 메가바이트, 기가바이트로 지정된 사이즈 후에 캡쳐를 중지한다.
...after (   ) minutes 는 초, 분, 시, 일로 중지한다.

2009년 12월 23일 수요일

트래픽 덤프전에 캡쳐필터로 트래픽을 제한하자

패킷 덤프를 시작할때, 트래픽이 너무나 많은 구간에서는 보기가 어려울 정도로 빠르게 올라가는 스크롤 때문에 당황한 적이 있을 것이다. 트래픽이 크지 않은 경우에는 Full Dump 를 수행해서 살펴볼 수도 있지만, 고속의 네트웍 구간에서는 흐르는 트래픽이 엄청나다. 또한 이 파일이 기록되는 파일은 빠르게 크기가 늘어난다.

 

분석할 데이터가 특정한 호스트나, 포트, 프로토콜 등으로 한정되는 경우라면 패킷 덤프 시작전부터 캡쳐 옵션을 반영하여 사용하는 것이 좋다. 와이어샤크의 경우 패킷 덤프를 시작하는 경우 아래와 같은 화면을 볼 수 있으며, 이때 Capture Filter 라는 부분에 필터를 넣어주면 된다.

 


필터는 tcpdump 에서 사용하는 것과 같은 형태이므로 tcpdump 에 익숙한 사용자라면 쉽게 사용할 수 있으며, 필터를 정확히 모르더라도 Capture Filter 를 누르면 상단 우측의 그림과 같이 적용할 필터 내용을 찾아 반영할 수 있다.  몇 가지 예를 들어 보면 아래와 같다 :

 

IP 가 192.168.0.200 에 대해서만 캡쳐하는 경우

host 192.168.0.200


네트워크 대역 주소를 C 클래스로 한정하는 경우

net 192.168.0.0/24 또는 net 192.168.0.0 mask 255.255.255.0


목적지 IP 주소가 1.2.3.4 인 경우

dst ip 1.2.3.4

 

TCP 프로토콜 또는 UDP 프로토콜만 캡쳐하는 경우

tcp and udp

 

목적지 포트 번호가 80 인 경우

dst port 80

 

TCP 포트 번호가 특정 구간인 경우

tcp portrange 6667-6669


목적지 IP 대역이 192.168.0.0/24 이며 목적지 포트가 TCP/80 이 아닌 경우

dst net 192.168.0.0/24 and tcp port not 80


SYN 패킷만 캡쳐하는 경우

(tcp[13] & 0x02) != 0

 

캡쳐 필터가 올바르지 않는 경우에는 에러메시지가 나타나고 캡쳐가 시작되지 않는다. 캡쳐 필터문법을 주의깊게 살펴보면 틀린 곳이 보일 것이다. 참고로, 와이어샤크의 메인화면에서 사용할 수 있는 출력필터는 캡쳐 필터의 문법하고는 다르니 착각하지 않도록 주의한다.

 

다음은 Tcpdump 필터를 여러개 모아두어 정리해 놓았다.

http://acs.lbl.gov/~jason/tcpdump.filters

2009년 12월 21일 월요일

패킷 분석 시작, 다섯가지 이것만은 알고 시작하자

바이너리 데이터로 가득한 패킷파일 복잡하고 어렵게만 느껴지는가? 이것만은 알고 시작하면 처음 접근은 어렵지 않을 것이다.

첫째, 패킷 분석에 앞서 필요한 것은 도구의 선택이다.

도구의 도움 없이 분석하는 것은 현실적으로 어렵다. 선택한 도구는 내 자신의 것으로 만들어라.
사용하는 도구의 기능을 알아야 빠르고 효율적인 분석이 가능해 진다. 만약 와이어샤크를 선택했다면
이 도구가 지원하는 많은 기능을 가급적 내 것으로 익히고 직접 수행해 보아야 한다.
the-swiss-army-knife.jpg

이미지출처 : palscience.com


둘째, 분석의 목적은 무엇인지 판단해라

패킷 분석을 통해 어떤 정보를 얻으려는 것인지 명확해야 한다.
목적에 따라 분석의 방법이 달라진다. 몇 십메가에 이르는 데이터라면 분석하는데 많은 시간이 소요된다. 왜(Why) 이것을 분석해야 하고 무엇을 얻어야 하는 것인지 명확하게 해야 한다.

셋째, 분석의 범위를 파악해라

모든 패킷을 세부적으로 분석하는 것은 많은 시간을 필요로 한다. 분석의 범위를 한정하여 필요한 내용만을 걸러내자. 예를 들어, 개발중인 특정 포트의 애플리케이션에 문제가 있다면 해당 포트번호로 필터를 사용한다. 또 일반적으로 발생하는 브로드캐스팅 및 기타 프로토콜을 제외하고 시작하는 것 만으로도 첫 접근이 보다 쉬워질 것이다.

넷째, 끈기와 인내가 필요하다

패킷파일의 분석을 시작한다고 바로 분석하고자 하는 문제의 해답을 얻을 수 있는 것은 아니다. 여러분이 100 메가가 되는 패킷파일의 분석의뢰를 받았다고 가정해 보자. 100 메가! 생각만 해도 답답하다. 여기서 찾고자 하는 데이터를 찾는 것은 쉽지 않다. 그만큼 끈기와 인내가 필요로 한다.

다섯째, 패킷파일은 모든 문제의 해결책이 되지는 못한다.

패킷파일을 들여다 보면 문제의 원인이 다 해결될 것이라고 믿는 사람도 있다. 그러나 이것은 어디까지나 하나의단서가 되거나 여러가지 가능성에 대해 단지 약간의 실마리만을 제공할지도 모른다. 문제의 해결은 종합적인 관점에서 접근해라.

일단 필자가 생각하는 관점에서 이 정도만 갖고 시작하면 패킷 분석 막연하지만은 않을것이다.

@Rigel

와이어샤크(WireShark)의 주요 특징

패킷 분석기 와이어샤크의 기능은 무엇일까? 앞으로 와이크샤크의 사용방법과 분석에 대해서
언급하겠지만 처음 접하는 사람들에겐 간단히 주요 특징을 언급하자면 다음과 같다.

- 천개이상의 수 많은 프로토콜을 지원하고 있다.
- 실시간 패킷 캡쳐 또는 오프라인 분석을 지원
- 멀티 플랫폼 환경을 지원하여, 윈도우,리눅스, 맥OSX 와 다양한 OS 에서 동작
- 강력한 필터 엔진을 내장하고 있어 분석을 훨씬 수월하게 지원해 준다.
1.2.5 버전에서는 약 85,000 개 이상의 출력필터를 지원한다.
http://www.wireshark.org/docs/man-pages/wireshark-filter.html
예를 들어 TCP 프로토콜에서만 100 여개의 필터를 지원
- libpcap 형태의 파일 포맷 형태 뿐만 아니라 여러 분석기의 포맷을 지원한다.
- IPSec, SSL/TLS, WEP 등의 Decryption 기능을 지원
- 컬러 기능을 통해 패킷 별로 색상을 적용하여 분석을 수월하게 해준다.
- XML, CSV, 텍스트파일등의 포맷으로 데이터를 저장
- 입/출력 그래프 및 다양한 통계 정보를 제공
- 방화벽 차단 룰 작성을 지원

특히나 필터 기능은 상당히 뛰어나 분석하는데 용이하다. 주요 기능은 위와 같지만,
글로써 설명하는 것 보단 지금 당장 설치해 보고 사용해 보는 것은 어떨까?