一、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函数连接到一个正在等待连接的命名管道上。
我的总结:
这些函数都是免杀的基础,但要想真正玩转它们,需要深入理解它们的原理,并结合具体的场景进行灵活运用。不要死记硬背,要多思考,多实践,才能真正掌握免杀的精髓。记住,免杀不是一门技术,而是一门艺术!
黑客/网络安全学习包
资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
3.SRC&黑客文籍
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单
**
**
6.面试题合集
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
更多内容为防止和谐,可以扫描获取~
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************