Phân tích động(Dynamic analysis): dựa vào hành vi thực thi của mã độc để đƣa ra đánh giá về ảnh hƣởng của mã độc đối với hệ thống. Phân tích động là phân tích cách hoạt động của virus khi nó đƣợc thực thi, nó kết nối đến đâu, lây lan nhƣ thế nào, cài đặt những gì vào hệ thống, thay đổi thành phần nào, hoạt động
ra sao. Thông thƣờng việc phân tích động mã độc thƣờng thông qua hệ thống máy ảo Sandbox. Phân tích động thƣờng dựa vào các công cụ monitor hệ thống mạng (nhƣ ProcessMon, TCPView, Autoruns …).
Ƣu điểm:
Cho cái nhìn nhanh chóng và tổng quát về mã độc đƣợc phân tích.
Giám sát đƣợc các hành động của phần mềm độc hại khi thực hiện trên
hệ thống.
Nhƣợc điểm:
Với những hành vi bất thƣờng của mã độc thì việc phân tích còn hạn chế.
Đôi khi rất khó có thể thực thi đƣợc phần mềm độc hại do cần tham số
thực thi.
Qúa trình phân tích động có thể mô hình theo các bước sau đây:
Bƣớc 1. Bật chƣơng trình Process Explorer. Bƣớc 2. Bật chƣơng trình bắt gói tin Wireshark.
Bƣớc 3. Khởi động chƣơng trình SysAnalyzer.
Bƣớc 4. Khởi động chƣơng trình Regshot và chạy lấy thông tin registry
hiệnthời của hệ thống lần đầu tiên.
Bƣớc 5. Load mã độc hại vào chƣơng trình Sysanalyzer để chạy mã độc hại. Bƣớc 6. Chạy tiếp chƣơng trình Regshot để so sánh thông tin registry đã thay đổi những gì.
Bƣớc 7. Kiểm tra chƣơng trình Process Explorer, Svchost Process Analyzer.
Bƣớc 8. Kiểu tra chƣơng trình Wireshark và TCPView để xem các thông tin về kết nối.
Đối với các mẫu không phải virus (trojan, adware, worm, …) hoặc các mẫu không cần phân tích mà chỉ cần theo dõi hành vi tác động lên hệ thống thì chỉ cần dừng lại ở bƣớc phân tích qua các công cụ giám sát. Đối với các mẫu virus (có hành vi lây file) hoặc các mẫu khác cần phân tích để lấy các đoạn mã cụ thể, cần thực hiện Giai đoạn phân tích để lấy các thông tin chi tiết hơn
Sau giai đoạn theo dõi và phát hiện mã độc, chúng ta đã có các thông tin cơ bản liên quan tới mẫu cần phân tích: Các tài nguyên mẫu tác động tới: các file, thƣ mục, key trên thanh ghi, cách thức hoạt động cơ bản (Hình thức, cách thức và trình tự lây lan, phá hoại). Nhiệm vụ của việc phân tích nhằm: Tìm ra triệt để các hành vi phá hoại, phân tích để diệt mẫu toàn diện nhất.
Để phân tích nhằm tìm cách thức lây file, ta sử dụng chƣơng trình mồi và
sử dụng ProcessMonitor để theo dõi đƣợc thƣ mục nào là thƣ mục đầu tiên mà
mẫu cần phân tích, đƣa các chƣơng trình mồi vào và theo dõi sự thay đổi của chƣơng trình mồi. Nếu chƣơng trình mồi bị thay đổi, ta chuyển sang bƣớc tiếp theo, nếu không, ta thay thế bằng các chƣơng trình mồi khác và tiếp tục thử khi chọn đƣợc chƣơng trình mồi hợp lý.
Để phân tích các hành vi ta cần dựa vào các hành vi cần theo dõi từ giai đoạn kiểm tra, theo dõi và phát hiện chúng ta sẽ lựa chọn các API tƣơng ứng. Tƣơng tác tới registry, có các API: RegCloseKey, RegOpenKeyEx, RegQueryInfoKey, RegQueryValueEx…
Tƣơng tác tới các trình duyệt để lấy Cookie: các API tƣơng tác tới file, đồng thời quan sát thƣ mục liên quan tới browser: mở cổng hậu, tạo các socket kết nối: WSAStartup, WSASocket,WSAConnect,WSAAccept, WSASend,WSARec.
Từ các hành vi này, ta tiến hành đặt các break point tại các API quan tâm và tìm đƣợc vị trí các đoạn mã mong muốn.
Mỗi phƣơng pháp đều có điểm mạnh, điểm yếu riêng. Vì thế khi phân tích mã độc cần kết hợp cả 2 phƣơng pháp phân tích tĩnh và phân tích động mới hiệu quả.
2.3 Phƣơng pháp Phân tích Entropy để phát hiện che giấu Mã độc
Phân tích entropy kiểm tra sự đa dạng về mặt thống kê trong tệp tin nhiễm mã độc, cho phép ngƣời phân tích nhanh chóng và hiệu quả xác định các mẫu mã độc đã nén hoặc mã hóa. [7]
Kỹ thuật đóng gói để che giấu mã độc
Kỹ thuật đóng gói (bao gồm kỹ thuật nén và mã hóa) với mục đích che giấu mã độc đƣợc kẻ viết mã độc thƣờng sử dụng để chuyển đổi mã thực thi nhị phân sang một định dạng khác nhằm thu gọn mã độc và biến dạng khác biệt hẳn so với ban đầu để tránh sự phát hiện của các chƣơng trình diệt virus dựa trên cơ sở mẫu nhận dạng. Trong nhiều trƣờng hợp, kẻ viết mã độc hại tổ hợp đệ quy các kỹ thuật nén và mã hóa khác nhau để cùng một mã độc nhƣng có thể nhanh chóng tạo ra một lƣợng lớn biến thể nhị phân thực thi của mã độc nhằm phát tán
. Đoạn mã thực thi đóng gói đƣợc xây dựng với hai phần chính trong quy
trình đóng gói bao gồm hai giai đoạn. Trong giai đoạn đầu tiên của quá trình đóng gói, đoạn mã thực thi gốc đƣợc nén và lƣu giữ trong tệp thực thi nén nhƣ dữ liệu thông thƣờng. Sau đó, modul giải nén đƣợc thêm vào tệp thực thi nén. Modul giải nén này sau này sẽ đƣợc sử dụng để phục hồi đoạn mã gốc.
Quá trình mở gói thực hiện theo các bƣớc có thứ tự ngƣợc lại với quá trình đóng gói. Moule giải nén trƣớc tiên đƣợc thực hiện và đoạn mã thực thi nhảy đến câu lệnh thực thi đầu tiên của mã giải nén. Sau khi phục hồi đoạn mã thực thi gốc, con trỏ lệnh thực thi sẽ nhảy ra khỏi câu lệnh cuối cùng của module giải nén để nhảy đến điểm vào (entry point) của đoạn mã thực thi.
Kỹ thuật đóng gói xuất hiện trong phần lớn các mẫu mã độc hại do đó điều này tạo ra một thách thức vô cùng lớn cho ngƣời phân tích mã, đặc biệt là sử dụng phƣơng pháp phân tích tĩnh để phân tích một lƣợng lớn mẫu mã độc hại. Bởi vì, ngƣời phân tích cần phải xác định đoạn mã độc hại bị mã hóa hay nén để thực hiện việc giải nén cũng nhƣ giải mã một cách nhanh chóng và hiệu quả trƣớc khi bắt tay vào thực hiện quá trình phân tích mã độc. Do nhiều mẫu virus vẫn duy trì trạng thái mã hóa và nén, ngƣời phân tích phải xác định chúng bằng phân tích thủ công hoặc sử dụng kỹ thuật phân tích ngƣợc (reverse engineering). Yêu cầu đặt ra là cần phải xác định nhanh chóng và chính xác đoạn mã độc nén và giải nén. Phƣơng pháp phân tích entropy là một kỹ thuật hỗ trợ cho ngƣời phân tích mã độc giải quyết đƣợc yêu cầu này.
Phương pháp Entropy phát hiện mã độc được nén và mã hóa. Khái niệm Entropy
Nguồn gốc khái niệm entropy đến từ khoa học nhiệt động lực học. Entropy là một phép đo độ nhiễu loạn trong một hệ thống khép kín.
học để miêu tả sự ngẫu nhiên trong luồng thông tin. Shannon quan tâm đến các kênh truyền tin, nhƣng kết quả của ông có thể ứng dụng cho các tệp tin trong máy tính. Điểm khác nhau cơ bản giữa entropy trong lý thuyết nhiệt động lực học và entropy trong lý thuyết thông tin là trong nhiệt động lực học bạn không thể biết tất các các trạng thái có thể xảy ra do vậy, phƣơng pháp thống kê chỉ đƣợc sử dụng ở mức gần đúng. Trong lý thuyết thông tin, số trạng thái và khả năng các trạng thái đƣợc xác định chính xác bởi vì nội dung của tệp tin là đƣợc biết một cách chắc chắn.
Chúng ta có thể tính entropy của các sự kiện rời rạc ngẫu nhiên x sử dụng công thức sau:
Trong phân tích thông tin, chúng ta quan tâm đến các byte dữ liệu (mỗi
byte có 256 giá trị xảy ra khác nhau). Bởi vậy, giá trị entropy của một tệp sẽ là giá trị trong khoảng từ 0 đến 8:
Entropy thông tin mô tả mức độ hỗn loạn trong một tín hiệu lấy từ một sự kiện ngẫu nhiên. Nói cách khác, entropy cũng chỉ ra có bao nhiêu thông tin trong tín hiệu, với thông tin có nghĩa là các phần không hỗn loạn ngẫu nhiên của tín hiệu. Ví dụ, nhìn vào một dòng chữ tiếng Việt, đƣợc mã hóa bởi các chữ cái, khoảng cách, và dấu câu, tổng quát là các ký tự. Dòng chữ có ý nghĩa sẽ không hiện ra một cách hoàn toàn hỗn loạn ngẫu nhiên. Một tập tin đƣợc nén cũng có thể bị phát hiện nhờ kỹ thuật tính toán entropy. Các dữ liệu nén hoặc mã hóa khá gần giống với các dữ liệu ngẫu nhiên, do đó nó có mức entropy cao. Trong khi các dữ liệu thƣờng không đƣợc mã hóa hay nén có mức entropy thấp. Sử dụng entropy để đo sự ngẫu nhiên và không dự đoán trƣớc trong một chuỗi sự kiện hoặc một dãy giá trị dữ liệu là chấp nhận đƣợc về mặt thống kê trong lĩnh vực lý
thuyết thông tin. Trong phân tích mã độc hại, các nhà nghiên cứu đã sử dụng một số công cụ phân tích entropy phát hiện đoạn mã độc nén và mã hóa chẳng hạn nhƣ PEAT.
PEAT (Portable Executable Analysis Toolkit) là bộ công cụ cho phép ngƣời phân tích kiểm tra các khía cạnh của cấu trúc tệp Window PE (Portable Executable). PEAT tính toán entropy cho mỗi đoạn PE của từng đoạn tệp. Sau đó, nó chuẩn hóa những giá trị entropy này so với entropy tổng cộng của các đoạn PE đã tính. Điều này giúp ngƣời phân tích xác định đoạn PE có sự thay đổi lớn giá trị entropy, từ đó xác định đoạn PE có khả năng bị sửa so với đoạn PE nguyên bản ban đầu. Để sử dụng PEAT hiệu quả, ngƣời phân tích phải có nền tảng kiến thức về tệp PE, virus, và nội dung về mức hệ thống khác, cũng nhƣ kinh nghiệm làm việc với PEAT.
Entropy của một khối dữ liệu là một phép đo thống kê lƣợng thông tin nó chứa bên trong. Trong [1], tác giả Hamrock và Lyda đƣa ra một quan sát đáng chú ý là các dữ liệu nén và mã hóa trong mẫu mã dữ liệu độc hại đóng gói có mức entropy cao. Mã chƣơng trình và dữ liệu bình thƣờng có mức entropy thấp hơn nhiều. Sử dụng quan sát này, mã độc hại sử dụng kỹ thuật đóng gói đƣợc xác định bởi mức entropy cao trong nội dung của nó.
Để đánh giá khả năng công cụ Bintropy dựa trên phân tích entropy, Lynda và Hamrock tiến hành đánh giá thử nghiệm trên bốn tập dữ liệu với các phân loại tệp khác nhau: plain text, thực thi thông thƣờng, thực thi nén và thực thi mã hóa. Mỗi tập dữ liệu gồm 100 tệp khác nhau, mỗi tệp đƣợc tính entropy dựa trên các khối dữ liệu có độ dài 256 bytes. Công cụ Bintropy tính entropy mức trung bình của các khối và khối có mức entropy cao nhất. Mục đích thử nghiệm này là xác định mức entropy tối ƣu để phân loại tệp thực thi thông thƣờng và tệp thực thi đã
biến đối sử dụng kỹ thuật mã hóa hoặc kỹ thuật nén. Sau khi sử dụng tập dữ liệu training, Bintropy có khả năng phát hiện các tệp thực thi bị nén hoặc mã hóa khi đặc tính entropy vƣợt qua một mức định trƣớc.
Bảng 2.1 Độ chính xác thống kê entropy dựa trên tập dữ liệu
Theo Bảng 2.1, với độ chính xác đạt 99% với mức Entropy trong khoảng 6,677 đến 7,177 công cụ Bintropy sẽ phát hiện tệp nén hay mã hóa.
Đánh giá và kết luận
Ƣu điểm của phƣơng pháp phân tích entropy là đƣa ra một kỹ thuật tiện dụng và nhanh chóng để phân tích một mẫu mức nhị phân và xác định vùng tệp PE khả nghi. Một khi việc phân tích xác định đƣợc phần có mức entropy bất thƣờng, ngƣời phân tích có thể thực hiện phân tích sâu và chi tiết hơn với các công cụ kỹ thuật dịch ngƣợc khác (reverse – engineering) chẳng hạn nhƣ IDAPro diassembler.
Phân tích entropy đơn giản trong ứng dụng và đƣợc chỉ ra là khá hiệu quả, nhƣng nó cũng bộc lộ một số nhƣợc điểm. Phân tích entropy có thể thất bại khi phát hiện các mã độc hại sử dụng kỹ thuật đóng gói mà kẻ viết chƣơng trình đã Tập dữ liệu Mức entropy trung bình Phát hiện chính xác 99% với mức Entropy trong khoảng
Mức entropy cao nhất Plain text 4,347 4,066 – 4,629 4,715 Thực thi thông thƣờng 5,099 4,941 – 5,258 6,227 Thực thi nén 6,801 6,677 – 6,926 7,233 Thực thi mã hóa 7,175 7,174 – 7,177 7,303
có ý định làm mức entropy của nó thấp xuống so với mức entropy thực. Tuy nhiên, phƣơng pháp này hiện vẫn chƣa đƣợc phát hiện trong các mã độc hại. Thêm nữa, phân tích entropy có thể thất bại khi xác định mã độc đã sử dụng kỹ thuật đóng gói mã mà không sử dụng kỹ thuật nén hay mã hóa, trong đó kẻ viết mã độc chỉ thực hiện che dấu đơn giản trên nội dung của mã độc hại sử dụng ảo hóa câu lệnh không đòi hỏi mã hóa hay nén, khiến phân tích entropy không thể xác định mã độc sử dụng phƣơng pháp này.
2.4 Kỹ thuật phát hiện mã độc dựa trên phân tích điểm yếu
Không ngẫu nhiên mà ngƣời ta đặt tên cho mã độc là vius, worm … Chính con ngƣời đã bắt chƣớc cơ chế lây lan của virus sinh học để tạo những mã độc có khả năng lan truyền trong hệ thống máy tính. Vậy, điểm yếu của virus sinh học cũng có thể là điểm yếu của mã độc trên máy tính.
Để mọi ngƣời dễ hình dung, chúng tôi chọn hai loại dịch bệnh đƣợc nhiều ngƣời biết nhất, đó là Sida và Sars. Về mức độ nguy hiểm đối với ngƣời bệnh, Sars có mức độ nguy hiểm rất cao do khả năng lây lan qua không khí, con ngƣời lây nhanh nhất so với các bệnh khác lây qua nƣớc bọt (lao) hay máu (sida, viêm gan). Tuy nhiên, dịch Sars lại đƣợc con ngƣời ngăn chặn rất hiệu quả. Đó chính là do bệnh bùng phát nhanh, dễ phát hiện. Còn Sida, tuy khó lan truyền vì phải lây qua đƣờng máu nhƣng lại ủ bệnh lâu (lên đến 5 năm) nên khả năng lan truyền trong cộng đồng lớn hơn nhiều so với Sars. Vì vậy, Sida đến nay là một đại dịch mà chúng ta không đủ khả năng ngăn chặn Nhƣ vậy, khả năng tồn tại lâu dài trong cơ thể là mối đe dọa lớn.
Tƣơng tự nhƣ virus, mã độc cần tồn tại lâu dài trong máy tính để có thể tiếp tục lây nhiễm qua các máy khác. Nếu mã độc chỉ vào máy rồi tự biến mất sau khi khởi động lại máy thì khả năng lây nhiễm rộng trong cộng đồng là rất thấp. Do
đó, khi chiếm đƣợc quyền điều khiển, việc quan trọng nhất của mã độc là tạo ra cơ chế để tái khởi động, hay nói cách khác, chúng tạo ra cơ chế để sống mãi trong máy tính.
Gần đây, mã độc còn có trong những trang web. Tuy nhiên, loại mã độc này chỉ làm đƣợc những gì trình duyệt cung cấp. Để làm đƣợc nhiều việc hơn, sau khi chiếm đƣợc quyền điều khiển trình duyệt, mã độc thƣờng tạo một tập tin thực thi trong máy của nạn nhân. Nhƣ vậy, các loại mã độc lây lan qua trình duyệt web truy cập vào thẳng bộ nhớ nhƣng vẫn phải đi qua công đoạn ghi file vào đĩa để tạo cơ chế tái khởi động.
Mọi con đƣờng đều dẫn đến việc phải ghi mình vào đĩa và tạo cơ chế tái khởi động. Đây chính là tử huyệt của mã độc. Nhƣ vậy, nếu ta ngăn chặn đƣợc cơ chế tái khới động thì cũng đồng nghĩa với việc chấm dứt trò chơi mèo bắt chuột với mã độc.
Các cơ chế tái khởi động của mã độc
- Ẩn mình trong boot sector (boot virus – loại này bây giờ rất ít).
- Lây nhiễm vào một tập tin thƣờng đƣợc gọi.
- Tạo một bản sao của chính mình ở máy bị lây nhiễm và tạo cơ chế tái khởi
dộng nhƣ:
o Thêm dòng lệnh load trong win.ini, system.ini
o Thêm vào cơ chế staup, logon.
o Thêm vào auto run của USB
o Giả dạng là một thƣ mục
Cơ chế đóng băng đĩa cứng
Ý tƣởng về việc ngăn chặn mã độc tái khởi động đã đƣợc hiện thực hóa bằng cách đóng băng đĩa cứng. Tuy nhiên, việc đóng băng đĩa cứng cũng đồng nghĩa với việc không cho phép ngƣời dùng lƣu dữ liệu của mình Do đó, các chƣơng trình dạng đóng băng đĩa chỉ phù hợp với các máy tính công cộng. Máy tính sử dụng để làm việc hàng ngày hó có thể dùng phƣơng pháp này.