Nếu bạn quản lý dù chỉ một tenant Microsoft 365 — ngay lập tức audit các ứng dụng OAuth

Nếu bạn quản lý dù chỉ một tenant Microsoft 365, bạn cần tiến hành kiểm tra (audit) các ứng dụng OAuth trong tenant đó càng sớm càng tốt. Dữ liệu cho thấy có xác suất đáng kể tồn tại ứng dụng độc hại hoặc bị lợi dụng trong môi trường của bạn.
Matt Kiely, Nhà nghiên cứu bảo mật chính tại Huntress Labs đã phát hành một script mã nguồn mở để hỗ trợ công việc này: https://github.com/HuskyHacks/cazadora
Dưới đây là hướng dẫn, phân tích kỹ thuật và khuyến nghị hành động — được trình bày dưới giọng văn nghiêm túc, chuyên nghiệp, giữ nguyên độ chi tiết kỹ thuật.
Chỉ số cảnh báo ban đầu — những gì cần xem trong Enterprise Applications & App Registrations
Khi rà soát Enterprise Applications và Application Registrations, ưu tiên kiểm tra các mục sau:
Ứng dụng có tên trùng với tên tài khoản người dùng (user-like names).
Ứng dụng đặt tên kiểu “Test”, “Test App” hoặc tương tự.
Ứng dụng đặt tên theo tên miền tenant nơi chúng được cài đặt.
Ứng dụng dùng các chuỗi ký tự vô nghĩa/không phải chữ-số làm tên (ví dụ
"........"hoặc các chuỗi ngẫu nhiên).Reply/redirect URI bất thường — đặc biệt là loopback local với port 7823:
http://localhost:7823/access/.
Những dấu hiệu này không phải bằng chứng tuyệt đối nhưng là các chỉ báo mạnh cần đưa vào quy trình điều tra.
Tổng quan kỹ thuật — cách hoạt động của ứng dụng OAuth trong Azure / Entra ID

Để hiểu cách khai thác, cần nắm các thực thể và luồng chính:
Application Registration (App object)
Là đối tượng ứng dụng được nhà phát triển đăng ký trong tenant của họ. Chứa metadata, configured API permissions, certificate/secret, redirect URIs, v.v.
Có thể được sử dụng để phát hành ứng dụng công khai hoặc nội bộ.
Enterprise Application / Service Principal
Khi một ứng dụng được cài đặt hoặc được consent trong tenant khác, một service principal (instance của app) được tạo trong tenant đó. Service principal lưu trạng thái consent và quyền được cấp trong tenant mục tiêu.
Enterprise Application = service principal (instance) trong tenant.
Quy trình cài đặt & consent
Người dùng/administrator xác thực (authN: username/password + MFA) để cài ứng dụng.
Ứng dụng yêu cầu các permission scope (delegated hoặc application). Người dùng/administrator đồng ý (consent) để cấp quyền.
Sau consent, service principal xuất hiện và app có thể hoạt động theo quyền đã được cấp.
Delegated vs Application permissions
Delegated: app hoạt động thay mặt user; cần user token.
Application: app hoạt động dưới quyền của chính app (daemon/service) — thường đòi hỏi admin consent.
Cả hai loại đều có thể bị lạm dụng; phân loại quyền theo tác hại (mail read, mailbox send, user management, directory read/write, v.v.) là bước quan trọng trong săn ứng dụng độc hại.
Cấu hình mặc định có rủi ro
- Theo mặc định, Azure/Entra ID cho phép hầu hết người dùng cài app và consent cho quyền đối với tài nguyên của chính họ mà không yêu cầu review admin. Đó là primitive cho phép kẻ tấn công khai thác consent-based workflows.
Hai kiểu mối đe dọa từ ứng dụng OAuth
1) Traitorware — ứng dụng hợp pháp bị lạm dụng
Định nghĩa: ứng dụng được thiết kế hợp lệ, phổ biến, nhưng có tính năng hoặc quyền khiến nó trở thành công cụ hữu ích cho tội phạm mạng (tương tự RMM hoặc “living off the land” trên endpoint).
Dấu hiệu: một số ứng dụng hợp pháp xuất hiện rất thường xuyên trong các cuộc tấn công. Với mẫu dữ liệu ~1.5k instances, Huntress xác định 5 ứng dụng là “smoking guns” — chúng xuất hiện trong tấn công nhiều hơn hoạt động hợp pháp. Tỷ lệ false positive ở mẫu này ~1.8%.
Hành động: thiết lập cảnh báo cho các ứng dụng thuộc danh sách “high-risk”, rà soát quyền và assignment users, cân nhắc chặn hoặc require admin consent cho các app đó.
2) Stealthware — ứng dụng độc hại do kẻ tấn công tạo
Định nghĩa: ứng dụng được kẻ tấn công tạo từ đầu, tùy chỉnh cho mục tiêu, đặt tên nhằm ẩn trong môi trường mục tiêu, và sử dụng cơ chế OAuth/consent để chiếm quyền truy cập. Thuật ngữ kỹ thuật: OAuth Illicit Consent Grant Attacks.
Đặc điểm: không có mẫu tên cố định; app thường hiếm gặp trên toàn cầu, gán cho rất ít user (thường một user), và có quyền mạnh (mail, directory, v.v.).
Hành động: phát hiện dựa trên heuristic kết hợp global rarity, số user assigned, và mức độ quyền.
Dữ liệu khảo sát và phát hiện — số liệu thực tế
Phạm vi khảo sát ban đầu: \>8.000 tenant across nhiều verticals.
Kết quả trình bày tại BSidesNYC — October 2024.
Kết luận chính:
Cả Traitorware và Stealthware tồn tại trong tenant khảo sát.
Khoảng 10% tenant có ít nhất một Traitorware app được liệt kê trong danh sách rủi ro của chúng tôi.
Heuristic hiệu quả để phát hiện Stealthware: app có prevalence toàn cầu <1% trong tập khảo sát, delegated access cho 1 user, và quyền bị phân loại là “mạnh”.
Sau triển khai telemetry cho partner tenants, SOC đã phát hiện \>500 instances Stealthware. Tỷ lệ Traitorware ổn định ~10% sau re-analysis.
Phương pháp săn (hunting) — kỹ thuật và heuristic
Để phát hiện Stealthware và Traitorware, sử dụng các bước sau:
Thu thập dữ liệu
Liệt kê Enterprise Applications và App Registrations qua Microsoft Graph API.
Ghi nhận: tên app, object id, service principal id, redirect URIs, permission grants (consented scopes), assigned users/groups, lessee/tenant info, created/modified timestamps.
Tiền xử lý & phân loại quyền
Nhóm các OAuth permissions theo mức độ rủi ro (ví dụ: Mail.Read/FullAccess, Mail.Send, Directory.ReadWrite.All, User.ReadWrite.All).
Gán “impact scores” cho từng permission nhóm.
Tính global prevalence (rarity)
- So sánh app identifier (publisher, app id) trên tập nhiều tenant để tính prevalence. App có prevalence thấp (<1%) nhưng có quyền mạnh là chỉ báo Stealthware.
Kiểm tra assignment pattern
- App chỉ được gán cho 1 user (đặc biệt khi kết hợp với quyền mạnh) => tăng ưu tiên điều tra.
Phân tích metadata
Tên app (user-like, test, tenant-like, random strings).
Redirect URIs (loopback localhost với port lạ — ví dụ
http://localhost:7823/access/).Secret/certificate expiry, client credential configuration.
Xây rules để flag
- Kết hợp các điều kiện: rarity <1% AND delegated access cho 1 user AND permission-impact ≥ threshold => flag là “high-priority Stealthware candidate”.
Điều tra thủ công
Kiểm tra logs đăng nhập, consent events, token issuance events, mailbox access logs, và M365 audit logs liên quan đến ứng dụng flagged.
Nếu cần, revoke consent / remove service principal / rotate credentials / reset affected accounts.
Công cụ hỗ trợ — Cazadora
Để giúp admin có thể làm audit nhanh, Matt Kiely đến từ Huntress Labs đã phát triển công cụ mã nguồn mở Cazadora, một script đơn giản thực hiện:
Xác thực bằng credentials của người vận hành.
Gọi Microsoft Graph để thu thập Enterprise Applications & App Registrations.
Áp dụng các heuristic đã mô tả để in danh sách app có đặc điểm khả nghi.
Repository và hướng dẫn: https://github.com/HuskyHacks/cazadora

Lưu ý: công cụ này cung cấp điểm khởi đầu nhanh chóng. Nó không tìm được 100% ứng dụng độc hại — là bước tầm soát ban đầu. Kết quả flagged luôn phải có bước xác minh thủ công và phân tích logs bổ sung.
Khuyến nghị
Audit: rà soát Enterprise Applications & App Registrations theo danh sách chỉ báo ở trên.
Ưu tiên theo rủi ro:
- App có tên đáng ngờ, redirect URI bất thường (localhost:7823), quyền mạnh, assignment ít user => ưu tiên điều tra.
Giảm attack surface:
Thắt chặt chính sách consent (require admin consent cho app bên thứ ba, giới hạn scope cho users).
Áp dụng Conditional Access policies, Least Privilege, và app consent policies.
Giám sát và logging:
Bật audit logging cho OAuth consent events, service principal creation, token issuance.
Thiết lập cảnh báo cho hành vi bất thường liên quan đến service principals và app permissions.
Phản ứng:
- Nếu app bị nghi ngờ: revoke consent, gỡ service principal, reset/rotate secrets, kiểm tra các tài khoản bị ảnh hưởng, và tiến hành investigation forensic trên các logs.
Tự động hóa & định kỳ:
- Lịch audit định kỳ (ví dụ: hàng tuần/hàng tháng) và tích hợp script như Cazadora vào pipeline kiểm tra bảo mật.
Kết luận
Luồng OAuth/consent trong Azure/Entra ID là một vector tấn công thực tế và ngày càng phổ biến.
Các công cụ hợp lệ (Traitorware) và ứng dụng do kẻ tấn công tạo (Stealthware) đều có thể cấp cho kẻ xấu khả năng truy cập lâu dài và khó phát hiện.
Heuristic dựa trên global rarity, assignment pattern, và permission impact là phương pháp hiệu quả để phát hiện Stealthware.
Hành động ngay: audit tenant, áp dụng chính sách consent chặt chẽ, giám sát activity logs, và sử dụng công cụ như Cazadora để tăng tốc quá trình rà soát.






