【逆向】HWP文档 分析调试技巧
前言
HWP(Hangul Word Processor)文件是韩国主流文字处理软件Hangul Office(한글)专用的文档格式,Hangul 是一款由韩软公司(Hansoft)开发,在韩国人人皆知,人人必备的一款Office软件。
恶意的 HWP 文档通常会使用以下两类利用方式:
1、宏代码
2、漏洞利用(CVE-2013-0808等)
Hangul Office软件与微软的Microsoft Office软件类似,也使用脚本语言(PostScript)处理文档中的宏内容。而PostScript脚本则以(ps 或 eps)后缀的文件保存在HWP文档中。
由于 HWP 文件本质上是OLE复合文件,所以EPS会作为复合文件流存储在HWP文件中,我们可以使用:oletools、StructuredStorage eXplorer、Structured Storage Viewer等工具查看和提取。
HWP文件中的大部分流都是经过zlibraw deflate压缩存储的,EPS流也不例外。如果遇到经过压缩的EPS流,可以使用如下Python代码解压缩:
# coding=utf-8 import os import sys import zlib if __name__ == '__main__': if 1 >= len(sys.argv): print("Err:输入待解压文件路径后重试") exit(1) data = '' with open(sys.argv[1], 'rb') as f: data = f.read() try: data = zlib.decompress(data, wbits=-15) except Exception as e: print(e.args) sys.exit(1) with open(r"decode.bin", 'wb') as f: f.write(data)
分析思路
思路一:静态分析
1、使用StructuredStorage eXplorer等工具查看和提取包含在HWP文件中的ps或eps文件。
2、如果提取的文件未经过混淆可以直接从postscript脚本中分析恶意操作。
解压后的ps脚本:
思路二:动态分析
安装HWP文件阅读器(hancom2014),然后通过火绒剑等监控工具对“Hwp.exe”及其子进程进行监控,动态查看执行的恶意操作(该方法同样适用于利用漏洞触发的HWP样本)。
打开 HWP 文档后执行内嵌的ps脚本,创建“gswin32c.exe”子进程执行恶意操作:
在explorer.exe进程中远程注入dll文件执行:
参考
http://blog.nsfocus.net/apt37-part1-0325/
https://www.freebuf.com/column/188848.html
示例样本:
3f92afe96b4cfd41f512166c691197b5
67096282bb6a1df5175e035623309b7e