社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 635阅读
  • 3回复

[分享]红队攻击样本之利用宏代码窃取Slack软件的用户信息

楼层直达
z3960 
级别: 茶馆馆主
发帖
770593
飞翔币
207694
威望
215657
飞扬币
2511651
信誉值
8

背景:  
  在对境外威胁情报追踪的过程中,我们发现了一个,比较有意思的企业内部的攻击宏代码,为什么说该攻击代码有意思呢,主要是因为该宏代码有于其它宏攻击,其它宏攻击主要以宏为载体,控制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"":"")([0-9a-zA-Z-]+)"。
  获取了令牌信息后,通过StealCookie函数窃取Slack软件的Cookie信息。
  我们看到StealCookie函数内部与FindToken函数一致通过ReadFile函数读取文件,然后通过ExtractRegex函数进行正则匹配,匹配的规则是"(slack.comd)([a-zA-Z0-9%]+)/"。
  在完成窃取后接着调用了GetChannelId函数。
  GetChannelId函数内部首先通过字符串拼接,将获取的用户令牌以及CooKie信息拼接成完整的URL。
  然后根据传入字符串是self,进行不同的拼接模式,并调用XmlHttpRequest方法。
  XmlHttpRequest方法通过CreateObject函数获得了WinHttp.WinHttpRequest对象,并返回网页的相关代码。
  在回到GetChannelId函数,将网页返回的代码使用ExtractRegex函数进行正则匹配获得用户的ID信息,正则规则为:"(""user_id"":"")([a-zA-Z0-9-+@.]+)("")"。
  完成窃取用户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:
"AppDataRoamingSlackLocal Storageleveldb"
"AppDataRoamingSlackCookies"
"*.ldb"
"self"
"USLACKBOT"
"(" & TEAM & ")(.+)(token"":"")([0-9a-zA-Z-]+)"
"(slack.comd)([a-zA-Z0-9%]+)/"
"(""user_id"":"")([a-zA-Z0-9-+@.]+)("")"
"(""id"":"")([a-zA-Z0-9]+)("")"
Hash256:
834a5d0e7c23bc76a5336f262eb93477d48069a06a50bca0582b7f76467e78ce


image.png (97.46 KB, 下载次数: )


image.png (97.46 KB, 下载次数: )


image.png (29.24 KB, 下载次数: )


image.png (87.09 KB, 下载次数: )


image.png (16.94 KB, 下载次数: )


image.png (27.94 KB, 下载次数: )


image.png (35.7 KB, 下载次数: )


image.png (25.79 KB, 下载次数: )


image.png (40.16 KB, 下载次数: )


image.png (40.16 KB, 下载次数: )


image.png (40.16 KB, 下载次数: )


image.png (87.09 KB, 下载次数: 0)

9

image.png (57.8 KB, 下载次数: )


image.png (41.66 KB, 下载次数: )

本帖最近评分记录: 1 条评分 飞扬币 +50
爱我中华 飞扬币 +50 2021-04-13 社区因为有您的参与更精彩!
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 茶馆馆主
发帖
563845
飞翔币
199303
威望
3696
飞扬币
2869959
信誉值
0

只看该作者 1 发表于: 2021-04-13
多谢分享
级别: 超级版主
发帖
837629
飞翔币
228834
威望
224673
飞扬币
2467894
信誉值
0

只看该作者 2 发表于: 2021-04-13
来看一下
级别: 超级版主
发帖
837629
飞翔币
228834
威望
224673
飞扬币
2467894
信誉值
0

只看该作者 3 发表于: 2021-04-13
不错,了解了