内存取证

  1. 内存取证工具:可以列出当前已经打开的文件,正在活动的网络连接,运行中的进程,甚至是一些被隐藏或没有运行但仍驻留在内存中的进程相关消息。
  2. 传统方法: 可读的文本和关键字搜索
  3. 工具: Volatility:内存扫描分析工具
    • Volatility 提供两种方法来列举内存映像中的进程,一种方法是访问操作系统内核结构中的进程链来列举进程,另一种方法是在内存映像中搜索所的EPROCESS结构
    • 命令:python volatility pslist -f Futo-memory.dd,这种方法可以利用rootkit程序欺骗操作系统的方法瞒过程序
    • 为了对抗上述方法,采用:python volatiliy psscan -f Futo-memory.dd 在内存中映像中根据EPROCESS数据结构的特征搜索所有的EPROCESS结构来输出完整的进程信息,pssacn得到的输出可以显示已退出进程的信息。
    • 大部分的用户进程都是由explorer.exe 启动的,如果某个进程不是由它启动的则就可以进行深入分析。
    • volatility dllist -f FTTo-memory.dd 可以列举出系统中每个进程的所有DLL动态链接库
    • volatility files -f FTTo-memory.dd 显示每个进程正在访问的文件
    • volatility sockets -f FTTo-memory.dd 显示每个进程的套接字句柄
  4. 方法学(内存取证的目的):
    • 搜集信息:包括进程的详细信息,网络连接信息,和其他一些与潜在的恶意软件相关的信息,利用这些信息与从运行系统中获得信息进行比较分析
    • 对于每个可疑的进程,如果可以,从内存中恢复出其可执行代码用于深度分析
    • 对于每个可疑进程,从内存中提取出相关的数据,例如相关的秘钥或是用户名和密码等数据。
  5. 传统内存分析方法:
    • 利用strings工具从内存映像中提取出可读文本内容
    • 利用文件提取工具从内存中恢复相关的可执行文件
  6. Linux 内存取证分析
    1. Linux系统内核使用的所有符号的位置都由/boot 目录中的文件System.map来记录
    2. Linux系统的当前时间保存在System.map文件中的xtime变量中:grep xtime System.map
      • 在Kali中执行时遇到错误:Input/output error
    3. 定位内存数据结构(没看懂)
      • init_task :grep init_task System.map 错误同上
      • 上述查到的地址应该是个虚拟地址,需要将其转换成物理地址,在Inter系统中通常能够支持4GB的内存空间,其中高位的1GB空间被分配给内核使用,因此虚拟地址从0xC0000000开始,将虚拟地址减去0xC0000000 就可以将虚拟地址转换成对应的物理地址。
Logo

更多推荐