리버스 엔지니어링/악성코드 분석

한글 악성코드 분석

뿔맨 2018. 7. 17. 23:14
반응형

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


이번 글은 악성코드 이며 한글 취약점을 이용한 한국을 겨냥한 악성코드 입니다.

취약점 분석은 추후에 다룰 예정이며, 본문에서는 악성코드 분석만 기재를 하였습니다.


목차

- 개요

- 악성코드 동작방식

- 상세분석

- 마치며


개요


실제 악성코드 파일명은 "우려되는 대한민국.hwp" 이다.


'최순실 게이트' 관련하여 한국을 겨냥한 악성코드이며, sort.exe 프로세스를 생성 후 특정 쉘코드를 인젝션 시키며 정보유출을 하는 것으로 추정됨.

2016. 11. 05일 언론보도가 나왔으며, hwp파일을 실행하면 악성코드가 실행된다.


아래 표는 분석환경 및 사용한 툴 이다.

 환경구성

 Windows 7 32bit Service Pack 1

 Hwp 8.0.0.466

 분석 Tool

 Immunity Debugger

 Process Explorer

 Process Monitor 

 HWPScan2


악성코드 동작방식

아래 그림은 한글 문서파일 본문의 일부 내용이다.

스크롤을 내리면 특정 부분에서 잠시 멈춤현상이 발생하며 악성코드가 실행이 된다.


아래 그림은 악성코드가 실행된 그림이다.

위 그림을 보면 sort.exe 라는 프로그램이 추가적으로 생성된 것을 볼 수 있다.


아래 그림은 멈춤현상이 발생한 부분이다.

그림에 악성코드를 삽입한 것으로 스크롤을 내릴 시 멈춤현상이 발생한다.


상세분석

gbb.exe 와 gswin32c.exe를 통해서 각각 sort.exe를 실행한다는 것을 알 수 있다.


gbb.exe의 커맨드 이다.

특정 eps파일을 gbb.exe에 인자값으로 실행되는 것으로 확인되며, tmp파일은 옵션으로 추정된다.

eps파일이란 encapsulated postscript file 의 약자로 포스트스크립트를 압축한 상태를 말한다.


아래 그림은 gswin32.exe (고스트 스크립트)의 커맨드 이다.

gsaA40E.tmp 파일을 실행시키는 것으로 추정된다.


아래 그림은 gsaA40E.tmp파일의 내용이다.

eps 파일을 gsaA40E.tmp 파일에 덮어씌우는 것으로 추정되며, 최종적으로 gswin32c.exe는 eps파일을 실행시키는 것으로 확인된다.


아래 그림은 HWPScan 툴을 사용해서 eps를 확인한 결과이다.

nop 슬라이드 기법을 사용하고 있다.


특정 쉘코드가 삽입 되어있고,


마지막으로 Heap 스프레이 기법을 사용하는 것을 확인하였다.

HWPScan 에서 취약점 검사를 확인한 결과 아래 그림과 같이 cve 취약점이 확인되었다.

본격적으로 Immunity Debugger를 사용하여 쉘코드를 분석을 해보았다.


처음 도입부분에 XOR연산을 하며 복호화를 진행한다.


위와 같이 XOR 연산을 진행하며 복호화를 진행한다.


복호화 완료시 위와 같이 코드들이 배치가된다.

특정 함수에서 iconv.db 라는 파일을 불러오며 프로세스를 검사하게 된다.


아래 그림은 iconv.db 관련된 부분이다.

CreateFileA 함수를 사용해서 iconv.db 파일을 불러오며

분기문에서 파일 유무를 확인한다. 파일이 존재할 시 특정 프로세스가 존재하는지 검사를 하고 검출이 될 시 프로세스를 종료한다.


아래 그림은 특정 프로세스를 검사하는 루틴이다.


아래 그림은 sort.exe 프로세스 생성하는 부분이다.


아래 그림은 sort.exe 에 코드인젝션을 수행하는 부분이다.

버퍼 값을 보면은 e8로 시작되는 것을 볼 수 있다.

e8은 call 함수이므로 쉘코드로 추정된다.


아래 그림은 sort.exe 쉘코드 부분이다.

동일하게 XOR 복호화를 진행하며 복호화가 완료가 되면 레지스터에 특정 문자열이 확인이 된다.


아래 그림은 특정 문자열 값이다.

특정 주소 값으로 확인이된다.


아래 그림은 위 문자열의 복호화 루틴이다.

복호화 진행이 완료가 되면 위와 같이 특정 Url이 확인이 된다.


계속 진행하게되면 Url에 접속을 하기위해 wininet.dll을 가져온다.



Url에 접속을 하기위해 Internet 관련 함수들을 불러오고 call을 하게되는데, 현재 해당 Url이 닫혀있어 접속을 못하면서 무한Running 상태에 빠지게 된다.


마치며

글이 길어지면서 중간에 복잡하게 적은거 같습니다.

아직 초기라서 많이 부족합니다. 많은 피드백 받고있습니다.

반응형

'리버스 엔지니어링 > 악성코드 분석' 카테고리의 다른 글

Smoke Loader 상세분석  (6) 2019.05.08
GandCrab 4.1.2 분석  (0) 2018.08.05