别只盯着Web日志!一次Windows服务器被黑,我是这样用系统日志和FTP记录挖出攻击链的
从Windows系统日志到FTP记录一次完整的服务器入侵溯源实战深夜的应急响应中心刺眼的告警提示打破了宁静。大多数安全工程师的第一反应是打开Web访问日志开始排查——这几乎成了行业条件反射。但真实攻击往往发生在你最意想不到的角落。上周处理的一起服务器入侵事件再次验证了这点攻击者通过FTP弱口令突破防线而Web日志中几乎找不到关键证据。本文将完整还原如何通过Windows系统日志与FTP记录的交叉分析构建出攻击者的完整行动链。1. 初始线索那些被忽略的高危系统事件当D盾扫描出system.php这个Webshell时多数人会立即转向Apache或IIS日志。但经验告诉我们系统层面的异常往往更早出现。打开事件查看器重点关注三类关键日志1.1 登录事件中的蛛丝马迹Windows安全事件ID 4624成功登录和4625失败登录是追踪入侵的黄金数据源。通过以下PowerShell命令可快速提取关键信息Get-WinEvent -FilterHashtable { LogNameSecurity ID4624,4625 } | Select-Object -First 100 | Format-Table TimeCreated,Id,Message -AutoSize在本次事件中我们发现了异常模式异常时间段的登录凌晨3点的管理员登录非常用IP段连接192.168.126.129这个内网IP从未出现在正常运维记录中登录类型异常类型10远程交互式登录出现在非跳板机上1.2 用户账户操作的红色警报攻击者建立持久化访问的典型手法是创建隐藏账户。事件ID 4720用户创建和4724密码重置需要特别关注。通过日志筛选发现关键证据事件ID时间账户名执行者47202023-05-18 02:17:33hack887$SYSTEM47242023-05-18 02:18:01hack887$192.168.126.129注意隐藏账户的命名常带有$符号但现代攻击者会模仿系统账户命名规范如sqlagent$1.3 进程创建日志的关联分析Sysmon日志中的事件ID 1进程创建可以还原攻击者执行的操作链。以下命令可提取可疑进程# 提取非系统路径启动的进程 Get-WinEvent -Path .\Security.evtx | Where-Object { $_.Id -eq 1 -and $_.Properties[5].Value -notmatch ^C:\\Windows\\ } | Select-Object TimeCreated,{nProcess;e{$_.Properties[0].Value}}分析发现攻击者在创建账户后立即执行了通过certutil下载恶意脚本执行PowerShell内存加载攻击载荷启动内网扫描工具2. FTP日志被低估的攻击入口当Web日志没有明显入侵痕迹时运维人员常陷入死胡同。本案例中PHPStudy默认开启的FTP服务成为了突破口。2.1 暴力破解的典型特征FTP服务日志默认位于C:\phpStudy\PHPTutorial\ftp\logs显示以下攻击模式05/18 02:05:12 [192.168.126.129] USER admin 05/18 02:05:13 [192.168.126.129] PASS ****** 05/18 02:05:13 [192.168.126.129] LOGIN FAILED 05/18 02:05:15 [192.168.126.129] USER admin 05/18 02:05:16 [192.168.126.129] PASS ****** 05/18 02:05:16 [192.168.126.129] LOGIN SUCCESS关键识别点高频失败尝试短时间内连续登录失败成功后的异常操作立即执行LIST和STOR命令非业务时段活动凌晨时段的成功登录2.2 文件上传的取证分析攻击者获取FTP权限后的标准操作流程上传Webshell到可执行目录如/wwwroot/创建持久化后门脚本清理日志痕迹但Windows仍保留安全事件日志通过FTP传输日志可定位恶意文件05/18 02:17:22 [192.168.126.129] STOR system.php 226 05/18 02:18:45 [192.168.126.129] STOR nc.exe 226专业提示对比文件哈希与服务器原始文件使用certutil -hashfile system.php SHA256获取指纹3. 证据链构建从碎片到全景单一日志源只能呈现片面信息真正的调查艺术在于关联分析。以下是本案例的完整攻击链重建3.1 时间线梳理时间事件类型关键证据关联IP02:05-02:15FTP暴力破解admin/admin666888成功登录192.168.126.12902:17:33用户创建隐藏账户hack887$建立SYSTEM02:18:01密码修改为hack887$设置新密码192.168.126.12902:17:22文件上传system.php写入web目录192.168.126.12902:30:45远程登录hack887$通过RDP连接192.168.126.1353.2 工具痕迹分析在C:\Users\hack887$\AppData\Roaming路径下发现攻击工具集FRP客户端用于内网穿透[common] server_addr 45.76.188.209 server_port 5443密码抓取工具Mimikatz的使用痕迹横向移动脚本批量扫描内网主机的PowerShell脚本3.3 入侵路径还原初始访问通过PHPStudy默认FTP弱口令admin/admin666888进入系统权限提升利用FTP写权限上传Webshell获取执行权限持久化创建隐藏账户hack887$并加入管理员组横向移动通过RDP连接进行内网渗透数据外传使用FRP建立稳定隧道4. 防御升级基于攻击手法的防护策略传统依赖Web日志的防御体系存在明显盲区。建议实施以下改进措施4.1 日志收集的全面性必须监控的日志源清单系统层安全事件、Sysmon、PowerShell操作日志应用层FTP、数据库、中间件访问日志网络层防火墙放行记录、IDS/IPS告警4.2 实时检测规则示例使用SIEM工具部署以下检测规则# FTP暴力破解检测 rule: ftp_bruteforce condition: same_source_ip ftp_failed_logins 5 within 1m action: alert(Possible FTP brute force attack from source_ip) # 隐藏账户创建检测 rule: hidden_account_creation condition: event_id 4720 and target_username matches /\$$/ and not target_username in whitelist action: block_ip(source_ip)4.3 加固配置清单针对本次攻击暴露的脆弱点FTP服务禁用匿名登录设置强密码策略至少12位含特殊字符限制源IP访问范围系统账户# 检测隐藏账户 Get-LocalUser | Where-Object {$_.Name -like *$ -and $_.Name -notin (ASPNET$,SQL$)} # 禁用默认管理员共享 Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters -Name AutoShareWks -Value 0
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467096.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!