安全建设之平台搭建

1、信息搜集类

基础信息

基础信息搜集包括ip,域名,端口,框架,组件信息。Ip、域名甲方可经过运维同事获取,其余获取方式仁者见仁智者见智。端口,须要咱们根据获取的域名、ip进行端口扫描,这里推荐masscan、nmap,写调度脚本入库处理,记录并对比是一个持久的工做,并对端口作服务探测,有时会有不同的收获。框架、组件信息,也许不少架构师、程序员都没法理清,这就须要咱们去主动搜集。比较直接的办法是收集php.ini、pom.xml,收集相关的组件信息查看组件是否存在漏洞,好比imagemagick、fastjson等等。javascript

敏感目录、文件

敏感目录、文件的收集,防止目录出现非项目文件,好比sql、rar、test等。曾经遇到一个test页面,直接甩出admin表全部数据。建议根据自家公司的特色,完善字典,能够借用姐姐的神器(BBScan),按期监控,会有收获。此外,还有搜索引擎大法,对大型公司有奇效,由于大型公司迭代会有下架不及时、历史老页面无人维护的现象,存在漏洞可能性会更高。经过特定语法,可让你眼前一亮,经过爬取入库,可掌握对外暴露信息,提早发现问题,走在hacker前面。php

Github监控

Github监控,如今市面上有许多github监控脚本,各有各的长处,我的以为要知其然知其因此然,坚持亲自动手。由于在探索的过程当中,能够了解到更多的姿式点。好比防爬策略、绕过方法等。Github监控已经成为各大公司必备神器,由于不少人提交github信息泄露类都会被反馈,“内部已知晓,感谢反馈”的提示。但仍是会有漏网的,这就须要优化本身的策略,让爬取更精准,更全面。好比精准查找、ua变化、失败重试策略等等,尽最大的努力把偏差降到最小。同样的功能,你能作到更好,就能在赛跑中胜出!前端

威胁情报

威胁情报,如今有不少羊毛论坛、QQ群。好比以前出现过外卖红包机器人自动抢最大红包、某咖啡被薅千万等等,不少人会把薅羊毛的方法发送到论坛或羊毛群里。若是业务方能提早发现风险,并作及时响应,可及时止损,减少损失,好比某住以前的用户信息泄露。上个直观的历史图举个例子:java

威胁情报.png网盘监控python

网盘方便存储、分享资料。个别员工把工做相关内容如员工资料、公司资料传上网盘,这就带来了信息泄露的风险。网盘监控自动化实现会遇到各类问题,历史的能够经过各个网盘分享站爬取,好比pansoso,panduoduo。但很难作到实时,目前没有相关接口可查,更多的在于教育宣导、限制。git

2、扫描工具

漏洞扫描,是每一个企业必需的部分。我将扫描任务分为四类:主动扫描、被动扫描(代理扫描)、插件扫描、端口扫描。程序员

主动扫描

主动扫描,能够自主开发扫描器加以商用扫描器辅助的形势。能够编写动态爬虫,抓取url去重后放入扫描队列,但目前不多有爬虫能作到全覆盖。借助市面优秀的扫描器好比awvs、appscan、arachni等,能够根据我的喜爱,嵌入主动扫描。这里我主要介绍下awvs,老版本有命令行接口,能够调度爬虫、扫描,能够定制xml文件配置不一样的扫描策略,扫描结果相对比较全面。咱们能够经过对比扫描,优化自主开发的工具。曾在14年写了一个调度脚本,多线程调用扫描器,并把结果读取入库统计,在一我的的安所有能够极大的简化工做。当年稚嫩的调度架构以下:github

jia1.png

我的以为扫描器的核心是爬虫,爬虫像一个向导,在一个好的向导的指引下,能够少走不少弯路,更快到达目的地!因此,要作好扫描器,首先要写好一个好的爬虫。目前有不少动态爬虫组件,好比phantomjs(封存归档暂停开发)、Chrome Headless等等。这里用phantomjs实现了一版。分为调度、执行、探测模块。redis

执行模块负责:算法

1.javascript动态解析,触发click等操做;

2.hook全部的网络请求;

3.静态页面连接分析,如href、frame等等;

4.自动分析表单幷提交。

执行模块获取数据后反馈给调度,调度根据去重算法、爬虫深度判断是否继续发送到执行模块。探测模块其实就是用字典去探测是否存在特定目录、文件,执行结束后发送给调度深刻挖掘。测试了爬取http://demo.aisec.cn/demo/,结果只能说还算能够,还有很大的改进空间。

爬虫.png

被动扫描

曾经遇到过这样的状况,天天大量检测任务,纯手工又慢又累,并且容易遗漏。像XSS,xxe等常规漏洞,能够把检测方法脚本化,是知识的积累的积累过程。把重复的工做作简单,把简单的事情作好是必须具有的能力。作测试的同窗可能有比较深入感触。所以,被动扫描是刚需。设计原理大同小异,选用mitmproxy做为代理,截取流量,去重后发送到后端任务队列。分享下扫描器设计思路,但愿能给须要的朋友带来灵感。扫描器采用纯python实现,前端flask展示、mitmproxy代理、redis消息队列、celery任务队列、mongodb存储。大体架构以下:

扫描架构.png

Web界面:

扫描.png

Celery队列调用特定的检测函数(xxe、端口扫描等等),实现检测。此处有一个tips,在使用流量时,有部分字段是不能带入扫描的,不然检测可能失效,好比content-length。此处只举一个例子,检测方法仁者见仁智者见智。但无论主动、被动、端口、插件扫描调度方法是同样的。

接口.png接口2.png

接口3.png

具体实现如上图,SQL注入调用了sqlmapapi,其余检测都是根据特定漏洞定制。好比平行越权,首先根据基准页面的反馈,查找相关的敏感字段(手机号、订单号、身份证号等等),而后根据id左右偏移,看返回。越权类很难作到通用,但能够发现70%以上的问题。曾经见到过比较鸡贼的订单号,订单号为订单号1001111202+用户id后2位,组合订单号即为100111120288。显然这种订单号遍历难度就比较大。

插件扫描

0day的泛滥,特定漏洞检测已经成为常规需求,快速定位发现问题,插件扫描应运而生。世面上有很多优秀的插件,如bugscan、xunfeng,目前收集的插件大概2k个左右。曾经有个哥们让我帮忙把插件改为符合他的调用模式,其实摸清插件的运行规则,返回数据套路,写一个集成调用函数,完美运行!

插件扫描.png

端口扫描

端口扫描的目的是为了防止端口异常开放。如22,3306,6379异常开放,可能致使破解、未受权等风险。按期的扫描,可让业务方及时发现问题,规避风险。

端口.png

3、知识分享

漏洞多数是由于疏忽、无知致使,安全教育和培训是必不可少的。持久的知识输出,能够增强员工的安全意识,减小人为因素致使的安全问题。赏罚公告、知识分享、小课堂、漏洞预警,让员工意识到安全和本身并不遥远。

相关文章
相关标签/搜索