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



