取证
注 : 笔记中拓扑图 xmind 源文件在其图片目录下
免责声明
本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
大纲
数据恢复
操作系统取证
Android
Windows
Linux
文件取证
压缩包
爆破压缩包
伪加密
明文攻击
CRC32碰撞
视频
Deegger_Embedder
图片
png
LSB隐写
jpg
GIF
exif
Steghide
PixelJihad
盲水印
音频
deepsound
LSB音频隐写
sstv音频图像
DTMF拨号音识别
文本
电子文档
Office
爆破Office加密
PDF
爆破PDF加密
html
网络取证
流量分析
TTL隐写
USB取证
蓝牙取证
磁盘取证
内存取证
应用程序取证
浏览器取证
其他软件
WEB取证
中间件配置
中间件服务器程序日志
常见web服务日志
数据库取证
mysql
mssql
Oracle
相关文章
数据恢复
常用软件
tips
第一时间关闭服务或关机,因为运行的系统会持续覆盖磁盘
需要更专业的数据恢复能力,建议找做数据恢复的公司,效果比软件恢复会好很多
操作系统取证
相关文章
Android
Windows
Windows加固+维护+应急响应参考
通用取证工具
系统日志
本部分内容见 Secure-Win 日志部分
DNS
本部分内容见 Secure-Win DNS 部分
动作记录
相关文章
相关工具
剪切板内容
便签信息
代理信息
历史命令
powershell 历史命令记录 :
%appdata%\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
cmd 历史记录
RDP
本部分内容见 Windows 安全
BitLocker
本部分内容见 Windows 安全
认证
本部分内容见 Windows 安全
蓝牙
相关工具
无线
相关工具
NTFS 记录
相关工具
ntfs 数据流
相关工具
NtfsStreamsEditor
Tips
如果使用 7z 进行解压,无法进行恢复 !!!! 建议使用 winrar 解压
注册表
相关工具
RegJump - 注册表快速跳转工具
RegCool - 注册表管理工具
Linux
日志
Linux基本信息查询命令
Linux加固+维护+应急响应参考
相关文章
unhide
Linux 取证工具,能够发现那些借助 rootkit、LKM 及其它技术隐藏的进程和 TCP/UDP 端口。
文件取证
文件取证常用工具
kali 自带, 递归提取
binwalk -Me xxx.bin
foremost - 文件分离工具 - 有时 binwalk 跑不出来可以试试,挺好用的
kali 不一定自带,
foremost -i 1.png
strings
相关文章
CTF writup
压缩包
相关文章
爆破压缩包
相关工具
Hashcat
archpr(Advanced Archive Password Recovery) - 一个灵活的,适用于 ZIP 和 RAR 档案的高度优化的口令恢复工具。
Ziperello - zip 爆破工具
fcrackzip
rarcrack - 支持爆破 rar、zip、7z 三种类型
hashcat、John the Ripper
伪加密
相关工具
ZipCenOp
相关文章
zip
50 4B 03 04 为数据区头文件标记,这里 deFlags 位改为 09 00 可变成伪加密
50 4B 01 02 为目录区头文件标记,后面的 deFlags 是加密标记,将 00 00 改为 09 00 可变成伪加密
50 4B 05 06 为目录区结束文件标记
rar
伪加密只发生在 RAR5.0 以前的版本中
在 RAR 的第 24 个字节,也就是 010 Editor 显示的文件结构中的 ubyte PASSWORD_ENCRYPTED 字段,修改其字段为 1 即可实现 RAR 伪加密
或者修改第11个字节,也就是010 Editor显示的文件结构中的ubyte BLOCK_HEADERS_ENCRYPTED字段的值。修改为1即可造成RAR伪加密。
明文攻击
ZIP明文攻击
CRC32碰撞
CRC32:CRC 本身是 “冗余校验码” 的意思,CRC32 则标识会产生一个 32bit(8 位十六进制)的校验值。
CRC 校验实用程序库,在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。
在诸多检错手段中,CRC 是最著名的一种。CRC 的全称是循环冗余校验。
在产生 CRC32 时,源数据块的每一位都参与了运算,因此即使数据块中只有一位发生改变也会得到不同的 CRC32 值,利用这个原理我们可以直接爆破出加密文件中的内容。
每个文件都有唯一的 CRC32 值,即便数据中一个 bit 发生变化,也会导致 CRC32 值不同。若是知道一段数据的长度和 CRC32 值,便可穷举数据,与其 CRC32 对照,以此达到暴力猜解的目的。但限于 CPU 的能力,通常只适用于较小文本文件。
相关工具
视频
分析工具
Deegger_Embedder
相关工具
图片
相关文章
在线分析工具
隐写分析工具
Stegsolve - 隐写图片查看的利器
File Format:文件格式
Data Extract:数据提取
Steregram Solve:立体视图 可以左右控制偏移
Frame Browser:帧浏览器
Image Combiner:拼图,图片拼接
OurSecret
writup
Tips
exif 信息
十六进制下搜文件头
89504E47
搜文件头数据块IHDR
strings 查看可见字符
有些会修改图片宽高,直接010打开改大点试试
2张图试试 xor
crc
http://www.ip33.com/crc.html
png
png文件分析工具
LSB隐写
LSB(英文 least significant bit)即最低有效位,位于二进制数的最右侧。图像的每一个像素点都是由 RGB(红、绿、蓝)三原色组成,每个颜色占8位(如#FFFFFF)。由于修改最后1位对人眼不敏感,这样一个像素点就可以携带3位信息。应用 LSB 算法的图像格式需为无损压缩数据格式,例如图像中的 bmp、png 格式和音频的 wav 格式。
修改十进制中的最低位,颜色看起来几乎没有变化,我们就可以修改最低位的信息,实现隐写。
LSB 隐写专用工具
相关文章
jpg
jpg文件分析工具
隐写工具
GIF
分割每一帧
分析每一帧的时间间隔
横向合成
exif
可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。Exif信息是可以被任意编辑的,因此只有参考的功能。
相关文章
相关工具
Steghide
PixelJihad
http://tools.jb51.net/aideddesign/img_add_info
盲水印
一般是给2张相同的图片的场景
音频
音频隐写通用工具
morse2ascii - 分析音频中的莫斯电码(虚拟机里需要有声音)
CTF writup
Tips
将波形进一步转化为 01 字符串试试
音频中的频谱隐写是将字符串隐藏在频谱中,此类音频通常会有一个较明显的特征,听起来是一段杂音或者比较刺耳。
deepsound
https://deepsound.en.uptodown.com/windows
LSB音频隐写
sstv音频图像
相关工具
如果无虚拟输入源,需要下载安装一个 https://vac.muzychenko.net/cn/download.htm
DTMF拨号音识别
相关工具
文本
Unicode Text Steganography
电子文档
相关文章
Office
相关文章
word 隐藏文本
文件->选项->显示->勾选隐藏文字
word、xml 转换
提取信息时,将 word 转化成 xml,查看额外信息
.doc -> 后缀改为.zip -> 解压 ->.xml
爆破Office加密
相关工具
Hashcat
破解 ppt
相关工具
Advanced Office Password Recovery
PDF
PDF 隐写取证工具
wbStego4open 会把插入数据中的每一个 ASCII 码转换为二进制形式,然后把每一个二进制数字再替换为十六进制的 20 或者 09,20 代表 0,09 代表 1。这些转换后的十六进制数据被嵌入到 PDF 文件中。查看用 wbStego4open 修改后的文件内容,会发现文件中已混入了很多由 20 和 09 组成的 8 位字节。
pdfinfo - kali 自带
CTF writup
[XDCTFOWASP](https://www.jianshu.com/p/3aaa632ebfea)
Tips
不可见的图层
Adobe 的元数据格式‘XMP’
Adobe 的 XMP 元数据
PDF 的‘增量生成’功能允许保留用户不可见的前版本信息
白色的文字或背景图
图片背后的文字信息
图层后面被覆盖的另一个图层
不显示的注释层。
爆破PDF加密
相关文章
获取 hash
john 的脚本
相关工具
Hashcat
html
snow隐写
http://fog.misty.com/cgi/snow
网络取证
tcpdump 常用
tshark 常用
去重
流量分析
内容见 流量分析
TTL隐写
IP 报文在路由间穿梭的时候每经过一个路由,TTL 就会减 1,当 TTL 为 0 的时候,该报文就会被丢弃。
TTL 所占的位数是 8 位,也就是 0-255 的范围,但是在大多数情况下通常只需要经过很小的跳数就能完成报文的转发,
远远比上限 255 小得多,所以我们可以用 TTL 值的前两位来进行传输隐藏数据。
如:须传送 H 字符,只需把 H 字符换成二进制,每两位为一组,每次填充到 TTL 字段的开头两位并把剩下的 6 位设置为 1(xx111111),这样发 4 个 IP 报文即可传送 1 个字节。
TTL隐写中用到四个值:00 111111(63),01 111111(127),10 111111(191),11 111111(255),解密的时候只取前两位,然后转换成ascii
CTF Writeup
USB取证
内容见 USB取证
蓝牙取证
磁盘取证
内容见 磁盘取证
内存取证
内容见 内存取证
应用程序取证
相关文章
浏览器取证
相关工具
其他软件
相关工具
微信
https://github.com/Ormicron/Sharp-dumpkey - 基于C#实现的获取微信数据库密钥的小工具
向日葵
向日葵客户端运行过程中的日志文件保存路径:
C:\Program Files (x86)\Oray\SunLogin\SunloginClient\log
向日葵的免安装版会在
C:\ProgramData\Oray\SunloginClient\
默认路径下生成config.ini
配置文件,配置文件中的 fastcodehistroy 值以 base64 编码形式存储着向日葵历史连接记录
Xmanager
xshell 默认是不开启会话日志记录的
会话日志文件夹路径 :
C:\Users\<user>\Documents\NetSarang Computer\6\Xshell\Logs
5.x 会话文件夹路径 :
C:\Users\<user>\Documents\NetSarang\Xshell\Sessions
6.x 会话文件夹路径 :
C:\Users\<user>\Documents\NetSarang Computer\6\Xshell\Sessions
SecureCRT
FinalShell
Teamviewer
连接日志文件路径 :
C:\Program Files (x86)\TeamViewer\Connections_incoming.txt
MobaXterm
UltraVNC Server
c:\Program Files\uvnc bvba\UltraVNC\ultravnc.ini
vncpwd.exe -k <hash>
TightVNC Server
HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server
HKEY_CURRENT_USER\SOFTWARE\TigerVNC\WinVNC4
RealVNC Server
HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver
WinSCP
HKCU\Software\Martin Prikryl\WinSCP 2\Sessions
Remote Desktop Organizer
FileZilla
C:\Users\<user>\AppDataoaming\FileZilla\recentservers.xml
Foxmail
解密 Foxmail 安装目录下的 Storage 目录中的 Account.rec0 文件
Navicat
数据库连接记录 :
HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\
当前用户的所有连接记录 :
HKEY_CURRENT_USER\Software\PremiumSoft
Mysql
离线解密(mysql5.0)
将目标 Mysql data 目录下的 user.frm ,user.MYD ,user.MYI 文件托回
本地安装 MySQL Server,装完之后立即停掉服务,将拖回来的那三个文件分别丢到 C:\Program Files\MySQL\MySQL Server\data\mysql 目录下进行替换
修改 Mysql 服务配置文件 C:\Program Files\MySQL\MySQL Server\my.ini 在 mysqld 配置项下添加如下配置,之后启动 Mysql 服务
无需密码直接登录 mysql 执行, 即可拿到完整的密码 hash
PLSQL
离线解密
PLSQL Developer 默认连接账密保存位置位于当前用户如下路径的 user.prefs 文件中,账号和密码的加密方式比较简单,只是简单异或
user.prefs 文件需关注 LogonHistory 和 CurrentConnections 下的内容,每一行都代表一条单独的连接记录
将 LogonHistoryCurrentConnections 下的内容原样粘回本地,在代码中替换,解密即可
WEB取证
相关文章
相关资源
中间件配置
临时目录
IIS
IIS 临时压缩文件 : C:\inetpub\temp\IIS Temporary Compressed Files\WEBUI$^_gzip_D^\WEB\WEBUI\UPLOAD
Linux
/tmp
IIS
C:\Windows\System32\inetsrv\config
NGINX
目录 :
/etc/nginx/conf.d/
httpd
目录 :
/etc/httpd/conf/
中间件服务器程序日志
辅助工具
360星图
辅助命令
IIS
C:\WINDOWS\system32\LogFiles
: 日志内容包括访问域名时间、ip、访问 url 等信息。
httpd
/etc/httpd/logs/
apache
apache 日志一般分为 access_log
和 error_log
两种,通过查看 httpd.conf
文件查看 apache 日志路径:
Linux :
/usr/local/apache/logs/
Linux :
/var/log/apache2
Windows :
apache/logs/
access_log
: 访问日志,记录所有对 apache 服务器进行请求的访问error_log
: 错误日志,记录下任何错误的处理请求,通常服务器出现什么错误,可对该日志进行查看
nginx
nginx 的日志主要分为 access.log
、error.log
两种,可通过查看 nginx.conf
文件来查找相关日志路径
/var/log/nginx/access.log
: 主要记录访问日志,记录访问客户端 ip 地址、访问时间、访问页面等信息。/var/log/nginx/error.log
: 主要记录一些错误信息。
tomcat
tomcat 日志默认路径:在安装目录下的 logs 文件夹下
如果在安装中默认修改了日志存储位置,可在
conf/logging.properties
文件中查看catalina.out
: 运行中的日志,主要记录运行中产生的一些信息,尤其是一些异常错误日志信息catalina.Y-M-D.log
: 是 tomcat 自己运行的一些日志,这些日志还会输出到catalina.out
,但是应用向 console 输出的日志不会输出到catalina.{yyyy-MM-dd}.log
host-manager.xx.log
: 管理日志localhost.xx.log
: 程序异常没有被捕获的时候抛出的地方,Tomcat 下内部代码丢出的日志(jsp 页面内部错误的异常,org.apache.jasper.runtime.HttpJspBase.service
类丢出的,日志信息就在该文件!)应用初始化(listener,filter, servlet)未处理的异常最后被 tomcat 捕获而输出的日志,而这些未处理异常最终会导致应用无法启动。manager.xx.log
localhost_access_log
: 主要记录访问日志信息,记录访问的的时间、ip 地址等信息,也是应急中经常用到的日志信息
weblogic
weblogic 在安装结束后默认开启了日志记录功能,默认配置情况下,weblogic 会有3种日志,分别是 accesslog
, Server log
和 domain log
,WebLogic8.x 和 9 及以后的版本目录结构有所不同。
domain_name/servers/server_name/logs/
$MW_HOME
是 WebLogic 的安装目录<domain_name>
是域的实际名称,是在创建域的时候指定的<server_name>
是 Server 的实际名称,是在创建 Server 的时候指定的<adminserver_name>
是 Admin Server 的实际名称,是在创建 Admin Server 的时候指定的。
WebLogic 9及以后版本:
domain log
: 主要记录了一个 domain 的运行情况,一个 domain 中的各个 weblogic server 可以把它们的一些信息(如:严重错误)发送到 AdminServer 上,AdminServer 把这些信息传递到 domain.log 上.server log
: 主要用于服务器的一般日志记录,比如 weblogic 的启动、关闭、部署应用等相关记录,日志格式:依次为时间戳,严重程度,子系统,计算机名,服务器名,线程 ID.access log
: 主要记录 http 请求,默认情况下日志记录处于启用状态,服务器将 http 请求保存在单独的日志文件中,日志主要记录了 http 请求请求 ip 地址、请求时间、访问页面、响应状态等信息.
WebLogic 8.x版本:
access log
server log
domain log
jboss
LOG4J 配置默认
Deploy/conf/
如jboss/server/default/conf/jboss-log4j.xml
常见web服务日志
sonarqube
日志文件
sonarqube 默认生成的日志只保留7天
-这个看$SONARQUBE-HOME/conf/sonar.properties
里的sonar.log.maxFiles
配置
gitlab
相关文章
常见目录
/var/log/gitlab/
/home/gitlab/logs/
日志文件
production.log: 该日志位于 gitlab-rails 中,其作用是记录 gitlab 的每次请求的具体信息,包括请求的 URL、ip 地址、请求类型、以及此次请求所涉及的具体代码、SQL 请求以及 SQL 请求消耗的时间。
application.log: 此日志文件位于 gitlab-rails 中,其作用是记录创建用户、创建项目、移动项目等日志。
githost.log: 此日志文件位于 gitlab-rails 中,此日志的作用是记录对 gitlab 服务器的错误请求日志。
sidekiq.log: 此日志文件位于 gitlab-rails 中,gitlab 中可能存在一些任务需要运行很长时间,因此会选择将这些任务在后台执行,sidekiq.log 文件就是用来记录这一类任务的处理信息,此日志文件是一个软连接文件。
gitlab-shell.log: 此日志文件位于 gitlab-shell 中,该日志文件的作用是记录执行 gitlab 命令以及为项目添加 ssh 权限的日志文件
同步动作(git clone/fetch/pull):command:gitaly-upload-pack
推送操作(git push):command:gitaly-receive-pack
unicorn_stderr.log: 此日志文件位于 unicorn,该日志文件的作用是记录 gitlab 的 web 服务器的相关记录。
gitlab 默认 svlogd 生成的日志只保留30天
使用控制台实时查看 logs
https://docs.gitlab.com/omnibus/settings/logs.html
gitlab 的
[安全审计/审计事件]
功能只有付费版才有本质上是对 audit_json.log 日志的读取
https://docs.gitlab.cn/jh/administration/audit_events.html
数据库取证
misc
mysql\lib\plugin
目录的异常文件select * from mysql.func 的异常
mssql 检查 xp_cmdshell 等存储过程
异常数据库登录
数据库用户弱口令
注意 mysqld 配置文件
mysql
mysql 日志
/root/.mysql_history
错误日志
ErrorLog
: 记录 Mysql 运行过程中的 Error、Warning、Note 等信息,系统出错或者某条记录出问题可以查看 Error 日志,hostname.err二进制日志
Binary Log
:包含一些事件,这些事件描述了数据库的改动,如建表、数据改动等,主要用于备份恢复、回滚操作等,记录修改数据或有可能引起数据改变的 mysql 语句,log_bin,默认在数据目录,如 mysql-bin.000001二进制日志 (binary log) 主要用于数据库恢复和主从复制, 以及审计 (audit) 操作。审计提供了一种用来追踪用户活动的办法。二进制日志记录了 MySQL 数据库的更新变化。二进制日志还记录了每个更新数据库语句的执行时间 。它不会显示没有修改的数据,只有通用查询日志才记录了所有的数据。二进制日志可以最大可能的恢复数据库,因为二进制日志包含备份后所有的更新。
二进制日志不能直接用文本的方式打开, MySQL 提供了相应的查看工具: mysqlbinlog
通用查询日志
GenaralQuery Log
: 记录用户的所有操作,记录 mysql 的日常日志,包括查询、修改、更新等的每条 sql;默认关闭,general_log_file慢查询日志
Slow QueryLog*
: 记录执行时间超过指定时间的查询语句,slow_query_log_file事务日志:ib_logfile0
mysql 相关命令
更多 mysql 日志类型可参考 https://www.jianshu.com/p/db19a1d384bc
有哪些IP在爆破?
爆破用户名字典都有哪些?
访问审计
追踪是哪个用户执行的操作行为,就需要增加用户访问审计。
MySQL 的连接首先都是要通过 init-connect 初始化,然后连接到实例。利用这一点,通过在 init-connect 的时候记录下用户的 thread_id, 用户名和用户地址实现数据库的访问审计功能。
配置 init-connect 参数
在配置文件 /etc/my.cnf 中添加 init_connect 参数
mssql
mssql 日志
SQL Server 日志记录了完整的 SQL Server 数据库运行的状态信息,并以消息的形式记录系统级、应用级操作。
可以使用 SQL Server Management Studio 中的日志文件查看器来访问有关在以下日志中捕获的错误和事件的信息:
SQL Server Management Studio 连接 sqlserver 数据库,查看与常规 SQL Server 活动相关的日志。
登录到 SQL Server Management Studio,依次点击 管理--SQL Server 日志
exec xp_readerrorlog
object Explorer-Management-SQL Server logs-view-logs
SQL Server 2008: R2\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG
查询最近一次启动 sqlserver 时间:
历史 sql 记录查询:SQLServer 并没有这样的实现,只有
sys.dm_exec_query_stats
缓存了一部分 (sql server 服务开启后执行的语句,某些不被缓存执行计划的语句并不记录)。Sqlserver 开启日志审计功能可参考 https://blog.51cto.com/gaowenlong/1908381
xp_cmdshell 在 mssql2005 之后的版本中是默认禁止的,查看 xp_cmdshell 是否被启用。
Oracle
Oracle 日志
查看日志 : SQL> show parameter dump
查看 v$diag_info 系统视图 : SQL> select * from v$diag_info;
查询 bdump 参数,来找到 alert 日志位置 : show parameter background_dump_dest
Oracle 日志文件分为两种:重做日志文件(redo log file)、归档日志文件,其中重做日志文件主要记录了数据库的操作过程,可以在进行数据库恢复时,将重做日志文件在还原的数据库上进行执行,以达到数据库的最新状态。
Oracle 数据库默认只是对数据库的登录情况记录,但是不对数据库的查询记录统计,可通过 show parameter audit
,查看审计功能是否开启,若 audit_sys_operations 值为 DB。
开启审计功能
重启实例即可,开启后会把审计内容记录到 sys 库的 AUD$
表中
数据库连接日志