
Pulvérisation de mots de passe utilisant AWS Lambda pour la rotation d'IP
Lancez facilement une attaque de type password spray en utilisant AWS Lambda sur plusieurs régions, en changeant d'adresse IP à chaque requête.
Proposé par :

usage: credking.py [-h] --plugin PLUGIN [--threads THREADS] --userfile USERFILE --passwordfile PASSWORDFILE --access_key ACCESS_KEY --secret_access_key SECRET_ACCESS_KEY [--useragentfile USERAGENTFILE]
Arguments:
-h, --help affiche ce message d'aide et quitte
--plugin PLUGIN plugin de pulvérisation
--threads THREADS nombre de threads (défaut : 1)
--userfile USERFILE fichier des noms d'utilisateur
--passwordfile PASSWORDFILE fichier des mots de passe
--access_key ACCESS_KEY clé d'accès AWS
--secret_access_key SECRET_ACCESS_KEY clé d'accès secrète AWS
--useragentfile fichier user-agent
Le plugin Gmail ne nécessite aucun argument supplémentaire.
Le plugin Okta ajoute un nouvel argument obligatoire appelé oktadomain.
Utilisation : credking.py <arguments habituels> --oktadomain org.okta.com
Vous pouvez installer et exécuter automatiquement en utilisant Python 3 avec la commande suivante :
$ git clone https://github.com/ustayready/CredKing
$ cd CredKing
~/CredKing$ python3 credking.py
Notez que Python 3 est requis.
Les rapports de bugs, les demandes de fonctionnalités et les correctifs sont les bienvenus.
Vous pouvez créer de nouveaux plugins en :
$ cd plugins
$ mkdir newplugin
$ cd newplugin
$ touch __init__.py
$ touch newplugin.py
Ensuite, assurez-vous d'inclure la fonction lambda_handler dans votre newplugin.py :
def lambda_handler(event, context):
return your_function(event['username'], event['password'])
CredKing génère un fichier zip de déploiement que les lambdas reçoivent lorsqu'elles sont créées. Pour cette raison, CredKing nécessite que les prérequis soient installés directement dans le dossier newplugin. Vous pouvez le faire en :
$ pip install <pre-req> -t .
Les arguments spécifiques aux plugins peuvent être spécifiés sans modification de credking.py, passez-les simplement sous la forme --argumentname value
Si votre plugin nécessite des arguments spécifiques, vous pouvez implémenter une fonction validate dans le fichier __init__.py de votre répertoire de plugin, qui recevra un dictionnaire de tous les arguments optionnels.
Voici un exemple de validation d'arguments de plugin utilisé par le plugin okta dans __init__.py.
def validate(args):
if 'oktadomain' in args.keys():
return True,None
else:
error = "Missing oktadomain argument, specify as --oktadomain org.okta.com"
return False,error
La fonction lambda_handler de okta.py accède ensuite à l'argument oktadomain comme indiqué ci-dessous.
def lambda_handler(event, context):
domain = event['args']['oktadomain']
return okta_authenticate(domain, event['username'], event['password'], event['useragent'])
C'est tout, profitez-en !