はじめに
この実験では、Linux システムに対するブルートフォース攻撃を通じてルートユーザーのパスワードを取得する 2 つの方法とそれに対応するツールを探ります。この実験は、基本的な原理を理解し、その過程で一般的な落とし穴を避けるのに役立ちます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Linux システムに対するブルートフォース攻撃を通じてルートユーザーのパスワードを取得する 2 つの方法とそれに対応するツールを探ります。この実験は、基本的な原理を理解し、その過程で一般的な落とし穴を避けるのに役立ちます。
sucrack
を使用して su
コマンドでルートパスワードをブルートフォースするこのステップでは、sucrack
ツールを使用して、su
コマンドを通じてルートユーザーのパスワードをブルートフォースする方法を学びます。
su
コマンドは、Linux システムで他のユーザーのアイデンティティに切り替えるために使用されます。ルートユーザーを除き、他のユーザーはこのコマンドを使用する際にターゲットユーザーのパスワードを提供する必要があります。
su
コマンドをブルートフォースするために使用するツールは sucrack
です。sucrack
は、su
コマンドを通じてローカルユーザーのパスワードをブルートフォースするように設計されたマルチスレッドの Linux ツールです。
su
コマンドは TTY シェルからのユーザー入力を必要とするため、単純なシェルスクリプトではブルートフォース攻撃を実行できません。sucrack
は C 言語で書かれており、マルチスレッドをサポートしているため、ブルートフォースのプロセスが非常に効率的です。
succrack
の詳細情報は公式ウェブサイトを確認できます。
実際のシナリオでは、ターゲットマシンがインターネットにアクセスできない場合があります。そのため、sucrack
を以下の 2 つの方法のいずれかでインストールできます。
sucrack
のソースコードをダウンロードしてターゲットマシンにアップロードし、その後コンパイルして実行します。sucrack
のソースコードをダウンロードし、ローカルでコンパイルしてから、コンパイル済みのバイナリをターゲットマシンにアップロードします。この実験では、すでに sucrack
をインストールしています。
ブルートフォース攻撃を試みる前に、実験環境を設定します。
ターミナルを開き、プロジェクトディレクトリに移動します。
cd /home/labex/project
スクリプト env_setup_1.sh
を実行して実験環境を設定します。
./env_setup_1.sh
このスクリプトは、特権のない www-data
ユーザーに切り替えます。私たちの目標は、ブルートフォースを通じて root
ユーザーのパスワードを取得することです。
デモンストレーション用に /tmp/common-wordlists.txt
に事前に用意されたワードリストがあります。独自のワードリストを使用することもできます。
sucrack
を使用して su
コマンドをブルートフォース攻撃する構文は次のとおりです。
sucrack -w <threads> [-u <username>] <wordlist>
パラメータは次のとおりです。
-w
: スレッド数を指定します。<wordlist>
: ワードリストファイルを指定します。-u
: ブルートフォースするユーザー名を指定します。ユーザー名を指定しない場合、sucrack
はデフォルトで root
ユーザーのパスワードをブルートフォースします。次のコマンドを実行してブルートフォースを試してみましょう。
sucrack -w 20 /tmp/common-wordlists.txt > ~/sucrack.log && reset
ブルートフォース攻撃の出力は sucrack.log
ファイルにリダイレクトされます。
注意:reset
コマンドは、sucrack
を使用した後にターミナルが正しく表示されない場合があるため、ターミナル画面をクリアするために使用されます。
このブルートフォース攻撃には時間がかかる場合があります。しばらくしたら、sucrack.log
ファイルを確認してパスワードを確認します。
cat ~/sucrack.log
期待される出力:
password is: really
次に、次のコマンドを使用してルートユーザーに切り替えることができます。
su - root
パスワード really
を入力してルートユーザーに切り替えます。
really
/root
ディレクトリに success_1.txt
という名前のファイルを作成して、ルートユーザーに正常に切り替えたことを確認します。
echo "Success_1" > /root/success_1.txt
/root/success_1.txt
ファイルを確認することで、ルートユーザーに正常に切り替えたことを確認できます。
sucrack
を使用してルートユーザーのパスワードをブルートフォースする方法を学びました!
hydra
を使用して SSH 経由でルートパスワードをブルートフォースするこのステップでは、hydra
ツールを使用して、SSH プロトコルを通じてルートユーザーのパスワードをブルートフォースする方法を学びます。
前のステップでは、まだルートユーザーでいるはずですが、このステップでは labex
ユーザーに切り替える必要があります。次のコマンドを実行することで、labex
ユーザーに切り替えることができます。
su - labex
ディレクトリが /home/labex/project
に設定されていることを確認します。
cd /home/labex/project
スクリプト env_setup_2.sh
を実行して実験環境を設定します。
./env_setup_2.sh
前のステップと同様に、このスクリプトを実行すると、www-data
ユーザーに切り替わります。
SSH プロトコルをブルートフォースする前に、ターゲットマシンがルートユーザーの SSH ログインを許可しているかどうかを確認する必要があります。次のコマンドを実行することで確認できます。
cat /etc/ssh/sshd_config | grep -i permitrootlogin
出力が PermitRootLogin
を yes
に設定している場合は、ブルートフォース攻撃を続行することができます。それ以外の場合は、試みる必要はありません。
SSH プロトコルをブルートフォースするために使用するツールは hydra
です。hydra
は、RDP、SMB、HTTP、MySQL など、さまざまなプロトコルをサポートする著名なブルートフォースツールです。hydra
は Kali Linux とこの実験の Ubuntu 環境に事前にインストールされています。
hydra
を使用して SSH プロトコルをブルートフォースする構文は次のとおりです。
hydra -l root -P passwords.txt -t 4 -V < IP > ssh
パラメータは次のとおりです。
-l
: ユーザー名を指定します。-P
: ワードリストファイルを指定します。-t
: スレッド数を指定します。-V
: ブルートフォース攻撃の進捗と詳細を表示します。/tmp/common-wordlists.txt
ワードリストを使用してルートユーザーのパスワードをブルートフォースし、出力を hydra.log
ファイルに保存してみましょう。
hydra -l root -P /tmp/common-wordlists.txt -t 64 -V 127.0.0.1 ssh > ~/hydra.log
しばらくすると、ルートユーザーのパスワードが正常に解読されます。
hydra.log
ファイルを確認してパスワードを確認します。
cat ~/hydra.log
出力例:
...
[22][ssh] host: 127.0.0.1 login: root password: penguin
1 of 1 target successfully completed, 1 valid password found
...
ルートユーザーのパスワードがわかったので、次のコマンドを実行してルートユーザーに切り替えることができます。
su - root
パスワード penguin
を入力してルートユーザーに切り替えます。
penguin
これでルートユーザーになっているはずです。次のコマンドを実行することで確認できます。
whoami
出力は root
であるはずです。
/root
ディレクトリに success_2.txt
という名前のファイルを作成して、ルートユーザーに正常に切り替えたことを確認します。
echo "Success_2" > /root/success_2.txt
/root/success_2.txt
ファイルを確認することで、ルートユーザーに正常に切り替えたことを確認できます。
注意:v9.0 より古いバージョンの hydra
を使用している場合、SSH プロトコルをブルートフォースするときに誤検知が報告されることがあります。hydra -v
を実行することで hydra
のバージョンを確認できます。
この実験では、Linux システムでルートユーザーのパスワードをブルートフォースする 2 つの方法を学びました。1 つは sucrack
ツールを使用して su
コマンド経由で、もう 1 つは hydra
ツールを使用して SSH
プロトコル経由です。各方法のインストール、使用方法、および手順を説明し、基本的な原理を理解し、一般的な落とし穴を避けるのに役立ちます。この実験は、特権昇格技術に関する貴重な実践的な経験を提供し、さまざまなシナリオで適用できます。