51Testing软件测试论坛
标题: 黑客之刃-扫描器 [打印本页]
作者: lsekfe 时间: 2021-7-23 10:30
标题: 黑客之刃-扫描器
前言
我在做51testing讲堂,以及和参加讲堂的同学们在微信群里互动的时候,这个互动就是你问我答,以及自由讨论,过程中有个同学提出最好能在安全工具当中集成扫描功能,这个建议勾起了我的兴趣,酝酿了一段时间,又赶上过年的特殊情况,本地过没回老家,下面大家将会看到的扫描器,就这么出炉了。
扫描器的设计思想是:灵活,易扩展,易修改,灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是,新的漏洞检测模块可清晰简单的集成进扫描器;易修改,对各个漏洞扫描模块可根据特殊情况修改探测逻辑。
再来段开场白,然后我们进入正文哈。
不管是安全,或者是渗透测试,我们的假想敌都是不法的黑客分子,就个人能力的角度来看,对漏洞的理解及漏洞利用场景的熟悉程度,决定了我们匹配哪一级别的骇客。
当然,现在的骇客好像越来越团队化了,可能是因为现在高价值系统的防护成本越来越高,独狼下口越来越难了,所以他们聚成缕子了,人越来越多,肉越来越少了,所以有肉他们就要吃了,所以发展出APT攻击了,APT就是高级可持续性渗透,啥意思,就是你不是花了几十万的软硬件防护成功嘛,就是不信你没漏洞,一天找不到,就两天,两天不行,三天,三天不行,四天,五天,六天..., 等到你海枯石烂,防护墙过期那一天....
上面是开玩笑,大家可以搜索下APT,渗透层面的黑客,首先是个战术大师,就像刺客,也许说忍者更贴切。
刺客的匕首,扫描器,文章脉络很简单,先讲怎么用,在讲怎么扩展.
[attach]133338[/attach]
扫描器界面:
[attach]133339[/attach]
好了,上面就是我们的扫描器,全部使用命令操作,简单易记,大家跟着敲就可以了。
help: 列出集成的插件命令和描述。
[attach]133340[/attach]
我们开始扫描之前要做些基本的设置,输入helpset命令,查看我们需要设置那些参数,带*号的是必选项.[attach]133341[/attach]
1.2info 命令
info :显示详细的漏洞检测模块
info命令的使用格式是: info [插件名称],插件名称就是上图中输入help命令得到的。
输入info attacks:
[attach]133342[/attach]
输入infoaudit命令:
[attach]133343[/attach]
输入infobrute命令:
[attach]133345[/attach]
输入 infodisclosure
[attach]133346[/attach]
1.3set命令:
set命令格式: set [选项] [参数]
[attach]133347[/attach]
1.4check 命令:
[attach]133348[/attach]
其中agent参数,即版本信息默认会随机获取。
1.5exec命令
执行检测命令,命令格式:exec插件名称[.模块名称]
如果只输入插件名称[attacks,audit,brute,disclosure],则会执行当前插件下所有漏洞检测模块,如果输入插件名称.模块名称,例如:attacks.xss,则仅会执行当前插件下指定的模块名称。
输入 exec audit : 执行检测中间件插件下的所有模块
[attach]133349[/attach]
输入 execattacks.xss :使用注入插件中的检测xss漏洞模块:
[attach]133350[/attach]
输入 infoattacks.blindsqli :检测sql盲注漏洞
[attach]133351[/attach]
1.6report 命令:
生成测试报告命令
命令参数: report[报告名称]
注:只有执行过起码一次完整的插件检测才能生成报告,而不是专项漏洞检测,即 exec 插件名称,而不是 exec 插件名称.模块名称
输入命令: report webscan
[attach]133352[/attach]
按照提示显示的目录,打开测试报告,报告格式是html的:
[attach]133353[/attach]
好了,以上就是使用扫描器的所有命令和完整的执行流程.
[attach]133354[/attach]
我们的插件编写,先从scan\lib\utils\settings.py全局配置文件开始
第一步:先看基础路径配置,整个项目的目录结构就在这里
[attach]133355[/attach]
第二步,配置字典路径,漏洞检测模块需要用到的字典,统一放在这个路径下
[attach]133356[/attach]
第三步:配置插件路径,新增的插件统一按下面的格式配置
[attach]133357[/attach]
第四步:配置插件描述信息,和第三步的插件路径是对应的
[attach]133358[/attach]
第五步:配置漏洞模块描述信息,和第四步的插件描述是对应的
[attach]133359[/attach]
第六步:配置漏洞模块路径信息,和第四步的插件描述是对应的
[attach]133360[/attach]
第七步:编写插件的加载模块方法
统一命名规则 插件名成_plugins()[全部模块执行方法;spec_插件名称_plugins(key:str)
[attach]133361[/attach]
第八步:编写检测漏洞模块,以attacks插件下的bshi(破壳漏洞检测)检测模块为例,
导入必须的核心库:
[attach]133362[/attach]
创建漏洞检测类,继承Request类,类名需与文件名一致
[attach]133363[/attach]
编写的漏洞检测方法,统一命名为check:
[attach]133364[/attach]
最后编写run方法,命名不建议修改,如果实在需要修改的话,还需要在第九步中修改对应的模块导入逻辑:
[attach]133365[/attach]
第九步:在localapi.py文件下编写本地API调用,为什么有本地API调用,因为我打算再写个远程API调用方法,结合安全工具的web服务使用(这一步不是必须的,只有在扩展新的插件才用到,如果在原有插件的基础上新增漏洞检测模块,则可以跳过这一步)
本地API函数的格式和基本路径,参考下图:
[attach]133366[/attach]
总结下扩展逻辑就是,命名插件便于统一管理模块,模块编写按固定格式,本地API编写用于按指定插件运行检测模块,该扫描器的检测模块,我会持续更新,谢谢大家关注。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) |
Powered by Discuz! X3.2 |