目的:實現(xiàn)局域網(wǎng)內的主機掃描
成都創(chuàng)新互聯(lián)公司是一家網(wǎng)站建設、網(wǎng)站制作,提供網(wǎng)頁設計,網(wǎng)站設計,網(wǎng)站制作,建網(wǎng)站,按需求定制設計,網(wǎng)站開發(fā)公司,2013年至今是互聯(lián)行業(yè)建設者,服務者。以提升客戶品牌價值為核心業(yè)務,全程參與項目的網(wǎng)站策劃設計制作,前端開發(fā),后臺程序制作以及后期項目運營并提出專業(yè)建議和思路。使用kali對局域網(wǎng)主機進行掃描時候,arping命令只能挨個挨個ip的掃描,下面寫一個簡單的腳本實現(xiàn)批量掃描
root@kal:~/scan# vim arping.sh
#! bin/bash
if [ $# -ne 1 ];then
echo "Tips Example: ./arping 10.10.10"
exit
fi
prefix=$1
for i in $(seq 1 254);do
{
ip=$prefix.$i
arping $ip -c 1 | grep "reply from" | awk -F" " '{print $4}'
}& #這里是實現(xiàn)多進程掃描,用時非常短,可以嘗試不加 & 符號,沒有對比沒有傷害嘛!
done
缺點:不能路由
1) root@kal:~# netdiscover -p
隱藏掃描,也就是通過嗅探局域網(wǎng)中主機的數(shù)據(jù)發(fā)送判斷主機是否存活,隱蔽性比較好,但是,如果主機存活,沒有數(shù)據(jù)交互那么這個命令就掃描不到
2) root@kal:~/scan# netdiscover -i eth0 -r 10.10.10.0/24
主動掃描,-i 設置網(wǎng)卡,-r 設置掃描范圍
已經(jīng)寫過,有興趣可以去這里看看 https://blog.51cto.com/13155409/2129980
root@kal:~/scan# nmap -sn 10.10.10.0/24
直接可以實現(xiàn)批量掃描。-sn表示不掃描端口
root@kal:~/scan# ping 10.10.10.12
同樣只能單個主機掃描
編寫腳本實現(xiàn)多個ip掃描
#!/bin/bash
if [ $# -eq 0 ];then
echo "useage ./pinger [/24 network address] "
echo "Example ./pinger.sh 172.16.15"
exit
fi
prefix=$1
for addr in $(seq 1 254)
do
ping $prefix.$addr -c 1|grep "bytes from"|awk -F" " '{print $4}'|cut -d":" -f 1
done
##三、 四層主機發(fā)現(xiàn)##
優(yōu)點:
可路由并且結果可靠
不太可能被防火墻過濾
甚至可以發(fā)現(xiàn)所有端口都被過濾的主機
缺點:
基于狀態(tài)過濾的防火墻可能過濾掃描
全端口掃描速度慢
TCP:
未經(jīng)過請求的ACK——RST
SYN——SYN/ACK、RST
UDP:
ICMP端口不可達,一去不復返
掃描原理:在沒有與目標主機直接建立三次連接時,直接發(fā)送ACK包,那么目標主機就會返回一個RST,通過這種方式判斷主機的存活。不過這個并不是完全正確的,也存在特例,主機存在,但是不會返回RST包。
>>> IP().show() #交互界面查看IP需要設置參數(shù)
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= hopopt
chksum= None
src= 127.0.0.1
dst= 127.0.0.1
\options\
>>> TCP().show() #交互界面查看TCP所需參數(shù)
###[ TCP ]###
sport= ftp_data
dport= http #設置目的端口(判斷主機存活時,可以隨便設置,不管目標端口是否存在,都會返回一個RST)
seq= 0
ack= 0
dataofs= None
reserved= 0
flags= S #將這里設置成A,表示發(fā)送ACK包
window= 8192
chksum= None
urgptr= 0
options= {}
發(fā)送一個存活主機,但是端口不存活的
a1 = sr1(IP(dst='10.10.10.13')/TCP(dport=1111,flags='A'),timeout=1,verbose=0)
a1.show()
###[ IP ]###
version= 4L
..............
\options\
###[ TCP ]###
sport= 1111 #如果端口存活,會返回相應的服務名稱
dport= ftp_data
................
urgptr= 0
options= {}
###[ Padding ]###
load= '\x00\x00\x00\x00\x00\x00'
發(fā)送一個存活主機,端口也存活的
a1 = sr1(IP(dst='10.10.10.13')/TCP(dport=111,flags='A'),timeout=1,verbose=0)
a1.show()
###[ IP ]###
version= 4L
.........
src= 10.10.10.13
dst= 10.10.10.11
\options\
###[ TCP ]###
sport= sunrpc #端口存活的話,會返回服務名稱
dport= ftp_data
......
urgptr= 0
options= {}
###[ Padding ]###
load= '\x00\x00\x00\x00\x00\x00'
發(fā)送給一個不存活主機
a1 = sr1(IP(dst='10.10.10.133')/TCP(dport=1111,flags='A'),timeout=1,verbose=0)
WARNING: Mac address to reach destination not found. Using broadcast.
不會得到任何回應
————————————————————————————————
利用腳本實現(xiàn)ACK的掃描如下:
#!/usr/bin/python
#!encoding=utf-8
from scapy.all import *
import sys
import time
def scanf(ip):
response = sr1(IP(dst=ip)/TCP(flags='A',dport=80),timeout=0.1,verbose=0) #三層和四層結合,構造包
if(response):
print ip
def ip_range(prefix):
try:
for addr in range(20):
ip = prefix + '.' + str(addr)
scanf(ip)
except KeyboardInterrupt:
print
exit
def main():
try:
prefix = raw_input('請輸入ip段:')
prefix = prefix.split('.')[0:3]
ip = prefix[0]+'.'+prefix[1]+'.'+prefix[2]
ip_range(ip)
except KeyboardInterrupt:
print "\n*********1.重新輸入"
print "*********2.退出\n"
choice = int(raw_input('******請輸入您的選擇:'))
if choice == 1 | choice != 2:
print "\n"
main()
else:
exit()
if __name__ == "__main__":
main()
掃描原理: 利用發(fā)送的數(shù)據(jù)包到主機上,如果主機的存活并且目標端口不存活才會返回一個ICMP不可達,否則發(fā)送的UDP就會一去不復返(如:目標主機不存在、目標主機存在并且端口開放)
【目標主機存在但是端口不是存活狀態(tài)】
a1 = sr1(IP(dst='10.10.10.12')/UDP(dport=12345),timeout=1)
Begin emission:
...Finished to send 1 packets.
*
Received 4 packets, got 1 answers, remaining 0 packets #收到 1個回復
【目標主機存在,并且端口存活】
a1 = sr1(IP(dst='10.10.10.12')/UDP(dport=445),timeout=1)
Begin emission:
.Finished to send 1 packets.
.........
Received 10 packets, got 0 answers, remaining 1 packets #收到 0個回復
【目標主機不存在】
a1 = sr1(IP(dst='10.10.10.123')/UDP(dport=445),timeout=1)
Begin emission:
............WARNING: Mac address to reach destination not found. Using broadcast.
Finished to send 1 packets.
.........
Received 21 packets, got 0 answers, remaining 1 packets #收到 0個回復
實現(xiàn)腳本可以通過修改上面的腳本實現(xiàn)。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文標題:安全牛學習——主機發(fā)現(xiàn)-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://jinyejixie.com/article42/icjhc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站設計公司、微信公眾號、網(wǎng)站策劃、響應式網(wǎng)站、微信小程序
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)