Phun đống là một kỹ thuật được tin tặc sử dụng để tạo điều kiện cho việc thực thi mã tùy ý, thường là một phần của hoạt động khai thác lỗ hổng phần mềm. Nó hoạt động bằng cách phân bổ nhiều cấu trúc dữ liệu “heap” chứa tải trọng độc hại, do đó làm tăng khả năng xảy ra lỗ hổng tràn bộ đệm, chẳng hạn, sẽ dẫn đến việc thực thi mã của kẻ tấn công.
Nguồn gốc của Heap Spray và sự đề cập đầu tiên của nó
Heap Spray như một kỹ thuật khai thác có nguồn gốc từ cuối những năm 1990 và đầu những năm 2000, khi Internet ngày càng phổ biến và an ninh mạng chưa mạnh mẽ như ngày nay. Đề cập chính đầu tiên của nó là tác phẩm của hacker có đạo đức và chuyên gia an ninh mạng SkyLined, người đã cung cấp các mô tả và ví dụ toàn diện về kỹ thuật này. Những hiểu biết sâu sắc của SkyLined đã giúp minh họa mức độ nghiêm trọng của việc phun đống dữ liệu như một vectơ đe dọa, dẫn đến những nỗ lực gia tăng nhằm giảm thiểu tác động của nó.
Heap Spray: Kiểm tra chuyên sâu
Phun vùng heap liên quan đến việc điền vào vùng heap – một vùng bộ nhớ của máy tính được sử dụng để phân bổ bộ nhớ động – với các khối dữ liệu chứa một chuỗi byte cụ thể, thường được gọi là “NOP sled” hoặc “NOP slide”. Tải trọng thực tế của việc khai thác, thường là shellcode, được đặt ở cuối chuỗi này. Sự sắp xếp này về cơ bản là “hướng dẫn” luồng thực thi đến tải trọng nếu lỗ hổng cho phép điều khiển con trỏ lệnh.
Phun đống chủ yếu được sử dụng trong các cuộc tấn công chống lại các chương trình phần mềm có lỗi bộ nhớ, điển hình là lỗi tràn bộ đệm hoặc lỗ hổng use-after-free. Những lỗi này có thể cho phép kẻ tấn công ghi đè lên một địa chỉ bộ nhớ, nếu thao tác chính xác, địa chỉ này có thể được sử dụng để hướng việc thực thi vào vùng nhớ heap. Việc phun vùng heap giúp “chuẩn bị” vùng heap cho việc này, khiến cho việc thực thi được chuyển hướng có nhiều khả năng xảy ra trên payload của kẻ tấn công hơn.
Cách thức hoạt động của Heap Spray: Phân tích kỹ thuật
Tính năng phun vùng heap hoạt động bằng cách làm tràn vùng heap bằng các bản sao của chuỗi byte mong muốn. Đây là một trình tự đơn giản của thủ tục:
- Quá trình phun đống được kích hoạt, thường thông qua JavaScript trong môi trường web.
- Heap Spray đưa vào heap nhiều khối bộ nhớ chứa dữ liệu của kẻ tấn công.
- Dữ liệu bị lây nhiễm được cấu trúc bằng một NOP sled dẫn đến tải trọng khai thác.
- Nếu có lỗi có thể khai thác được, quá trình thực thi có thể được chuyển hướng đến một địa chỉ bộ nhớ tùy ý.
- Với sự hiện diện rộng rãi của dữ liệu bị rải, có khả năng cao việc chuyển hướng này sẽ dẫn đến tải trọng của kẻ tấn công.
- Sau đó, tải trọng sẽ được thực thi, cung cấp cho kẻ tấn công kết quả mong muốn, thường là điều khiển hệ thống từ xa.
Các tính năng chính của Heap Spray
Phun đống được đặc trưng bởi một số tính năng chính:
- Tăng tỷ lệ tấn công thành công: Phun đống làm tăng cơ hội khai thác thành công lỗ hổng hỏng bộ nhớ.
- Thao tác bộ nhớ: Nó thao tác trạng thái của bộ nhớ tiến trình để tạo điều kiện cho việc thực thi mã tùy ý.
- Có thể khai thác trong nhiều môi trường khác nhau: Phun đống có thể được triển khai trong nhiều môi trường, chẳng hạn như trình duyệt web hoặc ứng dụng máy chủ.
- Thường được kết hợp với các cách khai thác khác: Phun đống thường được sử dụng kết hợp với các cách khai thác lỗ hổng khác để đạt được kết quả mong muốn.
Các loại phun đống
Kỹ thuật phun đống có thể được phân loại dựa trên môi trường khai thác và tính chất của việc phân phối tải trọng.
Kiểu | Sự miêu tả |
---|---|
Xịt đống JavaScript | Được sử dụng trong các cuộc tấn công dựa trên web, JavaScript được sử dụng để lấp đầy đống tải trọng độc hại. |
Xịt đống flash | Sử dụng Adobe Flash để tiến hành phun, thường là trong môi trường web. |
Xịt đống Java | Sử dụng các ứng dụng Java để tấn công, một phương pháp khác để tấn công dựa trên web. |
Xịt đống chính xác | Nhắm mục tiêu các đối tượng cụ thể trong vùng heap, hữu ích trong việc khai thác lần sử dụng sau. |
Ứng dụng, thách thức và giải pháp của Heap Spray
Việc phun đống chủ yếu được những kẻ tấn công trong thế giới mạng sử dụng để khai thác các lỗ hổng phần mềm. Nó đã được sử dụng rộng rãi trong việc tạo ra phần mềm độc hại tinh vi và thực hiện các mối đe dọa liên tục nâng cao (APT).
Thách thức chính của việc phun đống dữ liệu từ góc độ bảo mật là việc phát hiện và ngăn chặn nó. Các giải pháp bảo mật dựa trên chữ ký truyền thống gặp khó khăn trong việc xác định các cuộc tấn công phun đống do tính chất linh hoạt của chúng. Do đó, các giải pháp hiện đại dựa vào việc phát hiện dựa trên hành vi và sử dụng các kỹ thuật giảm thiểu khai thác như Ngẫu nhiên bố cục không gian địa chỉ (ASLR) và Ngăn chặn thực thi dữ liệu (DEP).
So sánh và đặc điểm
So sánh việc phun đống với các kỹ thuật tương tự khác như xoay vòng ngăn xếp và lập trình hướng trả về (ROP), phun đống nổi bật vì tính đơn giản và tỷ lệ thành công cao. Mặc dù mỗi kỹ thuật này có những đặc điểm và trường hợp sử dụng riêng nhưng chúng đều là những kỹ thuật khai thác lỗ hổng hỏng bộ nhớ để thực thi mã tùy ý.
Kỹ thuật | Đặc trưng |
---|---|
Xịt đống | Đơn giản, được sử dụng để tăng tỷ lệ khai thác lỗi bộ nhớ thành công. |
Xoay vòng ngăn xếp | Phức tạp, chuyển hướng con trỏ ngăn xếp đến vị trí khác, thường được sử dụng trong các cuộc tấn công tràn bộ đệm. |
ROP | Phức tạp, tận dụng các đoạn mã hiện có (“tiện ích”) trong bộ nhớ, bỏ qua một số biện pháp giảm thiểu khai thác nhất định. |
Quan điểm và công nghệ tương lai
Hiệu quả của việc phun đống đã giảm dần theo thời gian khi triển khai các kỹ thuật ngăn chặn thực thi và ngẫu nhiên hóa bộ nhớ. Tuy nhiên, những kẻ tấn công tiếp tục phát triển các phương pháp của chúng, tạo ra các kỹ thuật phun đống phức tạp và chính xác hơn để vượt qua các biện pháp bảo vệ này. Ví dụ: phun đúng lúc (JIT) là một kỹ thuật được phát triển để vượt qua DEP bằng cách thao tác mã do JIT biên dịch trong bộ nhớ.
Máy chủ proxy và Heap Spray
Các máy chủ proxy có thể được tận dụng trong bối cảnh một cuộc tấn công rải đống để che giấu nguồn gốc của cuộc tấn công, khiến các nhà điều tra khó truy tìm nguồn gốc của cuộc tấn công hơn. Mặt khác, máy chủ proxy an toàn cũng có thể hoạt động như một lớp phòng thủ, chặn lưu lượng truy cập độc hại đã biết hoặc cách ly hệ thống máy khách khỏi tiếp xúc trực tiếp với nội dung có hại.