
AWS Lambda를 사용한 IP 회전 기반 비밀번호 스프레이
AWS Lambda를 사용하여 여러 리전에 걸쳐 IP 주소를 회전시키며 패스워드 스프레이(Password Spray)를 쉽게 실행할 수 있습니다.
제공:

사용법: 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이라는 새로운 필수 인자를 추가합니다.
사용법: credking.py <일반 인자> --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은 Lambda 생성 시 Lambda 함수가 수신하는 배포 zip 파일을 생성합니다. 이를 위해 CredKing은 필수 패키지가 newplugin 폴더에 직접 설치되어 있어야 합니다. 다음과 같이 수행할 수 있습니다:
$ pip install <필수패키지> -t .
플러그인별 인자는 credking.py를 수정하지 않고도 지정할 수 있습니다. --argumentname value 형식으로 전달하기만 하면 됩니다.
플러그인에서 플러그인별 인자가 필요한 경우, 플러그인 디렉토리의 __init__.py 파일에 validate 함수를 구현하여 모든 선택적 인자가 담긴 딕셔너리를 전달받도록 할 수 있습니다.
아래는 Okta 플러그인의 __init__.py에서 사용된 플러그인 인자 검증 예제입니다.
def validate(args):
if 'oktadomain' in args.keys():
return True,None
else:
error = "oktadomain 인자가 누락되었습니다. --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'])
이상입니다. 즐겨 사용하세요!