2018_oakland_linuxmalware
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的更多相关文章
随机推荐
- Flutter实战视频-移动电商-05.Dio基础_引入和简单的Get请求
05.Dio基础_引入和简单的Get请求 博客地址: https://jspang.com/post/FlutterShop.html#toc-4c7 第三方的http请求库叫做Dio https:/ ...
- Identity Server 4 原理和实战(完结)_----选看 OpenId Connect 简介
Identity Procider:身份提供商
- HTML5资料整理 [From luics]
来自http://www.cnblogs.com/luics/,新浪微博@徐凯-鬼道 HTML5资料整理 项目组要做html5这块,花了一周左右时间收集的,快有一年时间了,部分内容需要更新,仅供参 ...
- 【WIP】Swift4 闭包
创建: 2018/06/05 闭包的声明 闭包的概要 { (参数表) -> 型 in { ... } ● 参数不可以带默认值 ● 参数不可以带标签 ● 定义闭包并直接呼出必须要被代入 {re ...
- 201621123016《Java程序设计》第三周学习总结
1. 本周学习总结 1.初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写 ...
- 小白使用Web Deploy在vs2015中发布到iis遇到的问题及操作流程
整体流程详细参照:http://www.cnblogs.com/potential/p/3751426.html 问题1.未能连接到远程计算机,请确保在远程计算机上安装了 Web Deploy 并启动 ...
- Unity3D研究院之IOS&Android收集Log文件(六十二)
开发项目的时候尤其在处理与服务器交互这块,如果服务端程序看不到客户端请求的Log信息,那么无法修改BUG.在Windows上Unity会自动讲Log文件写入本地,但是在IOS和Android上确没有这 ...
- 自定义socket 模拟B/S服务端
目录 通过什么实现连接? B/S 客户端与服务端交互过程 socket server端 python代码 (静态html反馈) socket server端 python代码 (动态html反馈) 小 ...
- IOS正则表达式 (身份证、电话、汉字等常用条件筛选)
下面的正则列表 替换对应的正则规则 那个字符串就可以了 例如: //正则规则 NSString *regex = @"^((13[0-9])|(147)|(17[0-9])|(15[^ ...
- scrapy框架中Item Pipeline用法
scrapy框架中item pipeline用法 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pyt ...