三层发现
优先:可路由,速度比较快
缺点:速度比二层慢,经常被边界防火墙过滤
协议:IP、icmp (二层发现主要是利用arp协议)
1、ping
ping 192.168.1.1 -c 2
ping - R 192.168.1.1 / traceroute 192.168.1.1
ping 192.168.1.1 -c 1 | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1
2、scapy
3、nmap (同网段发arp包,不同网段发icmp包)
nmap -sn 192.168.1.1-254
4、fping
fping 192.168.1.1 -c 1
fping -g 192.168.1.1 192.168.1.2 (起始IP 结束IP)
fping -g 192.168.1.0/24
5、hping
几乎能发送任意的Tcp/IP包,功能强大,但每次只能扫描一个IP
hping3 192.168.1.1 --icmp -c 2
四层发现--------(主要识别网络中存活的主机,比三层识别更准确,基于端口)
优点:可路由且结果可靠,不太能被防火墙过滤,甚至可以发现所有端口都被过滤的主机
缺点:基于状态过滤的防火墙可能过滤扫描,全端口扫描速度慢
协议:
TCP:
未经请求的ACK-------------RST
SYN-----------------SYN/ACK、RST
UDP:ICMP端口不可达,一去不复返
1、scapy----------目标IP存在则有 返回包,若目标IP不存在,则什么都不返回
构造TCP包
>>> i=IP()
>>> t=TCP()
>>> r=(i/t)
>>> r[IP].dst="192.168.1.20"
>>> r[TCP].flags="A"
>>> r.display()
成功后的截图
不成功的截图
2、nmap
nmap 192.168.1.1-254 -PU53 -sn------------------------U表示UDP端口
nmap 192.168.1.1-254 -PA80 -sn
nmap -iL iplist.txt 192.168.1.1-254 -PA80 -sn
3、hping3
hping3 --udp 192.168.1.1 -c 1
三、端口扫描
nmap
UDP端口
nmap -sU 192.168.1.0/24 / 192.168.1.1
nmap -sU -p1-65535 192.168.1.0/24
nmap -iL iplist.txt -sU -p1-65535
TCP扫描
隐蔽扫描
不建立完整链接----也就是不建立三次握手,应用日志不记录扫描行为---------隐蔽
1、nmap -sS 192.168.1.10--------隐蔽扫描
2、hping3 192.168.1.1 --scan -----------隐蔽扫描
hping3 -c 10 -S --spoof 192.168.1.1 -p ++1 192.168.1.20
扫描10个端口 ,将源地址伪造成192.168.1.1 端口没扫描一次+1 目标地址是192.168.1.20,扫描结果需要登陆192.168.1.1的主机上才能查看扫描结果
3、scapy
a=sr1(IP(dst="192.168.1.1")/TCP(flags="S" ,dport=22),timeout=1,verbose=0)
当flags = SA 时表示该IP端口是开放的
端口开放抓包显示结果:
端口不存在抓包显示的结果:(表示端口没有开放,ip是存活的)
脚本
#!/usr/bin/python
import logging
logging.getlogger("scapy.runtime").setlevel(logging.ERROR)
from scapy.all import *
import sys
if len(sys.argv) != 4:
print "Usage - ./syn_scan.py [Target IP] [First port ] [last port]"
print "Example - ./syn_scan.py 10.10.10.10 1 100"
print "Example will TCP SYN sacn 1 through 100 on 10.10.10.10"
sys.exit()
ip=sys.argv[1]
start=int(sys.argv[2])
end=int(sys.argv[3])
for port in range(start,end):
a=sr1(IP(dst=ip)/TCP(dport=port),timeout=1,verbose=0)
if a == None:
pass
else:
if int(a[TCP].flags) == 18:
print port
else:
pass
18的原因是截图如下:抓包看flags包在红色框起来的部分置1,则表示端口存活
全链接扫描:建立完整的三次握手,和隐蔽扫描相反
nmap -sT 192.168.1.1 ----------------------全连接端口扫描
dmitry -p 192.168.1.1 ------------------------全链接端口扫描
nc -nv -w 1 -z 192.168.1.1 1-100
僵尸扫描
极度隐蔽、实施条件苛刻、可伪造源地址、选择僵尸机(闲置系统、系统使用递增的IPID)
1、scapy
2、nmap
nmap -p445 192.168.1.20 --script=ipidseq.nse ------找出僵尸机
显示有如下信息,表示可以作为僵尸机
Host script results:
|_ipidseq: Incremental!
显示如下,表示不可以作为僵尸机:
Host script results:
|_ipidseq: All zeros
nmap 1 192.168.1.1 -sI 192.168.1.20 -Pn -p0-100------ 用僵尸机扫描主机
sI(i是大写)指定僵尸机的IP为192.168.1.20,目标主机的IP为192.168.1.1
四、服务扫描
识别开放端口上运行的应用,识别目标操作系统,提高攻击效率
banner捕捉------------------准确率低,只能作为一种参考,不能作为确切的依据
服务识别
操作系统识别
SNMP分析
防火墙识别
1、banner服务扫描
可以识别到:
软件开发商、软件名称、服务类型、版本号(直接发现已知的漏洞和弱点)
建立链接后直接获取banner
nc -nv 192.168.1.20 22
python
>>> import socke
>>> banner=socket.socket(socket.AF_INET.socket.SOCK_STREAM)
>>> banner.connect("192.168.1.1",80)
root@kali:~# dmitry -pb 192.168.1.20
root@kali:~# nmap -sT 192.168.1.20 -p 80 --script=banner.nse
root@kali:~# amap -B 192.168.1.20 80
root@kali:~# amap 192.168.1.20 80 -qb
2、snmp服务扫描
简单的网络管理协议
community strings
信息查询或或重新配置
识别和绕过防火墙筛选
工具:
onesixtyone 192.168.1.20 public
snmpwalk
五、操作系统识别
操作系统识别技术,种类繁多,好产品采用多种技术组合
TTL起始值
Windows:128(65----128)
Linux/Unix:64(1-64)
某些Unix:255
主动扫描
1、nmap 192.168.1.20 -O
2、xprabo2 192.168.1.20----------------结果不是很精确
被动扫描
p0f
六、SMB扫描
nmap 192.168.1.20 -p 80,135,139 --script=smb-os-discovery.nse
nmap -v -p139,445 --script=smb-check-vulns --script-args=unsafe=192.168.1.20
nbtscan -r 192.168.1.20---------兼容性较好
enum4linux -a 192.168.1.20
七、SMTP扫描(发现目标系统的邮件账号)
八、防火墙扫描
通过检测回包,可能识别端口是否经过防火墙过滤,设备多样化,结果存在一定的误差
nmap -sA 192.168.1.20
友情链接:
https://blog.csdn.net/weixin_34236869/article/details/92178652