Tạo một tệp tin văn bản với một số nội dung nhỏ bằng cách sử dụng một trình soạn thảo ví dụ:leafpad hoặc sử dụng kết hợp của lệnh echo và chuyển hướng ‘>’.. So sánh văn bản đã giải mã vớ
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-BÁO CÁO THỰC HÀNH 1
CƠ SỞ AN TOÀN THÔNG TIN
Hà Nội, ngày 15 tháng 11 năm 2024
Trang 2MỤC LỤC
0
MỤC LỤC 1
1 Tìm hiểu về hàm băm và mã xác thực thông điệp MACs 2
1.1 Lý thuyết 2
1.2 Nội dung thực hành 2
1.3 Check work 7
2.Sử dụng công cụ Metasploit 8
2.1 Lý thuyết 8
2.2 Nội dung thực hành 9
2.3 Check work 14
3 Tìm hiểu chứng chỉ khóa công khai 15
3.1 Lý thuyết 15
3.2 Nội dung thực hành 15
3.3 Check work 20
4 Khám phá các chế độ mã hóa khóa đối xứng 21
4.1 Lý thuyết 21
4.2 Nội dung thực hành 21
4.3 Checkwork 31
Trang 3I Tìm hiểu về hàm băm và mã xác thực thông điệp MACs
Khởi động bài lab: labtainer macs-hash
Nhiệm vụ 1: Trong nhiệm vụ này, bạn sẽ không sử dụng OpenSSL để tạo bản tóm lược
(digest) vì có nhiều cách tạo dễ dàng hơn trên Unix Thay vào đó, bạn sử dụng lệnh Shasum mặc định hỗ trợ SHA-1 với đầu ra 160 bit, cũng như các đầu ra SHA-2 dưới các tùy chọn khác Bạn có thể xem các tùy chọn bằng lệnh dưới:
shasum help | less
Trang 4 Để khởi chạy shasum, sử dụng lệnh:
shasum –a ALGORITHM FILENAME
ALGORITHM với các tùy chọn được hỗ trợ, ví dụ: 1, 224, 256, 384, 512, 512224,
512256
FILENAME là một file trên hệ thống
Ví dụ, để tạo ra một bản tóm lược 160 bit SHA-1:
shasum –a 1 foo.txt
Các yêu cầu cần thực hiện:
Tạo một tệp văn bản bất kỳ trên hệ thống
Sử dụng Shasum để thử 7 thuật toán mã hóa với tệp đã tạo ở trên
Nhiệm vụ 2: Kiểm tra bản tóm lược
Trong nhiệm vụ này, chúng ta sẽ học cách kiểm tra tính toàn vẹn của file tải xuống bằng cách
sử dụng hàm băm Sử dụng trình duyệt lynx để tải xuống 2 file
Gõ lynx verydodgy.com
Sử dụng các phím mũi tên và phím “d” để tải và lưu file floppy57.fs
Từ cùng trang web đó, tải và lưu file SHA256.sdx
Trang 5 Tạo bản tóm lược SHA256 với file vừa tải xuống Kiểm tra bản tóm lược tạo ra và file SHA256.sdx khớp với floppy57.fs khi dùng shasun256
Nhiệm vụ 3: Tìm hiểu về “Avalanche E ect”ff
“Avalanche E ect” mô tả hiện tượng một thay đổi nhỏ ở file đầu vào cũng sẽ làm thay đổi ffhoàn toàn đến bản tóm lược đầu ra
Tạo một file với tên iou.txt có nội dung “Bob owes me 200 dollars”
Tạo bản tóm lược SHA256 của file iou.txt
Mở file iou.txt bằng chương trình chỉnh sửa, ví dụ leafpad
Thay đổi số “2” thành “3” Điều này sẽ làm 1 bit bị thay đổi
Trang 6 Lưu các thay đổi và thoát khỏi chương trình chỉnh sửa.
Tạo bản tóm lược SHA256 khác đối với tệp iou.txt đã sửa đổi
Ta thấy được chỉ thay đổi 1 ký tự nhưng bản tóm lược mới đã thay đổi khác biệt rất rõ ràng
Thay đổi thêm các ký tự khác để cố gắng khi tạo bản tóm lược được như ban đầu nhưng không thể
Nhiệm vụ 4: Tìm hiểu về Second Pre-Image Resistance
Trong phần này, chúng ta sẽ tìm hiểu các thuộc tính Second Pre-Image Resistant của hàm băm SHA256
Trang 7 Đầu tiên, tạo bản tóm lược SHA256 của file declare.txt
Tiếp theo, sử dụng script collide1.sh Script collide1.sh được viết nhằm tìm dữ liệu ngẫu nhiên mà khi băm sẽ thành một giá trị file đầu vào đã biết Hơn nữa, nó còn cho phép bạnchỉ định bao nhiêu bản tóm lược muốn trùng khớp
Thực hiện lệnh sau để tìm dữ liệu ngẫu nhiên mà khi băm, 6 số cuối dạng hex của bản tóm lược sẽ trùng với 6 số cuối dạng hex của bản tóm lược file declare.txt
Dùng lệnh : openssl dgst -sha1 -hmac <number> declare.txt
Thay number từ 1 tăng dần cho đến khi được mã hash đề bài cho
Trang 8Tại 6 thì ta được mã hash đề bài cho
Yêu cầu đối với sinh viên:
Có kiến thức cơ bản về hệ điều hành Linux, Kali, công cụ metasploit, các lỗ hổng dịch vụ cơ bản: rlogin, ingreslock, distccd, IRC daemon, VSFtpd, Samba, HTTP, Postgres
Nội dung thực hành
Khởi động bài lab:
o Vào terminal, gõ:
labtainer metasploit
Trang 9Sau khi khởi động xong hai terminal ảo sẽ xuất hiện, một cái là đại diện cho máy tấn
công: attacker, một cái là đại diện cho máy nạn nhân: victim.
Trang 10 Sử dụng công cụ “nmap” để quét các dịch vụ có thể tấn công Kết quả cần đạt được
tìm ra các cổng có thể tấn công vào máy Victim nếu có (trong bài lab mặc định các
rlogin -l root <IP victim>
cat /root/filetoview.txt
Trang 11 Khai thác dịch vụ ingreslock (cổng 1524) Sử dụng telnet để truy cập vào dịch vụ ingreslock và có được quyền root Kết quả cần đạt được truy cập thành công đến máyVictim với quyền root và mở được file trên máy Victim.
telnet <IP victim> <cổng dịch vụ>
cat /root/filetoview.txt
Khai thác dịch vụ distccd (cổng 3632) Khởi chạy trình điều khiển Metasploit là “msfconsole” Tìm và tấn công dịch vụ distccd
Dùng 2 lệnh sau để tìm kiếm và xem option: options search distccd
sử dụng công cụ khai thác “exploit”
use exploit/unix/misc/distcc_exec
Đặt “RHOST”
set RHOST 192.168.1.2
Trang 12 Thực hiện khai thác lỗ hổng
Exploit
o Khai thác lỗ hổng IRC daemon (cổng 6667) Khởi chạy trình điều khiển Metasploit là
“msfconsole” Tìm và tấn công lỗ hổng unreal_ircd
search unreal_ircd
sử dụng công cụ khai thác “exploit”
use exploit/unix/irc/unreal_ircd_3281_backdoor
đặt “RHOST” nếu cần thiết và chạy khai thác lỗ hổng
Kết quả cần đạt được truy cập thành công đến máy Victim với quyền root
và mở được file trên máy Victim
Trang 13o Khai thác dịch vụ VSFtpd (cổng 21) Khởi chạy trình điều khiển Metasploit là
“msfconsole” Tìm và tấn công lỗ hổng vsftpd_234
search vsftpd_234
sử dụng công cụ khai thác “exploit”
use exploit/unix/ftp/vsftpd_234_backdoor
đặt “RHOST” nếu cần thiết và chạy khai thác lỗ hổng
Kết quả cần đạt được truy cập thành công đến máy Victim với quyền root
và mở được file trên máy Victim
o Khai thác dịch vụ Samba service (cổng 139) Khởi chạy trình điều khiển Metasploit là
“msfconsole” Tìm và tấn công lỗ hổng samba usermap_script
search usermap_script
sử dụng công cụ khai thác “exploit”
use exploit/multi/samba/usermap_script
Trang 14 đặt “RHOST” nếu cần thiết và chạy khai thác lỗ hổng
Kết quả cần đạt được truy cập thành công đến máy Victim với quyền root
và mở được file trên máy Victim
o Khai thác dịch vụ HTTP (cổng 80) Khởi chạy trình điều khiển Metasploit là
“msfconsole” Tìm và tấn công lỗ hổng php_cgi
search php_cgi
sử dụng công cụ khai thác “exploit”
use exploit/multi/http/php_cgi_arg_injection
đặt “RHOST” nếu cần thiết và chạy khai thác lỗ hổng
Kết quả cần đạt được truy cập thành công đến máy Victim với quyền root
và mở được file trên máy Victim
Trang 15o Khai thác dịch vụ Postgres (cổng 5432) Khởi chạy trình điều khiển Metasploit là
“msfconsole” Tìm và tấn công lỗ hổng postgres_payload
search postgres_payload
sử dụng công cụ khai thác “exploit”
use exploit/linux/postgres/postgres_payload
đặt “RHOST” nếu cần thiết và chạy khai thác lỗ hổng
Kết quả cần đạt được truy cập thành công đến máy Victim với quyền root
và mở được file trên máy Victim
Checkwork
Trang 16III Tìm hiểu chứng chỉ khóa công khai
Mục đích
Mục tiêu của bài lab là giúp sinh viên làm quen với chứng chỉ khóa công khai và cách sử dụng SSL/TLS
Yêu cầu đối với sinh viên:
Nắm được kiến thức về mạng máy tính và Linux Kiến thức về MAC, hàm băm
Trang 17Trình duyệt Firefox sẽ tự động mở và được sử dụng trong lab này.
Các mục từ #1 đến #4 cung cấp bốn bảng bạn cần điền thông tin Mỗi bảng có năm URL bắt đầu bằng
"https" Tiền tố này khiến giao thức SSL/TLS hoạt động, dẫn đến việc truyền một chứng chỉ PKI từ trang web tương ứng đến trình duyệt của bạn Bạn sẽ xem xét các chứng chỉ này
Đối với mỗi URL trong các bảng này, làm các bước sau đây:
1 Truy cập vào URL qua trình duyệt (sử dụng https làm tiền tố)
2 Nhấp vào biểu tượng ở phía bên trái của thanh địa chỉ
3 Chọn biểu tượng ‘>’ trong hộp thoại xuất hiện
4 Chọn More information từ cửa sổ pop-up
Trang 185 Chọn biểu tượng Security.
6 Chọn View Certificate từ cửa sổ mới
7 Chọn tab Details
Trang 198 Từ khu vực Certificate Fields, chọn trường được yêu cầu trong bảng.
9 Lấy thông tin từ khu vực Field Value và chuyển nó vào bảng
10 Chọn Close khi bạn hoàn thành việc xem chứng chỉ
Làm như vậy với các trang web trong bảng:
Facebook:
Trang 20Trang 21
Làm như vậy cho đến khi đủ các tran web trong bảng:
Trang 22Nhiệm vụ 2: Khám phá chứng chỉ của các trang web khác
Khi cố gắng truy cập các trang có https bằng http thì nó đều chuyển từ http sang https:
Sử dụng lệnh "ll" để liệt kê nội dung của thư mục
2. Yêu cầu đối với sinh viên:
Nắm được kiến thức về mã hóa khóa đối xứng và câu lệnh trên Linux
3. Nội dung thực hành
Chuẩn bị lab
- Khởi động lab:
Trang 23labtainer symkeylab
Các nhiệm vụ
Nhiệm vụ 1: Làm quen Mã hóa và giải mã một tệp tin (bất kỳ tệp tin nào)
Trong nhiệm vụ này, sinh viên chỉ cần làm quen với cú pháp của lệnh openssl
Thực hiện các bước sau:
1 Tạo một tệp tin văn bản với một số nội dung nhỏ bằng cách sử dụng một trình soạn thảo (ví dụ:leafpad) hoặc sử dụng kết hợp của lệnh echo và chuyển hướng (‘>’)
2 Để mã hóa tệp tin văn bản thành "cipher.txt", gõ:
openssl CIPHER -e -in plain.txt -out cipher.txt -K KEY -iv IV
thay thế:
- CIPHER bằng một thuật toán mã hóa cụ thể và chế độ CBC, ví dụ: aes-128-cbc (Để xem tất cả các tùy chọn, sử dụng "man enc")
- plain.txt là tên của tệp văn bản thô sinh viên vừa tạo
- cipher.txt là tên của tệp kết quả sẽ chứa văn bản đã được mã hóa
- KEY bằng một khóa đối xứng biểu diễn bằng hệ thập lục phân (tùy chọn của sinh viên)
- IV bằng một vectơ khởi tạo biểu diễn bằng hệ thập lục phân (tùy chọn của sinh viên)
Hãy chắc chắn sử dụng tùy chọn -K, và không phải tùy chọn -k Tùy chọn sau có thể không tạo ralỗi, nhưng có thể gây ra vấn đề sau này trong bài thực hành
3 Quan sát văn bản đã được mã hóa bằng cách sử dụng lệnh cat, more, less hoặc leafpad
Trang 244 Sinh viên đã thấy rằng tệp tin đã được mã hóa là những ký tự vô nghĩa và không hiển thị đúng
Để xem giá trị hex thực tế của văn bản đã mã hóa, nhập lệnh sau:
hexdump -C FILENAME
5 Liệt kê nội dung của thư mục bằng tùy chọn dài (tức là nhập "ls -l") để xem kích thước của tệp tin ban đầu và tệp tin đã được mã hóa
Kích thước file sau khi mã hóa đã lớn hơn
6 Sinh viên có thể giải mã tệp tin đã mã hóa bằng lệnh sau Hãy chắc chắn xuất ra một tệp văn bản mới và không ghi đè lên tệp tin văn bản gốc
openssl CIPHER -d -in cipher.txt -out plainmod.txt -K KEY -iv IV
7 So sánh văn bản đã giải mã với văn bản gốc bằng lệnh diff, như dưới đây (thay thế ORIGINAL
và UNENCRYPTED bằng tên tệp sinh viên đã sử dụng):
diff -a plain.txt plainmod.txt
Trang 25b Mã hóa tệp tin nps-logo.bmp bằng AES trong chế độ ECB (với tùy chọn aes-128-ecb) để tạo thành một văn bản đã được mã hóa (Đặt tên tệp mã hóa của sinh viên là "nps-logo_mod.bmp" [Vì chế độ ECB không yêu cầu vectơ khởi tạo, sinh viên không cần cung cấp vectơ khởi tạo.]
c Liệt kê nội dung của thư mục bằng tùy chọn long để xem kích thước của tệp tin logo ban đầu
và tệp tin đã được mã hóa
Kích thước ban đầu của nps-logo.bmp là 16782454 còn sau khi mã hóa là 16782464 lớn hơn ban đầu
d Sinh viên có thể hiển thị văn bản đã được mã hóa bằng cách khiến trình duyệt tin rằng tệp tin
đã mã hóa vẫn là một tệp tin hình ảnh hợp lệ Để làm điều này, sinh viên cần thực hiện một số
"tiền xử lý" nhỏ để làm cho tệp tin có thể xem được
Các hình ảnh BMP có một tiêu đề 54 byte thông báo cho trình xem hình ảnh về hình ảnh, chẳng hạn như kích thước hình ảnh và kích thước của nó Sinh viên cần thay thế tiêu đề BMP đã được
mã hóa trong văn bản đã mã hóa bằng một tiêu đề BMP hợp lệ từ nps-logo.bmp
Để thay thế 54 byte tiêu đề bằng một lệnh, thực hiện lệnh sau:
dd if=nps-logo.bmp of=nps-logo_mod.bmp bs=1 count=54 conv=notrunc
Trang 26e Sau khi sửa đổi tiêu đề, quay lại trình duyệt web và làm mới trang web để xem hình ảnh đã được mã hóa.
Đã có hình ảnh hiển thị
2 Chế độ CBC
a Mã hóa lại tệp tin nps-logo.bmp, nhưng lần này sử dụng chế độ CBC để tạo thành một văn bản
đã được mã hóa (với tùy chọn aes-128-cbc) [Lần này sinh viên cần cung cấp một vectơ khởi tạo.]
b Liệt kê nội dung của thư mục bằng tùy chọn long để xem kích thước của tệp tin văn bản đã mã hóa mà sinh viên vừa tạo
c Sử dụng lệnh dd đã được mô tả ở trên, sửa đổi tiêu đề của văn bản đã mã hóa mới để có cùng
54 byte như tệp tin BMP gốc
d Xem văn bản đã mã hóa bằng cách làm mới trang web trong trình duyệt
Trang 27c Sử dụng lệnh dd đã được mô tả ở trên, sửa đổi tiêu đề của văn bản đã mã hóa mới để có cùng
54 byte như tệp tin BMP gốc
d Xem văn bản đã mã hóa bằng cách làm mới trang web trong trình duyệt
4 Chế độ OFB
a Mã hóa lại tệp tin nps-logo.bmp, nhưng lần này sử dụng chế độ OFB (với tùy chọn ofb) [Sinh viên cần cung cấp một vectơ khởi tạo.]
Trang 28aes-128-b Liệt kê nội dung của thư mục bằng tùy chọn long để xem kích thước của tệp tin văn bản đã mã hóa mà sinh viên vừa tạo.
c Sử dụng lệnh dd đã được mô tả ở trên, sửa đổi tiêu đề của văn bản đã mã hóa mới để có cùng
54 byte như tệp tin BMP gốc
d Xem văn bản đã mã hóa bằng cách làm mới trang web trong trình duyệt
Nhiệm vụ 3: Lỗi lan truyền trong quá trình giải mã
Nhiệm vụ này sẽ giúp sinh viên hiểu khả năng của các chế độ mã hóa khác nhau trong việc khôi phục khi có lỗi Sinh viên sẽ mã hóa một tệp văn bản bằng hai chế độ khác nhau, thay đổi một bit duy nhất ở giữa tệp mã hóa, giải mã tệp bị hỏng và sau đó xem hiệu ứng của bit bị hỏng đối với tệp văn bản
1 Giới thiệu
a Liệt kê nội dung của thư mục bằng tùy chọn dài để sinh viên có thể xem kích thước của tệp declare.txt (tính bằng byte)
Sử dụng mục 18 của báo cáo, ghi lại kích thước của declare.txt
Tính số khối AES cần thiết để mã hóa declare.txt
2 Chế độ ECB
a Mã hóa declare.txt bằng AES-128 trong chế độ ECB (với tùy chọn aes-128-ecb)
b Mở tệp đã mã hóa bằng cách sử dụng ghex, như được hiển thị dưới đây, thay thế
ENCRYPTEDFILE bằng tên sinh viên đã chọn:
ghex ENCRYPTEDFILE
Trang 29c Chọn Edit > Goto Byte và nhập 0x1230 để đến gần giữa tệp đã mã hóa Sinh viên sẽ thấy
"0x1230" xuất hiện trong phần "Offset:" ở góc dưới bên trái của cửa sổ GHex, và con trỏ được tô sáng trên ký tự hex đầu tiên trong hai ký tự hex phản ánh giá trị được lưu trữ tại địa chỉ như trong hình minh họa sau
d Giải mã ciphertext mà không ghi đè lên tệp gốc
e Sử dụng lệnh diff (với tùy chọn "-a", như đã được hiển thị trước đó) để hiển thị những nơi tệp gốc khác với tệp được giải mã
Chỉ thay đổi 1 bit cũng thấy được sự thay đổi rõ ràng
3 Chế độ CBC
a Mã hóa tệp declare.txt một lần nữa bằng AES-128 trong chế độ CBC (với tùy chọn cbc)
Trang 30aes-128-b Sử dụng ghex một lần nữa để sửa đổi ciphertext ở cùng vị trí sao cho chỉ có một bit được thay đổi.
c Giải mã ciphertext mà không ghi đè lên tệp gốc
d Sử dụng lệnh diff (với tùy chọn "-a", như đã được hiển thị trước đó) để hiển thị những nơi tệp gốc khác với tệp được giải mã
Chỉ đổi 1 bit cũng lm thay đổi rất rõ ràng
Trang 31