Allion Labs/ Jackson Chen
漏洞检测,您到位了吗?
APP开发过程中,信息资产与风险管理,是相当重要的一环,但其实很多公司都没有专业的测试人员,出于利润,大部分公司把时间和金钱都用在对APP的开发上,缺少了完整的测试检测环节,从而导致APP上线后问题不断,目前常见的使用平台为Kali Linux,其中包含多种类型工具供用户使用,但我们也不局限于此平台,仍可使用其他工具使测试更加完整。
工具 | 功能 |
Kali Linux | 针对网页与APP进行信息收集、
模拟漏洞攻击和漏洞分析 |
ApacheBench | 网页与APP压力测试 |
Nessus | 针对系统进行漏洞分析 |
表一:测试工具及功能
测试平台
图一:Kali Linux
系统自带工具集Kali Linux系统最顶层是十四种安全工具分类,每一个分类有不同的测试工具,以下介绍其中三种类型,分别为信息收集、压力测试、漏洞分析。
图二:Kali Linux十四种安全工具分类
1. 信息收集
在渗透测试中,我们需要尽可能收集多一些目标的信息,因为资产探测和信息收集决定了你发现安全漏洞的机率有多大。如何最大化的去收集目标范围,尽可能的收集到子域名及相关域名的信息,这对我们下一步的漏洞测试显得尤为重要,以下介绍信息收集的实际用例。
I.需要知道的信息有:
-需要破解的主机名或是IP和URL
-区分是https & http
-登入成功和失败时返回信息的区别
II. 使用工具
-Kali Linux 中信息收集的dnsenum,和密码攻击中的Hydra
III. 操作步骤
-先使用dnsenum得到目标的IP地址
图三:获取目标IP地址
Hydra的指令
Hydra –l 用户名 –p密码字典 –t线程-vV –ip ssh
图四:获取账号及密码
IV. 解決方法
A.动态登入
需限制登入时间以及登入账号的次数,例如: 短信内标注有效时长为5min,实际有效时长却约为30min,对获取动态密码次数做了限制,但未对密码暴力破解做任何防护,防止暴力破解密码的方式。
B. 静态登入
需要使用Session去认证登入者的身份,通常在用户完成身份认证后,存下用户数据,接着产生一组对应的id,这个id必须为独特的,所以会使用uuid的机制处理。
C.双重验证
现在也有使用双重认证的方式去保护使用者的账户安全,像是登入Google账户,就可以设定登入之后,Google会发送一条短信,其中有另外的登入密码,也可选择语音的方式得知登入密码,更加保护了帐户安全
D.禁止密码输入频率过高的请求
当同一来源的密码输入出错次数超过一定的值,立即通过邮件或者短信等方式通知系统管理员
2.压力测试
压力测试在大型系统的设计和开发中非常重要,压力测试可以帮助我们发现系统的性能且评估系统能力,且进行针对性的性能优化,也可以帮助我们验证系统的稳定性和可靠性。除了Kali Linux以外,还有以下常见工具:
图五:ApacheBench
ApacheBench的测试,可以轻易的模拟 1,000以上 使用者的同时联机(concurrent users) 测试,输出的测试结果也相当清楚。并且不局限于linux操作系统,可以在Windows上安装,以下为压力测试实际用例:
I.使用工具
-ApacheBench
II.操作步骤
-先到Apache的文件夹位置,执行ab.exe,语法为ab –n 100 –c 10 {url}
图六:压力测试执行ab.exe
得到测试结果
图七:压力测试测试结果
字段讲解如下:
Server Software: WEB主机的操作系统与版本(若web主机设定关闭此信息则无)
Server Hostname: WEB主机的IP地址(Hostname)
Server Port: WEB主机的连接阜(Port)
Document Path:测试网址的路径部分
Document Length:测试网页响应的网页大小
Concurrency Level:同时进行压力测试的人数
Time taken for tests:本次压力测试所花费的秒数
Complete requests:完成的要求数(Requests)
Failed requests:失败的要求数(Requests)
Write errors:写入失败的数量
Total transferred:本次压力测试的总数据传输量(包括HTTP Header的数据也计算在内)
HTML transferred:本次压力测试的总数据传输量(仅计算回传HTML的数据)
Requests per second:平均每秒可响应多少要求
Time per request:平均每个要求所花费的时间(单位:毫秒)
Time per request:平均每个要求所花费的时间,跨所有同时联机数的平均值(单位:毫秒)
Transfer rate:从ab到Web Server之间的网络传输速度
3.漏洞分析
漏洞分析是指在代码中迅速定位漏洞,弄清攻击原理,准确地估计潜在的漏洞利用方式和风险等级的过程。我们将使用Nessus这项工具,这套工具能够帮助系统管理者搜寻系统主机的漏洞所在,用户可自行撰写攻击测试程序,且让系统管理者对系统主机进行错误的更正和防护,以避免被入侵者攻击,以下为弱点扫描流程
图八:弱点扫描流程
I. 使用工具
-Nessus
II.操作步骤
图九:Nessus开始界面
Nessus基本流程为(1)登录,(2)创建或配置策略,(3)运行扫描,(4)分析结果,根据扫描要求,选择配置策略,也就是可以在目标上执行的漏洞测试,Nessus提供的扫描模板。
图十:Nessus扫描模板
建立策略
名称为Local Vulnerability Assessment
目标为本机地址: 192.168.18.149
图十一:Nessus建立策略
启动屏幕
图十二:Nessus启动屏幕
图十三:扫描结果
点选本机的漏洞情况,可以查看详细漏洞信息,并且会提供解决方法
图十四:漏洞情况
漏洞描述为:远程主机受远程桌面协议(RDP)中的远程执行代码漏洞影响。未经身份验证的远程攻击者可以通过一系列特制请求来利用此漏洞来执行任意的代码,也可汇出一份PDF档,提供解决方法
安全风险一站式测试方案
针对信息安全、网页和APP,可提供以下测试方案:
- 资料安全检查
检视内部作业提供改善建议,提升资料安全防护能力
- 漏洞侦测分析
WEB主机或系统做安全扫描,提供结果并协助修正
- 压力测试
WEB压力测试,在同一时间能有多少人在在线,检视WEB的负载能力
测试常见问题,一对一解析
- 渗透测试有标准流程吗?
有的,请参考下列三个由几个开源组织制定的渗透测试标准流程
OWASP ( Open Web Application Security Project )
OSSTMM (Open Source Security Testing Methodology Manual)
PTES ( Penetration Testing Execution Standard )
- 渗透测试执行完毕后就完全没有问题了吗?
由于黑客攻击手法层出不穷,即使系统不进行任何更动,也难以保证未来不会被新的方式入侵,因此仍建议客户定期执行测试。
- 渗透测试与弱点扫描的差异?
渗透测试是以人工方式模拟黑客的思维,针对系统做攻击测试,比较考验测试人员本身的经验以及知识,弱点扫描则是使用自动化工具对系统进行检测,找出所有已知的风险。
百佳泰安全风险检测服务阻挡虚拟世界的威胁
在虚拟世界中,安全漏洞风险无处不在,百佳泰能够模拟黑客攻击的手段对各类系统进行安全检测,并评估其风险,提供解决方案。在产品、APP及网页上市前,针对其使用特性及用户情景,提出客制化的安全风险检测,透过全面性、多样性的测试方式及测试手法,替您的产品、APP及网页做资安把关。除此之外,百佳泰亦有针对物联网装置的检测服务,可点阅:物联网无线应用之安全风险:您的智能装置真的安全吗?(可点击:物联网无线应用之安全风险:您的智能装置真的安全吗?)避免装置被破解,导致数据被窃取等隐患问题。