Slapdash Safeguards

にわか仕込みのセキュリティ

OAuth認証コードを自分で送信させる「ConsentFix」

microsoftアカウントにログインさせて、取得したOAuth認証コードを入力させる。

攻撃者側では、入力されたOAuth認証コードをAzure CLIとかで使用していると思われる。

microsoftアカウントにログインする画面は本物のmicrosoftログイン画面。

OAuth認証コードの取得も公式の基本仕様。

OAuth認証コードの入力するところが、攻撃者の作った画面。

Push Securityの「ConsentFix」解説より。(https://pushsecurity.com/blog/consentfix)

pushsecurity.com

OAuth認証コードの取得

OAuth認証コードの取得フローはMicrosoft公式の資料を確認していただきたい。

公式より、例えばこんな感じのリクエストを飛ばすことでOAuth認証コードを取得するためのアクセスとなる。

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read
&state=12345
&code_challenge=YTFjNjI1OWYzMzA3MTI4ZDY2Njg5M2RkNmVjNDE5YmEyZGRhOGYyM2IzNjdmZWFhMTQ1ODg3NDcxY2Nl
&code_challenge_method=S256

# https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-authorization-codeより


push securityの記事にも同じようなリクエストの記録がある。

おそらく、先ほどの画像の「Sign in」が上記のようなリクエストを飛ばすものなのだろう。これはブラウザ上では、正規のmicrosoftにログインする画面になっている。

ログインに成功すると例えば以下のようなページに遷移する。

http://localhost?
code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&state=12345


localhostに遷移するのは公式の基本仕様。別に攻撃者がどうこうしたわけではない。

「Consentfix」では、このlocalhostのURLを全てコピーしろという指示。

ここでは、code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...の部分が認証コードとなる。

認証コードが取られてしまうと、アクセストークンをリクエストされ、Office 365のコンテンツが根こそぎ盗まれる可能性がある。

認証コードを盗まれたアカウントによっては、Azure関連サービスが根こそぎやられる可能性も、VMとかSQLとかストレージとか。

ところで、OAuthトークンをlocalhostに飛ばすんじゃなくて、自分で作ったアプリと連携させれば良いんじゃねとか思った。それならば、localhostのURLをコピペさせなくとも「許可」ボタンを押してもらえばいいだけ。

しかし、それだとサードパーティアプリとの連携になるので管理者許可が必要だったり、セキュリティ機能に検知されたりするらしい。

だから、localhostに来たものを全部コピペさせているとのこと。

たぶん、このレベルのフィッシングに引っかかる人にとっては、ハードルが高い

いやでも、たぶんこのレベルのフィッシング引っかかる方々には、こんな高度なことできないのでは?

サポート詐欺で支払いのときに2段階認証ができなくて、攻撃者がキレまくって、最終的に支払えず詐欺を逃れた人達も居るぐらいだし。

「ClickFix」とかに比べて逆に中途半端に高度な所為で、あんまり引っかからないのでは?