应急响应技术之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/exefile /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检查的主要内容,如果未能解决你的问题,请参考以下文章

应急响应之Linux 入侵排查

应急响应入侵排查之第二篇Linux

应急响应入侵排查之第一篇Windows

安全服务之安全基线及加固Apache篇

应急响应第一篇之基础篇

应急响应第一篇之基础篇