CEO @CyStack
Các ứng dụng di động (Mobile app) đang dần trở thành một phần quan trọng của cuộc sống chúng ta tuy nhiên, quan điểm về bảo mật trong các ứng dụng di động vẫn chưa được người dùng hiểu rõ bởi vì chúng ta chưa biết cách thức mà các nhà phát triển đã phát triển ứng dụng và tiến hành pentest cho ứng dụng di động.
Việc tải xuống và sử dụng các ứng dụng dành cho thiết bị di động có thể gây ra nguy cơ bảo mật tiềm ẩn cho cả bạn và tổ chức của bạn nếu các ứng dụng dành cho thiết bị di động chưa được kiểm nghiệm các lỗi bảo mật, những lỗi này thậm chí có thể gây tổn hại cho dữ liệu của bạn. Theo đánh giá của Per Axar, hầu hết các ứng dụng di động và chăm sóc sức khoẻ đều chứa một số lỗ hổng bảo mật.

Để tránh nguy cơ bị có lỗ hổng bảo mật, có một giải pháp thiết yếu cho các nhà phát triển ứng dụng là tiến hành thử nghiệm thâm nhập các ứng dụng di động (Penetration testing mobile). Pentest cho ứng dụng di động có thể cung cấp cho chúng ta một số thông tin mật nhất định, tuy nhiên thử nghiệm này cũng đòi hỏi phải có các phương pháp tiếp cận và thiết lập thay thế khác hơn là việc sử dụng các ứng dụng web thông thường. Dưới đây là tám phương pháp hay nhất có thể giúp bạn chống lại hacker di động bằng thử nghiệm thâm nhập.
Chuẩn bị kế hoạch kiểm tra bảo mật
Thách thức đầu tiên của việc pentest cho ứng dụng di động là phải có một phương pháp chính xác: bản đồ dành cho OWASP iOS hiển thị tổng quan về các vectơ tấn công.

Bản đồ ở trên cho thấy các mặt tấn công quan trọng. Nó chứa các khu vực cụ thể được sử dụng để đánh giá. Có một kỹ thuật thiết yếu cho mỗi giai đoạn tấn công quan trọng:
- Lập bản đồ ứng dụng ⇒ Thu thập thông tin
- Các cuộc tấn công khách hàng ⇒ Phân tích hệ thời gian chạy, nhị phân và hệ thống tập tin
- Các cuộc tấn công mạng và máy chủ ⇒ Phân tích mạng và lưu trữ dữ liệu không an toàn
Cần có một bộ công cụ và kỹ năng cụ thể cho từng phần. Để biết được hệ điều hành đang bị tấn công, bạn phải xem xét kỹ loại ứng dụng di động, bởi vì mỗi máy tính có một vector tấn công khác nhau. Ví dụ, cần phân biệt rõ: một ứng dụng thuần chạy iOS sử dụng ngôn ngữ Objective-C hoặc Swift; trong khi đó, các ứng dụng chạy trên trình duyệt hoặc các ứng dụng lai áp dụng công nghệ của ứng dụng web truyền thống lại được xây dựng để chạy trên trình duyệt web của thiết bị.
Sự khác biệt chính trong phân tích các ứng dụng di động so với các ứng dụng web là nhị phân và phân tích hệ thống tập tin. Ở giai đoạn này, nó đòi hỏi kỹ năng đảo ngược kỹ thuật và sử dụng kỹ thuật gỡ lỗi.
Chuẩn bị môi trường để pentest cho ứng dụng di động
Chuẩn bị môi trường thử nghiệm là một giai đoạn khác của quá trình tiến hành pentest cho ứng dụng di động. Ứng dụng di động không giống với các ứng dụng web vì chúng không chạy trên tất cả các loại nền tảng và trình duyệt. Vì vậy, nó cần một môi trường thử nghiệm theo thiết bị cụ thể được cấu hình.
Đối với trường hợp thiết bị iOS, người kiểm tra nên sử dụng jailbreak evasi0n7 cho phép bạn xâm nhập vào thiết bị và truy cập root vào hệ điều hành thay vì phải jailbreak thiết bị và sau đó đưa ra mức bảo mật do Apple quy định. Ngoài ra, đối với các thiết bị Android, một người thử nghiệm sẽ sử dụng ứng dụng One Click Root cho Android để có thể root một thiết bị.
Xây dựng kho công cụ để thử nghiệm tấn công
Xây dựng kho công cụ để thử nghiệm tấn công là việc làm cần thiết để phân tích và thu thập thông tin mục đích khi thiết bị đã sẵn sàng để thử nghiệm thâm nhập. Cydia là một cửa hàng ứng dụng iOS dành cho các thiết bị đã được jailbreak, cho phép tải các công cụ hacking thiết yếu. Debuggers, Decryptersare và các công cụ khác lại giúp bạn hiểu được cơ chế ứng dụng.
Đối với các thiết bị Android, chúng ta có thể dùng Android Apotool và Android Reverse Engineering làm giả lập để tiến hành phân tích nhị phân. Hơn nữa, bạn còn có thể sử dụng rất nhiều công cụ như Burp Proxy, Android Proxy, OWASP ZAP, Wireshark và Tcpdump để phân tích mạng.
Chuẩn bị các trường hợp kiểm tra: Bản đồ áp dụng
Khi pentest cho ứng dụng di động, việc quan sát ứng dụng ở cấp chức năng và phân tích hành vi của nó là cần thiết. Phá bỏ tất cả các khuôn khổ và lưu ý những điều sau đây sẽ tạo ra một mô hình chính xác mà áp dụng cùng một nguyên tắc để tạo ra một bộ kiểm tra đáp ứng được giải thích trong hướng dẫn kiểm tra OWASP:
- Kiểm soát nhận dạng, chứng thực và kiểm soát truy cập => Chuỗi khóa, các cuộc tấn công brute-force, tham số giả mạo (parameter tampering)
- Nhập xác nhận và mã hóa => Đầu vào độc hại, fuzzing
- Mã hoá => Các trường mật khẩu cơ sở dữ liệu SQLite, mã hóa tập tin cấu hình
- Quản lý người dùng và phiên => ID phiên, khóa thời gian
- Lỗi và xử lý ngoại lệ
- Kiểm toán và đăng nhập => Nhật ký, kiểm soát truy cập vào các bản ghi.
Tấn công khách hàng: Phân tích tập tin nhị phân và tập tin
Trong pentest cho ứng dụng di động, người kiểm tra áp dụng phân tích nhị phân và tệp để phát hiện các cuộc gọi và tệp API không an toàn với quyền kiểm soát truy cập đầy đủ. Có một số công cụ để tìm các tập tin không an toàn như IDA Pro hoặc Hopper App có thể giúp gỡ lỗi và phân tích mã. Nhưng trong trường hợp này nó không nên dùng để loại bỏ lỗi Tràn bộ nhớ đệm.
Hơn nữa, kiểm tra viên sử dụng kiểm thử fuzzing ứng dụng hoặc áp dụng các kỹ thuật đầu vào độc hại để tìm ra lỗ hổng như kỹ thuật SQL injection. Hầu hết các kỹ thuật được sử dụng để tìm ra lỗ hổng trong các ứng dụng bản địa tương tự như pentest ứng dụng web, tuy nhiên, thay vì sử dụng một proxy để hiểu các hoạt động bên trong của ứng dụng, kiểm tra viên nên sử dụng phần mềm gỡ lỗi.
Thêm vào đó, một số kỹ thuật này liên quan đến các phương pháp thử nghiệm giống như trong hướng dẫn kiểm tra OWASP. Thay vì được hỗ trợ bằng cách sử dụng một proxy tấn công để chèn các đầu vào độc hại trong quá trình pentest ứng dụng web, quá trình pentest cho ứng dụng di động chỉ cần một công cụ như iOKit để hỗ trợ nó.
Để đánh giá các rủi ro liên quan đến việc lưu trữ dữ liệu trên iOS và Android, người kiểm tra áp dụng tính năng duyệt qua cơ sở dữ liệu bằng cách duyệt qua cơ sở dữ liệu SQLite để xác định cơ sở dữ liệu đó như thế nào. Nếu nó được mã hóa, cuối cùng bạn cần xác minh loại mã hóa được sử dụng trong các lĩnh vực dữ liệu nhạy cảm. Ngoài ra, nó sử dụng phân tích thích hợp vị trí lưu trữ của chuỗi khóa API và kiểm soát truy cập để kiểm tra tấn công khách hàng.
Các cuộc tấn công mạng: Cài đặt traffic, chạy lưu lượng truy cập
Đối với ứng dụng di động có tính năng kiến trúc tầng rõ ràng, người kiểm tra nên chú ý tới các cuộc tấn công mạng. Vì vậy, việc điều tra các cuộc tấn công mạng là nhằm nắm bắt lưu lượng mạng và tìm hiểu về sự bảo vệ lớp vận chuyển với sự hỗ trợ của các proxy tấn công như ZAP. Quá trình này cần đưa ra nhiều thử nghiệm hiệu quả hơn, như:
1. Xác thực (Authentication):
Có thể nhận ra các lỗ hổng có liên quan đến chứng thực bằng cách quan sát yêu cầu và phản hồi giữa máy khách và máy chủ. Nếu nó sử dụng xác thực HTTP cơ bản trong ứng dụng, thì nó có chứa rủi ro. Trong trường hợp này, xác thực nên được chuyển qua SSL.
2. Ủy quyền (Authorization):
Tham số giả mạo không thể bao gồm vai trò và kiểm soát truy cập giữa chúng. Ngoài ra, việc phân tích tập tin (ứng dụng gốc) hoặc thu thập thông tin ứng dụng (ứng dụng dựa trên nền tảng web) không thể bao gồm việc bảo vệ Khóa API đúng cách trong một thư mục không thể truy cập.
3. Quản lý phiên làm việc (Session management):
Mã số của Mã phiên được gửi qua các phương thức GET và được đặt trong URL có thể nhìn thấy trong quá trình cài đặt proxy cho ứng dụng hoặc theo dõi mạng.
Mã hóa yếu và các giao thức: Ứng dụng di động thường có lỗ hổng ở những khu vực này. Do đó, kiểm tra viên nên tạo danh mục cho các lỗ hổng không dây liên quan tới các giao thức mã hóa được thiết bị sử dụng.
Thử nghiệm xâm nhập máy chủ
Trong phần này, kiểm tra viên sử dụng công cụ Nmap và thử nghiệm thâm nhập khác để kiểm tra cơ sở hạ tầng, là máy chủ lưu trữ ứng dụng web di động, để lập bản đồ và tìm ra các lỗ hổng và mối đe dọa tiềm ẩn. Hơn nữa, khu vực thử nghiệm phải bao gồm việc tải lên tập tin ngẫu nhiên, chia sẻ tài nguyên có nguồn gốc chéo nhau (cross-origin resource sharing) hoặc chuyển hướng mở (open redirect) để đảm bảo giữ các mối đe dọa tiềm ẩn ở mức thấp nhất.
Một điểm quan tâm nữa là để ngăn chặn tiến hành các cuộc tấn công mà cố gắng để bỏ qua các cơ chế xác thực giữa khách hàng và máy chủ. Vì vậy, một người kiểm tra nên chú ý đến nó khi thực hiện một bài kiểm tra trên ứng dụng di động hoặc dựa trên web.
Trường hợp của Apple vào năm 2013 là một ví dụ tuyệt vời của cuộc tấn công phía máy chủ. Trường hợp là nó dễ dàng để tấn công tài khoản của Apple ID iCloud bằng cách đặt lại mật khẩu. Bởi vì nó chỉ đòi hỏi chỉ email và ngày sinh của chủ sở hữu. Việc kiểm soát ủy quyền yếu này là nguyên nhân chính gây ra vấn đề.
Tìm hiểu thêm về các lỗ hổng trong ứng dụng di động
Kiểm tra viên nên lưu ý rằng cách để tìm hiểu thêm về các lỗ hổng bảo mật xảy ra trong các ứng dụng di động là phải hiểu rằng các ứng dụng di động có lỗ hổng này được thiết kế ra với mục đích này ngay từ đầu. Do đó, có một số ứng dụng được có lỗ hổng được gợi ý mà các kiểm tra viên nên biết như:
- Dịch vụ Pentest by Whitehat-hacker của CyStack
- MobiSec
- Androick Project Page
Dịch vụ Pentest by Whitehat-hacker của CyStack sẽ cung cấp cho bạn gói dịch vụ với những lựa chọn ưu việt bao gồm thiết lập môi trường thử nghiệm, phân tích thời gian thực, và các báo cáo phân tích chi tiết. Các hacker mũ trắng đến từ CyStack sẽ là những người trực tiếp “hack” sản phẩm của bạn để phát hiện ra các lỗ hổng bảo mật cho ứng dụng.Từ đó giúp đưa ra báo cáo rõ ràng và đề xuất các hướng khắc phục.