服务扫描
• 识别开放端口上运行的应用
• 识别目标操作系统
• 提高攻击效率
• Banner 捕获
• 服务识别
• 操作系统识别
• SNMP 分析
• 防火墙识别
服务扫描
• Banner
• 软件开发商
• 软件名称
• 服务类型
• 版本号
• 直接发现已知的漏洞和弱点
• 连接建立后直接获取 Banner
• 另类服务识别方法
• 特征行为和响应字段
• 不同的响应可用于那个与识别底层操作系统
SNMP
• 简单网络管理协议
• Community Strings
• 信息查询或重新配置
• 识别和绕过防火墙筛选
服务扫描————Banner
nc -nv ip port
Python socket
• socket 模块用于连接网络服务
• import socket
• bangrab = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
• bangrab.connect(("192.168.1.1",21))
•bangrab.recv(4096) //recv()接收数据
>'220(vsftpd 2.3.4)\r\n'
• bangrab.close() //关闭对象
• exit()
• 有些系统或软件 Banner 不允许抓取,recv 函数无返回将挂起
• ./ban_grab.py 192.168.1.1 1 100
banner_grab.py
#!/usr/bin/python
import socket
import select
import sys
if len(sys.argv) != 4:
print "Usage ./banner_grab.py [target-ip] [first port] [last port]"
print "Example ./banner_grab.py 192.168.1.1 1 100"
print "EXample will grab banners for TCP ports 1 though 100 on 192.168.1.1"
exit()
ip = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])
for port in range(start,end):
try:
bangrab = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
bangrab.connect((ip,port))
ready = select.select([bangrab],[],[],1)
if ready[0]:
print "TCP Port" + str(port) + "-" + bangrab.recv(4096)
bangrab.close()
except:
pass
服务扫描————Banner
• dmitry -p 172.16.36.135
• dmitry -pb 172.16.36.135
• nmap -sT 1.1.1.1 -p 22 --script=banner
服务扫描————Banner
• amap -B 172.16.36.135 21
• amap -B 172.16.36.135 1-65535
• amap -B 172.16.36.135 1-65535 | grep on
服务扫描————服务识别
-
Banner 信息抓取能力有限
-
nmap 响应特征分析识别服务
-
发送系列复杂的嗅探
-
依据响应特征 signature
nc -nv ip port
nmap ip -p port -sV
• amap 192.168.1.134 80
• amap 172.16.36.135 20-30
• amap 172.16.36.135 20-30 –q
• amap 172.16.36.135 20-30 -qb
操作系统识别
-
操作系统识别技术
-
种类繁多
-
好产品采用多种技术组合
-
TTL 起始值
-
WIndows:128(65~128)
-
Linux/Unix:64(1-64)
-
某些 UNix:255
nmap 使用多种技术识别操作系统
-
nmap 192.168.1.1 -O
-
系统服务特征
• xprobe2 1.1.1.1
• 结果有误差
-
被动操作系统识别
-
IDS
-
抓包分析
-
被动扫描
-
p0f:监听流量,分析数据包,猜测目标操作系统(命令:p0f)
-
结合 ARP 地址欺骗识别全网 OS
SNMP 扫描
snmp:(简单网络管理协议),服务端一般为 UDP161,客户端 162 端口;明文传输
-
snmp
-
信息的金矿
-
经常被错误配置
-
public/private/manager
-
MIB Tree
-
SNMP Management Information Base (MIB)
-
树形的网络设备管理功能数据库
-
1.3.6.1.4.1.77.1.2.25
-
onesixtyone 1.1.1.1 public
-
onesixtyone -c dict.txt -i hosts -o my.log -w 100(i:主机列表文件)
• snmpwalk 192.168.20.199 -c public -v 2c (c:community,v:smp版本)
• 用户
• snmpwalk -c public -v 2c 1.1.1.1 1.3.6.1.4.1.77.1.2.25(oid)
• snmpcheck -t 192.168.20.199
• snmpcheck -t 192.168.20.199 -c private -v 2
• snmpcheck -t 192.168.20.199 -w
Server Message Block 协议(服务器消息块)
常用端口 139、445
-
微软历史上出现安全问题最多的协议
-
实现复杂
-
默认开放
-
文件共享
-
空会话未身份认证访问(SMB1)
-
密码策略
-
用户名
-
组名
-
机器名
-
用户、组 SID
版本 | 操作系统 |
---|---|
SMB1 | Windows 2000/xp/Windows 2003 |
SMB2 | Windows Vista SP1/Windows 2008 |
SMB2.1 | Win 7/Windows 2008 R2 |
SMB3 | Win 8/Windows 2012 |
• nmap -v -p139,445 192.168.60.1-20
• nmap 192.168.60.4 -p139,445 --script=smb-os-discovery.nse
• nmap -v -p139,445 --script=smb-check-vulns --script-args=unsafe=1 1.1.1.1
• nbtscan -r 192.168.60.0/24
• enum4linux -a 192.168.60.10
• nc -nv 1.1.1.1 25 • VRFY root
• nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smtp-enumusers.methods={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
SMTP 扫描
通常运行在 25 端口
• nc -nv 1.1.1.1 25
• VRFY root
• nmap smtp.163.com -p25 --script=smtp-enum-users.nse --script-args=smtp-enumusers.methods={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 "Usage smtp.py ,<username>"
sys.exit(0)
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
connect = connect(("192.168.1.1",25))
banner = s.recv(1024)
print banner
s.send("VRFY" + sys.argv[1] + '\r\n')
result = s.recv(1024)
print result
s.close()
##防火墙识别
-
通过检查回包,可能是别端口是否经过防火墙过滤
-
设备多种多样,结果存在一定误差
Send | Response | Type |
---|---|---|
SYN | NO | Filtered |
ACK | RST | Filtered |
Syn | SYN+ACK/SYN+RST | Filtered |
ACK | NO | Filtered |
SYN | SYN+ACK/SYN+RST | Unfiltered/OPEN |
ACK | RST | Unfiltered/OPEN |
SYN | NO | CLosed |
ACK | NO | CLosed |
防火墙识别
-
nmap 有系列防火墙过滤检测功能
-
nmap -sA 192.168.1.1 -p 22
负载均衡识别
分为广域网负载均衡和服务器负载均衡
- 广域网负载均衡原理为 DNS 轮询,一个域名解析到多个 IP;智能 DNS,链路质量判断
• HTTP-Loadbalancing
• Nginx
• Apache
- loading balancing detector
• lbd www.baidu.com
• lbd mail.163.com
WAF 识别
- WEB 应用防火墙
• wafw00f -l (l:列出能检测的WAF)
• wafw00f http://www.microsoft.com
• nmap www.microsoft.com --script=http-waf-detect.nse
nmap 的常用参数
主机发现
* iR(num hosts):choose random target
* --exclude [host1] [host2]:不扫这些地址/网络
* sL:相当于计算子网掩码功能
* Pn:有防火墙的时候应用,扫主机
* PS/PA/PU/PY:分别为TCP:SYN/ACK、UDP、SCTP发现端口
* PE/PP/PM:icmp echo、timestamp、netmask
* PO:ip扫描
* n:不做dns解析
* --dns-server:用指定的dns服务器
* --traceroute:路由追踪
端口发现
nmap 默认用 syn 扫描
* sU:UDP扫描
* sI [zombie host]:Idle scan
* b [ftp relay host]:ftp bounce scan
* -p U: :UDP -p T: :TCP
* F:fast mode,
* r:连续扫描
服务扫描
* sV:nmap利用集成的特征库进行匹配
##Firewall/IDS EVASION AND SPOOF
* D [decoy1] [decoy2] [decoy3]...:伪造更多的IP地址去扫描目标,从而隐蔽自己的地址
* S [ip1] [dst.ip]:欺骗源地址,同时会建议你加e参数指定网络接口
* g [port]:欺骗源端口
* --proxies [url1] [url2] [url3] ...:使用代理
* --data [ hex string]:增加data字段(必须为16进制数)
* --data-string [string]:ASCII string
* --spoof-mac [mac address]:欺骗mac
* badsum:check sum差错校验,发送不完整包
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于