리버스 엔지니어링/취약점 분석

x32dbg 를 이용한 CVE-2017-11882 분석

뿔맨 2018. 8. 26. 04:43
반응형
이번 분석 건은 CVE-2017-11882 분석입니다.
MS Office 프로그램 중 EQNEDT32 프로그램에서 취약점이 발견되었으며, 해당 프로그램은 수식 편집기 프로그램 입니다.
해당 프로그램을 IDA Pro로 확인결과 strcpy 취약한 명령어를 사용함을 확인 하였습니다.
아래 그림은 EQNEDT32.EXE의 strcpy 함수영역 입니다.


' strcpy = NULL 문자를 만나기 전까지 문자열 복사 ' 이며 이 뜻은 길이 검사를 하지 않으며 BOF 에 취약함을 뜻합니다.


취약점 분석은 한 번도 안 해 봤으며,  참고자료를 보면서 분석을 하였습니다.

본 작성자는 초급 분석가이며, 많은 피드백 환영합니다.


특정 그림파일이 삽입이 되어있으며, 확인결과 수식연산자를 사용 한 것으로 확인된다.

워드 파일을 실행시키면 EQNEDT32.EXE 프로그램을 실행시켜 mshta를 실행시키는 것을 확인하였다.

워드 파일이 의심스러워 메모장으로 열어보니 ' rtf ' 파일임을 확인하였다. 그리고 해당 파일 안에 특정 hex 값을 확인이 되었으며, text 로 변경하니 아래 그림과 같이 출력된다.

특정 url과 접속하는 것을 확인되며, Object와 Equation Native 가 확인된다.

EQNEDT32.EXE 프로그램은 Ms word가 실행 될 때 같이 실행되고 바로 종료되는 것을 확인하였다.
EQNEDT32.EXE를 디버깅 해 주는 프로그램을 찾다가 gflags 라는 프로그램을 찾게 되었다.
해당 프로그램은 Image와 디버거 프로그램을 설정하면 악성 프로그램을 실행 할 때 자동으로 잡아준다.
아래 그림과 같이 설정하면 된다. 


Debugger 란에 x32dbg full 경로를 적어주고 확인을 누른다.

악성프로그램 (sample.doc)을 실행시키면 gflags 에서 설정한 프로그램 EQNEDT32.EXE 을 잡아준다.

상세분석을 진행하다 위와 같은 함수를 찾았으며, 반복문을 돌면서 아래 그림의 스택부분과 같이 dummy code와 특정 url로 추정되는 문자열 특정코드에 덮어쓰는 것을 확인하였다.

dummy code는 BOF를 하기위함으로  추정되고 계속해서 상세분석을 진행하면 아래 그림과 같이 edi, edx에 특정 문자열이 출력되는 것을 확인하였다.
해당 그림의 mshta부터 winexec까지 총 48byte가 적혀있으며, strcpy의 버퍼는 총 40byte이다. 그러므로 overflow가 발생하는 것을 확인하였다.

무수히 많은 문자열 중 MT Extra 문자열을 확인하였으며, 해당 문자열에서 BOF가 실행되는 것을 확인하였다.
그리고 MT Extra는 Font로 확인된다.

00430C12는 WinExec를 가리키고 있으며, 특정 url을 실행시킨다.

마치며
취약점 분석은 처음 해봅니다. 많이 어렵네요.
많은 공부가 필요해 보입니다.
다음 포스팅은 cve-2017-11882 실습을 해보겠습니다.

감사합니다.

참고


반응형