1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo thực hành môn học an toàn mạng tên chủ Đề lab1 getting comfortable with linux

23 6 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lab1 Getting Comfortable With Linux
Tác giả Phạm Trung Thành, Đào Anh Thiên
Người hướng dẫn PTS. Tô Trọng Nghĩa
Trường học Trường Đại học Công nghệ Thông tin (UIT)
Chuyên ngành An Toàn Mạng
Thể loại Báo cáo thực hành
Định dạng
Số trang 23
Dung lượng 2,33 MB

Nội dung

Liệt kê các port đang mở trên Kali Linux Sử dụng câu lệnh netstat dưới quyền root để hiển thị các thông tin về kết nối.-t, -u hiển thị các kết nối sử dụng TCP và UDP -l chỉ hiển thị các

Trang 1

BÁO CÁO THỰC HÀNH

Môn học: An Toàn Mạng Tên chủ đề: Lab1 GETTING COMFORTABLE WITH LINUX

2 NỘI DUNG THỰC HIỆN: 1

Trang 2

BÁO CÁO CHI TIẾT

A Tổng quan về Kali Linux

1 Sử dụng lệnh which để xác định vị trí lưu trữ của lệnh pwd

2 Sử dụng lệnh locate để xác định vị trí lưutrữ wce32.exe

3 Sử dụng lệnh find để xác định bất kỳ tậptin (không phải thư mục) đã đượcsửa đổi vào ngày trước đó, KHÔNG thuộc sở hữu của user root và thực thilệnh ls -l trên chúng KHÔNG được sử dụng các lệnh pipeline/chaining

/home/mrlucky/Downloads : tên thư mục nơi muốn tìm kiếm

-type f : loại là tập tin

-mtime 1 : 1 ngày về trước

! -user root : Không thuộc sở hữu của user root

-exec ls -l : thực hiện câu lệnh ls -l

{} : kí hiệu cho tập tin được tìm thấy

Trang 3

\; kết thúc câu lệnh

B Quản lí các dịch vụ

4 Liệt kê các port đang mở trên Kali Linux

Sử dụng câu lệnh netstat dưới quyền root để hiển thị các thông tin về kết nối.-t, -u hiển thị các kết nối sử dụng TCP và UDP

-l chỉ hiển thị các socket ở dạng LISTEN

-p hiển thị PID và tên của tiến trình

-n hiển thị địa chỉ và port dưới dạng số thay vì tên dịch vụ hay tên miền

grep LISTEN lọc ra các dòng có chữ LISTEN (các port đang lắng nghe)

5 Tại sao khi kiểm tra dịch vụ SSH có đang chạy hay không (Hình 10), kết quảhiển thị 2 dòng, trong khi dịch vụ HTTP (Hình 13), kết quả chỉ có 1 dòng

SSH có thể sử dụng nhiều phiên bản tiến trình hoặc giao thức khác nhau để lắngnghe kết nối, dẫn đến việc hiển thị nhiều dòng

HTTP có thể chỉ lắng nghe trên một giao thức hoặc cổng, nên kết quả thường chỉhiển thị một dòng

Trang 4

6 Ngăn dịch vụ SSH khởi động cùng lúc với hệ thống

systemctl dùng để quản lý các dịch vụ trong hệ thống

SSH sẽ không tự động khởi động khi hệ thống khởi động Tuy nhiên, SSH vẫn tồntại, và có thể khởi động nó thủ công bất cứ khi nào cần bằng cách sử dụng lệnhsudo systemctl start ssh

C Command line

7 Lịch sử các lệnh thực ra được lưu trữ ở đâu? Liệt kê các ưu, nhược điểm

khi thực hiện lưu trữ lại các lệnh đã nhập?

~/ bash_history file nơi lưu trữ lịch sử các câu lệnh đã sử dụng

Pros:

- Tăng hiệu quả khi dùng CLI vì có thể tái sử dụng lại các câu command đãdùng trước đó

- Nếu xảy ra lỗi trong quá trình dùng CLI có thể dễ dàng xem lại các câu

command trước đó để tìm ra nguyên nhân

- Admin có thể theo dõi được các câu command mà người dùng đã dùng đểtránh các hành vi nguy hiểm

- Khi mở thêm shell khác thì lịch sử sẽ vẫn được ghi tiếp tục, giúp ích cho việctheo dõi các command trong suốt cả 1 project

Cons:

- Vì lịch sử của các câu command đã dùng được lưu tại ~/ bash_history filenên nếu attacker có thể xâm nhập vào hệ thống được thì cũng có thể truycập vào file lịch sử

- Các dữ liệu như mật khẩu, private keys khi sử dụng trong câu command cóthể bị rò rỉ

8 Có cách nào để ngăn chặn việc lưu trữ lịch sử lệnh hay không? Nếu có, hãy

mô tả cách làm

Trang 5

- Thiết lập biến môi trường để không lưu lịch sử Sử dụng biến môi trườngHISTFILE để trỏ đến tệp không tồn tại hoặc giá trị rỗng.

Thêm dòng sau vào tệp ~/.bashrc

export HISTFILE=

- Tắt lịch sử lệnh

Thiết lập biến HISTSIZE và HISTFILESIZE về 0

Thêm các dòng sau vào tệp ~/.bashrc

export HISTSIZE=0

export HISTFILESIZE=0

HISTSIZE kiểm soát số lượng lệnh được giữ trong bộ nhớ lịch sử, còn

HISTFILESIZE kiểm soát số lượng lệnh được lưu trong tệp lịch sử Bằngcách đặt cả hai giá trị này bằng 0, Bash sẽ không lưu bất kỳ lệnh nào

- Ngăn lịch sử lệnh ở phiên làm việc hiện tại

- Dùng phím mũi tên lên xuống để sử dụng lại các câu lệnh cũ

- Sử dụng câu lệnh history để xem lịch sử câu lệnh Và sử dụng !n, n là số thứ

tự của câu lệnh trong lịch sử

- Sử dụng Ctrl + R để tìm kiếm các lệnh đã sử dụng trong lịch sử

- Tạo alias để sử dụng tắt các câu dụng thường sử dụng

10 .Như đã biết, khi sử dụng toán tử “>” để xuất kết quảvô tập tin, nếu tập tin

đã tồn tại, nội dung trong tập tin sẽ bị thay thế bằng nội dung mới Vậy, có cáchnào để hoàn tác lại quá trình này hay không? Nếu có, hãy mô tả cách làm

Không có cách hoàn tác trực tiếp khi bị ghi đè

Có một số cách để hạn chế hoặc khắc phục như:

- Sử dụng toán tử >> thay vì >

- Sử dụng các hệ thống quản lý phiên bản như Git, Github,

11 Sử dụng lệnh cat cùng với lệnh sort để sắp xếp lại nội dung của tập tin

/etc/passwd, sau đó lưu kết quả vào một tập tin mới có tên passwd_new và

thực hiện đến số lượng dòng có trong tập tin mới

Trang 6

Sử dụng lệnh cat để xem nội dung của tập tin /etc/passwd, đồng thời sử dụng sort

để sắp xếp lại nội dung và lưu vào tập tin mới passwd_new

Sử dụng lệnh wc để đếm có bao nhiêu dòng trong passwd_new

12 Sử dụng tập tin /etc/passwd, trích xuất tên user và home directory cho tất

cả user có shell được thiết lập là /usr/sbin/nologin Lưu ý, chỉ sử dụng 1 dòng

● Trường 1: Tên user

● Trường 2: Mật khẩu (thường là một ký hiệu thay vì mật khẩu thực)

● Trường 3: ID user (UID)

● Trường 4: ID nhóm (GID)

● Trường 5: Thông tin mô tả người dùng

● Trường 6: Thư mục home của user

● Trường 7: Shell đăng nhập của user (ví dụ: /bin/bash, /usr/sbin/nologin)

$7 == “/usr/sbin/nologin”: trường thứ 7 trong được lọc là /usr/sbin/nologin

Trang 7

print: dùng để in ra các thông tin cần trả về trong kết quả

/etc/passwd : vị trí tập tin thực thi lệnh awk

13 Tải tập tin access_log.txt.gz tại

(https://github.com/blakduk/ahihi/raw/master/access_log.txt.gz), sau đó thực hiệnliệt kê danh sách các địa chỉ IP và số lượng tương ứng, thực hiện sắp xếp giảmdần

Sử dụng lệnh wget để tải tập tin về

Sử dụng lệnh gunzip để giải nén tập tin

Sử dụng awk để in ra tham số đầu tiên được lọc trong tập tin access_log.txtLệnh uniq -c dùng để đếm số lần xuất hiện của IP address

Lệnh sort -nr dùng để xếp số lần xuất hiện theo thứ tự giảm dần

Trang 8

14 Hãy cho biết đường dẫn thực thi của 2 lệnh wget và curl?

Sử dụng câu lệnh which để hiển thị đường dẫn thực thi

15 Theo bạn, trong 2 lệnh tải về wget và curl, lệnh nào ưu việt hơn? Giải thích?

wget:

Ưu điểm:

Đơn giản: wget để tải về tệp từ các giao thức HTTP, HTTPS, và FTP,

dễ sử dụng cho mục đích tải dữ liệu về

Tải tệp hàng loạt: wget có thể tải nhiều tệp, toàn bộ trang web hoặcthậm chí cả thư mục từ server bằng cách sử dụng tùy chọn như -r(recursive)

Khả năng tiếp tục tải: Nếu quá trình tải bị gián đoạn, wget có thể tiếptục từ nơi bị dừng lại mà không cần tải lại toàn bộ tệp

Hoạt động trong nền: wget có thể chạy trong nền mà không cần ngườidùng theo dõi tiến trình, hữu ích cho tải về tệp lớn

Hỗ trợ nhiều giao thức: Ngoài HTTP, HTTPS, FTP, curl còn hỗ trợnhiều giao thức khác như SCP, SFTP, LDAP, và POP3

Trang 9

Tương thích với nhiều hệ thống: curl có thể được sử dụng không chỉtrên Linux, mà còn trên nhiều hệ điều hành khác như macOS vàWindows.

Đầu ra tùy chỉnh: curl có thể xử lý dữ liệu trả về từ server và cung cấpnhiều tùy chọn đầu ra tùy chỉnh

16 Có thể sử dụng lệnh curl để thay đổi các HTTP header được hay không?

Nếu được, cho ví dụ?

Sử dụng tùy chọn -H (hoặc header) của lệnh curl để thiết lập một HTTP headertùy chỉnh

VD:

Thay đổi User-Agent header

curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)"

https://example.com

Thiết lập nhiều header

curl -H "User-Agent: MyApp" -H "Accept: application/json"https://example.com

D Các công cụ cần thiết

17 Máy chủ nào sẽ đóng vai trò là server ?

- Máy chủ chạy lệnh nc -lvnp 4444 sẽ đóng vai trò là server, chờ kết nối từphía máy khách(client) Ở đây là máy Window 10

18 Máy chủ nào sẽ đóng vai trò là client ?

- Máy Kali Linux sẽ đóng vai trò là client

Trang 10

19 Nếu khai báo lệnh ‘nc -lvnp 4444’ thì thật chất port 4444 được mở ở máy nào?

- Nếu khai báo lệnh “nc -lvnp 4444” thì thật chất port 4444 được mở ở máychạy lệnh này Ở đây là máy Window đang mở port 4444 để lắng nghe từmáy Kali Linux

20 Thực hiện chuyển tập tin wget.exe từ máy Kali sang máy Windows 10

Trang 12

21 Thực hiện lại chi tiết kịch bản Reverse Shell và Bind Shell sử dụng netcat.

● Bind Shell

- Máy window 10 mở cổng 4444

- Linux kết nối đến port trên win 10 và chiếm quyền thực thi cmd

Trang 13

- Kết nối thành công

- Tiến hành khai thác máy win 10 thông qua điều khiển command line

Trang 14

● Reverse Shell

22 So sánh ưu nhược điểm khi sử dụng Bind Shell và Reverse shell Khi nào nên

sử dụng Bind Shell? Khi nào nên sử dụng Reverse Shell?

Trang 15

★ Bind Shell

➢ Ưu điểm :

+ Dễ thực hiện trong môi trường nội bộ: Nếu cả hai máy (máy tấncông và máy đích) nằm trong cùng một mạng hoặc môi trườngnội bộ, việc thiết lập một bind shell có thể dễ dàng vì không gặpnhiều vấn đề về tường lửa hoặc NAT

+ Không yêu cầu máy tấn công mở port: Máy tấn công không cầnphải mở cổng và chờ kết nối, thay vào đó chỉ cần kết nối đếncổng của máy đích

+ Có thể ra vào máy nạn nhân bất cứ lúc nào

➢ Nhược điểm:

+ Bị chặn bởi tường lửa: Máy đích cần mở một cổng để lắng nghekết nối từ xa Điều này có thể bị chặn bởi tường lửa hoặc cơ chếbảo mật của hệ thống

+ Có thể dễ bị phát hiện: Khi mở một cổng trên máy đích, hệ thốngbảo mật hoặc quản trị viên mạng có thể phát hiện và ngăn chặn.+ Cần phải biết địa chỉ IP của máy nạn nhân

★ Reverse Shell

➢ Ưu điểm:

+ Vượt qua tường lửa: Máy đích thực hiện kết nối ra ngoài, điềunày giúp bypass nhiều cơ chế tường lửa hoặc NAT vì kết nốioutbound thường ít bị kiểm soát chặt chẽ hơn inbound

+ Ẩn mình: Do kết nối được bắt đầu từ máy đích, phương phápnày khó bị phát hiện hơn trong nhiều trường hợp, đặc biệt nếumáy đích được phép truy cập ra ngoài mạng

+ Kẻ tấn công không cần biết địa chỉ IP của máy nạn nhân

➢ Nhược điểm:

+ Yêu cầu máy tấn công mở port: Máy tấn công cần mở cổng đểlắng nghe kết nối, điều này có thể làm cho máy tấn công dễ bịphát hiện hoặc bị chặn bởi các chính sách bảo mật của chínhmáy tấn công

+ Khi ngắt kết nối cần cần chạy lại lệnh netcat trên máy nạn nhân

- Hoàn cảnh sử dụng:

+ Bind Shell: Phù hợp trong các môi trường mà máy đích có thể mởcổng và không bị hạn chế bởi tường lửa hoặc NAT Tuy nhiên, nó dễ bịphát hiện và gặp vấn đề về tường lửa

+ Reverse Shell: Phù hợp hơn khi cần vượt qua tường lửa hoặc khi máyđích bị hạn chế về kết nối inbound Reverse shell giúp máy tấn cônggiữ trạng thái "ẩn" tốt hơn, nhưng yêu cầu máy tấn công phải chuẩn bị

để nhận kết nối

Trang 16

23 Thực hiện trao đổi tập tin, bind shell, reverse shell sử dụng Powershell.

● Trao đổi tập tin

- Tiến hành truyền nội dung của tệp 22521360.txt qua cổng 4444 bằng netcat

- Máy win10 nhận dữ liệu từ Linux và truyền vào file FilefromKali.txt

Trang 17

- Dữ liệu trong file 2252136.txt ở Linux

- Dữ liệu mà window nhận được trong file FilefromKali.txt

● Bind Shell

Trang 19

● Reverse Shell

- Máy Kali làm server và tiến hành mở kết nối

- Win 10 tiến hành thiết lập tới kết nối và sử dụng thuộc tính -e của netcat

- Kết nối thành công

Trang 20

- Tiến hành khai thác

Trang 21

24 Ngoài netcat và Powershell có cách nào tạo ra được Bind Shell và ReverseShell không? Cho ví dụ.

Ngoài netcat và PowerShell, có một số cách khác để tạo bind shell vàreverse shell, bao gồm:

- Sử dụng ngôn ngữ lập trình: Python, Ruby, Perl, PHP

- Công cụ và kỹ thuật khác: Bash, Socat OpenSSL, Java

- Các kỹ thuật web: WebSockets, Server-Sent Events(SSE)

+ Sử dụng Python để tạo server và client

- Chạy code python ở máy win10 làm server và khai thác máy linux

Trang 22

- Chạy code client ở máy Kali Linux

- Máy win10 đã khai thác được Linux sau khi thiết lập kết nối thành công

- Code:

Server.py

Trang 23

HẾTCảm ơn thầy đã theo dõi bài làm của nhóm chúng em

Ngày đăng: 26/10/2024, 12:17

w