В этой статье я объ­ясню, как пос­тро­ить инфраструк­туру для симуля­ции фишин­говой ата­ки в рам­ках тес­тирова­ния орга­низа­ции. Мы соз­дадим с нуля поч­товый сер­вер, уста­новим и нас­тро­им обратный прок­си Evilginx, а затем внед­рим его в фишин­говый фрей­мворк Gophish. В кон­це я покажу на прак­тике про­цесс про­веде­ния фишин­говой ата­ки с перех­ватом логина, пароля и сес­сион­ных cookie, c пос­леду­ющим обхо­дом двух­фактор­ной аутен­тифика­ции.

warning

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

 

Связка Evilginx и Gophish

Два фрей­мвор­ка, которые мы будем исполь­зовать для про­веде­ния фишин­говой кам­пании, называ­ются Evilginx и Gophish. Это два самос­тоятель­ных инс­тру­мен­та, которые выпол­няют раз­ные задачи.

Gophish — это прог­рамма с откры­тым кодом, соз­данная Джор­даном Рай­том. Gophish поз­воля­ет про­водить авто­мати­зиро­ван­ные фишин­говые рас­сылки и таким обра­зом ими­тиро­вать дей­ствия зло­умыш­ленни­ка.

Evilginx — это обратный прок­си‑сер­вер, который прок­сиру­ет соеди­нение меж­ду поль­зовате­лем и целевым веб‑ресур­сом, поз­воляя перех­ватить логин, пароль и клю­чи сеан­са. С помощью это­го фрей­мвор­ка мож­но обой­ти двух­фактор­ную аутен­тифика­цию. Автор Evilginx — Куба Грец­ки.

Есть две вер­сии интегра­ции этих двух инс­тру­мен­тов. Пер­вая — не­офи­циаль­ная, ее раз­работал Дилан Эванс, он же fin3ss3g0d. Она вклю­чает в себя более рас­ширен­ный набор воз­можнос­тей вро­де SMS-рас­сылок и генера­ции QR-кодов, а так­же некото­рые дру­гие отли­чия от офи­циаль­ной вер­сии.

Офи­циаль­ную интегра­цию раз­работал автор Evilginx Куба Грец­ки, и появи­лась она отно­ситель­но недав­но — в апре­ле 2024 года. На дан­ный момент в ней мень­ше фун­кций, чем в вер­сии fin3ss3g0d, но инс­тру­мент пос­тоян­но обновля­ется, и, ско­рее все­го, все недос­тающее добавят. В статье я буду исполь­зовать имен­но эту вер­сию интегра­ции.

 

Начинаем строить инфраструктуру

Для начала необ­ходимо арен­довать VPS/VDS и домен­ное имя. Нам хва­тит сле­дующей кон­фигура­ции: 1 Гбайт ОЗУ, 20 Гбайт SSD и один про­цес­сор. В качес­тве ОС — Ubuntu 20.04.

По­луча­ем кре­ды от сер­вера, под­клю­чаем­ся к машине по SSH и про­водим базовую нас­трой­ку: соз­даем нового поль­зовате­ля и добав­ляем его в груп­пу sudo, соз­даем клю­чи SSH, отклю­чаем аутен­тифика­цию по паролю, нас­тра­иваем пор­ты, пра­вила фай­рво­ла и так далее.

info

Под­робнее о пер­воначаль­ной нас­трой­ке сер­вера ты можешь про­честь в статье «Ваш чек, сэр! Todo пос­ле покуп­ки вир­туаль­ного Linux-сер­вера».

Ра­зоб­равшись с сер­вером, прис­тупа­ем к соз­данию и нас­трой­ке домена. Для это­го выбира­ем любой сер­вис, пре­дос­тавля­ющий услу­ги арен­ды. Один из клю­чевых ком­понен­тов фишин­говой ата­ки — это домен­ное имя, которое вве­дет поль­зовате­ля в заб­лужде­ние. Регис­тра­ция такого домена называ­ется тай­псквот­тинг, и вари­антов здесь может быть мно­го.

Я решил соз­дать неп­римет­ный домен webaccount.site, что­бы потом добавить к нему под­домены, содер­жащие наз­вания извес­тных орга­низа­ций, так как под­домены необя­затель­но дол­жны быть уни­каль­ными. Нап­ример, если добавим под­домен microsoft, у нас получит­ся microsoft.webaccount.site.

Те­перь прис­тупим к нас­трой­ке DNS. Пер­вым делом нуж­но уста­новить основную запись типа А, которая свя­зыва­ет домен­ное имя с IP-адре­сом сер­вера. Для это­го редак­тиру­ем ресур­сные записи в раз­деле управле­ния зоной DNS у регис­тра­тора.

В даль­нейшем при соз­дании фишин­говых адре­сов будет исполь­зовать­ся мно­жес­тво под­доменов и для каж­дого такого под­домена пот­ребу­ется отдель­ная запись типа A, одна­ко мож­но исполь­зовать и запись типа CNAME, передав ей в качес­тве аргу­мен­та регуляр­ное выраже­ние «звез­дочка».

Этот тип записи сопос­тавит псев­доним (под­домен) с канони­чес­ким име­нем домена (webaccount.site) в момент генера­ции фишин­гового адре­са и получе­ния TLS/SSL-сер­тифика­та в Evilginx.

По­дож­дем, пока DNS-записи рас­простра­нят­ся (это может занять некото­рое вре­мя, от 15 минут до нес­коль­ких часов), и про­верим работос­пособ­ность сер­вера. Для это­го прос­то обра­щаем­ся к домену через бра­узер.

До­мен успешно при­вязал­ся к сер­веру. Пос­ле арен­ды домена желатель­но подож­дать хотя бы неделю: чем домен стар­ше, тем мень­ше веро­ятность, что он ока­жет­ся в чер­ных спис­ках. Во вре­мя моих пер­вых попыток я регис­три­ровал домен и сра­зу же исполь­зовал его в ими­тации фишин­говой ата­ки, из‑за чего его отс­тре­лива­ли в течение суток. Раз с доменом разоб­рались, прис­тупим к уста­нов­ке поч­тового сер­вера.

 

Поднимаем почтовый сервер

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

Пер­вым делом необ­ходимо уста­новить две записи. Одна — типа А с име­нем mail, ука­зыва­ющая на IP-адрес сер­вера.

Вто­рая запись — типа MX, которая ука­зыва­ет на сер­вер, обра­баты­вающий элек­трон­ную поч­ту.

Те­перь мож­но прис­тупить к уста­нов­ке и нас­трой­ке Postfix. Под­клю­чаем­ся к сво­ему VPS/VDS по SSH и запус­каем уста­нов­ку:

sudo apt install postfix

При нас­трой­ке в пер­вом шаге выбира­ем пункт Internet Site.

Вво­дим домен­ное имя, которое будет опре­делять­ся при отправ­ке поч­ты.

Ука­зыва­ем поч­товый адрес адми­нис­тра­тора домена. Мож­но оста­вить пус­тым (что не рекомен­дует­ся), тог­да поч­та, пред­назна­чен­ная для адми­нис­тра­тора, будет отправ­лять­ся в /var/mail/nobody.

Даль­ше про­писы­ваем адре­са вот в таком фор­мате:

<hostname>, <domain>, localhost.com, localhost

От­казыва­емся от при­нуди­тель­ного выпол­нения син­хро­низа­ции обновле­ний.

По­ле с локаль­ной сетью не тро­гаем и оставля­ем по умол­чанию.

Раз­мер поч­тового ящи­ка оставля­ем со зна­чени­ем 0, в этом слу­чае он будет опре­делять­ся общим дис­ковым прос­транс­твом.

Сим­вол, который будет исполь­зовать­ся для опре­деле­ния рас­ширения локаль­ного адре­са, — ста­вим плю­сик.

И в пос­ледней нас­трой­ке выбира­ем исполь­зуемые про­токо­лы — all.

Пос­ле нас­трой­ки уста­нов­ку Postfix мож­но счи­тать завер­шенной. Про­веря­ем при помощи ути­литы netcat, запус­тился ли поч­товый сер­вер. Дос­таточ­но пос­тучать­ся на 25-й порт нашего хос­та (порт SMTP по умол­чанию).

Поч­товый сер­вер запущен, но одной уста­нов­ки мало, необ­ходимо так­же нас­тро­ить ресур­сные записи, что­бы поч­та доходи­ла до конеч­ной точ­ки. Если про­пус­тить этот важ­ный этап, поч­та не то что будет попадать в спам, она в прин­ципе не будет рас­смат­ривать­ся поч­товыми сер­верами. Для успешной дос­тавки сооб­щений необ­ходимо нас­тро­ить ресур­сные DNS-записи типа TXT — SPF, DKIM, DMARC.

 

Настраиваем SPF, DKIM и DMARC

 

SPF

Нач­нем с записи SPF (Sender Policy Framework). Это тек­сто­вая запись, которая опи­сыва­ет то, какие хос­ты име­ют пра­во отправ­лять поч­ту от име­ни домена, то есть это спи­сок доверен­ных сер­веров. По сути, SPF — это механизм, про­веря­ющий, авто­ризо­ван ли хост, отправ­ляющий элек­трон­ное пись­мо от опре­делен­ного домен­ного име­ни.

Что­бы такое пра­вило работа­ло, соз­даем запись TXT в панели управле­ния доменом.

Эта запись опре­деля­ет, что элек­трон­ную поч­ту от име­ни домена могут отправ­лять сер­веры, ука­зан­ные в записях MX и A домена, а так­же име­ющие IP-адре­са из диапа­зона 94.142.141.0/24. Поч­та от дру­гих хос­тов будет помече­на как подоз­ритель­ная.

www

Ты можешь вос­поль­зовать­ся веб‑инс­тру­мен­том SPF Wizard, что­бы соз­дать свои пра­вила SPF.

 

DKIM

Вто­рой записью нас­тро­им DKIM (DomainKeys Identified Mail). Это механизм про­вер­ки элек­трон­ной поч­ты, задача которо­го — пре­дот­вра­щать под­делку сооб­щений. Для это­го при­меня­ется асим­метрич­ное шиф­рование: каж­дое сооб­щение под­писыва­ется зак­рытым клю­чом.

info

DKIM исполь­зует пары клю­чей: зак­рытый, к которо­му име­ет дос­туп толь­ко поч­товый сер­вер, и откры­тый, который про­писы­вает­ся в тек­сто­вой DNS-записи, а затем исполь­зует­ся получа­телем для про­вер­ки легитим­ности сооб­щения.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    5 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии