Конференция HACKTIVITY 2012. Теория большого взрыва: эволюция пентестинга в условиях повышенной безопасности. Часть 1
Сейчас мы попробуем другой способ внедрения SQL. Посмотрим, будет ли база данных продолжать отбрасывать сообщения об ошибках. Этот метод называется «ожидание задержки», а сама задержка записывается в таком виде: waitfor delay 00:00:01’. Я копирую это из нашего файла и вставляю в адресную строку браузера.
Всё это называется «слепое внедрение SQL на временной основе». Всё, что мы здесь делаем – это говорим: «ждать задержки в течение 10 секунд». Если вы заметили, слева вверху у нас имеется надпись «connecting...», то есть что делает наша страница? Она ждёт соединения, и через 10 секунд у вас на мониторе появляется правильная страница. С помощью этого приёма мы обращаемся к базе данных, чтобы она разрешила нам задать ей ещё несколько вопросов, например, если пользователь — Джо, то нужно ждать 10 секунд. Это понятно? Если пользователь – dbo, ждать тоже 10 секунд. Это и есть метод слепого внедрения SQL.
Я думаю, что разработчики при создании патчей не устраняют эту уязвимость. Это SQL – инъекция, но наша программа IDS её тоже не видит, как и предыдущие способы внедрения SQL.
Попробуем что-то более интересное. Скопируем эту строку с IP адресом и вставим её в браузер. Сработало! Полоска TCP в нашей программе покраснела, программа отметила 2 угрозы безопасности.
Отлично, смотрим дальше, что произошло. У нас имеется одна угроза командной оболочке XP, и ещё одна угроза – попытка внедрения SQL. Итого отмечено две попытки атаковать веб-приложение.
Хорошо, а теперь помогите мне с логикой. У нас есть пакет данных о вмешательстве, в котором IDS говорит, что отреагировала на разные вмешательства в командную оболочку XP.
Если мы опустимся вниз, то увидим таблицу HEX-кодов, справа от которой имеется флаг с сообщением xp_cmdshell + &27ping, и очевидно, это плохо.
Посмотрим сюда, что же случилось. Что сделал SQL сервер?
SQL сервер сказал: «ты можешь иметь пароль от моей базы данных, можешь получить все записи моей базы данных, но, чувак, я совсем не хочу, чтобы ты запускал у меня свои команды, это совсем не круто»!
Что нам нужно сделать – это добиться, чтобы даже если IDS сообщает об угрозе командной оболочке XP, эта угроза бы игнорировалась. Если вы используете SQL Server 2005 или SQL Server 2008, то при обнаружении попытки внедрения SQL командная оболочка операционной системы будет заблокирована, что не позволит вам продолжать своё дело. Это очень досадно. Так что же нам делать? Нужно попробовать попросить сервер очень ласково. Нужно сказать так: «пожалуйста, папочка, ну можно мне эти печенья»? Вот что я делаю, серьёзно, я прошу сервер очень вежливо! Я прошу показать дополнительные опции, прошу реконфигурацию и прошу поменять настройки командной оболочки XP, чтобы сделать командную оболочку доступной, потому что мне это нужно!
Мы видим, что IDS это обнаружила – видите, здесь отмечено уже 3 угрозы.
Вы только посмотрите сюда – мы взорвали логи безопасности! Похоже на рождественскую ёлку, столько здесь всего навешено! Целых 27 угроз безопасности! Ура, ребята, мы поймали этого хакера, мы его достали!
Нас не беспокоит, что он украдёт наши данные, но если он сможет выполнять системные команды в нашей «коробке» – это уже серьёзно! Вы можете cрисовать маршрут Telnet, FTP, можете завладеть моими данными, это круто, но я об этом не беспокоюсь, я только не хочу, чтобы вы завладели оболочкой моей «коробки».
Я хочу сказать о вещах, которые реально меня «достали». Я работаю на организации, я работаю на них много лет, и я говорю вам об этом, потому что моя подружка считает, что я безработный. Она считает, что я занимаюсь только тем, что стою на сцене и болтаю, это нельзя считать работой. Но я говорю: «нет, моя радость, я консультант»! Вот в чём разница – я высказываю своё мнение, и за это мне платят.
Скажу так – мы, как хакеры, любим взламывать оболочку, и для нас нет больше в мире удовольствия, чем «заглотать раковину». Когда аналитики IDS пишут свои правила, вы видите, что они пишут их так, чтобы защититься от взлома оболочки. Но если поговорить с СIO о проблеме извлечения данных, он предложит вам подумать о двух вариантах. Предположим, у меня есть приложение, которое делает 100 «штук» в час. Что для меня важнее – обеспечить безопасность всех данных в этом приложении или безопасность оболочки «коробки»? Это серьёзный вопрос! О чём вы должны беспокоиться больше?
То, что у вас повреждена оболочка «коробки», не обязательно означает, что кто-то получил доступ к внутренней работе приложений. Да, это более чем вероятно, и если этого ещё не произошло, то оно может вскоре случиться. Но обратите внимание, что множество продуктов безопасности построены на предпосылках, что атакующий перемещается по вашей сети. Поэтому они обращают внимание на выполнение команд, на внедрение команд, и вы должны отметить, что это серьёзная вещь. Они обращаю внимание на тривиальные уязвимости, на очень простой межсайтовый скриптинг, на очень простые SQL-инъекции. Их не волнуют ни комплексные угрозы, ни зашифрованные сообщения, они не беспокоятся о вещах такого рода. Можно сказать, что все продукты безопасности ищут шум, они ищут «тявкалку», они хотят остановить то, что кусает вас за лодыжку. Вот что я понял, имея дело с продуктами безопасности. Вам не нужно покупать продукты безопасности, не нужно ехать на грузовике задним ходом. Вам нужны компетентные, квалифицированные люди, которые понимают технологию. Да, мой Бог, именно люди! Мы не хотим выбрасывать миллионы долларов на эти проблемы, но многие из вас работали в этой области, и знают, что как только ваш босс посмотрит рекламу, то бежит в магазин с криком: «мы должны заполучить эту вещь!». Но в действительности нам это не нужно, мы просто должны исправить бардак, который находится у нас за спиной. Вот что было предпосылкой для этого выступления.
Среда повышенной безопасности – это то, на что я потратил много времени, чтобы понять правила работы механизмов защиты. Как только вы разберётесь в механизмах защиты, обойти защиту не составит труда. Например, у меня есть веб-приложение, которое защищено собственным файрволом. Я копирую адрес панели настроек, вставляю его в адресную строку браузера и захожу в настройки и пробую применить межсайтовый скриптинг.
В результате я получаю сообщение файрвола об угрозе — меня заблокировали.
Я думаю, это плохо, вы согласны? Вы столкнулись с продуктом безопасности. Но что, если я попробую что-то вроде этого: введу в строку параметр Joe’+OR+1=’1
Как видите, это сработало. Поправьте меня, если я ошибаюсь, но мы стали свидетелями того, как внедрение SQL победило файрвол приложения. А теперь притворимся, что хотим начать компанию по внедрению мер безопасности, поэтому примерим на себя шляпу производителя ПО. Теперь мы воплощаем зло, потому что это чёрная шляпа. Я консультант, поэтому могу поступать так с производителями программ.
Мы хотим создать и развернуть новую систему обнаружения вмешательства, поэтому начнём компанию по обнаружению вмешательства. Snort, как продукт с открытым исходным кодом, содержит в себе сотни тысяч сигнатур угроз вмешательства. Мы должны поступать этично, поэтому мы не станем красть эти сигнатуры из других приложений и вставлять их в свою систему. Мы просто сядем и перепишем их все – эй, Боб, Тим, Джо, давайте сюда, проверните-ка по быстрому все эти 100 000 сигнатур!
Ещё нам нужно создать сканер уязвимостей. Вы знаете, что Nessus, программа для автоматического поиска уязвимостей, имеет добрых 80 тысяч сигнатур и скриптов, проверяющих уязвимость. Мы снова поступим этично и собственноручно перепишем их все в свою программу.
Люди спрашивают меня: «Джо, ты делаешь все эти тесты с помощью таких программ с отрытым кодом, как Mod Security, Snort и им подобные, ответь, насколько они похожи на продукты других производителей»? Я им отвечаю: «Вообще не похожи»! Потому что производители не воруют начинку из продуктов безопасности с открытым кодом, они садятся и пишут все эти правила собственноручно.
Если вы сможете сделать так, чтобы ваши собственные сигнатуры и атакующие строки работали без использования продуктов с открытым исходным кодом, для вас это отличный шанс. Если вы не в состоянии ничего противопоставить коммерческим продуктам, двигаясь в правильном направлении, вы должны найти концепцию, которая поможет вам стать известным в своей области.
Все знают, что я выпиваю. Позвольте мне показать вам, почему я выпиваю. Если вы когда-либо в своей жизни производили аудит исходного кода, вы обязательно запьёте, поверьте мне, после этого вы начнёте выпивать.
Итак, наш любимый язык – это C++. Давайте посмотрим на эту программу – Web Knight, это приложение-файрвол для веб-серверов. В нём есть исключения по умолчанию. Это интересно – если я разверну этот файрвол, то он не защитит меня от Outlook Web Access.
Прекрасно! Это потому, что многие производители ПО вытаскивают правила из одних приложений и вставляют их в свой продукт, не выполнив целую кучу полагающихся исследований. Поэтому, когда я разворачиваю приложение сетевого файрвола, я считаю, что всё, что касается веб-почты, сделано в нём неправильно! Потому что практически любая веб-почта нарушает безопасность по умолчанию. У вас есть веб-код, который выполняет системные команды и запросы LDAP или любого другого хранилища базы данных пользователей прямо в Интернете.
Скажите мне, на какой планете подобное может считаться безопасным? Просто подумайте об этом: вы открываете Outlook Web Access, нажимаете клавишb ctrl +K, ищете пользователей и все такое, вы управляете Active Directory прямо из интернета, вы выполняете команды системы на Linux, если вы используете «белкину почту», или Horde или что-то еще. Вы вытягиваете все эти evals и остальные типы небезопасной функциональности. Поэтому множество файрволов исключает их из списка угроз безопасности, попробуйте спросить об этом производителя вашего ПО.
Вернёмся к приложению Web Knight. Оно украло множество правил безопасности из сканера URL, который сканирует все эти диапазоны IP адресов. И что же, все эти диапазоны адресов исключены из моего продукта?
Кто-нибудь из вас хочет установить эти адреса в своей сети? Вы хотите, чтобы ваша сеть запускалась на этих адресах? Да, это потрясающе. Ну ладно, пролистаем эту программу вниз и посмотрим на другие вещи, которые не хочет делать этот файрвол.
Они называются «1999» и хотят, чтобы их веб-сервер оказался в прошлом! Кто-нибудь из вас помнит эту фигню: /scripts, /iishelp, msads? Возможно, пару человек с ностальгией вспомнят, как было весело взламывать такие вещи. «Помнишь, чувак, как давным-давно мы «убивали» серверы, это было круто!».
Теперь, если вы посмотрите на эти исключения, то увидите, что сможете выполнять все эти вещи – msads, printers,iisadmpwd – все эти штуки, которые сегодня никому не нужны. А как насчёт команд, которые вам не позволено исполнять?
Это arp, at, cacls, chkdsk, cipher, cmd, com. При их перечислении вас охватывают воспоминания о былых временах, «чувак, помнишь, как мы захватили тот сервер, помнишь те дни»?
Но вот что действительно интересно – кто-нибудь видит здесь WMIC или может быть, PowerShell? Представьте, что у вас есть новое приложение, которое функционирует за счёт выполнения скриптов в локальной системе, и это современные скрипты, потому что вы хотите запустить Windows Server 2008, а я собираюсь совершить великое дело, защитив его правилами, предназначенными для Windows 2000. Так что в следующий раз, когда поставщик приходит к вам со своим веб-приложением, спросите его: «эй, мужик, а ты предусмотрел такие вещи, как bits admin, или выполнение команд powershell, проверил ли ты все остальные вещи, потому что мы собираемся обновиться и использовать новую версию DotNET»? А ведь все эти вещи должны присутствовать в продукте безопасности по умолчанию!
Следующее, о чем я хочу с вами поговорить – это логические ошибки. Давайте перейдём по адресу 192.168.2.6. Это примерно такое же приложение, как предыдущее.
Вы можете заметить кое-что интересное, если прокрутите страницу вниз и нажмёте на ссылку Contact Us.
Если вы посмотрите на исходный код вкладки «Свяжитесь с нами», это один из способов пентестинга, то, чем я постоянно занимаюсь, то заметите вот такую строку.
Подумайте об этом! Слышу, что многие при виде этого произнесли: «Вау»! Однажды я проводил тестирование на проникновение, скажем, для одного банка-миллиардера, и заметил там нечто подобное. Итак, нам не нужны ни SQL-инъекции, ни межсайтовый скриптинг – у нас есть основное, вот эта адресная строка.
Итак, без преувеличения – банк сказал нам, что у них были оба – и сетевой специалист, и веб-инспектор, и они не высказали никаких замечаний. То есть они посчитали нормальным, что через браузер можно открыть и прочитать текстовый файл.
То есть вы можете просто прочитать файл прямо из файловой системы. Глава их службы безопасности сказал мне: «да, один из сканеров обнаружил эту уязвимость, но посчитал её незначительной». На что я ответил, хорошо, дайте мне минуту. Я набрал в адресной строке filename=../../../../boot.ini и смог прочитать загрузочный файл файловой системы!
На это мне сказали: «нет-нет-нет, это же не критические файлы»! Я ответил – но ведь это же Server 2008? Они сказали – да, это он. Я говорю – но ведь этот сервер имеет файл конфигурации, расположенный в корневой директории сервера, правильно? «Правильно», отвечают они. «Отлично», — говорю я, — «а что, если атакующий проделает вот это», и набираю в адресной строке filename=web.config. Они говорят – ну и что, вы же на мониторе ничего не видите?
Я говорю – а что, если я щелкну по монитору правой кнопкой мыши и выберу параметр «Показать код страницы»? И что я тут обнаружу? «Ничего критического»? Я увижу пароль администратора сервера!
И вы говорите, что здесь нет никакой проблемы?
Но моя любимая часть – это следующее. Вы не позволяете мне исполнять команды в «коробке», зато я могу украсть пароль администратора веб-сервера и базу данных, просмотреть всю базу данных, выдернуть оттуда все материалы о базе данных и отказах системы и уйти со всем этим. Это тот случай, когда плохой парень говорит: «эй, мужик, сегодня великий день»!
Не позволяйте продуктам безопасности стать вашим заболеванием! Не позволяйте продуктам безопасности заставить вас болеть! Найдите каких-нибудь «ботанов», подарите им все эти памятные цацки из Star Trek, заинтересуйте их, поощрите их, чтобы они остались с вами, потому что эти занудные вонючки, не принимающие ежедневно душ, именно те, кто заставляет ваши сети работать как следует! Это те люди, которые помогут вашим продуктам безопасности работать как следует.
Скажите, кто из вас в состоянии находиться долго в одной комнате с человеком, который постоянно говорит: «о, мне надо срочно напечатать этот скрипт!», и который занят этим всё время? Но вам нужны такие люди, которые делают работоспособными ваши продукты безопасности.
Повторю ещё раз – продукты безопасности тупые, потому что огни постоянно ошибаются, постоянно совершают отстойные вещи, они просто не обеспечивают безопасности. Я ещё ни разу не видел хорошего продукта безопасности, который бы не требовал человека с отвёрткой, способного подкрутить где нужно, чтобы всё заработало более-менее нормально. Это просто огромный список правил, говорящих, что это плохо, и всё!
Поэтому, ребята, я хочу, чтобы вы обратили внимание на образование, на такие вещи, как безопасность, политехническое обучение, ведь существует множество бесплатных онлайн-курсов, посвященных проблемам безопасности. Изучите Python, изучите сборки Assembly, изучите тестирование веб-приложений.
Вот что действительно поможет вам защитить свою сеть. Умные люди защищают сети, продукты сети не защищают! Вернитесь на работу и скажите своему боссу, что вам нужно больше бюджета для большего количества умных людей, я знаю, что сейчас кризис, но всё равно скажите ему – нам нужно больше средств для людей, для их обучения. Если мы покупаем продукт, но не покупаем курс по обращению с ним, потому что это дорого, то зачем мы вообще его покупаем, если не собираемся научить людей с ним обращаться?
Я работал на многих производителей продуктов безопасности, практически всю жизнь провёл, занимаясь внедрением этих продуктов, и меня уже тошнит от всех этих контролей доступа к сети и прочих вещей, потому что я устанавливал и запускал все эти отстойные продукты. Как-то я пришёл к клиенту, они хотели внедрить стандарт 802.1x для протокола EAP, поэтому у них были MAC адреса и вторичные адреса для каждого порта. Я пришёл, увидел, что это плохо, развернулся и стал нажимать кнопки на принтере. Вы знаете, принтер может распечатать тестовую страницу сетевого оборудования со всеми MAC адресами и IP адресами. Но оказалось, что принтер не поддерживает стандарт 802.1x, так что он должен быть исключен.
Тогда я отключил принтер от сети и изменил MAC адрес своего ноутбука на MAC адрес принтера и подключил свой ноутбук, таким образом обойдя это дорогое решение MAC, подумайте об этом! Так что же хорошего это решение MAC может для меня сделать, если человек может просто выдать любое оборудование за принтер или за VoIP телефон?
Так что на сегодня пентестинг для меня состоит в том, что я провожу время, пытаясь понять продукт безопасности, который купил мой клиент, и разобраться в нём. Сейчас каждый банк, в котором я провожу испытание на проникновение, имеет все эти HIPS, NIPS, LAUGTHS, MACS и целую кучу других аббревиатур, которые представляют собой сплошной отстой. Но я пытаюсь разобраться, что эти продукты пытаются сделать и как они пытаются это сделать. Затем, как только я выясняю, что за методологию и логику они используют, чтобы обеспечить защиту, обойти её становится совсем не трудно.
Мой любимый продукт, который я вам оставлю, называется MS 1103. Это эксплойт на основе браузера, который «распыляет» HIPS, Host Intrusion Prevention Signature, или сигнатуры предотвращения вмешательства в хост. Фактически он предназначается для обхода сигнатур HIPS. Я не хочу показывать, как он работает, потому что мне жалко времени на демонстрацию, но он прекрасно позволяет обойти эту защиту, и я хочу, чтобы вы приняли его себе на вооружение.
ОК, ребята, я уже ухожу.
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от $19 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле в дата-центре Equinix Tier IV в Амстердаме? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Сейчас мы попробуем другой способ внедрения SQL. Посмотрим, будет ли база данных продолжать отбрасывать сообщения об ошибках. Этот метод называется «ожидание задержки», а сама задержка записывается в таком виде: waitfor delay 00:00:01’. Я копирую это из нашего файла и вставляю в адресную строку браузера.
Всё это называется «слепое внедрение SQL на временной основе». Всё, что мы здесь делаем – это говорим: «ждать задержки в течение 10 секунд». Если вы заметили, слева вверху у нас имеется надпись «connecting...», то есть что делает наша страница? Она ждёт соединения, и через 10 секунд у вас на мониторе появляется правильная страница. С помощью этого приёма мы обращаемся к базе данных, чтобы она разрешила нам задать ей ещё несколько вопросов, например, если пользователь — Джо, то нужно ждать 10 секунд. Это понятно? Если пользователь – dbo, ждать тоже 10 секунд. Это и есть метод слепого внедрения SQL.
Я думаю, что разработчики при создании патчей не устраняют эту уязвимость. Это SQL – инъекция, но наша программа IDS её тоже не видит, как и предыдущие способы внедрения SQL.
Попробуем что-то более интересное. Скопируем эту строку с IP адресом и вставим её в браузер. Сработало! Полоска TCP в нашей программе покраснела, программа отметила 2 угрозы безопасности.
Отлично, смотрим дальше, что произошло. У нас имеется одна угроза командной оболочке XP, и ещё одна угроза – попытка внедрения SQL. Итого отмечено две попытки атаковать веб-приложение.
Хорошо, а теперь помогите мне с логикой. У нас есть пакет данных о вмешательстве, в котором IDS говорит, что отреагировала на разные вмешательства в командную оболочку XP.
Если мы опустимся вниз, то увидим таблицу HEX-кодов, справа от которой имеется флаг с сообщением xp_cmdshell + &27ping, и очевидно, это плохо.
Посмотрим сюда, что же случилось. Что сделал SQL сервер?
SQL сервер сказал: «ты можешь иметь пароль от моей базы данных, можешь получить все записи моей базы данных, но, чувак, я совсем не хочу, чтобы ты запускал у меня свои команды, это совсем не круто»!
Что нам нужно сделать – это добиться, чтобы даже если IDS сообщает об угрозе командной оболочке XP, эта угроза бы игнорировалась. Если вы используете SQL Server 2005 или SQL Server 2008, то при обнаружении попытки внедрения SQL командная оболочка операционной системы будет заблокирована, что не позволит вам продолжать своё дело. Это очень досадно. Так что же нам делать? Нужно попробовать попросить сервер очень ласково. Нужно сказать так: «пожалуйста, папочка, ну можно мне эти печенья»? Вот что я делаю, серьёзно, я прошу сервер очень вежливо! Я прошу показать дополнительные опции, прошу реконфигурацию и прошу поменять настройки командной оболочки XP, чтобы сделать командную оболочку доступной, потому что мне это нужно!
Мы видим, что IDS это обнаружила – видите, здесь отмечено уже 3 угрозы.
Вы только посмотрите сюда – мы взорвали логи безопасности! Похоже на рождественскую ёлку, столько здесь всего навешено! Целых 27 угроз безопасности! Ура, ребята, мы поймали этого хакера, мы его достали!
Нас не беспокоит, что он украдёт наши данные, но если он сможет выполнять системные команды в нашей «коробке» – это уже серьёзно! Вы можете cрисовать маршрут Telnet, FTP, можете завладеть моими данными, это круто, но я об этом не беспокоюсь, я только не хочу, чтобы вы завладели оболочкой моей «коробки».
Я хочу сказать о вещах, которые реально меня «достали». Я работаю на организации, я работаю на них много лет, и я говорю вам об этом, потому что моя подружка считает, что я безработный. Она считает, что я занимаюсь только тем, что стою на сцене и болтаю, это нельзя считать работой. Но я говорю: «нет, моя радость, я консультант»! Вот в чём разница – я высказываю своё мнение, и за это мне платят.
Скажу так – мы, как хакеры, любим взламывать оболочку, и для нас нет больше в мире удовольствия, чем «заглотать раковину». Когда аналитики IDS пишут свои правила, вы видите, что они пишут их так, чтобы защититься от взлома оболочки. Но если поговорить с СIO о проблеме извлечения данных, он предложит вам подумать о двух вариантах. Предположим, у меня есть приложение, которое делает 100 «штук» в час. Что для меня важнее – обеспечить безопасность всех данных в этом приложении или безопасность оболочки «коробки»? Это серьёзный вопрос! О чём вы должны беспокоиться больше?
То, что у вас повреждена оболочка «коробки», не обязательно означает, что кто-то получил доступ к внутренней работе приложений. Да, это более чем вероятно, и если этого ещё не произошло, то оно может вскоре случиться. Но обратите внимание, что множество продуктов безопасности построены на предпосылках, что атакующий перемещается по вашей сети. Поэтому они обращают внимание на выполнение команд, на внедрение команд, и вы должны отметить, что это серьёзная вещь. Они обращаю внимание на тривиальные уязвимости, на очень простой межсайтовый скриптинг, на очень простые SQL-инъекции. Их не волнуют ни комплексные угрозы, ни зашифрованные сообщения, они не беспокоятся о вещах такого рода. Можно сказать, что все продукты безопасности ищут шум, они ищут «тявкалку», они хотят остановить то, что кусает вас за лодыжку. Вот что я понял, имея дело с продуктами безопасности. Вам не нужно покупать продукты безопасности, не нужно ехать на грузовике задним ходом. Вам нужны компетентные, квалифицированные люди, которые понимают технологию. Да, мой Бог, именно люди! Мы не хотим выбрасывать миллионы долларов на эти проблемы, но многие из вас работали в этой области, и знают, что как только ваш босс посмотрит рекламу, то бежит в магазин с криком: «мы должны заполучить эту вещь!». Но в действительности нам это не нужно, мы просто должны исправить бардак, который находится у нас за спиной. Вот что было предпосылкой для этого выступления.
Среда повышенной безопасности – это то, на что я потратил много времени, чтобы понять правила работы механизмов защиты. Как только вы разберётесь в механизмах защиты, обойти защиту не составит труда. Например, у меня есть веб-приложение, которое защищено собственным файрволом. Я копирую адрес панели настроек, вставляю его в адресную строку браузера и захожу в настройки и пробую применить межсайтовый скриптинг.
В результате я получаю сообщение файрвола об угрозе — меня заблокировали.
Я думаю, это плохо, вы согласны? Вы столкнулись с продуктом безопасности. Но что, если я попробую что-то вроде этого: введу в строку параметр Joe’+OR+1=’1
Как видите, это сработало. Поправьте меня, если я ошибаюсь, но мы стали свидетелями того, как внедрение SQL победило файрвол приложения. А теперь притворимся, что хотим начать компанию по внедрению мер безопасности, поэтому примерим на себя шляпу производителя ПО. Теперь мы воплощаем зло, потому что это чёрная шляпа. Я консультант, поэтому могу поступать так с производителями программ.
Мы хотим создать и развернуть новую систему обнаружения вмешательства, поэтому начнём компанию по обнаружению вмешательства. Snort, как продукт с открытым исходным кодом, содержит в себе сотни тысяч сигнатур угроз вмешательства. Мы должны поступать этично, поэтому мы не станем красть эти сигнатуры из других приложений и вставлять их в свою систему. Мы просто сядем и перепишем их все – эй, Боб, Тим, Джо, давайте сюда, проверните-ка по быстрому все эти 100 000 сигнатур!
Ещё нам нужно создать сканер уязвимостей. Вы знаете, что Nessus, программа для автоматического поиска уязвимостей, имеет добрых 80 тысяч сигнатур и скриптов, проверяющих уязвимость. Мы снова поступим этично и собственноручно перепишем их все в свою программу.
Люди спрашивают меня: «Джо, ты делаешь все эти тесты с помощью таких программ с отрытым кодом, как Mod Security, Snort и им подобные, ответь, насколько они похожи на продукты других производителей»? Я им отвечаю: «Вообще не похожи»! Потому что производители не воруют начинку из продуктов безопасности с открытым кодом, они садятся и пишут все эти правила собственноручно.
Если вы сможете сделать так, чтобы ваши собственные сигнатуры и атакующие строки работали без использования продуктов с открытым исходным кодом, для вас это отличный шанс. Если вы не в состоянии ничего противопоставить коммерческим продуктам, двигаясь в правильном направлении, вы должны найти концепцию, которая поможет вам стать известным в своей области.
Все знают, что я выпиваю. Позвольте мне показать вам, почему я выпиваю. Если вы когда-либо в своей жизни производили аудит исходного кода, вы обязательно запьёте, поверьте мне, после этого вы начнёте выпивать.
Итак, наш любимый язык – это C++. Давайте посмотрим на эту программу – Web Knight, это приложение-файрвол для веб-серверов. В нём есть исключения по умолчанию. Это интересно – если я разверну этот файрвол, то он не защитит меня от Outlook Web Access.
Прекрасно! Это потому, что многие производители ПО вытаскивают правила из одних приложений и вставляют их в свой продукт, не выполнив целую кучу полагающихся исследований. Поэтому, когда я разворачиваю приложение сетевого файрвола, я считаю, что всё, что касается веб-почты, сделано в нём неправильно! Потому что практически любая веб-почта нарушает безопасность по умолчанию. У вас есть веб-код, который выполняет системные команды и запросы LDAP или любого другого хранилища базы данных пользователей прямо в Интернете.
Скажите мне, на какой планете подобное может считаться безопасным? Просто подумайте об этом: вы открываете Outlook Web Access, нажимаете клавишb ctrl +K, ищете пользователей и все такое, вы управляете Active Directory прямо из интернета, вы выполняете команды системы на Linux, если вы используете «белкину почту», или Horde или что-то еще. Вы вытягиваете все эти evals и остальные типы небезопасной функциональности. Поэтому множество файрволов исключает их из списка угроз безопасности, попробуйте спросить об этом производителя вашего ПО.
Вернёмся к приложению Web Knight. Оно украло множество правил безопасности из сканера URL, который сканирует все эти диапазоны IP адресов. И что же, все эти диапазоны адресов исключены из моего продукта?
Кто-нибудь из вас хочет установить эти адреса в своей сети? Вы хотите, чтобы ваша сеть запускалась на этих адресах? Да, это потрясающе. Ну ладно, пролистаем эту программу вниз и посмотрим на другие вещи, которые не хочет делать этот файрвол.
Они называются «1999» и хотят, чтобы их веб-сервер оказался в прошлом! Кто-нибудь из вас помнит эту фигню: /scripts, /iishelp, msads? Возможно, пару человек с ностальгией вспомнят, как было весело взламывать такие вещи. «Помнишь, чувак, как давным-давно мы «убивали» серверы, это было круто!».
Теперь, если вы посмотрите на эти исключения, то увидите, что сможете выполнять все эти вещи – msads, printers,iisadmpwd – все эти штуки, которые сегодня никому не нужны. А как насчёт команд, которые вам не позволено исполнять?
Это arp, at, cacls, chkdsk, cipher, cmd, com. При их перечислении вас охватывают воспоминания о былых временах, «чувак, помнишь, как мы захватили тот сервер, помнишь те дни»?
Но вот что действительно интересно – кто-нибудь видит здесь WMIC или может быть, PowerShell? Представьте, что у вас есть новое приложение, которое функционирует за счёт выполнения скриптов в локальной системе, и это современные скрипты, потому что вы хотите запустить Windows Server 2008, а я собираюсь совершить великое дело, защитив его правилами, предназначенными для Windows 2000. Так что в следующий раз, когда поставщик приходит к вам со своим веб-приложением, спросите его: «эй, мужик, а ты предусмотрел такие вещи, как bits admin, или выполнение команд powershell, проверил ли ты все остальные вещи, потому что мы собираемся обновиться и использовать новую версию DotNET»? А ведь все эти вещи должны присутствовать в продукте безопасности по умолчанию!
Следующее, о чем я хочу с вами поговорить – это логические ошибки. Давайте перейдём по адресу 192.168.2.6. Это примерно такое же приложение, как предыдущее.
Вы можете заметить кое-что интересное, если прокрутите страницу вниз и нажмёте на ссылку Contact Us.
Если вы посмотрите на исходный код вкладки «Свяжитесь с нами», это один из способов пентестинга, то, чем я постоянно занимаюсь, то заметите вот такую строку.
Подумайте об этом! Слышу, что многие при виде этого произнесли: «Вау»! Однажды я проводил тестирование на проникновение, скажем, для одного банка-миллиардера, и заметил там нечто подобное. Итак, нам не нужны ни SQL-инъекции, ни межсайтовый скриптинг – у нас есть основное, вот эта адресная строка.
Итак, без преувеличения – банк сказал нам, что у них были оба – и сетевой специалист, и веб-инспектор, и они не высказали никаких замечаний. То есть они посчитали нормальным, что через браузер можно открыть и прочитать текстовый файл.
То есть вы можете просто прочитать файл прямо из файловой системы. Глава их службы безопасности сказал мне: «да, один из сканеров обнаружил эту уязвимость, но посчитал её незначительной». На что я ответил, хорошо, дайте мне минуту. Я набрал в адресной строке filename=../../../../boot.ini и смог прочитать загрузочный файл файловой системы!
На это мне сказали: «нет-нет-нет, это же не критические файлы»! Я ответил – но ведь это же Server 2008? Они сказали – да, это он. Я говорю – но ведь этот сервер имеет файл конфигурации, расположенный в корневой директории сервера, правильно? «Правильно», отвечают они. «Отлично», — говорю я, — «а что, если атакующий проделает вот это», и набираю в адресной строке filename=web.config. Они говорят – ну и что, вы же на мониторе ничего не видите?
Я говорю – а что, если я щелкну по монитору правой кнопкой мыши и выберу параметр «Показать код страницы»? И что я тут обнаружу? «Ничего критического»? Я увижу пароль администратора сервера!
И вы говорите, что здесь нет никакой проблемы?
Но моя любимая часть – это следующее. Вы не позволяете мне исполнять команды в «коробке», зато я могу украсть пароль администратора веб-сервера и базу данных, просмотреть всю базу данных, выдернуть оттуда все материалы о базе данных и отказах системы и уйти со всем этим. Это тот случай, когда плохой парень говорит: «эй, мужик, сегодня великий день»!
Не позволяйте продуктам безопасности стать вашим заболеванием! Не позволяйте продуктам безопасности заставить вас болеть! Найдите каких-нибудь «ботанов», подарите им все эти памятные цацки из Star Trek, заинтересуйте их, поощрите их, чтобы они остались с вами, потому что эти занудные вонючки, не принимающие ежедневно душ, именно те, кто заставляет ваши сети работать как следует! Это те люди, которые помогут вашим продуктам безопасности работать как следует.
Скажите, кто из вас в состоянии находиться долго в одной комнате с человеком, который постоянно говорит: «о, мне надо срочно напечатать этот скрипт!», и который занят этим всё время? Но вам нужны такие люди, которые делают работоспособными ваши продукты безопасности.
Повторю ещё раз – продукты безопасности тупые, потому что огни постоянно ошибаются, постоянно совершают отстойные вещи, они просто не обеспечивают безопасности. Я ещё ни разу не видел хорошего продукта безопасности, который бы не требовал человека с отвёрткой, способного подкрутить где нужно, чтобы всё заработало более-менее нормально. Это просто огромный список правил, говорящих, что это плохо, и всё!
Поэтому, ребята, я хочу, чтобы вы обратили внимание на образование, на такие вещи, как безопасность, политехническое обучение, ведь существует множество бесплатных онлайн-курсов, посвященных проблемам безопасности. Изучите Python, изучите сборки Assembly, изучите тестирование веб-приложений.
Вот что действительно поможет вам защитить свою сеть. Умные люди защищают сети, продукты сети не защищают! Вернитесь на работу и скажите своему боссу, что вам нужно больше бюджета для большего количества умных людей, я знаю, что сейчас кризис, но всё равно скажите ему – нам нужно больше средств для людей, для их обучения. Если мы покупаем продукт, но не покупаем курс по обращению с ним, потому что это дорого, то зачем мы вообще его покупаем, если не собираемся научить людей с ним обращаться?
Я работал на многих производителей продуктов безопасности, практически всю жизнь провёл, занимаясь внедрением этих продуктов, и меня уже тошнит от всех этих контролей доступа к сети и прочих вещей, потому что я устанавливал и запускал все эти отстойные продукты. Как-то я пришёл к клиенту, они хотели внедрить стандарт 802.1x для протокола EAP, поэтому у них были MAC адреса и вторичные адреса для каждого порта. Я пришёл, увидел, что это плохо, развернулся и стал нажимать кнопки на принтере. Вы знаете, принтер может распечатать тестовую страницу сетевого оборудования со всеми MAC адресами и IP адресами. Но оказалось, что принтер не поддерживает стандарт 802.1x, так что он должен быть исключен.
Тогда я отключил принтер от сети и изменил MAC адрес своего ноутбука на MAC адрес принтера и подключил свой ноутбук, таким образом обойдя это дорогое решение MAC, подумайте об этом! Так что же хорошего это решение MAC может для меня сделать, если человек может просто выдать любое оборудование за принтер или за VoIP телефон?
Так что на сегодня пентестинг для меня состоит в том, что я провожу время, пытаясь понять продукт безопасности, который купил мой клиент, и разобраться в нём. Сейчас каждый банк, в котором я провожу испытание на проникновение, имеет все эти HIPS, NIPS, LAUGTHS, MACS и целую кучу других аббревиатур, которые представляют собой сплошной отстой. Но я пытаюсь разобраться, что эти продукты пытаются сделать и как они пытаются это сделать. Затем, как только я выясняю, что за методологию и логику они используют, чтобы обеспечить защиту, обойти её становится совсем не трудно.
Мой любимый продукт, который я вам оставлю, называется MS 1103. Это эксплойт на основе браузера, который «распыляет» HIPS, Host Intrusion Prevention Signature, или сигнатуры предотвращения вмешательства в хост. Фактически он предназначается для обхода сигнатур HIPS. Я не хочу показывать, как он работает, потому что мне жалко времени на демонстрацию, но он прекрасно позволяет обойти эту защиту, и я хочу, чтобы вы приняли его себе на вооружение.
ОК, ребята, я уже ухожу.
Немного рекламы :)
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от $19 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле в дата-центре Equinix Tier IV в Амстердаме? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?