Rainbow tables

Semestrální projekt

Bc. Jiří Černík, Bc. Vojtěch Recmaník

Další dostupné nástroje

Seznam dostupných nástrojů v Kali Linux

Zde bude seznam dostupných nástrojů

Hydra

THC Hydra je open-source nástroj určený pro penetrační testování. Je to rychlý a flexibilní nástroj pro síťové přihlašování s funkcí brute-force.

Hydra podporuje mnoho protokolů a paralelizované připojení k útoku na systémy se slabými hesly. Je to důkaz konceptu, který má ukázat výzkumníkům a bezpečnostním konzultantům, jak snadné by bylo získat neoprávněný přístup k systému.

Hydra byla testována a kompilována na různých platformách, včetně Linuxu, Windows/Cygwin, Solarisu, FreeBSD/OpenBSD, QNX (Blackberry 10) a MacOS.

Pomocí příkazové řádky můžete specifikovat, které přihlášení zkoušet, která hesla, zda se má použít SSL, kolik paralelních úloh použít k útoku atd.

Instalace nástroje

Tento nástroj je součástí distribuce Kali Linux.

Bash
sudo apt install hydra
Možnosti které nástroj nabízí
Bash
hydra -h                                                                             
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]

Options:
  -R        restore a previous aborted/crashed session
  -I        ignore an existing restore file (don't wait 10 seconds)
  -S        perform an SSL connect
  -s PORT   if the service is on a different default port, define it here
  -l LOGIN or -L FILE  login with LOGIN name, or load several logins from FILE
  -p PASS  or -P FILE  try password PASS, or load several passwords from FILE
  -x MIN:MAX:CHARSET  password bruteforce generation, type "-x -h" to get help
  -y        disable use of symbols in bruteforce, see above
  -r        use a non-random shuffling method for option -x
  -e nsr    try "n" null password, "s" login as pass and/or "r" reversed login
  -u        loop around users, not passwords (effective! implied with -x)
  -C FILE   colon separated "login:pass" format, instead of -L/-P options
  -M FILE   list of servers to attack, one entry per line, ':' to specify port
  -o FILE   write found login/password pairs to FILE instead of stdout
  -b FORMAT specify the format for the -o FILE: text(default), json, jsonv1
  -f / -F   exit when a login/pass pair is found (-M: -f per host, -F global)
  -t TASKS  run TASKS number of connects in parallel per target (default: 16)
  -T TASKS  run TASKS connects in parallel overall (for -M, default: 64)
  -w / -W TIME  wait time for a response (32) / between connects per thread (0)
  -c TIME   wait time per login attempt over all threads (enforces -t 1)
  -4 / -6   use IPv4 (default) / IPv6 addresses (put always in [] also in -M)
  -v / -V / -d  verbose mode / show login+pass for each attempt / debug mode 
  -O        use old SSL v2 and v3
  -K        do not redo failed attempts (good for -M mass scanning)
  -q        do not print messages about connection errors
  -U        service module usage details
  -m OPT    options specific for a module, see -U output for information
  -h        more command line options (COMPLETE HELP)
  server    the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)
  service   the service to crack (see below for supported protocols)
  OPT       some service modules support additional input (-U for module help)

Supported services: adam6500 asterisk cisco cisco-enable cobaltstrike cvs firebird ftp[s] http[s]-{head|get|post} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] memcached mongodb mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres radmin2 rdp redis rexec rlogin rpcap rsh rtsp s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp

Hydra is a tool to guess/crack valid login/password pairs.
Licensed under AGPL v3.0. The newest version is always available at;
https://github.com/vanhauser-thc/thc-hydra
Please don't use in military or secret service organizations, or for illegal
purposes. (This is a wish and non-binding - most such people do not care about
laws and ethics anyway - and tell themselves they are one of the good ones.)
These services were not compiled in: afp ncp oracle sapr3 smb2.

Use HYDRA_PROXY_HTTP or HYDRA_PROXY environment variables for a proxy setup.
E.g. % export HYDRA_PROXY=socks5://l:p@127.0.0.1:9150 (or: socks4:// connect://)
     % export HYDRA_PROXY=connect_and_socks_proxylist.txt  (up to 64 entries)
     % export HYDRA_PROXY_HTTP=http://login:pass@proxy:8080
     % export HYDRA_PROXY_HTTP=proxylist.txt  (up to 64 entries)

Examples:
  hydra -l user -P passlist.txt ftp://192.168.0.1
  hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
  hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
  hydra -l admin -p password ftp://[192.168.0.0/24]/
  hydra -L logins.txt -P pws.txt -M targets.txt ssh

Typy útoků

  1. Slovníkový útok: Tento typ útoku využívá slovník s možnými hesly a postupně je zkouší na přihlašovací stránce nebo službě.
  2. Bruteforce útok: Bruteforce útok je metoda hrubé síly, kde jsou zkoušeny všechny možné kombinace znaků v určité délce, dokud není nalezeno platné heslo.
  3. Kombinovaný útok: Kombinovaný útok kombinuje slovníkový útok s bruteforce útokem. Nejprve se použije slovník a poté jsou zkoušeny kombinace znaků.
  4. Paralelní útok: V tomto případě jsou prováděny různé typy útoků současně, což může urychlit proces získání hesla.
  5. Rainbow table útok: Tento typ útoku využívá předpočítané tabulky obsahující hashové hodnoty a odpovídající jim hesla, což může urychlit proces dešifrování hesel.
  6. HTTP útoky: Hydra podporuje také útoky na webové služby a přihlašovací stránky, včetně HTTP GET a POST žádostí.
  7. FTP útoky: Hydra umožňuje provádět útoky na FTP (File Transfer Protocol) služby.
  8. SSH útoky: Hydra podporuje útoky na SSH (Secure Shell) služby pro prolomení hesel.
  9. Telnet útoky: Telnet útoky umožňují prolomit hesla pro Telnet přihlášení.
  10. SIP útoky: Hydra podporuje útoky na SIP (Session Initiation Protocol) služby, které jsou používány pro VoIP komunikaci

John the Ripper

John the Ripper je otevřený nástroj pro audit bezpečnosti hesel a obnovu hesel dostupný pro mnoho operačních systémů. Tento nástroj podporuje stovky typů hashů a šifer, včetně hesel uživatelů Unixových variant (Linux, *BSD, Solaris, AIX, QNX atd.), macOS, Windows, “webových aplikací” (např. WordPress), groupware (např. Notes/Domino) a databázových serverů (SQL, LDAP atd.); zachycené síťové provoz (Windows network authentication, WiFi WPA-PSK atd.); šifrované soukromé klíče (SSH, GnuPG, kryptoměnové peněženky atd.), souborové systémy a disky (macOS .dmg soubory a “sparse bundles”, Windows BitLocker atd.), archivy (ZIP, RAR, 7z) a dokumentové soubory (PDF, Microsoft Office’s atd.).

John the Ripper je také nástroj založený na slovníku. To znamená, že pracuje se slovníkem běžných hesel, který porovnává s daným hashem. Zatímco můžete používat populární seznamy slov jako RockYou, John má také svůj vlastní soubor slovníků s tisíci běžných hesel. To činí Johna velmi efektivním při prolamování systémů se slabými hesly.

John the Ripper je oblíbeným nástrojem pro prolomení hesel, který lze použít k provádění útoků hrubou silou pomocí různých šifrovacích technologií a užitečných slovníků. Je to rychlý, flexibilní a bezplatný open-source nástroj navržený pro praskání hesel a testování bezpečnosti systému.

Byl navržen pro testování síly hesel, hrubou sílu šifrovaných (hashovaných) hesel a praskání hesel pomocí slovníkových útoků. John the Ripper je součástí rodiny penetračních testovacích / hackingových nástrojů Rapid7.

Instalace nástroje

Tento nástroj je součástí distribuce Kali Linux.

Bash
sudo apt install john
Možnosti které nástroj nabízí
Bash
John the Ripper 1.9.0-jumbo-1+bleeding-aec1328d6c 2021-11-02 10:45:52 +0100 OMP [linux-gnu 64-bit x86_64 SSE2 AC]
Copyright (c) 1996-2021 by Solar Designer and others
Homepage: https://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]

--help                     Print usage summary
--single[=SECTION[,..]]    "Single crack" mode, using default or named rules
--single=:rule[,..]        Same, using "immediate" rule(s)
--single-seed=WORD[,WORD]  Add static seed word(s) for all salts in single mode
--single-wordlist=FILE     *Short* wordlist with static seed words/morphemes
--single-user-seed=FILE    Wordlist with seeds per username (user:password[s]
                           format)
--single-pair-max=N        Override max. number of word pairs generated (6)
--no-single-pair           Disable single word pair generation
--[no-]single-retest-guess Override config for SingleRetestGuess
--wordlist[=FILE] --stdin  Wordlist mode, read words from FILE or stdin
                  --pipe   like --stdin, but bulk reads, and allows rules
--rules[=SECTION[,..]]     Enable word mangling rules (for wordlist or PRINCE
                           modes), using default or named rules
--rules=:rule[;..]]        Same, using "immediate" rule(s)
--rules-stack=SECTION[,..] Stacked rules, applied after regular rules or to
                           modes that otherwise don't support rules
--rules-stack=:rule[;..]   Same, using "immediate" rule(s)
--rules-skip-nop           Skip any NOP ":" rules (you already ran w/o rules)
--loopback[=FILE]          Like --wordlist, but extract words from a .pot file
--mem-file-size=SIZE       Size threshold for wordlist preload (default 2048 MB)
--dupe-suppression         Suppress all dupes in wordlist (and force preload)
--incremental[=MODE]       "Incremental" mode [using section MODE]
--incremental-charcount=N  Override CharCount for incremental mode
--external=MODE            External mode or word filter
--mask[=MASK]              Mask mode using MASK (or default from john.conf)
--markov[=OPTIONS]         "Markov" mode (see doc/MARKOV)
--mkv-stats=FILE           "Markov" stats file
--prince[=FILE]            PRINCE mode, read words from FILE
--prince-loopback[=FILE]   Fetch words from a .pot file
--prince-elem-cnt-min=N    Minimum number of elements per chain (1)
--prince-elem-cnt-max=[-]N Maximum number of elements per chain (negative N is
                           relative to word length) (8)
--prince-skip=N            Initial skip
--prince-limit=N           Limit number of candidates generated
--prince-wl-dist-len       Calculate length distribution from wordlist
--prince-wl-max=N          Load only N words from input wordlist
--prince-case-permute      Permute case of first letter
--prince-mmap              Memory-map infile (not available with case permute)
--prince-keyspace          Just show total keyspace that would be produced
                           (disregarding skip and limit)
--subsets[=CHARSET]        "Subsets" mode (see doc/SUBSETS)
--subsets-required=N       The N first characters of "subsets" charset are
                           the "required set"
--subsets-min-diff=N       Minimum unique characters in subset
--subsets-max-diff=[-]N    Maximum unique characters in subset (negative N is
                           relative to word length)
--subsets-prefer-short     Prefer shorter candidates over smaller subsets
--subsets-prefer-small     Prefer smaller subsets over shorter candidates
--make-charset=FILE        Make a charset, FILE will be overwritten
--stdout[=LENGTH]          Just output candidate passwords [cut at LENGTH]
--session=NAME             Give a new session the NAME
--status[=NAME]            Print status of a session [called NAME]
--restore[=NAME]           Restore an interrupted session [called NAME]
--[no-]crack-status        Emit a status line whenever a password is cracked
--progress-every=N         Emit a status line every N seconds
--show[=left]              Show cracked passwords [if =left, then uncracked]
--show=formats             Show information about hashes in a file (JSON)
--show=invalid             Show lines that are not valid for selected format(s)
--test[=TIME]              Run tests and benchmarks for TIME seconds each
                           (if TIME is explicitly 0, test w/o benchmark)
--stress-test[=TIME]       Loop self tests forever
--test-full=LEVEL          Run more thorough self-tests
--no-mask                  Used with --test for alternate benchmark w/o mask
--skip-self-tests          Skip self tests
--users=[-]LOGIN|UID[,..]  [Do not] load this (these) user(s) only
--groups=[-]GID[,..]       Load users [not] of this (these) group(s) only
--shells=[-]SHELL[,..]     Load users with[out] this (these) shell(s) only
--salts=[-]COUNT[:MAX]     Load salts with[out] COUNT [to MAX] hashes, or
--salts=#M[-N]             Load M [to N] most populated salts
--costs=[-]C[:M][,...]     Load salts with[out] cost value Cn [to Mn]. For
                           tunable cost parameters, see doc/OPTIONS
--fork=N                   Fork N processes
--node=MIN[-MAX]/TOTAL     This node's number range out of TOTAL count
--save-memory=LEVEL        Enable memory saving, at LEVEL 1..3
--log-stderr               Log to screen instead of file
--verbosity=N              Change verbosity (1-5 or 6 for debug, default 3)
--no-log                   Disables creation and writing to john.log file
--bare-always-valid=Y      Treat bare hashes as valid (Y/N)
--catch-up=NAME            Catch up with existing (paused) session NAME
--config=FILE              Use FILE instead of john.conf or john.ini
--encoding=NAME            Input encoding (eg. UTF-8, ISO-8859-1). See also
                           doc/ENCODINGS.
--input-encoding=NAME      Input encoding (alias for --encoding)
--internal-codepage=NAME   Codepage used in rules/masks (see doc/ENCODINGS)
--target-encoding=NAME     Output encoding (used by format)
--force-tty                Set up terminal for reading keystrokes even if we're
                           not the foreground process
--field-separator-char=C   Use 'C' instead of the ':' in input and pot files
--[no-]keep-guessing       Try finding plaintext collisions
--list=WHAT                List capabilities, see --list=help or doc/OPTIONS
--length=N                 Shortcut for --min-len=N --max-len=N
--min-length=N             Request a minimum candidate length in bytes
--max-length=N             Request a maximum candidate length in bytes
--max-candidates=[-]N      Gracefully exit after this many candidates tried.
                           (if negative, reset count on each crack)
--max-run-time=[-]N        Gracefully exit after this many seconds (if negative,
                           reset timer on each crack)
--mkpc=N                   Request a lower max. keys per crypt
--no-loader-dupecheck      Disable the dupe checking when loading hashes
--pot=NAME                 Pot file to use
--regen-lost-salts=N       Brute force unknown salts (see doc/OPTIONS)
--reject-printable         Reject printable binaries
--tune=HOW                 Tuning options (auto/report/N)
--subformat=FORMAT         Pick a benchmark format for --format=crypt
--format=[NAME|CLASS][,..] Force hash of type NAME. The supported formats can
                           be seen with --list=formats and --list=subformats.
                           See also doc/OPTIONS for more advanced selection of
                           format(s), including using classes and wildcards.

Typy útoků

  1. Brute Force (útok hrubou silou): Tento typ útoku zkouší všechny možné kombinace znaků v určitém rozmezí. John the Ripper může provést útok hrubou silou na hesla, kde zkouší všechny možné kombinace znaků v definovaném rozsahu.
  2. Slovníkový útok: John the Ripper může provést útok pomocí předdefinovaného slovníku hesel. Tento útok je založen na zkoušení různých kombinací slov, frází nebo hesel, které jsou uloženy v textovém souboru.
  3. Hybridní útok: Tento typ útoku kombinuje techniky útoku hrubou silou a slovníkového útoku. John the Ripper může zkoušet kombinace znaků z definovaného rozsahu a současně používat slovník k testování hesel.
  4. Útok pomocí masky: Tento typ útoku umožňuje definovat specifické vzory nebo masky, které nástroj použije k generování kombinací hesel. To umožňuje zúžit útok pouze na určité vzory, což může výrazně zvýšit účinnost útoku.
  5. Rainbow table attack (útok pomocí duhových tabulek): John the Ripper může být také použit k provádění útoků pomocí duhových tabulek, což jsou předpočítané tabulky obsahující hashové hodnoty hesel a odpovídající jim plaintextová hesla


Zdroje:

[1] How to Crack Hashes with Hashcat — a Practical Pentesting Guide. FreeCodeCamp [online]. [cit. 2024-04-01]. Dostupné z: https://www.freecodecamp.org/news/hacking-with-hashcat-a-practical-guide/

[2] Prolamování hesel pomocí nástroje Hashcat [online]. HACKINGLAB. [cit. 2024-04-01]. Dostupné z: https://hackinglab.cz/cs/blog/prolamovani-hesel-pomoci-nastroje-hashcat/

[3] What is a Rainbow Table Attack? How To Protect Against It? [online]. 1Kosmos. [cit. 2024-05-06]. Dostupné z: https://www.1kosmos.com/authentication/rainbow-table-attack/

[4] Understanding Rainbow Table Attack [online]. GeeksforGeeks. [cit. 2024-05-06]. Dostupné z: https://www.geeksforgeeks.org/understanding-rainbow-table-attack/

[5] Rainbow table. Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/Rainbow_table. [cit. 2024-05-06].

[6] hashcat | Kali Linux Tools [online]. Kali. [cit. 2024-05-06]. Dostupné z: https://www.kali.org/tools/hashcat/

[7] How to Use Hashcat for Password Cracking (2024 Guide) [online]. StationX. [cit. 2024-05-06]. Dostupné z: https://www.stationx.net/how-to-use-hashcat/

[8] MD5. Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/MD5. [cit. 2024-05-06].

[9] SHA-1. Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/SHA-1. [cit. 2024-05-06].

[10] SHA-2. Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/SHA-2. [cit. 2024-05-06].

[11] BLAKE (hash function). Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/BLAKE_(hash_function). [cit. 2024-05-06].

[12] Salt (cryptography). Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/Salt_(cryptography). [cit. 2024-05-06].

[13] Adding Salt to Hashing: A Better Way to Store Passwords [online]. Auth0 Blog. [cit. 2024-05-06]. Dostupné z: https://auth0.com/blog/adding-salt-to-hashing-a-better-way-to-store-passwords/

[14] What is Salted Password Hashing? [online]. GeeksforGeeks. [cit. 2024-05-06]. Dostupné z: https://www.geeksforgeeks.org/what-is-salted-password-hashing/

[15] V úniku z Mallu je přes tři čtvrtě milionu jmen, hesel a telefonních čísel v čitelné podobě [online]. Lupa.cz. [cit. 2024-05-05]. Dostupné z: https://www.lupa.cz/clanky/v-uniku-z-mallu-je-pres-tri-ctvrte-milionu-jmen-hesel-a-telefonnich-cisel-v-citelne-podobe/

[16] Mall.cz dostal za obří únik dat svých uživatelů pokutu 1,5 milionu Kč [online]. Lupa.cz. [cit. 2024-05-05]. Dostupné z: https://www.lupa.cz/aktuality/mall-cz-dostal-za-obri-unik-dat-svych-uzivatelu-pokutu-1-5-milionu-kc

[17] Gigantický únik dat z Mall.cz [online]. KYBEZ. [cit. 2024-05-05]. Dostupné z: https://kybez.cz/giganticky-unik-dat-z-mall-cz/

[18] Na prodej je 117 milionů hesel z LinkedIn, za 2 200 dolarů [online]. Lupa.cz. [cit. 2024-05-05]. Dostupné z: https://www.lupa.cz/clanky/na-prodej-je-117-mlionu-hesel-z-linkedin-za-2-200-dolaru/

[19] Nejčastější hesla 130 milionů uživatelů Adobe? 12346 i password [online]. Živě.cz. [cit. 2024-05-05]. Dostupné z: https://www.zive.cz/bleskovky/nejcastejsi-hesla-130-milionu-uzivatelu-adobe-12346-i-password/sc-4-a-171170/default.aspx

[20] Adobe napadeno: Hacker získal tři miliony účtů uživatelů i zdrojové kódy [online]. Živě.cz. [cit. 2024-05-05]. Dostupné z: https://www.zive.cz/bleskovky/adobe-napadeno-hacker-ziskal-tri-miliony-uctu-uzivatelu-i-zdrojove-kody/sc-4-a-170810/default.aspx

[21] 2012 LinkedIn hack. Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/2012_LinkedIn_hack. [cit. 2024-05-05].

[22] Yahoo! data breaches. Online. In: Wikipedia: the free encyclopedia. San Francisco (CA): Wikimedia Foundation, 2001-. Dostupné z: https://en.wikipedia.org/wiki/Yahoo!_data_breaches. [cit. 2024-05-05].