Bạn thực sự có thể có được một trojan trong một tệp hình ảnh và nếu vậy nó sẽ được thực thi như thế nào?


11

Tôi vừa mới số hóa một vài LP và cần một số ảnh bìa. Máy quét của tôi không đủ lớn để quét album nên tôi đã tìm kiếm và tải xuống các hình ảnh từ mạng.

Khi tôi làm như vậy, Avast đã báo cáo rằng một trong số chúng chứa trojan "Win32: Hupigon-ONX" và ngay lập tức cách ly nó. Không muốn có bất kỳ cơ hội nào, tôi đã tải xuống một bản sao khác được báo cáo là sạch.

Bây giờ đây chỉ là một dương tính giả từ Avast hoặc thực sự có thể có một trojan trong jpg?

Nếu có nó sẽ được thực thi như thế nào?

Tôi phải thừa nhận rằng khía cạnh này của trojan và virus luôn gây trở ngại cho tôi. Là một nhà phát triển phần mềm, tôi luôn kiểm tra độ dài của mảng, v.v. vì vậy tôi không hiểu tại sao những điều như tràn bộ đệm lại xảy ra. Tôi hiểu rằng mọi người đã cắt góc và mắc lỗi và nếu phần mềm đủ phức tạp thì những lỗi này có thể xảy ra.

Câu trả lời:


11

Khai thác trong các tệp hình ảnh tận dụng các lỗi tràn bộ đệm trong mã xử lý hình ảnh của HĐH. Có một số lỗi đáng kể như vậy được tìm thấy trong lớp GDI của Windows vài năm trước - các bản vá đã được phát hành từ lâu nhưng hình ảnh khai thác vẫn tồn tại ngoài đó chỉ vì chúng ở lại hoặc với hy vọng rằng chúng chạm vào một máy chưa được vá .

Nguyên nhân thông thường của lỗ hổng bảo mật như vậy là truyền dữ liệu hình ảnh giữa các chức năng trên ngăn xếp cuộc gọi và không kiểm tra chính xác độ dài tối đa của dữ liệu. Điều này có thể được khai thác bằng dữ liệu được xây dựng khéo léo có kích thước quá lớn và sắp xếp theo cách nó kết thúc mã ghi đè tiếp theo trong khung ngăn xếp (ghi đè bằng mã khác) hoặc ghi đè con trỏ vào mã sẽ được sử dụng để gọi các hàm khác hoặc khi hàm được gọi trở lại là người gọi (ghi đè một con trỏ như vậy để trỏ đến mã khai thác) hoặc ghi đè dữ liệu theo cách khiến lỗ hổng khác bị lộ. Phương pháp chính xác khác nhau tùy thuộc vào lỗ hổng bảo mật trong câu hỏi.

Các CPU hiện đại có một sự bảo vệ ngăn chặn hầu hết các khai thác này nếu mã hỗ trợ nó. Điều này hoạt động bởi chương trình / thư viện đánh dấu rõ ràng trang nào là dữ liệu và mã nào - CPU sau đó sẽ đưa ra một ngoại lệ nếu có bất kỳ thứ gì trong dữ liệu (như dữ liệu hình ảnh) cố gắng được thực thi dưới dạng mã. IIRC Vista trở lên và các phiên bản gần đây của .Net đã có tất cả các thư viện của họ được ghép lại để hỗ trợ bảo vệ này và nó cũng được các HĐH khác hỗ trợ, nhưng điều này không dừng tất cả các khai thác như vậy và chỉ hoạt động nếu được bật rõ ràng (nếu không rất nhiều mã cũ sẽ phá vỡ).


9

Tôi phải thừa nhận rằng khía cạnh này của trojan và virus luôn gây trở ngại cho tôi. Là một nhà phát triển phần mềm, tôi luôn kiểm tra độ dài của mảng, v.v. vì vậy tôi không hiểu tại sao những điều như tràn bộ đệm lại xảy ra.

Vâng, chào mừng đến với thế giới thực ;-). Bộ đệm tràn & c. có thể xảy ra ở nhiều ngôn ngữ (đặc biệt là ở những ngôn ngữ có quản lý bộ nhớ thủ công như C) và khi các nhà phát triển mắc lỗi, chúng sẽ xảy ra.

Mặc dù thông thường, lỗi tràn bộ đệm sẽ làm sập chương trình (vi phạm phân đoạn hoặc tương tự), nó có thể cho phép kẻ tấn công thực thi mã -> trojan được kích hoạt.

Ví dụ:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories353216/

Và để giải thích làm thế nào điều này cho phép thực thi mã:

/programming/460519/how-are-buffer-overflows-use-to-Exloit-computing


Tôi biết chúng xảy ra - đó chỉ là một trong những kiểm tra cơ bản tôi luôn thực hiện khi xử lý dữ liệu - kiểm tra xem tôi đã có / phân bổ đủ không gian cho dữ liệu chưa.
ChrisF

@ChrisF, thực tế là bạn cần đảm bảo rằng bạn kiểm tra (trái ngược với "máy tính" là chính vấn đề.
Zabba

@Zabba điều tôi muốn nói là tôi "mã chương trình để kiểm tra" khi xử lý dữ liệu.
ChrisF


2

Tôi phải thừa nhận rằng khía cạnh này của trojan và virus luôn gây trở ngại cho tôi. Là một nhà phát triển phần mềm, tôi luôn kiểm tra độ dài của mảng, v.v. vì vậy tôi không hiểu tại sao những điều như tràn bộ đệm lại xảy ra. Tôi hiểu rằng mọi người đã cắt góc và mắc lỗi và nếu phần mềm đủ phức tạp thì những lỗi này có thể xảy ra.

Có thể bạn đang kiểm tra tất cả các con trỏ, mảng, v.v.

Giải pháp đơn giản nhất cho việc này là tải xuống một tệp như "image.jpg.exe" hoặc một cái gì đó tương tự thay vì hình ảnh thực.

Các cách nâng cao hơn để lây nhiễm PC của bạn đã được mô tả ở đây (ví dụ: Tràn bộ đệm, ...)


1
Đúng - nhưng tôi thay đổi các tùy chọn thư mục để hiển thị tiện ích mở rộng. Tôi chắc chắn rằng việc ẩn các tiện ích mở rộng đã biết đã gây ra nhiều vấn đề hơn mà nó giải quyết. Trong thực tế tôi không thể nghĩ về một vấn đề mà nó thực sự giải quyết.
ChrisF

ack đầy đủ - đó là một trong những tùy chọn đầu tiên tôi kích hoạt, khi làm việc với các cửa sổ
Elvith

@ChrisF: Chà, rõ ràng vấn đề mà nó giải quyết là nếu không người dùng có thể vô tình thay đổi phần mở rộng của tệp khi họ đổi tên nó. Điều này gây ra vấn đề quen thuộc "Biểu tượng của tài liệu của tôi trông buồn cười và tôi không thể mở được nữa. Giúp đỡ!" :-) (và vâng, đôi khi tôi hỗ trợ công nghệ cho gia đình tôi).
sleske

@sleske - Windows 7 không chọn tiện ích mở rộng khi bạn đổi tên tệp.
ChrisF

1
@ChrisF: Thật thú vị, không biết điều đó. Mặc dù vậy, nó thường khác - ít nhất Windows Server 2003 chọn toàn bộ tên để đổi tên. Và với bất kỳ giá nào, nếu người dùng có thể chỉnh sửa tiện ích mở rộng, họ sẽ :-).
sleske
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.