2010년 3월 31일 수요일

트래픽 패킷 생성도구 Mausezahn 을 소개합니다.

장비의 성능을 테스트 해 보거나, 방화벽이 제대로 패킷을 차단하는지, 프로토콜이 올바른지 등을
확인해 보고자 할때 의도적으로 패킷을 생성할 필요가 있다. 또는 조작된 패킷으로.
다양한 도구들이 많이 나와있는데, 앞으로 차차 소개하기로 하고 오늘은 리눅스기반의 패킷생성도구인
Mausezahn 을 소개한다.

패킷을 의도적으로 생성하여 이용할 수 있는 곳은 서두에서 잠깐 언급한 것과 같이
사용처가 아주 다양하다. 악의적으로 조작되어 공격에 이용될 수도 있는 문제점도 있지만,
패킷인사이드를 방문하시는 분들은 업무의 활용, 스터디 목적이므로.

mztitle.png

이미지출처 : www.perihel.at





공식 사이트는 다음과 같으며, 명령어는 mz 로 불린다.


자, 우선 소스파일을 다운받고 컴파일을 한다. 단, 컴파일 전에 다음의 요구조건이 충족되는지 확인하자.

[필요한것]
* cmake
* libpcap0.8-dev  (version >= 0.8 will definitely work)
* libnet1-dev     (version >= 1.1 will definitely work)
* libcli-dev      (version >= 1.9.1 will work)

데비안 사용자라면 apt-get install cmake 와 같이 간단히 패키지를 설치할 수 있다. 각 운영체제에 맞는
방법으로 설치하자.

다운로드 받은 소스파일을 적절한 위치에 풀고 진행한다. (참고로, 소스파일을 풀면 해당 위치가
루트 이므로 디렉토리를 하나 만들고 그 안에 풀어주는 것이 좋을것이다)

1. cmake 를 실행해 주자.

$ cmake .
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kwanjin/workout/mz

2. 컴파일을 하기 위해 make 를 실행한다.

[CODE bash]$ make
.
.
[ 98%] Building C object src/CMakeFiles/mz.dir/cli_igmp.o
[100%] Building C object src/CMakeFiles/mz.dir/cli_lldp.o
Linking C executable mz
[100%] Built target mz[/CODE]

3. 컴파일한 mz 를 설치하려면 'make install' 을 한다.

사용방법은 mz -h 를 해보면 볼 수 있고, 많은 내용이 있으므로 직접 한번 살펴보기를 바란다.
간단한 예를 들어보면 아래와 같다.

# ./mz eth4 -c 1000 "ff:ff:ff:ff:ff:ff ff:ff:ff:ff:ff:ff cc:dd 00:00:00:ca:fe:ba:be"

mz 다음에는 이더넷 인퍼페이스를 지정하고 -c 옵션은 카운트를 뜻한다. 그리고 임의의 연속적인 바이트를
지정하였다. tcpdump 로 해당 인터페이스를 덤프하면 다음과 같은 패킷을 볼 수 있다.

23:47:12.169827 Broadcast > Broadcast, ethertype Unknown (0xccdd), length 21:
        0x0000:  0000 00ca feba be                        .......
23:47:12.169831 Broadcast > Broadcast, ethertype Unknown (0xccdd), length 21:
        0x0000:  0000 00ca feba be                        .......
23:47:12.169834 Broadcast > Broadcast, ethertype Unknown (0xccdd), length 21:
        0x0000:  0000 00ca feba be                        .......
23:47:12.169838 Broadcast > Broadcast, ethertype Unknown (0xccdd), length 21:
        0x0000:  0000 00ca feba be                        .......
23:47:12.169841 Broadcast > Broadcast, ethertype Unknown (0xccdd), length 21:
        0x0000:  0000 00ca feba be                        .......

TCP Flooding 형태의 트래픽도 전송할 수 있다. -c 다음에 0 이 오면 루프를 도는 것이다. 즉, 사용자가
멈출때까지 계속 동작하므로 주의한다. -A 는 출발지 IP 를 랜덤으로 설정하고 -t 는 프로토콜 타입으로
tcp 를 선택하고 -B 는 목적지 IP 를 정의한 것으로 예제에서는 C 클래스 대역으로 설정하였다. 그 이후
flags 에는 SYN 타입을 정의했고 목적지 포트로 5555 번을 설정했다.

# ./mz eth4 -c 0 -A rand  -t tcp -B 10.29.2.0/24  "flags=syn, dp=5555"
Mausezahn will send frames infinitly...

다음은 프로토콜 타입만 ARP 로 보낸 것이다.
# ./mz eth4 -c 0 -A rand  -t arp -B 10.29.2.0/24

한쪽에서는 전송하고 다른 한쪽에서 트래픽을 덤프하면 생성되는 것을 볼 수 있을 것이다.

한가지 이 프로그램이 독특한 부분이 있는데, 위에서 라이브러리 사용된 것을 보고 감을 잡으신 분들도
있을 것이다. libcli 는 시스코스타일의 대화형 화면을 제공해 준다. 시스코 라우터나 스위치를
접해 보신분들은 아마 익숙할 것이다.

-x 후에 사용할 포트를 지정하고 실행하면 지정된 포트로 리스닝을 하며 동작한다.

# ./mz eth4 -x 1234

자 그리고 해당 포트 번호로 접속을 해본다. 지정된 인터페이스에 할당된 IP 로 접속을 시도해 보자.

# telnet 192.168.0.6 1234
Trying 192.168.0.6...
Connected to 192.168.0.6.
Escape character is '^]'.

------------------------------------------
Mausezahn, version 0.39
Copyright (C) 2007-2009 by Herbert Haas.
------------------------------------------

Mausezahn comes with ABSOLUTELY NO WARRANTY; for details
type 'warranty'.  This is free software, and you are welcome
to redistribute it under certain conditions; see COPYING
(included in the Mausezahn source package) for details.

For Mausezahn NEWS visit http://www.perihel.at/sec/mz/

위와 같은 화면이 뜨고 사용자 이름과 패스워드로 mz 를 넣어본다.

Username: mz
Password:

그리고 enable 을 넣고 'mops' 라는 패스워드를 입력하면 준비된 것이다.

mz-0.39> enable
Password:
mz-0.39#

시스코 스타일의 형태로 나오므로 어렵지 않게 사용이 가능하다. 도움이 필요하면 ? 를 눌러보자.
아래 그림은 패킷을 만드는 예로 TCP-Flooding 이라는 것을 만들고 목적지 IP 는 192.168.1.1 로 설정하며
목적지 주소는 랜덤하게 한다. 1000번을 수행하며 타입은 TCP 이다. 플래그는 syn 으로 셋팅하고
end 로 종료하였다.

자 다음 sh packet 으로 보면 앞에서 만들었던 내용이 있다. 실행하길 원하면 start 와 함께 ID 를 지정하면
된다. 패킷의 자세한 내용을 보기 위해 sh packet 2 해서 세부 정보를 보는 화면도 보인다.

다른 패킷 생성기와는 달리 이런 대화형 형태를 제공해 주어, 지속적으로 저장해 놓고 임의의 값을 변경하여
수행하고자 하는 경우에는 유용하게 사용할 수 있을 것이다. 예를 들면, 모의해킹등.
물론, 편안한 방법은 각자 다르겠지만, 일단 이러한 것도 있다는 것을 알아두면 좋을 것이다.

Mausezahn은 C 로 제작된 만큼 빠른 속도를 제공하고 자유롭게 사용할 수 있다. 다만, 아직 윈도우 기반은
지원하지 않고 리눅스(기타 유닉스 플랫폼) 에서만 가능하다.

OpenSSL 1.0.0 정식버전 릴리즈

Index of /

이미지출처 : www.openssl.org

웹에서 안전한 통신을 위한 방법으로 많이 사용하고 있는 것이 SSL(Secure Socket Layer) 이다. 국내는 유독 엑티브X 를 이용한 공인인증서 방식을 많이 이용하고 있긴 하지만, 국내 밖으로 눈을 조금만 돌려보면 SSL 을 얼마나 많이 사용하고 있는지 알 수 있다.

무료로 사용가능한 OpenSSL 이 2010년3월29일에 정식버전 1.0.0 이 릴리즈 되었다.  오랫동안 0.9.X 버전에 머물면서 드디어 나온것이다. 1998년 12월23일에 OpenSSL 0.9.1.c 가 나왔으니 10년도 넘게 걸린 것이다.

수많은 오픈소스 지원자들의 도움이 없었다면 힘들었을 것이다. 이게 바로 오픈소스의 힘이며, 앞으로도 계속 유지될 것이다. 자, 딴 얘기는 그만하고 어찌되었든 1.0 정식 버전이 나왔으니 OpenSSL 을 사용하고 있었던 분들은 참고하시길 바랍니다.

나중에 SSL 트래픽을 분석하는 방법에 대해서 언급해 보도록 하겠습니다.
그럼 오늘도 힘차게 출발하세요!
/@Rigel

2010년 3월 29일 월요일

헤더 체크섬 오류 Header checksum: 0x0000 [incorrect 메시지


패킷을 들여다 보면 IP 또는 TCP ,UDP 헤더 체크섬(Header Checksum)이 올바르지 않다고
나오는 경우를 보았을 것이다.  와이어샤크를 통해 보았다면, 헤더 체크섬 부분이
Incorrect 로 되어 있고, 어떤 값이 되어야 할지를 알려준다.

헤더 체크섬은 전송중에 깨질 수도 있기 때문에
기본적으로 패킷의 헤더를 보호하기 위해 만들어진 것이다. IP 헤더의 경우를 보면 2바이트(16비트)로
구성되어 있고, 네트워크를 이동하는 각 홉 에서(예를 들면, 라우터 통과) 체크섬을 검증한다.
체크섬이 올바르지 않으면 네트워크 장비는 해당 패킷을 버리게 될 것이다. 네트워크를 거치는 과정에서
체크섬은 재 계산되고 업데이트를 하게된다.

최근의 와이어샤크에서는 헤더 체크섬 값 계산은 기본적으로 disabled 되어 있다. 와이어샤크의 이전인
이더리얼만 해도 기본적으로 체크섬 값을 계산하였지만, 아무래도 이 계산 자체도
퍼포먼스에 영향을 주기 때문에 disabled 되어 있다. 와이어샤크로 열었을때
[validation disabled] 라고 이 기능을 사용하지 않고 있으므로 우측을 클릭해
Protocol References 에서 아래 내용을 체크해 주면 된다. (참고로, IP 헤더에
대해서는 기본적으로 enabled 되어 있다)

- Validate the TCP checksum if possible
- Validate the UDP checksum if possible

헤더의 체크섬 값이 0x0000 으로 되어 있는 경우도 나타나는 경우가 있다.

Header checksum: 0x0000 [incorrect, should be 0x????]

[그림] IP 헤더 Checksum 오류

이럴 경우 네트워크 장비나 기타 원인에 의해 헤더 체크섬 값이 계산되지 않았거나
또는 의도적으로 빠지는 경우도 있다. UDP 프로토콜을 정의한 RFC 768 를 보면
체크섬 값이 제로로 채워져 있는 경우는 보내는 측 쪽에서 계산되지 않는 경우라 정의하고 있다.

이외 나의 경험상 악성코드와 같은 의도적으로 만들어지는 패킷에서도 이런 경우를 종종
볼 수 있었다. 특히 2003~2004년 경에 발생한 악성코드에서 많이 체크섬 값을 계산하지 않는
경우가 많았는데 트래픽을 더욱 많이 생성하기 위해서 약간의 연산이 들어가는 이런 계산 부분도
생략한 것으로 보인다. 물론 제작자의 실수로 인한 부분도 있었을 것이다.

대부분은 정상적으로 체크섬을 계산하기 때문에 계산되지 않은 헤더가 있다면
패킷을 전송한 지점에서의 문제 (애플리케이션 제작 오류, 네트워크 카드 오류, 의도적으로 생성된
악의적 트래픽 등) 그리고, 네트워크 전송장비등이 이유가 있을 것이다.

아마 많은 경우가 전송된 지점의 문제가 아닐까 한다. 전체 덤프된 패킷에서
이렇게 발생되는 비중을 살펴보고 한 단계식 찾아들어가면 원인은 찾을 수 있을 것이다.

2010년 3월 28일 일요일

ARP 패킷 스톰(Packet Storm) 탐지하기

와이어샤크에서 ARP Request 탐지 기능을 소개한다. 패킷 분석시 ARP 트래픽이 아래 그림과 같이
정해진 수치 이상으로 증가할 경우, 경고해 주는 기능이다. 설정은 Edit->Preferences 에서
프로토콜에 ARP/RARP 를 선택하면 아래 같은 설정을 볼 수 있다.


Detect ARP request storms 를 선택하고 적용하면 탐지해 준다. 예를 들어, 위 예에서는
10,000밀리세컨드 기간동안 30 개의 ARP request 가 탐지되면 알려주는 것이다.  기능 자체적으로는
간단한 기술이다. 자, 아래 화면을 보면 Packet storm detected 라고 탐지된 것을 볼 수 있다.

필터를 적용할 수도 있는데, "arp.packet-storm-detected" 이다.

ARP 트래픽이 많이 발생하는 사이트에서는 사용해 볼 수 있는 기능이다. 유용한 기능인지는
여러분들이 판단해야 할 것이다 :-)

2010년 3월 25일 목요일

구글 지메일에 의심스러운 사용자 행동 탐지 경고 기능

구글에서 지메일에 보안 기능을 추가하였다. 일전에 사용자 계정의 접속 정보를 제공한 것에
추가로, 의심스러운 행동을 자동으로 판단하여 경고하여 주는 기능이다. 예를들어,
내가 계속 한국에서 접속하면서 지메일을 사용하였는데,
로그아웃을 한지 2시간 이 지나서 다른 나라 국가에서 접속이 이루어 졌다면
이것은 의심스러운 행동으로 구분할 수 있다. 좀더 멋지게 말하자면 사용자의 행동 형태를
보고 판단하는 것이다.

아래 이미지를 보면 폴란드에서 접속했다고 빨간색으로 경고해 주고 있다.

[출처] 구글 지메일 블로그

상세정보 보기를 클릭하면 접속 정보에 대해서 좀더 세부적으로 보여준다고 한다. 위와 같은
경고 메시지를 받는 다면, 사용자 계정 정보가 노출되었을지도 모르므로 패스워드 변경과 같은 작업이
필요할 것이다.

기술적인 관점에서만 보면 구현 하는 것은 크게 어렵지는 않지만, 구글이 구현해서 집어넣는 것들을 보면
구글답다는 생각이 든다. 국내 일부 은행권에서는 이와 유사하게 해외 IP에서는 접속을 하지 못하게
차단해 주는 서비스도 있다. 이런 형태의 기술들만 적용해도 사용자들이 더욱 안전하게 서비스를
이용할 수 있지 않을까.

@Rigel

와이어샤크 설정파일을 이용해 내맘대로 변경하기

와이어샤크를 좀더 세부적으로 설정해 보고자 한다면,
Edit->Preferences 뿐만 아니라 설정파일을 직접 다뤄보는 것도 좋다. 텍스트 환경에 익숙해져 있다면
더욱 친숙할 수도 있을 것이고, 저장된 설정파일을 보관하여 다른 곳에 복사하여
사용하는 것도 가능하다. 설정파일은 텍스트 파일로 저장되어 있는데, 와이어샤크 메뉴인

Help->About Wireshark 를 클릭하고 Folders 탭을 선택해 보자.


설정 경로들이 나타난다. Personal configuration 경로를 가보면 , preferences 파일이 있다. 바로 이 파일안에
기본 설정 정보들이 기록된다. 디버그 정보가 좀 필요하다면 gui.console_open 을 이용해 보거나

# Open a console window (WIN32 only)?
# One of: NEVER, AUTOMATIC, ALWAYS
gui.console_open: NEVER  -> ALWAYS 로 변경하면 콘솔 화면이 나타난다.

또는, 와이어샤크를 시작한 후, 환영 메시지를 아래와 같이 변경할 수도 있다.

# Custom start page title.
gui.start_title: PacketInside.com !!!

변경 후 재 시작해 보면 와이어샤크의 시작페이지에 다음과 같은 환영 메시지를 볼 수 있다.
물론, GUI 에서 설정할 수 있는 부분도 있지만 그렇지 않은 것도 있다. 만약 여러분들이
와이어샤크를 전문적으로 이용해 보고 싶다면 알아두는 것도 나쁘지는 않을 것이다. :-)


2010년 3월 23일 화요일

와이어샤크에서 위치정보 이용하기 - 접속국가를 쉽게 알 수 있다면...

패킷 분석은 IP 와 IP 간의 통신으로 가득차 있다. 근데 해당 IP 만 보고서 이게 도대체 어디의 IP 인지
알기가 힘들다. 일일이 후이즈(Whois)를 하자니 그것도 귀챦은 일이다.
이럴때 유용하게 이용해 볼 수 있는 것이 IP 정보를 DB 화 해 놓은 데이터를 이용하는 것이다.

GeoIP 라고 무료로 사용가능한 데이터를 제공해 주는 곳이 있다. 상용버전도 있지만,
GeoLite 라고 무료로 사용할 수 있다. 주소는 다음과 같다 :

http://geolite.maxmind.com/download/geoip/database/

아래 파일들을 다운받고 적절한 위치에 넣어두자.

GeoIP.dat.gz
GeoLiteCity.dat.gz
GeoIPASNum.dat.gz

그리고 와이어샤크의 메뉴 Edit->Preferences 을 가 보면 Name Resolution 이 있다. 거기에서 GeoIP database directories 를 선택하면 다음과 같은 화면을 보게 된다. New 를 눌러 데이터베이스가 있는 위치를 지정해 주고 저장해 보자


저장후에는 와이어샤크를 재 시작해주어야 한다. 이후, 패킷 덤프를 시작하고
Statistics->End Points 를 한번 실행해 보면 국가 정보, AS Number, 도시 정보를 볼 수 있다.



또한, 패킷 세부 정보를 보면 아래와 같이 나타나기도 한다.

하지만, 기본적으로는 세부 정보 화면에는 나타나지 않는다. Edit->Preferences 에 가서 Protocols 에서
IP 를 선택하면 Enable GeoIP lookups 이라는 부분을 체크해 주어야 한다.  아무래도 상세정보에도
표시를 하려면 성능에도 영향을 주게 될 것이다. 그러므로 필요에 따라 적절하게 사용하여야 할 것이다.

그래도 GeoIP 를 이용하는 것은 상당한 매력이 있다. 일일이 IP 를 조회해 보지 않고서도 해당 IP 의
국가와 지역, 서비스 프로바이더를 대략 알아낼 수 있기 때문이다. 이렇게만 볼 수 있다면 약간 서운할 것이다.
이 정보를 이용해 필터로 사용할 수는 없는 것일까? 물론 가능하다.

아래는 한국 국가에 대해서만 필터를 적용하는 예이다.

ip.geoip.country == "Korea, Republic of"

또 지역 중에 울산만 해당하는 것을 적용해 본다면

ip.geoip.city == "Ulsan, 21"
위와 같이 사용할 수 있다. 이외에도 사용가능한 문법은 더 많이 있다. 출력필터 부분에서 ip.geoip 라고
입력해 보면 사용가능한 문법을 볼 수 있을 것이다.

2010년 3월 22일 월요일

출력필터를 활용하여 패킷분석을 쉽게 해보자

초반에 캡쳐필터에 대해 언급한 적이 있다. 캡쳐 필터는 트래픽 덤프를
시작하는 과정에서 적용하는 것이고, 출력필터는 캡쳐된 데이터에서 보고싶은
내용을 필터를 걸어 화면에 출력시키는 것이다.

현재 와이어샤크는 약 9만6천개의 출력필터를 지원하며 지원하는 필터 정보는
다음 주소를 참고한다.

http://www.wireshark.org/docs/dfref/

출력필터는 와이어샤크 메인화면에서 아래와 같은 화면을 통해 출력필터를
적용할 수 있다.



필터가 워낙 많다보니 일일이 다 외울수 없어 몇 가지 편의사항을 제공하고 있다.

- 필터에 표시되는 색상을 통해 문법이 올바른지 확인할 수 있다.
- 문법을 정확히 모르는 경우 Expression 을 선택해 필요한 출력 필터를 만들 수 있음
- 출력된 상세정보에서 원하는 내용에 우측클릭하면 Apply 또는 Prepare 필터를
  [그림 1 참고]
  적용할 수 있다. Prepare 필터를 누르게 되면 출력 필터쪽에 선택된 내용이 입력되어
  편하게 사용할 수 있다. 9만 여개의 필터를 다 외울 수도 없고, 필터를 몰라도
  쉽게 사용이 가능하다.
  [그림 2 참고]

필터를 적용해제하는 경우 Clear 를 선택하고 필터를 적용하는 경우는 Apply 를 선택한다.

[출력필터 예제]

특정 IP 주소 매핑 ip.addr == 192.168.1.1
SMTP 와 ICMP 트래픽만 출력tcp.port eq 25 or icmp
윈도우 관련한 트래픽으로 한정하기smb || nbns || dcerpc || nbss
특정 값을 포함한 UDP 정보 찾기udp contains 85:03:23
HTTP 요청에 포함된 문자열 찾기 http.request.uri matches “type=delete”
이더넷 타입이 Loopback인 트래픽 제외!eth.type == 0x9000
이더넷 벤더 주소로 트래픽 찾기 eth.src[0:3] == 00:00:83
ICMP 타입이 3인 경우 (Destination unreachable)icmp.type == 3
smb.path 에서 \\SERVER\SHARE 찾기  smb.path contains "\\\\SERVER\\SHARE"


마지막으로 다시 언급하자면, 캡쳐필터와 출력필터는 문법이 다르다는 점이다.

[그림 1] 필터 문법 제작 기능

[그림 2] 상세정보에서 필터 만들기

2010년 3월 20일 토요일

와이어샤크 네트워크 분석 서적 소개

시중에 몇가지 패킷 분석 책이 나와있습니다. 하지만 깊게 다루고 있는 것은
보지를 못한것 같네요. 이번에 와이어샤크를 기반으로 네트워크 분석을 다루는 책이 나왓습니다.
3월15일에 Publisher 되었지만 아직은 사전 주문을 받고 있고 3월29일 이후로 배달이 시작된다고 합니다.

Laura Chappell 이 집필하였고 이 분은 와이어샤크 대학이라는 곳의 주인장이기도 하며
패킷 분석쪽으로 많은 강연도 하고 유명하신 분입니다. 국내에서는 언제 받아볼 수 있을지 모르지만
분량이 800 페이지나 되고, 가격은 거의 $100 불에 달합니다.

3월 29일 전에 사전 주문을 하면 35% 할인해 줍니다. 관심있는 분은 다음 URL 을 방문해 보세요.


내용이 괜챦을것 같아 구매해 보고 싶은데 가격이 만만치 않네요.
입수하게 되면 다시 한번 공유를 하겠습니다. 책이 무거워서 배송료만 해도. -_-
사전 주문페이지에서 대략 해봐도 배송료만 10만원 돈이 넘네요

네트워크 분석 자료나 서적 괜챦은게 있으면 추천 부탁드려요.

2010년 3월 19일 금요일

IP정보 추적, 연결관계를 그래프로 비주얼 하게 보자고

패킷 분석을 하다보면, IP 에 대해서 추적을 해 볼 필요가 있다. 그럼 보통 하는 작업이, WHOIS 를 통해
해당 IP 에 대해 기본정보를 알아본다. WHOIS 를 통해 이 IP 블럭이 누구의 소유인지 알 수 있고,
어느 국가에 할당된 것인지 알 수 있으므로 대략적으로 추정이 가능해 진다.

WHOIS 외에 해당 IP 의 연관관계를 추적하여 볼 수 있는 것을 소개해 보고자 한다.

http://www.robtex.com/ip/ 에 가서 IP 를 입력해 보면
- DNS 기반으로 연결된 곳
- 그래프로 비주얼 하게 연결관계 표시
- 후이즈(whois) 정보
등을 보여준다. (정확히 말하면 Reverse DNS 정보를 기준으로 찾아본다)

아래 예는, packetinside.com 의 IP 주소인데, 또 다른 관련한 도메인 주소들이 나온다.
즉, 텍스트큐브에서 운영중인 곳이다. 211.245.16.0/20 블럭은 AS9318 로 라우팅이
흘러가는데, 하나로 텔레콤이 소유중인 블럭이다. 추정해 보면 텍스크큐브에서 운영하는
장비들이 놓여있는 곳은 ? ^.^

IP 의 후이즈 정보 뿐만 아니라, DNS 와 연관된 추가 정보까지 보여주니
분석시에는 더욱 유용하다. 이렇게 IP 주소 하나만으로도 얻을 수 있는 정보는 많다.
나오는 정보에 따라 그 관계를 계속 찾고 찾아 들어가면 여러분이 찾고자 하는 정보를 얻을 수 있을지 모른다.

분석의 작업은 때로는 끝이없는 미로를 찾아들어가는 것과도 같다 :-)

아래의 이미지는 그래프 탭을 선택하여 본 화면으로 비주얼 하게 좀더 쉽게 볼 수 있도록 만들어 준다.

2010년 3월 18일 목요일

불필요한 패킷 제거 시작부터 하자

블로그 초기 개설시, 패킷 분석시 다섯가지 이것만은 알고 시작하자라는 글을 적은적이 있다.
패킷 분석을 처음 접하는 사용자들이, 패킷 파일을 열어 보고는 으레 어려움을 호소한다.
다양한 프로토콜로 많은 내용들이 달려 있으니, 이걸 어떻게 해야 하나 생각이 든다.

패킷 분석의 시작은 일단 불 필요한 패킷 데이터의 제거부터 시작한다. 네트워크 환경에서 발생되는
일반적인 트래픽 정보를 제외하여야 한다는 것이다. 또는 내부에서 사용하는 특정 트래픽이 있다면
그것또한 대상이 될 것이다. 사실 분석의 범위와 대상에 따라 접근 방법이 달라진다.

내가 전혀 모르는 다른 회사 네트워크의 패킷 파일을 받아들인다면 사전 정보가 없기 때문에
일반적으로 발생되는 트래픽 정보를 제외하면서 시작하는 것이 빠를 것이다. 일반적인 트래픽이라
하면 다음과 같은 것들이 해당된다.
- ARP
- Broadcasting
- Multicast
- IPX 및 Netbios
- 스위치간의 통신 프로토콜
- 라우터간의 통신 프로토콜 (HSRP 등)

하지만, 내가 분석하고자 하는 트래픽이 대상이 명확하다면 해당 부분만 필터링 하여
살펴보면 되기 때문에 접근방식은 달라지게 된다. 패킷 분석의 어려움은 내가 그 분석하고자
하는 대상의 네트워크 환경을 정확히 모른다는데에 있다. 그 대상에서 사용하는 특정
프로토콜이 있는지, 어떤 Application 이 동작하여 특정 포트를 사용한다든지, 네트워크 장비 및
구성은 어떤지.. 이 모든 사전 정보가 있어야 보다 정확한 분석을 수행할 수 있다.

어찌되었든, 패킷 분석 시작시 겁 먹지 말고, 필터를 통해 불필요한 패킷 데이터를 제거해 가면서
시작해 보자. 보다 접근이 쉬워질 것이다.
/Rigel

2010년 3월 17일 수요일

패킷 대화내용을 정리해서 보자고

와이어샤크에서 패킷의 통신 내용을 이더넷, IP, TCP, UDP 등으로 구분하여 쉽게 살펴볼 수 있다.
그렇다면 어떻게 쉽게 살펴본다는 것인가? 대화형 형태로 내용을 보여준다는 것이다.
한 IP 에서 다른 IP 또는 한 맥주소에서 다른 맥 주소와 같이 A 와 B 지점을 잡고 그 사이의 통신 내용,
즉, 패킷 전송 건수, 전송데이타 양, 통신 시간등을 보여준다.

와이어샤크의 메뉴에서 Statistics -> Conversations 을 클릭하면 아래와 같은 화면을 볼 수 있다.
이더넷탭은 맥 주소를 기반으로 보여줄 거이고, 아래 예제는 IP 주소를 기준으로 보여주고 있다.
각 탭을 클릭하면 내림/올림차순으로 정렬을 할 수 있다. Bytes 기준으로 보니 192.168.0.221 과
211.115.99.247 사이에 343 건의 패킷을 주고 받았다.  

예를 들어 분석하고자 데이터가 많은 경우에는 이렇게 Conversations 을 이용하여 데이터 흐름을 살펴보고
어떤 지점에서 패킷 데이터가 가장 많았었는지 쉽게알아 볼 수 있을 것이다. 만약 전체 네트워크에서
일부 PC 가 악성코드에 감염되어 패킷을 계속 전송한다고 가정하면, 패킷 덤프를 떠서 정렬해서 보면
대략 어떤 PC 가 데이터를 많이 보내고 하였는지 추정이 될 것이다. 물론 상황에 따라 유용한지 여부는
달라지겠지만 말이다.

TCP 탭에서는 포트 번호로도 볼 수 있으니 분석에 도움이 될 것이다. 참고로, Limit to display filter 가
보일 것이다. 이것은 화면 출력 필터를 적용한 상태에서 체크하면 필터가 적용된 상태에서 대화내용이
나오게 되므로, 데이터 내용이 많은 경우에는 적절한 필터를 통해 분석하면 더욱 효과적일 것이다.

2010년 3월 11일 목요일

패킷인사이드 스마트폰 안으로 들어가다

스마트폰인 안드로이드 기반의 폰을 장만했습니다 안드로이드를 통해 패킷 인사이드 블로그를
접속해 보니 아래와 같이 깔끔하게 접속이 잘되네요. 앞으로 차차 모바일 관련한 글도 다뤄보고자 합니다.
모바일과 패킷 , 이 두가지의 주제에서 먼가 재미있는 것이 나오지 않을까요.

손안의 작은 컴퓨터. 이동중에도 모든 네트워크 정보가 감시된다면....
앞으로 기술의 발전으로 인터넷의 접근성은 더욱 좋아지겠지만
이로인해 우리의 정보가 얼마나 노출될지는 알 수 없는 일이죠.

2010년 3월 10일 수요일

패킷 분석에 중요한 것은 MARK 해 두기

패킷 분석 내용이 많을 경우, 이래저래 각 패킷을 왔다갔다 이동하며 보려면 여간 불편한게 아니다.
이때 유용하게 사용할 수 있는 것이 분석 하는 패킷에 마킹을 해 두는 것이다. 분석중,
지속적 확인작업이 필요한 경우 MARK 기능을 이용해 표시를 하는 것이다. Ctrl+M 으로 마크를 해 두고
마크 해 둔 사이의 이동은 Shift+Ctrl+N or B 를 이용해 한다.

아래 이미지의 화살표로 표시된 부분은 MARK 한 부분이다. 패킷간 거리가 클 경우에는 마크를 활용하여
MARK 를 기준으로 빠르게 움직이며 분석이 가능하다.

2010년 3월 9일 화요일

와이어샤크 단축키를 활용해 보자!

단축키의 사용은 사용하는 프로그램을 좀더 효과적으로 사용할 수 있게 해준다.
와이어샤크만 보아도, 다양한 단축키들이 존재한다. 본인이 자주 사용하거나,기본적인 것은 미리 외워두면
업무의 효율도 가져오고 더불어 더욱 프로로 보이게 만들어 줄 것이다 :-)

나의 경우는 다음의 단축키를 주로 많이 사용한다.

Ctrl + K : 패킷 시작 옵션을 보여주고, 인터페이를 선택하여 패킷 시작시 이용한다.
Ctrl + F : 패킷의 내용을 찾을때 이용한다
Ctrl + N , Ctrl + B : 찾은 패킷내용의 다음과 이전으로 이동할 때 사용한다.
Ctrl + G : 원하는 패킷 번지로 이동한다.
Ctrl + 방향키 -> : 패킷 세부 정보에서 모든 화면을 펼쳐 보인다.
Ctrl + P : 패킷 정보를 프린트한다.
Ctrl + O : 패킷 파일을 오픈한다.


이외 여러분들에게 맞는 단축키를 찾아 나서보자. 분명 패킷 분석 속도를 높여주는 역할을 담당하게 될 것이다.

2010년 3월 8일 월요일

패킷인사이드가 바코드 안으로 ...

아이폰 출시로 국내 스마트폰 열풍이 거세지고 있다. 이에 따라 바코드의 인기도 되살아 나고 있다.
스마트폰의 카메라를 이용하여 바코드를 읽어들이고 URL 및 기타 정보를 얻을 수 가 있어,
타이핑이 불편한 작은 디바이스에는 나름 유용한 기능이다.

패킷 인사이드도 QR 코드를 만들어 보았다. 메인 로고 옆에 바로 만들었으니,
카메라만 들이대면 언제든지 아래와 같이 패킷인사이드로 , Go~Go~


자! 아래의 바코드를 찰칵 찍어보자~. 그리고 필요한 곳에서는 아래의 바코드를 퍼가세요.
/ 주인장 @Rigel

2010년 3월 3일 수요일

패킷파일 저장창고를 활용해보자

패킷 파일 저장창고를 하나 소개하고자 한다. Xtractr 이라 불리는 서비스로, 클라우드 기반의
패킷 저장소라고 한다. 세계에서 가장 큰 패킷 저장소라고 하는데, 실제 방문하여 어떤지 경험해
보기를 바란다. 입맞에 딱 맞는 패킷을 못 찾을지도 모르지만, 나름 패킷 저장창고 치고는
구성이 잘 되어 있다. 다음 그림은 rpc 로 검색을 해 본것인데, 취약점 관련한 패킷 정보도 얻을 수 있고
패킷을 배우고자 하는 사람들에겐 유용한 서비스가 될 것이다.


자 한번 그럼 http://pcapr.net 을 한번 방문해 보시라.