转载

Linux 恶意程序分析学习笔记

* 原创作者:SecDarker

Linux 下的恶意程序相对windows来说应该是非常少的,在 http://malwaredb.malekal.com/ 病毒库网站中几十上百个病毒样本中才会出现一个linux的样本。这里笔者主要是对一些linux样本的特征进行总结并分析来供大家参考学习,欢迎交流哦—。—

0×00常见特征

1. 体积小,功能相对单一

在收集到的几十个样本中,最大的(没有去除符号表)也只有1.8M,如果去除符号表的话只有400K左右,很多病毒甚至只有几K。 且大部分样本都只干一件事,如发起DOS攻击,收集用户信息、某些软件漏洞的POC等。一般附带一个命令执行接口,来接收黑客下达的指令,并不会像windows下的病毒那样功能丰富,集进程注入,注册表修改,文件修改,进程隐藏,键盘记录,信息收集等与一身。

主要原因: linux对权限控制比较严格,没有root权限没有办法对其他程序进行修改、注入,无法访问一些敏感的文件。 另外linux分支较多,如果内核版本不匹配程序可能因为依赖库版本问题无法执行,所以即使衍生出大量其他程序也未必能执行。

2. 工具化,带有命令选项

Linux下的病毒,有些能够接受不同的命令选项,就像linux下的工具那样,不像windows下那样只要运行起来就好了。这样方便更好的与其他程序联动,更利用bash脚本组合多个病毒一起工作。

3. 加壳一般使用UPX

在收集到的样本中,几款被加壳的样本都使用UPX进行加壳,暂时没有发现使用其他壳。

4. 僵尸网络,发起DOS攻击

收集到的样本中,发现带有DOS攻击功能的样本比例很高。因为linux用作服务的场景较多,网络性能,处理器性能,内存性能都比较好,并且有些网络管理员并不经常查看系统,所以很适合作为僵尸机,发起DOS攻击。 同时目前网游,电子支付等在linux下使用的较少,没有发现有样本有盗号行为, 对linux服务器来说,最有价值的东西就是数据库,黑客在拖库之后,为了最大化利用资源,作为DOS僵尸机是一个最好的用途。

5. 命令执行,调用system函数

作为后门,同时也作为下发一些攻击命令的通道。

6. 收集用户的信息,通常为root账号密码

有些情况下,程序并不运行在root权限下。 但是通过收集一些用户的操作指令,可以截获root的账号密码,从而获得root权限。

7. 一些漏洞的POC

Linux下的恶意样本有一大部分是结合常用软件的漏洞来感染的。

8. 难以提取特征函数

Windows下可以总结出一大堆病毒常用的winAPI,但是linux下的病毒基本都使用常用的底层函数,与其他程序并没有太大的区别,难以通过使用的函数来判断病毒。

9. 关键数据加密

病毒通常会对关键数据进行加密,如真实连接的url,IP,执行的命令等信息。

0×01常见的感染方法

1)ELF文件感染

首先病毒须以某种方式寄生于宿主,这就意味着病毒需要修改宿主插入自身代码。当被感染宿主执行时,宿主源代码与病毒体共同映射到程序进程空间,病毒抢先于宿主执行,之后将控制权交还宿主。目前下载到的样本中没有出现此类感染方式的病毒, 该技术比较难实现,并且没有root权限是无法对其他程序进行修改的。

Linux 恶意程序分析学习笔记

具体原理参考 http://www.docin.com/p-825094885.html

2)编译替换可执行程序

这是大部分的感染方式,通过暴力破解,其他软件的漏洞(如网站漏洞上传web shell,远程代码执行等漏洞)获得一定的系统权限。 然后收集系统内核信息,编译对应版本的病毒,通过替换已有进程或者一些随机进程名等方式在系统中运行。通常通过命令方式或者bash脚本方式执行。

3)编译替换SO

通过替换so源码中的一些常用函数,在里面添加恶意的功能,然后替换掉原来的so文件,使得恶意函数被执行。

0×02一些病毒样本分析

1)功能单一、小巧

一款非常轻量级的样本,大小只有13K,只做一件事改写内存分页权限,将内存分页映射到临时文件中,发送文件。 偷取内存信息。

Linux 恶意程序分析学习笔记

Linux 恶意程序分析学习笔记

2)工具化

工具化的病毒,有很多执行选项,就像一款黑客工具一样。方便与其他程序联动与bash脚本调用。

Linux 恶意程序分析学习笔记

与工具不同的是,病毒还开放了远端命令执行接口。通过远端下发命令。

Linux 恶意程序分析学习笔记

3)命令执行

基本所有的病毒都会开放一个命令执行的接口, 可能是生成一个shell,也可能是简单的执行system,popen,execl等函数。

自己编写shell

Linux 恶意程序分析学习笔记

使用popen()

Linux 恶意程序分析学习笔记

使用execl()

Linux 恶意程序分析学习笔记

通过system()函数执行

Linux 恶意程序分析学习笔记

4)与漏洞POC结合

php5.x系列/apache远程执行漏洞利用

Linux 恶意程序分析学习笔记

攻击payload

Linux 恶意程序分析学习笔记

Centos root提权漏洞POC

Linux 恶意程序分析学习笔记

5)用户信息收集

Linux 恶意程序分析学习笔记

Linux 恶意程序分析学习笔记

6)发起DOS攻击

下载到的样本中会发起DOS攻击的样本占比非常高。通过从服务器获取攻击目标或者接收黑客下发的指令,发起DOS攻击。 同时还会配合修改网络资源使用率信息来隐藏攻击行为。

一些常见的DOS攻击

Linux 恶意程序分析学习笔记

Linux 恶意程序分析学习笔记

Linux 恶意程序分析学习笔记

7)关键数据加密

对关键数据的加密防止黑客的服务器地址被分析,执行的命令被分析。

Linux 恶意程序分析学习笔记

Linux 恶意程序分析学习笔记

Linux 恶意程序分析学习笔记

0×03 Linux 病毒的防范

1)由于 Linux/Unix 系统中的权限限制,可以使病毒不能感染写权限以外的程序。所以加强系统管理,限制用户之间文件的非法拷贝,防止病毒获得 root 权限,可限制病毒的传染规模。 2)及时修复系统提权漏洞与运行在root权限下的程序漏洞,以免恶意软件通过漏洞提权获得root权限传播后门。 3)通过Netlog记录,lsof等,严格监视到到未知web server的连接,防止病毒通过网络更新,或引入新的病毒体。 4)由于病毒体的寄生增加了寄主数据段大小,可用 ls –l 等命令人工检测到。此外,也可用strip 命令优化程序,去掉容易寄生病毒的.note .debug 段.也可使用 ls 对应的系统调用 sys_getdents 编程实现检测文件的大小。 5)病毒的寄生会使程序的入口有所变化,病毒检测程序可以利用程序入口点不在.init 节检 测出。 6)清除病毒:清除掉检测出的被感染的寄主程序,以及病毒体文件。被感染的模块需要用解除重载。

* 作者:SecDarker,本文属FreeBuf原创奖励计划文章,未经许可禁止转载

正文到此结束
Loading...