ios

利用VMware获取shell

N 人看过

获取 vmlinuz

方式一

对于 vmdk 没有加密的虚拟设备来说,可以直接通过挂载磁盘的方式提取出 vmlinuz 文件,但是要注意磁盘中的内核文件命名可能不同!!!

使用 DiskGenius 挂载虚拟磁盘,通过寻找 vmlinuz 文件的特征信息来确定具体文件

一般情况 vmlinuz 文件头部 会含有上图中的字符串信息,或者通过头标识符也可以判断文件,所以 flatkc 就是该环境中的 vmlinuz 文件,右键导出即可。

使用工具 vmlinux-to-elf 可以将内核文件转换为 elf 文件,方便我们接下来的逆向分析。

注意:请不要用该方法得到的 rootfs.gz 直接解压使用,否则后期打包时会出现问题!!!

方式二

将虚拟磁盘挂载到其他虚拟机中,并启动虚拟机

搜索并打开 disk 应用

找到新添加的硬盘后,点击启动按钮,接着硬盘会被挂载,进而得到 rootfs 和 vmlinuz

寻找断点函数

加载 vmlinux_elf 文件到 ida 中进行分析。

通常 vmlinuz 初始化流程中最后一步,内核会执行 init_post 函数。其中在该函数中最终会执行/sbin/init。

记录该函数地址 FFFFFFFF807AC0E9 ,为了接下来调试做准备

配置 vm 调试信息

debugStub.listen.guest64 = "TRUE"
debugStub.listen.guest64.remote = "TRUE"
debugStub.port.guest64 = "12345"
debugStub.listen.guest32 = "TRUE"
debugStub.listen.guest32.remote = "TRUE"
debugStub.port.guest32 = "12346"