duy13 / vDDoS-Protection

Welcome to vDDoS, a HTTP(S) DDoS Protection Reverse Proxy. Thank you for using!
https://vddos.voduy.com
483 stars 140 forks source link

Hi vo duy #1

Closed ghost closed 6 years ago

ghost commented 7 years ago

Có thể kết hợp với cloudflare đặt trước Proxy sẽ đảm bảo hơn trước các cuộc tấn công lớn. tạo 1 script nhỏ, monitor ngx_req_limit post request lên cloudflare api chặn IP đầu ngoài có thể là phương án khả thi.

ghost commented 7 years ago

bổ sung thêm là: module testcookie vẫn có thể bị hacker bypass khá dễ dàng. cookie dựa trên thuật toán md5 có sẵn trong nginx core nên cái này hacker cũng có thể hoàn toàn md5(ip) và set-cookie vào request đó, nghiễn nhiêm bypass qua testcookie. Đây chỉ là ý tưởng, tôi chưa thử 🗡

duy13 commented 7 years ago

Theo mình hiểu thì khi 1 client truy cập xin cookie, Firewall sẽ gửi lại cho client 1 bài toán với 3 giá trị đầu vào a b c trông giống như sau: (a b c có sự tương quan lẫn nhau về mật mã)

a = toNumbers("5d026cff5942d1ab28e3757e4b2e2f87"),
b = toNumbers("845dd1e672b840c246aa8cfe9b5d3632"),
c = toNumbers("e48176221e1325e09b9a959370446f05");

Biết rằng: c = AES(MD5($testcookie_session + $testcookie_secret)) Mà:

testcookie_session=(IP + user-agent của client mà Firewall lấy dc)
testcookie_secret=(chũi 32 bit bí mật random sau mỗi lần restart Firewall)

Bài toán thì như dạng: đáp án = (slowAES.giải-mã(c, a, b))

Giải mã đúng thì Firewall nó mới cho vào và gán cho truy vấn 1 cookie, mà muốn giải mã đúng thì phải có bộ xử lý javascript như 1 trình duyệt.

Chuyện đoán trước đáp án bài toán thì gần như không thể vì như định nghĩa giá trị c nó bị thay đổi khi có sự sai khác về IP + user-agent của bot và một cái chũi cố định bí mật trong khoản thời gian đó.

Còn vụ 1 bot khác nếu lấy cookie có sẳn của 1 trình duyệt hợp pháp đã check ok để add vào dùng thì nó sẽ bị sai lệch về IP khi request gói tin lên Firewall.

Vậy nên muốn bypass dc thì bot phải có 1 bộ javascript xác thực trước cho Ip của mình dc cấp cookie, nhưng sau đó nó dùng cookie đó để Flood tại Ip đó thì sẽ bị limit-req vịnh lại hỏi thăm sức khỏe.

Theo mình đoán nó hoạt động như vậy, nói chung mấy cái này đều có thể bypass hết nhưng chống ddos giống như là giảm thiểu thôi vậy, làm khó mấy đứa Script kiddie thôi chứ cao thủ thì mệt lắm. Bạn thử viết 1 tool bypass xem sao.

Vụ "limit post request lên cloudflare api chặn IP đầu ngoài" thì chắc phải để ai cần thì tự tạo dùng thui tại vì 1 số khách ở VN muốn tận dụng mạng trong nước cho nhanh nên ko xài CF. Với lại cái này là lọc ở Layer 7, nếu làm cái script kia nữa thì nó can thiệp chặn từ layer 3-4 mất rùi, ngoài CF còn có iptables, csf, fail2ban... cũng có thể chặn từ layer 3-4. Ai trong trường hợp nào thì đành tự viết script theo dõi rồi deny bằng công cụ của họ vậy. Chặn như thế thì sẽ rất ác, IP client sẽ ko được truy xuất tới server qua IP đã bị deny của mình lun, dù bằng trình duyệt hợp pháp hay không. Bạn có script nào có thể đọc Ip bị limit-req để truyền lên cloudflare ko, chia sẽ cho mình với mọi người tham khảo với. Cám ơn bạn đã đón góp ý kiến!

ghost commented 7 years ago

testcookie_session=(IP + user-agent của client mà Firewall lấy dc) testcookie_secret=(chũi 32 bit bí mật random sau mỗi lần restart Firewall) Cái này ko sử dụng chế độ captcha thì vẫn qua đc bt.

script dùng fail2ban để monitor limit-req tại đây: https://easyengine.io/tutorials/nginx/fail2ban/ áp dụng tương tự thay vì banned IP trên server thì có thể truyền IP đó lên cloudflare để chặn, hoặc bắt nhập captcha trên đó. ý tưởng là như thế, tùy vào từng hệ thống mà vận dụng.

duy13 commented 7 years ago

ý bạn là có thể bypass chế độ check javascript mà không có bộ xử lý javascript ntn nhỉ?

ghost commented 7 years ago

ngoại trừ chế độ captcha thì bot có thể dùng trình duyệt để lướt qua target 1 lượt, trình duyệt thật đương nhiên firewall sẽ set cho cookie, lấy cookie đó gắn vào request + với user-agent của trình duyệt đó là qua. vì testcookie chỉ có 2 chế độ check session là IP hoặc IP + useragent. khá đơn giản.

2016-12-29 15:23 GMT+07:00 duy13 notifications@github.com:

ý bạn là có thể bypass chếc độ check javascript mà không có bộ xử lý javascript ntn nhỉ?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/duy13/vDDoS-Protection/issues/1#issuecomment-269596783, or mute the thread https://github.com/notifications/unsubscribe-auth/AGY2QIx6XZ7MKvTzjBoHRsiywT_coeqBks5rM23wgaJpZM4LW1WB .

duy13 commented 7 years ago

Nếu vậy thì rúc cục phải có javascript rồi, cái này mục tiêu nó là phải lấy trình duyệt thật để login vào, buộc phải lấy trình duyệt để dos là coi như xong mục đích của cấu hình. Giả sử zombie bị điều khiển, có 1 con gián điệp có thể mở trình duyệt của máy zombie và cho trình duyệt truy vấn vào firewall trước rồi lấy cookie sau đó mới cho vào tool tấn công thì sẽ rất bất tiện, người dùng sẽ thấy được vấn đề đó. Cơ mà limit req và limit con nó sẽ đếm lượt truy cập dựa trên IP, dos dữ quá là nó 503 luôn. Mình tưởng tượng ra là hacker có 1000 bot không thể xử lý javascript, anh ta có thể dựng 1 server có javascript xử lý được bài toán của 1000 bot gửi về và đưa trả kết quả đáp án cho bot gửi lên firewall, có lẽ cái đó có thể, tuy nhiên server đó sẽ coi bộ cũng xem như là đang bị 1000 con bot tấn công.

ghost commented 7 years ago

ko cần phải lấy trính duyệt từ máy tính client, có thể tạo trình duyệt riêng, nhất nhẹ, dùng phantomjs chẳng hạn, công đoạn lấy cookie cũng rất nhất, ko bất tiện và ng dùng cũng ko phát hiện ra. 1000 con bot nó ddos vào thì CPU cũng ko xử lý kịp rồi (limit req cũng ko tác dụng), mình đoán là như vậy, Trừ khi cân bằng tải ra vài con.

Vào 09:31 30 tháng 12, 2016, duy13 notifications@github.com đã viết:

Nếu vậy thì rúc cục phải có javascript rồi, cái này mục tiêu nó là phải lấy trình duyệt thật để login vào, buộc phải lấy trình duyệt để dos là coi như xong mục đích của cấu hình. Giả sử zombie bị điều khiển, có 1 con gián điệp có thể mở trình duyệt của máy zombie và cho trình duyệt truy vấn vào firewall trước rồi lấy cookie sau đó mới cho vào tool tấn công thì sẽ rất bất tiện, người dùng sẽ thấy được vấn đề đó. Cơ mà limit req và limit con nó sẽ đếm lượt truy cập dựa trên IP, dos dữ quá là nó 503 luôn. Mình tưởng tượng ra là hacker có 1000 bot không thể xử lý javascript, anh ta có thể dựng 1 server có javascript xử lý được bài toán của 1000 bot gửi về và đưa trả kết quả đáp án cho bot gửi lên firewall, có lẽ cái đó có thể, tuy nhiên server đó sẽ coi bộ cũng xem như là đang bị 1000 con bot tấn công.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/duy13/vDDoS-Protection/issues/1#issuecomment-269724133, or mute the thread https://github.com/notifications/unsubscribe-auth/AGY2QACT8CufAArxc2tOA4BpPpaNPTEVks5rNG0bgaJpZM4LW1WB .

duy13 commented 7 years ago

Nói chung đã sáng tạo ra con bot ddos flood được mà có cả hỗ trợ xử lý javascript thì bypass được thôi, cái mode Firewall đó nó check javascript mà, cứ thỏa mãn nó là dc vào thôi. Nếu có ai bị dos tới mức độ đó thì đành qua recaptcha vậy ^^

ghost commented 7 years ago

Yes. Done :)

Vào 10:03 30 tháng 12, 2016, duy13 notifications@github.com đã viết:

Nói chung đã sáng tạo ra con bot ddos flood được mà có cả hỗ trợ xử lý javascript thì bypass được thôi, cái mode Firewall đó nó check javascript mà, cứ thỏa mãn nó là dc vào thôi. Nếu có ai bị dos tới mức độ đó thì đành qua recaptcha vậy ^^

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/duy13/vDDoS-Protection/issues/1#issuecomment-269726301, or mute the thread https://github.com/notifications/unsubscribe-auth/AGY2QCSVUJwuKqSoPTx1ThQSby3AqMagks5rNHSCgaJpZM4LW1WB .

ghost commented 7 years ago

Mà bạn ở HCM hay HN nhỉ? Hôm nào cafe giao lưu đc ko nhỉ :D

Vào 10:23 30 tháng 12, 2016, Secvia Ltd kinhnc99@gmail.com đã viết:

Yes. Done :)

Vào 10:03 30 tháng 12, 2016, duy13 notifications@github.com đã viết:

Nói chung đã sáng tạo ra con bot ddos flood được mà có cả hỗ trợ xử lý javascript thì bypass được thôi, cái mode Firewall đó nó check javascript mà, cứ thỏa mãn nó là dc vào thôi. Nếu có ai bị dos tới mức độ đó thì đành qua recaptcha vậy ^^

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/duy13/vDDoS-Protection/issues/1#issuecomment-269726301, or mute the thread https://github.com/notifications/unsubscribe-auth/AGY2QCSVUJwuKqSoPTx1ThQSby3AqMagks5rNHSCgaJpZM4LW1WB .