Серед безлічі хитромудрих трюків, застосовуваних спам-
рамі (і хакерами), NDR-атаки мають особливе місце, пос-
кольку вони засновані на фундаментальних специфікаціях,
описують роботу протоколу SMTP (Simple Mail Transfer
Protocol-Простий протокол для доставки пошти). Нехай слово «простий»
не вводить тебе в оману. SMTP основний протокол, прямих
конкурентів у якого немає і, мабуть, вже не буде (IMAP4 не можна
брати в розрахунок, що це все-таки екзотика, а SMTP «робоча конячка»).
RFC, SMTP, NDR
Свою назву NDR-атаки отримали по перших буквах вираження
Non-Delivery Report (звіт про недоставку пошти). Всякий раз, коли SMTP-
сервер не може доставити лист (скажімо, через відсутність
зазначеної адреси), він повертає повідомлення про помилку з кодом 5xx,
яке може виглядати, наприклад, так: «550 5.7.1 Unable to relay for
[email protected], після чого розриває TCP/IP-з’єднання. Однак
сервер може і прийняти повідомлення, відкласти його в чергу, сповіщаючи
відправника позитивним кодом завершення операції (250).
Коли ж у процесі обробки листа з’ясується, що доставляти його
нікому, сервер, як порядний громадянин, поверне лист адресату
з поясненням причин неможливості доставки (тут доречно
провести аналогію з «улиточной» поштою). Ось це саме повідомлення
і називається Non-Delivery Report, або скорочено NDR. Теоретично
формат звіту специфицирован в RFC-3464 (An Extensible Message
Format for Delivery Status Notifications Відкритий формат повідомлень,
повідомляють про статус доставки), проте в реальному житті він варьи-
нання в досить широких межах. Одні сервери поміщають вихідну
копію листа до вкладення, а сам звіт (складений, як правило, на
англійською мовою) кладуть в основне тіло повідомлення. Інші ж метою
економії трафіку відправляють лише звіт, додаючи до нього короткий
фрагмент вихідного листа, що включає як мінімум заголовок і не-
скільки перших рядків (щоб відправник міг розібратися, який саме
лист «постраждало»).
Загалом, попередження про недоставку стандартна і зовні цілком
невинна фіча, реалізована ще в незапам’ятні часи. Каза-
лось б, ну чим вона може бути корисна хакерам? Однак з нею пов’язано
цілих дві атаки: використання SMTP-сервера в якості proxy (bounce
message або backscatter-attack) і пошук валідних адрес (trial-n-error
attack).
Backscatter-attack
Термін backscatter перекочував в хакерську середу з фізики, де він
означає відхилення хвиль від початкової траєкторії по тим або іншим причинам. Стосовно до SMTP-серверів backscatter
«символізує» процес відскоку або відбивання відісланого повідомлення.
Така атака також часто називається bounce message attack.
Один з найбільших дефектів SMTP-протоколу полягає у відсутності
штатних механізмів перевірки автентичності зворотної адреси отпра-
вителя повідомлення. Сервер цілком покладається на адресу, залишений
відправником у полі «MAIL FROM:», не роблячи ніяких спроб його про-
вірки, а тому зловмисник може запросто підставити будь-яку адресу,
якою йому заманеться, і саме туди сервер поверне повідомлення при не-
можливості його доставки кінцевому одержувачу. Що робить злоумыш-
ленник? Він бере адресу жертви, прописує його в поле «MAIL FROM:», а
у полі «RCPT TO:» підставляє координати завідомо неіснуючої
одержувача. Якщо сервер не є ретранслятором (також званих
релеем від англійського relay), тобто береться за доставку кореспондента-
ції лише своїм локальним адресатам, то він з імовірністю, близькою до
одиниці, відіб’є повідомлення ще на стадії заповнення поля «RCPT TO:»
і атака не відбудеться. Втім, деякі сервери, зокрема MicrosoftExchange Server, мають досить погану систему пошуку імен і часто
приймають повідомлення до перевірки користувача на існування.
Що ж стосується ретрансляторів (до яких де-факто належать всі
публічні сервери, такі, наприклад, як mail.ru), то вони взагалі не в со-
стоянні визначити існування перехресних локальних користувачів і тому
приймають всі листи без розбору. Лише потім, у разі неможливості
доставки, вони надсилають відправнику (або, точніше кажучи, тій особі, чий
адреса вказана в полі «MAIL FROM:») відповідне повідомлення.
Ну і як це можна використовувати для атаки? І тим більше для спаму? Ведьрассылка повідомлень множинним адресами заборонена, і тому
атакуючому для відправки N листів розміром K мегабайт доведеться
витратити N*K мегабайт свого трафіку. А це рівно стільки, скільки
витрачається при так званій директивної розсилці, коли атакую-
щий взагалі не вдається до послуг проміжних SMTP-серверів, а
зв’язується з кожним одержувачем безпосередньо і кладе в його поштову
ящик конверт зі спамом (або з вірусом неважливо). Тому-то хакери і
прагнуть використовувати відкриті ретранслятори, які допускають завдання
у полі «RCPT TO:» безлічі адресатів. В ідеалі (якщо кількість
адрес необмежена) атакуючий витрачає лише K мегабайт власного
трафіку, інші ж поштовий сервер оплачує зі своєї кишені.
Однак з кожним днем знаходити відкриті ретранслятори стає все
важче і важче. Практично всі поштові сервери встановлюють
жорсткі ліміти на максимальну кількість повідомлень, що передаються
в одиницю часу, або взагалі забороняють множинне розсилку,
або погоджуються доставляти лист обмеженого числа одержувачів
(як правило, не більше шести).
Стоп! А навіщо атакуючому потрібні відкриті ретранслятори, якщо широкі DSL-канали сьогодні не розкіш, а засіб пересування? До того ж
вихідний трафік зазвичай або зовсім безкоштовний, або тарифици-
нання за дуже пільговими цінами. Сьогодні кожен може дозволити
собі орендувати канал, про який вчора добра половина провайдерів
не могла і мріяти! Здається, що в сформованих умовах директивна
розсилка повинна стати основним знаряддям спамерів, але…
В тому-то і справа, що при практичній реалізації атаки відразу ж спливає-
кість безліч «але». Більшість корпоративних (так і публічних)
серверів просто не прийме листа невідомо від кого. Тому як
мінімум потрібно обзавестися доменним ім’ям третього рівня і
спорудити власний поштовий сервер (хоча б чисто формальний).
А для цього бажано мати статичний IP, хоча доменне ім’я
третього рівня можна безкоштовно зареєструвати та на динамічному.
В результаті деяких маніпуляцій ми домоглися того, що поштові
сервери починають приймати від нас кореспонденцію. Але варто тільки
почати розсилати спам, як вже через кілька годин атака погасне,
як бичок в пісуарі. Використовуючи розподілені чорні списки (вони
ж блек-листи), поштові сервери дуже швидко заблокують наш IP-
адресу (а то і всю підмережу). У разі статичної адреси це ще нічого
(моя оселедець, що хочу з нею, то і роблю), а ось блокування динамичес-
кого IP (або всієї підмережі) створює величезні проблеми для провайдера,
який тут же відключає хакера. Ось так зі всього маху і відключає. Пря-
мим ударом. В щелепу. Адже потрапити в чорні списки набагато простіше,
ніж вибратися звідти, так і процедура «реабілітації» зазвичай далеко
не безкоштовна. А кількість провайдерів (навіть у великому місті) хоч і
велике, але все-таки обмежена.
Коротше, директивна розсилка виправдовує себе тільки на ботнетах
пишемо хробака, заражаем кілька десятків тисяч машин і ре-
транслюємо листи їх руками. Але ж ботнет ще потрібно створити! До
того ж, на відміну від спаму (юридичний статус якого досі
не визначено), це вже є досить серйозним правопорушень
ням, особливо якщо число заражених сайтів потраплять комп’ютери
різних секретних відомств. У таких випадках пощади чекати, як
правило, не доводиться і вирок виявляється дуже суворий, а суди-
тість (нехай навіть умовна) це все-таки судимість, істотно
обмежує громадянина в правах.
І тут на допомогу спамерам приходять backscatter-атаки. Зловмисник,
використовуючи різні сервери SMTP, розсилає кореспонденцію,
підставляючи адресу одержувача в полі «MAIL FROM:» і вказуючи завідомо
неіснуючої користувача у полі «RCPT TO:». Незважаючи на те що
справжній IP-адресу спамера залишається в заголовку листа (помещаемо-
го сервером під вкладення в основне тіло повідомлення), існую-
такі фільтри не настільки інтелектуальні, щоб дістати його звідти,
і тому заносять в чорний список IP сервера, який розсилає
повідомлення про неможливість доставки повідомлень. Оскільки таких
серверів дуже багато (цим умовам відповідає практично будь-SMTP-сервер, навіть не є ретранслятором), вони не закінчаться
ніколи, і на недолік у них спамер навряд чи зможемо поскаржитися.
А от для власників самих атакованих серверів настануть похмурі
деньки, і їм доведеться зробити некволі рухи, доводячи,
що ніякого спаму вони не розсилали!
Як захиститися від подібних атак? Немає нічого простіше! Достатньо
як слід попорпатися в налаштуваннях сервера. Насамперед, слід
включати у звіт про недоставку тільки фрагмент вихідного повідо-
ня (заголовок плюс пара-трійка рядків), що зробить його зовсім
марним для спамерів, і вони втратять до нього всякий інтерес. Якщо
це неможливо (наприклад, сервер не підтримує таких налаштувань),
залучи режим уповільнення SMTP-відповідей, встановивши затримку в
кілька секунд для неавторизованих користувачів. Звичайно, це
злегка сповільнить продуктивність сервера, але… що поробиш!
Між «скорострільністю» і безпекою доводиться вибирати
щось одне.
Trial-n-error attack
Спамери зацікавлені у відправці повідомлень тільки на дійству-
мітингувальники адреси, і попередження про недоставку тут припадають не можна
до речі. Зокрема, помилка типу «mailbox is full» говорить, що одержуєш ли ше-
тель, швидше за все, забив на цей ящик і вже давно його не використовує,
а тому він заповнений до краю. Але це дрібниці. Головна проблема
спамерів збір адрес. Для їх пошуку розробляються хитромудрі
програми-харвестеры (від англійського harvester «збирач»),
блукаючи по просторах Мережі і аналізують web-сторінки, а
також проникають на вразливі вузли і скануючі адресну книгу.
Однак користувачі не дурні. Свою основну мильницю на форумах
вже давно ніхто не залишає, а безкоштовні ящики, створені на
короткий час на серверах типу mail.ru, спамерам не дуже цікаві,
та й фільтри там стоять досить потужні.
Найбільший прибуток приносить розсилка по корпоративним адресами. Ось
тільки як ці адреси знайти? А чому б не скористатися
перебором за словником? А що! Користувачі схильні вибирати короткі
і легко запам’ятовуються адреси, як правило, складаються з імені (з
доданим до нього роком, коли таке ім’я вже кимось зайнято), попу-
лярний слів типу mafia, hacker, supermen або ініціалів у стилі kk, що
розшифровується як Kris Kaspersky. Колись у мене був такий адресу
на sendmail’е. Спаму туди сипалося величезна кількість. Трохи менше
діставалося n2k, зареєстрованому на тому ж сервері. Четырехсим-
вільний аліас kpnc відчував себе досить упевнено спаму туди
приходило відносно небагато, але все-таки значно більше,
ніж на kris.kaspersky. Звідси висновок: будь-які короткі імена (неваж-
але, словникові вони чи ні) легко знаходяться тривіальним підбором.
Атакуючий просто відправляє велику кількість листів, перебираючи
різні буквено-цифрові комбінації, і ловить NDR-повідомлення від поштового сервера. Неіснуючі адреси відкидаються
одразу, а от на інші направляється стабільний потік
незапитаної кореспонденції. Для економії трафіку
тіло тестового листа зазвичай містить мінімум символів
і часто просто складається з декількох байт.
Дослідження, проведене автором цієї статті, показало,
що одне-, двох – і трехсимвольные комбінації представ-
олени на популярних поштових серверах досить повно
і покривають близько двох десятків тисяч діючих
адрес. Причому, на відміну від адрес, почерпнутих з спа-
мерських баз (які ще треба платити), короткі імена
набагато повільніше застарівають, оскільки їх власникам
шкода з ними розлучатися. Навіть якщо вони виберуть іншого
коротке ім’я ну і що з того? Воно також буде знайдено
методом перебору.
Четырехсимвольные імена перебирати важче, оскіль-
ку з двох мільйонів комбінацій реально використовується
жалюгідна сотня тисяч або навіть і того менше. До того ж від-
правка двох мільйонів листів процедура нетривіальна,
привертає до себе увагу. Розсилка почне давитися
фільтрами задовго до того, як спамер встигне потиснути плоди
своїх праць. Пятисимвольные імена лобовим перебором
вже не знаходяться в принципі, точніше, знаходяться, звичайно,
але… сенс? Надіслати сто мільйонів листів, щоб зібрати
ту ж сотню тисяч адрес?
Інше потужне зброя перебір за словником. До речі го-
кажучи, прийнята система роздачі адрес в корпораціях (за
імені та/або прізвища співробітників) цього тільки способс-
потребу, оскільки, по-перше, існують словники імен і фа-
милий. По-друге, навіть якщо якась конкретна прізвище
у такому словнику відсутня (наприклад, Вуглускреб), то вона
все одно містить передбачувані коріння і підпорядковується
правил чергування голосних і приголосних, що істотно
зуються обмежує перебір.
Короткий лінгвістичний лікнеп. Більшість росіян (і
японських імен містить однакову кількість попе-
часно чергування голосних і приголосних (Таня, Маня,
Мазепа, Іванов, Сидоров). Імена, які включають в себе
декілька поспіль йдуть голосних, також широко розповсю-
странены, але поєднань поспіль йдуть приголосних дуже
і дуже небагато, причому в різних мовах вони різні.
Ми з працею выговариваем поєднання th, в той час як
американці приходять в жах від слова «защищающиеся»
(спробуй записати його латиницею, і нехай тебе охопить
гордість за нашу мову :)).
Природно, все, що відомо лінгвістам, відомо і
хакерам (тим більше, що про це можна прочитати в будь-якому лін-
гвистическом підручнику, там же дані та таблиці поширеності різних поєднань звуків і букв). Враховуючи,
що голосних в латинському алфавіті тільки шість, неважко
підрахувати, скільки набереться «осмислених» імен,
згенерованих з урахуванням лінгвістичних особливості-
тей (найпростіші генератори, які легко знайти в Мережі,
виходять з припущення, що голосних і приголосних має
бути порівну). Більш складні програми, що використовують
заморочені психофізичні моделі, як правило,
поширюються за гроші, однак і ті, і інші дають
вражаючий результат і ефективно знаходять навіть девя-
тисимвольные імена, звісно, без урахування словника.
Як варіант можна використовувати словник і програму-
модифікатор, переставляющую букви місцями, записыва-
ющую «O» як нуль, «l» як одиницю, яка набирає росіяни
імена латинськими літерами з урахуванням їх розташування на
клавіатурі: Марина Vfhbyf і т. д.
Коротше кажучи, навіть якщо ніде не світити своє мило,
настирливі спамери його все одно знайдуть (виняток
складають довгі понад п’яти-шести символів
імена, що складаються з одних приголосних букв, цифр і спец-
символів). Чи можна захиститися від подібних атак? На
рівні поштового сервера можна. Досить генериро-
вать повідомлення про недоставку у відповідь на всі подозритель-
ві повідомлення і навіть на всі повідомлення з невідомим
адресатом (тобто таким адресатом, якому одержувач
повідомлення раніше не відправляв ніякої кореспондента-
ції). Практика показує, що чесні користувачі
відразу або через деякий час) повторюють спробу
відправлення знову, в той час як спамери тут же заносять
такий адресу неіснуючих. До речі кажучи,
оскільки спамери аналізують повідомлення про недостав-
ке не вручну, а за допомогою програм, выдирающих з тіла
листи код помилки, то має сенс додати в уведомле-
ня російський текст, що пропонує користувачеві відправити
повідомлення ще раз, щоб той даремно не нервував, вважаючи,
що помилився адресою.