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

最近通过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系统威胁较大,用于渗透后植入后门。总的来说功能虽多但实现的质量和方法确实不高,作为案例分享和思路启发还是有一定意义的。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-09-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Linux服务简介-关闭不需要的Linux服务

Linux服务(Linux services)对于每个应用Linux的用户来说都很重要。关闭不需要的服务,可以让Linux运行的更高效,但并不是所有的Linux...

5814
来自专栏FreeBuf

如何突破Windows环境限制打开“命令提示符”

如今,许多企业或组织都会通过使用受限的windows环境来减少系统表面的漏洞。系统加固的越好,那么也就意味着能被访问和使用到的功能就越少。 我最近遇到的情况是,...

2946
来自专栏Java架构沉思录

10分钟了解ZooKeeper

ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

1142
来自专栏北京马哥教育

linux服务器安全配置实例(二)用户账户权限配置

豌豆贴心提醒,本文阅读时间7分钟 没有绝对的安全 在上一篇文章《linux服务器安全配置实例(一)》中介绍了我对ssh服务的一些常用的安全配置和性能优化。 ...

4925
来自专栏FreeBuf

如何写一个开放WLAN下的嗅探测试工具?

* 本文作者:Macr0phag3,本文属FreeBuf原创奖励计划,未经许可禁止转载

1563
来自专栏大魏分享(微信公众号:david-share)

如何构建一个安全的Glusterfs分布式文件系统集群?

3334
来自专栏程序员同行者

centos7安装python的MySQLdb模块

1322
来自专栏安全领域

使用JavaScript开发物联网设备也会非常安全

本文将引导你完成一个练习,向你展示如何在 IoTivity 安全框架上使用 Java 对 OCF 设备进行快速原型设计。

49910
来自专栏信安之路

这些命令你用过多少?

在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 ro...

841
来自专栏北京马哥教育

你的Linux服务器被黑了?看一看是不是犯了这5点错

本文由马哥教育Linux云计算面授班24期学员推荐,转载自互联网,作者为高俊峰,Linux资深技术专家,畅销书籍《循序渐进Linux》、《高性能Linux服务器...

6314

扫码关注云+社区

领取腾讯云代金券