Koko Moni Save

一个网络空间搜索引擎监控平台,可定时进行资产信息爬取,及时发现新增资产,本项目聚合了 Fofa、Hunter、Quake、Zoomeye 和 Threatbook 的数据源,并对获取到的数据进行去重与清洗

Project README

KOKO-MONI

介绍

本项目是一个网络空间搜索引擎监控平台,本项目聚合了 Fofa、Hunter、Quake、Zoomeye 和 Threatbook 的数据源,并对获取到的数据进行去重与清洗。

该项目可以用于蓝方监控自身资产公网暴露以及 SRC 项目新增资产进行监控。

功能

  • 聚合 Fofa、Hunter、Quake、Zoomeye 和 Threatbook 的数据源,快速查询相关资产信息。
  • 自动化监控,可定时进行资产信息爬取,及时发现新增资产。
  • 支持钉钉,推送加消息提醒,让您能够及时发现异常情况。
  • 提供 Web 检索界面,使得查询操作更加方便。

安装

解压安装包

按照config.demo.yaml 内的注释填写配置项 保存为config.yaml

示例配置

global: #全局配置 启动时会触发一次所有的任务
  hunter_key: "" #hunter API key 注意用量  留空不采集
  zoomeye_key: ""
  quake_cookies: "" #quake登陆后 cookies
  threatbook_cookies: "" #微步登陆后  cookies  注意用量 频繁会触发验证码 强制退出登陆
  fofa_email: "" #  FOFA 邮箱
  fofa_key: "" #  FOFA KEY
  save_path: "./data" #数据保存位置
  ip: "127.0.0.1" #api 监听ip
  port: "12347" #api 端口
  secret_key: "123456" #api key 一定要修改
  plus_push_key:  "" #推送加 key 有新增资产会推送
  ding_push_key:  "" #钉钉HOOK推送key
  scan_on_start: true #启动时是否触发一次爬取

jobs:
- name: "one-ip" #任务名 推送用
  schedule: "@daily" #定时采集  支持cron语法 示例 @daily 每天一次 (半夜0点触发 系统时间和时区一定要设置好) 参考 https://pkg.go.dev/github.com/robfig/cron?utm_source=godoc
  hunter_query: "ip=\"1.1.1.1/24\"" # hunter搜索语法 (ps: hunter api获取的banner有问题 )特殊字符注意转义 注意不同搜索引擎使用不同的语法 留空不采集
  hunter_page: 10 #最大爬取页数 每页10条
  quake_query: "ip: \"1.1.1.1/24\""
  quake_page: 50
  threatbook_query: "ip=1.1.1.1/24"
  threatbook_page: 50
  zoomeye_query: "1.1.1.1/24"
  zoomeye_page: 10  #最大爬取页数  每页20条
  fofa_query: "ip=\"1.1.1.1/24\""
  fofa_page: 10
- name: "哔哩哔哩-域名"
  schedule: "@daily"
  hunter_query: "domain=\"bilibili.com\""
  hunter_page: 10
  quake_query: "domain: \"bilibili.com\""
  quake_page: 50
  threatbook_query: "root_domain=bilibili.com"
  threatbook_page: 50
  zoomeye_query: "site:bilibili.com"
  zoomeye_page: 10
  fofa_query: "domain=\"bilibili.com\""
  fofa_page: 10

启动 ./koko-moni

UI

注: web无登陆界面 直接访问 /?key=secret_key 鉴权 secret_key不正确时被RST连接为正常现象 key不正确触发反测绘

图片.png

图片.png

图片.png

搜索语法

本项目使用了 ZED 作为结构化数据搜索引擎 可参考zed官方文档 字段见输出文件

简单运算

int
tlen >= 0

时间
timestamp >= 2023-01-08T05:55:22.200Z

字符串
title=="404"


如果带有特殊符号(中文)的键 根下可以使用 this[""] 引用

this["status-code"] >10
this["content-length"]==158
非根
abc["测试"]=="123456"

多层复杂json结构
{"a":{"b":{"c":"123"}}}
this["a"].b.c=="123"
{"a":{"b":["123","456"]}}
this["a"].b[0]=="123"

强制类型转换


cast(数据,<类型>)

字符串日期转time

cast("2022-09-19T18:11:05.545961703+08:00",<time>)

字符串ip转ip

cast("1.1.1.1",<ip>)

也可以简写成

time("2022-09-19T18:11:05.545961703+08:00")
ip("1.1.1.1")

用例

cidr_match(1.1.0.0/16,ip(host))  //匹配ip是否在cidr内


time(timestamp) >= 2022-01-08T05:55:22.200Z

常用操作

排序

升序排序 sort dns_names 降序排序 sort -r dns_names

in

判断某个值是否在数组内

{"test":[301,200]}
200 in test

聚合查询

统计计数

count() by key 输出 key,count() 与sort组合使用 count() by title|sort -r count

TOOD

  • fofa API 支持
  • Hunter API 支持
  • Zoomeye API 支持
  • Quake 支持
  • Threatbook 支持
  • WEB数据清洗
  • 非WEB数据清洗
  • WEB UI
    • 搜索
    • 任务管理
    • 系统设置
    • 资产统计

已知问题

  • 示例配置文件 fofa_key: ""后少一个空格
  • hunter web banner 异常 api返回到的不是对应host的返回(hunter的问题)
  • 微步频繁请求API会封号
  • 多任务同时执行时可能会只执行最后一个任务

API

全局参数

鉴权url参数 key

在配置文件中设置(secret_key)

测试推送

请求方式: GET

请求URL: /api/testpush

请求参数: 无

聚合查询

请求方式: GET

请求URL: /api/aggregate

请求参数:

参数名 必选 类型 说明
query string ZQ查询语句

响应格式: JSON

响应示例:

{
  "data": {
    "count": 92,
    "elapsed": 226,
    "finger": [
      {
        "finger": "Fofa",
        "count": 75
      },
      {
        "finger": "Hunter",
        "count": 17
      },
      {
        "finger": "Nginx",
        "count": 7
      },
      {
        "finger": "Lua",
        "count": 7
      }
    ],
    "ipcount": 77,
    "port": [
      {
        "port": "443",
        "count": 57
      },
      {
        "port": "80",
        "count": 26
      }
    ],
    "title": [
      {
        "count": 29
      },
      {
        "title": "301 Moved Permanently",
        "count": 16
      },
      {
        "title": "302 Found",
        "count": 11
      }
    ]
  },
  "message": "ok",
  "success": true
}

搜索

请求方式: GET

请求URL: /api/search

请求参数:

参数名 必选 类型 说明
current int 当前页数
pageSize int 每页数据量
query string ZQ查询语句

响应格式: JSON

响应示例:

{
	"data": [{
		"banner": "HTTP/1.1 403 Forbidden\r\nConnection: close\r\nContent-Length: 9\r\nContent-Type: application/octet-stream\r\nDate: Thu, 16 Feb 2023 17:11:21 GMT\r\nServer: Tengine\r\n\r\n\r\n",
		"body_length": 9,
		"commonname": "",
		"date": "2023-03-13 21:59:41",
		"dnsnames": "",
		"fingerprint": ["Fofa"],
		"host": "1.1.com",
		"ip": "1.1.1.1",
		"loc": "[中国 上海 上海]",
		"organization": "Huawei Cloud Service data center",
		"port": "443",
		"status_code": 403,
		"title": "",
		"tls": "Version:  v3\nSerial Number: 123456546\nSignature Algorithm: SHA256-RSA",
		"url": "https://1.1.com:443/"
	}],
	"message": "ok",
	"success": true,
	"total": 92
}
Open Source Agenda is not affiliated with "Koko Moni" Project. README Source: burpheart/koko-moni
Stars
427
Open Issues
9
Last Commit
1 year ago
Repository
License

Open Source Agenda Badge

Open Source Agenda Rating