自分自身のための ものづくり / 自分自身のためのものづくりメモ

突っ込みなどがありましたら掲示板にお願いします。

* 1日あたりの、披spam投稿回数

#掲示板spam対策
$ cat access2BBS_24Dec.txt | grep POST | cat -n | tail -1
48 219.23.20.207 - - [24/Dec/2006:23:32:17 +0900] "POST /BBS/BBS.cgi HTTP/1.0" 200 23406 "http://baku.homeunix.net/BBS/BBS.cgi" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
…というわけで、48回
(2006年12月24日の場合)

 そりゃ、まったく無防備の掲示板だったら完全に機能しなくなるよな。手作業で対応できる量じゃねぇ。


ToDo: POSTとGETの時間間隔の統計を取る

* やっつけspam対策

#掲示板spam対策
  • メール欄(当サイトではurl欄に転用だが、nameは'mail'のまま)に「@」があったら、それはspam
  • 本文に「<a」や「[url」があったら、(ry
  if ($FORM{'mail'} =~ /@/) {
    $is_spam = 1 ;
  }
  if ( ($FORM{'data'} =~ /<a/) or ($FORM{'data'}=~ /\[url/)) {
     $is_spam = 1 ;
  }

* 最初のGETを使い回すspam投稿ロボット

#掲示板spam対策 #個々事例
spam投稿司令塔とゾンビの兵隊も参照
 GETとPOSTが違うホストから行われる例であり、また、DSBLの効きがめっきり悪くなった例でもある。

2006/12/15,04:24:55,72.36.205.10,"sql3.christiandnsonline.com","-","-",GET,"/BBS/BBS.cgi","","1.1",200
2006/12/15,04:25:15,80.227.0.156,"","-","-",POST,"/BBS/BBS.cgi","","1.1",200
2006/12/15,04:25:19,222.231.50.97,"","-","-",POST,"/BBS/BBS.cgi","","1.0",200
2006/12/15,04:25:21,83.243.108.45,"named.derbynet.pl","-","-",POST,"/BBS/BBS.cgi","","1.0",200
(ReadMore...)

* DSBLが効かない

#掲示板spam対策
 7月末にDSBLは効果絶大なんて書いたのだが、近頃(12月現在)はめっきり効果がない。

 現在も、掲示板のプログラム冒頭でDSBLに問い合わせて、登録されていたら問答無用で404を返しているのだが、ログを見るとspammerっぽいアクセスの防御率は1割を切っているっぽい。
(詳細な分析はしていないので、ぱっと見だが。
 導入当初は「ほとんど」のそれっぽいGETを弾けていたのだけど。

(「メールアドレスとして有効な文字列があったら」投稿拒否しており、それによりほぼ全てのspam投稿は拒否されているが)


 原因は不明。DSBLがあまり更新されていないのか、DSBLには登録されないbotnetを使った投稿が主流になったのか…。
 どちらにせよ、防御率と誤判定の危険を天秤にかけると、DSBLの使用は、もはやあまりお勧めではない。

* 新種のspam投稿ロボット「6fNS6」(仮称)

#掲示板spam対策 #Web
 対象ページのtitleをtextareaに放り込んだり、cookieを食べたりと、これまでにやってきた芸のないspamとは毛色が違う。
(ReadMore...)

* G-LIGHT(等)向け、お手軽spam対策

glight.cgiの400行目あたり↓の部分の
if ($in{'email'} && $in{'email'}!~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/)
{ &error("Eメールの入力内容が不正です"); }
にある「!~」を「=~」に変える。

 メール欄記入時のエラー条件が反転する。
 その結果、メールアドレス欄に記入されていて、かつその文字列がメールアドレスとして有効なものである場合に、エラーが発生する。

 英語圏の無差別spamは、ほとんどの場合にformのそれっぽい欄(name="mail"とか)にメールアドレスを入れて投稿するので、この改変でエラーとして弾かれる。
 spamが飛び交う昨今、掲示板に無防備にメールアドレスを書き込む人なんていないよね?

 Webの日本語圏に蔓延^H^H普及しているKent製の掲示板プログラムでは同じような部分があるので、G-LIGHT以外でも同様の改変が可能であろう。わずか一文字書き換えるだけでいい割には、効果絶大だと思う。

#掲示板spam対策 #Web

* layeredtech.comを立ち入り禁止に

 xxx.xxx.xxx.xxx.reverse.layeredtech.comからのアクセス後に、必ずOpenProxy経由とおぼしきspam投稿試行があり、
2006/11/06,10:37:27,72.232.179.242,"242.179.232.72.reverse.layeredtech.com","-","-",GET,"/BBS/BBS.cgi","
2006/11/06,10:37:28,62.225.72.140,"","-","-",POST,"/BBS/BBS/BBS.cgi"
2006/11/06,10:37:36,81.183.212.133,"mail.fairway.hu","-","-",POST,"/BBS/BBS/BBS.cgi"
かつ、まともそうなアクセスもないので、
#xxx.xxx.xxx.xxx.reverse.layeredtech.com
deny from 72.232.0.0/16
として、丸ごとアクセス禁止にした。

 クラスBを丸ごとってのはどうよ?と思わないでもないけど、日本語に堪能でかつゲーム機のRGB出力化改造とかに興味を持った人が、layeredtech.comにいる可能性は極めて低いと判断してアクセス禁止。
 もしも巻き込まれた不幸な人がいたなら、あからさまなspammerをのさばらせているlayeredtech.comを呪うがよい。あくまでGETしかしていないから規約で退会させるって事ができない、のかもしれないけど、それはそれ。

#掲示板spam対策 #Web

* spam投稿司令塔とゾンビの兵隊

2006/10/25,22:18:17,209.67.214.90,"server1.xpressaccess.com","-","-",GET,"/BBS/BBS.cgi","","1.1",200
2006/10/25,22:18:19,201.13.121.178,"201-13-121-178.dsl.telesp.net.br","-","-",POST,"/BBS/BBS/BBS.cgi","","1.1",404
2006/10/25,22:18:22,86.55.117.135,"","-","-",POST,"/BBS/BBS/BBS.cgi","","1.1",404
2006/10/25,22:18:27,59.94.9.179,"","-","-",POST,"/BBS/BBS/BBS.cgi","","1.1",404
 server1.xpressaccess.comがフォームを取得した後、OpenProxy経由での書き込みを試みている様子がはっきりとわかる。
 対象BBSは、DSBLに登録されているホストには問答無用で404を返すように改造してあるので、投稿自体は失敗に終わっている。
 しかし、司令塔みたいなserver1.xpressaccess.comはDSBLには登録されていない。ただの想像だが、DSBLとかに登録されないように運用しているのだろう。BBQでも引っかからないし。で、潰してもいい人様の穴のあいたマシンを踏み台にして、実際のspam投稿を行う、と。


 以下は、他にもあった同様の痕跡。
2006/10/24,23:38:14,72.36.151.106,"dcwindows.net","-","-",GET,"/BBS/BBS.cgi","","1.1",200
2006/10/24,23:38:23,200.204.126.148,"200-204-126-148.dsl.telesp.net.br","-","-",POST,"/BBS/BBS/BBS.cgi","","1.1",404
2006/10/24,23:38:32,61.95.205.88,"dsl-KK-static-088.205.95.61.touchtelindia.net","-","-",POST,"/BBS/BBS/BBS.cgi","","1.0",404
2006/10/24,23:38:33,221.247.27.81,"221x247x27x81.ap221.ftth.ucom.ne.jp","-","-",POST,"/BBS/BBS/BBS.cgi","","1.0",404
2006/10/24,23:38:36,59.94.101.21,"","-","-",POST,"/BBS/BBS/BBS.cgi","","1.1",404

#掲示板spam対策 #Web

* spam投稿ロボットと302

 spammerの投稿用リストに問題でもあったのか、そもそも存在しない/bbs/bbs.cgiへのアクセスが見られる。
 せっかくだから、実験用に302を返すだけのページを用意してみたところ…
2006/09/17,14:48:10,69.41.171.138,"wmstream.libertyleague.com","-","-",GET,"/bbs/bbs.cgi","","1.1",302,302,"http://baku.homeunix.net/bbs/bbs.cgi"
2006/09/17,14:48:10,69.41.171.138,"wmstream.libertyleague.com","-","-",GET,"/bbs/bbs.txt","","1.1",200,0,"http://baku.homeunix.net/bbs/bbs.txt"

 へぇ、302を追いかけるのね。
 これを利用して、spammerからのアクセスだったら、その宣伝したいサイトに302で誘導して無用な負荷をかけて嫌がらせ…、と思ったけど誤認したときが厄介なのでダメだな。

#掲示板spam対策 #Web

* 掲示板spammeerのPOSTの投げ方

 formを生成した時刻をtype=hiddenで記すようにしてみた。
 結果、以下のことがわかった。
・フォームの内容は最初にGETしたときのを使い回す
・不明なhiddenは、その時のをそのまま送る

 GETするのとPOSTするのとでホストを変えるのを逆手にとって、hiddenでホストに関する情報を入れておくのも手だな。
(ReadMore...)

* 掲示板spammerの削除パスワード

 掲示板spam投稿ロボットによっては、POST時に削除パスワードを入れるのがある。削除パスワードがないと書き込み拒否される場合の対策だろうか?

 どうやら、削除パスワード欄であるかどうかの判別は、"pass"とかの文字列かどうかで判断しているようだ。ダミーの<input type="text" name="pass">をclass="dummy"とでもして、cssで不可視にしておけば、排除の判断に使えそう。

 不思議なことに、ランダム文字列じゃなくて固定文字列だったりある程度の規則性があったりする。何かあったときに消去を試みるためだろうか?
(ReadMore...)

* 馬鹿なspam投稿ツール?

 Apacheのログに、BBSへのPOSTを行ったもののエラーか何かで反映されていない、spammerからのアクセスが時折見られた。
 ApacheのログにはPOST内容までは記録されないので、BBSのプログラムを少しいじってPOST内容を記録するようにして、その手のアクセスを待ち構えることにした。

 で、やっとそんなアクセスが1件あったのだが…
rep_num 0
pass    bsbl7822
do      post
name    Helga
data
mail    vovo@hotmail.com
subj    carpet-cleaning

 本文空っぽ。URLとかを書き込もうとした形跡もなし。
 何をやりたいのだろう?と思って、とりあえず"vovo@hotmail.com"をぐぐってみると…
 どうやら、本文のtextareaのname属性が"body"じゃないと、本文と判断しないらしい。
…馬鹿?

 ま、spammerが能無しなのはありがたいことだ。
 とりあえずDSBLに登録されているOpenProxy経由のを弾いても稀にすり抜けて投稿されるのがまだあるので、そんな馬鹿な作者のツールばかりではないようだが。

#掲示板spam対策 #Web

* DSBLは効果絶大

公開プロキシ弾きを投入してからspammerがやってくるのを今か今かと待っていたのだが、やっとやってきた。
2006/07/12,16:24:26,222.113.48.67,"","-","-",GET,"/BBS/BBS.cgi","","1.0",404,660
2006/07/12,16:24:30,59.10.196.81,"","-","-",GET,"/BBS/BBS.cgi","","1.0",404,660
2006/07/12,16:24:33,219.251.229.245,"","-","-",GET,"/BBS/BBS.cgi","","1.0",404,660
はい、さようなら。

 spammerがコストをかけずにあちこちからspamをばらまくにはいわゆる公開プロキシを使うぐらいしか手がないだろう。よって、公開プロキシを弾くことは簡便で極めて効果的な掲示板spam対策だと思う。
(botnetを使う手もあるが、そういうクラックをできるspammerはかなり少ないだろう)

#掲示板spam対策 #Web

* いわゆる公開プロキシからのアクセスを弾く

掲示板へのspamが激しくなりつつあるので対策。
(ReadMore...)

* spammerは踏み台を使う、ならば

 spammerっぽいアクセスは、全部いわゆる公開プロキシからのものだった。
 ならば、書き込み処理があったときにプロキシかどうかを調べれば良さそう。

 書き込み時に、http://dsbl.org/listing?hogeの問い合わせをして、リストに載っているなら弾けばいいだろう。
 問答無用で弾くと誤認識だったときに申し訳ないから、その場合にだけ人間かどうかのチェックボックスとかを出せばいいかな。

#掲示板spam対策 #Web