Вы когда-нибудь задумывались о том, как работают приглашения на встречи в MicrosoftTeamsиGoogleMeet? Недавно я занимался вопросом социальной инженерии, и у меня в голове возникла случайная мысль: как на самом деле работают приглашения на встречи, можно ли как-то использовать их в мошеннических схемах?
Да, такая мысль уже обсуждалась ранее, и этот метод уже использовали. Но никто нигде не объяснял, как он работает. Мне не удалось найти ни одного блога, который технически описывает эту атаку. Поэтому я решил покопаться в ней сам, чтобы человеческим языком рассказать всем, кто интересуется пентестами и вопросами безопасности в целом.
Что я хотел сделать в этой атаке?
Отправить поддельное приглашение на встречу, создав ощущение срочности, чтобы жертва не пыталась разобраться в вопросе, а просто перешла по моей ссылке, запрашивающей учётные данные.
Создание встречи (в Outlook) обычно работает следующим образом:
-
нажмите кнопку Новая встреча, после чего откроется страница с полями для электронной почты, предварительно заполненным шаблоном команды и URL-адресом встречи
-
установите название встречи и укажите участников
-
нажмите Отправить, и ваши участники получат красивое электронное письмо, в котором они смогут принять или отклонить приглашение на собрание.


Что не так с этим приглашением?
Когда вы создаёте приглашение на встречу, вы фактически отправляете обычное электронное письмо с вложенным файлом iCalendar.В зависимости от почтового клиента получателя письма и того, как этот клиент обрабатывает iCalendar, вы можете увидеть красивый email или простое письмо с вложением.Ниже вы можете увидеть, как выглядит приглашение на собрание команды в protonmail.

Что такое объект iCalendar?
СогласноВикипедии:
Универсальный формат iCalendar позволяет пользователям хранить и обмениваться информацией своего календаря и расписания (например, события, задачи, информация о свободном/занятом времени).Файл iCalendar сохраняется в текстовом формате и содержит событие или задачу; используется для отправки событий или задач другим пользователям, которые могут импортировать их в свои календари. Обычно имеет расширение .ics
iCalendar поддерживается Outlook, календарём Google, Yahoo, Apple и многими другими.В этой статье я сосредоточусь на Outlook.
Ниже вы можете увидеть мою версию iCalendar для приглашения на групповую встречу.Я просто отправил приглашение на встречу на свой адрес в protonmail, загрузил его и прочитал вложение.
BEGIN:VCALENDARMETHOD:REQUESTPRODID:Microsoft Exchange Server 2010VERSION:2.0BEGIN:VTIMEZONETZID:GTB Standard TimeBEGIN:STANDARDDTSTART:16010101T040000TZOFFSETFROM:+0300TZOFFSETTO:+0200RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10END:STANDARDBEGIN:DAYLIGHTDTSTART:16010101T030000TZOFFSETFROM:+0200TZOFFSETTO:+0300RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3END:DAYLIGHTEND:VTIMEZONEBEGIN:VEVENTORGANIZER;CN=ExAndroid Developer:mailto:<redacted>@outlook.comATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=<redacted>@protonmail.com:mailto:<redacted>@protonmail.comDESCRIPTION;LANGUAGE=en-US:<stripped>\n\nUID:040000008200E00074C5B7101A82E00800000000508CC0468E28D701000000000000000 01000000096DF011F20A29943A70B5DA5047021A5SUMMARY;LANGUAGE=en-US:Test meetingDTSTART;TZID=GTB Standard Time:20210403T000000DTEND;TZID=GTB Standard Time:20210404T000000CLASS:PUBLICPRIORITY:5DTSTAMP:20210403T103619ZTRANSP:OPAQUESTATUS:CONFIRMEDSEQUENCE:0LOCATION;LANGUAGE=en-US:Microsoft Teams MeetingX-MICROSOFT-CDO-APPT-SEQUENCE:0X-MICROSOFT-CDO-OWNERAPPTID:-570210331X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVEX-MICROSOFT-CDO-INTENDEDSTATUS:BUSYX-MICROSOFT-CDO-ALLDAYEVENT:FALSEX-MICROSOFT-CDO-IMPORTANCE:1X-MICROSOFT-CDO-INSTTYPE:0X-MICROSOFT-SKYPETEAMSMEETINGURL:https://teams.microsoft.com/l/meetup-join/ 19%3ameeting_YmM1MjRmMTktYjA2N<stripped>cd8%22%7dX-MICROSOFT-SCHEDULINGSERVICEUPDATEURL:https://api.scheduler.teams.microsof t.com/teams/dc<stripped>DAyMmZj@thread.v2/0X-MICROSOFT-SKYPETEAMSPROPERTIES:{"cid":"19:meeting_YmM1MjRmMTktYjA2Ny00YWQ 4LWI1NWEtZmE1NGVlMDAyMmZj@thread.v2"\,"private":true\,"type":0\,"mid":0\," rid":0\,"uid":null}X-MICROSOFT-ONLINEMEETINGCONFLINK:conf:sip:<redacted>\;gruu\;opaque= app:conf:focus:id:teams:2:0!19:meeting_YmM1MjRmMTktYjA2Ny00YWQ4LWI1NWEtZmE 1NGVlMDAyMmZj-thread.v2!56474ffc245241c5ab4081a127cc1cd8!dcf23acb18fc41d28 6acf752f1ca658dX-MICROSOFT-DONOTFORWARDMEETING:FALSEX-MICROSOFT-DISALLOW-COUNTER:FALSEX-MICROSOFT-LOCATIONS:[ { "DisplayName" : "Microsoft Teams Meeting"\, "Loca tionAnnotation" : ""\, "LocationSource" : 0\, "Unresolved" : false\, "Loca tionUri" : "" } ]BEGIN:VALARMDESCRIPTION:REMINDERTRIGGER;RELATED=START:-PT15MACTION:DISPLAYEND:VALARMEND:VEVENTEND:VCALENDAR
Здесь нужно понимать, что каждый объект iCalendar начинается
сBEGIN: VCALENDAR
и заканчиваетсяEND: VCALENDAR.Часть
встречи находится междуBEGIN: VEVENT
иEND:
VEVENT
.Внутри вашего мероприятия вы указываете так
называемые компоненты.Обычно требуются не все компоненты, и в моем
POC вы можете найти урезанный файл *.ics с только необходимыми
компонентами.Большинство из них самоочевидны, но я отмечу самые
интересные из них.
ORGANIZER. Указывает имя и адрес электронной почты организатора встречи.Вы можете указать здесь любой email и имя, чтобы казалось, что приглашение на собрание исходит от этого человека.
ATTENDEE. Указывает участников встречи.Если вам нужно много участников, у вас будет несколько компонентов ATTENDEE.Имейте в виду, что участники не получат электронное письмо с приглашением на собрание, оно предназначено только для отображения.Вы можете легко имитировать присутствие 30 человек на собрании, если на самом деле отправляете электронное письмо одной жертве.
X-MICROSOFT-SKYPETEAMSMEETINGURL. Если вы укажете этот компонент, в напоминании о встрече будет отображаться кнопка Подключиться.К сожалению, при нажатии система попытается открыть указанный URL-адрес через приложение для рабочих столов, что приводит к ошибке.
DTSTART, DTSTAMP, DTEND. Указывают время встречи и её продолжительность.Я проделал хитрый трюк и установил время начала встречи на 5 минут раньше текущего времени, таким образом складывается ощущение, что вы опоздали на встречу на 5 минут.Когда жертва получает email, Outlook обрабатывает его как приглашение на встречу. Видит, что встреча началось 5 минут назад, и сразу же отображает напоминание на экране.Это помогает симулировать срочность.

Как вы думаете, сколько человек в разгар рабочего дня кликнули бы по ссылке, видя, что опаздывают на встречу?
В этой статье я показал, как Outlook обрабатывает приглашения на собрания.Это должно работать с любым провайдером/клиентом email-сообщений, который обрабатывает вложения *.ics. Вы можете проверить мой POC наgithubи отредактировать скрипт и шаблоны в соответствии со своими потребностями.
Что ещё интересного есть в блогеCloud4Y
Частые ошибки в настройках Nginx, из-за которых веб-сервер становится уязвимым
Пароль как крестраж: ещё один способ защитить свои учётные данные
Облачная кухня: готовим данные для мониторинга с помощью vCloud API и скороварки
Подготовка шаблона vApp тестовой среды VMware vCenter + ESXi
VMware предупредила о критических уязвимостях в удаленном исполнении кода в vCenter
Подписывайтесь на нашTelegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.