Cuộc thi Cookie Arena CTF Season 2 kết thúc cũng được mấy ngày, nhưng chúng mình vẫn tiếp tục đón nhận các cuộc tấn công DDoS mới. Định để vụ này qua đi một cách yên ả vì những gì đã transparent với cộng đồng thì chúng mình đã chia sẻ hết rồi. Nhưng vì có vài thông tin thú vị, liên quan tới cuộc tấn công nên chúng mình viết bài chia sẻ này.
Bối cảnh trong thời gian diễn ra cuộc thi Cookie Arena CTF Season 2. Đã có một lượng traffic khổng lồ (gần 80tr request), vượt hơn 15k % tăng trưởng bình thường của chúng mình nên hạ tầng rung lắc dữ dội. Để đảm bảo an toàn và ổn định (một chút) cho các thử thách phục vụ hơn 554 thí sinh tham gia (đa số ở Việt Nam), nên chúng mình buộc phải chặn các kết nối quốc tế. Chúng mình rất tiếc cho các bạn đang sinh sống và làm việc ở nước ngoài, và cũng rất respect tinh thần nhường nhịn và cổ vũ hết mình của các cậu dành cho các bạn ở Việt Nam và chúng tớ.
Trích bài đăng trên Fanpage Cookie Hân Hoan
Mục lục
Cập nhật diễn biến
Update 1: Th**uc đã liên lạc với Cookie Hân Hoan và khẳng định không tham gia vào cuộc tấn công, đồng thời cũng xác định đúng 7:53:33 AM 13/07/2023 (GMT+7) có đăng nhập vào Cookie Arena để thực hiện giải Challenge.
Vì thông tin hai bên trao đổi vẫn chưa đủ, chúng mình sẽ tiếp tục điều tra và đã có thêm một vài manh mối khác về kẻ tấn công. Nếu có kết luận sau cùng thì chúng mình sẽ update vào blog và xin lỗi công khai tới Th**uc
Update 2: Chúng mình vừa liên lạc điện thoại để trao đổi trực tiếp với Th**uc. Cả hai cùng đi tới kết luận là dữ liệu chưa đầy đủ để kết luận kẻ tấn công là Th**uc. Bằng một cách nào đó (chưa rõ nguyên nhân) IP trong bài viết mà Th**uc sử dụng (ở khu vực công cộng) được gán nhãn HTTP DDoS nên dẫn tới kết luận và những dự đoán không đúng.
Chúng mình chân thành xin lỗi Th**uc và các bạn vì đã đưa tin không đầy đủ và kết luận vội vàng. Mong Th**uc và cộng đồng tiếp tục đồng hành cùng chúng mình. Nếu có thông tin gì mới về cuộc tấn công, chúng mình sẽ tiếp tục update trong blog ạ.
Cuộc tấn công DDoS vào sáng 13/7/2023
Từ 8:00 AM ngày 13/7/2023 cho tới 8:30 AM ngày 13/7/2023, hệ thống Firewall Cloudflare phát hiện một cuộc tấn công DDoS và thực hiện việc tự động ngăn chặn theo Rules đã được thiết lập trước.
Trong vòng 30 phút, đã có 3.73 triệu HTTP Request được gửi đến các máy chủ của Cookie Arena. Từ rất nhiều các địa chỉ IP của các quốc gia khác nhau trên thế giới, trung bình mỗi IP gửi hơn 60k Requests.
- Quan sát số liệu và thấy một lượng lớn các Request đều truy cập vào trang chủ ở đường dẫn “/”.
- Quan sát ở mục User-Agent, kẻ tấn công sử dụng rất nhiều trình duyệt khác nhau để gửi Request. Chúng ta dễ dàng nhận thấy hơn gần 900k Request, chiếm 24% trong cuộc tấn công xuất phát từ User-Agent nginx-ssl early hints.
- Điều này cũng tương đồng với mục Countries, nơi xuất phát các Request này đến từ Mozambique, India và Indonesia.
nginx-ssl early hints là một feature đặc biệt của Nginx trong HTTP/2 giúp browser preload được các resource, để tăng tốc độ tải. Tuy nhiên tham số này không được thiết lập trên hệ thống.
Trong quá trình diễn ra cuộc thi Cookie Arena CTF Season 2, chúng mình ghi nhận hơn 120 triệu Request xảy ra trong 3 đợt (Trước khi diễn ra, trong lúc diễn ra và gần kết thúc cuộc thi khoảng vài giờ). Cách thức tấn công diễn ra y hệt, nên cuộc tấn công ở trong bài viết này cũng vì thế mà bị ngăn chặn ngay từ đầu.
Hình ảnh dưới đây miêu tả hành vi của cuộc tấn công DDoS vào cuộc thi Cookie Arena CTF Season 2 ngày 7/7/2023
À nói thêm về cách chặn trong cuộc thi, chúng mình lúc ấy cần phải xử lý nhanh để bảo vệ các thí sinh phần lớn ở Việt Nam nên tiến hành chặn toàn bộ các Request từ quốc tế. Mục đích:
- Hạ nhiệt cuộc tấn công
- Giữ server ổn định cho các thí sinh tham gia
- Ban tổ chức tập trung thời gian để chăm sóc cho các chiến binh
- Có thêm thời gian để điều tra truy vết
Nhận định ban đầu về hành vi tấn công
Nhận thấy đây là một cuộc tấn công có chủ đích phá hoại. Kẻ tấn công không thay đổi cách thức nên chúng mình sẽ quyết định điều tra đến cùng. Trước hết, chúng mình cần miêu tả qua về Logic của hệ thống Cookie Arena để làm căn cứ kết luận:
- (1) Chỉ những người tham gia cuộc thi mới có thể nhìn thấy các thử thách trong Cookie Arena.
- (2) Chỉ những người đăng nhập vào hệ thống mới có thể truy cập vào trong thử thách
Từ (1), (2) và dữ liệu quan sát trong 3 đợt tấn công DDoS vào cuộc thi đều nhắm vào trang chủ và một thử thách trong Arena. Nên chúng mình đưa tới kết luận kẻ tấn công là một trong những 554 chiến binh tham gia cuộc thi.
Hình bên dưới miêu tả hành vi tấn công DDoS đợt thứ 3 vào cuộc thi. Hai endpoint sau chỉ có chiến binh đăng ký mới truy cập đươc.
- /arenas/cookie-arena-ctf-season-2/battle
- /arenas/cookie-arena-ctf-season-2
Gà nhận định kẻ tấn công sử dụng một công cụ nào đó để huy động hàng loạt các máy tính truy cập vào một đường dẫn và mục tiêu cố định. Công cụ này cũng giới hạn các rất nhiều thứ nên kẻ tấn công không tạo ra được luồng Request giống người dùng bình thường. Vì một người dùng bình thường khi truy cập trang web bằng trình duyệt nó sẽ tạo ra rất nhiều các Request như hình ảnh, js, images, các API khác.
Ngoài ra, kẻ tấn công cũng quên bật chế độ sử dụng User-Agent ngẫu nhiên và “giống thật nhất” nên khi tạo request, các công này luôn sử dụng cá User-Agent đặc trưng như (Python, Curl, Golang,..) như ta quan sát bên trên. Tuyến phòng vệ của kẻ tấn công khá hớ hênh, nên mình quyết định điều tra thêm biết đâu lòi ra cái đuôi nào khác.
Điều tra mở rộng
Vẫn trên dữ liệu logs của Cloudflare của ngày hôm nay, Gà sẽ lọc tìm tất cả những Request sử dụng User-Agent là nginx-ssl early hints và ở trạng thái bị Firewall Block. Mình đặt thêm các giả thiết:
- Liệu có khi nào hacker test tool trên máy của mình trước khi vác nó lên các máy chủ nước ngoài để test không?
- Liệu khi biết Cookie Arena chặn IP quốc tế (như thông báo trên fanpage) thì có thử nó ở Việt Nam không?
Đoàng đoàng, trong hàng trăm ngàn các Request vào trang chủ thì có một Request duy nhất vào “/challenges/web/magic-login-harder“. IP 113.23.27.104 (Việt Nam) bị chặn và có sử dụng User-Agent là nginx-ssl early hints.
Vậy chúng ta có thể vô tình đã trả lời được 2 giả thiết bên trên rồi đúng không? Kẻ tấn công sử dụng IP Việt Nam hoặc máy tính của mình để test tool?
Tới lúc này, mình chỉ tập trung điều tra các Request được gửi từ IP 113.23.27.104 mà thôi. Theo quan sát ở hình bên dưới, 1 Request duy nhất bị Block do sử dụng User-agent bựa, 15 Request còn lại bị Skip vì nó request tới 15 file ảnh trên Google nên chúng mình không kiểm tra. 1 Request bị Managed Challenge.
Hệ thống AI của Web Application Firewall Cloudflare sẽ xác định các hành vi, tính điểm tín nhiệm của IP để từ đó đưa ra Managed Challenge.
Khi nhìn vào Managed Rules trong Dashboard của Cloudflare, chúng ta thấy IP này đã mắc phải rules 949110: Inbound Anomaly Score Exceeded.
Các cậu có thể hiểu nó giống điểm tín nhiệm. Sẽ có một loạt Rules (bộ lọc) để chấm điểm, Match cái nào thì cộng điểm cái đó. AI đã xử lý việc cộng điểm này nên nó đưa ra quyết định rất nhanh hoặc cũng có thể bắt nhầm (False Positive). Trong trường hợp này, Managed Challenge của Cloudflare sẽ đưa ra thử thách để xem IP gửi Request là người hay là Bot.
Như hình bên dưới, WAF đã gán nhãn cho IP này đang có hành vi HTTP DDoS và ngăn chặn tự động vào lúc 8:32:34 AM ngày 13/7/2023 (sau đúng 2 phút kể từ khi kết thúc cuộc tấn công)
Kẻ tấn công có tạo một GET Request tới /oauth/google/callback, đây chính là endpoint dùng để đăng nhập bằng Google trên Cookie Arena. Kẻ tấn công đã thực hiện đăng nhập vào hệ thống băng trình duyệt có User-Agent là Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36. Đây chính là yếu tố xác định kẻ tấn công chính là user trên hệ thống Cookie Arena. Có thể hắn chạy tool bị block nên vào trình duyệt kiểm tra hoặc ngược lại?
Từ các hệ thống Logs trên Cookie Arena, chúng mình phát hiện có duy nhất 01 User đăng nhập đúng vào khoảng thời gian 7:53:33 AM 13/07/2023 (GMT+7) tức là 12:53 AM 13/07/2023 theo giờ UTC. Đồng thời, User này cũng nằm trong danh sách 554 chiến binh và ghi danh tham gia Cookie Arena CTF Season 2 vào lúc 09:13 PM 06/29/2023 (GMT+7).
Các thông tin trên chưa đầy đủ để xác định Th**uc là kẻ tấn công, vì các lý do:
- Tại sao chỉ có duy nhất 1 Request có user-agent trên bị IP 113.23.27.104 gửi tới bị Block mà các Request khác không bị
- Nếu là Tool DDoS thì phải tạo nhiều Request chứ không thể có 1
- Không có thông tin về Digital Forensics trên máy của Th**uc nên không thể kết luận trên đó có Botnet hoặc Tool DDoSS nên không thể kết luận
- Nếu IP ở nơi công cộng bị Botnet (không phải máy của Th**uc) thì số lượng Request sẽ phải khác và có thêm các dấu hiệu khác
Nhìn chung đây là một kết luận vội vàng, chưa đủ thông tin nên dẫn tới việc kết tội IP trên là kẻ tấn công là sai. Chúng mình chân thành xin lỗi mọi người và Th**uc, và sẽ tiếp tục điều tra.
Tuy nhiên, các thông tin trong cuộc tấn công DDoS trước và cho tới tận bây giờ. Kẻ tấn công vẫn là người nằm trong danh sách các thí sinh tham gia cuộc thi. Chúng mình sẽ tiếp tục điều tra và sẽ cập nhật các thông tin mới tới mọi người.
Khi mở rộng điều tra thêm thông tin thì thấy User này sử dụng các địa chỉ IP tĩnh và động thay phiên nhau, ở các khu vực địa lý khác nhau theo timeline dưới đây.
Từ 12/7 sử dụng địa chỉ IP: 113.23.27.104 (khu vực quận 8, TP Hồ Chí Minh)Từ 7/7 cho tới 8/7 sử dụng địa chỉ IP: 171.250.176.xx (khu vực quận 8, TP Hồ Chí Minh)Từ 29/6 cho tới 30/6 sử dụng địa chỉ IP: 2405:xxx:a074:2bf0:xxx:8031:aa65:bd58 (TP Hồ Chí Minh)Từ 27/6 cho tới 28/6 sử dụng địa chỉ IP: 2405:xxx:a074:2bf0:xxx:4565:2001:438f (TP Hồ Chí Minh)Ngày 27/6 sử dụng địa chỉ IP: 2402:800:6341:xxx:dc0a:71f0:xxx:8fc5 (Vũng Tàu)
Timeline của kẻ tấn công
7:53:33 AM 13/07/2023: Đăng nhập vào hệ thống Cookie Arena. Mục đích có thể lấy Cookie hoặc kiểm tra xem Web có hoạt động không (vì một số chức năng của Cookie Arena phải đăng nhập mới truy cập vào được)8:00 AM ngày 13/7/2023 cho tới 8:30 AM ngày 13/7/2023: Sử dụng tool trên Cloud để tấn công DDoS hệ thống 30 phút nhưng bị Block8:32:34 AM ngày 13/7/2023: Vẫn sử dụng tool nhưng ở dưới máy tính cá nhân để test lại (và cũng bị Block)
Hiện trạng
Cookie Arena là dự án cộng đồng nên không có nhiều kinh phí để mở rộng cơ sở hạ tầng và phát triển các tính năng. Nên khi chúng mình được “hân hạnh” đón tiếp các cuộc tấn công DDoS lớn thì hạ tầng đều rung lắc dữ dội. Tuy nhiên, phần lớn các cuộc tấn công đã được phát hiện và ngăn chặn bởi Web Application Firewall Cloudflare. Phần nhỏ bị lọt thì vẫn tạo ra rung lắc nhiều vì Technical Code của chúng mình chưa ổn về mặt hiệu năng.
Ninh Giò
Hay
Bao
Hay