AMSI绕过立刻上手

极客

AMSI绕过立刻上手:老网工的私房笔记,看完你也能当十分钟“隐形人”

AMSI绕过立刻上手

嘿,各位老铁,我又来了!今儿不聊那些虚头巴脑的“理论架构”,咱就直接上家伙事儿,昨天群里有个兄弟私信我,说看了三天MSDN文档,结果一执行PowerShell脚本还是被Defender当场抓获,那叫一个憋屈,我一看就乐了,兄弟,你那是没找对门路啊!今儿这篇,咱们就聊聊AMSI绕过立刻上手的那些“野路子”,保你读完,心里那点小九九立马通透。

说实话,刚接触AMSI这玩意儿的时候,我也头大,你想想,你在目标机器上辛辛苦苦弹了个C2,结果正打算加载个mimikatz,啪,一道红光闪过,脚本被拦了,屏幕上那行“AMSI scan failed”跟特么嘲讽似的,那种心情,就好比你费劲撬开了保险柜,结果发现里面的现金全是练功券——白忙活一场!所以啊,AMSI绕过立刻上手,这六个字,简直是每一位红队同好的“必修课”,不夸张的说,这就是你从脚本小子进阶到“暗夜行者”的第一道坎。

那咱就开门见山,聊聊最基础但也最实用的招数,第一种,最“暴力”也最直接的,就是内存补丁,你可能会问:“哥,这玩意儿听着就得写C++,我只会Python咋整?”嘿,别慌!我之前也是这么想的,结果发现,这其实就那么几个API的事儿,说白了,就是找着AMSI那个关键的扫描函数,然后把它开头那几条指令改成直接返回“干净”的结果,这感觉像是啥呢?就像你给门口的保安递了包烟,他看你眼神都变“清澈”了,啥都不查就放你进去,关键点在于,你得找对那个偏移量,这玩意儿GitHub上一大把,但你得明白它为啥这么写,不然改完直接进程崩溃,那场面比被查杀还尴尬,哈哈。

不过呢,内存补丁再溜,碰到那种上了“硬件辅助”或者“行为监控”的硬茬子,有时也得抓瞎,这时候,咱就得换个思路,玩点“心理战”,第二个思路,咱们不跟AMSI硬刚,咱们它,你说你PowerShell直接执行一个明显的恶意脚本,它不拦你拦谁?咱得学会“拆解”,把一句话脚本拆成无数个变量拼接,或者用一些编码转换,甚至利用一些合法的、白名单里的API去间接拼装命令,这招我叫它“糖衣炮弹”,表面上人畜无害,实际上内里全是“花生米”,哎呀,讲到这儿我都有点口渴了,这种操作就跟你写作文似的,把“今天下雨”改成“天空的情绪有点低落”,意思一样,但格调高了不少,关键是,机器它看不懂这“潜台词”啊!

还有一种,是最近比较流行的,利用CLR(公共语言运行时)的“空子”,你想想,PS不行,咱换个赛道行不行?咱把C#的代码直接编译成DLL,然后在内存里加载它,AMSI一开始主要是盯着PowerShell和VBA等脚本语言的,对纯托管代码的检测,在某些老版本上,那真是“眼瞎”级别,这招数在红队圈里流传很久了,效果依然不错,它给你的感觉就是:你从正门走后门,后门没人看,你光明正大扛着麻袋就出来了,现在防御方也不是吃素的,各种钩子、ETW(事件追踪)都安排上了,但作为一名“手艺人”,咱不就是在这种猫鼠游戏里找到快感的吗?

等等,文章写到这儿,我可提醒你啊,千万别觉得看了我这几百字,就真的“立刻上手”天下无敌了,我这顶多算给你的“内功心法”开了个窍,真正的招式,你还得对着靶机去一遍遍试。AMSI绕过立刻上手,重点在“上手”,但更在于“理解”,你得知道AMSI它在乎什么,它扫描的时机和对象是什么,就像是追姑娘,你不能光会背情话,你得懂她为什么生气,对不对?一个道理嘛!

我得说点掏心窝子的话,这些技巧,说到底是为了“测试”和“防守”,咱们挖漏洞、破系统,最终目的还是为了让别人的系统更安全,你可千万别动什么歪脑筋,把这本事用在非法途径上,那哥可第一个不答应!要知道,网络空间不是法外之地,这“隐形衣”穿久了,容易迷路,找不着北。

行了,今儿就唠到这儿,我这可是把压箱底的一些“挫折经历”和“旁门左道”都抖搂出来了,你要是真对AMSI绕过立刻上手感兴趣,别光看不练,找个合法的实验环境,好好捣鼓捣鼓,遇到坑了,或者有什么新奇的思路,欢迎随时回来评论区跟我“掰头”一下,码字不易,且看且珍惜,咱下期再见!拜拜您嘞!

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

目录[+]