Загрузка доверенной среды или лёгкий путь к паранойе в IT


    Несмотря на несколько академичное название, тема носит вполне себе практичный характер.
    Когда мы видим заголовки новостей об очередном успешном взломе чатов Telegram или WhatsApp (ЦРУ, Иранскими спецслужбами, Zimperium – нужное подчеркнуть), людям достаточно часто приходится объяснять, что компрометация операционной системы или аккаунта пользователя не является синонимом слабости защиты самого приложения, и это не является поводом отказаться от пользования своим любимым мессенджером, т.к. на его месте может оказаться без принципиальной разницы любой другой.


    А если вы, например, загрузившись с флэшки «перезабиваете» пароли администратора любой своей Windows-машины, это отнюдь не говорит о чудовищных дырах в «мастдае», а о вас – как о супер-хакере, взломавшем детище Microsoft.


    Хотелось бы немного прояснить вопросы среды, компонентов доверия и угроз, чтобы создать целостную картинку и разобраться в том, чего мы ждём в плане безопасности от операционной системы, BIOS и любимого чат-приложения, дабы не перекладывать ответственность с больной головы на здоровую.


    Итак, начнём с практики, есть следующий кейс:


    Вы после успешного празднования дня системного администратора, забыли все свои логины и пароли для входа в систему и не можете работать со своими компьютерами. Как вернуть доступ? Рассмотрим на примере двух популярных ОС: Ubuntu и Windows (MacOS рассмотрим попозже).


    Сброс забытого пароля в ОС Ubuntu


    Сценарий 1. Есть доступ к меню выбора операционных систем GRUB.


    Если у вас при загрузке компьютера появляется меню выбора операционных систем, то, скорее всего, у вас в нём есть пункт, обозначенный как recovery mode.



    Загрузитесь в него, в Меню восстановления выберите root для перехода в командный интерпретатор суперпользователя.



    У вас запустится консоль с правами root.


    Если у вас одна операционная система, то для отображения меню загрузчика GRUB при загрузке необходимо удерживать кнопку Shift (или ESC на некоторых компьютерах). Если это не срабатывает, то попробуйте при загрузке компьютера (когда вы видите заставку Ubuntu) нажать на кнопку Reset на системном блоке компьютера, при следующей загрузке меню GRUB отобразится без каких-либо манипуляций.


    1. Сначала необходимо перевести корневую файловую систему в режим записи
      mount -no remount,rw /
    2. Теперь для установки нового пароля достаточно выполнить команду
      passwd имя_пользователя
      где вместо имя_пользователя подставить имя нужного пользователя, а потом выполнить
      reboot
      для перезагрузки компьютера.

    Если пункта recovery mode нет, то:


    1. выберите строчку с вашей системой;
    2. нажмите клавишу E;
    3. допишите в конец опций ядра слово single;
    4. нажмите клавишу B.

    Загрузится тот же терминал с правами суперпользователя.


    Сценарий 2. Меню выбора операционных систем GRUB недоступно.


    Если у вас по тем или иным причинам отключён выбор операционных систем при загрузке, то пароль можно сбросить с помощью любого Live CD с Linux. Для этого необходимо загрузиться с Live CD, примонтировать ваш корневой раздел, а далее сбросить пароль пользователю путём редактирования файла etc/shadow на этом разделе.


    Примечание: Вообще говоря, никакими инструментальными средствами 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:\windows\system32\utilman.exe c:\windows\system32\utilman2.exe
    copy c:\windows\system32\cmd.exe c:\windows\system32\utilman.exe



    Если все прошло успешно, введите команду wpeutil reboot для перезагрузки компьютера (можно перезагрузить и по-другому). В этот раз загрузитесь с вашего системного диска, а не с загрузочной флешки или диска.


    Примечание: если вы использовали не установочный диск, а что-то еще, то ваша задача с помощью командной строки, как было описано выше, или другими средствами, сделать копию cmd.exe в папке System32 и переименовать эту копию в utilman.exe.

    После загрузки в окне ввода пароля нажмите на иконку «Специальные возможности» внизу справа. Откроется командная строка Windows 10.


    В командной строке введите net user имя_пользователя новый_пароль и нажмите Enter. Если имя пользователя состоит из нескольких слов, используйте кавычки. Если вы не знаете имени пользователя, используйте команду net user, чтобы посмотреть список имен пользователей Windows 10. После смены пароля, вы сразу же сможете зайти под новым паролем в учетную запись.


    Сценарий 2. Правка реестра.


    Есть еще один интересный, простой и работающий способ сброса пароля. Здесь также потребуется либо загрузочный дистрибутив с ОС, либо диск восстановления, либо сторонний Live CD со средствами редактирования реестра.


    Суть способа в следующем:


    1. Загрузиться с накопителя, в программе установки нажать Shift + F10, чтобы открыть командную строку.
    2. Ввести regedit и нажать Enter для запуска редактора реестра.
    3. В редакторе реестра выбрать раздел HKEY_LOCAL_MACHINE после чего в меню выбрать «Файл» — «Загрузить куст» и открыть файл C:\ Windows\ System32\ config\ system
    4. При запросе имени раздела, указать любой.
    5. Внутри HKEY_LOCAL_MACHINE загруженного куста (раздела реестра) с указанным вами именем выбрать раздел setup и в правой части изменить следующие значения (путем двойного клика по ним).
    6. CmdLine — установить значение cmd.exe
    7. SetupType — установить значение 2.
    8. В редакторе реестра выбрать «Файл» — «Выгрузить куст» и подтвердить выгрузку.
      После этого закройте редактор реестра, командную строку, выйдите из программы установки и загрузитесь с жесткого диска компьютера. При загрузке 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).


    Литература


    1. ГОСТ Р 54583-2011/ISO/IEC/TR 154443-3:2007. Информационная технология. Меры и средства обеспечения безопасности. М.: Стандартинформ. 2013.;
    2. ГОСТ Р ИСО/МЭК 15408-3-2002. Информационная технология. Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 3. Требования доверия к безопасности;
    3. Цирлов В.Л. Основы информационной безопасности автоматизированных систем, Краткий курс. — Ростов-на-Дону: Феникс, 2008. — 253 с.;
    4. Авезова Я.Э., Фадин А.А. Вопросы обеспечения доверенной загрузки в физических и виртуальных средах // Вопросы кибербезопасности. 2016. № 1(14). С. 24-30;
    5. Сведения о реестре Windows для опытных пользователей, https://support.microsoft.com/ru-ru/help/256986/windows-registry-information-for-advanced-users;
    6. Пользовательская документация на Ubuntu, http://help.ubuntu.ru/wiki/пустой_пароль;
    7. Trusted Computer System Evaluation Criteria, http://csrc.nist.gov/publications/history/dod85.pdf;
    8. Руководящий документ. Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации. М.: Гостехкомиссия России, 1992.

    Comments 13

      0
      8. Руководящий документ. Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации. М.: Гостехкомиссия России, 1992.

      Список литературы конечно впечатляющий(и одновременно бесполезный). Наверное для дипломной работы готовили, но 1992год! Серьезно?
        +1
        Судя по названию, это чисто теоретический документ, по большей части философский, чем технический. А такие материалы остаются актуальными долго, т.к. они обо всем сразу и ни о чем вообще.
          0
          В целом соглашусь, но здесь то зачем про этот документ писать?
          +1

          Общепринятое сокращение РД АС. В статье есть упоминание и ссылка на документ. Является действующим высокоуровневым документ ФСТЭК России и определяет классификацию автоматизированных систем (АС) в целях разработки и применения обоснованных мер по достижению требуемого уровня защиты информации во всех организациях, обрабатывающих конфиденциальную информацию и сведения, составляющие государственную тайну.

            +1

            @TimsTims


            Список литературы конечно впечатляющий(и одновременно бесполезный). Наверное для дипломной работы готовили, но 1992год! Серьезно?

            Абсолютно, надо понимать что это не копи-паста из реферата, а собствено действующий в РФ документ в плане оценке защиты автоматизированных (информационных) систем.


            @KhodeN


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

            Это не отвлеченный философский документ. Не более философский, чем например Инструкция по охране труда =)


            Его реально используют в аттестации государственных информационных систем, систем обработки персональных данных (те же поликлиники, ВУЗы и многое другое).


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


            Конечно, это не значит что современные системы проверяют лишь по древним фолиантам, есть и современные метастандарты "Общие критерии" с современными профилями защиты для средств доверенной загрузки, и приказы 17, 21, 31 и много чего более современного созданного уже в эпоху всеобщих облачных технологий и гипервизоров, но всему свое время, это темы для целых отдельных статей.


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

            +1
            > Теперь можно перезагрузиться в нашу систему и войти с пустым паролем. Не забудьте установить после сброса нормальный пароль администратору
            Только уже давным давно, как пользователь с пустым паролем не сможет зайти.

            По умолчанию в большинстве дистрибутивов, возможность входить с пустым паролем нужно отдельно разрешать, конфигурируя nopasswdlogin в pam и всякие PasswordRequired=true в gui.
              0
              Только уже давным давно, как пользователь с пустым паролем не сможет зайти.

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

                0
                Попробовал все сделать по инструкции.
                Создал нового пользователя student1 с паролем. Зашел под ним.
                Залогинился под рутом, удалил павроль в /etc/shadow

                login as: student1
                student1@127.0.0.1's password:
                Access denied

                14.04.3 LTS

                IMHO правильный способ — логиниться под рутом в single-mode и прописывать пароли через passwd.
              +1
              Понятие «доверенная среда» на текущий момент не имеет устоявшегося определения, специалисты не могут сойтись во мнениях, а в нормативной базе, строго говоря, термин «доверенный» не определен.

              К сожалению, крупные корпорации под этим термином понимают среду, в которой нельзя спиратить видеопоток или загрузить произвольную ОС, что дискредитирует попытки навязывания любой доверенной среды.
                +1

                @sumanai


                Ага, а фанаты анонимности и параноики всеобщей слежки, наверное под своей доверенной средой будут понимать какой-нибудь Tails с браузером Tor, в который из поисковиков используется только duckduckgo.com =)


                Тут надо сразу договориться о чьем доверии идет речь, кто является потребителем этого доверия :)


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

                +1
                Ничего интересного про ту самую довернную среду нет, а в конце вообще написано, что
                Понятие «доверенная среда» на текущий момент не имеет устоявшегося определения, специалисты не могут сойтись во мнениях, а в нормативной базе, строго говоря, термин «доверенный» не определен.

                Вобщем, мы сами пока не в курсе, что это такое.
                Очередная статья про то, как сбросить пароль в винде или убунте, миллион таких.
                  +1

                  @manjrick


                  Вобщем, мы сами пока не в курсе, что это такое.

                  Не совсем так, если у термина нет единого устоявшегося определения, это не значит что никто не знает, что это такое вообще )
                  Ну вот нет общепринятого научного определения понятия "интеллект", а есть миллион различных его интерпретаций, но все равно, в целом-то мы все понимаем о чём идет речь? ;)


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


                  Согласен, что надо было сразу сослаться на большее число источников, где оно вообще упоминается.
                  С другой стороны не хочется закапываться в глубокую теорию, хабр — это не учебник и не руководящий документ Гостехкомиссии. Изначально была попытка донести саму проблематику доверия к среде на живых практических примерах доступных любому компьютерному пользователю. И, разумеется "сброс пароля и запись хэша" здесь показывалось не как некоторое тайное знание, а как рядовой случай из практики уровень сложности будет расти линейно, дойдет очередь и SecureBoot, EFI, DXE и других интересных вещей.

                • UFO just landed and posted this here

                  Only users with full accounts can post comments. Log in, please.