简介
这里我们从github上下git最新的fscan项目并用ide打开
common目录

config.go 配置文件可以用来修改字典和默认扫描端口

flag.go 用于命令行的选择比如-h -p 等

log.go 日志处理
Parse.go 对选择进行处理
ParseIP.go 对输入ip进行处理
ParsePort.go 对输入端口进行处理
proxy.go 代理
Plugins目录:
这个目录是按我的理解来说可以里面为扫描时的功能插件

像 这些ms17010 mysql mmsql等
列如fscan的mysql扫描写法

两个for循环 调用mysql链接就实现了mysql扫描
他是如何调用这个函数的了?
我们直接对Mysqlscan进行查询

发现在base.go文件中他调用了mysqlscan函数

他是如何对这些进行扫描处理的
同样的对PluginList进行查询

继续跟下去

跟到这里我们可以看到他的处理逻辑
if common.Scantype == "all" || common.Scantype == "main" {switch {case info.Ports == "135":AddScan(info.Ports, info, &ch, &wg) //findnetif common.IsWmi {AddScan("1000005", info, &ch, &wg) //wmiexec}case info.Ports == "445":AddScan(ms17010, info, &ch, &wg) //ms17010//AddScan(info.Ports, info, ch, &wg) //smb//AddScan("1000002", info, ch, &wg) //smbghostcase info.Ports == "9000":AddScan(web, info, &ch, &wg) //httpAddScan(info.Ports, info, &ch, &wg) //fcgiscancase IsContain(severports, info.Ports):AddScan(info.Ports, info, &ch, &wg) //plugins scandefault:AddScan(web, info, &ch, &wg) //webtitle}} else {scantype := strconv.Itoa(common.PORTList[common.Scantype])AddScan(scantype, info, &ch, &wg)}
逻辑处理都出来了 感觉这个没必要说了 大家都应该能看懂这些代码
Webscan目录

rules.go这里时对指纹的处理 如果你想增加指纹可以从这里入手 不过不太推荐增加太多
lib目录

这里是一些固定的东西 没必要改
pocs目录
就是你放poc的地方

poc编写方法你可以参考xray的来写,这里可以推荐一下xray规则实验室
https://poc.xray.cool/
二开
这里搞个简单的 搞个zookeeper未授权扫描
我们直接在Plugins创建一个zookeeper.go文件
参考下zooker的go链接demo,这里就不说了,我们直接贴代码
package Pluginsimport ("fmt""github.com/samuel/go-zookeeper/zk""github.com/shadow1ng/fscan/common""time")func ZookeeperConn(info *common.HostInfo) {x := fmt.Sprintf("%s:%v", info.Host, info.Ports)s := []string{x}_, _, err := zk.Connect(s, time.Second*5)//defer conn.Close()if err != nil {fmt.Println(err)} else {common.LogSuccess(fmt.Sprintf("unauthorized zookeeper %s", fmt.Sprintf("%v:%v", info.Host, info.Ports)))//fmt.Println("zookeeper 连接成功!")}}
接着在Plugins/base.go 把函数添加进去

这个样子还不够,如果我们要进行单独扫描的话 还需要在common目录下对他进行处理



这里就把单独扫描整好了


到这里一个简单的zookeeper未授权扫描功能就写好了
后面其实还可以加一堆东西 比如什么数据一键利用,向日葵扫描,一键写入shiro内存马等等都可以自定义加
免杀的话,其实可以本地编译,去除github.com/shadow1ng,之后再对编译进行混淆就可以免杀了
这里不推荐工具了,推荐之后 过段时间就免杀不了