/Mars

Mars(战神)——资产发现、子域名枚举、C段扫描、资产变更监测、端口变更监测、域名解析变更监测、Awvs扫描、POC检测、web指纹探测、端口指纹探测、CDN探测、操作系统指纹探测、泛解析探测、WAF探测、敏感信息检测等等

Primary LanguageRuby

Fork自TideSec/Mars

改动情况

  1. 针对AWVS 许可证过期问题,单独部署AWVS docker
  2. 注释掉start.sh中启动本地容器中AWVS脚本
  3. 后续对接AWVS,直接在容器中配置文件Mars/instance/config.py处修改awvs_url:AWVS_URL参数和api的key:AWVS_API_KEY参数
  4. 添加docker容器中文包,支持UTF-8字符集,解决中文任务名导致扫描终止问题,这个临时解决
  5. 更新hydra为9.2版本,安装freerdp,支持hydra扫描rdp,这里扫描可能有bug
  6. 更改了部分代码,解决了AWVS导出报告出错问题

启动说明

  1. docker方式部署安装AWVS14,可参考:AWVS14破解版本docker一键安装
  2. docker运行AWVS14,生成AWVS key
  3. 拉取mars镜像 docker pull kalagin/mars:latest
  4. 运行,注意这里添加了env参数: docker run --env LANG=zh_CN.UTF-8 --name tide-mars -p 5000:5000 -p 27017:27017 -p 13443:13443 -h tide-mars -d kalagin/mars /usr/sbin/sshd -D
  5. 进入对应容器sudo docker exec -it tide-mars bash,在/root/Mars/instance/config.py处修改awvs_url:AWVS_URL参数和api的key:AWVS_API_KEY参数,然后restart  Mars,sudo docker restart tide-mars
  6. 启动Mars平台sudo docker exec tide-mars /bin/bash -c '/bin/bash /root/Mars/start.sh'
  7. 进入容器,重启mars.py文件,ps -aux,记住mars.py对应pid,kill掉,kill -9 pid,手动启动mars.py , cd /root/Mars/ && python mars.py 我这边测试不手动重启,扫描会一直processing

备注:原版docker镜像有bug,不支持中文字符集,导致运行扫描时报错,通过第4步指定env参数方式未完全解决中文字符集问题,需要搭配其他的临时解决方案:mars.py中文报错参考 docker 运行Python报错:UnicodeEncodeError: 'ascii' codec can't encode characters

以下为原文


Mars

Mars(战神),对之前的WDScanner的全新重写,结合Tide潮汐资产探测和指纹识别方面的技术积累,可以为客户提供更高效智能的安全检测和安全监测服务。

之所以取名为Mars(战神),因为设计初衷是想做个专门挖SRC的平台,能自动化的比较全面的搜集资产信息并能监测资产的变化情况,及时发现新应用或新服务,并能自动化匹配POC进行检测,进而提高SRC漏洞挖掘效率,所以在资产发现、指纹探测、变更监测方面做的稍微细致一些。

平台适用人群:

  • 1、白帽子。Mars可对SRC进行资产搜集、资产变更监测。
  • 2、乙方安服团队。可对客户资产进行监测管理,出现新漏洞第一时间感知。
  • 3、甲方安运团队。可对内网资产和互联网资产进行周期性探测,发现新端口、内容变更等。
  • 4、红蓝对抗。可用于前期资产搜集、信息搜集,动作比较小。

由于个人不大会做前端,所以平台框架直接使用了jeffzh3ng大佬的fuxi项目,在此致敬大佬的开源精神。Mars平台使用了flask+vali-admin做为前端,python作为后台扫描脚本,可使用分布式的节点扫描模式,可以对资产探测、POC检测、弱口令检测、漏洞扫描等任务分多个节点来完成。

项目Github地址:https://github.com/TideSec/Mars

声明

本平台只是对目标系统进行信息搜集和端口开放性探测,漏洞扫描调用了wvs的扫描Api。对互联网任何目标的检测均需在取得授权后方可进行,如需测试本平台可用性请自行搭建靶机环境。若使用者因此做出危害网络安全的行为后果自负,与作者无关,特此声明。

Change Log

  • [2020-05-11] 更新了几个Bug~
  • [2020-05-10] 一期开源~
  • [2019-05-07] 团队内部搭建测试使用
  • [2019-04-02] POC检测、弱口令检测完成
  • [2019-03-18] 资产探测完成
  • [2019-02-22] 完成部分核心功能
  • [2019-01-15] 规划整体架构

tips: 2020年5月11日,代码略有更新,主要修复几个bug,可在docker中的中进行代码更新。

cd /root/Mars && git pull

Abstract

主要功能:客户管理、资产发现、子域名枚举、C段扫描、资产变更监测、端口变更监测、域名解析变更监测、Awvs扫描、POC检测、web指纹探测、端口指纹探测、CDN探测、操作系统指纹探测、泛解析探测、WAF探测、敏感信息检测、分布式多节点扫描等等。目前被动扫描准备对接xray+wascan,准备二期开源该功能及其他若干功能。

Install

Demo演示

在阿里云上搭建了一个演示站点,可以先浏览下大体功能,看是不是你想要的。

Mars(战神):http://mars.tidesec.com

因为是演示站点,我使用一个只读权限的账号,所以只能查看,没法增删改的。另外,demo站关闭了wvs,所以漏洞扫描模块没法查看。想体验完整版的需要自己本地搭建了~~

docker安装

我把mongodb、awvs、hydra、扫描任务等都集成到docker里面了,可直接使用,镜像略大。

自己安装docker后,从docker仓库拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/secplus/mars:1.0

pic

创建docker

docker run --name tide-mars  -p 5000:5000 -p 27017:27017  -p 13443:13443 -h tide-mars -d registry.cn-hangzhou.aliyuncs.com/secplus/mars:1.0  /usr/sbin/sshd -D

启动Mars平台(如果主机配置低的话建议不启动Awvs,不然会卡死的,不想启动Awvs注释start.sh文件中第三行就可以)

docker exec tide-mars  /bin/bash -c '/bin/bash /root/Mars/start.sh'

之后就可以使用浏览器访问http://ip:5000(这个ip是你的docker母机的地址)来访问mars了,登录密码默认为tidesec

同时浏览器可访问https://ip:13443,账号tide@tidesec.com/Tide@2020,查看awvs状态。

pic

在创建容器以后,如果docker停止了,再次运行(不需要重新创建容器)只需要执行下面命令

dk start tide-mars && docker exec tide-mars  /bin/bash -c '/bin/bash /root/Mars/start.sh'

错误排查

如果无法打开5000端口或13443端口、或者添加任务后无法扫描,可以进入docker进行人工排查。

docker exec -it tide-mars /bin/bash

启动数据库

nohup mongod --dbpath=/data/db --bind_ip 0.0.0.0 --auth &

启动mars控制台

cd /root/Mars && python mars.py

启动扫描任务

cd /root/Mars/taskpython/ && python asset_task_scan_v1.0.py

启动awvs(可选,不启动时无法使用漏洞扫描功能)

su -l acunetix -c /home/acunetix/.acunetix_trial/start.sh

使用ps -aux可看到mar.py、数据库和wvs均已启动。

pic

分布式部署

Mars支持分布式部署,可以多节点同时扫描,空闲节点会优先执行任务,节点任务相互没有干扰。

  • 在web控制台添加多个任务;
  • 每个节点接收任务后会把该任务进行标记,这样其他节点不会重复扫描;
  • 如果某节点因为出错而导致没有完成扫描,下次该节点再次启动时会继续执行该任务;
  • 节点的标识是靠taskpython/asset_task_scan_v1.0.py文件中的scan_node参数,默认是主机名,可自行修改。

多节点的部署方式:

  • 1、把taskpython目录拷贝到其他服务器上。
  • 2、安装依赖包pip install -r requirements.txt
  • 3、修改asset_task_scan_v1.0.py文件中的MONGODB_CONFIG的mongo数据库地址。
  • 4、运行python asset_task_scan_v1.0.py即可。

手工安装

非常不建议手工从头安装,如果是想二次开发,可以自行摸索安装。

Function

登录界面

直接使用的vali-admin内置的一个lockscreen页面,改了个比较灰主流的背景,原谅我的审美。 登录密码默认为tidesec,在配置文件Mars/instance/config.py中设置,可以自行修改,修改后需要重启下python mars.py脚本,先kill掉python mars.py进程,再执行一下python mars.py就行。

pic

用户管理

添加用户和管理用户:设置用户联系人、手机、邮箱等,可以进行漏洞预警,设置服务周期和服务类型,比如定期的漏洞扫描、POC检测、弱口令检测、敏感字检测等。

pic

资产管理

资产管理是整个平台最基础也算最核心的功能,对资产进行POC检测或者弱口令检测,首先依赖于资产能被发现、指纹能被识别。

比如通过资产探测发现某服务器使用了iis,那么系统会自动调用IIS短文件名检测POC、IIS PUT检测POC进行自动检测,如果发现使用了weblogic会把weblogic的所有反序列化漏洞POC都检测一遍,如果发现系统使用了Mysql,会自动调用mysql弱口令检测程序进行弱口令测试,等等。这些能自动检测的前提就是能发现资产指纹信息,目前我们也搭建了自己的潮汐指纹识别平台,目前已经开源http://finger.tidesec.com

pic

添加资产时,平台会根据资产类型进行智能分类,比如你添加了test.gauzi.com和app.gauzi.com和www.maodou.com作为资产,平台会把该任务分为两个具体任务,一个是guazi.com,里面包括两个资产test.gauzi.com和app.gauzi.com,另一个是maodou.com,里面包括www.maodou.com作为资产。

之后后台会自动进行子域名枚举,子域名枚举共使用了四种方式以保证子域名枚举的全面,并把这些子域名都作为该资产任务下的具体资产。

子域名枚举的四种方式:

  • 1、https://github.com/aboul3la/Sublist3r,对接了N多接口。
  • 2、https://github.com/lijiejie/subDomainsBrute,主要是字典枚举。
  • 3、使用baidu进行子域名检索。
  • 4、对主域名进行三层页面爬取,提取子域名。

之后会对这些子域名进行探测信息,可以根据策略配置“web端口快速探测”扫描全端口还是部分端口,而且在分析过程中如果发现子域名对应的ip集中在某个C段(启用“探测C段”选项时),那么平台会自动把该C段IP也作为资产任务进行扫描探测,并写入数据库进行呈现。

pic

pic

pic

pic

指纹识别

可识别的指纹包括:web应用指纹、操作系统指纹、中间件指纹、waf指纹、CDN信息、前端指纹信息、IP归属地、IP所在GPS信息、标题状态等。

pic

变更监测

当设置了周期扫描时,若该资产在扫描时发现开放了新端口,那么该资产会被标识为资产存在变更。除了监测端口变更外,还会对标题、网站状态、IP解析进行监测,如果出现了变更,也会被标识出来。

pic pic

POC检测

这个模块直接调用了pocsuite进行poc扫描,可对所有资产进行检测。新建任务时可以从资产里直接选择,也可以手工添加。jeffzh3ng大佬设计了一个可以直接把POC文件拖拽的功能,很棒。后续准备根据资产指纹来对资产进行分组,这样POC检测能更智能一些。

poc管理 pic

新建POC任务 pic

poc结果 pic

漏洞扫描

漏洞扫描直接调用了AWVS的API接口,我在docker里也配置好了Awvs,是2019年7月的linux版的,想升级的自己可以升级。本来是想做成和WDScanner一样,把所有漏洞存在mongo数据库中,由于精力不准暂时没完成。

pic

由于该扫描是直接调用的Awvs的API接口,所以在awvs没启动的时候,该功能不可用。

pic

不过在使用docker环境执行awvs扫描时,发现占用资源很多wvs很容易报错,同时会导致web应用打开都比较费劲。自己部署的时候可以把wvs使用单独的服务器部署,然后在配置文件Mars/instance/config.py中修改awvs地址和api的key就可以。

pic

认证检测

认证检测主要是对弱口令进行检测,调用了hydra来完成该任务。

新建弱口令任务 pic

弱口令检测结果 pic

ToDo

  • 资产按指纹智能分类,直接匹配POC
  • 融合被动扫描Xray+WASCAN
  • AWVS结果本地存储后控制台直接查看
  • 导出结果和报告

Thanks

jeffzh3ng大佬:https://github.com/jeffzh3ng/ Tide安全团队的小伙伴:http://www.tidesec.com

关于Tide安全团队

Tide安全团队致力于分享高质量原创文章,研究方向覆盖网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等多个领域,对安全感兴趣的小伙伴可以关注或加入我们。

Tide安全团队自研开源多套安全平台,如Tide(潮汐)网络空间搜索平台、潮启移动端安全管控平台、分布式web扫描平台WDScanner、Mars网络威胁监测平台、潮汐指纹识别系统、潮巡自动化漏洞挖掘平台、工业互联网安全监测平台、漏洞知识库、代理资源池、字典权重库、内部培训系统等等。

Tide安全团队自建立之初持续向CNCERT、CNVD、漏洞盒子、补天、各大SRC等漏洞提交平台提交漏洞,在漏洞盒子先后组建的两支漏洞挖掘团队在全国300多个安全团队中均拥有排名前十的成绩。团队成员在FreeBuf、安全客、安全脉搏、t00ls、简书、CSDN、51CTO、CnBlogs等网站开设专栏或博客,研究安全技术、分享经验技能。

对安全感兴趣的小伙伴可以关注Tide安全团队Wiki:http://paper.TideSec.com 或团队公众号。