昨今、サイバー攻撃が大きな問題になっている。サイバー攻撃の歴史自体は長く、コンピューター自体の進化とともに巧妙化してきた。その脅威は止まらず、ゲーム会社も被害を受けたこともある。もちろん、攻撃者が野放しにされているわけではない。守る側の“ホワイトハッカー”も活動しており、民間企業だけでなく、警察庁にはサイバー犯罪捜査官が、防衛省には「自衛隊サイバー防衛隊」といった組織がある。

 かくいう筆者も、一時期はそういったサイバーセキュリティの仕事をしていた1人だ。もともと、学生時代にハッカーに憧れていて、「ハッカージャパン」という現在は休刊中の雑誌を片手に、コンピューターやネットワークの技術書を読み漁っていた。社会人になってからもエンジニアの道を志し、「情報セキュリティスペシャリスト」という資格も取得した。

 学生時代に憧れたハッカーだが、実はハッカーになりきれる、ハッキングをテーマにしたゲームもSteamで複数配信されている。

 今回はその中でも、飛び抜けてリアリティを感じさせるビジュアルで、Steamのレビューで「非常に好評」と評価されている「Grey Hack」をプレイしてみた。

 結論から言うと、現実世界よりは遙かに簡単だが、当時学んだコンピューターの基礎知識やネットワークの仕組み、そして実際に攻撃を仕掛けるところなど、“それっぽさ”を強く感じられるゲームだった。

 本稿では、実際に筆者の行動をトレースしながら、元セキュリティエンジニアの目線で本作の魅力を語っていきたい。

【Grey Hack – Game Trailer】

ハッキングをテーマにしたパズルゲーム

 本作におけるハッカーは、広大なデジタルネットワークを舞台に活動するサイバー空間の探検者だ。セキュリティホールを突き、パスワードをクラックし、ログを削除して証拠隠滅を図る。そのスキルセットは現実世界のハッカーと変わらない部分が多い。

 プレーヤーはそんなハッカーの1人になり、与えられたジョブを達成していく。どんな方法でジョブの目的を達成するかは自由で、ハッキングサンドボックス体験とも言える。ジョブを達成するとお金を稼げるので、稼いだお金を使って機材をアップグレードしたり、ハッキングに使うツールを購入したりする。

 ツールが増え、知識が増えることで複数パターンのアプローチが可能になる。その試行錯誤を楽しむのが本作の最も大きな楽しみ方だ。

 また、明確なタスクになっていないアクションも可能だ。例えば、他人のコンピューターにアクセスしていたのだが、そこにはオンラインバンクのログイン情報があった。パスワードは暗号化されていたのだが、それを復号することでブラウザからログインすることに成功し、筆者の口座に入金することもできる。

 もちろん、メールアカウントを取得すればメールも見られるし、個人的に保存しているファイルをのぞき見ることもできる。こういった何かを探す行為は独特のダークな楽しみを提供してくれるのだ。

ジョブを請け負って、様々なツールや技術を使いそれらを達成していくゲーム内でメールを見たり、ネットバンクを使うことも可能だまずは他人のWi-Fiにタダ乗りするところから

 まずは自分のPCのセットアップをするとゲームが始まる。コンピューターの起動画面からリアルで、PCの中でPCが動いているという感覚を味わわせてくれる。実際にこのPCを使ってハッキングしていくのだ。こういったリアリティを高める感覚は面白い。

 OSのセットアップなどは不要で、アカウントを登録すればすぐにプレイを始められる。ただし、PCはあるもののネットワークに繋がっていない。そのため、他人のWi-Fiにタダ乗りするところから始まるのだ。この細かい作り込みには思わず笑ってしまった。

 他人のWi-Fiのパスワードを入手する手段は現実世界よりも遙かに簡単だ。パケットを盗聴し、そのパケットを解析してWi-Fiのパスワードを探す。手順はシンプルだが、実際にコマンドをキーボードで入力して実行していくのが本作の面白さだ。

ゲーム内PCを起動する。BIOSの画面からリアリティがあるアカウント登録すればPCは起動するWi-Fiのアクセスポイントのパスワードを解析している様子

 我々が普段使っているWindowsやmacOSは「GUI」(グラフィカルユーザーインターフェース)と呼ばれるもので、マウスを中心に直感的な操作ができるシステムだ。だが、システムエンジニアやネットワークエンジニアは「CLI」(コマンドラインインターフェース)と呼ばれる操作方法を使うことも多い。アニメやドラマで真っ黒い画面に英字が流れており、キーボードをカタカタやっているアレである。

 本作にもGUIはあるが、細かいコマンドなどはキーボードから入力する。この時点で人を選びそうだが、筆者は懐かしさと冒険心が蘇ってきてワクワクした。

細かいコマンドはキーボードから自分で入力する。これがまた面白いのだ実際のジョブに挑戦。ログイン情報奪取までの道のり

 それでは、ある日の筆者のジョブを紹介しよう。なお、ここで紹介するIPアドレスやメールアドレスは、あくまでもゲーム内の架空のものなので、悪用しないでほしい。

 今回のジョブはログイン情報を取得するという内容だ。いくつか進め方はあるが、第一歩となるのはターゲットの情報を集めることだ。そこで使うのが「whois」というコマンドと、「nmap」というコマンドだ。

 whoisはドメイン情報を調べるコマンドで、そのIPアドレスの管理者の名前やメールアドレス、連絡先が表示される。特に有効なのが管理者の名前とメールアドレスのところだ。管理者の連絡先がわかればユーザーを偽って「ログインできなくなったからパスワードを教えてほしい」というメールを送るとご丁寧にパスワードを教えてくれるからだ。

 並行して「ポートスキャン」という行為も進める。ポートスキャンは開いているポートを調べるという機能で、それを実行するのがシステムに侵入の第一歩になるのだ。

 今回のターゲットのIPアドレスは「20.213.94.100」で、その端末に繋がった先にある「10.0.23.2」というLAN内のIPアドレスを持った端末のログイン情報を探していく。

 まずはwhoisをする。

denpaiscrazy@denkodesktop:~$ whois 20.213.94.100
Domain name: www.locotijej.com
Administrative contact: Curtice Goody
Email address: Goody@locotijej.com
Phone: 314530377

 これで管理者の名前と連絡先がわかった。取得したいログイン情報の持ち主の名前がわかればメールで問い合わせをしたいところだが、今回はわからないので一旦メモをとって次のアクションへと移る。

 次がポートスキャンだ。前述した通りnmapというコマンドを使う。

denpaiscrazy@denkodesktop:~$ nmap 20.213.94.100

Starting nmap v1.1 at 29/May/2004 – 14:42
Interesting ports on 20.213.94.100

PORT STATE SERVICE VERSION LAN
21 open ftp 1.1.3 192.168.0.3
3306 open employees 1.5.0 192.168.0.3
53428 open ftp 1.1.3 10.0.23.2
22 open ssh 2.1.6 10.0.23.2

 外部から接続を受けつけているのはこの4ポートだ。今回のターゲットは10.0.23.2のため、ポート53428のftpか、ポート22を狙いたい。

 そこで、exploitという攻撃プログラムを使う。exploitはソフトウェアの脆弱性を突いて侵入するプログラムだ。まずは、22のsshをきっかけにできないかを調べてみる。

 exploitはHackshopで購入できる。Libraryに「libssh」を選び、ポートスキャンで判明したようにバージョンを2.1.6と入力して検索する。そうすると複数のものがヒットする。

 ここで選ぶ条件はいくつかあるのだが、ネットワーク越しに使うため、「Remote use」と書いてあるのが必須だ。その上で管理者権限(rootユーザー)を獲得できるexploitを探したい。遠隔から管理者権限のパスワードを変更できるexploit「ph1n3l」を購入してみたので早速試してみよう。

denpaiscrazy@denkodesktop:~$ ph1n3l 20.213.94.100 22
Enter new password: gamewatch

Starting attack…success!
Executing payload…
Password for user root modified OK.

 パスワードの変更に成功した。sshコマンドで早速ログインする。

denpaiscrazy@denkodesktop:~$ ssh root@gamewatch 20.213.94.100 22
Connecting…
root@Alistu:/root#

 これで侵入に成功した。どんなユーザーがいるかを見てみよう。これは「/etc/passwd」というファイルを見ればわかる。

root@Alistu:/root# cat /etc/passwd
root:68dbb75aada05bfd4a7170a43e81be90
Yre:20a0a06277c77162f1653249cc8586c7

 rootユーザーとYreというユーザーがいることがわかる。rootのパスワードは先ほど設定したので、Yreのパスワードを解析しよう。暗号化されているのでダウンロードした後、復号化を試みる。

denpaiscrazy@denkodesktop:~/Alistu$ ../decipher passwd
Multiple users found.
1: root:68dbb75aada05bfd4a7170a43e81be90
2: Yre:20a0a06277c77162f1653249cc8586c7
Select user: 2
Selected user: Yre
Deciphering…
[###################################]==[ 100% ]
password found! => uicec

 これでYreのパスワードがuicecであることがわかった。これをメールで返信すればミッションは達成だ。念のため、このサーバーに接続したログも削除しておこう。

ログを削除するのも大切だ

 ここでは一例を紹介したが、ほかに使える詳細なコマンドについても熱く語りたいことがたくさんある。例えば、Unix系OSで使用する基本的なコマンド(ls、cat、cd、chmod、sudoなど)が実装されており、意外と直感的に操作できるのだ。もちろん、ネットワーク系のコマンドもifconfig、ping、nslookupと多岐にわたる。

 これらは基本的に難しいが、ゲーム内にマニュアルがあるので、コマンドの使い方レベルでは迷うことはないだろう。また、今回はアプローチしなかったが、管理者のメールアドレスに対して、ターゲットの名前を騙ってパスワードを再発行させる「ソーシャルエンジニアリング」といった手法もある。だが、こういった手法も含めて、基本的な攻撃手法の解説がチュートリアル以降ほとんど登場しないのがネックだ。

 正直、筆者も悩むことが多く、途中まではうまくいっていて、「なんとなくこの先はこうすれば良いんじゃないか」という目星が立っているものの、最後のツメが難しいジョブもあった。例えば、端末の電源が切れているのか、ネットワーク的には繋がっているはずの機器になぜか接続できないという事例だ。こういった点はアイデアと試行錯誤が求められそうな要素である。

かなり多くのコマンドが用意されている。使い慣れているコマンドもあるはずだメールを使ったソーシャルエンジニアリング的なアプローチも多い。試行錯誤とアイデアが求められるネットワーク的には繋がっているはずなのだが、どうしても繋がらない機器があった

 本作は、ハッキングというニッチなテーマを扱いながらも、実際にコマンドを打ち込んで侵入していくという体験は、筆者のような元エンジニアには懐かしく、そうでない人には新鮮な刺激を与えてくれるゲームだ。

 現実世界ほど複雑ではないが、whoisやnmap、exploitといった実際のツールや手法を模したシステムは、「それっぽさ」を十二分に演出している。他人のファイルを覗き見たり、銀行口座から金を抜いたりといったダークな楽しみは、現実では絶対にやってはいけないからこそ、ゲームで体験できる価値がある。

 ハッキングやコンピューター、ネットワークに興味がある人、CLIでのコマンド操作に抵抗がない人、パズルゲームが好きな人には強くおすすめしたい。それは、学生時代にハッカーに憧れた筆者のように、かつての夢を疑似体験できる貴重な作品だからだ。