最近,有蓝队在github放FofaHubKey.docx
钓鱼文件引诱红队人员下载打开,从而获取其出口ip,项目地址:https://github.com/fofahub/fofahubkey。微步已经给出报告,攻击者利用canarytokens网站生成的docx文件进行的钓鱼活动。有文章指出其使用的是OLE2Link对象技术
插入的链接,但是笔者经过分析,发现并不是,而是使用的IncludePicture 域
技术插入的链接,以下为笔者分析canarytokens生成能够追踪出口IP的docx文件原理过程,及实现在word上手工制作了一个具备相同功能的docx文件。
0x01 canarytokens网站生成docx文件
首先,进行canarytokens网站生成token页面,选择Microsoft Word Document
,第二行填写接收通知邮箱,第三行填写通知时的文本内容,然后生成就可以了。
https://canarytokens.com/generate
0x02 解压docx文件
docx文件本质就是压缩文件,所以可以改后缀名为.zip后利用解压软件解压缩。这里我直接使用unzip解压缩。
unzip xxxx.docx #解压docx文件
0x03 搜索相关链接字段
由于已经通过分析文章知道canarytokens生成的文件带有canarytokens网站的链接,所以直接可以在目录中搜索相关字段。由于笔者是在linux环境下测试的,所以使用了grep。通过检索,可以发现word目录下footer2.xml
和footer2.xml.rels
带有canarytokens的网站链接。
grep -Ri canarytokens *
0x04 OLE2Link简要分析
通过wiki和OLE2 File Extension文章的介绍,可以了解到OLE代表对象链接和嵌入,该格式允许文件包含链接或嵌入的对象。以下通过word实验来进行一次OLE2的嵌入。
在word中页脚处选择 插入-对象-由文件创建,选择一张图片插入。然后解压缩文件,查看刚刚插入图片的位置。
可以看到通关OLE插入的资源位于word/embeddings
文件夹,在word/_rels/footer2.xml.rels
文件中标注了其位置,且type指明了为oleObject
。所以可以得出基本结论,OLE插入的资源类型为oleObject
。但第三节中搜索canarytokens链接发现的type为image,很显然不是OLE对象。
0x05 INCLUDEPICTURE 域
通过观察第三节中的word/footer2.xml
发现,在canarytokens链接前有INCLUDEPICTURE
字样,搜索相关资料发现IncludePicture 域
的功能就是在域代码中插入指定的图形,这里有office官方文档-域代码:IncludePicture 域及博客文章。通过对打开钓鱼文档的流量分析,也发现canarytokens响应回的是一张GIF图片,所以基本可以得出结论,canarytokens docx文件使用INCLUDEPICTURE 域技术插入了一个远程链接,由于canarytokens网站在公网存在监听,所以能够记录出口IP与token,同时返回GIF图片。
0x06 制作带有INCLUDEPICTURE域的docx文件
对第5小节的知识点了解,就可以模仿canarytokens网站自己动手制作带有INCLUDEPICTURE域的docx文件,同时实现监听IP的功能。
在word页脚处选择 插入-文档部件-域中,选取IncludePicture,右侧填入监听的网站地址,这里笔者使用本地地址做测试。
保存文件时,word会提示安全声明,这里选择“是”即可。利用python -m http.server 80
开启一个web服务,然后打开刚刚制作好的docx文件,便发现docx文件会请求在INCLUDEPICTURE域中插入的链接。
解压缩刚刚制作的docx文件,定位插入的链接位置,即可发现链接与canarytokens docx文件中的基本一致,type为image,同时在2个文件中存在该链接,在链接前带有INCLUDEPICTURE
标志,即可证明canarytokens docx文件所使用的技术与刚刚制作docx文件的技术一致。
0x07 总结
通关以上实验及观察,canarytokens docx文件使用的是INCLUDEPICTURE 域
插入远程文件技术。INCLUDEPICTURE 域
插入远程链接仅可探测攻击者的出口IP地址,由于INCLUDEPICTURE 域
的功能便是插入指定图形,即使远程链接响应一个恶意文件给word,由于定义的type为image,估计word也很难解析执行,不构成威胁。
One comment
楼主可以介绍一下canarytokens xlsx的自建方式么?