取证
免责声明
本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
大纲
操作系统取证
Android
win
工具
windows 日志
DNS
动作记录
key
蓝牙
工具
无线
工具
Linux
文件-软件取证
exif
工具
ExifTool - 用于读取,写入和编辑各种文件中的 exif 信息的工具
浏览器取证
工具
obsidianforensics/hindsight - chrome历史访问记录取证工具(真是不给人留条活路)
djhohnstein/SharpChromium - 用于从 Chromium 系列浏览器中获取 Cookie、访问历史、网站登录凭据等敏感信息的工具
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/
中间件服务器程序日志
辅助工具
JeffXue/web-log-parser - 开源的分析 web 日志工具,采用 python 语言开发,具有灵活的日志格式配置。
IIS
C:\WINDOWS\system32\LogFiles : 日志内容包括访问域名时间、ip、访问 url 等信息。
httpd
/etc/httpd/logs/
apache
apache 日志一般分为 access_log 和 error_log 两种,通过查看 httpd.conf 文件查看 apache 日志路径:
grep -i "CustomLog" /etc/httpd/conf/httpd.conf
grep -i "ErrorLog" /etc/httpd/conf/httpd.conf
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 的安装目录
是域的实际名称,是在创建域的时候指定的
是 Server 的实际名称,是在创建 Server 的时候指定的
是 Admin Server 的实际名称,是在创建 Admin Server 的时候指定的。
WebLogic 9及以后版本:
domain log : 主要记录了一个 domain 的运行情况,一个 domain 中的各个 weblogic server 可以把它们的一些信息(如:严重错误)发送到 AdminServer 上,AdminServer 把这些信息传递到 domain.log 上.
$MW_HOME\user_projects\domains\\servers\\logs\.log
server log : 主要用于服务器的一般日志记录,比如 weblogic 的启动、关闭、部署应用等相关记录,日志格式:依次为时间戳,严重程度,子系统,计算机名,服务器名,线程 ID.
$MW_HOME\user_projects\domains\\servers\\logs\.log
access log : 主要记录 http 请求,默认情况下日志记录处于启用状态,服务器将 http 请求保存在单独的日志文件中,日志主要记录了 http 请求请求 ip 地址、请求时间、访问页面、响应状态等信息.
$MW_HOME\user_projects\domains\\servers\\logs\access.log
WebLogic 8.x版本:
access log
$MW_HOME\user_projects\domains\\\access.log
server log
$MW_HOME\user_projects\domains\\\.log
domain log
$MW_HOME\user_projects\domains\\.log
jboss
LOG4J 配置默认 Deploy/conf/ 如 jboss/server/default/conf/jboss-log4j.xml
网络取证
工具
数据库取证
misc
mysql\lib\plugin 目录的异常文件
select * from mysql.func 的异常
mssql 检查 xp_cmdshell 等存储过程
异常数据库登录
数据库用户弱口令
注意 mysqld 配置文件
mysql
mysql 日志
错误日志:默认开启,hostname.err
查询日志:记录用户的所有操作。默认关闭,general_log_file(常见 getshell 手法)
慢查询日志:记录执行时间超过指定时间的查询语句,slow_query_log_file(慢查询 getshell)
事务日志:ib_logfile0
二进制日志:记录修改数据或有可能引起数据改变的 mysql 语句,log_bin,默认在数据目录,如 mysql-bin.000001
ErrorLog : 记录 Mysql 运行过程中的 Error、Warning、Note 等信息,系统出错或者某条记录出问题可以查看 Error 日志;
GenaralQuery Log :记录 mysql 的日常日志,包括查询、修改、更新等的每条 sql;
show variables like '%general%'; -- 查看log配置信息
SET GLOBAL general_log = 'On'; -- 开启日志
SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log'; -- 指定日志文件路径
Binary Log :二进制日志,包含一些事件,这些事件描述了数据库的改动,如建表、数据改动等,主要用于备份恢复、回滚操作等;
Slow QueryLog* :记录 Mysql 慢查询的日志;
mysql 相关命令
status;
show global variables like '%log%';
show global variables like '%gene%';
show master status;
systemmore /mydata/data/stu18_slow.log;
showbinary logs;
showmaster logs;
showbinlog events in 'mysql-bin.000011';
show processlist;
有哪些IP在爆破?
grep "Access denied" mysql.log |cut -d "'" -f4|uniq -c|sort -nr
爆破用户名字典都有哪些?
grep "Access denied" mysql.log |cut -d "'" -f2|uniq -c|sort -nr
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 时间:
select sqlserver_start_time fromsys.dm_os_sys_info;
历史 sql 记录查询:SQLServer 并没有这样的实现,只有 sys.dm_exec_query_stats 缓存了一部分 (sql server 服务开启后执行的语句,某些不被缓存执行计划的语句并不记录)。
xp_cmdshell在mssql2005之后的版本中是默认禁止的,查看xp_cmdshell是否被启用。
Exec master.dbo.xp_cmdshell 'whoami'
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。
开启审计功能
alter system set audit_sys_operations=TRUEscope=spfile;
alter system set audit_trail=db,extendedscope=spfile;
重启实例即可,开启后会把审计内容记录到 sys 库的 AUD$ 表中