大宝剑-信息收集和资产梳理工具(红队、蓝队、企业组织架构、子域名、Web资产梳理、Web指纹识别、ICON_Hash资产匹配)

Overview

DBJ大宝剑 🗡

技术栈

边界打点资产梳理工具

Layui
Python-Flask
Redis
MongoDB

演示地址http://119.45.153.4:5000 密码:admin/admin

演示站只作为演示,功能不可用!!!

Web资产管理虽然可跑任务,但是所有人都能看到你跑的任务

不要改密码,不要改密码,改了别人就看不了了

功能简介

企业组织架构查询

1、爬虫从爱企查查询企业的组织架构,一级单位、二级单位、三级单位的首页和邮箱等信息

image-20210310145840858

2、根据企业的主公司名称whois反查一级域名、ICP备案反查一级域名

image-20210310142814509

某些子公司可能也会有自己的ICP备案,这样上边的方法就会漏掉资产,这时需要自己去手动查询

ICP备案查询

另外,企业组织架构里也有很多一级域名,但有些三级单位就很偏了和目标关联性不大,所以没有自动统计到一级域名这里边来,需要手工把企业组织架构导出,然后筛选一下域名,跟一级域名统计的结果合并后去个重,就能直接扔到Web资产梳理模块里边收集子域名了。

去重工具可在狼盘下载

3、所有查询到的数据会在后台命令行输出预览

image-20210310143948010

4、所有查询到的数据会存入redis缓存数据库,并且可导出为CSV

​ 请及时导出查询到的数据,查询其它企业信息时会清空上一个查询企业的缓存

5、注意!注意!注意!(重要的事情说三遍)

​ 此模块调用了百度的爱企查,访问速度过快过多会封IP弹出验证码导致无法查询报错

​ 使用代理池查询速度会很慢,所以为了解决这个问题我使用了X-Remote-Addr+Cookie绕过

​ 所以,这个模块的正确使用方法请注意看第六条!

6、添加Cookie

​ 首先,在你的浏览器中登录百度的账号,打开爱企查这个网站

​ 然后,用Cookie Editor这个浏览器插件导出爱企查的Cookie(会存在粘贴板,直接去粘贴)

​ 再然后,把导出的Cookie粘贴到本项目的baidu_cookie.txt这个文件中

​ 接着去正常使用此模块,随便找个公司名试一下,如果还是报错的话,接着往下看

​ 此时,打开爱企查会有一个验证码让你填,填对了它,接着就能正常使用了

image-20210310141735270

​ 最后,如果长时间不用此模块,下一次用还会报错;

​ 这次就不用导Cookie了,直接浏览器访问爱企查填写一次验证码即可

Web资产梳理

一、子域名资产

原理:调用FOFA数据

cmd = '(domain="{dom}") || (cert="{dom}" &&  (status_code="200" || status_code="403") )'.format(dom=rootdomain)

子域名会自动识别CDN,帮助你定位目标真实IP和C段。

此方法可收集到绝大部分子域名资产,但不是百分百全的

二、IP资产(Web资产)

原理:调用FOFA数据(节约时间和VPS、代理池等资源)

这个功能是重头戏,也是最初设计的初衷(扫描单IP或C段中http协议的网站,并识别Web指纹)

image-20210311161144314

来看一下此模块的特点:

根据个人渗透时的思路设计的,不知道是否适合大多数人

1、无分页,一拉到底

开着Burp,点一个链接测试一个,不用老去翻页了

2、指纹索引

统计出有哪些指纹命中了,点击相关指纹则下边的资产也只显示与指纹相关的资产

image-20210311161921828

3、导出URL

导出全部URL,或根据指纹索引匹配资产导出URL,然后扔到别的工具或漏扫里边跑

image-20210311161942904

关于Web指纹识别

Web指纹识别时并未发送恶意请求所以无需代理,这样速度还快

所有指纹都在flaskr->rules.py中,以一个Dict的形式存在,python中字典的索引比列表(list)快

目前指纹不是很多,只收录一些国内常见且存在安全缺陷的应用

指纹的每个特征用 "|" 分割开来,前后不能有空格

image-20210311170057173

指纹很大一部分来自棱洞Ehole,感谢r0eXpeR师傅的开源分享

同时欢迎大家提交新指纹,自己去FOFA找几个资产验证特征准确性后,提交Issues即可。

指纹识别的速度配置

文件位置:flaskr->admin.py->第34行代码处

# 设置最大线程数
thread_max = threading.BoundedSemaphore(value=305)

ICON_HASH计算

计算图标的哈希值,并自动匹配相关资产(适合瞄准目标时用)

image-20210311164827806

POC插件漏扫

计划中先调研漏扫引擎

安装教程

注意:企业组织架构收集模块因需在浏览器登录验证原因,暂时只能在windows上用

一、安装第三方库

推荐使用Python3.9以上版本

pip install -r requirements.txt
pip install Flask

二、安装配置数据库

先安装MonGoDB和Redis

#配置MongoDB
mongo
use webapp
db.createCollection("tasks")
db.createCollection("webs")
db.createCollection("subdomains")
db.createCollection("user")
db.user.insert({uid:1,username:'admin',password:'admin'})
exit

三、启动应用

#Windows系统 
点击start.bat

#Linux系统
sh start.sh

然后打开浏览器访问 IP:5000 登录即可(账户密码默认都是admin,进去自己改)

使用场景

SRC

SRC挖掘中可以快人一步的理清脆弱资产,先下手为强

红队打点

收集目标信息,梳理目标资产,快速发现脆弱资产尽快进入内网

蓝队资产梳理

梳理自身资产,及时发现脆弱资产,重点看护

漏洞研究 & 安全开发

Web指纹可用于开发自己的小工具,代码都有注释,通读代码可拓展自己的开发思路。

这些指纹都是国内出现频率较高的,所以可根据这里的Web指纹去研究挖掘相关Web应用的漏洞。

Comments
  • NoAppException: While importing

    NoAppException: While importing "flaskr", an ImportError was raised

    请问在kali系统中安装好后进行访问出现如下问题,如何解决呢? flask.cli.NoAppException

    NoAppException: While importing "flaskr", an ImportError was raised:

    Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/flask/cli.py", line 240, in locate_app import(module_name) File "/root/Downloadfeng/DBJ/flaskr/init.py", line 3, in from urllib import parse ImportError: cannot import name parse iShot     2021-06-02 下午09 11 07

    opened by duke99 2
  • ✨新增 [自动更新] 插件

    ✨新增 [自动更新] 插件

    #!/bin/sh
    clear
    # [banner]
    
    echo -e "\n\033[1;34m ______  ______     ___  \033[0m"
    echo -e "\033[1;32m |  _  \ | ___ \   |_  | \033[0m"
    echo -e "\033[1;36m | | | | | ___ \     | | \033[0m"
    echo -e "\033[1;31m | |/ /  | |_/ / /\__/ / \033[0m"
    echo -e "\033[1;35m |___/   \____/  \____/ \n\033[0m"
    echo -e "\033[1;36m                 Wgpsec \n\033[0m"
    
    # [help]
    echo -e "\033[1;32m [help] \033[0m"
    echo -e "\033[1;36m https://github.com/wgpsec/DBJ \n\033[0m"
    echo -e "\033[1;36m Update DBJ ✨\n\033[0m"
    /usr/bin/git -C /DBJ/ pull
    echo -e "\033[1;36m Update DBJ-PY-Tools ✨\n\033[0m"
    /usr/bin/pip3 install -r /DBJ/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    echo -e "\033[1;36m Start DBJ ✨\n\033[0m"
    
    # [main]
    
    export FLASK_APP=flaskr                 #设置运行环境
    export FLASK_ENV=development    #开启debug模式,有错误可以调试一下
    export LC_ALL=C.UTF-8
    export LANG=C.UTF-8
    service mongodb start
    service redis-server start
    sleep 5
    mongo 127.0.0.1:27017/webapp data.js
    flask run --host=0.0.0.0                #运行项目,绑定0.0.0.0可外网访问
    

    image

    opened by Ran-Xing 1
  • ✨docker 一键启动,优化用户体验

    ✨docker 一键启动,优化用户体验

    version: '3'
    
    services:
        web:
            image: wgpsec/dbj:latest
            container_name: dbj
            restart: unless-stopped
            ports:
              - "5000:5000"
            entrypoint: ["/start.sh"]
            environment:
              - LANG=en_US.UTF-8
              - TZ=Asia/Shanghai
    

    此方案需要前往Docker Hub注册 Wgpsec 账号 接着打包镜像

    IMAGE ID image

    docker build -t dbj:latest
    docker images
    docker tag IMAGE ID wgpsec/dbj:latest
    docker push wgpsec:latest
    

    为了优化体验感,建议前往Gravatar设置头像

    opened by Ran-Xing 0
  •  ✨ 增加对Docker教程

    ✨ 增加对Docker教程

    对docker 容器进行更好的支持

    • docker 容器名称
    • docker 日志输出
    • 第三方编译,避免网卡的尴尬
    • 我在想我提交的start.sh 第二行的 clear 是否有必要,如果删掉的话 docker logs dbj 将会输出很多日志,如果不删的话上次启动容器运行的日志就丢了😅,但是结果啥的都会在web 页面展示,应该问题不大 image

    docker 日志

    企业组织架构 - 查询架构报错

    image

    icon-hash key

    image

    建议

    • icon 改一个,不然容易天天被查,比如用 DBJ 查 DBJ 的 icon hash
    opened by Ran-Xing 0
  • ⚡修复 apt-get 网络连接 错误报错

    ⚡修复 apt-get 网络连接 错误报错

    FROM ubuntu:18.04
    
    LABEL Auther="wgpsec"
    LABEL Mail="[email protected]"
    LABEL Github="https://github.com/wgpsec/DBJ"
    
    ADD . /DBJ/
    ADD start.sh /
    
    RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
    RUN apt-get update
    RUN apt-get -o Acquire::BrokenProxy="true" -o Acquire::http::No-Cache="true" -o Acquire::http::Pipeline-Depth="0" -y install  python3 python3-pip mongodb redis-server git
    RUN pip3 install -r /DBJ/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    
    WORKDIR /DBJ/
    ENV LC_ALL=de_DE.utf-8
    ENV LANG=de_DE.utf-8
    RUN chmod +x /start.sh
    EXPOSE 5000
    CMD /start.sh
    
    opened by Ran-Xing 0
  • ✨新增 [自动更新] 插件

    ✨新增 [自动更新] 插件

    #!/bin/sh
    clear
    # [banner]
    
    echo "\n\033[1;34m ______  ______     ___  \033[0m"
    echo "\033[1;32m |  _  \ | ___ \   |_  | \033[0m"
    echo "\033[1;36m | | | | | ___ \     | | \033[0m"
    echo "\033[1;31m | |/ /  | |_/ / /\__/ / \033[0m"
    echo "\033[1;35m |___/   \____/  \____/ \n\033[0m"
    echo "\033[1;36m                 Wgpsec \n\033[0m"
    
    # [help]
    echo "\033[1;32m [help] \033[0m"
    echo "\033[1;36m https://github.com/wgpsec/DBJ \n\033[0m"
    echo "\033[1;36m Update DBJ ✨\n\033[0m"
    
    git -C /DBJ/ pull
    
    # 对比两个文件是否一致,不一致 则 停止容器等待重启
    if [ "`diff /start.sh /DBJ/start.sh -q`" = "Files /start.sh and /DBJ/start.sh differ" ]
    then
            echo "\033[1;36m Update DBJ Succers ✨\n\033[0m"
            cp -rf /DBJ/start.sh /start.sh
            echo "\033[1;36m Update DBJ-PY-Tools ✨\n\033[0m"
            pip3 install -r /DBJ/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
            exit 0
    fi
    
    echo "\033[1;36m Start DBJ ✨\n\033[0m"
    
    # [main]
    
    export FLASK_APP=flaskr                 #设置运行环境
    export FLASK_ENV=development    #开启debug模式,有错误可以调试一下
    export LC_ALL=C.UTF-8
    export LANG=C.UTF-8
    service mongodb start
    service redis-server start
    sleep 5
    mongo 127.0.0.1:27017/webapp data.js
    flask run --host=0.0.0.0                #运行项目,绑定0.0.0.0可外网访问   
    

    image

    opened by Ran-Xing 0
  •  ⚡修复 apt-get 网络连接 错误报错

    ⚡修复 apt-get 网络连接 错误报错

    ⚡修复 apt-get 网络连接 错误报错

    apt-get \
    -o Acquire::BrokenProxy="true" \
    -o Acquire::http::No-Cache="true" \
    -o Acquire::http::Pipeline-Depth="0" \
    install  python3 python3-pip mongodb redis-server git -y 
    

    ✨添加作者信息

    LABEL Auther="wgpsec"
    LABEL Mail="[email protected]"
    LABEL Github="https://github.com/wgpsec/DBJ"
    
    opened by Ran-Xing 0
  • 运行docker后,访问ip:端口后报错,解决办法

    运行docker后,访问ip:端口后报错,解决办法

    按照说明,使用docker启动系统后,发现报错: flask.cli.NoAppException flask.cli.NoAppException: While importing "flaskr", an ImportError was raised:

    Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/flask/cli.py", line 240, in locate_app import(module_name) File "/DBJ/flaskr/init.py", line 6, in from .import admin File "/DBJ/flaskr/admin.py", line 20, in import dns.resolver #DNS解析 ModuleNotFoundError: No module named 'dns' 发现缺少dns模块…… 那么就自己加了一下,在requirements.txt文件中,添加一行 dnspython==2.1.0 重新生成个镜像,然后启动吧,就可以正常使用了,应该是开发者忘记了,添加上吧

    opened by wooluo 1
Owner
Wolf Group Security Team
Wolf Group Security Team 狼组安全团队
Wolf Group Security Team