はじめに
このハンズオン実験では、SSH の列挙と弱い鍵ベース認証の悪用(エクスプロイト)に焦点を当てます。Secure Shell (SSH) は、セキュアなリモート管理のための基本的なプロトコルですが、設定ミスは重大なセキュリティ脆弱性を生み出す可能性があります。
この実験では、ターゲットシステムに対するペネトレーションテストをシミュレートします。まずネットワーク接続を確認し、次に強力な nmap ツールを使用して SSH サービスを列挙し、情報を収集します。次に、提供された秘密鍵を利用して、一般的な設定ミスである不適切なファイルパーミッションを悪用し、パスワードなしのシェルアクセスを獲得します。最後に、ターゲットシステムを探索して隠されたフラグを見つけ、取得します。
完了すると、以下の方法を理解できるようになります。
pingを使用してネットワーク接続を確認する。nmapで SSH サービスを列挙する。- SSH 鍵ベース認証の基本を理解する。
- 弱い鍵のパーミッションを悪用して不正アクセスを獲得する。
- リモートシステムを操作して機密情報を見つける。
始めましょう。
Ping によるターゲットへの接続確認
このステップでは、まずご自身のマシンがターゲットシステムと通信できることを確認します。ping コマンドは、ホストに ICMP パケットを送信して到達可能性をテストする標準的なネットワーク診断ツールです。これは、あらゆるネットワーク偵察における最初かつ最も基本的なステップです。
ご自身の環境には、ホスト名 target 経由でアクセス可能なターゲットシステムが含まれています。
ターゲットに 4 つのパケットを送信し、オンラインであることを確認するために、ターミナルで以下のコマンドを実行してください。
ping -c 4 target
以下のような応答が表示され、ターゲットが到達可能であり、ネットワーク接続が安定していることを確認できるはずです。IP アドレスと応答時間は若干異なる場合があります。
PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms
--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.065/0.072/0.091/0.011 ms
接続が確認できたので、次の列挙フェーズに進むことができます。
Nmap によるオープンポートのスキャン
このステップでは、nmap を使用してターゲットのオープンポートをスキャンし、そこで実行されているサービスを特定します。Nmap (Network Mapper) は、ネットワーク検出およびセキュリティ監査に使用される、セキュリティ専門家にとって不可欠なツールです。
SSH の標準ポートであるポート 22 に対してターゲットスキャンを実行し、バージョン情報とホストキーを収集します。
ターミナルで以下のコマンドを実行してください。
nmap -sV -p 22 --script ssh-hostkey target
-sV: サービスとバージョンの検出を有効にします。-p 22: ポート 22 のみをスキャンすることを指定します。--script ssh-hostkey: ターゲットの SSH ホストキーを取得する Nmap Scripting Engine (NSE) スクリプトです。
出力は以下のようになります。
Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 11:56 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00020s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds
スキャンにより、ポート 22/tcp がオープンであり、OpenSSH 8.9p1 が実行されていることが確認されました。この情報は、次のステップで接続を試みる際に不可欠です。
SSH によるターゲットへの接続
このステップでは、提供された SSH 秘密鍵を使用してターゲットに接続します。SSH キーベース認証は、パスワード認証よりも一般的に安全ですが、秘密鍵が秘密に保たれ、クライアントとサーバーの両方でファイルパーミッションが正しく設定されていることに依存します。
秘密鍵ファイル id_rsa が ~/project ディレクトリに配置されています。SSH が秘密鍵を使用するには、そのパーミッションが制限的である必要があります。chmod コマンドで正しいパーミッションを設定してください。
chmod 600 id_rsa
このコマンドは、ファイル所有者のみが読み取りおよび書き込み権限を持つことを保証します。これは、ほとんどの SSH クライアントの要件です。
正しい鍵を持っているにもかかわらずパスワードプロンプトが表示される場合は、サーバー側のパーミッションに問題がある可能性が高いです。SSH は、ユーザーのホームディレクトリにグループまたはその他のユーザーに対する書き込み権限がないことを要求します。現在のパーミッションを確認してください。
docker exec target-container ls -ld /home/testuser
drwxrwxrwx (777) のようなパーミッションが表示された場合は、修正してください。
docker exec target-container chmod 755 /home/testuser
これで、秘密鍵を使用してユーザー testuser として target に接続します。
ssh -i id_rsa testuser@target
-i id_rsa: 認証に使用するアイデンティティファイル(秘密鍵)を指定します。
ホストの認証を確認するように求められる場合があります。「yes」と入力して Enter キーを押してください。
The authenticity of host 'target (172.17.0.2)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
サーバー側の設定ミス(ユーザーのホームディレクトリの安全でないパーミッション)により、SSH サービスは鍵を受け入れ、パスワードなしでアクセスが許可されます。ログインし、ターゲットのシェルプロンプトが表示されます。
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-48-generic x86_64)
...
testuser@target:~$
ターゲットシステムへのシェルアクセスに成功しました。
ターゲットシステムの探索とフラグの特定
このステップでの最終目標は、フラグファイルを見つけて読み取ることです。ターゲットシステムにシェルアクセスできたので、ローカルマシンと同様にファイルシステムを探索できます。これはポストエクスプロイテーションフェーズであり、攻撃者が貴重なデータを検索する段階です。
現在、testuser のホームディレクトリ(/home/testuser)にいます。ls コマンドを使用して、この場所のファイルとディレクトリを一覧表示します。
ls
ホームディレクトリの内容が表示され、フラグファイルが含まれているはずです。
testuser@target:~$ ls
flag.txt
testuser@target:~$
flag.txt を見つけました。次に、cat コマンドを使用してその内容を表示し、フラグを明らかにします。
cat flag.txt
ターミナルにフラグの値が表示されます。
testuser@target:~$ cat flag.txt
labex{ssh_k3y_b4s3d_acc3ss_fl4g}
testuser@target:~$
おめでとうございます!SSH サービスを正常に列挙し、キーベース認証の脆弱性を悪用してフラグを取得しました。フラグの値をコピーしてラボを完了してください。
ターゲットから切断するには、「exit」と入力して Enter キーを押してください。
まとめ
この実験では、設定ミスのある SSH サービスを標的としたシミュレーション攻撃を成功させました。初期偵察からポストエクスプロイテーションまで、ペネトレーションテストの主要な段階を実行しました。
以下の方法を学びました。
pingを使用してターゲットがオンラインであることを確認する。nmapを使用して SSH ポートの詳細なスキャンを実行し、サービスバージョンを特定する。- SSH キーベース認証のクライアント側の要件を理解する。これには、適切な秘密鍵のパーミッション(
chmod 600)が含まれます。 - 不適切なファイルパーミッションに関連するサーバー側の脆弱性を悪用して、不正なシェルアクセスを取得する。
- リモートファイルシステムをナビゲートしてフラグを見つけ、取得する。
この演習は、重要なセキュリティ原則を示しています。セキュリティは連鎖であり、単一の弱いリンク(この場合は不適切なディレクトリパーミッション)が、SSH キーのような強力な認証メカニズムが使用されている場合でも、システム全体を危険にさらす可能性があります。常に、SSH の設定とファイルパーミッションがセキュリティのベストプラクティスに従って強化されていることを確認してください。



