퍼즈 테스트(퍼징) 튜토리얼

퍼즈 테스트란 무엇입니까?

퍼지 테스트 또는 퍼징(Fuzzing)은 FUZZ라는 유효하지 않거나 임의의 데이터를 소프트웨어 시스템에 넣어 코딩 오류와 보안 허점을 발견하는 소프트웨어 테스트 기술입니다. 퍼지 테스트의 목적은 자동화 또는 반자동 기술을 사용하여 데이터를 삽입하고 시스템 충돌이나 내장 코드 오류 등과 같은 다양한 예외에 대해 시스템을 테스트하는 것입니다.

퍼지 테스트는 원래 1989년 위스콘신 대학교의 Barton Miller에 의해 개발되었습니다. 퍼지 테스트 또는 퍼징은 소프트웨어 테스트 기술이며 일종의 소프트웨어 테스트입니다. 보안 테스트.

퍼지 테스트

퍼지 테스트를 수행하는 이유는 무엇입니까?

  • 일반적으로 퍼지 테스트는 가장 심각한 보안 결함이나 결함을 찾습니다.
  • Fuzz 테스트는 다음과 함께 사용할 때 더욱 효과적인 결과를 제공합니다. 검정 Box 지원, 베타 테스트 및 기타 디버깅 방법.
  • 퍼지 테스트는 소프트웨어의 취약점을 확인하는 데 사용됩니다. 매우 비용 효율적인 테스트 기술입니다.
  • 퍼즈 테스팅은 블랙박스 테스팅 기술 중 하나입니다. 퍼징은 해커들이 시스템의 취약성을 찾는 데 사용하는 가장 일반적인 방법 중 하나입니다.

퍼지 테스트를 수행하는 방법

퍼지 테스트 단계에는 기본 테스트 단계가 포함됩니다.

단계 1) 대상 시스템 식별

단계 2) 입력 식별

단계 3) 퍼지 데이터 생성

단계 4) 퍼지 데이터를 사용하여 테스트 실행

단계 5) 시스템 동작 모니터링

단계 6) 로그 결함

퍼저의 예

  • 돌연변이 기반 Fuzzer 기존 데이터 샘플을 변경하여 새로운 테스트 데이터를 생성합니다. 이는 매우 간단하고 간단한 접근 방식입니다. 이는 유효한 프로토콜 샘플로 시작하여 모든 바이트 또는 파일을 계속 엉망으로 만듭니다.
  • 세대 기반 Fuzzer 모델의 입력을 기반으로 새로운 데이터를 정의합니다. 사양에 따라 처음부터 입력 생성을 시작합니다.
  • 프로토콜 기반 퍼저가장 성공적인 퍼저는 테스트되는 프로토콜 형식에 대한 자세한 지식을 갖는 것입니다. 이해는 사양에 따라 다릅니다. 여기에는 사양 배열을 도구에 작성한 다음 모델 기반 테스트 생성 기술을 사용하여 사양을 검토하고 데이터 내용, 순서 등에 불규칙성을 추가하는 작업이 포함됩니다. 이는 구문 테스트, 문법 테스트, 견고성 테스트라고도 합니다. 등. Fuzzer는 기존 사례에서 테스트 사례를 생성하거나 유효하거나 유효하지 않은 입력을 사용할 수 있습니다.

프로토콜 기반 퍼징에는 두 가지 제한 사항이 있습니다.

  1. 사양이 성숙될 때까지 테스트를 진행할 수 없습니다.
  2. 많은 유용한 프로토콜은 공개된 프로토콜의 확장입니다. 퍼지 테스트가 게시된 사양을 기반으로 하는 경우 테스트 커버리지 새로운 프로토콜의 경우 제한됩니다.

퍼징 기술의 가장 간단한 형태는 프로토콜 패킷이나 이벤트로 소프트웨어에 무작위 입력을 보내는 것입니다. 무작위 입력을 전달하는 이 기술은 많은 애플리케이션과 서비스에서 버그를 찾는 데 매우 강력합니다. 다른 기술도 사용할 수 있으며 구현하기가 매우 쉽습니다. 이러한 기술을 구현하려면 기존 입력을 변경하기만 하면 됩니다. 입력 비트를 교환하는 것만으로 입력을 변경할 수 있습니다.

Fuzz Testing에서 발견한 버그 유형

  • 어설션 실패 및 메모리 누수 이 방법은 버그가 심각한 취약점인 메모리 안전에 영향을 미치는 대규모 애플리케이션에 널리 사용됩니다.
  • 잘못된 입력 퍼즈 테스트에서 퍼저는 오류 처리 루틴을 테스트하는 데 사용되는 잘못된 입력을 생성하는 데 사용되며 이는 입력을 제어하지 않는 소프트웨어에 중요합니다. 단순 퍼징은 부정적인 테스트를 자동화하는 방법으로 알려져 있습니다.
  • 정확성 버그 퍼징은 일부 유형의 "정확성" 버그를 탐지하는 데에도 사용될 수 있습니다. 데이터베이스 손상, 검색 결과 불량 등

퍼즈 테스트 도구

웹 보안에 사용되는 도구는 다음과 같은 퍼지 테스트에 널리 사용될 수 있습니다. Burp Suite, 피치 퍼저 등

  • 피치 퍼저: Peach Fuzzer는 스캐너보다 더욱 강력하고 보안적인 범위를 제공합니다. 다른 테스트 도구는 알려진 스레드만 검색할 수 있는 반면, Peach Fuzzer를 사용하면 알려진 스레드와 알려지지 않은 스레드를 찾을 수 있습니다.
  • 스파이크 프록시: 웹 애플리케이션의 애플리케이션 수준 취약점을 찾는 전문가급 도구입니다. SPIKE 프록시는 다음과 같은 기본 사항을 다룹니다. SQL 주입 및 크로스 사이트 스크립팅이지만 완전히 개방되어 있습니다. Python 하부 구조. SPIKE 프록시는 다음에서 사용할 수 있습니다. Linux 그리고 Windows.
  • 웹풍뎅이: Webscarab은 다음 언어로 작성되었습니다. Java 따라서 많은 플랫폼으로 이식 가능합니다. 애플리케이션 분석을 위해 HTTP 및 HTTPS 프로토콜을 사용하여 통신하는 Webscarab 프레임워크가 사용됩니다.예 : Webscarab은 가로채는 프록시로 작동하며, 운영자가 서버에서 수신하기 전에 브라우저에서 생성된 요청을 검토하고 수정할 수 있도록 합니다. 그리고 브라우저에서 수신하기 전에 서버에서 생성된 응답을 검토하고 업데이트할 수 있도록 합니다. 이런 식으로 Web Scarab이 허점을 발견하면 보고된 문제 목록을 작성합니다.
  • OWASP WSFuzzer: WSFuzzer는 다음 언어로 작성된 GPL 프로그램입니다. Python. GPL 프로그램은 현재 웹 서비스를 대상으로 합니다. 현재 버전의 OWASPWSFuzzer HTTP 기반 SOAP 서비스 주요 타겟입니다.

퍼즈 테스트의 장점

  • 퍼지 테스트로 소프트웨어 개선 보안 테스트.
  • 퍼징에서 발견되는 버그는 때때로 심각하며 충돌, 메모리 누수, 처리되지 않은 예외 등을 포함하여 해커가 사용하는 대부분의 시간입니다.
  • 시간과 자원의 제한으로 인해 테스터가 버그를 발견하지 못하는 경우 해당 버그는 Fuzz 테스트에서도 발견됩니다.

퍼즈 테스트의 단점

  • 퍼즈 테스트만으로는 전반적인 보안 위협이나 버그에 대한 완전한 그림을 제공할 수 없습니다.
  • 퍼지 테스트는 일부 바이러스, 웜, 트로이 목마 등과 같이 프로그램 충돌을 일으키지 않는 보안 위협을 처리하는 데 덜 효과적입니다.
  • 퍼지 테스트는 단순한 결함이나 위협만 감지할 수 있습니다.
  • 효과적으로 수행하려면 상당한 시간이 필요합니다.
  • 무작위 입력으로 경계 값 조건을 설정하는 것은 매우 어려운 일이지만, 이제는 사용자 입력을 기반으로 하는 결정론적 알고리즘을 사용하여 대부분의 테스터가 이 문제를 해결합니다.

제품 개요

소프트웨어 엔지니어링에서 Fuzz 테스트는 애플리케이션에 버그가 있는지 보여줍니다. 퍼징은 애플리케이션에서 버그 감지를 완전히 보장할 수 없습니다. 그러나 Fuzz 기술을 사용하면 이 기술이 대부분의 일반적인 취약점을 노출하는 데 도움이 되므로 애플리케이션이 강력하고 안전하다는 것을 보장합니다.