Научная статья на тему 'Анализ методов хранения пользовательских паролей в оС Windows'

Анализ методов хранения пользовательских паролей в оС Windows Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
464
51
Читать
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОЛЬЗОВАТЕЛЬ / ПАРОЛЬ / АУТЕНТИФИКАЦИЯ / АУДИТ / ПРИЛОЖЕНИЯ / WINDOWS / USER / PASSWORD / AUTHENTICATION / AUDITING / APPLICATIONS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Чернокнижный Геннадий Михайлович, Лукин Евгений Игоревич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
Предварительный просмотр
i Надоели баннеры? Вы всегда можете отключить рекламу.

ANALYSIS OF METHODS OF STORING USER PASSWORDS IN WINDOWS OS

The article discusses the results of the analysis of ways to store user passwords for authentication of login to various applications of the Windows operating system, and also describes the developed version of the audit of storage of these passwords.

Текст научной работы на тему «Анализ методов хранения пользовательских паролей в оС Windows»

УДК 004.0056

АНАЛИЗ МЕТОДОВ ХРАНЕНИЯ ПОЛЬЗОВАТЕЛЬСКИХ ПАРОЛЕЙ

В ОС WINDOWS

Г.М. Чернокнижный1, Е.И. Лукин2

Санкт-Петербургский государственный экономический университет (СПбГЭУ),

191023, Санкт-Петербург, ул. Садовая, д. 21

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

Ключевые слова: пользователь, пароль, аутентификация, аудит, приложения, Windows.

ANALYSIS OF METHODS OF STORING USER PASSWORDS IN WINDOWS OS

G. M. Chernoknizhny, E. I. Lukin

St. Petersburg state University of Economics (St. Petersburg state University),

191023, Saint-Petersburg, Sadovaya street, 21

The article discusses the results of the analysis of ways to store user passwords for authentication of login to various applications of the Windows operating system, and also describes the developed version of the audit of storage of these passwords.

Keywords: user, password, authentication, auditing, applications, Windows.

Проблема соблюдения политики безопасного хранения и использования паролей продолжает оставаться актуальной как для домашних пользователей, так и особенно, для сотрудников автоматизированных информационных систем (АИС). Причем для пользователей операционных систем (ОС) Windows это особенно актуально, поскольку, во-первых, их подавляющее большинство, и, во-вторых, они в среднем менее подготовлены в смысле информационной безопасности, чем те, кто использует Mac или Linux. По данным Positive Technologies [1] из-за слабых паролей и отсутствия двухфакторной аутентификации в 2018 году пострадали, например, пользователи сервиса Timehop, в результате чего в руках злоумышленников оказались персональные данные 21 миллиона пользователей.

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

последствиям не только для рабочей станции самого пользователя, но и для всей корпоративной сети, в которой он зарегистрирован. Особенно опасными в этом смысле являются атаки на веб-приложения, ошибки в коде которых могут повлечь за собой крупные утечки данных в результате недостаточной авторизации пользователей. Подобные атаки с использованием украденных учетных данных (credential stuffing) намного эффективнее, чем простой перебор паролей, поскольку людям свойственно использовать одинаковые учетные данные для доступа к разным системам. Злоумышленник может не только получить контроль над самими приложениями или проникнуть во внутреннюю сеть компании, но и использовать их как площадку для распространения вредоносного программного обеспечения (ПО). Наиболее атакуемыми по подбору учетных данных являются инфраструктура АИС, веб-ресурсы и пользователи.

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

1 Чернокнижный Геннадий Михайлович - кандидат технических наук, доцент, СПбГЭУ, тел. +7(911) 919-55-49, e-mail: chernokniznyy.g@unecon.ru;

2Лукин Евгений Игоревич, студент СПбГЭУ, тел. +7(931)2271998, e-mail: genya.lukin@yandex.ru

46

СПбГЭУ

То же самое касается корпоративных аккаунтов. Любой сохраненный пароль вида address@companyName.domain может представлять ценность для атакующего, так как такой пользователь считается доверенным в системе.

Для анализа возможности кражи парольной информации был разработан проект с открытым исходным кодом (библиотека и программа) для аудита безопасности под названием goLazagne [2]. Она осуществляет проверку сохраненных локальных баз с паролями на компьютере, ищет файлы с чувствительной информацией (sensitive information), раскрытие которой может нанести вред пользователю или компании.

Аналогичная программа написана на языке python и имеет скомпилированную при помощи py2exe версию.

Данное ПО, по мнению авторов, имеет несколько недостатков:

- нет варианта использования в виде библиотеки и возможности встраиваться в другие проекты, так как программа выполнена в виде цельного проекта;

- код на python требует для запуска наличия виртуальной машины python и дополнительных библиотек, которые необходимо до-устанавливать отдельно. Скомпилированная версия данной программы при помощи программы py2exe не всегда стабильна и это может повлиять на ход аудита;

- отсутствует сканирование файловой системы на предмет наличия vpn- конфигураций или баз данных паролей.

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

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

В качестве языка для программной реализации решаемых задач выбран Golang (GO), так как, с одной стороны, скорость разработки на данном языке выше, чем на языках C и C++, с другой - он построен с учетом параллелизма для работы на многоядерных процессорах. Программы на данном языке компилируются в portable executable (PE) и executable and linkable format (ELF). Это освобождает от использования дополнительного ПО для запуска программы.

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

Веб-браузеры

Браузеры, основанные на движках WebKit (Google Chrome, Opera, Yandex Browser, Vivaldi, Chromium, Amigo, Sputnik) для хранения сохраненных паролей используют базу типа sqlite (встраиваемая, кроссплатформенная), которая, например, расположена в браузерах по следующему пути:

- Google Chrome - APPDATA\ Google\ Chrome\ User Data;

- Opera - APPDATA \Opera Soft-ware\Opera Stable;

- Yandex Browser - APPDATA\ Yandex\ YandexBrowser\User Data.

Подключение к базе данных под названием Login Data, где находятся сохраненные пароли в зашифрованном виде, выполняется по следующему запросу:

"SELECT action_url, username_value, password_value FROM logins", где:

- action_url это URL-адрес сайта для сохраненных учетных данных;

- username_value - логин;

- password_value - пароль в зашифрованном виде.

Сами пароли зашифрованы при помощи WinApi функции CryptProtectData и легко поддаются расшифровке при помощи функции CryptUnprotectData.

Пример кода расшифровки: func Win32CryptUnprotectData(cipherText string, entropy bool) string{ var (

dllcrypt32 =

syscall.NewLazyDLL("Crypt32.dll")

dllkernel32 =

syscall.NewLazyDLL("Kemel32.dll")

procDecryptData = dll-

crypt32.NewProc("CryptUnprotectData")

procLocalFree = dllker-

nel32.NewProc("LocalFree") )

var outblob DATA_BLOB var inblob = NewBlob([]byte(cipherText)) procDecrypt-Data.Call(uintptr(unsafe.Pointer(inblob)), 0, 0, 0, 0, 0, uintptr(unsafe.Pointer(&outblob)))

defer pro-

cLocalFree.Call(uintptr(unsafe.Pointer(outblob.pb Data)))

return string(outblob.ToByteArray())

}

data = append(data, com-

mon.UrlNamePass{actionUrl, username, com-mon.Win32CryptUnprotectData(password, false)})

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

На основе движка Quantum/Gecko работают, например, браузер Mozilla Firefox и почтовый клиент Thunderbird, которые для хранения учетных данных используют свою, более

Г.М. Чернокнижный, Е.И. Лукин

сложную схему хранения. Приведем упрощенный алгоритм получения учетных данных и последующей расшифровки:

- получить список профилей для целевого браузера.

- получить ключ из базы данных key4.db, расположенной внутри директории профиля.

- выполнить запрос:

"SELECT iteml, item2 FROM metadata WHERE id = 'password'",

где item1 - глобальная соль, которая используется для усиления шифрования,

item2 - данные для проверки соответствия мастер-пароля;

- если не используется мастер-пароль, то выполнить запрос для получения ключа:

"SELECT a11, a102 FROM nssPrivate", где a11 это соль и зашифрованный ключ, хранящиеся в формате ASN1;

- произвести дешифровку ключа при помощи алгоритма 3DES;

- получаем зашифрованные учетные данные, которые хранятся в формате JSON;

- дешифровать логин и пароль.

Пароли WiFi, которые сохранены пользователем

Разница между WPA2-PSK и WPA2 Enterprise состоит в том, откуда берутся ключи шифрования, используемые в механике алгоритма AES. Для частных (домашних, небольших) применений используется статический ключ (пароль, кодовое слово, PSK (Pre-Shared Key)) минимальной длиной 8 символов, который задается в настройках точки доступа, и у всех клиентов данной беспроводной сети будет одинаковым. Компрометация такого ключа (физический доступ к ноутбуку, методы социальной инженерии, недобросовестные сотрудники и т.д.) требует немедленной смены пароля у всех оставшихся пользователей, что реально только в случае небольшого их числа. Для корпоративных применений (Enterprise) используется ключ, индивидуальный для каждого работающего клиента в данный момент. Этот ключ может периодически обновляться по ходу работы без разрыва соединения, и за его генерацию отвечает дополнительный компонент — сервер авторизации, как правило это RADIUS-сервер.

В WPA2 PSK любой сохраненный пароль от WiFi сохраняется в открытом виде и можно получить доступ к паролю при помощи утилиты командной строки netsh: netsh wlan show profiles Profiles on interface Беспроводная сеть: Group policy profiles (read only) User profiles

R2D2 5Ghz

kerbyphone

SPb Free Wi-Fi

UneconWiFi

R2D2

VSIP

All User Profile All User Profile All User Profile All User Profile All User Profile All User Profile Таким образом выведен список всех сохраненных профилей беспроводных сетей.

Далее нужно сделать запрос вида: netsh wlan show profile %profilename% key=clear: netsh wlan show profile kerbyphone key=clear

Profile kerbyphone on interface Беспроводная сеть:

Applied: All User Profile Profile information

1

: Wireless LAN : kerbyphone

Version Type Name Control options : Connection mode : Connect manually Network broadcast : Connect only if this network is broadcasting

AutoSwitch : Do not switch to other

networks

MAC Randomization : Disabled Connectivity settings

Number of SSIDs SSID name Network type Radio type Vendor extension Security settings

: 1

: "kerbyphone" : Infrastructure [ Any Radio Type ] : Not present

Authentication Cipher

Authentication Cipher Security key Key Content Cost settings

: WPA2-Personal CCMP

: WPA2-Personal GCMP : Present :e4e9de950102

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

All User Profile: DESKTOP-5K45P5B 1463

Cost : Unrestricted

Congested : No

Approaching Data Limit : No Over Data Limit : No Roaming : No

Cost Source : Default

Пароль находится в поле Key Content. Аналогично можно при помощи запросов в командной строке перебрать все профили сохраненных беспроводных сетей и получить пароли для них.

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

48

СПбГЭУ

Пароли, которые сохранены

пользователем в Диспетчере учетных

данных.

Диспетчер учетных данных - Credential Manager - позволяет просматривать и удалять сохраненные учетные данные для веб-сайтов, приложений и сетей такие как имена пользователей, пароли и адреса. Данный механизм позволяет автоматически выполнять вход на компьютер, сайт, почту и т.д. Данные хранятся в так называемых хранилищах Windows (локальная папка на компьютере) в зашифрованном виде.

Например, пользователь подключается к сетевому диску, выставляя флажок «запомнить учетные данные», и его данные сохраняются в Диспетчере учетных данных.

Для получения доступа к данным используется WinApi- функция CredEnumerateW из advapi32.dll.

Этот модуль позволяет получить пароли из Диспетчера, которые туда может записывать приложение, например, git. Таким образом, злоумышленник может захватить приватные репозитории разработчиков, что может привести к компрометации исходных кодов и файлов конфигураций.

Модуль сканирования файловой

системы

Решает задачу поиска на диске файлов с интересующими расширениями, например, ovpn, key, pem, cert, ssh, KDBX:

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

- Key, pem, cert - это могут быть файлы, содержащие в себе приватные ключи для соединения по SSH, либо файлы с сертификатами SSL;

- SSH - файл с приватным ключом для подключения по SSH;

- KDBX - база данных парольного менеджера Keepass.

Код модуля сканирования написан на языке Golang. Скорость работы модуля является достаточно высокой: менее одной минуты на систему с 200 гигабайтами данных.

Алгоритм работы - обычный перебор доступных методов извлечения паролей. Программа по очереди пробует найти доступные профили браузеров, затем данные wifi, затем уже данные из хранилища windows и данные средств администрирования.

Например, извлечение данных из менеджера учетных данных Windows происходит при помощи обращения к методу Windows API CredEnumerateW.

Тестирование проводилось на виртуальной машине Windows 10 с следующим установленным ПО:

- Mozilla Firefox;

- Chromium;

- MobaXTerm;

- Putty;

- OpenVPN.

После запуска программы было извлечено 10 тестовых учетных данных из Mozilla Firefox, MS Edge, Chromium. Извлечено 7 сессий из MobaxTerm с тремя ассоциированными ключами. Найдено две конфигурации OpenVPN.

По результатам проведенного анализа можно сделать выводы и сформулировать следующие рекомендации.

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

2. Разработанные скрипты могут быть использованы в качестве автоматизированного средства анализа защищенности для проведения аудита парольной политики на компьютерах пользователей и в корпоративных Windows-сетях.

3. Сохранение в тайне пользователями своих паролей и ключей беспроводных сетей должно препятствовать доступу к ним методами социальной инженерии.

4. Следует использовать разные логины и пароли для доступа к различным ресурсам.

5. Нужно максимально ограничить привилегии пользователей.

6. Не нужно соглашаться на предложения интернет-приложений по сохранению учетных данных, а делать это только в исключительных случаях в доверенных сетях.

7. По возможности следует использовать двухфакторную аутентификацию.

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

Литература

1. Актуальные киберугрозы. III квартал 2018 года [Электронный ресурс]. URL: https ://www.ptsecurity.com/upload/corporate/ru-ru/analytics/Cybersecurity-threatscape-2018-Q3 -rus.pdf (дата обращения: 23.02.2019).

2. Allesandroz: интернет платформа [Электронный ресурс]: URL: https://github.com/AlessandroZ/LaZagne (дата обращения: 24.02.2019).

i Надоели баннеры? Вы всегда можете отключить рекламу.