Giter Club home page Giter Club logo

koko-moni's Introduction

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
}

koko-moni's People

Contributors

burpheart avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

koko-moni's Issues

配置问题

1.推送配置

plus_push_key: "" #推送加 key 有新增资产会推送
ding_push_key: "" #钉钉HOOK推送key

之前没研究过相关推送的东西,这里plus_push_key和ding_push_key具体配置值是什么样的呀?

是类似

plus_push_key:  ""
ding_push_key: "https://oapi.dingtalk.com/robot/send?access_token=xxx"

这样吗?

2.cookie配置
quake_cookie的配置是什么样的呀?cookie项太多,可否有具体点的示例

real-time query

Can you add a function that supports real-time query of ZoomEye, etc.?

没办法删除数据吗

界面上没有删除按钮,没办法删除数据?

想问一下大佬,目前使用zed是通过api的方式调用的还是直接使用zed的golang 库呢,感觉golang库目前好像只能查询,没办法添加数据

适配问题

作者考虑给Mac用户也打个包吗,感谢感谢

bug: quake 没做判断

quake 没做判断,没数据也根据设置的页数一直翻页
默认:quake_page: 50

{"code":0,"message":"Successful.","data":[],"meta":{"pagination":{"count":0,"page_index":18,"page_size":10,"total":75}}}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.