⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 揭开木马的神秘面纱一.htm

📁 可以对黑客编程有一定的了解
💻 HTM
📖 第 1 页 / 共 3 页
字号:

<p><b>揭开木马的神秘面纱&lt;一&gt; - 冰河浅析</b><br> 
shotgun
</p>
<p><font size="2"><br>
</font>
<br>
前言<br>
  在网上,大家最关心的事情之一就是木马:最近出了新的木马吗?木马究竟能实现哪些功能?木马如何防治?木马究竟是如何工作的?本文试图以我国最著名的木马之一  
-  
冰河为例,向大家剖析木马的基本原理,为大家揭开木马的神秘面纱。<br>
  木马冰河是用C++Builder写的,为了便于大家理解,我将用相对比较简单的VB来说明它,其中涉及到一些WinSock编程和Windows  
API的知识,如果你不是很了解的话,请去查阅相关的资料。<br>
<br>
一、基础篇(揭开木马的神秘面纱)<br>
  无论大家把木马看得多神秘,也无论木马能实现多么强大的功能,木马,其实质只是一个网络客户/服务程序。那么,就让我们从网络客户/服务程序的编写开始。<br>
  1.基本概念:<br>
   网络客户/服务模式的原理是一台主机提供服务(服务器),另一台主机接受服务(客户机)。作为服务器的主机一般会打开一个默认的端口并进行监听(Listen),  
如果有客户机向服务器的这一端口提出连接请求(Connect  
Request),  
服务器上的相应程序就会自动运行,来应答客户机的请求,这个程序我们称为守护进程(UNIX的术语,不过已经被移植到了MS系统上)。对于冰河,被控制端就成为一台服务器,控制端则是一台客户机,G_server.exe是守护进程,  
G_client是客户端应用程序。(这一点经常有人混淆,而且往往会给自己种了木马!甚至还有人跟我争得面红耳赤,昏倒!!)<br>
   <br>
  2.程序实现:<br>
   在VB中,可以使用Winsock控件来编写网络客户/服务程序,  
实现方法如下:<br>
   (其中,G_Server和G_Client均为Winsock控件)<br>
   服务端:<br>
   G_Server.LocalPort=7626(冰河的默认端口,可以改为别的值)<br>
   G_Server.Listen(等待连接)<br>
   <br>
   客户端:<br>
   G_Client.RemoteHost=ServerIP(设远端地址为服务器地址)<br>
   G_Client.RemotePort=7626  (设远程端口为冰河的默认端口,呵呵,知道吗?这是冰河的生日哦)<br>
   (在这里可以分配一个本地端口给G_Client, 如果不分配,  
计算机将会自动分配一个, 建议让计算机自动分配)<br> 
   G_Client.Connect      (调用Winsock控件的连接方法)<br>
   <br>
   一旦服务端接到客户端的连接请求ConnectionRequest,就接受连接<br>
   Private Sub G_Server_ConnectionRequest(ByVal requestID As Long)<br> 
       G_Server.Accept requestID<br> 
   End Sub<br> 
   <br>
   客户机端用G_Client.SendData发送命令,而服务器在G_Server_DateArrive事件中接受并执行命令(几乎所有的木马功能都在这个事件处理程序中实现)<br>
<br>
   如果客户断开连接,则关闭连接并重新监听端口   <br>
   Private Sub G_Server_Close()<br> 
       G_Server.Close  (关闭连接)<br> 
       G_Server.Listen (再次监听)<br>
   End Sub<br> 
<br>
   其他的部分可以用命令传递来进行,客户端上传一个命令,服务端解释并执行命令......<br>
    <br>
<br>
二、控制篇(木马控制了这个世界!)<br>
  由于Win98开放了所有的权限给用户,因此,以用户权限运行的木马程序几乎可以控制一切,让我们来看看冰河究竟能做些什么(看了后,你会认同我的观点:称冰河为木马是不恰当的,冰河实现的功能之多,足以成为一个成功的远程控制软件)<br>
  因为冰河实现的功能实在太多,我不可能在这里一一详细地说明,所以下面仅对冰河的主要功能进行简单的概述,  
主要是使用Windows API函数,  
如果你想知道这些函数的具体定义和参数, 请查询WinAPI手册。<br> 
  1.远程监控(控制对方鼠标、键盘,并监视对方屏幕)<br>
   keybd_event 模拟一个键盘动作(这个函数支持屏幕截图哦)。<br>
   mouse_event 模拟一次鼠标事件(这个函数的参数太复杂,我要全写在这里会被编辑骂死的,只能写一点主要的,其他的自己查WinAPI吧)<br>
   mouse_event(dwFlags,dx,dy,cButtons,dwExtraInfo)<br>
<br>
dwFlags: <br>
   MOUSEEVENTF_ABSOLUTE  
指定鼠标坐标系统中的一个绝对位置。<br>
   MOUSEEVENTF_MOVE 移动鼠标<br> 
   MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下<br> 
   MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起<br> 
   MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下<br> 
   MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下<br> 
   MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下<br> 
   MOUSEEVENTF_MIDDLEUP 模拟鼠标中键按下<br> 
dx,dy:<br>
   MOUSEEVENTF_ABSOLUTE中的鼠标坐标<br>
<br>
   <br>
2.记录各种口令信息(出于安全角度考虑,本文不探讨这方面的问题,也请不要给我来信询问)<br>
<br>
  3.获取系统信息<br>
   a.取得计算机名  GetComputerName<br> 
   b.更改计算机名  SetComputerName<br> 
   c.当前用户    GetUserName函数<br> 
   d.系统路径 <br>
     Set FileSystem0bject =  
CreateObject(&quot;Scripting.FileSystemObject&quot;)      (建立文件系统对象)<br> 
     Set SystemDir = FileSystem0bject.getspecialfolder(1)<br> 
     (取系统目录)<br>
     Set SystemDir = FileSystem0bject.getspecialfolder(0)<br> 
     (取Windows安装目录)<br>
     <br>
     (友情提醒: FileSystemObject是一个很有用的对象,你可以用它来完成很多有用的文件操作)<br> 
<br>
   e.取得系统版本  GetVersionEx(还有一个GetVersion,不过在32位windows下可能会有问题,所以建议用GetVersionEx<br> 
<br>
   f.当前显示分辨率<br>
   Width = screen.Width \ screen.TwipsPerPixelX<br> 
   Height= screen.Height \ screen.TwipsPerPixelY<br> 
<br>
<br>
   其实如果不用Windows API我们也能很容易的取到系统的各类信息,那就是Winodws的&quot;垃圾站&quot;-注册表<br> 
   比如计算机名和计算机标识吧:<br>
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP<br>
中的Comment,ComputerName和WorkGroup<br>
   注册公司和用户名:<br>
HKEY_USERS\.DEFAULT\Software\Microsoft\MS Setup (ACME)\UserInfo<br> 
至于如何取得注册表键值请看第6部分<br>
<br>
  4.限制系统功能<br>
   a.远程关机或重启计算机,使用WinAPI中的如下函数可以实现:<br>
    ExitWindowsEx(ByVal uFlags,0)<br> 
    当uFlags=0 EWX_LOGOFF 中止进程,然后注销<br> 
       =1 EWX_SHUTDOWN 关掉系统电源<br> 
       =2 EWX_REBOOT  重新引导系统<br> 
       =4 EWX_FORCE  强迫中止没有响应的进程<br>
   <br>
   b.锁定鼠标<br>
    ClipCursor(lpRect As RECT)可以将指针限制到指定区域,或者用ShowCursor(FALSE)把鼠标隐藏起来也可以<br> 
    <br>
    注:RECT是一个矩形,定义如下:<br>
    Type RECT<br> 
       Left As Long<br> 
       Top As Long<br> 
       Right As Long<br> 
       Bottom As Long<br> 
    End Type<br> 
<br>
   c.锁定系统 这个有太多的办法了,嘿嘿,想Windows不死机都困难呀,比如,搞个死循环吧,当然,要想系统彻底崩溃还需要一点技巧,比如设备漏洞或者耗尽资源什么的......<br>
<br>
   d.让对方掉线 RasHangUp......<br> 
<br>
   e.终止进程  ExitProcess......<br> 
<br>
   f.关闭窗口 利用FindWindow函数找到窗口并利用SendMessage函数关闭窗口<br>
<br>
   <br>
<br>
  5.远程文件操作<br>
   无论在哪种编程语言里, 文件操作功能都是比较简单的,  
在此就不赘述了,你也可以用上面提到的FileSystemObject对象来实现<br>
<br>
  6.注册表操作<br>
   在VB中只要Set RegEdit=CreateObject(&quot;WScript.Shell&quot;)<br> 
   就可以使用以下的注册表功能:<br>
   删除键值:RegEdit.RegDelete RegKey<br> 
   增加键值:RegEdit.Write   RegKey,RegValue<br> 
   获取键值:RegEdit.RegRead  (Value)<br> 
   记住,注册表的键值要写全路径,否则会出错的。<br>
<br>
  7.发送信息<br>
   很简单,只是一个弹出式消息框而已,VB中用MsgBox(&quot;&quot;)就可以实现,其他程序也不太难的。<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -