Metasploit渗透测试实验报告

Posted ling_xiao007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Metasploit渗透测试实验报告相关的知识,希望对你有一定的参考价值。

一、实验目的:

1.了解Metasploit框架的概念、组成,掌握Metasploit框架的基本使用,能够利用Metasploit对已知漏洞进行渗透攻击;模拟灰盒测试对DVSSC(定V)公司的网络进行渗透,最终得到系统权限,并有效开展后渗透攻击。

2.在渗透过程中逐渐掌握科学的渗透测试方法,即 PTES标准渗透测试方法七个阶段:

(1)前期交互阶段(跳过)
(2)情报搜集阶段
(3)威胁建模阶段
(4)漏洞分析阶段
(5)渗透攻击阶段
(6)后渗透攻击阶段
(7)报告阶段;

3.在渗透测试过程中逐渐清晰渗透所要求掌握的技能,有针对有目的的进行初步学习,为将来进一步学习奠定一定的基础。

二、执行摘要

1.背景:

    《Metasploit渗透测试魔鬼训练营》一书采用独特的让读者成为虚拟渗透测试的主角的方式,经历一次对DVSSC公司网络的渗透测试任务。渗透测试的目标为DVSSC公司DMZ网段以及内网客户端主机。四个主机均存在严重漏洞缺陷,可执行不同方式的攻击方式。

2.整体情况:

    信息搜集阶段获得了dvscc的域名注册信息、地理位置,以及DMZ网段操作系统版本、开放端口及其服务版本等信息,但域名注册信息存有疑问。

    漏洞扫描阶段获得DMZ网段主机大量漏洞信息,可采取不同方式的攻击方式,如口令猜测、网络服务渗透攻击、浏览器渗透攻击等。

    渗透攻击阶段对DMZ网站主机部分漏洞进行利用,但有部分漏洞没有利用成功。对getshell的主机进行了有效的后渗透攻击。

三、具体报告

1.实验环境

1)网络环境拓扑



2)渗透测试实验环境搭建

①硬件升级:为能够同时开启2~5台虚拟机,将原本硬件(CPU:core i5-4210U @1.70GHz 2.40GHz;内存4G;硬盘500G机械硬盘)升级到内存8G,500G机械硬盘+ 240G固态硬盘,虚拟机全部放置在固态硬盘。

②虚拟机软件安装与网络环境配置:

安装VMware Workstation软件(VMware Workstation Pro 12.0.0 build-2985596版本)

③虚拟网络配置:

Windows8.1环境下需要以管理员身份运行VMwareWorkstation Pro 12。如图所示进行设置,将VMnet1子网IP地址段设为192.168.10.0,VMnet8子网IP地址段设为10.10.10.0。


一旦在VMware中添加这些虚拟网络,则在实体计算机上的“网络”会生成相应的虚拟网卡(桥接类型的虚拟网络除外)


为弄清虚拟机网络配置如何形成的定V公司网络拓扑,另外学习了VMware中虚拟网络(VMnet)的三种连接模式:

a)桥接:该虚拟网络和实体计算机的网卡以网桥方式连接。虚拟网络和实体计算机上的物理网卡进行桥接,这样使用该虚拟网络的虚拟计算机就能够借用实体计算机的物理网卡和实体网络进行通信了。当然虚拟计算机上的网卡需要配置和实体计算机同一IP网段的IP地址。


b)NAT:实体计算机上启用了NAT,连接到该虚拟网络的虚拟计算机通过NAT和物理网络进行连接


c)仅主机:则虚拟网络和实体计算机没有任何网络连接,仅和连接到同一虚拟网络的虚拟计算机之间可以通信。


在VMware中编辑好虚拟网络后,可以在“虚拟机设置”中配置虚拟机网卡和哪个虚拟网络进行连接。选择“桥接”时,则该虚拟机的网卡和VMnet0虚拟网络进行连接;选择“NAT”时,则该虚拟机的网卡和VMnet8虚拟网络进行连接;选择“仅主机”时,则该虚拟机的网卡和VMnet1虚拟网络进行连接。还可以把网卡连接到自定义的虚拟网络中。


④虚拟机镜像配置

a)OWASP BWA、Win2K3Metasploitable、Kali2.0网络适配器设置为NAT模式,开启DHCP服务,先前BT5已分配10.10.10.128,以及学习过程中其他靶机的安装,故三台主机ip自动分配为10.10.10.129、10.10.10.130、10.10.10.141;

b)Linux Metasploitable启用两个网络适配器,一个设置为Host-Only,一个为NAT,故有eth0及eth1两个网卡,ip地址为10.10.10.254(NAT,连接DMZ的VMnet8网段)和192.168.10.254(Host-Only模式,连接企业内网VMnet1网段);

c)WinXP Metasploitable网络适配器,设置Host-only模式,自动分配到192.168.10.128地址,网关被设置为192.168.10.254。

为进一步学习网卡配置,手动自己配置了一遍Linux Metasploit的网络配置,如下:

1)LinuxMetasploitable修改/etc/network/interfaces网卡配置文件如下所示:

root@bt:~# sudo vim /etc/network/interfaces
auto lo
  iface lo inet loopback
auto eth0
  iface eth0 inet static
  address 10.10.10.254
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
auto eth1
  iface eth1 inet static
  address 192.168.10.254
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255


之后输入

sudo/etc/init.d/networking restar

t命令重启网卡,IP地址就设置完成了。

2)接下来是配置路由功能的过程。修改/etc下的sysctl.conf文件,打开数据包路由转发功能:

root@metasploitable:/etc# vim sysctl.conf
……
net.ipv4.ip_forward = 1                 #将这行注释取消掉
……

3)然后设置转发规则:root@metasploitable:~# /sbin/iptables -t nat-A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE


实验最初就是确保攻击机与靶机是否处于同一网段,互相执行Ping命令检测网络畅通。对于VMnet1网卡,在开启除攻击机以外的其他主机的情况下,用WinXP Metasploitable主机访问http://www.dvssc.com,进入登录页面,说明VMnet1、VMnet8下主机均正常。

2.信息搜集阶段

该阶段要完成两项任务:

i.通过信息搜集工作,确定渗透测试目标的范围。

ii.通过情报信息搜集,发现渗透目标的安全漏洞与脆弱点,为以后渗透攻击提供基础。

 

1)对定V公司网络进行外围信息搜集

外围信息搜集能够了解到网站域名、IP地址、服务器操作系统类型版本,并进一步针对门户网站搜索到一些关于定V公司业务、人员与网站服务的细节信息。从而确定渗透测试目标的范围,有必要的话可以实施社会工程学攻击。

①被动信息搜集

DNS和IP地址:Whois域名注册信息查询(whois[域名]);Nslookup和dig域名查询(nslookupset type=A;Dig @ [域名]);www.netcraft.com




发现由CYANDOMAINS,INC.注册,IP地址是137.175.78.85,在网络区段发现4台主机分别Win2K3和linux下运行。同时发现似乎并不是定V公司。暂且放在一边。

另外还有其他信息搜集方式,如i.P2Location(www.cz88.com)地理位置查询;ii.IP2Domain反查域名;iii.Traceroute路由追踪()。

特别实践了一下搜索引擎搜集,Google hacking技术

操作符+ 、- 、~ 、. 、* 、""

intext:把网页中的正文内容中的某个字符做为搜索条件.

intitle:搜索网页标题中是否有所要找的字符.

cache:搜索google里关于某些内容的缓存.

define:搜索某个词语的定义.

filetype:搜索指定类型的文件

info:查找指定站点的一些基本信息.

inurl:搜索我们指定的字符是否存在于URL中.

link:搜索:inurl:www.4ngel.net所有和www.4ngel.net做了链接的URL.

site:例如:site:www.4ngel.net.将返回所有和4ngel.net这个站有关的URL.

②主机探测端口及服务扫描

活跃主机扫描使用ICMP Ping自然能够做到,但为了更加隐秘

a)主机发现模块:

可以使用metasploit的这些模块位于Metasploit源码路径的modules/auxiliary/scanner/discovery/目录中,主要有以下几个:arp_sweep、ipv6_multicast_ping、ipv6_neighbor、ipv6_neighbor_router_advertisement、udp_probe、udp_sweep。

b)nmap主机探测

使用nmap -sV -Pn -O[目标主机]可以获取目标主机开放端口号及其详细的服务版本信息,同时对操作系统进行识别,Pn参数在扫描前不发送ICMP进行主机活跃检测,强制扫描,能够避免ICMP不通导致主机存活性误判而不进行扫描。

在Metasploit中可以使用网络数据库共享渗透测试信息数据库。开启PostgerSQL数据库/etc/init.d/postgersqlstart

用db_status命令检测是否连接正常。(为搞清数据库用户名口令,可以查看database.yml)


将nmap输出结果以xml格式导入Metasploit并查看

msf > nmap-sV -Pn -oX Subnet130.xml 10.10.10.0/24
msf > db_importSubnet1.xml
msf > services


表2 定V公司网络探测与扫描结果


③针对性扫描

当然除了扫描外,还可以用Metasploit的Scanner辅助模块等进行服务查点。

为了学习Ruby脚本,尝试编写自己的扫描器,


这个简单的扫描器使用Msf::Exploit::Remote::Tcp mixin处理TCP通信,使用Msf::Auxiliary::Scanner  mixin继承扫描器所需的各个参数与方法。默认12345端口,一旦连接将发送一个消息,接受来自服务器的响应后,将响应消息和服务器信息输出。

对发现的系统与文件管理类网络服务,例如telnet、ssh、ftp等,可以进行弱口令猜测或是嗅探。为简单测试口令嗅探,我根据书本提示构造words.txt,对ssh进行口令试探攻击。完成攻击后,在网上下载了若干不同类别的口令字典。同样使用psnuffle对DMZ网段监听,获得用户名和口令为msfadmin/msfadmin。得到了ssh和ftp访问权限。

a)ssh口令猜测

msf > use auxiliary/scanner/ssh/ssh_login
msf auxiliary(ssh_login) > set RHOSTS10.10.10.254
msf auxiliary(ssh_login) > set USERNAMEroot
msf auxiliary(ssh_login) > set PASS_FILE/root/pass.txt
msf auxiliary(ssh_login) > set THREADS 50
msf auxiliary(ssh_login) > run


b)psnuffle监听

msf > use auxiliary/sniffer/psnuffle 
msf auxiliary(psnuffle) > run

3.漏洞评估

由于BT5的OpenVAS按照书本配置启动不能正常访问GSA,询问他人和参考网上资料都没有解决,故放弃OpenVAS扫描器。使用Nessus。

在tenable官方主页下载Nessus home版本安装包(选择 kali linux64位)使用命令dpkg -i Nessus-6.5.4-debian6_amd64.deb进行安装,使用命令 /etc/init.d/nessusdstart 进行启动,选择使用Nessus的B/S架构,在浏览器中输入https://127.0.0.1:8834打开Nessus主页,启动后设置本地用户名和密码(admin/admin),输入Active code(激活码)才可以进行插件的更新安装。

访问http://www.tenable.com/products/nessus/nessus-homefeed 进行注册,填写正确邮箱(QQMail失败,使用gmail成功),注册完成会收到有Active code邮件。输入Active code之后就可以开始下载安装插件了。却收到Download Fail页面。参考网上解决方法使用root@kali:/opt/nessus/sbin# ./nessuscli update命令,依然提示安装失败(第二次安装Kali系统后成功)。故采用另一种离线更新方式,登录https://plugins.nessus.org/v2/offline.php,要求需要输入两个信息,一个是challengecode,另一个是activation code 。challengecode获得由/opt/nessus/sbin下的./nessuscli fetch --challenge命令。Activation code由邮件重新获得,之前一个已经被使用过而失效。

提交信息获得离线的plugin以及license下载url。统统下载放置到/opt/nessus/sbin下。之后

①首先导入license。到/opt/nessus/sbin下,执行./nessuscli fetch --register-offlinenessus.license。


②加载nessus plugins,将all-2.0.tar.gz放到目录下,然后通过nessuscli update all-2.0.tar.gz进行升级


③启动nessus,在次目录下,使用nessusd启动


④插件更新安装完毕后,即可输入之前的账号和密码登陆操作页面。


对DMZ网段靶机以及内网客户机靶机进行漏洞扫描,由于使用家用版,扫描插件比较基本,得到初步漏洞信息。漏洞信息与书本所提到到漏洞略有出入。


表3 nessus漏洞扫描结果




4.威胁建模阶段

现只考虑最基本的攻击计划,对后台服务器Win2K3 Metasploitable(10.10.10.130)可采用口令猜测攻击获取口令,触发ms08_067或ms03_026漏洞,进行网络服务渗透攻击。对于网关服务器Linux Metasploitable(10.10.10.254),同样可以进行口令猜测,触发Samba漏洞,用sessions命令将shell升级为Meterperter shell进行后渗透攻击。内网客户机主机WinXp Metasploitable,可以触发ms08_067漏洞,或者ms11_050漏洞,获得系统权限。

5.渗透攻击阶段

网络渗透攻击

1)①目标主机:Win2K3Metasploitabel

②利用漏洞:ms03_026 Microsoft RPC Interface Buffer Overrun

③攻击过程

加载msfconsole,利用exploit/windows/dcerpc/ms03_026_dcomMetasploit模块,加载windows/meterperter/reverse_tcp攻击载荷,设置RHOST、LHOST、LPORT后执行exploit命令。此攻击载荷返回一个session。


④ms03_026机理分析

Microsoft RPC InterfaceBuffer Overrun Ms03_026漏洞是由于不正常处理畸形消息所致,影响使用RPC的DCOM接口,而此接口处理由客户端发给服务器的DCOM对象激活请求。攻击者可以成功利用此漏洞以本地系统权限执行任意命令。 Flashsky的分析指出MS03-026修复两个漏洞,一个是当地的堆栈溢出,另一个是远程栈溢出。两个漏洞均来自一个API。

HRESULTCoGetInstanceFromFile( 
  COSERVERINFO* pServerInfo, 
  CLSID * pclsid, 
  IUnknown * punkOuter, 
  DWORD dwClsCtx, 
  DWORD grfMode, 
  OLECHAR * szName, //IPersistFile::Load初始化,该参数导致缓存器溢出
  ULONG CMQ, 
  MULTI_QI * rgmqResults 
); 
hr= CoGetInstanceFromFile(pServerInfo,NULL,0,CLSCTX_REMOTE_SERVER,STGM_READWRITE,L"C:\\\\1234561111111111111111111111111.doc",1,&qi);

当文件名太长时将产生缓存器溢出,因为RPCSS的GetPathForServer函数只有0x220空间,然而API的检查使得不能利用API进行渗透。但能够利用用LPC构造数据包的方式进行利用。用lstrcpyw进行拷贝的。 在客户端给服务器传递这个参数的时候,会自动转化成如下格式:L“\\\\servername\\c$\\1234561111111111111111111111111.doc"这样的形式传递给远程服务器,于是在远程服务器的处理中会先取出servername名,这里没做检查,给定了0X20(默认NETBios名)大小的空间,于是堆栈溢出产生了。当输入足够多的字符时候,堆栈发生溢出,并且导致可以直接执行构造的shellcode。

关键代码如下:

GetPathForServer 
text:761543DA push ebp 
text:761543DB mov ebp, esp 
text:761543DD sub esp, 20h <-----只有0x20的长度 
text:761543E0 mov eax, [ebp+arg_4] 
text:761543E3 push ebx 
text:761543E4 push esi 
text:761543E5 mov esi, [ebp+hMem] 
text:761543E8 push edi 
text:761543E9 push 5Ch 
text:761543EB pop ebx 
text:761543EC mov [eax], esi 
text:761543EE cmp [esi], bx 
text:761543F1 mov edi, esi 
text:761543F3 jnz loc_761544BF 
text:761543F9 cmp [esi+2], bx 
text:761543FD jnz loc_761544BF 
text:76154403 lea eax, [ebp+String1] <----servername 只有0X20的长度
text:76154406 push 0 
text:76154408 push eax 
text:76154409 push esi <----------------------压入文件名参数
text:7615440A call GetMachineName<-------------函数返回则缓存器溢出
GetMachineName: 
text:7614DB6F mov eax, [ebp+arg_0] 
text:7614DB72 mov ecx, [ebp+arg_4] 
text:7614DB75 lea edx, [eax+4] 
text:7614DB78 mov ax, [eax+4] 
text:7614DB7C cmp ax, 5Ch <-----------------控制servername长度是0X5C 
text:7614DB80 jz short loc_7614DB93 
text:7614DB82 sub edx, ecx 
text:7614DB84 
text:7614DB84 loc_7614DB84: ; CODE XREF: sub_7614DA19+178j 
text:7614DB84 mov [ecx], ax <-------将servername写入地址,长度大于Ox20则溢出
text:7614DB87 inc ecx 
text:7614DB88 inc ecx 
text:7614DB89 mov ax, [ecx+edx] 
text:7614DB8D cmp ax, 5Ch 
text:7614DB91 jnz short loc_7614DB84 
text:7614DB93 

2)  ①目标主机:LinuxMetasploitabel

②利用漏洞:Distcc服务漏洞CVE-2004-2687

        ③漏洞详情

distcc2.x,用于XCode 1.5和其他人,当不限制访问服务器端口配置,允许远程攻击者执行任意命令通过编译工作,由服务器没有执行授权检查。

④攻击过程

    加载msf框架,使用exploit/unix/misc/distcc_exec模块,加载cmd/unix/reverse攻击载荷,设置LHOST、RHOST后执行exploit -z,sessions -u提升为Meterpertershell。



5.后渗透攻击阶段

Meterperter是Metasploit框架中通常作为攻击载荷所使用能够返回一个控制通道的模块。在利用ms03_026漏洞拿到shell后可以对目标系统进行更为深入的渗透,包括密码哈希值获取,特权提升、跳板攻击、纯内存工作模式、反追踪等等。

进程移植:使用migrate命令可以将Meterperter会话从一个进程移植到另一个进程,首先用ps命令获得正在运行的进程pid。然后执行migrate pid将进程移植到explorer.exe中。


键盘记录:使用keyscan_start命令开启键盘记录在用户登录系统后用keyscan_dump参看可以得到明文密码。


哈希值登录:不使用键盘记录功能可以用Meterperter中的hashdump命令获取系统本地文件中的用户名和密码哈希值。拿到LM,NTLM哈希值后可以在www.onlinecrack.com中在线破解,或者直接用windows/smb/psexec传递哈希值进行渗透。


取得SYSTEM 权限:通过net user命令创建限制权限的普通用户账号,并提权。


持久控制:Meterperter仅仅是驻留内存中的shellcode,一旦目标主机重启将失去控制,为此使用Meterperter中persistence、metsvc、getgui等后渗透攻击模块,在目标主机中安装自启动和永久服务的方式从而持久控制。




痕迹清除:对目标主机操作完后,用clearev命令对日志留下的入侵痕迹进行清除。


升级command shell:Metaspliot框架支持使用sessions -u 命令将命令行shell升级为Meterperter。使用usermap_script对linux主机进行渗透,拿到shell后将其升级为Meterperter shell。

需要使用setg命令对LHOST以及LPORT进行设置,用exploit -z渗透,session -u命令升级为Meterperter。



四、实验总结

    本次实验,掌握了Metasploit框架下的基本操作,为更好学习渗透,特别安装了Kali 2.0虚拟机。在PTES标准渗透测试方法的指导下,对各个渗透环节有了初步的了解。信息搜集阶段学会了使用各种信息搜集方法,但Google Hacking技术仍需灵活掌握。

    在学习实践渗透时,为了接下来更有效的学习,对8086汇编语言、ruby等进行了一定的学习。在漏洞机理分析方面的学习,一开始感觉力不从心,另外初步学习了《加密与解密》、《0day安全:软件漏洞分析技术》,了解了OD、IDA、HIEW、Windg等工具的基本使用。但依旧不能熟练的开展分析。对于Poc、exp代码有一定的阅读能力。

    渗透实验仅仅在虚拟机靶机上进行,且只是对内网渗透,对出现的个别问题参阅资料后也不能全部解决。希望将来能够深入学习相关知识。

 

以上是关于Metasploit渗透测试实验报告的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-2 20155315《网络对抗技术》Exp5 :MSF基础应用

逆向&编程实战Metasploit中的安卓载荷凭什么吊打SpyNote成为安卓端最强远控

使用Metasploit渗透攻击Windows7并远程执行命令

Metasploit渗透测试(框架介绍靶机安装基本使用方法)

2019-2020-2 网络对抗技术 20175206李得琛 Exp6 MSF基础应用

Kali渗透Windows服务器