Phân tích một tấn công (Phần 3) - 24/3/2008 8h:39 Phân tích một tấn công (Phần 1) Phân tích một tấn công (Phần 2) Don Parker 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-15:37:07.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-15:39:23.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/security/bulletin/MS01- 035.mspx][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=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ầncô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. . dưới đây. 15 :04: 51. 546875 IP (tos 0x0, ttl 12 8, id 9588, offset 0, flags [DF], proto: TCP (6 ), length: 51) 19 2 .16 8 .11 1 .17 .13 47 > 19 2 .16 8 .11 1.23.80: P,. 2]08/09 -15 :39:23.000000 19 2 .16 8 .11 1 .17 :14 54 -> 19 2 .16 8 .11 1.23:80 TCP TTL :12 8 TOS:0x0 ID :15 8 51 IpLen:20 DgmLen :15 00 DF ***A**** Seq: 0x7779253A Ack: 0xAA1FBC5B Win: