Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
s3tk — Amazon S3를 위한 보안 툴킷 | Kitploit
도구/GitHubGitHub/ankane/s3tk
Cloud Infrastructure SecurityVulnerability ScannersEncryption/Decryption ToolsConfiguration AuditingCloud SecurityMisconfiguration
GitHubankane/s3tk

s3tk

Amazon S3를 위한 보안 툴킷

저장소 보기
4592742개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

s3tk

Amazon S3 보안 툴킷

Screenshot

🍊 Instacart에서 실전 테스트 완료

설치

실행:

root@kitploit:~
pip install s3tk

AWS CLI 또는 AWS Vault를 사용하여 AWS 자격 증명을 설정할 수 있습니다:

root@kitploit:~
pip install awscli
aws configure

각 명령어에 필요한 IAM 정책을 참조하세요.

명령어

스캔

버킷을 스캔하여 다음을 확인합니다:

  • 퍼블릭에 ACL 열림
  • 퍼블릭에 정책 열림
  • 퍼블릭 액세스 차단됨
  • 로깅 활성화됨
  • 버전 관리 활성화됨
  • 기본 암호화 활성화됨
root@kitploit:~
s3tk scan

특정 버킷에서만 실행

root@kitploit:~
s3tk scan my-bucket my-bucket-2

와일드카드도 사용 가능

root@kitploit:~
s3tk scan "my-bucket*"

올바른 로그 버킷 및 접두사 확인

root@kitploit:~
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"

CloudTrail 객체 수준 로깅 확인 [실험적]

root@kitploit:~
s3tk scan --object-level-logging

로깅, 버전 관리 또는 기본 암호화 건너뛰기

root@kitploit:~
s3tk scan --skip-logging --skip-versioning --skip-default-encryption

실패 시 이메일 알림 받기 (SNS를 통해)

root@kitploit:~
s3tk scan --sns-topic arn:aws:sns:...

정책 나열

버킷 정책 나열

root@kitploit:~
s3tk list-policy

특정 버킷에서만 실행

root@kitploit:~
s3tk list-policy my-bucket my-bucket-2

명명된 문 표시

root@kitploit:~
s3tk list-policy --named

정책 설정

참고: 이전 정책을 대체합니다

비공개 업로드만 허용

root@kitploit:~
s3tk set-policy my-bucket --no-object-acl

정책 삭제

정책 삭제

root@kitploit:~
s3tk delete-policy my-bucket

퍼블릭 액세스 차단

특정 버킷의 퍼블릭 액세스 차단

root@kitploit:~
s3tk block-public-access my-bucket my-bucket-2

테스트하려면 --dry-run 플래그 사용

로깅 활성화

모든 버킷에서 로깅 활성화

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs

특정 버킷에서만

root@kitploit:~
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs

로그 접두사 설정 (기본값 {bucket}/)

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"

테스트하려면 --dry-run 플래그 사용

로깅에 관한 몇 가지 참고 사항:

  • 이미 로깅이 활성화된 버킷은 전혀 업데이트되지 않습니다.
  • 로그 버킷은 소스 버킷과 동일한 리전에 있어야 합니다. 다른 리전에 대해 이 명령어를 여러 번 실행하세요.
  • 로그가 나타나는 데 1시간 이상 걸릴 수 있습니다.

버전 관리 활성화

모든 버킷에서 버전 관리 활성화

root@kitploit:~
s3tk enable-versioning

특정 버킷에서만

root@kitploit:~
s3tk enable-versioning my-bucket my-bucket-2

테스트하려면 --dry-run 플래그 사용

기본 암호화 활성화

모든 버킷에서 기본 암호화 활성화

root@kitploit:~
s3tk enable-default-encryption

특정 버킷에서만

root@kitploit:~
s3tk enable-default-encryption my-bucket my-bucket-2

이 명령어는 기존 객체를 암호화하지 않습니다. 이 작업에는 encrypt 명령어를 사용하세요.

테스트하려면 --dry-run 플래그 사용

객체 ACL 스캔

버킷 내 모든 객체의 ACL 스캔

root@kitploit:~
s3tk scan-object-acl my-bucket

특정 객체만

root@kitploit:~
s3tk scan-object-acl my-bucket --only "*.pdf"

특정 객체 제외

root@kitploit:~
s3tk scan-object-acl my-bucket --except "*.jpg"

객체 ACL 초기화

버킷 내 모든 객체의 ACL 초기화

root@kitploit:~
s3tk reset-object-acl my-bucket

이렇게 하면 모든 객체가 비공개가 됩니다. 향후 적용 방법은 버킷 정책을 참조하세요.

테스트하려면 --dry-run 플래그 사용

scan-object-acl과 동일한 방식으로 특정 객체 지정

암호화

버킷 내 모든 객체를 서버 측 암호화로 암호화

root@kitploit:~
s3tk encrypt my-bucket

기본적으로 S3 관리 키를 사용합니다. KMS 관리 키를 사용하려면:

root@kitploit:~
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...

고객 제공 키를 사용하려면:

root@kitploit:~
s3tk encrypt my-bucket --customer-key secret-key

테스트하려면 --dry-run 플래그 사용

scan-object-acl과 동일한 방식으로 특정 객체 지정

참고: 객체의 사용자 정의 ACL이 손실됩니다.

암호화되지 않은 버전 삭제

버킷 내 모든 객체의 암호화되지 않은 버전 삭제

root@kitploit:~
s3tk delete-unencrypted-versions my-bucket

안전을 위해 객체의 현재 버전은 삭제되지 않습니다.

테스트하려면 --dry-run 플래그 사용

scan-object-acl과 동일한 방식으로 특정 객체 지정

DNS 스캔

Route 53에서 버킷을 스캔하여 소유하고 있는지 확인

root@kitploit:~
s3tk scan-dns

그렇지 않으면 서브도메인 탈취에 취약할 수 있습니다.

자격 증명

자격 증명은 ~/.aws/credentials 파일 또는 환경 변수로 지정할 수 있습니다. 환경 변수에 대한 설명은 이 가이드를 참조하세요.

프로필을 지정하려면:

root@kitploit:~
AWS_PROFILE=your-profile s3tk

IAM 정책

다음은 각 명령어에 필요한 권한입니다. 필요한 문만 포함하세요.

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Scan",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketLogging",
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanObjectLevelLogging",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:ListTrails",
                "cloudtrail:GetTrail",
                "cloudtrail:GetEventSelectors",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanDNS",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SetPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:PutBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DeletePolicy",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "BlockPublicAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketPublicAccessBlock"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableLogging",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketLogging"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableVersioning",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketVersioning"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableDefaultEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ResetObjectAcl",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "Encrypt",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "DeleteUnencryptedVersions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:GetObjectVersion",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

액세스 로그

Amazon Athena는 S3 로그 쿼리에 탁월합니다. 테이블을 생성하고 쿼리하세요:

root@kitploit:~
SELECT
    parse_datetime(requestdatetime, 'dd/MMM/yyyy:HH:mm:ss Z') AS time,
    key,
    remoteip,
    useragent
FROM
    s3_access_logs_db.mybucket_logs
WHERE
    requester = '-'
    AND httpstatus LIKE '2%'
    AND key LIKE 'some-keys%'
ORDER BY 1

CloudTrail 로그

Amazon Athena는 CloudTrail 로그 쿼리에도 탁월합니다. 테이블을 생성하고 쿼리하세요:

root@kitploit:~
SELECT
    eventtime,
    eventname,
    useridentity.username,
    requestparameters
FROM
    cloudtrail_logs
WHERE
    eventname LIKE '%Bucket%'
ORDER BY 1

모범 사례

단순하게 유지하고 최소 권한 원칙을 따라 실수 가능성을 줄이세요.

  • 버킷 관련 작업을 수행할 수 있는 사람을 엄격히 제한하세요.
  • 동일한 버킷에 다른 권한을 가진 객체를 혼합하지 마세요 (버킷 정책을 사용하여 적용).
  • 버킷 수준에서 공개 읽기 권한을 지정하지 마세요 (버킷 정책에 GetObject 없음).
  • 구성 변경 사항을 자주 모니터링하세요.

버킷 정책

비공개 업로드만 허용

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObjectAcl",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

성능

버킷 객체를 반복하는 명령어(scan-object-acl, reset-object-acl, encrypt, delete-unencrypted-versions)의 경우 EC2 서버에서 s3tk를 실행하여 최소 지연 시간을 보장하세요.

참고 사항

set-policy, block-public-access, enable-logging, enable-versioning, enable-default-encryption 명령어는 편의를 위해 제공됩니다. 버킷 관리에는 Terraform을 권장합니다.

root@kitploit:~
resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-bucket"
  acl    = "private"

  logging {
    target_bucket = "my-s3-logs"
    target_prefix = "my-bucket/"
  }

  versioning {
    enabled = true
  }
}

resource "aws_s3_bucket_public_access_block" "my_bucket" {
  bucket = "${aws_s3_bucket.my_bucket.id}"

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

업그레이드

실행:

root@kitploit:~
pip install s3tk --upgrade

master를 사용하려면:

root@kitploit:~
pip install git+https://github.com/ankane/s3tk.git --upgrade

Docker

실행:

root@kitploit:~
docker run -it ankane/s3tk aws configure

자격 증명 커밋:

root@kitploit:~
docker commit $(docker ps -l -q) my-s3tk

실행:

root@kitploit:~
docker run -it my-s3tk s3tk scan

변경 내역

변경 로그 보기

기여

누구나 이 프로젝트 개선에 도움을 줄 수 있습니다. 도움을 줄 수 있는 몇 가지 방법:

  • 버그 신고
  • 버그 수정 및 풀 리퀘스트 제출
  • 문서 작성, 명확화 또는 수정
  • 새 기능 제안 또는 추가

개발을 시작하려면:

root@kitploit:~
git clone https://github.com/ankane/s3tk.git
cd s3tk
pip install --group dev
도구 다운로드