zoukankan      html  css  js  c++  java
  • 内存取证原理与实践

    内存取证原理与实践

    1 内存取证技术概述

    1.1 计算机取证技术

    1.2 计算机取证技术的发展

    1.3 计算机取证类型

    1.3.1 离线取证
    1.3.2 在线取证

    1.4 内存取证

    1.5 本章小结

    2 内存取证基础知识

    2.1 PC硬件架构

    2.1.1 中央处理器和内存管理单元
    2.1.2 寄存器
    2.1.3 南北桥芯片
    2.1.4 直接存储器访问
    2.1.5 内存

    2.2 内存管理

    2.2.1 Intel64和IA-32内存管理概述
    2.2.2 分段
    2.2.3 分页
    2.2.4 地址空间

    2.3 地址转换

    2.3.1 32 bit分页
    2.3.2 物理地址扩展分页
    2.3.3 四级分页
    2.3.4 地址转换实例

    2.4 ARM架构

    2.4.1 ARM架构简介
    2.4.2 ARM内存管理和地址转换

    2.5 本章小结

    3 内存获取技术

    3.1 基于软件的内存获取技术和工具

    3.1.1 利用对象或设备直接读取物理内存的软件
    3.1.2 利用驱动或内核扩展读取物理内存的软件

    3.2 基于硬件的内存获取技术和工具

    3.2.1 基于PCI接口获取物理内存
    3.2.2 基于IEEE 1394接口获取物理内存
    3.2.3 使用网卡获取物理内存
    3.2.4 基于PCI Express接口获取物理内存
    3.2.5 基于Thunderbolt接口获取物理内存

    3.3 禁止DMA获取内存的技术

    3.3.1 VT-d技术
    3.3.2 IntelSGX

    3.4 内存获取的其他方式

    3.5 本章小结

    4 基于物理内存分析的在线取证模型及其可信性评估

    4.1 基于物理内存分析的在线取证模型

    4.2 影响内存获取可信性的因素

    4.3 基于测量理论的内存取证的可信性评估

    4.3.1 方法概述
    4.3.2 精密度和准确度的概念
    4.3.3 内存获取度量的相关定义

    4.4 内存获取的精密度、准确度和系统误差分析

    4.4.1 已有实验的分析
    4.4.2 内存获取的精密度和准确度
    4.4.3 内存获取的系统误差分析
    4.4.4 系统进程测量误差的分析

    4.5 内存获取工具的加载活动覆盖关键痕迹的概率

    4.5.1 概率计算公式
    4.5.2 实验分析

    4.6 内存镜像文件提取的数据与实际电子数据之间的比较

    4.7 本章小结

    5 Windows内存分析原理

    5.1 Windows操作系统关键组件

    5.1.1 Windows架构简介
    5.1.2 系统进程

    5.2 基于系统组件名称查找的Windows内存分析方法

    5.2.1 原理
    5.2.2 存在的不足

    5.3 基于池特征扫描的内存分析方法

    5.3.1 Windows执行体对象
    5.3.2 对象头部Object Header
    5.3.3 可选头部
    5.3.4 对象类型
    5.3.5 内核池分配
    5.3.6 内核池分配的API函数
    5.3.7 内存池特征扫描
    5.3.8 内存池特征扫描的局限

    5.4 基于KPCR结构的方法

    5.4.1 KPCR结构体的查找
    5.4.2 虚拟地址到物理地址转换
    5.4.3 CR3寄存器中的内容的查找
    5.4.4 根据CR3寄存器中的内容实现地址转换
    5.4.5 内核变量的查找

    5.5 本章小结

    6 Windows内存分析

    6.1 进程信息分析

    6.1.1 进程内存空间
    6.1.2 进程内存空间中的数据
    6.1.3 进程信息分析的流程
    6.1.4 遍历进程的内存空间
    6.1.4.1 根据进程的页表转储进程访问的内存数据
    6.1.4.2 根据VAD二叉树遍历进程内存空间
    6.1.5 进程的PEB结构以及进程的参数信息
    6.1.5.1 PEB结构
    6.1.5.2 分析进程的参数信息
    6.1.5.3 分析进程的环境变量
    6.1.5.4 分析进程堆中的信息
    6.1.6 分析进程加载的模块
    6.1.7 分析进程访问的Windows对象内存
    6.1.7.1 句柄
    6.1.7.2 句柄和句柄表的数据结构

    6.2 Windows事件日志内存分析

    6.2.1 内存中的事件日志
    6.2.2 Windows2000、XP和2003系统的事件日志分析
    6.2.3 WindowsVista、2008和Windows 7系统的事件日志分析

    6.3 Windows注册表内存分析

    6.3.1 注册表简介
    6.3.1.1 HIVE(储巢)
    6.3.1.2 注册表结构
    6.3.1.3 注册表的内部机理
    6.3.2 从内存镜像中提取HIVE文件
    6.3.2.1 查找注册表
    6.3.2.2 在内存中提取HIVE文件

    6.4 Windows内存的网络信息分析

    6.4.1 TcpEndpointPool结构
    6.4.2 TcpEndpointPool结构的查找
    6.4.3 TcpEndpoint和TCB
    6.4.4 从内存中提取网络信息的算法

    6.5 Windows服务的内存分析

    6.5.1 关于Windows服务
    6.5.2 内存中的Windows服务
    6.5.3 从内存镜像中分析Windows服务

    6.6 Windows内存中的文件

    6.7 从PageFile中获取更多内存数据

    6.7.1 无效的PDE/PTE项
    6.7.2 PageFile概述
    6.7.3 访问PageFile

    6.8 本章小结

    7 Linux操作系统内存分析原理

    7.1 Linux操作系统关键组件

    7.1.1 Linux架构简介
    7.1.2 Linux内存管理
    7.1.3 Linux地址转换
    7.1.4 链表处理
    7.1.5 系统内核符号表

    7.2 ELF二进制格式

    7.2.1 ELF文件头
    7.2.2 程序头表
    7.2.3 节
    7.2.4 节表头

    7.3 Volatility物理内存分析方法

    7.4 不依赖于内核符号表文件的Linux物理内存分析方法

    7.5 本章小结

    8 Linux内存分析

    8.1 进程信息

    8.1.1 进程的创建
    8.1.2 进程的表示
    8.1.3 进程分析方法
    8.1.4 隐藏进程查找

    8.2 文件系统信息

    8.2.1 重要数据结构
    8.2.2 分析和获取方法

    8.3 网络连接信息

    8.3.1 重要数据结构
    8.3.2 分析和获取方法

    8.4 模块信息

    8.4.1 重要数据结构
    8.4.2 分析和获取方法

    8.5 系统信息

    8.5.1 SLAB分配器信息
    8.5.2 系统版本信息
    8.5.3 系统日志信息
    8.5.4 内存分段信息
    8.5.5 CPU信息

    8.6 交换文件的分析

    8.6.1 Linux交换文件
    8.6.2 交换文件分析

    8.7 本章小结

    9 Mac OS内存分析原理

    9.1 MacOS的发展史

    9.1.1 ClassicMac OS
    9.1.2 MacOS X
    9.1.3 MacOS X Server

    9.2 MacOS X架构

    9.2.1 内核架构
    9.2.2 系统分层

    9.3 Mach-O可执行文件格式

    9.3.1 FAT头
    9.3.2 Mach-O文件头
    9.3.3 Command结构

    9.4 内核符号表

    9.5 内核/用户空间虚拟地址的划分

    9.6 内核地址空间布局随机化

    9.7 地址转换

    9.7.1 快速转换公式
    9.7.2 智能转换公式

    9.8 MatthieuSuiche的Mac OS内存分析原理

    9.9 不依赖mach_kernel文件的Mac OS内存分析方法

    9.9.1 操作系统版本的信息的获取
    9.9.2 内核进程基地址

    9.10 本章小结

    10 Mac OS内存分析技术

    10.1 系统配置信息的分析

    10.2 挂载的文件系统信息的分析

    10.3 进程信息的分析

    10.3.1 任务
    10.3.2 枚举进程
    10.3.3 启动进程的用户
    10.3.4 进程的地址空间映射
    10.3.4.1 相关数据结构
    10.3.4.2 动态加载器共享缓存
    10.3.5 打开的文件信息的获取
    10.3.6 打开的命令行信息的获取
    10.3.7 线程信息的获取

    10.4 内核扩展(驱动、内核模块)的分析

    10.5 系统调用的分析

    10.6 网络信息的分析

    10.6.1 网络状态
    10.6.2 打开的端口
    10.6.3 网络子系统
    10.6.4 交叉引用的优点

    10.7 SLAB分配器的分析

    10.8 Bash命令的获取

    10.9 内核调试缓冲区信息的获取

    10.10 本章小结

    11 安卓智能手机内存取证

    11.1 智能手机的硬件组成

    11.2 从数字取证到智能手机取证

    11.2.1 智能手机取证的步骤
    11.2.2 智能手机取证的原则
    11.2.3 智能手机取证面临的困难
    11.2.4 从数字取证到智能手机取证

    11.3 智能手机的数据获取

    11.4 安卓系统概述

    11.4.1 安卓架构
    11.4.2 Android文件系统
    11.4.3 Android智能手机数据存储

    11.5 安卓智能手机内存获取

    11.5.1 软件方法(LiME)
    11.5.2 JTAG方法
    11.5.3 ISP方法
    11.5.4 获取进程内存空间数据

    11.6 安卓智能手机内存分析

    11.6.1 ARM架构下的地址转换
    11.6.2 使用Volatility分析安卓手机内存镜像
    11.6.3 安卓手机内存镜像分析手机应用的信息

    11.7 本章小结

    12 内存分析在云安全中的应用

    12.1 云计算服务模型

    12.1.1 IaaS模型
    12.1.2 PaaS模型
    12.1.3 SaaS模型

    12.2 虚拟化环境下面临的安全风险及研究现状

    12.2.1 虚拟化类别
    12.2.2 虚拟化面临的安全风险
    12.2.3 虚拟化安全监控研究现状

    12.3 基于内存分析的虚拟机安全监控方法

    12.3.1 GM虚拟机物理内存提取方法
    12.3.1.1 VMCS结构体
    12.3.1.2 基于VMCS结构体的虚拟机物理内存提取方法
    12.3.1.3 监控方法功能和性能比对
    12.3.2 GM行为分析
    12.3.2.1 VENOM漏洞
    12.3.2.2 漏洞触发
    12.3.2.3 逃逸行为检测

    12.4 基于内存旁路的云安全威胁监控技术

    12.5 本章小结

    13 基于uKey的认证机制的破解

    13.1 身份认证技术

    13.2 uKey的认证机制

    13.2.1 uKey
    13.2.2 Windows交互式登录方式的原理
    13.2.3 Winlogon与GINA交互原理
    13.2.3.1 GINA的结构
    13.2.3.2 安全登录实现原理
    13.2.4 自定义GINA的实现原理
    13.2.4.1 实现原则
    13.2.4.2 使用uKey进行身份认证与安全登录
    13.2.4.3 使用uKey登录操作系统的流程
    13.2.4.4 uKey的安全性分析

    13.3 破解基于uKey的Windows登录认证机制

    13.3.1 绕过系统检测uKey是否接入的机制
    13.3.1.1 WinExec函数
    13.3.1.2 rundll32.exe
    13.3.1.3 破解方式
    13.3.2 绕过系统启动时的登录密码认证机制
    13.3.3 绕过系统处于锁屏状态时的登录密码认证
    13.3.4 解除对USB接口的禁用

    13.4 本章小结

    14 木马的检测分析

    14.1 恶意代码

    14.1.1 恶意代码概念和分类
    14.1.2 Rootkit
    14.1.3 ShellCode
    14.1.4 恶意代码的自启动方式
    14.1.5 恶意代码自我保护技术

    14.2 APT攻击

    14.2.1 APT攻击事件
    14.2.2 APT攻击特点
    14.2.3 APT攻击过程

    14.3 Windows特种木马检测

    14.3.1 基于内存分析的木马检测技术
    14.3.1.1 隐藏进程分析
    14.3.1.2 动态链接库分析
    14.3.1.3 恶意驱动分析
    14.3.1.4 可疑进程检测
    14.3.2 检测样例
    14.3.2.1 波尔木马的检测
    14.3.2.2 WannerCry勒索病毒的检测

    14.4 Linux恶意代码检测

    14.4.1 用户级Rootkit
    14.4.1.1 ShellCode注入
    14.4.1.2 ShellCode注入检测
    14.4.1.3 中空进程技术
    14.4.1.4 共享库注入
    14.4.1.5 内联钩子
    14.4.2 内核级Rootkit
    14.4.2.1 内核模式访问
    14.4.2.2 内核模块隐藏
    14.4.2.3 从sysfs中隐藏模块
    14.4.2.4 KBeast检测
    14.4.2.5 内核模式代码注入
    14.4.2.6 系统调用句柄钩子
    14.4.2.7 键盘通知

    14.5 MacOS 恶意代码检测

    14.5.1 用户级Rootkit分析
    14.5.1.1 代码注入技术
    14.5.1.2 代码注入检测
    14.5.1.3 CrisisInjected Bundles
    14.5.1.4 内联钩子
    14.5.1.5 挂钩重定向表
    14.5.1.6 库加载顺序劫持
    14.5.1.7 APIHook检测方法
    14.5.2 内核Rootkit分析
    14.5.2.1 隐藏的内核扩展
    14.5.2.2 内核扩展映射
    14.5.2.3 隐藏的进程
    14.5.2.4 系统调用和陷阱表钩子
    14.5.2.5 影子系统调用表(Shadow System Call Table)
    14.5.2.6 IOKit通知
    14.5.2.7 LogKext检测
    14.5.2.8 网络内核扩展
    14.5.2.9 IP过滤器
    14.5.2.10 Socket过滤器
    14.5.2.11 Mac系统内存中的恶意代码
    14.5.2.12 存活机制检测

    14.6 本章小结

    15 系统密码的破解

    15.1 密码认证机制

    15.1.1 Windows密码认证机制
    15.1.2 Linux密码认证机制
    15.1.3 MacOS密码认证机制

    15.2 Windows系统密码破解

    15.2.1 修改密码方式
    15.2.2 绕过密码方式
    15.2.3 密码明文获取方式

    15.3 Linux系统密码破解

    15.3.1 单用户模式进入系统
    15.3.2 修改配置文件
    15.3.3 mimipenguin
    15.3.4 访问物理内存获取密码明文
    15.3.5 Inception

    15.4 MacOS X登录屏保密码破解

    15.4.1 修改内存实现密码绕过的方式
    15.4.1.1 相关基本知识
    15.4.1.2 未开启FileVault和VT-d计算机上的密码绕过方法
    15.4.1.3 开启VT-d未开启FileVault功能的计算机上的密码绕过方法
    15.4.1.4 开启VT-d和FileVault功能的计算机上的密码绕过方法
    15.4.2 读取内存获取密码明文的方式

    15.5 以修改内存方式向Mac OS植入应用程序

    15.6 本章小结

    思维导图

    内存取证原理与实践

    防止博客图床图片失效,防止图片源站外链:

    http://www.processon.com/chart_image/5e5b3737e4b0d4dc8776d2c4.png)

    思维导图在线编辑链接:

    https://www.processon.com/view/5e5b3737e4b0d4dc8776d2c1

  • 相关阅读:
    《java入门第一季》之面向对象(继承总结)
    《java入门第一季》之面向对象面试题
    《java入门第一季》之面向对象(this和super详细分析)
    《java入门第一季》之面向对象(方法重写问题)
    《java入门第一季》之面向对象面试题(继承中构造方法的关系)
    《java入门第一季》之面向对象面试题(this和super的区别)
    《java入门第一季》之面向对象(继承)
    《java入门第一季》之面向对象(继承)
    Express服务器开发
    WebView 缓存原理分析和应用
  • 原文地址:https://www.cnblogs.com/jingle1267/p/12899911.html
Copyright © 2011-2022 走看看