Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
aws-recon — 멀티스레드 AWS 인벤토리 수집 도구로, 보안 관련 리소스와 메타데이터에 중점을 둡니다. | Kitploit
도구/GitHubGitHub/joshlarsen/aws-recon
Cloud Infrastructure SecurityReconnaissanceVulnerability AnalysisScripting & AutomationConfiguration AuditingInformation GatheringCloud SecurityDevSecOpsArchived
GitHubjoshlarsen/aws-recon

aws-recon

멀티스레드 AWS 인벤토리 수집 도구로, 보안 관련 리소스와 메타데이터에 중점을 둡니다.

55850331년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

Docker Pulls Gem Version GitHub Workflow Status (branch) AWS Service Regions

AWS Recon

Ruby로 작성된 멀티스레드 AWS 보안 중심 인벤토리 수집 도구입니다.

이 도구는 대량의 AWS 리소스 속성 및 메타데이터를 효율적으로 수집하기 위해 만들어졌습니다. AWS 환경의 보안 구성 및 상태와 관련된 거의 모든 항목을 수집하는 것을 목표로 합니다.

기존 도구(예: AWS Config)는 일부 리소스 수집을 수행하지만, 보안 상태를 정확하게 측정하는 데 필요한 범위와 세부 사항(예: 상세 리소스 속성 데이터, 완전히 파싱된 정책 문서, 중첩된 리소스 관계)이 부족합니다.

AWS Recon은 자동 재시도(네트워크 안정성 또는 API 제한으로 인한), 대용량 응답 자동 페이징(API 호출당 100개 이상의 리소스), 수집 속도를 높이기 위한 멀티스레드 병렬 요청을 활용하여 대규모 계정에서 수집을 처리합니다.

프로젝트 목표

  • 사용 가능한 도구보다 더 완전한 리소스 커버리지 (특히 ECS 및 EKS)
  • 중첩된 관련 리소스를 출력에 포함한 더 세분화된 리소스 세부 정보
  • 유연한 출력 (콘솔, JSON 라인, 일반 JSON, 파일, S3 버킷, 표준 출력)
  • 효율성 (멀티스레드, 속도 제한, 자동 재시도, 자동 결과 페이징)
  • 유지보수 및 확장이 쉬움

AWS Recon을 사용하는 멋진 회사들**

  • Netflix
  • HashiCorp
  • Workday
  • Stripe
  • PayPal
  • Typeform
  • Amazon Web Services
  • Plaid
  • Expel
  • Mozilla
  • Bugcrowd
  • Dropbox
  • Pinterest
  • HackerOne
  • MuleSoft
  • Slack
  • Drata
  • Google
  • Sophos
  • Sumo Logic
  • Coalfile
  • Xero

** 사용이 보증을 의미하지는 않습니다.

설정

요구사항

AWS Recon은 ReadOnlyAccess 권한이 있는 AWS 계정 역할 또는 자격 증명이 필요합니다. 전체 AdministratorAccess는 과도한 권한이지만 작동합니다. SecurityAudit 정책은 많은 서비스에 대한 액세스가 누락되어 충분하지 않습니다.

Docker로 실행하기

Docker 19.x 이상 버전을 사용하여 아무것도 설치하지 않고 미리 빌드된 이미지를 실행합니다.

Ruby로 로컬에서 실행하기

이미 Ruby(2.6.x 또는 2.7.x)가 설치되어 있다면 Ruby gem을 설치하여 사용할 수 있습니다.

설치

AWS Recon은 Docker 컨테이너를 통해 로컬로 실행하거나 Ruby gem을 설치하여 실행할 수 있습니다.

Docker 컨테이너로 실행하려면 필요한 AWS 자격 증명을 Docker run 명령에 전달합니다. 예를 들어:

$ docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -v -s EC2 -r global,us-east-1,us-east-2

로컬에서 실행하려면 먼저 gem을 설치합니다:

$ gem install aws_recon
Fetching aws_recon-0.5.17.gem
Fetching aws-sdk-3.0.1.gem
Fetching parallel-1.20.1.gem
...
Successfully installed aws-sdk-3.0.1
Successfully installed parallel-1.20.1
Successfully installed aws_recon-0.5.17

또는 bundle을 사용하여 Gemfile에 추가합니다:

$ bundle add aws_recon
Fetching gem metadata from https://rubygems.org/
Resolving dependencies...
...
Using aws-sdk 3.0.1
Using parallel-1.20.1
Using aws_recon 0.5.17

사용법

AWS Recon은 실행 환경에서 현재 사용 가능한 모든 AWS 자격 증명을 활용합니다(요구사항 참조). 여러 계정에서 수집하는 경우 aws-vault와 같은 도구를 사용하여 다양한 자격 증명을 관리할 수 있습니다.

$ aws-vault exec profile -- aws_recon

일반 환경 변수도 잘 작동합니다.

$ AWS_PROFILE=<profile> aws_recon

aws-vault로 관리되는 자격 증명을 사용하여 Docker 컨테이너에서 실행 (출력은 stdout):

$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  darkbitio/aws_recon:latest \
  aws_recon -j -s EC2 -r global,us-east-1,us-east-2

aws-vault로 관리되는 자격 증명을 사용하여 Docker 컨테이너에서 실행하고 파일로 출력하려면 몇 가지 요구사항을 충족해야 합니다. 먼저 Docker가 지정한 경로(또는 상위 경로)에 바인드 마운트할 수 있는 액세스 권한이 필요합니다. 둘째, 출력을 저장할 빈 파일(예: output.json)을 생성해야 합니다. 이는 해당 파일 하나만 Docker 컨테이너에 마운트되기 때문입니다. 예를 들어:

빈 파일을 생성합니다.

$ touch output.json

출력 파일을 지정하여 aws_recon 컨테이너를 실행합니다.

$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -s EC2 -v -r global,us-east-1,us-east-2

처음에는 -v 또는 --verbose 플래그를 사용하여 수집 중 상태와 활동을 확인하는 것이 좋습니다.

상세 모드에서는 콘솔 출력에 다음과 같이 표시됩니다:

<thread>.<region>.<service>.<operation>

t 접두사는 특정 요청이 실행 중인 스레드를 나타냅니다. Region, service, operation은 현재 진행 중인 요청 작업과 위치를 나타냅니다.

$ aws_recon -v

t0.global.EC2.describe_account_attributes
t2.global.S3.list_buckets
t3.global.Support.describe_trusted_advisor_checks
t2.global.S3.list_buckets.acl
t5.ap-southeast-1.WorkSpaces.describe_workspaces
t6.ap-northeast-1.Lightsail.get_instances
...
t2.us-west-2.WorkSpaces.describe_workspaces
t1.us-east-2.Lightsail.get_instances
t4.ap-southeast-1.Firehose.list_delivery_streams
t7.ap-southeast-1.Lightsail.get_instances
t0.ap-south-1.Lightsail.get_instances
t1.us-east-2.Lightsail.get_load_balancers
t7.ap-southeast-2.WorkSpaces.describe_workspaces
t2.eu-west-3.SageMaker.list_notebook_instances
t3.eu-west-2.SageMaker.list_notebook_instances

Finished in 46 seconds. Saving resources to output.json.

명령줄 옵션 예시

# S3 및 EC2 글로벌 리소스와 us-east-1, us-east-2 수집

$ AWS_PROFILE=<profile> aws_recon -s S3,EC2 -r global,us-east-1,us-east-2
# S3 및 EC2 글로벌 리소스와 us-east-1, us-east-2 수집

$ AWS_PROFILE=<profile> aws_recon --services S3,EC2 --regions global,us-east-1,us-east-2
# 출력을 S3 버킷에 저장

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket
# 홈 리전이 us-east-1이 아닌 경우 S3 버킷에 출력 저장

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket:us-west-2

예시 OpenCSPM 형식(NDJSON) 출력.

$ AWS_PROFILE=<profile> aws_recon -l \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom

또는

$ AWS_PROFILE=<profile> aws_recon -j \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom > output.json

오류

대부분의 경우 권한 관련 API 예외는 자동으로 무시됩니다. 이러한 오류는 일반적으로 다음 경우 중 하나로 인해 발생합니다:

  • 충분한 권한이 없는 역할 사용
  • 특정 서비스 사용을 제한하는 SCP가 있는 계정 쿼리
  • 리전/계정에서 활성화/사용 가능하지 않은 서비스 쿼리 시도

verbose 모드에서는 출력에 예외 로그가 표시됩니다:

t2.us-east-1.EC2.describe_subnets.0
t4.us-east-1.SSM.describe_instance_information.0
t6.us-east-1.SecurityHub.InvalidAccessException   <-----
t2.us-east-1.EC2.describe_addresses.0
t4.us-east-1.SSM.describe_parameters.0
t1.us-east-1.GuardDuty.list_detectors.0

-q 명령줄 옵션을 사용하여 이러한 예외를 다시 발생시켜 액세스 문제를 더 쉽게 진단할 수 있습니다.

Traceback (most recent call last):
arn:aws:sts::1234567890:assumed-role/role/my-audit-role is not authorized to perform:
 codepipeline:GetPipeline on resource: arn:aws:codepipeline:us-west-2:1234567890:pipeline
 (Aws::CodePipeline::Errors::AccessDeniedException)

스택 트레이스의 마지막 줄에 예외를 트리거한 정확한 API 작업이 표시됩니다. 필요한 액세스 권한을 해결할 수 없으면 -x 또는 --not-services로 해당 서비스를 제외하거나, -q 옵션을 사용하지 않고 수집을 계속 진행하세요.

스레드

AWS Recon은 전 세계 엔드포인트에 대한 많은 API 호출의 I/O 문제를 극복하기 위해 여러 스레드를 사용합니다.

IAM, Shield, Support와 같은 글로벌 서비스의 경우 요청은 멀티스레드되지 않습니다. S3 모듈은 각 버킷에 대해 완전한 메타데이터를 수집하기 위해 여러 추가 호출이 필요하므로 멀티스레드됩니다.

리전 서비스의 경우 리전의 각 서비스에 대해 스레드(스레드 한도까지)가 생성됩니다. 기본적으로 최대 8개의 스레드가 사용됩니다. 계정의 리소스가 여러 리전에 분산되어 있는 경우 -t X(X는 스레드 수)로 스레드를 늘리면 속도가 향상될 수 있습니다.

성능

AWS Recon은 새/빈 계정에서 지원되는 모든 서비스를 20개의 표준 리전( GovCloud, 중국 제외)에서 쿼리하기 위해 최소 약 2,000개의 API 호출을 수행합니다. 기본값(8)보다 많은 스레드를 활성화하면 대규모 계정에서 API 속도 제한(스로틀링)이 발생할 가능성이 매우 높습니다.

도구 다운로드