世界を動かす技術を、日本語で。

SQLインジェクションによる60,000以上のスパイウェアユーザーアカウントの取得

概要

  • Catwatchful はAndroid向けの高度なスパイアプリとして発見
  • サービス登録時に Firebase と独自サーバー両方にアカウント作成
  • サーバー側APIに SQLインジェクション 脆弱性を確認
  • 約62,000件の 平文アカウント情報 が流出可能な状態
  • 報告後、サービスは一時停止も再開、最終的に WAF で脆弱性遮断

Catwatchfulとは何か

  • Android端末向けの フル機能型スパイアプリ であるCatwatchfulの発見
  • 公式FAQ で「相手に気付かれず監視可能」と明記
  • アプリは「絶対に検知・アンインストール不可」と 自信満々に宣伝
  • 実際には インストール後、全権限要求・バックグラウンド常駐
  • アプリドロワー上では「Settings」など 偽装アイコン で隠蔽

アカウント作成とセットアップ

  • サイトで無料トライアル登録時に Firebase と独自サーバー(catwatchful.pink)へアカウント同時作成
  • 登録後、 APKファイル をダウンロード・インストール指示
  • インストール時に 全権限要求 ・インストーラー自体の削除を促す
  • アプリは ユーザーに気付かれず常駐 し、監視対象端末の情報収集

コントロールパネルの挙動

  • Webインターフェースから リアルタイムで端末監視 が可能
  • 写真撮影・マイク録音 等も即時反映、遅延ほぼ無し
  • 収集データはFirebaseの Cloud Storage 上に保存
  • Firebase Cloud Messaging (FCM) 経由でコマンド送信
  • 一部バグ(カウンター値の誤表示)を除き、 高い完成度

catwatchful.pinkサーバーの調査

  • コントロールパネル構築用に PHP API (servicios.php)へ複数リクエスト
  • 例えばgetDeviceエンドポイントは 認証無しでアクセス可能
  • ただし 端末ID(imei) は推測困難なランダム値で重大な情報は得られず
  • 他エンドポイントも 機密情報や認証情報は取得不可

SQLインジェクション脆弱性の発見

  • getDeviceエンドポイント でSQLインジェクションを試行
  • sqlmap によりブラインド型・UNION型両方のインジェクション成功
  • 非ブラインド型 でデータベース全体のダンプが可能

データベースから得られた情報

  • userテーブル には約62,000件のアカウント情報(メールアドレス・パスワード平文)
  • その他、端末情報や管理用統計テーブルも存在
  • 全アカウントの乗っ取りが理論上可能

その後の対応と影響

  • TechCrunchのZack Whittaker が運営者特定・各種通報を実施
  • Googleへ報告、Safe Browsingで警告、Firebase側は調査継続(当初DBは稼働中)
  • catwatchful.pinkのホスティング会社へ通報、 一時サービス停止
  • 直後に 新ドメイン(xng.vju.temporary.site) で再開、脆弱性は継続
  • その後 WAF設置 でSQLインジェクション遮断、サービスは継続運用

タイムライン

  • 2025-06-09: 脆弱性発見・Zackへ連絡
  • 2025-06-23: Googleへ通報、Safe Browsing警告
  • 2025-06-25: ホスティング会社へ通報、サービス一時停止
  • 2025-06-26: 新ドメインで再開、脆弱性未修正
  • 2025-06-27: WAF設置、SQLインジェクション遮断
  • 2025-07-02: 公開記事掲載

まとめ・教訓

  • スパイアプリ運営のセキュリティ意識の低さ が露呈
  • 平文パスワード保存 など基本的な対策も未実施
  • 第三者による全アカウント乗っ取りリスク が現実化
  • 報告・通報後も 運営側の対応は消極的 で再発の懸念
  • 倫理的・法的課題 のあるサービスへの警鐘

サポート案内

  • 広告・SNS無し、プライバシー重視運営
  • 継続的な調査・執筆活動への ko-fiでの支援依頼

Hackerたちの意見

sqlmap https://catwatchful.pink/webservice/servicios.php?operation=getDevice&imei=M6GPYXHZ95ULUFD0 ... sqlmapが以下のインジェクションポイントを特定したんだけど、これが一番驚いた部分だね。sqlmapの名前は聞いたことあったけど、URLを渡すだけでデータベースの内容をダンプする方法を自動で見つけ出すなんて、すごいツールだとは思わなかった。 >テスト用のスマホのトラフィックを傍受した結果、ファイルがFirebaseに直接アップロードされていることが確認できたし、ライブフォトみたいな機能のコマンドもFCMを通じて処理されていることがわかった。これで攻撃対象がかなり減るね。FirebaseにはIDORやSQLIの脆弱性がないし、オープンストレージバケットやクライアントサイドのサービスアカウントの資格情報みたいないつもの罠もすぐに排除できた。マルウェア開発者がこんなにお粗末なミスをするとは驚いたけど、Firebaseのおかげでより深刻な脆弱性から守られているんだな。Firebaseを間違って設定している他の業者がやられているのを見たことがあるけど、基本をちゃんと設定すれば攻撃対象がかなり減るみたいだね。

Firebaseの設定ミスは、フロントエンドがデータベースエントリを直接書き込もうとすることから生じることが多いけど、これらの開発者は古いスタイルのバックエンドで構造化されたオブジェクトをFirebaseに送信していたから、その問題はある程度軽減されていたみたいだね。

「sqlmapのことは聞いたことがあったけど、こんなに使えるとは思わなかった。ブログでは、今の時代には誰も自分でデータベース統合を作らないから、sqlmapがほとんど役に立たなくなったって正しく説明してるけど、あの頃は本当に複雑なウェブサービスはほぼ全てsqlインジェクションに弱かった気がする。sqlmap用の小さなラッパーを書いて、スクレイパーの結果に接続させて、サーバーに送られるデータ全てに対して一晩中走らせれば、翌日には選べるエントリーポイントがたくさんできてた。WAFにもある程度対応してたし。もう数年ITセキュリティから離れてるけど、sqlmapのコマンドライン引数は昨日のことのように覚えてるよ。」

同意するよ、こういう調査やデータ抽出がここまで抽象化されてるとは驚きだね。何年もかけて進化してきたのは驚かないけど、こんなに簡単になったとは思わなかった。

「sqlmapのことは聞いたことがあったけど、データベースにアクセスするURLを渡すだけで、ツールがSQLインジェクションの脆弱性があればデータベースの内容をダンプする方法を基本的に見つけてくれるとは思わなかった。」セキュリティについて人に伝えたい教訓が一つあるとしたら、敵を過小評価しないことだね。彼らは他の分野と同じように何十年もツールを作ってきたんだ。システムの穴を見つけて、任意の制約されたシェルコードの断片を実行できるようにする技術は、特別なものじゃなくて、オフ-the-shelfの技術なんだ。基本的なビルディングブロックだよ。実際に洗練された攻撃者はそこから積み上げていく。もし$YOUが、スクリプトキディたちがサーバーに対してWordpressの脆弱性を無差別に攻撃するのが攻撃者の洗練さの頂点だと思っているなら、$YOUは彼らに対して取り返しのつかない不利な状況にいるよ。

sqlmapはDBをダンプする方法を見つけるだけじゃなくて、SQLを解析して、インジェクションペイロードに変換してサーバーで実行する便利な「シェル」モードも提供してる。まるでmysqlやsqliteのシェルを持ってるみたい。ファイルを読み込んだり、コマンドを実行したりすることもサポートしてる(サーバーがそれをサポートしていて、DBユーザーが適切な資格情報を持っている場合)。さらに、盲目的なSQLiを悪用する方法も知っていて、そのためのトリックがいくつかある。HTTPエラーコードに基づいてクエリが成功しているか失敗しているかを判断できることが多いし、サーバーをハングさせるためにいろんなSLEEP()インジェクションを試すこともある。盲目的なSQLiの機会を見つけると、並行して大量のリクエストを行うことで、データベース全体を一ビットずつダンプすることができる。HTTPリクエストヘッダーが詰まったファイルを渡すと、自動的に潜在的なインジェクションポイントを見つけて、提供されたヘッダーと同じ形式のリクエストを送信してくれる。適切なMITMプロキシとスクリプトを使えば、SQLインジェクションテストをほぼ自動化できる。リクエストを偽装するオプションや、WAFをバイパスするためのオプション、カスタムプロトコルを使ってリクエストを送信するオプションなど、たくさんの機能がある。全体的に見ても、本当に良く設計されたツールだよ。

Q: 知られずに電話を監視することはできますか? > A: はい、携帯電話監視ソフトを使えば、知られずに電話を監視できます。アプリは目に見えず、電話上で検出されません。隠れたステルスモードで動作します。現代のAndroidでそれが可能なの?セキュリティモデルの明確な目的の一つは、これを防ぐことだと思ってたんだけど。

このアプリには詳しくないけど、読んだ感じだと、ターゲットの電話に忍び込んで「設定」ロゴのapkをインストールして、全ての権限を与えることに頼っているみたいだね(インストーラーが各権限タイプのフル権限を手動で与えたり、バッテリー最適化を無効にするプロセスを助けるんだと思う)。Androidは、そういうアプリにフル権限を手動で委譲することを許可しているんだ。

自分で悪意のプロキシや悪意のWi-Fiホットスポットを設定して、定期的にスマホを接続するのが、こういうマルウェアの検出に役立つかもしれないと思ってる。ちょっとパラノイアの境界に近づいてきたから、試してみようかなって感じ。

ライブフォトやマイクのオプションは特に気持ち悪いね。成功裏に写真を撮ったり録音したりして、すぐにコントロールパネルで確認できるけど、電話のユーザーには何もおかしいことが起きているとは微塵も感じさせない。ああ、なんてこった。

sqlmapから > sqlmapを使用して、事前に相互の同意なしにターゲットを攻撃することは違法です。最終的なユーザーは、すべての適用可能な地方、州、連邦法を遵守する責任があります。開発者は責任を負わず、このプログラムによって引き起こされた誤用や損害については責任を負いません。これらのスパイウェアアプリがどのような法的根拠に立っているのかはわからないけど、このブログ記事はCatwatchfulが著者を訴えたり、刑事告訴をしたりする場合の証拠になる気がする。道徳的に正当な理由があっても、ハッキングは依然として違法だよね。

そうだね、この一連の行為は完全に違法で、こんなことを公然と(しかも誇らしげに)ブログに書くなんて驚きだよ。今すぐ弁護士に相談した方がいいかもね。

それはCatwatchfulにとって、自分を告発する面白いエクササイズになりそうだね。ビジネスの損失を数値化しなきゃいけないから、違法な事業の価値を認めることになるし。でも、YOLOだよね?行こうぜ!

ハッキングに関する記事の半分は、実際には起こってないことを人が主張してるだけの偽物なんだよね。誰もそれをチェックしないし、発表する頃にはその脆弱性は「修正」されてるから、自分で確認することもできない。著者が言ったことを実際にやった証拠がない限り、実際のケースにはならない。この話はちょっと信じがたいけど、ファンタジーとしては面白いね。

このデータベースが公開されてないことや、開示が出版前に下にリストされてることを考えると、これはほとんどホワイトハットの活動で、ターゲットにしてる会社を助けてるだけだよね。ますます多くの企業が、WAFを導入するなど、助けを受け入れるようになってる。確かに、こういう状況では本名を使うべきじゃないと思う。ターゲットの会社との前例がないからね。ただ、Catwatchfulはストーカーアプリのために無意味な告訴を追求する理由がないと思う。実際にサービス提供者が反応しない限り、損害はほとんどないだろうし。こういう人たちには何も起こらないし、データセンターやホスト、プロバイダーがDMCAの苦情以外に本当に気にすると思う?(著作権で保護されてない不正なコンテンツをホストプロバイダーに報告して、待ってみて…歯が抜けるまで待つことになるよ)ストーカーアプリのユーザーが、アプリが一度や二度「ハッキング」されたことを気にすると思う?アプリの開発者たちも、ユーザーの50%以上が他人のデバイスにインストールしてる可能性があるのに、こういうことが合法だって法的世界に思い出させたいと思ってるのかな?個人的には、こんな怪しいものをリリースしたら、法的な問題は避けたいけどね。

誰かが指摘したように、管轄権の問題があるよね。でも、ダイグルは責任を持つことや道徳的に正当化されることを考えたんじゃないかな。Catwatchfulアプリを使って、被害者にストーカーされてることを知らせるのは魅力的だったはず。例えば、電話番号やSNSのハンドルを取得して、SMSやDMで被害者に連絡する(アプリが録音された会話で被害者のハンドルを明らかにする場合)。または、IMEI番号を取得して、通知を行うことができるネットワーク事業者や地元の当局に渡すことも考えられる。多くの被害者を助けるかもしれないけど、場合によってはうまくいかないこともあるかもね。

スパイウェアを作る技術がある人が、パスワードを平文で保存したり、エスケープされていないユーザー入力をデータベースクエリに流し込むような基本的なミスをするとは意外だね。

ユーザーのパスワードを取得するのが彼らの目的の一部だと思うよ。だから、どこかに保存されている必要があるね。

たぶん、彼らは気にしてなかったんだろうね。

年を重ねるうちに学んだことは、才能ある開発者でもセキュリティが苦手なことがあるってこと。多くの場合、学校で教えられたり、トレーニングでカバーされたりすることじゃないから、そういうマインドセットがないんだよね。他の技術には優れていても。もし公共のインターネットにさらされるものを作るなら、「どうやって人がこれを壊したり、悪用したり、ハッキングしたりするか」を考えるプロセスを経るべきだよ。そうしないと、確実にステップを見逃してる。

マルウェア開発者は、セキュリティの衛生よりも機能性や市場投入のスピードを優先することが多いんだ。彼らは「隠れていれば安全」という誤った考えのもと、自分たちのインフラが攻撃されることはないと思っているんだよね。

ちょっと前、すごく変な電話の問題(iPhone)があって、これらのサービスの一つに絞り込んだんだ。明らかに0クリックの脆弱性にやられたと思うけど、どうやって感染したのか全く分からなかったし、今でもわからない。すごく気持ち悪かったし、これらのサービスのユーザーや運営者には全く同情できないし、この研究者はあまりにも礼儀正しすぎると思う。

どうやってその問題を診断したの?私のiPhoneは家電みたいに感じるし、ますます遅くてバグも多いんだよね!

マルウェアビジネスにいる人は、絶対にあなたがやったことで訴えたりしないから、全く心配しなくていいよ。よくやったね!

TechCrunchの記事にはこう書いてあるよね。>「GoogleはGoogle Play Protectの新しい保護機能を追加した」と。でも、記事のデバイス設定のスクリーンショットを見ると、アプリがGoogle Play Protectをオフにするように指示してる。これって、意味あるの?その一方で、Google(Firebaseブランドを通じて)はこのアプリのホストとして機能し続けてるみたいだし…。