2014년 3월 23일 일요일

스노트(Snort)에서 발표한 OpenAppID - 애플리케이션 인지

정말 오랜만에 써 보는 포스팅입니다. 개인적인 이유로 너무 정신없이 지내다 보니 블로그에 포스팅할 시간이 없었는데, 오늘은 스노트에 관련한 글을 잠깐 적어볼까 합니다. 최근에 (정확히 말하면 한달전이 되겠네요) 스노트에서 OpenAppID 라는 것을 발표했습니다. 이름에서 알 수 있는 것과 같이 애플리케이션을 인지하기 위한 기술입니다. 
 
스노트 사이트에서는 해당 기능이 반영된 스노트를 다운로드 받을 수 있습니다.

http://snort.org/snort-downloads

Snort 2.9.7.0 알파 버전부터 해당 기능을 제공하고 있고 이 기능은 스노트에서 전처리기 형태로 제공되는 기능으로 Snort 를 컴파일시에 --enable-oepn-appid 와 같이 build 할때 기능을 제공하도록 설정되어야 사용할 수 있습니다.

주요기능은 다음과 같습니다.

- 네트워크 상에서 어플리케이션 탐지
- 애플리케이션의 사용 트래픽 보고 기능 
- 정책에 의한 애플리케이션 차단
- 스노트 룰 언어의 확장판으로 OpenAppID 사용 
- IPS 이벤트에서 어플리케이션 이름으로 보고 가능 

약 1,000 여개 이상의 어플리케이션 탐지를 제공한다고 합니다. 참고로 스노트에서 룰에 적용하여 사용하기 위해서는 다음과 같은 형태로 사용됩니다.

사용예:

    alert tcp any any -> any any  (msg:"test for app HTTP";     appid: http;     sid:18759; rev:4; )
    alert tcp any any -> any any  (msg:"test for app FTP";      appid: ftp;      sid:18760; rev:4; )
    alert tcp any any -> any any  (msg:"test for app FTP Data"; appid: ftp-data; sid:18761; rev:4; )
    alert tcp any any -> any any  (msg:"test for app CNN zappos"; appid: cnn.com zappos;  sid:18762; rev:4; )

기존 스노트룰에 appid 라는 태그를 사용하여 쉽게 사용이 가능합니다.

다만 어플리케이션 탐지 모듈은 기본적으로 Lua 로 만들어져 있습니다. Lua 는 많은 분들에게 생소한 언어이기도 한데요, 이로 인해서 어플리케이션 모듈을 만드는 것이 스노트 룰 만드는것만큼 쉽지는 않을것같습니다. 

하지만, OpenAppID 가 활성화되어 많은 모듈들이 만들어지면 Snort 를 통해서도 쉽게 어플리케이션 인지를 할 수 있어 상당히 유용해 집니다. 저도 이러한 부분에 동참하고자 OpenAppID 관련한 글을 지속적으로 적어볼까 합니다. 오늘은 오랜만에 쓰는 글이다 보니 가볍게만 적어보고 다음번을 기대해 볼께요