MỤC LỤC DANH SÁCH HÌNH 3 DANH SÁCH TỪ VIẾT TẮT 4 LỜI NÓI ĐẦU 6 CHƯƠNG I: TỔNG QUAN TẤN CÔNG CLICKJACKING 7 1.1. Vài nét về tấn công Clickjacking 7 1.2. Khái niệm tấn công Clickjacking. 9 1.3. Mối đe dọa của Clickjacking 10 1.4. Các vấn đề về tấn công và phòng thủ chống Clickjacking 10 CHƯƠNG II: PHÂN LOẠI TẤN CÔNG CLICKJACKING VÀ PHƯƠNG PHÁP PHÒNG CHỐNG 14 2.1. Các kiểu tấn công clickjacking 14 2.2.Các biến thể mới của Clickjacking 21 2.3. Các phương pháp phòng chống Clickjacking 23 CHƯƠNG III: DEMO LIKEJACKING 31 3.1. Mục đích củademotấn côngLikejacking 31 Demo tấn côngLikejacking: 31 3.1. Cách phòngchống 32 KẾTLUẬN 38 TÀILIỆUTHAMKHẢO 39 DANH SÁCH HÌNH Hình 1: Kẻ tấn công chèn nút Like ẩn 14 Hình 2: Ví dụ về Frame ẩn 15 Hình 3: Kết quả hiển thị 16 Hình 4: Nút like trong suốt ở vị trí con trỏ chuột chứa mã Javascript . 17 Hình 5: Bảng điều khiển Adobe Security Settings 18 Hình 6: Tấn công giả mạo con trỏ để chiếm quyền điều khiển webcam 23 Hình 7: Tấn công Doubleclick 24 Hình 8: Đảm bảotoànvẹnmụctiêuhiểnthị 27 Hình 9: HiệuứngLightbox 30 Hình 10: Hiệu suất của InContex 31 Hình 11: Web giả mạo chứa javascript 33 Hình 12: Link giả mạo 34 Hình 13: TắtJavaScriptởtrìnhduyệtGoogleChrome 35 Hình 14: TắtJavaScriptởtrìnhduyệtMozillaFirefox16.0 36 Hình 15: TắtJavaScriptởtrìnhduyệtIE 37 Hình 16: Vô hiệu hoá Frame ẩn trên trình duyệt Firefox 38 Hình 17: Đoạn Script giúp phát hiện và vô hiệu hoá frame ẩn 39 DANH SÁCH TỪ VIẾT TẮT Từ viết tắt Từ đầyđủ Chú giải UI UserInterface Giaodiệnngườidùng CSS CascadingStyleSheet Ngônngữquyđịnhcáchtrìnhbàycủa cácthẻ HTMLtrêntrangweb XSS CrosssiteScripting Lỗhổngchophéphackercóthểchènnhữngđoạnmãclientscript(thườnglàJavascripthoặcHTML)vàotrangweb,khingườidùngvàonhữngtrênwebnày,mãđộcsẽđượcthựcthitrênmáycủangườidùng ASP ActiveServerPage Cungcấpmộtkhung làmviệc chocác ứngdụngphíaServer PHP HypertextPreprocessor Ngônngữlậptrìnhkịchbảnhaymộtloạimãlệnhchủyếuđượcdùngđểpháttriểncácứngdụngviếtchomáychủ,mãnguồnmở.NórấtthíchhợpvớiwebvàcóthểdễdàngnhúngvàotrangHTML. CGI CommonGatewayInterface Mộtphươngphápchophépgiaotiếpgiữaservervàchươngtrìnhnhờcácđịnhdạngđặctảthôngtin JSP JavaServerPages Côngnghệchophépthựchiệndễdàngviệcviếtcáctrangwebđộng(dĩnhiêntacũngcóthểviếtcáctrangwebtĩnhvớiJSP).Cụthể,mộttrangJSPlàmộttrangHTML (hayXML)trongđócótrộnlẫncác mãJava,tứccác thành phần JSP, cho phép thực hiện nội dung động. HTML HyperText Markup Language Ngôn ngữ đánh dấu siêu văn bản Một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các trang web với các mẩu thông tin được trình bày trên World Wide Web API Application Programming Interface Giao diện lập trình ứng dụng là một giao tiếp phần mềm chẳng hạn như giữa chương trình và hệ điều hành CSRF Crosssite Request Forgery Kỹ thuật tấn công bằng cách sử dụng quyền chứng thực của người dùng đối với một website LỜI NÓI ĐẦU Trong những năm gần đây, sự phát triển nhanh của hệ thống mạng Internet hiện nay, thời gan đã cho thấy rằng các ứng dụng web đã trở nên phức tạp hơn để cung cấp các chức năng mới với các tính năng sử dụng nhiều hơn hoặc chỉ đơn giản tạo ra sự bắt mắt cho người sử dụng. Nhưng mức độ phức tạp hơn không phản ánh rằng khả năng bảo mật sẽ tốt hơn. Luôn có những cuộc tấn công mới có thể bị bỏ qua bởi các cơ chế bảo vệ hiện có. Vì vậy, các kỹ sư phần mềm phải chú ý để phát triển các ứng dụng web an toàn. Thủ thuật clickjacking, tức nội dung trong đường link người dùng bấm vào đã bị thay đổi mà họ không hay biết, được giới bảo mật đánh giá là một trong những nguy cơ nghiêm trọng mới trên Internet. Phương pháp clickjacking được thực hiện nhờ một khung nội tuyến (iframe) cho phép cửa sổ trình duyệt chia thành nhiều phần để các nội dung khác nhau có thể hiển thị trên từng phần đó. Khi khách truy cập bấm chuột vào mục chứa khung nội tuyến độc, cuộc khai thác sẽ diễn ra đúng theo kế hoạch của kẻ tấn công. Kiểu tấn công mới này xảy ra trên hầu hết các trình duyệt từ Internet Explorer, Firefox, Opera, Safari cho đến bản gần đây nhất Google Chrome. Microsoft và Mozilla cùng thừa nhận không dễ có giải pháp khắc phục cho vấn đề nghiêm trọng này. Với đềtài“TìmhiểuClickjackingvàphươngphápphòngchốngClickjacking”, chúngemxintrìnhbày rõhơnvềbảnchất,phươngthứchoạtđộngvàđưaracácgiảiphápphòngngừa,ngănchặnloạihìnhtấncôngmớinày. CHƯƠNG I: TỔNG QUAN TẤN CÔNG CLICKJACKING 1.1. Vài nét về tấn công Clickjacking Năm 2008 Robert Hansen và Jeremiah Grossman khám phá ra hàng loạt lỗi mới trong cơ sở hạ tầng internet nhu trình duyệt, website và những plugin phổ biến dẫn tới hàng tá nguy cơ bảo mật ảnh hưởng dến mọi người dùng web, một thuật ngữ bảo mật mới ra đời: Clickjacking. Robert Hansen (nhà sáng lập và điều hành hãng SecTheory) và Jeremiah Grossman (giám đốc công nghệ tại hội nghị Whitehat Security) đặc biệt nhấn mạnh những khám phá của mình về mức độ nguy hiểm đối từ clickjacking, thuật ngữ ám chỉ một nguy cơ bảo mật thật sự đe dọa ngành công nghiệp bảo mật hiện nay. Nó diễn ra qua việc lừa đảo mọi người click vào một liên kết với vẻ ngoài “trong sạch” trong một trình duyệt, ví dụ như một nút nhấn để lưu 1 bài báo online đang đọc vào mạng xã hội lưu trữ Digg chứ không chỉ đơn thuần là nhấn vào các liên kết lừa đảo như trước đây tin tặc hay sử dụng. Cách thức đã thay đổi và cả Hansen cùng Grossman đều cho rằng hầu hết các trình duyệt đều không đương đầu được với clickjacking. Một cuộc tấn công clickjacking có thể dựa trên một thiết kế cơ bản trong HTML cho phép các website nhúng nội dung từ các trang web khác. Nội dung nhúng có thể được ẩn và người dùng web hoàn toàn không biết đang tương tác với nó. Một dạng thức khác của clickjacking lại nhằm vào những plugin phổ biến hiện nay là Adobe Flash Player hay Microsoft Silverlight. Thực chất, clickjacking đã xuất hiện từ một vài năm trước nhưng từ sau những khám phá mới của Hansen và Grossman thì clickjacking mới lộ rõ khả năng thực sự của mình. “Có nhiều dạng clickjacking” Hansen bày tỏ sự lo âu của mình về mối nguy cơ của clickjacking khá đa dạng. “Một vài loại yêu cầu quyền truy cập crossdomain, một số khác lại không. Một vài loại bao phủ toàn bộ các trang bên trên 1 trang, một vài tin tặc sẽ dùng iframe để đưa bạn click vào một điểm. Một số khác yêu cầu JavaScript và một số lại không”. Hansen đã lên 1 danh sách 12 trường hợp có thể khai thác clickjacking trong trình duyệt, plugin và website. Tuy nhiên, đây không phải là tất cả.
Trang 2MỤC LỤC
DANH SÁCH HÌNH
Trang 3ứngdụngphíaServerPHP HypertextPreprocessor Ngônngữlậptrìnhkịchbản
haymộtloạimãlệnhchủyếuđượcdùngđểpháttriểncácứngdụngviếtchomáychủ,mãnguồnmở.NórấtthíchhợpvớiwebvàcóthểdễdàngnhúngvàotrangHTML
e Mộtphươngphápchophépgiaotiếpgiữaservervàchư
ơngtrìnhnhờcácđịnhdạngđặctảthôngtin
Trang 4JSP JavaServerPages Côngnghệchophépthựchi
ệndễdàngviệcviếtcáctrangwebđộng(dĩnhiêntacũngcóthểviếtcáctrangwebtĩnhvớiJSP).Cụthể,mộttrangJSPlàmộttrangHTML (hayXML)trongđócótrộnlẫncác mãJava,tứccác thành phần JSP, cho phép thực hiện nội dung
Language Ngôn ngữ đánh dấu siêu văn bản - Một ngôn ngữ
đánh dấu được thiết kế ra
để tạo nên các trang web với các mẩu thông tin được trình bày trên World Wide Web
Interface Giao diện lập trình ứng dụng - là một giao tiếp
phần mềm chẳng hạn như giữa chương trình và
hệ điều hành
CSR
F Cross-site Request Forgery Kỹ thuật tấn công bằng cách sử dụng quyền chứng thực của người
dùng đối với một website
Trang 5LỜI NÓI ĐẦU
Trong những năm gần đây, sự phát triển nhanh của hệ thống mạng Internet hiện nay, thời gan đã cho thấy rằng các ứng dụng web đã trở nên phức tạp hơn để cung cấp các chức năng mới với các tính năng sử dụng nhiều hơn hoặc chỉ đơn giản tạo ra sự bắt mắt cho người sử dụng Nhưng mức độ phức tạp hơn không phản ánh rằng khả năng bảo mật sẽ tốt hơn Luôn có những cuộc tấn công mới
có thể bị bỏ qua bởi các cơ chế bảo vệ hiện có Vì vậy, các kỹ sư phần mềm phải chú ý để phát triển các ứng dụng web an toàn
Thủ thuật clickjacking, tức nội dung trong đường link người dùng bấm vào đã bị thay đổi mà họ không hay biết, được giới bảo mật đánh giá là một trong những nguy cơ nghiêm trọng mới trên Internet Phương pháp clickjacking được thực hiện nhờ một khung nội tuyến (iframe) cho phép cửa sổ trình duyệt chia thành nhiều phần để các nội dung khác nhau có thể hiển thị trên từng phần đó Khi khách truy cập bấm chuột vào mục chứa khung nội tuyến độc, cuộc khai thác sẽ diễn ra đúng theo kế hoạch của kẻ tấn công
Kiểu tấn công mới này xảy ra trên hầu hết các trình duyệt từ Internet Explorer, Firefox, Opera, Safari cho đến bản gần đây nhất Google Chrome Microsoft và Mozilla cùng thừa nhận không dễ có giải pháp khắc phục cho vấn đề nghiêm
đềtài“TìmhiểuClickjackingvàphươngphápphòngchốngClickjacking”,
chúngemxintrìnhbày
rõhơnvềbảnchất,phươngthứchoạtđộngvàđưaracácgiảiphápphòngngừa,ngănchặnloạihìnhtấncôngmớinày
Trang 6CHƯƠNG I: TỔNG QUAN TẤN CÔNG CLICKJACKING
1.1. Vài nét về tấn công Clickjacking
Năm 2008 Robert Hansen và Jeremiah Grossman khám phá ra hàng loạt lỗi mới trong cơ sở hạ tầng internet nhu trình duyệt, website và những plug-in phổ biến dẫn tới hàng tá nguy cơ bảo mật ảnh hưởng dến mọi người dùng web, một thuật ngữ bảo mật mới ra đời: Clickjacking
Robert Hansen (nhà sáng lập và điều hành hãng SecTheory) và Jeremiah Grossman (giám đốc công nghệ tại hội nghị Whitehat Security) đặc biệt nhấn mạnh những khám phá của mình về mức độ nguy hiểm đối từ clickjacking, thuật ngữ ám chỉ một nguy cơ bảo mật thật sự đe dọa ngành công nghiệp bảo mật hiện nay
Nó diễn ra qua việc lừa đảo mọi người click vào một liên kết với vẻ ngoài
“trong sạch” trong một trình duyệt, ví dụ như một nút nhấn để lưu 1 bài báo online đang đọc vào mạng xã hội lưu trữ Digg chứ không chỉ đơn thuần là nhấn vào các liên kết lừa đảo như trước đây tin tặc hay sử dụng Cách thức đã thay đổi và cả Hansen cùng Grossman đều cho rằng hầu hết các trình duyệt đều không đương đầu được với clickjacking
Một cuộc tấn công clickjacking có thể dựa trên một thiết kế cơ bản trong HTML cho phép các website nhúng nội dung từ các trang web khác Nội dung nhúng có thể được ẩn và người dùng web hoàn toàn không biết đang tương tác với nó Một dạng thức khác của clickjacking lại nhằm vào những plug-in phổ biến hiện nay là Adobe Flash Player hay Microsoft Silverlight Thực chất, clickjacking đã xuất hiện từ một vài năm trước nhưng từ sau những khám phá mới của Hansen và Grossman thì clickjacking mới lộ rõ khả năng thực sự của mình
“Có nhiều dạng clickjacking” - Hansen bày tỏ sự lo âu của mình về mối nguy cơ của clickjacking khá đa dạng “Một vài loại yêu cầu quyền truy cập cross-domain, một số khác lại không Một vài loại bao phủ toàn bộ các trang bên trên 1 trang, một vài tin tặc sẽ dùng iframe để đưa bạn click vào một điểm Một số khác yêu cầu JavaScript và một số lại không”
Hansen đã lên 1 danh sách 12 trường hợp có thể khai thác clickjacking trong trình duyệt, plug-in và website Tuy nhiên, đây không phải là tất cả
Trang 7thác clickjacking dựa trên những nhân tố ẩn của Flash dẫn dắt người đến các trang web giả mạo Hãng Adobe đang ráo riết nghiên cứu trên lỗi này trước khi
nó bị phát tán công khai và không quên bày tỏ sự cảm kích Hansen và Grossman đã giữ kín lỗi nguy hiểm này Trước mắt, người dùng web nên theo
sự hướng dẫn thiết lập của Adobe cho Flash Player để tránh những cuộc tấn công từ clickjacking trước khi có bản vá chính thức được phát hành
Đến năm 2010, tại cuộc hội thảo hacker - Black Hat Europe vừa mới kết thúc tại Barcelona, chuyên gia bảo mật người Anh - Paul Stone đã trình diễn 1 phương thức tấn công hoàn toàn mới của clickjacking attack
Bài trình diễn của Stone không giới hạn số lượng kích chuột, có thể điền giá trị text và form, đọc văn bản đang được mở trên trình duyệt của nạn nhân hoặc các trang web nguồn khác Đồng thời Stone cũng tận dụng tối đa khả năng kéo – thả, được cung cấp bởi hàm API, hiện nay đã được trang bị trong hầu hết các trình duyệt hiện nay như Internet Explorer, Firefox, Chrome và Safari Bên cạnh việc “chỉ định” nạn nhân kích vào những đối tượng được điểu khiển sẵn, Stone còn trình diễn khả năng “điều khiển” người sử dụng kéo 1 đối tượng bất
kỳ, 1 chuỗi ký tự text từ cửa sổ hoặc form có sẵn vào 1 module “vô hình” nào
đó
Điều này có thể được giải thích như sau, người sử dụng đăng nhập vào 1 trang
xã hội hoặc 1 trang web nào đó, khi mở tiếp 1 trang web từ trang nguồn này thông qua 1 khung hình ẩn được dựng sẵn, tất nhiên người sử dụng không hề biết được sự tồn tại này Theo ý kiến của Stone, chính sách hoạt động theo cùng nguồn gốc của các trình duyệt không thể hiện nhiều hành động phản kháng trong tình cảnh này, và các thành phần trong trang web đó sẽ tự động bị chuyển đổi từ site bất kỳ sang site được dựng sẵn dựa vào hành động “vô tình” của người sử dụng Sử dụng phương pháp này, Stone có thể phá vỡ những hạn chế nhằm ngăn chặn giả mạo những yêu cầu tương tự như cross-site
Ngược lại, tính năng kéo – thả còn được sử dụng để sao chép nội dung từ cửa sổ của người sử dụng sang cửa sổ làm việc của kẻ tấn công Cũng theo Stone, điều này có thể được sử dụng để truy cập vào mã HTML của trang web, bao gồm các hàm ID hoặc chuỗi nhận dạng token Và thông qua cơ chế này, kẻ tấn công sẽ
dễ dàng chèn thêm các hàm điều khiển khác
Các cuộc tấn công như vậy ngày càng trở nên tinh vi khi Java và mã Javascript được nhúng vào hệ thống Cũng theo Stone, hàm kéo – thả API của Java còn mạnh hơn so với của trình duyệt Lợi dụng điểm này, những kẻ tấn
Trang 8dung chỉ với 1 cú click duy nhất Khi kết hợp tính năng này với với các phương thức tấn công khác thông qua Javascript, có thể đặt lệnh kéo thả tại bất cứ thời điểm nào, ngay cả khi con trỏ chuột chưa di chuyển đến các vị trí được chỉ định bởi Java applet hoặc khi nạn nhân không nhấn và giữ phím chuột trái
Bên cạnh đó, Java còn hỗ trợ tính năng tự động điền mẫu nhanh hơn Thay cho việc phải chờ từng hành động kích chuột của nạn nhân, kẻ tấn công có thể hoàn thành form nội dung chỉ trong 1 thao tác duy nhất “Spraying”, cách gọi vắn tắt của phương thức này, có thể hoạt động trong nền tảng Windows và Mac OS X, nhưng không thể áp dụng đối với Linux
Tuy nhiên, những kiểu tấn công này có thể bị chặn bởi những hệ thống web server tin cậy, khi gửi đi yêu cầu với nội dung "X-FRAME-OPTIONS: DENY" đến header của 1 trình duyệt bất kỳ nào đó, điều này sẽ bảo vệ và cho phép trang web hiển thị trong 1 khung (frame) duy nhất Tuy nhiên, chỉ có các phiên bản trình duyệt mới nhất hiện nay như mới có khả năng “nhận thấy” tùy chọn này Stone cũng chỉ ra rằng, đối với những trang web có lưu lượng truy cập lớn hoặc rất lớn như facebook.com, googlemail.com và twitter.com đã có thể chống lại nạn clickjacking, nhưng bên cạnh đó, theo nhận định của các chuyên gia bảo mật khác, các phiên bản dành cho mobile hoặc smartphone của các trình duyệt này cũng đã được tối ưu hóa với mức cao nhất để phòng tránh nguy cơ bị tấn công qua clickjacking
1.2. Khái niệm tấn công Clickjacking.
Clickjacking (còn được gọi là "UI redress attack") là một thuật ngữ diễn
tả việc lừa người sử dụng click chuột vào một liên kết nhìn bề ngoài có vẻ
"trong sạch" trong các trang web, tuy nhiên qua cú click chuột đó hacker có thể lấy được các thông tin bí mật của người sử dụng hay kiểm soát máy tính của họ.Khi thực hiện một cú click, người dùng nghĩ là mình nhấn chuột lên một đối tượng đang hiển thị trên màn hình, nhưng thực ra lại đang truy cập vào một trang web hoàn toàn khác Điều đó xảy ra là do một số tính chất của ngôn ngữ HTML đã bị lợi dụng như: Một trang web có thể chứa một trang web khác bằng cách sử dụng thẻ iframe Các phần tử của trang web (HTML element) có thể tồn tại ở dạng hiện rõ, bị làm mờ, hoặc bị ẩn hoàn toàn Nếu các HTML element chồng lên nhau thì thứ tự chồng chất được quyết định bởi một tham số đặc biệt, gọi là z- index
Như vậy, một phần tử HTML có thể được thiết lập để đặt trước tất cả mọi phần tử HTML khác, nhưng lại tồn tại ở dạng ẩn và phần tử HTML đó có thể là một trang web được tải về nhờ thẻ iframe Trong cách thức tiến hành tấn công
Trang 9muốn người dùng nhấn chuột vào, đồng thời đặt iframe (được thiết lập ở chế độ ẩn) đó phía trên trang web đang được hiển thị trên trình duyệt của người dùng Việc này có thể thực hiện được bằng cách sử dụng Cascading Style Streets (CSS), với tham số opacity để thiết lập tính ẩn và tham số z-index để thiết lập thứ tự xếp chồng Kết quả là khi người dùng nhấn chuột vào trang web mà anh
ta đang xem thì cú nhấn chuột đó lại được tính là thực hiện trên trang web (ẩn) của kẻ tấn công Để người dùng nhấn chuột vào đúng vị trí mà kẻ tấn công mong muốn, chúng sẽ sử dụng tính năng định vị tuyệt đối của CSS để thiết lập cho vị trí đó trùng với vị trí của vùng trên trang web đang hiện mà có nhiều khả năng người dùng sẽ nhấn chuột vào
1.3. Mối đe dọa của Clickjacking
Tấn công clickjacking hiện cũng là vấn đề nan giải của tất cả các nhà phát triển trình duyệt web Clickjacking là hình thức đưa một trang web cải trang vào
vị trí của website khác đồng thời cho phép tin tặc xem thông tin truy cập của người dùng và những hoạt đông của họ Ví dụ, khi một người nào đó đang truy cập vào website ngân hàng, tin tặc có thể sử dụng clickjacking để xem thông tin tài khoản ngân hàng và mật khẩu mà nạn nhân không hề hay biết
Kỹ thuật tấn công Clickjacking được kẻ tấn công sử dụng rộng rãi trên các mạng xã hội Ví dụ điển hình là trang mạng xã hội Facebook như việc kẻ tấn công sử dụng kỹ thuật tấn công kỹ nghệ xã hội (Social engineering) để đánh lừa người dùng kích chuột vào nút like facebook với nội dung sai lệch với hình ảnh từ một trang web của tổ chức từ thiện Khi nạn nhân hiểu việc làm của mình
là có ích, đã kích chuột vào nút like và sau đó trên trình duyệt sẽ mở ra trang mới có thể chứa mã độc theo kịch bản mà kẻ tấn công đã dựng trước Một kẻ tấn công Clickjacking thường khai thác một hệ thống không có khả năng duy trì tính toàn vẹn ngữ cảnh cho hành động của người sử dụng và do đó nó có thể thao tác các yếu tố nhạy cảm với trực quan để đánh lừa người dùng
1.4. Các vấn đề về tấn công và phòng thủ chống Clickjacking
1.4.1. Thoát khỏi những tấn công Clickjacking
Phân loại việc thoát khỏi những cuộc tấn công buộc người sử dụng trong việc ban hành lệnh đầu vào ngoài bối cảnh của giao diện thực thi gồm:
• Toàn vẹn mục tiêu hiển thị: đảm bảo người dùng có thể nhìn thấy đầy đủ
và nhận ra phần tử đích trước khi người dùng thực hiện hành động nhập
Trang 10• Toàn vẹn con trỏ văn bản: đảm bảo người dùng có thể trả lời phản hồi
con trỏ để chọn những vị trí cho những sự kiện nhập vào
• Toàn vẹn thời gian: đảm bảo người dùng có đủ thời gian để hiểu họ đang
nhấp chuột vào đâu
1.4.1.1. Toàn vẹn mục tiêu hiển thị
• Giấu phần tử mục tiêu:
Các trình duyệt hiện đại ngày nay đều hỗ trợ các đặc tính tạo kiểu HTML/CSS cho phép kẻ tấn công giấu phần tử mục tiêu khi nhìn bằng mắt nhưng phần tử đích đó sẽ lộ ra khi kích chuột tới nó Ví dụ, một kẻ tấn công
có thể làm rõ ràng phần tử mục tiêu bằng cách gói nó trọng một vật chứa với CSS có giá trị đồ mờ bằng 0, để dụ dỗ được nạn nhân vào nó, kẻ tấn công có thể kéo tới một cái bẫy dính trước dưới phần tử đích bằng sách sử dụng chỉ
số CSS thấp hơn z-index( z-index là thuộc tính của CSS, thiết lập thứ tự xếp chồng nhau của một thành phần vị trí Thứ tự chồng nhau được sắp xếp dựa theo giá trị số, thành phần HTML nào có chỉ số z-index cao hơn sẽ nằm trên, ngược lại sẽ nằm dưới, mặc định là giá trị 0) Kẻ tấn công hoàn toàn có thể bao quát các yếu tố mục tiêu với một nhử mờ đục nhưng mà không thể kích chuột vào mồi nhử đó bằng cách thiết lập các sự kiện con trỏ trong CSS Những cú kích chuột của nạn nhân sẽ bị rơi vào bẫy và nằm vào phân vùng chứa phần tử mục tiêu không nhìn thấy được
• Che giấu một phần của phần tử mục tiêu:
Đôi khi, kẻ tấn công tạo ra sự nhầm lẫn cho nạn nhân khi nhìn bằng mắt thường bằng cách làm mờ đi một phần của phần tử mục tiêu Ví dụ, những
kẻ tấn công có thể che giấu thông tin của chính chúng ở đầu khung thanh toán Paypal để bao quát thông tin người nhận và số tiền giao diện khi rời khỏi nút thanh toán- “Pay”, do đó nạn nhân sẽ rơi vào bối cảnh không đúng khi kích chuột vào “Pay” Vấn đề che giấu này có thể được thực hiện bởi thuộc tính z-index của CSS hoặc sử dụng Flash Player mà làm bởi Window Mode cao nhất cài đặt kiểu trực tiếp Hơn nữa, một phần tử mục tiêu có thể
bị cửa sổ popup của kẻ tấn công che giấu
• Chia nhỏ phần tử mục tiêu:
Ngoài ra, kẻ tấn công có thể chia nhỏ phần tử mục tiêu chỉ để thể hiện một phần mục tiêu chẳng hạn như nút “Pay”, bằng cách gói phần tử mục tiêu trong một khung nội tuyến mới Một dạng khác của việc chia nhỏ và tạo ra nhiều vật chưa điểm ảnh 1x1 của phần tử mục tiêu và dùng điểm ảnh duy nhất để vẽ ra được nghệ thuật kích chuột có thể tùy ý
Trang 111.4.1.2. Toàn vẹn con trỏ văn bản
Bối cảnh thị giác phù hơp đòi hỏi không chỉ các phần tử mục tiêu mà còn tất cả các thông tin con trỏ phản hồi để hoàn toàn có thể nhìn thấy và xác thực Một kẻ tấn công có thể vi phạm toàn vẹn con trỏ bằng cách hiển thị một biểu tượng con trỏ giả đi từ con trỏ thật và được gọi là Cursorjacking Điều này dẫn đến việc nạn nhận có nhân thức sai lầm về vị trí con trỏ hiện tại Bằng cách sử dụng thuộc tính con trỏ của CSS, một kẻ tấn công có thể dễ dàng che giấu con trỏ mặc định và lập trình ra một con trỏ giả khác để thiết lập biểu tượng con trỏ chuột nhằm tùy chỉnh một ảnh đánh lừa thị giác người dùng mà có một biểu tượng con trỏ chuyển dịch một số điểm ảnh ra khỏi vị trí ban đầu
Một biến thể của thao tác liên quan đến con trỏ là con trỏ nhấp nháy thao tác chủ yếu với bàn phím (Ví dụ, khi gõ văn bản vào một trường đầu vào) Lỗ hổng trong trình duyệt cho phép kẻ tấn công thực hiện thao tác tập trung vào bàn phím bằng cách sử dụng tấn công Strokejacking Ví dụ, kẻ tấn công có thể nhúng các phần tử mục tiêu trong một khung tẩn, yêu cầu người dùng gõ một số văn bản vào để kẻ tấn công có thể kiểm soát trường đầu vào Khi nạn nhân thực hiện đánh máy, kẻ tấn công trong giây lát có thể chuyển đổi các thao tác bàn phím vào các phần tử mục tiêu Con trỏ nhấp nháy lẫn lộn làm nạn nhân nghĩ rằng họ đang gõ văn bản vào trường đầu vào, trong khi đó nạn nhân đang thực
sự tương tác với phần tử mục tiêu
1.4.1.3. Toàn vẹn thời gian
Các cuộc tấn công trong hai phần trên thao tác với bối cảnh thị giác đầu vào để lừa người dùng và gửi đến các yếu tố giao diện người dùng sai khác Một cách trực giao để đạt được cùng một mục tiêu là để thực thi các yêu tố giao diện người dùng sau khi người dùng đã quyết định nhấp chuột nhưng trước khi hành động nhấp chuột thực tế xảy ra Người dùng thường mất một vài trăm mili giây
để phản ứng với những thay đổi trực quan và kẻ tấn công có thể tận dụng lợi thế phản ứng chậm này để khởi động các cuộc tấn công thời gian
Ví dụ, một kẻ tấn công có thể di chuyển các phần tử mục tiêu thông qua thuộc tính vị trí của CSS trên đầu trang của một nút bẫy ngay sai khi nạn nhân di chuyển con trỏ lên nút mồi bằng cách dự đoán vị trí các nhấp chuột Để dự đoán nhấp chuột hiệu quả hơn, kẻ tấn công có thể yêu cầu nạn nhân nhiều lần nhấn lên đối tượng trong một trò chơi hoặc nhấn đúp chuột vào nút mồi, sau đó di chuyển các phần tử mục tiêu trong mồi ngay lập tức khi nạn nhân thực hiện cú nhấp chuột đầu tiên
Trang 12Hình : Kẻ tấn công chèn nút Like ẩn
Tấn công Clickjacking đã tăng truy cập vào trang của kẻ tấn công mà nạn nhân không hề hay biết
Trang 13CHƯƠNG II: PHÂN LOẠI TẤN CÔNG CLICKJACKING
VÀ PHƯƠNG PHÁP PHÒNG CHỐNG
2.1 Các kiểu tấn công Clickjacking
Clickjacking la một kĩ thuật tương đối mới, và thực tế các nguy cơ bị Clickjacking là khá đa dạng Trong tương lai sẽ xuất hiện nhiều biến thể của Clickjacking được hacker sử dụng.Các kiểu tấn công Clickjacking bao gồm:
• Tương tác với một Frame ẩn
• Sử dụng javascript
• Tấn công qua lỗ hổng phần mềm
• Kết hợp các cách tấn công trên các lỗi phổ biến như XSS, CSRF
2.1.1 Tương tác với một Frame ẩn
Tin tặc sẽ tạo ra một trang web, trong đó có chứa một frame ẩn (trong suốt đối với người dùng) và nội dung hiển thị sẽ lừa người dùng click vào một hoặc một vài điểm nào đó trên website Khi đó người dùng không hề biết là đang thao tác với một trang web độc hại nằm trong iframe Và thông qua iframe đó, hacker có thể lấy cắp thông tin của người dùng hoặc thực hiện các thao tác khác
• Iframe chưa trang web độc có thể nằm trên toàn bộ hoặc trong một phần website đó, tuỳ theo cách thức mà hacker đặt ra để lừa người dùng
• Iframe có thể được điều khiển bằng javascript hoặc nằm cố định nhờ CSS
• Iframe có thể nằm dưới hoặc nằm trên (Grapic overlaying) đối tượng lừa người sử dụng click vào
Trang 14bộ trang được load nhưng trước khi trang được hiển thị.
Một biến thể mở rộng của Clickjacking cơ bản là sử dụng ngôn ngữ lập trình hướng đối tượng Javascript Nó được sử dụng để tạo ra một khung nội tuyến iframe vô hình thực hiện theo hành động của con trỏ chuột
Trang 15nhấp chuột đầu tiên, nhờ đó cuộc tấn công được kích hoạt bởi các khung nội tuyến Trong trường hợp này, nạn nhân không còn cách nào khác để lựa chọn các yếu tố khác thực hiện nhiều hơn một hành động trên trang web Tấn công Clickjacking sử dụng Javascript có thể vô hiệu hoá cơ chế bảo vệ của trình duyệt web.
Ngoài ra, thông qua Javascript, tin tặc có thể kiểm soát được vị trí con trỏ chuột và các thao tác click chuột của người dùng Đồng thời có thể thay đổi vị trí một object bất kì trên trang web, khiến người dùng bắt buộc phải click vào những vị trí chứa những liên kết độc hại nằm trên trang web đó mà không hề hay biết Từ đó, tin tặc cũng có thể tạo ra một cuộc tấn công multi-click liền mạch, có nghĩa là sau một số lần click chuột, hacker sẽ ngừng tấn công và trả lại quyền kiểm soát con trot cho người dùng, khiến người dùng không thể nhận ra được
Hình : Nút like trong suốt ở vị trí con trỏ chuột chứa mã Javascript
2.1.3 Tấn công qua lỗ hổng phần mềm
Từ phiên bản 10 của Flash, Adobe đã fix lỗi hổng camera và microphone
có thể khai thác được bằng Clickjacking, tuy nhiên nếu người dùng chưa update thì vẫn có thể bị tấn công Ngoài ra, các phần mềm khác như activeX hay MS SilverLight… vẫn còn tiềm ẩn những nguy cơ bị tấn công Clickjacking
Robert Hansen và Jeremiah Crossman giới thiệu Clickjacking với một ví dụng về “Adobe Flash Player Settings Manager”, bằng cách mở URL:
Trang 16Một trang web trợ giúp về Adobe Flash Player được hiển thị Ngoài ra,
“cài đặt trình quản lý – settings manager” với thẻ đăng ký “cài đặt an ning toàn cầu – Global Security Settings” sẽ tự động mở, nếu người dùng cài đặt Flash
Hình : Bảng điều khiển Adobe Security Settings
Như được mô tả trong bảng điều khiển trên, một trang web có thể truy cập thông tin từ các trang web khác sử dụng một hệ thống an ninh cũ Trong đó
có ba tuỳ chọn, luôn luôn hỏi – always ask, luôn luôn cho phép – always allow, luôn luôn chặn – always deny Do đó, kẻ tấn công sẽ quan tâm tới việc kích hoạt tuỳ chọn “luôn luôn cho phép – always allow” của bảng điều khiển Global Security Settings
Còn ở Flash, nạn nhân sẽ được thu hút vào nút “cho phép – allow” trên một cửa sổ “Flash Player Setting Manager” vô hình, bởi các nút được hiển thị trong bối cảnh khác Trong trường hợp này, Clickjacking có thể truy cập vào trang web của Adobe để kích hoạt camera hoặc microphone
2.1.4 Kết hợpcác cách tấn công trên các lỗi phổ biến như XSS, CSRF
XSS(Cross-Site Scripting) là một trong những kĩ thuật hack website phổ biến nhất hiện nay bằng cách chèn vào url, chèn qua các thanh tìm kiếm hoặc chèn ở bất cứ 1 textbox nào của thẻ HTML, hoặc những đoạn mã script nguy hiểm, từ đó chiếm quyền điều khiển của victim hoặc thực hiện những mệnh lệnh
mà hacker đưa ra Còn CSRF(Cross-Site Request Forgery) là kĩ thuật tấn công
Trang 17vào đó hacker có thể thực thi những thao tác phải yêu cầu sự chứng thực.
Nếu một trang web bị lỗi XSS hay CSRF, hacker có thể sử dụng các cách tấn công trên để lừa người dùng click vào đúng vị trí bị XSS hay CSRF Qua đó,
ta có thể thấy được sự nguy hiểm của Clickjacking
2.1.4.1 Clickjacking và XSS
XSS là một loại tấn công có thể thường thấy trong các ứng dụng web, cũng giống như trường hợp của Clickjacking Khả năng của XSS bao gồm các hành vi trộm cắp dữ liệu, thay đổi diện mạo trực quan của ít nhất một trang web
và phân phối từ chối dịch vụ để làm cho một nguồn tài nguyên máy tính mất tính khả dụng
Cuộc tấn công thường bắt đầu bằng việc kẻ tấn công gửi dữ liệu đầu vào cho một ứng dụng web của một máy chủ web thông qua phương thức GET của HTTP Bước đầu tiên thành công nếu dữ liệu đầu vào này được máy chủ thể hiện đến trình duyệt web Dữ liệu này được mã thành HTML, để tạo ra một tiêu
đề, mã thành JavaScript để ra một cửa sổ cảnh báo Vấn đề chính của các loại hình tấn công XSS là một kẻ tấn công tìm được lỗ hổng trên một trang web và gửi URL, lỗ hổng đó được sử dụng để gửi dữ liệu với phương thức GET lên trình duyệt, một nạn nhân sẽ mở URL với mã của kẻ tấn công rồi sau đó sẽ thực hiện các hành động trên nó
• Eventjacking:
Eventjacking được giả định trong một trang web có tải một hình ảnh Hình ảnh đó được xác định bởi một từ khoá “img”, chứa một thuộc tính “src” với một giá trị, giá trị này được thiết lập bởi tham số “pic” trên thanh địa chỉ của trình duyệt thông qua phương thức HTTP GET Ví dụ, URL sẽ có dạng như sau:http://www.example.org/images/show.php?pic=flower.jpg
Eventjacking cũng được giả định rằng giá trị của các thuộc tính “pic” sẽ được lọc đối với hầu hết các phần bởi máy chủ web với một danh sách đen Các lập trình viên của trang web nên quan tâm đến xử lý sự kiện “Onclick” và dấu ngoặc kép vì cũng có thể là một nguy hiểm của tấn công Ở URL sửa đổi này, có một cửa sổ cảnh báo như là một đầu ra bằng cách nhấp vào hình ảnh Ví dụ URL sau:
http://www.example.org/images/show.php?
pic=flower.jpg”%20onclick=”alert(0)
Trang 18Vấn đề ở đây là nạn nhân cần phải thực hiện một cú nhấp chuột vào hình ảnh Điều này có thể được thực hiện với clickjacking bằng các sử dụng iframe trong suốt như đã trình bày.
Như ví dụ trên, tuỳ thuộc vào lọc XSS, có thể thêm vào xử lý sự kiện
“onclick” lên tất cả các liên kết hoặc toàn bộ văn bản, cung cấp cho kẻ tấn công lựa chọn vượt ra ngài “onclick” Ví dụ như việc thực hiện hành động giữa nhấp chuột và yêu cầu của trang web tiếp theo Eventjacking là kiểu tấn công các sự kiện để mở rộng các chức năng của XSS bằng cách Clickjacking Điều này có thể được sử dụng để đọc các tập tin, có được một mã thông báo CSRF hoặc để thực hiện nhiều hành động nguy hiểm khác bằng cách sử dụng nạn nhân như một máy nhấp chuột tự động
• Classjacking:
CSS cung cấp các thuộc tính “class” như một bộ chọn để tạo kiểu cho một nhóm các phần tử HTML Ở đây, từ khoá “span” có giá trị “too“ và một thẻ giá trị “bar” bên trong thuộc tính “class” Giá trị này có thể được sử dụng để xác định kích thước phông chữ hoặc thuộc tính CSS cụ thể khác
Đầu tiên “script” giữ một thẻ thuộc tính “src” với giá trị http://codejquery.com/jquery-1.4.4.js, nó là một tham chiếu đến tập tin thư viện jQuery tới JavaScript v1.4.4, jQuery là từ viết tắt một thư viện JavaScript nhằm đơn giản hoá tài liệu HTML, xử lý sự kiện, tạo hiệu ứng động và tương tác với Ajax Sau đó, hành động nhấp chuột được thực hiện, jQuery được sử dụng để ràng buộc một sự kiện nhấp chuột với sự kiện JavaScript hoặc để kích hoạt sự kiện trên một phần tử
Trang 19“foo” sau khi nhấp chuột vào một đoạn nội dung của từ khoá “span” Sau khi đóng cửa sổ cảnh báo, một sự kiện nhấp chuột được kích hoạt trên một từ khoá với giá trị “bar” bên trong thuộc tính “class” Tương tự với sự kiện đầu tiên, một cửa sổ cảnh báo xuất hiện với nội dung “bar” Sau khi đóng cửa sổ cảnh báo, trình duyệt sẽ chuyển hướng đến trang web http://www.example.org Nếu có một nhấp chuột vào liên kết www.nds.rub.de và không phải trên nội dung phần văn bản thì một cửa sổ cảnh báo sẽ được hiển thị với các nội dung “bar”, theo sau là một chuyển hướng đến trang www.nds.rub.de mà không phải là trang http://www.example.org Hành vi đó được thực hiện sau thuộc tính “href”.
Tóm lại, có thể kết hợp các hành động khác nhau như một hệ quả của cú nhấp chuột vào một yếu tố bằng các sử dụng thuộc tính “class” của CSS và thư viện jQuery của JavaScript Các cuộc tấn công Clickjacking kết hợp với XSS rất mạnh mẽ khi có thêm các mã JavaScript để xử lý các phần tử của lớp
2.1.4.2 Clickjacking và CSRF
Như thường được biết đến, một giá trị duy nhất trong hình thức của một mã thông báo có thể ngăn chặn một tấn công CSRF hay ít nhất nó có thể được sử dụng để làm cho tấn công này khó khăn hơn Vì lý do này, một mã thông báo như vậy có thể được sử dụng trong một trường mẫu ẩn để truyền tải thông tin với một hình thức cho một máy chủ web
Tồn tại này chỉ một sự khác biệt giữa một cuộc tấn công Clickjacking cơ bản và một cuộc tấn công Clickjacking với CSRF Sự khác biệt này là thay đổi giá trị thuộc tính “src” của các thẻ iframe với mã số để điền thông tin vào trong một hình thức tự động Hình thức có thể được điền theo cách như vậy nếu hình thức
đó hỗ trợ truyền tải các giá trị hình thức thông qua các biến với pương thức GET của HTTP Trong trường hợp này, việc đó là cần thiết để mở một trang web với giá trị sửa đổi trong thanh địa chỉ Tương tự như vậy, có thể dùng các iframe từ khoá để mở một trang web như vậy
Một ví dụ nổi tiếng của cuộc tấn công Clickjacking với CSR là con sâu mạng của trang Twitter.com được công bố tháng 2 năm 2009 Nó được khởi xướng và thực hiện bởi một cuộc tấn công Clickjacking Một tính năng cơ bản của trang Twitter.com là gửi một tin nhắn ngắn đến máy chủ web của Twitter Dạng thông tin này được gửi đến máy chủ web với sự giúp đỡ của một hình thức HTML Một thông báo ngắn có thể được nhập vào một vùng văn bản này với một tin nhắn ngắn là sử dụng thanh địa chỉ của trình duyệt web và nhập vào các thông
Trang 20phương thức GET để điền vào vùng văn bản tự động nếu có một giá trị của thuộc tính “status” Ví dụ về một URL có tính khả thi khi gõ vào thanh địa chỉ của trình duyệt web:
Http://twitter.com/home?status=Don’tClick: http//tinyurl.com/amgzs6
Sau khi yêu cầu của trang web, thông điệp “Don’t Click: http://tinurl.com/amgzs6” sẽ được dán vào vùng văn bản tự động Thông báo này bao gồm văn bản “Don’t Click” và một URL ngắn đề cập đến một trang web của kẻ tấn công Khi một người truy cập của Twitter nhấp vào URL trên, một trang web sẽ được nạp vào chứa một nút “Don’t Click”:
“Don’t Click” để buộc nạn nhân phải bấm vào một phần tử của khung nội tuyến Khung nội tuyến từ khoá của sâu mạng được thể hiện trong đoạn code sau: