No hay una forma nativa de hacer esto con hashcat. En su lugar, debe generar una lista de máscaras que contengan todas las permutaciones que se ajusten a sus criterios.
La herramienta común para esto es policygen del kit de herramientas PACK. Mi respuesta aquí describe cómo usarla.
Para su caso de uso, sería algo como esto (asumiendo contraseñas de 8 caracteres y un mínimo de 3 dígitos):
$ policygen --minlength=8 --maxlength=8 --mindigit=3 \
-o len8mindigit3.masks
_
PolicyGen 0.0.2 | |
_ __ __ _ ___| | _
| '_ \ / _' |/ __| |/ /
| |_) | (_| | (__| <
| .__/ \__,_|\___|_|\_\
| |
|_| [email protected]
[*] Saving generated masks to [len8mindigit3.masks]
[*] Using 1,000,000,000 keys/sec for calculations.
[*] Password policy:
Pass Lengths: min:8 max:8
Min strength: l:None u:None d:3 s:None
Max strength: l:None u:None d:None s:None
[*] Generating [compliant] masks.
[*] Generating 8 character password masks.
[*] Total Masks: 65536 Time: 76 days, 18:50:04
[*] Policy Masks: 21067 Time: 3 days, 8:11:03
$ head len8mindigit3.masks
?d?d?d?d?d?d?d?d
?d?d?d?d?d?d?d?l
?d?d?d?d?d?d?d?u
?d?d?d?d?d?d?d?s
?d?d?d?d?d?d?l?d
?d?d?d?d?d?d?l?l
?d?d?d?d?d?d?l?u
?d?d?d?d?d?d?l?s
?d?d?d?d?d?d?u?d
?d?d?d?d?d?d?u?l
$ tail len8mindigit3.masks
?s?s?s?s?d?d?d?s
?s?s?s?s?d?d?l?d
?s?s?s?s?d?d?u?d
?s?s?s?s?d?d?s?d
?s?s?s?s?d?l?d?d
?s?s?s?s?d?u?d?d
?s?s?s?s?d?s?d?d
?s?s?s?s?l?d?d?d
?s?s?s?s?u?d?d?d
?s?s?s?s?s?d?d?d
Luego deberías suministrar ese archivo de máscaras a hashcat.