注册表Run权限维持

极客

本文目录导读:

注册表Run权限维持

  1. 一开始,我也是个“莽撞人”
  2. 权限!权限!这才是灵魂所在啊!
  3. 免杀与伪装:给“Run”键穿上迷彩服
  4. 细节决定成败:别让“Run”出卖了你
  5. 尾声:正义与邪恶的“盾”与“矛”

注册表Run权限维持:我的“隐形斗篷”与“反侦察”攻防实录

嘿,各位老伙计们,今天咱们不聊那些虚头巴脑的“威胁情报”,也不谈那些高大上的“APT攻击”理论,咱们就坐下来,泡杯茶,像两个老手艺人交流“独门绝技”一样,唠唠我最近折腾的那个注册表Run权限维持,说真的,这玩意儿,玩好了是“隐身衣”,玩砸了那就是“自掘坟墓”啊!你是不是也这么觉得?

一开始,我也是个“莽撞人”

唉,说实话,刚开始搞这个东西的时候,我真是头铁,以为注册表Run权限维持不就是加个键值那么简单?打开regedit,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,把木马路径一填,重启一下,哎,它不就自己跑起来了吗?哼!太天真了!

结果呢?第二天一去客户现场,好家伙,360、火绒、Windows Defender,那是“全家桶”啊!查杀日志里写得明明白白,我的“小马”直接被大卸八块,连骨头渣子都不剩,当时那个尴尬啊,真想找个地缝钻进去!你说,这种毫无技术含量的注册表Run权限维持,不是去给杀软送“人头”是什么?我当时就琢磨,难道这行业就这水平?不行,我必须得搞点有深度、有权限、能“苟”住的东西!

权限!权限!这才是灵魂所在啊!

后来,我才慢慢悟出个道理:同样是注册表Run权限维持,差距咋就这么大呢?关键就在权限!对了,就是那个“RUN”键的权限控制(ACL)。 你想啊,默认情况下,普通用户对HKLM\...\Run是有“写入”权限的,那杀软也能写(拦截)啊,我的思路就得反着来:我要做的,是往注册表Run权限维持的“上层建筑”里去渗透,我盯上的是HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,或者更狠一点,直接去操纵HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute

最精髓的权限维持,不是在于你写哪,而是在于你怎么改权限! 我呢,就学着去修改Run键的注册表项安全属性(DACL),直接把那些杀软进程的权限给“禁掉”(Deny),让它们没法读这个键值的内容,嘿嘿,这样一来,哪怕我的路径就大大方方躺在那里,你就是读不出来,气不气人?!这才是注册表Run权限维持的高级玩法嘛!但是我必须得说,这招必须得躲过驱动级的对抗,否则就是白搭,你说是不是这个理儿?

免杀与伪装:给“Run”键穿上迷彩服

当然咯,光有权限还不够,路径写得跟个“裸奔”的似的,肯定不行,我后来学聪明了,咱们得“拟人化”呀,你说一个正常的软件,谁会把自己的名字起成svch0st.exe或者run64.dll?这不此地无银三百两嘛!

我的做法通常是结合注册表Run权限维持,搞一个“二重唱”: 第一重,是在Run键里放一个“看似人畜无害”的加载器(Loader),名字得取得特正经,比如MicrosoftUpdateCore(模仿微软更新服务),注意,这里千万别直接指向恶意DLL,而是指向一个白文件,比如rundll32.exe,然后通过rundll32去加载我那个藏在%APPDATA%或者图片文件尾部的恶意DLL,这招叫“白加黑”,现在很多EDR都盯着呢,但对付传统杀软还是有点效果的。 第二重,也是最要命的,我会把真正的恶意负载(Payload)通过加密数据流的方式,塞到注册表Run权限维持附近的其他正常键值里,Installed\Components),只有在日志启动时才会被这个Loaderl通过计算解密出来,这样一来,你就算抓到了我的Loader,也拿不到后面的真身,嘿嘿,这感觉就像是把宝贝藏在了最显眼的地板砖底下,却让所有人都以为你把它埋在了后院,你说妙不妙?

细节决定成败:别让“Run”出卖了你

我跟你们讲,注册表Run权限维持这个活儿,最怕的是什么?是“留痕”! 你以为你删了就没事了?注册表自带的事务日志(Transactional Log)呢?还有USN日志呢?万一蓝屏了,这些日志文件里全是你操作的时间戳!我现在每做一次注册表Run权限维持操作,都会强制使用NtSetInformationKey清除掉最后的写时间,并且尽量不使用regedit界面操作,而是直接撸代码,用系统底层API去改,因为regedit会在Recent里面留下记录,那就完犊子了!

还有啊,各位,一定要注意冗余!不能只在一个点做注册表Run权限维持,就比如我之前帮朋友(你懂的),我就会在Run留一个计划任务,在Startup文件夹留一个备用启动项(虽然现在很多人不看这里了,但却是很多运维的盲区),就算你的Run权限被揪出来删除了,明天开机,计划任务又会把权限重新写回去,哎呀,这种“死缠烂打”的感觉,是不是很让人抓狂?说实话,我自己都感觉有点像打不死的小强了。

尾声:正义与邪恶的“盾”与“矛”

文章写到这儿,说句掏心窝子的话,我现在分享这些注册表Run权限维持的思路,可不是教唆大家去做坏事哈!而是提醒咱们这些搞防守的蓝队兄弟们,别总觉得用自动化的HIPS一拉黑就万事大吉了,真正的“苟活”大师,他是懂得在“注册表权限”的底层逻辑里跟你玩猫腻的。

如果哪天你巡逻的时候,发现某台服务器的HKLM\...\Run键的权限居然变成了Everyone,或者说TrustedInstaller权限被降级了,那你可得小心了!指不定,就有个像我这样喜欢瞎琢磨的家伙,正在暗处盯着你,心里偷着乐呢!好了,今天这波操作心得就聊到这,我得赶紧去给自己的实验机改个权限,免得被人反“维持”了去!你说对吧?嘿嘿!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]