본문 바로가기

Fuzzing

(3)
AFL++ 동작 원리 - 3 DictionariesAFL은 계측 피드백을 활용하여 입력 파일의 문법 토큰을 자동으로 선택하고, 이 토큰들이 유효한 구문을 이루는지 탐색하는 기능을 제공한다. 이는 AFL의 다양한 입력 파일 형식을 처리하는 데 중요한 역할을 하며, 특히 문법적으로 복잡한 언어와 같은 파일에서 큰 도움이 된다. 문법 토큰 자동 감지AFL은 입력 파일에서 기본적인 구문 토큰을 무작위로 조합하면서, 계측 피드백을 통해 의미 없는 변형과 새로운 동작을 유발하는 변형을 구분할 수 있다. 이러한 방식으로 AFL은 점진적으로 복잡한 문법 구조를 발견하고, 이를 기반으로 퍼징을 진행한다. 사전의 활용사전은 프리디파인(predefined)된 토큰이나 자동 감지(auto-detected)된 문법 요소를 이용해 퍼징 성능을 향상하는 도구..
AFL++ 동작 원리 - 2 Evolving the input queueAFL은 새로운 상태 전환을 유도한 변형 테스트 케이스를 입력 큐에 추가하고, 이를 미래 퍼징 라운드의 시작점으로 활용한다. 이 테스트 케이스는 기존에 발견된 것들을 보완하지만, 자동으로 대체하지는 않는다. AFL의 이러한 접근 방식은 더 탐욕적인 유전 알고리즘과는 달리, 도구가 다양한 비연관적이고 상호 배타적인 특성을 점진적으로 탐색할 수 있게 해 준다. 이는 다음과 같은 방식으로 진행된다. 이 과정에서 생성되는 합성 코퍼스(synthetic corpus)는 "이 입력은 새로운 작업을 수행한다!"는 인사이트를 제공하는 입력 파일의 집합으로, 향후 다른 테스트 프로세스의 시드(seed)로 사용할 수 있다. 예를 들어, 리소스 집약적인 데스크톱 앱을 수동으로 st..
AFL++ 동작 원리 - 1 Design statementAmerican Fuzzy Lop(AFL)은 퍼저 도구로서, 특정한 이론이나 원칙에 얽매이지 않고 매우 실용적인 방법으로 설계되었다. 대부분의 퍼저 도구가 원리에 기반을 두거나, 개념 증명(proof-of-concept) 도구로 기능하는 반면, AFL은 그러한 틀에서 벗어나 다양한 해킹 기법들을 모은 하나의 컬렉션이라고 할 수 있다. 실제로 테스트를 통해 효과가 입증된 기법만을 사용하여 만들어졌다. AFL의 여러 기능은 경량화된 계측(instrumentation) 덕분에 가능해졌다. 이 계측은 프로그램을 실행하는 동안 발생하는 동작을 모니터링하고 분석하는 중요한 역할을 한다. 그러나 AFL에서 이러한 계측 기술은 목표를 달성하기 위한 하나의 수단일 뿐이다. 다시 말해, AFL..