해커들은 종종 소프트웨어의 취약성을 찾기 위해 fuzzer를 사용하여 취약성을 탐색합니다. 소프트웨어 개발자는 fuzzer를 사용하여 이러한 유형의 공격을 예상하고 방어 할 수 있습니다.
유래
첫 번째 fuzzer는 Macintosh 컴퓨터 용 프로그램의 약점을 테스트하기 위해 개발자 Steve Capps가 1980 년대 초에 작성했습니다. 그는 무한한 시간 동안 타이프라이터에서 임의의 키를 누르는 원숭이의 고전적 격언을 인용하여 자신의 프로그램 인 "원숭이"를 호출했습니다. 이론은 충분한 시간이 주어진다면, 원숭이는 결국 셰익스피어의 전체 작품을 쓸 것입니다. 소프트웨어 테스팅에 대한 이러한 접근법은 일반적으로 "퍼징 (fuzzing)"이라고 불리지 만 Capps 프로그램 때문에 "원숭이 테스트"라고도합니다.
Fuzzers 목록
Fuzzing 기술은 소프트웨어를 테스트하는 데 사용될 수 있으며 특정 목적을 위해 많은 fuzzer가 존재합니다.
다음은 fuzzers 목록이며, 대부분은 오픈 소스이며 많은 사람들이 여전히 활발한 개발 중입니다.
Fuzzer 이름 / URL | 기술 |
---|---|
Google 살균제 | Google에서 개발 한 네 가지 데이터 삭제 도구 그룹으로 퍼지를 사용하여 프로그램 오류를 감지합니다.
|
아프 - 퍼즈 | American Fuzzy Lop은 유전 알고리즘을 사용하여 컴파일 된 프로그램의 보안을 테스트하는 도구입니다. |
백 퍼즈 | 프로토콜 퍼징 툴킷. |
BrundleFuzz | Windows 및 Linux 용 분산 fuzzer. |
CERT FOE | Failure Observation Engine : CERT에서 개발 한 도구로 mutational fuzzing을 사용하여 Windows 프로그램의 취약점을 탐지합니다. |
CERTfuzz | CERT FOE의 소스 코드. |
초론 존 | 진화론에 기반한 fuzzer. |
Diffy | 웹 서비스의 취약점을 발견하기 위해 Twitter에서 개발 한 도구. |
핑 | 파이썬 용 퍼징 라이브러리 |
dfuzzer | D-Bus IPC 및 RPC 메커니즘을 통해 통신하는 프로세스를 테스트하기위한 퍼징 도구입니다. |
dotdotpwn | 경로 통과 취약점에 대한 웹 응용 프로그램을 테스트하는 도구입니다. |
드랑 주 | ActiveX 컨트롤을위한 퍼지 테스터. |
EMFFuzzer | 향상된 메타 파일 퍼지 테스터. |
악용 가능한 | Linux 실행 파일을 분석하고 알려진 버그에 따라 심각도별로 버그를 분류하는 GDB (GNU 디버거) 용 확장 프로그램. 원래 CERT에서 개발되었습니다. |
어리 석음 | 객체를 임의의 값으로 채우는 Go 프로그램 용 퍼지 테스터입니다. |
grr | 32 비트 바이너리를 64 비트로 변환하여 프로세스의 일부로 처리합니다. |
홍콩 | 하드웨어 및 소프트웨어를위한 혁신적이고 피드백 중심적인 fuzzer. |
HTTP / 2 Fuzzer | HTTP / 2 응용 프로그램 용 fuzzer로 다운로드 할 수는 있지만 더 이상 활발하게 개발되지는 않습니다. |
호도르 | "완전히 바보보다 약간"(무차별 한) fuzzer. |
iFuzzer | Mercurial과 Valgrind를 사용하는 파이썬으로 작성된 fuzzer. |
KEMUfuzzer | QEMU, VMware, VirtualBox 또는 BHOCS 에뮬레이션 플랫폼에서 실행되는 가상 컴퓨터 용 fuzzer입니다. |
KernelFuzzer | 커널 시스템 호출을위한 fuzzer |
LibFuzzer | 프로세스 중, 진화론 적, 적용 범위 안내 형 퍼즈 테스트를위한 라이브러리. |
Netzob | 리버스 엔지니어링 통신 프로토콜 용 fuzzer. |
신경 푸저 | 기계 학습 (신경 네트워크)을 사용하여 테스트를 수행하는 fuzzer. |
악몽 | 웹 기반 관리 도구가있는 분산 fuzzer. |
Pathgrind | 32 비트 응용 프로그램에 대한 경로 기반 동적 분석. |
퍼프 - 퍼지 | Linux 커널에서 perf_event_open () 시스템 호출을 테스트하도록 특별히 설계된 fuzzer입니다. |
펄서 | 프로토콜을 "습득"하는 fuzzer. |
PyJFuzz | 파이썬 JSON fuzzer. |
퀵 퍼즈 | 하스켈에서 작성된 실험적 문법 퍼 저. |
라덤 사 | 범용 fuzzer. |
랜디 | 테스트 된 프로그램에 대한 임의의 입력을 생성하는 간단한 파이썬 fuzzer. |
아프다 | 간단한 솜털. "마치 단순한 퍼지 (fuzzer)처럼 들린다." Kali Linux 도구 세트의 일부로 포함되어 있습니다. |
스키 피쉬 | Google에서 개발 한 웹 응용 프로그램 보안 스캐너입니다. |
syntribios | Python으로 작성되고 OpenStack 보안 그룹에 의해 유지 관리되는 웹 API 용 자동 퍼지 테스터. |
TriforceAFL | QEMU를 사용하는 전체 시스템 fuzzer. |
와피 티 | 웹 응용 프로그램 취약점 스캐너. |
윙윙 거리다 | 웹 어플리케이션을위한 무차별 포 커. |
zzuf | 파일의 입력 작업에서 임의로 비트를 변경하는 결정 성 있고 투명한 응용 프로그램 입력 fuzzer입니다. |
다음은 퍼징 테스트를 관리하는 데 도움이되는 fuzzing harnesses 또는 framework입니다.
퍼징 프레임 워크 | 기술 |
---|---|
CERT BFF | CERT에서 개발 한 BFF (Basic Fuzzing Framework)는 Windows, macOS 및 Linux 응용 프로그램의 취약점을 발견하도록 설계되었습니다. |
FuzzFlow | AngularJS의 퍼징 프레임 워크. |
퍼지 네이터 | 임의의 퍼지 테스트를위한 프레임 워크. |
FuzzLabs | 범용 퍼즈 테스트 프레임 워크. |
분쇄기 | 웹 브라우저 테스트를위한 퍼지 테스트 자동화 / 프레임 워크. |
고양이 새끼 | Python으로 작성된 퍼지 테스트 프레임 워크. |
~의 | OCaml로 작성된 퍼지 프레임 워크. |
Nodefuzz | nodejs로 작성된 웹 브라우저 용 퍼즈 테스트 프레임 워크. |
PassiveFuzzFrameworkOSX | macOS 커널의 취약점을 테스트하기위한 fuzzer. |
복숭아 Fuzzer | "알려지지 않은 취약점이있는 시스템을 사실상 테스트 할 수있는"퍼즈 테스트 플랫폼. |
RamFuzz | 객체 메서드의 개별 매개 변수를 테스트하기위한 fuzzer입니다. |
설리 | "완전히 자동화되고 무인, 순수 Python"fuzzing 프레임 워크. |
FunFuzzer | Mozilla의 JavaScript 엔진 및 DOM 렌더러 용 Python fuzzing harness |
버그, 프로그래밍 용어, 보안 용어, 소프트웨어 테스팅