通过 HIDS 告警分析 webshell 行为
作者 | Autumnechoed
文章中敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!
| 准备漏洞环境 |
1. 下载 vulhub 仓库
git clone https://github.com/vulhub/vulhub.git
2. 修改 tomcat 弱口令漏洞环境配置
vi vulhub/tomcat/tomcat8/tomcat-users.xml
将配置文件中的 user 和 password 修改为非弱口令
3. 启动漏洞环境(根据实际 docker 环境选择下面两个命令)
docker compose -f vulhub/tomcat/tomcat8/docker-compose.yml up -d
# or
docker-compose -f vulhub/tomcat/tomcat8/docker-compose.yml up -d
| 准备 HIDS 环境 |
1. 安装 HIDS 探针(有什么装什么,不做演示?)
2. 更新探针资产(初装探针无需更新)
| 入侵及 HIDS 告警分析 |
1. 使用 webshell 管理工具(godzilla)生成 java webshell
2. 通过 tomcat 弱口令漏洞上传 webshell
添加 shell.jsp 到 shell.jsp.war
打开 tomcat manager app,使用默认账号密码登录
部署 shell.jsp.war 到 tomcat 中
查看并分析 HIDS 告警信息
根据 webshell 告警中的容器 ID 关联信息,可以看到容器名为 vulhub/tomcat8.0
3. 连接 webshell 并执行系统命令
使用 godzilla 连接 webshell
执行 whoami 查看系统用户信息
HIDS 产生告警(网络应用执行基本信息查询命令)
分析告警详情中进程树信息进程树
通过告警详情中的进程树可以看到,HIDS 清晰记录了可疑命令的进程树以及详细的系统命令。根据进程树信息我们可以得知,攻击者执行的可疑命令为 whoami,被入侵的是一个在 docker 容器内由 java 启动的服务。攻击者执行系统命令的方法是通过 sh -c "{command}" 来实现的。
分析告警应用信息中网络应用信息
根据告警详情中的网络应用信息,可以得知本次入侵中被利用的服务是 tomcat,监听在 8080\8089\8005 端口,运行权限为 root。
4. 判断主机是否出网
打开 dnslog 平台获取 dnslog 地址
通过 godzill 连接 shell 执行 ping dnslog 的命令
查看 dnslog 平台是否接收到信息
查看 hids 告警信息(可疑命令 && 网络请求)
通过告警信息分析入侵行为
与上面分析执行系统命令的思路一致就不再赘述,唯一存在差异的点在于,dnslog 请求预期会触发两种类型的告警(进程检测 && 网络检测)。
因为我测试使用的 HIDS 网络异常请求可以关联进程及容器等信息,所以不展开分析进程异常告警了(偷懒)。
| 总结&建议 |
本文通过简单的漏洞环境及利用手段复现攻击者入侵 web 服务的过程;
以HIDS 运维人员角度进行分析,旨在帮助大家通过 HIDS 告警对攻击者的入侵链及行为进行分析;
本文中操作相对基础,建议大家可以作为告警分析练习题,类比到更多入侵场景及自己现阶段在使用的 HIDS 中(浅卷下各家HIDS);
评论区欢迎大家晒出HIDS进程树呀,一起交流,共同进步(握拳)。
精彩推荐