免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > Stuxnet蠕虫攻击原理分析(3)

Stuxnet蠕虫攻击原理分析(3)

时间:2012-03-17 14:46来源:未知 整理:寂涯网络 点击:


网络传播
  Stuxnet 利用下面两个漏洞实现网络传播:CVE-2008-4250—Windows 服务器服务中的
NetPathCanonicalize()漏洞和 CVE-2010-2729—打印机后台服务程序漏洞。 Stuxnet利用第
一个漏洞在远端系统中扫描C$和 Admin$共享文件,然后将自己命名为“DEFRAGxxxxx.TMP”
文件写入到所有共享文件夹中第一个具备写权限的目录下,然后尝试执行“rundll32.exe
"DEFRAGxxxxx.TMP",DllGetClassObjectEx”. 在 Windows 2000、Windows XP 和 Windows
Server 2003系统中,利用这一漏洞,攻击者可能未经身份验证即可利用此漏洞运行任意代
码,并且获取完整的权限。
第二个漏洞是一个零日漏洞,最早由Carsten Kohler在Hackin9安全杂志09年第4期上描
述,并命名为“Print Your Shell”.此漏洞在Stuxnet出现之前,并没有广泛应用。攻击
者可以提交一恶意打印请求,将文件发送给网络上共享了打印后台程序接口的主机
的%System32%目录下。Windows打印类 API 函数允许用户将文件拷贝到指定目录下,使用
GetSpoolFileHandle函数,我们可以从目标主机上获取最新创建的文件对应句柄值,同时
也可以很容易地使用ReadFile以及WriteFile函数将文件拷贝到目标主机。Stuxnet拷贝
如下两个文件:Windows\System32\winsta.exe;Windows\System32\wbem\mof\
 sysnullevnt.mof到目标主机实施感染。
5.Rootkits 分析
User-Mode Rootkit (~WTR4141.TMP)
前面提到 WTR4141.TMP 文件是通过 LNK 漏洞加载运行的,此 DLL 文件不仅用来加载主
Stuxnet Dropper(~WTR4132.TMP),而且也是一个用户态 Rootkit 成功实现了 stuxnet 蠕虫
文件在 Usb盘符的隐藏。通过修改主进程Explorer..exe的导入表地址及所有已加载模块,
hook 5 个文件管理类的 APIs 函数(FindFirstFileW, FindNextFileW, FindFirstFileExW,
ntQueryDirectoryFile, zwQueryDirectoryFile)实现隐藏。当系统调用此类函数时,它们
会校验遍历的文件是否包含大小为4171字节的.LNK文件或者命名为“~WTRabcd.TMP”文件。 
内核级 Rootkit (MRxNet)
驱动 MRxNet.sys在蠕虫通过usb盘符传播时被用来隐藏.LNK文件,此驱动是一个简单
的文件系统过滤驱动。笔者使用IDA Pro工具反编译了此驱动。
NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING
theRegistryPath ){
int i;
NTSTATUS status;
DriverObject=pDriverObject;
status=IoCreateDevice(DriverObject, sizeof(_DEVICE_EXTENSION),0,
FILE_DEVICE_DISK_FILE_SYSTEM,0x100,0,&DeviceObject);
if (status!=STATUS_SUCCESS){
     IoDeleteDevice(DeviceObject);
     return 0;   
}
SetZero(DeviceObject->DeviceExtension,0);
for(i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++ ){
    DriverObject->MajorFunction[i] = IRPDispatchRoutine;
}
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] =
OnFileSystemControl;
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL]  = 
OnDirectoryControl;
从上面的程序可知,Rootkit创建了一个自己的驱动,然后将其加入到以下驱动链中:
\\FileSystem\\ntfs\\FileSystem\\fastfat ;\\FileSystem\\cdfs,这些驱动是处理文
件及文件夹的主要驱动,MRxNet 成功加入到驱动链之后,当上层应用程序发送 I/O 请求包
给上述文件驱动时,MRxNet 会先于它们获得,在接收到请求后,它会修改请求内容然后再
次向下发送给文件驱动,即在请求的内容中删除命名为
“{58763ECF-8AC3-4a5f-9430-1A310CE4BE0A}”的目录,实现文件隐藏。当然,MRxNet 驱
动的作用远不这点,其主要目的是修改文件驱动的输出内容,故 MRxNet.sys 需要添加一个
IO 完成例程IOCompleteRoutine. 此方法类似于C++中的回调函数,当文件驱动将输入结果
向上返回到MRxNet.sys层时,会触发IO例程IOCompleteRoutine方法:
PrevIrpStack = ((ULONG)Irp->Tail.Overlay.CurrentStackLocation –
 (ULONG)sizeof(IO_STACK_LOCATION));
PrevIrpStack->Control = 0;
PrevIrpStack->Context = 0;
PrevIrpStack->CompletionRoutine = DirectoryCompletionRoutine;
PrevIrpStack->Control=0xE0;
MRxNet 驱动会再DirectoryCompletionRoutine函数中删除stuxnet文件:
if (!(LowPart == -1 && HighPart == -1) && (HighPart == 0 || LowPart < 4096
|| LowPart > 8388608))
 return 0;
if (Length !=12)return 0;
 if (StrCheck(L".TMP",&Filename[Length -4],4) == 0)return 0;

本页地址 http://www.jybase.net/xitonganquan/20120317801.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com