TRANG TỔNG HỢP, PHÂN TÍCH TIN TỨC VỀ KH-CN

Artificial IntelligenceBig dataCyberSecurityPhân tích

ChatGPT: một công cụ kiểm thử bảo mật pentester khác nhau

Tại sao ChatGPT 3.5 có thể được thêm vào bộ tiện ích hàng ngày của bạn và nó có thể xử lý những tác vụ gì? Quan điểm của người thử nghiệm thâm nhập.

  1. Giới thiệu
  2. Điều kiện kiểm tra
  3. Các kịch bản sử dụng ChatGPT 3.5
    1. 3.1. “Tôi không đọc các trang trợ giúp”
    2. 3.2. “Tôi đã bị cấm sử dụng Google”
    3. 3.3. “Houston, chúng ta có vấn đề”
    4. 3.4. “Tôi có thể làm mọi thứ nhưng tôi lười”
  4. kết luận

Giới thiệu

Hiện nay ngày càng có nhiều thông tin về các lĩnh vực ứng dụng trí tuệ nhân tạo đa dạng nhất với vai trò trợ lý trong công việc. Khả năng tạo văn bản và đồ họa sáng tạo của AI thật đáng kinh ngạc, nhưng trong lĩnh vực thử nghiệm thâm nhập, những khả năng này thường chỉ được xem xét ở khía cạnh chuẩn bị nội dung cho các cuộc tấn công lừa đảo. Vì vậy, điều thú vị là có những cách nào để áp dụng AI vào công việc hàng ngày của người thử nghiệm thâm nhập.

Trong vài tuần qua, tôi đã cố gắng sử dụng sức mạnh của ChatGPT để giải quyết nhiều vấn đề khác nhau thường gặp khi tiến hành thử nghiệm thâm nhập.

Đối với bài viết, theo tôi, điều thú vị nhất là các kịch bản tương tác với chatbot đã được chọn.

Điều kiện kiểm tra

Tất cả các ví dụ đưa ra đều áp dụng cho GPT 3.5. Phiên bản này được cung cấp miễn phí (sau một số thao tác để khắc phục hạn chế kết nối từ lãnh thổ Liên bang Nga). Mô tả về cách truy cập rất dễ tìm và không gây ra bất kỳ khó khăn nào. Cũng cần lưu ý rằng GPT 3.5 đã quen thuộc với dữ liệu kể từ tháng 9 năm 2021.

Để tương tác với chatbot, nên sử dụng tin nhắn giới thiệu – nhắc nhở. Điều này là cần thiết để cung cấp cho chatbot bối cảnh cần thiết và tránh những câu trả lời tưởng tượng cho câu hỏi của chúng ta càng nhiều càng tốt. Trong tất cả các ví dụ tôi đã sử dụng lời hứa từ một tệp đang mở trên GitHub với một chút điều chỉnh để nhận được câu trả lời bằng tiếng Nga. Đây chỉ là nguồn tài nguyên đầu tiên với bộ mặt hàng công nghiệp mà tôi đã xem qua. Có lẽ có một cái gì đó tốt hơn. Tôi sẽ không đưa ra nội dung của lời hứa, người ta cho rằng trước mỗi câu hỏi tôi sẽ lặp lại chúng.

Các kịch bản sử dụng ChatGPT 3.5

Để kiểm tra khả năng của chatbot, tôi đã chọn một số tình huống ứng dụng:

  1. “Tôi không đọc tin nhắn trợ giúp” – hãy thử lấy văn bản lệnh từ chatbot dựa trên yêu cầu bằng lời nói.
  2. “Tôi đã bị cấm sử dụng Google” – chúng tôi hỏi AI về nhiều chủ đề khác nhau.
  3. “Houston, chúng tôi gặp sự cố” – chúng tôi sẽ sử dụng kiến ​​thức về chatbot để giải quyết vấn đề cài đặt và khởi chạy các tiện ích cần thiết.
  4. “Tôi có thể làm được nhưng tôi lười” – hãy chuyển công việc viết code sang AI.

“Tôi không đọc các trang trợ giúp”

Để khởi động, hãy thử thu thập các tùy chọn cần thiết của tiện ích Nmap (thẩm quyền giải quyết).

Lời yêu cầu:

Viết lệnh quét đoạn 192.168.0.0/24 bằng tiện ích nmap. Yêu cầu về điều kiện quét:

  1. Quét 1000 cổng TCP phổ biến nhất
  2. Báo cáo chỉ hiển thị các cổng mở
  3. Cần xác định loại dịch vụ và phiên bản của hệ điều hành
  4. Loại trừ địa chỉ 192.168.0.200 và 192.168.0.145 khỏi vùng quét
  5. Giao diện gửi đi để quét – eth1
  6. cổng đi – 53
  7. Lưu kết quả quét vào thư mục hiện tại trong file báo cáo ở định dạng grep

Trả lời:

nmap -p 1-1000 --top-ports 1000 --open --exclude 192.168.0.200,192.168.0.145 --min-rate 500 --max-retries 1 --reason -sS -sV -O -e eth1 -g 53 -oG report 192.168.0.0/24

Hình 1. Kết quả của yêu cầu ban đầu để thu thập các tùy chọn cần thiết của tiện ích Nmap

Kết quả của yêu cầu ban đầu để thu thập các tùy chọn cần thiết của tiện ích Nmap

Chatbot đã sử dụng chính xác các tùy chọn cần thiết của tiện ích Nmap, nhưng như một phần thưởng, nó quyết định cung cấp một số tùy chọn, bao gồm cả việc quét một nghìn cổng đầu tiên, điều này hoàn toàn trái ngược với yêu cầu.

Nói chung, câu trả lời là thất bại. Việc quét một loạt cổng không cần thiết trong một số trường hợp có thể cực kỳ quan trọng và rõ ràng là không đáp ứng được yêu cầu của chúng tôi.

Hãy thử lại lần nữa.

Lời yêu cầu:

я перехватил хэш пользователя:
[SMB] NTLMv2-SSP Client : fe80::20cf:6526:bee:9684 [SMB] NTLMv2-SSP Username : HYDRA\joker [SMB] NTLMv2-SSP Hash : joker::HYDRA:9f52888781fdb710:82133ACF2BE569C05A6C0E8EAFFA2FDF:010100000000000080ED1B5B9276D9016179853B157C4794000000000200080037004A0059004A0001001E00570049004E002D00530038003800480059003600500035005A003500370004003400570049004E002D00530038003800480059003600500035005A00350037002E0037004A0059004A002E004C004F00430041004C000300140037004A0059004A002E004C004F00430041004C000500140037004A0059004A002E004C004F00430041004C000700080080ED1B5B9276D90106000400020000000800300030000000000000000000000000200000DDE19AE5910314964DB82F89AA73F044B85EE358147BA13A6C468AA3CFBC3D970A001000000000000000000000000000000000000900100063006900660073002F004400430032000000000000

viết lệnh khôi phục mật khẩu từ hàm băm bằng tiện ích hashcat và từ điển dic.txt

Trả lời:

hashcat -m 5600 -a 0 -o cracked.txt <hash_file> dic.txt

Hình 2. Kết quả khi yêu cầu lại

Kết quả khi yêu cầu lại

Không tệ! Chatbot đã nhận dạng chính xác loại băm (NetNTLMv2), áp dụng chính xác tất cả các tùy chọn, bao gồm cả việc đề nghị lưu mật khẩu tìm thấy vào một tệp (và nghĩ ra tên phù hợp cho nó).

Bản tóm tắt

Bạn có thể đưa mô tả bằng lời nói về các hành động cần thiết vào cuộc trò chuyện và kết thúc bằng một lệnh hoạt động, nhưng kết quả phải được kiểm tra. Bạn không thể tránh đọc tài liệu tham khảo và hướng dẫn sử dụng.

“Tôi đã bị cấm sử dụng Google”

Một vấn đề thường gặp: khi tìm kiếm thông tin qua các công cụ tìm kiếm, câu trả lời mong muốn không có ở liên kết đầu tiên. Hơn nữa, có thể câu trả lời mong muốn sẽ phải được thu thập từ một số nguồn từ kết quả tìm kiếm. Hãy xem liệu chatbot có thể tiết kiệm thời gian của chúng ta hay không.

Lời yêu cầu:

Làm cách nào tôi có thể kết nối với máy chủ Redis? Viết lệnh kết nối từ kali linux, viết lệnh client hỗ trợ.

Trả lời: xem hình. 3.

Hình 3. Kết quả chọn lệnh kết nối từ Kali Linux tới Redis

Kết quả chọn lệnh kết nối từ Kali Linux tới Redis

Tuyệt vời, một câu trả lời khá đầy đủ thông tin cho câu hỏi được hỏi!

Phức tạp hơn một chút:

Những tiện ích nào có thể được sử dụng để kết nối với máy chủ ldap nhằm lấy thông tin về cấu trúc ActiveDirectory? Viết một số ví dụ về tiện ích cho Linux.

Trả lời: xem hình. 4.

Hình 4. Kết quả yêu cầu tài nguyên kết nối với máy chủ

Kết quả yêu cầu tài nguyên kết nối tới máy chủ

Tất nhiên, đây chỉ là vấn đề sở thích, nhưng tôi mong đợi được thấy trong danh sách ldapdomaindump. Bằng cách này hay cách khác, phản hồi cũng chứa các lệnh để thực hiện thay đổi đối với các mục nhập cơ sở dữ liệu LDAP – chúng tôi không yêu cầu điều này.

Đồng thời, chatbot biết về tiện ích LDADPomainDump và hiểu mục đích sử dụng của nó.

Hình 5. Chatbot chia sẻ kiến ​​thức về tiện ích LADPomainDump

Chatbot chia sẻ kiến ​​thức về tiện ích LDADPomainDump

Dưới đây là một số ví dụ khác về phản hồi của chatbot đối với các yêu cầu khác nhau.

Hình 6. Phản hồi yêu cầu kết nối cơ sở dữ liệu

Phản hồi yêu cầu kết nối cơ sở dữ liệu

Hình 7. Đặc điểm tấn công

Các đòn tấn công đặc trưng

Hình 8. Mô tả xác nhận lỗ hổng SSRF

Mô tả xác nhận lỗ hổng SSRF

Bản tóm tắt

Việc thay thế các công cụ tìm kiếm truyền thống bằng ChatGPT sẽ giúp bạn nhận được thông tin ở dạng tập trung và loại bỏ nhu cầu nghiên cứu một số tài nguyên để thu thập dữ liệu cần thiết.

Xin lưu ý rằng phản hồi ChatGPT là “ý kiến ​​chuyên gia” của chatbot. Nếu bạn không thể đánh giá tính chính xác của thông tin nhận được, hãy kiểm tra câu trả lời ở các nguồn khác.

“Houston, chúng ta có vấn đề”

Trong quá trình thử nghiệm thâm nhập nội bộ, tôi thường phải sử dụng máy trạm do khách hàng cung cấp. Hậu quả là các vấn đề xảy ra khi cài đặt các tiện ích cần thiết trong môi trường không chuẩn.

Trong một lần thử nghiệm, đã xảy ra sự cố khi cài đặt tiện ích Bên trên,được thiết kế để phân tích lưu lượng mạng và phát hiện các giao thức mạng có khả năng bị tấn công.

Hướng dẫn cài đặt tiện ích bao gồm một dòng:

pip3 install -r requirements.txt

Điều gì có thể xảy ra?

Hãy gửi nội dung lỗi đã nhận tới ChatGPT.

Hình 9. Phân tích lỗi nhận được từ chatbot

Phân tích lỗi nhận được từ chatbot

Hãy thử tùy chọn cài đặt nó trong môi trường ảo Python riêng biệt.

Hình 10. Hướng dẫn tổ chức môi trường ảo Python từ chatbot

Hướng dẫn từ chatbot tổ chức môi trường ảo Python

Chúng ta làm theo hướng dẫn của chatbot. Khi chúng tôi cài đặt thêm các phần phụ thuộc từ tệp “requirements.txt”, chúng tôi sẽ gặp lỗi.

Hình 11. Mô tả lỗi nhận được khi cài đặt các phần phụ thuộc

Mô tả lỗi nhận được khi cài đặt phụ thuộc

Chúng tôi xóa dòng “quy trình con” khỏi tệp “requirements.txt” và sau đó quá trình cài đặt hoàn tất mà không có lỗi.

Chúng tôi kiểm tra hoạt động của chương trình và khi bắt đầu, chúng tôi gặp lỗi, mô tả trong đó cho biết mô-đun “pyshark” bị thiếu. Chúng tôi sẽ gửi văn bản lỗi tới cuộc trò chuyện.

Hình 12. Thông báo về mô-đun bị thiếu “pyshark”

Chatbot nói rằng để chạy tiện ích Above, bạn cần có quyền siêu người dùng, nhưng chúng tôi đã cài đặt tất cả các mô-đun cho Above để hoạt động trong môi trường ảo, trong bối cảnh của người dùng thông thường.

Để giải quyết vấn đề, chatbot đề xuất chạy Python thông qua “sudo” cho biết đường dẫn đầy đủ đến tệp “python3” trong môi trường ảo của chúng tôi.

Nó hoạt động! Tiện ích trên khởi động thành công.

Bản tóm tắt

Theo tôi, trường hợp sử dụng ChatGPT này là thú vị nhất.

Các sự cố do lỗi phần mềm, không tương thích gói, v.v. luôn xuất hiện bất ngờ và thường không có thời gian để đọc kỹ tài liệu và tìm kiếm giải pháp trên các diễn đàn.

Tất nhiên, chatbot sẽ không đưa ra câu trả lời hoàn hảo từ câu hỏi đầu tiên – nhưng tần suất chúng ta có thể nhận được câu trả lời như vậy sau khi truy vấn trên công cụ tìm kiếm hoặc tạo chủ đề mới trên diễn đàn? Một lợi thế nữa của chatbot là sự kiên nhẫn không giới hạn trong việc giải thích tất cả các câu hỏi phát sinh trong thời gian thực.

“Tôi có thể làm mọi thứ nhưng tôi lười”

Để giải quyết vấn đề khi vận hành các tiện ích yêu thích của bạn trên các máy trạm tạm thời, bạn có thể sử dụng công nghệ Docker.

Hãy tạo một Docker container để chạy các ứng dụng CrackMapExecKerbrutđ. Chúng tôi sẽ xuất bản vùng chứa kết quả trong trung tâm Docker công khai. Do đó, bạn có thể sử dụng hình ảnh làm sẵn và không lãng phí thời gian cài đặt các tiện ích với tất cả các phụ thuộc.

Hãy xây dựng nhiệm vụ cho ChatGPT theo kịch bản sau. Hãy xem hướng dẫn cài đặt các tiện ích từ trang của họ trên GitHub. CrackMapExec cung cấp một số tùy chọn cài đặt – chúng tôi sẽ chọn tùy chọn bằng cách sử dụng Thơ và thêm hướng dẫn cài đặt nó vào văn bản yêu cầu. Cài đặt Kerbrute yêu cầu gói “go”. Chúng tôi cũng sẽ tính đến điều này trong yêu cầu của chúng tôi.

Hướng dẫn cài đặt Kerbrute đề xuất sử dụng lệnh sau:

go get github.com/ropnop/kerbrute

Lệnh “go get” không còn được hỗ trợ, bạn phải sử dụng “go install”. Hãy để dòng này không thay đổi. Hãy xem ChatGPT giải quyết vấn đề này như thế nào nhé.

Lời yêu cầu:

Có một nhiệm vụ để khởi chạy hai ứng dụng trong Docker:

Crackmapexec

Hướng dẫn cài đặt:

  1. cuộn tròn -sSL https://install.python-poetry.org | trăn3 –
  2. cài đặt apt-get -y libssl-dev libffi-dev python-dev-is-python3 build-essential
  3. bản sao git https://github.com/Porchetta-Industries/CrackMapExec
  4. cd CrackMapExec
  5. thơ cài đặt

Kerbrute

Hướng dẫn cài đặt:

  1. cài đặt apt-get -y golang
  2. đi lấy github.com/ropnop/kerbrute

Soạn văn bản dockerfile

Hình 13. Kết quả truy vấn

Kết quả truy vấn

Tuyệt vời, chatbot đã tạo văn bản cho Dockerfile kèm theo nhận xét về các lệnh được sử dụng.

Thu thập hình ảnh –

sudo docker build -t pentools 

– và chúng tôi gặp lỗi khi thực hiện lệnh “cài đặt thơ”. Để thực thi lệnh này, hệ thống cần biết vị trí của nhị phân Poetry.

Hãy gửi văn bản lỗi đến chatbot.

Hình 14. Văn bản lỗi

Văn bản lỗi

Để khắc phục lỗi, chatbot đề xuất thêm vị trí của tệp thực thi Thơ vào biến “PATH”.

Hình 15. Giải pháp Chatbot

Giải pháp Chatbot

Lần biên dịch Dockerfile tiếp theo không thành công với lỗi dự kiến ​​khi chạy lệnh “go get github.com/ropnop/kerbrute”. Chúng tôi gửi lỗi đến cuộc trò chuyện.

Hình 16. Phản ứng của Chatbot trước sai lầm của chính mình

Phản ứng của Chatbot trước sai lầm của chính mình

Phiên bản thứ ba của Dockerfile biên dịch không có lỗi.

Hãy khởi động container –

sudo docker run -it pentools

– và kiểm tra hoạt động của các tiện ích.

Để chạy CrackMapExec bạn cần vào thư mục chứa chương trình.

Hình 17. Khởi chạy tiện ích CrackMapExec

Khởi chạy tiện ích CrackMapExec

Tiện ích CrackMapExec đang hoạt động.

Chúng tôi kiểm tra hoạt động của Kerbrute và nhận được lỗi:

root@466e55c96ca7:/CrackMapExec# kerbrute
bash: kerbrute: command not found

Lỗi xảy ra do thiếu đường dẫn đến tệp thực thi Kerbrute trong biến môi trường “PATH”. Bạn có thể tự mình khắc phục lỗi nhưng hãy cùng tìm hiểu ý kiến ​​của ChatGPT nhé.

Hình 18. Phản ứng của Chatbot khi có lỗi

Phản ứng của chatbot khi có lỗi

Chúng tôi nhận được Dockerfile có tính đến các bản sửa lỗi cần thiết.

Hình 19. Dockerfile cuối cùng

Tệp Docker cuối cùng

Sau những chỉnh sửa cuối cùng, thùng chứa đã được lắp ráp mà không gặp bất kỳ lỗi nào. Tiện ích khởi chạy chính xác.

Hãy cùng kiểm tra chức năng của các tiện ích tại gian hàng nhé.

Hình 20. Kiểm tra hoạt động của tiện ích CrackMapExec

Kiểm tra hoạt động của tiện ích CrackMapExec

Hình 21. Kiểm tra Kerbrute

Kiểm tra Kerbrute

Và bước cuối cùng là đặt hình ảnh của chúng ta vào trung tâm công cộng Người đưa tin:

sudo docker login --username=<имя пользователя hub.docker.com>  #логинимся в сервисе hub.docker.com для публикации образа
sudo docker tag mytool <имя пользователя hub.docker.com>/mytool # назначаем нужный нам тэг для образа, который получили из нашего докер файла
sudo docker push  <имя пользователя hub.docker.com>/mytool   #публикуем образ в репозитории

Trong tương lai, để tải xuống hình ảnh từ kho lưu trữ của bạn, bạn sẽ cần sử dụng lệnh sau:

sudo docker pull  <имя пользователя hub.docker.com>/mytool

Bản tóm tắt

ChatGPT có thể hỗ trợ viết nhiều loại tập lệnh: tham gia gỡ lỗi và viết cấu trúc tập lệnh nháp để tối ưu hóa sau này. Cần lưu ý rằng việc hiểu chủ đề và kiểm tra code nhận được từ chatbot sẽ giúp tránh được những lần lặp lại không cần thiết khi debug.

kết luận

Bất chấp những hạn chế đã biết của phiên bản ChatGPT 3.5 miễn phí, chức năng sẵn có cho phép sử dụng chatbot trong một số lượng lớn các hoạt động hàng ngày của pentester.

Nếu bạn muốn giải quyết vấn đề của mình bằng cách tìm kiếm trên Internet hoặc đặt câu hỏi trên một diễn đàn chuyên ngành, trước tiên hãy thử tìm hiểu giải pháp từ ChatGPT. Rất có thể chatbot sẽ giúp bạn tiết kiệm thời gian.