Перейти к содержимому

Анатомия взлома

Этот разговор состоялся как обычно, случайно, в одном из сетевых сообществ Рунета. По понятным причинам ни ссылок, ни даже никнеймов авторов прозвучавших реплик, вопросов и ответов, здесь мы не приводим. Более того - если авторы потребуют убрать этот материал - уберём. Что, наверное, достаточно наивно.
Материал интересен всем - и подходом, и содержанием и, главное - блестящим описанием процесса. Возможно, кому-то этот текст сильно упростит жизнь. Некоторым, конечно усложнит - но им сложности нравятся. Потому что, взлом это не хулиганство. Хороший взлом - новое искусство, которое пока выдаёт себя за пошлый кулхацкерский кич.

Первый собеседник.

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

Второй собеседник.

Хз, алгоритмирую. Главное всегда - инфраструктура, базис, стандарты и все такое. Ну как можно написать, как посмотреть листинг фтп, если он запрещен? Ну фтп-демонов штук 300. Ну RFC штук 12, которые относятся к фтп-протоколу. И еще и их никто не соблюдает.
Давайте абстрагироваться. Дано - есть сервер. Задача - взломать. Нормальные такие условия, да? Х.. с ним, попробуем описать «крякер Тыртырнету».

Первые наши действия: определить айпи и попытаться определить сервисА.

Что такое есть сервисА? Любая машина управляется операционной системой какой-то. Пофигу какой, основная задача любой ОС всегда одна и таже. Обеспечивать работу данного компьютера, чтобы он мог исполнять реквесты пользователя. WWW-сайт исполняет запросы и отдает инфу по запросам пользователя, ОС обеспечивает работу демонов, которые предоставляют определенные сервиса. ДНС-сервер обеспечивает преобразование понятных человеку адресов типа [url="http://www.com/"]www.com[/url] в ip-адреса. Соответственно, обрабатывает запросы кучи серверов, хостов, сервисов. Которые при упрощении все таки опять оказываются запросами, инициированными конкретным конечным пользователем. Поисковые сервера, allocation-сервера ресурсов (которые перенаправляют запросы пользователя на наиболее близкий к нему по времени отклика, наименее загруженный, чтобы с максимальной скоростью и комфортом обеспечить запрос пользователя) - любые сервисы при значительном упрощении выполняют одну и туже работу, исполняют запросы пользователя. В наиболее комфортном (из возможных, из необходимо эффективных и т. п.) виде.

Все упирается в конечного пользователя. Пускай все максимально секьюрно и все разработчики, которые работали в процессе создания ПО для обеспечения запросов Дуни Барановой из Малых Фигнюков, работали в подвале с полутораметровыми стенами и свинцовые трусы носили все время работы! Дуня будет юзать стандартное ПО. Что значит стандартное? Забудьте Винды, Никсы и подобное. Стандартное - значит стандартизованное, сделанное по RFC, внутренним стандартам.
Пох, что Дуня классный спец по *BSD-ветке и находу может писать скрипты километровые. Была такая старая реклама в спецжурналах: сидели за столом благообразная, убеленная сединами пара лет под 60 и панк отвязнный - с пирсингами, кольцами в ушах, ирокезом и типа остальной амуниции. Называлось примерно так - “IftheyTCP/IPcompatible, wecanunderstandhim”. Не помню точно, но смысл такой. Было такое! TCP/IP не всегда был стандартом. Чтобы понимать друг друга, мы должны знать язык, понятный нам обоим. В той или иной степени стандартизованный. «Превед» понятен всем, не взирая на то, что смысл вкладывается несколько иной. Основное значение сохраняется. Так что, основой для нашей атаки на Тыртырнет будут стандарты.

1) Ищем сервисА.

Возьмите сканер. Не надо лезть к своему убогому "Акцесс-Дайвер". Нам нужен Сканер. Любой сканер, который попытается по запросу к сетевому порту хоста определить наличие на нем сервиса. По базе ли стандартных портов (на 80-порту слушает WWW-сервер, если на 80 порту откликается какой-то сервис, логично предположить что это WWW), по TTL определяет примерную ОС хоста, по сигнатурам, по баннерам и хз еще по каким параметрам. Лучший какой? Лучший сканер это ваши руки, поконнектитесь на каждый порт и посмотрите ответ. Гы. Ладно-ладно, научитесь в конце концов пользоваться "nmap". В большинстве случаев достаточно. Да! Там может висеть что-нибудь, противодействующее "nmap". У Хыра вон спросите. UST тоже что-то такое писали. Да много всего может быть. Но, в 90% случаев не будет ничего против "nmap".

Сделайте "whois".

Отвечаю на вопрос «как?». Как угодно! Сетевыми сервисами воспользуйтесь, софтом, трейсертами всякими. Чем больше вы получите инфы из разных источников, разными способами, тем лучше. Вполне может быть, что перед хостом стоит "cisco", которая прокидывает транспарентно запросы к определенному ip на определенный порт в какую-нить DMZ-зону, а сама маскируется под "linux", "freebsd" или фиг знает, что еще. Вы сканите хост в святой уверенности, что это "FreeBSD 5.4", а это "циска Фроста". Которая вообще не "циска", а "целерон" с флешкой, на котором стоит "FreeBSD", и которая маскируется под "Циско-Иос".

Что нам надо от "whois".

Нам надо посмотреть, какие хосты стоят перед целью на вашем запросе? Верно ли то, что целевой хост отдельная машина? Или это виртуальный сервер? Может быть мы не проходим дальше сетевого интерфейса граничного роутера, к которому примапплен сетевой интерфейс сервака находящегося в ДМЗ? Или вообще внутри сетки! Sic!
Если мы видим, что диапазон адресов в котором находится целевой хост, принадлежит компании с деятельностью (читай - обеспечением сервисов, предоставляемых компанией), совпадающей с целевой машиной, значит еще есть сервера, компы и хосты. Которые также участвуют в процессе обеспечения сервисов пользователю этой компании. Значит - все адреса этого диапазона представляют для нас интерес самый непосредственный.
Это могут быть NSсервера (NameServer), которые мы можем использовать для атаки типа спуффа.
Это могут быть DNSсервера, которые можно использовать для создания бекдор-канала для спокойно-тихого выливания из внутренней сети (ну не то чтобы внутренней даже, а просто protected, internal-accepted, private-non-NATed и т. п.) информации.
Это могут быть MX (MaileXchange) сервера (заголовки серверов, методы HELLO-handshaking, логи и методы graylisting-демонов почтовых серверов) и много всего прочего. Да-да! Антиспам системы раскрывают кучу инфы, перебор почтовых адресов отсеивающихся грейлистинг-демонами приводит к однозначному определению валидного мыл-адреса, дальше начинается атака на существующий мейл-адрес, попытки отсыла троянов и тому подобного.
Это могут быть RADIUS-сервера (сервера аутентификации), это могут быть сервера VPN-доступа (VirtualPrivateNetwork), акцесс к которым разрешен отовсюду. И которые зачастую используют не самые сильные методы шифрования и handshaking. Да много всего! И мы аккумулируем эту информацию.

2) Хантинг

Нам нужна информация. Любая. Вся. Мы будем заниматься аналитической работой. Мы будем искать в Интернете все упоминания мыльных адресов с обратным хвостом целевого хоста. Форумы одноклассников, «любителей карманного бильярда», мыло, логи веб-серверов, кто что когда искал, какое количество запросов, данные об UPTIME-времени хоста, записи на веб-сайте компании - когда она была создана, когда было зарегистрировано доменное имя, на какой адрес почтовый, на какой телефон, на чье имя. Резюме на сайтах по поиску работы, в котором упоминается целевая компания, архивы СМИ с новостями о компании, имена и фамилии работников дававших интервью. Логи и IRCс nickname, совпадающими с фигурантами целевого хоста. Блоги и ЖЖ, с Никами и айпи-адресами, с упоминанием компании.
Естественно, что на определенном уровне мы просто физически не сможем вручную насиловать гугль, у нас будут скрипты, софт спецовый, занимающийся этим. Попробуем выяснит физический адрес компании, в чьем владении находится целевой хост. Выясним, кто предоставляет им услуги. Связь, cleaning-сервис, питание, поставку воды, провайдера связи. Выясним, кто обеспечивает физическую охрану объекта. Грубо говоря, какая контора нанимает гоблинов, для того, чтобы стояли на входе в офис и третировали младший персонал проверкой пропусков. Чем не вариант - написать письмо от охранной конторы, с уведомлением о том, что мы (офигенно крутая контора, ЧОП) уволили за воровство и шпионскую деятельность кого-то, и просим связаться с нами по такому-то мылу на предмет возможных претензий ака в ответ получить «Пропал карандаш две недели назад со стола! Йоптет!». Ответ на это письмо с приложением «видеозаписи» изьятия карандаша обязательно откроют! Он будет с "RE:RE" темой и очень ожидаем фигурантом. Ладно, это все лирика. В итоге, мы получим достаточную картину сервисов.

«Зарегистрируйтесь у нас на сайте чтобы получить условия дилерского соглашения!» Значит, что-то продают. А значит обеспечивают поддержку, сервисные услуги, апдейты, news-рассылки. СервисА!

«Свяжитесь с нами, и мы вышлем вам подробную презентацию (список услуг, прайс)». Значит, стоит попробовать пощупать присланное на предмет наличия например метаданных документов MSOffice, в которых может оказаться, например, логин пользователя. В теле письма могу содержаться данные почтового сервера - имя демона, версия, используемые модули.

Всё это помогает определить - что же все таки нам противостоит. Естественно, что варианты это все, причем использующиеся в особо тяжких случаях. Баловаться этим, чтобы просто так куда-то попасть, можно только из желания потренироваться или от переизбытка времени. Хотя темы, созданные системным администратором на специализированных форумах, очень точно могут предоставить информацию об уязвимостях, существующих сервисах в сети и качеству знаний администратора в той или иной области. Анализ веб-сайта как по содержимому информации - «осуществляем услуги по внедрению корпоративных систем на ORACLE” и статья “Генераторы отчетов», в которой рассматривается Win2k-пример - с точностью на 90% подскажет, что сайт на Оракл Портале, а система Вин2к. Джава-аплеты на сайте только потвердят.

Итак, мы определились с предоставляемыми хостом сервисами. Мы проверили, выяснили и перепроверили версии, имена демонов. Желательно также проверить права, из под которых запущены демоны и сервиса. Копаем инет на предмет наличия паблик-сплоитов. Естественно паблик, те кто что-нибудь приватное могут достать, это не читали, им нах не надо.
Нету? Во как, ну бывает. Довольно часто. Практически всегда, либо просто PoC-сплоиты, либо требования другие, либо пропатченно, да вообще просто не работает! Обязательно разберитесь в каких условиях будет работать. Очень важно знать, чего именно на целевом хосте нету. Ну тривиальный пример "magic_quotes=off ". Ну ты понял да, о чем я?

Окей, мы ищем подобные версии и моделируем сервер такой же. Исходя из примерного состава ПО, который мы уже знаем. Ну да примерного, а что делать-то! Естественно, что надо попытаться слить все конфиги, скрипты и прочее. Все, что сможем - как это делать, я пару раз писал. Триальная версия только доступна? Ограниченная по функционалу? Ничего страшного, нам надолго не надо, мы же на виртуалке типа vmware. Нет предоставленного на целевом хосте функционала? Ну что делать? Смотрим то, что есть. Не найдем, значит будем трапать тот функционал, который нам не доступен. А для начала поанализируем, поэксплуатируем то, что есть.

Ничего не получается? Ыыы! Щас плакать буду! Стал, мля, практически сис-админом, времени потратил хз скоко, а толку ноль. Что делать? Да валом работы еще! «Не спать негры!» (с).

а) Если время позволяет, то читаем TODOлисты производителей софта. Читаем то, что было поправлено в предыдущих версиях и чем черевато обновление на новую версию. Производители очень часто пишут, что нужно сделать, чтобы обновиться. Смотрим внимательно на соответствие, на несоответствия особенно! FIXEDчитаем обязательно. Не забываем пытаться атаковать внутреннюю сетку, мыльные адреса, постоянно проверяем и монторим состояния сервисов. Чисто ждём...

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

Смотрим, кто и когда организовывал атаки сетевых протоколов, как это делалось, какой демон используется в качестве фтп и как в нем реализованы RFC. Что говорят разработчики по поводу своих секьюрити extensions? Как реализован ssh, откель можно, как вообще админ туда приходит-то? Все равно ведь приходит.

Что используется в качестве IDS, какие правила для IDSв стандарте идут? Чего используется ISP-ом? Какие желязяки роутеры, днс-сервера, NNTP-сервера, «соседние» хосты на чем стоят? Может быть, реально повесить просто сниффер на интерфейс, на котором доступен трафик целевого хоста? Может фигарнт не использует ssl-почту? Валом таких явлений.

Может быть, можно вызвать отказ в обслуживании у ISP’а и под шумок, под восстановление сервисов, успеть таки спереть PSK для IPsec-туннеля или еще какую-нить критичную инфу, передаваемую по открытым каналам в этот момент? Ведь некогда сисадминам! Все лежит, все пропало! Часто админы с ленцой относятся к возможности перехвата траффа, когда все идет по IPSecканалам между хостами. Ну так выполни отказ в обслуживании! Наиболее часто доступны для понимания и реализуемы такие эксплоиты.

Найди слабую точку и порушь всю цепь. Доступ неограничен с подсетей, шанс светит успеть все сделать! Помнишь про бэкап-оператора? Когда раз в квартал производится бекап? Который делает не самый квалифицированный персонал. По сути бесправный, совсем зарестрикченный. Обязанности запустить последовательно несколько скриптов и убрать "dvd" в хранилище, слив еще на один quick-backup инкрементальный.
Я его чутка переписал, так как там скрипт-кидди защит убогая была, но он все равно не дал мне коннектбек-шелла. Пришлось покапаться в конфигах CheckPoint и примерно прикинуть чего у них может быть. А там был доступ с адреса из Владивостока с подсети динамической. Разница во времени была серьезная и я сумел проспуффить ip в тот период, когда их Владивостокский филиал спал. Дальше все было просто. С принт-сервера, постоянно включенного, я попал к контроллеру домена и ДНС-серверу на 8-ом бинде, успешно зашелив который, получил возможность отдавать инкапсулированные в днс-трафф команды. Так как днс их прова был настроен не то что плохо, а скажем так - «не тонко».

Естественно, что обычно все проще. Когда за неделю надо уработать сервер серьезный - только в американских кино показывают. Или там меньше еще времени? Обычно, ты просто время от времени проверяешь. Упс, вот какая бага тут возникла, а ведь что-то похожее было там, где я искал. А ну-ка!
Все случаи «там на серваке был поднят фтп-сервер, к которму совсем недавно вышел сплоит от Real_Cool_Hatsk_Team" относятся уже к другому уровню. Когда ты все и так прекрасно знаешь. А случаи «Применив сплоит от такой-то Тим я получил шелл ..» не рассматриваются, ибо это самый начальный уровень скрипт-кидди.

Так что «Возможностей впору вчетвером нести, но каждый коренаст и голенаст". И знаний, которые можно получить и использовать еще очень много. Причем, это все гораздо милее и безопаснее биллингов. И удовлетворения приносит гораздо больше, чем ковыряния с скриптами.

P.S. Когда-нить буду с гордостью говорить своим внукам, что показывал горизонты великому спецу.

Третий собеседник.

"Дано: Есть сервер Задача: Взломать."

Странная предпосылка. Модель нарушителя - хулиган? Может, сначала убедиться, что его надо взламывать и информация необходимая именно на нем? Или, если надо обеспечить его недоступность - начать с сетевого оборудования или скажем dns-сервера?

"... ЛЮБЫЕ сервисы при значительном упрощении выполняют одну и туже работу, исполняют запросы пользователя. В наиболее комфортном виде ..."

Замени пользователя на клиента - будет правильнее. Ибо сервис-сервис тоже очень сильно распространено.

"... Там может висеть ... противодействующее nmap’у ... много всего может быть. В 90% случаев не будет ничего против nmap ..."

Да и в nmap'е просто может не быть соответствующей сигнатуры. А еще есть queso и подобное. Nmap-teq ныне встроенны во все сканеры безопасности - от "XSpider" и "ISS" до "Nessusov" с "GFI Lang". Я обычно сначала начинаю с "сделайте whois". Во первых границы проникновения определишь для себя и адресацию внешнего сегмента (dmz) атакуемой сети (атакуемого сервера в некой сети) - особенно если на горизонтальном уровне (dmz-srv -- dmz-srv) правила (уровень безопасности) равный.

А также всякие "NAT", "PAT". Из DNS'а выдираются MX и атака на пользователей таргет-сервера и так далее. Векторов сразу рождается великое множество. Иногда есть более легкие пути. Да и уже после того, как видно - кому принадлежит сеточка, можно предположить наличие "IDS/IPS" и уже тем же самым "nmap" просканить распаралелено на протяжении длительного промежутка времени. Или же с мертвых хостов или отданных на убой. Но таким образом, чтобы не превысить средненедельную (ежедневную) статистику "IDS" по сканированиям сети всякими авторутерами. Естесственно, всякие "IDS evasion teq" желательно сразу применять, а не постфактум.

Четвёртый собеседник.

Подумал и решил дописать все таки.

Я не считаю правильным и полезным, но к сожалению не могу не признать, что сам двигаюсь по этому пути. Итак, чем заняться секьюрити-маньяку, если сам он ксплоиты не пишет и доступа к 0дей нет.

"WARNING: This is a U. S. Government Computer System. Unauthorized access is prohibited by Title 18, United States Code, Section 1030
--------------- Only CLASSIFIED Material On This Machine -----------------

Department of the Navy Automated Information Systems and related equipment are intended for the communication, processing and storage of U.S. Government information. These systems and equipment are subject to monitoring to ensure proper functioning, to protect against improper or unauthorized use or access, and to verify the presence or performance of applicable security features or procedures, and for other like purposes. Such monitoring may result in the acquisition, recording, and analysis of all data being communicated, transmitted, processed or stored in this system by a user. If monitoring reveals evidence of possible criminal activity, such evidence may be provided to law enforcement personnel. Use of this system constitutes consent to such monitoring. Use of this or any other DoD interest computer system constitutes a consent to monitoring at all times."

Оффигительно. Каждый кто видел такой дисклеймер первый раз испытывал сильнейшие чувства. Начиная от желания сховаться по быстрому в леса Брянщины, заканчивая неудержимо раздвигающимися в стороны пальцами и желания рассказать всему миру насколько ты крут. Самое смешное, что использованный сплоит был взят практически в паблике. Хотя тогда приватов особенно не было. Сейчас другое дело, только сдается мне в приватах интересного мало у братвы. А вот в паблик багтраках инфы валом. И еще есть метасплоит. Я не уверен в правильности существования метасплоита, но раз он есть, им надо пользоваться.

Вот представьте, вы копите денег, ищете и наконец покупаете за 2000 у.е. hi-end привод играть свои тщательно собираемые фирменные ауди-cd. Ваш сосед покупает за 200 баксов китайскую Сони, которая играет и аудио cd, и mp3 и dvd-audio. Для того чтобы услышать разницу вам надо вложиться в подготовку к звучанию комнаты, в которой вы будете слушать музыку. Где то около 150 грина за кв.м. А он не задумываясь врубает свою Соню на кухне и не париться совсем. Эффект практически одинаковый, а вот вы попали на хз сколько больше.

Китайская Соня в нашем варианте называется метасплоит. Чтобы использовать метасплоит надо почитать про некий язык программирования Ruby. Это не опасно, если вы умеете (умели) писать на бейсике или тем более паскале, Ruby понять влет можно. Если вы знаете Перл, то Ruby вас расстроит. Ограничения Ruby по сравнению с перлом не радуют, хотя языки очень похожи. Веселее другое. Вы должны юзать линукс. Я все равно рекомендую Сусе. Просто потому, что я ее люблю. Если ваша суся, ну или другой линукс, не имеет в рпм-ах ruby, то rpmfind вам гарантированно поможет. Почему линукс? Ну блин поддерживает Ruby виндосы, но это такая морока волноваться насчет библиотек всяческих, например с моей OpenSSL винды оно метасплоит запустить не захотело. Я было ломанулся разбираться, а потом понял, сколько нервов это будет с сплоитами. Основная трабла у меня в паблик сплоитах, которые не работают или просто PoC это отсутствие нужных dll-ек. На часть которых ругается антивирус.

  Так что, после того, как вы стали «на короткой ноге» с нмапом и искренне удивляетесь, что юзали tracert и nbtstat команды, вам прямой путь учить Ruby ставить метасплоит Фреймворк. Скрипт-кидди, вооруженный этими двумя инструментами, приравнивается к танку. Скрипт-кидди, вооруженный знаниями о днс серверах, приравнивается к атомной подлодке. Единственный реально работающий метод, обеспечивающий секьюрную для вас работу с похаченным хостом - использовать днс-трафф. Такое мое скромное мнение. 

Опубликовано Рубрики Без рубрики

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *