您现在的位置是:首页 >学无止境 >应急响应:系统入侵排查指南网站首页学无止境
应急响应:系统入侵排查指南
目录
第三方日志分析工具:FullEventLogView Event Log Explorer
系统基本信息排查
Windows系统排查
命令行输入 msinfo32 ,就会打开系统信息窗口,可以显示本地计算机的硬件资源、组件、软件环境、正在运行的任务、服务、系统驱动程序、加载模块、启动程序等。
重点关注以下几个位置即可
Linux系统排查
CPU信息
命令行输入 lscpu 命令,查看CPU相关信息
操作系统信息
命令行输入 uname -a ,查看当前操作系统信息
命令行速录 cat /proc/version 命令,查看Linux版本
载入模块排查
命令行速录 lsmod 命令,查看Linux已载入模块信息
用户排查
攻击者会采用的方法主要有如下几种:
- 直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似)
- 激活一个系统中的默认账户,但这个账户是不经常使用的
- 建立一个隐藏账户 (在 Windows 系统中,一般在账户名称最后加$)
Windows系统用户排查
关于Windows系统的用户,用户组管理可以参考这篇文章:应急响应之系统排查方法_世界尽头与你的博客-CSDN博客
排查所有账户
黑客创建的某些隐藏账户通过dos指令无法发现, 但是当我们查看注册表时就可以发现
通过注册表检查是否存在账户名为“xxx$
”或修改注册表创建的隐藏账户,再检查是否存在可疑账户,并进行禁用
注册表路径:
给SAM目录添加当前用户可读写属性
HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames
同时,在此项下导出所有以 00000 开头的项,将所有导出的项与 000001F4 (该项对应Administrator用户)导出内容做比较,若其中的 F 值相同,则表示可能为克隆账户
命令行输入 wmic useraccount get name,SID 查看系统中的用户信息
Linux用户排查
命令行输入 cat /etc/passwd 查看所有用户信息
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
最后显示的 /bin/bash 表示该用户可登录 ; sbin/nologin 不可登录
root账户排查
输入命令 awk -F: '{if($3==0) print $1}' /etc/passwd 可查询可登录账户 UID 为0的账户,root是 UID为0的可登录账户,如果出现其他为 0 的账户,就要重点排查
查看所有可登录账户
命令行输入 cat /etc/passwd | grep '/bin/bash' 或者 cat /etc/passwd | grep '/bin/zsh'
查看用户错误的登录信息
命令行输入 lastb 可查看显示用户错误的登录列表,包括错误的登录方法、IP 地址、时间等
查看所有用户最后登录信息
命令行输入 lastlog
排查空口令账户
命令行输入 awk -F: 'length($2)==0 {print $1}' /etc/shadow
如果有用户是空口令就会显示出来
启动项排查
启动项是系统开机时在前台或者后台运行的程序,攻击者有可能通过启动项使用病毒后门等实现持久化控制。
Windows系统启动项排查
任务管理器
命令行输入 msconfig
注册表排查
很多病毒木马通过注册表实现持久化驻留
开机启动项排查:命令行输入 regedit 即可
注册表中重点关注以下三个:
HKEY_CURRENT_USERsoftwaremicorsoftwindowscurrentversion
un
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunonce
查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。
Linux系统启动项排查
命令行输入 ls -alt /etc/init.d
计划任务排查
Windows系统计划任务排查
计划任务程序库
命令行输入 taskschd.msc 可以查看任务的名称,状态,触发器等信息
Powershell命令查看
Powershell命令行输入 Get-ScheduledTask 可以查看计划任务的路径,名称,状态
Powershell命令行输入 schtasks
Linux计划任务排查
查看当前的计划任务 crontab -l
查询到一个挖矿恶意程序的任务计划设置,其会每隔 12 分钟远程下载恶意网站上的 crontab.sh 脚本文件
日志排查
Windows系统日志排查
日志位置
在Windows系统中,日志文件包括:系统日志、安全性日志及应用程序日志,其位置如下。
在Windows 2000专业版/Windows XP/Windows Server 2003系统中:
系统日志的位置为:
C:WINDOWSSystem32configSysEvent.evt
安全性日志的位置为:
C:WINDOWSSystem32configSecEvent.evt
应用程序日志的位置为:
C:WINNTSystem32configAppEvent.evt
在Windows Vista/Windows7/Windows8/Windows10/Windows Server2008及以上版本系统中:
系统日志的位置为:
%SystemRoot%System32WinevtLogsSystem.evtx
安全性日志的位置为:
%SystemRoot%System32WinevtLogsSecurity.evtx
应用程序日志的位置为:
%SystemRoot%System32WinevtLogsApplication.evtx
系统日志
系统日志主要是指 Windows 系统中的各个组件在运行中产生的各种事件。这些事件一般可以分为:系统中各种驱动程序Q在运行中出现的重大问题、操作系统的多种组件在运行中出现的重大问题及应用软件在运行中出现的重大问题等。这些重大问题主要包括重要教据的丢失、错误,以及系统产生的崩溃行为等
例如:事件ID=10016
安全性日志
安全性日志主要记录了各种与安全相关的事件。构成该日志的内容主要包括:各种登录与退出系统的成功或不成功的信息,对系统中各种重要资源进行的各种操作,如对系统文件进行的创建、删除、更改等操作
应用程序日志
应用程序日志主要记录各种应用程序所产生的各类事件。例如,系统中 SQL Server 数据库程序在受到暴力破解攻击时,日志中会有相关记录
日志常用ID
登录相关事件ID
日志筛选器分析日志
第三方日志分析工具:FullEventLogView Event Log Explorer
Linux系统日志排查
日志位置 /var/log
可以使用 cat 命令查看
/var/log/wtmp:记录登录进入、退出、数据交换、关机和重启,即 last。
/var/log/cron:记录与定时任务相关的日志信息。
/var/log/messages:记录系统启动后的信息和错误日志。
/var/log/apache2/access.log:记录 Apache 的访问日志。
/var/log/auth.log:记录系统授权信息,包括用户登录和使用的权限机制等。
/var/log/userlog:记录所有等级用户信息的日志。
/var/log/xferlog(vsftpd.log):记录 Linux FTP 日志。
/var/log/lastlog:记录登录的用户,可以使用命令 lastlog 查看。
/var/log/secure:记录大多数应用输入的账号与密码,以及登录成功与否。
/var/log/faillog:记录登录系统不成功的账号信息。
其它应用程序位置
IIS日志位置
%SystemDrive%inetpublogsLogFiles
%SystemRoot%System32LogFilesW3SVC1
%SystemDrive%inetpublogsLogFilesW3SVC1
%SystemDrive%WindowsSystem32LogFilesHTTPERR
Apache日志位置
/var/log/httpd/access.log
/var/log/apache/access.log
/var/log/apache2/access.log
/var/log/httpd-access.log
Nginx日志位置
默认在 /usr/local/nginx/Togs 目录下,access.log 代表访问日志error.log 代表错误日志。若没有在默认路径下,则可以到nginx.conf 配置文件中香找
Tomcat 日志的位置:
默认在 TOMCAT HOME/Logs/ 目录下,有 catalina.out、catalina.YYYY-MM- DD.og、localhost.YYYY-MM-DD.og.ocalhost access log.YYYY-MM-DD.txt、host-manager.YYYY-MM-DD.g、manager.YYYY-MM-DD.log 等几类日志
WebLogic 日志的位置:
在默认情况下,WebLogic 有三种日志,分别是 access og、server log 和 domain log
access.log
$MW_HOMEuser_projectsdomains<domain_name>servers<server_name>logsaccess.log
server.log
$MW_HOMEuser_projectsdomains<domain_name>servers<server_name>logs<server_name>.log
domain.log
$MW_HOMEuser_projectsdomains<domain_name>servers<adminserver_name>logs<domain_name>.log
进程排查
Windows系统进程排查
对于 Windows 系统中的进程排查,主要是找到恶意进程的 PID、程席路径,有时还需要找到 PPID (PID 的父进程)及程序加载的DLL。对于进程的排查,一般有如下几种方法。
任务管理器
tasklist命令查询
命令行输入 tasklist 可以显示计算机上的所有进程
命令行输入 tasklist /m 可显示进程加载DLL情况
tasklist /m ntdll.dll 查看特定DLL调用的进程
netstat可以显示网络连接信息
命令行输入命令 netstat -ano | findstr "ESTABLISHED" 定位可疑的ESTABLISHED
PID=12306有大量的网络连接
命令行输入 tasklist | find "12306" 查看具体的程序
Linux进程排查
命令行输入 netstat 网络连接命令,分析可疑端口,可疑IP,可疑PID
PID=2963存在恶意外链的情况
根据 PID 的值,利用 ls -alt /proc/PID 命令,可查看其对应的可执行程序
也可以利用 Lsof -D PID 命令,查看进程所打开的文件。使用 Lsof -p 2963 命令,可查看 PID 为2963 的进程所打开的文件,发现文件mbrn 为可疑文件
命令行输入指令,杀死进程 kill -9 PID kill -9 2535
命令行输入指令,删除文件 rm -rf filename rm -rf mbrn
如果 root 用户都无法删除相关文件,那么很可能是因为该文件被加上了 i 属性。使用 Lsatter filename 命令,可查看文件属性,然后使用 chattr -i filename 命令,可移除 i 属性,进而删除文件。也有的进程因为存在守护进程而无法删除,我们可以先把进程挂起,查杀守护进程后,再返回将进程删除
有时攻击者会隐藏进程,需要学会查看隐藏进程,一次输入以下指令即可查看
ps -ef awkprint sort -n uniq >1
ls /proc sort -n uniq >2
diff 1 2
服务排查
Windows服务排查
命令行输入 services.msc ,之后会打开服务窗口,查看所有服务项,名称,描述,状态
Linux服务排查
命令行输入 chkconfig --list 查看系统运行的服务
其中,0、1、2、3、4、5、6 表示等级,具体含义如下:
- 1 表示单用户模式,
- 2 表示无网络连接的多用户命令行模式;
- 3 表示有网络连接的多用户命令行模式
- 4表示不可用;
- 5 表示带图形界面的多用户模式:
- 6 表示重新启动。
命令行输入 service --status-all 可以查看所有服务的状态