Р. Эрик Кисер

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

Нам нужно будет импортировать несколько модулей для извлечения данных. os и shutil импортируются для доступа к файловой системе и копирования файлов. import sys и import tempfile импортируются для проверки платформы и создания временного каталога.

import os
import sys
import shutil
import tempfile

Создайте переменную, которая является путем к файлу закладок в локальной файловой системе bookmarks_file. Путь отличается в зависимости от операционной системы, и скрипт проверяет платформу с помощью переменной sys.platform и устанавливает правильный путь.

bookmarks_file = os.path.expanduser('~/Library/Application Support/Google/Chrome/Default/Bookmarks')

Создайте условие, которое проверяет, существует ли файл закладок в локальной файловой системе. Если файл не существует, сценарий выводит сообщение об ошибке и завершает работу с кодом состояния 1.

if sys.platform == 'win32':
    bookmarks_file = os.path.expandvars(r'%LOCALAPPDATA%\Google\Chrome\User Data\Default\Bookmarks')
elif sys.platform == 'darwin':
    bookmarks_file = os.path.expanduser('~/Library/Application Support/Google/Chrome/Default/Bookmarks')

if not os.path.exists(bookmarks_file):
    print('Error: unable to locate your bookmarks file')
    sys.exit(1)

Создайте временный каталог с помощью модуля tempfile.

temp_dir = tempfile.mkdtemp()

Создайте основную логику скрипта, используя блок try...finally. Это скопирует файл закладок во временный каталог, обновит файл закладок во временном каталоге, обновит новую переменную пути закладок, откроет файл закладок в режиме чтения и прочитает содержимое в переменную data. Затем нам нужно будет создать новый файл с именем bookmarks.html в режиме записи и записать в него содержимое переменной data. Затем для нашего finally удаляет временный каталог, следя за тем, чтобы в файловой системе не осталось ненужных файлов.

try:
    shutil.copy2(bookmarks_file, temp_dir)
    bookmarks_file = os.path.join(temp_dir, os.path.basename(bookmarks_file))

    with open(bookmarks_file, 'r') as f:
        data = f.read()

    with open('bookmarks.html', 'w') as f:
        f.write(data)

finally:
    shutil.rmtree(temp_dir)

Последнее, что мне нравится делать, — это печатать подсказку, подтверждающую, что задание выполнено.

print ("bookmarks successfully downloaded in the current working directory")

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