PTCI_6.mp4
# Взлом паролей.
## Способы атак на парольную защиту:
1. Взлом
2. Угадывание, подбор пароля
3. Стандартные/популярные пароли
4. Фишинг

## Брутфорс
**Брутфорс(brute-force)** - взлом "грубой силой".
#### Виды брутфорса
* полный
* по словарям
* комбинированный метод
Второй способ быстрее и эффективнее, первый используется если пароль состоит из того, чего в словарях нет (необычные/генерируемые последовательности).
Бруфторс бывает:
* онлайн - брутим что-то что висит в сети.
* офлайн - брутим что-то, что уже получили(часто хэши).
## Cловари для брутфорса
---
git clone https://github.com/empty-jack/YAWR.git
git clone https://github.com/danielmiessler/SecLists.git
git clone https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt
wget http://scrapmaker.com/data/wordlists/dictionaries/rockyou.txt
---
## Хэш
**Хэш** - математическа функция от некого массива данных. Эта функция возвращает от большого объема данных-последовательность символов, знаков заданной длины. В зависимости от алгоритма может преобразовываться различным образом.
### Применение хеширования
* для хранения пароля
* для подтверждения корректности массива данных
* в криптовалютах
**Хэш**-необратимая функция. "Захешировав" файл, вернуться к целому файлу без потери информации нельзя.
В большинстве случаев, на машинах хранятся хэши паролей, а не сами пароли. Поэтому, когда вводится пароль, аутенфикация просиходит засчет того, что система сравнивает 2 хэша(введенный и сохраненный), а не сами пароли. Делается это для того, чтобы пароли было не сваровать.
Взлом заключаается в подборе такой строки, чтобы её хеш совпадал со взламываемым.
Некоторые из алгоритмов позволяют такую сситуацию, когда появляется общий хэш для двух исход значений информации - это навывается **коллизией** хэш функций.
### Тип хэша
Различаются длиной, шагами, алгоритмом.
* MD5 - 128 битный, подвержен коллизии
* SHA-1 - 160 битный, подвержен коллизии
* SHA-256 - 256 битный, используется в SSH, SSL
* NTLM - внутренние по структуре; перекодированный текст, который был хеширован с помощью MD4

## Векторы атаки
1. Dictionary
Простой, распростарненный способ. Берётся список слов и по очереди загружается для сравнивания "попал - не попал".
2. Brute-Force
Берется некая базовая последовательность символов и по очереди подставляется по символу. Этото способ медленнее предыдущего.
3. Mutated
Смешанная атака путем использования словаря, слов, символов.
4. Rainbow
Основная идея заключается в том, что зараннее генерируется большая таблица хэшей. Длина таблицы может быть коллосальна.
Когда берем хеш, по сути, ищем его с индексами, таким образом потребности генерировать хеши - нет.

## Определение типа хэша
* hashid
https://kali.tools/?p=2772
hashid -m <хеш> - сразу показывает режим для hashcat

Если вводить без "-m", Hashcat Mode показывать не будет

hashid -j <хеш> - то же для JohnTheRipper

Дополнительные возможности 
Проверить актуалиную версию HashId можно здесь
https://github.com/psypanda/hashID

* определяем вручную:
https://hashcat.net/wiki/doku.php?id=example_hashes
Имея хэш, пытаемся по внешему виду, количеству символов, открывающим символам и структуре, определить название хэша.

В данном случае - это SHA - 512
* jwt
JSON Web Tokrns - используется для разлиного вида аутенфикации, авторизации в вебе.
https://jwt.io/

### hashcat
Это самый быстрый инструмент по восстановлению паролей, использующий графический процессор.
hashcat -b - Запуск бенчмарка hashcat, меряет, с какой скоростью перебираются пароли.

Та же операци, но конкретно со 2 девайсом


Запуск:
hashcat [опции]... хеш|файл_хеша|файл_hccapx [словарь|маска|директория]...
-m - тип хеша
-a - режим атаки

Найденный хэш сохранен в файле, чтобы его оттуда "вытащить", вызываем команду --show
по словарю -a 0
полный брутфорс по маске -a 3
гибрид словарь + маска -a 6
гибрид маска + словарь -a 7

Взломанные хеши храняться в файле hashcat.potfile в той же директории, что и Hashcat.
---
### Как составлять маски в Hashcat
Для составления масок используются наборы символов.
Наборы символов в Hashcat бывают :
* встроенные наборы символов
* пользовательские наборы символов
В Hashcat встроенными наборами символов являются:
l | abcdefghijklmnopqrstuvwxyz
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
d | 0123456789
h | 0123456789abcdef
H | 0123456789ABCDEF
s | !"#$%&'()*+,-./:;<=>?@[]^_~ и косой апостроф
a | ?l?u?d?s
b | 0x00 - 0xff
Где первая колонка означает условное обозначение набора символов. Для использования в масках, перед данным обозначением необходимо поставить знак вопроса.
Например, ?u означает все заглавные буквы, ?d все цифры.
Допустим, нам известно, что маска состоит из 4 символов, из них первые 2 - заглавные буква, следующие 2 - цифры, тогда маска будет выглядеть следующим образом:
?u?u?d?d
Пример: маска, состоящую из восьми символов, каждый из которых является маленькой буквой.
?l?l?l?l?l?l?l?l
hashcat -m 0 -a 3 <хеш> ?l?l?l?l?l?
#### Маска, если длина пароля неизвестна.
i - Включить режим приращения маски
–increment-min | Число | Начать прирост маски на X, пример использования: --increment-min=4
–increment-max | Числ | Остановить прирост маски на X, пример использования: --increment-max=8
Пример (пароль имеет длину от шести до десяти символов)::
hashcat64.exe -m 0 -a 3 -i --increment-min=6 --increment-max=10 <хеш> ?l?l?l?l?l?l?l?l?l?l
Бывают ситуации, когда известны некоторые из символов пароля.
Например, нам дан хеш 53ab0dff8ecc7d5a18b4416d00568f02 и нам стало известно, что первыми символами в пароле являются “HackerU”. Тогда эти символы можно указать прямо в маске:
HackerU?l?l?l?l?l?l?l
Пример:
hashcat -m 0 -a 3 -i --increment-min=6 --increment-max=10 <хеш> HackerU?l?l?l
длинные хэши лучше брать из файла, чтобы не было служебных символов, после которых будет возможна ситуация, что половина хеша не читается.
**!! Длинные хэши лучше брать из файла, чтобы не было служебных символов, после которых будет возможна ситуация, что половина хеша не читается.**
## Онлайн брутфорс
### Patator
**Patator** – это многоцелевой онлайн брут-форсер, с модульным дизайном и гибким использованием.
Patator имеет непривычный синтаксис, чтобы грамотно его использовать нужно изучить доступные примеры.
---
Patator включён в Kali Linux 2.0 из коробки, в версиях ниже и в других системах - устанавливать с Github (утилита часто обновляется, поэтому искать актуальную версию нужно именно тут):
git clone https://github.com/lanjelot/patator.git /usr/share/patator
#### Вызываем модуль:
patator <имя модуля>
Если вызвать без опций - выведет описание модуля и help с примерам использования
#### Использование списков в файлах:
password=FILE0 0=<путь до словаря>
user=FILE1 1=<путь до словаря>
Каждый параметр модуля может быть заменен списком (но не глобальный параметр).
Например, параметр host так же можно подтягивать из файлика, как и любой другой параметр модуля.
#### Фильтрация
Перебор выдает нам статусы авторизации на smtp сервере, однако, найти в этом списке успешную попытку авторизации будет сложно.
В patator существуют глобальные параметры,
например конструкция -x ignore.
Данная конструкция может фильтровать:
* по размеру ответа (-x ignore:size=57-74),
* по статусу кода ответа (-x ignore:code=200),
* по совпадению строки и регулярному выражению(-x ignore:fgrep=’some text or regexp’)
* и по их комбинациям, например -x ignore:code=500 -x ignore:fgrep=’Internal error’ или ignore:code=200,size=57-74.
#### Управление во время работы:
* Нажмите Enter и он покажет в каком статусе он сейчас
* Во время выполнения брута вы можете ввести h, нажать Enter и он покажет доступные параметры в интерактивном режиме.
#### Доступные модули:
---
ftp_login : Brute-force FTP
ssh_login : Brute-force SSH
telnet_login : Brute-force Telnet
smtp_login : Brute-force SMTP
smtp_vrfy : Enumerate valid users using the SMTP VRFY command
smtp_rcpt : Enumerate valid users using the SMTP RCPT TO command
finger_lookup : Enumerate valid users using Finger
http_fuzz : Brute-force HTTP/HTTPS
pop_login : Brute-force POP
pop_passd : Brute-force poppassd (not POP3)
imap_login : Brute-force IMAP
ldap_login : Brute-force LDAP
smb_login : Brute-force SMB
smb_lookupsid : Brute-force SMB SID-lookup
rlogin_login : Brute-force rlogin
vmauthd_login : Brute-force VMware Authentication Daemon
mssql_login : Brute-force MSSQL
oracle_login : Brute-force Oracle
mysql_login : Brute-force MySQL
mysql_query : Brute-force MySQL queries
pgsql_login : Brute-force PostgreSQL
vnc_login : Brute-force VNC
dns_forward : Brute-force DNS
dns_reverse : Brute-force DNS (reverse lookup subnets)
ike_enum : Enumerate IKE transforms
snmp_login : Brute-force SNMPv1/2 and SNMPv3
unzip_pass : Brute-force the password of encrypted ZIP files
keystore_pass : Brute-force the password of Java keystore files
umbraco_crack : Crack Umbraco HMAC-SHA1 password hashes
---
### Утилиты для создания словарей
* Crunch
* Cewl
* Cupp
* THC - Hydra
* Medusa
* Ncrack
---
Бонус по криптографии.
www.dcode.fr для решения задач по криптографии. Есть возможность найти любой шифр.