本来麋鹿是打算把这一系列的排查手法做成一篇文章发,但是这几天麋鹿研究了一下公众号内容推荐机制,长文很难被推荐,阅读量就会很低,所以只能拆开,分三篇详细介绍windows和linux应急排查思路,这篇先讲
从外联ip入手排查进程
这里举一个永恒之蓝的例子
-a显示所有连接和侦听端口,包括本地和远程系统连接时使用的TCP端口或者UDP端口,在本地机器上的外部连接和我们远程所连接的系统以及本地和远程系统连接的状态,如图
-n参数可以显示本机和本机相连的外部主机的IP地址,而不像-a参数显示的只是计算机的NetBios名。
-o参数可以显示本地与外部主机相连的PID数值,taskkill需要通过这个数值才能中断连接
如果熟悉tcp三次握手的读者,应该会注意到图里有一条状态为ESTABLISHED这的连接
怕有的读者不懂,多说一句吧
先放个流程图,然后再提一句ESTABLISHED是什么意思
上图一目了然,ESTABLISHED是第三步,也就是两台主机已经进入已连接状态,TCP连接成功创建了,可以传输数据了。
所以在netstat后面加一个findstr用来排查指定连接会大大提升效率
比如 netstat -ano | findstr ESTABLISHED
为了让大家更好理解,麋鹿做了一个1.exe作为马子,点击上线以后,可以用上述命令快速定位连接
再拓展一点,比如关注一下备用HTTP端口(8080) SOCKS(1080)Privoxy(8118)这些可能用于代理的端口,再或者是445端口,6667IRC,SSH 22之流
netstat -ano | findstr :6667
忘了还有3389远程桌面了
既然气氛都到这里了,那就再多叨叨几句
之前排查过一个挖矿端口好像是3333,具体记不太清了,这些打着顺手的端口多留意留意就行了,还有js挖矿病毒80 443这些
忘了让大家看的清楚一点,这里用向日葵被控端演示(同时开了桌面和文件传输)
可以看到不管是马子还是向日葵端口都用的是临时端口,所以可以重点关注一下49152到65535端口的进程
放一个powershell脚本
$StartPort = 49152
$EndPort = 65535
# 获取连接
$ActiveConnections = netstat -ano
# 循环遍历
for ($Port = $StartPort; $Port -le $EndPort; $Port++) {
$ActiveConnections | Where-Object { $_ -match ":b$Portb" } | Out-String -Stream
}
当然也可以加一个findstr ESTABLISHED,改一下就好了
$EstablishedConnections = netstat -ano | findstr ESTABLISHED
再通过pid查看进程
tasklist /svc | findstr "PID"
详细信息
tasklist /v /fi "PID eq PID"
看一看pid为6040的进程对应文件路径
也可以是进程名
tasklist /v /fi "IMAGENAME eq SunloginClient.exe"
启动时间
wmic process where name="SunloginClient.exe" get CreationDate
子父进程相关
所有进程PID
wmic process where name="SunloginClient.exe" get ProcessId
父进程PID
wmic process where name="SunloginClient.exe" get ParentProcessId
获取父进程(id)的所有子进程
netstat -ano | findstr :6667
0
PID关联的服务
netstat -ano | findstr :6667
1
如果是阿里云这些主机,可以留意一下一些官方软件是否被篡改,对比md5
netstat -ano | findstr :6667
2
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...