Как найти зашифрованные данные

Поиск секретных данных в исходном коде

Время на прочтение
5 мин

Количество просмотров 6.9K

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

Я — разработчик, и я признаю то, что раньше допускала попадание секретных данных в открытые GitHub-репозитории. Подобные данные, жёстко заданные в коде, всегда были проблемой в различных организациях. Я, выполняя испытания на проникновение с целью проверки систем защиты компаний, всегда в первую очередь исследую код этих компаний на наличие в нём секретных данных. Если разработчик вносит что-то вроде паролей в код, эти данные могут оказаться в общедоступных репозиториях или в пакетах приложений, а после этого могут попасть в руки злоумышленников.

По мере того, как микросервисные архитектуры и приложения, построенные вокруг неких API, получают всё более и более широкое распространение, разработчики часто нуждаются в программных механизмах обмена идентификационными данными и другими секретными сведениями. А это значит, что программисты, работая с подобными данными, иногда могут совершать ошибки.

Рассмотрим практический пример утечки идентификационных данных, вписанных прямо в исходный код одной системы. Вот отчёт об ошибке, касающийся reverb.com. Исследователь обнаружил в коде идентификационные данные, используемые для доступа к Cloudinary. Секретный ключ присутствовал в исходном коде Android-приложения Reverb. Любой, кто загрузит это приложение, может извлечь соответствующие учётные данные и получить возможность, чтения, редактирования и удаления файлов, хранящихся в соответствующем экземпляре Cloudinary:

private static final java.lang.String CONFIG = "cloudinary://434762629765715:█████@reverb";

И подобные уязвимости — это вовсе не редкость. Я занимаюсь тестированием систем на устойчивость к проникновениям, и могу заявить, что мне доводилось находить в общедоступном коде или в скомпилированных файлах многих организаций самые разные секретные данные. Среди них — учётные данные для аутентификации в различных службах, ключи AWS, ключи к API GitHub. Иногда хакеру, который хочет взломать некую компанию, достаточно всего лишь поискать в её GitHub-репозитории случайно отправленные туда учётные данные для входа в различные системы.

Использование регулярных выражений

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

Если в коде имеются ключи API, ключи шифрования, пароли к базам данных, их часто можно обнаружить, воспользовавшись инструментами для поиска ключевых слов, вроде grep. Искать, например, можно по словам key, secret, password или aws. При таком подходе осуществляется поиск по идентификаторам, вроде имён переменных, которые используются для хранения интересующих нас данных. Аналогично — можно пользоваться поиском по текстам для нахождения связанных с секретными данными имён файлов и служебных данных, характерных для файлов определённого формата. Например, можно поискать по строке -----BEGIN RSA PRIVATE KEY-----.

Многие ключи API, кроме того, записываются с использованием определённого формата данных. Обнаружить такие ключи можно, выполнив поиск с применением регулярных выражений. Например, идентификаторы ключей доступа к AWS обычно начинаются со строки AKIA, за которой следует 16 алфавитно-цифровых символов. Поэтому, если выполнить поиск с использованием регулярного выражения AKIA[0–9A-Z], можно обнаружить в коде соответствующие ключи.

Ключи для API Twilio начинаются с символов SK, за которыми следуют 32 алфавитно-цифровых символа. А это значит, что найти их можно с помощью регулярного выражения SK[a-z0–9]{32}. Пароли в URL можно обнаружить, выполнив поиск по шаблонам, соответствующим базовым синтаксическим конструкциям, используемым в соответствующих механизмах аутентификации: [a-zA-Z]{3,15}://[^/\:@]+:[^/\:@]+@.{1,100}. Благодаря использованию такого шаблона можно обнаружить учётные данные, включённые в состав URL: protocol://username:password@example.com. Для поиска секретных данных в собственном коде нужно выяснить то, как устроены используемые в коде ключи, после чего — составить регулярные выражения для их поиска.

Благодаря двум вышеописанным стратегиям поиска секретных данных в коде можно обнаружить основной объём таких данных. Но, полагаясь только на поиск по текстам, мы рискуем пропустить те секретные данные, которые не представлены строками определённого формата. Тут нам на помощь может прийти энтропийный анализ кода.

Поговорим об энтропии

Мы можем воспринимать энтропию как показатель того, насколько «случайными» и «непредсказуемыми» являются некие данные. Например, у строки, составленной лишь из одного символа, вроде aaaaa, показатель энтропии очень низок. А вот строка, в состав которой входит большее количество различных символов, наподобие wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY, обладает более высоким показателем энтропии. Проверить подобные строки и узнать о том, как вычисляется показатель энтропии, можно, воспользовавшись этим калькулятором энтропии Шеннона.

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

Что дальше?

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

Конечно, не весь код является опенсорсным, не все секретные данные, жёстко заданные в коде, попадают в общедоступные репозитории. Но подобная практика, всё равно, может вылиться в проблему, так как эти данные могут покинуть пределы компании в исполняемых файлах приложений, в виде логов, при краже исходного кода. Хорошей стратегией по минимизации рисков утечек секретных данных является выполнение сканирования кода с использованием поиска по шаблону и энтропийного анализа данных. Делается это до попадания кода в продакшн. А сами секретные данные нужно хранить либо в конфигурационных файлах, либо — пользуясь специальными службами, предназначенными для управления такими данными.

Иногда может показаться, что секретные данные просто необходимо хранить в коде, который, в виде приложения, попадает к конечным пользователям. Например — речь может идти о ключах API, используемых в мобильных приложениях. В подобном случае можно принять меры по предотвращению возможности обнаружения подобных данных. Например, переменным, в которых хранятся некие ключи, лучше не давать имена, недвусмысленно указывающие на их содержимое, вроде api_key и password. Рекомендуется обфусцировать код, что усложнит извлечение из него секретных данных. И, наконец, можно просто выполнять ту часть кода приложения, которая отвечает за доступ к сторонним службам, на сервере, что позволит избежать необходимости включения этого кода в состав пакета приложения, передаваемого конечному пользователю.

Всегда проверяйте свой код на предмет наличия в нём секретных данных и исследуйте возможности попадания этих данных в руки злоумышленников. Если такие данные попадают в код не по случайности, подумайте о том, действительно ли они должны присутствовать в коде, и о том, достаточно ли хорошо они защищены.

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

Выкладывали ли вы когда-нибудь в общий доступ код, в котором содержатся секретные данные?


Download Article


Download Article

This wikiHow will teach you how to browse your computer for encrypted files using Windows or macOS. Once you find out the location of the file, you can decrypt it using a few simple commands.

  1. Image titled Detect Encrypted Files Step 1

    1

    Type cmd into the Windows search bar. You’ll usually see the search bar at the bottom-left corner of the screen. If you don’t see it, click the magnifying glass or circle to open it.

    • You can also pull up the search with Win+S. Search results will appear as you type.
  2. Image titled Detect Encrypted Files Step 2

    2

    Click Command Prompt in the search results. This opens a black window with a command prompt inside.

    Advertisement

  3. Image titled Detect Encrypted Files Step 3

    3

    Type cipher /u /n and press Enter. A list of all the encrypted files on your computer and their locations will appear along with their locations on your hard drive.

    • If you want to decrypt a file, make note of the location and continue with this method.
  4. Advertisement

  1. Image titled Detect Encrypted Files Step 4

    1

    Open File Explorer. You can find this on your Start menu or by pressing Win+E.

  2. Image titled Detect Encrypted Files Step 5

    2

    Navigate to the folder that contains the file you want to decrypt.

  3. Image titled Detect Encrypted Files Step 6

    3

    Right-click the encrypted file/folder and select Properties. This opens a dialog box to the “General” tab.

  4. Image titled Detect Encrypted Files Step 7

    4

    Click Advanced. It’s in the “Attributes” section.

  5. Image titled Detect Encrypted Files Step 8

    5

    Uncheck the box next to “Encrypt Contents to Secure Data.”

  6. Image titled Detect Encrypted Files Step 9

    6

    Click Ok twice. All the pop-up boxes will disappear and your file will be decrypted instantly.

    • If this does not work, you may not have the ability or permission to decrypt this file, which may indicate malicious software.
  7. Advertisement

  1. Image titled Detect Encrypted Files Step 10

    1

    Open Finder

    Mac Finder

    . It’s the first icon on the Dock, which is usually at the bottom of your desktop.

  2. Image titled Detect Encrypted Files Step 11

    2

    Click the File menu. It’s at the top-left corner of the screen.

  3. Image titled Detect Encrypted Files Step 12

    3

    Click Find. You can also press Cmd+F.

  4. Image titled Detect Encrypted Files Step 13

    4

    Click the Kind drop-down box. You’ll see this immediately under the tool bar.

  5. Image titled Detect Encrypted Files Step 14

    5

    Click Other from the drop-down box. The options will change.

  6. Image titled Detect Encrypted Files Step 15

    6

    Click Security in the attributes list.

  7. Image titled Detect Encrypted Files Step 16

    7

    Check the “In Menu” box. A checked box indicates this is enabled. You can now browse your folders for encrypted files.

  8. Advertisement

  1. Image titled Detect Encrypted Files Step 17

    1

    Open Terminal. You can find this by searching Spotlight or in the Utilities folder of Finder.

  2. Image titled Detect Encrypted Files Step 18

    2

    Type the following code: openssl enc -aes-256-cbc -d -in *path-to-file-you-want-to-decrypt* -out *path-to-where-the-decrypted-file-will-be-saved*.

  3. Image titled Detect Encrypted Files Step 19

    3

    Press Return. You’ll be prompted for a password.

  4. Image titled Detect Encrypted Files Step 20

    4

    Type the admin password and press Return.

  5. 5

    Press Return. You’ll find the decrypted file in the location you specified in Terminal.

  6. Advertisement

Image titled Detect Encrypted Files Step 21

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Thanks for submitting a tip for review!

About This Article

Article SummaryX

1. Open Command Prompt.
2. Type cipher /u /n.

3. Press Enter.

Did this summary help you?

Thanks to all authors for creating a page that has been read 25,706 times.

Is this article up to date?

November 24 2015, 16:33

Category:

  • Компьютеры
  • Cancel

Однажды при смене пользователя Windows вышло сообщение с рекомендацией сделать резервную копию закрытого ключа шифрования. Так как до этого файлы я не шифровал, решил узнать, а есть ли на моем компьютере зашифрованные файлы или папки. Задумался, а как их найти?

Для справки:
Шифрованная файловая система (EFS) – это компонент Windows, позволяющий сохранять сведения на жестком диске в зашифрованном формате. Шифрование – это самая сильная защита, которую предоставляет Windows для защиты данных.
Некоторые ключевые свойства EFS:
– Шифрование – простое действие; для его включения достаточно установить флажок в свойствах файла или папки.
– Можно указать, кому именно разрешается читать эти файлы.
– Файлы шифруются, когда они закрываются, при открытии они автоматически расшифровываются.

1. Лучшее и самое быстрое решение – найти с помощью Total commander:

2. Также можно найти через командную строку:
     – Запустить cmd

 – Ввести команду: cipher

Подробнее параметры запуска описаны по этой ссылке на английском: http://superuser.com/questions/58878/how-to-list-encrypted-files-in-windows-7

Этот пост был первоначально опубликован в блоге ParagonIE и размещен здесь с их разрешения.


Изображение безопасности

Нам [ParagonIE] часто задают один и тот же вопрос (или какой-то ремикс на него).

Этот вопрос время от времени появляется в трекерах ошибок библиотек с открытым исходным кодом . Это была одна из «странных проблем», о которых говорилось в моем выступлении в B-Sides Orlando (« Построение защищенных решений для странных проблем» ), и мы ранее посвятили ему небольшой раздел в одном из наших официальных документов .

Вы знаете, как искать в полях базы данных , но вопрос в том, как мы можем надежно зашифровать поля базы данных, но по-прежнему использовать эти поля в поисковых запросах?

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

Если вы спешите, смело переходите к решению .

На пути к поисковому шифрованию

Давайте начнем с простого сценария (который может быть особенно актуален для многих приложений местного правительства или здравоохранения):

  • Вы создаете новую систему, которая должна собирать номера социального страхования (SSN) от своих пользователей.
  • Правила и здравый смысл диктуют необходимость шифрования пользовательских SSN в состоянии покоя.
  • Сотрудники должны иметь возможность просматривать учетные записи пользователей, учитывая их SSN.

Давайте сначала рассмотрим недостатки с очевидными ответами на эту проблему.

Небезопасные (или иным образом опрометчивые) ответы

Нерандомизированное шифрование

Наиболее очевидным ответом для большинства команд (особенно команд, в которых нет экспертов по безопасности или криптографии) было бы сделать что-то вроде этого:

<?php
class InsecureExampleOne
{
    protected $db;
    protected $key;

    public function __construct(PDO $db, string $key = '')
    {
        $this->db = $db;
        $this->key = $key;
    }

    public function searchByValue(string $query): array
    {
        $stmt = $this->db->prepare('SELECT * FROM table WHERE column = ?');
        $stmt->execute([
            $this->insecureEncryptDoNotUse($query)
        ]);
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    protected function insecureEncryptDoNotUse(string $plaintext): string
    {
        return bin2hex(
            openssl_encrypt(
                $plaintext,
                'aes-128-ecb',
                $this->key,
                OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
            )
        );
    }
}

В приведенном выше фрагменте один и тот же открытый текст всегда создает один и тот же зашифрованный текст при шифровании одним и тем же ключом. Но что касается режима ECB, то каждый 16-байтовый блок шифруется отдельно , что может иметь некоторые крайне печальные последствия .

Формально эти конструкции не являются семантически безопасными: если вы зашифруете большое сообщение, вы увидите повторение блоков в зашифрованном тексте.

Для обеспечения безопасности шифрование должно быть неотличимо от случайного шума для всех, кто не владеет ключом дешифрования. Небезопасные режимы включают режим ECB и режим CBC со статическим (или пустым) IV.

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

На чтение 2 мин. Просмотров 162 Опубликовано 28.04.2021

Для многих версий Windows включает расширенную функцию безопасности, называемую шифрованной файловой системой (EFS). Это позволяет пользователю хранить файлы и папки в зашифрованном виде, поэтому они будут защищены от нежелательного доступа. Однако проводник не предлагает быстрый способ найти все зашифрованные файлы, хранящиеся на вашем диске. Вот альтернативное решение.

Шифрованная файловая система (EFS) – полезная функция. Другие учетные записи пользователей не могут получить доступ к вашим зашифрованным файлам, как и никто из пользователей сети или путем загрузки в другую ОС и доступа к этой папке. Это самая надежная защита, доступная в Windows для защиты отдельных файлов и папок без шифрования всего диска.

Когда папка или файл зашифрованы с помощью шифрованной файловой системы (EFS), приложение File Explorer показывает значок наложения замка для такого файла или папки.

Совет: проводник может отображать зашифрованные файлы зеленым цветом. Вам необходимо включить эту функцию вручную, как описано в статье «Показывать сжатые и зашифрованные файлы в цвете в Windows 10».

При шифровании папки новые файлы, сохраненные в этой папке, будут автоматически зашифрованы.

Примечание. Шифрование будет отключено для папки, если вы сжимаете его, перемещаете в ZIP-архив или копируете в место, которое не поддерживает шифрование NTFS с EFS.

Иногда бывает полезно быстро найти все ваши зашифрованные файлы в папке . В Windows XP, Vista, Windows 7, Windows 8 и Windows 10 есть консольная утилита под названием «cipher». Это инструмент командной строки для работы с зашифрованными файлами с использованием EFS (Encrypting File System).

Вот как это можно сделать.

Чтобы найти все зашифрованные файлы в Windows 10

  1. Открыть новую командную строку
  2. Введите следующую команду: cipher/u/n/h .
  3. Команда выведет список ваших зашифрованных файлов.

Готово!

Если у вас много файлов, может быть полезно сохранить список в текстовый файл. Наличие текстового файла со списком зашифрованных файлов упрощает их поиск и проверку.

Выполните следующую команду в командной строке:

 cipher/u /n/h> "% UserProfile%  Desktop  encrypted_files.txt" 

Это создаст файл encrypted_files.txt на вашем рабочем столе.

Добавить комментарий