新发布的Metasploit Vulnerable Services Emulator能取代传统靶机吗?
上个月,Metasploit官方发布了一款名为Metasploit Vulnerable Services Emulator的攻防模拟实训工具。通过这款开源工具,安全人员可以通过它提供的漏洞操作平台来测试渗透测试目标。
我们在之前的文章中就曾提到过,市面上已经有Metasploitable2和Metasploitable3这样专门针对MSF使用的模拟器,也有其他“一众靶机”,为什么又要推出这款Metasploit Vulnerable Services Emulator呢?
开发者Jin Qian的解释是:
很多人可能会想,为什么我们不给每个测试、训练模块配置脆弱性测试服务。原因很简单:这很耗费时间,且配置脆弱性测试服务很复杂。首先,你需要有漏洞软件,需要下载吧,但是有时候软件太老了没有地方下载。有些较老的软件还可能因为安全问题被厂商移除了。针对一个软件配置脆弱性测试服务需要耗费几个小时,时间长短取决于这个软件。即便有Metasploitable虚拟机使你在第一次建立漏洞实验室便捷很多,但是依然不简单。
作者称,设计这个模拟器有两个目的:
1. 测试Metasploit模块
2. 帮助用户学习Metasploit
笔者从GitHub下载了这款模拟器,经过试用,发现了一些惊喜。
模拟器使用
要使用这款Emulator首先要准备好靶机和攻击机,攻击机中运行Metasploit,靶机中运行模拟器,无平台限制,只需安装perl环境。
靶机:
从GitHub下载文件后解压,可以得到这几个文件:
我们在终端运行:
perl vulEmu.pl
>>activate exploits/windows/iis/ms01_023_printer
activate之后的是相应的漏洞模块,可以打开service.cfg文件查看模块。
攻击机:
打开msf后运行:
msf > use exploit/windows/iis/ms01_023_printer
msf > set payloadwindows/shell_reverse_tcp
msf > setg RHOST 127.0.0.1
msf > setg LHOST 127.0.0.1
msf exploit(ms01_023_printer) > run
[*] Started reverse TCP handler on127.0.0.1:4444
[*] Command shell session 4 opened(127.0.0.1:4444 -> 127.0.0.1:51852) at 2017-01-20 10:47:12 -0600
>>ls
README.md
secret.txt
server_cert.pem
server_key.pem
service.cfg
vulEmu.pl
运行原理
Msf模拟器分为两部分组件,一是服务器/服务模拟描述文件(service.cfg),另一部分是解释器(vulEmu.pl)。
服务模拟描述文件使用JSON编写,其中包含大量模块(根据官方说明有100多个),例如:
"auxiliary/scanner/http/drupal_views_user_enum":{
"defaultPort":[80],
"seq":[
["starts","GET /?q=admin/views/ajax/autocomplete/user/b "],
["HTTP/1.1200 OK\r\nContent-Length: 16\r\n\r\n[\"bob\",\"barry\"]"],
["starts","GET /?q=admin/views/ajax/autocomplete/user/j "],
["HTTP/1.1200 OK\r\nContent-Length: 15\r\n\r\n[\"john\",\"joe\"]"],
["starts","GET /?q=admin/views/ajax/autocomplete/user/"],
["HTTP/1.1200 OK\r\nContent-Length: 4\r\n\r\n[ ]"]
]
},
seq数组就是配置文件中最重要的部分,服务器接到请求后会进行比较,检查请求是否满足偶数元素(seq [0]、seq [2]、seq [4]…)中的内容,如果满足,就执行后一组数组的内容。比如在这个例子中,如果请求以”GET /?q=admin/views/ajax/autocomplete/user/b “开头,服务器就会返回”HTTP/1.1 200 OK\r\nContent-Length:16\r\n\r\n[\"bob\", \"barry\"]“。
seq数组中的”start”位置也是一个重要参数,其他的值有:
substr: 做substring匹配
regex: 做正则匹配
starts: 检查是否匹配开头
运行perl文件并激活相应模块后,模拟器会在本地打开相应端口,并且监听所收到的请求,并按描述文件的内容进行响应。
模拟器特色
与其他模拟器相比,Metasploit Vulnerable ServicesEmulator轻量小巧显然是其特色之一。Metasploit 2压缩包需要873M,要搭建Metasploitable3需要65G的磁盘空间和4.5G的RAM,而Metasploit Vulnerable Services Emulator压缩包只有16K,由于无需虚拟机,这款模拟器对内存也没有具体要求。
Metasploitable3的系统需求
无需虚拟机这一点带来的另一点好处是,漏洞测试不再受制平台。Metasploitable2是一款Linux靶机,Metasploitable3是一款Windows靶机,他们只能对各自平台的漏洞进行模拟。而使用MetasploitVulnerable Services Emulator可以模拟各种平台的漏洞,我们只需要编写相关的描述文件。
另外,正如开发者Jin Qian所说的,Metasploit Vulnerable Services Emulator的可拓展性相比之下要好的多,在有新漏洞爆出时,使用传统“靶机”我们就必须安装相应版本的相应软件,有时还需要进行必要的配置,这是非常繁琐的过程。而使用Metasploit Vulnerable Services Emulator,有新漏洞爆出后只需要将新漏洞的相关特征加入新的描述文件就可以了,大大减少了工作量。
这东东能取代传统靶机吗?
显然,前文中提到的这些优点是要付出相应代价的。最大的牺牲就是体验上的差异。传统的靶机基于真实机器,在上面安装了存在漏洞的相应软件。而Metasploit Vulnerable Services Emulator在体验尚无法模拟存在漏洞的主机,给人一种“应试教育”的感觉。一些攻击以外的必要操作比如端口扫描、主机判断显然无法得到真实的结果。
虽然模拟的真实程度有限,但如果我们巧妙地加以利用,还是能轻松地实现一些原本相对复杂的需求的。
首先,模拟器可以帮助初学者学习Metasploit的一些基本操作,比如选择漏洞攻击exp、payload等,这款模拟器能够降低学习者的测试成本,相比搭建运行Metasploitable2、Metasploitable3要简单得多。
其次,模拟器可以用来帮助我们自行撰写攻击模块。有时基于各种各样的原因,我们需要自行编写一个类似msf那样的攻击模块,要想观测攻击成功与否,我们可以使用这款模拟器,或者可以把它当作初步测试的手段之一。
除此之外,经过简单配置,Metasploit Vulnerable Services Emulator就可以用作蜜罐。而蜜罐的内容不仅完全可控,而且非常轻量,降低了相应的成本。
总结来看,Metasploit Vulnerable Services Emulator从体验上无法比拟传统的基于虚拟机的靶机,模拟成都十分有限,但与此同时它也具备一些传统靶机不具备的优势,比如它的轻量小巧,对运行的系统、内存没有过多要求,对于新漏洞的拓展也容易得多,这些优势能够大大降低安全测试环境搭建的成本。