88171.net

spamとの戦い 2017夏

今でもあるのか知らないけど、昔のインターネッツには「Webにメールアドレスを貼るとボットに拾われてspamの嵐が来るよ」という風潮(まあ事実なんだけど)があって、実体参照化だの画像化だのJavaScriptで難読化だの、いろんな対策が考案されていた。俺も学生時代に独自ドメインを取って以来、大事なメールアドレスを守るべく涙ぐましい努力をしていたはずなんだけど、結局は数年経ってどっかから漏れたらしくspamが来るようになった。まあメールアドレスを使う限りはそれを誰かに教えないといけなくて、それがさらに別の誰かに漏れないなんて保証はないわけで。

そういえば昨今のspamメールの氾濫を指して「Eメールは死んだ」というような論調があるけど、そんなこと言ったら過去のオープンな通信手段なんてみんな死んでる。訪問セールス然り、テレアポ然り、ポスティングチラシ然り。我が家のメールボックス(物理)なんて不動産やら何やらのチラシという体裁をとったゴミで常にフルなので完全に死んどるわ。そんで稀に超重要な郵便物に気づかずに俺も死ぬ。誰かドラスティックなソリューションがあったら教えてくださいお願いしますよホント。

メールボックス(物理)をフィルタリングしようと思ったら究極的にはもう秘書でも雇うしかないんだけど、メールボックス(デジタル)の方は全自動かつ実践的な手法がいろいろ使えるので全然マシ。中でも全幅の信頼を置いてるのがベイジアンフィルタで、もうこれなしでは生きていけない。うちではbogofilterを使ってるんだけど誤検知はほぼゼロ。検知漏れはたまにあるけど、tri-state(Spam/Unsure/Ham)で使っていて最悪Unsure止まりだし、携帯はHamでしか鳴らないようにIMAPのSeenフラグを制御してるので実害ゼロ。特に流量の多いロシア・東欧の金融系spamとかアパレル系spamとかはだいたいHTMLのテンプレが使い回しの手抜きだから、HTMLの属性値でspamicity爆上げして勝手に自滅してくれる。チョロい。

ちなみに.jpなISPのアドレスもいくつか持ってるんだけど、日本語のspamは.jpなドメインにしか来ないことに最近気づいた。.netには本当に全然来ない。まあ日本語spamの文章ってどれも読んでると気色悪いというか生理的に受け付けないというか虫唾が走るからむしろ有難いんですけど。なんだろねあの感覚。spamに「Check this!!!」って言われても無感情に「No.」としか思わないけど、「ご確認ください!」って言われると「タヒねクソが」と思っちゃうこの差。母語かどうかの違いだけなのかどうなのか。ちなみにbogofilterは日本語spamも意外とちゃんと捌いてくれます。ただトーカナイズがダメなのでヘッダ丸ごと食わせないとたぶん検知漏れ増えるけど。

ともあれbogofilterサマサマのお陰で平穏な日々を過ごしてたんだけど、去年あたりから新たな刺客が来るようになった。そうLockyお前のことだよ。こいつらランダム文字列で難読化したスクリプトをアーカイブして添付してきやがるし、ヘッダもボディも短い上にパターンが多いからベイジアンフィルタだと捕まえにくい。前述の通り実害はないにせよ如何せんウザいのでClamAVを通すようにもしてみたんだけど、やっぱりスクリプトの検出率は気休め程度。

こいつらどう料理してくれようかと考えて最近入れた対策は、まずClamAVのサードパーティデータベース。SanesecurityFoxhole databasesがテキメンに効くのでありがたい。SecuriteInfoのjavascript.ndbも試したんだけど、シグネチャベースであんまり効かなかったから外してしまった。メモリも食うし。あともう一つの対策は、エンベロープFromでここのドメインを騙るふてぇ野郎が増えたもんでそいつらはPostfixでreject、というか521で強制切断するようにした。MTAレベルで蹴っちゃうのはあんまり良い気分ではないけど、DKIMヘッダついちゃうしbogofilterの再学習にノイズが載るのは避けたいのでまあヤっちまえと。たぶんLockyの亜種のIKARUSdilapidatedにはこの対策が一番有効で、現在進行形でガンガン釣れてる。

そんなこんなで戦いはこれからも続くんだろうけど、まあ変な話、割とやりがいは感じる。