记一次docker 容器被黑总结

前记

好久没写文章了,一是由于本身的知识较为零散,另外一个就是比较懒了,大多都零碎记录在了本地。

好久没有登陆osc,登陆的时候发现帐号被冻结了,激活才能使用,这个安全功能给个赞,不过貌似存在邮件轰炸功能,可测,不表于此。

今天就简单说下最近遇到的一次业务jenknis docker容器被黑后排查的故事。

初步分析

1. 进入主机,排查history文件,进程,系统命令,常见文件,网络通讯等基本方面。
2. ps/netstat/psof等系统命令文件被替换、存在异常进程名、存在大量异常端口通讯、/tmp、/etc等目录存在可疑文件。
3. 从以上等特征初步分析为gates系列木马变种,含挖矿与ddos功能。
4. 根据业务已有对外网开放的服务及其余方面确认,这次被黑是由于5月份出现的jenknis反序列化漏洞致使,因此在history文件也就没有找到太多有价值的东西。

专向docker

既然系统自己没有太多日志,并且鉴于漏洞的利用方式,转向排查docker jenknis容器的日志或系统的syslog日志(syslog日志不排除被删)。

docker logs

# 查看容器2eb09877d1b0的运行日志,默认来自系统的/dev/stderr和/dev/stdout
docker logs 2eb09877d1b0

# 查看容器2eb09877d1b0 2017-06-17日开始的100条日志
docker logs -f -t --since="2017-06-17" --tail 100  2eb09877d1b0 

# 上面语句可能存在一个问题,没法导出含stderr的docker logs、没法grep查看docker logs日志
# grep查看含有特定字符的日志行
docker logs 2>&1 | grep hello
docker logs 2>/dev/null | grep hello

# 导出docker logs,查找docker 容器日志存放目录
docker inspect --format='{{.LogPath}}' 2eb09877d1b0

调查结果

从docker容器日志里能够详细看到每一次jenknis报错信息中含有的攻击者执行的命令字符串,至此基本肯定了最先的攻击时间和攻击流程。

未完成的遗憾

一次完美的溯源应该是查清谁于什么时间经过什么方式黑进来,作了什么事情。
而这次溯源中出现了一点不完美是由于docker logs没有记录源ip。

后来查询官方文档后,自定义了docker logs记录的数据来源与日志格式,详细参考:
https://github.com/nginxinc/docker-nginx/blob/8921999083def7ba43a06fabd5f80e4406651353/mainline/jessie/Dockerfile#L21-L23
https://docs.docker.com/engine/admin/logging/view_container_logs/
相关文章
相关标签/搜索