- А что если?
- Step by step howto
- Warning
- Аутсорсим ibm lotus domino/notes
- Загадочный .nsf
- Ноу интуит | базовые концепции ibm lotus domino 6/6.5 | информация
- Ноу интуит | вопросы безопасности в lotus notes и domino 7 | информация
- Оболочка live console
- Оболочка quick console
- Осмотр пациента
- Получение данных
- Почти реверс-инжиниринг
- Предыстория
- Протокол
- Ранее приватный эксплойт для cve-2021-1519
- Сказ про cve-2021-1519
А что если?
Отлично, мы реверснули баг и фактически создали эксплойт. Это все? Нет, есть и еще кое-что. Во-первых, что ты будешь делать в случае блокировки SMB-трафика с атакуемого сервера? Серверу, который имеет выход в интернет, вполне можно подсунуть UNC (набор символов, который указывает расположение файла в файловой системе).
Если выхода в интернет не имеется, то сервер не сможет добраться до файла из-за банального межсетевого экрана. Кроме того, IBM выпустила простой, но беспощадный патч: теперь к параметру cookiefile добавляется точка «.» в самом начале пути. Таким образом, если мы вводим что-то типа evilcookiefile, то в результате сервер пойдет открывать файл, путь к которому имеет следующий вид: .evilcookiefile, так что об UNC здесь можно забыть.
Кроме того, патч проводит аутентификацию клиента с помощью SSL-сертификата, поэтому доступ к консоли без него получить не выйдет. Но давай забудем про сертификат и решим первую проблему. В этом нам помогут сами программисты IBM! Из листинга, в котором осуществляется парсинг cookiefile, видно, что кодеры хотели использовать что-то типа XML-файла и XML-парсера.
Step by step howto
Итак, подведем итоги и создадим небольшой гайд по получению доступа к Lotus Domino.
Для получения доступа к серверу выполняем следующие действия:
Если есть Web-доступ:
1. Запускаем утилиту raptor_dominohash и собираем хэши паролей:./raptor_dominohash 192.168.0.202
2. Сохраняем хэши в формате, приведенном в статье;
3. Запускаем JohnTheRipper и подаем на вход список имен пользователей и хэшей:./john HASH.txt –format=lotus5
Warning
Внимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несет!
Аутсорсим ibm lotus domino/notes
В этот раз мы решили разнообразить наш блог и внести элемент практики. Опубликованные ранее статьи касались различных технологий, теперь же пришло время рассказать, какие проекты мы реализуем. Первым станет
проект по аутсорсингу IBM Lotus Domino/Notes инфраструктуры
одного крупного европейского финансового холдинга с филиалами в разных частях света, который стартовал в 2021 году. Наша компания выполняла заказ на данный проект, получив в результате успешный кейс в портфолио. О том, как мы делаем свою работу, и какие знания и опыт в области аутсорсинга IBM Lotus Domino/Notes готовы применять в следующих проектах, расскажем далее.
Предпосылки к началу проекта
С продуктом Lotus Domino/Notes заказчик работал с начала 2000-х, а сопровождал его большой штат собственных администраторов и разработчиков. В течение нескольких лет после внедрения IBM Lotus Domino/Notes ИТ-службой заказчика были доработаны стандартные приложения Lotus Notes и разработаны новые, которые автоматизировали все основные бизнес-процессы, возлагаемые на Lotus. Такая идиллия продолжалась вплоть до известного всем экономического кризиса 2008 года, когда проблемы финансового характера подтолкнули менеджмент компании к необходимости оптимизировать финансовые показатели путем разгрузки своего ИТ-персонала от непрофильных и рутинных задач и концентрации их сил на главных для бизнеса процессах.
В результате, заказчик оставил за собой только задачи конфигурации в области информационной безопасности, аудит за деятельностью аутсорсера, доработку дизайна почтовых ящиков под особенности своих бизнес-процессов и отвечал за бизнес-логику приложений. Все остальное было передано на ИТ-аутсорсинг.
Первый этап. На старт. Что предстояло сделать?
Инфраструктура IBM Lotus Domino/Notes заказчика включала несколько десятков серверов, на которых работали почта, Sametime и приложения. Серверы и несколько тысяч пользователей размещались в локациях разных стран мира на нескольких континентах. Все это нам предстояло удаленно сопровождать и развивать. Мы должны были оказывать второй и третий уровни поддержки, а первый уровень (Service Desk) заказчик принял решение отдать в одну из восточно-европейских стран, по причине недостаточной (на тот момент) «многоязычности» специалистов нашей компании.
Для старта проекта не хватало только подписанного контракта, что и реализовал менеджмент нашей компании и передал эстафетную палочку админам, которым предстояло познакомиться с заказчиком и получить первую порцию сервиса.
Первый этап начался с ежедневных периодических задач, управления пользователями и группами, решения инцидентов второго уровня поддержки и предоставления сервиса в режиме 24х7. А уже через полгода после старта проекта мы стали оказывать все виды работ, оговорённых контрактом, в том числе третий уровень поддержки, включая общение с вендором.
Второй этап. Реализация проекта.
Практически сразу после получения доступа в инфраструктуру IBM Lotus Domino серверов мы обнаружили, что большинство ключевых для бизнеса кластеров из серверов Domino перегружены и работают на пределе своих возможностей. Малейший сбой на одном из членов кластера приводил к тому, что запросы пользователей автоматически перенаправлялись на другой сервер, который от этой дополнительной нагрузки скоро также становился недоступным.
Кластер «падал». И это при том, что при заключении контракта заказчик утверждал, что у него все работает прекрасно и серверные инциденты чрезвычайно редки.
Как показывает практика, при описании масштаба работ, передаваемого на аутсорсинг сервиса, заказчики склонны к приуменьшению объемов. Например, указывают только количество инцидентов, скромно забывая о запросах на обслуживание или регламентных работах. И к этому надо быть готовым. Переход в виртуальную среду был в планах заказчика, но постоянно растущие объемы информации требовали не только увеличения производительности серверов, но и изменения архитектуры существующей IBM Lotus Domino/Notes инфраструктуры при обеспечении бесперебойной работы бизнес-процессов заказчика, что и было нами сделано.

Для обеспечения высокой степени доступности, масштабируемости и балансировки нагрузки каждый филиал компании заказчика имеет один или два выделенных физических сервера, на которых располагаются почта, архивы и реплики критически важных приложений. Эти серверы объединены в кластеры с соответствующими серверами в разных дата-центрах. Таким образом, в случае локальных проблем с сервером в филиале, их Notes клиенты будет автоматически переключаться на сервер в одном из дата-центров.
Для обеспечения безопасности Domino серверы объединены в два разных Notes домена: «внутренний» и «внешний» (mail gateway).
Благодаря оптимизации было сокращено количество Domino серверов. Большинство из них было перенесено из локаций в дата-центры по месту расположения головного офиса. В локациях оставили минимальное количество серверов, что позволило заказчику минимизировать затраты на их поддержку. Режим работы пользователей с почтовыми ящиками был изменен с «On Server» на «On Local», что привело к значительному сокращению нагрузки на почтовые серверы.
Правильность концепции, заложенной в новую архитектуру, гарантирующую непрерывность предоставления сервиса, была подтверждена и регулярными DR (Disaster Recovery) тестами, проводимыми заказчиком.
В итоге после некоторого периода адаптации (отметим, что в целом все требования заказчика выполнялись поэтапно в течение 8 месяцев) количество серверных инцидентов с Domino серверами снизилось в 2,5 раза.
Третий этап. Неожиданный сюрприз.
Разобравшись с критическими серверными задачами и благополучно пережив переход на новую инфраструктуру в основных локациях, мы взялись за проактивную работу. По договору регламентные еженедельные и ежемесячные работы переходили в нашу зону ответственности в самом конце передачи нам сервиса. Это было связано с тем, что они содержали не только действия, рекомендованные IBM, но и специфические действия, направленные на поддержание работоспособности бизнес-процессов и целостности информации заказчика.
И здесь нас поджидал сюрприз. В связи с оптимизацией штатного персонала, у оставшихся админов заказчика работы стало столько, что они успевали делать только критически важные еженедельные и ежемесячные задачи. Таким образом, вся оставшаяся нагрузка легла на хрупкие плечи аутсорсера, то есть на нас.
Что же нам было делать с большим объемом дополнительной работы? Было решено срочно автоматизировать процессы. В кратчайшие сроки нами были написаны скрипты по дополнительному анализу логов, сравнению кластеров, квот почтовых файлов, анализу групп, предоставлению отчетности. Все это позволило за 3-4 месяца привести дела в порядок и, что самое главное, регулярное выполнение в полном объеме всех регламентных работ привело к сокращению не только количества серверных, но и нескольких видов пользовательских инцидентов.
Успеху нашей работы также способствовало наличие у заказчика зрелых бизнес-процессов администрирования и решения инцидентов, их управления и мониторинга исполнения. На первых порах специалистам приходилось тратить много времени на их изучение и понимание, но в дальнейшем мы смогли по достоинству оценить их несомненную пользу, самостоятельно создавая новые и оптимизируя старые.
Итоги проекта. Что получил заказчик?
В результате реализации проекта специалисты нашей компании предоставили заказчику стабильную, правильно развивающуюся ИТ-инфраструктуру и возможность перебросить собственные ИТ-ресурсы на решение профильных бизнес-задач.
На протяжении всего проекта мы:
Все это позволило нашей компании значительно расширить объем предоставляемого заказчику сервиса и через пять лет работы продлить контракт.
Загадочный .nsf
Если кратко, то Lotus хранит всю информацию в контейнерах собственного формата с расширением nsf. Данный контейнер представляет собой набор данных и формат их представления. Если говорить проще, то каждый nsf ресурс – это небольшой отдельный сайт со своей базой данных.
Ноу интуит | базовые концепции ibm lotus domino 6/6.5 | информация
В курсе описывается архитектура и компоненты системы Lotus Notes.
Описывается модель безопасности, компоненты почтовой системы, принципы работы календаря, работа с документами. Курс позволяет полностью освоить Lotus Notes.
Теги:
DIC
,
headline
,
NSF
,
PCX
,
pkcs
,
vcard
,
базы данных
,
безопасность
,
браузеры
,
интернет
,
кабельный модем
,
каталоги
,
личный ключ
,
поиск
,
приложения
,
прокси-серверы
,
протоколы
,
редакторы
,
серверы
,
таблицы управления доступом
,
форматы
,
цвета
,
шифровальный ключ
,
электронная почта
,
элементы
Ноу интуит | вопросы безопасности в lotus notes и domino 7 | информация
Курс посвящен безопасности IBM Lotus. В нем дается информация об основных возможностях и функциях,
относящихся к вопросам безопасности Lotus Notes и Domino, а также практических методах, позволяющих реализовать эти новые возможности и функции.
Курс предлагает техническим специалистам информацию, необходимую для понимания и правильной реализации новых возможностей безопасности, имеющихся в версиях
7.0.x Lotus Notes, Domino, а также во вспомогательных продуктах. Он также поможет IT-менеджерам понять новые возможности системы безопасности и то, как
эти возможности можно предоставить конечным пользователям, чтобы еще больше усовершенствовать диапазон служб и функций, связанных с безопасностью, а также обеспечить выполнение требований бизнеса на безопасной и эффективной основе.
Теги:
address book
,
cache management
,
certify
,
configuration settings
,
DCC
,
,
ldap
,
password management
,
single sign-on
,
ssl
,
ssl-сертификаты
,
SSO
,
аутентификация
,
базы данных
,
безопасность
,
браузеры
,
интернет
,
клиенты
,
личный ключ
,
политика
,
серверы
,
спам
,
шифрование
Оболочка live console
Наиболее удобная оболочка для выполнения называется Live Console, но, к сожалению, ее использование обусловлено двумя проблемами. Первая проблема заключается в том, что данная консоль не включена по умолчанию и для ее включения необходимо перезагружать сервер, что не очень хорошо.
Вторая особенность – данная оболочка работает по своему протоколу с использованием порта 2050, и с большой вероятностью в случае подключения через интернет данный порт будет зафильтрован. Таким образом, данный вариант не является универсальным, так что идем дальше.
Оболочка quick console
Второй вариант – это использование урезанной версии консоли – Quick Console. Данная консоль имеет неприятную особенность – результат выполнения команды не отображается, таким образом, мы можем выполнять команды только вслепую. Ладно если нам нужно просто выполнить команду, в которой мы уверены, но если нам захочется прочитать содержимое файлов – тут без трюков не обойтись.
Осмотр пациента
Итак, начнем анализ подопытного. Обычно при попытке обращения к корневой директории Lotus-сервера мы получаем окошко с запросом аутентификации, что сразу же отпугивает неопытных хакеров. Очень вероятно, что администратор установил запрос аутентификации только на обращение к корневой папке, а все остальные ресурсы остались открыты. Что же там за ресурсы могут быть, и чем они нам полезны?
Получение данных
Давай проанализируем, что мы вообще можем делать в административном интерфейсе, чтобы понять, что из этого нам поможет для получения результатов команд. Первое, что бросается в глаза – это меню Files, где, как хотелось бы верить, мы сможем читать файлы, но и тут нас поджидает неприятная участь. Читать файлы нельзя, можно только делать листинг директорий и видеть имена файлов. И только если у них расширение .nsf.
Первая сумасшедшая идея, которая приходит в голову – это разбивать на строки вывод результата выполнения команды и создавать файлы, в названии которых будет кусок результата выполнения команды, а расширением будет .nsf. Таким хитрым и довольно извращенным способом мы будем получать информацию о результате работы команды. Для этого необходимо последовательно запустить две команды (спасибо Алексею Синцову за набросанный скрипт):
Почти реверс-инжиниринг
После всех безуспешных попыток вникнуть в код алгоритма мне пришлось декомпильнуть код контроллера. Выяснилось, что контроллер полностью написан на Java, поэтому и IDA Pro, и Оля-дебаггер оказались не нужны. Пригодился обыкновенный DJ decompiler, который превратил jar-файл C:
Program FilesIBMLotusDominoDatadominojavadconsole.jar в кучу практически полностью читаемого Java-кода. Воспользовавшись поиском, я быстро нашел в полученных файлах класс NewClient.class, отвечающий за работу с консолью и аутентификацию. Давай взглянем на сам код:
// s1 — строка ввода с 2050/tcp
if(s1.equals("#EXIT"))
return 2;
...
if(s1.equals("#COOKIEFILE"))
if(stringtokenizer.hasMoreTokens())
// Ага. Мы были правы:
// #COOKIEFILE <путь к файлу>
cookieFilename = stringtokenizer.nextToken().trim();
return 7;
...
if(!1.equals("#UI"))
if(stringtokenizer.hasMoreTokens())
// Аутентификация…
usr = stringtokenizer.nextToken(",").trim();
if(usr == null)
return 4;
if(stringtokenizer.hasMoreTokens())
// Пароль после запятой, это мы и так знали
pwd = stringtokenizer.nextToken().trim();
return 0;
...
Наши догадки о формате команд оказались верны. Теперь давай найдем интересующий нас процесс аутентификации:
Предыстория
Однажды я проверял надежность защиты очередного объекта. На этот раз вся инфраструктура была поднята за счет оборудования и софта IBM, что совершенно точно влетело заказчику в копеечку. Основную часть инфраструктуры, как это обычно бывает, составляли сервера Lotus.
В данном случае их было много. Очень много. На Lotus была построена вся кухня компании: почта, совещания, управление контентом и т. п. Кстати, здесь вполне уместно вспомнить старую статью Александра Полякова, в которой он героически описывал свой опыт покорения этого ПО.
Однако время беспощадно, и те трюки, которые ещё пару лет назад работали на ура, сегодня уже не дают абсолютно никакого профита. Обновленный монструозный Lotus смотрел на меня как на обычного пользователя безо всяких прав. 🙂 В такой ситуации любой начинающих взломщик полез бы на баг-трекеры и начал искать, к чему можно прицепиться, кроме устаревшего names.nsf в веб-сервисах.
Протокол
Итак, мы знаем, что уязвимая служба висит на порте 2050. Это очевидно, так как контроллер Lotus всегда находится там. Однако протокол общения лично мне был неизвестен. Погуглив информацию об этом протоколе, я ничего не нашел. В то же самое время мой напарник Александр Миноженко заметил, что автор бага, достаточно известный пентестер и хакер из Швеции Патрик Карлсон, также является автором модулей для культового сканера nmap.
Рассмотрим код этих модулей:
Ранее приватный эксплойт для cve-2021-1519
Теперь перейдем непосредственно к реализации нашей атаки.
Сказ про cve-2021-1519
Бегло просмотрев различные уязвимости, я остановился на баге с обходом аутентификации, позволяющем выполнить произвольный код (а это как раз то, о чем мечтает каждый пентестер). Эта уязвимость, получившая на сайте ZDI код ZDI-11-110, на момент проведения пентеста числилась как 0day (сейчас уже имеется соответствующий патч). Приведу перевод описания указанной уязвимости с этого сайта:
«Эта уязвимость позволяет удаленному атакующему выполнить произвольный код на уязвимой инсталляции Lotus Domino Server Controller. Для эксплуатации уязвимости не требуется аутентификация. Проблема существует в реализации функционала удаленной консоли, которая по умолчанию слушает TCP-порт 2050.
При аутентификации пользователя сервер использует значение параметра COOKIEFILE, в котором пользователь передает путь для получения сохраненных аутентификационных данных. Приложение сравнивает данные из этого файла с данными пользователя. Путь может быть представлен в виде UNC, что позволит атакующему контролировать оба сравниваемых значения. Эксплуатируя эту уязвимость, удаленный атакующий сможет выполнить код с правами SYSTEM».
Это описание вполне раскрывает всю суть проблемы: во время аутентификации атакующий может подменить параметр COOKIEFILE на параметр, содержащий путь к файлу evilhostpassword_cookie_file, который находится под контролем самого атакующего. В этот файл как раз и входит строка, сравниваемая с паролем, который вводится при аутентификации. Однако более подробная информация в описании уязвимости отсутствовала.
