19 апреля, 2024

Как взломать защищенные паролем документы Microsoft Office — doc-файлы и таблицы Excel

Содержание:

Для предотвращения фальсификаций и обеспечения целостности данных файлы Microsoft Office защищают паролем. Но защищенные документы более ранних версий Офиса уязвимы для извлечения их хешей с помощью простой программы с названием office2john. Полученные таким образом хеши могут быть взломаны с помощью John the Ripper и Hashcat.

Само извлечение хеша из файла Microsoft Office, защищенного паролем, с помощью office2john занимает всего пару секунд. Несмотря на то, что стандарты шифрования в различных продуктах Office менялись на протяжении многих лет, ни один из них не может противостоять извлечению хешей с помощью office2john.

Эта утилита написана на Python, и ее можно запустить прямо из терминала. Что касается совместимости с Офисными файлами, то известно, что office2john работает с любыми защищенными паролями файлами Word, Excel, PowerPoint, OneNote, Project, Access и Outlook, созданными в Office 97, Office 2000, Office XP, Office 2003, Office 2007, Office 2010 и Office 2013, включая версии Office для Mac. Она может не работать с более новыми версиями Office, но мы сохранили DOCX-файл в Office 2016, пометив его как файл Office 2013.

Шаг 1. Установите Office2John

Для начала нам нужно скачать эту утилиту с GitHub, так как office2john не входит в стандартную версию поставки John the Ripper (которая уже должна быть установлена ​​в вашей системе Kali). Скачать ее можно с помощью wget.

wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/office2john.py
--2019-02-05 14:34:45--  https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/office2john.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.148.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.148.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 131690 (129K) [text/plain]
Saving to: ‘office2john.py’

office2john.py                        100%[=======================================================================>] 128.60K  --.-KB/s    in 0.09s

2019-02-05 14:34:46 (1.45 MB/s) - ‘office2john.py’ saved [131690/131690]

Шаг 2. Убедитесь, что все находится в одной директории

Чтобы запустить office2john с помощью Python, нам нужно перейти в ту директорию, в которую она была установлена. По умолчанию для большинства из вас это будет директория Home (просто введите в консоли cd), но вы можете создать любой другой каталог.

Для наших тестов понадобится подходящий файл. Мы будем использовать простой DOCX-файл с именем «dummy.docx», который мы создали с помощью Word 2007 и закрыли паролем. Скачайте его, чтобы было с чем работать. Пароль от файла — «password123», впрочем, вы его и так узнаете. Вы также можете скачать документы, созданные в Word 2010 и  (который отображается как созданный в Word 2013). Пароль для них тот же самый — «password123».

Читать также:  Как управлять паролями с помощью KeePassX на Mac OS ( Часть 3 )

Шаг 3. Получите хеш с помощью Office2john

Первое, что нужно сделать — это извлечь хеш нашего защищенного файла Office. Запустите следующую команду и запишите вывод в файл «hash.txt», который мы будем чуть позже использовать.

python office2john.py dummy.docx > hash.txt

Чтобы убедиться, что хеш был успешно извлечен, воспользуйтесь командой cat. Мы видим, что сохраненный хеш соответствует Microsoft Office 2007. Отлично!

cat hash.txt
dummy.docx:$office$*2007*20*128*16*a7c7a4eadc2d90fb22c073c6324b6b49*abc5f80409f5f96f97e184e44aacd0b7*930b0c48a7eb5e13a57af4f3030b48e9402b6870

Шаг 4. Взломайте хеш, который вы только что сохранили

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

Вариант 1. Взлом с помощью John the Reaper

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

john --wordlist=/usr/share/wordlists/nmap.lst hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013 [SHA1 128/128 SSE2 4x / SHA512 128/128 SSE2 2x AES])
Cost 1 (MS Office version) is 2007 for all loaded hashes
Cost 2 (iteration count) is 50000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status

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

password123      (dummy.docx)
1g 0:00:00:03 DONE (2019-02-05 15:00) 0.2824g/s 415.8p/s 415.8c/s 415.8C/s lacoste..cooldude
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Мы также можем использовать параметр —show, чтобы отобразить его в таком виде:

john --show hash.txt
dummy.docx:password123

1 password hash cracked, 0 left

Теперь, когда мы знаем один метод взлома защищенного паролем файла Microsoft Office, давайте рассмотрим другой способ, с помощью довольно мощного инструмента Hashcat.

Читать также:  Как создать фальшивый PDF-файл с трояном на AppleScript.Часть 1. Создание stager-нагрузки

Вариант 2. Взлом с помощью Hashcat

Работу с Hashcat можно начать с отображения его справки (—help). Эта команда дает довольно много информации, включая параметры использования, режимы хеширования и другие функции. Здесь ее очень много, поэтому не будем показывать ее вывод, но если вы действительно хотите знать Hashcat, то вы должны внимательно изучить его справку.

hashcat --help

Из всего этого обилия информации нам нужны режимы хэширования MS Office. В нижней части справки мы найдем параметры режимов MS Office и соответствующие им номера. Из нашего хеша мы знаем, что это файл Office 2007, поэтому найдите его номер — ID *9400*.

9700 | MS Office <= 2003 $0/$1, MD5 + RC4               | Documents
9710 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #1  | Documents
9720 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #2  | Documents
9800 | MS Office <= 2003 $3/$4, SHA1 + RC4              | Documents
9810 | MS Office <= 2003 $3, SHA1 + RC4, collider #1    | Documents
9820 | MS Office <= 2003 $3, SHA1 + RC4, collider #2    | Documents
9400 | MS Office 2007                                   | Documents
9500 | MS Office 2010                                   | Documents
9600 | MS Office 2013                                   | Documents

Теперь можно установить остальные параметры, используя следующую команду:

hashcat -a 0 -m 9400 --username -o cracked_pass.txt hash.txt /usr/share/wordlists/nmap.lst
  • Флаг -a устанавливает тип атаки, по умолчанию просто 0.
  • Флаг -m устанавливает режим, который мы хотим использовать, т.е. тот, который мы только что нашли.
  • Опция —username игнорирует любые имена пользователей в этом хеш-файле.
  • С помощью флага -o мы можем указать выходной файл, как cracked.txt.
  • И, наконец, мы можем передать в команду hash.txt, который содержит хеш, и указать вордлист, как мы делали это ранее.

И тогда Hashcat начнет процесс взлома.

hashcat (v5.1.0) starting...

* Device #2: Not a native Intel OpenCL runtime. Expect massive speed loss.
             You can use --force to override, but do not report related errors.
OpenCL Platform #1: Intel(R) Corporation
========================================
* Device #1: Intel(R) Core(TM) i5 CPU       M 480  @ 2.67GHz, 934/3736 MB allocatable, 4MCU

...

Через некоторое время поле Status покажет нам, что хеш был взломан, и можно просмотреть пароль.

Session..........: hashcat
Status...........: Cracked
Hash.Type........: MS Office 2007
Hash.Target......: $office$*2007*20*128*16*a7c7a4eadc2d90fb22c073c6324...2b6870
Time.Started.....: Tue Feb  5 15:08:00 2019 (4 secs)
Time.Estimated...: Tue Feb  5 15:08:04 2019 (0 secs)
Guess.Base.......: File (/usr/share/wordlists/nmap.lst)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:      610 H/s (8.51ms) @ Accel:512 Loops:128 Thr:1 Vec:4
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 2048/5084 (40.28%)
Rejected.........: 0/2048 (0.00%)
Restore.Point....: 0/5084 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:49920-50000
Candidates.#1....: #!comment:  ***********************IMPORTANT NMAP LICENSE TERMS************************ -> Princess

Started: Tue Feb  5 15:07:50 2019
Stopped: Tue Feb  5 15:08:05 2019

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

cat cracked_pass.txt
$office$*2007*20*128*16*a7c7a4eadc2d90fb22c073c6324b6b49*abc5f80409f5f96f97e184e44aacd0b7*930b0c48a7eb5e13a57af4f3030b48e9402b6870:password123

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

Читать также:  Гид по интернету в Китае: Wi-Fi, мобильный интернет через SIM-карту, китайский файрвол и VPN

Как защититься от взлома

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

В отношении данной конкретной атаки использование документов Microsoft Office 2016, 2019 или более новой версии может быть неэффективным, так как office2john предназначен для работы с более ранними версиями Office. Однако, как вы могли видеть выше, Office 2016 вполне может выдать документ 2013 года, даже не подозревая об этом. Поэтому использование более новых версий Microsoft Office не означает, что «новый» файл не может быть взломан. Кроме того, по-прежнему существует большое количество документов, созданных в устаревших версиях Microsoft Office, а некоторые организации по-прежнему продолжают использовать эти старые версии, что делает такую атаку вполне успешной.

Заключение

Сегодня мы узнали, что защищенные паролем файлы Microsoft Office не так безопасны, как можно было бы подумать. Мы использовали инструмент под названием office2john для извлечения хеша из файла DOCX, а затем взломали этот хеш, используя программы John the Ripper и Hashcat. Данные типы файлов по-прежнему широко используются, поэтому если вы встретите файл с паролем, знайте, что есть способ его взломать.

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