主に企業・団体を対象とした標的型メールによるハッキング、ランサムウェア被害、個人情報・資産も対象としたフィッシングが一般ニュースとして報じられることが増えていています。直近では大手証券会社10社のアカウント乗っ取りが巷を賑わせています。
※X.comの投稿を見かけましたが、楽天証券の認証ザル過ぎませんか? 楽天証券の二段階認証が90通りの組み合わせで、ロックもされず何回も試せるらしい
→ x.com @koharyu0722, 2025-05-03 17:38 | x.com @gorillataxjp, 2025-05-03 19:58
対策として考えられるアカウントロックに関しても、解除を何度でも試せてしまう上不審な解除操作があったなどの通知がないとのこと
→ 【被害拡大中】2段階認証やアカウントロックだけじゃ資産を守れません! 楽天証券に潜む"抜け穴の構造 【証券口座乗っ取り被害】 (YouTube 猫山田コバンの投資倶楽部 2025-05-07)
それにトレーディング用のPCアプリ「マーケットスピード」は、「旧バージョンはリスクベース認証がなく、ID・パスワードのみでのログインが可能」という代物らしく、本来のユーザーが新版を利用していても詐欺者が旧版を持っていたら意味がありません…。
→ ネット証券、セキュリティのずさんさ露呈 ID・パスワードだけで入れる「裏口」に批判 (ITmedia 2025-05-02)
※大手証券会社10社で発生している事象の手口は未だ明らかになっていませんが、インフォスティーラー(Infostealer)にやられている可能性もありそう。
→ 証券口座情報、盗難の手口にコンピューターウイルスも (日本経済新聞 2025-05-02)
私はネットワークの専門家ではありませんが、スパムの発信元の調べ方(つまりメールはどうやって届くのかなど)、先人の情報を元に対処してきた知見をもとに、詐欺にあう状況を未然に防ぐ情報を何かしら提供できたら…と思い、ここ数年間のフィッシング詐欺メールの傾向に関して、私なりのメモを書いておきます。
※スパムやフィッシングメールが届く度に、メールヘッダや、メッセージを生に近い形で眺めたりしており、必要に応じてスパムやフィッシング対策関連団体に通報したり、成済まされた企業などに連絡したり、発信元ネットワークの通報先や、やフィッシングに加担させられた企業や団体に連絡したりしています。私が保有する複数のメールアドレスに届いた3700通を超えるスパムのほぼ全てのログを保存しています。1997年が最古かもしれません。
フィッシングはメールに限った事ではなくSNSや物理的な郵便物にも存在しますが、ここでは主に電子メールに絞って説明します(SNSでも当てはまる状況はあるので参考にして戴けると良いかと思います)。
スパム防止策のSPF, DKIM, DMARCや、ブロックリストサービスが利用されるようになって昔のような単純なスパムは減りつつあるもの、セキュリティ対策の弱いサーバーを渡り歩いて発信したりするスパムは減るどころか増えている印象があり、特にフィッシングメールは爆増していると感じます。
以前は使用される文字(や文字エンコーディング)が中国語混じりだったり、文面が不自然だったり、文面が割と普通でも記載された住所や電話番号が別企業のものだったり架空だったりすることもありましたが、生成AIの進化の影響もあるのか、徐々に違和感が少なくなって来ています(未だ完全ではなく、ところどころ中国語の漢字が混入したり、差出人部分に件名に書くべき文面が書かれたり、本文がUTF-8宣言されながらShift-JISで書かれていたり…など細々としたミス・違和感は残ります)。
思いつく範囲で大雑把に分類すると以下のような種類があります。
※昔から発信元(の国)は様々だったものの圧倒的に中国のサーバーが多く、一部が国内や欧州や米国や南米、アフリカという印象でしたが、徐々に東欧やアラブ諸国や韓国も増え、直近のフィッシング系ではブラジルが圧倒的に多い状況。
※メールに記載のURLが実際のフィッシング画面が表示される場所である例は昔からある手法
誘導先は様々で、中国、欧州、北南米、国内の企業や小規模事業者(例えば個人経営喫茶店など)などのサイトの裏側に仕込む例が多々ありました。クラウドに自前で用意する例は少なかった印象)
※メールに記載のURLのサイト(踏み台サイト)にアクセスすると更に別のURLへ転送されて(場合によっては更に複数回転送されて)、その先でフィッシング画面が表示される手法は2022年〜2024年頃から増えています。しかも踏み台サイトではアクセスの度に毎回異なる転送先を生成するようになっていることが多く、多数のフィッシングサイトを事前に用意して、通報などで1つが不能になったとしても残りが全滅しない限りは詐欺機能が止まらないようにしている点が巧妙です。
2022〜2023年頃は個人や企業のWebサイトにアクティブコンテンツを生成する仕組み(WordPressやMovable Type)の脆弱性を突かれて、フィッシングサイトへの踏み台やフィッシングサイトに悪用される例が多発
2024〜2025年現在は、既存サイトの悪用だけでなく、Cloudfare, MSのクラウドAzure, AmazonのクラウドAWS, Tencentのクラウドなどが同様の踏み台やフィッシングサイトとして利用される例が増えており、2025年4月からはGoogle翻訳経由の例も登場しています。ここ2〜3年のフィッシングメールでは誘導先URLの文字列や経由方法、仕込まれたコードなどの特徴を読む限り同じ詐欺グループが複数の企業を騙ったメールを発信していると考えられます。メールの発信方法の違いなのか、数分違いで届く同じ偽企業・文面・手法なのに本文やHTML文のエンコード方式がBase64やQuoted-Printable、平文という具合に違っていたり、文字コードがShiftJISだったりUTF-8だったり、一方は日本の漢字「証券」なのにもう一方は中国漢字交じりの「证券」だったりします。(かなり昔は簡体字中国語(GB2312)もチラホラありましたが…中国人向けスパム?最近は少ない)。同じグループのサブグループが異なるのでしょうか?
※利用中のISPを騙るメールや有名人を騙るメールもありますが、有名企業(特に金融機関など)を騙る例が急増しています。
成済まされた企業例:Amazon / AMEX / ANA / Apple / bitFlyer / Citibank / Coca-Cola / Coincheck / DHL / Diners / dアカウント / e+ (イープラス) / Epos / ETC利用照会 / GEEKSQUAD / GMO / GOOGLE / JACCSカード / JAネットバンク / JCB / MasterCard / MetaMask / Microsoft / MUFJモルガン証券 / Netflix / Paidy_(ペイディ) / PayPal (ペイパル) / PayPay / SBI証券 / SMBC (三井住友カード) / SMTB (三井住友信託) / TEPCO (東京電力) / TS3カード / Tポイント / UCカード / USPS / Visa / WHO / あおぞら銀行 / アプラス / イオン銀行 / ルイ・ヴィトン / えきねっと / コストコ / さくらインターネット / セゾン / タウンワーク / ビューカード (JR東日本) / プロミス (SMBCcf) / メルカリ / ヤマト運輸 / りそな銀行 / 楽天 / 厚生労働省 / 佐川急便 / 東京ガス / 日本郵便 / 野村証券;※これだけあっても全部ではなく抜粋
スパム(含むフィッシング)か否かを明確に定義するのは難しいですが、一般的には以下の例で判断すればよいと思います。

更に、もしヘッダ情報を読むことができる人ならば以下も判断材料となります。
リンクに関してはソースを直接読まずとも、クリックせずマウスホバーした際に実際のURLが表示される環境ならば同じチェックが可能
正しいメールか否か、少しでも疑問を感じたらメールのリンクを辿らずに、自分のブックマークやGoogleの検索結果など正しいと確証の得られるリンクで企業サイトにログインした後に、メールが遡及する内容が本当に要求されているのか否かを確認するようにするのが得策です。
余裕がある人は、以下に報告すると良いでしょう。
通報すれば発信源/誘導先が塞がれるので、詐欺者に次を探す手間を掛けさせることになり、被害を防ぐことに繋がります。
特にGoogle Safe Browsingや、発信元や悪用された誘導先のサーバー管理者への連絡は効果が高い様子(後者2つは手間もかかりますが…)
注:誘導先の場合、通信キャリアなど一般法人の場合に限るのが無難です。詐欺者が運営していると考えられる場合は送るべきでない。
Brasilのサーバーなど管理の甘い所はGmailやYahoo!メールといったフリーメール、しかもadminやabuse, supportといった管理名でなく個人名だったりして悩ましいところです。
※企業・団体・悪意のない個人のWebサイトにあるアクティブコンテンツ(バージョンの古いWordPressやMovable Typeなど)の脆弱性を突かれて、悪意あるコンテンツがひっそりと仕組まれて、そこがフィッシングの踏み台やフィッシングサイトに悪用される場合もあり、その場合は本来の団体にWebが悪用されている旨を教えてあげるのは良いと思います。
例:東京の某区の学童クラブ用サーバーにスパムの踏み台が仕組まれたのを連絡し、調査して対処したとの返事を戴いたこともあります。
しかし…2年後に別の区の学童クラブ用サーバーがランサムウェアにやられたと報道されたのには呆れました。管理が杜撰なんでしょうか
関連:比較的新しいフィッシングレポートとして、フィッシング対策協議会 技術・制度検討 WG 報告会 (2025年2月25日) の資料:2025年版フィッシングレポートの概要とポイント (PDF) が参考になりますし、フィッシング対策協議会の月次報告書も状況把握に役立つと思います。
あとついでに、かなり古い情報だけれど…セキュリティ関連で書いたページ
撮り溜めた録画ファイルやダウンロードした映像を主としてファイルサイズを縮小するために幾つかのエンコーダ類を利用して再エンコードすることが多いのですが、比較的よく利用するMediaCoderでは2つ(ファイルサイズが小さいと3つ)のファイルを変換する毎にdonateを促すダイアログがポップアップ表示されます。2015年頃までの版では簡単な加算・減算、最近の版では文字の入力を求められますが、目の前にいる場合はその都度手作業で対応すればよいのですが、席を外して多数のファイルを一度に変換する場合には対応するまで処理が止まってしまうのがネックです。
ちょっと調べるとWindows 自動化ソフトUWSC(サイト消滅のためInternet Archiveへのリンク;作者の消息不明?)を利用して加算・減算に自動対応する例があり、それをそのまま利用することで上手くいっていたのですが、しばらく更新をせずにいたMediaCoderを数日前に更新したら質問が加算・減算でなくなったため、対応できなくなってしまいました。
※UWSCとは別のキーボードマクロツールAutoHotkeyで、足し算でない頃とその後の足し算版への対処を記したblogも後で見つけました。
再度ググってみると、ダイアログに直接答えずアルファベットのaからzまで順番にトライする方式(総当たり/ブルートフォース(力ずく)方式)のページを見つけました。最悪25回失敗して26回目に成功する場合もあり得ますが[*1]、現状のダイアログは一定回数の失敗で打ち切られたりしないので、こんな割り切ったやり方でも目的を達せられます。とはいえその様子を見るともどかしく、文字質問でも一発で回答させたくなったので、UWSCのスクリプトを書いてみました。UWSCの文法は知らなかったので検索で得た情報の付け焼刃です。
[*1] [2021-12-23 補足] 大文字小文字も区別されるので、大文字を求められたら当該ページのコードでは完了できないことが判明。大文字も試行文字列に加えればいつかは成功しますが、理屈上は最悪51回失敗して52回目に成功する場合もあるわけです。実際に提示される文字列は数パターンだけの様子なので52回を要することはないでしょうけど。
そんな訳で書いたのが以下のスクリプトです。過去版&最新版のMediaCoderは、加算・減算の質問と文字の質問を混在させて出題しませんが、どの版に対しても1つのスクリプトで対応できた方が便利なので、加算・減算と文字の質問のいずれでも回答できるようにしておきました。
ファイル名は任意(例:MediaCoder_AutoContinue.uws)
// MediaCoderによる加減算または文字の質問に自動回答するスクリプト // 以下およびUWSC文法解説ページを参考とした // 但し、文字質問に対しては総当たりではなく一発で回答するようにした // http://ameblo.jp/tomop-2012/entry-11565904937.html -- 加算 // http://www.magicvox.net/archive/2014/12181008/ -- 加算・減算 // https://pcbozu.com/blog/10253.html -- 文字(但し"a"〜"z"総当たり) Dim idx = 0 Dim ItemNum = -1 Dim StrAnswer = "" Dim StrArray = SafeArray(0, -1) // Dim StrArray[-1] でも可 Dim OrdinalNum = 0 While TRUE // 15秒待機 Sleep( 15 ) // ダイアログ検出 DialogID = GETID( "Continue in" ) If DialogID < 0 Then Continue // ダイアログ内文字列取得 ItemNum = GETITEM( DialogID, ITM_STATIC ) If ItemNum <= 0 Then Continue For idx = 0 To ItemNum - 1 StrArray = Split( ALL_ITEM_LIST[idx] ) If Pos( "math:", ALL_ITEM_LIST[idx] ) > 0 then // 質問例:Let's do a simple math: 2 + 9 = ? If StrArray[6] = "+" Then StrAnswer = Val( StrArray[5] ) + Val( StrArray[7] ) ElseIf StrArray[6] = "-" Then StrAnswer = Val( StrArray[5] ) - Val( StrArray[7] ) ElseIf StrArray[6] = "*" Then // 乗算は実際には登場しないが可能性がありうるので追加 // 除算は余りや小数、循環小数の問題があるため登場しないハズ StrAnswer = Val( StrArray[5] ) * Val( StrArray[7] ) Else MsgBox("未対応の演算子" + StrArray[6], BTN_OK) Exit EndIf ElseIf Pos( "letter of the word ", ALL_ITEM_LIST[idx] ) > 0 Then // 質問例:What is the 9st letter of the word "MediaCoder"? // ※正しくは 9th だが、MediaCoderでは1st, 2nd, 3rd以降 ?st 表示 // 序数は1st, 2nd, 3rd, 4th…という具合なので後方2文字を除去 OrdinalNum = Copy( StrArray[3], 1, Length( StrArray[3] ) - 2 ) StrAnswer = Copy( StrArray[8], Val( OrdinalNum ) + 1, 1 ) // 以下はしなくても動作上問題ないが、明確に文字に置換するならば… StrAnswer = VarType(StrAnswer, VAR_USTR) // VAR_ASTRでも可 Else // 加算・減算・文字質問のいずれでもない Continue EndIf // 回答入力エリアへ送信 SendStr( DialogID, StrAnswer, 2 ) // 2秒待機 Sleep( 2 ) // Continueボタン クリック ClkItem( DialogID, "Continue" ) Break Next WEnd