一款功能丰富的Perl后门程序分析

2018-03-01 15:27:54 浏览数 (1)

最近通过Cowrie蜜罐捕获一枚有趣的后门程序,此程序用perl语言编写。功能包括:DDoS(udpflood、tcpflood、httpflood、sqlflood)、hacking(端口扫描、信息收集、本地root、日志清理等)情报信息搜集(packetstorm、milw0rm)等

一、样本信息:

蜜罐日志显示黑客使用密码猜解成功登陆SSH后用wget命令下载了程序:

文件信息:

CRC-32 fb9cfdcb MD5 Hash 8756f19b4385cb2e6b6123da168aca38 SHA1 Hash aa948991579c2f4e7454fd3fecf7c1255a17c835 SHA256 Hash a424c0fc1ac52e34e6bfd68707720ac90148a8dc6450409e85c1dcf24aa7bf8b

VirusTotal 检测信息

二、行为分析:

程序启动后调用conectar函数建立与远程服务器的连接,服务器IP地址:118.178.190.138 端口:9981

测试机运行效果:

然后读取远程服务器端传入的指令:

调用parse函数解析指令,并调用bfunc函数执行相应的任务。此程序核心内容皆在bfunc函数里,因此后续主要分析这个函数。bfunc函数依据传入的指令参数有如下功能:

结束进程:

列出可处理的指令:

进行常见的DDoS攻击:

可以看到访问hxxp://server.perpetual.pw/syn.c下载源文件然后调用GCC编译器进行编译,删除后使用命令行./syn [] [] []执行DDoS攻击。经测试这个下载站点已经失效。

Udpflood

可以看到如果收到的指令包含 udp ,则根据收到的IP地址构造UDP包,持续向目标地址和端口发包,直至给定的结束时间。

Tcpflood

如果收到的指令包含tcpflood ,则调用tcpflooder函数进行持续时间为的tcpflood攻击,tcpflooder函数如下:

实现方法很简单,即根据传入的IP地址、端口、持续时间利用socket方法构造TCP包在持续时间内连续对目标发送建立连接的请求。

Sqlflood:

如果传入的指令包含:sqlflood ,则根据接收的IP地址建立至目标IP地址3306端口的TCP连接,持续时间为。

Httpflood:

如果传入的指令包含:httpflood ,则根据接收的IP地址建立至目标IP地址80端口的TCP连接,持续时间为。

进行常见的hacking功能,如:端口扫描、socks5代理、本地root提权、Google hacking等。

端口扫描

如果解析出指令包含portscan ,则根据给定IP地址对端口列表进行创建tcp连接遍历,获得开放的端口号。

Socks5代理

可以看出如果收到的指令为socks5,则下载mocks安装包,并调用system函数执行命令自动化mock的安装与配置完成socksv5的安装,然后获取IP地址:

简单的通过调用ifconfig命令获取,提示可以连接的IP地址和端口。

本地root提权

如果读取的指令包含rootme则调用”uname -r”和”whoami”命令查看Linux版本号及当前用户。然后根据版本号寻找可用的root工具,版本号列表及对应的root工具存在名为”h”的哈希中:

由于太长只截取一部分,剩余的rootexploits还有:”elfdump”,” expand_stack” ,” h00lyshit”,” kdump”,” km2”,” krad”,”krad3”,” krad3”,” loko”,” mremap_pte”,” newlocal”,” ong_bak”,” ptrace”,”ptrace_kmod”,” ptrace24”,” pwned”,” py2”,” raptor_prctl”,” prctl3”,” remap”,”rip”,” stackgrow2”,” uselib24”,” uselib24”,” smpracer”,” smpracer”,” exp.sh”,”kmdx”,” raptor”,” raptor2”。这部分功能该脚本仅是查询到宿主系统可以用列表中的哪个exploit工具提权,没有后续的提权动作。

发送邮件

可以看出程序利用linuxsendmail发送邮件,接收指令格式为:sendmail 。

利用各搜索引擎dork技巧查询情报(googlehacking、yahoo、msn、fireball等)

如果接收的指令为 multiscan ,则根据给定的vuln和查询字段dork遍历各大搜索引擎的搜索结果。

由于各个函数原理相同只是查询的url和条数略有区别,因此这里只拿Google做说明,其他类似,google函数:

查询记录条数限制在100条。其他函数皆类似。

擦除痕迹,清理日志:

使用system函数调用rm命令删除日志信息和历史文件。

情报搜集:

安全站点news搜集

如果接收的指令为” milw0rm”则会访问milw0rm站点搜集最新的exploits信息,同样的如果接收到指令packetstorm,则会访问www.packetstormsecurity.org获取最新情报

利用google hacking技术搜集含有sql漏洞的站点

接收指令:sql2 ,然后调用之前google hacking讲到的那些诸如google、msn函数进行查询,返回查询结果

然后构造sql语句测试漏洞情况

至此该脚本的大部分主要功能都已分析完毕,接下来进行简单的溯源。

三、简单溯源

脚本在最开始不传入参数的情况下默认与IP地址为118.178.190.138的server建立连接,查询该IP地址信息如下:

Kail 下nmap扫描该主机,没得到有用信息,估计有防护措施,扫描不到有用的结果:

猜测是部署在阿里云上的云主机,尝试浏览器访问此IP得到如下页面:

显示为“向向游戏平台”。至于是这台server也沦陷了还是….就不得而知了。

四、总结

这个后门程序类似于之前网上有报过的名为” DDoS Perl Bot v1.0”的后门程序,只是功能上要丰富许多,作者应该是国外的,被国内黑客通过修改远程server的IP进行定制,从而实现与自己的C&C server交互。可以跨平台,对于安装了Perl解释器的Windows系统同样可以实现部分功能,不过主要还是针对Linux系统威胁较大,用于渗透后植入后门。总的来说功能虽多但实现的质量和方法确实不高,作为案例分享和思路启发还是有一定意义的。

0 人点赞