服务扫描
识别开放端口上运行的应用
- 识别目标操作系统
- 提高攻击的效率(Banner捕获、服务识别、操作系统识别、SNMP分析、防火墙识别)
Banner
获取包括
- 软件开发商
- 软件名称
- 服务类型
- 版本号(直接发现已知的漏洞和弱点)
获取方式
- 连接建立后直接获取banner
nc命令
nc -nv 目标IP 目标端口
# 获取网页的banner信息
nc -nv 192.168.147.137 80
get
python脚本
使用socket模块(scapy模块无法用于应用层通信)
# 导入socket
python3
socket
# AF_INET socket连接建立标注怒
# SOCK_STREAM 建立TCP连接
banner = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 指定连接的IP和端口号
banner.connect(("192.168.147.137",21))
# 指定返回的数据包大小
banner.recv(4096)
# 关闭socket连接
banner.close()
metasploitable2.0FTP回包信息
python脚本形式
抓包可以成功发现开放端口,无显示
#!/usr/bin/python3
import socket
import select
import sys
if len(sys.argv)!=4:
print("Example - ./banner_grab.py 192.168.1.1 1 100 ")
sys.exit()
ip = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])
for port in range(start,end):
try:
banner = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
banner.connect((ip,port))
ready = select.select(banner,[],[],1)
# 表示没有被挂起
if ready[0]:
print("TCP Port " + str(port) + ' - ' + banner.recv(4096))
banner.close()
except:
pass
注意:很多系统不允许Banner被抓取,导致recv函数将被挂起
dmitry命令
# -p 进行TCP扫描
# -b 获取扫描端口的banner信息
# 默认扫描常用的150个端口
dmitry -pb 192.168.147.137
nmap命令
- 使用nmap自带的banner获取脚本
- nmap脚本存放:/usr/share/nmap/scripts/(Luna编写)
# -p 指明端口范