Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
20.04.2024
Размер:
14.57 Mб
Скачать
схематичная реализация VPN поверх Ethernet

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

архитектура типичной VPN-сети

поле номера протокола в заголовке IP-пакета

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

[внутри PPTP] Протокол PPTP (Point to Point Tunneling Protocol — Туннельный Протокол Точка — Точка) — это основной протокол для организации VPN-сетей под Windows. Он связывает две системы виртуальным каналом связи. На одной стороне сидит клиент (client), на другой — сервер (server), в результате чего обе части получаются сильно неравнозначными. А что находится внутри тоннеля? Для поддержания своей работоспособности, сервер открывает 1723 TCP-порт, на котором висит система жизнеобеспечения, она же Control Connection — служебный канал связи, связывающий сервер с клиентом (изначально использовался 5678 порт, но IANA — Internet Assigned Numbers Authority — организация, ведающая регистрацией доменов и портов, решила иначе и утвердила за PPTP-сервером 1732 порт, список остальных зарегистрированных портов можно найти на www.iana.org/assignments/port-numbers). Клиентский порт может быть любым, и выбирается им (а точнее его осью) самостоятельно. Никакой аутентификации здесь не требуется, что открывает простор для всевозможных махинаций, например, хакер может принудительно закрыть чужую сессию.

Служебный канал в основном используется для управления скоростью поступления трафика, избегая холостых простоев и предотвращая «заторы». Это осуществляется путем рассылки специальных PPTP-сообще- ний (PPTP Control Connection message). Каждое такое сообщение начинается с заголовка, а закан- чивается «производственной» информацией. Длина заголовка фиксирована и составляет 8 октетов.

Тело сообщения включает в себя: поле длины (Total message length), тип сообщения: служебное или управляющее сообщение (Control Message/Management Message) и магическую последовательность 4Dh 3C 2C 1Ah, по которой его можно легко идентифицировать в общем потоке трафика и которую использует программа deceit.c

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

(http://packetstormsecurity.nl/new-exploits/deceit.c) для грабежа хэширо-

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

ванных паролей. Однако не будем забегать вперед, давай пока вернем-

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

ся к Microsoft и ее баранам.

 

 

 

 

 

 

 

 

 

 

Сам тоннель не использует TCP и работает исключительно на IP-

 

 

 

 

 

 

 

 

уровне с использованием протокола инкапсуляции GRE (Generic En-

 

 

 

 

 

 

 

 

capsulation Protocol — Общий Протокол Инкапсуляции). Это вполне

 

 

 

 

 

 

 

 

самостоятельный протокол, никак не зависящий от PPTP, предста-

 

 

 

 

 

 

 

 

вленный двумя документами RFC 1701 RFC 1702 (однако Microsoft ис-

 

 

 

 

 

 

 

 

пользует собственные расширения, известные под именем GRE v2).

 

 

 

 

 

 

 

 

Передаваемые данные разбиваются на пакеты и передаются по IP по

 

 

 

 

 

 

 

 

протоколу 47, закрепленном за GRE. «Протокол» в данном случае —

 

 

 

 

 

 

 

 

это поле protocol IP-пакета. Не путать его с портом! В IP нет никаких

 

 

 

 

 

 

 

 

портов. Они реализованы в протоколах верхнего уровня — TCP и

 

 

 

 

 

 

 

 

UDP, а GRE — это просто еще один протокол.

 

 

 

 

 

 

 

 

 

 

Внешне GRE очень похож на TCP, в нем есть понятия скользящих окон

 

 

 

 

 

 

 

 

(sliding window), сегментов (segments), номеров последовательности

 

 

 

 

 

 

 

 

(sequence number) и номеров подтверждения (acknowledgement number).

 

 

 

 

 

 

 

 

В практическом плане это означает, что непосредственный спуфинг PPP-

 

 

 

 

 

 

 

 

пакетов невозможен. Если мы попытаемся навязать серверу (или клиен-

 

 

 

 

 

 

 

 

ту) подложный пакет, то произойдет рассинхронизация сессии и соедине-

 

 

 

 

 

 

 

 

ние окажется нарушено. В локальных сетях проблема решается посылкой

 

 

 

 

 

 

 

 

2^32 пакетов. Поскольку, поле sequence number занимает 32-бита, проис-

 

 

 

 

 

 

 

 

ходит его переполнение и значение счетчика восстанавливается. Но для

 

 

 

 

 

 

 

 

атаки через Интернет это потребует немыслимого количества времени.

 

 

 

 

 

 

 

 

Ситуация кажется безнадежной, но кое-какая лазейка все-таки есть.

 

 

 

 

 

 

 

 

 

 

В заголовке GRE-пакетов присутствует специальный флаг Sequence

 

 

 

 

 

 

 

 

Number Present (бит 3), условно обозначаемый латинской буковой S.

 

 

 

 

 

 

 

 

Если он равен нулю, то номер последовательности признается недей-

 

 

 

 

 

 

 

 

ствительным, и принимающая сторона должна его игнорировать. Во

 

 

 

 

 

 

 

 

всяком случае, так говорит Cтандарт. Естественно, конкретные реали-

 

 

 

 

 

 

 

 

зации могут существенно отличаться. Тем не менее потенциальная ды-

 

 

]

 

 

 

 

ра все-таки есть. Кстати говоря, Стандарт не дает никаких указаний, как

 

 

069

 

 

 

 

обрабатывать дубликаты (пакеты с одинаковым номером последова-

 

 

 

 

 

 

тельности), оставляя это на совести конкретных реализаций. Принимаю-

 

 

ВЗЛОМ

 

 

 

 

щая сторона может либо отбросить один из пакетов, либо затребовать

 

 

 

 

 

 

его повторную передачу. В обоих случаях рассинхронизации не проис-

 

 

 

 

 

 

ходит, то есть получается как бы самосинхронизующийся протокол.

 

 

 

 

 

 

 

 

 

 

Поверх GRE реализованы протоколы аутентификации и шифрования (а

 

 

 

 

 

 

 

 

при необходимости еще и сжатия, за которое чаще всего отвечает

 

 

 

 

 

 

 

 

MPPE). Microsoft поставляет довольно большой ассортимент различных

 

 

 

 

 

 

 

 

проколов (см. соответствующую врезку), так что клиенту с сервером

 

 

 

 

 

 

 

 

есть из чего выбирать! При желании шифрование можно и вовсе отклю-

 

 

 

 

 

 

 

 

чить, а аутентификацию осуществлять «прямым» текстом, но это будет

 

 

 

 

 

 

 

 

слишком недальновидное решение, полностью обесценивающее идео-

 

 

 

 

 

 

 

 

логию VPN и открывающую двери для всех желающих. Нормальные ад-

 

 

 

 

 

 

 

 

министраторы так не поступают, предпочитая использовать более за-

 

 

 

 

 

 

 

 

щищенные MS-CHAP и LANMAN Hash.

 

 

 

 

 

 

 

 

 

 

На самом деле, их защищенность сильно преувеличена и они уже

 

 

 

 

 

 

 

 

давно взломаны. Подробнее об этом можно прочитать в моей «Тех-

 

 

 

 

 

 

 

 

нике сетевых атак», электронную копию которого можно бесплатно

 

 

 

 

 

 

 

 

скачать с ftp — nezumi.org.ru (nezumi по-японски мыщъх). К тому же,

 

 

 

 

 

 

 

 

шифруются только пакеты с данными (DATA packets). Служебные

 

 

 

 

 

 

 

 

протоколы, составляющие весьма значительную часть PPP-трафи-

 

 

 

 

 

 

 

 

ка, такие, например, как LCP — Link Control Protocol (Протокол

 

 

 

 

 

 

 

 

Управления Каналом) — остаются незашифрованными со всеми

 

 

 

 

 

 

 

 

вытекающими отсюда последствиями.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЧТО ЧИТАТЬ?

 

 

 

 

 

 

 

 

 

 

– Malware FAQ Microsoft PPTP VPN — подробный и доход-

 

 

 

 

 

 

 

 

 

чивый faq по взлому VPN (на английском языке):

 

 

 

 

 

 

 

 

 

 

www.sans.org/resources/malwarefaq/pptp-vpn.php

 

 

 

 

 

 

 

 

 

 

– Breaking the Secure Safe — фрагмент из книги Wireless

 

 

 

 

 

 

 

 

 

 

Hacking: Breaking Through, посвященной взлому беспро-

 

 

 

 

 

 

 

 

 

 

водных сетей с кучей практических примеров (на англий-

 

 

 

 

 

 

 

 

 

 

ском языке): www.informit.com/articles/artic-

 

 

 

 

 

 

 

 

 

 

le.asp?p=353735&seqNum=8&rl=1

 

 

 

 

 

 

 

 

 

 

– [The Crumbling Tunnel]-<A Menagerie of PPTP Vulnerabilit-

 

 

 

 

 

 

 

 

 

ies> — статья из phrack'а с обстоятельным анализом уяз-

 

 

 

 

>

 

 

 

 

вимостей PPTP-протокола (на английском языке):

 

 

 

 

05

 

 

 

 

www.phrack.org/phrack/53/P53-12

 

 

 

 

[82]

 

 

 

 

– Криптоанализ туннельного протокола типа точка-точка

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

(PPTP) от Microsoft — перевод статьи известного криптоа-

 

 

 

 

 

 

 

 

 

 

[XÀÊÅÐ

 

 

 

 

налитика Брюса Шрайера и этим все сказано (на русском

 

 

 

 

 

 

 

языке): www.ssl.stu.neva.ru/psw/crypto/pptp.html

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

5 образуются две 8-байтовые строки

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

6 эти строки «склеиваются» друг с другом, образуя 16-байтовый хэш

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВЗЛОМ 070]

[XÀÊÅÐ 10 [82] 05 >

 

 

 

Независимое хеширование половинок пароля, в 1 000 000 000 000 000

 

 

 

раз уменьшает количество попыток, требующихся для его перебора (а

 

 

 

вовсе не в два раза, как это может показаться на первый взгляд). Это

 

 

 

же какой талант надо иметь, чтобы допустить такой ляп! Уж сколько раз

 

 

 

твердили миру (то есть разработчикам) — не разводите самодеятель-

 

 

 

ность, используйте проверенные временем алгоритмы, да только все не

 

 

 

впрок. Ситуация усугубляется тем, что алгоритм DES не требует гро-

 

 

 

моздких вычислений и потому на современных процессорах LM-хэш мо-

 

 

 

жет быть взломан за короткое время. Какое — не имеет значения. Ведь

 

 

 

в открытом виде он все равно не передается. Правда, подобранный па-

 

 

 

роль может пригодится при входе в систему с клавиатуры.

 

 

 

А вот так вычисляется NT-хэш:

 

 

 

1 в зависимости от настроек системы клиентский пароль преобразует-

 

 

 

ся либо к 14-символьной (по умолчанию), либо к 128-символьной ASCII

 

 

 

строке, причем большинство администраторов используют длину по

 

 

 

LC5 за работой

 

 

умолчанию, не утруждаясь ее поменять

 

[аутентификация

 

2 ASCII-строка преобразуется в UNICODE

 

 

снаружи и изнутри]

3 вычисляется 16-байтовый кэш по алгоритму MD4

 

Аутентификация осу-

 

 

ществляется либо от-

Как видно, NT-хэш намного более стоек, поэтому в случае с NT-хэшем

 

крытым тестом (clear

хакеры предпочитают перебирать сам хэш, а с LM-хэшем — исходный

 

text password), ëèáî ïî

пароль.

 

схеме запрос/отклик

Теперь рассмотрим, как работает процедура аутентификации. Обычно

 

(Challenge/Response).

она осуществляется либо по протоколу MS-CHAP v1, либо по MS-CHAP

 

С прямым текстом все

v2. Начнем с первого из них, он работает так:

 

ясно. Клиент посылает

 

 

серверу пароль. Сер-

1 клиент посылает запрос на аутентификацию VPN-серверу, открыто

 

вер сравнивает это с

передавая свой login

ñòåê VPN

эталоном и говорит

2 сервер возвращает 8-байтовый случайный отклик

 

«пошел на xyz» или «добро пожаловать». Хакер, вооруженный снифе-

3 клиент снимает со своего пароля LM-хэш и генерирует три DES-клю-

ром, может легко перехватить открытый пароль, и защита пойдет лесом.

ֈ

Нам этот случай не интересен, поэтому не будем на нем останавливать-

4 каждый из этих ключей зашифровывает отклик и получается три 8-

ся. К тому же открытая аутентификация в живой природе практически не

байтовых строки

встречается. Схема запрос/отклик намного более продвинута. В общем

5 три 8-байтовых строки объединяются в одну 24-байтовую, которая пе-

виде она выглядит так:

 

 

редается серверу

 

 

 

6 сервер, извлекает из своей базы хэш данного клиента и расшифро-

1 клиент посылает серверу запрос (request) на аутентификацию

вывает строку

2 сервер возвращает случайный отклик (challenge)

7 если результат расшифровки совпадает с исходным откликом, то все

3 клиент снимает со своего пароля хэш, шифрует им отклик и переда-

ок, и наоборот

ет его серверу

 

 

 

4 то же самое проделывает и сервер, сравнивая полученный результат

А вот так работает MS-CHAP v2:

с ответом клиента

 

 

 

5 если зашифрованный отклик совпадает, аутентификация считается

1 клиент посылает запрос на аутентификацию VPNсерверу, открыто

успешной

 

 

передавая свой login

 

 

 

2 сервер возвращает клиенту 16-байтовый случайный отклик

Таким образом, для аутентификации знать оригинальный пароль вооб-

3 клиент генерирует 16-байтовый PAC (Peer Authenticator Challenge —

ще не нужно, достаточно угадать/перебрать/подсмотреть его хэш, одна-

Равный Отклик Аутентификации)

ко хэш не передается в открытом виде по сети, и эта схема позициони-

4 клиент объединяет PAC, отклик сервера и свой username в одну стро-

руется как устойчивая к перехвату, что очень хорошо. А вот ее недостат-

êó

ки: исходный хэш должен как-то попасть на сервер, поэтому для пере-

5 с полученной строки снимается 8-байтовый хэш по алгоритму SHA-1

дачи пароля необходим защищенный канал. Это раз. Процедура аутен-

и посылается серверу

тификации уязвима для brute-force атаки. Перехватив исходный и заши-

6 сервер извлекает из своей базы хэш данного клиента и расшифро-

фрованный challenge, мы можем попытаться подобрать ключ шифрова-

вывает его ответ

ния, перебирая столько вариантов, сколько хотим. Ни сервер, ни клиент

7 если результат расшифровки совпадет с исходным откликом, все ок,

в этой затее никак не участвуют и не могут нам помешать. Это два.

и наоборот

Стойкость системы определяется по формуле min(strlen(passwd),siz-

8 впоследствии сервер берет PAC-клиента и на основе хэша генериру-

eof(hash)). Если хэш короток, то длина пароля не играет никакой роли, и

ет 20-байтовый AR (Authenticator Response — Аутентификационный От-

взлом может завершиться за очень короткое время. Это три. Но это все

вет), передавая его клиенту

голая теория. Посмотрим, как обстоят дела на практике.

9 клиент проделывает ту же самую операцию и сравнивает полученный

Microsoft Windows поддерживает два типа хэшей: «родной» NT-хэш и

AR с ответом сервера

хэш LAN Manager, доставшейся ей в наследство от OS/2 (давным-давно

0 если все совпадает клиент аутентифицирует сервер

эти системы шли вместе) и благополучно доживший до на-

 

 

ших дней, несмотря на свою катастрофическую незащи-

протокол

метод шифрования

щенность. Как он рассчитывается? А вот так!

 

 

старый MPPE

RSA RC4, 40-, 56-разрядные ключи

1 клиентский пароль преобразуется в 14-байтовую ASCII-

 

 

новый MPPE

RSA RC4, 128-разрядные ключи

строку (более длинные пароли усекаются, а более короткие

дополняются нулями)

 

 

IPSec

DES, 56-разрядные ключи

2 все символы приводятся к верхнему регистру

3 14-символьный пароль разбивается на две 7-символь-

 

 

IPSec Triple

3DES

ные «половинки»

 

 

4 каждой 7-символьной «половинкой» зашифровывается

 

 

постоянная константа AAD3B435B5140EEh по алгоритму DES

основные механизмы хэширования и аутентификации, используемые в VPN

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Как видно, протокол MS-CHAP v2 выглядит более защищенным, чем MS-CHAP v1, однако оба они уязвимы. Подробности можно найти в статье Брюса Шнайера Cryptanalysis of Microsoft's MS CHAP v2 (www.schneier.com/paper-pptpv2.html), которая, вопреки своему названию, описывает не только MS-CHAP v2, но и MS-CHAP v1.

Чем плох MS-CHAP v1? Тем, что его уже давно научились ломать. В Сети можно найти множество готовых «отмычек», работающих в полностью автоматизированном режиме и не требующих никакой квалификации. Скачал — запустил — поимел. Самая известная (и самая древняя!) — это L0phtcrack, но сейчас проект сдулся и переименовался в LC 5 (www.securityfocus.com/tools/1005), а на прежнем адресе www.l0phtcrack.com висит объявление о продаже. Тем не менее, L0phtcrack по-прежнему остаются в строю, поскольку в отличие от жаждущего денег LC 5, он распространяется бесплатно. Найти его можно на любом хакерском сайте.

На Pentium 4 с такой частотой, как 3 GHz, полный цикл перебора занимает не более 4 часов, а в среднем пароль подбирается за 2 часа. Вот тебе бабушка и безопасность! И это еще не предел! По сути, L0phtcrack представлял собой тривиальный переборщик, работающий по принципу грубой силы (скажут копать — буду копать). Это неэлегантно и непроизводительно.

В начале 2004 года 20-летний швейцарский хакер Филипп Ошлин (Philippe Oechslin), ведущий научный ассистент лаборатории криптографии

èзащиты Швейцарского государственного технологического института в Лозанне, сообщил о принципиально новом методе ускоренного взлома (Faster Time-Memory Trade-Off Technique), основанном на предвычи- сленных таблицах, содержащих все возможные комбинации символов в пароле. Отталкиваясь от работ Мартина Неллмана (Martin Hellman), Филлипп переработал и усилил алгоритм подбора паролей, «адаптировав» его к алгоритму LM-менеджера. Время взлома сократилось в ~12 раз, и на AMD 2500+ с 1,5 Гб ОЗУ составило всего 13,6 секунд! Ну прямо взлом в реальном времени! А ведь это не самый мощный компьютер из всех доступных. Следует отметить, что объем памяти важен потому, что предвычисленные таблицы очень велики, а интенсивный своппинг на диск съедает всю производительность.

Все подробности можно найти в статье Филиппа, выложенной на Швейцарском сайте (lasecwww.epfl.ch/php_code/publications/search.php?ref=Oech03)

èуже реализованных в программе Rainbow Crack (www.antsight.com/zsl/rainbowcrack), демонстрационная версия которой распространяется бесплатно, а вот за полную версию предвычисленных таблиц придется выложить 500$. Вообще-то, их можно найти в Сети и бесплатно, но здесь есть одно «но». Для работы с ними потребуется установить 60 Гбайт оперативной памяти. Такой объем домашние компьютеры уже не поддерживают. Это уже нехилая серверная конфигурация, на фоне которой жалкие 500$ погоды не делают. Зато и пароль взламывается мгновенно! Причем, не только LM, но NT. Так что криптография не стоит на месте! И надежность парольных защит с каждым годом вызывает все большие и большие сомнения.

ИССЛЕДОВАНИЕ VPN-СЕТЕЙ

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

Вот для этого и нужен IKE-scan! Это бесплатно распространяемая утилита, посылающая Control Connection запросы по UDP и анализирующая ответы. Как показала практика, каждая реализация имеет свой уникальный «почерк», на жаргоне называемый «отпечатком» (fingerprint), по которому ее можно определить. Методика снятия отпечатков постоянно совершенствуется, и за подробной информацией лучше обратиться непосредственно к самим разработчикам (www.nta-monitor.com/ike-scan/overview-old.htm). Оттуда же можно скачать и готовую утилиту с исходными текстами в придачу: www.nta-monitor.com/ike-scan/download.htm. Как и большинство остальных программ этого рода, она ориентирована на UNIX, но неплохо чувствует себя и под Windows в среде Cygwin. Некоторые дистрибутивы (например, DEBIAN) уже включают ее в штатный комплект поставки, поэтому ничего качать не надо.

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

заголовок GRE-пакета ñ S-флагом
Но это не единственное слабое место MS-CHAP v1. Есть и другие. Например, атакующий может прикинуться сервером и послать клиенту запрос на смену пароля, который не требует аутентификации и будет воспринят как правильный. Как уже было показано выше, возможность аутентификации сервера клиентом появилась только в MS-CHAP v2. Клиент вводит свой
старый и новый пароль, атакую- процедура вычисления LM-õýøà щий благополучно их «съедает» и,
используя «старый» пароль, тут же подключается к серверу. Комментарии, как говорится, излишни. Ведь если «блокировка пароля» отключе- на и установлено бессрочное время его использования, запрос на смену пароля будет звучать весьма странно, если не сказать подозрительно, а если пароли меняются каждые несколько дней, то к этому привыкают и перестают обращать внимание.
Протокол MS-CHAP v2 намного более защищен, и фокус с «подделкой» сервера в нем уже не проходит, однако он остается уязвим для утилит,типа Rainbow Crack, которые взламывают его за очень короткое время, правда, при условии, что у хакера имеется достаточное количе- ство оперативной памяти или несколько лишних часов :).
[шифрование снаружи и изнутри] Все, о чем мы до сих пор говорили, касалось аутентификации. Теперь давай разберемся с шифрованием. В настоящее время поддерживаются два метода шифрования: MPPE (Microsoft Point-to-Point Encryption — Протокол Шифрования от Microsoft) и ipsec. Первый протокол декларируется в RFC 3078, а IPSec описывается целым тандемом RFC: RFC 1825 — IP Security Architecture (Архитектура Безопасности IP), RFC 1826 — IP Autentication Header (Заголовок Аутентификации IP), RFC 1827 IP Encapsulating Security Payload, ESP — Инкапсулированная Секретная Начинка в IP, RFC 1828 — IP Autentication using Keyed MD5 (Метод Аутентификации по ключам MD5), RFC 1829 — ESP DES-Chpher Block Chaining Transform (Преобразование Сцепленных Блоков Инкапсулированной Начинки Зашифрованной по DES). Помимо этого, существуют и другие IPSec RFC, которые легко найти на www.rfc-editor.org. Это целый талмуд, с которым толпа гиканутых парней не успеет разобраться и за год!
Оба протокола реализованы как в Microsoft Windows, так и вне ее (например, в *BSD), но алгоритмы работы VPN могут существенно отлича-
атака тика bit-flipping

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

g

.c

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВЗЛОМ 072]

[XÀÊÅÐ 10 [82] 05 >

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

ться. Основные сведения приведены в таблице 2.

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Выбор метода шифрования определяется типом и конфигурацией VPN-сервера. При подключении по PPTP применяется шифрование MPPE, а при подключении по L2TP (Layer 2 Tunneling Protocol) — шифрование IPSec. Протокол L2TP был разработан рабочей группой IETF PPP Extensions с целью объединения функциональности Cisco L2F, плюс PPTP стандартизирован в 1999 году документом RFC под номером 2661. Сейчас происходит его активное внедрение. Внешне L2TP очень похож на PPTP, но если PPTP работает только в IP-сетях, то L2TP поддерживает Frame Relay, X.25 и ATM.

Если майкрософтовский VPN-клиент настроен на автоматический выбор типа сервера (как и происходит по умолчанию), сначала предпринимается попытка использовать протокол L2TP с алгоритмом шифрования IPSec, и только если эта попытка не увенчалась успехом, происходит переход на PPTP с шифрованием по MPPE.

Рассмотрим PPTP как наиболее простой и распространенный протокол шифрования. С точки зрения хакеров, он привлекателен тем, что использует простой потоковый шифр RC4, уязвимости которого хорошо известны. За последние несколько лет криптоаналитики разработали множество эффективных атак, а вычислительные мощности возросли настолько, что даже лобовой подбор 40-битно- го ключа представляет из себя плевое дело. Перечислим три основные уязвимости RC4:

1 Атака по открытому тексту. На основе ключа шифрования генерируется псеводослучайная последовательность (она же гамма), которой накладывается на шифруемый текст через XOR. Что может быть проще! Если атакующий знает содержимое и позицию шифруемого байта, то путем повторного применения XOR он может восстановить один байт гаммы. Поскольку, шифруемые пакеты содержат предсказуемую информацию (например, заголовки), а одни и те же участки гаммы многократно накладываются на различные участки шифруемого текста, хакер может восстановить всю гамму целиком путем тривиального сбора трафика!

2 Атака «переворотом битов» (bit-flipping attack). После начальной аутентификации и установки соединения, остальные пакеты не аутентифицируются, поэтому, атакующий может свободно менять содержимое зашифрованных битов. Конкретная реализация атаки может выглядеть, например, так. Хакер перехватывает зашифрованный пакет снифером, изменяет несколько битов пакета и пересчитывает его CRC, после чего передает пакет серверу, который благополучно «проглатывает» поддельный пакет (ведь CRC рассчитан правильно) и передает его на следующий уровень в стеке протоколов. На уровне 3 (layer 3) происходит конкретный облом. Пакет отвергается и генерируется вполне предсказуемый ответ, который передается «наверх», подвергаясь шифровке. Хакер вылавливает зашифрованный пакет и применяет атаку по прямому тексту, восстанавливая гамму ключа. Все! Теперь остальные пакеты расшифровываются «на ура»!

3 Атака путем ресинхронизации: если в процессе передачи теряется пакет, либо приходит пакет с неверным номером в заголовке МРРЕ, происходит так называемая «ресинхронизация ключа». Отправитель реинициализирует таблицы RC4 и устанавливает бит «сброшен» (flushed) в заголовке МРРЕ. Если система обнаруживает в пакете установленный

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

Все три описываемые атаки относятся к MS-CHAP v1, а в MS-CHAP v2 их влияние значительно ослабло, поэтому основным способом взлома стал подбор пароля с помощью таких программ, как Rainbow Crack.

[заключение] Так все-таки, можно доверять VPN-се- тям, или нет? Ответ неоднозначен. Да, они действительно представляют собой дополнительный уровень защиты поверх традиционных сетей, однако открывать доступ во внутреннюю корпоративную сеть через VPN очень опасно. Хакер без труда сможет подобрать пароль за столь короткое время, что администратор и глазом моргнуть не успеет. Последствия такого вторжения каждый может домыслить сам. Тут не нужно богатого воображения

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

 

X-CONTEST

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В СЕНТЯБРЕ В КАЧЕСТВЕ ОЧЕРЕДНОГО Х-КОНКУРСА

УЧИТЫВАЯ, ЧТО С ЗАДАНИЕМ СПРАВИЛОСЬ 7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МЫ ПРЕДЛОЖИЛИ ТЕБЕ ИССЛЕДОВАТЬ НА ПРЕДМЕТ

ЧЕЛОВЕК, НЕЛИШНИМ БУДЕТ РАССКАЗАТЬ О ТОМ, КАК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВОЗМОЖНОГО ВЗЛОМА ПРОГРАММНУЮ ЗАЩИТУ

НАДО БЫЛО ПРОХОДИТЬ КОНКУРС, КАКИМ ОБРАЗОМ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СПЕЦИАЛЬНО ПРИГОТОВЛЕННОГО CRACKME.

МОЖНО БЫЛО ВЗЛОМАТЬ НАШУ ПРОГРАММУ.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВЗЛОМ 074]

[XÀÊÅÐ 10 [82] 05 >

[инструменты для взлома] Начнем с инструментария, который тебе понадобится для исследований. Что бы ни говорили знатоки крэкинга, но для взлома данного крэкми тебе понадобится только Olly Debugger (далее — Олька). Конечно, можно запрячь всякие файловые анализаторы и распаковщики, но без всего этого вполне можно обойтись. Чтобы узнать, с чем мы имеем дело, может пригодиться файловый анализатор PEiD. Он не покажет нам никаких данных относительно языка, на котором написана программа, отсюда можно сделать логичный вывод о том, что программа упакована, а поскольку PEiD не выводит имя упаковщика, то он либо новый, либо малоизвестный. Скажу по секрету, паковал я этот крэкми UPack'ом версии 0.32. Этот пакер бесплатный и обеспечивает лучшее, по сравнению с другими, сжатие. Ну что, приступаем к нашим опытам.

[ломаем] Для начала не лишним будет определить нашу цель. Многие почему-то решили, что достаточно распаковать крэкми и защита снята. Это неправильный подход. Упаковщик служит лишь для уменьшения размера крэкми, но не для защиты. А цель наша — получить пароль на свой ник и узнать специальный пароль, общий для всех ников. Для этого не нужно распаковывать крэкми. После запуска его под Олькой упаковщик в памяти сам распакует крэкмис. Нам остается лишь посмотреть на те уязвимости, за которые можно зацепиться, чтобы осуществить взлом.

Надеюсь, ты уже открыл Олей крэкмис и нажал F9, запустив тем самым программу под отладчи- ком. Теперь в загруженной программе введи свой ник и любой пароль. Я ввел «GPcH» и пароль «1234567890». Нажимаем на кнопку «Зарегистрировать программу» и получаем, естественно, сообщение «Вы ввели неверное имя пользователя или пароль. Повторите попытку :)». Теперь мы знаем, с чего нам начать исследовать программу. Ставим точку останова на функцию rtcMsgBox (данную функцию Visual Basic — а именно на нем и написана программа — использует для вывода сообщений) или на ее ординал 595. Надеюсь, у тебя установлен плагин CommandLine для Ольки. Если нет — ищи его на сайте www.ollydbg.de. В консоли этого плагина вводи bp rtcMsgBox, жми Enter и снова дави на кнопку «Зарегистрировать программу». Выполнение кода прервется на функции rtcMsgBox.

660DC5F3 > 55

PUSH EBP

Теперь проходим до конца этой функции в режиме трассировки (нажимай F8). Эта функция, как и любая другая, оканчивается операндом ret. После этого (предварительно увидев сообщение о неверности пароля) мы попадем обрат-

но в код крэкмиса. Тут ты увидишь следующее:

код, на который мы попадаем после получе- ния сообщения о неверном пароле

0040610E

8D

DB 8D

0040610F

85

DB 85

00406110

58

DB 58

;CHAR 'X'

 

 

00406111

FD

DB FD

00406112

FF

DB FF

00406113

FF

DB FF

00406114

50

DB 50

;CHAR 'P'

 

 

00406115

8D

DB 8D

00406116

85

DB 85

00406117

68

DB 68

;CHAR 'h'

 

 

00406118

FD

DB FD

00406119

FF

DB FF

0040611A

FF

DB FF

Олька после распаковки программы не смогла автоматически опознать код, поэтому нажми Ctrl+A. Начало кода теперь примет вид:

0040610E . 8D85 58FDFFFF LEA EAX,DWORD PTR SS:[EBP-2A8] пролистни код чуток вверх и ты увидишь:

004060EB

. 8D85 A8F6FFFF

LEA

EAX,DWORD PTR SS:[EBP-958]

004060F1

. 50

PUSH EAX

004060F2

. 8D85 B8F6FFFF

LEA

EAX,DWORD PTR SS:[EBP-948]

004060F8

. 50

PUSH EAX

004060F9

. 8D85 C8F6FFFF

LEA

EAX,DWORD PTR SS:[EBP-938]

004060FF

. 50

PUSH EAX

00406100

. 6A 40

PUSH 40

 

00406102

. 8D85 D8F6FFFF

LEA

EAX,DWORD PTR SS:[EBP-928]

00406108

. 50

PUSH EAX

00406109

. E8 2EB2FFFF

CALL

CrackMe.0040133C

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

00404286

. E8 CFD0FFFF CALL

CrackMe.0040135A

 

0040428B

. 33C9

XOR ECX,ECX

0040428D

. 83F8 04

CMP EAX,4

Ниже расположена процедура

проверки длины пароля:

 

00404A7E

. E8 D7C8FFFF CALL

CrackMe.0040135A

 

00404A83

. 33C9

XOR ECX,ECX

00404A85

. 83F8 0A

CMP EAX,0A

Несмотря на то, что пароль должен быть не менее 10 символов, немного проанализировав программу, мы поймем, что больше 10 симво-

лов он также не может быть. Потому условимся: имя — более трех символов, пароль — ровно 10 символов.

После проверок идет процедура преобразования имени пользователя и пароля. Этот код на PHP выглядел бы так:

[так выглядит преобразование имени и пароля на php]

//преобразуем имя пользователя $strName for ($i=0;$i<strlen($strName);$i++) {

for ($j=strlen($strName)-1;$j>-1;$j--) { $sText .= (ord(substr($strName, $i, 1)) ^

ord(substr($strName, $j, 1)));

}

}

//делаем полученный хэш от имени кратным 10 $sTXT = $sText.substr("0000000000", 1, ((floor(strlen($sText) / 10) * 10) + 10) — strlen($sText));

$sPass = substr($sTXT, 0, 10); $sText = "";

//криптуем хэш имени первыми 10 символами хэша имени

for ($i=9;$i<(strlen($sTXT) — 10);$i=$i+10) { for($j=0;$j<10;$j++) {

$sXOR = (substr($sPass, $j, 1) ^ substr($sTXT, $i + $j + 1, 1));

if (strlen($sXOR) > 1) $sXOR = substr($sXOR,0,1);

$sText .= $sXOR;

}

$sPass = $sText; sText = "";

}

//получаем имя функции регистрации из пароля $strPass

for($i=0;$i<10;$i++) {

$code = $code.chr(substr($sPass, $i, 1) ^ ord(substr($strPass, $i, 1)));

}

После этого $code вызывается как функция. Для этого в VB есть функция CallByName. В нашем крэкми ее вызов мы найдем тут:

0040568A

. E8 65BCFFFF

CALL

CrackMe.004012F4

 

0040568F

. 50

PUSH EAX

00405690

. FF35 10304100

PUSH DWORD

PTR DS:[413010]

 

00405696

. 8D85 38FFFFFF

LEA

EAX,DWORD PTR SS:[EBP-C8]

 

0040569C

. 50

PUSH EAX

0040569D

. E8 ECBBFFFF

CALL

CrackMe.0040128E

 

004056A2

. 50

PUSH EAX

004056A3

. 8D85 28FFFFFF

LEA

EAX,DWORD PTR SS:[EBP-D8]

 

004056A9

. 50

PUSH EAX

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

004056AA . E8 EBBBFFFF

CALL

кнопкой по листингу и выбираем в появившем-

Попробуем ввести ее в качестве пароля,

CrackMe.0040129A

 

ся меню Dump debugged process. Нам не нужен

и мгновенно на фоне логотипа журнала мы

004056AF . 8D85 A4F6FFFF

LEA

рабочий дамп, поэтому просто жмем в появив-

увидим поздравления и пароль, общий для

EAX,DWORD PTR SS:[EBP-95C]

шемся диалоге Dump и вводим имя файла. Те-

всех ников. Поздравляю, мы полностью

 

 

перь открываем файл в фаре по F3 или в

исследовали крэкмис.

После вызова функции по адресу 0040568A в

hiew'е и начинаем искать в нем 10-символьные

 

регистре eax мы получаем адрес на $code, то

строки среди функций. Листать долго не при-

[итоги] Все вычисленные данные нужно

есть на функцию, которую нужно вызывать.

дется: Picture1 lblPass

lblText òNí3Ùf?<¬+

было ввести на сайте www.padonak.ru, чтобы

Еще одна уязвимость данного крэкми состоит

ê `LÓtxtName txtPass FormUnload Decode + \.

зарегистрировать прохождение конкурса.

в обратимом алгоритме шифровки. Если в ка-

Среди всего этого мусора мне приглянулась

Первым задание выполнил dMNt, вто-

честве пароля ввести имя функции, то в eax

функция FormUnload.

 

рымстал чувак с забавным ником «aaa bbb»,

уже будет адрес на пароль. То есть наша зада-

Попробуем ее ввести в качестве пароля.

замыкает тройку Shiner.

ча определить имя функции длиной 10 симво-

Теперь после вызова кода

В этом месяце тебя опять ожидает кое-что

лов, которую нужно вызывать, затем ввести ее

0040568A . E8 65BCFFFF

CALL

новенькое и очень интересное. Тебе предстоит

вместо пароля, и по адресу 0040568F получить

поломать полноценный юниксовый сервер.

пароль на наше имя. Так как программа запа-

CrackMe.004012F4

 

Как ты это сделаешь — мне лично все равно,

кована, то чтобы в ней рыться, нам нужно сде-

 

 

полное описание задания и цель атаки ищи

лать ее дамп. Для этого в Olly жмем правой

в регистре eax будет адрес на строку «@jwkQjmmdb».

íà www.padonak.ru. Удачи

 

 

 

 

 

ВЗЛОМ 075]

XÀÊÅÐ 10 [82] 05 >

[

 

 

 

 

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

 

 

 

 

 

-xcha

 

 

 

 

FERRUM

PC_ZONE

ИМПЛАНТ

 

 

 

 

Сверлим чат MTV

 

 

 

 

[ВЗЛОМ]

 

 

 

ИЗ НАШИХ СТАТЕЙ НЕСЛОЖНО УЯСНИТЬ: ИСПОЛЬЗОВА-

 

НИЕ БЕСПЛАТНЫХ WEB-СКРИПТОВ ЧРЕВАТО ПРОБЛЕМА-

 

МИ С БЕЗОПАСНОСТЬЮ САЙТА. МОЖЕТ БЫТЬ, ПОЭТОМУ

 

СЕРЬЕЗНЫЕ ОРГАНИЗАЦИИ ПРЕДПОЧИТАЮТ ПОЙТИ К

 

НАСТОЯЩИМ ПРОФЕССИОНАЛАМ И ЗАКАЗАТЬ КАЧЕСТ-

 

ВЕННЫЙ, А ГЛАВНОЕ, УНИКАЛЬНЫЙ ДВИЖОК ДЛЯ СВОЕ-

СЦЕНА

 

 

 

UNIXOID

Получение административных

привилегий в чате MTV

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ГО ПРОЕКТА. ОДНАКО И ЭТО ЕЩЕ НЕ ГАРАНТИРУЕТ ОТСУТСТВИЕ СЕТЕВЫХ ПРОБЛЕМ. НЕДАВНО ВОТ МЫ НАШЛИ ЧЕЛОВЕКА, КОТОРЫЙ СОГЛАСИЛСЯ РАССКАЗАТЬ

О ТОМ, КАК ОН ПОЛОМАЛ ПОПУЛЯРНЫЙ ЧАТ MTV, СДЕЛАННЫЙ, К СЛОВУ, ПЕРЦАМИ ИЗ ACTIS.RU. КАК ВИДИШЬ,

БАГИ ЕСТЬ НЕ ТОЛЬКО В PHPBB | F-22 (http://runtime-studio.nm.ru)

www.mtv.ru/newchat/chat.js —

адрес сценария с описанием всех клиентских функций чата MTV. http://runtime-studio.nm.ru/chat.mtv.admin.hta —

адрес hta-приложения для администрирования чата.

КОДИНГ

КРЕАТИФФ

ЮНИТЫ

[о чатах] Вообще-то я терпеть не могу эти web-чаты — настоящий отстой. Но однажды так случилось, что мне пришлось зайти на чат MTV и он оказался наименее отвратительным из всех, что я видел. Во всяком случае, с технической стороны. Во многих аналогичных системах список ников, страница с сообщениями и все остальные динамические части просто тупо перегружаются каждые n секунд. Это все приводит к большому расходу трафика и, вообще, крайне нерационально. Интересно, так ли работает чат MTV? Сейчас узнаем. Открыв html-код страницы с чатом, я принялся изучать его, а также все документы, на которые он ссылался.

Первым делом в глаза бросился блок javascript, состоящий из нескольких вызовов функции addUser, каждая, как легко понять из названия, дописывала ник пользователя в общий список. Таким образом, для добавления нового пользователя нужно было всего лишь один раз вызвать эту функцию и передать ей соответствующие параметры, а не перегружать всю страницу целиком. Вызов функции осуществлялся из невидимого фрейма (у которого height="0") и выглядел следующим образом:

[так формируется список активных ников]

<SCRIPT LANGUAGE="javascript"> top.addUser('6e6a4778-b513-4bb2-98f8-781f7f4aef07', 'D`Avol', false); top.addUser('bf577c30-38ff-45e8-b19d-07d35feca6d4', 'Inferno_777', false); top.addUser('f66ac96f-1fd7-4681-94fe-8df429210cfb', 'jogurt_LP', false);

Как можно заметить, функция addUser принимала сразу три параметра: какой-то длинный идентификатор, ник и логическую переменную, которая могла принимать два значения: true или false. Так сходу разобраться, что и к чему в этом чате, не представлялось возможным, поэтому я общеизвестным способом сохранил себе на жесткий диск страницу с чатом и все клиентские скрипты, после чего принялся изучать структуру и работу чата.

[о чате в целом] Чат Mtv состоит из четырех основных серверных aspx-приложений и трех js-файлов со скриптами. Что касается клиентских сценариев, нас будет интересовать только файл chat.js, где собраны все ключевые функции системы. В остальных сценариях производится проверка установленных на компьютере плагинов и возможностей браузера, нам это совершенно не интересно.

Что же касается серверных приложений, то здесь структура следующая: 1 Сценарий speech.aspx отвечает за отображение сообщений в чате 2 list.aspx отображает актуальный список ников

3 input.aspx отвечает за вход/выход пользователей, показывает форму аутентификации и осуществляет отправку сообщений

4work.aspx — основной сценарий, который осуществляет управление чатом.

Общая схема их совместного функционирования приведена на рис. 2. Когда клиент подключается к системе, серверные сценарии speech.aspx и list.aspx выбирают из своих баз данных последние сообщения и актуальный список ников, после чего формируют соответствующие html-

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

страницы и отсылают их пользователю. После этого все функциониро-

input.aspx. Далее work.aspx периодически, или принудительно после

вание чата уже происходит благодаря сценарию work.aspx, вывод кото-

отправки сообщения, дописывает новые данные во фреймы со стра-

рого обновляется каждые 15 секунд и содержит в себе динамически

ницами list.aspx и speech.aspx. Содержимое его команд выглядит при-

формируемый список javascript-команд, которые влияют на содержи-

мерно следующим образом:

мое остальных страниц. Страница input.aspx содержит формы для вхо-

 

 

да, выхода и отсылки сообщения в чат. Все это безобразие разброса-

 

Действия, описанные в этой статье, хоть и не несут, по большому

но по четырем фреймам. Формы из input.aspx отсылаются во фрейм

 

счету, ничего плохого, но все же попадают по УК РФ. Так что не стоит

с work.aspx, передавая ему методом POST соответствующие парамет-

 

повторять моих опытов.

ры. В свою очередь, work.aspx возвращает страницу с набором

 

 

javascript-команд, которые приписывают пользователю cookie с его

 

На нашем диске ты найдешь программу InetCrack, которая позволит

session_id для последующей идентификации, и обновляют форму

 

тебе «на лету» менять отправляемые web-серверу заголовки.

 

 

 

LIST.ASPX

ПОЛЬЗОВАТЕЛИ

SPEECH.ASPX

СООБЩЕНИЯ

CHAT.ASPX

СВЯЗУЮЩАЯ

СТРАНИЦА

ðèñ. 2: общая схема работы чата mtv

INPUT.ASPX

WORK.ASPX

ВВОД ДАННЫХ

УПРАВЛЕНИЕ

ВЗЛОМ 077]

XÀÊÅÐ 10 [82] 05 >

[

ðèñ. 3: список ников так, как его видит админ

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

www.mtv.ru/

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ВЗЛОМ 078]

[XÀÊÅÐ 10 [82] 05 >

[макет того, что подгружается в work.aspx]

<script>

top.addMessage('co', '<DIV><TR><TD CLASS=\"username\">INTEL</TD><TD>Анастасия БЕННИНГТОН, хай</TD></TR></DIV>');

top.addMessage('co', '<DIV><TR><TD CLASS=\"username\">Gosha89</TD><TD>Привет ЕСТЬ тут девчонки из Питера?</TD></TR></DIV>'); top.addUser('6e6a4778-b513-4bb2-98f8-781f7f4aef07', 'D`Avol', false); top.removeOldMessages(250);

//è ò.ä. </script>

Описание вызываемых из work.aspx функций содержится в файле chat.js.

[о скрытых полях] В стандарте HTML 4 есть такая интересная фишка, как таблицы стилей (CSS). Наверняка любой, кто сидел в Интернете и пытался сам создавать web-странички, слышал о такой штуке. CSS имеет три версии, которые называются «уровнями» (levels), причем каждая, более старшая версия, является надмножеством предыдущих. С момента вступления в действие стандарта CSS Level 2 уже прошло достаточно много времени, поэтому на сегодняшний день именно он считается основным и поддерживается всеми современными браузерами. Среди огромного числа предоставляемых возможностей нас сегодня будет интересовать только одна — поддержка «скрытых» полей. Это блоки html-кода или сплошного текста, которые загружаются в браузер вместе с основной html-страни- цей, однако в браузере они не отображаются, как будто их нет. Содержание «скрытых» полей можно увидеть, если просмотреть HTML-код страницы.

К примеру, чтобы сделать содержание какого-либо тэга скрытым, ему в параметр style надо добавить строчку display: none, то есть если у нас есть фрагмент <h1>бла бла бла</h1>, то, чтобы сделать его скрытым, надо написать <h1 style="display:none">бла бла бла</h1>. Помимо того, что скрывать поле можно присвоением соответствующего значения параметру style, на видимость элемента можно влиять и динами- чески из javascript. Обращаясь к какому-либо идентифицированному элементу web-страницы (у которого есть параметр id), в Internet Explorer можно использовать свойство display объекта style. Чтобы было проще

разобраться, приведу простой пример:

community/

chat/chat.wbp

ðèñ. 1: внешний вид чата MTV

[скрываем html-элемент из javascript]

<h1 id=bla>áëà áëà áëà</h1> <script language=javascript>

document.getElementById("bla").style.display = 'none'; // скрыли document.getElementById("bla").style.display = 'block'; // показали

</script>

Значение block работает не во всех браузерах, поэтому иногда вместо него пишут inline. Возможность иметь на странице скрытые поля появилась относительно давно, и все современные браузеры поддерживают эту спецификацию (имеется ввиду IE > 5.0, Opera > 5.0, Firefox 1.x и так далее). Используются они, в основном, для сокрытия от глаз пользователя ненужной информации, той, которая, например, предназначена для поисковых систем. Однако разработчики чата Mtv решили использовать «скрытые» поля совсем для других целей…

[интересное в chat.js] Как я уже отмечал выше, файл chat.js содержит в себе набор функций, которые реализуют все управление клиентской частью чата: например, добавляют сообщения в основной фрейм, и дописывают ники новых пользователей в общий список. Меня особенно интересовала именно эта функция. Выглядит она следующим образом:

[функция добавления нового пользователя чата]

function addUser(id, name, isAdmin)

{

removeUser(id);

var currFrame = top.frames['co_list'];

var listDiv = currFrame.document.getElementById('userList'); …//skipped

var img = infoArea.appendChild(currFrame.document.createElement('IMG'));

img.src = 'i/' + (isAdmin ? 'info-admin.gif' : 'info-user.gif'); img.width = 13;

img.height = 9; img.border = 0; img.align = 'absmiddle'; img.alt = 'Info';

Просматривая код функции дальше, я натолкнулся на еще более интересный участок кода:

[интересный участок кода]

var adminArea = newUserDiv.appendChild(currFrame.document.createElement('SPAN')); adminArea.className = 'block';

adminArea.style.display = bIsAdmin ? 'inline' : 'none'; //эта строка интереснее всего

eval('adminArea.onclick = function() { openAdminInteface(\'' + id + '\'); return false; }');

На самом деле, не нужно глубоко вникать в объектную модель системы, чтобы понять: в зависимости от переменной bIsAdmin (true или false) у объекта adminArea меняется свойство display (inline или none, то есть показать или скрыть). Совершенно понятно, что изучаемый сценарий также управлялся снаружи серверным приложением, которое передавало переменную

Соседние файлы в папке журнал хакер