关注我们

子域名监控概况+思路+监测源码与环境搭建

安云安云 安全工具 2018-12-15 322324 0

子域名监控

域名监控概括

子域名收集这个路子真的是被玩烂了,花样百出、工具没有八百也有一千,无非是爆破、爬、调用搜索引擎之类,有资源的大厂有自己的dns库,但是这些在我眼里真的都很low。

为什么说很low,因为在职业刷src或者apt攻击者的角度,单单过一遍爆破的域名是不能满足持续性漏洞挖掘的;从职业刷src的角度,过一遍收集的子域名,已经发现了所有漏洞并已经提交后修复,或者用当前漏洞测试方法并没发现有漏洞,这样业务是安全的,但这个安全是在当下时间的,企业要发展、要解决当前问题,就会出新业务不断的pull代码更新旧问题,这就是业务的变化,通过持续性监控子域名就会发现业务的变化,最快速度的发现变化,对变化进行安全测试、漏洞挖掘。有经验的刷src的同学都知道,新业务发现漏洞概率都很高。

懒惰使人创造工具,而我就拥有这么一个工具,从14年搞的子域名爆破工具(送给过一个小姐姐,刷了好多漏,如今以身为人妻,而我还没有女朋友。),到如今的子域名监控工具。

具体实现思路

1、通过域名爆破、搜索引擎之类方法,获得子域名后爬取子域名http响应数据保存入数据库。
2、设定时间、可以是一分钟、一小时、一天一次循环读取库内子域名,进行爬取子域名和库类http响应数据对比,对比出变化推送提醒。


从思路上是个简单的工具,但是我的集成chrome headless、subfinder,自我感觉mongodb的可视化也不错,操作便捷、使用稳定。 

子域名监控概况+思路+监测源码与环境搭建

结果类似图上,正式版本title不会出现乱码。

功能: 通过爆破、爬取收集子域名,之后循环爬取库内数据对比发现业务的变化和新业务后及时展示、推送。 域名黑名单机制,可设置过滤.ke.qq.com、.qzone.qq.com、*.bz.qq.com之类n级子域泛解析。

子域名监测源码与环境搭建

环境要求:

ubuntu 64位
python3 go mongodb chrome chromedriver

代码下载链接: https://pan.baidu.com/s/18cR0wmJR7X3ukT6GQyynKQ 提取码: 26k6

代码结构:

browser.py  浏览器功能 获取html、执行js等  

config.py 配置文件,一些需要的功能  

mongodb_con.py mongo连接文件  

start.py 开始爆破和爬取子域名获取http响应入mongo库  

while_update.py 域名监测功能、遍历mongo库内数据 对比出变化域名和爬取新域名 

\subfinder 用来启动最初爆破子域名

\tmp 存放browser爬取的href network请求的url    

\target 存放要监测域名的配置信息

注意

因为获取http响应的是基于chrome浏览器,模拟chrome访问,并且访问后进行多个javascript执行,所以访问每个url会比普通urllib时间要长很多,所以我添加了简易版chrome线程池以便进行多线程同步访问以便加快速度,默认是5个chrome同时模拟访问。

环境搭建

必须执行

cd 进扫描器目录
sudo sh install.sh

install.sh内代码:
sudo apt-get install mongodb golang git python3 python3-pip xvfb unzip libxss1 libappindicator1 libindicator7 -y
sudo pip3 install selenium pymongo
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb
chmod +x chromedriver
sudo mv -f chromedriver /usr/local/share/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

基本就可以启动扫描器。。。

其他参考:

mongodb服务端搭建 会的大佬请绕过此步

关闭mongo命令: sudo service mongodb stop
“`
1、首先修改mongodb的配置文件 让其监听所有外网ip,如果不行,连接的时候肯定会有异常
编辑文件:/etc/mongodb.conf
修改后的内容如下:
bind_ip = 0.0.0.0
port = 27017
auth=true (添加帐号,密码认证)

设置结束后启动mongo命令: sudo service mongodb start
进入mongo命令行: mongo
添加超级用户
use admin
db.createUser({user:’admin’,pwd:’123456aaa1xsda1A’,roles:[{role:’userAdminAnyDatabase’,db:’admin’}]})
db.auth(‘admin’,’123456aaa1xsda1A’)
添加扫描器用户
use target_domain
db.createUser({user:’target’,pwd:’123456aaaxsda1A’,roles:[{role:’readWrite’,db:’target_domain’}]})
db.auth(‘target’,’123456aaaxsda1A’)
“`

mongo客户端连接:

子域名监控概况+思路+监测源码与环境搭建

下载 https://www.robomongo.org/ 连接mongodb
常用mongo命令:
sudo service mongodb start | stop | restart
db.getCollection(‘qq_com’).find({“domain”:{“$regex”:”.3g.qq.com”}}) 搜索
db.getCollection(‘qq_com’).remove({“domain”:{“$regex”:”.3g.qq.com”}}) 删除
db.update({ “state” : 1} ,{$set:{“state”:0}}) 更新

设置Ubuntu默认python3

sudo update-alternatives –install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives –install /usr/bin/python python /usr/bin/python3 150

下载subfinder

go get github.com/subfinder/subfinder

启动说明

配置目标domain.json(请注意格式)

子域名监控概况+思路+监测源码与环境搭建

domain 为要收集监测的目标域名,格式必须是.domain.com,如:

.qq.com
.163.com
.weibo.com

Blacklist_domain 为子域名黑名单,比如46456.qzone.qq.com qq空间业务,进行.qzone.qq.com绕过收集。

进入config.py配置文件,进行配置

子域名监控概况+思路+监测源码与环境搭建

然后执行python start.py 开始爆破、爬取子域名…域名数据决定运行时间(建议后台运行)。

结果在robomongo查看:

子域名监控概况+思路+监测源码与环境搭建

start.py运行结束后。

while_update.py进行库内子域名重新爬行后http响应对比,和爬取新域名。
参考:http://jinbitou.net/2016/02/24/1534.html
进行定时执行while_update设置,如:24小时执行一次,12小时执行一次,就形成子域名监测。
根据mongo库内time日期请自己设置新域名推送。

版权声明

本文仅代表作者观点,不代表黑白网立场。
如文章侵犯了您的权利,请通过邮箱联系我们删除。
详情查看:版权纠纷
E-Mail:server@heibai.org

喜欢0发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址