1.短信消耗
平台注冊在不輸入驗證碼的時候即可點擊免費獲取驗證碼,黑客如果通過動態IP反復輸入大量手機號點擊獲取驗證碼。將導致短信短時間內大量消耗。
2.用戶名輸入的時候查詢角色
系統登入的時候輸入用戶名,系統會自動查詢數據庫來確認角色信息,當黑客通過大量用戶名輸入的時候會導致數據庫資源被占滿導致正常的訪問無法進行。
3.ddos
近幾年由於寬帶的普及,很多網站開始盈利,其中很多非法網站利潤巨大,造成同行之間互相攻擊,還有一部分人利用網絡攻擊來敲詐錢財。同時windows 平台的漏洞大量的被公布,流氓軟件,病毒,木馬大量充斥著網絡,有些技術的人可以很容易非法入侵控制大量的個人計算機來發起DDOS攻擊從中謀利。攻擊已經成為互聯網上的一種最直接的競爭方式,而且收入非常高,利益的驅使下,攻擊已經演變成非常完善的產業鏈。通過在大流量網站的網頁裡注入病毒木馬,木馬可以通過windows平台的漏洞感染浏覽網站的人,一旦中了木馬,這台計算機就會被後台操作的人控制,這台計算機也就成了所謂的肉雞,每天都有人專門收集肉雞然後以幾毛到幾塊的一只的價格出售,因為利益需要攻擊的人就會購買,然後遙控這些肉雞攻擊服務器。
一般在硬防上直接就down掉了,不可能給他攻擊的余地。雖然黑客攻擊的手法多種多樣,但就目前來說,絕大多數中初級黑客們所采用的手法和工具仍具有許多共性。
DDOS攻擊的發現:
假如說黑客攻擊的是Web80端口,察看連接80端口的客戶端IP和端口,命令如下:
netstat -an -t | grep":80" |sort -k 5 |awk '{print $5,$6}'
輸出:
161.2.8.9:123 FIN_WAIT2
161.2.8.9:124 FIN_WAIT2
61.233.85.253:23656 FIN_WAIT2
第一欄是客戶機IP和端口,第二欄是連接狀態
如果來自同一IP的連接很多(超過50個),而且都是連續端口,就很可能是攻擊。
我們可以啟用iptables屏蔽該ip的訪問
用iptables屏蔽IP
iptables -I RH-Lokkit-0-50-INPUT 1 -p tcp -m tcp -s 213.8.166.227--dport 80 --syn -j REJECT
4.synflood
了解SYN攻擊前我們先了解下TCP握手協議,在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與服務器開始傳送數據,在上述過程中,還有一些重要的概念:
未連接隊列:在三次握手協議中,服務器維護一個未連接隊列,該隊列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明服務器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在服務器處於Syn_RECV狀態,當服務器收到客戶的確認包時,刪除該條目,服務器進入ESTABLISHED狀態。
Backlog參數:表示未連接隊列的最大容納數目。
SYN-ACK 重傳次數 服務器發送完SYN-ACK包,如果未收到客戶確認包,服務器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接信息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。
半連接存活時間:是指半連接隊列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時我們也稱半連接存活時間為Timeout時間、SYN_RECV存活時間。
然後我們了解下SYN攻擊的原理,SYN攻擊屬於DOS攻擊的一種,它利用TCP協議缺陷,通過發送大量的半連接請求,耗費CPU和內存資源。SYN攻擊除了能影響主機外,還可以危害路由器、防火牆等網絡系統,事實上SYN攻擊並不管目標是什麼系統,只要這些系統打開TCP服務就可以實施。從上圖可看到,服務器接收到連接請求(syn=j),將此信息加入未連接隊列,並發送請求包給客戶(syn=k,ack=j+1),此時進入SYN_RECV狀態。當服務器未收到客戶端的確認包時,重發請求包,一直到超時,才將此條目從未連接隊列刪除。配合IP欺騙,SYN攻擊能達到很好的效果,通常,客戶端在短時間內偽造大量不存在的IP地址,向服務器不斷地發送syn包,服務器回復確認包,並等待客戶的確認,由於源地址是不存在的,服務器需要不斷的重發直至超時,這些偽造的SYN包將長時間占用未連接隊列,正常的SYN請求被丟棄,目標系統運行緩慢,嚴重者引起網絡堵塞甚至系統癱瘓。
抵御SYN
SYN攻擊是利用TCP/IP協議3次握手的原理,發送大量的建立連接的網絡包,但不實際
建立連接,最終導致被攻擊服務器的網絡隊列被占滿,無法被正常用戶訪問。
Linux內核提供了若干SYN相關的配置,用命令:
sysctl -a | grep syn
看到:
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
tcp_max_syn_backlog是SYN隊列的長度,tcp_syncookies是一個開關,是否打開SYN Cookie
功能,該功能可以防止部分SYN攻擊。tcp_synack_retries和tcp_syn_retries定義SYN
的重試次數。
加大SYN隊列長度可以容納更多等待連接的網絡連接數,打開SYN Cookie功能可以阻止部分,SYN Cookie的作用是緩解服務器資源壓力
SYN攻擊,降低重試次數也有一定效果。
調整上述設置的方法是:
增加SYN隊列長度到2048:
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
打開SYN COOKIE功能:
sysctl -w net.ipv4.tcp_syncookies=1
降低重試次數:
sysctl -w net.ipv4.tcp_synack_retries=3
sysctl -w net.ipv4.tcp_syn_retries=3
為了系統重啟動時保持上述配置,可將上述命令加入到/etc/rc.d/rc.local文件中。
5. Land 攻擊
Land 攻擊是利用向目標主機發送大量的源地址與目標地址相同的數據包,造成目標主機解析 Land包時占用大量系統資源,從而使網絡功能完全癱瘓的攻擊手段。其方法是將一個特別設計的SYN包中的源地址和目標地址都設置成某個被攻擊服務器的地址,這樣服務器接收到該數據包後會向自己發送一個SYN—ACK 回應包,SYN—ACK又引起一個發送給自己的ACK包,並創建一個空連接。每個這樣的空連接到將暫存在服務器中,當隊列足夠長時,正常的連接請求將被丟棄,造成服務器拒絕服務的現象。
6.Smurf攻擊
Smurf攻擊是一種放大效果的ICMP攻擊方式,其方法是攻擊者偽裝成被攻擊者向某個網絡上的廣播設備發送請求,該廣播設備會將這個請求轉發到該網絡的其他廣播設備,導致這些設備都向被攻擊者發出回應,從而達到以較小代價引發大量攻擊的目的。例如,攻擊者冒充被攻擊者的IP使用PING來對一個C類網絡的廣播地址發送ICMP包,該網絡上的254台主機就會對被攻擊者的IP發送ICMP回應包,這樣攻擊者的攻擊行為就被放大了 254倍。
7.UDP攻擊
UDP攻擊是指通過發送UDP數據包來發動攻擊的方式。在UDPFlood攻擊中,攻擊者發送大量虛假源IP的UDP數據包或畸形UDP數據包,從而使被攻擊者不能提供正常的服務,甚至造成系統資源耗盡、系統死機。由於UDP協議是一種無連接的服務,只要被攻擊者開放有一個UDP服務端口,即可針對該服務發動攻擊。
8.arp局域網攻擊
ARP攻擊就是通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網絡中產生大量的ARP通信量使網絡阻塞,攻擊者只要持續不斷的發出偽造的ARP響應包就能更改目標主機ARP緩存中的IP-MAC條目,造成網絡中斷或中間人攻擊。
ARP攻擊主要是存在於局域網網絡中,局域網中若有一台計算機感染ARP木馬,則感染該ARP木馬的系統將會試圖通過“ARP欺騙”手段截獲所在網絡內其它計算機的通信信息,並因此造成網內其它計算機的通信故障。
一般服務器被人黑了或是中了病毒了,總是容易發一些ARP包出來,讓同網段內其他的機器訪問起來極不正常,而且硬防上一般都看不出來,總是需要跑到交換機上查ARP表,還好現在有了ARP防火牆了,直接能找到攻擊源。
9.cc攻擊
CC攻擊的原理就是攻擊者控制某些主機不停地發大量數據包給對方服務器造成服務器資源耗盡,一直到宕機崩潰。CC主要是用來攻擊頁面的,每個人都有這樣的體驗:當一個網頁訪問的人數特別多的時候,打開網頁就慢了,CC就是模擬多個用戶(多少線程就是多少用戶)不停地進行訪問那些需要大量數據操作(就是需要大量CPU時間)的頁面,造成服務器資源的浪費,CPU長時間處於100%,永遠都有處理不完的連接直至就網絡擁塞,正常的訪問被中止。
CC攻擊也稱為為HTTPFlood
HTTPFlood攻擊者並不需要控制大批的傀儡機,取而代之的是通過端口掃描程序在互聯網上尋找匿名的HTTP代理或者SOCKS代理,攻擊者通過匿名代理對攻擊目標發起HTTP請求。匿名代理是一種比較豐富的資源,花幾天時間獲取代理並不是難事,因此攻擊容易發起而且可以長期高強度的持續。
另一方面,HTTPFlood攻擊在HTTP層發起,極力模仿正常用戶的網頁請求行為,與網站業務緊密相關,安全廠商很難提供一套通用的且不影響用戶體驗的方案。在一個地方工作得很好的規則,換一個場景可能帶來大量的誤殺。
HTTP Flood攻擊防御主要通過緩存的方式進行,盡量由設備的緩存直接返回結果來保護後端業務。大型的互聯網企業,會有龐大的CDN節點緩存內容。
當高級攻擊者穿透緩存時,清洗設備會截獲HTTP請求做特殊處理。最簡單的方法就是對源IP的HTTP請求頻率做統計,高於一定頻率的IP地址加入黑名單。這種方法過於簡單,容易帶來誤殺,並且無法屏蔽來自代理服務器的攻擊,因此逐漸廢止,取而代之的是JavaScript跳轉人機識別方案。
HTTPFlood是由程序模擬HTTP請求,一般來說不會解析服務端返回數據,更不會解析JS之類代碼。因此當清洗設備截獲到HTTP請求時,返回一段特殊JavaScript代碼,正常用戶的浏覽器會處理並正常跳轉不影響使用,而攻擊程序會攻擊到空處。
10.sql注入
SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務器執行惡意的SQL命令。在某些表單中,用戶輸入的內容直接用來構造(或者影響)動態SQL命令,或作為存儲過程的
輸入參數,這類表單特別容易受到SQL注入式攻擊。
例如:登錄的sql語句
SELECT COUNT(*) FROM Login WHERE UserName='{0}' AND Password='{1}'
當輸入正常的賬號密碼 admin 123456
SELECT COUNT(*) FROM Login WHERE UserName='admin' ANDPassword='123456' 正常登入
如果輸入admin’ -- 隨便輸入密碼
SELECT COUNT(*) FROM Login WHERE UserName='admin'-- Password='123' 由於--後面的語句被注釋忽略而登錄成功
11.上傳文件限制
通過圖片上傳上傳木馬程序。攻擊者可將木馬程序改名為**.jsp文件上傳。
有的網站,其後台管理中可以恢復/備份數據庫,這會被黑客用來進行圖片木馬入侵。
圖片木馬入侵過程如下:首先將本地木馬(例如F:\labxw\xiaomm.asp)擴展名改為.gif,然後打開上傳頁面,上傳這個木馬(例如F:\labxw\xiaomm.gif);再通過注入法拿到 後台管理員的賬號密碼,溜進網站後台管理中,使用備份數據庫功能將.gif木馬備份成.asp木馬(例如xiaomm.asp),即在“備份數據庫路徑(相對)”輸入剛才圖片上傳後得到 的路徑,在“目標數據庫路徑”輸入:xiaomm.asp,提示恢復數據庫成功;現在打開IE,輸入剛才恢復數據庫的asp路徑,木馬就能運行了。