搜索
查看: 2594|回复: 1

EvilAbigail自动Linux攻击

[复制链接]

57

主题

116

帖子

294

积分

中级会员

Rank: 3Rank: 3

积分
294
QQ
发表于 2018-9-24 14:04:34 | 显示全部楼层 |阅读模式

加密根fs攻击

场景

左边的笔记本电脑关机,FDE打开

攻击者从USB/CD/网络引导

脚本执行和后门initrd

用户返回到膝上电脑,启动正常

后门initrd加载:

所以文件到/sbin/init中,在启动时抛出一个shell

(Fedora/CentOS) LD_PRELOAD。

支持发行版

Ubuntu 14.04.3

Debian 8.2.0

卡莉2.0

Fedora 23

CentOS 7

电流特性

python/meterpreter/reverse_https编译时间LHOST

存储在meterpreter环境中的FDE解密密码(getenv密码)

有效载荷

选择python/meterpreter/reverse_https Metasploit有效负载是因为它比linux/*/meterpreter/reverse_tcp有效负载更独立于平台。python似乎默认安装在所有测试系统上。

默认情况下,有效负载是在编译时生成的,并以#define的形式导入.c文件。这使迭代更容易,但是保存有效负载并手动插入它并不难。

基于Debian的(Debian, Ubuntu, Kali)

把壳

基于Debian的系统(Debian, Ubuntu等)使用标准gzip压缩的cpio映像作为initramfs。这包含了默认的/init脚本,该脚本在准备系统进行全启动时运行。这包括询问用户的密码和安装加密的根fs。

为了删除我们的.,我们等待直到根文件系统被挂载(所以在用户被要求输入密码之后),并将我们的.复制到/dev文件系统。之所以选择/dev文件系统,是因为它可以在rootfs切换之前访问,而且它是基于ram的挂载。这意味着。不会碰到圆盘。

为了实际使用drop .so,我们在switch_root调用中使用LD_PRELOAD环境变量。该变量被传递给所有子可执行文件,因此,最终的/sbin/init脚本将加载模块。为了保持相对安静,我们检查是否加载到/sbin/init中,如果是这样,我们卸载LD_PRELOAD变量并删除。如果我们想要挂钩特定的应用程序,这个功能可以很容易地被禁用。

为了强制执行。在默认情况下,在加载之后,我们使用gcc标志-Wl,-init, shell,其中shell是我们的主要函数。它指定了我们想要在。的init中调用的函数。可以把它看作是Windows的DllMain的一个类比。

密码窃取

init脚本负责向用户询问密码和安装根文件系统的部分如下:

对我们来说,重要的部分是将$cryptkeyscript的输出通过管道传输到$cryptcreate中。$cryptkeyscript是密码询问器,$cryptcreate是磁盘挂载器。这管子使我们很容易受到攻击。我们插入以下代码,管道将写入密码,直到我们的。

(读P;echo -ne \\\\\\\\ \\x00$P >> /OUR.SO;echo $ P - n)

这将把密码读入变量$P中,并将其写到.so末尾并再次回显。对于$cryptkeyscript和$cryptcreate来说,这段代码是透明的,但是它将具有删除密码的站点效果。我们使用\\\\\\\\ \\\\\\\\x00来将一个空字节(考虑到shell转义的许多级别)放在密码前面。这使我们的。to read the password back变得容易得多,因为它只需要从自己的末尾向后读取,直到看到一个空字节。

为了向攻击者提供这个密码,它被用作有效负载调用中的环境变量。这意味着攻击者可以使用meterpreter命令getenv密码来检索密码。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

57

主题

116

帖子

294

积分

中级会员

Rank: 3Rank: 3

积分
294
QQ
 楼主| 发表于 2018-9-24 14:08:30 | 显示全部楼层
漏掉一张图片信息、补充图片信息

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表