2018年oakland论文:理解linux恶意软件

论文地址:http://www.s3.eurecom.fr/~yanick/publications/2018_oakland_linuxmalware.pdf

introduction

论文提出了linux而已软件长期没有被关注,尤其是学术界。

早期的几个linux下恶意软件的事件有VirusTotal,一些人的博客,以及对Mirai僵尸网络的一篇分析文章,在原文的引文234中。

这篇文章作为第一个全面分析linux下恶意软件的文章,对10548个linux下的恶意软件进行了长达一年的分析。这篇文章的贡献在于

1、记录了设计用来支持分析Linux恶意软件的几个工具的设计和实现,并讨论了处理这种特殊类型的恶意文件时所涉及的挑战

2、在一年内首次对10548个Linux恶意软件样本进行了大规模的实证研究。

3、揭示并讨论了现实世界中恶意软件使用的一些低层特定于linux的技术,并提供了当前使用情况的详细统计数据。

挑战

目标多样性:目的设备有很多种,比如智能电视,智能摄像头等待一些IOT设备。而这些设备分析起来都比较复杂

1、架构多样性:linux支持多种架构,所以要全面分析linux的恶意软件还需要做多种架构的支持

2、加载器和库:ELF允许自定义加载器和库,不同的环境使用的加载器和库不同,可能会直接造成程序不可执行

3、操作系统:由于ELF也是支持多种操作系统,很难区分开这写ELF是为那种系统编写的,因为其他系统中甚至连系统调用号否不一样

静态链接:会导致库函数被编译进可执行文件中,导致二进制分析变得很困难

分析环境:一些嵌入式设备上,恶意软件假定以管理员权限运行,而在分析恶意软件时,赋予而已软件root权限,则会赋予它更改沙箱的能力

缺乏相关工作:这是第一个全面分析恶意软件的工作,如何分析有很多的问题

分析流程

数据搜集:从VirusTotal获得样本

文件和元数据分析:直接分析ELF文件的格式等信息

静态分析:利用IDA分析加壳等信息

动态分析:kvm加qemu虚拟机运行,利用systemtap等共计收集运行时的一些信息

行为分析

1、ELF头操纵

文章指出而已软件经常通过更改ELF头

异常的ELF头,为什么需要更改这些信息

1、删除节信息:可以执行

2、更改可执行文件所在系统:报出提示但是还是可以执行

无效ELF

1、节表异常

2、重叠段

对用户程序的影响

IDA对异常ELF的处理最好,readelf、gdb等都不够好

2、持久性

子系统初始化:/stc/rcX.d下面这些脚本,rc.local脚本等,systemv intit的配置更改

cron进程:cron是Unix系统中基于时间的作业调度程序

文件替换和感染:替换掉关键地方的文件,感染关键文件

修改用户主目录中的配置文件:比如bashrc等

3、欺骗

使用一些特定的名字,比如正常软件的名字,或是每次执行都更改已从进程的名字

4、权限获取

隐藏自身痕迹:删除/var/log文件,删除/var/log/wtmp(包含登录信息)

系统漏洞提权

linux模块

5、打包和多态

UPX

自定义打包器

6、进程交互

多进程DDOS攻击

使用shell命令,实现持久性和删除历史等

进程注入,向运行进程注入代码来改变进程行为,或是窃取一些进程信息,3种方式实现进程跟踪

1、ptrace,子进程执行,执行ptrace,然后父进程也执行

2、ptrace加PID跟踪目标进程,然后向/proc/<target_pid>/mem中写值

3、执行process_vm_writev调用。process_vm_writev调用是2012年引入的一个新的系统调用,使用内核3.2在两个进程的地址空间之间直接传输数据。

7、信息获取

proc文件系统和sys文件系统

/etc目录下的配置文件

8、逃避

沙盒检测:搜集系统中的一些信息来看是不是有Wmware,qemu等信息

进程枚举:测试机器是否被感染,或是选择进程去杀死

ptrace反调试

拖延代码:只是用来进行网络通信

2018_oakland_linuxmalware的更多相关文章

随机推荐

  1. python中panda的dateframe

    1 函数介绍 #to_csv函数的语法#函数原型# to_csv(filepath,sep=",",index=TRUE,header=TRUE)#参数介绍: #(1)导出的文件路 ...

  2. 20个Flutter实例视频教程-第11节: 一个不简单的搜索条-2

    博客地址: https://jspang.com/post/flutterDemo.html#toc-1b4 视频地址:https://www.bilibili.com/video/av3970929 ...

  3. Spring Boot2中配置HTTPS

    1.生成证书 使用jdk,jre中的keytool.exe生成自签名的证书,需要配置JAVA_HOME和path环境变量,即jdk的环境变量.命令如下: keytool -genkey -alias ...

  4. Spring Boot 学习系列(07)—properties文件读取

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程 ...

  5. ORM取数据很简单!是吗?

    简介 几乎任何系统都以某种方式与外部数据存储一起运行.大多数情况下,外部数据存储是一个关系数据库,并且在实现时通常将数据提取任务委托给某些 ORM. 尽管 ORM 包含很多 routine 代码,但是 ...

  6. HDU - 1099 - Lottery - 概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...

  7. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)【A,B,C,D】

    呵呵哒,上分~ CodeForces 724A: 题意: 给你两个星期几,问连续两个月的头一天是否满足: #include <iostream> #include <stdio.h& ...

  8. MySQL · 性能优化 · MySQL常见SQL错误用法

    1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样 ...

  9. [!] No `Podfile' found in the project directory.

    1.cd ios/ 2.vim Podfile(创建Podfile)且输入内容 source'https://github.com/CocoaPods/Specs.git'platform:ios,' ...

  10. [題解]luogu_P2055假期的宿舍(二分圖最大匹配)

    雖然是裸題但是仍然沒有看出來...... 1.每個人都對應一張床(可以的話),這樣把人和床看成點,對應關係就是邊,跑最大匹配看匹配數量夠不夠即可 2.連邊條件:如果一個學生且不回家,那麼他可以睡自己的 ...