BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
NGUYỄN SƠN NGA
TÌM HIỂU MỘT SỐ KỸ THUẬT TẤN CÔNG
WEBSITE VÀ GIẢI PHÁP PHÒNG CHỐNG
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
HƯNG YÊN - 2014
NG
UYỄN
SƠN
NGA
TIM
HIỂU
MỘT SỐ
KỸ
THUẬT
TẤN
CÔNG
WEBSIT
E
VÀ GIẢI
PHÁP
PHÒNG
CHỐNG
2014
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
NGUYỄN SƠN NGA
là khi phạm vi ứng dụng của Website ngày càng mở rộng thì khả năng xuất hiện lỗi
và bị tấn công ngày càng cao, các website trở thành đối tượng cho nhiều hacker với
nhiều mục đích khác nhau. Đôi khi cũng chỉ đơn giản là để thể hiện tài năng của
mình với người khác.
Cùng với sự phát triển của thế giới mạng, các dịch vụ thương mại điện tử ngày
càng phát triển, số lượng các cuộc giao dịch của người dùng trên internet ngày càng
tăng. Vì thế các thông tin nhạy cảm của người dùng như tài khoản ngân hàng, tài
khoản email… trở thành mục tiêu tấn công của hacker.
Ngoài ra những vụ xâm nhập bất hợp pháp nhắm vào các công ty, tổ chức lớn
như: yahoo, IBM, trường đại học, các cơ quan quân sự, ngân hàng, … ngày càng
tăng lên về số lượng và mức độ nguy hiểm.
Tuy đã có nhiều cố gắng từ các nhà lập trình web những cũng không thể đảm
bảo ngăn chặn toàn bộ vì công nghệ web đang phát triển nhanh chóng nên dẫn đến
nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong một vài khuôn khổ
mà năng động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như
của những người lập trình ứng dụng.
Vì vậy, tôi đã chọn đề tài “Tìm hiểu một số kỹ thuật tấn công website và giải
pháp phòng chống” với mục đích tìm hiểu các phương pháp tấn công website của
hacker hiện nay để từ đó đưa ra các biện pháp hạn chế và có thể đề xuất một số giải
pháp để bảo mật website được an toàn hơn.
6
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
1.2 Mục tiêu của đề tài
Nghiên cứu để biết được một số kỹ thuật tấn công website của hacker, cách
thức tấn công và giải pháp phòng chống của các kỹ thuật đó.
Đồng thời nghiên cứu các công cụ phòng chống tấn công website.
Mô phỏng được kỹ thuật tấn công website DoS và DDoS và trong mô phỏng
DDoS có cả mô phỏng về giải pháp phòng của tấn công này.
1.3 Giới hạn và phạm vi của đề tài
Tìm hiểu kỹ thuật tấn công DoS – DDOS và mô phỏng.
Có thông tin cho biết số lượng trang web bị tấn công lên tới 1.500. Hay như vụ
Diễn đàn hacker Việt Nam (www.hvaonline.net), ngày 12 và 13 cũng bị tấn công từ
chối dịch vụ (D-DOS) với cường độ rất lớn khiến mọi truy cập đến địa chỉ này đều
không thực hiện được.
Vấn đề đáng báo động ở đây là ngoài việc tấn công đơn thuần vào các diễn
đàn, trang thông tin điện tử có số lượng truy cập lớn, như rongbay.com, enbac.com,
kenh14… hacker còn tấn công cả những địa chỉ có tên miền gov.vn của các cơ quan
thuộc Chính phủ như website www.ntc.mofa.gov.vn của Bộ Ngoại giao Việt Nam,
Caugiay.hanoi.gov.vn - cổng thông tin điện tử quận Cầu Giấy, Hà Nội, và gần đây
nhất, ngày 20/6, nhóm hacker Hmei7 đã “hỏi thăm” website của Sở Thông tin –
Truyền thông Hà Nội ( ).
8
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
Do mức độ các website bị tấn công dồn dập và với số lượng lớn như trên,
nhiều chuyên gia công nghệ cho rằng, nguyên nhân là do hacker đã chiếm được một
máy chủ của một nhà cung cấp dịch vụ hosting để từ đó tấn công giao diện hàng
loạt website trên đó. Theo đánh giá của ông Triệu Trần Đức, Tổng giám đốc CMC
Info Sec: Hiện nay, các website của Việt Nam đều mắc những lỗi giống nhau, chỉ
bằng 3 cách đơn giản thì 300 trang web đã có thể bị hack, trong đó, phổ biến nhất là
search trên Google. Thực tế, máy chủ của Việt Nam cứ dựng lên là trở thành “sân
tập” cho hacker thế giới.
Những cuộc tấn công này đều là những hành động đơn lẻ, mang tính chất tự
phát của những hacker bán chuyên nghiệp. Nguyên nhân chủ yếu là do đơn vị quản
lý của các website này chưa thực sự chú trọng đến việc đầu tư cho vấn đề bảo mật,
vẫn còn nhiều lỗ hổng để các hacker dễ dàng khai thác.
Không có những nhận định quá bi quan như CMC, ông Huy cho biết: Thực tế
không quá nhiều vụ tấn công như một số hãng bảo mật đã đưa ra. Có vụ chỉ 1 cuộc
tấn công đã nắm được quyền kiểm soát máy chủ cài vài chục trang web khác nhau.
Nếu thống kê số vụ tấn công thì ít hơn nhiều so với số lượng trang web.
Theo đánh giá của đại diện VnCert, những cuộc tấn công này đều là những
Chẳng hạn ta sẽ có một LoginAction để xử lý việc user login, logout.
Bước 4: Action class có thể truy xuất, cập nhật database nếu cần thiết.
Bước 5: Khi Action class thực hiện việc xử lý business xong, nó sẽ gửi yêu
cầu forward/redirect, cùng với dữ liệu (nếu có) về controller.
Bước 6: Controller chuyển control đến trang JSP tương ứng ở tầng view. Nếu
tran JSP này có sử dụng dữ liệu, controller sẽ cung cấp cho nó (đây chính là dữ liệu
mà action đã tạo ra và đưa cho controller.
Bước 7: Sau khi trang JSP đã chuẩn bị xong, Controller tạo một HTTP
Response gửi về cho trình duyệt, để trình duyệt hiển thị ra màn hình.
2.3 Các khái niệm liên quan
2.3.1 Địa chỉ IP
Địa chỉ IP (IP là viết tắt của từ tiếng Anh: Internet Protocol - giao thức
Internet) là một địa chỉ đơn nhất mà những thiết bị điện tử hiện nay đang sử dụng để
nhận diện và liên lạc với nhau trên mạng máy tính bằng cách sử dụng giao thức
Internet.
Mỗi địa chỉ IP là duy nhất trong cùng một cấp mạng.
Một cách đơn giản hơn: IP là một địa chỉ của một máy tính khi tham gia vào
mạng nhằm giúp cho các máy tính có thể chuyển thông tin cho nhau một cách chính
xác, tránh thất lạc. Có thể coi địa chỉ IP trong mạng máy tính giống như địa chỉ nhà
của bạn để nhân viên bưu điện có thể đưa thư đúng cho bạn chứ không phải một
người nào khác.
2.3.2 Hacker
Hacker là người có thể viết hay chỉnh sửa phần mềm, phần cứng máy tính bao
gồm lập trình, quản trị và bảo mật. Những người này hiểu rõ hoạt động của hệ
11
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
thống máy tính, mạng máy tính và dùng kiến thức của bản thân để làm thay đổi,
chỉnh sửa nó với nhiều mục đích tốt xấu khác nhau.
Hacker mũ trắng: là những chuyên gia lập trình chuyên tìm các lỗi của phần
mềm với mục đích sửa chữa, xây dựng hệ thống an toàn hơn.
Những thông tin được lưu trữ trong cookies hoàn toàn phụ thuộc vào website
trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookies, ví
dụ thời điểm lần cuối bạn ghé thăm website, đánh dấu bạn đã login hay chưa, v.v
Cookies được tạo ra bởi website và gởi tới browser, do vậy 2 website khác
nhau (cho dù cùng host trên 1 server) sẽ có 2 cookies khác nhau gởi tới browser.
Ngoài ra, mỗi browser quản lý và lưu trữ cookies theo cách riêng của mình, cho nên
2 browser cùng truy cập vào 1 website sẽ nhận được 2 cookie khác nhau.
2.3.6 Http
HTTP là chữ viết tắt từ HyperText Transfer Protocol (giao thức truyền tải siêu
văn bản). Nó là giao thức cơ bản mà World Wide Web sử dụng. HTTP xác định cách
các thông điệp (các file văn bản, hình ảnh đồ hoạ, âm thanh, video, và các file
multimedia khác) được định dạng và truyền tải ra sao, và những hành động nào mà
các Web server (máy chủ Web) và các trình duyệt Web (browser) phải làm để đáp
ứng các lệnh rất đa dạng. Chẳng hạn, khi bạn gõ một địa chỉ Web URL vào trình
duyệt Web, một lệnh HTTP sẽ được gửi tới Web server để ra lệnh và hướng dẫn nó
tìm đúng trang Web được yêu cầu và kéo về mở trên trình duyệt Web. Nói nôm na
hơn, HTTP là giao thức truyền tải các file từ một Web server vào một trình duyệt
Web để người dùng có thể xem một trang Web đang hiện diện trên Internet.HTTP là
một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho
Internet).
Vi-rút máy tính là một chương trình phần mềm nhỏ lây lan từ một máy tính
sang máy tính khác và can thiệp vào hoạt động của máy tính. Vi-rút máy tính có thể
phá hỏng hoặc xóa dữ liệu trên máy tính, sử dụng một chương trình email để phát
tán vi-rút đó tới các máy tính khác hoặc thậm chí là xóa mọi thứ trên đĩa cứng.
13
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
2.3.7 Virus
Vi-rút máy tính thường được phát tán bằng các tệp đính kèm trong thư email
hoặc bằng tin nhắn tức thời. Do vậy, bạn đừng bao giờ mở tệp đính kèm email trừ
khi bạn biết ai gửi thư đó hoặc bạn đang đợi thư email đó. Vi-rút có thể ngụy trang
NbtScan, SuperScan…
2.4.2 Giai đoạn phân tích và hành động
- Gaining Access (Đột nhập hệ thống): Hacker sẽ tìm cách truy cập vào mạng
bằng những thông tin có được ở ba bước trên. Phương pháp được sử dụng ở đây có
thể là tấn công vào lỗi tràn bộ đệm, lấy và giải mã file password, hay brute force
(kiểm tra tất cả các trường hợp) password, đột nhập qua các cổng mở… Sử dụng
công cụ: Tcpdump, Remote Buffer Overflows, Brute-force password attacks…
- Privilege Escalation (Nâng quyền hệ thống): Trong trường hợp hacker xâm
nhập đựợc vào mạng với một tài khoản nào đó, thì họ sẽ tìm cách kiểm soát toàn bộ
hệ thống. Hacker sẽ tìm cách crack password của admin, hoặc sử dụng lỗ hổng để
leo thang đặc quyền. Kẻ xâm nhập có thể truy cập vào các files hay folder dữ liệu
mà tài khoản người sử dụng ban đầu không được cho phép truy cập. Khi hacker đạt
được mức độ quyền truy cập đủ cao, họ có thể cài đặt phần mềm như là Backdoors
và Trojan horses, cũng như cho phép truy cập sâu hơn và thăm dò. Mục đích chung
của hacker là chiếm được quyền truy cập ở mức độ quản trị. Khi đó xem như có
toàn quyền điều khiển hệ thống mạng. Có thể sử dụng Sniffer để bắt các gói tin, từ
đó phân tích tìm ra mật khẩu.
- Pilfering (Khai thác hệ thống): Thông tin lấy từ bước trên đủ để hacker định
vị server và điều khiển server. Sử dụng công cụ: Configuration files, Registry,
Telnet, Ftp…
2.4.3 Giai đoạn dừng và xóa dấu vết
- Creating Backdoors (Tạo cổng hậu): Để chuẩn bị cho lần xâm nhập tiếp theo
được dễ dàng hơn. Hacker để lại Backdoors, tức là một cơ chế cho phép hacker truy
nhập trở lại bằng con đường bí mật không phải tốn nhiều công sức khai phá, bằng
việc cài đặt Trojan hay tạo user mới. Ở đây là các loại Trojan, keylog, creat rogue
user accounts…
- Covering Tracks (Xoá dấu vết): Sau khi đã có những thông tin cần thiết,
hacker tìm cách xoá dấu vết, xoá các file LOG của hệ điều hành làm cho người
15
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
16
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
Khi cướp được session của người dùng, kẻ tấn công có thể vượt qua quá trình
chứng thực dùng, có thể ghi lại phiên làm việc và xem lại mọi thứ đã diễn ra. Đối
với cơ quan pháp lý, có thể dùng làm bằng chứng để truy tố, đối với kẻ tấn công, có
thể dùng thu thập thông tin như ID người dùng và mật khẩu. Điều này gây nhiều
nguy hại đến người dùng. [1]
b. Phân loại
- Ấn định phiên làm việc
Trong kiểu tấn công ấn định một phiên làm việc hacker ấn định sẵn session
ID cho nạn nhân trước khi họ đăng nhập vào hệ thống. Sau đó, hacker sẽ sử dụng
session ID này để bước vào phiên làm việc của nạn nhân đó.
Hình 2- : Quá trình tấn công người dung bằng kỹ thuật ấn định session
Bước 1: Thiết lập session ID.
Hệ thống quản lý session theo 2 hướng:
+ Hướng tự do: chấp nhận bất kỳ một session ID, nếu chưa tồn tại session thì
tạo mới một session ID.
+ Hướng giới hạn: chấp nhận session ID nào đã đăng ký trước đó. Ở hướng
giới hạn, hacker phải đăng ký một ID với ứng dụng.
Phụ thuộc vào quy trình quản lý phiên làm việc mà hacker lưu trữ thời gian
sống của phiên làm việc cho đến khi nạn nhân đăng nhập hệ thống. Thông thường
một phiên làm việc không tồn tại vô hạn định. Hệ thống sẽ tự động hủy bỏ phiên
làm việc nếu nó không thực hiện một thao tác nào (thời gian nhàn rỗi) hoặc hết hạn
định.
17
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
Do đó, bước 1a là kẻ tấn công sẽ bảo trì phiên làm việc bằng cách gửi yêu cầu
đến server.
Bước 2: Gửi session ID đến trình duyệt nạn nhân
Hacker gửi session ID vừa tạo đến người dung và việc trao đổi ID session tùy
c. Cách phòng chống
Việc phòng chống kiểu tấn công chiếm hữu phiên làm việc không thuộc trách
nhiệm của trình chủ web server, vì trình chủ chỉ cung cấp API quản lý phiên làm
việc cho ứng dụng. Vì thế, chỉ ứng dụng mới cần có những biện pháp phòng chống
lại kiểu tấn công này.
Chống việc đăng nhập với một session ID có sẵn, ứng dụng phải hủy bỏ
session ID được cung cấp bởi trình duyệt của người dùng khi đăng nhập và luôn tạo
một session ID mới khi người dùng đăng nhập thành công sẽ khiến cho những
hacker không phải là người dùng hợp lệ của hệ thống.
Giới hạn phạm vi ứng dụng của session ID như kết hợp session ID với đại chỉ
của trình duyệt, kết hợp session ID với chứng thực được mã hóa SSL của người
dùng, xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, thiết lập
thời gian hết hiệu lực cho session để tránh trường hợp hacker có thể duy trì session
và sử dụng nó lâu dài.
Người sử dụng phải dùng chế độ thoát khỏi hệ thống để xóa bỏ session hiện
thời và có thể những session ID còn lưu lại trên hệ thống khi họ quên thoát ra ngoài
những lần trước.
Không được chủ quan với thuật toán tạo session của ứng dụng là bảo mật,
không ai có thể đoán được. Với session ID quá ngắn, hacker có thể dùng kỹ thuật để
vét cạn. Nhưng không vì thế mà cho rằng ứng dụng sẽ bảo mật với session ID dài
và phức tạp vì kích thước session ID sẽ là một vẫn đề nếu thuật toán không tốt.
2.5.2 Cross-Site Scripting (XSS)
a. Khái niệm
Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để
tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn công
bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ) những thẻ HTML
hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng
khác. Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng
19
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
o Bước 1: Mở website cần kiểm tra
o Bước 2: Xác định các chỗ (phần) cần kiểm tra XSS. Một Site bất kỳ bao giờ cũng
có các phần: Search, erro message, web form. Chủ yếu lỗi XSS nằm ở phần này, nói
chung XSS có thể xảy ra ở chỗ nào mà người dùng có thể nhập dữ liệu vào và sau
đó nhận được một cái gì đó. Ví dụ chúng ta nhập vào chuỗi ‘XSS’.
o Bước 3: Xác minh khả năng site có bị lỗi XSS hay không bằng cách xem các thông
tin trả về.
o Bước 4: Khi đã xác định chỗ có khả năng bị dính lỗi XSS thì chúng ta sẽ chèn
những đoạn code của chúng ta vaò để thử tiếp.
o Bước 5: Lên kế hoạch kịch bản tấn công.
d. Quá trình thực hiện
- Bước 1: Hacker biết được người dùng đang chạy một ứng dụng web có lỗ hổng
XSS.
- Bước 2: Người dung nhận được một liên kết thông qua email hay trên chính trang
web (như banner, link,…). Thông thường, hacker khiến người dùng chú ý bằng
những câu kích thích sự tò mò của người dùng như “Kiểm tra tài khoản của bạn”,
“Quà tặng hấp dẫn”,…
- Bước 3: Chuyển đổi nội dung thông tin (cookies, tên, mật khẩu, …) về may chủ đã
chuẩn bị trước của hacker.
- Bước 4: Hacker đã tạo một đoạn mã hay chương trình hoặc một trang web để ghi
nhận những thông tin đánh cắp vào một tập tin.
- Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập vào tài
khoản của người dùng.
e. Cách phòng chống
Như đã đề cập ở trên, một tấn công XSS chỉ thực hiện được khi gửi một trang
web cho trình duyệt web của nạn nhân có kèm theo mã script độc của kẻ tấn công.
Vì vậy những người phát triển web có thể bảo vệ website của mình khỏi bị lợi dụng
thông qua những tấn công XSS này, đảm bảo những trang phát sinh động không
chứa các tag của script bằng cách lọc và xác nhận hợp lý các dữ liệu đầu vào từ phía
chuyển sang C khai thác được C up web shell hoặc shell code lên nắm
quyền điều khiển server (hoặc quyền nào đó giúp có thể đọc các thong tin cần thiết
22
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
để tấn công A (user/password, database, username/password e-mail…) attack A.
[2]
b. Các bước thực hiện tấn công cục bộ
Hình 2- : Các bước thực hiện tấn công cục bộ
- Xác định website cần tấn công.
- Xác định các website đặt cùng server với mục tiêu.
- Tìm cách khai thác một trong những website đặt chung server với mục tiêu.
- Khai thác được một trong các website đó. Tìm cách upload webshell hoặc thực thi
đoạn mã đã đưa lên.
- Khi đăng đoạn mã thành công thì kiểm tra quyền của người dùng hiện tại.
- Khi đã có đủ quyền để tấn công thì tiến hành đọc file config, tìm user/password,
deface mục tiêu có thể.
- Kết thúc.
c. Phương pháp tấn công cục bộ
• Chuẩn bị
Trước tiền phải có một con backdoor trên máy chủ. Backdoor thì có rất nhiều
loại khác nhau nhưng phổ biến nhất là phpRemoteView (thường gọi là remview),
R57Shell, CGITelnet, C99, … Tiến hành tải lên một trong những công cụ này lên
host (thường là các con shell như C57, C99, …).
Để có host chúng ta có nhiều cách:
23
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
- Thuê một cái host (cách này hacker ít sử dụng).
- Hacker một website bị lỗi mà có cùng máy chủ với mục tiêu, sau đó upload shell
lên.
Các công cụ mà hacker thường sử dụng để xác định các site cùng máy chủ:
Tìm hiểu một số kỹ thuật tấn công website và giải pháp phòng chống
- Từ phía quản trị website
Chmod chặt chẽ cho các thư mục và file. Với thư mục nên chmod 701, với file
nên chmod 600.
Sử dụng tính năng PHP safe_mode
2.6 Tấn công từ chối dịch vụ (DOS) - Tấn công từ chối dịch vụ phân tán
(DDOS)
2.6.1 Định nghĩa tấn công từ chối dịch vụ DOS
Tấn công DoS là kiểu tấn công vô cùng nguy hiểm, để hiểu được nó ta cần
phải nắm rõ định nghĩa của tấn công DoS và các dạng tấn công DoS.
- Tấn công DoS là một kiểu tấn công mà một người làm cho một hệ thống
không thể sử dụng, hoặc làm cho hệ thống đó chậm đi một cách đáng kể với người
dùng bình thường, bằng cách làm quá tải tài nguyên của hệ thống.
- Nếu kẻ tấn công không có khả năng thâm nhập được vào hệ thống, thì chúng
cố gắng tìm cách làm cho hệ thống đó sụp đổ và không có khả năng phục vụ người
dùng bình thường đó là tấn công Denial of Service (DoS).
Mặc dù tấn công DoS không có khả năng truy cập vào dữ liệu thực của hệ
thống nhưng nó có thể làm gián đoạn các dịch vụ mà hệ thống đó cung cấp.
Mặc dù một số dạng tấn công DoS có thể được khuếch đại bởi nhiều trung
gian, nhưng xuất phát của DoS vẫn là bắt nguồn từ một máy tính đơn lẻ. Tuy nhiên
DoS đã được phát triển xa hơn ngoài cuộc tấn công một tầng (lũ SYN) và hai tầng
(Smurf). Tấn công DDoS ra đời là bước tiếp theo của DoS, khắc phục được nhiều
thiếu xót mà DoS chưa đáp ứng được. Đây là phương pháp tấn công hiện đại có sự
kết hợp của nhiều tầng tính toán phân tán. Khác biệt đáng chú ý trong phương pháp
tấn công này là nó bao gồm hai giai đoạn khác nhau. Giai đoạn đầu tiên, thủ phạm
bố trí các máy tính phân tán trên Internet và cài đặt các phần mềm chuyên dụng trên
các máy chủ để hỗ trợ tấn công. Giai đoạn thứ hai, máy tính bị xâm nhập (được gọi
là Zombie) sẽ cung cấp thông tin qua kẻ trung gian (được gọi là Master) để bắt đầu
cuộc tấn công.
Hàng trăm, có thể hàng ngàn, các zombie có thể được chọn đồng thời tham gia