+7

Google Cloud Armor và cuộc tấn công DDoS lớn nhất lịch sử

Mayfest2023 ContentCreator

1. Vụ tấn công từ chối dịch vụ (DDOS) lớn nhất lịch sử

Ngày 19 tháng 8 năm 2022, Google Cloud đăng tải một bài viết với tiêu đề "How Google Cloud blocked the largest Layer 7 DDoS attack at 46 million rps" - Google Cloud đã ngăn chặn cuộc tấn công DDOS với 46 triệu request/giây như thế nào ? . Chi tiết bài viết mọi người có thể đọc tại đây .

Sơ lược cuộc tấn công diễn ra như sau :

  • Bắt đầu từ khoảng 9:45 phút sáng (theo giờ Thái Bình Dương) vào ngày 1 tháng 6 năm 2022, một cuộc tấn công gồm hơn 10.000 request/giây bắt đầu nhắm mục tiêu vào HTTP/S Load Balancer của một khách hàng sử dụng Google Cloud.
  • Tám phút sau, cuộc tấn công đã tăng lên đến 100.000 request/giây.
  • Google Cloud Armor phát hiện cuộc tấn công và bắt đầu tiến hành phân tích lưu lượng.
  • Google Cloud Armor đưa ra một loạt các đề xuất để tiến hành ngăn chặn cuộc tấn công này trước khi nó lên đến đỉnh điểm.
  • Nhóm bảo mật của khách hàng áp dụng các quy tắc mà Google Cloud đưa ra.
  • Trong hai phút sau đó, cuộc tấn công bắt đầu tăng tốc, tăng từ 100.000 request/giây lên mức cao nhất là 46 triệu request/giây tuy nhiên hệ thống của của khách hàng vẫn hoạt động bình thường.
  • Trong vài phút tiếp theo, cuộc tấn công bắt đầu giảm mức độ, cuối cùng kết thúc 69 phút sau đó lúc 10:54 sáng

image.png

Có 5.256 IP từ 132 quốc gia góp phần tạo lên một kỷ lục chưa từng có về lưu lượng tấn công từ trước tới nay. Giống như việc ta hứng chịu toàn bộ lưu lượng truy cập vào Wikipedia (một trang cũng rất khủng bố) một ngày trong thời gian 10 giây...

Xuyên suốt quá trình tấn công, từ khóa đáng lưu tâm nhất là "Google Cloud Armor" . Vậy Google Cloud Armor là gì mà nó lại mạnh mẽ như thế ? Chúng ta sẽ cùng nhau tìm hiểu ở nội dung dưới đây

2. Về Google Cloud Armor

image.png

2.1. Tổng quan

Google Cloud Armor là dịch vụ phòng chống DDOS vào load balancers ở Layer 3 và Layer 4 trong môi trường Google Cloud Platform (Nghĩa là nếu doanh nghiệp của bạn đang sử dụng AWS hay Azure sẽ không thể tích hợp tiện ích này). Nó đồng thời đóng vai trò như một Web Application Firewall (WAF) bảo vệ trang web khỏi các rủi ro phổ biến như SQL Injection, Cross-site scripting , Local File Inclusion ...

Ngoài các rules sẵn có, Google Cloud Armor cung cấp cho người dùng khả năng tùy biến ở mức độ rất cao phù hợp với các yêu cầu phức tạp như (cấu hình theo vị trí địa lý, địa chỉ IP, hay tham số cookie ...)

2.2. Chi phí vận hành

Khi sử dụng các dịch vụ Public Cloud, ngoài việc quan tâm tới hiệu quả mang lại, chúng ta cần quan tâm thêm tới chi phí vận hành. Theo đó ta có thể theo dõi thông qua bảng dưới đây

image.png

Google Cloud Armor cung cấp 2 gói để người dùng có thể lựa chọn là Standard TierPlus Tier. Sự khác nhau rõ ràng nhất ở 2 phiên bản này thông qua cách tiếp cận dịch vụ. Một cái là trọn gói, một cái là dùng bao nhiêu trả tiền bấy nhiêu. Ngoài ra chỉ có bản Plus Tier mới được tích hợp chức năng bảo mật lừng danh - Adaptive Protection. Qua đó bản Standard Tier có vẻ phù hợp hơn với doanh nghiệp vừa và nhỏ, yêu cầu khả năng tùy biến thấp , bản Plus Tier phù hợp cho doanh nghiệp lớn, yêu cầu cao về cấu hình bảo mật.

Ngoài ra Google cũng tính thêm "phụ phí" network, nhìn chung không đáng kể với người sử dụng thông thường

image.png

2.3. Mô hình triển khai

Google Cloud Armor là một sản phẩm tích hợp chặt chẽ với các dịch vụ khác của Google Cloud , do đó ta có thể đính kèm ở vô số các chỗ khác nhau. Chúng ta có thể triển khai theo đa dạng các cách như sau :

  • Google Cloud Armor với VPC firewall rules
  • Google Cloud Armor vào HTTP(S) Load Balancing and IAP
  • Cloud Armor vào hybrid deployments
  • Google Cloud Armor vào Google Kubernetes Engine (GKE) Ingress
  • Google Cloud Armor vào Cloud CDN
  • Google Cloud Armor vào serverless apps

Trong khuôn khổ bài viết, ta tiến hành triển khai Google Cloud Armor với VPC Firewall rules

image.png

3. Triển khai Google Cloud Armor

3.1. Xây dựng môi trường

Step 1. Giao tiếp với Google Cloud Console thông qua dòng lệnh

Đăng nhập vào tài khoản GCP , Click vào Active Cloud Shell trên trình duyệt (Ngoài ra chúng ta có thể sử dụng gcloud CLI để thay thế)

image.png

Step 2. Tạo và cài đặt Project

gcloud config list project
gcloud config set project dazzling-trail-360104

image.png

Step 3. Chấp nhận APIs (bao gồm computer, logging , monitoring)

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

image.png

Step 4. Tạo VPC network

gcloud compute networks create vuln-lab-vpc --subnet-mode custom

image.png

gcloud compute networks subnets create vuln-lab-subnet --network vuln-lab-vpc --range 10.0.0.0/24 --region us-central1

Step 5. Tạo VPC Firewall & cấu hình Google health-checks

gcloud compute firewall-rules create allow-js-site --allow tcp:8080 --network vuln-lab-vpc
gcloud compute firewall-rules create allow-health-check --network=vuln-lab-vpc --action=allow --direction=ingress --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=allow-healthcheck --rules=tcp

image.png

image.png

3.2. Xây dựng ứng dụng chứa lỗ hổng

Để cung cấp cái nhìn trực quan nhất, ta tiến hành xây dựng môi trường chứa lỗ hổng tiềm tàng mà qua đó Hacker có thể lợi dụng xâm nhập vào hệ thống. Trong khuôn khổ bài viết này, mình sử dụng OWASP Juice làm ví dụ

Step 1. Cài đặt OWASP Juice Application

gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop --network vuln-lab-vpc --subnet vuln-lab-subnet --private-network-ip=10.0.0.3 --machine-type n1-standard-2 --zone us-central1-c --tags allow-healthcheck

image.png

Step 2. Setup Cloud load balancer

gcloud compute instance-groups unmanaged create group-labs --zone=us-central1-c

Add the instance trên vào instance group

gcloud compute instance-groups unmanaged add-instances group-labs --zone=us-central1-c --instances=owasp-juice-shop-app

image.png

Step 3. Cấu hình cho OWASP Juice Application

  • Cấu hình Port
gcloud compute instance-groups unmanaged set-named-ports juice-shop-group --named-ports=http:3000 --zone=us-central1-c
  • Cài đặt health-check
gcloud compute health-checks create tcp tcp-port-3000 --port 3000
  • Tạo một backend service và thêm instance group đã thiết lập ở bước trên
gcloud compute backend-services create dvwa-backend --protocol HTTP --port-name http --health-checks tcp-port-3000 --enable-logging --global 
 gcloud compute backend-services add-backend dvwa-backend  \
       --instance-group=group-labs \
       --instance-group-zone=us-central1-c \
       --global
  • Tạo URL map & Target Proxy để gửi tới backend
gcloud compute url-maps create dvwa-shop-loadbalancer --default-service dvwa-backend
gcloud compute target-http-proxies create dvwa-shop-proxy --url-map dvwa-shop-loadbalancer
  • Tạo forwarding rule cho Load Balancer
gcloud compute forwarding-rules create dvwa-rule --global --target-http-proxy=dvwa-shop-proxy --ports=80

Step 4. Kiểm tra xem các lỗ hổng bảo mật đã "hoạt động chưa"

  • Test Cross Site Scripting (XSS)

image.png

  • Test Remote Code Execution
curl -Ii http://35.188.107.32:8000/ftp?doc=/bin/ls
  • Scan application
curl -Ii  http://35.188.107.32:8000 -H "User-Agent: blackwindow"

3.3. Triển khai Cloud Armor WAF

Step 1 . Xem danh sách các rules được thiết lập sẵn từ Google

gcloud compute security-policies list-preconfigured-expression-sets

Step 2 Tạo Cloud Armor security policy

gcloud compute security-policies create sun_security --description "Block with OWASP ModSecurity CRS"

Bước này bạn cần liên hệ với Google để mở Quota

Step 3. Bật tính năng WAF cho Cloud Armor

  • Update security policy để block LFI
gcloud compute security-policies rules create 9000 --security-policy sun_security --description "block local file inclusion" --expression "evaluatePreconfiguredExpr('lfi-stable')" --action deny-403
  • Update security policy để block RCE
gcloud compute security-policies rules create 9001 --security-policy sun_security  --description "block rce attacks" --expression "evaluatePreconfiguredExpr('rce-stable')"  --action deny-403
  • Update security policy để block session fixation
gcloud compute security-policies rules create 9004 --security-policy sun_security --description "block session fixation attacks" --expression "evaluatePreconfiguredExpr('sessionfixation-stable')"  --action deny-403
  • Update security policy để protocol attacks
gcloud compute security-policies rules create 9003 --security-policy sun_security --description "block protocol attacks" --expression "evaluatePreconfiguredExpr('protocolattack-stable')" --action deny-403

Step 4. Tấn công lại OWASP Juice Application sau khi đã thiết lập các chính sách bảo mật

  • Test Cross Site Scripting (XSS) : Không thành công, hành động bị ghi vào log

image.png

  • Test Remote Code Execution : Không thành công, hành động bị ghi vào log

image.png

  • Test Scanner : Không thành công, hành động bị ghi vào log

image.png

4. Tùy biến rules Cloud Armor

Google Cloud Armor cho phép người dùng viết các rule tự định nghĩa để nâng cao mức độ cá nhân hóa trong bảo mật ứng dụng .

Các rule được định nghĩa thông qua 2 phương pháp cơ bản :

  • Basic match condition : Câu lệnh điều kiện chứa IP hoặc một dải IP
  • Advanced match condition : Chứa một “expression” để so sánh thuộc tính của một request.

“Expression” của Advanced match condition là một thành phần mở rộng của CEL ( Ngôn ngữ biểu thức chung của Google)

Một expression bao gồm 2 thành phần::

  • Operations
  • Attributes

Ta có một số rules cơ bản như sau được định nghĩa như sau :

  • Cho phép hoặc từ chối truy cập dựa trên dải IP
inIpRange(origin.ip, '9.9.9.0/24')
inIpRange(origin.ip, '2001:db8::/32')
  • Cho phép từ chối truy cập bằng một Cookie cụ thể
has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')
  • Cho phép yêu cầu hoặc từ chối request có referer non-empty
has(request.headers['referer']) && request.headers['referer'] != ""

Cho phép hay từ chối IP một quốc gia:

origin.region_code == 'AU'

5. Chế độ Adaptive Protection

image.png

Adaptive Protection được xây dựng trên mô hình machine-learning , tự động hóa những công việc sau :

  • Phát hiện và cảnh báo về hoạt động bất thường
  • Tạo chữ ký mô tả cuộc tấn công tiềm năng
  • Tạo rules ngăn chặn cuộc tấn công (Người dùng quyết định sẽ áp dụng hay không)

Chính sự hiệu quả của Adaptive Protection cùng với cấu hình chính xác từ Cloud Armor đã chặn đừng 46 triệu request mỗi giây, để người dùng vẫn có thể làm việc bình thường trong "cơn bão" DDOS lớn nhất trong lịch sử mà không ảnh hưởng gì.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.