こんにちは。kzです。

今回は久しぶりにセキュリティ関連の記事です。ちなみに前回は

をやりました。あれからGhidraがなぜか動かなくなって困っているんですよね僕。それはいいとして今回はdockerでkalilinuxの環境構築です。

KaliLinuxとはなんぞや?

このページを見ている方の大多数はMacかWindowsかLinuxを使っておられると思います。僕はMacです。そしてそれぞれOSというものがあります。今回扱うKaliLinuxとはLinuxOSの一種であり、ペネトレーションなどのセキュリティに優れています。ちなみに双子の兄弟的な存在のParrotOSというものもあります。

Dockerとはなんぞや?

例えばこんな状況があります。

  • Macbook使ってるけどWordとか使えへんしWindows使いたいわぁ
  • Windowsとりあえず生協で買ったけどLinux使ってみたい
そんな時に、Dockerが有効です。簡単にいうと今あるPCで別のOSが使えるんです。ちなみに同じことを達成する方法として

  • Virtual Machine
  • Vagrant
  • Dual Boot
などが僕の知ってる限りあるんですが僕みたいな初心者は上記はとりあえずやめましょう。そしてDockerを使いましょう。利点をズバリ簡潔にいうと「速い・軽い・楽」につきます。ということでインストールしましょう。

Kitematicとはなんぞや?

これはGUIでdockerが使える便利ツールです。GUIがわからない方は次をイメージしてください。

  • GUIは.ipynb
  • CLIは.py
とにかく初心者の方が使いやすい(コマンドを打ち込みまくらなくていい)ものがGUIなんです。
ということでダウンロードしましょう。

kalilinuxのコンテナをゲットする

まずはインストールしたDockerをアプリケーションから起動しましょう。すると下のようにメニューバーのクジラのアイコンを押すと少し経ってから緑になります。
次にKitematicを起動します。
左にあるのがコンテナです。多分みなさんはまだ空のはずです。ちなみにDockerfileは下のものです。

Createしたら左にコンテナが生成されると思うのでそれをクリックしてから
するとTerminal(Windowsの方はCommandPrompt)が開くと思います。ちなみに僕はItermというオシャンティなやつを使ってます。

ツールのInstall

これでKaliLinuxが使える状態にはなりましたが、色々とツール(パッケージ)をインストールする必要があります。なのでやっていきましょう。
パッケージをインストールする前に必ずすべきコマンドが二つあります。

  • apt-get update
  • apt-get upgrade
です。apt-getとはパッケージマネージャーです。pipみたいなやつです。KaliLinuxはDebianベースのLinuxなのでapt-getになります。ではインストールしていきましょう。

  • apt-get install vim
  • apt-get install nmap
  • apt-get install metasplot-framework
他にもインストールしたい方はぜひ。最後にインストールしたmetasplotは有名なやつです。(僕はスクリプトキティ、、、)実際に起動してみましょう。

  • msfconsole
アスキーアートは起動毎に変わります。無事起動できました。exitで抜けられます。

イメージの保存

今色々パッケージをインストールしました。これを元に新たなイメージを作ろうと思います。Docker用語としてイメージ・コンテナがあります。簡単に説明しますと

  • イメージはカップ麺にお湯を入れる前
  • コンテナはカップ麺にお湯を入れた後
つまり、違いは保存状態か、使える状態か、という点です。これを踏まえて今までの僕たちを振り返ると

  1. kaliをCREATEした(カップ麺を入手し、お湯を注いだ)
  2. execでkaliのコンテナに入りパッケージをインストールした(カップ麺の具材が増えた)
そこで、本来ならあり得ませんがこの具材マシマシの麺をオリジナル乾麺に戻します。それが今からする作業です。こうすることでいつでもオリジナルのカップ麺が食べられるんです。

ターミナルでDockerからBashに移動してから下のように打ちましょう。
上ではdocker commitでkali_envというイメージ名で作りました。今後このカップ麺を食べたくなった時は

  • docker run -it kali_env
としましょう。オプションについては

  • iはホストからコンテナをつなぐ
  • t(ttyの略)はコンテナからホストにつなぐ
  • itでコンテナ内部で作業をする時(kaliを使いたい時)
です。

感想

Dockerfileをいつものように書かないで済んだので楽でした。次回は早速metasploitした記事を書こうかな?あと調べているとvncというものを使えばブラウザでkaliが使えるようですね。勉強になりました。でわ。

Reference