2011년 9월 28일 수요일

한 컴퓨터에서 발생시킨 트래픽 기준은 무엇으로 잡아야 할까?

패킷 분석을 하다보면, 문제가 되는 컴퓨터에서 발생시키는 트래픽이 얼마나 되는지 측정할 때가 있다. 네트워크 라는 넓은 범위에서 트래픽을 관찰하는 것이라면, 네트워크 관리자가 보게되는 것이 IP 주소 기준이 되기 때문에 해당 컴퓨터에서 발생하는 모든 트래픽이 기준이 될 것이다. 그런데, 컴퓨터내에서 특정한 프로세스가 발생시키는 트래픽에 대한 수치가 필요한 경우도 있다. 사실 특정 IP 에서 발생시키는 것은 여러 브로드캐스팅 부터 기타 네트워크 연결상에서 발생되는 일반적인 모든 트래픽을 다 포함시키기 때문에, 정확히 측정하고자 하는 수치가 어떤 것이냐 하는 점은 약간 모호한 점이 있다.

분석이라는 관점에서 보면 이런 수치가 필요한 경우가 무엇이 있을까 생각해 본다면, 분명 분석이 필요한 부분이 있을 것이라는 가정이 선다. 예를들어, 악성코드에 감염되어 사용자 본인의 의도와는 상관없이 트래픽이 발생될 수 있고, 또는 특정 프로그램에 의해서 발생되거나 잘못된 프로그램 등 여러 가능성들이 있다.  자~ 이런 관점에서 이것들이 발생시키는 트래픽을 측정하고자 할때는 발생시킨 트래픽을 구분하고 이에 대한 값들을 수치로 뽑아낼 수 있다. 평균 패킷 발송 개수, 초당 전송량, 평균 패킷 사이즈 등과 같이 데이터 말이다.

악성코드에 의해 감염된 것을 가정하고 이런 트래픽 수치를 산출한다고 했을때, 한 가지 명확히 해야 할 부분이 있을것 같다. 필자도 그냥 다른것은 생각치 않고 발생된 패킷 데이터를 가지고 수치를 뽑았는데 이런 생각이 들었다.

- 악성코드 자체가 순수하게 발생시킨 트래픽이 있을 수 있으며
- 악성코드 자체가 발생시킨 트래픽이 통신 과정을 이뤄내는 과정 까지 포함된
부분이 있을 수 있다.

자, 여기서 보는 관점에 따라 달라지겠지만 악성코드를 분석하는 분석가가 정보를 기술한다는 점에서는 악성코드가 순수하게 발생시키는 트래픽을 기준으로 할 때가 올바를 것이다. 외부의 요인이 결합되지 않고 그 자체가 발생시킨 데이터 말이다.

하지만, 트래픽을 발생시킨다는 것은 다른 목적지와의 통신과정이 있다는 것이다. 웹 서비스 포트인 80 번포트로 패킷이 발송되었을 때 TCP 3-Way Handshake 과정을 다 포함시키면 최소 몇개 이상으로 패킷 개수는 늘어난다. 악성코드 관점에서만 보면 80 번포트로 발생시킨 트래픽 한개일 뿐이지만 말이다. 그런데 또 목적지 포트에 도달할 수 없는 상황이라면 상황은 또 달라진다.

이렇게 요약해 볼 수 있다.

- 악성코드가 순수하게 Request 한 패킷 기준
- 악성코드가 순수하게 Request 한 패킷 기준이지만 통신 과정이 다 포함되는 경우
* 단, 악성코드가 실행된 시간과 얼마동안 동작했느냐에 따라 이 수치는 크게 영향을 받을 수 있다.

분석가 관점에서라면 첫번째가 더 의미 있을 수도 있지만, 현실적으로 트래픽이 폭증하여 대처를 해야 하는 네트워크 운영자 관점에서는 두번째가 더 의미 있다.
필자가 이런 이야기를 한번 다루는 것은 분석이 되어 만들어 지는 데이터 수치가 각기 다른 경우가 발생되어 발표된다는 점 때문이다.  어느 기준을 가지고 만들어 져야 할까 ? 첫번째 경우는 악성코드 자체만을 가지고 봤을때 가정 정확한 데이터이고, 두번째는 현실적인 대처에 포함된다.  보통의 경우 두번째로 쓰이는 경우가 많은것 같다. 더 정확히 하기 위해서라면 트래픽 수치를 다루는 경우 발생된 환경과 기준을 명확히 명시해 주는 것이 가장 좋은 방법이라 생각된다.

이거외 다른 사례도 발생되는 경우가 있는데, 트래픽 기준을 잡는데 특정 위치에서 덤프된 모든 트래픽 데이터를 가지고, 이 악성코드가 발생시킨 것으로 단순히 간주하는 경우도 있다. 즉 이 데이터 수치가 ' XX 악성코드' 가 발생시킨 트래픽이다 하고 정의해 버린 것이다. 이렇게 되면 대당 컴퓨터가 발생시키는 수치 자체에도 큰 변화가 생겨 잘못된 정보를 만들어 낸다. 실제 발생되는 컴퓨터에서 발생된 기준과, 전체 네트워크에서 다 덤프한 데이터를 가지고 하는 수치 측정은 분명히 다르다.

트래픽에 대한 수치를 뽑을 때는 분명 그 기준이 명확하고 동일하게 적용되어야 한다는 점을 말해보고 싶었다.

From Rigel

2011년 9월 23일 금요일

네트워크 포렌직 NetworkMiner 1.1 업데이트


일전에 몇번 소개하였던 네트워크 포렌직 도구인 Network Miner 가 1.1 로 업데이트 되었다. 이번 버전에 추가된 기능은 파라미터 추출 기능이 추가되었으며, 여러 PCAP 파일을 NetworkMiner 화면으로 드래그 하여 집어 넣을 수 있다. 또한 SMB/CIFS 와 넷 바이오스 기능이 향상되었다. 이외 PPP 프레임 지원 기능이 추가되었고, PCAP 파일을 로드할때의 안정성이 높아졌다.


NetworkMiner 사용방법은 이전 블로그 글을 참고하면 된다.

네트워크 포렌직 분석 도구(NetworkMiner)를 이용한 패킷파일 데이터 분석하기

P.S 참고로, 9월 초에 와이어샤크도 업그레이드되어 현재 버전은 1.6.2 이다.

2011년 9월 16일 금요일

네트워크 트래픽 모니터링 도구 - DarkStat


네트워크 트래픽 상태를 살펴볼 수 있는 도구인 'darkstat' 를 소개한다. 기존에 소개하였던 콘솔 기반의 모니터링 도구가 아닌 웹 기반으로 트래픽 상태 정보를 살펴볼 수 있다. 간단하게 실행시켜 놓고, 브라우저를 통해 트래픽 양을 그래프로 쉽게 알 수 있다.

프로그램 자체의 크기도 크지 않고, 작고 안정적이며, 웹 서버 기능을 내장하고 있어서 앞서 언급했듯이 브라우저를 통해 정보를 확인할 수 있는 것이 장점이다. 이외 트래픽 그래프, 호스트별 보고기능, 호스트별 발생한 포트 정보등이 제공된다.

일단, 해당 정보에 대한 것은 다음 사이트를 방문하면 된다.

http://unix4lyfe.org/darkstat/

소스 컴파일도 아래와 같이 configure 를 통해 쉽게 컴파일이 가능하다.

# ./configure
# make
or
# apt-get install darkstat

설치된 후 실행은 네트워크 인터페이스 정도 지정하는 것 정도로 실행할 수 있다.

# darkstat -i eth0

포트번호를 지정한다면,

# darkstat -i eth0 -p 8080 과 같이 하면 된다.

이후, 브라우저를 통해 8080 포트를 접속해 보면 네트워크 상태 정보를 볼 수 있다.

기본적인 사용은 -i or -p 옵션 정도만 지정하여도 충분하고, 이외 추가적으로 사용 가능한 옵션들이 더욱 많은 아래 기본 사용방법만 보아도 대충 어떤 기능인지 추측이 가능할 것이다. 자세한 것은 'man darkstat' 를 통해 보면 세부적으로 알 수 있다.


# darkstat
darkstat 3.0.713 (built with libpcap 2.4)

usage: darkstat [ -i interface ]
                [ -r file ]
                [ --snaplen bytes ]
                [ --pppoe ]
                [ --syslog ]
                [ --verbose ]
                [ --no-daemon ]
                [ --no-promisc ]
                [ --no-dns ]
                [ --no-macs ]
                [ --no-lastseen ]
                [ -p port ]
                [ -b bindaddr ]
                [ -f filter ]
                [ -l network/netmask ]
                [ --chroot dir ]
                [ --user username ]
                [ --daylog filename ]
                [ --import filename ]
                [ --export filename ]
                [ --pidfile filename ]
                [ --hosts-max count ]
                [ --hosts-keep count ]
                [ --ports-max count ]
                [ --ports-keep count ]
                [ --highest-port port ]
                [ --wait secs ]
                [ --hexdump ]

Please refer to the darkstat(8) manual page for further
documentation and usage examples.

이 도구는 전체적인 트래픽 현황등을 파악하는 용도지, 와이어샤크와 같이 패킷을 분석하는 도구는 아니다. 즉, 이런 형태의 모니터링 도구를 통해 이상상황등을 감지하는데는 유용하게 사용할 수 있다.

2011년 9월 7일 수요일

Penetration 테스팅 배포판, BackBox Linux 2 버전 릴리즈


Penetration 테스팅 용도로 사용되는 BackBox Linux 가 2 버전으로 릴리즈 되었다. BackBox 는 Ubuntu 기반으로 제작되어 졌고, 다양한 Penetration 테스트를 위한 도구와 보안 관련 도구들이 포함되어 있다. 기본적인 디자인 목표는 빠르고, 최소화된 기능으로 사용될 수 있도록 만드는 것이다. X 환경은 XFCE 데스크탑 매니져를 사용하였고, 불 필요한 것은 최소화 하였다.

BackBox 의 역사는 오래되지 않았다. 2011년 1월 처음으로 BackBox Linux 1 이 릴리즈 되었고, 이번 9월에 되어서야 2 버전이 나왔다. 앞으로 계획된 일정으로는 내년 1월에 2.01 버전이 계획되어 있다.

BackTrack 과 유사하지만, BackBox 만의 장점도 있으므로 관심있는 분들은 한번 사용해 보기 바란다.

패킷인사이드에서 관심있게 볼 만한 부분은 무엇보다도 네트워크 관련한 부분인데,

  • Wireless Analysis
  • Sniffing
  • Spoofing
  • Network Mapping

쪽에 포함된 도구들이 아닐까 한다. ISO 이미지로 배포되므로 해당 이미지로만 부팅하면, 이 모든 것을 쉽게 사용할 수 있다. 물론, 하드디스크로의 설치도 가능하다. VirtualBox 등을 이용하면 쉽게 이용할 수 있다.

사이트 : http://www.backbox.org/


 [출처] BackBox 사이트

2011년 9월 5일 월요일

웹 기술과 브라우저의 과거 20년 변천사를 들여다보면...

구글 크롬팀에서 크롬이 태어난지 3년을 축하하며 웹 기술과 브라우저 변천사 과거 20년 이상을 깜끔하게 정리했다. HTML5 를 지원하는 브라우저라면 아래 사이트를 방문해서 볼 수 있다.


http://evolutionofweb.appspot.com/

각 내용을 클릭하면 세부적으로 더 정보를 볼 수 있는데, 넷스케이프나 인터넷 익스플로러의 초창기 화면도 볼 수 있다. 구글 크롬은 비록 역사는 짧지만 현재 버전이 13 일만큼, 아주 빠른속도로 기능을 확장해 나가고 있고, 많은 사용자층을 확보하고 있다. 나 또한 크롬의 열렬한 사용자이다.

가장 빠른 파일시스템은 무엇일까?

시스템을 구성하면서 여러가지 고려사항이 많겠지만, 요즘같이 크게 늘어나는 데이터 용량을 커버하기 위해서는 파일시스템 선택도 중요해진다. 파일시스템에 따라 성능상의 차이도 발생하고, 최대 파일크기, 볼륨 사이즈도 달라진다.

일반적으로 1U 시스템에서 사용되는 1~6 개 정도의 디스크 크기는 운영하는데 있어 큰 문제가 발생하지 않을 수 있지만, 스토리지를 연결하여 수십 테라 규모의 디스크가 된다면 고려해야 될 사항들이 많아진다. 볼륨 크기로 인한 파일시스템 선택도 필요하고, RAID 구성등 하드웨어적인 이슈도 많이 따른다.  보통 운영하고자 하는 목적에 맞게 올바른 파일시스템이 선택되기 보단 대중적인 형태로 그냥 선택되는 경우가 많다. RAID 구성, 파일시스템, 스트라이핑 사이즈 등등이 그냥 운영체제 또는 하드웨어 기본 값을 사용하는 경우가 대부분이다.

이 부분에 대해서는 더 하고 싶은 이야기가 많지만, 오늘은 파일시스템을 잘 비교해 놓은 글이 있어서 공유해 보고자 한다. 가장 빠른 파일시스템이 어떤것인가 하는 것이다. 사용된 파일시스템은 btrfs, ext2, ext3, ext4, JFS, ReiserFS, XFS 이다. 이중에서 대중적으로 많이 사용되는 것은 ext3 일 것이다. 그리고, 큰 규모의 스토리지 라면 보통 XFS 가 많이 사용되는 것 같다. 다음 그래프는 20 개의 스레드를 이용해 테스트를 한 것인데, XFS 가 가장 좋은 성능을 보여줬다. ext4 도 전반적으로는 높은 수치를 보여주었고, JFS 가 가장 낮은 점수이다. (FS Relative throughput 에 한해서)


[출처] Finding the Fastest Filesystem, 2011 Edition 블로그 글

물론, 이것은 어디까지나 참고자료이다. 테스트 형태에 따라서도 달라지므로, 실제 운영하고자 하는 목적에 따라 테스트 하여 선택하는 것이 가장 좋을것이다.  세부적인 내용은 아래 링크를 통해서 확인할 수 있다.

http://mindplusplus.wordpress.com/2011/02/02/finding-the-fastest-filesystem-2011-edition/

결론에서는 어느것이 가장 좋은 것인지 추천하지 않았고, 여러 설정에 따라 달라질 수 있는 만큼 테스트용 스트립트를 포함했다고 하니 필요한 분들은 받아서 해보기 바란다.  항상 선택하던 기본이 아닌 여러분들 시스템에 가장 최적이라고 판단되는 것을 선택하는데 도움이 될까하여 공유한다. 생각보단 꽤 많은 파일시스템이 있다는 것을 잊지말자.

큰 규모의 스토리지를 구성하면서 얻은 파일시스템에 대한 경험이 있으신 분들은 댓글로 함께 경험을 공유해 주었으면 한다.

[참고]
1. 파일시스템 비교
http://en.wikipedia.org/wiki/Comparison_of_file_systems
2. Finding the Fastest Filesystem
http://mindplusplus.wordpress.com/2008/07/14/finding-the-fas/
3. The best Linux file system of all?
http://blogs.computerworld.com/15413/the_best_linux_file_system_of_all