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 79 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

Nội dung

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - - BÁO CÁO TIỂU LUẬN CÔNG CỤ GIẢI MÃ JAVASCRIPT - DE4JS HỌC PHẦN: AN TOÀN MẠNG Sinh viên thực Mã sinh viên Nhóm mơn học Giảng viên hướng dẫn : : : : Ma Công Thành B18DCAT235 01 TS Đặng Minh Tuấn Hà Nội, tháng 12/2021 NHẬN XÉT VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN: Hà Nội, ngày… tháng 12 năm 2021 GIẢNG VIÊN GIẢNG DẠY MA CÔNG THÀNH – B18AT03 TRANG MỤC LỤC NHẬN XÉT VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN: DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC TỪ VÀ THUẬT NGỮ VIẾT TẮT LỜI MỞ ĐẦU I Giới thiệu, lịch sử hình thành II Javascript: 1.1 Javascript gì? 1.2 Lịch sử hình thành JavaScript 1.3 Cách hoạt động JavaScript 1.4 Điểm khác biệt ngơn ngữ lập trình khác JavaScript gì? 10 1.5 Khuyết điểm JavaScript 10 1.6 Tại phải làm xáo trộn (Obfuscation) mã javascript: 11 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 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 Hướng dẫn cài đặt sử dụng DE4JS 21 Công cụ De4js: 21 Cài đặt De4js: 22 2.1 Cài đặt Kali Linux 22 2.2 Cài đặt BlackArch 25 2.3 Cài đặt Debian, Linux Mint, Ubuntu 26 2.4 Sử dụng online website 26 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 MA CÔNG THÀNH – B18AT03 TRANG III Bài lab 29 Demo lab 1: Giải mã đoạn mã bị làm rối Javascript Obfuscator 29 Demo lab 2: Giải mã javascript để gỡ bỏ quyền chân trang số tảng web template: 31 IV V Kết luận: 39 Tài liệu tham khảo 40 MA CÔNG THÀNH – B18AT03 TRANG DANH MỤC CÁC BẢNG Bảng Bảng so sánh JS với số ngơn ngữ lập trình phổ biến 10 DANH MỤC CÁC HÌNH VẼ Hình Tỉ lệ sử dụng JavaScript Hình Cách JavaScript làm việc trang web Hình Ví dụ khơng dùng obfuscation 11 Hình Obfuscation đoạn mã JavaScript 12 Hình Đoạn mã rõ 15 Hình Mã minified 15 Hình Mã làm rối obfuscation phương pháp 16 Hình Mã mã hóa cực độ 16 Hình Luồng giải mã đoạn code bị làm rối 20 Hình 10 Cài đặt gói bắt buộc 22 Hình 11 Cài đặt gói bắt buộc 22 Hình 12 Lấy mã nguồn de4js cài thư viện phụ thuộc 23 Hình 13 Cài đặt workbox-cli 24 Hình 14 Chạy máy chủ web de4js 24 Hình 15 Website local de4js 25 Hình 16 Trang web de4js online 27 Hình 17 Khởi tạo cơng cụ de4js 27 Hình 18 Nhập đoạn mã vào form 28 Hình 19 Nhập đoạn mã từ file 28 Hình 20 Nhập đoạn mã từ URL 28 Hình 21 Các lựa chọn để giải mã 28 Hình 22 Các tùy chọn bổ sung 29 Hình 23 Lab1 - Đoạn mã JS bình thường 30 Hình 24 Lab - Đoạn mã đầu vào bị làm rối 30 Hình 25 Lab - Giải mã De4js 31 Hình 26 Lab - Trang web với quyền chân trang 32 Hình 27 Lab - Mã nguồn trang web bị gắn quyền 33 Hình 28 Lab - Nhập đoạn mã bị mã hóa vào de4js 34 Hình 29 Lab - Kết giải mã de4js 34 Hình 30 Lab - Rút gọn lại đoạn mã vừa giải mã 35 Hình 31 Lab - Định dạng lại đoạn code 35 Hình 32 Lab - Chỉnh sửa HTML template theme 36 Hình 33 Lab - Đoạn code mã hóa cần thay 36 Hình 34 Lab - Đoạn mã giải mã thay đoạn mã bị mã hóa cũ 37 Hình 35 Lab - Xóa đoạn mã JS chứa quyền chân trang 37 Hình 36 Lab - Xóa thành công quyền chân trang 38 MA CÔNG THÀNH – B18AT03 TRANG DANH MỤC CÁC TỪ VÀ THUẬT NGỮ VIẾT TẮT Từ viết tắt Thuật ngữ tiếng Anh/Giải thích Thuật ngữ tiếng Việt/Giải thích JS Javascript Ngơn ngữ lập trình sử dụng rộng rãi cho web CTF Capture The Flag Cuộc thi kiến thức bảo mật thông tin MA CÔNG THÀNH – B18AT03 TRANG LỜI MỞ ĐẦU Ngày này, mạng Internet trở thành phần thiếu sống xã hội đại, mở chương việc kết nối người toàn giới Rất dễ để nhận thấy diện mạng Internet thông qua thiết bị số sử dụng hàng ngày, như: ứng dụng mạng xã hội Facebook, Zalo, Telegram, … giúp trị chuyện với nhau, sử dụng ứng dụng sàn thương mại điện tử Shopee, Lazada, … để mua hàng thông qua trang web để tìm kiếm, trao đổi thơng tin, … Tầm quan trọng công nghệ sống bàn cãi, nhiên để giúp phần mềm, ứng dụng, trang web hoạt động ổn định hiệu khơng thể khơng nhắc đến vai trị ngơn ngữ lập trình Javascript Đây ngơn ngữ lập trình sử dụng phổ biến việc xây dụng website số app mobile JavaScript JS giúp tăng tính tương tác website Script chạy trình duyệt người dùng thay server thường sử dụng thư viên bên thứ ba nên tăng thêm chức cho website mà code từ đầu Nhưng mà Javascript nơi ẩn chứa nhiều vấn đề bảo mật hay nguy bị công với mức độ phổ biến mình, thu hút lượng lớn hacker, scammer, người có ác tâm ln tìm kiếm lỗ hổng lỗi bảo mật để lợi dụng Ngồi ra, Javascript code snippets lớn dẫn đến việc làm chậm lag trình duyệt thực thi mức gói thư viện Javascript Do đó, để khắc phục hạn chế khuyết - nhược điểm này, ngưởi ta sử dụng số phương pháp như: rút gọn code (minify code), đóng gói code (packer code) mã hóa code (obfuscated code) khiến cho việc đọc hiểu code javascript trở nên khó phức tạp Vì vậy, cơng cụ dịch ngược đoạn code javascript bị “rút gọn” “mã hóa” đời phục vụ cho nhà phân tích lỗ hổng an ninh mạng hacker Đặc biệt số cơng cụ De4js – cơng cụ dùng để giả mã (deobfuscator) giải nén (unpacker) code javascript Và nội dung mà tiểu luận muốn đề cập tới: Công cụ giải mã giải nén mã lệnh javascript – De4js Rất mong nhận góp ý thầy để giúp em hoàn thiện tiểu luận Em xin chân thành cảm ơn! MA CÔNG THÀNH – B18AT03 TRANG Giới thiệu, lịch sử hình thành I Javascript: 1.1 Javascript gì? - - JavaScript, theo phiên hành, ngơn ngữ lập trình thơng dịch phát triển từ ý niệm nguyên mẫu Ngôn ngữ dùng rộng rãi cho trang web (phía người dùng) phía máy chủ (với Nodejs) Nó vốn phát triển Brendan Eich Hãng truyền thông Netscape với tên Mocha, sau đổi tên thành LiveScript, cuối thành JavaScript Giống Java, JavaScript có cú pháp tương tự C, gần với Self Java .js phần mở rộng thường dùng cho tập tin mã nguồn JavaScript JavaScript nhanh chóng trở thành ngơn ngữ web Nó cung cấp lượng cho gần trang web tồn gia tăng khung JavaScript đa tảng React Native Ionic cho phép nhà phát triển tạo ứng dụng dành cho thiết bị di động máy tính để bàn cách sử dụng sở mã JS chia sẻ Hình Tỉ lệ sử dụng JavaScript - Với công ty danh sách Fortune 500 sử dụng JavaScript để phát triển ứng dụng họ, ngày thấy JS cung cấp lượng cho ứng dụng quan trọng lĩnh vực khác ngân hàng di động, thương mại điện tử dịch vụ phát trực tuyến 1.2 Lịch sử hình thành JavaScript - JavaScript bắt đầu vào năm 1995 Netscape Communications Vào thời gian này, nhà sản xuất Netscape browser nhận rằng, việc thêm "glue language" để nâng cao trải nghiệm người dùng làm tăng tiêu thụ nội dung người dùng Vì vậy, họ đưa Brendan Eich nhúng vào Scheme Programming language Tuy nhiên, thời điểm đó, Java ngơn ngữ mới, nóng hổi website, nên họ định làm cho ngôn ngữ gần gũi với cú pháp Java Kết đem lại JavaScript, với tính Scheme, định hướng đối tượng SmallTalk cú pháp Java Phiên ngôn ngữ đặt tên Mocha vào tháng năm 1995, đổi tên thành LiveScript vào tháng năm 1995, đổi tên thành JavaScript vào tháng 12 năm 1995 MA CÔNG THÀNH – B18AT03 TRANG - Năm 1996, JavaScript gửi đến ECMA International để hoàn thiện trở thành, đặc tính kỹ thuật tiêu chuẩn Vào tháng năm 1997, đặc tính kỹ thuật thức cho ngôn ngữ phát hành ECMA-262 Phiên ngôn ngữ ECMAScript 2017 phát hành vào tháng năm 2017 1.3 Cách hoạt động JavaScript - Khi web browser tải web page, HTML parser bắt đầu phân tích cú pháp HTML code tạo DOM Bất trình phân tích cú pháp gặp thị CSS JavaScript (inline externally loaded), chuyển giao cho CSS parser JavaScript engine theo yêu cầu JavaScript engine tải tệp JavaScript bên ngồi inline code, khơng chạy mã lập tức, mà đợi HTML CSS phân tích hồn tất Khi điều thực hiện, JavaScript thực thi theo thứ tự chúng tìm thấy trang web: biến hàm xác định, lời gọi hàm thực thi, trình xử lý kiện kích hoạt, Các hoạt động dẫn đến việc DOM cập nhật JavaScript hiển thị trình duyệt Hình Cách JavaScript làm việc trang web MA CÔNG THÀNH – B18AT03 TRANG 1.4 Điểm khác biệt ngơn ngữ lập trình khác JavaScript gì? - Lý JavaScript ngơn ngữ lập trình phổ biến linh hoạt Trên thực tế, có nhiều lập trình viên chọn làm ngơn ngữ sử dụng ngôn ngữ khác danh sách bên nóhọ cần dùng điều đặc biệt - Hãy xem qua ngơn ngữ lập trình phổ biến bên dưới: Ngơn ngữ Đặc điểm lập trình JavaScript JS giúp tăng tính tương tác website Script chạy trình duyệt người dùng thay server thường sử JavaScript dụng thư vuiên bên thứ nên tăng thêm chức cho website mà code từ đầu HTML Viết tắt “Hypertext Markup Language”, HTML số ngơn ngữ lập trình phổ biến web xây dựng nên khối trang web Ví dụ HTML tags

cho đoạn văn cho hình ảnh PHP PHP ngơn ngữ phía server, khác với JavaScript chạy máy client Nó thường sử dụng hệ quản trị nội dung PHP WordPress, thường dùng với lập trình back-end tạo kênh truyền thông tin hiệu tới từ database CSS CSS viết tắt “Cascading Style Sheets”, giúp webmaster xác định styles định nghĩa nhiều loại nội dung Bạn làm thủ công với yếu tố HTML, bạn lặp lặp lại thành phần mà bạn dùng nhiều nơi khác Bảng Bảng so sánh JS với số ngôn ngữ lập trình phổ biến - Nếu xem ngơn ngữ lập trình việc xây nhà, HTML định dạng kiến trúc nhà, CSS thảm tường để trang trí ngơi nhà đẹp JavaScript thêm yếu tố tương tác nhà, việc mở cánh cửa làm đèn sáng Bạn làm web mà khơng có JavaScript rủi ro website bạn trông web thời năm 1995 1.5 Khuyết điểm JavaScript: - Mọi ngơn ngữ lập trình có khuyết điểm Một phần ngơn ngữ phát triển đến mức độ JavaScript, thu hút lượng lớn hacker, scammer, người có ác tâm ln tìm kiếm lỗ hổng lỗi bảo mật để lợi dụng Một số khuyết điểm kể đến là: ❖ Dễ bị khai thác; ❖ Có thể dùng để thực thi mã độc máy tính người dùng; ❖ Nhiều khơng hỗ trợ trình duyệt; MA CƠNG THÀNH – B18AT03 TRANG 10 - - Hoặc với đầu sử dụng thời gian thực: npm run watch De4js chạy trình duyệt web tại: http://localhost:4000/de4js/ Xây dựng: npm run build 2.3 - Cài đặt Debian, Linux Mint, Ubuntu Cài đặt gói bắt buộc: sudo apt update sudo apt install git npm ruby-dev zlib1g-dev sudo gem install bundler - Lấy mã nguồn cài đặt phần phụ thuộc: git clone https://github.com/lelinhtinh/de4js cd de4js bundle install - Cài đặt Workbox CLI: sudo npm install workbox-cli global - Khởi động máy chủ: npm start - Hoặc với đầu sử dụng thời gian thực: npm run watch 2.4 - De4js chạy trình duyệt web tại: http://localhost:4000/de4js/ Sử dụng online website De4js sử dụng online trang web: https://lelinhtinh.github.io/de4js/ MA CƠNG THÀNH – B18AT03 TRANG 26 Hình 16 Trang web de4js online Cách sử dụng De4js 3.1 Khởi tạo cơng cụ - Đi tới thư mục có chương trình: cd ~/de4js - Khởi động máy chủ: npm start - Trong trình duyệt web, mở địa 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 27 3.2 - Cách sử dụng: Trong giao diện website, chọn 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 tệp cục máy tính Hình 19 Nhập đoạn mã từ file • Remote File – định địa URL tệp từ xa Hình 20 Nhập đoạn mã từ URL - Ta xác định cách đoạn mã Javascript giải mã thông lựa trọn sau (mỗi loại tương ứng với cách đoạn mã đầu vào mã hóa): Hình 21 Các lựa chọn để giải mã • • • • • • • None Eval Array Obfuscator IO _Number JSFuck JJencode MA CÔNG THÀNH – B18AT03 TRANG 28 • • • • • • • • • AAencode URLencode Packer JS Obfuscator My Obfuscate Wise Eval Wise Function Clean Source Unreadable - Ngồi ra, ta nhập vào option “Auto Decode” để de4js tự động phát phương pháp xáo trộn phù hợp với đoạn mã đầu Javascript đầu vào Đoạn mã giải mã hiển thị cửa sổ bên - Các tùy chọn bổ sung mà ta bật tắt: Hình 22 Các tùy chọn bổ sung • • • • • • • Line numbers – thị số thự tự dòng Format Code – định dạng lại đoạn mã highlight cú pháp Unescape strings – chuyển xâu ký tự từ dạng chuỗi thoát dạng thông thường Recover object-path – khôi phục đường dẫn đối tượng Execute expression – thực số học phép toán khác biểu thức Merge strings - nối chuỗi Remove grouping – Xóa gộp nhóm III Bài lab Demo lab 1: Giải mã đoạn mã bị làm rối Javascript Obfuscator: - Kịch bản: Ta muốn giải mã đoạn mã làm rối Javascript Obfuscator thành đoạn mã đọc hiểu - Đoạn mã Javascript trước đưa vào làm rối JS Obfuscator: MA CÔNG THÀNH – B18AT03 TRANG 29 Hình 23 Lab1 - Đoạn mã JS bình thường - Đoạn mã rối đầu vào: Hình 24 Lab - Đoạn mã đầu vào bị làm rối MA CÔNG THÀNH – B18AT03 TRANG 30 - 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” giao diện web • thu kết quả: Hình 25 Lab - Giải mã De4js - Nhận xét: • Kết sau giải mã trả logic với đoạn mã trước bị obfuscator đọc hiểu nội dung • De4js xác định xác loại làm rối (obfuscated) sử dụng - JS Obfuscator Demo lab 2: Giải mã javascript để gỡ bỏ quyền chân trang số tảng web template: - Kịch bản: Trên thị trường nay, nhà cung cấp template blogger đẹp Templateify, Sora Templates, Odd themes, Bloggertheme9 nhiên họ có hai premium free Với free họ mã hóa javascript để quyền chân trang Nếu bạn sử dụng free mà khơng xóa quyền đồng nghĩa với việc bạn cho họ backlink Đôi điều làm bạn khó chịu Vì cần phải giải mã javascript để xóa quyền chân trang tùy chỉnh javascript dễ dàng Điều đặc biệt tạo nên lag gom đống code lại thế, chỉnh sửa code gây lag, đứng trình duyệt khó chịu MA CƠNG THÀNH – B18AT03 TRANG 31 - Trên tảng Blogspot, ta tạo blog sử themeplate miễn phí có tên Paperify Blogger Template từ Templateify Sau tạo blog thành cơng, ta thu website có quyền chân trang hình đây: Hình 26 Lab - Trang web với quyền chân trang MA CÔNG THÀNH – B18AT03 TRANG 32 - Nhấn tổ hợp phím Crlt + U, hình thị source code trang web mở Di chuyển hình xuống dưới, ta thấy đoạn javascipt mã hóa Đây phần mã hóa quyền chân trang Templateify Hình 27 Lab - Mã nguồn trang web bị gắn quyền - Copy paste phần đánh dâu ảnh vào công cụ De4js: MA CƠNG THÀNH – B18AT03 TRANG 33 Hình 28 Lab2 - Nhập đoạn mã bị mã hóa vào de4js - Ấn chọn nút “Auto Decode”, thu kết quả: Hình 29 Lab - Kết giải mã de4js MA CƠNG THÀNH – B18AT03 TRANG 34 - Sau ta copy đoạn code giải mã vào trang JavaScript Minifier để minify đoạn code cho dễ đọc: Hình 30 Lab - Rút gọn lại đoạn mã vừa giải mã - Tiếp đến ta copy đoạn code minified dán vào trang web để format lại định dạng cho đoạn code javascript: Hình 31 Lab - Định dạng lại đoạn code MA CÔNG THÀNH – B18AT03 TRANG 35 - Copy toàn đoạn mã format, vào phần sửa HTML theme Blogspot Hình 32 Lab - Chỉnh sửa HTML template theme - Sau ta paste thay phần code javascript đây: Hình 33 Lab - Đoạn code mã hóa cần thay MA CÔNG THÀNH – B18AT03 TRANG 36 - Ta thu kết sau: Hình 34 Lab - Đoạn mã giải mã thay đoạn mã bị mã hóa cũ - Vậy ta xong bước mã hóa đoạn code bị làm rối, ta tìm phần javascript xử lý phần quyền phân trang, sau ta xóa đoạn code đó: Hình 35 Lab - Xóa đoạn mã JS chứa quyền chân trang - Sau xóa xong, ta ấn lưu lại Vây ta gỡ quyền chân trang theme miễn phí Templateify Kết thu cho phép thay đổi chân trang theo ý mà không bị redirect đến trang chủ Templateify MA CƠNG THÀNH – B18AT03 TRANG 37 Hình 36 Lab - Xóa thành cơng quyền chân trang MA CÔNG THÀNH – B18AT03 TRANG 38 IV Kết luận: - De4js công cụ để giải mã deobfuscated phổ biến với lợi ích như: có khả dịch ngược tốt, chạy offline tương thích với nhiều hệ điều hành - Tuy nhiên de4js số điểm hạn chế khả giải mã chưa theo kịp với kiểu mã hóa – điều vừa tốt vừa tồi; tốt kiểu mã hóa trở nên tốt hơn, giúp đảm bảo an tồn cho hệ thống; tồi với việc update khơng kịp thời cơng dụng tool dần bị giảm - Đây công cụ penetration testing tốt dành cho nhà phân tích lỗ hổng hệ thống, dàng có thi CTF với mức độ khó khơng q cao; cịn với hacker cơng cụ lựa chọn thời gian update chậm - Vậy báo cáo tiểu luận trình bày xong làm rối, xáo trộn mã javascript, giải mã đoạn mã bị xáo trộn tìm hiểu cơng cụ De4js Bài báo cáo chủ yếu dựa tìm hiểu cá nhân, cịn nhiều sai sót, mong thầy đóng góp nhận xét để giúp em hồn thiện tốt làm MA CƠNG THÀNH – B18AT03 TRANG 39 V Tài liệu tham khảo [1] "Javascript gì," [Online] Available: https://www.hostinger.vn/huong-dan/javascript-la-gi [Accessed 21 12 2021] [2] "Tìm hiểu minified obfuscated code," [Online] Available: http://soaptek.blogspot.com/2013/01/tim-hieu-ve-minified-obfuscated-code.html [Accessed 21 12 2021] [3] "Obfuscated code lập trình," [Online] Available: https://viblo.asia/p/obfuscated-code-trong-laptrinh-XL6lANQg5ek [Accessed 21 12 21] [4] "Javascript Obfuscation the definitive guide," [Online] Available: https://blog.jscrambler.com/javascript-obfuscation-the-definitive-guide [Accessed 21 12 2021] [5] "De4js - Penetration Testing Tools," [Online] Available: https://en.kali.tools/?p=1372 [Accessed 21 12 2021] MA CÔNG THÀNH – B18AT03 TRANG 40 ... cơng cụ De4js – cơng cụ dùng để giả mã (deobfuscator) giải nén (unpacker) code javascript Và nội dung mà tiểu luận muốn đề cập tới: Công cụ giải mã giải nén mã lệnh javascript – De4js Rất mong nhận... Phương pháp giải mã code javascript bị mã hóa: - Trình tự bước giải mã cụ thể trình bày phần demo lab công cụ De4js, phần giới thiệu số cách thông dụng để giải mã code javascript bị mã hóa: MA... III Bài lab Demo lab 1: Giải mã đoạn mã bị làm rối Javascript Obfuscator: - Kịch bản: Ta muốn giải mã đoạn mã làm rối Javascript Obfuscator thành đoạn mã đọc hiểu - Đoạn mã Javascript trước đưa

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

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