книги хакеры / журнал хакер / 084_Optimized
.pdf
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
|
.c |
|
||
|
|
p |
d |
|
x h |
|
|
e |
АВТОЗАПУСК АТТАЧА |
|||
|
|
|
|
|
g |
|
|
|||||
|
|
|
|
f- |
c an |
|
|
|
|
Недостаток большинства мыльных червей в том, что для их запуска нужны действия пользователя. Но этого можно избежать, если использовать уязвимости в почтовом ПО. Наиболее популярный в народе почтовый клиент — Outlook Express при просмотре html-писем использует движок Internet Explorer. Всем известно, что этот движок отличается исключительной дырявостью. На IE было выпущено множество эксплойтов, запускающих код на уязвимой машине, и большинство их можно использовать для автозапуска червя при открытии письма! За такую замечательную возможность нам нужно поблагодарить Билла Гейтса, а разработчикам IE нужно памятник при жизни поставить за то, что они сделали в нем много удобных для использования дыр :).
Очень странно, что эту возможность использует очень мало червей. Как пример можно привести червя Winevar. Червяк этот очень старый (еще 2002 года), но отличается от большинства других червей тем, что использует дырку iFrame и запускается при просмотре письма в окне быстрого просмотра Outlook. Это, конечно, круто, но есть возможность лучше. Наверное, ты слышал о существовании jpeg-эксплойта. Существование этого эксплойта связано с ошибкой в обработке jpeg-файлов в системной библиотеке, что позволяет заразить комп через любую программу, показывающую jpeg-картин- ки! Это можно использовать не только в Outlook, но и в других почтовых клиентах, таких как TheBat или Eudora. На диске ты найдешь исходник этого эксплойта, но, к сожалению, в настоящее время он срабатывает мало у кого. Эксплойты — это, конечно, хорошо, но, к сожалению, не всегда можно найти что-то реально рабочее, поэтому стоит присмотреться к другим методам маскировки червя в письме. Если в письма слать exe-файл, то мало кто его запустит, так как юзеры стали осторожнее. Но большинство из них даже не подозревает, что опасность может скрываться в .hlp- и .chm-файлах. Одна из малоизвестных возможностей helpфайлов — выполение сценариев на простом скриптовом языке, причем эти сценарии позволяют запускать исполнимые файлы. Эту возможность можно использовать с высокой эффективностью, так как доверия к hlp-файлам намного больше, чем к exe. Help-файлы можно создавать в Help Workshop (входит в состав MS Visual Studio 6). Инфу по скриптовому языку можно прочитать в документации к этой программе. В качестве демонстрации этого метода на диске лежит help-файл, запускающий cmd.exe. Но не составит никакого труда сделать хэлп, который форматирует винт ;).
исходничек jpeg-сплоита
а юзеру нетрудно будет открыть такой архив и запустить файл. Если на архив также поставить пароль и записать его в тексте письма, то будут пасовать и антивирусы на почтовых серверах, однако процент заражений несколько снизится.
Допустим, нам удалось создать аттач, который проходит все 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'а, который бы формировал запрос, посылал его серверу, прини-
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
мал и декодировал ответ. Второй — использо- |
|
|
|
|
|
|
o |
|
||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
вать для этого 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;
if DnsQuery(Domain, DNS_TYPE_MX, DNS_QUERY_STANDARD, nil, @pQueryResultsSet, nil) = 0 then
begin
Result := pQueryResultsSet^.Data.
MX.pNameExchange;
GlobalFree(dword(pQueryResultsSet));
end;
end;
Как ты видишь, резолвить с помощью DNS API проще простого, но так как этот метод не всегда приемлем, перейдем к рассмотрению следующего метода.
[ручной DNS резолвинг] Я попытаюсь рассказать немного о DNS-протоколе. Я не ставлю перед собой цели подробно рассказывать обо всей системе, но попытаюсь дать основные понятия, необходимые для понимания этого протокола. Подробно ты можешь все прочитать в документации RFC 1034 и 1035.
DNS-запросы бывают разного типа. Тип запроса имеет числовое значение от 1 до 16 и определяет информацию, которую вы желаете получить. Номер типа ответа всегда соответствует номеру типа запроса, чтобы знать, что и к чему относится. Вот основные типы DNS-зап- росов:
01 |
A |
host address (IP адрес хоста) |
|
|
02 |
NS |
authoritative name server |
|
|
|
|
(NS сервер) |
|
|
03 |
MD |
mail destination |
] |
|
|
|
(устар.тип, сейчас юзают MX) |
119 |
|
04 |
MF |
mail forwarder |
||
|
|
(устар.тип, сейчас юзают MX) |
КОДИНГ |
|
05 |
CNAME |
the canonical name for alias |
||
|
||||
06 |
SOA |
marks of a start of zone of authority |
|
|
07 |
MB |
(experimental) |
|
|
08 |
MG |
(experimental) |
|
|
09 |
MR |
mail rename domain name |
|
|
10 |
NULL |
a null RR |
|
|
11 |
WKS |
a well known service description |
|
|
12 |
PTR |
a domain name pointer |
|
|
13 |
HINFO |
host information |
|
|
14 |
MINFO |
mail box or mail list information |
|
|
15 |
MX |
mail exchange |
|
|
16 |
TXT |
text string |
|
|
Из них нас интересуют только MX-записи, име- |
> |
|||
ющие номер 15. Наряду с типом запроса, суще- |
05 |
|||
ствует еще и класс запроса. Это связано с тем, |
[84] |
|||
|
||||
что протокол DNS универсален и может рабо- |
12 |
|||
тать практически в любых сетях, а не только в |
||||
[XÀÊÅÐ |
||||
TCP/IP. Так как другие сети нам не понадобят- |
||||
ся, нас будет интересовать только один класс |