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 =>
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 => />035.mspx][Xref
=> =>
http://www.s
ecurityfocus.com/bid/2906][Xref =>
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.