Trong thử nghiệm, chỉ chọn một điểm neo cho mỗi trình duyệt, đây là một yêu cầu dễ đáp ứng trong thực tế. Đáng chú ý hơn, Điểm neo giữa các phiên bản 32 bit và 64 bit là khác nhau. Vì địa chỉ đối tượng đích chỉ tồn tại trên ngăn xếp trong một thời gian ngắn, để đo lường hiệu quả của phương pháp tìm kiếm tốt hơn, thực hiện các thử nghiệm theo cách sử dụng CPU khác nhau. Băng thông mạng có tác động hạn chế đến thời lượng của các đối tượng đích trên ngăn xếp vì tất cả các trình duyệt đều sử dụng giao tiếp không đồng bộ và luồng mạng không chờ máy chủ phản hồi.
Việc thử nghiệm trên hai trường hợp tương ứng cho các trình duyệt. Trong trường hợp (a), không kiểm soát việc sử dụng CPU, do đó, chuỗi tìm kiếm nhận được thời gian CPU trung bình 25% trong môi trường lõi tứ. Như được hiển thị trong hình 5.3, trong trường hợp này, nhận được tỷ lệ phát hiện cao cho tất cả các trình duyệt. Trong trường hợp (b), giữ mức sử dụng CPU dưới 10% và thực tế có thể thấp hơn. Trong trường hợp này, cũng có thể nhận được tỷ lệ phát hiện khoảng 80%. Trên thực tế, có thể tăng mức sử dụng CPU của luồng tìm kiếm để có tỷ lệ phát hiện cao hơn hoặc áp dụng thuật toán lập lịch xử lý luồng hiệu quả hơn.
35
Hình 5.3: Kết quả dựa trên tìm kiếm ngăn xếp
Một trường hợp rõ ràng khác được hiển thị trong hình 5.3 là tỷ lệ phát hiện thấp trong Chrome 32 bit, nhưng điều đó là bình thường trong Chrome 64 bit. Sau khi phân tích, phát hiện ra rằng nguyên nhân là do Điểm neo trong Chrome 32 bit.
Các kết quả thử nghiệm ở trên cho thấy phương pháp tìm kiếm dựa trên biến toàn cục có hiệu quả cao nhất nhưng đòi hỏi phải đáp ứng các yêu cầu cụ thể. Hai phương pháp khác có tác dụng tốt tương tự. Phương pháp tìm kiếm dựa trên ngăn xếp là chung chung hơn các phương pháp khác. Nó hỗ trợ tìm kiếm không chỉ cho các cấu trúc đối tượng mà còn cho bộ đệm tùy ý được tham chiếu trên ngăn xếp. Mặt khác, phương pháp tìm kiếm ngăn xếp có thể có chi phí phân tích nhị phân cao hơn hai phương pháp còn lại. Vì vậy, ba phương pháp có thể được sử dụng cùng nhau, theo các tình huống cụ thể trong thực tế.
36
5.5. Nghiên cứu điển hình
Đầu tiên, thực hiện một nghiên cứu tình huống về thủ tục đăng nhập của webmail và cố gắng lấy thông tin đăng nhập thông qua các đối tượng HTTP được đề cập ở trên. Một lý do để chọn trường hợp này là, ở đây, tốc độ đăng nhập tương đối chậm và có thể cho thấy rõ băng thông mạng ảnh hưởng đến dữ liệu bộ nhớ như thế nào. Một lý do khác là mặc dù nó chuyển theo giao thức HTTPS, nhưng triển vọng không mã hóa thêm dữ liệu POST và điều đó có nghĩa là mật khẩu trong kênh HTTPS là một bản rõ. Do đó, chúng ta có thể nhận được bản rõ của mật khẩu thông qua các cấu trúc đối tượng.
Các kết quả được thể hiện trong bảng 5.2. Nó cho thấy với nhiều thử nghiệm rằng tỷ lệ thành công cao, gần như 100%. Mức sử dụng CPU trung bình của chuỗi tìm kiếm là khoảng 12%, điều này không chỉ nhận được bản rõ trong dữ liệu POST mà còn cả URL và cookies liên quan trong quy trình đăng nhập.
Bảng 5.2: Các trường thu được từ các cấu trúc đối tượng HTTP
Tuy nhiên, IE/Edge là một ngoại lệ đối với thân dữ liệu POST, vì dữ liệu không được liên kết trực tiếp với cấu HTTP_REQUEST_HANDLE_OBJECT và được gửi đến máy chủ dưới dạng tham số chức năng.
37
Hình 5.4 cho thấy một ví dụ bố trí ngăn xếp của Edge 64 bit khi chạy. Chúng ta có thể dễ dàng lấy Anchor Point và xác định vị trí bộ đệm gửi và sau đó trích xuất dữ liệu cơ thể POST bao gồm mật khẩu đăng nhập. Một trường hợp tương tự cũng nằm trong thủ tục đăng nhập của Skype đã được Microsoft mua và nâng cấp. Trong phiên bản mới của Skype trên Windows 10, Skypeapp.exe xử lý đăng nhập được sử dụng bằng thư viện WININET. Dữ liệu đăng nhập được gửi bởi WININET! Hàm CsecureSocket::Send gửi mà không cần mã hóa bổ sung. Trích xuất bản rõ bao gồm tên đăng nhập và mật khẩu trong bộ đệm gửi.
Nhận dấu vết chuỗi của công cụ JavaScript Chakra. Chakra là một công cụ JavaScript được phát triển bởi Microsoft. Nó được tích hợp vào trình duyệt Edge và các thành phần cốt lõi của nó đã trở thành nguồn mở. Tương tự với các công cụ Just-in-time (JIT) khác, Chakra cung cấp trình thông dịch cho mã byte JavaScript và cũng biên dịch mã byte thành mã máy đúng lúc để tối ưu hóa. Công cụ Chakra xây dựng khung ngăn xếp trình thông dịch cho mã JavaScript, cung cấp sự thuận tiện cho tìm kiếm dựa trên không gian ngăn xếp. Phát hiện ra rằng có một lệnh gọi hàm ổn định trong công cụ Chakra khi hàm JavaScript được gọi; đối với nền tảng 64 bit, đó là amd64_CallFunction. Bố cục ngăn xếp khi thực hiện amd64_CallFunction được hiển thị trong hình 5.5. Trong một hình thức 64 bit, bốn đối số đầu tiên được truyền qua các thanh ghi trong các lệnh gọi hàm. Amd64_CallFunction có năm đối số, do đó, đối số cuối cùng được lưu trữ trong ngăn xếp, được hiển thị trong hình 5.5 dưới dạng tham số argv. Đối số là một con trỏ trỏ đến danh sách đối số sẽ được chuyển vào hàm JavaScript tiếp theo. Trong quá trình thực hiện Chakra, địa chỉ của đối số nằm trong phạm vi địa phương và tạm thời trong khung ngăn xếp trình thông dịch hiện tại. Do đó, chúng ta có thể tham chiếu các tham số đầu ra và cục bộ thông qua đối số cuối cùng. Trong trường hợp này, cố gắng trích xuất các chuỗi được lưu trữ trong các biến string trong mảng JavaScript và đối tượng động được xác định trong công cụ Chakra, sau đó chọn thông tin đăng nhập trong hồ sơ theo dõi chuỗi.
38
Chọn năm trang web làm mục tiêu trong thử nghiệm và tính tỷ lệ thành công của việc thu thập mật khẩu. Mức sử dụng CPU trung bình của payload bị giảm xuống còn khoảng 12%. Kết quả được thể hiện trong Bảng 5.3, trong đó một số trang web có tỷ lệ thành công cao gần 100%. Tuy nhiên, cũng có tỷ lệ thành công thấp, đặc biệt là đối với Yahoo. Mặc dù mã JavaScript thực thi nhanh trong thủ tục trình thông dịch, nhưng trong hầu hết các trường hợp, không có lệnh gọi hệ thống nào liên quan, vì vậy rất khó để có được tất cả thông tin. Nếu một trang web cung cấp xác thực và mã hóa bổ sung trong quy trình đăng nhập, nó sẽ mang mã JavaScript và truyền dữ liệu nặng vào mã. Nhận được tỷ lệ thành công cao trong trường hợp này và kết quả ngược lại cho các trường hợp khác. Không thể lấy mật khẩu trong quy trình đăng nhập của Yahoo trong điều kiện thử nghiệm, vì mật khẩu của nó chỉ đơn giản được đăng lên máy chủ dưới dạng bản rõ.
Bảng 5.3: Các trường thu được từ các cấu trúc đối tượng HTTP
Vì theo dõi thông tin chuỗi của mã JavaScript một cách linh hoạt, nhật ký chứa thông tin ngữ nghĩa của bối cảnh đăng nhập. Từ nhật ký chúng ta có thể chọn mật khẩu dễ dàng; một ví dụ cho iCloud được hiển thị trong Hình 5.6
39
40
Chương VI: Kết luận
Trong bài báo này, đề xuất một mô hình mối đe dọa mới của dữ liệu bộ nhớ xử lý trên nền tảng Windows. Ý tưởng cốt lõi của mô hình là tận dụng tối đa sự không hoàn hảo của cơ chế kiểm soát truy cập hiện tại để thu được dữ liệu bộ nhớ trực tiếp thông qua các cấu trúc dữ liệu quan trọng. Tác động của băng thông mạng cũng được xem xét trong mô hình. Một số phương pháp trích xuất dữ liệu cho mô hình, đặc biệt là phương pháp tìm kiếm dựa trên không gian ngăn xếp. Thực hiện và xác minh mô hình của mình thông qua một số trình duyệt web phổ biến.
Trong mô hình này, chức năng thu thập dữ liệu được triển khai trên HĐH, do đó, nó có thể sử dụng các cuộc gọi hệ thống hạn chế để tránh thông tin suy diễn ở một mức độ nào đó. Tuy nhiên, nó phấn đấu cho việc sử dụng CPU. Bài viết này cho thấy mối đe dọa của cấu trúc giao tiếp HTTP của các trình duyệt và tác động của nó đối với các loại thông tin khác như cấu trúc khóa. Các phương pháp trích xuất dữ liệu cũng có thể được áp dụng cho môi trường ảo hóa và có thể cung cấp mối đe dọa cho các máy chủ riêng ảo.
Có một số điều kiện hạn chế về việc áp dụng mô hình như thực thi mã trên hệ thống đích phụ thuộc vào lỗ hổng thực thi mã từ xa hoặc phần mềm độc hại được cài đặt sẵn. Ngoài ra, bên cạnh đó còn phải đối mặt với những thách thức về sự kiên trì tấn công và xử lý mã hóa và cách ly dữ liệu, mặc dù một số cơ chế bảo vệ không phổ biến. Hơn nữa, các phương pháp tự động hóa tốt hơn về phân tích cấu trúc dữ liệu cho các chương trình mục tiêu là cần thiết. Tuy nhiên, thấy mối đe dọa của mô hình thông qua các thí nghiệm thực tế. Các kết quả nghiên cứu hiện tại về bảo vệ bộ nhớ có thể giảm thiểu mối đe dọa ở một mức độ nào đó, nhưng cần phải tích hợp thêm hệ thống phòng thủ vào hệ thống. Ví dụ, các cơ chế kiểm soát cấp phép chi tiết hơn và thực hiện chuyển đổi dữ liệu phức tạp để giảm thời gian của văn bản gốc trong bộ nhớ.
Trong thực tế, các thiết bị đầu cuối phải đối mặt với các mối đe dọa không gian mạng như ransomware mọi lúc. Hy vọng sẽ tăng cường bảo mật của nó với khả năng phòng thủ thực tế hơn.
41
TÀI LIỆU THAM KHẢO
Tiếng Anh
[1] A survey of main memory acquisition and analysis techniques for the windowns operating system
,https://www.sciencedirect.com/science/article/pii/S1742287611000508?via%3 Dihub
[2] Pool tag quick scanning for windowns memory analysis
,https://www.sciencedirect.com/science/article/pii/S1742287616000062?via%3 Dihub
[3] PMCAP: A Threat Model of Process Memory Data on the Windows Operating System