У статті розглядаються результати аналізу способів зберігання призначених для користувача паролів для аутентифікації входу в різні додатки операційної системи Windows, а також описується розроблений варіант аудиту зберігання цих паролів.

Анотація наукової статті з комп'ютерних та інформаційних наук, автор наукової роботи - Чернокніжний Геннадій Михайлович, Лукін Євген Ігорович


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.


Область наук:

  • Комп'ютер та інформатика

  • Рік видавництва: 2019


    Журнал: Техніко-технологічні проблеми сервісу


    Наукова стаття на тему 'АНАЛІЗ МЕТОДІВ ЗБЕРІГАННЯ Пароль користувача В ОС WINDOWS'

    Текст наукової роботи на тему «АНАЛІЗ МЕТОДІВ ЗБЕРІГАННЯ Пароль користувача В ОС 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: Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її.;

    2Лукін Євген Ігорович, студент СПбГЕУ, тел. +7 (931) 2271998, e-mail: Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її.

    46

    СПбГЕУ

    Те ж саме стосується корпоративних акаунтів. Будь збережений пароль виду Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб побачити її. може представляти цінність для атакуючого, так як такий користувач вважається довіреною в системі.

    Для аналізу можливості крадіжки пральний інформації був розроблений проект з відкритим вихідним кодом (бібліотека і програма) для аудиту безпеки під назвою 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

    All User Profile: DESKTOP-5K45P5B тисячі чотиреста шістьдесят три

    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).


    Ключові слова: ПОЛЬЗОВАТЕЛЬ /ПАРОЛЬ /аутентифікації /АУДИТ /ДОДАТКИ /WINDOWS /USER /PASSWORD /AUTHENTICATION /AUDITING /APPLICATIONS

    Завантажити оригінал статті:

    Завантажити