Nội dung chính
Xem Lenh chuyen huong ket qua linux 2024
Trong bài trước mình đã giới thiệu cho các bạn làm quen với Linux. Trong bài này chúng ta sẽ tiếp tục thực hành với các lệnh linux hữu dụng khác.
Learning Path:
- Linux basic for hacking part1: Giới thiệu về Linux, hướng dẫn chọn distro
- Linux basic for hacking part2: Thực hành làm quen với Linux
- Linux basic for hacking part3: Một số lệnh Linux cơ bản
I. Piping và Redirection
Pipe là một cơ chế trong Linux như 1 đường ống dòng chảy dữ liệu cho phép bạn sử dụng hai hoặc nhiều lệnh sao cho đầu ra của một lệnh đóng vai trò là đầu vào cho lệnh tiếp theo.
Redirection là tính năng cho phép chuyển hướng đầu vào/đầu ra (INPUT/OUTPUT) trong hệ điều hành Linux. Redirection cho phép chúng ta thay đổi đầu vào tiêu chuẩn (stdin) và đầu ra tiêu chuẩn (stdout) khi thực hiện một lệnh trên terminal. Theo mặc định, thiết bị đầu vào tiêu chuẩn là bàn phím của bạn và thiết bị đầu ra tiêu chuẩn là màn hình của bạn. Ví dụ như bạn cần lưu lại toàn bộ output hiển thị ra màn hình của câu lệnh nmap ra 1 file thì lúc này tính năng chuyển hướng sẽ giúp bạn.
Mọi chương trình chạy từ dòng lệnh trên Linux đều có ba luồng dữ liệu được kết nối với nó để phục vụ như các kênh giao tiếp với môi trường bên ngoài. Các luồng này được định nghĩa như sau:
- Standard Input (STDIN) : Định nghĩa dữ liệu được đưa vào chương trình
- Standard Output (STDOUT) : Đầu ra từ chương trình (mặc định là terminal)
- Standard Error (STDERR) : Thông báo lỗi (mặc định là terminal)
Pipe (sử dụng toán tử | ) và Redirection (sử dụng toán tử> và <) kết nối các luồng này giữa các chương trình và tệp.
Chuyển hướng ra 1 file mới
Ta có thể sử dụng toán tử > để lưu kết quả đầu ra của một lệnh vào một tệp để giữ nó để tham khảo hoặc thao tác trong tương lai. Ví dụ như bạn muốn lưu lại kết quả nmap vào 1 file trong quá trình dò quét pentest để sử dụng sau này bạn có thể dùng lệnh sau:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
8
Mã:
$ nmap 10.211.55.3
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp orts (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
[QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
$ nmap 10.211.55.3 > result_nmap.txt #Lenh chuyen huong ket qua nmap vao 1 file
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Kết quả lưu vào file sẽ giống hệt những gì xuất ra trên terminal khi thực hiện lệnh đó. Nếu chúng ta chuyển hưởng vào 1 file chưa tồn tại thì hệ thống sẽ tự tạo file đó. Tuy nhiên nếu file đó đã tồn tại trước thì lệnh này sẽ ghi đè tệp thay thế các nội dung đã có của tệp bằng nội dung mới.
Chuyển hướng ra 1 file đã tồn tại
Để thêm dữ liệu bổ sung vào tệp hiện có (thay vì ghi đè tệp), hãy sử dụng toán tử >> . Trong ví dụ trên trường hợp ta muốn ghi chú các thông tin khai thác được từ các cổng tìm được vào tệp kết quả ta sẽ dùng thêm tùy chọn chuyển hướng ghi vào file đã tồn tại như sau:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
Chuyển hướng từ một tệp
Trong trường hợp ngược lại là chuyển nội dung từ tệp làm đầu vào cho một lệnh thì ta sẽ sử dụng toán tử < . Trong ví dụ sau, sẽ chuyển hướng STDIN của lệnh wc với dữ liệu có nguồn gốc trực tiếp từ tệp kết quả của lệnh nmap được tạo ra trước đó chúng ta sẽ đếm xem có bao nhiêu dòng trong tệp đó bằng lệnh
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
9 :
Mã:
$ wc -l < result_nmap.txt
9
Chuyển hướng STDERR
Theo POSIX thì STDIN, STDOUT và STDERR sẽ tương ứng với các giá trị 0, 1 và 2. Những con số này rất quan trọng vì chúng có thể được sử dụng để thao tác với các luồng dữ liệu tương ứng từ dòng lệnh trong khi thực hiện hoặc nối các lệnh khác nhau lại với nhau. Để hiểu rõ về cách dùng các con số này, hãy xem xét ví dụ này chuyển hướng lỗi (STDERR):
Ví dụ chúng ta cần tìm các file có tên là “passwd” mà user hiện tại có quyền đọc trên hệ thống. Rõ ràng ta thấy kết quả dưới đây chúng ta sẽ nhận được thông báo lỗi là user không có quyền là các kết quả mà ta không mong muốn và nó làm kết quả in ra rất rối:
Mã:
$ find / -name "passwd"
find: ‘/run/speech-dispatcher’: Permission denied
find: ‘/run/openvpn-server’: Permission denied
find: ‘/run/openvpn-client’: Permission denied
find: ‘/proc/3/fd’: Permission denied
find: ‘/proc/3/map_files’: Permission denied
/usr/bin/passwd
/usr/share/doc/passwd
/usr/share/lintian/overrides/passwd
Tuy nhiên ta có thể chuyển hướng các thông báo lỗi này vào 1 file hoặc thậm chỉ như trường hợp dưới đây ta sẽ ghi ra 1 file đặc biệt là /dev/null ( Mọi thứ ghi vào file này đều sẽ bị xóa, có thể hiểu đây là 1 file đặc biệt ghi tất cả mọi thứ mà ta không muốn lưu), ta sẽ thu được kết quả lệnh trên gọn gàng hơn:
Mã:
$ find / -name "passwd" 2> /dev/null
/usr/bin/passwd
/usr/share/doc/passwd
/usr/share/lintian/overrides/passwd
Piping
Pipip sẽ giúp kết hợp nhiều lệnh trong linux lại với nhau. Đầu ra lệnh này là đầu vào của lệnh kia. Ví dụ dưới đây ta sẽ kết hợp lệnh cat và lệnh wc để đếm số dòng có trong file kết quả nmap trên
Mã:
$ cat result_nmap.txt | wc -l
9
II. Một số lệnh Linux liên quan xử lý text
Đây là các lệnh liên quan đến xử lý chuỗi trên Linux và cực hữu ích trong việc xử lý phân tích trích xuất thông tin từ các file, đầu ra
Lệnh grep
grep là lệnh dùng để tìm kiếm chính xác cá từ từ 1 file hoặc 1 input đầu ra sẽ hiển thị ngay trên màn hình command line theo dòng nào có chứa chuỗi sẽ hiển thị cả dòng trong file đó ra và chuỗi đó sẽ được highlight. Cũng với ví dụ file nmap trên chúng ta chỉ cần lọc các port đang được open thì ta sẽ sử dụng lệnh sau:
Mã:
[email protected]:/tmp$ cat result_nmap.txt | grep open
22/tcp open ssh
grep có hỗ trợ tìm kiếm theo regex và nhiều tùy chọn khác. Chi tiết thêm: man grep
Lệnh sed
Lệnh sed là công cụ xử lý văn bản mạnh mẽ và là một tiện ích UNIX lâu đời nhất và phổ biến nhất. Nó được sử dụng để sửa đổi nội dung của một tệp, thường đặt nội dung vào một tệp mới. Lệnh sed có thể lọc văn bản, cũng như thực hiện thay thế trong luồng dữ liệu.
$ wc -l < result_nmap.txt
9
0
Ví dụ lệnh sau:
Mã:
$ sed -n 's/Nmap/Tools scan/p' result_nmap.txt
Starting Tools scan 7.93 ( ) at 2022-10-06 11:36 +07
Tools scan scan report for 10.211.55.3
Tools scan done: 1 IP address (1 host up) scanned in 8.66 seconds
Chi tiết thêm: man sed
Lệnh cut
Lệnh cut được sử dụng thao tác với tệp dựa trên cột và được thiết kế để trích xuất các cột cụ thể. Dấu phân cách cột mặc định là ký tự tab. Ví dụ sau sẽ sử dụng lệnh cut để lấy mỗi username của hệ thống:
Mã:
$ cat /etc/passwd | cut -d ":" -f 1
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
Chi tiết thêm: man cut
Lệnh awk
Lệnh awk sử dụng để tìm kiếm và xử lý file text. Nó có thể tìm kiếm một hoặc nhiều file để xem các file có dòng nào bao gồm những pattern cần tìm kiếm và sau đó thực hiện những action. Cú pháp của lệnh awk như sau:
$ wc -l < result_nmap.txt
9
1
Mã:
$cat /etc/passwd | awk -F: '{print "Username: " $1}'
Username: root
Username: daemon
Username: bin
Username: sys
Username: sync
Username: games
Username: man
Username: lp
Username: mail
Username: news
Username: uucp
Username: proxy
Chi tiết thêm:
$ wc -l < result_nmap.txt
9
2
Lệnh sort
Lệnh sort được sử dụng để sắp xếp các dòng của tệp văn bản theo thứ tự tăng dần hoặc giảm dần, theo một khoá sắp xếp. Khóa sắp xếp mặc định là thứ tự của các ký tự ASCII (theo thứ tự bảng chữ cái). Cú pháp của lệnh sort:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
0
Chi tiết thêm về lệnh sort có thể sử dụng lệnh man để xem:
$ wc -l < result_nmap.txt
9
3
Lệnh head
Lệnh head dùng để xem những dòng đầu của tệp tin (theo mặc định là 10 dòng đầu tiên). Chúng ta có thể thay đổi số dòng bằng cách thêm -n vào sau lệnh head. Cách dùng lệnh head:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
1Chi tiết thêm về lệnh sort có thể sử dụng lệnh man để xem:
$ wc -l < result_nmap.txt
9
4
Lệnh uniq
Lệnh uniq dùng để bỏ các dòng liên tiếp trùng lặp trong một tệp văn bản rất hữu ích để đơn giản hóa hiển thị văn bản. Tuy nhiên uniq yêu cầu các dòng trùng lặp phải liên tiếp, nên chúng ta thường chạy sắp xếp trước.
Chi tiết thêm:
$ wc -l < result_nmap.txt
9
5
III. Thực hành
Ta sẽ có 1 ví dụ nhỏ sử dụng các lệnh trên để phân tích 1 file access.log đơn giản. Trong nhiều trường hợp cần nhanh gọn thì việc sử dụng các lệnh linux để phân tích log điều tra sự cố là rất hữu ích.
Ta sẽ sử dụng file log demo: access.log. ở đây để tương tác. Đầu tiên chạy lệnh download file log về:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
2Ví dụ để lọc giữ lại các IP truy cập có trong access.log ta có thể sử dụng lệnh cut với ký tự phân tách là khoảng trắng. Do ta thấy dữ liệu IP ta cần lấy là phần tử đầu tiên do đó ta sẽ kèm tùy chọn -f 1:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
3
Sau khi chạy lệnh trên các bạn sẽ thấy nó sẽ cắt và giữ lại phần tử đầu tiên của mỗi hàng chính là địa chỉ IP tuy nhiên các IP này sẽ bị lặp lại và sẽ khó thống kê. Do đó ta có thể sử dụng lệnh dưới đây để thống kê lượt truy cập của các IP:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
4
Từ câu lệnh trên chúng ta có thể thấy IP nào truy cập vào hệ thống nhiều nhất. Trong trường hợp IP đó có hành động đang rà quét hệ thống gửi rất nhiều request chúng ta có thể dễ dàng nhận ra IP nào đang tấn công
Nhiệm vụ tiếp theo: Như ở trên ta thấy IP 66.249.73.135 đang có lượt truy cập vào hệ thống nhiều nhất. Chúng ta cần điều tra xem các url mà IP này truy cập là gì?
Với trường hợp này đầu tiên ta cũng cần phải tách được các request từ IP 66.249.73.135 trong file access.log ban đầu. Với lệnh grep chúng ta có thể log được các request có chứa cụm từ “75.97.9.59”
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
5Tiếp theo chúng ta cần lọc được các path url từ các output bên trên. Lúc này chúng ta có thể sử dụng lệnh cut với ký tự phân cách là khoảng trắng để tách các trường của output:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
6Để thống kê số lượng truy cập các url path ta sẽ dùng tương tự với trường hợp thống kê IP là dùng kết hợp lệnh sort:
Mã:
$ echo "Port 22 tim duoc tai khoan dang nhap user root mat khau root." >> result_nmap.txt
$ cat result_nmap.txt
Starting Nmap 7.93 ( ) at 2022-10-06 11:36 +07
Nmap scan report for 10.211.55.3
Host is up (0.00016s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
[/QUOTE]
Nmap done: 1 IP address (1 host up) scanned in 8.66 seconds
Port 22 tim duoc tai khoan dang nhap user root mat khau root
7
Bài hôm nay mình xin khép lại ở đây. Hẹn các bạn ở bài tiếp theo!
From M4rcus. Happy Hacking
Bạn đang tìm hiểu bài viết: Lenh chuyen huong ket qua linux 2024
HỆ THỐNG CỬA HÀNG TRÙM SỈ QUẢNG CHÂU
Điện thoại: 092.484.9483
Zalo: 092.484.9483
Facebook: https://facebook.com/giatlathuhuongcom/
Website: Trumsiquangchau.com
Địa chỉ: Ngõ 346 Nam Dư, Trần Phú, Hoàng Mai, Hà Nội.