28 tháng 4, 2012

TẤN CÔNG TỪ CHỐI DỊCH VỤ - DOS

         Với tốc độ phát triển ngày càng nhanh của mạng Internet thì vấn đề An Ninh Mạng là một yếu tố hết sức quan trọng. Các mục đích tấn công trên mạng có thể được chia làm 3 loại:
  -     Tấn công để thay đổi, chỉnh sửa và phá hoại hệ thống.
 -     Tấn công để lấy cấp thông tin, password, account từ đối tượng và khách hàng liên quan đến đối tượng.
 -     Tấn công để làm tắt nghẽn khả năng phục vụ của hệ thống.
 Tại đây chúng ta chủ yếu tập trung vào loại tấn công thứ 3: Tấn công bằng từ chối dịch vụ.
 1.     Lịch sử và mức độ nguy hiểm:
-        Cuối tháng 8 đầu tháng 9 năm 1999, Tribal Flood Network đầu tiên ra đời, Chương trình được Mixter Phát triển.
-        Cuối tháng 9 năm 1999, Công cụ Stacheldraht đã bắt đầu xuất hiện trên những hệ thống của Châu âu và Hoa kỳ.
-        Ngày 21 tháng 10 năm 1999 David Dittrich thuộc trường đại học Washington đã làm những phân tích về công cụ tấn công từ chối dịch vụ.
 -        Ngày 21 tháng 12 năm 1999 Mixter phát hành Tribe Flood Network 2000 ( TFN2K ).
 -        10 : 30 / 7 – 2 -2000 Yahoo! (Một trung tâm nổi tiếng) đã bị tấn công từ chối dịch vụ và ngưng trệ hoạt động trong vòng 3 giờ đồng hồ. Web site Mail Yahoo và GeoCities đã bị tấn công từ 50 địa chỉ IP khác nhau với nhửng yêu cầu chuyễn vận lên đến 1 gigabit/s.
 -        8/2/2000 nhiều Web site lớn như Buy.com, Amazon.com, eBay, Datek, MSN, và CNN.com bị tấn công từ chối dịch vụ.
 -        Lúc 7 giờ tối ngày 9-2/2000 Website Excite.com là cái đích của một vụ tấn công từ chối dịch vụ, dữ liệu được luân chuyễn tới tấp trong vòng 1 giờ cho đến khi kết thúc, và gói dữ liệu đó đã hư hỏng nặng.
-        Qua đó ta có thể thấy rõ những vụ tấn công từ chối dịch vụ (Denial Of Services Attack ) và những cuộc tấn công về việc gửi nhửng gói dữ liệu tới máy chủ (Flood Data Of Services Attack) tới tấp là những mối lo sợ cho nhiều mạng máy tính lớn và nhỏ hiện nay.
-        Khi một mạng máy tính bị Hacker tấn công nó sẽ chiếm một lượng lớn tài nguyên trên server như dung lượng ổ cứng, bộ nhớ, CPU, băng thông … Lượng tài nguyên này tùy thuộc vào khả năng huy động tấn công của mỗi Hacker. Khi đó Server sẽ không thể đáp ứng hết những yêu cầu từ những client của những người sử dụng và từ đó server có thể sẽ nhanh chóng bị ngừng hoạt động, crash hoặc reboot.
 -        Tấn công từ chối dịch vụ có rất nhiều dạng như Ping of Death, Teardrop, Aland Attack, Winnuke, Smurf Attack, UDP/ICMP Flooding, TCP/SYN Flooding, Attack DNS.
 2.     Khái niệm về Tấn Công Từ Chối Dịch Vụ:
a.     Khái niệm
 -        Tấn công từ chối dịch vụ DoS là một kiểu tấn công mà một người làm cho một hệ thống không thể sử dụng, hoặc làm cho hệ thống đó chậm đi một cách đáng kể với người dùng bình thường, bằng cách làm quá tải tài nguyên của hệ thống.
 -        Nếu kẻ tấn công không có khả năng thâm nhập được vào hệ thống, thì chúng cố gắng tìm cách làm cho hệ thống đó sụp đổ và không có khả năng phục vụ người dùng bình thường đó là tấn công Denial of Service (DoS).
 -        Mặc dù tấn công DoS không có khả năng truy cập vào dữ liệu thực của hệ thống nhưng nó có thể làm gián đoạn các dịch vụ mà hệ thống đó cung cấp. Như định nghĩa trên DoS khi tấn công vào một hệ thống sẽ khai thác những cái yếu nhất của hệ thống để tấn công, những mục đích của tấn công DoS:
 b.     Mục đích
 - Cố gắng chiếm băng thông mạng và làm hệ thống mạng bị ngập (flood), khi đó hệ thống mạng sẽ không có khả năng đáp ứng những dịch vụ khác cho người dùng bình thường.
 - Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập vào dịch vụ.
 - Cố gắng ngăn chặn những người dùng cụ thể vào một dịch vụ nào đó.
 - Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy cập vào.
 - Khi tấn công DoS xảy ra người dùng có cảm giác khi truy cập vào dịch vụ đó như bị:
 o   Disable Network - Tắt mạng
 o   Disable Organization - Tổ chức không hoạt động
 o   Financial Loss – Tài chính bị mất
 c.      Mục tiêu
 Như chúng ta biết ở bên trên tấn công DoS xảy ra khi kẻ tấn công sử dụng hết tài nguyên của hệ thống và hệ thống không thể đáp ứng cho người dùng bình thường được vậy các tài nguyên chúng thường sử dụng để tấn công là gì:
 - Tạo ra sự khan hiếm, những giới hạn và không đổi mới tài nguyên.
 - Băng thông của hệ thống mạng (Network Bandwidth), bộ nhớ, ổ đĩa, và CPU Time hay cấu trúc dữ liệu đều là mục tiêu của tấn công DoS.
 - Tấn công vào hệ thống khác phục vụ cho mạng máy tính như: hệ thống điều hoà, hệ thống điện, hệt hống làm mát và nhiều tài nguyên khác của doanh nghiệp. Bạn thử tưởng tượng khi nguồn điện vào máy chủ web bị ngắt thì người dùng có thể truy cập vào máy chủ đó không.
 - Phá hoại hoặc thay đổi các thông tin cấu hình.
 - Phá hoại tầng vật lý hoặc các thiết bị mạng như nguồn điện, điều hoà…
 3.Hình thức tấn công Từ Chối Dịch Vụ:
 a.Tấn công Smurf
 - Là thủ phạm sinh ra cực nhiều giao tiếp ICMP (ping) tới địa chỉ Broadcast của nhiều mạng với địa chỉ nguồn là mục tiêu cần tấn công.
 * Chúng ta cần lưu ý là: Khi ping tới một địa chỉ là quá trình hai chiều – Khi máy A ping tới máy B máy B reply lại hoàn tất quá trình. Khi tôi ping tới địa chỉ Broadcast của mạng nào đó thì toàn bộ các máy tính trong mạng đó sẽ Reply lại tôi. Nhưng giờ tôi thay đổi địa chỉ nguồn, thay địa chỉ nguồn là máy C và tôi ping tới địa chỉ Broadcast của một mạng nào đó, thì toàn bộ các máy tính trong mạng đó sẽ reply lại vào máy C chứ không phải tôi và đó là tấn công Smurf.
 - Kết quả đích tấn công sẽ phải chịu nhận một đợt Reply gói ICMP cực lớn và làm cho mạng bị dớt hoặc bị chậm lại không có khả năng đáp ứng các dịch vụ khác.
 - Quá trình này được khuyếch đại khi có luồng ping reply từ một mạng được kết nối với nhau (mạng BOT).
 - Tấn công Fraggle, chúng sử dụng UDP echo và tương tự như tấn công Smurf.
 Hình hiển thị tấn công DoS - dạng tấn công Smurf sử dụng gói ICMP làm ngập các giao tiếp khác.
 b. Tấn công Buffer overflow
 - Buffer Overflow xảy ra tại bất kỳ thời điểm nào có chương trình ghi lượng thông tin lớn hơn dung lượng của bộ nhớ đệm trong bộ nhớ.
 - Kẻ tấn công có thể ghi đè lên dữ liệu và điều khiển chạy các chương trình và đánh cắp quyền điều khiển của một số chương trình nhằm thực thi các đoạn mã nguy hiểm.
 - Tấn công Buffer Overflow tôi đã trình bày cách khai thác lỗi này trong bài viết trước về hacking windows cũng trên trang www.vnexperts.net
 - Quá trình gửi một bức thư điện tử mà file đính kèm dài quá 256 ký tự có thể sẽ xảy ra quá trình tràn bộ nhớ đệm.
 c. Tấn công Ping of Death
 - Kẻ tấn công gửi những gói tin IP lớn hơn số lương bytes cho phép của tin IP là 65.536 bytes.
 - Quá trình chia nhỏ gói tin IP thành những phần nhỏ được thực hiện ở layer II.
 - Quá trình chia nhỏ có thể thực hiện với gói IP lớn hơn 65.536 bytes. Nhưng hệ điều hành không thể nhận biết được độ lớn của gói tin này và sẽ bị khởi động lại, hay đơn giản là sẽ bị gián đoạn giao tiếp.
 - Để nhận biết kẻ tấn công gửi gói tin lớn hơn gói tin cho phép thì tương đối dễ dàng.
 d. Tấn công Teardrop
 - Gói tin IP rất lớn khi đến Router sẽ bị chia nhỏ làm nhiều phần nhỏ.
 - Kẻ tấn công sử dụng sử dụng gói IP với các thông số rất khó hiểu để chia ra các phần nhỏ (fragment).
 - Nếu hệ điều hành nhận được các gói tin đã được chia nhỏ và không hiểu được, hệ thống cố gắng build lại gói tin và điều đó chiếm một phần tài nguyên hệ thống, nếu quá trình đó liên tục xảy ra hệ thống không còn tài nguyên cho các ứng dụng khác, phục vụ các user khác.
 e.Tấn công SYN
 - Kẻ tấn công gửi các yêu cầu (request ảo) TCP SYN tới máy chủ bị tấn công. Để xử lý lượng gói tin SYN này hệ thống cần tốn một lượng bộ nhớ cho kết nối.
 -        Khi có rất nhiều gói SYN ảo tới máy chủ và chiếm hết các yêu cầu xử lý của máy chủ. Một người dùng bình thường kết nối tới máy chủ ban đầu thực hiện Request TCP SYN và lúc này máy chủ không còn khả năng đáp lại - kết nối không được thực hiện.
 -        Đây là kiểu tấn công mà kẻ tấn công lợi dụng quá trình giao tiếp của TCP theo – Three-way.
-        Các đoạn mã nguy hiểm có khả năng sinh ra một số lượng cực lớn các gói TCP SYN tới máy chủ bị tấn công, địa chỉ IP nguồn của gói tin đã bị thay đổi và đó chính là tấn công DoS.
 -        Hình bên trên thể hiện các giao tiếp bình thường với máy chủ và bên dưới thế hiện khi máy chủ bị tấn công gói SYN đến sẽ rất nhiều trong khi đó khả năng trả lời của máy chủ lại có hạn và khi đó máy chủ sẽ từ chối các truy cập hợp pháp.
 -        Quá trình TCP Three-way handshake được thực hiện: Khi máy A muốn giao tiếp với máy B. (1) máy A bắn ra một gói TCP SYN tới máy B – (2) máy B khi nhận được gói SYN từ A sẽ gửi lại máy A gói ACK đồng ý kết nối – (3) máy A gửi lại máy B gói ACK và bắt đầu các giao tiếp dữ liệu.
 -        Máy A và máy B sẽ dữ kết nối ít nhất là 75 giây, sau đó lại thực hiện một quá trình TCP Three-way handshake lần nữa để thực hiện phiên kết nối tiếp theo để trao đổi dữ liệu.
 -        Thật không may kẻ tấn công đã lợi dụng kẽ hở này để thực hiện hành vi tấn công nhằm sử dụng hết tài nguyên của hệ thống bằng cách giảm thời gian yêu cầu Three-way handshake xuống rất nhỏ và không gửi lại gói ACK, cứ bắn gói SYN ra liên tục trong một thời gian nhất định và không bao giờ trả lời lại gói SYN&ACK từ máy bị tấn công.
 -        Với nguyên tắc chỉ chấp nhận gói SYN từ một máy tới hệ thống sau mỗi 75 giây nếu địa chỉ IP nào vi phạm sẽ chuyển vào Rule deny access sẽ ngăn cản tấn công này.
 4.     Tấn công quy mô lớn – BOT, DDoS, DRDoS:
a.     Khái niệm mạng BOT
   i.     Ý nghĩa, mục đích
 -        Khi sử dụng một Tool tấn công DoS tới một máy chủ đôi khi không gây ảnh hưởng gì cho máy chủ.Giả sử bạn sử dụng tool Ping of Death tới một máy chủ, trong đó máy chủ kết nối với mạng tốc độ 100Mbps bạn kết nối tới máy chủ tốc độ 3Mbps. Vậy tấn công của bạn không có ý nghĩa gì.
 -        Nhưng bạn hãy tưởng tượng có 1000 người như bạn cùng một lúc tấn công vào máy chủ kia khi đó toàn bộ băng thông của 1000 người cộng lại tối đa đạt 3Gbps và tốc độ kết nối của máy chủ là 100 Mbps vậy kết quả sẽ ra sao các bạn có khả năng tưởng tượng.
 -        Nhưng tôi đang thử hỏi làm cách nào để có 1000 máy tính kết nối với mạng – tôi đi mua một nghìn chiếc và thuê 1000 thuê bao kết nối - chắc chắn tôi không làm như vậy rồi và cũng không kẻ tân công nào sử dụng phương pháp này cả.
-        Kẻ tấn công xây dựng một mạng gồm hàng nghìn máy tính kết Internet (có mạng BOT lên tới 400.000 máy).
 -        Khi có trong tay mạng BOT kẻ tấn công sử dụng những tool tấn công đơn giản để tấn công vào một hệ thống máy tính. Dựa vào những truy cập hoàn toàn hợp lệ của hệ thống, cùng một lúc chúng sử dụng một dịch vụ của máy chủ, bạn thử tưởng tượng khi kẻ tấn công có trong tay 400.000 máy chủ và cùng một lúc ra lệnh cho chúng download một file trên trang web của bạn. Và đó chính là DDoS – Distributed Denial of Servcie
   ii.     Mục đích sử dụng mạng BotNet
 -        Tấn công Distributed Denial-of-Service - DDoS
 -        Spamming: Mở một SOCKS v4/v5 proxy server cho việc Spamming
 -        Sniffing traffic: Bot cũng có thể sử dụng các gói tin nó sniffer (tóm được các giao tiếp trên mạng) sau khi tóm được các gói tin nó cố gắng giải mã gói tin để lấy được các nội dung có ý nghĩa như tài khoản ngân hàng và nhiều thông tin có giá trị khác của người sử dụng.
 -        Keylogging: Với sự trợ giúp của Keylogger rất nhiều thông tin nhạy cảm của người dùng có thể sẽ bị kẻ tấn công khai thác như tài khoản trên e-banking, cũng như nhiều tài khoản khác.
 -        Cài đặt và lây nhiễm chương trình độc hại: Botnet có thể sử dụng để tạo ra mạng những mạng BOT mới.
 -        Cài đặt những quảng cáo Popup: Tự động bật ra những quảng cáo không mong muốn với người sử dụng.
 -        Google Adsense abuse: Tự động thay đổi các kết quả tìm kiếm hiển thị mỗi khi người dùng sử dụng dịch vụ tìm kiểm của Google, khi thay đổi kết quả nó sẽ lừa người dùng kích vào những trang web nguy hiểm.
 -        Tấn công vào IRC Chat Networks: Nó được gọi là clone attack
 -        Phishing: Mạng botnet còn được sử dụng để phishing mail nhằm lấy các thông tin nhạy cảm của người dùng.
    iii.     Sơ đồ cách hệ thống bị lây nhiễm và sử dụng Agobot:
 b.     Khái niệm tấn công từ chối dịch vụ kiểu phân tán Distributed Denial-of-Service:
 - Đây là cách thức tấn công rất nguy hiểm. Hacker xâm nhập vào các hệ thống máy tính, cài đặt các chương trình điều khiển từ xa, và sẽ kích hoạt đồng thời các chương trình này vào cùng một thời điểm để đồng loạt tấn công vào một mục tiêu. Với DDoS, các hacker có thể huy động tới hàng trăm thậm chí hàng ngàn máy tính cùng tham gia tấn công cùng một thời điểm (tùy vào sự chuẩn bị trước đó của hacker) và có thể "ngốn" hết băng thông của mục tiêu trong nháy mắt
   i.     Các đặc tính của tấn công DDoS
 -        Nó được tấn công từ một hệ thống các máy tính cực lớn trên Internet, và thường dựa vào các dịch vụ có sẵn trên các máy tính trong mạng botnet.
 -        Các dịch vụ tấn công được điều khiển từ những "primary victim" trong khi các máy tính bị chiếm quyền sử dụng trong mạng Bot được sử dụng để tấn công thường được gọi là "secondary victims".
 -        Là dạng tấn công rất khó có thể phát hiện bởi tấn công này được sinh ra từ nhiều địa chỉ IP trên Internet.
 -        Nếu một địa chỉ IP tấn công một công ty, nó có thể được chặn bởi Firewall. Nếu nó từ 30.000 địa chỉ IP khác, thì điều này là vô cùng khó khăn.
    ii.     Hình thức tấn công
 -        Agent Handler Model: Kẻ tấn công (Attacker) sử dụng các công cụ hoặc trình điều khiển (Handler) để điều khiển các "đồng minh" (Agens) tấn công mục tiêu (Victim).
 -        Tấn công DDoS dựa trên nền tảng IRC: Kẻ tấn công sử dụng các mạng IRC để điều khiển, khuyếch đại và quản lý kết nối với các máy tính trong mạng Botnet.
 c.      Khái niệm tấn công từ chối dịch vụ theo phương pháp phản xạ DRDoS
-   Để thực hiện "Tấn công từ chối dịch vụ phân tán DDoS", kẻ tấn công tìm cách chiếm dụng và điều khiển nhiều máy tính hoặc mạng máy tính trung gian (đóng vai trò zombie) từ nhiều nơi để đồng loạt gửi ào ạt các gói tin (packet) với số lượng rất lớn, mục đích chiếm dụng tài nguyên và làm tràn ngập đường truyền của một mục tiêu xác định nào đó. Riêng "Tấn công từ chối dịch vụ phản xạ DRDoS" chỉ mới xuất hiện gần đây nhưng lại là loại nguy hiểm nhất. Nếu được thực hiện bởi các hacker chuyên nghiệp, không một hệ thống nào có thể đứng vững được trước nó. Đáng nói hơn, hiện cũng đã xuất hiện nhiều loại virus, worm, trojan có chức năng tự động thực hiện tấn công DoS.
 -   DRDoS - The Distributed Reflection Denial of Service Attack
 -   Đây có lẽ là kiểu tấn công lợi hại nhất và làm boot máy tính của đối phương nhanh gọn nhất. Cách làm thì cũng tương tự như DDos nhưng thay vì tấn công bằng nhiều máy tính thì ngườI tấn công chỉ cần dùng một máy tấn công thông qua các server lớn trên thế giới. Vẫn với phương pháp giả mạo địa chỉ IP của victim , kẻ tấn công sẽ gởi các gói tin đến các server mạnh nhất , nhanh nhất và có đường truyền rộng nhất như Yahoo .v.v… , các server này sẽ phản hồi các gói tin đó đến địa chỉ của victim. Việc cùng một lúc nhận được nhiều gói tin thông qua các server lớn này sẽ nhanh chóng làm nghẽn đường truyền của máy tính nạn nhân và làm crash, reboot máy tính đó. Cách tấn công này lợi hại ở chỗ chỉ cần một máy có kết nối Internet đơn giản với đường truyền bình thường cũng có thể đánh bật được hệ thống có đường truyền tốt nhất thế giớI nếu như ta không kịp ngăn chặn.
 5.     Phòng ngừa tấn công Từ Chối Dịch Vụ:
 -        Gia tăng băng thông - Bandwidth.
 -        Tạo cơ chế cân bằng tải - Load Balancing - (nếu có thể thực hiện được).
 -        Cản lọc từ tầng IP (ít nhất là giới hạn số lượng request liên tục từ 1 IP trong một khoảng thời gian nào đó).
 -        Tối ưu hóa Kernel (nếu dùng Linux hoặc hệ điều hành tương tự).
 -        Tối ưu hóa TCP Stack.
 -        Tối ưu hóa Web Server (Apache chẳng hạn).
 -        Không nên sử dụng Flash hoặc ít nhất mặc định là không cho chạy Flash, rồi có thể cho phép theo từng website cụ thể. NoScript và FlashBlock có thể giúp bạn làm chuyện này dễ dàng!
 -        Đừng cố chống xFlash bằng cách nhìn vào các đặc trưng của nó. xFlash hoàn toàn có thể tạo ra những request giống y những request hợp lệ.
 -        Sau đó mới đến ứng dụng tương tự như của Silveryhat.
-   Phương pháp chống mà Silveryhat đưa ra chỉ có thể ngăn bị DDoS vào đường dẫn của website và ngăn tình trạng quá tải trên máy chủ (do truy cập quá nhiều vào đường dẫn của website, tạo quá nhiều truy vấn đến CSDL). Nếu mức độ DDoS gia tăng, phương pháp dùng PHP để chống sẽ không còn hữu hiệu vì chính web service bị cạn kiệt và băng thông bị ngập lụt.
-   Không nên thuê Virtual Server (Share Hosting) vì một máy chủ có nhiều máy chủ ảo. Khi một máy chủ ảo bị tấn công DDoS thì tài nguyên của máy chủ thực sẽ bị hao tổn và các máy chủ ảo vì vậy cũng bị ảnh hưởng. Bạn không thể can thiệp gì khác ngoài cái CPanel (dạng gì đó) mà công ty hosting cung cấp cho bạn.
-   Nếu có khả năng tài chính, bạn nên thuê một Dedicated Server có tài nguyên đủ mạnh. Dedicated server cho phép bạn điều chỉnh và can thiệp đến hệ thống sâu hơn, bởi thế, có khả năng giảm thiểu DDoS tốt hơn. Khi nắm quyền quản lý máy chủ ta có khả năng chủ động cấu hình máy chủ một cách hợp lý, áp dụng các kỹ thuật hạn chế, khắc phục DDoS, thí dụ WAN load balancing-fault over (dùng hai hay nhiều nguồn WAN), Round Robin, back-end load balancing...
-   Cũng có một giải pháp ít tốn kém hơn và phù hợp với hoàn cảnh Việt Nam là thiết lâp Home Web Server, áp dụng Dynamic Domain Name (tên miền năng động). Home Web Server với 2 CPU 800-1000 MHz, 1 GB RAM, có thể trang bị thêm một security router, có cơ cấu load balancing, Firewall ngay trên router. Với security router ta có thể chặn bớt các gói tin DDoS từ ngay vòng ngoài tại modem-router. Việc áp dụng Dynamic Domain Name cho phép ta thiết lập một Web Server từ bất cứ nơi nào, trong trường hợp khẩn cấp, thí dụ từ môt phòng tại khách sạn tỉnh xa, với một laptop, khi mà Web Server chính bị tấn công DDoS và sụp đổ.

1 nhận xét:

  1. Trên đây chỉ là một số lệnh cơ bản, mọi người có thể đóng góp thêm!

    Trả lờiXóa

Cảm ơn bạn đã ghé thăm blog của mình!