找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

  • QQ空间
  • 回复
  • 收藏
科普简介:Docker在渗透中的应用
起因
环境因素影响,我他么路由器映射端口 msf就是反弹不回来session,在跟大牛交流后,大牛说服务器装个kali就行了,我以为是叫idc那边直接安装,但是因为这个系统特殊,很多 idc不允许安装这个的,不过很多国外的idc倒是允许自行上传iso镜像,自行安装。
Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。来自Docker_百度百科 (不懂的自行科普)
Docker值得关注的特性
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式shellDocker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次***shell
Docker通常用于如下场景
web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShiftCloud Foundry平台来搭建自己的PaaS环境。
实验环境
外网vps服务器一台(注:内存超过2g
实验环境中是一台centos6.7 64位的系统
官方文档要求Linux kernel至少3.8以上,且docker只能运行在64位的系统中,由于RHEL6CentOS6的内核版本为2.6,因此必须要先升级内核。(实验环境中内核升级后是2.6.32-573.7.1.el6.x86_64)额,官方说至少3.8以上,我也不理解。这里我们docker容器为(kali)
实验环境中我是直接
  1. yum update
复制代码
安装方法很多,自行科普。
开始安装Docker
  1. curl -sSL https://get.docker.com/ | sh
复制代码
安装完毕后启动服务
  1. /etc/init.d/docker start
复制代码
查看是否启动成功
docker参数


搜索docker可用镜像

docker search ****  (搜索kali)

  1. docke  pull kalilinux/kali-linux-docker
复制代码

执行pull命令的时候要写完整的名字,比如”docker  pullkalilinux/kali-linux-docker”

额,我已经装好了就不截图了。

docker容器(kali)中 运行“hello 90sec”(文中的kali容器我自己改名过的,安装哪个镜像就是哪个镜像的名字,原:kalilinux/kali-linux-docker)
在容器中安装程序
这样安装是否太麻烦,那么我直接进入系统直接安装所要的程序吧。

进入容器(kali
  1. docker run -i -t kali
复制代码
更新一下
  1. apt-get update
复制代码
更新完毕后kali中的所有软件只要想用的 都可以自己安装
下面我们安装msf
  1. apt-get install metasploit-framework
复制代码
安装完毕后启动postgresql
  1. /etc/init.d/postgresql start
复制代码
启动msf
docker 可以自动化打包和发布,你可以把你需要的都安装进容器里面,并且发布,方便自己以后使用。(打造一个属于自己的渗透测试环境是不是很方便,当然docker的应用还有很多)
接下来退出容器,并且保存
查看容器的id
  1. docker ps -l
复制代码
保存容器
  1. docker commit id kali
复制代码
感觉就每次使用都要保存,好麻烦。(嘿嘿,每次渗透的记录都不会被保存不挺好的嘛,取证就不太方便了。)
安装好后,会自动分配个内网ip到容器中,并且每次登录的ip都是不一样的。
细心点的同学会发现,容器中的内核是跟宿主机的内核一样的
每次保存也就等于快照一样。
小技巧:
由于容器中的msf ip是内网的 启动容器的时候可以映射端口,加上p参数就行。
  1. docker run -i -t -p 53:53 kali
复制代码
也可以共享目录,v参数
  1. docker run -i -t -p 53:53 -v /mnt:/mnt kali
复制代码
基本就这样了,发一些自己刚玩整理的命令。
启动一个退出的容器:
  1. docker start CONTAINERID
复制代码
attach到运行中的容器:
  1. docker attach CONTAINERID
复制代码
查看安装的镜像:
  1. docker images [NAME]
复制代码
docker容器中运行命令:
  1. docker run IMAGE [COMMAND] [ARG...]
复制代码
docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
注意:IMAGE=REPOSITORY[:TAG],如果IMAGE参数不指定镜像的TAG,默认TAGlatest
列出容器:
  1. docker ps -a
复制代码
查看最近生成的容器:
  1. docker ps -l
复制代码
查看正在运行的容器:
  1. docker ps
复制代码
停止正在运行的容器:
  1. docker stop CONTAINERID
复制代码
启动一个退出的容器:
  1. docker start CONTAINERID
复制代码
删除容器:
  1. docker rm CONTAINERID
复制代码
查看所有容器ID
  1. docker ps -a -q
复制代码
删除所有的容器:
  1. docker rm $(docker ps -a -q)
复制代码
删除镜像:
  1. docker rmi IMAGE
复制代码
P神补充:
docker使用完成后并不用保存。
注意区分镜像和容器的区别,使用完成后是一个docker容器,退出后,执行如下操作即可重启容器并再次进入:
  1. 查看容器id
  2. docker ps -a
  3. 启动容器
  4. docker start xxx
  5. 容器中执行bash并进入交互式shell
  6. docker exec -it xxx /bin/bash
  7. 在容器中,按ctrl + p再按ctrl + q退出容器,但不结束bash
  8. 下次执行
  9. docker attach xxx
  10. 即可再次进入此bash
复制代码
只有当你觉得需要保存成镜像的时候才执行commit



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表评论
您需要登录后才可以回帖 登录 | 注册