Мой пароль не дата, не улица, и фишингом меня н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"

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

Let’s block ads! (Why?)

Read More

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

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