본문 바로가기

보안, 해킹/_Fuzzing

Fuzzing

바이너리 파일에 대한 취약점 탐색, 분석 을 위해 사용되는 기법

 

일반적으로 구현되어있는 Fuzzer를 가져다가 사용하여 Fuzzing을 진행한다.

 

Fuzzing에는 white-box, gray-box, black-box 방식이 있다.

 

커버리지라는 개념을 사용한다.

이 커버리지와 상태 정보를 이용하여 입력값을 변형하여 다시 fuzzer에 입력하는 방식으로 진행된다.

 

기계어 수준에서 로깅하는 코드를 삽입하여 해당 코드들에 대한 정보를 저장하여 사용한다.

이를 통해 해당 코드에 대한 상태, 취약여부를 판단한다.

 

fuzzing의 상태 기록은 현재 CPU가 실행중인 코드에 대하여 Fuzzer에게 상태를 전달하도록 하기도 하며 white나 gray 처럼 어느정도 정보를 알고 있는 경우 알고 있는 코드의 시작과 끝에 삽입하는 방식으로 진행되기도 한다.

 

fuzzing은 위에 작성한 방법대로 이뤄지는 경우도 있으나 각 fuzzer와 방식에 따라서 차이점이 존재한다.