КДПВ:
Как мы знаем, для того, чтобы письмо могло действительно навредить компьютерным системам, просто доставки письма получателю в большинстве случаев недостаточно. Требуется «оппонент, склонный к кооперации», т.е. пользователь должен самостоятельно совершить действия, которые приведут к исполнению замысла злоумышленника.
Обычно таким действием является «открытие» файла-вложения к письму, то есть ручной запуск обработки файла соответствующей программой-обработчиком внутри операционной системы пользователя.
Что ещё более печально, оппонент-помощник – совсем нередкая птица, и наш спамер-злоумышленник вполне может на него рассчитывать.
Короче говоря, открывает наша бухгалтерша счёт, а там совсем даже не счёт, а вирус.
Злонамеренные письма, конечно, имеют важные отличия. Но надеяться на внимательность и сознательность пользователей – плохая затея. Даже разудалые концерты на тему «не открывайте такое» с салютом и сольным вокальным выступлением гендира (композиция «Полимеры») со временем стираются из памяти офисного работника.
Конечно, грамотно настроенные системы предохранят нас от большинства подобных атак. Но ключевое слово всё же – «от большинства». Стопроцентной гарантии не даст никто; а уж если доходит до пользователя, то усилить его, как одно из самых слабых мест систем, – благое дело.
В деле компьютерного злодейства технологии и социальная инженерия идут рука об руку. Злоумышленник догадывается, что сложно притвориться тем, кому пользователь доверяет безоговорочно, и поэтому вынужден использовать и другие тактики: запугивания, принуждения, имитировать признанные авторитеты и/или использовать соответствующие ложные названия – например, слать письма от лица государственных органов и крупных компаний.
И, как нас учат древние: если не можем победить, надо возглавить. Действительно, чем мы хуже спамеров? Да мы гораздо лучше! Да и возможностей у нас больше. А сама задача потребует самых минимальных навыков программирования и практически не затронет существующие системы.
Disclaimer: автор – не спамер, спамер – не автор. Автор только и исключительно на стороне добра.Задача очень простая:
мы будем сами слать нашим пользователям письма, похожие на злонамеренные. Во вложениях к этим письмам мы прикрепим документы, где крупными буквами напишем «НЕ НАДО ОТКРЫВАТЬ ДОКУМЕНТЫ ИЗ ТАКИХ ПИСЕМ. Будьте внимательнее и осторожнее».
Таким образом, к нашей задаче есть следующие условия:
Условие 1. Письма должны быть разными. Если мы будем рассылать всем и каждый раз одно и то же письмо, то это ничем не будет отличаться от обычных напоминаний на собраниях, к которым у пользователей стойкий иммунитет. Мы должны простимулировать у пользователя систему, отвечающую за обучение. Из этого вытекают следующие условия:
Условие 2. Письма должны быть похожи на настоящие. Слать письма от ТОО «Мясо-компани» или Барака Обамы можно, но неэффективно. Имеет смысл использовать реально существующие (и разные!) названия организаций и органов;
Условие 3. Также важно, чтобы письма выглядели немного странно. Они должны быть несколько сомнительными, чтобы возбудить подозрения и пользователя и активировать в мозгу систему обучения;
Условие 4. И при всём этом письма должны привлекать внимание и провоцировать. Ну, тут всё просто, нам даже не нужно ничего придумывать: спамеры уже всё сделали за нас. «Штрафы», «Судебные решения» и даже просто «Документы» во вложениях, «Неустойки», «Перерасчёты», «Пени» в теме и множество слов «Срочно», «Немедленно», «Обязаны», «Оплатите» в тексте – и дело в шляпе.
Для реализации этого волшебного набора понадобятся минимальные навыки программирования и скучный вечер. Автор использовал Python 3 (потому что надо было попрактиковаться) и JS (для сбора данных, прямо из консоли браузера). Но большая часть кода легко реализуема на нативных инструментах ОС (bash, cmd), только с кодировками намучаетесь.
Справедливости ради надо отметить, что сама идея автору не принадлежит, а подсмотрена у одной крупной международной компании. Тем не менее, идея настолько на поверхности, что, едва услышав, автор с криками «чо ж я раньше-то не» бросился реализовывать.
Итак, в первую очередь нам нужны части, из которого мы составим письмо. Начнём с поля From – кто будет грозить нашим пугливым пользователям. Ну, кто: конечно же, банки, налоговые инспекции, суды и всякие странные ООО. Заодно можно добавить шаблоны для будущей автоподстановки, наподобие ПАО
CmpNmF
. См. from.txtТеперь нам нужны, собственно, имена. ООО Ромашка и Вектор, а также бесконечно повторяющийся какой-нибудь «Московский суд» вряд ли вызовут отклик в душах.
К счастью, интернет даёт нам просто потрясающие возможности к получению информации. Например, список действующих судов РФ можно получить простой командой на JavaScript прямо в консоли браузера код наподобие:
for (let el of document.getElementById("mw-content-text").querySelectorAll("li")) {console.log(el.innerText;)}
Так можно быстро очень быстро набрать прекрасную базу для наших задач (тем более что автор уже сделал это за вас :) ). Сохранять будем в Plain text, БД для такой задачи – оверкилл. В проекте используется кодировка UTF-8 с BOM, на случай использования самых специфических символов. См. в файлах txt c соответствующими названиями.
Дальше нужно сгенерировать корректный (с т.з. стандарта, но не обязательно существующий) email адрес отправителя, чтобы наше письмо корректно отображалось и корректно пересылалось. Для части наименований автор использовал фиксированные домены, для части – автогенерацию из названия с использованием библиотеки транслитерации, что-то вроде ООО «Вектор» -> warning@ooovektor.ru. Имя ящика берётся из списка в коде и также призвано внушать трепет: «vzyskanie», «shtraf», «dolg», 'alarm' и прочий «zapros».
Теперь – тема письма.
Тема должна обязательно привлечь внимание, иначе письмо пройдёт незамеченным. Дайте волю своему внутреннему пугателю бухгалтеров, и всё получится: «Закрытие счета(ов) (
CmpNm
)», «Главному бухгалтеру (CmpNm
)», «Требование (для CmpNm
)» «Немедленно оплатите (!!!)» и прочие шалости. См. subj.txt. Добавьте по вкусу, смешать, не взбалтывать.
Текст письма должен быть несколько странным. Мы уже привлекли внимание пользователя, теперь наша задача – вызвать подозрения. Поэтому стараться в этом пункте совершенно ни к чему. Возьмём у спамеров угрожающих фраз и будем их произвольно комбинировать, стопроцентная достоверность нам только помешает. Будет получаться чушь вроде:
(важная) Информация (ООО "ТЕСТ") По счёту в порядке судебного разбирательства
откройте документы во вложении
постановление во вложении
См. msg.txt. Дополнения приветствуются.
И, наконец, вложение. В проекте на данный момент предусмотрено 3 типа вложений: pdf, doc, docx. Файлы копируются с образцов без изменения содержания, файлу вложения присваивается имя из списка («Постановление», «Судебное решение» и пр, см. flnms.txt). Для первых двух типов размер генерируется случайно, путём добавления нулей в конец файла. С docx такое не прокатывает (хотя после процедуры восстановления Word файл открывается; а LibreOffice, например, без ругани открывает файлы docx, в которые добавлены сторонние файлы через интерфейс архиваторов).
И мы получим такое вот чудо:
Можно отправлять:
gen_msg.py buh@oootest.ru
Код, конечно же, на гитхабе
Собственно, вот и всё. Дел на час, а пользы… А польза будет. Ибо теория суха, но древо жизни пышно зеленеет – объяснения не доходят, напоминания забываются, а люди осваивают навыки лишь на практике. И лучше учителями побудем мы, чем потом всё из бэкапов восстанавливать, так?
Tuker
Интересный подход. Клин клином, как говориться:)
LevOrdabesov Автор
Думается, такой подход эффективнее, чем напоминания на собраниях. К тому же, в отличие от собраний, он не требует всех организовывать и сгонять в совещательные комнаты, зато предполагает непосредственное участие каждого пользователя.