PHÂN TÍCH GÓI TIN VỚI WIRESHARK
Trang 1MUC LỤC
I Lệnh ping 2
1 Các bước thực hiện lệnh ping 3
3 Ví dụ 3
II Telnet 5
1 Telnet là gì ? 5
2 Thiết lập và kiểm tra kết nối Telnet 6
III Wireshark 13
1 Giới thiệu về Wireshark 13
2 Một số tình huống cơ bản về sự cố mạng và giải pháp khắc phục 14
a A Lost TCP Connection (mất kết nối TCP) 14
c Unreachable Port (không thể kết nối tới cổng) 18
d Determining Whether a Packet Is Fragmented (xác định vị trí gói tin bị phân đoạn) 20
No Connectivity (không kết nối) 20
The Ghost in Internet Explorer (con ma trong trình duyệt IE) 23
e Lỗi kết nối FTP 28
3 Xử lý các tình huống về băng thông mạng 30
4 Một số tình huống an ninh mạng cơ bản 42
OS Fingerprinting (Nhận dạng OS) 42
OS Fingerprinting là một kỹ thuật phổ biến được các haker sử dụng để thu thập các thông tin về server từ xa, từ đó có những thông tin hữu ích để thực hiện các bước tấn công tiếp theo 42
A Simple Port Scan (quét cổng ở dạng đơn giản) 43
Blaster Worm (Sâu Blaster) 45
IV Kết luận 50
Trang 2Gerald Combs là người đầu tiên phát triển phần mềm WIRESHARK Phiên bản đầu tiên được gọi là Ethereal được phát hành năm 1998 Tám năm sau kể từ khi phiên bản đầu tiên ra đời, Combs từ bỏ công việc hiện tại để theo đuổi một
cơ hội nghề nghiệp khác Thật không may, tại thời điểm đó, ông không thể đạt được thoả thuận với công ty đã thuê ông về việc bản quyền của thương hiệu Ethereal Thay vào đó, Combs và phần còn lại của đội phát triển đã xây dựng một thương hiệu mới cho sản phẩm “Ethereal” vào năm 2006, dự án tên là
WireShark
- WireShark đã phát triển mạnh mẽ và đến nay, nhóm phát triển cho đến nay đã lên tới 500 cộng tác viên Sản phẩm đã tồn tại dưới cái tên Ethereal không được phát triển thêm
- Lợi ích Wireshark đem lại đã giúp cho nó trở nên phổ biến như hiện nay Nó cóthể đáp ứng nhu cầu của cả các nhà phân tích chuyên nghiệp và nghiệp dư và nó đưa ra nhiều tính năng để thu hút mỗi đối tượng khác nhau
Wireshark có các ưu điểm Thân thiện với người dùng, Giá rẻ, ngoài ra
Wireshark hỗ trợ hầu hết các loại hệ điều hành hiện nay
I Lệnh ping
Lệnh Ping sử dụng giao thức ICMP để kiểm tra kết nối vật lý và địa chỉ IPcủa lớp Mạng Đây là lệnh kiểm tra cơ bản
Trang 31 Các bước thực hiện lệnh ping
Cấu trúc:
PING: ip/host[/t][/a][/l][/n]
+ IP: địa chỉ của máy cần kiểm tra ( có thể sử dụng đ/c IP hoặc tên của máytính )
+ Tham số [/t]: để máy tính liên tục ping
+ Tham số [/a]: nhận điạ chỉ IP trên host
+ Tham số [/n]: Xác định số gói tin gửi đi
Cách thức:
- Nhập lệnh Ping, theo sau là địa chỉ IP hoặc tên của máy đích
- Nhấn phím Enter
2 Sử dụng lệnh ping để kiểm tra xem địa chỉ đích có đến được không
Giao thức ICMP có thể được sử dụng để kiểm xem có đến được một địa chỉnào đó hay không ICMP sẽ gửi thông điệp echo request đến máy đích Nếu máyđích nhận được echo request thì sẽ trả lời lại thông điệp echo reply cho máynguồn Nếu máy nguồn nhận được echo reply thì điều đó khặng định là máy đích
có thể đến được bằng giao thức IP
Lệnh ping khởi tạo các thông điệp echo request
- Nếu số lượng gói tin gửi đi là 6, nhận được trả lời 2 gói tin thì chứng tỏđường truyền rất chậm
- Cũng có thể xác định máy đó có kết nối hay không, nếu không kết nối kếtquả là unknow host
3 Ví dụ
Ví dụ như hình 8.1.5a và 8.1.5b , chúng ta sử dụng lệnh ping với địa chỉ IPđích Lệnh ping gửi đi 4 gói echo request và nhận về 4 gói echo reply xác nhận
Trang 4Hình 8.1.5a
Trang 5II Telnet
1 Telnet là gì ?
Telnet là giao thức giả lập đầu cuối ảo nằm trong bộ giao thức TCP/IP Nócho phép thiết lập kết nối từ xa vào thiết bị Lệnh Telnet được sử dụng để kiểmtra hoạt động phần mềm ở lớp ứng dụng giữa 2 máy
Telnet hoạt động ở lớp ứng dụng của mô hình OSI Telnet hoạt động dựatrên cơ chế TCP để đảm bảo việc truyền dữ liệu giữa client và các server
Một router có thể cho phép thực hiện đồng thời nhiều phiên kết nối Telnet.Đường vty 0-4 trên router là đường dành cho Telnet 5 đường Telnet này có thểthực hiện cùng lúc Chúng ta cần lưu ý rằng việc sử dụng Telnet để kiểm tra kếtnối lớp ứng dụng chỉ là việc phụ Telnet được sử dụng chủ yếu để thiết lập kếtnối từ xa vào thiết bị Telnet là một chương trình ứng dụng đơn giản và thôngdụng nhất
Hình 4.21.
Trang 62 Thiết lập và kiểm tra kết nối Telnet
Lệnh Telnet cho phép người dùng thực hiện từ một thiết bị Cisco này sang
thiết bị khác Chúng ta không cần phải nhập lệnh connect hay telnet để thiết lập
kết nối Telnet mà chúng ta có thể nhập tên hoặc địa chỉ IP của rounter mà chúng
ta muốn Telnet vào Khi kết thúc phiên Telnet, bạn dùng lệnh exit hoặc logout
Để thiết lập Telnet bạn dùng một trong các lệnh sau:
Dưới đây là cách thu thập một số thông tin về máy chủ qua telnet Chúng ta
có thể check mail, gởi mail và đặc biệt là có thể tham gia vào các kênh chat IRC của nước ngoài Tất cả chỉ bằng Telnet!
Trang 73 Một số lệnh cơ bản của Telnet
- CLOSE: Đóng kết nối hiện tại
- DISPLAY: Hiển thị các tham số điều khiển
- MODE: Thay đổi mode kí tự
- OPEN : Kết nối đến một site
- QUIT: Thoát telnet
- SEND: Gởi các kí tự đặc biệt
- SET: Đặt các tham số điều khiển
- UNSET: Gỡ bỏ các tham số điều khiển đã đặt
- STATUS: Cho biết các thông tin về trạng thái hiện tại
- TOGGLE: Chốt các tham số điều khiển
- SLC: Thay đổi trạng thái của các kí tự đặc biệt
- !: Tạo một subtelnet(telnet con)
- ENVIRON: Thay đổi các biến trạng thái
- ?: Gọi hướng dẫn sử dụng telnet
(Để biết thêm thông tin về telnet, bạn hãy gõ "man telnet" trong Linux*)
Ví dụ: cách phát hiện WEB SERVER bằng telnet
http://www.tnh.com.vn/ đang dùng web server gì nhỉ? Bạn hãy mở DOS Prompt" và gõ vào:
"MS-C:\> telnet www.tnh.com.vn 80
Chúng ta telnet đến http://www.tnh.com.vn/ ở cổng 80!
Tiếp theo bạn gõ vào "GET / HTTP/1.1"(không có dấu nháy ") và nhấn phím
<Enter> hai lần, bạn sẽ nhận được những thông tin sau:
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/4.0
Date: Wed, 04 Jul 2001 06:52:31 GMT
Trang 8Content-Length: 87
<html><head><title>Error</title></head><body>The parameter is incorrect
</body>
</html>
Connection to host lost
Hãy xem chúng ta thu thập được những gì?
dòng 1: phiên bản của http service: HTTP/1.1 (có khi là PHP/4.0) Đây là mã trạng thái HTML
dòng 2: http server, Microsoft-IIS/4.0
dòng 3: ngày giờ +GTM
dòng 4: phân loại nội dung
dòng 5: chiều dài của các kí tự
Chỉ cần để ý đến dòng 2, bạn có thể biết chắc ăn 100% là
http://www.tnh.com.vn/ đang chạy IIS v4.0!
(Lưu ý: bạn hãy bật chế độ ghi nhật kí cho Telnet, mắt bạn không tài nào nhìn thấy được các dòng trên đâu! Nó hiện ra quá nhanh ! Hãy vào Terminal/Start Logging và chỉ định một file nhật kí cho Telnet !)
Bây giờ bạn thử telnet đến http://www.astalavista.box.sk/ xem sao?!
C:\> telnet www.astalavista.box.sk 80
GET / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Wed, 04 Jul 2001 06:51:37 GMT
Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1
Connection: close
Trang 9Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
Bạn có thể thấy ngay là http://www.astalavista.box.sk/ đang chạy Apache
v1.3.19 trên nền Unix cùng với PHP v4.0.4!
Download và upload file bằng Telnet
Nếu bạn biết chính xác địa chỉ của một file trên http server, bạn có thể download
nó về bằng cách telnet đến http server đó (ở cổng 80) và gõ vào theo dạng sau
"HEAD <đường dẫn đến file cần download> HTTP/1.1" thay cho "GET /
HTTP/1.1" Ví dụ như "HEAD /wordlist.txt HTTP/1.1"
Nếu http server cho phép bạn upload file(thường thì không có chuyện này đâu!), bạn hãy dùng lệnh "PUT" để upload file lên Ví dụ như "PUT /contact.htm
HTTP/1.1"
Gởi thư bằng Telnet(dùng SMTP)
SMTP - Simple Mail Transfer Protocol là một daemon thường dùng để send mail Cổng mặc định của nó là 25 Okay, bây giờ bạn hãy mở telnet đi!
Bây giờ thì bạn cần phải biết một số lệnh của smtp Hãy gõ vào lệnh '?(hoặc '/?')
và 'help' để gọi hướng dẫn! Tiếp theo, hãy send mail !
Trang 10HELO server.com (x authentication)
MAIL WROM:
GPKYLEJGDGVCJVTLBXFGGMEPYOQKEDOTWFAOBUZXUWLSZLKBRNVWWCUFPEG
RCPT TO: victim@victimserver.net (địa chỉ email của người nhận)
DATA (các dữ liệu trong thư)
SUBJECT email subject (dòng subject)
một message cơ bản, cũng có khi là giả mạo
(kết thúc message bằng một dòng chỉ có một dấu chấm '.')
-
Nhận thư qua Telnet(dùng POP3)
POP3 - Post Office Protocol Version 3 POP3 daemon thường được chạy ở cổng 110(đây là cổn chuẩn của nó) Để check mail, bạn phải kết nối đến server đang chạy POP3 daemon ở cổng 110!
Trang 11USER username (username của bạn)
+OK dazzed nice to hear from you - password required
PASS password (mật khẩu để vào hòm thư của bạn)
+OK password accepted
LIST (liệt kê tất cả các thư)
Trang 12Interesting ports 7 echo bất kì những gì bạn nhập vào sẽ được host gởi trả
lại(echo) bạn, không hữu ích cho lắm!
11 systat rất nhiều thông tin về users
13 daytime thời gian và ngày tháng ở máy chủ
15 netstat thông tin về networks
21 ftp file transfer protocol
23 telnet nơi bạn có thể login
25 smpt simple mail transfer protocol
110 pop incoming email
119 nntp usenet news groups
443 https một web server khác nhưng an toàn hơn!
512 biff mail notification
513 rlogin - remote login
514 shell remote command, không cần dùng mật khẩu! syslog remote system
Trang 13logging
520 route routing information protocol
III Wireshark
1 Giới thiệu về Wireshark
- WireShark có một bề dầy lịch sử Gerald Combs là người đầu tiên phát triển phần mềm này Phiên bản đầu tiên được gọi là Ethereal được phát hành năm 1998 Tám năm sau kể từ khi phiên bản đầu tiên ra đời, Combs từ bỏ công việc hiện tại để theo đuổi một cơ hội nghề nghiệp khác Thật không may, tại thờiđiểm đó, ông không thể đạt được thoả thuận với công ty đã thuê ông về việc bản quyền của thương hiệu Ethereal Thay vào đó, Combs và phần còn lại của đội phát triển đã xây dựng một thương hiệu mới cho sản phẩm “Ethereal” vào năm
2006, dự án tên là WireShark
- WireShark đã phát triển mạnh mẽ và đến nay, nhóm phát triển cho đến nay đã lên tới 500 cộng tác viên Sản phẩm đã tồn tại dưới cái tên Ethereal không được phát triển thêm
- Lợi ích Wireshark đem lại đã giúp cho nó trở nên phổ biến như hiện nay Nó cóthể đáp ứng nhu cầu của cả các nhà phân tích chuyên nghiệp và nghiệp dư và nó đưa ra nhiều tính năng để thu hút mỗi đối tượng khác nhau
Các giao thức được hỗ trợ bởi WireShark:
WireShark vượt trội về khả năng hỗ trợ các giao thức (khoảng 850 loại), từ những loại phổ biến như TCP, IP đến những loại đặc biệt như là AppleTalk và Bit Torrent Và cũng bởi Wireshark được phát triển trên mô hình mã nguồn mở, những giao thức mới sẽ được thêm vào Và có thể nói rằng không có giao thức nào mà Wireshark không thể hỗ trợ
Trang 14• Thân thiện với người dùng: Giao diện của Wireshark là một trong những
giao diện phần mềm phân tích gói dễ dùng nhất Wireshark là ứng dụng đồhoạ với hệ thống menu rât rõ ràng và được bố trí dễ hiểu Không như một
số sản phẩm sử dụng dòng lệnh phức tạp như TCPdump, giao diện đồ hoạ của Wireshark thật tuyệt vời cho những ai đã từng nghiên cứu thế giới của phân tích giao thức
• Giá rẻ: Wireshark là một sản phẩm miễn phí GPL Bạn có thể tải về và sử
dụng Wireshark cho bất kỳ mục đích nào, kể cả với mục đích thương mại
• Hỗ trợ: Cộng đồng của Wireshark là một trong những cộng đồng tốt và
năng động nhất của các dự án mã nguồn mở
• Hệ điều hành hỗ trợ Wireshark: Wireshark hỗ trợ hầu hết các loại hệ
điều hành hiện nay
2 Một số tình huống cơ bản về sự cố mạng và giải pháp khắc phục
Trong phần này chúng ta sẽ đề cập đến vấn đề cụ thể hơn Sử dụngWireshark và phân tích gói tin để giải quyết một vấn đề cụ thể của mạng
Chúng tôi xin đưa ra một số tình huống điển hình
a A Lost TCP Connection (mất kết nối TCP)
Một trong các vấn đề phổ biến nhất là mất kết nối mạng.Chúng ta sẽ bỏ quanguyên nhân tại sao kêt nối bị mất, chúng ta sẽ nhìn hiện tượng đó ở mức gói tin
Ví dụ:
Một ví truyền file bị mất kết nối:
Trang 15Bắt đầu bằng việc gửi 4 gói TCP ACK từ 10.3.71.7 đến 10.3.30.1.
Hình 3.1-1: This capture begins simply enough with a few ACK packets.
Lỗi bắt đầu từ gói thứ 5, chúng ta nhìn thấy xuất hiện việc gửi lại gói của TCP
Hình 3.1-2: These TCP retransmissions are a sign of a weak or dropped
connection.
Theo thiết kế, TCP sẽ gửi một gói tin đến đích, nếu không nhận được trả lời saumột khoảng thời gian nó sẽ gửi lại gói tin ban đầu Nếu vẫn tiếp tục không nhậnđược phản hồi, máy nguồn sẽ tăng gấp đôi thời gian đợi cho lần gửi lại tiếp theo
Trang 16Như ta thấy ở hình trên, TCP sẽ gửi lại 5 lần, nếu 5 lần liên tiếp không nhậnđược phản hồi thì kết nối được coi là kết thúc.
Hiện tượng này ta có thể thấy trong Wireshark như sau:
Hình 3.1-4: Windows will retransmit up to five times by default.
Khả năng xác định gói tin bị lỗi đôi khi sẽ giúp chúng ta có thể phát hiện ra mấu trốt mạng bị mất là do đâu
Trang 17b Unreachable Destinations and ICMP Codes (không thể chạm tới điểm cuối và các mã ICMP)
Một trong các công cụ khi kiểm tra kết nối mạng là công cụ ICMP ping.Nếu may mắn thì phía mục tiêu trả lời lại điều đó có nghĩa là bạn đã ping thànhcông, còn nếu không thì sẽ nhận được thông báo không thể kết nối tới máy đích
Sử dụng công cụ bắt gói tin trong việc này sẽ cho bạn nhiều thông tin hơn thay vìchỉ dung ICMP ping bình thường Chúng ta sẽ nhìn rõ hơn các lỗi của ICMP
Hình 3.1-5: A standard ping request from 10.2.10.2 to 10.4.88.88
Hình dưới đây cho thấy thông báo không thể ping tới 10.4.88.88 từ máy10.2.99.99
Trang 18Như vậy so với ping thông thường thì ta có thể thấy kết nối bị đứt từ10.2.99.99 Ngoài ra còn có các mã lỗi của ICMP, ví dụ : code 1 (Hostunreachable)
Hình 3.1-6: This ICMP type 3 packet is not what we expected.
c Unreachable Port (không thể kết nối tới cổng)
Một trong các nhiệm vụ thông thường khác là kiểm tra kết nối tới một cổngtrên một máy đích Việc kiểm tra này sẽ cho thấy cổng cần kiểm tra có mở haykhông, có sẵn sang nhận các yêu cầu gửi đến hay không
Ví dụ, để kiểm tra dịch vụ FTP có chạy trên một server hay không, mặcđịnh FTP sẽ làm việc qua cổng 21 ở chế độ thông thường Ta sẽ gửi gói tinICMP đến cổng 21 của máy đích, nếu máy đích trả lời lại gói ICMP loại o và mãlỗi 2 thì có nghĩa là không thể kết nối tới cổng đó.s
Trang 19Fragmented Packets
Trang 20Hình 3.1-7: This ping request requires three packets rather than one
because the data being transmitted is above average size.
Ở đây có thể thấy kích thước gói tin ghi nhận được lớn hơn kích thước góitin mặc định gửi đi khi ping là 32 bytes tới một máy tính chạy Windows
Kích thước gói tin ở đây là 3,072 bytes
d Determining Whether a Packet Is Fragmented (xác định vị trí gói tin bị phân đoạn)
No Connectivity (không kết nối)
Vấn đề : chúng ta có 2 nhân viên mới Hải và Thanh và được sắp ngồi cạnhnhau và đương nhiên là được trang bị 2 máy tính Sau khi được trang bị và làmcác thao tác để đưa 2 máy tính vào mạng, có một vấn đề xảy ra là máy tính củaHải chạy tốt, kết nối mạng bình thường, máy tính của Thanh không thể truy nhậpInternet
Mục tiêu : tìm hiểu tại sao máy tính của Thanh không kết nối được Internet
và sửa lỗi đó
Các thông tin chúng ta có
•cả 2 máy tính đều mới
•cả 2 máy đều được đặt IP và có thể ping đến các máy khác trongmạng
Nói tóm lại là 2 máy này được cấu hình không có gì khác nhau
Tiến hành
Cài đặt Wireshark trực tiếp lên cả 2 máy
Trang 21Trường hợp máy tính của Thanh
Hình 3.1-9: Thanh’s computer appears to be sending an ARP request to a
Trang 22NetBIOS là giao thức cũ nó sẽ được thay thế TCP/IP khi TCP/IP khônghoạt động Như vậy là máy của Thanh không thể kết nối Internet với TCP/IP.Chi tiết yêu cầu ARP trên 2 máy :
Máy Hải
Máy Thanh
Trang 23Kết luận : máy Thanh đặt sai địa chỉ gateway nên không thể kết nối
Internet, cần đặt lại là 192.168.0.10
The Ghost in Internet Explorer (con ma trong trình duyệt IE)
Hiện tượng : máy tính của A có hiện tượng như sau, khi sử dụng trình
duyệt IE, trình duyệt tự động trỏ đến rất nhiều trang quảng cáo Khi A thay đổibằng tay thì vẫn bị hiện tượng đó thậm chí khởi động lại máy cũng vẫn bị nhưthế
Thông tin chúng ta có
•A không thạo về máy tính lắm
•Máy tính của A dùng Widows XP, IE 6
Tiến hành
Vì hiện tượng này chỉ xảy ra trên máy của A và trang home page của A bịthay đổi khi bật IE nên chúng ta sẽ tiếp hành bắt gói tin từ máy của A Chúng takhông nhất thiết phải cài Wireshark trực tiếp từ máy của A Chúng ta có thểdùng kỹ thuật
Trang 24Phân tích
Hình 3.1-13: Since there is no user interaction happening on A’s computer
at the time of this capture, all of these packets going across the wire should
set off some alarms
Chi tiết gói tin thứ 5:
Hình 3.1-14: Looking more closely at packet 5, we see it is trying to
download data from the Internet.
Từ máy tính gửi yêu cầu GET của HTTP đến địa chỉ như trên hình
Trang 25Hình 3.1-15: A DNS query to the weatherbug.com domain gives a clue to the
culprit.
Gói tin trả lại bắt đầu có vấn đề : thứ tự các phần bị thay đổi
Một số gói tiếp theo có sự lặp ACK
Hình 3.1-16: A DNS query to the weatherbug.com domain gives a clue to the
culprit.
Sau một loạt các thay đổi trên thì có truy vấn DNS đếndeskwx.weatherbug.com