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