消息定义Word格式.doc
《消息定义Word格式.doc》由会员分享,可在线阅读,更多相关《消息定义Word格式.doc(3页珍藏版)》请在冰点文库上搜索。
命令标志位
0000
保留
relay
0001
应答Relay对Console是否在线的测试信号
发送Console是否在线的信号
0010
索取Relay在线agent
1.回复console在线agent
2.agent离线与增加新的agent时刷新console的agent
0011
复位Relay在线agent
0111
定制DosPipe命令
返回命令执行结果
1000
Shell命令
返回确认执行信号
1111
其它
Agent
01
cosole
agent
文件传送控制信息
确认可传onaccept=true
timer.enabled=false
确认完毕:
逆
双向传送控制信息(区分agent)
1.确认可接收文件
2.2.确认文件接收完毕
……..
返回传递
(区分agent)
返回执行结果
返回确认执行
10
待扩充
11
编制说明:
通信机制:
结构C-S-C
Relay在中间,为console和agent提供双向服务,承担传递console命令和文件到agent,返回agent命令执行结果与文件开始接收、接收完成信号的功能。
此外relay也接受console的控制(与agent类似,通过DosPipe实现).这样的设计是为解决穿透防火墙或路由器(NAT)障碍――由agent发起连接,即从里到外建立一个通道,然后通过relay达到控制目的。
通过一个可预设的relay地址序列文件,由agent轮循查找relay;
连接建立后,可通过文件传输功能更新该地址序列。
*以字符方式传递命令和命令执行结果、其它控制信号;
*以字节方式传输文件;
*字符与字节方式以onaccept布尔变量区分(false字符,true字节),通过文件确认接收和接收完成信号切换;
非正常中断连接时复位为false.
*以6位字节标志消息类型,前两位决定消息的操作对象,后四位决定类型,详见上面消息定义表;
*Relay在agent方向动态提供多个连接,优先使用闲置的socket,找不到闲置socket则新增一个socket完成连接;
并自动刷新console界面的agent连接(以树节点表示,root为中继,子节点为agent,再次级节点今后可扩充容纳agent获取到的主机重要信息,如驱动器映射等;
*Relay在console方向提供固定有限数量的连接,在产品中可与Liscense数对应,目前为处理方便暂时只提供一个连接。
*因Relay在console方向固定连接数量,为避免console非正常中断连接时relay保持连接状态致使新的连接不能建立,在relay上增加周期性检测console连接状态的功能:
得不到应答主动关闭连接并重新侦听。
为避免传输大文件时出现应答信号丢失,通过onaccept布尔变量切换的同时关闭和打开检查功能,即传输文件时不检测console在线情况。
但传输文件过程中如有非正常中断,因onaccept变量的复位检测功能也可以恢复,这样仍能避免relay保持假连接的情况。
文件正常传完时恢复console在线检测。
(未实现)*通过agent在空闲状况下按1个小时左右的周期复位,主动中断再连接达到relay避免过多agent方向的假连接,在复位时优先连接地址序列中刚刚断开的relay。
*通过console控制Relay主动复位agent连接,即relay上agent方向的socket数组归零并重新侦听,则agent接收正常关闭连接马上可再轮询Relay,重新连接上Relay。
程序功能:
Relay通过DosPipe控制;
agent除了DosPipe有文件接受功能。
这样可以通过命令(可执行程序)或脚本(Dos批处理)来完成大多数控制功能,包括更新服务、安装新服务及写注册表让用户执行需要的程序。
传播功能:
agent和relay均以服务形式安装到需要的主机,自动在后台执行。
现在的agent和relay均以VB编写,需要若干DLL, Size较大,传播功能差强人意,只能借助社会工程学方式。
写这一程序的过程中,对理清TCP协议的通讯机制和协议封装的概念有许多帮助.特别是通过Sniffer来查看Console-relay-agent之间消息交换,以解决程序编写中通信机制部分的错误.以及网络管理员可以通过Sniffer对未加密的消息交换一览无余,轻易就可完全破解该所谓木马程序的工作原理(通过看到相应的命令和返回的结果,即可知道被控端是一个类DOS的Shell)有一些感悟.
2004.11.15晚整理.向群