跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

渗透技能——“无文件”虚拟磁盘

精选回复

发布于

0x00 前言

在渗透测试中,通常使用代码注入、内存执行、注册表、powershell或wmi等无文件技术来增加检测和分析的难度。

从渗透的角度来说,整个过程在一定条件下是无法做到“无文件”的,需要将文件写入硬盘,很有可能被获取和分析。

最近看了一篇关于虚拟磁盘使用方法的文章,可以解决这个问题。

从防御的角度,如何检测拦截这种方法?

参考文章的地址:

https://Diablo horn . com/2018/08/06/creating-a-ram-disk through-meter preter/

本文将对其进行测试,介绍实现细节,解决原文中未解决的问题,并以利用的思想分析检测和拦截的方法。

0x01 简介

本文将介绍以下内容:

实现原则

方法复制

删除剩余的硬盘图标。

支持文件夹操作。

法医检定法

探测拦截

0x02 实现原理

删除Windows系统硬盘上的文件只会修改文件的MFT。如果文件内容未被覆盖,则可以恢复文件。

删除和恢复的详细介绍请参考之前的文章《渗透技巧——Windows系统的文件恢复与删除》。

如果使用虚拟磁盘,将内存映射到本地,创建一个内存磁盘,它与使用中的真实硬盘没有区别,它有以下两个优点:

硬盘不会被写入,所以没有硬盘文件的恢复。

系统重启后,内存盘中的文件会自动删除。

0x03 方法复现

再现文章的实现方法,地址:

https://Diablo horn . com/2018/08/06/creating-a-ram-disk through-meter preter/

ImDisk

开源工具,能够创建虚拟磁盘,引入和下载地址:

http://www.ltr-data.se/opencode.html/

安装时会弹出一个框提示用户,如下图所示

2-1.png

安装成功后,释放C:\Windows\System32\drivers\下的驱动文件imdisk.sys和C:\Windows\System32\下的启动程序imdisk.sys及其支持文件。

安装成功后,在命令行输入ImDisk启动imdisk,会回显命令描述。

二次利用

作者DiabloHorn借助开源工具ImDisk对其进行二次利用,在命令行下实现了虚拟磁盘的安装、加载和创建、删除。

准备工作:

1、编写代码实现驱动的安装、加载和虚拟磁盘的创建删除

代码地址:

https://github.com/DiabloHorn/cliramdisk

我的测试编译环境是VS2015。我会将项目头文件stdafx.h中包含的内容保存到cliramdisk.cpp中,直接编译生成文件cliramdisk.cpp。

2、测试系统安装ImDisk获得驱动文件imdisk.sys

安装后,将驱动程序文件imdisk.sys复制到位置“c: \ windows \ system32 \ drivers”。

值得注意的是,驱动程序文件imdisk.sys包含数字签名。

3、编写注册表文件,添加驱动文件信息

内容如下:

Windows注册表编辑器5.00版

[HKEY _ LOCAL _ MACHINE \ SYSTEM \ current control set \ Services \ im disk]

DisplayName'='ImDisk虚拟磁盘驱动程序'

描述“=”磁盘仿真驱动程序

Type'=dword:00000001

' Start'=dword:00000004

ErrorControl'=dword:00000000

ImagePath'=hex(2):5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\

74,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00

00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6d,00,64,00,69,00,73,00

2e,00,73,00,79,00,73,00,00,00

DeleteFlag'=dword:00000001

另存为imdiskdriver.reg

# # #实际测试

1.导入注册表并添加驱动程序文件信息。

reg导入imdiskdriver.reg

2.上传驱动程序文件

复制imdisk . sys C:\ Windows \ System32 \ drivers \

3.加载驱动程序文件。

cliramdisk.exe岛

4.创建一个虚拟磁盘(200MB大小)

cliramdisk.exe c 209715200 R:0

5.格式为NTFS

格式R: /FS:NTFS /Q /y

之后可以上传文件到R盘,系统重启后会自动删除。

6.检查虚拟磁盘。

cliramdisk.exe湖

7.删除虚拟磁盘

cliramdisk.exe d0

如果删除未完成,磁盘图标仍会显示。

如下图

2-2.png

注:

使用ImDisk删除虚拟磁盘时不存在此错误。

不足

如果删除未完成,磁盘图标仍会显示。

不支持为文件夹创建虚拟磁盘。

0x04 优化

要解决前面提到的两个缺点,可以考虑直接使用ImDisk,但是只需要在命令行下安装使用ImDisk即可。

这是给出一个解决方案。

准备工作

1.测试系统并安装ImDisk以获取支持文件。

c:\ Windows \ System32 \ drivers \ im disk . sys

C:\Windows\System32\imdisk.exe

C:\Windows\System32\imdisk.cpl

2.编写安装驱动程序的代码。

代码地址:

https://github.com/DiabloHorn/cliramdisk

您可以在这里的代码中直接使用驱动程序加载功能。

注:

测试所需的所有文件已经上传到github的下载地址:

https://github . com/3g student/test/raw/master/cliram disk & im disk . rar

实际测试

1.添加注册表和驱动程序文件信息。

REG add hklm \ SYSTEM \ current control set \ Services \ im Disk/v display name/t REG _ SZ/d ' im Disk虚拟磁盘驱动程序'

REG add hklm \ SYSTEM \ current control set \ Services \ im Disk/v Description/t REG _ SZ/d '磁盘仿真驱动程序'

REG add hklm \ SYSTEM \ current control set \ Services \ im disk/v Type/t REG _ DWORD/d 1

REG add hklm \ SYSTEM \ current control set \ Services \ im disk/v Start/t REG _ DWORD/d 4

REG add hklm \ SYSTEM \ current control set \ Services \ im disk/v error control/t REG _ DWORD/d 0

' REG add hklm \ SYSTEM \ current control set \ Services \ im disk/v image path/t REG _ EXPAND _ SZ/d ' \ SystemRoot \ system32 \ DRIVERS \ im disk . sys '

2.上传驱动程序文件

复制imdisk . sys C:\ Windows \ System32 \ drivers \

3.加载驱动程序文件。

cliramdisk.exe岛

4.创建一个虚拟磁盘Z:大小为10Mb,并自动将其格式化为NTFS。

im disk-a-s 10M-m Z:-p '/FS:NTFS/Y/Q '

5.删除虚拟磁盘Z:

imdisk -d -m Z:

注:

不会有硬盘图标残留的bug。

6.文件夹操作

(1)创建

md C:\Windows\Temp\test

im disk-a-s 10M-m C:\ Windows \ Temp \ test-p '/FS:NTFS/Y/Q '

注:

需要一个空文件夹,否则创建将会失败。

(2)删除

卸载虚拟磁盘:

imdisk -d -m C:\Windows\Temp\test

或者直接删除文件夹:

rd C:\Windows\Temp\test

7.卸载驱动程序文件。

cliramdisk.exe大学

0x05 取证分析

1.为文件夹创建虚拟磁盘。

md C:\Windows\Temp\test

im disk-a-s 10M-m C:\ Windows \ Temp \ test-p '/FS:NTFS/Y/Q '

2.编写测试文件。

echo aaaaaaaaaaaaaaaaaaac:\ Windows \ Temp \ test \ 1 . txt

3.使用WInHex查看文件内容。

下载地址:

http://www.x-ways.net/winhex/

选择工具-打开磁盘和驱动器号c:

找到文件夹C:\Windows\Temp\test

找不到测试文件1.txt

证明文件没有被写入硬盘

0x06 检测拦截

攻击者上传的文件无法通过恢复硬盘文件获得。

结合思路,可以考虑监控驱动文件,拦截驱动文件imdisk.sys的加载

0x07 小结

本文测试了利用虚拟硬盘实现“无文件”的方法,解决了两个问题(删除不彻底,无文件夹支持)。验证结论是虚拟硬盘中的文件无法通过恢复硬盘文件获得。

最后,结合利用的思想,分析了检测和拦截的方法。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。