Intrusion.Win.Intrusion.Win.MS17-010.*
Логика Intrusion-атак заключается в попытке удаленно, по сети эксплуатировать уязвимые или неправильно сконфигурированные приложения, службы и операционные системы для выполнения произвольного кода и реализации несанкционированной сетевой активности.
Успешно реализованная Intrusion-атака может привести к удаленному выполнению кода на целевых узлах.
Описание
Server Message Block (SMB) – это сетевой протокол прикладного уровня, работающий через TCP-порты 139 и 445, которые широко используются для предоставления общего доступа к файлам и принтерам, а также для удаленного доступа к службам.
Атака Intrusion.Win.MS17-010.* нацелена на компьютеры под управлением Windows и реализуется в попытке эксплуатировать уязвимости протокола SMB, которые были закрыты в бюллетене Microsoft Security Bulletin MS17-010 (https://technet.microsoft.com/en-us/library/security/ms17-010.aspx). Результатом успешной эксплуатации этих уязвимостей может стать удаленное выполнение кода на атакуемых компьютерах, что позволит злоумышленнику загрузить вредоносную программу и распространить ее на другие уязвимые узлы в сети.
Успешно реализованная атака позволяет злоумышленнику удаленно выполнить код на атакуемых компьютерах, загрузить вредоносную программу и распространить ее на другие уязвимые узлы в сети.
Эксплойты, нацеленные на уязвимости, закрытые в MS17-010, были использованы в атаках вирусов-вымогателей WannaCry и ExPetr.
Постоянные «сетевые атаки» Intrusion.Win.Intrusion.Win.MS17-010

Güvenlik. Performans. Gizlilik. Hepsi kullanımı kolay tek bir uygulamada.

Kaspersky Small Office Security
Küçük ölçekli işletmenizi kolayca koruyun

Kaspersky Premium
Cihazlarınız, gizliliğiniz ve kimliğiniz için tam koruma

Kaspersky Password Manager
Parolalarınız ve belgeleriniz her zaman elinizin altında

Premium sürüm
Kaspersky Safe Kids
Uzakta olsanız bile çocuklarınızı koruyun

Kaspersky VPN Secure Connection
Işık Hızında VPN Güvenliği

Kaspersky Standard
Mehr als nur Antivirus. Neuer geräteübergreifender Schutz

Kaspersky Plus
Sicherheit. Leistung. Privatsphäre. Alles in einer einzigen App

Kaspersky Small Office Security
Unkomplizierter Schutz für kleine Unternehmen

Kaspersky Premium
Vollständiger Schutz für eine sorgenfreie Zeit

Kaspersky Password Manager
Ihre Passwörter und Dokumente – immer zur Verfügung

Premiumversion
Kaspersky Safe Kids
Behalten Sie Ihre Kinder im Auge, auch wenn Sie nicht in der Nähe sind

Kaspersky VPN Secure Connection
Sicher. Privat. Außergewöhnlich schnell. So sollte Internet sein.

Kaspersky Standard
Mejora la protección con el optimizador del rendimiento del dispositivo

Kaspersky Plus
Seguridad. Rendimiento. Privacidad. Todo en una única aplicación fácil de usar.

Kaspersky Small Office Security
Proteja fácilmente su pequeña empresa

Kaspersky Premium
Protección completa para tus dispositivos, privacidad e identidad

Kaspersky Password Manager
Tus contraseñas y documentos, siempre a mano

Versión premium
Kaspersky Safe Kids
Supervisa a tus hijos, incluso cuando no estés con ellos

Kaspersky VPN Secure Connection
Seguridad de VPN de gran velocidad

Kaspersky Standard
Bien plus qu’un antivirus. Nouvelle protection multi-appareils.

Kaspersky Plus
Sécurité. Performance. Confidentialité. Le tout dans une seule application.

Kaspersky Small Office Security
Protégez votre PME sans effort

Kaspersky Premium
Protection premium. Une tranquillité d’esprit totale.

Kaspersky Password Manager
Vos mots de passe et vos documents à portée de main

Version premium
Kaspersky Safe Kids
Veillez sur vos enfants, même à distance

Kaspersky VPN Secure Connection
Sécurité VPN ultra rapide

Kaspersky Standard
Proteção aprimorada com otimização de desempenho do dispositivo

Kaspersky Plus
Combina recursos de segurança, desempenho e privacidade em um aplicativo

Kaspersky Small Office Security
Proteja a sua pequena empresa sem esforço

Kaspersky Premium
Proteção completa para seus dispositivos, privacidade online e identidade

Kaspersky Password Manager
Suas senhas e documentos sempre disponíveis

Versão Premium
Kaspersky Safe Kids
Fique de olho nas crianças, mesmo quando não estiver por perto

Kaspersky VPN Secure Connection
Segura. Privada. Excepcionalmente rápida. Como a internet deveria ser.

Kaspersky Standard
Protezione avanzata con ottimizzazione delle prestazioni dei dispositivi

Kaspersky Plus
Sicurezza. Prestazioni. Privacy. Tutto in un’app semplice da usare.

Kaspersky Small Office Security
Protezione immediata delle piccole aziende

Kaspersky Premium
Protezione completa per dispositivi, identità e privacy

Kaspersky Password Manager
Password e documenti sempre a portata di mano

Versione premium
Kaspersky Safe Kids
Accertati che i tuoi figli siano al sicuro, anche quando non sei con loro

Kaspersky VPN Secure Connection
Sicurezza VPN alla velocità della luce

Kaspersky Standard
Не просто антивирус. Обновленная защита для всех устройств

Kaspersky Plus
Безопасность, производительность и приватность в одном приложении

Kaspersky Small Office Security
Защитить свой бизнес просто

Kaspersky Premium
Комплексное решение для защиты вашей цифровой жизни

Kaspersky Password Manager
Ваши пароли и документы всегда под рукой

Премиум версия
Kaspersky Safe Kids
Ваши дети в безопасности, даже когда вы не рядом

Kaspersky Secure Connection
Простое решение для защиты конфиденциальности и безопасности ценных данных

Kaspersky Standard
Enhanced protection with device performance booster

Kaspersky Plus
Security. Performance. Privacy. All in one easy-to-use app.

Kaspersky Small Office Security
Protect your small business effortlessly

Kaspersky Premium
Complete protection for your devices, privacy, and identity

Kaspersky Password Manager
Your passwords and docs — always on hand
Эксплуатация уязвимостей класса MS17-010

Уязвимости, описанные в MS Security Bulletin под номером 17-010, прогремели в 2017 году на весь мир. И было отчего! На базе этих уязвимостнй NSA разработало атаку EternalBlue («Вечная синева», «бесконечная грусть»), которую и использовало задолго до официального обнаружения уязвимости. Вместе с бэкдором DoublePulsar атака EternalBlue входила в набор утилит NSA, который стал доступным общественности благодаря действиям хакерской группы Shadow Brokers. Стоит отметить, что утилиты NSA были существенно доработаны исследователем Шоном Диллоном. На базе этих же уязвимостей функционируют многие зловреды, например: WannaCry, NotPetya и Retefe.
Эта весьма серьёзная проблема затрагивает операционные системы Windows. Подробную информацию о версиях можно (и нужно) получить на сайте производителя, то есть Microsoft: https://docs.microsoft.com/en-us/security-updates/securitybulletins/2017/ms17-010 . В большой таблице за EternalBlue ответственна CVE-2017-0144.
Даже не владеющему английским языком читателю будет несложно увидеть, что в списке присутствуют: Windows Vista, 7, 8.1, 10; Windows Server 2008, 2012, 2016 — то есть вполне современные версии ОС, широко представленные в сетях компаний, которые могут оказаться целью хакерской атаки. Windows XP, 8, Windows Server 2003 также подвержены этой проблеме. Из бюллетеня видно, что MS17-010 включает в себя несколько различных программных ошибок в Windows SMB Server, точнее в SMBv1.
Что же это за сервис и насколько широко он используется?
SMB — server message block — протокол, позволяющий компьютерам в локальной сети получать доступ к совместным ресурсам (shared resources), таким как файлы и принтеры, видеть друг друга в локальной сети и т.п.. Полное описание сильно выходит за рамки данной статьи, но что важно: SMB жизненно важен для функционирования Windows и всегда присутствует в системе. До 2006 года существовала только версия SMBv1, как раз та, которую эксплуатирует EternalBlue. Windows Vista и 8, хотя и поддерживают вторую версию протокола, переходят на первую в случае, если их визави отказывается от использования SMBv2. Системы, где поддержка SMBv1 отсутствует по умолчанию — Windows 10 Fall Creators Update и Windows Server, version 1709 (RS3) *1 . Поддержка SMBv2 в Linux ядрах появилась только с версии 3.7, Apple добавил поддержку SMBv2 в версии OS X 10.9.
Таким образом можно сделать вывод, что в большинстве более-менее крупных сетей шансы встретиться с хостом, отвечающим по SMBv1, достаточно велики.
Что же даёт эксплуатация такой уязвимости?
Возможности, которые получает атакующий, почти безграничны! В случае удачной атаки хакер получает возможность исполнения на хосте-жертве произвольного кода с привилегиями System — наивысшими возможными в Windows. Вот только некоторые из возможных последствий: получение полной конфигурации (и перечня защитных механизмов, то есть конфигурация Windows Defender, установленные HIDS и их конфигурация и так далее), утечка информации о пользователях и их правах, утечка хэшей паролей (с последующим перебором для восстановления паролей), утечка информации kerberos (с последующим восстановлением паролей и генерацией серебряных билетов) — то есть в перспективе полная компрометация всего домена.
Немного теории
Проблема возникает при сбое в обработке SMB-запроса (естественно, в связи с тем, что он некорректно составлен). Структура сообщений SMB задокументирована и доступна на сайте Microsoft *2 . В рамках MS17-010 рассматриваются девять различных багов. Самыми интересными из них являются: Wrong type assigment in SrvOs2FeaListSizeToNt(), приводящая к переполнению буфера и Transaction secondary can be used with any transaction type, который заключается в том, что сервер не проверяет последовательность команд при выполнении SMB-транзакции, что приводит к возможности посылки очень больших сообщений (что необходимо для того, чтобы затриггерить предыдущий баг). Таким образом, для эксплуатации бага необходимо иметь возможность посылать транзакционные команды и иметь доступ к любой share (вполне подходит IPC$).
Идеальным вариантом для эксплуатации является система с версией ниже Win8, так как в этом случае нам будут доступны anonymous (NULL) session, то есть для успешной эксплуатации не требуется никаких дополнительных знаний о пользовательских аккаунтах или named pipes.
Эксплуатация уязвимости
Итак, довольно скучной теории, переходим к практике. Что же нам понадобится, чтобы захватить уязвимый хост?
Во-первых, машина, на которой мы сможем запускать наши скрипты. Я использую kali Linux, один из стандартных дистрибутивов для специалиста по кибербезопасности. Вы можете использовать любую машину с установленным интерпретатором python. Вычислительная мощность и скорость подключения к сети особого значения не имеет (в разумных пределах).
Во-вторых, для обнаружения уязвимых хостов удобно использовать утилиту nmap. Этот известный продукт вот уже десятилетия незаменим при сканировании сетей. Нам он понадобится для определения версии ОС и используемого протокола SMB. Такое предварительной сканирование в большой сети позволит сразу очертить круг потенциальных целей и в дальнейшем не тратить время на неподходящие хосты.
В-третьих, для генерации «полезной нагрузки» удобно использовать утилиту msfvenom, которая сама по себе достойна отдельной статьи. В случае её отсутствия можно использовать готовые шеллкоды, но я не рекомендую этот вариант, не только по причинам небезопасности неизвестного шеллкода, но и по причинам ограниченности такого подхода (вряд ли вы найдёте шеллкод с реверс-шеллом на нужный вам ip и порт).
В-четвёртых, metasploit. Конечно, можно использовать его встроенные модули для эксплуатации MS17-010, но в этой статье мы будем использовать более гибкий метод, а metasploit будет исползоваться исключительно для поиска named pipes, если такая необходимость возникнет.
И, наконец, наша звезда — набор утилит для эксплуатации. В этой статье используется набор, который можно загрузить с GitHub из репозитория пользователя worawit: https://github.com/worawit/MS17-010 . Скачайте его либо командой
git clone https://github.com/worawit/MS17-010.git
либо как архив — как вам удобнее.
Также необходимо некоторое количество потенциально уязвимых хостов, на которых у вас есть разрешение на проведение тестов. Если у вас есть выбор, попробуйте Windows 2000, Windows 7, Windows 8 и Windows Server 2012 — чтобы оценить различные варианты работы скриптов.
Работа строится по несложному алгоритму: сканирование портов, определение версии ОС, проверка возможности эксплуатации уязвимости, атака. При необходимости — коррекция ошибок и повторная атака.
При первом сканировании мы устанавливаем, какие открытые порты имеются в системе. Имеет смысл вначале проводить только сканирование TCP портов — как правило оно даёт достаточно информации. UDP-сканирование значительно медленнее.

- Nmap — TCP сканирование с попыткой установления соединения
На рисунке представлено сканирование выбранного хоста (10.11.1.227) по протоколу TCP типа попытки установления соединения на 50 наиболее часто спользуемых портов (по данным разработчиков nmap). Дополнительно имеет смысл использовать ключи -oN (сохранение результата в файл) или даже -oA, если планируется использовать автоматические системы анализа, -vv, если необходима дополнительная информация и -Pn, если хост не отвечает на пакеты ping (или если мы точно знаем, что он доступен).
Поскольку сканирование прошло очень быстро, можно провести и UDP-scan. Его результат приведён на рисунке 2.

Итак мы видим, что перед нами явно Windows — по характерному набору открытых портов. Кроме того, мы можем предположить, что данный хост используется в качестве сервера (запущены сервисы ftp, smtp, http, snmp). Это интересная цель.
Для более подробного определения ОС можно использовать ключ nmap -O, однако можно попробовать получить необходимую информацию и во время сканирования smb сервиса, который, как мы видим, доступен. Результаты приведены на рисунке 3.

Я намеренно не использую группу скриптов smb-vuln*, поскольку существует небольшая вероятность вызвать сбой на исследуемом хосте. Мы видим, что данное сканирование достаточно шумно, но SMBv1 настолько «разговорчив» сам по себе, что такое сканирование не обязательно будет выделяться в общем потоке трафика.
Результаты сканирования показывают, что:
1) мы имеем дело с Windows 2000 — потенциально уязвимой системой;
2) IPC$ доступен для чтения анонимному пользователю (Null session) и для чтения и записи пользователю «Guest» — то, что нужно для запуска эксплойта
3) есть ещё доступная сетевая папка — её содержимое, безусловно, нас интересует, но не входит в рамки данной статьи.
Для полной уверенности в том, что наша цель уязвима, используем скрипт checker.py из скачанного набора.

Результат работы скрипты показывает, что цель уязвима, а также показывает некоторые из доступных named pipes. Кроме того, мы видим, что эта система 32-битная (для Win2k это очевидно, но для других ОС возможны варианты).
Теперь нам нужно выбрать подходящий скрипт из набора. Для этого нужно заглянуть в файл README.md. Видим: «zzz_exploit.py Exploit for Windows 2000 and later (requires access to named pipe)». Заглянем внутрь этого скрипта (для краткости приведена только наиболее интересная часть листинга):

- Выдержка из листинга zzz_exploit.py
Мы видим, что сейчас запуск этого эксплойта приведёт к созданию файла «pwned.txt» на целевой системе. Однако скрипт легко изменить таким образом, чтобы загрузить и исполнить произвольный файл.
Вначале посмотрим, как отрабатывает скрипт в исходном варианте:

Мы видим, что всё прошло успешно и файл был создан. Однако, интересно протестировать и более агрессивный вариант. Модифицируем файл эксплойта — например на рисунке ниже добавлен код, загружающий на устройство reverse shell (и вызывающий его, конечно же), а также создающий пользователя, добавляющий его в группу локальных администраторов, открывающий доступ по RDP и отключающий фаервол.

Конечно в реальности мы будем использовать только один из вариантов, но в качестве примера такой листинг удобен.
Для того, чтобы всё это сработало в полном объёме, нужен собственно reverse shell, который мы хотим запустить. Для того, чтобы его сделать, в свою очередь, нужна утилита msfvenom.
Вот таким образом мы можем создать эксплойт, который будет открывать reverse shell на указанный нами адрес и порт:

- Генерация payload’a с помощью msfvenom
В качестве ОС для нашей нагрузки мы указываем windows — что соответствует 32-битной версии. Для 64-битной строка будет выглядеть как windows/x64. В качестве желаемой нагрузки выбран reverse TCP shell без предзагрузчика (non-staged payload). В параметрах указан ip адрес и порт, на которые мы хотим открыть соединение (в данном случае наша Кали). Exitfunc=thread позволит нашему процессу выполняться в отдельном треде (и не завершиться по окончании основного процесса, а продолжить работу). Также указываем формат вывода — hexadecimal codes для eternalblue_exploit7.py (подробнее чуть ниже) и exe для zzz_exploit.py. Последний штрих — имя файла, в который сохраняется payload. Я предпочитаю давать эксплойтам названия, включающие некоторую информацию о том, как их предполагается использовать, но в целом это дело вкуса.
Обратите внимание, что в коде эксплойта выше указано другое название payload’a. Этот момент нужно подправить перед запуском — если вы собираетесь использовать эксплойт часто, имеет смысл добавить имя файла в возможные агрументы командной сроки.
Вот результат успешного выполнения скрипта на Win8:

Мы видим, что RDP соединение готово к установке. Cоглашаемся принять сертификат и видим десктоп:

Поскольку наш пользователь входит в группу локальных администраторов, нам открываются широкие перспективы по разработке захваченной системы, но это тема для отдельной статьи.
Похожим образом используются и другие скрипты. Однако для eternalblue_exploit*.py подготовка payload’a выглядит чуть интереснее. Вначале мы собираем shellcode c помощью nasm

Затем генерируем payload. Если используется нагрузка в виде reverse shell’a, то можно склеить вместе версии для 32 и 64-битных ОС. Если же хочется, например, добавить пользователя, то мы ограничимся 32-битной архитектурой (работать будет и на 64-битной системе). Для склейки в наборе утилит есть скрипт eternalblue_sc_merge.py

Перед запуском мы стартуем наш листенер (nc). Порты ниже 1024 требуют привилегий root. Порт 443 выбран из тех соображений, что он как правило открыт на фаерволе для исходящих соединений, и в то же время не подвергается синтаксическому анализу запросов (как, например, ftp или http).
Что может пойти не так?
- Конфигурация системы (то есть в первую очередь конфигурация фаервола) может запрещать исходящие соединения от недоверенных программ. Именно поэтому добавление пользователя и подключение RDP ак правило проходит проще, чем запуск reverse shell. Также в системе может быть отключен SMBv1, что делает её неподверженной атаке.
- В системе может быть установлен патч от Microsoft. Ничего не поделаешь, система неуязвима для рассматриваемого типа атак. О таком развитии событий нас вовремя предупредит checker.py.
- Новые версии Windows не содержат этой уязвимости. При первичном сканировании вы увидите, что система не подвержена этой уязвимости. Также, необходимо правильно выбрать скрипт исходя из атакуемой версии. Вот пример неправильно выбранной версии (эксплойт для Win7, система Win8.1)

12. Результат работы неверно выбранного скрипта
Корректируем наш выбор и получаем долгожданный доступ. Этот шелл не полностью интерактивен, как и положено шеллу нетката, но «улучшение» доступа — это отдельная интересная тема.

После получения удобного доступа мы можем исследовать систему для получения дополнительной информации, собирать хэши паролей, добавлять пользователей, изменять настройки фаервола для сохранения доступа к системе (например, через rdp).
Поиск named pipe
Используемые эксплойтом named pipes могут быть недоступны. В таком случае нам понадобится найти подходящую named pipe. Для этого будем использовать metasploit. Утилита проводит перебор известных named pipes, лист можно дополнять. Можно написать и свой скрипт, но это отдельная тема.

В качестве RHOSTS необходимо указать атакуемую систему. SMBUser и SMBPass могут использоваться, если известна какая-либо учётная запись в системе. Выше было показано, что пользователь Guest не отключен — значит его можно использовать.


16. Доступные named pipes на Win2k
В случае, если Guest отключен, на системах новее Win8 нам понадобится найти учётную запись любого непривилегированного пользователя. В этом случае мы можем рассматривать данную атаку исключительно как способ повышения привилегий в системе, а не как способ получения доступа.
Уже упомянутый выше фаервол может блокировать действия эксплойта. В этом случае можно попробовать разные варианты — например, часто блокируется запуск reverse shell, но удаётся выполнить команды net и netsh, что позволит отключить фаервол, добавить пользователя, или же просто снять необходимые данные с помощью эксплойта.
Методы защиты от атаки логически вытекают из используемых для атаки методов.
- Отключение smbv1. Первая версия протокола SMB относится к категории deprecated. Если её отключение невозможно, необходим мониторинг SMB активности с помощью IDS.
- Установка апдейтов от Microsoft. В случае невозможности — вывод хостов из эксплуатации с заменой на современные версии ОС.
- Хорошей стратегией в большой сети будет мониторинг сетевого трафика с выявлением станций, использующих SMBv1. Далее необходимо провести анализ возможности отключения SMBv1 на них, а в случае невозможности — анализ целесообразности использования этих хостов, возможности временной изоляции за WAF, а также планирование их последующей модернизации.
Использованные материалы:
- https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/smbv1-not-installed-by-default-in-windows
- https://msdn.microsoft.com/en-us/library/ee441702.aspx
Как защищаться от атаки вируса-шифровальщика «WannaCry»

Данная статья подготовлена в связи в хакерской атакой массового характера в мировом масштабе, которая может коснуться и вас. Последствия становятся действительно серьезными. Ниже вы найдете краткое описание проблемы и описание основных мер, которые необходимо предпринять для защиты от вируса-шифровальщика семейства WannaCry.
Вирус-шифровальщик WannaCry использует уязвимость Microsoft Windows MS17-010, чтобы выполнить вредоносный код и запустить программу-шифровальщик на уязвимых ПК, затем вирус предлагает заплатить злоумышленникам порядка 300$, чтобы осуществить расшифровку данных. Вирус широко распространился в мировых масштабах, получив активное освещение в СМИ – Фонтанка.ру, Газета.ру, РБК.
Данной уязвимости подвержены ПК с установленными ОС Windows начиная с XP и до Windows 10 и Server 2016, официальную информацию об уязвимости от Microsoft вы можете прочитать здесь и здесь.
Эта уязвимость относится к классу Remote code execution, что означает, что заражение может быть произведено с уже зараженного ПК через сеть с низким уровнем безопасности без сегментирования МЭ — локальные сети, публичные сети, гостевые сети, а также путем запуска вредоноса полученного по почте или в виде ссылки.
Меры безопасности
Какие меры необходимо выделить как эффективные, для борьбы с данным вирусом:
-
Убедитесь, что у вас установлены актуальные обновления Microsoft Windows, которые убирают уязвимость MS17-010. Найти ссылки на обновления вы можете здесь, а также обратите внимание, что в связи с беспрецедентной серьезностью данной уязвимости — 13-го мая были выпущены обновления для неподдерживаемых ОС (windowsXP, 2003 server, 2008 server) их вы можете скачать здесь.
Еще больше рекомендаций и пример отчета о блокировке работы шифровальщика wannacry тут.
Уважаемые коллеги, основываясь на опыте работы с предыдущими массированными атаками, такими как Heart Bleed, уязвимость Microsoft Windows MS17-010 будет активно эксплуатировать на протяжении ближайших 30-40 дней, не откладывайте меры противодействия! На всякий случай, проверьте работу вашей BackUp системы.
Риск действительно большой!
UPD. В четверг, 18 мая, в 10.00 по Московскому времени, мы приглашаем вас на вебинар о вымогательском программном обеспечении и способах защиты.
- Атака #WannaCry
- Масштаб и текущее состояние
- Особенности
- Факторы массовости
- IPS + AM
- SandBlast: Threat Emulation и Threat Extraction
- SandBlast Agent: Anti-Ransomware
- SandBlast Agent: Forensics
- SandBlast Agent: Anti-Bot