Menu
×

Được chứng nhận

Ghi lại kiến ​​thức của bạn

Đăng nhập Đăng ký

Tạo Tài khoản Example.com.vn miễn phí để cải thiện trải nghiệm học tập của bạn

Người tìm đường và việc học của tôi

Theo dõi tiến độ học tập của bạn tại Example.com.vn và thu thập phần thưởng

Nâng cấp

Trở thành người dùng PLUS và mở khóa các tính năng mạnh mẽ (không có quảng cáo, lưu trữ, hỗ trợ, ..)

Bắt đầu từ đâu

Bạn không chắc chắn muốn bắt đầu từ đâu? Đi theo con đường được hướng dẫn của chúng tôi

Trình chỉnh sửa mã (Dùng thử)

Với trình chỉnh sửa mã trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã và xem kết quả trong trình duyệt của mình

Video

Tìm hiểu những điều cơ bản về HTML qua video hướng dẫn thú vị và hấp dẫn

Mẫu

Chúng tôi đã tạo một loạt mẫu trang web đáp ứng mà bạn có thể sử dụng - miễn phí!

Web hosting

Lưu trữ trang web của riêng bạn và chia sẻ nó với mọi người với Example.com.vn Spaces

Tạo một máy chủ

Tạo máy chủ của riêng bạn bằng Python, PHP, React.js, Node.js, Java, C#, v.v.

Làm thế nào để

Bộ sưu tập lớn các đoạn mã cho HTML, CSS và JavaScript

Khung CSS

Xây dựng các trang web nhanh và phản hồi bằng cách sử dụng khung W3.CSS miễn phí của chúng tôi

Thống kê trình duyệt

Đọc xu hướng dài hạn của việc sử dụng trình duyệt

Tốc độ gõ

Kiểm tra tốc độ đánh máy của bạn

Đào tạo AWS

Tìm hiểu dịch vụ web của Amazon

Bộ chọn màu

Sử dụng công cụ chọn màu của chúng tôi để tìm các màu RGB, HEX và HSL khác nhau. Bánh xe màu hình tròn thể hiện sự chuyển màu trong quang phổ

Trò chơi mã

Trò chơi mã hóa W3Schools! Giúp linh miêu thu thập nón thông Logo Lynx

Đặt mục tiêu

Nhận hành trình học tập được cá nhân hóa dựa trên các kỹ năng và mục tiêu hiện tại của bạn

Bản tin

Tham gia bản tin của chúng tôi và có quyền truy cập vào nội dung độc quyền mỗi tháng

Việc làm

Thuê những tài năng công nghệ hàng đầu. Hợp lý hóa quy trình tuyển dụng của bạn để có đội ngũ phù hợp hoàn hảo

Lớp học

Hãy liên hệ để sử dụng Example.com.vn Plus và các chứng chỉ với tư cách là một tổ chức giáo dục

×
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP CÁCH W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS AN NINH MẠNG DỮ LIỆU KHOA HỌC

An ninh mạng Tấn công mạng


Tấn công mạng

Các cuộc tấn công vào các giao thức và ứng dụng được lưu trữ trên Mạng rất phong phú. Ứng dụng Web được đề cập trong phần riêng của nó trong khóa học này.

Các dịch vụ có thể có những lỗi cố hữu khiến chúng bị kẻ tấn công khai thác. Các cuộc tấn công này thường liên quan đến việc sử dụng các hướng dẫn đặc biệt cho Hệ điều hành, thông qua dịch vụ dễ bị tấn công, để chiếm quyền kiểm soát quá trình vận hành dịch vụ mạng. Tràn bộ đệm là một loại tấn công như vậy.

Một mạng thường chứa nhiều ứng dụng, một số chứa thông tin đăng nhập đơn giản và một số khác có chức năng phức tạp. Một cách để có cái nhìn tổng quan về bề mặt tấn công và cũng vạch ra các lỗ hổng dễ khai thác là quét cổng tất cả nội dung trong môi trường đích, sau đó chụp ảnh màn hình chúng.

Các công cụ như EyeWitness (https://github.com/FortyNorthSecurity/EyeWitness) thực hiện việc này. Công cụ này cho phép chúng tôi nhanh chóng có được cái nhìn tổng quan về những nội dung nào được thể hiện trên mạng, sau đó cung cấp ảnh chụp màn hình của từng dịch vụ. Bằng cách có ảnh chụp màn hình, chúng tôi có thể dễ dàng xem xét và đánh giá nhanh chóng hệ thống nào chúng tôi nên xem xét kỹ hơn.

Khai thác một dịch vụ có nghĩa là lạm dụng dịch vụ theo những cách không mong muốn. Thông thường, hoạt động khai thác này có nghĩa là những kẻ tấn công có khả năng chạy mã của riêng chúng, mã này được gọi là RCE ("Thực thi mã từ xa").


Tràn bộ nhớ

Việc khai thác các dịch vụ mạng đôi khi liên quan đến việc lạm dụng chức năng quản lý bộ nhớ của ứng dụng. Quản lý bộ nhớ? Có, các ứng dụng cần di chuyển dữ liệu trong bộ nhớ máy tính để ứng dụng có thể hoạt động. Khi các ngôn ngữ lập trình cung cấp cho nhà phát triển quyền kiểm soát bộ nhớ, các vấn đề như Tràn bộ đệm có thể tồn tại. Tồn tại nhiều lỗ hổng tương tự và trong phần này chúng tôi xem xét Tràn bộ đệm.

Ngôn ngữ lập trình C và C++ cho phép các nhà phát triển kiểm soát rất nhiều cách quản lý bộ nhớ. Điều này lý tưởng cho các ứng dụng yêu cầu nhà phát triển lập trình rất chặt chẽ với phần cứng nhưng lại tạo ra các lỗ hổng. Các ngôn ngữ lập trình như Java, JavaScript, C#, Ruby, Python và các ngôn ngữ khác không dễ dàng cho phép các nhà phát triển mắc những lỗi này, khiến cho việc tràn bộ đệm ít xảy ra hơn trong các ứng dụng được viết bằng các ngôn ngữ này.

Tràn bộ đệm xảy ra khi đầu vào không được dọn dẹp được đặt vào các biến. Các biến này được biểu diễn trên Hệ điều hành thông qua cấu trúc bộ nhớ được gọi là Ngăn xếp. Kẻ tấn công sau đó có thể ghi đè lên một phần của ngăn xếp được gọi là Con trỏ trả về.

Lưu ý : Cấu trúc bộ nhớ ngăn xếp chỉ đơn giản là nơi chương trình lưu trữ các biến và thông tin cần chạy. Ngăn xếp sẽ được đặt trong RAM máy tính ("Bộ nhớ truy cập ngẫu nhiên")

Con trỏ trả về quyết định vị trí CPU ("Bộ xử lý trung tâm") sẽ thực thi mã tiếp theo. CPU chỉ đơn giản kiểm soát những hướng dẫn mà hệ thống sẽ thực hiện tại bất kỳ thời điểm nào. Con trỏ trả về chỉ đơn giản là một địa chỉ trong bộ nhớ nơi việc thực thi sẽ diễn ra. CPU phải luôn được cho biết nơi thực thi mã và đây là điều mà con trỏ trả về cho phép nó thực hiện.

Khi kẻ tấn công có thể điều khiển Con trỏ trả về, điều đó có nghĩa là kẻ tấn công có thể kiểm soát những lệnh mà CPU sẽ thực thi!

Ví dụ, hãy xem xét ví dụ về mã C sau đây (đừng lo lắng, bạn không cần phải là nhà phát triển C nhưng hãy cố gắng hết sức để hiểu ứng dụng đơn giản này làm gì):

#include <string.h>
void storeName (char *input) {
  char name[12];
  strcpy(name, input);
}

int main (int argc, char **argv) {
  storeName(argv[1]);
  return 0;
}

Trong nhiều ngôn ngữ lập trình, bao gồm cả C, ứng dụng khởi động bằng một hàm gọi là main. Điều này được chỉ ra trong đoạn mã trên với nội dung int main (int argc, char **argv) { . Bên trong dấu ngoặc nhọn { và }, chương trình chỉ cần chạy một hàm có tên storeName(argv[1]); . Điều này sẽ đơn giản chấp nhận bất cứ điều gì người dùng đã nhập vào chương trình và cung cấp nó cho hàm storeName.

Ứng dụng này có 11 dòng mã, nhưng hãy tập trung sự chú ý của bạn vào dòng có nội dung strcpy(name, input); . Đây là hàm cố gắng sao chép văn bản từ đầu vào vào biến có tên là name. Tên có thể chứa tối đa 12 ký tự như được biểu thị bằng dòng char name[12]; . Có vị trí nào trong mã ngăn chặn tên được cung cấp dài hơn 12 ký tự không? Biến tên được cung cấp bởi người dùng đang sử dụng ứng dụng và được truyền trực tiếp vào hàm storeName.

Trong ứng dụng này không có quá trình làm sạch hoặc khử trùng, đảm bảo độ dài của đầu vào đúng như ứng dụng mong đợi. Bất kỳ ai đang chạy chương trình đều có thể dễ dàng nhập một giá trị lớn hơn giá trị tối đa mà biến tên có thể chứa. Biến tên chứa 12 ký tự, nhưng điều gì xảy ra khi CPU được yêu cầu ghi nhiều hơn 12 ký tự? Nó chỉ đơn giản là thực hiện những gì đã được yêu cầu, ghi đè lên bộ nhớ nhiều nhất có thể!

Khi cố gắng ghi một giá trị lớn hơn mong đợi, CPU vẫn sẽ cố gắng ghi giá trị này vào bộ nhớ. Điều này thực sự khiến CPU ghi đè lên những thứ khác trong bộ nhớ, ví dụ như Con trỏ trả về cho phép kẻ tấn công kiểm soát CPU. Một lần nữa, nếu kẻ tấn công có thể ghi đè và kiểm soát Con trỏ trả về, kẻ tấn công sẽ kiểm soát mã nào CPU sẽ thực thi.

Một ví dụ đồ họa cho thấy Alice viết tên của cô ấy vào ứng dụng mà chúng tôi đã sử dụng trong ví dụ trên:

Tràn bộ nhớ

Alice cư xử tử tế và cung cấp một cái tên khiến ứng dụng hoạt động như bình thường. Cô ấy cung cấp tên của mình là Alice và nó chỉ được ghi vào bộ nhớ ứng dụng.

Tuy nhiên, Eve gửi quá nhiều ký tự vào ứng dụng. Chuyện gì xảy ra sau đó? CPU lấy đầu vào của cô ấy một cách hiệu quả và ghi đầu vào vào bộ nhớ, đồng thời ghi đè các giá trị khác tồn tại!

Khai thác lỗi tràn bộ đệm

Đầu vào của Eve khiến CPU ghi nhiều dữ liệu hơn những gì ứng dụng mong đợi và khiến con trỏ trả về bị ghi đè. Khi CPU cố gắng thực hiện lệnh tiếp theo, nó sẽ được yêu cầu thực thi mã tại vị trí AAAAAAA ...

Nếu Eve nắm quyền kiểm soát máy chủ này, thay vì viết chữ A, cô ấy sẽ phải cung cấp mã mà CPU có thể hiểu được vào bộ nhớ. Tiếp theo, cô ấy sẽ làm cho con trỏ trả về có một giá trị báo cho CPU thực thi mã CPU của Eve.

Lưu ý : Nói một cách đơn giản, lỗi tràn bộ đệm cho phép kẻ tấn công chiếm quyền kiểm soát CPU của nạn nhân bằng cách ghi đè cẩn thận vào bộ nhớ của nạn nhân.

Máy quét lỗ hổng

Trình quét lỗ hổng sẽ tự động tìm kiếm các lỗ hổng phổ biến trong phần mềm và cấu hình trên mạng. Nó không được thiết kế để tìm các lớp lỗ hổng mới mà thay vào đó sử dụng danh sách các plugin (hoặc mô-đun) được xác định trước để quét các dịch vụ để tìm sự cố và lỗ hổng. Nó không nhất thiết phải tìm kiếm các lỗ hổng zero-day! Lỗ hổng zero-day là một lỗ hổng hoàn toàn mới mà trước đây nhà cung cấp phần mềm và người bảo vệ chưa biết đến; đối với lỗ hổng zero-day hiện tại chưa có bản vá nào được biết đến cho vấn đề này.

Máy quét có các tính năng quét cổng và lập bản đồ mạng, bao gồm các cách khám phá và tìm ra lỗ hổng trong các ứng dụng khác nhau mà nó gặp phải.

Trình quét lỗ hổng thường hỗ trợ cấu hình bằng thông tin xác thực, cho phép nó đăng nhập vào hệ thống và đánh giá các lỗ hổng thay vì tìm kiếm chúng từ góc độ chưa được xác thực.

Lưu ý: Trình quét lỗ hổng chủ yếu tìm kiếm các lỗ hổng đã biết và cấu hình sai, chứ không phải lỗ hổng zero-day!

Thực thi mã

Khi những kẻ tấn công tìm thấy một lỗ hổng mà chúng có khả năng khai thác, chúng cần quyết định tải trọng nào chúng muốn chạy. Tải trọng là mã mà kẻ tấn công muốn phân phối thông qua việc khai thác.

Có nhiều tải trọng khác nhau mà kẻ tấn công có thể quyết định sử dụng, đây là một số ví dụ:

  • Làm cho nạn nhân đăng ký với máy chủ C2 ("Lệnh và Kiểm soát") chấp nhận lệnh từ kẻ tấn công
  • Tạo tài khoản người dùng backdoor mới trên hệ thống để kẻ tấn công có thể sử dụng sau này
  • Mở GUI ("Giao diện người dùng đồ họa") với nạn nhân để kẻ tấn công có thể điều khiển nó từ xa
  • Nhận thiết bị đầu cuối dòng lệnh, shell, kẻ tấn công có thể gửi lệnh thông qua

Tải trọng phổ biến của những kẻ tấn công là bind-shell. Nó khiến nạn nhân lắng nghe trên một cổng và khi kẻ tấn công kết nối, họ sẽ nhận được một shell.

vỏ ràng buộc

Tường lửa rất hữu ích trong việc ngăn chặn kẻ tấn công kết nối với nạn nhân. Tường lửa sẽ từ chối các kết nối đến nạn nhân một cách hiệu quả miễn là cổng không được phép. Chỉ một ứng dụng có thể nghe trên một cổng, vì vậy kẻ tấn công không thể nghe trên các cổng đã được sử dụng trừ khi chúng vô hiệu hóa dịch vụ đó.

Để phá vỡ biện pháp phòng thủ này, thay vào đó, những kẻ tấn công sẽ cố gắng làm cho nạn nhân kết nối với kẻ tấn công, khiến nạn nhân phải cung cấp quyền truy cập vào tải trọng. Rất tiếc, nhiều tường lửa không được cấu hình để từ chối lưu lượng truy cập đi ra, khiến cuộc tấn công này rất khả thi đối với những kẻ tấn công.

Trong ví dụ này, chúng ta thấy kẻ tấn công sử dụng shell đảo ngược để khiến nạn nhân kết nối với kẻ tấn công.

Vỏ ngược

Lưu ý: Việc thực thi mã có nghĩa là kẻ tấn công có thể chạy mã của chúng trên hệ thống của nạn nhân. Mã nào họ chọn để triển khai là tùy thuộc vào họ, nhưng nó thường liên quan đến việc những kẻ tấn công phải có cách chạy lệnh trên hệ thống nạn nhân trong thời gian dài.

Giám sát mạng

Những kẻ tấn công trong hầu hết các trường hợp đều yêu cầu mạng phải điều khiển mục tiêu từ xa. Khi kẻ tấn công có khả năng điều khiển mục tiêu từ xa, việc này được thực hiện thông qua kênh Lệnh và Điều khiển, thường được gọi là C&C hoặc C2.

Tồn tại sự xâm phạm thông qua phần mềm độc hại được lập trình sẵn với tải trọng không cần C2. Loại phần mềm độc hại này có khả năng xâm phạm ngay cả các mạng không có mạng.

Việc phát hiện các thỏa hiệp thường có thể được thực hiện thông qua việc tìm kênh C2. C2 có thể có bất kỳ dạng nào, ví dụ:

  • Sử dụng HTTPS để liên lạc với máy chủ của kẻ tấn công. Điều này làm cho C2 trông giống như đang duyệt mạng
  • Sử dụng Mạng xã hội để đăng và đọc tin nhắn tự động
  • Các hệ thống như Google Docs để thêm và chỉnh sửa lệnh cho nạn nhân

Đèn hiệu giám sát mạng

Chỉ có sự khéo léo của kẻ tấn công mới đặt ra giới hạn cho C2. Khi xem xét cách ngăn chặn những kẻ tấn công bằng các kênh C2 thông minh, chúng ta thường phải dựa vào việc phát hiện các điểm bất thường và khác biệt về mặt thống kê trên mạng. Ví dụ: các công cụ giám sát mạng có thể phát hiện:

  • các kết nối dài được sử dụng bởi C2, nhưng điều này không tự nhiên đối với giao thức được đề cập. HTTP là một trong những giao thức không phổ biến để có kết nối dài, nhưng kẻ tấn công sử dụng nó để điều khiển từ xa có thể.
  • Đèn hiệu được C2 sử dụng để cho biết nạn nhân còn sống và sẵn sàng nhận lệnh. Nhiều loại phần mềm sử dụng đèn hiệu, không chỉ những kẻ tấn công, mà việc biết đèn hiệu nào tồn tại và đèn hiệu nào bạn mong đợi là một cách làm tốt.
  • Dữ liệu đột ngột bùng phát từ mạng. Điều này có thể cho thấy một lượt tải lên lớn từ một ứng dụng hoặc kẻ tấn công đang đánh cắp dữ liệu. Hãy thử hiểu ứng dụng và người dùng nào đang gây ra hiện tượng dữ liệu nhấp nháy và áp dụng ngữ cảnh cho nó. Nó có bình thường hay không?

Có nhiều cách mà người phòng thủ có thể cố gắng tìm ra điểm bất thường. Những điểm bất thường này phải có mối tương quan sâu hơn với dữ liệu từ hệ thống nguồn gửi dữ liệu.

Để giám sát mạng, nên áp dụng bối cảnh để giúp xác định nhiễu từ tín hiệu. Điều đó có nghĩa là SOC ("Trung tâm điều hành bảo mật") nên cố gắng làm phong phú dữ liệu, chẳng hạn như Địa chỉ IP nguồn và đích với ngữ cảnh để giúp làm cho dữ liệu có giá trị hơn.

Việc áp dụng ngữ cảnh có thể được mô tả bằng kịch bản sau: Một cuộc tấn công đến từ Internet nhưng nó cố gắng khai thác lỗ hổng Linux đối với dịch vụ Windows. Điều này thường được coi là tiếng ồn và có thể được bỏ qua một cách an toàn; trừ khi, điều gì sẽ xảy ra nếu địa chỉ IP thực hiện cuộc tấn công là địa chỉ IP từ mạng của chính bạn hoặc nhà cung cấp mà bạn tin cậy? Sau đó, bối cảnh mà chúng tôi có thể áp dụng có thể cung cấp cái nhìn sâu sắc có giá trị để chúng tôi khám phá thêm về cuộc tấn công. Suy cho cùng, chúng tôi không muốn các hệ thống mà chúng tôi tin tưởng phát động bất kỳ cuộc tấn công nào!


Lưu lượng truy cập ngang hàng

Hầu hết các mạng được cấu hình theo kiểu máy khách đến máy chủ. Khách hàng truy cập vào máy chủ để lấy thông tin và khi khách hàng cần tương tác với nhau, họ thường thực hiện việc đó thông qua máy chủ.

Tuy nhiên, kẻ tấn công có thể sẽ muốn sử dụng phương thức liên lạc ngang hàng, tức là giữa các khách hàng, để tận dụng các thành quả dễ xảy ra như sử dụng lại thông tin xác thực hoặc khai thác các khách hàng yếu hoặc dễ bị tấn công.

Ví dụ: cổng 445, được SMB sử dụng, là một chỉ báo tốt để phát hiện sự xâm phạm. Khách hàng không nên nói chuyện với nhau qua SMB trong hầu hết các môi trường, tuy nhiên, trong quá trình xâm phạm, có khả năng kẻ tấn công sẽ cố gắng sử dụng SMB để xâm phạm thêm các hệ thống.

Ngang hàng


Chuyển động bên và xoay vòng

Khi hệ thống bị xâm phạm, kẻ tấn công có thể tận dụng hệ thống đó để khám phá các mạng bổ sung mà hệ thống bị xâm nhập có quyền truy cập. Điều này có thể xảy ra trong môi trường mà hệ thống bị xâm nhập có nhiều đặc quyền hơn thông qua tường lửa hoặc hệ thống có quyền truy cập vào các mạng khác thông qua một card mạng bổ sung.

Xoay vòng có nghĩa là kẻ tấn công sử dụng máy chủ bị xâm nhập để truy cập vào các mạng khác. Một minh họa về điều này được hiển thị ở đây khi Eve đã xâm phạm một hệ thống và đang sử dụng nó để quét và khám phá các hệ thống khác:

Chuyển động xoay bên

Chuyển động bên là hành động lợi dụng trục và khai thác hệ thống khác sử dụng trục. Hệ thống mới này hiện có thể được sử dụng nhiều hơn để thực hiện chuyển động xoay và chuyển động ngang hơn. Eve trong ví dụ này sử dụng Máy chủ X để khám phá thêm về Hệ thống B.

Chuyển động xoay bên



×

Liên hệ bán hàng

Nếu bạn muốn sử dụng dịch vụ của Example.com.vn với tư cách là một tổ chức giáo dục, nhóm hoặc doanh nghiệp, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Báo cáo lỗi

Nếu bạn muốn báo cáo lỗi hoặc nếu bạn muốn đưa ra đề xuất, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Example.com.vn được tối ưu hóa cho việc học tập và đào tạo. Các ví dụ có thể được đơn giản hóa để cải thiện khả năng đọc và học. Các hướng dẫn, tài liệu tham khảo và ví dụ liên tục được xem xét để tránh sai sót, nhưng chúng tôi không thể đảm bảo tính chính xác hoàn toàn của mọi nội dung. Khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng , chính sách cookie và quyền riêng tư của chúng tôi.

Bản quyền 1999-2024 của Refsnes Data. Đã đăng ký Bản quyền. Example.com.vn được cung cấp bởi W3.CSS .