GCP - Logging Post Exploitation

Підтримайте HackTricks

Основна інформація

Для отримання додаткової інформації перевірте:

GCP - Logging Enum

Для інших способів порушення моніторингу перевірте:

GCP - Monitoring Post Exploitation

Логування за замовчуванням

За замовчуванням вас не спіймають лише за виконання дій читання. Для отримання додаткової інформації перевірте розділ Logging Enum.

Додавання виключеного Principal

У https://console.cloud.google.com/iam-admin/audit/allservices та https://console.cloud.google.com/iam-admin/audit можна додати principals, щоб не генерувати логи. Зловмисник може зловживати цим, щоб уникнути виявлення.

Читання логів - 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>

Записувати логи - 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

Цей дозвіл дозволяє видаляти журнали з певного відра. Це може бути корисно для приховування слідів після виконання шкідливих дій.

logging.buckets.update

Цей дозвіл дозволяє змінювати налаштування відра журналів. Це може бути використано для зміни політик збереження або інших налаштувань, щоб приховати шкідливу активність.

logging.logEntries.create

Цей дозвіл дозволяє створювати нові записи журналів. Це може бути використано для додавання фальшивих записів, щоб заплутати слідчих або приховати справжню активність.

logging.logEntries.delete

Цей дозвіл дозволяє видаляти окремі записи журналів. Це може бути корисно для видалення слідів шкідливої активності.

logging.logEntries.list

Цей дозвіл дозволяє переглядати записи журналів. Це може бути корисно для збору інформації про систему та виявлення потенційних цілей для атак.

logging.logs.delete

Цей дозвіл дозволяє видаляти цілі журнали. Це може бути використано для приховування слідів після виконання шкідливих дій.

logging.logs.list

Цей дозвіл дозволяє переглядати списки журналів. Це може бути корисно для збору інформації про систему та виявлення потенційних цілей для атак.

logging.sinks.create

Цей дозвіл дозволяє створювати нові sinks для журналів. Це може бути використано для перенаправлення журналів до іншого місця, щоб приховати шкідливу активність.

logging.sinks.delete

Цей дозвіл дозволяє видаляти sinks для журналів. Це може бути корисно для видалення слідів шкідливої активності.

logging.sinks.update

Цей дозвіл дозволяє змінювати налаштування sinks для журналів. Це може бути використано для зміни напрямку журналів, щоб приховати шкідливу активність.

logging.sinks.list

Цей дозвіл дозволяє переглядати sinks для журналів. Це може бути корисно для збору інформації про систему та виявлення потенційних цілей для атак.

logging.exclusions.create

Цей дозвіл дозволяє створювати виключення для журналів. Це може бути використано для виключення певних типів записів журналів, щоб приховати шкідливу активність.

logging.exclusions.delete

Цей дозвіл дозволяє видаляти виключення для журналів. Це може бути корисно для видалення слідів шкідливої активності.

logging.exclusions.update

Цей дозвіл дозволяє змінювати налаштування виключень для журналів. Це може бути використано для зміни політик виключення, щоб приховати шкідливу активність.

logging.exclusions.list

Цей дозвіл дозволяє переглядати виключення для журналів. Це може бути корисно для збору інформації про систему та виявлення потенційних цілей для атак.

# 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

Видалення журналів

Після отримання доступу до облікового запису GCP, зловмисник може захотіти видалити журнали, щоб приховати свої дії. Це можна зробити за допомогою дозволу logging.views.delete.

Приклад

gcloud logging views delete [VIEW_NAME] --project=[PROJECT_ID]

Ця команда видаляє вказаний журнал з проекту.

# 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

Опис

Видаляє метрику журналу.

Використання

gcloud logging metrics delete [METRIC_NAME]

Дозволи

Необхідні дозволи для виконання цієї команди:

  • logging.logMetrics.delete

Ролі

Наступні ролі містять необхідні дозволи:

  • roles/logging.admin

Примітка

Видалення метрики журналу може вплинути на моніторинг та оповіщення, які залежать від цієї метрики.

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

logging.sinks.delete

Цей дозвіл дозволяє видаляти існуючі sinks. Видалення sinks може бути корисним для приховування слідів, оскільки це зупиняє надсилання нових логів до певного місця призначення.

logging.sinks.update

Цей дозвіл дозволяє оновлювати існуючі sinks. Оновлення sinks може бути корисним для зміни місця призначення логів, що може допомогти в приховуванні слідів.

logging.sinks.create

Цей дозвіл дозволяє створювати нові sinks. Створення нових sinks може бути корисним для перенаправлення логів до місця, яке контролюється зловмисником.

logging.logs.delete

Цей дозвіл дозволяє видаляти існуючі логи. Видалення логів може бути корисним для приховування слідів діяльності зловмисника.

logging.logEntries.create

Цей дозвіл дозволяє створювати нові записи логів. Створення нових записів логів може бути корисним для введення в оману або приховування слідів.

logging.logEntries.list

Цей дозвіл дозволяє перераховувати існуючі записи логів. Перерахування записів логів може бути корисним для отримання інформації про активність в системі.

logging.logMetrics.create

Цей дозвіл дозволяє створювати нові метрики логів. Створення нових метрик логів може бути корисним для моніторингу специфічної активності.

logging.logMetrics.delete

Цей дозвіл дозволяє видаляти існуючі метрики логів. Видалення метрик логів може бути корисним для приховування специфічної активності.

logging.logMetrics.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

Last updated