ݺߣ

ݺߣShare a Scribd company logo
CHO MỌI NHÀ​
DLL SIDELOADING
SECURITY BOOTCAMP
NỘI DUNG
01
03
02
04 DEMO
05 Q & A
https://cypeace.net/
RED VS BLUE TEAM
BYPASS AV/EDR
DLL SIDELOADING
TOM & JERRY
• Colbalt Strike release version mới
• C2 Open Source: Havoc, Mystic, Sliver, …
• Techniques mới để evade EDR liên tục được phát hiện.​
Security Vendors update signature mới nhất có thể để flag.​
Security Vendors signature tất cả.
RED VS BLUE
https://cypeace.net/
NỘI DUNG
01
03
02
04 DEMO
05 Q & A
https://cypeace.net/
RED VS BLUE TEAM
BYPASS AV/EDR
DLL SIDELOADING
https://cypeace.net/
BYPASS
AV/EDR
KỸ THUẬT BYPASS AV/EDR​
AV là gì ?
• Phần mềm được tạo ra đặc biệt để giúp phát hiện ngăn chặn và
loại bỏ phần mềm độc hại.​
AV x EDR
• Các chương trình diệt vi-rút truyền thống đơn giản hơn và có
phạm vi hạn chế hơn so với các hệ thống EDR hiện đại. Có thể coi
phần mềm diệt vi-rút là một phần của hệ thống EDR.​
• Phần mềm diệt vi-rút thường là một chương trình duy nhất phục
vụ các mục đích cơ bản như quét, phát hiện và loại bỏ vi-rút và
các loại phần mềm độc hại khác nhau.​
EDR đóng vai trò lớn hơn, nhiệm vụ nhiều hơn.
KỸ THUẬT BYPASS AV/EDR​
Syscall
Các Kỹ
Thuật
Bypass
Unhooking API
Các Kỹ Thuật Khác DLL Sideloading
NỘI DUNG
01
03
02
04 DEMO
05 Q & A
https://cypeace.net/
RED VS BLUE TEAM
BYPASS AV/EDR
DLL SIDELOADING
https://cypeace.net/
DLL SIDELOADING
LÀ Ì?
DLL LÀ Ì?​
VÌ SAO CẦN DLL?
Tái sử
dụng
mã nguồn
Giảm kích thước
ứng dụng
Tối ưu dung
lượng ổ cứng
Cập nhật và bảo
trì dễ dàng
DLL NẰM Ở ĐÂU?
Thư mục
System32
Thư mục
SysWOW64
Tệp DLL
Các vị trí
khác
DLL SIDELOADING LÀ Ì?
DLL-Sideloading là phương pháp lạm dụng thứ tự tìm kiếm DLL, thứ tự này xác định thứ tự cụ
thể mà hệ điều hành tìm kiếm và tải các tệp DLL khi một chương trình chạy.
DLL SIDELOADING LÀ Ì?
Tính năng bảo mật
của Windows
Quá trình tải DLL
Kích hoạt mặc định
kể từ Windows 10
SafeDllSearchMode
Tăng cường bảo
mật và độ tin cậy
SafeDllSearchMode: Cơ chế tải DLL an toàn
Bật SafeDllSearchMode sẽ thay đổi trình tự các chương trình tìm kiếm DLL để tải, cụ
thể là đưa thư mục hiện tại xuống dưới trong thứ tự tìm kiếm.
SafeDllSearchMode
SafeDllSearchMode
Enabled
Process Memory
KnownDLLs Registry Entry
Application's Directory
Directories in PATH env variable
PATH
Current Directory
System Directory [C:WindowsSystem32]
Windows Directory [C:Windows]
System Directory [C:WindowsSystem]
1
6
Proces
s
SafeDllSearchMode
SafeDllSearchMode
Disabled
Process Memory
KnownDLLs Registry Entry
Application's Directory
Directories in PATH env variable
Current Directory
PATH
System Directory [C:WindowsSystem32]
Windows Directory [C:Windows]
System Directory [C:WindowsSystem]
1
6
Proces
s
Application's Directory
& Current Directory
Tại Sao DLL Sideloading Hiệu Quả?
Ảnh hưởng đến nhiều
loại binaries hợp lệ.
Bypass AV/EDR bằng cách
chạy trong ngữ cảnh của
một quy trình hợp pháp.
Sử dụng ứng dụng hợp
pháp để thực thi mã độc.
DLL có thể được sử dụng để duy
trì kết nối độc hại, đặc biệt nếu
ứng dụng bị khai thác được thực
thi thường xuyên.
https://cypeace.net/
FILE NÀO
NÊN KHAI THÁC?
DLL Sideloading
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
Ví dụ, bcrypt.dll không nên là DLL sử dụng để sideload,
nếu payload sử dụng các hàm liên quan đến mật mã (ví
dụ: BCryptEncrypt) sẽ được xuất từ ​
​
DLL này như thế sẽ dẫn
tới bị lỗi.
Khi chọn một DLL để sideload, tránh sử dụng đến các DLL
sẽ được dùng trong payload.
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
FILE NÀO NÊN KHAI THÁC?
GIẢI QUYẾT BẰNG PROXYING
PROXYING
PROXYING
#pragma comment (linker, /export:GetFileVersionInfoA
= )
#pragma comment (linker, "/export:GetFileVersionInfoA =
C:WindowsSystem32version.GetFileVersionInfoA, @1")
PROXYING
#pragma comment (linker, )
...
Chỉ thị dành riêng cho trình biên dịch, cho phép truyền
các tham số trực tiếp cho trình liên kết (linker).
/export:GetFileVersionInfoA
=
C:WindowsSystem32version.GetFileVersionInfoA @1
#pragma comment (linker, "/export:GetFileVersionInfoA =
C:WindowsSystem32version.GetFileVersionInfoA, @1")
Yêu cầu linker xuất một hàm với tên GetFileVersionInfoA.
"Xuất" (export) một hàm nghĩa là làm cho hàm này có sẵn
cho các chương trình hoặc module khác sử dụng khi
chúng tải DLL này
PROXYING
Xác định vị trí chính xác của hàm GetFileVersionInfoA mà DLL sẽ trỏ đến.
C:WindowsSystem32version.GetFileVersionInfoA
@1
#pragma comment (linker, "/export:GetFileVersionInfoA =
C:WindowsSystem32version.GetFileVersionInfoA, @1")
Số thứ tự (ordinal number) của hàm trong bảng xuất của DLL.
Số thứ tự được sử dụng để tham chiếu các hàm xuất trong một DLL,
thường để tăng hiệu suất hoặc duy trì tính tương thích.
PROXYING
PROXYING
PROXYING
TRÁNH DEADLOCK
• Khi một DLL được tải vào một tiến trình, hàm DllMain
của nó được thực thi trong một khóa đồng bộ.
• Example.exe tải nhiều DLL, chẳng hạn như A.dll, B.dll và C.dll,
thì ứng dụng đó phải đợi hàm DllMain của A.dll hoàn tất trước
khi có thể tiếp tục tải các DLL tiếp theo.
• Shellcode được thực thi trong hàm DllMain của A.dll phụ thuộc vào việc
B.dll hoặc C.dll được tải, thì bản thân shellcode sẽ không thực thi.
Tải A.dll
Thực thi
DLLMain
A
Tải B.dll
Tải C.dll
Thực thi Shellcode
TRÁNH DEADLOCK
TRÁNH DEADLOCK
TRÁNH DEADLOCK
TRÁNH DEADLOCK
TẠO SHELLCODE LOADER
TẠO SHELLCODE LOADER
TẠO SHELLCODE LOADER
SETUP LISTENER
EXPLOIT DLL SIDELOAD
C2 NHẬN KẾT ỐI
NỘI DUNG
01
03
02
04 DEMO
05 Q & A
https://cypeace.net/
RED VS BLUE TEAM
BYPASS AV/EDR
DLL SIDELOADING
https://cypeace.net/
DEMO
VIDEO DEMO DLL SIDELOADING
KẾT LUẬN
DLL Sideloading là một kỹ thuật
mạnh mẽ để bypass AV/EDR.
Hiểu biết về kỹ thuật này giúp ích
cho cả người tấn công và phòng
thủ.
Phòng chống hiệu quả đòi hỏi các
biện pháp bảo mật nhiều lớp.
https://cypeace.net/
Q&A
contact@cypeace.net
(+84) 853 727 900 cypeace.net

More Related Content

DLL Sideloading cho mọi nhà - Security Bootcamp 2024

  • 1. CHO MỌI NHÀ​ DLL SIDELOADING SECURITY BOOTCAMP
  • 2. NỘI DUNG 01 03 02 04 DEMO 05 Q & A https://cypeace.net/ RED VS BLUE TEAM BYPASS AV/EDR DLL SIDELOADING
  • 3. TOM & JERRY • Colbalt Strike release version mới • C2 Open Source: Havoc, Mystic, Sliver, … • Techniques mới để evade EDR liên tục được phát hiện.​ Security Vendors update signature mới nhất có thể để flag.​ Security Vendors signature tất cả. RED VS BLUE https://cypeace.net/
  • 4. NỘI DUNG 01 03 02 04 DEMO 05 Q & A https://cypeace.net/ RED VS BLUE TEAM BYPASS AV/EDR DLL SIDELOADING
  • 6. KỸ THUẬT BYPASS AV/EDR​ AV là gì ? • Phần mềm được tạo ra đặc biệt để giúp phát hiện ngăn chặn và loại bỏ phần mềm độc hại.​ AV x EDR • Các chương trình diệt vi-rút truyền thống đơn giản hơn và có phạm vi hạn chế hơn so với các hệ thống EDR hiện đại. Có thể coi phần mềm diệt vi-rút là một phần của hệ thống EDR.​ • Phần mềm diệt vi-rút thường là một chương trình duy nhất phục vụ các mục đích cơ bản như quét, phát hiện và loại bỏ vi-rút và các loại phần mềm độc hại khác nhau.​ EDR đóng vai trò lớn hơn, nhiệm vụ nhiều hơn.
  • 7. KỸ THUẬT BYPASS AV/EDR​ Syscall Các Kỹ Thuật Bypass Unhooking API Các Kỹ Thuật Khác DLL Sideloading
  • 8. NỘI DUNG 01 03 02 04 DEMO 05 Q & A https://cypeace.net/ RED VS BLUE TEAM BYPASS AV/EDR DLL SIDELOADING
  • 11. VÌ SAO CẦN DLL? Tái sử dụng mã nguồn Giảm kích thước ứng dụng Tối ưu dung lượng ổ cứng Cập nhật và bảo trì dễ dàng
  • 12. DLL NẰM Ở ĐÂU? Thư mục System32 Thư mục SysWOW64 Tệp DLL Các vị trí khác
  • 13. DLL SIDELOADING LÀ Ì? DLL-Sideloading là phương pháp lạm dụng thứ tự tìm kiếm DLL, thứ tự này xác định thứ tự cụ thể mà hệ điều hành tìm kiếm và tải các tệp DLL khi một chương trình chạy.
  • 15. Tính năng bảo mật của Windows Quá trình tải DLL Kích hoạt mặc định kể từ Windows 10 SafeDllSearchMode Tăng cường bảo mật và độ tin cậy SafeDllSearchMode: Cơ chế tải DLL an toàn Bật SafeDllSearchMode sẽ thay đổi trình tự các chương trình tìm kiếm DLL để tải, cụ thể là đưa thư mục hiện tại xuống dưới trong thứ tự tìm kiếm.
  • 16. SafeDllSearchMode SafeDllSearchMode Enabled Process Memory KnownDLLs Registry Entry Application's Directory Directories in PATH env variable PATH Current Directory System Directory [C:WindowsSystem32] Windows Directory [C:Windows] System Directory [C:WindowsSystem] 1 6 Proces s
  • 17. SafeDllSearchMode SafeDllSearchMode Disabled Process Memory KnownDLLs Registry Entry Application's Directory Directories in PATH env variable Current Directory PATH System Directory [C:WindowsSystem32] Windows Directory [C:Windows] System Directory [C:WindowsSystem] 1 6 Proces s
  • 19. Tại Sao DLL Sideloading Hiệu Quả? Ảnh hưởng đến nhiều loại binaries hợp lệ. Bypass AV/EDR bằng cách chạy trong ngữ cảnh của một quy trình hợp pháp. Sử dụng ứng dụng hợp pháp để thực thi mã độc. DLL có thể được sử dụng để duy trì kết nối độc hại, đặc biệt nếu ứng dụng bị khai thác được thực thi thường xuyên.
  • 21. FILE NÀO NÊN KHAI THÁC?
  • 22. FILE NÀO NÊN KHAI THÁC?
  • 23. FILE NÀO NÊN KHAI THÁC?
  • 24. FILE NÀO NÊN KHAI THÁC?
  • 25. FILE NÀO NÊN KHAI THÁC?
  • 26. FILE NÀO NÊN KHAI THÁC?
  • 27. Ví dụ, bcrypt.dll không nên là DLL sử dụng để sideload, nếu payload sử dụng các hàm liên quan đến mật mã (ví dụ: BCryptEncrypt) sẽ được xuất từ ​ ​ DLL này như thế sẽ dẫn tới bị lỗi. Khi chọn một DLL để sideload, tránh sử dụng đến các DLL sẽ được dùng trong payload. FILE NÀO NÊN KHAI THÁC?
  • 28. FILE NÀO NÊN KHAI THÁC?
  • 29. FILE NÀO NÊN KHAI THÁC?
  • 30. FILE NÀO NÊN KHAI THÁC?
  • 31. FILE NÀO NÊN KHAI THÁC?
  • 32. FILE NÀO NÊN KHAI THÁC?
  • 33. FILE NÀO NÊN KHAI THÁC? GIẢI QUYẾT BẰNG PROXYING
  • 36. #pragma comment (linker, /export:GetFileVersionInfoA = ) #pragma comment (linker, "/export:GetFileVersionInfoA = C:WindowsSystem32version.GetFileVersionInfoA, @1") PROXYING
  • 37. #pragma comment (linker, ) ... Chỉ thị dành riêng cho trình biên dịch, cho phép truyền các tham số trực tiếp cho trình liên kết (linker). /export:GetFileVersionInfoA = C:WindowsSystem32version.GetFileVersionInfoA @1 #pragma comment (linker, "/export:GetFileVersionInfoA = C:WindowsSystem32version.GetFileVersionInfoA, @1") Yêu cầu linker xuất một hàm với tên GetFileVersionInfoA. "Xuất" (export) một hàm nghĩa là làm cho hàm này có sẵn cho các chương trình hoặc module khác sử dụng khi chúng tải DLL này PROXYING
  • 38. Xác định vị trí chính xác của hàm GetFileVersionInfoA mà DLL sẽ trỏ đến. C:WindowsSystem32version.GetFileVersionInfoA @1 #pragma comment (linker, "/export:GetFileVersionInfoA = C:WindowsSystem32version.GetFileVersionInfoA, @1") Số thứ tự (ordinal number) của hàm trong bảng xuất của DLL. Số thứ tự được sử dụng để tham chiếu các hàm xuất trong một DLL, thường để tăng hiệu suất hoặc duy trì tính tương thích. PROXYING
  • 41. TRÁNH DEADLOCK • Khi một DLL được tải vào một tiến trình, hàm DllMain của nó được thực thi trong một khóa đồng bộ. • Example.exe tải nhiều DLL, chẳng hạn như A.dll, B.dll và C.dll, thì ứng dụng đó phải đợi hàm DllMain của A.dll hoàn tất trước khi có thể tiếp tục tải các DLL tiếp theo. • Shellcode được thực thi trong hàm DllMain của A.dll phụ thuộc vào việc B.dll hoặc C.dll được tải, thì bản thân shellcode sẽ không thực thi. Tải A.dll Thực thi DLLMain A Tải B.dll Tải C.dll Thực thi Shellcode
  • 52. NỘI DUNG 01 03 02 04 DEMO 05 Q & A https://cypeace.net/ RED VS BLUE TEAM BYPASS AV/EDR DLL SIDELOADING
  • 54. VIDEO DEMO DLL SIDELOADING
  • 55. KẾT LUẬN DLL Sideloading là một kỹ thuật mạnh mẽ để bypass AV/EDR. Hiểu biết về kỹ thuật này giúp ích cho cả người tấn công và phòng thủ. Phòng chống hiệu quả đòi hỏi các biện pháp bảo mật nhiều lớp. https://cypeace.net/