ブログ

サイバー犯罪者が CAPTCHA を回避する方法

 サムネイル
2017 年 7 月 12 日公開


CAPTCHA(コンピュータと人間を区別するための完全に自動化された公開チューリングテスト)は、もともとボット、マルウェア、人工知能(AI)が Web ページとやり取りするのを防ぐために設計されました。 90 年代には、これはスパム ボットを防ぐことを意味していました。 最近では、組織は、クレデンシャルスタッフィングなどのより悪質な自動攻撃を防ぐために CAPTCHA を使用しています。

しかし、CAPTCHA が導入されるとすぐに、サイバー犯罪者はそれを回避する効果的な方法を開発しました。 善良な人たちは「強化された」CAPTCHA で応答しましたが、結果は同じでした。自動化を阻止しようとするテストは自動化によって回避されました。

CAPTCHA を破る方法は複数あります。 一般的な方法は、開発途上国の低コストの人力を活用して CAPTCHA 画像を解読する CAPTCHA 解読サービスを利用することです。 サイバー犯罪者は CAPTCHA ソリューションのサービスに加入し、API を介して自動化ツールに統合して、対象の Web サイトに回答を入力します。 こうした怪しい企業は至る所に存在しており、Google で簡単に検索すれば、次のような企業が数多く見つかります。

  • デスバイCAPTCHA
  • 2キャプチャ
  • コロティバブロ
  • プロタイパー
  • アンチゲート

この記事では、2Captcha を使用して、攻撃者がソリューションを統合してクレデンシャル スタッフィング攻撃を組織化する方法を説明します。

2キャプチャ

2Captcha.com のサイトにアクセスすると、以下の画像が表示され、1) 2Captcha で働くか、2) 2Captcha をサービスとして購入するかを尋ねられます。

サイバー犯罪者がCAPTCHAを回避する方法

オプション1 – 2Captchaで働く

2Captcha で働くには、アカウントを登録し、支払い入金用のメールアドレスと PayPal アカウントを入力するだけです。 テスト中、アカウントは数分以内に検証されました。

新しい従業員は、CAPTCHA を素早く解く方法を教える 1 回限りのトレーニング コースを受講する必要があります。 大文字と小文字が区別される場合と区別されない場合などのヒントも提供します。 十分な精度でトレーニングを完了すると、労働者は収入を得始めることができます。

サイバー犯罪者がCAPTCHAを回避する方法

「作業を開始」を選択すると、作業者は上に示すワークスペース画面に移動します。 次に、作業者に CAPTCHA が提供され、解決策を送信するように求められます。 正しく解くと、お金は電子「財布」に預けられ、作業者はいつでも支払いを要求できます。 ワークスペースに表示される CAPTCHA の数には終わりがないように見え、サービスに対する安定した需要があることを示しています。

サイバー犯罪者がCAPTCHAを回避する方法

2Captcha 作業員は、Uber のドライバーが優れたサービス (顧客評価) を提供するようインセンティブを与えられるのと同じように、正しい解答を提出するようインセンティブを与えられま す。 2Captcha の顧客は、受け取った CAPTCHA ソリューションの精度を評価します。 2Captcha ワーカーの評価が一定の基準を下回ると、そのワーカーはプラットフォームから排除されます。 逆に、最も高い評価を得たワーカーは、需要が低いときに CAPTCHA の配布で優先権を得ることで報酬を得られます。

オプション 2 – 2Captcha サービス

2Captcha をサービスとして使用するには、顧客 (つまり、攻撃者) が 2Captcha API を攻撃に統合してデジタル サプライ チェーンを作成し、ターゲット サイトから CAPTCHA パズルを自動的に入力し、ターゲット サイトに入力するソリューションを受け取ります。

2Captcha は、C#、JavaScript、PHP、Python など、さまざまなプログラミング言語で API 呼び出しを生成するためのサンプル スクリプトを便利に提供します。 Python で記述されたサンプル コードを以下に再現します。

サイバー犯罪者がCAPTCHAを回避する方法

2CAPTCHA を自動攻撃に統合する

攻撃者はクレデンシャルスタッフィング攻撃で 2Captcha をどのように使用するのでしょうか? 以下の図は、CAPTCHA バイパス プロセスでさまざまなエンティティがどのように相互作用するかを示しています。

サイバー犯罪者がCAPTCHAを回避する方法

技術プロセス:

  1. 攻撃者は、ターゲットサイトからCAPTCHA画像を埋め込むために使用されるCAPTCHA iframeソースとURLを要求し、ローカルに保存します。
  2. 攻撃者は2CaptchaウェブサイトからAPIトークンを要求します
  3. 攻撃者は、HTTP POST を使用して CAPTCHA を 2Captcha サービスに送信し、2Captcha に送信された CAPTCHA 画像に関連付けられた数値 ID である Captcha ID を受け取ります。 ID は、解決された CAPTCHA を取得するために 2Captcha への API GET リクエストのステップ 5 で使用されます。
  4. 2Captcha は CAPTCHA を作業者に割り当て、作業者はそれを解いて 2Captcha にその解決策を送信します。
  5. 攻撃者は、CAPTCHA ID を使用して 2Captcha に ping するスクリプトをプログラムします (解決されるまで 5 秒ごとに)。 2Captcha は解決された CAPTCHA を送信します。 解決がまだ進行中の場合、攻撃者は 2Captcha から「CAPTCHA_NOT_READY」を示す投稿を受信し、プログラムは 5 秒後に再試行します。
  6. 攻撃者は、CAPTCHA ソリューションとともに、入力されたフィールド (盗まれたリストの資格情報のセットなど) を含むログイン要求をターゲット サイトに送信します。
  7. 攻撃者は、各 CAPTCHA 画像に対してこのプロセスを繰り返します。

Selenium や PhantomJS などの Web テスト フレームワークと組み合わせると、攻撃者は人間のようにターゲットの Web サイトと対話しているように見せかけ、多くの既存のセキュリティ対策を効果的に回避して、クレデンシャル スタッフィング攻撃を開始できます。

収益化と犯罪エコシステム

このような優れたソリューションが導入された場合、金融エコシステムはどのようになり、各当事者はどのようにして収益を得るのでしょうか?

収益化: CAPTCHAソルバー

CAPTCHA ソルバーとして働くことは、決して儲かる仕事ではありません。 2Captcha の Web サイトで提供されている指標に基づいて、次の支払額を計算することができます。

CAPTCHA 1 つあたり 6 秒かかると仮定すると、作業者は 1 分間に 10 個の CAPTCHA、つまり 1 時間あたり 600 個の CAPTCHA を送信できます。 1 日 8 時間で 4,800 個の CAPTCHA になります。 2Captcha の従業員としてトライアル中に稼いだ金額 (ソリューション 1 つあたり約 0.0004 ドル) に基づくと、これは 1 日あたり 1.92 ドルに相当します。

これは先進国の人にとっては時間の無駄ですが、1日数ドルで比較的稼げる地域に住んでいる人にとっては、CAPTCHA 解決サービスは簡単にお金を稼ぐ方法です。

収益化: アタッカー

攻撃者は、サードパーティの 2Captcha に CAPTCHA ソリューションを 1,000 個単位で支払います。 攻撃者はソリューションに入札し、バンドルごとに 1 ドルから 5 ドルを支払います。

多くの攻撃者は、CAPTCHA 解決サービスを、より大規模なクレデンシャル スタッフィング攻撃のコンポーネントとして使用しており、その費用は正当化されます。 たとえば、攻撃者がターゲット サイトの Pastebin から 100 万件の資格情報をテストする攻撃を開始しているとします。  このシナリオでは、攻撃者は資格情報のセットごとに 1 つの CAPTCHA を回避する必要があり、コストは約 1,000 ドルになります。  認証情報の再利用率が 1.5% であると仮定すると、攻撃者は 15,000 を超えるアカウントを取得し、そのすべてを収益化することができます。

収益化: 2キャプチャ

2Captcha は、1000 CAPTCHA ごとに攻撃者から支払いを受け取ります。 前述のように、顧客 (つまり攻撃者) は CAPTCHA 1,000 個あたり 1 ~ 5 ドルを支払います。 2Captcha のようなサービスは入札価格から一部を徴収し、残りを人間の労働者に分配します。 CAPTCHA 解決サービスは大規模なソリューションとして使用されるため、利益は順調に増加します。 2Captcha が CAPTCHA を 1,000 個解決するごとに 1 ドルしか受け取らないとしても、1 バンドルあたり最低 60 セントの利益が得られます。 これらのサイトの所有者は開発途上国にいることが多いため、一見低い収益でもかなりの額になります。

Google の Invisible reCAPTCHA についてはどうでしょうか?

今年3月、Googleは「Invisible reCAPTCHA」と呼ばれるreCAPTCHAのアップグレード版をリリースしました。 すべてのユーザーに悪名高い「私はロボットではありません」ボタンをクリックさせる「no CAPTCHA reCAPTCHA」とは異なり、Invisible reCAPTCHA では、既知の人間のユーザーは通過でき、疑わしいユーザーにのみ reCAPTCHA 画像チャレンジが表示されます。

攻撃者はテストされているかどうか分からないので、これでは困惑するだろうと思われるかもしれません。 しかし、Google が Invisible reCAPTCHA を導入したわずか 1 日後に、2CAPTCHA はそれを破る方法についてブログ記事を書きました

Google がユーザーが人間であることを認識する方法は、ユーザーが要求されたページを以前に訪問したかどうかであり、Google はブラウザの Cookie をチェックしてこれを判断します。 同じユーザーが新しいデバイスの使用を開始したり、最近キャッシュをクリアしたりした場合、Google にはその情報がないため、reCAPTCHA チャレンジを発行せざるを得なくなります。

攻撃者が 2Captcha を使用してクレデンシャル スタッフィング攻撃を自動化するには、CAPTCHA チャレンジを保証する必要があります。 したがって、Invisible reCAPTCHA を回避する 1 つの方法は、攻撃スクリプトにコード行を追加して、リクエストごとにブラウザをクリアし、解決可能な reCAPTCHA チャレンジを保証することです。

Invisible reCAPTCHA の少し厄介な点は、CAPTCHA チャレンジが隠されていることです。ただし、回避策があります。 CAPTCHA は、「要素の検査」ブラウザ ツールを使用して「見つける」ことができます。 そのため、攻撃者は、隠された CAPTCHA が配置されている場所を詳細に示すパラメータを含む POST を 2Captcha に送信できます。 攻撃者が 2Captcha から CAPTCHA ソリューションを受け取ると、Invisible reCAPTCHA は、次の 2 つの方法のいずれかで自動化によって破られる可能性があります。

  1. 解決されたトークンをページフォームの送信に提供する関数を呼び出す JavaScript アクション
  2. Web ページ内で HTML コードを直接変更して、通常の CAPTCHA コードのスニペットを解決されたトークン入力に置き換えます。

Invisible reCAPTCHA が回避できるのは、新しい CAPTCHA の設計に致命的な欠陥があったからではありません。 それは、合格条件が分かっている場合、逆チューリングテストは本質的に破ることができるということです。

CAPTCHA が存在する限り、2Captcha のようなサービスが存在し続けるでしょう。なぜなら、経済的に犯罪者にとって非常に有利だからです。 低コストの人的労働力を利用することで、事業コストを最小限に抑え、サイバー犯罪者は大規模に数百万ドルを超える利益を獲得できるようになります。 また、世界には常に人件費の安い地域が存在するため、2Captcha 側では需要が一定であるため供給が一定に保たれます。

このアプローチ全体には根本的な限界があるため、世界はより優れた CAPTCHA を開発する必要はありません。 代わりに、これらの制限を認識し、パス条件が不明であるか、少なくとも攻撃者が確認するのが困難な場合に防御を実装する必要があります。

出典

ホームズ、タマラ E. 「プリペイドカードとギフトカードの統計」 CreditCards.com 。 Creditcards.com、2015年12月1日。 ウェブ。

ハント、トロイ。 「自動化された人間による CAPTCHA の突破」 ブログ投稿。 トロイ・ハント。 トロイ・ハント、2012年1月22日。 ウェブ。

本山、マルティ、キリル・レフチェンコ、クリス・カニッチ、ステファン・サベージ。 返信: CAPTCHA - 経済的背景における CAPTCHA 解決サービスの理解。 第 19 回 USENIX セキュリティ シンポジウム議事録、ワシントン DC。印刷。