Virus (máy tính)

Trong khoa học máy tính viễn thông, virus máy tính hay virus tin học (thường được người sử dụng gọi tắt là virus) là những đoạn mã chương trình được thiết kế để thực hiện tối thiểu là 2 việc:
Trước đây, virus thường được viết bởi một số người am hiểu về lập trình muốn chứng tỏ khả năng của mình nên thường virus có các hành động như: cho 1 chương trình không hoạt động đúng, xóa dữ liệu, làm hỏng ổ cứng... hoặc gây ra những trò đùa khó chịu.
Những virus mới được viết trong thời gian gần đây không còn thực hiện các trò đùa hay sự phá hoại đối với máy tính của nạn nhân bị lây nhiễm nữa, mà đa phần hướng đến việc lấy cắp các thông tin cá nhân nhạy cảm (các mã số thẻ tín dụng) mở cửa sau cho tin tặc đột nhập chiếm quyền điều khiển hoặc các hành động khác nhằm có lợi cho người phát tán virus.
Chiếm trên 90% số virus đã được phát hiện là nhắm vào hệ thống sử dụng hệ điều hành họ Windows chỉ đơn giản bởi hệ điều hành này được sử dụng nhiều nhất trên thế giới. Do tính thông dụng của Windows nên các tin tặc thường tập trung hướng vào chúng nhiều hơn là các hệ điều hành khác. Cũng có quan điểm cho rằng Windows có tính bảo mật không tốt bằng các hệ điều hành khác (như Linux) nên có nhiều virus hơn, tuy nhiên nếu các hệ điều hành khác cũng thông dụng như Windows hoặc thị phần các hệ điều hành ngang bằng nhau thì cũng lượng virus xuất hiện có lẽ cũng tương đương nhau. Ngoài ra hiện nay virus máy tính không chỉ xuất hiện trên các máy tính hệ điều hành Windows nói riêng và toàn bộ các máy tính thuộc tất cả các hệ điều hành nói chung mà nó còn xuất hiện trên cả các điện thoại di động thuộc các hệ điều hành Android và IOS (với tỷ lệ thấp hơn vì IOS có độ bảo mật cao hơn).
Cách thức hoạt động.
Viết virus và chống virus tăng cường bảo mật là cuộc đấu tranh phức tạp và tốn kém giữa 2 giới lập trình. Tuy nhiên cách thức hoạt động của virus thì có thể được diễn giải khái quát như sau .
Các máy tính hoạt động bằng các chỉ thị (hay lệnh, instruction) ở dạng mã máy theo trình tự hợp lý để thực thi 1 công việc (task) nào đó. Mã máy là dãy số nhị phân và việc lập trình (hay thảo chương) trực tiếp mã máy rất nhức đầu, nên giới điện toán thiết kế ra các ngôn ngữ lập trình (như C, C++, Java...) để người lập trình ứng dụng thảo chương bằng những ký hiệu và tên gọi dễ nhớ, sau đó dịch sang mã máy để máy thi hành. Nếu lập trình không hợp lý thì máy bị treo, không làm được gì.
Kỹ thuật lập trình dẫn đến "những công việc xác định được lặp lại nhiều lần" thường được tổ chức thành modul riêng gọi là "trình con", trong ngôn ngữ lập trình gọi là "routine" hay "subroutine", và khi cần thực hiện công việc vốn ấn định cho routine đó thì trình đang chạy thực hiện lệnh gọi (call) đến routine đó để thực thi. Lệnh "call" có tham số là địa chỉ routine trong bộ nhớ, khi thực thi lệnh call thì chuyển địa chỉ này vào "con trỏ lệnh" của CPU và trao quyền chạy cho routine đó. Cấu trúc routine có "điểm vào" (entry) là nơi bắt đầu, và "điểm ra" (exit) trả lại điều khiển cho trình gọi (caller) sau khi hoàn tất công việc.
Virus được viết ra là dạng 1 "routine", thực hiện sửa tham số địa chỉ của một số lệnh "call" trỏ đến địa chỉ của nó, và kết thúc virus thì chuyển điều khiển đến routine vốn được gọi của trình. Những gì virus làm thì gói trong dãy mã lệnh virus, trong đó có kỹ năng tự sao lây nhiễm, và tùy thuộc trình độ người viết virus.
Sự tương tự của mã trình với mã DNA sinh học, và hoạt động của virus tin học, dẫn đến tên gọi "virus". Dẫu vậy sự khác nhau căn bản, là virus sinh học phát tác ngay và đồng thời trong tế bào, còn virus tin học chỉ phát tác khi "được gọi" với tư cách mã lệnh. Nếu nạp virus tin học với tư cách dữ liệu (data) vào bộ nhớ để xem (dump) thì nó không làm được gì cả. Nó cho thấy vai trò cảnh giác khi "click" vào file có virus (tức là có thể view, edit, delete... nhưng đừng "double click").
Trong thiết kế các máy tính địa chỉ các routine cơ bản được bố trí như sau:
Virus lục lọi các bảng này để tìm cách thâm nhập thích hợp. Trước đây các virus thường ngắn, có thể gắn thêm vào tệp mã. Ngày nay virus có thể lưu trữ phần thân ở dạng file riêng và ẩn dấu đâu đó trong đĩa hoặc trên mạng, và nội dung file này có thể là dạng macro hoặc html. Các hệ điều hành đã tăng cường bảo mật những điểm dễ bị tấn công. Vì thế virus phải cố tìm các "lỗ hổng bảo mật" để xâm nhập, và việc tìm ra lỗ hổng đòi hỏi khả năng phân tích mã lệnh phức tạp hơn. Một số virus thì xuất hiện ở dạng chương trình tự lập, thực chất là "phần mềm phá hoại", và thực hiện đánh lừa bằng cách hiện ra là 1 biểu tượng ("icon") hay đường "link" để người thiếu cảnh giác click vào đó .
Lịch sử của virus.
Có nhiều quan niệm khác nhau về lịch sử của virus điện toán. Ở đây chỉ nêu rất vắn tắt khái quát những điểm chung nhất, qua đó, chúng ta có thể hiểu chi tiết hơn về các loại virus:
Các khái niệm có liên quan.
Phần mềm ác tính ("malware").
(chữ ghép của "malicious" và "software") chỉ chung các phần mềm có tính năng gây hại như virus, worm và Trojan horse...
Sâu máy tính ("worm").
Là các chương trình cũng có khả năng tự nhân bản tự tìm cách lan truyền qua hệ thống mạng (thường là qua hệ thống thư điện tử). Điểm cần lưu ý ở đây, ngoài gây tác hại cho máy bị nhiễm, nhiệm vụ chính của worm là phá các mạng ("network") thông tin chia sẻ, làm giảm khả năng hoạt động hay ngay cả hủy hoại các mạng này. Nhiều nhà phân tích cho rằng worm khác với virus, họ nhấn mạnh vào đặc tính phá hoại mạng nhưng ở đây worm được cho là một loại virus đặc biệt.
Worm nổi tiếng nhất được tạo bởi Robert Morris vào năm 1988. Nó có thể làm hỏng bất kì hệ điều hành UNIX nào trên Internet. Tuy vậy, có lẽ worm tồn tại lâu nhất là virus happy99, hay các thế hệ sau đó của nó có tên là Trojan. Các worm này sẽ thay đổi nội dung tệp wsok32.dll của Windows và tự gửi bản sao của chính chúng đi đến các địa chỉ cho mỗi lần gửi điện thư hay message.
Trojan Horse.
Đây là loại chương trình cũng có tác hại tương tự như virus chỉ khác là nó không tự nhân bản ra. Như thế, cách lan truyền duy nhất là thông qua các thư dây chuyền. Để trừ loại này người chủ máy chỉ việc tìm ra tập tin Trojan Horse rồi xóa nó đi là xong. Tuy nhiên, không có nghĩa là không thể có hai con Trojan horse trên cùng 1 hệ thống. Chính những kẻ tạo ra các phần mềm này sẽ sử dụng kỹ năng lập trình của mình để sao lưu thật nhiều con trước khi phát tán lên mạng. Đây cũng là loại virus cực kỳ nguy hiểm. Nó có thể hủy ổ cứng, hủy dữ liệu.
Phần mềm gián điệp ("spyware").
Đây là loại virus có khả năng thâm nhập trực tiếp vào hệ điều hành mà không để lại "di chứng". Thường một số chương trình diệt virus có kèm trình diệt spyware nhưng diệt khá kém đối với các đợt "dịch".
Phần mềm quảng cáo ("adware").
Loại phần mềm quảng cáo, rất hay có ở trong các chương trình cài đặt tải từ trên mạng. Một số phần mềm vô hại, nhưng một số có khả năng hiển thị thông tin kịt màn hình, cưỡng chế người sử dụng.
Botnet.
Là những máy tính bị bắt cóc và điều khiển bởi người khác thông qua Trojan, virus...
Điều đặc biệt nguy hiểm là các botnet được phơi bày từ các tin tặc không cần kỹ thuật lập trình cao. Nó được rao bán với giá từ 20 USD trở lên cho các tin tặc. Hậu quả của nó để lại không nhỏ: mất tài khoản. Nếu liên kết với 1 hệ thống máy tính lớn, nó có thể tống tiền cả 1 doanh nghiệp.
Nhóm của Sites ở Sun Belt cùng với đội phản ứng nhanh của công ty bảo mật iDefense Labs đã tìm ra 1 botnet chạy trên nền web có tên là Metaphisher. Thay cho cách sử dụng dòng lệnh, tin tặc có thể sử dụng giao diện đồ họa, các biểu tượng có thể thay đổi theo ý thích, chỉ việc dịch con trỏ, nhấn chuột và tấn công.
Theo iDefense Labs, các bot do Metaphisher điều khiển đã lây nhiễm hơn 1 triệu PC trên toàn cầu. Thậm chí trình điều khiển còn mã hóa liên lạc giữa nó và bot "đàn em" và chuyển đi mọi thông tin về các PC bị nhiễm cho người chủ bot như vị trí địa lý, các bản vá bảo mật của Windows và những trình duyệt đang chạy trên mỗi PC.
Những công cụ tạo bot và điều khiển dễ dùng trên góp phần làm tăng vọt số PC bị nhiễm bot được phát hiện trong thời gian gần đây. Thí dụ, Jeanson James Ancheta, 21 tuổi, người Mỹ ở bang California, bị tuyên án 57 tháng tù vì đã vận hành 1 doanh nghiệp "đen" thu lợi bất chính dựa vào các botnet điều khiển 400.000 "thành viên" và 3 tay điều khiển bot bị bắt mùa thu năm trước ở Hà Lan chính là trung tâm "đầu não" điều khiển hơn 1,5 triệu PC!
Mặc dù đã có luật để bắt những tội phạm kiểu này, nhưng do dễ dàng có được những công cụ phá hoại nên luôn có thêm người mới gia nhập hàng ngũ tin tặc vì tiền hay vì tò mò.
Keylogger.
Là phần mềm ghi lại chuỗi phím gõ của người dùng. Nó có thể hữu ích cho việc tìm nguồn gốc lỗi sai trong các hệ thống máy tính và đôi khi được dùng để đo năng suất làm việc của nhân viên văn phòng. Các phần mềm kiểu này rất hữu dụng cho ngành luật pháp và tình báo - ví dụ, cung cấp 1 phương tiện để lấy mật khẩu hoặc các khóa mật mã và nhờ đó qua mắt được các thiết bị an ninh. Tuy nhiên, các phần mềm Keylogger được phổ biến rộng rãi trên Internet và bất cứ ai cũng có thể sử dụng cho mục đích lấy trộm mật khẩu và chìa khóa mã hóa.
Phishing.
Là 1 hoạt động phạm tội dùng các kỹ thuật lừa đảo. Kẻ lừa đảo cố gắng lừa lấy các thông tin nhạy cảm, chẳng hạn như mật khẩu và thông tin về thẻ tín dụng, bằng cách giả là 1 người hoặc 1 doanh nghiệp đáng tin cậy trong 1 giao dịch điện tử. Phishing thường được thực hiện bằng cách sử dụng thư điện tử hoặc tin nhắn, đôi khi còn sử dụng cả điện thoại.
Rootkit.
Là 1 bộ công cụ phần mềm dành cho việc che giấu các tiến trình đang chạy, các file hoặc dữ liệu hệ thống. Rootkit có nguồn gốc từ các ứng dụng tương đối hiền, nhưng những năm gần đây, rootkit đã bị sử dụng ngày càng nhiều bởi các phần mềm ác tính, giúp kẻ xâm nhập hệ thống giữ được đường truy nhập 1 hệ thống trong khi tránh bị phát hiện. Người ta đã biết đến các rootkit dành cho nhiều hệ điều hành khác nhau chẳng hạn Linux, Solaris và một số phiên bản của Microsoft Windows. Các rootkit thường sửa đổi một số phần của hệ điều hành hoặc tự cài đặt chúng thành các driver hay các module trong nhân hệ điều hành ("kernel module").
Khi hay tin CD nhạc của Sony cài đặt rookit để giấu file chống sao chép xuất hiện vào tháng 11 năm ngoái, giới tin tặc hân hoan và nhanh chóng khai thác ứng dụng của Sony. Phần mềm của Sony giấu bất kỳ file hay tiến trình bắt đầu với "$sys$", những kẻ viết phần mềm độc hại đã đổi tên file để lợi dụng đặc điểm này.
Vào tháng 3, nhà sản xuất phần mềm chống virus ở Tây Ban Nha là Panda Software cho biết họ đang tìm biến thể của sâu Bagle cực kỳ độc hại có trang bị khả năng của rootkit. Trầm trọng hơn, tương tự như các "nhà sản xuất" chương trình botnet, những kẻ tạo phần mềm rootkit còn bán hoặc phát tán miễn phí các công cụ, giúp những tay viết phần mềm độc hại dễ dàng bổ sung chức năng rootkit cho các virus cũ như Bagle hay tạo loại mới.
1 dự án do Microsoft và các nhà nghiên cứu của đại học Michigan thực hiện đã mở đường cho nghiên cứu rootkit, tạo ra 1 phương thức mới gần như "đặt" hệ điều hành chạy trên phần mềm có tên SubVirt (tên của dự án nghiên cứu). Hệ điều hành vẫn làm việc bình thường, nhưng "máy ảo" điều khiển mọi thứ hệ điều hành nhìn thấy và có thể dễ dàng giấu chính nó.
May mắn là kỹ thuật này không dễ thực hiện và người dùng dễ nhận ra vì làm chậm hệ thống và làm thay đổi những file nhất định. Hiện giờ, loại siêu rootkit này chỉ mới ở dạng ý tưởng, cần nhiều thời gian trước khi tin tặc có thể thực hiện phương thức tấn công này.
Phần mềm tống tiền ("Ransomware").
Là loại phần mềm sử dụng 1 hệ thống mật mã để mã hóa dữ liệu thuộc về 1 cá nhân và đòi tiền chuộc thì mới khôi phục lại.
Backdoor.
Backdoor, nghĩa là "cửa hậu" hay lối vào phía sau. Trong 1 hệ thống máy tính, "cửa hậu" là 1 phương pháp vượt qua thủ tục chứng thực người dùng thông thường hoặc để giữ đường truy nhập từ xa tới 1 máy tính, trong khi cố gắng không bị phát hiện bởi việc giám sát thông thường. Cửa hậu có thể có hình thức 1 chương trình được cài đặt (ví dụ Back Orifice hoặc cửa hậu rookit Sony/BMG rootkit được cài đặt khi 1 đĩa bất kỳ trong số hàng triệu đĩa CD nhạc của Sony được chơi trên 1 máy tính chạy Windows), hoặc có thể là 1 sửa đổi đối với 1 chương trình hợp pháp - đó là khi nó đi kèm với Trojan.
Danh sách các đuôi tệp có khả năng di truyền và bị lây nhiễm.
Các tập tin trên hệ điều hành Windows mang đuôi mở rộng sau có nhiều khả năng bị virus tấn công (xếp theo thứ tự bảng chữ cái tiếng Anh):
Các hình thức lây nhiễm của virus máy tính.
Virus lây nhiễm theo cách cổ điển.
Cách cổ điển nhất của sự lây nhiễm, bành trướng của các loai virus máy tính là thông qua các thiết bị lưu trữ di động: Trước đây đĩa mềm và đĩa CD chứa chương trình thường là phương tiện bị lợi dụng nhiều nhất để phát tán. Ngày nay khi đĩa mềm rất ít được sử dụng thì phương thức lây nhiễm này chuyển qua các ổ USB, các đĩa cứng di động hoặc các thiết bị giải trí kỹ thuật số.
Virus lây nhiễm qua thư điện tử.
Khi mà thư điện tử (email) được sử dụng rộng rãi trên thế giới thì virus chuyển hướng sang lây nhiễm thông qua thư điện tử thay cho các cách lây nhiễm truyền thống.
Khi đã lây nhiễm vào máy nạn nhân, virus có thể tự tìm ra danh sách các địa chỉ thư điện tử sẵn có trong máy và nó tự động gửi đi hàng loạt ("mass mail") cho những địa chỉ tìm thấy. Nếu các chủ nhân của các máy nhận được thư bị nhiễm virus mà không bị phát hiện, tiếp tục để lây nhiễm vào máy, virus lại tiếp tục tìm đến các địa chỉ và gửi tiếp theo. Chính vì vậy số lượng phát tán có thể tăng theo cấp số nhân khiến cho trong 1 thời gian ngắn hàng hàng triệu máy tính bị lây nhiễm, có thể làm tê liệt nhiều cơ quan trên toàn thế giới trong 1 thời gian rất ngắn.
Khi mà các phần mềm quản lý thư điện tử kết hợp với các phần mềm diệt virus có thể khắc phục hành động tự gửi nhân bản hàng loạt để phát tán đến các địa chỉ khác trong danh bạ của máy nạn nhân thì chủ nhân phát tán virus chuyển qua hình thức tự gửi thư phát tán virus bằng nguồn địa chỉ sưu tập được trước đó.
Phương thức lây nhiễm qua thư điển tử bao gồm:
Virus lây nhiễm qua mạng Internet.
Theo sự phát triển rộng rãi của Internet trên thế giới mà hiện nay các hình thức lây nhiễm virus qua Internet trở thành các phương thức chính của virus ngày nay. Có các hình thức lây nhiễm virus và phần mềm độc hại thông qua Internet như sau:
Biến thể.
1 hình thức trong cơ chế hoạt động của virus là tạo ra các biến thể của chúng.
Biến thể của virus là sự thay đổi mã nguồn nhằm các mục đích tránh sự phát hiện của phần mềm diệt virus hoặc làm thay đổi hành động của nó. Một số loại virus có thể tự tạo ra các biến thể khác nhau gây khó khăn cho quá trình phát hiện và tiêu diệt chúng. Một số biến thể khác xuất hiện do sau khi virus bị nhận dạng của các phần mềm diệt virus, chính tác giả hoặc các tin tặc khác (biết được mã của chúng) đã viết lại, nâng cấp hoặc cải tiến chúng để tiếp tục phát tán.
Virus có khả năng vô hiệu hoá phần mềm diệt virus.
Một số virus có khả năng vô hiệu hoá hoặc can thiệp vào hệ điều hành làm tê liệt các phần mềm diệt virus. Sau hành động này chúng mới tiến hành lây nhiễm và tiếp tục phát tán. Một số khác lây nhiễm chính vào phần mềm diệt virus (tuy khó khăn hơn) hoặc ngăn cản sự cập nhật của các phần mềm diệt virus. Kể cả cài lại hệ điều hành máy tính và cài diệt sau đó nhưng đã quá trễ.
Các cách thức này không quá khó nếu như chúng nắm rõ được cơ chế hoạt động của các phần mềm diệt virus và được lây nhiễm hoặc phát tác trước khi hệ thống khởi động các phần mềm này. Chúng cũng có thể sửa đổi file host của hệ điều hành Windows để người sử dụng không thể truy cập vào các website và phần mềm diệt virus không thể liên lạc với server của mình để cập nhật.
Cách phòng chống virus và ngăn chặn tác hại của nó.
Để không bị lây nhiễm virus thì giải pháp triệt để nhất là ngăn chặn mọi kết nối thông tin vào thiết bị máy tính bao gồm ngắt kết nối mạng chia sẻ, không sử dụng ổ mềm, ổ USB hoặc copy bất kỳ file nào vào máy tính, đặc biệt các dạng file có nguy cơ cao. Điều này thực sự hiệu quả khi mà hiện nay sự tăng trưởng số lượng virus mới hàng năm trên thế giới rất lớn.
Tuy nhiên, trong thời đại "bùng nổ thông tin", đa số mọi người đều có nhu cầu truy cập vào "không gian số", không thể khẳng định chắc chắn bảo vệ an toàn 100% cho máy tính trước hiểm hoạ virus và các phần mềm không mong muốn, nhưng chúng ta có thể hạn chế đến tối đa với các biện pháp bảo vệ dữ liệu của mình:
Sử dụng phần mềm diệt virus.
Bảo vệ bằng cách trang bị thêm một phần mềm diệt virus có khả năng nhận biết nhiều loại virus máy tính và liên tục cập nhật dữ liệu để phần mềm đó luôn nhận biết được các virus mới.
Trên thị trường Việt Nam hiện có rất nhiều các tên tuổi phần mềm diệt virus như: 
Sử dụng tường lửa cá nhân.
Tường lửa cá nhân ("Personal Firewall") không phải một cái gì đó quá xa vời hoặc chỉ dành cho các nhà cung cấp dịch vụ Internet (ISP) mà mỗi máy tính cá nhân cũng cần phải sử dụng tường lửa để bảo vệ trước virus và các phần mềm độc hại. Khi sử dụng tường lửa, các thông tin vào và ra đối với máy tính được kiểm soát một cách vô thức hoặc có chủ ý. Nếu 1 phần mềm độc hại đã được cài vào máy tính có hành động kết nối ra Internet thì tường lửa có thể cảnh báo giúp người sử dụng loại bỏ hoặc vô hiệu hoá chúng. Tường lửa giúp ngăn chặn các kết nối đến không mong muốn để giảm nguy cơ bị kiểm soát máy tính ngoài ý muốn hoặc cài đặt vào các chương trình độc hại hay virus máy tính.
Tường lửa được chia hai loại: 
Cập nhật các bản vá lỗi của hệ điều hành.
Hệ điều hành Windows (chiếm đa số) luôn luôn bị phát hiện các lỗi bảo mật chính bởi sự thông dụng của nó, tin tặc có thể lợi dụng các lỗi bảo mật để chiếm quyền điều khiển hoặc phát tán virus và các phần mềm độc hại. Người sử dụng luôn cần cập nhật các bản vá lỗi của Windows thông qua trang web Microsoft Update (cho việc nâng cấp tất cả các phần mềm của hãng Microsoft) hoặc Windows Update (chỉ cập nhật riêng cho Windows). Cách tốt nhất hãy đặt chế độ nâng cấp (sửa chữa) tự động (Automatic Updates) của Windows. Tính năng này chỉ hỗ trợ đối với các bản Windows mà Microsoft nhận thấy rằng chúng hợp pháp.
Vận dụng kinh nghiệm sử dụng máy tính.
Cho dù sử dụng tất cả các phần mềm và phương thức trên nhưng máy tính vẫn có khả năng bị lây nhiễm virus và các phần mềm độc hại bởi mẫu virus mới chưa được cập nhật kịp thời đối với phần mềm diệt virus. Người sử dụng máy tính cần sử dụng triệt để các chức năng, ứng dụng sẵn có trong hệ điều hành và các kinh nghiệm khác để bảo vệ cho hệ điều hành và dữ liệu của mình. Một số kinh nghiệm tham khảo như sau:
Bảo vệ dữ liệu máy tính.
Nếu như không chắc chắn 100% rằng có thể không bị lây nhiễm virus máy tính và các phần mềm hiểm độc khác thì bạn nên tự bảo vệ sự toàn vẹn của dữ liệu của mình trước khi dữ liệu bị hư hỏng do virus (hoặc ngay cả các nguy cơ tiềm tàng khác như sự hư hỏng của các thiết bị lưu trữ dữ liệu của máy tính). Trong phạm vi về bài viết về virus máy tính, bạn có thể tham khảo các ý tưởng chính như sau:
Thực chất các hành động trên không chắc chắn là các dữ liệu được sao lưu không bị lây nhiễm virus, nhưng nếu có virus thì các phiên bản cập nhật mới hơn của phần mềm diệt virus trong tương lai có thể loại bỏ được chúng.