Thiết kế đối chiếu (reverse engineering) Malware (phần 1)

Với nhiều người hiện nay, thiết kế đối chiếu (reverse engineering) là cơ chế còn khá lạ lẫm. Họ thậm chí không biết nó là cái gì và sử dụng ra sao. Trong loạt bài này chúng tôi sẽ giới thiệu với các bạn nội dung cơ bản cách áp dụng phương thức reverse engineering trong lĩnh vực bảo mật vốn phát triển và biến đổi hết sức nhanh chóng.

Reverse Engineering và bạn

Tôi nghe nói đến thuật ngữ này lần đầu tiên một vài năm trước đây. Nhưng thực sự lúc đó tôi không để ý lắm, và nó cũng không có gì đặc biệt để ngay lập tức chui vào đầu tôi. Sau khi chuyển sang nghiên cứu một số lĩnh vực bảo mật máy tính như: giao thức mạng, dò tìm xâm nhập, bảo mật ứng dụng Web tôi mới bắt đầu quan tâm nhiều đến reverse engineering. Tại sao có thể đảo ngược kiến trúc cách dùng của một thực thi? Các kĩ năng cần thiết để thực hiện công việc này? Khi thực hiện một việc gì đó, mong muốn làm đã là một nửa vấn đề. Nửa còn lại cần đến sự hiểu biết về cách hoàn thành công việc đó như thế nào.

Trước khi thảo luận về các kỹ năng và kiến thức đòi hỏi phải có để thực hành reverse engineering, có lẽ chúng ta nên hiểu lý do vì sao nó hết sức quan trọng với người làm công việc quản trị hoặc thực hành bảo mật. Như bạn đã biết, mạng máy tính luôn là đích ngắm của các cuộc tấn công. Có hàng trăm, thậm chí hàng nghìn hacker với nhiều mức kỹ năng khác nhau, nhiều kiểu thâm nhập, tấn công, càn quét luôn rình rập xung quanh khiến mạng của bạn lúc nào cũng ở tình trạng nguy hiểm. Vấn đề không phải là "liệu có hay không" mà là "khi nào" một cuộc tấn công nào đó sẽ viếng thăm bạn. Chúng ta nên tạo cơ hội may mắn cho kẻ tấn công hay là luôn chủ động điều khiển trò chơi mỗi ngày?

Giả sử rằng có một kẻ tấn công đã phá thủng được hàng rào phòng thủ của bạn. Nhanh chóng phát hiện được cuộc tấn công, ngăn chặn ngay lập tức, hạn chế tối đa thiệt hại do nó gây ra là kỹ năng lớn nhất bạn có. Sở dĩ được như vậy vì IDS đã thực hiện công việc cảnh báo trong thời gian nhanh nhất. Nhưng thực thi được dùng để phá hoại mạng của bạn liệu đã hoàn toàn bị ngăn chặn? Bạn có thể tìm ra nó bằng cách kiểm chứng nhật ký IDS, sau đó có thể đặt máy tính offline. Không có thông tin nào trong file nhật ký (log) tiết lộ thêm điều gì. Bạn có thể làm gì đây?

Bước đầu tiên trong nhiều bước

Bước đầu tiên khi gặp phải một cuộc tấn công là chặn nó lại, sau đó làm sạch toàn bộ máy bị tấn công, rồi xác định lỗ hổng nào đã bị khai thác. Đó có phải là zero-day không, hay đơn giản chỉ do bạn lỏng lẻo trong việc sử dụng các bản vá lỗi ở một máy PC nào đó. Nếu đúng là do chưa cập nhập đầy đủ các bản update và patch, hãy xây dựng lại máy tính và áp dụng đầy đủ. Còn nếu là các trường hợp khác, bạn nên chặn việc sao chép lỗ hổng và xem nó là dạng mã nguồn hay được biên dịch lại. Tôi đã từng nghe nhiều người nói rằng "điều đó hầu như không thể thực hiện được". Cũng đúng, nhưng bạn có thể tìm ra lỗ hổng với một số kiểu tìm kiếm sáng tạo. Hiện nay đã có nhiều cách thức tìm kiếm mailware nhỏ gọn được cung cấp. Chúng ta sẽ tìm hiểu về chúng trong nội dung giới hạn của loạt bài này. Nó được tạo và đưa lên nhờ công cụ rất thông minh HDM của Metasploit.

Với những thông tin đã được cung cấp trong tay, bây giờ là lúc các bạn nên download và tìm hiểu chương trình malware thực tế là như thế nào. Tất nhiên, "rước hổ vào nhà" thì không thể không có những nguy hiểm nhất định. Nhưng như các cụ nhà ta đã nói “có vào hang cọp mới bắt được cọp”, nếu không hiểu "đối thủ" thì sao có thể phòng chống và bảo vệ mạng hiệu quả. Bạn nên làm việc trong giới hạn ảnh VMware hoặc sử dụng một máy tính chuyên dụng tách riêng từ mạng của mình. Như thế sẽ không còn phải sợ hay lo mình có thể tự phá hoại chính mạng của mình khi cài đặt thử malware.

Sử dụng một số malware

Chú ý tuân thủ những cảnh báo bảo mật đã đưa ra ở trên. Sau đó bạn có thể download và sử dụng một số mẫu malware có sẵn trên một số website như FrSirt (có thể bây giờ đã bị hạn chế đi rất nhiều) hay Securiteam. Tuỳ thuộc vào mức kỹ năng bạn nên lựa chọn cho mình một malware vừa phải. Có thể bạn không biết cách biên dịch mã nguồn vào một thực thi PE. Trong bài có một số hướng dẫn nâng cao vừa phải cho bạn.

Đây mới là phần thông tin ngữ cảnh đầu tiên về reverse engineering. Sở dĩ như vậy vì có một số lý do quan trọng: reverse engineering không phải là chủ đề dễ nắm bắt; người đọc có nhiều mức độ kỹ năng khác nhau. Để phù hợp nhất, trước khi thực sự bắt tay vào quá trình reverse engineering, bạn nên trang bị cho mình những kiến thức cơ bản và các kĩ năng cơ sở nhất như đọc hiểu đoạn mã, biên dịch mã nguồn,…

Download malware

Để thực hiện quá trình reverse engineering, bạn cần các kỹ năng sau theo từng cấp độ khác nhau:

1. Đầu tiên và trước nhất là kỹ năng lập trình, hay ít nhất có thể đọc hiểu mã nguồn. Điều này trở thành cực kỳ quan trọng khi bạn sử dụng một ngôn ngữ disassembler như Ollydbg hay IDA Pro. Trong bài này chúng ta sẽ dùng các ngôn ngữ đó làm ví dụ. Nó rất có giá và khá thiết thực.

2. Hiểu phương pháp luận, tức mọi lý thuyết về cách thức, nguyên tắc hoạt động của reverse engineering. Nó bao gồm cả phần tĩnh và phần động.

3. Biết sử dụng công cụ nào trong từng phần động, tĩnh.

Ba bước ở trên nghe có vẻ khó khăn, nhưng thực tế bạn chỉ cần thu thập đủ thông tin, các công cụ và máy tính thử nghiệm thích hợp, đọc hiểu và cố gắng một chút là mọi sự trở nên dễ dàng và sáng tỏ. Kỹ năng quan trọng nhất là kiến thức về lập trình. Bạn không cần phải là một lập trình viên mức doanh nghiệp mới có thể hiểu và thực hành được Reverse Engineering. Thậm chí bạn cũng không cần phải là một lập trình viên, đơn giản chỉ cần đọc hiểu được mã nguồn với một số chức năng lập trình là đã có thể thực hiện được các bước đơn giản nhất.

Cuối cùng là download một malware mẫu và thực hành. Bạn có thể tìm thấy malware trên website Metasploit như đã đề cập tới ở trên. Nhưng xin nhắc lại là phải tuân thủ các nguyên tắc bảo mật an toàn cho máy tính. Khi kích vào link liên kết, bạn sẽ thấy ảnh màn hình như ở bên dưới:

Đây là trang chủ, gõ malware vào ô tìm kiếm và ấn enter. Một loạt mailware mẫu được đưa ra cho bạn download.

Dùng chuột hoặc phím di chuyển lên xuống, chọn malware bạn muốn dùng để thử nghiệm. Nhưng nhớ rằng bạn phải đảm bảo mình đang thử nghiệm malware trong môi trường an toàn: đừng làm điều này trong máy tính đang làm việc hoặc chứa dữ liệu quan trọng.

Tiếp theo là gì?

Bây giờ bạn đã có malware mẫu được download an toàn trên ảnh VMware hay một máy tính độc lập. Chúng ta sẽ bắt đầu xem xét nó. Trước khi bắt đầu bạn nên chuẩn bị chu đáo cho mình phương thức làm việc có tổ chức với từng bước cụ thể thích hợp. Có thể bạn sẽ gặp phải nhiều phần malware giống y hệt nhau. Bạn sẽ phải chỉ ra được điểm khác nhau giữa chúng. Ngoài các xung đột bảng băm, bạn có thể dùng MD5 hash. Malware thường có nhiều biến thể khác nhau. Chỉ ra sự khác nhau giữa chúng không phải dễ dàng nếu kỹ năng reverse engineer của bạn chưa khá lắm. Do đó, sử dụng MD5 hash là giải pháp rất hữu ích cho bạn.

Bạn có thể tải về một số tiện ích thực hiện chức năng trên trong Windows như MAP hay Malcode Analyst Pack. Các tiện ích này được phát triển từ iDefense. Chương trình rất nhỏ gọn nhưng làm được nhiều việc cho bạn. Nó có khả năng chạy các thủ tục MD5 checksum để kiểm tra file và folder, được để trong gói MSI. Phần cài đặt khá bình thường, không có gì đặc biệt. Nếu kích phải chuột lên file hoặc thư mục đang kiểm tra, nhiều tùy chọn hơn sẽ xuất hiện. “Hash Files” (tức thuật toán băm file) là một trong số đó. Đơn giản bạn chỉ cần chọn một tùy chọn và để cho chương trình thực hiện công việc của nó. Xem hình minh họa bên dưới để biết ví dụ mẫu về file xuất (output).

Bạn sẽ thấy rằng nội dung của thư mục “debanot” có một MD5 hash với giá trị rất giống giá trị được thể hiện. Cộng thêm với một số thông tin quan trọng khác như tên file, kích thước tính theo byte, bạn có thể dựa trên MD5 hash chạy ở phần nào đó của malware để phân tích, tìm ra điểm khác biệt giữa chúng. Bạn cũng nên xem xét MAP cẩn thận hơn. Nó có nhiều thành phần giúp chúng ta phân tích malware rất tốt. Đấy cũng chính là mục đích khi viết chương trình.

Sẵn sàng?

Bây giờ bạn đã có phần malware trong tay, sử dụng MD5 hash, và tiến tới thực sự bẻ khóa crack của nó. Bạn sẽ cần đến một trình soạn thảo như Heaventools. Có nhiều trình soạn thảo miễn phí, nhưng cụ thể ở đây chúng ta sẽ làm ví dụ với một phiên bản thương mại.

Malware bạn download về có thể khác nhiều với malware ví dụ. Nó có sử dụng từ khóa Trojan trong công cụ tìm kiếm của Metasploit với một biểu tượng cụ thể nào đó không? Có thể hiện icon của winzip hay winrar thường hay được dùng, hay là icon của thực thi Microsoft Windows định dạng aka PE?

Như đã nói ở trên, có nhiều bước thực hiện khi phân tích malware. Đừng luôn luôn tin tưởng vào những gì bạn nhìn thấy. Mọi thứ trong thế giới của malware không phải lúc nào cũng giống với những gì chúng thể hiện bên ngoài. Bởi vì mục đích chính của chúng là lừa đảo người dùng. Tìm hiểu được về reverse engineering chắc hẳn kiến thức bảo mật của bạn đã được nâng lên nhiều. Phần một xin tạm dừng ở đây. Chúng ta sẽ tiếp tục gặp lại nhau trong phần hai với một số công việc thú vị khác.

Thiết kế đối chiếu Malware (phần 2)

Thứ Sáu, 09/02/2007 10:23
54 👨 1.401
0 Bình luận
Sắp xếp theo
    ❖ Diệt Virus - Spyware