前言
发现开放端口后,通过识别端口上运行的应用,以及识别目标操作系统,可以提高攻击效率
主要是通过获取banner信息
可以得到:
- 软件开发商
- 软件名称
- 服务类型
- 版本号
方法:
- 连接建立后直接获取banner
- 特征行为和响应字段,不同响应可用于识别底层操作系统
1、nc
强大的nc工具可以直接通过建立连接获取banner
nc -nv 1.1.1.1 22 #用nc可能可以建立连接然后获取banner
但不断建立连接行为会比较可疑
2、socket
socket脚本是个很好用的办法
脚本
ban_grab.py
#!/usr/bin/python
import socket
import selcet
import sys
if len(sys.argv)!=4:
print("Example: ./ban_grab.py 1.1.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) #socket.AF_INET表示IPv4,socket.SOCK_STREAM表示TCP
banner.connect((ip,port))
ready=select.select([banner],[],[],1) #连接时间间隔1s
if ready[0]:
print("TCP port "+str(port)+"-"+banner.recv(4096) #接收数据,括号里是数据大小
banner.close() #关闭,这个不能忘
except:
pass #有些banner不允许抓取,recv就会被挂起
3、dmitry指令
dmitry了解下就好
dmitry -pb 1.1.1.1 #-p执行TCP,-b进行端口扫描,有默认常用端口
4、nmap指令
nmap很强大,包含的脚本也很多,可以自己去熟悉
nmap -sT -p 1-200 192.168.247.129 --script=banner.nse #nmap中有大量脚本
5、amap指令
amap是专门为了服务扫描开发出来的,但得到的信息比nmap粗略点
amap专门为了服务扫描开发出来,但得到的信息比nmap粗略
amap -B 1.1.1.1 21 #-B发现端口上banner信息
amap 1.1.1.1 21 -q #-q整理信息
结语
服务扫描主要是怕网络管理员把一些服务的端口给改了
但大多数情况都是默认端口
识别服务后可以根据服务漏洞进行攻击
下一节是操作系统识别