mhattaによる
2007年07月09日 16時30分の掲載
どうやったんだろ部門より。
どうやったんだろ部門より。
Anonymous Coward曰く、
本家/.の記事より。HotmailやYahooといった無料メールアカウントの大量自動作成に成功したスパマーがいるらしい。セキュリティ企業BitDefenderによれば、すでに15,000以上のHotmailアカウントが機械的に作成されているという。HotmailもYahooもCAPTCHAを採用しているため、スパマーはCAPTCHAの突破に何らかの手段で成功したということになる(TECH.BLORGE.comの記事)。また、自動的に作成されたYahooやHotmailのアカウントをスパムメールの送信に悪用するトロイの木馬、Trojan.Spammer.HotLan.Aも登場したようだ。
CAPTCHAの突破に関しては、本物の人間を使った人海戦術や、偽装サイトにおびき寄せた人間に代わりにCAPTCHAを突破してもらうといった比較的ローテクな手法から、AIや機械的画像認識アルゴリズムを利用した高度な手法まで提案されているが、実地で利用されたケースはほとんど無いという。今回使われたのがどのような手法なのかはまだ判明していない。
この議論は賞味期限が過ぎたので、保存されている。
新たにコメントを書くことはできない。
すばらしい (スコア:5, 興味深い)
エンジニアとしては喜ぶべきことでしょう。なぜなら画像処理技術がまた一歩前進したからです。
CAPTCHAを用意してる側は画像生成アルゴリズムを(少し)変更すれば、
微々たる作業でこれを防ぐことができます。
面白いのは、こういったハッカーに対し資金やモチベーションを提供するのは、
防御側ではなく攻撃側なんですよねー。
仕事柄「1000万通送信できるメールサーバ構築してよ」というのはありますが、
「1000万通のスパムを受信しない方法にお金出すよ!」っていうのは全然ありません。
スパムを送信することはお金を生みますが、防御はお金を生まないですものね。
# captcha.jpの中の人なので
Re:すばらしい (スコア:4, おもしろおかしい)
これで夢のモザイク除去技術が一歩前進したといえますから。
#mozaiku-jyokyo.jpの中の人なので
##なわけない
親コメント
Re:すばらしい (スコア:4, すばらしい洞察)
モザイクのかかってないのなんかエロくないじゃないか。
親コメント
とても余計なもの (スコア:2, 興味深い)
(多くの人は思春期から刷り込まれていると思う)
もはや見えない部分が下着や水着でも何でもアリです。これ(開く前に周りを確認してください) [livedoor.biz]見てそう思いました。
#かなり余計なものは承知ですが、以前に妙に感心したので。
親コメント
Re:すばらしい (スコア:3, すばらしい洞察)
>微々たる作業でこれを防ぐことができます。
できます、という根拠が不明なので何とも評価しにくいのですが、
根本的にCAPTCHAを無力化するような画期的な仕組みが開発されたとしたら
微々たる作業で済むどころか、何やっても無駄ということに
なりかねないんじゃないですか?
>「1000万通のスパムを受信しない方法にお金出すよ!」っていうのは全然ありません。
そういうことだと、世の中に有償のスパム対策システムが存在できないと思いますが
現実には沢山存在しますよ。
親コメント
Re:すばらしい (スコア:5, 興味深い)
Yahoo!やHotmailのCAPTCHAに特化してるので、生成アルゴリズムを変更するだけです。
パラメータをいじるだけでいいかもしれません。
逆に根本的にCAPTCHAを無効化する仕組み(=人間が読める文字は何でも読めるアルゴリズム)
なんてのが開発されたら、CAPTHCAなんてどうでもいい技術ですね。
有償のスパム対策システムは会社の中の人が月給30万ぐらいで作ってるんでしょうが、
スパム送信の話は僕個人に8桁の値段できます。来ました。
#でも、システムは作れるけど回線が無いのでお断り
親コメント
CAPTHCAはチューリングテスト (スコア:3, 興味深い)
CAPTHCAは、Completely Automated Public Turing Test To Tell Computers and Humans Apart、つまり自動化されたチューリングテストなわけですよね。実現できてるかはさておいて目指すところとしては。
「根本的にCAPTCHAを無効化する仕組み」とは「チューリングテストをパスする仕組み」なわけで。そんなものができてしまえば、それはそれはすごいことだと思います。
# もちろん(本来の意味の)チューリングテストをアルゴリズムで行うことは可能か? という問題はありますが。
親コメント
Re:すばらしい (スコア:2, すばらしい洞察)
>CAPTCHAを用意してる側は画像生成アルゴリズムを(少し)変更すれば、
>微々たる作業でこれを防ぐことができます。
攻撃側が画像処理技術の秘匿に成功し続け、かつ技術の詳細が不明であるがため、
これを防ぐためのアルゴリズム変更が困難であり続ける可能性について。
#そのうち漏れる可能性の方が高いと思うけど
親コメント
Re:すばらしい (スコア:2, すばらしい洞察)
オープンになってくれないと OCR とかに入れられない…。
> 「1000万通のスパムを受信しない方法にお金出すよ!」っていうのは全然ありません。
spam を送信しようとしている側は真っ当な技術を持ってないが、逆側は各社内部でなんとかしてるんじゃないでしょうかね。
うちは私が spam filter 導入したんですが、その直前は毎日の朝の仕事が spam の選分けになっていて、とても焦っていました(「皆が同じことをしているとしたら、一体幾らの損失だろう!」)。
spam filter も CPU を結構食うので今は先に maildrop を通しています(ある種のヘッダ条件が揃えばゴミ箱へ)。私自身は一度誤検出された正規のメールがあったので spam 候補をざっと眺めることにしていますが、それでも玉石混合状態から探すよりは大分マシです。
ただ、spam の全体量が増えると spam filter から漏れ出てくる量も増えるので、今後も楽観視は出来ないような話も聞いています。
親コメント
Re:すばらしい (スコア:2, 興味深い)
>微々たる作業でこれを防ぐことができます。
日本人向けにひらがな/カタカナ/漢字を混ぜた認証システムを作ればいい。
そうすれば外人会員排除にも有効?
>「1000万通のスパムを受信しない方法にお金出すよ!」っていうのは全然ありません。
表立っては無いでしょうけどセキュリティー会社に売り込めるし、本当にその能力あるなら
自分で会社創設も可能かも。
親コメント
Re:すばらしい (スコア:2, おもしろおかしい)
でいいや。
親コメント
Re:すばらしい (スコア:2, すばらしい洞察)
親コメント
Re:そんなに難しく無いと思うけど (スコア:2, すばらしい洞察)
画像スパムも最近は傾いたのが主流で、フィルターの画像認識からすり抜けてる、という話も聞いたことがある。
まぁ今の画像認識なら傾きくらい補正してると思うが。
少なくとも画像系のいたちごっこは、最終的に認識する側が勝つだろう。
CAPTCHAが無意味になる代わりに、画像スパムも無意味になる、かな?
親コメント
手書き文字認識は、書き順の情報があるのでOCRとの比較は無意味。 (スコア:2, すばらしい洞察)
手書き文字認識は、書き順を重視しているので、OCRとは別の物だと思います。
試しに、出鱈目な順番(線を引く方向とかも変える)で文字を描いて(←敢えてこっちの字)みましょう。
習字の手本や、広く使われているフォントなどにそっくりな美しい字が描けたとしても
認識結果はさっぱりな事になると思います。なので、書き順さえ正しければ、字なんて読めない代物でも問題ないんです。
本人でも解読不能な殴り書きの暗号メモ帳でも、完成図の静止画だけでなくて、動画付きなら、スロー再生すれば他人にも読める筈って理屈ですな。
親コメント
自動認証に力ずくで成功した例 (スコア:5, 興味深い)
http://slashdot.jp/article.pl?sid=07/06/05/0044217 [slashdot.jp]
で
「CAPTCHAを破るための餌だったりして。」
なんて話題がありましたが、その後CAPTCHAを自動認証するFirefoxのプラグインが日本人の手によって作られました。
とはいっても画像認識しているわけではなく、一見自動生成のように思われたCAPTCHAが、実は同じ画像の使いまわしていることに気づいた2ちゃんねる住人の発見が発端で、それなら画像をデータベース化してしまえ
ということでハッシュ化された画像DBをサーバー経由で共有するまでに開発が進みました。
こうした偽CAPTCHAによる認証については高木浩光氏も以前から指摘していましたが http://takagi-hiromitsu.jp/diary/20060810.html [takagi-hiromitsu.jp]
案外ランダムのように見えていたのは生成アルゴリズムではなく、画像選択処理だけだったというケースは多いのかも知れません。
Re:自動認証に力ずくで成功した例 (スコア:4, 参考になる)
そのCAPTCHAは、うねった英単語が表示されるタイプで、
片っ端から画像をかき集めると、確か画像数は全体で数万点程度になったと思います。
が、恐らく自動一括で生成した際の情報がそのまま残っていたのか、
HTTPヘッダに更新日時の記録が残されており、
その順に画像ファイルを並べ替えると、きれいに画像が英単語のabc順に並んでしまいました。
しかも一つの英単語につき20種類ぐらいずつ画像が作成されていたため、
結局、高々千個程度の英単語を読み上げるだけで対応表を作成できました。
親コメント
どんどん難しい画像になっていき (スコア:4, おもしろおかしい)
Re:どんどん難しい画像になっていき (スコア:4, 興味深い)
やっぱり無理...orz
親コメント
Re:どんどん難しい画像になっていき (スコア:2, おもしろおかしい)
# そしてUSキーボードユーザからクレームが来ると
親コメント
Re:どんどん難しい画像になっていき (スコア:2, おもしろおかしい)
それより、三つの単語から三題噺を作って、落ちが面白ければOKってのは?
無理だよなあ・・・
親コメント
Re:どんどん難しい画像になっていき (スコア:3, 興味深い)
親コメント
Re:どんどん難しい画像になっていき (スコア:2, おもしろおかしい)
#あの人は今
親コメント
Re:どんどん難しい画像になっていき (スコア:2, おもしろおかしい)
OとQ、Iとlはよく間違える。
だからもっととんちを利かす方向に行って欲しいな。
何度入力しても駄目だと思ったらたぬきの絵が描いてあったとか。
親コメント
Re:どんどん難しい画像になっていき (スコア:2, おもしろおかしい)
・画像がはみ出してて読めない(はてなダイアリー)
・白黒になってて元の文字が見えない(どこだか忘れた)
というのには遭遇しています。
親コメント
CAPTCHA破り自体は結構ありふれてますよね (スコア:3, 興味深い)
単にそれを実行する人の割合が少ないので、サイト開発側はコスト的に現在の CAPTCHA が落としどころになっているというだけ。
サイトの性質によってどれほどコストをかけるべきかの判断は違うので一概に CAPTCHA じゃ安心できないとは言えないでしょう。
比較的カジュアルな大量取得を防ぎたいという要件なら依然効果はあると思います。
スパマーからしたら、HotmailやYahooやGmailなどメールサービスは狙い目でしょうから対策にコストをかけざるを得ないかもしれませんね。
一般のサイトではまだそこまで心配しなくても良いのでは…、と思います。
スパムクローラからフォームを隠すのも大切 (スコア:5, 興味深い)
それと同時に、「巡回してくるボットが登録フォームの存在をかぎつけないように、フォームの存在を隠す」対策も必要ではと思います。
大手ではなく一般のサイトでは、スパムターゲットは手動ではなくロボットが見つける事が大半でしょうから、特に有効かと思います。
実際、私の運営しているウェブサイトのアクセスログを取ってみると、たとえ本物のCGIプログラムではなくて、フォームの使い方の解説用としてHTMLファイルに記述したダミーフォームであっても、そのフォームに定期的にPOSTしようと試みてはいつも失敗している怪しげなスパムボットがやって来る事があります。
どうやら、掲示板やブログやメールフォーム等の投稿フォームにありがちなフォームのパターン(name, emailといった名前のテキストボックスに加えてtextareaという構成)をスパムクローラが見つけると、スパムターゲットとみなされてロックオンされてしまうようです。
掲示板やブログやメールフォーム等のCGIプログラムの開発を考えているなら、完全な投稿フォームを、クローラから見える範囲に丸裸で置いておくのではなくて、チューリングテストにパスした時だけ見せるのがスパム防止に有効です。
実際私も、チューリングテストとまではいかないまでも、入口に「氏名」のテキストボックス+「次画面」ボタンだけの単純な投稿フォームを作って、そのフォームにPOSTしないとtextarea要素を含む完全な投稿フォームを表示しないよう、メールフォームプログラムを手直ししたところ、一時期毎日のように来ていたスパム投稿がパタリと止んだ実績があります。
もっとも、HotmailやYahoo並の大手サービスとなると、犯罪者もボットで探すのではなく手動で個別に対応するでしょうから、また別の話になるかもしれませんが。
「愛」も「萌え」も定義は広い。 押井徳馬(・(T)・)
親コメント
Re:スパムクローラからフォームを隠すのも大切 (スコア:3, 参考になる)
こちらでは、被リンク数稼ぎ(?)のURL羅列spam対策に限れば、以下2つの条件で99.9%排除できてます。
・formの"mail"とかに「@」が入っていたら弾く
(今時、わざわざe-mailのspamを呼び寄せる「人」はいないよねー。
どーせ使わないので、nameはmailでそのままでサイト持ちのURL記入欄に改造してるのに)
・本文のtextareaに「<a」「[url=」が入っていたら弾く
(うちのBBSは、HTMLは受け付けないし、BBCodeも受け付けないよ)
掲示板にspamに舞い込みはじめた頃はその対策がちょっと面白かったのですけど、近頃はワンパターンの馬鹿なプログラムしかなくて退屈です。
おそらく、そんなのでも世の多数の無防備な掲示板に書き込めるので、たまに出会う小細工に対応する必要はないのでしょう。
>完全な投稿フォームを、クローラから見える範囲に丸裸で置いておくのではなくて、チューリングテストにパスした時だけ見せるのがスパム防止に有効です。
これは、spam投稿ロボット自体が来なくて、無駄な回線負荷やCPU負荷がなくなるのがよいですね。
親コメント
Re:CAPTCHA破り自体は結構ありふれてますよね (スコア:2, おもしろおかしい)
それらの場合に防ぎたいのは、無差別のspam書き込みです。無差別のspam書き込みを防ぐには、「CAPTCHAがある」ことだけで十分です。
既にいわゆるCAPTCHAを解析するツールは色々あります(*)。しかし、少なくとも今のところ、CAPTCHAの種類を判定してそれに合わせた解析を行い、その結果をformの正しい項目に当てはめる「賢い」spam投稿プログラムは(たぶん)無いでしょうから。
*:参考
CAPTCHA --- Radium Software Development 2006-11-07 [radiumsoftware.com]
PWNtcha - captcha decoder [zoy.org]
Breaking a Visual CAPTCHA [cs.sfu.ca]
/aiCAPTCHA : CAPTCHA Comment Spammer [mperfect.net]
ただし、あまり軟弱なのもどうかとは思います。特に、「狙い撃ち」される可能性がそれなりにあるサイトでは。
「高木浩光@自宅の日記 - 飾りじゃないのよCAPTCHAは ~前代未聞のCAPTCHAもどき, CAPTCHA機能の発注仕様をどうするか [takagi-hiromitsu.jp]」で扱われているほど酷くなくても、「CAPCHAもどき」と言えそうなのを時々見ます。
メジャーなサイトでは例えば、はてなダイアリーのguestで投稿する場合のCAPTCHA。簡単そうだよなーと思って試したら、簡単に機械投稿できました [hatena.ne.jp]。ビットマップの画像データを色々いじった経験のある人なら、簡単でしょうね。
親コメント
Re:CAPTCHA破り自体は結構ありふれてますよね (スコア:2, 興味深い)
これは、まさにその通りだと思います。
自作の掲示板で、平均一日に数通、ひどいときは数時間ほどの間に100通以上スパム投稿されることがあったのですが、
アクセスカウンタ用のcgiを改造して作った、文字に何のエフェクトをかけない、ただ並べるだけのCAPTCHAもどきを設置したところ、
スパム投稿は一ヶ月に1通あるか無いかぐらいに減りました。
(最初、マジメにPerlの Authen::Captcha を使ったCAPTCHAを組み込んだんですが、
「文字が読みにくくて入力に失敗することがある」って問題と、CPU負荷が高いので、上記手抜きシステムに変更)
あとは、日本人専用にするなら、数字をかなで表示してアラビア数字入力させればいいんじゃないかと思ってみたり。
「いち さん にい なな」と表示されてたら「1327」と入力、みたいな。
親コメント
Re:CAPTCHA破り自体は結構ありふれてますよね (スコア:2, 興味深い)
慣れた旅行者は海外の宿ノートでオーナーに見られてもいいように
「ココのホテルは二十五ドルまで値下げ可能でした、友人から聞いたと言って頑張ってください。」
「もっと安い宿は駅の西にあります。電話は三五八-九七二二 です」
という具合に漢数字を使うというエピソードを思い出しましたw。
親コメント
もどき (スコア:3, 興味深い)
こういうオチ [takagi-hiromitsu.jp]じゃないですよね?
大量の (スコア:2, おもしろおかしい)
そのうちあるまじろが会社を作ってスパマーは追い出されるかもしれない。
実は (スコア:2, おもしろおかしい)
「能トレ」とか「タイピング練習」が流行ってるんじゃないか。
もちろんユーザの入力はサーバで集約されて…
確か (スコア:1)
この突破の手法が広まってGmailアカウントがスパマーの温床になるのだけは避けたいです。
公私を問わず活用させてもらってるので、アカウントごと弾かれるような未来は想像したくないです…
回線の向こうに居るのは? (スコア:1)
機械か人かどうやって見分けたの?
# 機械>的<って言ってるだけで機械とは言ってない?
真面目に画像処理で突破するなら。 (スコア:1)
真面目に画像処理で突破するなら。
フーリエ記述子が使えそうですね。
下ごしらえとして、画像から高周波成分やノイズを除去してから
文字の縁取りもしくは細線化した2値化画像を作ります。
このままでは斜めになっていたり変に伸びていたりして判断しにくいですが、
この細線化した線を辿るように、「真っ直ぐ」「右ちょい」「左へもっと」・・・と
言う感じにどっちにどれだけ曲がっているかの指示データに直します。
そしてこの指示データはグラフに出来ます。横軸が進む距離で縦軸が上方向が左指示で
下方向が右指示と言う感じです。
このグラフをフーリエ変換して低周波成分だけ取り出したものと、
代表的なサンプル文字とを比較することでマッチングできそうですね。
大きさはグラフの伸縮となり、回転はグラフの横軸のズレになりますね。
1方向に伸びている分にはちょっと工夫が要りそうですがいけそうですね。
もしかしたら問題ないかも?
特徴的な成分の場合分けや他の手法を複合して評価するとさらに良いかもしれません。
乱暴な説明になりましたがいかがでしょうか?
そう単純ではない (スコア:3, 参考になる)
>フーリエ記述子が使えそうですね。
この手の解析については,
・文字とは異なる色でダミーの線を追加する
・文字を点描で描く/かすれさせる
でガードが可能です。
親コメント
アルファベット以外+ソフトキーボード (スコア:1)
アラビア数字で認証するから、認識プログラムが作りやすいんですよ。
なので、漢字やアラビア文字、ハングルやロシア文字を混ぜて
ランダムに表示させ(OCRで認識できない程度の加工で問題なし)
ソフトキーボードで入力させるようにすれば、ほぼ機械的に
突破は不可能なのでは?
#日本の携帯向けには絵文字が有効だったりして
CAPTCHA (スコア:1)
"Your C1alis 0rder"とか" "repl1ca w4tches"とか。
Re:ぜひ利用したい! (スコア:1)
...以前よりも難しくなっているんですかね。
# それまでは間違ったことなどなかったので、不思議だったんですよ。いや、マジで。
親コメント