
AWS Lambdaを利用したIPローテーションによるパスワードスプレー
AWS Lambdaを使って複数のリージョンにパスワードスプレイを簡単に仕掛け、リクエストごとにIPアドレスをローテーションします。
提供元:

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 このヘルプメッセージを表示して終了
--plugin PLUGIN スプレイプラグイン
--threads THREADS スレッド数(デフォルト: 1)
--userfile USERFILE ユーザー名ファイル
--passwordfile PASSWORDFILE パスワードファイル
--access_key ACCESS_KEY AWSアクセスキー
--secret_access_key SECRET_ACCESS_KEY AWSシークレットアクセスキー
--useragentfile ユーザーエージェントファイル
Gmailプラグインは追加の引数を必要としません。
Oktaプラグインは、oktadomainという新しい必須引数を追加します。
usage: credking.py <usual arugments> --oktadomain org.okta.com
以下のコマンドでPython 3を使って自動的にインストールして実行できます。
$ git clone https://github.com/ustayready/CredKing
$ cd CredKing
~/CredKing$ python3 credking.py
Python 3が必要です。
バグ報告、機能リクエスト、パッチは歓迎します。
新しいプラグインは次のように作成できます:
$ cd plugins
$ mkdir newplugin
$ cd newplugin
$ touch __init__.py
$ touch newplugin.py
次に、newplugin.pyにlambdaハンドラ関数を含めてください:
def lambda_handler(event, context):
return your_function(event['username'], event['password'])
CredKingは、ラムダが作成されるときに受信するデプロイメントzipファイルを生成します。そのため、CredKingは前提条件をnewpluginフォルダに直接インストールする必要があります。これは次のようにして行えます:
$ pip install <pre-req> -t .
プラグイン固有の引数はcredking.pyを変更せずに指定でき、--argumentname valueとして渡すだけです。
プラグインがプラグイン固有の引数を必要とする場合、プラグインディレクトリの__init__.pyファイルにvalidate関数を実装できます。この関数にはすべてのオプション引数の辞書が渡されます。
以下は、oktaプラグインの__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
次に、okta.pyのlambda_handler関数は、以下に示すようにoktadomain引数にアクセスします。
def lambda_handler(event, context):
domain = event['args']['oktadomain']
return okta_authenticate(domain, event['username'], event['password'], event['useragent'])
以上です、お楽しみください!