MÃ ĐỘC PETYA

  -  

Trỗi dậy từ đống tro tàn của Wannacry, một tai hại mới bắt đầu: Petya. Trong nhị năm năm 2016 và 2017, ransomware Petya cùng những đổi mới thể của chính nó đã ảnh hưởng đến mặt hàng nghìn máy vi tính trên toàn vắt giới. Ngay sau khoản thời gian ransomware Wannacry vừa có tín hiệu lắng xuống, Petya nỗi lên như 1 sự thay thế sửa chữa hoàn hảo.

Bạn đang xem: Mã độc petya

Điểm đặc trưng của loại malware này là nó ko mã hóa những tập tin dữ liệu của người dùng mà biến đổi Master Boot Record(MBR) cùng mã hóa Master file Table (MFT) khiến cho tất cả những người dùng thậm chí còn còn ko boot được vào hệ điều hành.

Theo những nguồn thông tin, cuộc tiến công của ransomware Petya bắt đầu từ công ty M.E.Doc, một doanh nghiệp kiểm toán tất cả trụ sở tại Ukrainian, thông qua ứng dụng của M.E.Doc tất cả chứa Petya trong một bạn dạng cập nhật. Ko kể ra, Petya còn được chèn trong số file văn bạn dạng được gửi bao gồm chủ đích tới những cơ quan tổ chức triển khai khi người tiêu dùng mở lên thì ransomware vẫn lừa người tiêu dùng kích hoạt marco tất cả sẵn trong số phiên bản của Office.

*

Stage 1: High level

Trên không gian mạng bây giờ có tương đối nhiều biến thể của ransomware Petya mà lại trong bài viết này ta sẽ tập trung phân tích mẫu:

SHA-256:26b4699a7b9eeb16e76305d843d4ab05e94d43f3201436927e13b3ebafa90739

Ta dễ dãi nhận ra mẫu mã ransomware cần được được unpack trước lúc thực thi những lệnh thực. Trong quá trình debug malware có gọi đến các hàm như VirtualProtect cùng VirtualAlloc để phân bổ và biến hóa quyền của một vùng lưu giữ mới. Bỏng đoán ràng đây vẫn là vùng nhớ cất mã thực của malware sau khoản thời gian unpack. Vậy cần ta chỉ việc đặt breakpoint nghỉ ngơi điểm đầu của vùng nhớ mới được tạo ra và đó là kết quả:

*

Như ta thấy trong hình trên, trong cửa sổ hexdump là header của một pe file. Dump tổng thể section này ra ta thu được một file Setup.dll với rất đầy đủ import table rất đơn giản đọc.

*

Đi qua lần lượt những hàm được thực hiện trong tệp tin Setup.dll lúc được khởi chạy. Đầu tiên, ransomware Petya lấy tin tức ổ cứng của nạn nhân bằng hàm DeviceIoControl nhằm láy địa điểm vật lý của một volume trên ổ cứng, tin tức về chủng loại, kích thước, tích chất của phân vùng ổ cứng(bằng IOCTL_DISK_GET_PARTITION_INFO_EX, PARTITION_INFORMATION_EX, ). Dưới đấy là pseudocode hàm đem vị trí đồ dùng lý của một volumn trên một hoặc nhiều ổ cứng:

v1 = this; BytesReturned = 0; v2 = GetSystemDirectoryA(0, 0); v3 = v2; if ( !v2 ) return 0; v5 = (CHAR *)sub_239090(v2); if ( !GetSystemDirectoryA(v5, v3) ) return 0; *(_DWORD *)FileName = 1546542172; v9 = *v5; v10 = 58; sub_239070(v5); v6 = CreateFileA(FileName, 0, 3u, 0, 3u, 0, 0); if ( v6 == (HANDLE)-1 ) CloseHandle((HANDLE)0xFFFFFFFF); return 0; DeviceIoControl(v6, 0x560000u, 0, 0, &OutBuffer, 0x20u, &BytesReturned, 0); // trong số đó 0x560000 là IoControlCode được cụ lần lượt là 0x70048, 0x70000 trong những hàm còn lại để đưa thông tin ổ đĩa CloseHandle(v6); qmemcpy(v1, "\\.\PhysicalDrive", 17); v1<17> = v12 + 48; v1<18> = 0; return 1;Tạo một buffer chứa links trả tiền chuộc “hxxp://petya5koahtsf7sv<.>onion/”, “hxxp://petya37h5tbhyvki<.>onion/” Ransom Note. Và điện thoại tư vấn đến hàm CryptGenRandom để tạo thành khóa cá nhân của nạn nhân:

_DWORD *v4; // edi v4 = (_DWORD *)phProv; *(_DWORD *)phProv = 0; if ( !CryptAcquireContextA(&phProv, 0, 0, 1u, 0xF0000000) ) return -60; if ( !CryptGenRandom(phProv, dwLen, pbBuffer) ) return -60; CryptReleaseContext(phProv, 0); *v4 = dwLen; return 0;Tiếp đến, ransomware Petya đocghi tài liệu MBR. Sau đó, ép thứ khởi rượu cồn lại bằng phương pháp dùng hàm NtRaiseHardError:

v0 = GetCurrentProcess(); if ( !OpenProcessToken(v0, 0x28u, &TokenHandle) ) return 0; LookupPrivilegeValueA(0, "SeShutdownPrivilege", (PLUID)NewState.Privileges); NewState.PrivilegeCount = 1; NewState.Privileges<0>.Attributes = 2; AdjustTokenPrivileges(TokenHandle, 0, &NewState, 0, 0, 0); if ( GetLastError() ) return 0; v2 = GetModuleHandleA("NTDLL.DLL"); v3 = GetProcAddress(v2, "NtRaiseHardError"); ((void (__cdecl *)(signed int, _DWORD, _DWORD, _DWORD, signed int, char *))v3)(-1073740976, 0, 0, 0, 6, &v5); return 1;

Stage 2: Low level

Giờ ta so sánh mã độc được chèn vào MBR của ổ đĩa:
*

Từ hiệu quả dump ra từ .PhysicalDrive0 ta có:

Sector 0: Điểm được bootloader độc đầu tiênSector 1-33: cục bộ là 0x37Sector 34-49: Đoạn kernel của malwareSector 50-53: TrốngSector 54: Nonce, CNC với Personal KeySector 55-56: Data được mã hóa

Khi thứ khởi đụng đoạn mã của malware sẽ tiến hành thực thi:

*

Để đọc sector tử ổ đĩa nó thực hiện interrupt 13

*

Tiếp đến, Malware sẽ kiểm tra xem MBR đã trở nên mã hóa chưa?

*

Nếu chưa mã hóa, Petya sử dụng thuật toán Salsa20 để khóa MFT.

Xem thêm: Hari Won Trầm Trồ Trước Những Cú Nhảy Parkour Space Run, Nhảy Parkour

MFT (Master tệp tin Table) là thành phần đặc biệt quan trọng nhất trong hệ thống NTFS. MFT chứa thông tin về tất cả các tập tin cùng thư mục trong ổ đĩa logic.

Sau lúc mã hóa xong xuôi màn hình chính sẽ tiến hành hiển thị

*
*

Khi người dùng nhập key Petya sẽ bình chọn định dạng của key:

Có độ lâu năm 16 byteChỉ đồng ý các ký tự 123456789abcdefghijkmnopqrstuvwxABCDEFGHJKLMNPQRSTUVWX

Mặc dù, ta trả toàn có thể bypass check_key bằng cách đổi địa chỉ cửa hàng của một số hàm jump nhưng bởi thế cũng không giải thuật được MFT. Tuy nhiên, do giới hạn về kích cỡ của các sector buộc phải malware Petya không hẳn sử dụng salsa20 nhưng là salsa10. Với độ dài ngắn do vậy ta trả toàn có thể brute force được key nhằm giải mã.

Trong quy trình giải mã của Petya ta thấy:

Petya load lên bộ lưu trữ 512 byte của sector đồ vật 55(đây là dữ liệu cần được giải mã)Petya load lên bộ nhớ lưu trữ 8 byte nghỉ ngơi offset 0x6c21 ngay trước CNC vào sector vật dụng 54(đây là nonce)
*

Ta có được bản mã và nonce. Ta hoàn toàn hoàn toàn có thể đọc thuật toàn của salsa với tự viết script brute force hoặc áp dụng script được viết bằng golang của một anh bạn rất xuất sắc bụng leo-stone.

Xem thêm: Cách Lên Đồ Kog Maw Ap - Cách Chơi Kog'Maw Mùa 12

*

Tổng kết

Việc tạo thành một ransomware được khởi chạy nghỉ ngơi boot sector, mã hóa MBR với MFT là 1 trong hướng đi siêu thú vị. Tuy nhiên, việc xúc tiến malware bên dưới tầng kernel đã tạo ra một vài ba lỗ hổng trong những khi triển khai thuật toán mã hóa giúp cho bạn có thể giải mã nhưng mà không đề nghị key. Điều này đã làm cho Petya phiên bản đầu thể ko lây nhiễm rộng rãi. Tuy nhiên vậy, phần lớn mã độc được bố trí theo hướng đi như Petya, ví dụ như Goldeneye, vẫn tạo cảm giác cho hacker trở nên tân tiến những ransomware tấn công vào tầng kernel, đề ra thách thức cho những nhà bảo mật.