[RE017-3] Phân tích kỹ thuật dòng mã độc mới được sử dụng để tấn công chuỗi cung ứng nhắm vào Ban Cơ yếu Chính phủ Việt Nam của nhóm tin tặc Panda Trung Quốc (Phần 3)

 

IV. Các chỉ dấu cho thấy sự liên quan đến các nhóm tin tặc Panda Trung Quốc

Smanager_ssl.dll được build bằng Visual Studio (VS) 2015, timestamp build: Sunday, 26.04.2020 15:11:24 UTC, tức 26/04/2020 - 10:11:24 PM theo giờ Việt Nam (GMT+7). Linker version 14.00 là của VS 2015, và từ đó về sau. Các VS 2017, 2019… sẽ vẫn là 14.xx.

Hình 1. Thông tin Linker

Thông tin về PE RichID của Smanager_ssl.dll:

Hình 2. Thông tin PE RichID


Dựa trên PE RichID và VS version, hệ thống Tri thức an ninh mạng về malware của chúng tôi đã phát hiện và tìm ra một tập mẫu con trong một bộ tập mẫu có cùng PE RichID và VS version. Bộ tập mẫu này đã được một nhóm tin tặc dùng trong một chiến dịch APT tấn công vào một tập đoàn lớn của nước ta từ cuối 2018 – cuối 2019. Chúng tôi đã thu thập được mẫu và phân tích sau đó. Nhưng vì nhiều lý do, nên khi đó chúng tôi đã không công bố rộng rãi.

Trong tập mẫu con, chúng tôi đặc biệt chú ý vào các mẫu sau, đều là PE x64:

1.    msiscsi.dll:

-       MD5: F61B44ECF57EA6D0F49A7DC2C4456E89

-       SHA256: F654E98695E642416A74AF92776A4D24DC55249CEE354D1E868D7C3ACD26030

-       Build timestamp: Tuesday, 24.09.2019 01:03:41 UTC

-       PDB Path: N:\DEV\MMPro\x64\Release\8.1.pdb (tức 8.1.dll)

-       Export: ServiceMain, run as a Service Dll.

2.    verifierpr.dll:

-       MD5: FD35D50D1D30275DC216263B906F9F9A

-       SHA256: 9B2C8D17F4296DF83F5AE05CFA049DF2243A5303A0310C38C4C4796319A53234

-       Build timestamp: Thursday, 24.01.2019 23:55:44 UTC

-       PDB Path: C:\Dev\18M\x64\Release\8.pdb (8.dll)

-       Export: DllGetClassObject

3.    wercplsupport.dll:

-       MD5: 2644C5916A7B49FD216DA16B1F798D3A

-       SHA256: B9E07FF5109CC340D6CB371AFD8D112EBE29BFC1E2D395A28F04761E627D0E39

-       Build timestamp: Thursday, 24.01.2019 23:56:17 UTC

-       PDB Path: C:\Dev\18M\x64\Release\8.1.pdb

-       Export: ServiceMain, run as a Service Dll

Bảng so sánh PE RichID của các file trên và file smanager_ssl.dll:

Hình 3. Bảng so sánh PE RichID của các files

Các bạn để ý kỹ cột Description, version của các thành phần compiler/linker/… trong bộ Visual Studio. Với nhiều mẫu trong tập mẫu đó, chúng tôi xác định là đây là một nhóm nhiều thành viên, có một Source Code Control server.

Các C&C info được nhóm đó lưu trong các .nls, mạo danh các file .nls chính của Windows, trong thư mục Windows\System32. Nls file tức National Language Support files. 

Chúng tôi đã giải mã ra một số C&C sau:

Hình 4. Các C&C được tin tặc sử dụng

Với smanager_ssl.dll và hầu như tất cả các mẫu mà chúng tôi thu thập được của nhóm này, chúng tôi thấy có một điểm là tin tặc đã thay đổi default calling convention của VC++ compiler trong VS IDE (hay command line) thành kiểu call __fastcall. Cách này gây khó khăn cho chúng tôi khi phân tích, tái tạo source code của malware, cho ra định nghĩa đúng của các function protytype.

Smanager_ssl.dll như đã nói ở phần trước, được eToken.exe (VVSup.exe) đăng ký và run as a Service Dll. Chúng tôi so sánh hàm ServiceMain (là hàm bắt buộc của một Service Dll) thì thấy hầu như là cùng một code và kĩ thuật lập trình. Chúng tôi suy đoán phần code for Service là một file và được dùng chung cho các mẫu. Trong hàm ServiceMain luôn làm nhiệm vụ gọi hàm chính, là hàm bắt đầu của các tác vụ của malwares.

Hàm ServiceMain của smanager_ssl.dll:

Hình 5. Hàm ServiceMain của smanager_ssl.dll

ServiceMain của wercplsupport.dll:
Hình 6. Hàm ServiceMain của wercplsupport.dll

Điểm đặc biệt ngoài code giống nhau, các bạn để ý một biến toàn cục mà chúng tôi đặt tên là g_dwServiceState. Trong hàm callback SvcCtrlHandler, chúng ta sẽ thấy biến này

Hàm SvcCtrlHandler của smanager_ssl.dll:

Hình 7. Hàm SvcCtrlHandler của smanager_ssl.dll

Hàm SvcCtrlHandler của wercplsupport.dll:

Hình 8. Hàm SvcCtrlHandler của wercplsupport.dll

Nếu chỉ dựa trên các dấu hiệu trên thì cũng không chắc chắn, vì các nhóm tin tặc có mối liên hệ với nhau thường chia sẻ mã nguồn malwares cho nhau. Nhưng, chúng tôi đã phát hiện ra một điểm đặc biệt mà chính tin tặc có thể đã không để ý và bỏ sót khi build các malwares này. Kể từ Visual Studio 2005, Microsoft đã đưa các file .h.lib cho tính năng Telemetry vào, hỗ trợ dần từ Windows Vista. Khi build, mặc định tính năng Telemetry sẽ được đưa vào binary. Nếu muốn tắt chúng ta phải link với notelemetry.obj. File Telemetry.cpp Microsoft không đưa vào bộ phân phối Visual Studio 2015. File notelemetry.cpp các bạn có thể tìm thấy trong các Windows SDK mới sau này.

Nội dung file notelemetry.cpp, mục đích để NULL sub các hàm VC CRTL cho Telemetry.

Hình 9. notelemetry.cpp để NULL sub các hàm VC CRTL cho Telemetry

Khi phân tích, chúng tôi đã phát hiện ngoài smanager_ssl.dll, hai mẫu trong các tập mẫu con kể trên đều link với Telemetry VC CRTL: verifierpr.dll wercplsupport.dll

Hình 10. Các mẫu khác đều link với Telemetry VC CRTL

__telemetry_mai_invoke_trigger sẽ được call trước DllMain hay WinMain/main function của chúng ta. Và __telemetry_main_return_trigger sẽ được call ngay sau khi các hàm trên của chúng ta thoát.

Hình 11. __telemetry_mai_invoke_trigger sẽ được call trước DllMain hay WinMain/main function 

Telemetry API được Microsoft cung cấp trong file TraceLoggingProvider.h của các bộ phân phối Windows SDK mới sau này. Do không có mã nguồn của telemetry.cpp, chúng tôi dựa trên file .h trên và phân tích lại các hàm VC CRTL cho Telemetry. Chúng tôi đã xác định được ProviderMetaData trên file smanager_ssl.dllVà đặc biệt là providerData của cả verifierpr.dllwercplsupport.dll đều trùng nhau. GroupGuid là kiểu GUID, được tự sinh ra khi tin tặc dùng IDE wizard hay tool GuidGen.exe hay tương tự. GUID không bao giờ trùng nhau.

Chúng tôi đã tìm kiếm thông tin GUID này: {CF4F5073 – 8289 – B347 – E0DC – E8C90476BA01} trên Internet và các trang sau nhưng không tìm thấy kết quả:

Qua các điểm trên, chúng tôi kết luận, code của smanager_ssl.dll này được build trên một bản Visual Studio 2015, dùng một source có vô tình nhúng tính năng Telemetry vào.

Hình 12. smanager_ssl.dll được build từ Visual Studio 2015 và nhúng tính năng Telemetry 

Để hiểu thêm về Telemetry của VS 2015 và Windows, các bạn có thể đọc thêm ở các link sau (1, 2). Với các GUID của eToken.exe và GUID của providerData của ba file dlls kể trên, chúng ta có thể viết Yara rules như sau:


1.    eToken.exe (VVSup.exe):

-       GUID_1 = { 5AD5B72A - 853B - 456E – AF92 – 0F4DFF9D8BAF }

Hex string = “2A B7 D5 5A 3B 85 6E 45 AF 92 0F 4D FF 9D 8B AF”

-       GUID_2 = { 798E265A - CC96 – 4623 - BA97023B575502B8 }

Hex string = “5A 26 8E 79 96 CC 23 46 BA 97 02 3B 57 55 02 B8”

-       GUID_1 and GUID_2

2.       Smanager_ssl.dll:

-       Text = “Microsoft.CRTProvider”

-       GUID = { CF4F5073 – 8289 - B347 – E0DC – E8C90476BA01 }

Hex string = “73 50 4F CF 89 82 47 B3 E0 DC E8 C9 04 76 BA 01”

-       Text and GUID

Tổng hợp lại tất cả các chỉ dấu và thông tin về TTPs có được, chúng tôi nhận định đây là một chiến dịch tấn công tiếp theo của nhóm Panda Trung Quốc nhằm vào các cơ quan, tổ chức và doanh nghiệp tại Việt Nam.

Trong các phần sau, chúng tôi sẽ mô tả chi tiết về code C++ của smanager_ssl.dll đã được chúng tôi phân tích và tái tạo.

Chúc bạn đọc một mùa Giáng sinh và năm mới an lành!

(Còn tiếp...)

 

Trương Quốc Ngân (aka HTC)

Chuyên gia Phân tích mã độc - VinCSS (a member of Vingroup)




No comments:

Post a Comment