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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
raccoon — Salesforce 객체 접근 감사 도구 | Kitploit
도구/GitHubGitHub/nccgroup/raccoon
Cloud Infrastructure SecurityVulnerability AnalysisConfiguration AuditingCloud SecurityIdentity & Access Management (IAM)MisconfigurationDatabase Security
GitHubnccgroup/raccoon

raccoon

Salesforce 객체 접근 감사 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

Raccoon: Salesforce 객체 접근 감사 도구

NCC Group Plc가 오픈소스로 공개했습니다 - https://www.nccgroup.com/

Jerome Smith 개발 @exploresecurity (Viktor Gazdag @wucpi에게 감사드립니다)

https://www.github.com/nccgroup/raccoon

AGPL 라이선스로 배포됩니다 - 자세한 내용은 LICENSE를 참조하세요.

설명

이 도구는 유효 공유 및 객체 설정을 기반으로, 지정된 객체 집합의 모든 레코드에 대해 읽기/편집/삭제 권한의 일부 조합을 가진 프로필 및 권한 세트(활성 사용자가 있는)를 식별합니다. 이 출력을 통해 민감한 데이터를 보유한 객체에 과도한 접근을 허용할 수 있는 잘못된 구성을 조사할 수 있습니다. 배경 정보는 관련 블로그 게시물 https://research.nccgroup.com/2021/06/28/are-you-oversharing-in-salesforce 를 참조하세요.

결과는 Salesforce 구성을 직접 참조하거나 영향을 받는 프로필 및 권한 세트를 테스트하여 수동으로 검증하는 것이 좋습니다. 불일치 사항이 발견되면 가능한 한 자세히 이슈를 등록해 주시기 바랍니다.

사용법

요구 사항:

  • Python 3
  • Python requests 모듈 (requirements.txt에 포함됨)
  • 다음 최소 권한이 있는 계정:
    • 'API Enabled'
    • 'View Setup and Configuration'
    • 'Modify Metadata Through Metadata API Functions' ('Account permissions' 참고)
    • 감사할 모든 객체에 대한 읽기 권한 ('View All Data' 부여 가능)

인증을 위해 username + password + (선택) token 또는 sessionId 중 하나를 제공하세요 (자세한 내용은 인증 섹션 참조).

JSON 구성 파일을 만들고(또는 config.json을 템플릿으로 사용) 필요에 따라 작성합니다:

{
	"hostname": "somewhere.my.salesforce.com",
	"username": "",
	"password": "",
	"token": "<optional token>",
	"sessionId": "",
	"objects": ["Account", "Contact"],
	"checkLimits": true,
	"debug": <optional debug level (0, 1 or 2)>
}

objects는 관심 있는 Salesforce 객체의 목록입니다(즉, 가장 중요하게 생각하는 데이터). 공식 API 이름을 사용하는 것이 가장 확실한 방법이지만, 일치하는 항목이 없으면 Raccoon은 예를 들어 표시 레이블을 기준으로 몇 가지 간단한 일치를 시도합니다. Raccoon이 여전히 일치 항목을 찾지 못하면 프로그램은 계속 진행하되 출력에 이를 표시합니다.

checkLimits를 사용하면 조사 중인 인스턴스에 대해 24시간 이동 기간 내 남은 API 호출 허용량을 확인할 수 있습니다. Raccoon은 객체당 비교적 적은 호출을 수행하지만(실행당 고정된 횟수에 추가로), 진행 전에 한도를 확인할 수 있는 편의 기능입니다. 기본값은 true입니다. 체크포인트에서 남은 가능한 총 요청 수는 정확하지 않습니다. 호출 수는 'Controlled by Parent' 공유 모델을 가진 객체 수에 따라 달라지기 때문입니다. 표시된 숫자는 모든 객체가 그런 경우를 가정하므로 최대치입니다.

실행:

git clone https://github.com/nccgroup/raccoon
pip3 install -r requirements.txt
python3 raccoon.py <config_file>

인증

사용자 이름과 비밀번호를 사용하는 경우 정의된 네트워크 액세스 범위 밖의 IP 주소에서 접근한다면 보안 토큰도 필요할 수 있습니다. 자세한 내용은 이 문서를 참조하세요.

세션 ID를 사용하는 대안은 여러 경우에 유용합니다:

  • 싱글 사인온, 즉 Salesforce에 직접 로그인이 불가능한 경우
  • MFA가 적용된 경우
  • (필요할 때) API 토큰을 받기 어려운 경우
  • 자격 증명이 파일에 실수로 남는 것을 방지할 수 있는 경우

세션 ID를 얻으려면:

  • Salesforce에 로그인하고 필요하면 Classic 모드로 전환합니다
  • 브라우저의 Inspect 도구를 사용하여 쿠키를 표시합니다
  • 때로는 여러 개의 sid 쿠키가 있습니다: Domain 속성에 my.salesforce.com 또는 cloudforce.com이 포함된 쿠키를 가져와야 합니다.

출력

샘플(축약 및 익명화) 출력:

Raccoon - Salesforce object access auditor
- version 1.0
- https://www.github.com/nccgroup/raccoon
* Refer to README for usage notes including important limitations *

Target instance: somewhere.my.salesforce.com
- Login successful

4,969,529 API requests can be sent to this instance from a 24-hour limit of 5,000,000
- Up to 33 further requests are required to complete (3 requests sent so far)
- Do you want to continue? Enter 'y' to proceed: y

Validating objects
- Found object 'Accounts' with API name 'Account'
- Found object 'Contact' with API name 'Contact'
- Found object 'Quotes' with API name 'Quote__c'
- Found object 'Quote Lines' with API name 'QuoteLine__c'

Evaluating 28 Profiles and 104 Permission Sets
- Profiles with active users: 15
- Permission Sets with active users: 67
- Ignoring 50 unused Profiles and Permission Sets

Global Sharing Overrides (ALL records for ALL objects)
------------------------------------------------------

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - System Administrator                              61/91                    [I]

  READ
  Profiles
  - Integration User                         [C]      1/1                      [I]
  - Analytics Cloud Integration User                  1/1                      [I]

Object Sharing (ALL records for EACH object)
--------------------------------------------

Account:
  Organization-wide default sharing
  - Internal: Public Read Only
  - External: <Undefined>

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Integration User                         [C]      1/1                      [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

  READ
  Profiles
  - Read Only                                [C]      192/199                  [I]
  - Sales User                               [C]      192/248                  [I]
  - Finance User                             [C]      16/20                    [I]
  - Standard User                                     6/3075                   [I]
  Permission Sets (* Groups)
  * Accounts PS Group                        [C]      36/39                    [I]
  - Sales Operations                         [C]      24/26                    [I]
  - SharePoint User                          [C]      3/4                      [I]

  Sharing Rules (manual check required):
  - Criteria-based rules configured
  - Ownership-based rules configured

Contact:
  Organization-wide default sharing
  - Internal: Controlled by Parent
  - External: <Undefined>
  Parent object: 'Account'
  - Internal: Public Read Only
  - External: <Undefined>

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Integration User                                  1/1                      [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

  READ
  Profiles
  - Read Only                                [C]      192/199                  [I]
  - Sales User                               [C]      192/248                  [I]
  - Finance User                             [C]      16/20                    [I]
  - Standard User                                     6/3075                   [I]
  Permission Sets (* Groups)
  - Sales Operations                         [C]      24/26                    [I]

Quote__c:
  Organization-wide default sharing
  - Internal: Public Read/Write
  - External: <Undefined>

  READ/EDIT                                  [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Sales User                               [C]      192/248                  [I]

  READ
  Profiles
  - Finance User                             [C]      16/20                    [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

QuoteLine__c:
  Organization-wide default sharing
  - Internal: Controlled by Parent
  - External: <Undefined>
  Parent object: 'Quote__c'
  - Internal: Public Read/Write
  - External: <Undefined>

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Sales User                               [C]      192/248                  [I]

  READ
  Profiles
  - Finance User                             [C]      16/20                    [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

Total API requests sent: 31

Raccoon은 출력의 장황함을 줄이기 위해 활성 사용자가 있는 프로필과 권한 세트만 검사합니다. 이에 대한 정보가 표시된 후 다음이 수행됩니다:

  • 'View All Data' 및 'Modify All Data' 권한이 있는 프로필과 권한 세트는 모든 객체에 대한 권한을 가지므로 Global Sharing Overrides가 먼저 표시됩니다.
  • 그런 다음 각 객체를 차례로 감사하며, 먼저 읽기+편집+삭제 권한을 고려하고, 그다음 읽기+편집, 마지막으로 읽기만 고려합니다. 프로필 또는 권한 세트는 출력에 한 번만 나열됩니다(가장 높은 유효 권한 집합을 포함하는 섹션에서). 이는 반복을 피하기 위한 것입니다. 예를 들어, 'Modify All Data' 권한이 있는 프로필은 지정된 모든 객체에 대해 읽기+편집+삭제 권한이 있음을 암시하므로 "Global Sharing Overrides" 아래에만 표시되고 각 객체 결과에는 나열되지 않습니다. 유일한 예외는 전역 'View All Data' 권한이 있는 프로필 또는 권한 세트가 객체 수준에서 추가 편집/삭제 권한을 활성화한 경우입니다.
  • 각 객체에 대해 공유 규칙의 존재는 강조 표시되지만 더 자세한 설명은 제공되지 않습니다.
도구 다운로드