JavaScript Deobfuscator
Giải mã và định dạng lại mã nguồn JS bị che giấu để dễ phân tích.
Mã nguồn JavaScript bị che giấu xuất hiện trên trang web của bạn luôn là dấu hiệu cần rà soát kỹ lưỡng. Đoạn mã đó có thể đến từ một nhà cung cấp bên thứ ba muốn bảo vệ tập lệnh hợp pháp, nhưng cũng có khả năng là một payload độc hại được cài cắm ngoài ý muốn.
Các bước sử dụng JavaScript Deobfuscator
- Dán đoạn mã JavaScript bị che giấu vào khung nhập liệu.
- Nhấn nút thực hiện để tiến hành mở gói và định dạng lại cấu trúc tập lệnh.
- Kiểm tra kết quả vừa hiển thị, đặc biệt tập trung vào các lệnh gọi mạng.
- Tự giải mã thêm các mảng chuỗi ký tự còn sót lại nếu thấy cần thiết.
- Dò theo các điểm kích hoạt ban đầu để hiểu rõ luồng vận hành thực tế của mã.
Dấu hiệu rủi ro khi kiểm tra tập lệnh bằng JavaScript Deobfuscator
Bước quan sát đầu tiên luôn là lưu lượng mạng. Sự xuất hiện của fetch, XMLHttpRequest, thẻ <script> chèn động hoặc các hình ảnh beacon sẽ làm lộ địa chỉ máy chủ nhận dữ liệu. Bất kỳ tên miền lạ nào kết nối ra bên ngoài đều là căn cứ cảnh báo rõ ràng nhất.
Kế tiếp là phạm vi dữ liệu mà tập lệnh thu thập: các giá trị trong document.cookie, localStorage, nội dung form hoặc sự kiện lắng nghe bàn phím ở các ô mật khẩu và cổng thanh toán. Một tập lệnh cố đọc thông tin biểu mẫu rồi truyền về máy chủ lạ cần được coi là mã đánh cắp thẻ cho đến khi bạn chứng minh được điều ngược lại. Bạn cũng nên lưu tâm đến eval cùng new Function, hai hàm thường được dùng để nạp thêm mã độc từ xa.
Thuật ngữ liên quan đến JavaScript Deobfuscator
- Obfuscation — Kỹ thuật làm rối mã nguồn bằng cách đổi tên biến, bẻ cong luồng điều khiển và mã hóa chuỗi để cản trở quá trình dịch ngược.
- Packing — Phương thức nén gộp mã JS thành một chuỗi tự giải nén khi thực thi, thường dùng một hàm bọc nhỏ để mở mã chính.
- Control flow flattening — Biến đổi cấu trúc rẽ nhánh thành các khối switch-case phức tạp khiến mắt thường rất khó theo dõi tuần tự.
Trường hợp thực tế cần chạy JavaScript Deobfuscator
- Đánh giá an ninh cho các đoạn mã bên thứ ba đang chạy trên hệ thống của bạn.
- Xử lý và điều tra sự cố sau khi phát hiện máy chủ có dấu hiệu xâm nhập.
- Xác minh tập lệnh của đối tác xem họ có thu thập dữ liệu vượt quyền hạn cam kết.
- Gỡ lỗi trên môi trường production khi gói mã bị thiếu tập tin source map.
- Kiểm tra hành vi của một tiện ích trình duyệt trước khi cài đặt vào máy.
Câu hỏi thường gặp về JavaScript Deobfuscator
Công cụ có thể khôi phục hoàn toàn mã gốc ban đầu không?
Không. Kết quả trả về cho bạn cấu trúc rõ ràng cùng luồng xử lý hợp lý. Những cái tên biến gốc và các dòng chú thích đã bị loại bỏ vĩnh viễn trong quá trình làm rối nên không thể tạo lại.
Mọi đoạn mã JS bị che giấu đều có thể gỡ rối thành công chứ?
Về nguyên tắc là có thể, vì trình duyệt buộc phải hiểu được mã thì mới chạy được. Tuy vậy, mức độ phức tạp sẽ khác nhau: các đoạn mã đóng gói đơn giản được bung ra rất nhanh, còn mã bị xáo trộn luồng điều khiển sâu sẽ cần nhiều công sức đối chiếu thủ công.
Làm sao phát hiện một tập lệnh lạ đang có hành vi phá hoại?
Hãy theo dõi dữ liệu đi về đâu và tập lệnh đang đọc những gì. Những tên miền kết nối xa lạ, hành vi đọc cookie hay trường nhập dữ liệu cùng các lệnh gọi eval chính là tín hiệu đáng ngờ nhất để bạn bắt đầu quy trình ứng phó sự cố.
Việc phân tích và gỡ rối mã nguồn như thế này có phạm luật không?
Nghiên cứu các đoạn mã đang vận hành trên máy chủ do bạn quản lý hoặc tải về trình duyệt của bạn là nghiệp vụ bảo mật thông thường. Tuy nhiên, việc sao chép để phát tán lại hay bẻ khóa bản quyền sẽ chịu sự điều chỉnh của giấy phép phần mềm và quy định pháp luật sở tại.
Đoạn mã tôi gửi lên có được xử lý an toàn không?
Có. Dữ liệu của bạn được gửi đến máy chủ để giải mã và trả kết quả về màn hình chứ hệ thống không lưu trữ lại mã nguồn của bạn.