Home > System Penetration Testing > Tấn công và phòng thủ hệ thống (Phần 3)

Tấn công và phòng thủ hệ thống (Phần 3)


II. SCANNING & ENUMERATION

Quá trình Scanning cũng thực chất là tiếp tục quá trình thu tập thông tin về hệ thống nhưng lúc này hacker đã tác động trực tiếp đến máy chủ mà hacker cần tấn công.

Với kết quả có được từ footprinting hệ thống hacker đã xác định được hai thông tin quan trọng nhất là địa chỉ (hoặc dãy địa chỉ) IP và hostname (địa chỉ IP và hostname là gì thì các bạn tự tìm hiểu !!!).

Quá trình Scanning có thể được chia thành các bước sau:

Xác định hệ thống có đang “sống” hay không ? —> Kiểm tra các port nào đang mở —> Xác định những dịch vụ nào đang chạy tương ứng với cổng đang mở —> Xác định banner của từng dịch vụ và hệ điều hành và phiên bản của nó –> Kiểm tra lỗi của những dịch vụ đang chạy –> Xây dựng sơ đồ những host bị lỗi —> Chuẩn bị một proxy tốt và tấn công.

1) Ping Sweep

Xác định hệ thống đang “sống” hay không rất quan trọng vì có thể hacker ngừng ngay tấn công khi xác định hệ thống đó đã “chết”. Việc xác định hệ thống có “sống” hay không có thể sử dụng kỹ thuật Ping Scan hay còn gọi với tên là Ping Sweep. Bản chất của quá trình Ping Sweep là gì ? Bản chất của quá trình này là gửi một ICMP Echo Request đến máy chủ mà hacker đang muốn tấn công và mong đợi một ICMP Reply. (Giao thức ICMP là gì ? Và nó có tác dụng như thế nào ? Các bạn tự tìm hiểu nhé !).

Đa số các firewall thì luôn luôn chặn Ping do vậy việc phòng chống Ping Sweep rất dễ dàng. Lý do chặn ICMP ngoài việc chống Ping Sweep ra thì theo seamoun cũng nên chặn ICMP nếu như có firewall nào mà chưa chặn bởi vì hacker cũng có thể lợi dụng ICMP để đưa backdoor trên giao thức này.

Công cụ có sẵn là sử dụng lệnh ping có sẵn trên Windows hoặc Linux hoặc sử dụng những chương trình chuyên dụng sau :

Pinger, Friendly Pinger, và WS Ping Pro , Hping2. Trong những công cụ Pinger, WS Ping Pro thì mình thích nhất là Hping2 vì nó có nhiều tùy chọn cũng như nó có thể detect được host đó còn “sống” hay “chết” cho dù firewall có chặn ICMP

2) Scan Port

Như đã đề cập ở trên công việc tiếp theo sau khi Ping Sweep là Scan Port và xác định những cổng đang mở và từ đó xác định dịch vụ đang chạy là gì ? Phiên bản nào ? … Thông thường thì các chương trình Scan Port có sẵn những tùy chọn kết hợp sẵn việc scan cổng và xác định dịch vụ đang chạy cũng như phiên bản tương ứng. Những công cụ Scan Port thì rất nhiều và mỗi công cụ có một thế mạnh riêng của nó. Công cụ Scan Port nổi tiếng mà nhiều bài viết trong HVA cũng đã đề cập đó là Nmap. Trong phần này seamoun sẽ đề cập những phần chính liên quan đến Nmap, những tùy chọn hoặc những tính năng khác của Nmap thì các bạn tự tìm hiểu ! Yêu cầu của phân này là bạn phải hiểu được các giao thức TCP, UDP và cấu trúc của một packet khi một máy tính gửi đến máy tính khác trên mạng. Sở dĩ Nmap được sử dụng rộng rãi bởi vì nó các phiên bản tương ứng với các OS khác nhau (Unix, Linux, Windows). Nmap hỗ trợ nhiều kỹ thuật scan port bao gồm các kỹ thuật như : TCP, XMAS, SYN, Null Scan, Windows Scan, ACK Scan.

a) TCP Scan

Kỹ thuật TCP Scan tức là Nmap sẽ kiểm tra cổng trên hệ thống đích có mở hay đóng bằng cách thực hiện kết nối TCP đầy đủ. Thực hiện kết nối TCP đầy đủ tức là sao ?. Tức là khi một máy tính A kết nối và gửi dữ liệu đến máy B qua giao thức TCP thì máy tính A và B phải thực hiện cơ chế “bắt tay” 3 bước trước khi truyền dữ liệu. Giả sửa máy A có IP = 192.168.1.2 và máy tính B có IP = 192.168.1.3. Máy tính A muốn kết nối máy tính B qua giao thức

TCP thì sẽ thực hiện qua các bước sau:

1) A (192.168.1.2)— gửi SYN packet —–> B (192.168.1.3)

2) A (192.168.1.2)<– gửi SYN/ACK packet —B (192.168.1.3)

3) A (192.168.1.2)— gửi ACK packet ——>B (192.168.1.3)

Demo sau sẽ cho bạn thấy rõ cơ chế này. Trong ví dụ này máy tính A có IP 192.168.1.2 và máy tính B có IP 192.168.1.8

Demo thứ 2

Sử dụng Nmap để thực hiện Port Scan với kỹ thuật TCP Scan.

Địa chỉ IP đích: 192.168.1.8. Mở cổng TCP 7799

Địa chỉ IP nguồn: 192.168.1.6 (Sử dụng nmap để scan).

Tùy chọn của nmap để thực hiện TCP Scan là : -sT.

Ví dụ bạn muốn Port Scan một máy tính có địa chỉ IP 192.168.1.8 với kỹ thuật

TCP Scan : nmap -sT 192.168.1.8 hoặc nmap 192.168.1.8 -sT. Trong demo này Seamoun sử dụng netcat để listen TCP với port 7799 và sử dụng nmap để kiểm tra port đó có open hay close.

Nếu trong ví dụ sau mà port 7799 close thì khi thực hiện quét bằng Nmap thì sau khi nmap gửi SYN packet đến IP:192.168.1.8. Vì IP=192.168.1.8 không mở port 7799 nên nó sẽ gửi Packet với cờ TCP (ACK và RST được bật) đến IP 192.168.1.6 (đang sử dụng nmap để scan).

b) SYN, XMAS, FIN, NULL, IDLE Scan

+ SYN hoặc còn gọi là Stealth được gọi là kỹ thuật quét bán mở bởi vì nó không hoàn tất bắt tay ba bước của TCP (3 bước xác lập kết nối đã giới thiệu ở trên).

Một hacker gửi một SYN đến đích, nếu một SYN/ACK được nhận trở lại thì nó hoàn tất việc scan và xác địch port đang mở. Nếu một RST được nhận trở lại từ đích nghĩa là cổng đóng.

Những cờ như SYN, ACK, RST mà seamoun đã đề cập cho đến thời điểm này, vậy nó là gì ? Nó có tác dụng gì trong kết nối ?Ở đây seamoun chỉ giới thiệu chức năng của những cờ này trong packet TCP. Bởi vì TCP là một giao thức kết nối, do vậy nó cần những cờ để xác lập quá trình thiết lập cho một kết nối, việc khởi động lại một kết nối thất bại và hoàn tất một kết nối là một phần của giao thức.

Những cảnh báo của giao thức này là được gọi là các cờ (flags). TCP có các cờ là ACK, RST, SYN, URG, PSH và FIN.

Và ý nghĩa của nó như sau:

1) SYN-Synchronize. Khởi tạo một kết nối giữa các host.

2) ACK-Acknowledge. Thiết lập kết nối giữa các host.

3) PSH-Push. Hệ thống đang chuyển tiếp dữ liệu từ bộ nhớ đệm.

4) URG-Urgent. Dữ liệu trong packet cần phải được sử lý nhanh.

5) FIN-Finish. Không có sự trao đổi nào nữa.

6) RST-Reset. Reset lại kết nối.

Các bạn có thể xem thêm tại http://www.faqs.org/rfcs/rfc793.html)

Để thực hiện kỹ thuật scan SYN thì làm như sau: nmap -sS 192.168.1.3 hoặc nmap 192.168.1.3 -sS

Trở lại vấn đề về các kỹ thuật Scan. Kỹ thuật tiếp theo mà seamoun giới thiệu có trong Nmap Scan là

+ XMAS Scan là gửi gói tin với ba cờ được thiết lập FIN, URG, PSH. Nếu cổng mở thì không có sự phản hồi nào, nhưng nếu cổng đóng thì nó phản hồi với RST/ACK.

XMAS chỉ làm việc Unix không làm việc trên Windows.

Để thực hiện kỹ thuật scan XMAS thì làm như sau: nmap -sX 192.168.1.3 hoặc nmap 192.168.1.3 -sX

+ FIN Scan giống như XMAS Scan những chỉ với cờ FIN được thiết lập.

FIN cũng nhận phản hồi như XMAS Scan, nếu không có phản hồi thì tức cổng mở, mà có phản hồi RST/Ack thì cổng đóng

Để thực hiện kỹ thuật scan FIN thì làm như sau: nmap -sF 192.168.1.3 hoặc nmap 192.168.1.3 -sF

+ NULL Scan cũng như XMAS và FIN nó send với tất cả các cờ là tắt.

Để thực hiện kỹ thuật scan NULL thì làm như sau: nmap -sN 192.168.1.3 hoặc nmap 192.168.1.3 -sN

+ IDLE scan là sử dụng địa chỉ IP giả để gửi SYN đến hệ thống đích.

Phụ thuộc vào sự phản hồi , cổng được xác định là mở hoặc đóng.

IDLE scan xác định cổng scan dựa trên việc quan sát gói tin IP sequence numbers

Để thực hiện kỹ thuật scan IDLE thì làm như sau: nmap -sI 192.168.1.3 hoặc nmap 192.168.1.3 -sI

Demo 3

Địa chỉ IP đích: 192.168.1.3

Địa chỉ IP sử dụng Nmap: 192.168.1.6

Trong phần demo này mình sử dụng máy đích chạy Linux và listen port 7799. Sở dĩ seamoun chọn Linux vì một số kỹ thuật scan chỉ có thể thực hiện trên Linux không thể thực hiện trên Windows. Do vậy chạy Linux để demo tất cả trường hợp.

Các bạn sẽ thấy trong demo khi port 7799 mở (đóng) thì với kỹ thuật scan SYN, FIN, XMAS, NULL các cờ sẽ bật (tắt) khác nhau và phản hồi khác nhau.

c) Giới thiệu IDLE Scan

Mỗi IP packet được gửi trên mạng có một số duy nhất được gọi là fragment identification (gọi là IPID). Kỹ thuật thuật scan IDLE dựa vào đặc điểm của IPID này mà xác định một cổng đóng hay mở. Và lợi dụng một máy thứ 3 làm trung gian để thực hiện.

Vậy kỹ thuật IDLE Scan được thực hiện như thế nào ? Các bước thực hiện IDLE Scan làm sao ?

Nhắc lại phương thức kết nối TCP

Như seamoun đã giới thiệu và demo ở phần TCP với kết nối đầy đủ thì một cổng được gọi “open” khi một client gửi đến đích với SYN packet trên cổng thích hợp. Nếu cổng đó mở thì nó sẽ gửi trở lại với packet SYN/ACK và nếu cổng đó đóng nó sẽ gửi lại RST.

Giả sử ta có một máy chủ abc.com và đích mà hacker cần scan là server.com.

Bước 1: Hacker thực hiện một kết nối SYN/ACK packet đến abc.com và quan sát IPID

Và hiển nhiên máy chủ abc.com sẽ gửi lại RST packet và ta cũng biết được IPID . Ví dụ IPID cho trường hợp này là 33668.

Bước 2: Sau đó hacker sẽ thực hiện gửi packet đến server.com với địa chỉ IP giả là máy chủ abc.com. Và hiển nhiên máy chủ server.com sẽ gửi lại cho máy chủ abc.com

với SYN/ACK được bật và máy chủ abc.com sẽ gửi RST packet trong trường hợp server.com mở cổng mà hacker đang cần kiểm tra. Giả sử trong trường hợp này cổng mở thì khi abc.com gửi RST packet đi thì nó sẽ tăng IPID lên 1. Vậy lúc này IPID có giá trị 33669. Và sẽ không tăng IPID nếu như cổng cần kiểm tra đóng.

Bước 3: Hacker thực hiện gửi SYN/ACK đến abc.com và kiểm tra thử IPID lúc này là bao nhiêu. Nếu như IPID mới bằng IPID cũ + 2 tức là cổng đó mở và ngược

lại thì cổng cần kiểm tra đó đóng.

Mô hình minh họa

Bước 1: Thăm dò IPID

Kẻ tấn công —- >gửi packet (SYN/ACK) ————————–> abc.com

Kẻ tấn công <— gửi packet (RST. Giả sử có IPID=33668)< ——–abc.com

Bước 2: Thực hiện gửi packet đến đích cần kiểm tra port với IP nguồn giả địa chỉ abc.com

Kẻ tấn công —-> gửi packet (SYN có địa chỉ IP nguồn là abc.com và cổng cần kiểm tra) —> server.com

Trường hợp cổng mở nó thực hiện như sau:

abc.com <—- gửi packet (SYN/ACK)<———————————————————– server.com

abc.com —–> gửi packet (RST có IPID=33669)———————————————–>server.com

Trường hợp cổng đóng nó thực hiện như sau

abc.com <—- gửi packet (RST)——————————————————————-server.com

Bước 3: Thăm dò lại IPID

Trong trường hợp cổng cần kiểm tra là mở thì

Kẻ tấn công —> gửi packet (SYN/ACK)—————————->abc.com

Kẻ tấn công <—- gửi packet (RST có IPID=33670)—————–abc.com

Trong trường hợp cổng cần kiểm tra đóng thì số IPID chỉ tăng lên 1

Kết luận: Cốt lõi của IDLE Scan tức là dựa vào sự quan sát IPID mà tăng không ngẫu nhiên để kết luận cổng đóng hay mở

Demo IDLE Scan

Đối với IDLE Scan trong nmap thì ta sử dụng tùy chọn : sI và lựa chọn một máy thứ 3 để làm trung gian như đã đề cập ở trên. Mặc định thì chương trình scan nối với máy trung gian trên port 80, các bạn có thể sửa đổi chúng bằng cách sử dụng <ip>:<chỉ định port>.

Trong demo máy chạy nmap để thực hiện scan có IP là : 192.168.1.6, máy trung gian có địa chỉ IP: 192.168.1.2, máy cần quét cổng (máy đích) có địa chỉ IP là 192.168.1.8. Giả sử cần kiểm tra port 7799 có mở hay không ? Thực hiện lệnh sau: nmap.exe -sI 192.168.1.2 192.168.1.8 -p 7799. Mặc định thì nmap sẽ nối đến máy trung gian port 80, có thể thay đổi cổng như sau: nmap.exe -sI 192.168.1.2:456 192.168.1.8 -p 7799.

Trong đoạn demo các bạn sẽ thấy nmap sẽ gửi nhiều SYN/ACK, mục đích của nó chỉ là kiểm tra xem thử IPID có tăng tuần tự hay không ? Do vậy để nhiều packet các bạn khó theo dõi nên seamoun đã tách ra những packet liên quan để các bạn dễ nhìn.

Toàn bộ demo của phần III các ban có thể download tại đây

About these ads
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: