File JavaScript “lạ”

Dũng Trần
tradahacking
Published in
3 min readSep 17, 2018

Chúng ta đã quen dần với tàu lạ, nước lạ… giờ có thêm file JavaScript lạ thì cũng không phải là vấn đề gì lớn lao, cứ làm quen dần thôi. Tiện đây cùng mổ bụng nó ra xem có gì trong đó.

Nah

Ban đầu mình thấy Window Defender warning file lạ tiện tay mở bằng notepad xem, thoạt nghĩ chắc là threat vớ vẩn nên cũng tải thử lên Virus Total xem thế nào, kết quả nhận được cũng lạ. Chỉ có khoảng 4 AV phát hiện nó là Trojan.

Quả không ngoài dự đoán đọc chẳng hiểu gì lắm.

Reformat lại source code xem có dễ hiểu hơn không.

Trick the chick

Tạm hiểu caller chính là hàm gọi nó còn callee là function hiện tại, chỉ cần copy y nguyên nội dung của function, thay vào 2 biến này. Thực thi và dump tiếp lần nữa.

Bingo

Tới đây thì chúng ta đều hiểu nó sẽ làm cái gì nó sẽ tải payload về từ http://[randomhex].phpmyadmin.greentechsupply.us/blank.gif tuy nhiên hiện tại mình vẫn chưa dump được thứ mình mong muốn về. Server hiện tại đang response empty (Campaign chưa chạy sao?).

Kết luận

  • Người viết downloader rất có tâm trong việc pack JavaScript, kết quả trong file original hầu như che dấu ý đồ của họ.
  • Nhìn đoạn comment còn sót lại /* if(typeof debug !== ‘undefined’ && debug === true) {WSH.Echo(enc_str.join(‘ ‘));} */ chúng ta lờ mờ đoán ra là có cả một engine để pack đống source code này.
  • Điểm sáng trong quá trình deobfuscate là, sử dụng constructor() để evade Content Security Policy, dùng function content để encrypt nội dung.
  • Điểm trừ là dùng XOR cipher nên dùng block hoặc stream cipher và sử dụng hashes của function content để tạo ra encryption key. Như vậy việc deobfuscate sẽ gặp nhiều khó khăn hơn, recursive call cũng có thể dùng kết hợp để ngăn chặn việc tìm thấy caller callee quá dễ dàng.
  • Server chỉ response lại các request đảm bảo các giá trị ngẫu nhiên kèm theo biến thời gian. Downloader và server sẽ có cùng một thuật toán sinh token.

Sample: https://drive.google.com/file/d/1qPicSzpN_0hlnNgYT-duGCLcojOPhSqr/view

Passsword: infected

--

--