はじめに
この実験では、Linux システムに対するブルートフォース攻撃を通じてルートユーザーのパスワードを取得する 2 つの方法とそれに対応するツールを探ります。この実験は、基本的な原理を理解し、その過程で一般的な落とし穴を避けるのに役立ちます。
この実験では、Linux システムに対するブルートフォース攻撃を通じてルートユーザーのパスワードを取得する 2 つの方法とそれに対応するツールを探ります。この実験は、基本的な原理を理解し、その過程で一般的な落とし穴を避けるのに役立ちます。
このステップでは、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 プロトコルを通じてルートユーザーのパスワードをブルートフォースする方法を学びます。
前のステップでは、まだルートユーザーでいるはずですが、このステップでは 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 プロトコル経由です。各方法のインストール、使用方法、および手順を説明し、基本的な原理を理解し、一般的な落とし穴を避けるのに役立ちます。この実験は、特権昇格技術に関する貴重な実践的な経験を提供し、さまざまなシナリオで適用できます。