我有两个磁盘。它们都可以引导并运行Linux。当我物理地挂载磁盘时,我可以看到scsi设备被添加。/dev/sdb和/dev/sdc。但是,未检测到分区。例如,我看不到/dev/sdb1 1。似乎有人花了很大的力气来隐藏这些党派,但我不知道怎么做。
我试过使用testdisk,它在每个磁盘上检测到两个分区,但我知道还有更多。找到的分区非常无用,我知道必须有一个引导分区。我试过改变磁盘的几何形状,但这没有帮助。
我怎样才能计算出它们是如何被隐藏的,以及关于如何将它们隐藏起来的任何建议,以便我们能够装入其他的部分呢?
编辑:这就是引导过程中显示的内容:
Mar 27 12:44:11 (none) user.notice kernel: sd 0:0:0:0: [sda] 8388608 512-byte hardware sectors (4295 MB)
Mar 27 12:44:11 (none) user.notice kernel: sd 0:0:0:0: [sda] Write Protect is off
Mar 27 12:44:11 (none) user.debug kernel: sd 0:0:0:0: [sda] Mode Sense: 61 00 00 00
Mar 27 12:44:11 (none) user.notice kernel: sd 0:0:0:0: [sda] Cache data unavailable
Mar 27 12:44:11 (none) user.err kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Mar 27 12:44:11 (none) user.info kernel: sda:
Mar 27 12:44:11 (none) user.warn kernel: custom_partition sda: partition 4 exceeds device capacity using largest possible size reduced from 5120000 to 4259840
Mar 27 12:44:11 (none) user.notice kernel: sd 0:0:1:0: [sdb] 167772160 512-byte hardware sectors (85899 MB)
Mar 27 12:44:11 (none) user.notice kernel: sd 0:0:1:0: [sdb] Write Protect is off
Mar 27 12:44:11 (none) user.debug kernel: sd 0:0:1:0: [sdb] Mode Sense: 61 00 00 00
Mar 27 12:44:11 (none) user.notice kernel: sd 0:0:1:0: [sdb] Cache data unavailable
Mar 27 12:44:11 (none) user.err kernel: sd 0:0:1:0: [sdb] Assuming drive cache: write through
Mar 27 12:44:11 (none) user.info kernel: sdb: unknown partition table
Mar 27 12:44:11 (none) user.info kernel: kjournald starting. Commit interval 5 seconds
Mar 27 12:44:11 (none) user.info kernel: EXT3-fs: mounted filesystem with ordered data mode.
Mar 27 12:44:11 (none) user.info kernel: kjournald starting. Commit interval 5 seconds
Mar 27 12:44:11 (none) user.info kernel: EXT3 FS on loop1, internal journal
Mar 27 12:44:11 (none) user.info kernel: EXT3-fs: mounted filesystem with ordered data mode.
Mar 27 12:44:11 (none) user.warn kernel: Clocksource tsc unstable (delta = 607842230 ns)
Mar 27 12:44:11 (none) user.info kernel: kjournald starting. Commit interval 5 seconds
Mar 27 12:44:11 (none) user.info kernel: EXT3 FS on sda4, internal journal
Mar 27 12:44:11 (none) user.info kernel: EXT3-fs: mounted filesystem with ordered data mode.
Mar 27 12:44:11 (none) user.info kernel: Adding 1048568k swap on /dev/swap. Priority:-1 extents:1 across:1048568k
Mar 27 12:44:11 (none) user.info kernel: kjournald starting. Commit interval 5 seconds
Mar 27 12:44:11 (none) user.info kernel: EXT3 FS on sdb2, internal journal
Mar 27 12:44:11 (none) user.info kernel: EXT3-fs: mounted filesystem with ordered data mode.
Mar 27 12:44:11 (none) user.info kernel: EXT3 FS on dm-0, internal journal发布于 2013-04-04 21:00:40
我怎么知道他们是怎么被藏起来的
隐藏分区实际上相对简单。首先是一些理论。
据操作系统所知,您的磁盘是一大串内存地址--我们称之为LBA地址。忽略您所读到的关于CHS的所有内容,除非您正在处理XP和更早的问题--现代硬盘不附带圆柱、磁头和扇区,尽管它们为那些想要CHS值的人提供了一些奇怪的兼容性支持。
现在,在这个巨大的空空间上,您需要决定如何布局数据。要做到这一点,就需要有一个分区表--也就是说,磁盘中包含描述分区的数据的已知区域。在大多数消费PC中有两种方案-- MBR分区和GPT分区。MBR代表主引导记录和一切,启动操作系统和分区表所需的代码位于前512字节。维基百科描述格式。,就像GPT划分方案一样。
事情会变得更复杂。您肯定知道,MBR将每个磁盘的分区限制为4个,这就是逻辑卷的生成方式。逻辑卷基本上是四个MBR分区中的一个内部的另一种分区方案。当然,当我说“逻辑卷”时,我可以指来自Microsoft的逻辑卷,作为Linux内核的一部分的LVM,等等。这些方案在GPT磁盘上是不必要的(但LVM可以也可能使用),因为这些方案支持无限分区,或者如果您在Windows上,则支持任意128个分区限制。请注意,无论如何,Windows中不可能有那么多驱动器字母。
因此,回到您的问题:如何隐藏分区?对于Linux来说,有两种方式:
这两者在磁盘结果上是相同的--它们只是在实现它们所需的事件顺序上有所不同。
对于如何解开它们以便我们可以安装其他的部分有什么建议吗?
最明显的方法是重写这些分区的分区表条目。然后,您可以运行kpartx -l来查看将要挂载的内容,并运行kpartx -a来触发重新评估。
但是,编辑分区表有点麻烦,除非您真的很高兴完全破坏了一些东西,而且我不确定我是否会推荐它。幸运的是,Linux内核有一个很棒的技巧,叫做设备映射器。
设备映射器的唯一目的是获取一个或多个块设备,并以某种定义的方式映射它们以生成虚拟块设备。长话短说,您可以使用设备映射程序来表示“从我的硬盘映射从块1000开始,到块2000结束--这个新的块设备”。然后生成的设备是一个1000个块设备,它映射回原来的设备,但可以作为一个块设备本身使用--包含一个文件系统!如果您熟悉回环设备,那么技巧是非常相似的。
要创建这样的映射,只需做:
dmsetup create mappingname --table "0 2048000 linear /dev/sdx 0"其中0 2048000表示开始块和结束块,此“窗口”在设备/dev/sdx上创建。如果成功,您应该有一个块设备/dev/mapper/mappingname。您可以找到这个作为Linux内核的一部分的文档。
顺便说一句,因为我无法控制自己,Linux上的“假”RAID卡就是这样工作的。命令dmraid -ay分析附加磁盘中的RAID卡元数据,并创建适当的设备映射。
似乎有人花了很大的力气来隐藏这些党派,但我不知道怎么做。
现在,问题的最终症结在于,无论您做什么,都需要知道分区在磁盘上的位置。大多数文件系统都具有可识别的超级块结构。例如,NTFS以BIOS参数块和各种其他元数据开始--您可以看到这个这里。Ex4有具有各种魔力值的超级块。每个文件系统都重复一遍。
如何找到与给定的一组文件系统相匹配的分区--好吧,我希望TestDisk能够识别出元数据。如果不行,你可以自己写点东西。
加密的卷可能更有问题。取决于正在使用的软件,可能根本没有神奇的值来表示文件系统--实际上,它可能与磁盘上的随机垃圾无法区分,而被合法的文件系统所抛弃。在这种情况下,您唯一的希望是磁盘从未被重新分区,并且在有效分区结束和加密分区开始之间仍然存在可识别的“空区域”。
在这一点上,你已经耗尽了我的个人知识。看起来,您可能需要编写一些自定义脚本/工具来解析磁盘(映像),以找到所需的内容,标识范围,然后映射卷。这里可能有一些用户拥有更多的取证经验,并且可以向您指出现有的工具,所以我很想在这里闲逛,看看是否有任何物化的东西。
免责声明:我在磁盘映像领域工作,最近恰好升级了我们的Linux环境,以支持伪造的RAID卡。还有LVM。
https://security.stackexchange.com/questions/33757
复制相似问题