找回密码
 注册

QQ登录

只需一步,快速开始

冰河浅析 - 揭开木马的神秘面纱(上)

[复制链接]
发表于 2011-1-13 17:02:16 | 显示全部楼层 |阅读模式
在网上,大家最关心的事情之一就是木马:最近出了新的木马吗?木马究竟能实现哪些功能?木马如何防治?木马究竟是如何工作的?本文试图以我国最著名的木马之一 冰河为例,向大家剖析木马的基本原理,为大家揭开木马的神秘面纱。
2 x! F" O% H* u* J+ L) U% ?! b7 o1 S0 \" E% [( q
  木马冰河是用C++Builder写的,为了便于大家理解,我将用相对比较简单的VB来说明它,其中涉及到一些WinSock编程和Windows API的知识,如果你不是很了解的话,请去查阅相关的资料。
. U4 [6 \7 j- N) C8 ?6 z9 ^+ }' ~6 z( T: \) u! n4 T+ g# `4 ~
                   一、基础篇(揭开木马的神秘面纱)
" ?) H& C5 a' O$ k3 ]; ?) M% k2 Q# T1 F" Q! d/ g' d# K
  无论大家把木马看得多神秘,也无论木马能实现多么强大的功能,木马,其实质只是一个网络客户/服务程序。那么,就让我们从网络客户/服务程序的编写开始。  q, X7 u: q5 {3 C' a% \/ Y
  1.基本概念:- A1 [8 ]6 Z( ]1 y
   网络客户/服务模式的原理是一台主机提供服务(服务器),另一台主机接受服务(客户机)。作为服务器的主机一般会打开一个默认的端口并进行监听(Listen), 如果有客户机向服务器的这一端口提出连接请求(Connect Request), 服务器上的相应程序就会自动运行,来应答客户机的请求,这个程序我们称为守护进程(UNIX的术语,不过已经被移植到了MS系统上)。对于冰河,被控制端就成为一台服务器,控制端则是一台客户机,G_server.exe是守护进程, G_client是客户端应用程序。(这一点经常有人混淆,而且往往会给自己种了木马!甚至还有人跟我争得面红耳赤,昏倒!!)
1 a; ]  p8 M( }/ V4 C+ \# s   
5 a( G/ l+ m) s/ ^) m  2.程序实现:
4 b, `  b# z% Y4 q   在VB中,可以使用Winsock控件来编写网络客户/服务程序, 实现方法如下:6 T" I8 \) {. c  ?* h1 E
   (其中,G_Server和G_Client均为Winsock控件)
, z1 c: p5 ^2 d6 S/ u$ v/ o   服务端:
* {0 D: S# g% ^   G_Server.LocalPort=7626(冰河的默认端口,可以改为别的值)
" B+ a) L" R9 \$ O+ N   G_Server.Listen(等待连接), n+ X5 y! T  w( n) a! t2 x
   ( G6 e7 n/ Y( R- i
   客户端:
1 X1 T/ i7 l0 w) w0 S5 a" j" E8 {: ?% B6 l   G_Client.RemoteHost=ServerIP(设远端地址为服务器地址)! ?6 Z/ z+ o. l5 K5 Q9 o( p% G
   G_Client.RemotePort=7626  (设远程端口为冰河的默认端口,呵呵,知道吗?这是冰河的生日哦); p  }  I7 n: b8 O. N  ~! `
   (在这里可以分配一个本地端口给G_Client, 如果不分配, 计算机将会自动分配一个, 建议让计算机自动分配)' K9 f0 x3 G+ O2 c& ?" Q
   G_Client.Connect      (调用Winsock控件的连接方法)8 O, q/ u9 k1 z9 D
   6 u# h3 I, o5 R" v! ~+ y5 ~6 S- Q
   一旦服务端接到客户端的连接请求ConnectionRequest,就接受连接
+ I  O" B' h, f( C1 Y% ^. ]/ d   Private Sub G_Server_ConnectionRequest(ByVal requestID As Long)6 m/ `( f2 S  v; o, L( K4 V1 T" U
       G_Server.Accept requestID7 ?7 w' m8 F" k1 N' S  x9 B
   End Sub
* e5 }$ b! C; [) g% l1 `   
8 l( Y3 e- ?2 H9 u+ `4 J6 x   客户机端用G_Client.SendData发送命令,而服务器在G_Server_DateArrive事件中接受并执行命令(几乎所有的木马功能都在这个事件处理程序中实现)4 Q. ]8 U6 t9 p

3 Z6 y/ ^9 W, C   如果客户断开连接,则关闭连接并重新监听端口   ! x; ?& F) m' G& E+ p% n& [
   Private Sub G_Server_Close(). Q, N" \, `' \8 U; i
       G_Server.Close  (关闭连接)
0 G9 t, ^7 L0 b6 o+ ^( Z) i       G_Server.Listen (再次监听)
4 L. }9 l$ B' e/ ]' G   End Sub- i8 e1 u# A4 c- h, a: [
3 t+ V0 Q, T* w" t) X* o
   其他的部分可以用命令传递来进行,客户端上传一个命令,服务端解释并执行命令......7 `% g$ H/ B7 S3 F4 X7 [! r
    
7 L8 ^! M! V5 [; o! _) z6 q, F, m. d- p$ o: N# q& S
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|本地广告联系: QQ:905790666 TEL:13176190456|Archiver|手机版|小黑屋|汶上信息港 ( 鲁ICP备19052200号-1 )

GMT+8, 2025-11-1 14:52

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表