news 2026/5/1 6:51:32

安全工具篇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/1 6:47:20

React Native + OpenHarmony:View视图溢出处理

React Native OpenHarmony&#xff1a;View视图溢出处理 在React Native跨平台开发中&#xff0c;布局容器的边界控制是构建稳定用户界面的基石。当子组件的尺寸超出父容器时&#xff0c;如何优雅地处理溢出内容&#xff0c;直接关系到应用的视觉呈现与交互体验。本文将基于R…

作者头像 李华
网站建设 2026/4/23 13:56:05

新春有礼!网易小派云音乐版 License 免费拿!

新春有礼&#xff0c; “AI”相伴2月4日-4月4日&#xff0c;网易小派新春专属流量扶持正式来袭&#xff01;“网易小派”是网易智企旗下云信业务推出的 AIoT 智能体平台。当前&#xff0c;网易小派具备视频、图片、实时语音、文字等多模态交互&#xff0c;具备记忆引擎、故事引…

作者头像 李华
网站建设 2026/4/30 6:50:36

谣言只是表象,投资者耐心正在耗尽!

一&#xff0c;市场强势反弹&#xff0c;把前天跌掉的大部分失地都收回来了&#xff0c;但目前看&#xff0c;这还只能算反弹&#xff0c;不是反转。前面重兵把守的 4100 点&#xff0c;现在就是市场的 “天王山”&#xff0c;能不能拿下&#xff0c;是本周最关键的任务。尐程序…

作者头像 李华
网站建设 2026/4/12 18:39:31

软件测试项目实战,Web测试常用测试点,即拿即用宝典

前言 由于web应用与用户直接相关&#xff0c;又通常需要承受长时间的大量操作&#xff0c;因此web项目的功能和性能都必须经过可靠的验证。 这就要经过web项目的全面测试。Web应用程序测试与其它任何一种类型的应用程序测试相比没有太大差别。Web的流行和无所不在&#xff0c…

作者头像 李华