GCP - Logging Post Exploitation

HackTricks рдХреЛ рд╕рдорд░реНрдерди рджреЗрдВ
  • subscription plans рджреЗрдЦреЗрдВ!

  • ЁЯТм Discord group рдпрд╛ telegram group рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ рд╣рдореЗрдВ Twitter ЁЯРж рдкрд░ рдлреЙрд▓реЛ рдХрд░реЗрдВ @hacktricks_live.**

  • рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ HackTricks рдФрд░ HackTricks Cloud github repos рдореЗрдВ PRs рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗред

Basic Information

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:

GCP - Logging Enum

рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:

GCP - Monitoring Post Exploitation

Default Logging

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП Logging Enum рд╕реЗрдХреНрд╢рди рджреЗрдЦреЗрдВред

Excepted Principal рдЬреЛрдбрд╝реЗрдВ

https://console.cloud.google.com/iam-admin/audit/allservices рдФрд░ https://console.cloud.google.com/iam-admin/audit рдореЗрдВ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рд▓реЙрдЧреНрд╕ рдЙрддреНрдкрдиреНрди рди рд╣реЛрдВред рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрдХрдбрд╝рд╛ рди рдЬрд╛рдПред

рд▓реЙрдЧреНрд╕ рдкрдврд╝реЗрдВ - logging.logEntries.list

# Read logs
gcloud logging read "logName=projects/your-project-id/logs/log-id" --limit=10 --format=json

# Everything from a timestamp
gcloud logging read "timestamp >= \"2023-01-01T00:00:00Z\"" --limit=10 --format=json

# Use these options to indicate a different bucket or view to use: --bucket=_Required  --view=_Default

logging.logs.delete

# Delete all entries from a log in the _Default log bucket - logging.logs.delete
gcloud logging logs delete <log-name>

Write logs - logging.logEntries.create

# Write a log entry to try to disrupt some system
gcloud logging write LOG_NAME "A deceptive log entry" --severity=ERROR

logging.buckets.update

# Set retention period to 1 day (_Required has a fixed one of 400days)

gcloud logging buckets update bucketlog --location=<location> --description="New description" --retention-days=1

logging.buckets.delete

рд╡рд┐рд╡рд░рдг

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рдПрдХ рд▓реЙрдЧрд┐рдВрдЧ рдмрдХреЗрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡

рд▓реЙрдЧрд┐рдВрдЧ рдмрдХреЗрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓реЙрдЧ рдбреЗрдЯрд╛ рдЦреЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдШрдЯрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдФрд░ рдЕрдиреБрдкрд╛рд▓рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╢рдорди

  • рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрдВред

  • рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдбреЗрдЯрд╛ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдВред

  • рд▓реЙрдЧрд┐рдВрдЧ рдмрдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВред

# Delete log bucket
gcloud logging buckets delete BUCKET_NAME --location=<location>

logging.links.delete

# Delete link
gcloud logging links delete <link-id> --bucket <bucket> --location <location>

logging.views.delete

рд╡рд┐рд╡рд░рдг

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рдПрдХ рд▓реЙрдЧ рд╡реНрдпреВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡

рд▓реЙрдЧ рд╡реНрдпреВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓реЙрдЧ рдбреЗрдЯрд╛ рдЦреЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЕрдиреБрдкрд╛рд▓рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╢рдорди

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣реА рдпрд╣ рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИ рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдмреИрдХрдЕрдк рдмрдирд╛рдП рд░рдЦреЗрдВред

# Delete a logging view to remove access to anyone using it
gcloud logging views delete <view-id> --bucket=<bucket> --location=global

logging.views.update

# Update a logging view to hide data
gcloud logging views update <view-id> --log-filter="resource.type=gce_instance" --bucket=<bucket> --location=global --description="New description for the log view"

logging.logMetrics.update

# Update log based metrics - logging.logMetrics.update
gcloud logging metrics update <metric-name> --description="Changed metric description" --log-filter="severity>CRITICAL" --project=PROJECT_ID

logging.logMetrics.delete

рд╡рд┐рд╡рд░рдг

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Metric рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рджреБрд░реБрдкрдпреЛрдЧ

рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕ рдЕрдиреБрдорддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Metric рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдореЗрдВ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╢рдорди

  1. рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣реА рдпрд╣ рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИред

  2. рд▓реЙрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ: рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдирдзрд┐рдХреГрдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

  3. рдЕрд▓рд░реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ: Metric рд╣рдЯрд╛рдиреЗ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рд░реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВред

logging.logMetrics.create

рд╡рд┐рд╡рд░рдг

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Metric рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рджреБрд░реБрдкрдпреЛрдЧ

рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕ рдЕрдиреБрдорддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЭреВрдареЗ Metric рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдореЗрдВ рднреНрд░рдо рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╢рдорди

  1. рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣реА рдпрд╣ рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИред

  2. рд▓реЙрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ: рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдирдзрд┐рдХреГрдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

  3. рдЕрд▓рд░реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ: Metric рдмрдирд╛рдиреЗ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рд░реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВред

# Delete log based metrics - logging.logMetrics.delete
gcloud logging metrics delete <metric-name>

logging.sinks.delete

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рдВрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ рдкреЛрд╕реНрдЯ-рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯреЗрд╢рди рдЪрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рд▓реЙрдЧ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЖрдкрдХреЗ рдЯреНрд░реИрдХреНрд╕ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

logging.sinks.update

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдк рд▓реЙрдЧреНрд╕ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

logging.logs.delete

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рд▓реЙрдЧреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╢рд╛рди рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

logging.exclusions.create

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рдПрдХреНрд╕рдХреНрд▓реВрдЬрд╝рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдк рдЗрд╕реЗ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд▓реЙрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

logging.exclusions.delete

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рдПрдХреНрд╕рдХреНрд▓реВрдЬрд╝рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдХреНрд▓реВрдЬрд╝рди рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

logging.exclusions.update

рдпрд╣ рдЕрдиреБрдорддрд┐ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рд▓реЙрдЧрд┐рдВрдЧ рдПрдХреНрд╕рдХреНрд▓реВрдЬрд╝рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдк рдЗрд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПред

# Delete sink - logging.sinks.delete
gcloud logging sinks delete <sink-name>

logging.sinks.update

# Disable sink - logging.sinks.update
gcloud logging sinks update <sink-name> --disabled

# Createa filter to exclude attackers logs - logging.sinks.update
gcloud logging sinks update SINK_NAME --add-exclusion="name=exclude-info-logs,filter=severity<INFO"

# Change where the sink is storing the data - logging.sinks.update
gcloud logging sinks update <sink-name> new-destination

# Change the service account to one withuot permissions to write in the destination - logging.sinks.update
gcloud logging sinks update SINK_NAME --custom-writer-identity=attacker-service-account-email --project=PROJECT_ID

# Remove explusions to try to overload with logs - logging.sinks.update
gcloud logging sinks update SINK_NAME --clear-exclusions

# If the sink exports to BigQuery, an attacker might enable or disable the use of partitioned tables, potentially leading to inefficient querying and higher costs. - logging.sinks.update
gcloud logging sinks update SINK_NAME --use-partitioned-tables
gcloud logging sinks update SINK_NAME --no-use-partitioned-tables
HackTricks рдХреЛ рд╕рдорд░реНрдерди рджреЗрдВ
  • subscription plans рджреЗрдЦреЗрдВ!

  • ЁЯТм Discord group рдпрд╛ telegram group рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ Twitter ЁЯРж рдкрд░ рд╣рдореЗрдВ рдлреЙрд▓реЛ рдХрд░реЗрдВ @hacktricks_live.

  • PRs рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ HackTricks рдФрд░ HackTricks Cloud github repos рдореЗрдВред

Last updated