当前位置: 首页 > news >正文

第二届“Parloo”CTF应急响应挑战赛实战复盘:从Webshell追踪到内网渗透

1. 初识Webshell:攻击者的敲门砖

去年参加第二届Parloo杯CTF时,我遇到了一道典型的应急响应题目。攻击者通过上传Webshell成功入侵了服务器,这让我想起现实中80%的网站入侵都始于Webshell。Webshell本质上是一个藏在Web目录下的脚本文件,比如PHP、JSP或者ASPX,攻击者通过它就能在浏览器里执行系统命令。

当时题目给的Nginx日志里藏着关键线索。我花了半小时在/var/log/nginx目录下翻找,终于发现攻击者上传的a.php文件。这里有个实用技巧:用grep -r "eval(" /var/log/nginx快速搜索危险函数。日志显示攻击IP是192.168.1.100,但老手都会用代理,所以真正的突破口在文件上传时间戳——2025-05-05 00:04:40,这正是暴力破解开始的时间点。

2. 日志分析的三个黄金法则

分析Web日志时我总结了三步法:

  1. 异常状态码筛选cat access.log | grep -E "404|500"找异常请求
  2. 高频IP定位awk '{print $1}' access.log | sort | uniq -c | sort -nr
  3. 时间轴关联:用sed -n '/05\/May\/2025:00:00/,/05\/May\/2025:01:00/p' access.log锁定攻击时段

在比赛中发现攻击者还尝试了PHPMyAdmin爆破。通过docker日志找到关键记录:

docker logs web_app | grep -i "failed login"

这揭示了第二个攻击IP:192.168.1.101。有趣的是,这两个IP其实属于同一团伙,一个负责扫描,一个负责渗透。

3. 恶意软件分析的实战技巧

PC01上的简历.exe是个经典钓鱼样本。用微步云沙箱分析时,发现它外联到88.173.90.103:8084。本地分析更直接:

netstat -ano | findstr "8084" strings resume.exe | findstr "http"

样本的MD5是32位大写哈希值,这是取证的关键标识。更狠的是,攻击者在PC02创建了隐藏账户,用DiskGenius导出SAM数据库后,用猕猴桃(mimikatz)轻松破解:

impacket-secretsdump -sam SAM -system SYSTEM local

4. 内网横向移动的常见套路

进入内网后,攻击者主要通过三种方式扩散:

  • SSH爆破:在ssh_server发现parloo/parloo弱口令
  • 恶意服务systemctl list-units --type=service查获rootset后门服务
  • 计划任务:在PC02的Task Scheduler里发现恶意脚本

最绝的是攻击者修改了/usr/bin/id程序,这是典型的命令劫持。用以下命令快速检测:

ls -alh /usr/bin /bin | grep -v "root"

5. 权限维持的六种隐蔽手段

比赛中发现的权限维持技术堪称教科书级别:

  1. 隐藏账户:Hack用户加上$符号
  2. 启动项:/etc/rc.local注入恶意命令
  3. 服务后门:parloohack_script.service
  4. SSH公钥:.ssh/authorized_keys被篡改
  5. CronJob:/etc/crontab添加反向shell
  6. 动态库劫持:LD_PRELOAD注入

取证时用lsof -i :9999发现了C2连接,IP是10.12.12.13:9999,用的竟然是Shiro反序列化漏洞。

6. 溯源分析的三个关键突破点

  1. 邮箱追踪:从钓鱼样本逆向得到n0k4u@outlook.com
  2. GitHub关联:通过邮箱反查发现ParlooSEc账号
  3. 浏览器历史:在PC02的Chrome里找到C2管理后台密码

有个骚操作是攻击者在Gitea的commit里藏了flag,用这个命令找到线索:

git log -p | grep -i "flag"

7. 数据解密实战:自定义算法破解

遇到桌面上加密的txt文件时,先用已知明文"palu{"反推密钥。Python解密脚本如下:

def custom_decrypt(ciphertext, key): decrypted = [] key_bytes = [ord(c) for c in key] for i in range(0, len(ciphertext), 2): hex_byte = ciphertext[i:i+2] substituted = int(hex_byte, 16) xored = ((substituted & 0x0F) << 4) | ((substituted & 0xF0) >> 4) xor_key = key_bytes[(i//2) % len(key_bytes)] shifted = xored ^ xor_key original_char_code = shifted - ((i//2) % 5 + 1) decrypted.append(chr(original_char_code)) return ''.join(decrypted) print(custom_decrypt("c3a1c3c13e326020c3919093e1260525045e", "MySecretKey"))

最终解密出flag:palu{Password-000}

8. 防御建议:从比赛中学到的实战经验

  1. Webshell防护:在nginx配置添加以下规则:
location ~* \.(php|jsp)$ { deny all; }
  1. 日志监控:用Fail2Ban自动封禁爆破IP
  2. 权限控制:定期检查sudoers文件
  3. 文件完整性校验aide --check监控关键目录
  4. 网络隔离:重要服务限制内网访问

那次比赛最后在PC03的内网通聊天记录里找到终极flag。攻击者伪装成同事发送钓鱼文件,这提醒我们:技术防护再强,人也可能成为突破口。每次CTF都是一次攻防演练,而这些实战经验,正是防御真实攻击的最佳教材。

http://www.jsqmd.com/news/641128/

相关文章:

  • Git Submodule 深度避坑指南:从“能用”到“好用”的协作进阶
  • 基于Ubuntu 24.04与MariaDB构建Zabbix 7.0云服务器监控体系
  • 成都地区宝钢产无缝钢管(8163-20#;外径42-630mm)现货报价 - 四川盛世钢联营销中心
  • claude4
  • 别再乱选二极管了!BUCK/BOOST电路续流与整流二极管实战避坑指南
  • 3分钟上手Keyviz:让你的键盘操作像电影特效一样炫酷
  • Windows防火墙如何放行WSL2?手把手教你设置入站规则(含常见错误排查)
  • Cesium中高效集成天地图WMTS服务的实战指南
  • Axure中文界面安装指南:3步告别英文困扰,让原型设计更高效
  • 鲲鹏麒麟环境下MySQL5.7离线部署全流程解析
  • AIMP:轻量级音乐播放器解决音频播放与管理的常见问题
  • 告别网盘限速困扰:八大网盘直链下载助手完全指南
  • 告别复制粘贴!深入理解GD32F407的GPIO配置:推挽、开漏、复用AF到底怎么选?
  • AutoCAD字体管理终极指南:FontCenter免费插件完整解决方案
  • 为什么 Multi-Agent 是技术创业者的最大机会
  • STL体积计算器:3D打印模型体积与重量估算完整指南
  • Java SPI实战:从零实现一个可插拔的日志框架(附完整代码)
  • Noto字体:告别豆腐块困扰,打造完美多语言显示体验
  • 告别需求文档焦虑:用Spec-Kit + Claude Code,5分钟搞定你的C++五子棋项目规划
  • 当网盘限速成为日常,这款工具如何让我重获下载自由?
  • 从零到部署:为你的UG/NX二次开发插件制作专业级菜单界面(MenuScript实战指南)
  • 如何在OBS中实现免费本地AI语音识别:LocalVocal完全指南
  • 保姆级教程:在Linux下排查PCIe RootPort Completion Timeout错误(附抓包与日志分析)
  • MogFace人脸检测模型-WebUI实操手册:Linux服务器部署、日志排查、性能调优
  • 揭秘LLaVA-ViL-Flamingo三大主流多模态模型的“黑箱决策路径”:如何用Grad-CAM++与Concept Activation Vector精准定位图文推理漏洞?
  • 【Scala PyTorch深度学习】PyTorch On Scala 系列课程 第五章 10 :数据集【AI Infra 3.0】[PyTorch Scala 硕士研一课程]
  • 告别环境配置焦虑:在Ubuntu 22.04上5分钟搞定ESP-IDF v5.4.2(含永久串口权限设置)
  • 本地化基因ID转换工具开发指南:从NCBI数据到高效pipeline集成
  • WinRAR弹窗广告终极去除指南
  • 告别sasquatch报错:手把手教你用squashfs-tools 4.5+搞定binwalk解压lzma压缩的固件