赞
踩
1、最近时常收到阿里云安全中心的告警信息-服务应用执行可疑命令,如下图所示
现在有时间后,可以好好研究下这个问题了。
命令行: docker-untar /home/xxx/docker/devicemapper/mnt/735440904d99308126bfc001df5750783fdd2f7f72a209c33e8d16fb9f53de72/rootfs/home/tutor/.ssh/authorized_keys null
摘自互联网:
docker-untar , 通过reexec机制来解包,打包数据流以stdin的方式传入。该实现使用Docker的reexec机制,所以必有注册的地方,来看/pkg/chrootarchive/init_unix.go:
- func init() {
- reexec.Register("docker-applyLayer", applyLayer)
- reexec.Register("docker-untar", untar)
- }
所以docker的”docker-untar”由untar()函数完成功能执行,untar定义在/pkg/chrootarchive/archive_unix.go中:
- func untar() {
- runtime.LockOSThread()
- flag.Parse()
- var options *archive.TarOptions
- //read the options from the pipe "ExtraFiles"
- if err := json.NewDecoder(os.NewFile(3, "options")).Decode(&options); err != nil {
- fatal(err)
- }
- if err := chroot(flag.Arg(0)); err != nil {
- fatal(err)
- }
- //***从stdin中获取***//
- if err := archive.Unpack(os.Stdin, "/", options); err != nil {
- fatal(err)
- }
- // fully consume stdin in case it is zero padded
- if _, err := flush(os.Stdin); err != nil {
- fatal(err)
- }
- os.Exit(0)
- }
untar()会调用archive包的Unpack()实现从Stdin中解包数据。Unpack()会把数据流解包到容器指定目录中。
父进程命令行: /usr/bin/docker -d --debug=true --storage-opt dm.loopdatasize=500G --storage-opt dm.loopmetadatasize=8G --storage-opt dm.mountopt=nodiscard --storage-opt dm.blkdiscard=false --selinux-enabled=false -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --api-enable-cors=true -g /home/xxx/docker -p /home/xxx/docker/docker.pid --insecure-registry=hub.xxx.com:5000
通过分析告警信息,初步判断是docker进程在操作authorized_keys触发阿里云HIDS得告警
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。