본문 바로가기

System/Windows

System/Hacking/Fuzzing

반응형




퍼징
- 수많은 입력 값을 무작위로 대입하여 자동으로 취약점을 찾아내는 방법
  • Dumb 퍼징 
    • 파일 포맷을 분석하지 않은 상태에서 무작위로 값을 변형하는 방식
  • Smart 퍼징
    •  파일 포맷을 분석한 뒤에 포맷에 맞추어 변형하는 방식
  • 환경변수 퍼징
  • 커맨드라인 퍼징
  • 레지스트리 퍼징
  • 드라이버 퍼징
  • 네트워크 퍼징
퍼징의 작동 원리
- 입력값 생성 > 실행 및 감시 > 크래시 분류

Dumb 퍼징
- 가장 기본적인 퍼징 형태
- 샘플 파일의 일부를 변형하여 파일을 실행.
  • MiniFuzz
- 프로그램을 전혀 이해하지 못한 상태로 진행되므로 코드 커버리지 측면에서 취약

Smart 퍼징
- 파일포맷을 완전히 이해한 상태에서 수행하는 퍼징
- 파일의 포맷을 분석하여 포맷에 맞춰 변형한 디에 생성
  • 구현 난이도 업
  • Peach Fuzzer, beStorm, 

# Peach Fuzzer 설정 가이드
  • Pit파일이라는 xml 파일 필요
    • 내부 퍼징을 위한 설정값들

# Pit Modeling
- Data Model
  • 데이터 포맷 정의
  • 입력할 데이터 및 변형할 부분 지정

- State Model
  • 퍼징을 하기위한 수행 동작 정의
  • Action 태그로 동작 지정
- Agent
  • 퍼징대상 프로그램과 디버거에 대한 옵션 지정
    • WinDBG 폴더 지정
    • 퍼징 대상 경로 지정
- Test
  • 퍼징 테스트에 대한 설정 값 지정

# Pit 파일 설정 테스트
- peach -t [파일이름]
- PeachValidator로 검증가능

# peach 실행
- peach.exe [PIT file] [테스트네임]

# 결과 확인
- 동일한 번호 두개씩있는 이유 : 정확성을 위해 재현 과정을 거침
- Faults 폴더 확인
  • ExPLOITABLE_*
    • !exploitable 모듈을 이용해 크래시가 Exploit이 가능한지 여부를 어느정도 분석
    • 하위 폴더에 존재하는 descriptio.txt 파일 >> !exploitable 명령 수행후 결과 판단.


파일 퍼저 구현
- PyDBG를 이용한 파일 퍼저 구현
- 기능구현 요구목록
  • 설정 및 초기화
  • 샘플 파일 선택
  • 파일 변형
  • 프로세스 모니터링
  • 크래시 발생시 처리 핸드러
  • 프로그램 실행
  • 파일 삭제 및 메모리 정리
  • 보고서 생성
  • 퍼징 수행



반응형