频道栏目
首页 > 资讯 > 杀毒防毒 > 正文

MMD-0053-2016:ELF/STD IRC Bot恶意软件分析

16-04-26        来源:[db:作者]  
收藏   我要投稿

4000.png近日,谷歌的安全专家称,谷歌云网络中发现了ELF恶意软件:

3001.png

3001.png

 

{
  "ip": "130.211.127.186",
  "hostname":"186.127.211.130.bc.googleusercontent.com",
  "prefix":"130.211.0.0/16",
  "org": "AS15169 GoogleInc.",
  "city": "Mountain View",
  "region": "California",
  "country": "USA",
  "loc":"37.4192,-122.0574",
  "postal": "94043"
}

通过安全的方式下载这些文件如下:

3002.png

3002.png

 

ELF僵尸网络感染路由器不是一件好事,但是在谷歌云中发现的却是另一种恶意软件。很多被入侵的服务器用作CNC,并且滥用其功能。

0×01 概述

对ELF恶意软件的样本进行分析:

其二进制结构和视图:

3004.png

3004.png

 

使用readelf命令获取其头部摘要:

ELFHeader:

Magic:   7f 45 4c 46 01 01 01 03 00 00 00 00 00 00 0000
  Class:                             ELF32
  Data:                              2's complement,little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - Linux
  ABI Version:                       0
  Type:                              EXEC (Executablefile)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry pointaddress:               0xc086b8
  Start of programheaders:          52 (bytes into file)
  Start of sectionheaders:          0 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of programheaders:           32 (bytes)
' Number of program headers:         2 '
  Size of sectionheaders:           40 (bytes)
  Number of sectionheaders:         0
  Section header stringtable index: 0
'Program Headers:'
  Type           Offset   VirtAddr  PhysAddr   FileSiz MemSiz  Flg Align
' LOAD           0x0000000x00c01000 0x00c01000 0x08828 0x08828 R E 0x1000   '
' LOAD           0x0004480x0805f448 0x0805f448 0x00000 0x00000 RW 0x1000   '
There are no sections in this file.
There are no sections in this file.
There is no dynamic section in this file.
There are no relocations in this file.
There are no unwind sections in this file.
No version information found in this file.
其中需要重点注意的地方可以使用objdump命令解析:
pty:     file formatelf32-i386
pty
architecture: i386, flags 0x00000102:
EXEC_P, D_PAGED
start address 0x00c086b8
Program Header:
'   LOAD off    0x00000000 vaddr 0x00c01000 paddr0x00c01000 align 2**12'
         filesz 0x00008828memsz 0x00008828 flags r-x
'   LOAD off    0x00000448 vaddr 0x0805f448 paddr0x0805f448 align 2**12'
         filesz 0x00000000memsz 0x00000000 flags rw-
Sections:
Idx Name         Size      VMA       LMA      File off  Algn
SYMBOL TABLE:
no symbols

使用文本分析器可以发现该样本的第一个标识,引自“bakemonogatari anime iinchou character”,并且使用roumaji(日语,ASCII)进行硬编码:

3005.png

3005.png

 

0×02 封装器

首先,该样本为UPX压缩的封装的二进制库。再次回头看程序头部分:

LOADoff    0×00000000 vaddr 0x00c01000 paddr0x00c01000 align 2**12

     filesz 0×00008840 memsz 0×00008840 flagsr-x

LOADoff    0x000003a8 vaddr 0x0805f3a8 paddr0x0805f3a8 align 2**12

     filesz 0×00000000 memsz 0×00000000 flagsrw-

0x00c01000中存储封装的ELF头的副本,0x0805f3a8是封装数据的起始地址。PoC如下:

> x 0xaa@0;x 0xaa@0x00c01000
- offset -  0 1  2 3  4 5  67  8 9 A B  C D  E F 0123456789ABCDEF
0x00000000 7f45 4c46 0101 0103 0000 0000 0000 0000 .ELF............
0x00000010 0200 0300 0100 0000 d086 c000 3400 0000 ............4...
0x00000020 0000 0000 0000 0000 3400 2000 0200 2800 ........4. ...(.
0x00000030 0000 0000 0100 0000 0000 0000 0010 c000 ................
0x00000040 0010 c000 4088 0000 4088 0000 0500 0000 ....@...@.......
0x00000050 0010 0000 0100 0000 a803 0000 a8f3 0508 ................
0x00000060 a8f3 0508 0000 0000 0000 0000 0600 0000 ................
0x00000070 0010 0000 2efa 01da 0a00 0000 7811 0d0c ............x...
0x00000080 0000 0000 139a 0100 139a 0100 9400 0000 ................
0x00000090 5400 0000 0e00 0000 1803 003f 91d0 6b8f T..........?..k.
0x000000a0 492f fa6a e407 9a89 5c84                I/.j....\.
- offset -  0 1  2 3  4 5  67  8 9 A B  C D  E F 0123456789ABCDEF
0x00c01000 7f45 4c46 0101 0103 0000 0000 0000 0000 .ELF............
0x00c01010 0200 0300 0100 0000 d086 c000 3400 0000 ............4...
0x00c01020 0000 0000 0000 0000 3400 2000 0200 2800 ........4. ...(.
0x00c01030 0000 0000 0100 0000 0000 0000 0010 c000 ................
0x00c01040 0010 c000 4088 0000 4088 0000 0500 0000 ....@...@.......
0x00c01050 0010 0000 0100 0000 a803 0000 a8f3 0508 ................
0x00c01060 a8f3 0508 0000 0000 0000 0000 0600 0000 ................
0x00c01070 0010 0000 2efa 01da 0a00 0000 7811 0d0c ............x...
0x00c01080 0000 0000 139a 0100 139a 0100 9400 0000 ................
0x00c01090 5400 0000 0e00 0000 1803 003f 91d0 6b8f T..........?..k.
0x00c010a0 492f fa6a e407 9a89 5c84                I/.j....\.
>[0x00c086d0]> x @0x0805f3a8
- offset -  0 1  2 3  4 5  67  8 9 A B  C D  E F 0123456789ABCDEF
0x0805f3a8 6507 7c7e 31e5 29e8 ad2e 4cd4 b883 c761 e.|~1.)...L....a
0x0805f3b8 709c 6090 b540 bb85 7ede a550 cce0 b146 p.`..@..~..P...F
0x0805f3c8 8211 fa50 5e82 d55e 2227 b678 e121 fa00 ...P^..^"'.x.!..
0x0805f3d8 f595 a5e7 5654 b02b 6c2e 4daa de34 103f ....VT.+l.M..4.?
0x0805f3e8 d119 ab5b 7c26 20e7 dd69 9df4 822b a118 ...[|& ..i...+..
0x0805f3f8 7277 8b6c fd4d ac58 49ea f06d 6611 e239 rw.l.M.XI..mf..9
但是如果使用该POC提取该二进制库会报错:
File size        Ratio      Format      Name
  --------------------   ------   -----------  -----------
'upx: pty: NotPackedException: not packed by UPX'

原因是一旦UPX封装该二进制库,就会做出一定的修改,解封时则会找不到起始点:

3006.png

3006.png

 

图一 正常情况下UPX会查找封装器指示符

4001.png

4001.png

 

图二 该恶意软件的POC未能成功找到封装器指示符

也就是说,该二进制库只能自己解封,或者我们使用某种方法将其初始头放回指定的位置后使用UPX解封。但是别担心,已经有很多方法可以处理这种情况。一种方法就是使用CTF方法处理自定义的封装UPX。

0x03 感染标识

1、恶意软件安装

该恶意软件通过execve("/bin/sh")函数,使用不同的linux命令行执行shell命令来进行安装,详情如下:

103.png

103.png

 

恶意软件禁用了linux版本的调试器和包捕获软件,DNS解析模块被设置为“8.8.8.8”,停止或删除特定服务(大多是路由器的特定服务)的运行时文件,将防火墙规则更改为“开启telnet (tcp/23)、httpproxy (tcp/8080)和http (tcp/80)”服务,当攻击者拥有rwx permission (chmod700)权限时,恶意软件自动执行,并使用用户定时器进行自启动,开始收集信息。

因此,下列类似的运行时库在恶意软件的总体执行过程中时必须的:

/etc/ld.so.cache  // theelf runtime
/lib/i386-linux-gnu/i686/cmov/libc.so.6  // the elf runtime
/lib/i386-linux-gnu/libpam.so.0    // some user related calls made
/lib/i386-linux-gnu/libselinux.so.1  // selinux
/lib/i386-linux-gnu/i686/cmov/libdl.so.2
/lib/i386-linux-gnu/i686/cmov/libnss_compat.so.2
/lib/i386-linux-gnu/i686/cmov/libnsl.so.1     // malwre use these libs to resolve
/lib/i386-linux-gnu/i686/cmov/libnss_nis.so.2
/lib/i386-linux-gnu/i686/cmov/libnss_files.so.2
/usr/share/locale/locale.alias         // accompany the info harverst
/usr/share/locale/en_US/LC_MESSAGES/libc.mo
/usr/share/locale/en/LC_MESSAGES/libc.mo
usr/share/locale/en_US/LC_MESSAGES/psmisc.mo
/usr/share/locale/en/LC_MESSAGES/psmisc.mo",
/usr/lib/i386-linux-gnu/gconv/gconv-modules.cache

并且,以下配置文件将会被访问:

/etc/rc.conf [READ]
/etc/resolv.conf [MODIFIED!]
/etc/nsswitch.conf [READ]

通过执行下列命令收集信息:

/bin/uname        
/bin/nvram        
/usr/sbin/nvram   
/etc/ISP_name     
/etc/Model_name

并删除下列文件:

/tmp/udevd0.pid
/var/lock/.x001804289383
/var/spool/cron/crontabs/$USER[modification of crontab -e]

用户定时器包括:

 


* * * * * /PATH/MALWAREFILE > /dev/null2>&1 &

 

根据安装状态,恶意软件可以发送以下消息:

[+] Welcome to x00's cback shell %s
echo [+] you logged in at `date`
echo [+] `uname -a || cat /proc/version`
[+] you got root rights, enjoy!.
[+] Running on%s/bin/crontab./usr/bin/crontab.chmod 700 %s > /dev/null 2>&1 \
   &.touch -acmr /bin/ls %s(crontab -l | grep -v "%s" | grep-v "no cron" | \
   grep-v "lesshts/run.sh" > %s/.x00%u) > /dev/null2>&1.echo "* * * * * %s > \
   /dev/null 2>&1 &" >> %s/.x00%u.crontab%s/.x00%u.rm -rf %s/.x00%u.
[+] no cronnie.
[+] forget it. .
[+] you are root tho../etc/rc.d/rc.local./etc/rc.conf./."%s%s"a.irq.#x86.777

2、IRC僵尸网络

该恶意软件会将感染的节点连接到xxx.pokemon.inc:8080,反向分析该样本,发现其在以下DNS数据中进行转换:

;; QUESTION SECTION:
;xxx.pokemoninc.com.         IN A
;; ANSWER SECTION:
xxx.pokemoninc.com.     845 IN CNAME   bnet.pokemoninc.com.
bnet.pokemoninc.com.    845 IN A       88.198.71.83
bnet.pokemoninc.com.    845 IN A       83.143.80.227
bnet.pokemoninc.com.    845 IN A       211.103.199.98
bnet.pokemoninc.com.    845 IN A       49.231.211.193
bnet.pokemoninc.com.    845 IN A       61.156.43.106
bnet.pokemoninc.com.    845 IN A       203.141.196.145
bnet.pokemoninc.com.    845 IN A       202.103.224.85
 
;; AUTHORITY SECTION:
pokemoninc.com.  2644  IN   NS dns1.name-services.com.
pokemoninc.com.  2644  IN   NS dns2.name-services.com.
pokemoninc.com.  2644  IN   NS dns3.name-services.com.
pokemoninc.com.  2644  IN   NS dns5.name-services.com.
pokemoninc.com.  2644  IN   NS dns4.name-services.com.

感染的节点接收到PONG指令后会进入IRC服务器:

 


......PONG #[Arch] :[RangeIP]|[HOSTNAME]-xi.

.x00 localhost localhost :[DATE,i.e.:feb012016]...

 

通过执行JOIN命令并使用ID格式,如下:

 


JOIN :#[Arch]

BotID:[Arch]:|x|1|[ID]|[hostname]|[youtubeURL][date]

NICK [BotID] USER x00 localhost localhost:%s <--- $DATE

 

以YouTube URL为例,https://www.youtube.com/watch?v=Jzqy6UJXpcQ本身是安全的,但是点击进入后会自动执行IRC !MALICIOUS! bot命令,将这些命令转储成文本列表如下:

107.png

107.png

 

3、关于攻击

所有的攻击命令可以从上图中看到,其中有两个在DDoS攻击中常见的命令:SUDP和UNKNOWN。将其拆分解码成源码后,如下:

3007.png

3007.png

 

4、“User Agent”组合用于L7 DoS攻击

该恶意软件在实施L7 DoS攻击时,会使用多个用户代理的组合。其组合形式多变,针对该样本的组合方式如下如:

3009.png

3009.png

 

显然过滤文件头并不是阻止此类攻击的推荐方法。

0×04 ELF/STD bot

这是一个STD bot,结合修改的kaiten代码。人们一般认为STD bot来源于kaiten/ktx或tsunami,其实不然。原始的STD bot是一段独立的代码,其名称来源于编码者名称“stackd”,他编写了STD bot开始的48行代码:

4001.png

4001.png

 

该代码后来受IRC基础代码(如kaiten/tsunami)影响,并对“copypasta”内容进行了一些修改,形成了现在的STD bot。

在该变体中,编码者检查了最新的STD IRC Bot源代码,并加入自己的签名,并使用了UPX来防止系统管理员、扫描仪或分析人员在静态分析时发现这一威胁。

0×05 网络威胁标识

IP地址

130.211.127.186

88.198.71.83

83.143.80.227

211.103.199.98

49.231.211.193

61.156.43.106

203.141.196.145

202.103.224.85

GeoIP信息(清除目的)

IP Address, City, Region, Country Name

130.211.127.186, Mountain View, CA, United States

88.198.71.83, , , Germany

83.143.80.227, , , Norway

211.103.199.98, Beijing, 22, China

49.231.211.193, , , Thailand

61.156.43.106, Jinan, 25, China

203.141.196.145, , , Japan

202.103.224.85, Nanning, 16, China

IP address | Reversed | ASN|Prefix|ASN|CN|ISP

130.211.127.186 | 186.127.211.130.bc.googleusercontent.com.|15169 | 130.211.0.0/16 | GOOGLE | US | google.com | Google Inc.

88.198.71.83 | static.88-198-71-83.clients.your-server.de.|24940 | 88.198.0.0/16 | HETZNER | DE | hetzner.de | Hetzner Online AG

83.143.80.227 | kdb.servetheworld.net. |34989 | 83.143.80.0/21 |SERVETHEWORLD | NO | servetheworld.net | ServeTheWorld AS

211.103.199.98 |  |4808 |211.103.192.0/18 | CHINA169 | CN | gintong.com | Beijing Huaxia UnipowerNetwork Co. Ltd

49.231.211.193 |  |45458 |49.231.211.0/24 | SBN-AWN-AS-02 | TH | sbn.co.th | 408/60 PHP Bld. 15th FlPhaholyothin Rd Samsen Nai Phayathai

61.156.43.106 |  |4837 |61.156.0.0/16 | CHINA169 | CN | chinaunicom.com | China Unicom ShandongProvince Network

203.141.196.145 | html.city.shiojiri.lg.jp. /html.city.shiojiri.nagano.jp. |17518 | 203.141.192.0/19 | SHIOJIRI | JP |city.shiojiri.nagano.jp | Shiojiri City

202.103.224.85 |  |4134 |202.103.192.0/18 | CHINANET | CN | chinatelecom.com.cn | ChinaNet GuangxiProvince Network

使用的端口号

tcp/22 (remote cnc)

tcp/80 (DoS attack)

tcp/8080 (IRC connection CNC)

tcp/23 (telnet scanning)

域名和主机名:

pokemoninc.com (domain)

bnet.pokemoninc.com (cname)

xxx.pokemoninc.com (hostname for round robin access)

186.127.211.130.bc.googleusercontent.com (one of payloadinfection server)

哈希值

MD5 (pty) = fa856be9e8018c3a7d4d2351398192d8

MD5 (tty0) = 7980ffb3ad788b73397ce84b1aadf99b

MD5 (tty1) = d47a5da273175a5971638995146e8056

MD5 (tty2) = 2c1b9924092130f5c241afcedfb1b198

MD5 (tty3) = f6fc2dc7e6fa584186a3ed8bc96932ca

MD5 (tty4) = b629686b475eeec7c47daa72ec5dffc0

MD5 (tty5) = c97f99cdafcef0ac7b484e79ca7ed503

0×06 保护和缓解

很多路由器和Wifi/WiMax服务都被该恶意软件入侵,用户可以采取以下几步预防:

1、更改默认的管理员和根证书,并修改密码

2、禁用远程登录服务,或启用安全的防火墙保护该服务

3、禁用root,保护SSH访问,使用最新的协议/版本,限制访问权限,如果可以,更换端口

4、部署防火墙规则,避免端口被扫描

5、通过检查xxx.pokemon.inc:8080/80/23的进站/出站流量监测入侵

6、推送更新

对于已感染的服务:

1、向CERT/CSIRT报告入侵事件

2、联系设备所有者,重置设备

3、根据合同协议,设备返厂

相关TAG标签
上一篇:TEST LAB V8在线渗透实验室教程(四) | 关注黑客与极客
下一篇:Camera360内网小漫游
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站