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/
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
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.
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.
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?
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
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/