Go 语言项目图片中隐藏Shellcode

VSole2021-09-29 07:15:57

前言

最近在 Github 上发现一个有趣的项目:

https://github.com/Hangingsword/HouQing

该项目是用 Go 语言编写的免杀项目,可以将生成的 Shellcode 隐藏进图片中,然后让目标主机进行远程加载调用。

项目中有两个两个主要文件:

image-20210926172410513

•code.go:用于生成含有 Shellcode 的图片。

•Loader.go:用于远程加载图片里的 Shellcode。

实战演示

首先需要修改项目中 code.go 和 Loader.go 的源码:

image-20210921145406091

改一下两个 KEY 的值,需要同时修改并且两个问价中的数值相同。

然后使用 CobaltStrike 生成 Java 类型的 Shellcode:

image-20210921145546888

生成 payload.java,把里面的核心 Shellcode 取出来放入到 code.go 里:

image-20210921150226175

然后随便找一张 jpg 图片进行 Shellcode 的注入:

go run code.go shell.jpg

image-20210921150833041

然后将图片上传到未经压缩过的图床上:

image-20210921151024277

在 Loader.go 中写入图片 shell.jpg 的远程地址:

i

mage-20210921151142587

在本地执行以下命令测试:

go run Loader.go

image-20210921152640372

如上图所示,目标主机成功上线。

最后,我们执行以下命令,将加载器 Loader.go 编译成可执行文件:

go build -ldflags="-H windowsgui" Loader.go
// -ldflags="-H windowsgui" 防止弹窗

image-20210921153012573

在目标主机上执行 Loader.exe 即可上线:

image-20210921153314834

查杀测试

该图片 shell.png 在 virustotal 上的查杀率为 0/57:

image-20210921153927844

Loader.exe 在 virustotal 上的查杀率为 8/62:

image-20210921154445190

shell
本作品采用《CC 协议》,转载必须注明作者和本文链接
研究人员在TorchServe中发现多个高分漏洞,影响数万AI 服务器。
通过从事件日志中写入/读取 shellcode 来实现持久化。
shellcode loader的编写
2023-04-17 11:15:39
改变加载方式指针执行#include?参数1:分配的内存的起始地址,如果为NULL则由系统决定。参数2:分配的内存大小,以字节为单位。参数3:分配的内存类型,MEM_COMMIT表示将分配的内存立即提交给物理内存,MEM_RESERVE表示保留内存但不提交。参数4:分配的内存保护属性,PAGE_READWRITE可读可写,PAGE_EXECUTE_READ可执行可读。结构体的指针,用于指定新线程的安全属性,NULL表示默认安全属性
shellcode动态注入!
2023-01-24 10:15:10
声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大
跟第一代WebShell管理工具“菜刀”相比,冰蝎的流量是加密的,特征更不明显,能有效规避流量设备的检测。
shellcode编写探究
2022-06-09 15:34:57
前言shellcode是不依赖环境,放到任何地方都可以执行的机器码。shellcode的应用场景很多,本文不研究shellcode的具体应用,而只是研究编写一个shellcode需要掌握哪些知识。要使用字符串,需要使用字符数组。所以我们需要用到 LoadLibrary 和 GetProcAddress 这两个函数,来动态获取系统API的函数指针。
OneEDR 2.5版本让恶意Webshell“现原形”
今天脑子里面蹦出来个想法,免杀木马然后cs上线,本来想让cs与msf联动的,但是出了点小问题,还是先研究免杀火绒吧。
shell编程15例(三)
2022-03-25 07:43:19
1、统计当前 Linux 系统中可以登录计算机的账户有多少个 #!/bin/bash # 统计当前 Linux 系统中可以登录计算机的账户有多少个 #方法 1: grep "bash$" /etc/passwd | wc -l #方法 2: awk -f: '/bash$/{x++}end{print x}' /etc/passwd
shell编程15例(一)
2022-03-23 07:53:04
1、编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2、通过位置变量创建 Linux 系统账户及密码 #!/bin/bash # 通过位置变量创建 Linux 系统账户及密码
VSole
网络安全专家