有几台公司的服务器直接部署暴露在了外网上。然后不出意外的,相继沦陷了。出现的状况就是服务器运行奇卡无比,动弹不得!
第一反应当然是打开任务管理器找出罪魁祸首了。我打开任务管理器,查找最多占用 CPU 的进程,发现罪魁祸首尽是 powershell.exe。我的天呐,有点想骂巨硬。但是冷静一想,事有蹊跷。微软没理由这么干啊,然后我摸摸下巴,瞬间明白了。它除了占用我大量的计算资源之外,也没干其它什么。很明显,是在挖矿。
于是,下载各种杀毒软件,反复全盘查杀!20 多个 G 的系统,硬是扫了两天一夜没都扫完,资源都被 powershell 给占了,甚是无奈啊,最后扫然也没个结果。至此,我对国内的杀毒软件绝望了!根本没被当回事儿!说实话,也难为它们了,毕竟这是微软的进程!万一错杀,也是不得了的。
好吧,靠杀毒软件是靠不住了!那就自己动手吧。经过观察,发现这破玩意儿是跟着系统一起启动的。怎么办呢?别忘了,powershell 被劫持,但是 cmd 还是能用的,那就让他们自相残杀吧!我真聪明,哈哈。
我们就写个 bat 脚本,把它添加到系统启动项里,让它无限旋环。你露头,我就弄死你。脚本如下:
@echo off if "%1"=="h" goto begin start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin :A taskkill /im powershell.exe /f goto A
这样一来,这脚本就会无限运行,只要 powershell 运行,就会直接把它咔嚓掉,经过测试,这命令一直挂在后台运行占用 2%的 CPU 资源(CPU 是 i3 7100),相比让 powershell 把整个系统资源都用尽,算是可喜可贺了。
还有别的办法,比如使用组策略。不过组策略不在域环境下的话,想大面积配置,就没那么容易了。主要是配置繁琐。在域环境下的话倒是最合适的方法。这里就不聊组策略了。如果有空、心情也好,以后会有专门的文章来写各种组策略。
工作组环境下,最适合的还是直接改注册表,劫持映像。不过这也有个缺陷,就是容易被杀毒软件解封。目前没有找到更好的十全大法。如果有人有更好的办法,也请不吝赐教,小生不胜感激。
新建一个脚本文件,将下面批处理粘贴到文件里面,执行批处理,即可禁用 powershell
if /i "powershell.exe"=="Y" goto begin echo powershell.exe>>%systemdrive%\WINDOWS\jzcx.txt reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\powershell.exe" /v debugger /t reg_sz /d debugfile.exe /f