Exim and «From:»

19 апреля 2014 | Метки:

Пришлось озадачиться борьбой с письмами, содержащими загрузчиков троянов.
Если посмотреть на заголовки такого письма, то можно увидеть что-то приблизительно подобное:

From [email protected] Thu Jan  1 00:00:01 1970
Received: from [182.64.116.230] (helo=ABTS-North-Dynamic-230.116.64.182.airtelbroadband.in) by
 mx02.acme.ru with esmtp (Exim 4.80.1 (FreeBSD)) (envelope-from <[email protected]>)
 id 1Veqof-000O0U-MS for [email protected]; Fri, 08 Nov 2013 22:30:02 +0400
Received: from [125.210.224.222] (port=61185 helo=[192.168.3.60]) by
 182.64.116.230 with asmtp id 1rqLaL-00098-00 for [email protected]; Fri, 8 Nov 2013 23:59:56 +0530
Message-ID: <[email protected]>
Date: Fri, 8 Nov 2013 23:59:56 +0530
From: Voice Mail <[email protected]>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1
MIME-Version: 1.0
To: <[email protected]>

Такие письма проходят проверку поля “envelope-from”, поскольку в этом поле содержится относительно валидный адрес. Проверка на forged «envelope-from» осуществляется таким ACL:

domainlist relay_to_domains = acme.ru

acl_check_mail:
 drop hosts = !+relay_from_hosts:*
 condition = ${if match_domain{$sender_address_domain}{ $primary_hostname:+local_domains:+relay_to_domains } {true}{false}}
 message = 550 Rejected

Но в это же время, в теле письма, “From:” содержит адрес из целевого домена (в данном случае из домена acme.ru), разумеется в целях социальной инженерии.
Здесь используется другой ACL:

acl_check_data:
drop message = Rejected
     hosts = !+relay_from_hosts
     condition = ${if match{${domain:$h_from:}}{^acme\.ru\$}{yes}{no}}
Пока комментариев нет.