Làm thế nào để phát hiện một quá trình ẩn trong linux?


10

Chúng tôi có một hộp chúng tôi nghi ngờ đã được bắt nguồn từ công việc. Câu hỏi là làm thế nào để chúng ta tìm thấy nó? Tôi không phải là quản trị viên hệ thống, nhưng tôi đã được đưa vào nhóm để giải quyết tình huống và tôi tò mò không biết nơi nào tốt để tìm kiếm như vấn đề có thể xảy ra?

Lý do chúng tôi nghi ngờ điều này là vì chúng tôi đã nhận thấy mức sử dụng mạng cao hơn bình thường trên máy từ các cổng cao (có vẻ là ngẫu nhiên).

Chúng ta có thể làm gì để xác định vị trí của đứa trẻ? Chúng ta có thể làm gì để bảo vệ khỏi điều này trong tương lai? Có giám sát chúng ta có thể chạy để làm cho chúng ta nhận thức được điều này trong tương lai? (Ngoài việc giám sát mạng mà chúng tôi đang cố gắng theo dõi chặt chẽ hơn.)

Cảm ơn trước và tôi có thể cung cấp thêm chi tiết nếu cần. Đánh giá cao thời gian của bạn.


2
Đảm bảo sửa chữa: Nuke nó từ quỹ đạo và khôi phục từ bản sao lưu.
Chris S

Điều này dường như để nhân đôi câu hỏi gần đây .
Steven Thứ Hai

1
"Tôi không phải là quản trị viên hệ thống, nhưng tôi đã được đưa vào nhóm để giải quyết tình huống" - điều này là vô giá. Để xóa mọi thứ: câu hỏi của bạn là hoàn toàn OK. Tình huống thực tế của bạn là không. Bất cứ ai quyết định liên quan đến bạn là sai.
halp

@Chris S: Đây là một câu hỏi học tập không quá nhiều, đâu là cách nhanh nhất để giải quyết câu hỏi.
Chris

halp: Tôi không chịu trách nhiệm giải quyết điều này nhưng là một phần để học hỏi từ nó. Tôi là một sinh viên tốt nghiệp gần đây chỉ bị ướt chân tại nơi làm việc.
Chris

Câu trả lời:


6

Bạn không thể tin tưởng bất kỳ công cụ hệ thống nào bạn có trên máy. Rootkit sẽ thay thế ps, netstat, ls, và nhiều thứ khác để che giấu sự hiện diện của chúng. Bạn nên lấy máy ngoại tuyến, lấy ổ cứng ra, tạo một bản sao pháp y (nghĩ dd) sau đó làm việc từ đó trên máy seoncdary để quét rootkit.

Nếu bạn khăng khăng làm việc trên máy trực tiếp (thường là vô ích) thì bạn có thể thử tải xuống bản phân phối cứu hộ trên CD (bản sao rất quan trọng là chỉ đọc) và sử dụng các bản sao ps, lsmod, v.v.

Ngay cả điều này có thể thất bại vì rootkit có thể cài đặt các mô-đun hạt nhân để ẩn các mục trong / Proc nơi các công cụ như ps thường hoạt động.

Chúc may mắn!


Nếu anh ta có phân phối dựa trên RPM, anh ta có thể chạy rpm -V -f /bin/psđể kiểm tra xem nó có bị sửa đổi hay không. Tất nhiên, điều này sẽ chỉ hoạt động nếu kẻ tấn công chưa sửa đổi rpmhoặc cơ sở dữ liệu RPM. Mặc dù anh ta có thể sửa đổi một số rpmtệp sau đó chạy rpm -V rpmvà kiểm tra xem nó có nói dối hay không.
Cristian Ciupitu

5

Vấn đề với rootkit được xây dựng tốt là chúng sửa đổi lệnh hệ thống của bạn; như ps và top để không hiển thị các quy trình của rootkit và ls để không hiển thị các tệp của rootkit.

Vì vậy, những gì bạn sẽ cần làm là để có được các lệnh này có thể từ nguồn hoặc ở dạng binairies. (Hãy chắc chắn để được ký kết tốt). Nhưng mẹo của một bộ công cụ gốc (tôi đã thấy nó) là chúng cũng có thể làm hỏng trình biên dịch của bạn. Vì vậy, khi trình biên dịch biết anh ta đang biên dịch ls hoặc ps hoặc bất kỳ lệnh nào, anh ta cũng sẽ truyền tải chúng.

Khi tôi thấy vấn đề này, tôi đã nói rằng hãy cho phép biên dịch lại gcc, nhưng không có gì tôi cần phải biên dịch gcc ... lây nhiễm gcc .... vì vậy khi biết anh ta đang tự biên dịch nó, anh ta có thể lây nhiễm lệnh đó.

Bạn sẽ nói rằng điều này trở nên lớn và khó phát hiện, vâng, nhưng hiếm có bộ công cụ gốc nào có khả năng chống đạn như vậy tôi chỉ đưa ra trường hợp trẻ hơn.

Nghiêm túc, nếu bạn chắc chắn rằng có một bộ root trong máy chủ của bạn, hãy cài đặt lại nó!


Đánh giá cao câu trả lời, và có cài đặt lại nó là giải pháp cho bây giờ. Mặc dù vậy, tôi muốn tìm hiểu về vấn đề này để có thể phát hiện và phục hồi nó mà không cần phải xây dựng lại toàn bộ máy chủ. Người thực hiện của chúng tôi không thích thời gian chết nữa so với người thực hiện tiếp theo.
Chris

@ Chris, phòng bệnh chữa bệnh duy nhất của bạn .. Làm việc ra làm thế nào nó xảy ra vì vậy chúng tôi có thể giúp trả lời .. "làm thế nào" để tránh nó xảy ra lần nữa
Arenstar

Bạn sẽ chọn một người trả lời tốt cho câu hỏi?
Gopoi

5

Cách tốt nhất để biết liệu máy chủ của bạn đã được "root" hay chưa là chạy hệ thống phát hiện xâm nhập dựa trên máy chủ (HIDS). Thật không may, nếu bây giờ bạn không chạy HIDS thì quá muộn để cài đặt HIDS. Thời điểm thích hợp để cài đặt HIDS là khi máy chủ được cài đặt lần đầu tiên và trước khi đưa vào mạng.

Tóm lại, hầu hết các HIDS hoạt động bằng cách tính băm mật mã của tất cả các nhị phân hệ thống và lưu trữ các giá trị băm đó (cùng với nhiều thống kê tệp khác) vào cơ sở dữ liệu, được gọi là cơ sở dữ liệu cơ sở. Sau đó, theo định kỳ, HIDS sẽ giải cứu hệ thống của bạn, so sánh tất cả các tệp trong cơ sở dữ liệu cơ sở của nó với các tệp hệ thống thực tế.

Tất nhiên, có thể rootkit có thể sửa đổi cơ sở dữ liệu cơ sở của bạn, đó là lý do tại sao bạn cần lấy một bản sao của cơ sở dữ liệu đó và lưu trữ riêng biệt của máy chủ trước khi bạn đặt máy chủ trực tuyến. Sau đó, nếu bạn nghi ngờ mình bị "root" (và bạn nghi ngờ cơ sở dữ liệu cơ sở của mình cũng bị giả mạo), bạn có thể khởi động hệ thống của mình từ phương tiện cài đặt, khôi phục cơ sở dữ liệu đã biết từ bản sao lưu của bạn, rồi chạy quét được biết đến Tuy nhiên, nhiều khả năng là một rootkit sẽ không lường trước được việc phải đánh bại HIDS cụ thể của bạn và vì vậy bạn sẽ nhận được thông báo từ HIDS rằng các tệp hệ thống đã thay đổi, cho thấy sự xâm nhập của hệ thống có thể xảy ra.

Vì bạn không chạy HIDS, bạn không có cách nào nhanh chóng để xác định chắc chắn liệu bạn đã được root hay tập tin hệ thống nào đã được sửa đổi. Bạn có thể dành nhiều thời gian để so sánh các tệp hệ thống của mình với các tệp nổi tiếng được lấy từ phương tiện cài đặt nổi tiếng, nhưng thời gian đó rất có thể dành cho việc cài đặt lại hệ thống của bạn từ phương tiện đó. Nếu bạn muốn điều tra xem bạn đã root như thế nào sau khi thực tế, khóa học tốt nhất là chụp ảnh hệ thống của bạn trước khi bạn xóa sạch nó và cài đặt lại.


Samhain là một HIDS.
pefu

4

Vui lòng tham khảo một bài viết trước đó được thực hiện

Đau đớn khi loại bỏ một rootkit perl

Nó thực sự quan trọng bạn đọc này ..

Như để trả lời câu hỏi của bạn ..

Tôi thường chạy IDS / IPS (hệ thống phát hiện / bảo vệ xâm nhập) như khịt mũi .. đó là một công việc tuyệt vời chống lại hành vi chơi xấu, và tôi đã thấy nó thực hiện một công việc TUYỆT VỜI trong hành động ..

Tôi cũng sử dụng Máy chủ Syslog để giữ thông báo nhật ký khỏi máy chủ sản xuất, do đó bạn có thể quay lại các sự cố và thay đổi / là rootkit'd

Tôi cũng thường sử dụng các công cụ quản lý như cacti, biểu đồ cpu, bộ nhớ, đĩa, sử dụng mạng và báo cáo nếu có bất cứ điều gì khác thường ..

Trở thành rootkit là một vấn đề nghiêm trọng, chắc chắn hãy cố gắng tìm ra nguyên nhân ..

Hy vọng điều này sẽ giúp ..: D


3

Các cổng cao ngẫu nhiên là các cổng phù du, điều này cho thấy rằng bạn có thể có một hoặc nhiều chương trình kết nối ra khỏi hệ thống này.

Nếu nó không được root, thì netstat -np | grep -v ^unixcó thể cho bạn một gợi ý về việc chương trình nào đang tạo ra lưu lượng truy cập.

Bạn cũng có thể quét lưu lượng truy cập từ một hệ thống gần đó bằng cách sử dụng tcpdump để kết xuất các gói có nguồn gốc từ hệ thống mà bạn tin là đã được root. Nếu chương trình sự cố không chạy bằng root, bạn có thể thực hiện việc này từ hệ thống bị nhiễm.

Có một số điều bạn có thể làm để tránh bị root:

  • Giữ cho hệ thống của bạn được vá, đặc biệt là kernel. Theo dõi các lý do cho việc phát hành kernel để xác định các vectơ tấn công.
  • Chỉ cài đặt và sử dụng các chương trình cần thiết. Làm như cài đặt tối thiểu càng tốt.
  • Chạy càng ít càng tốt như root. Nhiều chương trình sẽ thay đổi thành người dùng không có đặc quyền khi họ đã hoàn thành thiết lập yêu cầu quyền root.

EDIT: Nếu bạn đã root, thì việc sử dụng các chương trình ps và ls được liên kết tĩnh có thể chỉ ra sự khác biệt giữa các chương trình đang chạy mà hai công cụ tìm thấy. Sự khác biệt trong danh sách cũng có thể phát sinh khi các chương trình sống ngắn chết đi.


1

Khắc phục thực sự cho một hệ thống có thể được root là cài đặt lại nó từ các nguồn an toàn. Giống như các đĩa CD cài đặt. Sau đó khôi phục dữ liệu của bạn chỉ từ bản sao lưu. Bất kỳ nhị phân hoặc tập lệnh nào trong bản sao lưu của bạn có thể đã bị xâm phạm và được lưu vào bản sao lưu của bạn.

Để tìm bộ công cụ gốc trên hệ thống đang chạy, một cách để làm là biên dịch một mô-đun hạt nhân được thiết kế để phát hiện rootkit. Biên dịch nó trên một máy khác đang chạy cùng một phiên bản HĐH. Sau đó sao chép nó và insmod nó.

Một trình phát hiện rootkit sẽ có các công cụ được tích hợp trong mô-đun hạt nhân để kết xuất bảng quy trình đang chạy, xác minh bảng tòa nhà (để tìm các lệnh chặn của tòa nhà) và các tính năng khác. Nó có thể có các tập lệnh sẽ lấy đầu ra từ mô-đun và so sánh với đầu ra từ ps, netstat, ls, v.v. Hoặc nó có thể quét bộ nhớ trong không gian kernel để biết các chữ ký và báo cáo rootkit đã biết.


1

Điều này giống như những con chuột: nếu bạn nhìn thấy một con, có một trăm con sống ở đó. Nếu bạn thấy dấu hiệu của sự thỏa hiệp, bạn phải cho rằng toàn bộ hệ thống bị xâm phạm. Đó là lý do tại sao mọi người đề nghị bạn cài đặt lại hệ thống thay vì mất nhiều thời gian tìm kiếm. Tôi đã gặp một số tình huống trong đó một cỗ máy bị xâm nhập và những người quản trị hệ thống nghĩ rằng họ đã dọn dẹp mớ hỗn độn, chỉ để hối hận về sau.

Nó rất phổ biến cho rootkit để thay thế các nhị phân hệ thống như ps, top, netstat. Và nó cũng phổ biến đối với trojan ssh. Vì vậy, tìm kiếm sự kỳ lạ của tổng kiểm tra trong các tệp đó là một cách tiếp cận chính. Nếu bạn đang sử dụng hệ thống dựa trên vòng / phút, thì RP -V thường là một công cụ tốt hoặc xác minh dpkg trên Debian / Ubuntu. Hoặc bạn có thể kiểm tra trực tiếp tổng kiểm tra (nhưng coi chừng prelink, thay đổi nhị phân khi đang bay vì lý do tốc độ). Điều này không đáng tin cậy, nhưng nhiều cuộc tấn công kịch bản không bao gồm các dấu vết này. (Nói cách khác, nếu bạn tìm thấy thứ gì đó, tốt. Nếu bạn không tìm thấy thứ gì đó, điều đó không chứng tỏ bạn sạch sẽ.)

Những thứ khác cần tìm: các cổng được hiển thị mở từ bên ngoài nmapkhông nhìn mở netstattrên máy và các nắp /procmà không hiển thị ps. Và nếu bạn tình cờ bật syslog từ xa, hãy tìm các thông tin đăng nhập ssh không có bản ghi trong Lastlog.


0

Lấy cho mình một bản sao của RKhunter và chkrootkit. Họ thường khá giỏi trong việc giúp tìm những thứ không nên ở đó.

Luôn luôn tốt khi chạy mod_security trên lớp Apache của bạn cùng với tường lửa. Thông thường, họ sẽ tìm thấy một ứng dụng web hoặc tập lệnh lỗi thời và tăng cường truy cập từ đó với các tập lệnh shell Perl và những điều thú vị khác.

ps auxfww thường là tuyệt vời để tìm các quy trình không thuộc về.

Ngoài ra: netstat -anp để xem những gì đang nghe trên các cổng nhất định.

Một lần nữa những điều này là tốt nếu bạn chưa được root, chỉ cần thỏa hiệp.

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.