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 . 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 ).
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:
+ filetype:
+ link:
+ cache:
+ 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 !!! . 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
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 ...
+ Đó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
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
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.
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:
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
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 ! ).
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ủ
Sau 1 thời gian không viết tiếp chủ đề này do seamoun bận qué (từ năm ngoái, do cưới vợ --> sinh con --> cho con bú ) nên giờ tranh thủ thời gian viết tiếp. Giống viết truyện Conan quá , 1 năm cho ra 1 cuốn . Hi hi hi
Passive OS Fingerprinting
Kỹ thuật Passive OS Fingerprinting là liên quan đến việc sử dụng
sniffing để nhận diện hệ điều hành khác với Active OS Fingerprinting
dùng scanning để thực hiện nhận diện hệ điều hành.
Dựa vào đặc tính của packet được sử dụng để nhận biết hệ điều
hành. Sau đây là một số thuộc tính của TCP/IP dùng để xét khi thực hiện
Passive OS Fingerprinting:
1. TTL: Dựa vào Time-To-Live của mỗi packet trong hệ điều hành
2. Window size: Tùy theo hệ điều hành mà có thể set các window size khác nhau.
3. DF (Don’t Fragment bit): Hệ điều hành có thiết lập việc phân rã bit hay không ?
4. …
Bằng việc sniffing và phân tích packet có các thuộc tính ở trên,
chương trình sẽ so sánh với một database thuộc tính và đưa ra kết quả
của hệ điều hành sử dụng là gì. Một số công cụ thực hiện Passive OS
Fingerprinting có thể kể đến là siphon (http://packetstormsecurity.org/UNIX/utilities/siphon-v.666.tar.gz ), p0f (http://lcamtuf.coredump.cx/p0f.shtml)
Ví dụ một số dấu hiệu nhận biết hệ điều hành của chương trình p0f
Code:
# ----------------- Windows -----------------
# Windows TCP/IP stack is a mess. For most recent XP, 2000 and
# seem. Luckily for us, almost all Windows 9x boxes have an
8192:32:1:44:M*:.:Windows:3.11 (Tucows)
S44:64:1:64:M*,N,W0,N,N,T0,N,N,S:.:Windows:95
8192:128:1:64:M*,N,W0,N,N,T0,N,N,S:.:Windows:95b
# Windows 98 it is no longer possible to tell them from each other
S44:32:1:48:M*,N,N,S:.:Windows:98 (low TTL) (1)
8192:32:1:48:M*,N,N,S:.:Windows:98 (low TTL) (2)
%8192:64:1:48:M536,N,N,S:.:Windows:98 (13)
%8192:128:1:48:M536,N,N,S:.:Windows:98 (15)
S4:64:1:48:M*,N,N,S:.:Windows:98 (1)
S6:64:1:48:M*,N,N,S:.:Windows:98 (2)
S12:64:1:48:M*,N,N,S:.:Windows:98 (3
T30:64:1:64:M1460,N,W0,N,N,T0,N,N,S:.:Windows:98 (16)
32767:64:1:48:M*,N,N,S:.:Windows:98 (4)
37300:64:1:48:M*,N,N,S:.:Windows:98 (5)
46080:64:1:52:M*,N,W3,N,N,S:.:Windows:98 (RFC1323+)
65535:64:1:44:M*:.:Windows:98 (no sack)
S16:128:1:48:M*,N,N,S:.:Windows:98 (6)
S16:128:1:64:M*,N,W0,N,N,T0,N,N,S:.:Windows:98 (7)
S26:128:1:48:M*,N,N,S:.:Windows:98 (8)
T30:128:1:48:M*,N,N,S:.:Windows:98 (9)
32767:128:1:52:M*,N,W0,N,N,S:.:Windows:98 (10)
60352:128:1:48:M*,N,N,S:.:Windows:98 (11)
60352:128:1:64:M*,N,W2,N,N,T0,N,N,S:.:Windows:98 (12)
T31:128:1:44:M1414:.:Windows:NT 4.0 SP6a (1)
64512:128:1:44:M1414:.:Windows:NT 4.0 SP6a (2)
8192:128:1:44:M*:.:Windows:NT 4.0 (older)
# Windows XP and 2000. Most of the signatures that were
65535:128:1:48:M*,N,N,S:.:Windows:2000 SP4, XP SP1+
%8192:128:1:48:M*,N,N,S:.:Windows:2000 SP2+, XP SP1+ (seldom 98)
S20:128:1:48:M*,N,N,S:.:Windows:SP3
S45:128:1:48:M*,N,N,S:.:Windows:2000 SP4, XP SP1+ (2)
40320:128:1:48:M*,N,N,S:.:Windows:2000 SP4
S6:128:1:48:M*,N,N,S:.:Windows:XP, 2000 SP2+
S12:128:1:48:M*,N,N,S:.:Windows:XP SP1+ (1)
S44:128:1:48:M*,N,N,S:.:Windows:XP SP1+, 2000 SP3
64512:128:1:48:M*,N,N,S:.:Windows:XP SP1+, 2000 SP3 (2)
32767:128:1:48:M*,N,N,S:.:Windows:XP SP1+, 2000 SP4 (3)
# Windows 2003 & Vista
8192:128:1:52:M*,W8,N,N,N,S:.:Windows:Vista (beta)
32768:32:1:52:M1460,N,W0,N,N,S:.:Windows:2003 AS
65535:64:1:52:M1460,N,W2,N,N,S:.:Windows:2003 (1)
65535:64:1:48:M1460,N,N,S:.:Windows:2003 (2)
S52:128:1:48:M1260,N,N,S:.:Windows:XP/2000 via Cisco
65520:128:1:48:M*,N,N,S:.:Windows:XP bare-bone
16384:128:1:52:M536,N,W0,N,N,S:.:Windows:2000 w/ZoneAlarm?
2048:255:0:40:.:.:Windows:.NET Enterprise Server
44620:64:0:48:M*,N,N,S:.:Windows:ME no SP (?)
S6:255:1:48:M536,N,N,S:.:Windows:95 winsock 2
32000:128:0:48:M*,N,N,S:.:Windows:XP w/Winroute?
16384:64:1:48:M1452,N,N,S:.:Windows:XP w/Sygate? (1)
17256:64:1:48:M1460,N,N,S:.:Windows:XP w/Sygate? (2)
*:128:1:48:M*,N,N,S:U:-Windows:XP/2000 while downloading (leak!)
32768:32:1:44:M1460:.:Windows:CE 3
3100:32:1:44:M1460:.:Windows:CE 2.0
*:128:1:52:M*,N,W0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w, tstamp-)
*:128:1:52:M*,N,W*,N,N,S:.:@Windows:XP/2000 (RFC1323+, w+, tstamp-)
*:128:1:52:M*,N,N,T0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w-, tstamp+)
*:128:1:64:M*,N,W0,N,N,T0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w, tstamp+)
*:128:1:64:M*,N,W*,N,N,T0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w+, tstamp+)
*:128:1:48:M536,N,N,S:.:@Windows:98
*:128:1:48:M*,N,N,S:.:@Windows:XP/2000
Một số dấu hiệu để nhận biết hệ điều hành Linux
Code:
# ----------------- Linux -------------------
S1:64:0:44:M*:A:Linux:1.2.x
512:64:0:44:M*:.:Linux:2.0.3x (1)
16384:64:0:44:M*:.:Linux:2.0.3x (2)
2:64:0:44:M*:.:Linux:2.0.3x (MkLinux) on Mac (1)
64:64:0:44:M*:.:Linux:2.0.3x (MkLinux) on Mac (2)
S4:64:1:60:M1360,S,T,N,W0:.:Linux:2.4 (Google crawlbot)
S4:64:1:60:M1430,S,T,N,W0:.:Linux:2.4-2.6 (Google crawlbot)
S2:64:1:60:M*,S,T,N,W0:.:Linux:2.4 (large MTU?)
S3:64:1:60:M*,S,T,N,W0:.:Linux:2.4 (newer)
S4:64:1:60:M*,S,T,N,W0:.:Linux:2.4-2.6
S3:64:1:60:M*,S,T,N,W1:.:Linux:2.6, seldom 2.4 (older, 1)
S4:64:1:60:M*,S,T,N,W1:.:Linux:2.6, seldom 2.4 (older, 2)
S3:64:1:60:M*,S,T,N,W2:.:Linux:2.6, seldom 2.4 (older, 3)
S4:64:1:60:M*,S,T,N,W2:.:Linux:2.6, seldom 2.4 (older, 4)
T4:64:1:60:M*,S,T,N,W2:.:Linux:2.6 (older, 5)
S4:64:1:60:M*,S,T,N,W5:.:Linux:2.6 (newer, 1)
S4:64:1:60:M*,S,T,N,W6:.:Linux:2.6 (newer, 2)
S4:64:1:60:M*,S,T,N,W7:.:Linux:2.6 (newer, 3)
T4:64:1:60:M*,S,T,N,W7:.:Linux:2.6 (newer, 4)
S20:64:1:60:M*,S,T,N,W0:.:Linux:2.2 (1)
S22:64:1:60:M*,S,T,N,W0:.:Linux:2.2 (2)
S11:64:1:60:M*,S,T,N,W0:.:Linux:2.2 (3)
S4:64:1:48:M1460,N,W0:.:Linux:2.4 in cluster
32767:64:1:60:M16396,S,T,N,W0:.:Linux:2.4 (loopback)
32767:64:1:60:M16396,S,T,N,W2:.:Linux:2.6 (newer, loopback)
S8:64:1:60:M3884,S,T,N,W0:.:Linux:2.2 (loopback)
16384:64:1:60:M*,S,T,N,W0:.inux:2.2 (Opera?)
32767:64:1:60:M*,S,T,N,W0:.inux:2.4 (Opera?)
S22:64:1:52:M*,N,N,S,N,W0:.:Linux:2.2 (tstamp-)
S4:64:1:52:M*,N,N,S,N,W0:.:Linux:2.4 (tstamp-)
S4:64:1:52:M*,N,N,S,N,W2:.:Linux:2.6 (tstamp-)
S4:64:1:44:M*:.:Linux:2.6? (barebone, rare!)
T4:64:1:60:M1412,S,T,N,W0:.:Linux:2.4 (rare!)
27085:128:0:40:.:.ellowerApp cache (Linux-based)
Ngoài Linux và Windows còn các dấu hiệu đề nhận biết các hệ điều hành khác
Cách thức điều tra hệ điều với kỹ thuật Passive OS Fingerprint
Ngoài việc sử dụng các chương trình trên có thể điều tra hệ điều hành thông qua một trang web nổi tiếng về report các OS: http://netcraft.com.
Khi truy cập trang Web này chỉ cần gõ domain của server đích cần kiểm
tra thì Website sẽ thông báo chi tiết các OS sử dụng cũng như ngày giờ
và các thông tin về Web Server sử dụng cũng như các thành phần khác…
Ví dụ một điều tra OS đối với domain vnexpress.net
Ưu điểm của kỹ thuật Passive OS Fingerprint là không thực hiện
scanning mà sniffing, và từ kết quả phân tích sniffing với các dấu hiệu
tương ứng so với database đưa ra kết quả của OS đang chạy là gì, cho
nên không làm “ồn ào” đối với hệ thống đích như là thực hiện Active OS
Fingerprinting. Tất nhiên nhược điểm lớn nhất của kỹ thuật này là tính
RefLink: http://www.hvaonline.net/hvaonline/posts/list/0/18923.hva
chính xác không cao
(continue ...)
web.
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...