project/Vulnerability analysis / / 2016. 5. 5. 01:18

Source code auditing / Reverse engineering / Fuzzing

Source code auditing / Reverse engineering / fuzzing 들은 대표적인 취약점 분석 방법 들이다. 


하나하나 간단히 알아보자



Source code auditing  이란  말 그대로 소스 코드를 직접보며 취약점을 찾는 것이다. 대부분의 개발자들이 프로그램을 개발 한 후 코드를 확인하며 취약점을 체크하는 방법이 소스코드 오디팅이며, 해커입장에서는 리얼월드에서 소스코드를 얻기 힘들어서 (오픈 소스인 경우 제외) 대부분 쓰이지 않는다. 분석하는 프로그램이 오픈소스라면 소스코드 오디팅을 자주 사용한다.


Reverse engineering은 바이너리를 디컴파일러, 디셈블러, 디버거 등으로 바이너리 자체를 분석하는 방법이다. 소스코드 오디팅보다 상대적으로 분석하기 까다로우며 분석자의 실력에 따라 속도차이가 확연히 나는 방법이다.



Fuzzing 이란 user input을 받는 곳에 무작위 또는 의미있는 문자열 혹은 패턴들을 마구 집어넣어, 크래쉬가 나는지 안나는지 체크하며 크래쉬가 난다면 어느 부분에서 어떤식으로 취약점이 발생하는지 쉽게 찾아내는 것을 의미한다.


요 근래에 있어서 각종 대회문제나 실전 버그헌팅에서 취약점 자동화가 인기를 끌며 없어서는 안될 존재가 되었다.


퍼징은 퍼징 대상 바이너리를 모르고 무작위로 유저 인풋값을 넣는 덤프퍼징이란 방법과 퍼징 대상 바이너리를 분석하고, 이해하여 적절한 곳에 적절한 값을 넣어주며 반응을 보는 스마트퍼징 으로 나뉘게 된다.


그리고 퍼징 데이터를 새롭게 만들어주어 대입 하는것이 제너레이션 퍼징, 이미 있는 데이터를 조금씩씩 수정하는 것이 뮤테이션 퍼징이라 불린다


퍼징으로 크래시난 파일을 얻게 되었다면 IDApython + pintool등 각종 디버거, 툴들로 분석을 하여 익스플로잇을 성공시키자.


+크래시중 공격이 불가능한 크래시도 많이 보이지만, 크래시 중 불 필요한 크래시는 없다고 한다.



R. http://test_r.blog.me/220172943683

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유