---
title: "Wstęp do łamania haseł #1 Intro"
url: "https://unshade.pl/blog/wstep-do-lamania-hasel-intro"
lang: "pl"
date: "11.11.2022"
author: "Unshade"
---

# Wstęp do łamania haseł #1 Intro

*Opublikowano: 11.11.2022*

Chcesz zacząc łamać hashe? To świetnie trafiłeś! Pozwól nam pokazać i objaśnić jak wykorzystać narzędzie Hashcat do łamania haseł.

_Jest to pierwszy artykuł z serii - przeznaczonej dla początkujących,rozpoczynająćych swoją przygodę z łamaniem haseł_

**Kilka rzeczy, które warto wiedzieć na początek. | Tak to ja! mr.obvious...**

Aby Hashcat mógł rozpocząć łamanie w trybie ataku słownikowego potrzebujemy:

- Hasza, który będziemy łamać
- Świadomości rodzaju/typu hasza (jego hashcatowego ID)
- I wypadało by posiadać słownik ( o słownikach więcej w części 2 )

Co to jest atak słownikowy? To bardzo prosta metoda - hashcat 'haszuje' każdy wpis z pliku tekstowego, linia po lini, jeden po drugim, i sprawdza, czy któryś z nich pasuje do hasza, który próbuje złamać. Jeśli tak, sukces - złamaliśmy skubańca!

## Określenie typu hasza

Pierwszym krokiem jest określenie, z jakim rodzajem hasza mamy do czynienia. Dlaczego to jest ważne?

Hashcat wymaga podania parametru `-m` (typ hasza) - musi wiedzieć jaki algorytm hashujący będzie łamać. Typy hashy są reprezentowane numerycznie np. NTLM to ID 1000 (`-m 1000`).

Podczas pentestów czy audytów haseł w 99 na 100 przypadków znamy pochodzenie hasha i możemy bez problemu określić jaki to algorytm. Problem pojawia się gdy takowej wiedzy nie posiadamy a algorytm ma 'wielu blizniakow' czyli jest blizniaczo podobny (te sane znaki,ta sama dlugość) do innego jak md5,md4,ntlm.. ( tutaj potwierdzamy dany algorytm dopiero z pierwszym złamanym hashem.. sic!)

Jak dowiedzieć się, jaki typ hasza mamy? Mamy do dyspozycji kilka narzędzi, które w tym pomogą. Oto niektóre z nich:

> https://www.tunnelsup.com/hash-analyzer
 https://hashes.com/en/tools/hash_identifier
 https://md5hashing.net/hash_type_checker
 https://www.dcode.fr/hash-identifier

**Wszystkie hashe przesyłane na powyższe lub inne serwisy - już tam zostają - podczas pentestów,audytów nie przesyłamy do sieci hashy klientów - wszystko robimy lokalnie.**

a jak lokalnie, to wiersz poleceń i tu mamy narzędzia takie jak:

> https://github.com/blackploit/hash-identifier
 https://github.com/noraj/haiti
 https://github.com/HashPals/Name-That-Hash

> Pamiętaj, że te narzędzia bazują na długości hasza, znaków jakie w nim występują itd - by określić jego typ - one pomagają w określeniu typu w lepszy lug gorszy sposób określając liste potencjalnych algorytmów.

Hash `ABAF3912CA4ABADF8823CEC34B785BC8` może być zarówno MD5, jak i NTLM.

Przykład:

HASH NTLM: `ABAF3912CA4ABADF8823CEC34B785BC8` - [AlphaPwners]

Haiti:

![Przykład obrazka](/_emdash/api/media/file/01M5A269E7MH99NEABXSVX83Q4.png)

HashID:

![Przykład obrazka](/_emdash/api/media/file/01M5A269TNVVKWJYD991VKSEF2.png)

**hashcat też potrafi w identyfikacje hashy, wystarczy pominąc przełąćznik -m**

#### Co jeszcze?

Innym sposobem na rozpoznanie typu hasza jest skorzystanie z listy przykładowych hashy w Hashcat. Można ją wyświetlić za pomocą polecenia `hashcat --example-hashes`, lub odwiedzić stronę https://hashcat.net/wiki/doku.php?id=example_hashes.

Często wystarczy skopiować początek hasza i wyszukać go na stronie z przykładowymi hashami.

Zgodnie z example_hashes:

`**$2a$05$**``LhayLxezLhK1LhWvKxCy`**[...]**`vQJLF6` to będzie **3200 bcrypt, Blowfish (Unix)** .

`**$office$*2007*20*128*16**``*411a51284e0d0200b131a89a5cc*1`**[...]**`81cde` to będzie **9400 MS Office 2007** .

`**$krb5asrep$23$**``administrator@company.local:36246105349`**[...]**`60e94` to będzie **18200 Kerberos 5, etype 23, AS-REP** .

**Szukamy oczywiśćie nie cały hash, a zazwyczaj sam początek: **`****$2a$05$****`** , **`****$office$*2007*20*128*16****`**,**`****$krb5asrep$23$****`

## Zacznijmy w końcu łamać te hasła!

Hash w poniższym przykładzie można złamać przy użyciu popularnego słownika `rockyou.txt`. Jest to a na pewno powinien być pierwszy wybór w każdym CTF/HackTheBox/TryHackMe/Labach/Egzaminach/Whatever, gdzie chodzi o łamanie hashy lub brute forcing.

Można pobrać go z https://raw.githubusercontent.com/praetorian-inc/Hob0Rules/master/wordlists/rockyou.txt.gz

OK to na początek - złammy ten hash:

`0a909ffe7be1ffe2ec130aa243a64c26`

Algorytm haszowania to **MD5**, a odpowiednie ID w Hashcat dla MD5 to `0`.

Hashcat wspiera wiele ataków, takich jak:

- Atak słownikowy [a0 - atak domyslny]
- Atak maskowy (rodzaj brute force) [a3]
- Atak kombinacyjny [a1]
- Atak oparty na regułach [a0 + extra steps] i inne które opiszemy w kolejnych postach.

W tym poście używany jest tylko tryb **ataku słownikowego**. Zachęcamy do zapoznania się z kolejnymi postami o łamaniu hashy, aby poznać inne metody.

Aby użyć ataku słownikowego, należy podać przełącznik `-a` z wartością `0`.

Aby zacząć łamać musimy odpowiednio podać wszystko do hashcata:

```bash
hashcat -m0 -a0 '0a909ffe7be1ffe2ec130aa243a64c26' 'rockyou.txt.gz' -O
```

Wyjaśnienie komendy:
 -m 0 - identyfikator określający typ hasha (w tym przypadku MD5)
 -a 0 - wartość określająca tryb ataku (w tym przypadku to atak słownikowy)
 0a909ffe7be1ffe2ec130aa243a64c26 - hash do złamania
 rockyou.txt.gz - plik słownika (może być skompresowany w zip,7z,gz)
 -O - Włączenie flagi opotymalizacji (ogranicza długość hasła zazwyczaj do 27 w zamian za większą szybkość łamania)

kolejność jest bardzo ważna:

[HASH(e)] [slownik]... - podajac pierwszy słownik, hashcat weźmie wordliste za liste hashy.

![Example image](/_emdash/api/media/file/01M5A26A4P9Q2P6GJQQFBB154S.png)

![Example image](/_emdash/api/media/file/01M5A26AFVKBS01YS5H2MD3D71.png)

**Gotcha!**

![Przykład obrazka](/_emdash/api/media/file/01M5A26ASPXYF08RBMDT0FHKPD.png)

Aby wyświetlić wcześniej złamane hasze w Hashcat, należy użyć przełącznika `--show`.

```bash
hashcat '0a909ffe7be1ffe2ec130aa243a64c26' --show 
```

Kiedy hasło zostanie **złamane**, Hashcat zapisuje jego wartość w pliku **hashcat.potfile**, w formacie **'hash'**:**'hasło'**. W zależności od systemu lub konfiguracji instalacji Hashcat, miejsce, w którym ten plik jest zapisany, może się różnić, np.

**Kali Linux**:
 `**~/.local/share/hashcat/hashcat.potfile**`

**System Ubuntu**:
 `**~/.local/share/hashcat/hashcat.potfile**`

Jeśli nie możemy znaleźć pliku .potfile, wystarczy wykonać komendę:

```bash
find / -name hashcat.potfile
```

![Example image](/_emdash/api/media/file/01M5A26B2FDSM2DDAJAH2Y2WMJ.png)

## Więcej hashy, więcej zabawy.

Hashcat, oczywiście, wspiera łamanie wielu hashy naraz. Wystarczy zamienić hash, który chcemy złamać, na nazwę pliku zawierającego hashe. Plik z hashami powinien zawierać tylko hashe jednego algorytmu - co absolutnie nie jest niezbedne ale przy większych hashlistach robi to różnice - tak naprawde wybierajac odpowiedni moduł do ataku np. -m1000 hashcat sam odrzuci hashe nie pasujące do wzorca ntlm - ale to zabiera czas, który można przeznaczyć na łamanie :f

Jak w przypadku wordlisty - każdy hash powinien być umieszczony w nowej linii, jak poniżej:

![](/_emdash/api/media/file/01M5A26BCMJPK9D1DG54K7VDKF.webp)

**[POBIERZ]**

> hashe do złamania: [unshade-hash-b1.txt](/files/blog/wstep-do-lamania-hasel-intro/unshade-hash-b1.txt)

```bash
hashcat -a0 -m0 unshade-hash-b1.txt 'rockyou.txt.gz' -O
```

## Homework

[1]

> 005fa475cd6073c2a3299aa31d9e9025b8737b94
 9790595269fbdf7792bd4012158b61f51d38814d
 4ffc350caaa08aadf788774a3c13954b2da8bf52
 9d41cc7a34c3c34c4e3a65332358aac11c25ce5e

[2]

> 7900d6556a7deb9818041aea381872a8
 64463bf3c02ba2b295421e607ad15ab2
 08e948966ffdfc3d3618b15ae4dc7610
 004a6beec22971468ecff512fd7902ac

[3]

> 15CB872FA3FEAAA7B965B8DB21DF61DE
 E3A116866FED857F74EC3E62F38E60FD
 D3F81F595A598A5CF8D535B91EF57857
 38DDD8ED7F48687DAF504C9C918B598F
