Chim ưng tàng hình săn mồi trên bầu trời Trung Đông bằng Deadglyph

Chim ưng tàng hình săn mồi trên bầu trời Trung Đông bằng Deadglyph

Nút nguồn: 2899203

Trong nhiều năm, Trung Đông vẫn duy trì danh tiếng là mảnh đất màu mỡ cho các mối đe dọa dai dẳng (APT) cấp cao. Trong quá trình giám sát thường xuyên các hoạt động đáng ngờ trên hệ thống của các khách hàng nổi tiếng, một số có trụ sở tại khu vực này, ESET Research đã tình cờ phát hiện ra một cửa hậu rất tinh vi và chưa được biết đến mà chúng tôi đặt tên là Deadglyph. Chúng tôi lấy tên này từ các hiện vật được tìm thấy ở cửa sau (chẳng hạn như 0xĐÃ CHẾTB001, cũng được thể hiện trong THAM CHIẾU _Ref111452440 h Bàn 1
), cùng với sự hiện diện của một người đồng tínhglyph tấn công. Theo hiểu biết tốt nhất của chúng tôi, đây là phân tích công khai đầu tiên về cửa hậu không có giấy tờ trước đây này, được sử dụng bởi một nhóm thể hiện mức độ tinh vi và chuyên môn đáng chú ý. Dựa trên việc nhắm mục tiêu và bằng chứng bổ sung, chúng tôi gán Deadglyph với độ tin cậy cao cho nhóm Stealth Falcon APT.

Kiến trúc của Deadglyph khác thường vì nó bao gồm các thành phần hợp tác - một là nhị phân x64 gốc, một là hợp ngữ .NET. Sự kết hợp này là bất thường vì phần mềm độc hại thường chỉ sử dụng một ngôn ngữ lập trình cho các thành phần của nó. Sự khác biệt này có thể cho thấy sự phát triển riêng biệt của hai thành phần đó đồng thời tận dụng các tính năng độc đáo của các ngôn ngữ lập trình riêng biệt mà chúng sử dụng. Ngôn ngữ khác nhau cũng có thể được khai thác để cản trở việc phân tích vì mã hỗn hợp khó điều hướng và gỡ lỗi hơn.

Các lệnh cửa sau truyền thống không được triển khai trong hệ nhị phân cửa sau; thay vào đó, chúng được nó nhận động từ máy chủ ra lệnh và điều khiển (C&C) dưới dạng các mô-đun bổ sung. Cửa hậu này cũng có một số khả năng để tránh bị phát hiện.

Trong bài đăng trên blog này, chúng tôi xem xét kỹ hơn về Deadglyph và cung cấp phân tích kỹ thuật về cửa hậu này, mục đích của nó và một số thành phần bổ sung mà chúng tôi thu được. Chúng tôi cũng đang trình bày những phát hiện của mình về Deadglyph tại LABScon 2023 hội nghị.

Các điểm chính của blogpost:

  • ESET Research đã phát hiện ra một cửa hậu tinh vi với kiến ​​trúc khác thường mà chúng tôi đặt tên là Deadglyph.
  • Các thành phần chính được mã hóa bằng khóa dành riêng cho máy.
  • Các lệnh cửa sau truyền thống được triển khai thông qua các mô-đun bổ sung nhận được từ máy chủ C&C của nó.
  • Chúng tôi đã thu được ba trong số nhiều mô-đun – trình tạo quy trình, trình đọc tệp và trình thu thập thông tin.
  • Chúng tôi gán Deadglyph cho nhóm Stealth Falcon.
  • Ngoài ra, chúng tôi còn tìm thấy một trình tải xuống shellcode có liên quan; chúng tôi cho rằng nó có thể được sử dụng để cài đặt Deadglyph.

Nạn nhân của cuộc xâm nhập được phân tích là một thực thể chính phủ ở Trung Đông đã bị xâm phạm vì mục đích gián điệp. Một mẫu liên quan được tìm thấy trên VirusTotal cũng đã được tải lên nền tảng quét tệp từ khu vực này, đặc biệt là từ Qatar. Khu vực mục tiêu được mô tả trên bản đồ trong THAM CHIẾU _Ref143614671 h Hình 1
.

Hình tượng chết_01
Hình 1. Nạn nhân của Deadglyph; mẫu liên quan đã được tải lên VirusTotal từ Qatar (có màu đậm hơn)

Stealth Falcon (còn được gọi là Project Raven hoặc FruityArmor) là một nhóm đe dọa có liên quan đến Các Tiểu vương quốc Ả Rập Thống nhất theo MITER. Hoạt động từ năm 2012, Stealth Falcon được biết đến với mục tiêu nhắm vào các nhà hoạt động chính trị, nhà báo và nhà bất đồng chính kiến ​​ở Trung Đông. Nó lần đầu tiên được phát hiện và mô tả bởi Phòng thí nghiệm công dân, đã xuất bản một phân tích của một chiến dịch tấn công phần mềm gián điệp vào năm 2016.

Vào tháng 2019 năm XNUMX, Reuters đã công bố một báo cáo báo cáo điều tra về Dự án Raven, một sáng kiến ​​được cho là tuyển dụng các cựu đặc vụ NSA và nhắm vào các loại mục tiêu giống như Stealth Falcon. Dựa trên hai báo cáo đề cập đến các mục tiêu và cuộc tấn công giống nhau, Tổ chức Ân xá Quốc tế đã kết luận (được thể hiện ở THAM CHIẾU _Ref144978712 h Hình 2
) rằng Stealth Falcon và Project Raven thực ra là cùng một nhóm.

Deadglyph Hình 2
Hình 2. Claudio Guarnieri đã kết nối Stealth Falcon với Project Raven

Vào tháng 2019 năm XNUMX, chúng tôi nghiên cứu được công bố trên một cửa sau, được cho là của Stealth Falcon, sử dụng một kỹ thuật khác thường, Background Intelligent Transfer Service, để liên lạc C&C. Bây giờ chúng tôi tiết lộ kết quả phân tích chuyên sâu của chúng tôi về thứ được cho là phần bổ sung mới nhất cho bộ công cụ gián điệp của Stealth Falcon.

Cửa hậu Deadglyph

Chuỗi tải của Deadglyph bao gồm nhiều thành phần, như được minh họa trong THAM CHIẾU _Ref144978760 h Hình 3
. Thành phần ban đầu là trình tải shellcode đăng ký, tải shellcode từ sổ đăng ký. Đến lượt shellcode được trích xuất này sẽ tải phần x64 gốc của cửa sau – Executor. Sau đó, Executor sẽ tải phần .NET của cửa sau – Orchestrator. Đáng chú ý, thành phần duy nhất trên đĩa hệ thống dưới dạng tệp là thành phần ban đầu, ở dạng Thư viện liên kết động (DLL). Các thành phần còn lại được mã hóa và lưu trữ trong giá trị đăng ký nhị phân.

Hình tượng chết_02
Hình 3. Các thành phần của chuỗi tải Deadglyph

Mặc dù phương pháp chính xác của vectơ thỏa hiệp ban đầu vẫn chưa được xác định nhưng chúng tôi nghi ngờ rằng một thành phần trình cài đặt có liên quan đến việc triển khai các thành phần tiếp theo và thiết lập tính bền vững trong hệ thống.

Trong phần còn lại của phần này, chúng tôi phân tích từng thành phần.

Trình tải shellcode đăng ký

Thành phần ban đầu của Deadglyph là một DLL nhỏ với một lần xuất duy nhất, được đặt tên 1. Thành phần này được duy trì bằng cách sử dụng Đăng ký sự kiện Công cụ quản lý Windows (WMI) và phục vụ như một trình tải shellcode đăng ký. Nó được thực thi thông qua dòng lệnh rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

Trình tải shellcode đăng ký bắt đầu hoạt động bằng cách giải mã đường dẫn đến shellcode được mã hóa được lưu trữ trong sổ đăng ký Windows bằng RC4. Chúng tôi nghi ngờ con đường này là duy nhất cho mỗi nạn nhân; trong trường hợp được phân tích ở đây, đường dẫn đăng ký là:

SoftwareClassesCLSID{5abc7f42-1112-5099-b082-ce8d65ba0c47}cAbRGHLg

Khóa đăng ký gốc là hklm or Hkcu, tùy thuộc vào việc quy trình hiện tại có đang chạy với đặc quyền nâng cao hay không. Logic tương tự có thể được tìm thấy trong các thành phần khác.

Theo đó, trình tải sẽ lấy khóa RC4 dành riêng cho máy bằng cách sử dụng UUID hệ thống được truy xuất từ bảng chương trình cơ sở SMBIOS thô. Sử dụng khóa này, nó sẽ tải, giải mã và sau đó thực thi shellcode. Điều quan trọng cần nhấn mạnh là phương pháp phái sinh khóa này đảm bảo rằng việc giải mã thích hợp sẽ không xảy ra nếu trình tải được thực thi trên một máy tính khác.

Điều thú vị là trình tải cũng có thể được cấu hình bằng cờ trong .dữ liệu sử dụng khóa mã hóa cứng để giải mã shellcode, thay vì khóa dành riêng cho máy.

Chúng tôi đã phát hiện một cuộc tấn công bằng chữ tượng hình bắt chước Tập đoàn Microsoft trong THÔNG TIN PHIÊN BẢN tài nguyên của thành phần này và các thành phần PE khác. Phương pháp này sử dụng các ký tự Unicode riêng biệt trông giống nhau về mặt hình ảnh, nhưng trong trường hợp này không giống với các ký tự gốc, cụ thể là Chữ cái viết hoa tiếng Hy Lạp San (U+03FA, Ϻ) và Chữ nhỏ Cyrillic O (U+043E, о) trong Ϻvòng lặpоsоft Corpоratiоn.

Mã shell đăng ký

Bao gồm hai phần, shellcode đăng ký bao gồm một quy trình giải mã và phần thân được mã hóa. Đầu tiên, quy trình giải mã sẽ xoay từng byte của phần nội dung được mã hóa sang trái một (ROL 0x01). Sau đó, quyền kiểm soát được chuyển đến cơ thể được giải mã này. Phần thân được giải mã bao gồm một trình tải PE và một tệp PE, tệp PE sau này là Executor, đại diện cho phần gốc của cửa sau. Trình tải này chịu trách nhiệm phân tích cú pháp và tải tệp PE liên quan.

Công chức

Executor là phần x64 gốc của cửa hậu Deadglyph, thực hiện các chức năng sau:

  • tải cấu hình của nó,
  • khởi tạo thời gian chạy .NET,
  • tải phần .NET được nhúng của cửa sau (Bộ soạn nhạc) và
  • hoạt động như một thư viện cho Orchestrator.

Đầu tiên, hai cấu hình mặc định được nhúng trong .dữ liệu phần được giải mã AES. Các cấu hình bao gồm nhiều tham số khác nhau, bao gồm khóa mã hóa, cài đặt an toàn và tránh truy cập cũng như điểm vào của thành phần tiếp theo.

Trong quá trình thực thi ban đầu, hai cấu hình mặc định đó được lưu trữ trong sổ đăng ký Windows, từ đó chúng được tải trong các lần chạy tiếp theo, cho phép triển khai các bản cập nhật. Đường dẫn đăng ký cho từng cấu hình được tạo với định dạng sau:

{HKCU|HKLM}SoftwareClassesCLSID{ }(Mặc định)

là một GUID được tạo riêng cho mỗi nạn nhân.

Sau đó, thời gian chạy .NET được khởi tạo, sau đó Executor RC4 sẽ giải mã phần .NET của cửa sau được gọi là Orchestrator. Bộ soạn nhạc nằm trong .rsrc phần của Người thực thi. Cấu hình chỉ định phương thức thực thi của Orchestrator làm điểm vào. Hơn nữa, một cấu trúc riêng biệt được cung cấp để tạo điều kiện cho Người điều phối có thể tiếp cận các chức năng của Người thực thi.

Sau khi khởi chạy Orchestrator, Executor hoạt động như một thư viện hỗ trợ cho Orchestrator. Executor chứa nhiều chức năng thú vị; chúng tôi mô tả một số trong số chúng trong phần sau, trong bối cảnh Bộ soạn nhạc sử dụng chúng và các mô-đun được tải thêm.

Dàn nhạc

Được viết bằng .NET, Orchestrator là thành phần chính của cửa hậu Deadglyph. Vai trò chính của thành phần này liên quan đến việc thiết lập liên lạc với máy chủ C&C và thực thi các lệnh, thường được hỗ trợ thông qua vai trò trung gian của Người thực thi. Ngược lại với các thành phần trước đó, Orchestrator được làm xáo trộn, sử dụng .NET Reactor. Trong nội bộ, cửa sau được gọi là đại lý, là tên chung cho phần máy khách trong các khung hậu khai thác khác nhau.

Khởi tạo

Đầu tiên, Orchestrator tải cấu hình của nó và hai mô-đun nhúng, mỗi mô-đun đi kèm với bộ cấu hình riêng từ các tài nguyên. Những tài nguyên này là Xì hơi nén và AES được mã hóa. Chúng được tham chiếu bởi ID được băm SHA-1 thành tên tài nguyên. Tổng quan về các tài nguyên này được cung cấp trong THAM CHIẾU _Ref111452440 h Bàn 1
.

Bảng 1. Tài nguyên của người điều phối

 

Tên tài nguyên

ID (thập phân)

ID (hex)

Mô tả

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

Cấu hình dàn nhạc.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEB001

Mô-đun mạng.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEB101

Cấu hình mô-đun mạng.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

Mô-đun hẹn giờ.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

Cấu hình mô-đun hẹn giờ.

Cấu hình của Orchestrator và các mô-đun nhúng được lưu trữ ở định dạng XML. Một ví dụ về cấu hình Orchestrator được hiển thị trong THAM CHIẾU _Ref111452611 h
Hình 4
.

Hình tượng chết_04
Hình 4. Cấu hình bộ soạn thảo

Mô tả các mục cấu hình của Orchestrator được hiển thị trong THAM CHIẾU _Ref111452782 h Bàn 2
.

Bảng 2. Các mục cấu hình của bộ điều phối

Key

Mô tả

k


Khóa AES được sử dụng để duy trì cấu hình mô-đun.

a


Tên phương thức khởi tạo mô-đun mạng.

b


Cờ liên quan đến mô-đun mạng không xác định.

c


Tên phương thức khởi tạo mô-đun hẹn giờ.

d


Cờ cho phép sử dụng khóa AES dành riêng cho máy (UUID hệ thống) cho tài nguyên.

p


ID tài nguyên mô-đun mạng.

t


ID tài nguyên mô-đun hẹn giờ.

Sau khi các thành phần tài nguyên được tải, nhiều luồng sẽ được tạo để thực hiện các tác vụ riêng biệt. Một trong những luồng này chịu trách nhiệm tiến hành kiểm tra môi trường, một chức năng được triển khai trong Executor. Một luồng khác được dành cho việc thiết lập liên lạc định kỳ với máy chủ C&C, cho phép truy xuất các lệnh. Cuối cùng, một bộ ba luồng được sử dụng cho mục đích thực thi các lệnh đã nhận và sau đó truyền mọi đầu ra được tạo trở lại máy chủ C&C.

Luồng kiểm tra môi trường giám sát các tiến trình đang chạy để xác định những tiến trình không mong muốn. Chủ đề này hoạt động với hai danh sách tên quy trình riêng biệt. Nếu phát hiện thấy một quy trình trong danh sách đầu tiên, quá trình giao tiếp và thực thi lệnh C&C sẽ bị tạm dừng cho đến khi quy trình không mong muốn đó không còn tồn tại. Nếu có sự trùng khớp với bất kỳ quy trình nào trong danh sách thứ hai, cửa sau sẽ ngay lập tức thoát và tự gỡ cài đặt.

Cả hai danh sách đều không được định cấu hình trong phiên bản được phân tích, vì vậy chúng tôi không biết quy trình nào thường được kiểm tra; chúng tôi tin rằng nó có thể nhằm mục đích trốn tránh các công cụ phân tích có thể phát hiện hoạt động đáng ngờ và dẫn đến việc phát hiện ra cửa sau.

Giao tiếp

Orchestrator sử dụng hai mô-đun nhúng để liên lạc C&C – Bộ hẹn giờ và Mạng. Giống như Orchestrator, các mô-đun này được làm xáo trộn bằng .NET Reactor. Cấu hình cho cả hai mô-đun được cung cấp bởi Orchestrator. Trong Orchestrator, bao gồm một cấu hình cài sẵn cho các mô-đun; tùy chọn, Người soạn nhạc cũng có thể tải phiên bản cấu hình cập nhật từ sổ đăng ký:

{HKCU|HKLM}SoftwareClassesCLSID{ }

Cửa sau chứa một biện pháp an toàn thú vị liên quan đến giao tiếp. Nếu cửa sau không thể thiết lập liên lạc với máy chủ C&C trong khoảng thời gian vượt quá ngưỡng xác định trước, được định cấu hình trong Executor, cơ chế tự gỡ cài đặt sẽ được kích hoạt. Ngưỡng thời gian này được chỉ định bằng giờ và được đặt ở mức một giờ trong trường hợp được kiểm tra.

Cách tiếp cận này phục vụ một mục đích gấp đôi. Một mặt, nó ngăn chặn việc tạo ra các yêu cầu mạng dư thừa đối với một máy chủ không thể truy cập được. Mặt khác, nó làm giảm cơ hội bị phát hiện sau này nếu người vận hành mất quyền kiểm soát cửa sau.

Mô-đun hẹn giờ

Mô-đun nhỏ này thực hiện lệnh gọi lại được chỉ định theo khoảng thời gian có thể định cấu hình. Nó được Orchestrator sử dụng kết hợp với mô-đun Mạng để liên lạc định kỳ với máy chủ C&C. Để ngăn việc tạo các mẫu có thể phát hiện được trong nhật ký mạng, khoảng thời gian thực hiện được thực hiện ngẫu nhiên, dựa trên tỷ lệ phần trăm được chỉ định trong cấu hình. Trong trường hợp được phân tích, khoảng thời gian được đặt thành năm phút, với mức chênh lệch ±20% được đưa ra cho tính ngẫu nhiên.

Một phương pháp khác để tránh các mẫu mạng có thể bị phát hiện trong giao tiếp định kỳ có thể được tìm thấy trong việc tạo các yêu cầu gửi đến máy chủ C&C. Cơ chế này, được triển khai trong Executor, liên quan đến việc bao gồm phần đệm có độ dài khác nhau, bao gồm các byte ngẫu nhiên, trong các yêu cầu, dẫn đến các yêu cầu có kích thước đa dạng.

Mô-đun mạng

Mô-đun Mạng thực hiện giao tiếp với các máy chủ C&C được chỉ định trong cấu hình của nó. Nó có thể gửi dữ liệu đến máy chủ C&C bằng các yêu cầu HTTP(S) POST. Đáng chú ý, nó cung cấp một số cơ chế để thu thập thông tin chi tiết về cấu hình proxy. Tính năng này gợi ý sự tập trung tiềm năng vào các môi trường không có truy cập internet trực tiếp.

Một ví dụ về cấu hình được giải mã (và làm đẹp) được hiển thị trong THAM CHIẾU _Ref144978805 h Hình 5
.

Hình tượng chết_06
Hình 5. Cấu hình mô-đun mạng

Các mục cấu hình chứa các chi tiết liên quan đến giao tiếp mạng – URL C&C, Tác nhân người dùng HTTP và cấu hình proxy tùy chọn.

Khi liên lạc với máy chủ C&C, giao thức nhị phân tùy chỉnh có nội dung được mã hóa sẽ được sử dụng bên dưới HTTPS.

Lệnh

Orchestrator nhận các lệnh từ máy chủ C&C dưới dạng các tác vụ được xếp hàng đợi để thực thi. Có ba loại nhiệm vụ được xử lý:

  • Nhiệm vụ của người điều phối,
  • Nhiệm vụ của người thực hiện và
  • Tải lên nhiệm vụ.

Hai loại đầu tiên được nhận từ máy chủ C&C và loại thứ ba được tạo nội bộ để tải lên đầu ra của các lệnh và lỗi.

Nhiệm vụ của người điều phối

Các tác vụ của bộ điều phối cung cấp khả năng quản lý cấu hình của mô-đun Mạng và Bộ hẹn giờ, đồng thời hủy các tác vụ đang chờ xử lý. Tổng quan về các nhiệm vụ của Người soạn nhạc được hiển thị trong THAM CHIẾU _Ref111101783 h Bàn 3
.

Bảng 3. Nhiệm vụ của người điều phối

Kiểu

Mô tả

0x80


Đặt cấu hình của mô-đun mạng và bộ hẹn giờ.

0x81


Nhận cấu hình của các mô-đun mạng và bộ đếm thời gian.

0x82


Hủy nhiệm vụ.

0x83


Hủy bỏ tất cả các nhiệm vụ.

Nhiệm vụ thực thi

Nhiệm vụ của người thực thi cung cấp khả năng quản lý cửa sau và thực thi các mô-đun bổ sung. Điều đáng chú ý là chức năng cửa sau truyền thống vốn không có trong bản thân hệ nhị phân. Thay vào đó, các chức năng này được lấy từ máy chủ C&C dưới dạng tệp PE hoặc shellcode. Toàn bộ tiềm năng của cửa sau vẫn chưa được biết nếu không có các mô-đun bổ sung này, giúp mở khóa các khả năng thực sự của nó một cách hiệu quả. Tổng quan về các nhiệm vụ của mô-đun được hiển thị trong THAM CHIẾU _Ref117677179 h Bàn 4
, bao gồm thông tin chi tiết về một số mô-đun được xác định. Tương tự, THAM CHIẾU _Ref117677188 h Bàn 5
cung cấp cái nhìn tổng quan về các nhiệm vụ quản lý được liên kết với Người thực thi.

Bảng 4. Nhiệm vụ thực thi – module

Kiểu

Mô tả

0x??–0x63


Không biết

0x64


Trình đọc tập tin

0x65


Không biết

0x66


Không biết

0x67


Không biết

0x68


Không biết

0x69


Người tạo quy trình

0x6A


Không biết

0x6B


Không biết

0x6C


Người thu thập thông tin

0x6D


Không biết

0x6E


Không biết

Bảng 5. Nhiệm vụ điều hành – quản lý

Kiểu

Mô tả

0x6F-0x76

Không được thực hiện

0x77

Đặt cấu hình Executor

0x78

Nhận cấu hình Executor

0x79-0x7C

Không được thực hiện

0x7D

Cập nhật

0x7E

Thoát

0x7F

Gỡ bỏ cài đặt

Lệnh đặt cấu hình Executor có thể thay đổi:

  • danh sách quy trình không mong muốn,
  • ngưỡng thời gian của lỗi giao tiếp C&C và
  • thời hạn thực hiện các module bổ sung.
Modules

Chúng tôi đã quản lý để có được ba mô-đun duy nhất từ ​​máy chủ C&C, mỗi mô-đun tương ứng với một loại tác vụ Executor khác nhau, như được hiển thị trong THAM CHIẾU _Ref117677179 h Bàn 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. Dựa trên thông tin có sẵn, chúng tôi ước tính có tổng cộng chín đến mười bốn mô-đun. Vì các mô-đun trên thực tế là các lệnh cửa hậu nên chúng có một thao tác cơ bản để thực thi và sau đó tùy ý trả về đầu ra của chúng. Các mô-đun chúng tôi thu được là các tệp DLL với một bản xuất không tên (thứ tự 1), trong đó chúng giải quyết các hàm API cần thiết và gọi hàm chính.

Khi được thực thi, các mô-đun được cung cấp chức năng phân giải API, có thể phân giải API Windows và API Executor tùy chỉnh. Các API Windows được tham chiếu bằng hàm băm DWORD, được tính từ tên của API và DLL của nó. Các giá trị băm nhỏ (<41) được xử lý đặc biệt, tham chiếu hàm API Executor. API Executor bao gồm tổng cộng 39 chức năng mà các mô-đun có thể truy cập được. Các chức năng này liên quan đến nhiều hoạt động khác nhau, bao gồm:

  • thao tác tập tin,
  • mã hóa và băm,
  • nén,
  • Tải PE,
  • truy cập Mạo danh mã thông báo và
  • tiện ích.

Trong phần còn lại của phần này, chúng tôi mô tả các mô-đun mà chúng tôi thu được.

Người tạo quy trình

Mô-đun 0x69 thực thi dòng lệnh đã chỉ định dưới dạng một quy trình mới và cung cấp kết quả đầu ra trở lại Trình soạn thảo. Quá trình này có thể được tạo dưới một người dùng khác và thời gian thực hiện của nó có thể bị giới hạn. Đáng chú ý, một điều bất thường API công việc được sử dụng trong chức năng của mô-đun này.

Mô-đun này được phục vụ với dòng lệnh cmd.exe /c danh sách tác vụ /v.

Chúng tôi cho rằng nó hoạt động như một lệnh nhàn rỗi được đưa ra tự động, trong khi người vận hành chờ đợi điều gì đó thú vị xảy ra trên máy tính bị xâm nhập.

Người thu thập thông tin

Mô-đun 0x6C thu thập thông tin mở rộng về máy tính thông qua các truy vấn WMI và chuyển nó trở lại Người soạn thảo. Thông tin về những điều sau đây được thu thập:

  • hệ điều hành,
  • bộ điều hợp mạng,
  • phần mềm đã cài đặt,
  • ổ đĩa,
  • cá nhân,
  • lái xe,
  • quy trình,
  • người dùng,
  • các biến môi trường và
  • phần mềm bảo mật.
Trình đọc tập tin

Mô-đun 0x64 đọc tệp đã chỉ định và chuyển nội dung trở lại Trình soạn thảo. Tùy chọn, nó có thể xóa tập tin sau khi đọc.

Chúng tôi thấy mô-đun này được sử dụng để truy xuất tệp dữ liệu Outlook của nạn nhân

c:Người dùng AppDataLocalMicrosoftOutlookoutlook.ost.

Chuỗi với trình tải xuống shellcode

Trong quá trình điều tra Deadglyph, chúng tôi đã phát hiện một tệp CPL đáng ngờ được ký bằng chứng chỉ đã hết hạn và không có chữ ký xác nhận có dấu thời gian, tệp này đã được tải lên VirusTotal từ Qatar. Khi kiểm tra kỹ hơn, rõ ràng là tệp CPL này hoạt động như một trình tải xuống shellcode nhiều tầng, có chung một số mã giống với Deadglyph. Chuỗi tải được minh họa trong THAM CHIẾU _Ref143693067 h Hình 6
.

Hình tượng chết_03
Hình 6. Chuỗi tải trình tải xuống Shellcode

Ở dạng ban đầu, đóng vai trò là giai đoạn đầu tiên, tệp này dự đoán có một .cpl tiện ích mở rộng (tệp Bảng điều khiển) và được thực thi thông qua hành động nhấp đúp. Khi thực thi theo cách này, shellcode nhúng sẽ trải qua quá trình giải mã XOR và các quy trình đang chạy được kiểm tra để xác định quy trình máy chủ phù hợp cho lần tiêm tiếp theo.

If avp.exe (một quy trình bảo mật điểm cuối của Kaspersky) đang chạy, %windir%system32UserAccountBroker.exe Được sử dụng. Nếu không, trình duyệt mặc định sẽ được sử dụng. Sau đó, nó tạo tiến trình máy chủ ở trạng thái treo, chèn shellcode bằng cách chiếm quyền điều khiển luồng chính của nó và tiếp tục luồng đó.

Giai đoạn thứ hai, shellcode, bao gồm hai phần. Phần đầu tiên của shellcode phân giải các hàm băm API, sử dụng cùng một kỹ thuật tính toán hàm băm duy nhất được sử dụng trong Deadglyph và giải mã các chuỗi bằng tên quy trình. Nó bắt đầu một chuỗi tự xóa có nhiệm vụ ghi đè và sau đó xóa tệp giai đoạn đầu. Sau đó, shellcode tiến hành kiểm tra các quy trình hiện đang hoạt động, nhắm mục tiêu giải pháp bảo mật.

Nếu phát hiện bất kỳ quy trình nào được chỉ định, shellcode sẽ tạo một luồng ngủ có mức ưu tiên thấp nhất (THREAD_PRIORITY_IDLE) và cho phép nó duy trì hoạt động trong thời gian 60 giây trước khi ngừng hoạt động. Khoảng thời gian này có thể được triển khai như một biện pháp phòng ngừa nhằm tránh các cơ chế phát hiện nhất định được các giải pháp bảo mật sử dụng. Cuối cùng, shellcode tiến hành thực thi phần thứ hai của mã.

Phần thứ hai của shellcode tải tệp PE nhúng ở giai đoạn ba và gọi quá trình xuất của nó bằng số thứ tự 1.

Giai đoạn thứ ba, một DLL, phục vụ như một trình tải .NET và chứa tải trọng trong nó. .rsrc phần.

Để tải trọng tải, thời gian chạy .NET được khởi tạo. Trong quá trình khởi tạo .NET, hai kỹ thuật hấp dẫn được thực hiện, dường như nhằm mục đích trốn tránh Windows. Quét giao diện quét phần mềm độc hại (AMSI):

  • Trình tải .NET tạm thời kết nối GetModuleHandleW nhập vào đã tải clr.dll, trong khi gọi ICorRuntimeHost::Bắt đầu. Móc giả mạo giá trị trả về khi GetModuleHandleW được gọi bằng NULL. Nó trả về một con trỏ tới một PE giả không có phần nào.
  • Sau đó nó sẽ vá một cách tinh tế AmsiKhởi tạo nhập chuỗi tên vào .rdata phần của tải clr.dll đến amsiikhởi tạo.

Giai đoạn thứ tư là một tập hợp .NET, được mã hóa bằng ConfuserEx, đóng vai trò là trình tải xuống shellcode. Đầu tiên, nó XOR giải mã cấu hình của nó ở định dạng XML từ các tài nguyên của nó. Một phiên bản đẹp của cấu hình được trích xuất được trình bày trong THAM CHIẾU _Ref143695453 h Hình 7
. Các mục cấu hình chứa các chi tiết liên quan đến giao tiếp mạng và các quy trình được liệt kê trong danh sách chặn.

Hình tượng chết_05
Hình 7. Cấu hình trình tải xuống Shellcode

Trước khi tiếp tục, nó sẽ kiểm tra các tiến trình đang chạy dựa trên danh sách các tiến trình được liệt kê trong danh sách chặn từ cấu hình. Nếu phát hiện thấy sự trùng khớp, quá trình thực thi sẽ dừng lại. Điều quan trọng cần lưu ý là trong trường hợp được phân tích, danh sách chặn này chưa được thiết lập.

Tiếp theo, nó gửi yêu cầu HTTP GET đến máy chủ C&C để truy xuất một số shellcode, sử dụng các tham số được chỉ định trong cấu hình (URL, User-Agent và Proxy tùy chọn). Đáng tiếc, trong quá trình điều tra, chúng tôi không thể lấy được bất kỳ shellcode nào từ máy chủ C&C. Tuy nhiên, chúng tôi đưa ra giả thuyết rằng nội dung được truy xuất có thể đóng vai trò là trình cài đặt cho Deadglyph.

Theo đó, shellcode đã lấy được sẽ được thực thi trong một luồng mới được tạo. Sau khi đợi cho đến khi luồng shellcode thực thi xong, trình tải xuống shellcode sẽ xóa tất cả các tệp nằm trong thư mục %WINDIR%ServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV.

Cuối cùng, nó cố gắng xóa chính nó sau khoảng thời gian 20 giây, sử dụng lệnh tiếp theo, trước khi kết thúc hoạt động và thoát:

lựa chọn cmd.exe /CY /N /DY /T 20 & Del /f /q

Việc tự xóa này không có ý nghĩa gì trong chuỗi này. Điều này là do trình tải xuống shellcode được thực thi trong trình duyệt hoặc quy trình hệ thống sau khi được đưa vào, thay vì hoạt động như một tệp thực thi độc lập. Hơn nữa, tập tin ban đầu đã bị xóa ở giai đoạn thứ hai. Quan sát này cho thấy trình tải xuống shellcode có thể không phải là tải trọng độc quyền của chuỗi này và cũng có thể được sử dụng riêng trong các hoạt động khác.

Kết luận

Chúng tôi đã phát hiện và phân tích một cửa hậu phức tạp được sử dụng bởi nhóm Stealth Falcon mà chúng tôi đặt tên là Deadglyph. Nó có kiến ​​trúc khác thường và khả năng cửa hậu của nó được cung cấp bởi C&C dưới dạng các mô-đun bổ sung. Chúng tôi đã thu được ba mô-đun này, khám phá được một phần toàn bộ khả năng của Deadglyph.

Đáng chú ý, Deadglyph tự hào có một loạt cơ chế chống phát hiện, bao gồm giám sát liên tục các quy trình hệ thống và triển khai các mẫu mạng ngẫu nhiên. Hơn nữa, cửa sau có khả năng tự gỡ cài đặt để giảm thiểu khả năng bị phát hiện trong một số trường hợp nhất định.

Ngoài ra, cuộc điều tra của chúng tôi đã giúp chúng tôi phát hiện ra chuỗi trình tải xuống shellcode nhiều tầng hấp dẫn trên VirusTotal. Chúng tôi nghi ngờ chuỗi trình tải xuống này có thể được tận dụng trong quá trình cài đặt Deadglyph.

Đối với bất kỳ câu hỏi nào về nghiên cứu của chúng tôi được công bố trên WeLiveSecurity, vui lòng liên hệ với chúng tôi theo địa chỉ đe dọaintel@eset.com.
ESET Research cung cấp các báo cáo tình báo APT riêng và nguồn cấp dữ liệu. Mọi thắc mắc về dịch vụ này, hãy truy cập Thông báo về mối đe dọa của ESET .

IoC

Các tập tin

SHA-1

Tên tập tin

Phát hiện

Mô tả

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

Trình tải Shellcode đăng ký.

740D308565E215EB9B235CC5B720142428F540DB

N/A

Win64/Deadglyph.A

Cửa hậu Deadglyph – Người thực thi.

1805568D8362A379AF09FD70D3406C6B654F189F

N/A

MSIL/Deadglyph.A

Cửa hậu Deadglyph – Người soạn nhạc.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

N/A

MSIL/Deadglyph.A

Mô-đun Mạng soạn nhạc.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

N/A

MSIL/Deadglyph.A

Mô-đun hẹn giờ của dàn nhạc.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

N/A

Win64/Deadglyph.A.gen

Mô-đun tạo quy trình.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

N/A

Win64/Deadglyph.A

Mô-đun đọc tập tin.

4E3018E4FD27587BD1C566930AE24442769D16F0

N/A

Win64/Deadglyph.A

Mô-đun thu thập thông tin.

7F728D490ED6EA64A7644049914A7F2A0E563969

N/A

Win64/In phun.MD

Giai đoạn đầu tiên của chuỗi trình tải xuống shellcode.

Giấy chứng nhận

số serial

00F0FB1390F5340CD2572451D95DB1D92D

Dấu tay

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

chủ đề CN

CÔNG TY TNHH RHM

chủ đề O

CÔNG TY TNHH RHM

Chủ đề L

St. Albans

Đối tượng

Hertfordshire

môn C

GB

E-mail

rhm@rhmlimited[.]co.uk

Có hiệu lực từ

2021-03-16 00:00:00

Có hiệu lực đến

2022-03-16 23:59:59

Máy chủ C&C

IP

miền

Lần đầu tiên nhìn thấy

Bình luận

185.25.50 [.] 60

Chessandlinkss[.]com

2021-08-25

Máy chủ C&C Deadglyph.

135.125.78 [.] 187

easymathpath[.]com

2021-09-11

Máy chủ C&C Deadglyph.

45.14.227 [.] 55

tham giahealth[.]com

2022-05-29

Máy chủ C&C của trình tải xuống Shellcode.

Kỹ thuật MITER ATT & CK

Bảng này được tạo bằng cách sử dụng phiên bản 13 của khung MITER ATT & CK.

Chiến thuật

ID

Họ tên

Mô tả

Phát triển nguồn lực

T1583.001

Có được cơ sở hạ tầng: Tên miền

Stealth Falcon đã đăng ký tên miền cho máy chủ C&C và để có được chứng chỉ ký mã.

T1583.003

Có được cơ sở hạ tầng: Máy chủ riêng ảo

Stealth Falcon đã sử dụng các nhà cung cấp dịch vụ lưu trữ VPS cho máy chủ C&C.

T1587.001

Phát triển khả năng: Phần mềm độc hại

Stealth Falcon đã phát triển phần mềm độc hại tùy chỉnh, bao gồm các trình tải tùy chỉnh và cửa hậu Deadglyph.

T1588.003

Đạt được khả năng: Chứng chỉ ký mã

Stealth Falcon đã có được chứng chỉ ký mã.

Thực hiện

T1047

Windows Management Instrumentation

Deadglyph sử dụng WMI để thực thi chuỗi tải của nó.

T1059.003

Bộ thông dịch lệnh và tập lệnh: Windows Command Shell

Công dụng của trình tải xuống Shellcode cmd.exe để xóa chính nó.

T1106

API gốc

Một mô-đun Deadglyph sử dụng TạoProcessWCreateProcessAsUserW Các hàm API để thực thi.

T1204.002

Thực thi người dùng: Tệp độc hại

Chuỗi trình tải xuống shellcode yêu cầu người dùng nhấp đúp và thực thi nó.

Persistence

T1546.003

Thực thi kích hoạt sự kiện: Đăng ký sự kiện công cụ quản lý Windows

Trình tải Deadglyph ban đầu được duy trì bằng cách sử dụng đăng ký sự kiện WMI.

Phòng thủ né tránh

T1027

Tệp hoặc thông tin bị xáo trộn

Các thành phần Deadglyph được mã hóa. Deadglyph Orchestrator và các mô-đun nhúng được làm xáo trộn bằng .NET Reactor.

Trình tải xuống shellcode bị xáo trộn bởi ConfuserEx.

T1070.004

Loại bỏ chỉ báo: Xóa tệp

Deadglyph có thể tự gỡ cài đặt.

Chuỗi trình tải xuống shellcode sẽ tự xóa và xóa các tệp trong bộ đệm WebDAV.

T1112

Sửa đổi sổ đăng ký

Deadglyph lưu trữ cấu hình và tải trọng được mã hóa của nó trong sổ đăng ký.

T1134

Thao túng mã thông báo truy cập

Deadglyph có thể mạo danh người dùng khác.

T1140

Giải mã / giải mã tệp hoặc thông tin

Deadglyph giải mã chuỗi được mã hóa.

Chuỗi trình tải xuống shellcode giải mã các thành phần và cấu hình của nó.

T1218.011

Thực thi proxy nhị phân hệ thống: Rundll32

Trình tải Deadglyph ban đầu được thực thi bằng cách sử dụng rundll32.exe.

T1480.001

Lan can thực thi: Khóa môi trường

Deadglyph được mã hóa bằng khóa dành riêng cho máy có nguồn gốc từ UUID hệ thống.

T1562.001

Phòng thủ Impair: Vô hiệu hóa hoặc sửa đổi các công cụ

Trình tải xuống shellcode tránh quét AMSI bằng cách vá clr.dll trong trí nhớ .

T1620

Đang tải mã phản chiếu

Deadglyph tải phản xạ các mô-đun của nó bằng trình tải PE tùy chỉnh.

khám phá

T1007

Khám phá dịch vụ hệ thống

A Mô-đun Deadglyph phát hiện các dịch vụ bằng truy vấn WMI CHỌN * TỪ Win32_Service.

T1012

Sổ đăng ký truy vấn

Chuỗi trình tải xuống shellcode truy vấn sổ đăng ký cho trình duyệt mặc định.

T1016

Khám phá cấu hình mạng hệ thống

Mô-đun Deadglyph phát hiện bộ điều hợp mạng bằng truy vấn WMI CHỌN * TỪ Win32_NetworkAdapterCHỌN * TỪ Win32_NetworkAdapterConfiguration trong đó InterfaceIndex=%d.

T1033

Chủ sở hữu hệ thống / Khám phá người dùng

Mô-đun Deadglyph phát hiện người dùng bằng truy vấn WMI CHỌN * TỪ Win32_UserAccount.

T1057

Khám phá quy trình

Mô-đun Deadglyph phát hiện các quy trình sử dụng truy vấn WMI CHỌN * TỪ Win32_Process.

T1082

Khám phá thông tin hệ thống

Mô-đun Deadglyph khám phá thông tin hệ thống như phiên bản hệ điều hành, ổ đĩa, biến môi trường và trình điều khiển bằng truy vấn WMI.

T1518

Khám phá phần mềm

Mô-đun Deadglyph phát hiện phần mềm đã cài đặt bằng truy vấn WMI CHỌN * TỪ Win32_Product.

T1518.001

Khám phá phần mềm: Khám phá phần mềm bảo mật

Mô-đun Deadglyph phát hiện phần mềm bảo mật bằng truy vấn WMI CHỌN * TỪ Sản phẩm chống vi-rút, CHỌN * TỪ Sản phẩm AntiSpywareCHỌN * TỪ Tường lửaSản phẩm.

Chuỗi trình tải xuống shellcode kiểm tra các tiến trình đang chạy để tìm giải pháp bảo mật.

Bộ sưu tập

T1005

Dữ liệu từ Hệ thống cục bộ

Deadglyph có một mô-đun để đọc tập tin.

Lệnh và kiểm soát

T1071.001

Giao thức lớp ứng dụng: Giao thức web

Deadglyph và trình tải xuống shellcode giao tiếp với máy chủ C&C thông qua giao thức HTTP.

T1090

Proxy

Deadglyph và trình tải xuống shellcode có thể sử dụng proxy HTTP để liên lạc C&C.

T1573.001

Kênh được mã hóa: Mật mã đối xứng

Deadglyph sử dụng AES để mã hóa thông tin liên lạc C&C.

Lọc

T1041

Lọc qua kênh C2

Deadglyph sử dụng kênh C&C để lọc.

Dấu thời gian:

Thêm từ Chúng tôi sống An ninh