![image](https://habrastorage.org/webt/ux/pz/a0/uxpza0t6_t38ztc07yhtciypf8g.jpeg)
В данной статье ломаем шифры перестановки и Виженера, расшифруем сохраненный в браузере Mozilla Firefox пароль, расправляемся с блокировкой Android и разбираемся с атакой Bit-Flipping. Предыдущие части:
Часть 1 — Кодировки, шифр сдвига, брут хешей и создание картинки с помощью PIL python.
Часть 2 — Crypt, XOR, взлом нешифрованного ZIP и ГПСЧ.
Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Mozilla Firefox Password
![](https://habrastorage.org/webt/fp/bt/1b/fpbt1bm--oeuvc7remvhqsaiaey.png)
Нам нужно найти пароль пользователя. Скачиваем и открываем архив, в котором находится директория .mozilla. В данной директории есть папка с расширениями и папка с именем браузера.
![](https://habrastorage.org/webt/sb/ff/wv/sbffwvt6nnfl20ubxrfjjuzoiwk.png)
Так как расширения нас не интересуют, то заходим в диру-браузер. Там конфигурационный файл профиля и еще одна директория.
![](https://habrastorage.org/webt/_i/qh/se/_iqhseyaqlff2r_rdg1szajeipe.png)
Заходим в папку и просматриваем файлы.
![](https://habrastorage.org/webt/gy/_3/_j/gy_3_jtx7lo8rnk1lo7hidzdwvw.png)
Все пароли, хранящиеся в базе данных, зашифрованы, поэтому просто так посмотреть их не получится. Для расшифрования можно использовать этот скрипт.
python3 firefox_decrypt.py ~/Загрузки/.mozilla/firefox/o0s0xxhl.default/
![](https://habrastorage.org/webt/rm/88/w_/rm88w_caayinzzvz6te89a-45rs.png)
Шифр Виженера
![](https://habrastorage.org/webt/zx/kw/8z/zxkw8z0m5pmjubmyxi2cqiszupu.png)
Нам дан зашифрованный текст, и нужно найти его автора. Так как это шифр Виженера, то воспользуемся онлайн декодером.
![](https://habrastorage.org/webt/aw/of/m_/awofm_il-wj81d1wl1suqwsceti.png)
Выбираем автоматический режим.
![](https://habrastorage.org/webt/22/tm/tr/22tmtrq-azi02pq4bapp5pisc54.png)
И получаем открытый текст и ключ. Осталось загуглить текст и найти автора.
Android lock pattern
![](https://habrastorage.org/webt/-x/gc/wi/-xgcwi_etrr7dcwh3vpoxt0uufa.png)
Нам дают дамп файловой системы андроид и просят найти пароль. Это очень легко сделать, имея доступ к файловой системе. Хеш пароля (SHA1) находится в файле /data/system/gesture.key.
![](https://habrastorage.org/webt/6b/vv/nb/6bvvnbkvnfmhizypeo-seunkndk.png)
Мы можем либо взять и пробрутить хеш, либо воспользоваться androidpatternlock.
![](https://habrastorage.org/webt/uw/nf/iy/uwnfiylvin0edjyxoradv5qgnx4.png)
Найден как пароль, так и графический ключ.
Шифр перестановки
![](https://habrastorage.org/webt/nb/hn/dw/nbhndwpxlgmbt63w6vmg5wybpdc.png)
Нам дают зашифрованное сообщение и просят его расшифровать. Так как это шифр Rail Fence, то воспользуемся уже знакомым нам онлайн декодером.
![](https://habrastorage.org/webt/rr/vm/z2/rrvmz2nybnyb08ksmab6w_y7jny.png)
И теперь среди предложенных нам расшифровок нужно выбрать ту, которая имеет осмысленный текст.
![](https://habrastorage.org/webt/ky/-p/nm/ky-pnmqz-anlxbma-u29sypms_0.png)
И получаем ответ.
AES CBC — Атака Bit-Flipping
![](https://habrastorage.org/webt/a8/q6/zs/a8q6zss4exey98yw9z5usmqmwyw.png)
Нам дают хост и порт для подключения. Подключимся с помощью netcat.
![](https://habrastorage.org/webt/o-/jx/g0/o-jxg0nlnbk59s74r6o5yzo3c18.png)
Нам предоставляют варианты действий — зарегистрироваться или войти. Сначала зарегистрируемся.
![](https://habrastorage.org/webt/yl/_g/qm/yl_gqmx3v5byipvfezr9r0x-wvu.png)
И нам предоставили частично открытый и зашифрованный текст. Теперь логинимся с данным токеном.
![](https://habrastorage.org/webt/ns/sr/wk/nssrwktbmrvk5kucubn0tz5doxm.png)
Но после входа, мы не можем получить доступ к данным, так как не являемся членом группы.
![](https://habrastorage.org/webt/fw/jd/kg/fwjdkgip1vppwu32rulpj-3gyxe.png)
С заданием разобрались, теперь давайте разберемся с атакой Bit-Flipping. Эта атака обычно происходит в тех случаях, когда функция шифрования принимает некоторые входные данные, добавляет случайную строку и добавляет к ней другую строку перед ее шифрованием (наш случай).
Ниже представлена схема расшифрования сообщения по алгоритму AES CBC.
![](https://habrastorage.org/webt/ih/up/65/ihup65gmhxekx9mmnmmsnkfzshq.png)
Дело в том, что предыдущий блок шифртекста ксорится с последующим блоком, для того, чтобы снять наложение текста, в итоге мы имеем расшифрованный текст.
Таким образом, если мы изменим один байт шифртекста в предыдущем блоке, то изменится один байт открытого текста в следующем блоке.
![](https://habrastorage.org/webt/qu/ur/ov/quurov6wbl-ugkinf4my1dd_rhy.png)
Теперь вернемся к заданию. В открытом тексте имеется параметр is_member=false. Как изменить, сложно представить. Но так как у нас есть символы уравнения, для того, чтобы весь текст был кратен размеру блока, мы можем изменить их так, чтобы при расшифровывании получалась строка is_member=true.
Разберемся, как это сделать. Данная строка должна получиться при расшифровывании в последнем блоке — EvilP2. Для этого нам нужно собрать блок EvilC1.
![](https://habrastorage.org/webt/ft/9p/hy/ft9phylokmufjn6f0hsumclyncy.png)
Как это сделать: Мы имеем CC1 и PP2. Проксорив их между собой, мы можем получить DC2. Так как мы знаем, что EvilP2 содержит “;is_member=false]” и знаем DC2, то проксорив их между собой, можно получить EvilC1.
Регистрируемся еще раз.
![](https://habrastorage.org/webt/ya/g-/rl/yag-rluka2a390ppirstoku44iu.png)
Инициализируем начальные параметры.
![](https://habrastorage.org/webt/de/hv/af/dehvafxs3thnxauvc0kk1fr2mza.png)
Теперь получим известные нам блоки.
![](https://habrastorage.org/webt/k3/qq/m_/k3qqm_w_crq6rtpokqur-kxg5g0.png)
Теперь получим новые блоки.
![](https://habrastorage.org/webt/fe/xf/k1/fexfk1xnna5tjw8-o4c4fwcigsw.png)
Собираем нагрузку.
![](https://habrastorage.org/webt/hk/sr/dm/hksrdmswad8pc7lltblz5enpxoy.png)
Пробуем залогиниться.
![](https://habrastorage.org/webt/ef/4e/qx/ef4eqxctzasx9b8k8ndswoqgcqu.png)
И ничего не вышло, нас обнаружили. Скорее всего это из-за наличия двух одинаковых параметров. Давайте убьем первый.
![](https://habrastorage.org/webt/8p/uc/6v/8puc6v9rldhe9pqbomwjpebdw5y.png)
И теперь успешно логинимся и забираем токен.
![](https://habrastorage.org/webt/70/m-/u_/70m-u_xz8vkvl2sb4imo2nj6yio.png)
Вы можете присоединиться к нам в Telegram. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
armid
я думал в firefox защита мастер паролем, надежней устроена.
Paranoich
Уже не «мастер-пароль», а «основной пароль».
support.mozilla.org/ru/kb/ispolzovanie-master-parolya-dlya-zashity-sohranyon
А о слабой защите писали ещё лет 10 назад, а пару лет назад на это же указал и Владимир Палант (автор адблока).
Впрочем это лишь защита паролей в браузере. Не думаю, что кто-то хранит в браузере важные пароли. На то есть кипасс и иже с ним.
gecube
Никто уже в кипасс не хранит пароли — они в связке ключей в гуглохроме. Удобно? Да. Оно даже напоминает, если пароли утекли, что их нужно поменять. Забота о пользователе. Секурно ли? Ну, под вопросом, под большим вопросом
Paranoich
Я бы не был столь категоричен.
Ставить браузер от гугля специально для хранения паролей? Ну так себе идея. Таскать браузер с собой на флешке? Не выйдет, профиль пользователя у хрома гвоздями прибит к конкретному компьютеру.
Да и данные отличные от пары логин-пароль хранить затруднительно.
Как заполнять логины в приложениях на мобильных устройствах с помощью хрома? Ну и запускать хром ради заполнения паролей в Firefox/Safari — тоже неудобно.
Это подходит разве что тому, кто сидит за одним десктопом и из дома не выходит.
gecube
Вы правы только наполовину (к сожалению).
Браузер chrome есть и на десктопе, и на телефоне/планшете — и синхронизация закладок/паролей/истории работает просто чудесно. Это для пользователя прям очень удобно.
Касательно приложений — если они используют стандартную функцию отображения страницы браузера для логина (ну, например, редирект на фейсбук в играх), то в ней вроде бы автоподстановка работает, но это не 100% — возможно есть какие-то нюансы. В экосистеме эппла так точно предлагается их, тамошняя штука для автоввода паролей, но возможно, что она попросту на уровне приложения экранной клавиатуры работает — не разбирался в деталях.
google chrome ставят не потому что он хороший или пароли хранит, а потому что в нем наиболее адекватно отображается большинство страниц, да, и в целом, это сейчас лидер рынка.
никто про другие данные и не говорил :-/
вот это да — Safari на apple внезапно работает гораздо лучше Chrome (я внимательно смотрел, реально в Chrome есть мелкие глюки). И тогда вся концепция ломается, конечно, но нас производители очень активно пытаются подсадить на одну из экосистем — либо гугл-андроид, либо iphone-mac.