Linux 环境下取证

linux环境下取证

易失性数据

  1. 特点:

    • Linux自带命令可被恶意代码修改不可信

    • Unix系统存在一个脚本程序用于记录系统命令的运行及输出结果,只不过在命令终止后,才输出记录结果,除非脚本加上-f选项,可以在命令运行时进行刷新,减少取证过程中因故障带来的数据损失。

  2. 方法:

    1. 在目标机器上运行使用静态编译方式生成的shell命令(如Helix CD)

    2. 运行脚本记录键盘记录

    3. 记录日器上的日期和时间并与标准时间比较

      • date命令

    4. 使用dd命令获取全部内存数据

      1. 保存物理内存:

        • dd if=/dev/mem > destPath(example: /mnt/evidence/host.physicalmem)

        • 或者corner(TCT)工具箱 memdump命令

      2. 保存/proc/kcore文件:(以ELF格式保存物理内存的全部数据)

        • dd if=/proc/kcore of=destpath(example:/mnt/evidence/host.kcore)

      3. 保存Unix系统中的进程信息:

        • 使用TCT工具箱中的pcat命令:

          • pcat [-H (keep holes)] [ -m mapfile] [-v ] process_id > destPath

        • 使用Memfetch工具:

          • Memfetch与pcat不同的是将进程内存映射保存到单独的文件而不是一个文件中。

          • memfetch <pid>

          • 使用-S选项并制定一个十六进制地址来导出含有指定地址的内存数据。

          • 导出进程数据时,还会生成一个mfetch.lst 文件用于为导出的内容提供索引。

          • 可以使用-w选项,将索引内容输出到stdout

        • 使用ProcessDumper 和Memory Parser工具结合进行分析

    5. 获取主机名,iP地址,和操作系统详细信息

      • 主机名:hostname

      • IP地址: ifconfig -a

      • 操作系统和内核版本: cat /proc/version

    6. 获取系统状态和系统环境细节,包括目标机器上是否有网络嗅探器正在运行。

      • 系统运行时间: uptime

      • 系统环境相关信息在/proc 目录下:CPU信息:/proc/cpuinfo,内核信息:/proc/cmdline

    7. 识别系统已登录用户,使用who、w命令来检查当前登录账号,确认合法用户开启的每一个session

      • 命令是通过查询utmp文件来获得信息。正常的系统登录会在utmp文件中建立一个条目,但注意一些rookits能绕开Linux系统中的这些日志。

    8. 检查网络连接活动,使用netstat命令查看主机上开放的端口

      • netstat -anp

      • arp -a 查看Linux系统中的ARP缓存信息

    9. 使用ps命令来查看主机上的运行进程,检查是否有异常的进程运行

      • ps -auxeww 显示出所有进程的关联终端(tty)以及进程的环境信息(如命令行参数和当前工作目录)

      • ps -ealf 或 -ef 显示不带环境信息的进来列表。

      • /proc 目录下包含了每个活动进程的相关信息,如命令行参数和内存内容:其中一些有价值的条目信息:/proc/<PID>/ 目录下的:

        • cmdline:包含了进程的命令行信息

        • 符号链接cwd:指向该进程的当前目录

        • 符号链接exe:则显示和该进程相关联的可执行文件的完整路径

        • environ:包含进程的运行环境信息

        • fd :包含进程访问的所有文件的相关记录,每条记录以文件描述符命名,可以通过这个符号链接直接访问实际的文件。

        • maps:显示了进程内存空间中文件映射的区域和相关的访问权限,同时记录文件的inode索引和文件名称

        • status:文件中保存了有关进程状态的信息,例如进程名,进程状态,进程ID,父进程ID,进程所在组,进程张的线程相关的信息和其他信息

      • 用gcore -o filename pid 导出核心进程的映像

    10. 使用lsof命令来查看哪些文件和socket正在被访问

      • lsof -P -i -n选项能提供一个与该进程关联的开发端口,以及网络连接信息

    11. 检查与本机建立连接的其他主机的主机名

    12. 检查连接上的其他主机名

    13. 检查命令行的历史记录

      • history命令

      • .bash_history 文件会为每个账户保存其命令行历史信息

    14. 检查共享数据

      • 已安装的驱动器

        • 信息在/proc/mounts 和/etc/fstab 文件中获取

        • df或者mount命令获取

      • NFS服务输出的共享信息:/etc/exports 文件中

      • Samba的配置文件:/etc/samba/smb.conf 显示输出的所有共享信息。

    15. 检查未授权账号,组,共享,以及其他系统资源和配置

    16. 检查计划任务

      • at或as命令

      • 检查系统的crontab配置文件可以显示例行计划任务 /etc/crontabs

    17. 输入exit来退出脚本

    • 注意事项:

      • 保存特征的MD5值

      • 数据收集应当是自动化的,避免人工误操作。

  3. TCT工具箱中的grave-robber 能自动保存易失性数据且能收集配置收集不同类型的文件,并产生所有被保存数据的信息摘要从而记录数据的完整性。

    • grave-robber -p -d /mnt/evidence

    • 使用时必须将安装有TCT的独立驱动器或计算机挂载到被感染的系统中。

    • 工具能使用小写-p参数的pcat命令来获取所有活动进程的内存信息。

    • 使用大写-P参数能获取到ps 和lsof的输出。

 

非易失性数据

  1. 存储介质取证

  • 获取实时Linux系统中的内置硬盘的数据,并将其保存到可移动介质的文件上,同时还将加上MD5散列值

  • dd if=/dev/hda of=/mnt/evidence/vitim13.dd conv=noerror,sync hash=md5 hashwindow=1024 haslog=/mnt/evidence/audit/victim13.md5

  • 确认整个驱动器的内容都被完整获取:fdisk -lu 查看本地驱动器的扇区或字节的大小。

  1. 指定数据进行取证保存

    • 评估安全配置

      • 互联网安全中心有一个评估Linux'系统安全性的综合指南。

    • 评估主机的信任关系

      • 添加一个包含“+”符号和不可信的主机名的条目到系统中的/etc/hosts.equiv 或/etc/hosts.lpq文件中,可以使受害主机允许来自不可信的主机的连接请求。

      • 单独的用户账号也能在.rhosts文件中被配置成信任远程系统。

    • 收集登录日志和系统日志信息

      • 命令:last

      • wtmp和lastlog文件包含事件登录的详细信息

      • linux机器的系统日志多数保存在/var/log目录下,一些Unix版本的机器子保存到/usr/adm或/var/adm中

  2. 当取证时遇到LKM rootkit时,rookit监测工具失效时,可以使用rookit的配置程序来卸载自身,从而显示所有隐藏的信息:

    1. 更改当前目录到ps命令显示的隐藏文件夹中 cd /dev/tyyec

    2. 用ls命令显示Adore rookit 的组件

    3. 运行Adore主程序: ./ava

    4. 卸载选项

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值