Мой пароль не дата, не улица, и фишингом меня нe дocтaть. Как защититься от атак социальной инженерии. Часть 1

от автора

Введение

По статистике за 2020 год до 45% сотрудников организаций открывают фишинговые письма, 20-30% переходят по нежелательным ссылкам в таких письмах, а от 10 до 15% вводят свои учетные данные на фишинговых ресурсах. Данные процентные соотношения взяты с учетом следующих факторов:

  • фишинговые письма обходят все спам-фильтры и доставлены до целей (жертв)

  • письма содержат актуальную информацию для сотрудников той или иной организации в определенный промежуток времени.

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

Первая часть данного цикла посвящена подготовительному этапу при проведении тестирования методами социальной инженерии. Так, будет рассмотрено, как правильно сконфигурировать smtp-сервер с rDNS записью для отправки фишинговых писем, какие DNS-записи необходимо настроить для дальнейшего обхода спам-фильтров, а также как добавить авторизацию на почтовом сервере.

Перед тем как начать

В процессе проведения тестирования методами социальной инженерии мы использовали услуги VPS в основном из-за наличия «белого» IP.

Весь процесс настройки будет производиться на Ubuntu 18.04.5 LTS c использованием:

  • Postfix 3.3.0-1

  • OpenDKIM 2.11.0

  • Dovecot 2.2.33.2

  • Certbot 0.27.0

В качестве примера будет использоваться доменное имя «example.com» и сеть 192.168.10.0/24.

Настройка smtp-сервера

Для отправки почтовых писем будет использоваться smtp-сервер Postfix. Установка smtp-сервера Postfix производится командой:

apt-get install postfix

Для упрощения процесса конфигурирования во время установки Postfix в пользовательском интерфейсе в списке типов конфигурации сервера необходимо выбрать «Internet Site» для автоматической генерации файла конфигурации main.cf

После установки Postfix производим его базовую настройку. Для этого в терминале прописываем команды по изменению доменного имени и сети, из которой будет отправляться почта.

postconf –e 'myhostname=example.com' postconf –e 'mynetworks=192.168.10.0/24'

Настройка OpenDKIM

Теперь, когда базовая конфигурация Postfix закончена, необходимо провести дальнейшие настройки, чтобы уменьшить вероятность попадания в спам писем, отправляемых с нашего smtp-сервера.

Начнем с настройки DKIM для Postfix. Это цифровая подпись, которая подтверждает подлинность отправителя и гарантирует целостность доставленного письма. Для ее настройки нам понадобится OpenDKIM — открытая реализация системы аутентификации отправителя по DKIM. Установка OpenDKIM производится командой:

apt-get install opendkim opendkim-tools -y 

Cоздаем директорию /etc/opendkim/example.com и генерируем приватный и публичный ключ RSA.

openssl genrsa -out dkimprivate.key 1024 openssl rsa -pubout -in dkimprivate.key -out dkimpublic.key

Примечание: для генерации ключей использовался более стабильный openssl, т.к. ключи, которые получались с помощью opendkim-genkey, не проходили проверки на сервисах тестирования записи DKIM.

Далее создаем файл доверенных узлов /etc/opendkim/TrustedHosts и делаем в нем запись следующего вида:

localhost #имя необходимого домена *.example.com

В файле /etc/opendkim/signingtable, который будет содержать список подписей, применяемых к сообщениям согласно адресу, указанному в поле заголовка From, создаем запись следующего вида:

*@example.com  mail._domainkey.example.com

Файл /etc/opendkim/keytable, который будет содержать таблицу ключей, приводим к следующему виду:

mail._domainkey.example.com example.com:mail:/etc/opendkim/example.com/dkimprivate.key

Далее открываем конфигурационный файл /etc/opendkim.conf и приводим его к следующему виду:

UMask                   002 Domain                  example.com KeyFile                 /etc/opendkim/example.com/dkimprivate.key Selector                mail UserID                  opendkim:opendkim SyslogSuccess         Yes LogWhy                  Yes Background              Yes Canonicalization        relaxed/relaxed ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts InternalHosts           refile:/etc/opendkim/TrustedHosts KeyTable                refile:/etc/opendkim/keys/keytable SigningTable            refile:/etc/opendkim/keys/signingtable Mode                    sv PidFile                 /var/run/opendkim/opendkim.pid SignatureAlgorithm      rsa-sha256 Socket                  inet:8891@localhost

Немного поподробнее про поля, которые были прописаны в файле выше:

  • Domain: параметр, определяющий имя используемого домена

  • KeyFile: параметр, описывающий путь до приватного ключа RSA, полученного с помощью openssl

  • UserID: параметр, который определяет под каким пользователем должен работать процесс OpenDKIM

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

  • InternalHosts: параметр, который определяет перечень внутренних хостов, чьи письма не должны быть проверены, но должны быть подписаны

  • KeyTable: таблица с параметрами подписи

  • SigningTable: список подписей, чтобы применить к сообщению на основе адреса, указанному в поле «От:» заголовка

  • PidFile: путь к PID файлу, который содержит идентификационный номер процесса

  • SignatureAlgorithm: алгоритм создания подписи

  • Socket: определяет параметры сервера OpenDKIM. Postfix будет отправлять сообщения на проверки и подпись через указанный в этом параметре сокет

Для взаимодействия Postfix и OpenDKIM в терминале прописываем следующие команды:

echo 'SOCKET="inet:8891@localhost"' >> /etc/default/opendkim postconf -e milter_default_action=accept postconf -e milter_protocol=2 postconf -e smtpd_milters = inet:localhost:8891 postconf -e non_smtpd_milters = $smtpd_milters

После настройки Postfix и OpenDKIM проверяем отсутствие ошибок в конфигурационных файлах. Делаем это с помощью команд:

postfix check  opendkim -n

Если в ходе проверок не было обнаружено ошибок, то перезапускаем сервисы Postfix и OpenDKIM и проверяем их статусы:

systemctl restart postfix  systemctl restart opendkim systemctl status postfix  systemctl status opendkim

*Примечание

Если в ходе проверки статуса OpenDKIM возникает ошибка, связанная с отсутствием pid-файла opendkim.pid, то переходим в /lib/systemd/system/opendkim.service и комментируем следующую строку:

#PIDFile=/var/run/opendkim/opendkim.pid

После чего еще раз перезапускаем OpenDKIM.

Настройка DNS-записей

После настройки OpenDKIM и создания приватных и публичных ключей переходим к настройке DNS-записей. Подробнее про них можно прочитать на данном ресурсе.

Для SPF создаем DNS-запись следующего вида:

В приведенной записи:

  • v — версия, всегда устанавливается как SPF1

  • ip4 — добавляет IP-адрес сервера, имеющего разрешение отправлять письма

  • a — позволяет отправлять письма с адреса, который указан в записи А на домене

  • mx — позволяет отправлять письма с адреса, который указан в записи MX на домене

  • ~all — определяет, что всем остальным ip-адресам присвоить режим мягкого возврата (попадание в папку «спам»).

Для DKIM создаем следующую DNS-запись:

В приведенной записи:

  • v — версия, всегда устанавливается как DKIM1

  • k – тип ключа, всегда указывается как RSA

  • p — сам открытый ключ

Примечание: процесс создания открытого ключа RSA был описан в предыдущем разделе. Ключ находится /etc/opendkim/<имя используемого домена>/dkimpublic.key

Далее для DMARC подписи создаем следующую DNS-запись:

В приведенной записи:

  • v — версия, всегда устанавливается как DMARC1

  • p — правило для домена, none — означает «не делает ничего, кроме подготовки отчетов»

  • aspf — проверка соответствия записей, r — означает, что проверка осуществляется в мягком режиме

  • sp — правило для субдомена, none — означает «не делает ничего, кроме подготовки отчетов»

После добавления всех описанных записей можно сделать проверку, что они действительны. Сделать это можно на известном сервисе Mxtoolbox.

Установка и настройка Dovecot и Certbot

Заключительной настройкой на подготовительной этапе будет конфигурирование Dovecot и Certbot. Dovecot в нашем случаи необходим, чтобы настроить авторизацию на smtp-сервере. Certbot же позволит управлять SSL-сертификатами от Let’s Encrypt. Для установки Dovecot и Certbot используем следующую команду:

apt-get install dovecot-imapd dovecot-pop3d certbot

Для создания сертификатов Let’s Encrypt прописываем в терминале следующую команду:

certbot certonly --standalone -d example.com

После завершения процесса сертификаты будут храниться в /etc/letsencrypt/live/examle.com

Далее производим дополнительную настройку Postfix. Для этого в терминале прописываем следующие команды:

postconf -e smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem postconf -e smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem postconf -e smtp_tls_security_level = may postconf -e smtpd_tls_security_level = may postconf -e smtp_tls_note_starttls_offer = yes postconf -e smtpd_tls_loglevel = 1 postconf -e smtpd_tls_received_header = yes postconf -e smtpd_use_tls=yes postconf -e smtpd_sasl_type = dovecot postconf -e smtpd_sasl_path = private/auth postconf -e smtpd_sasl_local_domain = example.com postconf -e smtpd_sasl_security_options = noanonymous postconf -e broken_sasl_auth_clients = yes postconf -e smtpd_sasl_auth_enable = yes postconf -e smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

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

  • smtpd_tls_cert_file — параметр, отвечающий за местонахождение сертификата сервера

  • smtpd_tls_key_file — параметр, отвечающий за местонахождение закрытого ключа сервера

  • smtp_sasl_auth_enable — параметр, который отвечает за включение поддержки sasl для проверки подлинности почтовых серверов

  • smtpd_sasl_path — параметр, который определяет путь до плагина аутентификации по механизму SASL

  • smtp_sasl_security_options — параметр безопасности, запрещающий механизмы, которые выполняют анонимную проверку подлинности. noplaintext — обозначает не использовать механизмы, которые передают незашифрованное имя пользователя и пароль

  • smtp_sasl_type — тип плагина sasl, используемый для проверки подлинности

  • smtpd_recipient_restrictions — параметр, отвечающий за список ограничений

Подробно с каждым параметром также можно ознакомиться в документации Postfix.

Также можно создать список виртуальных имен. Для этого прописываем следующие строки в конфигурационном файле /etc/postfix/main.cf:

virtualaliasdomains = $mydomain virtualaliasmaps = hash:/etc/postfix/virtual

Далее открываем файл /etc/postfix/virtual и приводим его к следующему виду:

admin@example.com root info@example.com root 

Также в /etc/postfix/master.cf раскомментируем данные строки:

-o smtpdtlswrappermode=yes -o smtpdsaslauthenable=yes -o smtpdmilters=inet:localhost:8891

Переходим к настройке Dovecot. Открываем файл /etc/dovecot/conf.d/10-auth.conf и прописываем следующие строки:

disableplaintextauth = yes … authmechanisms = plain login

Далее открываем файл /etc/dovecot/conf.d/10-mail.conf и приводим его к следующему виду:

maillocation = maildir: ~ / Maildir

В файле /etc/dovecot/conf.d/10-master.conf находим селектор service auth и прописываем следующие строки:

service auth {  …   # Postfix smtp-auth   unixlistener / var / spool / postfix / private / auth {        mode = 0660        user = postfix        group = postfix  }

Файл /etc/dovecot/conf.d/10-ssl.conf приводим к следующему виду:

ssl = required sslcert = </etc/letsencrypt/live/example.com/fullchain.pem sslkey = </etc/letsencrypt/live/example.com/privkey.pem sslprotocols = !SSLv3 !TLSv1.1 TLSv1.2 sslcipherlist = ALL:!LOW:!SSLv2:!EXP:!aNULL

Проверяем правильность конфигураций Postfix и Dovecot, после чего перезапускаем данные сервисы и проверяем их статусы:

postfix check  dovecot -n systemctl restart postfix  systemctl restart dovecot systemctl status postfix  systemctl status dovecot

*Примечание: пути до ключей указываем те, что создались в процессе генерацию сертификатов с помощью Certbot выше.

Для проверки корректной настройки Postfix, Opendkim, Dovecot можно использовать сервис Mail-Tester, который позволит протестировать, попадают ли в дальнейшем письма, отправляемые с нашего почтового сервера, в спам.

echo "Test mail" | mail test-c69hzynjz@srv1.mail-tester.com -s "Hello" -a "MIME-Version: 1.0" -a "Content-Type: text/plain"

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

ссылка на оригинал статьи https://habr.com/ru/post/538804/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *