热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

干货:攻防Linux新技术

任何恶意软件研究的重点一般都是预期攻击可能针对的地方或它已经在攻击的地方,从而制定和实施新的防御技术。通过逆向工程了一些最近的Linux恶意软件样本,我发现了一个有趣的新技术,我认为它很重要所以想和大

http://p4.qhimg.com/t013dab8433c94edb3f.jpg

任何恶意软件研究的重点一般都是预期攻击可能针对的地方或它已经在攻击的地方,从而制定和实施新的防御技术。通过逆向工程了一些最近的Linux恶意软件样本,我发现了一个有趣的新技术,我认为它很重要所以想和大家一起分享。一个攻击者已经登录到一个蜜罐并尝试下载我以前从未见过的文件。加载文件到 IDA Pro ,得到提示“SHT table size or offset is invalid. Continue? ” 这是对于可执行文件正常的,所以没什么好担心的。然而,收到此消息之后,我收到一个没见过的新警告;

http://p5.qhimg.com/t01b338307c10df6934.png

这引起了Linux的可执行文件ELF在IDA Pro中装载失败——阻止我加载二进制文件进行分析。使用 ELFTemplate从 010Editor中打开该文件之后,我们很容易看到发生了什么事情;

http://p3.qhimg.com/t018e88e97eb828ff05.png

其中一个程序的头文件指向实际的文件之外。这很容易解决,只需归零这一部分从而允许IDA Pro加载样例。有趣的是,事实证明这是一个无效的二进制文件,有部分错位了因为该文件被截短过。然而,此错误信息引导我下载路径并试图重建这个错误文件——这很简单。具体步骤使用十六进制编辑器比较容易实现;


  • 从ELF文件头部脱去所有部分


  • 找到一个ELF文件不允许加载的程序头


  • 使这个程序头这部分发生偏移指向文件之外


只要找不到其余的部分文件头,IDA Pro就将无法加载。把个过程编成脚本之后,我决定使用其他反汇编器和调试器测试几个方案。 Radare(R2),Hopper和lldb处理的二进制文件完全没有问题—— 但是GDB不认文件格式;

http://p0.qhimg.com/t016f7be1dceb58e01f.png

然后进一步分析,我想看看除了作为一种反汇编技术,如果也作为一种抗分析抗模糊技术能不能用。当时的想法是,如果我用几个反汇编程序就这么容易找到这个问题所在,那么可能一些防病毒应用程序可能在自己的解析引擎中有同样的问题。

在这里我从Linux / XorDDos家族抓了检测到的相对完善恶意软件样本;

 

http://p9.qhimg.com/t01284460ad7708c13c.png

https://www.virustotal.com/en/file/0a9e6adcd53be776568f46c3f98e27b6869f63f9c356468f0d19f46be151c01a/analysis/

他们刚刚发现,9种不同的引擎(2种出自同一家公司?所以我应该说是10种)没能够检测到同样的恶意软件。这我很感兴趣因为我在Linux恶意软件方面是新人,我会假设,这些引擎很容易地检测到恶意软件,这样一个简单的改变不会是如此简单的逃逸技术。

看起来攻击反汇编程序和引擎监制太容易了—— 所以我想看看整个样例库,看看是否有人偶然发现并实施这项技术。使用如下相当简单的 YARA规则,我能找到6000个使用这一方法的样例。幸运的是,这些样例中,几乎每一个都是用来保护它自己的代码的商用Android保护壳。

虽然我们还没有看到任何在外面使用这种技术的恶意行为,但是在外面可能有许多其他类似的招数。这是一个良好的开端,寻找看看可能被恶意隐藏的ELF文件并加以分析,最后最好是用脚本发布出来,人们就能够监测这种技术并在未来使用类似的技术。

在之前发布的文章中,我已经通知没能检测到略作修改的恶意软件的Hex-Rays和那10个引擎。生成和修复这些修改后的二进制文件的脚本代码可以在github找到。

YARA规则:

http://p7.qhimg.com/t018878f3f5fef9e40d.png


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • linux qt打开常用文件格式,设置Linux Qt文件默认打开方式为QtCreator
    Linux自定义文件打开方式也可参照文本抱歉,本文前段时间写的ubuntu下的Qt工程文件默认打开方式是不好用的,因为其他的文本文件也会受到影响,强迫症患者,每次打开Qt工程都是先 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在Linux中执行.sh脚本时出现/bin/sh^M: bad interpreter: No such file or directory异常的原因分析,并提供了两种解决方法:在Windows下进行编码格式转换,或在Linux中修改文件格式和执行权限。具体操作步骤也在摘要中给出。 ... [详细]
  • 本文介绍了常用的编辑器快捷键,包括快速转换编辑器、浏览选项卡、提取本地变量和方法、编辑器窗口最大化等功能。通过使用这些快捷键,可以提高编辑器的使用效率,减少复杂度,并提升代码的可测试性。 ... [详细]
  • 本文介绍了使用Rust语言编写、保存和编译程序的简单步骤。首先,打开记事本文件并编写程序代码,然后将代码保存到一个以.rs为扩展名的文件中。接下来,使用rustc命令来编译运行程序。最后,通过命令行运行编译后的程序,得到输出结果。如果遇到编译错误,可以下载Build Tools for Visual Studio 2017来解决。 ... [详细]
author-avatar
youth冰点
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有