高級掃描技術及原理介紹

2021-01-07 開源中國

高級掃描技術及原理介紹 

  Scan,是一切入侵的基礎,對主機的探測工具非常多,比如大名鼎鼎的nmap。我這裡沒有什麼新鮮技術,都是一些老東西老話題,即使參考的Phrack文檔也甚至是96年的老文檔,我只是拾人牙慧而已。 

 最基本的探測就是Ping,不過現在連基本的個人防火牆都對Ping做了限制,這個也太基本了。如果透過防火牆,如何獲得最理想的目標圖,也是很多人整天思考的問題。 

一、高級ICMP掃描技術 

 Ping就是利用ICMP協議走的,我們在這裡主要是利用ICMP協議最基本的用途:報錯,根據網絡協議,如果按照協議出現了錯誤,那麼接收端將產生一個ICMP的錯誤報文。這些錯誤報文並不是主動發送的,而是由於錯誤,根據協議自動產生。 

 當IP數據報出現checksum和版本的錯誤的時候,目標主機將拋棄這個數據報,如果是checksum出現錯誤,那麼路由器就直接丟棄這個數據報了。有些主機比如AIX、HP-UX等,是不會發送ICMP的Unreachable數據報的。 

 我們利用下面這些特性: 
1、向目標主機發送一個只有IP頭的IP數據包,目標將返回Destination Unreachable的ICMP錯誤報文。 
2、向目標主機發送一個壞IP數據報,比如,不正確的IP頭長度,目標主機將返回Parameter Problem的ICMP錯誤報文。 
3、當數據包分片但是,卻沒有給接收端足夠的分片,接收端分片組裝超時會發送分片組裝超時的ICMP數據報。 

 向目標主機發送一個IP數據報,但是協議項是錯誤的,比如協議項不可用,那麼目標將返回Destination Unreachable的ICMP報文,但是如果是在目標主機前有一個防火牆或者一個其他的過濾裝置,可能過濾掉提出的要求,從而接收不到任何回應。可以使用一個非常大的協議數字來作為IP頭部的協議內容,而且這個協議數字至少在今天還沒有被使用,應該主機一定會返回Unreachable,如果沒有Unreachable的ICMP數據報返回錯誤提示,那麼就說明被防火牆或者其他設備過濾了,我們也可以用這個辦法來探測是否有防火牆或者其他過濾設備存在。 

 利用IP的協議項來探測主機正在使用哪些協議,我們可以把IP頭的協議項改變,因為是8位的,有256種可能。通過目標返回的ICMP錯誤報文,來作判斷哪些協議在使用。如果返回Destination Unreachable,那麼主機是沒有使用這個協議的,相反,如果什麼都沒有返回的話,主機可能使用這個協議,但是也可能是防火牆等過濾掉了。NMAP的IP Protocol scan也就是利用這個原理。 

 利用IP分片造成組裝超時ICMP錯誤消息,同樣可以來達到我們的探測目的。當主機接收到丟失分片的數據報,並且在一定時間內沒有接收到丟失的數據報,就會丟棄整個包,並且發送ICMP分片組裝超時錯誤給原發送端。我們可以利用這個特性製造分片的數據包,然後等待ICMP組裝超時錯誤消息。可以對UDP分片,也可以對TCP甚至ICMP數據包進行分片,只要不讓目標主機獲得完整的數據包就行了,當然,對於UDP這種非連接的不可靠協議來說,如果我們沒有接收到超時錯誤的ICMP返回報,也有可能時由於線路或者其他問題在傳輸過程中丟失了。 

 我們能夠利用上面這些特性來得到防火牆的ACL(access list),甚至用這些特性來獲得整個網絡拓撲結構。如果我們不能從目標得到Unreachable報文或者分片組裝超時錯誤報文,可以作下面的判斷: 
1、防火牆過濾了我們發送的協議類型 
2、防火牆過濾了我們指定的埠 
3、防火牆阻塞ICMP的Destination Unreachable或者Protocol Unreachable錯誤消息。 
4、防火牆對我們指定的主機進行了ICMP錯誤報文的阻塞。 

二、高級TCP掃描技術 

 最基本的利用TCP掃描就是使用connect(),這個很容易實現,如果目標主機能夠connect,就說明一個相應的埠打開。不過,這也是最原始和最先被防護工具拒絕的一種。 
 在高級的TCP掃描技術中主要利用TCP連接的三次握手特性來進行,也就是所謂的半開掃描。這些辦法可以繞過一些防火牆,而得到防火牆後面的主機信息。當然,是在不被欺騙的情況下的。下面這些方法還有一個好處就是比較難於被記錄,有的辦法即使在用netstat命令上也根本顯示不出來。 

SYN 
 向遠端主機某埠發送一個只有SYN標誌位的TCP數據報,如果主機反饋一個SYN || ACK數據包,那麼,這個主機正在監聽該埠,如果反饋的是RST數據包,說明,主機沒有監聽該埠。在X-Scanner 上就有SYN的選擇項。 

ACK 
 發送一個只有ACK標誌的TCP數據報給主機,如果主機反饋一個TCP RST數據報來,那麼這個主機是存在的。 

FIN 
 對某埠發送一個TCP FIN數據報給遠端主機。如果主機沒有任何反饋,那麼這個主機是存在的,而且正在監聽這個埠;主機反饋一個TCP RST回來,那麼說明該主機是存在的,但是沒有監聽這個埠。 

NULL 
 即發送一個沒有任何標誌位的TCP包,根據RFC793,如果目標主機的相應埠是關閉的話,應該發送回一個RST數據包。 

FIN+URG+PUSH 
 向目標主機發送一個Fin、URG和PUSH分組,根據RFC793,如果目標主機的相應埠是關閉的,那麼應該返回一個RST標誌。 

三、高級UDP掃描技術 
 在UDP實現的掃描中,多是了利用和ICMP進行的組合進行,這在ICMP中以及提及了。還有一些特殊的就是UDP回饋,比如SQL SERVER,對其1434埠發送『x02』或者『x03』就能夠探測得到其連接埠。 


 下面這段程序就是一個TCP探測的例子,當然,並沒有做得完美,因為沒有接收部分,而在WIN2000下實際就是一個選擇性的SNIFFER,呵呵,大家可以使用其他的SNIFFER來實現同樣的目的。也可以改變下面的程序只發送IP包,利用ICMP特性來實現探測。 

#include ; 
#include ; 
#include ; 

#define SOURCE_PORT 7234 
#define MAX_RECEIVEBYTE 255 

typedef struct ip_hdr //定義IP首部 

unsigned char h_verlen; //4位首部長度,4位IP版本號 
unsigned char tos; //8位服務類型TOS 
unsigned short total_len; //16位總長度(字節) 
unsigned short ident; //16位標識 
unsigned short frag_and_flags; //3位標誌位 
unsigned char ttl; //8位生存時間 TTL 
unsigned char proto; //8位協議 (TCP, UDP 或其他) 
unsigned short checksum; //16位IP首部校驗和 
unsigned int sourceIP; //32位源IP位址 
unsigned int destIP; //32位目的IP位址 
}IPHEADER; 

typedef struct tsd_hdr //定義TCP偽首部 

unsigned long saddr; //源地址 
unsigned long daddr; //目的地址 
char mbz; 
char ptcl; //協議類型 
unsigned short tcpl; //TCP長度 
}PSDHEADER; 

typedef struct tcp_hdr //定義TCP首部 

USHORT th_sport; //16位源埠 
USHORT th_dport; //16位目的埠 
unsigned int th_seq; //32位序列號 
unsigned int th_ack; //32位確認號 
unsigned char th_lenres; //4位首部長度/6位保留字 
unsigned char th_flag; //6位標誌位 
USHORT th_win; //16位窗口大小 
USHORT th_sum; //16位校驗和 
USHORT th_urp; //16位緊急數據偏移量 
}TCPHEADER; 

//CheckSum:計算校驗和的子函數 
USHORT checksum(USHORT *buffer, int size) 

unsigned long cksum=0; 
while(size >;1) 

cksum+=*buffer++; 
size -=sizeof(USHORT); 

if(size ) 

cksum += *(UCHAR*)buffer; 


cksum = (cksum >;>; 16) + (cksum & 0xffff); 
cksum += (cksum >;>;16); 
return (USHORT)(~cksum); 


void usage() 

printf("******************************************\n"); 
printf("TCPPing\n"); 
printf("\t Written by Refdom\n"); 
printf("\t Email: refdom@263.net\n"); 
printf("Useage: TCPPing.exe Target_ip Target_port \n"); 
printf("*******************************************\n"); 


int main(int argc, char* argv[]) 

WSADATA WSAData; 
SOCKET sock; 
SOCKADDR_IN addr_in; 
IPHEADER ipHeader; 
TCPHEADER tcpHeader; 
PSDHEADER psdHeader; 

char szSendBuf[60]={0}; 
BOOL flag; 
int rect,nTimeOver; 

usage(); 

if (argc!= 3) 
{ return false; } 

if (WSAStartup(MAKEWORD(2,2), &WSAData)!=0) 

printf("WSAStartup Error!\n"); 
return false; 


if ((sock=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED))==INVALID_SOCKET) 

printf("Socket Setup Error!\n"); 
return false; 

flag=true; 
if (setsockopt(sock,IPPROTO_IP, IP_HDRINCL,(char *)&flag,sizeof(flag))==SOCKET_ERROR) 

printf("setsockopt IP_HDRINCL error!\n"); 
return false; 


nTimeOver=1000; 
if (setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char*)&nTimeOver, sizeof(nTimeOver))==SOCKET_ERROR) 

printf("setsockopt SO_SNDTIMEO error!\n"); 
return false; 

addr_in.sin_family=AF_INET; 
addr_in.sin_port=htons(atoi(argv[2])); 
addr_in.sin_addr.S_un.S_addr=inet_addr(argv[1]); 

// 
// 
//填充IP首部 
ipHeader.h_verlen=(4<<4 | sizeof(ipHeader)/sizeof(unsigned long)); 
// ipHeader.tos=0; 
ipHeader.total_len=htons(sizeof(ipHeader)+sizeof(tcpHeader)); 
ipHeader.ident=1; 
ipHeader.frag_and_flags=0; 
ipHeader.ttl=128; 
ipHeader.proto=IPPROTO_TCP; 
ipHeader.checksum=0; 
ipHeader.sourceIP=inet_addr("本地地址"); 
ipHeader.destIP=inet_addr(argv[1]); 

//填充TCP首部 
tcpHeader.th_dport=htons(atoi(argv[2])); 
tcpHeader.th_sport=htons(SOURCE_PORT); //源埠號 
tcpHeader.th_seq=htonl(0x12345678); 
tcpHeader.th_ack=0; 
tcpHeader.th_lenres=(sizeof(tcpHeader)/4<<4|0); 
tcpHeader.th_flag=2; //修改這裡來實現不同的標誌位探測,2是SYN,1是FIN,16是ACK探測 等等 
tcpHeader.th_win=htons(512); 
tcpHeader.th_urp=0; 
tcpHeader.th_sum=0; 

psdHeader.saddr=ipHeader.sourceIP; 
psdHeader.daddr=ipHeader.destIP; 
psdHeader.mbz=0; 
psdHeader.ptcl=IPPROTO_TCP; 
psdHeader.tcpl=htons(sizeof(tcpHeader)); 

//計算校驗和 
memcpy(szSendBuf, &psdHeader, sizeof(psdHeader)); 
memcpy(szSendBuf+sizeof(psdHeader), &tcpHeader, sizeof(tcpHeader)); 
tcpHeader.th_sum=checksum((USHORT *)szSendBuf,sizeof(psdHeader)+sizeof(tcpHeader)); 

memcpy(szSendBuf, &ipHeader, sizeof(ipHeader)); 
memcpy(szSendBuf+sizeof(ipHeader), &tcpHeader, sizeof(tcpHeader)); 
memset(szSendBuf+sizeof(ipHeader)+sizeof(tcpHeader), 0, 4); 
ipHeader.checksum=checksum((USHORT *)szSendBuf, sizeof(ipHeader)+sizeof(tcpHeader)); 

memcpy(szSendBuf, &ipHeader, sizeof(ipHeader)); 

rect=sendto(sock, szSendBuf, sizeof(ipHeader)+sizeof(tcpHeader), 
0, (struct sockaddr*)&addr_in, sizeof(addr_in)); 
if (rect==SOCKET_ERROR) 

printf("send error!:%d\n",WSAGetLastError()); 
return false; 

else 
printf("send ok!\n"); 

closesocket(sock); 
WSACleanup(); 

return 0; 


--- 

reference: 

1、《Breaking into computer networks from the Internet》 Roelof Temmingh & SensePost (Pty) Ltd 
2、Phrack #49,《Port Scanning without the SYN flag》 
3、Phrack #51,《The Art of Port Scanning》 
4、Sys-Security Group《ICMP Usage in Scanning》 
 






原文連結:http://bbs.chinaunix.net/viewthread.php?tid=16058

轉載請註明作者名及原文出處


相關焦點

  • 電視掃描技術原理簡介
    電視技術利用光電轉換原理實現光學圖像到電視信號變換,這一轉換過程通常是在攝像機中完成的。在電視技術中,將這種傳送圖像的既定規律稱為掃描。如圖07-02-5所示,攝像管光電導層中形成的電圖像在電子束的掃描下順序地接通每一個點,並連續地把它們的亮度變化轉換為電信號;掃描得到的電信號經過單一通道傳輸後,再用電子束掃描具有電光轉換特性的螢光屏,從電信號轉換成光圖像。
  • 掃描探針顯微鏡原理及結構介紹_冉盛網
    掃描探針顯微鏡掃描探針顯微鏡原理及結構:掃描探針顯微鏡的基本工作原理是利用探針與樣品表面原子和分子之間的相互作用,即當探針與樣品表面接近納米尺度時掃描探針顯微鏡由探頭、掃描儀、位移傳感器、控制器、檢測系統和圖像系統組成。控制器通過掃描器沿垂直方向移動樣品,使探頭與樣品之間的距離(或物理量的相互作用)穩定在一個固定的值上;同時,控制器在X-Y水平面移動樣品,使探頭按照掃描路徑掃描樣品表面。
  • 埠掃描技術,Namp工具的使用介紹
    埠掃描又稱網絡探針,是黑客經常使用的一種技術,它一般是網絡攻擊的前期階段,用於探測目標開啟了哪些服務,以便發起針對該服務的攻擊。找出網絡上的主機,測試哪些埠在監聽,這些工作通常是由掃描來實現的.掃描網絡是黑客進行入侵的第一步.通過使用掃描器(如Nmap)掃描網絡,尋找存在漏洞的目標主機.一旦發現了有漏洞的目標,接下來就是對監聽埠的掃描.Nmap通過使用TCP協議棧指紋準確地判斷出被掃主機的作業系統類型.
  • 掃描電子顯微鏡原理
    導讀:本文主要介紹掃描電子顯微鏡原理,想知道掃描電子顯微鏡是如何工作的童鞋們快來看一下吧。  掃描電鏡的工作原理主要是利用二次電子成像,它工作原理是這樣的:從電子槍燈絲髮出的直徑約20~35μm的電子束,受到陽極1~40kV高壓的加速射向鏡筒,並受到第一、二聚光鏡和物鏡的匯聚作用,縮小成直徑約幾十埃的狹窄電子束射到樣品上
  • 邊界掃描測試技術的原理解析
    邊界掃描介紹 邊界掃描(Boundary Scan)測試發展於上個世紀90年代,隨著大規模集成電路的出現,印製電路板製造工藝向小,微,薄發展,傳統的ICT 測試已經沒有辦法滿足這類產品的測試要求。由於晶片的引腳多,元器件體積小,板的密度特別大,根本沒有辦法進行下探針測試。
  • 掃描電鏡原理
    導讀:本文主要講述的是掃描電鏡的原理,感興趣的童鞋們快來學習一下吧~~~很漲姿勢的哦~~~本文引用地址:http://www.eepw.com.cn/article/278782.htm
  • 振鏡掃描平場聚焦加工原理
    打開APP 振鏡掃描平場聚焦加工原理 李倩 發表於 2018-09-21 11:22:25 振鏡掃描平場聚焦加工原理 振鏡掃描平場聚焦加工方式,平場掃描聚焦鏡對光束進行聚焦後,雷射焦點在平場掃描聚焦鏡焦平面上的移動距離與平場掃描聚焦鏡焦距成正比,與平場掃描聚焦鏡入口光束和平場掃描聚焦鏡光軸夾角或者夾角的變化值成正比,一旦平場掃描聚焦鏡選定,平場掃描聚焦鏡焦距就確定,那麼雷射焦點在平場掃描聚焦鏡焦平面上的移動距離理論上只與平場掃描聚焦鏡入口光束和平場掃描聚焦鏡光軸夾角或者夾角變化值成正比
  • AR技術攝影原理介紹
    VR將會與AI(人工智慧)技術及其他相關領域技術結合,使其特徵由3I成為4IE,即VR系統還具有智能(Intelligent)和自我演進演化(Evolution)特徵[6]。頭盔式虛擬實境(VR)設備如圖2所示,用手機掃描二維碼即可觀看VR視頻介紹,二維碼如圖3所示。
  • 紅外測溫原理是什麼 紅外測溫儀的介紹
    當我們購買了房子之後,都會做一個最詳細的消毒,一般的話買的是二手房才會消毒,新房子的話根本不需要這個流程,那麼如果要做消毒的話,可以採取各種各樣的機器來進行,這樣的話比人工消毒更加仔細一些,所以,建議大家看一下紅外測溫的原理是什麼,紅外測溫儀的介紹有哪些。
  • 小間距LED顯示屏的技術原理分析
    隨著LED顯示屏製造技術的提高,傳統LED顯示屏的解析度得到了大幅提升。   今天,我們傾向於把LED視頻顯示是理所當然的。那麼我們清楚LED屏是怎麼樣工作的嗎?高清小間距led屏顯示原理是怎麼樣的呢?事實上,他們成為我們的城鎮和我們共同的特徵主要關注他們的外在質量參數。
  • 掃描電子顯微鏡原理和應用
    掃描電子顯微鏡原理和應用2.4.1 掃描電鏡的特點與光學顯微鏡及透射電鏡相比,掃描電鏡具有以下特點: (一) 能夠直接觀察樣品表面的結構,樣品的尺寸可大至120mm×80mm×50mm。 (二) 樣品製備過程簡單,不用切成薄片。
  • 金屬科研「神器」:掃描電子顯微鏡原理及應用
    掃描電子顯微鏡是我們金屬科研工作中應用最廣泛的「神器」,可以說幾乎伴隨著每一位研究生度過自己最重要的科研經歷,時常「愛也掃描」「恨也掃描」,今天就系統地為新老同學們和需要應用掃描的科技工作者介紹一下掃描電鏡的原理及應用
  • ETC 基本原理和技術優勢介紹
    ETC系統組成及工作原理ETC系統是通過安裝於車輛上的車載裝置和安裝在收費站車道上的天線之間進行無線通信和信息交換。主要由車輛自動識別系統、中心管理系統和其他輔助設施等組成。1、車輛自動識別技術ETC系統中車輛自動識別技術是其中最重要的技術,它直接影響到系統的性能和應用推廣,也是區別不同的ETC系統的主要標誌。
  • 【PPT】循環流化床鍋爐本體結構及工作原理介紹
    電氣設備的結構及工作原理【科普|3D動畫】循環流化床鍋爐結構及工作原理完整版全過程  秒懂循環流化床【掃描圖中二維碼了解詳情】,全書共分12章,系統總結了滲濾液的預處理技術、厭氧生物處理技術、好氧生物處理技術、脫氮處理技術、深度處理技術、汙泥與臭氣處理技術,以及設備安裝、調試、運行方法等。
  • 掃描電子顯微鏡的特點及工作原理
    2.4.1 掃描電鏡的特點與光學顯微鏡及透射電鏡相比,掃描電鏡具有以下特點2.4.2 掃描電鏡的結構和工作原理(一) 結構 1.鏡筒鏡筒包括電子槍、聚光鏡、物鏡及掃描系統。其作用是產生很細的電子束(直徑約幾個nm),並且使該電子束在樣品表面掃描,同時激發出各種信號。
  • 新一代聽筒技術:屏幕發聲技術原理介紹
    打開APP 新一代聽筒技術:屏幕發聲技術原理介紹 電子發燒友網 發表於 2019-01-01 11:14:00 隨著手機全面屏的普及,原有的16:9的屏幕逐步被18:9替代,各廠商爭相擴大手機的屏佔比,部分手機已然將屏佔比達到了90%以上,但是傳統器件的擺放日漸困難,尤其是傳統受話器的位置,逐步被隱藏甚至取消;目前傳統的聽筒還是以動圈式Receiver為主,屏幕聽筒位置開孔的問題一直未能解決,所以我們今天來聊一聊一款新型的替代傳統聽筒的技術-屏幕發聲技術。
  • 點陣式在線雷射打碼技術原理及實現
    本文引用地址:http://www.eepw.com.cn/article/169290.htm  一、 點陣式在線雷射打碼技術原理介紹  點陣式在線雷射打碼技術採用振鏡式掃描策略。圖1 振鏡式掃描策略  點陣式在線雷射打碼技術採用點陣字符進行在線編碼。點陣字符由一系列的點組成。
  • 磁共振(MRI)內耳掃描技術
    可不使用脂肪抑制技術,為了更好的抑制背景信號,可使用MT(磁化傳遞)技術。使用窄帶寬(15.63KHZ),最短TE(out of phase),最短TR,高解析度掃描。需觀察動靜脈與神經間的關係,不添加上下飽和帶。頻率編碼為前後。
  • 掃描電鏡資料免費大放送!
    掃描電鏡與能譜儀分析技術.張大同2. 掃描電子顯微鏡分析技術3. 掃描電子顯微鏡原理及應用教材4. 掃描電鏡技術及其應用5. 掃描電鏡和能譜儀的原理與實用分析技術. 施明哲編6. 材料結構電子顯微分析7. 電子能譜學8. 電子顯微分析實用方法9. 電子顯微分析10.
  • 幾種主流的高級氧化技術原理及優缺點!
    由於高級氧化工藝具有氧化性強、操作條件易於控制的優點,因此引起世界各國的重視,並相繼開展了該方向的研究與開發工作。高級氧化技術主要分為Fenton氧化法、光催化氧化法、 臭氧氧化法、超聲氧化法、溼式氧化法和超臨界水氧化法。