CÁC BƯỚC TẤN CÔNG VÀ PHÒNG THỦ HỆ THỐNG MẠNG



Việc phòng chống xâm nhập của hacker đối với những người quản trị mạng, theo seamoun thì những người quản trị mạng phải đóng vai trò là người tấn công vào chính hệ thống mình. Đặt mình vào vị trí của người tấn công và suy nghĩ 
nếu mình là người tấn công mình sẽ làm gì, làm như thế nào, các bước tiến hành ra sao ???... Xâm nhập bằng một cách thì bảo vệ phải nghĩ ra 10 cách hoặc hơn . Thường thì phá dễ hơn làm mà. 

Sau đây là các bước thông thường mà hacker thực hiện đối với một hệ thống: 
Thu tập thông tin về hệ thống --> Scanning ---> Xâm nhập và có quyền điều khiển trên hệ thống --> Duy trì quyền điều khiển trên hệ thống ---> Xoá dấu vết. (<-- Biết rồi khổ lắm nói mãi !!!   ). Bài đầu tiên seamoun sẽ đề cập trực tiếp đến các cách thức thu tập hệ thống và demo sử dụng những công cụ mà seamoun rất thích khi thực hiện thu tập hệ thống (Công cụ cho mỗi phần rất rất nhiều, những công cụ seamoun demo là những công cụ seamoun cho là dế sử dụng và hiệu quả. Định viết dùng mà thấy nó viết hay quá nên dùng của nó cho rồi, viết làm gì cho mệt !!!! Để thời gian code cái khác kiếm money !!!). 

1. Thu tập thông tin hệ thống có thể phân ra làm hai loại

+ Thụ động (Passive Reconnaissance): theo seamoun thì có thể gọi bằng một cái tên mộc mạt là "cưỡi ngựa xem hoa hệ thống". Việc thu tập thông tin ở loại này là khảo sát sơ bộ tổ chức như là thông tin chung, vị trí địa lý, điện thoại, email của các cá nhân, người điều hành, ... trong tổ chức. Các bạn hỏi tại sao phải thu tập những thông tin như điện thoại, email của những người trong tổ chức này làm cái quái gì ? Nó sẽ rất hữu ích khi thực hiện social engineering attack (seamoun sẽ đề cập sau này). 

+ Chủ động (Active Reconnaissance) loại này thì thu tập trực tiếp những thông tin sát với hệ thống hơn như là (dãy) địa chỉ IP, domain, DNS
Lưu ý : Tất cả việc thu tập thông tin này rất quan trọng đối với hacker vì giúp hacker xác định những con đường nào mà dễ tấn công vào hệ thống nhất. Giống như đi tán gái vậy, tán trực tiếp "em gái" thì chỉ có bể đầu smilie smilie smilie. Phải khảo sát nhà em đó ở đâu, có bao nhiêu anh em, cha mẹ như thế nào, tìm hiểu sở thích em nó qua những người bạn thân của em gái đó ... (Nói sai chủ đề, để chủ đề này cho mấy Tú ông miền Nam và Bắc nói chắc siêu hơn seamoun smilie smilie smilie). 

Quá trình thu tập thông tin có thể mô tả thành 7 bước. (PHân loại chỉ mang tính chất tương đối). 
B1: Thu tập thông tin ban đầu 
B2: Xác định phạm vi của mạng. 
B3: Kiểm tra máy có "sống" không ? 
B4: Khám phá những cổng đã mở . 
B5: Nhận diện hệ điều hành. 
B6: Liệt kê những dịch vụ dựa trên các cổng mà đã kiểm tra. 
B7: Xây dựng một sơ đồ mạng 

Trong 7 bước trên thì bước 1, 2 được gộp lại và có tên gọi là footprinting. 
1.1 Công cụ đầu tiên mình giới thiệu phục vụ cho việc thu tập thông tin là Google. Nói đến Google thì không cần nói gì nhiều về khả năng tìm kiếm của nó và nếu đề cập chi tiết về Google Hacking thì nói cả ngày không hết. Ở đây seamoun chỉ nói những phần chính mà liên quan đến hacking. 

Một số kỹ thuật khi sử dụng google: sử dụng các kỹ thuật tìm kiếm nâng cao giúp bạn xác định rõ hơn về những thông tin mình cần quan tâm. Ví dụ: 

+ site:<domain>: tìm kiếm với việc chỉ định rõ website hoặc domain. Website mà muốn tìm kiếm phải được chỉ định rõ sau dấu “:”. Ví dụ ô text tìm kiếm gõ : site:vickigroup.com. và tiếp đến là từ khóa bạn muốn tìm, thì Google nó sẽ tìm kiếm những thông tin có chứa từ khóa và chỉ trong phạm vi domain vickigroup.com 

+ filetype:<phần mở rộng>: Tìm kiếm thông tin trong kiểu file mà mình mong muốn. Và khi thực hiện không kèm theo dấu ".". Bạn chỉ cần gõ filetype:txt nếu như kiểu file muốn tìm kiếm có phần mở rộng là .txt. Ví dụ filetype:txt là chỉ tìm trong file có phần mở rộng . 

+ link:<domain>: Tìm kiếm những site nào có chứa liên kết đến domain mà mình chỉ định. Ví dụ link:vickigroup.com. Thì nó sẽ ra những site có chứa liên kết đến vickigroup.com. 

+ cache:<domain>: Tìm kiếm trong cache của google. Cái này rất hay khi đọc các tutorial của các site mà khi đăng kí thành viên nó bắt trả tiền. Hê hê. Có thể xem trong cache khỏi tốn money. 

+ intitle: Nó sẽ tìm kiếm phần Title của document. 

+ inurl: Nó sẽ tìm kiếm trong phạm vi url. 
Việc kiếm hợp giữa các yếu tố tìm kiếm trên rất quan trọng, giúp hacker xác định rõ những thông tin và phạm vi mà mình quan tâm. 

Demo nhỏ sử dụng công cụ tìm kiếm Google.com. Seamoun sẽ sử dụng google để tìm kiếm những site nào đặt con backdoor web r57.php. 

Như các bạn thấy trong demo thì thấy rất nhiều site bị đặt backdoor r57.php quá !. pó tay !!! smilie smilie smilie. Tương tự các bạn có thể tìm lỗi khác bằng cách kết hợp các kỹ thuật tìm kiếm như mình đã nêu trên. 

1.2 Giai đoạn này tiếp cận gần hơn hệ thống mà mình cần quan tâm. Ví dụ trong tay mình có đích tấn công là domain abc.com. Vậy công việc của hacker sẽ làm gì tiếp theo ?. Có thể thực hiện các hành động sau 
+ Whois để tìm ra người chủ domain và các thông tin liên quan 
+ Thẩm vấn DNS. 
+ Xác định phạm vi của mạng với domain đó. 

Những khái niệm WHois là gì, DNS là gì, ... Seamoun đề nghị các bạn đọc thêm để biết, ở đây seamoun không trình bày những khái niệm này. 
Những công cụ liên quan đến đến vấn đề trên là rất rất nhiều tools. Ở đây Seamoun chia phần công cụ này làm 2 phần: phần 1 sử dụng nhưng công cụ đơn giản và phần 2 là sử dụng những công cụ chuyên dụng. 

Demo 1 sử dụng các công cụ
1. Trang web samspade.org 
2. nslookup của Windows 
3. Sử dụng http://arin.net/whois và http://ws.arin.net/whois/ <-- Thực chất thì cũng chẳng cần vào arin.net làm gì nếu các bạn nắm rõ range của IP được cấp phát cho từng vùng. Ở ví dụ sau IP là 210.245.31.22 thì có thể sử dụng ngay http://ws.arin.net/whois/ không cần đến http://arin.net/whois. Nhưng mình demo khi các bạn không biết nó nằm ở vùng nào thì cứ xuất phát từ http://arin.net/whois 

Demo 2 Sử dụng các công cụ
1. Smart Whois 
2. Necrosoft Advanced DIG 

Demo 3. Sử dụng NeoTracePro.

Nghỉ phát ! Phần thứ II mình sẽ giới thiệu về Social Engineering 

2. Social Engineering


Là phương thức tấn công đơn giản dựa trên yếu tố con người để xâm nhập vào hệ thống. 
Hình thức của Social Engineering được chia thành hai loại 

1. Humman-based: Tức là dựa trên khả năng giao tiếp của hacker đối với victim. Ví dụ như hacker có thể đóng giả một người chủ tài khoản và gọi điện đến ngân hàng để yêu cầu nhân viên ngân hàng cung cấp thông tin về tài khoản mà hacker có định chiếm đoạt. 

2. Computer-based: Tức là sử dụng phương tiện là máy tính để có được thông tin mà hacker mong đợi. Nó khác với hình thức ở trên là : 

Hình thức Humman-based có thể hacker đối thoại trực tiếp với victim hoặc các help desk ... để có được thông tin mình cần (phụ thuộc vào nghệ thuật giao tiếp, nói ngọt người ta dễ tin  ). Hình thức computer-based là sử dụng những phương tiên như là email, scam page để lừa victim. Ví dụ của hình thức Computer-based là hacker có thể tạo một email có đường link đến các scam page về bankaccount chẳng hạn, và khi victim đọc thì có thể bị dẫn đến những scam page và cung cấp những thông tin quan trọng cho hacker. Ngoài ra nó còn có một tên gọi cho hình thức này là phishing 

2.1 Humman-based nó có thể thuộc một trong những dạng sau 
+ Đóng giả là một nhân viên hợp lệ trong một tổ chức: Hacker có thể đóng giả một nhân viên hợp lệ trong tổ chức từ đó moi thông tin khi đang đóng vai trò là nhân viên đó. 

+ Đóng giả là một người quan trọng trong tổ chức (Ví dụ như sếp chẳng hạn). Ví dụ hacker đóng giả giám đốc một công ty A và gửi một message đến thư ký "Tôi là sếp ... Hoàng đây  ! Tôi bỏ quên điện thoại điện ở nhà nên tôi dùng số này, cô có thể gửi ...<thông tin quan trọng> ... đến số máy này !!!". Nói chung là trăm phương nghìn kế để nghĩ ra cách giả mạo. Chắc seamoun nghĩa bị lừa rồi mới biết chứ 1001 kiểu lừa không có kiểu lừa nào giống nhau cả. 

+ Đóng giả client gọi đến customer support: Ví dụ hacker muốn chiếm đoạt một domain nào đó nó có thể dùng email để phishing victim gửi thông tin quan trọng đó là hình thức social engineering computer-based. Hacker có thể đóng giả là người chủ domain gọi đến customer support và đưa ra những thông tin của victim mà hacker tìm được qua quá trình footprinting để xác nhận với người customer support sau đó có thể yêu cầu gửi password về email của hacker ... 

+ Shoulder surfing : Hình thức này có nghĩa là hacker "dòm" user hoặc admin đang gõ phím. Ví dụ như thư ký cho giám đốc làm nội gián chẳng hạn. Khà khà :-> 

+ Dumpster diving: Hình thức này có nghĩa là lục loại thông tin từ trash, ... để có được những thông tin quan trọng. Do vậy trên máy tính nên delete vĩnh viễn những tài liệu quan trọng. Nếu như backup tài liệu quan trọng thì cũng nên encrypt những tài liệu đó. 
Như đã đề cập ban đầu Social Engineering phụ thuộc vào yếu tố con người do vậy theo seamoun social engineering là con đường dễ nhất, đơn giản nhất mà hacker có thể sử dụng để có được những thông tin quan trọng. Hình thức tấn công này nó luôn tồn tại vì nó phụ thuộc vào yếu tố con người, nếu như một customer support hay là nhân viên trong tổ chức không được đề cập đến kiểu tấn công này, và trainning cho nhân viên cách cách phòng chống thì rất rất dễ bị tấn công bởi hình thức này. Nhìn thì đơn giản không cần kỹ thuật nhưng seamoun nghĩ những thằng hacker nào mà hack thành công nhờ social engineering thì nó là cao thủ về nghệ thuật giao tiếp cũng những giỏi về mấy trò viết thư dụ victim. Chắc cũng tán gái giỏi 

Không biết có ai trong HVA bị hình thức này tấn công không ? Chứ seamoun thì bị rồi, đóng giả anh JAL nói chuyện với mình ngon ơ, cách đây cũng phải 2 năm. Đoạn chat mất tiêu chứ không gửi lên đây cho mọi người xem cho vui. 

Khi thương mại điện tử phổ biến ở Việt Nam thì hình thức tấn công này chắc là sử dụng nhiều đây ! Cách phòng chống hữu hiệu nhất chỉ có trainning và trainning ... cho customer và staff biết và hiệu về social engineering attack. 

Ví dụ một email mà hacker dụ victim để có được bank account. Seamoun lấy từ trang web http://www.millersmiles.co.uk/). Công nhận la mấy thằng nước ngoài viết thư dụ có nghệ thuật dễ sợ. Hổng biết có ai bị mấy cái email tiếng việt viết dụ chưa gửi lên đây để anh em biết mà lường trước được sự việc. 
"We regret to inform you, that we had to lock your PayPal Access because we have reasons to believe that your account may have been compromised by outside parties." 

Dear member , 

We regret to inform you, that we had to lock your PayPal Access because we have reasons to believe that your account may have been compromised by outside parties. In order to protect your sensitive information, we temporaly suspended your account. 

To reactivate your account, click on the link below and confirm your identity by completing the secure form what will appear. 

https://www.paypal.com/us/cgi-bin/ webscr?cmd=_login-submit 

We have seen unusual attempts for logging in regarding your personal account, therefore this confirmation regarding your account its only for security reasons. 

Phần tiếp đến seamoun sẽ giới thiệu về Scanning và Enumeration !!! 

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 

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. 

3) Xác định dịch vụ và phiên bản tương ứng 
Với kết quả mà hacker có được từ việc scan port giúp hacker xác định những dịch vụ nào đang chạy trên máy chủ. 
Việc xác định dịch vụ cũng như phiên bản tương ứng rất quan trọng, lúc này hacker đã tiếp cận dần hơn với máy chủ. 
Quá trình xác định dịch vụ và phiên bản của nó đơn giản chỉ là thực hiện một kết nối đến dịch vụ trên port mà nó sử dụng. 
Thông thường thường thì các dịch vụ chạy với những port well-known. Ví dụ như FTP (21), SSH (22), Telnet (23), SMTP (25), ... 
(Trong Windows OS tại C:\WINDOWS\system32\drivers\etc\services có giới thiệu về tên và loại dịch vụ tương ứng). 
Cách thông thường nhất là telnet đến dịch vụ với cổng mà mình cần kiểm tra để xác định banner của nó. 
Ví dụ sử dụng netcat để xem thử banner trên port 80 của host matbao.com 
Code:
<div "="">
D:\Hacking>nx -vv matbao.com 80 (<-- Sử dụng tùy chọn -vv của netcat để xem thêm thông tin về matbao.com)
DNS fwd/rev mismatch: matbao.com != smb57.vdrs.net
matbao.com [203.162.163.57] 80 (http) open
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Content-Length: 5118
Content-Type: text/html
Content-Location: http://203.162.163.57/index.htm
Last-Modified: Tue, 27 Sep 2005 07:20:00 GMT
Accept-Ranges: bytes
ETag: "2c739df33c3c51:5ea"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Wed, 26 Mar 2008 10:57:01 GMT
Connection: close

sent 17, rcvd 319: NOTSOCK

Như trong ví dụ thì ta biết được Server Web là IIS 6.0, ... 
Hiển nhiên đây là cách "cổ điển" nhất mà sử dụng để kiểm tra banner của port 80. Có thể Admin thay đổi cấu hình các thông tin server phản hồi đến chúng ta, khi chúng ta thực hiện kết nối đến nó trên port 80.Phần sau Seamoun sẽ trình bày một số kỹ thuật kiểm tra khác khi mà admin cố tình thay đổi sự phản hồi từ máy chủ web !!! 

Một hệ thống có thể bị thỏa hiệp bởi những dịch vụ bị lỗi mà người quản trị mạng không biết(không rà soát hết tất cả dịch vụ mà máy chủ đang chạy), do vậy việc nhận định những dịch vụ nào cần thiết thì mới open port, còn không cần thiết thì nên closed, để giảm nguy cơ bị tấn công trên những dịch vụ này. Giống như một nhà có nhiều cửa ra vào, chỉ những cửa nào cần thiết thì mở còn lại đóng hết cho chắc ăn ), chứ không hổng biết vì sao lại có thằng mò vào   . 
Thông thường thì các công cụ Scan Port, nó bao gồm luôn cả xác định dịch vụ và phiên bản của dịch vụ đó. 
Ví dụ như Nmap Scan bạn sử dụng tùy chọn -sV. nmap.exe -sV 192.168.1.3 Nó sẽ scan tất cả những dịch vụ phổ biến đồng thời hiển thị luôn phiên bản của dịch vụ đó. 
Có được dịch vụ và phiên bản tương ứng, công việc tiếp theo là xác định xem dịch vụ với phiên bản đó có bị lỗi hay không ? Việc xác định lỗi có thể sử dụng search trên Internet tại những trang bảo mật nhưhttp://securityfocus.com, http://securiteam.com, http://secunia.com... hoặc sử dụng những chương trình pentest như Metasploit, Acunetix Scan, App Scan, Core Impact ... 

Demo 
Trong phần demo. Seamoun sẽ giới thiệu 2 phần. Phần 1 sẽ thực hiện việc banner grabbing với những công cụ đơn giản. Phần 2 sẽ sử dụng nmap để thực hiện scan port kết hợp với banner grabbing. Tiếp đến sẽ thực hiện tìm kiếm thông tin về service ứng với version mà mình có được khi scan với nmap, nó có lỗi gì tại thời điểm mình đang kiểm tra ? Trong demo này mình chỉ thực hiện với SMTP (25). 

Phần sau seamoun sẽ giới thiệu về OS Fingerprinting...

4) OS Fingerprinting 

Khi thực hiện tấn công vào máy chủ mà hacker lại không biết máy chủ đó chạy hệ điều hành gì ? Ở phiên bản nào ? Nghe có vẻ rất là buồn cười, đúng không các bạn ? 
Do vậy việc xác định hệ điều hành và phiên bản đang chạy trên hệ thống đích cực kỳ quan trọng. Tại sao nó lại quan trọng ? Bởi vì hiện tại các máy chủ không phải đều chạy các hệ điều hành giống nhau, có rất nhiều loại như Windows, Linux, Sun, FreeBSD, ... Việc phát hiện một máy chủ chạy một trong những hệ điều hành như Windows, Linux, ... 
cũng đã thấy "oải" rồi, tiếp đến phải xác định phiên bản của hệ điều hành đó ? Bản thân WIndows như các bạn đã biết nó cũng có rất nhiêu phiên bản khác nhau, từ ngôn ngữ đến năm đưa ra ví dụ như Windows 2000, WIndows 2000 Server, Windows XP, WIndows Server 2003, Windows Vista, ... Nếu như xác định càng rõ hệ điều hành mà máy đích đang chạy là gì và phiên bản tương ứng giúp hacker biết rõ hơn về hệ thống và thực hiện các pentest không lung tung mà sẽ tập trung vào phiên bản và hệ điều hành mà nó đang chạy. Ví dụ giả sử một hệ thống đích ta biết được nó chính xác là đang chạy Windows thì chắc chắn chúng ta không test lỗi gì mà liên quan bên các OS khác như 
Linux, SUn, .... Tiếp đến biết được hệ thống đích chạy Windows rồi thì xác định xem nó chạy ở WIndows 2000, 2003, hay Vista, nếu giả sử nó đang chạy Windows Server 2003 thì nó thuộc dòng nào Windows Server 2003 nào ? và liệu nó đang ở Service Pack nào ? SP0, SP1, SP3, ... Bởi vì nhiều lỗi không phải ảnh hưởng hết tất cả dòng sản phẩm WIndows hoặc một phiên bản Windows cố định nào ? Một lỗi có thể nó nằm ở SP0 mà nó lại không có ở SP1, SP2 hoặc lỗi xuất hiện khi upgrade lên SP1, SP2, ... 

Tóm lại là xác định càng rõ hệ điều hành, phiên bản thì đỡ phải lang man trong việc kiểm tra lỗi    
Phương thức mà xác định hệ điều hành đang chạy trên hệ thống đích có tên gọi là OS Fingerprinting. 
Có 2 kiểu xác định OS Fingerprinting khác nhau 

+ Active stack fingerprinting 
+ Passive fingerprinting. 

Active stack fingerprinting là dựa vào hệ điều hành khởi tạo TCP khác nhau để xác định hệ điều hành đó là gì 
Những công cụ sẽ tạo những gói tin và gửi đến máy định và dựa vào sự phản hồi của máy đích và so sánh 
với database để xác định OS. Tuy nhiên việc kiểm tra này có thể bị Firewall log. 

Passive fingerprinting không trực tiếp scan hệ thống để lấy thông tin về hệ điều hành mà nó 
sử dụng kỹ thuật sniffing thay vì kỹ thuật scanning. Phương pháp này thì ít chính xác hơn là active stack fingerprinting. 

Tóm lại việc thực hiện Active Stack Fingerprinting hay là Passive Fingerprinting tất cả đều dựa vào 
sự khởi tạo TCP stack và những cách mà OS phản hồi khác nhau để xác định hệ điều hành và phiên bản. 
Một số công cụ thực hiện Active Stack Fingerprinting như XPROBE2, RING v2 và Nmap. 
Seamoun thường dùng nmap vì tất cả những cái cần thiết nhất cho việc scan, detect, bypass đều 
có cả ở trong nmap !!!! 
Để thực hiện nhận biết hệ điều hành với nmap thực hiện với tùy chọn -O. Ví dụ 

D:\Hacking\scanning\nmap>nmap -O 192.168.1.17 

Starting Nmap 4.53 ( http://insecure.org ) at 2008-04-08 10:27 SE Asia Standard 
Time 
Interesting ports on 192.168.1.17: 
Not shown: 1707 closed ports 
PORT STATE SERVICE 
80/tcp open http 
135/tcp open msrpc 
139/tcp open netbios-ssn 
443/tcp open https 
445/tcp open microsoft-ds 
3389/tcp open ms-term-serv 
5101/tcp open admdog 
MAC Address: 00:E0:4D:08:67:AD (Internet Initiative Japan) 
Device type: general purpose 
Running: Microsoft Windows XP
OS details: Microsoft Windows XP SP2
 

Network Distance: 1 hop 

OS detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ . 
Nmap done: 1 IP address (1 host up) scanned in 4.235 seconds 

5) Nhận biết máy chủ Web Server 
Sở dĩ seamoun tách riêng phần nhận biết máy chủ Web Server thành một chủ đề bởi vì ngày nay web trở nên rất phổ biến và cách tấn công máy chủ từ web cũng vậy do nó phải luôn luôn được duy trì (trừ khi server web bị DOS nên down thôi ! smilie smilie). Thực chất việc tấn công một máy chủ web tức là tấn công hệ thống đích đó trên cổng 80. Hiển nhiên nó có nhiều kỹ thuật và sự khác biệt so với những dịch vụ khác , điều này seamoun không cần phải giới thiệu về web cũng thành phần liên quan đến web, do nó quá phổ biến và ai cũng biết. 
Các bước tiến hành xác định banner của máy chủ web cũng tương tự như các dịch vụ khác. 
Do nó cũng là một dịch vụ chạy trên TCP port 80 do vậy việc xác định nó cũng kết nối đến máy chủ web trên port 80 
Ví dụ 

D:\Hacking>nx -vv matbao.com 80 
DNS fwd/rev mismatch: matbao.com != smb57.vdrs.net 
matbao.com [203.162.163.57] 80 (http) open 
HEAD / HTTP/1.0 

HTTP/1.1 200 OK 
Content-Length: 5118 
Content-Type: text/html 
Content-Location: http://203.162.163.57/index.htm 
Last-Modified: Tue, 27 Sep 2005 07:20:00 GMT 
Accept-Ranges: bytes 
ETag: "2c739df33c3c51:5ea" 
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
 

Date: Tue, 08 Apr 2008 08:20:43 GMT 
Connection: close 

sent 17, rcvd 319: NOTSOCK 

Cách trên là cách đơn giản nhất để xác định máy chủ Web đang chạy là gì, và sử dụng công nghệ gì. Ở vì dụ trên thì Web Server là IIS/6.0 chạy ASP.NET hoặc ASP. 
Nếu một máy chủ Web cố tình sử dụng một số phần mềm như IIS Lockdown, Server Mask đối với IIS hoặc thay đổi tên máy chủ trên cấu hình Apache nhằm mục 
đích chống hacker xác định dịch vụ web server là gì ? Hacker có thể sử dụng kỹ thuật http fingerprinting cao cấp hơn như sau : 
a) Cách 1 
Cũng kết nối đến máy chủ web trên cổng 80 như lại sử dụng một lệnh khác (không phải phương thức GET, POST thông thường) và chờ sự phản hồi lỗi từ phía 
máy chủ web và từ đó xác định máy chủ web đang chạy là gì 
Ví dụ 

Đối với máy chủ Sun One Web Server nếu thực hiện: 

$ nc sun.site.com 80 
PUT / HTTP/1.0 
Host: sun.site.com 

thì nó sẽ phản hồi như sau: 

HTTP/1.1 401 Unauthorized
Server: Sun-ONE-Web-Server/6.1
 


Đối với máy chủ IIS 6.0 nếu thực hiện: 

$ nc iis6.site.com 80 
PUT / HTTP/1.0 
Host: iis6.site.com 

thì nó sẽ phản hồi như sau: 

HTTP/1.1 411 Length Required
Server: Microsoft-IIS/6.0
Content-Type: text/html
 


Đối với máy chủ là IIS 5.x nếu thực hiện 

$ nc iis5.site.com 80 
PUT / HTTP/1.0 
Host: iis5.site.com 

thì nó sẽ phản hồi như sau: 

HTTP/1.1 403 Forbidden
Server: Microsoft-IIS/5.1


Đối với máy chủ là Apache 2.0.x nếu thực hiện: 

$ nc apache.site.com 80 
PUT / HTTP/1.0 
Host: apache.site.com 

nó sẽ phản hồi như sau: 

HTTP/1.1 405 Method Not Allowed
Server: Apache/2.0.54
 


Như các bạn đã thấy ở trên đối với máy chủ khác nhau thì nó sẽ có cách phản hồi khi gửi lệnh PUT khác nhau và từ đó ta xác định được dịch vụ máy chủ web đang chạy là gì ? 

Cách 2) Dựa vào đặc điểm phản hồi của máy chủ sau khi gửi lệnh HEAD 
Cũng kết nối đến máy chủ đích trên port 80 và sử dụng HEAD giống như trường hợp ban đầu như phân tích kỹ hơn phần phản hồi 
của máy chủ web để nhận định. 

HTTP/1.1 200 OK 
Date: Mon, 22 Aug 2005 20:22:16 GMT
Server: Apache/2.0.54
 

Last-Modified: Wed, 10 Aug 2005 04:05:47 GMT 
ETag: "20095-2de2-3fdf365353cc0" 
Accept-Ranges: bytes 
Content-Length: 11746 
Cache-Control: max-age=86400 
Expires: Tue, 23 Aug 2005 20:22:16 GMT 
Connection: close 
Content-Type: text/html; charset=ISO-8859-1 

HTTP/1.1 200 OK 
Server: Microsoft-IIS/5.1
Date: Mon, 22 Aug 2005 20:24:07 GMT
 

Connection: Keep-Alive 
Content-Length: 6278 
Content-Type: text/html 
Cache-control: private 

HTTP/1.1 200 OK 
Server: Sun-ONE-Web-Server/6.1 
Date: Mon, 22 Aug 2005 20:23:36 GMT 
Content-length: 2628 
Content-type: text/html 
Last-modified: Tue, 01 Apr 2003 20:47:57 GMT 
Accept-ranges: bytes 
Connection: close 

HTTP/1.1 200 OK 
Connection: close 
Date: Mon, 22 Aug 2005 20:39:23 GMT 
Server: Microsoft-IIS/6.0 
X-Powered-By: ASP.NET 
X-AspNet-Version: 1.1.4322 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Length: 23756 

Những phần mà seamoun làm đậm lên các bạn sẽ thấy sự khác biệt giữa những máy chủ web. Nếu nó là Apache thì Date để trước Server ngược lại so với IIS 5.1. Còn đối với Sun thì lengh và type nó viết thường không giống như 
Apache và IIS. Còn IIS 6.0 thì nó có thêm dòng Connection: close 

Tất các cách thực hiện trên đều dựa trên việc kết nối đến máy đích và sử dụng lệnh và chờ đợi sự phản hồi từ máy chủ web, sau đó 
phân tích sự phản hồi của máy chủ web và đưa ra kết luận về máy chủ web. 
Một công cụ mạnh dùng để thực hiện http fingerprinting là httprint Tool. Nó cho phép xác định dịch vụ web đang chạy là gì ? Là một đối thủ nặng ký đối với những công cụ 
chống banner grabbing như Server Mask , IIS Lockdown 

Demo 
Trong phần demo của mình, seamoun sẽ thực hiện những kỹ thuật trên và tiếp đến là sử dụng công cụ httprint trong việc xác định máy chủ web. 

1 تعليقات

إرسال تعليق

أحدث أقدم