【正文】
that his fondness for me tended to increase as an inver se function of my proximity. He gave me a fancy riding crop for a goingaway presentto hasten the process of affection, I suppose. Still, it was a very nice cropsilverchased, beautifully tooledand I made good use of it. I had decided to go looking for an assemblage of all my simple pleasures in one small nook of Shadow. It was a long rideI will not bore you with the detailsand it was pretty far from Amber, as such things go. This time, I was not looking for a place where I would be especially important. That can get either boring or difficult fairly quickly, depending on how responsible you want to be. I wanted to be an irresponsible nonentity and just enjoy myself. Texorami was a wide open port city, with sultry days and long nights, lots of good music, gambling around the cloc k, duels every morning and inbetween mayhem for those who couldn39。 ( 3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈(zèng)送和交換學(xué)位論文。文中除了特別加以標(biāo)注的地方外,不包含他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書(shū)而使用過(guò)的材料。 [9]周明天 ,汪文勇 .TCP/IP 網(wǎng)絡(luò)原理與技術(shù) [M].北京 :清華大學(xué)出 版社, 1998。 [5]武裝 .網(wǎng)絡(luò)端口掃描及對(duì)策研究 [J].電子技術(shù)應(yīng)用 ,2021,(6):1923。 參考文獻(xiàn) [1]程鵝 ,董小國(guó) .端口掃描技術(shù)及檢測(cè) [J].華南金融電腦 .2021,(7):109112。只有發(fā)現(xiàn)并填補(bǔ)了網(wǎng)絡(luò)系統(tǒng)存在的各種安全漏洞,才能更有效地保護(hù)計(jì)算機(jī)網(wǎng)絡(luò),真正將網(wǎng)絡(luò)帶來(lái)的優(yōu)勢(shì)發(fā)揮出來(lái)。 ③ 端口掃描子系統(tǒng)也可以利用綜合掃描系統(tǒng)的報(bào)警信息,對(duì)有些主機(jī)進(jìn)行特定的掃描,查看正在受攻擊的端口或漏洞是否真的存在。 在綜合掃描系統(tǒng)中通過(guò)使用端口掃描系統(tǒng)來(lái)交換信息協(xié)同工作,可以使入侵檢測(cè)得到更好的效果。僅僅借助單一的漏洞掃描等工具進(jìn)行的安全評(píng)估是不完整的、有局限性的,它不能夠很好地表現(xiàn)信息系統(tǒng)的安全特征,因此需要一種既能夠有效收集系統(tǒng)中各主機(jī)的安全信息,又能夠及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)中發(fā)送信息的源地址相關(guān)信息的工具為安全評(píng)估提供支持。在經(jīng)過(guò)編程測(cè)試后發(fā)現(xiàn)是延時(shí)設(shè)置過(guò)小的原因。 AfxMessageBox(成功寫(xiě)入 !)。 定義兩個(gè)結(jié)構(gòu)體 A 和 B, A 表示結(jié)果樹(shù)中的 IP 地址, B 表示每個(gè) IP 下面掃描出來(lái)的端口信息。 FILE* fp = fopen(Fname,w)。 GetModuleFileName(NULL,pR,MAX_PATH)。通過(guò)全局變量判斷程序是否處于掃描狀態(tài),如果沒(méi)有則創(chuàng)建一個(gè)命為“ ”的文本文件來(lái)保存掃描結(jié)果。m_OK) EnableWindow(TRUE),以使界面上的按鈕有效,可以重新開(kāi) 始掃描。 第 17 頁(yè) 共 22 頁(yè) 終止掃描 在掃描完成后選擇 “停止掃描 ”按鈕,掃描器會(huì)終止掃描并將相關(guān)的資源釋放掉以結(jié)束對(duì)系統(tǒng)資源的占用。 } ******省略部分代碼 ****** { AfxMessageBox(IP 地址 不能為空 !)。讀取起始 ip 到 m_StartIP,結(jié)束 ip 到m_EndIP 中,并判斷起始 IP 是否不大于結(jié)束 IP,如果成功就返回 true,否則返回 false。 } while ( A != NULL ) { 這里通過(guò)一個(gè) if 循環(huán)來(lái)獲得自定義端口列表中選取的端口。 } } 該系統(tǒng)不僅可以提供端口范圍選擇,還可以讓用戶自定義端口列表,所以當(dāng)用戶選 擇自定義端口列表來(lái)掃描的時(shí)候,程序就通過(guò)一個(gè)循環(huán)從自定義端口列表樹(shù)中獲得用戶勾選的端口等待掃描。 if ( m_IsChecked ) { if ( m_PortFrom m_PortTo ) { AfxMessageBox(起始端口 不應(yīng)該大于 結(jié)束端口 !)。 第 15 頁(yè) 共 22 頁(yè) hTreeInsertItem(CSPORT,A,TVI_LAST)。 lpTCPheaderth_flag==0x12) { CString StrIP = sourceip。)。amp。 if(ret!=SOCKET_ERROR) { //分析數(shù)據(jù)包 IPHEADER *lpIPheader。 ******省略部分代碼 ****** char RecvBuf[256]={0}。 DWORD lpcbBytesReturned = 0。在收到返回信息的時(shí)候接受并分析數(shù)據(jù)包是否為應(yīng)用程序返回的信息。 首先判斷 IP 頭部 , 要求目的地址是本機(jī)、協(xié)議號(hào)是 TCP 協(xié)議。 int ret=bind(rawsock, (struct sockaddr *)amp。 另外在構(gòu)造 TCP 頭的時(shí)候 , 第 13 頁(yè) 共 22 頁(yè) 還 添加 了 TCP 選項(xiàng) SACK, 保證 TCP 連接請(qǐng)求被接受。 return false。 int settimeout = 500。為此可以表示接收所有的數(shù)據(jù)。當(dāng)發(fā)送原始 套接字包時(shí) (如 TCP SYN 數(shù)據(jù)包 ),操作系統(tǒng)核心并不知道,也沒(méi)有此數(shù)據(jù)發(fā)送或者連接建立的記錄。 (iErr!=0)) //連接成功后返回連接信息 第 12 頁(yè) 共 22 頁(yè) { ******省略部分代碼 ****** //連接成功則將收到的數(shù)據(jù)插入結(jié)果樹(shù)中 InsertToTree (hTree,strIP,CSPort)。timeout)等待接受數(shù)據(jù)和同步函數(shù)。addr_in,sizeof(addr_in))。 //設(shè)置 sock 為非阻塞 iErr=ioctlsocket(sock,FIONBIO,(unsignedlong*)amp。//設(shè)置緩沖變量 IPANDPORT* lpInfor=(IPANDPORT*)lp。 所以在掃描本地主機(jī)的時(shí)候不用發(fā)送 SYN 包。 closesocket(sock)。 TCP/IP 協(xié)議棧中不會(huì)記錄該連接請(qǐng)求 , 所以對(duì)于服務(wù)器端返回的 SYN|ACK 包 , TCP/IP 協(xié)議棧會(huì)自動(dòng)發(fā)送 RST, 不用在程序中實(shí)現(xiàn) SYN 探測(cè)的第二步。 iErr=ioctlsocket(sock,FIONBIO,(unsigned long*)amp。 } //大多數(shù)掃描技術(shù)要發(fā)送原始套接 字包來(lái)進(jìn)行探測(cè)。 =lpInforNETIP。 第 10 頁(yè) 共 22 頁(yè) IPANDPORT* lpInfor=(IPANDPORT*)lp。 (3)在對(duì)目標(biāo) IP 進(jìn)行端口掃描的時(shí)候,一方面要考慮到在 掃描的時(shí)候在目標(biāo)主機(jī)上留下較少的掃描記錄,另一方面要能在較小的 權(quán)限下對(duì)目標(biāo)進(jìn)行掃描。 } 圖 3 SYN 掃描連接示意圖 如圖 3 所示, 在半打開(kāi)掃描技術(shù)中,掃描主機(jī)自動(dòng)向目標(biāo)計(jì)算機(jī)的指定端口發(fā)送 SYN 數(shù)據(jù)段,表示發(fā)送建立連接請(qǐng)求。 BOOL IsLocalIP(ULONG scanIP, ULONG* LocalIPlist, int num) { for (int i=0。 //對(duì)目標(biāo) IP,端口發(fā)送 SYN 包 . } all++。 if ( IsLocalIP(, lpLIP,numadapter) ) scanlocal(amp。 if ( k % 300 == 0 ) { //等待監(jiān)聽(tīng)線程 WaitForMultipleObjects(numadapter1,hListen,FALSE,DelayTime)。 iNum 。 for (StartIP = EndIP 。 int all=0。 // 設(shè)置顯示掃描進(jìn)度條的大小 // Fill LocalIP FillLocalIPList(*lpLocalIP)。 if ( hListen[] == NULL ) { AfxMessageBox(創(chuàng)建偵聽(tīng)線程失敗 !)。 HANDLE* hListen=*handle。 (1)DWORD WINAPI ScanStart(LPVOID lpvoid) { 是 否 填充本地 IP 列表 讀取 IP 和端口 保存掃描結(jié)果 開(kāi)始 Scanstart 主函數(shù) 本地 IP? 獲得掃描結(jié)果 結(jié)束 獲得掃描結(jié)果 保存掃描結(jié)果 結(jié)束 第 7 頁(yè) 共 22 頁(yè) CDWordArrayamp。 程序?qū)崿F(xiàn)流程 程序?qū)崿F(xiàn)的流程如圖 2 所示: 圖 2 程序?qū)崿F(xiàn)流程圖 主函數(shù)首先創(chuàng)建一個(gè)偵聽(tīng)線程以準(zhǔn)備獲得返回信息。 3 端口掃描器的 實(shí)現(xiàn) 功能模塊簡(jiǎn)介 所完成的 端口掃描器的界面如圖 1 所示,相關(guān)功能 介紹如下: 圖 1 端口掃描器功能界面 目標(biāo) IP 范圍選擇模塊:選擇起始 IP 和結(jié)束 IP 以確定目標(biāo) IP 的范圍。 (2)端口選擇 需求 當(dāng)我們?cè)谑褂脪呙柢浖?duì)目標(biāo)主機(jī)進(jìn)行掃描的時(shí)候,有的時(shí)候是有目的性地掃描目標(biāo)主機(jī)的某一個(gè)端口,然而在大部分時(shí)候卻需要掃描批量端口或者是一些重要的指定端口。在采用 SYN 刺探方式進(jìn)行掃描的基礎(chǔ)上成為一個(gè)基于 半打開(kāi) 的實(shí)用、簡(jiǎn)單、方便的端口掃描工具 。用收到包的時(shí)間減去發(fā)送時(shí)間 戳即得到分組時(shí)延。可以考慮用一種變通的方式嵌入時(shí)間戳。雖然 TCP 協(xié)議規(guī)定了時(shí)間戳選項(xiàng) (類型 8), 用該選項(xiàng)中嵌入時(shí)間戳 , 服務(wù)器返回包的選項(xiàng)部分含有發(fā)送的時(shí)間戳。 第二步 : 因?yàn)椴恍枰⒄5?TCP 連接 , 所以對(duì)應(yīng)答 ACK 包的服務(wù)器發(fā)送 RST 包 , 保證服務(wù)器端關(guān)閉半連接。 第 4 頁(yè) 共 22 頁(yè) SYN 包探測(cè) 第一步 : 客戶端向服務(wù)器的工作端口發(fā)送 SYN, 服務(wù)器返回 SYN|ACK 包或 RST 包。通過(guò)網(wǎng)絡(luò) 上別人的一些測(cè)試和實(shí)驗(yàn)發(fā)現(xiàn) , 對(duì) Inter 中發(fā)布的 60 個(gè) HTTP 代理服務(wù)器進(jìn)行探測(cè)。所有的 URG, PSH 和 FIN, 或者沒(méi)有任何標(biāo)記的 TCP 數(shù)據(jù)包都會(huì)引起 “FIN行為 ”。 (2)當(dāng)一個(gè)包含 ACK 的數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽(tīng)端口時(shí) , 數(shù)據(jù)包被丟棄 , 同時(shí)發(fā)送一個(gè) RST 數(shù)據(jù)包。 TCP 端口掃描技術(shù)通過(guò)發(fā)送一些特殊的 TCP 包 判斷目標(biāo)主機(jī)和端口狀態(tài)。 SYN技術(shù)詳解 TCP 包探測(cè)原理 高效的探測(cè)方法需要解決 3 個(gè)問(wèn)題 : (1)用幾個(gè)包判斷主機(jī)和端口狀態(tài) ; (2)占用雙方的資源少 ; (3)準(zhǔn)確的分組時(shí)延計(jì)算方法。因此現(xiàn)在的狀態(tài)稱為 “半連接 ”。 它的工作原理大致如下:握手的第一步,一臺(tái)計(jì)算機(jī)首先請(qǐng)求和另外一臺(tái)計(jì)算機(jī)建立連接,它通過(guò)發(fā)送一個(gè) SYN 請(qǐng)求來(lái)完成,也即前面提到的 SYN 標(biāo)記位置位。這里僅提到其中的四個(gè)標(biāo)記位: SYN(同步 ), ACK(確認(rèn) ), RST(復(fù)位 )和 FIN(完成 )。 掃描器通過(guò)選用遠(yuǎn)程 TCP/IP 不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過(guò)這種方法,可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息。端口掃描也可以通過(guò)捕獲本地主機(jī)或服務(wù)器的流入流出 IP 數(shù)據(jù)包來(lái)監(jiān)視本地主機(jī)的運(yùn)行情況,它僅能對(duì)接收到的數(shù)據(jù)進(jìn)行分析,幫助我們發(fā)現(xiàn) 目標(biāo)主機(jī)的某些內(nèi)在的弱點(diǎn),而不會(huì)提供進(jìn)入一個(gè)系統(tǒng)的詳細(xì)步驟。這些公司的掃描器以硬件為主,其特點(diǎn)是執(zhí)行速度快,不像軟件一樣受到安裝主機(jī)系統(tǒng)性能的限制。 國(guó)外安全掃描技術(shù)的歷史可以追溯到 20 世紀(jì) 90 年代,當(dāng)時(shí) 因特網(wǎng)剛剛起步,但是在過(guò)去的十多年內(nèi),掃描技術(shù)飛速發(fā)展,迄今為止,其掃描技術(shù)己經(jīng)非常完善,但是在全面性、隱蔽性和智能性上還有待提高。對(duì)目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息。而端口是主機(jī)與外界通訊交流的數(shù)據(jù)出入口,即是 “門窗 ”。 Network secu