2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【警告】インドネシア発SEOポイズニング攻撃の全手口と防御策 — 医療サイト21件同時侵害の実例

2
Last updated at Posted at 2026-08-16

【警告】インドネシア発SEOポイズニング攻撃の全手口と防御策 — 医療サイト21件同時侵害の実例

はじめに

2026年8月12〜13日、当社(株式会社メディフェイス)が管理する医療系Webサイト21件が同時にハッキングされました。

攻撃者の目的はシンプルです。「日本の正規医療サイトをGoogleに違法賭博サイトとして認識させ、患者を賭博サイトに誘導する」こと。

本記事では、攻撃の全手口・IOC・検出・防御方法を公開します。同様の被害を受けている医療機関・企業のエンジニアに届けば幸いです。


攻撃の全体像

[攻撃者] 103.20.83.86 (Indonesia, Biznet Networks)
    |
    | PHPバックドア (fgh.php) 設置
    v
[被害サーバー] 自社サーバー
  ├─ medi-face.co.jp
  ├─ fraise-clinic.com
  ├─ z-sangyoui.com
  └─ ... 計21サイト
    |
    | Schema.org LD+JSON 賭博コード注入 (WordPress DB)
    | GSC 不正トークン埋め込み
    v
[Cloudflare Pages なりすましサイト]
  ├─ medi-face.pages.dev              ← Cloudflareがアクセス制限済み
  ├─ fraise-clinic.pages.dev          ← Cloudflareがアクセス制限済み
  ├─ jutsu-seribu-bayangan.pages.dev  ← Cloudflareがアクセス制限済み
  └─ wewillrockyou.pages.dev          ← Cloudflareがアクセス制限済み
    |
    v
[違法賭博サイト]
  ├─ bringmetolife.store (affiliate: cSyJDyLy)
  └─ terreagoodboy.store (affiliate: MKPA2AD00002)

タイムライン

日時 イベント
2026-08-12 深夜 攻撃開始 / fgh.php 設置
2026-08-12〜13 WordPress DB 賭博コード注入(21サイト)
2026-08-13 午前 被害検知(GSC表示回数が1日439,514回に急増)
2026-08-13 バックドア削除・コード除去完了
2026-08-13 JPCERT/CC 報告 / Cloudflare abuse 報告 / Netcraft 報告
2026-08-14 Cloudflare が4件すべてを制限(jutsu-seribu-bayangan / wewillrockyou / medi-face.pages.dev / fraise-clinic.pages.dev)
2026-08-14 警視庁サイバー犯罪対策課 被害届提出

攻撃手法の詳細

1. PHPバックドア(fgh.php)

ファイルマネージャー型Webシェル。HTTPSリクエスト経由でサーバー上のファイルを任意に操作できる。

検出方法:

# ファイル名による検索
find /home/ -type f -name "fgh.php"
find /home/ -type f \( -name "shell.php" -o -name "cmd.php" -o -name "c99.php" \)

# コンテンツパターン検索
grep -rl "eval(base64_decode\|FilesMan\|eval(gzinflate" /home/ --include="*.php"

# wp-config.phpより新しいPHPファイルを検索(攻撃後に設置されたファイル)
find /home/ -name "*.php" -newer /home/user/site/wp-config.php

被害サーバーのパス:

[被害サーバーのWordPressルート]/fgh.php  ← 設置確認済み(削除完了)

2. SEOポイズニング(Schema.org LD+JSON注入)

WordPressのDBに直接アクセスし、wp_postsテーブルのpost_contentに以下のようなLD+JSONを挿入。

注入されたコードのパターン:

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "SULEBET | SANJITOTO | AIRBET88",
  "description": "Daftar slot online terpercaya di Indonesia...",
  "offers": {
    "@type": "Offer",
    "url": "https://bringmetolife.store/?ref=cSyJDyLy",
    "priceCurrency": "IDR"
  }
}
</script>

このコードは<script type="application/ld+json">タグ内に埋め込まれているため、
ページ上には何も表示されず、Googlebotだけが読み取る。

DB内での検出(WP-CLI):

wp db query \
  "SELECT ID, post_title, LEFT(post_content, 100) \
   FROM wp_posts \
   WHERE post_content LIKE '%bringmetolife%' \
   OR post_content LIKE '%cSyJDyLy%' \
   OR post_content LIKE '%SULEBET%';" \
  --path=/path/to/wordpress

クリーンアップ:

for PATTERN in "bringmetolife.store" "terreagoodboy.store" "cSyJDyLy" "MKPA2AD" "SULEBET" "SANJITOTO"; do
  wp search-replace "$PATTERN" "" --all-tables --quiet \
    --path=/path/to/wordpress
done

3. ジオクローキング

IPアドレスで訪問者を判定し、Googlebotには賭博コンテンツを、一般ユーザーには正常ページを返す。

// 攻撃者が仕込んだジオクローキングの概念
fetch('https://ipapi.co/json/')
  .then(r => r.json())
  .then(data => {
    if (data.country_code === 'ID' || isCrawler(navigator.userAgent)) {
      // 賭博コンテンツを表示
      injectGamblingContent();
    }
  });

これにより:

  • 日本からのアクセス → 正常ページが表示される(被害に気づきにくい)
  • Googlebot → 賭博コンテンツがインデックスされる

4. Cloudflare Pagesなりすましサイト

攻撃者が作成したなりすましサイト(全てCloudflare Pagesの無料枠):

medi-face.pages.dev             → 当社ブランド偽装(RESTRICTED ✅)
fraise-clinic.pages.dev         → 提携クリニック偽装(RESTRICTED ✅)
jutsu-seribu-bayangan.pages.dev → 中継リダイレクト(RESTRICTED ✅)
wewillrockyou.pages.dev         → 中継リダイレクト(RESTRICTED ✅)

なりすましサイトの内容:

  • Cloudflare Pages の無料枠を使用(コスト0)
  • 正規クリニック名を含む日本語タイトル
  • 実際のページはインドネシア語の賭博コンテンツへのリダイレクト

5. Google Search Console不正操作

手口:

  1. 改ざんしたページのHTMLに以下を埋め込む:
    <meta name="google-site-verification" content="2Z_wOjQcGzVd53eRds3fVWKSAaDsyNsUl7AsNymx4tc" />
    
  2. 攻撃者のGoogleアカウントでGSCに被害者ドメインを追加
  3. 検索インデックスを操作して賭博コンテンツを優先表示

検出:

grep -rl "2Z_wOjQcGzVd53eRds3fVWKSAaDsyNsUl7AsNymx4tc" /home/
# GSCにログイン後
# 設定 → ユーザーと権限 → 不審なユーザーを確認・削除

IOC(Indicators of Compromise)

# 攻撃元IP
103.20.83.86        # Biznet Networks, Indonesia (AS17451)
114.10.65.118       # Telkom Indonesia (AS7713)
103.236.188.241     # Indonesia
182.10.98.57        # Indonesia
31.56.30.60         # Iran

# 悪意のあるドメイン(Cloudflare Pages)
medi-face.pages.dev
fraise-clinic.pages.dev
jutsu-seribu-bayangan.pages.dev
wewillrockyou.pages.dev

# 違法賭博ドメイン
bringmetolife.store
terreagoodboy.store

# アフィリエイトID
cSyJDyLy
MKPA2AD00002

# GSC不正トークン
2Z_wOjQcGzVd53eRds3fVWKSAaDsyNsUl7AsNymx4tc

# バックドアファイル名
fgh.php

# C2チャネル
api.telegram.org

被害を受けていないか確認するチェックリスト

WordPressサイト管理者向け

# 1. バックドアファイルの検索
find /home/ -name "fgh.php" -o -name "shell.php" -o -name "cmd.php" -o -name "c99.php"

# 2. uploads内のPHPファイル確認
find /path/to/wp-content/uploads/ -name "*.php"

# 3. DB内の賭博コード検索
wp db search "bringmetolife" --all-tables

# 4. 最近更新されたPHPファイルの確認
find /home/ -name "*.php" -mtime -7

# 5. .htaccessの不正RewriteRule確認
grep -r "bringmetolife\|terreagoodboy\|jutsu-seribu" /home/ --include=".htaccess"

Google検索での確認:

site:自社ドメイン SULEBET
site:自社ドメイン SANJITOTO
site:自社ドメイン slot online

→ 結果が出たら被害あり


対応・報告先

機関 URL/連絡先
JPCERT/CC(インシデント対応依頼) https://www.jpcert.or.jp/form/
警察庁サイバー犯罪相談 #9110
Cloudflare abuse https://www.cloudflare.com/abuse/
Netcraft フィッシング報告 https://report.netcraft.com/
Google スパム報告 https://search.google.com/search-console/report-spam

おわりに

本件は「小規模な医療サイトが狙われた」話ではありません。同一攻撃者が21サイトを同時に侵害した組織的な攻撃です。

WordPressを運用している医療機関・クリニック・企業のエンジニアの方は、今すぐ上記のチェックリストを実行してください。

IOCの詳細・完全技術論文はGitHubで公開しています: https://github.com/ToruCHIKAZAWA/MF-2026-0812

情報提供・類似被害情報: info@medi-face.co.jp


医療機関向け関連記事(medi-face.co.jp)

技術者以外の医療関係者(院長・事務長)向けに、同じ攻撃をより平易に解説した記事を公開しています。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?