渗透测试方法论、流程 及NMAP简介
渗透测试方法论
渗透测试(penetration testing,pentest)是实施安全评估(即审计)的具体⼿段。⽅法论是在制定、实施信息安全审计⽅案时,需要遵循的规则、惯例和过程。⼈们在评估⽹络、应⽤、系统或三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结了⼀套理论 - 渗透测试⽅法论。
☻ 安全弱点
☻ 安全风险
☻ 安全漏洞
☻ “千里之堤,溃于蚁穴”
☻ 与红队不同
红队是攻击队伍,想尽⼀切办法⼊侵⽬标系统。
渗透测试是尽可能的披露⽬标系统的安全弱点、⻛险、漏洞等。任何安全问题都不要放过。
渗透测试的⽬的为安全加固(漏洞修复)做准备。
01 渗透测试的种类
黑盒测试
在进行黑盒测试时,渗透工程师在不清楚被测单位的内部技术构造情况下,从外部评估网络基础设施的安全性。并将安全弱点进行分类按照风险等级对其排序。继而将之汇总为书面报告。
☻ 不清楚内部单位技术构造
☻ 风险等级 (高危、中危、低危 、信息级别)
☻ 网站后台管理员密码
白盒测试:
白盒测试的审计员可以获取被测单位的各种内部资料甚至不公开的资料,所以
渗透人员的视野更为开阔,可以以最小的工作量达到最高的评估精准度。白盒测试从被测系统环境自身出发,全面消除安全问题。
☻ 获取被测单位全部资料或者有限资料
☻ 可以与应用的研发生命周期相结合(SDL)
☻ 代码审计
脆弱性评估
脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全制度的安全性。
☻ 脆弱性评估的方法漏洞扫描(一体化安全弱点管控平台)+ 手工发现
☻ 脆弱性评估 =安全弱点、风险、漏洞的发现
☻ 黑盒测试 = 安全弱点、风险、漏洞的发现+漏洞利用+后渗透
02 安全测试⽅法论
开放式WEB应用程序安全项目
☻ WEB安全测试指南
OWASP_Testing_Guide_v4.pdf
https://github.com/OWASP/wstg/tree/master/document
OWASP top 10
Top 10 Web Application Security Risks
名称 |
解释 |
A1:2017-注入 |
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL诸如、NOSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。
|
A2:2017-失效的身份证 |
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、**或者会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。(网站后台**)
|
A3: 2017-敏感数据泄露 |
许多WEB应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未知加密的数据来实施信用卡诈骗、身份盗窃或其它犯罪行为。未加密的数据容易遭受破坏,我们需要对敏感数据加密,传输过程中的数据、存储的数据以及浏览器的交互数据。(网站后台管理员账号密码明文传输))
|
A4: 2017-XML外部实体 |
许多较早或者配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。(XXE)
|
A5: 2017-失效的访问控制 |
对通过身份验证的用户实施恰当的访问控制攻击者可以利用这些缺陷访问未经授权的功能或数据。
|
A6: 2017-安全配置错误 |
安全按配错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云储存、错误的HTTP标头配置以及包含敏感信息的详细错误信息所造成的。
|
A7:2017-跨站脚本(XXS) |
当应用程序的新网页包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML或JavaScript的浏览器API更新现有的网页时,就会出现XXS缺陷。 XSS 让攻击者能够在受害者的浏览器中执⾏脚本,并劫持⽤户会话、破坏⽹站或将⽤户重定向到恶意站点。
|
A8: 2017-不安全的反序列化 |
不安全的反系列化会导致远程代码执行。 例:重播攻击、注入攻击和特权升级攻击。(Weblogic)
|
A9:2017-使用含有已知漏洞的组件 |
组件(例:库、框架和其它软件模块)拥有和应用程序相同的权限。 若被利用可能会造成严重的数据丢失或服务器解接管。使用含有已知漏洞的组件的应用程序和API可能会破化应用程序防御、造成各种攻击并产生严重影响。(phpStudy 2016 后门) |
A10:2017-不足的日志记录和监控 |
不足,以及事件响应的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性或转向更多系统‘以及篡改、提取或销毁数据。
|
通用缺陷列表(Common Weakness Enumeration,CWE)
漏洞类别的编号
CWE-79:
CWE-89
通用漏洞与披露(Common Vulnerabilities and Exposures,CVE)
☀ 具体某一个漏洞的编号
☀ 国内漏洞库
☀ 国外官网
- CVE-2020-9484
- CVE-2020-1938
- CVE-2017-11882
微软安全公告
MS17-010
☀ 漏洞公告
MS17-010 在17年发布的第10个安全公告
对应“永恒之蓝”漏洞
这一个漏洞可能涉及多个CVE
☀ 补丁
Kb4012215
微软的安全漏洞公告与补丁存在一一对应的关系。
一个系统如果没有打相应的补丁,就认为存在相关漏洞。
其他方法论
开源安全测试⽅法论(Open Source Security Testing Methodology Manual,OSSTMM)
信息系统安全评估框架(Information Systems Security Assessment Framework,ISSAF)
Web 应⽤安全联合威胁分类(Web Application Security Consortium Threat Classification,WASC-TC)
渗透测试流程
通用渗透测试框架
通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。
⽆论是进⾏⽩盒测试还是⿊盒测试,选择和使⽤测试步骤都是测试⼈员的责任。在测试开始前,测试⼈员需要根据⽬标系统的实际环境和已掌握的相关⽬标系统的情况,再指定最佳的测试策略。
相关阶段:
- 范围界定
- 信息搜集
- 目标识别
- 服务枚举
- 漏洞映射
- 社会工程学
- 漏洞利用
- 权限提升
- 访问维护
- 文档报告
范围界定
在开始技术性安全评估之间,务必要观察、研究目标环境的被测范围。
考虑因素:
- 取得授权
- 测试对象是什么
- 采取何种测试方法
- 测试过程中需要满足的条件
- 哪些因素可能会限制测试执行过程
- 需要多久才能完成测试
- 测试应当达成什么养的任务目标
信息搜集
使用各种公开资源尽可能地获取测试目标的相关信息。
从互联⽹上搜集信息的互联⽹渠道主要有:论坛|公告板|新闻组|媒体⽂章|博客|社交⽹络|其他商业或⾮商业性的⽹站。
此外,也可以借助各种搜索引擎中获取相关数据,如⾕歌、雅⻁、MSN必应、百度等
收集信息主要包括:
- DNS 服务器
- 路由关系
- Whois 数据库
- 电子邮箱地址
- 电话号码
- 个人信息
- 用户账户
注: 收集的信息越多,渗透测试成功的概率越高。
目标识别
识别目标的网络状态、操作系统和网络架构。
该工作旨在完整的展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务。
哪些设备在线
如何访问
服务枚举
这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。
- 开放了那些端口
- 端口上运行的服务以及详细的版本
- 技术架构
- Web 容器
- 开发语言以及框架
- 站库分离
- 前后端分离
漏洞映射
可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。
查找漏洞
漏洞扫描
社会工程学
如果目标网络没有直接的入口,欺骗艺术将起到抛砖引玉的重要作用。
|
漏洞利用
仔细检查和发现目标系统中的漏洞后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。
涉及攻击前、攻击、攻击后的相关行动。
权限提升
获取目标系统的控制权是渗透成功的标识。
访问维护
多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。
例如,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。
- 埋藏后门
- 隧道技术
文档报告
在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。
渗透测试执行标准
渗透测试执⾏标准(Penetration Testing Execution Standard,PTES)的先驱都是渗透测试⾏业的精英。
渗透测试执行标准包含两个部分:PTES方法论 ;PTES 技术指南。
这个标准有渗透测试7个阶段的标准组成,可以在任意环境中进行富有成果的渗透测试。
七个阶段
- 事前互动
- 情报搜集
- 威胁建模
- 漏洞分析
- 漏洞利用
- 深度利用
- 书面报告
主要特点优势
1.它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要方面,如范围蔓延(scopecreep)
2.它介绍了多数测试任务的具体方法,可指导准群的测试目标系统的安全状态。
3.它汇聚了多名日行一渗的渗透测试专家的丰富经验。
4.它包含了最日常的以及很罕见的相关技术。
5.它浅显易懂,可根据测试工作的需要对应相应测试步骤进行调整。
简化渗透测试流程
明确目标 信息收集 漏洞探测 验证漏洞 漏洞利用 形成报告
确定范围 确定规则 确定需求 |
基础信息 系统信息 应用信息 人员信息 防护信息 |
系统漏洞 Web服务器漏洞 Web应用漏洞 其他端口 通信安全 |
手工验证 工具验证 实验验证 (生产环境一般不要去动) |
定制EXP 防御绕过 进一步渗透 清理痕迹 |
整理结果 补充介绍 修复建议 |
黑客攻击一般过程
Nmap(“扫描器之王”)
【http://nmap.org】
跨平台。
建议将 nmap 安装在物理机上。
主机发现
我是在kali 进行扫描:
端口扫描:
默认扫描:
确定目标服务器开放的端口,以及端口上所运行的环境
sudo nmap 192.168.137.141(扫描出来的目标ip)
默认情况下。Namp 扫描 top 1000 .
验证:
sudo nmao 192.168.137.141 –p 80
sudo nmap 192.168.137.141 –p 1-65535
sudo nmap 192.168.137.141 –p-
sudo nmap 192.168.137.141 –p*
TCP全连接扫描
特点:会建立完整的TCP三次握手过程
优点:准确
缺点:会留下大量的、密集的连接记录。
sudo nmap 192.168.137.141 –p 80 -sT
SYN 半连接扫描
特点:确定端口开放的时候,仅进行TCP三次握手的前两次过程。
优点:快速,绕过防火墙
缺点:需要管理员权限
sudo nmap 192.168.137.141 –p 80 -sS
隐蔽扫描(Linux)
FIN 扫描
sudo nmap 192.168.137.141 –p 80 -sF
Null 扫描
sudo nmap 192.168.137.141 –p 80 –sN
Xmass 扫描
sudo nmap 192.168.137.141 –p 80 -sX
服务详细版本
sudo nmap 192.168.137.141 –p 80 -sV
操 作 系 统 类 型 ( 不 是 很 准 确)
sudo nmap 192.168.137.141 –p 80 -O
全面扫描
sudo nmap 192.168.137.141 - -A –oN /tmp/namp.A
保存扫描结果
sudo nmap 192.168.137.141 -oN test.txt
扫描时序(速度)
sudo nmap 192.168.137.141 –T5
禁用ICMP 探测
【-Pn】
使用namp 脚本扫描漏洞
【--script=】
kali nmap 脚本路径【/usr/share/nmap/scripts】
nmap 192.168.137.141 --script=smb-vuln-ms17-010.nse -p 445