3环断链以及断链后的检测方法

文章讲述了如何通过3环断链技术隐藏dll注入过程中的痕迹,利用TEB和PEB结构,避免在目标PEB中留下可见的线索。同时提及了可能的破解方法,如直接内存搜索和检查PE指纹。
摘要由CSDN通过智能技术生成

3环断链以及断链后的方法

我们在3环注入代码很多时候会选择注入dll,因为纯粹的硬编码不方便写出大量功能,而且不容易维护所以很多时候我们会通过各种方式让我们的dll注入到目标地址空间中,其中有一些方式可以不需要我们自己对dll处理重定位而是借助pe加载器让系统帮助我们处理重定位,但是就会导致我们的dll会在目标的peb中可见,也就是留下了痕迹。

这时就可以通过3环断链的方式隐藏这一部分痕迹。

三环中fs:[0]指向的是teb结构体,这个结构体描述了当前线程的信息

typedef struct _TEB {
  PVOID Reserved1[12];
  PPEB  ProcessEnvironmentBlock;
  PVOID Reserved2[399];
  BYTE  Reserved3[1952];
  PVOID TlsSlots[64];
  BYTE  Reserved4[8];
  PVOID Reserved5[26];
  PVOID ReservedForOle;
  PVOID Reserved6[4];
  PVOID TlsExpansionSlots;
} TEB, *PTEB;

他的ProcessEnvironmentBlock成员指向了PEB

typedef struct _PEB {
  BYTE                          Reserved1[2];
  BYTE                          BeingDebugged;
  BYTE                          Reserved2[1];
  PVOID                         Reserved3[2];
  PPEB_LDR_DATA                 Ldr;
  PRTL_USER_PROCESS_PARAMETERS  ProcessParameters;
  PVOID                         Reserved4[3];
  PVOID                         AtlThunkSListPtr;
  PVOID                         Reserved5;
  ULONG                         Reserved6;
  PVOID                         Reserved7;
  ULONG                         Reserved8;
  ULONG                         AtlThunkSListPtr32;
  PVOID                         Reserved9[45];
  BYTE                          Reserved10[96];
  PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
  BYTE                          Reserved11[128];
  PVOID                         Reserved12[1];
  ULONG                         SessionId;
} PEB, *PPEB;

peb的ldr则是指向 PEB_LDR_DATA 结构的指针(这是一个链表),该结构包含有关进程已加载模块的信息。

代码如下:这是我之前写的一个辅助软件时写的dll架子,在初始化的时候我们可以断链出来。
在这里插入图片描述
不过这样的隐藏方式也可以通过很多其他的方法导致我们的隐藏失效。
比如说,我不通过模块链表来检测而是直接搜索内存找到有pe指纹的位置然后根据pe结构查看当前的模块名字,不是我自己的那就说明有人注入了模块进来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值