はじめに
CISSPの学習を進める中で、攻撃者が使用するツールについて実際の操作画面もイメージできると理解が深まりそうだなと感じました。そこで、CISSP対策で座学として勉強したことをハンズオン形式で勉強しなおしたので、攻撃者が「情報収集~不正アクセス」で使用する代表的なツール・操作をスクリーンショット付きで紹介できればと思います。
想定読者
- これからCISSP対策をする人
- 攻撃者ツールの雰囲気をつかみたい人
本記事で扱う内容
扱うツール/操作は以下の4つです:
-
nmap
: ポートスキャン (外から見える情報を調査) -
hydra
: 辞書攻撃 (侵入) -
ls
: フォルダのパーミッション確認 (内部探索) -
john
: SSH 秘密鍵のパスワード解読 (権限奪取)
それぞれの項目で「攻撃者にとって何が見えるか」、「防御側としての対策は何か」を個人的に整理したものを簡単にまとめていきます。
以下で紹介する内容は、TryHackMe というハッキングの練習用サイトで実施したものの一部です。検証用に Kali Linux という攻撃者がよく使うマシンを使用しています。
TryHackMe とは
TryHackMe とは、攻撃手法や防御技術などを仮想マシン上で学べる、サイバーセキュリティ学習プラットフォームです。無料でハンズオンできるトレーニングがいくつも用意されています。ハッキングによって隠されたメッセージを探しながら、ゲーム感覚でハッカーになったつもりでセキュリティ技術を体験することができます。
1. 情報収集:nmap でポートとサービスを丸裸に
nmap
というコマンドを攻撃者のマシン (Kali Linux) で使用することで、調査対象のマシンの開いているポートや稼働中のサービスを確認できます。
コマンド例:
$ nmap <ターゲットIP>
攻撃者の画面では実際に開いているポートやそのサービスが確認できます。以下は、nmap
にいくつかオプションをつけて実行した例です。
「22 番ポートが開いていて ssh がサービスとして割り当てられている」、「80 番ポートが開いていて http で Web ページを公開しているかも」 などが読み取れます。
🧑💻攻撃者視点
- ポート 22(SSH)が開いているから、ブルートフォース攻撃で不正アクセスできそう
- ポート 3389(RDP)が開いていれば、リモートデスクトップ接続で不正アクセスできる可能性があったな
🛡️防御者対策
- マシンの不要なポートは閉じる(最小限のサービスだけ開放)
- ファイアウォールで通信制限を設定
- IDS/IPS でスキャンを検知・遮断
2. 辞書攻撃:hydra でログイン認証を突破
辞書攻撃は、ユーザー名とパスワードの組み合わせを自動で試す手法です。
攻撃者はよく使われるパスワード集を利用して、ログインの成功率を高めてきます。
以下の例では、「1. 情報収集」 の nmap
によってポートが開いていると判明した ssh 接続用のパスワード特定を試みています。
コマンド例:
$ hydra -l <ユーザー名> -P /usr/share/wordlists/rockyou.txt ssh://<ターゲットIP>
上記のコマンドでは rockyou.txt
という、2009 年に発生した重大なデータ漏洩に由来するパスワード集を利用しています。
rockyou.txt
は以下のような中身です。よく NG 例に上がる "p@ssword" もリストに含まれていて、ログインでのパスワードを推測されやすいことが理解できます。
もしも自分で使っているパスワードがこのリスト内に含まれていたら、即変更した方が良いです。
実際にパスワード リストを使用して対象のマシンを解析した結果、ssh 接続に使用されているパスワードは "a****o" であることが分かりました。
これで、攻撃者は対象のマシンに不正アクセスできる状態になってしまいました。
🧑💻攻撃者視点
- パスワードが "p@ssword" などリストに載っているようなものであれば簡単に突破できる
- SSH、FTP、RDP、HTTP など多様なサービスに対応可能な手法
🛡️防御者対策
- 強力なパスワードポリシーを適用(長さ、複雑性、定期変更)
- アカウント ロックアウト機能でパスワードの検証に回数制限をつける
- 多要素認証(MFA)を導入
3. パーミッション確認:フォルダやファイルのアクセス権限を見る
攻撃者は不正アクセスに成功すると、マシン内のフォルダやファイルの所有者・権限を確認することで、他ユーザーの情報にもアクセスできないか調査を続けます。
コマンド例:
$ ls -l <ターゲットのパス>
「2.辞書攻撃」 で ssh 接続したマシン内のファイルを調査していくと、以下のファイルでは 「-rw-r--r--
により所有者以外にも読み取りアクセス権が付与されていること」 が分かりました。
なお、このファイルは別ユーザーの認証情報で、解読されると横移動につながってしまいます。
出力内容の意味
パーミッションは、r
が読み取り権限、w
が書き込み権限、 x
が実行権限を意味します。
項目 | 内容 |
---|---|
-rw-r--r-- |
パーミッション(ファイルに対してのアクセス権限) |
kay kay |
所有者とグループ(どちらも kay ) |
3326 |
ファイルサイズ(バイト) |
Apr 19 2018 |
最終更新日 |
id_rsa |
ファイル名 |
パーミッションの状態
対象 | 読み (r) | 書き (w) | 実行 (x) |
---|---|---|---|
所有者(kay) | 〇 | 〇 | × |
グループ(kay) | 〇 | × | × |
その他(全員) | 〇 | × | × |
攻撃者が使用しているユーザーにも読み取り権限が付与されていたため、秘密鍵の情報が攻撃者に渡ってしまったことになります。
🧑💻攻撃者視点
- ファイルによっては認証情報が含まれている場合がある (横移動や権限昇格のチャンス)
- 他ユーザーのファイルに
read
権限があると中身を閲覧可能
🛡️防御者対策
- 最小権限の原則を徹底(必要な権限のみ付与)
-
chmod
,chown
で権限を適切に管理
4. 秘密鍵の解読:秘密鍵のパスワードを辞書攻撃
「3. パーミッション確認」 のように、攻撃者が秘密鍵ファイルを入手した場合も、パスワードが弱ければ辞書攻撃で解読されてしまいます。
例えば、以下のような暗号化された秘密鍵のパスワードについてツールで解読をしてみます。画像は暗号化された値の一部分で本来はもっと長いデータです。
コマンド例:
$ ssh2john id_rsa > id_rsa.hash
$ john id_rsa.hash --wordlist=/usr/share/wordlists/rockyou.txt
コマンドを実行してみると、数秒足らずでパスワードは "b*****x" だと解読されてしまいました。
これで攻撃者は別ユーザーの認証情報も手に入れたので、横移動が可能になります。
🧑💻攻撃者視点
- 鍵ファイルがあればローカル環境で何度でも辞書攻撃を試せる
- パスワードが単純だと簡単に解読できる
🛡️防御者対策
- 長くて複雑なパスワードを設定
- 使用していない鍵は削除
- 鍵ファイルのアクセス権を適切に管理
紹介したツールの一覧
ツール | 攻撃段階 | 攻撃者の目的 | 防御側の対策例 |
---|---|---|---|
nmap |
情報収集 | 開いているポートの調査 | ファイアウォール、不要ポートの閉鎖 |
hydra |
不正ログイン | 弱いパスワードの突破 | パスワードポリシー、MFA、ロックアウト |
ls |
内部探索 | ファイル・ディレクトリの権限調査 | 権限管理(最小権限)、ファイル保護 |
john |
権限奪取 | パスワードの解読 | 強力なパスワード、鍵の管理 |
まとめ
攻撃者が不正アクセスを行い、そこから横移動していく流れを TryHackMe の環境を利用しながら紹介しました。
攻撃ツールは、システムの脆弱性を “見える化” することもできますが、悪用されると不正アクセスなどにつながってしまいます。「はさみは便利な道具ですが凶器にもなりうる」ということを実感しました。
攻撃者が「何を狙うために、どのツールを使い、どんな対策が嫌なのか」を知ることで、CISSP 対策にもなると感じています。
記事について誤った表現など修正すべき個所がありましたら、コメントいただけますと幸いです。
学習環境の参考
- 実験環境:Kali Linux + TryHackMe
特別に許可された検証環境または自分の管理する環境以外で検証を実行することは犯罪につながる恐れがあります。
他者が所有する資産への攻撃や悪意のあるコードの作成を行うことは、不正アクセス禁止法などに違反し犯罪につながる可能性があります。