『红蓝对抗』解密红队 LOLBins

admin 2022年4月19日01:25:44评论436 views字数 2856阅读9分31秒阅读模式

 ✦ 

点击蓝字

关注我们



日期:2022-04-18

作者:Zero

介绍:浅谈 LOLBins。



1、 前言

LOLBins 在国内不怎么常说,但是白利用这个词肯定是耳熟能详,LOLBins的全称是Living-Off-the-Land Binaries,直接翻译过来是“生活在陆地上的二进制”,这样还是有些模糊,但是诸如CertutilmsiexecBitsadminWindows Defender等文件下载的技巧肯定不会陌生,没错,这些程序都属于LOLBins 的范畴。

那可以自行总结下,需要具备哪些特点才能够称为LOLBins

  • 具备微软官方数字签名、第三方大公司的数字签名。

  • 具备对渗透活动有帮助的功能。

  • 可以做预期之外的事情。(执行代码、绕过系统限制)

互联网前辈的开源项目(LOLBAS、GTFOBins)对 Windows、Linux 平台下的LOLBins进行了标签化整理,可以很方便的查用,项目的预览如下:

『红蓝对抗』解密红队 LOLBins

如图可见,通过标签可以很方便的找到自己所需要的功能,虽然好用,但既然整理出来了,那这些程序也会是安全防护软件的重点关注对象。

以文件下载(Download)需求为例,常见的Certutil等程序已经被各路安全软件严防死守,这时如果拥有曝光度不高的文件下载方法就显得尤为重要,那么如何寻找文件下载方法呢?

为了寻找新的文件下载方法,当然是可以遍历系统中存在的所有可执行程序,对其进行手动或自动化的逆向分析,肯定会有所收获,但这太刻意了,要是有一种更容易上手,而且简单粗暴的方法,可以在电脑的日常使用过程中被动发现文件下载方法就好了!

本文抛砖引玉,提供一个思路切入点,这也是我在日常生活中无意发现的,独乐乐不如众乐乐。


2、 故事的开始

故事还要从一次与大佬朋友闲聊说起,朋友说弄到个远控主控端,但是做了使用限制,一机一程序,更换机器无法使用,便问我有没有兴趣看看,我一听,那我可太有兴趣了,得盘!

收到文件后,本打算先改革后缀以免不小心运行,然后再拖入虚拟机中分析,但是手欠直接点了双击,干了蠢事当然要自己善后,于是先对电脑进行了一遍检查,同时开启了火绒的联网控制,确认主控没有绑定后门之后便开始了分析过程,分析过程略,结果当然是顺利搞定,在这之后联网控制也一直没有关闭,于是偶然的一次联网提示弹窗引起了注意,弹窗如下图所示。

『红蓝对抗』解密红队 LOLBins

很普通的一个弹窗,本没有太在意,但是看到程序名中带有 Download 字样,再加上还有 Intel 公司的数字签名,好奇心让我想分析一下这个程序是不是可以作为文件下载技巧使用,再加上这是显卡驱动软件里的程序,装机量肯定是不小的,如果可以那岂不是白捡了个技巧。(PS:事后搜索才知道原来这早已被国外大佬发现)


3、分析过程

分析需要使用到一部分基础的逆向知识,首先定位到程序所在目录,将程序拷贝一份再进行食用(分析),这样以免误更改程序,给自己添麻烦,程序文件目录如下图所示:

『红蓝对抗』解密红队 LOLBins

主程序带有 Intel 公司的数字签名,如图所示:

『红蓝对抗』解密红队 LOLBins

对主角 GfxDownloadWrapper.exe 进行分析,首先需要看一下是什么语言编写的以及是否存在保护壳,然后才能使用相应的工具进行分析,这里使用DIE进行检测。

『红蓝对抗』解密红队 LOLBins

可以看到没有保护壳,是一个.NET 程序,并且没有保护壳,直接上dnSpy进行分析。

『红蓝对抗』解密红队 LOLBins

可以看到类名没有任何影响分析的混淆干扰,接下来定位到程序入口,分析代码。

『红蓝对抗』解密红队 LOLBins

代码也很干净,继续向下看,寻找与下载文件有关的代码,如下所示。

『红蓝对抗』解密红队 LOLBins

由于代码可读性非常好,很明显能够看出程序存在文件下载行为,通过webClient.DownloadFile()方法进行文件下载,看一下该方法的实现,以确定函数定义。

『红蓝对抗』解密红队 LOLBins

通过上面的代码,现在函数的定义能够确定如下:
public void DownloadFile(string address, string fileName)

再结合之前的关键代码。

string text2 = args[0];string text3 = args[1];
webClient.DownloadFile(text2, text3);

综上就能够确定命令行进行下载文件的方式。

GfxDownloadWrapper.exe URL FileName

4、结果验证

首先在新目录中创建一个 test.txt,内容为Hello World,之后使用 Python 开一个文件服务器。

# 创建目录mkdir democd demo
# 创建文件echo "Hello World!" > test.txttype test.txt
# 开启文件服务器python3 -m http.server

『红蓝对抗』解密红队 LOLBins

然后按照前面分析出来的命令调用方式进行测试。

# 前面分析出的文件下载命令行调用方式GfxDownloadWrapper.exe "http://127.0.0.1:8000/test.txt" "./test.txt"

如果执行成功,文件服务器会看到访问记录,并且当前目录下会出现test.txt,接下来执行测试一下。

『红蓝对抗』解密红队 LOLBins
如上图所示,已成功下载到文件,至此获得了一个文件下载技巧。

由于过程十分简单,推测已有前辈分析过此程序,互联网中搜索发现确实如此,在上文提到的开源项目中也有所记录:

『红蓝对抗』解密红队 LOLBins

但是,也仅仅是记录了Download功能,分析代码过程中看到有执行 DLL 中的函数相关代码,且 DLL 名称是通过参数传递,那这不就是一个代码执行功能吗?继续分析!


5、额外收获的代码执行功能

在上面的代码中,文件下载相关的代码上面还有一个分支,也就是程序入口最开始的那一块代码。

『红蓝对抗』解密红队 LOLBins

仔细阅读的话会发现那里是加载 DLL,并调用其中指定名称的方法,既然 DLL 可控,那岂不是可以用来加载自己的 DLL 用于执行代码,那只执行指定名称的方法怎么办?写个和它名字一样的方法不就行了!


// 方法定义public static void CacheCleanup(string args)
# 进行验证测试GfxDownloadWrapper.exe "run" "d:testmydll.dll" "2" ";AppDataLocalIntelGamesx"

进行测试验证,比如弹个消息框、弹个计算器。

『红蓝对抗』解密红队 LOLBins

有些小技巧往往是在日常工作生活中发现的,这类可能不需要很高深的技术,只是需要多一点点的观察。

6、 结语

生活不只有网络世界,多出去走走,可能会有新的发现。如果本文对您有帮助,来个关注、点赞、在看就是对我们莫大的鼓励!


免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

『红蓝对抗』解密红队 LOLBins

宸极实验室隶属山东九州信泰信息科技股份有限公司,致力于网络安全对抗技术研究,是山东省发改委认定的“网络安全对抗关键技术山东省工程实验室”。团队成员专注于 Web 安全、移动安全、红蓝对抗等领域,善于利用黑客视角发现和解决网络安全问题。

团队自成立以来,圆满完成了多次国家级、省部级重要网络安全保障和攻防演习活动,并积极参加各类网络安全竞赛,屡获殊荣。

对信息安全感兴趣的小伙伴欢迎加入宸极实验室,关注公众号,回复『招聘』,获取联系方式。


『红蓝对抗』解密红队 LOLBins

分享

『红蓝对抗』解密红队 LOLBins

收藏

『红蓝对抗』解密红队 LOLBins

点赞

『红蓝对抗』解密红队 LOLBins

在看


原文始发于微信公众号(宸极实验室):『红蓝对抗』解密红队 LOLBins

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日01:25:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『红蓝对抗』解密红队 LOLBinshttp://cn-sec.com/archives/926088.html

发表评论

匿名网友 填写信息