Linux mount-bind 进程隐藏
前言:Linux mount-bind 进程隐藏笔记
参考文章:https://dfir.ch/posts/slash-proc/
参考文章:https://www.cnblogs.com/xingmuxin/p/8446115.html
关于mount挂载
在Linux系统中,我们可以使用mount命令将设备挂载到目录中,这允许我们当前这台机器可以访问设备的文件系统。
例如,在/mnt/usb目录上,挂载一个U盘(用/dev/sdc1代指),然后ls其内容
mkdir /mnt/usb mount /dev/sdc1 /mnt/usb ls /mnt/usb
最比较常见的就是长期保存数据,通过挂载大容量的NAS到机器进行存放文件
执行完挂载命令后查看机器的挂载情况,可以看到成功挂载NAS到本地机器上,如下图所示
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport xxxxxx-rlp93.cn-hangzhou.nas.aliyuncs.com:/ /mnt
不需要挂载的时候直接umount
对应的挂载目录即可,如下图所示
mount -o remount,rw /
关于mount -o remount,rw /
命令的意思是重新挂载(remount)文件系统,并将其设置为可写(rw)。
具体来说mount命令用于挂载文件系统,-o选项用于指定挂载选项,其中支持"remount"选项用于重新挂载已经挂载的文件系统,rw选项表示将文件系统设置为可写模式。
通常情况下,文件系统会被挂载为只读(read-only)模式,这是保护文件系统不被意外修改的一种方式。但是在某些情况下,用户可能需要对文件系统进行修改,这时就需要将其重新挂载为可写模式。
使用mount -o remount,rw /
命令可以实现这个目的。 需要注意的是,修改文件系统可能会导致数据丢失或系统崩溃,因此在执行这个命令之前,应该仔细考虑,并备份文件系统中重要的数据。
这里还有一个点是需要注意的,这边我碰到过,就是mount -o rw,remount /
,这样可以挂载,mount -o remount,rw /system
这样挂载就报错,所以碰到的话也可以换着位置试试。
mount-bind
bind是一种特殊的mount,可以把文件系统中的某一个部分进行挂载。
原理:当执行了mount --bind directory1 directory2
,内核将挂载目录(test1)的目录项记录在内存里的一个s_root对象里,在mount执行时,VFS会创建一个vfsmount对象,这个对象里包含了整个文件系统所有的mount信息,其中也会包括本次mount中的信息,这个对象是一个HASH值对应表(HASH值通过对路径字符串的计算得来),表里就有/directory1
到/directory2
两个目录的HASH值对应关系。
注意:mount-bind特性是从linux2.4.0开始的。
测试实验
磁盘原目录结构为如下图所示
当执行命令mount --bind test1 test2
,Linux将会把被挂载目录的目录项(也就是该目录文件的块block,记录了下级目录的信息)屏蔽,即test2的下级路径被隐藏起来了(注意,只是隐藏不是删除,数据都没有改变,只是访问不到了)。
具体情况:当访问/test2
下的文件时,系统会告知/test2
的目录项被屏蔽掉了,自动转到内存里找VFS,通过vfsmount了解到/test2
和/test1
的对应关系,从而读取到/test1
的inode,这样在/test2
下读到的全是/test1
目录下的文件
如下图所示,命令执行完后,可以看到相关的test1
和test2
目录的节点标识都为922262。
进程隐藏
lsof -i -n
ps -ef | grep 52498
执行mount-bind操作完之后,重新查看进程通信netstat -anltp
,可以发现此时对应的52498 PID的通信已经被隐藏了,如下图所示
mkdir -p spoof/fd mount -o bind spoof /proc/52498
查看对应的/proc/52498
目录情况,可以看到显示的只有上面mount-bind挂载到spoof下面的fd目录
ls -la /proc/52498
排查操作
/proc/52498
和其他/proc/
下面的目录相比,特征就是多了w的权限,如下图所示
执行umount /proc/9212
进行解除挂载,重新进行查看,如下图所示
x
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库