PDA

View Full Version : Kiến thức cơ bản trong Net Security


Ngô Từ
21-12-2002, 09:18 AM
Dịch từ tiếng Anh. Viết bởi tác giả Ankit Fadia <ankit@bol.net.in>
_______________

Bài viết này TTMT xin tặng cho các anh em Tin học Lam Sơn. Cũng là đi dịch từ sách vở ra (tiếng Anh), nên không dám nhận là của mình. Nhưng kiến thức là kiến thức, chúng ta nên tận dụng, khác với ý kiến là thứ không nên lấy của người khác. Bắt đầu nhé.

Yêu cầu của người đọc là phải biết sự dụng thành thạo Windows là đủ. Nếu có biết thêm về Unix (Linux) cũng tốt, nhưng không phải là thứ bắt buộc. Thực ra nếu bạn đã dùng Unix rồi thì không khó khăn gì cho bạn áp dụng những kiến thức ở đây cho hệ điều hành Unix vì ở đó có đầy đủ hết những cái chúng ta nói ở đây. Mục đích là viết cho những bà kon mới vào nghề để có thể hiểu được những kiến thức ở đây. À, có một số thuật ngữ TTMT không tiện dịch sang tiếng Việt, vì mọi người nếu đã quen với Tin học thì biết rồi, mà chưa quen thì cũng nên làm quen. :D

Có một niềm tin trong chúng ta rằng Win là rất không an toàn, nhưng thực tế là Linux (Redhat) cũng không phải là quá đỉnh trong thế giới security. Cho tới giờ có không ít hơn 50 lỗi an ninh có thể cho phép hacker chiếm quyền root ở trong Linux box (máy chủ Linux). Lý do khiến hacker tìm thấy nhiều lỗi ở trong Win cũng là một phần do Win quá phổ biến và có nhiều người dùng. Linux có một điểm lợi là miễn phí, mã ngờ uồn mở, và hiệu quả sử dụng có thể nhanh hơn. Nhưng cũng không nên nói rằng không thể dùng một Windoze box để tấn công.
---------------------------------------------------

Telnet

Telnet là một công cụ hết sức cơ bản mà bất cứ một hacker nào cũng cần phải biết sử dụng trước khi anh ta nghĩ đến việc tấn công vào máy chủ. Telnet chạy ở Application Layer trong bộ TCP/IP

Telnet có thể được sử dụng để kết nối vào trong các máy tính và chạy các lệnh của nó thông qua terminal. Telnet không sử dụng tài nguyên của máy người dùng, nhưng sử dụng tài nguyên của máy chủ. Nói tóm lại, đây là một chương trình mô phỏng của sổ (giống như Dos) console của máy chủ. Trong Windows 9x thì telnet tìm thấy ở C:windows\telnet.exe hoặc C:WinNT\system32\telnet.exe trong WinNT. Thông thường khi bạn đánh telnet trong của sổ DOS, bạn sẽ có một giao diện cho ứng dụng telnet. Nếu không thấy gì, nhiều khả năng là bạn chưa set biến PATH đến đúng chỗ, nhưng nói chung các cái đặt default đều set PATH chỉ đến nơi telnet nằm

Làm thế nào để kết nối vào máy chủ thông qua telnet?

Rất đơn giản! Chạy telnet bằng cách đánh telnet trong cửa sổ DOS,

Nếu bạn là một newbie, bạn có thể dùng phương thức trên để telnet vào trong máy chủ và sẽ không bị port surfing. Port Surfing là một điều chúng ta sẽ tìm hiểu sau.

Câu lệnh cho telnet là

C:\>telnet hostname.com port

Ví dụ:

C:\>telnet www.truongthi.com.vn 23

sẽ connect bạn vào port 23 của www.truongthi.com.vn

Địa chỉ IP là gì?

Giống như tất cả mọi người đều có một ngôi nhà riêng hoặc có một số điện thoại riêng hay tên riêng, tất cả các máy tính trên mạng đều có một địa chỉ Internet , gọi là IP address. IP address có thể hiểu đơn giản là một kí hiệu thập phân có 4 phần,mỗi phần là một số biểu diễn cho 8 bits của nó (tổng cộng chúng ta có 32 bits). Chúng ta đang nói về IPv4, nói chung đối với new bie thì chưa cần biết IPv6 làm gì (hi vọng sẽ có bài so sánh hai cái). Để đơn giản, lấy ví dụ của địa chỉ IP sau: 202.144.49.110 , có 4 số thập phân cách nhau bằng dấu . , các số này được biểu diễn bằng 8 bit nhị phân nên giá trị nhỏ nhất là 0 = 0000000(2) và cao nhất là 255 = 11111111(2)

Vậy địa chỉ IP có cho tôi thông tin gì không? Những con số ấy đại diện cho cái gì vậy?

Có đấy bạn ạ. Trước hết bạn phải biết rằng, có nhiều loại địa chỉ IP, mà cơ bản nhất là ba classes (loại) sau

Address Class Kí hiệu tương ứng
Class A ( /8 Prefixes) Từ 1.xxx.xxx.xxx đến 126.xxx.xxx.xxx

Class B ( /16 Prefixes) Từ 128.0.xxx.xxx đến 191.255.xxx.xxx

Class C ( /24 Prefixes) Từ 192.0.0.xxx đến 223.255.255.xxx

Nếu bạn chưa hiểu rõ lắm, đừng ngại, hãy đọc tiếp đi sẽ hiểu hơn. Đối với những người học IT thì những cái này chắc là fải học ở trường rồi.

Mỗi địa chỉ Class A có 8 bits đầu tiên là quy định rõ Network ID, sau đó là 24 bits quy định Host ID. Ví dụ trong 64.32.344.2 thì 64 là Network ID, còn 32.344.2 là Host ID

Trong Class B thì có 16 bit đầu tiên cho Network ID, sau đó là 16 bit sau cho Host ID.

Trong Class C thì có 24 bit đầu cho Network ID, và 8 bit cho Host ID. Đây là loại địa chỉ IP thường thấy nhất.

Nhìn vào bảng trên bạn nào tinh ý sẽ tự hỏi: tại sao chỉ có "Từ 1.xxx.xxx.xxx đến 126.xxx.xxx.xxx" rồi lại "Từ 128.0.xxx.xxx đến 191.255.xxx.xxx" Vậy 127.xxx.xxx.xxx đi đâu?

Xin thưa với bạn , 127.xxx.xxx.xxx được dành cho cái gọi là "loopback", nghĩa là nếu bạn telnet vào một địa chỉ IP bắt đầu bằng 127, đó chính là bạn đang telnet vào máy tính của mình!

Ngô Từ
21-12-2002, 01:11 PM
Địa chỉ IP có thể là tĩnh hoặc động (static or dynamic)

Các máy tính khi dial-up vào ISP thường sử dụng giao thức PPP (Point-to-Point Protocol). Khi bạn dial-up vào server, máy tính của bạn sẽ được gán cho một địa chỉ IP nào đó, và sẽ được sử dụng để truyền tải dữ liệu giữa máy bạn và máy chủ. Địa chỉ IP đó là địa chỉ IP của bạn. (Bạn có thể xác định địa chỉ IP này: Trong Win9x, bạn vào DOS rồi chạy winipcfg , hoặc trong NT, 2K, XP bạn chạy ipconfig từ DOS). Địa chỉ IP này mà bạn được gán, có thể sẽ thay đổi trong lần dial-up tiếp theo của bạn. Nếu nó không thay đổi mà luôn là một địa chỉ cố định, ta gọi là static IP (IP tĩnh), còn ngược lại là dynamic IP (IP động). Thông thường nếu dùng IP tĩnh thì ISP cung cấp cho bạn ngay khi bạn đăng kí với họ.

*

Mẹo này: Bạn có thể xác định để biết là một địa chỉ IP cho trước có phải là IP tĩnh hay là IP động bằng cách dùng một công cụ tên là nslookup. Syntax là nslookup hostname (hostname có thể là tên host hoặc IP address), ở đây chúng ta dùng IP address cho hostname. Nếu kết quả là một server có tên tuổi thì đó là IP tĩnh. Còn nếu kết quả là "Non-Existant Host/ Domain" hay tương tự thì IP đó là một Dynamic IP!

Nếu muốn biết thêm về nslookup và DNS thì cố gắng đọc tiếp nhá.



Thực tế là IP address rất khó nhớ, vì vậy chúng ta thường sử dụng cái gọi là DNS - Domain Name System. Tạm hiểu là hệ thống tương ứng giữa IP address và tên của domain. Ví dụ ptthlamson.net, tên domain thì tương ứng với 209.51.136.50 :)

Bây giờ chúng ta sẽ nói về DNS

Ngô Từ
21-12-2002, 02:52 PM
DNS

DNS dùng để chuyển hoá các hostname (như là hotmail.com, ptthlamson.net) sang các địa chỉ IP mà máy tính có thể hiểu được. Khi bạn đánh www.hotmail.com vào trong thanh địa chỉ của trình duyệt Internet, trình duyệt sẽ tiến hành tra cứu (lookup) để tìm IP tương ứng của hostname đó. Nếu không có địa chỉ IP, sẽ không có liên lạc và kết nối giữa các máy tính. Quá trình tra cứu diễn ra khi trình duyệt liên lạc với máy chủ DNS của ISP (nhà cung cấp dịch vụ Internet) và thông qua một cơ chế gọi là resolver để thực thi quá trình chuyển hoá hostname-IP. Một máy chủ DNS thực ra chỉ là một máy chủ có cài phần mềm DNS. Máy chủ đầu tiên mà trình duyệt Internet tìm kiếm thông tin cho sự chuyển đổi hostname-IP là Primary DNS server, nếu máy chủ đầu tiên này không tìm thấy gì, nó sẽ liên lạc với một máy chủ DNS khác trên Internet, gọi là Secondary DNS Server. Nếu trong máy chủ thứ hai này chúng ta tìm thấy thông tin cho phép chuyển hoá hostname-IP, máy chủ thứ nhất sẽ cập nhật cơ sở dữ liệu của mình để sau này không phải liên lạc với máy chủ thứ hai cho yêu cầu tra cứu đó trong các lần sau nữa. Các máy chủ DNS lưu trữ thông tin về các host bộ nhớ đệm của mình. Nếu máy chủ gần đây mới tra cứu địa chỉ IP cho một hostname nào đó, trong các lần sau những thông tin này có thể lấy từ bộ nhớ đệm (cache). Chỉ khi trong bộ nhớ đệm không có những thông tin này, quá trình tìm kiếm trong database mới diễn ra.

Hiện nay, có rất nhiều công nghệ mới đang được áp dụng vào DNS. Ví dụ như amazon.com, đây là một website nổi tiếng với hàng triệu người dùng mỗi ngày. Đối với những website lớn nhu vậy, họ thường có rất nhiều địa chỉ IP cho cùng một hostname và máy chủ DNS thường trả về tất cả các địa chỉ IP này cho trình duyệt, và trình duyệt chỉ chọn tuỳ ý trong đó ra một địa chỉ IP. Đôi khi với cùng một host, các địa chỉ IP khác nhau được dùng cho những mạng khác nhau (một host như vậy thường nằm giữa các network khác nhau). Chính vì thế các địa chỉ IP khác nhau có thể làm cho đường thông tin giữa máy chủ và máy khách thay đổi (đi theo một con đường khác trên mạng). Điều này giúp cho việc chọn lựa con đường rộng rãi và ít giao thông nhất cho dữ liệu.

Đã hiểu cơ bản về cách thức hoạt động của DNS, chúng ta sẽ tìm hiểu về một công cụ gọi là nslookup

Ngô Từ
21-12-2002, 02:59 PM
(Còn nữa)

Dang tran kien
26-01-2003, 09:51 PM
Hay, tiếp đi bác :o

Ngô Từ
29-01-2003, 03:35 PM
Hoá ra cũng có người đọc bài này đấy ạ. Thôi chán lắm rồi, viết mãi mà có ai đọc đâu. :D Đợi các bác admins làm xong trang securityls.net, mời chú sang đó đọc bài tha hồ. Viết bài ở box Tin Học này cứ như là gió vào nhà trống. Thật chẳng ra làm sao.

Dang tran kien
29-01-2003, 09:10 PM
:rolleyes: em cũng thấy không có nhiều thành viên hưởng ứng lắm, cả cái diễn đàn này ấy chứ chả riêng gì cái phần này bác nhở, em thì cũng chả biết làm sao mà bác cứ viết tiếp đi, hay bác viết ở đâu chỉ cho em , em đến xem

Dang tran kien
03-02-2003, 12:43 AM
sao bác không viết à, chán thế,nhở <_<

Ngô Từ
05-02-2003, 08:32 PM
Thôi được, thế thì đây này, đọc tiếp đi

----------------

Linux và các hệ điều hành Unix khác có một công cụ rất tuyệt là nslookup, thường được sử dụng để tìm kiếm thông tin về một host cho trước. Nếu bạn dùng Linux hay các hệ điều hành khác, bạn có thể đọc trang manual bằng cách type lệnh `man nslookup' để đọc. Người dùng Windows có thể vào http://www.samspade.org và tải chương trình Samspade xuống và cài vào máy của mình và sử dụng nó để thực hiện các chức năng tương tự như nslookup trong Unix.

Chú ý: Các DNS server thường chạy trên port 53, do đó trình duyệt Internet của chúng ta sẽ connect vào port 53 để thực hiện DNS lookup

Nslookup

Vậy làm thế nào để tôi có thể tìm kiếm các thông tin quý báu về một host cho trước. Nói chung cách tốt nhất để học về một lệnh của Unix là đọc trang manual của nó. Ở đây chỉ hướng dẫn những cái cơ bản về nslookup thui, bà con phải đọc man pages nhá. :D

Đối với các bạn dùng Win, bạn hãy download Samspade xuống và cài vào đẻ thực hành luôn nào. (Với win2k và winXP, bạn có thể dùng nslookup giống như Unix). Còn với dân Unix, chúng ta có thể xem đường dẫn thực sự tới nslookup là ở đâu bằng cách đánh lệnh: whereis nslookup
Chúng ta có thể chạy nslookup dưới hai dạng: dạng interactive và dạng không interactive (interactive nghĩa là có trao đổi giữa người và máy).
Đối với dạng Interactive, bạn chạy chương trình bằng cách đánh nslookup. Sẽ hiện ra kiểu như:
$>nslookup

Default Server: yeuemhehe
Address: 192.168.0.1

>


Sau khi bật nslookup, bạn cần phải xác định kiểu tìm kiếm thông tin(truy vấn) , cái này cũng có nghĩa là xác định kiể của Resource Record (cái này là thuật ngữ của database, bà con cứ hiểu như là một dòng trong table của database chưa' thông tin cần tìm. Bà kon đánh:
set type=RR

trong đó RR có thể là
A (nghĩa là address-địa chỉ)
MX (nghĩa là Mail Exchange- dùng cho việc chuyển hoá mail giữa host, MX Record)
PTR: Pointer
CNAME: Tên canonical
HINFO: Thông tin về host
ANY: Tất cả các thông tin có thể được

bạn có thể đợc trang manual để tìm hiểu tất cả các loại RR.

sau khi set type rồi, bà kon đánh tiếp địa chỉ IP hoặc tên host vào để tìm kiếm thông tin. Ví dụ như sau (ở đây TTMT lấy WinXP làm ví dụ, computer cua? TTMT la^'y ten la` TTMT)

C:\nslookup
Default server: TTMT
Address: 127.0.0.1

>set type=A
>hotmail.com
Server: TTMT
Address: 127.0.0.1

Non-authoritative answer:
Name: hotmail.com
Adresses: 64.4.44.7, 64.4..53.7

>

Các bạn hãy làm thử và xem thế nào nhá. Good luck :D

Các kết quả tương tự cho các type khác này:
> set type=ANY
> hotmail.com
Server: TTMT
Address: 127.0.0.1

Non-authoritative answer:
hotmail.com internet address = 64.4.44.7
hotmail.com internet address = 64.4.53.7
hotmail.com nameserver = ns2.hotmail.com
hotmail.com nameserver = ns3.hotmail.com
hotmail.com nameserver = ns4.hotmail.com
hotmail.com nameserver = ns1.hotmail.com

hotmail.com nameserver = ns4.hotmail.com
hotmail.com nameserver = ns1.hotmail.com
hotmail.com nameserver = ns2.hotmail.com
hotmail.com nameserver = ns3.hotmail.com
ns1.hotmail.com internet address = 216.200.206.14
ns2.hotmail.com internet address = 216.200.206.13
ns3.hotmail.com internet address = 209.185.130.68
ns4.hotmail.com internet address = 64.4.29.24
> set type=MX
> hotmail.com
Server: TTMT
Address: 127.0.0.1

Non-authoritative answer:
hotmail.com MX preference = 5, mail exchanger
hotmail.com MX preference = 5, mail exchanger
hotmail.com MX preference = 5, mail exchanger
hotmail.com MX preference = 5, mail exchanger

hotmail.com nameserver = ns2.hotmail.com
hotmail.com nameserver = ns3.hotmail.com
hotmail.com nameserver = ns4.hotmail.com
hotmail.com nameserver = ns1.hotmail.com
mx1.hotmail.com internet address = 65.54.166.99
mx1.hotmail.com internet address = 65.54.252.99
mx1.hotmail.com internet address = 65.54.254.129
mx2.hotmail.com internet address = 65.54.254.145
mx2.hotmail.com internet address = 65.54.166.230
mx2.hotmail.com internet address = 65.54.252.230
mx3.hotmail.com internet address = 65.54.254.140
mx3.hotmail.com internet address = 65.54.253.99
mx4.hotmail.com internet address = 65.54.254.151
mx4.hotmail.com internet address = 65.54.253.230
ns1.hotmail.com internet address = 216.200.206.14
ns2.hotmail.com internet address = 216.200.206.13
ns3.hotmail.com internet address = 209.185.130.68
ns4.hotmail.com internet address = 64.4.29.24
> set type=PTR
> hotmail.com
Server: TTMT
Address: 127.0.0.1

hotmail.com
primary name server = ns1.hotmail.com
responsible mail addr = dns.hotmail.com
serial = 2003013102
refresh = 28800 (8 hours)
retry = 3600 (1 hour)
expire = 604800 (7 days)
default TTL = 3600 (1 hour)
> set type=CNAME
> hotmail.com
Server: TTMT
Address: 127.0.0.1

hotmail.com
primary name server = ns1.hotmail.com
responsible mail addr = dns.hotmail.com
serial = 2003013102
refresh = 28800 (8 hours)
retry = 3600 (1 hour)
expire = 604800 (7 days)
default TTL = 3600 (1 hour)
> set type=HINFO
> hotmail.com
Server: TTMT
Address: 127.0.0.1

hotmail.com
primary name server = ns1.hotmail.com
responsible mail addr = dns.hotmail.com
serial = 2003013102
refresh = 28800 (8 hours)
retry = 3600 (1 hour)
expire = 604800 (7 days)
default TTL = 3600 (1 hour)
>

Chú ý: Nếu bạn không đánh set type thì kiểu mặc định sẽ là A. Ngoài ra những thông số kĩ thuật nói trên có thể là hơi khó hiểu với bạn, tất nhiên, bạn phải có trình độ tương đối về Network thì mới hiểu được hết. Với các anh em mới vào nghề, nói chung là hiểu được đến đâu thì hiểu. :D. Dần dần sẽ biết hết. TTMT hứa sẽ đăng các bài viết khác lên nữa về Network. :D

Đối với kiểu không Interactive, chúng ta chỉ việc đánh: nslookup hostname, ví dụ
C:\nslookup hotmail.com

Cái này sẽ trả về thông tin giống như khi bạn chạy trong interactive mode với type=A. Tự thử nhé.

Cũng có một công cụ nữa, gọi là DIG. Viết tắt cho Domain Information Gropper, rất tượng tự như là nslookup. Công cụ này cũng có trong chương trình Samspade nói ở trên. Bà con dùng thử đi nhé. Mà nslookup bị "deprecated" rồi. nghĩa là sau này sẽ không còn nữa :D.

Ngô Từ
05-02-2003, 09:01 PM
PORTS: các cánh cổng liên kết máy tính của chúng ta với thế giới bên ngoài.

Bà kon hẳn đọc ở trên thấy có nhiều lần TTMT nói tới ports như port 53 của DNS, hay như trang ptthlamson.net này là chúng ta đang connect vào port 80 của server. Vậy ta hãy cùng tìm hiểu về Port nhá.

Có hai kiểu ports: Port ảo và port vật lý (có thực). Port ảo là trong software, còn port vật lý là trong hardware của máy tính. Bạn nào hay nghịch ngợm máy tính có thể biết là có các "cổng" (port) , có các slot để cho chúng ta cắm chuột hoặc cắm bàn phím , màn hình vào đằng sau hộp case của máy tính. Đó là các port vật lý của máy tính. Tuy nhiên, các hackers và những anh em yêu thích network security như TTMT và các bạn đọc bài này lại quan tâm nhiều hơn đến các port ảo của các phần mềm. (Virtual software ports)

Một port ảo là một đường dẫn ảo (virtual pipe) nơi mà thông tin ra và vào trong máy tính. Một máy tính bất kì có thể có một số lượng lớn các port. Tất cả các port đều được đánh số.

Tại mỗi port, có một dịch vụ (service) chạy ở đó, đó là một phần mềm quản lý port này. Vậy làm sao chúng ta biết được service nào đang chạy ở đó. Thực ra là các port đều được đánh số cẩn thận, và có một quy luật chung mà hầu hết mọi người đều tuân theo, do đó chúng ta có các "well-known ports". Ví dụ như là :

Ping 7
Systat 11
Time 13
NetStat 15
SSH 22 (Giống hệt như Secure Shell Login)
Telnet 23
SMTP 25
Whois 43
Finger 79
HTTP 80
POP 110
NNTP 119
IDENT 139
rlogin 513 (IP Spoofing!!!)


Để biết danh sách của các port và các service tương ứng, mời bạn đọc RFC 1700. Lên mạng mà tìm nhá.

Thông thường, các port dưới 1024 đều có các dịch vụ chạy ở đó, các port trên 1024 thì nói chung là các service ở đó không phải là "well-known", nghĩa là tuỳ ai thích làm thế nào là tuỳ. (ý là network admin ấy)

-----------
Newbie có thể hỏi RFC là cái quái gì vậy? RFC nghĩa là Request For Comment, đây là các trang text mô tả các khía cạnh của Networking và mạng Internet. Nếu bạn muốn trở thành một hacker giỏi thì bạn phải biết về RFCs. Nói chung newbie sẽ hơi choáng khi đọc về những thứ này, tuy nhiên đó là điề không thể bỏ qua được. Xin lỗi , TTMT chịu không giúp gì được. Phải tự giúp mình thôi.
------------
Newbie có thể hỏi là một daemon là gì? (Thuật ngữ này hay được dùng). Một daemon là một chương trình chạy ở nền dưới tại các ports của Unix. Vậy chạy ở nền dưới (background running mode) là gì? Nghĩa là chương trình chạy "song song" với chương trình bạn đang chạy và làm nền tảng cho chúng ta. Ví dụ khi bạn bật Vietkey để dánh tiếng Việt trong Word, chương trình Vietkey chạy ở dạng này. Hoặc các chương trình virus như key loggers sẽ lưu lại các kí tự của bạn khi đánh -> cũng tương tự nhu vậy.

Bài tiếp theo sẽ về PORT SCANNING và PORT SURFING. Bà con đón đọc. :D

Dang tran kien
06-02-2003, 11:44 AM
cảm ơn bác, để em mang về nhà đọc hè hè B)