MoVP 1.1 Phiên đăng nhập, quá trình và hình ảnh

Kẻ tấn công muốn đăng nhập. Họ rất thích đăng nhập từ xa với RDP. Những hành động này xảy ra bất cứ lúc nào, nhân của window sẽ tạo ra 1 phiên làm việc mới, đó là cơ bản của 1 container cho các quá trình và các đối tượng thuộc về các phiên làm việc. Phân tích các cấu trúc có thể mang lại giá trị pháp y cao, do đó MoVP 1.1 plugin là 1 phiên - một plugin để báo cáo về các phiên đăng nhập của window dựa trên bộ nhớ, bao gồm cả quá trình của họ có liên quan, modun hạt nhân

Đây là 1 số cách bạn dùng plugin này:

  • Quá trình liên kết với quá trình đăng nhập của họ: bạn thấy abc.exe đang chạy và bạn muốn biết nếu nó được đưa ra bởi 1 người qua RDP hoặc bởi 1 người dùng ngồi ở bàn điều khiển. 
  • Phát hiện quá trình ẩn: mỗi cấu trúc phiên có chứa 1 danh sách liên kết của các quá trình cho phiên đó. Nếu phần mềm độc hại bỏ liên kết 1 quá trình từ PsActiveProcessHead, bạn cũng có thể tận dụng danh sách thay thế quá trình này như 1 phương tiện để xác định các quá trình ẩn.
  • Xác định trình điều khiển nhân: Mỗi cấu trú phiên có chứa 1 danh sách các trình điều khiển ánh xạ vào phiên này. bạn cũng có thể sử dụng điều này để phân biệt các phiên RDP từ giao diện điều khiển hoặc các phiên chuyển đổi người dùng và cũng cho các việc linh tinh như xác định nếu hệ thống là 1 máy ảo Vmware.
Cấu trúc dữ liệu
Cấu trúc chính của 1 phiên là _MM_SESSION_SPACE. Đây là 1 cấu trúc lớn, do đó 1 phần nhỏ của nó sẽ được hiện thị dưới đây (Từ window 7 64bit)

>>> dt("_MM_SESSION_SPACE")
'_MM_SESSION_SPACE' (8064 bytes)
0x0   : ReferenceCount                 ['long']
0x4   : u                              ['__unnamed_2145']
0x8   : SessionId                      ['unsigned long']
0xc   : ProcessReferenceToSession      ['long']
0x10  : ProcessList                    ['_LIST_ENTRY']
0x20  : LastProcessSwappedOutTime      ['_LARGE_INTEGER']
0x28  : SessionPageDirectoryIndex      ['unsigned long long']
0x30  : NonPagablePages                ['unsigned long long']
0x38  : CommittedPages                 ['unsigned long long']
0x40  : PagedPoolStart                 ['pointer64', ['void']]
0x48  : PagedPoolEnd                   ['pointer64', ['void']]
0x50  : SessionObject                  ['pointer64', ['void']]
0x58  : SessionObjectHandle            ['pointer64', ['void']]
0x64  : SessionPoolAllocationFailures  ['array', 4, ['unsigned long']]
0x78  : ImageList                      ['_LIST_ENTRY']
0x88  : LocaleId                       ['unsigned long']
0x8c  : AttachCount                    ['unsigned long']
0x90  : AttachGate                     ['_KGATE']
0xa8  : WsListEntry                    ['_LIST_ENTRY']
0xc0  : Lookaside                      ['array', 21, ['_GENERAL_LOOKASIDE']]
0xb40 : Session                        ['_MMSESSION']
0xb98 : PagedPoolInfo                  ['_MM_PAGED_POOL_INFO']
0xc00 : Vm                             ['_MMSUPPORT']
0xc88 : Wsle                           ['pointer64', ['_MMWSLE']]
0xc90 : DriverUnload                   ['pointer64', ['void']]
0xcc0 : PagedPool                      ['_POOL_DESCRIPTOR']
0x1e00: PageDirectory                  ['_MMPTE']
0x1e08: SessionVaLock                  ['_KGUARDED_MUTEX']
0x1e40: DynamicVaBitMap                ['_RTL_BITMAP']
0x1e50: DynamicVaHint                  ['unsigned long']
0x1e58: SpecialPool                    ['_MI_SPECIAL_POOL']
0x1ea0: SessionPteLock                 ['_KGUARDED_MUTEX']
0x1ed8: PoolBigEntriesInUse            ['long']
0x1edc: PagedPoolPdeCount              ['unsigned long']
0x1ee0: SpecialPoolPdeCount            ['unsigned long']
0x1ee4: DynamicSessionPdeCount         ['unsigned long']
0x1ee8: SystemPteInfo                  ['_MI_SYSTEM_PTE_TYPE']
0x1f30: PoolTrackTableExpansion        ['pointer64', ['void']]
0x1f38: PoolTrackTableExpansionSize    ['unsigned long long']
0x1f40: PoolTrackBigPages              ['pointer64', ['void']]
0x1f48: PoolTrackBigPagesSize          ['unsigned long long']
[snip]

aaaaa