信息收集技術
信息收集分類
主動收集
直接將流量流經目標,如直接訪問、掃描等。能獲得更多信息,但可能會被目標主機捕獲活動記錄。
被動收集
利用第三方服務,如瀏覽器搜索。獲取的信息相對少,但不會被目標發現。
公開信息收集
利用web服務
企業郵箱域名、網絡拓撲圖、公開網頁源碼中未刪除的注釋等。
利用搜索引擎服務
- google hacking高級搜索,如site關鍵字表示在指定主域內搜索(可用于獲取該主域下的所有子域名)、link關鍵字用于搜索所有鏈接到某個url的網頁。
- 網站服務器的目錄索引通常包含Index of關鍵字,所以用Index of/admin可以搜索出所有包含admin的目錄,很可能包含網站管理員相關的敏感信息。
利用WhoIs服務
查詢已注冊域名的所有人信息。
利用DNS域名服務
- DNS分為主服務器、輔助服務器和緩存服務器。主服務器在每個區域內有且只有一個(其數據庫稱為區域文件)。輔助服務器定期對區域文件進行復制(區域傳送),成功后會將區域文件設置為只讀,即輔助服務器不能修改區域文件。這一行為的目的是若主服務器不能正常工作,輔助服務器可以接任。緩存服務器不管理任何DNS區域,但是可以接受域名解析請求并將其轉發給指定服務器進行解析,把返回結果給客戶端時保存一份在自己的緩存區內。
- 如果管理員給主服務器設置的是“允許任意IP從該主機的DNS區域傳送請求”,就導致任何主機都可以獲得主服務器中的信息;如果沒有使用公用/私用DNS機制分割外部和內部的DNS信息,就會導致任何主機都可以獲得內部主機名和IP信息。
- 許多網站為了提升用戶體驗選擇使用CDN服務,可以通過設置代理或利用在線Ping網站來使用不同地區的Ping服務器來測試目標,若不同地區訪問到的服務器不同,說明該網站存在CDN服務器,我們拿到的很可能不是真實的服務器IP地址。
網絡掃描
主機掃描
- 用ping進行主機掃描,借助ICMP協議實現。ICMP報文的類型域用于指明該報文類型,代碼域用來確定該包的具體作用。
- ping的實現機制:向目標主機發送ICMP ECHO REQUEST(type 8)包,等待回復的ICMP ECHO REPLY(type 0)包。
- 高級IP掃描技術
1)異常的IP頭(設置無效字段值)
目標主機或過濾設備會反饋ICMP參數錯誤信息。通常在Header Length Field和IP Options Field字段中設置錯誤。
2)錯誤的數據分片
向目標發送含有錯誤字段值的IP包,會反饋ICMP Destination Unreachable信息。
端口掃描
- TCP Connect(全連接)掃描(基本掃描)
發送SYN。
結果:connect函數返回0表示連接成功(返回SYN+ACK表示開放,返回RST+ACK表示關閉,不返回表示被屏蔽。若開放,會再發ACK以建立完整連接)。
優點:實現簡單;可以用普通用戶權限執行。
缺點:容易被目標日志記錄。 - SYN掃描(半連接)
只發送三次握手中的第一個SYN包,不建立連接(不進行握手的第三步)。
實現:raw socket或python
結果:返回SYN+ACK表示開放,返回RST+ACK表示關閉,不返回表示被屏蔽。與全連接掃描的區別在于,收到目標回復后不會再發送任何內容,也就是不會建立完整連接。
優點:一般不會被日志記錄
缺點:raw socket需要管理員權限。 - ACK掃描
發送ACK報文。
結果:返回RST表示未被屏蔽,不返回表示被屏蔽。
缺點:單獨使用無法判斷端口是否開放(只能判斷防火墻功能)。 - FIN掃描(隱秘掃描)
發送FIN報文。
實現:raw IP
結果:對于TCP標準和BSD操作系統,返回RST表示關閉,不返回表示開放或被屏蔽;其他一些操作系統在任何情況下都返回RST。
優點:不會被日志記錄;可以繞過一些防火墻;netstat命令不會顯示(其只顯示已建立的TCP連接或者試圖建立TCP連接的操作)。
缺點:實現復雜;不同操作系統有不同的返回。 - NULL掃描(隱秘掃描)
發送所有標志位都是空的報文。
結果:返回RST表示關閉,不返回表示開放或被屏蔽。 - Xmas掃描(隱秘掃描)
發送FIN、URG、PSH是1的報文。
結果:返回RST表示關閉,不返回表示開放或被屏蔽。 - window掃描
發送ACK報文。
結果:返回的RST窗口大小非零表示開放,返回的RST窗口大小為零表示關閉,不返回表示被屏蔽。
系統類型掃描
- 端口掃描結果分析
通過打開的端口和特定操作系統的特定功能的對應關系判斷。 - BANNER
- TCP/IP協議棧指紋
主要關注TCP包的ISN、BOGUS標記位、初始化窗口值和TCP選項值等,IP包的TTL、TOS和標記等。
可用工具有Nmap、Checkos、Queso等。
漏洞掃描
安全漏洞又稱為脆弱性。
漏洞來源
- 硬件/軟件/協議設計時的瑕疵
- 硬件/軟件/協議實現中的弱點
- 硬件/軟件本身的瑕疵
- 系統/網絡的錯誤配置
分類
- 被動式策略:基于主機的檢測
- 主動式策略:基于網絡的檢測(先攻擊,通過其反應發現漏洞)
主要方法
- 直接測試
不是所有漏洞都可以這樣獲得。 - 推斷
版本檢查、程序行為分析、操作系統堆棧指紋分析和時序分析。 - 帶憑證的測試
要求擁有可訪問服務的用戶名和口令。
軟件
ISS、SATAN、SAINT、Nessus、Xscan、極光、天鏡 等
網絡拓撲探測
拓撲探測
- traceroute
- SNMP
不同類型網絡設備之間客戶機/服務器模式的簡單通信協議,有Read和Read/Write兩個基本命令模式。
網絡設備識別
- 搜索引擎:Shodan、ZoomEye
- 設備指紋
網絡實體IP地理位置定位
- 基于注冊信息
- 基于網絡測量(時延等)
口令攻擊
針對口令強度
字典攻擊
把使用概率高的口令用不同的變異規則組成猜測字典。
強力攻擊
用足夠快的計算機嘗試所有可能的口令。
組合攻擊
在字典單詞末尾串接任意字母和數字,介于字典攻擊和強力攻擊之間。
撞庫攻擊
收集已泄露的用戶名和密碼,登錄其他網站(利用很多人只有一套用戶名和密碼)。
彩虹表攻擊
彩虹表是一種破解哈希算法的技術,也用于跨平臺破解密碼,主要用于破解HASH、MD5等。基于內存-時間衡量方法,通過用內存換時間,提高破解率和破解速度。
針對口令存儲
Linux
- 基礎口令文件/etc/password
每行代表一個用戶記錄,共7個字段,字段間用“:”隔開。 - 散列口令文件/etc/shadow
密碼部分包括算法、salt和哈希值,后兩者編碼為可打印字符。為了對抗暴力攻擊,使用多輪哈希函數。
windows
- 存儲位置
1)%SystemRoot%system32\config\目錄下
2)%SystemRoot\repair目錄下的SAM._文件
3)注冊表中的HKEY_LOCAL_MACHINE\SAM鍵
4)Winlogon.exe的內存塊中 - SAM文件的安全保護措施
1)SAM文件鎖定
操作系統運行期間,管理員也無法訪問。
2)隱藏
注冊表中的備份被隱藏
3)不可讀
保存時將其進行壓縮處理。 - 本地獲取口令
1)獲取系統自動保存的口令(存在硬盤上)
2)直接讀取登錄口令(暫存在內存中)
3)破解SAM - 破解工具
原理:遍歷明文和加密算法
L0phtcrack、NTSweep、NTCrack、PWDump
針對口令傳輸
口令嗅探
被動攻擊方式,目標難以察覺。
嗅探器可以是軟件或硬件,把系統的網絡接口設為混雜模式,可以監聽所有流經同一以太網網段的數據包。
嗅探程序把所有捕獲的數據存入log文件,等待攻擊者下載。
注意嗅探主機和被監聽主機必須在同一網段上,嗅探程序必須用管理員身份運行。
鍵盤記錄
鍵盤記錄好處是可以在口令加密和傳輸之前就可以得到明文密碼。
- 硬件截獲
修改主機鍵盤接口(PS/2或USB),使之在向主機傳遞IO數據時將信息發送給攻擊者。 - 軟件截獲
通常作為木馬功能的一部分,通過監視操作系統處理鍵盤輸入的接口,記錄鍵盤輸入內容后發給遠程攻擊者。
網絡釣魚
重放攻擊
- 簡單重放
監聽雙方通信內容并記錄,之后進行重放。 - 反向重放
比如AB之間確定了一種挑戰應答方式,攻擊者沒有A的合法賬號,用A給B發出請求,B返回一個挑戰值,攻擊者不知道合法應答方式所以暫時將這個會話掛起;等B向A發出請求時,A把先前收到的挑戰值發給B,B會返回正確的應答。所以A把B的應答值再發給B,即可通過B的挑戰驗證。
防止口令猜測
- 關閉不需要的服務和端口
- 硬盤分區采用NTFS格式:支持大容量文件和超大分區,還包括長文件名、壓縮分區、事件追蹤、文件索引、高容錯性、數據保護和恢復、加密訪問等。但是會記錄詳細的硬盤讀寫操作,因此對于閃存會有很大的負擔和傷害。
軟件漏洞
漏洞標準化研究
公共漏洞和暴露CVE
字典表,為廣泛認同/已經暴露的漏洞給出公共名稱以及相應修補信息。
通用缺陷枚舉CME
包括類缺陷、基礎缺陷和變種缺陷,有字典、開發和研究三種視圖。
字典把所有缺陷按字母表順序排列以供查閱;開發以軟件開發周期為參照進行分類;研究從內在性質等方面進行分類。
棧溢出
棧和棧幀
程序運行時在內存中會有一塊連續區域,從內存地址高到低依次是棧、堆、數據段、代碼段。
- 棧
由編譯器自動分配釋放,存放臨時創建的局部變量和參數等。先進后出,便于保存/恢復函數調用現場。每個進程對應一個棧空間,進程中每個函數獨占一個棧幀。 - 堆
位于BSS內存段上面,由程序員分配釋放,程序結束時操作系統統一回收。大小不固定,可以動態擴張和縮減。 - 數據段
包括已初始化的數據段(.data)和未初始化的數據段(.bss),在編譯時進行分配。 - 代碼段
存放由處理器直接執行的二進制代碼和只讀數據,可執行指令就是從這里取得的。一般標記為只讀,任何對該區的寫錯誤都會產生段錯誤。
程序和棧
- 隨著函數調用層數增加,函數棧幀向低地址方向延伸。隨著各層調用函數返回,棧幀一塊塊被遺棄,向高地址方向回縮。
- 兩個相關寄存器
SP是棧頂指針,隨數據出入棧變化。
BP是棧底指針,標識一個相對穩定位置,BP加偏移地址可以引用參數和局部變量。 - 每個棧幀包含4個部分:前棧幀ebp、臨時局部變量、函數參數、返回地址。
函數調用
- 把EIP的內容(EIP指向當前CPU要運行的下一條指令的地址)壓入棧,作為返回地址RET。
- 壓入EBP,它指向當前函數棧幀的底部。
- 把ESP拷到EBP作為新的基地址,為本地變量的動態存儲分配留一些空間,把ESP減去適當的數值。
棧溢出
棧從高到低依次是函數變量、前棧幀ebp和前棧幀中的返回地址,所以如果變量大小超過了給變量分配的存儲空間,就會覆蓋位于低地址的前棧幀ebp和前棧幀中的返回地址。所以如果精心設置用于覆蓋返回地址的值,就可以通過給變量賦值來控制程序跳轉到其他代碼空間執行,即利用棧溢出實現控制流劫持。
shellcode編寫
定義
可完成一定功能、能被計算機直接執行的機器代碼(通常以十六進制形式存在)
Windows函數調用原理
- LOAD函數所在的dll
- 用堆棧進行參數傳遞
- CALL函數地址
動態定位函數地址
- 定位GetProcAddress地址
暴搜(不通用);用PEB;SHE獲得kernel基址;HASH查找所有函數地址 - 通過GetProcAddress獲得目標函數地址
- 調用目標函數地址
環境變量攻擊
環境變量
一組動態定義值,是操作系統運行環境的一部分,會影響正在運行的進程的行為方式(加載哪些外部dll)
獲取環境變量
- 用fork()創建的新進程會繼承其父進程的環境變量
- 進程用execve()啟動新程序,此進程的內存會被覆蓋,所有環境變量丟失。
envp和environ
- 最初指向同一位置
- envp只在主函數中有效,environ是全局變量
- 更改環境變量時,環境變量的存儲位置可能會移動到堆中,此時envp不變,environ會變化
shell
shell啟動時會把環境變量復制到自己的shell變量中,修改shell變量不會影響到環境變量。在shell中輸入env,將創建一個新進程。
set-uid
- 允許用戶(臨時提升到)程序所有者的權限運行程序
- 進程的RUID是進程所有者,EUID標識進程權限(用于訪問控制)。
- 正常運行程序時,EUID=RUID;用set-uid運行時EUID是程序所有者ID
system和execve
execve()的攻擊面小,因為不調用shell所以不受環境變量影響,適用于在特權程序中調用外部程序。
允許普通用戶執行特權操作的常用方法
- set-uid
普通用戶運行一個特殊程序,以臨時獲得特權 - 服務
普通用戶請求特權服務為自己執行操作
web應用攻擊
分類
- web客戶端攻擊(攻擊用戶)
XSS、網絡釣魚、網絡掛馬等 - web服務器攻擊
網頁篡改、代碼注入攻擊、文件操作控制攻擊等 - HTTP協議攻擊
HTTP頭注入攻擊、HTTP會話攻擊等
XSS攻擊
- 原理
未對用戶輸入進行有效過濾,導致用戶輸入的數據被當成js或html代碼執行。 - 同源策略
同源是指協議、域名、端口均相同。同源策略是指兩個非同源的網站不能打開彼此設置的cookie,這是一種對抗XSS攻擊的方式。 - 分類
1)反射型XSS
使用非持久性參數型跨站腳本,惡意代碼直接附加到URL參數中。如在輸入框中直接輸入js代碼,該代碼被直接執行。
2)存儲型XSS
使用持久性跨站腳本,即腳本被存儲在服務端數據庫中。如某人把自己社交平臺的個人頁面部分某個板塊中插入惡意代碼,使每個訪問其主頁的人都受到XSS攻擊。
3)DOM型XSS
這種XSS要求客戶端的js能訪問瀏覽器的DOM文檔(網站有一個html頁面采用了不安全方式),攻擊者通過誘使用戶訪問自己構造的URL在其客戶端注入惡意腳本,不需要與服務端進行交互,可以繞過WAF,避開服務器檢測。
一般攻擊流程:攻擊者通過URL、輸入框等把包含惡意腳本的數據提交到網頁,引誘用戶訪問該頁面;用戶的瀏覽器解析html并構建DOM樹時,通過js等方式修改DOM,插入惡意腳本;瀏覽器解析和執行DOM時觸發惡意腳本。 - 其他
cookie竊取、會話劫持(冒用合法用戶的會話ID)、網絡釣魚(比傳統網絡釣魚更隱蔽)、信息刺探、網頁掛馬、XSS蠕蟲(一般利用存儲型XSS) - 防范措施
1)httponly
是一個cookie的標志,作用是禁止任何腳本訪問cookie。可以防止cookie竊取。
2)安全編碼
對用戶輸入內容進行編碼處理,避免被作為代碼執行。例如“<”編碼為“<”、“>”編碼為“>”等。
SQL注入攻擊
- 原理
向網站提交精心構造的sql語句,導致網站返回敏感數據。 - 使用sql的常見數據庫
Oracle、Sybase、sql server、access等 - sql存儲過程
預先封裝復雜的sql語句。
分類:
1)系統存儲過程:以sp_開頭,進行系統各項設定和獲取信息
2)擴展存儲過程:以XP_開頭,調用操作系統相關功能
3)用戶自定義的存儲過程 - 注入攻擊類型
根據注入點類型:
1)字符型SQL注入:注入點類型為字符串,如“name”
2)數字型SQL注入:注入點類型為數字,如“id”
根據有無錯誤信息:
1)基于錯誤信息的注入
2)SQL盲注入
網站將SQL錯誤信息的返回關閉,即無法根據錯誤信息提示構造SQL語句。有布爾盲注和時間盲注。 - 注入步驟
1)尋找注入點
通過在查詢參數后添加恒等式和不可能式,觀察返回值來判斷該點能否注入。
一般添加不可能式時,若返回找不到記錄或返回為空,說明存在注入點。
2)判斷數據庫類型
通過錯誤信息判斷數據庫類型,然后利用該數據庫內置的表查詢獲得當前數據庫名。
3)獲取表名和字段名
注入不同的表名和字段名,返回正常頁面即說明該表/字段存在。也可利用數據庫的自帶表查詢獲得。
4)猜字段值,注入獲取敏感信息 - 隱蔽性
從正常的WWW端口訪問,防火墻一般不會報警 - 防范措施
1)參數化查詢
sql語句是提前編譯好的,直接將用戶輸入作為參數傳遞給語句,以確保用戶輸入不被作為sql代碼執行。
2)輸入驗證和過濾
使用正則表達式等方法,使用戶輸入中不能包含惡意字符 ,如單引號、“#”“;”等,以防止輸入中夾帶sql語句。
3)存儲過程
存儲過程是一組預定義的sql語句集合,如Java中的JDBC。
4)最小權限原則
限制每個數據庫賬戶的權限,確保用戶無法利用有高級權限的賬戶。
5)使用ORM框架
ORM是對象關系映射,是在對象模型和數據庫之間進行映射的技術,把數據庫表映射為對象,把表的行映射為對象屬性,把表間關系映射為對象間關聯,即允許開發人員以面向對象的方式操作數據庫,不再依賴sql語句。
HTTP會話攻擊的防御方法
針對預測會話ID攻擊
不要自己設計會話管理機制,直接使用編程語言內置的。
針對竊取會話ID攻擊
與具體攻擊方式有關,比如對于XSS可以通過httponly來防范對cookie的竊取。
針對會話ID固定攻擊
盡量采用非會話采納的web環境。
針對會話保持攻擊
使會話ID非長期有效,如定期銷毀、登錄后更新。
針對CSRF(跨站請求偽造)攻擊
使用POST代替GET;檢驗HTTP referer;使用驗證碼或token等
惡意代碼
概述
惡意代碼命名
<病毒前綴>.<病毒名>.<病毒后綴>
- 前綴是指病毒種類
- 名是指病毒的家族特征
- 后綴是指病毒的變種特征
病毒
- 四個階段
潛伏、傳染、觸發、發作 - 四個模塊
感染、觸發、破壞、主控 - 三種機制
傳染、觸發、破壞
蠕蟲
- 自身有獨立性和完整性
- 組成
彈頭、傳播引擎、目標算法、掃描引擎、有效載荷 - 工作流程
隨機生成IP、探測地址、檢測主機和漏洞是否存在、攻擊&傳染&現場處理
木馬植入技術
- 直接攻擊
利用系統漏洞直接遠程安裝 - 文件下載
- 接觸植入
用U盤或充電寶(針對手機) - 郵件傳播
利用郵件內容或附件 - 網頁掛馬
利用IE瀏覽器的漏洞 - 軟件漏洞
- 社會工程
木馬開發
基本特性
- 自啟動
啟動組(“開始-程序-啟動”)、注冊表(Run、RunOnce、Winlogon、Load)、注冊服務(RunServices、RunServicesOnce)、配置文件(Win.ini、System.ini、Autoexec.bat和Config.sys)、修改文件關聯、捆綁文件、SPI、BHO等 - 功能特性
- 抗查殺性
- 隱蔽性
假消息攻擊
概述
利用網絡協議設計中的安全缺陷,發送偽造的數據包實現欺騙。
TCP/IP協議的設計缺陷
- 缺乏信息加密機制
- 缺乏有效的身份鑒別和認證機制
類型
- 應用層:DNS欺騙、SSL中間人
- 傳輸層:IP欺騙、SYN Flood
- 網絡層:ICMP重定向、IP分片攻擊
- 數據鏈路層:ARP欺騙
嗅探
以太網卡
- 以太網分類
1)共享式:用同軸電纜或hub連接
2)交換式:用交換機連接 - 網卡工作原理
從網絡中接收數據,處理數據鏈路層任務;網卡內的單片程序檢查數據幀的目的MAC,根據網卡驅動程序設置的接收模式決定是否接收。若需要接收,以中斷方式通知操作系統,否則直接丟棄。 - 偵聽模式
1)單播:接收單播和廣播數據幀
只讓目標MAC與自己的MAc相同的數據幀通過。
2)組播:接收單播、廣播和組播數據幀
3)混雜(在WiFi中稱為監控模式):接收經過的所有數據幀
不再進行硬件過濾。 - 過濾器
BSD數據包過濾器(BPF)讓一個用戶程序向套接字附加一個過濾器,告訴內核放棄自己不想要的數據包。
交換式以太網嗅探
- MAC泛洪
向交換機發送大量包含虛構MAC和IP的包,使交換機進入“打開失效”模式,即進入類似hub的工作方式(向網絡上所有機器進行廣播)。 - MAC欺騙
把源MAC偽造為目標主機的MAC,通過交換機發送,讓交換機更新其“MAC-端口”映射表,交換機會相信攻擊者的MAC就是目標主機的MAC,也就會把本來是發給目標主機的包發給攻擊者。 - ARP欺騙
對網關和目標主機實行ARP欺騙,截取兩者間的通信數據。
協議還原
把離散的網絡數據根據協議規范重新還原成可讀的協議格式。
過程:主機封包、嗅探器抓包、嗅探器組包。
嗅探的檢測
向主機發送可以觸發操作系統做出響應,又不能通過硬件過濾的包,可以檢測主機網絡接口的接收模式。
嗅探的防范
- 網絡分段:用交換機替代hub;劃分VLAN
- 會話加密:使用安全協議
- 使用靜態的ARP緩存
ARP欺騙
欺騙方式
- 在ARP請求中發送錯誤的發送者IP-MAC映射
- 在ARP應答中發送錯誤的發送者IP-MAC映射
防范
- 建立DHCP服務器
- 局域網中建立MAC數據庫
- 網關關閉ARP動態刷新的過程,使用靜態路由
- 局域網監聽ARP數據包
- 使用VLAN或PVLAN技術
ICMP重定向攻擊
ICMP重定向
- 功能
保證主機擁有動態的、既小又優的路由表。
主機啟動時擁有的路由信息不一定是最優的,路由器檢測到IP數據報經非最優路由傳輸時,通知該主機去往該目的地的最佳路徑。 - 條件
1)新路由必須是直達的
2)重定向包必須來自去往目標的當前路由
3)重定向包不能通知主機用自己做路由
4)被改變的路由必須是一條間接路由
攻擊防范
- linux:通過配置防火墻或修改內核選項重新編譯內核實現拒絕接收ICMP重定向報文。
- Windows:通過防火墻和IP策略拒絕接收ICMP重定向報文。
IP欺騙
方法
要點在于偽造源IP。難點在于獲取TCP的ACK初始序列號,如果與目標在同一局域網內,可以通過嗅探獲得,否則只能靠猜測。
防范
- 只在需要時啟動終端會話,在其變成不活動狀態前注銷
- 使用基于加密的終端協議
- 使用隨機化的初始序列號(干擾猜測)
- 不使用基于地址的信任策略
DNS欺騙
DNS相關
- 域、區域和子域
DNS是根據區域組織的,區域將域樹上相鄰的域和子域分組,把管理權限分配給實體。子域是域的“下級”,區域的劃分與域和子域的劃分無關。 - 權威服務器
每個區域至少有一個權威服務器,可以是主服務器(存儲所有區域記錄)或從服務器(使用自動更新機制維護維護與主服務器相同的記錄副本)。 - 根服務器
13個根服務器是互聯網上最關鍵的基礎設施。 - 本地DNS文件
1)/etc/hosts
存儲某些主機名的IP,在查詢本地DNS服務器前會先在該文件中查找。
2)/etc/resolv.conf
向計算機的DNS解析器提供有關本地DNS服務器地址的信息,存儲著DHCP提供的本地DNS服務器的IP。 - 查詢方式
一般從計算機到本地DNS服務器是遞歸查詢,從本地DNS服務器再向上查詢是迭代查詢。
SSL中間人攻擊
SSL
- 握手階段
1)加密傳輸數據,保證數據機密性
2)驗證信息在傳送過程中是否被修改,保證數據完整性
3)使用非對稱加密算法,通過數字證書驗證服務器和客戶端的身份 - 加密數據傳輸階段
服務器和客戶端的數據被分成一系列經過保護的記錄進行傳輸。
防范
- 檢查證書來源和屬性
- 不要打開證書不可信的網址
系統安全
熔斷與幽靈攻擊
側信道攻擊
利用執行時間等額外信息推導其他秘密信息。
flush-reloaded技術
監視存儲器s位置。
先刷新CPU緩存;然后讓目標進程訪問s位置;再重新加載,測量加載時間。
如果目標進程訪問了該位置,則其應該在緩存中,重新加載所用時間較短,否則因為需要從內存中取出相應內容,所以重新加載時間長。
熔斷攻擊
- 原理
利用CPU緩存和亂序執行特性,通過一些手段把秘密信息/地址寫入CPU緩存(一般是借助異常處理不會刷新緩存的特性),再通過測量訪問時間獲取這個值。 - 對策
1)是硬件漏洞。
2)KASLR(內核地址空間布局隨機化)
不映射用戶空間中的任何內核內存(x86體系結構所需的某些部分除外,如中斷處理程序);用戶級程序不能直接使用內核內存地址(這樣的地址無法解析)。
幽靈攻擊
CPU發現分支預測錯誤時,會丟棄分支執行的結果并恢復CPU狀態,但不會恢復CPU緩存的狀態。可以通過緩存側信道攻擊獲取秘密數據。
拒絕服務攻擊
分類
- 漏洞型
利用軟件實現中存在的漏洞 - 重定向型
利用網絡協議的設計缺陷,使目標傳輸的數據被重定向到錯誤的網絡地址(無法正常進行網絡通信) - 資源消耗型
通過發送大量請求占用網絡帶寬或系統資源
洪泛攻擊
- TCP/SYN洪泛
- UDP洪泛
- HTTP洪泛(針對性分析,不盲目追求大流量)
低速率拒絕服務攻擊LDoS
利用網絡協議或應用服務協議中的自適應機制存在的安全問題,周期性發送高速脈沖攻擊數據包,降低目標主機服務性能。
- TCP擁塞控制
1)重度擁塞
發送端為每個發送的報文設置一個定時器,若收到報文確認之前定時器超時就重新發送該報文。設置的定時器就是RTO。
2)輕微擁塞
發送端收到3個重復的ACK包就開始重傳,用AIMD算法調整擁塞窗口大小。 - 原理
故意制造擁塞,使擁塞控制一直處于調整狀態,發送端速率會迅速減小。
分布式拒絕服務攻擊
基于僵尸網絡的DDoS
- 命令控制機制是僵尸網絡區別于其他惡意代碼形態的最本質屬性。
- 集中式命令控制機制
僵尸節點連接到一個或多個控制服務器來獲取控制命令。包括基于IRC協議的僵尸網絡和基于HTTP協議的僵尸網絡。 - 分布式命令控制機制
攻擊者連接到任意僵尸節點發布控制命令,用push/pull方式在整個僵尸網絡中傳遞。 - 發動DDoS
1)構建僵尸網絡
2)收集目標信息
3)實施DDoS攻擊
反射型DDoS
- DNS反射攻擊
向DNS服務器發送偽造源地址的查詢請求,把應答流量引向目標。 - LDAP放大攻擊
向LDAP(輕量目錄訪問協議)服務器發送偽造源地址的查詢請求,把應答流量引向目標。 - NTP放大攻擊
向NTP(網絡時間協議)服務器發送偽造源地址的查詢請求,把應答流量引向目標。
防御
預防
在攻擊前阻止攻擊。
- 抑制僵尸網絡規模
- 過濾偽造源地址的報文
- 減少可用的反射/放大器
檢測
在攻擊過程中發現攻擊,區分攻擊流量與正常流量
- 特征檢測
分析攻擊流量的行為特征,建立特征庫 - 異常檢測
對比當前網絡狀態與正常網絡狀態的不同
響應
攻擊發生后降低乃至消除攻擊的影響
流量清洗:設法過濾掉攻擊流量,只把正常流量交付給服務器。
容忍
通過提高處理請求的能力來消除攻擊的影響
- CDN
- Anycast
一種網絡尋址和路由方法,一組服務器可以使用相同的IP,提供相同的服務。
浙公網安備 33010602011771號