常见网络安全事件通报类型与应急处置
常见的网络安全事件通报类型
在日常网络安全运营中,信息安全事件频发,已成为各类组织不可回避的风险。为强化风险警示与行业协同,监管机构会对辖区内发生的安全事件进行识别、定级与通报。常见的通报类型包括勒索病毒、挖矿病毒、银狐木马、⽹⻚内嵌恶意代码、两⾼⼀弱等,这些事件多属于有害程序事件(MI) 与网络攻击事件(NAI) 的范畴,其通报不仅推动涉事单位及时处置,也为全行业提供了关键的风险态势与防御参考。
勒索病毒
特征
勒索病毒(Ransomware)是一种恶意软件,它通过加密用户设备上的文件或锁定系统屏幕来阻止用户正常访问自己的数据或设备,然后向受害者勒索赎金(通常要求以比特币等加密货币支付),并承诺在收到赎金后提供解密密钥或恢复访问权限。这类病毒通常通过钓鱼邮件、恶意附件、漏洞攻击或伪装成正常软件的安装包进行传播,对个人、企业甚至公共机构造成严重危害,包括数据丢失、财务损失、业务中断等。
我们以baxia勒索病毒为例进行简单分析
baxia勒索病毒是BeijngCrypt勒索病毒家族的变种,通常通过各类数据库的弱口令进行入侵感染,黑客获取数据库弱口令后通过数据库命令下载、执行勒索病毒,baxia病毒一旦运行,就开始针对各类文档、程序(doc、docx、xlsx、xls、pdf、mdf、jpg、png、exe等格式)进行加密操作,并在加密文件夹下创建名为!_INFO.txt的勒索信件。同时baxia勒索病毒会针对内网中其他主机的445、3389端口发起攻击,继续扩大勒索范围。
处置方法
勒索病毒的处置方法主要以前期巡检、备份为主,大部分的勒索病毒使用AES+RSA加密,如果没有解密密钥,几乎无法使用常规手段解密,所以勒索病毒的处置基本上是删除相关的恶意软件、检查主机薄弱点并修复、部署相应的终端防护设备。
对于已经感染勒索病毒的主机,首先要立刻切断主机的网络,防止主机攻击其他内网机器感染更多的设备,同时也阻止主机上传解密密钥到黑客的服务器。Windows操作系统的主机可以使用命令netsh interface set interface "以太网" disable、Linux操作系统使用sudo ip link set eth0 down或者直接拔掉主机网线来禁用主机网络。
接下来需要识别勒索病毒的类型,我们可以通过观察已经被加密的文件后缀识别勒索软件的类型,以前图为例,勒索软件加密文件后后缀为baxia,则该勒索软件为baxia。我们可以访问360勒索病毒解密或者奇安信勒索病毒搜索这两个网站,查找可能可以解密的勒索病毒后缀,部分勒索病毒可能可以解密。如果不能解密,那就祈祷这台主机启用了备份功能,可以恢复到勒索前的状态吧。
紧接着就是立即关闭勒索软件,Windows主机通过tasklist /v检查异常进程、netstat -ano检查异常的网络连接,Linux主机可以使用ps auxf、top -b -n 1检查异常进程、netstat -tulpn和ss -tulpn检查异常的网络连接。一般情况下,在加密还未结束时,勒索病毒的加密操作会大量占用CPU资源,所以可以使用KILL命令关闭CPU资源占用较高的进程。Windows操作系统还需要检查任务计划程序、注册表、启动文件夹、Windows服务、DLL劫持与侧加载等等。
常见的注册表自启动键:
# 标准自启动键
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
# 扩展自启动位置
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
# 登录相关键
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
HKEY_CURRENT_USER\Environment\UserInitMprLogonScript
# 特定扩展名关联键
HKEY_CLASSES_ROOT\.txt\shell\open\command
HKEY_CLASSES_ROOT\txtfile\shell\open\command
# COM对象键
HKEY_CLASSES_ROOT\CLSID\{GUID}\InprocServer32常见的启动文件夹目录
# 用户启动文件夹
C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
# 所有用户启动文件夹
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup检查要点包含:
# 检查服务
sc query state= all | findstr "SERVICE_NAME"
# 检查计划任务
schtasks /query /fo list
# 检查网络连接
netstat -ano | findstr "ESTABLISHED"
# 检查WMI事件
Get-WmiObject -Namespace root\subscription -Class __EventFilter
# 注册表关键位置检查
$suspectPaths = @(
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce",
"HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon"
)
foreach ($path in $suspectPaths) {
if (Test-Path $path) {
Get-ItemProperty -Path $path | Format-List
}
}针对Linux操作系统的勒索病毒,我们还应检查定时任务、Systemd服务与定时器、Shell配置文件、动态链接库劫持、Init系统脚本等。
Linux检查要点包含:
# 检查所有cron任务
crontab -l # 当前用户
crontab -u root -l # root用户
ls -la /etc/cron.*/ # 系统cron目录
cat /etc/crontab # 系统crontab
find /etc/cron* -type f -exec cat {} \; 2>/dev/null
# 检查所有服务
systemctl list-unit-files --type=service
systemctl list-units --type=service --all
# 查看服务详情
systemctl status [服务名]
cat /etc/systemd/system/[服务名].service
# 检查定时器
systemctl list-timers --all
# 检查rc.local
cat /etc/rc.d/rc.local
cat /etc/rc.local
# 检查init.d脚本
ls -la /etc/init.d/
grep -r "执行命令" /etc/init.d/
# 检查profile文件
grep -n "可疑命令" /etc/profile ~/.bashrc ~/.bash_profile
# 查找隐藏文件
find / -name ".*" -type f 2>/dev/null | grep -v "/proc/"
find / -name "..*" -type f 2>/dev/null
# 检查/tmp、/var/tmp异常
ls -la /tmp/ /var/tmp/
find /tmp /var/tmp -type f -mtime -1
# 检查不可变文件
lsattr /etc/cron* /etc/systemd/system/*
# 检查LD_PRELOAD
echo $LD_PRELOAD
cat /etc/ld.so.preload 2>/dev/null通过上述的命令排查到勒索软件的进程和守护进程后,即可关闭勒索病毒进程,备份勒索病毒样本,删除勒索病毒。
接下来是要排查勒索软件的入口,判断勒索软件是从主机的哪个脆弱点攻击成功并部署勒索病毒的。
在Windows上,首先应该排查SMB的445端口和RDP的3389端口,这是病毒内网非常常见的传播方式,这些服务能被攻破的主要原因除了未打补丁之外,还可能存在弱口令、空口令的问题,所以还需排查操作系统的登录密码的强弱,如果过于简单则需要更换。在排查的时候,可以通过Windows自带的日志系统来进行分析,在安全日志中,事件编号为4625、4688分别代表着失败登录和进程创建,前者意味着勒索并是通过猜解登录密码在主机上部署勒索病毒的,后者可以获取勒索病毒的进程创建时间,进一步确认系统中毒的时间。
# 检查系统补丁状态(特别是MS17-010永恒之蓝)
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
wmic qfe list brief | findstr "KB"
# 检查已知勒索漏洞补丁是否安装
wmic qfe get hotfixid | findstr "KB4012212 KB4012217 KB4012606"
# 检查RDP服务状态和配置
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
# 检查SMB服务状态(端口445)
sc query lanmanserver
net share # 查看共享资源
# 检查用户账户和最近登录
net user
net localgroup administrators
wevtutil qe Security /rd:true /f:text | findstr "4624 4625" # 登录事件
# 检查弱密码或空密码账户
net user [用户名] # 查看账户状态
wmic useraccount get name,passwordexpires,lockout
# 查看RDP连接历史
query user # 当前会话
qwinsta # 会话信息
# 检查安全事件日志中的可疑活动
wevtutil qe Security /rd:true /f:text /q:"*[System[(EventID=4625)]]" # 失败登录
wevtutil qe Security /rd:true /f:text /q:"*[System[(EventID=4688)]]" # 进程创建
# 查看应用程序和系统日志
eventvwr.msc # 图形界面查看
# 或使用命令行筛选
Get-WinEvent -FilterHashtable @{LogName='Application'; StartTime=(Get-Date).AddDays(-7)} | Where-Object {$_.Message -like "*crypt*"}
# 查看最近修改的可执行文件
forfiles /p C:\ /s /m *.exe /d -3 /c "cmd /c echo @path @fdate @ftime"在Linux上,首先要排查SSH、VNC等服务是否存在弱口令,这些服务的配置是否正确。
# 检查系统版本和内核
uname -a
cat /etc/os-release
lsb_release -a
# 检查已安装的安全更新(不同发行版)
# Ubuntu/Debian
apt list --installed | grep -i security
# RHEL/CentOS
yum history | grep -i update
rpm -qa --last | head -20
# 检查SSH配置和登录
grep -i "permitrootlogin\|passwordauthentication" /etc/ssh/sshd_config
last -20 # 最近登录
lastb -20 # 失败登录
# 检查RDP/VNC等服务
systemctl status xrdp vncserver 2>/dev/null
ps aux | grep -E "(xrdp|vnc|tightvnc)"
# Linux:检查内存中的可疑内容
strings /dev/mem | grep -i "ransom\|crypt\|bitcoin"
# 检查用户和特权账户
cat /etc/passwd | grep -E "(/bin/bash|/bin/sh)"
cat /etc/sudoers
sudo -l # 当前用户sudo权限
# 检查空密码或弱密码账户
awk -F: '($2 == "" ) {print}' /etc/shadow
# 检查UID 0账户(除root外)
awk -F: '($3 == 0) {print}' /etc/passwd
# 检查文件权限
find / -perm -4000 -type f 2>/dev/null # SUID文件
find / -perm -2000 -type f 2>/dev/null # SGID文件
find / -type f -perm -o+w 2>/dev/null # 全局可写文件
# 检查敏感配置文件权限
ls -la /etc/passwd /etc/shadow /etc/sudoers
# 检查LD_PRELOAD劫持
echo $LD_PRELOAD
cat /etc/ld.so.preload 2>/dev/null
# 检查bash历史
tail -50 ~/.bash_history如果操作系统上还部署其他服务,比如数据库、Web服务等,那我们还应该检查这些中间件服务对应的日志信息和配置,大多数数据库被攻击、入侵都是因为使用了默认密码、弱口令,或者未授权访问,当然也有可能是Web服务导致的SQL注入。同样的,Web服务也可能存在被黑客攻破的薄弱点:任意文件上传漏洞、远程代码执行漏洞、反序列化漏洞、不安全的配置、供应链攻击、弱口令/默认口令以及前述的SQL注入等等,这些漏洞也会造成黑客的入侵,传播勒索病毒或者下述的其他病毒等。排查这些中间件服务的日志可以更清晰的反应出黑客的入侵路径,在修补薄弱点后防止下次的入侵行为。
# Apache日志检查
tail -200 /var/log/apache2/access.log | grep -E "(\.php|\.asp|\.jsp|POST.*\.(php|asp|jsp))"
tail -200 /var/log/apache2/error.log | grep -i "error\|warning"
# Nginx日志检查
tail -200 /var/log/nginx/access.log | grep -E "(union.*select|eval\(|base64_decode|system\(|shell_exec)"
tail -200 /var/log/nginx/error.log
# 查找异常IP访问
cat /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
# 检查Web目录下的异常文件
find /var/www -name "*.encrypted" -o -name "*.locked" -o -name "*_readme.txt" 2>/dev/null
find /var/www -name "*.exe" -o -name "*.bat" -o -name "*.vbs" 2>/dev/null # Windows服务器
# 检查文件权限问题
find /var/www -type f -perm -o+w 2>/dev/null # 全局可写文件
find /var/www -type d -perm -o+w 2>/dev/null # 全局可写目录
# 检查被修改的网站文件
find /var/www -type f -newer /var/www/index.php 2>/dev/null | head -20-- MySQL/MariaDB
-- 检查用户和权限
SELECT user, host, authentication_string FROM mysql.user;
SHOW GRANTS FOR 'root'@'localhost';
-- 检查匿名账户和空密码账户
SELECT user, host FROM mysql.user WHERE user = '' OR authentication_string = '';
-- 查看数据库运行状态和连接
SHOW PROCESSLIST;
SHOW VARIABLES LIKE 'port'; -- 查看端口
-- 检查插件和组件(可能被注入恶意组件)
SELECT * FROM mysql.plugin;
-- PostgreSQL
-- 检查用户和权限
SELECT usename, passwd FROM pg_shadow;
SELECT * FROM pg_roles;
-- 检查数据库连接
SELECT * FROM pg_stat_activity;
-- 检查扩展(可能被恶意利用)
SELECT * FROM pg_extension;
-- MongoDB
-- 连接MongoDB后执行
-- 检查认证状态
db.runCommand({getParameter: 1, authenticationMechanisms: 1})
-- 查看用户
db.getUsers()
db.system.users.find()
-- 检查数据库列表(勒索病毒可能创建新数据库)
show dbs# Redis
# 检查Redis配置
redis-cli CONFIG GET requirepass # 查看是否设置密码
redis-cli CONFIG GET bind # 查看绑定地址
redis-cli CONFIG GET protected-mode
# 检查数据(勒索病毒可能修改或加密键值)
redis-cli KEYS "*"
redis-cli INFO keyspace
# 尝试未授权访问(测试安全)
redis-cli -h [IP] INFO # 如果不需要密码直接返回信息,说明存在未授权访问
# # 检查Redis配置文件
cat /etc/redis/redis.conf | grep -E "(requirepass|bind|protected-mode)"
# 危险:requirepass为空、bind 0.0.0.0、protected-mode no
# Elasticsearch
# 检查集群健康(未授权访问风险高)
curl -X GET "localhost:9200/_cluster/health"
curl -X GET "localhost:9200/_nodes" # 获取节点信息
# 检查索引(勒索病毒可能删除或加密索引)
curl -X GET "localhost:9200/_cat/indices?v"
# 检查Elasticsearch配置文件
cat /etc/elasticsearch/elasticsearch.yml | grep -E "(network.host|http.port|xpack.security.enabled)"
# 危险:network.host: 0.0.0.0 且未启用安全
# MongoDB
# 检查配置文件
cat /etc/mongod.conf | grep -E "(bindIp|port|security.authorization)"
# 危险配置:bindIp: 0.0.0.0 且未启用authorization
# 检查是否启用认证
mongod --version | grep -i auth
# MySQL
# 检查MySQL配置文件
cat /etc/my.cnf | grep -E "(bind-address|port|skip-grant-tables|skip-networking)"
# 危险配置:bind-address=0.0.0.0(暴露到所有网络)
# PostgreSQL
# 检查配置文件
cat /var/lib/pgsql/data/postgresql.conf | grep -E "(listen_addresses|port|password_encryption)"
# 默认listen_addresses='localhost'为安全,'*'或'0.0.0.0'危险在检查完主机、服务、日志后,我们就能大致了解黑客是通过哪种手段攻击并植入勒索病毒的,这样就可以有针对性的增强、改善系统的薄弱点,防止下次勒索病毒再次对系统造成破坏。
挖矿病毒
特征
挖矿病毒(Cryptojacking)是一种恶意软件,它通过秘密利用受害者设备的计算资源(如CPU、GPU)来挖掘加密货币(如比特币、门罗币等),从而为攻击者非法获取数字货币。这类病毒通常通过恶意网站脚本、钓鱼邮件、软件漏洞、或伪装成正常软件的安装包进行传播,对个人、企业甚至公共机构造成严重危害,包括设备性能显著下降、电力消耗急剧增加、硬件损耗加速、系统稳定性降低以及潜在的安全风险等。
如下图是挖矿病毒挖取CFX加密货币为例:
该挖矿病毒通过钓鱼邮件入侵到主机后,在内网通过SSH、RDP、SMB弱口令等攻击手段进行横向移动,最终扩散到内网其他主机中,并在内网建立中继节点,黑客通过中继节点下达攻击、挖矿指令。
处置方法
挖矿病毒与勒索病毒很像,但是最终目的不同,勒索病毒是通过加密系统中的数据进行勒索获取经济价值,挖矿病毒是通过抢占CPU、GPU、硬盘、内存资源来获取加密货币,虽然可能不会对系统中的数据有危害,但是通过抢占系统资源导致系统服务不稳定,甚至中断服务。对于挖矿病毒的处置,与勒索病毒类似,首先就是先暂停危害,从进程中找出CPU、GPU等资源占用率极高的进程,在Windows系统中,我们可以打开任务管理器,找到占用率高的进程,并右键选择打开文件所在位置确定病毒绝对路径,如果没有守护进程的话,在任务管理器中就可以右键选择结束任务,如果有守护进程或者自启动的话,可以参考勒索病毒的排查方法进行排查。在Linux系统中,我们可以通过top命令找出占用率高的进程,进入/proc/[PID进程号]目录后,使用ls -alh exe的命令查看进程的绝对路径,确认绝对路径后如果没有守护进程即可关闭、备份相关挖矿病毒,如果存在守护进程或自启动,也可以参考勒索并的排查方法进行排查。
# 查看所有进程的命令行参数(关键!矿池地址常在此)
Get-WmiObject Win32_Process | Select-Object Name, ProcessId, CommandLine |
Where-Object {$_.CommandLine -match 'miner|stratum|pool|xmrig|monero|ethminer|nicehash'} |
Format-List
# 按进程名查看详细信息
Get-Process | Where-Object {$_.ProcessName -match 'powershell|wscript|cscript|mshta'} |
Select-Object Name, Id, CPU, Company, Path, MainWindowTitle
# 查看进程父子关系
Get-CimInstance Win32_Process | Select-Object ProcessId, ParentProcessId, Name, CommandLine |
Sort-Object ParentProcessId | Format-Table -AutoSize
# 查找可疑的进程树深度
$processes = Get-CimInstance Win32_Process
$deepProcesses = $processes | Where-Object {
$_.ParentProcessId -ne 0 -and
($processes | Where-Object {$_.ProcessId -eq $_.ParentProcessId}).Count -gt 2
}
$deepProcesses | Select-Object Name, ProcessId, ParentProcessId, CommandLine
# 实时监控CPU占用(每2秒刷新一次)
while($true) {
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU, Id, WorkingSet64 |
Format-Table -AutoSize
Start-Sleep -Seconds 2
Clear-Host
}
# 查看进程的线程数量(挖矿病毒可能创建大量线程)
Get-Process | Select-Object Name, Id, @{Name='ThreadCount';Expression={$_.Threads.Count}} |
Sort-Object ThreadCount -Descending | Select-Object -First 10
# 查看所有UDP连接
Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, OwningProcess |
Sort-Object LocalPort | Format-Table -AutoSize
# 检查常见矿池UDP端口
$miningPorts = @(3333,4444,5555,6666,7777,8888,9999,14444,55555)
Get-NetUDPEndpoint | Where-Object {$_.LocalPort -in $miningPorts} |
ForEach-Object {
$proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[PSCustomObject]@{
Port = $_.LocalPort
ProcessId = $_.OwningProcess
ProcessName = $proc.Name
Path = $proc.Path
}
} | Format-Table
# 查看所有计划任务的详细信息
Get-ScheduledTask | Where-Object {$_.TaskPath -notmatch '\\Microsoft\\'} |
ForEach-Object {
$task = $_
$action = $task.Actions | Select-Object -First 1
[PSCustomObject]@{
TaskName = $task.TaskName
TaskPath = $task.TaskPath
State = $task.State
Author = $task.Author
Command = $action.Execute
Arguments = $action.Arguments
Triggers = $task.Triggers.Count
}
} | Format-List
# 检查所有用户的启动文件夹
$users = Get-ChildItem "C:\Users" -Directory
foreach ($user in $users) {
$startupPath = "C:\Users\$($user.Name)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
if (Test-Path $startupPath) {
Write-Host "=== $($user.Name) 的启动文件夹 ===" -ForegroundColor Yellow
Get-ChildItem $startupPath -Force | Select-Object Name, FullName, LastWriteTime | Format-Table
}
}
# 检查所有启动注册表项
$registryPaths = @(
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce",
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Run",
"HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce",
"HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce"
)
foreach ($path in $registryPaths) {
if (Test-Path $path) {
Write-Host "=== 检查: $path ===" -ForegroundColor Cyan
Get-ItemProperty $path | Out-String | Write-Host
}
}
# 检查Chrome扩展(挖矿脚本可能通过浏览器运行)
$chromeExtensions = "C:\Users\*\AppData\Local\Google\Chrome\User Data\Default\Extensions\*"
Get-ChildItem $chromeExtensions -ErrorAction SilentlyContinue |
Select-Object FullName, LastWriteTime | Format-Table
# 查看PowerShell历史命令(病毒可能通过PowerShell执行)
Get-History | Select-Object -Last 50 CommandLine | Format-List
# 查看CMD历史
Get-Content (Get-PSReadlineOption).HistorySavePath -Tail 100 |
Where-Object {$_ -match 'miner|powershell -enc|wget|curl'} | Format-List
# 检查进程创建事件(事件ID 4688)
$processEvents = Get-WinEvent -FilterHashtable @{
LogName='Security'
ID=4688
StartTime=(Get-Date).AddHours(-24)
} -MaxEvents 100 | ForEach-Object {
$xml = [xml]$_.ToXml()
[PSCustomObject]@{
Time = $_.TimeCreated
ProcessName = ($xml.Event.EventData.Data | Where-Object {$_.Name -eq 'NewProcessName'}).'#text'
CommandLine = ($xml.Event.EventData.Data | Where-Object {$_.Name -eq 'CommandLine'}).'#text'
User = ($xml.Event.EventData.Data | Where-Object {$_.Name -eq 'SubjectUserName'}).'#text'
}
}
$processEvents | Where-Object {$_.CommandLine -match 'miner|powershell.*enc'} | Format-List
# 查看PowerShell脚本块日志(事件ID 4104)
Get-WinEvent -FilterHashtable @{
LogName='Microsoft-Windows-PowerShell/Operational'
ID=4104
StartTime=(Get-Date).AddHours(-24)
} -MaxEvents 50 | ForEach-Object {
$xml = [xml]$_.ToXml()
$script = ($xml.Event.EventData.Data | Where-Object {$_.Name -eq 'ScriptBlockText'}).'#text'
if ($script -match 'miner|stratum|pool|Invoke-Expression') {
[PSCustomObject]@{
Time = $_.TimeCreated
Script = $script.Substring(0, [math]::Min($script.Length, 200))
} | Format-List
}
}在感染挖矿病毒后,异常的网络连接也是需要关注的,因为挖矿病毒需要将挖到的加密货币上传到互联网的矿池,所以,阻断后续的网络连接也是非常重要的。
Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess
Get-Process -Id <PID号> | Select-Object ProcessName, Path, Company
tasklist /svc /fi "PID eq <PID号>"
tasklist | findstr <PID号># 实时监控CPU使用情况(非交互模式)
top -b -n 1 | head -30
# 查看每个进程的CPU使用率(1秒间隔,采样5次)
pidstat 1 5
# 监控磁盘I/O(挖矿病毒可能有大量磁盘操作)
iotop -o
# 查看内存使用前10的进程
ps aux --sort=-rss | head -11
# 查看实时网络流量(需安装nethogs)
sudo nethogs
# 检查所有ESTABLISHED连接
netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# 监控网络带宽使用(按进程)
sudo iftop -P
# 检查ARP表(防止中间人攻击)
arp -a
# 查看连接数最多的前10个IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | tail -10
netstat -antp
ss -tunap
ps aux | grep <PID号>
ps -ef | grep <PID号>
lsof -p <PID号>
# 同时检查多个常见挖矿端口
for port in 3333 4444 5555 7777 8888 9999; do echo "=== Port $port ==="; netstat -antp | grep :$port; done
# 查看进程的网络活动
strace -p <PID号> -e network
# 检查进程的守护进程关系(挖矿病毒常有守护进程)
systemctl status <PID号> 2>/dev/null || pstree -p <PID号>
# 查看所有用户的cron任务
for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; crontab -u $user -l 2>/dev/null; done
# 检查系统级cron目录
ls -la /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/
# 查看anacron定时任务
cat /etc/anacrontab 2>/dev/null
# 检查at任务
atq
# 全盘搜索挖矿相关文件
find / -type f \( -name "*miner*" -o -name "*xmrig*" -o -name "*monero*" -o -name "*ccminer*" \) 2>/dev/null | head -50
# 搜索最近7天修改的可执行文件
find / -type f -perm /111 -mtime -7 2>/dev/null | xargs ls -la
# 检查SUID/SGID文件(提权风险)
find / -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null
# 搜索隐藏文件(以点开头)
find / -name ".*" -type f 2>/dev/null | grep -E "(miner|config|stratum)"
# 查看文件特殊属性(病毒常设+i防止删除)
lsattr /usr/bin/* /usr/local/bin/* 2>/dev/null | grep -E "^[^\-]"
# 批量检查/bin、/sbin、/usr/bin目录文件属性
for dir in /bin /sbin /usr/bin /usr/local/bin; do [ -d $dir ] && echo "=== $dir ===" && lsattr $dir/* 2>/dev/null | grep -v "-------------"; done
# 检查文件修改时间异常(如系统文件被修改)
rpm -Va 2>/dev/null || dpkg -V 2>/dev/null
# 查看系统日志中的可疑活动
journalctl -xe --since "1 hour ago" | grep -i "error\|fail\|mining\|cron"
# 检查认证日志中的异常登录
tail -100 /var/log/auth.log | grep -i "fail\|invalid\|mining"
# 查看内核日志中的异常
dmesg | tail -50
# 搜索所有日志中的挖矿关键词
grep -r -i "miner\|xmrig\|stratum\|pool" /var/log/ 2>/dev/null | head -20在处理挖矿病毒结束后,同样的,我们可以使用与勒索病毒相同的办法还原挖矿病毒的攻击手法,是通过什么应用、服务的什么漏洞攻入的,还是说通过社会工程学手段攻入的,对这些系统薄弱点进行针对性的提升。
银狐木马
银狐木马(Silver Fox Trojan)是一种恶意软件,它通过伪装成正常程序或利用系统漏洞潜入用户设备,然后在后台秘密建立远程控制通道,使攻击者能够窃取敏感信息、监控用户操作或利用受害设备进行其他恶意活动。这类木马通常通过钓鱼邮件、恶意网站、软件捆绑或漏洞攻击进行传播,对个人、企业甚至政府机构造成严重危害,包括数据泄露、系统失控、隐私侵犯等。本公众号在1月的文章:《银狐木马分析:从攻击行为到完整应急处置流程》详细介绍了银狐木马,银狐木马近些年来发展迅速,已俨然成为目前国内最高发的病毒木马家族之一。
特征
银狐木马主要通过钓鱼邮件、仿冒网站、软件捆绑、IM聊天软件、进行攻击,极少数银狐木马会通过系统漏洞进行攻击。钓鱼邮件是指黑客一般以税务、人社或者所属单位的名义发送钓鱼邮件,并将银狐木马放到附件,如果收件人不仔细检查发件人或未确认就打开附件即刻中毒;仿冒网站是指黑客通过购买与常用办公软件的相似域名,在搜索引擎中提高SEO排名,甚至通过竞价机制成为搜索引擎中搜索出来的官方网站进行投毒,如果没有注意,那么就会从这些仿冒网站上下载到捆绑了银狐木马的软件;软件捆绑与仿冒网站几乎相差无几,通过将银狐木马捆绑到破解软件、压缩包等文件中,在下载站或者其他网站中下载后就可以感染银狐木马;IM聊天软件一般是银狐扩大危害的一种手段,通常会通过微信、企业微信、钉钉、企业内的OA系统、邮件系统等办公软件进行传播,常见的方式是通过拉群,在群中发送银狐木马的压缩文件,如果群内其他人无安全意识,解压压缩文件,打开其中的应用程序即刻中毒。银狐木马隐蔽性强,通常会持续监控失陷主机状态。受害者离开电脑、终端,这些设备处于无人值守状态时,攻击者会通过AnyDesk、向日葵、VNC、ToDesk等远控软件登录受害主机,利用已登录或开启自动登录功能的聊天工具,主动发起传播行为。
处置方法
银狐木马的处置与前述的勒索病毒、挖矿病毒处置基本一致,首先就是断网,减少对内网其他主机、系统造成的危害。其次就是强制结束恶意进程,如果存在进程守护,也需一同关闭,清除。目前银狐木马的部分变种会禁止安装杀毒软件,所以如果主机无杀毒软件,则需要清除银狐木马后才能安装杀毒软件,银狐木马还会使用、盗取正常软件的签名信息,企图绕过杀毒软件查杀,所以在清理时需注意。因为银狐木马大多数感染的是Windows的办公主机,所以在银狐木马查杀结束后,可以着重加强人员的网络安全意识,降低感染银狐木马的风险,同时还应部署专业的安全防护软件。
对于银狐木马,我们还可以使用各类威胁情报平台,如:微步在线X情报社区、奇安信威胁情报中心,通过上传银狐木马样本,我们可以清晰的获取到银狐木马的恶意行为与外联行为。
网页内嵌恶意代码
网页内嵌恶意代码(Web-embedded malicious code)是是黑帽SEO中常见的作弊手法,也是一种黑灰产常用的网页内嵌恶意代码攻击手段,指攻击者通过网站漏洞(如SQL注入、文件上传)、弱口令爆破或供应链攻击等方式非法入侵网站后,在网页源代码中植入对正常用户不可见、但能被搜索引擎爬虫抓取的恶意链接。这些链接通常通过技术手段实现隐蔽,其目的在于操纵搜索引擎排名(SEO作弊),将受害网站的权重引流至赌博、色情、诈骗等非法网站,或作为恶意软件分发、钓鱼攻击的中转跳转点。网页内嵌恶意代码不仅损害网站的信誉和搜索引擎排名,还可能导致网站被搜索引擎安全中心拉黑、被浏览器标记为危险网站,甚至成为传播勒索病毒、窃取用户数据的攻击入口,对网站所有者、访问用户以及网络生态环境均构成严重威胁。
特征
网页内嵌恶意代码(Web-embedded malicious code)其植入方式主要包括利用网站漏洞(如SQL注入、文件上传漏洞)、弱口令爆破以及供应链攻击等途径非法入侵网站后台,并在页面源代码中插入恶意链接。为逃避检测,攻击者采用多种隐蔽技术,如使用CSS属性(display:none、visibility:hidden、opacity:0)进行视觉隐藏、将链接文字颜色设置为与背景色相同、通过font-size:0或width:0; height:0使链接尺寸极小化,或利用绝对定位将链接偏移至视口之外(left:-9999px; top:-9999px)、JavaScript动态加载、甚至利用HTML注释或跑马灯(marquee)快速闪现等方式实现。网页内嵌恶意代码的内容与结构特征表现为大量堆砌赌博、色情、药品等高搜索量关键词作为锚文本,指向非法站点或作为恶意软件分发、钓鱼攻击的中转跳转链接,并常采用JavaScript动态加载、代码分割混淆、Base64编码等手段增强隐蔽性。
从目的与影响来看,网页内嵌恶意代码的核心特征是用于操纵搜索引擎排名和进行非法引流。攻击者通过在被黑网站上植入大量指向目标站点的网页内嵌恶意代码,企图利用搜索引擎的权重传递机制快速提升目标网站在搜索结果中的排名。此外,网页内嵌恶意代码也可能指向钓鱼网站、恶意软件下载地址或违规内容,从而实施流量劫持、传播恶意程序或进行网络诈骗。这种行为严重违反搜索引擎规则,一旦被发现会导致网站被降权甚至被索引删除,同时给被植入网页内嵌恶意代码的网站带来安全风险与声誉损害。
处置方法
网页内嵌恶意代码的详细处置流程首先从深度检测开始,具体操作上需要使用多款工具进行交叉验证,例如使用Screaming Frog SEO Spider抓取全站并设置过滤器查找display:none、opacity:0、font-size:0px等CSS属性,同时利用正则表达式在源代码中搜索颜色值与背景色相同的链接(如color:#FFFFFF配合background-color:#FFFFFF),对JavaScript文件使用Beautifier反混淆后检查动态加载的DOM元素,通过数据库管理工具执行SQL查询语句(如SELECT * FROM wp_posts WHERE post_content LIKE '%<a%style=%display:none%>%')排查存储型注入,并分析服务器访问日志使用grep命令筛选异常时间段的POST请求(grep "POST.*\\.php" access.log | awk '{print $1,$7}')以定位入侵入口点。清除阶段需按照优先级处理,首先通过SSH连接服务器定位被篡改文件,使用diff命令对比备份版本与当前版本,手动删除恶意代码段(注意避免误删正常功能代码),若发现webshell则根据特征(如eval($_POST[cmd]))进行查找并移除,对数据库执行清理语句(如UPDATE wp_posts SET post_content = REPLACE(post_content, '恶意链接代码', '')),随后立即修补漏洞,例如针对WordPress网站升级核心文件(wp-admin/update-core.php)、禁用存在漏洞的插件、在.htaccess中添加规则限制可疑文件执行(<Files *.php>deny from all</Files>)、修改文件权限为644(目录755)并移除不必要的可执行权限,同时更改所有相关密码并使用密码管理器生成高强度组合。加固环节需要部署多层防护,针对网页内嵌恶意代码特征添加自定义规则(如检测style="display:none"中的外链),部署文件完整性监控工具AIDE并初始化数据库(aide --init),设置每日自动比对报告,安装实时监控脚本,配置日志集中分析系统并设置告警规则(当检测到大量异常外链时触发),编写定期扫描脚本(结合wget镜像网站并使用grep -r "hidden"进行模式匹配)加入cron任务每周执行。后续处理需按流程操作,通过百度站长平台的“死链提交”工具批量提交网页内嵌恶意代码URL,使用API接口推送更新后的网站地图,持续观察搜索引擎索引量(通过site:指令)和排名变化,同时实施正规SEO恢复措施,包括提交高质量原创内容、通过合法渠道获取自然外链、使用结构化数据标记提升内容可读性。
两高一弱
两高一弱(Two-High-One-Weak)是网络安全领域常见的三类高风险安全问题,包括高危漏洞、高危端口和弱口令,它们为攻击者提供了直接的入侵途径,是监管部门在网络安全检查中最常发现且危害性极高的安全缺陷。高危漏洞指软件或系统中存在的严重安全缺陷,可被远程利用获取系统控制权;高危端口指默认开放或不必要开放的网络端口,易成为攻击入口;弱口令指简单、易猜测或默认的密码,使得攻击者能轻易破解账户权限。这些问题通常由于安全配置不当、未及时修补更新、缺乏安全意识等原因造成,可能导致数据泄露、系统被控、服务中断等严重后果,对个人、企业及关键信息基础设施构成重大威胁。
特征
高危漏洞(High-Risk Vulnerability)是指软件、操作系统或应用程序中存在的严重安全缺陷,攻击者可利用这些缺陷远程执行恶意代码、获取系统控制权或窃取敏感数据,通常具有远程利用、影响范围广、危害性极高等特征。这类漏洞的特征包括:可利用性高,攻击者无需复杂的交互或高权限即可发起攻击;危害性严重,可能导致系统完全被控制、数据大规模泄露或服务完全中断;影响范围广泛,往往存在于用户基数大、部署广泛的流行软件或系统中;此外,许多高危漏洞在公开披露前可能已被攻击者秘密利用(零日漏洞),且官方补丁发布后用户未能及时更新修复,进一步延长了攻击窗口期。
高危端口(High-Risk Port)是指默认开放或不必要开放的网络服务端口,这些端口通常对应着存在已知安全风险或配置不当的服务,极易成为攻击者入侵系统的入口。其典型特征包括:对应服务存在固有安全缺陷或默认配置不安全,如FTP(21端口)的明文传输、SSH(22端口)的弱口令和暴力破解风险、远程桌面协议RDP(3389端口)的认证绕过漏洞以及Docker API(2375端口)的未授权访问问题;这些端口通常被安全扫描工具和攻击者重点关注,是网络攻击的常见目标;此外,许多高危端口在系统中默认开启且管理员缺乏安全意识,未进行必要的访问控制、加密或关闭处理,从而为攻击者提供了直接的攻击路径。
弱口令(Weak Password)是指安全性极低、容易被猜测或破解的账户密码,其特征表现为密码强度不足、缺乏复杂性和独特性,使得攻击者能够通过字典攻击、暴力破解或社会工程学手段轻易获取访问权限。弱口令的典型特征包括:密码长度过短(通常少于8位字符);仅使用纯数字、简单字母序列或常见词汇(如“123456”、“password”、“admin”等);缺乏复杂度组合,未混合使用大小写字母、数字和特殊符号;使用与账户名、公司名或个人生日等公开信息相关的易猜测内容;长期不更换密码或在不同系统中重复使用相同密码;此外,许多系统和设备出厂时预设的默认密码未被修改,也成为攻击者轻易入侵的突破口。
处理方法
高危漏洞的处理应遵循“发现-评估-修复-验证”的闭环管理流程。首先,建立常态化漏洞扫描机制,利用自动化工具定期检测系统漏洞,重点关注远程代码执行(RCE)、反序列化、认证绕过等高危类型。其次,实施基于风险的分级处置策略,优先修复影响关键系统、可被远程利用且已有公开攻击代码的漏洞,修复优先级建议为:RCE > 反序列化 > 认证绕过 > 文件上传 > SQL注入。最后,所有安全补丁必须在测试环境充分验证兼容性后再滚动部署至生产环境。
高危端口的管理需采用“最小化开放”和“纵深防御”原则。第一步是端口最小化,通过扫描测绘和内部审计,识别并关闭非必要的对外服务端口,特别是FTP(21)、SSH(22)、RDP(3389)、SMB(445)等常见攻击入口。第二步是强化访问控制,对必须开放的端口实施严格的网络访问策略,包括IP白名单限制、网络隔离(VLAN划分)和防火墙规则细化。第三步是部署主动防御机制,利用入侵防御系统(IPS)监控高危端口的异常流量,并设置蜜罐系统诱捕扫描行为、收集攻击情报,同时定期进行渗透测试以验证防护有效性。
弱口令的治理需要技术控制与管理措施相结合。技术层面,强制实施强密码策略,要求密码长度至少8位,且必须混合使用大小写字母、数字和特殊字符,并定期(如90天)强制更换密码;同时部署账户保护机制,包括登录失败锁定(尝试3-5次后锁定账户)、异常登录检测(异地/非常规时间登录告警)和多因素认证(MFA)。管理层面,定期使用弱口令检查工具审计所有账户密码强度,对检测出的弱口令立即强制修改;加强员工安全意识培训,杜绝使用“123456”、“admin”等常见弱口令和默认密码,并建立密码管理制度,明确各类账户的密码复杂度要求和保管责任。
结束语
网络安全事件的应急响应是一项系统性、专业性和时效性极强的工作。本文针对勒索病毒、挖矿病毒、银狐木马、C2连接等常见的网络安全事件,详细阐述了各类威胁的基本特征、传播途径和处置方法。在实际应急响应过程中,需要根据具体情况灵活运用技术手段和管理措施,快速识别、精准定位、有效处置,将安全事件的损失降至最低。
应急响应的核心在于"快速响应、科学处置"。一旦发现安全事件,首先要立即隔离受感染系统,防止威胁扩散到内网其他设备;然后要系统性地开展排查工作,既要清除恶意程序本身,又要彻底消除持久化机制和入侵通道;最后要深入分析攻击路径,修补安全漏洞,完善防护体系,从根本上提升系统的安全防护能力。
同时,网络安全事件的发生往往暴露出组织在安全管理方面的薄弱环节。每一次安全事件都应该成为改进安全工作的契机,通过事件复盘总结经验教训,完善安全管理制度,加强技术防护措施,提升人员安全意识,构建"技术+管理+运营"三位一体的网络安全防护体系。
网络安全没有绝对的安全,只有相对的安全。在当前网络安全形势日益严峻的背景下,企业和组织必须树立主动防御的理念,从被动应对转向主动预防,建立常态化的安全监测、漏洞管理和应急响应机制。定期开展安全风险评估、渗透测试和应急演练,及时发现和消除安全隐患,提升整体安全防护水平。
最后,网络安全是一项需要持续投入和不断改进的工作。随着攻击技术的不断演进和安全威胁的日益复杂,我们需要持续学习最新的安全知识、跟踪威胁情报动态、更新防护技术手段,始终保持对安全威胁的高度警惕和快速响应能力,为业务系统的安全稳定运行提供坚实保障。
《常见网络安全事件通报类型与应急处置》链接:https://xdym11235.com/archives/323.html
具体版权规定详见侧栏版权说明页面