[Security] Web Fuzzer와 Tool

·2024년 9월 19일

Security

목록 보기
7/60

개요

fuzzing은 공격 대상 시스템의 보안 취약점을 탐지하기 위해 다양한 입력값을 전송하는 것을 의미한다.

웹 퍼징은 입력 검증, 인증 및 권한 부여, 세션 관리, 파일 업로드와 같은 웹 애플리케이션의 다양한 측면을 검사하는 데 사용된다.

웹 퍼저 도구는 웹 애플리케이션의 취약점을 찾기 위해 자동화된 방법으로 입력 데이터를 생성하고 테스트하는 도구이다.

웹 퍼저(Web Fuzzer)란?

특정한 입력 벡터를 사용하여 애플리케이션의 반응을 관찰한다.

예를 들어, 사용자가 입력할 수 있는 필드에 다양한 문자열, SQL 명령어, 스크립트 코드 등을 삽입하여 응답을 분석한다.

주로 발견되는 취약점

  • 입력 검증 취약점: 잘못된 입력이 애플리케이션에 전달되어 오류를 발생시키거나, 예상치 못한 행동을 유발하는 경우.
  • 인젝션 공격: SQL 인젝션, 크로스사이트 스크립팅(XSS) 등과 같이 악의적인 코드를 삽입하여 시스템을 공격하는 경우.
  • 인증 및 세션 관리: 세션 하이재킹, 취약한 비밀번호 관리 등.

크롤링 타깃 사이트

웹 모의해킹 실습 서버, 즉 이번 프로젝트에서 크롤링하게 될 웹 페이지를 몇 가지 추려보면 아래와 같다.

  1. OWASP Juice Shop
    • 오픈소스 온라인 보안 단체인 OWASP가 만든 주요 웹 취약점을 테스트할 수 있는 실습용 서버
    • 2010년 이후 PHP 기반의 웹 어플리케이션이 많이 줄어들고 JavaScript와 관련 프레임워크들로 제작된 웹 앱이 많아졌고, 이러한 변화를 수용하여 NodeJS, Express, Angular 등을 이용해 만들어짐.
      OWASP TOP 10의 모든 취약점들이 들어가 있어 실습하기 적합한 환경.
    • 환경 구축 : Docker로 진행
  2. DVWA
    • 취약점 진단 및 모의해킹 실습을 할 수 있도록 만들어진 취약한 웹 어플리케이션
    • 환경 구축이 쥬스샵에 비해 비교적 복잡

주요 퍼저 도구

Burp Suite

  • 강력한 웹 보안 테스트 도구로, 퍼징 기능을 포함
  • HTTP 트래픽을 가로채고 분석할 수 있는 프록시 서버 기능을 제공하여 요청을 수정할 수 있습니다.
  • Proxy : 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행
  • Proxy Server : 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있도록 해주는 컴퓨터 시스템

사용법

  • proxy : 서버로 가는 트래픽을 가로채서 수정함
    • request 가로채기/수정 가능
    1. 인터넷 옵션 - 연결 - LAN 설정 - 프록시 서버 체크, default 값인 127.0.0.1:8080
    2. burp suite의 proxy - intercept is on 확인 → Dashboard - Event Log에서 Proxy 확인 가능
    3. proxy - options에서 Intercept Client Requests와 Intercept Server Response 에서 가로챈 응답 확인 가능
  • Intruder : 브루트 포스 공격, 사전 공격을 수행 시에 사용
    • ex) 로그인 시 brute force attack 시도하기
      1. Burp Suite에서 intercept is on 으로 되어있는지 확인 후 취약점 진단을 시도할 웹에서 로그인 시도
      2. request는 burp suite를 통해 가로채어 짐
      3. Proxy - Intercept에서 우클릭 후 send to intruder 클릭
      4. Intruder 탭으로 이동 - target에서 목표 설정
      5. Positions 탭에서 intruder로 보낸 request 볼 수 있음
        a. 일부 변수의 녹색 강조 표시는 변경될 부분 추정
        b. 재구성하기 위해 오른쪽의 clear 클릭
        c. 설정할 부분 강조 표시 후 add 클릭
        d. attack type 설정 : sniper 대신 Cluster bomb 사용
    • Attack type
      1. Sniper
        a. 하나의 파라미터에 여러 페이로드 순차적 주입
        b. 순서대로 각 위치를 target, 그 자리에 각 페이로드 삽입
        c. XSS에 많이 사용
      2. battering ram
        1. 모든 파라미터에 동일한 페이로드 주입
        2. 변수 위치에 동일한 페이로드 한 번에 삽입
        3. HTTP 요청 내 여러 위치에 같은 입력 삽입할 경우 유용
      3. Pitchfork
        1. 여러 파라미터에 다른 페이로드 병렬 주입
        2. 페이로드 리스트의 길이가 동일해야 함
        3. 여러 파라미터에 대해 서로 다른 페이로드 테스트할 때 사용
        4. 두 개 이상의 입력 필드를 동시 조합하여 공격할 때 사용
      4. Cluster Bomb
        1. 여러 페이로드에 가능한 모든 페이로드 조합
        2. 모든 페이로드 리스트에서 가능한 모든 조합을 생성
        3. 모든 가능한 입력 조합을 시도해야 하는 취약점 탐지 시
  • Repeater : 같은 요청을 많은 횟수로 수정하여 보내, 응답 분석 시에 사용
    • 수동으로 수정한 HTTP 요청을 반복적으로 전송하며 서버의 응답을 확인할 때
    • 취약점 탐지 시, 특정 파라미터나 헤더를 변경하여 서버의 반응을 확인할 때
    • HTTP 요청을 수정하고 재전송 가능, 응답 내용 실시간 확인 후 분석 가능
  • Sequencer : 웹 응용 프로그램에서 제공하는 세션 토큰의 임의성을 확인하기 위해 사용
    • 서버가 생성한 토큰, 쿠키 등 랜덤 데이터의 예측 가능성을 분석
    • 세션 관리에서 서버가 생성하는 토큰의 무작위성을 분석하고 예측 가능성이 있는지 확인할 때
    • CSRF 토큰이나 인증 쿠키와 같은 중요한 값이 예측 가능하거나 반복적인 패턴을 가지는지 검토할 때
    • 랜덤 데이터 수집 후 통계적으로 분석 또는 예측 가능성 평가하여 취약점 여부 판단
  • Decoder : 암호화된 데이터를 복호화, 또는 평문을 암호화하기 위해 사용
    • 인코딩 또는 디코딩된 데이터를 변환
    • 서버 응답에서 발견한 암호화된 데이터를 해석하거나 특정 값의 인코딩을 테스트할 경우
    • 페이로드를 인코딩/디코딩하여 악의적인 입력을 테스할 때
  • comparer : 두 개의 요청, 응답 또는 다른 형태의 데이터 비교를 수행하는 데 사용
    • 두 HTTP 요청/응답의 차이를 직관적으로 비교 가능
    • 동일한 요청에 대해 반환하는 응답의 미묘한 변화를 감지하여 취약점 탐지

OWASP ZAP (Zed Attack Proxy)

  • 무료 오픈 소스 도구로, 사용하기 쉬운 인터페이스를 제공
  • 다양한 자동화된 스캐닝 기능과 퍼징 도구를 포함하고 있습니다.
  • 기능 (실행 모드)
    • Safe Mode
      시스템에 영향 X, 프록시 기능에 충실한 모드
    • Protected Mode
      일부 공격에 대해서만 테스트, 구간에 위험한 액션에 대한 상황에 따라 시뮬레이팅 가능
    • Standard Mode
      대부분의 공격이나 변경사항 적용, 실제 공격과 유사한 조건에서 테스트 가능
    • ATTACK Mode
      해커의 시나리오 모방해 모든 취약점 확인
      DB 등에 입력 및 삭제를 진행하므로 실제 환경에서는 사용하지 않는 것 권장
  • Proxy 기능
    ZAP은 MITM(Man-in-the-Middle) 프록시로 작동하여 Client-Server 간의 트래픽을 가로채어 분석 가능
    • 웹 어플리케이션과 서버 간의 요청/응답을 수정 및 재전송이 가능하며, 모니터링 및 분석 가능
    • 트래픽 분석을 통해 XSS, SQL Injection등 취약점을 수동으로 탐지 가능
  • Spidering
    • 웹사이트의 페이지를 자동으로 크롤링하며 탐색 가능한 URL과 파라미터 수집
    • 웹 애플리케이션 내의 모든 링크, 폼, 스크립트 등을 자동으로 수집하여 취약점 테스트 범위를 확장할 때 유용
    • 웹 사이트 내의 페이지와 자원을 자동으로 탐색하고 파라미터를 수집
    • 탐색 결과를 바탕으로 취약점 탐지에 필요한 정보 제공
  • 포트 스캔 (Port Scanning)
    • 서버에서 열린 포트를 찾아 불필요하거나 위험한 포트 확인 가능
  • 수동 스캔
    • 웹 애플리케이션을 방해하지 않고 트래픽을 가로채거나 수정하지 않고 취약점 분석 시
    • HTTP 헤더, 쿠키 설정, 서버 응답 등 점검할 때 사용됨
  • 자동 스캔
    • 웹 애플리케이션에 실제로 악의적인 요청을 보내 취약점 탐지
    • 수집한 사이트를 대상으로 자동 웹 취약점 진단 수행
    • 다양한 공격 페이로드 주입 가능
    • 자동화된 방식으로 여러 페이로드 전송하여 보안 문제 탐지
  • Fuzzer
    • 다양한 데이터를 주입하여 비정상적인 입력 처리 취약점 탐지
    • 다양한 입력을 통해 애플리케이션이 예외 처리를 어떻게 하는지 테스트하고, 비정상적인 입력으로 발생할 수 있는 취약점 탐지
    • 공격 벡터를 자동으로 생성하고, 여러 요청에 다양한 페이로드 주입하여 애플리케이션 반응 확인
    • 무작위 데이터나 유효하지 않은 데이터를 통해 취약점 탐지
  • 세션 관리: 세션을 유지하며 테스트 진행.
    • 인증이 필요한 페이지에서 세션을 유지한 채 테스트 수행
    • 세션 탈취, 세션 고정 등의 취약점 탐지
  • 보고서 생성: 분석 결과를 문서로 생성

wfuzz

  • HTTP 요청을 기반으로 한 퍼징 도구로, 입력 데이터와 함께 다양한 페이로드를 사용하여 테스트를 수행
  • HTTP 응답을 분석하여 취약점을 식별
  • 칼리 리눅스에서 기본적으로 제공
    /usr/share/wordlists에 wordlists 저장
    Brute force attack 시, 사용됨
    • 옵션
      -c : 결과물을 읽기 쉽게 터미널 창에 색 구분
      -z , -w : 퍼징을 위한 payload가 담긴 경로
      -d : POST(GET) 방식을 통해 서버에 넘겨지는 데이터
      -u : 대상 애플리케이션 URL 주소
      -hc, hl, hw, hh : 특정 코드, 라인, 단어, 문자 등 숨긴 후 결과 제공
      -t : 동시 요청 수를 늘리거나 줄여서 공격 속도 조절
      -s : 다른 요청 수행 전 지정 시간동안 중지하도록 지시

1. URL Fuzzing
? 뒤에 FUZZ 키워드 작성
파라미터에 대한 입력 값 범위 지정 가능
2. POST Requests Fuzzing
HTML에서의 폼 형태의 데이터에 -d 옵션을 통해 퍼징
3. Cookie Fuzzing
-b 옵션을 통해 HTTP 요청에 쿠키를 설정하고 쿠키 값에 대해 퍼징
4. Custom headers Fuzzing
-H 옵션 이용하여 퍼징에 포함할 헤더 목록을 지정
5. Multiple Fields Fuzzing
여러 위치에 FUZZ 키워드를 배치하여 동시에 여러 필드 퍼징
6. Recursive Fuzzing
디렉토리 브루트포싱에서 특정 디렉토리를 발견한 경우, 해당 디렉토리에 대해 다시 퍼징하여 탐색 가능
7. Proxies
프록시 사용을 원하면 -p 옵션 사용

  • 강력한 페이로드 지원: 수천 개 이상의 페이로드(사전 공격, 무작위 페이로드 등)를 사용하여 HTTP 요청의 특정 위치에 주입 가능
  • 응답 분석: 서버 응답의 HTTP 상태 코드, 응답 크기, 헤더 등을 기준으로 필터링하고 분석
  • 플러그인: Burp Suite와 같은 도구와 통합 지원

Arachni

  • 다양한 스캐닝 기능을 갖춘 웹 애플리케이션 보안 스캐너
  • 윈도우, 리눅스, 맥 등 멀티플랫폼 지원

기능 분석

설치 후 로그인한 후의 대시보드 기준

  1. Scans 탭
    Scans - New : 신규 취약점 스캔
    Scans - Schedule : 새로운 스캔 실행, 실행/종료된 스캔 확인, 결과 레포트 확인
  2. Profiles 탭
    프로파일 상세내역 조회, 편집, 생성 작업
    Profiles - New : 새로운 프로파일 등록
    -> Scope : 세부적인 웹 크롤링 방법 세팅
    -> Audit : 세부적인 Fuzzing 방법 세팅
    -> Input : 입력 파라미터에 대한 샘플 세팅
    -> Fingerprinting : 핑거프린팅할 OS, DB, 웹 서비스 등의 플랫폼 세팅
    -> Checks : 점검할 Active, Passive 유형의 취약점 리스트 세팅
    -> Plugins : 점검 시 사용하는 부가기능 세팅
    -> Session : 세션 유효성 체크 방법 세팅
  3. Dispatchers 탭
    Scans 탭의 Advanced Option에서 사용하기 위한 Dispatcher를 등록/관리하는 메뉴
  • 다양한 취약점 탐지: SQL 인젝션, XSS, CSRF, 디렉토리 인덱싱, 파일 포함, 로컬/원격 파일 삽입, HTTP 응답 스플리팅 등의 취약점을 자동으로 탐지
  • 포괄적인 스캔: 웹사이트의 크롤링부터 시작하여 모든 파라미터를 조사하며 취약점 탐지
  • 퍼징 기능: 자동으로 웹 애플리케이션의 입력 필드에 페이로드를 주입해 다양한 공격을 시도하는 퍼징 기능 포함
  • 확장성: 플러그인 시스템을 통해 사용자 정의 기능이나 추가적인 공격을 구현
  • 배포 방식: 클라우드 기반 스캐너로도 제공되며, 명령줄 및 GUI 인터페이스를 제공
  • 웹 애플리케이션에 존재하는 여러 가지 취약점을 자동으로 스캔하고 포괄적인 보안 분석을 수행하고자 할 때
  • 취약점 발견 후 보고서를 자동 생성

Peach Fuzzer:

  • 강력한 퍼징 도구로, 다양한 프로토콜과 포맷을 지원
  • 데이터 모델링 언어를 사용하여 입력 데이터 정의
  • 파이썬 스크립트로 작성된 설정 파일을 기반으로 동작
  • .NET Framework : Windows 환경에서, 필요로 할 수 있음
  • Mono : Linux, MacOS에서 Mono 프레임워크 필요

사용법

# 기본 실행 명령어
peach MyFuzzingFile.xml
<!--네트워크 퍼징-->
<Publisher class="Tcp">
  <Param name="Host" value="127.0.0.1" />
  <Param name="Port" value="8080" />
</Publisher>
  • 프로토콜 퍼징: HTTP, FTP, SMTP, SNMP, SMB, WebSocket 등 다양한 프로토콜에 대한 퍼징 지원
  • 상태 기반 퍼징: 상태 머신을 통해 상태 변화를 추적하며 퍼징을 수행하는 방식
  • 파일 퍼징: 특정 파일 형식에 대한 퍼징을 통해 파일 파싱 로직의 취약점 탐지
  • 크래시 모니터링: 퍼징 과정 중에 시스템 충돌이 발생할 경우, 이를 자동으로 탐지하고 분석
  • 프로토콜 기반 시스템(네트워크 장치, IoT 디바이스 등)에서 예외 처리나 버그를 찾아내고자 할 때
  • 포맷이 복잡한 파일 형식(PDF, 이미지 파일 등)에서의 취약점 탐지를 위한 퍼징 작업

참고
https://mdin1.tistory.com/158
https://takudaddy.tistory.com/323
https://maker5587.tistory.com/54
https://ehdtn1219.tistory.com/3
https://jaeminsg.tistory.com/108
https://velog.io/@sunny888/Burp-Suite-간단-사용방법
https://ajdahrdl.tistory.com/19
https://these-dayss.tistory.com/105
https://blog.naver.com/6yujin6/221730518384?trackingCode=rss
https://mrrootable.tistory.com/88
https://codetronik.tistory.com/35
https://justforit.tistory.com/1

profile
Whatever I want | Interested in DFIR, Security, Infra, Cloud

0개의 댓글