1.    
  2.    
  3.     Як працюють антиспам фільтри

Як працюють антиспам фільтри

Принципи і технічні методи роботи з кореспонденцією незапитуваної

Ілля Сегалович ([email protected]), Дмитро Тейблюм ([email protected]), Олександр Дилевский ([email protected])

Введення

Опускаючи етичну і соціальну проблематику, пов’язану зі спамом, ми в даній статті зосередимося на способи його доставки, методи виявлення і придушення. Потім ми обговоримо помилки, що часто виникають при описі цих методів та їх можливостей. В заключній частині статті буде розказано про «супершингле Яндекса» – нескладному технічному метод детектування масових розсилок, що використовується в Яндекс.Поштою.

Частина 1. Доставка спаму. Еволюція

Щоб спам потрапив у ваш ящик, його необхідно вам доставити. Оскільки ми не зустрічали чіткої класифікації спаму способу доставки (а інші класифікації зводяться до простої дихотомії: спам, модифікуючих, і спам, не модифікувальний текст замовника) спробуємо коротко описати їх тут. Можливо цей текст здасться зайво докладним, однак, нам здається цікавим простежити, як розробники спамерського ЗА відгукувалися на виклик, кинутий їм антиспамом, і vice versa.

Спам молодий. Як засіб активного маркетингу він виник приблизно в 1997 році. Про дату його виникнення можна судити з моменту, коли Paul Vixie створив RBL. RBL – історично перша серйозна спроба боротьби зі спамом. См. http://www.wikipedia.org/wiki/DNSBL.

Еволюція технічних видів спаму на 100 відсотків обумовлена еволюцією антиспамових коштів. Причому історія тут розвивається стрімко, по наростаючій. За останні два роки в ній, мабуть, сталося більше подій, ніж за всі попередні.

Прямі розсилки і відкриті релеї.

Перші види спаму були просто прямими розсилками. Такий спам блокується досить просто, і спамери почали використовувати відкриті поштові релеї, тобто звичайні поштові сервери, які дозволяють безпідставного користувачу скористатися сервісом відправлення листа на інший сервер. Зауважимо, що інших реле в ту пору просто не було, а саме поняття «відкриті релеї» виникло лише після того, як з’явився спам і їх взагалі почали закривати.

Такі відкриті релеї досить легко детектувати, їх почали активно шукати і блокувати. Після цього у прямих розсилок настав ренесанс – спам став розсилатися з «диалапов» і для його блокування системним адміністраторам довелося дізнаватися і блокувати IP модемних пулів основних провайдерів.

Проксі-сервера. Socks і HTTP

Трохи більше 2 років тому з’явилися як помітне явище більш витончені способи використання чужих, неакуратно сконфігурованих серверів.

Socks-проксі сервери призначені для зведення всього інтернет-трафіку невеликих компаній до однієї єдиної машині, що має доступ в Інтернет. Для роботи вони зазвичай використовують порт 1080. Якщо машина допускає неавторизоване з’єднання з довільного IP-адреси (типова ситуація в еру до спаму), її можуть використовувати спамери і для направлення свого SMTP-трафік. Цікаво відзначити, що логи використання socks-серверів зазвичай не ведуться, тому відстеження справжніх джерел розсилки навіть самими адміністраторами socks-серверів найчастіше неможливо.

Майже відразу ж виявилося, що і стандартні відкриті HTTP-проксі (типові порти 3128, 8080 і т. д.), що підтримують метод CONNECT, легко використовувати для того ж самого, достатньо в команді CONNECT вказати не тільки ім’я сервера, але і задати 25-й поштовий порт. Навіть улюблений усіма «народний» вебсервер Apache, зібраний з модулем mod_proxy і неправильно налаштований, нерідко використовують як засіб поштової розсилки спаму.

Зламані машини. Стандартне ПЗ. Модифицированое. Зміна портів і часу прослуховування. Троянські коні.

Вичерпавши можливості пошуку недбайливих адміністраторів, спамери приблизно рік тому чи трохи більше почали зламувати будь-які доступні комп’ютери і встановлювати на них одну з перерахованих вище сервісних служб SMTP-релей або проксі. Додайте до цього вибухове зростання кабельних підключень в США і який-небудь Бразилії, (Росія порівняно з США і тієї ж Бразилією – дрібниця), при тому що Windows не має включеного за замовчуванням брандмауер, адміністратори місцевих кабельних і DSL-мереж ніяк не захищають своїх користувачів в силу низької кваліфікації, а сто «порівняно чесних» і добре документованих способів злому незахищених Windows-машин друкує журнал Хакер в кожному другому номері, і ви отримаєте практично безмежне поле діяльності для зломщика. Остання і найпотужніша хвиля зломів виходить від P2P мереж типу Kazaa і e-mail-вірусів, таких як Sobig, що несуть в своєму коді «робочий набір спамера».

Треба сказати, що погана захищеність таких мереж далеко не завжди відбувається від низької кваліфікації адміністраторів. Іноді це відбувається в силу «політичних» причин: цілком кваліфіковані адміністратори провайдера вважають, що вони відповідають тільки за підключення, а все інше – проблема клієнта. Навіть у Росії рідко зустрінеш домашню мережу, захищений брандмауером та тим більше практично неможливо побачити в пам’ятці клієнта такої мережі нагадування про те, що в Windows треба встановити брандмауер.

Однак, встановивши відкритий релей або проксі, спамер ризикує тим, що його дуже легко виявити. Будь адміністратору достатньо звернутися до підозрілої машині по одному з відомих портів і переконатися, що його пускають без авторизації (ця процедура називається «прозвоном»), щоб внести цю машину у чорний список. Тому спамери, особливо в останні півроку-рік, почали змінювати поведінку зламаних машин.

Якщо розсильний демон приймає звернення тільки від IP свого господаря і/або засинає і прокидається по хитрому алгоритмом, та/або постійно змінює порт, по якому приймаються команди і листи, то пряме виявлення таких машин методом продзвону звичайного адміністратора сильно ускладнюється. Адже щоб продзвонити всі 65536 TCP-портів потенційно зламаної машини, потрібен час – приблизно близько півгодини, за цей час вона може змінити порт, заснути і т. д. і т. п.

Однак те, що недоступно сторонній адміністратора або зовнішньої антиспамерской команді, все ще можуть зробити адміністратори провайдера. Вони можуть стежити за дивною поведінкою клиентсикх машин, які, прослухавши вхідне з’єднання по незвичайному порту, починають активно розсилати пошту за різними адресами. Такий моніторинг не дуже важко організувати.

Спамерский софт розвивається. Відносно безневинний софт для прямих розсилок (наприклад Advanced Mail Sender), в якому спамер в обхід сервера провайдера звертається до цільового MTA прямо з домашнього модему, змінився просунутими складними системами, вершиною яких є троянські коні широкого спектру дії. Серед їх можливостей є навіть апгрейд самих себе, автоматичне поширення, переїзд на інші зламані машини і т. д.

Наприклад, функція такого троянського коня: сходити на HTTP записаний в ньому адресу в заданий час, взяти звідти списки адрес і листів, розсилати пошту, дізнатися час і місце наступного заходу. Іноді троянські програми прослуховують канали IRC і отримують команди звідти. Це дозволяє приховати джерело команд. На відміну від HTTP, де створення сайту або завантаження нових файлів відслідковується досить легко, повідомлення на канал IRC можуть передаватися через будь-який з серверів IRC-мережі, і для відстеження джерела необхідний оперативний доступ до логів всіх серверів відразу. Загалом, є багато способів приховати троянську програму: використовувати нестандартні порти, управління, протоколи і т. д. і т. п.

Можливості по активному виявленню зламаних машин

Теоретично (і практично) спосіб розсилки, при якому сама зламана машина звертається по HTTP або IRC за листами і ніколи не знаходиться в режимі прослуховування, найважче виявити. Практично не можна зрозуміти, що вони роблять, який їх інтерфейс зі спамерами, так сказати. Наприклад відомо, що якийсь троян ставить стандартні проксі і SMTP на нестандартних портах. Зазвичай інформація про це трояне цим і вичерпується. Заражених користувачів та провайдерів цікавить тільки як прибрати троян – а антивірусні програми робити це навчаються швидко. Для більш або менш серйозної боротьби зі спамом цікавіше знати, хто цей троян поширює і як він це робить. Для подібних з’ясувань і корисні адміністратори мереж, в яких є заражені машини. Наприклад, якщо троян ходить кудись навіщо-то по HTTP, то по-перше, треба виявити це звернення і його зміст, а також відповідь тієї сторони, а по-друге, відстежити вхідні з’єднання з ним, їх джерела і суть.

На щастя, у спамерів теж існує поділ праці – категорія «зломщиків» виділилася в окрему професію, а товаром і предметом купівлі-продажу служать списки IP-адрес. Покупцями є «рассылочники». При цьому стандартність встановленого ЗА відіграє велику роль. «Рассылочникам» набагато зручніше працювати з використанням звичайного списку, не піклуючись про особливості поведінки того чи іншого хитрого трояна. Тому складні і просунуті троянські коні поки не набули дуже широкого поширення. Втім кількість спаму поки росте по експоненті – так що може статися, що вже отримали, тільки ми цього ще не усвідомили.

Не виключено, що в кінці кінців проксі і релеї вийдуть з моди, прозвон стане все менш і менш ефективним засобом, і єдиним способом виявляти чергову чорну діру буде виявлення спаму, посланого з неї.

Організаційні зусилля по боротьбі зі спамом

Часто можна почути про якесь майбутнє протоколі електронної пошти, після впровадження якого спаму не стане. Хотілося б додати цю ідею трохи здорового скепсису.

Мережеве співтовариство не змогло досі впровадити найпростіші антиспамерські прийоми, які само ж встановило в якості стандарту. Наприклад, поділ портів SMTP-сервера, порт для MTA (25: прийом пошти від чужого сервера для збереження свого користувача; «спілкування між серверами») і MSA (587: прийом листа від свого користувача для відправки на чужий сервер; «спілкування між користувачем і сервером»). Ця ідея, також як і SMTP авторизація, з’явилася саме як реакція на появу спаму.

Минуло вже чимало часу, однак 587 порт так і не з’явився в популярних програмах типу Outlook Express або The Bat! А адже ця проста міра дозволила б провайдерам просто закрити всі вихідні з’єднання по 25 порту і повністю ліквідувала б прямий спам «по картках» – спам з dialup з’єднання. Як відомо, Інтернет-Картка коштує 5 доларів, її вистачає на 10 нічних годин, за цей час можна розіслати десять тисяч листів і спокійно піти купувати нову картку, а стару (вже непотрібний) заблокує виведений з себе провайдер.

Немає ніяких технічних перешкод налаштувати поштовий сервер, щоб він не брав пошту від «небезпечних незнайомців» і блокував як «спам по картці», так і чорні діри. Досить, наприклад, включити і налаштувати вбудований в будь-SMTP-сервер протокол SSL, так щоб він відхиляв несертифіковані з’єднання. Сертифікати, що ідентифікують сервер, теж давно існують. За 50-100 доларів в рік на поштовий сервер можна придбати їх у Thawte або Verisign. На жаль, при такій настройці ви взагалі перестанете отримувати пошту, так як ні в кого, звичайно, сертифікатів немає.

Новий протокол придумати напевно можна. Але працювати він буде тільки в тому випадку, якщо на нього одночасно перейдуть всі поштові системи. Інакше ті, хто на нього перейде, виявляться ізольованими від тих, хто не перейшов. Іншими словами, щоб ви навчилися плавати в басейні, хтось повинен спочатку налити туди воду. Однак сучасний Інтернет нагадує той самий божевільний будинок, в якому воду наливають, тільки після того як ви навчитеся плавати.

Висновок: очевидно спам не можна перемогти «хорошим» протоколом. Але спам можна перемагати спільними зусиллями антиспамерського, систем зворотного зв’язку, погоджених дій провайдерів і т. д. І про це піде мова нижче.

Частина 2. Методи боротьби зі спамом

Можна зустріти різні описи (по суті класифікації) засобів боротьби зі спамом. Оскільки програма це завжди «Алгоритм + Структура Даних», то і класифікацію програм правильно засновувати на видах використовуваних даних і використовуваних алгоритмів. Що ми і спробуємо зробити нижче.

Зустрічаються однак опису, засновані на бажанні просунути свою власну технологію. При цьому часто виникає спотворена картина, що вводить користувачів в оману. Критики таких картин ми також приділимо увагу.

Завдання спам-фільтрації

Задача, яку вирішує детектор спаму за змістом: розділити вхідний потік повідомлень на спам і нормальну пошту, Spam і Ham в англійській мові.

Вихідні дані

Дані, які використовуються для аналізу – це все ознаки прийшов листи. Їх можна розділити на чотири простору, обчислення рішень у яких можна проводити незалежно:

  • IP-адреса сервера відправника
  • оформлення і стиль листів, заголовки, форматування, характерні обертів
  • статистика слів в листах
  • контрольні суми («сигнатури») текстів листів

Природно, що простір ознак кожного набору даних обмежують тільки «цікавими» ознаками.

Конкретний антиспамовий модуль може використовувати всі ці простору ознак або тільки 1-2 з них. Недоліки і переваги кожного з просторів ознак ми обговоримо нижче. Поки ж звернемо увагу на необхідне присутність ще двох складових «задачі машинного навчання», класичним прикладом якої є детектор спаму, а саме: навчальної вибірки і зворотного зв’язку.

Зауважимо, що на відміну від просторів слів або елементів оформлення, при впізнанні спаму по IP-адресою рішення приймається по одному-єдиному « ознакою. Зважування за адресою зазвичай не проводиться, отже, налаштування вісового механізму на навчальній вибірці не потрібна. Однак без зворотного зв’язку (у випадку з IP – без постійно поповнюваного списку чорних дірок) задовільно працює механізм не можна побудувати ні по одному з перерахованих вище просторів.

Помилки першого та другого роду

Щоб будь-яке машинне навчання працювало, йому необхідно повідомляти про помилки. Помилки бувають двох видів. Помилка першого роду: пропуск спаму, тобто пропуск спамового листи. Іншими словами – недостатня повнота методу. Помилка другого роду – помилкові спрацьовування, коли не спам помилково відносять до спаму. Іншими словами – точність методу.

Природно, пріоритет при налаштуванні алгоритму віддається мінімізації числа помилкових спрацьовувань. Звичайна вимога для спам-детектора – вкластися в кілька проміле. Вважається, що краще дати користувачеві прочитати кілька спамових листів, ніж приховати від нього цей лист.

Інтегральний показник якості

Відсоток детектованого спаму є міра повноти, відсоток помилкових спрацьовувань – міра неточності. Нескладно запропонувати інтегральну оцінку якості, назвемо її якістю фільтрації. Очевидно, що при точності, близькою до 100%, якість буде приблизно дорівнює повноті. Саме повноту фільтрації часто і називають, коли озвучують ті або інші цифри, маючи на увазі, що точність практично абсолютна.

При цьому треба розуміти, що гострота сприйняття помилки другого роду залежить від характеру надходять на поштову скриньку листів та індивідуальних уподобань користувача: люди, що обговорюють в пошті багатомільйонні угоди, реагують на помилки другого роду набагато більш болісно, ніж сервіс підтримки користувачів і, тим більше, читачі розсилки анекдотів.

Помилкові спрацьовування. Різні підходи

Досить велике значення має те, що відбувається за помилки другого роду – від цього залежить величина збитку, що наноситься цими помилками, і, отже, вимоги до їх кількості.

Можливі наступні реакції фільтра на виявлений спам:

  • лист відкидається поштовим сервером; при цьому, якщо воно насправді було «законним» листом, відправник отримає повідомлення про це;
  • лист поміщається в спеціальну папку; користувач має шанс заглянути в цю папку і побачити там помилково відфільтроване лист;
  • лист «видаляється», як ніби його й не було; ніхто ні про що не знає.
  • Сценарій (3) – найнебезпечніший; на щастя, адміністратори поштових серверів його майже ніколи не використовують. Однак з популярних текстів, про які ми будемо говорити нижче, часто створюється враження, що використовується саме він.

    Сценарій (2) з одного боку має тенденцію вироджуватися в (3), якщо якість фільтра хороше. З іншого боку, регулярний перегляд користувачем папку зі спамом знижує користь фільтрації, хоча це і робиться істотно рідше, поверхневим переглядом і т. д. В такому сценарії, однак, збиток від помилок другого роду мінімальний, а зворотний зв’язок максимальна.

    Сценарій (1) – традиційний варіант для «класичної» фільтрації по IP адресам. На відміну від (2), він не вироджується в (3), однак при цьому навантаження на сервер істотно зростає, якщо у фільтрі використовується вміст листа.

    Проміжна зона – «полуспам»

    Дуже важлива, часто недопонимаемая проблема полягає в тому, що спам і не спам перетинаються в дуже великій мірі.

    Розсилки, від яких важко відмовитися, але на які ви тим не менш (здається?) підписувалися. Підписки, що виникають при реєстрації, без вашого відома. Численні квитанції дурних антиспамерских і антивірусних програм. Автовідповідачі. Розсилання правил спамерами за допомогою веб-форм з публічних, абсолютно неспамерских веб-сервісів, тим не менш слабо захищених від вторгнення. Наприклад, листівки або запрошення вступити в той чи інший веб-спільнота – за текстом такого листа навіть автор не може зрозуміти, спам це чи ні. Вся така кореспонденція може бути сміливо віднесена до «полуспаму».

    Обсяг цієї зони дуже і дуже значний.

    Перед початком чергового етапу робіт з антиспамового фільтрації Яндекс провів дослідження. Був проведений ручної аналіз достатньо репрезентативної вибірки з 5151 листів, що прийшли на 300 адрес. Так от, ситуації, коли перевіряючий стороння людина, використовуючи для прийняття рішення всю міць свого природного інтелекту, відніс листа до такої «проміжній зоні» становили до 40 відсотків! При цьому правило для такого віднесення було досить обережним:

    … «Полуспамовое» лист – це лист від відомого перевіряючому реально працюючого магазина або онлайн-сервісу, в якому користувач швидше за все реєструвався. …

    Який з цього можна зробити висновок? Навіть з урахуванням статистичних зсувів, характерних для публічної веб-пошти, можна спробувати передбачити максимальний теоретичний межа якості неперсоніфікована спамової фільтрації. Адже завдання неперсоніфікована програми – моделювати поведінку максимально об’єктивного незнайомого спостерігача, яка не знає ні про ваші уподобання, ні про ваші підписки!

    Другий висновок такий. Намагайтеся не вірити заявам творців неперсоналізованих антиспамових продуктів, які запевняють, що якість їх фільтрації 95 або 98 відсотків. У неперсоніфікована антиспам-системі, якій відомі переваги тільки усередненого користувача, цей показник мабуть теоретично недосяжний.

    Зворотний зв’язок

    У будь-якому випадку ключове питання будь-якої повноцінної антиспам-системи полягає в рішенні, звідки брати інформацію про помилки першого і другого роду. Очевидно, що скарга на спам або прохання про блокування адреси – це зворотній зв’язок з помилок першого роду. Можлива і вкрай бажана зворотний зв’язок і помилок другого роду.

    Реалізація зворотного зв’язку

    В інтерфейсі більшості сучасних публічних веб-пошти (Hotmail, Yandex, Yahoo, Oddpost) є спеціальна папка, що служить для накопичення «полуспама» і не очень достовірно визначається спаму, а також кнопка для «реабілітації», повідомляє систему про помилковий спрацьовуванні.

    У настільних поштових клієнтах, створених в останній час, теж обов’язково присутній зворотний зв’язок як першого, так і другого роду. Зазвичай у вигляді кнопки «це спам» / «не спам».

    На жаль, кілька популярних клієнтських поштових програм все ще не підтримують повноцінний зворотний зв’язок. Наприклад, всі поштові програми Мікрософт, чий інтерфейс і набір можливостей не змінювався останні 5 років, (втім для них написані численні плагіни, здатні, нехай і незручним способом, але заповнити цей недолік), або деякі публічні поштові служби, в яких не реалізована зворотний зв’язок з користувачем.

    Технічні прийоми на рівні протоколу

    Осібно від методів, які аналізують дані прийшов листи, стоять деякі досить популярні останнім часом прийоми, які визначають особливий спосіб взаємодії поштових програм.

  • Незнайомим особам надсилається лист типу «Вибачте, ми з Вами не листувалися, підтвердіть будь ласка що Ви не спамер». По приходу підтвердження програма додає адресу відправника в білий список. Є і відомі реалізації цієї досить старої ідеї: TMDA і WinAntiSPAM.
  • Досить свіжа ідея – graylisting («сірі» списки). Суть її полягає в тому, що на деякі листи сервер не відповідає «OK» або «rejected», як зазвичай, а «тимчасова помилка». Це саме по собі працює (поки) дуже добре, тому що «хороші» поштові сервера через деякий час повторюють спробу доставити лист (вони зобов’язані це робити), а рассыльщики спаму (поки) цього не роблять. Причому можна сподіватися, що якщо спамери будуть намагатися повторювати спроби доставки, як нормальні сервера, то за цей час вони встигнуть потрапити в чорні списки. Час повторного з’єднання зазвичай півгодини, і це, загалом, некритично, тим більше що воно відноситься тільки до першої кореспонденції між двома незнайомими сторонами, так як раніше перевірені адреси не перевіряються, а запити на перевірку кешуються і знову не надсилаються.
  • Перевірка коректності адреси відправника (envelope-from). Перевірку існування домену в більшість серверів вставили дуже давно, і до цих пір вона зрідка спрацьовує, хоча ефективність її нині невелика. Зараз багато стали вставляти перевірку адреси цілком. Хоча це досить накладно ресурсів – для цього треба зв’язуватися з сервером, на якому розташований адресу, і осмислений відповідь при цьому не гарантований, однак, принаймні поки що, це непогано працює.
  • Алгоритми

    Як видно з наведеної таблиці, потоки даних сильно відрізняються для різних типи ознак. Розглянемо їх окремо

    Перевірка IP. DNS-зона. Ім’я чорного списку як інтегральний ознака

    Проста в реалізації, і безумовно саме тому найпопулярніша – фільтрація по простору IP-адрес. Для кожного листа перевірити треба 1 (рідко більше) IP адреса, робиться це за допомогою спеціальної DNS-зони для кожного з чорних списків. Пошук в DNS, по суті – проста хеш-функція. Частина з списків дозволено завантажувати, і для ефективності такі зони розумно створити на локальному DNS-сервері.

    Що ще характерно для даного простору ознак? По-перше, відмінно відпрацьована зворотний зв’язок.

    По-друге, це саме нестабільне і текучий простір ознак, для якого характерно постійне зникнення і додавання адрес. Отже, вважати індивідуальний ваговий коефіцієнт для кожного IP досить дорого і не дуже ефективно: даних занадто мало, а адреси весь час змінюються.

    Звідси і найпростіший спосіб пониження розмірності цього простору – замінити індивідуальний IP-адресу на список, у якому він виявлений. Принципи формування, надійність і придатність списків у першому наближенні можна вважати униформным для всіх «його» IP-адрес.

    Низька вартість обчислень, простота і налагодженість процедури обміну даними та їх невеликий обсяг, однозначність (IP практично неможливо підробити). Всі ці фактори відіграють вирішальну роль у домінуванні даної ознаки в антиспамовий.

    Байєсова фільтрація за словами

    Дуже простим, інтуїтивно зрозумілим методом «машинного навчання з учителем» (тобто при наявності Spam&Ham вибірки) є наївна байєсова класифікація. «Наївної» вона називається, тому що виходить з припущення про взаємної незалежності ознак, і як не дивно, цього часто виявляється цілком достатньо. Використання формули Байєса для фільтрації спаму запропоновано зовсім недавно, приблизно рік тому.

    Автор, Paul Graham, призначав його для персональної фільтрації. Для роботи потрібно, щоб у классифицируемого об’єкта було достатньо ознак. Цій вимозі ідеально задовольняють всі слова (або токени) листів даного користувача, виключаючи хіба що дуже рідко зустрічаються і зовсім короткі. Другою вимогою є постійне перенавчання та поповнення колекції Spam+Ham. Всі такі умови ідеально працюють в локальних поштових клієнтах, які підтримують цей алгоритм.

    На жаль, використовувати метод Байєса прямо, безпосередньо в умовах масової поштової служби важко, в основному через великого розмаїття словникового складу клієнтських ящиків. Так, із-за того, що в навчальній вибірці напевно буде дуже багато туристичного спаму, всі листи, наприклад, турагентства можуть бути віднесені до спаму. Не зможуть допомогти і інші методи класифікації текстів за словами, більш традиційні для науки інформаційного пошуку (наприклад, метод Роккио або метод опорних векторів). Проте якось використовувати ймовірність віднесення листи до середньостатистичному спаму (чи іншу міру текстуальної схожості), отриману аналізом словникового складу, мабуть, можна і в масових сервісах.

    Генетичні алгоритми і ручне виставлення ваг

    В результаті великих зусиль багатьох людей було виявлено величезну кількість різних евристик, пов’язаних з особливостями заголовків спамерських листів, їх оформлення, характерних стилістичних зворотів, типових фраз. Сумарна кількість подібних ознак у відомого фільтр SpamAssassin, наприклад, наближається до тисячі. На жаль, незважаючи на те, що практично кожне спамовое лист містить хоча б кілька таких ознак, над простором таких ознак неможливо побудувати стійкий Байєсовський автомат. Причин тут дві:

  • занадто мало число ознак, типово зустрічаються в одному листі
  • відсутній балансування, тобто немає достатньої кількості ознак не-спаму.
  • В цих умовах застосовують інші алгоритми. Наприклад, SpamAssassin застосовує генетичний алгоритм. У ньому підбір починають з випадковою простановки ваг для кожної ознаки (створення «хромосом»), а потім «схрещують» і «мутують» хромосоми в пошуках оптимальних значень ваг для даної тестової вибірки. Оптимум (в теорії) може виявитися не глобальних, а локальним, але цього більш ніж достатньо.

    Часто практикується й ручне виставлення ваг для кожної ознаки, адже кількість їх проглядається, і досвідчені адміністратори в змозі контролювати і постійно коригувати спам-фільтрацію пошти для своєї компанії.

    Виявлення повторів і ознака масовості

    Якщо антиспамовая система має справу з великим потоком листів, вона може і повинна намагатися знаходити повтори листів. По-перше, так можна виловлювати листи, вже відомі (помічені раніше) як спам. По-друге, масовість листи сама по собі є невід’ємною ознакою спаму. З твердження, що лист є спам, неминуче випливає, що воно масове. Таким чином, ознака масовості є необхідна, хоча і недостатня умова спаму.

    Строго кажучи, поодинокі небажані листи теж можна вважати спамом, але боротися з ними має сенс поодинокими ж методами, тому для даної статті можна сміливо прийняти таке припущення.

    Цікавою темою є практична реалізація виявлення масової кореспонденції. Спроби налагодити розподілені системи обміну контрольними сумами листів, що вживаються в рамках таких проектів, як DCC (кілька контрольних сум по тексту і заголовків листа) або Бритва Вайпула (одна «нечіткий» контрольна сума) зараз впираються в загальні обмеження P2P-технологій по продуктивності. Справа в тому, що для того, щоб забезпечити статистику повторів в реальному часі, учасники системи змушені підтримувати режим постійного обміну цією інформацією. У момент спамової атаки швидкість реакції таких систем стає неприйнятно низькою. Мабуть, про ефективне застосування системи детектування повторів можна поки говорити тільки в системах з дуже великим потоком листів, у великих провайдерів або на публічних поштових серверах, наприклад, веб-пошти.

    Різним методам виявлення повторів буде присвячена остання частина цього повідомлення. Поки можна лише зауважити, що ознака масовості служить непоганим фактором і сам по собі, і в різних інтегруючих системах.

    Інтегруючі системи

    Жоден окремо взятий набір ознак не в змозі забезпечити максимальну якість фільтрації. Очевидно, перевага тут виявиться у систем, інтегруючих рішення по всіх просторах ознак.

    Піонером тут є SpamAssassin, який дозволяє застосувати як генетичний алгоритм, так і ручне зважування поверх не тільки власного або «налаштованого» набору прапорів, але і з урахуванням байєсівського текстового подібності, і з урахуванням взаємодії з DCC-модулем детектування розсилок.

    Окремим питанням є те, який алгоритм повинен працювати в точці остаточного прийняття рішення.

    Точки застосування фільтра

    Крім відмінності у вихідних даних, алгоритмах і види зворотного зв’язку, антиспамові кошти треба розрізняти за місцем їх застосування. Таких місць можна виділити два: поштовий сервер та клієнтський комп’ютер.

    Фільтрація на сервері: царство IP-методу

    Сервер характеризує великим потік листів, на ньому можна забезпечити гарантовану продуктивність, на ньому є постійний зв’язок з іншими серверами. При перевищенні потоком листів деякого рівня можна почати детектувати розсилки. На серверах, мабуть, не застосовується в чистому вигляді байєсовський алгоритм по тексту листа (див вище).

    Однак найбільш стандартним, легко реалізованим і щодо ефективним методом є фільтрація по IP, та з урахуванням цих обставин цей метод зараз домінує. Можна очікувати появу засобів фільтрації і за іншими ознаками.

    Перешкодою впровадженню методів, заснованих на аналізі листи служить дилема діагностування і зворотного зв’язку. Припустимо, що на сервері не підтримуються користувальницькі папки для накопичення спаму. У цьому випадку сервер зобов’язаний видавати діагностику (550) на всі без винятку відфільтровані повідомлення по мірі їх отримання, що накладає системи аналізу жорсткі вимоги по продуктивності.

    Фільтрація на клієнті: царство Байєса

    У клієнта зовсім інша картина. Тут малий потік даних, невідома продуктивність комп’ютера, відсутність постійного зв’язку з Інтернетом – то є неможливо або надто дорого постійно «закачувати» масиви контрольних суми листів або IP чорних дір. Зате дуже точно можна відрізнити чужі листи, вони завжди не схожі на ваші просто за текстом; «смаки» одного користувача з’ясувати легко. З усіх цих причин клієнтські антиспамові програми являють собою царство Байєса.

    Частина 3. Обережно, маркетинг

    Як ми вже говорили, при описі та класифікації засобів боротьби зі спамом слід виходити з відмінностей у використовуваних даних, алгоритми і способи зворотного зв’язку. Проте часто можна зустріти некоректні опису антиспамових засобів, їх можливостей і спектру застосування, викликані маркетинговими причинами.

    08.12.2016

    Написати коментар