前言

通常我们应急时遇到的windows场景较多。对于站长来说目前更是还未遇到Linux的应急情况,所以起这一篇文章记录一下在Linux应急响应时所接触到的相关问题及响应办法。同时思考如何完善应急响应流程,更快更高效的处理突发事件。

开始

对目标进行信息收集和预判

应急响应开始前夕,一般是由监管单位或网络部门针对服务器或内网终端发现其异常的网络行为下发通报开始的。此时需要由我们应急响应人员组成专项排查小组前往机房现场对事故主机进行响应。来到目标机房现场之后,我们需要先了解事发过程。问清楚通报的情况,事发的主机地址ip或DNS信息,让在场人员保留现场不要自行操作导致证据丢失。同时紧急采取阻断措施断网隔离。对重要文件进行及时备份处理。正式响应开始后,我们需要向系统负责人询问服务器上开放的服务,出网情况,是否开放了敏感高危端口如22,445,3306,3389等。针对web服务需要进一步询问网站的结构,中间件版本信息,框架开源等。

确认了事发主机ip地址后,我们直接上机进行排查。使用命令查看服务器的开放服务情况

netstat -antupl

image-20240529113735679

获取了服务信息后,可以再次进行判断当前进程情况

ps -aux

image-20240529114515744

这个命令可以帮助我们获取当前运行的web服务情况、网站用户、协助判断中间件的log日志位置。如果有部署 apache 则默认日志路径在 /var/log/httpd 下或 /etc/httpd/logs/accesslog,如果有 nginx 则默认的日志路径在 /usr/local/nginx/logs 也可以通过查看nginx的配置文件 nginx.conf 来获取日志路径,如果有 tomcat 则默认日志路径在 /apache-tomcat-version/logs/ 下,conf/logging.properties 中配置了tomcat的日志存储位置。更多的日志路径可以详细查看文章 一文了解应急响应中常用的日志收集方法 .

分析系统日志及中间件日志

了解日志的路径之后,使用命令查看日志路径下的所有文件及更新时间

ls -alt

image-20240529141040192

使用命令查看日志的行数也就是日志量

cat filename |wc -l

image-20240529141333049

此时针对服务站点的网站语言筛选排查是否有可疑的访问记录,捕捉攻击者的IP

cat access.log.1 |grep ".php"

一般可以获取到一个完整的源IP地址、访问时间、请求类型、请求路径、UA头

image-20240529142621694

接下来使用命令导出所有的攻击者IP

可以先将上面筛选的结果归纳到一个txt文件,然后再使用awk命令提取

cat access.log.1 |grep ".php" > ip.txt

awk '{print $1}' ip.txt 

image-20240529143114648

除此之外还可以对ip进行排序和统计行数

awk '{print $1}' access.log.1|sort|uniq -c             #sort 按ascii排序/uniq 展示行数

根据访问量来分辨可疑ip

image-20240529143615563

整合命令,提取需要的字段并筛除指定的ip的日志

awk '{print $1  $4  $7}' access.log.1|grep -v 192.168.1.1

image-20240529144013068

分析文件的创建时间

如果是遇到webshell网站木马情况的应急时间,可以通过时间定位文件上传的木马,通过选定特定的语言类型再网站根目录下查找。

find /var/www/html -mtime 0 -name "*.php"

image-20240529144705602

用stat命令查看文件的详细日期信息

image-20240529145854886

当我们确认木马文件之后,可以先进行备份

cp ma.php ma.php.bak

再对木马进行锁死防止文件被修改

chattr -i ma.php

木马分析

收集到的备份木马文件可以导出到本地主机,然后放到云沙箱观察行为或放到云盾上进行病毒查杀,进一步定性此次应急响应事件为一起webshell后门木马导致服务器失陷的事件。根据木马、攻击者IP信息及时对木马进行清除,并立即封禁攻击者IP。在线云沙箱推荐使用 微步云沙箱、360云沙箱、安恒云沙箱、virscan 对木马文件进行分析。

image-20240529153328835

攻击路径溯源

到现在的步骤,我们已经获得了攻击者信息、木马文件信息、日志信息等数据。此时根据木马文件的名称再到安全设备上查看完整的http访问日志,定位到准确的木马文件访问时间和ip,然后根据攻击者ip查询他在一个月时间段内所有的请求行为。这个时候可以梳理出木马文件是通过哪个接口进行上传的。应急小组组织专项测试对该上传接口进行检测,测试是否存在未授权、文件上传等漏洞。确认攻击路径。

服务器全盘查杀

完成上述步骤之后,我们需要对服务器整盘路径进行病毒查杀,扫描是否存在可疑后门病毒程序。对所有遗漏的木马病毒进行清理删除。可疑使用D盾、河马等病毒查杀工具扫描linux服务器。不过再对服务器上传程序时需要和现场同事或客户沟通好,确认上传程序进行授权,避免引起后续的麻烦和误会。

隐藏项排查

最后我们需要对服务器进行一轮加固。这一点是针对未能自动化查杀的隐藏项进行手动排查的。

检查定时任务

crontab -l       #查看计划定时任务

crontab -e       #查看定时任务文件,被隐藏的定时任务可以用此命令查看

image-20240529155152937

检查可疑进程

ps -aux |grep "\./"

检查./是因为通常正常执行程序不会用./去运行,一般是被上传的二进制可执行文件攻击者会以./去执行

image-20240529162818607

文件hash校验

sha256sum filename

image-20240529163107940

检查可登录系统账户

cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1

image-20240529163816160

发现非正常创建的用户时进行删除或禁用

usermod -L username

userdel -r username

检查用户情况

lastlog

image-20240529164209211

当前在线用户

w

image-20240529165631932

检查空口账户

awk -F: 'length($2) ==0 {print$1}' /etc/shadow

检查哪些ip对服务器有登录失败爆破行为

lastb

image-20240529165324701

检查超级用户

awk -F: '{if ($3==0) print $1}' /etc/passwd

image-20240529165611432

挖矿木马排查

top

检查cpu使用率及进程PID

image-20240529170000165

最后的话

在应急响应时除了技术处置,还要记得多拍照存底。记录应急组员动员响应的过程,研判分析过程也要多拍照多截图。出具应急响应报告时都用的上。前面让大家的先期处置一定要拍照截图留证明,做为前期加固处置的证据。这些都是非常有必要并且重要的。最后总结加固建议可以根据突发事件的情况进行提出针对性意见,也可以大致概括为以下几点:

  1. 定期开展渗透测试和漏扫,及时排查安全风险
  2. 加强员工安全意识,开展安全意识培训
  3. 收敛互联网暴露面
  4. 构建完善的waf、态感防御处置机制