“IOT幽灵”样本分析报告:物联网僵尸网络的监测与分析

2017-09-27 359366人围观 ,发现 5 个不明物体 终端安全

 *本文原创作者:水滴安全实验室,属于FreeBuf原创奖励计划,禁止转载。

背景

近年来,国家高度重视物联网的发展,物联网已经上升为国家战略产业。随着物联网的普及,规模的扩大,安全问题也必然随之而来。

16年10月,Mirai利用物联网设备发动一起规模庞大的DDoS攻击,引起了人们对物联网安全问题的重视。

近日,蜜罐系统捕获到与Mirai具有相同特点的攻击样本(Backdoor.Linux.Gafgyt,下面简称“Gafgyt”)。Gafgyt于 2014 年 8 月第一次被发现,2014 年末LizardSquard ( 黑客组织 ) 利用该样本发起一起DDoS引起安全界的小范围关注。 2015 年 1 月 Gafgyt 的源代码被公开,出现越来越多的变种,安全威胁日趋严重。

蜜罐告警

7月13日,蜜罐系统监测到大量的telnet爆破事件

israbye FreeBuf.COM

截止7月30号,两周共捕获到Gafgyt新变种样本28个

israbye FreeBuf.COM

我们统计了蜜罐最近一周telnet端口受到的攻击次数

攻击来源 攻击次数 百分比 IP归属地
180.163.192.211 222530 21.76% 上海市
84.244.31.8 76573 7.48% 俄罗斯
85.154.111.67 69943 6.84% 阿曼
122.54.169.122 61161 6.10% 菲律宾
71.227.146.158 46205 4.52% 美国
195.22.126.166 25567 2.50% 波兰
93.87.168.206 15316 1.50% 塞尔维亚
61.48.40.26 15027 1.47% 北京市
151.65.163.68 12691 1.24% 意大利
178.132.2.114 11154 1.10% 俄罗斯

行为分析

Gafgyt逐渐演变成一个庞大的家族,样本支持X86-64/ARM/MIPS/PowerPC/Motorola68000/SPARC/SuperH等多个不同平台,每个样本的上线(主控)IP也各不相同。

MD5 运行平台 主控IP
521fd3a64c9d50fb5cf88c306572ef24 ARM 185.***.***.25:444
5d8c1884e29ea1cfa81bf59079702d75 X86 185.***.***.117:23
2d764a26d6bcbcabf1d87c94ca43d6cf ARM 104.***.***.150:444

我们重点分析了X86平台的变种(其它平台变种程序逻辑相同),首先看一下程序运行逻辑:

israbye FreeBuf.COM

样本运行后,首先将自身进程改名,伪装成/usr/sbin/dropbear(类似SSH服务),这是Linux下木马惯用伎俩,目的是让TOP或PS命令所看到的进程路径和样本实际路径不同,运维人员可能较容易发现可疑进程,但找到样本 实际路径需要费点功夫,增加了手工查杀的难度。

israbye FreeBuf.COM

然后和主控端建立连接,连接后发送上线信息。

israbye FreeBuf.COM

并创建端口监听,接收并处理主控端发送的指令。

样本包含15条通信指令

指令 含义
PING 心跳包,响应回复“PONG”
GETLOCALIP 获取本地ip
SCANNER 开始扫描
HOLD 和指定ip保持连接
JUNK 发送垃圾数据
UDP UDP攻击
TCP TCP攻击
HTTP HTTP攻击
CNC 同指定ip建立连接
COMBO 调用JUNK/HOLD两处函数
KILLATTK 结束所有任务
FATCOCK 删除一些文件
GTFOFAG 结束自身进程
DUPPP 结束自身进程
SH 执行命令

下图是PING、SH两条指令的代码截图:

israbye FreeBuf.COM

israbye FreeBuf.COM

比较特殊的是SCANNER指令,当一个Bot端接收到这个指令时,将启动一个子进程(以fork方式),该子进程在与主控端失联的情况下,依然对公网随机IP的23端口进行扫描爆破,除非接收到KILLATTK/GTFOFAG/ DUPPP指令。

接下来让我们一起看看扫描爆破的流程是怎样的,一提到扫描爆破,很多人会想到高效的扫描工具+强大的密码字典,是黑客必备工具。但该样本的密码字典却出奇的简单(28个常见用户名、密码),如下图:

israbye FreeBuf.COM

看到上图,你可能立即想问:这么简单的字典能爆破什么东东啊?

在分析样本时我们也有相同的疑问,按照以往的经验,黑客用来爆破SSH/Telnet的字典数量一般在几百到2000左右,这个样本采用少量的密码字典,推测一是跟大范围的扫描公网IP,字典少扫描效率相对较高;二是和病毒作者想攻击的目标有关——IoT设备,互联网上存在大量的IOT设备(开启Telnet 23端口)使用默认或简单的密码,说明这些设备的使用者安全意识比较薄弱,拿下这些设备反而能作为长期“肉鸡”来使用。

以上只是我们的推测,欢迎各位大神拍砖,交流下不同的看法。

扫描开始之前会通过调用getrlimit函数计算一下最大能同时打开的文件数,并将该值的四分之三作为同时扫描的最大ip数,防止并发连接数过多,影响被感染设备正常运转,避免被用户察觉。

israbye FreeBuf.COM

并且会建立一个结构体数组,数组元素如下图所示:

israbye FreeBuf.COM

每个元素里面记录了扫描目标和扫描中的一些状态。

对于每个ip,从开始扫描到成功最多经历9个状态变化。对每个状态作不同的处理:

case 0:生成公网ip 尝试连接

israbye FreeBuf.COM

如果成功连接会将该ip的状态设置为1;如果失败,则将更换ip标志置1,下一轮循环的时候,重新生成目标ip。

case 1:设置socket状态

检查socket是否可写,并设置一些扫描过程中需要的标志。

case 2:是否需要输入账号

israbye FreeBuf.COM

检查是否需要输入账号密码,如果不需要则下一轮循环直接跳到状态7,开启shell。

case 3:发送爆破账号

成功则进入状态4;否则跳回状态0。

case 4:判断是否需要密码 判断账号是否正确

israbye FreeBuf.COM

判断目标的telnet是否需要输入密码,如果需要,则进入状态5;如果不需要输入密码,则直接跳到状态7,开启shell;出错则跳回状态0。

case 5:输入密码

成功则进入状态6;否则跳回状态0

case 6:判断密码是否正确

israbye FreeBuf.COM
判断密码是否正确,如果不正确的话,换下一个密码,继续尝试连接。密码正确则进入状态7。

case 7:开启shell 

israbye FreeBuf.COM

case 8:发送下载的指令 上传账号密码

开启shell后,向目标主机发送下载指令,同时向主控端发送,发送下载指令时间间隔小于8秒,程序认为指令发送成功,并认为本次账号+密码+IP爆破成功,并且打开了shell。

向目标机发送下载的指令。这样,目标也被感染木马。

israbye FreeBuf.COM

流量截图

israbye FreeBuf.COM

程序会将成功爆破的主机信息(IP+Username+Password)发送到主控端。

后续

物联网(IOT)已经走入我们的生活,相信不久的将来,我们会越来越依赖物联网的普及所带来的方便与快捷,而黑客也把物联网作为新的攻击目标,攻击规模会日益扩大。所以,物联网安全值得我们每一个人去关注。

 *本文原创作者:水滴安全实验室,属于FreeBuf原创奖励计划,禁止转载。

发表评论

已有 5 条评论

取消
Loading...

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php