跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

如何使用dlinject将一个代码库实时注入到Linux进程中

精选回复

发布于

如何使用dlinject将一个代码库实时注入到Linux进程中

62e72c7dd93ba.jpg

关于dlinject

dlinject是一款针对Linux进程安全的注入测试工具,在该工具的帮助下,广大研究人员可以在不使用ptrace的情况下,轻松向正在运行的Linux进程中注入一个共享代码库(比如说任意代码)。之所以开发该工具,是因为目前社区有非常多的反ptrace技术,而dlinject的功能并不基于ptrace实现,因此渗透测试的效果会更好。

工具运行机制

1、该工具首先会向目标进程发送终止运行的信号,并定位_dl_open()方法。接下来,该工具将会通过/proc/[pid]/syscall获取RIT和RSP;

2、此时,工具将会利用/proc/[pid]/mem对部分堆栈数据 以及需要使用Shellcode重写的代码进行备份;

3、生成主要和次要Shellcode缓冲区;

4、工具会通过写入/proc/[pid]/mem将第一部分Shellcode代码注入到RIP;

5、第一部分Shellcode会做下列三件事情:将常见注册表项注入到堆栈;通过mmap()加载第二部分Shellcode;跳转到第二部分Shellcode;

6、第二部分Shellcode会做下列几件事情:将备份的堆栈信息和程序代码恢复成原始状态;调用_dl_open()以加载指定的代码库,所有的构造器都会正常加载和执行;还原注册表状态和堆栈状态,重新回到SIGSTOP设置的原始状态;

工具下载

该工具基于Python开发,因此广大研究人员首先需要在本地设备上安装并配置好Python环境。

接下来,我们可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/DavidBuchanan314/dlinject.git

工具使用

1657294602_62c84f0ad5c4a36baedfa.png!sma

参数解释

pid:待注入目标进程的进程ID;

/path/to/lib.so:需要注入(加载)的共享库路径,必须和目标进程的cwd关联;

-h, --help:显示工具帮助信息和退出;

--stopmethod {sigstop,cgroup_freeze,none}:设置在Shellcode执行之前终止目标进程,设置SIGSTOP(默认)可能会有一些副作用,而cgroup_freeze则需要root权限;

工具演示视频

演示视频:【点我观看】

许可证协议

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

项目地址

dlinject:【GitHub传送门】

参考资料

https://github.com/AonCyberLabs/Cexigua

https://github.com/gaffe23/linux-inject

https://www.aldeid.com/wiki/Ptrace-anti-debugging

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。