『壹』 網路攻擊一般分為哪幾個步驟
探測,攻擊,隱藏。
網路攻擊存在攻擊門檻低、攻擊對象的范圍大、組織性高且專業性強等特點,並且擁有多種攻擊手段,如DDoS攻擊、網路監聽、惡意程序、木馬植入等。因此網路環境存在大量潛在威脅,了解網路攻擊可以採取有效的應對措施進行防護。
網路攻擊措施
網路分段 一個網路段包括一組共享低層設備和線路的機器,如交換機,動態集線器和網橋等設備,可以對數據流進行限制,從而達到防止嗅探的目的。
加密:一方面可以對數據流中的部分重要信息進行加密,另一方面也可只對應用層加密,然而後者將使大部分與網路和操作系統有關的敏感信息失去保護。選擇何種加密方式這就取決於信息的安全級別及網路的安全程度。
以上內容參考網路-網路攻擊、人民網-中國遭受的網路攻擊主要來自美國
『貳』 滲透測試之埠掃描
埠掃描:埠對應網路服務及應用端程序
服務端程序的漏洞通過埠攻入
發現開放的埠
更具體的攻擊面
UDP埠掃描:
如果收到ICMP埠不可達,表示埠關閉
如果沒有收到回包,則證明埠是開放的
和三層掃描IP剛好相反
Scapy埠開發掃描
命令:sr1(IP(dst="192.168.45.129")/UDP(dport=53),timeout=1,verbose=1)
nmap -sU 192.168.45.129
TCP掃描:基於連接的協議
三次握手:基於正常的三次握手發現目標是否在線
隱蔽掃描:發送不完整的數據包,不建立完整的連接,如ACK包,SYN包,不會在應用層訪問,
僵屍掃描:不和目標系統產生交互,極為隱蔽
全連接掃描:建立完整的三次握手
所有的TCP掃描方式都是基於三次握手的變化來判斷目標系統埠狀態
隱蔽掃描:發送SYN數據包,如果收到對方發來的ACK數據包,證明其在線,不與其建立完整的三次握手連接,在應用層日誌內不記錄掃描行為,十分隱蔽,網路層審計會被發現跡象
僵屍掃描:是一種極其隱蔽的掃描方式,實施條件苛刻,對於掃描發起方和被掃描方之間,必須是需要實現地址偽造,必須是僵屍機(指的是閑置系統,並且系統使用遞增的IPID)早期的win xp,win 2000都是遞增的IPID,如今的linux,WINDOWS都是隨機產生的IPID
1,掃描者向僵屍機發送SYN+ACY,僵屍機判斷未進行三次握手,所以返回RST包,在RST數據包內有一個IPID,值記為X,那麼掃描者就會知道被掃描者的IPID
2,掃描者向目標伺服器發送SYN數據包,並且偽裝源地址為僵屍機,如果目標伺服器埠開放,那麼就會向僵屍機發送SYN+ACK數據包,那麼僵屍機也會發送RST數據包,那麼其IPID就是X+1(因為僵屍機足夠空閑,這個就為其收到的第二個數據包)
3,掃描者再向僵屍機發送SYN+ACK,那麼僵屍機再次發送RST數據包,IPID為X+2,如果掃描者收到僵屍機的IPID為X+2,那麼就可以判斷目標伺服器埠開放
使用scapy發送數據包:首先開啟三台虛擬機,
kali虛擬機:192.168.45.128
Linux虛擬機:192.168.45.129
windows虛擬機:192.168.45.132
發送SYN數據包:
通過抓包可以查看kali給linux發送syn數據包
linux虛擬機返回Kali虛擬機SYN+ACK數據包
kali系統並不知道使用者發送了SYN包,而其莫名其妙收到了SYN+ACK數據包,便會發RST包斷開連接
也可以使用下列該命令查看收到的數據包的信息,收到對方相應的SYN+ACK數據包,scapy默認從本機的80埠往目標系統的20號埠發送,當然也可以修改
如果向目標系統發送一個 隨機埠:
通過抓包的獲得:1,kali向linux發送SYN數據包,目標埠23456,
2,Linux系統由自己的23456埠向kali系統的20號埠返回RST+ACK數據包,表示系統埠未開放會話結束
使用python腳本去進行scapy掃描
nmap做隱蔽埠掃描:
nmap -sS 192.168.45.129 -p 80,21,110,443 #掃描固定的埠
nmap -sS 192.168.45.129 -p 1-65535 --open #掃描該IP地址下1-65535埠掃描,並只顯示開放的埠
nmap -sS 192.168.45.129 -p --open #參數--open表示只顯示開放的埠
nmap -sS -iL iplist.txt -p 80
由抓包可知,nmap默認使用-sS掃描,發送SYN數據包,即nmap=nmap -sS
hping3做隱蔽埠掃描:
hping3 192.168.45.129 --scan 80 -S #參數--scan後面接單個埠或者多個埠.-S表示進行SYN掃描
hping3 192.168.45.129 --scan 80,21,25,443 -S
hping3 192.168.45.129 --scan 1-65535 -S
由抓包可得:
hping3 -c 100 -S --spoof 192.168.45.200 -p ++1 192.168.45.129
參數-c表示發送數據包的數量
參數-S表示發送SYN數據包
--spoof:偽造源地址,後面接偽造的地址,
參數-p表示掃描的埠,++1表示每次埠號加1,那麼就是發送SYN從埠1到埠100
最後面跟的是目標IP
通過抓包可以得知地址已偽造,但對於linux系統(192.168.45.129)來說,它收到了192.168.45.200的SYN數據包,那麼就會給192.168.45.200回復SYN+ACK數據包,但該地址卻是kali偽造的地址,那麼要查看目標系統哪些埠開放,必須登陸地址為kali偽造的地址即(192.168.45.200)進行抓包
hping3和nmap掃描埠的區別:1,hping3結果清晰明了
2,nmap首先對IP進行DNS反向解析,如果沒成功,那麼便會對其埠發送數據包,默認發送SYN數據包
hping3直接向目標系統的埠發送SYN數據包,並不進行DNS反向解析
全連接埠掃描:如果單獨發送SYN數據包被被過濾,那麼就使用全連接埠掃描,與目標建立三次握手連接,結果是最准確的,但容易被入侵檢測系統發現
response=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="S"))
reply=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="A",ack=(response[TCP].seq+1)))
抓包情況:首先kali向Linux發送SYN,Linux回復SYN+ACK給kali,但kali的系統內核不清楚kali曾給linux發送給SYN數據包,那麼kali內核莫名其妙收到SYN+ACK包,那麼便會返回RST請求斷開數據包給Linux,三次握手中斷,如今kali再給Linux發ACK確認數據包,Linux莫名其妙收到了ACK數據包,當然也會返回RST請求斷開數據包,具體抓包如下:
那麼只要kali內核在收到SYN+ACK數據包之後,不發RST數據包,那麼就可以建立完整的TCP三次握手,判斷目標主機埠是否開放
因為iptables存在於Linux內核中,通過iptables禁用內核發送RST數據包,那麼就可以實現
使用nmap進行全連接埠掃描:(如果不指定埠,那麼nmap默認會掃描1000個常用的埠,並不是1-1000號埠)
使用dmitry進行全連接埠掃描:
dmitry:功能簡單,但功能簡便
默認掃描150個最常用的埠
dmitry -p 192.168.45.129 #參數-p表示執行TCP埠掃描
dmitry -p 192.168.45.129 -o output #參數-o表示把結果保存到一個文本文檔中去
使用nc進行全連接埠掃描:
nc -nv -w 1 -z 192.168.45.129 1-100: 1-100表示掃描1-100號埠
參數-n表示不對Ip地址進行域名解析,只把其當IP來處理
參數-v表示顯示詳細信息
參數-w表示超時時間
-z表示打開用於掃描的模式
『叄』 常見的網路攻擊方法和防禦技術
網路攻擊類型
偵查攻擊:
搜集網路存在的弱點,以進一步攻擊網路。分為掃描攻擊和網路監聽。
掃描攻擊:埠掃描,主機掃描,漏洞掃描。
網路監聽:主要指只通過軟體將使用者計算機網卡的模式置為混雜模式,從而查看通過此網路的重要明文信息。
埠掃描:
根據 TCP 協議規范,當一台計算機收到一個TCP 連接建立請求報文(TCP SYN) 的時候,做這樣的處理:
1、如果請求的TCP埠是開放的,則回應一個TCP ACK 報文, 並建立TCP連接控制結構(TCB);
2、如果請求的TCP埠沒有開放,則回應一個TCP RST(TCP頭部中的RST標志設為1)報文,告訴發起計算機,該埠沒有開放。
相應地,如果IP協議棧收到一個UDP報文,做如下處理:
1、如果該報文的目標埠開放,則把該UDP 報文送上層協議(UDP ) 處理, 不回應任何報文(上層協議根據處理結果而回應的報文例外);
2、如果該報文的目標埠沒有開放,則向發起者回應一個ICMP 不可達報文,告訴發起者計算機該UDP報文的埠不可達。
利用這個原理,攻擊者計算機便可以通過發送合適的報文,判斷目標計算機哪些TC 或UDP埠是開放的。
過程如下:
1、發出埠號從0開始依次遞增的TCP SYN或UDP報文(埠號是一個16比特的數字,這樣最大為65535,數量很有限);
2、如果收到了針對這個TCP 報文的RST 報文,或針對這個UDP 報文 的 ICMP 不可達報文,則說明這個埠沒有開放;
3、相反,如果收到了針對這個TCP SYN報文的ACK報文,或者沒有接收到任何針對該UDP報文的ICMP報文,則說明該TCP埠是開放的,UDP埠可能開放(因為有的實現中可能不回應ICMP不可達報文,即使該UDP 埠沒有開放) 。
這樣繼續下去,便可以很容易的判斷出目標計算機開放了哪些TCP或UDP埠,然後針對埠的具體數字,進行下一步攻擊,這就是所謂的埠掃描攻擊。
主機掃描即利用ICMP原理搜索網路上存活的主機。
網路踩點(Footprinting)
攻擊者事先匯集目標的信息,通常採用whois、Finger等工具和DNS、LDAP等協議獲取目標的一些信息,如域名、IP地址、網路拓撲結構、相關的用戶信息等,這往往是黑客入侵之前所做的第一步工作。
掃描攻擊
掃描攻擊包括地址掃描和埠掃描等,通常採用ping命令和各種埠掃描工具,可以獲得目標計算機的一些有用信息,例如機器上打開了哪些埠,這樣就知道開設了哪些服務,從而為進一步的入侵打下基礎。
協議指紋
黑客對目標主機發出探測包,由於不同操作系統廠商的IP協議棧實現之間存在許多細微的差別(也就是說各個廠家在編寫自己的TCP/IP 協議棧時,通常對特定的RFC指南做出不同的解釋),因此各個操作系統都有其獨特的響應方法,黑客經常能確定出目標主機所運行的操作系統。
常常被利用的一些協議棧指紋包括:TTL值、TCP窗口大小、DF 標志、TOS、IP碎片處理、 ICMP處理、TCP選項處理等。
信息流監視
這是一個在共享型區域網環境中最常採用的方法。
由於在共享介質的網路上數據包會經過每個網路節點, 網卡在一般情況下只會接受發往本機地址或本機所在廣播(或多播)地址的數據包,但如果將網卡設置為混雜模式(Promiscuous),網卡就會接受所有經過的數據包。
基於這樣的原理,黑客使用一個叫sniffer的嗅探器裝置,可以是軟體,也可以是硬體)就可以對網路的信息流進行監視,從而獲得他們感興趣的內容,例如口令以及其他秘密的信息。
訪問攻擊
密碼攻擊:密碼暴力猜測,特洛伊木馬程序,數據包嗅探等方式。中間人攻擊:截獲數據,竊聽數據內容,引入新的信息到會話,會話劫持(session hijacking)利用TCP協議本身的不足,在合法的通信連接建立後攻擊者可以通過阻塞或摧毀通信的一方來接管已經過認證建立起來的連接,從而假冒被接管方與對方通信。
拒絕服務攻擊
偽裝大量合理的服務請求來佔用過多的服務資源,從而使合法用戶無法得到服務響應。
要避免系統遭受DoS 攻擊,從前兩點來看,網路管理員要積極謹慎地維護整個系統,確保無安全隱患和漏洞;
而針對第四點第五點的惡意攻擊方式則需要安裝防火牆等安 全設備過濾DoS攻擊,同時強烈建議網路管理員定期查看安全設備的日誌,及時發現對系統存在安全威脅的行為。
常見拒絕服務攻擊行為特徵與防禦方法
拒絕服務攻擊是最常見的一類網路攻擊類型。
在這一攻擊原理下,它又派生了許多種不同的攻擊方式。
正確了解這些不同的拒絕攻擊方式,就可以為正確、系統地為自己所在企業部署完善的安全防護系統。
入侵檢測的最基本手段是採用模式匹配的方法來發現入侵攻擊行為。
要有效的進行反攻擊,首先必須了解入侵的原理和工作機理,只有這樣才能做到知己知彼,從而有效的防止入侵攻擊行為的發生。
下面我們針對幾種典型的拒絕服務攻擊原理進行簡要分析,並提出相應的對策。
死亡之Ping( Ping of death)攻擊
由於在早期的階段,路由器對包的最大大小是有限制的,許多操作系統TCP/IP棧規定ICMP包的大小限制在64KB 以內。
在對ICMP數據包的標題頭進行讀取之後,是根據該標題頭里包含的信息來為有效載荷生成緩沖區。
當大小超過64KB的ICMP包,就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,從而使接受方計算機宕機。
這就是這種「死亡之Ping」攻擊的原理所在。
根據這一攻擊原理,黑客們只需不斷地通過Ping命令向攻擊目標發送超過64KB的數據包,就可使目標計算機的TCP/IP堆棧崩潰,致使接受方宕機。
防禦方法:
現在所有的標准TCP/IP協議都已具有對付超過64KB大小數據包的處理能力,並且大多數防火牆能夠通過對數據包中的信息和時間間隔分析,自動過濾這些攻擊。
Windows 98 、Windows NT 4.0(SP3之後)、Windows 2000/XP/Server 2003 、Linux 、Solaris和Mac OS等系統都已具有抵抗一般「Ping of death 」拒絕服務攻擊的能力。
此外,對防火牆進行配置,阻斷ICMP 以及任何未知協議數據包,都可以防止此類攻擊發生。
淚滴( teardrop)攻擊
對於一些大的IP數據包,往往需要對其進行拆分傳送,這是為了迎合鏈路層的MTU(最大傳輸單元)的要求。
比如,一個6000 位元組的IP包,在MTU為2000的鏈路上傳輸的時候,就需要分成三個IP包。
在IP 報頭中有一個偏移欄位和一個拆分標志(MF)。
如果MF標志設置為1,則表面這個IP包是一個大IP包的片斷,其中偏移欄位指出了這個片斷在整個 IP包中的位置。
例如,對一個6000位元組的IP包進行拆分(MTU為2000),則三個片斷中偏移欄位的值依次為:0,2000,4000。
這樣接收端在全部接收完IP數據包後,就可以根據這些信息重新組裝沒正確的值,這樣接收端在收後這些分拆的數據包後就不能按數據包中的偏移欄位值正確重合這些拆分的數據包,但接收端會不斷償試,這樣就可能致使目標計算朵操作系統因資源耗盡而崩潰。
淚滴攻擊利用修改在TCP/IP 堆棧實現中信任IP碎片中的包的標題頭所包含的信息來實現自己的攻擊。
IP分段含有指示該分段所包含的是原包的哪一段的信息,某些操作系統(如SP4 以前的 Windows NT 4.0 )的TCP/IP 在收到含有重疊偏移的偽造分段時將崩潰,不過新的操作系統已基本上能自己抵禦這種攻擊了。
防禦方法:
盡可能採用最新的操作系統,或者在防火牆上設置分段重組功能,由防火牆先接收到同一原包中的所有拆分數據包,然後完成重組工作,而不是直接轉發。
因為防火牆上可以設置當出現重疊欄位時所採取的規則。
TCP SYN 洪水(TCP SYN Flood)攻擊
TCP/IP棧只能等待有限數量ACK(應答)消息,因為每台計算機用於創建TCP/IP連接的內存緩沖區都是非常有限的。
如果這一緩沖區充滿了等待響應的初始信息,則該計算機就會對接下來的連接停止響應,直到緩沖區里的連接超時。
TCP SYN 洪水攻擊正是利用了這一系統漏洞來實施攻擊的。
攻擊者利用偽造的IP地址向目標發出多個連接(SYN)請求。
目標系統在接收到請求後發送確認信息,並等待回答。
由於黑客們發送請示的IP地址是偽造的,所以確認信息也不會到達任何計算機,當然也就不會有任何計算機為此確認信息作出應答了。
而在沒有接收到應答之前,目標計算機系統是不會主動放棄的,繼續會在緩沖區中保持相應連接信息,一直等待。
當達到一定數量的等待連接後,緩區部內存資源耗盡,從而開始拒絕接收任何其他連接請求,當然也包括本來屬於正常應用的請求,這就是黑客們的最終目的。
防禦方法:
在防火牆上過濾來自同一主機的後續連接。
不過「SYN洪水攻擊」還是非常令人擔憂的,由於此類攻擊並不尋求響應,所以無法從一個簡單高容量的傳輸中鑒別出來。
防火牆的具體抵禦TCP SYN 洪水攻擊的方法在防火牆的使用手冊中有詳細介紹。
Land 攻擊
這類攻擊中的數據包源地址和目標地址是相同的,當操作系統接收到這類數據包時,不知道該如何處理,或者循環發送和接收該數據包,以此來消耗大量的系統資源,從而有可能造成系統崩潰或死機等現象。
防禦方法:
這類攻擊的檢測方法相對來說比較容易,因為它可以直接從判斷網路數據包的源地址和目標地址是否相同得出是否屬於攻擊行為。
反攻擊的方法當然是適當地配置防火牆設備或包過濾路由器的包過濾規則。
並對這種攻擊進行審計,記錄事件發生的時間,源主機和目標主機的MAC地址和IP地址,從而可以有效地分析並跟蹤攻擊者的來源。
Smurf 攻擊
這是一種由有趣的卡通人物而得名的拒絕服務攻擊。
Smurf攻擊利用多數路由器中具有同時向許多計算機廣播請求的功能。
攻擊者偽造一個合法的IP地址,然後由網路上所有的路由器廣播要求向受攻擊計算機地址做出回答的請求。
由於這些數據包表面上看是來自已知地址的合法請求,因此網路中的所有系統向這個地址做出回答,最終結果可導致該網路的所有主機都對此ICMP應答請求作出答復,導致網路阻塞,這也就達到了黑客們追求的目的了。
這種Smurf攻擊比起前面介紹的「Ping of Death 」洪水的流量高出一至兩個數量級,更容易攻擊成功。
還有些新型的Smurf攻擊,將源地址改為第三方的受害者(不再採用偽裝的IP地址),最終導致第三方雪崩。
防禦方法:
關閉外部路由器或防火牆的廣播地址特性,並在防火牆上設置規則,丟棄掉ICMP協議類型數據包。
Fraggle 攻擊
Fraggle 攻擊只是對Smurf 攻擊作了簡單的修改,使用的是UDP協議應答消息,而不再是ICMP協議了(因為黑客們清楚 UDP 協議更加不易被用戶全部禁止)。
同時Fraggle攻擊使用了特定的埠(通常為7號埠,但也有許多使用其他埠實施 Fraggle 攻擊的),攻擊與Smurf 攻擊基本類似,不再贅述。
防禦方法:
關閉外部路由器或防火牆的廣播地址特性。在防火牆上過濾掉UDP報文,或者屏蔽掉一些常被黑客們用來進Fraggle攻擊的埠。
電子郵件炸彈
電子郵件炸彈是最古老的匿名攻擊之一,通過設置一台計算機不斷地向同一地址發送大量電子郵件來達到攻擊目的,此類攻擊能夠耗盡郵件接受者網路的帶寬資源。
防禦方法:
對郵件地址進行過濾規則配置,自動刪除來自同一主機的過量或重復的消息。
虛擬終端(VTY)耗盡攻擊
這是一種針對網路設備的攻擊,比如路由器,交換機等。
這些網路設備為了便於遠程管理,一般設置了一些TELNET用戶界面,即用戶可以通過TELNET到該設備上,對這些設備進行管理。
一般情況下,這些設備的TELNET用戶界面個數是有限制的。比如,5個或10個等。
這樣,如果一個攻擊者同時同一台網路設備建立了5個或10個TELNET連接。
這些設備的遠程管理界面便被占盡,這樣合法用戶如果再對這些設備進行遠程管理,則會因為TELNET連接資源被佔用而失敗。
ICMP洪水
正常情況下,為了對網路進行診斷,一些診斷程序,比如PING等,會發出ICMP響應請求報文(ICMP ECHO),接收計算機接收到ICMP ECHO 後,會回應一個ICMP ECHO Reply 報文。
而這個過程是需要CPU 處理的,有的情況下還可能消耗掉大量的資源。
比如處理分片的時候。這樣如果攻擊者向目標計算機發送大量的ICMP ECHO報文(產生ICMP洪水),則目標計算機會忙於處理這些ECHO 報文,而無法繼續處理其它的網路數據報文,這也是一種拒絕服務攻擊(DOS)。
WinNuke 攻擊
NetBIOS 作為一種基本的網路資源訪問介面,廣泛的應用於文件共享,列印共享, 進程間通信( IPC),以及不同操作系統之間的數據交換。
一般情況下,NetBIOS 是運行在 LLC2 鏈路協議之上的,是一種基於組播的網路訪問介面。
為了在TCP/IP協議棧上實現NetBIOS ,RFC規定了一系列交互標准,以及幾個常用的 TCP/UDP 埠:
139:NetBIOS 會話服務的TCP 埠;
137:NetBIOS 名字服務的UDP 埠;
136:NetBIOS 數據報服務的UDP 埠。
WINDOWS操作系統的早期版本(WIN95/98/NT )的網路服務(文件共享等)都是建立在NetBIOS之上的。
因此,這些操作系統都開放了139埠(最新版本的WINDOWS 2000/XP/2003 等,為了兼容,也實現了NetBIOS over TCP/IP功能,開放了139埠)。
WinNuke 攻擊就是利用了WINDOWS操作系統的一個漏洞,向這個139埠發送一些攜帶TCP帶外(OOB)數據報文。
但這些攻擊報文與正常攜帶OOB數據報文不同的是,其指針欄位與數據的實際位置不符,即存在重合,這樣WINDOWS操作系統在處理這些數據的時候,就會崩潰。
分片 IP 報文攻擊
為了傳送一個大的IP報文,IP協議棧需要根據鏈路介面的MTU對該IP報文進行分片,通過填充適當的IP頭中的分片指示欄位,接收計算機可以很容易的把這些IP 分片報文組裝起來。
目標計算機在處理這些分片報文的時候,會把先到的分片報文緩存起來,然後一直等待後續的分片報文。
這個過程會消耗掉一部分內存,以及一些IP協議棧的數據結構。
如果攻擊者給目標計算機只發送一片分片報文,而不發送所有的分片報文,這樣攻擊者計算機便會一直等待(直到一個內部計時器到時)。
如果攻擊者發送了大量的分片報文,就會消耗掉目標計 算機的資源,而導致不能相應正常的IP報文,這也是一種DOS攻擊。
T
分段攻擊。利用了重裝配錯誤,通過將各個分段重疊來使目標系統崩潰或掛起。
歡迎關注的我的頭條號,私信交流,學習更多的網路技術!