kali linux端口和服务扫描
端口扫描
端口对应网络服务及应用端程序
服务端程序的漏洞通过端口攻入
发现开放的端口
更具体的攻击面
udp端口扫描
如果目标系统不响应icmp就可能产生误判
完整的udp扫描,准确性高,耗时巨大
端口关闭:端口不可达
端口开放:没有回包
了解每一种基于udp应用层包结构很有帮助
与三层相同的技术
误判
scapy
sr1(IP(dst="1.1.1.1")/UDP(dport=53),timeout=1,verbose=1)
./udp_scan.py 1.1.1.1 100
nmap
nmap -sU 192.168.1.104
其中有默认的1000个端口
nmap -sU 192.168.1.104 -p53(指定端口)
nmap -sU 192.168.1.104 -p-(1-65535)
nmap -iL iplist.txt -sU -p 1-200
tcp端口扫描
基于链接的协议
三次握手
隐蔽扫描
僵尸扫描(比隐蔽扫描更隐蔽,不和目标直接联系)
全链接扫描
所有的TCP扫描方式都是基于三次握手的变化,来判断端口的状态
隐蔽扫描----syn
不建立完整连接
应用日志不记录扫描行为
僵尸扫描
极度隐蔽
实施条件苛刻
可伪造源地址
选择僵尸机,闲置系统,系统使用递增的IPID(0,随机,这些都不行)
隐蔽端口扫描
Syn----syn/ack-----rst
scapy
1.a=sr1(IP(dst="192.168.1.110")/TCP(flags="S"),timeout=1,verbose=1)
or:a=sr1(IP(dst="192.168.1.110")/TCP(flags="S",dport=22),timeout=1,verbose=1)
2../syn_scan.py(脚本运行命令)
nmap(强大的扫描工具)
nmap -sS 1.1.1.1 -p1-100 --open
nmap -sS 1.1.1.1 -p 1-65535 --open
nmap -sS -iL iplist.txt -p 80,22,23,21
nmap -sS 1.1.1.1 -p- --open
hping3
hping3 1.1.1.1 --scan 80 -S (发syn包)
hping3 1.1.1.1 --scan 80,21,25,443 -S
hping3 1.1.1.1 --scan 0-65535 -S
hping3 -c 10 -S -spoof 1.1.1.2 -p ++1 1.1.1.3 (-c 10 -S 表示发10个syn包,地址欺骗将1.1.1.1的地址改为1.1.1.2,目标为1.1.1.3,-p ++1和前面的10表示每次端口+1从1-10扫描这十个端口,这样必须要登陆1.1.1.2这台电脑抓包才能看到扫描结果)
全连接端口扫描(不隐蔽,可在过滤严格的条件下扫描)
scapy
syn扫描不需要raw packets
内核认为syn/ack是非法包,直接发rst中断连接
全连接扫描对scapy比较困难
a=sr1(IP(dst="192.168.1.110")/TCP(dport=22,flags="S"))
namp
nmap -sT 1.1.1.1 -p 80
nmap -sT 1.1.1.1 -p 80,21,25
nmap -sT 1.1.1.1 -p 80-2000
nmap -sT -iL iplist.txt -p 80
默认1000个常用端口
dmitry
功能简单但使用简便
默认150个最常用的端口
dmitry -p 192.168.1.110
dmitry -p 192.168.1.110 -o output
nc
nc -nv -w 1 -z 192.168.1.110 1-100(定义超时时间为1秒,-z表示扫描)
for x in $(seq 20 30);do nc -nv
for x in $(seq 20 30); do nc -nv -w 1 -z 1.1.1.$x 80;done
僵尸扫描:闲置机不用完全限制,只要没有三层的IP通信就可以。
xp之前的电脑符合要求,现在的操作系统不行。
scapy----zonbie.py
只有scapy和nmap支持僵尸扫描
1.i=IP()
2.t=TCP()
3.rz=(i/t) (向僵尸机发的数据包)
4.rt=(i/t) (向目标机发的数据包)
5.rz[IP].dst="僵尸机地址"
6.rz[TCP].dport=445 (僵尸机开放的端口)
7.rz[TCP].flags="SA" (syn+ack包)
8.rt[IP].src="僵尸机地址"
9.rt[IP].dst="目标机地址"
10.rt[TCP].dport=25 (目标机要扫描的端口)
11.rt[TCP].flags="S"
12.az1=sr1(rz)
13.ar=sr1(rt,timeout=1)
14.az2=sr1(rz)
15.az1 (显示包)
16.az2 (比较ipid 如果加了2表示开启如果加了1表示没有开启)
nmap
发现僵尸机
nmap -p445 1.1.1.1 --script=ipidseq.nse
扫描目标
nmap 本机ip -sI 僵尸ip -Pn -p 0-100
服务扫描
识别端口上运行的应用
识别目标操作系统
提高攻击效率
banner捕获
服务识别 (识别软件版本,找漏洞进行针对性攻击)
操作系统识别 (操作系统自带服务也有可能有漏洞)
snmp分析
防火墙识别
banner信息
软件开发商
软件名称
服务类型
版本号
直接发现已知的漏洞和弱点
链接建立后直接获取banner
另类服务识别方法
特征行为和响应字段
不同的响应可用于识别底层操作系统
snmp
简单网络管理协议
community strings (身份认证信息)
信息查询或重新配置
识别和绕过防火墙筛选
服务扫描----banner
nc
1.nc-nv 1.1.1.1 22 (22是端口号可以识别ssh的一些信息)
2.get /
python socket
socket模块用于网络连接服务
1.python
2.import socket
3.banner=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
4.banner.connect(("192.168.1.110",21))
5.banner.recv(4096) (接收数据,指定数据大小为4096)
6.banner.close()
7.exit()
banner如果不允许抓取,recv函数无返回将挂起。需要通过脚本来运行
dmitry
dmitry -p 192.168.1.110
dmitry -pb 192.168.1.110
nmap
nmap -sT 1.1.1.1 -p 22 --script=banner
nmap -sT 1.1.1.1 -p1-100 --script=banner.nse
amap
amap -B 192.168.1.110 21
amap -B 192.168.1.110 1-65535
amap -B 192.168.1.110 1-65535 | grep on
服务扫描----服务识别
banner信息抓取能力有限
nmap相应特征分析识别服务
发送系列复杂的探测
根据相应特征signature
nc -nv 1.1.1.1 80
nmap 1.1.1.1 -p 80 -sV (经常用到,准确度高)
amap
amap 192.168.1.110 80
amap 192.168.1.110 1-100 (-q)加上-q让信息更整齐
amap 192.168.1.110 1-100 -qb 信息更详细
今天本来还想学一个新漏洞呢,但是学了一半时间不够了,只能等到明天了。