11日目。
[Day 11] Jingle Bells, Shadow Spells
今回は hr ユーザを用意し、その hr ユーザの権限が大きすぎると何が起きるかを学ぶ。hr ユーザのマシン内には様々なツールが既に用意してある。流れとしては以下のようになる。
ちなみに解説を見ると C:\Users\Administrator\Desktop\flag.txt
が得られればいいという感じがするので hr ユーザで more
コマンドを使って中身を見ようとすると以下のようになる。いきなり"キング"は取れねェだろうよい
What is the hash of the vulnerable user?
まずは PowerShell を起動する。ツールを使うために Desktop フォルダに移動し、powershell -ep bypass
コマンドを実行してから . .\PowerView.ps1
、Find-InterestingDomainAcl -ResolveGuids | Where-Object { $_.IdentityReferenceName -eq "hr" } | Select-Object IdentityReferenceName, ObjectDN, ActiveDirectoryRights
を実行する。
ActiveDirectoryRights に注目すると hr ユーザが GenericWrite 権限を持っていることがわかる。つまり、他人の msDS-KeyCredentialLink を勝手に書き換えられるというわけである。
msDS-KeyCredentialLink を書き換えるには Whisker を使用する。解説の通り .\Whisker.exe add /target:Administrator
コマンドを実行するも……
解説の続きを読むと、「今回は適当に \target
を書き換えてね☆」と書いてある。早とちりであった。
先ほど得られた情報を再度見てみると ObjectDN の項目で CN=vanskrinkles となっているので、このユーザをターゲットとして msDS-KeyCredentialLink を更新する。次に実行すべきコマンドも親切に表示される。
Rubeus を実行すると TGT と NTLM ハッシュが得られる。
What is the content of flag.txt on the Administrator Desktop?
先ほどまではターゲットマシン上の PowerShell で情報を集めたりしていたが、今度は手元のアタックマシンからターゲットマシンへのログインを試みる。
NTLM ハッシュがあるので、Evil-WinRM を使った pass-the-hash 攻撃が可能となっている。さっそくコマンドを打ってみるがうまく接続できない……
こういう、特に自前でアタックマシンを用意している時は MTU をデフォルトの 1500 から 1200 など少し小さく設定してやるとうまくいく(リバースシェルする時なんかでも使える)。というわけで以下のコマンドを実行する。
$ sudo ip link set tun0 mtu 1200
今度はうまくログインできたようだ。
あとは more C:\Users\Administrator\Desktop\flag.txt
コマンドで flag.txt ファイルの中身を見るとフラグが得られる。
Van Sprinkles left some stuff around the DC. It's like a secret message waiting to be unravelled!
シークレットメッセージ……なんのことだ。
とりあえず Administrator の Desktop には flag.txt の他に html ファイルとそのリソースファイルがあったので中身を見てみる。
うーん、なんだろう……スクリーンショット云々言っているようだがよくわからない。Van Sprinkles 君の上司が McGreedy であることはわかった(既出です)← 人物関係あんまり理解してない人
疑問・質問
はじめに実行している powershell -ep bypass
ってなに
PowerShell はデフォルトでコマンド実行に関する安全装置みたいなのが設定されていて、それを解除するためのコマンドみたい。やってることは下記リンクと一緒だと思う。
解説に出てる Kerberos 認証ってなに
下記サイトが非常にわかりやすかった。TGT は下記サイトでいう、元締めで最初に認証を行った時に得られる「身元証明書を発行するための身元証明書(Ticket Granting Ticket)」。
pass-the-hash 攻撃とは
パスワードは通常平文では保存されず、ハッシュとして保存する。「じゃあそのハッシュわかれば認証通るのでは?」を実現しているのが pass-the-hash 攻撃、だと思う。詳しくは下記サイト。
hr ユーザで Administrator の flag.txt 見れなかったのになんで vansprinkles で見れたの
vanskrinkle 君の権限も大きかったってことじゃないかなぁ知らんけど
感想
なんかボリュームがだんだんすごいことになってないか!?
解説通りのコマンド打つ → 問題に答える → もう一度解説しっかり読んで流れ理解する(ここが時間かかる)
の流れである。でも自分が理解できないのもアレだし、ブログにある程度わかりやすく書かないとそれもアレだしで、とにかく時間がかかるかかる。しかし今回は Kerberos 認証の理解がかなり深まったので良しとしよう。なお Active Directory の理解度は