2007/1/13

Spamassassin plugin --> FuzzyOCR 偵測圖像式垃圾郵件

垃圾郵件無所不在,由早期文字形態的信件,進化到圖文並貌的HTML格式。而由於anti-spam技術的進步,幾乎可達到九成的攔阻率。但「道高一尺、魔高一丈」,spammer開始大量運用圖片形態的方式來寄送郵件。圖像式垃圾郵件在圖片內容加入大量的雜訊資料(noisy data),藉以迴避掃描引擎的偵測。

以目前anti-spam市場所推出的產品,若是缺少掃描圖像式垃圾郵件的功能,相信也無法在市場上生存,例如:IronPortSophos PureMessage等廠商皆推出具備相,關功能的產品。

中正大學 吳昇教授的研究團隊推出了「無痛式垃圾郵件過濾系統: Nopam」,其設計理念是「垃圾郵件與正常郵件最大的分野在於行為而非內容。」。等於是利用行為模式進行垃圾郵件的偵測,不知是否能有效判別圖像式垃圾郵件呢?

當然,開放源碼的SpamAssassin也不能在此一功能上缺席,也出現了不少相對應的solution,例如:OcrPlugin

而此篇文章所要介紹的 FuzzyOCR,是一套修改自OcrPlugin的Spamassassin plugin。同樣是利用光學字元辨認(OCR)的方式,來識別圖像式郵件所包含的「文字訊息」,並利用Fuzzy word matching演算法判斷辨識出來的文字。

主要具備了下列的功能:

  • Optical Character Recognition using different engines and settings
  • Fuzzy word matching algorithm applied to OCR results
  • Image hashing system to learn unique properties of known spam images
  • Dimension, size and integrity checking of images
  • Content-Type verification for the containing email
Matching and learning techniques
  1. 可彈性支援不同的OCR interface,並利用fuzzy word matching演算法來處理辨識的結果。
  2. 支援DB,可將處理過的圖片,以feature vectors的形態儲存在資料庫。因此相同或是類似的圖片,便可以利用儲存在DB的特徵向量來處理。
  3. 能檢測不同維度、size與整合性的測試。
  4. 郵件內容檢測。
Resource saving techniques

  1. 僅掃描郵件,而非辨認該封信件是否為垃圾信件。信件的分類仍交由spamassassin所判別的分數高低來決定。
  2. 對於已達到spam分數門檻的郵件,FuzzyOCR在處理該封郵件時會忽略該封信件而不進行掃描,進而減輕系統負載。(3.5版之後提供)
  3. 藉由比對儲存於DB的feature vectors(dimensions and file size)。若比對成功,則忽略該封信件,而不再進行OCR辨識與處理。
Safety measures
  1. 可設定掃描郵件timeout的時間,藉以避免Denial of Service的攻擊。
  2. 使用word sets取代simple lists,避免FuzzyOCR錯判的可能。


列出幾張FuzzyOCR網站的範例圖片供各位參考:

An animated gif is scanned for the first time
normal_result

The same gif is scanned a second time
known_hash

Various tricks of Image Spammers
broken

FuzzyOcr Debug output when running SpamAssassin with -D (or enabling debug mode in the config)
debug

沒有留言: