NGHIÊN CỨU, PHAN TÍCH VA THIET KE HE THONG

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Xây dựng hệ thống phân tích websites và đề xuất các giải pháp bảo mật thông tin (Trang 52 - 82)

3.1. Tong quan hệ thống

3.1.1. Ky thuật và luồng xử lý của hệ thống

3.1.1.1. Kỹ thuật và luồng xử lý của Extension Detector

| background js hề

Tab ⁄Z popupjs ®———| library.js

x rẻ

A

popup.html

|£————>| conteniscript js

Hình 3-1: Mô tả luồng xử ly của Extension Detector

Mô tả luồng xử lý của ứng dụng Extension Detector [16]:

- Contentscript.js: Đây là các thành phần được extension inject vào các trang web. Các thành phan nay được chạy cùng môi trường với trang web hiện tại nên có thé sử dụng Javascript, CSS dé thao tác lên các thành phần DOM. File này sẽ thực hiện xử

lý và lấy ra được đữ liệu là toàn bộ HTML của tab hiện tại dưới dạng chuỗi string.

- Popup.html: Đây là trang sẽ chạy và hiển thị kết qua trả về sau khi mở extension. Cấu trúc của nó cũng tương tự như những trang HTML khác. Trang này được chạy

ở một môi trường khác so với content script.

- Background.js: Được sử dụng với mục đích tương tự như một server, dùng dé lắng

nghe các sự kiện được gọi từ trang popup và trang content. Xử lý, lưu trữ dữ liệu

cũng như là trả về data trong response.

40

- Library.js: Đây là file thư viện được viết dưới dạng mảng, dùng để lưu trữ thông tin về từng công nghệ. Mỗi đối tượng gồm: tên công nghệ web, doanh mục của

công nghệ, icon của công nghệ va rule đê công cụ có thê xác định định công nghệ.

- Popup.js: Đây là nơi chứa các hàm xử lý chức năng chính của extension. Ở file

này ta sẽ thực hiện các phương thức so sánh string.matchQ dữ liệu của các công

nghệ được lưu ở file thư viện library.js với các dữ liệu có được qua việc sử dụng

Chrome APIs và dữ liệu từ content script.js của tab hiện tại. Sau khi thực thi kiểm tra với phương thức string.match(), dữ liệu trả về các công nghệ phát hiện được ứng với trang web hiện tại sẽ được lưu dưới dạng mảng và sẽ cho hiển thị trên trang

popup.html.

Example : https:/nc.uit.edu.vn/ Q Thực hiện nhận diện công nghệ của Website

Có được danh sách những công nghệ được Website sử dụng

Nếu công nghệ không tồn tại lỗ hổng, chỉ hiện tên công nghệ

đó

Đối chiếu danh sách những công nghệ phát hiện được với

danh sách những công nghệ tồn tại lỗ hổng trong dataset

Nếu công nghệ có thể tồn tại lỗ hổng, hiển thị tên công nghệ, tên lỗ hống, thông tin chỉ tiết về lỗ hống và những giải pháp

khắc phục lỗ hống nhanh chóng.

Hình 3-2: Mô tả luồng xử lý của Website phát hiện công nghệ Web, rủi ro và đề xuất giải pháp

41

Đầu tiên, khi người dùng nhập vào một URL, hệ thống sẽ thực hiện dò tìm những công nghệ được sử dụng trong website đó, áp dụng những phương pháp nhận biết

công nghệ được nhóm nghiên cứu.

Sau khi có được danh sách tên của những công nghệ được sử dụng trong website,

hệ thống sẽ thực hiện đối chiếu với bộ dữ liệu lỗ hỗng. Nếu tên của công nghệ đó có tồn tại trong bộ dữ liệu, hệ thống sẽ hiển thị cho người dùng những thông tin bao gồm tên công nghệ, mã lỗ hồng đã được công bó, loại lỗ hong, thông tin miêu tả chi tiết lỗ hồng và giải pháp khắc phục lỗ hồng đó. Nếu công nghệ được phát hiện không tôn tại lỗ hồng, hệ thống sẽ không hiển thị thông tin.

3.1.2. Danh sách các nhóm chức năng

3.1.2.1. Nhận diện công nghệ

Bằng các phương pháp thu thập thông tin từ một website, thông qua việc phân tích source code cua website, giá tri trả về HTTP Headers, các tệp cookies, các biến JavaScript và một vài phương thức khác, ta có thé tìm ra các “manh mối” dé xác định loại công nghệ được sử dụng. Mỗi loại công nghệ luôn có dấu hiệu nhận biết riêng, biết được các dấu hiệu này ta dé dàng xác định ngôn ngữ lập trình, các thư

viện, cơ sở dữ liệu, web server, CMS, các plugin,...

Dựa vào các kiên thức nghiên cứu được vê các phương thức nhận biệt công nghệ,

nhóm sẽ xây dựng những bộ rule ứng với từng công nghệ, xác định cách thức đê

nhận biết công nghệ được sử dụng. Các rule sẽ là các mẫu regular expression dùng

dé so khớp bằng phương thức match() của JavaScript.

3.1.2.2. Nhận diện lỗ hong

Sau khi tìm hiểu tổng quan về những lỗ hong website và những cách thức tấn công website phô biến nhất, nhóm tiến hành xây dựng bộ dữ liệu những lỗ hồng của những công nghệ Web được sử dụng nhiều nhất theo thống kê của trang Wappalyzer và được sử dung nhiều nhất bởi các website có nhiều lượt truy cập nhất

tại Việt Nam.

42

Những lỗ hồng được nhóm tổng hợp trong bộ đữ liệu được thu thập từ nhiều nguồn khác nhau, bao gồm các bài báo cáo từ nhà cung cấp công nghệ, báo cáo từ các trung tâm bảo mật thông tin quốc tế, những thông tin chỉ tiết về lỗ hồng từ thư viện

lỗ hong quốc tế CVE. [17]

Những thông tin về lỗ hỗng được nhóm liệt kê là những dữ liệu lỗ hồng được cập nhật mới nhất và có mức độ nghiêm trọng từ trung bình trở lên theo đánh giá của

Hệ thống cham điểm lỗ hồng phé biến (Common Vulnerability Scoring System), có thể gây ảnh hưởng nghiêm trọng tới tính bảo mật, tính toàn vẹn và tính sẵn sàng của

Website cũng như sự an toàn của người dùng.

3.1.2.3. Dé xuất giải pháp che giấu thông tin công nghệ

Từ việc nghiên cứu những dữ kiện có thé bị khai thác dé xác định công nghệ được

sử dụng trên website, nhóm sẽ đề xuất các giải pháp giúp nhà phát triển web ấn đi một số phan thông tin quan trọng như giải pháp an thông tin trong HTTP Response,

an thông tin trong Cookies... Qua đó hạn chế được việc những kẻ tấn công nắm

được danh sách công nghệ web được sử dụng, tăng cường độ bảo mật của trang web.

3.1.2.4. Báo cáo tong hợp

Ngoài các chức năng trên, hệ thống phân tích website còn có phần báo cáo tổng hợp. Trong phan này, nhóm sẽ tiễn hành sử dụng hệ thống quét qua website có lượt truy cập nhiều nhất Việt Nam, thuộc nhiều lĩnh vực khác nhau như tin tức, giải trí,

website của chính phủ, ngân hàng, bệnh viện, trường học.

Sau đó, nhóm sẽ tiến hành xử lý những thông tin và dữ liệu thu thập được và đưa ra báo cáo số liệu thống kê về những công nghệ web được sử dụng nhiều nhất theo từng danh mục, những 16 hồng xuất hiện nhiều nhat,...

Những thông tin và dit liệu về công nghệ sẽ được mô tả đưới dạng biểu đồ chi tiết, cùng với đường link một số website sử dụng công nghệ đó cho người dùng có thê

dễ dàng quan sát và tham khảo.

43

3.2. Xây dựng bộ rule phát hiện công nghệ

3.2.1. Bộ rule các công nghệ phát hiện được qua phân tích source code

Dé có thể nhận biết công nghệ thông qua source code, ta sẽ quét qua toàn bộ HTML, tìm trong các thẻ chứa từ khóa quan trọng nhằm xác định công nghệ. Một

số thẻ thường được dùng dé phát hiện và nhận diện công nghệ là :

-Thẻ script:

Thẻ <script> được dùng dé xác định mã J avaScript can duoc chạy trên một trang web. Một thẻ script có thể bao gồm các đoạn mã JavaScript trực tiếp hoặc sẽ trỏ tới một url chứa mã JavaScript. Các thẻ <script> thường sẽ cho biết đường dẫn đến các

Hình 3-3: Thẻ script hiển thị thông tin công nghệ jQuery và jQuery Migrate

- Thẻ meta:

Meta tag là các thẻ được sử dụng trong các tài liệu HTML và XHTML để cung cấp siêu dữ liệu (metadata) có cau trúc về một trang web. Chúng là một phan trong thẻ

<head> của trang web và nó có thể được đọc bởi các công cụ tim kiếm và trình thu

thập thông tin web.

Trong đó, thẻ Meta Generator Tag cung cấp thông tin về công cụ tạo ra HTML, có thé có các từ khóa như "application-name", "Powered-By" hoặc bat kỳ tên khác mà người phát triển sử dụng.

44

mR OG] Elements Console

<link rel=

<link rel=

<link rel=

nifest.xml">

“https://api.w.org/” href="https://nc.uit.edu.vn/wp-json/">

Sources Network Performance Memory — Application

a

“EditURI" type="application/rsd+xml" title="RSD" href="https://nc.uit.e

“wlwmanifest" type="application/wlwmanifest+xml” href="https://nc.uit.e

Ss

<meta name=”generator” content="WordPress 5.2.11"> == $6

<link rel=”shortlink” href="https://ne.uit.edu.vn/">

Hình 3-4: Thẻ meta hién thi thông tin công nghệ WordPress 5.2.11

Một số công nghệ khác cũng có thé bị nhận diện thông qua thẻ này như:

Joomla:

<meta name="generator” content="Joomla! - Open Source Content Management”>

Drupal:

?

<meta name=”Generator” content="Drupal 8 (https: //www.drupal.org)">

Microsoft SharePoint:

<meta name="GENERATOR" content="Microsoft SharePoint">

Category Technology Key Words

WordPress | wp-(?:contentlincludes)

_" We ste +

Go Daddy <meta name="generator"(.*)Go Daddy Website

Builder Joomla <meta name="generator"(.*)Joomla

Drupal <meta name="generator"(.*)Drupal

CMS

Odoo <meta name="generator"(.*)Odoo

TYPO3 <meta name="generator"(.*)TYPO3

Microsoft on H/ SN: .

SharePoint <meta name="generator"(.*)Microsoft SharePoint

Wix <meta name="generator"(.*)Wix

45

jQuery <script(.*)jquery ?([a-zA-Z0-9.-]+).js

Lodash lodash.*

Javascrip L Backbone | backbone.*.js

Libraries

MathJax MathJax.js React react(?:.min)?.js

AngularJS | angular.min.js

NuxtJS _nuxt

Javascript . ơ

Frameworks RequireJS require.*.js

Vue data-vue-ssr-id

AMP "amphtml"

(bootstrap?([a-zA-Z0-9.-

Bootstrap ]+).Gslcss)lclass="container-

fluid" |Iclass="container") Materialize | <link[^>]* href=\"[“\"]*materialize Foundation | <meta class="foundation

SemanticUI | semantic.min.js

Ul Material

F k 1 t2 1/22 min

rameworks Design Lite material(?:V.min)?V.js

UIkit uikit.min.js Kendo UI | kendo.min.js Animate.css | <link(.*)animate?([a-zA-Z0-9.-]+).css

Vuetify <div data-app[^>]+class=\"v-application

ASP.NET | name="__VIEWSTATE" id="__VIEWSTATE"

Web : —" "7 3k 1c]

Frameworks Ruby on Rails | <meta name="csrf-param"(.*)authenticity_token

Django type="hidden" name="csrfmiddlewaretoken

46

E-

WooCommer

<meta name="generator"(.*)WooCommerce

ce

Commerce Magento jsVmage

DoubleClick | googletagservices

Google (window.adsbygoogleladsbygoogle.jslins.adsbygo AdSense ogle)

Twitter Ads | ads-twitter

Advertising Prebid PREBID_TIMEOUT

OpenX openx.net

Google . 4 [oe

Publisher Tag securepubads.g.doubleclick.netV*V*Vgpt

Criteo static.crIteo.nefVJsVIdVId.Js

Akamai a 9 -

mPulse [\\s\S]*?g0-mpulse.netVboomerang[\\s\\S]2k

Segment cdn.segment.comVanalytics.js

Analytics .scorecardresearch.comVbeacon.jsICOMSCORE.b

comScore

eacon

Crazy Egg | script.crazyegg.comVpagesVscriptsV

Popper <script(.* )popper?([a-zA-Z0-9.-]+).js

Swiper Slider | swiper-container

MiseeTianeo Gravatar gravatar.comVavatar

Clipboard.js | clipboard?(?:.min)?.js

Revslider revsliderVpublicVassetsVcss

Font fontawesome.com(.*).css

Awesome

Font scripts Google Font fonts.googleapis.com

API

Twemoji use.typekit.netV

Static site Handlebars | x-handlebars-template

47

generator | wp-Statistics | <l-- Analytics by WP-Statistics

OWL .

?([a-zA-Z0-9.-

Carousel owl.carousel?([a-zA-Z0-9.-]+).(Jslcss)

Facebook connect.facebook.net

Widgets usin

Google Plus | apis.google.comVjsV

Twitter platform.twitter.comVwidgets.js

Payment Google Pay | pay.google.comV([a-z/]+)Vpay.Js

Processors Apple Pay | id="apple-pay-shop-capabilities/

Page wpBakery | <meta name="generator"(.*)WPBakery

Builders

Elementor | elementorVassetsVjs Caching Super Cache | <!--[4>]+WP-Super-Cache

SEO Yoast SEO | This site is optimized with the Yoast

Bảng 3-1: Bộ rule các công nghệ phát hiện được qua phân tích source code

3.2.2. Bộ rule các công nghệ phát hiện được thông qua tên cookies

Bằng phương pháp truy xuất vào bảng dữ liệu lưu trữ cookies của trình duyệt, ta có

tìm được các thông tin như tên máy chu gửi cookie, tên của cookie, path (cookie sé

được cung cấp cho bất kỳ trang nào phù hợp với đường dẫn), thời gian cookie hết

hạn, thời gian cookie được tao, ... Nhận diện được các cookies đặc trưng ứng với từng công nghệ qua đó giúp xác định chính xác công nghệ được sử dụng.

ir ial} Elements Console Sources Network Performance Memory Application Security Lighthouse mo: x

= oe ˆ.ỉ Filter = xX O Onlyshow cookies with an issue

S wel

¥ ® Cookies Name Value Dom... | Path Expires /M... |S... H. Secu... | Sa... | Sam... | Priori...

7 MOODLEID1_ %25FC%25F8%250E... | Cour... 2021-08-02... 50} ¥| v Medi...

® hitps://courses.uit.edu.yn

GA1,3.2081922749.1... | .uite... 7 2021-06-04... 31 Medi...

Cache _ga GA1.3.1650964013.1... | .uite... | / 2023-06-03... | 30 Medi...

& Cache Storage

EE Application Cat Cache Storage

Background Services

ty Background Fetch Cookie Value © Show URL decoded

© Background Sync ~ vh5ppdasr1887pqc0kk06t4s64

Hình 3-5: Phát hiện công nghệ LMS Moodle qua cookie MoodleSession

48

Công nghệ Tên cookie đặc trưng

Google Analytics _ga

cPanel cpsession

JAVA JSESSIONID

Laravel laravel_session

Microsoft ASP.NET ASP.NET_SessionId

Moodle MoodleSession

Microsoft Advertising _uetsid

CodeIgniter ci_csrf_token OpenCart OCSESSID

Azure ARRAffinity Amazon ELB AWSELB

DokuWiki DokuWiki

PHP PHPSESSID

Yii YH_CSRE_TOKEN

Stripe __stripe_mid PrestaShop PrestaShop October CMS october_session

Akamai mPulse akaas_AB-Testing

Amazon ALB AWSALB

Matomo Analytics PIWIK_SESSID

Ruby on Rails _session_id

Zendesk _zendesk_cookie

Bang 3-2: Bộ rule các công nghệ phat hiện được thông qua tên cookies

3.2.3. Bộ rule công nghệ phát hiện được thông qua Response Headers

Các công nghệ Web servers và Content Delivery Network (CDN) thường có thé xác định bằng cách kiêm tra HTTP Header. Khi được gửi yêu cầu trang web sẽ phản hồi

về Header chứa nội dung thông tin cần thiết. Thu thập các thông tin có được từ giá

trị trả vê nay, ta có thê xác định được chính xác các công nghệ website sử dung.

Name X Headers Preview Response Initiator Timing

_| css GqCqCmGspWzZsDVTgkFoFb2eEt4x ^ Content-Type: text/css “ _| css_GHBw2nw-60pORQJapE6v9BkzhHv.. Date: Thu, ỉ3 Jun 2021 06:31:22 GMT

_| css_mnP19Lg1Hspu4r2dtc8E7BBSyVTM- ETag: “220b25-8a9-5c376cd17410d"

__j css_cJQuqRCyPeAC52dYhlCs1vUmN_U0. Expires: Thu, 17 Jun 2021 96:31:22 GMT

_| css_nGZ0EUi6HATidAf3pITrpLdyTGtTsmf Last-Modified: Sat, 29 May 2021 12:04:57 GMT

6/93 requests 0B/45.5kB transferred Server: nginx v

Console What's New x

] © | top v.@ Filter Default levels B No Issues Fe)

OpenResty OpenResty

50

(Microsoft | ITS | Win64 | Win32) Operating systems

Bang 3-3: Bộ rule công nghệ phat hiện được thông qua Response Headers

3.2.4. Nhận biết công nghệ thông qua mối quan hệ liên quan

Các công nghệ được sử dụng trên | trang web có mối liên quan va phụ thuộc với

nhau.

Ví dụ: Trong quá trình kiểm tra ta đã nhận biết một website có sử dụng các tech là

WooCommerce(E-commerce) hay wpBakery(Landing Page Builder) đây là các

plugin của Wordpress nên ta có thé suy ra CMS của website sẽ là Wordpress.

Từ CMS Wordpress ta có thé khang định ngôn ngữ lập trình được sử dụng sẽ là PHP và cơ sở dit liệu của website sẽ là MySQL. Tương tự ta có sơ đồ mối liên hệ phụ thuộc của một số hệ thống công nghệ.

51

Programming languages CMS

Hình 3-7: Sơ đồ mối liên hệ phụ thuộc của các công nghệ sử dụng PHP, MySQL

3.3. Xây dựng bộ dữ liệu những giải pháp che giấu thông tin Website

3.3.1. Dé xuất loại bỏ các thông tin được đưa ra trong thé meta

Thẻ < Meta Name = "Generator"> trong HTML được sử dụng dé cung cấp metadata

về tài liệu HTML. Metadata sẽ không được hiển thị trên trình duyệt, nó chỉ giúp các

hệ thống tìm kiếm phân tích dé lấy thông tin cơ bản nhằm tăng mức độ SEO của trang. Tuy nhiên các thẻ này không thật sự cần thiết, nó vô tình dé lộ thông tin và phiên bản của các công cụ phat cũng như ngôn ngữ lập trình được sử dụng. Dé

tránh việc này, có thê loại bỏ các thẻ :

< Meta Name = "Generator" content=”tech_ name version”> .

52

3.3.2. Dé xuât đôi tên mặc định của cookies

Các tệp cookies được server gửi về trình duyệt sẽ có cách đặt tên đặc trưng, tương ứng với công nghệ được trang web sử dung. Bằng cách can thiệp vào file config, lập trình viên có thể thay đổi tên mặc định của các tệp cookies được trả về tir server. Qua đó có thé che giấu di các thông tin về công nghệ (đặc biệt đối với các công

nghệ Web framework).

services.AddAntiforgery(options =>

Tự L

options.Cookie.Name = "YourCookieName";

1);

Hình 3-8: Thay đổi tên mặc định của cookie đối với Microsoft ASP.NET

3.3.3. Đề xuất giải pháp ngăn chặn server gửi các trường HTTP response

chứa thông tin

Khi trình duyệt tạo ra một HTTP request tới máy chủ web. Sau đó máy chủ web sẽ

trả về tài nguyên trong đó bao gồm cả các trường như “Server header” hay "X- Powered-By" chứa thông tin về ngôn ngữ (framework) web server đang sử dụng.

Dé tránh việc bị khai thác thông tin từ nguồn này ta có có thé loại bỏ hoặc thay thé thông tin trong các trường được server trả về. Thực hiện thay déi ở file web.config:

name=

Hình 3-9: Thay đổi HTTP Response dé che giấu thông tin

53

Đối với dịch vụ web server như Nginx hay Apache ta có thể vô hiệu quá server

tokens ở file configuration:

Syntax: server_tokens on | off | build | string;

Default: server_tokens on;

Context: http, server, location

Hinh 3-10: Web server Nginx

Các tham số on, off cho phép tùy chỉnh ẩn hoặc hiện trường response header

cũng như hiển thị Nginx version trên các trang lỗi. Tham số build và string cho

phép viết lại thông tin phiên bản, giá trị trường response header.

3.3.4. Đề xuất Rewrite URL

Các công cụ phat hiện công nghệ đôi khi sẽ dựa vào tên miền của website để xác

định các công nghệ xây dựng trang web. Ví dụ:

‘Sy @ sites.google.com/tdsb.on.ca/wtcs/home

Hình 3-11: Các website xây dựng bang CMS Google Site có Domain là https://sites.google.com/

€ Cc @ moet.gov.vn/Pages/home.aspx

Hình 3-12: Các website sử dung Frameworks Microsoft ASP.NET có top level domain là “.aspx”

Nhằm gây khó khăn cho phần mềm có thể phát hiện ra các công nghệ, ta có thể sử

dung URL Rewrite Engine. Rewrite Engine là một dịch vụ của Web Server được

dùng dé thay đổi URL sang một dạng khác với nhiều mục đích khác nhau như:

- Tăng cường khả năng bảo mật của website bằng việc hạn chế bị khai thác các link quan trọng, che giấu nền tảng được sử dụng.

- Làm URL trở nên thân thiện với người dùng và dễ dàng với các Search Engine.

Thực hiện đối với Server Apache:

- Kích hoạt mod_rewrite có sẵn trong Apache.

54

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Xây dựng hệ thống phân tích websites và đề xuất các giải pháp bảo mật thông tin (Trang 52 - 82)

Tải bản đầy đủ (PDF)

(108 trang)