Launch a password spray / brute force attach via Amazon AWS passthrough proxies, shifting the requesting IP address for every authentication attempt. This dynamically creates FireProx APIs for more evasive password sprays.
Shoutout to @ustayready for his CredKing and FireProx tools, which form the base of this suite.
See all the full notes on the Wiki, tool released with specifics in this blogpost
For detection tips, see the blogpost and detection section.
Be careful for account lockouts, know the reset policies of your target
pip install -r requirements.txt
The following plugins are currently supported:
--plugin owa
--plugin ews
--plugin o365
--plugin adfs
--plugin o365enum
--plugin msol
--plugin msgraph
--plugin azuresso
--plugin azvault
--plugin okta
--plugin fortinetvpn
--plugin httpbrute
--plugin gmailenum
Example Use:
python3 credmaster.py --plugin {pluginname} --access_key {key} --secret_access_key {key} -u userfile -p passwordfile -a useragentfile {otherargs}
or
python3 credmaster.py --config config.json
This tool requires AWS API access keys, a walkthrough on how to acquire these keys can be found here: https://bond-o.medium.com/aws-pass-through-proxy-84f1f7fa4b4b
All other usage details can be found on the wiki
PRs welcome :)
Feel free to drop me a line - \@knave on Keybase - Twitter - knavesec
Addresses:
- extra content=
parameter in a few requests.post()
method calls.
- undeclared variable usage
- better notification error handling
TLDR: This PR seeks to resolve the issue OWA/EWS Plugins Authentication Failed with Valid Credentials by changing the owa plugin to use forms auth instead of NTLM against the auto-discover endpoint.
Note: There are a couple of opsec drawbacks with this, but for the purposes of testing a client environment, I'm personally ok with those drawbacks.
Summary of changes:
- Add a list of possible owa endpoints to search through
- Implement 2 new functions in the init module, check_url and check_path
- check_path
uses check_url
to check each of the owa endpoints to see which one is in use
- one drawback of this is it's not very opsec safe since it's sending a get request from the operator's host to the endpoint
- The pluginargs URL is also used to get the internal domain name, again not very opsec safe but it works
- Successful authentication (valid credentials) are found when there response code is 302 and 4 or more cookies are set
Strange behavior:
- I had trouble getting the x-amzn-remapped-www-authenticate
header to work with the OWA plugin so I fall back to using WWW-Authenticate
. I'm not sure of the implications of this
- For some reason the "Content-Type": "text/xml"
header causes the request to fail with 400 errors, so I exclude it
I've tested this a bit in my lab, but I would very much welcome others testing this to see if I've introduced any bugs/issues/incompatibilities/etc. If there's anything that requires fixing I'm happy to work on it.
I hope this PR can help the project even just a tiny bit. Cheers!
Avoid potential issues with people putting their actual secrets into a file tracked by git.
config.json
is already in .gitignore, so should be good there.
Added changes to readme to mirror the MFAModule Updated Docker container to support ADAL/MSAL modules with Python 3.10 Updated requirements.txt with new modules required for MFASweep module
https://github.com/Optiv/Go365
Optiv's Go365 tool does some awesome bruteforcing & enum for Office365 tenants. Would be great to have a CredMaster plugin for it, with an optional --endpoint
flag to specify RST or Graph.
I could probably do it myself, theres just a lack of time in this world, would appreciate if someone tried their hand with a PR!
While attempting to use the OWA/EWS plugins I am getting "Authentication Failed:" with a valid credential. O365 module works as expected for the same credentials. Possibly an issue with NTLM auth?
I'm curious if anyone has had success with these plugins before or have seen the same issue.
password-spray leet-haxor-toolz brute-force hacktoberfest