windows api隐藏结合进程篡改

admin 2023年3月4日02:07:52评论27 views字数 1772阅读5分54秒阅读模式
windows api隐藏结合进程篡改
泛星安全团队
windows api隐藏结合进程篡改

泛星安全团队第9篇文章




声明

文章内容为学习记录,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。



windows api隐藏结合进程篡改
工具、漏洞知识点总结
windows api隐藏结合进程篡改


Run PE技术、windows敏感api隐藏



windows api隐藏结合进程篡改
实现

一、Run PE技术的实现

  • 图例

windows api隐藏结合进程篡改

  • 整个流程如上图,实际是将PEB中ImagebaseAddress的位置从原进程替换为了恶意进程,原进程的映像基址为0x400000,我们新挂载的恶意基址为0xA00000,只需要在整个进程运行起来之前替换ImagebaseAddress的基址为恶意程序的基址即可。

  • 实现:
    windows api隐藏结合进程篡改

  • 使用CreateProcessA函数并设置CREATE_SUSPENDED标志,能够将任意程序执行且挂载成一个进程,此时这个进程是被暂停住的;当进程被暂停时,此时的main thread上的eip是指向thread的共同路由函数NtDLL!RtlUserThreadStart的,这个函数的第一个参数放置在eax寄存器中,eax存储的是thread完成初始化后应该返回那里继续执行的地址,第二个参数放在ebx中,ebx中存储了该进程的peb块的地址。

  • 然后使用GetThreadContext函数取出当前暂停的GoogleUpdate.exe进程的main thread寄存器的信息,然后尝试用VirtualAllocEx函数在GoogleUpdate.exe进程的imagebase上申请一块sizeofimage大小的空间,让我们能把恶意进程映射到此空间中。

  • 再使用WriteProcessMemory模仿进行进程映射,将DOS、NT headers和section headers都复制过去,再通过for循环将每一块区段映射到进程正确的地址中。

  • 因为ebx中存储的是当前进程的PEB块,那么可以使用WriteProcessMemory去写入PEB + 8(32位下,peb->imagebaseAddress的偏移为offset + 8),完成将GoogleUpdate.exe的模块修改为恶意进程的模块;eax存储的是thread完成初始化后应该返回那里继续执行的地址,我们将eax的值修改为恶意程序的入口地址即可。

  • 最后使用SetThreadContext函数将我们刚刚对寄存器所有的修改写入到进程中去,再使用ResumeThread函数恢复程序运行。

二、结合隐藏敏感api调用

  • 流程
    windows api隐藏结合进程篡改

  • 具体可参考之前写的《使用asm来进行常见免杀的tips》

windows api隐藏结合进程篡改

  • 核心函数
    windows api隐藏结合进程篡改

windows api隐藏结合进程篡改

  • 这里替换的函数有:

    VirtualAlloc
    VirtualProtect
    EnumSystemCodePagesW
    WriteProcessMemory
    EnumWindowStationsW
    EnumLanguageGroupLocalesW
    VirtualAllocEx

  • 替换敏感函数后
    windows api隐藏结合进程篡改
    windows api隐藏结合进程篡改

  • 确认以上函数均不在iat表中
    windows api隐藏结合进程篡改
    windows api隐藏结合进程篡改

三、测试上线

  • 将googleupdate.exe程序和恶意程序拷贝好,运行编译好的恶意程序,发现启动的进程为googleupdate.exe,且通过process hacker观察googleupdate.exe证书签名均有效。
    windows api隐藏结合进程篡改
    windows api隐藏结合进程篡改

  • 同样,此时的恶意进程id为googleupdate.exe的进程id
    windows api隐藏结合进程篡改

四、扩展进阶

  • 扩展思路:恶意程序启动完毕后,先会去找目标机器上那些存在的白进程谷歌、微信、qq等,然后在使用内核层的socket下载配置好的恶意shellcode进行加载,加载完毕后自删除。

  • 笔者这边测试为将shellcode进行xor和base64加密,加密后放入config.ini文件,然后写一个读取函数将config.ini中的加密shellcode读取至内存进行加载即可。

效果如下(测试时间为2022年8月27日):
windows api隐藏结合进程篡改

windows api隐藏结合进程篡改

  • 结合隐藏流量的特征(测试时间2022年8月29日):
    windows api隐藏结合进程篡改
    windows api隐藏结合进程篡改
    windows api隐藏结合进程篡改

参考:https://github.com/aaaddress1/Windows-APT-Warfare/tree/main/source/chapter%2302/RunPE


往期回顾

从sql注入到内网

HackTheBox:10.10.10.180靶机记录

vulnhub:CHILL HACK靶机记录

回炉重造 | 精通php反序列化之道


·END·
 


泛星安全团队

windows api隐藏结合进程篡改


原文始发于微信公众号(泛星安全团队):windows api隐藏结合进程篡改

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月4日02:07:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   windows api隐藏结合进程篡改https://cn-sec.com/archives/1263606.html

发表评论

匿名网友 填写信息