Ngược lại, ở tình huống tấn công hijacking thụ động thì các kẻ tấn công chỉ theo dõi và ghi lại tất cả những truyền thông được gởi bởi người sử dụng hợp lệ, các bạn có thể thấy tình huố
Trang 1Module 11 Session Hijacking
Những Nội Dung Chính Trong Chương Này
Giới Thiệu Về Session Hijacking Phân biệt Spoofing và Hijacking Các dạng tấn công Session Hijacking
Dự Đoán Các Số Hiệu Tuần Tự Quy Trình Session Hijacking Công Cụ Tấn Công Session Hijacking Phòng Chống Session Hijacking
Trang 2Session Hijacking Là Gì ?
Tiếp theo, chúng ta sẽ tìm hiểu về chủ đề Session Hijacking, một hình thức tấn công phổ
biến nhắm vào các người dùng mạng xã hội như Facebook hay những hộp thư Gmail,
Yahoo Session Hijacking là hình thức tấn công vào phiên làm việc giữa client và server
cách đánh cắp cookie của người sử dụng sau khi họ đã qua bước xác thực với máy chủ, sau đó sẽ chiếm quyền điều khiển của phiên làm việc này Session là thuật ngữ nói đến
một phiên kết nối giữa hai máy tính trên hệ thống mạng thường được duy trì bởi các giá trị như thời gian tồn tại của session, thông tin cookie của trình duyệt hay các thẻ bài thích hợp Các bạn có thể xem lại phần giới thiệu về phiên làm việc và quá trình three-way handshake ở những chương trước
Trong đại hội Blackhat năm 2009 một hacker đã làm ngỡ ngàng khán thính giả vì đã trình
diễn trực tiếp một phương pháp đột nhập vào hộp thư của phóng viên BBC đang tham dự hội thảo và gởi thư trước mặt cử tọa trong hội trường Phương pháp tấn công này được
chuyên gia bảo mật trên đặt tên là Side jacking, một thuật ngữ không thấy xuất hiện trong CEH nhưng cũng thuộc dạng tấn công Session Hijacking
Phân biệt Spoofing và Hijacking
Tấn công spoofing khác với dạng tấn công hijacking Vi trong tình huống tấn công
spoofing các hacker sẽ nghe lén dữ liệu truyền trên mạng từ người gởi đến nơi nhận sau
đó sử dụng các thông tin thu thập được giả mạo địa chỉ (hoặc sử dụng ngay các địa chỉ đã
lấy trộm) nhằm qua mặt các hệ thống kiểm tra Trong khi đó hình thức tấn công hijacking
sẽ làm cho kết nối của nạn nhân đến máy chủ bị ngắt khi đã xác thực thành công sau đó cướp lấy phiên làm việc này của người dùng nhằm vượt qua bước kiểm tra của máy chủ
Quá trình tấn công Session Hijacking gồm có ba bước như sau :
- Dò Tìm Session : Hacker sẽ dò tìm các session đang mở và tính toán giá trị tuần
tự của gói tin tiếp theo
- Tái Đồng Bộ Kết Nối : Hacker gởi các tín hiệu TCP reset (RST) hay FIN để yêu cầu khởi động lại quá trình kết nối đồng thời đóng phiên làm việc cũ
- Chèn Các Packet Tấn Công : lúc này hacker sẽ gởi đến máy chủ những gói tin TCP với số hiệu tuần tự đã được tính toán thích hợp với phiên làm việc do đó máy chủ sẽ chấp nhận những thông tin này giống như là các dữ liệu hợp lệ tiếp theo của người dùng bị tấn công Nghĩa là, khi này các hacker có thể gởi đi một thông điệp trên chính Wall của nạn nhân bằng tài khoản Facebook của người bị tấn công như Hình 11.1
Trang 3Hình 11.1 – Tình huống tấn công Hijacking bằng Add-on Firesheep cài trên Firefox,
truy cập vào session Facebook của một người dùng khác trên cùng mạng, sau đó gởi
thông điệp Post By FireSheep
Các dạng tấn công Session Hijacking
Có hai dạng Session Hijacking đó là chủ động và bị động Khác biệt chính giữa hai hình
thức hijacking này phụ thuộc vào sự tác động của hacker lên phiên làm việc của người sử
dụng trong môi trường mạng Ở trạng thái chủ động hacker sẽ tìm các phiên làm việc đang hoạt động và chiếm đoạt nó thông qua các công cụ và tính toán các giá trị tuần tự
của gói tin trong TCP session Ngược lại, ở tình huống tấn công hijacking thụ động thì
các kẻ tấn công chỉ theo dõi và ghi lại tất cả những truyền thông được gởi bởi người sử dụng hợp lệ, các bạn có thể thấy tình huống này rất giống với nghe lén vì nó sẽ thu thập các thông tin quan trọng của người dùng như mật khẩu đăng nhập để tiến hành xác thực
cho các lần xâm nhập trái phép sau này trên một session khác
Three-Way Handshake
Chức năng chính của TCP trong mô hình OSI là vận chuyển các gói tin giống như tên gọi của nó là Transmission Control Protocol Để thực điều này TCP sử dụng các gói tin báo nhận (ACK) cùng với số hiệu tuần tự (sequence number) Tận dụng các số hiệu này là một trong những điểm then chốt của TCP Session Hijacking, do đó để hiểu rõ về dạng tấn công này các bạn cần xem lại các khái niệm cơ bản của quá trình bắt tay ba bước đã trình bày trong phần đầu của giáo trình :
Trang 41 Khi người dùng hợp lệ khởi tạo một kết nối đến máy chủ ví dụ kết nối đến trang Facebook để liên lạc với bạn bè hay Flickr để chia sẽ hình ảnh với người thân thì máy tính của anh ta sẽ gởi một gói tin có chứa tín hiệu SYN yêu cầu đồng bộ và
một giá trị ISN (Initial Sequence Number) ban đầu
2 Máy chủ Facebook hay Flickr tiếp nhận gói tin này và phản hồi bằng một thông điệp được thiết lập bằng cờ SYN cùng với ISBN của máy chủ, kèm theo đó là cờ ACK được xác định với số hiệu được khởi tạo của người gởi cộng thêm 1
3 Tiếp theo máy tính của người dùng hợp lệ sẽ thông báo bằng gói tin với cờ Ack được thiết lập cùng với giá trị ISN của máy chủ cộng thêm 1 để bắt đầu phiên làm việc
Kết nối này có khả năng bị đóng khi hết thời gian do mạng bị lag (bị trễ) hay kết nối có
thể bị kết thúc khi nhận được các yêu cầu là những gói tin với cờ FIN hay RST được đặt
Khi nhận được tín hiệu RST thì kết nối sẽ bị đóng và tất cả các gói tin tiếp theo bị từ chối, còn khi nhận được tín hiệu đóng bằng cờ FIN thì các gói tin đang xử lý vẫn được tiếp nhận cho đến khi hoàn tất thì kết nối mới kết thúc Và việc gởi những tín hiệu với cờ FIN hay RST là phương pháp chính mà các hijacker (những hacker tấn công hijacking)
sử dụng để đóng các session của client với server và sau đó chiếm quyền điều khiển, hoạt động như là client hợp lệ
Hacker Dự Đoán Các Số Hiệu Tuần Tự Như Thế Nào ?
TCP là một giao thức hướng liên kết có nhiệm vụ tổng hợp các gói tin (packet) bị phân mãnh khi truyền thành dữ liệu gốc Vì vậy mỗi packet cần được cấp một giá trị duy nhất theo thứ tự gọi là sequence nember (SN), ngoài ra mỗi packet còn được gán giá trị session để máy nhận có thể hợp nhất các luồng packet thành dữ liệu gốc ban đầu Nếu các packet không đến đích theo một trật tự như ban đầu thì sequence number sẽ giúp cho việc sắp xếp chúng theo đúng trình tự Ngoài ra, một hệ thống khởi tạo TCP session bằng cách gởi gói tin với cờ SYN được thiết lập và gói tin này được gọi là synchronize packet
có chứa các giá trị khởi tạo ISN (Initial Sequence Number) như Hình 11.2
Trang 5Hình 11.2 – Cấu trúc của gói tin
Và khi các gói tin có chứa thông tin báo nhận ACK được gởi đi thì các máy tính sẽ sử dụng số SN của ACK này cộng thêm một đơn vị Cũng lưu ý là việc cộng một này chỉ áp dụng trong quá trình three-way handshake, với các truyền thông khác thì giá trị cộng thêm bằng với kích thược của gói tin, ví dụ chúng ta truyền 45 byte dữ liệu thì ACK đáp ứng sẽ lấy số SN của ACK nhận cộng với 45
Hình 11.3 - Tiến trình bắt tay 3 bước three-way handshake
Nắm được cơ chế này của quá trình bắt tay ba bước hacker đã tạo ra các công cụ có thể xác định giá trị SN của những gói tin, trước tiên hacker sẽ nghe lén truyền thông giữa hai máy tính để rồi xác định giá trị ISN và tính ra giá trị tiếp theo Tuy nhiên đây không phải
là một việc đơn giãn như khi chúng ta trình bày nguyên tắt hoạt động của chúng vì các
gói tin di chuyển với tốc độ cực nhanh, nếu như hacker không sniff (nghe lén) được gói
tin thì họ cũng không thể tiến hành tấn công Session Hijacking Vì vậy hầu hết các công
cụ tấn công Session Hijacking thông dụng đều kèm theo ứng dụng cho phép nghe lén các gói tin nhằm xác định ra giá trị SN
Vi dụ khi hacker tấn công Side jacking trong môi trường wifi sử dụng bộ công cụ gồm hai chương trình là ferret.exe và hamster.exe (http://erratasec.blogspot.com) , trong đó ferret có nhiệm vụ nghe lén thông tin trên mạng wifi
Trang 6Hình 11.4 - Attacker nghe lén đường truyền khi tấn công Session Hijacking
Sau khi nghe lén dữ liệu truyền và xác định được giá trị SN kế tiếp thì các chương trình tấn công sẽ tiến hành giả mạo địa chỉ IP (IP Spoofing) của hệ thống hợp lệ đã khởi tạo session với máy chủ rồi gởi các gói tin với giá trị SN thích hợp nhằm sử dụng session đã được tạo ra và vượt qua quá trình xác thực Như vậy các bạn sẽ đặt câu hỏi là nếu như cả máy tấn công và nạn nhân cùng gởi các gói tin với giá trị SN thích hợp thì sao ? Thường
thì hacker sẽ chạy các chương trình làm cho máy tính của nạn nhân bị reset lại kết nối
bằng cách gởi các gói tin với cờ RST được đặt
Các Bước Trong Quá Trình Session Hijacking
Để tiến hành tấn công Session Hijacking thì hacker cần thực hiện các bước sau :
- Tracking Session : Trong bước này hacker cần xác định các session đang hoạt
động và tính được giá trị SN kết tiếp của gói tin
- Desynchronizing : Hacker tiến hành đóng kết nối của nạn nhân để chiếm toàn bộ
session của họ thông qua các công DoS hay gởi những tín hiệu reset đến máy tính người dùng
- Gỏi Các Gói Tin Đã Được Chèn Giá Trị SN Hợp Lệ Đến Máy Chủ : Kết nối
như người dùng đã xác thực
Các Công Cụ Tấn Công Session Hijacking
Có khá nhiều công cụ có thể tiến hành tấn công Session Hijacking đã được phát triển
trước đây như Juggernaut chuyên sniff các TCP session trong môi trường mạng hoạt động với hub Hoặc Hunt với chức năng giả mạo địa chỉ MAC với cơ chế ARP spoofing,
reset và giám sát các kết nối, nghe lén đường truyền
Trang 7Hiện nay, nhiều công cụ mạnh mẽ khác được phát triển giúp cho hacker có thể tiến hành tấn công Session Hijacking dễ dàng hơn Trong số đó phải kể đến Burp Suite, ứng dụng
có mặt trong danh sách 125 công cụ bảo mật hàng đầu hiện nay có khả năng thay đổi dữ liệu trên quá trình truyền, đánh cướp session hay giả mạo cả các chứng chỉ điện tử dùng
trong xác thực https
Hình 11.5 - Giao diện Burp suite
(http://codebutler.github.com/firesheep/) có lẽ là công cụ nổi tiếng nhất xuất hiện vào khoảng giữa năm 2011, một add-on mạnh mẽ của Firefox (các phiên bản Firefox từ 4 trở lên không cài đặt được Firesheep) cho phép kẻ tấn công dễ dàng nghe lén và đánh cắp session của người dùng khi truy cập Facebook, Flicker … Để chống lại add-on này các
bạn nên sử dụng một add-on khác có tên gọi là Blacksheep được hack5.org mô tả tại đây
http://hak5.org/hack/blacksheep-%E2%80%93-firesheep-defense
Trang 8Hình 11.6 – Tấn công bằng Firesheep
Ngoài ra, trong quá trình đào tạo về an ninh mạng cho các tổ chức tôi cũng thường hay đề
cập đến một ứng dụng thú vị là Tamper Data, thường được các hacker sử dụng để thay
đổi các tham số truyền đến máy chủ, ví dụ khi người dùng chơi các game online như nông trại trên facebook, bắn chim … họ có thể dễ dàng thay đổi điểm số của mình để đánh lừa máy chủ game Các bạn có thể tham khảo bài hướng dẫn thực hành về Tamper Data tại http://www.youtube.com/watch?v=Z8yYei50Sxk
Những Mối Nguy Hiểm Của Session Hijacking
Có phóng viên của tạp chí nổi tiếng đã mất nhiều thời gian để sưu tâm và viết bài về một
vụ án được nhiều người quan tâm, nhưng khi bài báo chuẩn bị lên khuôn thì trên mạng đã xuất hiện rất nhiều tin tức liên quan đến chủ đề này khiến cho chính tác giả phải ngạc nhiên, vì không biết tại sao thông tin đã bị lộ dù anh ta nói rằng mình đã cài đặt đầy đủ chương trình bảo vệ, phòng chống virus …Nguyên nhân là phóng viên này đã sử dụng máy tính trong các quán ca phê Wifi thiếu cẩn trọng bị hacker tấn công Session Hijacking đột nhập vào hộp thư điện tử lấy đi các tin bài quan trọng
Do đó, trong vài trò của một chuyên gia bảo mật hay CEH chúng ta cần hướng dẫn người
dùng tránh sử dụng máy tính trong môi trường công cộng (un-trusted) thiếu cẩn trọng, vì
dạng tấn công Session Hijacking rất dễ tiến hành, đặc biệt là trong môi trường mạng không dây thì tỉ lệ thành công rất cao Trong chương trình đào tạo về an toàn thông tin cho các cán bộ của Tổng Cục Hải Quan tôi có trình bày một tình huống Side Jacking để
Trang 9minh họa tác động của nó và khi học viên thực hành trong môi trường thực tế thì hầu hết đều cho rằng đạt kết quả thành công
Vậy Làm Sao Phòng Chống Session Hijacking ?
Để phòng chống không bị tấn công Session Hijacking thì chúng ta cần phòng tránh bị nghe lén, một khi hacker không thể nghe lén được thì cũng koh6ng thể tấn công vào session của người dùng Một torng các giải pháp đế tránh các sniffer chính là mã hóa dữ liệu, mã hóa đường truyền với các kỹ thuật như dùng Secure Shell (SSH thay cho Telnet thông thường) khi quản trị từ xa hay áp dụng Secure Socket Layer (SSL dùng cho truyền thông qua HTTPS )
Ngoài ra chúng ta có thể ngăn không cho hacker tương tác vào đường truyền cũng giúp loại bỏ nguy cơ bị tấn công này, với những giải pháp hữu hiệu như dùng mạng riêng ảo (VPN), hay áp dụng IPSEC Nhiều ý kiến còn cho rằng khi truy cập internet ở môi trường công cộng hãy dùng các thiết bị DCOM 3G cũng giảm đáng kể nguy cơ mất mát dữ liệu Sau đây là một số khuyến nghị nhằm ngăn ngừa Session Hijacking :
- Sử dụng mã hóa
- Ứng dụng các giao thức an toàn
- Hạn chế các kết nối đầu vào
- Giảm các truy cập từ xa
- Có chế độ xác thực mạnh mẽ
- Huấn luyện cho người dùng, nâng cao nhận thức an toàn thông tin
- Sử dụng các thông tin truy cập khác nhau cho các tài khoản khác nhau
Tổng Kết
Trong chương trên chúng ta đã thảo luận về một hình thức tấn công thông dụng, dễ tiến
hành và đặc biệt nguy hiểm trên các hệ thống mạng không dây đó là tấn công Session Hijacking Các bạn đã nắm những công cụ mạnh hay được sử dụng hiện nay cũng như
các hướng dẫn kèm theo, và trong vai trò CEH chúng ta cần biết rõ tác hại của Session Hijacking cũng như giải pháp phòng chống để có thể bảo vệ dữ liệu cho chính mình và hướng dẫn người dùng các thao tác nhằm bảo vệ tính riêng tư, phòng chống bị mất cắp
dữ liệu Trong phần tiếp theo chúng ta sẽ thảo luận về một chủ đề rất được quan tâm là
“Tấn Công Web Server”
Trang 10Module 12 Hacking web server
Những Nội Dung Chính Trong Chương Này
Cách Tấn Công Thông Dụng Vào Máy Chủ Web
IIS Unicode Exploit Tấn Công Web Server Qua Lỗi Của Hệ Thống
Tấn Công Từ Chối Dịch Vụ
Patch Management Công Cụ Tấn Công Kiện Toàn Bảo Mật Cho Máy Chủ Web
Trang 11
Sự nổi tiếng của hacker phần lớn là do những cuộc tấn công vào các trang web hay máy chủ web để đánh cắp thông tin thẻ tín dụng, tài khoản ngân hàng hay lấy đi dữ liệu mật
và công bố trên website của mình như Wikileak Bởi vì web server hay máy chủ web là
các thành phần “online 24/7” của các tổ chức và doanh nghiệp nên chúng thường là các mục tiêu chính để các hacker nhắm tới, một khi đã xâm nhập được vào hệ thống máy chủ web các hacker sẽ tiếp tục dò tìm và thâm nhập đến các hệ thống khác trong mạng nội bộ
hay tiến hành deface trang web, một khái niệm chúng ta sẽ tìm hiểu sau đây
Trong vai trò một CEH hay hacker mũ trắng chúng ta cần hiểu rõ những cách thức tấn công mà hacker sử dụng để khai thác thông tin hay các điểm yếu thông dụng của máy chủ web gồm :
- Lỗi cấu hình của phần mềm máy chủ web
- Lỗi bảo mật của hệ điều hành hay của những ứng dụng chạy trên máy chủ web
- Thiếu các bản vá lỗi hay hệ thống không được cập nhật đầy đủ, và việc sử dụng các thông tin mặc nhiên sau khi cài đặt cũng là nguyên nhân làm cho máy chủ web bị tấn công
- Thiếu các chính sách an toàn thông tin và những thủ tục vận hành hợp lý
Thông qua các khe hỡ này hacker sẽ khai thác để chiếm quyền điều khiển hay thâm nhập vào các máy chủ web, từ đây họ có thể leo thang tấn công sang các thành phần quan trọng khác của hệ thống như thâm nhập mạng nội bộ, tấn công vào máy chủ cơ sở dữ liệu hay các dịch vụ mạng quan trọng khác của tổ chức
Cách Tấn Công Thông Dụng Vào Máy Chủ Web
Các tình huống tấn công mà hacker thường thực hiện trên các web server là deface web site, đây là thuật ngữ nói đến hành động hacker đột nhập vào web server và thay đổi trang chủ của website bằng một nội dung khác Ví dụ để lại các lời nhắn mang tính chất chính trị, hay thay đổi hình ảnh nhăm bôi xấu đơn vị chủ quản của website Đối với những hacker thích khoe thành tích thì những thông điệp để lại là thông tin của chính họ trong thế giới mạng Sau đây là những phương pháp mà các hacker có thể dùng để tấn công :
- Tìm cách bắt giữ tài khoản quản trị của web server hay web site thông qua nghe lén hay tấn công man in the middle Một trong những ví dụ điển hình là hacker nghe lén khi quản trị viên bất cẩn sử dụng telnet để điều khiển máy chủ từ xa, hay thậm chí khi web master sử dụng các giao thức an toàn như SSH để truy cập từ xa vẫn có khả năng bị hacker đánh cắp thông tin tài khoản qua hình thức giả mạo
chứng chỉ điện tử (fake certificate)
- Bẽ khóa mật khẩu quản trị bằng các công cụ brute-force
- Tấn công DNS để điều hướng người dùng sang một trang web khác
- Tác động lên dịch vụ FTP hay Email server
Trang 12- Khai thác các bug (lỗi bảo mật) của ứng dụng web hay web server
- Lợi dụng các tài nguyên chia sẽ trên máy chủ web được cấu hình không hợp lý, hay việc gán quyền bị sai như cho phép người dùng bất kì được phép upload và thực thi các chương trình
- Sử dụng các lỗi trong lập trình cơ sở dữ liệu để tiêm các chỉ thị nguy hiểm vào hệ thống mà chúng ta thường nghe đến với thuật ngữ SQL Injection
- Điều hướng người dùng đến các trang web khác thông qua những phương pháp spoofing DHCP, DNS hay đánh cắp cookie nhằm tiến hành tấn công vào phiên làm việc của client và web server (còn được gọi là session hijacking)
IIS Unicode Exploit
IIS Unicode Exploit là một lỗi bảo mật trên các hệ thống máy chủ web chạy trên nền IIS
5 chưa được patch (vá lỗi) Lỗi ảnh hưởng đến các thành phần mở rộng của ISAPI như ASP hay các kịch bản CGI cho phép hacker có khả năng thao tác trên hệ thống thư mục của máy chủ Điểm đặc biệt nguy hiểm là các hệ thống IIS 5 được cài đặt mặc định trên Windows 2000 Server nên rất hay bị hacker khai thác, vì nhiều tổ chức khi triển khai các máy chủ trên nền Windows 2000 Server không hề hay biết rằng dịch vụ IIS được cài kèm theo với những điểm yếu chết người mà hacker có thể tấn công để làm gãy đổ toàn bộ hệ thống Theo thông kê các lỗi bảo mật trên IIS version 5 là những nguyên nhân làm cho các website của nhiều tổ chức tại Việt Nam bị deface
Hình 12.1 - Giao diện một trang web bị deface
Về cơ bản, Unicode sẽ chuyển đổi các kí tự của bất kì ngôn ngữ nào sang định dạng chung có thể sử dụng trên toàn cầu, mang lại sự thuận tiện cho người dùng trong việc phải suy nghĩ lựa chọn một bảng mã nào để tương thích được với đa số người xem Các
Trang 13hacker sẽ tận dụng sự diễn dịch sai do thiếu kiểm soát tính hợp lệ của các dữ liệu đầu vào trên IIS để sao chép, upload hay thậm chí thực thi chương trình trái phép trên máy chủ web Nếu các bạn cần truy cập vào trang web http://www.netpro.etc thì yêu cầu sẽ được
xử lý bằng cách tìm kiếm tập tin index.html hay defaul.html trên thư mục gốc đặt tại
C:\inetpub\wwwroot\index.html , đây là đường dẫn đến thư mục local trên các web
server, đường dẫn này có thể khác nếu như web master tùy biến trong quá trình cài đặt Khi chúng ta truy cập đến các nội dung có tên bao gồm những khoảng trắng thì trình
duyệt sẽ chuyển kí tự khoảng trắng này thành %20, đây là mã Unicode của kí tự khoảng
trắng trong bộ mã ASCII Như vậy thì các hacker cũng sẽ dùng Unicode để diễn dịch các chỉ thị mà chúng muốn web server hiểu và thực thi Ví dụ khi hacker muốn thực hiện
việc hiển thị nội dung của ổ đĩa C:\ trên trình duyệt thì họ cần chạy dòng lệnh cmd.exe trên trình duyệt, đây là một lệnh nội trú trong thư mục /winnt/system32/ của ổ đĩa hệ
thống do đó cần phải chuyển ngược lên các thư mục bên trên với lệnh DIRUP mà chúng
ta hay dùng thông qua cú pháp như “CD / /”
Vậy kẻ tấn công sẽ thử thực hiện dòng lệnh sau trên trình duyệt :
http://www.netpro.etc/scripts/ %255C %255C/winnt/system32/cmd.exe?/c+dir+c:\
Để hiểu câu lệnh trên chúng ta cần xem qua các tùy chọn của lệnh cmd.exe (các gía trị
sau dấu ? được xem là các đối số để thực hiện lệnh và các mã unicode của kí tự ASCII, ở
đây / / sẽ chuyển thành %5C sau đó chuyển đổi các kí tự thêm một lần nữa thì máy chủ
web mới hiểu và thực thi được Dưới đây là một số kí tự ASCII và mã unicode tương ứng :
C %43 Nếu như web server của www.netpro.etc dùng phiên bản IIS 5 chưa được vá lỗi thì trên
trình duyệt web sẽ hiển thị toàn bộ nội dung của ở đĩa C:\ trên máy chủ Tương tự, hacker
có thể sử dụng những lệnh khác để tiến hành khai thác sau hơn, chỉ cần chuyển đổi các lệnh thành những mã unicode hợp lệ
Hình 12.2 – Attacker khai thác lỗi unicode trên web server
Trang 14Mặc dù đây là một lỗi thuộc dạng hết hạn sử dụng, chỉ dùng để minh họa nhưng nhiều web site chạy trên máy chủ Windows 2000 Server vẫn có thể gặp phải Website tại Việt Nam bị ảnh hưởng bởi lỗi này như www.cantho.gov.vn và đã từng bị hacker thâm nhập
Tấn Công Web Server Qua Lỗi Của Hệ Thống
Ngoài các lỗi của máy chủ web thì hacker còn tấn công vào hệ điều hành nếu phát hiện ra các khiếm khuyết bảo mật Trong thời gian 2010 – 2011 có khá nhiều máy chủ web tại Việt Nam được cài đặt trên Windows Server 2003, và tích hợp cả hệ thống phân giải tên miền DNS đã bị hacker tấn công chiếm quyền điều khiển từ xa với những công cụ như Metasploit Framework Các bạn có thể tham khảo một bài hướng dẫn thực hành khi đào tạo về an ninh mạng cho Tổng Cụ Hải Quan vào năm 2012 tại http://youtu.be/oImK2NaTnXI
Tấn Công Từ Chối Dịch Vụ
Trong trường hợp hệ thống được bảo vệ chặt chẽ và hầu như không có điểm yếu thì hacker sẽ tấn công từ chối dịch vụ bằng cách dùng mạng botnet để gởi một số lượng cự lớn các yêu cầu kết nối, dạng tấn công này chúng ta đã biết qua thuật ngữ DDoS Ngoài
ra, khi phần mềm máy chủ web có lỗi cũng có thể bị hacker sử dụng những công cụ tấn
(http://www.youtube.com/watch?v=lYQFF4Ki8_s)
Patch Management
Patch Management là thuật ngữ chỉ tiến trình cập nhật các bản vá lỗi gồm patch (các bản
vá lỗi tổng quát) và hotfix (những xử lý lỗi cho một tình huống khẩn cấp nào đó) của hệ
thống để bít lại các lổ hỗng bảo mật ngăn không cho hacker lợi dụng để xâm nhập trái
phép Việc cập nhật các bản vá hay hotfix cần được thực hiện đầy đủ bao gồm xác định
các phiên bản thích hợp, kịp thời và cần phải kiểm tra trên các máy thử nghiệm nhằm bảo đảm không có những sự cố nào xảy ra khi ứng dụng các bản cập nhật này
Trong một số tình huống các lổ hỗng đã được phát hiện nhưng nhà sản xuất chưa có bản
vá lỗi tương ứng thì chúng ta cần tìm hiểu phương pháp xử lý thủ công như thiết lập các
cơ chế kiểm soát riêng hay tạm tắt các dịch vụ nếu thấy cần thiết Các lỗi dạng này hay
được đề cập bằng thuật ngữ Zero Day (0-Day)
Công Cụ Tấn Công
Trang 15N-Stalker Web Application Security Scanner cho phép chúng ta kiểm tra các
ứng dụng web có khả năng bị khai thác thông qua các điểm yếu như XSS, SQL injection, buffer overflow hay không
Metasploit Framework là một ứng dụng miễn phí được tích hợp sẳn nhiều mã
khai thác và payload nguy hiểm chuyên dùng để tấn công các web server Phiên bản hiện nay của Metasploit là Version 4.2 có thể chạy trên hệ thống Windows hay Linux 32 / 64 bit Ngoài ra, các bạn có thể chạy Metasploit trực tiếp mà không cần cài đặt trên đĩa Live DVD BackTrack 5 R1 (phiên bản mới nhất vào thời điểm hiện tại)
Core Impact và SAINT Vulnerability Scanner là những công cụ khai thác
thương mại chuyên dùng cho mục đích kiểm tra và tấn công các phần mềm máy chủ web
OWASP HTTP Post Tool là công cụ tấn công và kiểm định bảo mật cho máy
chủ web được phát triển bởi OWASP, có thể tấn công từ chối dịch vụ các máy chủ web sử dụng Apache bị lỗi
Phương Pháp Kiện Toàn Bảo Mật Cho Máy Chủ Web
Để phòng chống bị tấn công các administrator của máy chủ web hay web master cần tiến
hành thao tác kiện toàn bảo mật thường được gọi là tiến trình hardening, sau đây là một
số bước mà các CEH cần thực hiện để tăng độ vững chắc cho máy chủ :
- Thay đổi tên tài khoản quản trị, không dùng tên mặc dịnh là administrator và dùng các mật khẩu mạnh, được thay đổi thường xuyên
- Tắt các trang web và trang FTP mặc định
- Gỡ bỏ các ứng dụng không cần thiết trên máy chủ như dịch vụ WebDAV Cần
lưu ý WebDAV là một trong những tác nhân chính làm cho các website ở Việt Nam bị hacker tấn công Các lổ hỗng của WebDAV xuất hiện trong IIS phiên bản
6 chưa được vá
- Cấu hình máy chủ web ngăn không cho duyệt thư mục
- Đặt các thông báo nhằm cảnh báo hacker không được thâm nhập trái phép và phá hoại với những hình phạt tương ứng mà pháp luật quy định
- Áp dụng các bản vá lỗi và cập nhật mới nhất cho hệ điều hành và cho cả các ứng dụng chạy trên hệ điều hành này
Trang 16- Tiến hành kiểm ta các khu vực tiếp nhận dữ liệu đầu vào nhằm loại bỏ khả năng
bị khai thác thông qua hình thức chèn mã độc hay các chỉ thị nguy hiểm
- Tắt chức năng quản trị từ xa nếu không thật sự cần thiết
- Bật chức năng auditing và logging để ghi lại các chứng cứ và dấu vế mà hacker để lại
- Sử dụng firewall ở giữa web server và internet để kiểm tra chặt chẽ các yêu cầu truy cập và luồng dữ liệu Chỉ mở những cổng cần thiết như 80, 443, 22 …
- Thay thế phương pháp gởi dữ liệu với hàm GET bằng hàm POST để không hiện thị thông tin khi truyền từ client đến server
Tổng Kết
Đề phòng chống và bảo vệ cho các máy chủ web cũng tương tự như các hệ thống máy chủ khác đó là chúng ta cần tiền hành hardening các máy tính dùng để cài phần mềm web server, thông thường các máy được áp dụng chế độ bảo mật cao nhất như vậy được gọi là Bastion Host Thường xuyên kiểm tra lỗi bảo mật của hệ thống và các ứng dụng với những chương trình quét lỗi mạnh mẽ như Retina, GFI NSS hay NESSUS Lọc và thay thế các kí tự đặc biệt mà hacker hay dùng để tấn công như phòng tránh cross site scripting ta có thể thay thế các kí tự “<” và “>” với “<” và “>”
Trang 17Module 13 Tấn Công Trang Web
Những Nội Dung Chính Trong Chương Này
GUI Web Hacking Tấn Công Dựa Trên URL Những Điểm Yếu Thông Dụng Của Ứng Dụng Web
Các Công Cụ Tấn Công Ứng Dụng Web
Google Hacking Phương Pháp Tăng Cường An Ninh Cho Trang Web Các Kỹ Thuật Bẻ Khóa Mật Khẩu Của Trang Web
Trang 18Web application hay ứng dụng web là các chương trình chạy trên các web server như http://vncert.gov.vn/ và được phân loại theo các chức năng của ứng dụng như Forum là trang web về diễn đàn, chia sẽ thông tin, CMS / Blog là những web site của cấp nội dung, thông tin hay các trang về mạng xã hội, những ứng dụng quản lý công việc, quản lý khách hàng hay kinh doanh trực tuyến
Hacker đặc biệt quan tâm đến các trang web của những tổ chức lớn hay các site của cơ quan nhà nước như những tên miền gov.vn ở Việt Nam Ngoài ra, các hacker ngày nay bên cạnh ý thích trình diễn, khoe khoang còn hành động vì mục tiêu kinh tế nên họ hay đưa các trang thương mại điện tử vào danh sách ưu tiên của họ, vì ở đó có những thông tin quan trọng như thẻ tìn dụng của khách hàng, các tài khoản ngân hàng trực tuyến … Sau khi tấn công, các hacker hay khoe chiến tích trên trang zone-h tại địa chỉ http://www.zone-h.org/ , đây được xem như là một bảng phong thần của các trang web như hình minh họa sau là danh sách các trang web có tên miền vn đã bị tấn công và có khả năng chưa được vá hay nhận biết
Hình 13.1 – Các trang web Việt Nam bị tấn công và công bố trên zone-h.org
Đa số các ứng dụng web ngày nay hoạt động theo mô hình client / server với các trình duyệt web như Firefox, IE, Chrome là web client còn những máy chủ web là phía server như Apache, IIS, TomCat Những công nghệ phổ biến để xây dựng các web site hiện nay
là ASP, PHP, JavaScript …Mỗi kỹ thuật có những điểm mạnh và yếu riêng cho nên khi tấn công hacker điều phải nghiên cứu cẩn thận để xác định chính xác các hệ điều hành, máy chủ web, công nghệ triển khai web site để đưa ra phương án tấn công hiệu quả Các hình thức tấn công ứng dụng web thông dụng mà chúng ta cần biết đó là :
Trang 19GUI Web Hacking
Là việc thao tác trực tiếp trên giao diện web application hay sử dụng các công cụ audit website như Havji, WebAcunetix … mà trong các bài học sau chúng ta sẽ trình bày Các bạn có thể xem hình ảnh minh họa một khái thác để tìm kiếm lỗi SQL Injection trên trang web mẫu của FoundStone như hình sau …
Hình 13.2 – Gui Web Hacking
Trên hình minh họa các attacker nhập trực tiếp giá trị ‘OR 1=1— nhằm vượt qua cơ chế kiểm soát của ứng dụng nếu việc kiểm tra tính hợp lệ của các giá trị INPUT không được thực hiện đây đủ Đây là một trong những lỗi thông dụng nhất mà các website thường mắc phải và được attacker rất quan tâm
Tấn Công Dựa Trên URL
Các HTTP method là những hành động được tiến hành tại ứng dụng web và web client are the type of action performed on the target resource Trong HTTP RFC có định nghĩa các hành động này và ứng dụng WEBDAV trên nên máy chủ IIS của Windows có bổ sung một số phương pháp khác nhưng nhìn chung các ứng dụng web sử dụng 2 hàm sau : GET và POST GET dùng để yêu cầu thông tin, còn POST để gởi thông tin và cả POST
Trang 20và GET đề có thể gởi thông tin đến server với một điểm khác biệt quan trọng giữa chúng
là GET để data trong URL trong khi đó POST đặt dữ liệu (data) trong phần body (thân) của request và không hiển thị trong URL.: Vì vậy POST được dùng để submit dữ liệu đến web application như khi chúng ta cung cấp thông tin tên, địa chỉ khi đăng kí mua hàng trực tuyến là đang sử dụng hàm POST Tuy vậy, việc không hiểm thị thông tin của POST không hẳn là bảo vệ dữ liệu tốt hơn GET, đây cũng là một trong những điểm thường gây nhầm lẫn đối với người dùng, vì với các hacker thì việc tìm kiếm thông tin được che dấu bởi POST không phải là vấn đế qua khó khăn
Hình 13.3 – Minh họa tấn công dựa trên URL
HTTP header thường được dùng để lưu trữ các thông tin mở rộng như các giáo thức vận chuyển hay những yếu tố bảo mật liên quan gồm có :
• Authorization xác định có hay không những cơ chế bảo mật kèm thoe yêu cầu như là Basic authentication, Certificate …
• Cache-control xác định có lưu cache các yêu cầu này trên một máy chủ trung gian hay không
• Referer Liệt kê source URI
• Cookies được dùng đê lưu trữ thẻ bài (token) trong quá trình xác thực dựa trên phiên làm việc của client
Trang 21
Sau đây là một ví dụ về các hàm được sử dụng bởi công cụ netcat kết nối đến máy chủ www.test.com server trên TCP port 80 (port chuẩn cho giao thức HTTP;
HTTPS là TCP 443), và yêu cầu của kết nối này là lấy về tập tin /test.html Đường dẫn đầy đủ của yêu cầu này là http://www.test.foo/test.html
www.test.foo [10.124.72.30] 80 (http) open
GET /test.html HTTP/1.0
HTTP/1.1 200 OK
Date: Mon, 04 Feb 2002 01:33:20 GMT
Server: Apache/1.3.22 (Unix)
<HTML><HEAD><TITLE>TEST.FOO</TITLE>
Tuy nhiên dù cho hacker sử dụng những phương pháp tân công nào thì như đã trình bày mục tiêu chính của họ vẫn là những thông tin có trong các trang web này, có thể đó là những công văn hay tài liệu quan trọng, hoặc là thông tin về khách hàng của trang web như danh sách email, số thẻ tín dụng Và để đạt được mục tiêu hacker cần tiến hành quy trình tấn công theo đúng trình tự như sau :
- Scanning : Quét lỗi trang web, tìm kiếm các thông tin hữu ích về máy chủ
- Information Gathering : Tập trung các thông tin chính,
- Test : Thử nghiệm một số phương án
- Planning Attack : Hoạch định phương án tấn công như dùng proxy nào, sư dụng
công cụ gì để tấn công
- Luanching Attack : Khởi động cuộc tấn công
Trang 22Hình 13.4 - Audit trang web với W3AF
Lưu ý video minh họa này chỉ dùng cho mục đích đào tạo, nghiên cứu Không được ứng dụng thực tế Xem demo tại đây : http://www.youtube.com/watch?v=ugIxUtbFH-o&feature=youtu.be
Những Điểm Yếu Thông Dụng Của Ứng Dụng Web
Có nhiều mối nguy hiểm mà các trang web có thể mắc phải, những mối đe dọa hàng đầu
mà chúng ta thường nghe đến là SQL injection, XSS, Authentication Hijacking Trong vai trò CEH chúng ta cần nắm ý nghĩa của các lỗi này và một số công cụ khai thác thịnh hành :
- Cross-site scripting : Lỗi này cho phép hacker thực thi các đoạn mã nguy hiểm
thông qua các khung tiếp nhận dữ liệu của trang web như ô tìm kiếm
- SQL injection : Một lỗi có tỉ lệ bị hacker tận dụng rất cao, cho phép hacker chạy
các câu lệnh SQL từ trình duyệt và xem nội dung của các bảng, cột chứa thông tin quan trọng Các bạn có thể tham khảo video minh họa kèm theo ở phần trên
- Buffer Overflow : Một số lượng lớn các dữ liệu hởi đến ứng dụng web thông qua
các biểu mẫu gây nên tràn bộ đệm
- Cookie poisoning và Authentication hijacking : Hacker đánh cắp cookie của
một phiên làm việc giữa web client và web server, sau đó truy cập vào khu vực
Trang 23riêng tư của người sử dụng, demo http://www.youtube.com/watch?v=zLdB3UgDi_I
- Directory travelsal / Unicode : Hacker truy vấn hệ thống tập tin và thư mục hệ
thống thông qua trình duyệt web hay windows explorer
Sau đây là danh sách các lỗi bảo mật của web application mà hacker thường tận dụng để tấn công do mà tài liệu CEH công bố, trong đó dẫn đầu là những lỗi liên quan đến XSS
(Cross-Site Scripting), tiếp theo sau là SQL Injection, Parameter Tampering, Cookie Poisoning …
Hình 13.4 – Các lỗi ứng dụng web hay bị tấn công
Ngoài danh sách trên, các bạn có thể tham khảo thêm các nguồn thông tin về 10 lỗi bảo mật thông dụng do OWASP thống kê tại https://www.owasp.org/index.php/Vietnam , trong danh sách đang tin cậy này chúng ta nhận thấy có đôi chút khác biệt về tỉ lệ giữa những lỗi hay bị ảnh hưởng như xếp đầu bảng là SQL Injection (được gọi là lỗi nhúng mã) nhưng nhìn chung thì các lỗi liên quan đến SQl injection, XSS, hư hỏng cơ chế chứng thực và quản lý phiên làm việc là những mối quan tâm mà các bạn nên đặt lên hàng đầu
Trang 24Hình 13.5 – Danh sách 10 lỗi ứng dụng web hàng đầu
Các Công Cụ Tấn Công Ứng Dụng Web
Acunetix Web Security Scanner Ứng dụng hàng đầu phải kể đến đó là Web
Acunetix Scanner, một chương trình thương mại dùng cho việc tìm kiếm các lỗi bảo mật của web site như XSS, SQL injection, Directory Travesal …
Havji Là chương trình tự động khai thác lỗi SQl injection mà chúng tôi có minh
họa qua video hướng dẫn, đây là công cụ miễn phí được đa số các hacker sử dụng hiện nay để tấn công và xem các thông tin trong cơ sở dữ liệu
Burpsuite Gồm nhiều công cụ mạnh mẽ từ quét lỗi trang web cho đến các chức
năng proxy, chặn dữ liệu trong quá trình truyền sau đó thay đổi và gởi về máy chủ
BlackWidow Có thể scan và tạo lập sơ đồ của trang web
Teleport Pro Có khả năng toàn bộ nội dung của một trang web để xem offline
Google Hacking
Google hacking là kỹ năng tìm kiếm nâng cao với công cụ tìm kiếm của Google nhằm xác định các thông tin nhạy cảm cửa mục tiêu Nếu không được cấu hình chặt chẽ thì các thông tin như mật khẩu đăng nhập, các tài liệu riêng tư có thể bị hacker đánh cắp chỉ với ứng dụng tìm kiếm Google Có nhiều tài liệu về chủ đề này được đề cập tại trang web
Trang 25http://johny.ihackstuff.com hay chuyên trang http://www.exploit-db.com/google-dorks/cung cấp những cụm từ tìm kiếm nhằm xác định các điểm nhạy cảm của trang web
Hình 13.6 - Trang web cung cấp nhựng cụm từ tìm kiếm liên dùng cho việc khai thác
Những Phương Pháp Tăng Cường An Ninh Cho Web
Trước đây, hãng Microsoft đã tổ chức một cuộc thi cho phép các hacker tấn công vào hệ thống ứng dụng và máy chủ web được xây dựng trên nền tảng của hãng như cơ sở dữ liệu SQL Server, hệ điều hành Windows, nền tảng lập trình ASP Cuộc thì này có tên là Open hack và chỉ sau một thời gian ngắn phát động cuộc thi ban tổ chức đã ghi nhận có đến hơn 40.000 đợt tấn công, tuy nhiên các hacker không cách nào xâm nhập được vào hệ thống máy chủ hay gây tổn hại đến các trang web mục tiêu mà ban tổ chức đã dựng lên Vậy họ đã sử dụng quy trình kiện toàn bảo mật cho ứng dụng web như thế nào mà đem đến sự vững chắc như vậy ? Tất cả những điều này đã được các kỹ sư của Microsoft tiết
lộ trong tài liệu hướng dẫn tăng cường an ninh cho web application có tên gọi là
“Improving Web Application Security: Threats and Countermeasures” tại địa chỉ : http://msdn.microsoft.com/en-us/library/ff649874.aspx , đây cũng là tài liệu mà tôi đã dùng để hướng dẫn trong chương trình bảo mật ứng dụng web cho Tập đoàn EVN tại Đồ Sơn, Hải Phòng và cuối năm 2011
Sau đây là một số hướng dẫn để tăng cường an ninh cho ứng dụng web mà chúng ta cần quan tâm :
- Cross-site scripting : Để phòng trách dạng tấn công này ta cần kiểm tra tính hợp
lệ của các dữ liệu đầu vào, các cookie, những yêu câu truy vấn hay các thông tin
ẩn kỹ càng Dùng công cụ quét lỗi chuyên dụng cho trang web như Web Acunetix Scanner để phát hiện xem có những lỗi XSS trên website
- SQL injection / Command injection : Đóng vai trò hacker để tiền hành quét lỗi
SQL injection tren trang web với công cụ như W3AF (Web Application Attack and Audit Framework, download tại http://w3af.sourceforge.net/) Và kiểm tra các biến người dùng chặt chẽ, áp dụng các cơ chế lọc kí tự đặc biệt qua tập tin htaccess hay các module chuyên dùng cho việc phòng chống SQL injection
Trang 26- Cookie poisoning : Không lưu trữ mật khẩu trong cookie, thiết lập thời gian tồn tại và chơ chế xác thực thích hợp cho các cookie
- Buffer overflow : Kiểm tra kích thước của các biên do người dùng cung cấp để
chương trình không bị vượt quá khả năng kiểm soát, có xử lý các tình huống ngoại lệ đầy đủ ngăn không cho hacker lợi dụng chèn những chỉ thị độc
- Authentication hijacking : Sử dụng SSL để mã hóa dữ liệu truyền
- Directory travesal / Unicode : Cần cài đặt các bản vá lỗi và cập nhật đầy đủ, thiết
lập quyền truy cập thư mục và tập tin chặt chẽ theo nguyên tắt least priveledge (chỉ cấp quyền vừa đủ cho người dùng dựa trên nhu cầu)
Các Kỹ Thuật Bẻ Khóa Mật Khẩu Của Trang Web
Là một CEH chúng ta cần nắm rõ một số kỹ thuật ma các hacker thường dùng để bẻ khóa mật khẩu của ứng dụng web Bao gồm các phương pháp xác thực mà ứng dụng web sử dụng, thế nào là password cracker cũng như xác định và phân loại các kỹ thuật password-cracking để có những biện pháp phòng chống thích hợp Chúng ta sẽ đề cập đến những khái niệm trong phần tiếp sau đây
Các Dạng Xác Thực Của Web Server Và Web Application
Web server và web application hỗ trợ nhiều phương pháp xác thực khác nhau Phổ biến nhất là xác thực dựa trên HTTP với hai dạng HTTP authentication là : basic và digest Trong mô hình xác thực cơ bản (basic), quá trình xác thực HTTP sẽ gởi các thông tin tài khoản và mật khẩu dưới dạng cleartext (không mã hóa) trong khi đó với digest authention thì mô hình xác thực của HTTP sẽ tiến hành băm thông tin tài khoản, ngoài ra giữa client
và server cần tiến hành một bước thử thách gọi là chalenge-response nhằm nâng cao tính
an toàn cho quá trình giao dịch
Rõ ràng, khi thông tin được gởi dưới dạng cleartext thì tính an toàn rất thấp về hacker sẽ
dễ dàng đánh cắp mật khẩu cùng tên đăng nhập bằng các công cụ sniffer
Ngoài hai phương pháp trên thì trong mô hình xác thực của máy chủ và ứng dụng web còn hỗ trợ NTML (mô hình xác thực trên nền tảng của hệ điều hành Windows), sử dụng chứng chỉ điện tử như khi chúng ta dùng giao thức https:// hay sử dụng thẻ bài và cao cấp nhất là cơ chế xác thực sinh trắc học dựa trên các đặc điểm nhận dạng của người dùng như vân tay, giọng nói, võng mạc …
Trong các cơ chế xác thực trên thì NTML sử dụng Internet Explorer và IIS webserver , vì
cơ chế này hoạt động trên nền tảng của Windows cho nên rất thích hợp cho các quá trình kiểm tra trong các hệ thống nội bộ hay mạng intranet dùng hệ điều hành Windows Đối với các hệ thống máy chủ như Windows Server 2000/2003/2008 thì có thể tận dụng
Trang 27Keberos để nâng cao tính an toàn cho quá trình xác thực của ứng dụng hay máy chủ web Trong khi đó, xác thực dựa trên chứng chỉ điện tử hay certificate dùng các x.509 certificate để triển khai cặp khóa public và private key Ở đây chúng ta không đi sâu vào công nghệ này nhưng các bạn cần lưu ý đây là một trong công nghệ thịnh hành trong việc xác thực người dùng với máy chủ hay ứng dụng web
Còn đối với xác thực bằng token như SecureID mà chúng ta thường thấy triển khai tạo các ngân hàng trong quá trình chuyển khoản trực tuyến , mỗi khi cần đăng nhập hay thực hiện giao dịch chúng ta sẽ nhận một mã số được gởi đến hay phát sinh ngẫu nhiên trên một thiết bị phần cứng, và khi nhập chính xác thông tin này chúng ta mới được đăng nhập hay xử lý giao dịch Ví dụ như thiết bị SecureID của ngân hàng TechComBank
Password Cracker Là Gì ?
Password cracker là những chương trình được thiết kế để bẻ khóa mật khẩu hay vô hiệu hóa cơ chế kiểm tra của ứng dụng Các công cụ này thường sử dụng các kỹ thuật dò mật khẩu dựa trên từ điển hay dùng kỹ thuật quét cạn để phá mật khẫu
Trong quà trinh bẻ khóa mật khẩu thông qua từ điển cracker (ta dùng thuật ngữ này thay cho hacker) sẽ tạo một danh sách các mật khẩu tiềm năng trong dữ liệu của từ điển, thông qua các chương trình tạo từ điển mật khẩu hay tải những từ điển được tạo sẳn từ internet Sau đó các mật khẩu này sẽ được mã hóa hay băn với các thuật toán hash thường được dùng trong quá trình băm các mật khẩu như MD5 Và để bẻ khóa mật khẩu của ứng dụng thì các mật khẩu đã được xử lý trong từ điển được so sánh với mật khẩu thực sự cho đến khi xảy ra sự trùng khớp (máy chủ hay ứng dụng xác thực thành công) thì quá trình bẻ khóa hoàn tất Các mật khẩu bị bẻ khóa thường được lấy trong tập tin SAM (Security Account Manager) hay tập tin /etc/passwd trên các máy chủ web dùng hệ điều hành linux (khi hacker tấn công vào các trang web họ sẽ upload các trojan như c99, rv57 để tải về tập tin này)
Nhưng phương pháp dò từ điển này khó thành công với những mật khẩu mạnh, vì không thể tập hợp đủ các dữ liệu cần thiết cũng như thời gian tiến hành không thực tế Trong những trường hợp đó phương pháp dò mật khẩu theo kỹ thuật quét cạn hay brute-force sẽ được áp dụng Brute-force sẽ thử tất cả các tình huống kết hợp của những kí tự để tạo ra mật khẩu Lấy ví dụ đơn giản nếu như mật khẩu chỉ được tạo ra từ 3 kí tự 1,2,3 thi chỉ có tối đa 8 kết quả vì vậy công cụ chỉ cần so sánh tối đa 8 lần là tìm ra mật khẩu gốc Tuy nhiên, trong thực tế các mật khẩu sẽ phức tạp hơn nhiều cho nên quá trình bẻ khóa diễn ra lâu hay nhanh phụ thuộc vào độ mạnh của thuật toán và cấu hình phần cứng của máy chủ dùng để bẻ khóa Chương trình thông dụng trong lĩnh vực này thường được đề cập trong CEH chính là L0phtCrack, Join the ripper, Ophcrack …Những ứng dụng mạnh mẽ thường kết hợp cả hai phương pháp dò mật khẩu trên và kỹ thuật này gọi là Hybrid
Tổng Kết
Trang 28Trong chương này chúng ta đã thảo luận về những mối đe dọa hàng đầu đống với sự an toàn của ứng dụng web qua thống kê của tài liệu CEH hay trong danh sách 10 mối nguy hiểm hàng đầu của OWASP Với những mối đe dọa hay dạng tấn công nguy hiểm cần có những cách thức khắc phục riêng, nhưng trước tiên chúng ta cần phải tiến hành hardening cho các hệ thống máy chủ để kiện toàn bảo mật ứng dụng web
Về các kỹ thuật bẽ khóa mật khẩu các bạn cần phân biệt hai tình huống chính là bẻ khóa dựa trên từ điển khác với bẻ khóa quét cạn như thế nào Và để phòng chống bị bẻ khóa mật khẩu thì các quản trị viên cần áp dụng các chính sách mật khẩu mạnh với độ dài mật khẩu ít nhất là 8 kí tự, có sự kết hợp giữa chữ hoa, chữ thường, số kèm các kí tự đặc biệt Ngoài ra, phải bật các chế độ audit, ghi nhật kí thích hợp để có thể dò tìm những tình huống bị tấn công Đặc biệt, hãy sao lưu cẩn thận để phòng khi có rũi ro xảy ra thì vẫn có thể phục hồi dữ liệu, đưa hệ thống vào hoạt động nhanh chóng
Trang 29Module 14 SQL Injection
Các Chủ Đề Chính Trong Chương Này
Tấn Công SQl Injection Là Gì Các Lỗi SQL Thường Gặp Một Số Dạng Tấn Công SQL Injection Thông Dụng
Phòng Chống Tấn Công SQL Injection
Trang 30Giới Thiệu Về SQL Injection
Đa số ứng dụng web ngày này đều quản lý và đáp ứng các yêu cầu truy xuất dữ liệu thông qua ngôn ngữ truy vấn cấu trúc SQL Các hệ quản trị cơ sở dữ liệu thông dụng như Oracle, MS SQL hay MySQL đều có chung một đặc điểm này, chính vì vậy những dạng tấn công liên quan đến SQL thường được xếp hàng đầu trong danh sách các lỗ hổng nguy hiểm nhất, và dạng tấn công vào những lỗi này gọi là SQL injection
Vào tháng 12 năm 2010 một đợt tấn công SQl injection đã lấy đi hàng trăm ngàn thông
tin khách hàng, hoặc tin về hacker Albert Gonzalez được cho là đã lấy cắp 130 triệu
thông tin thẻ tín dụng thông qua tấn công SQL injection vào các website và cài đặt công
cụ sniffer để đánh cắp dữ liệu, đây được xem là một đợt trộm cắp thông tin người dùng được lớn nhất trong lịch sử Hoa Kỳ được đăng trên InformationWeek trong Hình 14.1
Hình 14.1 – Thông tin các thẻ tín dụng bị đánh cắp
Chúng ta thấy, các tấn công dạng này của hacker thường đánh vào các trang web chứa thông tin tài khoản quan trọng của người dùng trên các trang web thương mại điện tử, kết quả thu được có giá trị kinh tế cao, và khả năng thành công lớn, dễ tiến hành là những đặc điểm khiến cho SQL injection được xếp hàng số 1 trong danh sách những lỗi bị ảnh hưởng nhiều nhất trong năm 2010 như Hình 14.2
Trang 31Hình 14.2 – Danh sách các lỗi trang web bị tấn công nhiều nhất
Vậy SQL injection là gì và các hacker thực hiện chúng như thế nào mà nguy hiểm đến vậy, các bạn hãy xem phần mô tả tương đối đầy đủ về dạng tấn công này qua trang wikipedia.org như sau :
“SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp, Sql injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,… trên cơ sỡ dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xãy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase
Các Lỗi Thường Gặp
Không kiểm tra ký tự thoát truy vấn
Đây là dạng lỗi SQL injection xảy ra khi thiếu đoạn mã kiểm tra dữ liệu đầu vào trong câu truy vấn SQL Kết quả là người dùng cuối có thể thực hiện một số truy vấn không mong muốn đối với cơ sở dữ liệu của ứng dụng Dòng mã sau sẽ minh họa lỗi này:
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
Câu lệnh này được thiết kế để trả về các bản ghi tên người dùng cụ thể từ bảng những người dùng Tuy nhiên, nếu biến "userName" được nhập chính xác theo một cách nào đó bởi người dùng ác ý, nó có thể trở thành một câu truy vấn SQL với mục đích khác hẳn so
với mong muốn của tác giả đoạn mã trên Ví dụ, ta nhập vào giá trị của biến userName
như sau:
Trang 32a' or 't'='t
Khiến câu truy vấn có thể được hiểu như sau:
SELECT * FROM users WHERE name = 'a' OR 't'='t';
Nếu đoạn mã trên được sử dụng trong một thủ tục xác thực thì ví dụ trên có thể được sử dụng để bắt buộc lựa chọn một tên người dùng hợp lệ bởi 't'='t' luôn đúng Trong khi hầu hết các SQL server cho phép thực hiện nhiều truy vấn cùng lúc chỉ với một lần gọi, tuy nhiên một số SQL API như mysql_query của php lại không cho phép điều đó vì lý do bảo mật Điều này chỉ ngăn cản tin tặc tấn công bằng cách sử dụng các câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi các từ trong cú pháp truy vấn Các giá trị của biến
"userName" trong câu truy vấn dưới đây sẽ gây ra việc xoá những người dùng từ bảng người dùng cũng tương tự như việc xóa tất cả các dữ liệu được từ bảng dữ liệu (về bản chất là tiết lộ các thông tin của mọi người dùng), ví dụ này minh họa bằng một API cho phéo thực hiện nhiều truy vấn cùng lúc:
a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't
Khiến câu truy vấn có thể được hiểu như sau:
SELECT * FROM users WHERE name = 'a' OR 't'='t';
Nếu đoạn mã trên được sử dụng trong một thủ tục xác thực thì ví dụ trên có thể được sử dụng để bắt buộc lựa chọn một tên người dùng hợp lệ bởi 't'='t' luôn đúng Trong khi hầu hết các SQL server cho phép thực hiện nhiều truy vấn cùng lúc chỉ với một lần gọi, tuy nhiên một số SQL API như mysql_query của php lại không cho phép điều đó vì lý do bảo mật Điều này chỉ ngăn cản tin tặc tấn công bằng cách sử dụng các câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi các từ trong cú pháp truy vấn Các giá trị của biến
"userName" trong câu truy vấn dưới đây sẽ gây ra việc xoá những người dùng từ bảng người dùng cũng tương tự như việc xóa tất cả các dữ liệu được từ bảng dữ liệu (về bản chất là tiết lộ các thông tin của mọi người dùng), ví dụ này minh họa bằng một API cho phéo thực hiện nhiều truy vấn cùng lúc:
a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't
Điều này đưa tới cú pháp cuối cùng của câu truy vấn trên như sau:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE 't' = 't';
Xử lý không đúng kiểu
Lỗi SQL injection dạng này thường xảy ra do lập trình viên hay người dùng định nghĩa đầu vào dữ liệu không rõ ràng hoặc thiếu bước kiểm tra và lọc kiểu dữ liệu đầu vào Điều
Trang 33này có thể xảy ra khi một trường số được sử dụng trong truy vấn SQL nhưng lập trình viên lại thiếu bước kiểm tra dữ liệu đầu vào để xác minh kiểu của dữ liệu mà người dùng nhập vào có phải là số hay không Ví dụ như sau:
statement := "SELECT * FROM data WHERE id = " + a_variable + ";"
Ta có thể nhận thấy một cách rõ ràng ý định của tác giả đoạn mã trên là nhập vào một số tương ứng với trường id - trường số Tuy nhiên, người dùng cuối, thay vì nhập vào một
số, họ có thể nhập vào một chuỗi ký tự, và do vậy có thể trở thành một câu truy vấn SQL hoàn chỉnh mới mà bỏ qua ký tự thoát Ví dụ, ta thiết lập giá trị của biến a_variable là:
1;DROP TABLE users
khi đó, nó sẽ thực hiện thao tác xóa người dùng có id tương ứng khỏi cơ sở dữ liệu, vì câu truy vấn hoàn chỉnh đã được hiểu là:
SELECT * FROM DATA WHERE id=1;DROP TABLE users;
Blind SQL injection
SQL injection dạng này là dạng lỗi tồn tại ngay trong ứng dụng web nhưng hậu quả của chúng lại không hiển thị trực quan cho những kẻ tấn công Nó có thể gây ra sự sai khác khi hiển thị nội dung của một trang chứa lỗi bảo mật này, hậu quả của sự tấn công SQL injection dạng này khiến cho lập trình viên hay người dùng phải mất rất nhiều thời gian
để phục hồi chính xác từng bit dữ liệu Những kẻ tấn công còn có thể sử dụng một số công cụ để dò tìm lỗi dạng này và tấn công với những thông tin đã được thiết lập sẵn
Một Số Dạng Tấn Công SQL Injection Thông Dụng
Có bốn dạng tấn công thường gặp bao gồm: vượt qua kiểm tra lúc đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures
Dạng tấn công vượt qua kiểm tra lúc đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web Thông thường
để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp
Trang 34Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải
có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công Ví dụ, trong các trang tìm kiếm Các trang này cho phép người dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:
Set objRS = Nothing %>
Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập vào trường tên tác giả bằng chuỗi giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*)
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa Giả sử đoạn mã nhập vào là:
' DROP TABLE T_AUTHORS
Câu truy vấn sẽ thực hiện việc xóa bảng
Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:
INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three')
Nếu đoạn mã xây dựng câu lệnh SQL có dạng :
<%
Trang 35strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _ & strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
…
Set objRS = Nothing %>
Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như:
' + (SELECT TOP 1 FieldName FROM TableName) + '
Lúc này câu truy vấn sẽ là :
INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')
Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là:
SELECT TOP 1 FieldName FROM TableName
Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa' Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmdd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe
2 Tiếp theo, kiểm tra máy chủ SQL bằng các truy vấn dùng cặp dấu nháy đơn (‘’) nếu máy chủ đáp ứng bằng các thông điệp như use ‘a’=’a’ hay tương tự như vậy thì các hacker có thể đáon được máy chủ có khả năng bị tấn công theo dạng SQL injection Ngoài ra, các dữ liệu thường dùng cho quá trình kiểm tra lỗi khác như ‘
or 1=1– hay ” or 1=1–
Trang 36
3 Khi phát hiện thấy máy chủ hay trang web bị lỗi hacker sẽ dùng các lệnh SELECT để lấy dữ liệu từ máy chủ hay lệnh INSERT đển chèn thông tin vào cơ
sở dữ liệu
Hình 14.3 – Attacker khai thác lỗi SQL injection
Các bước truy vân dữ liệu và khai thác trên thường được tự động hóa với các công cụ tấn công chuyên dùng cho SQL injection như Havji, SQL Ninja Còn quá trình kiểm tra thì sử dụng Web Acunetix Scanner, W3AF …Sau đây là danh sách các công cụ chuên dùng để tấn công SQL injection hiện nay :
Hình 14.4 – Các công cụ tấn công SQL injection
Trang 37Phòng Chống Tấn Công SQL Injection
Để phòng chống tấn công SQL Injection trước hết chúng ta cần gán quyền thích hợp cho người dùng khi kết nối đến cơ sở dữ liệu và áp dụng mật khẩu mạnh cho tài khoản SA hay tài khoản quản trị Các hacker thường chẩn đoán lỗi dựa trên các thông báo trả về, do đó việc hạn chế các thông báo này cũng giúp tăng cường an ninh cho website hay máy chủ web và giảm thiểu rũi ro bị tấn công SQL injection
Ngoài ra, các kí tự mà hacker nhập vào để gởi đến máy chủ thường có các kí tự đặc biệt như dấu nháy đơn (‘ ’) nên các bạn cần kiểm tra chặt chẽ các dữ liệu nhập vào của người dùng trong mã nguồn, từ chối các truy vấn khả nghi hay cài đặt các module, plug-in hỗ trợ phòng chống SQL Injection Ví dụ như khi dùng mã nguồn
mở Joomla để xây dựng trang web thì nên cài đặt plug-in Anti SQL, LFI cho trang web như minh hoạt tại đây : http://www.youtube.com/watch?v=LdXrHurs-_o hay thường xuyên kiểm tra hệ thống bằng các chương trình quét lỗi website trực tuyến như minh họa tại http://www.youtube.com/watch?v=_l7P1_uZexc
Hình 14.5 - Hình minh họa sau khi cài đặt plug-in anti sqli & lfi
Việc dò tìm mã nguồn xem có bị SQL Injection hay không ta có thể dùng Microsoft Source Code Analyzer hay Microsft URL Scan
Trang 38Hình 14.6 - Kết quả kiểm tra một tập tin với Microsoft Source Code Analyzer
Bên cạnh đó, các máy chủ cơ sở dữ liệu cần được cập nhật và vá lỗi đầy đủ, nên đặt sau hệ thống tường lữa để tránh sự tương tác trực tiếp, điều này sẽ giúp tăng cường bảo mật.Trên hệ thống cần có thêm các dịch vụ hay thiết bị dò tìm xâm phạm trai phép (IDS/IPS) như SNORT, Cisco IDS …
Tổng Kết
Qua chương này chúng ta đã biết được lỗi bảo mật SQl injection là gì và những công
cụ mà hacker thường sử dụng để tấn công vào các trang web dính lỗi trên Để phòng chống bị tấn công các bạn cần chú ý kiểm tra các biến hay dữ liệu đầu vào, đặc biệt là những form nhập liệu trên trang web, lọc các kí tự đặc biệt mà hacker có thể dùng để kiểm tra hay gởi lệnh truy vấn nguy hiểm đến cơ sở dữ liệu Trong chương tiếp theo chúng ta sẽ tìm hiểu về “Tấn công mạng không dây”
Trang 39Module 15 Tấn Công Trên Mạng Không Dây
Những Nội Dung Chính Trong Chương Này
Giới Thiệu Về Mạng Không Dây Những Rũi Ro Khi Sử Dụng Mạng Wifi WEP, WPA Và Những Kỹ Thuật Bẻ Khóa
WEP - Wired Equivalent Privacy WPA - Wifi Protected Access Các Dạng Tấn Công Trên Mạng Không Dây
Trang 40Giới Thiệu Về Mạng Không Dây
Wireless Network hay mạng không dây mà chúng ta cũng thường thấy thông qua thuật ngữ Wifi đã đem đến một cuộc cách mạng thực sự trong vấn đề kết nối và truyền thông Nhờ có mạng không dây mà ngày nay chúng ta có thể vượt qua những trở ngại thường gặp phải trong mạng sử dụng cáp truyền thống và có khả năng online từ bất cứ nơi đâu Chính vì vậy mà trong những công ty hay tổ chức thường hay lắp đạt các trạm kết nối không dây như là một điểm truy cập mở rộng đầy thuận tiện cho người dùng
Vậy mạng không dây là gì ? Đó là hệ thống mạng không dựa trên vật dẫn là các dây nối hay hệ thống cáp mà sử dụng các loại sóng vô tuyến (RF – Radio Frequence) Hầu hết các mạng không dây dựa trên tiêu chuẩn IEEE 802.11 như 802.11a, 802.11b, 802.11g,
và 802.11n
IEEE là tên viết tắt của tổ chức phi lợi nhuận Institute of Electrical and Electronics Engineers có nghĩa là Viện Các Kỹ Sư Điện Và Điện Tử, được thành lập vào năm 1963 IEEE là một nơi chuyên bành hành các tiêu chuẩn được ứng dụng rộng rãi trong nhiều lĩnh vực của công nghệ thông tin Nhờ các tiêu chuẩn này mà các hệ thống phần cứng hay phần mềm có thể tương thích và kết nối dễ dàng cho dù được sản xuất bởi những nhà cung cấp khác nhau
Những công nghệ này đều tồn tại một lổ hỗng bảo mật lớn làm cho hệ thống mạng không dây trở nên thiếu an toàn hơn bất kì hệ thống mạng nào, đó là do cơ chế phát sóng vô
tuyến dựa trên nền tảng truyền thông broadcast mà ở đó bất cứ máy tính nào cũng có thể
nhận được tín hiệu của nhau, miễn là chúng cùng nằm trong một lớp mạng Bên cạnh đó, công nghệ mã hóa và xác thực dựa trên WEP của các tiêu chuẩn trên đã được chứng minh
là không an toàn, có thể bị hacker bẻ khóa và xâm nhập vào hệ thống trong vòng 15 phút
Vì vậy tổ chức Wi-fi Alliance đã tạo ra một tiêu chuẩn nâng là WPA (Wi-Fi Protected Access) và sau đó là WPA2 Chúng ta sẽ thảo luận về những khái niệm này trong phần sau
Tạp chí mạng seek4media đã đưa ra một thống kê có đến 50 % các mạng Wifi trên toàn
thế giới có khả năng bị tấn công trong vòng 5 giây Điều này có vẽ cường điệu nhưng nếu tính cả những mạng wifi không có sử dụng cơ chế bảo mật nào (thường được đánh dâu là
Unsecured) chiếm đến 25 % thì tỉ lệ trên không phải là quá cao Nhưng cho dù những rũi
ro hay các tỉ lệ thống kê như nào thì cũng không thể phủ nhận được tính tiện lợi mà mạng Wifi mang lại Như vào lúc này đây, khi biên soạn tài liệu này tôi cũng đang sử dụng mạng Wifi trong quán ca phê Nhật Nguyên nhìn xuống bờ hồ Xuân Hương đây thơ một của Đà Lạt ngàn hoa Trong khi tận hưởng những tiện nghi mà sự tiến bộ của công nghệ mang lại thì tôi có những mối nguy hiểm nào khi đang dùng mạng không dây ?
Trước tiên, đây là hệ thống mạng được bảo vệ bằng mật khẩu ứng dụng công nghệ WPA2 nên có thể an tâm phần nào, vì với kỹ thuật mã hóa này rất khó cho hacker có khả năng bẻ khóa, tuy nhiên những mối nguy hiểm lại đến từ những khách hàng khác vì họ cũng gia nhập cùng lớp mạng do đó có khả năng chặn bắt dữ liệu mà máy tính chúng tôi