Một kẻ tấn công đang vận hành chiến dịch lừa đảo Microsoft 365 đã vô tình để máy chủ web Python lắng nghe trên một cổng công khai với tính năng liệt kê thư mục (directory listing) được bật. Lệnh thực hiện điều đó: python3 -m http.server 8080, vẫn còn nằm trong tệp .bash_history có thể đọc được.
Từ một sơ hở đó, công ty an ninh mạng Pháp Lexfo đã thu thập toàn bộ bộ công cụ của kẻ điều hành và từ đó phát hiện thêm hai nhóm lừa đảo khác, tổng cộng là ba chiến dịch. Mỗi chiến dịch đều chạy một bản fork tùy chỉnh của Evilginx proxy mã nguồn mở, được sao chép từ GitHub công khai.
Chiến dịch lớn nhất trong số ba chiến dịch này đã hoạt động được hơn một năm, với các nạn nhân chủ yếu là hộp thư của các doanh nghiệp.
Cả ba đã vượt qua MFA theo hai cách khác nhau về mặt cơ chế, một bằng cách proxy quá trình đăng nhập trực tiếp, một bằng cách lạm dụng luồng đăng nhập Microsoft hợp lệ. Hai cách này cần các biện pháp phòng thủ khác nhau, đây là phần quan trọng nhất nếu bạn đang vận hành Microsoft 365.
Việc liệt kê thư mục trên một máy chủ tấn công đang hoạt động gần giống như một lời thú tội đầy đủ. Danh sách này đã để lộ các cấu hình lừa đảo, nhật ký thu thập thông tin xác thực, trình cài đặt RMM, combolists, kho lưu trữ sao lưu và các tệp phiên Telegram của chính kẻ điều hành.
Đằng sau đó là một proxy Evilginx adversary-in-the-middle (AiTM) và một bảng điều khiển từ xa SimpleHelp chạy trên cùng một máy chủ tại địa chỉ 185.163.204[.]7 ở Budapest, được ghi nhận vào cuối tháng 4 năm 2026 trong một đợt quét internet định kỳ.
Lịch sử bash và một tập hợp các kho lưu trữ công khai đã chỉ thẳng vào kẻ điều hành: một diễn viên người Ai Cập mà công ty theo dõi với tên codemado, hoạt động trên các diễn đàn VoIP và hacking từ năm 2018, hiện đang điều hành một nền tảng Microsoft 365 AiTM trên picis[.]net và kiếm tiền từ việc truy cập thông qua một trình gửi thư hàng loạt do hắn viết có tên là MaDoO Blaster.
Chiến dịch của hắn đã bắt đầu vào ngày 20 tháng 4 và tiếp tục chạy qua ngày thư mục bị phát hiện vào ngày 30 tháng 4, với các miền phụ mới và chứng chỉ wildcard được gia hạn xuất hiện vài tuần sau đó. Bot của chính hắn đã ghi lại việc đánh cắp được hai tài khoản M365 doanh nghiệp, một của Pháp và một của Bắc Mỹ.
Việc liên tục đánh cắp cùng một tài khoản từ các IP khác nhau là nhất quán với việc kẻ điều hành làm mới các token bị đánh cắp khi chúng hết hạn, theo nhận định của Lexfo.
Nguồn gốc của các bộ công cụ lừa đảo
codemado đã không tự xây dựng framework mà hắn đang chạy. Hắn đã sao chép nó, và lịch sử bash cho thấy hắn đang so sánh các bộ công cụ cạnh nhau. Máy chủ chứa bốn biến thể Evilginx được lấy từ hai nhà phát triển GitHub khác, và cả hai đều hóa ra là những kẻ điều hành đang hoạt động tích cực.
Biến thể đầu tiên, red-queen, đến từ một kẻ điều hành người Nigeria mà báo cáo gọi là mail-argenta, và nó cho thấy mức độ trau chuốt được bổ sung vào một framework công khai. Bản fork của hắn đổi tên các thuộc tính HTML crossorigin và integrity để đánh bại các kiểm tra Subresource Integrity và thêm một công cụ ghi lại URL vào http_proxy.go để né tránh việc phát hiện dựa trên đường dẫn. Nó cũng tự động điền địa chỉ email của nạn nhân để giảm tỷ lệ bỏ cuộc.
Nó cũng đặt TTL một năm, tương đương 31.536.000 giây, cho các cookie phiên Microsoft bị đánh cắp. Báo cáo cho biết một phiên đăng nhập bị chặn có thể tồn tại lâu hơn cả việc đặt lại mật khẩu và nếu không có chính sách Conditional Access hỗ trợ CAE, nó có thể sử dụng được trong nhiều tháng.
Một tệp evilginx2.exe đã được biên dịch sẵn được đưa vào kho lưu trữ, vì vậy người mua không bao giờ phải tự xây dựng bất cứ thứ gì. Một cookie M365 bị đánh cắp nằm trong kho lưu trữ có ngày hết hạn là 30 tháng 6 năm 2027.
mail-argenta đã bị bắt theo đúng cách mà các nạn nhân của hắn mắc phải. Công ty đã tìm thấy email và mật khẩu của hắn trong nhật ký infostealer, loại dữ liệu thông tin xác thực bị thu thập mà các bảng điều khiển lừa đảo của hắn tạo ra. Mật khẩu bị rò rỉ đó trùng khớp với mật khẩu được mã hóa cứng làm mật khẩu MySQL trong bảng điều khiển Kraken của hắn và được sử dụng lại trên các tài khoản khác của hắn.
Kẻ tấn công thầm lặng
Bản fork thứ ba, black-queen, ghi lại nhiều tài khoản bị đánh cắp hơn hai bản còn lại và nó không bao giờ chạm vào mật khẩu. Tác giả của nó, người mà các nhà nghiên cứu không thể xác định danh tính ngoài biệt danh saroula01, đã xây dựng nó dựa trên luồng OAuth device code của Microsoft, một lộ trình đăng nhập hợp lệ dành cho các thiết bị bị hạn chế nhập liệu.
Cuộc tấn công tạo ra một mã thiết bị (device code) thật, gói nó trong một trang mồi nhử có chủ đề Authenticator và yêu cầu mục tiêu nhập mã đó tại trang microsoft.com/devicelogin chính thống. Nạn nhân đăng nhập trên một trang Microsoft thật và tự mình vượt qua MFA. Backend của saroula01 thăm dò điểm cuối token và lấy token ngay khi họ thực hiện xong.
Gọi đây là \"vượt qua MFA\" (MFA bypass) là không hiểu đúng cách thức hoạt động của nó: không có gì bị bỏ qua cả. Trang mồi nhử có chủ đề Authenticator và do kẻ tấn công xây dựng, nhưng mã thiết bị và trang Microsoft nơi nạn nhân hoàn tất là thật, vì vậy lời nhắc MFA mà nạn nhân thực hiện là có thật.
Passkey hoặc khóa FIDO2 cũng không giúp ích được gì, vì nạn nhân hoàn tất xác thực trên cơ sở hạ tầng Microsoft chính thống trong khi ủy quyền cho phiên của kẻ tấn công; liên kết nguồn (origin binding) vốn ngăn chặn Evilginx sẽ vượt qua trơn tru khi nguồn thực sự là Microsoft.
Microsoft đã tài liệu hóa kỹ thuật này vào tháng 2 năm 2025, trong một chiến dịch mà họ đánh giá với độ tin cậy trung bình là có liên quan đến Nga. Kể từ đó, nó đã lan rộng ra ngoài các mục đích được nhà nước bảo trợ, vào các chiến dịch tấn công hàng trăm tổ chức Microsoft 365.
Phiên bản của saroula01 đã hoạt động thầm lặng trong hơn một năm. Công ty đã đếm được 218 tài khoản riêng biệt bị đánh cắp trong nhật ký bot Telegram của chiến dịch tại hơn một chục quốc gia từ tháng 6 năm 2025 đến tháng 7 năm 2026, khoảng 94% trong số đó là hộp thư doanh nghiệp.
Một tệp token được đưa vào kho lưu trữ trong thời gian ngắn rồi bị xóa, vẫn có thể đọc được trong lịch sử git, chứa 97 token Microsoft đang hoạt động liên quan đến ba trong số những nạn nhân đó, mỗi token đều được đặt thành autoRefresh và một số được làm mới tới 25 lần. Framework này đã tự duy trì các phiên hoạt động.
Ba chiến dịch này kết nối lỏng lẻo với một thứ gì đó lớn hơn. Vào tháng 6 năm 2026, SOCRadar đã ghi nhận một hệ sinh thái lừa đảo dưới dạng dịch vụ (phishing-as-a-service) mà họ đặt tên là The Quarry, do một nhà phát triển có tên là RockyBelling điều hành và theo tính toán của họ, đã được bán cho gần 200 kẻ điều hành.
Được xây dựng với sự trợ giúp của AI
Báo cáo đã tìm thấy các dấu hiệu của việc phát triển có sự hỗ trợ của AI trong cả ba hoạt động. saroula01 đã để lại hai lần commit git được đồng tác giả bởi các mô hình Claude. mail-argenta đã commit một tệp instructions.txt là bản lưu nguyên văn của một phiên lập trình AI, bao gồm cả các tham chiếu đến các câu lệnh trước đó, ghi lại cách tính năng ghi lại URL được xây dựng.
Sự hiện diện của AI trong hoạt động của codemado mờ nhạt hơn: một trong các script của hắn ghi nhận CyberNeurova, một API tạo mã "không kiểm duyệt" có trả phí, chuyên quảng cáo với các câu lệnh như "Hãy xây dựng cho tôi một keylogger bằng Python."
Những gì lực lượng phòng thủ có thể thực hiện
Hai kỹ thuật tấn công trên không dùng chung một cách khắc phục. MFA chống lừa đảo, FIDO2 hoặc passkeys vẫn có thể ngăn chặn phía Evilginx bằng cách ràng buộc đăng nhập với tên miền thật. Tuy nhiên, nó không ngăn chặn được việc lạm dụng device code. Đối với lỗi đó, đòn bẩy là Conditional Access.
Lời khuyên của chính Microsoft là chặn luồng device code ở bất cứ đâu có thể. Chỉ một số ít thiết lập thực sự cần nó, chủ yếu là phần cứng bị hạn chế nhập liệu như các thiết bị phòng họp Teams và một số công cụ dòng lệnh. Hãy thống kê các nhật ký đăng nhập, chặn luồng này ở mọi nơi khác và kiểm tra chính sách ở chế độ report-only trước khi áp dụng.
Sử dụng kết hợp các chính sách vị trí Conditional Access dựa trên IP và Continuous Access Evaluation (CAE), để trên các khối lượng công việc Microsoft 365 được hỗ trợ, một token bị đánh cắp được nhìn thấy từ bên ngoài phạm vi cho phép sẽ bị đánh giá lại thay vì tiếp tục tồn tại hết thời hạn của nó.
Để phát hiện, báo cáo đánh dấu các lần cấp refresh-token từ Client ID Microsoft Office d3590ed6-52b3-4102-aeff-aad2292ab01c trong nhật ký đăng nhập Entra là đáng xem xét, khi mà ứng dụng desktop đó không được sử dụng bình thường; hãy đối chiếu chúng với các IP nguồn lạ.
Trên các điểm cuối (endpoints), hãy săn tìm các công cụ RMM mà những kẻ điều hành này cài đặt để duy trì sự hiện diện; bộ công cụ của codemado sử dụng XEOX, vì vậy hãy bắt đầu với agent tại C:\Program Files (x86)\XEOX\xeox-agent_x64.exe và các tác vụ theo lịch trình khớp với *XEOX*Agent*Watchdog*.
Rào cản đối với một chiến dịch tấn công hiệu quả hiện đã giảm xuống gần như bằng không, và nhóm Lexfo CTI dự đoán loại hình tấn công này sẽ trở nên phổ biến hơn đáng kể trong những tháng tới.