Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Như bạn đã biết, mã được thực thi trong vùng này bị hạn chế nghiêm trọng về chức năng của nó. Nó không thể thực hiện cuộc gọi hệ thống. Nó không thể thực hiện các thao tác I/O. Nó không biết địa chỉ cơ sở của đoạn mã của ứng dụng máy chủ. Nó không thể jmp hoặc gọi mã ứng dụng máy chủ. Nó không biết về cấu trúc không gian địa chỉ chi phối ứng dụng máy chủ (ví dụ: trang nào được ánh xạ hoặc loại dữ liệu nào nằm trên các trang đó). Nó không thể yêu cầu hệ điều hành ánh xạ một phần bộ nhớ của ứng dụng máy chủ tới nó (ví dụ: thông qua /proc/pid/maps). Những nỗ lực ngây thơ để đọc một cách mù quáng một vùng bộ nhớ tùy ý của ứng dụng máy chủ, chưa kể đến nỗ lực ghi, sớm hay muộn (rất có thể là trước đây) sẽ dẫn đến việc buộc phải chấm dứt chương trình kèm theo. Điều này xảy ra bất cứ khi nào ứng dụng máy chủ không thể truy cập được vùng không gian địa chỉ ảo mà vùng này yêu cầu.

Với thực tế khắc nghiệt như vậy, liệu kẻ viết virus có thể sử dụng vùng SGX để đạt được mục tiêu độc hại của mình không?

– Hack thăm dò địa chỉ xem có đọc được không
– Hack để thăm dò địa chỉ để ghi
– Hack chuyển hướng luồng điều khiển
– Ba vụ hack nêu trên mang lại cho kẻ thủ ác điều gì?
– Cách kẻ xấu sử dụng những thủ thuật này để tạo ra ranzowari

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Dựa trên tất cả những điều trên, người ta thường chấp nhận rằng một khu vực chỉ có khả năng phục vụ ứng dụng máy chủ và khu vực đó không thể thực hiện sáng kiến ​​riêng của mình, kể cả những ứng dụng độc hại. Điều này có nghĩa là các khu vực này không có giá trị thực tế đối với những kẻ viết virus. Giả định vội vàng này là một trong những lý do khiến việc bảo vệ SGX không đối xứng: mã ứng dụng máy chủ không thể truy cập bộ nhớ kèm theo, trong khi mã kèm theo có thể đọc và ghi vào bất kỳ địa chỉ bộ nhớ ứng dụng máy chủ nào.

Do đó, nếu mã vùng độc hại có thể thực hiện các cuộc gọi hệ thống tùy ý thay mặt cho ứng dụng máy chủ, thực thi mã tùy ý thay mặt ứng dụng đó, quét bộ nhớ của ứng dụng máy chủ và tìm các chuỗi ROP có thể bị lạm dụng trong đó, thì nó có thể chiếm quyền kiểm soát hoàn toàn ứng dụng máy chủ, theo cách chế độ tàng hình. Nó không chỉ có thể đánh cắp và mã hóa các tập tin của người dùng mà còn có thể hành động thay mặt người dùng. Ví dụ: thay mặt anh ta gửi email lừa đảo hoặc thực hiện các cuộc tấn công DoS. Không sợ hãi ngay cả những cơ chế bảo vệ hiện đại nhất, chẳng hạn như ngăn xếp chim hoàng yến và khử trùng địa chỉ.

Chúng tôi sẽ chỉ cho bạn một số thủ thuật mà kẻ tấn công sử dụng để khắc phục các hạn chế được mô tả ở trên nhằm lợi dụng SGX cho mục đích độc hại của riêng chúng: tấn công ROP. Hoặc để thực thi mã tùy ý được ngụy trang dưới dạng một quy trình ứng dụng máy chủ (tương tự như việc làm rỗng quy trình, thường được phần mềm độc hại sử dụng) hoặc để ngụy trang một phần mềm độc hại được tạo sẵn (để cứu phần mềm độc hại của nó khỏi sự truy đuổi của phần mềm chống vi-rút và các cơ chế bảo vệ khác).

Hack để thăm dò địa chỉ để xem chúng có thể đọc được không

Vì vùng lân cận không biết ứng dụng máy chủ có thể truy cập được phạm vi không gian địa chỉ ảo nào và do vùng này buộc phải chấm dứt khi cố đọc một địa chỉ không thể truy cập được, nên kẻ tấn công phải đối mặt với nhiệm vụ tìm cách gây ra lỗi- quét không gian địa chỉ một cách khoan dung. Tìm cách ánh xạ các địa chỉ ảo có sẵn. Kẻ xấu giải quyết vấn đề này bằng cách lạm dụng công nghệ TSX của Intel. Sử dụng một trong những tác dụng phụ của TSX: nếu chức năng truy cập bộ nhớ được đặt trong giao dịch TSX, thì các ngoại lệ phát sinh từ việc truy cập các địa chỉ không hợp lệ sẽ bị TSX loại bỏ mà không tiếp cận được hệ điều hành. Nếu cố gắng truy cập vào một địa chỉ bộ nhớ không hợp lệ, chỉ giao dịch hiện tại bị hủy chứ không phải toàn bộ chương trình kèm theo. Cái đó. TSX cho phép một vùng đất truy cập an toàn vào bất kỳ địa chỉ nào từ trong một giao dịch - mà không có nguy cơ bị sập.

Nếu địa chỉ được chỉ định có sẵn ứng dụng máy chủ, giao dịch TSX thường thành công nhất. Trong một số ít trường hợp, nó có thể bị lỗi do các ảnh hưởng bên ngoài như gián đoạn (chẳng hạn như ngắt bộ lập lịch), xóa bộ đệm hoặc sửa đổi đồng thời vị trí bộ nhớ bằng nhiều quy trình. Trong những trường hợp hiếm gặp này, TSX trả về mã lỗi cho biết lỗi chỉ là tạm thời. Trong những trường hợp này, bạn chỉ cần khởi động lại giao dịch.

Nếu địa chỉ được chỉ định không có sẵn ứng dụng máy chủ, TSX sẽ ngăn chặn ngoại lệ xảy ra (HĐH không được thông báo) và hủy bỏ giao dịch. Một mã lỗi được trả về mã kèm theo để nó có thể phản ứng với thực tế là giao dịch đã bị hủy. Các mã lỗi này cho biết địa chỉ được đề cập không có sẵn đối với ứng dụng máy chủ.

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Việc thao túng TSX từ bên trong khu vực này có một tính năng hay dành cho kẻ xấu: vì hầu hết các bộ đếm hiệu suất phần cứng không được cập nhật tại thời điểm mã khu vực được thực thi nên không thể theo dõi các giao dịch TSX được thực hiện bên trong khu vực. Do đó, thao tác độc hại đối với TSX vẫn hoàn toàn vô hình đối với hệ điều hành.

Ngoài ra, vì vụ hack trên không dựa vào bất kỳ cuộc gọi hệ thống nào nên không thể phát hiện hay ngăn chặn nó bằng cách chặn các cuộc gọi hệ thống; thường mang lại kết quả tích cực trong cuộc chiến chống săn trứng.

Kẻ xấu sử dụng thủ thuật hack được mô tả ở trên để tìm kiếm mã ứng dụng máy chủ để tìm các tiện ích phù hợp để hình thành chuỗi ROP. Đồng thời, anh ta không cần phải thăm dò mọi địa chỉ. Chỉ cần thăm dò một địa chỉ từ mỗi trang của không gian địa chỉ ảo là đủ. Việc kiểm tra tất cả 16 gigabyte bộ nhớ mất khoảng 45 phút (trên Intel i7-6700K). Kết quả là kẻ xấu nhận được danh sách các trang thực thi phù hợp để xây dựng chuỗi ROP.

Hack để thăm dò địa chỉ để ghi

Để thực hiện phiên bản kèm theo của cuộc tấn công ROP, kẻ tấn công cần có khả năng tìm kiếm các vùng bộ nhớ không sử dụng có thể ghi của ứng dụng máy chủ. Kẻ tấn công sử dụng các vị trí bộ nhớ này để chèn khung ngăn xếp giả và chèn tải trọng (shellcode). Điểm mấu chốt là vùng độc hại không thể yêu cầu ứng dụng máy chủ phân bổ bộ nhớ cho chính nó mà thay vào đó có thể sử dụng sai mục đích bộ nhớ đã được ứng dụng máy chủ phân bổ. Tất nhiên, nếu anh ta tìm được những khu vực như vậy mà không làm sập khu vực này.

Kẻ thủ ác thực hiện cuộc tìm kiếm này bằng cách khai thác một tác dụng phụ khác của TSX. Đầu tiên, như trong trường hợp trước, nó thăm dò sự tồn tại của địa chỉ đó và sau đó kiểm tra xem trang tương ứng với địa chỉ này có thể ghi được hay không. Để làm điều này, kẻ xấu sử dụng cách hack sau: hắn đặt một chức năng ghi vào giao dịch TSX và sau khi nó hoàn thành nhưng trước khi nó hoàn thành, hắn buộc phải hủy bỏ giao dịch (hủy bỏ rõ ràng).

Bằng cách xem mã trả về từ giao dịch TSX, kẻ tấn công sẽ hiểu liệu nó có thể ghi được hay không. Nếu đó là một vụ "phá thai rõ ràng", kẻ thủ ác hiểu rằng việc ghi âm sẽ thành công nếu hắn làm theo. Nếu trang ở chế độ chỉ đọc thì giao dịch sẽ kết thúc bằng một lỗi khác ngoài "hủy bỏ rõ ràng".

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Việc thao túng TSX này có một tính năng khác hữu ích đối với kẻ xấu (ngoài việc không thể theo dõi thông qua bộ đếm hiệu suất phần cứng): vì tất cả các lệnh ghi bộ nhớ chỉ được thực hiện nếu giao dịch thành công, buộc giao dịch phải hoàn tất để đảm bảo rằng bộ nhớ được thăm dò tế bào không thay đổi.

Hack để chuyển hướng luồng điều khiển

Khi thực hiện cuộc tấn công ROP từ một vùng đất - không giống như các cuộc tấn công ROP truyền thống - kẻ tấn công có thể giành quyền kiểm soát thanh ghi RIP mà không cần khai thác bất kỳ lỗi nào trong chương trình bị tấn công (tràn bộ đệm hoặc những thứ tương tự). Kẻ tấn công có thể ghi đè trực tiếp giá trị của thanh ghi RIP được lưu trữ trên ngăn xếp. Đặc biệt, nó có thể thay thế giá trị của thanh ghi này bằng chuỗi ROP của chính nó.

Tuy nhiên, nếu chuỗi ROP dài thì việc ghi đè một đoạn lớn trong ngăn xếp của ứng dụng máy chủ có thể dẫn đến hỏng dữ liệu và hành vi chương trình không mong muốn. Kẻ thủ ác, người tìm cách thực hiện cuộc tấn công một cách bí mật, không hài lòng với tình trạng này. Do đó, nó tạo ra một khung ngăn xếp tạm thời giả cho chính nó và lưu trữ chuỗi ROP của nó trong đó. Khung ngăn xếp giả được đặt ở một vị trí bộ nhớ có thể ghi ngẫu nhiên, giữ nguyên ngăn xếp thật.

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Ba cách hack được liệt kê ở trên mang lại cho kẻ phản diện điều gì?

(1) Đầu tiên, vùng đất độc hại thông qua hack để thăm dò địa chỉ để xem chúng có thể đọc được không, – tìm kiếm ứng dụng máy chủ để tìm các tiện ích ROP có thể bị lạm dụng.

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

(2) Sau đó bởi hack để thăm dò địa chỉ để ghi, – một vùng độc hại xác định các khu vực trong bộ nhớ của ứng dụng máy chủ phù hợp để đưa tải trọng vào.

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

(3) Tiếp theo, khu vực này tạo chuỗi ROP từ các thiết bị được phát hiện ở bước (1) và đưa chuỗi này vào ngăn xếp ứng dụng máy chủ.

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

(4) Cuối cùng, khi ứng dụng máy chủ gặp chuỗi ROP được tạo ở bước trước, tải trọng độc hại sẽ bắt đầu thực thi - với các đặc quyền của ứng dụng máy chủ và khả năng thực hiện lệnh gọi hệ thống.

Làm thế nào một kẻ xấu sử dụng những thủ thuật này để tạo ra ranzowari

Sau khi ứng dụng máy chủ chuyển quyền điều khiển đến vùng chứa thông qua một trong các ECALL (mà không nghi ngờ rằng vùng này là độc hại), vùng chứa độc hại sẽ tìm kiếm không gian trống trong bộ nhớ của ứng dụng máy chủ để tiêm mã (lấy các khoảng trống đó làm chuỗi ô). chứa đầy số không). Sau đó thông qua hack để thăm dò địa chỉ để xem chúng có thể đọc được không, – khu vực này tìm kiếm các trang thực thi trong ứng dụng máy chủ và tạo chuỗi ROP tạo một tệp mới có tên “RANSOM” trong thư mục hiện tại (trong một cuộc tấn công thực sự, khu vực này sẽ mã hóa các tệp người dùng hiện có) và hiển thị thông báo đòi tiền chuộc. Đồng thời, ứng dụng máy chủ ngây thơ tin rằng vùng đất chỉ đơn giản là cộng hai số. Điều này trông như thế nào trong mã?

Để dễ hình dung, xin giới thiệu một số từ gợi nhớ thông qua các định nghĩa:

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Chúng tôi lưu các giá trị ban đầu của các thanh ghi RSP và RBP để khôi phục hoạt động bình thường của ứng dụng máy chủ sau khi thực hiện tải trọng:

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Chúng tôi đang tìm kiếm một khung ngăn xếp phù hợp (xem mã từ phần “hack để chuyển hướng luồng điều khiển”).

Tìm tiện ích ROP phù hợp:

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Tìm nơi để tiêm tải trọng:

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Chúng tôi xây dựng chuỗi ROP:

Phần mềm độc hại SGX: cách kẻ xấu khai thác công nghệ mới của Intel cho các mục đích khác với mục đích dự kiến

Đây là cách công nghệ SGX của Intel, được thiết kế để chống lại các chương trình độc hại, bị kẻ xấu khai thác để đạt được các mục tiêu ngược lại.

Nguồn: www.habr.com

Thêm một lời nhận xét