黑客利用Python和C實現syn flood攻擊
俗話說,知己知彼,百戰不殆。學習攻擊代碼的編寫邏輯,反向實現防攻是每一個運維工程師所要學習的。
了解SYN/ACK Flood 攻擊
這種攻擊方法是經典最有效的 DDOS 方法, 可通殺各種系統的網路服務, 主要是通過向
受害主機發送大量偽造源 IP 和源埠的 SYN 或 ACK 包,導致主機的緩存資源被耗盡或忙
於發送回應包而造成拒絕服務, 由於源都是偽造的故追蹤起來比較困難, 缺點是實施起來有
一定難度, 需要高帶寬的殭屍主機支持。 少量的這種攻擊會導致主機伺服器無法訪問, 但卻
可以 Ping 的通, 在伺服器上用 Netstat -na 命令會觀察到存在大量的 SYN_RECEIVED 狀態,
大量的這種攻擊會導致 Ping 失敗、TCP/IP 棧失效,並會出現系統凝固現象,即不響應鍵盤
和滑鼠。普通防火牆大多無法抵禦此種攻擊。
HOSTSPACE 把python和c的源碼都發出來,如果是學習就用python的代碼,更方便修改其中的內容,如果是做壓力測試的話就用c的代碼,性能比較好威力也比較大。
python攻擊代碼
環境:ubuntu/kali +python 2.7.11
使用方法如下:mode有三種模式 syn攻擊、ack攻擊、混合攻擊,多個線程反而不如單線程快。
i7-6700單線程的速度如下。cpu1已經使用89%了
看一下抓包情況吧,因為只是測試用我也沒帶tcp的options欄位,報文長度也不夠64位元組,不過也能傳到目的地址。
下面是代碼:
C語言攻擊代碼
環境:ubuntu/kali gcc version 6.1.1 20160802 (Debian 6.1.1-11)
使用方法:支持兩個參數 目的ip和目的埠
性能:限制發包速度的是帶寬(我這是100M的網,除去報文的前導碼和幀間隔極限速度差不多就是9m左右了),cpu利用才27%,我在1000Mbps的網速下測試,單線程的話速度能到40m左右,cpu佔用率大約85%左右。所以說在這件事上(syn flood)C的性能要好過python10倍以上。
抓包情況:c的攻擊代碼模擬了真實的chrome發起tcp請求的情況,不僅僅是標準的ip頭+tcp頭還加上了tcp options欄位,mss最大段大小、sack選擇確認、window scale 窗口規模因子,大小總共66位元組。
C語言代碼:各位可以拿去在修改修改,計算校驗和的部分是我在網上抄來的,產生隨機數的種子srand不能用time(),這樣會造成很多報文隨機數部分重複(時間精度是秒),我用的是clock(),這是cpu時間隨機數每個都不會重複。pstcphdr是tcp的偽首部,只參與計算校驗和而不真的發送,代碼中用了linux定義好的Ip.h和tcp.h中的結構,這可能是程序比較快的原因之一。
0×04 結語
還有些注意事項,就是測試的時候不要通過家用路由器(或者一切NAT設備),不然偽造的源地址全都會被替換成真實的,如果你帶寬大的話c語言那個攻擊代碼威力還是很大的,我測試環境下發包30MB/s,能讓一台空閑的雙路E5+32G 的web伺服器拒絕服務,也能讓同等配置的DNS伺服器拒絕服務(DNS 伺服器一般也會開放TCP 53埠)。所以各位不要亂去攻擊別人,通常運維攻城獅會掌握一定的攻擊代碼編寫邏輯和思路,以便反向防攻和測試伺服器抗壓能力。
點擊展開全文
※Python內置數據結構之迭代器知多少?
※Day 5 Python數據運用的初級水準,你達到了嗎?
※學Python語言到底好不好?
※Python還能用來做這個?只要你想,就有這種操作!
※退伍兵想年薪十萬,學Python,是首選
TAG:Python |