免杀常用函数深度解剖,从零基础到精通,收藏这篇就够了!

一、VirtualAlloc:别再NULL了,手动“圈地”才是王道?

VirtualAlloc,这货简直是Windows API里的“老黄牛”,干啥都要用到它。原型是这样的:

LPVOID VirtualAlloc{
    LPVOID lpAddress,        // 想在哪儿“圈地”?
    DWORD dwSize,            // 圈多大?
    DWORD flAllocationType,  // “圈地”干啥用?
    DWORD flProtect        // “地”上盖啥,安全不?
};

先说lpAddress,官方解释是“你想分配的内存地址”。但说实话,大部分时候我们都直接填NULL,让系统自己找地方。为啥?因为自己指定地址太麻烦了,还得查VAD树,看看这块地儿是不是已经被别人占了。

但!是!

如果你想玩点高级的,比如绕过某些反作弊或者沙箱,手动指定地址可能就是个突破口。想象一下,如果我知道某个关键DLL会加载到固定地址,那我就可以提前把那块地儿“圈”下来,然后…嘿嘿嘿。

dwSize就是你“圈”多大的地儿,必须是4KB(一个物理页)的整数倍。记住,Windows是以页为单位管理内存的,别想搞什么零碎的。

flAllocationType,这个决定了你“圈地”的用途。MEM_COMMIT是真金白银地分配物理页,而MEM_RESERVE只是先占个坑,不掏钱。

flProtect,这块“地”的安全属性,比如可读可写,只读等等。这个直接关系到你能不能顺利执行shellcode,别大意。

返回值? 成功了给你块“地”,失败了就给你个NULL,然后哭去吧。

我的吐槽: VirtualAlloc这玩意儿,文档写得跟裹脚布一样。其实最关键的就是理解内存的分配和保护机制。别光想着NULL大法好,手动指定地址,玩出点花样来,才是真本事。

二、memcpy:数据搬运工,但姿势很重要!

memcpy,简单粗暴的数据复制函数。原型:

void *memcpy(void *str1, const void *str2, size_t n)

三个参数:

  • str1: 目标地址,数据往哪儿搬。
  • str2: 源地址,数据从哪儿来。
  • n: 搬多少字节。

返回值? 目标地址str1

我的理解: memcpy就像个辛勤的搬运工,把数据从一个地方搬到另一个地方。但是,在免杀的语境下,搬运的姿势非常重要!

  • 分段复制: 不要一次性复制一大块数据,可以分成小块,多次复制。这样可以绕过一些基于流量特征的检测。
  • 异或加密: 在复制的过程中,对数据进行异或加密。目标地址的数据与秘钥异或,源地址的数据也与密钥异或,完成数据搬运,可以对抗静态分析。
  • 配合VirtualAlloc: 先用VirtualAlloc分配一块内存,然后用memcpy把shellcode搬进去。

别以为memcpy很简单,用好了也能秀你一脸!

三、CreateThread:多线程?不存在的,我要的是“隐身”!

CreateThread,创建线程的函数。原型:

HANDLE CreateThread(
    LPSECURITY_ATTRIBUTES lpThreadAttributes,
    DWORD dwStackSize,
    LPTHREAD_START_ROUTINE lpStartAddress,
    LPVOID lpParameter,
    DWORD dwCreationFlags,
    LPDWORD lpThreadID
);

参数一堆,但最关键的是lpStartAddress,线程的入口点,也就是你的shellcode要开始执行的地方。

我的看法: CreateThread在免杀中,不仅仅是创建一个线程那么简单。它更像是一个“隐身术”。

  • 挂起线程: 通过dwCreationFlags参数,可以先挂起线程,然后再手动恢复。这样可以绕过一些基于线程创建的检测。
  • 修改线程上下文: 在线程创建之后,可以修改线程的上下文,比如修改EIP,让线程从一个意想不到的地方开始执行。
  • 线程池: 使用线程池技术,可以减少线程创建的开销,同时也可以更好地隐藏你的恶意行为。

记住,线程不仅仅是用来并发执行任务的,它也是一个很好的“障眼法”。

四、WaitForSingleObject:我不是在等待,我只是在“伪装”!

WaitForSingleObject,等待某个内核对象变为已通知状态。原型:

DWORD WaitForSingleObject(
    HANDLE hHandle,
    DWORD dwMilliseconds
);

hHandle是你要等待的内核对象句柄,dwMilliseconds是等待的超时时间。

我的理解: WaitForSingleObject在免杀中,最大的作用就是“伪装”。

  • 模拟正常行为: 很多正常的程序也会使用WaitForSingleObject来等待某个事件的发生。我们可以利用这一点,让我们的恶意代码看起来更像一个正常的程序。
  • 延时执行: 通过设置一个较长的超时时间,可以实现延时执行的效果。这样可以绕过一些基于时间的检测。
  • 对抗动态分析: 动态分析工具通常会hook WaitForSingleObject函数,我们可以通过一些手段来绕过这些hook。

等待也是一种策略,用好了可以迷惑你的敌人。

五、CopyMemory:memcpy的“马甲”?

CopyMemory,这玩意儿和memcpy几乎一样,都是用来复制内存的。

CopyMemory(shellcode, buf, shellcode_size);

我的吐槽: 微软你搞这么多重复的函数干啥?难道是为了增加我们的学习成本吗?

我的建议: 既然功能一样,那就换着用呗。说不定能绕过一些简单的检测。

六、CreateNamedPipe:偷偷摸摸的“地下通道”

CreateNamedPipe,创建命名管道。这玩意儿就像一个“地下通道”,可以在不同的进程之间传递数据。

HANDLE WINAPI CreateNamedPipe(
    LPCTSTR lpName,
    DWORD dwOpenMode,
    DWORD dwPipeMode,
    DWORD nMaxInstances,
    DWORD nOutBufferSize,
    DWORD nInBufferSize,
    DWORD nDefaultTimeOut,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

我的理解: 在免杀中,命名管道可以用来实现:

  • 进程间通信: 可以把shellcode放在一个进程中,然后通过命名管道传递给另一个进程执行。
  • 隐藏通信: 命名管道的通信是基于文件的,可以隐藏在文件系统中,不容易被发现。
  • 绕过防火墙: 某些防火墙可能不会检测命名管道的流量,可以利用这一点进行通信。

命名管道,一个隐蔽而强大的通信方式。

七、WaitNamedPipe:排队等候的“接头人”

WaitNamedPipe,等待命名管道可用。

BOOL WINAPI WaitNamedPipe(
    LPCTSTR lpNamedPipeName,
    DWORD nTimeOut
);

我的理解: 客户端在连接命名管道之前,需要先用WaitNamedPipe等待服务端创建好命名管道。这就像两个特工接头,客户端需要先确认接头地点是否安全。

八、CreateFile:伪装成“良民”的连接请求

CreateFile,创建或打开文件。

我的理解: 客户端进程使用CreateFile函数连接到一个正在等待连接的命名管道上。

我的总结:

这些函数都是免杀的基础,但要想真正玩转它们,需要深入理解它们的原理,并结合具体的场景进行灵活运用。不要死记硬背,要多思考,多实践,才能真正掌握免杀的精髓。记住,免杀不是一门技术,而是一门艺术!

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值