Phần Không Tên 7
Chap 12 : Khái niệm cơ bản về PHP - ASP - JSP - HTML
1. PHP
- PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
- Các phiên bản php như: php 3, php 4, php 5, php 6
- Một số mã nguồn sử dụng php như: wordpress, opencart, meganto, vbb, xenforo, mybb.....
2. ASP
ASP.NET là một nền tảng ứng dụng web (web application framework) được phát triển và cung cấp bởi Microsoft, cho phép những người lập trình tạo ra những trang web động, những ứng dụng web và những dịch vụ web. Lần đầu tiên được đưa ra thị trường vào tháng 2 năm 2002 cùng với phiên bản 1.0 của.NET framework, là công nghệ nối tiếp của Microsoft's Active Server Pages(ASP). ASP.NET được biên dịch dưới dạng Common Language Runtime (CLR), cho phép những người lập trình viết mã ASP.NET với bất kỳ ngôn ngữ nào được hỗ trợ bởi.NET language.
3. Servlet
- Servlet là các thành phần máy chủ nhúng trên trình chủ Web server thực hiện xử lý yêu cầu và phát sinh ra các trang Web động trả về máy khách. Để sử dụng được Servlet cần có các trình chủ Java và hỗ trợ triệu gọi Servlet như Apache, JRun, Web Logic ... Mặc dù vậy biên dịch và tạo Sevlet chúng ta chỉ cần đến trình biên dịch JDK mà không cần đến các trình chủ.
- Servlet là trung tâm của công nghệ Web trong Java. Servlet thay thế cho các ứng dụng CGI truyền thống. Muốn hiểu rõ về lập trình Web trong java trước hết nên tìm hiểu rõ cơ chế hoạt động của servlet
4. JSP
- JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một cái tên khác là Java Scripting Preprocessor - tạm dịch là "Bộ tiền xử lý văn lệnh Java" - là một công nghệ Java cho phép các nhà phát triển tạo nội dung HTML, XML hay một số định dạng khác của trang web một cách năng động, trong khi hồi âm yêu cầu của trình khách. Công nghệ này cho phép người ta nhúng mã Java và một số hành động xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang.
- JSP là cách đơn giản hóa hơn cho Servlet. Nếu như đối với Servlet phải viết mã Java và biên dịch bằng tay trước khi sử dụng với trình chủ Web server thì JSP không cần điều này. JSP viết mã Java tương tự Servlet nhưng cho phép trộn lẫn Java với các thẻ HTML để tạo ra Servlet xử lý các yêu cầu mà trình khác gửi đến trang.
- JSP đơn giản và dễ sử dụng hơn Servlet mặc dù sau khi biên dịch và thực thi chúng chỉ là một.
5. HTML
- HTML (tiếng Anh, viết tắt cho HyperText Markup Language, hay là "Ngôn ngữ Đánh dấu Siêu văn bản") là 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. HTML được định nghĩa như là một ứng dụng đơn giản của SGML và được sử dụng trong các tổ chức cần đến các yêu cầu xuất bản phức tạp. HTML đã trở thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì. Phiên bản chính thức mới nhất của HTML là HTML 4.01 (1999). Sau đó, các nhà phát triển đã thay thế nó bằng XHTML. Hiện nay, HTML đang được phát triển tiếp với phiên bản HTML5 hứa hẹn mang lại diện mạo mới cho Web.
- Bằng cách dùng HTML động hoặc Ajax, lập trình viên có thể được tạo ra và xử lý bởi số lượng lớn các công cụ, từ một chương trình soạn thảo văn bản đơn giản – có thể gõ vào ngay từ những dòng đầu tiên – cho đến những công cụ xuất bản WYSIWYG phức tạp.
- HTML không phải là ngôn ngữ lập trình, nó là ngôn ngữ trình bày.
p/s: Ở đây mình chỉ nêu khái niệm cơ bản các bạn có thể tìm hiểu thêm trên google
Chap 13: Hệ điều hành
Hệ điều hành là gì ?
- Hệ điều hành là một phần mềm chạy trên máy tính, dùng để điều hành, quản lý các thiết bị phần cứng và các tài nguyên phần mềm trên máy tính.
- Hệ điều hành đóng vai trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng máy tính, cung cấp một môi trường cho phép người sử dụng phát triển và thực hiện các ứng dụng của họ một cách dễ dàng.
1. UNIX là gì ?
- Unix hay UNIX là một hệ điều hành máy tính viết vào những năm 1960 và 1970 do một số nhân viên của công ty AT&T Bell Labs bao gồm Ken Thompson, Dennis Ritchie và Douglas McIlroy. Từ góc nhìn người dùng chuyên nghiệp và lập trình viên, hệ thống Unix có đặc điểm là thiết kế theo module, đôi khi còn được gọi là triết lý Unix, nghĩa là hệ điều hành cung cấp một tập hợp các công cụ đơn giản, và mỗi công cụ chỉ thực hiện những chức năng giới hạn và được định nghĩa rõ ràng,với hệ thống file hợp nhất là phương tiện chính để giao tiếp và phần lập trình vỏ và ngôn ngữ lệnh kết hợp các công cụ để thực hiện các chức năng phức tạp.
- Unix có thể chạy trên nhiều loại máy tính khác nhau, từ những máy tính cá nhân cho đến các máy chủ dịch vụ. Nó là một hệ điều hành đa nhiệm (có thể cùng lúc thực hiện nhiều nhiệm vụ) hỗ trợ một cách lý tưởng đối với các ứng dụng nhiều người dùng. Unix được viết bằng ngôn ngữ lập trình C, một ngôn ngữ rất mạnh và mềm dẻo. Unix hỗ trợ các ứng dụng mạng và hỗ trợ nhiều môi trường lập trình khác nhau. Với hàng trăm lệnh và một số lượng rất lớn các tùy chọn, Unix thực sự là một khó khăn đối với người mới bắt đầu. Với sự phát triển của các shell Unix hệ điều hành này đã trở nên phổ dụng hơn trong lĩnh vực điện toán.
2. Linux là gì ?
- Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành. Nó có lẽ là một ví dụ nổi tiếng nhất của phần mềm tự do và của việc phát triển mã nguồn mở.
- Một cách chính xác, thuật ngữ "Linux" được sử dụng để chỉ Nhân Linux, nhưng tên này được sử dụng một cách rộng rãi để miêu tả tổng thể một hệ điều hành giống Unix (còn được biết đến dưới tên GNU/Linux) được tạo ra bởi việc đóng gói nhân Linux cùng với các thư viện và công cụ GNU, cũng như là các bản phân phối Linux. Thực tế thì đó là tập hợp một số lượng lớn các phần mềm như máy chủ web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ liệu, các môi trường làm việc desktop như GNOME và KDE, và các ứng dụng thích hợp cho công việc văn phòng như OpenOffice, LibreOffice.
- Một hệ thống dựa trên Linux là một hệ điều hành kiểu Unix được mô-đun hóa. Các thiết kế của hệ thống này dựa trên một phần của thiết kế Unix nguyên thủy (ra đời vào khoảng 1970 đến 1980), nhưng có sửa đổi lại cho phù hợp. Nhân Linux là hạt nhân linux, công việc của nó là điều khiển tuyến trình, mạng, các thiết bị ngoại vị và việc truy hệ thống tập tin. Các trình điều khiển thiết bị cũng được tích hợp trực tiếp vào nhân như một mô-đun được tải lúc hệ thống chạy.
3. Windows là gì ?
- Microsoft Windows là tên của các dòng phần mềm hệ điều hành độc quyền của hãng Microsoft. Lần đầu tiên Microsoft giới thiệu một môi trường điều hành mang tên Windows (Cửa sổ) là vào tháng 11 năm 1985 với những tính năng thêm vào Hệ điều hành đĩa từ Microsoft giao diện dụng hộ đồ hoạ (Graphical User Interfaces, gọi tắt là GUI) - đang được sự quan tâm cao vào thời điểm này đồng thời để cạnh tranh với hãng Apple Inc.
Chap 14: Telnet - SSH
1. Telnet là gì
- TELNET (viết tắt của TErminaL NETwork) là một giao thức mạng (network protocol) được dùng trên các kết nối với Internet hoặc các kết nối tại mạng máy tính cục bộ LAN.
- TELNET thường được dùng để cung cấp những phiên giao dịch đăng nhập, giữa các máy trên mạng Internet, dùng dòng lệnh có tính định hướng người dùng. Tên của nó có nguồn gốc từ hai chữ tiếng Anh "telephone network" (mạng điện thoại), vì chương trình phần mềm được thiết kế, tạo cảm giác như một thiết bị cuối được gắn vào một máy tính khác.
- TELNET là một giao thức khách-chủ (client-server protocol), dựa trên nền TCP, và phần khách (người dùng) thường kết nối vào cổng 23 với một máy chủ, nơi cung cấp chương trình ứng dụng thi hành các dịch vụ. Người ta cũng có thể sử dụng chương trình ứng dụng TELNET, để thiết lập một kết nối TCP tương tác của giao thức, và đồng thời còn có thể dùng nó để định nghĩa những thực thi mở rộng. Rất nhiều mở rộng của giao thức đã hoàn thành và một số những thực thi trong đó đã được chấp nhận là tiêu chuẩn của Internet.
2. SSH là gì
- SSH (tiếng Anh: Secure Shell) là một giao thức mạng dùng để thiết lập kết nối mạng một cách bảo mật. SSH hoạt động ở lớp trên trong mô hình phân lớp TCP/IP. Các công cụ SSH (như là OpenSSH,...) cung cấp cho người dùng cách thức để thiết lập kết nối mạng được mã hoá để tạo một kênh kết nối riêng tư. Hơn nữa tính năng tunneling của các công cụ này cho phép chuyển tải các giao vận theo các giao thức khác. Do vậy có thể thấy khi xây dựng một hệ thống mạng dựa trên SSH, chúng ta sẽ có một hệ thống mạng riêng ảo VPN đơn giản.
- SSH là một chương trình tương tác giữa máy chủ và máy khách có sử dụng cơ chế mã hoá đủ mạnh nhằm ngăn chặn các hiện tượng nghe trộm, đánh cắp thông tin trên đường truyền. Các chương trình trước đây: telnet, rlogin không sử dụng phương pháp mã hoá. Vì thế bất cứ ai cũng có thể nghe trộm thậm chí đọc được toàn bộ nội dung của phiên làm việc bằng cách sử dụng một số công cụ đơn giản. Sử dụng SSH là biện pháp hữu hiệu bảo mật dữ liệu trên đường truyền từ hệ thống này đến hệ thống khác.
3. Cách bật telnet trên win 7, 8
Bình thường khi bạn gõ lệnh telnet trên win 7, 8 sẽ nhận được thông báo
'telnet' is not recognized as an internal or external command
Để kích hoạt telnet các bạn làm như sau:
Vào Start > Control Panel sau đó làm như hình:
Chọn xong bạn nhấp OK để tiến hành cài đặt.
Test thử xem sao
Chap 15: Ping
Ping, viết tắt của Packet Internet Grouper (Groper), là một công cụ cho mạng máy tính sử dụng trên các mạng TCP/IP (chẳng hạn như Internet) để kiểm tra xem có thể kết nối tới một máy chủ cụ thể nào đó hay không, và ước lượng khoảng thời gian trễ trọn vòng để gửi gói dữ liệu cũng như tỉ lệ các gói dữ liệu có thể bị mất giữa hai máy. Công cụ này thực hiện nhiệm vụ trên bằng cách gửi một số gói tin ICMP đến máy kia và lắng nghe trả lời.
Kết xuất của một lệnh ping đơn giản
Kết xuất của ping thông thường bao gồm kích cỡ gói dữ liệu, địa chỉ host truy vấn, dãy số ICMP, thời gian sống (time to live), thời gian trễ trọn vòng (round-trip time), đơn vị thời gian là miligiây (1/1000 của giây), và thời gian dưới 10 giây thường có độ chính xác thấp.
Dưới đây là một kết xuất đơn giản khi ping google
Một số lệnh Ping thường dùng
Ping đến ISP:
ping <IP DNS của ISP>
Ví dụ:
FPT: ping 210.245.31.130
Viettel: ping 203.113.131.1
VNN: ping 203.162.4.190
Ping thử card mạng:
ping 127.0.0.1
hoặc:
ping localhost
hoặc:
ping ip <chính ip máy>
Biết thêm chi tiết: Start ---> Run ---> cmd
ping /?
Các tham số thường được sử dụng của lệnh ping
ping <máy chủ> [-t], không xác định thời gian dừng của lệnh ping. Ví dụ: ping google.com.vn -t
ping <máy chủ> [-l size] với size là dung lượng gói tin (bytes). Ví dụ: ping google.com.vn -l 256
ping <máy chủ> [-n count] với count là số lần thực hiện lệnh ping. Ví dụ: Ping 130.94.122.195 -n 10
Bất cứ lúc nào bạn cũng có thể dừng lệnh ping với tổ hợp phím [Ctrl + C]
Các thông số nhìn thấy trong Command Prompt của Windows với giá trị mô tả lại như sau
Request time out: thực hiện gửi gói thành công nhưng không nhận được gói phản hồi.
Destination host unreachable: đích đến không tồn tại hoặc đang cô lập.
Reply from 203.162.4.190 byte=32 time <1ms TTL 124: Gửi gói đến địa chỉ IP: 203.162.4.190 với độ dài gói 32 byte, thời gian phản hồi dưới 1 mili giây, TTL (time to live - vòng đời gói) 124. Phản ánh trạng thái gói gửi và tín hiệu phản hồi.
+ Ngoài ra lệnh "Ping" còn xem như là cách nhanh chóng để biết địa chỉ IP thực của một Website ngoài Internet.
+ Lệnh Ping thực hiện gửi 1 gói tin bằng giao thức ICMP thông qua Port Number 7 TCP/UDP
Chap 16: cookie
Cookie là một dạng bản ghi được tạo ra và lưu lại trên trình duyệt khi người dùng truy cập một website. Chúng là "bạn" nhưng cũng có thể là "thù" với người lướt web.
Bài viết của các chuyên gia của công ty bảo mật CMC InfoSec sẽ giới thiệu những thông tin người dùng cần biết để nhận thức rõ vấn đề riêng tư và bảo mật, quan trọng là phải hiểu được mục đích của cookie.
Bạn có thể bắt gặp cookie của trình duyệt gần như khắp mọi nơi mỗi khi lướt web. Hiện nay, người dùng đang tranh cãi về bản chất của những tập tin này, có người cho rằng các cookie hứa hẹn một web thân thiện hơn, một số khác lại cho rằng chúng mang một mối hiểm họa đe dọa đến sự riêng tư cá nhân.
Cookie là gì?
Cookie là một bộ nhắc nhỏ mà website lưu trữ ở trên máy tính của bạn có thể định danh cho bạn. Khi bạn truy cập và một trang web, website này sẽ đặt một cookie tại trên máy đó, thay cho việc liên tục hỏi bạn các thông tin như nhau, chương trình trên website có thể sao lưu thông tin vào một cookie mà khi cần thông tin sẽ đọc cookie. Nếu không có cookie bạn sẽ phải nhập lại thông tin của mình trên mỗi màn hình web. Thông tin duy nhất mà cookie lưu trữ là thông tin mà bản thân bạn chia sẻ với website tạo ra cookie. Một website không thể đọc cookie của một công ty khác trừ khi công ty kia cung cấp cho công ty đó chứa khóa giải thích ý nghĩa của cookie.
Cookie có các loại sau:
- "Session Cookie": được lưu trong bộ nhớ của máy tính chỉ trong phiên duyệt web và sẽ tự động xóa khỏi máy tính khi trình duyệt đóng lại. Những cookie này thường được lưu trữ dưới dạng ID. Nó cho phép bạn nhanh chóng chuyển tới một trang mới mà không cần đăng nhập lại. Chúng được sử dụng rộng rãi ở những trang web thương mại. Ví dụ: để theo dõi các bản ghi mà người tiêu dùng thêm vào giỏ hàng
- "Persistent Cookie": được lưu trữ trên ổ cứng của máy tính và không bị xóa khi trình duyệt đóng lại. Những cookie này có thể thiết lập những sở thích của bạn đối với mỗi trang web cụ thể khi bạn quay lại, cho phép những ưu đãi sẽ được sử dụng trong những lần trình duyệt tiếp theo.
"Persistent Cookie"có thể được sử dụng để nhận dạng bạn, phân tích hành vi của bạn khi lướt web. Chúng cũng có thể được sử dụng để cung cấp thông tin về số lượng khách hàng truy cập, thời gian trung bình cho một trang cụ thể, đăng nhập thông tin được lưu trữ trong tài khoản hiệu suất của web.
- Cookie của một hãng thứ 3: Cookie cho phép các công ty tiếp thị hoặc quảng cáo
Lợi ích của cookie
Các cookie được sử dụng trong các dịch vụ thương mại điện tử để hỗ trợ chức năng mua hàng trực tuyến, máy chủ có thể theo dõi khách hàng và sao lưu các giao dịch của họ khi họ di chuyển trong site
Đối với những doanh nghiệp
Doanh nghiệp có thể biết được một số thồng tin về những người đang truy cập web của mình, biết được mức độ thường xuyên truy cập cũng như thời gian chi tiết truy cập.
Doanh nghiệp có thể biết được sự cảm nhận của bạn khi duyệt web đó. Lưu trữ thông tin cá nhân của khách hàng, những thông tin này sẽ giúp khách hàng khi vào trang web đó lần sau sẽ thuận tiện hơn.
Doanh nghiệp sẽ dùng cookie để điều chỉnh các quảng cáo của mình, cung cấp cho biết những quảng cáo nào được xem nhiều nhất từ đó đưa ra biện pháp điều chỉnh hoặc thiết kế phù hợp.
Đối với người dùng
Chúng làm cho web tiện lợi hơn, người dùng có thể truy cập vào web nhanh hơn không phải nhập lại các thông tin nhiều lần.
Những rủi ro mà Cookie mang lại
Mặc dù bản thân cookie thường trú rất hữu ích và thuận tiện nhưng kèm theo đó là những rủi ro có liên quan được lưu trữ.
Cookie ảnh hưởng tới sự riêng tư của người dùng. cũng như rò rỉ thông tin cá nhân. Cookie theo dõi người dùng đã ghé thăm những nơi nào và đã xem những gì trên web. Bản thân các cookie không thể dùng để phát tán virus, mã độc. Tuy nhiên nó có thể thu thập khá nhiều thông tin cá nhân của bạn nhất là những thông tin bạn cung cấp trên trang web như thông tin thẻ tín dụng... nên cookie có thể làm tăng nguy cơ mất thông tin đăng nhập nếu như người khác sử dụng máy tính của bạn, hoặc trường hợp máy tính của bạn bị xâm nhập, đánh cắp.
Bạn nên làm thế nào?
Để đảm bảo được tính bảo mật thông tin khi truy cập web, CMC InfoSec xin đưa ra một số lời khuyên đối với người dùng:
Thiết lập tùy chọn cookie bằng cách sử dụng cài đặt chế độ bảo mật cho trình duyệt
Xóa cookie định kỳ trên máy tính:
Đối với IE: Tool-> Internet Options -> Nhấp Delete -> tại mục Cookies chọn Delete Cookies
Đối với Firefox: Chọn Tool -> Options -> tab Privacy-> tìm mục Cookies và nhấp Clear...
"Session Cookie" được tự động xóa khi hoàn thành một giao dịch, bằng việc xóa cookie của bạn theo định kỳ sẽ làm giảm nguy cơ của việc lạm dụng thông tin vô tình hay cố ý lưu trữ trong cookie
Không cho phép cookie được lưu trữ thông tin đăng nhập
Giữ cho hệ thống trình duyệt của bạn được tự động update các bản vá lỗi, cập nhật phần mềm chống phần mềm giả mạo, chỉ truy cập vào những trang web đáng tin cậy
Nếu bạn muốn chia sẻ dữ liệu trực tuyến của bạn với ai đó, đặt thiết lập bảo mật. Lưu ý điều này có thể ảnh hưởng tới việc duyệt web
Thận trọng khi chia sẻ máy tính của bạn, nếu bạn lưu trữ thông tin sử dụng cookie (username, password..) các cá nhân sử dụng máy tính của bạn có thể sẽ truy cập vào tài khoản của bạn và thực hiện các giao dịch qua tên bạn
Nên sử dụng các tiện ích để xóa bỏ các cookie ra khỏi đĩa cứng như IEClean hay NSClean....
Chap 17: phishing
1. Phishing
Phishing là một hình thức gian lận để có những thông tin nhạy cảm như username, password, credit card ... bằng cách giả mạo như là một thực thể đáng tin cậy trong các giao tiếp trên mạng. Quá trình giao tiếp thường diễn ra tại các trang mạng xã hội nổi tiếng, các trang web đấu giá, mua bán hàng online...mà đa số người dùng đều không cảnh giác với nó. Phishing sử dụng email hoặc tin nhắn tức thời, gửi đến người dùng, yêu cầu họ cung cấp thông tin cần thiết. Người dùng vì sự chủ quan của mình đã cung cấp thông tin cho một trang web, trông thì có vẽ hợp pháp, nhưng lại là trang web giả mạo do các hacker lập nên.
Phishing là một ví dụ của Social Engineering được sử dụng để lừa đảo người dùng và khai thác lổ hổng trong việc sử dụng công nghệ kém an ninh của các website hiện hành. Những nỗ lực mạnh mẽ trong thời gian qua để chống lại Phising bao gồm việc ứng dụng các công nghệ an ninh mới đến việc đào tạo cho nhân viên, và nâng cao ý thức cộng đồng.
Kỹ thuật lừa đảo được mô tả chi tiết vào năm 1987, và những ghi chép đầu tiên với thuật ngữ Phising Nguồn gốc từ Phishing là kết hợp giữa 2 từ Fish - Fishing và Phreaking. Fishing nghĩa gốc là "câu cá" nhưng đuợc hiểu là "câu" các thông tin của người dùng. Mặt khác, do tính chất của nó cũng gần giống kiểu tấn công Phreaking (Chữ "Ph" duợc các hacker thay thế cho chữ "F" dể tạo thành phishing do cách phát âm gần giống) - đuợc biết đến lần đầu tiên bởi hacker John Draper (biệt danh aka Captain Crunch) khi sử dụng "Blue Box" để tấn công hệ thống diện thoại ở Mỹ nhằm thực hiện các cuộc gọi đường dài miễn phí hoặc sử dụng đường điện thoại của nguời khác thực hiện các cuộc gọi bất hợp pháp,... vào đầu thập niên 1970 - tên gọi khác là Phone Phreaking.
Theo thời gian, những cuộc tấn công phishing không còn chỉ nhằm vào các tài khoản Internet của AOL mà đã mở rộng đến nhiều mục tiêu, đặc biệt là các ngân hàng trực tuyến, các dịch vụ thương mại điện tử, thanh toán trên mạng,... và hầu hết các ngân hàng lớn ở Mỹ, Anh, Úc hiện đều bị tấn công bởi phishing. Vì cũng nhắm vào mục tiêu đánh cắp credit card nên nó còn được gọi là Carding.
Do cách tấn công đơn giản nhưng lại hiệu quả cao nên phishing nhanh chóng trở thành một trong những kiểu lừa dảo phổ biến nhất trên mạng – có đến gần 70% các vụ tấn công trên mạng năm 2003 có liên quan đến phishing (nguồn: Antiphishing.org).
2. Những yếu tố để một cuộc tấn công Phishing thành công.
- Sự thiếu hiểu biết
Sự thiếu hiểu biết về hệ thống mạng và máy tính đã giúp cho các hacker khai thác những thông tin nhạy cảm.
Bạn cần hiểu rõ quá trình hoạt động của internet, hoặc ít hơn hiểu về cách thức truy cập một website an toàn. Điển hình nhất bạn cần phải biết việc bấm vào nút Save Password khi bạn truy cập web tại các điểm công cộng sẽ làm tăng nguy cơ bị xâm phạm tài khoản cá nhân. Đặc biệt đối với những người thường xuyên mua bán, thanh toán qua mạng, thì cần phải hiểu rõ việc cung cấp credit card là rất quan trọng, và biết được khi nào nên cung cấp, khi nào không. Bạn cũng nên tìm hiểu sơ về các giao thức mạng, và phân biệt được giao thức nào là an toàn. Điển hình là bạn đừng bao giờ giao dịch trực tuyến với giao thức truy cập web là http, mà phải đảm bảo an toàn với giao thức https.
Những cửa sổ cảnh báo của windows về mức độ an toàn của việc truy cập thông tin, điều mà mọi người thường hay bỏ qua, lại chính là nguy cơ biến bạn thành nạn nhân.
Thói quen duyệt mail không tốt cũng làm cho bạn gặp nhiều nguy hiểm. Có vài lời khuyên cho bạn, là cẩn thận với những email không có địa chỉ người gửi rõ ràng, không có tiêu đề, hoặc là nội dung có tính kích động trí tò mò.
- Nghệ thuật đánh lừa ảo giác
Nghệ thuật của sự đánh lừa ảo giác chính là làm cho nạn nhân không còn phân biệt được đâu là thật đâu là giả. Chắc hẳn bạn cũng biết trò chơi tìm những điểm khác nhau giữa hai tấm hình. Kỹ thuật đánh lừa ảo giác sẽ tạo ra một trang web, hoặc một lá thư...những thứ mà ngày nào bạn cũng truy cập, nó giống như đến mức gần như người ta không thể phát hiện ra sự giả mạo.
Lời khuyên dành cho bạn là cẩn thận với những trang web mà mình thường truy cập, đặc biệt là những email của ngân hàng, của những người thân, mà nó lại yêu cầu chúng ta cung cấp thông tin. Bởi những trang đó có nguy cơ giả mạo rất cao. Một ý thứ hai, là bạn hãy tự ghõ địa chỉ trang web vào trình duyệt, thay vì click vào đường link từ trang web khác.
- Không chú ý đến những chỉ tiêu an toàn
Như đã nói ở trên, những cảnh báo thường bị người dùng bỏ qua, chính điều đó đã tạo điều kiện cho hacker tấn công thành công hơn. Người dùng cũng thưởng không chú ý đến những chỉ tiêu an toàn. Ví dụ khi bạn truy cập một website thanh toán trực tuyến, bạn phải hiểu những quy định an toàn của website kiểu này, như thông tin Cerificate, nhà cung cấp, nội dung, và nhiều quy định khác. Windows thường nhận biết những quy định toàn này, và nếu không đủ nó sẽ cảnh báo cho bạn. Tuy nhiên, vài người dùng cảm thấy phiền phức với những cảnh báo này và đã tắt chức năng này đi, và thế là bạn trở thành nạn nhân.
Thỉnh thoảng, chúng ta cũng nên dành thời gian cho việc đọc tin tức về thế giới hacker, để biết được những thủ đoạn lừa lọc mới phát minh, từ đó có ý thức về sự cảnh giác an toàn hơn.
Chap 18 : Khái niệm cơ bản SQL Injection
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp.
SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,... trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase...
I. Các dạng lỗi thường gặp
1. Không kiểm tra ký tự thoát truy vấn
Đây là dạng lỗi SQL injection xảy ra khi thiếu đoạn mã kiểm tra dữ liệu đầu vào trong câu truy vấn SQL. Kết quả là người dùng cuối có thể thực hiện một số truy vấn không mong muốn đối với cơ sở dữ liệu của ứng dụng. Dòng mã sau sẽ minh họa lỗi này:
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
Câu lệnh này được thiết kế để trả về các bản ghi tên người dùng cụ thể từ bảng những người dùng. Tuy nhiên, nếu biến "userName" được nhập chính xác theo một cách nào đó bởi người dùng ác ý, nó có thể trở thành một câu truy vấn SQL với mục đích khác hẳn so với mong muốn của tác giả đoạn mã trên. Ví dụ, ta nhập vào giá trị của biến userName như sau:
a' or 't'='t
Khiến câu truy vấn có thể được hiểu như sau:
SELECT * FROM users WHERE name = 'a' OR 't'='t';
Nếu đoạn mã trên được sử dụng trong một thủ tục xác thực thì ví dụ trên có thể được sử dụng để bắt buộc lựa chọn một tên người dùng hợp lệ bởi 't'='t' luôn đúng. Trong khi hầu hết các SQL server cho phép thực hiện nhiều truy vấn cùng lúc chỉ với một lần gọi, tuy nhiên một số SQL API như mysql_query của php lại không cho phép điều đó vì lý do bảo mật. Điều này chỉ ngăn cản tin tặc tấn công bằng cách sử dụng các câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi các từ trong cú pháp truy vấn. Các giá trị của biến "userName" trong câu truy vấn dưới đây sẽ gây ra việc xoá những người dùng từ bảng người dùng cũng tương tự như việc xóa tất cả các dữ liệu được từ bảng dữ liệu (về bản chất là tiết lộ các thông tin của mọi người dùng), ví dụ này minh họa bằng một API cho phép thực hiện nhiều truy vấn cùng lúc:
a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't
Điều này đưa tới cú pháp cuối cùng của câu truy vấn trên như sau:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE 't' = 't';
2. Xử lý không đúng kiểu
Lỗi SQL injection dạng này thường xảy ra do lập trình viên hay người dùng định nghĩa đầu vào dữ liệu không rõ ràng hoặc thiếu bước kiểm tra và lọc kiểu dữ liệu đầu vào. Điều này có thể xảy ra khi một trường số được sử dụng trong truy vấn SQL nhưng lập trình viên lại thiếu bước kiểm tra dữ liệu đầu vào để xác minh kiểu của dữ liệu mà người dùng nhập vào có phải là số hay không. Ví dụ như sau:
statement:= "SELECT * FROM data WHERE id = " + a_variable + ";"
Ta có thể nhận thấy một cách rõ ràng ý định của tác giả đoạn mã trên là nhập vào một số tương ứng với trường id - trường số. Tuy nhiên, người dùng cuối, thay vì nhập vào một số, họ có thể nhập vào một chuỗi ký tự, và do vậy có thể trở thành một câu truy vấn SQL hoàn chỉnh mới mà bỏ qua ký tự thoát. Ví dụ, ta thiết lập giá trị của biến a_variable là:
1;DROP TABLE users
khi đó, nó sẽ thực hiện thao tác xóa người dùng có id tương ứng khỏi cơ sở dữ liệu, vì câu truy vấn hoàn chỉnh đã được hiểu là:
SELECT * FROM DATA WHERE id=1;DROP TABLE users;
3. Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu
Đôi khi lỗ hổng có thể tồn tại chính trong phần mềm máy chủ cơ sở dữ liệu, như là trường hợp hàm mysql_real_escape_string() của các máy chủ MySQL. Điều này sẽ cho phép kẻ tấn công có thể thực hiện một cuộc tấn công SQL injection thành công dựa trên những ký tự Unicode không thông thường ngay cả khi đầu nhập vào đang được thoát.
4. Blind SQL injection
Lỗi SQL injection dạng này là dạng lỗi tồn tại ngay trong ứng dụng web nhưng hậu quả của chúng lại không hiển thị trực quan cho những kẻ tấn công. Nó có thể gây ra sự sai khác khi hiển thị nội dung của một trang chứa lỗi bảo mật này, hậu quả của sự tấn công SQL injection dạng này khiến cho lập trình viên hay người dùng phải mất rất nhiều thời gian để phục hồi chính xác từng bit dữ liệu. Những kẻ tấn công còn có thể sử dụng một số công cụ để dò tìm lỗi dạng này và tấn công với những thông tin đã được thiết lập sẵn.
5. Thay đổi giá trị điều kiện truy vấn
Dạng lỗi này khiến cho kẻ tấn công có thể thay đổi giá trị điều kiện trong câu truy vấn, làm sai lệch sự hiển thị của một ứng dụng chứa lỗi này.
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1;
Sẽ hiển thị một trang một cách bình thường, trong khi:
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2;
sẽ hiển thị một nội dung khác, hoặc không hiển thị gì nếu ứng dụng web có chứa lỗi SQL injection dạng này. Lỗ hổng dạng này còn cho phép tin tặc không chỉ gây ảnh hưởng tới bảng hay dữ liệu hiện tại mà còn ảnh hưởng tới những dữ liệu hay bảng khác phụ thuộc vào nội dung của dữ liệu hay bảng hiện tại.
6. Điều kiện lỗi
Lỗi SQL injection dạng này dẫn tới việc buộc cơ sở dữ liệu chỉ được phép đánh giá khi mà giá trị của câu lệnh WHERE là đúng. Ví dụ:
SELECT 1/0 FROM users WHERE username='Ralph';
Phép chia cho 0 chỉ được đánh giá là lỗi khi mà người dùng có tên "Ralph" tồn tại trong cơ sở dữ liệu.
7. Thời gian trễ
Lỗi SQL injection dạng này tồn tại khi thời gian xử lý của một hay nhiều truy vấn SQL phụ thuộc vào dữ liệu logic được nhập vào hoặc quá trình xử lý truy vấn của SQL engine cần nhiều thời gian. Tin tặc có thể sử dụng lỗi SQL injection dạng này để xác định thời gian chính xác mà trang cần tải khi giá trị nhập vào là đúng.
II. Một số dạng tấn công thường gặp với các ứng dụng web
Có bốn dạng tấn công thường gặp bao gồm: vượt qua kiểm tra lúc đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures
1. Dạng tấn công vượt qua kiểm tra lúc đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web. Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp. Ví dụ, trong trường hợp sử dụng ASP, người ta có thể dùng 2 trang: 1 trang HTML để hiển thị Form nhập liệu và 1 trang ASP để xử lý thông tin nhập vào từ phía người dùng như sau:
- Trang nhập liệu: login.htm
<form>
Username: <input><br />
Password: <input><br />
<input>
</form>
- Trang xử lý nhập liệu: execlogin.asp
<%
Dim vUsrName, vPassword, objRS, strSQL
vUsrName = Request.Form("fUSRNAME")
vPassword = Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
If (objRS.EOF) Then
Response.Write "Invalid login."
Else
Response.Write "You are logged in as " & objRS("USR_NAME")
End If
Set objRS = Nothing %>
Chỗ sơ hở trong đoạn mã xử lý nhập liệu trên nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép tin tặc có thể điều khiển câu truy vấn sẽ được thực hiện. Ví dụ, nếu người dùng nhập chuỗi trong ngoặc sau vào trong cả 2 ô nhập liệu username/password của trang login.htm là:('OR='). Lúc này, câu truy vấn sẽ được gọi thực hiện là:
SELECT * FROM T_USERS WHERE USR_NAME =''OR''='' AND USR_PASSWORD= ''OR''=''
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ.
2. Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Ví dụ, trong các trang tìm kiếm. Các trang này cho phép người dùng nhập vào các thông tin tìm kiếm như Họ, Tên, ... Đoạn mã thường gặp là:
<%
Dim vAuthorName, objRS, strSQL
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " & _ vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
...
Set objRS = Nothing %>
Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập vào trường tên tác giả bằng chuỗi giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*)
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa. Giả sử đoạn mã nhập vào là:
' DROP TABLE T_AUTHORS --
Câu truy vấn sẽ thực hiện việc xóa bảng.
3. Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:
INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three')
Nếu đoạn mã xây dựng câu lệnh SQL có dạng:
<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _ & strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
...
Set objRS = Nothing %>
Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như:
' + (SELECT TOP 1 FieldName FROM TableName) + '
Lúc này câu truy vấn sẽ là:
INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')
Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là:
SELECT TOP 1 FieldName FROM TableName
4. Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa'.
Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: '; EXEC xp_cmdshell 'cmdd.exe dir C: '. Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.
Chap 19: Khái niệm cơ bản về XSS ( Cross Site Scripting)
XSS (Cross Site Scripting) là một kiểu tấn công cho phép hacker chèn những đoạn script độc hại (thông thường là javascript hoặc HTML) vào website và sẽ được thực thi ở phía người dùng (trong trình duyệt của người dùng). Đối với XSS, người bị tấn công là người dùng chứ không phải website, hacker có thể dùng XSS để gửi những đoạn script độc hại tới một người dùng bất kỳ, và trình duyệt của người dùng sẽ thực thi những đoạn script đó và gửi về cho hacker những thông tin của người dùng thông qua email hoặc server do hacker định sẵn từ trước.
1. Mục đích của tấn công XSS
Phụ thuộc vào mục đích của hacker, những đoạn Javascript được chèn vào để lấy những thông tin như:
Cookie: hacker có thể lấy được cookie của người dùng và dùng những thông tin trong cookie để giả mạo phiên truy cập hoặc lấy những thông tin nhạy cảm khác được lưu trong cookie.
Keylogging: hacker có thể ghi lại những thao tác gõ phím của người dùng bằng cách sử dụng sự kiện addEventListener trong Javascript và gửi tất cả những thao tác gõ phím đó về cho hắn để thực hiện những mục đích như đánh cắp các thông tin nhạy cảm, lấy mật khẩu truy cập website hoặc mã số thẻ tín dụng...
Phishing: hacker có thể thay đổi giao diện của website bằng cách thay đổi cấu trúc HTML trong trang web để đánh lừa người dùng. Hacker có thể tạo ra những form đăng nhập giả nhằm lừa người dùng đăng nhập vào để đánh cắp mật khẩu.
2. Các dạng tấn công XSS
Trước đây, XSS chỉ được chia thành 2 dạng gồm Persistent và Non-Persistent. Vào năm 2005, người ta đã thêm vào một dạng tấn công XSS khác, đó là DOM-based XSS. Vì vậy XSS có thể được chia thành 3 dạng sau đây:
Persistent XSS (hay còn gọi là Stored XSS)
Non-Persistent XSS (hay còn gọi là Reflected XSS)
DOM-based XSS
2.1. Persistent XSS (Stored XSS)
Stored XSS là dạng tấn công mà hacker chèn trực tiếp các mã độc vào cơ sở dữ liệu của website. Dạng tấn công này xảy ra khi các dữ liệu được gửi lên server không được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu. Khi người dùng truy cập vào trang web này thì những đoạn script độc hại sẽ được thực thi chung với quá trình load trang web.
Dạng tấn công bằng Stored XSS được mô tả như sau
Như hình trên, ta có thể thấy được quá trình tấn công như sau
- Trước tiên, hacker sẽ khai thác lỗi Stored XSS trên website bằng cách tìm những form (khung đăng ký, khung comment, khung liên hệ ...) không được kiểm tra kỹ dữ liệu đầu vào và tiến hành chèn các đoạn mã độc vào cơ sở dữ liệu.
- Sau đó khi người dùng truy cập vào trang web có chứa dữ liệu liên quan đến cơ sở dữ liệu này thì ngay lập tức, các đoạn script độc hại sẽ được chạy chung với trang web.
- Khi các đoạn script được thực thi, tuỳ vào mục đích của hacker, các đoạn script sẽ gửi về cho hacker những thông thông tin như cookie, session token .... đến đây, coi như quá trình tấn công của hacker đã thành công.
2.2. Non-Persistent XSS (Reflected XSS)
Reflected XSS là dạng tấn công thường gặp nhất trong các loại hình XSS. Với Reflected XSS, hacker không gửi dữ liệu độc hại lên server nạn nhân, mà gửi trực tiếp link có chứa mã độc cho người dùng, khi người dùng click vào link này thì trang web sẽ được load chung với các đoạn script độc hại. Reflected XSS thường dùng để ăn cắp cookie, chiếm session,... của nạn nhân hoăc cài keylogger, trojan ... vào máy tính nạn nhân.
Dạng tấn công bằng Reflected XSS được mô tả như sau
Mô hình mô tả dạng tấn công Reflected XSS
Như hình trên, ta có thể thấy được quá trình tấn công như sau
- Trước tiên, hacker sẽ gửi cho nạn nhân một đường link có chứa mã độc hại đi kèm, ví dụ
http://victim.com/index.php?id=<script>alert(document.cookie)</script>
nhưng đường link trên sẽ dễ khiến nạn nhân chú ý và sẽ nghi ngờ, nên khi gửi đường link trên cho nạn nhân, hacker có thể sẽ mã hoá nó thành những ký tự lạ khó đọc, ví dụ
http%3A%2F%2Fvictim.com%2Findex.php%3Fid%3D%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E
như vậy, nạn nhân sẽ không nghi ngờ đường link lạ, và click vào link
- Khi nạn nhân click vào đường link được hacker gửi, trình duyệt sẽ load trang web và thực thi các đoạn script kèm theo, sau đó gửi về cho hacker những thông tin của nạn nhân.
2.3. DOM-based XSS
DOM-based XSS là một dạng tấn công XSS làm thay đổi cấu trúc của trang web bằng cách thay đổi cấu trúc HTML. Đối với dạng tấn công này, hacker sẽ chèn các đoạn script nhằm làm thay đổi giao diện mặc định của trang web thành một giao diện giả, ví dụ như tạo ra form đăng nhập giả và dụ người dùng đăng nhập để chiếm mật khẩu của họ. DOM-based XSS là một biến thể của Persistent XSS và Non-Persistent XSS.
Để hiểu rõ hơn về DOM-based XSS chúng ta cùng xem xét ví dụ sau:
Ví dụ ta có một URL như sau http://www.victim.com/hello.php
<!DOCTYPE html>
<html>
<body>
<?php if(isset($_GET("name"))) { echo "Hello " . $_GET["name"]; }?>
</body>
</html>
Như ta thấy, đoạn code trên dùng để hiện thị nội dung chào mừng người dùng khi người dùng được chuyển hướng tới, tên của người dùng được lấy từ tham số name trên URL
http://www.victim.com/hello.php?name=passionery
URL trên sẽ chào mừng người dùng có tên passionery.
Xem xét source code của hello.php, ta thấy không có sự ràng buộc dữ liệu nào, vì vậy, thay vì truyền tham số là passionery, ta có thể thay bằng
<script>document.getElementById('hello').innerHTML="<label>Vui lòng xác nhận lại mật khẩu để tiếp tục: </label><input type='password'/><button onclick='show()'>Submit</button>";function show(){alert('HACKED');}</script>
Như vậy URL sẽ thành
http://www.victim.com/hello.php?name=<script>document.getElementById('hello').innerHTML="<label>Vui lòng xác nhận lại mật khẩu để tiếp tục:</label><input type='password'/><button onclick='show()'>Submit</button>";function show(){alert('HACKED');}</script>
Khi người dùng nhập mật khẩu vào và nhấn Submit thì lập tức script sẽ được thực thi và gửi về cho hacker mật khẩu của người dùng.
Qua ví dụ trên ta thấy cách tấn công của DOM-based XSS cũng tương đối giống với cách tấn công của Reflected XSS là phải dụ người dùng click vào link có chứa mã độc để thực hiện tấn công. Ngoài ra, cũng có thể thấy giao diện của trang web có thể bị thay đổi bởi đoạn script được thêm vào, và sau đó nó sẽ thực thi như là một phần của trang web, như vậy sẽ làm cho người dùng lầm tưởng và hacker sẽ dễ dàng đạt được mục đích.
Chap 20: User agent
User Agent là một "chuỗi" nhận dạng khi trình duyệt gửi yêu cầu đến máy chủ web. Khi trình duyệt của bạn truy cập trang web nào đó, trình duyệt sẽ gửi một HTTP Request bao gồm User Agent đến máy chủ web. Nội dung của User Agent tuỳ thuộc vào trình duyệt mà chúng ta sử dụng. Mỗi trình
duyệt đều có riêng cho mình môt User Agent nhất định. Thực chất, User Agent là cách để trình duyệt nói "Chào, tôi là Firefox trên Windows" hoặc "Chào, tôi là Google Chrome trên Windows".
Dựa vào User Agent thì máy chủ web có thể biết chúng ta dùng trình duyệt web gì. Máy chủ web có thể dùng thông tin này để phục vụ trình duyệt web khác nhau. Chẳng hạn như, website có thể gửi trang dành riêng cho trình duyệt trên điện thoại hoặc là các trang dành riêng cho laptop, desktop, trang hiện đại dành cho trình duyệt mới nhất, và có thể là /"Please upgrade your browser."/ nếu trình duyệt của bạn quá lỗi thời.
Đây là một chuỗi User Agent của Opera chạy trên Windows XP:
Đoạn User Agent trên cho máy chủ web biết rằng: hệ điều hành ta đang dùng là /Windows XP (Windows NT 5.1)/ và trình duyệt này là /Opera/ phiên bản /12.00/.
Đây là một chuỗi User Agent của Firefox chạy trên Windows XP:
Tương tự như trên, đoạn User Agent này báo cho máy chủ web rằng: hệ điều hành ta đang dùng là /Windows XP (Windows NT 5.1)/ và trình duyệt này là /Mozilla Firefox/ phiên bản /18.0/.
Và đây là một chuỗi User Agent khác của Firefox chạy trên Windows 7:
Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Để kiểm tra User Agent trên trình duyệt của mình bạn có thể vào trang web: http://www.whatsmyuseragent.com
Chap 21 : HTTP Header
HTTP là viết tắt của HyperText Transfer Protocol. Là một giao thức cơ bản mà World Wide Web sử dụng (như bạn thấy, tất cả các địa chỉ web đều có phần mở đầu là /http:/// hoặc /https:///). HTTP xác định cách các thông điệp (như các file văn bản, hình ảnh đồ hoạ, âm thanh, video, và các file multimedia ...) được định dạng và truyền tải ra sao, và những hành động nào mà các Webserver và các trình duyệt web (browser) phải làm để đáp ứng lại.
HTTP Header là một phần cốt lõi của HTTP Request và HTTP Response, trong mỗi HTTP Header đều kèm theo các thông tin phản hồi và yêu cầu của phía client và server.
Các phương thức truy vấn của HTTP
1. GET
Phương thức này dùng để truy xuất các tập tin như HTML, CSS, Javascript và hình ảnh ...
Ví dụ, khi truy cập vào địa chỉ /example.com/tutorials/, dòng đầu tiên trong HTTP Request của bạn sẽ có dạng như sau:
GET /tutorials/ HTTP/1.1
2. POST
Phương thức này dùng để gửi dữ liệu đến server. Phương thức POST thường được gửi đến server dưới dạng form, ví dụ:
<form>
Username: <input />
Email: <input />
<input />
</form>
Lúc này HTTP Request sẽ có dạng như sau:
POST /login.php HTTP/1.1
Host: example.com
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://example.com/test.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 43
first_name=John&last_name=Doe&action=Submit
3. HEAD
Phương thức này dùng để lấy thông tin về các header. Cách hoạt động của HEAD cũng giống như GET. Nhưng phía server chỉ trả về các thông tin của header, ví dụ:
HTTP/1.1 200 OK
Date: Mon, 18 Aug 2013 22:44:11 GMT
Server: Apache/1.3.26 (Unix)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Content-Language: EN
Connection: close
Content-Type: text/html; charset=ISO-8859-1
4. PUT
Phương thức này dùng để upload 1 file nào đó lên server.
5. OPTIONS
Khi sử dụng phương thức này phía server sẽ phản hồi một dòng Allow kèm theo các phương thức mà phía client có thể sử dụng, ví dụ:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Tue, 31 Oct 2013 08:00:29 GMT
Connection: close
Allow: GET, HEAD, POST, TRACE, OPTIONS
Content-Length: 0
6, HTTP Status Code
Trong mỗi HTTP Response đều chứa một status code, các status code này cho biết kết quả truy vấn mà server trả về. Các status code được chia thành 5 nhóm:
* 1xx: Thông tin.
* 2xx: Truy vấn thành công.
* 3xx: Client được chuyến hướng (redirect) đến một địa chỉ web khác.
* 4xx: Truy vấn này có lỗi.
* 5xx: Server bắt gặp lỗi trong khi thực hiện truy vấn.
200 OK
Truy vấn thành công.
301 Moved Permanently
URL được yêu cầu đã chuyển vĩnh viễn tới một URL mới và trong tương lai, nếu client muốn truy cập tài nguyên của URL này thì nên sử dụng URL đã được chuyển hướng (redirect).
304 Not Modified
Chỉ dẫn trình duyệt sử dụng bản sao của trang web trong bộ nhớ cache mà trình duyệt đã lưu trong lần truy cập trước đó.
400 Bad Request
Bạn sẽ nhìn thấy status code này nếu như gửi một truy vấn không hợp lệ lên web server.
401 Unauthorized
Nếu như truy cập vào một trang web yêu cầu nhập mật khẩu và bạn sẽ thấy status code này nếu như nhập sai.
403 Forbidden
Bạn sẽ nhận được status code này truy cập vào một địa chỉ cấm của Server. Địa chỉ web này không được phép truy cập.
404 Not Found
Một truy vấn không được tìm thấy trên server.
405 Method Not Allowed
Bạn đang sử dụng một phương thức mà web server không hỗ trợ. Ví dụ nếu bạn sử dụng phương thức POST mà web server không hỗ trợ thì bạn sẽ thấy status code này.
500 Internal Server Error
Server đã bắt gặp lỗi trong khi thực hiện truy vấn được gửi từ phía client.
503 Service Unavailable
Ứng dụng trên server không phản hồi lại truy vấn của client hoặc có thể ứng dụng này không hoạt động nữa.
7, HTTP Request
Toàn bộ các thông tin của HTTP Request và HTTP Response đều bao gồm 1 hoặc nhiều các header. Được cách nhau bằng mỗi dòng riêng biệt. Ví dụ sau của HTTP Request:
GET /books/search.asp?q=example HTTP/1.1
Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg,
application/xshockwaveflash, application/vnd.msexcel,
application/vnd.mspowerpoint, application/msword, */*
Referer: http://example.com/books/default.asp
Accept-Language: en-gb,en-us;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Host: example.com
Cookie: lang=en; JSESSIONID=0000tI8rk7joMx44S2Uu85nSWc_:vsnlc502
* Dòng đầu tiên cho thấy đang sử dụng phương thức *GET*. Phiên bản HTTP được sử dụng là 1.1, các phiên bản của HTTP gồm 1.0 và 1.1. Nhiều trình duyệt web mặc định sử dụng phiên bản 1.1.
* Referer cho ta biết rằng URL trên có nguồn gốc từ địa chỉ nào. Ở ví dụ trên Referer cho thấy truy vấn //books/search.asp?q=example/ được gửi từ địa chỉ /http://example.com/books/default.asp/
* User-Agent dùng để cung cấp cho web server biết là ta đang dùng trình duyệt web nào. Trong đoạn User-Agent trên cho thấy rằng ta đang sử dụng Windows XP và trình duyệt IE 7.
* Host cho biết bạn đang gửi truy vấn đến host nào. Điều này rất hữu ích nếu như nhiều trang web cùng đặt chung 1 web server.
* Cookie được gửi lại lên web server nếu như trước đây đã từng truy cập vào địa chỉ này.
8, HTTP Response
Sau khi client gửi HTTP Request lên server thì server sẽ gửi lại HTTP Response.
Ví dụ:
HTTP/1.1 200 OK
Date: Tue, 17 Dec 2013 03:30:53 GMT
Server: IBM_HTTP_SERVER/1.3.26.2 Apache/1.3.26 (Unix)
Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Language: en-US
Content-Length: 24246
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type">
* Dòng đầu tiên là phiên bản HTTP 1.1 được sử dụng. Một status code là 200 cho biết là truy vấn này thành công.
* Server cho biết thông tin về web server. Ở ví dụ trên web server được sử dụng là Apache và hệ điều hành Unix. Tuy nhiên thông tin về web server có thể không chính xác.
* Pragma ở ví dụ cho thấy trình duyệt web không lưu trữ các phản hồi (response) nào trong bộ nhớ cache.
* Content-Type cho thấy rằng phần thông tin trên gồm có HTML.
* Content-Length cho biết độ dài của gói tin phản hồi từ phía server gửi về, được tính bằng byte.
9, HTTP Header trong HTTP Request
Accept-Encoding
Accept-Encoding: gzip,deflate
Thông báo cho web server biết là phía client chấp nhận loại định dạng mã hoá nào.
Ví dụ trên cho thấy là phía client chấp nhận định dạng gzip, việc này có thể làm tiết kiệm băng thông.
Accept-Language
Accept-Language: en-gb,en-us;q=0.5
Header cho biết ngôn ngữ mặc định của phía client. Nếu như trang web có nhiều ngôn ngữ thì phía client sẽ được chuyển hướng đến ngôn ngữ phù hợp hơn.
If-Modified-Since
Nếu như nội dung trang web được trình duyệt lưu lại trong bộ nhớ cache. Và lần sau nếu truy cập nữa thì trình duyệt sẽ gửi:
If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT
Nếu như không có bất kỳ thay đổi nào thì server sẽ gửi một status code 304. Sau đó trình duyệt sẽ load nội dung được lưu trong bộ nhớ cache đã lưu trước đó.
User Agent
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Đoạn header trên có thể cho ta biết về thông tin sau: trình duyệt, hệ điều hành. Đây chính là lý do tại sao các web server biết người dùng đang dùng hệ điều hành và trình duyệt gì. Ví dụ nếu như web server phát hiện người dùng đang dùng trình duyệt trên điện thoại thì sẽ chuyển hướng đến phiên bản mobile của trang web.
Cookie
Cookie: lang=en; JSESSIONID=0000tI8rk7joMx44S2Uu85nSWc_:vsnlc502
Nếu như trước đó bạn đã truy cập vào một trang web nào đó thì cookie này sẽ gửi lên web server.
Host
Tên hostname mà phía client muốn gửi HTTP Request. Hostname này bao gồm domain và subdomain.
Vd:
Host: example.com
Referer
Nếu như bạn truy cập vào địa chỉ /example.com/books/default.asp/ và click bất kỳ liên kết nào thì Referer Header sẽ là:
Referer: http://example.com/books/default.asp
10, HTTP Header trong HTTP Response
Content-Length
Web server thông báo cho phía client về dung lượng của gói tin gửi cho phía client. Điều này rất tốt cho việc download vì trình duyệt có thể dự đoán mất bao nhiêu thời gian để download. Ví dụ:
Content-Length: 24246
Content-Type
Header này cho biết thông tin về định dạng của văn bản. Ví dụ nếu như là một trang html thì kết quả sẽ trả về là:
Content-Type: text/html;charset=ISO-8859-1
text/html là một trong các định dạng thường gặp nhiều. Ngoài ra header này còn có định dạng hình ảnh:
Content-Type: image/gif
Content-Encoding
Header này trả về một định dạng mã hoá nội dung, ví dụ:
Content-Encoding: gzip
Etag
Header này dùng để lưu trữ bộ nhớ trong cache, ví dụ:
Etag: "pub1259380237;gz"
Khi server gửi header này cho phía client thì trình duyệt sẽ lưu lại giá trị này lại. Lần sau nếu như còn truy cập tiếp thì trình duyệt sẽ gửi HTTP Request sau:
If-None-Match: "pub1259380237;gz"
Nếu như giá trị của header này hợp với server thì client nhận status code 304. Lúc này trình duyệt sẽ load nội dụng từ trong bộ nhớ cache mà không cần nhờ tới server.
Expires
Thông báo cho trình duyệt biết các nội dung này có hiệu lực trong bao lâu kể từ lúc phía server phản hồi lại, ví dụ:
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Last-Modified
Lần cuối cùng đoạn văn bản được chỉnh sửa, thời gian định dạng trong GMT, ví dụ:
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
Location
Header này được sử dụng để chuyển hướng (redirect). Với status code là 301 hoặc 302.
Pragma
Cho phép trình duyệt có được lưu vào trong bộ nhớ cache không. Ví dụ:
Pragma: no-cache
Set-Cookie
Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc
Web server sẽ gửi cookie cho phía client và phía client sẽ gửi cookie này lại cho web server trong các lần truy cập tiếp theo.
Server
Server: IBM_HTTP_SERVER/1.3.26.2 Apache/1.3.26 (Unix)
Cung cấp thông tin về server và hệ điều hành được sử dụng.
Chap 23: Khái niệm cơ bản về mạng LAN, MAN & WAN
1. LAN:
- Là dạng viết tắt, Local Area Network .
- Nếu hai hoặc nhiều máy tính và thiết bị ngoại vi được kết nối trong một khu vực nhỏ như một căn phòng, văn phòng, hay một khuôn viên, được gọi là mạng LAN . Đó là nhóm các máy tính trong một mạng LAN chia sẻ một kết nối phổ biến.
- Tốc độ truyền dữ liệu của mạng LAN là 10 đến 100 Mbps và nó là chậm hơn so với mạng WAN.
- Đường truyền và vòng cấu trúc liên kết được sử dụng trong mạng LAN.
- Trong giao thức mạng LAN một vài sai sót dữ liệu xảy ra.
- Trong văn phòng hoặc nhà mạng mà họ thường được nối với nhau bằng cáp Ethernet và có kết nối tốc độ cao. Và nếu nó thiết lập là không dây thì nó được gọi là mạng WLAN .
- Trong LAN thiết bị đầu cuối máy tính được kết nối vật lý với dây .
- Kết nối chia sẻ nhiều nhất của mạng LAN là 1 km .
- Ngoài ra, chi phí của mạng LAN được rẻ hơn so với WAN và MAN.
2. MAN:
- MAN là chữ viết tắt cho Metropolitan Area Network .
- Nó là lớn hơn so với hệ thống mạng LAN và kết nối người sử dụng máy tính trong một khu vực địa lý cụ thể.
- Ví dụ chính của mạng MAN là truyền hình cáp .
- Ngoài ra, một trường đại học lớn có thể có một mạng lưới rất lớn mà nó có thể được phân loại như một MAN. Và hệ thống mạng MAN thường tồn tại để cung cấp kết nối cho các tập đoàn lớn.
- Tốc độ truyền dữ liệu của MAN là 5-10Mbps và nó là chậm hơn so với mạng WAN và có tốc độ cao hơn so với mạng LAN.
- Phân phối Queue kép xe buýt [DQDB] cấu trúc liên kết được sử dụng trong mạng MAN.
- Hệ thống mạng MAN là lớn hơn so với mạng LAN và nhỏ hơn một WAN.
- Phạm vi chia sẻ kết nối của MAN là lên tới 50 Km .
- Ngoài ra, chi phí của MAN là cao hơn so với mạng LAN.
3. WAN
- WAN là chữ viết tắt cho Wide Area Network .
- Đây là mạng lưới lớn nhất và có thể kết nối mạng trên toàn thế giới và không bị giới hạn đến một vị trí địa lý.
- Ví dụ về WAN là kết nối các chi nhánh khác nhau của MNC như Microsoft và các chi nhánh được liên kết bằng cách sử dụng hệ thống thông tin vệ tinh lò vi sóng.
- Ngoài ra, ví dụ chính của hệ thống mạng WAN là hệ thống viễn thông .
- Tốc độ truyền dữ liệu của mạng WAN là 256Kbps đến 2Mbps và nó có tốc độ cao hơn so với mạng LAN và MAN.
- ATM, Frame Relay, Sonnet cấu trúc liên kết được sử dụng trong mạng WAN.
- Hầu hết các WAN tồn tại để kết nối các mạng LAN mà không phải là trong cùng một khu vực địa lý.
- Kết nối chia sẻ nhiều WAN lên tới 10.000 Km .
- Ngoài ra, chi phí của WAN rất đắt so với mạng LAN và MAN.
Chap 24: SCANNING NETWORK
1. Giới thiệu về Scanning
Quét (Scanning) là một bước tiếp theo trong tiến trình tấn công hệ thống. Giai đoạn này giúp chúng ta xác định được nhiều thông tin của mục tiêu cần tấn công. Chương trước, bạn đã tìm hiểu các vấn đề về Footprinting và Social Engineering, là công việc liên quan đến con người. Có nghĩa là chúng ta đã tiến hành thu thập thông tin về tổ chức mà chúng ta tấn công, như vị trí địa lý, thói quen sinh hoạt của nhân viên...Đến phần này, Scanning, chúng ta sẽ làm việc với máy móc.
Tức là sau khi chúng ta tìm được vài thông tin có liên quan đến máy tính cần tấn công, công đoạn tiếp theo là thu thập thông tin về máy tính đó. Những thông tin cần thu thập như tên máy (computer name), địa chỉ ip, cấu hình máy tính, hệ điều hành, dịch vụ đang chạy, port đang mở...Những thông tin này sẽ giúp cho hacker có kế hoạch tấn công hợp lý, cũng như việc chọn kỹ thuật tấn công nào.
Quét giúp định vị hệ thống còn hoạt động trên mạng hay không. Một hacker chân chính sử dụng cách này đề tìm kiếm thông tin của hệ thống đích.
2. Phân loại Scanning
Sau khi các giai đoạn hoạt động thăm dò chủ động và bị động của hệ thống mục tiêu hoàn tất, chúng ta tiến hành quét. Quét được sử dụng để xác định một hệ thống có trên mạng hay không và có đang sẵn sàng hoạt động. Công cụ quét được sử dụng để thu thập thông tin về một hệ thống như địa chỉ IP, hệ điều hành, và các dịch vụ chạy trên các máy tính mục tiêu. Hình sau liệt kê ba loại quét chủ yêu mà chúng ta nhắm tới.
2.1. Port Scanning
Port scanning là quá trình xác định cổng TCP/IP mở và có sẵn trên một hệ thống. Công cụ Port scanning cho phép một hacker tìm hiểu về các dịch vụ có sẵn trên một hệ thống nhất định. Mỗi dịch vụ hay ứng dụng máy tính được kết hợp với một số cổng thông dụng. Ví dụ, một công cụ quét đó là xác định cổng 80 mở cho một web sever đang chạy trên đó. Hacker cần phải biết rõ với số cổng thông dụng.
2.2. Network Scanning
Network scanning là một quy trình để xác định máy chủ đang hoạt động trên mạng, hoặc để tấn công chúng hoặc là đánh giá an ninh mạng. Máy chủ được xác định bởi IP cá nhân của chúng. Các công cụ network-scanning cố gắng xác định tất cả các máy chủ trực tiếp hoặc trả lời trên mạng và địa chỉ IP tương ứng của chúng.
2.3. Vulnerability scanning
Vulnerability scanning là quá trình chủ động xác định các lỗ hổng của hệ thống máy tính trên mạng. Thông thường, một máy quét lỗ hổng đầu tiên xác định các hệ điều hành và số phiên bản, bao gồm các gói dịch vụ có thể được cài đặt. Sau đó, máy quét lỗ hổng xác định các điểm yếu, lỗ hổng trong hệ điều hành. Trong giai đoạn tấn công sau đó, một hacker có thể khai thác những điểm yếu để đạt được quyền truy cập vào hệ thống.
Một hệ thống phát hiện xâm nhập (IDS) hay một mạng an ninh tinh vi chuyên nghiệp với các công cụ thích hợp có thể phát hiện các hoạt động port-scanning. Các công cụ dò quét cổng TCP/IP tìm kiếm các cổng mở và địa chỉ IP, và lỗ hổng thường có thể bị phát hiện, vì các máy quét phải tương tác với hệ thống đích trên mạng.
3. Các phương pháp Scanning
3.1. Kiểm tra hệ thống.
* Quét ICMP
Bản chất của quá trình này là gửi một gói ICMP Echo Request đến máy chủ đang muốn tấn công
Việc quét này rất hữu ích để định vị các thiết bị hoạt động hoặc xác định hệ thống có tường lửa hay không
* Ping Sweep
Ping Sweep được sử dụng để xác định các máy chủ còn "sống" từ một loạt các địa chỉ IP bằng cách gửi các gói ICMP Echo Request đến tất cả các IP đó. Nếu một máy chủ còn "sống" nó sẽ trả lại một gói tin ICMP Reply.
3.2. Kiểm tra các cổng mở
Kiểm tra các cổng đang mở là bước thứ hai trong tiến trình quét. Port scanning là phương pháp được sử dụng để kiểm tra các cổng đang mở. Quá trình quét bao gồm việc thăm dò mỗi cổng trên máy chủ để xác định các cổng đang mở. Thông thường Ports scanning có giá trị hơn một quá trình quét ping về máy chủ và các lỗ hổng trên hệ thống.
Để thực hiện quét port máy khách phải thực hiện thiết lập kết nối với máy bị tấn công qua giao thức TCP sử dụng cơ chế bắt tay 3 bước.
1. Máy tính A khởi tạo một kết nối đến máy bị tấn công bằng một gói tin với cờ SYN
2. Máy bị tấn công sẽ trả lời bằng một gói tin với cờ SYN và ACK
3. Cuối cùng, máy khách sẽ gởi lại cho máy chủ một gói tin ACK
Nếu 3 bước trên được hoàn thành mà không có biến chứng thì sau đó một kết nối TCP sẽ được thiết lập
Bởi vì TCP là một giao thức hướng kết nối, một quy trình để thiết lập kết nối (three-way handshake), khởi động lại một kết nối không thành công và kết thúc một kết nối là một phần của giao thức. Những giao thức dùng để thông báo được gọi là Flags. TCP chứa các flasg như ACK, RST, SYN, URG, PSH và FIN. Danh sách dưới đây xác định các chức năng của các cờ TCP:
* SYN (Synchronize): Khởi tạo kết nối giữa các máy
* ACK (acknowledge): Thiết lập kết nối giữa các máy.
* PSH (Push): Hệ thống chuyển tiếp dữ liệu đệm.
* URG (Urgent): Dữ liệu trong các gói phải được xử lý nhanh chóng.
* FIN(Finish): Hoàn tất giao tiếp, không truyền thêm.
* RST (Reset): Thiết lập lại kết nối.
+ Các kĩ thuật quét :
* XMAS: XMAS scans gửi một gói với cờ FIN,URG, và PSH được thiết lập. Nếu cổng mở, không đáp lại; nếu đóng mục tiêu gửi lại gói RST/ACK. XMAS scan chỉ làm việc trên hệ thống máy đích theo RFC 793 của TCP/IP và không chống lại bất cứ version nào của Windows.
* FIN: FIN scan tương tự XMAS scan nhưng gửi gói dữ liệu chỉ với cờ FIN được thiết lập. FIN scan nhận trả lời và có giới hạn giống như XMAS scan.
* NULL: NULL scan cũng tương tự như XMAS và FIN trong giới hạn và trả lời, nhưng nó chỉ gửi một packet mà không có flag set.
* IDLE: IDLE scan sử dụng địa chỉ IP giả mạo để gửi một gói SYN đến mục tiêu. Phụ thuộc vào trả lời, cổng có thể được xác định là mở hoặc đóng. IDLE scans xác định phản ứng quét cổng bằng cách theo dõi số thứ tự IP header.
3.3. Kỹ thuật War DiaLing
War-Dialing là quá trình quay số modem để tìm một kết nối modem đang mở, kết nối này cung cấp truy cập từ xa vào mạng, để tấn công vào hệ thống đích. Thuật ngữ War dialing bắt nguồn từ những ngày đầu của Internet khi hầu hết các công ty đã được kết nối với Internet thông qua kết nối dial-up modem. War dialing được xem như là một phương pháp quét bởi vì nó tìm thấy một kết nối mạng mà có thể có bảo mật yếu hơn so với các kết nối Internet chính. Nhiều tổ chức thiết lập truy cập từ xa qua modem, mà bây giờ đã cổ nhưng đã không thể loại bỏ các máy chủ truy cập từ xa này. Điều này cho phép tin tặc dễ dàng xâm nhập vào mạng với cơ chế bảo mật yếu hơn nhiều. Ví dụ, nhiều hệ thống truy cập từ xa sử dụng phương thức xác nhận PAP (Password Authentication Protocol), gửi mật khẩu ở dạng clear text,hay hơn nữa là dùng công nghệ VPN mới hơn với mật khẩu được.
War-dialing là công cụ làm việc trên tiền đề rằng: các công ty không kiểm soát quay số tại cổng chặt chẽ như tường lửa, và máy tính với modem gắn liền có mặt ở khắp mọi nơi, ngay cả khi những modem không còn sử dụng. Nhiều máy chủ vẫn còn có modem với đường dây điện thoại được kết nối như là một sao lưu dự phòng trong trường hợp kết nối Internet chính gặp xự cố. Những kết nối modem có thể được sử dụng bởi một chương war-dialing để truy cập từ xa vào hệ thống và mạng nội bộ.
3.4. Công nghệ Banner Grabing và Operating System Fingerprint
Banner Grabbing và đồng nhất hệ điều hành – cũng có thể định nghĩa là Fingerprinting TCP/IP stack – là bước thứ 4 trong phương pháp quét của CEH. Quá trình fingerprinting cho phép hacker xác định vùng đặc biệt dế bị tổn thương của mục tiêu trên mạng. Banner grabbing là quá trình tạo kết nối và đọc biểu ngữ được gửi trả lời bởi ứng dụng. Nhiều server (mail, web, ftp...) sẽ trả lời đến một kết nối telnet với tên và version của software. Hacker có thể tìm thấy nhiều mối liên hệ giữa hệ điều hành và phần mềm ứng dụng. Ví dụ, Microsoft Exchange e-mail server chỉ cài được trên HĐH Windows.
OS Fingerprint là kỹ thuật xác định thông tin hệ điều hành chạy trên host đích. Có hai phương thức để thực hiện OS Fingerprint như sau:
Active stack fingerprinting là hình thức phổ biến nhất của fingerprinting. Nó bao gồm việc gửi dữ liệu đến hệ thống để xem cách hệ thống trả lời. Nó dựa trên thực tế là các nhà cung cấp hệ điều hành thực hiện các TCP stack khác nhau, và khác nhau dựa trên hệ điều hành. Các phản ứng này sau đó được so sánh với cơ sở dữ liệu để xác định hệ điều hành. Active stack fingerprinting bị phát hiện bởi vì nó cố gắng nhiều lần để kết nối với hệ thống mục tiêu.
Passive stack fingerprinting thì "tàng hình" hơn và bao gồm sự kiểm tra lưu lượng trên mạng để xác định hệ điều hành. Nó sử dụng kỹ thuật Sniffing thay vì kỹ thuật Scanning. Passive stack fingerprinting thường không phát hiện ra bởi IDS hoặc hệ thống bảo mật khác nhưng ít chính xác hơn Active fingerprinting.
3.5. Quét lỗ hổng
Quét lỗ hổng là để xác định lỗ hổng và điểm yếu của một hệ thống mạng và mạng lưới để xác định xem hệ thống đó có thể khai thác được như thế nào.
Thực hiện quét lỗ hổng sẽ được các kết quả :
- Cấu trúc liên kết mạng và các lỗ hổng hệ điều hành
- Các cổng mở và các dịch vụ đang chạy
- Ứng dụng và các lỗi cấu hình các dịch vụ
- Ứng dụng và các lỗ hổng dịch vụ
3.6. Triển khai Proxy Server để tấn công
Chuẩn bị máy chủ proxy là bước cuối cùng trong phương pháp quét CEH. Một proxy server là một máy tính hoạt động trung gian giữa hacker và máy tính đích.
Sử dụng một proxy server có thể cho phép hacker trở thành vô danh trên mạng. Hacker trước tiên kết nối tới máy proxy server rồi yêu cầu kết nối tới máy đích thông qua kết nối có sẵn đến proxy. Cơ bản, proxy yêu cầu truy cập đến mục tiêu mà không phải là máy tính của hacker. Điều này làm hacker lướt web vô danh hoặc ẩn trong cuộc tấn công.
4. Một số kỹ thuật hỗ trợ tấn công
4.1. Kỹ thuật HTTP TUNNELING
Một phương pháp phổ biến của vòng qua tường lửa hoặc IDS là một tạo một đường hầm (như SMTP) thông qua một giao thức cho phép (như HTTP). Hầu hết các IDS và tường lửa hoạt động như một proxy giữa máy tính của khách hàng và Internet, và chỉ cho phép truy cập với những host được định nghĩa là được phép. Hầu hết các công ty cho phép HTTP giao thông bởi vì nó thường truy cập web lành tính. Tuy nhiên, hacker có thể tạo ra một đường hầm bằng giao thức HTTP để truy cập vào mạng bên trong với giao thức không được phép.
HTTP Tunneling không hẳn là chỉ dành cho hacker. Bạn có thể áp dụng nó để tạo ra một hệ thống kết nối hai chi nhánh an toàn bằng giao thức HTTP. Trong hình 4.12 là một ví dụ về việc kết nối hai chi nhánh để trao đổi dữ liệu qua giao thức FTP, trong khi giao thức này bị chặn bởi tường lửa. Bằng cách này, client có thể kết nối về máy chủ FTP để lấy dữ liệu thông qua HTTP Tunneling.
4.2. Kỹ thuật giả mạo IP
Một hacker có thể giả mạo địa chỉ IP khi quét máy hệ thống để hạn chế thấp nhất khả năng bị phát hiện. Khi nạn nhân (Victim) gửi trả lời về địa chỉ IP, nó sẽ không gửi đến địa chỉ giả mạo được. Một nhược điểm của giả mạo IP là một phiên TCP không thể hoàn thành được, do không thể gửi hồi đáp ACK.
Source routing cho phép kẻ tấn công chỉ định việc định tuyến một gói tin có thông qua Internet. Điều này cũng có thể giảm thiểu cơ hội phát hiện bằng cách bỏ qua IDS và tường lửa. Source routing được cài đặt trong giao thức TCP/IP với hai hình thức:
- Loose Source routing (LSR): Routing không chính xác. Người gửi gửi một danh sách ip trong đó bao gồm ip của mình.
- Strict Source routing (SSR): Routing chính xác. Người gửi chỉ ra một phần của đường dẫn để chuyển gói tin. Gói tin trả lời sẽ đi qua đường dẫn đó.
Source routing sử dụng trường địa chỉ của gói tin IP Header lên đến 39-byte tức là sẽ có tối đa 8 địa chỉ ip được thêm vào trường đỉa chỉ. Khi đó máy gửi sẽ gửi qua một loạt ip giả, trong số đó có ip thật của kẽ tấn công.
Chap 25: SNIFFING
1. Sniffing là gì
Nghe lén (Sniffing) được hiểu đơn giản là một chương trình cố gắng nghe ngóng các lưu lượng thông tin trên một hệ thống mạng. Là một tiến trình cho phép giám sát cuộc gọi và hội thoại internet bởi thành phần thứ ba.
Người nghe lén để thiết bị lắng nghe giữa mạng mang thông tin như hai thiết bị điện thoại hoặc hai thiết bị đầu cuối trên internet. Nghe lén được sử dụng như công cụ để các nhà quản trị mạng theo dõi và bảo trì hệ thống mạng. Về mặt tiêu cực, nó được sử dụng như một công cụ với mục đích nghe lén các thông tin trên mạng để lấy các thông tin quan trọng.
Nghe lén dựa vào phương thức tấn công ARP để bắt các gói thông tin được truyền qua mạng. Tuy nhiên những giao dịch giữa các hệ thống mạng máy tính thường là những dữ liệu ở dạng nhị phân. Bởi vậy để hiểu được những dữ liệu ở dạng nhị phân này, các chương trình nghe lén phải có tính năng phân tích các nghi thức, cũng như tính năng giải mã các dữ liệu ở dạng nhị phân để hiểu được chúng.
2. Cơ chế hoạt động chung của Sniffing
Để hiểu cơ chế hoạt động thì cần hiểu được nguyên tắc chuyển tải các khung (frame) của lớp Datalink từ các gói tin ở lớp Network trong mô hình OSI. Cụ thể là qua hai loại thiết bị tập trung các node mạng sử dụng phổ biến hiện nay là Hub và Switch.
* Ở môi trường Hub: Một khung gói tin khi chuyển từ máy A sang máy B thì đồng thời nó gửi đến tất cả các máy khác đang kết nối cùng Hub theo cơ chế loan tin (broadcast). Các máy khác nhận được gói tin này sẽ tiến hành so sánh yêu cầu về địa chỉ MAC của frame gói tin với địa chỉ đích. Nếu trùng lập thì sẽ nhận, còn không thì cho qua. Do gói tin từ A được gửi đến B nên khi so sánh thì chỉ có B mới giống địa chỉ đích đến nên chỉ có B mới thực hiện tiếp nhận.
Dựa vào nguyên tắc đó, máy được cài đặt chương trình nghe trộm sẽ tự "nhận" bất cứ gói tin được lưu chuyển trong mạng qua Hub, kể cả khi đích đến gói tin có đích đến không phải là nó, nhờ card mạng được đặt ở chế độ hỗn tạp (promiscuous mode). Promiscuous mode là chế độ đặc biệt. Khi card mạng được đặt dưới chế độ này, nó có thể nhận tất cả các gói tin mà không bị ràng buộc kiểm tra địa chỉ đích đến.
* Trong môi trường Switch: Khác với Hub, Switch chỉ chuyển tải các gói tin đến những địa chỉ cổng xác định trong bảng chuyển mạch nên nghe trộm kiểu "tự nhận" như ở Hub không thực hiện được. Tuy nhiên, kẻ tấn công có thể dùng các cơ chế khác để tấn công trong môi trường Switch như ARP spoofing, MAC spoofing, MAC duplicating, DNS spoofing, v.v...
3. CÁC PHƯƠNG THỨC TẤN CÔNG
- Tấn công MAC
- Tấn công DHCP
- Tấn công đầu độc ARP
- Tấn công giả mạo
- Tấn công DNS
Bạn đang đọc truyện trên: Truyen247.Pro