Windows10のWSLにKali Linuxを導入してCTFの環境を構築する

こんにちは!管理人のうみねこ(@penta59631)です。

Windows10にはWSL(Windows Subsystem for Linux)というWindowsからLinuxを利用するための機能が備わっています。今回の記事ではその機能を利用し、Kali LinuxというLinux環境をインストールするところからCTFに役立つツールを入れるところまでを紹介します。
CTFって何?って方は以下の記事をご覧ください。

※この記事ではCLI(コマンドライン)を使えることを前提としています。

スポンサーリンク

Kali Linuxとは?

Kali Linuxとは、Linuxのディストリビューションの一つでペネトレーションテストやセキュリティの検査などを主要な目的として開発されているOSです。
イメージ的にはWindowsやMac OSと同じような位置づけです。

ディストリビューションには様々な種類がありサーバ用途でよく使われるようなCentOS(RedHat)、クライアント用OSとして利用されることも増えてきたUbuntu等があります。

通常、ディストリビューションは各公式サイトやミラーサイトからイメージファイルをダウンロードしてきて、パソコンや仮想マシンにインストールして使います。

インストール中にいろいろな設定をしたり、仮想マシンを作るためのソフトウェアを入れたりWindows側とファイルを共有するための設定を入れたり…と手間暇がかかります。初心者にはハードルが高いのですが、WSLはMicrosoft Storeからインストールボタンを押すだけで導入が完了し、Windows側のファイルも設定なしに参照や編集ができるので非常に便利です。

では、実際にWSLにKali Linuxをインストールする手順を紹介していきます。

スポンサーリンク

Kali Linuxをインストールする

Kali Linuxをインストールする手順は以下の3つの流れで行います。

  1. WSLの機能を有効化する。
  2. Kali LinuxをWSLにインストールする。
  3. Windows Defenderで除外設定を行う
  4. 初期設定
  5. CTFに役立つツールを導入する。

WSLの機能を有効化する

まずはじめに、WSLの機能はデフォルトだと無効化されており、そのままKali Linuxをインストールしようとするとエラーとなります。
そのため、機能を有効化してあげる必要があります。

有効化の方法はまず[コントロールパネル]から[プログラムのアンインストール]-[Windowsの機能の有効化または無効化]に進みます。
Windowsの機能画面が表示されたら、「Windows SubSystem for Linux」にチェックを入れて「OK」選択し、一度パソコンを再起動するだけです。

Kali Linuxをインストールする

Kali LinuxをインストールしたらMicrosoft Storeにアクセスする必要があります。
Microsoft Storeは「Windows」マークをクリック後、下の方にスクロールしていくとあります。

Microsoft Storeが開いたら、右上の検索ボックスに「kali」と入力して検索します。
すると、Kali Linuxと書かれたアプリが表示されます。

Kali Linuxをクリックし、「インストール」ボタンを押すとインストールが始まります。
インストールが完了すると「インストール」ボタンが「起動」ボタンに変わるため押すとコマンドプロンプトが立ち上がります。

起動後、しばらく経つとユーザー名とパスワードを聞かれるので入力し、「Instllation successful!」と表示されたら完了です。

Windows Defenderで除外設定を行う

続いてWindows DefenderでKali Linuxのインストールフォルダに対してスキャン除外設定を行います。
Kali Linuxで導入するツールの中には正常なものでもウイルス対策ソフトでブロックされてしまうものもあります。そのため、それらをブロックしないような設定が必要になります。

今回はインストールフォルダ自体をスキャンの対象から外しますが、この手順を行うとそのフォルダに関しては一切スキャンがされなくなるため万が一悪質なツールをインストールしてしまった場合も気づかなくなる可能性があります。
ツールやファイルのインストール時は注意し自己責任で行ってください。
Windows Defender以外のウィルス対策ソフトを利用している場合は、それぞれのソフトの手順に従ってください。

まずはKali Linuxのインストールフォルダを調べます。
Kali Linuxは通常以下のフォルダにというインストールされていると思います。

C:\Users\ユーザー名\AppData\Local\Packages\KaliLinux.~\

ユーザー名とKaliLinuxの後ろの文字列はそれぞれのPCに合わせて変更してください。
確認できたらWindows Defenderを開きます。
「Windows」マークをクリック後、「Windowsセキュリティ」から開くことができます。

「ウイルスと脅威の防止」を選択します。

「設定の管理」を選択します。

「除外の追加または削除」を選択します。

「除外の追加」から先程調べた、Kali Linuxのインストールフォルダを指定します。
これで完了です!

初期設定

ここまでの手順が完了したら初期設定を行います。さきほどのコマンドプロンプトの画面に戻ります。閉じてしまったという人はWindowsキー+「R」キーを押して、「cmd」と入力してみてください。コマンドプロンプトが開きます。

そこでkaliと入力するとKali Linuxに入ることができます。では初期設定をしていきます。
※コマンドは一行ずつ実行してください。

管理者権限になる

一部のコマンドは管理者にならないと実行できません。

その場合、各コマンドの前に「sudo」とつけると一時的に管理者になりコマンドを実行できます。

また「su -」というコマンドを入力すると、管理者ユーザー(root)でログインすることができます。

基本的には、セキュリティ、操作ミスを避けるため各コマンドの前にsudoをつけて実行することが推奨されますが、今回は便宜上最初にrootになった状態で後の作業を進めていきます。

まずはrootのパスワードを設定しましょう。

コマンドプロンプト(kaliと入力する前の画面)で以下を入力します。

wsl -u root
passwd root

この後に設定したいパスワードを聞かれるので2回入力します。

その後以下で管理者ユーザー(root)でログインします。

exit
kali
su -

初期パッケージアップデート

まずは以下のコマンドを実行してください。Kali Linuxにデフォルトで入っているパッケージを最新のものにアップデートします。WindowsでいうとWindowsアップデートを行っているようなイメージです。

apt-get update
apt-get dist-upgrade

タイムゾーン、ロケール、言語設定

タイムゾーン、ロケール、言語を日本に合わせて設定します。
以下のコマンドを実行してください。

dpkg-reconfigure tzdata
apt-get install locales
update-locale LANG=ja_JP.UTF-8

Windows上のファイルを見る

手元にあるファイルやフォルダにアクセスしたい場合/mnt/という配下から各ドライブにアクセスすることができます。/mnt/の配下にはドライブの文字のフォルダが配置されており、あとはWindows側から見るのと同じファイル、フォルダにアクセスできます。

root@DESKTOP-:/mnt# ls
c  d  e

CTFに役立つツールを導入する

ここからは私が導入しているCTFに役立つツールを紹介します。(これ以外にもたくさんあるのですが、一部のよく使っているものを抜粋して載せます。)
公式のKali Linuxのイメージにはデフォルトでいろいろなツールが入っているのですが、WSLの方はデフォルトではほとんどツールが入っていません。そのため、必要に応じて自分でツールを導入する必要があります。

ちなみに私は、GUIで見るようなツールに関してはWindows側に導入してコマンド操作を行うようなツールはKali Linuxに導入するなど使い分けています。

fileコマンド

このコマンドはfileの種類を分析してくれるコマンドです。CTFでは拡張子のないファイルが提示されることも多く、まずファイルの種類から調べるという問題が多く出題されます。そのためこのコマンドは必須です。

<インストールコマンド>

apt-get install file

<実行結果>

root@DESKTOP:~# file program
program: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=2ddc3489c567688r3ccf4456798iyt36j97y3e6er, stripped

stringsコマンド

このコマンドはバイナリファイルやデータファイルから文字列を表示するコマンドです。Stringsコマンドを実行するとFLAGが表示されるというような問題も出題されます。

<インストールコマンド>

apt-get install binutils

<実行結果>

root@DESKTOP:~# strings flag.zip
Ln*O1
+w]ux
/Yp2

netcatコマンド

このコマンドはポートの疎通確認やサーバへの接続などに利用するコマンドです。リモートサーバに接続して解く問題も多くその際に利用します。

<インストールコマンド>

apt-get install netcat

<実行結果>

root@DESKTOP:~# nc 10.xx.xx.xx(IPアドレス) xxx(ポート番号)
-------------------------------------------------------------------
Test Server
-------------------------------------------------------------------

プログラミング言語

CTFでは大量の計算問題など、反復作業が必要な問題も多く出題されます。そのような際になにか一つプログラミング言語を知っていると便利です。
計算系のライブラリが充実しているので私はPythonを使っています。
簡単なものであればシェルスクリプト、Powershellなんかでも大丈夫です。

exiftool

このツールは画像のExif情報(撮影時のメタ情報)を見ることができるツールです。Exif情報の中にFLAGやその断片があるということもあるので便利です。

<インストールコマンド>

apt-get install exiftool

<実行結果>

root@DESKTOP:~# exiftool QRCode1.png
ExifTool Version Number         : 11.80
File Name                       : xxx.png
Directory                       : .
File Size                       : 764 bytes
File Modification Date/Time     : 2018:12:18 22:34:40+09:00
File Access Date/Time           : 2018:12:18 22:34:40+09:00
File Inode Change Date/Time     : 2018:12:29 04:26:32+09:00
File Permissions                : rwxrwxrwx
File Type                       : PNG

~以下省略~
スポンサーリンク

さいごに

CTFはいかにツールやコマンドを駆使できるかというのがポイントになります。Windowsではもう一歩足りないという機能がLinuxには多く詰まっておりCTFへの挑戦をより快適にしてくれます。まずLinuxって何?って方は解説しているサイトや本がたくさんあるのでそちらから調べてみるのも勉強になって楽しいですよ!それでは