Phân tích một tấn công
Chôm Bên http://www.ispace.edu.vn
Loạt bài này sẽ dựa trên một lỗ hổng hệ thống mạng. Những gì sẽ giới thiệu trong bài đã là một tấn công thực sự, bắt đầu từ thăm dò đến liệt kê, khai thác dịch vụ mạng và kết thúc các chiến lược khai thác gửi thông báo. Tất cả các bước này sẽ được quan sát ở mức gói dữ liệu, và sau đó sẽ được giải thích một cách cụ thể. Có thể quan sát và hiểu được một tấn công ở mức gói dữ liệu là một điều cực kỳ quan trọng cho cả các quản trị viên hệ thống (sys admin) và các nhân viên bảo mật mạng. Đầu ra của các tường lửa, Hệ thống phát hiện xâm phạm (IDS) và các thiết bị bảo mật khác sẽ luôn luôn được sử dụng để có thể xem được lưu lượng mạng thực sự. Nếu bạn không hiểu những gì đang nhìn thấy tại mức gói dữ liệu thì tất cả những công nghệ bảo mật mạng mà bạn có sẽ trở thành vô nghĩa.
Các công cụ được sử dụng cho việc mô phỏng một tấn công mạng là:
* Nmap
* IPEye
* Tcpdump
* Metasploit Framework
* Netcat
* SolarWinds TFTP Server
* Tftp client
* FU Rootkit
Bước thiết lập
Có rất nhiều hành động quét trên Internet ngày nay, không đề cập đến hành động của worm và các dạng malware khác như virus. Tất cả chúng sẽ chỉ như tạp nhiễu vô hại với các mạng máy tính được bảo vệ tốt. Những gì chúng ta nên xem xét là một người đang chủ tâm nhắm đến một mạng máy tính. Bài này sẽ thừa nhận rằng kẻ tấn công đã tấn công vào nạn nhân của hắn và đã thực hiện các nghiên cứu trước như tìm ra địa chỉ IP và các địa chỉ mạng của nạn nhân. Kẻ tấn công này có thể cũng đã cố gắng khai thác thông tin như các địa chỉ email có liên quan đến mạng đó. Kiểu thông tin này là rất quan trọng trong trường hợp kẻ tấn công đã tìm nhưng không có cách nào vào mạng sau khi đã thực hiện các hành động quét, liệt kê và giả mạo nó. Các địa chỉ email mà hắnđã thu lượm được sẽ rất hữu dụng trong việc thiết lập lên một tấn công trình khách bằng cách thử và mời người dùng vào một website mã độc thông qua một liên kết trong email. Những kiểu tấn công đó sẽ được giới thiệu trong các bài sau.
Cách thức thực hiện
Chúng ta nên quan sát các hành động của một hacker khi hắn thực hiện công việc quét, và liệt kê mạng nạn nhân. Công cụ đầu tiên mà hacker sử dụng là Nmap. Mặc dù Nmap có khá ít ký hiệu IDS nhưng nó vẫn là một công cụ khá hữu dụng và được sử dụng nhiều.
Chúng ta có thể xem thông qua cú pháp được sử dụng bởi hacker trong màn hình nhỏ hiển thị bên trên, hacker đã chọn cổng 21 và 80 vì hắn có một số khai thác có thể sử dụng thông qua Metasploit Framework. Không chỉ điều đó mà còn cả hai dịch vụ hệ thống và giao thức mà hắn hiểu khá tốt. Được hiển thị khá rõ là rằng hắn đang sử dụng quét SYN, đây là kiểu quét cổng được sử dụng thông dụng nhất. Đó cũng là do thực tế là khi một dịch vụ sử dụng TCP đang nghe trên một cổng nhận được gói SYN thì nó sẽ gửi trở lại một gói SYN/ACK (phúc đáp). Gói SYN/ACK chỉ thị rằng một dịch vụ quả thực đang nghe và đang chờ đợi kết nối. Tuy nhiên vấn đề tương tự lại không giống với UDP, nó lại dựa trên các dịch vụ như DNS (DNS cũng sử dụng TCP nhưng nó hầu như sử dụng UDP đối với phần lớn các phiên giao dịch của nó).
Cú pháp được liệt kê dưới đây là đầu ra mà Nmap thu lượm được từ các gói nó đã gửi, nhưng chính xác hơn là từ các gói nó nhận với tư cách là kết quả của quét SYN mà nó đã thực hiện. Chúng ta có thể thấy rằng bề ngoài có vẻ có cả các dịch vụ FTP và HTTP được cung cấp. Chúng ta không thực sự quan tâm đến địa chỉ MAC vì vậy sẽ bỏ qua điều đó. Các công cụ như Nmap không thường xuyên có lỗi nên nó thường rất tốt cho việc thẩm định thông tin của bạn ở mức gói dữ liệu để bảo đảm cho sự chính xác. Không chỉ vậy mà nó cũng cho phép quan sát được cả các gói trở lại, từ mạng nạn nhân để có thể thu thập được các thông tin kiến trúc, dịch vụ và host từ đó.
Hãy tra cứu các gói dữ liệu
Có một số chương trình được cung cấp ngày nay sẽ khai phá được các gói và tìm ra những thông tin cần thiết như kiểu hệ điều hành, thông tin về kiến trúc, ví dụ như x86 hay SPARC và nhiều vấn đề khác nữa. Đó chưa phải là đủ nhưng nó cũng quan trọng khi chúng ta đang tìm hiểu về việc cho phép một chương trình thực hiện công việc cho chúng ta. Với lưu ý đó, chúng ta hãy xem xét đến dấu vết gói Nmap và tìm ra một số thông tin nào đó về mạng nạn nhân.
1059.062500 IP (tos 0x0, ttl 43, id 8853, offset 0, flags [none], proto: ICMP (1), length: 28) 192.168.111.17 > 192.168.111.23: ICMP echo request seq 38214, length 8
0x0000: 4500 001c 2295 0000 2b01 0dd3 c0a8 6f11 E..."...+.....o.
0x0010: c0a8 6f17 0800 315a 315f 9546 ..o...1Z1_.F
1059.078125 IP (tos 0x0, ttl 128, id 396, offset 0, flags [none], proto: ICMP (1), length: 28) 192.168.111.23 > 192.168.111.17: ICMP echo reply seq 38214, length 8
0x0000: 4500 001c 018c 0000 8001 d9db c0a8 6f17 E.............o.
0x0010: c0a8 6f11 0000 395a 315f 9546 0000 0000 ..o...9Z1_.F....
0x0020: 0000 0000 0000 0000 0000 0000 0000 ..............
Thể hiện trong hai gói dữ liệu ở trên là loạt mở từ Nmap. Những gì nó thực hiện là gửi một yêu cầu ICMP echo đến mạng nạn nhân. Bạn sẽ thấy rằng nó không được trang bị tại một cổng nào đó, bởi vì ICMP không sử dụng các cổng, nhưng lại được quản lý bởi bộ thông báo lỗi ICMP xây dựng bên trong ngăn xếp giao thức TCP/IP. Gói ICMP này cũng được dán nhãn bằng một số duy nhất, trong trường hợp này là 38214 để giúp ngăn xếp TCP/IP có thể kiểm tra được lưu lượng trả về, và liên kết nó với gói ICMP trước đó đã gửi. Gói tin ngay trên là đáp trả từ một mạng nạn nhân, trong biểu mẫu của một đáp trả (reply) ICMP echo. Cũng tính đến cả số chuỗi 38214. Chính vì vậy hacker biết được rằng có một máy tính hoặc một mạng đằng sau địa chỉ IP đó.
Chuỗi gói ICMP đang mở này là lý do tại sao Nmap có một ký hiệu IDS cho nó. Tùy chọn khám phá ICMP host có thể bị vô hiệu hóa trong Nmap nếu muốn. Loại thông tin gì có thể được thu lượm thông qua kết quả của gói trả lời ICMP echo từ mạng nạn nhân? Trong thực tế ở đây không có nhiều thông tin giúp chúng ta nắm được về mạng. Mặc dù vậy vẫn có thể sử dụng những đòn sơ bộ tại những chỗ liên quan đến hệ điều hành. Thời gian để cư trú một trường và giá trị bên cạnh nó được đánh dấu tô đậm trong gói trên. Giá trị 128 cho thấy một sự thật rằng máy tính này có thể là một máy tính chạy hệ điều hành Windows. Trong khi đó giá trị ttl lại không trả lời một cách chính xác như những gì về có liên quan đến hệ điều hành, nó sẽ được căn cứ cho các gói kế tiếp mà chúng ta sẽ xem xét.
Kết luận
Trong phần một này, chúng ta đã xem xét về một quá trình quét đối với một mạng trong một tấn công cho hai cổng cụ thể bằng Nmap. Đến đây, kẻ tấn công này đã biết chắc chắn rằng có một máy tính hoặc một mạng máy tính cư trú tại địa chỉ IP đó. Trong phần 2 của loạt bài này, chúng tôi sẽ tiếp tục giới thiệu đến các bạn phần kết của nghiên cứu về dấu vết của gói này, và tìm ra những mẩu thông tin còn lại.
Phân tích một tấn công (Phần 2)
Chúng tôi đã giới thiệu cho các bạn trong phần một những thông tin có thể quan sát được trong khi mở chuỗi gói được gửi bởi Nmap. Chuỗi đã gửi bắt đầu với một phản hồi của ICMP echo để xác định xem máy tính hoặc mạng đã được gán với địa chỉ IP chưa. Thêm vào đó, chúng ta còn có thể đoán được mạng của máy tính bị tấn công là mạng được xây dựng trên Windows bằng cách dựa vào ttl trong gói phản hồi ICMP echo mà nó gửi trả về. Những gì nên thực hiện lúc này là tiếp tục quan sát các gói còn lại trong trình quét Nmap, và tìm ra thông tin còn lại để có thể biết được hồ sơ của mạng nạn nhân.
Tiếp tục
1059.078125 IP (tos 0x0, ttl 49, id 9808, offset 0, flags [none], proto: TCP (6), length: 40) 192.168.111.17.37668 > 192.168.111.23.80: ., cksum 0xfd46 (correct), ack 85042526 win 2048
0x0000: 4500 0028 2650 0000 3106 0407 c0a8 6f11 E..(&P..1.....o.
0x0010: c0a8 6f17 9324 0050 67d1 a55e 0511 a55e ..o..$.Pg..^...^
0x0020: 5010 0800 fd46 0000 P....F..
1059.078125 IP (tos 0x0, ttl 128, id 397, offset 0, flags [none], proto: TCP(6), length: 40) 192.168.111.23.80 > 192.168.111.17.37668: R, cksum 0x6813 (correct), 85042526:85042526(0)win 0
0x0000: 4500 0028 018d 0000 8006 d9c9 c0a8 6f17 E..(..........o.
0x0010: c0a8 6f11 0050 9324 0511 a55e 0511 a55e ..o..P.$...^...^
0x0020: 5004 0000 6813 0000 0000 0000 0000 P...h.........
Hai gói ở trên xuất hiện sau các gói ICMP mà chúng ta đã quan sát trong phần 1. Nmap đã gửi một gói ACK đến IP mạng nạn nhân là 192.168.111.23 trên cổng 80. Dưới dạng thông tin giả mạo chúng ta không có được toàn bộ vấn đề ở đây. Chỉ thấy được rằng gói ACK đã nhận từ kẻ tấn công một gói RST phản hồi, vì ACK này không được mong đợi. Bản chất là nó không thuộc về một kết nối đã được thiết lập trước đó. Chúng ta vẫn có một ttl 128 tương ứng với ttl đã quan sát từ trước.
1059.296875 IP (tos 0x0, ttl 58, id 45125, offset 0, flags [none], proto: TCP (6), length: 40) 192.168.111.17.37644 > 192.168.111.23.21: S, cksum 0x37ce (correct), 2010644897:2010644897(0) win 3072
0x0000: 4500 0028 b045 0000 3a06 7111 c0a8 6f11 E..(.E..:.q...o.
0x0010: c0a8 6f17 930c 0015 77d8 01a1 0000 0000 ..o.....w.......
0x0020: 5002 0c00 37ce 0000 P...7...
1059.296875 IP (tos 0x0, ttl 128, id 398, offset 0, flags [DF], proto: TCP (6), length: 44) 192.168.111.23.21 > 192.168.111.17.37644: S, cksum 0x4f58 (correct), 1685290308:1685290308(0) ack 2010644898 win 64240
0x0000: 4500 002c 018e 4000 8006 99c4 c0a8 6f17 E..,..@.......o.
0x0010: c0a8 6f11 0015 930c 6473 7d44 77d8 01a2 ..o.....ds}Dw...
0x0020: 6012 faf0 4f58 0000 0204 05b4 0000 `...OX........
1059.296875 IP (tos 0x0, ttl 128, id 110, offset 0, flags [none], proto: TCP(6), length: 40) 192.168.111.17.37644 > 192.168.111.23.21: R, cksum 0xca50 (correct), 2010644898:2010644898(0) win 0
0x0000: 4500 0028 006e 0000 8006 dae8 c0a8 6f11 E..(.n........o.
0x0010: c0a8 6f17 930c 0015 77d8 01a2 77d8 01a2 ..o.....w...w...
0x0020: 5004 0000 ca50 0000 P....P..
Theo sau quá trình trao đổi gói ACK và RST, chúng ta có thể thấy gói SYN thật đã được gửi từ hacker đến mạng nạn nhân, minh chứng trong gói với chữ S in đậm. Vấn đề này cho ta có thể suy luận ra rằng gói SYN/ACK phản hồi về từ mạng nạn nhân trên cổng 21 của nó. Quá trình trao đổi này sau đó được kết thúc bởi gói RST được gửi trở về từ máy tính của hacker đến mạng nạn nhân. Ba gói này lúc này giữ rất nhiều thông tin phong phú về sự giả mạo.
Chúng ta cũng có ttl 128 từ máy tính nạn nhân, nhưng cũng có win64240. Tuy giá trị này không có trong danh sách, nó quả thực là một size mà tôi đã thấy nhiều lần trước đây từ Win32 (các phiên bản 32 bit của Microsoft Windows như Win NT, 2K, XP và 2K3). Tính năng hạn chế khác của máy tính Windows là rằng khả năng đoán trước số các IP ID. Trong trường hợp này, chúng ta chỉ có một giá trị IP ID. Chúng ta cần ít nhất giá trị nữa trước khi có thể tự tin nói rằng máy tính này là một máy tính sử dụng Windows của Microsoft. Lưu ý rằng, hãy quan sát các gói còn lại từ quá trình quét của Nmap.
1059.312500 IP (tos 0x0, ttl 59, id 54025, offset 0, flags [none], proto: TCP (6), length: 40) 192.168.111.17.37644 > 192.168.111.23.80: S, cksum 0x3393 (correct), 2010644897:2010644897(0) win 4096
0x0000: 4500 0028 d309 0000 3b06 4d4d c0a8 6f11 E..(....;.MM..o.
0x0010: c0a8 6f17 930c 0050 77d8 01a1 0000 0000 ..o....Pw.......
0x0020: 5002 1000 3393 0000 P...3...
1059.312500 IP (tos 0x0, ttl 128, id 399, offset 0, flags [DF], proto: TCP (6), length: 44) 192.168.111.23.80 > 192.168.111.17.37644: S, cksum 0x7913 (correct), 1685345101:1685345101(0) ack 2010644898 win 64240
0x0000: 4500 002c 018f 4000 8006 99c3 c0a8 6f17 E..,..@.......o.
0x0010: c0a8 6f11 0050 930c 6474 534d 77d8 01a2 ..o..P..dtSMw...
0x0020: 6012 faf0 7913 0000 0204 05b4 0000 `...y.........
1059.312500 IP (tos 0x0, ttl 128, id 111, offset 0, flags [none], proto: TCP(6), length: 40) 192.168.111.17.37644 > 192.168.111.23.80: R, cksum 0xca15 (correct), 2010644898:2010644898(0) win 0
0x0000: 4500 0028 006f 0000 8006 dae7 c0a8 6f11 E..(.o........o.
0x0010: c0a8 6f17 930c 0050 77d8 01a2 77d8 01a2 ..o....Pw...w...
0x0020: 5004 0000 ca15 0000 P.......
Mẩu thông tin đầu tiên mà hacker quan sát là để xem xem số IP ID có tăng đến 399 không. IP DI này quả thực là 399 như chúng ta có thể quan sát ở phần giữa gói. Với thông tin này, hacker khá tự tin rằng máy tính nạn nhân hắn đang tấn công là Windows NT, 2K , XP, hoặc 2K3. Cũng quan sát trong chuỗi gói này là cổng 80 trên mạng nạn nhân dường như có một dịch vụ, minh chứng bởi gói SYN/ACK, gói SYN/ACK được xác định bằng việc thẩm định trường flag trong TCP header, trong trường hợp này giá trị hex gạch chân là 12 hoặc 18 với hệ thập phân. Giá trị này có thể phát hiện được bằng giá trị SYN flag 2 được bổ sung vào giá trị ACK flag 16.
Liệt kê
Khi hacker biết được cả hai cổng 21 và 80 đều mở cho doanh nghiệp, anh ta sẽ chuyển sang trạng thái liệt kê. Những gì anh này cần biết lúc này là kiểu webserver đang lắng nghe cho các kết nối là gì. Sẽ vô nghĩa đối với hacker này nếu sử dụng một lỗ hổng Apache trên một IIS web server. Với lưu ý đó kẻ tấn công sẽ mở cmd.exe session và tìm ra chủng loại mạng.
C:\>nc.exe 192.168.111.23 80
GET slslslls
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Mon, 06 Aug 2007 1548 GMT
Content-Type: text/html
Content-Length: 87
The parameter is incorrect.
C:\>
Chúng ta có thể quan sát chủng loại mạng đã được đánh dấu ở trên hoặc cú pháp nc.exe mà hacker đánh vào địa chỉ IP của nạn nhân cũng như cổng 80. Khi vào được, hacker sẽ đánh thêm vào HTTP của phương thức GET và theo sau là một số câu sai ngữ pháp. Hành động này có thể làm cho webserver của mạng nạn nhân gửi ngược trở về thông tin hệ thống của nó khi nó không hiểu yêu cầu là gì. Chính vì vậy mà chúng tự nhiên liệt kê những thông tin cần thiết cho hacker. Hacker lúc này có thể biết được rằng hắn đang ở trong Microsoft IIS 5.0. Tin tuyệt vời hơn nữa vì hacker có một số khai thác lỗ hổng đối với phiên bản này.
Kết luận
Với việc thực hiện quét mạng của nạn nhân bằng cách sử dụng Nmap, hacker có thể nhận được một loạt các gói dư liệu quan trọng sau đó. Bên trong các gói dữ liệu này, như chúng ta đã nhìn thấy, chứa đầy đủ thông tin để hacker có thể lợi dụng vào các lỗ hổng trong kiến trúc, hệ điều hành và chủng loại mạng cũng như kiểu máy chủ.
Tóm lại, với cách này, hacker có thể nắm được các thông tin chính về host, kiến trúc và dịch vụ được cung cấp. Với các thông tin này trong tay, hacker có thể tiến hành một tấn công vào webserver của mạng nạn nhân. Trong phần sau chúng tôi sẽ giới thiệu thêm về những tấn công nào hacker có thể dùng để tấn công vào người dùng trong trường hợp này.
Phân tích một tấn công (Phần 3)
Trong phần 2 của loạt bài này, chúng tôi đã để lại tất cả các thông tin cần thiết yêu cầu cho một tấn công trên mạng nạn nhân. Với lưu ý đó, chúng ta hãy tiếp tục với một tấn công thực sự. Tấn công này kéo theo sau việc truyền tải trên một số chương trình yêu cầu để có thể đi sâu hơn nữa trong việc khai thác một tấn công. Thực sự sẽ rất vô nghĩa nếu tấn công đơn giản một máy tính và sau đó rút lui, chính vì vậy mà chúng ta sẽ thực hiện một tấn công mạnh. Thông thường mục tiêu của kẻ tấn công mã nguy hiểm là không chỉ dừng lại ở việc tăng sự hiện diện trên mạng máy tính mà còn muốn duy trì nó. Điều đó có nghĩa là kẻ tấn công còn muốn tiếp tục ẩn sự hiện diện của mình và thực hiện một số hành động khác nữa.
Những vấn đề thú vị
Bây giờ chúng ta sẽ sử dụng Metasploit Framework để thuận tiện cho một tấn công thực sự. Cơ chế làm việc này thực sự rất thú vị vì nó cung cấp cho bạn nhiều kiểu khai thác khác nhau cũng như nhiều tùy chọn khác nhau trong vấn đề chọn tải trọng. Có thể bạn không muốn có một tiện ích đảo ngược, hoặc inject VNC. Tải trọng thường phụ thuộc vào mục tiêu sắp tới, kiến trúc mạng và mục tiêu cuối cùng của bạn. Trong trường hợp này, chúng ta sẽ thực hiện với một tiện ích đảo ngược. Đây thường là cách có nhiều ưu điểm, đặc biệt trong trường hợp mục tiêu của chúng ta nằm ở phía sau router và không truy cập một cách trực tiếp. Ví dụ, bạn “hit” vào một webserver nhưng tải vẫn được cân bằng. Không bảo đảm sẽ có thể kết nối đến nó bằng một tiện ích chiều thuận, do đó bạn sẽ muốn máy tính tạo ra một tiện ích ngược trở về. Chúng tôi sẽ không đề cập đến cách sử dụng của Metasploit Framework như thế nào vì có thể nó đã được giới thiệu trong một bài khác. Vậy chúng ta chỉ tập trung vào những thứ như mức gói chẳng hạn.
Lúc này, thay vì dùng phương pháp giới thiệu mỗi bước tấn công bằng các hình ảnh vắn tắt và các đoạn mã trích, chúng tôi sẽ đưa ra một tấn công khác. Những gì sẽ thực hiện là tạo lại tấn công với sự trợ giúp của Snort. Chúng ta sẽ lợi dụng bản ghi nhị phân trong tấn công mà chúng tôi đã thực hiện, sau đó phân tích cú pháp của nó thông qua Snort. Lý tưởng nó sẽ xem được mọi thứ như những gì chúng tôi đã thực hiện. Trong thực tế, những gì sẽ thực hiện là một gói minh chứng. Mục tiêu ở đây là để xem có thể ráp lại một cách chính xác những gì đã xảy ra như thế nào. Với lưu ý đó, chúng ta sẽ sử dụng bản ghi của gói nhị phân đã ghi mọi thứ đã thực hiện và phân tích cú pháp thông qua Snort qua một số các nguyên tắc mặc định của nó.
Đầu ra Snort
Cú pháp đã sử dụng để gọi Snort như sau:
C:\snort\bin\snort.exe –r c:\article_binary –dv –c snort.conf –A full
Cú pháp này làm cho Snort phân tích gói nhị phân có tên gọi là article_binary, kết quả được cho ra bên dưới. Chúng tôi đã cắt ngắn đầu ra của Snort để có thể xem xét chi tiết từng phần một.
================================================== ============
Snort processed 1345 packets.
================================================== ============
Breakdown by protocol:
TCP: 524 (38.959%)
UDP: 810 (60.223%)
ICMP: 11 (0.818%)
ARP: 0 (0.000%)
EAPOL: 0 (0.000%)
IPv6: 0 (0.000%)
ETHLOOP: 0 (0.000%)
IPX: 0 (0.000%)
FRAG: 0 (0.000%)
OTHER: 0 (0.000%)
DISCARD: 0 (0.000%)
================================================== ============
Action Stats:
ALERTS: 63
LOGGED: 63
PASSED: 0
Phần này rất hấp dẫn vì có đến 63 cảnh báo đã được kích hoạt bởi một hành động tấn công. Chúng ta sẽ xem xét đến file alert.ids, đây chính là file có thể mang lại nhiều thông tin chi tiết về những gì đã xảy ra. Lúc này, nếu bạn nhớ thứ đầu tiên mà người tấn công đã thực hiện là sử dụng Nmap để thực hiện hành vi quét mạng thì vấn đề đó cũng tạo ra một báo cảnh đầu tiên đã được kích hoạt bởi Snort.
[**] [1:469:3] ICMP PING NMAP [**]
[Classification: Attempted Information Leak] [Priority: 2]
08/09-1507.296875 192.168.111.17 -> 192.168.111.23
ICMP TTL:54 TOS:0x0 ID:3562 IpLen:20 DgmLen:28
Type:8 Code:0 ID:30208 Seq:54825 ECHO
[Xref => http://www.whitehats.com/info/IDS162]
Theo cách thức này, kẻ tấn công đã sử dụng netcat để liệt kê webserver để tìm ra kiểu webserver là gì. Hành động này đã không kích hoạt bất cứ một báo cảnh Snort nào. Chúng tôi cũng muốn tìm hiểu điều gì đã xảy ra, chính vì vậy chúng ta hãy xem xét một cách kỹ càng hơn về bản ghi cho gói. Sau khi quan sát thấy các thủ tục bắt tay TCP/IP như thường lệ, chúng ta sẽ thấy gói dưới đây.
15:04:51.546875 IP (tos 0x0, ttl 128, id 9588, offset 0, flags [DF], proto: TCP (6), length: 51) 192.168.111.17.1347 > 192.168.111.23.80: P, cksum 0x5b06 (correct), 3389462932:3389462943(11) ack 2975555611 win 64240
0x0000: 4500 0033 2574 4000 8006 75d7 c0a8 6f11 E..3%t@...u...o.
0x0010: c0a8 6f17 0543 0050 ca07 1994 b15b 601b ..o..C.P.....[`.
0x0020: 5018 faf0 5b06 0000 4745 5420 736c 736c P...[...GET.slsl
0x0030: 736c 0a sl.
Không có gì đáng chú ý trong gói này ngoài sự việc là nó có request GET với một số vấn đề bên trong theo sau như slslsl chẳng hạn. Vì vậy trong thực tế, không có bất cứ gì cho Snort hành động. Chính vì vậy sẽ rất khó khăn trong việc xây dựng một chữ ký (hay có thể gọi là dấu hiệu) IDS hiệu quả nhằm kích hoạt kiểu cố gắng liệt kê này. Chính điều đó là lý do tại sao không có các chữ ký như vậy. Gói tiếp theo sau chính là nơi mà webserver của mạng nạn nhân tự liệt kê nó.
Sau khi việc liệt kê được thực hiện, kẻ tấn công ngay lập tức gửi một mã nhằm thực hiện hành vi khai thác đến webserver. Mã này sau đó sẽ cho một số kết quả có các chữ ký Snort đã được kích hoạt. Đặc biệt cho sự khai thác được thể hiện bên dưới mà chúng ta có thể thấy được chữ ký Snort này.
[**] [1:1248:13] WEB-FRONTPAGE rad fp30reg.dll access [**]
[Classification: access to a potentially vulnerable web application] [Priority:
2]08/09-1523.000000 192.168.111.17:1454 -> 192.168.111.23:80
TCP TTL:128 TOS:0x0 ID:15851 IpLen:20 DgmLen:1500 DF
***A**** Seq: 0x7779253A Ack: 0xAA1FBC5B Win: 0xFAF0 TcpLen: 20
[Xref => http://www.microsoft.com/technet/sec...MS01-035.mspx][Xref
=> http://cve.mitre.org/cgi-bin/cvename...ame=2001-0341][Xref => http://www.s
ecurityfocus.com/bid/2906][Xref => http://www.whitehats.com/info/IDS555]
Khi kẻ tấn công đã tăng sự truy cập vào webserver, hắn sẽ bắt đầu sử dụng TFTP client để truyền tải 4 file: nc.exe, ipeye.exe, fu.exe, msdirectx.exe. Sau khi các file này đã được truyền tải, kẻ tấn công sử dụng netcat để gửi một tiện ích ngược trở lại máy tính của mình. Từ đó, hắn có thể hủy kết nối và tiện ích khác, tiện ích đã cho kết quả từ tấn công ban đầu và thực hiện tất cả các công việc còn lại trong tiện ích netcat. Rất hấp dẫn, không có hành động nào đã thực hiện bởi kẻ tấn công thông qua tiện ích đảo ngược đã được ghi bởi Snort. Tuy nhiên không quan tâm tới vấn đề đó, kẻ tấn công đã sử dụng rootkit mà hắn đã truyền tải thông qua TFTP để ẩn thông tin quá trình cho netcat.
Kết luận
Trong phần ba của loạt bài này, chúng ta đã thấy tấn công được minh chứng khi sử dụng Snort. Chúng ta hoàn toàn có thể tạo lại một trong những thứ đã được thực hiện ngoại trừ cách sử dụng của rootkit. Kể cả khi IDS là một phần công nghệ khá hữu dụng và là một phần trong hệ thống phòng chống mạng của bạn, thì điều đó không phải lúc nào cũng hoàn hảo. Các IDS chỉ có thể cảnh báo bạn lưu lượng mà nó có thể cảm nhận được. Lưu ý được vấn đề đó chúng ta sẽ tìm hiểu cách xây dựng các dấu hiệu Snort trong phần cuối cùng của loạt bài này. Cùng với đó, chúng ta sẽ tìm hiểu cả cách kiểm thử một chữ ký số (dấu hiệu) để thẩm định sự hiệu quả của chúng.
Chôm Bên http://www.ispace.edu.vn
Loạt bài này sẽ dựa trên một lỗ hổng hệ thống mạng. Những gì sẽ giới thiệu trong bài đã là một tấn công thực sự, bắt đầu từ thăm dò đến liệt kê, khai thác dịch vụ mạng và kết thúc các chiến lược khai thác gửi thông báo. Tất cả các bước này sẽ được quan sát ở mức gói dữ liệu, và sau đó sẽ được giải thích một cách cụ thể. Có thể quan sát và hiểu được một tấn công ở mức gói dữ liệu là một điều cực kỳ quan trọng cho cả các quản trị viên hệ thống (sys admin) và các nhân viên bảo mật mạng. Đầu ra của các tường lửa, Hệ thống phát hiện xâm phạm (IDS) và các thiết bị bảo mật khác sẽ luôn luôn được sử dụng để có thể xem được lưu lượng mạng thực sự. Nếu bạn không hiểu những gì đang nhìn thấy tại mức gói dữ liệu thì tất cả những công nghệ bảo mật mạng mà bạn có sẽ trở thành vô nghĩa.
Các công cụ được sử dụng cho việc mô phỏng một tấn công mạng là:
* Nmap
* IPEye
* Tcpdump
* Metasploit Framework
* Netcat
* SolarWinds TFTP Server
* Tftp client
* FU Rootkit
Bước thiết lập
Có rất nhiều hành động quét trên Internet ngày nay, không đề cập đến hành động của worm và các dạng malware khác như virus. Tất cả chúng sẽ chỉ như tạp nhiễu vô hại với các mạng máy tính được bảo vệ tốt. Những gì chúng ta nên xem xét là một người đang chủ tâm nhắm đến một mạng máy tính. Bài này sẽ thừa nhận rằng kẻ tấn công đã tấn công vào nạn nhân của hắn và đã thực hiện các nghiên cứu trước như tìm ra địa chỉ IP và các địa chỉ mạng của nạn nhân. Kẻ tấn công này có thể cũng đã cố gắng khai thác thông tin như các địa chỉ email có liên quan đến mạng đó. Kiểu thông tin này là rất quan trọng trong trường hợp kẻ tấn công đã tìm nhưng không có cách nào vào mạng sau khi đã thực hiện các hành động quét, liệt kê và giả mạo nó. Các địa chỉ email mà hắnđã thu lượm được sẽ rất hữu dụng trong việc thiết lập lên một tấn công trình khách bằng cách thử và mời người dùng vào một website mã độc thông qua một liên kết trong email. Những kiểu tấn công đó sẽ được giới thiệu trong các bài sau.
Cách thức thực hiện
Chúng ta nên quan sát các hành động của một hacker khi hắn thực hiện công việc quét, và liệt kê mạng nạn nhân. Công cụ đầu tiên mà hacker sử dụng là Nmap. Mặc dù Nmap có khá ít ký hiệu IDS nhưng nó vẫn là một công cụ khá hữu dụng và được sử dụng nhiều.
Chúng ta có thể xem thông qua cú pháp được sử dụng bởi hacker trong màn hình nhỏ hiển thị bên trên, hacker đã chọn cổng 21 và 80 vì hắn có một số khai thác có thể sử dụng thông qua Metasploit Framework. Không chỉ điều đó mà còn cả hai dịch vụ hệ thống và giao thức mà hắn hiểu khá tốt. Được hiển thị khá rõ là rằng hắn đang sử dụng quét SYN, đây là kiểu quét cổng được sử dụng thông dụng nhất. Đó cũng là do thực tế là khi một dịch vụ sử dụng TCP đang nghe trên một cổng nhận được gói SYN thì nó sẽ gửi trở lại một gói SYN/ACK (phúc đáp). Gói SYN/ACK chỉ thị rằng một dịch vụ quả thực đang nghe và đang chờ đợi kết nối. Tuy nhiên vấn đề tương tự lại không giống với UDP, nó lại dựa trên các dịch vụ như DNS (DNS cũng sử dụng TCP nhưng nó hầu như sử dụng UDP đối với phần lớn các phiên giao dịch của nó).
Cú pháp được liệt kê dưới đây là đầu ra mà Nmap thu lượm được từ các gói nó đã gửi, nhưng chính xác hơn là từ các gói nó nhận với tư cách là kết quả của quét SYN mà nó đã thực hiện. Chúng ta có thể thấy rằng bề ngoài có vẻ có cả các dịch vụ FTP và HTTP được cung cấp. Chúng ta không thực sự quan tâm đến địa chỉ MAC vì vậy sẽ bỏ qua điều đó. Các công cụ như Nmap không thường xuyên có lỗi nên nó thường rất tốt cho việc thẩm định thông tin của bạn ở mức gói dữ liệu để bảo đảm cho sự chính xác. Không chỉ vậy mà nó cũng cho phép quan sát được cả các gói trở lại, từ mạng nạn nhân để có thể thu thập được các thông tin kiến trúc, dịch vụ và host từ đó.
Hãy tra cứu các gói dữ liệu
Có một số chương trình được cung cấp ngày nay sẽ khai phá được các gói và tìm ra những thông tin cần thiết như kiểu hệ điều hành, thông tin về kiến trúc, ví dụ như x86 hay SPARC và nhiều vấn đề khác nữa. Đó chưa phải là đủ nhưng nó cũng quan trọng khi chúng ta đang tìm hiểu về việc cho phép một chương trình thực hiện công việc cho chúng ta. Với lưu ý đó, chúng ta hãy xem xét đến dấu vết gói Nmap và tìm ra một số thông tin nào đó về mạng nạn nhân.
1059.062500 IP (tos 0x0, ttl 43, id 8853, offset 0, flags [none], proto: ICMP (1), length: 28) 192.168.111.17 > 192.168.111.23: ICMP echo request seq 38214, length 8
0x0000: 4500 001c 2295 0000 2b01 0dd3 c0a8 6f11 E..."...+.....o.
0x0010: c0a8 6f17 0800 315a 315f 9546 ..o...1Z1_.F
1059.078125 IP (tos 0x0, ttl 128, id 396, offset 0, flags [none], proto: ICMP (1), length: 28) 192.168.111.23 > 192.168.111.17: ICMP echo reply seq 38214, length 8
0x0000: 4500 001c 018c 0000 8001 d9db c0a8 6f17 E.............o.
0x0010: c0a8 6f11 0000 395a 315f 9546 0000 0000 ..o...9Z1_.F....
0x0020: 0000 0000 0000 0000 0000 0000 0000 ..............
Thể hiện trong hai gói dữ liệu ở trên là loạt mở từ Nmap. Những gì nó thực hiện là gửi một yêu cầu ICMP echo đến mạng nạn nhân. Bạn sẽ thấy rằng nó không được trang bị tại một cổng nào đó, bởi vì ICMP không sử dụng các cổng, nhưng lại được quản lý bởi bộ thông báo lỗi ICMP xây dựng bên trong ngăn xếp giao thức TCP/IP. Gói ICMP này cũng được dán nhãn bằng một số duy nhất, trong trường hợp này là 38214 để giúp ngăn xếp TCP/IP có thể kiểm tra được lưu lượng trả về, và liên kết nó với gói ICMP trước đó đã gửi. Gói tin ngay trên là đáp trả từ một mạng nạn nhân, trong biểu mẫu của một đáp trả (reply) ICMP echo. Cũng tính đến cả số chuỗi 38214. Chính vì vậy hacker biết được rằng có một máy tính hoặc một mạng đằng sau địa chỉ IP đó.
Chuỗi gói ICMP đang mở này là lý do tại sao Nmap có một ký hiệu IDS cho nó. Tùy chọn khám phá ICMP host có thể bị vô hiệu hóa trong Nmap nếu muốn. Loại thông tin gì có thể được thu lượm thông qua kết quả của gói trả lời ICMP echo từ mạng nạn nhân? Trong thực tế ở đây không có nhiều thông tin giúp chúng ta nắm được về mạng. Mặc dù vậy vẫn có thể sử dụng những đòn sơ bộ tại những chỗ liên quan đến hệ điều hành. Thời gian để cư trú một trường và giá trị bên cạnh nó được đánh dấu tô đậm trong gói trên. Giá trị 128 cho thấy một sự thật rằng máy tính này có thể là một máy tính chạy hệ điều hành Windows. Trong khi đó giá trị ttl lại không trả lời một cách chính xác như những gì về có liên quan đến hệ điều hành, nó sẽ được căn cứ cho các gói kế tiếp mà chúng ta sẽ xem xét.
Kết luận
Trong phần một này, chúng ta đã xem xét về một quá trình quét đối với một mạng trong một tấn công cho hai cổng cụ thể bằng Nmap. Đến đây, kẻ tấn công này đã biết chắc chắn rằng có một máy tính hoặc một mạng máy tính cư trú tại địa chỉ IP đó. Trong phần 2 của loạt bài này, chúng tôi sẽ tiếp tục giới thiệu đến các bạn phần kết của nghiên cứu về dấu vết của gói này, và tìm ra những mẩu thông tin còn lại.
Phân tích một tấn công (Phần 2)
Chúng tôi đã giới thiệu cho các bạn trong phần một những thông tin có thể quan sát được trong khi mở chuỗi gói được gửi bởi Nmap. Chuỗi đã gửi bắt đầu với một phản hồi của ICMP echo để xác định xem máy tính hoặc mạng đã được gán với địa chỉ IP chưa. Thêm vào đó, chúng ta còn có thể đoán được mạng của máy tính bị tấn công là mạng được xây dựng trên Windows bằng cách dựa vào ttl trong gói phản hồi ICMP echo mà nó gửi trả về. Những gì nên thực hiện lúc này là tiếp tục quan sát các gói còn lại trong trình quét Nmap, và tìm ra thông tin còn lại để có thể biết được hồ sơ của mạng nạn nhân.
Tiếp tục
1059.078125 IP (tos 0x0, ttl 49, id 9808, offset 0, flags [none], proto: TCP (6), length: 40) 192.168.111.17.37668 > 192.168.111.23.80: ., cksum 0xfd46 (correct), ack 85042526 win 2048
0x0000: 4500 0028 2650 0000 3106 0407 c0a8 6f11 E..(&P..1.....o.
0x0010: c0a8 6f17 9324 0050 67d1 a55e 0511 a55e ..o..$.Pg..^...^
0x0020: 5010 0800 fd46 0000 P....F..
1059.078125 IP (tos 0x0, ttl 128, id 397, offset 0, flags [none], proto: TCP(6), length: 40) 192.168.111.23.80 > 192.168.111.17.37668: R, cksum 0x6813 (correct), 85042526:85042526(0)win 0
0x0000: 4500 0028 018d 0000 8006 d9c9 c0a8 6f17 E..(..........o.
0x0010: c0a8 6f11 0050 9324 0511 a55e 0511 a55e ..o..P.$...^...^
0x0020: 5004 0000 6813 0000 0000 0000 0000 P...h.........
Hai gói ở trên xuất hiện sau các gói ICMP mà chúng ta đã quan sát trong phần 1. Nmap đã gửi một gói ACK đến IP mạng nạn nhân là 192.168.111.23 trên cổng 80. Dưới dạng thông tin giả mạo chúng ta không có được toàn bộ vấn đề ở đây. Chỉ thấy được rằng gói ACK đã nhận từ kẻ tấn công một gói RST phản hồi, vì ACK này không được mong đợi. Bản chất là nó không thuộc về một kết nối đã được thiết lập trước đó. Chúng ta vẫn có một ttl 128 tương ứng với ttl đã quan sát từ trước.
1059.296875 IP (tos 0x0, ttl 58, id 45125, offset 0, flags [none], proto: TCP (6), length: 40) 192.168.111.17.37644 > 192.168.111.23.21: S, cksum 0x37ce (correct), 2010644897:2010644897(0) win 3072
0x0000: 4500 0028 b045 0000 3a06 7111 c0a8 6f11 E..(.E..:.q...o.
0x0010: c0a8 6f17 930c 0015 77d8 01a1 0000 0000 ..o.....w.......
0x0020: 5002 0c00 37ce 0000 P...7...
1059.296875 IP (tos 0x0, ttl 128, id 398, offset 0, flags [DF], proto: TCP (6), length: 44) 192.168.111.23.21 > 192.168.111.17.37644: S, cksum 0x4f58 (correct), 1685290308:1685290308(0) ack 2010644898 win 64240
0x0000: 4500 002c 018e 4000 8006 99c4 c0a8 6f17 E..,..@.......o.
0x0010: c0a8 6f11 0015 930c 6473 7d44 77d8 01a2 ..o.....ds}Dw...
0x0020: 6012 faf0 4f58 0000 0204 05b4 0000 `...OX........
1059.296875 IP (tos 0x0, ttl 128, id 110, offset 0, flags [none], proto: TCP(6), length: 40) 192.168.111.17.37644 > 192.168.111.23.21: R, cksum 0xca50 (correct), 2010644898:2010644898(0) win 0
0x0000: 4500 0028 006e 0000 8006 dae8 c0a8 6f11 E..(.n........o.
0x0010: c0a8 6f17 930c 0015 77d8 01a2 77d8 01a2 ..o.....w...w...
0x0020: 5004 0000 ca50 0000 P....P..
Theo sau quá trình trao đổi gói ACK và RST, chúng ta có thể thấy gói SYN thật đã được gửi từ hacker đến mạng nạn nhân, minh chứng trong gói với chữ S in đậm. Vấn đề này cho ta có thể suy luận ra rằng gói SYN/ACK phản hồi về từ mạng nạn nhân trên cổng 21 của nó. Quá trình trao đổi này sau đó được kết thúc bởi gói RST được gửi trở về từ máy tính của hacker đến mạng nạn nhân. Ba gói này lúc này giữ rất nhiều thông tin phong phú về sự giả mạo.
Chúng ta cũng có ttl 128 từ máy tính nạn nhân, nhưng cũng có win64240. Tuy giá trị này không có trong danh sách, nó quả thực là một size mà tôi đã thấy nhiều lần trước đây từ Win32 (các phiên bản 32 bit của Microsoft Windows như Win NT, 2K, XP và 2K3). Tính năng hạn chế khác của máy tính Windows là rằng khả năng đoán trước số các IP ID. Trong trường hợp này, chúng ta chỉ có một giá trị IP ID. Chúng ta cần ít nhất giá trị nữa trước khi có thể tự tin nói rằng máy tính này là một máy tính sử dụng Windows của Microsoft. Lưu ý rằng, hãy quan sát các gói còn lại từ quá trình quét của Nmap.
1059.312500 IP (tos 0x0, ttl 59, id 54025, offset 0, flags [none], proto: TCP (6), length: 40) 192.168.111.17.37644 > 192.168.111.23.80: S, cksum 0x3393 (correct), 2010644897:2010644897(0) win 4096
0x0000: 4500 0028 d309 0000 3b06 4d4d c0a8 6f11 E..(....;.MM..o.
0x0010: c0a8 6f17 930c 0050 77d8 01a1 0000 0000 ..o....Pw.......
0x0020: 5002 1000 3393 0000 P...3...
1059.312500 IP (tos 0x0, ttl 128, id 399, offset 0, flags [DF], proto: TCP (6), length: 44) 192.168.111.23.80 > 192.168.111.17.37644: S, cksum 0x7913 (correct), 1685345101:1685345101(0) ack 2010644898 win 64240
0x0000: 4500 002c 018f 4000 8006 99c3 c0a8 6f17 E..,..@.......o.
0x0010: c0a8 6f11 0050 930c 6474 534d 77d8 01a2 ..o..P..dtSMw...
0x0020: 6012 faf0 7913 0000 0204 05b4 0000 `...y.........
1059.312500 IP (tos 0x0, ttl 128, id 111, offset 0, flags [none], proto: TCP(6), length: 40) 192.168.111.17.37644 > 192.168.111.23.80: R, cksum 0xca15 (correct), 2010644898:2010644898(0) win 0
0x0000: 4500 0028 006f 0000 8006 dae7 c0a8 6f11 E..(.o........o.
0x0010: c0a8 6f17 930c 0050 77d8 01a2 77d8 01a2 ..o....Pw...w...
0x0020: 5004 0000 ca15 0000 P.......
Mẩu thông tin đầu tiên mà hacker quan sát là để xem xem số IP ID có tăng đến 399 không. IP DI này quả thực là 399 như chúng ta có thể quan sát ở phần giữa gói. Với thông tin này, hacker khá tự tin rằng máy tính nạn nhân hắn đang tấn công là Windows NT, 2K , XP, hoặc 2K3. Cũng quan sát trong chuỗi gói này là cổng 80 trên mạng nạn nhân dường như có một dịch vụ, minh chứng bởi gói SYN/ACK, gói SYN/ACK được xác định bằng việc thẩm định trường flag trong TCP header, trong trường hợp này giá trị hex gạch chân là 12 hoặc 18 với hệ thập phân. Giá trị này có thể phát hiện được bằng giá trị SYN flag 2 được bổ sung vào giá trị ACK flag 16.
Liệt kê
Khi hacker biết được cả hai cổng 21 và 80 đều mở cho doanh nghiệp, anh ta sẽ chuyển sang trạng thái liệt kê. Những gì anh này cần biết lúc này là kiểu webserver đang lắng nghe cho các kết nối là gì. Sẽ vô nghĩa đối với hacker này nếu sử dụng một lỗ hổng Apache trên một IIS web server. Với lưu ý đó kẻ tấn công sẽ mở cmd.exe session và tìm ra chủng loại mạng.
C:\>nc.exe 192.168.111.23 80
GET slslslls
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Mon, 06 Aug 2007 1548 GMT
Content-Type: text/html
Content-Length: 87
The parameter is incorrect.
C:\>
Chúng ta có thể quan sát chủng loại mạng đã được đánh dấu ở trên hoặc cú pháp nc.exe mà hacker đánh vào địa chỉ IP của nạn nhân cũng như cổng 80. Khi vào được, hacker sẽ đánh thêm vào HTTP của phương thức GET và theo sau là một số câu sai ngữ pháp. Hành động này có thể làm cho webserver của mạng nạn nhân gửi ngược trở về thông tin hệ thống của nó khi nó không hiểu yêu cầu là gì. Chính vì vậy mà chúng tự nhiên liệt kê những thông tin cần thiết cho hacker. Hacker lúc này có thể biết được rằng hắn đang ở trong Microsoft IIS 5.0. Tin tuyệt vời hơn nữa vì hacker có một số khai thác lỗ hổng đối với phiên bản này.
Kết luận
Với việc thực hiện quét mạng của nạn nhân bằng cách sử dụng Nmap, hacker có thể nhận được một loạt các gói dư liệu quan trọng sau đó. Bên trong các gói dữ liệu này, như chúng ta đã nhìn thấy, chứa đầy đủ thông tin để hacker có thể lợi dụng vào các lỗ hổng trong kiến trúc, hệ điều hành và chủng loại mạng cũng như kiểu máy chủ.
Tóm lại, với cách này, hacker có thể nắm được các thông tin chính về host, kiến trúc và dịch vụ được cung cấp. Với các thông tin này trong tay, hacker có thể tiến hành một tấn công vào webserver của mạng nạn nhân. Trong phần sau chúng tôi sẽ giới thiệu thêm về những tấn công nào hacker có thể dùng để tấn công vào người dùng trong trường hợp này.
Phân tích một tấn công (Phần 3)
Trong phần 2 của loạt bài này, chúng tôi đã để lại tất cả các thông tin cần thiết yêu cầu cho một tấn công trên mạng nạn nhân. Với lưu ý đó, chúng ta hãy tiếp tục với một tấn công thực sự. Tấn công này kéo theo sau việc truyền tải trên một số chương trình yêu cầu để có thể đi sâu hơn nữa trong việc khai thác một tấn công. Thực sự sẽ rất vô nghĩa nếu tấn công đơn giản một máy tính và sau đó rút lui, chính vì vậy mà chúng ta sẽ thực hiện một tấn công mạnh. Thông thường mục tiêu của kẻ tấn công mã nguy hiểm là không chỉ dừng lại ở việc tăng sự hiện diện trên mạng máy tính mà còn muốn duy trì nó. Điều đó có nghĩa là kẻ tấn công còn muốn tiếp tục ẩn sự hiện diện của mình và thực hiện một số hành động khác nữa.
Những vấn đề thú vị
Bây giờ chúng ta sẽ sử dụng Metasploit Framework để thuận tiện cho một tấn công thực sự. Cơ chế làm việc này thực sự rất thú vị vì nó cung cấp cho bạn nhiều kiểu khai thác khác nhau cũng như nhiều tùy chọn khác nhau trong vấn đề chọn tải trọng. Có thể bạn không muốn có một tiện ích đảo ngược, hoặc inject VNC. Tải trọng thường phụ thuộc vào mục tiêu sắp tới, kiến trúc mạng và mục tiêu cuối cùng của bạn. Trong trường hợp này, chúng ta sẽ thực hiện với một tiện ích đảo ngược. Đây thường là cách có nhiều ưu điểm, đặc biệt trong trường hợp mục tiêu của chúng ta nằm ở phía sau router và không truy cập một cách trực tiếp. Ví dụ, bạn “hit” vào một webserver nhưng tải vẫn được cân bằng. Không bảo đảm sẽ có thể kết nối đến nó bằng một tiện ích chiều thuận, do đó bạn sẽ muốn máy tính tạo ra một tiện ích ngược trở về. Chúng tôi sẽ không đề cập đến cách sử dụng của Metasploit Framework như thế nào vì có thể nó đã được giới thiệu trong một bài khác. Vậy chúng ta chỉ tập trung vào những thứ như mức gói chẳng hạn.
Lúc này, thay vì dùng phương pháp giới thiệu mỗi bước tấn công bằng các hình ảnh vắn tắt và các đoạn mã trích, chúng tôi sẽ đưa ra một tấn công khác. Những gì sẽ thực hiện là tạo lại tấn công với sự trợ giúp của Snort. Chúng ta sẽ lợi dụng bản ghi nhị phân trong tấn công mà chúng tôi đã thực hiện, sau đó phân tích cú pháp của nó thông qua Snort. Lý tưởng nó sẽ xem được mọi thứ như những gì chúng tôi đã thực hiện. Trong thực tế, những gì sẽ thực hiện là một gói minh chứng. Mục tiêu ở đây là để xem có thể ráp lại một cách chính xác những gì đã xảy ra như thế nào. Với lưu ý đó, chúng ta sẽ sử dụng bản ghi của gói nhị phân đã ghi mọi thứ đã thực hiện và phân tích cú pháp thông qua Snort qua một số các nguyên tắc mặc định của nó.
Đầu ra Snort
Cú pháp đã sử dụng để gọi Snort như sau:
C:\snort\bin\snort.exe –r c:\article_binary –dv –c snort.conf –A full
Cú pháp này làm cho Snort phân tích gói nhị phân có tên gọi là article_binary, kết quả được cho ra bên dưới. Chúng tôi đã cắt ngắn đầu ra của Snort để có thể xem xét chi tiết từng phần một.
================================================== ============
Snort processed 1345 packets.
================================================== ============
Breakdown by protocol:
TCP: 524 (38.959%)
UDP: 810 (60.223%)
ICMP: 11 (0.818%)
ARP: 0 (0.000%)
EAPOL: 0 (0.000%)
IPv6: 0 (0.000%)
ETHLOOP: 0 (0.000%)
IPX: 0 (0.000%)
FRAG: 0 (0.000%)
OTHER: 0 (0.000%)
DISCARD: 0 (0.000%)
================================================== ============
Action Stats:
ALERTS: 63
LOGGED: 63
PASSED: 0
Phần này rất hấp dẫn vì có đến 63 cảnh báo đã được kích hoạt bởi một hành động tấn công. Chúng ta sẽ xem xét đến file alert.ids, đây chính là file có thể mang lại nhiều thông tin chi tiết về những gì đã xảy ra. Lúc này, nếu bạn nhớ thứ đầu tiên mà người tấn công đã thực hiện là sử dụng Nmap để thực hiện hành vi quét mạng thì vấn đề đó cũng tạo ra một báo cảnh đầu tiên đã được kích hoạt bởi Snort.
[**] [1:469:3] ICMP PING NMAP [**]
[Classification: Attempted Information Leak] [Priority: 2]
08/09-1507.296875 192.168.111.17 -> 192.168.111.23
ICMP TTL:54 TOS:0x0 ID:3562 IpLen:20 DgmLen:28
Type:8 Code:0 ID:30208 Seq:54825 ECHO
[Xref => http://www.whitehats.com/info/IDS162]
Theo cách thức này, kẻ tấn công đã sử dụng netcat để liệt kê webserver để tìm ra kiểu webserver là gì. Hành động này đã không kích hoạt bất cứ một báo cảnh Snort nào. Chúng tôi cũng muốn tìm hiểu điều gì đã xảy ra, chính vì vậy chúng ta hãy xem xét một cách kỹ càng hơn về bản ghi cho gói. Sau khi quan sát thấy các thủ tục bắt tay TCP/IP như thường lệ, chúng ta sẽ thấy gói dưới đây.
15:04:51.546875 IP (tos 0x0, ttl 128, id 9588, offset 0, flags [DF], proto: TCP (6), length: 51) 192.168.111.17.1347 > 192.168.111.23.80: P, cksum 0x5b06 (correct), 3389462932:3389462943(11) ack 2975555611 win 64240
0x0000: 4500 0033 2574 4000 8006 75d7 c0a8 6f11 E..3%t@...u...o.
0x0010: c0a8 6f17 0543 0050 ca07 1994 b15b 601b ..o..C.P.....[`.
0x0020: 5018 faf0 5b06 0000 4745 5420 736c 736c P...[...GET.slsl
0x0030: 736c 0a sl.
Không có gì đáng chú ý trong gói này ngoài sự việc là nó có request GET với một số vấn đề bên trong theo sau như slslsl chẳng hạn. Vì vậy trong thực tế, không có bất cứ gì cho Snort hành động. Chính vì vậy sẽ rất khó khăn trong việc xây dựng một chữ ký (hay có thể gọi là dấu hiệu) IDS hiệu quả nhằm kích hoạt kiểu cố gắng liệt kê này. Chính điều đó là lý do tại sao không có các chữ ký như vậy. Gói tiếp theo sau chính là nơi mà webserver của mạng nạn nhân tự liệt kê nó.
Sau khi việc liệt kê được thực hiện, kẻ tấn công ngay lập tức gửi một mã nhằm thực hiện hành vi khai thác đến webserver. Mã này sau đó sẽ cho một số kết quả có các chữ ký Snort đã được kích hoạt. Đặc biệt cho sự khai thác được thể hiện bên dưới mà chúng ta có thể thấy được chữ ký Snort này.
[**] [1:1248:13] WEB-FRONTPAGE rad fp30reg.dll access [**]
[Classification: access to a potentially vulnerable web application] [Priority:
2]08/09-1523.000000 192.168.111.17:1454 -> 192.168.111.23:80
TCP TTL:128 TOS:0x0 ID:15851 IpLen:20 DgmLen:1500 DF
***A**** Seq: 0x7779253A Ack: 0xAA1FBC5B Win: 0xFAF0 TcpLen: 20
[Xref => http://www.microsoft.com/technet/sec...MS01-035.mspx][Xref
=> http://cve.mitre.org/cgi-bin/cvename...ame=2001-0341][Xref => http://www.s
ecurityfocus.com/bid/2906][Xref => http://www.whitehats.com/info/IDS555]
Khi kẻ tấn công đã tăng sự truy cập vào webserver, hắn sẽ bắt đầu sử dụng TFTP client để truyền tải 4 file: nc.exe, ipeye.exe, fu.exe, msdirectx.exe. Sau khi các file này đã được truyền tải, kẻ tấn công sử dụng netcat để gửi một tiện ích ngược trở lại máy tính của mình. Từ đó, hắn có thể hủy kết nối và tiện ích khác, tiện ích đã cho kết quả từ tấn công ban đầu và thực hiện tất cả các công việc còn lại trong tiện ích netcat. Rất hấp dẫn, không có hành động nào đã thực hiện bởi kẻ tấn công thông qua tiện ích đảo ngược đã được ghi bởi Snort. Tuy nhiên không quan tâm tới vấn đề đó, kẻ tấn công đã sử dụng rootkit mà hắn đã truyền tải thông qua TFTP để ẩn thông tin quá trình cho netcat.
Kết luận
Trong phần ba của loạt bài này, chúng ta đã thấy tấn công được minh chứng khi sử dụng Snort. Chúng ta hoàn toàn có thể tạo lại một trong những thứ đã được thực hiện ngoại trừ cách sử dụng của rootkit. Kể cả khi IDS là một phần công nghệ khá hữu dụng và là một phần trong hệ thống phòng chống mạng của bạn, thì điều đó không phải lúc nào cũng hoàn hảo. Các IDS chỉ có thể cảnh báo bạn lưu lượng mà nó có thể cảm nhận được. Lưu ý được vấn đề đó chúng ta sẽ tìm hiểu cách xây dựng các dấu hiệu Snort trong phần cuối cùng của loạt bài này. Cùng với đó, chúng ta sẽ tìm hiểu cả cách kiểm thử một chữ ký số (dấu hiệu) để thẩm định sự hiệu quả của chúng.
Không có nhận xét nào:
Đăng nhận xét