前言
操作系统安装后默认会有些端口开放
通过识别操作系统
可以根据其版本的自带的漏洞进行攻击
1、TTL起始值
- win:128
- linux:64
- 某些unix:255
可以通过TTL值来判断系统是什么
一些方法如下
scapy
脚本
ttl_os.py
#!/usr/bin/python
import logging
from scapy.all import *
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
import sys
if len(sys.argv)!=2:
print("Example: ./ttl_os.py 1.1.1.1")
sys.exit()
ip=sys.argv[1]
ans=sr1(IP(dst=str(ip))/ICMP(),timeout=1,verbose=0)
if ans==None:
print("No reponse")
elif int(ans[IP].ttl)<=64:
print("Host is Linux/Unix")
else:
print("Host is Windows")
nmap
nmap 1.1.1.1 -O #可以得到及其详细的系统信息
xprobe
xprobe2 1.1.1.1
2、snmp
经常被错误配置
树形网络设备管理功能数据库MIBTree (management information base)
1.3.6.1.4.1.77.1.2.25
161
onesixtyone 1.1.1.1 public #信息不多,但是会有一些神奇的信息
onesixtyone -c dict.txt -i hosts -o my.log -w 100 #-c指定字典,-i指定hosts
snmpwalk
snmpwalk 1.1.1.1 -c public -v 2c #-v指定version
snmpwalk 1.1.1.1 -c public -v 2c 1.3.6.1.4.1.77.1.2.25
snmpcheck
snmpcheck -t 1.1.1.1 #可读性比snmpwalk好
snmpcheck -t 1.1.1.1 -c private -v 2 #-c指定不同的community
cnmpcheck -t 1.1.1.1 -w #-w是write权限
3、SMB扫描
server message block协议
- 微软默认开放的协议
- 用来文件共享
- 实现过程复杂
- 历史上出现安全问题最多
可以用来判断是否windows系统
nmap -v -p139,445 1.1.1.1-24 --open #--open筛选出开放的139和445端口,来判断是不是windows,但结果不一定准确
nmap -v -p139,445 1.1.1.1 --script=smb-os-discovery.nse #用脚本来发现更准确
nmap -v -p139,445 --script=smb-check-culns --script-args=unsafe=1 1.1.1.1 #用已知的smb的漏洞来扫描,unsafe参数会对系统造成破坏
#建议自己查看脚本,熟悉脚本
nbtscan -r 192.168.1.0/24 #兼容性好,win95/win98
enum4linux -a 192.168.1.133 #不支持子网掩码,但比上面信息详细
4、SMTP扫描
来发现目标系统的邮箱账号
nc -nv 1.1.1.1 25
nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smip-enum-users.methods=[VRFY] #VRFY是扫描方式
nmap smtp.163.com -p25 --script=smtp-open-relay.nse
smtp-user-enum -M VRFY -U users.txt -t 10.0.0.1
脚本
smtp.py(这个脚本不完善,缺少开头打招呼)
#!/usr/bin/python
import socket
import sys
if len(sys.argv)!=2:
print("Example: ./smtp.py <username>")
sys.exit(0)
s=socket.socker(socket.AF_INET,socket.SOCK_STREAM)
connect=s.connect(("smtp.163.com",25))
banner=s.recv(1024)
print(banner+"aaaaaa")
s.send("VRFY"+sys.argv[1]+"\r\n")
result=s.recv[1024]
print(result)
s.close()
结语
识别操作系统可以根据操作系统的漏洞进行攻击
尤其是SMB,非常好用
下一节是防火墙识别