Phát hiện các tác vụ cron do người dùng khác chạy


7

Tôi hiện đang làm việc thông qua các thử thách Tinh vân trên mining-exercises.commột trong những thử thách dựa trên kịch bản được điều hành bởi cron.

Điều này được điều hành bởi một người dùng khác (flag03) và người dùng mà tôi đăng nhập là (level03) không có đặc quyền để chạy crontab -u flag03để xem công việc.

Gợi ý rõ ràng cho thấy kịch bản được chạy bởi cron. Ngoài ra, nó là tập lệnh duy nhất trong /home/flag03thư mục, vì vậy chúng tôi có thể sẽ điều tra thêm.

Tuy nhiên, nếu đây là thế giới thực, tôi sẽ không biết rằng kịch bản này đang được điều hành bởi cron.

Vì vậy, câu hỏi là, làm thế nào tôi phát hiện ra rằng nhiệm vụ đang được chạy từ quan điểm của một người dùng không có đặc quyền?

Tôi đã thử như sau:

while true; do ps au | grep <scriptname> | grep -v grep; done;

Điều này cho phép tôi thấy các quá trình chạy trong một khoảng thời gian đáng kể, nhưng không phải là các quá trình thoát ra gần như ngay lập tức. Nó cũng cho rằng tôi biết tên của kịch bản.

Môi trường cụ thể là Ubuntu. Tôi không thể sử dụng apt-get, nhưng tôi có quyền truy cập vào gcc.

Có ý kiến ​​gì không?


1
Bạn có thể nhìn vào bất cứ điều gì dưới /var/log/? Tìm kiếm thông điệp tường trình về các nhiệm vụ cron.
slm

Không, rất tiếc, không có quyền hoặc không có liên quan (grep -ri cron / hoặc find / -name cron)
Cyberg Ribbon

Câu trả lời:


1

Phiên bản nào của Ubuntu? Nếu nó đang sử dụng systemd, bạn có thể dựa vào nhóm cronđược tạo bởi systemdtôi đoán, vì tất cả các quy trình bắt đầu cronsẽ là một đứa trẻ trực tiếp.

Một trong các tùy chọn để có được thông tin này là sử dụng lệnh ps với nội dung như:

ps -eo user,pid,cmd,unit | grep cron.service | grep flag03

Tại sao điều này không gặp phải vấn đề tương tự như gợi ý trong câu hỏi tức là các quy trình tồn tại ngắn sẽ bị bỏ qua.
Cyberg Ribbon

Thật vậy, nhưng bạn có thể kết hợp ý tưởng đó với ý tưởng từ @piroux và thêm đồng hồ inotify vào các tệp trong/sys/fs/cgroup/systemd/system.slice/cron.service/
Bigon

inotifysẽ không hoạt động trên các tệp đó, nhưng một vòng lặp bận rộn bắt đầu một giây trước mỗi phút để xem nội dung /sys/fs/cgroup/systemd/system.slice/cron.service/cgroup.procsvà truy xuất dòng lệnh tương ứng /proc/pid/cmdlineđể có thể nắm bắt các lệnh, đặc biệt là nếu bạn làm chậm mọi thứ bằng cách phân bổ nhiều RAM để đuổi hầu hết mọi thứ khỏi bộ đệm.
Stéphane Chazelas

1

Bạn không thể. Gần nhất bạn có thể nhận được là:

inotifywait -m /home/flag03/script

Điều đó sẽ không hiển thị thực thi nhưng nó sẽ hiển thị khi scriptđược mở hoặc truy cập.


0

Có thể sử dụng inotifywait trong các thư mục / Proc / [0-9] + sẽ cho phép bạn có cái nhìn rõ hơn về các quy trình chạy ngắn.


0

Nhìn vào thử thách phương pháp tấn công này sẽ cho rằng bạn có thể chạy một kịch bản và xem những gì chạy trên hộp, vì vậy tôi sẽ viết một kịch bản chỉ đơn giản là thực hiện một ps -eafvài giây, cuối cùng, nó sẽ bắt được một cron crons chạy một lần mỗi phút.

Vectơ tấn công này sẽ yêu cầu bạn xem kịch bản này đang chạy, lưu ý vị trí của tập lệnh và đào sâu hơn.


Không phải đó là khá nhiều bài viết tôi đã đăng trong câu hỏi sao?
Cyberg Ribbon

@Cyberg Ribbon - nhiều hay ít. Tôi sẽ sửa đổi tập lệnh một chút và có nhiều cách khác để theo dõi các quy trình đang chạy, vì vậy nếu điều này không thành công trong việc tìm kiếm bất kỳ cronjobs nào, tôi có thể tìm hiểu sâu hơn về các quy trình đó.
slm

0

Trong trường hợp cụ thể này, tệp được đặt trên /var/spool/cron/crontabs/flag03và bạn có thể đọc nó bằng nebulatài khoản.

Nhưng level03không có đủ đặc quyền để truy cập nó.


-1
while true; do ps aux | egrep -v "grep|tail|aux" | tail -n 1; sleep 1; done

3
Cung cấp thêm thông tin, đây là trang web Hỏi & Đáp và không phải là một đoạn chia sẻ.
peterh - Phục hồi Monica
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.