Try Attack/Symbolic Execution

[연구] 바이너리 취약점 탐지 및 공격코드 생성[1]

D4tai1 2019. 8. 18.

제목을 조금 풀어서 설명하면...

 

주제 : 소프트웨어의 crash를 분석해서 자동으로 공격코드를 생성하는 솔루션 제작

 

소프트웨어의 취약점을 점검해주는 프로그램을 만든다고 생각해도 됩니다.

 

crash를 분석한다는 의미는 취약할 가능성이 있는 곳을 탐지한다는 말이지만,

 

crash가 발생했다고 해서 모두 취약한 것은 아닙니다.

 

그래서 페이로드를 넣고

 

취약할 가능성이 있는 부분에 대한 익스플로잇 만드는 과정을 자동화합니다.

 

만들어진 익스플로잇을 실제로 넣어보고 공격에 성공했다면

 

취약할 가능성이 있는 부분은 취약점이 됩니다.

 

이 후 취약한 부분에 대한 자동패치를 진행합니다.

 

바이너리코드는 역함수가 없기 때문에 어떨지 모르겠지만

 

IDA Pro의 디컴파일 기능에서 사용하는 휴리스틱을 이용하면 

 

가능성이 zero는 아니지 않을까? 라는 생각을 합니다.

 

결국 해야할 일을 요약해보면?

 

  • 1) 소프트웨어의 crash 발생부분을 찾습니다.
  • 2) 익스플로잇을 자동으로 생성하기위해 익스플로잇의 제약조건을 설계합니다.
  • 3) 생성된 익스플로잇으로 공격을 합니다.
  • 4) 공격이 성공적으로 되었다면 취약한 부분에 대한 자동패치를 진행합니다.

짧은 한 문장 밖에 되지 않지만 그 문장을 구현하기 위해서는 생각보다 많은 기술이 들어갑니다.

 

댓글