Probably Not Feasible
In CHAP, the authenticator sends a challenge, and then the client responds by hashing the secret plus some other data from that challenge.
This is comparable to sending a new salt every time, and it does not represent the scenario hashcat was designed for.
That said, the response contains an MD5 hash of challenge ID + secret + challenge value. Two of those values are transmitted over the wire. The resulting MD5 hash is also transmitted, so you have everything you need to recover the secret in theory.
The problem is getting the existing tools to work in this scenario.
You could take three approaches.
- You could generate a wordlist consisting of randomly-generated secret candidates and concatenate them with the ID + challenge using rules. (Extremely slow)
- You could create custom character sets for each character in the ID + challenge and run a bruteforce mask attack. (Fairly slow)
- You could attack similar to option 1, but with a regular wordlist; however, this will only succeed if the secret is in your dictionary. (Fairly fast)
Typical CHAP secret lengths are 12-16 bytes/characters. You could probably run #2 for 8- or 9-character secrets in a reasonable time frame, but longer secrets would be problematic even with high end hardware. You are looking at years, even with dedicated multi-GPU rigs.
This leaves #3 as the only feasible option, which means your efforts are tied directly to the quality of your wordlist and the CHAP secret.