少女祈祷中...

Linux应急响应

概述

关键目录

思路:
账号安全 -> 历史命令 -> 检查异常端口 -> 检查异常进程 -> 检查开机启动项 -> 检查定时任务 -> 检查服务 -> 检查异常文件

主机排查

常见指令

端口

# 查找不常用的监听端口 :
netstat -anp
iftop

# 运行的进程监听了端口 :
lsof -i
lsof -nPi tcp:443

# 使用ss命令查看TCP协议:
ss -anpt

# 使用ss命令查看UDP协议:
ss -anpu

# 使用 tcpdump 分析:
tcpdump -i {网卡名} host {本地IP} and udp port {本地端口号}

# ARP表 :
arp -a

# 查找监听模式的网卡 :
ip link | grep PROMISC

# 提取所有活跃的连接 tcp ip
$ netstat -ant |& grep -Po '(\d{1,3}\.){3}\d{1,3}' | sort | grep -v 10.187.0 | uniq -c

netstat参数

  • -t或–tcp 显示TCP传输协议的连线状况
  • -u或–udp 显示UDP传输协议的连线状况
  • -n或–numeric 直接使用IP地址,而不通过域名服务器
  • -p或–programs 显示正在使用Socket的程序识别码和程序名称
  • -l或–listening 显示监控中的服务器的Socket
  • -a或–all 显示所有连线中的Socket
  • -e或–extend 显示网络其他相关信息

组合使用

netstat -antp
netstat -antpu

进程

操作系统中,关闭/查看系统进程,删除/新建系统服务。
典型场景:在应急响应过程中,排查发现可疑系统进程服务,应即时关闭恶意进程或者删除恶意服务,防止被持续控制。
注意事项:需要联系管理员确认进程服务是否为重要业务,防止错误关闭和删除了重要业务的进程服务。

ps命令
查看全部的进程

ps -aux

查看相关进程

ps -ef | grep 进程关键字

显示指定用户相关进程

ps -u root //显示root进程用户信息

查找隐藏进程
查找显示的进程

ps -ef | awk '{print}' | sort -n |uniq >1

然后查看/proc目录,查看是否存在对应进程

ls /proc | sort -n |uniq >2

参数

netstat -antlop      #查看  
ps -ef #查看异常连接和对应的文件
ps aux #查看那进程详细信息
lsof -p pid #查看进程关联账户信息

附录:ps命令常用用法(方便查看系统进程)
ps a #显示现行终端机下的所有程序,包括其他用户的程序。
ps -A #显示所有进程。
ps c #列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e #此参数的效果和指定"A"参数相同。
ps e #列出程序时,显示每个程序所使用的环境变量。
ps f #用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H #显示树状结构,表示程序间的相互关系。
ps -N #显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s #采用程序信号的格式显示程序状况。
ps S #列出程序时,包括已中断的子程序资料。
ps -t<终端机编号>  #指定终端机编号,并列出属于该终端机的程序的状况。
ps u   #显示所有程序,不以终端机来区分。以用户为主的格式来显示程序状况。
ps x   #显示所有程序,不以终端机来区分。

lsof指令
查看什么文件占用的该端口

lsof -i :[port]

查看什么文件占用的该pid

lsof -p [pid]

其他

lsattr和chattr

chattr

修改属性能够提高系统的安全 性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
例子:
设置/etc/resolv.conf为不可修改

[root@vincent tmp]# chattr +i /etc/resolv.conf 
[root@vincent tmp]# lsattr /etc/resolv.conf
----i--------e- /etc/resolv.conf
[root@vincent tmp]# echo "" > /etc/resolv.conf
-bash: /etc/resolv.conf: 权限不够

lsattr

查看文件权限

[root@vincent tmp]# lsattr 1.txt 
-----a-------e- 1.txt

日志

在Linux做的操作都会被记录到系统日志中,对于登录也可以查看日志信息查看是否有异常登录
last命令记录着所有用户登录系统的日志,可以用来查找非授权用户的登录事件,而last命令的输出结果来源于**/var/log/wtmp**文件,稍有经验的入侵者都会删掉

常见日志

内核及公共消息日志:/var/log/messages
计划任务日志:/var/log/cron
系统引导日志:/var/log/dmesg
邮件系统日志:/var/log/maillog
用户登录日志:/var/log/lastlog
/var/log/boot.log(记录系统在引导过程中发生的时间)
/var/log/secure (用户验证相关的安全性事件)
/var/log/wtmp(当前登录用户详细信息)
/var/log/btmp(记录失败的的记录)
/var/run/utmp(用户登录、注销及系统开、关等事件)
  1. /var/log/secure

Linux系统安全日志,记录用户和工作组的情况、用户登陆认证情况

  1. /var/log/wtmp

记录每个用户的登录次数和持续的时间等信息

  1. /var/log/utmp

有关当前用户登陆的信息

账号

1、用户信息文件 /etc/passwd

root:x\:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell

用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
注意:无密码只允许本机登陆,远程不允许登陆
2、密码文件 /etc/shadow

root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7::: 
//用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留

其他命令

who      //查看当前登录用户(tty 本地登陆 pts 远程登录)
w //查看系统信息,想知道某一时刻用户的行为
uptime //查看登陆多久、多少用户,负载

系统启动项

一般来说,病毒在启动之后为了防止肉鸡关机重启,很有可能会设置恶意的开机启动项

查看运行级别命令runlevel


运行级别 含义 (七个运行模式)
0 关机
1 单用户模式,可以想象为windows的安全模式,主要用于系统修复
2 不完全的命令行模式,不含NFS服务
3 完全的命令行模式,就是标准字符界面
4 系统保留
5 图形模式/桌面模式(GUI界面)
6 重启动

开机启动配置文件:
/etc/rc.local
/etc/rc.d/rc[0~6].d
  1. /etc/rc.d/rc.local

或者说是/etc/rc.local
/etc/rc.local是/etc/rc.d/rc.local的软连接,该脚本是在系统初始化级别脚本运行之后再执行的,想要/etc/rc.local起作用必须chmod +x /etc/rc.d/rc.local

  1. /etc/init.d目录下的脚本

目录内放的是各个服务的启动脚本,比如sshd、httpd等

  1. ** /etc/profile.d/.sh*

/etc/profile.d/*.sh是bash的全局配置文件,/etc/profile.d/下有许多shell脚本,可以在开机时启动。

定时计划

在操作系统中,分析查看计划任务信息。
典型场景:在应急响应过程中,发现入侵者创建的异常计划任务,应即时禁用或者删除异常计划任务,防止被持续控制。
注意事项:需要联系系统管理员确认计划任务是否合法,防止错误禁用和删除了正常的计划任务。

使用命令
crontab
列出所有的计划任务

crontab -l
# Root用户定时任务 :
crontab -u root -l

编辑cron

crontab -e

常见计划任务位置

重点关注以下目录(计划目录)中是否存在恶意脚本:
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
小技巧:
more /etc/cron.daily/* 查看目录下所有文件

# 系统定时任务 :
cat /etc/crontab
cat /etc/anacrontab

# 查看计划任务文件 :
ls -la /var/spool/cron/
ls -la /var/spool/anacron/
ls -la /var/spool/at/spool/

# 系统定时任务文件 :
$ find /etc/cron* -type f
/etc/cron.d/sysstat
/etc/cron.d/0hourly
/etc/cron.daily/logrotate
/etc/cron.daily/man-db.cron
/etc/cron.deny
/etc/cron.hourly/0anacron

webshell查杀

思路

网络排查、日志排查、文件排查
扫描工具:
1、D盾
Webshell查杀、可疑文件隔离;端口进程查看、base64解码,以及克隆用户检测等;文件监控。

2、河马Webshell查杀
河马Webshell查杀拥有海量Webshell样本和自主查杀技术,采用传统特征+云端大数据双引擎的查杀技术,支持多种操作系统。

手工指令搜索

//搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征
find ./ type f -name "*.jsp" | xargs grep "exec("
find ./ type f -name "*.php" | xargs grep "eval("
find ./ type f -name "*.asp" | xargs grep "execute("
find ./ type f -name "*.aspx" | xargs grep "eval("

//对于免杀Webshell,可以查看是否使用编码
find ./ type f -name "*.php" | xargs grep "base64_decode"

Reference