红队攻击样本之利用宏代码窃取Slack软件的用户信息
本帖最后由 Hades-52pojie 于 2021-4-15 17:25 编辑背景:
在对境外威胁情报追踪的过程中,我们发现了一个,比较有意思的企业内部的攻击宏代码,为什么说该攻击代码有意思呢,主要是因为该宏代码有于其它宏攻击,其它宏攻击主要以宏为载体,控制EIP权力后,移交给木马,该宏代码的目的也仅仅是需要窃取目标账户的权限令牌,以及cookie信息,也就是说如果目的够明确,可以仅仅通过宏代码去实现恶意行为,这样做的好处是显而易见的,因为目前的检测宏代码恶意行为的主要精力放在,内存执行,进程创建,进程注入上。如果仅仅是特定目的,也未尝不可以使用宏代码构建攻击。
代码流程图:
恶意样本:
恶意样本采用宏攻击的模式,在文档标题中让受害者启用宏已解密被加密的文档,可以看到内容确实被Base64编码了。
通过定义Document_open()函数入口,在宏文档打开时会触发该函数的代码。
该恶意代码首先禁用了函数中的异常报告,随即判断了电脑的操作系统,是否为Mac系统,并弹窗警告已经访问内部的统计器(推测)。
可以看到弹窗的提示,以及通过ActiveDocument对象的FollowHyperlink方法访问公司内部的jira。
由于上述代码在Win环境下不会触发,我们也在Mac上测试了该代码的作用。
在Win系统上则会仅一步窃取Slack通讯软件的用户令牌以及Cookie信息,通过VBA内置Environ$变量获得用户的环境变量,并将其与Slack软件存储令牌与Cookie的路径进行拼接得到完整路径。
随后通过Dir函数,遍历找到存储有.ldb后缀的令牌文件。
找到该文件后调用FindToken函数,该函数内部调用了ReadFile函数以及ExtractRegex函数。
ReadFile函数内部比较简单,就是打开指定文件并返回该文件的数据。
ExtractRegex函数内部,通过设置RegExp对象属性,并调用Execute方法进行正则匹配获取指定的数据并返回(令牌数据)。
我们可以看到它的正则是"(" & TEAM & ")(.+)(token"":"")(+)"。
获取了令牌信息后,通过StealCookie函数窃取Slack软件的Cookie信息。
我们看到StealCookie函数内部与FindToken函数一致通过ReadFile函数读取文件,然后通过ExtractRegex函数进行正则匹配,匹配的规则是"(slack.comd)(+)/"。
在完成窃取后接着调用了GetChannelId函数。
GetChannelId函数内部首先通过字符串拼接,将获取的用户令牌以及CooKie信息拼接成完整的URL。
然后根据传入字符串是self,进行不同的拼接模式,并调用XmlHttpRequest方法。
XmlHttpRequest方法通过CreateObject函数获得了WinHttp.WinHttpRequest对象,并返回网页的相关代码。
在回到GetChannelId函数,将网页返回的代码使用ExtractRegex函数进行正则匹配获得用户的ID信息,正则规则为:"(""user_id"":"")(+)("")"。
完成窃取用户ID后调用SendMessage函数。
SendMessage函数内部调用了URLEncode函数将提示语进行编码并拼接到URL中,根据URL信息可以看出是Jira的API,随后通过XmlHttpRequest方法将窃取的用户信息上传。(令牌,Cookie,用户ID,自定义的提示语)。
URLEncode函数将传入的字符串进行编码,以避免URL传输中的问题。
将字符串SLACKBOT_MESSAGE进行编码。
将字符串SELF_MESSAGE进行编码。
该宏代码分别窃取了2种格式的用户ID,并进行上传。
结束语:
随着网络安全的对抗越发的升级的趋势,近些年已经多次出现了,使用单语言实现的特定目的的木马,这些功能简单木马大多通过VBA,VBS,PowerShell等语言实现,目前由于部分公司的业务无法剥离宏或者是一些脚本的执行权力,使得无法通过禁用脚本或是宏的目的来避免受到攻击,这就要求安全软件能够精准识别恶意的代码和正常的业务代码,而目前安全软件监管脚本语言的方式大多以字符串匹配为主,而重点字符串全部集中在内存执行以及创建进程,进程注入上,就使得该类型的简单木马,往往能够突防安全软件,因为该类型的窃密木马仅仅是访问了url和一些文件并无任何高危操作,也难于将其与普通业务代码进行区分。
IOC:
String:
"\AppData\Roaming\Slack\Local Storage\leveldb\"
"\AppData\Roaming\Slack\Cookies"
"*.ldb"
"self"
"USLACKBOT"
"(" & TEAM & ")(.+)(token"":"")(+)"
"(slack.comd)(+)/"
"(""user_id"":"")(+)("")"
"(""id"":"")(+)("")"
Hash256:
834a5d0e7c23bc76a5336f262eb93477d48069a06a50bca0582b7f76467e78ce Hades-52pojie 发表于 2021-4-12 18:33
从word里面贴图,太痛苦了,我在调整
怪不得,辛苦了,最好比直接粘贴进去,点发帖框右侧的纯文本模式粘贴,再贴图进去这样会好看很多,word直接粘贴会有一堆问题。 Hmily 发表于 2021-4-13 14:38
@Hades-52pojie 剩下的图不需要吗?另外我帮你编辑了下主题,去掉了word里带的不兼容代码。
我看了下,差不多了,谢谢版主 昨天捕获一个直接打包AppData目录上传的样本 @Hades-52pojie 怎么尾部还有好多图片没有插入,是不是丢了? Hmily 发表于 2021-4-12 18:29
@Hades-52pojie 怎么尾部还有好多图片没有插入,是不是丢了?
从word里面贴图,太痛苦了,我在调整 感谢卤煮!学无止境{:301_997:} 膜拜大佬 膜拜大佬。 学到了学到了 @Hades-52pojie 剩下的图不需要吗?另外我帮你编辑了下主题,去掉了word里带的不兼容代码。
页:
[1]
2