反调试之反制HVV红队

  • A+
所属分类:安全文章
前言


    简单分享一个通过TLS反调试来反制红队,当红队试图调试的话,则会成功调用我们的shellcode,直接反打红队。

    (PS:凭什么蓝队就要挨打)

        源码:关注本公众号回复 7474 即可获取


1.

    TLS有一个特点,就是在程序EP执行之前就运行。那根据这一特性,就可以达到目的。


2.

    TLS调用过程分析:

#pragma comment(linker,"/INCLUDE:__tls_used");//声明TLS
#pragma data_seg (".CRT$XLB") //注册PIMAGE_TLS_CALLBACK _tls_callback =  我们的回调函数;#pragma data_seg ()
//回调函数原型void NTAPI __stdcall TLS_CALLBACK(PVOID DllHandle, DWORD dwReason, PVOID Reserved);
    根据上方代码,其实简单说,TLS_CALLBACK这个函数在程序执行之前就运行了,这样解释起来,就比较通俗易懂了吧

    在TLS_CALLBACK的第二个参数dwReason则是状态,由此我们可以根据判断程序状态来决定是否执行,可以看下方的宏定义:



3.

    正常代码分析:在下方代码中,可以看到TLS的回调函数test是比main函数更加提前执行的。当进程创建时,就执行了test函数

    



4.

      反制红队:在下图中,我首先准备了一个shellcode(弹窗),当程序创建时,则先调用我们的shellcode

    接下来扔到OD里看一下:

     可以看到,程序在进程创建时,就首先调用了我们的shellcode。当shellcode执行完才会载入程序。






本文始发于微信公众号(连接世界的暗影):反调试之反制HVV红队

发表评论