2010년 2월 1일 월요일

Fuzzing 이란?

fuzzing 이 이슈가 된지도 3년정도 된것같다.
바이너리는 물론 프로토콜에도 fuzzing 툴과 어플라이언스 장비도 나와있다.

1. Fuzzer란?
이름에서 알수있듯 여러 분야에서 응용되고 알려진 fuzzy 이론*과 동일한 어원의 용어로, 랜덤값 또는 시퀀셜한 값을 어플리케이션의 다양한 필드에 삽입하여 밝혀지지 않은 어플리케이션 취약점 (버퍼 오버플로우, 파라미터 포맷체크, 에러 핸들링, 사용자 입력값 체크 등)에서부터 확실히 유해하다고 보기는 어려운 정보 (OS버전, 어플리케이션 서버 버전, 데이터베이스 정보, 심지어는 사설 IP 등과 같은)를 알아내기 위해 사용되는 도구를 말한다.
보안 관점에서 취약성 발견(0-day 취약성 포함) 의 수단으로 사용되었고, SQL Injection 또는 Cross site scripting 공격에 사용되어왔다.

랜덤값 입력의 대상은 어플리메이션(특히 웹 어플리케이션) 뿐만 아니라  파일포맷, 프로토콜, 그리고 최근 환경변수, 키보드나 마우스 이벤트, API 호출과 같은 프로그램 입력값에도 응용되고 있으며, 데이터베이스, 공유메모리로 확대되고 있다.

프로토콜 퍼저는 조작된 페킷을 테스트대상 어플리케이션으로 전송하거나, proxy처럼 동작하여 요청패킷을 가로채어 다시 전송하는 행위를 하는 소프트웨어/장비를 말한다.


protocol fuzzer 사용예

Original: GET / HTTP/1.1

1. TEG / HTTP/1.1
2. {{{{ / HTTP/1.1
3. GET ```` HTTP/1.1
4. GET / %n%n%n%n
5. GET / 1.1/PTTH
6. GET / HTTP%n%n%n%n1.1

프로토콜 fuzzing은 궁극적으로 DDoS 공격에 사용될 수 있다는 점을 말하고자 한다.  
최근 7.7 DDoS 에서 정상적인 사용과 구분되지 않는 형태의 CC attack 과 slowloris가 사용되었고, 향후 필드에서의 공격과 BMT 대응을 위해서라도 protocol fuzzer에 사용된 패턴의 공격형태에 대한 예방이 필요하다고 보여진다.


2. 프로토콜 퍼저로 발생되는 트래픽의 특성
 
 가. 사용자가 삽입 문자열이나 위치를 지정할 수 있음

 나. 삽입 위치의 규칙성이 없이 랜덤함.

 다. null, %인코딩, 특정 문자열의 반복 형태가 다수임.

상기와 같은 특성으로 프로토콜 Penetration test에 사용되기도 함.


3. 대응방안

  가. 주요 fuzzer에서 사용되는 데이터셋을 확보, 분석

  나. 멀티컨텐츠 룰을 활용


4. 프로토콜 퍼저 툴 리스트

BreakingPoint Elite 의 application level fuzzing http://www.breakingpointsystems.com/solutions/application-fuzzing


웹 어플리케이션 퍼저

파일포맷 퍼저

directory traversal 퍼징 데이터 http://www.ikkisoft.com/stuff/dirTraversal.txt




기타- NSS에서 공개한 IPS장비의 취약점 테스트 기준




----------------------------------------------------------------------
* fuzzy 이론

자연 언어 등의 애매함을 정량적으로 표현하기 위하여 1965년 미국 버클리대학교의 L. A. 자데(Zadeh) 교수에 의해 도입된 퍼지 집합의 사고방식을 기초로 하고 있다.

퍼지 집합의 개념은 각 대상이 어떤 모임에 속한다 또는 속하지 않는다는 이진법 논리로부터, 각 대상이 그 모임에 속하는 정도를 소속함수(membership function)로 나타냄으로써 수학적으로 표현할 수 있다. (출처: wikipedia)

댓글 없음:

댓글 쓰기