Linux Internal
Linux Malware
Last updated
Linux Malware
Last updated
Tệp là khái niệm cơ bản nhất trong Linux. Linux tuân theo triết lý mọi thứ đều là tệp tin (triết lý của Windows là mọi thứ là cửa sổ ).
Để truy cập, mọi file ban đầu phải được mở ra. Mỗi tệp sau khi mở sẽ được ánh xạ đến 1 giá trị gọi là file descriptor, tương tự như HANDLE trong WINDOWS.
File thông thường: tương tự trên windows, một tệp thông thường chứa các bytes dữ liệu, tổ chức thành 1 mảng.
Thư mục và liên kết: tương tự trên windows.
Các file đặc biệt:
Block device files: là 1 tập tin đề cập đến 1 thiết bị (device). Block device có thể truy cập dưới dạng tệp, ví dụ truy cập đĩa cứng.
Character device files: thường không có địa chỉ, chỉ cung cấp quyền truy cập vào dữ liệu dưới dạng luồng, thường là các ký tự, tức là byte. Chúng thường được viết tắt là cdev. Chúng được truy cập thông qua một nút đặc biệt trong hệ thống tập tin được gọi là nút thiết bị ký tự. Vd: Bàn phím.
Named pipes: dùng để giao tiếp giữa các tiến trình với nhau.
Sockets: dùng để giao tiếp mạng.
Về khái niệm tương tự như trên Windows: là 1 tệp chứa hàng loạt thông tin mô tả cách chương trình chạy và lưu trữ trên memory. File thực thi trên linux cũng có header, mã máy, entrypoint, symbols(kiểu như thông tin lưu trong file pdb) và bảng relocations, thư viện tĩnh, thư viện động, …
Thông tin về các process đang chạy có thể tìm thấy trong thư mục /proc, mỗi process id ứng với 1 thư mục.
Trong thư mục có toàn bộ các thông tin của process:
Exe: file liên kết, trỏ thẳng đến file thực thi.
Maps: chứa thông tin về các thư viện đang load trên mem, địa chỉ tương ứng.
Stack: thông tin stack call
Cmdline: commandline
…
-> Dùng linux sẽ thấy ăn disk nhiều.
Trong Windows, có 2 group user là standard user và administrator user.
Với Linux, có thể có nhiều group khác nhau và 1 user có thể thuộc nhiều group. Mỗi group sẽ quy định user thuộc group đó có những quyền như thế nào.
User có quyền cao nhất: user root.
Mỗi tệp được liên kết với một user sở hữu, group sỡ hữu và một tập hợp các bit phân quyền r,w,x.
Là cơ chế gửi tín hiệu, thông báo từ kernel đến process, từ process nọ sang process kia hoặc từ 1 process đến chính nó.
Khi nhận được signal, hàm callback của process có thể xử lý hoặc bỏ qua(ngoại trừ SIGNKILL và SIGNSTOP). Có khoảng 30 signal tùy vào kiến trúc tập lệnh. Ví dụ khi ấn Ctrl C, tín hiệu SIGNINT được gửi đến. Chỉ hầu hết chứ không phải lúc nào ta ấn Ctrl C đều thấy chương trình dừng, là do 1 số chương trình không xử lý tín hiệu SIGNINT.
.bashrc: tập các lệnh khai báo trong file này sẽ tự động chạy khi có 1 shell (terminal) chạy lên mà có thể tương tác trực tiếp với người dùng. (người dùng mở terminal trực tiếp).
.bash_profile (.profile): tập các lệnh khai báo trong file này sẽ tự động chạy khi có 1 phiên login shell (ví dụ ssh vào).
.bash_logout: chạy khi phiên login shell kết thúc.
/etc/ld.so.preload: khai báo biến LD_PRELOAD, chứa 1 thư viện sẽ luôn luôn được load bởi mọi tiến trình sau này. Thường rootkit usermode trên linux sẽ khai báo LD_PRELOAD trong file .bash_profile hoặc file ld.so.preload.
/var/log/auth.log /var/log/secure*
Chứa thông tin nhật kí xác thực, bất kì hoạt động nào liên quan đến xác thực như sudo, su, ssh, …
Dữ liệu log hiển thị tương đối dễ hiểu, có ý nghĩa. Cấu trúc: [time] + [đối tượng đưa ra log] + [nội dung log]
Nhiều dòng log có pam_unix, Pluggable Authentication Modules (PAM) là module xác thực của linux.
/var/log/cmdlog.log : lưu trữ tất cả các lệnh mà user gõ vào terminal. Log này được cấu hình chứa thông tin thời gian gõ lệnh, user thực hiện và nội dung. Không phải log mặc định.
.bash_history: chứa lịch sử các lệnh đã chạy, ko chứa username và time.
Chỉ sử dụng các câu lệnh cat, ls, readlink
readlink: đọc giá trị thực của symlink
readlink -f: lấy ra absolute path của 1 file
Mỗi process đều có một thư mục riêng trong
/proc
với tên là PID của nó.Trong thư mục này,
exe
là một symbolic link đến executable file mà process đang sử dụng.
-> Lệnh: (Giả sử PID = 1359)
Thư mục
/proc/[PID]
trong hệ thống Linux chứa một lượng lớn thông tin về các process đang chạy, nơi[PID]
là Process ID của tiến trình bạn quan tâm. Dưới đây là một số file và thư mục quan trọng trong/proc/[PID]
và thông tin mà bạn có thể lấy được từ chúng:
cmdline
Chứa lệnh đã khởi động process, bao gồm cả các tham số dòng lệnh.
cwd
Là một liên kết đến thư mục làm việc hiện tại của process.
environ
Chứa các biến môi trường của process.
exe
Là một liên kết đến file thực thi của process. Sử dụng
readlink
để lấy đường dẫn đầy đủ.
fd
Là một thư mục chứa liên kết đến tất cả các file mà process đang giữ mở. Mỗi file được đại diện bởi một số, và bạn có thể dùng
ls -l
để xem chúng.
maps
Cung cấp thông tin về không gian địa chỉ bộ nhớ của process, bao gồm cả các phần bộ nhớ được ánh xạ tới file và thư viện.
mem
Cho phép truy cập trực tiếp vào không gian địa chỉ bộ nhớ của process (chỉ đọc).
root
Là một liên kết đến thư mục gốc của process.
status
Chứa thông tin về trạng thái của process, bao gồm UID/GID, số lượng các threads, và các thông số khác như VmSize (kích thước bộ nhớ ảo), VmRSS (Resident Set Size - kích thước bộ nhớ vật lý sử dụng), và nhiều hơn nữa.
task
Thư mục này chứa các thư mục con, mỗi thư mục con đại diện cho một thread của process. Mỗi thư mục con này cũng có cấu trúc tương tự như thư mục
/proc/[PID]
, cung cấp thông tin về từng thread.
io
Chứa thông tin về hoạt động nhập/xuất của process, bao gồm số byte đã đọc và viết.
-> Lệnh: (Giả sử PID = 1359)
© 2024,Pham Quoc Trung. All rights reserved.