Пятница, 29.03.2024, 20:55
ArsNet - мир НИТ
Приветствую Вас Гость | RSS
Главная Пен-тестинг по обе стороны сервера - Форум Регистрация Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Для админов и сисадминов » Сети » Пен-тестинг по обе стороны сервера
Пен-тестинг по обе стороны сервера
WilDДата: Среда, 29.10.2008, 15:09 | Сообщение # 1
Папаня
Группа: Администраторы
Сообщений: 704
Репутация: 16
Статус: Вне ресурса
Пол: Мужчина
Зарегистрирован(а): 04.08.2008
Награды:
За создание сайта За перенос домена За развитие ресурса За хорошую репутации За 100 Сообщений За 250 Сообщений За 500 Сообщений За первое сообщение на форуме и вступление в наши ряды
Тесты на проникновение: советы практикующим админам и хакерам

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

Мыщъх долго занимался пен-тестами, хотя не особо это афишировал. Методом проб и ошибок был выработан четкий и эффективный план действий, позволяющий проникать внутрь защищенных сетей с минимальными усилиями и практически без отрыва от основного «делопроизводства», то есть фактически в полном бэкграунде. И вот теперь этот план, отшлифованный до зеркального блеска, мыщъх выносит на всеобщее обозрение.
Сканеры безопасности

Сканеры безопасности (типа XSpider) срабатывают только в клинических случаях, например, когда администратор - лось, который идет лесом. Обычно, перед тем как заказать тест на проникновение, клиент делает все, что только может сделать: устанавливает последнюю версию антивируса для поиска уже внедренных руткитов, скачивает свежие заплатки, прогоняет один или несколько сканеров безопасности - и только после этого приглашает пен-тестеров.

Конечно, пен-тест может проводиться и без ведома администратора с подачи руководства компании, что существенно упрощает задачу атакующего, вот только удаленные способы определения установленных заплаток можно по пальцам пересчитать. Практически все известные мне сканеры работают в мягком режиме, используя косвенные эвристические подходы (в общем случае сводящиеся к определению версии ПО), не решаясь на прямое переполнение буферов в силу небезопасности этой операции. Запускать эксплойты один за другим и то выгоднее!

Пен-тестер просто не может полагаться на сканеры безопасности, поскольку ему платят не за сканирование сети, а только за реальные проникновения! Поэтому приходится орудовать своими лапами и хвостом, вгрызаясь в защитный периметр острыми хакерскими зубами.
Цель определяет средства!

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

Первое — это ответственность за полноту предоставляемой информации. Заказчиком явно или неявно предполагается, что консультант найдет все дыры, включая еще никому не известные, что невозможно по определению! Вот только заказчику этого не объяснишь, и если спустя некоторое время его атакуют, то, возможно, придется сделать money back, а то и компенсировать ущерб, иначе чего доброго разъяренный заказчик может и морду набить. Следовательно, консультант должен в совершенстве владеть «пальцовкой» и выглядеть достаточно внушительно, создавая впечатление, что за спиной у него находятся могущественные силы, способные его защитить :).

Второе. Заказчик тоже не дурак и, вероятнее всего, попытается обхитрить консультанта, а поводов, чтобы не платить деньги, можно придумать много. Например, внедрить закладку в свою собственную систему безопасности, которую консультант ни за что не найдет, а потом, получив отчет, указать на нее пальцем и возмутиться, что в отчете ее нет. Естественно, это сильно упрощенная схема. На практике заказчик обычно оставляет в системе безопасности N дыр, из которых консультант находит только K, что позволяет заказчику оценить степень полноты анализа, нижняя граница которого находится на уровне N/K. Если это соотношение окажется удручающе велико, консультант будет послан в пешее эротическое путешествие. Вердикт: администратор - будь бдителен и не дай себя обмануть, консультант – не думай, что удастся срубить капусты за просто так!

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

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

Ментальная ошибка заказчиков состоит в том, что они считают, будто бы пен-тестер ищет уязвимости, в то время как он действует по заранее продуманной стратегии, в которую анализ конкретных ситуаций не входит. Если принять, что защищенность системы - это f(x), то вектор действий пен-тестера — это константа. Так за что же мы платим пен-тестеру деньги?!
Постановка задачи

Типичный пен-тестинг начинается приблизительно так. Заказчик дает IP-адрес публичного web-сервера компании и требует от нас, чтобы мы забрались внутрь локальной корпоративной сети (с web-сервером зачастую никак не связанной) и… наследили там, отметив свое местопребывание. Внедрили shell или создали дисковый файл/запись в закрытой базе данных. Последние два пункта более предпочтительны, поскольку забраться в локальную сеть намного сложнее, чем выбраться оттуда, и с shell'ом тут могут возникнуть траблы различной тяжести.

Ломать web-сервер смысла никакого нет, поскольку даже если он и соединен с локальной сетью, то в 9 из 10 случаев находится в демилитаризованной зоне, огражденной брандмауэром, а это значит, что, захватив контроль над web-сервером, мы все равно не войдем внутрь сети, пока не хакнем брандмауэр. Зачем нам это нужно?! Лучше атаковать непосредственно саму локальную сеть путем рассылки электронных писем с боевой начинкой или линками на «заминированные» html-страницы или файлы документов. Подробнее об этом мы поговорим ниже, а пока рассмотрим комплекс подготовительных мероприятий, предшествующих атаке.

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

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

Если повезет, то удастся выяснить и личные предпочтения некоторых сотрудников (сотрудниц), например узнать, что кто-то без ума от группы «Мама, роди меня обратно». Тогда можно тут же переслать по электронной почте «заряженный» клип или mp3 (благо ошибки переполнения в аудио- и видеоплеерах в изобилии). Но это крайний случай. Будем исходить из того, что фортуна повернулась к нам задом и все девушки на фирме либо лесбиянки, либо феминистки. С мужчинами они разговаривают сугубо деловым тоном, с которого не съезжают ни при каких обстоятельствах.
Ударная фаза атаки

Имея на руках список электронных адресов, рассылаем на них обыкновенные (то есть ничем не начиненные) письма, на которые жертва просто обязана что-то ответить. О бесплатных ящиках типа mail.ru лучше сразу забыть - они нещадно давятся спам-фильтрами, да и выглядят несолидно. Какие проблемы в том, чтобы зарегистрировать несколько доменов третьего уровня в зоне com.ru, например? Собственный сервер, по современным понятиям, уже давно не роскошь, особенно для IT-специалистов, коим, безусловно, является пен-тестер. В идеале, конечно, следовало бы порекомендовать домены второго уровня, но это совсем не обязательно.

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

Получив ответ, смотрим на заголовок письма, определяя тип и версию почтового клиента, а в ряде случаев и версию операционной системы. Соответственно, кидая жертве линк на подконтрольный нам web-сервер, мы определяем версию и тип браузера. Какова вероятность, что жертва кликнет по ссылке? Судя по моей практике, это происходит в 8 из 10 случаев, если используется доменный уровень в зоне типа com.ru, и по меньшей мере в 2-3 из 10, если это narod.ru или что-то подобное. Главное — это не домен, а мотивация. Письмо с текстом типа: «А вот мы тут подготовили клевую презентацию, взгляните» - навряд ли вызовет жгучий интерес. Другое дело: «Я купил ваш товар, а он оказался дефектный, в магазине мне сказали, что не гарантийная ситуация, потому что… бла-бла-бла, и посоветовали обратиться непосредственно к вам. Вот фото дефекта крупным планом: [link на jpg]». Конечно, текст письма предельно упрощен, но общий смысл в целом передан. Если составить письмо юридически грамотно (для чего можно воспользоваться услугами юриста) и в вдобавок упомянуть реальные имена сотрудников и отделов, то с вероятностью 99,9% они щелкнут по ссылке, чтобы разобраться в ситуации. Впрочем, учитывая, что по меньшей мере в 90% случаев почтовые клиенты настроены на автоматическое отображение внешних картинок в HTML-письмах, можно ничего не мутить. Ссылка откроется и без телодвижений со стороны жертвы.

Зная же версию почтового клиента/операционной системы/браузера, смотрим, какие в ней есть дыры. Для этого достаточно зайти на Security Focus или любой другой подобный ресурс и заточить. А точить можно много чего! Например, Excel и Word, уже давно ставшие стандартом де-факто, содержат огромное количество дыр. Впрочем, учитывая уровень компьютерной (без)грамотности большинства сотрудников, посылки исполняемого файла во вложении зачастую оказывается вполне достаточно, и его открывают, особенно если найти убедительный повод, создающий у жертвы непреодолимую мотивацию служебного или неслужебного типа.

Как показывает мой опыт, легче всего клюют на эту удочку пользователи со средним уровнем подготовки. Совсем уж безграмотные просто не знают, что с этим вложением делать, а достаточно продвинутые, прежде чем запустить exe, обязательно проконсультируются с администратором или просто посмеются над хакером. Уровень пользователей легко определяется в ходе предварительной разведки, после чего в ударной фазе атаки остается только позвонить по телефону голосом и сказать, что вот, мол, мы послали вам rar-архив с накладными, но не уверены, что все правильно упаковали и нигде не накосячили; откройте его, пожалуйста, и подтвердите успешность своего заражения :). И ведь открывают!
Тузы в рукаве, или честные приемы нечестной игры

На момент написания этих строк, по данным компании Secunia, в IE содержалось семь незалатанных дыр, в Горящем Лисе — пять, в Опере — ни одной, да только кто же эту Оперу использует! «Незалатанными» в данном случае мы называем дыры, под которые компания-разработчик еще не выпустила заплаток безопасности, из чего следует, что вся атака сводится к заманиванию пользователя на «заминированный» сайт.

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

Активность пен-тестеров коррелирует с количеством незалатанных дыр, что вполне объяснимо. Действительно, зачем ломиться в закрытые дыры, если можно просто дождаться появления одной или нескольких дыр, от которых еще нет «лекарства», и тут же предложить свои услуги по проникновению. Или сначала проникнуть, а потом предложить. Это рискованно (и в ряде случаев уголовно наказуемо), но надежнее. Как уже говорилось, переговоры с клиентом – процедура вялотекущая, и, пока клиент дойдет до нужной кондиции, дыру, скорее всего, уже успеют прикрыть, или же администратор (который не лось) найдет подходящий workaround.

Вот тут меня многие спрашивают: должен ли пен-тестер вести собственные исследования на предмет поиска дыр в двоичном коде/открытых исходных текстах? Короткий ответ: пен-тестер никому ничего не должен и делает только то, что ему в кайф. Развернутый ответ: конечно, поиск собственных дыр - это хорошо. Владея дырой, о которой никто не знает, можно стричь корпоративных пользователей как баранов, пока источник не иссякнет (дыру не прикроют). Однако намного более продуктивными оказываются посиделки на хакерских форумах и чтение блогов различных исследователей. Как показывает практика, среднее время реакции производителей ПО составляет 1-2 месяца. Это же уйма времени! Вот только чтобы успеть прочитать блог до того, как он попадет на Security Focus и о нем все узнают, нужно много читать, причем не только на английском. На английском читает толпа народу, с которой мы вынуждены конкурировать. Знание же остальных языков (даже на уровне чтения со словарем) ставит нас вне конкуренции. Кстати, производители ПО в своей массе англоговорящие и знанием большого количества иностранных языков не обременены.

Короче, дыра — это не нора. И рыть ее не надо. Пусть роют другие, а пен-тестер будет снимать сливки. Когда же дыры кончаются, наступает мертвый сезон, в который работать нет никакой мазы. Зачем драть свой хвост? Достаточно просто немного подождать. Дыры появятся. Не может быть, чтобы не появились! Кстати, именно в силу этого обстоятельства пен-тестинг не приносит стабильного дохода и дальше подработок дело не идет. Клиент тоже идет не регулярно. То клюет косяками, то опускается на дно. Как правило, после очередной эпидемиологической вспышки администраторы высаживаются на жуткую измену и начинают панически укреплять оборону, используя для этого все доступные средства, и в том числе пен-тестинг. Но через некоторое время они успокаиваются, и тогда пен-тестерам приходится прилагать большие усилия, чтобы убедить окружающих в собственной необходимости. Тут не так важны знания компьютера, как умение раскручивать клиента. То есть пен-тестер - это не только (и даже не сколько!) хакер, но еще и психолог. И тут мы плавно переходим к обсуждению знаний, которыми должен обладать пен-тестер.
Пен-тестеры — кто они?

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

Фактически пен-тестер - это тот же киддис, научившийся затачивать чужие эксплойты под нужды производственной необходимости, а в идеале - составлять свои собственные, имея на руках более или менее внятное описание дыры. Знания ассемблера и умения держать в руках отладчик для этого достаточно. А если говорить об атаках через email, то ассемблер вообще не требуется. Узкий исследователь, специализирующийся, например, на *nix-системах, при пен-тестинге проигрывает эрудированному пионеру, проводящему все свободное (и несвободное) время за web-серфингом.

Конечно, это не значит, что профи не могут участвовать в пен-тестинге. Еще как могут! Но наибольшую активность в продвижении своих услуг проявляют именно пионеры, потому что для них это зачастую чуть ли не единственный способ быстрого заработка. А может ли в роли пен-тестера выступить сам администратор? Это как сказать… Разослать письма с вложениями всем сотрудникам, а затем поставить виновных по стойке смирно — нетрудно, вот только совсем не открывать никаких вложений все равно не получится. Документы для того и придумали, чтобы ими обмениваться. Кто-то же должен читать резюме, накладные, etc… К тому же у администратора обычно и без того хватает проблем, касающихся поддержания своей тушки в курсе всех новостей, касающихся безопасности. В идеале администратор должен регулярно посещать сайты разработчиков всего используемого ПО или порталы типа Security Focus, чего рядовые администраторы ни разу не делают. Максимум они настраивают систему автоматического обновления Windows. Офис обновляют уже единицы, а об остальных программах никто и не вспоминает. Так стоит ли удивляться, что пен-тестеры плодятся, как кролики?!
Заключение

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


Заработать много денег - храбрость, сохранить их - мудрость, граматно тратить - искуство.
 
Форум » Для админов и сисадминов » Сети » Пен-тестинг по обе стороны сервера
  • Страница 1 из 1
  • 1
Поиск: