Penetration Testing cho các ứng dụng Cloud-based
Hầu hết các ứng dụng hiện nay đều là cloud-base application. Ứng dụng chạy trên Cloud hiện đang rất phổ biến vì những ưu điểm của nó như giảm thiểu chi phí, dễ dàng update, có thể truy cập từ xa, dễ dàng recover...Tuy nhiên dịch vụ về security cũng cần được cung cấp. Tôi cũng đồng tình rằng ...
Hầu hết các ứng dụng hiện nay đều là cloud-base application. Ứng dụng chạy trên Cloud hiện đang rất phổ biến vì những ưu điểm của nó như giảm thiểu chi phí, dễ dàng update, có thể truy cập từ xa, dễ dàng recover...Tuy nhiên dịch vụ về security cũng cần được cung cấp. Tôi cũng đồng tình rằng security trên các ứng dụng chạy trên cloud luôn cần được đảm bảo. Tiến hành thực hiện Penetration testing trên các ứng dụng Cloud cần được thực hiện một cách cẩn thận.
Là hình thức kiểm tra hệ thống của bạn có thể bị tấn công hay không bằng cách giả lập các vụ tấn công thử nghiệm. Có thể hiểu một cách đơn giản Penetration Testing (Pen test) chính là đánh giá độ an toàn bằng cách tấn công vào hệ thống. Có 3 phương pháp để kiểm thử Penetration đó là :
- Hộp đen (Black box): Tấn công từ ngoài vào (black box Pen Test): các cuộc tấn công được thực hiện mà không có bất kỳ thông tin nào, pentester sẽ đặt mình vào vị trí của hacker mũ đen và cố gắng bằng mọi cách để thâm nhập vào được mạng nội, ngoại của khách hàng
- Hộp trắng (White box): Tấn công từ trong ra (white box Pen Test): thực hiện khi có các thông tin về mạng nội bộ và ngoại sẽ được cung cấp bởi khách hàng và Pentester sẽ đánh giá an ninh mạng dựa trên đó.
- Hộp xám (Gray box): Kiểm định hộp xám (Gray-box hay Crystal-box): Giả định như hacker được cung cấp tài khoản một người dùng thông thường và tiến hành tấn công vào hệ thống như một nhân viên của doanh nghiệp
SaaS (Software as a service)
Trong service này, khách hàng có thể truy cập vào dịch vụ cung cấp đã được thiết lập sẵn sàng trên server mà không cần phải quan tâm đến cài đặt, lập trình, đường dẫn. Khách hàng có thể truy cập dịch vụ từ browser mà không cần phải download hay cài đặt. Mọi thứ đều có thể được cung cấp qua Cloud service, chỉ có một điều duy nhất khách hàng cần làm đó là trả phí cho việc sử dụng. Hotmail và gmail là hai ví dụ về SaaS
PaaS (Platform as a service)
Trong dịch vụ này, khách hàng sẽ được cung cấp một nền tảng về phần mềm có thể được phát triển và triển khai một cách dễ dàng. Các nền tảng bao gồm hệ điều hành, cơ sở dữ liệu cài đặt sẵn, máy chủ web, phần cứng và cơ sở hạ tầng mạng được chăm sóc bởi các nhà cung cấp dịch vụ, do đó khách hàng chỉ cần quan tâm về business và phát triển. Vì vậy, hầu hết các tổ chức thích PaaS để tránh đầu tư vào các tài nguyên phần cứng. Khách hàng chỉ cần trả tiền cho nền tảng và các tài nguyên đã được chọn. Một lần nữa các dịch vụ của Microsoft Azure là phổ biến nhất và được sử dụng rộng rãi.
IaaS (Infrastructure as a service)
Trong dịch vụ này, khách hàng sẽ được cung cấp cơ sở hạ tầng cần thiết như máy ảo, WAF, cân bằng tải, VLAN. Nó giống như bản build của riêng bạn với các nguồn được cung cấp bởi các nhà cung cấp dịch vụ Cloud. Điều này hữu ích trong việc giảm chi phí, bảo trì. Khách hàng chỉ cần trả tiền cho các nguồn lực mà họ tận dụng. Các khách hàng IaaS có quyền kiểm soát cơ sở hạ tầng nhiều hơn các khách hàng của PaaS hoặc các dịch vụ SaaS. Nhưng điều này đòi hỏi nhiều kiến thức về kỹ thuật. Có khá nhiều nhà cung cấp IaaS, phổ biến hơn cả là Amazon Web Services, Microsoft Azure, Rackspace.
Ngoài các mô hình này bạn cần phải biết Public, Private Cloud Hosting là gì. Public cloud hosting, ở đây các nhà cung cấp dịch vụ sử dụng Internet để cung cấp tài nguyên có sẵn nhưng bạn cần phải trả tiền cho việc sử dụng. Đây là những thứ không tốn kém vì phần cứng, chi phí băng thông được bao phủ bởi chính nhà cung cấp. Bất lợi lớn nhất là máy chủ của bạn ở một quốc gia khác được điều chỉnh với các chính sách bảo mật khác nhau. với Private cloud hosting các nhà cung cấp dịch vụ đảm bảo security , máy chủ web có thể được bảo vệ bằng tường lửa. So với Public cloud ,Private cloud được bảo vệ hơn nhưng chi phí cao hơn.
Bạn có thể tự hỏi có thể thực hiện Penestration testing mà không có sự đồng ý của các nhà cung cấp dịch vụ đám mây. Hơn nữa, họ sẽ coi đây là Hacking. khi bạn đang thử nghiệm, bạn có thể gửi quá nhiều yêu cầu tới máy chủ có thể được coi là tấn công từ chối dịch vụ. Đó là lý do bạn cần một sự thừa nhận từ các nhà cung cấp dịch vụ để bắt đầu pentesting.
Để kiểm tra các ứng dụng trong các mô hình IaaS / PaaS, bạn nên biết các ứng dụng và công nghệ khác và bạn cũng cần có quyền truy cập vào tất cả các máy chủ, bao gồm cơ sở dữ liệu để thực hiện kiểm tra thâm nhập nội bộ. Sau đó, bạn có thể bắt đầu với chức năng quét xác thực, thẩm định thử nghiệm vv .. Lý do chính đằng sau việc kiểm tra này là, bạn cần biết kẻ đột nhập có thể làm gì khi anh ta đã vào mạng. Đó là cách bạn có thể phân tích mức độ an toàn. Bạn không thể thực hiện kiểm tra thâm nhập bên ngoài (bên ngoài mạng) trừ khi bạn nhận được sự chấp thuận từ các nhà cung cấp. Mặc dù nó không có hiệu quả vì nhiều nhà cung cấp dịch vụ sử dụng tường lửa, WAF, Honeypots, IDS, IPS để ngăn chặn việc quét, từ chối dịch vụ và các cuộc tấn công khác.
Step 1: Tìm hiểu các chính sách, quy định của nhà cung cấp dịch vụ cloud
Trong nhiều trường hợp, bạn phải thông báo cho nhà cung cấp rằng bạn đang thực hiện kiểm thử, và nó đặt ra những hạn chế về những gì bạn thực sự có thể làm trong quá trình pen testing. Vì vậy, nếu bạn có một ứng dụng chạy trên public cloud và muốn thử nghiệm nó, bạn cần phải thực hiện một số nghiên cứu trước về quy trình mà nhà cung cấp dịch vụ của bạn đề xuất. Tất cả các nhà cung cấp dịch vụ chủ động giám sát cơ sở hạ tầng của họ đối với các dị thường. Trong một số trường hợp, con người có thể cho bạn một cuộc gọi để tìm hiểu những gì đang xảy ra. Trong hầu hết các trường hợp, các nhà cung cấp dịch vụ có các thủ tục tự động tại chỗ để tắt hệ thống mà không có cảnh báo khi nhận thấy một cuộc tấn công DDoS. Bạn có thể vào văn phòng vào ngày hôm sau và thấy rằng các hệ thống lưu trữ, cơ sở dữ liệu và ứng dụng được cung cấp trên cloud của bạn đang ngoại tuyến và bạn sẽ có một số giải thích để làm cho chúng sao lưu và chạy. Một vấn đề khác là pen testing của bạn có thể mất rất nhiều tài nguyên mà nó ảnh hưởng đến những người khác trên cloud. Nếu pen testing của bạn làm bão hòa hệ thống, bạn có thể nhận được cuộc gọi giận dữ từ nhà cung cấp dịch vụ của bạn yêu cầu bạn gỡ nó đi, hoặc một lần nữa là tắt tài khoản của bạn. Bạn phải hiểu các yêu cầu pháp lý của việc pen testing, cũng như các chính sách và thủ tục, hoặc nếu không bạn sẽ nhanh chóng tự thấy mình bị kích khỏi hệ thống cloud.
Step 2: Tạo pen-testing plan
Những người có kế hoạch thực hiện pen testing đầu tiên cần tạo một kế hoạch pen testing. Các hạng mục được đề cập trong kế hoạch bao gồm:
- Application (s): Xác định và bao gồm các giao diện người dùng và các API.
- Data access: Xác định cách dữ liệu sẽ được pen testing thông qua ứng dụng hoặc trực tiếp vào cơ sở dữ liệu.
- Network access: Xác định mức độ bảo mật của mạng đối với ứng dụng và dữ liệu.
- Virtualization: Xác định hoạt động các máy ảo khi để cô lập
- Compliance: Xác định các luật và quy định bạn cần tuân thủ trong ứng dụng hoặc cơ sở dữ liệu.
- Automation: Xác định các công cụ pen testing tự động (dựa trên cloud hoặc không) sẽ được sử dụng để pen testing.
- Approach: Xác định ứng dụng quản trị viên để bao gồm hoặc loại trừ trong pen testing. Kế hoạch kiểm tra cần phải được các bên liên quan chấp thuận, và mỗi phần của kế hoạch phải được tuân thủ. Bất kỳ trường hợp ngoại lệ nào xảy ra thực sự là một phần của kết quả, chẳng hạn như quản trị viên ứng dụng thấy rằng việc pen testing xảy ra và vô hiệu hóa quyền truy cập của nhóm.
Step 3: Lựa chọn pen-testing tools
Có rất nhiều công cụ pen testing, các công cụ pen testing dựa trên cloud có thể mang lại hiệu quả về chi phí hơn. Điều quan trọng đối với công cụ này là nó có thể mô phỏng một cuộc tấn công thực sự. Nhiều hacker sử dụng các quy trình tự động để tìm các lỗ hổng, chẳng hạn như đoán mật khẩu liên tục hoặc tìm kiếm các API cung cấp truy cập trực tiếp vào dữ liệu. Có thể là các công cụ pen testing của bạn không thể đáp ứng yêu cầu của bạn. Nếu bạn gặp vấn đề này, bạn có thể tự xây dựng hệ thống của riêng bạn để pen testing. Điều này cần tránh nếu có thể, bởi vì bạn sẽ chịu trách nhiệm duy trì hệ thống đó, sẽ tốn kém nhiều hơn nếu bạn sử dụng công cụ hiện có.
Step 4: Quan sát phản hồi
Khi thực hiện (các) pen testing, hãy tìm những điều sau: Human response: cách mà nhóm quản trị ứng dụng và người dùng ứng dụng phản ứng lại với pen testing. Nếu việc kiểm thử không được tiết lộ, các phản hồi sẽ được phản ánh nhiều hơn. Nhiều người có thể phản ứng bằng cách tắt hệ thống, trong khi những người khác có thể chẩn đoán vấn đề đầu tiên, trước khi xác định và nâng mối đe dọa. Automated response: làm thế nào các hệ thống an ninh chính nó có thể phát hiện và đáp ứng các bài pen testing. Phản hồi nên được phân lớp, từ đơn giản là chặn một địa chỉ IP tạo ra pen testing để tắt ứng dụng hoàn toàn. Trong bất kỳ trường hợp nào, quản trị viên an ninh và ứng dụng cũng phải được thông báo, và mô tả nên được gửi về Cả Human response và Automated response nên được ghi lại. Đây là nơi bạn sẽ tìm thấy bất kỳ lỗi hổng nào trong hệ thống và việc con người phản ứng lại mối đe doạ này, và do đó biết được hệ thống được đảm bảo tốt như thế nào.
Step 5: Tìm và loại bỏ các lỗ hổng
Mặc dù đây là một bước rõ ràng, kết quả của toàn bộ quá trình kiểm thử này là một danh sách các lỗ hổng được phát hiện bởi pen testing. Nếu không có gì, việc kiểm thử của bạn có thể không hiệu quả như mong muốn và bạn có thể muốn đánh giá lại và thử lại. Các lỗ hổng được tìm thấy trong khi các cloud-base application trên máy tính thường là:
- Truy cập dữ liệu ứng dụng cho phép sử dụng API xxxxx.
- Quyền truy cập API được cấp sau 10 lần thử.
- VM không cô lập khối lượng công việc đúng cách.
- Mật khẩu ứng dụng dự đoán bằng cách sử dụng máy phát mật khẩu tự động.
- VPN cho phép truy cập bên ngoài nếu DNS bị tắt.
- Mã hóa không phù hợp với quy định mới.
- Các vấn đề khác. Tất nhiên, các loại sự cố bạn sẽ tìm thấy sẽ khác nhau, tùy thuộc vào loại ứng dụng và loại pen testing bạn chạy. Ngoài ra, hãy ghi nhớ rằng có nhiều lớp khác nhau. Ứng dụng, mạng, cơ sở dữ liệu, hệ thống lưu trữ, v.v ... nên được kiểm tra riêng rẽ và các vấn đề nên được báo cáo riêng. Báo cáo những gì xảy ra ở mỗi lớp, một cách toàn diện; Đó là một cách thực hành tốt nhất.
Nguồn: https://techbeacon.com/pen-testing-cloud-based-apps-step-step-guide https://seleniumbycharan.wordpress.com/2016/12/04/cloud-based-applications-penetration-testing/#more-1460