По статистике за 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-сервер 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'
Теперь, когда базовая конфигурация 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.
После настройки 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 в нашем случаи необходим, чтобы настроить авторизацию на 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"
На этом подготовительный этап закончен. В следующей части цикла исследуем процесс разработки тематик фишинговых писем для более эффективных результатов, процесс формирования целевых групп, а также рассмотрим, какие средства лучше всего подойдут для создания фишинговых веб-ресурсов и разных типов писем.
Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…
Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…
Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…
У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…
24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…
27 июня Яндекс проведет гик-фестиваль Young Con для студентов и молодых специалистов, которые интересуются технологиями и хотят работать в IT.…