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

Recent Posts

Apple возобновила переговоры с OpenAI и Google для интеграции ИИ в iPhone

Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…

2 дня ago

Российская «дочка» Google подготовила 23 иска к крупнейшим игрокам рекламного рынка

Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…

2 дня ago

Google завершил обновление основного алгоритма March 2024 Core Update

Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…

2 дня ago

Нейросети будут писать тексты объявления за продавцов на Авито

У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…

2 дня ago

Объявлены победители международной премии Workspace Digital Awards-2024

24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…

3 дня ago

Яндекс проведет гик-фестиваль Young Con

27 июня Яндекс проведет гик-фестиваль Young Con для студентов и молодых специалистов, которые интересуются технологиями и хотят работать в IT.…

3 дня ago