扫描技术
为什么学这门课程
在渗透测试过程中,为了节省人力和时间,通常采用手工和工具相结合的方式。使用工具,就是将一些机械性的操作自动化实现,用来提高渗透测试的效率。例如,寻找内网网段[10.10.10.20/24] 所有在线主,如果一个一个去ping?测试主机是否存活,显然是不合适的。
主机测探与端口扫描
主机测探是指确定目标主机是否存活。
端口扫描就是寻找在线主机所开放的端口,并且在端口上所运行的服务。甚至可以进一步确定目标主机操作系统类型和更详细的信息。
- 基础知识
@ 常见端口号
21 | FTP | 443 | HTTPS |
22 | SSH | 1433 | SQL Server |
23 | Telnet | 1521 | Oracle |
25 | SMTP | 3306 | MySQL |
80 | DNS | 3389 | RDP |
@ TCP 包头格式
@ TCP 三次握手过程
@ TCP 四次挥手过程
- Nmap-扫描器之王
nmap?被誉为“扫描器之王”,nmap?为开源工具,并且是跨平台的。官方网站[https:/nmap.org]
我们可以使用kali?虚拟机中的nmap
- 重要常用参数
-sP | ping?扫描 |
-p | 指定端口范围 |
-sT | TCP 连接扫描 |
-sS | TCP SYN 扫描 |
-sU | UDP 扫描 |
-sN/-sF/-sX | 隐蔽扫描 |
-sV | 版本探测 |
-O | 启用操作系统探测 |
-A | 全面扫描 |
-oA | 保存到所有格式 |
--traceroute | 路由追踪 |
- 主机发现
@ ping扫描
nmap?-sP 192.168.1.1/24
nmap?192.168.1.1-2
- 简单的扫描
nmap?192.168.1.148
nmap 会默认扫描部分端口。
- 端口扫描
@ 指定端口
nmap -p 80,3389 192.168.1.1
-p 21,80,3389
-p 1-100,3389
-p 1-1000
-p 1-65535
@ TCP 连接扫描
nmap?-sT 192.168.1.148 -p 3389
可以使用wireshark?进行抓包分析,端口开放的情况[nmap?-sT 192.168.1.148 -p 3389]
端口关闭的情况[nmap?-sT 192.168.1.148 -p 22]
@ TCP SYN 扫描
nmap?-sS 192.168.1.148 –p 3389
可以使用wireshark?进行抓包分析,端口开放的情况[nmap?-sS 192.168.1.148 –p 3389]
端口关闭的情况[nmap?-sS 192.168.1.148 –p 22]
@ 隐蔽扫描
注意:隐蔽扫描不适用于windows?系统
nmap?-sN?192.168.1.148 –p 3389
标志位全为零
nmap?-sF?192.168.1.148 –p 3389
标志位FIN=1
nmap?-sX?192.168.1.148 –p 3389
标志位 FIN=1,PSH=1,URG=1
- 目标主机版本
nmap?192.168.1.148 -p 3389 -O
目标操作系统为win7,虽然Nmap?不能完全确定目标操作系统类型,但是也可以大概确定。
- 测探服务版本
nmap 192.168.1.159 -p 21 -sV
- 全面扫描
nmap?-A 192.168.1.144
- 保存扫描报告
-oN 保存成txt 纯文本格式
nmap -sT 127.0.0.1 -sV -oN result.txt
-oX 保存成xml 格式
nmap -sT 127.0.0.1 -p 22 -sV -oX result.xml
网络漏洞扫描
我们可以通过网络漏洞扫描,全面掌握目标服务器存在的安全漏洞。市面上常用的扫描有Nessus、NeXpose、OpenVAS等,这些扫描器都有商业版和免费版或者家庭版。
本课程使用的网络漏洞扫描器是OpenVAS,可以用来识别远程主机、Web?应用存在的各种漏洞。Nessus?曾将是业内开源漏洞扫描工具的标准,在Nessus?商业化不在开放源代码后,在它的原始项目中分支出OpenVAS?开源项目。经过多年的发展,OpenVAS?已经成为当前最好的开源漏洞扫描器,功能非常强大,甚至可以与一些商业的漏洞扫描器相媲美。OpenVAS?使用NVT 脚本对多种远程系统(包括Windows、Linux、UNIX 以及Web?应用程序等)的安全问题进行检测。
- 漏洞扫描原理
网络漏洞扫描指的是利用一些自动化工具发现网络上各类主机设备的安全漏洞。这些自动化工具通常称为漏洞扫描器。
漏洞扫描通常可以分为两类:
@ 黑盒扫描
黑盒扫描一般都是通过远程识别服务的类型和版本,对服务是否存在漏洞进行判定。在一些最新的漏洞扫描软件中,应用了一些更高级的技术,比如模拟渗透攻击等。
@ 白盒扫描
白盒扫描就是在具有主机操作权限的情况下进行漏洞扫描。比如微软的补丁更新程序会定期对你的操作系统进行扫描,查找存在的安全漏洞,并向你推送相应的操作系统补丁。
白盒扫描的结果更加准确,但一般来说它所识别出的漏洞不应当作为外部渗透测试的最终数据,因为这些漏洞由于防火墙和各类防护软件的原因很可能无法在外部渗透测试中得到利用。同时,一般情况下你是没有机会获取用户名和口令。
漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期进行更新。在漏洞扫描的时候,就是利用特征库里的脚本与目标系统的反馈信息进行匹配,如果能够匹配上,就说明存在某一个漏洞。
漏洞扫描器在识别漏洞的过程中,会向目标发送大量的数据包,有时候会导致目标系统拒绝服务或被扫描数据包阻塞,扫描行为也会被对方的入侵检测设备发现。
漏洞扫描器扫描出的结果通常会有很多误报(报告发现的漏洞实际并不存在)或者漏洞(未报告发现漏洞但漏洞实际存在)。因此,需要对扫描结果进行人工分析,确定哪些漏是实际存在的,这个过程就叫做漏洞验证。这是渗透测试过程中不可缺少的一步,只有验证漏洞存在的真实性,才能对漏洞进行深度利用。
渗透测试工作中,在得到客户认可的情况下,可以使用扫描器进行扫描,但使用时一定要注意规避风险,对其系统运行可能造成的影响将到最低。
- OpenVAS?
OpenVAS?的官网地址为[http://www.openvas.org/]
推荐从iso?镜像安装OpenVAS。
目前OpenVAS?的gsm?镜像最新版本是[4.2.19],OpenVAS?的详细安装过程,被文档不做详细展示。
在使用OpenVAS?有Web?端,管理使用OpenVAS?,登录Web?端需要有一个账号,本课程中通常设置为[admin/123456]。
在使用OpenVAS?的时候,必须更新feed,否则会有[Warning: SecInfo Database Missing] 这样的报错,在更新feed?的时候,建议挂一个http?代理,例如[http://10.10.10.189:1080]。
实验:OpenVAS?初使用
我们使用OpenVAS 扫描一个目标,目标地址为[10.10.20.87]。
- 扫描目标
点击[目标]
点击[新建目标]
填写相关信息,点击[Create],即可。
创建好的目标如下
- 扫描策略
以下是OpenVAS?内置的扫描模板,也就是扫描策略,也可以自定义。
- 扫描任务
进入扫描任务模块。
创建一个扫描任务。
填写好相关信息,点击[Create]即可。
点击开始按钮,即可开始扫描任务。
经过一段时间之后,扫描完成。
点击[已完成],即可查看扫描出来的漏洞信息。
- 导出扫描报告
选择报告格式为[pdf]
点击下载按钮,即可下载扫描报告。
扫描报告首页如下
Web 漏洞扫描
- Web?漏洞扫描简述
随着互联网的发展以及云计算的发展,使得政府、银行、企业以及各个组织基本上都有自己的门户网站。Web 应用越来越多,同时Web?应用的攻击成本、难度都比较低,Web?应用成为黑客攻击的主要目标。无论黑客出于什么样的目的,Web?应用所面临的挑战都是很大的。
如何及时、快速发现Web?应用安全漏洞,并且修补安全漏洞,减轻或消除Web
?安全风险成为安全行业的重要课题。
小型Web?应用几十上百个页面,大型的Web?应用成千上万个页面。如果靠人工的方式去检测每个页面的安全性,显然,这个成本是难以估计的。所以,我们需要借助于自动化工具,帮助审计员去发现Web?安全漏洞。这些自动化工具就是Web?漏洞扫描器。
市面上Web?漏洞扫描器有很多,其中以IBM 公司的AppScan?和商业化Web?漏洞扫描器AWVS 为优秀。Web?漏洞扫描器大同小异,本课程以AWVS 为例子,讲解Web?漏洞扫描器的使用。
- Web?漏洞扫描原理
进行Web?漏洞扫描的时候,大致分为一下几个步骤:
@ 爬行网站目录
@ 使用漏洞脚本扫描
@ 保存扫描结果
实验:使用AWVS 扫描testfire.net
- 创建扫描目标
点击[New Scan],即可打开扫描向导,在Website?URL 中输入网址[http://www.testfire.net],跟着向导一步一步配置即可。
设置扫描策略,如果没有特殊的要求,默认即可。
默认即可。
在目标阶段,AWVS 会自动识别目标Web?服务相关信息,包括系统、Web?容器类型和版本、中间件信息。
如果网站中有登录框,可以将测试账号账密填写在下方。
点击[Finish],即可完成扫描向导,开始扫描工作。
Web?漏洞扫描需要一定的时间,等待即可。下图是扫描完成的结果。
整个页面布局左/中/右三个部分。最左侧是一些小工具列表。
中间部分是漏洞点和网站结构目录。
右侧是漏洞概览或者漏洞详细信息。
可以看出AWVS 把漏洞分为高危/中危/低危/信息泄露,四个级别。其中高位漏洞12?个等等。在扫描期间,共发送了17606?此请求,这个请求量还是很大的。
- 扫描结果分析
我们可以将漏洞点一次展开,可以看到含有漏洞的页面,以及造成漏洞的参数。
同时在右侧边栏,可以看到漏洞的详细信息。包括漏洞描述和测试payload。
在下方我们可以看到,AWVS 所发送HTTP 请求的原始报文和响应报文。
这些信息对于验证/分析/利用漏洞起着至关重要的作用。
- 保存扫描报告
我们可以将扫描结果保存下来。
保存的扫描结果文件的后缀名是[.wvs]。
如果安装了虚拟打印机,也可以将扫描结果保存成pdf?格式,便于传阅。
其他扫描器
有很多扫描器都可以帮助审计员开展渗透测试工作,一下列出几款比较常用的。
- 御剑
我们使用御剑扫描器,主要是扫描网站敏感目录,包括网站后台等。其扫描原理也是爆破,即通过敏感目录的字典去匹配。字典文件如下。
御剑的使用非常简单,进行简单的配置之后即可进行扫描,可惜的是御剑不能够导出扫描报告。
- k8 C段旁注查询
严格来说,K8 C段旁注查询工具,不算是扫描器,应该是信息收集工具。由于这款工具功能比较丰富,所以放在这里介绍。
@ DNS 解析
@ 查询旁(同IP 地址的网站)
该工具还可以进行C段查询/子域名查询等功能。
- whatweb
whatweb?是用来识别Web 应用指纹的,该款工具已经集成在了kali?虚拟机中。其官网地址为[https://www.whatweb.net/]