Saturday, July 30, 2011

Yandex планирует оповещать администраторов сайтов об утечках данных

Любопытное заявление... а еще Яндекс может всех сканировать каким-нибудь Web-сканером безопасности и сообщать им всем об обнаруженных уязвимостях (только аккуратно, чтобы это не сильно отклонялось от работы кравлера-индексатора). В двух режимах:

  • бесплатно
  • за сервис

Также Яндекс позднее сможет войти на рынок решений DLP, если его распознавание ПДн будет успешным (а оно будет успешным, RUNET — тестовая площадка!).

Я только что-то не понимаю, как это будет трактоваться с т.з. ФЗ-152. Может Яндексу сразу в Роскомнадзор сообщать: "...нарушен закон об обеспечивании безопасности ПДн, данные скомпрометированы, вот доказательства..." или Яндекс, наоборот, будет не сообщать регуляторам, а тайно помогать операторам ПДн обеспечивать их безопасность. Первое поведение — не этично по отношению к операторам ПДн, второе — по отношению к субъектам ПДн. Что же делать ??


О государственной безопасности

При таком раскладе есть два варианта развития событий.
1. высокоморальный человек уйдет работать "на рынок".
2. свинья (или человек, которого просто не воспитывали), назависимо от интеллекта (хотя, хочется верить, что уровень интеллекта хотя бы как-то коррелирует с пониманием об этике), будет размножать коррупцию.

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

В общем, мы имеем то, что имеем :-((

Wednesday, July 27, 2011

ГОСТ 28147-89 НЕ взломан, пока...

Не писал бы, но, видимо, надо. После ряда публикаций в весьма авторитетных источниках даже среди своего небольшого отдела стал наблюдать какую-то истерию, хотя, на мой взгляд ничего не изменилось. Попробую изложить факты
1. Я не видел в открытом доступе ни одного нормального доказательства утверждений Куртуа. Исследование Таканори Исоби, доступно только в виде презентации на FSE 2011 из которой мало что понятно. Попытки найти что-нибудь об "Algebraic Complexity Reduction" (ссылка [12] в статье Куртуа) закончились неуспешно (если у кого есть что, пожалуйста, комментарьте!), за исключением вот этого (собственно, из самой статьи):
"The main idea is as follows: In order to reduce the attack complexity, we
exploit the self-similarity of the cipher and add some well-chosen assumptions
which produce interesting and sometimes quite non-trivial consequences due to
the high-level structural properties of the cipher, which makes cryptanalysis
problems smaller, simpler and easier to solve." В целом, стандартный подход для любого криптоанализа, только, как следствие, подобный метод будет работать только при строго определенных условиях (на ключах с определенными зависимостями, или на специальных открытых текстах или и то и другое, или "специальные" S-блоки и т.п.), что крайне ограниченно может применяться на практике (но, тем не менее, полезно для академической науки).
2. Сама статья Куртуа больше похожа на научно-популярный труд типа Прикладная криптография, (не упущу заметить, что книжка Шнаера - очень хорошая и я всем рекомендую ее почитать), где излагается общая структура ГОСТа, его история и прочее на уровне Википидии. SecLab предложил практически дословный ее перевод. Из нее ничего не следует, кроме голословных утверждений.
3. Размер блока ГОСТа - 64 бита. Если мы знаем 2^64 пар открытый текст - шифртекст - это и есть все, что нам нужно знать :-) Это - полный перебор, нам ключ не нужен, так как у нас есть все возможные открытые тексты и соответствующие (биективно!) им шифртексты.
4. На практике атаку KPA, накопив 2^64 (да и 2^32, как требует Исоби) пар открытый текст - шифртекст, невозможно, так как сессионный ключ меняется ЗНАЧИТЕЛЬНО чаще.
5. Все показанные успешные компрометации ГОСТа крутятся около 8-раундной "модификации", тогда как в оригинальной реализации из 32 (!). То, что ГОСТ обладает плохими диффузионными свойствами и это компенсируется количество раундов - давно известно, здесь как раз это и эксплуатируется.
6. Отдельно про презентацию Исоби хочется отметить, что даже когда вы-таки сподобились и как-то насобирали 2^32 пар шифртекстов и открытых текстов (C/P), сложность атаки остается 2^225 (См. слайд "Result" его презентации). У меня проблема, я не могу с ходу понять что мне, как взломщику, проще: выполнить обычный перебор из 1 пары C/P и сложностью 2^256 или наловить 2^32 C/P, провести с этим какие-то шаманства "Reflection Meet-In-The-Middle" (R-MITM) и отбрутофорсить выделенные этим шаманством "Surviving Key Space", причем общая сложность будет 2^225, что, в общем-то не сильно отличается от 2^256.... Думайте сами.

Итого: Тяжело оценить вклад Куртуа/Исоби в практику компрометации ГОСТа (в основном, очень мало информации - может, в этом и секрет, что секрета просто нет :-)) => не стоит делать поспешных выводов и, тем более, тратить нервную систему.

Friday, July 22, 2011

nmap подумает за нас

Достаточно давно в сканере портов nmap ввели функционал скриптов, которые выполняют высокоуровневые проверки в процессе сканирования портов. Многие не используют данную замечательную возможность, так как считают, что при этом нужно знать названия скриптов.
В случае готовности отступить на шаг назад и не требовать от nmap'а детального анализа, можно выполнять сканирование в режиме "проверить все". При этом оставаясь script-kiddie мы чувствуем себя like hacker.
Если для Вас не важно, как будут чувствовать себя сервисы в аудируемом сегменте сканируйте следующей командой:
nmap -A -PN --script=all --reason
Если же Вам жаль проверяемого и Вы хотите исключить потенциально опасные скрипты:
nmap -A -PN --script=default --reason
или
nmap -A -PN -sC --reason
Есть еще варианты, но стоит ли засорять ими мозг? Разом ударить из всех орудий - что может быть проще и громче?!

Thursday, June 23, 2011

Антивирус мертв?

Ну и кто после подобного опровергнет утверждение: "Антивирус мертв"?!
В любом случае, наверное, следует согласиться с Шнаером что он лучше, чем его отсутствие.

Защищаться от пентестера?

Идеологически неправильная статья! Не пойму, зачем мне мешать пентестеру, тянуть его время и пр., - он же на меня работает!
Понятно, что на его месте может быть реальный злоумышленник, и пока он сражается с моими honeypot-ами, я его обнаружу IDS-ами, но так и надо же писать. А то: "мы будем мешать пентестеру", мы тут не в кошки-мышки играем!

Sunday, May 8, 2011

Нужен ли Вам пентест после внедрения?

Совсем немного времени прошло с момента публикации о доверии пентестеру. В двух словах, тогда я пытался показать, что провести оценку качества работы пентестера крайне сложно, а, следовательно, весьма затруднительно судить об эффективности (как “effectiveness”, так и “efficiency”) такой работы, что, в конечном итоге, сводит к нулю возможность проведения всяких cost/benefit анализов. Сейчас я попытаюсь порассуждать вообще на тему необходимости проведения аудита в режиме теста на проникновение в сравнении с т.н. Анализом защищенности.

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

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

Заказывая аудит, я не склонен играть в «кошки-мышки». Я заинтересован, чтобы аудитор отработал максимально эффективно, для чего логично предоставить ему максимально возможное количество информации о проверяемой системе. Аудитор работает на меня, мне выгоден сценарий whitebox-тестирования. Да и в реальной жизни надежнее полагать, что злоумышленнику известно больше, чем мы ожидаем.

Теперь немного об уязвимостях. Крайне крупно их можно подразделить на:

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

Классическая ситуация на коммерческом предприятии, в задачи которого не входит финансирование исследований в области информационной безопасности, состоит в том, что:

  • Процесс установки обновлений используемых программных продуктов отстроен: обновления ставятся своевременно, в соответствии с рекомендациями производителей ПО.
  • Новые системы представляют собой, как правило, «коробочные» решения, разработанные известными производителями ПО, внедренные внешними подрядчиками или своими силами.

В целом, я работаю на коммерческом предприятии, и ситуация у меня ровно такая же. Производитель коробочного решения мне гарантирует, что он сделает все возможное для того, чтобы его ПО было безопасным. Для этого у него есть отработанная процедура выпуска обновлений безопасности. Причем, обычно, эксплоит «в природе» появляется позже, чем производитель моего ПО публикует advisory и выпускает заплатку. Мои доблестные ИТшники имеют настолько хорошо отлаженный процесс установки обновлений, что на момент выхода эксплоита, нужный патч уже стоит. Ну, а если эксплоит появился раньше, чем производитель моего ПО смог обнаружить у себя уязвимость (zero-day), то и здесь мировое сообщество, производители решений безопасности (например, IPS и AV, оборона должна быть эшелонированной!), да и сам производитель ПО, меня не оставят – предложат обходные/временные варианты, которые смогут значительно снизить вероятность эксплуатирования zero-day-я, пока разработчик ПО не исправит проблему. В общем, вероятность быть компрометированным из-за уязвимости «коробочного» ПО крайне мала, при условии, что я выполняю все рекомендации его производителя (а это надо делать!). Более того, на процесс повышения безопасности коробочного ПО крайне сложно влиять: я не защищусь от уязвимости никак, пока производитель не выпустит advisory. Так стоит ли мне искать такие уязвимости? Очевидно, нет. Как выйдет патч, он будет установлен, независимо от того, чьими ресурсами было произведено исследование узявимости. Итого, уязвимости непосредственно самого ПО мне искать нет необходимости.

Другое дело – уязвимости конфигурации. Есть масса причин почему вероятность их возникновения достаточно высока – от недостаточной квалификации подрядчика или «своих сил», до действительно высокой сложности выполняемых настроек. Но, в отличие от «дыр в ПО» на такие уязвимости можно самостоятельно влиять. Анализ защищенности мне здесь поможет. Кропотливо, внимательнейшим образом, провести полный анализ настроек на предмет наличия уязвимостей конфигурации. Выявленные проблемы соответствующим образом исправить. Очевидно, это сразу приведет к повышению безопасности моей системы.

Теперь поговорим об эффективности видов аудита.

Тест на проникновение способен выявить оба типа уязвимостей. Но его effectiveness достаточно низкая, поскольку:

  • Гарантировано не все уязвимости будут им выявлены, поскольку классический сценарий ближе к blackbox, тогда как whitebox для поиска уязвимостей конфигураци, очевидно, продуктивнее.
  • Уязвимости самого ПО вообще нет смысла искать, так как их обнаружение не ведет к повышению безопасности ПО, пока производитель не выпустит advisory.

Не велика и его efficiency, поскольку, мне не надо показывать «фокус» – не надо демонстрировать, что уязвимость может быть эксплуатирована, я верю написанному в advisory и так. Был показательный случай. У меня работали аудиторы, делали пентест. Отсканировали nmap-ом с флажком –v (показывать версии), узнали, что стоит уязвимый sendmail, в котором можно через переполнение буфера и получить shell пользователя root. В целом, мне этой информации достаточно: sendmail надо либо остановить (в том случае надо было делать именно так, так как он не использовался), либо обновить на неуязвимую версию. Но мы играем в пентест, а значит, мы должны довести уязвимость до эксплуатирования. Аудиторы обшарили весь интернет, но так и не нашил эксплоит для моей операционной системы (HP-UX), есть под SUN Solaris, под RedHat Linux, а под HP-UX на PA-процессоре – нет. Что ж, как я говорил, я заинтересован помогать аудиторам, ­- я нашел им такое же железо с такой же ОС и тем же Sendmail-ом. У них в команде был программист, который убил несколько дней на упражнения с gdb, но так и не написал эксплоит… И это эффективная трата ресурсов?

Анализ защищенности не способен выявлять уязвимости самого ПО. Да это и не надо! Зато уязвимости конфигурации по сценарию whitebox им будут выявлены очень даже хорошо. Вера в effectiveness такого аудита у меня значительно выше: скорее всего большая часть «косяков» будет успешно найдена и исправлена. С efficiency тоже все понятно – как минимум, не надо тратить время на эксплуатирование уязвимости, особенно, на написание эксплоитов.

Итого:

  • Если в проекте вы не разрабатываете ПО, а используете «коробочные» решения и настраиваете их – вам не нужен пентест, тщательный Анализ защищенности – ваш выбор.
  • Если вы разрабатываете ПО и есть возможность провести анализ кода – тщательный Анализ защищенности и code review – ваш выбор.
  • Если вы разрабатываете ПО и исходников нет, - тут только пентест, может, что-то выявится. Но настройки, как и прежде, лучше посмотрит Анализ защищенности.

Эффективность Анализа защищенности косвенно подтверждается рынком, - как правило, он значительно дороже, чем пентест.

PS: Перечитал написанное. Может сложиться неправильное впечатление, что пентесты не нужны как класс. Совсем нет! Просто, все хорошо к месту. Возможна ситуация, когда действительно есть задача поиграть с «черные шляпы» и «белые шляпы». Ну, например, ИТ и ИТ-безопасность у меня аутсорсятся и есть задача проверить, насколько хорошо я защищен. Логично в этой ситуации именно провести пентест на мою информационную систему, и тем самым проверить насколько мои аутсорсеры хорошо выполняют наше с ними SLA. Почему логично пентест? Потому что он а) дешевле, как следствие, быстрее, б) нагляднее, как для проверяемых ИТшников и Безопасников, так и для меня-заказчика: приближен к реальным условиям, сразу показывает неоспоримый результат, в) можно действительно остановиться после первого же успешного взлома – задача показать возможность взлома при данном уровне работы аутсорсера, найти все остальные варианты реализации взлома – уже факультативно. Подумав, можно найти и другие случаи, когда пентест – лучший выбор, но всегда перед заказом аудита обязательно внимательно проанализируйте цели этой работы, решите, что вам нужно. Не надо тут полагаться на мнение подрядчика-аудитора, - он вам продаст все, что умеет, для него - это бизнес, но никто и ничто не заменит вам вашу логику.