Analyzing Malware By Example: Part 1

0

Trong bài này, ad sẽ hướng dẫn mọi người tìm hiểu làm thế nào để thực hiện các phân tích tĩnh cơ bản trên một mẫu malware (Analyzing Malware) nhé. Hãy chắc chắn rằng bạn không sử dụng máy thật để làm việc nhé, theo ad pentesting environment tốt nhất là winxp, linux và win 7, không nên dùng win 8,1 hay 10 làm environment nhé. Hãy cài trên máy ảo VMWare để công nghệ ảo hóa hỗ trợ bạn tốt nhất và tốt hơn Oracle

Analyzing Malware
Analyzing Malware

AD cũng khuyên mọi người nên tùy biến nhiều để các câu lệnh và trường hợp phát sinh của bạn được xử lí triệt để vì ad làm trên máy của mình thì không giống máy của mọi người được, hãy biến hóa nó đi một chút vì đọc các lệnh ad viết thôi là chưa đủ.

Analyzing Malware: Mẫu virus để thực hiện

Hãy tải file zip có chứa virus ở đây : Link

Đừng quên mật khẩu là infected nhé.

Sang bước tiếp theo

File Type Analysis

Bạn đã tải về file nén zip có chứa malware mà ad đã đưa ở trên nhưng bạn lại chưa biết nó thuộc kiểu file gì?

Biết được định dạng của một file là bước rất quan trọng trước khi bạn có thể tìm hiểu sâu hơn về nó, và đương nhiên nếu không biết file thuộc định dạng nào thì các bước sau sẽ rất khó hoặc không làm được. Một khi đã biết định dạng file thì bạn có thể lựa chọn được công cụ ( tool) phù hợp nhất có thể khai thác nó.

Một số bạn sử dụng windows thì lại hoài nghi rằng windows thường đã hiển thị rất chính xác kiểu tập tin cho bạn rồi :))) Ví dụ như .exe cho file thực thi hay .doc cho tài liệu Word 😀

Nhưng nó không đơn giản như bạn nghĩ đâu, nếu như:

  • Phần mở rộng đó đã bị giả mạo? Làm sao bạn chắc chắn được?
  • Bằng command bạn có thể thực thi tập tin bất kể đuôi nó là gì.
  • Các file tạm thời được tạo ra có đuôi .tmp nhưng file gốc lại khác.
  • Các phần mềm độc hại thường không có phần extension đúng.
  • Do đó, các mẫu virus thường không có phần mở rộng mà hàm đã được băm từ tên của nó :))
  • Bạn có thể phát hiện các tập tin được nhúng trong đó hay không?

Vậy câu hỏi đặt ra là làm sao để chúng ta biết được ?

Các loại tập tin thường được xác định bằng file signatures,thường được đặt ở đầu của mỗi file. Signature của tập tin thì chứa các thông tin định dạng của chúng và phần mềm tương ứng có thể mở chúng.
Bạn có thể tham khảo thêm tại http://www.garykessler.net/library/file_sigs.html

Các malware analysts thường dễ dàng xác định được file type vì thứ nhất là họ tiếp xúc với nó hằng ngày, và chỉ cần mở nó với công cụ hex editor là có thể xác định được nó.

Tuy nhiên, nếu bạn dùng linux thì luôn có sẵn phần scan loại tệp, cách làm như sau:


file <sample>

Ngoài ra bạn có thể sử dụng TdID để tìm định dạng, tải và thử luôn với mẫu sample trong bài này xem sao 😀

Còn đối với windows, bạn tìm đến folder trid_w32 , giữ SHIFT và chọn open command here, rồi gõ tried.exe và kéo thả file vào đó. Nếu bạn nhận được thông báo không có định dạng file phù hợp thì hãy vào http://mark0.net/soft-trid-e.html tìm tab download và chọn TrIDDefs.TRD package, unpack file zip ra và chép triddefs.trd vào cùng folder cài tried.exe

Giờ thử lại với sample và được như sau;


TrID/32 - File Identifier v2.20 - (C) 2003-15 By M.Pontello
Definitions found:  6108
Analyzing...

Collecting data from file: 048714ed23c86a32f085cc0a4759875219bdcb0eb61dabb2ba03de09311a1827
45.7% (.DOC) Microsoft Word document (32000/1/3)
42.8% (.XLS) Microsoft Excel sheet (30000/1/2)
11.4% (.) Generic OLE2 / Multistream Compound File (8000/1)

 

Điều đó cho thấy là nó gần giống file word hoặc exel, nếu bạn làm trên Linux thì kết quả sẽ rõ hơn.

Chúng ta tiếp tục sử dụng một công cụ hex editor nào đó mà ad đã nói ở trên :V

Mở file ra và kéo xuống dưới một đoạn bạn sẽ nhận được thông tin sau:

Hiện rõ là File Word rồi 😀

Một cách nghiên cứu khác là dùng http://code.kliu.org/hashcheck/ trên windows và sha256sum trên Linux để nghiên cứu. Thôi vấn đề này và các tool bạn có thể tự tìm hiểu thêm còn ai không hiểu thì ib ad đưa cho vài tool về nghịch :)))

Một lưu ý nhỏ đó là không nên upload các file trong máy lên mạng để quét virus vì biết đâu trong các file này lại chứa những thông tin đáng ra không bao giờ nên có trên web, đừng vì sự tiện lợi mà mất đi sự riêng tư.

Sang bước tiếp theo

Looking at the Code of Analyzing Malware ( <- từ này nghĩa là gì nhỉ? )

Chúng ta đã xác định được rằng file kia khả năng cao là file Word ( Không 100% nhé)

Có rất nhiều tool có thể quét định dạng này, ad sẽ dùng thử OfficeMalScanner, chạy file exe sau khi giải nén và thực hiện với file sample

Thu được kết quả sau:


&nbsp;

Examples:
OfficeMalScanner evil.ppt scan brute debug
OfficeMalScanner evil.ppt scan
OfficeMalScanner evil.ppt info

Malicious index rating:
Executables: 20
Code       : 10
STRINGS    :  2
OLE        :  1

----------------------------------------------------------------------------
I strongly suggest you to scan malicious files in a safe environment
like VMWARE, as this tool is written in C and might have exploitable bugs!
----------------------------------------------------------------------------

Scan với lệnh


OfficeMalScanner.exe &lt;samplename&gt; scan

Nó sẽ xác nhận đây là file Word


[*] Ms Office OLE2 Compound Format document detected
[*] Format type Winword

Nó sẽ nói với bạn rằng không có mối nguy hiểm nào nhưng tạm thời đừng tin nó, hãy tin chính bản thân bạn, và luôn kiểm tra lại file bằng tay.


OfficeMalScanner.exe &lt;samplename&gt; info

Nó sẽ cho bạn biết nó tìm thấy VB-Macro Code và nơi chứa Marco Code

Giờ dùng Notepad++ hoặc Subline Text 2 để mở nó ra.

Bạn sẽ nhận được rất nhiều dòng code mà không phải cái nào cũng có ý nghĩa, hãy bấm CTRL+F để tìm chữ  “environ”

Chi tiết hơn tại : https://msdn.microsoft.com/en-us/library/office/gg264486.aspx


Returns the String associated with an operating system environment variable.
<div class="quotefooter"> 
Bạn có thể sử dụng một số Marco sau để tìm scripts phù hợp
</div>
<div class="quotefooter">Shell
StrReverse
Chr
Put
Write
.exe
Open
ResponseBody
Binary</div>
<div class="quotefooter">
Bạn thu được kết quả dạng hex, và để dịch ngược nó, ad dùng python, bạn có thể dùng bất cứ ngôn ngữ nào bạn thích hoặc thông thạo.
</div>
<div class="quotefooter">unknown = "568756E2E69626F237A6F2D6F636E24756E6F686361666F2F2A307474786"</div>
<div class="quotefooter">
Lưu string trên vào một biến, làm tương tự với VB-Marco
</div>
<div class="quotefooter">reversed = unknown[::-1]</div>
<div class="quotefooter">
Bước cuối là dịch ngược nó lại để ta đọc được, còn bạn nào có thể dịch ngược không cần tool có thể bỏ qua đoạn này :v
</div>
<div class="quotefooter">reversed.decode("hex")</div>
<div class="quotefooter">
Bạn sẽ nhận được thông tin về nơi download file, nhưng nhớ là không mở nó nếu nó là file temp, sử dụng whois sẽ tốt hơn đấy -_-
</div>
<div class="quotefooter">"05D45445"[::-1].decode("hex")</div>
<div class="quotefooter">
Bạn sẽ nhận được string sau:
</div>
<div class="quotefooter">hxxp://fachonet.com/js/bin.exe
\\YEWZMJFAHIB.exe
TEMP</div>
<div class="quotefooter">
Thử tiếp với một số lệnh mà ad nói trên có thể cho bạn biết nơi nó được lưu, nơi nó sẽ chạy,v…v…
Như kết quả trên, file tải về từ fachonet.com và có tên YEWZMJFAHIT trong thư mục TEMP.
Đây là bước đầu tiên trong phân tích, ad sẽ có các phần sau và rất mong mọi người ủng hộ cùng xây dựng D:

Leave A Reply

Your email address will not be published.