퍼징(Fuzzing)/Fuzzing 이론 3

AFL & ASAN 동작 원리 및 fork

AFL 퍼저는 이전에 설명했듯 Instrumentation-guided genetic 알고리즘을 사용하여 테스트 케이스를 생성하고, 변이하는 방식으로 동작함. Brute Force로 입력을 받으면서 커버리지를 넓히고, 프로그램 제어 흐름에 대한 변경사항을 기록하며, 고유 크래시를 발견한다. AFL 특징- 커버리지 기반 퍼저이기 때문에 매우 효율적인 퍼징이 가능함 - 코드 커버리지 측정을 위한 코드를 컴파일 타임에 삽입 - QEMU를 이용하여 컴파일 타임이 아닌, 런타임시에 코드(어떤 부분이 실행됐고, 어떤 부분에서 실행이 안됐는지를 측정) 삽입도 가능함 -> 코드 삽입을 어디에, 언제 할 것인가가 중요.  AFL 동작 과정1. 프로그램 실행 시작 - AFL이 퍼징할 프로그램을 실행함. 2. fork se..

AFL Fuzzer 관점에서 바라본 Instrumentation-guided genetic algorithm(계측 기반 유전 알고리즘)

AFL 퍼저는 Instrumentation-guided genetic 알고리즘을 사용하여 테스트 케이스를 생성하고, 변이하는 방식으로 동작.Instrumentation-guided genetic algorithm - 계측 기반 유전 알고리즘  Instrumentation-GuidedAFL은 타겟 프로그램을 실행할 때 Instrumentation 기법을 사용하여 코드 커버리지를 추적함. 컴파일 시점에 삽입된 게측 코드 (QEMU(리눅스 커널 구동하는 가상머신)와 같은 동적 바이너리 Instrumentation 기법)을 활용하여 실행 흐름을 모니터링. 이를 통해 어떤 입력이 새로운 코드 경로를 트리거 했는지 알 수 있으며, 효과적인 변이가 가능함 Genetic AlgorithmAFL 특성상 기존의 퍼징 방식..

System vuln research(시스템/소스코드 취약점 분석 방법) - Whitebox Testing, Blackbox Testing, Graybox Testing

소스코드 취약점 분석 방법White Box Testing프로그램 내부 구조의 타당성 여부를 테스트하는 방식. 내부 구조의 해석을 위해 프로그램의 모든 처리 루틴에 대해 시험하는 기본 사항. 가끔 발생하는 조건도 고려하여 처리 루틴을 검증하기 위한 시험 데이터를 작성하여 시험을 실시. 예를 들어, 덧셈의 기능을 하는 코드인 경우, 덧셈이 올바르게 완료 되었는가? 불필요한 단계는 없는가? 음수 혹은 큰 값과 같은 다양한 유형의 입력을 잘 처리하는가? 와 같은 문제를 처리할 수 있음. 백그라운드 코드가 깨끗하고 효율적이며, 예상대로 작동하는지 확인 -> 소스 코드를 살펴 봄으로써 코드 상의 취약점이 있는지 탐색. 장점 - 프로그램 내부 작업에 대한 철저한 가시성 제공. - 개발 프로세스 초기에 숨겨진 버그와 ..