Một trong những bước được cho là quan trọng nhất trước khi hack vào một hệ thống là lấy được địa chỉ IP của hệ thống đó. Tuy nhiên, đôi khi chúng ta lấy địa chỉ IP chỉ vì muốn biết thêm thông tin về một người hay máy chủ nào đó. Nhưng làm cách nào để biết được vị trí địa lý hay các thông tin khác về hệ thống đó mà chỉ thông qua địa chỉ IP có được? Bài hướng dẫn này của tôi sẽ tập trung trả lời câu hỏi trên.
Trên thực tế, cách xây dựng cấu trúc địa chỉ IP (đúng hơn là toàn bộ giao thức TCP/IP) không cho phép người ta chỉ nhìn vào IP mà biết được vị trí địa lý của hệ thống đang có địa chỉ IP đó. Trong địa chỉ IP không có phần nào cho bạn biết ngay máy tính đang được gán địa chỉ đó nằm ở nước nào. Vì thế, tất cả các câu nói kiểu như “phần thứ hai hay thứ ba của một địa chỉ IP thay thế cho nước mà hệ thống đang được gán IP đó hoạt động” chỉ là chuyện hoang đường.
Tuy nhiên, đúng là đôi khi, một người, chỉ cần nhìn vào 3 nhóm chữ số (octet) đầu tiên của một địa chỉ IP, có thể đoán hay suy diễn ra được hệ thống đang dùng địa chỉ IP đó nằm tại nước nào, thậm chí tại thành phố nào. Các bạn hãy xem minh hoạ sau thì sẽ hiểu ý tôi. Tuy nhiên, trước khi xem xét ví dụ, chúng ta thử tìm hiểu xem chính xác địa chỉ IP được gán cho người sử dụng như thế nào.
Đầu tiên, ISP (Internet Service Provider: nhà cung cấp dịch vụ Internet) của bạn đăng ký với cơ quan quản lý địa chỉ Internet và xin được cấp một dãy địa chỉ IP nhất định, mà sau đó các khách hàng (những người quay số kết nối vào server của ISP) sẽ được gán một trong những địa chỉ IP thuộc dãy này. Phần lớn các ISP được gán nhóm địa chỉ mạng lớp C. Một địa chỉ mạng lớp C bao gồm tiền tố mạng 24-bit (ba octet đầu tiên của một địa chỉ IP) và một số mạng 8-bit (octet cuối cùng). Nó thường được biết đến là “24’s” và được phần lớn các ISP sử dụng.
Giống như trong đời thường, một người có một địa chỉ nhà và có số điện thoại mà người khác có thể liên lạc với anh ta qua địa chỉ và số điện thoại đó, một máy tính khi nối mạng được gán một địa chỉ IP duy nhất được sử dụng để liên lạc với máy tính đó. Nếu diễn tả theo hệ thập phân thì địa chỉ IP gồm 32 bit được chia thành 4 octet, dĩ nhiên, mỗi octet 8 bit.
Liệu địa chỉ IP đó có cho ta biết thông tin gì không? Hay những con số đó có nói lên điều gì không?
Hãy thử xem địa chỉ IP của một máy tính: 202.144.49.110. Phần trước dấu chấm đầu tiên (tức là số 202) gọi là “số Mạng” hay còn gọi là “tiền tố MẠNG” (network prefix, trong một vài tài liệu tham khảo khác: network id – người dịch) Đây chính là số mạng mà máy chủ kết nối vào. Phần thứ hai (144) là chỉ số của máy chủ trong mạng nói trên. Điều đó có nghĩa là các máy tính trong cùng một mạng có phần “số mạng” (network number hay network id) trong địa chỉ IP giống nhau. Người ta phân ra các lớp địa chỉ IP để có thể phân bố mạng linh hoạt hơn tuỳ theo độ lớn của mạng.
Lớp A ( /8 Prefixes) 1.xxx.xxx.xxx đến 126.xxx.xxx.xxx
Lớp B ( /16 Prefixes) 128.0.xxx.xxx đến 191.255.xxx.xxx
Lớp C ( /24 Prefixes) 192.0.0.xxx đến 223.255.255.xxx
Các lớp khác nhau nói trên đươc giải thích rõ bởi các nội dung tóm tắt dưới đây:
Mỗi địa chỉ IP trong lớp A bao gồm 1 tiền tố mạng 8 bit (network prefix) và 1 số máy chủ 24 bit (host number). Lớp địa chỉ này là lớp nguyên khai, các địa chỉ IP này cũng được viết là “/8” hay chỉ đơn giản là “8” vì chúng có tiền tố mạng 8 bit.
Địa chỉ IP trong lớp B có tiền tố mạng 16 bit và số máy chủ 16 bit. Nó còn được gọi là “16”.
Một địa chỉ IP trong lớp C bao gồm tiền tố mạng 24 bit và 1 số máy chủ 8 bit. Chúng còn được gọi là “24” và được cấp cho nhiều ISP nhất.
Số người sử dụng Internet ngày càng tăng làm cho cơ quan quản lý địa chỉ Internet gặp nhiều khó khăn hơn trong việc định tuyến các địa chỉ IP. Bảng phân phối các địa chỉ IP mở rộng khiến các nhà chức trách buộc phải xin một địa chỉ mạng Internet mới trước khi triển khai một hệ thống mạng trong địa phương mình. Đây chính là lúc Sub-netting ra đời.
Nếu như nhà cung cấp dịch vụ Internet của bạn là một là cung cấp lớn và cấp cho bạn một địa chỉ IP động một lần bạn kết nối Internet, rất có thể bạn sẽ nhận thấy trong các lần bạn kết nối Internet, địa chỉ IP mà bạn được cấp sẽ có 24 bit đầu là giống nhau, và 8 bit cuối sẽ thay đổi. Điều này có thể giải thích bằng sự có mặt của sub-netting, vì khi đó, cấu trúc địa chỉ IP sẽ có dạng:
xxx.xxx.zzz.yyy
trong đó, 2 phần đầu là các số tiền tố mạng, zzz là số mạng con (phụ)(subnet) và yyy là số của máy tính đang kết nối. Thế có nghĩa là bạn luôn kết nối tới một subnet trong một mạng máy tính. Vì thế, ba phần đầu trong địa chỉ IP của bạn sẽ luôn giữ nguyên mỗi lần bạn kết nối Internet thông qua nhà cung cấp dịch vụ của bạn, chỉ có phần cuối cùng là thay đổi
Ví dụ, một ISP xyz nào đó được cấp một dãy địa chỉ mạng là: 203.98.12.xx thì mỗi khi bạn kết nối Internet qua ISP này và được cấp một địa chỉ IP, ba phần đầu của IP của bạn sẽ là 203.98.12. Rõ ràng chưa?
Như vậy, về cơ bản, mỗi ISP được cấp một dãy các địa chỉ riêng biệt mà sau đó nó sẽ gán cho các khách hàng sử dụng dịch vụ Internet của mình. Tất cả các thuê bao hay những người kết nối internet qua cùng một nhà cung cấp dịch vụ sẽ nằm cùng trong dãy địa chỉ IP mà ISP đó được cấp. Điều này cũng có nghĩa tất cả những thuê bao của một ISP có thể sẽ được cấp những IP mà có 3 phần đầu tiên giống nhau khi kết nối Internet.
Điều này cũng có nghĩa là nếu bạn tìm hiểu và thống kê thật nhiều (ý tôi nhiều theo đúng nghĩa thật nhiều) bạn có thể biết được một người đang sử dụng dịch vụ Internet của ISP nào mà chỉ cần nhìn vào IP của người đó. Tên của ISP sau đó có thể xác định người này đang ở thành phố và quốc gia nào. Đúng không? Để tôi lấy một ví dụ cho các bạn thấy rằng tuy rằng việc này hơi lằng nhằng nhưng nó dễ dàng như thế nào (tất nhiên là sau khi bạn đã tìm và thống kê đủ nhiều các ISP)
Ví dụ, tại nước tôi, có 3 nhà cung cấp dịch vụ Internet và lần lượt được cung cấp các dãy địa chỉ như sau:
ISP I 203.94.47.xx
ISP II 202.92.12.xx
ISP III 203.91.35.xx
Bây giờ, ví dụ tôi biết được địa chỉ IP của một người bạn trên mạng của tôi là: 203.91.35.12, thì tôi có thể đoán ngay rằng anh bạn tôi đang sử dụng dịch vụ của ISP III để kết nối Internet. Đúng không? Bạn có thể nói rằng một Ông ngốc cũng có thể nói được như thế. Ừ thì cũng đúng, nhưng bạn phải biết rằng với cách này, bạn phải thu thập được đầy đủ tên các ISP và bảng phân phối địa chỉ IP trong tay. Thế, điều tôi muốn nói ở đây là phương pháp trên chỉ thành công sau khi đã nghiên cứu và thống kê rất nhiều. Và theo ý tôi, những thống kê như vậy cũng sẽ hữu ích trong các việc khác nữa.
Hơn nữa, cách này không phải lúc nào cũng áp dụng thành công nếu như xét trên một quy mô lớn hơn. Nhỡ địa chỉ IP mà bạn có được lại là của một người sống trong căn lều tuyết tận cực Bắc thì sao? Bạn có thể sẽ chả có được tất cả địa chỉ mạng được phân phối của mọi ISP trên thế giới này đâu.
Lưu ý là trong trường hợp trên, bạn cũng có thể biết hệ thống có IP này ở thành phố nào, vì phần lớn các ISP sử dụng các địa chỉ IP khác nhau ở các thành phố khác nhau. Cũng như thế, một số ISP chỉ hoạt động tại một thành phố mà thôi.
Vậy thì có cách nào hay hơn để biết được vị trí địa lý của một IP không? Có chứ, chìa khóa chính là việc tra cứu DNS ngược.
Cũng giống như DNS look up tra cứu và chuyển một tên miền thành địa chỉ IP, một lệnh tra cứu DNS ngược chuyển địa chỉ IP của một máy tính thành một tên miền. Tên miền, ý tôi là địa chỉ của một hệ thống được thể hiện bằng chữ abc, cùng với số và dấu phân cách, ví dụ mail2.bol.net.in là một tên miền, và 203.45.67.98 không được coi là một tên miền.
Công cụ thông dụng và tuyệt vời “nslookup” của Unix có thể được dùng để tra ngược lại DNS.
Nếu bạn dùng *nix hoặc có một shell account, việc đầu tiên là bạn tìm xem công cụ nslookup được giấu ở đâu với lệnh
‘whereis nslookup’
Một khi bạn đã biết được công cụ này ở chỗ nào, bạn có thể dùng nó để tra DNS hoặc tra ngược các DNS. Vì đây không phải là bài hướng dẫn sử dụng lệnh “nslookup” nên tôi sẽ chỉ đưa ra những chỉ dẫn tối thiểu có liên quan mà thôi. Nếu muốn biết thêm chi tiết về hoạt động và cách sử dụng, bạn hãy đọc những tài liệu hướng dẫn chuyên về *nix.
Chúng ta có thể sử dụng ‘nslookup’ để tra ngược một DNS bằng cách gõ vào địa chỉ IP của máy sau dấu nhắc lệnh
Cấu trúc:
$ > nslookup IP Address
Ví dụ, thay vì gõ vào từ ``IP Address``, chúng ta gõ vào 203.94.12.01 (IP mà ta muốn theo dõi)
$ > nslookup 203.94.12.01
Sau đó, có thể bạn sẽ nhận được câu trả lời có dạng như: mail2.bol.net.in
Địa chỉ IP và máy tính trong bài được đưa ra với mục đích minh họa, chúng có thể không tồn tại.
Bây giờ, nếu bạn nhìn kỹ vào mạng máy tính mà việc tra ngược DNS cho kết quả, bạn sẽ thấy phần cuối sẽ cho ta biết thông tin mạng máy tính đó đặt ở nước nào. Thấy không, phần “.in” cho ta biết, mạng này nằm ở Ấn Độ (India). Tất cả các quốc gia đều có một mã quốc gia, mã này phần lớn sẽ xuất hiện trong phần cuối của một máy tính hay một hệ thống trong đặt trong quốc gia đó. Cách này cũng có thể cho bạn biết một người ở nước nào nếu biết được địa chỉ email của người đó. Ví dụ, nếu một người có địa chỉ email kết thúc với .ph thì có thể người này sống ở Philippin và nếu địa chỉ email có đuôi là .il thì rất có thể anh ta sống ở Israel, tương tự như thế. Một số mã quốc gia thường thấy là:
Country Code
Australia .au
Indonesia .id
India .in
Japan .jp
Israel .il
Britain .uk
Muốn biết thêm chi tiết về mã quốc gia, bạn thử ghé qua:
http://www.alldomains.com/http://www.iana.org/domain-names.htmlNgười dùng Windows có thể thực hiện lệnh tra ngược DNS qua Samspade tại
www.samspade.orgMột cách khác để biết được chính xác vị trí địa lý của một địa chỉ IP là tận dụng cơ sở dữ liệu của WHOIS. Cơ sở dữ liệu WHOIS về cơ bản là một CSDL chính bao gồm tên và địa chỉ liên lạc của người sở hữu một tên miền. Vì vậy, về cơ bản, bạn chỉ cần thực hiện một lệnh whois, cung cấp cho nó một hostname mà bạn muốn biết thêm thông tin. Dịch vụ whois này sẽ cho bạn những thông tin mà nó có trong CSDL.
Với cách này, bạn có thể có được thông tin tương đối chính xác về một địa chỉ IP hay một máy tính nào đó, tuy nhiên, cũng có thể nó chả có ích gì nếu bạn muốn tìm được địa điểm chính xác của một địa chỉ IP động. Nhưng, cần phải nhắc lại là ít nhất bạn cũng sẽ biết được ISP mà nạn nhân đang kết nối Internet với nằm ở thành phố nào.
Bạn có thể dùng WHOIS trên
http://allwhois.com/Bạn cũng có thể gõ trực tiếp dòng lệnh vào thanh địa chỉ của browser
Ví dụ:
http://205.177.25.9/cgi-bin/whois?abc.comChú ý, bạn phải thay abc.com bằng tên miền mà bạn muốn sử dụng lệnh whois để tra. Dùng cách này, bạn không thể biết được địa chỉ liên lạc của 1 người nếu địa chỉ IP mà bạn dùng để truy tìm dấu vết anh ta lại phụ thuôc vào ISP của anh ta. Vì thế, bạn phải biết được tên miền (được chính người này đăng kýdưới tên anh ta) không thì bạn chỉ biết được tên thành phố (hoặc ISP) mà người đó đã đăng ký theo chúng .
Ví dụ như nạn nhân đã đăng ký một tên miền và bạn muốn qua tên miền này tìm xem anh ta đang ở đâu. Nhưng phải lưu ý một điểm là nếu nạn nhân này dùng một trong hàng loạt những dịch vụ đăng ký tên miền miễn phí như kiểu Namezero.com, thì tên miền này có thể đăng ký trên danh nghĩa công ty chứ không phải chính nạn nhân. Vì thế, kết quả sau khi whois sẽ là tên của ISP đó chứ không phải là tên của nạn nhân.
*****
Gửi tới các newbie, dịch vụ WHOIS mặc định chạy qua cổng 43. Thử dùng lệnh này bằng cách telnet tới cổng 43 và gõ lệnh này vào. Tôi chưa thử bao giờ, nhưng chắc là sẽ hứa hẹn cái gì đó thú vị đấy.
*****
Một cách khác để tìm vị trí địa lý của một địa chỉ IP và có thể nói hữu hiệu chỉ thua cách trên (Reverse DNS queries) mà thôi là áp dụng tiện ích ‘theo dõi dấu vết’ (traceroute)
Tiện ích “tracert” hay “traceroute” sẽ cho bạn biết tên hay IP của những máy tính trung chuyển trong suốt quãng đường gói tin đi qua trước khi đến được điểm cuối. Những người dùng Windows có thể thực hiện việc theo dõi một IP bằng cách chạy câu lệnh này trong command prompt:
C:\windows > tracert IP or Hostname
(Bạn hãy gõ lệnh ‘tracert’ trong command prompt để biết rõ hơn về cách sử dùng và cú pháp của lệnh này)
Dù sao, chúng ta cùng xem kết quả trả về như thế nào khi tôi thử lệnh này với chính địa chỉ IP của tôi. Tôi đang ở New Delhi, một thành phố tại Ấn Độ. Bạn hãy để ý kỹ tên các máy chủ, bạn sẽ thấy nó tiết lộ các thành phố mà gói tin này được chuyển qua.
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
Như thế, các dòng trên cho ta thấy chặng đường mà gói tin đi qua trước khi đến được địa chỉ IP cung cấp trước:
Netzero (ISP nơi cung cấp địa chỉ IP) --- > Spectranet (A Backbone Provider) ----- > New York ISP --- > New York Backbone - > Asia -- > South Asia - > India Backbone -- > New Delhi Backbone -- > Another router in New Delhi Backbone --- > New Delhi ISP.
Đôi khi, ‘lần dấu vết’ của một IP không đem lại những thông tin có giá trị lắm. Trong ví dụ trên, bạn thấy được thông tin về thành phố và quốc gia của máy chủ. Măc dù có lúc bạn nhận được thông tin hữu ich về tên máy chủ như nói ở trên, nhưng đôi khi tên máy chủ trả về khi bạn ‘tracert’ rất mờ mịt và khó định vị. Vậy thì làm sao đây? Hi`, sợ rằng chả có cách nào khác, thử cách này vậy. Ví dụ thông tin trả về sau khi tracert là một tên miền abc.com. Chắc chắn nó quá mông lung và không thể biết được hệ thống này ở đâu cả. Tuy nhiên, bạn có thể gõ tên miền này vào thanh địa chỉ của browser. Nếu
http://www.abc.com/ là địa chỉ của một ISP vì rất có thể trang web sẽ cho bạn biết vị trí và thành phố mà ISP hoạt động. Vì thế, bạn vẫn có cơ hội lần ra được vị trí của nạn nhân.
Một tiện ích rất thú vị là Visualroute, nó tìm dấu vết của một máy chủ hoăc 1 đia chỉ IP và chỉ ra các chặng đường mà môt gói tin đã từng đi qua trên bản đồ TG, để đến 1 đia chỉ cuối cùng. Tiện ích này rất hữu dụng và mang đến các thông tin tuyệt vời. Nhưng đôi khi lại có vẻ không chính xác.
Ví dụ như bạn biết được ISP một người đang sử dụng, và đơn giản muốn được biết người ta đang ở nước nào. Vào trang web của ISP đó cũng không có kết qủa và cũng không tìm đươc tên máy chủ. Vậy thì làm thế nào? Hãy thử kết nối vào cổng 13 của ISP đó. Cổng này cũng chỉ đơn giản cho bạn biết giờ hệ thống mà thôi. Nhưng nó cho bạn biết nó sớm hơn hay muộn hơn bao nhiêu tiếng so với giờ GMT!
Đến đây cũng là lúc tôi kết thúc bài hướng dẫn này. Trước khi kết thúc, tôi muốn nhấn mạnh một lần nữa là thật ra rất rất khó và cũng thật ngạc nhiên nếu một ai đó có thể biết được địa chỉ liên lạc chính xác của một người trên mạng khi chỉ biết được mỗi địa chỉ IP của người đó (mà không đột nhập vào hệ thống ISP của người đó) Dù sao cũng mong các bạn cảm thấy bài hướng dẫn này có gì đó thú vị.