【应急响应】Linux系统下应急响应排查方法(一)

【应急响应】Linux系统下应急响应排查方法(一)

linux后门启动方式

1、硬件启动 —>GRUB启动 —> 内核引导 —> 系统初始化(/etc/inittab 获取启动级别,/etc/rc.sysinit,加载系统服务/etc/rc.d 加载对应级别的文件,/etc/rc.local文件)—> 终端启动(验证登录,登录成功)

1、启动过程中排查

系统初始化:

/etc/inittab
/etc/rc.sysinit
加载系统服务:
/etc/rc.d 
/etc/rc.local #用户开机自启动脚本(这里的程序开机自启动)
/etc/init.d #服务启动脚本 (举例:/etc/init.d/tomcat)

crond计划任务:

crond计划任务:
crontab命令
crontab -e #编辑当前用户的计划任务
crontab -l #查看当前用户的计划任务
crontab -u username -l #查看指定用户的计划任务
crontab -r -u username #删除指定用户的计划任务
【crontab会将编辑结果写入/var/spool/cron/username中】
编辑/etc/crontab文件(root)
vim /etc/crontab #编辑计划任务文件(直接编辑和修改也可以生效)
分时日月周  * * * * *
crontab /ver/log/cron #crontab的日志文件路径,会记录计划任务执行记录

环境变量设置:

/etc/profile 
#系统为每个用户配置的环境变量,用户第一次登陆时,文件被执行,从/etc/profile.d目录的配置设置/etc/profile从/etc/profile.d日录的配置文件中搜集shell的设置。影响所有用户。【这个文件写的命令会在用户登录的时候被执行】
~/.bash_profile 
#每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc 
#该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
~/.bash_logout 
#当每次退出系统(退出bash shell)时,执行该文件。

linux留后门几种方式:

1、文件替换:
使用恶意程序替换常用程序,一般常用命令被替换,ls,ps,lsof,netstat等
which id #查看od命令的位置,显示在/usr/bin/id目录下
mv /usr/bin/id /tmp/id #备份一下这个文件
vim /usr/bin/id #自己写脚本可以替换这个id命令(chmod +x 添加执行权限)
#!/bin/bash
echo "nihao"
保存退出
然后再执行id这个命令的时候就会出现
nihao 

2、文件别名:
临时设置: alias 自定义命令=‘命令或脚本语句‘,例如: alias show= 'ls -al'永久设置:修改配置文件~/.bashrc,命令与上面相同。
alias aaa='ls -l' #重命名之后,执行aaa其实是执行ls -l
unalias aaa #删除这个重命名

3、SSHD软链接后门:【任意密码登录】
建立sshd的软连接方法,开启其它的端口例如
ln -sf /usr/sbin/sshd /home/su  #制作软连接
/home/su -oport=2222 #启动
或者使用:
ln -sf /usr/sbin/sshd /路径名/su; /路径名/su -oPort=端口号
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oport=2222
netstat -ano 
ps -ano #查看进程

linux后门的关键技术:

1、预加载技术
我们以劫持系统execve和open函数为例讲解:
假设有个正常程序(使用execve和open函数),openfile.c:

劫持程序源码(重写了系统标准库内的execve和open函数)hack.c:

2、SUID权限位:【4】
SUID是set User ID。SUID的作用:当运行被设置了SUID属性的程序时,无论是谁,只要拥有程序的执行权,即可以该程序所有者身份访问系统资源。例如passwd、ping等。

#cp /bin/bash /tmp/.bash_suid #在root权限下拷贝/bin/bash文件成隐藏文件到/tmp目录下
#chmod 4755 /tmp/.bash_suid #给这个文件suid的权限,4
在普通用户下
$/tmp/.bash_suid -p #找到文件并且用普通用户的省份执行它,可以发现$变成#
whoami一下发现已经提权成root

3、进程注入
使用ptrace向已运行进程中注入.so并执行相关函数,其中的“注入”二字的真正含义为:此.so被link到已运行进程空间中,从而.so中的函数在目标进程空间中有对应的地址,然后通过此地址便可在日标进程中进行调用。

方法:
1、在目标进程中找到存放“加载.so的实现代码“的空间(通过mmap实现)
2、把“加载.so的实现代码“写入目标进程指定的空间
3、启动执行
 
ps -aus |grep 进程名 #查看指定的进程
pmap 进程号 #查看进程加载文件

linux后门的排查方法

1、rpm -Vf 可信校验
rpm -Vf +可执行文件的路径
rpm -Vf /bin/ps  #没有被篡改的话没有返回,有返回说明被篡改(升级也会有返回)
which ps #可以查看命令的路径

2、别名排查
alias #查看当前系统的所有别名
cat /etc/profile #中也会有一些别名,看环境变量
3、进程排查
ps -ef 
ps aux #看到-oport等,可以只找到之前的软连接后门
4、进程模块排查
lsof -p [pid]  #看某个进程加载的模块
pmap [pid] #查看进程加载模块
5、端口排查
netstat -antlp #显示所有的进程端口,p是显示进程的pid
6、内存程序路径查看
ls -l /proc/[pid]/exe #
7、cpu查看
挖矿或木马对服务器的cpu的占用很高
top #查看所有cpu进程信息
T #所有的进程对cpu占用排序
M #所有进程对内存占用排序
8、文件查看
ls -alt 
-a #查看所有文件包括隐藏
-l #按时间顺序排序,详细信息
-t #时间倒序

stat [filename] #查看文件的状态变化
stat /bin/id #查看id这个命令的修改时间

strace -p [pid] #跟踪一个进程 
       -f #子进程也会被监控
ps aux 或者netstat -anlp 先看pid,然后定位跟踪
strace [cmd] #跟踪一个命令
9、网站后门排查

黑客留下asp,php等后门文件在网站目录下,这就是后门
排查网站的上传目录

find ./ -name "*.php" #查找所有.php后缀的文件
find / -ctime -1 #查看一天内创建的文件
grep eval /var/www/html/* #在这个路径下过滤eval关键字
find ./ xargs grep eval
源码放在D盾里面检查

by 久违 2021.1.25

猜你喜欢

转载自blog.csdn.net/weixin_42742658/article/details/113140153