Lờ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 đại
cũ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âm
nhậ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ông
tin sai lệch hoặc ra lệnh … ngưng chiến. Thực tế trong cuộc chiến tranh Vùng vịnh
nă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át
hiệ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 đây
trong 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 ra
lờ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 cao
thì 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àng
lớ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ông
nghệ 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êu
cho 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ấn
cô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ột
yê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ết
nà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
mì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.
1
Nhiệm vụ đồ án: Nghiên cứu, nắm được các kỹ thuật tiêu biểu trong tấn
cô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át
mạ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ất
mong 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.
2
Chươ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áy
tí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 sao
chú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ới
132.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ột
và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.
3
Đị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ách
sau :
+ 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 ``do
not 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.
+ 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ức
thự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ụng
cần giao tiếp. Proxy server xác định những yêu cầu từ client và quyết định đáp ứng
hay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật
thay cho client và tiếp tục chuyển tiếp đến những yêu cầu từ client đến server, cũng
như đáp ứng những yêu cầu của server đến client. Vì vậy proxy server giống cầu nối
trung 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ên
internet, đ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.
4
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ữa
bastion host và screening rounter.
1.3 Vitual port
Vitual port (cổng ảo) là 1 số tự nhiên được gói ở trong TCP (Tranmission
Control Protocol) và UDP (User Diagram Protocol) header. Như chúng ta đã biết,
Windows có thể chạy nhiều chương trình 1 lúc, mỗi chương trình này có 1 cổng riêng
dùng để truyền và nhận dữ liệu. Ví dụ 1 máy có địa chỉ IP là 127.0.0.1 chạy
WebServer, FTP_Server, POP3 server, etc, những dịch vụ này đều đuọc chạy trên 1 IP
address 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 ta
phâ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ó port
mặ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ông
biế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ắc
chú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ố port
mặ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 :8080, 8080 ở đây
chí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ển
hostname 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 .
5
1.5 Ping và cách sử dụng
Ping là 1 khái niệm rât đơn giản tuy nhiên rất hữu ích cho việc chẩn đoán mạng.
Tiểu sử của từ ``ping`` như sau: Ping là tiếng động vang ra khi 1 tàu ngầm muốn biết
có 1 vật thể khác ở gần mình hay không, nếu có 1 vật thể nào đó gần tàu ngầm tiếng
sóng âm này sẽ va vào vật thể đó và tiếng vang lại sẽ là ``pong`` vậy thì tàu ngầm đó
sẽ biết là có gì gần mình.
Trên Internet, khái niệm Ping cũng rất giống với tiểu sử của nó như đã đề cập ở
trên. Lệnh Ping gửi một gói ICMP (Internet Control Message Protocol) đến host, nếu
host đó ``pong`` lại có nghĩa là host đó tồn tại (hoặc là có thể liên kết tới được). Ping
cũ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âu
gó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à ``trip
time``). Ping cũng có thể được dùng để làm chậm đi hoặc đổ vỡ hệ thống bằng lụt
ping. 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ủa
chú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
6
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ăng
thô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ách
liê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ải
ping -f nếu chúng ta dùng một bản tương thích POSIX (POSIX - Portable Operating
System Interface dựa trên uniX), nếu không nó sẽ không phải là một bản Unix/Linux
thự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 hay
Linux, nó sẽ có tham số -f.
1.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ạng
text (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ông
tin 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ứng
củ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ào
site, những thông tin về người dùng được lưu trữ trong cookie. Ở những lần truy cập
sau đến site đó, web site có thể dùng lại những thông tin trong cookie (như thông tin
liê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 đăng
nhậ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 trong
cookie 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ển
site có thể thực hiện được.
Cookies thường có các thành phần sau :
7
+ 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ận
dạ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ạn
trong khoảng 4k.
1.7 Gói tin TCP/IP
TCP/IP viết tắt cho Transmission Control Protocol and Internet Protocol, một
Gó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ói
tin. 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.
8
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
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ác
chiế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áo
cá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
9
- 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
- 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ấn
cô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ập
mạ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ức
tiế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ậy
khô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ương
mụ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ật
trinh 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ụ.
10
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 3
bướ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).
Việ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
2.1.3 Kỹ thuật in dấu ấn
Có rất nhiều kỹ thuật in dấu ấn khác nhau, tôi sẽ mô tả các bước giúp chúng ta
hoàn thành một đợt phân tích dấu ấn kỹ lưỡng.
2.1.3.1 Bước 1: định phạm vi hoạt động:
Bước này nói cho đơn giản là chúng ta phải xác định rõ cái mà chúng ta muốn
tấn công là gì (một công ty , một server hay chỉ là một web cá nhân )
- Đối với người mới bắt đầu, chúng ta nên đọc kỹ và ghi lại những thông tin mà
trang web cung cấp cho chúng ta (những thông tin về nó, như số điện thoại, e-mail của
webmaster, địa chỉ ). Có nhiều khi những thông tin này lại là "chiếc chìa khoá
vàng" cho chúng ta. Những mục đáng quan tâm bao gồm :
+ 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
11
+ 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 fire
wall 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.
Sau khi nghiên cứu trang web, chúng ta tìm thêm những thông tin cung cấp các
manh 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)
Một số kiểu truy vấn :
+Organizational : Tất cả các thông tin có liên quan đến một tổ chức cụ thể
+Domain: domain
+Network: mạng hoặc IP
+Point of contact: 1 cá nhân cụ thể (admin)
2.1.3.3 Bước 3 : Truy vấn DNS
12
Sau khi định danh các domain của tổ chức đích (victim), chúng ta có thể bắt đầu
truy vấn DNS . Nếu DNS được cấu hình bấp bênh, ta có thể moi được thông tin tiết lộ
về tổ chức. Một trong những cách cấu hình sai nghiêm trọng nhất mà một điều hành
viên có thể mắc phải là cho phép người dùng internet không tin cậy thực hiện chuyển
giao miền DNS (zone transfer). Sự cố này có thể cho thấy tên hệ chủ, các IP ẩn nói
chung là các thông tin muốn che dấu. Việc cung cấp địa chỉ IP bên trong cho một
ngườ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ác
con đườ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
( có trong hầu hết phiên bản của Unix & WinNT. Trong
WinNT, 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 xem
tuyế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
() để thực hiện tiến trình trinh sát (tracerouting) này. Giao
diệ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ới
cá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ến
trình quét giao thức firewall"
13
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ây
giờ, 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ụng
gì?", " 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
2.1.4.1 Khái niệm
Traceroute là một chương trình cho phép chúng ta xác định được đường đi của
các gói packets từ máy chúng ta đến hệ thống đích trên mạng Internet.
Một ví dụ về Traceroute.
Traceroute có thể làm được gì? Chúng ta hãy xem ví dụ sau sẽ rõ.
C:\windows>tracert 203.94.12.54
Tracing route to 203.94.12.54 over a maximum of 30 hops
1 abc.netzero.com (232.61.41.251) 2 ms 1 ms 1 ms
2 xyz.Netzero.com (232.61.41.0) 5 ms 5 ms 5 ms
3 232.61.41.10 (232.61.41.251) 9 ms 11 ms 13 ms
4 we21.spectranet.com (196.01.83.12) 535 ms 549 ms 513 ms
5 isp.net.ny (196.23.0.0) 562 ms 596 ms 600 ms
6 196.23.0.25 (196.23.0.25) 1195 ms1204 ms
7 backbone.isp.ny (198.87.12.11) 1208 ms1216 ms1233 ms
8 asianet.com (202.12.32.10) 1210 ms1239 ms1211 ms
9 south.asinet.com (202.10.10.10) 1069 ms1087 ms1122 ms
10 backbone.vsnl.net.in (203.98.46.01) 1064 ms1109 ms1061 ms
11 newdelhi-01.backbone.vsnl.net.in (203.102.46.01) 1185 ms1146 ms1203 ms
12 newdelhi-00.backbone.vsnl.net.in (203.102.46.02) ms1159 ms1073 ms
13 mtnl.net.in (203.194.56.00) 1052 ms 642 ms 658 ms
14
Tô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ương
sống - Backbone Provider) -> New York ISP -> New York Backbone -> Asia ->
South Asia -> India Backbone -> New Delhi Backbone -> một router khác trong New
Delhi 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à host
203.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ác
lỗ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ầng
vận huyển - Transpoort Layer. Tầng ứng dụng HTTP FTP Telnet Finger SSH DNS
POP3/IMAP SMTP Gopher BGP
Time/NTP Whois TACACS+ SSL DNS SNMP RIP
RADIUS Archie
Traceroute tftp Ping
Tầng vận chuyển
TCP
UDP
ICMP
15
OSPF
Tầng Internet
IP
ARP
Tầng vật lí Ethernet/802.3 Token Ring (802.5) SNAP/802.2 X.25 FDDI ISDN
Frame Relay SMDS ATM Wireless (WAP, CDPD, 802.11)
Fibre 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ỗi
ICMP 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 error
message 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ếu
type=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 định
mộ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ột
khi được chuyển qua một bộ định tuyến trên mạng. Khi giá trị này bằng 0, datagram
16
nà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ánh
cho 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ủa
datagram này đi một. Hầu hết các bộ định tuyến đều không giữ lại datagram này trong
thời gian quá 1 giây trước khi chuyển datagram này đi. Nên giá trị TTL có thể coi
bằng hop(counter) = số bộ định tuyến mà datagram này vừa vượt qua.
Khi 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ởi
một ICMP message "Time Exceeded"(quá thời gian) trở lại cho người đã gởi
datagram 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ên
nhận được datagram này sẽ giảm giá trị TTL đi một -> TTL=0 và router này sẽ bỏ qua
datagram này(không gởi nó đi tiếp.) và gởi một ICMP error message với địa chỉ ip
nguồn là địa chỉ của nó đến máy chúng ta. Như vậy router có thể xác định địa chỉ ip
củ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 được
datagram có TTL=1 sẽ giảm TTL=0. Rounter 2 nhận thấy TTL=0 nên nó sẽ không
chuyển datagram này đi tiếp. Router 2 sẽ gởi trở lại máy chúng ta một ICMP error
message với địa chỉ ip nguồn là địa chỉ ip của nó(router 2). Như vậy trình traceroute
trên máy chúng ta sẽ biết được router thứ 2 mà datagram đã đi qua. Traceroute sẽ tiếp
tụ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 khi
datagram đến được hệ thống đích.
17
Nếu bây giờ IP datagram đã đến được đích, TTL=1. Host đích sẽ bỏ qua
datagram 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?. Traceroute
dù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ệu
lớ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ẽ
gởi trả lại một ICMP error message "Port Unreachable"(không đến được cổng) cho
traceroute. Bây giờ thì traceroute có thể phân biệt được sự khác nhau giữa ICMP error
message "Time Exceeded" với "Port Unreachable" để biết được đã đến được đích hay
chưa?.
Ghi chú: ICMP error message "Time Exceeded" có type=1 và code=0; ICMP
eror 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ại
cho traceroute một ICMP message "Port Unreachable". Traceroute dựa vào sự khác
biệ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òn
cho 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).
18
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ình
traceroute một ICMP message error "Time Exceeded". Traceroute sẽ gởi tiếp một
datagram đế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ột
router, nó sẽ gởi trở lại cho traceroute một ICMP error message "Port Unreachable".
Khi nhận được ICMP message này, traceroute sẽ biết được đã đến được hệ thống đích
xyz.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ấu
sao "*"(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ông
tin 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ông
tin đó 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ống
thì Ping sẽ gửi gói dữ liệu ICMP REPLY (Type 8) đến hệ thống đích với nỗ lực lấy
ICMP 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ưng
trên mạng lớn thì Ping không đủ hấp dẫn vì sẽ mất rất nhiều thời gian.
19
Để quét Ping, đối với hệ điều hành Windows, chúng ta có thể sử dụng vô số các
cô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 song
hà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ải
tên máy chủ và lưu kết quả ra tập tin. Do đó, Pinger sẽ quét nhiều địa chỉ IP nhanh
hơn Ping.
Nế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ưu
lượ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ắng
nghe (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ệu
TCP 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 đang
hoạ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í cho
phé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 song
song 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/)
20
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ên
thử kỹ thuật này với những cổng như : SNMP(25), DNS(53), POP(110), IMAP(143).
Hping2 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ậy
cho 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 tin
TCP được phân mảnh (Fragmentation) nhằm qua mặt một số thiết bị điều khiển truy
cậ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
21
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ề
khi 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ùy
chọ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ột
cô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 khi
nó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ác
nhữ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ến
hà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ết
trước được vài thông tin về kẻ thù (in future). Phương pháp dò quét Ping có thể dựa
vào nhật ký (log) trên các hệ thống phát hiện xâm nhập IDS (Instrusion Detection
Systems), 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 ta
nê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ần
thiế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ác
nhau, 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.
22
Các loại ICMP Query request-replies :
EHO (Type 0,8).
TIMESTAMP (Type 13,14).
ADDRESS MARK (Type 17,18).
INFORMATION (Type 15,16).
Nhữ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 5
nhằ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ộ định
tuyế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ượng
mạ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 hay
bứ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ông
qua 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.
23
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ụ
qué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 mang
lạ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át
triể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 Magazine
Issue 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ông
cầ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ành
riê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ớI
nhữ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ắt
24
tay 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ực
liê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
bán mở” (half – open) vì không hoàn tất kết nốI TCP đầy đủ. Thay vào đó, gói dữ liệu
vớ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ói
SYN/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ỉnh
sử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ói
SYN được gửi tới những cổng quy định và những chương trình như Synlogger hay
Courtney đã được phát triển để phát hiện được kỹ thuật TCP SYN. Kỹ thuật quét bằng
cá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 giao
thứ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. Tuy
nhiê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 bao
gồ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 TCP
25