
AWS 테스팅 및 리포팅 관리 도구
Outpost는 AssumeRole용 AWS 구성 파일을 생성하고, 계정이 정상적으로 작동하는지 확인하는 테스트 기능, 그리고 ScoutSuite 스캔 결과용 리포트 생성기를 제공하는 간단한 도구입니다.
Outpost는 Python3와 boto3가 필요합니다.
의존성을 설치하세요.
virtualenv -p python3 .
source bin/activate
pip install -r requirements.txt
python outpost.py --help
usage: outpost.py [-h] --command COMMAND [--config-creds] [--assume ASSUME] [--accounts ACCOUNTS] [--primary PRIMARY] [--token TOKEN]
[--secret-key SECRET_KEY] [--access-key ACCESS_KEY] [--directory DIRECTORY] [--risk RISK] [--project PROJECT]
optional arguments:
-h, --help show this help message and exit
--command COMMAND Commands: generate, report, testaccounts
--config-creds Configure creds while using the generate command
--assume ASSUME Optional assume role ARN, use ACCOUNT_ID for placeholder. (i.e. arn:aws:iam::ACCOUNT_ID:role/ROLENAME
--accounts ACCOUNTS File containing account numbers (one account per line)
--primary PRIMARY Primary account used to assume roles
--token TOKEN Primary AWS session token
--secret-key SECRET_KEY
Primary AWS secret access key
--access-key ACCESS_KEY
Primary AWS access key
--directory DIRECTORY
Parent directory of ScoutSuite report(s)
--risk RISK Select finding risk to report: danger, warning
--project PROJECT Project name for report details
Outpost는 파싱을 위해 모든 보고서 폴더를 재귀적으로 탐색하여 scoutsuite_results*.js 파일을 찾습니다. 즉, 보고서 루트 폴더에 별도의 ScoutSuite 보고서들이 들어 있다면 루트 폴더를 --directory 플래그로 지정하면 됩니다.
예시 구조는 다음과 같습니다:
~/Engagements/CustomerName/reports/account1/
~/Engagements/CustomerName/reports/account2/
~/Engagements/CustomerName/reports/account3/
3개 계정 보고서를 모두 파싱하려면 다음 명령을 사용합니다:
python outpost.py --command report --directory ~/Engagements/CustomerName/reports/ --project Customer_2022-123
이 도구는 ScoutSuite 결과의 루트 폴더 안에 data_archive라는 폴더를 생성합니다. 발견 항목이 담긴 <project name>.txt 파일이 생성되며, 해당 내용을 보고서에 직접 복사/붙여넣기할 수 있습니다. 또한 각 발견 항목에 대한 보조 파일이 폴더 안에 생성되며, 해당 파일에는 취약한 계정과 특정 리소스가 정리되어 있습니다.