Fscan 是一款开源的安全扫描工具,它可以帮助安全研究人员发现网络中的潜在安全漏洞。关于魔改二开,这通常指的是对原软件进行修改和二次开发,以适应特定的需求或增加新的功能。以下是一些可能的魔改二开方向:1. **功能增强**: - 增加新的扫描模块,比如针
摘要:🔧 安全工具 | Fscan 魔改二开 · 特征消除与功能扩展 📌 原fscan项目地址:https:github.comshadow1ngf
🔧 安全工具 | Fscan 魔改二开 · 特征消除与功能扩展
📌 原fscan项目地址:https://github.com/shadow1ng/fscan
Fscan 是一款优秀的内网综合扫描工具,方便一键自动化、全方位漏扫扫描。在落地使用过程中,流量及文件不修改的情况下基本被检测查杀,针对这种情况,我们进行了一些基本的参数测试和特征去除,外加功能拓展。
📋 目录
一、环境准备
二、直接编译测试
三、特征字符串清除
四、编译层混淆(garble)
五、DLL 加载免杀
六、功能扩展 · 添加新插件
七、功能扩展 · 自定义 POC
八、效果汇总
一、环境准备
下载慢的可以配置国内加速镜像:
$env:GO111MODULE = "on"
$env:GOPROXY = "https://goproxy.cn,direct"
二、直接编译测试
先不做任何修改,直接编译测一下各杀软的检测情况,作为改造前的基准对照。
原版编译
go build -ldflags="-s -w" -trimpath main.go
加上系统信息的详细版:
$env:GOOS="windows"; $env:GOARCH="amd64"; go build -ldflags="-s -w" -trimpath main.go
无窗口模式(适合上线后台运行):
go build -ldflags="-s -w -H=windowsgui" -trimpath -o fscan_no_window.exe main.go
配合输出到文件:
.\fscan_no_window.exe -h 192.168.1.1/24 -o result.txt
⚠️ 测试结果:只改变编译模式,火绒直接杀了,说明单纯去符号表不够用。
三、特征字符串清除
原版二进制里包含大量明显特征,杀软直接按字符串匹配就能识别,需要逐一清除。
3.1 修改包名
第一步:改 go.mod
打开 go.mod,第一行是:
module github.com/shadow1ng/fscan
改成随便一个名字,比如:
module scanner/core
第二步:批量替换所有 import 路径
所有 .go 文件里的 github.com/shadow1ng/fscan 都要同步改,Windows 上用 PowerShell 批量替换:
Get-ChildItem -Recurse -Filter "*.go" | ForEach-Object {
(Get-Content $_.FullName) -replace 'github.com/shadow1ng/fscan', 'scanner/core' | Set-Content $_.FullName
}
第三步:改 Flag.go 里的版本号字符串
grep -r "Fscan Version" . --include="*.go"
把 Fscan Version 改成别的,比如 Scanner Version,这也是特征字符串。
3.2 清除残留字符串
Common/Output.go:
// 把
Outputfile = filepath.Join(dir, "fscanapi.csv")
// 改成
Outputfile = filepath.Join(dir, "scannerapi.csv")
Plugins/MiniDump.go:
// 把
fmt.Sprintf("fscan-%d.dmp", pid)
// 改成
fmt.Sprintf("scanner-%d.dmp", pid)
3.3 修改 ASCII 艺术字
Common/Flag.go 里有启动时打印的 ASCII 艺术字,拼出来就是 "fscan",杀软能直接识别这个图案,直接清空:
lines := []string{
" [*] Scanner Starting...",
}
3.4 重新编译
go build -o scanner.exe main.go
✅ 火绒过
✅ 360 静态过、杀毒、安全卫士、核晶体全过?????????
动态也能过????????
Defender 动态也能过????????
❌ 卡巴斯基静态被杀
四、编译层混淆(garble)
单纯清字符串对卡巴斯基这类引擎不够,它会分析代码结构。garble 能把函数名、变量名、字符串全部随机化,让杀软看不出来是什么工具。
