User activity analysis (Next)

1. UserAssist Key

Nếu như kẻ tấn công thực thi một chương trình, chúng ta có thể biết nó được thực thi lần cuối khi nào không? Có thể biết một chương trình nào đó đã được thực thi bao nhiêu lần trên hệ thống không?

Các key UserAssist nằm trong NTUSER.DAT hive sẽ giúp chúng ta khám phá điều đó. Các ứng dụng GUI cũng để lại dấu vết bởi các hoạt động của người dùng trong hive NTUSER.DAT.

Đối với Windows XP và từ Windows 7 trở đi có sự khác biệt về GUID.

Với Windows XP ta nên tập chung vào 2 GIUD bắt đầu bằng:

  • 5e6ab780.. -> Internet Toolbar
  • 5048700.. -> Active Desktop

Còn dưới đây là một số GUIDs từ Windows 7 trở đi:

Nhưng thực tế chúng ta có thể chỉ nên tập chung vào 2 GUID sau:

  • CEBFFSCD.. => Executable File Execution
  • F4E57C4B.. => Shortcut File Execution

Các key mà chúng ta sẽ kiểm tra, có thể hiển thị thời gian thực thi cuối cùng cũng như số lần một chương trình.

Việc phân tích đúng key UserAssist sẽ cho phép bạn xác định:

  • Last Run Time (UTC)
  • RunCount
  • Name of GUI application
  • Focus Time: Tổng thời gian một ứng dụng được focus, được biểu thị bằng mili giây.
  • Focus Count: Tổng số lần một ứng dụng được re-focus trong Explorer (chuột di chuyển qua ứng dụng và nhấp vào)

Ví dụ:

UserAssist sẽ liệt kê tất cả các ứng dụng được khởi chạy từ giao diện Windows GUI cho mỗi người dùng (nó sẽ không liệt kê các command-line applications). Hơn nữa, nó sẽ liệt kê thời gian chạy cuối cùng của mỗi ứng dụng và tổng số lần nó được thực thi.

Khi sử dụng Registry Explorer như hình bên trên đã hiển thị cho người dùng một cách khá dễ nhìn, thực tế các giá trị của các khóa được mã hóa bằng ROT-13. Đây là một dạng mật mã đơn giản (Mỗi chữ cái được dịch sang phải 13 lần theo bảng chữ cái) và nó đã được giải mã khi sử dụng Registry Explorer.

VD các value name ban đầu sẽ như sau:

Thử decode value name “Puebzr” ta sẽ được kết quả là: “Chrome”.

Các GUIDS khác nhau (EXE hoặc LNK) từ Win7 trở lên sẽ tăng theo những cách khác nhau dựa trên cách người dùng thực thi chương trình. Nếu nhấp vào tài liệu Word hoặc PDF, nó sẽ tự động tải tệp thực thi thích hợp để đọc tệp đó thông qua các liên kết tệp được ánh xạ trong registry. Điều này tương đương với việc thực thi trực tiếp chương trình, điều này sẽ chỉ tăng GUID của CEBFF6CD.. để thực thi tệp. Tuy nhiên, ví dụ như nếu nhấp vào trình duyệt Chrome của thanh tác vụ (được lưu trữ dưới dạng tệp LNK), nó sẽ tăng các key của F4E57C4B khi tệp LNK được thực thi. Ngoài ra, tệp LNK gọi tệp thực thi trực tiếp nên bạn sẽ nhận được một entry đồng thời hiển thị trong entry CEBFF5CD.. .

Phân tích key này có thể thấy chính xác cách một người dùng gọi một chương trình. Bạn có thực thi Chrome từ taskbar, desktop, Start menu hay bằng cách nhấp trực tiếp vào liên kết không? Bạn có thói quen thực thi và sử dụng máy tính theo cách chính xác của bạn, vì vậy nếu có ai đó sử dụng và chạy các ứng dụng chúng ta có thể phát hiện được điểm khác thường ở đây. Mỗi người đều có thói quen riêng và phân tích của UserAssist có thể giúp xuyên qua bức màn của thói quen đó bằng cách tiết lộ thông tin phong phú này cho chúng ta.

Nó xuất hiện với các phiên bản Windows mới (Win 10), các giá trị khóa của userassist sẽ đôi khi được đặt lại. Trong khi entry gốc có thể được duy trì, số lần chạy, time/count có thể hoàn trả về 0. Trong một số trường hợp, Last Run Time sẽ được duy trì, nhưng RunCount sẽ bằng 0. Có thể trong lần cập nhật lớn nào đó, hệ điều hành Windows 10 đặt lại khóa này. Tóm lại, khóa có thể sẽ hiển thị sự tồn tại trước đây của các ứng dụng hoặc lịch sử thực thi kể từ lần đặt lại cuối cùng.

Ngoài ra, bạn có thể để ý thấy, một số value name có một chuỗi ký tự đằng trước app name:

Thử decode: {1NP14R77-02R7-4R5Q-O744-2RO1NR5198O7}\pzq.rkr

Kết quả sẽ được: {1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\cmd.exe.

Kết quả thu được với “cmd.exe” thì khác dõ ràng nhưng vậy {1AC14E77-02E7-4E5D-B744-2EB1AE5198B7} có ý nghĩa gì?

Câu trả lời là bởi vì từ Windows 7 trở lên, việc giải mã ROT13 không cho đường dẫn đầy đủ, nhưng nó thường hiển thị tệp thực thi hoặc tệp LNK cùng với GUID. Các GUID sẽcho bạn biết vị trí đường dẫn của tệp thực thi. Chẳng hạn như:

Vậy với dãy mã {1AC14E77-02E7-4E5D-B744-2EB1AE5198B7} của chúng ta nó có tương ứng với GUID là “System”. Nhiều GUID phổ biến và bạn có thể dễ dàng dịch hoặc tra cứu thông qua tìm kiếm, bạn có thể tham khảo link sau: https://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/known-folder-guids-for-file-dialog-custom-places?view=netframeworkdesktop-4.8

Với trường hợp khác tức là với đường dẫn thư mục không được xác định bởi một mục nhập GUID, trong Windows 7 trở lên, nó sẽ hiển thị đường dẫn đầy đủ của tệp thực thi cũng như tệp thực thi ở các vị trí có.

Trên windows XP, Giá trị tên của key sẽ luôn đứng trước UEME và sau đó theo sau là RUNPATH, RUNCPL hoặc RUNPIDL. Mỗi tên trong số này đều mang ý nghĩa về cách tệp được thực thi:

  • RUNPATH là đường dẫn của tệp thực thi. Người dùng rất có thể đã nhấp đúp vào tệp thực thi thông qua giao diện Windows Explorer.
  • RUNCPL là launching of a Control Panel applet. Điều này thật thú vị nếu bạn thấy bất kỳ người dùng nào thay đổi giá trị bảo mật hoặc cài đặt người dùng trên hệ thống.
  • RUNPIDL là một con trỏ đến tệp, chẳng hạn như lối tắt từ tệp LNK.
  • UIQCUT đếm chương trình được khởi chạy thông qua a Quick Launch menu shortcut.
  • UISCUT đếm chương trình được khởi chạy thông qua Desktop shortcut.
  • UITOOLBAR entry lưu giữ dữ liệu về các lần clicks trên Windows Explorer Toolbar.

Các registry key UserAssist của Win7 không còn được gắn sẵn nhãn UEME nữa. Ngay cả Windows VISTA vẫn tuân theo định dạng WinXP UEME ban đầu.

2. Amcache.hive

Amcache.hve là một registry hive mới Bắt đầu từ Windows 8 trở đi và đã được cập nhật trong các hệ thống Windows 7 cũ hơn. Hive mới này chứa thông tin liên quan đến việc theo dõi các tệp thực thi, nơi thực thi và một số thông tin liên quan nữa.

Location: C: \Windows\AppCompat\Programs\Amcache. hve ( Đối với Windows 7/8/8.1/10 and 2012/2016)

Key: Amcache. hve \Root \File\ {Volume GUID} \ #######

Key này cung cấp một số thông tin như:

  • Entry cho mỗi lần chạy thực thi, thông tin đường dẫn đầy đủ, Thời gian sửa đổi lần cuối $Standardlnfo của tệp và Disk volume mà tệp thực thi chạy.
  • Last Modification Time của key = First Run Time (Đối với những chương trình chạy lần đầu)
  • Hàm băm SHA1 của tệp thực thi cũng có trong key

Khác với UserAssist trong NTUSER.DAT, chúng ta không thể “gán” việc thực thi cho một người dùng cụ thể trên hệ thống đang được phân tích. Amcache.hve sẽ chứa đường dẫn đầy đủ, thời gian sửa đổi lần cuối NTFS $Standardlnfo của tệp, hàm băm SHAl (bỏ đi 0000 đầu tiên) và trong một số trường hợp còn có thể có thông tin tệp như Version, ProductName, CompanyName, và Description.

Nói chung, Amcache hive sẽ theo dõi cả các chương trình đã cài đặt và các chương trình được thực thi. Các chương trình được cài đặt qua trình cài đặt cũng sẽ hiển thị trong Amcache.hve\Root\File\ và  Amcache.hve\Root\Programs. Các vị trí được gọi là “associated entries”.

Một điều nữa, key Amcache.hve\Root\File\{Volume GUID}, với volume GUID sẽ có sự trùng hợp với key MountedDevices được tìm thấy trong System\MountedDevices. Do đó bạn có thể xác định chính xác volume mà tệp thực thi đã được chạy bằng cách sử dụng thông tin này. Hãy xem ví dụ sau bạn có thể thấy dõ hơn điều này:

 

Các sub key trong Amcache.hve\Root\File\{Volume GUID}, mỗi sub key này đại diện cho một tệp thực thi khác nhau chạy trong Windows. The last write time của key rất có thể là lần đầu tiên một chương trình được thực thi.

Hãy cùng xem ví dụ dưới đây:

Các Value Name 10 hay 101 có ý nghĩa gì?

Value Name là cá giá trị hex từ 0 đến 17 và ngoài ra có 100 và 101. Bảng dưới đây sẽ cho chúng ta thông tin thêm về các giá trị này:

Value Description Data Type
0 Product Name UNICODE string
1 Company Name UNICODE string
2 File version number only UNICODE string
3 Language code (1033 for en-US) DWORD
4 SwitchBackContext QWORD
5 File Version UNICODE string
6 File Size (in bytes) DWORD
7 PE Header field – SizeOfImage DWORD
8 Hash of PE Header (unknown algorithm) UNICODE string
9 PE Header field – Checksum DWORD
a Unknown QWORD
b Unknown QWORD
c File Description UNICODE string
d Unknown, maybe Major & Minor OS version DWORD
f Linker (Compile time) Timestamp DWORD – Unix time
10 Unknown DWORD
11 Last Modified Timestamp FILETIME
12 Created Timestamp FILETIME
15 Full path to file UNICODE string
16 Unknown DWORD
17 Last Modified Timestamp 2 FILETIME
100 Program ID UNICODE string
101 SHA1 hash of file

UNICODE string

Với ví dụ trên, chương trình này đã thực sự được thực thi, đó là lý do vì sao bạn thấy một entry trong các phần “File” có dữ liệu được điền, chẳng hạn như product name, file size, product name, v.v. Một lưu ý có thể khá hữu ích là, bạn có thể liên kết thời gian thực thi đầu tiên với tên chương trình bằng cách xem thời gian ghi cuối cùng của registry key. Điều này chỉ chính xác đối với lần chạy đầu tiên với các ứng dụng mới trong hệ thống, nhưng thường là không hiệu quả cho các ứng dụng gốc của hệ thống.

Nhưng cũng có trường hợp như hình dưới với nhiều chi tiết của chương trình bị thiếu:

Chương trình chỉ có đường dẫn thực thi và SHA1 nhưng thiếu nhiều thông tin bổ sung khác, thì điều này có thể được giải thích rằng là chương trình đó tồn tại trên hệ thống, tuy nhiên, sẽ không thể xác định xem nó có được thực thi hay không. Nhưng, việc chúng ta có thể chứng minh chương trình đã tồn tại trên hệ thống thông qua registry hive Amcache.hve trong một số trường hợp cũng rất hữu ích.

Kết luận

Còn rất nhiều  những registry key thú vị khác nhưng về cơ bản qua series vể Registry này mình đã trình bày tổng quan về Registry, cách đọc, tìm và phân tích một số key cơ bản mà mình thường sử dụng, phân tích trong quá trình học tập, làm việc. Mình xin phép dừng series về Registry Analysis ở đây!

By,

T4if, RE_Team

65 lượt xem