工具原理

一,Nmap(tcp/ip)

1,     主機發現原理:發送探測包到目標主機,若是收到回覆,就說明主機是開啓的;不然是關閉的。默認狀況是會發送四種不一樣類型的數據白來探測主機是否在線(icmp/tcp syn/tcp ack/ICMP timestamp(時間戳)html

2,     端口掃描原理 算法

————————————————windows

  • open:端口是開放的。

closed:端口是關閉的。瀏覽器

filtered:端口被防火牆IDS/IPS屏蔽,沒法肯定其狀態。服務器

unfiltered:端口沒有被屏蔽,可是否開放須要進一步肯定。併發

  • open|filtered:端口是開放的或被屏蔽。

closed|filtered :端口是關閉的或被屏蔽。less

————————————————tcp

(1)      Tcp syn : 發送SYN到目標端口,若是收到SYN/ACK回覆,那麼判斷端口是開放的;若是收到RST包,說明該端口是關閉的。若是沒有收到回覆,那麼判斷該端口被屏蔽(Filtered)網站

(2)      TCP connect:向目標端口發送syn完整的鏈接請求,若是回覆rst就是端口沒開放,若是回覆syn/ack就是端口開啓,攻擊機在回覆ack結束鏈接,rst重置鏈接ui

(3)      Tcp ack:向目標主機的端口發送ACK包,若是收到RST包,沒有收到RST包,說明被屏蔽。用於肯定防火牆是否屏蔽某個端口。

(4)      TCP FIN/Xmas/NULL:若是端口是關閉的就發送RST,若是端口是開放或屏蔽的的就不發什麼

@)Fin表示關閉鏈接

@)PSH表示有 DATA數據傳輸

        (@)NULL掃描(全部flags都爲0):反向掃描----原理是將一個沒有設置任何標誌位的數據包發送給TCP端口,在正常的通訊中至少要設置一個標誌位,根據FRC 793的要求,在端口關閉的狀況下,若收到一個沒有設置標誌位的數據字段,那麼主機應該捨棄這個分段,併發送一個RST數據包,不然不會響應發起掃描的客戶端計算機。也就是說,若是TCP端口處於關閉則響應一個RST數據包,若處於開放則無相應。可是應該知道理由NULL掃描要求全部的主機都符合RFC 793規定,可是windows系統主機不聽從RFC 793標準,且只要收到沒有設置任何標誌位的數據包時,無論端口是處於開放仍是關閉都響應一個RST數據包。可是基於Unix(*nix,如Linux)聽從RFC 793標準,因此能夠用NULL掃描。   通過上面的分析,咱們知道NULL能夠辨別某臺主機運行的操做系統是什麼操做系統,是爲windows呢?仍是Unix?

        (@)Xmas-Tree掃描:經過發送帶有下列標誌位的tcp數據包,都置爲1,

URG:指示數據時緊急數據,應當即處理。

PSH:強制將數據壓入緩衝區。

Fin:在tcp會話結束時使用。

正常狀況下,三個標誌位不能被同時設置,但在此種掃描中能夠用來判斷哪些端口關閉仍是開放,與上面的反向掃描狀況相同,依然不能判斷windows平臺上的端口。

端口開放:發送URG/PSH/FIN,  沒有響應

(5)  idle掃描

      也被稱爲Idle掃描或反向掃描,在掃描主機時應用了三方殭屍計算機掃描。由殭屍主機向目標主機發送SYN包。目標主機端口開發時迴應SYN|ACK,關閉時返回RST,殭屍主機對SYN|ACK迴應RST,對RST不作迴應。從殭屍主機上進行掃描時,進行的是一個從本地計算機到殭屍主機的、連續的ping操做。查看殭屍主機返回的Echo響應的ID字段,能肯定目標主機上哪些端口是開放的仍是關閉的。

例:A是nmap,B是目標主機,C是殭屍主機,C知足條件ip id是以1遞增的(C通常是設備,不多是PC)

第一步:A向C發送syn ack ,C會回覆RST:ip id=3337;

第二步:A用C的ip發送給B syn,B若是端口開啓的就會回覆給C syn ack,C會發送RST:ip id=3338

第三步:A再向C發送syn ack ,C會回覆RST:ip id=3339;

從C回覆的RST:IP ID的不斷增大能夠分析出B發送給C的是syn ack,則B的某端口開放

若是端口多是關閉的,在第二步時,B就會回覆給C RST,C再也不回覆給B任何包,在第三步A發送給C時,C回覆的就是RST:IP ID=3338,可推斷出B發送給C的是RST,該端口多是關閉的。filtered也是這種狀況因此只能說端口多是關閉的

Idle掃描實現

http://www.wfuyu.com/Internet/24936.html

https://edu.51cto.com/center/course/lesson/index?id=107008

 

 

二,burpsuite(http/https)

參考連接:http://www.javashuo.com/article/p-nwulorra-he.html

              https://cloud.tencent.com/developer/article/1018645(詳細)圖片用的這裏的

 

1,burpsuite抓包至關於中間人攻擊

內容傳輸的加密:生成隨機的會話密鑰(對稱算法),會話密鑰加密信息,用rsa生成的公鑰私鑰,公鑰解密會話密鑰,私鑰解密會話密鑰(確保接受者)

Burpsuite抓本機的包,至關於burpsuite在本機與服務器之間,burpsuite生成一對公私鑰

圖解:

 

 

2,SSL證書完整性和真實性的驗證

SSL證書只是其中的一種,用於加密HTTP協議,也就是HTTPS。SSL證書負責傳輸公鑰,是一種PKI(Public Key Infrastructure,公鑰基礎結構)證書。這些證書都是由受認證的證書頒發機構——咱們稱之爲CA(Certificate Authority)機構來頒發, CA機構頒發的證書都是受信任的證書,對於SSL證書來講,若是訪問的網站與證書綁定的網站一致就能夠經過瀏覽器的驗證而不會提示錯誤。

在申請SSL證書時須要向CA機構提供網站域名,營業執照,以及申請人的身份信息等。網站的域名很是重要,申請人必須證實本身對域名有全部權,一個證書通常只綁定一個域名,CA機構也提供申請通配符域名(例如,*.baidu.com),通配符域名至關於綁定了主域名下的全部域名,3在burpsuite抓包時有時會讓下載一個證書添加到根證書信任區,就使得本機和瀏覽器都信任這個證書,burpsuite才能夠進行中間人攻擊

3,瀏覽器除了檢查信任證書外,還會檢查該證書是否被篡改:用CA公鑰(頒佈這個證書的地方的公鑰)解密數字簽名(HASH證書後用私鑰加密的到數字簽名)獲得信息摘要,再將server獲得的證書利用相同的hash算法再次獲得一個消息摘要,對比兩次的結果保證證書的完整性

 

 

4,完整流程:

 

相關文章
相關標籤/搜索