【ITニュース解説】Hack The Box - Synced (rsync)
2025年09月08日に「Dev.to」が公開したITニュース「Hack The Box - Synced (rsync)」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
rsyncは、差分転送でファイルを効率的に同期するツールだ。FTPより高速で、Linuxに標準搭載される。バックアップやサーバー間のデータ同期に有用だ。設定ミスで匿名アクセスを許すと、情報漏洩のリスクが生じる。この記事では、rsyncの仕組みとセキュリティ上の注意点を解説している。
ITニュース解説
システムエンジニアを目指す上で、ネットワークやサーバー間のファイル転送や同期の仕組みを理解することは非常に重要だ。今回の記事は、その中でも特に効率的なファイル同期ツールである「rsync」プロトコルに焦点を当て、その機能と、設定の不注意がもたらす可能性のあるセキュリティ上の問題について解説している。具体的には、セキュリティ学習プラットフォーム「Hack The Box」の「Synced」という仮想マシンを攻略する過程を通じて、rsyncの実際の使い方と、そこに見られる脆弱性の利用方法を学ぶことができる内容だ。
ファイル転送の最もよく知られた方法の一つにFTP(File Transfer Protocol)がある。しかし、FTPは古くから存在するプロトコルであり、多くの場面で速度の遅さや効率の悪さが課題となることがある。FTPは、ファイルを変更するたびにファイル全体を転送するため、たとえ一部の小さな変更であっても、大きなファイルを毎回丸ごとコピーし直す必要があり、これはネットワーク帯域を大きく消費し、時間もかかる。
これに対して、rsyncはより効率的なファイル同期を実現するために開発されたツールだ。rsyncの最大の特徴は、「差分転送(delta-transfer)」という独自のアルゴリズムを使用している点にある。このアルゴリズムは、転送元と転送先のファイル間で変更された部分、つまり「差分」だけを賢く識別し、その差分のみをネットワーク経由で送信する。これにより、ファイル全体を再転送するよりもはるかに少ないデータ量で、高速かつ効率的なファイル同期が可能になる。例えば、大きな文書ファイルの一部だけを修正した場合でも、rsyncは修正された数行のデータだけを転送すれば済むため、非常に効率的だ。
rsyncは、その汎用性と高速性から、バックアップの作成、サーバー間のファイルミラーリング(全く同じ状態のファイル群を保持すること)、あるいは日々のファイルコピー作業など、幅広い用途で利用されている。オープンソースのツールであり、現在では主要なLinuxディストリビューションに標準で含まれるほど、Linux環境では欠かせないユーティリティの一つとなっている。
rsyncでのファイル転送は、主に以下の3つの段階で進行する。まず、rsyncはリモートのコンピューター(ホスト)との接続を確立し、そこでファイルを受け取るためのプロセスを開始する。次に、ファイルを送信する側と受け取る側のプロセスが、どのファイルが変更されたのかを比較する。最後に、検出された変更点だけがリモートホスト上で更新されるという流れだ。この仕組みにより、rsyncは一台のコンピューターと外部ストレージの間だけでなく、ネットワークでつながれた複数のコンピューター間でファイルを同期する際に非常に優れた選択肢となる。
rsyncサービスとやり取りするには、Linuxシステムにプリインストールされていることが多いrsyncコマンドラインユーティリティを使うのが一般的だ。リモートのrsyncデーモン(サービスを提供するプログラム)に接続するための基本的なコマンドの書式は以下のようになる。
rsync [オプション] [ユーザー名@]ホスト名::[モジュール] [保存先]
[オプション]は、rsyncの動作を細かく制御するための様々な設定項目で、例えば--helpコマンドで一覧表示できる。[ユーザー名@]ホスト名は、接続先のリモートサーバーのホスト名やIPアドレスを指定する部分だ。認証が必要な場合はユーザー名も一緒に指定する。例えば、匿名で接続する場合はユーザー名を省略する。
ここで特に重要なのは、ホスト名の後に続く二つのコロン「::」だ。これは、SSHのようなリモートシェルを介して接続するのではなく、rsync独自のデーモンに直接接続することを意味する。この記号を使い分けることで、rsyncは様々な接続方法に対応できる。[モジュール]は、リモートのrsyncデーモンが外部に公開している特定のディレクトリやファイルの「別名」のようなものだ。これを「共有(share)」と呼ぶこともある。もしモジュール名を省略した場合、利用可能なモジュールの一覧が表示されることもある。最後に[保存先]は、リモートからファイルをダウンロードする際に、ローカルコンピューター上のどこに保存するかを指定するパスだ。
rsyncモジュールには、セキュリティレベルに応じていくつかの認証方法が設定できる。一つは「匿名(Anonymous)」で、これは認証情報を一切必要とせず、誰でもアクセスできる設定だ。もう一つは「パスワード保護」で、ユーザー名とパスワードの入力が必要となる。パスワードは手動で入力することもできるし、--password-fileオプションを使ってファイルに保存したパスワードを利用することも可能だ。
セキュリティ上の問題として、rsyncが匿名ログインを許可するように誤って設定されているケースが少なくない。このような設定ミスは、攻撃者にとってリモートマシンに保存されている機密情報へのアクセスを許してしまう可能性があるため、特に注意が必要だ。
実際に「Synced」マシンを攻略する手順は、このrsyncの特性と脆弱性を利用する典型的な例だ。まず、ターゲットとなるリモートホストにどのようなポートが開いていて、どんなサービスが動いているのかを調べるために、Nmapというネットワークスキャナーツールを使用する。具体的には、nmap -p- --min-rate=1000 -sV {ターゲットIPアドレス}というコマンドを実行する。-p-は全てのTCPポートをスキャンする指示で、-sVは開いているポートで実行されているサービスのバージョン情報を取得する。--min-rateはスキャン速度を上げるためのオプションだ。
このスキャンの結果、ターゲットマシンではポート873のみが開いており、Nmapはそこにrsyncサービスが動作していることを知らせてくれた。次に、このrsyncサービスに接続し、匿名でアクセス可能なディレクトリ(モジュール)をリスト表示してみる。rsync --list-only {ターゲットIPアドレス}::というコマンドを実行すると、利用可能な共有の一覧が表示される。ここでは「public」という名前の共有が見つかり、「Anonymous Share」という説明が付いていた。これは、認証なしでアクセスできる共有があることを示している。
さらにpublic共有の中身を確認するため、rsync --list-only {ターゲットIPアドレス}::public/と実行する。このとき、モジュール名の最後にスラッシュ「/」を付けるのが重要で、これによってディレクトリの中身を表示するよう指示することになる。結果として、このpublic共有の中に「flag.txt」というファイルが存在することを発見した。
最後のステップとして、この「flag.txt」ファイルを自分のローカルマシンにダウンロードする。これはrsync {ターゲットIPアドレス}::public/flag.txt flag.txtというコマンドで実行できる。コマンドを実行しても特にメッセージは表示されないが、現在のローカルディレクトリに「flag.txt」という新しいファイルが作成されているはずだ。そのファイルの内容をcat flag.txtコマンドで確認すると、目標としていた「フラグ」と呼ばれる文字列が書かれており、これによって「Synced」マシンの攻略が完了したことになる。
このように、rsyncは非常に強力で便利なファイル同期ツールだが、その設定によっては意図しない情報漏洩や不正アクセスを招く可能性がある。システムエンジニアを目指す上では、このようなツールの機能だけでなく、その適切な設定方法や潜在的なセキュリティリスクについても深く理解しておくことが求められる。これは、日々のシステム運用やセキュリティ対策を考える上で不可欠な知識と言えるだろう。