Translated ['src/README.md', 'src/banners/hacktricks-training.md', 'src/

This commit is contained in:
Translator
2024-12-31 20:23:10 +00:00
parent 15cffea561
commit 3814be3153
245 changed files with 10160 additions and 12917 deletions

View File

@@ -4,45 +4,44 @@
<figure><img src="../images/CLOUD-logo-letters.svg" alt=""><figcaption></figcaption></figure>
## Basic Methodology
## Temel Metodoloji
Each cloud has its own peculiarities but in general there are a few **common things a pentester should check** when testing a cloud environment:
Her bulutun kendine özgü özellikleri vardır, ancak genel olarak bir pentester'ın bulut ortamını test ederken kontrol etmesi gereken birkaç **ortak şey** vardır:
- **Benchmark checks**
- This will help you **understand the size** of the environment and **services used**
- It will allow you also to find some **quick misconfigurations** as you can perform most of this tests with **automated tools**
- **Services Enumeration**
- You probably won't find much more misconfigurations here if you performed correctly the benchmark tests, but you might find some that weren't being looked for in the benchmark test.
- This will allow you to know **what is exactly being used** in the cloud env
- This will help a lot in the next steps
- **Check exposed assets**
- This can be done during the previous section, you need to **find out everything that is potentially exposed** to the Internet somehow and how can it be accessed.
- Here I'm taking **manually exposed infrastructure** like instances with web pages or other ports being exposed, and also about other **cloud managed services that can be configured** to be exposed (such as DBs or buckets)
- Then you should check **if that resource can be exposed or not** (confidential information? vulnerabilities? misconfigurations in the exposed service?)
- **Check permissions**
- Here you should **find out all the permissions of each role/user** inside the cloud and how are they used
- Too **many highly privileged** (control everything) accounts? Generated keys not used?... Most of these check should have been done in the benchmark tests already
- If the client is using OpenID or SAML or other **federation** you might need to ask them for further **information** about **how is being each role assigned** (it's not the same that the admin role is assigned to 1 user or to 100)
- It's **not enough to find** which users has **admin** permissions "\*:\*". There are a lot of **other permissions** that depending on the services used can be very **sensitive**.
- Moreover, there are **potential privesc** ways to follow abusing permissions. All this things should be taken into account and **as much privesc paths as possible** should be reported.
- **Check Integrations**
- It's highly probably that **integrations with other clouds or SaaS** are being used inside the cloud env.
- For **integrations of the cloud you are auditing** with other platform you should notify **who has access to (ab)use that integration** and you should ask **how sensitive** is the action being performed.\
For example, who can write in an AWS bucket where GCP is getting data from (ask how sensitive is the action in GCP treating that data).
- For **integrations inside the cloud you are auditing** from external platforms, you should ask **who has access externally to (ab)use that integration** and check how is that data being used.\
For example, if a service is using a Docker image hosted in GCR, you should ask who has access to modify that and which sensitive info and access will get that image when executed inside an AWS cloud.
- **Benchmark kontrolleri**
- Bu, **ortamın boyutunu** ve **kullanılan hizmetleri** anlamanıza yardımcı olacaktır.
- Ayrıca, bu testlerin çoğunu **otomatik araçlarla** gerçekleştirebileceğiniz için bazı **hızlı yanlış yapılandırmaları** bulmanızı sağlar.
- **Hizmetlerin Sayımı**
- Benchmark testlerini doğru bir şekilde gerçekleştirdiyseniz burada çok fazla yanlış yapılandırma bulamayabilirsiniz, ancak benchmark testinde bakılmayan bazılarını bulabilirsiniz.
- Bu, bulut ortamında **tam olarak neyin kullanıldığını** bilmenizi sağlar.
- Bu, sonraki adımlarda çok yardımcı olacaktır.
- **ık varlıkları kontrol et**
- Bu, önceki bölüm sırasında yapılabilir, potansiyel olarak **İnternete açık olan her şeyi** bulmanız ve nasıl erişilebileceğini anlamanız gerekir.
- Burada, web sayfaları veya diğer açık portlara sahip örnekler gibi **manuel olarak açılmış altyapıyı** ve ayrıca **açık hale getirilebilecek diğer bulut yönetilen hizmetleri** (örneğin DB'ler veya bucket'lar) ele alıyorum.
- Sonra, **bu kaynağın açılıp açılamayacağını** kontrol etmelisiniz (gizli bilgi mi? zafiyetler mi? açığa çıkan hizmetteki yanlış yapılandırmalar mı?).
- **İzinleri kontrol et**
- Burada, bulut içindeki her rol/kullanıcının **tüm izinlerini** bulmalı ve bunların nasıl kullanıldığını anlamalısınız.
- Çok **yüksek ayrıcalıklı** (her şeyi kontrol eden) hesaplar mı var? Kullanılmayan anahtarlar mı?... Bu kontrollerin çoğu zaten benchmark testlerinde yapılmış olmalıdır.
- Müşteri OpenID veya SAML veya diğer **federasyon** kullanıyorsa, onlardan **her rolün nasıl atandığı** hakkında daha fazla **bilgi** istemeniz gerekebilir (admin rolünün 1 kullanıcıya mı yoksa 100 kullanıcıya mı atandığı aynı değildir).
- Hangi kullanıcıların **admin** izinlerine sahip olduğunu bulmak **yeterli değildir** "\*:\*". Kullanılan hizmetlere bağlı olarak çok sayıda **diğer izin** çok **hassas** olabilir.
- Ayrıca, izinleri kötüye kullanarak takip edilebilecek **potansiyel privesc** yolları vardır. Tüm bu şeyler dikkate alınmalı ve **mümkün olduğunca fazla privesc yolu** rapor edilmelidir.
- **Entegrasyonları kontrol et**
- Bulut ortamında **diğer bulutlar veya SaaS ile entegrasyonların** kullanılması oldukça olasıdır.
- Denetlediğiniz bulutun **diğer platformlarla entegrasyonları** için, bu entegrasyonu **(kötüye) kullanma** erişimine sahip olanları bildirmeli ve gerçekleştirilen eylemin **ne kadar hassas** olduğunu sormalısınız.\
Örneğin, GCP'den veri alan bir AWS bucket'ında kimlerin yazma yetkisi olduğunu sorun (GCP'de bu veriyi işlerken eylemin ne kadar hassas olduğunu sorun).
- Denetlediğiniz bulut içindeki **dış platformlardan entegrasyonlar** için, bu entegrasyonu **(kötüye) kullanma** erişimine sahip olanları sormalı ve verinin nasıl kullanıldığını kontrol etmelisiniz.\
Örneğin, bir hizmet GCR'de barındırılan bir Docker görüntüsü kullanıyorsa, kimlerin bunu değiştirme erişimine sahip olduğunu ve bu görüntü çalıştırıldığında hangi hassas bilgilere ve erişimlere sahip olacağını sormalısınız.
## Multi-Cloud tools
## Çoklu Bulut Araçları
There are several tools that can be used to test different cloud environments. The installation steps and links are going to be indicated in this section.
Farklı bulut ortamlarını test etmek için kullanılabilecek birkaç araç vardır. Kurulum adımları ve bağlantılar bu bölümde belirtilecektir.
### [PurplePanda](https://github.com/carlospolop/purplepanda)
A tool to **identify bad configurations and privesc path in clouds and across clouds/SaaS.**
**Bulutlarda ve bulutlar/SaaS arasında kötü yapılandırmaları ve privesc yollarını tanımlamak için bir araç.**
{{#tabs }}
{{#tab name="Install" }}
```bash
# You need to install and run neo4j also
git clone https://github.com/carlospolop/PurplePanda
@@ -54,29 +53,25 @@ export PURPLEPANDA_NEO4J_URL="bolt://neo4j@localhost:7687"
export PURPLEPANDA_PWD="neo4j_pwd_4_purplepanda"
python3 main.py -h # Get help
```
{{#endtab }}
{{#tab name="GCP" }}
```bash
export GOOGLE_DISCOVERY=$(echo 'google:
- file_path: ""
- file_path: ""
service_account_id: "some-sa-email@sidentifier.iam.gserviceaccount.com"' | base64)
service_account_id: "some-sa-email@sidentifier.iam.gserviceaccount.com"' | base64)
python3 main.py -a -p google #Get basic info of the account to check it's correctly configured
python3 main.py -e -p google #Enumerate the env
```
{{#endtab }}
{{#endtabs }}
### [Prowler](https://github.com/prowler-cloud/prowler)
It supports **AWS, GCP & Azure**. Check how to configure each provider in [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
**AWS, GCP ve Azure**'ı destekler. Her sağlayıcının nasıl yapılandırılacağını kontrol edin [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
```bash
# Install
pip install prowler
@@ -91,14 +86,12 @@ prowler aws --profile custom-profile [-M csv json json-asff html]
prowler <provider> --list-checks
prowler <provider> --list-services
```
### [CloudSploit](https://github.com/aquasecurity/cloudsploit)
AWS, Azure, Github, Google, Oracle, Alibaba
{{#tabs }}
{{#tab name="Install" }}
{{#tab name="Kurulum" }}
```bash
# Install
git clone https://github.com/aquasecurity/cloudsploit.git
@@ -107,26 +100,22 @@ npm install
./index.js -h
## Docker instructions in github
```
{{#endtab }}
{{#tab name="GCP" }}
```bash
## You need to have creds for a service account and set them in config.js file
./index.js --cloud google --config </abs/path/to/config.js>
```
{{#endtab }}
{{#endtabs }}
### [ScoutSuite](https://github.com/nccgroup/ScoutSuite)
AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure
AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Altyapısı
{{#tabs }}
{{#tab name="Install" }}
{{#tab name="Kurulum" }}
```bash
mkdir scout; cd scout
virtualenv -p python3 venv
@@ -135,42 +124,36 @@ pip install scoutsuite
scout --help
## Using Docker: https://github.com/nccgroup/ScoutSuite/wiki/Docker-Image
```
{{#endtab }}
{{#tab name="GCP" }}
```bash
scout gcp --report-dir /tmp/gcp --user-account --all-projects
## use "--service-account KEY_FILE" instead of "--user-account" to use a service account
SCOUT_FOLDER_REPORT="/tmp"
for pid in $(gcloud projects list --format="value(projectId)"); do
echo "================================================"
echo "Checking $pid"
mkdir "$SCOUT_FOLDER_REPORT/$pid"
scout gcp --report-dir "$SCOUT_FOLDER_REPORT/$pid" --no-browser --user-account --project-id "$pid"
echo "================================================"
echo "Checking $pid"
mkdir "$SCOUT_FOLDER_REPORT/$pid"
scout gcp --report-dir "$SCOUT_FOLDER_REPORT/$pid" --no-browser --user-account --project-id "$pid"
done
```
{{#endtab }}
{{#endtabs }}
### [Steampipe](https://github.com/turbot)
{{#tabs }}
{{#tab name="Install" }}
Download and install Steampipe ([https://steampipe.io/downloads](https://steampipe.io/downloads)). Or use Brew:
{{#tab name="Kurulum" }}
Steampipe'i indirin ve kurun ([https://steampipe.io/downloads](https://steampipe.io/downloads)). Ya da Brew kullanın:
```
brew tap turbot/tap
brew install steampipe
```
{{#endtab }}
{{#tab name="GCP" }}
```bash
# Install gcp plugin
steampipe plugin install gcp
@@ -183,13 +166,11 @@ steampipe dashboard
# To run all the checks from rhe cli
steampipe check all
```
<details>
<summary>Check all Projects</summary>
In order to check all the projects you need to generate the `gcp.spc` file indicating all the projects to test. You can just follow the indications from the following script
<summary>Tüm Projeleri Kontrol Et</summary>
Tüm projeleri kontrol etmek için test edilecek tüm projeleri belirten `gcp.spc` dosyasını oluşturmanız gerekir. Aşağıdaki betikten gelen talimatları takip edebilirsiniz.
```bash
FILEPATH="/tmp/gcp.spc"
rm -rf "$FILEPATH" 2>/dev/null
@@ -197,32 +178,30 @@ rm -rf "$FILEPATH" 2>/dev/null
# Generate a json like object for each project
for pid in $(gcloud projects list --format="value(projectId)"); do
echo "connection \"gcp_$(echo -n $pid | tr "-" "_" )\" {
plugin = \"gcp\"
project = \"$pid\"
plugin = \"gcp\"
project = \"$pid\"
}" >> "$FILEPATH"
done
# Generate the aggragator to call
echo 'connection "gcp_all" {
plugin = "gcp"
type = "aggregator"
connections = ["gcp_*"]
plugin = "gcp"
type = "aggregator"
connections = ["gcp_*"]
}' >> "$FILEPATH"
echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generated"
```
</details>
To check **other GCP insights** (useful for enumerating services) use: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
**Diğer GCP içgörülerini** (hizmetleri listelemek için yararlıdır) kontrol etmek için: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
To check Terraform GCP code: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
Terraform GCP kodunu kontrol etmek için: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
More GCP plugins of Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
Steampipe'ın daha fazla GCP eklentisi: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
{{#endtab }}
{{#tab name="AWS" }}
```bash
# Install aws plugin
steampipe plugin install aws
@@ -246,29 +225,27 @@ cd steampipe-mod-aws-compliance
steampipe dashboard # To see results in browser
steampipe check all --export=/tmp/output4.json
```
Terraform AWS kodunu kontrol etmek için: [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)
More AWS plugins of Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
Steampipe'ın daha fazla AWS eklentisi: [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.\
It requires python2.7 and looks unmaintained.
python2.7 gerektirir ve bakımsız görünüyor.
### Nessus
Nessus has an _**Audit Cloud Infrastructure**_ scan supporting: AWS, Azure, Office 365, Rackspace, Salesforce. Some extra configurations in **Azure** are needed to obtain a **Client Id**.
Nessus'un _**Audit Cloud Infrastructure**_ taraması şunları destekler: AWS, Azure, Office 365, Rackspace, Salesforce. **Client Id** almak için **Azure**'da bazı ek yapılandırmalar gereklidir.
### [**cloudlist**](https://github.com/projectdiscovery/cloudlist)
Cloudlist is a **multi-cloud tool for getting Assets** (Hostnames, IP Addresses) from Cloud Providers.
Cloudlist, Bulut Sağlayıcılarından Varlıklar (Host Adları, IP Adresleri) almak için **çoklu bulut aracı**dır.
{{#tabs }}
{{#tab name="Cloudlist" }}
```bash
cd /tmp
wget https://github.com/projectdiscovery/cloudlist/releases/latest/download/cloudlist_1.0.1_macOS_arm64.zip
@@ -276,46 +253,40 @@ unzip cloudlist_1.0.1_macOS_arm64.zip
chmod +x cloudlist
sudo mv cloudlist /usr/local/bin
```
{{#endtab }}
{{#tab name="Second Tab" }}
{{#tab name="İkinci Sekme" }}
```bash
## For GCP it requires service account JSON credentials
cloudlist -config </path/to/config>
```
{{#endtab }}
{{#endtabs }}
### [**cartography**](https://github.com/lyft/cartography)
### [**harita çıkarma**](https://github.com/lyft/cartography)
Cartography is a Python tool that consolidates infrastructure assets and the relationships between them in an intuitive graph view powered by a Neo4j database.
Harita çıkarma, altyapı varlıklarını ve bunlar arasındaki ilişkileri Neo4j veritabanası tarafından desteklenen sezgisel bir grafik görünümünde birleştiren bir Python aracıdır.
{{#tabs }}
{{#tab name="Install" }}
{{#tab name="Kurulum" }}
```bash
# Installation
docker image pull ghcr.io/lyft/cartography
docker run --platform linux/amd64 ghcr.io/lyft/cartography cartography --help
## Install a Neo4j DB version 3.5.*
```
{{#endtab }}
{{#tab name="GCP" }}
```bash
docker run --platform linux/amd64 \
--volume "$HOME/.config/gcloud/application_default_credentials.json:/application_default_credentials.json" \
-e GOOGLE_APPLICATION_CREDENTIALS="/application_default_credentials.json" \
-e NEO4j_PASSWORD="s3cr3t" \
ghcr.io/lyft/cartography \
--neo4j-uri bolt://host.docker.internal:7687 \
--neo4j-password-env-var NEO4j_PASSWORD \
--neo4j-user neo4j
--volume "$HOME/.config/gcloud/application_default_credentials.json:/application_default_credentials.json" \
-e GOOGLE_APPLICATION_CREDENTIALS="/application_default_credentials.json" \
-e NEO4j_PASSWORD="s3cr3t" \
ghcr.io/lyft/cartography \
--neo4j-uri bolt://host.docker.internal:7687 \
--neo4j-password-env-var NEO4j_PASSWORD \
--neo4j-user neo4j
# It only checks for a few services inside GCP (https://lyft.github.io/cartography/modules/gcp/index.html)
@@ -326,17 +297,15 @@ docker run --platform linux/amd64 \
## Google Kubernetes Engine
### If you can run starbase or purplepanda you will get more info
```
{{#endtab }}
{{#endtabs }}
### [**starbase**](https://github.com/JupiterOne/starbase)
Starbase collects assets and relationships from services and systems including cloud infrastructure, SaaS applications, security controls, and more into an intuitive graph view backed by the Neo4j database.
Starbase, bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve daha fazlası dahil olmak üzere hizmetlerden ve sistemlerden varlıkları ve ilişkileri Neo4j veritabanı tarafından desteklenen sezgisel bir grafik görünümünde toplar.
{{#tabs }}
{{#tab name="Install" }}
```bash
# You are going to need Node version 14, so install nvm following https://tecadmin.net/install-nvm-macos-with-homebrew/
npm install --global yarn
@@ -359,44 +328,40 @@ docker build --no-cache -t starbase:latest .
docker-compose run starbase setup
docker-compose run starbase run
```
{{#endtab }}
{{#tab name="GCP" }}
```yaml
## Config for GCP
### Check out: https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md
### It requires service account credentials
integrations:
- name: graph-google-cloud
instanceId: testInstanceId
directory: ./.integrations/graph-google-cloud
gitRemoteUrl: https://github.com/JupiterOne/graph-google-cloud.git
config:
SERVICE_ACCOUNT_KEY_FILE: "{Check https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md#service_account_key_file-string}"
PROJECT_ID: ""
FOLDER_ID: ""
ORGANIZATION_ID: ""
CONFIGURE_ORGANIZATION_PROJECTS: false
- name: graph-google-cloud
instanceId: testInstanceId
directory: ./.integrations/graph-google-cloud
gitRemoteUrl: https://github.com/JupiterOne/graph-google-cloud.git
config:
SERVICE_ACCOUNT_KEY_FILE: "{Check https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md#service_account_key_file-string}"
PROJECT_ID: ""
FOLDER_ID: ""
ORGANIZATION_ID: ""
CONFIGURE_ORGANIZATION_PROJECTS: false
storage:
engine: neo4j
config:
username: neo4j
password: s3cr3t
uri: bolt://localhost:7687
#Consider using host.docker.internal if from docker
engine: neo4j
config:
username: neo4j
password: s3cr3t
uri: bolt://localhost:7687
#Consider using host.docker.internal if from docker
```
{{#endtab }}
{{#endtabs }}
### [**SkyArk**](https://github.com/cyberark/SkyArk)
Discover the most privileged users in the scanned AWS or Azure environment, including the AWS Shadow Admins. It uses powershell.
Tarayıcı AWS veya Azure ortamında en ayrıcalıklı kullanıcıları, AWS Shadow Admin'leri de dahil olmak üzere keşfedin. PowerShell kullanır.
```powershell
Import-Module .\SkyArk.ps1 -force
Start-AzureStealth
@@ -405,18 +370,17 @@ Start-AzureStealth
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cyberark/SkyArk/master/AzureStealth/AzureStealth.ps1')
Scan-AzureAdmins
```
### [Cloud Brute](https://github.com/0xsha/CloudBrute)
A tool to find a company (target) infrastructure, files, and apps on the top cloud providers (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
Bir şirketin (hedef) altyapısını, dosyalarını ve en büyük bulut sağlayıcılarındaki (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode) uygulamalarını bulmak için bir araç.
### [CloudFox](https://github.com/BishopFox/cloudfox)
- CloudFox is a tool to find exploitable attack paths in cloud infrastructure (currently only AWS & Azure supported with GCP upcoming).
- It is an enumeration tool which is intended to compliment manual pentesting.
- It doesn't create or modify any data within the cloud environment.
- CloudFox, bulut altyapısında (şu anda yalnızca AWS ve Azure destekleniyor, GCP yakında gelecek) istismar edilebilir saldırı yollarını bulmak için bir araçtır.
- Manuel pentesting'i tamamlamak için tasarlanmış bir numaralandırma aracıdır.
- Bulut ortamında herhangi bir veri oluşturmaz veya değiştirmez.
### More lists of cloud security tools
### Daha fazla bulut güvenlik aracı listesi
- [https://github.com/RyanJarv/awesome-cloud-sec](https://github.com/RyanJarv/awesome-cloud-sec)
@@ -446,16 +410,12 @@ aws-security/
azure-security/
{{#endref}}
### Attack Graph
### Saldırı Grafiği
[**Stormspotter** ](https://github.com/Azure/Stormspotter)creates an “attack graph” of the resources in an Azure subscription. It enables red teams and pentesters to visualize the attack surface and pivot opportunities within a tenant, and supercharges your defenders to quickly orient and prioritize incident response work.
[**Stormspotter** ](https://github.com/Azure/Stormspotter), bir Azure aboneliğindeki kaynakların “saldırı grafiğini” oluşturur. Kırmızı takımlara ve pentesterlara saldırı yüzeyini ve bir kiracı içindeki pivot fırsatlarını görselleştirme imkanı tanır ve savunucularınızı olay yanıtı çalışmalarını hızlı bir şekilde yönlendirmek ve önceliklendirmek için güçlendirir.
### Office365
You need **Global Admin** or at least **Global Admin Reader** (but note that Global Admin Reader is a little bit limited). However, those limitations appear in some PS modules and can be bypassed accessing the features **via the web application**.
**Global Admin** veya en azından **Global Admin Reader**'a ihtiyacınız var (ancak Global Admin Reader'ın biraz sınırlı olduğunu unutmayın). Ancak, bu sınırlamalar bazı PS modüllerinde ortaya çıkmakta ve özelliklere **web uygulaması aracılığıyla** erişerek aşılabilir.
{{#include ../banners/hacktricks-training.md}}