Tiếp tục series về Registry, ở bài trước mình có trình bày về khái niệm, cấu trúc và vị trí của Registry, phần tiếp theo này mình sẽ chia sẻ thêm về một số hive, thông tin về registry.
Một số công cụ
Trước khi đi vào phân tích một Registry key nào đó, chúng ta phải chuẩn bị một số công cụ hữu ích giúp ta trong quá trình phân tích. Có khá nhiều công cụ có thể view registry nhưng mình thường sử dụng ngay RegistryEditor mặc định trên Windows và Registry Explorer của tác giả Eric Zimmerman khi phân tích các registry “offline” sau khi thu thập được, Registry Explorer còn hỗ trợ decode một giá trị registry cho người phân tích một view khá dễ hiểu. Các bạn có thể tải Registry Explorer tại: https://ericzimmerman.github.io/#!index.md
Giao diện Registry Editor trên Windows:
Còn Registry Explorer sẽ có giao diện như sau:
Để sử dụng Registry Explorer khá đơn giản, bạn chỉ cần import các file đã thu thập được vào bằng cách ấn File trên thanh taskbar và chọn Loadhive.
Còn làm thế nào để có file mẫu để phân tích, đơn giản nhất các bạn có thể thử ngay trên máy tính của mình hay một máy ảo nào đó. Có thể sử dụng các công cụ thu thập như FTK Image nếu như nó yêu cầu bạn phải biết được mình cần thu thập gì, nằm ở đâu. Ngoài ra để đơn gian hơn các bạn có thể sử dụng bộ tools cdir collector nó sẽ tự động thu thập những file cần thiết để người điều tra phân tích, và mình cũng rất hay sử dụng công cụ này. (Link tải tools cdir collector: https://github.com/CyberDefenseInstitute/CDIR). Bạn chỉ cần click chuột phải và chọn Run as administrator và đợi công cụ tự động thu thập cho chúng ta.
Sau khi chạy xong, sẽ thu được một thư mục chứa các thư mục con như hình dưới và bao gồm cả các Registry mà chúng ta đang cần:
Thư mục Registry kia sẽ bao gồm các hive và ví dụ như hình dưới:
Và bây giờ bạn chỉ cần mở Registry Explorer và import các hive này vào và tiền hành phân tích. Chẳng hạn như dưới đây mình đã load SAM hive và sẽ nhận được như sau:
Một công cụ nữa để dcode các giá trị thời gian mình dùng là Dcode date, và ngay trên Registry Explorer cũng có thể decode được một số các giá trị thời gian nhưng không phải tất cả, vì vậy bạn có thể kết hợp cả hai.
Ví dụ:
Trong registry key HKLM\SYSTEM\ControlSet001\Control\Windows ở trường Value Name “ShutdownTime” thể hiện thời gian tắt máy tính. Chuỗi giá trị này thể hiện cho một mốc thời gian nào đó, và để decode nó chúng ta cần xác định xem nó thuộc định dạng nào, điều này mình sẽ phân tích ở những value data gặp ở các registry khác sau, nhưng cơ bản bạn có thể xác định nó thuộc định dạng bao nhiêu bit và từ đó có thể thử một số định dạng thời gian tương ứng với số bit đó. Ví dụ ta thấy ở đây có 1 dãy hex 16 ký tự (64bit) và ở đây nó thuộc định dạng Windows FileTime 64 bit:
Convert value data này sang định dạng Windows 64 bit – Little Endian ta sẽ có thời gian máy tính bị tắt gần nhất. Có thể chuột phải vào value data BD707DE1BC56D701 và chọn Data Interpreter:
Hoặc dùng công cụ Dcode Date:
Vậy là về cơ bản bạn đã chuẩn bị cơ bản để tiến hành phân tích kĩ hơn các registry key. Let’s do it!
Transaction Logs
Bây giờ các bạn hãy thử tiến hành import một hive vào Regsitry Explorer:
Mình thử import hive SYSTEM vào và nhiều trường hợp ngay sau đó xuất hiện thông báo:
Thông báo nhắc bạn replay thêm các “transaction logs”. Vậy “transaction logs” là gì mà cần chúng ta lại phải cần thêm chúng?
Nó chính là những tập tin có đuôi .LOG1 và .LOG2:
Những tập tin này nằm cùng thư mục chứa hive cùng tên. Khi có một thay đổi nào đó liên quan đến registry, Windows sẽ không ghi trực tiếp vào trong hive mà sẽ lưu vào trong các tệp tin .LOG này sau đó mới được ghi vào Hive chính. Ví dụ khi bạn có thay đổi nào đó liên quan đến cấu hình hệ thống và cần phải sửa đổi các giá trị registry, Windows sẽ ghi những thay đổi đó vào các tệp SYSTEM.LOG1 và khi bạn khởi động lại, hay tắt máy tính những thay đổi trong file này sẽ được cập nhật vào lại trong SYSTEM hive.
Vì thế những file này cũng có thể chứa những thông tin quan trọng và người điều tra không được bỏ qua chúng.
Lưu ý: khi import vào Registry Explorer bạn có thể giữ phím SHIFT và chọn cả 3 file gồm hive và 2 file .LOGX hoặc làm như những hình trên theo thông báo mà Registry Explorer đưa ra.
Backup hives
Vị trí file: System32\Config\RegBack
File này cũng chứa các hive như SAM, SYSTEM, SOFTWARE, SECURITY và DEFAULT.
Windows sẽ tự động sao chép các SAM, DEFAULT, SYSTEM, SOFTWARE và SECURITY trên định ký 10 ngày một lần vào System32\Config\RegBack ( %WinDir%\repair đối với Win XP).
Những bản backup này ngoài việc có thể khôi phục lại khi gặp sự cố bất thường nào đó, chẳng hạn việc so sánh chúng với các Registry Hive hiện tại có thể thấy sự khác nhau, đó chính là những thay đổi của bản cũ và bản mới, và đôi khi điều đó cũng có thể cho người điều tra thông tin hữu ích.
Nhưng registry này cũng không sao chép tất cả các hives, nó sẽ không sao chép NTUSER.DAT hive của người dùng cục bộ.
Last Write Time
Một trong những điều sẽ giúp ích cho người điều tra rất nhiều là để ý đến Last Write Time của registry key. Thực tế là mỗi registry key đều sẽ có Last Write Time và giá trị này được hiển thị theo mốc thời gian UTC.
Khi một khóa được cập nhật, thay đổi hay thêm mới thì giá trị Last Write Time cũng sẽ được cập nhật. Dựa vào thời gian ghi cuồi cùng này, người điều tra có thể xác định thời gian một key có bị thay đổi trong tương ứng với các mốc thời gian với các sự kiện có liên quan đến sự cố của họ hay không. Việc xác định, lập được các mốc thời gian cũng giúp chúng ta không bị quá lan man, đi sâu vào những key không cần thiết, tiết kiệm được thời gian đáng kể.
Với Registry Explorer bạn có thể xác định Last Write Time của key tại những vị trí trong hình.
MRUList
MRU là viết tắt của Most Recently Used. Chẳng hạn như bạn gặp một key có vài chục đến cả trăm value key, nhưng lại không xác định được cái nào được tạo trước, cái nào tạo sau, việc này có thể gay đến sự nhầm lần hay phức tạp trọng quá trình điều tra vì vậy MRUList khá hữu ích trong quá trình điều tra
Nó cung cấp cho chúng ta thông tin về thứ tự các value key được thêm vào key. Việc xác định thứ tự value key nào được thêm vào key khá quan trọng, chẳng hạn như bạn có thể sẽ biết được thứ tự hành vi nhất định của người dùng.
MRUList là một danh sách các giá trị 4 byte, số lượng giá trị này tùy thuộc vào từng key và có thể lên tới 150 gá trị như trong RecentDocs.
Như ví dụ trong hình, thứ tự sẽ là 0C, 3E, 13…. và ta sẽ xác định được tương ứng với các Value Name.
Delete Registry Key
Như trong hình trên, có thể thấy nhiều key có màu đỏ, đó chính là key đã bị xóa, nhưng tại sao ta vẫn có thể xem được chúng. Câu trả lời là registry cũng tương tự với hệ thống tệp, khi xóa đi một key nào đó, nó chỉ là không được phân bổ, tức là lúc này dữ liệu đó được coi là unlocated data. Những dữ liệu đó có thể vẫn còn lại khi xóa key, chúng chỉ không còn khi đã bị wipe (ghi đè) lên. Vì vậy đôi khi chúng ta có thể vẫn có cơ hội xem được những khóa này.
Hôm nay mình sẽ dừng lại ở đây, qua hai bài đầu về registry này các bạn có thể có cái hình tổng quan về Registry và từ phần sau sẽ là những bài về phần tích chúng.
By,
T4fi_RE_Team