Cùng viết malware hay hơn

Dũng Trần
2 min readSep 14, 2020

--

2019 năm Canh Tý, ngồi đọc một bài viết phân tích malware. Đọc từ đầu đến cuối chẳng thấy một điểm sáng nào. Nếu so với malware viết thời 2000 thì cũng không khác nhiều lắm, thậm chí còn tồi hơn. Đúng ra, có nhiều cái bây giờ phải bá đạo lắm rồi chứ?. Vụ dùng XOR cipher thì lâu rồi, tới bây giờ vẫn vậy. Đọc một bài nhạt như nước ốc, “Các bạn lấy data tại vị trí này xor với 0x30.”, 19 năm rồi đó man, làm cái gì đó hay hơn đi chứ?.

Vậy làm sao dùng XOR cipher hay hơn, vui hơn?

Hãy suy nghĩ khác chút xíu, thay vì XOR 1 byte, các bạn có thể XOR 1 cụm bytes (Chẳng hạn XOR 4 bytes) và thay vì XOR với một key cố định các bạn có thể biến đổi key mỗi lần XOR.

  • Giả sử ta có PRNG function R(seed), gọi Rⁿ() là lần thực thi thứ n của R().
  • C ciphertext
  • M plaintext, ta chia M thành n cụm của các bytes

C[n] = Rⁿ() XOR M[n]

Vẫn là XOR cipher nhưng key sẽ biến đổi liên tục thay vì là một const.

Implement như thế nào?

Google một cái PRNG, ra Xorshift+. Mình copy cái concept này vào code của mình luôn chỉ improve chút xíu cho nó nhanh hơn thôi.

Có thể biểu diễn logic như sau và extends cho 128 bits:

UINT256 SEED
FUNCTION XOR_SHIFT_PLUS_PRO() UINT128 T := SHIFT_RIGHT(SEED, 128) UINT128 S := SEED & 0xffffffffffffffffffffffffffffffff T := T XOR SHIFT_LEFT(T, 23) T := T XOR SHIFT_RIGHT(T, 17) T := T XOR (S XOR SHIFT_RIGHT(S, 26)) SEED := SHIFT_LEFT(S, 128) OR T RETURN T + S

Chúng ta sẽ dùng các tập lệnh mở rộng để thao tác với các thanh ghi (register) 128 bits và 256 bits. Logic nêu trên được implement như sau:

Việc sử dụng các tập lệnh mở rộng này yêu cầu là CPU support AVX. Điểm lợi của nó là chúng ta có thể thực hiện XOR Cipher trên các block 128 bits thay vì ngồi XOR từng byte như một thằng liệt não.

Đây là kết quả khi thực thi XOR cipher:

Tạm kết:

Chương trình ở trên được viết để truyền cảm hứng cho các bạn đang ngày đêm miệt mài code malware. Còn rất nhiều thứ các bạn có thể improve như generate malware ngẫu nhiên mỗi lần được tải về , sử dụng AES instruction set của CPU, sử dụng public key cryptography trong ransomware, improve XOR cipher cho AMD CPU…

Peace!!!.

--

--