Nghiên Cứu Phương Pháp Vượt Qua SSL Pinning Trên Ứng Dụng Di Động Sử Dụng Flutter

Nghiên cứu phương pháp vượt qua SSL pinning trên ứng dụng di động sử dụng Flutter framework, giúp cải thiện bảo mật và phát triển ứng dụng.

Chuyên ngành

An toàn thông tin

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2024

59
4
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CÁM ƠN

LỜI CAM ĐOAN

1. CHƯƠNG 1: FLUTTER TRONG LẬP TRÌNH ỨNG DỤNG DI ĐỘNG

1.1. Ngôn Ngữ Lập Trình Dart

1.2. Lịch sử hình thành và phát triển của ngôn ngữ lập trình Dart

1.3. Công nghệ Flutter trong lập trình app mobile

1.3.1. Giới thiệu Flutter

1.3.2. Đa nền tảng và Mô hình "One Framework"

1.3.3. Kiến trúc Flutter

2. CHƯƠNG 2: KỸ THUẬT SSL PINNING

2.1. Giới Thiệu Về SSL Pinning

2.2. SSL Pinning trong các ứng dụng

3. CHƯƠNG 3: VƯỢT QUA SSL PINNING TRÊN ỨNG DỤNG DI ĐỘNG

3.1. Mục đích vượt qua SSL pinning

3.2. Phương pháp vượt qua SSL pinning trên các ứng dụng di động Android

3.2.1. Cơ chế thực hiện

3.2.2. Những thiết bị và công cụ cần chuẩn bị

3.2.3. Quy trình thực hiện vượt qua SSL pinning

3.2.4. Vượt qua SSL Pinning trên app mobile Android sử dụng Flutter

3.2.4.1. Các vấn đề gặp phải
3.2.4.2. Đề xuất phương án giải quyết

3.2.5. Phân tích phương án giải quyết

3.2.6. Phương pháp luận vượt qua SSL pinning

4. CHƯƠNG 4: HƯỚNG DẪN VƯỢT QUA SSL PINNING TRÊN ỨNG DỤNG DI ĐỘNG

4.1. Thực hiện cài đặt các công cụ cần thiết

4.2. Đẩy certificate của Burp Suite vào ứng dụng di động

4.3. Xác định địa chỉ của hàm ssl_crypto_x509_session_verify_cert_chain và chỉnh sửa script

4.4. Chèn Script và vượt qua SSL pinning

4.5. Giám sát được các yêu cầu từ emulator

4.6. Kết chương

DANH MỤC TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng quan về SSL Pinning và ứng dụng di động Flutter

Bảo mật ứng dụng di động ngày càng trở nên quan trọng trong thời đại số. SSL pinning là một kỹ thuật bảo mật giúp ngăn chặn các cuộc tấn công man-in-the-middle. Kỹ thuật này đảm bảo rằng ứng dụng chỉ chấp nhận chứng chỉ SSL từ máy chủ đã được xác thực. Tuy nhiên, việc triển khai SSL pinning trên các ứng dụng di động sử dụng Flutter gặp nhiều thách thức. Bài viết này sẽ phân tích các phương pháp vượt qua SSL pinning để đảm bảo an toàn cho thông tin người dùng.

1.1. Khái niệm và tầm quan trọng của SSL Pinning

SSL pinning là một biện pháp bảo mật quan trọng giúp bảo vệ thông tin người dùng khỏi các cuộc tấn công. Kỹ thuật này giúp xác thực chứng chỉ SSL của máy chủ, ngăn chặn việc sử dụng chứng chỉ giả mạo. Việc hiểu rõ về SSL pinning là cần thiết để phát triển ứng dụng an toàn.

1.2. Flutter và vai trò trong phát triển ứng dụng di động

Flutter là một framework mạnh mẽ cho phát triển ứng dụng di động. Với khả năng hỗ trợ đa nền tảng, Flutter giúp lập trình viên xây dựng ứng dụng một cách nhanh chóng và hiệu quả. Tuy nhiên, việc bảo mật ứng dụng Flutter cũng cần được chú trọng, đặc biệt là khi sử dụng SSL pinning.

II. Thách thức khi triển khai SSL Pinning trên ứng dụng Flutter

Mặc dù SSL pinning mang lại nhiều lợi ích, nhưng việc triển khai nó trên ứng dụng Flutter không hề đơn giản. Các lập trình viên thường gặp phải nhiều vấn đề như khó khăn trong việc xác thực chứng chỉ và khả năng tương thích với các thư viện bên ngoài. Những thách thức này cần được giải quyết để đảm bảo an toàn cho ứng dụng.

2.1. Những vấn đề thường gặp khi sử dụng SSL Pinning

Khi triển khai SSL pinning, lập trình viên có thể gặp phải các vấn đề như lỗi xác thực chứng chỉ, khó khăn trong việc cập nhật chứng chỉ và khả năng tương thích với các API. Những vấn đề này có thể ảnh hưởng đến trải nghiệm người dùng và tính bảo mật của ứng dụng.

2.2. Tác động của SSL Pinning đến quá trình kiểm thử

Việc sử dụng SSL pinning có thể làm phức tạp quá trình kiểm thử ứng dụng. Các chuyên gia bảo mật cần phải tìm ra cách vượt qua lớp bảo vệ này để thực hiện kiểm thử xâm nhập hiệu quả. Điều này đòi hỏi kiến thức sâu rộng về kỹ thuật và công cụ hỗ trợ.

III. Phương pháp vượt qua SSL Pinning trên ứng dụng di động

Để đánh giá an toàn cho ứng dụng, các chuyên gia bảo mật cần có các phương pháp hiệu quả để vượt qua SSL pinning. Các phương pháp này bao gồm việc sử dụng các công cụ như Burp Suite và kỹ thuật chỉnh sửa mã nguồn. Việc hiểu rõ các phương pháp này sẽ giúp nâng cao khả năng bảo mật cho ứng dụng.

3.1. Sử dụng Burp Suite để vượt qua SSL Pinning

Burp Suite là một công cụ mạnh mẽ giúp kiểm thử bảo mật ứng dụng. Bằng cách cấu hình Burp Suite để chặn và phân tích lưu lượng mạng, lập trình viên có thể vượt qua SSL pinning và kiểm tra tính bảo mật của ứng dụng một cách hiệu quả.

3.2. Kỹ thuật chỉnh sửa mã nguồn để vượt qua SSL Pinning

Chỉnh sửa mã nguồn là một phương pháp khác để vượt qua SSL pinning. Bằng cách thay đổi các hàm xác thực chứng chỉ trong mã nguồn, lập trình viên có thể cho phép ứng dụng chấp nhận chứng chỉ không hợp lệ. Tuy nhiên, phương pháp này cần được thực hiện cẩn thận để không làm giảm tính bảo mật.

IV. Ứng dụng thực tiễn và kết quả nghiên cứu

Nghiên cứu về phương pháp vượt qua SSL pinning trên ứng dụng di động sử dụng Flutter đã chỉ ra rằng việc áp dụng các kỹ thuật này có thể giúp cải thiện khả năng bảo mật. Các kết quả cho thấy rằng việc vượt qua SSL pinning không chỉ giúp kiểm thử an toàn mà còn nâng cao nhận thức về bảo mật trong phát triển ứng dụng.

4.1. Kết quả từ các thử nghiệm thực tế

Các thử nghiệm thực tế cho thấy rằng việc áp dụng các phương pháp vượt qua SSL pinning đã giúp phát hiện nhiều lỗ hổng bảo mật trong ứng dụng. Điều này cho thấy tầm quan trọng của việc kiểm thử bảo mật trong quá trình phát triển ứng dụng.

4.2. Ứng dụng của nghiên cứu trong thực tiễn

Nghiên cứu này có thể được áp dụng trong thực tiễn để nâng cao khả năng bảo mật cho các ứng dụng di động. Các lập trình viên có thể sử dụng các phương pháp đã được đề xuất để đảm bảo rằng ứng dụng của họ an toàn trước các cuộc tấn công.

V. Kết luận và hướng phát triển trong tương lai

Việc nghiên cứu và phát triển các phương pháp vượt qua SSL pinning trên ứng dụng di động sử dụng Flutter là rất cần thiết. Điều này không chỉ giúp nâng cao khả năng bảo mật mà còn tạo ra một môi trường phát triển an toàn hơn cho các lập trình viên. Hướng phát triển trong tương lai cần tập trung vào việc cải thiện các kỹ thuật bảo mật và nâng cao nhận thức về bảo mật trong cộng đồng lập trình.

5.1. Tương lai của SSL Pinning trong bảo mật ứng dụng

SSL pinning sẽ tiếp tục đóng vai trò quan trọng trong bảo mật ứng dụng di động. Các công nghệ mới sẽ được phát triển để cải thiện khả năng bảo mật và giảm thiểu rủi ro từ các cuộc tấn công.

5.2. Khuyến nghị cho các lập trình viên

Các lập trình viên nên thường xuyên cập nhật kiến thức về bảo mật và áp dụng các phương pháp bảo vệ mới nhất. Việc này không chỉ giúp bảo vệ ứng dụng mà còn nâng cao uy tín của lập trình viên trong ngành công nghiệp.

11/07/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. FLUTTER TRONG LẬP TRÌNH ỨNG DỤNG DI ĐỘNG 1.1 Ngôn Ngữ Lập Trinh Dart Dart là ngôn ngữ lập trình nên ứng dụng Flutter. Đây cũng là nguyên nhân tạo nên sự khác biệt và vượt trội của Flutter so với các ứng dụng di động khác 1.1 Lịch sử hình thành và phát triển của ngôn ngữ lập trình Dart Ngôn ngữ Dart là một ngôn ngữ lập trình được phát triển bởi Google, được thiết kế dé xây dựng các ứng dụng web, mobile va máy tính. Tháng 10 năm 2011 Dart được công bó lần đầu tiên tại sự kiện GOTO Conference ở Aarhus, Đan Mạch.

Mục tiêu của Dart là giải quyết những hạn chế của JavaScript và cung cấp một ngôn ngữ hiện đại, an toàn và nhanh chóng cho việc phát triển ứng dụng web. Sau 1 tháng, ngôn ngữ Dart 1.0 được phát hành, đưa ngôn ngữ này từ giai đoạn thử nghiệm sang một phiên bản ồn định. Năm 2013, Google Chrome trở thành trình duyệt đầu tiên hỗ trợ chính thức Dart VM (Virtual Machine), cho phép chạy mã Dart trực tiếp trên trình duyệt.0 SDK (Software Development Kit) được phát hành. Điều này là một bước quan trọng dé cung cấp công cụ và tài liệu cho các nhà phát triển Dart.5 được phát hành với hỗ trợ cho Flutter, một framework dé xay dựng ứng dung di động va web đa nền tảng.

Day là một dau mốc quan trong đánh dau cho sự phô biến của Flutter hiện nay. Hiện tại, Dart tiếp tục phát triển và được sử dụng rộng rãi trong cộng đồng phát triển đa nền tảng, đặc biệt là khi tích hợp với Flutter dé xây dựng ứng dụng di động và web.2 Ngôn ngữ lap trình Dart 1. Co bản về ngôn ngữ lập trình Dart Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và sau đó được Ecma (ECMA-408) dùng làm tiêu chuẩn. Dart được sử dụng để xây dựng các ứng dụng web, desktop (Windows, MacOS) và thiết bị di động (Android, iOS).

Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected, sử dụng cú pháp giống với ngôn ngữ lập trình C dé dich mã tùy ý sang JavaScript. Nó hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe). Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub. [2] VŨ LAN PHƯƠNG - D19CQAT02-B Đồ án tốt nghiệp Ngôn ngữ lập trình Dart là một ngôn ngữ hiện dai được thiết kế chủ yêu dé phát triển ứng dụng web, đi động và máy tính.

Dart là một ngôn ngữ hướng đối tượng (OOP). Nó hỗ trợ các khái niệm cơ bản của lập trình hướng đối tượng như class, object, inheritance, va encapsulation. Dart là một ngôn ngữ kiểu tinh (statically typed), cần khai báo kiểu dữ liệu của biến trước khi sử dụng và kiểm tra kiểu tại thời điểm biên dịch. Dart thường được sử dụng chủ yếu trong ngữ cảnh của Flutter, một framework phô biến để xây dựng giao diện người dùng đa nền tảng.

Flutter sử dụng Dart làm ngôn ngữ chính đề viết mã nguồn ứng dụng di động và web. Cú pháp của Dart tương đối đơn giản và dễ đọc, giống với nhiều ngôn ngữ lập trình khác như JavaScript hoặc Java. Điều này giúp người phát triển mới tiếp cận ngôn ngữ một cách nhanh chóng. Dart có khả năng chạy trên nhiều nền tảng khác nhau, bao gồm di động, web và desktop, giúp tối ưu hóa quá trình phát triển ứng dụng đa nên tảng.

Dart Platform Công nghệ biên dịch linh hoạt cua Dart cho phép lập trình viên thực thi ma Dart theo nhiêu cách khác nhau, tùy thuộc vào nên tảng và mục tiêu cụ thê, bao gôm: Stateful hot reload EB: ono OO Ff ARM32 ARM64 x86_64 JavaScript Dart Native Dart Web Hinh 1.1 Dart da nén tang 1. Native platform (nền tang tự nhiên) Trong quá trình phát triển, chu kỳ phat triển nhanh là yếu tố quan trong dé có khả năng thử nghiệm nhanh chóng. DartVM cung cấp một trình biên dịch ngay lập tức VŨ LAN PHƯƠNG - DI9CQAT02-B 13 Đồ án tốt nghiệp (just-in-time - JIT) với khả năng biên dịch giai đoạn (cho phép hot reload), thu thập sô liệu trực tuyến (dé hỗ trợ DevTools), và hỗ trợ gỡ lỗi phong phú. Khi ứng dụng sẵn sàng triển khai vào sản xuất - cho dù đang xuất bản vào cửa hàng ứng dụng hay triển khai backend - trình biên dịch trước thời điểm (ahead-of-time - AOT) của Dart có thé biên dịch thành mã máy native ARM hoặc x64.

Ứng dụng được biên dich AOT khởi chạy với thời gian khởi động ngăn và đồng nhất. Mã được biên dịch AOT chạy bên trong một runtime Dart hiệu quả, tuân theo hệ thống kiểu Dart sound và quản lý bộ nhớ bằng cách sử dụng cơ chế phân phối đối tượng nhanh chóng và bộ thu gom rác theo thế hệ. Web platform (nền tang web) Dart Web cho phép chạy mã Dart trên các nền tảng web duoc hỗ trợ bởi JavaScript. Với Dart Web, lập trình viên biên dịch mã Dart thành mã JavaScript, sau đó chạy mã đó trong trình duyệt, vi dụ như V8 trong Chrome.

Dart Web bao gồm hai chế độ biên dich: Trình biên dich phát triển tăng cường (incremental) cho phép chu kỳ phát triển nhanh chóng và Trình biên dịch tối ưu hóa sản xuất biên dịch mã Dart thành mã JavaScript nhanh, gọn và có thê triển khai.2 Công nghệ Flutter trong lập trình app mobile 1.1 Giới thiệu Flutter Flutter là một SDK phát triển ứng dụng di động nguồn mở được phát triển bởi Google. Nó được sử dụng dé phát triển ứng ứng dụng cho Android va iOS, cũng là phương thức chính dé phát triển ứng dụng cho Google Fuchsia. Phiên bản đầu tiên của Flutter được gọi là "Sky" và chạy trên hệ điều hành Android. Flutter được phát triển bởi một nhóm tại Google, được dẫn đầu bởi Kasper Lund và Erik Ernst, được ccông bồ tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thé kết xuất ôn định ở mức 120 khung hình trên giây.

Trong bài phát biểu chính ở hội nghị Google Developer Days tại Thượng Hai, Google công bố phiên bản Flutter Release Preview 2, đây là phiên bản lớn cuối cùng trước Flutter 1. Lúc nay, Flutter chủ yếu tập trung vào ứng dụng di động, đặc biệt là iOS va Android. Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã được phát hành tại sự kiện Flutter Live, là phiên ban Beta release đầu tiên của framework này. Sự xuất hiện của các tính năng mới và sự 6n định của framework đã thu hút sự chú ý của cộng đồng phát trién.

Tháng 12 cùng năm đó đánh dấu bước đột phá quan trọng khi Flutter trở thành một framework ôn định và chính thức, hỗ trợ đa nền tảng và kha năng hot reload giúp tăng cường trải nghiệm phat trién. VŨ LAN PHƯƠNG - D19CQAT02-B Đồ án tốt nghiệp Năm 2019 — 2020, Flutter mở rộng hỗ trợ cho nhiêu nên tảng hơn, bao gom web va desktop (Windows, macOS, Linux). Cộng đồng Flutter phát triển nhanh chóng với sự tham gia của nhiều công ty và nhà phát triển.0 được phát hành với nhiều cải tiến đáng kể. Trong đó, đặc biệt phải ké tới Null safety, một tính năng quan trọng, được giới thiệu dé cải thiện an toàn và sự 6n định trong mã nguồn Flutter.

[4] Cho tới hiện tại, Flutter trở thành một trong những framework phổ biến nhất cho phát triển ứng dụng di động và đa nền tảng. Flutter đã phát triển nhanh chóng và trở thành một lựa chọn quan trọng cho các nhà phát triển khi xây dựng ứng dụng di động. Sự liên tục cập nhật và cải tiễn đã giúp Flutter đáp ứng được nhu cầu ngày càng tăng của cộng đồng phát triển.2 Da nền tảng và Mô hình "One Framework" Flutter được thiết kế dé hỗ trợ phát triển ứng dụng trên nhiều nền tảng khác nhau, bao gồm di động (Android, iOS), web và máy tính desktop (Windows, macOS, Linux). Khả năng này giúp nhà phát triển giảm thiểu sự phức tạp của việc duy trì và phát triển nhiều mã nguồn cho từng nên tang riêng biệt.

Mô hình "One Framework" là mô hình sử dụng cùng một framework dé xây dựng ứng dụng trên tất cả các nền tảng. Nhà phát triển có thể viết mã nguồn một lần (write once) và chạy ứng dụng trên mọi nên tảng mà không cân sửa đôi đáng kê. Mô hình "One Framework" giúp đảm bảo rằng hiệu suất của ứng dụng không giảm đi khi chuyển đổi giữa các nền tảng. Điều này có ý nghĩa đặc biệt quan trọng khi triển khai ứng dụng trên nhiều thiết bị.

Việc đồng bộ hóa phát triển giữa các nhóm làm việc trên các nền tảng khác nhau trở nên dé dang hơn, giúp tăng cường hiệu suất làm việc và giảm thiêu lỗi. Đồng thời, Flutter cung cấp một loạt các tính năng và widget đồng nhất trên tất cả các nền tảng, bao gồm cả giao diện người dùng và tương tác. Điều này giúp duy trì một trải nghiệm đồng nhất cho người dùng cuối trên mọi thiết bị. Mô hình "One Framework" trong Flutter là một ưu điểm quan trọng giúp tối ưu hóa quy trình phát triển và đảm bao rang ứng dụng có khả năng chạy mượt mà và hiệu quả trên nhiêu nên tảng khác nhau.3 Kiến trúc Flutter Flutter là một framework dành cho việc lập trình di động Cross-Platform, nó giúp các lập trình viên có thé tạo ra các ứng dụng chạy trên nhiều nền tảng như Web, Android, iOS (hiện tai va dự định tương lai Flutter còn có thể build được ứng dụng chạy trên cả Window, MacOS và Linux nữa).

Flutter cho phép các nhà phát triển tối VŨ LAN PHƯƠNG - D19CQAT02-B 15 Đồ án tốt nghiệp ưu các ứng dụng hiệu suât cao mang lại cảm giác tự nhiên trên các nên tảng khác nhau, năm bắt những khác biệt nơi chúng tôn tại trong khi chia sẻ với tư cách nhiêu mã nhât có thê. Flutter được thiết kế như một hệ thống linh hoạt, có cấu trúc lớp. Nó ton tại dưới dạng một loạt các thư viện độc lập mà mỗi thư viện phụ thuộc vào lớp dưới. Không có lớp nào có quyền truy cập đặc quyền vào lớp phía dưới, và mọi phần của cấp độ framework được thiết kế đề có thể thay thế và tuỳ chọn.

Fram Dart rk Material Cupertino Widgets Rendering Animation Painting Gestures Foundation Engine C/C++ Service Protocol Composition Platform Channels Dart Runtime Mgmt Frame Scheduling Embedder : : Platform-specific Render Surface Setup Native Plugins App Packaging Thread Setup Event Loop Interop Hình 1.2 Mô hình kiến trúc của Flutter Đối với hệ điều hành cơ bản, các ứng dụng Flutter được đóng gói trong giống như những ứng dụng native khác. Một Embedder cụ thể cho từng nền tảng cung cấp một điểm nhập; tương tác với hệ điều hành cơ bản đề truy cập các dịch vụ như bề mặt vẽ, khả năng tiếp cận, và đầu vào; và quản lý vòng sự kiện thông điệp.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu "Nghiên Cứu Phương Pháp Vượt Qua SSL Pinning Trên Ứng Dụng Di Động Sử Dụng Flutter" cung cấp cái nhìn sâu sắc về các phương pháp tấn công SSL pinning, một kỹ thuật bảo mật quan trọng trong các ứng dụng di động. Tác giả phân tích các lỗ hổng có thể xảy ra và cách thức mà các hacker có thể khai thác chúng, đồng thời đưa ra các giải pháp để bảo vệ ứng dụng khỏi những mối đe dọa này. Độc giả sẽ tìm thấy những thông tin hữu ích về cách thức hoạt động của SSL pinning và tầm quan trọng của nó trong việc bảo vệ dữ liệu người dùng.

Để mở rộng kiến thức về bảo mật ứng dụng, bạn có thể tham khảo tài liệu Tìm hiểu cơ chế bảo mật của ứng dụng telegram luận văn thạc sĩ, nơi cung cấp cái nhìn tổng quan về các cơ chế bảo mật trong ứng dụng Telegram. Ngoài ra, tài liệu Luận văn phân tích mức độ an toàn của ứng dụng android dựa trên học máy sẽ giúp bạn hiểu rõ hơn về an toàn ứng dụng Android và cách học máy có thể được áp dụng để nâng cao bảo mật. Những tài liệu này không chỉ bổ sung cho nội dung của nghiên cứu mà còn mở ra nhiều khía cạnh mới để bạn khám phá thêm.