应急响应技术之unix/linux检查
Posted 星球守护者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应急响应技术之unix/linux检查相关的知识,希望对你有一定的参考价值。
用户检查
- 查看系统所有用户信息可以使用命令
cat /etc/passwd
- 各列由冒号隔开,分别表示
“用户名”
“密码加密”
“用户ID”
“用户组ID”
“注释”
“用户主目录”
“默认登录shell”。
- 检查中需要与管理员确认是否有可疑用户,“用户ID”列中,
- 一般情况下应该只有root的ID是0,其他用户的
ID如果设置为0,即拥有root权限
。
进程及启动项
- 查看系统进程可以使用命令
ps -eaf
- 各列的含义:
“UID”列表示启动进程的用户名
“PID”列表示进程的PID值
“STIME”列表示进程的启动时间
“TIME”列表示进程已经运行的时间
“CMD”列表示启动进程的命令
- 运行
ls -l /proc/$PID/exe
或file /proc/$PID/exe
($PID
为对应的 pid 号)#查看进程对应的文件 - 强制结束进程可以使用命令kill -9 $PID #结束进程的PID值
[root@centos ~]# kill -9 pid
服务及模块
- 查看系统服务可以使用命令
chkconfig –list
- 列出每个服务在各运行级别下是否开机自启动
- 查看系统当前运行级可以使用命令who –r(下图中列出当前运行级runlevel是3)
/etc/inittab
- /etc/inittab是系统初始化文件,操作系统启动后会自动加载此文件,
- 文件以冒号分隔为4个字段:
identifier :run_level:action:process
各字段说明如下:
identifier:登记项标识符,最多为4个字符。用于惟一地标识/etc/inittab文件中的每一个登记项
run_level:系统运行级,即执行登记项的init级别。用于指定相应的登记项适用于哪一个运行级,即在哪一个运行级中被处理。如果该字段为空,那么相应的登记项将适用于所有的运行级。在该字段中,可以同时指定一个或多个运行级,其中各运行级分别以数字0.1.2.3.4.5.6或字母a、b、c表示,且无需对其进行分隔。
action:动作关键字。用于指定init(M)命令或进程对相应进程(在“process”字段定义)所实施的动作。具体动作包括:
* 1.boot:只有在引导过程中,才执行该进程,但不等待该进程的结束;当该进程死亡时,也不重新启动该进程。
* 2.bootwait:只有在引导过程中,才执行该进程,并等待进程的结束:当该进程死亡时,也不重新启动该进程。实际上,只有在系统被引导后,并从单用户方式进入多用户方式时,这些登记项才被处理;如果系统的默认运行级设置为2(即多用户方式),那么这些登记项在系统引导后将马上被处理。
* 3.initdefault:指定系统的默认运行级。系统启动时,init将首先查找该登记项。如果存在init将据此决定系统最初要进入的运行级。具体来说,init将指定登记项“run_level"字段中的最大数字(即最高运行级)为当前系统的默认运行级;如果该字段为空,那么将其解释为“0123456”,并以“6”作为默认运行级。如果不存在该登记项,那么init将要求用户在系统启动时指定一个最初的运行级。
* 4.off:如果相应的进程正在运行,那么就发出一个警告信号,等待20秒后,再通过杀死信号强行终止该进程。如果相应的进程并不存在那么就忽略该登记项。
* 5.once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个登记项;当该进程死亡时,init也不重新启动该进程。注意:在从一个运行级进入另一个运行级时,如果相应的进程仍然在运行,那么init就不重新启动该进程。
* 6.ondemand:与“respawn”的功能完全相同,但只用于运行级为a、b或c的登记项。
* 7.powerfail:只在init接收到电源失败信号时执行相应的进程,但不等待该进程结束。
* 8.powerwait:只在init接收到电源失败信号时执行相应的进程,并在继续对/etc/inittab文件进行任何处理前等待该进程结束。 网管u家u.bitscn@com
* 9.respawn:如果相应的进程还不存在,那么init就启动该进程,同时不等待该进程的结束就继续扫描/etc/inittab文件;当该进程死亡时,init将重新启动该进程。如果相应的进程已经存在,那么init将忽略该登记项并继续扫描/etc/inittab文件。
* 10.sysinit:只有在启动或重新启动系统并首先进入单用户时,init才执行这些登记项。而在系统从运行级1-6进入单用户方式时,init并不执行这些登记项。"action”字段为“sysinit”的登记项在“run_level”字段不指定任何运行级。
* 11.wait:启动进程并等待其结束,然后再处理/etc/inittab文件中的下一个登记项。
process:所要执行的shell命令。任何合法的shell语法均适用于该字段。
根据以上说明
- 仔细查看/etc/inittab中是否有可疑项加载,
- 下面举一个系统被安装后门后/etc/inittab中的相关语句
#0:2345:once:/usr/sbin/ttyload
/etc/crontab
crontab计划任务的配置文件分两种:
- 一种是全局计划任务配置文件:
/etc/crontab
, - 还有一类是用户的计划任务配置文件,位于:
/var/spool/cron/
, - 这两个地方需要我们仔细检查,确认是否有后门在此加载。
日志与文件
系统日志
- Unix操作系统有很多在应急响应中可以提供重要线索的日志文件,
- 不仅有和登录,启动,关闭等系统活动有关的日志,还有和网络服务相关的日志,
- Linux存放在/var/log下,Solaris存放在/var/adm下。
syslog日志
- syslog日志文件是最重要的文件,存放Unix内部程序和子系统的事件,我
- 们可以通过修改配置文件
/etc/syslog.conf
来控制syslog的活动。 - linux的syslog信息存放在
/var/log/messages
中, - solaris中的信息存放在
/var/adm/messages
中
su日志
- 攻击者很多时候会利用su命令试图获取对系统root访问权限,
- Unix记录了系统上每次对执行su命令的尝试,日志显示试图执行su命令的时间和日期等信息。
- 下面是一段
/var/log/messages
中的日志记录
Dec 8 17:41:14 centos su: pam_unix(su:auth): authentication failure; logname=root uid=1001 euid=0 tty=pts/0 ruser=wangxx rhost= user=wangxi
- 此类提升权限的信息需要我们引起足够的重视,很有可能是入侵者留下的痕迹。
cron日志
cron指Unix允许用户设定在某一时间执行程序,日志文件默认记录在/var/log/cron中
登录日志
通过ssh登录的信息,存放在/var/log/secure
中,下面是一个ssh暴力破解密码的日志记录
shell日志
- bash的历史记录存放在用户主目录下
.bash_history
中, - 用户所有输入的命令都会记录,
- 如果攻击者未删除此日志,就可以仔细分析并判断攻击者的行为,
- 比如:攻击者得到一个低权限用户,然后
编译漏洞利用程序
提升权限,在这里就可以记录输入的命令。
apache日志
- Apache HTTP服务器提供了非常全面而灵活的日志记录功能,
- 利用Apache的日志文件可以反馈出服务器的访问信息,错误信息等。
- 主要包含Apache访问日志
access_log
和错误日志error_log
等 - 以rpm方式安装的apache的日志存放在
/var/log/httpd
中, - 使用源码安装的apache的日志存放在apache安装目录log文件夹中
SUID文件
- SUID 代表Set User ID, SGID代表Set Group ID,
- 当一个可执行文件被设置SUID时,任何用户运行此文件时,都将以文件属主的权限执行,如图:
passwd命令被设置SUID
- 使用find命令搜索硬盘中所有SUID文件,注意观察搜索结果,看是否有可疑文件。
find / -perm -004000 –type f –print
RPM完整性检查
- 在Linux系统下可以使用
rpm –V <软件包名>
来判断软件包中的文件是否被修改,例如:
也可以使用rpm –Va
命令来列出系统中所有发生过修改的软件包(包括可执行文件、配置文件等)。
命令将列出校验失败的文件,含义如下:
S 大小改变
M 权限改变
5 MD5改变
L 连接改变
D 设备改变
U 用户改变
G 组改变
T 日期和时间改变
missing 文件丢失
网络连接
- 查看系统当前开放的端口可以使用命令
netstat –anp
, - 列出本机开放的端口,端口对应的进程的PID值,连接状态等信息
- 使用命令
lsof –i
也可以查看系统当前开放的端口及端口对应的进程的PID值等信息
摘抄
这一年,谢谢自己
不论顺流还是逆风,都能按照自己的节奏
随着自己的心意,用心生活,不曾放弃
以上是关于应急响应技术之unix/linux检查的主要内容,如果未能解决你的问题,请参考以下文章