ロボットはどのようにしてCAPTCHAを打ち負かすことができますか?


84

Webサイトの電子メールフォームがあります。カスタムCAPTCHAを使用して、ロボットからのスパムを防ぎます。それにもかかわらず、私はまだスパムを受け取ります。

どうして?ロボットはどのようにしてCAPTCHAを打ち負かしますか?ある種の高度なOCRを使用するのか、それとも保存場所からソリューションを取得するのか?

どうすればこれを防ぐことができますか?別の種類のCAPTCHAに変更する必要がありますか?


電子メールはフォームから送信されていると確信しています。これは、フォームメッセージを送信する電子メール送信者から送信されるためです。文字スタイルも同じです。

記録のために、私はPHP + MySQLを使用していますが、この問題の解決策を探しているわけではありません。ロボットがこれらの技術を打ち負かす一般的な状況に興味がありました。この状況を例として伝えたので、あなたが私が尋ねていることをよりよく理解することができます。


86
私はあなたの質問に対抗したいと思います:人間はどのようにCAPTCHAを打ち負かすことができますか?
ピーターB

14
誰かがこの質問に下票に値すると思うなら、少なくともその理由を私に説明してください。
-totymedli

10
@Blrfl、これがどのように話題から外れているのか理解できません。

47
あなたが私たちにあなたの質問に答えてほしいなら、まずあなたがロボットではないことを証明してください。
ピートカーカム

7
@Blrflただし、高品質のソフトウェア開発とは関係があります。
イズカタ

回答:


72

CAPTCHAを使用する最も簡単な2つの方法:

  • ProTypersのように、人間の農場を使用してください。

  • OCRを使用します。

CAPTCHAメカニズム自体または周囲のアプリケーションのいずれかにバグがあり、誰かがCAPTCHAをバイパスできるようにすることもできます。

ちなみに、W3Cの記事「CAPTCHAのアクセス不能:Web上のビジュアルチューリングテストの代替手段」では、CAPTCHAがどのように侵害される可能性があるかについても説明しています。

[...]システムに対する最初の文書化された攻撃の1つは、カーネギーメロンの学生によるもので、CAPTCHA画像をアダルトWebサイトへのアクセスに関連付けたため、認証を破るための自由な労力を獲得しました。[...]

外部プロジェクト[...]は、光学式文字認識を使用して、システムの多くが88%〜100%の精度でコンピューターに打ち勝つことができることを示す方法論と結果を示しています。

それでは、これらの攻撃をどのように防ぐことができますか?

  • カスタムCAPTCHAを実装している場合は、reCAPTCHAなどの人気のあるものに移行してみてください。

    これは、独自のCAPTCHAがOCRに簡単すぎる場合、または悪用されたバグがあった場合に役立ちます。

  • 人気のあるCAPTCHAメカニズムを使用する場合、カスタムメイドのメカニズムまたは別の人気のあるCAPTCHAメカニズムに移動すると、OCRが妨げられる可能性があります。

技術的には、人間の農場を妨げるものは何もありません:複数のフレームが異なるテキストを非常にすばやく表示し、実際に1つのフレームのみがユーザーに表示されるアニメーションGIFを作成できます。 OCRはテキストを認識しますが、CAPTCHAを解決するために支払われた人は依然として問題を解決します。

視覚的なCAPTCHAからサウンドに移行することもできます(両方をまだ使用していない場合は、使用する必要があります)が、これは聴覚障害のあるユーザーがアプリケーションを使用できないことを意味します。


FrustratedWithFormsDesignerGalacticCowboyは、コメントドメイン固有のCAPTCHAで言及しました。私はそれらがどれほど効果的であるかについていくつかの資料を見つけようとしましたが、成功しなかったので、ここに私の個人的な意見があります:

  1. ドメイン固有のCAPTCHAは、実際のユーザーが答えを知らない場合、非常に迷惑です。

    例:映画向けのWebサイトのページにアクセスしています。記事の間違いに気付いたので、その記事についてコメントして、著者に間違いについて通知したいと思います。コメントフォームは、CAPTCHAメカニズムとして、写真に表示されている女優の名前を提供するように私に求めています。私はこの女優が誰なのかわからないので、私ができることはウェブサイトを離れる(またはGoogle画像を使って次の2分間を過ごす)ことだけです。

    別の例:ウェブサイトは「神秘的な」の同義語を与えるように頼みます。英語を流に話す障害のない人にとっては簡単に聞こえますが、英語を上手に話せない人や発達障害のある人は、同義語や反意語を見つけるのが事実であるという事実を考慮せずに、外部からの助けなしに解決することは不可能です常にトリッキー。

  2. これらのドメイン固有の問題のほとんどは、プログラムで解決できます。私が挙げた両方の例は、外部リソース(Google Images and Synonyms辞書)を使用して簡単に解決できます。FrustratedWithFormsDesignerが例として示したトランジスタに関するものは優れていますが、それでもおそらくカスタムメイドのボットで解決される可能性があります。

  3. 人間の農場に抵抗するものはありません。

  4. 彼らは同じように、生成アルゴリズム自体がチューニングするボットを活用することができる、または、彼らはどこかにデータを見つけた場合には、通常のテキストCAPTCHAのは歪んだ文字を描くと同じように、データを生成するのいずれかのreCAPTCHAは、スキャンされた書籍からテキストを取るボットができ、その場合には、それに対してこのデータを使用します(たとえば、辞書から単語を取り、ユーザーに同義語を提供するように要求すると、ボットはまったく同じ辞書を使用して100%成功することができます)。


4
動作が保証されているCAPTCHAがないことに注目して+1
ニール

8
私は非常にドメイン固有の斬新なキャプチャを見てきました。それらの1つは抵抗の画像を表示し、ユーザーは抵抗を入力する必要がありました(抵抗カラーバンドの読み方を知らない人のためのヘルプページへのリンクがありました)。別のものは、楽譜の小さな断片のイメージがあり、ユーザーは特定の音符(「2番目の和音のみの音符」など)を入力する必要がありました。彼らはまだゲーム可能ですが、スパマーへのコストは価値がないかもしれません。
FrustratedWithFormsDesigner

2
@MainMaは、ビジュアルを無視し、代わりにオーディオキューを解釈するため、キャプチャを非常に高速にボットするボットを設計した人に関する技術報告書のどこかに投稿がありましたので、静的に追加する必要がありますとにかくユーザーにとってはさらに困難になるオーディオ
-RhysW

@RhysW:私が述べたW3Cの記事では、画像から音声に移動してもボットの問題は解決せず、ボットにとっても物事が簡単になる可能性があると述べています。
アルセニムルゼンコ

24
人間の農場。なぜマトリックスを描いているのですか?
-LarsTech

37

MainMaの回答に追加...

スパマーは他の人をだましてCAPTCHAを実行させます

基本的に、スパマーはCAPTCHAを含むように見えるウェアーズサイトまたはポルノサイトを設定しますが、実際のCAPTCHAではありません。ボットは、スパム(またはエクスプロイト)したいサイトからCAPTCHAを引き出し、それをウェアーズサイトまたはポルノサイトに表示します。次に、CAPTCHA値がボットに渡されます...

スパマーについてもう少し

reCAPTCHAを使用しますが、基本的には価値がないことがわかりました。また、reCAPTCHAを過ぎたスパムをキャッチするカスタムスパムフィルターを使用し、数日ごとに誤検知を確認する必要があります。

私のフォーラムもすべてカスタムで作成されており、トラフィックはほとんどありません。私のサイトへの特定の攻撃を誰かがコーディングしたとは思わない。それでも、私のスパムフィルターは1日2kのスパムメッセージをキャッチします!サイトには何も表示されません。スパマーは、私にスパムを送信してもメリットはありませんが、それでも有効です。

すべてをログに記録しているため、スパム行為のパターンを確認できます。CAPTCHAを通り抜ける方法は別として、スパマーは明らかに、ブルートフォーステクニックを使用して、入力されるフィールドと、それらのフィールドに入力されるデータとワードミックスの種類を変えています。どうやら彼らはこれを非常に安く(CAPTCHAのバイパスを含む)行っているので、個々のサイトの分析を行っても、彼らがやっていることが機能しているかどうかを確認する費用はかかりません。

毎年、彼らは私のサイトを1日に数千のスパムメッセージで標的にし続け、毎月1通のスパムメッセージを取得し、そのメッセージは1日後に手動で削除されます。スパムはとても安いです!

これは今後数年間の戦いになるでしょう。特に私のような小さな一人のモデレーターサイトの場合。


編集6/22/2017:この投稿googleがreCAPTCHAを完全に刷新して以来、この記事の執筆時点で問題なく機能していることを付け加えます。私はそれを実装してから投稿が少し落ちたので、ユーザーに少しの誤検出や痛みがあると思うが。2つの大きな変更点は

1)彼らはテキストの代わりに画像を使用している(だからOCRはもうない)

2)彼らはそれをreCAPTCHAを使用するすべてのサイトのユーザーアクティビティと組み合わせています。そのため、サイトAのreCAPTCHAを通過してからサイトBに移動しても、あなたが人間であることを証明するよう促されることはありません!また、あまりにも多くのサイトであまりにも多くのreCAPTCHAをヒットしている場合は、同様にフラグを立てます。ユーザーのアクティビティに基づいて、他の種類のAIも使用していると確信しています。

スパマーがこれを打ち負かすまで、それは時間の問題だと確信しています...


これはおそらく、小さなWebサイトでのreCAPTCHAの最も強力な議論です。Googleには、現在のスパムテクニックに対応するためのリソースがもっとあります。
スティーブンC.スチール

15

キャットドッグキャプチャを使用したことがありますか?私は、標準的なキャプチャを使用して変更したフォーラムを持っています。それ以来、ゲストスパムはありません。ここに画像の説明を入力してください


12

あなたのサイトは、搾取された非常に安い労働力によって標的にされている可能性があり、人間がCAPTCHAフレーズを手動で入力している可能性があります。

使用しているソリューションがあまり洗練されていない場合、攻撃者が画像認識を行っている可能性があります。

また、CAPTCHAのバイパスを許可しているコードのどこかにバグがある可能性もあります。

ロボットがあなたのCAPTCHAを破っていると仮定しないでください。システムを総合的に考え、システムが侵害されているかどうかを確認します。


画像とCSSスキームを組み合わせて、人間が簡単に整理できないようにします。
エリックReppen

2
二つの言葉...メカニカルターク。Amazonはcaptchaのクラッシュを信じられないほど安価なものにしました。
マイケルブラウン

10

他の人は、スパマーがCAPTCHAをどのように回避するかについて議論しています。ここにいくつかのヒントがあり 、私はこれを防ぐことができますどのように

特効薬はなく、スパマーはゲームの一歩先を行っているようです。したがって、複数の手法を組み合わせて使用​​する必要があります

  1. ハニーポットフォームを使用する
  2. CAPTCHAまたはロジックの質問を使用します。「リンゴ、魚、手、6-これらのうちどれが体の一部であるか」などの基本的な質問
  3. 遅れてください。ページの読み込みから5秒以内にフォームが投稿されると、リクエストは無視され、ほとんどのロボットは1秒以内に投稿します
  4. IPアドレスを監視します-ホワイトリスト(google、bing)にないクモがWebサイトをクロールしていることに気付いた場合、そのIPアドレスをブラックリストに登録して禁止します。コード/ソフトウェアで動的/自動化することが望ましい

6

他の答えをエコーするには、人間の農場を使用してそれらのキャプチャを入力するボットに遭遇する可能性があります。

私は最近、クライアント側のJavaScriptを要求することでスパムボットをブロックする手法について説明しました(そして付随するDrupalモジュールをリリースしました)。私が知る限り、これはこのコードを使用したすべてのサイトで100%の効率で機能しました。AJAXを使用して一意のハッシュを生成し、他のフォームデータと一緒に送信し、フォームが送信されるとバックエンドで同じハッシュを計算し、2つの値を比較するという考え方です。

私のブログ投稿の完全な詳細(偶然にも、PHP + MySQLの使用について述べたので、これらはそこで説明されているものと同じ技術です)- モジュールリリース:Badbot。スパムを排除しています...


1
それが広まり、スパマーがヘッドレスブラウザを使用するまで、それは機能します。
ザビエルコンベル

1
ヘッドレスブラウザを使用すると、どのような変更がありますか?
タチアナラチェバ

-2

あなたのサイトがツイッターで、誰かが(ボットがそれを見つけるのではなく)具体的にターゲットにしている場合、読むのをやめることができます...

そうでなければ、フォームをフォームのように見せないようにする価値はないかもしれません。1.タイプ、名前、またはプレースホルダーに「電子メール」が含まれるフィールドを使用しないでください。すべてのフィールドに短い名前または誤解を招く名前を使用してください。2.実際のhtmlフォーム要素と送信ボタンを使用しないでください。むしろ、AJAXを使用して、通常のdiv(ボタンのように見えるようにスタイルが設定されている)のクリック時に投稿します。3. HTMLにonclickイベントを配置せず、JavaScriptにリスナーを追加します。4. JavaScriptを使用して、「ここにメールアドレスを入力してください」というヒントを入力します。ページをトロールするときにボットが実際にJSをトリガーしない可能性があるためです(これについてはわかりませんが、とにかく行います)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.