1. Trang chủ
  2. » Kỹ Năng Mềm

Bài tập lớn môn an toàn mạng (37)

60 40 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Volatility – Memory Forensic Tool
Tác giả Trần Văn Hải
Người hướng dẫn TS. Đặng Minh Tuấn
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành An Toàn Mạng
Thể loại bài tập lớn
Định dạng
Số trang 60
Dung lượng 0,95 MB

Cấu trúc

  • I. Giới thiệu (6)
    • 1. Tổng quan (6)
    • 2. Lịch sử hình thành (7)
    • 3. Thuật ngữ (8)
  • II. Hướng dẫn cài đặt (8)
    • 1. Tải xuống Volatility (8)
    • 2. Cài đặt Volatility (8)
      • 2.1. Các thư viện phụ thuộc (9)
    • 3. Cập nhật Volatility (11)
  • III. Các lệnh cơ bản (12)
    • 1. Các tùy chọn chung (13)
      • 1.1. Hiển thị Trợ giúp (13)
      • 1.2. Chọn Cấu hình (14)
      • 1.3. Các tùy chọn khác (16)
      • 1.4. Bật thông báo gỡ lỗi (18)
      • 1.5. Sử dụng bộ nhớ đệm (18)
      • 1.6. Đặt múi giờ (18)
      • 1.7. Đặt DTB (20)
      • 1.8. Đặt địa chỉ KDBG (20)
      • 1.9. Đặt địa chỉ KPCR (21)
      • 1.10. Bật hỗ trợ ghi (21)
      • 1.11. Chỉ định Thư mục Plugin Bổ sung (22)
      • 1.12. Chọn định dạng Đầu ra (22)
    • 2. Các tùy chọn cụ thể của plugin (23)
    • 3. Sử dụng Volatility làm Thư viện (23)
  • IV. Các plugin thường được sử dụng (24)
    • 1. Vùng nhớ (24)
      • 1.1. Imageinfo (24)
      • 1.2. Crashinfo (24)
      • 1.3. Hibinfo (25)
      • 1.4. Imagecopy (25)
    • 2. Các tiến trình và DLLs (26)
      • 2.1. Pslist (26)
      • 2.2. Pstree (26)
      • 2.3. Psscan (27)
      • 2.4. Dllist (27)
      • 2.5. Dlldump (28)
      • 2.6. Handles (28)
      • 2.7. Cmdscan (29)
    • 3. Các đối tượng bộ nhớ và kernel (30)
      • 3.1. Procmemdump (30)
      • 3.2. Procexedump (30)
      • 3.3. Modscan (30)
      • 3.4. Driverscan (31)
      • 3.5. Filescan (31)
    • 4. Mạng (32)
      • 4.1. Connections (32)
      • 4.2. Connscan (32)
      • 4.3. Sockscan (33)
      • 4.4. Netscan (34)
    • 5. Registry (34)
      • 5.1. Hivescan and Hivelist (34)
      • 5.2. Hivedump (35)
      • 5.3. Hashdump (35)
    • 6. Phân tích mã độc (36)
      • 6.1. Malfind (36)
      • 6.2. Svcscan (36)
      • 6.3. Apihooks (37)
      • 6.4. Callbacks (37)
      • 6.5. Devicetree (38)
      • 6.6. Psxview (39)
  • V. Các plugin khác (39)
    • 1. Iehistory (39)
    • 2. Evtlogs (40)
    • 3. Deskscan (40)
  • VI. Kịch bản (40)
    • 1. Kịch bản 1 : Memory Analysis - Ransomware (40)
    • 2. Kịch bản 2 : Memory Analysis – Stuxnet sử dụng Process Injection (48)
  • VII. Tổng kết (59)
  • VIII. Tài liệu tham khảo (60)

Nội dung

Giới thiệu

Tổng quan

Volatility là một công cụ mã nguồn mở được phát triển bằng Python, dùng để phân tích bộ nhớ trong thời gian thực, phục vụ cho việc xử lý sự cố và phân tích phần mềm độc hại Công cụ này hỗ trợ các hệ điều hành Microsoft Windows, Mac OS X và Linux từ phiên bản 2.5 trở đi.

Volatility được tạo ra bởi Aaron Walters, dựa trên nghiên cứu học thuật mà ông đã thực hiện trong pháp y bộ nhớ

Vào năm 2007, Volatility Framework đã được phát hành công khai tại Black Hat DC, đánh dấu một bước tiến quan trọng trong lĩnh vực phân tích và pháp y bộ nhớ Phần mềm này, dựa trên nhiều năm nghiên cứu học thuật, đã thay đổi cách tiếp cận điều tra kỹ thuật số bằng việc phân tích trạng thái hệ thống trong thời gian thực thông qua dữ liệu trong bộ nhớ tạm (RAM) Volatility không chỉ cung cấp nền tảng đa nền tảng, mô-đun và có thể mở rộng, mà còn khuyến khích nghiên cứu sâu hơn và thúc đẩy sự hợp tác, đổi mới trong cộng đồng phần mềm tấn công.

Kể từ khi ra đời, phân tích bộ nhớ đã trở thành chủ đề quan trọng trong điều tra kỹ thuật số, với Volatility là nền tảng pháp y bộ nhớ phổ biến nhất toàn cầu Dự án này được hỗ trợ bởi một cộng đồng lớn và năng động trong lĩnh vực pháp y, cung cấp nền tảng độc đáo giúp chuyển giao nghiên cứu tiên tiến cho các nhà điều tra Kết quả là, nghiên cứu dựa trên Volatility đã được trình bày tại các hội nghị học thuật hàng đầu và nền tảng này đã được áp dụng trong nhiều cuộc điều tra quan trọng trong thập kỷ qua.

Nó đã trở thành công cụ điều tra kỹ thuật số thiết yếu mà các nhà thực thi pháp luật, quân đội, học viện và các nhà điều tra thương mại trên toàn cầu tin cậy.

Sự phát triển của Volatility hiện được hỗ trợ bởi “The Volatility Foundation”, một tổ chức phi lợi nhuận độc lập, nhằm thúc đẩy việc sử dụng Volatility và phân tích bộ nhớ trong cộng đồng pháp y Quỹ này bảo vệ tài sản trí tuệ của dự án, như nhãn hiệu và giấy phép, đồng thời giúp duy trì tuổi thọ của nó Mục tiêu cuối cùng là thúc đẩy nghiên cứu phân tích trí nhớ sáng tạo và bảo vệ quyền lợi của các nhà phát triển, những người đã hy sinh thời gian và tài nguyên để tạo ra nền tảng pháp y bộ nhớ tiên tiến nhất, miễn phí và mã nguồn mở.

Lịch sử hình thành

Gần đây, nghiên cứu và tiến bộ trong phân tích pháp y bộ nhớ tạm đang nhận được nhiều sự chú ý Tuy nhiên, nhiều nhà điều tra cảm thấy thiếu thời gian, nguồn lực và chuyên môn để áp dụng phân tích này vào quá trình điều tra kỹ thuật số Đặc biệt, trong bối cảnh các vụ án tồn đọng, một số nhà điều tra coi bộ nhớ hệ thống dễ bay hơi là một thách thức lớn.

Phân tích bộ nhớ tạm là một yếu tố quan trọng trong điều tra kỹ thuật số, không nên bị coi là nhiệm vụ bổ sung cho các điều tra viên Thông thường, bộ nhớ tạm không được thu thập trong quá trình xử lý sự cố, và khi được thu thập, phân tích thường chỉ tập trung vào các chuỗi không có ngữ cảnh Bài viết này nhấn mạnh rằng việc phân tích bộ nhớ tạm là một phần thiết yếu của quá trình điều tra kỹ thuật số và có thể được thực hiện một cách dễ dàng cho những người đã quen thuộc với các kỹ thuật xử lý hệ thống trực tiếp.

Khi trích xuất dữ liệu từ hệ thống trực tiếp, cần tuân thủ một số nguyên tắc pháp y quan trọng nhằm giảm thiểu thay đổi trên hệ thống, hiểu rõ tác động của những thay đổi và giảm thiểu sự tin cậy vào hệ thống Tuy nhiên, hiện tại có rất ít nghiên cứu đánh giá mức độ tuân thủ của các phương pháp thu thập dữ liệu trực tiếp với các nguyên tắc này Do đó, bộ công cụ này được phát triển để hỗ trợ các nhà điều tra kỹ thuật số và nhóm xử lý sự cố trong việc thực hiện quy trình này một cách hiệu quả.

8 định bối cảnh hệ thống thời gian chạy và các đầu mối điều tra có thể hữu ích trong các giai đoạn phân tích sau này

Kỹ thuật pháp y bộ nhớ tạm bằng công cụ Volatility sẽ được chứng minh là hữu ích trong quá trình điều tra kỹ thuật số, giúp giải quyết những thách thức lớn của pháp y kỹ thuật số Các công cụ và kỹ thuật phân tích bộ nhớ có thể bổ sung cho các phương pháp hiện tại trong các cuộc điều tra Cụ thể, các nhà điều tra có thể khai thác bối cảnh trong bộ nhớ tạm để tập trung vào việc xử lý khối lượng lớn bằng chứng và phân tích thông tin trước khi nó biến mất.

Thuật ngữ

Dưới đây là một số từ khóa quan trọng:

- Volatile: Dữ liệu không cố định; nó sẽ bị mất khi nguồn điện bị ngắt khỏi hệ thống

- Plugin: Phần mềm làm cho một phần mềm lớn hơn có khả năng hoạt động tốt hơn

- Framework: Một cấu trúc hoặc bộ công cụ pháp y hỗ trợ điều tra

- Forensic: pháp y, điều tra về những hành vi mã độc thực hiện trên hệ thống.

Hướng dẫn cài đặt

Tải xuống Volatility

Bạn có thể lấy mã nguồn bằng cách tải xuống bản phát hành ổn định hoặc sao chép từ github Để thực hiện thao tác sau, hãy nhập:

Thao tác này sẽ tạo một thư mục Volatility có chứa mã nguồn và bạn có thể chạy thư mục Volatility từ đó.

Cài đặt Volatility

Nếu bạn đang sử dụng tệp thực thi Windows, Linux hoặc Mac độc lập,

$ git clone https://github.com/volatilityfoundation/volatility.git

Chương trình này không cần cài đặt, chỉ cần chạy từ dấu nhắc lệnh mà không cần thêm gói phụ thuộc, vì tất cả đã được đóng gói trong tệp exe Nếu bạn sử dụng tệp thực thi Pyinstaller (dành riêng cho Windows), chỉ cần nhấp đúp và làm theo hướng dẫn cài đặt, thường chỉ cần nhấp "Continue" vài lần và sau đó chọn "Finish" Lưu ý rằng bạn cần có Python 2.7 đang hoạt động, và hãy tham khảo các thư viện phụ thuộc bên dưới.

Nếu bạn đã tải xuống kho lưu trữ mã nguồn zip hoặc tar (Windows, Linux, OSX), có hai cách để "cài đặt" mã:

Để cài đặt Volatility, bạn có thể giải nén kho lưu trữ và chạy file setup.py, giúp sao chép các tệp vào vị trí đúng trên đĩa Hành động này cần thiết nếu bạn muốn truy cập không gian tên Volatility từ các tập lệnh Python khác, chẳng hạn như khi nhập Volatility làm thư viện Ưu điểm của phương pháp này là dễ dàng sử dụng như một thư viện, nhưng nhược điểm là khó khăn trong việc nâng cấp hoặc gỡ cài đặt.

Để sử dụng Volatility một cách hiệu quả, bạn có thể giải nén kho lưu trữ vào một thư mục tùy chọn Khi cần sử dụng, chỉ cần chạy lệnh `python /path/to/directory/vol.py`, phương pháp này giúp giữ cho các tệp không bị di chuyển ra ngoài thư mục đã chọn, thuận tiện cho việc nâng cấp lên các phiên bản mới Bạn cũng có thể cài đặt nhiều phiên bản của Volatility song song bằng cách lưu chúng trong các thư mục riêng biệt như `/home/me/vol2.0` và `/home/me/vol2.1` Ưu điểm của phương pháp này là sạch sẽ, dễ dàng chạy nhiều phiên bản và thuận tiện cho việc nâng cấp hoặc gỡ cài đặt, tuy nhiên, nhược điểm là khó sử dụng hơn khi như một thư viện.

2.1 Các thư viện phụ thuộc

Phần này không áp dụng cho tệp thực thi Windows độc lập, vì các thư viện phụ thuộc đã được bao gồm trong exe Hầu hết các chức năng cốt lõi của Volatility hoạt động mà không cần phụ thuộc bổ sung Bạn chỉ cần cài đặt các gói nếu muốn sử dụng các plugin cụ thể hoặc nâng cao trải nghiệm của mình.

Khi sử dụng Linux, bạn có thể cần cài đặt một số gói hoặc thư viện cần thiết trước khi cài đặt các gói đề xuất tiếp theo Ví dụ, bạn có thể sử dụng lệnh sau: `apt-get install pcregrep libpcre++-dev python-dev -y`.

2.1.1 Các thư viện được đề xuất Để được hỗ trợ plugin toàn diện nhất, bạn nên cài đặt các thư viện sau Nếu bạn không cài đặt các thư viện này, bạn có thể thấy thông báo cảnh báo để nâng cao nhận thức của mình, nhưng tất cả các plugin không dựa vào các thư viện bị thiếu sẽ vẫn hoạt động bình thường

Distorm3 is a powerful disassembly library designed for x86 and AMD64 architectures, offering essential plugins such as Apihooks, Callbacks, Impscan, and Kdbgscan for enhanced functionality on Windows 8/2012 systems It also supports disassembly commands within volshell, linux_volshell, and mac_volshell environments, making it a versatile tool for developers and security analysts.

- Yara : Một công cụ phân loại và nhận dạng phần mềm độc hại

Các plugin phụ thuộc: o yarascan, linux_yarascan, mac_yarascan Lưu ý: lấy yara từ trang web chính của dự án, không cài đặt bằng pip

Lưu ý: nếu bạn đang sử dụng Linux, bạn có thể phải sử dụng lệnh sau: echo "/usr/local/lib" >> /etc/ld.so.conf && ldconfig

- PyCrypto : Bộ công cụ mật mã Python

Các plugin phụ thuộc: o Lsadump o Hashdump Lưu ý: điều này yêu cầu python-dev để cài đặt (trừ khi bạn nhận được các tệp nhị phân được tạo sẵn)

- PIL : Thư viện hình ảnh Python

Các plugin phụ thuộc: o Screenshots

OpenPyxl là một thư viện Python mạnh mẽ, cho phép người dùng đọc và ghi các tệp Excel định dạng 2007 như xlsx và xlsm Để sử dụng thư viện này, cần có các plugin phụ thuộc, trong đó bất kỳ plugin nào đã được chuyển đổi sang định dạng hợp nhất với tùy chọn output=xlsx đều có thể được áp dụng.

- Ujon: Thư viện phân tích cú pháp JSON cực nhanh

Các plugin phụ thuộc: o Các plugin phụ thuộc: bất kỳ thứ gì sử dụng output=html

2.1.2 Các thư viện tùy chọn

Các thư viện dưới đây là tùy chọn và nếu được cài đặt, Volability sẽ tự động tìm kiếm và sử dụng chúng Nếu không, một phương pháp thay thế phù hợp sẽ được lựa chọn.

- pytz để chuyển đổi múi giờ Thay thế: tzset (tiêu chuẩn với

- IPython để nâng cao trải nghiệm volshell Thay thế: code

- libforecular1394 để phân tích trực tiếp qua firewire Thay thế: Libraw1394

Cập nhật Volatility

Nếu bạn đã sử dụng setup.py để cài đặt Volatility, các tệp sẽ được đặt ở một vài vị trí tiêu chuẩn Ví dụ:

Trước khi cài đặt phiên bản mới của Volatility, bạn cần xóa tất cả các tệp mà setup.py đã tạo trước đó, vì việc chỉ chạy setup.py cho phiên bản mới có thể gây ra sự cố do tệp nguồn hỗn hợp.

Bạn có thể chạy setup.py cho phiên bản Volatility mới của mình Lưu ý rằng setup.py chỉ cần thiết khi bạn muốn nhập Volatility như một thư viện từ các tập lệnh Python khác Nếu bạn chỉ cần sử dụng Volatility, bạn không cần cài đặt, chỉ cần giải nén kho lưu trữ và chạy vol.py bên trong.

Các lệnh cơ bản

Các tùy chọn chung

Có nhiều tùy chọn dòng lệnh chung áp dụng cho tất cả các plugin trong Volatility Phần này hướng tới những người mới bắt đầu hoặc những ai muốn tìm hiểu sâu hơn về các chức năng có thể điều chỉnh.

Bạn có thể hiển thị menu trợ giúp chính bằng cách sử dụng tham số -h hoặc help trên dòng lệnh, điều này sẽ cung cấp các tùy chọn chung và liệt kê các plugin có sẵn cho cấu hình hiện tại Nếu không chỉ định cấu hình, bạn sẽ sử dụng cấu hình mặc định WinXPSP2x86, do đó chỉ thấy các plugin hợp lệ cho hệ điều hành và kiến trúc đó Để chọn cấu hình khác, hãy tham khảo phần “Chọn cấu hình” bên dưới.

Phần còn lại của phần này sẽ thảo luận chi tiết hơn về các tùy chọn khác nhau

Volatility yêu cầu người dùng xác định loại hệ thống để hiểu cấu trúc dữ liệu, thuật toán và ký hiệu sử dụng Đối với Windows XP SP2 x86, cấu hình mặc định đã được thiết lập sẵn, do đó bạn không cần chỉ định profile khi phân tích kết xuất bộ nhớ.

-h, help list all available options and their default values Default values may be set in the configuration file

conf-file=/Users/mhl/.volatilityrc

plugins=PLUGINS Additional plugin directories to use (colon separated) info Print information about all registered objects

cache-directory=/Users/mhl/.cache/volatility

Directory where cache files are stored

tz=TZ Sets the (Olson) timezone for displaying timestamps using pytz (if installed) or tzset

Filename to use when opening an image

Name of the profile to load (use info to see a list of supported profiles)

A URN location from which to load an address space

output=text Output in this format (support is module specific, see the Module Output Options below)

Write output in this file

shift=SHIFT Mac KASLR shift address

-g KDBG, kdbg=KDBG Specify a KDBG virtual address (Note: for 64-bit

Windows 8 and above this is the address of

force Force utilization of suspect profile

-k KPCR, kpcr=KPCR Specify a specific KPCR address

cookie=COOKIE Specify the address of nt!ObHeaderCookie (valid for

15 người khác, bạn phải chỉ định tên hồ sơ thích hợp

Nếu bạn không xác định được loại hệ thống bộ nhớ cần kết xuất, hãy sử dụng các plugin như [imageinfo] hoặc [kdbgscan] để nhận gợi ý Lưu ý rằng các plugin này chỉ hoạt động trên hệ điều hành Windows.

Nếu bạn muốn xem danh sách các tên hồ sơ được hỗ trợ, hãy làm như sau:

Khi tham gia một cuộc điều tra dài hạn và không muốn nhập lại các tùy chọn thường dùng, bạn có thể sử dụng hai phương pháp thay thế: biến môi trường và tệp cấu hình Nếu một tùy chọn không được cung cấp qua dòng lệnh, Volatility sẽ tự động tìm kiếm tùy chọn đó từ biến môi trường; nếu không thành công, nó sẽ tiếp tục tìm kiếm trong tệp cấu hình.

VistaSP0x64 - A Profile for Windows Vista SP0 x64

VistaSP0x86 - A Profile for Windows Vista SP0 x86

VistaSP1x64 - A Profile for Windows Vista SP1 x64

VistaSP1x86 - A Profile for Windows Vista SP1 x86

VistaSP2x64 - A Profile for Windows Vista SP2 x64

VistaSP2x86 - A Profile for Windows Vista SP2 x86

Win2003SP0x86 - A Profile for Windows 2003 SP0 x86

Win2003SP1x64 - A Profile for Windows 2003 SP1 x64

Win2003SP1x86 - A Profile for Windows 2003 SP1 x86

Win2003SP2x64 - A Profile for Windows 2003 SP2 x64

Win2003SP2x86 - A Profile for Windows 2003 SP2 x86

Win2008R2SP0x64 - A Profile for Windows 2008 R2 SP0 x64

Win2008R2SP1x64 - A Profile for Windows 2008 R2 SP1 x64

Win2008SP1x64 - A Profile for Windows 2008 SP1 x64

Win2008SP1x86 - A Profile for Windows 2008 SP1 x86

Win2008SP2x64 - A Profile for Windows 2008 SP2 x64

Win2008SP2x86 - A Profile for Windows 2008 SP2 x86

Win2012R2x64 - A Profile for Windows Server 2012 R2 x64 Win2012x64 - A Profile for Windows Server 2012 x64

Win7SP0x64 - A Profile for Windows 7 SP0 x64

Win7SP0x86 - A Profile for Windows 7 SP0 x86

Win7SP1x64 - A Profile for Windows 7 SP1 x64

Win7SP1x86 - A Profile for Windows 7 SP1 x86

Win81U1x64 - A Profile for Windows 8.1 Update 1 x64

Win81U1x86 - A Profile for Windows 8.1 Update 1 x86

Win8SP0x64 - A Profile for Windows 8 x64

Win8SP0x86 - A Profile for Windows 8 x86

Win8SP1x64 - A Profile for Windows 8.1 x64

Win8SP1x86 - A Profile for Windows 8.1 x86

WinXPSP1x64 - A Profile for Windows XP SP1 x64

WinXPSP2x64 - A Profile for Windows XP SP2 x64

WinXPSP2x86 - A Profile for Windows XP SP2 x86

WinXPSP3x86 - A Profile for Windows XP SP3 x86

Trên hệ thống Linux hoặc OS X, bạn có thể đặt các tùy chọn bằng cách xuất chúng trong trình bao của mình, như được hiển thị bên dưới:

Các tệp cấu hình thường có tên "volualityrc" và có thể được tìm thấy trong thư mục hiện tại, trong thư mục chính của người dùng tại ~/.volabilityrc, hoặc tại đường dẫn do người dùng chỉ định thông qua tùy chọn conf-file Dưới đây là một ví dụ về nội dung của tệp này.

Các tệp cấu hình đặc biệt hữu ích khi xử lý một số mẫu bộ nhớ trong một lần

Các plugin cờ khác như KPCR, DTB và PLUGINS có thể được sử dụng tương tự Khi xuất các biến, chỉ cần thêm tiền tố VOLATILITY_ trước tên cờ (ví dụ: VOLATILITY_KPCR) Nếu không, tên cờ sẽ được giữ nguyên khi thêm vào tệp cấu hình.

- Nếu bạn có một đường dẫn có khoảng trắng trong tên, thì nên thay dấu cách bằng %20 (ví dụ: LOCATION = file: ///tmp/my%20image.img)

$ export VOLATILITY_PROFILE=Win7SP0x86

$ export VOLATILITY_LOCATION=file:///tmp/myimage.img

PROFILE=Win7SP0x86 LOCATION=file:///tmp/myimage.img KDBG=0x82944c28

1.4 Bật thông báo gỡ lỗi

Nếu bạn không nhận được kết quả như mong đợi trong Volatility, hãy thử sử dụng lệnh với -d hoặc debug để in thông báo gỡ lỗi Nếu cần gỡ lỗi sâu hơn, chẳng hạn như khi dùng trình gỡ lỗi pdb, hãy thêm ba lần -d vào lệnh.

“ vào các lệnh của bạn

1.5 Sử dụng bộ nhớ đệm

Lưu ý: Bộ nhớ đệm đã bị tắt vào lúc này

Bộ nhớ đệm trong Volatility cho phép lưu trữ các đối tượng và hằng số để truy xuất sau này, bao gồm địa chỉ DTB, KDBG, KPCR, bảng dịch trang x86, và cấu trúc dữ liệu giải nén ở chế độ ngủ đông Để sử dụng tính năng này, bạn cần thêm cache vào lệnh của mình Tính năng này sẽ tuần tự hóa dữ liệu trong các tệp trên đĩa, và nếu bạn muốn chỉ định vị trí của các tệp trong bộ đệm, hãy sử dụng cache-directory Để biết thêm chi tiết, hãy tham khảo trang hệ thống bộ nhớ đệm trong hướng dẫn dành cho nhà phát triển cho phiên bản của bạn.

Dấu thời gian có thể được trích xuất theo giờ địa phương hoặc theo Tọa độ thời gian toàn cầu (UTC) Nếu sử dụng UTC, người dùng có thể hướng dẫn volatility hiển thị theo múi giờ mà họ chọn bằng cách sử dụng tên múi giờ chuẩn như Châu Âu/Luân Đôn hoặc Hoa Kỳ/Miền Đông với cờ tz = TIMEZONE Volatility sẽ ưu tiên sử dụng pytz nếu có sẵn, nếu không sẽ sử dụng tzset.

Lưu ý rằng việc chỉ định múi giờ sẽ không ảnh hưởng đến cách hiển thị giờ địa phương của hệ thống

Theo mặc định, dấu thời gian _EPROCESS CreateTime và ExitTime ở UTC Dưới đây là đầu ra từ Volatility có cài đặt pytz:

Dưới đây là kết quả từ cùng một mẫu bằng cách sử dụng tùy chọn tz = America / Chicago để lấy Central Standard Time:

Dưới đây là đầu ra tương tự ở trên, nhưng không có thư viện pytz được cài đặt:

$ python vol.py -f win7.vmem profile=Win7SP1x86 pslist

Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit

2011-10-20 15:25:16 UTC+0000 [snip] $ python vol.py -f win7.vmem profile=Win7SP1x86 pslist tz=America/Chicago

Volatility Foundation Volatility Framework 2.4 Offset(V) Name PID PPID Thds Hnds Sess Wow64

DTB (Directory Table Base) là công cụ mà Volatile sử dụng để chuyển đổi địa chỉ ảo thành địa chỉ vật lý Mặc định, kernel DTB của quy trình Chờ/Hệ thống được áp dụng Nếu bạn muốn truy cập dữ liệu bằng DTB của một quy trình khác, hãy cung cấp địa chỉ tương ứng.

1.8 Đặt địa chỉ KDBG Đây là tùy chọn chỉ dành cho Windows

Volatility quét cấu trúc _KDDEBUGGER_DATA64 thông qua chữ ký mã hóa cứng "KDBG" và các kiểm tra khác Những chữ ký này không cần thiết cho hoạt động bình thường của hệ điều hành, cho phép phần mềm độc hại ghi đè chúng để loại bỏ các công cụ dựa vào chữ ký Hơn nữa, trong một số trường hợp, có thể tồn tại nhiều hơn một _KDDEBUGGER_DATA64, chẳng hạn như khi áp dụng bản cập nhật hệ điều hành lớn mà không khởi động lại.

$ python2.6 vol.py -f win7.vmem profile=Win7SP1x86 pslist tz=America/Chicago

Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit

Việc sử dụng địa chỉ _KDDEBUGGER_DATA64 có thể gây nhầm lẫn và dẫn đến danh sách quy trình và mô-đun không chính xác Để khắc phục, bạn có thể chỉ định địa chỉ này bằng cách sử dụng tham số kdbgDRESS, điều này sẽ ghi đè quá trình quét tự động Đối với người dùng Windows 8 trở lên, tham số kdbg cần phải là địa chỉ của KdCopyDataBlock Để biết thêm thông tin, hãy tham khảo plugin [kdbgscan].

1.9 Đặt địa chỉ KPCR Đây là tùy chọn chỉ dành cho Windows

Mỗi CPU trong hệ thống đều có một KPCR (Kernel Processor Control Region) riêng Một số plugin của Volatility cung cấp thông tin chi tiết về từng bộ xử lý Nếu bạn muốn hiển thị dữ liệu cho một CPU cụ thể, chẳng hạn như CPU 3 thay vì CPU 1, bạn có thể sử dụng tham số kpcr = ĐỊA CHỈ để chỉ định KPCR của CPU đó Để xác định KPCR cho tất cả các CPU, bạn có thể tham khảo plugin [kpcrscan] Lưu ý rằng từ phiên bản Volatility 2.2 trở đi, nhiều plugin như [idt] và [gdt] sẽ tự động lặp qua danh sách KPCR.

Ghi hỗ trợ trong Volatility nên được sử dụng một cách thận trọng

Để kích hoạt tính năng này, bạn cần gõ lệnh write và nhập "mật khẩu" để trả lời câu hỏi được đưa ra Thông thường, việc sử dụng hỗ trợ ghi không được khuyến khích vì có thể gây hỏng hoặc sửa đổi dữ liệu trong bộ nhớ Tuy nhiên, vẫn có những trường hợp đặc biệt mà tính năng này mang lại giá trị thực sự.

Các tùy chọn cụ thể của plugin

Nhiều plugin có các đối số riêng biệt, không phụ thuộc vào các tùy chọn chung Để xem danh sách các tùy chọn khả dụng, bạn có thể nhập tên plugin kèm theo -h hoặc -help trên dòng lệnh.

Sử dụng Volatility làm Thư viện

Nếu bạn cần nhập Volatility từ một trong các tập lệnh python khác của mình, bạn có thể sử dụng mã ví dụ sau:

>>> import volatility.conf as conf

>>> import volatility.registry as registry

>>> import volatility.commands as commands

>>> import volatility.addrspace as addrspace

>>> registry.register_global_options(config, commands.Command)

>>> registry.register_global_options(config, addrspace.BaseAddressSpace)

>>> config.LOCATION = "file:///media/memory/private/image.dmp"

>>> import volatility.plugins.taskmods as taskmods

Các plugin thường được sử dụng

Vùng nhớ

Các plugin liên quan đến phần này xác định hình ảnh bộ nhớ đang được phân tích và cung cấp hiểu biết cơ bản về những gì nó chứa

Imageinfo xác định hình ảnh bộ nhớ và đề xuất cấu hình sử dụng, trong khi Volatility yêu cầu chỉ định hình ảnh bộ nhớ từ hệ điều hành cụ thể Lệnh này giúp xác định hệ điều hành, cho phép bạn thực hiện các lệnh khác một cách hiệu quả.

Plugin này hiển thị thông tin được lưu trữ trong tiêu đề crashdump i Cách sử dụng : ii Đầu ra :

$python vol.py –f imageinfo

$python vol.py –f profile= crashinfo

Plugin này kết xuất thông tin tệp ngủ đông nếu hệ thống đã từng ở chế độ đó i Cách sử dụng: ii Đầu ra :

Imagecopy sao chép không gian địa chỉ vật lý ra ngoài dưới dạng hình ảnh ổ đĩa thô (dd) i Cách sử dụng

$python vol.py –f profile= hibinfo

$python vol.py –f profile= imagecopy -O

Các tiến trình và DLLs

Các plugin liên quan giúp xác định các quy trình đang hoạt động trong quá trình kết xuất bộ nhớ và phát hiện các tệp DLL ẩn.

Pslist hiển thị tất cả các tiến trình đang chạy trên hệ thống thông qua danh sách EPROCESS Lệnh này không chỉ giúp xác định xem một quy trình cụ thể có đang hoạt động hay không, mà còn hỗ trợ trong việc phát hiện các quy trình đáng ngờ trong quá trình điều tra Để sử dụng, người dùng cần biết cách thực hiện lệnh và phân tích đầu ra để thu thập thông tin cần thiết.

• Offset (By default Virtual Offset, -P for Physical)

• Session ID (System and smss.exe will not have a Session ID)

• If it is a Wow64 process

Lệnh pstree hiển thị danh sách quy trình dưới dạng cây, cho phép người dùng xem thông tin tương tự như pslist nhưng ở định dạng trực quan hơn Nhờ đó, bạn có thể dễ dàng nhận diện các quy trình con thuộc về quy trình mẹ nào, giúp quản lý hệ thống hiệu quả hơn.

$python vol.py –f profile= pslist

27 được sử dụng để xem liệu một quá trình có đang cố gắng ẩn dưới dạng một cái gì đó khác hay không i Cách sử dụng

Plugin này giúp phát hiện các quy trình bị rootkit chấm dứt hoặc hủy liên kết trước đó Nó không chỉ liệt kê các tiến trình đang chạy trên hệ thống mà còn có khả năng phát hiện các tiến trình ẩn hoặc không liên kết Công cụ này rất hữu ích trong các cuộc điều tra nhằm phát hiện phần mềm độc hại ẩn như keylogger hoặc rootkit Hướng dẫn sử dụng và đầu ra của lệnh này sẽ được trình bày chi tiết.

Dllist là công cụ hiển thị các tệp DLL đã được tải bởi một quy trình, cho phép người dùng sử dụng các tùy chọn -p hoặc -lipid để lọc kết quả Lệnh này cung cấp thông tin về tất cả các DLL mà một tiến trình gọi, rất hữu ích trong việc điều tra, nhằm xác định xem một tiến trình có đang gọi các DLL không hợp lệ hay không Ví dụ, phần mềm độc hại có thể ẩn mình dưới dạng quy trình hệ thống và gọi các DLL không thuộc về nó.

$python vol.py –f profile= pstree

$python vol.py –f profile= psscan

28 hệ thống i Cách sử dụng ii Đầu ra

Dlldump là công cụ dùng để trích xuất DLL vào đĩa từ hình ảnh bộ nhớ, cho phép người dùng điều tra DLL đã được chỉ định bằng các chương trình khác Để sử dụng, người dùng cần nắm rõ cú pháp lệnh và các tham số liên quan để thực hiện trích xuất hiệu quả.

1 Không có Đối số: kết xuất tất cả các DLL từ tất cả các quy trình

2 -pid = : Kết xuất tất cả các DLL từ một quy trình cụ thể

3 offset = : tất cả các DLL từ một quy trình ẩn / không liên kết

4 base = : Kết xuất một PE từ bất kỳ đâu trong bộ nhớ xử lý

5 regex = : Kết xuất các tệp DLL khớp với một biểu thức chính quy - dumpdir = hoặc –d

: chỉ định thư mục đầu ra 2.6 Handles

Plugin này hiển thị các handle trong một tiến trình

$python vol.py –f profile= dlllist

$python vol.py –f profile= dlldump

29 i Cách sử dụng ii Tham số

1 pid = : lọc theo PID

2 physical-offset = : lọc theo bù vật lý

3 -t : lọc theo loại đối tượng

4 object-type = < OBJECTTYPE>: lọc theo loại đối tượng iii Đầu ra

Plugin này hiển thị tất cả các lệnh đã nhập qua console shell, rất hữu ích cho các cuộc điều tra, giúp theo dõi các lệnh mà người dùng hoặc kẻ xâm nhập thực hiện từ xa Nội dung bao gồm cách sử dụng và đầu ra của plugin.

• Tên của tiến trình lưu trữ trên bảng điều khiển

• Ứng dụng sử dụng bảng điều khiển

• Vị trí của các lần đệm trong lịch sử lệnh, số bộ đệm hiện tại, lệnh được thêm lần cuối và lệnh được hiển thị cuối cùng

$python vol.py –f profile= handles

$python vol.py –f profile= cmdscan

Các đối tượng bộ nhớ và kernel

Các plugin trong phần này có chức năng trích xuất bộ nhớ, hiển thị trình điều khiển hạt nhân và cung cấp danh sách các tệp đang mở trên hệ thống Một trong số đó là Procmemdump, giúp người dùng thu thập và phân tích thông tin quan trọng từ bộ nhớ.

Plugin này cho phép kết xuất một quy trình vào mẫu bộ nhớ thực thi, trích xuất cả không gian chùng từ hình ảnh bộ nhớ Điều này giúp bạn điều tra thêm các quy trình nghi ngờ bằng cách sử dụng các công cụ khác.

1 –unsafe hoặc -u để bỏ qua kiểm tra sanity 3.2 Procexedump

Plugin này cho phép trích xuất một tiến trình từ hình ảnh bộ nhớ vào một mẫu tệp thực thi, giúp người dùng điều tra thêm các tiến trình nghi ngờ bằng cách sử dụng các công cụ khác.

1 –unsafe hoặc -u để bỏ qua kiểm tra sanity

Modscan quét bộ nhớ vật lý cho các đối tượng LDR_DATA_TABLE_ENTRY, cho phép hiển thị tất cả các trình điều khiển hạt nhân, bao gồm cả những trình điều khiển đã bị ẩn hoặc hủy liên kết.

$python vol.py –f profile= procmemdump -D -p

$python vol.py –f profile= procexedump -D -p

31 i Cách sử dụng ii Đầu ra

• Offset (By default Virtual Offset, -P for Physical)

Plugin này quét các đối tượng trình điều khiển trong _DRIVER_OBJECT và liệt kê các đối tượng trình điều khiển mô-đun hạt nhân Để sử dụng, người dùng cần thực hiện các bước cụ thể, và kết quả đầu ra sẽ cung cấp thông tin chi tiết về các đối tượng trình điều khiển được phát hiện.

Quét tệp định vị từ FILE_OBJECT trong bộ nhớ vật lý giúp hiển thị tất cả các tệp đang mở trên hệ thống, bao gồm cả những tệp bị ẩn bởi phần mềm độc hại.

$python vol.py –f profile= modscan

$python vol.py –f profile= driverscan

32 i Cách sử dụng ii Đầu ra

Mạng

Các plugin liên quan đến phần này xác định các kết nối và ổ cắm đang mở

Plugin này hỗ trợ hệ điều hành x86 và x64 trên XP và 2003 Server, giúp hiển thị danh sách các kết nối mạng đang mở Nó rất hữu ích trong các cuộc điều tra để xác định lưu lượng truy cập đến và đi, cũng như xác định ứng dụng nào đang tạo ra lưu lượng đó Hướng dẫn sử dụng và kết quả đầu ra sẽ được cung cấp để người dùng dễ dàng áp dụng.

• Offset (Virtual by default, -P for physical)

Connscan trên hệ điều hành x86 và x64 của XP và 2003 Server tương tự như các kết nối mạng, nhưng plugin này có khả năng phát hiện các tạo tác từ các kết nối trước đó Lệnh này sẽ liệt kê các kết nối mạng đang hoạt động, bao gồm cả những kết nối đã bị ngắt, và sẽ rất hữu ích trong các cuộc điều tra mạng.

$python vol.py –f profile= filescan

$python vol.py –f profile= connections

33 điều tra để xác định lưu lượng truy cập đến hoặc đi đến đâu và ứng dụng nào đang tạo ra nó i Cách sử dụng ii Đầu ra

Sockscan là một công cụ mạnh mẽ cho hệ điều hành x86 và x64 trên XP và 2003 Server, cho phép quét bộ nhớ vật lý để tìm các đối tượng _ADDRESS_OBJECT (TCP sockets) Lệnh này hiển thị danh sách các ổ cắm hiện có trên hệ thống, bao gồm cả những ổ cắm đã tồn tại trước đó Việc sử dụng Sockscan rất hữu ích trong quá trình điều tra, vì nó cho phép người dùng xác định các tiến trình đang lắng nghe kết nối mạng và giao thức tương ứng.

$python vol.py –f profile= connscan

$python vol.py –f profile= sockscan

Netscan trên hệ điều hành x86 và x64 như Vista, 2008 Server, và Win7 giúp tìm kiếm các thiết bị nghe và điểm cuối TCP/UDP, hiển thị danh sách các kết nối mạng đang hoạt động Công cụ này hữu ích cho việc điều tra, cho phép xác định lưu lượng truy cập đến hoặc đi, qua giao thức nào và ứng dụng nào đang tạo ra lưu lượng đó.

Registry

Các plugin liên quan đến phần này in danh sách các tổ đăng ký và có thể kết xuất các hàm băm mật khẩu từ hình ảnh bộ nhớ

Cả hai plugin này đều xác định địa chỉ vật lý của registry hive và hiển thị danh sách của chúng Hivelist cung cấp đường dẫn hệ thống tệp và offset ảo, nhưng chức năng của các plugin này tương tự nhau Những lệnh này rất hữu ích trong các cuộc điều tra, vì offset có thể được sử dụng để trích xuất registry hive hoặc để phân tích sâu hơn thông qua các lệnh khác.

$python vol.py –f profile= netscan

35 i Cách sử dụng ii Đầu ra

Plugin này tạo ra một hive, hiển thị tất cả các subkey trong registry hive cùng với thời gian ghi gần nhất Thông tin này hữu ích vì sự hiện diện của các subkey nhất định có thể cung cấp bằng chứng quan trọng, trong khi thời gian cập nhật cuối cùng cho biết chúng đã được thay đổi gần đây.

Hashdump là công cụ giúp trích xuất các hàm băm mật khẩu (LM/NTLM) từ bộ nhớ, cho phép hiển thị thông tin đăng nhập đã được băm cho tài khoản người dùng Sau khi trích xuất, các hàm băm này có thể được sử dụng với các công cụ khác để xác định mật khẩu của tài khoản Cách sử dụng và đầu ra của lệnh này rất quan trọng trong quá trình bảo mật thông tin.

$python vol.py –f profile= hivescan/hivelist

$python vol.py –f profile= hivedump

$python vol.py –f profile= hashdump

Phân tích mã độc

Các plugin liên quan đến phần này hỗ trợ tìm mã độc hại ẩn, cũng như tìm ra phần mềm độc hại nào đang hoạt động trên hệ thống

Malfind là lệnh hữu ích trong việc phát hiện mã ẩn hoặc mã DLL bị tiêm vào, hỗ trợ quá trình điều tra và phân tích phần mềm độc hại.

1 -D : Trích xuất bản sao của đoạn bộ nhớ đã xác định vào đĩa

2 dump-dir = DIR: Trích xuất bản sao của đoạn bộ nhớ đã xác định vào đĩa ii Đầu ra

Plugin này quét các Windows Service i Cách sử dụng ii Đầu ra

$python vol.py –f profile= malfind -p

$python vol.py –f profile= svcscan

Plugin này giúp phát hiện các API hooks trong tiến trình và bộ nhớ hạt nhân, đồng thời nhận diện các trường hợp mã nối vào các API khác Công cụ này rất hữu ích trong việc điều tra phần mềm độc hại, giúp xác định cách thức hoạt động của chúng Để sử dụng, người dùng cần thực hiện các bước cụ thể, và kết quả đầu ra sẽ cung cấp thông tin chi tiết về hoạt động của phần mềm độc hại.

Plugin này ghi lại các quy trình thông báo trên toàn hệ thống, cho phép hiển thị các trường hợp mà phần mềm đang lắng nghe các cuộc gọi lại Tính năng này rất hữu ích trong việc điều tra phần mềm độc hại, giúp người điều tra xác định các hoạt động mà phần mềm độc hại đang theo dõi.

$python vol.py –f profile= apihooks -p

38 i Cách sử dụng ii Đầu ra

• Type a PsSetCreateProcessNotifyRoutine b PsSetCreateThreadNotifyRoutine c PsSetImageLoadNotifyRoutine d IoRegisterFsRegistrationChange e KeRegisterBugCheck f KeRegisterBugCheckReasonCallback g CmRegisterCallback h CmRegisterCallbackEx i IoRegisterShutdownNotification j DbgSetDebugPrintCallback k DbgkLkmdRegisterCallback

Devicetree thể hiện mối quan hệ giữa các đối tượng trình điều khiển và thiết bị liên quan, bao gồm cả các thiết bị gắn thêm Lệnh này liệt kê các thiết bị và đối tượng trình điều khiển theo định dạng cây, giúp ích trong việc điều tra phần mềm độc hại, vì phần mềm độc hại có thể chèn các đối tượng trình điều khiển để ngăn chặn dữ liệu.

1 DRV đại diện cho trình điều khiển

2 DEV đại diện cho thiết bị

3 ATT đại diện cho các thiết bị được đính kèm

$python vol.py –f profile= callbacks

$python vol.py –f profile= devicetree

Plugin này giúp tìm kiếm các quy trình ẩn bằng cách so sánh nhiều danh sách quy trình khác nhau Lệnh sẽ liệt kê tất cả các quy trình và kiểm tra xem chúng có xuất hiện trong các nguồn danh sách quy trình khác hay không Công cụ này rất hữu ích trong các cuộc điều tra, hỗ trợ việc phát hiện các quy trình ẩn.

• Offset (By default Virtual Offset, -P for Physical)

Các plugin khác

Iehistory

Plugin này giúp khôi phục lịch sử và bộ nhớ cache của Internet Explorer, điều này rất hữu ích trong các cuộc điều tra để kiểm tra hoạt động internet của người dùng.

1 pid: Lọc theo tiến trình

$python vol.py –f profile= psxview

$python vol.py –f profile= iehistory

Evtlogs

Plugin này trích xuất Nhật ký sự kiện của Windows (chỉ dành cho XP /

2003) Plugin này có thể hữu ích trong một cuộc điều tra, vì nhật ký sự kiện có thể giúp hiểu khi nào mọi thứ xảy ra trên hệ thống

1 save-evt: Lưu event logs (.evt)

2 verbose: SID cũng được đánh giá

Deskscan

Deskscan là công cụ mạnh mẽ giúp liệt kê các màn hình nền và phân bổ heap trên màn hình, cùng với các luồng liên quan Nó hỗ trợ trong việc phát hiện các máy tính để bàn giả mạo, thường được sử dụng để ẩn ứng dụng khỏi người dùng đã đăng nhập Bên cạnh đó, Deskscan còn phát hiện các máy tính để bàn do ransomware tạo ra và liên kết các luồng với máy tính để bàn của chúng Công cụ này cũng phân tích heap máy tính để bàn để phát hiện lỗi bộ nhớ và tìm kiếm phân bổ heap trên máy tính để bàn cấu hình, nhằm định vị các đối tượng USER.

Kịch bản

Kịch bản 1 : Memory Analysis - Ransomware

Người quản lý tài khoản đã liên lạc với SOC, thể hiện sự bực bội và tức giận vì không thể truy cập vào bất kỳ tệp nào trên máy tính của mình Anh ấy liên tục nhận được thông báo cho biết rằng các tệp đã bị mã hóa, dẫn đến việc bạn phải ngắt kết nối.

$python vol.py –f profile= evtlogs -D

Tắt máy tính khỏi mạng và tiến hành trích xuất bộ nhớ, sau đó phân tích dữ liệu bằng Volatility Tiếp tục điều tra để hiểu rõ cách thức hoạt động của ransomware và tìm ra biện pháp ngăn chặn hiệu quả!

Để xác định hệ điều hành của bản ghi bộ nhớ, bạn có thể sử dụng plugin imageinfo để kiểm tra các cấu hình khả dụng.

Chúng ta có thể chọn một trong ba cấu hình: Win7SP1x86_23418, Win7SP0x86 hoặc Win7SP1x86 cho bản ghi của mình Trong bài viết này, tôi sẽ sử dụng cấu hình Win7SP1x86 để thực hiện các lệnh tiếp theo.

Bước tiếp theo, kiểm tra xem liệu có tiến trình nào đáng ngờ đang được thực thi bằng cách liệt kê tất cả các tiến trình bằng psscan

Kết quả thu được một danh sách lớn các tiến trình:

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalon e>volatility_2.6_win64_standalone.exe -f /infected.vmem imageinfo

Volatility Foundation Volatility Framework 2.6 INFO : volatility.debug : Determining profile based on KDBG search

Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86

AS Layer1 : IA32PagedMemoryPae (Kernel AS)

AS Layer2 : FileAddressSpace (C:\Users\tranh\Desktop\Volatility\infected.vmem) PAE type : PAE

DTB : 0x185000L KDBG : 0x82948c28L Number of Processors : 1

Image Type (Service Pack) : 1 KPCR for CPU 0 : 0x82949c00L KUSER_SHARED_DATA : 0xffdf0000L Image date and time : 2021-01-31 18:24:57 UTC+0000 Image local date and time : 2021-01-31 13:24:57 -0500

42 Nhìn qua các tên tiến trình khác nhau, có thể thấy một vài cái tên kì lạ

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatility_

2.6_win64_standalone.exe -f /infected.vmem profile=Win7SP1x86 psscan

Offset(P) Name PID PPID PDB Time created

Trong số các tiến trình hệ thống, or4qtckT.exe (PID: 2732) là tiến trình cha của hai tiến trình @WanaDecryptor (PID: 3968).

Vào lúc 2021-01-31 18:24:49 UTC+0000, tiến trình có PID 2688 đã bị kết thúc ngay sau khi khởi động, với thời gian bắt đầu cũng là 2021-01-31 18:24:49 UTC+0000.

Chúng ta có thể sử dụng pstree để thấy rõ ràng hơn mối quan hệ giữa các tiến trình đang chạy

Giờ đi sâu vào PID đáng ngờ, có thể thấy ngoài @WanaDecryptor, or4qtckT.exe còn đẻ ra thêm một tiến trình khác là taskdl.exe (PID :

Tiếp tục điều tra file or4qtckT.exe, chúng ta có thể xác định đường dẫn mà kẻ tấn công đã tải xuống file độc hại này.

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatili ty_2.6_win64_standalone.exe -f /infected.vmem profile=Win7SP1x86 pstree

Name Pid PPid Thds Hnds Time

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatili ty_2.6_win64_standalone.exe -f /infected.vmem profile=Win7SP1x86 psscan | grep 2732

0x000000001ef9ed40 @WanaDecryptor 2688 2732 0x1e6d9460 2021-01-31 18:24:49 UTC+0000 2021-01-31 18:24:49 UTC+0000

0x000000001fcd4350 or4qtckT.exe 2732 1456 0x1e6d94c0 2021-01-31 18:02:16 UTC+0000

Từ kết quả thu được, có thể suy ra đường dẫn nơi tệp độc hại được thực thi lần đầu là : C:\Users\hacker\Desktop\or4qtckT.exe

Sau khi xác định tệp tin nghi ngờ, chúng ta có thể sử dụng plugin procdump hoặc dumpfiles để kết xuất tệp tin xuống, phục vụ cho các cuộc điều tra sâu hơn.

File được lưu xuống có tên executable.2732.exe Chúng ta có thể lấy hash sha256 của nó thông qua sha256sum và được kết quả

5215d03bf5b6db206a3da5dde0a6cbefc8b4fee2f84b99109b0fce07b d2246d6 Đưa mã băm lên VirusTotal để kiểm tra được:

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatili ty_2.6_win64_standalone.exe -f /infected.vmem profile=Win7SP1x86 filescan | grep or4qtckT.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\or4qtckT.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\or4qtckT.exe

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatili ty_2.6_win64_standalone.exe -f /infected.vmem profile=Win7SP1x86 procdump -p 2732 -m dump-dir=./

0x83ed4350 0x00400000 or4qtckT.exe OK: executable.2732.exe

Theo kết quả từ VirusTotal trả về, có thể kết luận máy đã bị nhiễm

Ransomware WannaCry đã gây ra nhiều thiệt hại nghiêm trọng trên toàn cầu Để hiểu rõ hơn về cơ chế hoạt động của nó, chúng ta có thể điều tra tên tệp chứa khóa công khai mà ransomware này sử dụng để mã hóa khóa bí mật Việc xác định các thông tin này sẽ giúp chúng ta nắm bắt được cách thức mà WannaCry thực hiện tấn công và tìm ra biện pháp phòng ngừa hiệu quả hơn trong tương lai.

Sử dụng plugin handles, có thể thấy file mã độc này có thể đã thực hiện

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatility_ 2.6_win64_standalone.exe -f /infected.vmem profile=Win7SP1x86 handles -p

Offset(V) Pid Handle Access Type Details

\Device\HarddiskVolume1\Users\hacker\Desktop

MACHINE\SYSTEM\CONTROLSET001\CONTROL\NLS\SORTING\VERSIONS

MACHINE\SYSTEM\CONTROLSET001\CONTROL\SESSION MANAGER

\Device\HarddiskVolume1\Users\hacker\Desktop\00000000.eky

The file named 00000000.eky is associated with the WannaCry ransomware To understand the eky file extension, a simple Google search for "wannacry public key file extension" can provide useful information A relevant resource is an article from FireEye that discusses the WannaCry malware in detail.

Có nhiều thông tin thú vị liên quan đến việc tìm kiếm tệp mà không cần sử dụng filescan và grep Chúng ta có thể tìm thấy tệp thông qua handles, giúp tiết kiệm thời gian và công sức Tuy nhiên, nếu thực hiện lệnh filescan kết hợp với grep -F "hacker\Desktop", chúng ta sẽ nhận được nhiều kết quả khác nhau, vì -F cho phép grep tìm kiếm chuỗi cố định mà không sử dụng regex.

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatility_2.6_win64_ standalone.exe -f /infected.vmem profile=Win7SP1x86 filescan | grep -F

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\zlib1.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\tor.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\taskse.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libssp-0.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\ssleay32.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\@WanaDecryptor@.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libssp-0.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\b.wnry

\Device\HarddiskVolume1\Users\hacker\Desktop\@WanaDecryptor@.exe.lnk

\Device\HarddiskVolume1\Users\hacker\Desktop\taskdl.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\@WanaDecryptor@.bmp

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libeay32.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libevent_extra-2-0-5.dll 0x000000001ec5ba80 7 0 R r-d

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libevent_extra-2-0-5.dll 0x000000001ec5bb38 8 0 R r

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libgcc_s_sjlj-1.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libevent-2-0-5.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\taskse.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\or4qtckT.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\taskdl.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\ssleay32.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\@WanaDecryptor@.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libevent_core-2-0-5.dll 0x000000001ef5ce38 6 0 R r

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\taskhsvc.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libevent-2-0-5.dll

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\taskhsvc.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libevent_core-2-0-5.dll 0x000000001f4546d8 8 0 -W-r

\Device\HarddiskVolume1\Users\hacker\Desktop\00000000.res

\Device\HarddiskVolume1\Users\hacker\Desktop\00000000.eky

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\tor.exe

\Device\HarddiskVolume1\Users\hacker\Desktop\or4qtckT.exe

0x000000001fcb38c8 2 1 R rwd \Device\HarddiskVolume1\Users\hacker\Desktop 0x000000001fcb5568 6 0 R r-d

\Device\HarddiskVolume1\Users\hacker\Desktop\TaskData\Tor\libgcc_s_sjlj-1.dll

Trong bài viết này, chúng ta phát hiện ra các tệp thực thi độc hại, khóa, cùng với một số tệp khác như 00000000.res và b.wnry Đặc biệt, phần mở rộng wnry được sử dụng bởi WannaCry cho các tệp đã bị mã hóa, trong khi các tệp res có thể liên quan đến khóa mã hóa.

Kịch bản 2 : Memory Analysis – Stuxnet sử dụng Process Injection

Khi máy tính của người dùng thông báo bị nhiễm mã độc, việc đầu tiên là kiểm tra các tiến trình đang chạy để xác định có tiến trình nào đáng ngờ hay không Nếu không phát hiện điều gì khả nghi, bạn nên trích xuất bộ nhớ của máy để tiến hành điều tra sâu hơn.

Bước đầu tiên trong bài lab này là sử dụng plugin imageinfo, và chúng ta sẽ cấu hình với WinXPSP2x86 để thực hiện các lệnh tiếp theo.

Lấy danh sách các tiến trình đang chạy trong bản ghi bộ nhớ bằng plugin pslist:

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatility

_2.6_win64_standalone.exe -f /stuxnet.vmem imageinfo

INFO : volatility.debug : Determining profile based on KDBG search Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)

AS Layer1 : IA32PagedMemoryPae (Kernel AS)

(C:\Users\tranh\Desktop\Volatility\stuxnet.vmem)

Image date and time : 2011-06-03 04:31:36 UTC+0000

Image local date and time : 2011-06-03 00:31:36 -0400

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatility_2.6_win

64_standalone.exe -f /stuxnet.vmem profile=WinXPSP2x86 pslist

Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start

Như đã thấy, kết quả trả về có tới tận 3 tiến trình có tên lsass.exe Lsass.exe (Local Security Authority Process) là một file an toàn của

Microsoft đóng vai trò quan trọng trong hệ điều hành Windows, giúp duy trì các hoạt động bình thường của máy tính File lsass.exe, nằm trong thư mục \Windows\System32\, thực hiện các chính sách bảo mật như thay đổi mật khẩu và xác minh đăng nhập Nếu có đến ba tiến trình lsass.exe đang chạy trên máy của bạn, rất có thể file này đã bị giả mạo Do đó, người dùng không nên xóa, di chuyển hoặc chỉnh sửa file này để đảm bảo an toàn cho hệ thống.

Kiểm tra list DLL của 3 tiến trình này có thể thấy có sự khác biệt rõ ràng về những DLL mà chúng sử dụng

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatility_ 2.6_win64_standalone.exe -f /stuxnet.vmem profile=WinXPSP2x86 dlllist -p 680,1928,868

Command line : C:\WINDOWS\system32\lsass.exe

0x01000000 0x6000 0xffff C:\WINDOWS\system32\lsass.exe

0x7c900000 0xaf000 0xffff C:\WINDOWS\system32\ntdll.dll

0x7c800000 0xf6000 0xffff C:\WINDOWS\system32\kernel32.dll

0x77dd0000 0x9b000 0xffff C:\WINDOWS\system32\ADVAPI32.dll

0x77e70000 0x92000 0xffff C:\WINDOWS\system32\RPCRT4.dll

0x77fe0000 0x11000 0xffff C:\WINDOWS\system32\Secur32.dll

0x75730000 0xb5000 0xffff C:\WINDOWS\system32\LSASRV.dll

0x71b20000 0x12000 0xffff C:\WINDOWS\system32\MPR.dll

0x7e410000 0x91000 0xffff C:\WINDOWS\system32\USER32.dll

0x77f10000 0x49000 0xffff C:\WINDOWS\system32\GDI32.dll

0x77b20000 0x12000 0xffff C:\WINDOWS\system32\MSASN1.dll

0x77c10000 0x58000 0xffff C:\WINDOWS\system32\msvcrt.dll

0x5b860000 0x55000 0xffff C:\WINDOWS\system32\NETAPI32.dll

0x767a0000 0x13000 0xffff C:\WINDOWS\system32\NTDSAPI.dll

0x76f20000 0x27000 0xffff C:\WINDOWS\system32\DNSAPI.dll

0x71ab0000 0x17000 0xffff C:\WINDOWS\system32\WS2_32.dll

0x71aa0000 0x8000 0xffff C:\WINDOWS\system32\WS2HELP.dll

0x76f60000 0x2c000 0xffff C:\WINDOWS\system32\WLDAP32.dll

0x71bf0000 0x13000 0xffff C:\WINDOWS\system32\SAMLIB.dll

0x74440000 0x6a000 0xffff C:\WINDOWS\system32\SAMSRV.dll

0x76790000 0xc000 0xffff C:\WINDOWS\system32\cryptdll.dll

0x5cb70000 0x26000 0x1 C:\WINDOWS\system32\ShimEng.dll

0x6f880000 0x1ca000 0x1 C:\WINDOWS\AppPatch\AcGenral.DLL

0x77be0000 0x15000 0x1 C:\WINDOWS\system32\MSACM32.dll

0x769c0000 0xb4000 0xf C:\WINDOWS\system32\USERENV.dll

0x5ad70000 0x38000 0x3 C:\WINDOWS\system32\UxTheme.dll

C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-

Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll

0x4d200000 0xe000 0x1 C:\WINDOWS\system32\msprivs.dll

0x71cf0000 0x4c000 0x2 C:\WINDOWS\system32\kerberos.dll

0x74380000 0xf000 0x1 C:\WINDOWS\system32\wdigest.dll

0x77920000 0xf3000 0x1 C:\WINDOWS\system32\SETUPAPI.dll

0x75d90000 0xd0000 0x1 C:\WINDOWS\system32\oakley.DLL

0x74370000 0xb000 0x1 C:\WINDOWS\system32\WINIPSEC.DLL

0x743a0000 0xb000 0x1 C:\WINDOWS\system32\pstorsvc.dll

Command line : "C:\WINDOWS\\system32\\lsass.exe"

0x01000000 0x6000 0xffff C:\WINDOWS\system32\lsass.exe

0x7c900000 0xaf000 0xffff C:\WINDOWS\system32\ntdll.dll

0x7c800000 0xf6000 0xffff C:\WINDOWS\system32\kernel32.dll

0x77dd0000 0x9b000 0xffff C:\WINDOWS\system32\ADVAPI32.dll

0x77e70000 0x92000 0xffff C:\WINDOWS\system32\RPCRT4.dll

0x77fe0000 0x11000 0xffff C:\WINDOWS\system32\Secur32.dll

0x7e410000 0x91000 0xffff C:\WINDOWS\system32\USER32.dll

0x77f10000 0x49000 0xffff C:\WINDOWS\system32\GDI32.dll

Command line : "C:\WINDOWS\\system32\\lsass.exe"

0x01000000 0x6000 0xffff C:\WINDOWS\system32\lsass.exe

0x7c900000 0xaf000 0xffff C:\WINDOWS\system32\ntdll.dll

0x7c800000 0xf6000 0xffff C:\WINDOWS\system32\kernel32.dll

0x77dd0000 0x9b000 0xffff C:\WINDOWS\system32\ADVAPI32.dll

0x77e70000 0x92000 0xffff C:\WINDOWS\system32\RPCRT4.dll

0x77fe0000 0x11000 0xffff C:\WINDOWS\system32\Secur32.dll

0x7e410000 0x91000 0xffff C:\WINDOWS\system32\USER32.dll

0x77f10000 0x49000 0xffff C:\WINDOWS\system32\GDI32.dll

C:\WINDOWS\system32\KERNEL32.DLL.ASLR.0360b7ab

0x71ab0000 0x17000 0xa C:\WINDOWS\system32\WS2_32.dll

0x71aa0000 0x8000 0x8 C:\WINDOWS\system32\WS2HELP.dll

0x76bf0000 0xb000 0x2 C:\WINDOWS\system32\PSAPI.DLL

0x769c0000 0xb4000 0x2 C:\WINDOWS\system32\USERENV.dll

0x771b0000 0xaa000 0x2 C:\WINDOWS\system32\WININET.dll

0x71ad0000 0x9000 0x2 C:\WINDOWS\system32\WSOCK32.dll

C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-

Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll

Sử dụng malfind để kiểm tra xem liệu có thêm bất cứ shellcode hay dll nào khác được tiêm vào những tiến trình này hay không

C:\Users\tranh\Desktop\Volatility\volatility_2.6_win64_standalone>volatility_ 2.6_win64_standalone.exe -f /stuxnet.vmem profile=WinXPSP2x86 malfind -p 680,1928,868

Process: lsass.exe Pid: 868 Address: 0x80000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

Process: lsass.exe Pid: 868 Address: 0x1000000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

Process: lsass.exe Pid: 1928 Address: 0x80000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

Process: lsass.exe Pid: 1928 Address: 0x1000000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

Process: lsass.exe Pid: 1928 Address: 0x6f0000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

0x006f0000 29 87 7f ae 00 00 00 00 ff ff ff ff 77 35 00 01

0x006f0000 29877fae0000 SUB [EDI+0xae7f], EAX

Process: lsass.exe Pid: 1928 Address: 0x680000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

Process: lsass.exe Pid: 1928 Address: 0x870000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

Kết quả trả về cho thấy 2 tiến trình 868 và 1928 có những đoạn mã được tiêm vào, trong đó bao gồm cả những đoạn mã có chứa PE header

Từ đây có thể suy ra được rằng 2 tiến trình đó là 2 tiến trình độc hại

Chúng ta có thể trích xuất các đoạn mã để tiến hành điều tra sâu hơn bằng cách sử dụng tùy chọn -D , từ đó thu được các file cần thiết.

Kiểm tra trên VirusTotal thu được kết quả là shellcode của Worm Stuxnet

Ngày đăng: 08/01/2022, 10:54

HÌNH ẢNH LIÊN QUAN

Các lệnh Volatility cơ bản nhất được xây dựng như hình dưới đây. Thay thế [plugin] bằng tên của plugin để sử dụng, [image] với đường dẫn tệp  đến hình ảnh bộ nhớ của bạn và [profile] bằng tên cấu hình (chẳng hạn như  Win7SP1x64) - Bài tập lớn môn an toàn mạng (37)
c lệnh Volatility cơ bản nhất được xây dựng như hình dưới đây. Thay thế [plugin] bằng tên của plugin để sử dụng, [image] với đường dẫn tệp đến hình ảnh bộ nhớ của bạn và [profile] bằng tên cấu hình (chẳng hạn như Win7SP1x64) (Trang 12)
1.2. Chọn Cấu hình - Bài tập lớn môn an toàn mạng (37)
1.2. Chọn Cấu hình (Trang 14)
Như có thể thấy, chúng ta có thể sử dụng 1 trong 3 cấu hình Win7SP1x86_23418,  Win7SP0x86,  Win7SP1x86  cho  bản  ghi  của  mình - Bài tập lớn môn an toàn mạng (37)
h ư có thể thấy, chúng ta có thể sử dụng 1 trong 3 cấu hình Win7SP1x86_23418, Win7SP0x86, Win7SP1x86 cho bản ghi của mình (Trang 41)
Ở đây chúng ta sẽ sử dụng WinXPSP2x86 để làm cấu hình cho những lệnh tiếp theo.  - Bài tập lớn môn an toàn mạng (37)
y chúng ta sẽ sử dụng WinXPSP2x86 để làm cấu hình cho những lệnh tiếp theo. (Trang 48)

TỪ KHÓA LIÊN QUAN

w