Ví dụ luôn cho nó uy tín (nguồn https://shells.systems)
Mở đầu
Đối với các bạn redteam, việc đi sâu nhất vào trong hệ thống của khách hàng là điều luôn cần đạt được, để đảm bảo an toàn cho những khách hàng của mình. Hay với 1 bug bounty hunter cần nâng severity của lỗ hổng mình tìm ra lên cao nhất để nhận được số tiền hậu hĩnh. Có thể các bạn redteam/pentester cũng gặp phải trường hợp payload của mình bị AV xoá/chặn như thế nào, công cụ này giúp các bạn có thể ẩn payload của mình và truyền nó với từng phần, giúp AV không phát hiện ra. Đây cũng là một điều mà các AV trên thế giới cần để tâm đến và giúp người dùng của mình an toàn.
DNSStager là gì?
DNSStager là một tool open source được sử dụng để giúp Pentesters/RedTeamers có thể ẩn payload của họ trong DNS và truyền nó dưới dạng từng phần, dựa trên nhiều DNS records và sau đó inject nó vào memory và
DNSStager sẽ tạo một DNS Server pha-ke cho bạn để resolve DNS fake addresses của bạn dựa trên các AAAA và TXT records, các address này đang hiển thị một phần payload encoded/encrypted của bạn.
Cách hoạt động của DNSStager
(nguồn https://shells.systems)
Như hình các bạn có thể thấy, khi execute client.exe, nó sẽ tự động gọi tới DNSStager Server với những DNS khác nhau (ở đây là s1.test.mydnsserver.live
, s2.test.mydnsserver.live
, …). Sau đó, nó sẽ cố gắng resolve subdomain này và nhận về response có thể là dạng IPv6 hoặc TXT records. Tuy nhiên, đây chính là từng đoạn payload của bạn gửi dưới dạng 16 bytes một, và khi kết hợp các bytes này sẽ được 1 payload hoàn chỉnh.
Tại sao lại sử dụng DNSStager
Trường hợp sử dụng tốt nhất cho DNSStager là khi bạn cần nạp payload của mình thông qua DNS trong khi đó là kênh duy nhất có sẵn để bạn truyền payload.
DNSStager hiện hỗ trợ hai DNS records để truyền toàn bộ payload đó là:
- IPv6 qua AAAA records.
- TXT records.
Cài đặt DNSStager
Việc cài đặt DNSStager cũng khá đơn giản
|
|
(yêu cầu sử dụng python3) Do DNSStager thực hiện generate client connect sử dụng C hoặc Golang nên yêu cầu cài đặt 1 trong 2, tuỳ thuộc bạn sử dụng cái nào để generate
|
|
DNSStager yêu cầu chạy với quyền root
Lưu ý: Cần disable systemd-resolved để DNSStager hoạt động đúng mong muốn
|
|
Có khá nhiều options trong DNSStager, mình sẽ nói rõ bên dưới nhé.
|
|
Cài đặt DNS
Để sử dụng DNSStager, bạn cần đặt domain của mình trỏ tới DNSStager làm Server DNS
để resolve và handle bất kỳ request DNS nào đến domain của bạn.
(nguồn https://shells.systems/)
Ví dụ, mình đang có một domain là mydnsserver.live
, DNSStager đang chạy trên VPS server có IP 139.59.182.177 thì config như hình trên nhé.
Sử dụng DNSStager
Cách dùng cũng khá đơn giản tuy nhiên cũng lắm bước, các bạn cài đặt thành công như bên trên là có thể sử dụng DNSStager thành công rồi.
Hiện tại DNSStager sử dụng 6 payload, hỗ trợ việc gửi truyền payload dưới dạng IPv6 hoặc TXT records, sử dụng ngôn ngữ C hay Golang để generate file tuỳ theo kiến trúc x86 hoặc x64
|
|
Gen file execute và truyền payload chỉ với một câu lệnh
|
|
Với ~/payload.bin
có thể là file reverse shell của bạn nhé
Tool sẽ tự động generate ra file execute rồi thực hiện lắng nghe luôn. Sau đó các bạn có thể lấy file /tmp/a2.exe
tải lên rồi chạy trên phía máy muốn tạo kết nối là có thể reverse shell qua mặt Windows Security rồi.
Tuy nhiên, mình demo tạo file thì với lần đầu chạy lên thì Windows Security không báo gì cả, cho phép thực thi, sau đó thì … không còn sau đó nữa, cứ tạo file là Windows Security thông báo là trojan và xoá luôn :(. Hy vọng là có thể tìm ra nguyên nhân nào đó, và đội dev có thể fix lỗi này :(. Về phần demo các bạn kéo lên đầu bài là có thể thấy nhé ;)
Dưới đây là ví dụ họ đã check xem data payload gửi sang đúng hay chưa, thực hiện lấy payload rồi XOR với 0x20
xem 16 bytes đầu tiên đã khớp với kết quả IPv6 records trả về.
Hi vọng có thể đem được demo xịn cho mọi người tham khảo, hoặc có vẻ thời điểm mình viết bài này Microsoft đã cập nhật cho Windows Security của họ rồi. Nhưng kỹ thuật này vẫn đáng học hỏi mà phải không. Mình sẽ cố gắng nghiên cứu thêm về phần này rồi chia sẻ tới mọi người. See you!