Tập trung chủ yếu vào châu Á, nhóm gián điệp mạng mới này sử dụng các công cụ không có giấy tờ, bao gồm cả việc trích xuất mật mã các tải trọng PowerShell từ các tệp PNG
Các nhà nghiên cứu của ESET gần đây đã phát hiện ra các cuộc tấn công có chủ đích sử dụng các công cụ không có giấy tờ nhằm vào nhiều công ty nổi tiếng và chính quyền địa phương, chủ yếu ở châu Á. Các cuộc tấn công này được thực hiện bởi một nhóm gián điệp chưa được biết đến trước đây mà chúng tôi đặt tên là Worok và nhóm này đã hoạt động ít nhất từ năm 2020. Bộ công cụ của Worok bao gồm trình tải C++ CLRLoad, cửa sau PowerShell PowHeartBeat và trình tải C# PNGLoad sử dụng kỹ thuật steganography để trích xuất phần mềm độc hại ẩn giấu. tải trọng từ các tệp PNG.
Worok là ai?
Trong ProxyShell (CVE-2021-34523) tiết lộ lỗ hổng vào đầu năm 2021, chúng tôi đã quan sát thấy hoạt động từ các nhóm APT khác nhau. Một biểu hiện đặc điểm chung với TA428:
- Thời gian hoạt động
- Ngành dọc được nhắm mục tiêu
- Cách sử dụng ShadowPad
Phần còn lại của bộ công cụ rất khác: ví dụ: TA428 đã tham gia vào Có thể thỏa hiệp với máy tính để bàn vào năm 2020. Chúng tôi cho rằng các liên kết chưa đủ mạnh để coi Worok là cùng một nhóm với TA428, nhưng hai nhóm có thể chia sẻ công cụ và có chung sở thích. Chúng tôi quyết định tạo một cụm và đặt tên là Worok. Tên được chọn theo tên một mutex trong bộ tải được nhóm sử dụng. Hoạt động tiếp theo với các biến thể của cùng một công cụ sau đó đã được liên kết với nhóm này. Theo phép đo từ xa của ESET, Worok đã hoạt động từ cuối năm 2020 và tiếp tục hoạt động cho đến thời điểm viết bài này.
Trở lại cuối năm 2020, Worok đã nhắm mục tiêu vào các chính phủ và công ty ở nhiều quốc gia, cụ thể:
- Một công ty viễn thông ở Đông Á
- Một ngân hàng ở Trung Á
- Một công ty công nghiệp hàng hải ở Đông Nam Á
- Một cơ quan chính phủ ở Trung Đông
- Một công ty tư nhân ở miền nam châu Phi
Có sự gián đoạn đáng kể trong các hoạt động được quan sát từ năm 2021-05 đến năm 2022-01, nhưng hoạt động của Worok đã quay trở lại vào năm 2022-02, nhắm mục tiêu:
- Một công ty năng lượng ở Trung Á
- Một thực thể khu vực công ở Đông Nam Á
Hình 1 trình bày bản đồ nhiệt trực quan của các vùng và ngành dọc được nhắm mục tiêu.
Xem xét hồ sơ của các mục tiêu và các công cụ mà chúng tôi đã thấy được triển khai để chống lại những nạn nhân này, chúng tôi cho rằng mục tiêu chính của Worok là đánh cắp thông tin.
Phân tích kỹ thuật
Mặc dù phần lớn các lượt truy cập ban đầu đều không xác định được, nhưng trong một số trường hợp cho đến năm 2021 và 2022, chúng tôi đã thấy các cách khai thác được sử dụng để chống lại các lỗ hổng ProxyShell. Trong những trường hợp như vậy, các webshell thường được tải lên sau khi khai thác các lỗ hổng này, nhằm mang lại sự ổn định trong mạng của nạn nhân. Sau đó, những người vận hành đã sử dụng nhiều bộ phận cấy ghép khác nhau để đạt được những khả năng cao hơn.
Sau khi đã có được quyền truy cập, các nhà điều hành đã triển khai nhiều công cụ có sẵn công khai để trinh sát, bao gồm Mimikatz, Giun đất, ReGeorgvà quét NBT, sau đó triển khai các bộ cấy tùy chỉnh của họ: trình tải giai đoạn đầu tiên, tiếp theo là trình tải .NET giai đoạn thứ hai (PNGLoad). Thật không may, chúng tôi không thể truy xuất bất kỳ tải trọng cuối cùng nào. Vào năm 2021, trình tải giai đoạn đầu tiên là một tổ hợp CLR (CLRLoad), trong khi vào năm 2022, trong hầu hết các trường hợp, trình tải này đã được thay thế bằng một cửa hậu PowerShell đầy đủ tính năng (PowHeartBeat) – cả hai chuỗi thực thi đều được mô tả trong Hình 2. Ba chuỗi này các công cụ được mô tả chi tiết trong các phần sau.
CLRLoad: Bộ tải lắp ráp CLR
CLRLoad là một Windows PE chung mà chúng ta đã thấy ở cả phiên bản 32 và 64 bit. Nó là một trình tải được viết bằng C++ để tải giai đoạn tiếp theo (PNGLoad), giai đoạn này phải là một Tập hợp thời gian chạy ngôn ngữ chung (CLR) tập tin DLL. Mã đó được tải từ một tệp nằm trên đĩa trong một thư mục hợp pháp, có lẽ là để đánh lừa nạn nhân hoặc người ứng phó sự cố rằng đó là phần mềm hợp pháp.
Một số mẫu CLRLoad bắt đầu bằng cách giải mã đường dẫn đầy đủ của tệp có nội dung mà chúng sẽ tải ở giai đoạn tiếp theo. Các đường dẫn tệp này được mã hóa bằng XOR một byte, với một khóa khác nhau trong mỗi mẫu. Được giải mã hoặc văn bản rõ ràng, các đường dẫn tệp này là tuyệt đối, sau đây là những đường dẫn chúng tôi đã gặp:
- C:Tệp chương trìnhVMwareCông cụ VMwareVMware VGAuthxsec_1_5.dll
- C:Tệp chương trìnhUltraViewermsvbvm80.dll
- C:Tệp chương trìnhInternet ExplorerJsprofile.dll
- C:Tệp chương trìnhWinRarRarExtMgt.dll
- C:Tệp chương trình (x86)Phần mềm FoxitFoxit Readerlucenelib.dll
Tiếp theo, một mutex được tạo và chúng tôi thấy mỗi mẫu có một tên khác nhau. Trình tải sẽ kiểm tra mutex này; nếu tìm thấy, nó sẽ thoát vì trình tải đang chạy. Ở một trong các mẫu, mutex Wo0r0KGWhYGO đã gặp phải, điều này đã đặt tên cho nhóm là Worok.
CLRLoad sau đó tải cụm CLR từ đường dẫn tệp có thể được giải mã. Là mã không được quản lý, CLRLoad đạt được điều này thông qua CorBindToRuntimeEx Lệnh gọi API Windows ở các biến thể 32 bit hoặc CLRTạo sơ thẩm cuộc gọi trong các biến thể 64-bit.
PowHeartBeat: Cửa hậu PowerShell
PowHeartBeat là một cửa hậu đầy đủ tính năng được viết bằng PowerShell, được làm xáo trộn bằng nhiều kỹ thuật khác nhau như nén, mã hóa và mã hóa. Dựa trên phép đo từ xa của ESET, chúng tôi tin rằng PowHeartBeat đã thay thế CLRLoad trong các chiến dịch Worok gần đây hơn làm công cụ được sử dụng để khởi chạy PNGLoad.
Lớp đầu tiên của mã cửa sau bao gồm nhiều đoạn mã PowerShell được mã hóa base64. Sau khi tải trọng được xây dựng lại, nó sẽ được thực thi thông qua IEX. Sau khi được giải mã, một lớp mã bị xáo trộn khác sẽ được thực thi, chúng ta có thể thấy trong Hình 3.
Lớp thứ hai của base64 cửa sau đầu tiên giải mã lớp mã tiếp theo của nó, sau đó được giải mã bằng DES ba lần (chế độ CBC). Sau khi giải mã, mã này được giải nén bằng cách sử dụng gzip thuật toán, do đó tạo ra lớp mã PowerShell thứ ba, đây chính là cửa hậu thực sự. Nó được chia thành hai phần chính: cấu hình và xử lý các lệnh cửa sau.
Lớp mã cửa sau chính cũng được viết bằng PowerShell và sử dụng HTTP hoặc ICMP để liên lạc với máy chủ C&C. Nó hoạt động như mô tả trong Hình 4.
Cấu hình
Cấu hình chứa nhiều trường, bao gồm số phiên bản, cấu hình proxy tùy chọn và địa chỉ C&C. Bảng 1 mô tả ý nghĩa của các trường cấu hình trong các phiên bản khác nhau mà chúng tôi đã quan sát.
Bảng 1. Ý nghĩa trường cấu hình
Tên trường | Mô tả |
---|---|
nouse / ikuyrtydyfg (các mẫu khác) |
Không sử dụng. |
Id khách hàng | Mã định danh khách hàng, được sử dụng cho các mục đích sau: · Là một giá trị khi xây dựng Tiêu đề cookie cho truyền thông C&C. · Là một tạo phẩm mật mã để mã hóa dữ liệu được gửi. |
phiên bản | Số phiên bản của PowHeartBeat. |
ExecTimes | Số lần thử thực hiện được phép khi phát hành một ChạyCmd (lệnh đang chạy) lệnh. |
Đại lý người dùng | Tác nhân người dùng được sử dụng để liên lạc C&C. |
referer | referer tiêu đề được sử dụng cho truyền thông C&C. |
Chấp nhậnMã hóa | Không sử dụng. |
Id khách hàng Cookie Id tác vụ cookie Id thiết bị đầu cuối cookie |
Các giá trị được sử dụng để xây dựng Cookie tiêu đề cho truyền thông C&C. |
UrlHttps | Giao thức sử dụng cho truyền thông C&C. |
Tên miền Url Địa chỉ IP Tên miền |
URL, (các) tên miền hoặc địa chỉ IP được sử dụng làm máy chủ C&C. Nếu như Tên miền không trống, nó được chọn thay vì Địa chỉ IP. Trong những trường hợp khác, Địa chỉ IP được thực hiện. |
UrlGửiTimNhịp đập | Đường dẫn URL được sử dụng khi cửa sau yêu cầu máy chủ C&C đưa ra lệnh. |
UrlGửiKết quả | Đường dẫn URL được sử dụng khi cửa hậu gửi kết quả của lệnh trở lại máy chủ C&C. |
GetUrl | URL hoàn chỉnh, được PowHeartBeat sử dụng để yêu cầu lệnh từ máy chủ C&C. Nó là sự ghép nối của các thành phần URL ở trên. |
ĐặtUrl | Giống như GetUrl nhưng được sử dụng để gửi kết quả của lệnh trở lại máy chủ C&C. |
đường dẫn hiện tại | Không sử dụng. |
Cờ kích hoạt proxy | Cờ cho biết cửa sau có phải sử dụng proxy hay không để liên lạc với máy chủ C&C. |
tin nhắn proxy | Địa chỉ của proxy sẽ sử dụng nếu Cờ kích hoạt proxy được thiết lập để $ true. |
Khoảng thời gian | Thời gian tính bằng giây mà tập lệnh ngủ giữa các yêu cầu GET. |
Đường dẫn cấu hình cơ bản | Đường dẫn đến tệp cấu hình tùy chọn có chứa Thời gian hoạt động, Thời gian ngừng hoạt động, Khoảng thời gian mặc địnhvà Tên miền. Những giá trị đó sẽ bị ghi đè nếu có tệp. |
Thời gian hoạt động | Thời điểm trong ngày mà cửa sau bắt đầu hoạt động, nghĩa là nó bắt đầu thực hiện các yêu cầu GET tới máy chủ C&C. |
Thời gian ngừng hoạt động | Thời gian trong ngày mà backdoor có thể hoạt động, nghĩa là thời điểm nó ngừng gửi yêu cầu tới máy chủ C&C. |
Chỉ số tên miền | Chỉ mục tên miền hiện tại được sử dụng để liên lạc với máy chủ C&C. Trong trường hợp yêu cầu trả về thông báo lỗi khác với 304 (“Không được sửa đổi”), Chỉ số tên miền được tăng lên. |
Chìa khoá bí mật | Khóa dùng để giải mã/mã hóa cấu hình. Cấu hình được mã hóa bằng XOR nhiều byte. |
NếuNhật ký | Không sử dụng. |
IfLogFilePath | Cờ cho biết liệu ghi nhật ký có được bật hay không. |
lối đi | Đường dẫn của tệp nhật ký. |
Tệp proxy | Đường dẫn tệp của cấu hình proxy tùy chọn. Nếu nó trống hoặc không được tìm thấy trong hệ thống tệp, cửa sau sẽ truy xuất cài đặt proxy của người dùng từ giá trị đăng ký HKCUSoftwareMicrosoftWindowsCurrentVersionInternet SettingProxyServer . |
IfConfig | Cờ cho biết có nên sử dụng tệp cấu hình hay không. |
Hình 5 hiển thị ví dụ về cấu hình được trích xuất từ mẫu PowHeartBeat (SHA-1: 757ABA12D04FD1167528FDD107A441D11CD8C427).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$Script:nouse = 100; if(Test-Path $MyInvocation.MyCommand.Path){Remove-item $MyInvocation.MyCommand.Path -Force;} $Script:ClientId = “83”; $Script:Version = “2.1.3.0003”; $Script:ExecTimes = 10; $Script:UserAgent = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3487.100 Safari/537.36”; $Script:Referer = “www.adobe.com”; $Script:AcceptEncoding = “text/html,app1ication/xhtml+xml,app1ication/xml;q=0.9,*/*;q=0.8”; $Script:CookieClientId = “s_ecid”; $Script:CookieTaskId = “aam_uuid”; $Script:CookieTerminalId = “AAMC_adobe_0”; $Script:UrlHttps = “http://”; $Script:UrlDomain= ” 118.193.78[.]22:443″; $Script:UrlSendHeartBeat = “/latest/AdobeMessagingClient.js”; $Script:UrlSendResult = “/content/dam/offers-homepage/homepage.jpg”; $Script:GetUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendHeartBeat; $Script:PutUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendResult; $Script:currentPath = Split-Path -Parent $MyInvocation.MyCommand.Definition; $Script:ProxyEnableFlag = $false; $Script:Proxymsg; $Script:Interval = 10 ; $Script:BasicConfigPath = “C:ProgramDataunins.dat”; $Script:UpTime = 0; $Script:DownTime = 24; $Script:Domains; $Script:DomainIndex; $Script:SecretKey = “###ConfigKey###”; #$Script:IfLog = $true; $Script:IfLogFilePath = “C:ProgramDatatpncp.dat”; $Script:logpath = “C:ProgramDataunins000.dat”; $Script:ProxyFile = “C:ProgramDatahwrenalm.dat”; $Script:IfConfig = $false; |
Hình 5. Ví dụ cấu hình
Mã hóa dữ liệu
PowHeartBeat mã hóa nhật ký và nội dung tệp cấu hình bổ sung.
Nội dung tệp nhật ký được mã hóa thông qua XOR nhiều byte với khóa được chỉ định ở dạng văn bản rõ ràng trong mẫu. Một cách thú vị, mã khách hàng được sử dụng làm muối cho chỉ mục vào mảng khóa. Khóa là một mảng 256 byte, giống hệt nhau trong mọi mẫu mà chúng tôi gặp. Nội dung tệp cấu hình bổ sung được mã hóa thông qua XOR nhiều byte với giá trị từ Chìa khoá bí mật như chìa khóa của nó.
Truyền thông C&C
PowHeartBeat đã sử dụng HTTP để liên lạc C&C cho đến phiên bản 2.4, sau đó chuyển sang ICMP. Trong cả hai trường hợp, thông tin liên lạc không được mã hóa.
HTTP
Trong một vòng lặp vô hạn, backdoor gửi yêu cầu GET đến máy chủ C&C, yêu cầu phát lệnh. Câu trả lời được mã hóa sẽ được giải mã bởi cửa sau, cửa sau xử lý lệnh và ghi đầu ra lệnh vào một tệp có nội dung sau đó được gửi đến máy chủ C&C thông qua yêu cầu POST.
Định dạng của các yêu cầu GET như sau:
GET <UrlSendHeartBeat> HTTP/1.1 User-Agent: <UserAgent> Referer: <Referer> Host: <Domain> Cookie: <CookieClientId>=<ClientId> Connection: close |
Lưu ý rằng yêu cầu được xây dựng bằng cách sử dụng các trường cấu hình cùng tên.
Trong phản hồi từ máy chủ C&C, byte thứ ba của nội dung là mã định danh lệnh cho biết lệnh sẽ được xử lý bởi cửa sau. Chúng tôi sẽ gọi nó lệnh_id. Nội dung còn lại của phản hồi sẽ được chuyển dưới dạng đối số cho lệnh được xử lý. Nội dung này được mã hóa bằng thuật toán như trong Hình 6, id nhiệm vụ là giá trị của cookie được đặt tên theo Id tác vụ cookiegiá trị của từ cấu hình.
1 2 3 4 5 6 7 8 9 10 |
o[int] $pos = $taskId % 256; for ($i = 0; $i -lt $tmpBytes.Value.Length; $i++) { $pos = $pos + $clientId; if ($pos -ge 256) { $pos = $pos % 256; } $tmpBytes.Value[$i] = [byte]($tmpBytes.Value[$i] -bxor $hexEnc[$pos]); } |
Hình 6. Thuật toán mã hóa dữ liệu nội dung yêu cầu
Phản hồi từ máy chủ C&C cũng chứa một cookie khác, có tên được chỉ định bởi cửa hậu. Id thiết bị đầu cuối cookie biến cấu hình. Giá trị của cookie này được lặp lại trong yêu cầu POST từ cửa sau và không được để trống. Sau khi thực thi lệnh backdoor, PowHeartBeat sẽ gửi kết quả dưới dạng yêu cầu POST tới máy chủ C&C. Kết quả được gửi dưới dạng một tập tin có tên là .png.
ICMP
Bắt đầu từ phiên bản 2.4 của PowHeartBeat, HTTP đã được thay thế bằng ICMP, các gói được gửi có thời gian chờ là sáu giây và đang được không bị phân mảnh. Giao tiếp qua ICMP rất có thể là một cách để tránh bị phát hiện.
Không có thay đổi lớn nào trong phiên bản 2.4 trở lên, nhưng chúng tôi nhận thấy một số sửa đổi trong mã:
- PowHeartBeat gửi gói nhịp tim ở mỗi vòng lặp chứa chuỗi a B C D E F G H I J K L M O P Q R S T U V w x y z, trước khi yêu cầu một lệnh. Điều này thông báo cho máy chủ C&C rằng cửa hậu đã sẵn sàng nhận lệnh.
- Yêu cầu nhận lệnh được thực hiện bởi backdoor chứa chuỗi abcdefghijklmnop.
Các gói nhịp tim có định dạng được mô tả trong Hình 7.
Sự khác biệt giữa ID khách hàng và cờ khách hàng là ID khách hàng khác nhau ở mỗi mẫu trong khi cờ khách hàng giống nhau ở mọi mẫu sử dụng ICMP. cờ nhịp tim cho biết cửa sau đang gửi nhịp tim. Phản hồi từ máy chủ C&C có định dạng được mô tả trong Hình 8.
cờ ở đây cho biết liệu có lệnh gửi tới cửa sau hay không. Yêu cầu nhận lệnh có định dạng được mô tả trong Hình 9.
Lưu ý rằng chế độ ICMP của backdoor cho phép nhận lượng dữ liệu không giới hạn, được chia thành các khối và các biến độ dài dữ liệu, vị trí hiện tại và Tổng chiều dài được sử dụng để theo dõi dữ liệu được truyền. Phản hồi cho những yêu cầu này có định dạng được mô tả trong Hình 10.
Giống như trong phản hồi HTTP, mã định danh lệnh là byte thứ ba của dữ liệu.
Sau bảy phản hồi ICMP liên tiếp với nội dung trống hoặc được định dạng không nhất quán, quá trình truyền giữa backdoor và máy chủ C&C được coi là hoàn tất.
Liên quan đến các yêu cầu gửi kết quả của lệnh đã ban hành đến máy chủ C&C, chế độ máy chủ được thay đổi đối với chế độ đăng và chuỗi cuối cùng (abcdefghijklmnop) được thay đổi đối với dữ liệu kết quả.
Lệnh backdoor
PowHeartBeat có nhiều khả năng khác nhau, bao gồm thực thi lệnh/quy trình và thao tác với tệp. Bảng 2 liệt kê tất cả các lệnh được hỗ trợ bởi các mẫu được phân tích khác nhau.
Bảng 2. Mô tả lệnh PowHeartBeat
Họ tên | Mã định danh lệnh | Mô tả |
---|---|---|
Cmd | 0x02 | Thực thi lệnh PowerShell. |
exe | 0x04 | Thực hiện lệnh dưới dạng quá trình. |
Tải lên tệp | 0x06 | Tải một tập tin lên máy nạn nhân. Nội dung tệp được nén bằng gzip. |
Tập tin tải về | 0x08 | Tải xuống tệp từ máy nạn nhân và trả về đường dẫn tệp, độ dài tệp, thời gian tạo, thời gian truy cập và nội dung tệp về máy chủ C&C. |
Xem tập tin | 0x0A | Lấy thông tin file của một thư mục cụ thể, cụ thể: · Tên tập tin · Thuộc tính tập tin · Lần viết cuối cùng · Nội dung tập tin |
Xóa tệp | 0x0C | Xóa tệp. |
Đổi tên tệp | 0x0E | Đổi tên hoặc di chuyển một tập tin. |
Thay đổiDir | 0x10 | Thay đổi vị trí làm việc hiện tại của backdoor. |
Thông tin | 0x12 | Nhận một danh mục thông tin theo đối số được chỉ định: · "Thông tin cơ bản": Id khách hàng, phiên bản, tên máy chủ, địa chỉ IP, explorer.exe thông tin về phiên bản và kích thước, hệ điều hành (kiến trúc và cờ cho biết máy có phải là máy chủ hay không), Khoảng thời gian, thư mục hiện tại, thông tin ổ đĩa (tên, loại, dung lượng trống và tổng kích thước), thời gian hiện tại · “Thông tin về khoảng thời gian”: Khoảng thời gian và thời điểm hiện tại · “Thông tin tên miền”: nội dung file cấu hình được giải mã |
Config | 0x14 | Cập nhật nội dung file cấu hình và tải lại cấu hình. |
N/A | 0x63 | Lối ra cửa sau. |
Trong trường hợp có lỗi ở phía cửa sau, cửa sau sử dụng mã định danh lệnh cụ thể 0x00 trong yêu cầu POST tới máy chủ C&C, do đó cho biết đã xảy ra lỗi.
Lưu ý rằng trước khi gửi thông tin trở lại máy chủ C&C, dữ liệu sẽ được nén bằng gzip.
PNGLoad: Trình tải Steganographic
PNGLoad là tải trọng giai đoạn hai được Worok triển khai trên các hệ thống bị xâm nhập và theo phép đo từ xa của ESET, được tải bằng CLRLoad hoặc PowHeartBeat. Mặc dù chúng tôi không thấy bất kỳ mã nào trong PowHeartBeat tải trực tiếp PNGLoad, nhưng cửa sau có khả năng tải xuống và thực thi các tải trọng bổ sung từ máy chủ C&C. Đây có thể là cách kẻ tấn công đã triển khai PNGLoad trên các hệ thống bị xâm phạm bằng PowHeartBeat. PNGLoad là một trình tải sử dụng byte từ các tệp PNG để tạo tải trọng để thực thi. Nó là một tệp thực thi .NET 64-bit – được mã hóa bằng Lò phản ứng .NET – giả mạo là phần mềm hợp pháp. Ví dụ: Hình 11 hiển thị các tiêu đề CLR của một mẫu giả mạo dưới dạng DLL WinRAR.
Sau khi được giải mã, chỉ có một lớp hiện diện. Trong lớp này có một Đường dẫn chính thuộc tính chứa đường dẫn thư mục mà backdoor tìm kiếm, bao gồm cả các thư mục con của nó, để tìm các tệp có phần mở rộng . Png mở rộng, như trong Hình 12.
Mỗi trang web . Png tập tin được định vị bởi tìm kiếm này Đường dẫn chính sau đó được kiểm tra nội dung được nhúng dưới dạng steganographic. Đầu tiên, bit có ý nghĩa nhỏ nhất của các giá trị R (đỏ), G (xanh lục), B (xanh lam) và A (alpha) của mỗi pixel được tìm nạp và tập hợp thành bộ đệm. Nếu tám byte đầu tiên của bộ đệm đó khớp với số ma thuật được thấy trong Hình 13 và giá trị tám byte tiếp theo, control, không phải là null, thì tệp sẽ vượt qua quá trình kiểm tra nội dung steganographic của PNGLoad. Đối với các tệp như vậy, quá trình xử lý tiếp tục với phần còn lại của bộ đệm được giải mã bằng XOR nhiều byte, sử dụng khóa được lưu trong PNGLoad SecretKeyByte thuộc tính, sau đó bộ đệm được giải mã sẽ được giải nén bằng gzip. Kết quả dự kiến là một tập lệnh PowerShell được chạy ngay lập tức.
Điều thú vị là các hoạt động được thực hiện bởi PNGLoad được ghi vào một tệp có đường dẫn được lưu trong biến Đường dẫn tệp nhật ký. Các hoạt động chỉ được ghi lại nếu có một tệp có đường dẫn được chỉ định bởi biến nội bộ IfLogFilePath.
Chúng tôi không thể lấy được mẫu . Png được sử dụng cùng với PNGLoad, nhưng cách PNGLoad hoạt động cho thấy rằng nó sẽ hoạt động với các tệp PNG hợp lệ. Để ẩn tải trọng độc hại, Worok sử dụng các đối tượng Bitmap trong C#, đối tượng này chỉ lấy thông tin pixel từ các tệp chứ không lấy siêu dữ liệu của tệp. Điều này có nghĩa là Worok có thể ẩn các tải trọng độc hại của nó trong các hình ảnh PNG hợp lệ, trông vô hại và do đó ẩn giấu ở nơi dễ thấy.
Kết luận
Worok là một nhóm gián điệp mạng phát triển các công cụ của riêng mình cũng như tận dụng các công cụ hiện có để xâm phạm các mục tiêu của mình. Đánh cắp thông tin từ nạn nhân là điều mà chúng tôi tin rằng những kẻ điều hành đang theo đuổi vì chúng tập trung vào các thực thể nổi tiếng ở Châu Á và Châu Phi, nhắm mục tiêu vào nhiều lĩnh vực khác nhau, cả tư nhân và công cộng, nhưng đặc biệt chú trọng đến các thực thể chính phủ. Thời gian hoạt động và bộ công cụ cho thấy mối liên hệ có thể xảy ra với TA428, nhưng chúng tôi đưa ra đánh giá này với độ tin cậy thấp. Bộ công cụ tùy chỉnh của họ bao gồm hai bộ tải – một trong C++ và một trong C# .NET – và một cửa hậu PowerShell. Mặc dù khả năng hiển thị của chúng tôi còn hạn chế nhưng chúng tôi hy vọng rằng việc làm sáng tỏ nhóm này sẽ khuyến khích các nhà nghiên cứu khác chia sẻ thông tin về nhóm này.
ESET Research hiện cũng cung cấp các báo cáo tình báo APT và nguồn cấp dữ liệu riêng. Đối với bất kỳ câu hỏi nào 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 | Tên phát hiện ESET | Bình luận |
---|---|---|---|
3A47185D0735CDECF4C7C2299EB18401BFB328D5 | kịch bản | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
27ABB54A858AD1C1FF2863913BDA698D184E180D | kịch bản | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
678A131A9E932B9436241402D9727AA7D06A87E3 | kịch bản | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
757ABA12D04FD1167528FDD107A441D11CD8C427 | kịch bản | PowerShell/PowHeartBeat.B | PowHeartBeat 2.1.3.0003. |
54700A48D934676FC698675B4CA5F712C0373188 | kịch bản | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F53C138CB1B87D8FC9253A7088DB30B25389AF | kịch bản | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F1954DE11F72A46A4E823DE767210A3743B205 | tmp.ps1 | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0004. |
CE430A27DF87A6952D732B4562A7C23BEF4602D1 | tmp.ps1 | PowerShell/PowHeartBeat.A | PowHeartBeat 2.1.3.0004. |
EDE5AB2B94BA85F28D5EE22656958E4ECD77B6FF | kịch bản | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
4721EEBA13535D1EE98654EFCE6B43B778F13126 | vix64.dll | MSIL/PNGLoader.A | PNGLoader. |
728A6CB7A150141B4250659CF853F39BFDB7A46C | RarExtMgt.dll | MSIL/PNGLoader.A | PNGLoader. |
864E55749D28036704B6EA66555A86527E02AF4A | Jsprofile.dll | MSIL/PNGLoader.A | PNGLoader. |
8DA6387F30C584B5FD3694A99EC066784209CA4C | vssxml.dll | MSIL/PNGLoader.A | PNGLoader. |
AA60FB4293530FBFF00D200C0D44EEB1A17B1C76 | xsec_1_5.dll | MSIL/PNGLoader.A | PNGLoader. |
B2EAEC695DD8BB518C7E24C4F37A08344D6975BE | MSVBVM80.DLL | MSIL/PNGLoader.A | PNGLoader. |
CDB6B1CAFEE098615508F107814179DEAED1EBCF | lucenelib.dll | MSIL/PNGLoader.A | PNGLoader. |
4F9A43E6CF37FF20AE96E564C93898FDA6787F7D | vsstrace.dll | Win64/CLRLoad.C | CLRTải. |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 | ncrypt.dll | Win32/CLRLoad.A | CLRTải. |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C | ncrypt.dll | Win32/CLRLoad.A | CLRTải. |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 | wlbsctrl.dll | Win64/CLRLoad.E | CLRTải. |
05F19EBF6D46576144276090CC113C6AB8CCEC08 | wlbsctrl.dll | Win32/CLRLoad.A | CLRTải. |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 | secur32.dll | Win64/CLRLoad.H | CLRTải. |
CBF42DCAF579AF7E6055237E524C0F30507090F3 | dbghelp.dll | Win64/CLRLoad.C | CLRTải. |
Đường dẫn tệp
Một số Đường dẫn chính, Đường dẫn tệp nhật ký và IfLogFilePath các giá trị mà chúng tôi gặp phải trong các mẫu PNGLoad:
Đường dẫn chính | Đường dẫn tệp nhật ký | IfLogFilePath |
---|---|---|
C:Tệp chương trìnhVMwareCông cụ VMware | C:Tệp chương trìnhVMwareCông cụ VMwareVMware VGAuthreadme.txt | C:Tệp chương trìnhVMwareCông cụ VMwareVMware VGAuthVMWSU_V1_1.dll |
C:Tệp chương trìnhWinRar | C:Tệp chương trìnhWinRarrarinstall.log | C:Tệp chương trìnhWinRardes.dat |
C:Tệp chương trìnhUltraViewer | C:Tệp chương trìnhUltraViewerCopyRights.dat | C:Tệp chương trìnhUltraVieweruvcr.dll |
mạng
miền | IP |
---|---|
Không áp dụng | 118.193.78 [.] 22 |
Không áp dụng | 118.193.78 [.] 57 |
máy bay.travel-commercials[.]đại lý | 5.183.101 [.] 9 |
Central.suhypercloud[.]org | 45.77.36 [.] 243 |
Mutexes
Trong các mẫu CLRLoad, tên mutex mà chúng tôi gặp là:
aB82UduGX0EX
ad8TbUIZl5Ga
Mr2PJVxbIBD4
oERiQtKLgPgK
U37uxsCsA4Xm
Wo0r0KGWhYGO
xBUjQR2vxYTz
zYCLBWekRX3t
3c3401ad-e77d-4142-8db5-8eb5483d7e41
9xvzMsaWqxMy
Bạn có thể tìm thấy danh sách đầy đủ các Chỉ số Thỏa hiệp (IoC) và các mẫu trong kho GitHub của chúng tôi.
Kỹ thuật MITER ATT & CK
Bảng này được tạo bằng cách sử dụng phiên bản 11 của khung MITER ATT & CK.
Chiến thuật | ID | Họ tên | Mô tả |
---|---|---|---|
Trinh sát | T1592.002 | Thu thập Thông tin Máy chủ Nạn nhân: Phần mềm | PowHeartBeat tập hợp của explorer.exe thông tin. |
T1592.001 | Thu thập thông tin máy chủ nạn nhân: Phần cứng | PowHeartBeat thu thập thông tin về ổ đĩa. | |
T1590.005 | Thu thập Thông tin Mạng của Nạn nhân: Địa chỉ IP | PowHeartBeat thu thập địa chỉ IP của máy tính bị xâm nhập. | |
Phát triển nguồn lực | T1583.004 | Có được cơ sở hạ tầng: Máy chủ | Worok sử dụng máy chủ C&C của riêng mình. |
T1588.002 | Có được khả năng: Công cụ | Worok đã triển khai nhiều công cụ có sẵn công khai trên các máy bị xâm nhập. | |
T1583.001 | Có được cơ sở hạ tầng: Tên miền | Worok đã đăng ký các miền để tạo điều kiện thuận lợi cho việc liên lạc và dàn dựng C&C. | |
T1588.005 | Có được khả năng: Khai thác | Worok đã lợi dụng lỗ hổng ProxyShell. | |
T1587.001 | Phát triển khả năng: Phần mềm độc hại | Worok đã phát triển phần mềm độc hại của riêng mình: CLRLoad, PNGLoad, PowHeartBeat. | |
T1587.003 | Phát triển khả năng: Chứng chỉ kỹ thuật số | Worok đã tạo chứng chỉ SSL Let's Encrypt để kích hoạt xác thực TLS lẫn nhau cho phần mềm độc hại. | |
Thực hiện | T1059.001 | Trình thông dịch Lệnh và Tập lệnh: PowerShell | PowHeartBeat được viết bằng PowerShell. |
Persistence | T1505.003 | Thành phần phần mềm máy chủ: Web Shell | Worok sử dụng webshell ReGeorg. |
Phòng thủ né tránh | T1140 | Giải mã / giải mã tệp hoặc thông tin | Worok sử dụng nhiều sơ đồ dựa trên XOR tùy chỉnh khác nhau để mã hóa chuỗi và nhật ký trong PowHeartBeat, PNGLoad và CLRLoad. |
T1036.005 | Giả mạo: Khớp tên hoặc vị trí hợp pháp | Các mẫu PNGLoad được triển khai trong các thư mục VMWare trông hợp pháp. | |
Quyền truy cập thông tin xác thực | T1003.001 | Bán phá giá thông tin xác thực hệ điều hành: Bộ nhớ LSASS | Worok sử dụng Mimikatz để kết xuất thông tin xác thực từ bộ nhớ LSASS. |
khám phá | T1082 | Khám phá thông tin hệ thống | PowHeartBeat thu thập thông tin hệ điều hành. |
T1083 | Khám phá tệp và thư mục | PowHeartBeat có thể liệt kê các tập tin và thư mục. | |
T1046 | Khám phá dịch vụ mạng | Công dụng của Workok Quét Nbt để lấy thông tin mạng trên các máy bị xâm nhập. | |
T1124 | Khám phá thời gian hệ thống | PowHeartBeat thu thập thông tin thời gian của nạn nhân. | |
Bộ sưu tập | T1005 | Dữ liệu từ Hệ thống cục bộ | PowHeartBeat thu thập dữ liệu từ hệ thống cục bộ. |
T1560.002 | Lưu trữ dữ liệu đã thu thập: Lưu trữ qua Thư viện | PowHeartBeat gzip nén dữ liệu trước khi gửi đến máy chủ C&C. | |
Lệnh và kiểm soát | T1071.001 | Giao thức lớp ứng dụng: Giao thức web | Một số biến thể PowHeartBeat sử dụng HTTP làm giao thức liên lạc với máy chủ C&C. |
T1090.001 | Proxy: Proxy nội bộ | PowHeartBeat xử lý cấu hình proxy trên máy của nạn nhân. | |
T1001.002 | Làm xáo trộn dữ liệu: Steganography | PNGLoad trích xuất các giá trị pixel từ . Png các tập tin để xây dựng lại tải trọng. | |
T1573.002 | Kênh được mã hóa: Mật mã không đối xứng | PowHeartBeat xử lý liên lạc HTTPS với máy chủ C&C. | |
T1095 | Giao thức lớp không ứng dụng | Một số biến thể PowHeartBeat sử dụng ICMP làm giao thức liên lạc với máy chủ C&C. | |
T1132.001 | Mã hóa dữ liệu: Mã hóa tiêu chuẩn | Worok sử dụng mã hóa XOR trong PowHeartBeat và PNGLoad. | |
T1132.002 | Mã hóa dữ liệu: Mã hóa không chuẩn | Worok sử dụng thuật toán mã hóa XOR sử dụng thêm muối. | |
Lọc | T1041 | Lọc qua kênh C2 | PowHeartBeat sử dụng kênh liên lạc C&C của mình để lọc thông tin. |
- blockchain
- thiên tài
- ví tiền điện tử
- trao đổi tiền điện tử
- an ninh mạng
- tội phạm mạng
- An ninh mạng
- bộ phận an ninh quê hương
- ví kỹ thuật số
- Nghiên cứu ESET
- tường lửa
- Kaspersky
- phần mềm độc hại
- macfee
- NexBLOC
- plato
- Plato ai
- Thông tin dữ liệu Plato
- Trò chơi Plato
- PlatoDữ liệu
- Platogaming
- VPN
- Chúng tôi sống An ninh
- bảo mật website
- zephyrnet