前言
在进行应急响应时,我们首先需要对系统进行一个全面的排查,发现可能存在问题的点,如是否存在恶意进程,恶意文件等。
本篇文章来看一下linux下常见的应急排查。
系统排查
1)查看CPU信息:lscpu
通过lscpu命令可以查找cpu的信息
2)操作系统信息
uname -a
cat /proc/version
3)模块信息
lsmod
用户信息排查
1)查看所有用户的信息 cat /etc/passwd
查看系统所有用户信息可以在命令行中输入【cat/etc/passwd】命令,后续各项由冒号隔开,分别表示“用户名”“密码加密”“用户ID”“用户组ID”“注释”“用户主目录”“默认登录shell”。查询的用户信息中,最后显示“bin/bash”的,表示账户状态为可登录;显示“sbin/nologin”的,表示账户状态为不可登录
2)查找超级账号
linux账号中药特别关注root权限的账号,也就是UID/GID为0的账号。如果出现了除root以外的UID为0的可登录账号,要重点排查
awk -F: '{if ($3==0) print $1}' '/etc/passwd'
3)可登录账号分析
除了root账号以外,可登录账号也要重点关注
cat /etc/passwd |grep /bin/bash
4)查看用户错误的登录信息
lastb
可查看用户错误的登录列表,包括错误的登录方法、IP地址、时间等5)
更详细的登录错误信息,可以到/var/log/secure日志中查看
5)查看所有用户最后的登录信息
lastlog
查看系统重所有用户最后的登录信息
6)查看用户最近登录信息
last
可查看用户最近登录信息(数据源为/var/log/wtmp、/var/log/btmp、/var/log/utmp)
7)查看当前用户登录系统情况
who
8)查看空口令账户
无需密码即可登录的账号也需要重点排查。
awk -F : 'length($2)==0 {print $1}' /etc/passwd
启动项
启动项是恶意病毒实现持久化驻留的一种常用手段,使用以下方法可以查找启动项相关内容。
使用【cat /etc/init.d/rc.local】命令,可查看init.d 文件夹下的rc.local文件内容。
使用【cat /etc/rc.local】命令,可查看rc.local文件内容。
使用【ls -alt /etc/init.d】命令,可查看init.d文件夹下所有文件的详细信息
也可以使用下面的两个命令来查看系统中的启动项
systemctl list-unit-files –type=service
chkconfig –list
重点排查以下的启动项项目
/etc/rc.d/rc /etc/rc /etc/rc.local /etc/rc.d/rc.local /etc/rc.d/rc /etc/init/*.conf /etc/rc$runlevel.d/ 该目录下都是链接的可执行文件,也可以自己添加可执行程序 以上目录都是重点排查的启动项目 另外一个添加启动项的地方在 /etc/profile里面,还有 /etc/profile.d/目录下以sh结尾的文件
计划任务
在Linux系统中,任务计划也是维持权限和远程下载恶意软件的一种手段。一般有以下两种方法可以查看任务计划。
1)通过crontab命令查看
crontab -l 查看当前的技术啊任务
crontab -u root -l 指定root用户
2)通过计划任务文件查看
般在Linux系统中的任务计划文件是以cron开头的,可以利用正则表达式的*筛选出etc目录下的所有以cron开头的文件,具体表达式为/etc/cron*。
包含计划任务的文件夹
/etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab
防火墙规则
进程排查
1)netstat命令分析
netstat -tulnp 查看网络连接,分析是否存在异常
2)ls -alt /proc/PID 查看对应的可执行文件
3)lsof -p PID 查看进程打开的文件
4)kill -9 PID 结束进程
然后使用【rm-rf filename】命令可删除木马,如要删除mbrn文件,则可使用命令【rm-rf mbrn】。如果root用户都无法删除相关文件,那么很可能是因为该文件被加上了i属性。使用【lsatter filename】命令,可查看文件属性,然后使用【chattr-i filename】命令,可移除i属性,进而删除文件。也有的进程因为存在守护进程而无法删除,我们可以先把进程挂起,查杀守护进程后,再返回将进程删除。
5)隐藏进程
有些攻击者会将进程隐藏,以躲避排查,因此查看隐藏进程同样重要。
下面是一个简单的查看隐藏进程的方式,就是将ps的输出与/proc里面的内容进行比较
[root@master init.d]# ps -ef |awk '{print $2}' |sort -n |uniq >1 [root@master init.d]# ls /proc|sort -n |uniq >2 [root@master init.d]# diff 1 2
服务排查
1)chkconfig--list
在命令行中输入【chkconfig --list】命令,可以查看系统运行的服务
其中,0、1、2、3、4、5、6表示等级,具体含义如下:
1表示单用户模式;
2表示无网络连接的多用户命令行模式;
3表示有网络连接的多用户命令行模式;
4表示不可用;
5表示带图形界面的多用户模式;
6表示重新启动。
2)service --status-all
查看服务的状态
文件排查
1)敏感目录
(1)/tmp目录和命令目录/usr/bin/usr/sbin等经常作为恶意软件下载目录及相关文建被替换的目录。文件名为crloger8的木马下载到/tmp目录下。
(2)此外,~/.ssh及/etc/ssh也经常作为一些后门配置的路径,需要重点检查
2)根据时间点排查
(1)通过列出攻击日期内变动的文件,可发现相关的恶意软件。通过【find】命令可对某一时间段内增加的文件进行查找。以下为常用的【find】命令。
find使用语法
find:在指定目录下查找文件。-type b/d/c/p/l/f:查找块设备、目录、字符设备、管道、符号链接、普通文件。-mtime -n+n:按文件更改时间来查找文件,-n指n天以内,+n指n天前。-atime -n+n:按文件访问时间来查找文件,-n指n天以内,+n指n天前。-ctime -n+n:按文件创建时间来查找文件,-n指n天以内,+n指n天前
find ./ -ctime 0 一天内创建的所有文件
ls -alt|head -n 10 按照时间排序的前10个文件
stat :可以显示文件的创建时间,修改时间,访问时间
使用【stat】命令可以详细查看文件的创建时间、修改时间、访问时间,若修改时间距离应急响应事件日期接近,有线性关联,说明可能被篡改。
3)特殊文件
Linux系统中的恶意文件存在特定的设置、特定的关键字信息等。Linux系统中的几种特殊文件类型可以按照以下方法进行排查。
(1)权限过高文件查找
find /tmp -perm 777 查找/tmp下权限为777的文件
(2)用户属组异常的文件
find /var/www/html -user apache 查找/var/www/html的目录下属主为apache的文件
(3)文件内特征查找
如根据webshell的特征查找
find /var/www/ -name "*.php"
find /var/www/ -name "*.php" |xargs egrep 'assert|phpspy|eval'
4)对系统命令进行排查
ls和ps等命令很可能被攻击者恶意替换,所以可以使用【ls -alt /bin】命令,查看命令目录中相关系统命令的修改时间,从而进行排查
也可以使用【ls -alh /bin】命令查看相关文件的大小,若明显偏大,则文件很可能被替换
5)排查SUID程序
对于一些设置了SUID权限的程序进行排查
find / -type f -perm -04000 -ls -uid 0 2>/dev/null
6)linux后门检测
可以使用第三方查杀工具(如chkrootkit、rkhunter)进行查杀。chkrootkit工具用来监测 rootkit 是否被安装到当前系统中。rootkit是攻击者经常使用的后门程序。这类后门程序通常非常隐秘、不易被察觉,植入后,等于为攻击者建立了一条能够长时间入侵系统或可对系统进行实时控制的途径。因此,使用chkrootkit工具可定时监测系统,以保证系统的安全。
总结
上面是linux常用的一些排查命令,在应急时可以灵活应用。
原文始发于微信公众号(信安路漫漫):linux系统应急排查
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论