Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
хостинга
оглавление
Что такое rootkits, и как с ними бороться Почтовый сервер с защитой от спама
Современный вариант троянского коня: набор утилит и вирусов на основе FreeBSD
rootkits. Как защититься?
Геннадий Дмитриев
Сергей Яремчук stranger03@mail.ru 68
grinder@ua.fm 24
Безопасный удаленный доступ
Безопасность беспроводных сетей к консолям оборудования
Методы атак на беспроводные сети. Рекомендации по
обеспечению безопасности. Дмитрий Ржавин
d.rzhavin@rtcomm.ru
Виктор Игнатьев Рафаэль Шарафутдинов
n4vy@nm.ru 28 rafael@soft-tronik.ru 74
ИТОГИ SYSM.02
20 декабря 2003 года портал SysAdmins.RU при инфор-
мационной поддержке журнала «Системный администра-
тор» и журнала «UPGRADE» провел второй Семинар си-
стемных администраторов и инженеров, SYSM.02, в рам-
ках которого, помимо основной программы, состоялось
учредительное собрание Профсоюза специалистов в об-
ласти информационных технологий.
Более 160 человек собрались из разных городов Рос-
сии и СНГ, чтобы принять участие в Семинаре.
Безусловно, SYSM.02 удался, организаторы Семинара
создали дружественную и позитивную атмосферу, благопри-
ятную для общения, обмена опытом, знаниями и идеями.
В первой части Семинара было представлено четыре
обширных информационных доклада. В перерывах меж-
ду выступлениями продолжались дискуссии. Участники
Семинара – Дмитрий Головин и Алексей Костромин де-
лятся своими впечатлениями и дают краткий обзор каж-
дого выступления: Ìèõàèë Òîð÷èíñêèé, ôîòî Àëåêñåÿ Êîñòðîìèíà
половому, национальному и прочим признакам, положе-
ние на рынке труда в целом – острые и актуальные темы
для сферы IT. После окончания доклада, который, по сути,
прошел как диалог с залом, Михаила Торчинского еще
долго не отпускали, и некоторые наши коллеги пожертво-
вали обедом ради интересного и живого общения с ним.
Выступление Игоря Ляпунова состояло из двух час-
тей: первая – о возможных путях построения безопаснос-
ти в локальной сети для начинающих системных админи-
страторов. Вторая часть выступления «Решения
NetScreen: архитектура, применение, администрирование,
перспективы» носила скорее рекламный характер.
2
календарь событий
профсоюза, привлечение региональных компаний IT-рын-
ка к реализации программ профсоюза в регионах.
По всем пунктам, представленным в программе, есть
договорённости с компаниями, которые сотрудничают с
профсоюзом. По социальному направлению разработана
программа страхования: каждый член профсоюза с фев-
раля 2004 года будет застрахован от несчастных случаев,
которые могут повлечь за собой потерю трудоспособнос-
ти. Всероссийское молодежное аэрокосмическое общество
«Союз» предоставляет бесплатные путёвки для детей чле-
нов профсоюза в детские лагеря отдыха. Основная идея
учебного направления – предоставить члену профсоюза
возможность получить специальные знания и навыки, ко-
торые помогут ему успешно спланировать свою карьеру.
Программа профсоюза весьма обширна, здесь представ-
Îëåã Âëàñåíêî, ôîòî Àëåêñåÿ Êîñòðîìèíà лена только малая толика того, что запланировано.
Во второй части Семинара состоялось учредительное
собрание Профсоюза специалистов в области информа-
ционных технологий.
Подробности – в пресс-релизе, подготовленным Ма-
рией Антоновой:
«Профсоюз представляет собой объединение систем-
ных и сетевых администраторов, программистов, веб-ма-
стеров, контент-редакторов, технических писателей, спе-
циалистов в области информационной безопасности, IT-
менеджеров, IT-аналитиков, руководителей IT-департа-
ментов и всех тех, кто работает в сфере информацион-
ных технологий. Это объединение имеет все шансы стать
действенным инструментом защиты прав своих членов.
Более 100 участников Семинара стали первыми чле-
нами профсоюза. Состоялось собрание, на котором в
результате голосования было избрано Правление и ут-
верждена предложенная Программа работы профсою-
за на 2004 год.
Àëåêñåé Ëèïîâöåâ, îðãàíèçàòîð SYSM.02, ôîòî Àëåêñàíäðà Íåì÷åíêî
По словам Алексея Липовцева, Председателя Прав-
ления профсоюза: «Начало положено, и довольно успеш-
но. В планах – развивать профсоюз в 2004 году, разраба-
тывать и реализовывать программы обучения, трудоуст-
ройства и поддержки членов профсоюза, развивать со-
циальное направление работы.»
Более подробную информацию о деятельности проф-
союза IT-специалистов вы можете найти на официальном
сайте http://ITCU.ru».
ВИРУСЫ В UNIX,
ИЛИ ГИБЕЛЬ «ТИТАНИКА» II
Ночью 14 апреля 1912 года принадлежавший
Британии непотопляемый океанский лайнер «Титаник»
столкнулся с айсбергом и утонул, унеся с собой жизни
более пятнадцати сотен из двух тысяч двухсот
пассажиров… Поскольку «Титаник» был непотопляем,
на нем не хватило спасательных шлюпок.
Джозеф Хеллер
«Вообрази себе картину»
Считается, что в UNIX-системах вирусы не живут – они там дохнут. Отчасти это действительно так,
однако не стоит путать принципиальную невозможность создания вирусов с их отсутствием как
таковых. В действительности же UNIX-вирусы существуют, и на настоящий момент (начало 2004 года)
их популяция насчитывает более двух десятков. Немного? Не торопитесь с выводами. «Дефицит» UNIX-
вирусов носит субъективный, а не объективный характер. Просто в силу меньшей распространенности
UNIX-подобных операционных систем и специфики их направленности в этом мире практически
не встречается даунов и вандалов. Степень защищенности операционной системы тут не при чем.
Надеяться, что UNIX справится с вирусами и сама, несколько наивно и, чтобы не разделить судьбу
«Титаника», держите защитные средства всегда под рукой, тщательно проверяя каждый запускаемый
файл на предмет наличия заразы. О том, как это сделать, и рассказывает настоящая статья.
КРИС КАСПЕРСКИ
6
безопасность
Исторически сложилось так, что первым нашумевшим ви- Что бы там ни говорили фанатики UNIX, но вирусы раз-
русом стал Червь Морриса, запущенный им в Сеть 2 но- множаются и на этой платформе. Отмахиваться от этой
ября 1988 года и поражающий компьютеры, оснащенные проблемы означает уподобиться страусу. Вы хотите быть
4 BSD UNIX. Задолго до этого, в ноябре 1983 г., доктор страусами? Я думаю – нет!
Фредерик Коэн (Dr. Frederick Cohen) доказал возможность
существования саморазмножающихся программ в защи- Условия, необходимые
щенных операционных системах, продемонстрировав не- для функционирования вирусов
сколько практических реализаций для компьютеров типа Памятуя о том, что общепринятого определения «компь-
VAX, управляемых операционной системой UNIX. Счита- ютерных вирусов» не существует, условимся обозначать
ется, что именно он впервые употребил термин «вирус». этим термином все программы, способные к скрытому
На самом деле между этими двумя событиями нет размножению. Последнее может быть как самостоятель-
ничего общего. Вирус Морриса распространялся через ным (поражение происходит без каких-либо действий со
дыры в стандартном программном обеспечении (кото- стороны пользователя: достаточно просто войти в сеть),
рые, кстати говоря, долгое время оставались незакры- так и нет (вирус пробуждается только после запуска ин-
тыми), в то время как Коэн рассматривал проблему са- фицированной программы).
моразмножающихся программ в идеализированной опе- Сформулируем минимум требований, «предъявляе-
рационной системе без каких-либо дефектов в системе мых» саморазмножающимися программами к окружаю-
безопасности. Наличие дыр просто увеличило масшта- щей среде (кстати, почему бы окружающую среду не на-
бы эпидемии и сделало размножение вируса практичес- звать окружающим четвергом?):
ки неконтролируемым. ! в операционной системе имеются исполняемые
А теперь перенесемся в наши дни. Популярность UNIX- объекты;
подобных систем стремительно растет и интерес к ним ! эти объекты возможно модифицировать и/или созда-
со стороны вирусописателей все увеличивается. Квали- вать новые;
фикация системных администраторов (пользователей ! происходит обмен исполняемыми объектами между
персональных компьютеров и рабочих станций), напро- различными ареалами обитания.
тив, неуклонно падает. Все это создает благоприятную
среду для воспроизводства и размножения вирусов, и Под «исполняемым объектом» здесь понимается не-
процесс их разработки в любой момент может принять которая абстрактная сущность, способная управлять по-
лавинообразный характер, – стоит только соответствую- ведением компьютера по своему усмотрению. Конечно,
щим технологиям попасть в массы. Готово ли UNIX-сооб- это не самое удачное определение, но всякая попытка
щество противостоять этому? Нет! Судя по духу, витаю- конкретизации неизбежно оборачивается потерей зна-
щему в телеконференциях, и общему настроению адми- чимости. Например, текстовый файл в формате ASCII
нистраторов, UNIX считается непотопляемой системой, и интерпретируется вполне определенным образом и на
вирусная угроза воспринимается крайне скептически. первый взгляд средой обитания вируса быть никак не
Между тем, качество тестирования программного обес- может. Однако, если текстовой процессор содержит
печения (неважно, распространяемого в открытых исход- ошибку типа «buffer overfull», существует вполне реаль-
ных текстах или нет) достаточно невелико и, по меткому ная возможность внедрения в файл машинного кода с
выражению одного из хакеров, один-единственный последующей передачей на него управления. А это зна-
SendMail содержит больше дыр, чем все Windows-прило- чит, что мы не можем априори утверждать, какой объект
жения вместе взятые. Большое количество различных исполняемый, а какой нет.
дистрибутивов UNIX-систем многократно снижает влия- В плане возвращения с небес теоретической экзотики
ние каждой конкретной дырки, ограничивая ареал обита- на грешну землю обетованну, ограничим круг своих ин-
ния вирусов сравнительно небольшим количеством ма- тересов тремя основными типами исполняемых объектов:
шин, однако в условиях всеобщей глобализации и высо- дисковыми файлами, оперативной памятью и загрузоч-
коскоростных интернет-каналов даже чрезвычайно изби- ными секторами.
рательный вирус способен поразить тысячи компьютеров Процесс размножения вирусов в общем случае сво-
за считанные дни или даже часы! дится к модификации исполняемых объектов с таким рас-
Распространению вирусов невероятно способствует четом, чтобы хоть однажды в жизни получить управле-
тот факт, что в подавляющем большинстве случаев сис- ние. Операционные системы семейства UNIX по умолча-
тема конфигурируется с довольно демократичным уров- нию запрещают пользователям модифицировать испол-
нем доступа. Иногда это происходит по незнанию и/или няемые файлы, предоставляя эту привилегию лишь root.
небрежности системных администраторов, иногда по Это чрезвычайно затрудняет размножение вирусов, но
«производственной» необходимости. Если на машине отнюдь не делает его невозможным! Во-первых, далеко
постоянно обновляется большое количество программно- не все пользователи UNIX осознают опасность регистра-
го обеспечения (в том числе и создаваемого собственны- ции с правами root, злоупотребляя ей безо всякой необ-
ми силами), привилегии на модификацию исполняемых ходимости. Во-вторых, некоторые приложения только под
файлов становятся просто необходимы, в противном слу- root и работают, причем создать виртуального пользова-
чае процесс общения с компьютером из радости рискует теля, изолированного от всех остальных файлов систе-
превратиться в мучение. мы, в некоторых случаях просто не получается. В-треть-
8
безопасность
быстро приведет систему к краху, демаскируя себя и па- тарий. Строго говоря, гарантированная уникальность ви-
рализуя дальнейшее распространение. Поскольку в мире русам совершенно не нужна. Достаточно, чтобы ключе-
UNIX-файлам не принято давать расширения, задача по- вая метка отсутствовала более чем в половине неинфи-
иска подходящих жертв существенно осложняется, и ви- цированных файлов. Поиск ключевой метки может осу-
русу приходится явно перебирать все файлы один за од- ществляться как командами find/greep, так и построчеч-
ним, определяя их тип вручную. ным чтением из файла с последующим сравнением до-
Существуют по меньшей мере две методики такого оп- бытых строк с эталоном. Скрипты командных интерпре-
ределения: отождествление командного интерпретатора таторов используют для этой цели команды head и tail,
и эвристический анализ. Начнем с первого из них. Если в применяемые совместно с оператором «=», ну а Perl-ви-
начале файла стоит магическая последовательность «#!», русы все больше тяготеют к регулярным выражениям, что
то остаток строки содержит путь к программе, обрабаты- существенно затрудняет их выявление, т.к. без регуляр-
вающей данный скрипт. Для интерпретатора Борна эта ных выражений не обходится практически ни одна Perl-
строка обычно имеет вид «#!/bin/sh», а для Perl – «#!/usr/ программа.
bin/perl». Таким образом, задача определения типа фай- Другой возможной зацепкой является переменная
ла в общем случае сводится к чтению его первой строки «$0», используемая вирусами для определения собствен-
и сравнению ее с одним или несколькими эталонами. Если ного имени. Не секрет, что интерпретируемые языки про-
только вирус не использовал хеш-сравнение, эталонные граммирования не имеют никакого представления о том,
строки будут явно присутствовать в зараженном файле, каким именно образом скрипты размещаются в памяти,
легко обнаруживая себя тривиальным контекстным поис- и при всем желании не могут «дотянуться» до них. А раз
ком (см. листинги 2, 3). так, то единственным способом репродуцирования свое-
Девять из десяти скрипт-вирусов ловятся на этот не- го тела остается чтение исходного файла, имя которого
замысловатый прием, остальные же тщательно скрыва- передается в нулевом аргументе командной строки. Это
ют эталонные строки от посторонних глаз (например, достаточно характерный признак заражения исследуемо-
шифруют их или же используют посимвольное сравне- го файла, ибо существует очень немного причин, по ко-
ние). Однако в любом случае перед сравнением строки торым программа может интересоваться своим названи-
с эталоном вирус должен ее считать. В командных фай- ем и путем.
лах для этой цели обычно используются команды greep Впрочем, существует (по крайней мере теоретически)
или head. Конечно, их наличие в файле еще не свиде- и альтернативный способ размножения. Он работает по
тельствует о зараженности последнего, однако позво- тем же принципам, что и программа, распечатывающая
ляет локализовать жизненно важные центры вируса, сама себя (в былое время без этой задачки не обходи-
ответственные за определения типа файла, что значи- лась ни одна олимпиада по информатике). Решение сво-
тельно ускоряет его анализ. В Perl-скриптах чтение фай- дится к формированию переменной, содержащей про-
ла чаще всего осуществляется через оператор «< >», граммный код вируса, с последующим внедрением оного
реже используются функции read/readline/getc. Тот факт, в заражаемый файл. В простейшем случае для этого ис-
что практически ни одна мало-мальски серьезная Perl- пользуется конструкция «<<», позволяющая скрыть факт
программа не обходится без файлового ввода/вывода, внедрения программного кода в текстовую переменную
чрезвычайно затрудняет выявление вирусного кода, осо- (и это выгодно отличает Perl от Си). Построчная генера-
бенно если чтение файла происходит в одной ветке про- ция кода в стиле «@Virus[0]= “\#\!\/usr\/bin\/perl”» встреча-
граммы, а определение его типа – совсем в другой. Это ется реже, т.к. слишком громоздко, непрактично и к тому
затрудняет автоматизированный анализ, но еще не де- же наглядно (в смысле даже при беглом просмотре лис-
лает его невозможным! тинга выдает вирус с головой).
Эвристические алгоритмы поиска жертвы состоят в Зашифрованные вирусы распознаются еще проще.
выделении уникальных последовательностей, присущих Наиболее примитивные экземпляры содержат большое
файлам данного типа и не встречающихся ни в каких количество «шумящих» двоичных последовательностей
других. Так, наличие последовательности «if [» с веро- типа «\x73\xFF\x33\x69\x02\x11…», чьим флагманом явля-
ятностью близкой к единице указывает на командный ется спецификатор «\x», за которым следует ASCII-код
скрипт. Некоторые вирусы отождествляют командные зашифрованного символа. Более совершенные вирусы
файлы по строке «Bourne», которая присутствует в не- используют те или иные разновидности UUE-кодирова-
которых, хотя и далеко не всех скриптах. Естественно, ния, благодаря чему все зашифрованные строки выгля-
никаких универсальных приемов распознавания эврис- дят вполне читабельно, хотя и представляют собой бес-
тических алгоритмов не существует (на то они и эврис- смысленную абракадабру вроде «UsKL[aS4iJk». Учитывая,
тические алгоритмы). что среднеминимальная длина Perl-вирусов составляет
Во избежание многократного инфицирования файла- порядка 500 байт, затеряться в теле жертвы им легко.
носителя вирусы должны уметь распознавать факт свое- Теперь рассмотрим пути внедрения вируса в файл.
го присутствия в нем. Наиболее очевидный (и популяр- Файлы командного интерпретатора и программы, напи-
ный!) алгоритм сводится к внедрению специальной клю- санные на языке Perl, представляют собой неиерархичес-
чевой метки (вроде «это я – Вася»), представляющей со- кую последовательность команд, при необходимости
бой уникальную последовательность команд, так сказать, включающую в себя определения функций. Здесь нет
сигнатуру вируса или же просто замысловатый коммен- ничего, хотя бы отдаленно похожего на функцию main язы-
for F in *
do
if [ "$(head -c9 $F 2>/dev/null)" = "#!/bin/sh" ] then
head -11 $0 > tmp
cat $F >> tmp Ëèñòèíã 4. Ôðàãìåíò Perl-âèðóñà UNIX.Demo
mv tmp $F
fi #!/usr/bin/perl
done #PerlDemo
10
безопасность
Эльфы в заповедном лесу common/media/vil/pdf/mvanvoers_VB_conf%202000.pdf
За всю историю существования UNIX было предложено («Linux Viruses – ELF File Format»).
множество форматов двоичных исполняемых файлов, Не секрет, что у операционных систем Windows NT и
однако к настоящему моменту в более или менее упот- UNIX много общего, и механизм заражения ELF/COFF/
ребляемом виде сохранились лишь три из них: a.out, COFF a.out файлов с высоты птичьего полета ничем не отлича-
и ELF. ется от заражения форматов семейства NewExe. Тем не
Формат a.out (Assembler and link editor OUTput files) – менее, при всем поверхностном сходстве между ними есть
самый простой и наиболее древний из трех перечислен- и различия.
ных, появившийся еще во времена господства PDP-11 и Существует по меньшей мере три принципиально раз-
VAX. Он состоит из трех сегментов: .text (сегмент кода), личных способа заражения файлов, распространяемых в
.data (сегмент инициализированных данных) и .bss (сег- формате a.out:
мент неинициализированных данных), двух таблиц пе- ! «поглощение» оригинального файла с последующей
ремещаемых элементов (по одной для сегментов кода его записью в tmp и удалением после завершения вы-
и данных), таблицы символов, содержащей адреса эк- полнения (или – «ручная» загрузка файла-жертвы как
спортируемых/импортируемых функций, и таблицы вариант);
строк, содержащей имена последних. К настоящему ! расширение последней секции файла и дозапись сво-
моменту формат a.out считается устаревшим и практи- его тела в ее конец;
чески не используется. Краткое, но вполне достаточ- ! сжатие части оригинального файла и внедрение свое-
ное для его освоения руководство содержится в man го тела на освободившееся место.
Free BSD. Также рекомендуется изучить включаемый
файл a.out.h, входящий в комплект поставки любого Переход на файлы формата ELF или COFF добавляет
UNIX-компилятора. еще четыре:
Формат COFF (Common Object File Format) – прямой ! расширение кодовой секции файла и внедрение свое-
наследник a.out – представляет собой существенно усо- го тела на освободившееся место;
вершенствованную и доработанную версию последнего. ! сдвиг кодовой секции вниз с последующей записью
В нем появилось множество новых секций, изменился своего тела в ее начало;
формат заголовка (и в том числе появилось поле дли- ! создание своей собственной секции в начале, середи-
ны, позволяющее вирусу вклиниваться между заголов- не или конце файла;
ком и первой секцией файла), все секции получили воз- ! внедрение между файлом и заголовком.
можность проецироваться по любому адресу виртуаль-
ной памяти (для вирусов, внедряющихся в начало и/или Внедрившись в файл, вирус должен перехватить на
середину файла, это актуально) и т. д. Формат COFF себя управление, что обычно осуществляется следующи-
широко распространен в мире Windows NT (PE-файлы ми путями:
представляют собой слегка модифицированный COFF), ! созданием собственного заголовка и собственного сег-
но в современных UNIX-системах он практически не ис- мента кода/данных, перекрывающего уже существу-
пользуется, отдавая дань предпочтения формату ELF. ющий;
Формат ELF (Executable and Linkable Format, хотя не ! коррекцией точки входа в заголовке файла-жертвы;
исключено, что формат сначала получил благозвучное ! внедрением в исполняемый код файла-жертвы коман-
название, под которое потом подбиралась соответствую- ды перехода на свое тело;
щая аббревиатура – среди UNIX-разработчиков всегда ! модификацией таблицы импорта (в терминологии
было много толкиенистов) очень похож на COFF и факти- a.out – таблицы символов) для подмены функций, что
чески является его разновидностью, спроектированной особенно актуально для Stealth-вирусов.
для обеспечения совместимости с 32- и 64-разрядными
архитектурами. В настоящее время – это основной фор- Всем этим махинациям (кроме приема с «поглощени-
мат исполняемых файлов в системах семейства UNIX. Не ем») очень трудно остаться незамеченными, и факт за-
то чтобы он всех сильно устраивал (та же FreeBSD сопро- ражения в подавляющем большинстве случаев удается
тивлялась нашествию Эльфов, как могла, но в версии 3.0 определить простым визуальным просмотром дизассем-
была вынуждена объявить ELF-формат как формат, ис- блерного листинга анализируемого файла. Подробнее об
пользуемый по умолчанию, поскольку последние версии этом мы поговорим чуточку позже, а пока обратим свое
популярного компилятора GNU C древних форматов уже внимание на механизмы системных вызовов, используе-
не поддерживают), но ELF – это общепризнанный стан- мые вирусами для обеспечения минимально необходимо-
дарт, с которым приходится считаться, хотим ли мы того го уровня жизнедеятельности.
или нет. Поэтому в настоящей статье речь главным об- Для нормального функционирования вирусу необхо-
разом пойдет о нем. Для эффективной борьбы с вируса- димы по меньшей мере четыре основных функции для
ми вы должны изучить ELF-формат во всех подробнос- работы с файлами (как то: открытие/закрытие/чтение/за-
тях. Вот два хороших руководства на эту тему: http:// пись файла) и опционально функция поиска файлов на
www.ibiblio.org/pub/historic-linux/ftp-archives/sunsite.unc.edu/ диске/сети. В противном случае вирус просто не сможет
Nov-06-1994/GCC/ELF.doc.tar.gz («Executable and Linkable реализовать свои репродуктивные возможности, и это уже
Format – Portable Format Specification») и http://www.nai.com/ не вирус получится, а Троянский Конь!
12
безопасность
поскольку загрузчик не настолько глуп, чтобы тратить гут присваивать секции данных атрибут Execute, выда-
драгоценное процессорное время на загрузку неини- вая тем самым себя с головой, впрочем, такие экземп-
циализированных данных с медленного диска. Правиль- ляры встречаются крайне редко, и подавляющее боль-
нее было бы сказать «последней значимой секции», но шинство вирусописателей оставляет секцию данных с
давайте не будем придираться, это ведь не научная ста- атрибутами по умолчанию.
тья, верно? Другой немаловажный и не очевидный на первый
Перед секций .bss обычно располагается секция .data, взгляд момент. Задумайтесь, как изменится поведение
содержащая инициализированные данные. Вот она-то и зараженного файла при внедрении вируса в не-после-
становится основным объектом вирусной атаки! Натра- днюю секцию .data, следом за которой расположена .bss?
вив дизассемблер на исследуемый файл, посмотрите, в А никак не изменится! Несмотря на то, что последняя
какой секции расположена точка входа. И если этой сек- секция будет спроецирована совсем не по тем адресам,
цией окажется секция данных (как, например, в случае, программный код об этом «не узнает» и продолжит об-
изображенном в листинге 5), исследуемый файл с вы- ращаться к неинициализированным переменным по их
сокой степенью вероятности заражен вирусом. прежним адресам, теперь занятых кодом вируса, кото-
При внедрении в a.out-файл вирус в общем случае дол- рый к этому моменту уже отработал и возвратил ориги-
жен проделать следующие действия: нальному файлу все бразды правления. При условии, что
! считав заголовок файла, убедиться, что это действи- программный код спроектирован корректно и не закла-
тельно a.out-файл; дывается на начальное значение неинициализированных
! увеличить поле a_data на величину, равную размеру переменных, присутствие вируса не нарушит работос-
своего тела; пособности программы.
! скопировать себя в конец файла; Однако в суровых условиях реальной жизни этот эле-
! скорректировать содержимое поля a_entry для пере- гантный прием заражения перестает работать, поскольку
хвата управления (если вирус действительно перехва- среднестатистическое UNIX-приложение содержит поряд-
тывает управление таким образом). ка десяти различных секций всех назначений и мастей.
Взгляните, например, на строение утилиты ls, позаимство-
Внедрение в ELF-файлы происходит несколько более ванной из следующего дистрибутива UNIX: Red Hat 5.0:
сложным образом:
! вирус открывает файл и, считывая его заголовок, убеж- Ëèñòèíã 5. Òàê âûãëÿäèò òèïè÷íàÿ êàðòà ïàìÿòè íîðìàëüíîãî ôàéëà
дается, что это действительно ELF;
! просматривая Program Header Table, вирус отыскива-
ет сегмент, наиболее подходящий для заражения (для
заражения подходит любой сегмент с атрибутом
PL_LOAD; собственно говоря, остальные сегменты
более или менее подходят тоже, но вирусный код в них
будет смотреться несколько странно);
! найденный сегмент «распахивается» до конца файла Секция .data расположена в самой «гуще» файла, и
и увеличивается на величину, равную размеру тела чтобы до нее добраться, вирусу придется позаботиться о
вируса, что осуществляется путем синхронной коррек- модификации семи остальных секций, скорректировав их
ции полей p_filez и p_memz; поля p_offset (смещение секции от начала файла) надле-
! вирус дописывает себя в конец заражаемого файла; жащим образом. Некоторые вирусы этого не делают, в
! для перехвата управления вирус корректирует точку результате чего зараженные файлы не запускаются.
входа в файл (e_entry), либо же внедряет в истинную С другой стороны, секция .data рассматриваемого
точку входа jmp на свое тело (впрочем, методика пе- файла насчитывает всего 10h байт, поскольку львиная
рехвата управления тема отдельного большого разго- часть данных программы размещена в секции .rodata (сек-
вора). ции данных, доступной только на чтение). Это типичная
практика современных линкеров, и большинство испол-
Маленькое техническое замечание. Секция данных, няемых файлов организованы именно так. Вирус не мо-
как правило, имеет всего лишь два атрибута: атрибут жет разместить свой код в секции .data, поскольку это де-
чтения (Read) и атрибут записи (Write). Атрибут испол- лает его слишком заметным, не может он внедриться и в
нения (Execute) у нее по умолчанию отсутствует. Озна- .rodata, т.к. в этом случае он не сможет себя расшифро-
чает ли это, что выполнение вирусного кода в ней ока- вать (выделить память на стеке и скопировать туда свое
жется невозможным? Вопрос не имеет однозначного тело – не предлагать: для современных вирусописателей
ответа. Все зависит от особенностей реализации конк- это слишком сложно). Да и смысла в этом будет немного.
ретного процессора и конкретной операционной систе- Коль скоро вирусу приходится внедряться не в конец, а в
мы. Некоторые из них игнорируют отсутствие атрибута середину файла, уж лучше ему внедриться не в секцию
исполнения, полагая, что право исполнения кода напря- данных, а в секцию .text, содержащую машинный код. Там
мую вытекает из права чтения. Другие же возбуждают вирус будет не так заметен (он об этом мы поговорим поз-
исключение, аварийно завершая выполнение заражен- же см. «Заражение посредством расширения кодовой
ной программы. Для обхода этой ситуации вирусы мо- секции файла»).
14
безопасность
.text:08000C0D jmp loc_8000D18 Исследователи, имеющие некоторый опыт работы с
… IDA, здесь, возможно, возразят: мол, какие проблемы?
.text:08000D18 loc_8000D18: ; CODE XREF: .text:08000C0D↑j
.text:08000D18 dec eax Подогнал курсор к первому символу, следующему за кон-
.text:08000D19 jns short loc_8000D53 цом ASCIIZ-строки, нажал на <C>, и… дизассемблер мгно-
.text:08000D1B jmp short loc_8000D2B
… венно распахнул код вируса, живописно вплетенный в
.text:08000D53 loc_8000D53: ; CODE XREF: .text:08000D19↑j текстовые строки (см. листинг 7). На самом деле так слу-
.text:08000D53 inc eax
.text:08000D54 mov [ebp+8000466h], eax чается только в теории. Среди нечитабельных символов
.text:08000D5A mov edx, eax вируса присутствуют и читабельные тоже. Эвристический
.text:08000D5C jmp short loc_8000D6C
анализатор IDA, ошибочно приняв последние за «настоя-
Кстати говоря, рассмотренный нами алгоритм не со- щие» текстовые строки, просто не позволит их дизассем-
всем корректен. Цепочка NOP может встретиться в лю- блировать. Ну, во всяком случае до тех пор, пока они явно
бом месте программы (например, внутри функции), и тог- не будут «обезличены» нажатием клавиши <U>. К тому
да зараженный файл перестанет работать. Чтобы этого же вирус может вставлять в начало каждого своего фраг-
не произошло, некоторые вирусы выполняют ряд допол- мента специальный символ, являющийся частью той или
нительных проверок, в частности убеждаются, что NOP иной машинной команды и сбивающий дизассемблер с
расположены между двумя функциями, опознавая их по толку. В результате IDA дизассемблирует всего лишь
командам пролога/эпилога. один-единственный фрагмент вируса (да и тот некоррек-
Внедрение в секцию данных осуществляется еще про- тно), после чего заткнется, подталкивая нас к индуктив-
ще. Вирус ищет длинную цепочку нулей, разделенную ному выводу, что мы имеем дело с легальной структурой
читабельными (точнее – printable) ASCII-символами и, най- данных, и зловредный машинный код здесь отродясь не
дя таковую, полагает, что он находится на ничейной тер- ночевал.
ритории, образовавшейся в результате выравнивания тек- Увы! Какой бы могучей IDA ни была, она все-таки не
стовых строк. Поскольку текстовые строки все чаще рас- всесильна, и над всяким полученным листингом вам еще
полагаются в секции .rodata, доступной лишь на чтение, предстоит поработать. Впрочем, при некотором опыте
вирус должен быть готов сохранять все модифицируемые дизассемблирования многие машинные команды распоз-
им ячейки на стеке и/или динамической памяти. наются в HEX-дампе с первого взгляда (пользуясь случа-
Забавно, но вирусы этого типа достаточно трудно об- ем, отсылаю вас к «Технике и философии хакерских атак/
наружить. Действительно, наличие нечитабельных ASCII- дизассемблирование в уме», ставшей уже библиографи-
символов между текстовыми строками – явление вполне ческой редкостью, т.к. ее дальнейших переизданий уже
нормальное. Может быть, это смещения или еще какие не планируется):
структуры данных, на худой конец – мусор, оставленный
линкером! Ëèñòèíã 7. Ôðàãìåíò ôàéëà, çàðàæåííîãî âèðóñîì
UNIX.NuxBe.jullet, «0ðàçìàçûâàþùèì» ñåáÿ ïî ñåêöèè äàííûõ
Взгляните на рисунок 5, приведенный ниже. Согласитесь,
что факт зараженности файла вовсе не так очевиден: .rodata:08054140 aFileNameTooLon db 'File name too long',0
.rodata:08054153 ; ----------------------------------------
.rodata:08054153 mov ebx, 1
.rodata:08054158 mov ecx, 8049A55h
.rodata:08054158 jmp loc_80541A9
.rodata:08054160 ; ---------------------------------------
.rodata:08054160 aTooManyLevelsO db 'Too many levels ↵
of symbolic links',0
.rodata:08054182 aConnectionRefu db 'Connection refused',0
.rodata:08054195 aOperationTimed db 'Operation timed out',0
.rodata:080541A9 ; ---------------------------------------
.rodata:080541A9 loc_80541A9:
.rodata:080541A9 mov edx, 2Dh
.rodata:080541AE int 80h ; LINUX -
.rodata:080541B0 mov ecx, 51000032h
.rodata:080541B5 mov eax, 8
.rodata:080541BA jmp loc_80541E2
.rodata:080541BA ; ---------------------------------------
.rodata:080541BF db 90h ; Ð
.rodata:080541C0 aTooManyReferen db 'Too many references: ↵
can',27h,'t splice',0
.rodata:080541E2 ; ---------------------------------------
.rodata:080541E2 loc_80541E2:
.rodata:080541E2 mov ecx, 1FDh
.rodata:080541E7 int 80h ; LINUX - sys_creat
.rodata:080541E9 push eax
.rodata:080541EA mov eax, 0
.rodata:080541EF add [ebx+8049B43h], bh
.rodata:080541F5 mov ecx, 8049A82h
.rodata:080541FA jmp near ptr unk_8054288
.rodata:080541FA ; ---------------------------------------
.rodata:080541FF db 90h ; Ð
.rodata:08054200 aCanTSendAfterS db 'Can',27h,'t send ↵
after socket shutdown',0
16
безопасность
! все хвостовые секции сегмента смещаются вниз, при ку визуально структура файла выглядит неискаженной.
этом поле sh_offset каждой из них увеличивается на Однако некоторые зацепки все-таки есть. Во-первых, ори-
длину тела вируса (если вирус внедряется в последнюю гинальная точка входа подавляющего большинства фай-
секцию сегмента, этого делать не нужно); лов расположена в начале кодовой секции, а не в ее кон-
! вирус дописывает себя к концу заражаемого сегмен- це. Во-вторых, зараженный файл имеет нетипичный стар-
та, физически смещая содержимое всей остальной ча- товый код (подробнее об этом рассказывалось в преды-
сти файла вниз; дущей статье). И, в-третьих, далеко не все вирусы забо-
! для перехвата управления вирус корректирует точку тятся о выравнивании сегментов (секций).
входа в файл (e_entry) либо же внедряет в истинную Последний случай стоит рассмотреть особо. Систем-
точку входа jmp на свое тело (впрочем, методика пе- ному загрузчику, ничего не знающему о существова-
рехвата управления – тема отдельного большого раз- нии секций, степень их выравнивания некритична. Тем
говора). не менее, во всех нормальных исполняемых файлах сек-
ции тщательно выровнены на величину, указанную в
Прежде чем приступить к обсуждению характерных поле sh_addralign. При заражении файла вирусом пос-
«следов» вирусного внедрения, давайте посмотрим, ка- ледний далеко не всегда оказывается так аккуратен, и
кие секции в каких сегментах обычно бывают расположе- некоторые секции могут неожиданно для себя очутить-
ны. Оказывается, схема их распределения далеко не од- ся по некратным адресам. Работоспособности програм-
нозначна и возможны самые разнообразные вариации. В мы это не нарушит, но вот факт вторжения вируса сра-
одних случаях секции кода и данных помещаются в от- зу же демаскирует.
дельные сегменты, в других – секции данных, доступные Сегменты выравнивать тоже необязательно (при не-
только на чтение, объединяются с секциями кода в еди- обходимости системный загрузчик сделает это сам), од-
ный сегмент. Соответственно и последняя секция кодо- нако программистский этикет предписывает выравнивать
вого сегмента каждый раз будет иной. секции, даже если поле p_align равно нулю (т.е. выравни-
Большинство файлов включает в себя более одной вания не требуется). Все нормальные линкеры выравни-
кодовой секции, и располагаются эти секции приблизи- вают сегменты по крайней мере на величину, кратную
тельно так: 32 байтам, хотя это происходит и не всегда. Тем не ме-
нее, если сегменты, следующие за сегментом кода, вы-
Ëèñòèíã 10. Ñõåìà ðàñïîëîæåíèÿ êîäîâûõ ñåêöèé òèïè÷íîãî ôàéëà ровнены на меньшую величину – к такому файлу следует
.init ñîäåðæèò èíèöèàëèçàöèîííûé êîä присмотреться повнимательнее.
.plt ñîäåðæèò òàáëèöó ñâÿçêè ïîäïðîãðàìì Другой немаловажный момент: при внедрении вируса
.text ñîäåðæèò îñíîâíîé êîä ïðîãðàììû
.fini ñîäåðæèò òåðìèðóþùèé êîä ïðîãðàììû в начало кодового сегмента он может создать свой соб-
ственный сегмент, предшествующий данному. И тут ви-
Присутствие секции .finit делает секцию .text не после- рус неожиданно сталкивается с довольно интересной про-
дней секцией кодового сегмента файла, как чаще всего и блемой. Сдвинуть кодовый сегмент вниз он не может, т.к.
происходит. Таким образом, в зависимости от стратегии тот обычно начинается с нулевого смещения в файле,
распределения секций по сегментам, последней секцией перекрывая собой предшествующие ему сегменты. За-
файла обычно является либо секция .finit, либо .rodata. раженная программа в принципе может и работать, но
Секция .finit в большинстве своем это такая крохот- раскладка сегментов становится слишком уж необычной,
ная секция, заражение которой трудно оставить неза- чтобы ее не заметить.
меченным. Код, расположенный в секции .finit и непос- Выравнивание функций внутри секций – это вообще
редственно перехватывающий на себя нить выполне- вещь (в смысле: вещдок – вещественное доказательство).
ния программой, выглядит несколько странно, если не Кратность выравнивания функций нигде и никак не дек-
сказать – подозрительно (обычно управление на .finit ларируется, и всякий программист склонен выравнивать
передается косвенным образом как аргумент функции функции по-своему. Одни используют выравнивание на
atexit). Вторжение будет еще заметнее, если последней адреса, кратные 04h, другие – 08h, 10h или даже 20h! Оп-
секцией в заражаемом сегменте окажется секция ределить степень выравнивания без качественного дизас-
.rodata (машинный код при нормальном развитии со- семблера практически невозможно. Требуется выписать
бытий в данные никогда не попадает). Не остается не- стартовые адреса всех функций и найти наибольший де-
замеченным и вторжение в конец первой секции кодо- литель, на который все они делятся без остатка. Дописы-
вого сегмента (в последнюю секцию сегмента, предше- вая себя в конец кодового сегмента, вирус наверняка
ствующему кодовому сегменту), поскольку кодовый ошибется с выравниванием адреса пролога функции (если
сегмент практически всегда начинается с секции .init, он вообще позаботится о создании функции в этом мес-
вызываемой из глубины стартового кода и по обыкно- те!), и он окажется отличным от степени выравнивания,
вению содержащей пару-тройку машинных команд. принятой всеми остальными функциями (попутно заме-
Вирусу здесь будет просто негде затеряться, и его при- тим, что определять степень выравнивания при помощи
сутствие сразу же становится заметным! дизассемблера IDA PRO – плохая идея, т.к. она определя-
Более совершенные вирусы внедряются в конец сек- ет ее неправильно, закладываясь на наименьшее возмож-
ции .text, сдвигая все остальное содержимое файла вниз. ное значение, в результате чего вычисленная степень вы-
Распознать такую заразу значительно сложнее, посколь- равнивания от функции к функции будет варьироваться).
18
безопасность
деляют ровно 8002180h – 8000915h == 186Bh байт, и имен- ного тела программы, образуется своеобразный дефект.
но это число фигурирует в машинном коде (если же вы Скорее всего, даже наверняка, граница раздела двух сред
все еще продолжаете сомневаться, загляните в Intel пройдет посередине функции оригинальной программы,
Instruction Reference Set: команда E8h это команда отно- если еще не рассечет машинную команду. Дизассемблер
сительного вызова): покажет некоторое количество мусора и хвост функции с
отсутствующим прологом.
Ëèñòèíã 11. Ôðàãìåíò óòèëèòû ping, èñïîëüçóþùåé, êàê è ìíî-
ãèå äðóãèå ïðîãðàììû, îòíîñèòåëüíûå ññûëêè ìåæäó ñåêöèÿìè
êîäîâîãî ñåãìåíòà Создание своей собственной секции
Наиболее честный (читай – «корректный») и наименее
.init:08000910 _init proc near ↵
; CODE XREF: start+51↓p скрытный способ внедрения в файл состоит в создании
.init:08000910 E8 6B 18 00 00 call sub_8002180 своей собственной секции (сегмента), а то и двух секций –
.init:08000915 C2 00 00 retn 0
.init:08000915 _init endp для кода и для данных соответственно. Разместить та-
… кую секцию можно где угодно. Хоть в начале файла, хоть
.text:08002180 sub_8002180 proc near ↵
; CODE XREF: _init↑p в конце (вариант внедрения в сегмент с раздвижкой со-
седних секций мы уже рассматривали выше).
Неудивительно, что после заражения файл перестает
работать (или станет работать некорректно)! Но если это Ëèñòèíã 12. Êàðòà ôàéëà, çàðàæåííîãî âèðóñîì, âíåäðÿþùèìñÿ
â ñîáñòâåííîðó÷íî ñîçäàííóþ ñåêöèþ è ýòèì ñåáÿ äåìàñêèðóþ-
все-таки произошло, загрузите файл в отладчик/дизас- ùèì (ïîäðîáíåå îá ýòîì ðàññêàçûâàëîñü â ïðåäûäóùåé ñòàòüå
семблер и посмотрите – соответствуют ли относительные ýòîãî öèêëà «Áîðüáà ñ âèðóñàìè – îïûò êîíòðòåððîðèñòè÷åñêèõ
îïåðàöèé», â îêòÿáðüñêîì íîìåðå æóðíàëà)
вызовы первых кодовых секций пункту своего назначе-
ния. Вы легко распознаете факт заражения, даже не бу-
дучи специалистом в области реинжиниренга.
В этом мире ничего не дается даром! За скрытность
вирусного вторжения последнему приходится расплачи-
ваться разрушением большинства заражаемых файлов.
Более корректные вирусы располагают свое тело в нача-
ле кодового сегмента – в секции .init. Работоспособность
заражаемых файлов при этом не нарушается, но присут-
ствие вируса становится легко обнаружить, т.к. секция .init Внедрение между файлом и заголовком
редко бывает большой, и даже небольшая примесь по- Фиксированный размер заголовка a.out-файлов суще-
стороннего кода сразу же вызывает подозрение. ственно затруднял эволюцию этого, в общем-то неплохо-
го формата, и в конечном счете привел к его гибели. В
последующих форматах это ограничение было преодо-
лено. Так, в ELF-файлах длина заголовка хранится в двух-
байтовом поле e_ehize, оккупировавшем 28h и 29h бай-
ты, считая от начала файла.
Увеличив заголовок заражаемого файла на величину,
равную длине своего тела, и сместив оставшуюся часть
файла вниз, вирус сможет безболезненно скопировать
себя в образовавшееся пространство между концом на-
стоящего заголовка и началом Program Header Table. Ему
Ðèñóíîê 7. Òèïîâàÿ ñõåìà çàðàæåíèÿ èñïîëíÿåìîãî ôàéëà ïóòåì даже не придется увеличивать длину кодового сегмента,
ðàñøèðåíèÿ åãî êîäîâîé ñåêöèè поскольку в большинстве случаев тот начинается с само-
Некоторые вирусы (например, вирус Linux.NuxBee) за- го первого байта файла. Единственное, что будет вынуж-
писывают себя поверх кодового сегмента заражаемого ден сделать вирус, сдвинуть поля p_offset всех сегментов
файла, перемещая затертую часть в конец кодовой сек- на соответствующую величину вниз. Сегмент, начинаю-
ции (или, что более просто, в конец последнего сегмента щийся с нулевого смещения, никуда перемещать не надо,
файла). Получив управление и выполнив всю работу «по иначе вирус не будет спроецирован в память. (Смещения
хозяйству», вирус забрасывает кусочек своего тела в стек сегментов в файле отсчитываются от начала файла, но
и восстанавливает оригинальное содержимое кодового не от конца заголовка, что нелогично и идеологически
сегмента. Учитывая, что модификация кодового сегмен- неправильно, зато упрощает программирование). Поле
та по умолчанию запрещена и разрешать ее вирусу не e_phoff, задающее смещение Program Head Table, также
резон (в этом случае факт заражения очень легко обна- должно быть скорректировано.
ружить), вирусу приходится прибегать к низкоуровневым Аналогичную операцию следует проделать и со сме-
манипуляциям с атрибутами страниц памяти, вызывая щениями секций, в противном случае отладка/дизассем-
функцию mprotect, практически не встречающуюся в «че- блирование зараженного файла станет невозможной (хотя
стных» приложениях. файл будет нормально запускаться). Существующие ви-
Другой характерный признак: в том месте, где конча- русы забывают скорректировать содержимое полей
ется вирус и начинается незатертая область оригиналь- sh_offset, чем и выдают себя, однако следует быть гото-
20
безопасность
jmp. А найдя таковую, подменяют вызываемый адрес на но, если тело вируса зашифровано, вирус использует хеш-
адрес своего тела. Несмотря на кажущуюся неуловимость, сравнение или же другие хитрые приемы программиро-
обнаружить такой способ перехвата управления очень вания, строки «ELF» в теле зараженного файла не ока-
легко. Первое и главное – вирус, в отличие от легально жется, но более чем в половине всех существующих UNIX-
вызываемых функций, никак не использует переданные вирусов она все-таки есть, и этот прием, несмотря на свою
ему в стеке аргументы. Он не имеет никаких понятий об изумительную простоту, очень неплохо работает.
их числе и наличии (машинный анализ количества пере- Загрузите исследуемый файл в любой HEX-редактор
данных аргументов немыслим без интеграции в вирус и попробуйте отыскать строку « ELF». В зараженном фай-
полноценного дизассемблера, оснащенного мощным ин- ле таких строк будет две – одна непосредственно в заго-
теллектуальным анализатором). Вирус тщательно сохра- ловке, другая – в кодовой секции или секции данных. Толь-
няет все изменяемые регистры, опасаясь, что функции ко не используйте дизассемблер! Очень многие вирусы
могут использовать регистровую передачу аргументов с преобразуют строку « FELF» в 32-разрядную целочис-
неизвестным ему соглашением. Самое главное – при пе- ленную константу 464С457Fh, которая маскирует присут-
редаче управления оригинальной функции вирус должен ствие вируса, но при переключении в режим дампа сразу
либо удалить с верхушки стека адрес возврата (в против- же «проявляется» на экране. Ниже приведен внешний вид
ном случае их там окажется два) либо вызывать ориги- файла, зараженного вирусом VirTool.Linux.Mmap.443, ко-
нальную функцию не командой call, но командой jmp. Для торый использует именно такую методику:
«честных» программ, написанных на языках высокого
уровня, и то и другое крайне нетипично, благодаря чему
вирус оказывается немедленно разоблачен.
Вирусы, перехватывающие управление в произволь-
ной точке программы (зачастую чрезвычайно удаленной
от точки входа), выявить намного труднее, поскольку при-
ходится анализировать довольно большие, причем зара-
нее не определенные, объемы кода. Впрочем, с удалени-
ем от точки входа стремительно возрастает риск, что дан-
ная ветка программы никогда не получит управление,
поэтому все известные мне вирусы не выходят за грани-
цы первого встретившегося им RET.
Ðèñóíîê 9. Ôðàãìåíò ôàéëà, çàðàæåííîãî âèðóñîì
Основные признаки вирусов VirTool.Linux.Mmap.443. Â HEX-äàìïå ëåãêî îáíàðóæèâàåòñÿ ñòðîêà
«ELF», èñïîëüçóåìàÿ âèðóñîì äëÿ ïîèñêà æåðòâ «ñâîåãî» òèïà
Искажение структуры исполняемых файлов – характер-
ный, но недостаточный признак вирусного заражения. Вирус Linux.Winter.343 (также известный под именем
Быть может, это защита хитрая такая или завуалирован- Lotek) по этой методике обнаружить не удается, посколь-
ный способ самовыражения разработчика. К тому же не- ку он использует специальное математическое преобра-
которые вирусы ухитряются внедриться в файл практи- зование, зашифровывая строку « ELF» на лету:
чески без искажений его структуры. Однозначный ответ
дает лишь полное дизассемблирование исследуемого Ëèñòèíã 13. Ôðàãìåíò âèðóñà Lotek, òùàòåëüíî ñêðûâàþùåãî
ñâîé èíòåðåñ ê ELF-ôàéëàì
файла, однако это слишком трудоемкий способ, требую-
щий усидчивости, глубоких знаний операционной систе- .text:08048473 mov eax, 0B9B3BA81h ↵
; -"ELF" (ìèíóñ "ELF")
мы и неограниченного количества свободного времени. .text:08048478 add eax, [ebx] ↵
Поэтому на практике обычно прибегают к компромиссно- ; ïåðâûå ÷åòûðå áàéòà æåðòâû
.text:0804847A jnz short loc_804846E ↵↵
му варианту, сводящемуся к беглому просмотру дизас- ; → ýòî íå ELF
семблерного листинга на предмет поиска основных при-
знаков вирусного заражения. Непосредственное значение B9B3BA81h, соответству-
Большинство вирусов использует довольно специфи- ющее текстовой строке « » (в приведенном выше лис-
ческий набор машинных команд и структур данных, прак- тинге оно выделено жирным шрифтом), представляет
тически никогда не встречающихся в «нормальных» при- собой не что иное, как строку « ELF», преобразованную
ложениях. Конечно, разработчик вируса при желании мо- в 32-разрядную константу и умноженную на минус едини-
жет все это скрыть, и распознать зараженный код тогда цу. Складывая полученное значение с четырьмя первы-
не удастся. Но это в теории. На практике же вирусы обыч- ми байтами жертвы, вирус получает ноль, если строки
но оказываются настолько тупы, что обнаруживаются за равны, и ненулевое значение в противном случае.
считанные доли секунды. Как вариант, вирус может дополнять эталонную стро-
Ведь чтобы заразить жертву, вирус прежде должен ее ку « ELF» до единицы, и тогда в его теле будет присут-
найти, отобрав среди всех кандидатов только файлы «сво- ствовать последовательность 80 BA B3 B9. Реже встре-
его» типа. Для определенности возьмем ELF. Тогда ви- чаются циклические сдвиги на одну, две, три… и семь
рус будет вынужден считать его заголовок и сравнить позиций в различные стороны, неполные проверки (т.е.
четыре первых байта со строкой « FELF», которой соот- проверки на совпадение двух или трех байт) и некоторые
ветствует ASCII-последовательность 7F 45 4C 46. Конеч- другие операции – всех не перечислишь!
22
безопасность
вводит IDA в замешательство, лишая ее возможности Поэтому присутствие стартового кода в исследуемом
определения имен последних: файле, не дает нам никаких оснований считать его здо-
ровым.
Ëèñòèíã 14. Ôðàãìåíò âèðóñà Linux.ZipWorm, àêòèâíî è íåáå-
çóñïåøíî ïðîòèâîñòîÿùåãî äèçàññåìáëåðó IDA Pro
Ëèñòèíã 16. Àëüòåðíàòèâíûé ïðèìåð íîðìàëüíîé ñòàðòîâîé ôóíêöèè
.text:080483C0 push 13h
.text:080483C2 push 2 .text:08048330 public start
.text:080483C4 sub ecx, ecx .text:08048330 start proc near
.text:080483C6 pop edx .text:08048330 xor ebp, ebp
; // EAX := 2. Ýòî âûçîâ fork .text:08048332 pop esi
.text:080483C7 pop eax .text:08048333 mov ecx, esp
; LINUX – ← IDA íå ñìîãëà îïðåäåëèòü èìÿ âûçîâà! .text:08048335 and esp, 0FFFFFFF8h
.text:080483C8 int 80h .text:08048338 push eax
.text:08048339 push esp
.text:0804833A push edx
С одной стороны, вирус действительно добился постав- .text:0804833B push offset sub_804859C
ленной перед ним цели, и дизассемблерный листинг с .text:08048340 push offset sub_80482BC
.text:08048345 push ecx
отсутствующими автокомментариями с первого присту- .text:08048346 push esi
па не возьмешь. Но давайте попробуем взглянуть на си- .text:08048347 push offset loc_8048430
.text:0804834C call ___libc_start_main
туацию под другим углом. Сам факт применения антиот- .text:08048351 hlt
ладочных приемов уже свидетельствует если не о зара- .text:08048352 nop
.text:08048353 nop
жении, то во всяком случае о ненормальности ситуации. .text:08048353 start endp
Так что за противодействие анализу исследуемого фай-
ла вирусу приходится расплачиваться ослабленной мас- Большинство зараженных файлов выглядит иначе. В
кировкой (в программистских кулуарах по этому случаю частности, стартовый код вируса PolyEngine.Linux.LIME.poly
обычно говорят «из зараженного файла вирусные уши выглядит так:
торчат»).
Уши будут торчать еще и потому, что большинство Ëèñòèíã 17. Ñòàðòîâûé êîä âèðóñà PolyEngine.Linux.LIME.poly
вирусов никак не заботится о создании стартового кода ; Alternative name is 'main'
или хотя бы плохонькой его имитации. В точке входа «че- .data:080499C1 LIME_END:
.data:080499C1 mov eax, 4
стной» программы всегда (ну или практически всегда) .data:080499C6 mov ebx, 1
расположена нормальная функция с классическим про- ; "Generates 50 [LiME] encrypted…"
.data:080499CB mov ecx, offset gen_msg
логом и эпилогом, автоматически распознаваемая дизас- .data:080499D0 mov edx, 2Dh
семблером IDA Pro, вот например: ; LINUX – sys_write
.data:080499D5 int 80h
.data:080499D7 mov ecx, 32h
Ëèñòèíã 15. Ïðèìåð íîðìàëüíîé ñòàðòîâîé ôóíêöèè ñ êëàññè-
÷åñêèì ïðîëîãîì è ýïèëîãîì
text:080480B8 start
text:080480B8
proc near Заключение
text:080480B8 push ebp Несмотря на свой, прямо скажем, далеко не маленький
text:080480B9 mov ebp, esp размер, настоящая статья охватила далеко не весь круг
text:080480BB sub esp, 0Ch
… изначально намеченных тем. Незатронутыми остались
text:0804813B ret вопросы «прорыва» виртуальной машины интерпретато-
text:0804813B start endp
ром, техника выявления Stealth-вирусов и противодей-
В некоторых случаях стартовые функции передают ствия им, жизненный цикл червей и комплекс мер, направ-
бразды правления libc_start_main и заканчиваются по hlt ленных на предотвращение возможного вторжения…
без ret. Это вполне нормальное явление. «Вполне» пото- Обо всем этом и многом другом мы поговорим в сле-
му что очень многие вирусы, написанные на ассемблере, дующий раз, если, конечно, к тому времени эта тема ни-
получают в «подарок» от линкера такой же стартовый код. кому не надоест…
СЕРГЕЙ ЯРЕМЧУК
24
безопасность
На новый сервер установлен Linux последнего выпуска, очень было затруднительно, и сисадмин считал, что работа-
убраны все лишние сервисы, firewall настроен так, что ет на чистой системе. Эти программы были объединены в
завидуют друзья. Теперь можно сидеть почитывать худо- единый комплект утилит, названный «Root Kits», исходно раз-
жественную литературу и попивать кофе. А вот и нет. Так работанные Lord Somer, сегодня находятся уже в шестой
может думать админ, который ни разу не пробовал свои версии с несколькими вариантами. Версия 3 – Linux Root Kit
силы во взломе своих систем. 3 (lrk3) от декабря 1996 года содержала обычные методы
К сожалению, находясь на курсах, заметил странную перехвата паролей и сокрытия действий. Администратор,
закономерность. Некоторые из присутствующих вслепую зная входящие в комплект файлы, мог вычислить заражен-
доверяли firewall, основываясь, как правило, на очень про- ные путем просмотра в текстовом редакторе, сравнивая
стом предположении, что если он отсеивает ненужную строки в файлах, кроме того, команда find могла сообщить
часть трафика, то взломщику просто нет путей для про- обо всех измененных за 24 часа файлах. Следующая вер-
никновения на компьютер. Да, действительно, firewall, дей- сия lrk4, выпущенная в ноябре 1998 года, получила еще
ствуя по классической схеме «свой-чужой», отсекает не- несколько измененных программ (pidof, killall, find, top,
угодные администратору пакеты. Но если, например, от- crontab ...), позволяющих взять систему под больший конт-
крыт 80 порт для доступа к веб-серверу, то и пакеты, на- роль. Чтобы администратор системы не заметил измене-
правленные на такой порт, беспрепятственно пройдут че- ний, они были защищены паролем (по умолчанию satori),
рез него и, естественно, следуя законам Мерфи, обязатель- который можно было заменить при компиляции. Но у rootkits
но найдется уязвимость в таком «легальном» сервисе, не такого класса есть один существенный недостаток, а имен-
говоря уже, что сам firewall может стать объектом атаки. но они изменяют файлы на диске и поэтому могут быть
Дальше, как говорится, все это уже дело времени. обнаружены при сравнении контрольных сумм. Так что при
Чтобы иметь возможность и далее возвращаться во ее контроле такой rootkit выявить труда не составляло. Но
взломаную систему, при этом, чтобы сисадмин не мог их прогресс на месте не стоял, и был разработан новый класс
увидеть, а система их действия не регистрировала, напа- rootkit, способных поражать ядро, использующих модули
дающий устанавливает современный вариант троянско- ядра (Linux Kernel Module – LKM). Номер 50 (от апреля 1997
го коня, набор утилит – rootkits. Обычно в этот набор вхо- года) журнала Phrack содержал краткую, но очень поучи-
дит sniffer, при помощи которого прослушивается сеть для тельную статью «Abuse of the Linux Kernel for Fun and Profit»
возможного перехвата ценной информации (пароля, на- (p50-05), после которой уже нельзя было полностью дове-
пример), модифицированный набор основных системных рять своему ядру. Принцип работы такого rootkit прост.
программ (ps, ls, who, find, netstat, ifconfig ...), скрипты для Как известно, применение модулей ядра позволяет рас-
чистки логов. Для дистанционного управления запуска- ширить возможности ядра операционной системы без не-
ется нелегальный демон удаленного доступа, открываю- обходимости его перекомпиляции. Злоумышленник пишет
щий сетевой порт, который «не замечают» модифициро- код модуля ядра и загружает его. В дальнейшем, работая в
ванные утилиты. При этом, чтобы сохранить максималь- пространстве ядра, такой модуль перехватывает системные
ное приближение к оригинальному файлу, трояненные вызовы и модифицирует ответ по своему предназначению,
утилиты имитируют ту же дату создания файла и размер. скрывая таким образом взлом системы. Но теперь взлом-
щик получает практически безграничную власть в системе.
Небольшая история развития rootkits Он может без проблем фильтровать логи, прятать файлы и
В начале 80-х все было скучно до безобразия. Команда last процессы, выходить за пределы chroot, скрывать состояние
показывала, кто и когда хулиганил в системе, команды ls и системы и многое другое, зависящее только от фантазии
ps выдавали новые файлы и неизвестные процессы, netstat взломщика. Программы контроля целостности типа Tripwire
сообщала текущие сетевые подключения и порты, на кото- бесполезны против этого класса rootkit. Боролись с этим злом
рых слушались входящие подключения, команда ifconfig со- на первом этапе, контролируя добавление и удаление моду-
общала администратору, если интерфейс локальной сети лей, ограничением круга пользователей (демонов), которые
на основе протокола ethernet был установлен в «неопреде- могли работать с модулями или вообще отказом от их ис-
ленный» (PROMISCIOUS) режим, означающий работу про- пользования (т.е. ответ N в опции CONFIG_MODULES) и
граммы-сниффера, следы его пребывания можно было так- собирая монолитное ядро. Некоторое время это как-то по-
же отыскать в /var/log/messages. Естественно, такое поло- могало, но Сильвио Цезаре (Silvio Cesare) обосновал воз-
жение дел не устраивало взломщиков, и были придуманы можность загрузки модуля в ядро, используя устройство
методы, позволяющие скрыть их действия. Описание этих /dev/kmem, управляющее памятью ядра, и написал програм-
методов появились в некоторых электронных и печатных му kinsmod, позволяющую проделать это, хотя это все на-
журналах, таких, как 2600 (http://www.2600.com/phrack/) или много сложнее. Для информации загляните на его страницу
Phrack (http://www.phrack.org/). Например, статья «Hiding Out http://www.big.net.au/~silvio/, там до недавнего времени ле-
Under Unix» Black Tie Affair (25 номер, файл р25-06) описы- жал файл runtime-kernel-kmem-patching.txt, но сейчас поче-
вает возможность, и приводится исходный код, позволяю- му-то пропал или, например, целых три статьи в номере 58
щий путем модификации файла /etc/wtmp скрыть свое пре- (файлы р58-0х06, р58-0х07, р58-0х08) журнала Phrack «Sub
бывание в системе. И понеслось, через некоторое время по- proc_root Quando Sumus (Advances in Kernel Hacking)», «Linux
явились программы, «умеющие» модифицировать свой on-the-fly kernel patching without LKM» и «IA32 ADVANCED
timestamp и подгонять размер под требуемый. Теперь такие FUNCTION HOOKING», и есть информация в следующих
программы, содержащие троян, отличить от оригинальных номерах журнала.
26
безопасность
# ./chkrootkit При помощи утилиты кstat, ссылку на которую можно
ROOTDIR is `/' найти на http://s0ftpj.org/en/site.html, можно исследовать
Checking `amd'... not found
Checking `basename'... not infected /dev/kmem. Для установки понадобится наличие исход-
Checking `biff'... not found ных текстов ядра и при компиляции нового ядра утилиту
Checking `chfn'... not infected
необходимо обязательно пересобрать.
и так далее. При помощи ключа -Р можно просмотреть полный спи-
Утилита имеет три, на мой взгляд, заслуживающих сок процессов, включая спрятанные LKM (при иследова-
ключа работы. Если хотите проверить систему, загрузив- нии проблемы, для интереса сравните с ps aux), получить
шись с другого компьютера или при помощи LiveCD, то подробную информацию о процессе можно, воспользо-
при помощи ключа -r можно указать каталог, который бу- вавшись ключом -р с указанием pid.
дет использован как корневой при поиске.
# kstat –p 270
# ./chkrootkit -r /mnt/test
Для вывода таблицы адресов системного вызова ис-
Так как chkrootkit использует для своей работы некото- пользуйте флаг -s:
рые типичные Unix-утилиты (awk, cut, egrep, find,head, id, ls,
netstat, ps, strings, sed, uname), которые могут быть компро- # kstat –s
SysCall Address
метированы, то во избежание ошибки при поиске необходи- sys_exit 0xc0117ce4
мо использовать статически скомпилированные версии этих sys_fork 0xc0108ebc
sys_read 0xc012604c
утилит (опять же сохранив их где-нибудь подальше), а ката-
лог, где они находятся, указать при помощи ключа -p: и так далее.
И теперь, периодически сравнивая полученные значе-
# ./chkrootkit -p /mnt/safebin ния, можно проверять наличие данного вида rootkit в сис-
теме. И если на выходе получим что-то похожее на:
Для исследования подозрительных строк в двоичных
файлах можно ее запустить в опытном режиме, исполь- sys_kill 0xc28465d4 WARNING! Should be at 0xc01106b4
зовав ключ -х:
то стоит немного призадуматься над тем, что творится в
# ./chkrootkit -x | more системе.
Второй проект Стефана Ауберта (Stephane Aubert) Rkscan
Утилита ifpromisc позволяет определить, находится ли (http://www.hsc.fr/ressources/outils/rkscan/download/) предлага-
сетевой интерфейс в PROMISCIOUS-режиме. ет инструмент для автоматического определения наличия
очень популярных LKM rootkit Adore (http://spider.scorpions.net/
#./ ifpromisc ~stealth/) и knark (http://packetstrom.securify.com). Здесь все
eth0 is not promisc
просто: скачиваем, распаковываем, компилируем.
За обнаружения троянов в модулях ядра отвечают ути-
литы chkproc и chkdirs. Утилиты chklastlog, chkwtmp и # gcc -o rkscan rkscan1.0.c
check_wtmpx проверяют удаление данных в лог-файлах,
strings обеспечивает работу со строками. И еще на сайте И запускаем под обычным пользователем, потому что
утилиты имеется большое количество ссылок на матери- под root программа ругается и работать не хочет.
алы по теме статьи.
Команда find (если ей можно доверять) может обнару- *** Don't run this scanner as root ! ***
$ ./rkscan
жить файлы и каталоги, чьи имена начинаются с точки -=- Rootkit Scanner -=-
(или с пробела с точкой), которые обычно используют -=- by Stephane.Aubert@hsc.fr -=-
взломщики для хранения своих данных. Scanning for ADORE version 0.14, 0.24 and 2.0b ...
ADORE rootkit NOT DETECTED on this system.
# find / -name "*.*" Scanning for KNARK version 0.59 ...
KNARK rootkit NOT DETECTED on this system.
Утилита rkdet (http://vancouver-webpages.com/rkdet/) Done.
представляет собой демон, который обнаруживает попыт-
ку установки rootkit или сниффера. При обнаружении та- И конечно же, врага надо знать в лицо, поэтому, чтобы
кой попытки системному администратору посылается уве- знать, чего можно действительно ожидать от того или ино-
домление по e-mail, протоколирует его в logfile, может от- го rootkit, можно только при очень детальном их исследо-
ключить систему от сети или вовсе остановить ее. Не тре- вании. Вы можете скачать и попробовать различные rootkit
бует перекомпиляции вместе с ядром. в действии (только в учебных целях!) с сайта packetstorm
Единственный путь обнаружения LKM rootkit – это ана- (http://packetstorm.decepticons.org/UNIX/penetration/rootkits/).
лиз системной памяти. Один из способов состоит в срав- Вот в принципе и все, что хотелось рассказать сегодня.
нении адреса системного вызова, который rootkit изменя- Вывод один – админ должен быть немного параноиком, пото-
ют на свой. му что нападающий всегда идет на шаг впереди. Успехов.
БЕЗОПАСНОСТЬ
БЕСПРОВОДНЫХ СЕТЕЙ
ВИКТОР ИГНАТЬЕВ
28
безопасность
На сегодняшний день Россия является одной из наибо- Технология xG – технология модуляции, обеспечиваю-
лее развивающихся стран в индустрии информационных щая возможность высокоскоростной радиопередачи дан-
технологий, но развивающейся не с точки зрения созда- ных по узкой полосе частот. Она позволяет передавать
ния новых технологий, а с точки зрения увеличения еди- данные на скорости 150 Мбит/c и выше в низкочастотном
ниц компьютерной техники в год. Каждый человек при- диапазоне, используемом для пейджинга (35-150 Гц).
обретает компьютер ради какой-то цели: начинающие Сфера применения технологии – DSL, кабельное телеви-
фирмы покупают компьютерную технику больше для пре- дение, локальные сети и т. п.
стижа, чем для реальных задач, в то время как крупные Технология HomeRF 1.0 нацелена на построение бес-
компании и корпорации уже не могут представить свой проводных сетей в частных домовладениях и малых
бизнес без существования компьютеров. Соответствен- офисах. Оборудование HomeRF работает в диапазоне
но с увеличением числа компьютерной техники в офи- частот 2,4 ГГц, для передачи трафика используется
сах появляется проблема передачи данных с одной ра- метод расширения спектра со скачкообразной пере-
бочей станции на другую. Эта проблема решается про- стройкой частоты.
водкой сети. Если количество машин около 40-50 штук, В марте 2001 г. появилась модернизация – HomeRF
это ещё можно стерпеть, и протянуть ~500 метров кабе- 2.0. В новом стандарте заметно увеличилась поддержи-
ля и расставить маршрутизаторы/свитчи/хабы, но что ваемая скорость обмена данными до 10 Мбит/с, а также
делать, если речь идёт о крупной корпорации, где ко- уровень шифрования на уровне MAC – 120 бит.
личество компьютеров и офисной техники исчисляется Стандарт IEEE 802.15.1 – Bluetooth предназначен для
сотнями? Закупать километры кабеля и десятки еди- построения так называемых персональных беспровод-
ниц сетевого оборудования? Нет. В XXI столетии люди ных сетей (Wireless Personal Area Network, WPAN). Бес-
научились передавать информацию по воздуху. Теперь проводная технология Bluetooth является стандартом
нет необходимости в проводах и кабелях. Технология связи на небольших расстояниях между мобильными
беспроводной передачи данных в России считается до- персональными компьютерами, мобильными телефона-
статочно новой, в то время как в Европе и США она ми и иными портативными устройствами. Изначально
уже стала обычной составляющей рабочего места IT- дальность действия радиоинтерфейса закладывалась
работника. В настоящее время большое количество равной 10 метрам, однако сейчас спецификациями
фирм покупают готовые решения на базе беспровод- Bluetooth уже определена и вторая зона около 100 м –
ных сетей и избавляют себя от массы организацион- для покрытия стандартного дома или вне его. При этом
ных проблем. Разумеется, стандартов беспроводной нет необходимости в том, чтобы соединяемые устрой-
связи существует немало, ниже приводятся характери- ства находились в зоне прямой видимости друг друга,
стики основных из них. их могут разделять «радиопрозрачные» препятствия
(стены, мебель и т. п.), и к тому же приборы могут на-
Разновидности протоколов ходиться в движении. Для работы радиоинтерфейса
и их характеристики Bluetooth используется так называемый нижний (2,45 ГГц)
Стандарт wireless 1394 – известная технология FireWire диапазон ISM (industrial, scientific, medical), предназна-
нашла для себя новую область применения – беспровод- ченный для работы промышленных, научных и медицин-
ные системы. Wireless Working Group в настоящее время ских приборов. Радиоканал обладает полной пропуск-
работает над адаптацией протоколов 1394 к беспровод- ной способностью в 1 Мбит/с, что обеспечивает созда-
ным средам, построенным на основе технологии 802.11, ние асимметричного канала передачи данных на скоро-
т.е. беспроблемным соединением между FireWire и сетя- стях 723,3/57,6 Кбит/с или полнодуплексного канала на
ми AirPort/WiFi. Основная идея этого протокола – защита скорости 433,9 Кбит/с.
цифровых аудио- и видеоданных от несанкционирован- Базовый стандарт IEEE 802.11. В его основу поло-
ного перехвата. жена сотовая архитектура, причем сеть может состо-
Стандарт HiperLAN2 – High Perfomance Radio LAN, как ять как из одной, так и из нескольких ячеек. Каждая
прогнозируют, может стать основным конкурентом тех- сота управляется так называемой точкой доступа –
нологий беспроводных сетей 802.11. Access Point (AP). Точка доступа вместе с подключен-
HiperLAN2 ориентирован на работу в диапазоне 5 ГГц ными рабочими станциями пользователей образует
и способен обеспечить скорость передачи данных до базовую зону обслуживания – Basic Service Set (BSS).
54 Мбит/с. Спецификации протокола доступа к среде MAC Точки доступа многосотовой сети взаимодействуют меж-
несколько другая, нежели чем у 802.11а. Для 802.11а он ду собой через распределительную систему Distribution
аналогичен Ethernet, а в HiperLAN2 больше напоминает System (DS), представляющую собой эквивалент маги-
АТМ. Так же HiperLAN2 имеет поддержку трафика муль- стрального сегмента кабельных сетей. Вся инфраструк-
тимедиа и QoS. тура, включающая точки доступа и распределительную
Стандарт 5-UP – протокол 5-GHz Unified Protocol (5-UP), систему, образует расширенную зону обслуживания –
обеспечивает возможность взаимодействия друг с другом Extended Service Set. Также предусмотрен односотовый
высокоскоростных и низкоскоростных устройств и передачу вариант беспроводной сети, который может быть реа-
мультимедийных потоков со скоростью до 108 Мбит/с. лизован и без точки доступа, при этом часть ее функ-
5-UP является расширением для беспроводных сетей IEEE, ций выполняются непосредственно рабочими станция-
ETSI. ми. Для обеспечения роуминга предусмотрены специ-
альные процедуры сканирования и присоединения – ных Заполярного ГКМ для обмена данными с буровыми
Association. площадками филиала «Тюменбургаз» ДООО «Бургаз».
Также существует ряд расширений протокола IEEE Сеть была окончательно развёрнута 31 декабря 2001 г.,
802.11, такие как: IEEE 802.11a, b-n. В таблицах 1 и 2 даны работает по стандарту Wi-Fi/802.11b. Рабочий диапазон ча-
сравнительные характеристики наиболее распространён- стот: 2400-2483 МГц. Радиус зоны действия сети: до 3 км
ных протоколов. (местная сеть на буровой площадке), до 25-35 км (магис-
В России уже имеется определённый опыт использо- тральный канал).
вания беспроводных сетей, вот некоторые примеры ра- Также можно привести пример функционирования сети
ботающих сетей. в тяжёлых погодных условиях. В марте 2001 г. был закон-
В октябре 2000 г. в Иваново завершился второй этап чен финальный этап развёртывания корпоративной сети
развёртки городской беспроводной сети. Сеть работает передачи данных для нескольких нефтегазодобывающих
по стандарту Wi-Fi/802.11b, на частоте 2,4-2,483 ГГц, со управлений (НГДУ) в районе городов Новый Уренгой и
скоростью 11 Мбит/с. Число поддерживаемых рабочих Пыть-Ях. Сеть работает по стандарту Wi-Fi/802.11b, на
мест составляет до 100 радиоабонентов. Сеть, изначаль- частоте 2,4-2,483 ГГц, со скоростью 11 Мбит/с, имеет
но создававшаяся как корпоративная, со временем при- модифицированный протокол MAC в маршрутизаторах
обрела статус городской (и областной) беспроводной ORiNOCO Outdoor Routers. В связи с суровыми погодны-
сети передачи данных. ми условиями всё уличное оборудование монтировалось
Актуальность Wi-Fi-технологии можно показать на в специальных термоконтейнерах. Базовые станции мон-
очень ярком примере беспроводной сети передачи дан- тировались на буровых вышках – на высоте от 30 до 80 м.
30
безопасность
Преимущества беспроводных сетей чае переезда вам достаточно будет установить точку до-
Итак, предположим, вы уже много наслышаны о беспровод- ступа в удобном месте и включить компьютеры.
ных сетях и решили внедрить эту технологию в свой бизнес.
Какую выгоду вы получаете от этого? Средства защиты
Простота развёртывания. Сетевым администраторам и Многие производители аппаратной части разрабатывают
прочим IT-специалистам больше не придётся протяги- свои методы защиты и шифрования соединений, но они
вать метры кабелей через чердаки и подвалы. Они с в большинстве своём мало совместимы друг с другом.
удовольствием потратят это время на настройку и от- Далее подробно рассмотрим безопасность сетей стан-
ладку сети. дарта IEEE 802.11b, так как 90% (если не больше) корпо-
Мобильность. На схеме 1 изображена примерная схе- ративных сетей развёрнуты именно на его базе.
ма сети малого предприятия. Если бы вашей задачей Стандарт 802.11b имеет модель защиты, которая по-
являлось перенести всю сеть в здание нового офиса, зволяет мобильным клиентам безопасно соединяться и
то для этого вам потребовалось бы отключить все сете- взаимодействовать с точкой доступа и обеспечивает кон-
вые кабели, вытащить их и смотать, а на новом месте фиденциальную передачу данных. Она состоит из двух
проделать обратную процедуру. Даже если переехать базовых методов:
нужно было бы всего лишь одному сотруднику, у вас SSID
бы ушло некоторое время на демонтаж кабеля и новое WEP
подключение.
A Service Set Identification (SSID) – служебный иденти-
Теперь обратим внимание на схему 2. На ней изобра- фикатор, это имя сети в сегменте беспроводной сети. Он
жена схема беспроводной сети. (По причине высокого также логически разделяет пользователей и точку досту-
распространения за основу взят стандарт 802.11). Из схе- па. Вообще для соединения с сетью беспроводной сете-
мы видно, что пользователи могут безо всяких проблем вой адаптер (WNIC) клиента должен быть настроен с та-
перемещаться в зоне действия беспроводной сети. В слу- ким же SSID, что и у точки доступа.
32
безопасность
Методы атак на беспроводные сети жаются ноутбуком, беспроводной сетевой картой и ан-
Атаки условно делятся на 3 основных категории: пассив- тенной помощнее. После проезда нескольких километ-
ные атаки, активные атаки и атаки помехами. Рассмот- ров по мегаполису они уже имеют список ряда беспро-
рим подробнее каждую из вышеперечисленных. водных сетей, 90% из которых плохо защищены.
Большинство этих «деятелей» используют бесплат-
Пассивные атаки ную программу определения беспроводных сетей «The
Основной целью таких атак является перехват данных, Netstumbler». На рисунках 2 и 3 изображено рабочее окно
проходящих по каналам беспроводной сети. Для осуще- программы Netstumbler. Программа в основном работа-
ствления этого атакующему необходим компьютер с бес- ет с адаптерами, основанными на чипах «Hermes», так
проводным сетевым адаптером и специальным программ- как именно они способны определять точки доступа, на-
ным обеспечением для перехвата трафика. Такое ПО по- ходящиеся в одном диапазоне и с активированным WEP.
лучило название «сниффер» (от англ. to sniff – нюхать, Одной из самых распространённых карт на базе чипа
принюхиваться). Яркими представителями этого класса «Hermes» является «ORiNOCO». Другим преимуществом
программ являются: для ОС Windows – WinDump, Zxsniffer, этой карты является возможность присоединения внеш-
Iris. Для Unix-подобных ОС – TCPDump, Dsniff, Ethereal, ней антенны, которая в несколько раз увеличивает диа-
Ettercap, AirSnort. пазон «видимости» сигналов точек доступа. К сожале-
Пассивные атаки очень сложно обнаружить, т.к. ни- нию, карты на чипах «Hermes» не умеют работать в ре-
каких исходящих данных от атакующего не поступает. жиме «прослушки» (promiscuous mode). Для этих целей
Системным администраторам не следует применять необходимо иметь карту на чипе «PRISM2». Большин-
DHCP-серверы, или, если они так необходимы, стоит ство фирм-производителей используют именно этот чип,
проверять лог-файлы как можно чаще. Если в сети по- например, Linksys WPC. Искушенные war-driver имеют
явится неизвестный MAC-адрес, то следует считать, что два адаптера, один для поиска сетей, другой для пере-
это потенциальный взломщик. хвата данных.
Если вы обнаружили, что под окном вашей организа- Несмотря на то что Netstumbler бесплатный продукт,
ции стоит автомобиль с подозрительной антенной, у во- это серьёзное и многофункциональное средство, которое
дителя выясните назначение этой антенны. Именно он является превосходным решением для поиска беспровод-
может оказаться злоумышленником. ных сетей. Кроме того, Netstumbler может дать деталь-
В наше время пассивные атаки очень распростране- ную информацию относительно найденных беспроводных
ны, это даже стало хобби для многих людей. Такое заня- сетей, эта информация может быть использована в ком-
тие называется «war driving» или «war plugging» (боевое бинации с GPS, чтобы обеспечить точное местоположе-
вождение или боевое присоединение). War-driver воору- ние относительно широты и долготы.
34
безопасность
Активные атаки Рабочее окно программы отображено на рисунке 4.
Как только злоумышленник получает доступ к сети при AirSnort должен собрать от 500мб до 1000 Мб трафика
помощи пассивных атак, он приступит к осуществлению чтобы получить WEP-клю