关于DDexec

DDexec是一种能够在Linux上使用无文件技术和隐秘技术运行二进制文件的方法,它可以使用dd工具来将Shell替换为其他进程。

众所周知,在Linux上运行一个程序,则这个程序必须以一个文件的形式存在,而且必须能够通过文件系统层次结构并以某种方式访问到它,这也是execve()的工作机制。这样的一种文件可能位于磁盘中或RAM(tmpfs、memfd)中,但我们肯定需要一个文件路径。这种机制不仅使得我们可以轻松控制Linux系统中运行的内容,而且还可以轻松检测到安全威胁或攻击者植入的恶意程序,甚至还可以阻止攻击者尝试执行他们的任何工具,比如说不允许未经授权的用户将可执行文件放在任何地方。

但是,DDexec的出现改变了这种情况。

技术机制

1、大多数的Shell解释器都允许创建文件描述符,而这些文件描述符随后将被子进程继承。我们可以创建一个fd,并指向Shell(带有写入权限)的mem文件,此时子进程将使用这个fd并修改Shell的内存;

2、ASLR不会成为“拦路虎”,因为我们可以检查Shell的maps文件或其他信息来获取关于进程地址空间的相关信息;

3、使用lseek()来对文件进行查询,在Shell的帮助下,我们可以使用dd工具轻松实现;

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/arget13/DDexec.git

依赖组件

该脚本依赖下列组件实现其功能:

dd

bash | zsh | ash (busybox)

head

tail

cut

grep

od

readlink

wc

tr

base64

工具使用

将ddexec.sh注入到需要运行的Base64源代码中,注意不要有换行符出现。脚本的参数也就是程序的运行参数,以“argv[0]”开始。

下面给出的是一个使用样例:

base64 -w0 /bin/ls | bash ddexec.sh /bin/ls -lA

项目中还提供了一个ddsc.sh脚本,该脚本允许我们直接运行二进制代码,下面给出的是一段“Hello world”的Shellcode:

bash ddsc.sh -x <<< "4831c0fec089c7488d3510000000ba0c0000000f054831c089c7b03c0f0548656c6c6f20776f726c640a00"

或者:

bash ddsc.sh < <(xxd -ps -r <<< "4831c0fec089c7488d3510000000ba0c0000000f054831c089c7b03c0f0548656c6c6f20776f726c640a00")

没错,这种方法也适用于Meterpreter。

该工具目前已经在Debian、Alpine和Arch平台上进行过测试,支持的Shell包括Bash、zsh和ash,且支持x86_64和aarch64(arm64)架构。

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可证协议。

项目地址

DDexec:【GitHub传送门】

参考资料

Useless Use of Cat Award

SEKTOR7 Research

MDwiki

https://github.com/carlospolop

HackTricks - HackTricks

GitHub - carlospolop/PEASS-ng: PEASS - Privilege Escalation Awesome Scripts SUITE (with colors)

RootedCON

如何使用DDexec在Linux上隐蔽运行二进制文件相关推荐

  1. linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间

    1 linux上根据运行程序的进程号,查看程序所在的绝对路径 1.如下,我想查看python 25_run_train_tripletloss_sknet_8w_offline_c_plus.py 这 ...

  2. linux python3运行,将Python3安装到Linux上并运行

    将Python3安装到Linux上并运行 使用win10开发一个很好的python项目并把它部署到Linux中,有一个问题需要解决:如何在Linux中运行py文件? 以LunixCentOS7.x平台 ...

  3. 安卓游戏应用如何在linux上流畅运行

    卓懿移动应用兼容运行环境(以下简称"卓懿")突破了应用生态发展的传统思路,让成熟的商业应用和行业应用成为国产平台应用生态的一部分.卓懿集成了应用商城,能够解决用户的多样化需求,用户 ...

  4. 如何在linux上直接运行python程序

    如何在linux上直接运行python程序 一.前言 二.具体步骤 一.前言 个人主页: ζ小菜鸡 大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习如何在linux上直接运行python程序. 如果文章 ...

  5. 【GitHubDailyShare】在 Linux 上无缝运行 macOS 系统软件

    GitHub 上一个比较有意思的开源项目:darling,可让你在 Linux 上无缝运行 macOS 系统软件. 该工具主要具备以下几种特性: 1. 快速:无需添加任何硬件虚拟设备: 2. 免费:基 ...

  6. window下编辑的python文件复制到linux上,运行后出现/usr/bin/python3^M

    window下编辑的python文件复制到linux上,运行后出现 /usr/bin/python3^M: bad interpreter: No such file or directory 1.使 ...

  7. linux打的war包在linux上无法运行(一个奇葩事件,spring无法读取Properties)

    遇到这么个鬼事情, 项目环境:tomcat8 , jdk1.8 , maven 3.2.5 1.linux打的war包在linux上无法运行,在windows上能运行 2.windows打的war包在 ...

  8. 成功将用intelli idea 建立的项目打包成jar文件,并在Linux上成功运行

    将jar包直接复制到linux系统上,运行java命令或者scala命令 第二个包:建立两个 object文件,如图所示: 主类仍然选择: 然后再打包copy到linux中,运行两个类都能成功,如图所 ...

  9. 如何让 dotnetcore 在 Linux 上后台运行?

    咨询区 jjmcc: 我遇到了几个奇怪的问题不知道如何去解决,场景是这样的,我的开发环境是 windows,每次发布代码时我会使用 vs 的 publish 发布代码,然后将代码copy到 AWS E ...

最新文章

  1. Dynamics Ax 2012 – AIF Import CSV File
  2. JFreeChart应用实例-折线图
  3. 解决maven cannot change version of project facet dynamic web module to 3.0
  4. 可疑文件_Windows 10 Defender误删除了我的文件,用这个方法,轻松恢复
  5. 为什么需要这么多编程语言?
  6. python之路——网络编程
  7. linux date修改系统时间
  8. 使用FSO修改文件夹的名称
  9. stm32代码_MATLAB(STM32MATTARGET) 自动生成STM32工程代码
  10. 洛谷——P1000 超级玛丽游戏
  11. 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]
  12. 查看Tensorflow 是使用GPU or CPU运行
  13. ECSHOP 大商创 对接易支付接口
  14. Java多线程系列--【JUC锁08】-共享锁和ReentrantReadWriteLock
  15. 拼接大屏数据展示_大屏拼接可视化
  16. java版Spring Cloud+短视频带货 b2b2c多商户分布式微服务
  17. Android 下标圆点数字
  18. 怎么在unity中测试游戏_Unity中的性能基准测试:如何开始
  19. 7-4 sdust-Java-学生成绩读取与排序 (35分)CSDN-markdown编辑器
  20. odoo8 openerp 入门

热门文章

  1. 李宏毅机器学习 Regression
  2. 如何将kindle上的书导出成epub格式
  3. Daphne以10%的单利投资了100美元。也就是说,每一年的利润都是投资额的10%,即每年10美元:利息 = 0.10 * 原始存款而Cleo以5%的复利投资了100美元。也就是说,
  4. C语言实现一元多项式的加减运算
  5. SQL零基础入门学习(一)
  6. Windows 内网渗透之攻击域控
  7. [设计模式] 设计模式面面观(3):单件模式(Singletion)-创建型模式
  8. 设置大小合适的Win7休眠文件Hiberfil.SYS
  9. 11. 文件操作与模块
  10. Android中获取屏幕信息的几种方式