Linux 内存取证之文件系统取证(Volatility取证)

  1. File Systems
    1. 知识点
      1. USB 通常挂载到 /mdia/external/文件夹下。/media是根目录文件
      2. Mount 指令查看挂载情况,在内存分析中使用volatility linux_mount 插件
        1. ext3/4,Linux系统中最常见的文件系统格式
        2. sysfs,一个伪文件系统,通常挂载在/sys/文件夹下,保存一些硬件连接系统的信息。
        3. proc,一个伪文件系统,通常挂载在/proc/文件夹下,保存一些运行的进程,激活的网络连接,内核加载模块,也包含一些内存管理的配置。
        4. tmpfs,一个只存在内存里的文件系统,通常使用在/tmp和/dev/shm文件夹下。
        5. devpts,一个为了伪终端存在的挂载点,一个伪文件系统,通过SSH远程连接和命令行模式时会产生伪终端。
        6. devtmpfs,一个伪文件系统,在/dev/文件夹下用来管理文件和目录
        7. cifs,用来挂载远程SMB的共享,当一个Linux系统想要去挂载远程Windows’系统的文件共享时或者NAS服务启动时可以看到。
      3. Mount指令显示结果中个参数含义
        1. Atime/noatime:决定是否文件的访问时间可以更新,如果访问时间没有被设置,将很大的影响你决定哪个那个文件攻击者访问过。
        2. Diratime/nodiratime,决定是否文件夹的访问时间可以更新
        3. Relatime/norelatime,更新访问时间仅当访问时间比最后一个修改时间还要早时,在内核版本2.6.3*之后,当访问时间早于24小时之后,任何情况下都会进行更新。
        4. Dev/nodev ,决定挂载点下的文件能否加载设备,在一些严格的设备中,比如沙箱中,这个选项通常用来防止特权升级。
        5. Exec/noexec ,决定挂载点的文件是否有执行的权限,这通常被使用作为一个安全的机制去防止攻击者下载和执行二进制文件,比如/tmp,如果发现/tmp文件是可执行的,很有可能存在恶意的二进制文件。
        6. Suid/nosuid,决定文件系统,是否支持set uid 二进制文件的执行。这是一个安全机制用来防止一些用户冒充root用户执行一些二进制文件。攻击者制作后门的时候,通常将setUID的二进制文件放在一些不是标准可执行的文件夹下(/tmp,/var/run,/home//)去获得更高权限。
        7. Rw/ro:文件系统是读写还是只读
      4. Mount指令中显示结果中的参数默认选项存放在/etc/fstab中,可以用上述结果于文件中结果进行对比分析
    2. Temporary File System (tmpfs)
      1. /tmp 被用来临时存储一些安装,解压和其他不需要重启系统的信息
      2. /dev/shm 被用来存储那些不需要重启生效应用的共享内存,
      3. 由于上述文件夹的特性,黑客常用上述文件夹做一些下载或者是备份数据。
      4. Tmpfs 另外的一个用途就是提供了一个多变文件系统给那些使用Live CD 的用户,因为Live CD 在启动的时候,包含了一个不可修改的文件系统和操作系统,为了弥补这个问题,live CD 管理了一个tmpfs 文件系统作为顶层然后下面才是liveCD 层。这种方法支持对文件系统的增删改查。这个文件系统是存放在内存中的,
    3. 遍历文件和目录(name)
      1. 使用Virtual File System(VFS),忽略底层各种文件系统的差异。
      2. 使用命令 Volatility linux_enumerate_files 插件列举在内存中发现的文件。
        1. /etc/shadow 存放加密的文件
        2. /etc/hosts 存放hostname-Ip映射
        3. /etc/resolv.conf 存放DNS的设置
    4. 恢复文件的元数据:包括 文件大小,MACtimes,权限,所有者,等等
      1. sudo python vol.py --profile=Linuxdfrws2008x86 -f challenge.mem     linux_recover_filesystem -D fsout
      2. –D 表示存储文件目的路径
      3. 为了获取完整的数据,命令必须以root权限运行
      4. 如果是内核级Rookit,获取到的文件系统有可能被黑客完全控制,因此应该在受害者机器上恢复文件,不应该在自己分析的电脑上。
    5. 建立时间线(文件生成的时间线顺序排序显示)
      1. python vol.py --profile=Linuxdfrws-profilex86 -f challenge.mem        linux_dentry_cache > body.txt
      2. mactime -b body.txt -d        -g fsout/etc/group -p fsout/etc/passwd | grep Admin_share
      3. mactime 是The Sleuth Kit中一个工具
      4. –b 表示body文件,-g 表示文件系统中的用户组名代替用户组ID, -p 表示用户名代替用户ID  grep是做一个过滤, fsout是linux_recover_filesystem中产生的目录文件。
    6. 恢复某一个文件:
      1. python vol.py --profile=LinuxDebian-3_2x64 -f hiddenargs.lime        linux_find_file -F /tmp/backdoor
        1. –F  是否一个文件在page cache中,跟文件名
      2. python vol.py --profile=LinuxDebian-3_2x64 -f hiddenargs.lime      linux_find_file -i 0xffff88000b96f4d8 -O backdoor.dump
        1. –i 节点信息,-O 输出文件。

你可能感兴趣的:(linux,恶意代码取证)