퍼즈 테스팅(Fuzz Testing)

개념
- 비정상적인 데이터를 어플리케이션에 전달하여 에러를 유도하는 테스트 - 소프트웨어에 무작위의 데이터를 반복적으로 입력하여 조직적인 실패를 유발함으로써 보안상의 취약점을 찾아내는 테스트 - Blackbox, Penertation(침투), Robustness

I. 보안 사고에 대한 선제적 대응 방안, Fuzz Testing의 개요

가. 퍼즈 테스팅 (Fuzz Testing)의 정의

- 비정상적인 데이터를 어플리케이션에 전달하여 에러를 유도하는 테스트

- 소프트웨어에 무작위의 데이터를 반복적으로 입력하여 조직적인 실패를 유발함으로써 보안상의 취약점을 찾아내는 테스트

- Blackbox, Penertation(침투), Robustness

 

나. 퍼즈 테스팅의 필요성

 

다. 퍼즈 테스팅의 특징

- 입력값 무작위성 : 램던 메시지 또는 유효한 키보드 및 마우스 이벤트

- 간단한 신뢰기준 : Crash, Hang 시 실패로 간주, 그 외는 통과

- 고수준 자동화 : 높은 수준 자동화 가능, 밴더간 비교 가능

 

II. Fuzz 테스팅의 개념도 및 종류

가. Fuzz 테스팅의 개념도

 

나. Fuzz 테스팅의 종류

기법

설명

Blackbox Fuzz Testing

- 입력 값은 무작위적이며 단순하다.

- 어플리케이션의 실행이 멈추거나(crash)

실행이 일시적으로 보류(hang)되면 테스트에서 실패한 것으로 간주되고, 그렇지않다면 테스트 통과

- 단순하지만, 취약점 발견확률이 낮음

Whitebox Fuzz Testing

- 소스코드가 필요하며 분석이 복잡하다.

- Blackbox Fuzz과는 다른 종류의 취약점을 찾을 수 있음.

- 사이즈가 큰 프로그램들에는 다음과 같은 이유로 적용이 매우 어렵다

1) Pointer Manipulation

2) Arithmetic Operations

3) OS and Library calls

 

다. Fuzz 테스팅의 장단점

구분

설명

단점

- 정확한 분석보다는 무작위성에 의존

- 단순한 결함들은 쉽게 찾아내지만 아주 심각한 보

안 취약점을 찾아내는 데는 그렇게 뛰어난 성능을 발휘하지는 못

장점

- 다양한 Fuzz  테크닉들과 툴들 등장으로 취약점 발견 성능 증대

 

III. Fuzz 테스팅의 범위 및 발견할 수 있는 결함 종류

가. Fuzz 테스팅의 커버리지

커버리지

구분

테스팅 대상

Direct Physical Attack

Network

OBD 포트 공격, 스마트 키 복제

IP 기반 네트워크 공격

File System

OS등 범용적 사용하는 File System에 대한 테스팅

File/Media

File/Media에 대한 일반적인 공격 대상 테스팅

Indirect Physical Attack

File/Media

미디어플에이어 펌웨어업데이트 공격, CD&Wi-Fi 통한 펌웨어업데이트 exploit 공격 테스팅

오디오파일 통한 Parsing된 exploit CAN 패킷공격

Application

버그, 보안 취약점 등 설계 결함 이용 공격
절차나 일련의 명령어, 스크립트, 프로그램

WMA Parser 취약점 공격

Local/ Remote Wireless Attack

Application

블루투스 Protocol Stack 코드 취약점 공격

Network

통신 기능 악성코드 삽입공격(개인정보 유출)

Telematics 모듈 및 스마트폰 통신채널 공격

제조사 Command 프로그램의 exploit 공격

 

나. Fuzz 테스팅으로 발견 가능한 결함 종류

Input

Anomaly

취약점 탐지

Field Level

- Overflows

- Integer Anomalies

① System Crash

② DDoS공격 조건들

③ 보안 취약점

④ 성능저하

⑤ 느린반응

Structural

- Underflows

- Unexpected elements

Sequence Level

- Out of sequence omitted

- Spamming

 

II. Fuzz 테스팅의 툴 및 보안취약점 탐지방법

가. 퍼즈 테스팅 (Fuzz Testing)의 툴

구분

종류

설명

Web Application Fuzz 툴

MielieTool

- Perl 기반의 웹 어플리케이션 fuzzer

- form 및 링크 형태로 된 CGI를 Fuzz 지원

- 2개 이상의 사이트를 동시에 테스트 가능

- HTTrack, Lynx, grep, find, 및 rm이 필요

Wapiti

– Python으로 구현된 웹 어플리케이션 fuzzer

- 웹 취약점 스캐너 일종

WebFuzzer

- 원격 취약점 점검 웹 어플리케이션 fuzzer

- sql injection, cross site scripting, 원격 코드 실행, file disclosure, directory traversal, php  including, shell escaping 13 및 안전하지 않은 perl open()  호출 등

Browser Fuzz 툴

MangleMe

- 비정상적인 HTML  태그를 생성 및 이용

- 브라우저 자동 실행, IE IFRAME 버그를 발견용

AxMan

- H.D.Moore 개발, 웹 기반의 ActiveX Fuzz 엔진

- IE를 통해 노출된 COM 오브젝트 취약점 발견

COMRaider

- David Zimmer개발

- COM Object 인터페이스를 Fuzz하기 위한 툴

- 경로, 파일명, guid로 COM 오브젝트 스캔

Service 및 Protocol Fuzz 툴

FTPFuzz

- FTPD 서버 구현상의 문제점 테스트, GUI 기반

- FTP명령과 Fuzz할 파라미터들, 사용할 테스트 문자열의 패턴을 지정 가능

PROTOS

- black box 테스트 방법들을 이용하여 프로토콜 구현 상의 문제 점검

SMTPFuzzer

- SMTP 프로토콜 구현을 하고 있는 서버의 취약점을 찾기 위한 Fuzz 툴

TCP/IP Fuzz 툴

Fuzzball2

- nologin18의 warlord가 개발

- Linux용 TCP/IP Fuzz 툴

- 특정 호스트에 bogus 패킷 전송

ISIC

- IP스택과 그것의 구성 스택(TCP, UDP, ICMP  등)의 안정성 테스트 유틸리티 집합

- IP스택에 존재하는 버그를 찾기 위함

- 목표 프로토콜에 허위의 무작위 패킷을 생성

- 타깃 머신의 방화벽 규칙을 공격

 

나. 퍼즈 테스팅을 통한 보안취약점 탐지방법

구분

설명

Valid Case Fuzz Testing

- Valid 케이스 테스트 대상 프로토콜 명세어 따라 생성된 정상 입력 데이터를 통하여 DUT(Device Under Test)와 정상 연결 유무를 확인하는 테스팅

Invalid Case Skip Testing

- 자체적으로 비정상 입력을 처리하지 못한 경우와 해당 테스트 케이스를 수행하지 못한 경우 Fuzzer 가 이를 Skip 처리하는 테스팅

Invalid Case Fail Testing

- 비정상 입력에 의해 DUT가 응답이 없는 경우, Valid 케이스를 보내 DUT가 살아 있는지 확인(응답 : Fail / 무응답 : Crash)

- 테스트 완료 후 Fail 된 테스트 케이스 재 테스트 수행

- 다시 Fail 이거나 Crash 인 케이스는 봉나 취약점 배포 확률이 높다고 판단

다. 자동차 보안 대응을 위한 Fuzz Testing 방법

구분

설명

Bluetooth 및 Wi-Fi Testing

- Fuzzer와 Transceiver를 이용하여 DUT에 테스트 케이스 전송

- Bluetooth Test : 프로파일 대상

- Wi-Fi Test : WAP AP 서버와 클라이언트 대상

Digital Media Testing

- 원본 디지털 미디어 파일을 Fuzzer를 통해 비정상적인 파일로 변환하여 SD카드나 USB 등을 통해 인포테인먼트 시스템 테스트

- Connected Car로 발전하면서 자동차의 급격한 전장화로 보안 위협 증가

- 자동차 보안 사고는 인명과 직결되는 만큼 철저한 사전 대비가 필수적

- 개발 프로세스에 포함된 Fuzz Testing을 통한 보안취약점 사전 점검, 최종 출시 전체시스템 보안점검 필요

댓글