Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 84 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
# Autocrackeo
Programa en python que automatiza el uso del hashcat para crackear contraseñas
Programa en python que automatiza el uso del hashcat para crackear contraseñas.

![image](docs/robot1.jpg)

Está diseñado específicamente para situaciones en las que se dispone de recursos limitados y no es posible afrontar ataques de fuerza bruta a gran escala. En estos casos, resulta útil contar con un amplio conjunto de herramientas, como diccionarios, máscaras y reglas, que maximicen el resultado de hashes crackeados en el menor tiempo posible.

La idea es contar con varios archivos, como fast.json, basic.json o full.json, que contengan ataques predefinidos de Hashcat adaptados a distintos niveles de velocidad y eficiencia. Al ejecutar el autocrackeo con uno de estos archivos, el programa lanzará automáticamente los ataques de Hashcat en secuencia, aplicando los diccionarios, reglas y máscaras definidos, sin necesidad de supervisión.

Específicamente pensado para el caso de no tener excesivos recursos y no poder afrontar grandes ataques de fuerza bruta. En este caso es interesante tener a mano un amplio conjunto de recursos como diccionarios, máscaras y reglas que maximicen el resultado de hashes crackeados en el menor tiempo posible.

La idea es tener varios archivos como fast.json, basic.json, full.json, etc. con ataques de hashcat predefinidos que se ajusten a la velocidad/eficiencia que se requiera en cada momento. Al ejecutar el autocrackeo especificando uno de estos archivos, el programa ejecutará secuencialmente (sin necesidad de supervisión) los ataques de hashcat con los diccionarios, reglas y máscaras definidos en él.

Para ejecutar un archivo de ataques: (ejemplo para lanzar fast.json)
> python3 autocrackeo.py -m 1000 -i docs\test_files\ntlm.hash -w docs\test_files\custom.dic -o docs\test_files\results --feedback -a fast --verbose
Expand Down Expand Up @@ -35,9 +39,48 @@ pip3 install -r requirements.txt
```

Descargar recursos externos semi-automáticamente: (en proceso de mejora)
* Ejecutar el script de configuración donde están los enlaces a recursos externos que son muy interesantes (diccionarios, reglas, máscaras...)
Ejecutar el script de configuración donde están los enlaces a recursos externos(diccionarios, reglas, máscaras...)
* Windows
```
python3 windows_setup.py
```
* Linux
```
python3 linux_setup.py
```

Descargar hashcat de la pagina web oficial:
* https://hashcat.net/hashcat/

## Easy run

Tras instalar hashcat, los módulos requeridos de python, y los recursos internos se procederá a ejecutar la herramienta de la siguiente manera.

Se recomienda crear inicialmente la siguiente estructura de carpetas para cada proyecto:

* **%PATH_PROYECTO%**
* **hash**
* ntlm.txt
* **results**
* custom.txt

Tras crear la estructura de carpetas se deberá abrir un ventana de comandos CMD o Powershell y dirigirse a la carpeta descargada anterriormente de **hashcat** donde se encuentra *hashcat.exe*. Una vez se encuentra en ese directorio, es posible ejecutar diferentes ataques de autocrackeo:

```console
cd %PATH_HASHCAT%

python3 %PATH_AUTOCRACKEO%/autocrackeo.py -a quick_test -m 1000 -i %PATH_PROYECTO%\hash\ntlm.hash -w %PATH_PROYECTO%\custom.txt -o %PATH_PROYECTO%\results --feedback --verbose -e="--username"

```
python3 setup.py

**TIP-1**: En caso de que lanzes esta herramienta desde un ordenador portatil o con GPU limitada, puede que sea necesario añadir el valor --force al parametro -e.
```console
python3 %PATH_AUTOCRACKEO%/autocrackeo.py -a quick_test -m 1000 -i %PATH_PROYECTO%\hash\ntlm.hash -w %PATH_PROYECTO%\custom.txt -o %PATH_PROYECTO%\results --feedback --verbose -e="--force --username"
```

**TIP-2**: Depende el formato en el que se almacene el hash en el archivo (en este caso ntlm.txt), puede que nosea necesario añadir el valor --username al parametro -e.
```console
python3 %PATH_AUTOCRACKEO%/autocrackeo.py -a quick_test -m 1000 -i %PATH_PROYECTO%\hash\ntlm.hash -w %PATH_PROYECTO%\custom.txt -o %PATH_PROYECTO%\results --feedback --verbose -e="--force"
```

## Manual de usuario
Expand Down Expand Up @@ -122,20 +165,26 @@ Diccionarios: wordlists/
* super.dic: recolección de palabras genéricas, lugares, colores, nombres, fechas... susceptibles de aparecer en contraseñas
* añadir más diccionarios:
* rockyou: http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2
* WeekPass: https://weakpass.com/wordlists
* hashkiller: https://hashkiller.co.uk/downloads.aspx
* colecciones de usuarios, contraseñas, urls, patrones...: https://github.com/danielmiessler/SecLists
* palabras típicas: https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english.txt

Reglas: rules/
* fast.rule, basic.rule, full.rule: creadas específicamente para esta herramienta según en nivel de complejidad deseado
* añadir más reglas:
* best64.rule, d3ad0ne.rule y T0XIC.rule: https://github.com/hashcat/hashcat/tree/master/rules
* best66.rule, d3ad0ne.rule y T0XIC.rule: https://github.com/hashcat/hashcat/tree/master/rules
* hob064.rule: https://github.com/praetorian-inc/Hob0Rules
* OneRuleToRuleThemAll.rule: https://github.com/NotSoSecure/password_cracking_rules
* toggles-lm-ntlm.rule: https://github.com/trustedsec/hate_crack/blob/master/rules/toggles-lm-ntlm.rule
* haku34K.rule: https://raw.githubusercontent.com/kaonashi-passwords/Kaonashi/master/rules/haku34K.rule,
* kamaji34K.rule: https://raw.githubusercontent.com/kaonashi-passwords/Kaonashi/master/rules/kamaji34K.rule,
* haku34K.rule: https://raw.githubusercontent.com/kaonashi-passwords/Kaonashi/master/rules/haku34K.rule
* kamaji34K.rule: https://raw.githubusercontent.com/kaonashi-passwords/Kaonashi/master/rules/kamaji34K.rule
* yubaba64.rule: https://raw.githubusercontent.com/kaonashi-passwords/Kaonashi/master/rules/yubaba64.rule
* T0XlC_3_rule: https://raw.githubusercontent.com/hashcat/hashcat/master/rules/T0XlC_3_rule.rule
* top10_2023: https://raw.githubusercontent.com/hashcat/hashcat/master/rules/top10_2023.rule
* pantagrule.private.v5: https://github.com/rarecoil/pantagrule/raw/refs/heads/master/rules/private.v5/
* pantagrule.hashorg.v6: https://github.com/rarecoil/pantagrule/raw/refs/heads/master/rules/hashesorg.v6/
* OneRuleToRuleThemStill: https://raw.githubusercontent.com/stealthsploit/OneRuleToRuleThemStill/refs/heads/main/OneRuleToRuleThemStill.rule


Máscaras: masks/
Expand All @@ -153,6 +202,17 @@ Configuraciones de ataques automáticos:
* fast.json: configuración para una ejecución rápida con pocos intentos.
* basic.json: configuración para una ejecución básica, que en minutos/horas sea capaz de probar las contraseñas/reglas/máscaras más frecuentes.
* full.json: configuración para una ejecución más completa, puede tardar semanas, meses, años incluso. Además de probar las opciones básicas, añadirá reglas combinadas con diccionarios grandes, máscaras que abarquen más caracteres de fuerza bruta, etc.
* all_ES_high_probability.json: ataques predefinidos cuando el objetivo son contraseñas en castellano
* ES_high_probability_only_wordlists.json: prueba una vez los diccionarios kaonashi14M, cyclone_hk y hashkiller-dict.
* ES_high_probability_tiny_rules.json: prueba una vez los diccionarios anteriores junto con las reglas de menos de 100KB.
* ES_high_probability_only_haku34K.rule.json: prueba una vez los diccionarios anteriores junto con las reglas haku34K. Gran impacto, pero requiere tiempo.
* ES_high_probability_medium_big_rules.rule.json: prueba una vez los diccionarios anteriores junto con las reglas de mas de 100KB.
* all_ANY_high_probability.json: ataques predefinidos cuando el objetivo son contraseñas en castellano
* ANY_high_probability_only_wordlists.json: prueba una vez los diccionarios rockyou-65.txt, kaonashi14M.txt, ignis-10K.txt, rockyou-60.txt, 10_million_password_list_top_10000.txt, hashmob.net.small.found.txt, hk_hlm_founds.txt, ignis-10M.txt, piotrcki-wordlist-top10m.txt, hashmob.net.large.found.txt, cyclone_hk.txt y hashkiller-dict.txt.
* ANY_high_probability_tiny_rules.json: prueba una vez los diccionarios anteriores junto con las reglas de menos de 100KB.
* ANY_high_probability_only_haku34K.rule.json: prueba una vez los diccionarios anteriores junto con las reglas haku34K. Gran impacto, pero requiere tiempo.
* ANY_high_probability_medium_big_rules.rule.json: prueba una vez los diccionarios anteriores junto con las reglas de mas de 100KB.
* all_new.json: Metodo reorganizado de cracking adaptando de base el antiguo denominado como all.json.
* all_wordlists_all_rules.json: todas las combinaciones de cada diccionario con cada regla
* one_word_per_hash.json: generar un diccionario sólo con los nombres de usuario y probar únicamente usuario=contraseña
* puede resultar útil teniendo hashes de formato de hashes complejos (que tardan mucho en cada prueba)
Expand All @@ -173,6 +233,20 @@ El proyecto está dividido por directorios de distintos recursos. Aunque en ning
* changelog.md: aquí se irán indicando los cambios realizados y las nuevas ideas por desarrollar
* Tutorial de crackeo (para hashcat).md: aquí he reunido los conceptos y ejemplos del hashcat que me han sido de utilidad para realizar este proyecto.
* Archivo de hashes y diccionario para pruebas.
## Licencia

Shield: [![CC BY-NC-SA 4.0][cc-by-nc-sa-shield]][cc-by-nc-sa]

This work is licensed under a
[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].

[![CC BY-NC-SA 4.0][cc-by-nc-sa-image]][cc-by-nc-sa]

[cc-by-nc-sa]: http://creativecommons.org/licenses/by-nc-sa/4.0/
[cc-by-nc-sa-image]: https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png
[cc-by-nc-sa-shield]: https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg
##

## Autora
* **Eneritz Azqueta** → Auditora en **S21sec**
## Autores
* **Eneritz Azqueta** → Auditora en **SIA**
* **Dimas Pastor** → Auditor en **Cybertix**
58 changes: 58 additions & 0 deletions attacks/ANY/ANY_high_probability_medium_big_rules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"files": {
"wordlists_files": [
"custom.txt",
"rockyou-65.txt",
"ignis-10K.txt",
"rockyou-60.txt",
"10_million_password_list_top_10000.txt",
"hashmob.net.small.found.txt",
"hk_hlm_founds.txt",
"ignis-10M.txt",
"piotrcki-wordlist-top10m.txt",
"hashmob.net.large.found.txt",
"kaonashi14M.txt",
"cyclone_hk.txt",
"hashkiller-dict.txt"
],
"rules_files": [
"d3ad0ne.rule",
"rockyou-30000.rule",
"kamaji34K.rule",
"OneRuleToRuleThemStill.rule",
"pantagrule.private.v5.popular.rule",
"pantagrule.private.v5.random.rule",
"pantagrule.private.v5.hybrid.rule",
"pantagrule.hashorg.v6.popular.rule",
"pantagrule.hashorg.v6.random.rule",
"pantagrule.hashorg.v6.hybrid.rule"
],
"masks_files": [
"kaonashi.hcmask"
]
},
"attacks" : {
"straight_with_rules_files": [
{"wordlists": [], "rules": [0]},
{"wordlists": [], "rules": [1]},
{"wordlists": [], "rules": [2]},
{"wordlists": [], "rules": [3]},
{"wordlists": [], "rules": [4]},
{"wordlists": [], "rules": [5]},
{"wordlists": [], "rules": [6]},
{"wordlists": [], "rules": [7]},
{"wordlists": [], "rules": [8]},
{"wordlists": [], "rules": [9]}

],
"straight_with_combined_rules_files": [
],
"brute_force_with_masks_files": [
{"masks": [0], "increment_enable": 0, "increment_min": 0, "increment_max": 0}
]
}
}




35 changes: 35 additions & 0 deletions attacks/ANY/ANY_high_probability_only_haku34K.rule.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"files": {
"wordlists_files": [
"custom.txt",
"kaonashi14M.txt",
"cyclone_hk.txt",
"hashkiller-dict.txt",
"rockyou-65.txt",
"ignis-10K.txt",
"rockyou-60.txt",
"10_million_password_list_top_10000.txt",
"hashmob.net.small.found.txt",
"hk_hlm_founds.txt",
"ignis-10M.txt",
"piotrcki-wordlist-top10m.txt",
"hashmob.net.large.found.txt"
],
"rules_files": [
"haku34K.rule"

],
"masks_files": [
"kaonashi.hcmask"
]
},
"attacks" : {
"straight_with_rules_files": [
{"wordlists": [], "rules": [0]}
]
}
}




27 changes: 27 additions & 0 deletions attacks/ANY/ANY_high_probability_only_wordlists.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"files": {
"wordlists_files": [
"rockyou-65.txt",
"kaonashi14M.txt",
"ignis-10K.txt",
"rockyou-60.txt",
"10_million_password_list_top_10000.txt",
"hashmob.net.small.found.txt",
"hk_hlm_founds.txt",
"ignis-10M.txt",
"piotrcki-wordlist-top10m.txt",
"hashmob.net.large.found.txt",
"cyclone_hk.txt",
"hashkiller-dict.txt"
]
},
"attacks" : {
"straight": [
{"wordlists": []}
]
}
}




54 changes: 54 additions & 0 deletions attacks/ANY/ANY_high_probability_tiny_rules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"files": {
"wordlists_files": [
"custom.txt",
"rockyou-65.txt",
"ignis-10K.txt",
"rockyou-60.txt",
"10_million_password_list_top_10000.txt",
"hashmob.net.small.found.txt",
"hk_hlm_founds.txt",
"ignis-10M.txt",
"piotrcki-wordlist-top10m.txt",
"hashmob.net.large.found.txt",
"kaonashi14M.txt",
"cyclone_hk.txt",
"hashkiller-dict.txt"
],
"rules_files": [
"top10_2023.rule",
"yubaba64.rule",
"hob064.rule",
"best66.rule",
"nsa64.rule",
"numbers.rule",
"numbers100.rule",
"top_1500.rule",
"years_1900_2025.rule",
"T0XlC_3_rule.rule",
"T0XlC.rule"
]

},
"attacks" : {
"straight_with_rules_files": [
{"wordlists": [0], "rules": []},
{"wordlists": [1], "rules": []},
{"wordlists": [2], "rules": []},
{"wordlists": [3], "rules": []},
{"wordlists": [4], "rules": []},
{"wordlists": [5], "rules": []},
{"wordlists": [6], "rules": []},
{"wordlists": [7], "rules": []},
{"wordlists": [8], "rules": []},
{"wordlists": [9], "rules": []},
{"wordlists": [10], "rules": []},
{"wordlists": [11], "rules": []},
{"wordlists": [12], "rules": []},
]
}
}




Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"files": {
"wordlists_files": [
"cyclone_hk.txt"

],
"rules_files": [
"cyclone_250.rule"

]
},
"attacks" : {
"straight_with_rules_files": [
{"wordlists": [], "rules": [0]}
]
}
}




33 changes: 33 additions & 0 deletions attacks/BIG_HITS/FAST/BIG_HITS_fast_cyclone_hk_tiny_rules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"files": {
"wordlists_files": [
"cyclone_hk.txt"

],
"rules_files": [
"top10_2023.rule",
"yubaba64.rule",
"hob064.rule",
"best66.rule",
"nsa64.rule",
"numbers.rule",
"numbers100.rule",
"top_1500.rule",
"years_1900_2025.rule",
"cyclone_250.rule",
"T0XlC_3_rule.rule",
"online.rule",
"top_500.rule"
]

},
"attacks" : {
"straight_with_rules_files": [
{"wordlists": [], "rules": []}
]
}
}




Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"files": {
"wordlists_files": [
"kaonashi14M.txt"

],
"rules_files": [
"OneRuleToRuleThemStill.rule"

]
},
"attacks" : {
"straight_with_rules_files": [
{"wordlists": [], "rules": [0]}
]
}
}




Loading