Linux应急响应篇
本章继续对linux操作系统中应急响应的基础技术分析能力做一下介绍.
一、概述
上一篇文章主要介绍了windows应急响应的基础技术分析能力,那么本章继续对linux操作系统中应急响应的基础技术分析能力做一下介绍,希望能对有需要的同学有帮助。
二、技术分析
1、准备工作
在正式实施应急响应之前,需要先进行以下工作,
第一、信息收集,先对安全事件进行详细的了解,包括系统、服务以及业务类型
第二、思路梳理,通过以上信息收集初步梳理自己的分析思路
第三、工具准备,提前准备好需要用到的工具脚本等资料
第四、数据备份,所有涉及到分析以及证据的材料都需要提前进行备份,这样也方便之后还有分析人员或者防止数据被篡改或者覆盖。
1)备份passwd文件
cat /etc/passwd > passwd.txt
编辑[](https://shs3.b.qianxin.com/attack_forum/2021/10/attach-3f6d3c601f33b3334a620db85ef5a4bc24bc376b.png)
2)备份shadow文件
cat /etc/shadow > shadow.txt
3)备份当前网络连接
netstat -anp > netstat_anp.txt
4)备份历史命令
cp ~/.bash_history history.txt
5)备份用户登录信息
w > users.txt
6)备份进程信息
ps aux > ps.txt
第五、时间校准,查看系统时间和北京时间是否同步准确,如果不准确那么系统日志等信息的事件可能会存在误差,所以必须提前校准时间。
2、用户信息分析
1)查看当前用户
whoami
2)查看当前登录系统的所有用户
who(tty:指的是主机的图形化界面的面板,pts/x:指的是ssh远程连接的窗口)
3)主机上一次启动的时间
who -b
4)显示已经登陆系统的用户列表,并显示用户正在执行的指令
w
5)显示当前登录系统的所有用户的用户列表
users
6)查看最近登录成功的用户及信息
last
7)查看用户信息
cat /etc/passwd
8)查看可以登录系统的用户
cat /etc/passwd | grep /bin/bash
9)查看超级用户(uid=0)
awk -F: '$3==0{print $1}' /etc/passwd
10)查看可以远程登录的用户(无密码只允许本机登陆,远程不允许登陆)
awk '/\$1|\$6/{print $1}' /etc/shadow
11)查看拥有sudo权限的用户
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
12)查看历史命令
cat ~/.bash_history
3、进程信息分析
1)动态查看进程
top
2)查看PID为xxx的进程的可执行程序
ls -l /proc/pid/exe
3)查看PID为xxx的进程打开的文件
lsof -p pid
4)查看进程sshd打开的文件
lsof -c sshd
5)查看xx端口对应的一些进程
lsof -i:port
6)查看pid为2091进程的启动时间点
ps -p PID -o lstart
7)查看网络连接情况,通过过滤pid查看连接的端口
netstat -pantu | grep pid
8)查看端口对应的进程pid
fuser -n tcp port
9)查看进程
ps aux (ps -ef)
10)查看进程树
pstree
11)查看进程,根据cpu使用从高到低
ps aux --sort -pcpu
12)查看进程,根据内存使用从高到低
ps aux --sort -pmem
4、网络连接分析
1)netstat命令用来打印Linux中网络系统的状态信息;
netstat -an
2)查看TCP连接状态
netstat -nat | awk ‘{print $6}’| sort | uniq -c | sort -rn
3)查找请求数请10个IP
netstat -anlp | grep 80 | grep tcp | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | head -n 20
4)根据端口列进程
netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1
5、异常文件分析
1)查看指定目录最近被修改的文件(查看var目录下3天内被修改的文件)
find /var/ -type f -mtime -3 | xargs ls -la
2)按时间排序,查看var目录下最近是否有命令被替换,可以结合rpm -Va命令
ls -alt /var/ | rpm -Va>rpm.log
6、开机启动项分析
1)查看是否有异常开机启动项
cat /etc/rc.local | chkconfig --list
7、定时任务分析
1)查看定时任务
sudo vi /etc/crontab
m、h、dom、mon、dow、command分别是(minute; hour; day of month; month; day of week)的缩写
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
8、系统日志分析
1)Linux下常见的一些日志:
/var/log/boot.log:录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息
/var/log/lastlog :记录最后一次用户成功登陆的时间、登陆IP等信息
/var/log/messages :记录Linux操作系统常见的系统和服务错误信息
/var/log/secure :Linux系统安全日志,记录用户和工作组变坏情况、用户登陆认证情况
/var/log/btmp :记录Linux登陆失败的用户、时间以及远程IP地址
/var/log/syslog:只记录警告信息,常常是系统出问题的信息,使用lastlog查看
/var/log/wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,使用last命令查看
/var/run/utmp:该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件
/var/log/auth.log 或 /var/log/secure 存储来自可插拔认证模块(PAM)的日志,包括成功的登录,失败的登录尝试和认证方式。Ubuntu 和 Debian 在 /var/log/auth.log 中存储认证信息,而 RedHat 和 CentOS 则在 /var/log/secure 中存储该信息。
2)查看登录成功的记录(auth.log/secure)
cat /var/log/auth.log | grep Accepted
3)查看登录失败的记录
cat /var/log/auth.log | grep Failed
4)目前与过去登录系统的用户相关信息
last
5)查看最近登录失败的用户及信息,查看的是 /var/log/btmp 文件
lastb
6)last命令查看系统中最近的五次用户登录记录
Last | head -5
7)显示系统中所有用户最近一次登录信息,读取的是 /var/log/lastlog 文件
lastlog
9、web日志分析
在针对日志分析的过程中,会使用的一些其他的脚本和过滤语法,因此在开始之前需要补充一下一些关键词的意义,具体如下:
awk 首先将每条日志中的IP抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
sort进行初次排序,为的使相同的记录排列到一起;
upiq -c 合并重复的行,并记录重复次数。
head进行前十名筛选;
sort -nr按照数字进行倒叙排序。
1)通过日志查看当天ip连接数
cat apache_access_2021-10-23.log | grep "23/Oct/2011" | awk '{print $2}' | sort | uniq -c | sort -nr
2)在日志中找出访问次数最多的10个IP。
awk '{print $1}' apache_access_2021-10-24.log |sort |uniq -c|sort -nr|head -n 10
3)当天ip连接数最高的ip都在干些什么:
cat apache_access_2021-10-24.log | grep "24/Oct/2021:00" | grep "192.168.5.1" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
4)当天访问页面排前10的url:
Cat apache_access_2021-10-24.log | grep "24/Oct/2021:00" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
5)查看日志中访问次数最多的前10个IP
cat apache_access_2021-10-24.log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less
10、查杀rootkit
Rootkit是一个恶意软件,它可以隐藏自身以及指定的文件、进程、网络、链接、端口等信息。Rootkit可通过加载特殊的驱动修改系统内核,进而达到隐藏信息的目的。Chkrootkit是一款用来检测rootkit的软件,针对上述的一些分析完成之后可以考虑利用Chkrootkit对系统进行一次检测。
Chkrootkit扫描结果后面如果是:not infected/not tested/nothing found/nothing deleted 之类的就表示正常。如果是INFECTED那么就需要针对其进行分析。
也可以通过chkrootkit | grep INFECTED 命令直接找到可能被感染的文件。
三、总结
以上便是我对linux系统中应急响应过程中常用的一些功能和分析方法,从10个方面进行了描述。当然往往一些安全事件的复杂性可能超出了这些范围,但是当我们将基础的一些思路和方法都掌握了,对于一些变化上的分析灵活运用和实操便可。