20.07.23 • 6 мин на чтение

Как ChatGPT помог нам создать симулятор фишинга

Мы давно делаем курсы цифровой грамотности для сотрудников крупных компаний. Сейчас работаем над симулятором отражения киберугроз — тренажёром, где люди учатся распознавать фишинг. Есть проблема — писем надо много и побыстрее. Если писать их вручную, получится долго, тем более ни у кого из нас (к счастью) нет околофишингового опыта. Поэтому мы поручили задачу ChatGPT. Что из этого получилось — расскажем в статье.

Что за симулятор

Механика тренажёра во многом похожа на знаменитую игру Papers, please, но с оттенком «Очень странных дел».

В результате неудачного эксперимента на исследовательской станции в городе N произошёл блэкаут. Электричество быстро восстановили, но интернет работает только в пределах локальной сети. Сохраняются аномалии: розовое свечение и левитация электроприборов, световые явления в небе, а ещё не работают некоторые онлайн-сервисы, в том числе спам-фильтры. Вот поэтому и случился всплеск фишинговых атак.

Главный герой назначен инспектором писем в градообразующей организации. Его задача — просматривать все имейлы, отсеивать фишинг и защищать сотрудников и компанию от мошенников.

Какая была задача

Для тренажёра нужно было создать несколько тысяч уникальных писем — якобы фишинговых и безопасных. Это дело как раз для ChatGPT, тем более что, мошенники уже тоже активно его используют.

Как мы перемудрили

Сначала мы решили придумать единую систему для генерации и «фишинговых», и безопасных писем.

Мы выделили 6 параметров письма и набор значений для каждого из них. Параметры «Целевое действие» и «Цель» определяли, какое письмо: «мошенническое» или безопасное. Сделать имейлы конкретными и разнообразными должны были дополнительные параметры: «Отправитель», «Получатель», «Дополнительные особенности».

Например, так могла бы выглядеть комбинация для генерации письма от мошенников:
Отправитель: Служба безопасности предприятия
Получатель: Сотрудник конкретного отдела
Цель: Саботаж производства
Целевое действие: Скачивание и распаковка вложения
Дополнительные особенности: Угрозы
Дальше мы присвоили каждому значению цифро-буквенный код, определили правила создания комбинаций, исключения и попросили ChatGPT составить 100 первых вариантов. Занесли их в таблицу и расшифровали.

В промте для генерации писем мы указали ChatGPT придумывать имена, названия и ссылки:
Сейчас мы будем создавать симулятор фишинговых атак для сотрудников компаний. Мы обучаем людей отличать фишинговые письма от безопасных. Для этого мы будем генерировать "фишинговые" и "безопасные" письма.

У письма несколько параметров:
Получатель (А)
Цель (Б)
Целевое действие (В)
Дополнительные особенности письма (Г)
Отправитель (Е)


Шаблон письма:

От кого: {имя:%%;адрес:%%}
Тема:{текст:%%}

Текст письма: {текст:%%, вид ссылка:%%;адрес ссылки:%%}

Подпись: {текст:%%}

Придумывай конкретные имена и названия компаний, придумывай, как могут выглядеть ссылки и куда вести/как могут называться вложения.

Теперь я буду давать тебе ТЗ со значением каждого из параметров, а ты генерировать письма.
Кажется, всё очень просто. Что могло пойти не так?

Погрузившись в тестирование системы, мы получили несколько десятков приемлемых писем. Но проявилось и несколько проблем:

1. Оказалось, что ChatGPT далеко не всегда следовал заданным правилам при построении комбинаций. В результате возникали странные сочетания:
Отправитель: Участковый
Получатель: Случайный человек
Цель: Приглашение на мероприятие
Целевое действие: Нарушение политики ИБ
Дополнительные особенности: Необычная просьба
2. При генерации текстов ChatGPT часто вдруг «забывал» промт: отказывался придумывать конкретные имена, названия и ссылки, игнорировал некоторые параметры. При этом упорно отказывался признавать и исправлять ошибки, чем выводил из себя даже самых сдержанных методистов.

3. Многие письма были слишком абстрактными, неинтересными, «пустыми». На просьбы написать что-то более конкретное и оригинальное нейросетка меняла местами два слова.

И как же мы добились своего

Мы продолжили экспериментировать (когда методист вернулся в себя). Постепенно мы пришли к тому, что промты должны быть как можно более краткими и конкретными. Мы решили так:

— отделим генерацию «фишинговых» писем от безопасных,
— сократим количество параметров,
— конкретизируем значения основных параметров,
— оставим нейросетке простор для интерпретации там, где вариабельность не имеет стратегического значения.

После долгих споров и экспериментов «выжили» всего три параметра:

1. «Чего хотят мошенники». Этот параметр описывает, какого действия «мошенники» ждут от жертвы. Например: «Заставить сотрудника выслать ответное письмо с учётными данным от корпоративного аккаунта».

2. «Манипуляция». Этот параметр определяет, в какой форме «мошенники» будут добиваться желаемого. Например: «Сообщение от службы безопасности компании о блокировке аккаунта на корпоративном портале, прислано с домена похожего на bigcompany.ru».

3. «Особенности письма». Этот параметр не стратегически важный, но он повышает вариативность. Примеры значений здесь описываем коротко: «Ироничный тон», «Пишет безграмотный человек».

Также мы придумали список «легитимных» организаций, под которые могут маскироваться мошенники. Это сделано для того, чтобы пользователь мог заметить ошибку в адресе отправителя. Например:
магазин: shopplus.ru
медицинская клиника: medlineclinic.ru
банк: bankconnect.ru
фитнес-клуб: fitzone.ru
Чтобы избежать ошибок при создании комбинаций, мы попросили ChatGPT написать код на Python и запустили его в среде разработки colab.

Мы также сократили промт для генерации:
" Мы создали симулятор фишинговых атак, который будет обучать сотрудников нашей компании распознавать фишинговые письма. Нам нужно сгенерировать пул самых разных примеров "фишинговых" писем. Я буду давать тебе задания, а ты создавать письма.

Шаблон письма:

"От кого: /придумай конкретное имя или название компании/ /придумай конкретный email отправителя/
Тема:

Текст письма:

Подпись:

Всегда придумывай конкретные имена, названия компаний и отделов, ситуации. Придумывай интересные, но правдоподобные сюжеты. Максимальная длина письма - 80 слов. Если есть фальшивая ссылка, придумай текст гиперссылки и реальный URL.

Я буду давать задания: действие, которое пользователь должен совершить и как мошенники этого хотят добиться. Понятно?"

"Вот задание:
/комбинация/"

Такой подход позволил нам, с одной стороны, держать ChatGPT в ежовых рукавицах — там, где это было нужно, а с другой — дать ему простор для творчества, не запутывая длинным списком условий.

И…всё получилось! В отличие от предыдущего подхода нам удалось за несколько минут сгенерировать несколько десятков интересных и забавных писем, как мы и хотели! А ещё мучительный процесс противостояния с искусственным интеллектом превратился в увлекательное времяпрепровождение.
Было
Уважаемый [Имя получателя],

Мы рады представить вам уникальную возможность, доступную только подписчикам нашей информационной рассылки. В рамках нашей специальной акции, мы предлагаем вам шанс получить эксклюзивную награду, которую вы непременно захотите использовать.

Чтобы воспользоваться этой эксклюзивной возможностью, мы просим вас осуществить небольшой денежный перевод по следующим реквизитам:

Банк: [Название банка]
Имя получателя: [Имя получателя]
Номер счета: [Номер счета]
Сумма перевода: [Сумма перевода]

Мы гарантируем, что ваш перевод будет использован исключительно для обеспечения вашего участия в нашей эксклюзивной программе. Ваше имя будет вписано в список наших привилегированных клиентов, и вы сможете наслаждаться особыми привилегиями, доступными только избранным.

Мы уверены, что после того, как вы присоединитесь к нашей эксклюзивной программе, вы будете в восторге от полученных преимуществ.

С уважением,
Компания [Название компании]

Стало
От кого: Безопасность BigCompany <security@bigkоmpany.ru>
Тема: Аккаунт заблокирован! Не мешайте нам!

Текст письма:
Сотрудник,

Твой аккаунт на корпоративном портале заблокирован. Ты нарушил правила и поставил под угрозу всю компанию.

Мы не желаем слышать какие-либо оправдания или возражения. Твое послушание и скорость реакции — единственное, что может тебе помочь.

Кликни на ссылку ниже и следуй инструкциям, если, конечно, тебе еще важно сохранить свою должность:

[Разблокировать аккаунт] (http://bigkоmpany.ru/verification)

Если у тебя возникли сложности, можешь обратиться к сотрудникам службы поддержки по адресу support@bigkоmpany.ru. Однако, не жди, что мы будем к тебе снисходительны.

С уважением,

Служба безопасности BigCompany

Подпись:
Михаил Соколов
Начальник службы безопасности
BigCompany

Наши выводы

С помощью ChatGPT можно быстро создать несколько тысяч уникальных текстов, которые отвечают заданным условиям. Но есть нюансы:

— Нужно писать лаконичные промты: ChatGPT может «запутаться» в длинных описаниях и многочисленных условиях.

— Нужно выделить самые важные аспекты текстов и прописать их максимально конкретно.

— В аспектах, которые отвечают за вариативность, лучше дать GPT волю. Задать направление, не расписывая подробно.

— Если есть несколько принципиально различающихся типов текстов (как у нас — безопасные и фишинговые письма, или — положительные и отрицательные отзывы, описания мебели и описания одежды и т.д.), следует разнести их генерацию в разные ветки.

Если вы решите использовать Quiz Lab для обучения сотрудников цифровым навыкам, хорошая новость — у нас уже есть «Кибер». Берите и пользуйтесь