从影子文件获取 Linux 哈希值

从影子文件获取 Linux 哈希值

我有一台 Ubuntu 12.04 VirtualBox 机器,几天前我更改了它的密码。现在当我再次使用机器时,我忘记了密码,无法获得 root 访问权限。
我尝试从影子文件中获取哈希值以用于 john,但没有 root 访问权限就无法读取,甚至尝试与 Metasploit 建立会话,但找不到任何获取 Linux 哈希值的选项,也无法通过 Metasploit 获取 root 权限,也无法以 VDI 映像的形式离线访问磁盘。

也尝试过但无法将 john 下载到 Ubuntu,因为我无法使用apt-get,机器包含一些重要数据。
那么,在 Metasploit 中是否有任何方法可以获取 root 权限或某些工具(如适用于 Windows 的 samdump2)通过浏览器下载并手动从实时系统获取哈希值或可能是某些漏洞?

答案1

首先要纠正一个常见的误解:只要您可以物理访问(真实或虚拟)机器,就没有任何方法(除了加密)可以阻止您获取数据。

现在开始程序(有关详细信息,请参阅如何重置丢失的管理密码? 在 AskUbuntu.com 上)

使用恢复

  1. 当您的虚拟机启动时,Left shift在启动屏幕后立即按下以访问grub 菜单, 选择高级选项...,然后选择包含以下行的任意行恢复模式
  2. 一段时间后,你会看到另一个菜单,在那里你可以使用箭头键选择行, 按enter
  3. 制作挂载/分区读/写(代替只读

    mount -rw -o remount /
    
  4. 现在您可以更改“丢失”用户的密码了

    passwd youruser

    系统会提示您输入新密码(您不会得到任何反馈,看起来您的击键无法被识别),确认新密码后,您可以重新启动机器并准备飞行。

如果上述步骤失败(无论出于何种原因),您可以采取路线#2:

使用 Live CD(图像)——“chroot 方式”

  1. 将 Live CD 的 ISO 映像插入虚拟 CD 驱动器,从中启动,选择尝试 Ubuntu从菜单中,等待桌面准备就绪
  2. 打开终端窗口
    • CTRL++在真实机器或 Virtualbox VMALTT
    • CTRL++ ALTspaceTVMWare 虚拟机中
  3. 使用sudo fdisk -l查看所有可用分区,确定哪个分区包含您的/系统(可能类似于dev/sda1
  4. 将该分区挂载到某个可用路径(通常/mnt

    sudo mount /dev/sda1 /mnt
    
  5. 我们需要访问一些路径

    for d in dev sys run proc; do sudo mount --bind /$d /mnt/$d; done
    
  6. 现在激活新的环境 - 您现在可以在原始系统上以 root 权限操作。

    sudo chroot /mnt
    
  7. 现在您可以更改“丢失”用户的密码了

    passwd youruser

使用客戶端(如果主机是 Linux 或 OSX)

  1. 安装该libguestfs-tools软件包,或安装您的发行版(主机上的发行版)所称的软件包。如果您的发行版没有此软件包,从上游下载

  2. 在主机上挂载虚拟机的根文件系统。根据需要调整安装路径。

    mkdir ~/mnt
    guestmount -a /path/to/vm-image.vdi -m /dev/sda1 ~/mnt
    

    由于你使用的是 VirtualBox,你可能需要先跑export LIBGUESTFS_BACKEND_SETTINGS=force_tcg

  3. 生成新密码哈希作为您选择的密码。

    mkpasswd -m sha-512
    
  4. 编辑~/mnt/etc/shadow以将 root 用户的密码哈希更改为由生成的密码哈希mkpasswd

  5. 卸载虚拟机的文件系统。现在您可以启动虚拟机并使用新密码以 root 身份登录。

    fusermount -u ~/mnt
    rmdir ~/mnt
    

答案2

您可以在虚拟盒中创建一个新的虚拟机,并添加第二个硬盘,即您的 Ubuntu 服务器的硬盘(vmdk 文件)。

您在此虚拟机上启动并访问服务器的 /etc/shadow。

相关内容