news 2026/5/13 0:50:45

安全工具篇Go魔改二开Fscan扫描FRP代理特征消除新增扩展打乱HASH

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
安全工具篇Go魔改二开Fscan扫描FRP代理特征消除新增扩展打乱HASH

免杀对抗——第一百六十五天

安全工具篇&Go魔改二开&Fscan扫描&FRP代理&特征消除&新增扩展&打乱HASH

安全工具 - Goland-FRP魔改二开&特征消除

  • FRP是一种快速的反向代理,允许你将位于NAT或防火墙后的本地服务器暴露在互联网上。目前它支持TCPUDP,以及HTTPHTTPS协议,使请求可以通过域名转发到内部服务,也是内网常用的内网穿透工具。
  • 下载地址:https://github.com/fatedier/frp
  • 同样,这玩意下载下就全部被杀,所以我们还是需要魔改,把源码拖到本地,然后通过make进行编译,这里因为Kali上自带make,所以尽量是放到Kali上编译:
make-f Makefile.cross-compiles

  • 但是这种直接编译的还是没啥用,因为这个frp是流量转发工具,所以除了对一些特征进行更改之外,还需要对流量特征进行更改

  • 比如在pkg/msg/msg.go文件中把传输的数据特征改掉:

  • 然后在pkg/util/net/tls.go文件中将FRPTLSHeadByte改掉:

  • 版本特征也可以改掉,在pkg/util/version/version.go文件中:

  • 这样改动之后对免杀有一定的效果,在这个基础上也可以进行加壳、加保护、加签名、降低熵值等等操作

  • 当然这个只是治标不治本的方法,一些较强的杀软或者是EDR设备还是过不了,因此还是需要更深层的改动,但这里我们也不深入改了,有兴趣的可以根据这篇文章自己下去尝试:【神兵利器】手把手教你魔改frp

安全工具 - Goland-FScan魔改二开&特征消除

工具混淆
  • fscan是一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描,体积小、扫描快、功能多,因此在内网扫描当中非常受欢迎。
  • 下载地址:Releases · shadow1ng/fscan
  • 但是这个工具已经是被杀毒软件杀得不要不要的,所以我们需要对其进行免杀处理,和之前一样,我们可以从如下方面入手:
    1. 对EXE成品:
      • 加签名、加壳、加保护、降低熵值等等
      • 转换为二进制/dll文件通过Loader加载调用
    2. 对源码:
      • 重新编译
      • 修改源码逻辑
      • 重新写一个新的工具
  • 那我们这里就从简单到难,首先看看重新编译的效果,这个的主要目的就是改变文件的哈希值,将文件源代码下载下来之后,用goland打开(记得关杀毒),执行如下命令编译:
go build -ldflags="-s -w"-trimpath main.go

  • 但是自己编译出来的目前也是直接被杀,因此我们可以更进一步通过DLL加载调用,加载器代码如下:
#include<stdio.h>#include<windows.h>intmain(){HMODULE hDLL;hDLL=LoadLibrary("fscan.dll");if(hDLL!=NULL){// 定义函数指针类型typedefvoid(*FunctionType)();// 为每个导出函数创建一个函数指针FunctionType DllCanUnloadNow=(FunctionType)GetProcAddress(hDLL,"DllCanUnloadNow");FunctionType DllGetClassObject=(FunctionType)GetProcAddress(hDLL,"DllGetClassObject");FunctionType DllRegisterServer=(FunctionType)GetProcAddress(hDLL,"DllRegisterServer");FunctionType DllUnregisterServer=(FunctionType)GetProcAddress(hDLL,"DllUnregisterServer");// 调用每个函数(如果函数指针非空)if(DllCanUnloadNow)DllCanUnloadNow();if(DllGetClassObject)DllGetClassObject();if(DllRegisterServer)DllRegisterServer();if(DllUnregisterServer)DllUnregisterServer();// 卸载 DLL FreeLibrary(hDLL);printf("All functions executed successfully.\n");}else{printf("Failed to load DLL.\n");}return0;}
  • go启动代码如下:
packagemainimport"C"import("fmt""time""github.com/wjlin0/fscan/Plugins""github.com/wjlin0/fscan/common")//export DllCanUnloadNowfuncDllCanUnloadNow(){}//export DllGetClassObjectfuncDllGetClassObject(){}//export DllRegisterServerfuncDllRegisterServer(){}//export DllUnregisterServerfuncDllUnregisterServer(){}funcinit(){start:=time.Now()varInfo common.HostInfo common.Flag(&Info)common.Parse(&Info)Plugins.Scan(Info)t:=time.Now().Sub(start)fmt.Printf("[*] 扫描结束,耗时: %s\n",t)}funcmain(){}
  • 然后通过如下命令分别编译加载器和启动代码:
gcc -o fscan_loader.exe main.c go build -buildmode=c-shared -o fscan.dll main.go
  • 运行fscan_loader.exe就可以调用fscan工具了:

  • 这个可以过火绒、DF,但是卡巴过不了,然后这里引用的库是github.com/wjlin0/fscan/Plugins,这个不是官方的库,如果引用官方的库可能就会杀

  • 这里如果要用最新版可以直接fork到自己的仓库然后改一下依赖即可

新增PoC
  • 在fscan中是有一些常见Web PoC扫描的,在/WebScan/pocs目录下,如果我们想引入一些最新的漏洞PoC可以自己新增:

  • 这里就不再演示了,怎么编写yml的PoC之前的课程也讲到过,写完之后重新打包即可:

go build -buildmode=c-shared -o fscan.dll ./main.go
  • 对于其他的非Web模块的漏洞,可以在/Plugins目录下新增其他的插件或者漏洞扫描模块,比如这里我们新增一个zookeeper未授权连接的探测功能,首先在该目录下创建ZookeeperConn.go文件:
packagePluginsimport("fmt""strings""time""github.com/samuel/go-zookeeper/zk""github.com/shadow1ng/fscan/Common")funcZookeeperScan(info*Common.HostInfo)error{// Trim inputsinfo.Host=strings.TrimSpace(info.Host)info.Ports=strings.TrimSpace(info.Ports)varaddresses[]stringifinfo.Ports==""{// default zookeeper portaddresses=append(addresses,fmt.Sprintf("%s:%d",info.Host,2181))}elseifstrings.Contains(info.Ports,","){ports:=strings.Split(info.Ports,",")for_,port:=rangeports{p:=strings.TrimSpace(port)ifp==""{continue}addresses=append(addresses,fmt.Sprintf("%s:%s",info.Host,p))}}else{addresses=append(addresses,fmt.Sprintf("%s:%s",info.Host,info.Ports))}conn,err:=ZookeeperConn(addresses,time.Duration(Common.Timeout)*time.Second)iferr!=nil{errlog:=fmt.Sprintf("[-] Zookeeper %v:%v connect failed, %v",info.Host,info.Ports,err)Common.LogError(errlog)returnerr}deferconn.Close()// 检查根节点是否存在,作为未授权访问的判断依据exists,_,err:=conn.Exists("/")iferr!=nil{errlog:=fmt.Sprintf("[-] Zookeeper %v:%v check unauthorized failed, %v",info.Host,info.Ports,err)Common.LogError(errlog)returnerr}ifexists{result:=fmt.Sprintf("[+] Zookeeper %v:%v unauthorized",info.Host,info.Ports)Common.LogSuccess(result)_=Common.SaveResult(&Common.ScanResult{Time:time.Now(),Type:Common.VULN,Target:fmt.Sprintf("%s:%s",info.Host,info.Ports),Status:"vulnerable",Details:map[string]interface{}{"service":"zookeeper","vulnerability":"unauthorized-access"},})}returnnil}funcZookeeperConn(addresses[]string,timeout time.Duration)(*zk.Conn,error){conn,_,err:=zk.Connect(addresses,timeout)iferr!=nil{returnnil,fmt.Errorf("connect to Zookeeper failed: %v",err)}returnconn,nil}
  • 如果是旧版,按小迪的流程注册插件即可,如果是新版,只需要在/Core/Registry.go文件中添加如下代码即可:
Common.RegisterPlugin("zookeeperconn",Common.ScanPlugin{Name:"ZookeeperConn",Ports:[]int{2181},ScanFunc:Plugins.ZookeeperScan,Types:[]string{Common.PluginTypeService},})
  • 因为是测试未授权,所有不需要在/Core/Config.go中添加暴力破解的账户以及密码
  • 然后我们在/Common/Ports.go文件的var MainPorts里面加入2181端口,运行如下命令进行扫描探测:
fscan.exe -h<IP>

  • 可以看到这里能够成功发现了zookeeper的未授权访问漏洞,所以我们如果想增加一些服务漏洞扫描或者其他插件功能就可以在这里自行添加
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 12:13:02

AgentCPM研报生成实测:离线运行+隐私保护的高效方案

AgentCPM研报生成实测&#xff1a;离线运行隐私保护的高效方案 没有云端API调用&#xff0c;没有数据上传风险&#xff0c;不依赖网络连接——当一份深度行业研报需要在内部会议前两小时完成&#xff0c;而你手头只有未联网的笔记本电脑时&#xff0c;你会怎么做&#xff1f; …

作者头像 李华
网站建设 2026/5/11 16:53:46

Chord视频时空理解工具YOLOv8集成:实时目标检测应用开发

Chord视频时空理解工具YOLOv8集成&#xff1a;实时目标检测应用开发 1. 为什么需要将YOLOv8集成到视频时空理解工具中 在日常的视频分析场景中&#xff0c;我们常常遇到这样的问题&#xff1a;监控画面里突然出现异常移动&#xff0c;但人工回看耗时费力&#xff1b;电商直播…

作者头像 李华
网站建设 2026/5/12 2:53:43

Z-Image模型容器化部署:使用Docker简化安装流程

Z-Image模型容器化部署&#xff1a;使用Docker简化安装流程 1. 为什么需要容器化部署Z-Image 刚开始接触Z-Image时&#xff0c;我试过直接在本地环境安装&#xff0c;结果折腾了大半天。Python版本冲突、PyTorch版本不匹配、diffusers库需要从源码编译、显存占用优化参数设置…

作者头像 李华
网站建设 2026/5/3 4:33:46

ollama部署embeddinggemma-300m:300M参数模型如何实现媲美大模型的语义精度

ollama部署embeddinggemma-300m&#xff1a;300M参数模型如何实现媲美大模型的语义精度 你有没有试过在自己的笔记本上跑一个真正好用的嵌入模型&#xff1f;不是那种动辄几十GB显存、需要专业GPU服务器才能启动的庞然大物&#xff0c;而是——开箱即用、秒级响应、不卡顿、不…

作者头像 李华
网站建设 2026/5/1 15:53:42

MusePublic Art Studio效果实测:长尾提示词对复杂场景理解能力

MusePublic Art Studio效果实测&#xff1a;长尾提示词对复杂场景理解能力 1. 这不是又一个“点点点”生成器&#xff0c;而是一支会思考的画笔 你有没有试过这样写提示词&#xff1a;“一位穿靛蓝工装裤的女建筑师站在未完工的混凝土建筑工地中央&#xff0c;左手拿着激光测…

作者头像 李华
网站建设 2026/5/12 7:49:52

实测CTC语音唤醒模型:93%准确率的‘小云小云‘识别

实测CTC语音唤醒模型&#xff1a;93%准确率的小云小云识别 1. 这不是实验室里的Demo&#xff0c;是能装进手机的真家伙 你有没有过这样的体验&#xff1a;对着手机说“小云小云”&#xff0c;等了两秒&#xff0c;屏幕才慢悠悠亮起来&#xff1f;或者在嘈杂的厨房里喊了三遍&…

作者头像 李华