Мой пароль не дата, не улица, и фишингом меня н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 и приводим его к следующему виду:
[email protected] root
[email protected] 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 [email protected] -s "Hello" -a "MIME-Version: 1.0" -a "Content-Type: text/plain"
На этом подготовительный этап закончен. В следующей части цикла исследуем процесс разработки тематик фишинговых писем для более эффективных результатов, процесс формирования целевых групп, а также рассмотрим, какие средства лучше всего подойдут для создания фишинговых веб-ресурсов и разных типов писем.