Несмотря на несколько академичное название, тема носит вполне себе практичный характер.
Когда мы видим заголовки новостей об очередном успешном взломе чатов Telegram или WhatsApp (ЦРУ, Иранскими спецслужбами, Zimperium – нужное подчеркнуть), людям достаточно часто приходится объяснять, что компрометация операционной системы или аккаунта пользователя не является синонимом слабости защиты самого приложения, и это не является поводом отказаться от пользования своим любимым мессенджером, т.к. на его месте может оказаться без принципиальной разницы любой другой.
А если вы, например, загрузившись с флэшки «перезабиваете» пароли администратора любой своей Windows-машины, это отнюдь не говорит о чудовищных дырах в «мастдае», а о вас – как о супер-хакере, взломавшем детище Microsoft.
Хотелось бы немного прояснить вопросы среды, компонентов доверия и угроз, чтобы создать целостную картинку и разобраться в том, чего мы ждём в плане безопасности от операционной системы, BIOS и любимого чат-приложения, дабы не перекладывать ответственность с больной головы на здоровую.
Итак, начнём с практики, есть следующий кейс:
Вы после успешного празднования дня системного администратора, забыли все свои логины и пароли для входа в систему и не можете работать со своими компьютерами. Как вернуть доступ? Рассмотрим на примере двух популярных ОС: Ubuntu и Windows (MacOS рассмотрим попозже).
Сброс забытого пароля в ОС Ubuntu
Сценарий 1. Есть доступ к меню выбора операционных систем GRUB.
Если у вас при загрузке компьютера появляется меню выбора операционных систем, то, скорее всего, у вас в нём есть пункт, обозначенный как recovery mode.
Загрузитесь в него, в Меню восстановления выберите root для перехода в командный интерпретатор суперпользователя.
У вас запустится консоль с правами root.
Если у вас одна операционная система, то для отображения меню загрузчика GRUB при загрузке необходимо удерживать кнопку Shift (или ESC на некоторых компьютерах). Если это не срабатывает, то попробуйте при загрузке компьютера (когда вы видите заставку Ubuntu) нажать на кнопку Reset на системном блоке компьютера, при следующей загрузке меню GRUB отобразится без каких-либо манипуляций.
- Сначала необходимо перевести корневую файловую систему в режим записи
mount -no remount,rw /
- Теперь для установки нового пароля достаточно выполнить команду
passwd имя_пользователя
где вместоимя_пользователя
подставить имя нужного пользователя, а потом выполнить
reboot
для перезагрузки компьютера.
Если пункта recovery mode нет, то:
- выберите строчку с вашей системой;
- нажмите клавишу E;
- допишите в конец опций ядра слово single;
- нажмите клавишу B.
Загрузится тот же терминал с правами суперпользователя.
Сценарий 2. Меню выбора операционных систем GRUB недоступно.
Если у вас по тем или иным причинам отключён выбор операционных систем при загрузке, то пароль можно сбросить с помощью любого Live CD с Linux. Для этого необходимо загрузиться с Live CD, примонтировать ваш корневой раздел, а далее установить пустой пароль пользователю путём редактирования файла etc/shadow на этом разделе.
Пустой пароль поставить можно на любого пользователя, кроме root.
Примечание: Вообще говоря, никакими инструментальными средствами Ubuntu нельзя установить пользователю пустой пароль. Все графические утилиты требуют пароль минимум из 6-ти символов, а программа passwd умеет устанавливать любой пароль, кроме пустого. Однако всё же существует способ задания пользователю пустого пароля.
Примечание: Возможность ввода пустого пароля отсутствует не зря. Пустой пароль является огромной потенциальной дырой в безопасности системы.
Нам потребуется изменить системный файл /etc/shadow, поэтому крайне рекомендуется перед выполнением дальнейших действий сделать резервную копию:
sudo cp /etc/shadow /etc/shadow.bak
Теперь в любом текстовом редакторе от имени root откройте файл /etc/shadow, найдите строку, начинающуюся с логина нужного пользователя, и удалите всё между первым и вторым двоеточием в этой строке. Например, была такая строка:
admin:$6$eZ1pQKRK$tGvrlJnV7NU/anEFoxRCluIbe5kSNE2x2uqRrw62xHVrQPWKKbfYZ0cvdmgxXAcrGxBngPM7HnrrKxdmNwp0:14371:0:99999:7:::
Для задания пустого пароля пользователю admin необходимо привести её в обоих файлах к виду:
admin::14371:0:99999:7:::
После этого пароль пользователя admin станет пустым.
Теперь можно перезагрузиться в нашу систему и войти с пустым паролем. Не забудьте установить после сброса нормальный пароль администратору
Как сбросить пароль ОС Windows 10
Рассмотрим два сценария для сброса пароля локального пользователя в Windows 10.
Сценарий 1. Подмена исполняемого файла.
Для использования данного способа потребуется одно из: Live CD с возможностью загрузки и доступа к файловой системе компьютера, диск (флешка) восстановления или дистрибутив Windows 10, 8.1 или Windows 7. Далее будет рассмотрен сброс пароля с помощью средств восстановления Windows на установочной флешке.
Первым шагом будет загрузка с одного из указанных накопителей. После загрузки и появления экрана выбора языка установки нажмите клавиши Shift + F10. Это вызовет появление командной строки. Если ничего подобного не появляется, вы можете на экране установки, после выбора языка, слева внизу выбрать пункт «Восстановление системы», затем зайти в Устранение неполадок — Дополнительные параметры — Командная строка.
В командной строке введите по порядку команды (после ввода нажать Enter):
diskpart
list volume
Вы увидите список разделов на жестком диске. Найдите букву раздела, на котором установлена Windows 10. Введите команду Exit и нажмите Enter для выхода из DiskPart. Используя букву раздела (С) в командах, следует ввести далее:
move c:windowssystem32utilman.exe c:windowssystem32utilman2.exe
copy c:windowssystem32cmd.exe c:windowssystem32utilman.exe
Если все прошло успешно, введите команду wpeutil reboot для перезагрузки компьютера (можно перезагрузить и по-другому). В этот раз загрузитесь с вашего системного диска, а не с загрузочной флешки или диска.
Примечание: если вы использовали не установочный диск, а что-то еще, то ваша задача с помощью командной строки, как было описано выше, или другими средствами, сделать копию cmd.exe в папке System32 и переименовать эту копию в utilman.exe.
После загрузки в окне ввода пароля нажмите на иконку «Специальные возможности» внизу справа. Откроется командная строка Windows 10.
В командной строке введите net user имя_пользователя новый_пароль и нажмите Enter. Если имя пользователя состоит из нескольких слов, используйте кавычки. Если вы не знаете имени пользователя, используйте команду net user, чтобы посмотреть список имен пользователей Windows 10. После смены пароля, вы сразу же сможете зайти под новым паролем в учетную запись.
Сценарий 2. Правка реестра.
Есть еще один интересный, простой и работающий способ сброса пароля. Здесь также потребуется либо загрузочный дистрибутив с ОС, либо диск восстановления, либо сторонний Live CD со средствами редактирования реестра.
Суть способа в следующем:
- Загрузиться с накопителя, в программе установки нажать Shift + F10, чтобы открыть командную строку.
- Ввести regedit и нажать Enter для запуска редактора реестра.
- В редакторе реестра выбрать раздел HKEY_LOCAL_MACHINE после чего в меню выбрать «Файл» — «Загрузить куст» и открыть файл C: Windows System32 config system
- При запросе имени раздела, указать любой.
- Внутри HKEY_LOCAL_MACHINE загруженного куста (раздела реестра) с указанным вами именем выбрать раздел setup и в правой части изменить следующие значения (путем двойного клика по ним).
- CmdLine — установить значение cmd.exe
- SetupType — установить значение 2.
- В редакторе реестра выбрать «Файл» — «Выгрузить куст» и подтвердить выгрузку.
После этого закройте редактор реестра, командную строку, выйдите из программы установки и загрузитесь с жесткого диска компьютера. При загрузке Windows 10 откроется командная строка, в которой вы сможете сбросить пароль путем ввода:
net user имя_пользователя новый_пароль
Для продолжения загрузки ОС, наберите в командной строке exit и нажмите Enter. Каким-либо образом возвращать параметры в исходное состояние не потребуется: параметр SetupType в реестре вернется к значению 0.
Что это было?
Вот здесь как раз и всплывают вопросы среды и доверия к ней.
Итак, что произошло выше?
Фактически мы отстранили от управления штатно установленную операционную систему и загрузили другую среду (с Live-носителя или загрузчика), которая и обеспечила нам доступ к системному носителю с целью перезаписи (сброса) хэшей забытых паролей.
Концептуально это означает то, что компьютерная система подобно зданию строится на фундаменте (причем не одном), и если безопасность не обеспечена на самом нижнем уровне, то всё рухнет вне зависимости от толщины стен и надёжности сигнализации на 110-м этаже.
В IT мы фактически говорим о вложенных средах, каждый компонент выполняется внутри (в среде) компонента более низкого уровня, используя его сервисы. Например, браузер использует вызовы операционной системы для распределения памяти под веб-страницу, открытия/закрытия портов для сетевых соединений.
Ниже приведена иерархия вложенности системных сред, задача полной их систематизации не стояла:
Соответственно, если присутствует некорректная конфигурация или уязвимость компонента нижнего уровня, например ошибка в микрокоде BIOS, то закрыть её на более высоком уровне (например, на уровне «хостовой» ОС») либо сложно, либо практически невозможно. В общем-то это так же бесперспективно, как надеяться заделать трещины в стенах здания с покосившемся фундаментом.
Как же нам получить надёжное здание? В IT это называют доверенные системы (trusted systems) или доверенной средой/платформой (trusted platform).
Понятие «доверенная среда» на текущий момент не имеет устоявшегося определения, специалисты не могут сойтись во мнениях, а в нормативной базе, строго говоря, термин «доверенный» не определен. Само понятие «доверенная среда» появилось уже после "доверенная система", введённого ещё в 1983г. в так называемой Оранжевой книге (TSSEC — Trusted Computer System Evaluation Criteria), явившейся исходным материалом для ряда руководящих документов Гостехкомиссии РФ, например, РД АС.
Под доверенной системой в стандарте понимается система, использующая аппаратные и программные средства для обеспечения одновременной обработки информации разной категории секретности группой пользователей без нарушения прав доступа.
Одним из технических средств обеспечения доверенной системы является средство доверенной загрузки. Основная функция доверенной загрузки – загрузка системы только с заранее определенных носителей, после успешного прохождения процедуры проверки целостности и подтверждения своих полномочий, путем идентификации и аутентификации пользователя.
Заключение
В следующих статьях мы рассмотрим способы защиты от атак, описанных выше, с использованием механизма доверенной загрузки, для этого изучим классический сценарий загрузки ЭВМ и в целом поймём, как концептуально строятся защищенные системы. Рассмотрим загрузку ЭВМ с использованием средств доверенной загрузки (СДЗ) и сравним СДЗ с протоколом Secure Boot (UEFI).
Литература
- ГОСТ Р 54583-2011/ISO/IEC/TR 154443-3:2007. Информационная технология. Меры и средства обеспечения безопасности. М.: Стандартинформ. 2013.;
- ГОСТ Р ИСО/МЭК 15408-3-2002. Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 3. Требования доверия к безопасности;
- Цирлов В.Л. Основы информационной безопасности автоматизированных систем, Краткий курс. — Ростов-на-Дону: Феникс, 2008. — 253 с.;
- Авезова Я.Э., Фадин А.А. Вопросы обеспечения доверенной загрузки в физических и виртуальных средах // Вопросы кибербезопасности. 2016. № 1(14). С. 24-30;
- Сведения о реестре Windows для опытных пользователей, https://support.microsoft.com/ru-ru/help/256986/windows-registry-information-for-advanced-users;
- Пользовательская документация на Ubuntu, http://help.ubuntu.ru/wiki/пустой_пароль;
- Trusted Computer System Evaluation Criteria, http://csrc.nist.gov/publications/history/dod85.pdf;
- Руководящий документ. Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации. М.: Гостехкомиссия России, 1992.
Автор: Эшелон