就像是一个园丁,很没出息,就种出了一朵花,还是在火星上别人的花圃里种的,可你还是会忍不住会拿望远镜去看它不是,因为除此之外,你一无所有啊。
从第一天学Django到现在已经过去19天,在下班后夹缝里偷偷学了半套Django课程后,觉得可以试一试写一个开源的关于内网安全漏扫管理平台。
需求阶段
交互界面:B/S构架
需求说明:定期检测漏洞,数据可视化
概要设计:后端分两个模块,一个负责数据添加,另一个通过Xadmin管理数据,漏扫模块直接调用
服务对象:内网安全,除了WEB端还要对主机类,数据库类,中间件等进行定期安全检测
添加数据:除了手动添加网址ip之外,应该具备自动获取当前IP,然后自动扫描内网IP端口保存资产数据
扫描方式:使用celery做分布式处理,对漏洞进行异步扫描(其实也可以通过多线程实现,省下不少事)
方案阶段
前端技术栈:html,css,bootstrap
后端技术栈:python,django,redis,mysql,cerely
漏扫相关库:requests,socket,threading,multiprocessing,current.future,asyncio,aiohttp,aiofiles,re,python-nmap,python-docx后续
流程设计:用户通过点击自动获取内网服务或者手动添加内网IP后,自动开启异步漏扫功能,数据实时存储到数据库,在后台可以查看漏洞数据展示以及下载漏洞报告模板,提供选择报告模板的样式,具有定期自动漏扫验证功能,定期发现新资产等。
实施阶段
端口扫描
需要实现对存活主机扫描,开放端口和服务扫描
Nmap
优点:模块丰富,功能齐全,支持多种不同方式扫描端口,拥有完备的主机服务漏洞扫描插件
缺点:量级较重,迁移麻烦,不够灵活,插件适配性接口不方便维护
Masscan
优点:速度快,速度快,速度快
缺点:迁移麻烦,配置起来麻烦,总不能让用户安装一大堆的插件,一键安装部署才是最好的
自己写
优点:灵活,轻便,自定义功能
缺点:重复造轮子,速度和准确率相对较低,意味着不能吃到nmap提供的漏洞扫描红利
资产收集
需要识别主机安装的服务,中间件信息,或者使用的CMS,使用的数据库,这些可以把上文中的端口扫描归纳进来
需要收集大量的指纹,来源:github
主机漏洞
需要从资产收集中获取数据,需要实现对Windows/*inux系统高危漏洞扫描检测
- Nmap安装第三方插件vlunscan可以实现大量漏洞检测,但是不方便管理,并且还需要安装nmap
- 使用awvs接口实现高危检测,awvs安装是一回事,另外企业使用破解版将面临罚款
- 使用nessus,同上,量级更大
- 使用msf接口,量级大,不方便维护
只能自写脚本,脚本对象等级为高危,即可以直接提权或者造成系统严重危害。
来源:github,exploitdb
WEB端漏洞
需要从资产收集中获取数据,然后加载插件扫描,常见的比如
- sql
- xss
- xxe
- 等
这些都已经实现过插件化,直接调用修改接口即可
数据库端漏洞
需要从资产收集中获取数据,然后进行弱口令检测,未授权检测
这些都做过插件化,直接调用修改接口即可
消息队列
celery+redis
环境迁移
docker