Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
16.11 Mб
Скачать
Производительещеникакне отреагировалнасообщениеодыре икогдапоявится«лекарство»ввиде заплатки—неизвестно.Особоозабо- ченныепроблемоймогутпропатчить кодibserver.exe,воткнувтуда несколькомашинныхкоманддлявыполненияпроверкиграницбуфера.
Python
03удаленное переполне ниебуфера
вбиблиотекеzlib
>>Brief
Хакер Justin Ferguson из IOActive Security Advisory 9 апреля этого года обнародовал обнаруженную им дыру в популярной библиотеке
>>Solution
Нижеприведенисходныйкод proof-of-conceptexploit’а,пере-
дающийуправлениенаshell-код. Егоможноскачатьпоадресу: www.securityfocus.com/data/ vulnerabilities/exploits/28730.pl.
>>Exploit
>>Targets:
zlib. Библиотека входит в штатный комплект поставки языка Python, приобретающего с каждым днем все большую и большую распространенность, и потому угроза вполне актуальна. «Сидит» ошиб-
ка в функции PyZlib_unflush,
реализованной в файле Python- 2.5.2/Modules/zlibmodule.c.
Функция выполняет сброс (flush) указанного количества байт, заданного знаковым аргументом (всегда трактуемым как положительное целое без проверки на отрицательное значение; передача которого функции выделения памяти приводит к резервированию одного байта буферной памяти). А
вот функция копирования данных в буфер после преобразования отрицательного знакового аргумента
нетlibc,вместоэтоготамKERNEL32. в беззнаковое получает очень DLL,носутиэтонеменяет.Насисбольшое число, соответствующее темахсрандомизациейадресного нескольким гигабайтам памяти. пространства(Висла/Server2008) Естественно, это приводит к пере- передатьуправлениенаshell-код, полнению кучи. Дыра объявлена скореевсего,неудастся,ижертва удаленной, хотя на самом деле получиткрах,ведущийкостановке она локальная. Момент требует сервиса«InterBaseibserver». пояснений. Да, действительно,
дыра локальна по своей природе и, чтобы добиться переполнения,
УязвимостьподтвержденавBorland необходимо вызывать функцию
Interbase2007SP2(ibserver.exe flush(). Это можно сделать, только version 8.0.0.123).Остальные если запускать Python-программы версиинепроверялись,но,возможна целевой машине, для чего там но,онитакжеуязвимы. должен быть установлен интер-
претатор языка, а хакеру — предоставлен shell с возможностью выполнения Python-программ. Но даже при таком оптимистичном раскладе злоумышленник не сможет завалить операционную систему, а только запущенный экземпляр интерпретатора. Или (в идеале) захватить управление системой без превышения уровня

 

 

 

 

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

 

 

 

 

Репрозиторийспофиксеннойzlib

отсечения подложных DNS-от- ветов.

02Borland InterBases

удален ноепереполнение буфера

>> Brief

11 апреля 2008 года была обнародована информация о дыре в популярномсерверебазданныхBorland InterBase,подверженномугрозе удаленногопереполнениябуферас захватомуправления.Ошибкуобна-

ружилсотрудникOracleCorporation,

довольноизвестный(вузкихкругах) специалистпобезопасностиZhen HuaLiu,живущийвсвоейнорена побережьеRedwood’а.Исследуя дизассемблерныевнутренности файлаibserver.exe,онобратил вниманиенаотсутствиепроверки длиныпереданныхпользователем данныхпередихкопированиемв локальныйбуфер.Этоподтверждает код,снабженныйкомментариями (ищиегонаDVD).

Мыимеемделосклассическим стековымпереполнением(буферприемникнаходитсявстеке),со всемивытекающими.Насистемах сисполняемымстекоммызапросто можемподменитьадресвозврата изфункции,передавуправлениена shell-код.Насистемахснеиспол-

няемымстеком—XPSP2/ServerSP1

ивышеприналичииаппаратной поддержкисостороныЦП—приак- тивномDEP’емыможемреализовать атакутипаreturn2libc(поумолчанию DEPзащищаеттолькосистемные компоненты).Название,кстати, пришлоизмираUNIX,вWindows

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

>> взлом to BUY

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

имеющихся у него привилегий. А оно ему надо? Так что атака носит сугубо лабораторный характер.

Лишь в тех немногих случаях, когда интерпретатор Python’а запускается на более высоком уровне привилегий, хакер может поиметь с этого какую-то выгоду.

Подробности на www.securityfocus. com/bid/28715.

>>Targets

ДыраподтвержденавPythonверсии2.5.2,остальныеверсиитакже могутбытьуязвимы.

>>Exploit

Исходныйтекстproof-of-concept exploit’алежитнаwww.securityfocus. com/data/vulnerabilities/exploits/ 28715.py,анижеприведенегоключевойфрагмент:

Ключевойфрагмент proof-of-conceptexploit’а

compMsg = zlib.compress(msg)

bad = -24 decompObj =

zlib.decompressobj()

decompObj.decompress

(compMsg)

decompObj.flush(bad)

>>Solution

Разработчикиисправилиошибку,но покатольконаSVN-репрозитории

(bugs.python.org/issue2586).Ждем-с

выходаочереднойстабильной версии.

04Adobe Flash Player

удаленноеперепол нениебуфера

Платите$1450иполучайтестатусCANVASProfessionalсполнымдоступомк исходномукодусотенexploit’ов!

xàêåð 05 /113/ 08

049

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> взлом

 

 

 

 

 

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

 

 

 

 

СтруктураSWF-файла

>>Brief

9 апреля 2008 года Mark Dowd из исследовательского подразделения ISS X-Force, входящего в состав корпорации IBM, совместно с хакером wushi из группы team509 обнаружили и опубликовали дыру в Adobe Flash Player, работающем под управлением операционной системы Linux. Для реализации атаки достаточно «скормить»

жертве специальным образом сконструированный swf-файл (скажем, заманив на web-страничку или послав файл почтой). Главное, чтобы Adobe Flash Player был установлен! Ошибка носит системно-незави- симый характер, хотя, с учетом различий реализаций под Windows и Linux, для каждой конкретной платформы требуется свой swf-файл

с умышленно искаженным полем DefineSceneAndFrameLabelData. SceneCount, содержащим количество «сцен», которые необходимо считать из файла. SceneCount представляет собой двойное знаковое слово, но проверка на отрицательное значение не выполняется, и хакер получает возможность модифицировать любую (ну, или практически любую) ячейку адресного пространства внутри процесса. Это открывает широкие горизонты для атак, особенно с учетом того, что Adobe Flash Player не использует возможности рандомизации адресного пространства, предоставляемые Вистой и некоторыми версиями Linux’а. Для захвата управления машиной (с привилегиями Flash Player’а) было бы достаточно перезаписать указатель на функцию или подменить адрес возврата, но Mark Dowd пошел намного более крутым и радикальным путем, атаковав виртуальную flash-машину, интерпретирующую байт-код и известную под именем ActionScript Virtual Machine (или, сокращенно, AVM). Достоинство такого подхода, во-первых, в его новизне, а, во-вторых, в системной независимости. Байт-код виртуальной машины не привязан к конкретной платформе, и потому однажды сконструированный exploit не нужно переписывать под всю процессорную линейку, на которой только реализован

Adobe Flash Player: x86, x86-64, PPC, etc. Подробнее об этом можно прочитать в статье Mark’а Dowd’а — «Application-Specific Attacks: Leveraging the ActionScript Virtual Machine», доступной всем же-

лающим: documents.iss.net/whitepapers/IBM_X-Force_WP_final.pdf. Также рекомендуется посетить Security Focus: www.securityfocus. com/bid/28695.

>>Targets

AdobeFlashPlayer8.0.34.0/8.0.35.0/9/9.0.115.0/9.0.28.0/9.0.31.0/9.0.45.0/ 9.0.47.0/9.0.48.0(дистрибутивыRedHatEnterpriseLinuxDesktop/RedHat EnterpriseLinuxExtras/RedHatEnterpriseLinuxSupplementaryserver/ S.u.S.E.Linux10.1ppc/S.u.S.E.Linux10.1x86/S.u.S.E.Linux10.1x86-64/ S.u.S.E.NovellLinuxDesktop9/S.u.S.E.openSUSE10.2/S.u.S.E.openSUSE 10.3идругие).

>>Exploit

Proof-of-conceptexploitдоступентолькоподписчикам«ImmunityCANVAS EarlyUpdateProgram».Членствообойдетсяв$1450на3месяца(продление стоит$730вквартал).Подробности:www.immunityinc.com/products-canvas. shtml.

>>Solution

Производитель уже выпустил Flash Player 9.0.124.0, свободный от ошибки переполнения, а для старых версий доступно бесплатное обновление, выложенное на www.adobe.com/support/security/bulletins/ apsb08-11.html. Однако, ни новая версия, ни обновление не исправляют всех ошибок. Проверка поля SceneCount на отрицательное значение появилась (какое огромное достижение, вах!), но дефекты виртуальной AVM-машины как были, так и остались. По-прежнему возможен обход верификатора байт-кода и прочие трюки, которым планируется посвятить отдельную статью. В этом обзоре (в связи с ограничениями по объему) мы рассмотрим непосредственно саму ошибку знакового переполнения.

Fulldisclose

Для анализа дыры в Flash-player’е, помимо самого плеера (который уже наверняка установлен в системе), нам понадобится спецификация на SWF/FLV-файлы, последнюю редакцию которой (на момент написания этих строк — 9’ю), можно скачать с сервера фирмы

Macromedia: download.macromedia.com/pub/flash/licensing/file_ format_specification_v9.pdf.

Осторожно!Припервомоткрытииpdf-файлаэтасволочьлезетвСеть,пере- даваянашиданныеизапрашиваясертификат.Длясохраненияинкогнито рекомендуетсявоспользоватьсябрандмауэром.Спустякакое-товремя AdobeAcrobatReaderсменитгневнамилостьиотобразитсодержимоеспе- цификации,предварительно«выплюнув»наэкранпротивныйNAG-Screen стекстомлицензионногосоглашенияистандартнымикнопочками«Agree» (Принять)и«Disagree»(Послатьна:)).

Структура SWF-файлов состоит из последовательности различных объектов: фигур, звуков, шрифтов, текста, etc. Все они обрабатываются вполне корректно (дефектов реализации нет или таковые еще не найдены). Но вот структура DefineSceneAndFrameLabelData,

описывающая сцену (Scene), подвержена целочисленному знаковому переполнению.

РассмотримструктуруDefineSceneAndFrameLabelDataболеепод-

робно.Каквидно,онавключаетвсебямассивсценScenes.Ихколичество задановпеременнойSceneCountтипаunsigned int32(беззнаковое двойноеслово),котораялежитрядомсмассивом.

ТеговаяструктураDefineSceneAndFrameLabelData (tagID0x56),подверженнаяцелочисленномузнаковому переполнению

// вспомогательные структуры

SceneData

{

UI32 FrameOffset

String SceneName

}

FrameData

{

UI32 FrameNumber

String FrameLabel

050

xàêåð 05 /113/ 08

 

 

 

 

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

>> взлом to BUY

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

; обламывается, если SC < 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.text:30087A72

push eax

 

 

 

 

 

 

 

 

 

; EAX := 0, если SC < 0

 

 

 

 

 

 

 

 

 

.text:30087A73

mov ecx, esi

 

 

 

 

 

 

 

 

 

.text:30087A75

call sub_3004A766

 

 

 

 

 

 

 

 

 

; делает разные неинтересные дела

 

 

 

 

 

 

 

 

 

.text:30087A7A

and [ebp+arg_0], 0

 

 

 

 

 

 

 

 

 

.text:30087A7E

cmp dword ptr [esi+4], 0

 

 

 

 

 

 

 

 

 

.text:30087A82

jle short loc_30087AFA

 

 

 

 

 

 

 

 

 

; всегда выполняется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сначала переменная SceneCount сравнивается с количеством байт,

 

 

 

 

 

 

 

 

оставшихся до конца swf-файла. Сравнение осуществляется при

 

 

 

 

 

 

 

 

помощи машинной команды JG, интерпретирующей SceneCount как

 

 

 

 

 

 

 

 

знаковую переменную. Если SceneCount < 0, эта проверка завер-

 

 

 

 

 

 

 

 

шится успешно (для хакеров), поскольку всякое отрицательное число

 

 

 

 

 

 

 

 

больше любого положительного количества байт, отличного от нуля;

 

 

 

 

 

 

 

 

проверка на нулевое значение SceneCount также выполняется.

 

 

 

 

 

 

 

 

Какие, однако, аккуратные программисты! Целых две проверки, и все

 

 

 

 

 

 

 

 

не в тему!

 

 

 

 

 

 

 

 

Адальше...SceneCountпередаетсяфункциивыделенияпамятиmem_

 

Лицензионноесоглашение,всплывающееприпопыткеоткрытияpdf-

 

 

файла

 

 

 

 

 

Calloc(),интерпретирующейеекакбеззнаковуюпеременную.Поскольку

 

 

 

 

 

 

 

 

знаковыйбит—самыйстаршийбитчисла,мызапрашиваемуфункции

 

 

 

 

 

 

 

 

mem_Calloc(),какминимум,2Гбпамяти.Последние,естественно,не

 

}

 

 

 

 

 

 

выделяются,нопроверканауспешностьвыделенияотсутствует,таккак

 

 

 

 

 

 

 

 

программистыпосвоейнаивностиполагают,чтопамять—ресурснеисчер-

 

// теговая структура

 

 

 

 

паемый.Онизаблуждаются,ивнашемслучаеmem_Calloc() возвращает

 

DefineSceneAndFrameLabelData

 

 

 

ноль.Остаетсятолькоразобраться,чтоделаетпрограммасполученным

 

{

 

 

 

 

 

 

указателем.Аделаетонаснимследующее(длякраткостидизассемблер-

 

 

RecordHeader Header

 

 

 

ныйлистингпереведенвпсевдокод):

 

 

UI32 SceneCount

 

 

 

 

 

 

 

 

 

 

SceneData Scenes[SceneCount]

 

 

 

Псевдокодфункции,позволяющейхакеруперезаписывать

 

 

 

UI32 FrameCount

 

 

 

 

любуюячейкупамяти

 

 

 

FrameData Frames[FrameCount]

 

 

 

.text:30087AFA

mov eax, [esi+4]

 

 

}

 

 

 

 

 

 

 

; SceneCount

 

 

 

 

 

 

 

 

 

.text:30087AFD

mov ecx, [esi]

 

 

Теперьзагрузимflash-playerвдизассемблерипосмотримнакод,обраба-

 

 

 

 

 

; returned pointer

 

 

тывающийпеременнуюSceneCountвместесмассивомScenes:

 

.text:30087AFF

lea eax, [eax+eax*2]

 

 

 

 

 

 

 

 

 

 

; EAX := EAX*3

 

 

ДизассемблерныйфрагментFlashPlayer’а,вкотором

 

.text:30087B02

lea eax, [ecx+eax*4]

 

 

происходитпереполнение

 

 

 

 

 

; EAX := EAX*4 + pointer

 

 

 

 

 

 

 

 

 

 

 

 

.text:30087A42

call SWF_GetEncodedInteger

 

.text:30087B05

mov ecx, [ebp+arg_8]

 

 

 

; получить Scene Count

 

 

 

 

; ECX := FrameCounter (или FC)

 

 

.text:30087A47

mov edi, [ebp+arg_0]

 

.text:30087B08

sub ecx, [eax-0Ch]

 

 

.text:30087A4A

mov [esi+4], eax

 

 

 

 

; ECX := FC-*((SC-1)*12+pointer)

 

 

 

; EAX := Scene Count

 

 

 

.text:30087B0B

mov [eax-4], ecx

 

 

.text:30087A4D

mov ecx, [ebx+8]

 

 

 

 

; *(SC*12+pointer-4) = ECX

 

 

 

; ECX — размер swf-файла

 

 

 

 

 

 

 

 

 

 

 

Посколькуpointer,возвращенныйфункциейmem_Calloc(),унасравен

 

.text:30087A50

sub ecx, [ebx+4]

 

 

 

 

 

; ECX — кол-во байт до конца файла

 

 

 

нулю,мыполучаемследующийпсевдокод: *(SсeneCount*12-4) =

 

.text:30087A53

cmp eax, ecx

 

 

 

FrameCount-*((SceneCount-1)*12).Еслипомнить,чтопеременные

 

 

; ?(Scene Count > ECX)

 

 

 

SceneCountиFrameCountпредставляютсобойдвойныеслова,полностью

 

.text:30087A55

jg loc_30087BB4

 

 

 

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

 

 

; <- не выполняется, если SC < 0

 

 

 

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

 

.text:30087A5B

test eax, eax

 

 

 

гаемыхданнойформулой.Какихименно?

 

 

; проверка на нуль

 

 

 

Путемнесложныхпреобразованийполучаем: (0x80000000 |

 

.text:30087A5D

jz loc_30087B0E

 

 

 

((address + 4)/12)),тоестьможномодифицироватьтолькотеадреса,

 

 

; <- не выполняется, если SC < 0

 

 

 

которыепоследобавлениякнимчетырехбайтделятсяна12безостатка.Не

 

.text:30087A63

mov ecx, [edi+20h]

 

такоеужижестокоеограничение!Вподвластнойнамобластипамятибез

 

.text:30087A66

push 3

 

 

 

трудаможноотыскатькучуинтересныхуказателейнафункции(напри-

 

.text:30087A68

push 3

 

 

 

мер,адресоввозврата).Самособой,речьидеттолькоомодификациитех

 

.text:30087A6A

push 0Ch

 

 

 

областей,чтодоступыназапись—этостек,куча,секцияданных,атакже

 

 

; nCount

 

 

 

 

некоторыеслужебныеструктурыоперационнойсистемы,расположенные

 

.text:30087A6C

push eax

; nSize

 

внижнейполовинеадресногопространства.Короче,главноефантазию

 

.text:30087A6D

call mem_Calloc

 

 

 

иметь,азареализациейатакиделонестанет!z

 

 

 

 

 

 

 

 

 

 

051

 

 

xàêåð 05 /113/ 08

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> взлом

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

sh2kerr

Login:

Login:

 

Pasword:

Pasword:

 

Login:

Pasword:

Login:

Pasword:

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Запароленная

власть

Щелкаем пароли от Oracle, как орешки

Если ты читал наши предыдущие статьи, ты уже имеешь представление, как удаленно порутать Oracle. Считай, что доступ к базе мы получили,

но что дальше? Как поднять свои права? И что можно получить, имея доступ

ксистемным таблицам? Слушай сюда, сейчас расскажу.

евсегдадоступкбазеданныхмыполучаемсправамиадминиКакизвестно,многиеадминызачастуюимеютодинаковыепаролина

Нстратора(DBA).Бываютситуации,когдалокальныхэксплоитов, доступкразличнымсерверамиприложениям.Тогдачтожемешаетрас-

повышающихпривилегиидоролиDBA,нет,аудаленнопароль ксистемномупользователюнеспешитподбираться.Или,предположим,тыполучилправаадминистраторавСУБД,нонезнаешьегопароль,

аузнатьоченьхочется,таккакон,вероятно,можетподойтинаssh-доступк серверуиликдругимСУБДвкомпании.Чтоделатьвтакихслучаях?Первое, чтоприходитнаум—получитьдоступкхэшампаролейипопытатьсяихрас- шифровать. Рассмотрим,вкакихситуацияхнаммогутпомочьхэшипаролей.

1.Одинизсамыхраспространенныхвариантов—получениедоступакбазе данныхчерезSQL-инъекциювWEB-приложение,котороеиспользуетэту СУБД.Естьвероятность,чтопользователь,отименикоторогоидутзапросы кСУБД,имеетдоступначтениетаблицыспаролями.

2.Возможенслучай удаленногополучениядоступакконсолиСУБДпользователем, укоторогопоумолчаниюестьдоступначтениетаблицысхэшами паролей(праваSELECTANYDICTIONARY),нонетролиDBA.Темсамым,расшифровавпароль,мыполучимправаDBAвбазеданных,атакжесможем попытатьсяиспользоватьподобранныйпарольнадругиесервисы.

3.Доступкхэшампаролейможнополучить,найдяуязвимостькласса PL/SQLInjectionвфункцииилипроцедуре,котораяисполняетсяотимени пользователясправамиSELECTANYDICTIONARY,позволяющимичитать системныетаблицы.Однаизтакихуязвимостейбыланайденамной,иэкс-

плоиткнейможноотыскатьпоадресуhttp://milw0rm.com/exploits/4995.

шифроватьпарольадминистратораСУБДOracle,темболее,чтоэтобывает намногопроще,чемрасшифровыватьпарольнаоперационнуюсистему?

Хранение паролей

СегоднямыизучималгоритмхраненияпаролейвСУБДOracleинаучимся ломатьэтипароли.Сначаларассмотримстарыйалгоритм.ВСУБДOracle до11версиипаролипользователейхранятсявтаблицеdba_users.На делеонихранятсявсистемной таблицеSYS.USER$,атаблицаDBA_USERS

—лишьпредставление(VIEW)длявышеуказаннойсистемнойтаблицы,но этиособенностинекритичны.Итак,унасестьдоступктаблицеDBA_USERS. Чтобыдостатьизнеепароли,можновоспользоватьсянесложнымзапросом:

SQL> select username, password from DBA_USERS;

Какмывидимнарисунке,полеPasswordсодержитхэшпароля,состоящий из8байт.Чтожезаалгоритмиспользуетсядляхраненияпаролей?

Алгоритм шифрования паролей

АлгоритмшифрованияпаролейвСУБДOracleбылдопорыдовременинеизвестен,покавпубличныхисточникахнепоявиласьработа«Assessment oftheOraclePasswordHashingAlgorithm»авторовJoshuaWrightиCarlos

052

xàêåð 05 /113/ 08

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

P

 

 

 

 

 

 

 

 

i

 

D

 

 

 

 

 

 

 

Login:

 

 

 

 

 

 

 

 

r

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

to

BUY

Pasword:

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Login: Login:

Pasword: Pasword:

Login:

Pasword:

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

>> взломto BUY

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

g

 

 

 

 

 

 

 

df

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ВыборкапаролейизтаблицыDBA_USERS

 

 

 

 

 

Документ«AssessmentoftheOraclePasswordHashingAlgorithm»

Ci.Внейбылподробноописаналгоритмшифрованияпаро-

строке СУБД Oracle оказывается, что мы можем использовать

 

 

лейвOracle.Детальнаяинформацияпредоставленавстатье

далеко не все символы. Рассмотрим на примере.

 

 

поадресу:http://www.isg.rhul.ac.uk/~ccid/publications/

 

 

 

oracle_passwd.pdf.

SQL> create user test01 identified by abc123_

 

 

АлгоритмшифрованияпаролейвСУБДOracleбылзадей-

$#;

 

 

ствованчутьлинеспервыхверсийинеменялсявплотьдо

 

 

dvd

недавнейверсии11G.Самалгоритмоказалсянетакимужи

User created.

Надискеищивсе

сложным.Воткакработаетгенерацияхэша:

 

упомянутыевстатье

•  происходитконкатенацияименипользователяипароля

SQL> create user test02 identified by 123abc#_

программы,атакже

—еслиунасестьпользовательсименемSYSипаролем

$;

увесистыйдокументпо

test1,томыполучаемстрокуSYStest1;

create user test02 identified by 123abc#_$

организациикриптоал-

•  далеевсястрокапреобразовываетсяк верхнемурегистру,

*

горитмоввOracle.

имыполучаемSYSTEST1;

ERROR at line 1:

 

 

•  есливОСиспользуетсяоднобайтоваякодировка,токаж-

ORA-00988: missing or invalid password(s)

 

 

дыйсимволпреобразовывается вдвухбайтовый,заполнив

 

 

 

старшийбайтнулями(0x00);

 

 

 

•  получившаясястрока(дополненнаянулямидодлиныбло-

SQL> create user test02 identified by _123abc;

 

 

ка)шифруетсяалгоритмом DESврежимеCBCсфиксирован-

create user test02 identified by _123abc

 

 

нымключом,значениекоторого—0x0123456789ABCDEF;

*

 

 

•  полученнаястрокашифруетсяещеразспомощьюDES-

ERROR at line 1:

 

warning

CBC,ноиспользуяпоследнийблокпредыдущегошагакак

ORA-00911: invalid character

Внимание!Инфор-

ключшифрования.

 

мацияпредставлена

Теперьперечислимнедостаткиалгоритма,которыепомогут

SQL> create user test02 identified by

исключительнос

нампривзломе.

abc123^*;

цельюознакомления!

1.Вкачествесоли(salt)используетсяпредсказуемоезначе-

create user test02 identified by abc123^*

Ниавтор,ниредакция

ние,аименно—имяпользователя.Этодаетнамвозможность

*

затвоидействияответ-

использоватьпредварительносгенерированныетаблицыдля

ERROR at line 1:

ственностиненесет!

расчетапароля(rainbowtables),темсамымувеличивскорость

ORA-00922: missing or invalid option

 

 

переборапаролейвразы.

 

 

 

2.Исходный словарь символов, используемых для генерации

SQL> create user test02 identified by

 

 

пароля, первоначально составляет 256 символов. Так как

"^*abc?";

 

 

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

 

 

 

то алфавит сужается до 256-26=230 символов. На самом деле

User created.

 

 

символов еще меньше, так как операция UPPER()действует

 

 

 

Частьпаролей,которыемыпыталисьзадать,неподходит(вы-

 

 

не только для символов латинского алфавита. В итоге мы по-

 

 

лучаем алфавит из 164 символов, каждый из которых можно

даетсясообщение«ORA-00911: invalid character»).Из

 

 

использовать при генерации пароля (более подробно, откуда

всегоэтогоможносделатьпростыевыводы:

 

 

появилась эта цифра можно прочитать на форуме http://www.

1.Доступныевпаролесимволы—это латинскийалфавит(26),

 

 

petefinnigan.com/forum/yabb/YaBB.cgi?board=ora_sec;a

цифры(10)испецсимволы_,#,$(3),всего—39символов.

 

 

ction=display;num=1131556773). Но это все в теории, а на

2.Вкачествепервогосимволапаролямогутиспользоваться

 

 

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

толькобуквы.

 

 

xàêåð 05 /113/ 08

053

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

P D

 

 

 

 

 

 

 

 

i

 

Login:

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> взломPasword:

 

 

 

 

 

 

 

 

 

m

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

Login:

 

Login:

 

Login:

Pasword:

 

Pasword:

 

Pasword:

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

Сравнениескоростейпереборапаролейразнымипрограммами

 

Запускorabfиwoorabfнаcore2duo2.4ГГц

 

 

 

 

 

 

 

 

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

Тутсуществуетдваспособа.Первый—сгенерироватьтаблицысамому,

 

парольвдвойныекавычки,какпоказановпоследнемпримере(ноэтой

второй—скачатьвСети.Плюсывторогоспособаочевидны:ненадотратить

 

возможностьюнапрактикепользуютсяредко).

времянагенерациютаблиц,чтоможетзанятьгодынасреднестатистиче-

 

 

 

 

скомкомпьютере.Хотяминусытожеесть—неувсехинтернетпозволяет

 

 

Собственно, подбор

выкачать30-60Гбтаблиц.Преимуществогенерациисвоихтаблицнасамом

 

 

 

 

 

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

делетолькоодно—тысможешьиспользоватьнеобходимыйтебенабор

 

зона39символов,задачаподборасущественноупрощается.Теоретически

символовипараметрытаблицы.

 

паролейиз8символовможетбыть26*39^7=3.6*10^12комбинаций.

 

 

 

Еслипосмотретьсравнениескоростейпереборапаролей(http://www.

Oracle Rainbow Tables

 

red-database-security.com/whitepaper/oracle_passwords.html),можно

ЧтокасаетсяrainbowтаблицдляСУБДOracle,ятакиненашелихвинтер-

 

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

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

 

миллионпаролейвсекундунасреднемкомпьютере(наcore2duo2.4ГГц

быложеланиесгенерировать ихсамому.Генерироватьярешил,используя

 

удалосьдобитьсямаксимальнойскоростиперебора—1.6млнпаролей

программуwinrtgen,входящуювсоставнебезызвестногоcain&abel.Выбор

 

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

палнанее,потомукаквнейвсепростоиудобно.

 

многоядерныепроцессоры).

Дляначаларазберемсяспараметрами.Ихнемного:

 

Получается, чтобы перебрать 8 символьный пароль на стандартном

Hash—алгоритмгенерациихэшфункции.Вданномслучае—oracle.

 

рабочем компьютере, нам понадобится около 40 дней. И то — если пере-

MinLen—минимальнаядлинапароля,обычно0.

 

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

MaxLen—максимальнаядлинапароля;возьмемдляначала7.

 

и вовсе понадобится два месяца. Не слишком утешающие цифры, тем

Index—идентификатордлягруппытаблиц(таблицысразныминдексом

 

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

содержатразныеданные).Покаоставимкакесть.

 

пользователя — ведь для генерации хэша используется соль (salt). Ну а

ChainLen—длинацепочки.Повышениедлиныотрицательновлияетна

 

если пароль состоит из 9 символов, то тут счет будет вестись уже на года.

времягенерациитаблицыивремякриптоанализа,затоповышаетвероят-

 

Но отчаиваться не стоит, всегда найдутся методы, позволяющие получить

ностьподбора.Нежелательновыставлятьболее20000.Оставимпока2400.

 

результат быстрее.

ChainCount—грубоговоря,размертаблицынадиске.Еслиоперативной

 

 

 

 

памятибольше1Гб,товыставляется67018864,таккакприрасшифровке

 

 

Rainbow Tables

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

 

ПригенерациихэшапаролявСУБДOracleиспользуетсядополнительный

поместиласьцеликом.Обычнобольше1Гбтаблицынеделают.Дляначала

 

параметр(salt),который,теоретически,долженпредотвращатьатаки

оставимзначениепоумолчанию.

 

посредствомсозданиязаранеесгенерированныхтаблицдлябыстрого

NofTables—количествотаблиц.Соответственно,чембольшетаблиц,тем

 

переборапаролей(rainbowtables).Норазсоль(salt)намизвестназаранее

большевероятностьперебора,ноихдольшегенерироватьинеобходимо

 

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

иметьдостаточноместадляиххранения.Поумолчанию—однатаблица.

 

этобываеткрайнередко),значит,мыможемсгенерироватьrainbowtables

Charset—наборсимволов,используемыйвпароле.Мыбудемиспользо-

 

дляраспространенныхименпользователей.Естьсмыслгенерировать

ватьстандартныйдляOracle39символьныйнабор,приведенныйвначале

 

таблицыдляпользователейSYSиSYSTEM,таккакониестьвкаждойСУБД

статьи.

 

иимеютпоумолчаниюправаадминистратора(DBA).

Username—имяпользователя.ИспользуетсякакраздляOracleпаролей.В

 

СтеориейRainbowtables,думаю,тызнакомпопрошлымномерамжурнала

нашемслучаебудемгенерироватьдляпользователяSYSTEM.

 

иличиталвинете.Наэтомяостанавливатьсянебуду,лучшерасскажу,

Сописаниемвродезакончили,теперьприступимкгенерации.Если

 

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

выставитьзначения,какуказановыше,товероятностьподбора(Success

 

Oracle.

probability)будетравняться44процентам,чтонассовсемнеустраивает.

054

xàêåð 05 /113/ 08

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

P

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

Login:

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

NOW!

 

o

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY

Pasword:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

Login:

 

Login:

 

Login:

Pasword:

 

Pasword:

 

Pasword:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

>> взломto BUY

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

g

 

 

 

 

 

 

 

df

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

Результатподборапаролейпоrainbowтаблицам

 

 

 

По-хорошему,приемлемаявероятностьдолжнабытьоколо99

Чтобыраспараллелитьработунадсозданиемтаблиц,надо

 

 

процентов,хотяэтозависитотситуации.Дляповышенияве-

простоскопироватьчастьэтихстрокнадругойкомпьютер

 

 

роятностиподбораяпредлагаюпростоувеличитьколичество

вфайлtables.lst изапуститьнанемутилитуwinrtgen.

 

 

таблицхотябыдо8(99,00)алучшедо12(99,91).Подсчитаем

Единственныйважныймомент—используемыйсharsetдол-

 

 

времягенерации(кнопкаBenchmark)иполучимчто-тооколо

женбытьпрописаннакаждомкомпьютеревфайлеcharset.

 

 

24днейнастаренькомIntelCeleron2.4.Времяподборапароля

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

video

 

потаблицесоставитоколо1минуты:заметнолучше,чем два

волов.Причем,ихпорядокдолженбытьодинаковым,иначе

НаDVDсмотрипозна-

 

споловинойдняпривзломеметодом полногоперебора.

таблицыокажутсянесовместимы.Конфиг-файлcharset.

вательныйвидеоурок,

 

Правда,нампридетсяпотратить25днейнагенерациюэтих

txtдолженвыглядетьпримернотак(последняястрокаопи-

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

 

таблиц,затопотомпаролиможнощелкать,какорешки(увы,

сываетчарсетoracle):

всюправдуомнимой

 

только7 символьные).

 

 

 

защищенностипаро-

 

«Естьливозможностьускоритьпроцесс?»,спросишьты.Ия

# charset configuration file for winrtgen v1.2

лейвOracle.

 

отвечу—конечноже,еслигенерировать таблицыневодиноч-

by Massimiliano Montoro (mao@oxid.it)

 

 

ку,агруппойлюдей,какэтоделалосьиделаетсядосихпордля

# compatible with rainbowcrack 1.1 and later by

 

 

LM/NTLM/MD5 хэшейнасайтеwww.freerainbowtables.com.

Zhu Shuanglei <shuanglei@hotmail.com>

 

 

Такможнозначительноускоритьпроцесс.Быстреесгене-

 

 

 

 

 

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

byte

= []

 

 

 

компьютеров.Всяпрелестьвтом,чтотаблицыможногенери-

alpha

= [ABCDEFGHIJKLMNOPQRSTUVWXYZ]

 

 

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

alpha-space

= [ABCDEFGHIJKLMNOPQRSTUVWXYZ ]

 

 

послетогокактыукажешьвсенеобходимыепараметры,

.

 

 

 

 

создаетконфигурационныйфайлсименемtables.lst.Вот

.

 

 

 

 

егосодержимоедлянашегопримера:

.

 

 

 

 

 

 

oracle

= [ABCDEFGHIJKLMNOPQRSTUVWXYZ0

 

 

oracle_oracle#1-7_0_2400x67108864_

 

123456789_#$]

 

 

 

 

SYSTEM#000.rt;

 

 

 

 

 

 

 

Теперьможнораскидатьпооднойтаблиценакаждыйкомпью-

 

 

oracle_oracle#1-7_0_2400x67108864_

 

 

 

SYSTEM#001.rt;

 

тер,иобщеевремягенерациисущественноуменьшится.Что

 

 

oracle_oracle#1-7_0_2400x67108864_

 

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

 

 

SYSTEM#002.rt;

 

ниюихнеподдерживает,ноничтонемешаетнамсоздатьдве

 

 

oracle_oracle#1-7_0_2400x67108864_

 

папкиспрограммойwinrtgen,переименоватьэкзешникив

 

 

SYSTEM#003.rt;

 

winrtgen1.exeиwinrtgen2.exeизапуститьпараллельно

 

 

oracle_oracle#1-7_0_2400x67108864_

 

генерациютаблицнаразныхядрах(прописавразныетаблицы

 

 

SYSTEM#004.rt;

 

заранеевtables.lst).

 

 

oracle_oracle#1-7_0_2400x67108864_

 

Все описанные выше действия я провел на доступных

 

 

SYSTEM#005.rt;

 

мне компьютерах и получил в итоге 12 таблиц общим

 

 

oracle_oracle#1-7_0_2400x67108864_

 

размером чуть более 7 Гб. Для проверки работоспособ-

 

 

SYSTEM#006.rt;

 

ности таблиц я собрал хэши нескольких SYSTEM пользо-

 

 

oracle_oracle#1-7_0_2400x67108864_

 

вателей и запустил перебор по созданным таблицам. В

 

 

SYSTEM#007.rt;

 

итоге 2 из 3 хэшей подобрались; общее время, затрачен-

 

 

 

 

 

 

 

 

xàêåð 05 /113/ 08

055

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> взлом

 

 

 

 

 

 

 

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

 

 

 

 

Настройкаwinrtgenдлягенерациитаблицдля7 символьныхпаролей

 

ное на перебор, составило 4 минуты. Неплохо, но что делать с более

 

 

 

 

 

 

 

0 SYS

 

1

 

 

длинными паролями?

 

 

77E6B621F3BB777A

0

3 15.10.07

 

 

 

 

 

 

19.02.08

 

 

 

 

 

Больше символов!

 

 

0

 

1

 

 

 

 

 

 

 

 

Мы научились подбирать 7 символьные пароли. Чтобы сгенериро-

 

0

0 DEFAULT_CONSUMER_GROUP

 

 

вать таблицы для подбора 8 символьных паролей с тем же чарсетом

 

 

 

 

 

 

и приемлемым Success Rate 99,00%, нам потребуется не много ни

 

0

 

 

 

 

мало — 64 гигабайта свободного места и полтора года времени (если

 

 

 

 

 

 

использовать только один компьютер). Зато подбираться пароль по

 

S:52D6AC184EDE6D952E94317CB1C9918D2766C34A23C476E460D

 

 

этим таблицам будет, максимум, час, а в среднем — минут двадцать. В

 

72BD03F2C

 

 

 

 

сравнении с 60 днями методом полного перебора это выигрыш, и еще

 

 

 

 

 

 

 

Какмывидим,теперьвтаблицехранитсядваразныххэша.Старый

 

какой! Распределенная генерация 8 символьных таблиц уже запущена,

 

 

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

 

—77E6B621F3BB777A,совместимыйсOracle10g,иновый.Насамомделе,

 

посвященном исследованию безопасности баз данных и web-приложе-

 

последняястрокалистинга—этонехэшвчистомвиде.Первые20байт

 

ний: http://dsecrg.ru.

 

 

—этоsha-1хэшпароля,апоследние10—случайныйsalt.

 

 

 

 

 

Что касается нового алгоритма, в нем исправлены предыдущие ошибки.

 

 

Oracle 11g и нововведения

 

Во-первых, пароль становится «регистро-зависимым», что существенно

 

Все рассмотренное касалось версий Oracle ниже 11. Хотя в продакшн

 

увеличивает алфавит символов для перебора. Во-вторых, в качестве соли

 

среде версия 11 до сих пор встречается редко, разобраться в ней не

 

используется случайное значение. Это можно проверить, меняя пользо-

 

помешает. Тем более, дела там обстоят не так прозрачно. Для начала

 

вателю пароль на такой же, в результате чего хэш изменится. Все говорит

 

попытаемся извлечь пароли из таблицы DBA_USERS, как это делалось в

 

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

 

старых версиях.

 

 

но, как обычно, ложку дегтя мы все-таки найдем. Дело в том, что ситуация

 

 

 

 

 

очень напоминает историю с OC Windows и LM/NTLM-хэшами. Там, если

 

 

Oracle Database 11g Enterprise Edition Release

 

вы помните, старый хэш хранится в системе вместе с новым, что позволяет

 

 

11.1.0.6.0 — Production

 

 

с легкостью расшифровать любые пароли менее 14 символов, используя

 

 

With the Partitioning, OLAP, Data Mining and Real

 

старый хэш. Ситуация в Oracle такая же: видимо, для совместимости со

 

 

Application Testing options

 

старыми приложениями в таблице, как уже упоминалось, хранится старый

 

 

 

 

 

хэш. Значит, ничто нам не мешает подбирать к нему пароли, как мы делали

 

 

SQL> select username, password from dba_users;

 

это для старых версий.

 

 

 

 

 

 

 

 

Существует один нюанс, также как и с LM/NTLM-хэшами: когда хэш

 

 

USERNAME

PASSWORD

 

расшифруется, то пароль по понятным причинам может не совпасть с

 

-------------------

-----------------------

 

настоящим (старый алгоритм хранения паролей не различает регистров,

 

 

MGMT_VIEW

 

 

а новый уже различает). Например, мы подобрали пароль к старому хэшу

 

 

SYS

 

 

и он оказался «passwd». Поскольку старый хэш не различает регистров,

 

 

SYSTEM

 

 

вполне возможно, что настоящий пароль — «PassWd».

 

 

DBSNMP

 

 

Но нас это нисколько не останавливает, ведь мы можем перебрать все

 

 

 

 

 

варианты написания одного слова тем же кайном (cain&abel), а затем

 

Очевидно,паролейтутнет,нумынерасстраиваемся.Ониестьвтаблице

 

 

использовать THC-Orakel (переборщик паролей к Oracle 11g), — и это

 

SUS.USER$и,соответственно,доступкним—толькоупользователей

 

займет считанные секунды. Способ гораздо эффективнее, чем заморачи-

 

справамиадминистратора (DBA).ПравSELECTANYDICTIONARYдля

 

ваться с подбором паролей к SHA-1 хэшам. В итоге, с доступом к таблице

 

доступакхэшампаролейуженедостаточно.Хранятсяхэшитакженемного

 

с хэшами паролей вероятность подбора практически не отличается для

 

отличноотстарых:

 

 

всех версий СУБД Oracle. И там, и там у нас есть большие шансы взломать

 

 

 

 

 

пароль. Вот и все на сегодня, надеюсь, ты хорошо усвоил суть рассмотрен-

 

 

SQL> select user, password, spare4 from sys.user$;

 

ной проблемы. z

 

 

 

 

 

 

 

 

 

 

 

 

056

xàêåð 05 /113/ 08

 

 

 

 

 

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

 

 

 

 

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

Донедавнеговременимаксимум,что тымогсделатьсосвоимроликом,—это залитьегонавидеохостингиполучать удовлетворениеоттого,чтоегокто-то скачивает,смотритиоценивает.

Нонедавноутебяпоявиласьуникальнаявозможностьпоучаствоватьв настоящемкино-конкурсе,который толькочтозапустилакомпанияМТСи СоюзкинематографистовРоссии.

Тыможешьучаствоватьв этомконкурсе,дажееслидоэтогониразунеимел делос киноимонтажнымсофтом. Профессионализм—неглавноевэтом конкурсе.Кудаважнеетвоиидеии твойэнтузиазм!

Тимур Бекмамбетов, который когда-то давно начинал маленьральных ВУЗов. А в любительском конкурсе могут принять участие все кими короткометражками, затем занимался роликами для желающие, в том числе и ты! Для того чтобы стать участником, необходимо

известных телеканалов. Недавно же он завершил картину с участием Анжелины Джоли и бюджетом $65 миллионов, а это самый дорогой кинопроект, которым когда-либо управлял человек,

говорящий по-русски.

Теперь и тыполучил шанс показать себя, реализовывать свои идеи. Компания МТС и Союз кинематографистов России решили дать тебе такой шанс и запустили «Фестиваль Мобильного кино». Проект уникальный. Это первый открытый международный фестиваль короткометражных фильмов для профессионалов и любителей. Фильмы могут быть сняты на любые видеокамеры: начиная с тех, что встроены в мобильные телефоны, и заканчивая профессиональными. При хронометраже порядка 10 минут фильм должен иметь сюжетную линию, заставляющую зрителей задуматься, сопереживать, радоваться. Это фильм с собственной атмосферой, яркой идей и ее творческой реализацией — то, чем и славятся любительские миниатюры.

В рамках фестиваля пройдут два конкурса: профессиональный и любительский. В профессиональном конкурсе участвуют фильмы начинающих режиссеров, студентов и выпускников кинематографических и теат-

до 15 июня 2008 года отснять материал и разместить готовый фильм в Интернете на специальном сайте фестиваля www.mobilkinofest.ru.Еще удобнее сделать это с WAP-портала «МТССити» (wap.mtscity.ru), с его помощью абоненты МТС могут загружать свои фильмы на сайт фестиваля прямо со своего мобильного телефона. Все фильмы, участвующие в любительском конкурсе, будут доступны для просмотра на сайте www.mobilkinofest.ru, а каждый посетитель сможет

принять участие в онлайн-голосовании. По его результатам будут определяться претенденты на победу.

Словом, если ты давно вынашиваешь идею отснять классный материал, показать всем на что ты способен, самое время позвать друзей и начать съемки. Наконец у тебя есть шанс получить оценку не просто от приятелей и пользователей Интернет, но, самое главное, от авторитетного жюри, состоящего из признанных мэтров киноискусства.

Когда еще будет такая возможность? Это отличный шанс для тебя!

Ты можешь прославиться и выиграть классные призы: годовое подключение на безлимитный тариф МТС и современный ноутбук.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> взлом

 

 

 

 

 

 

 

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

 

 

 

 

Вгорячем сердце файрвола

Взлом портала популярного брандмауэра

Хочешь по-настоящему ролевого и экстремального взлома? Желаешь одним глазком взглянуть на работу слаженной хакерской команды? Тогда пристегнись! На твоих глазах хакеры пробираются в самое сердце центрального сервера компании Agnitum! Да-да, именно Agnitum.com — производителя популярного файрвола.

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

защищенность,конфиденциальностьинадежность?Сейчас тыувидишь,какхрупкаяцепочкабагов,казалосьбы,незна-

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

Рекогносцировка на местности

Здесьидалее:misterBlack,misterWhite—этодвамолодыхчеловека, состоящихводнойхакерскойгруппе.Псевдонимывыбранысовершенно случайно,безподоплекиилизлогоумысла.Какводится,хакерыведутпоис- киресурса-жертвыиобмениваютсяценнойинформацией.

misterBlack:

Вечер.Светмонитора.Окинуввзглядомиконкинарабочемстоле,япочемутоостановилсяна OutpostFirewall.«Хм...чемневариант?»,—подумаля. ЗайдянаAgnitum.com,пошарилсяминутдесять.Следующийсайт—agnitum. ru,заним—онже,взонеFR...баговнигденеобнаружено.Новотклацнувна ссылкуPolskiвверхнемуглу,япопалнаoutpost.pl.Беглыйанализсайтаобнару- жилдвижок(этоужехорошо)—Joomla1.0.9.Глянувэксплоитыподэтуверсию, яужебылообрадовался,ноIP-адресаagnitum.comиoutpost.plоказалисьраз- ными,азначит—сноваоблом.Тогдаярешилпосмотреть,какиесоседибылина сайте(используяресурсseologs.com/ip-domains.html),неособо,впрочем,рас- считываянаудачу,ибопроектытакогоуровня,какправило,имеютсобственный сервер,иникакихлевыхсайтовтамаприорибытьнеможет.Ноневэтотраз!В спискедоменовприсутствовалодинокийaboutphone.info(ачто,этошанс).

Первоначальный осмотр сайта на предмет взлома не обрадовал. На-

стораживала лишь надпись «Контент,программирование©Anatoly Skoblov,2001-2004», свидетельствующая о явной заброшенности ресурса. Все было написано на чистом HTML (никаких скриптов). Однако ссылка «форум» привела меня на aboutphone.info/phorum, где PHP-скрипты определенно были. Напрашивалась мысль о самописности ресурса, но дальнейший просмотр исходного кода страницы показал: «Phorum» — это название форума. Версия со 100% точностью была определена с помощью meta-тегов.

<meta name="PhorumVersion" content="3.4.3a" /> <meta name="PhorumDB" content="mysql" /> <meta name="PHPVersion" content="4.4.7" />

Фортунабыланамоейстороне.Проверкабагтрековвыдаламножество разныхуязвимостей.Ярешилзаостритьвниманиенасамойудачной.

[Critical SQL-inj uriauth() Phorum<=3.4.7 ] www.securityfocus.com/archive/1/360635

Вописаниибагабылпримерэксплуатации:http://localhost/ phorum347/list.php?f=1&phorum_uriauth=waraxe%2527%20AN D%20mid(password,2,1)=3/*:foobar,нокогдаяподставлялразные значения,ничегонепроисходило.Странно!Былауженочь,глазазалипали, и,следуярусскойпоговорке«утровечерамудренее»,ярешилоставить разборполетовнаследующийдень.

058

xàêåð 05 /113/ 08

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