安全事件应急响应排查指南
应急响应事件分类
应急响应事件分类
web入侵:
网页挂马、主页篡改、Webshell
系统入侵:病毒木马、勒索软件、远控后门
挂黑 --- 0day 怎么处理
被植入webshell怎么办
Web应急响应
1.1 查看历史命令
查看历史命令,基本了解命令执行情况,就可以仔细分析并判断攻击者的行为,使用语法:
history
cat ~/.bash_history
1.2 查看资源占用情况
通过查看内存、CPU使用情况,定位出不正常的程序,使用语法:
top
/*
按1后,再输入shitf+p 以cpu占用排序
按shift+m 以内存占用排序
*/
另外我们也可以使用free来查看,使用语法:
free
为了更直观,我们使用df来进行查看,使用语法:
df -h
然后进到跟目录使用du查看具体占用空间的目录,使用语法:
du -h --max-depth=1 //后面的如果二级目录不多的情况可以把1改为2.
1.3 查看账户信息
通过查看passwd,是否有新增的非法账户(甚至是特权账户),使用语法:
cat /etc/passwd | awk -F ":" '{print $1,$3,$4,$7}' | grep '/.*sh'
root 0 0 /bin/bash
postgres 116 119 /bin/bash
arpwatch 119 122 /bin/sh
couchdb 124 129 /bin/bash
查看账户登录情况,使用语法:
lastlog
用户名 端口 来自 最后登陆时间
root pts/1 192.168.25.1 一 2月 11 13:40:01 +0800 2019
daemon **从未登录过**
bin **从未登录过**
查看是否存在空口令账户(这项似乎对远程登陆无效,测试了空口令是无法登陆的),使用语法:
awk -F ":" 'length($2)==0 {print $1}' /etc/shadow
1.4 查看当前系统用户的会话
使用w(或者使用 who)查看当前系统的会话,主要是查看当前有哪些用户登录到服务器上,使用语法:
w
16:31:38 up 42 min, 3 users, load average: 0.00, 0.05, 0.08
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
roo :0 :0 15:49 ?xdm? 47.71s 0.22s /usr/libexec/gnome-ses
roo pts/0 :0 15:50 2.00s 0.31s 3.62s /usr/libexec/gnome-ter
root pts/1 192.168.25.1 16:21 10:28 0.04s 0.04s -bash
1.5 查看进程和端口
netstat查看目前的网络连接,定位可疑的 ESTABLISHED以及开放的端口,使用语法:
netstat -antloup| egrep 'LIS|EST' //简化版的可以使用:netstat -ntup
另外还可以使用watch实时监控外部网络实时连接情况,使用命令:
watch netstat -ntup
使用ls查看对应的进程文件路径,使用语法:
ls -l /proc/PID/exe
查看端口连接情况,使用语法:
lsof -i:port //以数字显示端口情况使用:lsof -PnR -i:port
样例:
lsof -i:22
查看对应的可执行文件,使用语法:
lsof -p PID查看该PID对应的执行文件
样例:
lsof -p 9698
使用ps查看对应的文件路径,使用语法:
ps -ef | grep COMMAND
1.6 查看hosts文件
hosts文件是系统配置文件,用于本地DNS查询的域名设置,可以强制将某个域名对应到某个IP上,因此需要检查hosts文件有没有被黑客恶意篡改。使用语法:
cat /etc/hosts
1.7 查看计划任务
使用crontab来检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。使用语法
crontab -l
也可以直接查看文件,使用语法:
more /etc/crontab
more /etc/cron.daily
more /etc/cron.*
1.8 查看最近登录情况
查看最近登录情况,使用语法:
lastb
test ssh:notty 192.168.25.1 Wed Feb 13 14:43 - 14:43 (00:00)
test ssh:notty 192.168.25.1 Wed Feb 13 14:43 - 14:43 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:33 - 13:33 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:33 - 13:33 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:16 - 13:16 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:16 - 13:16 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:11 - 13:11 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:11 - 13:11 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:06 - 13:06 (00:00)
root ssh:notty 192.168.25.1 Mon Feb 11 13:06 - 13:06 (00:00)
通过该命令可以查看最近登录的用户,虽然看不出来是否登录成功,但是也可以查看很多信息,如:登录的用户、IP地址、时间等,若其中有很多非系统中的用户登录记录或者一个正常用户短时间内连续多次登录,可以简单认为是在暴力破解。
查看最近成功登录情况,使用语法:
last
root pts/1 192.168.25.1 Mon Feb 11 13:40 - 13:40 (00:00)
root pts/1 192.168.25.1 Mon Feb 11 13:36 - 13:38 (00:02)
root pts/1 192.168.25.129 Mon Feb 11 13:18 - 13:21 (00:03)
root pts/2 192.168.25.1 Mon Feb 11 11:09 - 11:35 (1+00:26)
通过该命令可查看哪些用户在哪些时间段登录上服务器,IP地址是多少,结合上面的lastb可进行综合分析。
1.9 查看环境变量和启动项
使用env查看是否有异常的环境变量,使用语法:
env //或者使用echo $PATH分析是否有可疑的系统路径信息
另外还需查看是否有异常的启动项,使用语法:
ls -l /etc/rc.d/rc[0-6].d/ |grep init.d | sort | uniq -c //CentOS
ls -l /etc/rc[0-6].d/ |grep init.d | sort | uniq -c //Ubuntu
more /etc/rc.local
1.10 查看最近修改的文件
查找最近修改的文件,主要是查看服务器支持的开发脚本文件,使用语法:
find / -mtime 0 -name "*.jsp" //0表示24小时内,1表示前48~24小时修改过的文件
查找最近60分钟修该过的文件,使用语法:
find / -mmin -60 -name "*.jsp"
1.11 查看日志
不同的Linux,日志存放路径可能存在一定的误差,主机层面的日志路径基本都是/var/log,登陆安全日志主要是secure或者auth.log,web层面的日志主要是access日志和error日志,我们可以使用locate以及find去查询具体的日志路径,使用语法:
locate -r '/access[._]log'
find / -regex '.*/access[._]log'
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。使用语法:
grep [option] pattern file
-E:解释PATTERN作为扩展正则表达式,也就相当于使用egrep。或操作
-o: 只输出匹配的具体字符串,匹配行中其他内容不会输出
统计访问日志中IP的访问频率并排序输出,使用语法:
cat /var/log/apache2/access.log | awk '{print $1}' | uniq -c | sort -nr
通过使用常见攻击特征进行分析日志,使用语法:
egrep '(select|script|acunetix|sqlmap|whoami|jsky|Netsparker|AppScan)' /var/log/httpd/access_log
grep -E '(select|script|acunetix|sqlmap|whoami|jsky|Netsparker|AppScan)' /var/log/apache2/access.log
如果木马做了免杀处理,可以查看是否使用加密函数
find / -type f -name "*.php"|xargs grep "base64_decode"
是否做了拼接处理
find / -type f -name "*.php"|xargs grep "@$"
查看安全日志secure(或者 /var/log/auth.log,视具体服务器),查看登录失败的情况,使用语法:
grep "Failed password" /var/log/secure
Feb 13 15:55:51 localhost sshd[9776]: Failed password for invalid user test from 192.168.25.1 port 2149 ssh2
grep -o "Failed password" /var/log/secure | uniq -c
1 Failed password
定位暴力破解IP地址,使用语法:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|sort|uniq -c | sort -nr
统计登录成功的IP有哪些,是否有异常IP,使用语法:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
2. Windows应急响应排查
2.1 查看资源占用情况
通过查看内存、CPU使用情况,定位不正常的程序
2.2 查看账户信息
使用net user查看是否有非法用户,此方法不能查看到隐藏账户($结尾的账户,需要在【本地用户和组】中进行查看
另外还需要排查正常账户是否存在弱口令,是否存在可暴力破解可能等!
2.3 查看当前系统用户的会话
使用query user 查看当前系统的会话(也可使用net use),主要是查看当前有哪些用户登录到服务器上,ID是多少,使用语法:
query user
若发现非法用户正在操作服务器,可使用logoff 踢出该用户,使用语法:
logoff ID
2.4 查看进程和端口
netstat -ano 查看目前的网络连接,定位可疑的 ESTABLISHED,使用语法:
netstat -ano | findstr "ESTABLISHED"
2.5 查看最近使用的文件
单击【开始】>【运行】(或者使用快捷键 win+r),输入%UserProfile%Recent,分析最近打开文件是否存在可疑文件,或者使用语法:
start %UserProfile%Recent
查看隐藏文件:
dir /S /A:H
2.6 查看浏览器记录
查看浏览器访问记录
2.7 查看hosts文件
hosts文件是系统配置文件,用于本地DNS查询的域名设置,可以强制将某个域名对应到某个IP上,因此需要检查hosts文件有没有被黑客恶意篡改。使用语法:
start C:WindowsSystem32driversetchosts
2.8 查看计划任务
使用taskschd来检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。使用语法:
taskschd
2.9 查看系统信息环境变量和启动项
使用语法:
msinfo32
然后打开软件环境进行排查,如环境变量,主要排查temp 变量的所在位置的内容,后缀映射 PATHEXT 是否包含有非windows 的后缀,有没有增加其他的路径到 PATH 变量中(对用户变量和系统变量都要进行排查);正在运行任务,就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期、启动时间等。
也可以使用wmic来进行查看环境变量,使用语法:
wmic ENVIRONMENT get caption,name,VariableValue
使用msconfig查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。使用语法:
msconfig //打开系统配置,定位到启动项
wmic STARTUP get Caption,Command,Location //在命令行使用该命令得到Windows上所有启动项的名称与执行程序所在路径
也可通过注册表来进行查看,使用语法:
regedit
/*
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun //用户设置启动项
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun //系统设置的启动项
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionRun //这些启动项关乎着操作系统的正常运行
*/
2.10 查看日志
Windows系统日志
日志路径:C:WindowsSystem32winevtLogs
必看日志:Security.evtx、System.evtx、Application.evtx
后续还会持续直播,全程hvv公开课免费,希望各位大哥留点时间看看,建议新手学生,和想冲中级的大哥们来听。
录播视频及资料领取方法:关注星禾团队公众号,回复“护网教程”即可领取~
原文始发于微信公众号(星禾团队):安全事件应急响应排查指南
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论