Kỹ sư đảo ngược làm xáo trộn javascript

Trang chủ của Google cực kỳ đơn giản nhưng nếu bạn đã từng có cơ hội nhìn vào mã HTML / JavaScript cơ bản, bạn sẽ biết mã này phức tạp như thế nào – hãy xem bản sao này

Các nhà phát triển và lập trình viên web thường làm xáo trộn mã vì hai lý do – một, mã trở nên nhỏ hơn, do đó giảm tổng thời gian cần thiết để tải xuống một trang web. Thứ hai, mã bị xáo trộn rất khó hiểu và do đó, logic lập trình bị ẩn khỏi những con mắt tò mò

Tuy nhiên, nó cực kỳ dễ dàng để giải mã, hoặc bạn cũng có thể nói là kỹ sư đảo ngược, bất kỳ đoạn mã nào bị xáo trộn và làm cho nó dễ đọc hơn đối với con người. Đây là cách

Nếu bạn có Google Chrome, hãy mở trang web có JavaScript mà bạn đang cố giải mã. Nhấn F12 để mở Công cụ dành cho nhà phát triển bên trong Chrome. Bây giờ hãy chuyển sang tab Scripts, nhấp chuột phải và chọn De-obfuscate source. Đó là nó

Ngoài ra, hãy truy cập jsbeautifier. org và sao chép-dán mã JavaScript/HTML khó hiểu mà bạn đang cố hiểu. Nhấn nút Làm đẹp và voila. Bí ẩn đã được giải quyết

Thử nghiệm. Gỡ rối JavaScript bằng Chrome

Javascript

Chia sẻWhatsAppTwitterFacebook

Amit Agarwal

Chuyên gia phát triển của Google, Nhà vô địch Google Cloud

Amit Agarwal là Chuyên gia nhà phát triển của Google về Google Workspace và Google Apps Script. Ông có bằng kỹ sư về Khoa học Máy tính [I. I. T. ] và là blogger chuyên nghiệp đầu tiên ở Ấn Độ

Amit đã phát triển một số tiện ích bổ sung phổ biến của Google bao gồm Mail Merge cho Gmail và Document Studio. Đọc thêm về Lifehacker và YourStory

Có một hệ thống bảo mật dựa trên bí mật không phải là một cách làm tốt. Trong Hướng dẫn NIST về Bảo mật Máy chủ Chung, nó rõ ràng

"Bảo mật hệ thống không nên phụ thuộc vào tính bí mật của việc triển khai hoặc các thành phần của nó. "

Ngày nay, nguyên tắc này thường được các kỹ sư bảo mật chấp nhận và áp dụng. Và đây có thể là kết thúc câu chuyện của chúng ta - nhưng không phải vậy

Khi chúng tôi đưa ra khái niệm "Làm mờ JavaScript", nhiều người nhanh chóng loại bỏ nó trên cơ sở "sự tối nghĩa không phải là bảo mật"

Nhưng che giấu chỉ là một phần nhỏ của một bức tranh lớn hơn nhiều. bảo vệ mã nguồn. Giống như tiêu chuẩn bảo mật thông tin ISO 27001

Mã nguồn chương trình có thể dễ bị tấn công nếu không được bảo vệ đầy đủ và có thể cung cấp cho kẻ tấn công một phương tiện tốt để thỏa hiệp hệ thống theo cách thức bí mật. Nếu mã nguồn là trung tâm của sự thành công trong kinh doanh thì sự mất mát đó cũng có thể phá hủy giá trị kinh doanh một cách nhanh chóng

Câu cuối cùng này nói lên tất cả. Các ứng dụng của bạn càng mang lại nhiều giá trị cho doanh nghiệp của bạn thì nó càng phải mất nhiều hơn từ các cuộc tấn công vào mã nguồn

Đây là lý do tại sao điều quan trọng là phải hiểu về Mã hóa JavaScript, bảo vệ JavaScript và bảo mật chuyên sâu

Mã hóa JavaScript

Mã hóa JavaScript là một loạt các biến đổi mã biến mã JS bị lộ thành một phiên bản sửa đổi cực kỳ khó hiểu và kỹ sư đảo ngược

Hãy xem một mẫu JavaScript bị xáo trộn [và vâng, đó là JavaScript hợp lệ]

[][[![]+[]][+[]]+[[![]]+[][[]]][+!+[]+[+[]]]+[![]+[]][!+[]+!+[]]+[!![]+
[]][+[]]+[!![]+[]][!+[]+!+[]+!+[]]+[!![]+[]][+!+[]]][[[][[![]+[]][+[]]+
[[![]]+[][[]]][+!+[]+[+[]]]+[![]+[]][!+[]+!+[]]+[!![]+[]][+[]]+[!![]+
[]][!+[]+!+[]+!+[]]+[!![]+[]][+!+[]]]+[]][!+[]+!+[]+!+[]]+[!![]+[][[![]+
[]][+[]]+[[![]]+[][[]]][+!+[]+[+[]]]+[![]+[]][!+[]+!+[]]+[!![]+[]][+[]]+
[!![]+[]][!+[]+!+[]+!+[]]+[!![]+[]][+!+[]]]][+!+[]+[+[]]]+[[][[]]+[]][+
!+[]]+[![]+[]][!+[]+!+[]+!+[]]+[!![]+[]][+[]]+[!![]+[]][+!+[]]+[[][[]]+
[]][+[]]+[[][[![]+[]][+[]]+[[![]]+[][[]]][+!+[]+[+[]]]+[![]+[]][!+[]+!+
[]]+[!![]+[]][+[]]+[!![]+[]][!+[]+!+[]+!+[]]+[!![]+[]][+!+[]]]+[]][!+
[]+!+[]+!+[]]+[!![]+[]][+[]]+[!![]+[][[![]+[]][+[]]+[[![]]+[][[]]][+!+
[]+[+[]]]+[![]+[]][!+[]+!+[]]+[!![]+[]][+[]]+[!![]+[]][!+[]+!+[]+!+[]]+
[!![]+[]][+!+[]]]][+!+[]+[+[]]]+[!![]+[]][+!+[]]][[![]+[]][+!+[]]+[![]+
[]][!+[]+!+[]]+[!![]+[]][!+[]+!+[]+!+[]]+[!![]+[]][+!+[]]+[!![]+[]][+
[]]+[![]+[][[![]+[]][+[]]+[[![]]+[][[]]][+!+[]+[+[]]]+[![]+[]][!+[]+!+
[]]+[!![]+[]][+[]]+[!![]+[]][!+[]+!+[]+!+[]]+[!![]+[]][+!+[]]]][!+[]+
!+[]+[+[]]]+[+!+[]]+[!![]+[][[![]+[]][+[]]+[[![]]+[][[]]][+!+[]+[+[]]]+
[![]+[]][!+[]+!+[]]+[!![]+[]][+[]]+[!![]+[]][!+[]+!+[]+!+[]]+[!![]+
[]][+!+[]]]][!+[]+!+[]+[+[]]]][]

Đối với mắt người, điều này dường như không thể thiết kế ngược. Nhưng trong khi mã này đã được làm xáo trộn với hiệu lực cao, thì trên thực tế, sự che giấu đó rất yếu. Sử dụng một công cụ kỹ thuật đảo ngược tự động, chúng tôi sẽ nhận được mã gốc ngay lập tức. Điều này có nghĩa là obfuscation này có khả năng phục hồi thấp

Biết hai khái niệm này sẽ giúp bạn tiến xa hơn trong việc so sánh các công cụ che giấu khác nhau. Khi bạn thực hiện phân tích này, bạn sẽ thấy cách các trình mã hóa miễn phí cung cấp các phép biến đổi cơ bản với rất ít khả năng phục hồi, nghĩa là chúng sẽ dễ dàng bị đảo ngược. Cũng có trường hợp các công cụ miễn phí này chèn phần mềm độc hại trong quá trình che giấu.

Ngược lại, lớp che giấu mà Jscrambler cung cấp bao gồm sự kết hợp tỉ mỉ của các phép biến đổi mạnh mẽ và linh hoạt nhất để khiến con người và máy móc rất khó đảo ngược mã. Giống như một trong những khách hàng của chúng tôi trong Chăm sóc sức khỏe đã nêu

Jscrambler là sản phẩm duy nhất chúng tôi thấy không thể bẻ khóa

Bây giờ chúng ta đã đề cập đến obfuscation, hãy xem xét các phần bảo vệ JavaScript còn lại

Bảo vệ JavaScript

Giống như việc bạn đưa ra các biện pháp nghiêm ngặt đối với an ninh mạng và phía máy chủ, các biện pháp bảo mật phía máy khách cụ thể là rất quan trọng để ngăn chặn các cuộc tấn công nghiêm trọng

Để hiểu tại sao, hãy xem OWASP nói gì về điều này trong hướng dẫn 10 rủi ro bảo mật hàng đầu trên thiết bị di động của họ

Giả mạo mã M8 Kỹ thuật đảo ngược M9“Ứng dụng dành cho thiết bị di động phải có khả năng phát hiện trong thời gian chạy mã đã được thêm hoặc thay đổi […] Ứng dụng phải có khả năng phản ứng thích hợp trong thời gian chạy đối với vi phạm tính toàn vẹn của mã. ” “Để chống kỹ thuật dịch ngược hiệu quả, bạn phải sử dụng công cụ che giấu. ”

Vì vậy, trong khi che giấu mã sẽ cung cấp một cách tốt để ngăn chặn kỹ thuật đảo ngược, các mối đe dọa nâng cao hơn như giả mạo mã yêu cầu bảo vệ trong thời gian chạy

Jscrambler cung cấp khả năng bảo vệ thời gian chạy nâng cao với các kỹ thuật như Tự bảo vệ, phá vỡ ứng dụng được bảo vệ khi kẻ tấn công cố gắng gỡ lỗi hoặc khi có bất kỳ thay đổi nào đối với mã nguồn

Bằng cách cung cấp các kỹ thuật này trên nền tảng che giấu tiên tiến của mình, chúng tôi đã giúp hàng nghìn doanh nghiệp giải quyết các tình huống tấn công khác nhau. Hãy xem xét một số trong những cái phổ biến nhất

lạm dụng tự động

Trong Web, lạm dụng đề cập đến việc khai thác các chức năng của ứng dụng web để có quyền truy cập hoặc đặc quyền thông qua việc sử dụng bot — ví dụ: để tự động tạo tài khoản mới trong nhà cung cấp dịch vụ đám mây và nhận lợi ích miễn phí không giới hạn khi khai thác tiền điện tử

Thông thường, các cuộc tấn công này yêu cầu một số loại thao tác mã nguồn, điều này có thể xảy ra khi JavaScript không được bảo vệ

Trình mã hóa JavaScript đa hình độc đáo của Jscrambler trực tiếp giải quyết vấn đề này bằng cách làm cho mỗi mã mới được xây dựng hoàn toàn khác nhau. Khi được kết hợp với việc triển khai thường xuyên, điều này có nghĩa là khoảng thời gian tấn công ngắn và không thể sử dụng kỹ thuật đảo ngược tự động cũng như thủ công

Vi phạm bản quyền và gian lận

Vi phạm bản quyền là mối đe dọa kinh doanh chính đối với các sản phẩm và dịch vụ kỹ thuật số, đặc biệt là đối với ngành OTT đang phát triển nhanh chóng

Các giải pháp thủy vân pháp y mà các nhà cung cấp sử dụng để theo dõi nguồn rò rỉ thường được triển khai với tác nhân JavaScript phía máy khách. Vì mã nguồn của tác nhân này bị lộ, những kẻ tấn công có thể giả mạo logic của nó để bỏ qua nó và khiến các nhà cung cấp khó chặn tài khoản của họ hơn nhiều

Sử dụng một chiến thuật tương tự, những kẻ tấn công có thể lạm dụng trò chơi bằng cách giả mạo mã để giành lợi thế một cách bất hợp pháp. Điều này ảnh hưởng tiêu cực đến người dùng hợp pháp và gây tổn hại nghiêm trọng cho doanh nghiệp

Jscrambler giải quyết cả hai mối đe dọa này. Khi kẻ tấn công cố gắng gỡ lỗi hoặc can thiệp vào tác nhân thủy ấn phía máy khách được bảo vệ bởi Jscrambler, mã này sẽ bị xáo trộn rất nhiều và tính năng Tự bảo vệ sẽ phá vỡ ứng dụng và ngăn chặn kẻ tấn công. Điều tương tự cũng xảy ra khi những kẻ tấn công đang cố can thiệp vào logic của trò chơi để vượt qua các hạn chế của nó

Lọc dữ liệu

Trên Web, người dùng thường gửi dữ liệu như email, tên, địa chỉ, số thẻ tín dụng hoặc thậm chí thông tin y tế của họ trên một trang web bằng biểu mẫu. Do logic đằng sau các biểu mẫu này được xử lý bởi JavaScript và tất cả dữ liệu nhạy cảm này được truyền qua phía máy khách, nên tính an toàn của dữ liệu này có thể gặp rủi ro

Bằng cách để JavaScript của họ bị lộ, các tổ chức giúp kẻ tấn công hiểu cách ứng dụng web của họ hoạt động dễ dàng hơn và tạo điều kiện thuận lợi cho việc lập kế hoạch/tự động hóa các cuộc tấn công lấy cắp hoặc trích xuất dữ liệu

Ngược lại, bằng cách bảo vệ mã nguồn của họ bằng Jscrambler, các công ty khiến kẻ tấn công khó truy cập mã nguồn hơn nhiều. Sự bảo vệ này giúp làm nản lòng những kẻ tấn công và tăng chi phí tấn công đến mức chúng có khả năng chuyển sang mục tiêu khác

Ngoài ra, bằng cách bảo vệ mã nguồn JavaScript của họ, các công ty này tăng cường tuân thủ các tiêu chuẩn như ISO 27001 và các quy định bảo vệ dữ liệu như CCPA/GDPR

Bảo mật chuyên sâu

Các kịch bản tấn công khác nhau mà chúng tôi vừa đề cập là lý do tại sao chúng tôi nhấn mạnh rằng Bảo vệ JavaScript không chỉ đơn thuần là che giấu. Sự bảo vệ này nên được coi là một thành phần có giá trị của chiến lược bảo mật ứng dụng

Bởi vì những kẻ tấn công liên tục phát triển các chiến thuật chống lại các ứng dụng web và hệ sinh thái JavaScript không ngừng phát triển, chúng tôi tiếp tục cải tiến giải pháp bảo vệ JavaScript của mình — ngay cả sau 10 năm R&D và hơn 500.000 bản dựng được bảo vệ

Và khi chúng tôi mang đến tính năng bảo vệ JavaScript cho các doanh nghiệp lớn, đây là điều chúng tôi nhận được phản hồi từ khách hàng của mình

Vì vậy, lập luận "bảo mật không phải là tối nghĩa" đã phát triển một cách tự nhiên trong bối cảnh ngày nay với lập luận mang tính xây dựng mới về "điều chúng ta cần là bảo mật chuyên sâu"

Vui lòng thử tất cả các tính năng của Jscrambler với bản dùng thử miễn phí hoặc đăng ký bản demo với chúng tôi trong trường hợp bạn muốn tìm hiểu thêm

Mã bị xáo trộn có thể được thiết kế ngược không?

Kết quả cho thấy rằng có thể đảo ngược mã bị xáo trộn nhưng một số phần . Obfuscation thực sự bảo vệ mã, vì tất cả các tên biến đều được thay đổi và mọi phương thức không sử dụng đều bị loại bỏ, cũng như một số phương thức được thay đổi thành các cách lập trình phi truyền thống.

Có nên xáo trộn JavaScript không?

Các nhà phát triển nên cân nhắc kỹ lưỡng việc sử dụng mã hóa JavaScript kết hợp với bảo vệ ứng dụng thời gian chạy nhiều lớp, đặc biệt nếu các ứng dụng đó chạy trong môi trường không đáng tin cậy [Hệ điều hành]. Bằng cách thêm tính năng bảo vệ thời gian chạy cho ứng dụng của bạn, ứng dụng của bạn có thể phát hiện và bảo vệ khỏi các cuộc tấn công giả mạo hoặc phần mềm độc hại

bạn có thể đảo ngược

Khi sử dụng kỹ thuật đảo ngược JavaScript, điều quan trọng là giữ cho sự tung hứng tinh thần ở mức tối thiểu . Điều này có nghĩa là loại bỏ bất kỳ biểu thức hoặc câu lệnh nào không thêm giá trị ngay lập tức và cũng đảo ngược tính KHÔ của bất kỳ mã nào đã được tối ưu hóa tự động hoặc thủ công.

Làm xáo trộn có ảnh hưởng đến hiệu suất JavaScript không?

Tên việc che giấu dữ liệu không ảnh hưởng đến hiệu suất và phải luôn được sử dụng. Bạn có thể ảo hóa các phương pháp không chuyên sâu về tính toán. Mặt khác, nên sử dụng phương pháp che giấu luồng điều khiển.

Chủ Đề