뉴비에욤

0x3 Python Tutorials - Fuzzer 본문

primalsecurity.net/Python Tutorials

0x3 Python Tutorials - Fuzzer

초보에욤 2015. 9. 8. 00:24

* PC 환경에서 사진이 잘릴 경우 해당 사진을 클릭하면 원본 크기로 보여집니다.

 

 

이번 포스팅에서는 파이썬을 이용하여 커스텀 fuzzer(이하 퍼져) 스크립트를 작성하는 것을 보여줄 것이다. 익스플로잇을 연구하고 작성할 때에 스크립트 언어를 이용하여 애플리케이션 크래시를 유발하는 다양한 종류의 데이터를 입력하는 것은 좋은 방법이다. 파이썬은 반복적으로 목표 서비스에 연결하고 다양한 종류의 데이터를 입력하는데 있어서 굉장히 유용하게 사용될 수 있다.

 

우선 애플리케이션이 어떻게 유저로부터 입력된 데이터를 핸들링(처리)하는지 알아야 한다. 당신이 목표 서비스에 전송할 데이터의 종류를 결정하고 나면, 다양한 입력 데이터를 서비스에 입력하기 시작해야 한다. 기본적인 아이디어는 대상 서비스에 연결하고, 버퍼(데이터가 저장되는 곳)를 송신하고, 버퍼 사이즈(데이터의 양)을 늘리고, 다시 대상 서비스에 연결하는 식으로 계속 반복하는 것이다. 이런 행위는 "while" 반복문을 통해 수행될 수 있고, "while True" 조건을 이용하여 우리가 원하는 예외 처리가 실행될 때 까지 계속 반복해야 한다.

 

아래 사진은 퍼져의 기본적인 코드이다.

 

 

위 사진의 코드는 다양한 종류의 서비스에 사용될 수 있다. 당신은 퍼징을 수행할 서비스의 종류에 따라 다양한 스크립트를 작성할 수 있다. 아래 사진의 코드는 "USER" 명령어를 기본으로 하여 특정 FTP 서버를 퍼징하기 위한 스크립트의 예제 코드이다.

 

위에서 보여진 사진들은 퍼져 스크립트의 기본적인 형태이다. 퍼징 대상에 따라 "\x41"를 전송하는 것이 크래시를 유발하지 않을 수 있다는 것에 주의해야 한다. 경우에 따라서는 크래시를 유발하기 위해 다른 종류의 문자들을 입력해야 할 수도 있다. 좀 더 발전된 퍼징 툴은 "Spike" 라는 것이 존재한다. 이 툴은 목표 서비스의 크래시 유발을 위해 다양한 종류의 문자를 다양한 길이만큼 보낼 수 있다. FTP 버서 대신에 HTTP Request를 이용하는 파이썬 퍼져를 만드는 것을 연습하길 바란다.

Comments