信息安全 學習筆記(1)——常用攻擊、網絡命令、ARP安全、IP安全


跟着郭燕老師的資料來學習《信息安全》課程:

 

 

 

幾種典型攻擊(可以自己演示的):

netwox 80——攻擊ARP局域網

  使用ARP攻擊,阻止局域網內系統正常聯網

netwox 86——ICMP重定向

  通過ICMP重定向,成為受害者、網關之間的中間人

netwox 76——TCP里SYN Flooding(Dos攻擊)

  TCP里面的SYN Flooding,Dos攻擊。

backdoor & rootkit

  在他人的系統上裝上后門backdoor(用於長期控制root權限)

  通常和rootkit配套使用,rootkit負責消除痕跡

stackoverflow

  匯編代碼...

 

 

常用網絡相關Linux命令:

ping 發送ICMP請求

  • ping www.baidu.com:測試能否正常聯網
  • ping 192.168.3.33(本機gateway網關)
  • ping localhost:測試系統協議棧

  (windows同)

ifconfig 配置網絡接口

  • 查看IP號、網卡等信息  ifconfig
  • 啟動 網卡(硬件,用於朝外發包)  sudo ifconfig ens33 up

  windows用 ipconfig

netwox 發包工具

  • 80 ARP攻擊局域網
  • 86 ICMP重定向
  • 76 TCP里SYN Flooding

traceroute 追蹤路由信息

 (一般最多30跳)

  類似於 Windows系統-cmd中的 tracert 命令

nslookup  查看域名對應的IP地址,類似於DNS服務

  例子:nslookup www.baidu.com

  (windows同)

whois  查看IP屬於哪個組織。

  例子:whois 219.219.220.1

netstat 顯示網絡狀態:網絡連接、路由表

  例子:netstat -ant  查看tcp路由表、連接狀態等

  (windows同)

tcpdump 網絡抓包工具。   

  例子:sudo tcpdump -i ens33 -c 20      其中i后面跟接口,c 20表示抓前20個包(packets)

  應用軟件wireshark 可用於抓包

netcat  用於TCP/UDP中讀寫數據:文件傳輸、即時通訊  (網絡工具中的瑞士軍刀)

  • 查看某IP的端口開放狀態:例子:查看百度網站的80端口(HTTP)    nc -v www.baidu.com 80     顯示:連接成功
  • 查看端口段:例子:nc -v localhost 20-30   同時查看20-30這11個端口
  • 局域網內 群聊:例子:001主機: nc -l 192.168.3.34 80       002主機:nc 192.168.3.34 80    然后就可以聊天了。。

nmap 用於端口掃描(TCP安全相關)

ssh 遠程連接

 

 

網橋、網卡、網關?

網橋

  是把兩個不同物理層,不同MAC子層,不同速率的局域網連接在一起。比如說10MB/S與100MB/S的局域網。因為它有儲存轉化功能。

網卡:

  是電腦的一個接收、轉換、暫儲信息的一個硬件。它是把接受到信息遞交給上層,如(CUP)的一個接口。

網關(Gateway):

  又稱網間連接器、協議轉換器。網關在傳輸層上以實現網絡互連,是最復雜的網絡互連設備,僅用於兩個高層協議不同的網絡互連。網關既可以用於廣域網互連,也可以用於局域網互連。 網關是一種充當轉換重任的計算機系統或設備。在使  用不同的通信協議、數據格式或語言,甚至體系結構完全不同的兩種系統之間,網關是一個翻譯器

  與網橋只是簡單地傳達信息不同,網關對收到的信息要重新打包,以適應目的系統的需求。同時,網關也可以提供過濾和安全功能。大多數網關運行在OSI 7層協議的頂層--應用層。

==》所以生動的表示以下,網關是郵電局,所有的信息必須通過這里的打包、封箱、尋址,才能發出去與收進來;網卡是設備,也就是郵電局郵筒,你家的信箱;而網橋是郵遞員,但他只負責一個鎮里面(局域網)不負責廣域網。

 

 

Mitnick米特尼克聖誕節攻擊

3個對象說明:

Target是黑客想要的文件,

X-terminal 與Target有連接(互相信任),

Server(X-terminal的服務器)與X-terminal 有TCP信任連接

 

攻擊鏈條: Target的訪問 <---> X-terminal <---> Server

攻擊思路:訪問 Target文件(最終目標)

--->劫持X-terminal與Target的連接

--->獲得X-terminal的root權限,並加載內核STREAMS模塊

---> 遠程修改X-terminal的.rhosts文件(賬戶信任關系)

---> 以X-terminal信任的Server,建立TCP連接,在TCP中傳遞命令

  • 對X-terminal:IP源地址欺騙和TCP序列號預測;
  • 對Server:Dos攻擊,使之不能(對意外SYN-ACK)發出RST; 

 

一些重點:

該攻擊程序注意到連續的兩個數據包之間,初始序列號增長了128,000。因此,該攻擊程序破解了序列號生成規則(等差序列)。

下村的機器必須處於閑置狀態,攻擊才能進行成功。不然的話,其他的連接將改變數據包的初始序列號,並使其更難以預測。這就是黑客選擇在聖誕節攻擊的原因。

 

攻擊程序使用IP欺騙發送了看似來自可信賴的服務器的數據包。"看似"的原因,是因為數據包的IP地址是受信任計算機的Internet地址。下村的工作站收到數據包之后,將會發送SYN+ACK數據包發回給受信任的服務器。如果真實的服務器收到了這個不請自來的SYN+ACK數據包,那么服務器會發送RST數據包斷開連接。但是因為之前服務器已經被攻擊者使用DoS攻擊阻止處理任何新包,所以服務器不會對這個數據包做出反應。

因為服務器已經被堵塞,所以此時,攻擊程序可以發送虛假確認。這個虛假確認看起來是真實的,因為它有可信服務器的源地址,以及正確的初始序列號。下村的的工作站因此受騙。它認為它正在與受信任的服務器通信。

接下來攻擊程序告訴了下村的工作站要去相信所有的機器。它發布了簡單的命令指示下村的工作站信任整個互聯網。攻擊者此時可以從任何站點進行訪問。

 

一共使用了兩種不同的攻擊機制。 IP源地址欺騙和TCP序列號預測,使用這兩種攻擊獲得了對主要用作X終端的無盤工作站的訪問權。

獲得root訪問權限之后,可加載內核STREAMS模塊的方法劫持了與另一個系統的現有連接

finger: 查看用戶

showmount: 查看掛載(找信任關系)

 

 

ARP安全

Dos攻擊:

  netwox 80 使用ARP攻擊,阻止局域網內系統正常聯網

ARP:IP-->MAC

  主機廣播IP來尋找MAC,返回是單播;

  然后(所有主機都)緩存IP--MAC的對應關系到ARP表,

  但ARP表不是一成不變的,因為IP--MAC對應關系不斷改變。(比如:虛擬機中的IP地址,多啟動幾回可能就換掉了)

 

局域網(以太網)幀格式:

幀類型 Frame types:    0800 IP     0806 ARP     8035 RARP

了解以太網幀的格式之后,就可以根據幀的結構發包;也可以借助netwox 80發ARP包,導致同在一個局域網的另一個主機不能聯網。

 

 

 

IP 協議安全

(1)IP協議

  • 不保證可靠:重復、丟失;     
  • 無連接:同一個連接中多個報文,被獨立對待

下面是具體的例子:

 

具體分析:

  • 首先是4 bit的協議字段:目前是4,代表IPv4;如果是IPv6,會有一個新的協議頭部。
  • HLEN,表示包中IP頭部的長度,它的單位是32 位,也就是4個字節,因此上面包中的5指示該數據包的IP頭部的長度是4*5=20字節
  • ToS:總共有八位,代表不同類型的服務,其中只能設置一位。常見的包括 min delay, 0x10; max throughput, 0x08;max reliability, 0x40; min cost, 0x20。
  • 接下來是Total Length。以字節為單位的報文的長度。0054 --> 5X16+4=84Bytes
  • IDent,flags和 fragment offset(片偏移x8):一起用於數據包的分片和重組;后面詳細討論。【也是針對IP協議發起攻擊的主要利用的字段】
  • TTL:Time to Live,由發送者啟動,然后每經過一個路由器就減一。如果到達某一個路由器的時候數據包的TTL變為0,那么就被丟棄。可以有效地防止路由循環。
    • Example: ping –t TTL IP allows us to specify the TTL field
    • 思考: 如果修改數據包的TTL(定制數據包),一般需要root權限,那么為什么我們可以通過ping程序來修改TTL? 【實際上,發送ICMP數據包需要root權限】
    • 思考:能不能找到一個TTL應用的例子?
    • TraceRoute是如何實現的?
  • TYPE:IP報文中承載的數據的類型;
    • 1, ICMP;   2 IGMP;   6 TCP;   17 UDP;
  • 校驗和:
    • 16位補碼;僅針對頭部計算;每一條都需要重新計算;
  • 源IP地址和目的IP地址。
  • IP選項,可省略。譬如,可以在IP頭部中記錄路由。
    • 思考:IP選項的長度最長為多少?  20B~60B,最多60字節 (Fx4B=60B)

 

(2)IP分片/重組

分片:

 IP fragmentation:IP分片功能

 為什么需要分片功能?主要是因為硬件環境的MTU限制。一個IP報文最多可以達到65535的最大長度;但是網絡硬件限制了幀的大小(以太網限制為1500字節)。

 如何分片?(對應上面IP頭部的第二行):

  • IDENT: 也即identifier,用於標識IP報文段的唯一標識符;具有同一IDENT的片段屬於同一個IP報文;
  • FRAGMENT OFFSET: 簡稱FO,片偏移x8,指明當前片段在原始完整的IP報文中的位置(偏移)。該偏移的單位是8個字節。
  • FLAGS: 【3個bit 獨立工作】bit 0:保留;    bit 1:不分片     bit 2:更多分片。如果此位是1,那么說明有更多分片,則不是最后一個分片。

重組:

當接收方接收到分片,應該如何進行重組呢?在IP層上必須進行重組,將完整的數據包發到上層。

在IP協議的設計中就需要考慮一些問題:在路由器上上進行重組還是在目的主機進行重組?   重組發生在目的主機,分片發生在路由器上

如果某一個IP分片在路上因為各種原因 丟失,怎么辦?     答:IP數據包全部重傳,TCP不用

如果接收到的分片在Fragment Offset上出現的 重疊,怎么辦?

如果 重組后大小超過65535,允許的最大值,怎么辦?

 

(3)IP攻擊 Dos攻擊     TearDrop攻擊     分片攻擊(RFC系列)

DoS攻擊

思路:攻擊者構造兩個分片,第一個分片的偏移為0;第二個分片的偏移是64800。

因為IP分片可以亂序到達,所以接收方會等待其他分片;同時會為其他分片分配內存空間。

相當於一個數據包會使用64K的內存。而且這段空間會持續保留15~255秒。這樣,很快會耗盡主機的內存空間,造成DoS。

(Windows 2000, XP, 以及Unix的各版本都有這個漏洞)

 

TearDrop攻擊:

 Unsigned:無符號數,出現負數,會產生異常。

 TearDrop攻擊的原理,在於構造兩個分片。其中,第二個分片完全包含在第一個分片中

這種攻擊的成功,依賴於一種當分片發生重疊時,重組的方法。如果接收主機的實現中選擇在發生重疊時,使用第一個分片來覆蓋第二個分片的重疊內容,那么TearDrop攻擊就能夠成功。具體見下面分析:

處理重疊的方法(含有漏洞):

先把first 完全copy,然后計算copy_Second的長度:len=end- offset(after)=end- pre_end    ,如果unsign類型的 len<0,就會產生一個非常大的數。

 

第二片的結束end要晚於第一片結束pre_end,就是正常的: end- pre_end> 0

 

攻擊后果:

如果 end- pre_end <0就會因為unsigned出現一個非常大的copy_Second_len,導致拷貝超多無關數據,導致內存占用過多以及系統崩潰

解決方法:

加上一個 if 判斷語句,來保證 end-pre_end>0

 

 

分片攻擊

防火牆通過數據包的包頭信息,進行攔截(包過濾器防火牆)

RFC:互聯網國際標准機構 Request For Comment

原有協議:有些端口阻止 外部訪問請求,但是接受 對本機請求的回復(本機先發出請求)

漏洞是:只檢查FO=0(第一個)數據片。

只要第一個混過去(包裝成無害的樣子),后面(具有同樣IDentifier標識符的)分片可以跟着全部通過防火牆

 

(1)微小碎片攻擊

攻擊方法

強迫TCP頭部進入第二個分片,從而躲過防火牆過濾器的匹配(SYN)

通過許多IP實現,可以在發出數據包上形成異常小的片段大小。如果片段大小足夠小以迫使某些TCP數據包的TCP頭字段進入第二個片段,則指定這些字段的模式的過濾規則將不匹配。如果過濾實現沒有強制執行最小片段大小,則可能會通過不允許的數據包,因為它在過濾器中沒有得到匹配。

防止措施

  • 直接法:FO=0的包長度<min,丟之
  • 間接法:若存在FO=1的分片,丟之(正常情況不會出現FO=1)(ps:FO=2以上就可以了)

 

  

(2) 重疊碎片攻擊

如果系統采用的重疊方式后一片覆蓋前一片的情況下,可以使用碎片重疊攻擊,

使得第一個分片的SYN字段不為1,第二個分片的FO!=0 並包含TCP的SYN=1字段。

這樣兩個分片也都能通過防火牆,然后在上層重組,第二個分片覆蓋第一個分片后就能重新組成SYN包。

攻擊方法

用第二個分片(有害),覆蓋第一個無害分片(用於頂包接受檢查)。       

例如:第一個分片 SYN = 0,ACK = 1(應答)

第二個分片 SYN = 1,ACK = 0 (請求連接)

並且第二個分片的FO==1(當且僅當片偏移==1、這樣恰好能覆蓋)

這樣在重組之后就是有害的報文。

防止措施

丟掉FO==1,且protocal==TCP 的包(此方法不徹底夠用)


以上就是課程1-5的學習筆記與總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM