이번 포스팅에서는 한컴 오피스 한글 문서 악성코드를 분석한다.
분석대상
MD5 | F2E936FF1977D123809D167A2A51CDEB |
sha256 | 5D9E5C7B1B71AF3C5F058F8521D383DBEE88C99EBE8D509EBC8AEB52D4B6267B |
파일 유형 | .hwp 파일 |
분석도구
이름 | 버전 |
hwpscan2 | 0.4 |
shellcode2exe.py | Remnux 6 |
IDA Pro | 6.8 |
x64dbg |
1. 개요
본 악성코드는 [그림 1]과 같이 2차 북미정상회담 관련 좌담회 초대장으로 위장한 형태로 유포되었다.
실행하면 문서 내 삽입된 EPS가 쉘코드를 실행, 프로세스 인젝션이 일어나며 악성 URL에 접속하게 된다.
한글 문서 악성코드는 거의 대부분이 EPS를 이용하여 악성행위를 수행한다. EPS(Encapsulated PostScript)는 그림 등 그래픽 요소를 출력하는 용도로 사용되는 어도비에서 개발한 프로그래밍 언어로서, 캡슐화된 형태로 개체 내 삽입이 가능하다. EPS를 이용하여 고화질 이미지를 표현하는 등의 기능을 수행할 수 있어 한컴오피스에서는 EPS를 사용하고 있으나 공격자들은 EPS의 취약점을 이용하여 악성행위를 수행한다.
스크립트 내 쉘코드 데이터를 선언하고, cvx exec 명령어를 통해 쉘코드 데이터를 실행 가능한 형태로 변경한 후 exec로 실행하는 패턴이 상당수를 차지한다.
2. 분석
2.1 구조 분석
한글 악성코드를 분석할 때는 hwpscan2라는 누리랩에서 만든 도구를 사용한다. hwpscan2는 파일 포맷 분석과 취약점 분석 기능을 제공한다.
[그림 2]는 hwpscan2로 열어본 파일의 구조다.
Bindata 디렉토리 밑에 BIN0003.eps라는 EPS 객체가 있는 것을 확인할 수 있다.
한글은 본문과 그림파일등 데이터를 zlib 알고리즘으로 압축하여 저장하는데, hwpscan2에서는 압축해제된 데이터도 자동으로 보여준다.
그림3은 압축해제된 EPS 스크립트다.
2.2 악성 PostScript 분석
xor로 인코딩된 데이터가 ar로 선언되어 있고, 100을 key로 하여 xor 디코딩한 데이터를 cvx exec 명령어로 실행한다.
디코딩하면 또 다른 postscript 스크립트(스크립트 2)가 나온다.
스크립트 2에는 쉘코드가 삽입되어 있다. 90(nop), e8(call) 등 opcode로 추정되는 데이터가 보이는 것으로 보아 추가적인 디코딩은 필요 없는 것으로 보인다.
2.3 쉘코드 분석
2.3.1 정적분석
쉘코드 페이로드를 바이너리 파일로 저장하고, 악성코드 분석 프레임워크인 Remnux의 shellcode2exe.py를 이용하여 실행 가능한 exe 파일로 만들어준다.
아래는 exe파일을 IDA Pro로 디컴파일 한 모습이다.
함수명도 하나도 보이지 않고, 분석이 거의 이루어지지 않았음을 알 수 있다.
빨간 사각형으로 표시한 구간을 보면, 반복적으로 특정 영역을 xor디코딩한다. 프로그램이 실행되면서 데이터가 언패킹되고 본래 코드가 실행되는 복잡한 구조를 가지고 있기 때문에 분석이 되지 않는 것이다.
따라서 정적분석은 불가능하고, 디버거와 샌드박스로 동적분석을 할 수밖에 없다.
2.3.2 동적분석
2.3.2.1 DLL 및 API 주소 탐색
악성코드는 PEB와 LDR 구조를 이용하여 Kernel32.dll 등 dll을 동적으로 찾아 API를 사용한다. (자세한 방법은 추후 포스팅하겠다.)
2.3.2.2 프로세스 생성(iexplorer.exe)
Cuckoo 샌드박스로 분석한 결과 위 코드는 internet explorer를 실행시키고 Internet Explorer를 실행하고, 악성 URL과 통신한다.
현재는 비활성화된 URL이다.
2.3.2.3 iexplorer.exe에 코드 인젝션
CreateRemoteThread, NtAllocateVirtualMemory, WriteProcessMemory API를 이용해서 코드 인젝션을 수행한다.
인젝션된 코드가 악성 URL 통신을 수행한다. 인젝션 된 코드에 대한 분석은 추후 추가하겠다.
'Information Security > Malware' 카테고리의 다른 글
WMI(Windows Management Instrumentation)를 이용한 공격기법 (2) | 2021.04.01 |
---|---|
실전에서 만난 Anti-Disassembly 기법과 해결(feat. GandCrab) (1) | 2021.03.24 |