怎么免杀木MacOS

极客

怎么免杀木MacOS?我踩了三天坑,终于摸到点门道了!

哎,兄弟们,最近是不是跟我一样,被MacOS的免杀问题折磨得够呛?说真的,我以前一直觉得Windows的免杀才是地狱级难度,直到我手贱去碰了MacOS,才发现自己简直是井底之蛙!今天实在憋不住想跟大家唠唠,我这几天折腾“怎么免杀木MacOS”的心酸历程。(如果你也想深挖这块,我文末有惊喜,记得看到最后!)

开头先泼盆冷水:别拿Windows那套来套MacOS,真的会哭!

我一开始啊,脑子里全是Windows下的老思路,什么加壳、改特征码、混淆API调用,噼里啪啦一股脑全搬过来,结果呢?直接被XProtect(苹果家的内置杀软)按在地上摩擦,连个响儿都没听到! 说实话,当时我盯着那个“恶意软件已隔离”的红框,血压都上来了,心里那个气啊,差点把MacBook砸了!

后来我冷静下来,边喝咖啡边盯着屏幕想,为什么Windows那套不行?因为MacOS的生态和Windows完全是两个世界! Windows下你随便搞个PE文件,改改资源节,加两层VMP壳,可能就过了,但MacOS呢?人家不仅有XProtect,还有Gatekeeper的quarantine属性,甚至还有硬化运行时(Hardened Runtime)和系统完整性保护(SIP)这俩大爹守着,你光想着改代码二进制,却忽略了这些系统层面的“门卫”,怎么可能不被抓!

关键第一招:别碰“网络下载”这个雷区!

我发现啊,很多人(包括我自己)写免杀木马的时候,总喜欢在本地编译好,然后传到某个服务器上,再下载下来测试。这就是巨坑! 只要你通过浏览器、curl、或者AirDrop下载的文件,MacOS一律会打上com.apple.quarantine这个扩展属性标志,有这个标志在,Gatekeeper第一关就直接把你拦下来,甚至都不用杀毒引擎出手,直接弹窗“无法打开,因为无法验证开发者”。

所以啊,免杀的第一步不是改代码,而是去掉这个属性的来源! 我当时怎么做的呢?我直接在本地用Crontab定时任务去启动,或者通过远程SSH会话去执行脚本,根本不让文件经过下载这一步,或者,如果非要传输,我会用xattr -d com.apple.quarantine这命令把它剥掉,哎呀,提到这个命令我火又上来了,每次忘了执行都要被拦一次,简直心理阴影!

核心第二招:学会跟“签名”玩捉迷藏

说真的,MacOS下最让人头疼的不是特征码查杀,而是代码签名(Code Signature)的校验,你写个shell脚本或者编译个Mach-O二进制,如果没签名或者签名无效,运行起来就各种权限障碍,甚至被系统强制退出。

一开始我尝试自己伪造个签名,用self-signed证书签一下,结果还是被拦,为啥?因为Launchd(就是开机启动的管家)要求如果是GUI程序,必须要有权威的Apple Developer ID签名。好吧,那我做命令行工具吧, 结果命令行工具虽然不强制要求完备,但只要调用某些高权限API或者具备敏感功能,系统还是会核查签名的合法性。

后来我学聪明了,我开始尝试“不落地”的内存执行,用Python或者Ruby脚本一行一行的执行命令,而不是编译成独立二进制。 然后配合osascript(就是AppleScript的JavaScript版本)做UI层面的交互,虽然麻烦点,但至少能避开静态扫描对二进制特征的重灾区,不过说实话,这玩意儿就跟躲猫猫一样,你既要躲引擎,还要躲系统,心累啊!

进阶第三招:利用合法白名单工具,让木马“借壳上市”

兄弟们,你们有没有想过,为啥很多高级钓鱼样本都爱用Python打包的App?因为Python环境是MacOS自带的啊!那个python3解释器,本身就是苹果系统签名的白名单进程! 你的恶意代码,只要通过python3 -c "..."这种方式执行,底层调用的进程是合法的,签名是齐全的,安全引擎就很难在进程层面拦截你。

我就试过,写一篇恶意的python代码,加密base64存储在某个plist文件里,然后通过launchctl加载一个plist任务,定时执行python3去解码运行,哎哟喂,这一套组合拳下来,虽然技术上没什么高深的,但确实让很多静态扫描抓瞎了。 因为系统的监控视角,只看到合法的python3在执行一段复杂的字符串运算,鬼知道那字符串解压出来是挖矿木马啊!

不过为了防止被一眼看穿,我会在payload前面前做一些伪装的打印,比如输出个“Hello, World.”或者在启动时sleep随机几秒,模仿正常脚本的行为。 这就像穿了个隐形斗篷,虽然不完美,但总比裸奔强。

也是最重要的:别光想着绕,想想防御者怎么看你

说了这么多技巧,其实我最深的感触是:免杀的本质不是“找漏洞”,而是“模拟正常”。 你把自己想象成MacOS的安全沙盒,你会关注什么?你会关注异常的文件访问、敏感的API调用序列、还有网络连接的可疑域名。

我在写免杀木马的时候,会刻意把网络行为做得很收敛,比如不频繁连接同一个C2服务器,而是通过DNS隧道或者HTTPS混流;或者利用/tmp目录存放临时文件,并定时清理。这真的能大幅度降低被行为检测识别的概率! 有兄弟可能会问,这样搞效率低了怎么办?嗨,兄弟,咱们求的是“做没做过”,而不是“做得快不快”啊! 要是做到一半被连锅端了,再快有什么用?


说在最后:

其实我也没那么高尚,我就是个喜欢折腾技术的普通玩家,喜欢研究安全攻防的底层逻辑,MacOS的免杀这块,水是真的深,我也只是刚刚探到了门槛,今天写这个文章,纯粹是被气得不行,想找个地方吐槽吐槽,顺便分享点血和泪的教训。

怎么免杀木MacOS

如果看到这儿,你也对安全攻防、木马免杀或者渗透测试感兴趣,想一起探讨技术、互换资源,或者只是单纯想找个老哥请教下怎么不被杀软整破防,欢迎加我QQ:21098519,咱们可以聊聊怎么在法律的框架下,研究点真正提升技术的东西,别急着干坏事啊,研究归研究,红线咱心里得有数!

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

目录[+]

取消
微信二维码
微信二维码
支付宝二维码