作者:启明星辰ADLab
“螳螂捕蝉黄雀在后,不知树下之弹弓也”。启明星辰ADLab于2017年首先提出一种高效的黑客攻击手段---黑雀攻击,并阐述了黑客生态中的黑雀攻击现象及黑雀分析方法,开创了黑雀生态的研究与分析。我们以现实中存在的一款僵尸网络为例,论述了在黑客生态圈中所存在的三级黑客架构的黑雀攻击现象(大黑雀、黑雀、螳螂),并且发布了长篇深度分析报告《黑雀攻击-揭秘Death僵尸网络背后的终极控制者》;随后我们披露了”比尔盖茨僵尸”黑客生态圈中的黑雀现象,发布了《揭秘Billgates僵尸网络中的黑雀现象》。而随着物联网这块肥肉被黑客盯上后,黑雀也同样盯上了物联网黑客,本文我们将揭露支持物联网攻击与感染的Ddostf僵尸中所存在的“黑雀现象”。
启明星辰ADLab在长期的僵尸生态研究分析中发现了一款物联网僵尸被广泛的植入了黑雀。通过对其进行溯源分析确认其是一种支持多CPU平台的Ddostf僵尸网络家族变种。自2016年10月Mirai肆虐美国互联网开始,各路物联网病毒如雨后春笋般层出不穷,Ddostf僵尸也不甘落后,于2017年4月增加了植入黑雀的物联网僵尸,能够感染Arm、Mips、X86架构的物联网设备,传播广泛,危害极大。
该僵尸网络中多个螳螂黑客控制的僵尸网络异常活跃,同时我们监测到隐藏在该僵尸网络的幕后黑雀也在近期现身,分别于2018年9月20日16时59分和9月6日21时23分开始,数次通过UDP FLOOD和TCP FLOOD向高防服务器 (218. 90. XX.XX、118. 184. XX.XX)发起攻击,导致服务器业务长时间中断。
在分析过程中我们还会分析一些有趣的现象:“毒上加毒”,部分野生黑雀通过技术手段像寄生兽一样感染并附着在僵尸程序上,黑客在发展自身资源的同时,也在无形中帮助野生黑雀进行僵尸网络的扩张。这也使得原本的两级黑客模式演变成了更为复杂的三级黑客模式。文中我们将介绍其黑雀攻击的原理以及这种“毒上加毒”的现象。
通过对Ddostf僵尸网络幕后黑雀的追踪分析和样本抽测,我们共收集到约500个关联样本,其中Arm和Mips架构共262个,物联网僵尸占比超过总样本量的一半。分析显示该黑雀至少控制着184个螳螂僵尸网络,其中大部分螳螂C&C位于中国,但随着国内打击DDoS力度越来越大,许多黑客开始将服务器外迁到网络管控宽松的国家和地区来躲避监查,以下是根据抽样数据绘制的黑雀控制下的螳螂C&C分布地区统计图:
同时,我们也对该黑雀控制的我国境内Ddostf僵尸网络螳螂C&C进行了细分,数据显示螳螂C&C分布最多的几个省份和地区依次为香港、北京、江苏、广东、辽宁和贵州等,相关分布图如下所示:
Ddostf bot是当前中国区非常活跃的多硬件平台僵尸网络之一,由国内黑客组织编写,因僵尸程序代码包含“ddostf”而得名,自2015年起大量在黑产社群及论坛发布和售卖。其版本更迭迅速,至2017年4月共进行了8轮更迭。其中最近发布的版本为天罚压力测试系统V8.1,目前该黑客组织关闭了对外接口并停止了程序更新。
Ddostf bot 程序使用C语言编写,最新版本可入侵Windows平台和Linux平台下的Arm、Mips、X86等多种硬件平台架构的设备,相较于传统僵尸病毒,Ddostf对多平台的支持尤其是针对智能设备的攻击使其可以掌握大量的网络资源,无疑会造成更强的破坏力。Ddostf bot 可针对目标进行12种攻击,包括TCP flood、ICMP flood、UDP flood、SYN flood、HTTP flood、CC flood等攻击手段。
Ddostf bot在最初的编译文件中预留了黑雀攻击接口,尽管部分下游螳螂黑客发现并去除了该接口,但仍有大量的螳螂中招,成为黑雀扩展资源的免费劳动力。
在对黑产僵尸网络的分析过程中,我们发现一款新型的物联网僵尸在物联网设备中快速扩散,随后我们迅速地获取到了该物联网僵尸的样本。通过样本相似度比对发现该样本为Ddostf僵尸的变种(Ddostf僵尸在以往的众多版本中并不支持物联网设备的感染),并且在我们对大量关联样本的批量分析过程中发现,该家族的大部分攻击代码都会连接两个以上C&C控制端,并且其中一个C&C控制端的连接行为异常,如大量样本均会尝试对其进行连接并且做了延迟上线。因此,我们对这些样本进行了进一步分析并最终确认该僵尸生态中被植入黑雀。
针对我们收集到的约500个僵尸样本,绘制样本上线频度占比图如下:
从图中可以看出C&C(v8.ter.tf)上线的频度远高于其他C&C, 根据黑雀可对下游螳螂黑客的攻击样本进行感染的特性,可以判定该僵尸生态中的黑雀即是控制C&C为v8.ter.tf的黑客。
由于Ddostf僵尸支持多架构平台,我们在分别对Windows和Linux平台的样本进行分析后发现,两类平台均存在黑雀攻击的现象,但作者对黑雀C&C的加密处理有所不同。其中Windows端采用了较为复杂的自定义加密算法,Linux端则采用了Base64的方式进行编码,两种不同难度的加密隐藏方式也造成黑客在去除黑雀后门时的难度有所不同。我们分别统计了两个平台受到黑雀攻击(带有后门)的样本占该平台总样本的比例。
可以看到受攻击的Windows平台的样本占比明显高于Linux平台,也即Windows端肉鸡受黑雀控制比例更高。
通过对该黑雀的信息追踪,我们发现了该黑雀最近发布的v8.1版本控制端和配置小马,并以此为例对其Linux和Windows两类平台的样本进行简要分析。
Linux端样本包含X86、ARM和MIPS三种硬件平台,但其主要逻辑的实现并无太大差别。黑雀在程序中均使用硬编码的方式存储字符串"djgudGVyLnRm",通过Base64解码后可得到域名“v8.ter.tf”。僵尸程序在开始阶段会校验字符串"djgudGVyLnRm"是否匹配,若不匹配则打印“不要试图破坏程序!”并重启系统。我们在《启明星辰ADLab联合电信云堤揭秘Billgates僵尸网络中的黑雀现象》一文中提出过“偷梁换柱”的攻击现象,即其它黑雀通过攻击黑雀接口来实现C&C的替换。依此我们从僵尸程序校验黑雀C&C字符串这一模块可以看出,程序作者也意识到了这一问题,并希望尽可能避免黑雀接口遭到破坏。只是其手段并不高明,许多螳螂黑客通过反编译找到黑雀加密域名和验证字符串,同时更改或采用Patch的方式依然能够破坏接口,实现黑雀攻击。
验证成功后僵尸程序会进行如下操作: 1.权限判定 通过JudgeIfRoot函数依据文件/proc/cpuinfo可读性判定进程是否ROOT。 2.进程互斥 若进程权限为ROOT且启动时有参数传递,则通过readlink函数获取自身绝对路径,执行"ps -e"查看进程是否已运行,否则退出。 3.开机自启动 程序在Mvfile函数中会调用system函数执行命令设置开机自启动:
chmod +x /etc/rc.local mv $(pwd)/c1 /etc/c1 cd /etc;chmod 777 c1 sed -i -e '/exit/d' /etc/rc.local sed -i -e '/^\r\n|\r|\n$/d' /etc/rc.local sed -i -e '/c1/d' /etc/rc.local sed -i -e '2 i/etc/c1 reboot' /etc/rc.local sed -i -e '2 i/etc/c1 start' /etc/rc.d/rc.local sed -i -e '2 i/etc/c1 start' /etc/init.d/boot.local
4.守护进程 通过fork创建双进程守护,并且会切换至/tmp目录。 在此之后程序会开启两个线程,其中黑雀线程的主体功能与螳螂线程相似度很高,但控制指令功能类型少于螳螂线程。值得注意的是黑雀线程会延迟60s后上线,往往可以迷惑分析人员,使黑雀C&C隐藏在大量的C&C处理中,减少被分析发现的可能。
Windows端样本首先会在磁盘根目录windows文件夹下释放子体并自我删除,之后通过服务的方式启动子体进程。相较于Linux平台针对域名的简单Base64编码“加密”,程序作者在windows端采用了自定义的加密算法,以防止被轻易发现和篡改。需解密的黑雀C&C和黑客C&C如下所示:
解密函数首先会初始化密钥Table,之后通过包括按位异或、行位移等多种方式进行10轮解密操作,由于解密流程较为复杂,在批量解密域名的过程中我们采用了动态脚本解密的方式进行提取,最终会得到解密后的螳螂C&C和黑雀域名。
Windows平台样本的主要逻辑同Linux平台相似,首先会进行黑雀域名的验证,验证成功后开启黑雀线程,但并未做延迟上线处理。 我们通过对黑雀域名v8.ter.tf所涉及的windows端样本的编译时间进行抽样分析,绘制如下样本编译时间轴。
依图所示,抽样样本大部分编译时间集中在2017年4月18日,尽管许多样本被产业链下游黑客进行过各种包装处理,如加强壳、插入Loader加载自定义代码等,但核心僵尸模板都是源于僵尸编写者在编译时生成的。所以我们推测僵尸制造者是在2017年4月18日17点10分22秒生产了被大量使用的v8.1版本的僵尸模板程序,而其它时间生产的僵尸模板程序并没有得到大规模传播。
以V8.1版本Linux X86平台为例,僵尸程序各平台的通信协议相同,在获取计算机相关信息后,程序会组包发送给C&C服务器进行上线请求,上线包长度为204字节。上线数据包格式和上线包内存格式如下所示:
当僵尸程序成功上线后,会调用recv函数来等待C&C服务器下发控制命令,受限于篇幅,我们仅对主控常见命令及其攻击进行简单列举。
僵尸程序从V8.1版本开始增加了出租肉鸡服务,能够将僵尸资源租用给下游黑客使用,可以看出黑雀拥有庞大的僵尸网络资源并希望借此扩大盈利。
Ddostf僵尸网络的控制端在一些论坛和黑产群中广泛散播,我们找到了其中数个历史版本的控制端和配置小马,针对其中主要版本的演进做了如下归纳。
可以看出,在较短的时间内,僵尸作者通过不断的技术更新,使僵尸病毒从单一平台扩展成为多平台、隐匿性高、可定制性强的僵尸病毒。尤其在添加了物联网僵尸之后,Ddostf黑雀僵尸网络的影响范围和危害性大大增加。另外,黑雀域名也从最初的多个分散化逐渐演变为集中统一化,这有利于域名解析管理的便捷和攻击资源的聚合。其中域名myss.myss.top、myss.basec.cc、myss.ddns.net和klss.ddns.net在2016年后解析频率较低,而域名v8.ter.tf 和myss.ter.tf则相对活跃,两者关联着大量僵尸样本。由此我们判断该黑雀目前主要操控V8及之后版本的僵尸网络,但其同时也具备着发起旧版本僵尸网络DDoS攻击的能力。
分析至此,我们已经找到了样本中的黑雀后门,准备收工大吉。但在检测“天罚v8集群压力测试系统.exe”的过程中,我们发现事情并没有那么简单。控制端在正常运行时并未出现异常网络行为,但在点击“监听端口”按钮后程序则会不断发起可疑连接请求。
由于Ddostf家族的后门问题非常严重,螳螂黑客往往会在去除小马后门时暗自窃喜,放松警惕,殊不知一个更大的陷阱在等待着自己——黑雀在控制端同样隐藏了黑雀攻击接口,且只会在监听端口后开始建立连接。将二者绑定在一起不仅可以迷惑使用沙箱的分析人员,还可以在防火墙拦截网络通信时迷惑用户。这种针对控制端攻击的危害性无疑数倍于针对木马样本的攻击。由于控制端为Windows平台,僵尸制造者为了隐藏自身进行黑雀攻击的恶意目的,也为了防止其控制端被其它黑客逆向工程,自V8版本后加入了虚拟机保护壳Safengine Shielden进行加壳保护(据说专业版保护强度甚至强于VMP)。由于脱壳成本极大,我们寻找到了旧版本V7进行逆向分析和比对,发现程序在监听端口后会主动连接黑雀的另一后门域名host.ter.tf。针对v8版本,虽然SE壳抹去了堆栈信息且无法对程序代码下断,但我们在尝试对网络系统函数下断后,经过调试和解密发现了与V7版本相同的黑雀域名。
如域名解析生效,V7版本控制端首先会发送上线包(天罚端),上线包相关格式如下所示:
成功建立连接后控制端程序会等待接收黑雀指令,指令共分三种控制类型,其中当类型为case 7时,程序会通过指令发送的URL地址实现任意下载执行。如下图所示:
如此一来,黑雀就可以轻易控制螳螂黑客执行任意文件,不仅可以进行版本的更新,还可以加载任意恶意软件,危害极大。通过域名解析查询我们了解到,目前黑雀始终未对该域名进行IP解析,也就是说未曾发起过针对控制端的攻击。但不排除黑雀是在下一盘大棋,只待时机成熟进行大范围收割。综上,我们有理由怀疑黑雀在未来可能借此发动更大规模的攻击,需要引起高度警惕。
在分析样本的过程中我们还发现了一些有趣的现象,部分Windows平台样本的大小明显同模板样本偏差较大,且会建立3个以上的C&C连接。通过进一步分析我们发现此类样本遭到了野生黑雀攻击,代码入口点被更改后加载了自定义Loader,且病毒代码隐藏在新增的rmnet区段中。
通过分析发现,这类野生黑雀攻击实为Ramnit蠕虫病毒所为,该蠕虫以各种小工具的形式在互联网上广泛传播并形成了庞大的僵尸网络。其首次出现于2010年,触发后会感染本地和移动硬盘上的EXE、DLL、HTM和HTML文件,可以窃取被感染主机的银行凭证、密码、cookie和个人文件等等。
被攻击程序首先会执行rmnet段,运行后会生成并执行srv.exe(upx加壳)同时跳转回原程序入口执行被感染进程逻辑。通过调用CreateProcess启动srv.exe后会释放自身到Program Files\Microsoft\DesktopLayer.exe,运行DesktopLayer.exe后程序会从文件中提取DLL。
之后进程通过InlineHook调用ZwWriteVirtualMemory函数将DLL文件注入到IE和Google Chrome进程中,从而实现文件不落地,防止杀软查杀。最后通过被注入的浏览器进程进行文件感染、远控连接、注册表自启动等行为。这里我们主要关心其对僵尸程序进行感染的攻击过程。
分析过程中涉及多次脱壳和DUMP,最终可以提取到注入进程的DLL,DLL中会进行真正的病毒行为。感染攻击的实质是添加loader来加载自定义恶意代码的过程。首先将目标PE文件映射到内存中,判断其是否含有rmnet区段,不包含则在尾部增加区段写入恶意代码,修改区段属性为可执行,然后将恶意代码末尾指向程序原入口点,而程序原入口点指向恶意代码的起始位置。
解密后可以得到其控制端域名fget-career.com,该域名自2013年以来多次变更解析IP,虽然其服务器多次遭到刑警组织打击,但目前仍保持活跃,危害极大。因为受到Ramnit僵尸网络感染的螳螂众多,我们判断其与螳螂黑客并无利益关联,而是黑客在不知情下被Ramnit攻击后继续扩散样本。由于Ddostf bot自身受到二级黑客控制,样本在被野生黑雀攻击后即受到三级黑客控制,同时具备了DDoS、远控、窃密等多种攻击方式,随着黑客技术的不断迭代更新,这种“毒上加毒”的攻击方式很有可能被更多黑客利用,此类样本一旦扩散无疑会对网络造成更为强大的破坏和危害。
通过域名注册历史,我们观察到域名v8.ter.tf采用了隐私保护无法得知具体信息,其中最近的域名注册记录显示其有效时间从2018年4月20日至2022年4月20日,同时通过溯源发现其共存在9次有效解析记录,相关IP解析记录如下:
可以观察到,黑雀长期使用监管宽松的服务器IP,间隔1-3个月即更换一次。同时我们通过监测发现,该黑雀通常只在准备攻击前进行解析IP操作,经过一段时间的积累,当上线肉鸡量达到需求后即发动DDoS攻击,结束后迅速取消域名解析(如取消或删除A记录/CNAME),销声匿迹。可以判断出黑雀非常在意自身的隐匿安全性,灵活运用了打一枪换一炮的战术,在一定程度上增加了研究人员的追踪难度。
黑雀自2017年5月28日开始活跃,我们观察到其C&C (104.223.0.95)在2017年4月11日至5月30日关联在域名myss.ter.tf (V8版本黑雀C&C)下,而后关联至域名v8.ter.tf(V8.1版本黑雀C&C)下,这与V8.1版本样本的编译和散播时间基本吻合。而从2017年8月29日起至2018年6月17日黑雀则较为低调,将域名持续解析至127.0.0.1。在2018年6月17日后黑雀域名共4次解析IP,通过IP关联分析并没有发现足够多的样本,主要原因是黑雀在攻击后往往会迅速取消域名解析,导致大量的提交样本在沙箱扫描时无法正常DNS解析。
监测发现9月以来该黑雀活动较为频繁,2次现身发动攻击。
我们在前文提到,通过对这批样本的分析,该黑雀至少掌控着184个独立螳螂僵尸网络,也即至少掌控着这184个C&C服务器所控制的所有肉鸡。而这只是黑雀的一部分资源,相对于螳螂来说,黑雀掌握的肉鸡资源几乎高出单个螳螂僵尸网络两个数据量级,所构成的攻击流量也会呈数量级增加,破坏力极大。
依据我们目前对黑雀的掌握和溯源分析,绘制黑雀名片如下:
随着物联网僵尸网络的爆发式增长,越来越多的黑雀将目光从传统平台转向物联网领域,大大增加了攻击面,Ddostf僵尸的幕后黑雀也借此积极扩张。通过我们长期对Ddostf僵尸生态的研究分析发现,尽管部分黑客尝试去掉其小马后门并重新传播,但绝大多数的Ddostf僵尸样本依然留存有此类后门,且黑雀“狡猾”的在控制端也暗藏黑雀攻击接口,在添加强壳后难以发现和去除,用即中招。所以综合判断该黑雀僵尸资源丰富,实力非常强悍。本文重点对Ddostf僵尸网络中的这种现象进行了分析披露,并对典型僵尸样本进行了分析。此类黑雀利用普通黑客的攻击资源来发展自己的肉鸡,不动而坐收渔利。同时也要留意像Ramnit这类野生黑雀的加入,通过攻击病毒,借助“毒上毒”的方式依附传播。这些高效的黑吃黑手段给黑客产业链带来了越来越多的复杂性,也让网络秩序变得越发不安全,需要引起我们的高度警惕。