Начало работы с Urban Airship Push Notifications в PhoneGap

Доброго времени суток, хабрапользователи!

Push Notifications не включены в API PhoneGap. Если сделать небольшой поиск по документации PhoneGap, то можно найти только Notifications которые представляют собой обычные alert диалоги с вожможностью использования в них звуковых эффектов и вибрации.
Но что делать, если вам просто необходимо создать кроссплатформенное приложение с Push Notifications? Я хочу обратить Ваше внимание на тестовый пример работы с некоторыми из них при помощи Android. В результате, из разработанного проекта можно будет получить также iOS, BlackBerry и Windows Phone приложения.

image

В статье будут рассмотрены две библиотеки для работы с Push Notifications в PhoneGap: Urban Airship и Poosh Woosh.

Начать стоит с поиска подходящей библиотеки, а их на самом деле великое множество. Однако, нужно, чтобы библиотека была действительно кроссплатформенной и имела единый сервис доставки.

Просмотрев имеющиеся варианты, я остановилась на 2 библиотеках: Urban Airship и Poosh Woosh. У них есть свои недостатки и преимущества, поэтому рассмотрим обе библиотеки.

По сути, Urban Airship имеет 3 версии: Enterprise Edition, версию для малого бизнеса Small Business Edition и бесплатную Developer Edition. Вы можете ознакомится со всеми преимуществами более подробно на официальном сайте.

Push Woosh также имеет несколько версий: Free, Premium, Gold, Platinum. Ознакомится с ними можно после регистрации на официальном сайте.

Рассмотрим более подробно бесплатные версии: Developer Edition от Urban Airship и Free от Push Woosh. Их основное отличие в том, что в Urban Airship вы можете отправлять до 1 миллиона сообщений в месяц, а в Push Woosh вы можете подключать для отправки сообщений до 1 миллиона девайсов. Кроме того, в бесплатной версии Push Woosh у вас не будет доступа к API, геозонам и тегам, а количество приложений будет ограничено 10. Urban Airship к преимуществам своего продукта относит: гибкие интерфейсы для полной настройки, безотказность, безопасность, масштабируемость, а также высокую производительность. Итак, вы можете выбрать ту, которая является более подходящей для вашего проекта.
Далее перейдем к подключению библиотек.

Google?

Да, именно Google. Теперь стоит обратиться к его помощи. Нужно будет использовать Google API для своего проекта. Для этого:
1. Нужно перейти по ссылке и создать его, соответственно;

image

2. После создания проекта в браузере будет введена ссылка, похожая на эту:

https://code.google.com/apis/console/#project:4815162342 

Здесь 4815162342 — это gsmSender в файле airshipconfig.properties.
3. Во вкладке Services необходимо включить Google Cloud Messaging for Android.

4. Во вкладке API Access выбираем «Create a new Server key…» В появившемся окне ничего не нужуно вводить, просто нажимает “Create”.

5. Сгенерированный API key понадобится в созданном ранее профиле Urban Airsip.

Go Urban Airship

Теперь, стоит скачать саму библиотеку, а также тестовый пример с официального сайта Urban Airship. Подключаем проект к Eclipse и добавляем в него скачанную библиотеку.
Далее нужно сделать самое интересное — разобраться с ключами, которые находятся в файле airshipconfig.properties.

Переходим к Urban Airship профилю и создаем в нем новое приложение, при этом вводим полученный API key в строку CGM API Key.

Во вкладке Details созданного проекта: Application Key — это developmentAppKey в файле airshipconfig.properties, а Application Secret — это developmentAppSecret.

И вот настал тот момент, когда, наконец-то, можно запустить приложение. При этом не стоит забывать включить интернет.
Для отправки Push Notifications необходимо сделать следующие шаги:

1. Читаем лог и видим похожую строку. Копируем push ID, который понадобится для отправки Push Notification на указанный телефон.

2. В профиле переходим на вкладку Push -> Test Push Notifications и выбираем Android. Здесь в строку Apid вводим скопированный push ID, в Extra key — Application Key, а в Extra value — Application Secret. Alert — это то сообщение, которое необходимо передать.

3. Проверяем — нажимаем “Send it!”. При клике на Push Notifications происходит переход на само приложение.

Pushwoosh

В работе с Pushwoosh всё очень похоже.
Вы можете скачать тестовый пример для PhoneGap.
Понадобится регистрация и создание приложения. Для примера работы с приложением введем полученный у Google, API key.

Далее в коде файла index.js заменим projectId на собственный, в поле appid введем в полученный от PushWoosh код:

Теперь можно отправлять первый Push Notification от Push Woosh (для этого не надо вводить дополнительных кодов для девайсов).

ссылка на оригинал статьи http://habrahabr.ru/company/ruswizards/blog/171087/

Пользователи в приложениях: каковы реалии?

Одна из наиболее часто встречающихся ошибок разработчиков во время составления своих бизнес-планов (особенно если это их первое приложение) — это серьезная переоценка количества пользователей, которых это самое приложение сможет привлечь. Типичные рассуждения на эту тему: «Моё приложение совместимо с 400-ми миллионами устройств, поэтому если мы сможем достигнуть хотя бы 1% из них, это уже получится 4 миллиона пользователей.» и т.д. Ловушка в том, что 1% звучит крайне скромно, но по факту это гигантская цифра.

В последнем исследовании, проведенным компанией VisionMobile, из 664 опрошенных разработчиков, только 6% имеют базу более 500 000 активных пользователей. Существует мнение, что в силу особенностей чартов в app stores и ограниченного пространства для маркетинга, те разработчики, которым все-таки удалось перевалить за пол миллиона пользователей, имеют хорошие шансы заполучить нарастающим комом гораздо большее количество пользователей в ближайшей перспективе.

Что же тогда происходит с остальными, не преодолевшими отметку в 500 тысяч?

Исключив из исследования приложения с активной базой в 500 000 пользователей и более, получилось, что среднее количество активных пользователей на iOS составляет 70 000, на Android — 51 000. Средние значения выборок (медиан) выглядят несколько скромнее: 27 500 для iOS и 15 500 активных пользователей для Android.
Относительная разница между средними величинами намного меньше, чем между медианами, отсюда вывод, что распределение базы активных пользователей нужно исследовать дальше.

Как можно видеть из графика, база в 200 000 — 500 000 активных юзеров представлена меньше всего, в то время как база в 50 000 — 200 000 встречается в 3 раза чаще. Это позволяет сделать вывод, что где-то на уровне в 200 000 пользователей находится некий барьер, преодолев который, приложение становится более «заметным» и прирост пользовательской базы происходит значительно быстрее.

Похожий скачок наблюдается и на границе в 501 — 2 000 пользователей. Такое количество пользователей встречаются гораздо чаще, чем 2 001 — 5 000 пользователей. Скорее всего, это показатель маркетинговой активности приложения, разницы между эффективно продвигаемыми приложениями и теми, что не продвигаются.

Стоит отдельно отметить, как влияют выбранная модель монетизации и категория приложения на количество пользователей. Например, приложения, зарабатывающие в основном на рекламе (они как правило являются бесплатными), имеют гораздо больше шансов пересечь границу в 50 000 пользователей, в то время как freemium модель находится совсем близко к платным приложениям и вызывает у пользователей меньший ажиотаж. В категории игр крайне высокая конкуренция из-за чего разработчикам довольно трудно набрать более 50 000 пользователей, в то время как категория музыка и видео позволяет приложениям проходить барьер в 50 000 и 500 000 пользователей значительно проще. Комбинации различных моделей монетизации и категорий приложений почти бесконечны, интерактивный график вы можете изучить по ссылке.

ссылка на оригинал статьи http://habrahabr.ru/company/mbt/blog/171089/

Конкурс «Весенняя игра на MVA»

Всем бодрого времени суток!

Сегодня я совсем немного воспользуюсь вашим временем и расскажу о новой мотивационно-маркетинговой составляющей на тему получения знаний – конкурсе академии MVA.



Мы с коллегами собрались, посовещались – и решили. Знания получать всегда полезно, но не всегда это бывает приятно – бывает, что и настроения нет, да и перспективы применения знаний бывают очень ту манными и нечеткими… И вот чтобы этот фактор снизился, если не устранился совсем, мы решили провести мотивационный конкурс «Весенняя игра на MVA».

Смысл конкурса и шаги для достижения цели до безобразия простые:

1) Вам нужно зарегистрироваться на портале академии MVA
2) Выбрать программу обучения, пройти ее а успешно завершить тесты – в результате вы получите баллы
3) При накоплении баллов вам также необходимо подать заявку на получения сертификата и участие в розыгрыше призов

Да-да – теперь про самое интересное – про призы. Призы у нас следующие:

1) 2 ультрабука HP Elite Folio Core i7
2) 4 сетевых хранилища NAS Synology DS713+
3) 10 SSD дисков от Intel

Также все участники, набравшие долее 300 баллов получат памятный сертификат от MVA о сием достижении! Ну что же, я бы (не будь я сотрудником Microsoft) с удовольствием принял бы участие с такими вкусными призами – даже не могу сказать, что мне из призов нравится больше – всему бы я нашел достойное применение!
Желаю успехов и вкусных призов помимо роста объема знаний в черепной коробке!

С уважением,
Человек-огонь

Георгий А. Гаджиев

Эксперт по информационной инфраструктуре
Microsoft Corporation.

ссылка на оригинал статьи http://habrahabr.ru/company/microsoft/blog/171075/

Обход двухфакторной аутентификации Google

Злоумышленник может обойти двухфакторную аутентификацию (2ФА) на сервисах Google, сбросить пользовательский пароль и получить полный контроль над аккаунтом, просто заполучив т.н. пароль приложения — ПП (ASP — Application-Specific Passwords).

Злоупотребление паролями приложений Google

2ФА Google предоставляет материал для исследования различных проблем, непременно возникающих в настолько масштабных системах надежной аутентификации.
Чтобы сделать подобную аутентификацию возможной для всех пользователей (и безболезненно интегрировать её в уже существующую экосистему), инженерам Google пришлось пойти на некоторые компромиссы. Такие, например, как пароли приложений.
Несколько месяцев назад мы нашли способ использовать ПП для получения полного контроля над google аккаунтом, полностью обойдя 2ФА. Мы рассказали о нашей находке службе безопасности Google и недавно получили от них ответ, что они предприняли некоторые шаги для нейтрализации наиболее серьезных угроз из тех, что мы обнаружили. И так, вот что мы нашли:

Пароли приложений

Как только вы включите 2ФА, Google попросит вас создать отдельный пароль для каждого приложения, что вы используете (отсюда и название «пароль приложения»), который не поддерживает 2ФА. Этот пароль Вы используете вместо своего основного. Выражаясь конкретнее, вы создаёте ПП для большинства приложений, которые не используют логин из web-формы: e-mail клиенты, использующие IMAP и SMTP (Apple Mail, Thunderbird, и т.п.); XMPP чат-клиенты (Adium, Pidgin и т.п.), а так же различные календари, синхронизирующиеся с помощью CalDAV (iCal, etc.).
Даже некоторые софт от Google вынуждает вас использовать ПП — например, чтобы включить синхронизацию в Chrome или настроить свой аккаунт на Android устройстве. Совсем недавно эти клиенты в большинстве своём перешли на авторизацию через OAuth. В такой модели, когда вы впервые логинитесь на своём новом устройстве или в приложении, вы получаете запрос на авторизацию в web-форме, которая использует 2ФА. После успешной авторизации, сервер возвращает токен с ограниченным доступом, который в дальнейшем используется для авторизации вашего устройства/приложения.
На самом деле, OAuth токены и ПП очень сильно похожи — в конечном итоге всё заканчивается созданием уникального авторизационного токена для каждого устройства/приложения, которое вы привязываете к вашему google аккаунту. Кроме того, каждый отдельный токен может быть отозван, без ущерба для для остальных: если вы потеряли ваш смартфон, вы можете быть уверены, что никто не сможет получить доступ к вашему почтовому ящику, не имея пароля.
И так, основные отличия между OAuth токенами и ПП следующие:

  • OAuth токены создаются автоматически, в то время как ПП нужно создавать вручную. Вам нужно пойти в настройки google аккаунта чтобы его создать, а затем скопировать в приложение.
  • OAuth токены предоставляют более гибкую модель авторизации и могут быть использованы для ограничения доступа только к определенным данным или сервисам в вашем аккаунте. С другой стороны, пароли приложений, если уж быть совсем точным, не совсем ТОЛЬКО для приложений!

Остановимся на втором пункте подробнее. Если вы создаете ПП для XMPP чат-клиента, этот же самый пароль может быть использован для чтения почты через IMAP или получения списка событий из CalDAV календаря. Что, собственно, не является таким уж сюрпризом. На самом деле, Eric Gorss и Mayank Upadhyay из Google уже указывали на эту слабость в их статье о 2ФА Google:

«Другая слабость ПП в обманчивом впечатлении, что они предоставляют доступ к конкретному приложению, а не полномасштабный доступ к аккаунту»

Authentication at Scale из «IEEE S&P Magazine» vol. 11, no. 1

Получается, ПП могут гораздо, гораздо больше, чем простое получение доступа к вашей почте. На самом деле, они могут быть использованы для аутентификации на большинстве сервисах Google в обход 2ФА!

Авто-логин в Chrome

В последних версиях Android и ChromeOs Google включил в свои браузеры механизм авто-логина в google аккаунты. После того, как вы свяжите ваше устройство с аккаунтом, браузер будет использовать уже существующую авторизацию и перестанет запрашивать её через web-форму. (Есть даже экспериментальная поддержка этой функциональности в десктопной версии Chrome, вы может включить её, открыв «chrome://flags/.»).

До недавнего времени, этот механизм работал даже для самой важной части google аккаунта — странице настроек. Она включает в себя страницу восстановления пароля, на которой возможно добавление и редактирование e-mail адреса и телефонных номеров, на которые вам будет отослана информация, необходимая для сброса пароля. Короче говоря, если вы сможете получить доступ к этой странице — вы сможете отобрать аккаунт у его законного владельца.

Технические детали

В своём отличном блоге Android Explorations Николай Еленков опубликовал обширное исследование механизма авто-логина в Android. Оно стало отличной отправной точной, но всё не содержала всю необходимую нам информацию. Мы захотели узнать, как можно использовать этот механизм, не имея Android устройства или Хромбука.
Чтобы сделать это, мы установили перехватывающий прокси, чтобы следить за траффиком между эмулятором Android и серверами Google. Во время добавления google аккаунта, мы увидели следующий запрос:

POST /auth HTTP/1.1
Host: android.clients.google.com

accountType=HOSTED_OR_GOOGLE&Email=user%40domain.com&has_permission=1&add_account=1&EncryptedPasswd=AFcb4…\
&service=ac2dm&source=android&androidId=3281f33679ccc6c6&device_country=us&operatorCountry=us&lang=en&sdk_version=17

Ответ, помимо всего прочего, содержал следующее:

Token=1/f1Hu…

Несмотря на то, что урл и некоторые параметры не документированы, это очень напоминает Google ClientLogin API. Чтобы воссоздать такой запрос самим, нам нужно было понять, что за значения нужно передавать в параметрах «EncryptedPasswd» и «androidId». Со вторым всё оказалось просто — это тот самый параметр «ANDROID_ID», упоминаемый в Android API Docs — случайно сгенерированный 64-битное значение, которое предназначено для однозначной идентификации устройства Android.
Другой пост Еленкова вселил нас надежду, что «EncryptedPasswd» может быть нашем ПП, зашифрованным публичным 1024-битным RSA ключём, который включён в Android платформу. «EncryptedPasswd» являлся бинарными данными(закодированными base64) длинной 130 байт, так что вполне возможно, что так оно и есть. Однако, прежде чем двигаться дальше, мы решили попробовать заменить этот параметр параметром «Passwd» (не зашифрованный пароль) из документации и установить ему значение — наш ПП:

POST /auth HTTP/1.1
Host: android.clients.google.com

accountType=HOSTED_OR_GOOGLE&Email=user%40domain.com&has_permission=1&add_account=1&Passwd=xxxxxxxxxxxxxxxx\
&service=ac2dm&source=android&androidId=3281f33679ccc6c6&device_country=us&operatorCountry=us&lang=en&sdk_version=17

И это сработало! Мы получили ответ, в котором содержалось что-то очень похожее на валидный токен. Этот токен, созданный сервером android.clients.google.com, стал видим в разделе «Connected Sites, Apps, and Services» нашего аккаунта и, похоже, предоставляет нам полный доступ к аккаунту:


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

POST /auth HTTP/1.1
Host: android.clients.google.com

accountType=HOSTED_OR_GOOGLE&Email=user%40domain.com&has_permission=1&Token=1%2Ff1Hu…&\
service=weblogin%3Acontinue%3Dhttps%253A%252F%252Faccounts.google.com%252FManageAccount\
&source=android&androidId=3281f33679ccc6c6&app=com.android.browser&client_sig=61ed377e85d386a8dfee6b864bd85b0bfaa5af81&\
device_country=us&operatorCountry=us&lang=en&sdk_version=17

Этот запрос возвращал тело ответа, а так же следующую строчку:

Auth=https://accounts.google.com/MergeSession?args=continue%3Dhttps%253A%252F%252Faccounts.google.com%252FManageAccount&uberauth=AP…&source=AndroidWebLogin
Expiry=0

Из этого запроса мы установили, что форматом для параметра «service» является weblogin:continue=url_encode(destination_url). Мы решили попытаться указать этот параметр для нашего изначального запроса с ПП вместо токена (вместо того, чтобы пытаться понять происхождение непонятного параметра «client_sig»):

POST /auth HTTP/1.1
Host: android.clients.google.com

device_country=us&accountType=HOSTED_OR_GOOGLE&androidId=3281f33679ccc6c6Email=user%40domain.com&lang=en&\
service=weblogin%3Acontinue%3Dhttps%253A%2F%2Faccounts.google.com%2FManageAccount&\
source=android&Passwd=xxxxxxxxxxxxxxxx&operatorCountry=us&sdk_version=17&has_permission=1

И получили ответ, полностью повторяющий предыдущий:

Auth=https://accounts.google.com/MergeSession?args=continue%3Dhttps%253A%252F%252Faccounts.google.com%252FManageAccount&uberauth=AP…&source=AndroidWebLogin
Expiry0

Ключевым параметром здесь является «MergeSession». Если вы откроете этот урл в неавторизованном браузер после того, как выполните запрос (это нужно сделать очень быстро), вы будете немедленно залогинены в аккаунт!

Таким образом, имея только имя пользователя, ПП и выполнив запрос к android.clients.google.com/auth, возможно залогиниться на страницу настроек аккаунта, в обход двухступенчатой верификации!

Фикс Google

Как было замечено ранее, этот способ работает даже для самой критичного раздела google аккаунта — настроек. Атакующий может предпринять рад действий, используя ПП жертвы:

  • Он может передать «accounts.google.com/b/0/UpdateAccountRecoveryOptions?hl=en&service=oz» в качестве урла в API запросе. MergeSession URL, полученный в ответе, приведёт его прямо на страницу восстановления пароля, где он сможет основной пароль.
  • Аналогично, атакающий может передать в запрос урл «accounts.google.com/b/0/SmsAuthConfig?hl=en», что приведет его на страницу с настройками 2ФА, где он сможет добавлять и удалять ПП или же отключить 2ФА совсем.

Это больше невозможно, начиная с 21 февраля, когда инженеры Google закрыли эту дыру. Насколько мы можем судить, Google теперь поддерживает некое дополнительное состояние, которое позволяет определить, как именно вы авторизоирвались — с помощью MergeSession URL и с помощью обычного логина и пароля, используя 2ФА. Страница настроек станет доступна только в последнем случае. Если же вы залогинились с помощь MergeSession URL, вас перенаправлят на страницу 2ФА, которую нельзя пропустить.

Насколько всё было плохо?

Мы считаем, что это большая дыра в системе аутентификации, если пользователь имеет некую форму для ввода пароля, которая позволит получить доступ к полному контролю над аккаунтом. Но несмотря на это, мы всё же согласны, что даже до того, как Google выкатил свой фикс, включить 2ФА на своём аккаунте гораздо лучше, чем не делать этого.

В наши дни, злоумышленник всё ещё имеет в своём арсенале набор методов для получения контроля над аккаунтом. Например:

  • Создание фишингового сайта, с целью заставить пользователя отдать свой пароль.
  • Использование того факта, что пользователи часто используют один и тот же пароль на различных сайтах. Взломав базу с паролями одного слабозащищенного сайта, злоумышленник может попытаться получить доступ к аккаунтам на других сайтах.

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

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

Тем не менее, повсеместное использование ПП всё же несёт в себе потенциальную опасность. Если злоумышленник сможет заставить установить вредоносное ПО, оно сможет найти и извлечь ПП где-нибудь в пользовательской системе (например, популярный чат-клиент Pidgin хранит пароли в открытом виде в XML файле). Кроме того, «толстоклиентские» приложения, основной пользователь ПП, частенько подвержены довольно известной проблеме слабой проверки SSL сертификата, что потенциально позволяет украсть ПП с помощью MiM-атаки.

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

Апдейт #1
Google обновил своё предупреждение при создании ПП, в котором предупреждается о потенциальном риске:

Апдейт #2
Craig Young из nCircle выступил с докладом об аналогичной проблеме на конференции BSides, проводимой совместно с RSA!

Хронология событий:
2012/07/16: Исследователи из Duo подтвердили наличие ПП уязвимости.
2012/07/18: Описание проблемы направлено в security@google.com.
2012/07/20: Дискуссия со службой безопасности Google с целью уточнения деталей.
2012/07/24: Проблема подтверждена и классифицирована Google как «ожидаемое поведение».
2013/02/21: Google выпустила фикс, который запрещает доступ к критичной информации для ПП сессий.
2013/02/25: Duo публикуют статью с описанием проблемы.

ссылка на оригинал статьи http://habrahabr.ru/post/171037/

Соответствие стандартам и политикам в сканерах уязвимостей и SIEM

Английский термин compliance означает соответствие одному из высокоуровневых стандартов (таким как SOX, PCI DSS, Basel II, GLBA). Проводить проверку на соответствие этим документам необходимо для того, чтобы определить, насколько хорошо в вашей организации соблюдаются требования, описанные данными стандартами (разрешенная длина паролей, наличие внутренних регламентов и политик, время устранения уязвимостей и т. п.).

Помимо международных стандартов существуют их отечественные аналоги, корпоративные политики и требования NIST.Проводить оценку соответствия этим документам также необходимо. Стандарты содержат наборы требований: выполнение всех требований стандарта фактически означает соответствие ему. Пример отдельного требования: «Должен иметься дисциплинарный процесс для служащих, которые произвели нарушение защиты» (ИСО/МЭК 2005 A.8.2.3).

Проводить проверку на соответствие стандартам необходимо не только для отчетности: чем больше требований выполняется, тем выше уровень защищенности и тем ниже риски финансовых потерь при возникновении угроз. Очевидно, что обеспечивать соответствие стандартам необходимо постоянно и непрерывно — иначе при очередной аудиторской проверке придется потратить кучу сил и нервов на поспешное внесение изменений в конфигурации и инфраструктуру в соответствии с требованиями.

Как проводить проверку соответствия стандарту

На курсах аудиторов по ISO 27001 мне довелось встретить сотрудников департамента ИБ одной организации, которые при проверке соответствия использовали стандарт 27001, но оценивали соответствие и просчитывали риски в экселевской таблице. Зрелище не для слабонервных, признаюсь вам.

Конечно, можно проверять соответствие подобным образов, выписывая требования стандарта на лист бумаги или в Excel. Можно воспользоваться специальным ПО, в котором сотрудники, ответственные за те или иные аспекты безопасности, будут отвечать на типовые вопросы: «Да, нет, не знаю». Но насколько достоверной будет полученная информация? Уверены ли вы, что администратор домена действительно установил минимальную длину паролей равную 7 символам? А вы действительно уверены, что этот администратор не сделал фейковый скриншот, а потом не вернул настройки групповых политик в состояние, которое он (!) считает необходимым? Часть требований можно проверить только с помощью опроса сотрудников, но выполнение остальных требований вполне можно проверять автоматизированными средствами.

Типы требований

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

Приведу простой пример технического требования, упоминающегося в большинстве стандартов: PCI DSS 8.5.10 “Require a minimum password length of at least seven characters”, PCI DSS Requirements 5.1. “Deploy anti-virus software on all systems сommonly affected by malicious software (particularly personal computers and servers)”.

Нетехнические требования, соответственно, проверить с помощью средств автоматизации не получится. Пример такого требования — упомянутый выше ИСО/МЭК 2005 A.8.2.3.

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

Необходимо сразу пояснить, что процесс проверки соответствия вообще принято делить на compliance (без префикса standard; имеется в виду соответствие высокоуровневым стандартам по умолчанию), regulatory compliance (требования надзорных органов, к примеру СТО БР ИББС) и policy compliance (соответствие политикам, будь то корпоративная политика или NIST). Все эти термины в рамках данной статьи мы будем понимать как «проверку на соответствие стандартам (политикам)».

От стандартов к политикам

Что делать, если вам не нужны никакие стандарты, но хочется контролировать соблюдение политик ИБ?

Понятие «проверка соответствия» применимо не только для высокоуровневых стандартов (ISO, руководства NIST, SOX, Basel II) и руководств NIST, но и для внутренних политик компаний. Многие требования корпоративных политик состоят из требований стандартов. Это означает, что можно выделить технические требования из стандартов, описанных в вашей корпоративной политике ИБ, объединить их в политику и отслеживать уже ее.

Другой вопрос — как автоматизировать процесс получения и обработки требований для оценки соответствия стандарту? Ответ прост: такими средствами автоматизации, как сканеры уязвимостей, системы класса CMS (compliance management system), SIEM или в крайнем случае самописными сценариями.

Как это работает?

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

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

Разработка собственного стандарта

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

Добавление собственных требований возможно благодаря гибким механизмам проверок. В каждой системе требования состоят из одной или нескольких проверок. Как правило, проверки эти реализованы с помощью нескольких сценариев с различными методами и транспортами (WMI, RPC и т. п.). У McAfee VM, например, часть сценариев, хранящихся в базе данных, выглядит как на рис. ниже.

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

Если же такого интерфейса нет, то должна по крайней мере быть доступна документация по созданию собственного стандарта (например, в формате XML). Немного усилий — и уникальный стандарт, отражающий требования к ИБ в конкретной организации, готов.

SIEM

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

1) Что такое SIEM http://blog.ptsecurity.ru/2012/10/siem.html
2) Для чего нужна интеграция SIEM и сканера уязвимостей http://blog.ptsecurity.ru/2012/10/siem_1.html
3) Что такое сигнатурные методы корреляции http://blog.ptsecurity.ru/2012/10/siem_17.html
4) Как управлять инцидентами ИБ http://blog.ptsecurity.ru/2012/11/blog-post.html

Теперь давайте зададимся вопросом, зачем в принципе в SIEM нужна проверка соответствия. Что под этим процессом понимается в SIEM? И почему бы не использовать для такой проверки только сканеры уязвимости и compliance management systems?

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

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

SIEM в данном случае выступает пассивным источником данных о соответствии тому или иному стандарту, получаемых в режиме реального времени: снимается проблема менеджмента журналов. В то же время у нас есть возможность на основе поступающих данных о различных событиях определять, что именно приводит к несоответствию. Далее проверяется соответствие определенному требованию выбранного стандарта, и в случае обнаружения несоответствия администратору информационной системы отправляется уведомление.

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

Звучит красиво, не правда ли? Теперь вернемся к нашим SIEM-системам и посмотрим, каким образом они, собственно, оценивают соответствие тому или иному стандарту.

Высокоуровневые стандарты предполагают сбор и хранение информации об определенных событиях (указаны в таблице).

С учетом отдельных стандартов получается следующая картина.

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

Если вы ожидаете, что результатом контроля соответствия стандарту с использованием SIEM станет сообщение вида «Установлена минимальная длина пароля» с указанием соответствующего или не соответствующего требования, — вы, к сожалению, ошибаетесь.

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

Отсюда можно сделать вывод, что SIEM-системы не предназначены для оценки соответствия, а нужны как техническое средство для соблюдения отдельных требований стандартов по сбору и хранению событий и имеют лишь функциональность track@report.

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

Кроме того, в журнале событий каждого источника данных конкретное событие может быть описано различными служебными словами, с разными event_id.

Однако выполнение проверки соответствия подобным образом требует слишком большого количества ресурсов, поэтому разработчики SIEM отказываются от этой затеи.

Почему же возникли трудности в реализации полноценного анализа на соответствие? Кратко рассмотрим основные причины.

Причина первая. В SIEM отсутствует понятие объекта. Тут можно вспомнить метод корреляции “MBR model based reasoning”, описанный в одной из предыдущих статей. С помощью данного метода, к примеру, можно было бы описать состояние объекта, приводящее к несоответствию.


В модели SIEM хранятся события, категории и классы событий, статистика. Однако там отсутствуют состояния объектов или активов (хотя этого понятия для SIEM и не существует).

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

Почему так происходит? Все производители стремятся выполнить требование NIST 800-92 («Original event is preserved and no data is changed during normalization») и, дабы обеспечить неизменность исходных событий, хранят их формате RAW.

Что же делать? Как вариант — применять стандарт CEE (http://cee.mitre.org). Это позволит стандартизировать события без противоречия с NIST 800-92.

В SIEM не получится описать все технические требования стандартов по одной простой причине: значения требований не передаются в событиях от источников. Соответственно, SIEM без дополнительного функционала сканера в SIEM-агенте эти значения не получит. Однако, тренд сейчас — использование безагентных технологий. Несмотря ни на что с помощью SIEM можно отследить большую часть состояния требований в режиме реального времени. Разработчикам SIEM нужно лишь сделать шаг для исправления ошибок.

Надеюсь, в этой статье мне удалось развеять миф о проверке соответствия стандартам в SIEM-системах, а также дать представление о понятиях standard compliance, policy compliance, regulatory compliance.

До встречи в новых публикациях! Ждем ваших вопросов и замечаний в комментариях.

Автор: Олеся Шелестова, Исследовательский центр Positive Research.

ссылка на оригинал статьи http://habrahabr.ru/company/pt/blog/171083/