linux应急响应技术总结

应急响应是信安工作者肯定会遇见的事情,不光在比赛上,还有一些比赛时都会比应急响应那么来看看linux应急响应技术总结,如果在进行应急响应的时候需要干的事情这个总结里面全部都写了,让你在应急响应中可以更好的进行工作。

•应急分析

网络行为分析

netstat -pantul

排查服务器开了哪些端口,和哪些IP建立了连接

lsof -i

查看进程的占用信息

lsof -p [pid]

查看进程对应的信息,主要是看加载了哪些文件

lsof -i:22 -PnR

查看端口连接情况,可以查看到发起的半连接,比如外发DOS攻击,还可查看父子进程

进程分析

查看当前运行的进程,寻找可以文件名进程(随机名称) ps -ef(可查看父子进程,PID:当前进程 PPID:父进程) ps -aux

查看进程树

pstree -p [PID]

top

显示实时进程状态,加-d 1,可修改刷新时间,默认为3秒 top命令后,输入大写的P,按CPU排序 top命令后,输入大写的M,按内存排序输入q退出top

只显示一次所有进程信息 top -b -n 1

查看某个进程对应的可执行文件路径 ls -alt /proc/[pid]/exe

启动项

定时任务检查,如果不跟-u,则表示查看root用户的定时任务。

crontab -u user -l

查看异步定时任务

cat /etc/anacrontab

定时任务配置文件保存于/etc/cron*开头路径里

ls -alt /etc/cron.d ls -alt /etc/cron.daily ls -alt /etc/cron.hourly ls -alt /etc/cron.monthly

ls -alt /etc/cron.weekly

more /etc/cron.d/* 可以查看cron.d下的所有文件及文件的内容

linux启动时分两大步骤:按级别加载/etc/rc(0-6).d目录下的启动脚本;然后加载/etc/rc.local。 /etc/rc(0-6).d下面实际上是软连接到/etc/init.d/下的文件,S开头表示启动脚本,K开头表示停止脚本 ls /etc/rc.local ls /etc/rc.d/rc[0~6].d ls /etc/init.d/

服务检查

centos7及ubuntu,通过以下命令可检查哪些服务还运行着

systemctl | grep -E “\.service.*running”

只显示服务名

systemctl | grep -E “\.service.*running” | awk -F. ‘{ print $1 }’

centos6可通过以下命令查看服务情况

chkconfig –list | grep on service –status-all

历史命令检查

历史下载的脚本,通过wget/curl下载的后缀为sh/pl/py的脚本。

more /root/.bash_history | grep -E “((wget|curl).*\.(sh|pl|py))” | grep -v grep

历史增加的账号

history | egrep “(useradd|groupadd)” | grep -v grep

历史是否删除过账号

history | egrep “(userdel|groupdel)” | grep -v grep

可疑历史命令:使用过入侵扫描的操作行为,这个概率比较低,不会在目标服务器上装这些应用的,一般代理为主。

history | grep -E “(whois|sqlmap|nmap|beef|nikto|john|ettercap|backdoor|proxy|msfconsole|msf)” | grep -v grep

历史下载到本地PC文件,sz可以将服务器上的文件下载到本地,很方便。

history | grep sz | grep -v grep | awk ‘{print $3}’

数据库操作历史命令

more /root/.mysql_history

不同用户的历史命令

/home/test/.bash_history

文件检查

主要侧重系统关键文件,因为是rootkit常用的手段,替换关键文件,进行隐藏等,如ifconfig/ls/cat/netstat;替换netstat/lsof,可实现在使用时,会自动过滤不显示病毒进程和连接;替换ls,可实现在查看文件时隐藏病毒文件。

查找文件位置,并计算MD5提交威胁情报平台检查 whereis netstat md5sum /usr/bin/netstat

枚系统文件夹里的文件,查看七天内被修改过的的文件

find /usr/bin/ /usr/in/ /bin/ /usr/local/bin/ -type f -mtime -7

rkhunter

Wget https://sourceforge.net/projects/rkhunter/files/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz/downloadtar -zxvf rkhunter-

1.4.4.tar.gz cd rkhunter-1.4.4

./installer.sh –install rkhunter -c

chkrootkit

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz cd chkrootkit-0.52

make sense

编译完成没有报错的话执行检查

./chkrootkit

查看文件时,要着重查看运行文件的用户

用户检查

查看已登录用户

w

检查是否有UID为0的用户,这一步主要是为了攻击者克隆了一个超级用户来登录。

more /etc/passwd | egrep -v ‘^#|^(\+:\*)?:0:0:::’ | awk -F: ‘{if($3==0) print $1}’ 攻击者在不知道root的密码的前提下,想使用root权限登录操作服务器,可创建用户,修改passwd文件里UID和GID均为0即可。

检查UID相同的用户,也是防止克隆用户

awk -F: ‘{a[$3]++}END{for(i in a)if(a[i]>1)print i}’ /etc/passwd

查看哪些用户是可以登录的,这个主要观察/etc/passwd文件里用户结尾是否有/bin/bash或/bin/sh,因为该结尾表示可登录,并且以指定环境来执行命令。

cat /etc/passwd | grep -E “/bin/(bash|sh)$” | awk -F: ‘{print $1}’

查看空口令,查看shadow,影子文件会gawk -F: ‘($2==””) {print $1}’ /etc/shadow 保存密码信息,如果第二列为空,则表示无密码。

排查是否允许空口令登录

more /etc/ssh/sshd_config |grep PermitEmptyPassword | grep -v “#”

排查除root用户外,root组是否还有其他用户,其实是检查GID是否为0

more /etc/group | grep -v ‘^#’ | gawk -F: ‘{if ($1!=”root”&&$3==0) print $1}’

日志分析

登录成功

more /var/log/secure* | grep “Accepted password”

登录失败

more /var/log/secure* | grep “Failed password”

本机登录情况

more /var/log/secure* | grep -E “sshd:session.*session opened”

新增用户

more /var/log/secure* | grep “new user”

传输文件,这个其实是检测使用sz、rz命令传输文件的

more /var/log/message* | grep “ZMODEM:.*BPS”

除上述以外,下面命令也可以检查登录日志,对应日志文件是二进制保存无法直接查看。

命令 日志文件 功能

last /var/log/wtmp 所有成功登录/登出的历史记录
lastb /var/log/btmp 登录失败尝试
lastlog /var/log/lastlog 所有用户最后一次登录记录

所有用户登录日志

last | grep pts | grep -vw :0

日志分析

定时任务日志,定时任务日志会按日期存放,所以有多个需要检查。会记录定时任务历史运行过的记录。

more /var/log/cron*

定时执行脚本,主要检查py/sh/pl脚本运行

more /var/log/cron* | grep -E “\.py|\.sh|\.pl”

下载软件情况,可以检查攻击者是否安装了新程序。

more /var/log/yum* | grep Installed

卸载软件情况

more /var/log/yum* | grep Erased

可疑工具安装检查,检查nc/nmap等关键词

more /var/log/yum* | awk -F: ‘{print $NF}’ | awk -F ‘[-]’ ‘{print $1}’ | sort | uniq | grep -E

“(^nc|sqlmap|nmap|beef|nikto|john|ettercap|backdoor|proxy|msfconsole|msf)”

其他分析技巧

监控与目标IP通信的进程

while true; do netstat -tnlpa|grep [ip];done

监控进程

strace -tt -T -e trace=all -p $pid

查找七天内被修改的以php为后缀的文件,七天前是+7

find /var/www -mtime -7 -iname “*.php” | xargs ls -alt

查找七天内被访问的以php为后缀的文件,如cat file会修改该时间。

find /var/www -atime -7 -iname “*.php” | xargs ls -alt

查找七天内被改变的以php为后缀的文件。

find /var/www -ctime -7 -iname “*.php” | xargs ls -alt

通过stat可查看文件属性,主要是时间属性

whereis netstat stat /usr/bin/netstat

1)当仅读取或访问文件时,access time 改变,而modify time ,change time 不会改变。 2)当修改文件内容时,modify time ,change time 会改变,access time 不一定改变。

3)当修改文件权限属性时,change time 改变,而access time ,modify time 不会改变。

应急分析

•顽固病毒清理

•库文件劫持

顽固病毒分析

  1. 文件/定时任务删除失败
  2. 文件/定时任务删完又出现
  3. 病毒进程刚刚删完又被拉起
  4. 主机严重卡顿但找不到挖矿进程
  5. 主机干净后一段时间又出现病毒文件只读属性保护系统文件替换下载进程残留恶意进程守护系统命令劫持

ssh & 漏洞再次入侵

文件/定时任务删除失败删除定时任务时提示权限不足

linux应急响应技术总结插图

使用lsattr查看文件属性,通过chattr清除属性后成功删除

linux应急响应技术总结插图1

文件/定时任务删除完又出现

系统文件替换(Billgates)

linux应急响应技术总结插图2 ss、netstat、ps、lsof命令被替换为病毒文件,需要将原文件删掉,再将纯净的文件放进去。

linux应急响应技术总结插图3

下载进程残留(SystemdMiner)存在如curl、wget等下载进程,反复下载病毒文件

文件/定时任务删除完又出现定时任务/var/spool/cron/root被反复创建,不干净

linux应急响应技术总结插图4

删不干净肯定是有恶意进程在守护,先把可疑进程掉

linux应急响应技术总结插图5

病毒进程删完又被拉起

关键字关联可疑进程:sh、wget、curl、xmr、mine、ssh 找到父进程,结束整个进程树

linux应急响应技术总结插图6

主机卡顿但找不到挖矿进程

系统CPU占用率高,但没发现挖矿进程 使用busybox的top命令,成功发现挖矿进程及母体进程

linux应急响应技术总结插图7 linux应急响应技术总结插图8

wget http://www.busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-x86_64

主机干净后一段时间又出现

检查ssh是否为弱密码,及~/.ssh/authorized_keys中是否保存有免密公钥

Redis未授权访问漏洞

web漏洞

中间件漏洞(weblogic、tomcat、Jboss等)网站后台弱口令中间件后台弱口令

应急分析 顽固病毒清理

•库文件劫持

库文件劫持的特征

1.隐藏进程

2.文件难以清除

3.定时任务

4.周期性的网络外连行为

5.隐藏性能,查看使用较低,其实使用率较高

6.主要技术是劫持其动态链接库(/etc/ld.so.preload)来实现

7.多会和rootkit结合使用

库文件劫持概述

相关术语

1.LD_PRELOAD:环境变量

2./etc/ld.so.preload:动态加载的配置文件

3.动态编译:不论程序依赖不依赖动态链接库,都会加载LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被装载

4.静态编译:不加载其他库文件,直接使用程序相关的库文件,如busybox

库文件劫持概述

1.在linux操作系统的动态链接库加载过程中,动态链接器会读取LD_PRELOAD环境变量的值和默认配置文件

/etc/ld.so.preload的文件内容,并将读取到的动态链接库进行预加载,即使程序不依赖这些动态链接库, LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被装载,它们的优先级比

LD_LIBRARY_PATH环境变量所定义的链接库查找路径的文件优先级要高,所以能够提前于用户调用的动态库载入。

linux应急响应技术总结插图9 2.因此,针对linux的库文件劫持主要是劫持两个部分:

LD_PRELOAD和/etc/ld.so.preload

  1. 将恶意动态链接库通过LD_PRELOAD环境变量进行加载。
  2. 将恶意动态链接库通过/etc/ld.so.preload配置文件进行加载。
  3. 修改动态链接器来实现恶意功能,例如修改动态链接器中默认的用于预加载的配置文件路径/etc/ld.so.preload为攻击者自定义路径,然后在里面写入要加载的恶意动态链接库,当然修改的姿势还有很多,如修改默认环境变量,直接将要hook的动态链接库写入到动态链接器当中。

劫持技术分析LD_PRELOAD

劫持技术分析

/etc/ld.so.preload

检测方法

库文件劫持

劫持技术分析-修改动态链接器

劫持方法

1.LD_PRELOAD的值设置为要预加载的动态链接库

2.export LD_PRELOAD 导出环境变量使该环境变量生效

3.一般情况下相关的库文件会被加上隐藏属性

linux应急响应技术总结插图10

劫持分析

相关文件被隐藏,使用busybox可以查看

linux应急响应技术总结插图11

linux应急响应技术总结插图12

检测与清除

1.由于是LD_PRELOAD环境变量被劫持,因此可以直接查看环境变量 echo $LD_PRELOAD

linux应急响应技术总结插图13

2.去掉隐藏属性

chattr -ia /etc/LD_PRELOAD

3 删除相关库文件

rm -rf /lib/cub3.so

劫持技术分析-LD_PRELOAD

劫持技术分析

/etc/ld.so.preload

检测方法

库文件劫持

劫持技术分析-修改动态链接器

劫持方法

1.主要将/etc/ld.so.preload的内容加载恶意的库文件来实现劫持

2.大部分具有rootkit的相关功能,但是使用rkhunter等常规rootkit专工具无法查

3.隐藏进程

4.隐藏性能

……

劫持分析

1.文件被隐藏,测试时有的只是针对部分命令进行劫持

linux应急响应技术总结插图14 linux应急响应技术总结插图15

劫持分析

2.使用strings分析

linux应急响应技术总结插图16 linux应急响应技术总结插图17

劫持分析

3.使用strace对cat命令进行跟踪调试,可以发现其加载的库文件

linux应急响应技术总结插图18

处置

linux应急响应技术总结插图19 1.去掉隐藏属性

2.删除加载的恶意库文件

linux应急响应技术总结插图20

劫持技术分析-LD_PRELOAD

劫持技术分析

/etc/ld.so.preload

检测方法

库文件劫持

劫持技术分析-修改动态链接器

劫持方法

1.正常系统会加载/etc/ld.so.preload这个默认库文件

linux应急响应技术总结插图21

2.此种劫持方法是修改其默认的库文件来实现

linux应急响应技术总结插图22

劫持分析

使用strace来对系统命令进行跟踪调试便可找到相应的劫持的库文件

linux应急响应技术总结插图23

处置

1.直接随便写一个库文件到/etc/ld.so.preload中

2.删除/etc/ld.so.preload

linux应急响应技术总结插图24

劫持技术分析-LD_PRELOAD

劫持技术分析

/etc/ld.so.preload

检测方法

库文件劫持

劫持技术分析-修改动态链接器

检测方法

linux应急响应技术总结插图25 linux应急响应技术总结插图26 1.查看其环境变量 3.strace跟踪主要针对LD_PRELOAD环境变量的劫持

linux应急响应技术总结插图27 linux应急响应技术总结插图28

2.静态分析与动态分析结果对比

检测方法

4.文件完整性检查 5.检测脚本

采集关键文件,取MD5,周期性,使用API校验其完整性 https://github.com/mempodippy/detect_preload

linux应急响应技术总结插图29 linux应急响应技术总结插图30

© 版权声明
THE END
喜欢就亲吻一下吧
分享
评论 抢沙发
头像
评论一下幻城的文章吧
提交
头像

昵称

取消
昵称代码图片
    blank

    暂无评论内容