Docker + Heroku + HashCat
https://t.me/aitish
Приветствую. В данной статье мы развернём Minimum Kali Linux образ с Hashcat'ом на борту, для брута хэшей, на такой облачной PaaS-платформе как Heroku.
Полагаю, нужен дисклеймер)
!!!!!!!!!!!!!!!ДИСКЛЕЙМЕР!!!!!!!!!!!!!!!
АВТОР СТАТЬИ НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ ЗА ВАШИ ДЕЙСТВИЯ И ВОЗМОЖНЫЙ УЩЕРБ. ВСЯ ИНФОРМАЦИЯ ПРЕДОСТАВЛЕНА ИСКЛЮЧИТЕЛЬНО В ОЗНАКОМИТЕЛЬНЫХ ЦЕЛЯХ.
Продолжим. Сразу скажу, что данная статья, по сути, бесполезная. Почему? Потому что ничего дельного не выйдет, т.к. при бесплатной эксплуатации Heroku вам не предоставляется всё вычислительная мощность сервака и вы делите ресурсы серва между другими юзерами (я, конечно, не эксперт, но это логично, тем более (см. скриншот)). У нас Free, а брать Perfomance не вижу смысла, т.к. намного дешевле залить хэш в сервис gpuhash и отдать ~10$ за пароль. Хотя можно зарегать кучу акков и раскинуть на каждый по хэшу (пишет 11 часов 20 мин на хэш, но это при условии, что будет брутить до последнего пароля в словаре, если нужный пароль попадётся раньше - раньше и закончит).

Ну что же? Пора приступать.
Сначала скачиваем Docker Desktop под свою ось, устанавливаем.
Далее регаемся на Heroku, скачиваем Heroku CLI и устанавливаем.
Теперь нам надо создать контейнер в докере. Открываем PowerShell от админа и пишем:
docker pull kalilinux/kali-rolling docker run -ti kalilinux/kali-rolling /bin/bash
У вас запуститься Kali и в докере будет отображено

Жмякаете на кнопку RUN - вас перекидывает на вкладку с контейнерами.

Обведённый - тот, что запустился у меня. Наводите мышонка на него и справа жмякаете на CLI.

У вас откроется sh оболочка.

Первое, что нужно сделать - обновиться. Обновляться придётся долго, если у вас плохой интернет. Если хороший - тоже довольно-таки долго, но всё же быстрее)
apt update apt dist-upgrade apt autoremove apt clean
Далее, устанавливаем hashcat и все его зависимости (скриншоты лепить не буду, не вижу смысла).
У меня была такая ошибки:
debconf: unable to initialize frontend: Dialogdebconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76, <> line 26.)debconf: falling back to frontend: ReadlineSelecting previously unselected package libllvm9:amd64.
Судя по всему, это невозможность запуска графики. Да я хуй бы с ней, мне и в терминале уютно (тем более, что она и не запустится, хотя не вдавался в этот вопрос).
Всё сделали, всё установили, все ошибки пофиксили (хотя у меня, вроде, не было их или не запоминал из-за лёгкости устранения, возможно) и убедились, что всё работает.
Теперь надо запушить словарь (-и) для брута и хэши. Для сего действа откроем новое окно PowerShell'а и введём пару незамысловатых команд.
docker ps
Отобразит запущенные контейнеры.
Нужно поле NAME. Мой контейнер называется nervous_wing. Для копирования файлов с хоста в докер контейнер, лучше закинуть файлы на диск с системой (для винды).
docker cp [SRC] [DEST]

Скопировано

Сделали? Идём дальше.
Дабы контейнер запомнил, что у него обновы, утилитки и файлы есть, а не запустился в следующий раз без нихуя, нужно с него снять образ:
docker ps
Нужен ID контейнера
docker commit [ID контейнера] [название образа, какое хотите]

У меня всё прошло быстро, потому что контейнер без обнов и утилит: для примера показываю.

Красным подчёркнуто, считайте, одинаковые образы, только в верхнем, который сделали, лежит файл 1.txt и это все различия. Зелёным - образ с обновами, словарями, хэшами и hashcat'ом.
Пришло время пушить всё это безобразие на Heroku.
Открываем повара (powershell. буду подписывать его поваром, а то лень по-нормальному). Пишем:
heroku login
Ну, тут понятно.
heroku container:login
Входим в реестр контейнеров.
heroku apps:create [PROJECT_NAME] --region eu
Создаём приложение (типа).

Обратите внимание: команды разные, я использовал укороченную команду.
docker login --username=[ваша почта или юзернэйм] --password=$(heroku auth:token) registry.heroku.com
Залетаем на облачный бэкенд.
docker tag [IMAGE ID] registry.heroku.com/[IMAGE NAME]/web
Присваиваем тег.

docker push registry.heroku.com/aitish/web
Пушим образ в реестр.
heroku container:release web -a [APP NAME]
Типа задаём версию приложения (хз как правильно сформулировать)

Вот и всё. В поваре пишем
heroku run bash -a [APP NAME]

А вот и наш текстовый файл, который копировали с хоста.

Этот файл - копия лога от WPI, который делали в одной из статей.
У меня эта система без обнов, так что давайте запущу с обновами и с hashcat'ом на борту. Кстати, которая с обновами и утилитами, дольше запускается.
Hashcat есть, хэши для брута есть.

Можно брутить.
ОДИН МОМЕНТ ИЛИ, ДАЖЕ, ПАРУ:
1) у heroku эфемерная файловая система. Это значит, что после ребута или выкл/вкл контейнера, который крутится у нас на хероку, произойдёт сброс до чистого образа, который мы заливали, т.е. останутся только те файлы, которые были когда мы снимали образ с контейнера докера. Короче говоря: создадите файл и ребутните контейнер - файлу пизда; создадите файл в докер контейнере и снимите образ оси со всеми причиндалами - файл похуй, даже если удалите, при ребуте он опять появится. Такое чувство, что хуёво объяснил, если да - ищите, что такое эфемерная файловая система. Получить root на heroku невозможно, поэтому мы и накатывали обновы и устанавливали всё, что надо, сразу. Есть такая штука как heroku-buildpack-apt, но не пробовал, не знаю.
2) heroku контейнер 24/7 работать не сможет, если только вы не привяжите платёжную карту на сайте (левую или подлинную, неважно). Привяжите - будет работать. А так, если для брута потребуется хотя бы 10 часов (при условии, что будет брутить до последнего слова), у вас просто выйдет время соединения и, учитывая 1 пункт, hashcat хоть и запомнит на каком пароле он остановился, но соединению пизда, дуно сервер в рестарт и у вас нихренашеньки не сохраниться. Отсюда следует: привязывайте карту.

3) Если вы привязали карту и всё у вас замечательно, но как же загрузить новые хэши? Можно непосредственно вставлять их в команду hashcat'а, но будет длинновато при большом кол-ве хэшей, а можно юзать простенькую команду:
echo "[HASHES]" > 1.txt

А вот словарь заменить уже сложнее. Поэтому либо лейте сразу с большим количеством словарей, либо как-нибудь через github подтягивайте (не вдавался в подробности, так что поиск в помощь).
При поддержке одного пиздатого .net dev'а: @udzhen
Спасибо за внимание!
С вами была АЙТИШНЯ!