LoginSignup
4
7

More than 3 years have passed since last update.

CTF用にUbuntuのDocker Imageファイルを作成する

Last updated at Posted at 2020-05-28

概要

バイナリ(実行ファイル)解析用PythonパッケージAngrを中心とした、CTF用のコマンド類をまとめてインストールしたコンテナを作って、Imageファイルにしておくと何かと便利かなと思ったので、作り方を記録しておく。

手順

以下の作業はWindows10上のVirtualBoxで稼働するUbuntuで検証。

Ubuntu上でUbuntuコンテナを作成

[端末]を起動し、以下のコマンドを実行。

docker run -it --name ubuntu_base ubuntu

DockerImage_001.png

apt update

DockerImage_002.png
DockerImage_003.png

Ubuntuコンテナにいろいろinstall

python3

apt install python3

DockerImage_004.png
yを入力し[Enter]
DockerImage_005.png

apt install python3-pip

DockerImage_006.png
DockerImage_007.png
yを入力し[Enter]
DockerImage_008.png

Angr

pip3 install angr

DockerImage_009.png
DockerImage_010.png

イメージ作成

コンテナを停止し、状態を確認。Dockerイメージを作成

exit
docker ps
docker ps -a
docker commit ubuntu_base ubuntu4ctf1

DockerImage_101.png

作成結果を確認した後、イメージをファイルに出力。
出力ファイルを圧縮して、最終確認。

docker images
docker save ubuntu4ctf1 -o ubuntu4ctf1.tar
zip ubuntu4ctf1.zip ubuntu4ctf1.tar
ls -la ubuntu4ctf1*

DockerImage_102.png

コマンド追加

とりあえず、できたみたいなので、コマンドを追加してみる。
コンテナの状態を確認してから、再度コンテナを起動。

docker images
docker ps
docker ps -a
docker run -it --name ubuntu4ctf1_base ubuntu4ctf1

DockerImage_201.png

gdbの追加

apt install gdb

DockerImage_202.png
yを入力し[Enter]キーを押下。
DockerImage_203.png
6を入力し、[Enter]キーを押下。
DockerImage_204.png
[Enter]キーを押下。
DockerImage_205.png
79を入力し、[Enter]キーを押下。
DockerImage_206.png

その他

同じ要領で以下のコマンドをインストール

apt install strace
apt install ltrace
apt install netcat
apt install curl
apt install nmap

イメージ作成

exit
docker ps
docker ps -a
docker commit ubuntu4ctf1_base ubuntu4ctf2

DockerImage_301.png

作成結果を確認後、イメージをファイルに出力

docker images
docker save ubuntu4ctf2 -o ubuntu4ctf2.tar
zip ubuntu4ctf2.zip ubuntu4ctf2.tar
ls -la ubuntu4ctf2*

DockerImage_302.png

イメージからコンテナを作成

mkdir d_share
docker run -it --mount type=bind,src=$PWD/d_share,dst=/tmp/share --name ctf2 ubuntu4ctf2

DockerImage_303.png

別マシンの別OS上で稼働

CentOS8をインストールした環境には、Dockerと互換のpodmanがインストールされている。
作成したコンテナが正しく動作するか検証する。

以下の作業はWindows10上のVirtualBoxで稼働するCentOSで検証。

cp /tmp/ubuntu4ctf2.zip .
unzip ubuntu4ctf2.zip
podman images
podman ps -a

DockerImage_401.png
既存のコンテナが存在しないことを確認。

podman load -i ubuntu4ctf2.tar
podman images
podman ps -a
podman run -it ubuntu4ctf2
python3
import angr
exit()

DockerImage_402.png
正しく動作した。

参考URL

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7