Trace route là một công cụ chẩn đoán do Van Jacobson viết để cho phép xemtuyến đường mà một gói tin IP sẽ theo từ server này sang server khác Nếu chúng ta không rành các lệnh trong Unix,
Trang 1Lời nói đầu
Ngày nay, tác chiến mạng (bao gồm tấn công và trinh sát mạng) không còn
là một vấn đề quá mới mẻ hay xa lạ Việc áp dụng công nghệ thông tin trong quản
lý và điều hành đã có mặt trong mọi lĩnh vực ngay cả trong chiến tranh hiện đạicũng vậy Chúng ta thử tưởng tượng xem, điều gì sẽ xảy ra một khi chúng ta xâmnhập được vào hệ thống chỉ huy thông tin, liên lạc của đối phương và lấy thông tin
ở đó hay nguy hiểm hơn khi mà chúng ta chiếm quyền điều khiển để đưa ra thôngtin sai lệch hoặc ra lệnh … ngưng chiến Thực tế trong cuộc chiến tranh Vùng vịnhnăm 1991, hệ thống thông tin và chỉ huy chiến trường của liên quân do Mỹ cầmđầu đã bị một nhóm người tấn công người Libăng xâm nhập thành công, họ đãđiều chỉnh một số thông tin, thêm thông tin mình muốn vào và sự việc chỉ bị pháthiện sau 2 ngày khi mà nhóm người tấn công này đã rút lui an toàn Hay mới đâytrong cuộc chiến tranh xâm lược I-Rắc, hệ thống thông tin hậu cần của Mỹ đã bịmột nhóm người tấn công người Phần Lan xâm nhập, nhưng lần này họ chỉ đưa ralời cảnh báo mà không gây tác động gì
Trên lý thuyết thì các nước có nền công nghệ thông tin phát triển càng caothì lỗ hổng an ninh mạng sẽ càng ít nhưng việc ảnh hưởng khi bị tác động sẽ cànglớn Thực tế thì lại cho thấy điều đó là khác hoàn toàn Ở các nước có nền côngnghệ thông tin phát triển thì lỗ hổng an ninh mạng lại càng nhiều và lại là mục tiêucho các người tấn công xâm nhập Chính vì vậy việc nghiên cứu các kỹ thuật tấncông và trinh sát mạng trong thời đại tác chiến công nghệ cao như hiện nay là mộtyêu cầu cấp thiết, không những nhằm mục đích tấn công, phá hoại đối phương màcòn bảo vệ mình trước những sự tấn công của đối phương Thấy được sự cấp thiếtnày nên qua quá trình thực tập và làm đồ án tốt nghiệp cuối khóa, tôi chọn cho
Trang 2mình đề tài : Nghiên cứu các kỹ thuật tấn công, xây dựng chương trình trinh
sát trên mạng.
Nhiệm vụ đồ án: Nghiên cứu, nắm được các kỹ thuật tiêu biểu trong tấncông và trinh sát trên mạng, từ đó xây dựng chương trình tấn công hoặc trinh sátmạng
Nội dung đồ án gồm 3 chương:
Chương 1: Lý thuyết chung
Chương 2: Một số kỹ thuật tiêu biểu trong trinh sát và tấn công trên
mạng.
Chương 3: Xây dựng chương trình trinh sát và tấn công trên mạng.
Tuy đã có sự nỗ lực nhưng đồ án không thể tránh được những sai sót, tôi rấtmong nhận được sự đóng góp của các thầy giáo Tôi xin cám ơn thầy giáo, PGS.TS
đã giúp đỡ tôi trong suốt quá trình thực hiện đồ án
Trang 3Chương 1 : Lý thuyết chung 4
1.1 Thế nào là một địa chỉ IP 4
1.2 Proxy 5
1.3 Vitual port 6
1.4 DNS 6
1.5 Ping và cách sử dụng 6
1.6 Cookie 8
1.7 Gói tin TCP/IP 9
Chương 2 : Một số kỹ thuật tiêu biểu trong trinh sát và tấn công trên mạng 10
2.1 In dấu ấn 12
2.1.1 Khái niệm 12
2.1.2 Tại sao cần in dấu ấn 12
2.1.3 Kỹ thuật in dấu ấn 12
2.1.4 Sơ lược Trace Route 15
2.2 Quét mạng (Scanning) 20
2.2.1 Quét Ping mạng 20
2.1.2 Quét cổng 24
2.3 Điểm danh mạng 28
2.3.1 Windows NT 29
2.3.2 NOVELL 33
2.4 Tấn công tiêm mã SQL 36
2.4.1 Định nghĩa tấn công tiêm mã SQL 36
2.4.2 Tấn công tiêm mã SQL 36
2.4.3 Ngăn chặn SQL Injection 44
Trang 42.5 Tấn công leo thang đặc quyền 44
2.5.1 Giới thiệu: 44
2.5.2 Yếu điểm để tấn công: 45
2.5.3 Vị trí của Password trong bộ nhớ: 45
2.5.4 Password sẽ được lưu trong bộ nhớ như thế nào 46
2.5.5 Thực nghiệm: 46
2.3.6 Vấn đề mất password: 48
2.5.7 Vấn đề về tấn công điểm yếu: 49
2.6 Tấn công từ chối dịch vụ (DoS attack) 49
2.6.1 Tấn công từ chối dịch vụ thông thường (DoS attack) 49
2.6.2 Tấn công từ chối dịch vụ phân tán 50
Chương 3 : Xây dựng chương trình trinh sát và tấn công trên mạng 53
3.1 Chương trình trinh sát quét cổng 53
3.1.1 Mục đích chương trình: 53
3.1.2 Giới thiệu chương trình 53
3.1.3 Kết quả 58
3.2 Chương trình trinh sát mạng bắt ký tự bàn phím 58
3.2.1 Giới thiệu chương trình 58
3.2.2 Giới thiệu chương trình 58
3.2.3 Kết quả 61
Trang 5Chương 1 : Lý thuyết chung
1.1 Thế nào là một địa chỉ IP
IP là từ viết tắt của Internet Protocol, trên Internet thì địa chỉ IP của mỗi người
là duy nhất và nó sẽ đại diện cho chính người đó, địa chỉ IP được sử dụng bởi các máytính khác nhau để nhận biết các máy tính kết nối giữa chúng Đây là lí do tại saochúng ta bị cấm và là cách người ta tìm ra IP của chúng ta
Địa chỉ IP gồm 4 số giới hạn từ 0 - 255 Mỗi số được lưu bởi 1 byte, do đó IP
có kích thước là 4byte, được chia thành các lớp địa chỉ Có 3 lớp là A, B và C Nếu ởlớp A, ta sẽ có thể có 16 triệu điạ chỉ, ở lớp B có 65536 địa chỉ Ví dụ: Ở lớp B với132.25,chúng ta có tất cả các địa chỉ từ 132.25.0.0 đến 132.25.255.255 Phần lớn cácđịa chỉ ở lớp A là sở hữu của các công ty hay của tổ chức Một ISP thường sở hữu mộtvài địa chỉ lớp B hoặc C Ví dụ: Nếu địa chỉ IP của chúng ta là 132.25.23.24 thì chúng
ta có thể xác định ISP của chúng ta là ai
Địa chỉ IP có thể dễ dàng phát hiện ra, người ta có thể lấy được qua các cáchsau :
+ Chúng ta lướt qua một trang web, IP của chúng ta bị ghi lại
+ Trên IRC, bất kì ai cũng có thể có IP của chúng ta
+ Trên ICQ, mọi người có thể biết IP của chúng ta, thậm chí chúng ta chọn ``donot show ip`` người ta vẫn lấy được nó
+ Nếu chúng ta kết nối với một ai đó, người ta có thế gõ ``systat –n ``, và biếtđược ai đang kết nối đến
Trang 6+ Nếu ai đó gửi cho chúng ta một email với một đoạn mã java tóm IP, họ cũng
có thể tóm được IP của chúng ta
1.2 Proxy
Proxy cung cấp cho người sử dụng truy xuất internet với những host đơn.Những proxy server phục vụ những nghi thức đặt biệt hoặc một tập những nghi thứcthực thi trên dual-homed host hoặc basion host Những chương trình client của người
sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụngcần giao tiếp Proxy server xác định những yêu cầu từ client và quyết định đáp ứnghay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thậtthay cho client và tiếp tục chuyển tiếp đến những yêu cầu từ client đến server, cũngnhư đáp ứng những yêu cầu của server đến client Vì vậy proxy server giống cầu nốitrung gian giữa server và client
Proxy cho phép chúng ta truy xuất dịch vụ trên internet theo nghĩa trực tiếp.Với dual host homed cần phải login vào host trước khi sử dụng dịch vụ nào trêninternet, điều này thường không tiện lợi và một số người trở nên thất vọng khi họ cócảm giác thông qua firewall, với proxy nó giải quyết được vấn đề này Tất nhiên nócòn có những giao thức mới nhưng nói chung nó cũng khá tiện lợi cho người sử dụng.Bởi vì proxy cho phép chúng ta truy xuất những dịch vụ trên internet từ hệ thống cánhân của ta, nó không cho phép packet đi trực tiếp giữa hệ thống sử dụng và internet,đường đi là gián tiếp thông qua dual homed host hoặc thông qua sự kết hợp giữabastion host và screening rounter
1.3 Vitual port
Vitual port (cổng ảo) là 1 số tự nhiên được gói ở trong TCP (TranmissionControl Protocol) và UDP (User Diagram Protocol) header Như chúng ta đã biết,
Trang 7dùng để truyền và nhận dữ liệu Ví dụ 1 máy có địa chỉ IP là 127.0.0.1 chạyWebServer, FTP_Server, POP3 server, etc, những dịch vụ này đều đuọc chạy trên 1 IPaddress là 127.0.0.1, khi một gói tin được gửi đến làm thế nào máy tính của chúng taphân biệt được gói tin này đi vào dịch vụ nào WebServer hay FTP server hay SM.TP? Chính vì thế Port xuất hiện Mỗi dịch vụ có 1 số port mặc định, ví dụ FTP có portmặc định là 21, web service có port mặc định là 80, POP3 là 110, SMTP là 25,
Người quản trị mạng có thể thay đổi số port mặc định này, nếu chúng ta khôngbiết số port trên một máy chủ, chúng ta không thể kết nối vào dịch vụ đó được Chắcchúng ta đã từng nghe nói đến PORT MAPPING nhưng có lẽ chưa biết nó là gì vàchức năng thế nào Port mapping thực ra đơn giản chỉ là quá trình chuyển đổi số portmặc định của một dịch vụ nào đó đến 1 số khác Ví dụ Port mặc định của WebServer
là 80, nhưng thỉnh thoảng chúng ta vẫn thấy http://www.xxx.com:8080, 8080 ở đâychính là số port của host xxx nhưng đã đuược người quản trị của host này ``map`` từ
80 thành 8080
1.4 DNS
DNS là viết tắt của Domain Name System Một máy chủ chạy DNS chuyểnhostname bằng cách chuyển các chữ cái thành các chữ số tương ứng và ngược lại Vídụ: 127.0.0.1 > localhost và localhost - > 127.0.0.1
Trang 8host đó ``pong`` lại có nghĩa là host đó tồn tại (hoặc là có thể liên kết tới được) Pingcũng có thể giúp chúng ta biêt được luợng thời gian một gói tin (data packet) đi từmáy tính của mình đến 1 host nào đó.
Sử dụng Ping chúng ta chỉ cần mở MS-DOS, và gõ lệnh ``ping địa_chỉ_IP``,
mặc định sẽ ping 4 lần, nhưng chúng ta cũng có thể gõ ``ping địa_chỉ_IP -t``, cách này
sẽ làm máy ping mãi Để thay đổi kích thước ping ta có thể dung lệnh:
``ping -l (size) địa_chỉ_ip ``
Cái ping làm là gửi một gói tin đến một máy tính, sau đó xem xem mất bao lâugói tin rồi xem xem sau bao lâu gói tin đó quay trở lại, cách này xác định được tốc độcủa kết nối, và thời gian cần để một gói tin đi và quay trở lại và chia bốn (gọi là ``triptime``) Ping cũng có thể được dùng để làm chậm đi hoặc đổ vỡ hệ thống bằng lụtping Windows 98 treo sau một phút lụt ping (bộ đệm của kết nối bị tràn – có quánhiều kết nối) Một cuộc tấn công “ping flood” sẽ chiếm rất nhiều băng thông củachúng ta, và chúng ta phải có băng thông lớn hơn đối phương (trừ khi đối phương làmột máy chạy Windows 98 và chúng ta có một modem trung bình, bằng cách đóchúng ta sẽ hạ gục đối phương sau xấp xỉ một phút lụt ping) Lụt Ping không hiệu quảlắm đổi với những đối phương mạnh hơn một chút, trừ khi chúng ta có nhiều đường
và chúng ta kiểm soát một số lượng tương đối các máy chủ cùng ping mà tổng băngthông lơn hơn đối phương
Chú ý: option –t của DOS không gây ra lụt ping, nó chỉ ping mục tiêu một cáchliên tục, với những khoảng ngắt quãng giữa hai lần ping liên tiếp Trong tất cả các hệUnix hoặc Linux, chúng ta có thể dùng ping -f để gây ra lụt thực sự Thực tế là phảiping -f nếu chúng ta dùng một bản tương thích POSIX (POSIX - Portable OperatingSystem Interface dựa trên uniX), nếu không nó sẽ không phải là một bản Unix/Linuxthực sự, bởi vậy nếu chúng ta dùng một hệ điều hành mà nó tự cho nó là Unix hayLinux, nó sẽ có tham số -f
Trang 91.6 Cookie
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa web site vàtrình duyệt của người dùng Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạngtext (size dưới 4k) Chúng được các site tạo ra để lưu trữ/truy tìm/nhận biết các thôngtin về người dùng đã ghé thăm site và những vùng mà họ đi qua trong site
Những thông tin này có thể bao gồm tên/định danh người dùng, mật khẩu, sởthích, thói quen Cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứngcủa máy mình, ko phải trình duyệt nào cũng hỗ trợ cookie Sau một lần truy cập vàosite, những thông tin về người dùng được lưu trữ trong cookie Ở những lần truy cậpsau đến site đó, web site có thể dùng lại những thông tin trong cookie (như thông tinliên quan đến việc đăng nhập vào 1 forum ) mà người ko phải làm lại thao tác đăngnhập hay phải nhập lại các thông tin khác
Vấn đề đặt ra là có nhiều site quản lý việc dùng lại các thông tin lưu trongcookie ko chính xác, kiểm tra ko đầy đủ hoặc mã hoá các thông tin trong cookie còn
sơ hở giúp cho việc khai thác để vượt qua cánh cửa đăng nhập, đoạt quyền điêu khiểnsite có thể thực hiện được
Cookies thường có các thành phần sau :
+ Tên: do người lập trình web site chọn
+ Domain: là tên miền từ server mà cookie được tạo và gửi đi
+ Đường dẫn: thông tin về đường dẫn ở web site mà chúng ta đang xem
+ Ngày hết hạn: là thời điểm mà cookie hết hiệu lực
+ Bảo mật: Nếu giá trị này đựơc thiết lập bên trong cookie, thông tin sẽ đựơc
mã hoá trong quá trình truyền giữa server và trình duyệt
+ Các giá trị khác: là những dữ liệu đặc trưng được web server lưu trữ để nhậndạng về sau các giá trị này ko chứa các khoảng trắng, dấu chấm, phẩy và bị giới hạntrong khoảng 4k
Trang 101.7 Gói tin TCP/IP
TCP/IP viết tắt cho Transmission Control Protocol and Internet Protocol, mộtGói tin TCP/IP là một khối dữ liệu đã được nén, sau đó kèm thêm một header và gửiđến một máy tính khác Đây là cách thức truyền tin của internet, bằng cách gửi các góitin Phần header trong một gói tin chứa địa chỉ IP của người gửi gói tin Chúng ta cóthể viết lại một gói tin và làm cho nó trong giống như đến từ một người khác Chúng
ta có thể dùng cách này để tìm cách truy nhập vào rất nhiều hệ thống mà không bị bắt
Trang 11Chương 2 : Một số kỹ thuật tiêu biểu trong
trinh sát và tấn công trên mạng
Trinh sát và tấn công mạng là một nghệ thuật đòi hỏi sự phối hợp của các yếu tốnhư: Kỹ thuật, chiến thuật, thời cơ và nghệ thuật tạo thời cơ Ngoại trừ yếu tố kỹ thuật
có chất đặc thù, các yếu tố còn lại đều nằm trong nguyên tắc chung của nghệ thuật tácchiến trong mọi cuộc chiến tranh bất kể quy mô hay hình thức Nhưng trong bài báocáo này tôi chỉ tập trung vào yếu tố đặc thù của chiến tranh mạng – Yếu tố kỹ thuật –bằng cách phân tích một số kỹ thuật trinh sát và tấn công tiêu biểu
Trong trinh sát và tấn công mạng có rất nhiều kỹ thuật được sử dụng Có thể liệt
kê dưới đây một số kỹ thuật chính :
Kỹ thuật trinh sát bao gồm :
- Quét mạng
- Điểm danh mạng
- Dò đường
- Nghe trộm
- Lấy dấu tay giao thức
- Lấy dấu tay dịch vụ và ứng dụng
- In dấu chân
- Sử dụng các phần mềm gián điệp kiểu Trojan
- Sử dụng yếu tố con người (Social engineering)
Kỹ thuật tấn công chính bao gồm :
- Dò phá mật khẩu
Trang 12- Tấn công tràn bộ đệm
- Tấn công tiêm mã
- Tiêm mã SQL
- Tiêm mã khác
- Tấn công giả mạo
- Giả mạo địa chỉ
- Giả mạo thư tín
- Tấn công từ chối dịch vụ
Ngoài ra còn có nhiều kỹ thuật hỗ trợ cho trinh sát và tấn công như :
- Kỹ thuật che dấu thông tin (steganography)
- Kỹ thuật mã và giải mã
Trong mỗi kỹ thuật tấn công chính có thể có nhiều kỹ thuật nhỏ Ví dụ như tấncông từ chối dịch vụ có tấn công từ chối dịch vụ làm sai lệch tên miền, bằng làm ngậpmạng, bằng cách làm cạn kiệt tài nguyên, bằng virus, bằng bom logic,… Hình thứctiến hành cũng rất đa dạng như tập trung, phân tán hay kêt hợp cả hai Chính vì vậykhông thể đề cập một cách đầy đủ tất cả các kỹ thuật này trong phạm vi một chươngmục nhỏ Trong phạm vi nghiên cứu của đồ án tôi chỉ đề cập chi tiết đến năm kỹ thuậttrinh sát và tấn công phổ biến nhất, đó là : In dấu ấn, Quét mạng,Điểm danh mạng, Dòphá mật khẩu, Tiêm mã SQL, Tràn vùng đệm và từ chối dịch vụ
Trước khi các người tấn công thực sự bắt tay vào việc, họ phải tiến hành 3bước cơ bản là in dấu ấn (foot printing), Quét (scanning) và điểm danh(enumeration)
2.1 In dấu ấn
2.1.1 Khái niệm
In dấu ấn là việc dùng các công cụ và kỹ thuật để lấy thông tin cơ bản đầu tiên
về một tổ chức hoặc một trang web muốn tấn công (trong đồ án tôi tạm gọi là victim)
Trang 13Việc in dấu ấn có hệ thống một tổ chức sẽ cho phép người tấn công thấy rõ tình hình
an ninh (độ bảo mật) của tổ chức đó
2.1.2 Tại sao cần in dấu ấn
In dấu ấn giúp ta có thể định danh tất cả các mẩu tin và nắm những thông tin cơbản (đôi khi khá quan trọng) về victim
+ Các vị trí
+ Các công ty hoặc thực thể liên quan
+ Các kết nối hoặc tin tức có được
+ Các ngôn ngữ bảo mật nêu rõ các cơ chế bảo mật đã thiết đặt (cấu hình firewall chẳng hạn)
+ Các số điện thoại , tên liên lạc và Email
Ngoài ra, chúng ta cũng có thể xem lại mã nguồn HTML để tìm những sơ hởtrong lập trình , bên cạnh đó , những chú thích nằm trong các thẻ HTML như < và ~cũng là một "tài nguyên" đáng khai thác
Trang 14Sau khi nghiên cứu trang web, chúng ta tìm thêm những thông tin cung cấp cácmanh mối bổ sung về tình trạng của tổ chức và tình hình an ninh của nó ( trên báo chí,các bản tin trên NET chẳng hạn) Những động cơ tìm kiếm là chìa khoá cho chúng ta Sau đây là một vài công cụ tìm kiếm :
2.1.3.2 Bước 2 : điểm danh mạng
Trong bước này, việc đầu tiên là định danh các domain và mạng có liên quanđến victim Muốn làm điều này, hãy truy xuất dữ liệu của network solution(ww.networksolution.com) và American Registry for Internet Number (www.arin.net)
Trang 15người dùng không tin cậy trên internet cũng giống như cung cấp bản đồ ngôi nhàmình cho kẻ trộm vậy
2.1.3.4 Bước 4: trinh sát mạng
Sau khi đã có bản đồ trong tay, thì đây là giai đoạn "xâm nhập thực tế" để xácđịnh lộ trình truy cập tiềm năng mạng (tạm hiểu như là việc do thám để xác định cáccon đường trước khi tiến hành đánh cướp vậy.)
Để thực hiện công việc này, tôi xin giới hiệu chương trình trace route(ftp://ftp.ec.lbl/traceroute.tar.z) có trong hầu hết phiên bản của Unix & WinNT TrongWinNT, nó có tên là tracert
Trace route là một công cụ chẩn đoán do Van Jacobson viết để cho phép xemtuyến đường mà một gói tin IP sẽ theo từ server này sang server khác Nếu chúng ta không rành các lệnh trong Unix, có thể dùng Visual Route(http://www.visualroute.com) để thực hiện tiến trình trinh sát (tracerouting) này Giaodiện của visual route trông rất bắt mắt & dễ sử dụng Nhưng không có tác dụng tốt vớicác mạng có quy mô lớn
Ngoài ra, chúng ta còn có thể thực hiện một kỹ thuật phức tạp hơn gọi là "tiếntrình quét giao thức firewall"
Vậy là công đoạn đầu tiên của việc tấn công vào một hệ thống đã xong Bâygiờ, sau khi đã thực hiện hoàn tất các bước trên, chúng ta có thể có những câu hỏi:
"vậy có tác dụng gì??," Làm gì tiếp theo??","những thông tin thu được có tác dụnggì?", " Có nhất thiết phải thực hiện bước này không ?? ",…Có khá nghiều câu hỏi đặt
ra nhưng tôi chỉ có thể nói rằng: Bước tiếp theo của quá trình trinh sát là Scanning
2.1.4 Sơ lược Trace Route
Trang 16Tôi cần biết đường đi từ máy tôi đến một host trên mạng Internet có địa chỉ ip
là 203.94.12.54 Tôi cần phải tracert đến nó Như chúng ta thấy ở trên, các gói packets
từ máy tôi muốn đến được 203.94.12.54 phải đi qua 13 hops(mắt xích) trên mạng.Đây là đưòng đi của các gói packets:
Netzero(ISP đã gởi dữ liệu đi) -> Spectranet (một nhà công cấp mạng xươngsống - Backbone Provider) -> New York ISP -> New York Backbone -> Asia ->
Trang 17South Asia -> India Backbone -> New Delhi Backbone -> một router khác trong NewDelhi Backbone -> New Delhi ISP
Như vậy, host có địa chỉ ip 203.94.12.54 nằm ở New Delhi, India, South Asia.Chúng ta cũng có thể telnet đến 203.94.12.54 trên cổng 13(datetime) để xác định giờGMT qua đó chúng ta có thể biết được vị trí của host này(yêu cầu là host203.94.12.54 phải chạy daemon datetime và được định cấu hình đúng về thời gian)
2.1.4.2 Traceroute hoạt động như thế nào
Trước hết, chúng ta cần biết về ICMP, TTL và cách làm việc của các routers(bộđịnh tuyến)
Những kiến thức cơ bản
ICMP - Internet Control Message Protocol ICMP được dùng để thông báo cáclỗi xảy ra trong quá trình truyền đi của các gói dữ liệu trên mạng ICMP thuộc tầngvận huyển - Transpoort Layer Tầng ứng dụng HTTP FTP Telnet Finger SSH DNS
Trang 18Fibre Channel DDS/DS0/T-carrier/E-carrier SONET/SDH DWDM
PPP HDLC SLIP/CSLIP xDSL Cable Modem (DOCSIS)
Tất cả các ICMP messages đều được chuyển đi cùng với các IP datagrams MỗiICMP message được gói trong IP datagram sẽ có dạng như sau:
| IP Header(20 bytes) | ICMP message (32 bytes) |
Sau đây là cấu trúc của một IMCP message:
0 7 8 15 16 31
| Type (0 or 8) | Code (0) | 16-bit Checksum |
| Indentifier | sequence number |
| Optional Data (nội dung tùy thuộc vào Type và Code) |
Trường type có 15 giá trị khác nhau, tùy thuộc vào từng loại ICMP errormessage cụ thể Ví dụ type=3 để chỉ định cho thông báo lỗi "Không đến được đích" -
"Destination unreachable" error message
Trường code = sub-error dùng để xác định chính xác lỗi đã xảy ra Ví dụ,type=3 và code=0 nghĩa là "Network Unreachable"(không đến được mạng); nếutype=3, code=1 nghĩa là "Host Unreachable"(không đến được host)
TTL - Time to Live TTL là một trường 8 bit trong IP header TTL là thời gian
gói dữ liệu tồn tại trên mạng trước khi nó bị bỏ qua Người gởi dữ liệu đi sẽ xác địnhmột giá trị TTL trước, thường là từ 32 -> 64 Giá trị này sẽ được giảm đi một khi mộtkhi được chuyển qua một bộ định tuyến trên mạng Khi giá trị này bằng 0, datagramnày sẽ bị bỏ qua và giao thức ICMP sẽ báo lỗi về cho người gởi Điều này sẽ tránhcho datagram này đi vào một vòng lặp vô tận qua các bộ định tuyến
Mỗi bộ định tuyến khi nhận được IP datagram sẽ giảm giá trị TTL củadatagram này đi một Hầu hết các bộ định tuyến đều không giữ lại datagram này trongthời gian quá 1 giây trước khi chuyển datagram này đi Nên giá trị TTL có thể coibằng hop(counter) = số bộ định tuyến mà datagram này vừa vượt qua
Trang 19Khi bộ định tuyến nhận được một datagram có trường TTL bằng 0 hoặc 1, nó sẽkhông chuyển datagram này đi tiếp Thay vào đó, nó sẽ bỏ qua datagram này và gởimột ICMP message "Time Exceeded"(quá thời gian) trở lại cho người đã gởidatagram này Vì ICMP message mà bộ định tuyến gởi trở lại cho người gởi có địa chỉnguồn - source address là địa chỉ ip của bộ định tuyến này nên người gởi có thể biếtđược địa chỉ ip của router này.
Cách làm việc của traceroute.
Traceroute gởi một IP datagram có TTL=1 đến hệ thống đích Router đầu tiênnhận được datagram này sẽ giảm giá trị TTL đi một -> TTL=0 và router này sẽ bỏ quadatagram này(không gởi nó đi tiếp.) và gởi một ICMP error message với địa chỉ ipnguồn là địa chỉ của nó đến máy chúng ta Như vậy router có thể xác định địa chỉ ipcủa router thứ nhất Sau đó, traceroute sẽ gởi một datagram mới đi với giá trịTTL=2(1+1=2) đến hệ thống đích Router đầu tiên sẽ giảm giá trị của TTL đi một ->TTL=1(2-1=1) và chuyển datagram này sang router thứ 2 Router thứ 2 nhận đượcdatagram có TTL=1 sẽ giảm TTL=0 Rounter 2 nhận thấy TTL=0 nên nó sẽ khôngchuyển datagram này đi tiếp Router 2 sẽ gởi trở lại máy chúng ta một ICMP errormessage với địa chỉ ip nguồn là địa chỉ ip của nó(router 2) Như vậy trình traceroutetrên máy chúng ta sẽ biết được router thứ 2 mà datagram đã đi qua Traceroute sẽ tiếptục gởi một datagram khác có TTL=3(2+1=3) đi và lặp lại quá trình trên cho đến khidatagram đến được hệ thống đích
Nếu bây giờ IP datagram đã đến được đích, TTL=1 Host đích sẽ bỏ quadatagram này và nó cũng sẽ không gởi "Time Exceeded" ICMP error message Nhưvậy thì chúng ta sẽ không thể nào biết được là mình đã đến đích chưa? Traceroutedùng một cơ chế khác như sau:
Traceroute gởi UDP datagrams đến host đích trên các cổng UDP có số hiệulớn(>30000) Sở dĩ nó chọn các cổng có giá trị lớn vì thường không có ứng dụng nàođang lắng nghe ở các cổng này Khi host đích nhận được UDP datagram này, nó sẽ
Trang 20gởi trả lại một ICMP error message "Port Unreachable"(không đến được cổng) chotraceroute Bây giờ thì traceroute có thể phân biệt được sự khác nhau giữa ICMP errormessage "Time Exceeded" với "Port Unreachable" để biết được đã đến được đích haychưa?.
Ghi chú: ICMP error message "Time Exceeded" có type=1 và code=0; ICMPeror message "Port Unreachable" có type=3 và code=3
Tóm lại: traceroute gởi UDP datagrams đến host đích với giá trị TTL=1 vàđược tăng sau mỗi lần để xác định các routers mà datagrams đã đi qua Mỗi router sẽgởi trở về một ICMP message "Time Exceeded" Riêng hệ thống đích sẽ gởi trở lạicho traceroute một ICMP message "Port Unreachable" Traceroute dựa vào sự khácbiệt này để xác định xem đã đến được đích chưa?
Ví dụ
host2 # traceroute xyz.com
traceroute to xyz.com (202.xx.12.34), 30 hops max, 40 byte packets
1 isp.net (202.xy.34.12) 20ms 10ms 10ms
2 xyz.com (202.xx.12.34) 130ms 130ms 130ms
Dòng đầu tiên cho biết hostname và địa chỉ IP của hệ thống đích Dòng này còncho chúng ta biết thêm giá trị TTL<=30 và kích thước của datagram là 40 bytes(20-bytes IP Header + 8-bytes UDP Header + 12-bytes user data)
Dòng thứ 2 cho biết router đầu tiên nhận được datagram là 202.xy.34.12, giá trịcủa TTL khi gởi đến router này là 1 Router này sẽ gởi trở lại cho chương trìnhtraceroute một ICMP message error "Time Exceeded" Traceroute sẽ gởi tiếp mộtdatagram đến hệ thống đích
Dòng thứ 3, xyz.com(202.xx.12.34) nhận được datagram có TTL=1(router thứnhất đã giảm một trước đó - TTL=2-1=1) Tuy nhiên, xyz.com không phải là mộtrouter, nó sẽ gởi trở lại cho traceroute một ICMP error message "Port Unreachable"
Trang 21Khi nhận được ICMP message này, traceroute sẽ biết được đã đến được hệ thống đíchxyz.com và kết thúc nhiệm vụ tại đây
Trong trường hợp router không trả lời sau 5 giây, traceroute sẽ in ra một dấusao "*"(không biết) và tiếp tục gởi datagram khác đến host đích
2.2 Quét mạng (Scanning)
Phần này trình bày chi tiết rất nhiều kỹ thuật được sử dụng để xác định xem trên
hệ thống đích những dịch vụ nào đang chạy, cùng những lỗ lực nhằm lấy được thôngtin về loại, phiên bản của hệ điều hành đang chạy trên hệ thống đích Từ những thôngtin đó chúng ta có thể có được đầy đủ thông tin nhằm phát hiện ra điểm yếu(Vulnerability) của hệ thống đích nhằm tiến hành tấn công hệ thống đó
2.2.1 Quét Ping mạng
Một trong những bước cơ bản trong vẽ bản đồ mạng là quét Ping dãy địa chỉ IP
và khối mạng nhằm xác định hệ thống còn hoạt động hay không Theo truyền thốngthì Ping sẽ gửi gói dữ liệu ICMP REPLY (Type 8) đến hệ thống đích với nỗ lực lấyICMP REPLY (Type 0) cho hệ thống đích vẫn đang hoạt động Có thể chấp nhậnđược nếu dùng Ping để xác định số hệ thống trên mạng quy mô vừa và nhỏ, nhưngtrên mạng lớn thì Ping không đủ hấp dẫn vì sẽ mất rất nhiều thời gian
Để quét Ping, đối với hệ điều hành Windows, chúng ta có thể sử dụng vô số cáccông cụ có sẵn Một trong những trình tiện ích quét Ping nhanh nhất trên Windows làsản phẩm Pinger của Rhino9 Khác với tiện ích quét Ping truyền thống vốn chờ hồi
âm từ mỗi hệ thống rồi mới chuyển sang máy chủ kế tiếp, Pinger sẽ gửi song songhàng loạt gói dữ liệu ICMP ECHO rồi chờ kết quả Pinger cũng cho phép phân giảitên máy chủ và lưu kết quả ra tập tin Do đó, Pinger sẽ quét nhiều địa chỉ IP nhanhhơn Ping
Trang 22Nếu phải đối đầu với những nhà quản trị mạng cẩn trọng, chúng ta sẽ thấy lưulượng ICMP thường bị chặn tại các bộ định tuyến hay bức tường lửa trước khi tớiđược máy đích hay máy đích được cấu hình để không nhận ICMP ECHO Tuy vậy,vẫn có vài công cụ giúp ta xác định hệ thống đích đang hoạt động hay không, dùchúng có thể không chính xác hay hiệu quả như Ping thông thường.
Khi lưu lượng ICMP bị chặn, quét qua cổng (Port scanning) là kỹ thuật sẽ được
sử dụng để xác định máy đích đang hoạt động Bằng cách quét cổng trên từng địa chỉ
IP, chúng ta xác định được máy đích có hoạt động nếu nhận thấy có cổng đang lắngnghe (Listen) trên hệ thống đích Kỹ thuật này tốn kém khá nhiều thời gian Công cụđầu tiên chúng ta xem xét cho kỹ thuật này là Nmap, Nmap hoặc sẽ gửi gói dữ liệuTCP ACK tớI cổng 80 và chờ hồi âm RST, hoặc sẽ gửi gói dữ liệu SYN và chờ hồi
âm RST hay SYN/ACK Nếu được đáp lại như mong đợi có nghĩa hệ thống đích đanghoạt động Với Non-root users, kỹ thuật Connect() với tùy chọn –sT (cùng –sPT80)cũng có thể được sử dụng dù không kín đáo cho lắm Chúng ta chọn cổng 80 vì đó làcổng mà hầu như tất cả các địa điểm đều cho phép đi qua bộ định tuyến, thậm chí chophép qua cả bức tường lửa Thông thường với tùy chọn –sP, Nmap sẽ sử dụng songsong cả hai kỹ thuật ICMP và ACK Với những hệ thống từ chối ICMP TYPE 0,TYPE 8 chúng ta có thể bỏ Ping ICMP bằng tùy chọn – P0
[root@kapka root] # nmap –sP –PT80 203.162.0.12
Starting nmap V 3.00 ( www.insecure.org/map/ )
Host home vnn.vn (203.162.0.12) appears to be up.
Nmap run completed – 1 IP address (1 host up) scanned in 1 second
Kỹ thuật này tỏ ra khá hữu hiệu trong việc xác định hệ thống đích đang hoạtđộng hay không dẫu cho lưu lượng ICMP có bị chặn hay từ chối Chúng ta cũng nênthử kỹ thuật này với những cổng như : SNMP(25), DNS(53), POP(110), IMAP(143)
Trang 23Hping2 cũng là một công cụ nhiều tính năng rất đáng để xem xét Hping là tiện
ích quét TCP có khả năng sửa chữa, kiểm soát các tùy chọn gói dữ liệu TCP, do vậycho chúng ta có rất nhiều phương pháp quét TCP để lựa chọn
[root@kakap root] # hping 203.162.0.12 –S –f –c 5
HPING 203.162.0.12 (pp0 203.162.0.12) : S set, 40 headers + 0 data bytes Len=40 ip=203.162.0.12 flag=RA seq=0 ttl=62 id=62741 win=0 rtt=173.8 ms
-Len=40 ip=203.162.0.12 flag=RA seq=4 ttl=62 id=63663 win=0 rtt=150.2 ms
203.162.0.12 hping statistic
-5 packets tramitted, -5 packets received, 0% packet lost
round – trip min/avg/max = 150.0/158.5/173.8 ms
Tuy nhiên ở đây chúng ta sẽ chỉ tìm hiểu tính năng quét ping TCP với gói tinTCP được phân mảnh (Fragmentation) nhằm qua mặt một số thiết bị điều khiển truycập (router, fire wall,…)
[root@kakap root] # hping 203.162.0.12 –S –f –c 5
HPING 203.162.0.12 (pp0 203.162.0.12) : S set, 40 headers + 0 data bytes Len=40 ip=203.162.0.12 flag=SA DF seq=0 ttl=62 id=38032 win=32768 rtt=195.5 ms
Len=40 ip=203.162.0.12 flag=SA DF seq=1 ttl=62 id=38243 win=32768 rtt=191.7 ms
Len=40 ip=203.162.0.12 flag=SA DF seq=2 ttl=62 id=38545 win=32768 rtt=190.1 ms
Khi gặp thiết bị điều khiển truy nhập không thể xử lý chính xác gói dữ liệu đã
phân mảnh, gói dữ liệu của chúng ta có thể dễ dàng đi qua và xác định được với hệ
thống đích có hoạt động hay không Để ý flag TCP SYN (S) và TCP ACK (A) trả về
Trang 24khi gặp cổng mở Hping có thể sử dụng dễ dàng trong các kịch bản shell thông qua tùychọn –c N, trong đó N là số gói dữ liệu gửi trước khi chuyển tiếp Tốc độ không phải
là ưu điểm của Hping nhưng với những tính năng độc đáo của mình Hping quả là mộtcông cụ mà các nhà quản trị không nên bỏ qua Chúng ta sẽ xem xét Hping kỹ hơn khinói về kỹ thuật quét thông qua bức tường lửa ở phần cuối của chương này
Với những kỹ thuật trình bày ở trên chúng ta đã có thể xác định chính xác hệthống đích nào trong tập mục tiêu đang hoạt động Chúng ta biết được chính xácnhững máy chủ (host) nào đang hoạt động sẽ giúp tiết kiệm rất nhiều thời gian khi tiếnhành những bước thu thập thông tin tiếp theo
Biện pháp đối phó quét Ping
Dò tìm : Như đã đề cập ở trên, lập bản độ mạng thông qua quét Ping được coi làbước đầu chuẩn bị cho một cuộc tấn công thật sự, bởi vậy nếu phát hiện được những
nỗ lực đó thì chúng ta có thể có nhiều thời gian chuẩn bị đối phó cũng như có thể biếttrước được vài thông tin về kẻ thù (in future) Phương pháp dò quét Ping có thể dựavào nhật ký (log) trên các hệ thống phát hiện xâm nhập IDS (Instrusion DetectionSystems), hay tại các thiết bị điều khiển truy cập Tuy nhiên việc dò tìm trong nhật kýxem đâu là kẻ thù là một công việc rất nhàm chán
Phòng ngừa : Phòng bệnh bao giờ cũng tốt hơn là có bệnh mới chữa Chúng tanên cấu hình bộ định tuyến và bức tường lửa chặn nhữn lưu lượng ICMP không cầnthiết Nếu tìm hiểu kỹ hơn về ICMP chúng ta có thể thấy có đến 26 loại ICMP khácnhau, mà hầu hết trong số đó đều có thể sử dụng vào những mục đích đen tối Một sốloại như ICMP nên xem xét ngăn chặn nhằm tối thiểu hóa khả năng rủi ro của mạng
Các loại ICMP Query request-replies :
EHO (Type 0,8).
TIMESTAMP (Type 13,14).
ADDRESS MARK (Type 17,18).
Trang 25Những loại ICMP này có thể được dùng để phát hiện hệ thống hoạt động, vẽbản đồ mạng, thậm chí nhận dạng hệ điều hành đang chạy trên hệ thống đích.
Các loại ICMP Error messages:
Destination Unreachable (Type 3) Source Quench (Type 4)
Redirect (Type 5) Time Exceeded (Type 11) Parameter Problem (Type 12)
Những loại ICMP này có thể bị lợi dụng để phán đoán hệ điều hành trên hệthống đích, kiểm tra lỗi của IP stack, thậm chí kẻ địch có thể sử dụng ICMP Type 5nhằm thỏa hiệp, sai khiến máy đích sử dụng một địa chỉ IP bất kỳ như là một bộ địnhtuyến Điều gì sẽ xảy ra? Khi đó kẻ địch có thể hoàn toàn kiểm soát được lưu lượngmạng của chúng ta
Tuy nhiên, nếu nhu cầu bắt buộc phải cho thông qua những loại ICMP đó thìnên hạn chế, chỉ cho phép ICMP ECHO, ECHO REPLY, HOST UNREACHABLE vàTIME EXCEEDED thông qua mà thôi Nếu có thể sử dụng ACL tại bộ định tuyến haybức tường lửa nhằm giới hạn lại những địa chỉ IP hoặc Domain cụ thể được tin tưởng(trust host – domain) là tốt nhất
2.1.2 Quét cổng
Trong phần trước chúng ta đã xác định được hệ thống đang hoạt động thôngqua quét Ping ICMP hoặc TCP Bây giờ chúng ta sẽ trình bày kỹ thuật quét cổng.Quét cổng là tiến trình kết nối cổng TCP và UDP trên hệ thống đích để xác định dịch
vụ nào đang lắng nghe (Listening) Nhận diện cổng đang lắng nghe sẽ cho biết loại hệđiều hành và ứng dụng đang chạy Qua đó có thể truy cập bất hợp pháp vào vào hệthống nếu hệ thống đó bị cấu hình sai, hoặc lợi dụng chỗ yếu bảo mật đã biết của dịch
vụ đang chạy trên hệ thống đích nhằm thỏa hiệp hệ thống đó Các kỹ thuật và công cụ
Trang 26quĩt cổng đê được phât triển rất nhiều vă có thể tìm thấy trín INTERNET Chúng ta
sẽ chỉ tập trung văo những kỹ thuật nổi bật cùng với những công cụ tương ứng manglại hiệu quả cao nhất về thông tin thu, câc công cụ năy đều lă miễn phí vă được phâttriển bởi câc dự ân mê nguồn mở
Câc kỹ thuật quĩt :
Nói đến kỹ thuật quĩt cổng, chúng ta không thể không nói tới Mr.Fyodor Ông
lă một trong những người đi tiín phong trong việc âp dụng câc kỹ thuật quĩt cổng vẵng đê hợp nhất rất nhiều kỹ thuật quĩt văo công cụ Nmap của mình Bản thđn phần
kỹ thuật quĩt cổng năy tôi cũng biín dịch lại từ băi viết của ông tại Phrack MagazineIssue 51 – file 11 – The Art of Scanning.Bđy giờ chúng ta sẽ xem lần lượt từng kỹthuật quĩt :
* Quĩt nối TCP (TCP connect() scanning) : Đđy lă dạng cơ bản nhất của kỹthuật quĩt TCP Hăm hệ thống Connect() được cung cấp bởi hệ điều hănh được sửdụng để mở kết nối tới mọi cổng tùy ý trín mây đích Nếu cổng đó đang lắng nghe thìhăm connect() thực thi thănh công – cổng đích mở, nếu không thì cổng đó đóng(Unreachable) Một trong những ưu điểm lớn nhất của kỹ thuật năy lă chúng ta khôngcần có đặc quyền siíu người dùng (Super uses privileges) để có thể gọi hăm connect()
ở hầu hết câc hệ điều hănh tựa UNIX Điểm mạnh khâc nữa lă tốc độ, khi thi hănhriíng rẽ từng hăm connect() cho mỗi cổng đích thì sẽ mất rất nhiều thời gian vớInhững liín kết chậm Tuy nhiín có thể thúc đẩy tiến trình quĩt nhanh hơn bằng câch
sử dụng song song nhiều socket Đđy lă kỹ thuật quĩt cổng nhanh nhất được biết tới.Tuy nhiín nhược điểm lớn nhất lă kỹ thuật năy sẽ kết nối cổng đích vă sẽ hoăn tất bắttay ba chiều (three hand shake) SYN, SYN/ACK vă ACK, do vậy sẽ rất dễ bị hệ thốngđích dò ra Nhật ký hệ thống trín hệ thống đích sẽ cho thấy hăng loạt những nỗ lựcliín kết vă thông bâo lỗi
* Quĩt TCP SYN : Đđy lă kỹ thuật thường được biết tới dưới thuật ngữ “Quĩt
Trang 27với cờ SYN bật (gọi tắt là gói SYN) được gửi tới cổng đích như thể chúng ta muốn tạo
ra một kết nối thật sự và chờ hồi âm Nếu nhận được SYN/ACK (gọi tắt là góiSYN/ACK) từ cổng đích thì suy ra cổng đích đó đang lắng nghe Nếu là RST có nghĩa
là cổng đích không lắng nghe Nếu nhận được SYN/ACK, chúng ta sẽ gửi lại gói dữliệu có cờ RST bật (gọi tắt là RST) nhằm hủy bỏ kết nối Kỹ thuật này có ưu điểm làkín đáo hơn kỹ thuật nối TCP đầy đủ và hầu như không bị hệ thống đích ghi nhật ký.Tuy nhiên chúng ta cần có đặc quyền siêu người dùng trên hệ thống để có thể chỉnhsửa gói SYN
* Quét TCP FIN : Hiện nay thì kỹ thuật quét TCP SYN cũng không còn đủ kínđáo nữa bởi đã có nhiều bức tường lửa và bộ lọc gói dữ liệu sẽ để ý tới những góiSYN được gửi tới những cổng quy định và những chương trình như Synlogger hayCourtney đã được phát triển để phát hiện được kỹ thuật TCP SYN Kỹ thuật quét bằngcách gửi gói dữ liệu có cờ FIN (gọi tắt là gói FIN) sẽ được sử dụng,với kỹ thuật này,cổng đóng trên hệ thống đích có xu hướng gửi trả RST khi chúng ta gửI FIN tới.Trong khi cổng mở có có xu hướng không hồi đáp lại gói FIN Đây là một lỗi giaothức của TCP và không phảI lúc nào cũng cho kết quả đúng nhất là với Windows Tuynhiên kỹ thuật này tỏ ra khá hữu hiệu trên hầu hết các hệ thống khác Windows baogồm cả Cisso, BSDL, HP/UX, MSV và IRIX
* Quét TCP Xmas Tree : Kỹ thuật này gửi gói dữ liệu TCP với tất cả các cờtrong TCP header đều được bật (ASK, FIN, RST, SYN, URG, PUSH) Cũng bởi vậy
mà kỹ thuật này có tên là “cây thông Noel” (Chritmas Tree) Khi gói TCP với tất cảcác cờ đều bật “sáng rực” được gửi đến hệ thống đích, với những cổng mở gói TCPXmas sẽ bị loại bỏ, tuy nhiên với những cổng đóng thì hệ thống đích sẽ gửi trả lạiRST Kỹ thuật này cũng chỉ cho kêt quả chính xác trên các hệ thống tựa UNIX
* Quét TCP NULL : Kỹ thuật này gửi gói dữ liệu TCP với tất cả các cờ ở TCPheader đều tắt Nếu gặp cổng đóng thì cũng sẽ nhận lại được RST và không gì cả chocổng mở Kỹ thuật này cũng chỉ hiệu quả trên hệ thống tựa UNIX
Trang 28* Quét UDP : Kỹ thuật này gửi một gói tin UDP cho cổng đích Nếu cổng đíchđáp ứng bằng một thông điệp "ICMP port unreachable ", cổng đã đóng Ngược lại,nếu không nhận được thông điệp trên, ta có thể suy ra cổng mở Độ chính xác của kỹthuật này tùy thuộc nhiều vào yếu tố có liên quan đến việc sử dụng các tài nguyênmạng và hệ thống Khi thực hiện các đợt quét cổng UDP, có thể sẽ cho kết quả khácnhau Một số thực thi IP sẽ gửi trả tất cả các RTS của tất cả các cổng đã quét dẫuchúng có đang lắng chờ hay không
* Định danh các dịch vụ TCP và UDP đang chạy : trình tiện ích của một công
cụ quét cổng tốt nhất là một thành phần quan trọng của tiến trình in dấu ấn Tuy cónhiều bộ quét cổng sẵn dùng cho cả Unix và NT , nhưng tôi sẽ đề cập đến một số bộquét cổng thông dụng và nhanh :
- Strobe :strobe là một trong những bộ quét TCP nhanh và đáng tin cậy sẵndùng , được viết bởi Julian Arrange ( ftp.win.or.jp/pup/network/misc/strobe-105.ta.gz ) Một số tính năng chính của Strobe bao gồm khả năng tối ưu hóa các tàinguyên mạng, hệ thống và quét hệ đích một cách có hiệu quả Ngòai tính hiệu quả ,phiên bản 1.04 của strobe về sau sẽ nắm giữ các banner kết hợp của từng cổng màchúng nối với Điều này có thể giúp định danh hệ điều hành lẫn dịch vụ đang chạy.Tuy nhiên Strobe cũng có một số nhược điểm là không cung cấp khả năng quét UDP
và hệ đích có thể dễ dàng phát hiện
- Up_Scan : Nếu Strobe cung cấp khả năng quét TCP thì Up_Scan là một trongnhững bộ quét UDP tin cậy nhất ( http://wwdsilx.wwdsi.com ) Nhược điểm : dễ bịphát hiện
- Netcat : trình tiện ích này có thể thực hiện rất nhiều công việc , cũng nhưnmap, nóp là công cụ không thể thiếu trong tấn cônging cũng như security Để quétTCP và UDP , ta sử dụng các tùy chọn -v và -vv , -z, -wz, -u
- PortPro và PortScan: trong WinNT thì portPro và PortScan là hai trình tiện ích
Trang 29sản phẩm của Rhad PortScan cung cấp một miền các cổng để quét trong khi portprođơn giản gia số các cổng của nó, nhưng cả hai đều không cung cấp các miền địa chỉ IP.Portpro là một trong những công cụ quét cổng nhanh nhất sẵn dùng , tuy nhiên càctùy chọn của nó còn hạn chế
- Ngoài ra, công cụ quét cổng mạnh nhất vẫn là nmap ( đã giới thiệu ở phầntrước )
* Các công cụ phát hiện tự động:
+ Cheops ( http://www.marko.net/cheops/ ) cung cấp khả năng quét ping, traceroute , khả năng quét cổng và tính năng phát hiện hệ điều hành
+ Tkined là một phần của bộ Scotty có tại
trong TCL tích hợp các công cụ quản lý mạng khác nhau ,cho phép chúng ta phát hiệncác mạng IP
2.3 Điểm danh mạng
Giả sử việc thực hiện các bước I và II đều không thành công hoặc những thôngtin thu được không thể đủ để phát động một cuộc tấn công tức thời nào,chúng ta sẽchuyển sang phương pháp định danh các tài khoản người dùng hợp lệ hoặc các tàinguyên dùng chung không được bảo vệ kỹ
Enumeration (điểm danh) là một cách để trích các tài khoản hợp lệ hoặc các tàinguyên từ hệ thống Sự khác biệt chính giữa các kỹ thuật thu thập thông tin ở phần Indấu ấn (Foot Printing) và quét mạng ( scanning) với kỹ thuật điểm danh (enumeration)dưới đây nằm ở cấp xâm nhập Điểm danh liên quan đến các tuyến nối tích cực vớicác hệ thống và các truy vấn có định hướng
Phần lớn thông tin thu thập được qua kỹ thuật điểm danh thoạt nhìn có vẻ như
vô hại Tuy nhiên, những thông tin rò rĩ từ lỗ thủng theo sau nó có thể gây tai hại Nóichung, sau khi điểm danh một tên người dùng hoặc một phần dùng chung hợp lệ, vấn
Trang 30đề còn lại là thời gian để chúng ta đoán được mật hiệu tương ứng hoặc tìm ra các điểmyếu kết hợp với các giao thức chia sẽ tài nguyên.
Những thông tin mà kỹ thuật điểm danh thu được có thể tạm thu gọn thành cácphạm trù sau :
- Các tài nguyên mạng và các phần dùng chung
Đối với kỹ thuật điểm danh thì WinNT có thể xem là một môi trường thân thiết
Điểm danh khu ủy (domain) của winNT bằng netview :
Windows là hệ điều hành được thiết kế tạo thuận lợi cho tính năng duyệt các tàinguyên mạng, do đó tiến trình điểm danh các domain NT là cực kỳ đơn giản so vớicác hệ điều hành khác Trong hầu hết các trường hợp, chỉ cần dùng các công cụ càisẵn trong OS (Operating System) Lệnh netview là một thí dụ điển hình Nó sẽ liệt kêcác domain sẵn dùng trên mạng, rồi đưa ra thông tin của tất cả các máy tính trong mộtdomain (ta cũng có thể dùng thông tin từ các đợt quét ping trong các phần trước đểtìm hiểu các tên domain từ các máy riêng lẻ chỉ việc dùng địa chỉ IP thay cho servername Sau đây là thí dụ :
Trước hết là điểm dang các domain trên mạng :
C:\> netview /domain
Liệt kê các máy tính trong 1 domain cụ thể :
C:\> netview /domain:têndomain
Trang 31Điểm danh các hệ điều khiển domain NT :
Để hiểu sâu hơn một chút vào cấu trúc mạng NT, ta cần dùng một công cụ từ
NT Resource Kit ( NTRK) :
- NTRK là một bộ tài liệu bổ trợ cho WinNT có kèm CD chứa các trình tiện ích
để quản lý mạng NTRK chứa một tập hợp các trình tiện ích mạnh, đa dạng từ ngônngữ, bao gồm các công cụ điều hành từ xa không có trong các phiên bản lẻ củaWinNT Nó là một bộ đồ nghề không thề thiếu cho các điều hành viên mạng NT vàcũng là công cụ hữu ích cho chúng ta khi muốn khai thác winNT Để thực hiện côngviệc điểm danh trên NT ta dùng công cụ có tên là nltest trong NTRK để định danh cácPDC (Primary Domain Controllers) và BDC (Backup Domain Controllers)
Câu lệnh : C:\> nltest /delist:[domain name]
Để tiến xa hơn, ta dùng Holy Grail của tính năng điểm danh NT, tuyến nốirỗng, hoặc nặc danh Sau khi xác lập một phiên làm việc rỗng cho một trong các máytrên khu ủy điểm danh, ta có thể dùng cú pháp nltest /server:[server name] và/trusted_domain để tìm hiểu thêm các domain NT có liên quan đến domain đầu tiên
2.3.1.1 Phương pháp NT toàn cục
Hầu hết các kỹ thuật thu thập thông tin mà tôi mô tả trong phần này đều vậndụng một thiếu sót về bảo mật của winNT là cho phép các người dùng nặc danh(anonymous user) kết nồi và điểm danh một số tài nguyên nhất định mà không cần sự
"cho phép" Chỗ yếu này được biết đến với cái tên "Red Button", tuyến nối phiên làmviệc rỗng hay đăng nhập nặc danh và nó vẫn là chỗ đứng có tiềm năng tàn phá nhấtkhi chúng ta tấn công trên mạng Để thực hiện một tuyến nối phiên làm việc rỗng, tadùng cú pháp:
C:\> net use \\IP\IPC$ ''''''' /user:'''''
Cú pháp trên nối "phần dùng chung" truyền thông tin xử lý ẩn (IPC$) tại địa chỉ
IP mà ta cung cấp dưới dạng người dùng nặc danh là [user:''''] và một mật hiệu rỗng['''''''] Nếu thành công, ta có thể có một lệnh mở để sử dụng những kỹ thuật khác nhau
Trang 32nhằm "thu gom" càng nhiều thông tin càng tốt : thông tin mạng , các phần dùngchung, các người dùng , các nhóm , các khóa Registry
2.3.1.2 Các phần dùng chung NetBIOS
Sau khi thiết lập một phiên làm việc rỗng, ta cũng có thể dùng lại lệnh net view
để điểm danh các phần dùng chung trên hệ thống từ xa
Ba công cụ điểm danh các phần dùng chung khác trong NTRK là rmtshare ,srvcheck và srvinfo
Một trong các công cụ thích hợp nhất để điểm danh các tệp dùng chung NT vàcác nội dung khác là Dump ACL Dump ACL kiểm toán mọi thứ, từ giấy phép hệ tậptin đến các dịch vụ sẵn dùng trên các hệ thống từ xa Thậm chí nó còn có thể lấy thôngtin người dùng cơ bản qua một tuyến nối rỗng vô hại, và có thể chạy từ dòng lệnh, tạothuận lợi cho việc lập ký mã và tự động hóa
Việc mở các tuyến nối rỗng và dùng các công cụ trên đây theo thủ công là mộtphương pháp tuyệt vời cho các cuộc tấn công có định hướng, nhưng chúng ta có thể
sử dụng một bộ quét NetBIOS để nhanh chóng kiểm tra nguyên cả mạng để tìm cáctệp dùng chung Một trong các công cụ phổ dụng đó là Legion (có thể tìm thấy trêninternet) Legion có thể quét qua qua một mạng IP Class C và tiết lộ tất cả các tệpdùng chung sẵn dùng trong giao diện đồ họa của nó Phiên bản 2.1 có gộp một công
cụ, công cụ này sẽ cố gắng nối kết với một tệp dùng chung nhất định thông qua mộtdanh sách các mật hiệu do người dùng cung cấp Một bộ quét tệp dùng chungwindows phổ dụng khác là NetBIOS Auditing Tool (NAT) cũng có thể tìm thấy trêninternet
2.3.1.3 Các kiểu điểm danh NT khác
Ngoài ra còn có một số bộ điểm danh thông tin mạng NT khác như: epdumpcủa Microsoft (http://www.ntshop.net/security/tools/def.htm), getmac và netdom trongNTRK và netviewx (http://www.ibt.ku.dk/jesper/NTtools/) epdump truy vấn bộ ánh