Ngăn chặn phần mềm độc hại đánh hơi mật khẩu sudo


10

Tôi thường nghe mọi người trích dẫn sudolà một trong những rào cản chính đối với phần mềm độc hại lây nhiễm vào máy tính Linux.

Đối số commen nhất dường như đi theo dòng: Yêu cầu quyền root để sửa đổi cấu hình hệ thống và mật khẩu được yêu cầu để có quyền root, vì vậy phần mềm độc hại không thể sửa đổi cấu hình hệ thống mà không cần nhắc mật khẩu.

Nhưng dường như theo mặc định trên hầu hết các hệ thống, một khi phần mềm độc hại đã lây nhiễm tài khoản quản trị viên, sự leo thang đặc quyền là không đáng kể - phần mềm độc hại chỉ phải chờ người dùng chạy sudo.

Những phương thức nào tồn tại để phần mềm độc hại có được quyền root khi người dùng chạy sudovà làm cách nào chúng ta có thể bảo vệ chống lại chúng?

Chỉnh sửa: Tôi đặc biệt quan tâm đến việc bảo vệ chống lại tài khoản quản trị viên bị xâm nhập; điều đó có nghĩa là, một tài khoản có đầy đủ quyền root sudo(ví dụ: tài khoản người dùng trên một hệ thống máy tính để bàn thông thường).


Để biết ví dụ về loại điều tôi đang tìm kiếm, hãy xem câu trả lời của tôi . Tôi hy vọng ai đó có thể giải thích một số rủi ro bảo mật được nêu ra ở đó (hoặc bất kỳ rủi ro nào khác mà họ có thể nghĩ ra) và cung cấp các cách để giảm thiểu chúng.
Zaz

Bạn yêu cầu một cái gì đó như UAC hoặc một chuỗi chú ý an toàn trong Windows. Các hệ thống Unixy không có điều đó. Cách để đi (sẽ là) quản trị viên là không sử dụng tài khoản của họ cho những điều ngớ ngẩn. Một vài điều bạn đề cập trong câu trả lời của riêng bạn có thể được bảo vệ chống lại với các hệ thống kiểm soát truy cập bắt buộc và dựa trên vai trò như SELinux hoặc Grsecurance. Ở đó bạn có thể thiết lập các chính sách mà các nhị phân không thể root có thể được thực thi, vì vậy không có trojan nào ở cấp đó. Btw, nếu bạn không tin tưởng X, thì đừng tin vào hệ thống, vì X chạy với các đặc quyền siêu người dùng.
phản ứng

Cảm ơn, tôi đã tìm hiểu về SELinux, nhưng dường như nó được thiết kế nhiều hơn cho các cài đặt lớn, đòi hỏi nhiều thời gian cho việc quản trị và thiết lập; Tôi đã hy vọng cho một cái gì đó đơn giản hơn một chút. Tôi là một nhà phát triển, vì vậy các chính sách nghiêm ngặt về việc chạy các chương trình cũng không thực sự là một lựa chọn.
Zaz

"X chạy với đặc quyền siêu người dùng" - Cái gì? Trên bản cài đặt mặc định của X , startxhoạt động tốt như người dùng bình thường. Trên thực tế, tôi đang chạy X như một người dùng bình thường ngay bây giờ.
Zaz

Có đường cong learnig là dốc. Hãy nhìn vào Grsecurance, nó đơn giản hơn nhưng mạnh mẽ. ~ Đặc quyền của X: trên hộp của tôi, máy chủ X là root SUID và chạy root.
phản ứng

Câu trả lời:


9

Khi một phần mềm độc hại đã giành được quyền truy cập vào tài khoản của người dùng, nó có thể:

1. Tạo bí danh bash (trong shell hiện tại và in ~/.bashrc) thành một lệnh giả mạo [sudo] password for $USER:lời nhắc và đánh cắp mật khẩu của người dùng.

alias sudo='echo -n "[sudo] password for $USER: " && \
            read -r password && \
            echo "$password" >/tmp/sudo-password'

2. Tương tự như vậy, nó có thể đặt một thực thi có tên sudotrong ~/.bin, và sửa đổi các PATHbiến để đạt được hiệu quả tương tự:PATH="$HOME/.bin:$PATH"

3. Bắt phím bấm thông qua máy chủ X, xem từ sudo, sau đó thử văn bản giữa hai lần Enternhấn phím tiếp theo làm mật khẩu.

4. Một điều tương tự có thể được thực hiện trong bất kỳ môi trường nào (bảng điều khiển, Wayland , X) bằng cách sử dụng ví dụ $LD_PRELOAD.

5. Nếu phần mềm độc hại lây nhiễm vào vỏ sử dụng sudosudolưu trữ thông tin đăng nhập, phần mềm độc hại có thể kiểm tra liên tục nếu có thể sudokhông có mật khẩu:

while : ; do
    echo | sudo -S echo "test" &>/dev/null && break
    sleep 10
done
sudo echo "We now have root access"


Phòng ngừa:

1 & 2. Sử dụng \/bin/sudo. Các \bỏ qua bí danh, và /bin/…bỏ qua $PATH. Ngoài ra, thêm một bí danh như : ssudo="\/bin/sudo", và luôn luôn sử dụng ssudothay vì sudo. Dường như virus không đủ thông minh để sắp xếp lại bí danh này.

3. Tránh nhập mật khẩu của bạn khi sử dụng X11. Thay vào đó, hãy sử dụng bảng điều khiển ảo hoặc Weston .

5. Đặt timestamp_timeout=0trong /etc/sudoers.


Cách duy nhất để loại bỏ hoàn toàn khả năng sudomật khẩu bị đánh hơi, dường như là tránh hoàn toàn. Thay vào đó, đăng nhập với quyền root vào bảng điều khiển ảo.

Theo Alexander Peslyak : "cách sử dụng an toàn duy nhất cho su [và sudo] là chuyển từ tài khoản đặc quyền hơn sang tài khoản ít đặc quyền hơn"


Bên cạnh đó, sudo có một số biện pháp đối phó:

  • sudođọc từ ttythay vì stdin, để alias sudo='tee -a /tmp/sudo-password | sudo'phá vỡ sudo(nhưng không chiếm được mật khẩu).

sudo hỏi từ mật khẩu người dùng, vì vậy phần mềm độc hại sẽ chiếm được mật khẩu của người dùng mà họ đã truy cập được.
cướp

3
@rob: Nó thực sự phụ thuộc vào cách bạn đã sudocấu hình, nhưng dù sao đi nữa, phần mềm độc hại hiện có mật khẩu bắt buộc sudo, vì vậy nếu người dùng có quyền truy cập root, thì phần mềm độc hại cũng vậy.
Zaz

3

Không có sự bảo vệ thực sự.

Mật khẩu được bảo vệ truy cập vào sudo harks trở lại thời đại trước các môi trường shell phức tạp với các lệnh được thực thi bởi các miếng chêm. Khi mật khẩu đã được gửi, sẽ có một cửa sổ cơ hội trong đó một shim có thể thực thi các lệnh thông qua sudo mà không cần bất kỳ thông báo nào và với toàn quyền kiểm soát hệ thống.

Nếu tôi có ý định truy cập, tôi sẽ tạo một shim hữu ích cho bash và zsh và fish, v.v. Tôi sẽ theo dõi các lệnh được thực thi. Ngay sau khi một sudo đã trở lại với trạng thái bằng 0, tôi bắt đầu phát hành "sudo chmod + s / bin / sh" hoặc các tính xấu khác.

Thời điểm sudo đã được cung cấp một mật khẩu thỏa đáng và bạn có các shell chạy các lệnh để nhận được lời nhắc, bạn có khả năng gặp rắc rối. Không có sự bảo vệ, ngoài sự lạc quan.

Các câu trả lời khác đã tập trung vào việc bảo vệ mật khẩu. Là một kẻ xâm lược, tôi sẽ không lo lắng về điều đó. Tôi tập trung vào thời lượng sau khi mật khẩu được cung cấp, khi không cần mật khẩu. Đó là thời điểm rủi ro nhất, khi kẻ tấn công cần phải làm ít nhất để thỏa hiệp hoàn toàn với hệ thống.

Bảo vệ khỏi nó? Bạn sẽ phải bảo vệ các tệp RC của bạn. Kiểm tra bất kỳ miếng chêm hoặc các lệnh khác được sử dụng trong lời nhắc dòng lệnh. Tìm kiếm các đồng xử lý được kết nối với vỏ và các công cụ được sử dụng để duy trì môi trường vỏ. Phòng thủ chính sẽ là công cụ xâm nhập máy chủ, nhưng đó là thực tế. Ngăn chặn các cuộc tấn công? Chỉ sử dụng các shell đơn giản mà không có cấu hình tự động phức tạp và lời nhắc hoạt động - đó là môi trường mà sudo được phát triển.

Tôi đã từng chơi game với các nhà phát triển khác (những năm 1980) khi chúng tôi cố gắng viết những thứ sẽ nhận được thiết bị đầu cuối mà nhà phát triển khác đang sử dụng, để chèn các lệnh - về cơ bản đây là vấn đề tương tự. Và chúng tôi đã làm cho việc nhúng các công cụ sẽ dễ dàng hơn trong việc chèn lệnh mà không có dấu vết rõ ràng. :)


1

Không chắc chắn về bất kỳ phương pháp nào để người dùng trái phép có được quyền root, nhưng tôi biết bạn có thể làm gì đó để giảm bớt nguy hiểmsudo một chút , nếu bạn muốn nói điều đó. sudocho phép bạn định cấu hình các quyền chi tiết, để xác định các nhóm người dùng với các đặc quyền cụ thể và các lệnh cụ thể mà người dùng nhất định có thể chạy.

SUDO - KIỂM SOÁT GRANULAR

  • Phần người dùng

    Đây là nơi bạn có thể thiết lập các nhóm cho người dùng mà bạn sẽ chỉ định các lệnh cho. Cho phép thiết lập một nhóm hoạt động;

    User_Alias  OPS = bob, jdoe 
    

    Điều này tạo ra nhóm OPS và đặt người dùng có tên bob và jdoe vào nhóm

  • Cmnd_Alias

    Ở đây chúng tôi chỉ định các bộ lệnh cụ thể. Bạn phải chỉ định đường dẫn đầy đủ và bất kỳ tùy chọn lệnh nào bạn muốn sử dụng. Cho phép thiết lập các lệnh nhóm hoạt động;

    Cmnd_Alias OPSCMD = /admin/bin/srvbkup, /admin/bin/test 
    

    Điều này thêm ba lệnh được chỉ định vào nhóm lệnh OPSCMD.

  • Đặc tả đặc quyền người dùng

    Đây là nơi chúng tôi sẽ sử dụng các nhóm chúng tôi đã thiết lập cho đến nay;

    OPS  ALL=(root)  OPSCMD 
    

    Điều đầu tiên chúng tôi chỉ định là người dùng, ở đây chúng tôi sử dụng nhóm OPS chúng tôi thiết lập. Sau đó, TẤT CẢ có nghĩa là nó áp dụng cho tất cả các máy chủ, điều này chỉ hữu ích nếu bạn hoặc chạy sudo trên nhiều máy chủ mỗi máy chủ sử dụng cùng một tệp cấu hình. Tiếp theo, chúng tôi chỉ định người dùng rằng nhóm Hoạt động sẽ chạy các lệnh được chỉ định như, trong trường hợp này chúng tôi muốn chúng chạy dưới quyền root. Cuối cùng, chúng tôi chỉ định các lệnh mà chúng tôi muốn nhóm OPS có thể chạy, cụ thể là chúng tôi đang sử dụng nhóm OPSCMD mà chúng tôi thiết lập. Nếu bạn không muốn họ nhập mật khẩu mỗi lần họ sử dụng sudo, thì đặc tả lệnh sẽ là NOPASSWD: OPSCMD.

Chỉ cần củng cố sudochính sách của bạn nhiều như bạn không tin tưởng người dùng của mình :)


Xin lỗi nếu tôi không rõ ràng trong câu hỏi, nhưng tôi quan tâm đến việc bảo vệ chống lại các tài khoản quản trị viên bị xâm nhập, nghĩa là, các tài khoản có đầy đủ quyền root sudo. Cụ thể, tôi đang nghĩ về các hệ thống máy tính để bàn bình thường.
Zaz

1

Nếu bạn quan tâm đến một hệ thống mà bạn tin rằng có thể bị xâm phạm, hãy chạy "Rootkit" và sử dụng "Tripwire" để kiểm tra tính toàn vẹn của hệ thống tệp.

Cũng sẽ khuyên bạn nên tăng cường các đặc quyền sudo, như bạn không cần tất cả người dùng có quyền truy cập tất cả các lệnh gốc thay vì cấp quyền truy cập vào các lệnh cụ thể thông qua SUDO.


0

Trước hết hãy xem /etc/sudoerstập tin.

Cú pháp sẽ được user MACHINE=COMMANDSđịnh dạng.

Ví dụ, người dùng root sẽ có root ALL=(ALL) ALL Điều này có nghĩa là người dùng root có thể chạy bất kỳ lệnh (tất cả) ở bất cứ đâu.

Nếu mục của bạn cũng có ALL=(ALL)thì bạn gần như bằng người dùng root. Nếu đây không phải là trường hợp và bạn chỉ có một số đặc quyền hạn chế nhất định, thì kẻ tấn công / phần mềm độc hại chỉ có thể làm nhiều như đặc quyền sudo của bạn có thể làm.

Lời khuyên có thể giúp bạn:

  1. Kiểm tra /etc/sudoerstập tin của bạn .
  2. Chạy một trình quét bảo mật như chkrootkit, rootkit hunter, Config server Khai thác máy quét, khịt mũi, v.v.
  3. Sử dụng visudolệnh để chỉnh sửa và sửa đổi các đặc quyền của tệp sudoers của bạn.
  4. Chạy lại máy quét.

Tham khảo: Trang người dùng Linux của sudoers và sudo man sudoers

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.