Михаил Фленов
Linux глазами хакера
Предисловие
Данная книга посвящена рассмотрению одной из самых популярных операционных систем (ОС), устанавливаемых на серверы — ОС Linux. Для домашнего применения эта система пока еще не пользуется такой популярностью, как среди профессиональных администраторов, но в последнее время наметились предпосылки для захвата и этого рынка.
Установка ОС становится все проще, а графический интерфейс и удобство работы в некоторых случаях не уступает самой прославленной в среде малого бизнеса ОС Windows.
Эта книга будет полезна администраторам Linux и тем пользователям, которые хотят познакомиться с этой системой поближе. Рассматриваемые вопросы настройки и безопасности пригодятся специалистам, использующим различные ОС, потому что большая часть информации не привязана к определенной системе.
Вы сможете узнать, как хакеры проникают на серверы и защититься от вторжения. Так как некоторые примеры из этой книги могут быть использованы не только для обороны, но и для нападения, я хотел бы предостеречь юных взломщиков. Здоровое любопытство — это хорошо, но помните, что правоохранительные органы не спят и всегда добиваются своего. Если один раз вам повезло со взломом и никто не обратил на это внимания, то в следующий раз вы можете оказаться в руках правосудия.
Часть книги написана с точки зрения хакера и демонстрирует, как они проникают в систему. В надежде на то, что эту информацию не будут использовать для взлома серверов, я старался сделать упор именно на защиту и некоторые вещи оставлял за пределами изложения или просто не договаривал, чтобы не появилось соблазна воспользоваться методами хакеров и нарушить закон. Конечно же, чтобы реализовать мои идеи (довести до логического конца), нужно потратить несколько минут на программирование или на поиск в Интернете. Но несмотря на то, что книга может послужить отправной точкой для хакера, я надеюсь, что этого не произойдет. Помните о законности ваших действий.
Любой объект может быть рассмотрен с разных точек зрения. Простой пример из жизни — нож, являясь столовым предметом, при определенных обстоятельствах становится орудием убийства или средством самообороны. Точно так же и методы хакера, которые будут рассматриваться в этой книге, могут быть восприняты как советы для повседневного ухода за ОС, способы защиты от проникновения и средства взлома системы. Я надеюсь, что вы не будете использовать полученные знания в разрушительных целях, это не украшает человека. Зачем вам нужна "черная" популярность взломщика? Не лучше ли посвятить себя более полезным вещам.
Несмотря на явное стремление Linux поселиться в домашних компьютерах, в этой ОС настройка пока еще слишком сложная и содержит множество параметров, которые большинству пользователей не нужны. Если просто закрыть глаза и оставить все значения по умолчанию, то об истинной безопасности Linux не может быть и речи. Ни одна ОС не будет работать надежно и с максимальной защитой при таких настройках. Производитель не может заранее знать, что нам понадобится, и делает все возможное, чтобы программа работала на любой системе, а для этого приходится включать много дополнительных функций, что делает систему избыточной.
Так уж повелось, что администраторы Linux должны иметь больше опыта и знаний, чем специалисты Windows, и это связано как раз со сложностями настройки. В данной книге я постарался максимально доступно рассказать вам про ОС Linux, и при этом попытался сделать это с позиции хакера.
Почему книга называется "Linux глазами хакера", и что это за глаза? Этот вопрос интересует многих моих читателей. Когда мы берем в руки книгу, то надеемся, что ее внешний вид соответствует внутреннему. В данном случае речь идет о том, какое содержимое будет отвечать этому названию? Для ответа на этот вопрос необходимо четко понимать, кто такой хакер и что он видит в ОС.
Когда меня спрашивают, что я подразумеваю под словом "хакер", я привожу простейший пример: как администратор вы установили и заставили работать ОС, но если удалось настроить ее на максимальную производительность и безопасность, то вы — хакер.
Умения хакера должны быть направлены на то, чтобы создать что-либо лучше других (быстрее, удобнее и безопаснее). Именно такой является сама ОС Linux, сотворенная хакерами для всего мира.
Данная книга рассматривает ОС, начиная с самых основ и до сложных манипуляций системой. Весь излагаемый материал представлен простым и доступным каждому языком. Благодаря этому вам не понадобится дополнительная литература для изучения ОС Linux. Всю информацию можно будет получить из одних рук. Для более глубокого изучения вопроса вам могут потребоваться только хорошее знание английского языка и чтение документации ил и файлов HOWTO, которые поставляются с системой Linux.
Главное отличие книги в том, что о безопасности и производительности мы будем говорить не в отдельных заключительных главах, что является большой ошибкой, а по мере необходимости. Когда человек уже приобрел навыки неэффективной работы с системой, то переучиваться будет сложно. Именно поэтому мы будем разбирать последовательно (от азов до сложных вопросов) все аспекты каждой рассматриваемой темы, аккуратно раскладывая полученные знания "по полочкам".
Описание применения и просто администрирование Linux всегда можно найти в Интернете или в документации на ОС, а вот информацию по эффективному использованию найти сложнее, а все имеющиеся сведения являются фрагментарными, и их тяжело сводить в одно целое. А ведь безопасность не любит обрывочных данных. Если упустить хоть одну мелочь, компьютер оказывается уязвимым для взлома.
В качестве дополнительной информации по безопасности компьютера и сетей советую прочитать мою книгу "Компьютер глазами хакера" [3], в которой приводится достаточно много общих сведений по этим вопросам.
Несмотря на то, что данная книга направлена в большей степени на описание безопасности ОС Linux, многие рассматриваемые в ней проблемы могут вам пригодиться и при построении защищенного Linux-сервера. Точно так же книга "Linux глазами хакера" будет полезна и специалистам по безопасности Windows-систем.
В этой книге не рассматриваются вопросы, связанные с вирусами, потому что в настоящее время вирусная активность в ОС Linux минимальна, но это не значит, что опасности не существует. Угроза есть всегда, а защита от вирусов схожа с защитой от троянских программ, которых для Linux достаточно много. Об атаках вирусов и возможности их отражения можно также прочитать в книге "Компьютер глазами хакера" [3].
Итак, давайте знакомиться с Linux с точки зрения хакера, и я уверен, что вы посмотрите на нее совершенно другими глазами и найдете для себя много нового и интересного.
В каждой своей книге я стараюсь поблагодарить всех, кто участвовал в ее создании и помогал появиться на свет. Без этих людей просто ничего бы не получилось.
Первым делом я хотел бы отметить издательство "БХВ-Петербург", с которым работаю уже несколько лет. Спасибо руководству, редакторам и корректорам, которые работают со мной и помогают сделать книгу такой, какой я ее задумывал. Ведь писать приходится в тяжелых по срокам условиях, но иначе нельзя, т.к. информация устареет раньше, чем книга попадет на прилавок.
Не устану благодарить родителей, жену и детей за их терпение. После основной работы я прихожу домой и тружусь над очередной книгой. Таким образом, семья может видеть меня только за компьютером, а общаться со мной очень сложно, потому что все мысли устремляются далеко в виртуальную реальность.
Большая признательность моим друзьям и знакомым, которые что-то подсказывали, помогали идеями и программами.
Отдельное спасибо администраторам моего провайдера, которые позволили тестировать некоторые описываемые в данной книги методы на их оборудовании и серверах. Я старался работать аккуратно и ничего не уничтожить. Вроде бы так и получилось ☺.
Так уж выходит, но в написании каждой книги участвуют и животные. Эта работа не стала исключением. Мой новый кот Чикист с 23:00 до 1:00 ночи гуляет по квартире и кричит, я не могу уснуть, а значит, больше времени уделяю работе.
Хочется поблагодарить еще одного кота, который является ассистентом в пакете программ MS Office. Книгу я писал в MS Word, а ОС Linux работала в виртуальной машине, чтобы можно было делать снимки экрана. Если на меня "бросали" ребенка, то кот-ассистент помогал занять моего годовалого сына, выступая в роли няни. Я сажал сына Кирилла рядом, и он спокойно играл с котом на экране монитора, а я мог продолжать работать над книгой. Правда, иногда приходилось спасать кота и монитор, когда сын начинал маленькой ручонкой неуклюже гладить полюбившееся животное.
А самая большая благодарность — вам за то, что купили книгу, и моим постоянным читателям, с которыми я регулярно общаюсь на форуме сайта www.vr-online.ru. Последние работы основываются на их вопросах и предложениях. Если у вас появятся какие-то проблемы, то милости прошу на этот форум. Я постараюсь помочь по мере возможности и жду любых комментариев по поводу этой книги. Ваши замечания помогут мне сделать мою работу лучше.
Глава 1
Введение
Однажды я показывал администратору ОС Windows, как устанавливать и работать с Linux. Сам процесс инсталляции ему понравился, потому что в последних версиях он достаточно прост. Но когда мы установили и решили настроить Samba-сервер, последовала куча вопросов типа: "А зачем настраивать Samba?", "Почему нельзя получить доступ автоматически?" Администраторы Windows-систем ленивы и привыкли, что ОС сама делает за них все. что нужно, но когда их систему взламывают, начинают задавать вопросы: "А почему Microsoft не дала нам нужных инструментов, чтобы запретить определенные действия?".
Если смотреть на ОС Linux с точки зрения пользователя, то после установки системы уже ничего настраивать не надо. Можно сразу же приступать к работе с любыми офисными приложениями и пользовательскими утилитами. Но если речь идет о сетевых и серверных программах, то здесь уже требуются более сложные настройки, и ничего автоматически работать не будет. По умолчанию в системе практически все действия, которые могут привести к нежелательному результату или вторжению по сети, запрещены. Для изменения ограничений нужно настраивать конфигурационные файлы, редактировать которые крайне неудобно, или использовать специализированные утилиты, большинство из которых имеют интерфейс командной строки.
Из-за этих неудобств мой знакомый администратор Windows-систем сказал: "Linux придумали администраторы, которым нечего делать на работе, для того, чтобы играться с конфигурационными файлами". Через неделю этот же человек настраивал сервис IIS (Internet Information Services, информационные сервисы Интернета) на новом сервере с ОС Windows 2003. Он ругался теми же словами, потому что эта служба по умолчанию не устанавливается с ОС, и прежде чем начать работать, нужно ее подключить и четко прописать, что должно использоваться, а что нет.
Корпорация Microsoft начинала делать ОС по принципу "лишь бы было удобно", поэтому достаточно было подключить требуемые компоненты. Но теперь Windows становится с каждым годом все сложнее, большинство удобных функций, обеспечивающих защиту, просто отключаются, и при необходимости их приходится открывать. В Linux все было наоборот, эту ОС создавали с точки зрения "лишь бы было безопаснее", а теперь двигаются в сторону наращивания сервисов.
Удобства и безопасность — две стороны одной медали, поэтому производителю приходится чем-то жертвовать.
1.1. Атаки хакеров
Прежде чем знакомится с Linux и ее принципами безопасности, мы должны знать, как хакеры могут проникать в систему. Для того чтобы защитить систему, нужно иметь представление о возможных действиях злоумышленника. Давайте познакомимся с процессом взлома компьютера. Мы должны знать, о чем думают хакеры, чем они дышат и что едят ☺. Только так мы сможем построить неприступную информационную стену для сервера или сети.
Невозможно дать конкретные рецепты взломов. В каждом случае это процесс, который зависит от самой системы и настроек ее безопасности. Чаще всего взлом происходит через ошибки в каких-либо программах, а каждый администратор может использовать различный софт.
Почему количество атак с каждым годом только увеличивается? Раньше вся информация об уязвимостях хранилась на закрытых BBS (Bulletin Board System, электронная доска объявлений) и была доступна только избранным. К этой категории относились и хакеры. Именно они и совершали безнаказанные атаки, потому что уровень просвещенности и опытности таких людей был достаточно высок.
С другой стороны, элита хакерского мира состояла в основном из добропорядочных людей, для которых исследования в области безопасности не являлись целью разрушения.
В настоящее время информация об уязвимостях лежит на каждом углу и является достоянием общественности. Теперь взломом может заниматься кто угодно. Тут же хочется спросить борцов за свободу информации: "Как же так получилось?" Просто чрезмерная свобода в конце концов ведет к разрушению. Есть определенная категория людей, которых хлебом не корми, дай где-нибудь напакостить. Если человек, используя общедоступную информацию, поддастся этой слабости, то он превратится во взломщика.
Злоумышленники при проникновении в систему могут преследовать разные цели.
1. Утечка информации — вскрытие сервера для скачивания каких-либо секретных данных, которые не должны быть доступны широкой общественности. Такие взломы чаще всего направляют против компаний для кражи отчетности, исходных кодов программ, секретной документации и т.д., их выполняют профессиональные хакеры по заказу или для получения собственной выгоды.
2. Нарушение целостности — изменение или уничтожение данных на сервере. Такие действия могут производиться против любых серверов в сетях Интернет/интранет. В качестве взломщиков могут выступать не только профессионалы, но и любители или даже недовольные сотрудники фирм.
3. Отказ от обслуживания — атака на сервер с целью сделать его недосягаемым для остальных участников сети. Этим занимаются, в основном, любители, желая нанести вред.
4. Рабство — получило распространение в последнее время. Сервер захватывается для дальнейшего использования в нападении на другие серверы. Например, для осуществления атаки типа "Отказ от обслуживания" чаще всего нужны значительные ресурсы (мощный процессор и быстрый доступ в сеть), которые отсутствуют на домашнем компьютере. Для осуществления таких атак захватывается какой-либо слабо защищенный сервер в Интернете, обладающий необходимыми ресурсами, и используется в дальнейших взломах.
Атаки могут быть трех видов:
1. Внутренняя — взломщик получил физический доступ к интересующему его компьютеру. Защитить системный блок сервера от злоумышленника не так уж и сложно, потому что можно оградить доступ к серверу сейфом и поставить охрану.
2. Внешняя из глобальной сети — удаленный взлом через сеть. Именно этот вид атаки является самым сложным для защиты. Даже если поставить самый лучший сейф от удаленной атаки (Firewall) и постоянную охрану для наблюдения (программы мониторинга и журналирования), безопасность не может быть гарантированной. Примерами этого являются взломы самых защищаемых серверов в сети (yahoo.com, microsoft.com, серверы NASA и т.д.).
3. Внешняя из локальной сети — это проникновение, совершенное пользователем вашей сети. Да, хакеры бывают не только в Интернете, соседи по кабинету тоже могут пытаться взломать сервер или ваш компьютер ради шутки или с целью мести.
При построении обороны мы должны понимать, как хакеры атакуют компьютеры своих жертв. Только тогда можно предотвратить нежелательное вторжение и защитить систему. Давайте рассмотрим основные методы нападения, используемые хакером, и способы реализации. Для лучшего понимания процесса будем рассуждать так, как это делает взломщик.
Единственное, чего мы не будем затрагивать, так это вопросы социальной инженерии. Это тема отдельной книги и затрагивать ее не имеет смысла.
1.1.1. Исследования
Допустим, что у вас есть некий сервер, который нужно взломать или протестировать на защищенность от проникновения. С чего нужно начинать? Что сделать в первую очередь? Сразу возникает очень много вопросов и ни одного ответа.
Четкой последовательности действий нет. Взлом — это творческий процесс, а значит, и подходить к нему надо с этой точки зрения. Нет определенных правил и нельзя все подвести под один шаблон. Зато могу дать несколько рекомендаций, которых желательно придерживаться.
Самое первое, с чего начинается взлом или тест системы на уязвимость, — сканирование портов. Для чего? А для того, чтобы узнать, какие сервисы (в Linux это демоны) установлены в системе. Каждый открытый порт — это сервисная программа, установленная на сервере, к которой можно подсоединиться и выполнить определенные действия. Например, на 21 порту висит FTP-сервис. Если вы сможете к нему подключиться, то станет доступной возможность скачивания и закачивания на сервер файлов. Но это только в том случае, если вы будете обладать соответствующими правами.
Для начала нужно просканировать первые 1024 порта. Среди них очень много стандартных сервисов типа FTP, HTTP, Telnet и т.д. Каждый открытый порт — это дверь с замочком для входа на сервер. Чем больше таких дверей, тем больше вероятность, что какой-то засов не выдержит натиска и откроется.
У хорошего администратора открыты только самые необходимые порты. Например, если это Web-сервер, не предоставляющий доступ к почте, то нет смысла включать сервисы почтовых серверов. Должен быть открыть только 80 порт, на котором как раз и работает Web-сервер.
Хороший сканер портов устанавливает не только номер открытого порта, но и определяет установленный на нем сервис. Жаль, что название не настоящее. а только имя возможного сервера. Так, для 80 порта будет показано "HTTP". Желательно, чтобы сканер умел сохранять результат своей работы в каком-нибудь файле и даже распечатывать. Если этой возможности нет, то придется переписать все вручную и положить на видное место. В дальнейшем вам пригодится каждая строчка этих записей.
После этого можно сканировать порты свыше 1024. Здесь стандартные сервисы встречаются редко. Зачем же тогда сканировать? А вдруг кто-то до вас уже побывал здесь и оставил незапертой дверку или установил на сервер троян. Большинство троянских программ держат открытыми порты свыше 1024, поэтому, если вы администратор и обнаружили такой порт, необходимо сразу насторожиться. Ну а если вы взломщик, то необходимо узнать имя троянской программы, найти для нее клиентскую часть и воспользоваться для управления чужой машиной.
На этом взлом может закончиться, потому что вы уже получили полный доступ к серверу без особых усилий. Жаль, что такое происходит очень редко, чаще всего нужно затратить намного больше усилий.
Лет десять назад сканирование можно было проводить целыми пачками. В настоящее время все больше администраторов устанавливают на свои серверы утилиты, которые выявляют такие попытки сканирования и делают все возможное для предотвращения этого процесса. О том, как защитить свой сервер от сканирования и какие утилиты использовать, мы поговорим в
Таким образом, сканирование становится непростой задачей. Сложность заключается в том, что нельзя исследовать порты пачками. Именно поэтому профессионалы предпочитают использовать ручной метод. Для этого достаточно выполнить команду:
telnet сервер порт
В данном случае с помощью команды telnet мы пытаемся подключиться к серверу на указанный порт. Если соединение произошло удачно, то порт открыт, иначе — закрыт. Адрес сервера указывается в качестве первого параметра, а порт — это второй параметр. Если таким образом производить проверку не более 5 портов в час, то большинство программ выявления скана не среагируют, но сам процесс сканирования растянется на недели.
Иногда может помочь утилита nmap, которая позволяет делать сканирование с использованием неполного цикла пакетов. Но современные программы обеспечения безопасности могут обнаружить использование этого метода.
Так как уже на этапе сканирования администратор может занести ваш IP- адрес в список подозреваемых, желательно осуществлять проверку портов не со своего компьютера. Для этого взломщики заводят Web-сайт на сервере, позволяющем встраивать сценарии на языках PHP или Perl, используя бесплатный хостинг, где во время регистрации не требуют персональных данных, а если запрашивают, то можно ввести неверные данные, потому что их нельзя проверить. После этого к серверу можно подключаться через прокси-сервер и по безопасному соединению управлять собственными сценариями, которые и будут сканировать компьютер жертвы.
Теперь мы в курсе, какие двери у сервера существуют и как это можно определить. Задействованные порты — это всего лишь запертые ворота, и мы пока не знаем, как их открыть. Дальше потребуется больше усилий.
Самым популярным средством сканирования является утилита nmap. Она завоевала сердца хакеров, потому что, во-первых, предоставляет широкие возможности и, во-вторых, не все средства защиты ее определяют. Например, программа антисканирования, установленная на сервере, следит за попытками последовательно или параллельно подключиться на несколько портов. Но nmap может не доводить дело до соединения.
Процесс установки соединения с удаленным компьютером разбивается на несколько этапов. Сначала компьютер посылает пакет с запросом на нужный порт сервера, а тот в ответ должен отправить специальный пакет (не будем вдаваться в подробности протокола TCP, а ограничимся общими понятиями). Только после этого может устанавливаться виртуальное соединение. Сканер nmap может прервать контакт после первого ответа сервера, т.к. уже ясно, что порт открыт и нет смысла продолжать диалог по установке соединения.
Таким образом, программы антисканирования воспринимают такие контакты за ошибки и не сигнализируют администратору о возможной атаке.
Сканирование — это всего лишь самый начальный этап, который вам еще ничего особенного не сказал. Самое главное перед дальнейшим взломом — определить, какая именно установлена ОС. Желательно знать и версию, но это удается не всегда, да и на первых порах изучения системы можно обойтись без конкретизации.
Как определяется тип ОС? Для этого есть несколько способов.
1. По реализации протокола TCP/IP.
Различные ОС по-разному реализуют стек протоколов. Программа-клиент (например, nmap) просто анализирует ответы на запросы от сервера и делает вывод об установленной ОС. В основном, это заключение расплывчатое: Windows или Linux. Точную версию таким образом узнать невозможно, потому что в Windows 2000/XP/2003 реализация протокола практически не менялась, и отклики сервера будут одинаковыми. Даже если программа определила, что на сервере установлен Linux, то какой именно дистрибутив — вам никто не скажет, а ведь уязвимости в них разные. И поэтому такая информация — это только часть необходимых вам данных для взлома сервера.
2. По ответам разных сервисов.
Допустим, что на сервере жертвы есть анонимный доступ по FTP. Вам нужно всего лишь присоединиться к нему и посмотреть сообщение при входе в систему. По умолчанию в качестве приглашения используется надпись типа "Добро пожаловать на сервер FreeBSD4.0 версия FTP-клиента X.XXX". Если вы такое увидели, то еще рано радоваться, т.к. неизвестно, правда это или нет. Если администратор сервера достаточно опытный, то он, скорей всего, поменяет текст таких сообщений.
Если надпись приглашения отражает действительность, то администратор — "чайник" со стажем. Опытный администратор всегда изменяет приглашение, заданное по умолчанию. А вот хороший специалист может написать и ложное сообщение. Тогда на сервере с Windows NT 4.0 появится приглашение, например, в Linux. В этом случае злоумышленник безуспешно потратит очень много времени в попытках сломать Windows NT через дыры Linux. Поэтому не очень доверяйте надписям и старайтесь перепроверить любыми другими способами.
Чтобы вас не обманули, обязательно обращайте внимание на используемые на сервере сервисы, например, в Linux не будут крутиться страницы, созданные по технологии ASP. Такие вещи подделывают редко, хотя возможно. Достаточно немного постараться: применить расширение asp для хранения PHP-сценариев и перенаправлять их интерпретатору PHP. Таким образом, хакер увидит, что на сервере работают файлы asp, но реально это будут PHP-сценарии.
Следовательно, задача защищающейся стороны — как можно сильнее запутать ситуацию. Большинство неопытных хакеров верят первым впечатлениям и потратят очень много времени на бесполезные попытки проникновения. Таким образом, вы сделаете взлом слишком дорогим занятием.
Задача хакера — распутать цепочки и четко определить систему, которую он взламывает. Без этого производить в дальнейшем какие-либо действия будет сложно, потому что хакер даже не будет знать, какие команды ему доступны после вторжения на чужую территорию и какие исполняемые файлы можно подбрасывать на сервер.
Для определения ОС хакеры любят использовать утилиту nmap. Основные возможности программы направлены на сканирование портов, но если запустить программу с параметром -о, то она попытается определить тип операционной системы. Конечно же, существует вероятность ошибки, но возможна и правильная работа.
Итак, теперь вы знаете, какая на сервере установлена ОС, какие порты открыты и какие именно серверы висят на этих портах. Вся эта информация должна быть у вас записана в удобном для восприятия виде: в файле или хотя бы на бумаге. Главное, чтобы комфортно было работать.
На этом можно остановить исследования. У вас есть достаточно информации для простейшего взлома с помощью дыр в ОС и сервисах, установленных на сервере. Просто посещайте регулярно www.securityfocus.com. Именно здесь нужно искать информацию о новых уязвимостях. Уже давно известно, что большая часть серверов (по разным источникам от 70 до 90%) просто не латаются. Поэтому проверяйте все найденные ошибки на жертве, возможно, что-то и сработает.
Если сервер в данный момент близок к совершенству, то придется ждать появления новых дыр и сплоитов (программа, позволяющая использовать уязвимость) к установленным на сервере сервисам. Как только увидите что-нибудь интересное, сразу скачайте сплоит (или напишите свой) и воспользуйтесь им, пока администратор сервера не залатал очередную уязвимость.
1.1.2. Взлом WWW-сервера
При взломе WWW-сервера есть свои особенности. Если на нем выполняются CGI/PHP или иные скрипты, то взлом проводится совершенно по-другому. Для начала нужно просканировать сервер на наличие уязвимых CGI-скриптов. Вы не поверите, но опять же по исследованиям различных компаний в Интернете работает большое количество "дырявых" скриптов. Это связано с тем, что при разработке сайтов изначально вносятся ошибки. Начинающие программисты очень редко проверяют входящие параметры в надежде, что пользователь не будет изменять код странички или адрес URL, где серверу передаются необходимые данные для выполнения каких-либо действий.
Ошибку с параметрами имела одна из знаменитых систем управления сайтом — PHP-nuke. Это набор скриптов, позволяющих создать форум, чат, новостную ленту и управлять содержимым сайта. Все параметры в скриптах передаются через строку URL браузера, и просчет содержался в параметре ID. Разработчики предполагали, что в нем будет передаваться число, но не проверяли это. Хакер, знающий структуру базы данных (а это не сложно, потому что исходные коды PHP-nuke доступны), легко мог поместить SQL-запрос к базе данных сервера в параметр ID и получить пароли всех зарегистрированных на сайте пользователей. Конечно, клиенты будут зашифрованы, но для расшифровки не надо много усилий, и это мы рассмотрим чуть позже (
Проблема усложняется тем, что некоторые языки (например, Perl) изначально не были предназначены для использования в сети Интернет. Из-за этого в них существуют опасные функции для манипулирования системой, и если программист неосторожно применил их в своих модулях, то злоумышленник может воспользоваться такой неосмотрительностью.
Потенциально опасные функции есть практически везде, только в разных пропорциях. Единственный более или менее защищенный язык — Java, но он очень сильно тормозит систему и требует много ресурсов, из-за чего его не охотно используют Web-мастера. Но даже этот язык в неуклюжих руках может превратиться в большие ворота для хакеров с надписью: "Добро пожаловать!".
Но самая большая уязвимость — неграмотный программист. Из-за нехватки специалистов в этой области программированием стали заниматься все, кому не лень. Многие самоучки даже не пытаются задуматься о безопасности, а взломщикам это только на руку.
Итак, ваша первостепенная задача — запастись парочкой хороших CGI-сканеров. Какой лучше? Ответ однозначный — ВСЕ. Даже самый дрянной сканер может найти брешь, о которой неизвестно даже самому лучшему хакеру. А главное, что по закону подлости именно она окажется доступной на сервере. Помимо этого, нужно посещать все тот же сайт www.securityfocus.com, где регулярно выкладываются описания уязвимостей различных пакетов программ для Web-сайтов.
1.1.3. Серп и молот
Там, где не удалось взломать сервер с помощью умения и знаний, всегда можно воспользоваться чисто русским методом "Серпа и молота". Это не значит, что серп нужно приставлять к горлу администратора, а молотком стучать по его голове. Просто всегда остается в запасе тупой подбор паролей.
Давайте снова обратимся к статистике. Все исследовательские конторы пришли к одному и тому же выводу, что большинство начинающих выбирают в качестве пароля имена своих любимых собачек, кошечек, даты рождения или номера телефонов. Хорошо подобранный словарь может сломать практически любую систему, т.к. всегда найдутся неопытные пользователи с такими паролями. Самое страшное, если у этих "чайников" будут достаточно большие права.
Вы до сих пор еще не верите мне? Давайте вспомним знаменитейшего "червя Морриса", который проникал в систему, взламывая ее по словарю. Собственный лексикон червя был достаточно маленький и состоял менее чем из ста слов. Помимо этого, при переборе использовались термины из словаря, установленного в системе. Там их было тоже не так уж много. И вот благодаря такому примитивному алгоритму червь смог поразить громаднейшее число компьютеров и серверов. Это был один из самых массовых взломов!!! Да, случай давний, но средний профессионализм пользователей не растет, т.к. среди них много опытных, но достаточно и начинающих.
1.1.4. Локальная сеть