常见的应急响应事件分类:
- Web入侵:网页挂马、主页篡改、Webshell
- 系统入侵:病毒木马、勒索软件、远控后门
- 网络攻击:DDOS攻击、DNS劫持、ARP欺骗
具体情况具体分析,如果是一台失陷的公网Web主机,那么着重从Web服务层面去排查,如果是内网一台Windows,那么着重从系统层面去排查,原则上能用工具则用工具
Linux
敏感目录
/tmp
/etc/init.d/
自启动目录- web目录
ls -ltha列举所有文件
基于时间和权限的筛选
find ./ -mtime 0 -name "*.php"
# 查找24h内修改的php文件
find ./ -iname "*.php" -perm 777
# -iname 忽略大小写,-perm查找777权限
网络连接与进程
netstat -pantl
netstat -anpt
netstat -pantl | grep "ESTABLISHED"查看正在建立连接的端口
查看进程对应的文件
ps aux
ps aux | grep ${PID}
lsof -i:${PORT} # 查看占用端口的进程号
kill -9 ${PID} #
killall php-fpm # 杀死所有php-fpm进程
登录与用户
last -i | grep -v 0.0.0.0 # 查看登录日志,筛选非本地登录
w # 看现在那些用户登陆了
cat /etc/passwd | grep "0:0"
awk -F: '$3==0{print $1}' /etc/passwd # 查询特权用户
awk '/\$1|\$6/{print $1}' /etc/shadow # 查询可以远程登录的账号
more /etc/sudoers | grep -v "^#\|^$" grep "ALL=(ALL)" # 查询具有sudo权限的账号
历史命令
history
cat ~/.bash_history
cat /root/.bash_history
注意
.bash_history
要当ssh session正常退出之后才会写入,如果是非正常退出的话不会写入
计划任务
crontab -e
crontab -l
可以用工具解析
启动项、预加载文件
自启动服务
ls /etc/init.d/ # 自启动服务
/etc/init.d/xxx status #查看状态
update-rc.d disable # 取消开机自启
开机启动项
more /etc/rc.local
/etc/rc.d/rc[0-6].d
ls -l /etc/rc.d/rc3.d/
开机预加载的文件
- 系统级别
/etc/profile
/etc/paths
- 用户级别
~/.bash_profile
(mac用的)~/.bash_login
~/.profile
~/.bashrc
(linux用的)
Windows
网络连接
netstat -ano
如果网络连接出现以下情况,则当前主机可能已经失陷
- 主机存在对内网网段大量主机的某些端口(常见如22,445,3389,6379等端口)或者全端口发起网络连接尝试,这种情况一般是当前主机被攻击者当作跳板机对内网实施端口扫描或者口令暴力破解等攻击。
- 主机和外网IP已经建立连接(ESTABLISHED状态)或者尝试建立连接(SYN_SENT状态),可以先查询IP所属地,如果IP为国外IP或者归属各种云厂商,则需要重点关注。进一步可以通过威胁情报(https://x.threatbook.cn等)查询IP是否已经被标注为恶意IP。
- 如果无法直接从网络连接情况判断是否为异常连接,可以根据网络连接找到对应的进程ID,判断进程是否异常。如果不能从进程判断,可以进一步找到进程对应文件,将对应文件上传至virustotal(https://www.virustotal.com)进行检测。
windows通过进程找到文件路径:
# 打开所有端口进程列表
netstat -ano
# 找到可以的端口链接
netstat -ano | findstr 13232
# 通过pid找到进程
tasklist | findstr 13232
# 通过进程找到文件路径
wmic process where name="firefox.exe" get processid,executablepath,name
wmic process get name,executablepath,processid|findstr 2860
敏感目录
- 各个盘符下的临时目录,如
C:\TEMP
、C:\Windows\Temp
等。 - 攻击队喜欢放马的目录,比如
C:\Users\Public
下的各个目录 - 浏览器的下载目录
%UserProfile%\Recent
,查看用户最近操作的文件- 回收站,如C盘下回收站
C:\$Recycle.Bin
- web目录
记得按照时间排序,来查看最近修改的文件夹
后门帐号
注册表
查看注册表中HKLM\SAM\SAM\Domains\Account\Users\Names
(或者HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
)中是否有多余的账号(可询问客户运维人员以确定账号存在的必要性)。
正常情况下,上述路径的SAM权限仅system用户可查看,需要给administrator用户授权才能打开完整路径。对SAM右键、给administator用户添加完全控制权限,记得改回去
下图 admin$
即为后门账号
计算机管理
compmgmt.msc # 查看用户和用户组
lusrmgr.msc # 查看用户和用户组
net命令
|
|
启动项
启动目录
%programdata%\Microsoft\Windows\Start Menu\Programs\Startup # 系统启动目录
%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup # 用户登陆时启动目录
注册表
太多了,就说一两个:
-
Run注册表键值为开机启动项,每一次开机都会执行键值对应的程序或bat脚本
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
-
Logon Scripts是优先于很多杀毒软件启动的,所以可以通过这种方式达到一定的免杀效果
在注册表
HKEY_CURRENT_USER\Environment
这条路径下,添加新的字符串值,值的名字为:UserInitMprLogonScript
,数值数据为想要启动程序的路径 -
另外
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
注册表项很多,建议使用火绒剑一把梭
计划任务、服务
同样建议火绒剑一把梭
taskschd.msc # 计划任务查看器
schtasks # 命令行查看计划任务
services.msc # 服务查看器
systeminfo # 查询补丁信息
eventvwr.msc # 事件查看器(查看系统日志,安全日志)