GithubHelp home page GithubHelp logo

tidesec / mars Goto Github PK

View Code? Open in Web Editor NEW
1.2K 28.0 280.0 15.35 MB

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

Python 10.11% CSS 7.94% HTML 13.75% JavaScript 5.96% Shell 0.76% Makefile 0.03% Ruby 61.17% Roff 0.15% XSLT 0.12%

mars's Introduction

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,账号[email protected]/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 或团队公众号。

mars's People

Contributors

tidesec 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mars's Issues

API

请问添加资产等功能有没有提供api?

端口扫描建议

端口扫描处建议先使用masscan扫一遍开放端口,再使用nmap做精确扫描,这样速度会快很多。

能否提供其他docker镜像,阿里云镜像报错Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

docker pull registry.cn-hangzhou.aliyuncs.com/secplus/mars:1.0
Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
[root@localhost ~]# docker pull registry-internal.cn-hangzhou.aliyuncs.com/secplus/mars:1.0
Error response from daemon: Get https://registry-internal.cn-hangzhou.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
[root@localhost ~]# docker pull registry-vpc.cn-hangzhou.aliyuncs.com/secplus/mars:1.0
Error response from daemon: Get https://registry-vpc.cn-hangzhou.aliyuncs.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
[root@localhost ~]# docker search mars
Error response from daemon: Get https://index.docker.io/v1/search?q=mars&n=25: dial tcp 3.220.75.233:443: i/o timeout

其他docker镜像可以正常安装,这个阿里云镜像总提示网络问题

打开某些功能时会自动退出登录

资产管理——资产任务:

127.0.0.1 - - [2020-05-13 14:57:04] "GET /new-customer HTTP/1.1" 200 13776 0.001000
127.0.0.1 - - [2020-05-13 14:57:08] "GET /new-asset HTTP/1.1" 200 15155 0.030000
127.0.0.1 - - [2020-05-13 14:57:14] "GET /asset-management HTTP/1.1" 302 392 0.093000
127.0.0.1 - - [2020-05-13 14:57:14] "GET /login HTTP/1.1" 200 3983 0.001000
'NoneType' object has no attribute 'getitem'

认证检测——添加扫描:
127.0.0.1 - - [2020-05-13 15:01:20] "GET /new-auth-tester HTTP/1.1" 302 392 0.030000
127.0.0.1 - - [2020-05-13 15:01:20] "GET /login HTTP/1.1" 200 3983 0.000000
'NoneType' object has no attribute 'getitem'
127.0.0.1 - - [2020-05-13 15:01:20] "GET /static/font/css/font-awesome.min.css HTTP/1.1" 404 9028 0.002000

系统设置——高级设置:
'NoneType' object has no attribute 'getitem'
127.0.0.1 - - [2020-05-13 15:02:29] "GET /advanced-option HTTP/1.1" 302 392 0.030000
127.0.0.1 - - [2020-05-13 15:02:29] "GET /login HTTP/1.1" 200 3983 0.001000
127.0.0.1 - - [2020-05-13 15:02:29] "GET /static/font/css/font-awesome.min.css HTTP/1.1" 404 9028 0.003000

看起来是某些地方空值导致?

添加多选/全选

  1. 资产过多时,删除/更新资产尤为麻烦,没有多选/全选框,且选择每页显示100条,删除一条后,页面刷新又变成默认的显示10条,依次反复。
  2. 添加客户时,服务类型 建议添加仅资产发现功能,类似于潮汐的功能,或者像zoomeye/shodan/fofa等,在HW等期间,对大量IP进行存活/服务探测比较实用,鉴于潮汐已关闭,此项功能尤其实用。

刚使用,先点赞,其它建议后续再提

是否开启了core dump功能,导致磁盘空间被占满

是否开启了core dump功能?添加了一些资产,第二天30G的磁盘被占满,查看发现/Tide-Mars/taskpython/目录下有大量core文件,最大每个50M,查看ulimit -c命令发现是ulimited状态。是不是代码写了此功能,而且没做限制。

report issue

漏扫报告下载时,awvs已经生成报告,但mars前台已知卡在等待下载阶段。另是否可以向WDscan一样提供统一的中文报告。谢谢!

问题

1、服务器重启,服务永远要自己进入docker手动启动
2、资产添加,扫描的话,任务永远都是排队中,需要自己后台手动启动扫描脚本才行,每次启动任务都要,麻烦死了。
3、T填IP的话,永远扫不出目标的端口出来,永远只出一个IP就完事了。
4、填写单个IP,如果你之前选过C段的话,以后永远都是扫C段了,不能扫单IP了

默认密码

如何修改Mars的默认密码呢,后台里面没这个选项。emmmm,

Can you share Dockerfile?

I want to modified some code, so can you share Dockerfile to fast deployment?
Thank you very much!

求docker file

不知能否公开一下Docker file
主要想精简一下docker里面内容,现在docker的确太大了
比较关心hydra、nmap、wafw00f这部分的配置内容,谢谢

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.