BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
BÁO CÁO
ĐÁNH GIÁ AN TỒN THIẾT BỊ DI ĐỘNG IOS
Ngành: Cơng nghệ thơng tin
Chun ngành: An tồn thơng tin
Học phần: Đánh giá và kiểm định AT HTTT
Sinh viên thực hiện:
Lớp L02
Giảng viên hướng dẫn:
Hà Nội, 2018
NHẬN XÉT CÙA GIẢNG VIÊN
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
...........................................................................................................................................................
MỤC LỤC
MỤC LỤC..................................................................................................................1
DANH MỤC HÌNH ẢNH ...................................... Error! Bookmark not defined.
LỜI NĨI ĐẦU ...........................................................................................................3
CHƯƠNG I: KHÁI QT AN TỒN TRÊN THIẾT BỊ DI ĐỘNG ......................4
1. Giới thiệu về bảo mật di động .......................................................................4
1.1. Các lĩnh vực chính trong bảo mật ứng dụng di động ...........................4
1.2. Hướng dẫn kiểm tra bảo mật di động ....................................................6
2. Phân loại và phương pháp đánh giá an toàn ứng dụng ................................8
2.1. Phân loại .....................................................................................................8
2.2
Phương pháp đánh giá an toàn ứng dụng............................................10
CHƯƠNG II: ĐÁNH GIÁ AN TOÀN THIẾT BỊ DI ĐỘNG IOS .........................15
1. Tổng quan về nền tảng iOS..........................................................................15
2. Môi trường thử nghiệm đánh giá ................................................................21
1. API mật mã ...................................................................................................33
2. API mạng .......................................................................................................34
CHƯƠNG III: THỰC HIỆN KIỂM THỬ ĐÁNH GIÁ ..........................................37
1. Giới thiệu iGoat ............................................................................................37
2. Tạo môi trường kiểm thử.............................................................................38
3. Kiểm thử ........................................................................................................40
TÀI LIỆU THAM KHẢO .......................................................................................43
1
DANH MỤC HÌNH VẼ
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
1-1: Mơ hình bảo mật ứng dụng dành cho thiết bị di động ........................... 7
1-2: Các bước đánh giá .............................................................................. 13
2-1: Kiến trúc bảo mật IOS ........................................................................ 16
2-2:Phân cấp khóa bảo vệ dữ liệu ............................................................... 23
3-1: iGoat trên Xcode ................................................................................. 38
3-2: iGoat trên iphone ................................................................................ 39
3-3: iGoat version ...................................................................................... 39
3-4: Các chế độ kiểm thử ........................................................................... 40
3-5: Lưu trữ dữ liệu .................................................................................... 40
3-6: Thực hiện login trong form bên dưới như hình ................................... 41
3-7: : Trích xuất file credentials.sqlite ........................................................ 41
3-8: Mở sqlite 3 và thực hiện...................................................................... 42
2
LỜI NĨI ĐẦU
Thiết bị thơng minh (Smartphone, Tablet) đang dần thay thế máy tính truyền
thống. Nó đáp ứng cho chúng ta các nhu cầu hàng ngày như làm việc, giải trí, quản
lí các thiết bị điện tử, quản lí nhà thơng minh..v..v. Cùng với đó, người dùng sử dụng
các thiết bị thông minh khi thao tác với dữ liệu, đặc biệt là dữ liệu nhạy cảm như
email, giao dịch ngân hàng,… ngày càng tăng. Nắm bắt xu thế này, tin tặc đang
chuyển sự chú ý sang tấn công vào các thiết bị thơng minh. Do đó, việc kiểm tra bảo
mật cho ứng dụng trên các thiết bị thông minh là công việc hết sức quan trọng.
Hiện nay trên thị trường thiết bị thơng minh có hai nền tảng phổ biến là IOS
và Android. IOS được khá nhiều người lựa chọn sử dụng vì sự mượt mà và ổn định
trong các trải nghiệm của người sử dụng. Ngồi ra nó cịn được các chuyên gia bảo
mật đánh giá cao về mức độ an toàn .
Bài viết Đánh giá an toàn thiết bị ios này nhằm tìm hiểu về an tồn trong nền
tảng ios và thực hiện kiểm thử đánh giá an tồn nền tảng này. Do kiến thức cịn hạn
chế nên khơng thể tránh khỏi những sai sót trong q trình tìm hiểu mong nhận được
sự đóng góp ý kiến của thầy cô cùng các bạn để bài báo cáo được hoàn thiện.
3
CHƯƠNG I: KHÁI QUÁT AN TOÀN TRÊN THIẾT BỊ DI ĐỘNG
1. Giới thiệu về bảo mật di động
1.1. Các lĩnh vực chính trong bảo mật ứng dụng di động
Lưu trữ dữ liệu cục bộ
Việc bảo vệ dữ liệu nhạy cảm, chẳng hạn như thông tin đăng nhập của người dùng
và thông tin cá nhân, rất quan trọng đối với bảo mật di động. Nếu ứng dụng sử dụng
API hệ điều hành, chẳng hạn như bộ nhớ cục bộ hoặc giao tiếp liên cơng (IPC) khơng
đúng cách, ứng dụng có thể hiển thị dữ liệu nhạy cảm với các ứng dụng khác đang
chạy trên cùng một thiết bị. Nó cũng có thể vơ tình làm rị rỉ dữ liệu vào lưu trữ đám
mây, sao lưu hoặc bộ nhớ cache của bàn phím. Ngồi ra, thiết bị di động có thể bị
mất hoặc bị đánh cắp dễ dàng hơn so với các loại thiết bị khác, vì vậy nhiều khả
năng một cá nhân có thể truy cập vật lý vào thiết bị, giúp việc truy xuất dữ liệu trở
nên dễ dàng hơn.
Giao tiếp với đầu cuối đáng tin cậy
Thiết bị di động thường xuyên kết nối với nhiều mạng khác nhau, bao gồm mạng
Wi-Fi công cộng được chia sẻ với các khách hàng (có thể độc hại) khác. Điều này
tạo ra cơ hội cho một loạt các cuộc tấn công dựa trên mạng khác nhau, từ đơn giản
đến phức tạp và cũ đến mới. Điều quan trọng là duy trì tính bảo mật và tính tồn vẹn
của thơng tin được trao đổi giữa ứng dụng di động và dịch vụ đầu cuối từ xa. Theo
yêu cầu cơ bản, ứng dụng dành cho thiết bị di động phải thiết lập kênh được mã hóa
bảo mật bằng cách sử dụng giao thức TLS với các cài đặt thích hợp.
Xác thực và ủy quyền
Trong hầu hết các trường hợp, việc gửi người dùng để đăng nhập vào một dịch vụ
từ xa là một phần không thể thiếu trong kiến trúc ứng dụng di động tổng thể. Mặc
dù hầu hết các xác thực và ủy quyền logic xảy ra tại điểm cuối, cũng có một số thách
thức thực hiện ở phía ứng dụng di động. Khơng giống như các ứng dụng web, các
ứng dụng dành cho thiết bị di động thường lưu trữ mã thông báo phiên lâu dài được
mở khóa bằng các tính năng xác thực từ người dùng đến thiết bị như quét vân tay.
4
Trong khi điều này cho phép đăng nhập nhanh hơn và trải nghiệm người dùng tốt
hơn (khơng ai thích nhập mật khẩu phức tạp), nó cũng giới thiệu thêm sự phức tạp
và chỗ cho lỗi.
Kiến trúc ứng dụng dành cho thiết bị di động cũng ngày càng kết hợp các
khung ủy quyền (chẳng hạn như OAuth2) ủy quyền xác thực cho một dịch vụ riêng
biệt hoặc th ngồi q trình xác thực cho nhà cung cấp xác thực. Sử dụng OAuth2
cho phép logic xác thực phía máy khách được thuê ngoài đến các ứng dụng khác
trên cùng một thiết bị (ví dụ: trình duyệt hệ thống). Những người kiểm tra bảo mật
phải biết những ưu điểm và nhược điểm của các kiến trúc có thể khác nhau.
Tương tác với Nền tảng di động
Kiến trúc hệ điều hành di động khác với kiến trúc máy tính để bàn cổ điển theo
những cách quan trọng. Ví dụ: tất cả các hệ điều hành trên thiết bị di động đều triển
khai các hệ thống cấp phép ứng dụng điều chỉnh quyền truy cập vào các API cụ thể.
Họ cũng cung cấp nhiều hơn (Android) hoặc ít hơn (iOS) các phương tiện liên lạc
quá trình (IPC) cho phép các ứng dụng trao đổi tín hiệu và dữ liệu. Các tính năng cụ
thể cho nền tảng này đi kèm với các cạm bẫy của riêng chúng. Ví dụ: nếu API IPC
bị lạm dụng, dữ liệu nhạy cảm hoặc chức năng có thể bị vơ tình hiển thị đối với các
ứng dụng khác đang chạy trên thiết bị
Giảm thiểu chèn mã độc
Các vấn đề về quản lý bộ nhớ và tiêm truyền thống không thường thấy trong các ứng
dụng dành cho thiết bị di động do bề mặt tấn công nhỏ hơn. Ứng dụng dành cho thiết
bị di động chủ yếu là giao diện với dịch vụ phụ trợ đáng tin cậy và giao diện người
dùng, vì vậy ngay cả khi nhiều lỗ hổng tràn bộ đệm tồn tại trong ứng dụng, các lỗ
hổng đó thường khơng mở bất kỳ vectơ tấn cơng hữu ích nào. Sự bảo vệ tương tự
tồn tại đối với việc khai thác trình duyệt như cross-site scripting (XSS cho phép kẻ
tấn công chèn các script vào các trang web để bỏ qua các điều khiển truy cập) rất
phổ biến trong các ứng dụng web. Tuy nhiên, ln có những trường hợp ngoại lệ.
XSS về lý thuyết có thể có trên thiết bị di động trong một số trường hợp, nhưng rất
hiếm khi thấy các vấn đề XSS mà một cá nhân có thể khai thác.
5
Sự bảo vệ này khỏi các vấn đề quản lý bộ nhớ và tiêm khơng có nghĩa là các
nhà phát triển ứng dụng có thể lấy đi bằng cách viết sloppy. Sau các phương pháp
bảo mật tốt nhất dẫn đến các bản phát hành đã được sửa chữa (bảo mật) được củng
cố chống lại sự giả mạo. Các tính năng bảo mật miễn phí được cung cấp bởi các trình
biên dịch và SDK di động giúp tăng cường bảo mật và giảm thiểu các cuộc tấn công.
Chống giả mạo và chống đảo ngược
Nhiều chuyên gia bảo mật bỏ qua bảo vệ phía máy khách. Tuy nhiên, các điều khiển
bảo vệ phần mềm được sử dụng rộng rãi trong thế giới ứng dụng dành cho thiết bị
di động, vì vậy những người kiểm tra bảo mật cần có cách để đối phó với các biện
pháp bảo vệ này. Chúng tơi tin rằng có lợi ích cho sự bảo vệ phía khách hàng nếu
chúng được sử dụng với mục đích rõ ràng và không được sử dụng để thay thế các
biện pháp kiểm soát an ninh.
1.2.
Hướng dẫn kiểm tra bảo mật di động
Hướng dẫn này có liên quan chặt chẽ với Tiêu chuẩn Xác minh Bảo mật Ứng dụng
Di động OWASP (MASVS). MASVS định nghĩa mơ hình bảo mật ứng dụng dành
cho thiết bị di động và liệt kê các yêu cầu bảo mật chung cho các ứng dụng dành cho
thiết bị di động. Nó có thể được sử dụng bởi các kiến trúc sư, nhà phát triển, người
thử nghiệm, chuyên gia bảo mật và người tiêu dùng để xác định và hiểu những phẩm
chất của một ứng dụng di động an toàn. Cả hai tài liệu đều lập bản đồ cho cùng một
bộ yêu cầu bảo mật cơ bản và tùy thuộc vào ngữ cảnh chúng có thể được sử dụng
riêng lẻ hoặc kết hợp để đạt được các mục tiêu khác nhau.
6
Hình 1-1: Mơ hình bảo mật ứng dụng dành cho thiết bị di động
Ví dụ, các u cầu MASVS có thể được sử dụng trong các giai đoạn thiết kế và
kiến trúc của ứng dụng trong khi danh sách kiểm tra và hướng dẫn kiểm tra có
thể là cơ sở để kiểm tra bảo mật thủ công hoặc làm mẫu cho các kiểm tra bảo mật
tự động trong hoặc sau khi phát triển. Trong chương Thử nghiệm bảo mật ứng
dụng dành cho thiết bị di động, chúng tôi sẽ mô tả cách bạn có thể áp dụng danh
sách kiểm tra và MSTG cho thử nghiệm thâm nhập ứng dụng dành cho thiết bị
di động.
Duyệt hướng dẫn kiểm tra bảo mật di động
MSTG chứa các mô tả về tất cả các yêu cầu quy định trong MASVS. MSTG chứa
các phần chính sau:
1.Hướng dẫn thử nghiệm chung chứa phương pháp thử nghiệm bảo mật ứng dụng
dành cho thiết bị di động và kỹ thuật phân tích lỗ hổng chung khi chúng áp dụng
cho bảo mật ứng dụng dành cho thiết bị di động.
7
2.Hướng dẫn kiểm tra Android bao gồm kiểm tra bảo mật di động cho nền tảng
Android, bao gồm các vấn đề cơ bản về bảo mật, trường hợp kiểm tra bảo mật,
kỹ thuật và phòng chống đảo ngược và kỹ thuật giả mạo và phòng ngừa.
3.Hướng dẫn kiểm tra iOS bao gồm kiểm tra bảo mật di động cho nền tảng iOS,
bao gồm tổng quan về hệ điều hành iOS, kiểm tra bảo mật, kỹ thuật đảo ngược
và chống đảo ngược.
4.Phụ lục chứa các trường hợp thử nghiệm kỹ thuật bổ sung không phụ thuộc vào
hệ điều hành, chẳng hạn như xác thực và quản lý phiên, truyền thông mạng và
mật mã. Chúng tôi cũng bao gồm một phương pháp để đánh giá các chương trình
bảo vệ phần mềm
2. Phân loại và phương pháp đánh giá an toàn ứng dụng
2.1. Phân loại
Thuật ngữ "ứng dụng dành cho thiết bị di động" đề cập đến một chương trình
máy tính độc lập được thiết kế để thực thi trên thiết bị di động. Các ứng dụng được
thiết kế để chạy trực tiếp trên nền tảng mà chúng được thiết kế, trên trình duyệt dành
cho thiết bị di động của thiết bị thông minh hoặc sử dụng kết hợp cả hai.
Ứng dụng gốc
Hệ điều hành di động, bao gồm Android và iOS, đi kèm với Bộ phát triển phần mềm
(SDK) để phát triển các ứng dụng cụ thể cho hệ điều hành. Ứng dụng gốc vốn có
khả năng cung cấp hiệu suất nhanh nhất với mức độ tin cậy cao nhất. Chúng thường
tuân thủ các nguyên tắc thiết kế theo nền tảng cụ thể.
Nhược điểm rõ ràng nhất của ứng dụng gốc là chúng chỉ dành cho một nền
tảng cụ thể. Để xây dựng cùng một ứng dụng cho cả Android và iOS, bạn cần duy
trì hai cơ sở mã độc lập hoặc giới thiệu các công cụ phát triển phức tạp thường xuyên
để chuyển một cơ sở mã đơn thành hai nền tảng .
8
Ứng dụng web
Ứng dụng web di động (hoặc đơn giản là ứng dụng web) là các trang web
được thiết kế để trông giống như một ứng dụng gốc. Các ứng dụng này chạy trên
trình duyệt của thiết bị và thường được phát triển bằng HTML5, giống như một trang
web hiện đại.
Các ứng dụng web có tích hợp giới hạn với các thành phần chung của thiết bị
khi chúng chạy trong giới hạn của trình duyệt (tức là chúng là "hộp cát") và thường
thiếu hiệu suất so với ứng dụng gốc. Vì ứng dụng web thường nhắm mục tiêu nhiều
nền tảng, giao diện người dùng của họ không tuân theo một số nguyên tắc thiết kế
của một nền tảng cụ thể. Lợi thế lớn nhất là giảm chi phí phát triển và bảo trì liên
quan đến một cơ sở mã đơn cũng như cho phép các nhà phát triển phân phối các bản
cập nhật mà không cần tham gia các cửa hàng ứng dụng nền tảng cụ thể.
Ứng dụng lai
Ứng dụng lai cải tiến ứng dụng web và ứng dụng gốc. Ứng dụng lai thực thi như ứng
dụng gốc, nhưng phần lớn các quy trình dựa trên cơng nghệ web, nghĩa là một phần
của ứng dụng chạy trong trình duyệt web được nhúng (thường được gọi là "chế độ
xem web"). Như vậy, các ứng dụng lai kế thừa cả ưu và nhược điểm của ứng dụng
gốc và web
Lớp trừu tượng web-to-native cho phép truy cập vào các khả năng của thiết bị
cho các ứng dụng lai không thể truy cập vào ứng dụng web thuần túy. Tùy thuộc vào
khung được sử dụng để phát triển, một cơ sở mã có thể dẫn đến nhiều ứng dụng
nhắm mục tiêu nền tảng khác nhau, với giao diện người dùng tương tự như nền tảng
ban đầu mà ứng dụng được phát triển.
Sau đây là danh sách không đầy đủ các framework phổ biến để phát triển các ứng
dụng lai:
• Apache Cordova
• Framework 7
• Ionic
9
• jQuery Mobile
• Native Script
• Onsen UI
• React Native
• Sencha Touch
2.2 Phương pháp đánh giá an toàn ứng dụng
a. Kiểm tra hộp trắng và kiểm tra hộp đen
• Kiểm tra hộp đen được thực hiện mà khơng có người kiểm tra có bất kỳ thơng
tin nào về ứng dụng đang được thử nghiệm. Q trình này đơi khi được gọi là
"thử nghiệm khơng có kiến thức". Mục đích chính của thử nghiệm này là cho
phép người kiểm tra hành xử như một kẻ tấn công thực sự theo nghĩa khám
phá những cách sử dụng có thể cho các thơng tin có sẵn và có thể khám phá
cơng khai.
• Kiểm tra hộp trắng (đôi khi được gọi là "kiểm tra kiến thức đầy đủ") là hoàn
toàn trái ngược với thử nghiệm hộp đen theo nghĩa là người thử nghiệm có
kiến thức đầy đủ về ứng dụng. Kiến thức có thể bao gồm mã nguồn, tài liệu
và sơ đồ. Mặc dù thử nghiệm hộp đen dễ dàng hơn và nhanh hơn nhiều, thử
nghiệm hộp trắng không cho phép nhiều trường hợp thử nghiệm. Kiểm tra hộp
trắng thường hữu ích hơn trong việc bảo vệ ứng dụng khỏi những kẻ tấn cơng
nội bộ.
• Kiểm tra hộp màu xám là tất cả thử nghiệm nằm giữa hai loại thử nghiệm nói
trên: một số thơng tin được cung cấp cho người thử nghiệm và các thông tin
khác được dự định sẽ được phát hiện. Loại thử nghiệm này là một sự thỏa hiệp
thú vị về số lượng các trường hợp thử nghiệm, chi phí, tốc độ và phạm vi kiểm
tra. Thử nghiệm hộp màu xám là loại thử nghiệm phổ biến nhất trong ngành
bảo mật.
10
b.Phân tích
Phân tích lỗ hổng
Phân tích lỗ hổng thường là quá trình tìm kiếm lỗ hổng trong ứng dụng. Mặc dù điều
này có thể được thực hiện thủ cơng, máy quét tự động thường được sử dụng để xác
định các lỗ hổng chính. Phân tích tĩnh và động là các loại phân tích lỗ hổng.
Phân tích tĩnh
Phân tích tĩnh liên quan đến việc kiểm tra các thành phần của ứng dụng mà khơng
cần thực thi chúng. Nó có thể tương tự như thử nghiệm hộp trắng.
Trong phân tích tĩnh, mã nguồn của ứng dụng dành cho thiết bị di động được phân
tích để đảm bảo thực hiện các điều khiển bảo mật thích hợp. Có 2 cách đánh giá :
• Đánh giá mã thủ cơng
• Phân tích mã tự động
Phân tích động
Phân tích động bao gồm việc kiểm tra ứng dụng từ bên ngồi trong khi thực
hiện nó. Loại phân tích này có thể là thủ cơng hoặc tự động. Nó thường khơng cung
cấp thơng tin mà phân tích tĩnh cung cấp, nhưng nó là một cách tốt để phát hiện các
yếu tố thú vị (tài sản, tính năng, điểm nhập, vv) từ quan điểm của người dùng. Nó
có thể tương tự như thử nghiệm hộp đen.
Trọng tâm của phân tích động (cịn được gọi là DAST hoặc Kiểm tra bảo mật ứng
dụng động) là thử nghiệm và đánh giá ứng dụng thông qua việc thực thi trong thời
gian thực của chúng. Mục tiêu chính của phân tích động là tìm các lỗ hổng bảo mật
hoặc các điểm yếu trong một chương trình trong khi nó đang chạy. Phân tích động
được thực hiện ở cả lớp nền tảng di động và chống lại các dịch vụ và API back-end,
nơi có thể phân tích các yêu cầu và mẫu phản hồi của ứng dụng dành cho thiết bị di
động.
11
Phân tích động thường được sử dụng để kiểm tra các cơ chế bảo mật cung cấp
bảo vệ đầy đủ chống lại các loại tấn công phổ biến nhất, chẳng hạn như tiết lộ dữ
liệu trong các sự cố chuyển tiếp, xác thực và ủy quyền và lỗi cấu hình máy chủ.
Tránh giả mạo
Các công cụ kiểm tra tự động 'thiếu độ nhạy với ngữ cảnh ứng dụng là một
thách thức. Những cơng cụ này có thể xác định một vấn đề tiềm ẩn không liên quan.
Kết quả như vậy được gọi là "dương tính giả".
Kiểm tra thâm nhập (cịn gọi là Pentesting)
Cách tiếp cận cổ điển liên quan đến kiểm tra bảo mật xung quanh việc xây
dựng cuối cùng hoặc gần như cuối cùng của ứng dụng, ví dụ: bản dựng sẵn có ở cuối
q trình phát triển. Để kiểm tra vào cuối q trình phát triển, chúng tơi khuyên bạn
nên sử dụng Tiêu chuẩn xác minh bảo mật ứng dụng dành cho thiết bị di động
(MASVS) và danh sách kiểm tra liên quan. Một thử nghiệm bảo mật điển hình được
cấu trúc như sau:
• Chuẩn bị - xác định phạm vi kiểm tra bảo mật, bao gồm việc xác định các
điều khiển bảo mật hiện hành, các mục tiêu thử nghiệm của tổ chức và các dữ
liệu nhạy cảm.
• Thu thập thơng minh - phân tích bối cảnh môi trường và kiến trúc của ứng
dụng để đạt được sự hiểu biết chung về ngữ cảnh.
• Lập bản đồ ứng dụng - dựa trên thông tin từ các giai đoạn trước có thể được
bổ sung bằng chức năng quét tự động và khai thác ứng dụng theo cách thủ
công. Những lỗ hổng này sau đó có thể được xếp hạng theo thiệt hại mà việc
khai thác của chúng sẽ gây ra để người kiểm tra an ninh có thể ưu tiên chúng.
Giai đoạn này bao gồm việc tạo ra các trường hợp thử nghiệm có thể được sử
dụng trong q trình thực hiện kiểm tra.
• Khai thác - trong giai đoạn này, người kiểm tra bảo mật cố gắng thâm nhập
vào ứng dụng bằng cách khai thác các lỗ hổng được xác định trong giai đoạn
trước. Giai đoạn này là cần thiết để xác định xem các lỗ hổng có thực (tức là,
các mặt tích cực thực sự) hay không.
12
• Báo cáo - trong giai đoạn này, cần thiết cho khách hàng, người kiểm tra bảo
mật báo cáo các lỗ hổng mà họ có thể khai thác và ghi lại loại thỏa hiệp mà
họ có thể thực hiện, bao gồm phạm vi của thỏa hiệp (ví dụ: dữ liệu họ có thể
truy cập bất hợp pháp).
c. Đánh giá SDLC
SDLC ln bao gồm các bước tuần tự
Hình 1-2: Các bước đánh giá
•
Thực hiện đánh giá rủi ro cho ứng dụng và các thành phần của nó để xác định
hồ sơ rủi ro của họ.
•
Yêu cầu bảo mật được xác định ở đầu của một dự án hoặc chu kỳ phát triển
•
Mơ hình đe dọa , về cơ bản là việc xác định, liệt kê, ưu tiên và xử lý các mối
đe dọa ban đầu, là một tạo phẩm cơ bản phải được thực hiện như sự phát triển
kiến trúc và tiến độ thiết kế. Kiến trúc an ninh , một yếu tố Mơ hình mối đe
dọa, có thể được tinh chỉnh (đối với cả phần mềm và phần cứng) sau giai đoạn
Mơ hình hóa mối đe dọa. Các quy tắc mã hóa an tồn được thiết lập và danh
13
sách các công cụ bảo mật sẽ được sử dụng được tạo ra. Chiến lược kiểm tra
bảo mậtđược làm rõ.
•
Phát triển phần mềm một cách an tồn .
•
Tiếp theo là thử nghiệm ứng viên phát hành được chờ đợi từ lâu: kiểm tra
thâm nhập thủ công và tự động ("Pentest"). Kiểm tra bảo mật ứng dụng
động thường được thực hiện trong giai đoạn này.
•
Sau khi phần mềm đã được cơng nhận trong Chấp nhận bởi tất cả các bên liên
quan, nó có thể được an tồn chuyển sang hoạt động đội và đưa vào sản xuất.
•
Giai đoạn cuối cùng, quá thường bị bỏ quên, là sự ngừng hoạt động an
toàn của phần mềm sau khi kết thúc sử dụng.
Dựa trên hồ sơ rủi ro chung của dự án, bạn có thể đơn giản hóa (hoặc thậm chí bỏ
qua) một số hiện vật và bạn có thể thêm người khác (phê duyệt trung gian chính
thức, tài liệu chính thức của một số điểm, v.v
14
CHƯƠNG II: ĐÁNH GIÁ AN TOÀN THIẾT BỊ DI ĐỘNG IOS
1. Tổng quan về nền tảng iOS
iOS là một hệ điều hành di động hỗ trợ các thiết bị di động của Apple, bao gồm
iPhone, iPad và iPod Touch. Nó cũng là cơ sở cho Apple tvOS, thừa hưởng nhiều
chức năng từ iOS. Các ứng dụng iOS chạy trong một môi trường hạn chế hơn so
với mac OS . Ứng dụng iOS được tách biệt với nhau ở cấp hệ thống tệp và bị giới
hạn đáng kể về quyền truy cập API hệ thống.
Các kiến trúc an ninh iOS bao gồm sáu tính năng cốt lõi:
•
Bảo mật phần cứng
•
Khởi động an tồn
•
Ký mã
•
Sandbox
•
Mã hóa và bảo vệ dữ liệu
•
Giảm thiểu khai thác chung
15
Hình 2-1: Kiến trúc bảo mật IOS
16
Bảo mật phần cứng
Kiến trúc bảo mật iOS sử dụng tốt các tính năng bảo mật dựa trên phần cứng để nâng
cao hiệu suất tổng thể. Mỗi thiết bị iOS đi kèm với hai khóa 256-bit Advanced
Encryption Standard (AES) được tích hợp sẵn - GID và UID - được hợp nhất và biên
dịch vào bộ xử lý ứng dụng và Secure Enclave trong q trình sản xuất. Khơng có
cách nào trực tiếp để đọc các khóa này bằng phần mềm hoặc các giao diện gỡ lỗi
như JTAG. Các hoạt động mã hóa và giải mã được thực hiện bằng các cơng cụ mã
hóa AES phần cứng có quyền truy cập độc quyền vào các khóa này.
GID là giá trị được chia sẻ bởi tất cả các bộ xử lý trong một lớp thiết bị được sử dụng
để ngăn chặn giả mạo với các tệp phần sụn và các tác vụ mã hóa khác khơng liên
quan trực tiếp đến dữ liệu cá nhân của người dùng. UID, là duy nhất cho mỗi thiết
bị, được sử dụng để bảo vệ phân cấp khóa được sử dụng cho mã hóa hệ thống tệp
cấp thiết bị. Bởi vì UID khơng được ghi lại trong q trình sản xuất, ngay cả Apple
cũng khơng thể khơi phục các khóa mã hóa tệp cho một thiết bị cụ thể.
Để cho phép xóa an tồn dữ liệu nhạy cảm trên bộ nhớ flash, thiết bị iOS bao gồm
một tính năng có tên là Effaceable Storage. Tính năng này cung cấp quyền truy cập
trực tiếp ở mức độ thấp vào cơng nghệ lưu trữ, giúp bạn có thể xóa các khối đã chọn
một cách an toàn.
Khởi động an toàn
Khi thiết bị iOS được bật nguồn, nó đọc hướng dẫn ban đầu từ ROM khởi động chỉ
đọc, khởi động hệ thống. ROM khởi động chứa mã bất biến và Apple Root CA, được
khắc vào khn silicon trong q trình chế tạo, từ đó tạo ra gốc rễ của sự tin cậy. Tiếp
theo, ROM khởi động đảm bảo rằng chữ ký của bộ khởi động iBoot là chính xác. Sau
khi chữ ký được xác nhận, iBoot kiểm tra chữ ký của giai đoạn khởi động tiếp theo,
đó là hạt nhân iOS. Nếu bất kỳ bước nào trong các bước này thất bại, quá trình khởi
động sẽ kết thúc ngay lập tức và thiết bị sẽ vào chế độ khôi phục và hiển thị màn
hình "Kết nối với iTunes". Tuy nhiên, nếu ROM khởi động không tải được, thiết bị
sẽ nhập một chế độ khôi phục mức đặc biệt thấp được gọi là Thiết bị nâng cấp
17
firmware (DFU). Đây là phương sách cuối cùng để khôi phục thiết bị về trạng thái
ban đầu. Ở chế độ này, thiết bị sẽ không hiển thị dấu hiệu hoạt động; tức là màn hình
của nó sẽ khơng hiển thị gì cả.
Tồn bộ q trình này được gọi là "Chuỗi khởi động an tồn". Mục đích của nó là
đảm bảo rằng hệ thống và các thành phần của nó được viết và phân phối bởi
Apple. Chuỗi Secure Boot bao gồm hạt nhân, bộ nạp khởi động, phần mở rộng hạt
nhân và phần vững cơ sở.
Ký mã
Apple đã triển khai một hệ thống DRM phức tạp để đảm bảo rằng chỉ có mã được
Apple phê chuẩn mới chạy trên thiết bị của họ. Nói cách khác, bạn sẽ khơng thể chạy
bất kỳ mã nào trên thiết bị iOS chưa được bẻ khóa trừ khi Apple cho phép rõ
ràng. Người dùng cuối chỉ được phép cài đặt ứng dụng thông qua cửa hàng ứng dụng
chính thức của Apple.
Hồ sơ nhà phát triển và chứng chỉ được Apple ký là bắt buộc để triển khai và chạy
một ứng dụng. Các nhà phát triển cần đăng ký với Apple, tham gia Chương trình
nhà phát triển Apple và trả tiền thuê bao hàng năm để có được đầy đủ các khả năng
phát triển và triển khai. Ngồi ra cịn có một tài khoản miễn phí cho phép bạn biên
dịch và triển khai các ứng dụng (nhưng không phân phối chúng trong App Store)
thông qua sideloading.
Mã hóa và bảo vệ dữ liệu
Mã hóa mã FairPlay được áp dụng cho các ứng dụng được tải xuống từ App
Store. FairPlay được phát triển dưới dạng DRM cho nội dung đa phương tiện được
mua qua iTunes. Ban đầu, mã hóa Fairplay được áp dụng cho các luồng MPEG và
QuickTime, nhưng các khái niệm cơ bản giống nhau cũng có thể được áp dụng cho
các tệp thực thi. Ý tưởng cơ bản như sau: Khi bạn đăng ký tài khoản người dùng
Apple mới, cặp khóa cơng khai / riêng sẽ được tạo và gán cho tài khoản của
bạn. Khóa riêng tư được lưu trữ an toàn trên thiết bị của bạn. Điều này có nghĩa là
mã được mã hóa FairPlay chỉ có thể được giải mã trên các thiết bị được liên kết với
18
tài khoản của bạn - TODO [Hãy cụ thể hơn] - Mã hóa ngược FairPlay thường thu
được bằng cách chạy ứng dụng trên thiết bị, sau đó bán phá giá mã đã giải mã khỏi
bộ nhớ
Apple đã xây dựng mã hóa vào phần cứng và phần vững của các thiết bị iOS của nó
kể từ khi phát hành iPhone 3GS. Mỗi thiết bị đều có một crypto engine dựa trên phần
cứng chuyên dụng dựa trên AES 256 bit, hoạt động với hàm băm mật mã SHA1. Ngồi ra, có một mã định danh duy nhất (UID) được tích hợp vào phần cứng của
mỗi thiết bị với khóa AES 256 bit được hợp nhất vào bộ xử lý ứng dụng. UID này
là duy nhất và không được ghi ở nơi khác. Tại thời điểm viết, không phải phần mềm
và phần mềm nào cũng có thể đọc trực tiếp UID. Bởi vì chìa khóa được đốt cháy vào
chip silicon, nó khơng thể bị giả mạo hoặc bỏ qua. Chỉ có crypto engine mới có thể
truy cập nó.
Xây dựng mã hóa vào kiến trúc vật lý làm cho nó trở thành một tính năng bảo mật
mặc định có thể mã hóa tất cả dữ liệu được lưu trữ trên thiết bị iOS. Kết quả là, bảo
vệ dữ liệu được thực hiện ở cấp phần mềm và làm việc với mã hóa phần cứng và
phần mềm để cung cấp bảo mật hơn.
Khi bật tính năng bảo vệ dữ liệu, mỗi tệp dữ liệu được liên kết với một lớp cụ
thể. Mỗi lớp hỗ trợ một mức độ tiếp cận khác nhau và bảo vệ dữ liệu trên cơ sở khi
dữ liệu cần được truy cập. Các hoạt động mã hóa và giải mã được liên kết với mỗi
lớp dựa trên nhiều cơ chế chính sử dụng UID và mật mã của thiết bị, khóa lớp, khóa
hệ thống tệp và khóa cho mỗi tệp. Khóa mỗi tệp được sử dụng để mã hóa nội dung
của tệp. Khóa lớp được bao quanh khóa cho mỗi tệp và được lưu trữ trong siêu dữ
liệu của tệp. Khóa hệ thống tệp được sử dụng để mã hóa siêu dữ liệu. UID và mật
mã bảo vệ khóa lớp. Thao tác này không hiển thị với người dùng. Để cho phép bảo
vệ dữ liệu, mật mã phải được sử dụng khi truy cập thiết bị. Mật mã mở khóa thiết
bị. Kết hợp với UID, mật mã cũng tạo ra các khóa mã hóa iOS có khả năng chống
tấn cơng và tấn công brute-force. Bật bảo vệ dữ liệu là lý do chính khiến người dùng
sử dụng mật mã trên thiết bị của họ.
19
Sandbox
Các appsandbox là một cơng nghệ kiểm sốt truy cập iOS. Nó được thực thi ở cấp
hạt nhân. Mục đích của nó là hạn chế thiệt hại dữ liệu người dùng và hệ thống có thể
xảy ra khi ứng dụng bị xâm phạm.
Sandboxing là một tính năng bảo mật cốt lõi kể từ lần phát hành đầu tiên của iOS. Tất
cả các ứng dụng của bên thứ ba chạy dưới cùng một người dùng ( mobile) và chỉ
một vài ứng dụng và dịch vụ hệ thống chạy dưới dạng root. Ứng dụng iOS thông
thường bị giới hạn trong vùng chứa hạn chế quyền truy cập vào tệp của ứng dụng và
số lượng API hệ thống rất hạn chế. Truy cập vào tất cả các tài nguyên (chẳng hạn
như tệp, IPC và bộ nhớ dùng chung) được kiểm soát bởi hộp cát. Những hạn chế này
hoạt động như sau [#levin]:
•
•
Q trình ứng dụng được giới hạn vào thư mục riêng của nó (dưới / var /
mobile / Containers / Bundle / Application /) thơng qua một q trình giống
như chroot.
Các cuộc gọi hệ thống mmapvà mmprotectđược sửa đổi để ngăn các ứng dụng
làm cho các trang bộ nhớ có thể ghi thực thi và ngừng các quá trình thực thi
mã được tạo động. Kết hợp với việc ký mã và FairPlay, điều này giới hạn
nghiêm ngặt mã nào có thể chạy trong các trường hợp cụ thể (ví dụ, tất cả mã
trong các ứng dụng được phân phối qua kho ứng dụng được Apple chấp
thuận).
•
Các q trình được tách biệt với nhau, ngay cả khi chúng được sở hữu bởi
cùng một UID.
•
Khơng thể truy cập trực tiếp vào trình điều khiển phần cứng. Thay vào đó,
chúng phải được truy cập thơng qua các khung công tác của Apple.
Giảm thiểu khai thác chung
iOS thực hiện ngẫu nhiên bố cục không gian địa chỉ (ASLR) và bit eXecute Never
(XN) để giảm thiểu các cuộc tấn công thực thi mã.
20
ASLR ngẫu nhiên vị trí bộ nhớ của tập tin thực thi của chương trình, dữ liệu, đống
và ngăn xếp mỗi khi chương trình được thực thi. Vì các thư viện chia sẻ phải tĩnh để
được truy cập bởi nhiều tiến trình, nên các địa chỉ của các thư viện chia sẻ được ngẫu
nhiên mỗi lần khởi động hệ điều hành thay vì mỗi khi chương trình được gọi. Điều
này làm cho các địa chỉ bộ nhớ thư viện và chức năng cụ thể khó dự đốn, do đó
ngăn chặn các cuộc tấn công như tấn công trả về libc, bao gồm các địa chỉ bộ nhớ
của các hàm libc cơ bản.
Cơ chế XN cho phép iOS đánh dấu các phân đoạn bộ nhớ đã chọn của một
tiến trình là khơng thể thực thi được. Trên iOS, q trình chồng và đống quy trình
chế độ người dùng được đánh dấu là khơng thể thực thi được. Các trang có thể ghi
được khơng thể đánh dấu tơi là có thể thực thi cùng một lúc. Điều này ngăn chặn kẻ
tấn công thực thi mã máy được tiêm vào ngăn xếp hoặc đống.
2. Môi trường thử nghiệm đánh giá
Môi trường thử nghiệm cho chúng ta sử dụng để kiểm tra các ứng dụng iOS
cho các lỗ hổng bảo mật. Các quy trình cơ bản này là nền tảng cho các trường hợp
thử nghiệm .
Giả lập iOS SDK cung cấp môi trường mô phỏng chuyên nghiệp của thiết bị iOS. Ở
đây, các chương trình nhị phân được biên dịch sang mã x86 thay vì mã ARM. Các
ứng dụng được biên dịch cho một thiết bị thật không chạy, làm giả lập cho việc phân
tích hộp đen và kỹ thuật dịch ngược.
Các mơi trường như windows, linux đều có thể thiết lập để thử nghiệm với nền tảng
này, tuy nhiên Xcode trên môi trường macOS sẽ hỗ trợ giúp chúng ta khai thác tối
ưu và dễ dàng hơn.
Chúng ta cũng có thể jailbreak thiết bị để thuận lợi cho q trình checking. Mục đích
của việc jailbreaking là vơ hiệu hóa sự bảo vệ hệ thống iOS (các cơ chế ký kết mã
của Apple nói riêng) để mã unsigned tự nhiên có thể chạy trên thiết bị
21
Tuy nhiên ở các phiên bản phần mềm gần đây apple đã hạn chế việc tác động bằng
việc jailbreak thiết bị Bạn cũng có thể kg cần làm điều đó tuy nhiên nó sẽ phức tạp
hơn . Ngồi ra iGoat cũng là lựa chọn để thiết lập môi trường đánh giá an toàn nền
tảng iOS.
Dữ liệu người dùng nhạy cảm có thể được lưu trữ trên thiết bị trong một số trường
hợp. Để đảm bảo các dữ liệu đó iOS cung cấp các API lưu trữ an toàn cho phép các
nhà phát triển mã hóa phần cứng có sẵn trong mọi thiết bị iOS. Giả sử rằng các API
này được hoạt động chính xác, dữ liệu và các tệp có thể được bảo đảm an tồn bằng
mã hóa AES 256 bit được hỗ trợ phần cứng.
API bảo vệ dữ liệu
Các nhà phát triển ứng dụng có thể sử dụng API bảo vệ dữ liệu iOS để thực hiện các
kiểm soát truy cập tinh vi cho dữ liệu người dùng được lưu trữ trong
bộ
nhớ
flash. API được xây dựng trên đầu trang của bộ xử lý Secure Enclave (SEP) đã được
giới thiệu tích hợp trên iPhone 5S. SEP là một coprocessor cung cấp các hoạt động
mã hoá để bảo vệ dữ liệu và quản lý key. Khóa phần cứng thiết bị cụ thể - thiết bị
UID (Unique ID) - được nhúng vào trong vùng an tồn, đảm bảo tính tồn vẹn của
bảo vệ dữ liệu ngay cả khi nhân của hệ điều hành bị xâm nhập.
Kiến trúc bảo vệ dữ liệu dựa trên một hệ thống các khóa. UID và khố mật khẩu
người dùng, lấy được mật khẩu của người dùng sử dụng thuật tốn PBKDF2. Cùng
với đó, chúng có thể được sử dụng để "mở khóa" các lớp có liên quan đến các trạng
thái thiết bị khác nhau (ví dụ như thiết bị bị khóa / mở khóa).
Mọi tệp được lưu trữ trong hệ thống tệp iOS đều được mã hóa với khóa cá nhân
riêng lẻ cho mỗi tệp, tệp này chứa trong siêu dữ liệu tệp. Siêu dữ liệu được mã hóa
bằng khóa hệ thống tệp và được gói với một trong các khóa lớp, tùy thuộc vào lớp
bảo vệ do ứng dụng chọn khi tạo tệp.
22
Hình 2-2:Phân cấp khóa bảo vệ dữ liệu
Tệp có thể được gán cho một trong bốn lớp bảo vệ khác nhau
• Bảo vệ hồn chỉnh (NSFileProtectionComplete) : Một chìa khóa có nguồn
gốc từ mật mã người dùng và thiết bị UID được sử dụng để bảo vệ khóa học
này. Nó được xóa khỏi bộ nhớ ngay sau khi thiết bị bị khóa, làm cho dữ liệu
khơng thể truy cập được cho đến khi người dùng mở khóa thiết bị.
• Được bảo vệ trừ khi mở (NSFileProtectionCompleteUnlessOpen):
Hoạt động tương tự như Bảo vệ hoàn chỉnh, nhưng nếu tệp được mở khi mở
khóa, ứng dụng có thể tiếp tục truy cập tệp ngay cả khi người dùng khóa thiết
bị. Lớp bảo vệ này được sử dụng khi một tập tin đính kèm mail được tải xuống
ở chế độ nền.
• Bảo vệ cho đến khi người dùng xác thực người dùng đầu tiên
(NSFileProtection CompleteUntilFirstUserAuthentication) : Tập tin có
thể được truy cập từ thời điểm người dùng mở khóa thiết bị lần đầu tiên sau
khi khởi động. Nó có thể được truy cập ngay cả khi người dùng sau đó khóa
thiết bị và khóa học khơng bị xóa khỏi bộ nhớ.
• Khơng bảo vệ (NSFileProtectionNone) : Khóa lớp cho lớp bảo vệ này chỉ
được bảo vệ bằng UID. Nó được lưu trữ trong bộ nhớ " Effaceable Storage ",
đây là vùng bộ nhớ flash trên thiết bị iOS cho phép lưu trữ một lượng nhỏ dữ
liệu. Lớp bảo vệ này tồn tại để cho phép xóa từ xa nhanh: Xố khóa lớp ngay
lập tức làm cho dữ liệu không thể truy cập được.
23