Chuyện ProxyLogon

Tháng 3 vừa bắt đầu, ngoài cửa sổ những cơn gió xuân vẫn còn thổi mát rượi làm lòng người man mác. Tôi vẫn nhớ đó là một sáng thứ ba đẹp trời ngày 02/03/2021, thời tiết thủ đô chợt làm tôi nghĩ tới vài câu thơ của Nguyễn Đình Thi:

Sáng chớm lạnh trong lòng Hà Nội

Những phố dài xao xác hơi may…

Thế mà bỗng dưng BÒM,4 lỗ hổng bảo mật nghiêm trọng CVE-2021-26855, CVE-2021-26857, CVE-2021-26858 và CVE-2021-27065 liên quan tới Exchange Mail Server được Microsoft công bố, làm chao đảo và dậy sóng giới an toàn thông tin. Cả thế giới cảnh báo nhau, tin tặc đua nhau tìm kiếm và khai thác, nhiều công ty, tổ chức, tập đoàn bị “dính bom”. Ở Việt Nam, NCSC cũng đã ghi nhận nhiều trường hợp các tổ chức, công ty bị tin tặc xâm nhập và khai thác hệ thống thông qua những lỗ hổng này.

Nếu đọc đến đây mà bạn vẫn chưa hiểu gì, thì nhanh chóng đọc một chút ở đây.

Tại thời điểm hiện tại, hoạt động tấn công và khai thác lỗ hổng ProxyLogon cũng đã giảm, phần lớn các hệ thống đã fix lỗi, một số khác chắc đã được các bên thứ 3 remote vào fix hộ :p

Báo viết về proxylogon, nhà nhà cảnh báo proxylogon, người người cầm exploit proxylogon, nhưng chỉ thấy lẻ tẻ vài bài về ứng cứu sự cố tấn công proxylogon. Chúng tôi cũng may mắn được giúp đỡ một số đơn vị, xử lý các sự cố liên quan đến tấn công lỗ hổng bảo mật proxylogon nên có viết một chút về quá trình này.

Điều tra, ứng cứu thì làm gì ???

Thu thập hết log, sử dụng PowerShell command được Microsoft hướng dẫn để rà soát những đoạn log khả nghi. Chúng tôi nhận thấy kẻ xấu đã do thám lỗ hổng từ ngày 28/02/2021, trước khi chi tiết về các CVE được Microsoft công bố vào ngày 02/03/2021. link

Rà soát webshell

Sau khi đã phát hiện được những dấu hiệu tấn công và khai thác ban đầu, chúng tôi tiếp tục rà soát các webshell có trong hệ thống. Sử dụng YARA rule để phát hiện những file nghi ngờ là webshell. Các file khả nghi bao gồm:

  • FrontEnd\HttpProxy\owa\auth\redirServerProxy.aspx 2.
  • owa\auth\15.0.1178\scripts\premium\error.aspx 3.
  • \aspnet_client\error_page.aspx 4.
  • \FrontEnd\HttpProxy\owa\auth\version\themes\resources\home.aspx
Webshell

Dựa vào access log của server, chúng tôi nhận thấy có nhiều kết nối đến webshell từ ngày 04/03/2021.

Song song với quá trình sử dụng YARA rule, chúng tôi sử dụng PowerShell script được Microsoft công bố nhằm so sánh sự khác biệt giữa các file gốc của Exchange với phiên bản hiện tại để tìm ra các file không thuộc hệ thống gốc. Đoạn script có tên Compare Exchange Hashes có thể tìm thấy tại link này.

Run and run
Các file nghi ngờ là webshell

Tiếp đến, chúng tôi thực hiện rà quét những file nén dữ liệu (.7z, .zip, .rar) bất thường mà kẻ tấn công có thể sử dụng để tiếp cận và tải về mã độc. Chúng tôi phát hiện có dấu hiệu exfiltration dữ liệu vào ngày 5/3.

File .zip nghi ngờ được khai thác bởi tin tặc nhằm đánh cắp dữ liệu

Rà soát mã độc

Sử dụng bộ công cụ Windows Sysinternals

  • Process Explorer
  • Autoruns
  • TCPView

Sử dụng DeepBlueCLI để rà soát Windows Event Logs

DeepBlueCLI là một bộ công cụ có chứa các PowerShell script giúp phát hiện những bất thường trong hệ thống dựa vào Windows Event Logs. Bằng DeepBlueCLI, chúng tôi đã phát hiện có sự kiện xoá logs vào các mốc thời gian 7/3 2:50 a.m 11 p.m 9/3 1 a.m; 10/3 1-3 a.m.

Sử dụng ListDLLs để phát hiện các hành vi load DLL khả nghi

Sau khi rà soát bằng các công cụ trên mà không tìm thấy mã độc, chúng tôi cứ ngỡ rằng hệ thống này chưa quá “toang”.

Trực giác của chúng tôi cho thấy có một cái gì đó không đúng ở đây, có thể hacker sử dụng một kỹ thuật nào đó để ẩn đi hành vi của mã độc.

Bằng cách rà soát các DLL được load bởi tất cả các tiến trình (bằng một phiên bản customize “nội bộ NCSC” của công cụ ListDLLs), chúng tôi phát hiện ra một tiến trình load DLL không đúng với “thiết kế của nhà sản xuất”. Rà soát lại tiến trình này cũng như các DLL khả nghi, chúng tôi phát hiện một số mẫu mã độc đã sử dụng kỹ thuật DLL Side-Loading để che dấu hành vi của mình.

Tóm lại là

Timeline sự cố

Phân tích mẫu mã độc

Cuối bài viết chúng tôi sẽ trình bài kết quả phân tích hành vi của một số mã độc đã thu được trong quá trình xử lý sự cố.

Microsoft.Exchage.Client.Event.dll

Miêu tả: File Dll này được viết trên nền tảng .NET, được pack bởi .NET Reactor, các tên hàm và tên biến đều ở định dạng utf-16 nên hơi khó để dịch ngược.

Vậy nên, ta có thể sử dụng de4dot để unpack .NET Reactor bằng command như sau:

Sau khi quá trình unpack kết thúc, ta sẽ nhận được một file dll có tên là Microsoft.Exchange.Clients.Event-cleaned.dll. Load file này vào dnspy thì ta có thể đọc code đơn giản hơn trước khi unpack.

Flow hành vi của file này được miêu tả cơ bản qua hình sau:

MSExchangeHM.exe

Miêu tả: file exe chạy với một tham số là đường dẫn tới file Dynamic-Link Library (DllPath) và khởi chạy dll đó bằng cách Inject vào process có commandline OWAApp như flow sau:

Kỹ thuật Inject được sử dụng trong file này có tên là Inject Dll by APC sử dụng hàm NtCreateThreadEx. Bạn có thể đọc chi tiết hơn về kỹ thuật này tại đây.

File này sẽ có chức năng để load các dll, chúng tôi tìm thấy một dll khác đáng nghi ngờ trong cùng thư mục với file exe này. File đó có tên là MSOARES.dll, khá giống với tên của một file dll của Microsoft là MSOERES.dll

File Dll này thực hiện chức năng hook vào LogonUserEx API, mỗi lần hệ thống gọi đến làm LogonUserEx thì nó sẽ ghi usernamepassword vào file có định dạng là C:\ProgramFiles\Microsoft\ExchangeServer\V15\FIP-FS\Data\Engines\metadata\manifest.{8b26bc7d-829d-4354-9527-(time_date)}.cab

Bạn có thể đọc kỹ hơn về kỹ thuật hook được sử dụng trong file dll này tại đây.

Bài viết cũng đã dài, sẽ viết tiếp phần phân tích các mẫu còn lại trong ngày gần nhất. Đi ngủ phát mai còn đi rà soát mấy con F5 đang bị đào coin :vvvv

Indicators of Compromise (IoC)

Mã hash của các web shell đã được phát hiện:

  • b75f163ca9b9240bf4b37ad92bc7556b40a17e27c2b8ed5c8991385fe07d17d0
  • 097549cf7d0f76f0d99edf8b2d91c60977fd6a96e4b8c3c94b0b1733dc026d3e
  • 2b6f1ebb2208e93ade4a6424555d6a8341fd6d9f60c25e44afe11008f5c1aad1
  • 65149e036fff06026d80ac9ad4d156332822dc93142cf1a122b1841ec8de34b5
  • 511df0e2df9bfa5521b588cc4bb5f8c5a321801b803394ebc493db1ef3c78fa1
  • 4edc7770464a14f54d17f36dc9d0fe854f68b346b27b35a6f5839adf1f13f8ea
  • 811157f9c7003ba8d17b45eb3cf09bef2cecd2701cedb675274949296a6a183d
  • 1631a90eb5395c4e19c7dbcbf611bbe6444ff312eb7937e286e4637cb9e72944

Các đường dẫn đã được biết:

  • C:\inetpub\wwwroot\aspnet_client\
  • C:\inetpub\wwwroot\aspnet_client\system_web\

Trong các đường dẫn cài đặt Microsoft Exchange Server như:

  • %PROGRAMFILES%\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\ C:\Exchange\FrontEnd\HttpProxy\owa\auth\

Các web shell đã được phát hiện có tên:

  • web.aspx
  • help.aspx
  • document.aspx
  • errorEE.aspx
  • errorEEE.aspx
  • errorEW.aspx
  • errorFF.aspx
  • healthcheck.aspx
  • aspnet_www.aspx
  • aspnet_client.aspx
  • xx.aspx
  • shell.aspx
  • aspnet_iisstart.aspx
  • one.aspx

Hi vọng bài viết sẽ giúp các tổ chức có thể dễ dàng tự rà soát lại hệ thống Exchange của mình hơn.

Để kiểm tra hệ thống của mình đã được fix chưa, thì có thể dùng công cụ này: https://khonggianmang.vn/check-proxylogon

Credit: Zepto Team