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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dufflebag — 노출된 EBS 볼륨에서 비밀 검색 | Kitploit
도구/GitHubGitHub/bishopfox/dufflebag
Vulnerability AnalysisInformation GatheringCloud SecuritySecret Detection
GitHubbishopfox/dufflebag

dufflebag

노출된 EBS 볼륨에서 비밀 검색

저장소 보기
305393년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dufflebag

Dufflebag은 공개 Elastic Block Storage(EBS) 스냅샷에서 실수로 남겨진 비밀 정보를 검색하는 도구입니다. 주변에 놓여 있는 모든 비밀번호와 비밀 정보에 놀랄 수도 있습니다!

이 도구는 Elastic Beanstalk("EB", EBS와 혼동하지 마세요) 애플리케이션으로 구성되어 있으며, 자신의 머신에서 실행하려고 하면 절대 작동하지 않습니다.

Dufflebag은 실제로 EBS 볼륨을 읽는 것이 실제로는 상당히 까다롭기 때문에 많은 움직이는 부품을 가지고 있습니다. AWS 환경에 있어야 하고, 스냅샷을 복제하고, 스냅샷에서 볼륨을 만들고, 볼륨을 연결하고, 마운트하는 등의 작업을 해야 합니다... 이것이 Elastic Beanstalk 앱으로 만들어진 이유이며, 원하는 만큼 자동으로 확장 또는 축소할 수 있고, 작업이 끝나면 전체를 쉽게 제거할 수 있습니다.

AWS 콘솔을 주시하여 무언가가 제대로 작동하지 않거나 요금이 엄청나게 청구되지 않는지 확인하세요. 우리는 모든 가능한 상황을 고려하고 오류 처리를 제공하려고 노력했습니다... 하지만 경고는 받았습니다!

시작하기

권한

aws-elasticbeanstalk-ec2-role 역할에 몇 가지 추가 AWS IAM 권한을 추가해야 합니다. 또는 이러한 권한으로 완전히 새로운 역할을 만들고 EB가 해당 역할을 사용하도록 설정할 수 있지만, 과정이 조금 더 복잡합니다. 어쨌든 다음을 추가해야 합니다:

  • AttachVolume (ec2)
  • CopySnapshot (ec2)
  • CreateVolume (ec2)
  • DeleteSnapshot (ec2)
  • DeleteVolume (ec2)
  • DescribeSnapshots (ec2)
  • DescribeVolumes (ec2)
  • DetachVolume (ec2)
  • PurgeQueue (sqs)
  • ListQueues (sqs)
  • ListAllMyBuckets (s3)
  • PutObject (s3)

빌드

핵심 애플리케이션은 Go로 작성되었으므로 Golang 컴파일러가 필요합니다. 그러나 EB 애플리케이션은 실제로 .zip 파일로 빌드됩니다(EB가 작동하는 방식입니다). 따라서 makefile이 zip 파일을 출력합니다.

  1. 리전을 확인하세요. Dufflebag은 한 번에 하나의 AWS 리전에서만 작동할 수 있습니다. 모든 리전을 검색하려면 해당 인스턴스 수만큼 배포해야 합니다. 리전을 변경하려면 소스 코드 파일 region.go의 내용을 변경하세요.

  2. 종속성 설치: Ubuntu 18.04 x64:

root@kitploit:~
sudo apt install make golang-go git
go get -u github.com/aws/aws-sdk-go
go get -u github.com/deckarep/golang-set
go get -u github.com/lib/pq
go get -u lukechampine.com/blake3
  1. 그런 다음 다음 명령으로 EB 앱을 zip 파일로 빌드합니다:
root@kitploit:~
make

이제 프로젝트 루트 디렉토리에 dufflebag.zip 파일이 표시되어야 합니다.

  1. 마지막으로 S3 버킷을 만들어야 합니다. Dufflebag 내에서 자동으로 설정하는 것이 가능할 수도 있지만, 실제로는 꽤 어려울 것입니다. 그러니 직접 하세요. 기본 권한이 있는 S3 버킷을 만들고 이름이 dufflebag으로 시작하도록 하면 됩니다. S3 버킷 이름은 전역적으로 고유해야 하므로, 무의미한 문자열로 된 접미사가 필요할 것입니다.

Elastic Beanstalk에 배포

AWS 콘솔로 이동하여 Elastic Beanstalk 메뉴 옵션을 찾으세요. CLI를 통해서도 가능하지만, 이 설명은 콘솔을 사용합니다. Actions -> Create Environment를 선택하세요.

Create Environment

그런 다음 다음 창에서 Worker environment를 선택하고 Select를 누르세요.

Worker Environment

다음 창에서 Platform에 대해 Preconfigured -> Go를 선택하세요.

Go  Platform

Application Code 아래에서 Upload your Code를 선택하세요.

Upload You Code

Upload 버튼을 누르고 방금 빌드한 dufflebag.zip을 선택하세요.

Code Origins

마지막으로 Create Environment를 눌러 시작하세요.

AWS가 모든 것을 만들고 시작하는 데 몇 분이 걸립니다. 생성되면 Dufflebag이 즉시 시작됩니다. 다른 작업은 필요 없습니다.

안전 밸브 제거

이것을 실행한 후에는 안전 밸브를 제거하고 다시 시도할 수 있습니다. 기본적으로 Dufflebag은 20개의 EBS 스냅샷만 검색합니다. (처음 시도할 때 문제가 발생하지 않도록 하기 위해) 검색 범위를 전체 리전으로 확장하려면 populate.go로 이동하여 다음 코드 줄을 제거하고 다시 빌드하세요:

root@kitploit:~
//#####################################################################
//####                    Safety Valve                             ####
//#### Remove this line of code below to search all of your region ####
//#####################################################################
snapshots = snapshots_result.Snapshots[0:20]

확장

Dufflebag이 Elastic Beanstalk 앱으로 설계된 이유 중 하나는 프로그램을 쉽게 자동으로 확장하거나 축소할 수 있기 때문입니다. 기본적으로는 하나의 인스턴스에서만 실행되며 상당히 느립니다. 그러나 좀 더 성능을 높이려면 Elastic Beanstalk에서 자동 확장을 조정하세요. 전체 옵션은 이 문서의 범위를 약간 벗어나므로 직접 실험해 보시기 바랍니다. 실제로는 간단한 CPU 사용 트리거가 꽤 잘 작동한다는 것을 발견했습니다.

위에서 환경을 설정할 때 Configure more options 버튼( Create environment를 누르는 대신) 아래에서 옵션을 찾은 다음 Scaling을 누르세요.

Scaling

수집된 데이터 가져오기

Dufflebag은 관심 있는 파일을 앞서 만든 S3 버킷으로 복사합니다. (기술적으로 Dufflebag은 이름이 "dufflebag"으로 시작하는 첫 번째 S3 버킷을 사용합니다.)

S3 버킷에서 파일이 하나씩 들어오는 것을 확인할 수 있습니다. 파일 이름은 다음과 같습니다:

originalfilename_blake3sum_volumeid

상태 확인

모든 것이 잘 진행되고 있다면 로그를 읽을 필요가 없습니다. 하지만 만일을 대비해, Elastic Beanstalk은 앱이 실행 중에 로그 파일에 쓸 수 있도록 허용하며, Logs 탭으로 이동하여 캡처할 수 있습니다. 그런 다음 Request Logs 및 Last 100 Lines를 누르세요. 이렇게 하면 가장 최근의 Dufflebag 로그 배치를 얻을 수 있습니다. Download 버튼을 눌러 읽으세요. 이 파일에는 다른 많은 시스템 로그가 포함되어 있지만, Dufflebag 부분은 맨 위에 있는 "/var/log/web-1.log" 아래에 있습니다.

전체 로그 기록을 보려면 Last 100 Lines 대신 Full Logs를 선택하세요. (EB는 기본적으로 로그를 매우 적극적으로 회전시킵니다)

또한 환경의 SQS 대기열을 살펴보면 전체 진행 상황을 파악할 수 있습니다. Elastic Beanstalk 워커 환경은 SQS를 사용하여 워크플로를 관리합니다. Dufflebag의 대기열에 있는 각 메시지는 처리할 EBS 볼륨을 나타냅니다:

Code Origins

Messages Available 열은 아직 처리되지 않은 볼륨 수를 보여줍니다. Messages in Flight 열은 현재 처리 중인 볼륨 수를 보여줍니다.

검색 대상 조정

Dufflebag은 "흥미로울" 가능성이 높은 항목(개인 키, 비밀번호, AWS 키 등)을 검색하도록 프로그래밍되었습니다. 하지만 자신에게 특화된 항목을 검색하려면 어떻게 해야 할까요? 예를 들어 bank.com에서 일하며 bank.com을 참조하는 데이터가 무엇인지 보고 싶은 경우입니다.

이를 위해서는 Dufflebag 코드를 약간 수정해야 하지만, 그렇게 많지는 않습니다. 걱정하지 마세요! 검색할 항목의 로직은 inspector.go에서 처리됩니다. pilfer() 함수는 파일을 검사하는 고루틴입니다. 처음에는 코드가 조금 겁나 보일 수 있지만, 여기서 하는 일은 다음과 같습니다. (그리고 어렵지 않게 수정하는 방법)

파일 이름 블랙리스트:

  1. 파일 이름을 블랙리스트와 비교합니다. (blacklist_exact)
  2. 파일 이름을 "포함" 블랙리스트와 비교합니다. (파일에 특정 문자열이 포함되어 있으면 거부) (blacklist_contains)
  3. 파일 이름을 접두사 블랙리스트와 비교합니다. (파일이 특정 문자열로 시작하면 거부) (blacklist_prefix)

이 세 목록의 내용을 변경하여 검색 로직을 매우 쉽게 수정할 수 있습니다. 그러나 일반적으로는 그대로 두는 것이 좋습니다. 이 블랙리스트는 많은 파일 시스템에 존재하는 지루한 파일을 다루도록 설계되어 Dufflebag이 AWS의 모든 파일을 하나하나 심층 검사할 필요가 없도록 합니다. 찾고 있는 민감한 데이터가 이러한 파일에 있을 수도 있지만... 아마 없을 것입니다.

파일 이름 화이트리스트:

  1. IsSensitiveFileName() 함수는 파일 이름을 민감한 파일 이름(예: /etc/shadow, bash_history 등)을 찾는 정규 표현식과 비교합니다.

파일 내용:

  1. checkContentsRegex() 함수는 파일 내용을 일련의 정규 표현식과 비교합니다. (파일 입력 인수는 한 줄 단위이므로, 이 함수의 입력은 파일의 한 줄이지 전체 파일이 아닙니다.) 따라서 조직과 관련된 키워드를 찾으려면 checkContentsRegex() 내부의 정규 표현식을 변경하기만 하면 됩니다.
도구 다운로드