扫描器设计

漏洞扫描器大家都不陌生,几乎是每家公司必备的安全产品。几乎早在快10年前,作为安全乙方,就需要扛着一台极光扫描器,到全国各地去做各种安服。在当时极光扫描器就是一款非常成熟的商业产品了,那么到现在为什么没有出现一款能够通杀的产品,大家还都要一直重复的造轮子呢。我想问题出在两个方面,一是扫描场景复杂,没有一款扫描器能否覆盖所有的场景,而是各有侧重。二是扫描器自身的保密需求,把防御能力完全暴露在外不是一个好主意,最多做到开源扫描框架,poc是万万不能全部开源的。

滴滴建设扫描器也已经好多年,并且去年作为滴滴云安全解决方案,实现了首次商业化输出。如何做扫描器,我比较推崇实用主义的理念,比较看重有利用价值的漏洞,有的扫描器扫完一看,一堆高危全是ssh版本漏洞,报告是好看,但实际利用价值不大(当然,版本漏洞也是有其价值的,我们也有购买商业扫描器,主要用于迎接各种合规检查,自家扫描器人家可能不认)。受限于场景,滴滴自研的扫描器PoC数量至今也才不到500个。商业化扫描器则不同,没有几千个poc都不好意思说自己是做扫描器的。有时候大而全并不一定好,我在某云光一台vm,就给我推了80多个漏洞,客户要么无法处理,要么形成漏洞免疫,反而容易漏过真正的风险。

自研扫描器架构如下图:

1、 采用C-S架构,服务端分为3部分,WEB界面、交互API、调度控制等。数据存储采用mysql,队列服务redis 。
2、WEB界面主要负责与人的交互,包括资产管理、任务管理、Agent管理、插件管理、漏洞管理等模块。
3、交互API 主要负责与Agent的交互,Agent主动拉取任务并推送扫描结果。 生产网、办公网、测试网等公司内部属于不同的安全域,是有网络隔离的,但只要Agent与服务端WEB端口做到单向通信,就能解决一个服务端打通多个扫描安全域的问题。
4、控制调度模块负责 任务调度、维护redis队列、轮询更新任务状态。
5、客户端主要分为指纹识别、spider、WEB扫描、主机扫描四部分。Agent 架构很方便做到横向扩容。
6、web扫描分为两类,一种是基于spider的扫描,Web扫描依赖于spider 爬取的结果,瓶颈在spider,注定效果有限。第二是基于url的扫描。大公司可建设URL库,汇聚来自访问日志,流量镜像、测试人员agent 三者所采集到的url。
7、主机扫描是基于指纹的扫描,扫描效果就要看插件的质量和数量了。所有基于特征性的扫描都可以放到这里,例如对于discus扫描插件,虽然属于web服务,但应该放到主机扫描这里,因为它的明确的指纹特征,而WEB扫描主要基于URL,大多是针对参数的。

指纹识别的实现

今天先谈谈指纹识别吧,最简单的指纹识别方法就是Nmap,它的服务指纹真的很强大,但不适用于大规模的扫描任务,你会发现扫描1-65535个端口实在太慢了。于是拆分成两部分的任务,端口扫描和服务识别,nmap加 -sV选项只负责识别开放端口是什么具体服务。

端口扫描首选要确认是否探活以及扫描范围,例如内网等不大会禁icmp的场景,建议进行ping探活,对于有资产完备且安全性要求较高的场景如外网边界建议不探活直接进行1-65535全端口扫描。

其实最纠结的是扫描方法的选择,我们尝试过nmap、masscan、python、go开发tcp扫描、tcp-syn扫描等,最后的结论是go语言实现的扫描效率最佳。过程就不多说了, 有兴趣的朋友可以参考小伙伴的博客(https://thief.one/2018/05/17/1/

再说服务识别,世间服务千万种,但大致可以分为web服务和其他服务。非web服务识别主要依赖于nmap,对于少量未识别的,也支持自定义扩展指纹。而对于WEB指纹,主要依赖于自建指纹库,web服务非常规范,http header、title、body、robots.txt等都可以很方便的自定义指纹规则。自建指纹是个逐步积累的过程,在未完善之前,可以依赖于开源的服务如whatsweb,cms规则非常丰富,完善后再逐步淘汰。

指纹识别的功能

1、指纹联动扫描插件

标题为基于指纹识别的漏洞扫描,主要是说扫描条件是由指纹决定的。扫描插件只对匹配到指纹条件的目标进行扫描,编写扫描插件时就要同步check下指纹规则,两者联动更新,这样就可以做到精准扫描。扫描poc未能很好的匹配指纹规则,这样就会存在一定的gap, 有时候使用简单的默认端口会造成漏扫,有时候又扩大了扫描范围,例如一个wordpress漏洞插件需要对所有http服务进行扫描。有了精准指纹识别,则可以发起针对性扫描。

2、指纹识别漏洞

指纹即漏洞:部分漏洞不需要经过漏洞扫描,直接在指纹识别阶段就筛选出来了。对于公司外网扫描,有安全规范的公司一般会要求禁止高危端口开放外网,禁止使用高危框架,后台要有双因素等。这些都可以通过指纹识别来探测到。另外常规的主页信息泄露漏洞也可以探测到,如列目录,报错,敏感信息泄露等。

指纹无漏洞: 即指纹白名单的概念,以外网为例,我们已知SSO是安全的,那么一旦指纹探测到后台接入了SSO,就可以打个标签。其他白名单也类似,我们若是已知某个服务是安全的,就不用去反复扫描了。

3、0day应急响应

有了完备的指纹库,当发生0day漏洞的时候,就能够迅速排查到可能受影响的资产,进而进行快速响应。 当然公司可以有两个指纹库,扫描器探测属于黑盒指纹库,还有主机agent采集上来的“白盒”指纹库。

web漏洞扫描器原理_基于指纹识别的漏洞扫描设计相关推荐

  1. web漏洞扫描器原理_【技术分享】漏洞扫描技巧篇Web 漏洞扫描器

    0x00 前言 之前 我们简单介绍了一下扫描器中爬虫的部分,接下来将继续介绍扫描器中一些我们认为比较有趣的技巧. 0x01 编码/解码/协议 在很久以前有人提问 AMF 格式的请求怎么进行检测,或者有 ...

  2. web漏洞扫描器原理_知名Web漏洞扫描器Acunetix Web Vulnarability Scanner

    Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞.它包含有收费和免费两种版本,A ...

  3. web漏洞扫描器原理_漏洞扫描技巧篇 「Web 漏洞扫描器」

    0x00 前言 之前我们简单介绍了一下扫描器中爬虫的部分,接下来将继续介绍扫描器中一些我们认为比较有趣的技巧. 0x01 编码/解码/协议 在很久以前有人提问 AMF 格式的请求怎么进行检测,或者有什 ...

  4. 漏洞挖掘 符号执行_基于符号执行的二进制代码漏洞发现

    基于符号执行的二进制代码漏洞发现 牛伟纳 ; 丁雪峰 ; 刘智 ; 张小松 [期刊名称] <计算机科学> [年 ( 卷 ), 期] 2013(040)010 [摘要] 软件漏洞是安全问题的 ...

  5. Web简单快捷的指纹识别小工具_在线指纹识别平台设计

    Web 指纹识别 本文通过分析 Web 指纹的检测对象.检测方法.检测原理及常用工具,设计了一个简易的指纹搜集脚本来协助发现新指纹,并提取了多个开源指纹识别工具的规则库并进行了规则重组,开发了一个简单 ...

  6. 【愚公系列】2023年05月 网络安全高级班 049.WEB渗透与安全(网站指纹识别)

    文章目录 前言 一.网站指纹识别 1.简介 2.相关工具 2.1 Whatweb 2.2 御剑指纹识别 2.3 httprint 2.相关插件 前言 网站指纹识别的技术原理是通过识别网站的特定属性和元 ...

  7. android 指纹 分发,移动终端及基于指纹识别来实现操作的方法和系统与流程

    本发明涉及移动终端技术领域,具体地说,移动终端及基于指纹识别来实现操作的方法和系统. 背景技术: 随着科学技术的不断发展和社会的进步,近年来指纹识别的流行,很多移动终端上均设置有指纹识别装置. 现有移 ...

  8. c语言程序设计用指纹解锁门,基于指纹识别技术的校园门禁应用

    李润婷 李婷婷 摘要:由于指纹识别技术具有独特性,指纹匹配已成为一种有效的人类识别工具,指纹的普遍性和不变性让指纹识别技术在当今社会得到了广泛的应用.比如:指纹识别技术已广泛应用于身份识别.考勤系统. ...

  9. web漏洞扫描器原理_web应用防火墙对于网站防护有多重要!

    大型的Web应用易受多种攻击,如SQL注入和跨站脚本攻击漏洞,由此可以造成宕机时间.效率降低.数据失窃.违规罚款.品牌受损.服务中断.客户不满等.为保护Web应用程序,建议企业利用Web应用防火墙. ...

  10. Web安全信息收集之CMS指纹识别

    1.CMS指纹识别 CMS(内容管理系统),又称整站系统或文章系统网站内容管理.用户只需要下载对应的CMS软  件包,部署搭建,就可以直接利用CMS,简单方便.但是各种CMS都具有其独特的结构命名规则 ...

最新文章

  1. 用vue-cli脚手架搭建一个仿网易云音乐的全家桶vue项目
  2. python中getopt函数_python getopt模块详解
  3. ionic 混合应用开发
  4. ubuntu linux下面用wine运行大航海时代4和最新版的QQ
  5. 解决:Changes not staged for commit:
  6. Nginx反向代理配置配置实例
  7. 判断数组中是否有存在重复值
  8. cmmi评估如果可以再来
  9. JAVA网络编程→BIO到NIO、IP域名服务器DNS端口、套接字编程Socket、TCP与UDP
  10. conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’解决
  11. centos是什么系统_解决更换操作系统后的开机问题
  12. (转)浅说深度学习:核心概念
  13. 工程学导论1---3章习题与思考题
  14. 按职能和级别来分,UI设计师能胜任哪些高薪岗位?
  15. 硬件设备计算存储及数据交互杂谈
  16. IOS苹果开发者账号封号的规避心得,利用好防关联工具避免APP下架问题
  17. TemplateDoesNotExist错误之伤
  18. 网卡的功能、构造与分类 | 什么是网卡?
  19. 微软语言包实现汉字转拼音
  20. ESP8266EX芯片文档

热门文章

  1. 写给美术看的Unity全局光照详解
  2. Subsonic使用
  3. Turtle(7)制作简单动画
  4. Python模块下载常用地址
  5. Eolink :通过构建 API 全生命周期管理体系,实现降本增效
  6. dig命令的介绍与使用
  7. 【NLP】基于神经网络PCNN(Piece-Wise-CNN)的关系抽取模型
  8. 小滴课堂-学习笔记:(1)JAVASE课程
  9. 3G是IPv6的3G(转)
  10. 使用纯文本方式编写软件设计文档