偽のサービスへの攻撃の試行
このステップでは、Hydra を使用して偽のサービスに対する攻撃をシミュレートします。これにより、Hydra の動作原理とパスワードをクラックするための使用方法を理解するのに役立ちます。まずは簡単なシナリオから始めて、このツールに慣れていきましょう。
まず、ユーザー名とパスワードを必要とする簡単な「サービス」を作成します。この目的のために、簡単な Python スクリプトを使用します。
プロジェクトディレクトリに移動します。
cd ~/project
fake_service.py
という名前のファイルを作成します。
nano fake_service.py
以下の Python コードを fake_service.py
ファイルに貼り付けます。
#!/usr/bin/env python3
import socket
import sys
HOST = '127.0.0.1' ## Standard loopback interface address (localhost)
PORT = 65432 ## Port to listen on (non-privileged ports are > 1023)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print(f"Connected by {addr}")
username = conn.recv(1024).decode().strip()
password = conn.recv(1024).decode().strip()
if username == 'testuser' and password == 'password123':
conn.sendall(b"Login successful!")
else:
conn.sendall(b"Login failed.")
ファイルを保存し、エディタを終了します。スクリプトを実行可能にします。
chmod +x fake_service.py
次に、偽のサービスをバックグラウンドで実行します。
./fake_service.py &
これにより、Python スクリプトが起動し、ポート 65432 で接続を待ち受けます。&
はプロセスをバックグラウンドで実行するためのものです。
次に、Hydra が使用するユーザー名とパスワードのリストを作成します。users.txt
という名前のファイルを作成します。
nano users.txt
以下のユーザー名をファイルに追加します。
testuser
ファイルを保存し、エディタを終了します。
passwords.txt
という名前のファイルを作成します。
nano passwords.txt
以下のパスワードをファイルに追加します。
password
password123
wrongpassword
ファイルを保存し、エディタを終了します。
では、Hydra を使用して偽のサービスに攻撃しましょう。カスタムサービスを作成したので、generic
モジュールを使用します。
hydra -l testuser -P passwords.txt 127.0.0.1 generic "USER <USER> PASS <PASS> RET Login successful!" -s 65432 -vV
このコマンドを分解して説明します。
hydra
: Hydra コマンド。
-l testuser
: 使用するユーザー名を指定します。この例では単一のユーザー名を使用しています。
-P passwords.txt
: パスワードリストファイルを指定します。
127.0.0.1
: ターゲットの IP アドレス(この場合はローカルホスト)。
generic
: 汎用モジュールを指定します。これにより、プロトコルを定義することができます。
"USER <USER> PASS <PASS> RET Login successful!"
: これはプロトコル定義です。<USER>
と <PASS>
は、Hydra がリストからのユーザー名とパスワードで置き換えるプレースホルダーです。RET Login successful!
は、成功したログインを判断するために、レスポンスに "Login successful!" が含まれていることを Hydra に指示します。
-s 65432
: ポート番号を指定します。
-vV
: 詳細モードで、試行をリアルタイムで表示します。
Hydra が異なるパスワードを試行しているのが見えるはずです。数秒後、正しいパスワードが見つかるはずです。
Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!
Hydra starting at 2024-10-27 14:30:00
[DATA] 1 task/1 service (1 connection per task, 1 thread per task)
[DATA] attacking service 127.0.0.1 on port 65432
[DATA] testing user: 'testuser' password: 'password'
[DATA] testing user: 'testuser' password: 'password123'
[65432] [generic] host: 127.0.0.1 login: testuser password: password123
Hydra is finishing at 2024-10-27 14:30:02 after 00:00:02
1 task completed, 1 valid password found
この出力は、Hydra がユーザー testuser
のパスワード password123
を正常に見つけたことを示しています。
最後に、偽のサービスを停止しましょう。まず、そのプロセス ID を見つけます。
ps aux | grep fake_service.py
次のような行が表示されるはずです。
labex 1234 0.1 0.2 12345 6789 pts/0 Sl 14:29 0:00 ./fake_service.py
2 番目の数字(この例では 1234)がプロセス ID (PID) です。1234
を実際の出力からの PID に置き換えます。
では、プロセスを終了します。
kill 1234
これで偽のサービスが停止します。