Tìm hiểu về tấn cơng mạng. Đề xuất phương án và mô
phỏng kỹ thuật phát hiện và ngăn chặn tấn công mạng.
CHƯƠNG I: TÌM HIỂU VỀ TẤN CƠNG MẠNG
I. Tổng quan về tấn cơng mạng
1.
Tấn cơng mạng là gì?
Khái niệm tấn công mạng (hoặc “tấn công không gian mạng“) trong tiếng
Anh là Cyber attack (hoặc Cyberattack), được ghép bởi 2 từ: Cyber (thuộc không gian
mạng internet) và attack (sự tấn công, phá hoại).
Tấn cơng mạng là tất cả các hình thức xâm nhập trái phép vào một hệ thống
máy tính, website, cơ sở dữ liệu, hạ tầng mạng, thiết bị của một cá nhân hoặc tổ
chức thông qua mạng internet với những mục đích bất hợp pháp.
Mục tiêu của một cuộc tấn cơng mạng rất đa dạng, có thể là vi phạm dữ liệu
(đánh cắp, thay đổi, mã hóa, phá hủy), cũng có thể nhắm tới sự tồn vẹn của hệ thống
(gây gián đoạn, cản trở dịch vụ), hoặc lợi dụng tài nguyên của nạn nhân (hiển thị
quảng cáo, mã độc đào tiền ảo).
Tấn công mạng khác với pentest (kiểm thử xâm nhập). Mặc dù cả 2 đều chỉ
việc xâm nhập vào một hệ thống, tuy nhiên tấn công mạng là xâm nhập trái phép gây
hại cho nạn nhân, còn pentest là xâm nhập với mục đích tìm ra điểm yếu bảo mật
trong hệ thống để khắc phục.
2.
Đối tượng bị tấn cơng
Đối tượng bị tấn cơng có thể là cá nhân, doanh nghiệp, tổ chức hoặc nhà nước.
Hacker sẽ tiếp cận thơng qua mạng nội bộ (gồm máy tính, thiết bị, con người). Trong
yếu tố con người, hacker có thể tiếp cận thông qua thiết bị mobile, mạng xã hội, ứng
dụng phần mềm.
3.
Mục đích tấn cơng mạng
Bên cạnh những mục đích phổ biến như trục lợi phi pháp, tống tiền doanh
nghiệp, hiện thị quảng cáo kiếm tiền, thì cịn tồn tại một số mục đích khác phức tạp và
nguy hiểm hơn: cạnh tranh không lành mạnh giữa các doanh nghiệp, tấn công an ninh
hoặc kinh tế của một quốc gia, tấn cơng đánh sập một tổ chức tơn giáo, v.v.
Ngồi ra, một số hacker tấn công mạng chỉ để mua vui, thử sức, hoặc tò mò
muốn khám phá các vấn đề về an ninh mạng.
chức từ đó chỉ ra các giải pháp phòng chống, ngăn chặn sự đe dọa từ tin tặc.
Tích cực: Tìm ra những lỗ hổng bảo mật, những nguy cơ tấn công mạng cho cá
nhân và tổ chức từ đó chỉ ra các giải pháp phịng chống, ngăn chặn sự đe dọa từ
tin tặc.
Tiêu cực: Phá hoại, lừa đảo tống tiền, mua vui, đe dọa nạn nhân.
Ví dụ 1: Trong cùng một hệ thống mạng LAN (mạng nội bộ), tin tặc có thể xâm
nhập vào hệ thống của cơng ty. Hacker đó sẽ đóng vai như một người dùng thật trong
hệ thống, sau đó tiến hành xâm nhập vào tệp chứa tài liệu bí mật của cơng ty về tài
chính. Tin tặc có thể rút sạch số tiền đó, hoặc thay đối các con số, ẩn file…
Ví dụ 2: Một học sinh lớp 9 tấn cơng vào các website sân bay Việt Nam với mục
đích mua vui.
Ví dụ 3: Vụ mã độc WannaCry tấn cơng hàng loạt các doanh nghiệp Việt Nam và
địi tiền chuộc.
Ví dụ 4: Kẻ tấn cơng có thể đột nhập vào máy tính của bạn thơng qua phần mềm
gián điệp để nghe lén tin nhắn, hoặc xóa file dữ liệu nào đó.
II. Các kiểu tấn công mạng phổ biến
1.
Malware (Phần mềm độc hại)
Malware là gì?
Malware (hay phần mềm độc hại) là thuật ngữ mơ tả các chương trình hoặc mã độc
có khả năng cản trở hoạt động bình thường của hệ thống bằng cách xâm nhập, kiểm
sốt, làm hỏng hoặc vơ hiệu hóa hệ thống mạng, máy tính, máy tính bảng và thiết bị
di động…
Mặc dù không gây ra các hư hỏng về phần cứng nhưng Malware có thể đánh cắp,
mã hóa hoặc xóa dữ liệu, thay đổi hoặc chiếm quyền điều khiển các chức năng và
theo dõi hoạt động của máy tính mà khơng cần sự cho phép của bạn.
Dấu hiệu nhận biết Malware
Khi thiết bị nhiễm Malware, bạn có thể nhận thấy các dấu hiệu sau:
- Máy tính chạy chậm, tốc độ xử lý của hệ điều hành giảm cho dù bạn đang
điều hướng Internet hay chỉ sử dụng các ứng dụng cục bộ.
- Bạn bị làm phiền bởi quảng cáo pop-up, mà cụ thể hơn là Adware.
- Hệ thống liên tục gặp sự cố, bị đóng băng hoặc hiển thị BSOD – màn hình
xanh (đối với Windows).
- Dung lượng ổ cứng giảm bất thường.
- Hoạt động Internet của hệ thống tăng cao không rõ nguyên nhân.
- Tài nguyên hệ thống tiêu hao bất thường, quạt máy tính hoạt động hết cơng
suất.
- Trang chủ của trình duyệt mặc định thay đổi mà khơng có sự cho phép của
bạn. Các liên kết bạn nhấp vào sẽ chuyển hướng bạn đến các trang không
mong muốn.
- Các thanh cơng cụ, tiện ích mở rộng hoặc plugin mới được thêm vào trình
duyệt.
- Các chương trình anti-virus ngừng hoạt động và không cập nhật được.
- Bạn nhận được thơng báo địi tiền chuộc từ Malware, nếu khơng dữ liệu của
bạn sẽ bị xóa.
Tuy nhiên, trong vài trường hợp, thiết bị bị nhiễm Malware vẫn hoạt động bình
thường, khơng có dấu hiệu cụ thể nào.
Cách Malware xâm nhập vào thiết bị
Trong quá trình sử dụng Internet, những thao tác sau có thể khiến bạn bị nhiễm
Malware:
- Truy cập các trang web độc hại, tải trò chơi, file nhạc nhiễm Malware, cài đặt
thanh công cụ/phần mềm từ nhà cung cấp lạ, mở tệp đính kèm email độc hại
(malspam) hoặc các dữ liệu tải xuống không được quét bởi phần mềm bảo mật.
- Tải nhầm các ứng dụng độc hại ngụy trang dưới dạng các ứng dụng hợp pháp.
Bạn cần chú ý các thông báo cảnh báo khi cài đặt ứng dụng, đặc biệt khi ứng
dụng yêu cầu quyền truy cập email hoặc thông tin cá nhân.
- Tải ứng dụng ở các nguồn không đáng tin cậy. Bạn hãy luôn tải ứng dụng trực
tiếp từ nhà cung cấp chính thức và cảnh giác trước các phần mềm tăng tốc
Internet, trình quản lý tải xuống, trình dọn ổ đĩa hoặc dịch vụ tìm kiếm thay
thế…
- Vơ tình cài đặt các phần mềm bổ sung đi kèm với ứng dụng (potentially
unwanted program) chứa Malware. Chương trình này được giới thiệu là cần
thiết trong quá trình cài đặt nhưng thực tế thì lại khơng.
Ngồi ra, việc khơng sử dụng các chương trình bảo mật cũng là lý do khiến
Malware xâm nhập dễ dàng hơn.
Các loại Malware phổ biến
Adware, Spyware, Virus, Trojan, Worms, Ransomware, Rootkit,
Keylogger, Malicious cryptomining, Exploits là một trong các loại Malware phổ
biến nhất.
- Adware thường hiển thị quảng cáo pop-up lên màn hình khi bạn duyệt web.
Adware thường ngụy trang dưới dạng phần mềm hợp pháp hoặc đi kèm với một
chương trình khác để lừa bạn cài đặt nó.
- Spyware là phần mềm gián điệp bí mật quan sát trái phép hoạt động của người
dùng máy tính và gửi báo cáo về cho hacker.
- Virus thường ẩn trong một chương trình khác và khi được kích hoạt, nó sẽ thay
đổi các chương trình trong hệ thống và lây lan bằng mã code.
- Tương tự như Virus, Worms có khả năng tự sao chép để lây lan sang các máy
tính khác qua mạng Internet, thường gây hại bằng cách phá hủy dữ liệu.
- Trojan thường giả dạng các ứng dụng hữu ích để đánh lừa bạn, giúp hacker
chiếm quyền truy cập trái phép vào máy tính để đánh cắp thông tin hoặc cài đặt
thêm các Malware khác.
- Được mua rất dễ dàng từ các hacker, Ransomware ngăn bạn truy cập vào thiết
bị và mã hóa dữ liệu, sau đó buộc bạn phải trả tiền chuộc để lấy lại chúng.
Ransomware được xem là vũ khí của tội phạm mạng vì nó thường dùng các
phương thức thanh tốn nhanh chóng bằng tiền điện tử.
- Rootkit được thiết kế để ẩn khỏi người dùng, hệ điều hành cũng như các phần
mềm khác, giúp hacker chiếm quyền quản trị hệ thống.
- Keylogger ghi lại thao tác của người dùng trên bàn phím và gửi về cho hacker
các dữ liệu nhạy cảm như tên người dùng, mật khẩu, hoặc thông tin thẻ tín
dụng.
- Malicious cryptomining là một dạng mã độc phổ biến thường được cài đặt bởi
một Trojan, cho phép hacker sử dụng tài nguyên máy tính của bạn để đào tiền
điện tử như Bitcoin hoặc Monero.
- Exploits lợi dụng các lỗi và lỗ hổng để hacker kiểm soát hệ thống. Nó thường
được liên kết với Adware hiển thị trên một trang web hợp pháp và lừa bạn cài
đặt vào máy tính của mình.
Mục tiêu của Malware
Adware, Spyware, Keyloggers và Malvertising nhắm tới các thiết bị được kết
nối với tài khoản ngân hàng, tài khoản mua bán cũng như các dữ liệu quan trọng khác.
Cyptominers và ransomware thường có chung đối tượng mục tiêu là cá nhân,
doanh nghiệp, cửa hàng bán lẻ, bệnh viện và thậm chí các hệ thống chính quyền.
Mobile spyware khơng chỉ nhắm đến người tiêu dùng thơng thường mà cịn tấn
cơng cả doanh nghiệp, tổ chức. Thông qua các lỗ hổng của smart phone/tablet của
nhân viên, mobile spyware có thể lây lan cho tồn hệ thống.
Ngồi ra, các ứng dụng độc hại trên Apple’s App Store hay Google Play cũng có
thể đánh cắp thơng tin, spam quảng cáo, tống tiền hoặc buộc người dùng thực hiện các
hoạt động khơng mong muốn khác.
Cách phịng tránh
- Cảnh giác với các website có tên miền kết thúc bằng một tập hợp các chữ
cái riêng lẻ (không phải đuôi com, org, edu, biz,…).
- Chú ý đến các dấu hiệu nhiễm Malware của thiết bị ngay từ đầu để để ngăn
chặn sự xâm nhập.
- Tránh nhấp vào quảng cáo pop-up khi lướt web.
- Khơng mở các file lạ đính kèm email.
- Không tải phần mềm từ các trang web không đáng tin cậy.
- Thường xuyên cập nhật hệ điều hành, trình duyệt và plugin.
- Chỉ tải xuống các ứng dụng có thứ hạng và số lượt tải xuống cao từ Google
Play Store, Apple’s App Store.
- Không tải xuống ứng dụng từ các nguồn của bên thứ ba. Nếu dùng Android,
bạn có thể vào Cài đặt -> Bảo mật -> Tắt nguồn không xác định để tránh cài
đặt phải ứng dụng từ các bên khác.
- Không nhấp vào các liên kết lạ, liên kết không xác định trong email, văn bản
và tin nhắn…
- Các doanh nghiệp nên triển khai giải pháp bảo mật di động để bảo vệ an
toàn cho hệ thống mạng nội bộ.
- Sử dụng các chương trình chống Malware mạnh mẽ với nhiều lớp bảo vệ, có
thể quét và phát hiện Adware, Spyware, ngăn chặn Ransomware cũng như
cung cấp cách khắc phục lỗi do Malware gây ra cho hệ thống.
2.
Phishing (Lừa đảo)
Phishing là gì ?
Phishing là hành vi lừa đảo gây ra bởi tội phạm mạng, nhằm mục đích thu thập,
chia sẻ các thơng tin nhạy cảm của người dùng như mật khẩu và thơng tin thẻ tín
dụng. Tương tự như cách câu cá, phishing hoạt động bằng cách “thả mồi” lừa nạn
nhân và sau đó thu thập thơng tin. Hình thức phổ biến nhất thường gặp là:
Bạn nhận được một email hoặc tin nhắn giả mạo cá nhân/tổ chức đáng tin
cậy (đồng nghiệp, ngân hàng hoặc văn phịng chính phủ).
Khi mở email hoặc tin nhắn, bạn tìm thấy một thông điệp nghiêm trọng yêu
cầu bạn truy cập vào một website trong mail ngay lập tức, nếu không sẽ gặp
phải hậu quả.
Nếu nhấp vào liên kết, bạn sẽ được chuyển đến một website giả mạo một
website hợp pháp và được yêu cầu đăng nhập bằng tên người dùng và mật
khẩu. Nếu làm theo, hacker sẽ có được thơng tin đăng nhập của bạn và sử
dụng nó để đánh cắp dữ liệu cá nhân, tài khoản ngân hàng và bán các thông
tin này trên thị trường chợ đen.
Phishing là loại tấn công mạng đơn giản nhất, nhưng đồng thời cũng nguy hiểm
và hiệu quả nhất. Khác với những hình thức lừa đảo khác, hacker Phishing không cố
gắng khai thác lỗ hổng bảo mật trong hệ thống, thay vào đó dùng “social engineering”
để lừa người dùng tự trao các thông tin cá nhân cho mình!
Các kiểu tấn cơng phishing
-
Spear phishing : Spear phishing tấn công cá nhân hoặc tổ chức cụ thể, với
nội dung được thiết kế riêng cho nạn nhân. Điều này đòi hỏi hacker phải thu
thập và đối chiếu các thông tin của nạn nhân (tên, chức danh, email, tên
đồng nghiệp, mối quan hệ…) để tạo ra một email lừa đảo đáng tin cậy!
Spear phishing là một mối đe dọa nghiêm trọng đối với doanh nghiệp,
chính phủ và gây thiệt hại rất lớn. Một báo cáo năm 2016 nói rằng Spear
phishing chịu trách nhiệm cho 38% các cuộc tấn công mạng vào doanh
nghiệp trong năm 2015, mỗi cuộc tấn cơng gây thiệt hại trung bình $1,8 tỷ
cho các doanh nghiệp Mỹ.
-
Clone phishing : Với Clone phishing, hacker sao chép các email hợp pháp,
nhưng thay thế đường dẫn hoặc tệp đính kèm trong email. Khi người dùng
nhấp vào liên kết hoặc mở tệp đính kèm, tài khoản của họ sẽ bị hacker kiểm
sốt. Sau đó, hacker sẽ giả mạo danh tính của nạn nhân để thực hiện
phishing trong chính tổ chức của nạn nhân.
-
419/Nigeria scam : Email phishing đến từ hoàng tử Nigeria là một trong
những vụ lừa đảo lâu đời nhất trên Internet. Nigeria scam là một email đến
từ một người tự xưng là quan chức chính phủ hoặc thành viên của gia đình
hồng gia, cần giúp đỡ để chuyển hàng triệu đô ra khỏi ngân hàng Nigeria.
Email dạng này thường được đánh dấu là “khẩn cấp” hoặc “riêng tư”, và yêu
cầu người nhận cung cấp số tài khoản ngân hàng để chuyển tiền tiền. Con số
“419” đề cập đến Bộ luật hình sự của Nigeria liên quan đến gian lận, cáo
buộc và hình phạt cho những người phạm tội.
-
Phone phishinh: Hình thức lừa đảo qua điện thoại này còn gọi là”voice
phishing” hoặc “vishing.” Các phisher sẽ tự xưng là đại diện của ngân hàng,
sở cảnh sát, hoặc thậm chí IRS tại địa phương bạn sinh sống. Họ sẽ đe dọa
và yêu cầu bạn cung cấp thông tin tài khoản hoặc nộp phạt qua chuyển
khoản hoặc bằng thẻ trả trước để tránh bị theo dõi. Lừa đảo qua tin nhắn
SMS (smishing) cũng được thực hiện tương tự như trên nhưng thông qua tin
nhắn.
3.
Man-In-The-Middle Attack (Tấn cơng trung gian)
Tấn cơng MitM, cịn được gọi là tấn công nghe lén, xảy ra khi kẻ tấn công xâm
nhập vào và có thể sửa đổi các cuộc trị chuyện/đối thoại giữa những ứng dụng đang
giao tiếp với nhau. Loại hình này xảy ra khi:
4.
Người dùng truy cập vào các mạng Wifi cơng cộng, khơng an tồn.
Thực hiện thơng qua một phần mềm độc hại khác.
Denial-of-Service Attack (Tấn công từ chối dịch vụ)
Mơ hình chung
Mục tiêu của DoS
-
Cố gắng chiếm băng thông mạng và làm hệ thống mạng bị ngập (Flood), khi đó
hệ thống mạng sẽ khơng có khả năng đáp ứng những dịch vụ khác cho người
dùng bình thường.
-
Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập vào
dịch vụ.
-
Cố găng ngặn chặn những người dùng cụ thể vào một dịch vụ nào đó.
-
Cố gắng ngăn chặn các dịch vụ khơng cho người khác có khả năng truy cập vào
Hậu quả
- Hệ thống , máy chủ bị Dos sẽ khiến người dùng không thể truy cập được.
- Doanh nghiệp sở hữu máy chủ, hệ thống sẽ bị mất doanh thu , chưa kể đến
khoản chi phí cần phải bỏ ra để khắc phục sự cố.
- Khi mạng sập, mọi công việc yêu cầu mạng không thể thực hiện, làm gián đoạn
công việc, ảnh hưởng đến hiệu suất công việc.
- Nếu người dùng truy cập website khi nó sập sẽ ảnh hưởng đến danh tiếng của
cơng ty, nếu website sập trong thời gian dài thì có thể người dùng sẽ bỏ đi, lựa
chọn dịch vụ khác thay thế.
- Đối với những tấn công DoS kỹ thuật cao có thể dẫn đến việc lấy trộm tiền bạc,
dữ liệu khách hàng của cơng ty.
Các hình thức tấn cơng
- Smurf: là một loại tấn cơng DoS điển hình. Máy của attacker sẽ gửi rất nhiều
lệnh ping đến một số lượng lớn máy tính trong thời gian ngắn, trong đó địa hỉ
IP nguồn của gói ICMP echo sẽ được thay thế bởi địa chỉ IP của nạn nhân.
Kết quả đích tấn cơng sẽ phải chịu nhận một đợt Reply gói ICMP cực lớn
và làm cho mạng bị rớt hoặc bị cậm lại, khơng có khả năng đáp ứng các dịch vụ
khác
- Teardrop(IP Fragmentation Attack)
Trong mạng gói dữ liệu được chi thành nhiều gói tin nhỏ, mỗi gói tin
nhỏ, mỗi gói tin có một giá trị offset riêng và có thể truyền đi theo nhiều con
đường khác nhau tới địch. Tại đích, nhờ vào giá trị offset của từng gói mà dữ
liệu lại được kết hợp lại như ban đầu.
Lợi dụng điều này, hacker có thể tạo ra nhiều gói tin có giá trị offset
trùng lặp nhau gửi đến mục tiêu tấn cơng.
Kết quả máy tính đích khơng thể sắp xếp được những gói tin này và dẫn
tới bị treo máy và bị “vắt kiệt” khả năng xử lí.
- SYN Attack
Kẻ tấn công gửi các yêu ầu (request ảo) TCP SYN tới máy chủ bị tấn
cơng. Để xử lí lượng gói tin SYN này hệ thống cần tốn một luongj bộ nhớ cho
kết nối.
Khi có rất nhiều gói SYN ảo tới máy chủ và chiếm hết các yêu cầu xử lí
của máy chủ.
Một người dùng bình thường kết nối tơi máy chủ ban đầu thực hiện
Request TCP SYN và lúc này máy chủ cịn khả năng đáp lại kết nối khơng
được thực hiện.
Bước 1: Client sẽ gửi các gói tin (packet chứa SYN = 1) đến máy
chủ để yêu cầu kết nối
Bước 2: Khi nhận được gói tin này, server sẽ gửi lại gói tin
SYN/ACK để thơng báo cho client biết là nó đã nhận được yêu
cầu kết nối và chuẩn bị tài nguyên cho yêu cầu này.Server sẽ giành
một phần tài nguyên hệ thống như cache để nhận và truyền số liệu.
Ngồi ra các thơng tin khác của client như địa chỉ IP cà port cũng
được ghi nhận
Bước 3: cuối cùng, client hoàn tất việc bắt tay ba lần bằng cách hồi
âm lại gói tin chứa ACK cho server và tiến hành kết nối.
Do TCP là thủ tục tin cậy trong việc giao nhận (eng-to-end) nên trong lần
bắt tay thứ hai, server gửi các gói tin SYN/ACK trả lời lại client mà
không nhận lại được hồi âm của client để thực hiên kết nối thì:
Nó vẫn bảo lưu lại nguồn tài nguyên chuẩn bị kết nối đó.
Lặp lại việc gửi gói tin SYN/ACK cho client đến khi nào nhận
được hồi đáp của máy client.
- Zero-day DoS Attacks
Zero-day DoS Attacks là tên được đặt cho các phương pháp tấn công
DoS mới, khai thác lỗ hổng chưa được vá
Có thể làm gián đoạn dịch vụ mà khơng cần sử dụng nhiều bót
- UDP Flood: Là giao thức mạng không sesion. Một UDP Flood nhắm đến các
cổng ngẫu nhiên trên máy tính hoặc mạng với các gói tin UDP. Máy chủ kiểm
tra ứng dụng tại các cổng đó nhưng khơng tìm thấy ứng dụng nào.
- HTTP Flood: gần giống với GET hoặc POST hợp pháp được khai thác bởi một
hacker. Nó sử dụng ít băng thơng hơn các loại tấn cơng khác nhưng nó có thể
buộc máy chủ sử dụng các nguồn lực tối đa.
- Ping of Death: điều khiển các giao IP bằng cách gửi những đoạn mã độc đến
một hệ thống. Đây là loại DoS phổ biến cách đây hai thập kỉ nhung khơng cịn
hiệu quả tại thời điểm hiện tại.
- Slowloris: cho phép kẻ tấn công sử dụng nguồn lực tối thiểu trong một cuộc tấn
công và các mực tiêu trên máy chủ web. Khi kết nối với mục tiêu mong muốn,
Slowloris giữ liên kết đó càng lâu càng tốt với HTTP Flood. Kiểu tấn công này
được sử dụng trong một số DoSing kiểu hacktivist(tấn cơng vì mục tiêu chính
trị) cao cấp, bao gồm cuộc bầu cử tổng thống Iran năm 2009. Việc giảm thiểu
ảnh hưởng với loại hình tấn cơng này là rất khó khăn.
Cách để phịng chống máy tính cá nhân trở thành Botnet
- Cài đặt và duy trì phần mềm chống virus
- Cài đặ tường lwuar và cấu hình nó để giươi hạn lượng đến và đi từ máy tính
- Làm theo các hướng dẫn thực hành an toàn về phân phối địa chỉ email
- DÙng bộ lọc email để giúp quản lí lưu lượng không mong muốn
Nhận biết các cuộc tấn công DoS
- Thực thi mạng chậm một cách bất thường (mở file hay truy cập website)
- Không vào được website
- Không truy cập đến bất kì website nào
- Số lượng thư rác tăng lên một cách đột biến trong tài khoản
5.
SQL Injection Attack
CHƯƠNG 2: THỰC HÀNH MỘT SỐ TẤN CÔNG MẠNG
I. Tấn công khai thác lỗ hổng trên các framework sử dụng Telerik UI for
ASP.Net AJAX – CVE-2019-18935 (Remote Code Execution via Insecure
Deserialization)
1.
Tổng quan về Telerik UI for ASP.NET
- Telerik UI for ASP.NET là một thư viện phổ biến chuyên phát triển giao diện
cho các Website, xây dựng trên nền tảng .NET.
- Telerik cung cấp nhiều loại sản phẩm được sử dụng để cung cấp chức năng
được sử dụng bởi các trang web. Trong một số trường hợp, các sản phẩm Telerik có
thể được cài đặt như một thành phần của bên thứ ba được bao gồm bởi các ứng dụng
web và do đó, có thể vơ tình được sử dụng.
- Từ năm 2014 đến nay, thư viện này thường bị phát hiện các lỗ hổng bảo mật
nghiêm trọng, cho phép Hacker có thể tấn cơng chiếm quyền điều khiển hệ thống.
- RadAsyncUpload, là một trình xử lý tệp trong Telerik UI for ASP.NET AJAX,
cho phép người dùng upload file lên máy chủ mà không cần phải tải lại trang (upload
file không đồng bộ). Khi người dùng upload file qua module này, một POST Request
được tạo tới đường dẫn tương đối /Telerik.Web.UI.WebResource.axd?type=rau với nội
dung POST body như sau:
rauPostData (đối tượng lưu cấu hình chi tiết cách tệp được xử lý)
blob (nội dung của file được upload)
fileName (tên của file được upload)
contentType (mimetype của file được upload)
lastModifiedDate
metadata (đối tượng JSON chứa kích cỡ và tên tạm thời ‘UploadID’ của tệp
được upload)
- RadAsyncUpload chứa lỗ hổng .NET deserialization. Điều này có thể khai thác
khi các khóa mã hóa được biết đến do sự hiện diện của CVE-2017-11317, CVE-
2017-11357 và CVE-2019-18935, đây đều là những lỗ hổng được đánh giá là nghiêm
trọng. Khai thác có thể dẫn đến thực thi mã từ xa.
- Quá trình Serialization và Deserialization đối tượng:
Serialization là q trình chuyển đổi trạng thái thơng tin của một đối tượng
thành một hình thức có thể được lưu trữ hoặc truyền đi. Các thông tin chuyển
đổi có thể được lưu trữ trên một đĩa. Trong quá trình truyền qua mạng, nó có
thể ở dạng byte, XML, JSON,…
Deserialization là quá trình ngược lại của quá trình serialization, thực hiện lấy
dữ liệu từ các định dạng có cấu trúc, khôi phục thông tin theo byte, XML,
JSON,... thành các đối tượng .
- Các phiên bản bị ảnh hưởng: Các phiên bản Telerik UI trước 2019.3.1023 đều
có khả năng bị ảnh hưởng bởi các lỗ hổng trên này.
Mức độ ảnh hưởng: Hacker có thể lợi dụng lỗ hổng này để chiếm quyền điều khiển
máy chủ cài đặt Telerik UI.
2.
Các lỗ hổng trong RadAsyncUpload
Nguyên nhân gây ra lỗ hổng:
Trước đó, module RadAsyncUpload có tồn tại lỗ hổng CVE-2014-2217 cho
phép upload file tùy ý lên máy chủ. Telerik đã khắc phục vấn đề này bằng cách kiểm
tra tên file để đảm bảo nó khơng chứa các ký tự như “../” và thêm các cấu hình mới
trong web.config. Các cấu hình mới bao gồm ‘ConfgurationEncryptionKey’ và
‘ConfigurationHashKey’, được thiết để để đảm bảo tính bí mật và tính tồn vẹn của
các thơng tin nhạy cảm (chẳng hạn như thư mục đích trên máy chủ web lưu file được
upload). Theo đó, tham số rauPostData trong POST body sẽ được mã hóa thay vì ở
dạng rõ.
Tuy nhiên, với Telerik UI for ASP.NET AJAX phiên bản trước R1 2017 và R2
trước R2 2017 SP2, nếu lập trình viên khơng tùy chỉnh khóa mã hóa, khóa mặc định
cố định sẽ được sử dụng. Dùng cơng cụ JetBrains dotPeek để decompile
Telerik.Web.UI.dll, ta có thể thấy giá trị khóa mặc định này là
“PrivateKeyForEncryptionOfRadAsyncUploadConfiguration“
Mức độ ảnh hưởng:
Nếu máy chủ sử dụng cấu hình RadAsyncUpload mặc định, kẻ tấn cơng có thể
dùng khóa mặc định để giải mã, đọc, sửa đổi, giả mạo đối tượng rauPostData. Do đối
tượng này chứa các tham số để chỉ định thư mục lưu file được upload, nếu một kẻ xấu
giả mạo giá trị này, hắn có thể upload file tùy ý vào vị trí mong muốn lên máy chủ.
Phương thức phá vỡ lớp bảo mật mã hóa mà trình xử lý sử dụng để bảo vệ các POST
request để tải lên tệp chính là lỗ hổng CVE-2017-11317
a, CVE-2017-11317 (Unrestricted File Upload via Weak Encryption)
- Điều kiện tiên quyết để thực thi lỗ hổng CVE-2019-18935
- Telerik
UI
cho
ASP.NET
AJAX
trước
R2
2017
SP2,
class AsyncUploadHandler cấu hình một mã hóa cứng (hard-coded) được sử dụng để
mã hóa form data trong request tải tệp lên máy chủ.
- Sau khi nhập, chương trình sẽ chuyển đoạn rauPostData được mã hóa thơng
qua hai lần giải mã. Việc giải mã đầu tiên sẽ tiết lộ một khối các tham số theo định
dạng khóa / cặp. Một trong những tham số này là TempTargetFolder, vẫn được mã
hóa. Chương trình phân tích giá trị này ra và giải mã nó một lần nữa để có được
đường dẫn tải lên tệp hiện tại.
- Bắt đầu từ năm 2017, Telerik đã bao gồm một HMAC được gắn vào cuối giá trị
TempTargetFolder. Chương trình cố gắng phát hiện nếu một HMAC được nối thêm.
Nếu được phát hiện, nó sẽ xác định nơi đường dẫn tệp được mã hóa dừng và HMAC
bắt đầu, sau đó phân tích hai giá trị.
- Khi kết thúc q trình giải mã và xử lý với HMAC, chương trình sẽ đưa ra
đường dẫn tệp tải lên chính xác đang được máy chủ web sử dụng. Sau đó, nó sẽ nhắc
bạn nhập một đường dẫn tệp mới, nơi bạn muốn tệp độc hại của mình được tải lên.
=> Mục tiêu là để có được một tệp độc hại được tải lên gốc web, chúng ta có thể truy
cập trang và khiến nó thực thi.
- Nếu
giá
trị
mặc
định
của
khóa
mã
hóa: PrivateKeyForEncryptionOfRadAsyncUploadConfiguration khơng được thay
đổi, kẻ tấn cơng có thể sử dụng khóa đó để tạo một POST
request /Telerik.Web.Ui.WebResource.axd?type=rau yêu cầu tải lên tệp với tham số
được mã hóa rauPostData. Sau đó, nếu hacker có thể chỉ định một giá trị cho
biến TempTargetFolder trong tham số rauPostData được mã hóa, xác nhận thêm tính
chính xác của đường dẫn (Thuật tốn mã hóa HMACSHA256), tin tặc có thể có được
tồn quyền cho phép upload file ở bất kì thư mục nào mà máy chủ web có quyền ghi.
Tham khảo tạo link để hiểu rõ hơn về cấu trúc rauPostData
/>- Khi người dùng tải lên tệp thông qua mơ-đun RadAsyncUpload, nó sẽ tạo một
u
cầu
dựa
trên
POST
cho
đường
dẫn
tương
đối
sau:
“/Telerik.Web.UI.WebResource.axd?type=rau”
Văn bản được mã hóa trong RauPostData thực sự có hai phần được phân
tách bằng dấu ‘&’. Phần đầu tiên chứa đường dẫn tệp tải lên, độ dài nội dung,
thời gian và phần mở rộng tệp được phép. Phần thứ hai chứa thông tin về phiên
bản của Telerik.Web.UI và PublicKeyToken.
b, CVE-2019-18935 (Remote Code Execution via Insecure Deserialization)
- Dù lỗ hổng unrestricted file upload (CVE-2017-11317) đã được biết đến rộng
rãi kể từ khi được phát hiện vào năm 2017, người ta vẫn nghiên cứu sâu hơn vào cách
mà RadAsyncUpload xử lý tham số rauPostData trong các request upload file vào
đầu năm 2019 và phát hiện ra rằng rauPostData chứa cả thơng tin cấu hình object cần
chuyển đổi và object type (kiểu dữ liệu mong muốn để chuyển đổi). Tuy nhiên, ngôn
ngữ .Net không thể tự làm việc với object mà client truyền lên được, mà phải chuyển
đổi lại.
Để làm được điều này, cần phân định kiểu trước khi truyền vào
hàm JavaScriptSerializer.Deserialize(). Ở đây, AsyncUploadHandler lấy type từ
trong rauPostData để truyền vào hàm Deserialize().
- Khai thác .NET JavaScriptSerializer. Vấn đề giải nén thơng qua RadAsyncUpload có thể
dẫn đến việc thực thi mã độc trên máy chủ trong bối cảnh của quy trình w3wp.exe.
(w3wp.exe xử lý các yêu cầu web được gửi đến máy chủ web IIS cho nhóm ứng dụng
IIS được định cấu hình).
- Trong quá trình deserialize, JavaScriptSerializer sẽ gọi đến các phương thức
setter cho từng object type riêng biệt và nếu object type đó bị kẻ tấn cơng kiểm sốt,
một kịch bản nguy hiểm có thể xảy ra khi hacker có thể sử dụng nó như là một gadget
để
tiến
hành
tấn
cơng
hệ
thống.
Thay
vì
gửi
một
type Telerik.Web.UI.AsyncUploadConfiguration thông thường trong rauPostData, kẻ
tấn cơng có thể POST request upload một tập tin chỉ định type dưới dạng một RCE
gadget.
Sau khi lợi dụng lỗ hổng unrestricted file upload (CVE-2017-11317) để tải lên hệ
thống một file Mixed Mode Assembly DLL độc hại, kẻ tấn công sẽ tiếp tục một
request thứ hai chứa nhằm mục đích ép JavaScriptSerializer deserialize một object có
type System.Configuration.Install.AssemblyInstaller. Khi server chạy
hàm Deserialize() cùng với Path do kẻ tấn công gắn vào được trỏ tới file DLL được
tải lên, máy chủ sẽ tải file DLL đó tới domain hiện tại của nó và hàm DLLMain() sẽ
được gọi đến khi file DLL load thành công.
3.
Cài đặt một trường
- Cấu trúc file object sử dụng để upload.
- Sử dụng visual code 2017 có cài ASP.NET xây dựng một Web sử dụng Telerik
UI v.2019.3.917.
Bước 1: Tạo Project sử dụng webform
Bước 2: Cài đặt telerik UI ASP.NET tùy theo version (Sử dụng bản crack version
2019.3.917):
Toolbox -> Chuột phải vào General -> Chooses Items -> .NET
Framework Components -> Brows.. -> (Chọn thư mục vừa cài đặt default:
‘C:\Program Files (x86)\Progress\Telerik UI for ASP.NET AJAX R3
2018\Bin45’ Bin45 là .net sử dụng framwork 4.5 ngồi ra cịn 4.0, 3.5)
Chọn ‘Telerik.Web.UI.dll’ -> OK
Trong bản Solutiomn Explorer -> chuột phải vào References -> Add
References... -> Browse.. -> Chọn file Telerik.Web.UI.Skins.dll -> Add -> OK
Bước 3: Edit file Web.config với nội dung sau, trong đó xác định key mã hóa vẫn
ở giá trị mặc định là PrivateKeyForEncryptionOfRadAsyncUploadConfiguration:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
at:
/>
value="PrivateKeyForEncryptionOfRadAsyncUploadConfiguration" />
key="Telerik.Upload.ConfigurationHashKey"
value="PrivateKeyForHashOfUploadConfiguration" />
key="Telerik.Upload.AllowedCustomMetaDataTypes"
value="Telerik.Web.UI.AsyncUploadConfiguration" />
</appSettings>
<system.web>
<httpHandlers>
validate="false" />
path="Telerik.Web.UI.SpellCheckHandler.axd"
type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false" />
verb="*" validate="false" />
path="Telerik.RadUploadProgressHandler.ashx"
type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false" />
verb="*" validate="false" />
</httpHandlers>
<httpModules>
<add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" />
</httpModules>
<compilation />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="RadUploadModule" />
preCondition="integratedMode" />
</modules>
<handlers>
<remove name="ChartImage_axd" />
name="ChartImage_axd"
path="ChartImage.axd"
type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode" />
<remove name="Telerik_Web_UI_SpellCheckHandler_axd" />
name="Telerik_Web_UI_SpellCheckHandler_axd"
path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler"
verb="*" preCondition="integratedMode" />
<remove name="Telerik_Web_UI_DialogHandler_aspx" />
name="Telerik_Web_UI_DialogHandler_aspx"
path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*"
preCondition="integratedMode" />
<remove name="Telerik_RadUploadProgressHandler_ashx" />
name="Telerik_RadUploadProgressHandler_ashx"
path="Telerik.RadUploadProgressHandler.ashx"
type="Telerik.Web.UI.RadUploadProgressHandler"
preCondition="integratedMode" />
verb="*"
<remove name="Telerik_Web_UI_WebResource_axd" />
name="Telerik_Web_UI_WebResource_axd"
path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*"
preCondition="integratedMode" />
</handlers>
</system.webServer>
</configuration>