程序内存驻留与木马原型

三、实验方法与步骤

步骤1“冰河”的原理与功能

“冰河”木马开发于1999年,在设计之初,开发者的本意是编写一个功能强大的远程控制软件。但一经推出,就依靠其强大的功能成为了黑客们发动入侵的工具,并结束了国外木马一统天下的局面,成为国产木马的标志和代名词。
在2006年之前,冰河在国内一直是不可动摇的领军木马,在国内没用过冰河的人等于没用过木马,由此可见冰河木马在国内的影响力之巨大。
“冰河”木马有如下功能。
(1)自动跟踪目标机屏幕变化,同时可以完全模拟键盘及鼠标输入,即在同步被控端屏幕变化的同时,监控端的一切键盘及鼠标操作将反映在被控端屏幕(局域网适用)。
(2)记录各种口令信息:包括开机口令、屏保口令、各种共享资源口令及绝大多数在对话框中出现过的口令信息。
(3)获取系统信息:包括计算机名、注册公司、当前用户、系统路径、操作系统版本、当前显示分辨率、物理及逻辑磁盘信息等多项系统数据。
(4)限制系统功能:包括远程关机、远程重启计算机、锁定鼠标、锁定系统热键及锁定注册表等多项功能限制。
(5)远程文件操作:包括创建、上传、下载、 复制、删除文件或目录、文件压缩、快速浏览文本文件、远程打开文件(提供了四中不同的打开方式、正常、最大化、最小化和隐藏)等多项文件操作功能。
(6)注册表操作:包括对主键的浏览、增删、复制、重命名和对键值的读写等所有注册表操作功能。
(7)发送信息:以四种常用图标向被控端发送简短信息。
(8)点对点通信:以聊天室形式同被控端进行在线交谈。
从一定程度上可以说“冰河”是最有名的木马,就连刚接触计算机的用户也可能听说过它。虽然许多杀毒软件可以查杀它,但国内仍有几十万中“冰河”的计算机存在!作为木马,“冰河”创造了最多人使用、最多人中弹的奇迹!

步骤2“冰河”木马的文本文件关联

采用“冰河”将自己与文本文件的打开方式相关联的方法实现植入“冰河”。关联的方法是使用注册表“HKEY_ CLASSES_ _ROOT" 主键下的“txtfile\shellopenlcommand" 键。程序要实现的功能是:当用户双击打开一个文本文件,先启动要驻留的程序,然后再启动记事本打开这个文本文件。这包括两方面内容,一是编程修改注册表,二是编程实现程序自动驻留。
在种木马之前,我们在受控端计算机中打开注册表,查看打开 txtfile 的应用程序注册项:
将编译好的可执行文件改名为“IceRiver.exe”,并把“IceRiver.exe”拷贝到虚拟机操作系统的“C:\IceRiver\Debug\”目录中,之后打开任一后缀为.txt的文本文件,通过任务管理器中进程的变化,可以发现打开txt文件的同时,除了添加NOTEPAD.exe进程外还添加了IceRiver.exe进程。

第三步:查杀“冰河”木马

查杀“冰河”木马程序源代码如下:
  #include <stdio.h>
  #include <windows.h>
  #include <string.h>
  //常量字符指针RegValue指向字符串"%SystemRoot%\system32\NOTEPAD.EXE %1",
  const char *RegValue = “%SystemRoot%\system32\NOTEPAD.EXE %1”;
  //声明有效路径获取函数GetValidPath
  char *GetValidPath(char *GetPath);
  //声明删除关联函数DeleteConnection
  void DeleteConnection(char *DelPath);
  //声明注册表恢复函数RecoverReg
  void RecoverReg(HKEY Key, LONG RetCode);
  int main(void) {
   //获取注册表HKEY_CLASSES_ROOT,\txtfile\shell\open\command健值
   HKEY hKEY;
   LPCTSTR data_Set = “txtfile\shell\open\command”;
   long ret0 = (RegOpenKeyEx(HKEY_CLASSES_ROOT,
   data_Set, 0, KEY_READ,&hKEY));
   //如果无法打开hKEY,则终止程序的执行
   if(ret0 != ERROR_SUCCESS) {
   return 0;
   }
   //如没被修改时为://“%SystemRoot%\system32\NOTEPAD.EXE %1”
   LPBYTE owner_Get = new BYTE[80];
   DWORD type_1 = REG_EXPAND_SZ ;
   DWORD cbData_1 = 80;
   long ret1=RegQueryValueEx(hKEY, NULL, NULL,
   &type_1, owner_Get, &cbData_1);
   if(ret1!=ERROR_SUCCESS) {
   return 0;
   }
   //判断对应健值是否被修改,即判断是否中了冰河
   if(strcmp((const char *)owner_Get,RegValue) == 0)
   printf(“没有中冰河\n”);
   else{
   printf(“可能中了冰河\n”);
   char *path = (char *)owner_Get;
   path = GetValidPath(path);
   DeleteConnection(path);
   RecoverReg(hKEY,ret1);
   }
  }
  //获取注册表HKEY_CLASSES_ROOT\txtfile\shell\open\command
  //健值表示的有效路径。如若键值为//“%SystemRoot%\system32\NOTEPAD.EXE %1”,
  //则函数返回的指针指向"%SystemRoot%\system32\NOTEPAD.EXE"
  char *GetValidPath(char *GetPath){
   int len = strlen(GetPath);
   printf(“path value: %s\nlen: %d\n”, GetPath, len);
   //由于键值的最后三个字符为" %1"导致键值不是有效路径,因此,将倒数第三个
  //字符(空格)赋值为字符结束标志’\0’
   *(GetPath + (len-3)*sizeof(char)) = ‘\0’;
   printf(“%s\n”,GetPath);
   return GetPath;
  }
  void DeleteConnection(char DelPath){
   if (DeleteFile(DelPath) != 0)
   printf(“DeleteFile succeeded! Please examine in time!\n”);
   else {
   printf(“DeleteFile Failed!\n”);
   printf(“LastError: %d\n”,GetLastError());
   }
  }
  //恢复注册表,将对应健值赋为"%SystemRoot%\system32\NOTEPAD.EXE %1"
  void RecoverReg(HKEY Key, LONG RetCode){
   LPCTSTR data_Set = “txtfile\shell\open\command”;
   long ret0 = (RegOpenKeyEx(HKEY_CLASSES_ROOT,
   data_Set, 0, KEY_WRITE,&Key));
   RetCode = RegSetValueEx (Key,
   “”, 0, REG_EXPAND_SZ,
   (byte
)RegValue, 50);
   if (RetCode != ERROR_SUCCESS)
   printf(“注册表恢复失败!\n”);
    else
    printf(“注册表恢复成功!\n”);
}

四、实验结果与分析

冰河木马界面如图1-1所示
在这里插入图片描述

图1-1冰河木马界面
在受控端计算机中打开注册表,查看打开 txtfile 的应用程序注册项:
在这里插入图片描述

图1-2通过注册表判断未中“冰河”
可以看到打开.txt 文件默认值是 c:\winnt\system32\notepad.exe%1,编译运行程序后,对应位置注册表健值被修改,如图1-3所示。
在这里插入图片描述

图1-3植入“冰河”后注册表被修改
双击txt文件后后台运行的命令,如图1-4所示。
在这里插入图片描述

图1-4双击txt文件时提示后台命令
程序运行结果如图1-4所示,可以看出删除关联文件前后其所在文件夹的变化。
如图1-6所示。另外,有一点必须说明的是,在运行此程序前,请保证进程IceRiver.exe已关闭,否则会出现无法删除关联文件的情况,因为此时文件正在运行,拒绝访问。
如图1-7所示。可以通过任务管理器窗口关闭该进程,或者通过编程实现,在此使用第一种方法。
在这里插入图片描述

图1-5修复“冰河”带来的系统变化
在这里插入图片描述

图1-6注册表恢复
在这里插入图片描述

图1-7无法删除关联文件
五、实验总结与体会
实验开始前,准备相应的实验平台,安装虚拟系统和第一次安装windows2000操作系统的过程中遇到了许多问题,但是上网查找相关资料都得到解决,后续的实验能顺利进行下去。
通过这些实验,我学习到了程序内存驻留和木马原型的相关知识和技术,包括内存数据库的使用、程序的远程控制和命令执行等。同时,我也了解到了这些技术可能会被恶意软件利用,从而对计算机安全造成风险。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值