Ты уже много раз читал на страницах Х реальные примеры того, как проводились разные взломы серваков. Все это мы старались преподнести в самых мельчайших и интимных подробностях. Но мне очень часто пишут, что мы даем только готовые решения, которые очень часто уже не работают к моменту выхода журнала в свет. Сегодня никаких готовых решений не будет. Тебе предстоит познакомиться с теорией взлома.
Лично я никогда не взламывал сайты в инете, потому что меня просто не удовлетворяет вандализм. Но зачем же тогда мне такие познания? Просто я увлекаюсь защитой систем, а самый лучший админ - это хакер. Точно так же можно сказать, что самый лучший хакер - это злой админ :).
Я написал эту статью в надежде, что она будет восприниматься как руководство по защите твоей собственности. Я пишу этот текст только в познавательных целях. Помни, что взлом не украшает человека и не ставит тебя автоматически в ряды элиты, хотя и таким образом тоже попадают в наши ряды. Я так же считаю своим долгом напомнить тебе про существование УК, в котором предусмотрены нехилые наказания за информационный вандализм.
Рисунок 1. www.securetyfocus.com
Приступим:
Допустим, что у тебя есть какой-то сервер, который ты хочешь взломать или протестировать на защищенность от взлома. С чего нужно начинать? Что сделать в первую очередь? Сразу очень много вопросов и ни одного ответа.
Четкой последовательности действий нет. Взлом - это творческий процесс, а значит, и подходить к нему приходиться творчески. Нет определенных правил и нельзя все подвести под один шаблон. Зато есть несколько рекомендаций, которых желательно придерживаться.
Приступим:
Самое первое, с чего начинается взлом или тест системы на дырявость - сканирование портов. Для чего? А для того, чтобы узнать, какие сервисы/демоны установлены в системе. Каждый открытый порт - это сервисная программа установленная на сервере, к которой можно подключиться и выполнить определенные действия. Например, на 21-м порту висит FTP сервис. Если ты сможешь к нему подключиться, то тебе станет доступной возможность скачивания и закачивания на сервер файлов. Но это только если ты будешь обладать соответствующими правами.
Первое, что нужно просканировать - первые 1024 порта. Среди них очень много стандартных сервисов типа FTP, HTTP, Telnet и т.д. Все открытие порты - это дверь с замочком для входа на сервер. Чем больше таких дверей, тем больше вероятность, что какой-то замок не выдержит натиска и откроется.
У хорошего админа открыты только самые необходимые порты. Например, если это WEB-сервер не предоставляющий доступ к почте, то нет смысла держать сервисы почтовых серверов.
Рисунок 2. Сканирование портов
Хороший сканер портов не только говорит номер открытого порта, но и показывает название установленного на нем сервиса. Желательно, чтобы сканер умел сохранять результат своей работы в каком-нибудь файле. Если этой возможности нет, то придется переписать все вручную и положить на видное место. В дальнейшем тебе пригодиться каждая строчка твоих записей.
После этого можешь сканировать порты свыше 1024. Здесь стандартные сервисы встречаются редко. Зачем же тогда сканировать? А вдруг кто-то до тебя уже побывал здесь и оставил открытую дверку или протроянил сервак. Большинство троянов держат открытыми порты свыше 1024, поэтому если ты админ и нашел открытый порт с номером больше 1024, необходимо сразу насторожиться. Ну а если ты взломщик, то необходимо узнать имя трояна и найти для него клиентскую часть. На этом взлом может закончиться, потому что ты уже получил полный доступ к серваку без особых усилий :).
Определяем ОС:
Теперь мы знаем, какие двери у сервера открыты и чем мы можем воспользоваться. Но этого мало, потому что мы знаем какие есть двери, но не знаем, как их открыть.
Сканирование - это всего лишь самый начальный этап, который тебе еще ничего особенного не сказал. Самое главное перед взломом - определить, какая ОС стоит на серваке. Желательно знать и версию, но это удается не всегда, да и на первых парах изучения системы можно обойтись без конкретизации.
Для определения версии я могу посоветовать Shadow Scan. Не могу сказать, что она лучшая, но и к разряду худших отнести ее не имею права.
Помимо определения ОС, прога умеет определять версии установленных сервисов. Это тебе может очень сильно помочь. Допустим, что ты узнал, что на серваке установлен WEB-сервер. Ты даже узнал, что ОС именует себя как "Окошки". Ты можешь предположить, что WEB-сервер именует себя как IIS, но это предположение может тебя обмануть. Для окошек есть реализация сильнейшего сервера Apache. А так как взлом разных серверов производиться по разному, то тебя должно в первую очередь волновать, кто именно сидит на 80-м порту - IIS или Apache.
Единственный недостаток Shadow Scan - именно при определении версии ОС некоторые релизы Shadow Scan вылетали в синий экран. Но в последней версии этот баг вроде исправлен.
Адрес этой распрекрасной тулзы ты можешь найти во врезке "Download".
Юзаем порты :
Итак, теперь ты знаешь, какая на сервере установлена ОС, какие порты открыты, и какие именно серверы висят на этих портах. Вся эта инфа должна быть у тебя записана в удобном для восприятия виде, хоть в файле, хоть на бумаге.
Не ленись всю собранную инфу записывать и собирать в одну кучу. Помни, что даже компьютерные мозги иногда дают сбои, а человеческие делают это регулярно. Самое интересное, что чаще всего забывается самое необходимое. Ну а после взлома не поленись уничтожить, иначе ты облегчишь работу нашей доблестной милиции.
Все записал? Ну, на этом можно остановить взлом. У тебя есть достаточно инфы для простейшего взлома по уже пройденным другими хаксорами следам. Просто посещай регулярно www.securityfocus.com. Здесь ты должен поискать информацию о дырявости установленных на серванте жертвы сервисов и самой ОС. Уже давно известно, что большая часть серверов (по некоторым данным 70%, а по некоторым 90%) в инете просто не латаются. Поэтому проверь все найденные эксплоиты на жертве, возможно, что-то подойдет.
Если сервер хорошо залатан, то придется ждать появления новых дыр и експлоитов к установленным на сервере сервисам. Как только увидишь что-нибудь интересное, сразу качай експлоит и юзай свежую дырку, пока админ ее не залатал.
Тестирование безопасности :
Практически каждый день специалисты по безопасности находят в разных системах недочеты и откровенно говоря дыры или даже пробоины в системе безопасности. Все эти пробоины выкладываются в отчетах BugTraq на разных серверах. Я тебе уже посоветовал посещать www.securityfocus.com, чтобы следить за новостями, и сейчас не отказываюсь от своих слов. Новинки действительно надо смотреть на этом сервере, но ведь есть еще ворох старых дыр, которые могли быть, и не залатаны на сервере. Как же поступить с ними? Не ужели придется качать все эксплоиты и ручками проверять каждую пробоину? Ну конечно же нет. Существует громадное количество прог для автоматизации тестирования сервера на залатанность.
Ты думаешь я должен посоветовать тебе какую-нибудь определенную прогу? Нет, я этого делать не буду, потому что все программы хороши. Не существует такой тулзы, в которой была бы база абсолютно всех потенциальных дыр. Поэтому качай все, что попадется под руку. Возможно что-то тебе и пригодиться.
Взлом WWW-серванта :
При взломе WWW-серванта есть свои особенности. Если на сервере крутятся CGI страницы, то взлом такого серванта нужно начинать совершенно по-другому. Для начала нужно просканировать его на наличие дырявых CGI скриптов. Ты не поверишь, но опять же по исследованиям крутых дядек, в инете громадное количество скриптов дырявые.
Дырявость скриптов связана с тем, что для кодинга страничек используется Perl. Я ничего не имею против этого языка, но он сейчас достиг уровня универсала. На нем можно делать практически все, а не только форматировать текст. Поэтому в Perl очень много потенциально опасных функций. Но это не так страшно. Страшнее, когда ты можешь этим функциям передавать свои данные, когда скрипты не проверяют введенную пользователем инфу, а в чистом виде передают параметры в опасные функции.
Другие языки (PHP, ASP и др) тоже имеют потенциально опасные функции, просто там их или поменьше, или они имеют дополнительную защиту. Единственный более менее защищенный язык - Java, который очень сильно тормозит систему, из-за чего его не охотно используют WEB-мастера.
Я не собираюсь тебя лечить карявостью языков кодинга, потому что главная корявость - руки программера. Из-за громадной нехватки спецов в нашей любимой области, кодингом стали заниматься все кому не лень. Многие программеры самоучки даже не пытаются задуматься о безопасности. А тебе это только на руку.
И так, твоя главная задача - запастись парочкой хороших CGI-сканеров. Какой лучше? Ответ однозначный - ВСЕ. Даже в самом плохом сканере может оказаться инфа о такой уязвимости, о которой не известно даже самому крутому. А главное, что по закону подлости именно эта уязвимость окажется доступной на серваке. Мы очень много упоминали о разных сканерах на страницах журнала, и каждый хвалил свой вариант. Я советую тебе взять подшивку Х и скачать все сканеры, упоминавшиеся на наших страницах.
Серп и молот :
Там где не возможно взломать сервер с помощью мозгов, всегда можно воспользоваться чисто русским методом - серпом и молотом. Это не значит, что серп нужно представлять к горлу админа, а молотком стучать по макушке. Просто всегда можно воспользоваться тупым подбором паролей.
Давай снова обратимся к статистике. Все исследовательские конторы пришли к одному и тому же выводу, что большинство ушастых выбирают в качестве пароля имена своих любимых собачек, кошечек, даты рождения или номера телефонов. Так что хорошо подобранный словарь может сломать практически любую систему, потому что везде есть ламеры.
Ты до сих пор еще не веришь мне? Давай вспомним знаменитейший червь Морриса, который проникал в систему, взламывая ее по словарю. Словарь был достаточно маленький и состоял менее чем из ста слов. Помимо этого, червь использовал в переборе слова из словаря установленного в системе. Там тоже слов не так уж много. И вот благодаря такому примитивному алгоритму, червь смог поразить громаднейшее число компов и серваков. Это был один из самых массовых взломов!!!
Взлом по словарю очень часто используется для взлома мыльников, FTP паролей и другой чешуи. Но прежде чем приступать к такому взлому, советую хорошо отредактировать словари имен и паролей. Очень важно знать, какую систему ты взламываешь. Например, если это оконный сервер, то желательно, чтобы среди логинов был "Администратор". Ну а если это *nix система, то обязательно должен присутствовать "root", а все логины типа "Администратор" можно послать куда подальше.
Неплохо было бы вставить в словарь любые имена и пароли используемые по умолчанию для разных сервисов. Очень часто админы забывают или просто ленятся поменять пароли на сервисы, которые запущены, но они ими не пользуются. Эта лень очень часто проявляется у админов окошек и это связано с тем, что в окошках уровень знаний спецов намного ниже. Например, я очень много встречал MS SQL Server 7.0 c логином по умолчанию в "sa" и абсолютно без пароля. Наверно поэтому M$ собирается убрать этот логин уже в следующей версии своего сервера баз данных.
Для тупого перебора я опять могу посоветовать Shadow Scan (ну люблю я эту тулзу, что тут поделаешь). В нем есть очень хороший генератор словарей и реализованы подборщики по всем основным протоколам.
Взлом локалки :
В локалке есть свои особенности. Например, если она построена на основе коаксиала или витой пары соединенной через хабы, то весь сетевой трафик обязательно проходит через твою машину. Почему же ты его не видишь? Просто ОС и сетевуха сговорились и не показывает тебе чужой трафик. Но если очень сильно захотеть, то можно воспользовавшись снифером пронюхать все данные проходящие мимо твоей сетевой карточки.
Сейчас в сети можно скачать громадное количество сниферов и примочек к ним. Я опять не буду советовать тебе что-то конкретное, потому что лично я не могу выделить однозначного лидера среди сниферов.
Разные версии заточены под разные нужды, и тут нужно выбирать именно из этого соображения. Если ты конкретно ищешь пароли, то тебе нужен тот, что умеет выделять информацию о регистрации из общего трафика сети.
Троянус :
Самый тупой и самый ненадежный в отношении админов способ. Хотя админы и бывают ламерами, но на такие шутки уже никто не катит. Но кто сказал, что в сетке существуют только админы? Есть еще куча ламеров с большими привилегиями и маленькими мозгами. Вот именно их и надо троянить.
Как забрасывать троян? Самый распространенный способ - почтовый ящик. Просто даешь трояну какое-нибудь заманчивое имя и отправляешь письмо жертве. Если он запустит твой трой, то считай, что ты царь и бог на его компе. Теперь тебе будет доступно все, что может для тебя сделать твой боевой конь.
Рисунок 3. www.void.ru
Какое дать имя, чтобы заинтересовать ламера? Очень просто, окна очень часто прячут расширения всех зарегистрированных в системе типов файлов. В этом случае, если ты назовешь файл как Anna_Kurnikova.jpg.exe, окна спрячут последнее расширение и любой лам подумает, что видит картинку. Для большей надежности, файл лучше всего назвать даже так: Anna_Kurnikova.jpg...........exe. В этом случае, если даже расширение не прячется по умолчанию, его все равно видно не будет.
Любое письмо с трояном желательно снабдить хорошим текстом, чтобы заинтересовать чела запустить находящийся в нем файл.
Итог :
Эта статья не претендует на полноту, но я постарался дать все необходимые начальные сведения. Просто нас очень часто упрекают, что мы забываем про начинающих, и очень часто грузят вопросами типа: "Как взломать сервант?". Теперь ты сможешь залезть в танк и катиться дальше вместе с нами.
Я заведомо не затрагивал тему получения халявного инета, потому что тут очень много своих особенностей. Но один из возможных способов я все же описал - трояны. Вообще, этот способ практически универсальный и может использоваться везде.
Я так же надеюсь, что продвинутые челы тоже смогли найти для себя нечто интересное или новое. Покедова, надеюсь еще увидимся.
Дополнительная инфа :
www.cert.ru - хороший сервант по известным дырам. Радует, что он на русском, а огорчает редкость обновления и не все дыры описываются.
www.cert.org - то же самое, что и предыдущее, только на английском языке.
www.securityfocus.com - это я тебе уже рекомендовал, поэтому просто напоминаю.
www.void.ru -отличный сервант на русском языке. Можешь сделать его стартовой страницей.
Не верь глазам своим! :
Сейчас мы поговорим о том, как различные проги определяет семейство ОС установленной на серваке. Для этого есть несколько способов:
1. По реализации протокола TCP/IP. Разные корпорашки по разному реализуют стек протоколов в своих ОС. Программа просто анализирует ответы на запросы от сервера и делает вывод об установленной ОС. В основном этот вывод расплывчатый типа Windows или Linux. Точную версию таким образом сказать невозможно.
Допустим, что прога сказала, что на серваке установлен Linux, но какой именно дистрибутив тебе никто не скажет. А ведь дыры в разных дистрибутивах разные и поэтому такая инфа - это только половина необходимого тебе для взлома сервера.
2. По ответам разных сервисов. Допустим, что на сервере жертвы есть анонимный доступ по FTP. Тебе нужно всего лишь присоединиться к нему и посмотреть сообщение приглашения в систему. По умолчанию, в качестве приглашения используется надпись типа "Добро пожаловать на сервер FreeBSD4.0 версия FTP клиента Х.ХХХ". Если ты такое увидел, то можно и радоваться и плакать, потому что это может быть и правдой.
Если надпись приглашения отражает действительность, то админ - лох со стажем. Нормальный админ всегда изменяет приглашение по умолчанию. А вот хороший админ может написать и ложное сообщение. Например, на сервере с Windows 4.0 можно увидеть приглашение в Linux. В этом случае можно безуспешно потратить очень много времени в попытках сломать окна через дыры Linux. Поэтому не особо доверяй надписям и старайся перепроверить любыми другими способами.
3. Социальная инженерия. Если ты хочешь взломать сервант хостинговой компании, то можно отправить письмо админу с запросом об установленных у него серверах. В основном админы или служба поддержки не скрывают эту инфу, но бывают случаи и вранья. Возможно, что эта инфа будет лежать даже на главной странице сервера, но даже это следует проверить.
Чтобы тебя не надули, обязательно обращай внимания на используемые на сервере сервисы, например, в Linux врят ли будут крутиться страницы созданные по технологии ASP.
www.Download.hack :
В этой врезке я постараюсь дать тебе список всех программ, которые тебе понадобятся при тестировании системы на дырявость.
CyD NET Utils - всегда можно скачать с моего сайта www.cydsoft.com/vr-online. Я эту программу писал не для взлома а для тестирования локальных сетей на работоспособность и безопасность. Так что если ты админ, то желательно иметь эту прогу в своем арсенале. В CyD NET Utils присутствует удобный сканер портов, пингер, WhoIs и многое другое. Результат работы можно всегда можно сохранить файл или распечатать.
Shadow Scan (http://www.rsh.kiev.ua/) - отличная прога с большим количеством возможностей для тестирования системы на вшивость. Что-то говорит мне, что написана нашими братьями по разуму из ближней Украины.
NT Crack (http://archivedaru.hypermart.net/winnt_hacking/Ntcrack.zip) - прога проверки NT на вшивость. Если ты хочешь взломать оконный сервер, то эта прога должна быть в твоем арсенале. Ну а если хочешь защитить NT, то тем более.
NT Bugs (hhttp://archivedaru.hypermart.net/winnt_hacking/Ntbugs.zip) - достаточно приличного размера описание багов оконного сервера. Если ты владеешь буржуйским языком, то просто обязан иметь ее в своем арсенале.
LC3 (http://www.l0pht.com/l0phtcrack/dist/lc252install.zip) - самый знаменитый и крутейший подборщик паролей для NT.
Retina Network Security Scanner (http://www.eeye.com/) - хороший сканер безопасности. Вот не знаю я, и за что я в него такой влюбленный :)?
Короткий словарик :
Демон - серверная программа, которая работает в фоне и предназначена для выполнения каких-либо действий. Этот термин применяется в *nix средах. Там названия таких прог в основном отличаются тем, что в конце имени стоит буква "d".
Представим себе демон WEB сервера. Это должна быть прога, которая висит в памяти и ждет подключения на 80-й порт (это по умолчанию). Как только кто-то подсоединился, демон начинает принимать запросы и отвечать на них. Но демоны бывают не только сетевые, потому к сетевым, например, невозможно отнести демон печати.
Сервисы - это то же самое, что и демоны, только так называют те же проги в окошках.
Експлоит - прога, которая умеет пользоваться какой-нибудь уязвимостью сервака. Если он написан под *nix, то может поставляться в исходных кодах. В этом случае, перед использованием потребуеться компиляция.
Порт - Каждая сетевая программа при старте открывает для себя любой свободный порт. Есть и зарезервированные типа FTP это 21-й порт, HTTP это 80 порт и т. д. Теперь представим ситуацию, что на сервере запущено два сервиса: FTP и WEB. Это значит, что на сервере работает две программы, к которым можно коннектиться. Теперь ты хочешь присоединиться к FTP серверу и посылаешь запрос по адресу ХХХ.ХХХ.ХХХ.ХХХ и на порт 21. Сервер получает такой запрос и по номеру порта определяет, что твой запрос относиться именно к FTP серверу, а не WEB.
Так что сетевые порты - это что-то виртуальное, что увидеть невозможно. Если бы не было портов, то комп не смог бы определить для кого именно пришел твой запрос.
Троян - прога, которая незаметно сидит в системе жертвы и позволяет тебе управлять его компом.