Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #84, ДЕКАБРЬ 2005 г.

Разводим червей

Ms-Rem (Ms-Rem@yandex.ru)

Хакер, номер #084, стр. 084-118-2


Допустим, нам удалось создать аттач, который проходит все mail-фильтры и успешно попадает к пользователю. Теперь возникает задача заставить юзера его запустить. Издавна для этого используют социальную инженерию, то есть обычный развод. Для этого в письме пишут, что оно содержит security updates или еще какою-нибудь полезную программу. Также распространен метод создания в архивах файлов с двойными расширениями, при этом файл обычно имеет расширение .xls [очень много пробелов].exe и иконку документа Microsoft Exсel. Часто трояны в аттачах имеют расширение .pif, которое не отображается в эксплорере даже тогда, когда включено отображение расширений всех файлов.

Что такое червь и как он должен работать, думаю, тебе понятно. Теперь приступим непосредственно к рассмотрению технических вопросов, которые возникают в процессе создания беспозвоночных.

[релеинг и резолвинг]

Проблема №1, которую нам нужно решить - это сама отсылка копии червя на e-mail адрес. В статье «Методы управления RAT», в июльском номере, я рассматривал процесс отправки мыла через SMTP-сервер mail.ru. Такой метод отправки подходит для различных парольных троянов, но для массовой рассылки червей неприменим. Потому что для его работы нужно иметь один или несколько постоянно работающих SMTP-серверов, через которые будет идти почта. Я думаю, ты уже понял, что такие серверы мгновенно прикроют доступ к себе, как только червя обнаружат, да и вряд ли какой-то SMTP сможет выдержать нагрузку, даваемую тысячами распространяющихся червей. Поэтому нам нужно отправлять почту, минуя центральный SMTP-сервер.

Что происходит с письмом, отправленным через какой-нибудь smtp.mail.ru? В этом случае сервер маил.ру работает, как SMTP Relay, то есть как перенаправитель сообщения от клиента на SMTP-сервер получателя. А зачем в цепочке рассылки лишний элемент, ведь можно отправлять почту напрямую получателю, минуя SMTP Relay. Как же нам узнать адрес SMTP сервера получателя? Это очень просто! Адрес SMTP, принимающего почту в каком-либо домене всегда определяется соответствующей MX-записью для этого домена на DNS-серверах.

Для начала нам нужно сделать резолвинг MX-записи нужного домена. Реализуется это двумя способами.

Первый - написание своего DNS Resolver'а, который бы формировал запрос, посылал его серверу, принимал и декодировал ответ. Второй - использовать для этого DNS API. Второй вариант, конечно, гораздо проще, но он имеет один большой недостаток - функции DNS API появились только в Windows 2000 Professional (в не Pro версиях они отсутствуют!), а так как основным контингентом пользователей, заражаемых почтовыми червями, будут ламеры, сидящие на старых и необновленных системах, то такой метод резолвинга лучше не использовать. Однако для ознакомления с DNS API, я приведу код, резолвящий MX-записи.

function MXResolve(Domain: PChar): string;

var

pQueryResultsSet: PDNS_RECORD;

HostEnt: PHostEnt;

Name: PChar;

begin

pQueryResultsSet := nil;

Назад на стр. 084-118-1  Содержание  Вперед на стр. 084-118-3