퍼지 테스트
태그 :
- 개념
- - 소프트웨어에 랜덤 데이터를 입력함으로써 SW의 조직적인 실패를 유발시켜 발생되는 예외, 오류 등을 분석하고 보안 취약점을 찾아내는 테스팅 기법.
I. 개발 기반 모듈 테스트 단위테스트의 개요
가. 퍼지 테스트 (Fuzzing Test)의 정의
- 소프트웨어에 랜덤 데이터를 입력함으로써 SW의 조직적인 실패를 유발시켜 발생되는 예외, 오류 등을 분석하고 보안 취약점을 찾아내는 테스팅 기법.
나. 퍼지 테스트의 특징
- 사용이 간단하며 , 0% false positive
- 단순하며, 취약점을 찾을 확률이 낮다.
II. Fuzziong 테스트의 종류 및 장단점
가. Fuzziong 테스트의 종류
기법 |
설명 |
Blackbox Fuzzing |
- 입력 값은 무작위적이며 단순하다. - 어플리케이션의 실행이 멈추거나(crash) 실행이 일시적으로 보류(hang)되면 테스트에서 실패한 것으로 간주되고, 그렇지않다면 테스트 통과 - 단순하지만, 취약점 발견확률이 낮음 |
Whitebox Fuzzing |
- 소스코드가 필요하며 분석이 복잡하다. - Blackbox fuzzing과는 다른 종류의 취약점을 찾을 수 있음. - 사이즈가 큰 프로그램들에는 다음과 같은 이유로 적용이 매우 어렵다 1) Pointer Manipulation 2) Arithmetic Operations 3) OS and Library calls |
나. Fuzzing 테스트의 장단점
구분 |
설명 |
단점 |
- 정확한 분석보다는 무작위성에 의존 - 단순한 결함들은 쉽게 찾아내지만 아주 심각한 보 안 취약점을 찾아내는 데는 그렇게 뛰어난 성능을 발휘하지는 못 |
장점 |
- 다양한 fuzzing 테크닉들과 툴들 등장으로 취약점 발견 성능 증대
|
III. Fuzziong 테스트의 툴
구분 |
종류 |
설명 |
Web Application Fuzzing 툴 |
MielieTool |
- MielieTool v.1.0은 사용하기 편한 Perl 기반의 웹 어플리케이션 fuzzer이다. 이 툴은 form 및 링크 형태로 된 CGI를 fuzzing하는 것을 지원하며, 2개 이상의 사이트를 동시에 테스트할 수있다. HTTrack, Lynx, grep, find, 및 rm이 필요 |
Wapiti |
– Wapiti는 Python으로 구현된 웹 어플리케이션 fuzzer이다. 이 툴의 홈페이지에는 웹 취약점 스캐너로 나와 있다 |
|
WebFuzzer |
- WebFuzzer는 sql injection, cross site scripting, 원격 코드 실행, file disclosure, directory traversal, php including, shell escaping 13및 안전하지 않은 perl open() 호출과 같은 원격 취약점을 점검하는 웹 어플리케이션 fuzzer이다 |
|
Browser Fuzzing 툴 |
MangleMe |
- 비정상적인 HTML 태그를 생성 및 이용하는 간단한 fuzzer이다. 브라우저를 자동으로 실행시키며, IE IFRAME 버그를 발견하는데 사용되었다 |
AxMan |
- AxMan은 H.D.Moore에 의해 개발된 웹 기반의 ActiveX fuzzing 엔진이다. AxMan의 목적은 Internet Explorer를 통해 노출된 COM 오브젝트에 존재하는 취약점을 발견하는 것이다 |
|
COMRaider |
- COMRaider는 David Zimmer에 의해 COM Object 인터페이스를 fuzzing하기 위해 고안된 툴이다. 경로, 파일명, 또는 guid로 COM 오브젝트를 스캔할 수 있는 능력을 가지고 있다 |
|
Service 및 Protocol Fuzzing 툴 |
FTPFuzz |
- FTPFuzz는 FTPD 서버 구현상의 문제점을 테스트하기 위한 GUI 기반의 fuzzer이다. 사용자는 FTP 명령과 fuzzing할 파라미터들, 사용할 테스트 문자열의 패턴을 지정할 수 있다 |
PROTOS |
- PROTOS 프로젝트는 black box 테스트 방법들을 이용하여 프로토콜 구현 상의 문제를 점검한다 |
|
SMTPFuzzer |
- SMTP 프로토콜 구현을 하고 있는 서버의 취약점을 찾기 위한 fuzzing 툴 |
|
TCP/IP Fuzzing 툴 |
Fuzzball2 |
- Fuzzball2는 nologin18의 warlord가 만든 Linux용 TCP/IP fuzzing 툴이다. 이 툴은 특정 호스트에 bogus 패킷을 보낸다 |
ISIC |
- ISIC는 IP 스택과 그것의 구성 스택(TCP, UDP, ICMP 등)의 안정성을 테스트하기 위한 유틸리티들을 모아둔 것이다. 이것은 목표 프로토콜에 허위의 무작위 패킷을 생성한다. 그런 다음 타깃 머신의 방화벽 규칙을 공격하고, IP 스택에 존재하는 버그를 찾기 위해 이 패킷이 보내진다 |