Truy tìm IP thật của server đằng sau CloudFlare hay các dịch vụ CDN
Guide này nhằm giúp các System Admin nhận ra được rằng mình "misconfiguration" ở đâu khiến hệ thống bị lộ real IP khiến các kẻ tấn công DDoS dễ dàng tấn công hệ thống mà bỏ qua các lớp CDN bảo vệ
CloudFlare IP
Đầu tiên ta cần phải biết danh sách IP của cloudflare (CloudFlare IP ) là những IP nào để biết rằng IP tìm được bằng các phương pháp dưới đây là IP thật của server ( real IP ). Danh sách CloudFlare IP được hãng này public tại đây: https://www.cloudflare.com/ips
Các CDN khác thì tìm trên internet :)
Cách hoạt động của CloudFlare
Cơ chế hoạt động của CloudFlare và các CDN rất đơn giản. Họ sẽ trở thành các Reverse Proxy ( máy chủ trung gian ) giữa người dùng và server
User <----------> CloudFlare Servers ( CDN Servers ) <----------> Real Servers---------->---------->
Để làm chuyện này thì người dùng phải bị buộc kết nối đến các CDN Server thay vì Real Server, CDN server sẽ thay người dùng request và cache các dữ liệu từ Real Server. Và để "ép" người dùng phải bị buộc kết nối đến các CDN Server thay vì Real Server thì các CDN dùng một giải pháp đơn giản đó là khai báo lại các Name Server record của domain website
Ví dụ:
Ở tình trạng bình thường thì Name Server thường là của Hosting Provider hoặc Domain Registra
Khi sử dụng CloudFlare thì Name Server sẽ là của CloudFlare
> set type=NS
Script này tải tại: http://pentesterscript.wordpress.com/2013/11/06/cloudflare-resolver-bash-script/
CloudFlare IP
Đầu tiên ta cần phải biết danh sách IP của cloudflare (CloudFlare IP ) là những IP nào để biết rằng IP tìm được bằng các phương pháp dưới đây là IP thật của server ( real IP ). Danh sách CloudFlare IP được hãng này public tại đây: https://www.cloudflare.com/ips
Các CDN khác thì tìm trên internet :)
Cách hoạt động của CloudFlare
Cơ chế hoạt động của CloudFlare và các CDN rất đơn giản. Họ sẽ trở thành các Reverse Proxy ( máy chủ trung gian ) giữa người dùng và server
User <----------> CloudFlare Servers ( CDN Servers ) <----------> Real Servers---------->---------->
Để làm chuyện này thì người dùng phải bị buộc kết nối đến các CDN Server thay vì Real Server, CDN server sẽ thay người dùng request và cache các dữ liệu từ Real Server. Và để "ép" người dùng phải bị buộc kết nối đến các CDN Server thay vì Real Server thì các CDN dùng một giải pháp đơn giản đó là khai báo lại các Name Server record của domain website
Ví dụ:
Ở tình trạng bình thường thì Name Server thường là của Hosting Provider hoặc Domain Registra
> set type=NS
> xnohat.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
xnohat.com nameserver = ns57.domaincontrol.com.
xnohat.com nameserver = ns58.domaincontrol.com.Khi sử dụng CloudFlare thì Name Server sẽ là của CloudFlare
> set type=NS
> anonnews.org
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
anonnews.org nameserver = lisa.ns.cloudflare.com.
anonnews.org nameserver = ed.ns.cloudflare.com.
Từ đó các DNS request của user sẽ được phân giải bởi CloudFlare Name Server thay vì Registra Name Server.
Đây chính là chỗ có thể xảy ra điểm hở khiến có thể tìm thấy server thực đằng sau
Concept chính của việc tìm ra Real IP đằng sau CDN
Là tìm vào các chỗ cấu hình là các Sys Admin vô tình hoặc buộc phải set IP thật thay vì để CloudFlare tự định đoạt
Phương pháp #1: Ping
Cách đơn giản nhất là ping nhưng mà ping vào đâu ?
Một domain ngoài host chính là www thì còn có những subdomain host như ftp.domain.com, mail.domain.com , cpanel.domain.com ...
Có thể các subdomain này vì nhiều lý do bị các SysAdmin cấu hình trỏ A record về IP thật của server. Do đó khi ping các domain này sẽ lòi ra được các IP thật, lấy các IP này so với danh sách CloudFlare IP hoặc CDN IP ở trên, nếu thấy không trùng thì nhiều khả năng là IP thật của server
Nếu server chặn ICMP request ( ping luôn báo timeout ) thì dùng Nmap mà scan
Lệnh:
Nếu server chặn ICMP request ( ping luôn báo timeout ) thì dùng Nmap mà scan
Lệnh:
nmap -sV -sS -F xnohat.com
Phương pháp #2: NetCraft IP history
NetCraft là hãng phần mềm network lâu đời, họ có phát triển một hệ thống bot chuyên đi check Domain-IP trên internet. Nhiều khả năng Netcraft Bot đã lấy được IP thật của server trước khi SysAdmin áp dụng CloudFlare
Cách dùng:
http://toolbar.netcraft.com/site_report?url=xnohat.com
Phương pháp #3: DNS Bruteforce (Subdomain Bruteforce)
Phương pháp này cũng tương tự như phương pháp Ping, tức là tìm ra cái subdomain chứa IP thật. Ý tưởng của phương pháp này là ping thử hết các subdomain có thể có xem cái nào đang tồn tại thật và check IP của nó xem có phải cloudflare IP không ? nếu không thì nhiều khả năng nó là real IP
Cách làm:
Cũng dùng Nmap để scan, và lần này thì dùng DNS Bruteforce script của Nmap
nmap --script dns-brute -sn xnohat.com
Phương pháp #4: mx record
Các máy chủ mail là một điểm yếu thú vị, nếu như máy chủ web và máy chủ mail đặt cùng một server thì khả năng tìm ra IP thật là rất dễ. Vì các MX record buộc phải phân giải ra IP thật của máy chủ mail, do đó các Sys Admin phải set MX record bằng IP thật. Phương pháp này chỉ thất bại khi mail server là máy chủ riêng biệt với webserver hoặc Sys Admin dùng ... Google Mail :))
Cách dùng là sử dụng NSLookup
> set type=MX
> lazada.vn
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
lazada.vn mail exchanger = 30 aspmx2.googlemail.com.
lazada.vn mail exchanger = 30 aspmx4.googlemail.com.
lazada.vn mail exchanger = 20 alt1.aspmx.l.google.com.
lazada.vn mail exchanger = 10 aspmx.l.google.com.
lazada.vn mail exchanger = 30 aspmx5.googlemail.com.
lazada.vn mail exchanger = 30 aspmx3.googlemail.com.
lazada.vn mail exchanger = 20 alt2.aspmx.l.google.com.
Sau đó ping hoặc nmap scan IP các mx record trên nhằm tìm ra IP thật của server :)
Phương pháp #5: Script tự động làm hết đống trên :))
Rất hay là có một hacker đã viết một script tự động làm hết mấy phương pháp ở trên :))
Rất hay là có một hacker đã viết một script tự động làm hết mấy phương pháp ở trên :))
Script này tải tại: http://pentesterscript.wordpress.com/2013/11/06/cloudflare-resolver-bash-script/
Leave a Comment