1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO TIỂU LUẬN CÔNG CỤ GIẢI MÃ JAVASCRIPT DE4JS

40 82 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Công Cụ Giải Mã Javascript - DE4JS
Tác giả Ma Công Thành
Người hướng dẫn TS. Đặng Minh Tuấn
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành An Toàn Mạng
Thể loại báo cáo tiểu luận
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 40
Dung lượng 1,33 MB

Cấu trúc

  • I. Giới thiệu, lịch sử hình thành (8)
    • 1. Javascript (8)
      • 1.1. Javascript là gì? (8)
      • 1.2. Lịch sử hình thành JavaScript (8)
      • 1.3. Cách hoạt động của JavaScript (9)
      • 1.4. Điểm khác biệt giữa các ngôn ngữ lập trình khác và JavaScript là gì? (10)
      • 1.5. Khuyết điểm của JavaScript (10)
      • 1.6. Tại sao phải làm xáo trộn (Obfuscation) mã javascript (11)
    • 2. Các phương pháp để mã hóa code javascript (12)
      • 2.1. Rút gọn code (Minified Code) (13)
      • 2.2. Tối ưu hóa code (Optimized Code) (13)
      • 2.3. Nén code (Packing Code) (13)
      • 2.4. Obfuscated Code (14)
    • 3. Phương pháp giải mã code javascript bị mã hóa (19)
      • 3.1. Giải mã bị xáo trộn (Deobfuscation code) (20)
      • 3.2. Giải nén (Unpacking code) (20)
      • 3.3. Giải mã (Decoding code) (20)
  • II. Hướng dẫn cài đặt và sử dụng DE4JS (21)
    • 1. Công cụ De4js (21)
    • 2. Cài đặt De4js (22)
      • 2.1. Cài đặt trên Kali Linux (22)
      • 2.2. Cài đặt trên BlackArch (25)
      • 2.3. Cài đặt trên Debian, Linux Mint, Ubuntu (26)
      • 2.4. Sử dụng trên online website (26)
    • 3. Cách sử dụng De4js (27)
      • 3.1. Khởi tạo công cụ (27)
      • 3.2. Cách sử dụng (28)
  • III. Bài lab (29)
    • 1. Demo lab 1: Giải mã đoạn mã bị làm rối bằng Javascript Obfuscator (29)
    • 2. Demo lab 2: Giải mã javascript để gỡ bỏ bản quyền chân trang trên một số nền tảng web template (31)
  • IV. Kết luận (39)
  • V. Tài liệu tham khảo (40)

Nội dung

Do đó, để khắc phục và hạn chế các khuyết - nhược điểm này, ngưởi ta sử dụng một số phương pháp như: rút gọn code minify code, đóng gói code packer code hoặc mã hóa code obfuscated code

Giới thiệu, lịch sử hình thành

Javascript

JavaScript, hiện tại là một ngôn ngữ lập trình thông dịch, được phát triển từ các ý niệm nguyên mẫu và được sử dụng rộng rãi cho cả phía người dùng và máy chủ (với Node.js) Ngôn ngữ này được sáng tạo bởi Brendan Eich tại Netscape, ban đầu mang tên Mocha, sau đó đổi thành LiveScript và cuối cùng là JavaScript Mặc dù có cú pháp tương tự như Java, JavaScript lại gần gũi hơn với ngôn ngữ Self Tập tin mã nguồn JavaScript thường có phần mở rộng js.

JavaScript đã trở thành ngôn ngữ chủ đạo cho web, cung cấp năng lượng cho hầu hết các trang web hiện nay Sự phát triển của các khung JavaScript đa nền tảng như React Native và Ionic cho phép các nhà phát triển xây dựng ứng dụng cho cả thiết bị di động và máy tính để bàn, sử dụng một cơ sở mã JS chung.

Hình 1 Tỉ lệ sử dụng JavaScript

Tất cả các công ty trong danh sách Fortune 500 đều sử dụng JavaScript để phát triển ứng dụng, cho thấy vai trò quan trọng của nó trong các lĩnh vực như ngân hàng di động, thương mại điện tử và dịch vụ phát trực tuyến Ngày nay, JavaScript không chỉ là ngôn ngữ lập trình phổ biến mà còn là nguồn năng lượng cho nhiều ứng dụng thiết yếu.

1.2 Lịch sử hình thành JavaScript

JavaScript được phát triển vào năm 1995 bởi Netscape Communications nhằm cải thiện trải nghiệm người dùng trên trình duyệt Nhận thấy nhu cầu về một "ngôn ngữ kết nối", họ đã mời Brendan Eich tham gia vào dự án, sử dụng ngôn ngữ lập trình Scheme Để tận dụng sự phổ biến của Java, họ đã thiết kế JavaScript với cú pháp tương tự Kết quả là một ngôn ngữ mới, kết hợp tính năng của Scheme, định hướng đối tượng của SmallTalk và cú pháp của Java Phiên bản đầu tiên, mang tên Mocha, ra mắt vào tháng 5 năm 1995, sau đó đổi tên thành LiveScript vào tháng 9 và cuối cùng là JavaScript vào tháng 12 cùng năm.

MA CÔNG THÀNH – B18AT03 TRANG 9

JavaScript đã được gửi đến ECMA International vào năm 1996 để hoàn thiện thành một tiêu chuẩn kỹ thuật Đến tháng 6 năm 1997, đặc tính kỹ thuật đầu tiên của ngôn ngữ này, ECMA-262, đã được phát hành Phiên bản mới nhất hiện nay là ECMAScript 2017, được phát hành vào tháng 6 năm 2017.

1.3 Cách hoạt động của JavaScript

Khi trình duyệt web tải một trang web, trình phân tích cú pháp HTML bắt đầu phân tích mã HTML và tạo ra DOM Khi gặp chỉ thị CSS hoặc JavaScript, chúng được chuyển giao cho trình phân tích CSS hoặc động cơ JavaScript Động cơ JavaScript tải các tệp JavaScript bên ngoài và mã inline, nhưng không thực thi ngay lập tức mà chờ cho quá trình phân tích HTML và CSS hoàn tất Sau khi hoàn tất, JavaScript được thực thi theo thứ tự xuất hiện trên trang, từ việc xác định biến và hàm đến thực thi các lời gọi hàm và kích hoạt trình xử lý sự kiện Các hoạt động này cập nhật DOM và trình duyệt hiển thị ngay lập tức kết quả.

Hình 2 Cách JavaScript làm việc trên trang web

MA CÔNG THÀNH – B18AT03 TRANG 10

1.4 Điểm khác biệt giữa các ngôn ngữ lập trình khác và JavaScript là gì?

JavaScript được coi là một trong những ngôn ngữ lập trình phổ biến nhất nhờ vào tính linh hoạt của nó Nhiều lập trình viên lựa chọn JavaScript làm ngôn ngữ chính và chỉ sử dụng các ngôn ngữ khác khi cần thực hiện những nhiệm vụ đặc biệt.

- Hãy xem qua các ngôn ngữ lập trình phổ biến nhất bên dưới:

Ngôn ngữ lập trình Đặc điểm

JavaScript (JS) là ngôn ngữ lập trình giúp cải thiện tính tương tác của website Nó hoạt động trực tiếp trên trình duyệt của người dùng thay vì trên máy chủ, cho phép sử dụng các thư viện bên thứ ba để mở rộng chức năng của website mà không cần phải viết mã từ đầu.

HTML, viết tắt của "Hypertext Markup Language", là một trong những ngôn ngữ lập trình phổ biến nhất trên web, đóng vai trò quan trọng trong việc xây dựng các thành phần chính của một trang web Một số ví dụ về thẻ HTML bao gồm

dùng để định dạng đoạn văn.

PHP là ngôn ngữ phía server, khác với JavaScript chạy trên máy client

Ngôn ngữ lập trình PHP thường được sử dụng trong các hệ quản trị nội dung như WordPress, đồng thời cũng phổ biến trong lập trình back-end, giúp tạo ra kênh truyền thông tin hiệu quả giữa ứng dụng và cơ sở dữ liệu.

CSS, viết tắt của "Cascading Style Sheets", là công cụ quan trọng giúp webmaster xác định các kiểu dáng và định nghĩa nội dung đa dạng Thay vì lặp lại từng yếu tố trong HTML ở nhiều vị trí khác nhau, CSS cho phép bạn quản lý và áp dụng các kiểu một cách hiệu quả và nhất quán.

Bảng 1 Bảng so sánh JS với một số ngôn ngữ lập trình phổ biến

Nếu coi ngôn ngữ lập trình như việc xây dựng một ngôi nhà, thì HTML đóng vai trò là kiến trúc cơ bản, trong khi CSS là những yếu tố trang trí như thảm và tường JavaScript mang đến sự tương tác cho ngôi nhà, giống như việc mở cửa và bật đèn Mặc dù bạn có thể tạo website mà không cần JavaScript, nhưng điều đó có thể khiến trang web của bạn trông lỗi thời, như những website từ những năm 1995.

Mọi ngôn ngữ lập trình đều có những khuyết điểm riêng, đặc biệt là JavaScript, khi nó phát triển và thu hút nhiều hacker, scammer và những kẻ có ác tâm luôn tìm kiếm lỗ hổng và lỗi bảo mật để khai thác Các khuyết điểm này có thể ảnh hưởng đến tính bảo mật và hiệu suất của ứng dụng.

❖ Có thể được dùng để thực thi mã độc trên máy tính của người dùng;

❖ Nhiều khi không được hỗ trợ trên mọi trình duyệt;

MA CÔNG THÀNH – B18AT03 TRANG 11

❖ Có thể bị triển khai khác nhau tùy từng thiết bị dẫn đến việc không đồng nhất

1.6 Tại sao phải làm xáo trộn (Obfuscation) mã javascript:

JavaScript là ngôn ngữ lập trình thông dịch, yêu cầu trình duyệt có trình thông dịch để đọc, diễn giải và chạy mã Điều này cho phép người dùng dễ dàng sử dụng trình gỡ lỗi trong trình duyệt để xem, đọc và sửa đổi mã JavaScript theo nhu cầu của họ.

Trong ví dụ dưới đây, có thể thấy rằng việc truy cập vào logic mã phía sau bàn phím ảo, nơi khách hàng của ngân hàng nhập mật khẩu, diễn ra một cách dễ dàng.

Hình 3 Ví dụ không dùng obfuscation

Các phương pháp để mã hóa code javascript

- Khi download các bộ thư viện trên Internet (đặc biệt là thư viện Jquery,

Trong lập trình JavaScript, đôi khi chúng ta gặp phải những tệp tin nhỏ có nội dung bị minify, khiến cho chúng trở nên khó hiểu và không có ý nghĩa rõ ràng Đây chính là kết quả của các kỹ thuật mã hóa obfuscated, nhằm bảo vệ mã nguồn và ngăn chặn việc sao chép.

JavaScript obfuscation là quá trình chuyển đổi mã JS từ dạng dễ đọc thành phiên bản khó hiểu, nhằm bảo vệ mã nguồn khỏi việc bị phân tích ngược và sao chép.

Hình 4 Obfuscation đoạn mã JavaScript

- Môt số phương pháp phổ biến để mã hóa code javascript:

• Rút gọn code (Minified Code)

• Tối ưu hóa code (Optimized Code)

• Xáo trộn nội dung code (Obfuscated Code)

MA CÔNG THÀNH – B18AT03 TRANG 13

2.1 Rút gọn code (Minified Code):

Khi viết các file Javascript có kích thước lớn (từ vài KB trở lên), việc triển khai trực tiếp trên website sẽ không hiệu quả về băng thông.

Khi viết mã Javascript, sẽ có nhiều ký tự không cần thiết như khoảng trắng, ký tự xuống dòng và comment, những yếu tố này không có tác dụng với trình duyệt và chỉ làm tăng kích thước file Do đó, cần áp dụng các biện pháp để tối ưu hóa mã và giảm thiểu những ký tự thừa này.

- Nhu cầu đó dẫn đến khái niệm Minify hay mình gọi là rút gọn code

Minify là quá trình tự động xóa các ký tự không cần thiết để giảm kích thước file, giúp tiết kiệm dung lượng lên đến 50-60% Nhiều thư viện JavaScript và plugin cung cấp cả phiên bản đầy đủ và phiên bản Min, phiên bản đã qua quá trình minify.

- Và phiên bản Min thường chỉ có 1 line

- Dưới đây là 1 ví dụ cho thấy 1 đoạn code đã được minify function doSomething(b,a){return b+a} alert(344,999)

Có nhiều phương pháp để minify code, bao gồm cả cách làm thủ công và tự động Để thực hiện minify tự động, có nhiều thư viện và phần mềm hỗ trợ Một số thư viện nổi tiếng bao gồm Minify (PHP5), JSMIN (hỗ trợ nhiều ngôn ngữ như C#, Java, JavaScript, Perl, PHP, Python, OCAML, Ruby), YUI Compressor (Yahoo – Java), Dojo ShrinkSafe (Java) và Packer – Dean Edwards (JavaScript, NET, PHP, Perl).

2.2 Tối ưu hóa code (Optimized Code):

Trình tối ưu hóa mã được sử dụng chủ yếu để nâng cao hiệu suất mã, bao gồm tốc độ và tối ưu hóa việc sử dụng bộ nhớ của ứng dụng Mặc dù quá trình này đôi khi có thể làm cho mã trở nên khó đọc hơn, nhưng điều này không đảm bảo bảo vệ cho mã nguồn.

- Trình nén và đóng gói mã giảm kích thước mã bằng cách sử dụng kỹ thuật mã hóa và đóng gói nhưng chúng cũng không bảo vệ mã nguồn

Khi nhắc đến kỹ thuật minify, thường không thể không đề cập đến Javascript Packer, một phương pháp rút gọn mã khác biệt Kỹ thuật này sử dụng hàm eval() để thực thi, dẫn đến việc thay đổi thứ tự và các ký tự trong đoạn mã, khiến cho nó trở nên khó đọc hơn.

- Không khuyến khích sử dụng kỹ thuật packer để làm Minify code

MA CÔNG THÀNH – B18AT03 TRANG 14

- Obfuscate là 1 kỹ thuật trong nhóm minify như cũng được tách riêng ra để nói bởi mục đích và tính chất của nó

- Obfuscate nói một cách dễ hiểu là “mã hóa giả” nội dung code Kỹ thuật này áp dụng cho nhiều ngôn ngữ chứ không phải chỉ riêng cho Javascript

Khi triển khai mã nguồn ra bên ngoài, việc người khác tiếp cận mã nguồn là điều không thể tránh khỏi Kỹ thuật Obfuscate giúp thay đổi tên hàm và biến thành các ký tự đơn giản như a(), b(), var c…, làm cho việc hiểu rõ hoặc thực hiện Reverse Engineering trở nên khó khăn hơn Cần lưu ý rằng kỹ thuật này không chỉ giúp rút gọn mã như Minify mà còn có thể thay đổi cấu trúc của mã nguồn.

Quá trình obfuscate không làm thay đổi luồng mã nguồn, nhưng nếu thực hiện không cẩn thận, đoạn JavaScript có thể trở nên vô tác dụng Do đó, hãy chú ý trong quá trình obfuscate; nếu bạn lo ngại về khả năng gặp sự cố, hãy lựa chọn phương pháp Minify để đảm bảo an toàn.

Hiện nay, có nhiều phần mềm hỗ trợ obfuscate JavaScript, nhưng Jasob :: JavaScript Obfuscator được đánh giá là tốt nhất Việc sử dụng phần mềm này phức tạp hơn so với phương pháp Minify.

JavaScript (JS) obfuscation là quá trình chuyển đổi mã JS nhằm che khuất nội dung, làm cho nó khó hiểu và khó phát hiện bởi máy quét Phương pháp này phổ biến trong cả mã JS hợp lệ và độc hại, dẫn đến việc không thể xác định chính xác mã độc chỉ qua sự xáo trộn Obfuscation mang lại nhiều lợi ích như bảo vệ mã nguồn, tối ưu hóa hiệu suất và ngăn chặn kỹ thuật đảo ngược mã Tuy nhiên, nó cũng được kẻ tấn công sử dụng để ngụy trang mã JS độc hại mà vẫn giữ nguyên hành vi của mã.

Obfuscation trong mã JavaScript, cả mã lành tính lẫn độc hại, đang trở nên phổ biến Hình thức này tạo ra mã khó phát hiện, gây khó khăn cho việc hiểu và phân tích.

Kỹ thuật này giúp các developer mới giải quyết câu hỏi thường gặp: “Làm sao để che giấu source code của mình?” Ví dụ dưới đây minh họa một thuật toán được sử dụng để giới thiệu sản phẩm trên trang web thương mại điện tử Thuật toán này tạo ra danh sách đề xuất sản phẩm cho khách hàng dựa trên lịch sử mua hàng trước đó của họ.

MA CÔNG THÀNH – B18AT03 TRANG 15

Đoạn mã này có vẻ bình thường, nhưng thực chất là một thuật toán độc quyền của công ty Nếu đối thủ cạnh tranh truy cập vào trang web, họ có thể dễ dàng phát hiện mã này và sử dụng nó theo ý muốn.

Phương pháp giải mã code javascript bị mã hóa

Trong bài viết này, chúng tôi sẽ giới thiệu các phương pháp phổ biến để giải mã mã JavaScript đã bị mã hóa Cụ thể, trình tự các bước giải mã sẽ được trình bày trong phần demo lab của công cụ De4js.

MA CÔNG THÀNH – B18AT03 TRANG 20

Hình 9 Luồng giải mã đoạn code bị làm rối

3.1 Giải mã bị xáo trộn (Deobfuscation code):

- Deobfuscation là quá trình phân tích và định dạng một mã JS bị xáo trộn để làm cho nó có thể đọc lại được

Mã JavaScript (JS) thường được đóng gói hoặc mã hóa để che giấu tính độc hại, gây khó khăn cho việc phân tích tĩnh Khái niệm này không chỉ áp dụng cho mã độc mà còn cho mã lành tính nhằm mục đích nén và bảo mật Các trình đóng gói mã JS rất đa dạng và trở nên phổ biến trong giới tội phạm mạng để tránh bị phát hiện Những công cụ này bao bọc toàn bộ mã bằng cách sử dụng hàm eval(), cho phép chạy mã JS từ một chuỗi đầu vào trong thời gian thực.

Phương pháp này giúp giải mã các luồng dữ liệu được mã hóa dưới dạng Base64, RC4 hoặc thông qua các kỹ thuật xáo trộn mã, biến chúng thành dạng dễ đọc và hiểu.

MA CÔNG THÀNH – B18AT03 TRANG 21

Hướng dẫn cài đặt và sử dụng DE4JS

Công cụ De4js

➢ De4js là một trình giải mã bị xáo trộn (deobfuscator) và giải nén (unpacker) mã nguồn javascript được viết bởi tác giả Thành Thân Thiện

De4js là công cụ mạnh mẽ với những đặc điểm nổi bật như khả năng hoạt động ngoại tuyến, giúp mã nguồn trở nên dễ đọc và thẩm mỹ hơn nhờ vào việc làm nổi bật cú pháp Ngoài ra, De4js còn có khả năng giải mã các mã bị xáo trộn, làm cho chúng trở nên có thể đọc được thông qua nhiều công cụ, dịch vụ và phương pháp khác nhau.

▪ Eval (được sử dụng trong Packer, WiseLoop)

▪ Array (được sử dụng trong Javascript Obfuscator, Free JS Obfuscator)

▪ Кодирование URL (được sử dụng trong bookmarklet)

➢ Trang chủ: https://github.com/lelinhtinh/de4js

➢ Công cụ De4js chạy như một máy chủ nhỏ mà bạn có thể kết nối với trình duyệt web Tức là, chương trình có giao diện web

MA CÔNG THÀNH – B18AT03 TRANG 22

Cài đặt De4js

2.1 Cài đặt trên Kali Linux

- Cài đặt các gói bắt buộc:

2 sudo apt install npm ruby-dev zlib1g-dev sudo gem install bundler

Hình 10 Cài đặt các gói bắt buộc 1

Hình 11 Cài đặt các gói bắt buộc 2

MA CÔNG THÀNH – B18AT03 TRANG 23

- Lấy mã nguồn và cài đặt các phần phụ thuộc:

3 git clone https://github.com/lelinhtinh/de4js cd de4js bundle install

Hình 12 Lấy mã nguồn de4js và cài các thư viện phụ thuộc

1 sudo npm install workbox-cli global

MA CÔNG THÀNH – B18AT03 TRANG 24

Hình 13 Cài đặt workbox-cli

- Hoặc với đầu ra sử dụng thời gian thực:

Hình 14 Chạy máy chủ web de4js

- De4js hiện đã được chạy trong trình duyệt web tại: http://localhost:4000/de4js/

MA CÔNG THÀNH – B18AT03 TRANG 25

Hình 15 Website local của de4js

- Cài đặt các gói bắt buộc:

2 sudo pacman -S npm ruby zlib sudo gem install bundler

- Lấy mã nguồn và cài đặt các phần phụ thuộc:

3 git clone https://github.com/lelinhtinh/de4js cd de4js bundle install

1 sudo npm install workbox-cli global

MA CÔNG THÀNH – B18AT03 TRANG 26

- Hoặc với đầu ra sử dụng thời gian thực:

- De4js hiện đã được chạy trong trình duyệt web tại: http://localhost:4000/de4js/

2.3 Cài đặt trên Debian, Linux Mint, Ubuntu

- Cài đặt các gói bắt buộc:

3 sudo apt update sudo apt install git npm ruby-dev zlib1g-dev sudo gem install bundler

- Lấy mã nguồn và cài đặt các phần phụ thuộc:

3 git clone https://github.com/lelinhtinh/de4js cd de4js bundle install

1 sudo npm install workbox-cli global

- Hoặc với đầu ra sử dụng thời gian thực:

- De4js hiện đã được chạy trong trình duyệt web tại: http://localhost:4000/de4js/

2.4 Sử dụng trên online website

- De4js có thể được sử dụng online trên trang web: https://lelinhtinh.github.io/de4js/

MA CÔNG THÀNH – B18AT03 TRANG 27

Hình 16 Trang web de4js online

Cách sử dụng De4js

- Đi tới thư mục có chương trình:

- Trong trình duyệt web, mở địa chỉ http://127.0.0.1:4000/de4js/

Hình 17 Khởi tạo công cụ de4js

MA CÔNG THÀNH – B18AT03 TRANG 28

- Trong giao diện website, chọn một trong các cách sau để nhập vào đoạn mã bi xáo trộn (obfuscated source code):

• String – chèn mã vào cửa sổ giao diện web

Hình 18 Nhập đoạn mã vào form

• Local File – chọn một tệp cục bộ trên máy tính

Hình 19 Nhập đoạn mã từ file

• Remote File – chỉ định địa chỉ URL của một tệp từ xa

Hình 20 Nhập đoạn mã từ URL

- Ta có thể xác định cách đoạn mã Javascript được giải mã thông các lựa trọn sau

(mỗi loại tương ứng với cách đoạn mã đầu vào được mã hóa):

Hình 21 Các lựa chọn để giải mã

MA CÔNG THÀNH – B18AT03 TRANG 29

Bạn có thể sử dụng tùy chọn "Auto Decode" để de4js tự động nhận diện phương pháp xáo trộn phù hợp với đoạn mã Javascript đầu vào Kết quả giải mã sẽ được hiển thị trong cửa sổ bên dưới.

- Các tùy chọn bổ sung mà ta có thể bật hoặc tắt:

Hình 22 Các tùy chọn bổ sung

• Line numbers – hiện thị số thự tự dòng

• Format Code – định dạng lại đoạn mã và highlight cú pháp

• Unescape strings – chuyển các xâu ký tự từ dạng chuỗi thoát về dạng thông thường

• Recover object-path – khôi phục đường dẫn đối tượng

• Execute expression – thực hiện số học và các phép toán khác trên biểu thức

• Merge strings - nối các chuỗi

• Remove grouping – Xóa gộp nhóm

Bài lab

Demo lab 1: Giải mã đoạn mã bị làm rối bằng Javascript Obfuscator

- Kịch bản: Ta muốn giải mã một đoạn mã đã được làm rối bằng Javascript Obfuscator thành đoạn mã có thể đọc hiểu được

- Đoạn mã Javascript trước khi được đưa vào làm rối bằng JS Obfuscator:

MA CÔNG THÀNH – B18AT03 TRANG 30

Hình 23 Lab1 - Đoạn mã JS bình thường

- Đoạn mã rối đầu vào:

Hình 24 Lab 1 - Đoạn mã đầu vào bị làm rối

MA CÔNG THÀNH – B18AT03 TRANG 31

- Sử dụng De4js để giải mã:

• paste đoạn mã muốn giải mã vào khung cửa cửa số web

• chọn nút “Auto Decode” trên giao diện web

Hình 25 Lab 1 - Giải mã bằng De4js

• Kết quả sau khi giải mã trả về đúng logic với đoạn mã trước khi bị obfuscator và có thể đọc hiểu được nội dung

• De4js xác định được chính xác loại làm rối (obfuscated) được sử dụng - ở đây chính là JS Obfuscator

Demo lab 2: Giải mã javascript để gỡ bỏ bản quyền chân trang trên một số nền tảng web template

- Kịch bản: Trên thị trường hiện nay, các nhà cung cấp template blogger đẹp như

Nhiều nhà cung cấp mẫu như Templateify, Sora Templates, Odd themes và Bloggertheme9 đều cung cấp cả phiên bản premium và free Phiên bản free thường mã hóa javascript và có bản quyền ở chân trang, nếu không xóa bản quyền, bạn vô tình tạo backlink cho họ, điều này có thể gây khó chịu Do đó, việc giải mã javascript là cần thiết để xóa bản quyền và tùy chỉnh dễ dàng hơn Một vấn đề đáng lưu ý là việc gom nhiều mã lại có thể gây lag khi chỉnh sửa, làm cho trình duyệt hoạt động chậm chạp và khó chịu.

MA CÔNG THÀNH – B18AT03 TRANG 32

Trên nền tảng Blogspot, chúng ta sẽ tạo một blog sử dụng themeplate miễn phí mang tên Paperify Blogger Template từ Templateify Sau khi hoàn tất quá trình tạo blog, chúng ta sẽ sở hữu một website với bản quyền chân trang như hình dưới đây.

Hình 26 Lab 2 - Trang web với bản quyền chân trang

MA CÔNG THÀNH – B18AT03 TRANG 33

Để xem mã nguồn của trang web, bạn chỉ cần nhấn tổ hợp phím Ctrl + U Sau đó, cuộn xuống dưới để tìm đoạn mã JavaScript được mã hóa, đây chính là mã bản quyền chân trang của Templateify.

Hình 27 Lab 2 - Mã nguồn của trang web bị gắn bản quyền

- Copy và paste phần đánh dâu trong ảnh vào công cụ De4js:

MA CÔNG THÀNH – B18AT03 TRANG 34

Hình 28 Lab2 - Nhập đoạn mã bị mã hóa vào de4js

- Ấn chọn nút “Auto Decode”, thu được kết quả:

Hình 29 Lab 2 - Kết quả giải mã của de4js

MA CÔNG THÀNH – B18AT03 TRANG 35

- Sau đó ta sẽ copy đoạn code đã được giải mã và tiếp theo sẽ vào trang JavaScript

Minifier để minify đoạn code cho dễ đọc:

Hình 30 Lab 2 - Rút gọn lại đoạn mã vừa được giải mã

- Tiếp đến ta sẽ copy đoạn code đã được minified và dán vào trang web để format lại định dạng cho đoạn code javascript:

Hình 31 Lab 2 - Định dạng lại đoạn code

MA CÔNG THÀNH – B18AT03 TRANG 36

- Copy toàn bộ đoạn mã đã được format, vào phần chính sửa HTML theme trong Blogspot

Hình 32 Lab 2 - Chỉnh sửa HTML của template theme

- Sau đó ta sẽ paste thay thế phần code javascript dưới đây:

Hình 33 Lab 2 - Đoạn code mã hóa cần được thay thế

MA CÔNG THÀNH – B18AT03 TRANG 37

- Ta sẽ thu được kết quả như sau:

Hình 34 Lab 2 - Đoạn mã được giải mã thay thế đoạn mã bị mã hóa cũ

Chúng ta đã hoàn thành bước mã hóa đoạn code bị rối Tiếp theo, chúng ta sẽ tìm phần JavaScript xử lý bản quyền phân trang và tiến hành xóa đoạn code đó.

Hình 35 Lab 2 - Xóa đoạn mã JS chứa bản quyền chân trang

Sau khi hoàn tất việc xóa, chúng ta cần nhấn lưu lại để gỡ bỏ bản quyền chân trang trên theme miễn phí của Templateify Kết quả này cho phép chúng ta tự do thay đổi chân trang theo ý muốn mà không bị chuyển hướng về trang chủ của Templateify nữa.

MA CÔNG THÀNH – B18AT03 TRANG 38

Hình 36 Lab 2 - Xóa thành công bản quyền chân trang

MA CÔNG THÀNH – B18AT03 TRANG 39

Ngày đăng: 09/02/2022, 16:13

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] "Javascript là gì," [Online]. Available: https://www.hostinger.vn/huong-dan/javascript-la-gi. [Accessed 21 12 2021] Sách, tạp chí
Tiêu đề: Javascript là gì
[2] "Tìm hiểu về minified và obfuscated code," [Online]. Available: http://soaptek.blogspot.com/2013/01/tim-hieu-ve-minified-obfuscated-code.html. [Accessed 21 12 2021] Sách, tạp chí
Tiêu đề: Tìm hiểu về minified và obfuscated code
[3] "Obfuscated code trong lập trình," [Online]. Available: https://viblo.asia/p/obfuscated-code-trong-lap-trinh-XL6lANQg5ek. [Accessed 21 12 21] Sách, tạp chí
Tiêu đề: Obfuscated code trong lập trình
[4] "Javascript Obfuscation the definitive guide," [Online]. Available: https://blog.jscrambler.com/javascript-obfuscation-the-definitive-guide. [Accessed 21 12 2021] Sách, tạp chí
Tiêu đề: Javascript Obfuscation the definitive guide
[5] "De4js - Penetration Testing Tools," [Online]. Available: https://en.kali.tools/?p=1372. [Accessed 21 12 2021] Sách, tạp chí
Tiêu đề: De4js - Penetration Testing Tools

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w