第2章 网络攻击技术 指导教师:杨建国 2013年8月10日
第2章 网络攻击技术 2.1 信息收集技术 2.8 网络欺骗攻击 2.2 口令攻击 2.9 网络钓鱼攻击 2.3 缓冲区溢出攻击 2.4 拒绝服务攻击 2.5 web应用安全攻击 2.6 恶意代码攻击 2.7 病毒蠕虫与木马攻击 2.8 网络欺骗攻击 2.9 网络钓鱼攻击 2.10 假消息攻击 2.11 网络协议攻击 2.12 操作系统攻击 2.13 远程控制攻击
2.1 信息收集技术 信息收集必要性 信息收集的内容 信息收集的方式 信息收集的技术
网络信息收集的必要性 “知己知彼,百战不殆;不知彼而知己,一胜一负;不知彼,不知己,每战必殆。” ——孙膑《孙子兵法·谋攻篇》
网络信息收集的必要性 攻防对抗(博弈):对敌方信息的掌握是关键 攻击者 防御者 先发制人 收集目标信息 后发制人 对攻击者实施信息收集,归因溯源
网络信息收集的内容 网络攻击信息收集 入手点:目标名称和域名 攻击准备阶段 攻击实施阶段 在网络中的“地理位置”--DNS、IP地址 与真实世界的联系--单位地址 “网络地图”--网络拓扑 攻击所需的更详细信息--电话号码、网管员及联系方式等 攻击实施阶段 目标系统中存在的安全缺陷和漏洞 目标系统的安全防护机制
网络信息收集的内容 网络防御信息收集 追查入侵者的身份、网络位置、所攻击的目标、采用的攻击方法等 一般被归入取证与追踪技术范畴
网络信息收集的方式 信息收集的方式主要有两种,一种是通过网络搜索(搜索引擎、电驴共享软件、Foxy共享软件、网站、BBS以及Blog、扫描软件、网络监听)等手段来获取,另外一种就是利用社会工程学来获取。前一种方法收集的信息需要进行整理,并需要一定的自我判断力,往往跟经验有关,有些信息可以根据个人经验,依靠直觉来进行取舍。后一种利用社会工程学收集的信息,准确度较高,但实施有一定难度。
网络信息收集技术 网络踩点(Footprinting) 网络扫描(Scanning) 网络查点( Enumeration) Web搜索与挖掘 DNS和IP查询 网络拓扑侦察 网络扫描(Scanning) 主机扫描 端口扫描 系统类型探查 漏洞扫描 网络查点( Enumeration) 旗标抓取 网络服务查点
提纲 网络基础知识 网络信息收集技术概述 网络踩点技术 网络扫描技术 作业
网络踩点概要 踩点(footprinting) 踩点目的 有计划、有步骤的信息情报收集 了解攻击目标的网络环境和信息安全状况 得到攻击目标剖析图 踩点目的 通过对完整剖析图的细致分析 攻击者将会从中寻找出攻击目标可能存在的薄弱环节 为进一步的攻击行动提供指引
网络踩点的信息 目标组织 目标个人 具体使用的域名 网络地址范围 因特网上可直接访问的IP地址与网络服务 网络拓扑结构 电话号码段 电子邮件列表 信息安全状况 目标个人 身份信息、联系方式、职业经历,甚至一些个人隐私信息
踩点获取的信息-案例
网络踩点技术 Web信息搜索与挖掘 DNS与IP查询 网络拓扑侦察 Google Hacking 公开的一些因特网基础信息服务 目标组织域名、IP以及地理位置之间的映射关系,以及注册的详细信息 网络拓扑侦察 网络的网络拓扑结构和可能存在的网络访问路径
网络搜索 公开渠道信息收集 Google Hacking 目标Web网页、地理位置、相关组织 组织结构和人员、个人资料、电话、电子邮件 网络配置、安全防护机制的策略和技术细节 Google Hacking Google Hacking: 通过网络搜索引擎查找特定安全漏洞或私密信息的方法 allinurl:tsweb/default.htm: 查找远程桌面Web连接 Johnny Long: Google Hacking for Penetration Testers Google Hacking软件: Athena, Wikto, SiteDigger
Google搜索技巧 基本搜索与挖掘技巧 保持简单 使用最可能出现在要查找的网页上的字词 尽量简明扼要地描述要查找的内容 选择独特性的描述字词 善于利用搜索词智能提示功能
Google高级搜索
Google Hacking技术 基本搜索 逻辑与:AND 逻辑或: OR 逻辑非:- 完整匹配:”…” 通配符:* ?
Google Hacking技术 高级搜索 intitle: 表示搜索在网页标题中出现第一个关键词的网页 例如“intitle:黑客技术 ”将返回在标题中出现“黑客技术 ”的所有链接。 用“allintitle: 黑客技术 Google”则会返回网页标题中同时含有 “黑客技术” 和 “Google” 的链接
Google Hacking技术 高级搜索 intext: inurl: site: 返回网页内容中出现关键词的网页,用allintext:搜索多个关键字 inurl: 返回的网址中包含第一个关键字的网页 site: 在某个限定的网站中搜索
Google Hacking技术 高级搜索 filetype: link: 搜索特定扩展名的文件(如.doc .pdf .ppt) 黑客们往往会关注特定的文件,例如:.pwl口令文件、.tmp临时文件、.cfg配置文件、.ini系统文件、.hlp帮忙文件、.dat数据文件、.log日志文件、.par交换文件等等 link: 表示返回所有链接到某个地址的网页。
Google Hacking技术 高级搜索 related: cache: info: 返回连接到类似于指定网站的网页 表示搜索网站的摘要 例如“info:whu.edu.cn”仅得到一个结果
Google Hacking技术 高级搜索 phonebook: rphonebook: bphonebook: 搜索电话号码簿,将会返回街道地址和电话号码列表 同时还可以得到住宅的全面信息,结合Google earth将会得到更详细的信息 rphonebook: 仅搜索住宅用户电话号码簿 bphonebook: 仅搜索商业的电话号码簿
Google Hacking技术 高级搜索 author: group: msgid: insubject: 搜索新闻组帖子的作者
Google Hacking技术 高级搜索 stocks: define: inanchor: daterange: 搜索有关一家公司的股票市场信息 define: 返回一个搜索词汇的定义 inanchor: 搜索一个HTML标记中的一个链接的文本表现形式 daterange: 搜索某个日期范围内Google做索引的网页
Google Hacking攻击 Google hacking可用于发现: 公告文件,安全漏洞,错误信息,口令文件,用户文件,演示页面,登录页面,安全文件,敏感目录,商业信息,漏洞主机,网站服务器检测等信息
Google Hacking攻击 攻击规律 1.“Index of” 检索出站点的活动索引目录 黑客们常利用目录获取密码文件和其他安全文件 常用的攻击语法如下: Index of /admin 可以挖崛到安全意识不强的管理员的机密文件
Google Hacking攻击 其他Index of 语法列表 Index of /passwd Index of /password Index of /mail “Index of /” +passwd “Index of /” +password.txt “Index of /” +.htaccess “Index of /secret” “Index of /confidential” “Index of /root” “Index of /cgi-bin” “Index of /credit-card” “Index of /logs” “Index of /config”
Google Hacking攻击 2.“inurl:” 寻找易攻击的站点和服务器 利用“allinurl:winnt/system32/”寻找受限目录“system32”,一旦具备 cmd.exe 执行权限,就可以控制远程的服务器 利用“allinurl:wwwboard/passwd.txt”搜寻易受攻击的服务器
Google Hacking攻击 利用“inurl:.bash_history”搜寻服务器的“.bash_history”文件。这个文件包括超极管理员的执行命令,甚至一些敏感信息,如管理员口令序列等 利用“inurl:config.txt”搜寻服务器的“config.txt”文件,这个文件包括管理员密码和数据认证签名的hash值
Google Hacking攻击 其他语法列表 inurl:admin filetype:txt inurl:admin filetype:db inurl:admin filetype:cfg inurl:mysql filetype:cfg inurl:passwd filetype:txt inurl:iisadmin allinurl:/scripts/cart32.exe allinurl:/CuteNews/show_archives.php
Google Hacking攻击 其他语法列表 allinurl:/phpinfo.php allinurl:/privmsg.php inurl:auth_user_file.txt inurl:orders.txt inurl:“wwwroot/*.” inurl:adpassword.txt inurl:webeditor.php inurl:file_upload.php inurl:gov filetype:xls “restricted” index of ftp +.mdb allinurl:/cgi-bin/ +mailto
Google Hacking攻击 3.“intitle:” 寻找易攻击的站点或服务器 利用 intitle:”php shell*” “Enable stderr” filetype:php查找安装了php webshell后门的主机,并测试是否有能够直接在机器上执行命令的web shell 利用allintitle:“index of /admin”搜寻服务器的受限目录入口“admin”
Google Hacking攻击 其他语法列表 intitle:“Index of” .sh_history intitle:“Index of” .bash_history intitle:“index of” passwd intitle:“index of” people.lst intitle:“index of” pwd.db intitle:“index of” etc/shadow intitle:“index of” spwd
Google Hacking攻击 其他语法列表 intitle:“Index of” .sh_history intitle:“index of” master.passwd intitle:“index of” htpasswd intitle:“index of” members OR accounts intitle:“index of” user_carts OR user_cart allintitle: sensitive filetype:doc allintitle: restricted filetype :mail allintitle: restricted filetype:doc site:gov
Google Hacking案例 Google一个大学网站 1. site:xxxx.com 从返回的信息中,可找到几个该校的几个系院的域名 http://a1.xxxx.com http://a2.xxxx.com http://a3.xxxx.com
Google Hacking案例 Google一个大学网站 2. ping a1.xxxx.com 应该是不同的服务器 3. site:xxxx.com filetype:doc 学校一般都会有不少好的资料,先看看有什么好东西
Google Hacking案例 Google一个大学网站 2. ping a1.xxxx.com 应该是不同的服务器 3. site:xxxx.com filetype:doc 学校一般都会有不少好的资料,先看看有什么好东西
Google Hacking案例 Google一个大学网站 4.找网站的管理后台地址 site:xxxx.com intext:管理 site:xxxx.com inurl:login site:xxxx.com intitle:管理
Google Hacking案例 Google一个大学网站 5.看看服务器上运行什么程序: site:a2.xxxx.com filetype:asp site:a2.xxxx.com filetype:php site:a2.xxxx.com filetype:aspx site:a3.xxxx.com filetype:asp site:.......
Web信息搜索与挖掘防范 组织安全敏感信息及个人隐私信息不在因特网上随意发布 个人上网时尽量保持匿名 “网络实名制”? 个人隐私权立法保护? 还没有! “跨省追捕”! 必须提供个人隐私信息时,应选择具有良好声誉并可信任的网站 定期对自身单位及个人在Web上的信息足迹进行搜索 掌握Google Hacking信息搜索技术 发现非预期泄漏的敏感信息后,应采取行动进行清除
DNS与IP查询 DNS/IP ICANN:因特网技术协调机构 国内 因特网赖以运转的两套基础设施 因特网上的公共数据库中进行维护 层次化结构管理 ICANN:因特网技术协调机构 ASO: 地址支持组织, 负责IP地址分配和管理 GNSO: 基本名称支持组织, 负责通用顶级域名分配 CNNSO: 国家代码域名支持组织,负责国家顶级域名分配 国内 公网: CNNIC, ISPs(电信,网通…), 域名服务商(万网) 教育网: CERNET, 赛尔网络, …
DNS与IP查询
Whois查询(DNS注册信息) 域名注册过程 WHOIS查询 注册人(Registrant) →注册商(Registrar) →官方注册局(Registry) 3R注册信息:分散在官方注册局或注册商各自维护数据库中 官方注册局一般会提供注册商和Referral URL信息 具体注册信息一般位于注册商数据库中 WHOIS查询 查询特定域名的3R详细注册信息 域名注册信息查询: ICANN(IANA)→域名官方注册局→域名服务商 WhoisWeb查询服务:官方注册局、注册商 寻找域名注册信息数据库并查询返回结果的WhoisWeb查询服务:万网、站长之家(whois.chinaz.com) 集成工具: Whois客户程序,SamSpade, SuperScan, …
Whois查询示例 ICANN的Whois服务 Registar的Whois服务 中国互联网信息中心 中国教育和科研网络信息中心 http://www.internic.net/whois.html Registar的Whois服务 https://www.markmonitor.com/ 中国互联网信息中心 http://www.cnnic.net.cn/ 中国教育和科研网络信息中心 http://www.nic.edu.cn/DS/cindex.html
ICANN的Whois服务
Registar的Whois服务
互联网信息中心whois服务
中国教育和科研网络信息中心Whois服务
DNS服务:域名→IP的映射 DNS服务器和查询机制 DNS查询工具 权威DNS服务器:提供原始DNS映射信息 主(primary)DNS服务器 辅助(secondary)DNS服务器 递归缓存DNS服务器:ISP提供接入用户使用 分布式缓存与递归查询的机制 DNS查询工具 nslookup/dig
Nslookup查询baidu.com
DNS区域传送 DNS区域传送 阻断DNS区域传送 nslookup: default server ls-d DOMAIN_DNS_NAME 阻断DNS区域传送 MMC控制台配置DNS服务,去掉Allow Zone Transfers,禁止区域传送
Nslookup查询baidu.com
IP地址Whois查询 IP分配过程 IP Whois查询过程 自动化程序和服务 ICANN的地址管理组织ASO总体负责 协调RIR和NIR进行具体分配与维护 每家RIR都知道每段IP地址范围属于哪家管辖 具体分配信息在NIR/ISP维护 IP Whois查询过程 任意RIR的Whois服务(北美: ARIN, 亚太: APNIC) 自动化程序和服务 Whois客户程序
IP地址Whois查询示例 162.105.1.1查询示例 ARIN的WhoisWeb服务 告知这段IP由APNIC管辖 https://www.arin.net/ 告知这段IP由APNIC管辖 APNIC的WhoisWeb服务 http://www.apnic.net/apnic-info/search 给出该网段属于北大,细节信息 可能有时需要到NIR(CNNIC)或ISP查询更细致信息
162.105.1.1的ARIN Whois服务
162.105.1.1的APNIC Whois服务
IP2Location-地理信息查询 IP2Location查询 地理信息查询 IP地址(因特网上的虚拟地址)现实世界中的具体地理位置 IP2Location数据库: WHOIS数据库, GeoIP, IP2Location, 纯真数据库(QQ IP查询使用) 地理信息查询 Google Map, Sougou地图 Google Earth
纯真IP查询示例
搜狗地图示例
Google Earth示例
DNS与IP查询安全防范措施 公用数据库中提供信息的安全问题 采用一些安防措施不让攻击者轻易得手 必须向注册机构提供尽可能准确的信息 及时更新管理性事务联系人的信息 尝试使用虚构的人名来作为管理性事务联系人 “HoneyMan”: 帮助发现和追查那些在电话或邮件中试图冒充虚构人名的“社会工程师” 慎重考虑所列的电话号码和地址等信息 注意域名注册机构允许更新注册信息的方式,并确保其中关键信息的安全 攻击案例:2008年黑客进入了网络支付服务商CheckFree的邮箱,从而修改了域名记录
网络侦察 Traceroute–路由跟踪 网络侦察防范措施 探测网络路由路径,可用于确定网络拓扑 主机发送TTL从1开始逐步增1的IP包,网络路径上路由器返回ICMP TIME_EXECEEDED UNIX/Linux: traceroute Windows: tracert 穿透防火墙: traceroute -S -p53 TARGET_IP 图形化界面工具: VisualRoute, NeoTrace, Trout 网络侦察防范措施 路由器配置: 只允许特定系统响应ICMP/UDP数据包 网络入侵检测系统/网络入侵防御系统: Snort 虚假响应信息: RotoRouter
Traceroute网络侦察示例
课堂实践(DNS与IP查询) 任务一:从google.com、g.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 任务二:尝试获取BBS、论坛、QQ、MSN中的某一好友IP地址,并查询获取该好友所在具体地理位置。 提示:QQ、MSN在好友间进行较长时间的直接通讯时,将会建立起点到点的TCP或UDP连接,使用netstat命令或天网防火墙等工具,可获得好友的IP地址。
提纲 网络基础知识 网络信息收集技术概述 网络踩点技术 网络扫描技术 作业
网络扫描 VS. 入室盗窃窥探
主机扫描(ping扫描) 主机扫描目的:检查目标主机是否活跃(active). 主机扫描方式 传统ICMP Ping扫描 ACK Ping扫描 SYN Ping扫描 UDP Ping扫描
主机扫描(ping扫描) 主机扫描程序 Ping Nmap: -sP选项, 缺省执行,集合了ICMP/SYN/ ACK/ UDP Ping功能
Ping扫射 Ping扫射 Ping扫射工具软件 同时扫描大量的IP地址段,以发现某个IP地址是否绑定活跃主机的扫描 UNIX: Nmap, fping, hping2 Win32: Superscan
主机扫描防范措施 单一主机Ping扫描很常见,危害性也不大,更关注Ping扫射 监测:网络入侵检测系统Snort;主机扫描监测工具Scanlogd 防御:仔细考虑对ICMP通信的过滤策略 利用Ping构建后门: loki(Phrackv51#06), pingd
端口扫描技术 端口 端口扫描定义 端口扫描目的 TCP/UDP (1-64K), 运行网络应用服务 由IANA/ICANN负责分配 防御者-更加了解所管理的网络状况,找出没有必要开放的端口并关闭,这是保证业务网络安全的第一步。 攻击者-找出可供进一步攻击的网络服务,同时结合操作系统探测技术也可以确定目标主机所安装的操作系统版本。开放网络服务和操作系统版本信息为攻击者提供了破解攻击的目标,使其更容易找出进入目标主机的漏洞路径。
TCP端口扫描 Connect扫描 调用socket 的connect() 函数连接目标端口 开放端口:完成完整的TCP三次握手(SYN, SYN|ACK, ACK),timeout/RST 关闭端口:SYN, RST 优势&弱势:无需特权用户权限可发起,目标主机记录大量连接和错误信息,容易检测
TCP端口扫描 SYN扫描 半开扫描(half-open scanning) 开放端口:攻击者SYN, 目标主机SYN|ACK, 攻击者立即反馈RST包关闭连接 关闭端口:攻击者SYN, 目标主机RST 优势&弱势:目标主机不会记录未建立连接,较为隐蔽,需根用户权限构建定制SYN包
隐蔽端口扫描 隐蔽端口扫描方式 如何达成扫描目的 TCP连接扫描和SYN扫描并不隐蔽:防火墙会监控发往受限端口的SYN包 FIN扫描(只带FIN位), Null扫描(全为0), XMAS扫描(FIN/URG/PUSH) FTP弹射扫描:利用FTP代理选项达到隐蔽源地址 如何达成扫描目的 开放端口:标准TCP协议规范,接受这些伪造TCP包,丢弃,无任何反馈 关闭端口:反馈RST包 Windows/Cisco等系统没有遵从规范,开放端口对于伪造TCP包也反馈RST,这三种方法不适用
UDP端口扫描 UDP端口扫描 对目标端口发送特殊定制的UDP数据报文 开放端口: UDP反馈 关闭端口: ICMP port unreachable报文
UDP端口扫描 UDP端口扫描工具 UNIX: udp_scan, nmap-sU, nc-u -v -z -w2 HOST PORT_LIST Win32: netcat , SuperScan , WinScan , WUPS, ScanLine
端口扫描防范措施 任何攻击技术都是双刃剑 端口扫描的监测 端口扫描的预防 网络管理员也可利用端口扫描确定开放必要服务 网络入侵检测系统: Snort中的portscan检测插件 系统扫描检测工具: scanlogd, PortSentry, Genius 端口扫描的预防 开启防火墙 类UNIX: netfilter/IPTables Win32: 个人防火墙 禁用所有不必要的服务,尽可能减少暴露面(进一步的受攻击面) 类UNIX: /etc/inetd.conf Win32: 控制面板/服务
系统类型探查 系统类型探查 目的 探查活跃主机的系统及开放网络服务的类型 目标主机上运行着何种类型什么版本的操作系统 各个开放端口上监听的是哪些网络服务 目的 为更为深入的情报信息收集,真正实施攻击做好准备 如远程渗透攻击需了解目标系统操作系统类型,并配置
系统类型探查
操作系统类型探查 操作系统类型探查(OS Identification) 不同操作系统类型和版本的差异性 辨识方式 通过各种不同操作系统类型和版本实现机制上的差异 通过特定方法以确定目标主机所安装的操作系统类型和版本的技术手段 明确操作系统类型和版本是进一步进行安全漏洞发现和渗透攻击的必要前提 不同操作系统类型和版本的差异性 协议栈实现差异-协议栈指纹鉴别 开放端口的差异-端口扫描 应用服务的差异-旗标攫取 辨识方式 主动-操作系统主动探测技术 被动-被动操作系统识别技术
操作系统主动探测 操作系统主动探测技术 端口扫描 应用服务旗标攫取 主动协议栈指纹鉴别 Fyodor, Phrack, Remote OS detection via TCP/IP Stack Finger-Printing, 1998. 鉴别项:FIN, BOGUS flag, ISN采样, DF位, TCP初始窗口大小, ACK值, ICMP出错消息抑制, ICMP消息引用, ICMP出错消息回射完整性, TOS,重叠分片处理, TCP选项 nmap-O选项, qeuso, Xprobe
被动操作系统识别 被动操作系统识别技术 被动协议栈指纹鉴别 流量监听(开放端口): tcpdump, … 被动应用服务识别: PADS 被动协议栈指纹鉴别: siphon, p0f 被动协议栈指纹鉴别 Lance Spitzner, Passive fingerprinting 四个常用特征: TTL, Window Size, DF, TOS
网络服务类型探查 网络服务类型探查 网络服务主动探测 网络服务被动识别 确定目标网络中开放端口上绑定的网络应用服务类型和版本 了解目标系统更丰富信息, 可支持进一步的操作系统辨识和漏洞识别 网络服务主动探测 网络服务旗标抓取和探测: nmap-sV 网络服务被动识别 网络服务特征匹配和识别: PADS
系统类型探查防范措施 并没有太多好办法 检测 “不出声就不会被发现”这一古老格言并不适用于网络攻防领域 应立足于 端口扫描监测工具 对被动式静默监听并辨识系统类型行为则基本无能为力 挫败系统类型探查活动的防御机制也很难 “不出声就不会被发现”这一古老格言并不适用于网络攻防领域 应立足于 即使攻击者探查出了操作系统和网络服务类型,也不能轻易的攻破这道“坚固的防线”
漏洞扫描 漏洞 漏洞扫描 Security Vulnerability,安全脆弱性 一般认为,漏洞是指硬件、软件或策略上存在的的安全缺陷,从而使得攻击者能够在未授权的情况下访问、控制系统 漏洞扫描 检查系统是否存在已公布安全漏洞,从而易于遭受网络攻击的技术
漏洞的不可避免 系统设计缺陷 软件源代码的急剧膨胀 软件实现的缺陷 Internet从设计时就缺乏安全的总体架构和设计 TCP/IP中的三阶段握手 软件源代码的急剧膨胀 Windows 95 1500万行,Windows 98 1800万行 Windows XP 3500万行,Windows Vista 5000万行 Linux 内核200万行 软件实现的缺陷 微软开发人员的单体测试缺陷从超过25个缺陷/千行代码显著降低到7个缺陷/千行代码
漏洞扫描 漏洞扫描技术 已发布安全漏洞数据库 检查系统是否存在已公布安全漏洞,从而易于遭受网络攻击的技术。 双刃剑 网络管理员用来检查系统安全性,渗透测试团队(Red Team)用于安全评估。 攻击者用来列出最可能成功的攻击方法,提高攻击效率。 已发布安全漏洞数据库 业界标准漏洞命名库CVE http://cve.mitre.org 微软安全漏洞公告MSxx-xxx http://www.microsoft.com/china/technet/security/current.mspx SecurityFocus BID http://www.securityfocus.com/bid National Vulnerability Database: NVD http://nvd.nist.gov/
漏洞扫描软件 ISS (Internet Security Scanner) SATAN/SAINT Nessus* 1993年: 第一个漏洞扫描软件,商业 2006年被IBM以16亿美元收购 SATAN/SAINT 1995年: Dan Farmer 第一个公开发布的漏洞扫描软件,引发媒体负面报导 Nessus* 目前最优秀的共享漏洞扫描软件 1998-: RenaudDeraison, Nessus v2.x 开源 2005-: Tenable Network Security, Nessus v3.x, v4.x, freeware, pluginlicense
国内的商业漏洞扫描软件 开源软件 国内厂商 Xscan*: “冰河”黄鑫2001年开始开发 绿盟: “极光” 启明星辰: “天镜” 2005年v3.3之后无更新 兼容Nessus的NASL语言开发插件 国内厂商 绿盟: “极光” 启明星辰: “天镜” 方正、中软、东软…
漏洞扫描防范措施 最简单对策: 检测和防御漏洞扫描行为 假设黑客会使用漏洞扫描来发现目标网络弱点,那你必须在黑客之前扫描漏洞 补丁自动更新和分发: 修补漏洞 联邦桌面核心配置计划(FDCC) 确保桌面计算机的安全漏洞及补丁自动管理 中国2010年才开始政务终端安全配置(CGDCC)标准的发展 检测和防御漏洞扫描行为 网络入侵检测系统: Snort 仔细审查防火墙配置规则
作业2 –个人作业 2.1 通过搜索引擎搜索自己在因特网上的足迹,并确认是否存在隐私和敏感信息泄露问题,如是,提出解决方法。(注,不要在提交作业中泄漏个人隐私) 2.2 使用Nmap扫描某台靶机,并给出靶机环境的配置情况,撰写实验分析报告。 2.3 使用Nessus扫描某台靶机,并给出靶机环境上的网络服务及安全漏洞情况,撰写实验分析报告。 Deadline: 3月22日
第2章 扫描与防御技术 国家计算机网络入侵防范中心 张玉清 2
本章内容安排 2.1 扫描技术概述 2.2 常见的扫描技术 2.3 扫描工具赏析 2.4 扫描的防御 2.5 小结 2017/2/25 网络入侵与防范讲义 95
2.1 扫描技术概述 什么是扫描器 网络扫描器是一把双刃剑 为什么需要网络扫描器 扫描的重要性 网络扫描器的主要功能 网络扫描器与漏洞的关系 扫描三步曲 一个典型的扫描案例 2017/2/25 网络入侵与防范讲义 96
什么是扫描器 扫描器是一种自动检测远程或本地主机安全性弱点的程序。它集成了常用的各种扫描技术,能自动发送数据包去探测和攻击远端或本地的端口和服务,并自动收集和记录目标主机的反馈信息,从而发现目标主机是否存活、目标网络内所使用的设备类型与软件版本、服务器或主机上各TCP/UDP端口的分配、所开放的服务、所存在的可能被利用的安全漏洞。据此提供一份可靠的安全性分析报告,报告可能存在的脆弱性。 2017/2/25 网络入侵与防范讲义 97
网络扫描器是一把双刃剑 安全评估工具 系统管理员保障系统安全的有效工具 网络漏洞扫描器 网络入侵者收集信息的重要手段 扫描器是一把“双刃剑”。 2017/2/25 网络入侵与防范讲义 98
为什么需要网络扫描器 由于网络技术的飞速发展,网络规模迅猛增长和计算机系统日益复杂,导致新的系统漏洞层出不穷 由于系统管理员的疏忽或缺乏经验,导致旧有的漏洞依然存在 许多人出于好奇或别有用心,不停的窥视网上资源 2017/2/25 网络入侵与防范讲义 99
扫描的重要性 扫描的重要性在于把繁琐的安全检测,通过程序来自动完成,这不仅减轻了网络管理员的工作,而且也缩短了检测时间。 同时,也可以认为扫描器是一种网络安全性评估软件,利用扫描器可以快速、深入地对目标网络进行安全评估。 网络安全扫描技术与防火墙、安全监控系统互相配合能够为网络提供很高的安全性。 2017/2/25 网络入侵与防范讲义 100
网络扫描器的主要功能 扫描目标主机识别其工作状态(开/关机) 识别目标主机端口的状态(监听/关闭) 识别目标主机操作系统的类型和版本 识别目标主机服务程序的类型和版本 分析目标主机、目标网络的漏洞(脆弱点) 生成扫描结果报告 2017/2/25 网络入侵与防范讲义 101
网络扫描器与漏洞的关系 网络漏洞是系统软、硬件存在安全方面的脆弱性,安全漏洞的存在导致非法用户入侵系统或未经授权获得访问权限,造成信息篡改、拒绝服务或系统崩溃等问题。 网络扫描可以对计算机网络系统或网络设备进行安全相关的检测,以找出安全隐患和可能被黑客利用的漏洞。 2017/2/25 网络入侵与防范讲义 102
扫描三步曲 一个完整的网络安全扫描分为三个阶段: 第一阶段:发现目标主机或网络 第二阶段:发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息 第三阶段:根据收集到的信息判断或者进一步测试系统是否存在安全漏洞 研究 2017/2/25 网络入侵与防范讲义 103 103
扫描三步曲(续) 网络安全扫描技术包括PING扫描、操作系统探测、穿透防火墙探测、端口扫描、漏洞扫描等 OS探测、穿透防火墙探测、端口扫描用于扫描第二阶段 OS探测是对目标主机运行的OS进行识别 穿透防火墙探测用于获取被防火墙保护的网络资料 端口扫描是通过与目标系统的TCP/IP端口连接,并查看该系统处于监听或运行状态的服务 漏洞扫描用于安全扫描第三阶段,通常是在端口扫描的基础上,进而检测出目标系统存在的安全漏洞 2017/2/25 网络入侵与防范讲义 104
一个典型的扫描案例 2017/2/25 网络入侵与防范讲义 105
1. Find targets 选定目标为:192.168.1.18 测试此主机是否处于活动状态,工具是用操作系统自带的ping,使用命令: 结果见下页图。 2017/2/25 网络入侵与防范讲义 106
说明该主机处于活动状态 测试此主机是否处于活动状态,使用命令:ping 192.168.1.18 结果说明该主机处理活动状态。 2017/2/25 网络入侵与防范讲义 107 107
2. Port Scan 运用扫描工具,检查目标主机开放的端口,判断它运行了哪些服务 使用的工具是Nmap 4.20(此工具将在后面进行介绍) 扫描命令:nmap 192.168.1.18 扫描结果见下面图 2017/2/25 网络入侵与防范讲义 108
运用扫描工具,检查目标主机开放的端口,判断它运行了哪些服务 使用的工具是Nmap 4.20 扫描命令:nmap 192.168.1.18 2017/2/25 网络入侵与防范讲义 109 109
2. Port Scan(2) 端口开放信息如下: 我们将重点关注SMTP端口 21/tcp open ftp 25/tcp open smtp 42/tcp open nameserver 53/tcp open domain 80/tcp open http …… 我们将重点关注SMTP端口 2017/2/25 网络入侵与防范讲义 110
3. Vulnerability Check 检测SMTP服务是否存在漏洞 使用漏洞扫描工具Nessus 3(此工具在后面将会介绍) 扫描过程见下页图 2017/2/25 网络入侵与防范讲义 111
扫描目标是192.168.1.18 2017/2/25 网络入侵与防范讲义 112
Nessus正在进行漏洞扫描 2017/2/25 网络入侵与防范讲义 113
4. Report Nessus发现了目标主机的SMTP服务存在漏洞。 扫描报告中与SMTP漏洞相关的部分见下页图。 2017/2/25 网络入侵与防范讲义 114
漏洞编号:CVE-2003-0818 2017/2/25 网络入侵与防范讲义 115
2.2 常见的扫描技术 不可不学的扫描技术 巧妙奇特的天才构思 TCP/IP相关知识 常用网络命令 主机扫描 端口扫描 远程主机OS指纹识别 全扫描 半扫描 秘密扫描 认证(ident)扫描 FTP代理扫描 远程主机OS指纹识别 漏洞扫描 不可不学的扫描技术 巧妙奇特的天才构思 2017/2/25 网络入侵与防范讲义 116
TCP/IP相关知识 TCP报文格式 TCP通信过程 ICMP协议 2017/2/25 网络入侵与防范讲义 117
TCP报文格式 2017/2/25 网络入侵与防范讲义 118
TCP控制位 URG: 为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。 ACK: 为确认标志位。如果为1,表示包中的确认号是有效的。否则,包中的确认号无效。 PSH: 如果置位,接收端应尽快把数据传送给应用层。 2017/2/25 网络入侵与防范讲义 119
TCP控制位 RST: 用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。 SYN: 标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接。 FIN: 表示发送端已经没有数据要求传输了,希望释放连接。 2017/2/25 网络入侵与防范讲义 120
TCP通信过程 正常TCP通信过程: 建立连接 (数据传输) 断开连接 2017/2/25 网络入侵与防范讲义 121
建立TCP连接 CTL: Control Bits 2017/2/25 网络入侵与防范讲义 122 122
断开TCP连接 2017/2/25 网络入侵与防范讲义 123
ICMP协议(1) Internet Control Message Protocol,是IP的一部分,在IP协议栈中必须实现。 用途: 当出现问题时,提供反馈信息用于报告错误 特点: 其控制能力并不用于保证传输的可靠性 它本身也不是可靠传输的 并不用来反映ICMP报文的传输情况 2017/2/25 网络入侵与防范讲义 124
ICMP协议(2) ICMP报文类型 0 Echo Reply 3 Destination Unreachable 4 Source Quench 5 Redirect 8 Echo 11 Time Exceeded 12 Parameter Problem 13 Timestamp 14 Timestamp Reply 15 Information Request 16 Information Reply 17 Address Mask Request 18 Address Mask Reply 2017/2/25 网络入侵与防范讲义 125
常用网络命令 Ping Traceroute、Tracert、x-firewalk Net命令系列 2017/2/25 网络入侵与防范讲义 126
常用网络命令--ping Ping是最基本的扫描技术。 ping命令——主要目的是检测目标主机是不是可连通,继而探测一个IP范围内的主机是否处于激活状态。 不要小瞧ping 黑客的攻击往往都是从ping开始的 2017/2/25 网络入侵与防范讲义 127
常用网络命令--ping的原理 ping是一个基本的网络命令,用来确定网络上具有某个特定IP地址的主机是否存在以及是否能接收请求。 Ping命令通过向计算机发送ICMP回应报文并且监听回应报文的返回,以校验与远程计算机或本地计算机的连接。 2017/2/25 网络入侵与防范讲义 128
常用网络命令--ping参数说明 ping在安装了TCP/IP协议后可以使用。 2017/2/25 网络入侵与防范讲义 129
常用网络命令—ping命令使用 -n: 发送ICMP回应报文的个数 2017/2/25 网络入侵与防范讲义 130
常用网络命令-- Traceroute Traceroute——跟踪两台机器之间的路径,显示中间的每一个节点的信息。这个工具可以用来确定某个主机的位置。 traceroute 命令旨在用于网络测试、评估和管理。它应主要用于手动故障隔离。 语法: 2017/2/25 网络入侵与防范讲义 131
常用网络命令– Traceroute说明 -f -f后指定一个初始TTL,它的范围是大于0小于最大TTL,缺省为1。 -m -m后指定一个最大TTL,它的范围是大于初始TTL,缺省为30。 -p -p后可以指定一个整数,该整数是目的主机的端口号,它的缺省为33434,用户一般无须更改此选项。 -q -q后可以指定一个整数,该整数是每次发送的探测数据包的个数,它的范围是大于0,缺省为3。 -w -w后可以指定一个整数,该整数指明IP包的超时时间,它的范围是大于0,缺省为5秒。 host 目的主机的IP地址 2017/2/25 网络入侵与防范讲义 132
常用网络命令– Traceroute示例 Quid # traceroute 35.1.1.48 traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 56byte packet 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms 3 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39ms 40ms 39ms 4 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms 5 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms 6 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms 7 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms 8 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms 9 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms 10 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms 可以看出从源主机到目的地都经过了哪些网关,这对于网络分析是非常有用的。 2017/2/25 网络入侵与防范讲义 133
常用的网络命令—Tracert、x-firewalk Windows下用tracert命令可以查看路由信息,但是如今的路由器大部分都对tracert命令做了限制,此命令已经没有效果。 有黑客开发出x-firewalk.exe可用于在Windows环境下查看路由信息,非常实用,下载地址是http://www.xdoors.net/。 2017/2/25 网络入侵与防范讲义 134
常用的网络命令—x-firewalk示例 命令:x-firewalk www.163.com 可以看到本地到达www.163.com都经过了哪些路由器 2017/2/25 网络入侵与防范讲义 135
常用网络命令--net Net命令系列——很多的Windows的网络命令都是net开头的。利用net开头的命令,可以实现很多的网络管理功能……比如用net start server,可以启动服务器;NET USE 用于将计算机与共享的资源相连接,或者切断计算机与共享资源的连接,当不带选项使用本命令时,它会列出计算机的连接。 以下以Windows NT下的Net USE命令为例。 net use参数: DeviceName:指派名称以便连接到资源或指定断开的设备。有两种类型的设备名: 磁盘驱动器号(即 D: 到 Z:} 和打印机(即 LPT1:到 LPT3:}。如果键入星号而不是特定设备名,则系统会指派下一个可用的设备名。这个名称以后可以作为访问共享资源的名称进行引用。 \computername:指控制共享资源的计算机的名字。如果计算机名中包含有空字符,就要将双反斜线 (\) 和计算机名一起用引号 (" ")括起来。计算机名可以有1 到 15 个 字符。\volume :指定一个服务器上的NetWare卷。用户必须安装 Netware 的客户服务 (Windows 工作站) 或者 Netware 的网关服务(Windows 服务器) 并使之与 NetWare 服务器相连。 Password:指定访问共享资源所需的密码。输入星号 (*) 产生一个密码提示在密码提示行处键入密码时不显示密码。 /user:在其后指定建立连接时使用的不同于目前登录用户的用户名。 DomainName:指定不同于目前登录域的其他域。如果省略则net use使用当前登录的域。 注意,/user:后的登录用户和域可以有三种不同的表示形式,分别为domainname\username,dotted domain name\username和username@dotted domain name,其中dotted domain name提指域名的全称,如office.yesky.com,也即域名加域后缀的完全形式。 /SAVECRED:指定保留用户名和密码。除非命令提示输入用户名和密码。否则此开关被忽略, /SMARTCARD:指定连接使用在智能卡上的凭据。 /delete:取消指定的网络连接。如果使用星号 (*) 指定连接,则所有网络连接均将取消。 /persistent:{yes | no}:控制持久网络连接的使用。默认值为最后一次使用的设置。非设备连接不会持久。Yes 将按其建立时的原样保存所有连接,并在下次登录时还原它们。No 则不保存已建立的连接或后续连接。现存的连接在下一次登录时还原。使用 /delete 删除持久连接。 2017/2/25 网络入侵与防范讲义 136 136
常用网络命令—net use示例 net use命令及参数使用 net use参数: DeviceName:指派名称以便连接到资源或指定断开的设备。有两种类型的设备名: 磁盘驱动器号(即 D: 到 Z:} 和打印机(即 LPT1:到 LPT3:}。如果键入星号而不是特定设备名,则系统会指派下一个可用的设备名。这个名称以后可以作为访问共享资源的名称进行引用。 \computername:指控制共享资源的计算机的名字。如果计算机名中包含有空字符,就要将双反斜线 (\) 和计算机名一起用引号 (" ")括起来。计算机名可以有1 到 15 个 字符。\volume :指定一个服务器上的NetWare卷。用户必须安装 Netware 的客户服务 (Windows 工作站) 或者 Netware 的网关服务(Windows 服务器) 并使之与 NetWare 服务器相连。 Password:指定访问共享资源所需的密码。输入星号 (*) 产生一个密码提示在密码提示行处键入密码时不显示密码。 /user:在其后指定建立连接时使用的不同于目前登录用户的用户名。 DomainName:指定不同于目前登录域的其他域。如果省略则net use使用当前登录的域。 注意,/user:后的登录用户和域可以有三种不同的表示形式,分别为domainname\username,dotted domain name\username和username@dotted domain name,其中dotted domain name提指域名的全称,如office.yesky.com,也即域名加域后缀的完全形式。 /SAVECRED:指定保留用户名和密码。除非命令提示输入用户名和密码。否则此开关被忽略, /SMARTCARD:指定连接使用在智能卡上的凭据。 /delete:取消指定的网络连接。如果使用星号 (*) 指定连接,则所有网络连接均将取消。 /persistent:{yes | no}:控制持久网络连接的使用。默认值为最后一次使用的设置。非设备连接不会持久。Yes 将按其建立时的原样保存所有连接,并在下次登录时还原它们。No 则不保存已建立的连接或后续连接。现存的连接在下一次登录时还原。使用 /delete 删除持久连接。 2017/2/25 网络入侵与防范讲义 137 137
常用网络命令—net use示例 (1) 用户名为Administrator,密码为longmang与远程计算机192.168.1.34进行IPC$连接,如图所示。 (2)查看与远程计算机建立的连接,如图所示。 net use参数: DeviceName:指派名称以便连接到资源或指定断开的设备。有两种类型的设备名: 磁盘驱动器号(即 D: 到 Z:} 和打印机(即 LPT1:到 LPT3:}。如果键入星号而不是特定设备名,则系统会指派下一个可用的设备名。这个名称以后可以作为访问共享资源的名称进行引用。 \computername:指控制共享资源的计算机的名字。如果计算机名中包含有空字符,就要将双反斜线 (\) 和计算机名一起用引号 (" ")括起来。计算机名可以有1 到 15 个 字符。\volume :指定一个服务器上的NetWare卷。用户必须安装 Netware 的客户服务 (Windows 工作站) 或者 Netware 的网关服务(Windows 服务器) 并使之与 NetWare 服务器相连。 Password:指定访问共享资源所需的密码。输入星号 (*) 产生一个密码提示在密码提示行处键入密码时不显示密码。 /user:在其后指定建立连接时使用的不同于目前登录用户的用户名。 DomainName:指定不同于目前登录域的其他域。如果省略则net use使用当前登录的域。 注意,/user:后的登录用户和域可以有三种不同的表示形式,分别为domainname\username,dotted domain name\username和username@dotted domain name,其中dotted domain name提指域名的全称,如office.yesky.com,也即域名加域后缀的完全形式。 /SAVECRED:指定保留用户名和密码。除非命令提示输入用户名和密码。否则此开关被忽略, /SMARTCARD:指定连接使用在智能卡上的凭据。 /delete:取消指定的网络连接。如果使用星号 (*) 指定连接,则所有网络连接均将取消。 /persistent:{yes | no}:控制持久网络连接的使用。默认值为最后一次使用的设置。非设备连接不会持久。Yes 将按其建立时的原样保存所有连接,并在下次登录时还原它们。No 则不保存已建立的连接或后续连接。现存的连接在下一次登录时还原。使用 /delete 删除持久连接。 2017/2/25 网络入侵与防范讲义 138 138
常用网络命令—net use示例 (3)将远程计算机的c盘映射到本地o盘,如图所示。 net use参数: DeviceName:指派名称以便连接到资源或指定断开的设备。有两种类型的设备名: 磁盘驱动器号(即 D: 到 Z:} 和打印机(即 LPT1:到 LPT3:}。如果键入星号而不是特定设备名,则系统会指派下一个可用的设备名。这个名称以后可以作为访问共享资源的名称进行引用。 \computername:指控制共享资源的计算机的名字。如果计算机名中包含有空字符,就要将双反斜线 (\) 和计算机名一起用引号 (" ")括起来。计算机名可以有1 到 15 个 字符。\volume :指定一个服务器上的NetWare卷。用户必须安装 Netware 的客户服务 (Windows 工作站) 或者 Netware 的网关服务(Windows 服务器) 并使之与 NetWare 服务器相连。 Password:指定访问共享资源所需的密码。输入星号 (*) 产生一个密码提示在密码提示行处键入密码时不显示密码。 /user:在其后指定建立连接时使用的不同于目前登录用户的用户名。 DomainName:指定不同于目前登录域的其他域。如果省略则net use使用当前登录的域。 注意,/user:后的登录用户和域可以有三种不同的表示形式,分别为domainname\username,dotted domain name\username和username@dotted domain name,其中dotted domain name提指域名的全称,如office.yesky.com,也即域名加域后缀的完全形式。 /SAVECRED:指定保留用户名和密码。除非命令提示输入用户名和密码。否则此开关被忽略, /SMARTCARD:指定连接使用在智能卡上的凭据。 /delete:取消指定的网络连接。如果使用星号 (*) 指定连接,则所有网络连接均将取消。 /persistent:{yes | no}:控制持久网络连接的使用。默认值为最后一次使用的设置。非设备连接不会持久。Yes 将按其建立时的原样保存所有连接,并在下次登录时还原它们。No 则不保存已建立的连接或后续连接。现存的连接在下一次登录时还原。使用 /delete 删除持久连接。 2017/2/25 网络入侵与防范讲义 139 139
常用网络命令—net use示例 (4)删除一个IPC$连接 (5)删除共享映射 2017/2/25 网络入侵与防范讲义 140
主机扫描技术 传统技术 高级技术 2017/2/25 网络入侵与防范讲义 141
主机扫描技术-传统技术 主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。 常用的传统扫描手段有: ICMP Echo扫描 ICMP Sweep扫描 Broadcast ICMP扫描 Non-Echo ICMP扫描 2017/2/25 网络入侵与防范讲义 142
ICMP echo扫描 实现原理:Ping的实现机制,在判断在一个网络上主机是否开机时非常有用。向目标主机发送ICMP Echo Request (type 8)数据包,等待回复的ICMP Echo Reply 包(type 0) 。如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包被对方的设备过滤掉。 优点:简单,系统支持 缺点:很容易被防火墙限制 可以通过并行发送,同时探测多个目标主机,以提高探测效率(ICMP Sweep扫描)。 2017/2/25 网络入侵与防范讲义 143
ICMP sweep扫描 使用ICMP ECHO轮询多个主机称为ICMP SWEEP(或者Ping Sweep)。 对于小的或者中等网络使用这种方法来探测主机是一种比较可接受的行为,但对于一些大的网络如CLASS A,B,这种方法就显的比较慢,原因是Ping在处理下一个之前将会等待正在探测主机的回应。 扫描工具Nmap实现了ICMP sweep的功能。 2017/2/25 网络入侵与防范讲义 144
Broadcast ICMP扫描 实现原理:将ICMP请求包的目标地址设为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机。 缺点: 只适合于UNIX/Linux系统,Windows 会忽略这种请求包; 这种扫描方式容易引起广播风暴 2017/2/25 网络入侵与防范讲义 145
Non-Echo ICMP扫描 一些其它ICMP类型包也可以用于对主机或网络设备的探测,如: Stamp Request (Type 13) Reply (Type 14) Information Request (Type 15) Reply (Type 16) Address Mask Request (Type 17) Reply (Type 18) 2017/2/25 网络入侵与防范讲义 146
主机扫描技术-高级技术 异常的IP包头 在IP头中设置无效的字段值 错误的数据分片 通过超长包探测内部路由器 反向映射探测 防火墙和网络过滤设备常常导致传统的探测手段变得无效。为了突破这种限制,必须采用一些非常规的手段,利用ICMP协议提供网络间传送错误信息的手段,往往可以更有效的达到目的: 异常的IP包头 在IP头中设置无效的字段值 错误的数据分片 通过超长包探测内部路由器 反向映射探测 2017/2/25 网络入侵与防范讲义 147
端口扫描技术 TCP/IP协议提出的端口是网络通信进程与外界通讯交流的出口,可被命名和寻址,可以认为是网络通信进程的一种标识符。 进程通过系统调用与某端口建立连接绑定后,便会监听这个端口,传输层传给该端口的数据都被相应进程所接收,而相应进程发给传输层的数据都从该端口输出。 互联网上的通信双方不仅需要知道对方的IP地址,也需要知道通信程序的端口号。
端口扫描技术 目前IPv4协议支持16位的端口,端口号范围是0~65535。其中,0~1023号端口称为熟知端口,被提供给特定的服务使用;1024~49151号端口称为注册端口,由IANA记录和追踪;49152~65535号端口称为动态端口或专用端口,提供给专用应用程序。 许多常用的服务使用的是标准的端口,只要扫描到相应的端口,就能知道目标主机上运行着什么服务。端口扫描技术就是利用这一点向目标系统的TCP/UDP端口发送探测数据包,记录目标系统的响应,通过分析响应来查看该系统处于监听或运行状态的服务。
端口扫描技术 当确定了目标主机可达后,就可以使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。端口扫描技术包括以下几种: 全扫描 会产生大量的审计数据,容易被对方发现,但其可靠性高。 半扫描 隐蔽性和可靠性介于全扫描和秘密扫描之间。 秘密扫描 能有效的避免对方入侵检测系统和防火墙的检测,但使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息。 认证(ident)扫描 需要先建立一个完整的TCP连接。 FTP代理扫描 隐蔽性好,难以追踪。但受到服务器设置的限制。 2017/2/25 网络入侵与防范讲义 150
全扫描 全扫描原理 全扫描过程 全扫描特点 2017/2/25 网络入侵与防范讲义 151
全扫描--全扫描原理 全TCP连接是TCP端口扫描的基础。 扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。 连接由系统调用connect()开始。如果端口开放,则连接将建立成功;否则,返回-1,则表示端口关闭。 全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。 连接由系统调用connect()开始。对于每一个监听端口,connect()可能会获得成功,否则返回-1,表示端口不可访问。在通常情况下,这样做并不需要什么特权,所以,几乎所有的用户(包括多用户环境下)都可以通过connect()来实现这个操作。 这种扫描方法很容易被检测出来(在日志文件中会有大量密集的连接和错误记录)。Courtney,Gabriel和TCP Wrapper监测程序通常用来对扫描进行监测。另外,TCP Wrapper可以对连接请求进行控制,所以,他可以用来阻止来自不明主机的全连接扫描过程。 2017/2/25 网络入侵与防范讲义 152 152
全扫描--全扫描过程(流程图) 全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。 连接由系统调用connect()开始。对于每一个监听端口,connect()可能会获得成功,否则返回-1,表示端口不可访问。在通常情况下,这样做并不需要什么特权,所以,几乎所有的用户(包括多用户环境下)都可以通过connect()来实现这个操作。 这种扫描方法很容易被检测出来(在日志文件中会有大量密集的连接和错误记录)。Courtney,Gabriel和TCP Wrapper监测程序通常用来对扫描进行监测。另外,TCP Wrapper可以对连接请求进行控制,所以,他可以用来阻止来自不明主机的全连接扫描过程。 2017/2/25 网络入侵与防范讲义 153 153
全扫描--全扫描过程(成功) TCP Connect端口扫描服务端与客户端建立连接成功(目标端口开放)的过程: (1)Client端发送SYN; (2)Server端返回SYN/ACK,表明端口开放; (3)Client端返回ACK,表明连接已建立; (4)Client端主动断开连接。 全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。 连接由系统调用connect()开始。对于每一个监听端口,connect()可能会获得成功,否则返回-1,表示端口不可访问。在通常情况下,这样做并不需要什么特权,所以,几乎所有的用户(包括多用户环境下)都可以通过connect()来实现这个操作。 这种扫描方法很容易被检测出来(在日志文件中会有大量密集的连接和错误记录)。Courtney,Gabriel和TCP Wrapper监测程序通常用来对扫描进行监测。另外,TCP Wrapper可以对连接请求进行控制,所以,他可以用来阻止来自不明主机的全连接扫描过程。 2017/2/25 网络入侵与防范讲义 154 154
全扫描--全扫描过程(成功) 建立连接成功(目标端口开放)如图所示: ACK SYN/ACK SYN Client 端 Server 端 全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。 连接由系统调用connect()开始。对于每一个监听端口,connect()可能会获得成功,否则返回-1,表示端口不可访问。在通常情况下,这样做并不需要什么特权,所以,几乎所有的用户(包括多用户环境下)都可以通过connect()来实现这个操作。 这种扫描方法很容易被检测出来(在日志文件中会有大量密集的连接和错误记录)。Courtney,Gabriel和TCP Wrapper监测程序通常用来对扫描进行监测。另外,TCP Wrapper可以对连接请求进行控制,所以,他可以用来阻止来自不明主机的全连接扫描过程。 2017/2/25 网络入侵与防范讲义 155 155
全扫描--全扫描过程(未成功) TCP Connect端口扫描服务端与客户端未建立连接成功(目标端口关闭)过程: (1)Client端发送SYN; (2)Server端返回RST/ACK,表明端口未开放。 全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。 连接由系统调用connect()开始。对于每一个监听端口,connect()可能会获得成功,否则返回-1,表示端口不可访问。在通常情况下,这样做并不需要什么特权,所以,几乎所有的用户(包括多用户环境下)都可以通过connect()来实现这个操作。 这种扫描方法很容易被检测出来(在日志文件中会有大量密集的连接和错误记录)。Courtney,Gabriel和TCP Wrapper监测程序通常用来对扫描进行监测。另外,TCP Wrapper可以对连接请求进行控制,所以,他可以用来阻止来自不明主机的全连接扫描过程。 2017/2/25 网络入侵与防范讲义 156 156
全扫描--全扫描过程(未成功) 未建立连接成功(目标端口关闭)如图所示 : RST RST/ACK SYN Client 端 Server 端 全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。 连接由系统调用connect()开始。对于每一个监听端口,connect()可能会获得成功,否则返回-1,表示端口不可访问。在通常情况下,这样做并不需要什么特权,所以,几乎所有的用户(包括多用户环境下)都可以通过connect()来实现这个操作。 这种扫描方法很容易被检测出来(在日志文件中会有大量密集的连接和错误记录)。Courtney,Gabriel和TCP Wrapper监测程序通常用来对扫描进行监测。另外,TCP Wrapper可以对连接请求进行控制,所以,他可以用来阻止来自不明主机的全连接扫描过程。 2017/2/25 网络入侵与防范讲义 157 157
全扫描--全扫描特点(优点) 优点是实现简单,对操作者的权限没有严格要求(有些类型的端口扫描需要操作者具有root权限),系统中的任何用户都有权力使用这个调用。 另一优点是扫描速度快。如果对每个目标端口以线性的方式,使用单独的connect()调用,可以通过同时打开多个套接字,从而加速扫描。 2017/2/25 网络入侵与防范讲义 158
全扫描--全扫描特点(缺点) 扫描方式不隐蔽 这种扫描方法很容易被检测出来,在日志文件中会有大量密集的连接和错误记录 并容易被防火墙发现和屏蔽 这种扫描方法的缺点是会在目标主机的日志记录中留下痕迹,易被发现,并且数据包会被过滤掉。目标主机的logs文件会显示一连串的连接和连接出错的服务信息,并且能很快地使它关闭。 2017/2/25 网络入侵与防范讲义 159 159
半扫描 TCP SYN扫描的原理 TCP SYN扫描的过程 TCP SYN扫描的特点 在这种技术中,扫描主机向目标主机的选择端口发送SYN数据段。如果应答是RST,那么,说明端口是关闭的,按照设定继续探听其他端口;如果应答中包含SYN和ACK,说明目标端口处于监听状态。由于SYN扫描时,全连接尚未建立,所以,这种技术通常被称为“半连接”扫描。 SYN扫描的优点在于即使日志中对于扫描有所记录,但是尝试进行连接的记录也要比全扫描的记录少的多。缺点是在大部分操作系统中,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者得到授权的用户,才能访问专门的系统调用。 2017/2/25 网络入侵与防范讲义 160 160
TCP SYN扫描--原理 在这种技术中,扫描主机向目标主机的选择端口发送SYN数据段。 如果应答是RST,那么,说明端口是关闭的,按照设定继续探听其他端口; 如果应答中包含SYN和ACK,说明目标端口处于监听状态。 由于SYN扫描时,全连接尚未建立,所以,这种技术通常被称为“半连接”扫描。 在这种技术中,扫描主机向目标主机的选择端口发送SYN数据段。如果应答是RST,那么,说明端口是关闭的,按照设定继续探听其他端口;如果应答中包含SYN和ACK,说明目标端口处于监听状态。由于SYN扫描时,全连接尚未建立,所以,这种技术通常被称为“半连接”扫描。 SYN扫描的优点在于即使日志中对于扫描有所记录,但是尝试进行连接的记录也要比全扫描的记录少的多。缺点是在大部分操作系统中,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者得到授权的用户,才能访问专门的系统调用。 2017/2/25 网络入侵与防范讲义 161 161
TCP SYN扫描--过程(成功) RST SYN/ACK SYN Client 端 Server 端 SYN扫描的优点在于即使日志中对于扫描有所记录,但是尝试进行连接的记录也要比全扫描的记录少的多。缺点是在大部分操作系统中,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者得到授权的用户,才能访问专门的系统调用。 2017/2/25 网络入侵与防范讲义 162 162
TCP SYN扫描--过程(未成功) 在这种技术中,扫描主机向目标主机的选择端口发送SYN数据段。如果应答是RST,那么,说明端口是关闭的,按照设定继续探听其他端口;如果应答中包含SYN和ACK,说明目标端口处于监听状态。由于SYN扫描时,全连接尚未建立,所以,这种技术通常被称为“半连接”扫描。 SYN扫描的优点在于即使日志中对于扫描有所记录,但是尝试进行连接的记录也要比全扫描的记录少的多。缺点是在大部分操作系统中,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者得到授权的用户,才能访问专门的系统调用。 2017/2/25 网络入侵与防范讲义 163 163
TCP SYN扫描--特点 SYN扫描的优点在于即使日志中对于扫描有所记录,但是尝试进行连接的记录也要比全扫描的记录少的多。 SYN扫描缺点是在大部分操作系统中,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者得到授权的用户,才能访问专门的系统调用。 2017/2/25 网络入侵与防范讲义 164
秘密扫描 TCP FIN扫描的原理 TCP FIN扫描的过程 TCP FIN扫描的特点 两个变种 Null扫描 Xmas扫描 有的时候有可能SYN扫描还是不够隐蔽。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN扫描数据包就有可能通过而不会有什么麻烦。这种扫描方法的思想是关闭的端口会用适当的RST来恢复FIN数据包。另外一方面,打开的端口会忽略对FIN数据包的回复。 由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。另外,FIN数据包能够通过之监测SYN包的包过滤器。因此,TCP FIN扫描又被称作秘密扫描。 TCP FIN扫描技术使用FIN数据包来探测端口。当一个FIN数据包到达一个关闭的端口时,数据包会被丢掉,并且返回一个RST数据包。当一个FIN数据包到达一个打开的端口,数据包只是简单的丢掉(不返回RST数据包)。Xmas和Null扫描是秘密扫描的两个变种。Xmas扫描打开FIN、URG和PUSH标记,而Null扫描关闭所有标记。使用这些组合的目的是为了通过所谓的FIN标记监测器的过滤。 TCP FIN扫描通常适用于UNIX目标主机,除去少量的应当丢掉的数据包却发送Reset信号的操作系统(包括CISCO,BSDI,HP/UX,MVS和IRIX)。在Windows 95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。这在区分UNIX和NT时,是十分有用的。和SYN扫描类似,秘密扫描也需要构造自己的IP包。 2017/2/25 网络入侵与防范讲义 165 165
TCP FIN扫描--原理 TCP FIN扫描技术使用FIN数据包探测端口: 当一个FIN数据包到达一个关闭的端口,数据包会被丢掉,且返回一个RST数据包。 当一个FIN数据包到达一个打开的端口,数据包只是简单丢掉(不返回RST数据包)。 由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。 FIN数据包能通过监测SYN包的包过滤器——TCP FIN扫描又称作秘密扫描。 有的时候有可能SYN扫描还是不够隐蔽。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN扫描数据包就有可能通过而不会有什么麻烦。这种扫描方法的思想是关闭的端口会用适当的RST来恢复FIN数据包。另外一方面,打开的端口会忽略对FIN数据包的回复。 由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。另外,FIN数据包能够通过之监测SYN包的包过滤器。因此,TCP FIN扫描又被称作秘密扫描。 TCP FIN扫描技术使用FIN数据包来探测端口。当一个FIN数据包到达一个关闭的端口时,数据包会被丢掉,并且返回一个RST数据包。当一个FIN数据包到达一个打开的端口,数据包只是简单的丢掉(不返回RST数据包)。Xmas和Null扫描是秘密扫描的两个变种。Xmas扫描打开FIN、URG和PUSH标记,而Null扫描关闭所有标记。使用这些组合的目的是为了通过所谓的FIN标记监测器的过滤。 TCP FIN扫描通常适用于UNIX目标主机,除去少量的应当丢掉的数据包却发送Reset信号的操作系统(包括CISCO,BSDI,HP/UX,MVS和IRIX)。在Windows 95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。这在区分UNIX和NT时,是十分有用的。和SYN扫描类似,秘密扫描也需要构造自己的IP包。 2017/2/25 网络入侵与防范讲义 166 166
TCP FIN扫描--过程(成功) 扫描主机向目标主机发送FIN数据包来探听端口,若FIN数据包到达的是一个打开的端口,数据包则被简单的丢掉,并不返回任何信息,如图所示: 有的时候有可能SYN扫描还是不够隐蔽。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN扫描数据包就有可能通过而不会有什么麻烦。这种扫描方法的思想是关闭的端口会用适当的RST来恢复FIN数据包。另外一方面,打开的端口会忽略对FIN数据包的回复。 由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。另外,FIN数据包能够通过之监测SYN包的包过滤器。因此,TCP FIN扫描又被称作秘密扫描。 TCP FIN扫描技术使用FIN数据包来探测端口。当一个FIN数据包到达一个关闭的端口时,数据包会被丢掉,并且返回一个RST数据包。当一个FIN数据包到达一个打开的端口,数据包只是简单的丢掉(不返回RST数据包)。Xmas和Null扫描是秘密扫描的两个变种。Xmas扫描打开FIN、URG和PUSH标记,而Null扫描关闭所有标记。使用这些组合的目的是为了通过所谓的FIN标记监测器的过滤。 TCP FIN扫描通常适用于UNIX目标主机,除去少量的应当丢掉的数据包却发送Reset信号的操作系统(包括CISCO,BSDI,HP/UX,MVS和IRIX)。在Windows 95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。这在区分UNIX和NT时,是十分有用的。和SYN扫描类似,秘密扫描也需要构造自己的IP包。 2017/2/25 网络入侵与防范讲义 167 167
TCP FIN扫描--过程(未成功) 当FIN数据包到达一个关闭的端口,TCP会把它判断成是错误,数据包会被丢掉,并且回返回一个RST数据包,如图所示: 有的时候有可能SYN扫描还是不够隐蔽。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN扫描数据包就有可能通过而不会有什么麻烦。这种扫描方法的思想是关闭的端口会用适当的RST来恢复FIN数据包。另外一方面,打开的端口会忽略对FIN数据包的回复。 由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。另外,FIN数据包能够通过之监测SYN包的包过滤器。因此,TCP FIN扫描又被称作秘密扫描。 TCP FIN扫描技术使用FIN数据包来探测端口。当一个FIN数据包到达一个关闭的端口时,数据包会被丢掉,并且返回一个RST数据包。当一个FIN数据包到达一个打开的端口,数据包只是简单的丢掉(不返回RST数据包)。Xmas和Null扫描是秘密扫描的两个变种。Xmas扫描打开FIN、URG和PUSH标记,而Null扫描关闭所有标记。使用这些组合的目的是为了通过所谓的FIN标记监测器的过滤。 TCP FIN扫描通常适用于UNIX目标主机,除去少量的应当丢掉的数据包却发送Reset信号的操作系统(包括CISCO,BSDI,HP/UX,MVS和IRIX)。在Windows 95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。这在区分UNIX和NT时,是十分有用的。和SYN扫描类似,秘密扫描也需要构造自己的IP包。 2017/2/25 网络入侵与防范讲义 168 168
TCP FIN扫描--特点 秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。 和SYN扫描类似,秘密扫描也需要构造自己的IP包。 有的时候有可能SYN扫描还是不够隐蔽。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN扫描数据包就有可能通过而不会有什么麻烦。这种扫描方法的思想是关闭的端口会用适当的RST来恢复FIN数据包。另外一方面,打开的端口会忽略对FIN数据包的回复。 由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。另外,FIN数据包能够通过之监测SYN包的包过滤器。因此,TCP FIN扫描又被称作秘密扫描。 TCP FIN扫描技术使用FIN数据包来探测端口。当一个FIN数据包到达一个关闭的端口时,数据包会被丢掉,并且返回一个RST数据包。当一个FIN数据包到达一个打开的端口,数据包只是简单的丢掉(不返回RST数据包)。Xmas和Null扫描是秘密扫描的两个变种。Xmas扫描打开FIN、URG和PUSH标记,而Null扫描关闭所有标记。使用这些组合的目的是为了通过所谓的FIN标记监测器的过滤。 TCP FIN扫描通常适用于UNIX目标主机,除去少量的应当丢掉的数据包却发送Reset信号的操作系统(包括CISCO,BSDI,HP/UX,MVS和IRIX)。在Windows 95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。这在区分UNIX和NT时,是十分有用的。和SYN扫描类似,秘密扫描也需要构造自己的IP包。 2017/2/25 网络入侵与防范讲义 169 169
TCP FIN扫描--特点(2) TCP FIN扫描通常适用于UNIX目标主机。 在Windows NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。这在区分UNIX和NT时,是十分有用的。 2017/2/25 网络入侵与防范讲义 170
TCP FIN扫描的两个变种 Xmas和Null扫描是秘密扫描的两个变种 使用这些组合的目的是为了通过所谓的FIN标记监测器的过滤。 Xmas扫描打开FIN、URG和PSH标记 而Null扫描关闭所有标记 使用这些组合的目的是为了通过所谓的FIN标记监测器的过滤。 2017/2/25 网络入侵与防范讲义 171
TCP FIN扫描的变种--Null扫描 扫描主机将TCP数据包中的ACK(确认)、FIN(结束连接)、RST(重新设定连接)、SYN(连接同步化要求)、URG(紧急)、PSH(接收端将数据转由应用处理)标志位置空后发送给目标主机。 2017/2/25 网络入侵与防范讲义 172
TCP FIN扫描的变种--Null扫描 若目标端口开放,目标主机将不返回任何信息,如图所示: 若目标主机返回RST信息,则表示端口关闭,如图所示: 2017/2/25 网络入侵与防范讲义 173
TCP FIN扫描的变种-XMAS扫描 XMAS扫描原理和NULL扫描的类似,将TCP数据包中的ACK、FIN、RST、SYN、URG、PSH标志位置1后发送给目标主机。 2017/2/25 网络入侵与防范讲义 174
TCP FIN扫描的变种-XMAS扫描 若目标端口开放,目标主机将不返回任何信息,如图所示: 若目标主机返回RST信息,则表示端口关闭,如图所示: 2017/2/25 网络入侵与防范讲义 175
认证(ident)扫描 认证(ident)协议一般用于网络连接过程中服务器验证客户端身份,因而监听TCP 113端口的ident服务应该是安装在客户端的,并由该TCP连接的服务端向客户端的113号端口发起认证连接。 连接过程:当客户端向服务器发送某个连接请求后,服务器便先向客户端的TCP 113端口发起连接,询问客户端该进程的拥有者名称,也就是问问“现在要连上我的这个家伙,在你那儿是什么身份”。服务器获取这一信息并认证成功后,记录下“某年某月某日谁连到我的机器上”,再建立服务连接进行通信。 2017/2/25 网络入侵与防范讲义 176
认证(ident)扫描 在端口扫描中,利用这一协议,扫描程序先主动尝试与目标主机建立起一个TCP连接(如Http连接等),连接成功之后,它向目标主机的TCP 113端口建立另一连接,并通过该连接向目标主机的ident服务发送第一个TCP连接所对应的两个端口号。如果目标主机安装并运行了ident服务,那么该服务将向扫描程序返回相关联的进程的用户属性等信息。 由于在此过程中,扫描程序先以客户方身份与目标主机建立连接,后又以服务方身份对目标主机进行认证,因此这种扫描方式也被称为反向认证扫描。不过,这种方法只能在和目标端口建立了一个完整的TCP连接后才能发挥作用。
FTP代理扫描 文件传输协议(FTP)允许数据连接与控制连接位于不同的机器上,并支持代理FTP连接。FTP代理扫描正是利用了这个缺陷,使用支持代理的FTP服务器来扫描TCP端口。这种扫描方式又被称为FTP反弹扫描(FTP Bounce Attack)。 扫描程序先在本地与一个支持代理的FTP服务器建立控制连接,然后使用PORT命令向FTP服务器声明欲扫描的目标机器的IP地址和端口号,其中IP地址为代理传输的目的地址,而端口号则为传输时所需的被动端口,并发送LIST命令。这时,FTP服务器会尝试向目标主机指定端口发起数据连接请求。
FTP代理扫描 如果目标主机对应端口确实处于监听状态,FTP服务器就会向扫描程序返回成功信息,返回码为150和226。否则返回类似这样的错误信息:“425 Can’t build data connection: Connection refused”。 扫描程序持续使用PORT和LIST命令,直到目标机器上所有的选择端口扫描完毕。 这种方式隐藏性很好,难以跟踪,能轻而易举的绕过防火墙。不过对所有需扫描的端口都要逐一进行上述步骤,速度比较慢。而且,现在许多FTP服务器都禁止了代理这一特性。
远程主机OS指纹识别 基本原理 主动协议栈指纹识别 被动协议栈指纹识别 2017/2/25 网络入侵与防范讲义 180
远程主机OS指纹识别的基本原理 操作系统(Operating System,简称OS)识别是入侵或安全检测需要收集的重要信息,是分析漏洞和各种安全隐患的基础。 只有确定了远程主机的操作系统类型、版本,才能对其安全状况作进一步的评估。 利用TCP/IP堆栈作为特殊的“指纹”,以确定系统的技术——远程主机OS指纹识别。 主动协议栈指纹识别 被动协议栈指纹识别 2017/2/25 网络入侵与防范讲义 181
主动协议栈指纹识别 由于TCP/IP协议栈技术只是在RFC文档中描述,各个公司在编写应用于自己的OS的TCP/IP协议栈的时候,对RFC文档做出了不尽相同的诠释。 造成了各个OS在TCP/IP协议的实现上的不同。 通过对不同的OS的TCP/IP协议栈存在的些微差异的鉴别来判定OS类型。 主动协议栈指纹识别 由于TCP/IP协议栈技术只是在RFC文档中描述,并没有一个统一的行业标准,于是各个公司在编写应用于自己的OS的TCP/IP协议栈的时候,对RFC文档做出了不尽相同的诠释,造成了各个OS在TCP/IP协议的实现上的不同。通过对不同的OS的TCP/IP协议栈存在的些微差异的鉴别来判定OS类型。 (1)FIN探测 通过向目标主机上的一个打开的端口发送一个FIN分组(或无ACK和SYN标记的包),然后等待回应;许多系统如:WINNT、CISCO IOS、HP/UX、IRIX的TCP/IP协议栈实现将返回一个Reset。 (2)BOGUS标记探测 发送一个含有未定义的TCP标记的TCP头的SYN包,那么一些OS如LINUX的回应将包含这个未定义的标记,在其它一些系统收到SYN+BOGU包将关闭连接。利用这些特性可以标识一些OS。 (3)ISN采样探测 这是寻找初始化序列长度模板与特定的OS匹配的方法,这样可以区分一些OS,如早些的UNIX系统是64 K长度。而一些新的UNIX系统则是随机增加长度,如Solaris、IRIX、FreeBSD、Digital Unix、Cray等。 (4)Don’t Fragment位探测 一些操作系统会设置IP头部“Don’t Fragment位”(不分片位)以改善性能,监视这个位就可以判定区分远程OS。 (5)TCP初始窗口的大小检测 简单检查返回的包里包含的窗口大小。某些OS在TCP/IP协议栈的实现中,这个值是独特的。如AIX是0x3F25,NT和BSD是0x402E,可以增加指纹鉴别的准确度。 (6)TCP可选项探测 利用发送的TCP包里所设定的一些TCP可选项,根据返回包的内容判断OS。 (7)ACK值探测 不同的OS对TCP/IP协议栈实现在ACK包的序列号的值的选择上存在差异,有些OS发回所确认的TCP包的序列号,另外一些则发回所确认的TCP包的序列号加1。 (8)ICMP出错消息抑制 有些OS限制ICMP出错消息的速率,通过某个随机选定的高端口发送UDP包,可能统计出在某个给定时间段内接受的不可达出错消息的数目。 (9)ICMP出错消息引用 当需要发送ICMP出错消息时,不同的OS在引用网络包时的信息量不同。通过检测所引用的消息可以粗略的判断OS。 (10)ICMP出错消息回射完整性 某些OS对TCP/IP协议栈的实现在返回ICMP出错消息的时候会修改所引用的IP头,检测对IP头的改动的类型可以粗略判断OS。 (11)TOS服务类型 检测ICMP端口不可到达消息的TOS字段,多数OS会是0,而另一些则不是。 (12)片断处理 不同的TCP/IP协议栈实现对重叠的片断处理上有差异。有些在重组时会用到后到达的新数据覆盖就数据,有些则相反。 2017/2/25 网络入侵与防范讲义 182 182
主动协议栈指纹识别(2) 主要技术有: FIN探测 ISN采样探测 Don’t Fragment位探测 TCP初始窗口的大小检测 ACK值探测 ICMP出错消息抑制 ICMP出错消息回射完整性 TOS服务类型 片断处理 2017/2/25 网络入侵与防范讲义 183
FIN探测 通过向目标主机上的一个打开的端口发送一个FIN分组,然后等待回应;许多系统如:WINNT、CISCO IOS、HP/UX、IRIX的TCP/IP协议栈实现将返回一个Reset。 2017/2/25 网络入侵与防范讲义 184
ISN采样探测 这是寻找初始化序列长度模板与特定的OS匹配的方法,这样可以区分一些OS,如早些的UNIX系统是64 K长度。而一些新的UNIX系统则是随机增加长度,如Solaris、IRIX、FreeBSD、Digital Unix、Cray等。 2017/2/25 网络入侵与防范讲义 185
Don’t Fragment位探测 一些操作系统会设置IP头部“Don’t Fragment位”(不分片位)以改善性能,监视这个位就可以判定区分远程OS。 2017/2/25 网络入侵与防范讲义 186
TCP初始窗口大小探测 简单检查返回的包里包含的窗口大小。某些OS在TCP/IP协议栈的实现中,这个值是独特的。如AIX是0x3F25,NT和BSD是0x402E,可以增加指纹鉴别的准确度。 2017/2/25 网络入侵与防范讲义 187
ACK值探测 不同的OS对TCP/IP协议栈实现在ACK包的序列号的值的选择上存在差异,有些OS发回所确认的TCP包的序列号,另外一些则发回所确认的TCP包的序列号加1。 2017/2/25 网络入侵与防范讲义 188
ICMP出错信息抑制 有些OS限制ICMP出错消息的速率,通过某个随机选定的高端口发送UDP包,可能统计出在某个给定时间段内接受的不可达出错消息的数目。 2017/2/25 网络入侵与防范讲义 189
ICMP出错消息回射完整性 某些OS对TCP/IP协议栈的实现在返回ICMP出错消息的时候会修改所引用的IP头,检测对IP头的改动的类型可以粗略判断OS。 2017/2/25 网络入侵与防范讲义 190
TOS服务类型 检测ICMP端口不可到达消息的TOS字段,多数OS会是0,而另一些则不是。 2017/2/25 网络入侵与防范讲义 191
片断处理 不同的TCP/IP协议栈实现对重叠的片断处理上有差异。有些在重组时会用到后到达的新数据覆盖旧数据,有些则相反。 2017/2/25 网络入侵与防范讲义 192
被动协议栈指纹识别 主动协议栈指纹识别由于需要主动往目标发送数据包,但这些数据包在网络流量中比较惹人注意,因为正常使用网络不会按这样的顺序出现包,因此比较容易被IDS扑获。 为了隐秘的识别远程OS,需要使用被动协议栈指纹识别。 主动协议栈指纹识别由于需要主动往目标发送数据包,但这些数据包在网络流量中比较惹人注意,因为正常使用网络不会按这样的顺序出现包,因此比较容易被IDS扑获。为了隐秘的识别远程OS,需要使用被动协议栈指纹识别。 被动协议栈指纹识别在原理上和主动协议栈指纹识别相似,但是它从不主动发送数据包,只是被动的捕获远程主机返回的包来分析其OS类型版本,一般可以从4个反面着手: (1)TTL值:这个数据是操作系统对出站的信息包设置的存活时间。 (2)Windows Size:操作系统设置的TCP窗口大小,这个窗口大小是在发送FIN信息包时包含的选项。 (3)DF:可以查看操作系统是否设置了不准分片位。 (4)TOS:操作系统是否设置了服务类型。 被动分析这些属性并将得到的结果与属性库比较,以判断远程OS类型。当然探测到的系统不可能100%正确,也不可能依靠上面的单个的信号特征来判断系统,但是,通过查看多个信号特征和组合这些信息,可以增加对远程主机的精确程度。 2017/2/25 网络入侵与防范讲义 193 193
被动协议栈指纹识别(2) 被动协议栈指纹识别在原理上和主动协议栈指纹识别相似,但是它从不主动发送数据包,只是被动的捕获远程主机返回的包来分析其OS类型版本,一般可以从4个反面着手: TTL值:这个数据是操作系统对出站的信息包设置的存活时间。 Windows Size:操作系统设置的TCP窗口大小,这个窗口大小是在发送FIN信息包时包含的选项。 DF:可以查看操作系统是否设置了不准分片位。 TOS:操作系统是否设置了服务类型。 当然探测到的系统不可能100%正确,也不可能依靠上面的单个的信号特征来判断系统,但是,通过查看多个信号特征和组合这些信息,可以增加对远程主机的精确程度。 2017/2/25 网络入侵与防范讲义 194 194
漏洞扫描 漏洞扫描技术的原理 漏洞扫描技术的分类和实现方法 漏洞扫描的问题 2017/2/25 网络入侵与防范讲义 195
漏洞扫描--原理 漏洞扫描主要通过以下两种方法来检查目标主机是否存在漏洞: 基于漏洞库的特征匹配:通过端口扫描得知目标主机开启的端口以及端口上的网络服务后,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足匹配条件的漏洞存在; 基于模拟攻击:通过模拟黑客的攻击手段,编写攻击模块,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,若模拟攻击成功,则表明目标主机系统存在安全漏洞。 2017/2/25 网络入侵与防范讲义 196
漏洞扫描--分类和实现方法 基于网络系统漏洞库,漏洞扫描大体包括CGI漏洞扫描、POP3漏洞扫描、FTP漏洞扫描、SSH漏洞扫描、HTTP漏洞扫描等。这些漏洞扫描是基于漏洞库,将扫描结果与漏洞库相关数据匹配比较得到漏洞信息; 漏洞扫描还包括没有相应漏洞库的各种扫描,比如Unicode遍历目录漏洞探测、FTP弱势密码探测、OPENRelay邮件转发漏洞探测等,这些扫描通过使用插件(功能模块技术)进行模拟攻击,测试出目标主机的漏洞信息。 下面就这两种扫描的实现方法进行讨论。 2017/2/25 网络入侵与防范讲义 197
漏洞扫描--分类和实现方法 基于漏洞库的规则匹配 基于网络系统漏洞库的漏洞扫描的关键部分就是它所使用的漏洞库。通过采用基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员对网络系统安全配置的实际经验,可以形成一套标准的网络系统漏洞库,然后再在此基础之上构成相应的匹配规则,由扫描程序自动的进行漏洞扫描的工作。 这样,漏洞库信息的完整性和有效性决定了漏洞扫描系统的性能,漏洞库的修订和更新的性能也会影响漏洞扫描系统运行的时间。因此,漏洞库的编制不仅要对每个存在安全隐患的网络服务建立对应的漏洞库文件,而且应当能满足前面所提出的性能要求。 2017/2/25 网络入侵与防范讲义 198
漏洞扫描--分类和实现方法 基于模拟攻击 将模拟攻击的模块做成插件的形式,插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的一个或多个漏洞。添加新的插件就可以使漏洞扫描软件增加新的功能,扫描出更多的漏洞。插件编写规范化后,甚至用户自己都可以用perl、c或自行设计的脚本语言编写的插件来扩充漏洞扫描软件的功能。 这种技术使漏洞扫描软件的升级维护变得相对简单,而专用脚本语言的使用也简化了编写新插件的编程工作,使漏洞扫描软件具有强的扩展性。 2017/2/25 网络入侵与防范讲义 199
漏洞扫描--问题 系统配置规则库问题 如果规则库设计的不准确,预报的准确度就无从谈起; 它是根据已知的安全漏洞进行安排和策划的,而对网络系统的很多危险的威胁却是来自未知的漏洞,这样,如果规则库更新不及时,预报准确度也会逐渐降低。 2017/2/25 网络入侵与防范讲义 200
漏洞扫描--问题 漏洞库信息要求 漏洞库信息是基于网络系统漏洞库的漏洞扫描的主要判断依据。如果漏洞库信息不全面或得不到即时的更新,不但不能发挥漏洞扫描的作用,还会给系统管理员以错误的引导,从而对系统的安全隐患不能采取有效措施并及时的消除。 2017/2/25 网络入侵与防范讲义 201
2.3 扫描工具赏析 扫描工具概述 如何获取扫描工具 常用扫描工具 常用扫描工具比较 其它扫描工具 2017/2/25 网络入侵与防范讲义 202
扫描工具概述 如果扫描范围具有一定的规模,比如要在一个较大的范围内对网络系统进行安全评估,那就需要使用一些多功能的综合性工具。 一般来说,这些多功能的综合性扫描工具,都可以对大段的网络IP进行扫描,其扫描内容非常广泛,基本上包含了各种专项扫描工具的各个方面。 我们将要介绍的扫描工具都是综合性扫描工具。 如果扫描范围具有一定的规模,比如要在一个较大的范围内对网络系统进行安全评估,那就需要使用一些多功能的综合性工具。一般来说,这些多功能的综合性扫描工具,都可以对大段的网络IP进行扫描,其扫描内容非常广泛,基本上包含了各种专项扫描工具的各个方面,而且最为关键的,这些扫描工具所生成的结果报告非常详实,往往会分门别类的对得到的漏洞信息进行扫描,并给出解决办法。这对于一个网络管理员来说就很有意义。 也许是考虑专门为管理员作系统评估测试使用,这些大型工具往往会产生一些特殊的报警及日志信息,而且及时没有专门的提示,当前许多IDS产品也可以识别出这类工具特征明显的扫描活动。 2017/2/25 网络入侵与防范讲义 203 203
如何获取扫描工具 扫描工具大本营 各种工具的官方主页 http://www.xfocus.net/tools/1.html(xfocus的网站上的,下载速度也还可以接受) http://www.3800cc.com/(黑鹰基地华南站,菜鸟级工具较多) 各种工具的官方主页 http://www.nessus.org/ http://www.nmap.com/ 有些工具是系统自带的,比如windows和linux中的ping,linux中的nmap 2017/2/25 网络入侵与防范讲义 204
常用扫描工具 SATAN 古老的经典 Nmap 扫描技术集大成者 Nessus 黑客的血滴子,网管的百宝箱 X-scan 国内黑客的最爱 2017/2/25 网络入侵与防范讲义 205
SATAN SATAN概述 SATAN的分级 SATAN的特点 轻度扫描 标准扫描 重度扫描 攻入系统 2017/2/25 SATAN是Security Administrator Tool for Analyzing Networks(用于分析网络的安全管理员工具)的缩写,作者是Dan Farmer和Wietse Venema。实际上SATAN在1993年就已经成型了,但是Netscape浏览器的发布,成为一个新的转折点。作者重新改写了程序,所有的操作都通过浏览器来进行。1995年4月5日,SATAN的发布引起了轩然大波。但是引起争论的更重要的原因,主要是SATAN带来了关于网络安全的全新观念。在SATAN发表之前,关于网络安全的防护上,模糊安全论已经有很长一段时间的讨论。所谓的模糊安全的概念,是大多数的软件,特别是操作系统得厂商喜欢处理安全漏洞的一种方法,他们认为安全漏洞应该隐藏,不要在文档中公布,因为很少人会发现这些漏洞,即使有人发现这些漏洞,也不会去研究和利用漏洞。SATAN作者认为这是很可笑的。事实也确实如此,计算机紧急行动小组(Computer Emergency Response Team,简称CERT)在1995年发表的年报表明,1995年发生了12 000起黑客入侵事件。也就是说,即使操作系统厂商不发布安全漏洞公告,仍然有很多安全漏洞被发布到Internet上,被黑客们用来进行攻击。实际上随着软件规模的日益增大,软件出现安全漏洞是不可避免的,尽管程序员一般不会故意在程序中留下漏洞。及时地公布安全漏洞和补丁,让网络管理员及时进行补救,才是正确的方法。而SATAN的公布,的确促使所有的操作系统厂商及时的修正了他们的系统中的漏洞。 Dan Farmer他们在工作中发现,真正的网络安全隐患是人为的因素。关键是人们的安全观念很淡漠,网络配置和组织策略都存在错误。他在SGI工作是,发现很多的主机不断的遭到攻击。他向部门主管提了很多建议,但是,都没有有关的部门来处理这些事情,计算机被攻击的事件仍然不断的发生。 SATAN的出现,带来了网络安全方面的全新的观念:以黑客的方式来思考网络安全的问题。这个观念体现在Farmer和Venema1993年发表的文章《通过攻入你的网站来提高安全》(Improving the Security of Your Site by Breaking Into It)中。 SATAN把扫描分为四个级别。 1. 轻度扫描 轻度扫描包含最少的入侵扫描。SATAN从域名系统(Domain Name System,简称DNS)收集信息,看看主机提供哪些远程过程调用,通过网络提供哪些文件共享。根据这些信息,SATAN就得到主机的一般信息。 2. 标准扫描(包含轻度扫描) 在这个层次上,SATAN探测常见的网络服务,包括finger,remote login,ftp,www,gopher,email等。根据这些信息,SATAN能判断主机的类型,是Windows服务器,还是HP-UNIX,Soloaris还是Linux,甚至还能探测服务器软件的版本。 3. 重度扫描(包含标准扫描) 当知道目标主机提供什么服务之后,SATAN进行更深入的扫描。在这个扫描级别上,SATAN探测匿名服务器的目录是不是可写,X Windows服务器是不是关闭了访问控制,/etc/hosts.equiv文件中是否有“*”号,等等。 4. 攻入系统 这个级别SATAN没有实现。 关于SATAN的体系结构和它的使用方法,请参看相关资料。SATAN作为最早的并且是最典型的入侵扫描工具,具备以下特点: 扫描制定的主机系统 扫描常见的弱点 给数据分析提供帮助 总之,它能够自动的扫描本地和远程系统的弱点,为系统的安全或远程攻击提供帮助。SATAN的这个特点,也是扫描工具的主要特点。 2017/2/25 网络入侵与防范讲义 206 206
SATAN概述 SATAN是Security Administrator Tool for Analyzing Networks(用于分析网络的安全管理员工具)的缩写,作者是Dan Farmer和Wietse Venema。 1995年4月5日,SATAN的发布引起了轩然大波。但是引起争论的更重要的原因,主要是SATAN带来了关于网络安全的全新观念。 实际上SATAN在1993年就已经成型了,但是Netscape浏览器的发布,成为一个新的转折点。作者重新改写了程序,所有的操作都通过浏览器来进行。1995年4月5日,SATAN的发布引起了轩然大波。但是引起争论的更重要的原因,主要是SATAN带来了关于网络安全的全新观念。在SATAN发表之前,关于网络安全的防护上,模糊安全论已经有很长一段时间的讨论。所谓的模糊安全的概念,是大多数的软件,特别是操作系统得厂商喜欢处理安全漏洞的一种方法,他们认为安全漏洞应该隐藏,不要在文档中公布,因为很少人会发现这些漏洞,即使有人发现这些漏洞,也不会去研究和利用漏洞。SATAN作者认为这是很可笑的。事实也确实如此,计算机紧急行动小组(Computer Emergency Response Team,简称CERT)在1995年发表的年报表明,1995年发生了12 000起黑客入侵事件。也就是说,即使操作系统厂商不发布安全漏洞公告,仍然有很多安全漏洞被发布到Internet上,被黑客们用来进行攻击。实际上随着软件规模的日益增大,软件出现安全漏洞是不可避免的,尽管程序员一般不会故意在程序中留下漏洞。及时地公布安全漏洞和补丁,让网络管理员及时进行补救,才是正确的方法。而SATAN的公布,的确促使所有的操作系统厂商及时的修正了他们的系统中的漏洞。 2017/2/25 网络入侵与防范讲义 207 207
SATAN概述(2) 在SATAN发表之前,关于网络安全的防护上,模糊安全论已经有很长一段时间的讨论。 模糊安全的概念——是大多数软件、操作系统厂商喜欢处理安全漏洞的一种方法,他们认为安全漏洞应该隐藏,不要在文档中公布,因为很少人会发现这些漏洞,即使有人发现这些漏洞,也不会去研究和利用漏洞。 2017/2/25 网络入侵与防范讲义 208
SATAN概述(3) 实际上随着软件规模的日益增大,尽管程序员一般不会故意在程序中留下漏洞,软件中出现安全漏洞也是不可避免的。 及时地公布安全漏洞和补丁,让网络管理员及时进行补救,才是正确的方法。 而SATAN的公布,的确促使所有的操作系统厂商意识到应该及时修正他们的系统中的漏洞。 2017/2/25 网络入侵与防范讲义 209
SATAN概述(4) SATAN的出现,带来了网络安全方面的全新的观念:以黑客的方式来思考网络安全的问题。 这个观念体现在Farmer和Venema 于1993年发表的文章《通过攻入你的网站来提高安全》(Improving the Security of Your Site by Breaking Into It)中。 2017/2/25 网络入侵与防范讲义 210
SATAN的分级 轻度扫描 标准扫描 重度扫描 攻入系统 1. 轻度扫描 轻度扫描包含最少的入侵扫描。SATAN从域名系统(Domain Name System,简称DNS)收集信息,看看主机提供哪些远程过程调用,通过网络提供哪些文件共享。根据这些信息,SATAN就得到主机的一般信息。 2. 标准扫描(包含轻度扫描) 在这个层次上,SATAN探测常见的网络服务,包括finger,remote login,ftp,www,gopher,email等。根据这些信息,SATAN能判断主机的类型,是Windows服务器,还是HP-UNIX,Soloaris还是Linux,甚至还能探测服务器软件的版本。 3. 重度扫描(包含标准扫描) 当知道目标主机提供什么服务之后,SATAN进行更深入的扫描。在这个扫描级别上,SATAN探测匿名服务器的目录是不是可写,X Windows服务器是不是关闭了访问控制,/etc/hosts.equiv文件中是否有“*”号,等等。 4. 攻入系统 这个级别SATAN没有实现。 2017/2/25 网络入侵与防范讲义 211 211
轻度扫描 轻度扫描包含最少的入侵扫描。SATAN从域名系统(Domain Name System,简称DNS)收集信息,看看主机提供哪些远程过程调用,通过网络提供哪些文件共享。根据这些信息,SATAN就得到主机的一般信息。 2017/2/25 网络入侵与防范讲义 212
标准扫描 在这个层次上,SATAN探测常见的网络服务,包括finger、remote login、ftp、www、gopher、email等。根据这些信息,SATAN能判断主机的类型,是Windows服务器,还是HP-UNIX,Soloaris还是Linux,甚至还能探测服务器软件的版本。 2017/2/25 网络入侵与防范讲义 213
重度扫描 当知道目标主机提供什么服务之后,SATAN进行更深入的扫描。在这个扫描级别上,SATAN探测匿名服务器的目录是不是可写,X Windows服务器是不是关闭了访问控制,/etc/hosts.equiv文件中是否有“*”号,等等。 2017/2/25 网络入侵与防范讲义 214
攻入系统 本级别还包括了对系统进行的攻击、清扫攻击时留下的痕迹、隐藏自己等,不过SATAN只提出了这一级别的思想,但并没有实现。 2017/2/25 网络入侵与防范讲义 215
SATAN的特点 SATAN作为最早的并且是最典型的扫描工具,具备以下特点: 扫描指定的主机系统 扫描常见的弱点 给数据分析提供帮助 总之,SATAN能够自动扫描本地和远程系统的弱点,为系统的安全或远程攻击提供帮助。 SATAN作为最早的并且是最典型的入侵扫描工具,具备以下特点: 扫描制定的主机系统 扫描常见的弱点 给数据分析提供帮助 总之,它能够自动的扫描本地和远程系统的弱点,为系统的安全或远程攻击提供帮助。SATAN的这个特点,也是扫描工具的主要特点。 2017/2/25 网络入侵与防范讲义 216 216
NMAP NMAP简介 NMAP基本功能 NMAP使用说明 NMAP使用示例 NMAP特点 2017/2/25 网络入侵与防范讲义 217
NMAP简介 Nmap(Network Mapper),是由Fyodor制作的端口扫描工具。 它除了提供基本的TCP和UDP端口扫描功能外,还综合集成了众多扫描技术,可以说,现在的端口扫描技术很大程度上是根据Nmap的功能设置来划分的。 Nmap还有一个卓越的功能,那就是采用一种叫做“TCP栈指纹鉴别(stack fingerprinting)”的技术来探测目标主机的操作系统类型。
NMAP基本功能 其基本功能有三个: 探测一组主机是否在线 扫描主机端口,嗅探所提供的网络服务 还可以推断主机所用的操作系统 主机扫描技术 端口扫描技术 还可以推断主机所用的操作系统 远程主机OS指纹识别
NMAP使用说明 Ping扫描:了解哪些机器是up的 nmap –sP 202.38.64.1 缺省时同时使用发送icmp和对80端口发送ack来探测 可以用nmap –sP –P0 不发送icmp消息 TCP connect扫描: nmap –sT 202.38.64.1 TCP SYN扫描 nmap –sS 202.38.64.1 TCP FIN, XMAS, NULL扫描: nmap –sF 202.38.64.1 nmap –sX 202.38.64.1 nmap –sN 202.38.64.1 UDP扫描: nmap –sU 202.38.64.1 2017/2/25 网络入侵与防范讲义 220
NMAP使用示例(ping扫描) 使用-sP选项进行ping扫描,缺省情况下,Nmap给每个扫描到的主机发送一个ICMP echo包和一个TCP ACK包,主机对这两种包的任何一种产生的响应都会被Nmap得到。Nmap也提供扫描整个网络的简易手段。下图是对一个网段进行ping扫描的情况。 2017/2/25 网络入侵与防范讲义 221
NMAP使用示例(TCP connect扫描) 使用-sT选项指定进行TCP connect端口扫描(全扫描),如果不指定端口号,缺省情况下Nmap会扫描1-1024和nmap-services文件(在Nmap下载包中)中列出的服务端口号。下图是利用-sT对192.168.0.1主机进行TCP connect扫描的情况,扫描端口为TCP21-25、80以及139端口,最终结果显示,21、25、80和139端口是开放的。 2017/2/25 网络入侵与防范讲义 222
Nmap也可以用于进行UDP端口扫描,只需要指定-sU选项,或者还可以指定扫描的目标端口,扫描情况如图所示。 2017/2/25 网络入侵与防范讲义 223
NMAP使用示例(操作系统类型探测) Nmap可以进行目标主机操作系统类型的探测,这需要使用-O选项。另外,我们可以使用-P0选项来指定不进行ping扫描。-v选项可以指定详细结果输出。下图所示的例子中,综合运用了上述选项。 2017/2/25 网络入侵与防范讲义 224
NMAP特点 NMAP 是一款开源的扫描工具, 用于系统管理员查看一个大型的网络有哪些主机以及其上运行何种服务。 它支持多种协议多种形式的扫描技术,还提供一些实用功能如通过TCP/IP来鉴别操作系统类型、秘密扫描、动态延迟和重发、平行扫描、通过并行的PING鉴别下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选择以及端口的描述。 NMAP主要的特色就是多种扫描模式以及指纹识别技术。
Nessus Nessus的特点 Nessus的结构 Nessus的扫描过程 Nessus的安装 Nessus的配置运行 2017/2/25 网络入侵与防范讲义 226
Nessus简介 Nessus是一个功能强大而又简单易用的网络安全扫描工具,对网络管理员来说,它是不可多得的审核堵漏工具。 2000年、2003年、2006年,Nmap官方在Nmap用户中间分别发起“Top 50 Security Tools”、“Top 75 Security Tools”、“Top 100 Security Tools”的评选活动,Nessus“战胜”众多的商业化漏洞扫描工具而三次夺魁。 Nessus被誉为黑客的血滴子,网管的百宝箱。 Nessus 简介 2000年的5、6月间,Fyodor(Nmap的作者)在其nmap-hacker邮件列表(http://lists.insecure.org/#nmap-hackers)的1 200名Nmap用户中间发起关于“最喜爱的安全工具”的评选活动,每个用户最多可以选出5个最佳工具,结果在评选出的钱50名的工具中,Nessus“战胜”众多的商业化漏洞扫描工具而一举夺魁,这充分说明了Nussus 在网络安全工具中的地位。 Nessus是一个功能强大而又简单易用的网络安全扫描工具,对网络管理员来说,它是不可多得的审核堵漏工具。Nessus是一个完全免费的软件,而且更新速度很快。与众不同的是,Nessus被设计成为客户/服务器结构模式,服务器负责进行安全扫描检查,客户端用于配置管理服务器并显示最终结果,服务器还采用了插件的体系,允许用户加入执行特定功能的插件,便于进行更快和更复杂灵活的安全检查。Nessus的扫描结果报告可以以HTML、纯文本、LaTeX(一种文本格式)等几种格式保存。 Nessus的服务器只能安装在UNIX平台上,客户端有三种:GTK支持的客户端、Java客户端、Windows系统支持的客户端。 2017/2/25 网络入侵与防范讲义 227 227
Nessus简介(2) Nessus采用基于插件的技术。 工作原理是通过插件模拟黑客的攻击,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,若模拟攻击成功,则表明目标主机系统存在安全漏洞。 Nessus可以完成多项安全工作,如扫描选定范围内的主机的端口开放情况、提供的服务、是否存在安全漏洞等等。 2017/2/25 网络入侵与防范讲义 228
Nessus的特点 它是免费的,比起商业的安全扫描工具如ISS具有价格优势。 采用了基于多种安全漏洞的扫描,避免了扫描不完整的情况。 2017/2/25 网络入侵与防范讲义 229
Nessus的功能与所用的技术 主机扫描技术 端口扫描技术 远程主机OS识别 漏洞扫描技术 这是比Nmap多的功能 2017/2/25 网络入侵与防范讲义 230
Nessus的结构 2017/2/25 网络入侵与防范讲义 231
Nessus的扫描过程 2017/2/25 网络入侵与防范讲义 232
Nessus的安装 Nessus的服务器可以安装在Linux、FreeBSD、Solaris、Mac OS X、Windows上。 客户端有Linux/Windows的GUI。 如果想在多台计算机中使用Nessus,可以在一台计算机中安装服务器,其它计算机中安装客户端,客户端连接到服务器就可以进行扫描。 服务器自带了扫描功能。 2. Nessus的安装 Nessus服务器的安装有好几种方法,最简单就是直接从网上安装: lynx –source http://install.nessus.org | sh 进入lynx的用户交互界面,借助Nessus Install Script进行网络安装,需要root权限。第二种安装方法,直接下载Nessus的安装包nessus-installer.sh,并执行: sh nessus-installer.sh 第三种安装方法,也是传统的安装方法,下载源代码压缩包,进行安装。 Nessus安装完毕以后,要确认在/etc/ld.so.conf文件中加入了已安装库文件的路径,保证Nessus运行时能找到必须的运行库。如果/etc/ld.so.conf文件中没有库文件的安装路径,只需要加入路径信息,然后执行“/sbin/ldconfig”。 2017/2/25 网络入侵与防范讲义 233 233
Nessus的安装(2) 在Windows下安装Nessus 3(服务端),安装完成后主界面如图。 2017/2/25 网络入侵与防范讲义 234
Nessus的安装(3) 在Windows下安装NessusWX (客户端),安装完成后主界面如图。 2017/2/25 网络入侵与防范讲义 235
Nessus的配置运行 Nessus服务器端插件升级 2017/2/25 网络入侵与防范讲义 236 236 3. Nessus Server的配置运行 因为Nessus采用的客户/服务器结构,所以要运行Nessus服务器端,必须首先创建一个连接客户。如果设置加密认证,用户的一次性口令只在头一次连接服务器是有用,以后再连接,需要使用客户端产生的唯一能证明其身份的公开密钥。 Nessus的配置文件为/usr/local/etc/nessus/nessus.conf,一般不需要改动,但有几个参数可以调整。 plugins_folder::包含插件的文件夹 max_threads:允许的最大连接线程数。 logfile:日志文件所在的路径。如果为syslog,所有的信息都回通过syslog来进行记录;如果为stderr,所有信息都回被输出到标准输出设备中。 log_whole_attack:是否整个攻击过程。 rules:规则文件。 users:用户信息文件的路径。 check_read_timeout:指定与扫描目标之间的连接超时时间,但是为了加快扫描过程,应该设置较低的值。 Nessus提供插件功能。在安装完Nessus后,如果不及时更新,也许用不了多久,就“过时”了,这时候可以利用Nessus提供的一个小工具nessus-update-plugins来自动下载并安装最新的扫描插件 服务器端的执行文件为nessusd,它有许多命令行参数,主要有: -D:最常常用的一个选项,使后台运行。 -c <config-file>:使用另外的一个配置文件。 -a <address>:只监听来自指定IP地址的连接请求。 -p <port>:指定监听的端口。 -v :显示版本号。 -h:显示帮助信息。 -d:显示当前的配置。 2017/2/25 网络入侵与防范讲义 236 236
Nessus的配置运行(2) Nessus服务器端为客户端分配登陆用户 2017/2/25 网络入侵与防范讲义 237
用Nessus进行扫描 (1)启动Nessus客户端,操作者需要指定Nessus服务器的IP地址、端口号、通信加密方式以及登陆帐号、口令。 首先启动Nessus客户端,首先要提供一个登陆口令。接下来,操作者需要指定Nessus服务器的IP地址、端口号、通信加密方式以及登陆帐号,设置完成以后可以连接到Nessus服务器了。连接成功后就可以订制扫描任务了,指定扫描模块项目,指定具体的ping及TCP扫描方式,设定扫描的端口范围、最大线程数、目标主机Web服务器的CGI路径、端口扫描方式,指定具体的扫描目标(IP地址范围),设置完这些以后可以开始扫描了。 扫描结束后,可以查看生成的结果报告。结果报告中用3种颜色来表示不同的危险等级的漏洞,每种漏洞信息都有详细的解释,并给出了相应得解决对策。 2017/2/25 网络入侵与防范讲义 238 238
用Nessus进行扫描(2) (2)创建扫描会话,在此例中,扫描本机。 2017/2/25 网络入侵与防范讲义 239
用Nessus进行扫描(3) (3)开始扫描 2017/2/25 网络入侵与防范讲义 240
用Nessus进行扫描(4) (4)扫描结果报告,说明127.0.0.1在1433端口开启了Sql Server服务,且存在弱口令漏洞:用户sa的密码为sa。 2017/2/25 网络入侵与防范讲义 241
X-scan X-scan概述 X-scan功能简介 X-scan图形主界面 案例:用X-Scan扫描一个网段的主机 2017/2/25 网络入侵与防范讲义 242
X-Scan概述 X-Scan是国内最著名的综合扫描器,它完全免费,是不需要安装的绿色软件、界面支持中文和英文两种语言、包括图形界面和命令行方式。 主要由国内著名的网络安全组织“安全焦点”(http://www.xfocus.net)完成,“冰河木马”的作者是其核心作者之一。 从2000年的内部测试版X-Scan V0.2到目前的最新版本X-Scan V3.3都凝聚了国内众多专家的心血。 X-Scan把扫描报告对扫描到的每个漏洞进行“风险等级”评估,并提供漏洞描述、漏洞溢出程序,方便网管测试、修补漏洞。 2017/2/25 网络入侵与防范讲义 243
X-scan功能简介 采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能。 2017/2/25 网络入侵与防范讲义 244
X-scan功能简介(2) 扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等20多个大类。 对于多数已知漏洞,给出了相应的漏洞描述、解决方案及详细描述链接。 因此,X-scan与Nessus一样,也完成了主机扫描、端口扫描、远程主机OS识别和漏洞扫描四大功能。 2017/2/25 网络入侵与防范讲义 245
X-scan图形主界面 2017/2/25 网络入侵与防范讲义 246
案例:用X-Scan扫描一个网段的主机 步骤1 设置扫描参数 步骤2 开始扫描 步骤3 查看扫描报告 此案例中使用的X-scan版本是V3.3 2017/2/25 网络入侵与防范讲义 247
1 设置扫描参数 2017/2/25 网络入侵与防范讲义 248
检测范围 通过右侧窗口的“指定IP范围”可以输入独立的IP地址或域名,也可输入以“-”和“,”分隔的IP地址范围,如“192.168.0.1-20,192.168.1.10-192.168.1.254”,或类似“192.168.100.1/24”的格式。 2017/2/25 网络入侵与防范讲义 249
全局设置 “扫描模块”项:选择本次扫描需要加载的插件 “并发扫描”项:设置并发扫描的主机和并发线程数,也可以单独为每个主机的各个插件设置最大线程数 “网络设置”项:设置适合的网络适配器 “扫描报告”项:扫描结束后生成的报告文件名,保存在LOG目录下 “其他设置”项 2017/2/25 网络入侵与防范讲义 250
插件设置 该模块提供对各个插件的设置方法。 包括如图所示几项内容。 2017/2/25 网络入侵与防范讲义 251
2 开始扫描 在此案例中,设置检测范围为192.168.1.10-20,其它使用默认设置,扫描过程如图所示。 2017/2/25 网络入侵与防范讲义 252
3 查看扫描报告 详细漏洞信 息见下页图 2017/2/25 网络入侵与防范讲义 253
说明:192.168.1.19的phpMyAdmin存在高危漏洞 2017/2/25 网络入侵与防范讲义 254
X-scan的命令行扫描 以上介绍了X-Scan图形界面的使用方法。另外,X-Scan还有一个命令行方式的扫描程序。其原理与图形界面的X-Scan相同,所不同的是使用的方法不同而已。 图形界面的扫描器主要用在本机执行,而命令行下的扫描器经常被入侵者用来制作第三方扫描。 2017/2/25 网络入侵与防范讲义 255
常用扫描工具比较 Nmap Nessus X-scan 主机扫描 端口扫描 OS识别 漏洞扫描 扫描工具 扫描技术 2017/2/25 网络入侵与防范讲义 256
其它扫描工具 Advance LAN Scanner Blue’s PortScanner NBSI2 Fluxay(流光) X-port SuperScan ISS 2017/2/25 网络入侵与防范讲义 257
2.4 扫描的防御 反扫描技术 端口扫描监测工具 防火墙技术 审计技术 其它防御技术 2017/2/25 网络入侵与防范讲义 258
反扫描技术 反扫描技术是针对扫描技术提出的。 扫描技术一般可以分为主动扫描和被动扫描两种,它们的共同点在于在其执行的过程中都需要与受害主机互通正常或非正常的数据报文。 2017/2/25 网络入侵与防范讲义 259
主动扫描 其中主动扫描是主动向受害主机发送各种探测数据包,根据其回应判断扫描的结果。 因此防范主动扫描可以从以下几个方面入手: (1)减少开放端口,做好系统防护; (2)实时监测扫描,及时做出告警; (3)伪装知名端口,进行信息欺骗。 2017/2/25 网络入侵与防范讲义 260
被动扫描 被动扫描由其性质决定,它与受害主机建立的通常是正常连接,发送的数据包也属于正常范畴,而且被动扫描不会向受害主机发送大规模的探测数据,因此其防范方法到目前为止只能采用信息欺骗(如返回自定义的banner信息或伪装知名端口)这一种方法。 2017/2/25 网络入侵与防范讲义 261
端口扫描监测工具 对网络管理员来说,尽早的发现黑客的扫描活动,也许就能及时采取措施,避免黑客进一步实施真正的攻击和破坏。 监测端口扫描的工具有好多种,最简单的一种是在某个不常用的端口进行监听,如果发现有对该端口的外来连接请求,就认为有端口扫描。一般这些工具都会对连接请求的来源进行反探测,同时弹出提示窗口。 另一类工具,是在混杂模式下抓包并进一步分析判断。它本身并不开启任何端口。这类端口扫描监视器十分类似IDS系统中主要负责行使端口扫描监测职责的模块。 蜜罐系统也是一种非常好的防御方法。
端口扫描监测工具 下面列出几种端口扫描的监测工具 ProtectX Winetd和DTK:蜜罐工具 PortSentry
防火墙技术 防火墙技术是一种允许内部网接入外部网络,但同时又能识别和抵抗非授权访问的网络技术,是网络控制技术中的一种。 防火墙的目的是要在内部、外部两个网络之间建立一个安全控制点,控制所有从因特网流入或流向因特网的信息都经过防火墙,并检查这些信息,通过允许、拒绝或重新定向经过防火墙的数据流,实现对进、出内部网络的服务和访问的审计和控制。 2017/2/25 网络入侵与防范讲义 264
防火墙技术(2) 个人防火墙和企业级防火墙因为其应用场景不同,也在功能、性能等方面有所差异。 下面列出几种个人防火墙产品 ZoneAlarm Pro Black ICE Norton Personal Firewall 天网防火墙
审计技术 审计技术是使用信息系统自动记录下的网络中机器的使用时间、敏感操作和违纪操作等,为系统进行事故原因查询、事故发生后的实时处理提供详细可靠的依据或支持。 审计技术可以记录网络连接的请求、返回等信息,从中识别出扫描行为。 2017/2/25 网络入侵与防范讲义 266
审计技术(2) 以Web服务器为例,它的日志记录能帮助我们跟踪客户端IP地址,确定其地理位置信息,检测访问者所请求的路径和文件,了解访问状态,检查访问者使用的浏览器版本和操作系统类型等。 下面简要介绍两种经常使用的服务器——IIS服务器和Apache服务器的日志文件。
IIS服务器的日志记录 IIS服务器工作在Windows 平台上。服务器日志一般放在“%SystemRoot%/System32/LogFiles”目录下,该目录用于存放IIS服务器关于WWW、FTP、SMTP等服务的日志目录。 WWW服务的日志目录是“W3SVCn”,这里的“n”是数字,表示第几个WWW网站(虚拟主机),FTP服务的日志目录是“MSFTPSVCn”,“n”的含义与前类似。
IIS服务器的日志记录(2) IIS服务器的日志格式 Microsoft IIS Log File Format(IIS日志文件格式,一个固定的ASCII格式) NCSA Common Log File Format(NCSA通用日志文件格式) W3C Extended Log File Format(W3C扩展日志文件格式,一种可让用户设置的ASCII格式,是IIS的默认格式) ODBC Logging。 日志文件里一般需要记录对方IP地址、使用的HTTP方法、URI资源及其传递的CGI参数字符串等信息。通常应该设置使用W3C Extended Log File Format,这样可以记录更多更细致的信息,有助于更好的审计入侵行为。
Apache服务器的日志记录 在缺省安装情况下,Apache会使用两个标准的日志文件记录文件。 access_log:记录了所有对Apache Web服务器访问的活动记录; error_log:记录了Apache服务器运行期间所有的状态诊断信息,包括对Web服务器的错误访问记录。 这两个文件都放在/usr/local/apache/logs目录下。
Apache服务器的日志记录(2) access_log中的日志记录包含七项内容: 访问者的IP地址; 一般是空白项(用-表示); 身份验证时的用户名。在匿名访问时是空白; 访问时间;其格式为:[Date/Month/Year:Hour:Minute:Second +/-*]; 访问者HTTP数据包的请求行; Web服务器给访问者的返回状态码;一般情况下为200,表示服务器已经成功地响应访问者(浏览器)的请求,一切正常。以3开头的状态码表示客户端由于各种不同的原因用户请求被重新定向到了其他位置,以4开头的状态码表示客户端存在某种错误,以5开头的状态码表示服务器遇到了某个错误。 Web服务器返回给访问者的总字节数。
Apache服务器的日志记录(3) error_log文件中的记录格式: 第一项表示记录时间; 第二项表示记录级别,该级可以通过httpd.conf配置文件中的LogLevel项指定,默认设置级别为“error”; 第三项是引起错误的访问者的IP地址; 第四项则是错误消息细节,往往会有几行文字记录错误发生的原因等。
其它反扫描技术——修改Banner 许多网络服务器通常在用户正常连接或登录时,提供给用户一些无关紧要的提示信息,其中往往包括操作系统类型、用户所连接服务器的软件版本、几句无关痛痒的欢迎信息等,这些信息可称之为旗标信息(Banner)。 殊不知,通过这些Banner黑客们可以很方便的收集目标系统的操作系统类型以及网络服务软件漏洞信息,现在很多扫描器如Nmap都具备了自动获取Banner的功能。可以对Banner进行修改,隐藏主机信息,减小被入侵的风险。
其它反扫描技术——修改Banner 修改Banner的方法: 修改网络服务的配置文件,许多服务都在其配置文件中提供了对显示版本号的配置选项; 修改服务软件的源代码,然后重新编译; 直接修改软件的可执行文件,这种方法往往具有一定的“危险性”,不提倡使用。当然,也可以利用一些专业的Banner修改工具。 下面以Linux系统中的几个服务器为例,说明一些典型的Banner信息修改方法,更多的技巧还要在实际的网络管理与操作中去总结和体会。
其它反扫描技术——修改Banner wu-ftpd服务器 如果没有修改Banner,用户连接时,它会提供版本信息。 Banner修改方法是在wu-ftpd的配置文件/etc/ftpaccess中添加一行: greeting text<New Banners Information> //New Banners Information是指新的Banner信息,由用户自己设置
其它反扫描技术——修改Banner telnet服务器 正常情况下,成功连接telnet服务器后,会返回操作系统的类型信息。 用户从网络登录时看到的提示信息存放在/etc/issue文件中(文件/etc/issue.net中的内容与之相同),因此可以通过修改这两个文件里的登录提示信息来抹掉原来所提供的真实的操作系统类型信息。 由于每次系统启动时,都会通过/etc/rc.d/rc.local文件重新创建这两个文件,所以可以在/etc/rc.d/rc.local文件中修改输出到两个文件中的内容,或者直接注释掉/etc/rc.d/rc.local文件中相应的脚本行。
其它反扫描技术——修改Banner Sendmail服务器 DNS服务器(bind) 在Sendmail的配置文件/etc/sendmail.cf中,有这样一行:O SmtpGreetingMessage=$j Sendmail $v/$Z;$b 修改其中的$v$Z即可。然后重新启动服务。 DNS服务器(bind) 在bind的配置文件/usr/local/named/etc/named.conf的options里找到version,修改version字段内容,就可以修改这一Banner信息。 重新启动DNS服务器,使改动生效。
2.5 小结 扫描器能够自动的扫描检测本地和远程系统的弱点,为使用者提供帮助。系统或网络管理员可以利用它来检测其所管理的网络和主机中存在哪些漏洞,以便及时打上补丁,增加防护措施,或用来对系统进行安全等级评估。黑客可以利用它来获取主机信息,寻找具备某些弱点的主机,为进一步攻击做准备。因此,扫描器是一把双刃剑。 用户要减少开放的端口,关闭不必的服务,合理地配置防火墙,以防范扫描行为。
Socket 编程 如果想自己编写扫描器,首先必须熟悉Socket编程。 对于初学者,在Linux下的socket编程可以参考 W.Richard Stevens的几本著作: 1:《unix网络编程》 清华大学出版社 2:《unix环境高级编程》 简称APUE,机械工业出版社 2017/2/25 网络入侵与防范讲义 279
本章参考文献 张玉清等,安全扫描技术,清华大学出版社,2004 2017/2/25 网络入侵与防范讲义 280
第3章 网络监听及防御技术 国家计算机网络入侵防范中心 张玉清 3
内容介绍 3.1 网络监听概述 3.2 监听技术 3.3 监听的防御 3.4 小结 3.1 网络监听概述 3.2 监听技术
3.1 网络监听概述 3.1.1 基础知识与实例 3.1.2 网络监听技术的发展情况
3.1.1 基础知识与实例 1.网络监听的概念 网络监听技术又叫做网络嗅探技术(Network Sniffing),顾名思义,这是一种在他方未察觉的情况下捕获其通信报文或通信内容的技术。 在网络安全领域,网络监听技术对于网络攻击与防范双方都有着重要的意义,是一把双刃剑。对网络管理员来说,它是了解网络运行状况的有力助手,对黑客而言,它是有效收集信息的手段。 网络监听技术的能力范围目前只限于局域网。
3.1.1 基础知识与实例 2.相关网络基础 网络传输技术:广播式和点到点。 广播式网络传输技术:仅有一条通信信道,由网络上的所有机器共享。信道上传输的分组可以被任何机器发送并被其他所有的机器接收。 点到点网络传输技术:点到点网络由一对对机器之间的多条连接构成,分组的传输是通过这些连接直接发往目标机器,因此不存在发送分组被多方接收的问题。
3.1.1 基础知识与实例 3.网卡的四种工作模式 (1)广播模式:该模式下的网卡能够接收网络中的广播信息。 (2)组播模式:该模式下的网卡能够接受组播数据。 (3)直接模式:在这种模式下,只有匹配目的MAC地址的网卡才能接收该数据帧。 (4)混杂模式:(Promiscuous Mode)在这种模式下,网卡能够接受一切接收到的数据帧,而无论其目的MAC地址是什么。 由于网络中的主机系统,数据的收发是由网卡来完成的。网卡接收到传来的数据帧,其内嵌的处理程序会检查数据帧的目的MAC地址,并根据网卡驱动程序设置的接收模式来判断该不该进一步处理。如果应该处理,就接受该数据帧并产生中断信号通知CPU,否则就简单丢弃,因为整个过程是由网卡独立完成的,与主机上的操作系统是没有关系的。 如果共享式局域网中的一台主机的网卡被设置成混杂模式状态的话,那么,对于这台主机的网络接口而言,任何在这个局域网内传输的信息都是可以被听到的。主机的这种状态也就是监听模式,处于监听模式下的主机可以监听到统一个网段下的其他主机发送信息的数据包。共享式局域网的这种工作方式,我们举一个形象的例子,大房间就像是一个共享的信道,里面的每个人好像是一台主机。人们所说的话是信息包,在大房间中到处传播。当我们对其中某个人说话时,所有的人都能听到。但只有名字相同的那个人,才会对这些话语做出反映,进行处理。其余的人听到了这些谈话,只能从发呆中猜测,是否在监听他人的谈话。
3.1.1 基础知识与实例 4 实例:用Ethereal嗅探sina邮箱密码 U=hack_tesing Psw=hacktesting
3.1.1 基础知识与实例 4 实例:上届学生实验编写的sniffer,嗅探FTP用户名和密码 FTP Server Version is Serv-U V6.3 USER test PASS test Logged in ok
3.1 网络监听概述 3.1.1 基础知识与实例 3.1.2 网络监听技术的发展情况
3.1.2 网络监听技术的发展情况 1.网络监听(Sniffer)的发展历史 网络监听器分软、硬两种
3.1.2 网络监听技术的发展情况 1.网络监听(Sniffer)的发展历史 软件嗅探器便宜易于使用,缺点是功能往往有限,可能无法抓取网络上所有的传输数据(比如碎片),或效率容易受限; 硬件嗅探器通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,处理速度很高,但是价格昂贵。 目前主要使用的嗅探器是软件的。
3.1.2 网络监听技术的发展情况 2.Sniffer软件的主要工作机制 驱动程序支持:需要一个直接与网卡驱动程序接口的驱动模块,作为网卡驱动与上层应用的“中间人”,它将网卡设置成混杂模式,捕获数据包,并从上层接收各种抓包请求。 分组捕获过滤机制:对来自网卡驱动程序的数据帧进行过滤,最终将符合要求的数据交给上层。 链路层的网卡驱动程序上传的数据帧就有了两个去处:一个是正常的协议栈,另一个就是分组捕获过滤模块,对于非本地的数据包,前者会丢弃(通过比较目的IP地址),而后者则会根据上层应用的要求来决定上传还是丢弃。
3.1.2 网络监听技术的发展情况 2.Sniffer软件的主要工作机制 许多操作系统都提供这样的“中间人”机制,即分组捕获机制。在UNIX类型的操作系统中,主要有3种:BSD系统中的BPF(Berkeley Packet Filter)、SVR4中的DLPI(Date Link Interface)和Linux中的SOCK_PACKET类型套接字。在Windows平台上主要有NPF过滤机制。 目前大部分Sniffer软件都是基于上述机制建立起来的。如Tcpdump、Wireshark等。
3.1.2 网络监听技术的发展情况 3.网络监听的双刃性 现在的监听技术发展比较成熟,可以协助网络管理员测试网络数据通信流量、实时监控网络状况。 然而事情往往都有两面性,Sniffer的隐蔽性非常好,它只是“被动”的接收数据,所以在传输数据的过程中,根本无法察觉到有人在监听。网络监听给网络维护提供便利同时,也给网络安全带来了很大隐患。
3.2 监听技术 3.2.1 局域网中的硬件设备简介 3.2.2 共享式局域网的监听技术 3.2.3 交换式局域网的监听技术 3.2.4 网络监听工具举例
3.2.1 局域网中的硬件设备简介 1.集线器 (1) 集线器的原理: 集线器(又称为Hub)是一种重要的网络部件,主要在局域网中用于将多个客户机和服务器连接到中央区的网络上。 集线器工作在局域网的物理环境下,其主要应用在OSI参考模型第一层,属于物理层设备。它的内部采取电器互连的方式,当维护LAN的环境是逻辑总线或环型结构时,完全可以用集线器建立一个物理上的星型或树型网络结构。
3.2.1 局域网中的硬件设备简介 1.集线器 (2) 集线器的工作特点 依据IEEE 802.3协议,集线器功能是随机选出某一端口的设备,并让它独占全部带宽,与集线器的上联设备(交换机、路由器或服务器等)进行通信。集线器在工作时具有以下两个特点: 首先是集线器只是一个多端口的信号放大设备; 其次集线器只与它的上联设备(如上层Hub、交换机或服务器)进行通信,同层的各端口之间不会直接进行通信,而是通过上联设备再将信息广播到所有端口上。 依据IEEE 802.3协议,集线器功能是随机选出某一端口的设备,并让它独占全部带宽,与集线器的上联设备(交换机、路由器或服务器等)进行通信。由此可以看出,集线器在工作时具有以下两个特点。 首先是Hub只是一个多端口的信号放大设备,工作中当一个端口接收到数据信号时,由于信号在从源端口到Hub的传输过程中已有了衰减,所以Hub便将该信号进行整形放大,使被衰减的信号再生(恢复)到发送时的状态,紧接着转发到其他所有处于工作状态的端口上。从Hub的工作方式可以看出,它在网络中只起到信号放大和重发作用,其目的是扩大网络的传输范围,而不具备信号的定向传送能力,是—个标准的共享式设备。因此有人称集线器为“傻Hub”或“哑Hub”。 其次是Hub只与它的上联设备(如上层Hub、交换机或服务器)进行通信,同层的各端口之间不会直接进行通信,而是通过上联设备再将信息广播到所有端口上。由此可见,即使是在同一Hub的不同两个端口之间进行通信,都必须要经过两步操作:第一步是将信息上传到上联设备;第二步是上联设备再将该信息广播到所有端口上。 不过,随着技术的发展和需求的变化,目前的许多Hub在功能上进行了拓宽,不再受这种工作机制的影响。由Hub组成的网络是共享式网络,同时Hub也只能够在半双工下工作。
D-LINK DES-1024D 24PORT
3.2.1 局域网中的硬件设备简介 1.集线器 (3) 用集线器组建的局域网示意图
3.2.1 局域网中的硬件设备简介 2.交换机 (1) 交换机的原理: 交换机是一种网络开关(Switch),也称交换器,由于和电话交换机对出入线的选择有相似的原理,因此被人称为交换机。 交换机在局域网的环境下,工作在比集线器更高一层链路层上。交换机被定义成一个能接收发来的信息帧,加以暂时存储,然后发到另一端的网络部件,其本质上就是具有流量控制能力的多端口网桥。
3.2.1 局域网中的硬件设备简介 2.交换机 (2) 交换机的工作特点 把每个端口所连接的网络分割为独立的LAN,每个LAN成为一个独立的冲突域。 每个端口都提供专用的带宽。这是交换机与集线器的本质区别,集线器不管有多少端口,都是共享其全部带宽。 转发机制。交换机维护有每个端口对应的地址表,其中保存与该端口连接的各个主机的MAC地址。 需要注意的是,交换机对MAC地址的处理方式,默认通常是动态映射,即交换机的地址表是动态更新的。另一种则是静态映射方式,即交换机各个端口对应的MAC地址表都是静态配置的,这样可以防止MAC地址的欺骗行为。 传统的交换也被称为第二层交换,依赖于数据链路层信息在不同端口间起到交换数据的作用,只能识别MAC地址,不能识别数据包中的网络地址信息。现在常听到的第三层交换技术也称为IP交换技术、高速路由技术等。它是将传统交换机的高速数据交换功能和路由器的网络控制功能结合起来的一种新技术,是利用第三层协议中的信息来加强第二层交换功能的一种机制。当前还有第四层交换、第七层交换和多层交换几种概念,这里多层交换是对包括第三层交换在内的三层以上交换技术的统称。这几种交换技术事实上已经脱离的完整意义上的“交换”的概念,例如第四层交换理解为负载均衡似乎更为合适一些。由于在网络监听几乎涉及不到多层交换的概念,这里将不再详细介绍。我们在下面将分别介绍共享式网络和交换式局域网的监听原理和实现方法。
CISCO WS-C2950-24交换机
3.2.1 局域网中的硬件设备简介 2.交换机 (2) 用交换机组建的局域网示意图
3.2 监听技术 3.2.1 局域网中的硬件设备简介 3.2.2 共享式局域网的监听技术 3.2.3 交换式局域网的监听技术 3.2.4 网络监听工具举例
什么是共享式局域网 共享式局域网就是使用集线器或共用一条总线的局域网,它采用了载波检测多路侦听(Carries Sense Multiple Access with Collision Detection,简称CSMA/CD)机制来进行传输控制。 共享式局域网是基于广播的方式来发送数据的,因为集线器不能识别帧,所以它就不知道一个端口收到的帧应该转发到哪个端口,它只好把帧发送到除源端口以外的所有端口,这样网络上所有的主机都可以收到这些帧。
共享式局域网的监听原理 在正常的情况下,网卡应该工作在广播模式、直接模式,一个网络接口(网卡)应该只响应这样的两种数据帧: 与自己的MAC地址相匹配的数据帧(目的地址为单个主机的MAC地址)。 发向所有机器的广播数据帧(目的地址为0xFFFFFFFFFF)。
共享式局域网的监听的工作原理(2) 但如果共享式局域网中的一台主机的网卡被设置成混杂模式状态的话,那么,对于这台主机的网络接口而言,任何在这个局域网内传输的信息都是可以被听到的。主机的这种状态也就是监听模式。 处于监听模式下的主机可以监听到同一个网段下的其他主机发送信息的数据包。
共享式局域网的监听实现方法 在共享式局域网中,集线器会广播所有数据,这时,如果局域网中一台主机将网卡设置成混杂模式,那么它就可以接收到该局域网中的所有数据了。 网卡在混杂模式工作的情况下,所有流经网卡的数据帧都会被网卡驱动程序上传给网络层。 共享式局域网监听示意图见下页。
Internet 192.168.1.2 192.168.1.4 192.168.1.3 路由器 集线器 攻击者主机 其它主机 受害者主机 攻击主机接收到受害主机的数据 攻击者主机 其它主机 受害者主机 192.168.1.2 192.168.1.4 192.168.1.3
共享式局域网的监听实现方法(2) 正常工作时,应用程序只能接收到以本主机为目标主机的数据包,其他数据包过滤后被丢弃不做处理。 该过滤机制可以作用在链路层、网络层和传输层这几个层次,工作流程如图所示: 链路层主要是网卡驱动程序判断所接收到包的目标以太地址,在系统正常工作时,一个合法的网络接口应该值响应目标区域和本地网络接口相匹配的硬件地址和目标区域具有“广播地址”的数据帧。在接收到上面两种情况的数据包时,网络接口通过CPU产生硬件中断,操作系统进行中断处理后将帧中所包含的数据传送给网络层进一步处理。而其他情况下数据帧将被丢弃不作处理。 网络层判断目标IP地址是否为本机所绑定的IP地址,如果不是本机所绑定的IP地址,将会丢弃这些IP数据包;如果符合本机IP地址则交给传输层处理。 传输层中的TCP或者UDP判断目标端口是否在本机已经打开,如果没有打开,则抛弃这些包;否则将向应用层提交其内容。
共享式局域网的监听实现方法(3) 链路层过滤:判断数据包的目的MAC地址。 网络层过滤:判断数据包的目的IP地址。 传输层过滤:判断对应的目的端口是否在本机已经打开。 因而,如果没有一个特定的机制,上层应用也无法抓到本不属于自己的“数据包”。
共享式局域网的监听实现方法(4) 需要一个直接与网卡驱动程序接口的驱动模块,它将网卡设置成混杂模式,并从监听软件接收下达的各种抓包请求,对来自网卡驱动程序的数据帧进行过滤,最终将符合监听软件要求的数据返回给监听软件。
共享式局域网的监听实现方法(5) 有了驱动模块,链路层的网卡驱动程序上传的数据帧就有了两个去处:一个是正常的协议栈,另一个就是分组捕获即过滤模块。 对于非本地的数据包,前者会丢弃(通过比较目的IP地址),而后者则会根据上层应用的要求来决定上传还是丢弃,如图所示。
共享式局域网的监听实现方法(6) 在实际应用中,监听时存在不需要的数据,严重影响了系统工作效率。网络监听模块过滤机制的效率是该网络监听的关键。 信息的过滤包括以下几种:站过滤,协议过滤,服务过滤,通用过滤。 同时根据过滤的时间,可以分为两种过滤方式:捕获前过滤、捕获后过滤。 站过滤:根据MAC地址,筛选出某一工作站或服务器的数据。 协议过滤:根据传输层和网络层中的特性过滤,如选择TCP数据而非UDP数据或选择某一特定IP层协议数据。 服务过滤:根据端口筛选特定类型服务。 通用过滤:根据数据包中某一偏移的16进制值选择特定数据包。 ==================================== 捕获前过滤:当不想缓冲区因无用的数据而溢出时这一方法很有用。 捕获后过滤:在已经捕获了由问题的数据后还需进一步分析所有数据式。
相关开发库 (1) 基于UNIX系统的开发库libpcap UNIX系统的典型代表BSD(Berkeley Software Distribution)下的监听程序结构。 图所示系统大体有三部分组成:网卡驱动程序,BPF捕获机制,libpcap。网卡驱动程序用于监式共享网络中的所有包,BPF用过滤机制条件匹配所有由Network tap监视到的包,若匹配成功则将之从网卡驱动的缓冲区中复制到核心缓冲区。
相关开发库 (1) 基于UNIX系统的开发库libpcap 对开发者而言,网卡驱动程序和BPF捕获机制是透明的,需要掌握的是libpcap库的使用。libpcap隐藏了用户程序和操作系统内核交互的细节,完成了如下工作: 向用户程序提供了一套功能强大的抽象接口。 根据用户要求生成过滤指令。 管理用户缓冲区。 负责用户程序和内核的交互。
相关开发库 (2)基于Windows系统的WinPcap WinPcap是基于Windows 操作系统环境的Libpcap ,其在监听程序中起的作用和UNIX 系统下的libpcap类似。但是比libpcap多一些功能,如WinPcap可以发送数据,但是libpcap则不行。
相关开发库 WinPcap的架构包括: 内核级的数据包监听设备驱动程序NPF:把设备驱动增加在Windows,它直接从数据链路层取得网络数据包不加修改地传递给运行在用户层的应用程序上,也允许用户发送原始数据包。 低级动态连接库packet.dll:运行在用户层, 把应用程序和数据包监听设备驱动程序隔离开,使得应用程序可以不加修改地在不同Windows系统上运行。 高级系统无关库Wpcap.dll:它和应用程序编译在一起,它使用低级动态链接库提供的服务,向应用程序提供完善的监听接口,不同Windows平台上的高级系统无关库是相同的。
相关开发库 WinPcap架构图
相关开发库 使用Winpcap的流程 打开网卡接口,设置为混杂模式 Pcap_open_live 设置过滤器(捕获前过滤) Pcap_setfilter 捕获数据 流程中各阶段包括以下几步: 1 调用Pcap_open_live:选择监听网络接口。 2 调用Pcap_setfilter:设置过滤器,这是捕获前过滤。 3 调用pcap_next_ex:捕获监听主机需要的数据。 4 调用MyPacketProcess:这是sniffer对捕获到的数据进行处理(例如显示给用户),不同的sniffer的处理函数不同。 5 调用Pcap_dump:将捕获到的数据进行存储。 Pcap_next_ex MyPacketProcess Pcap_dump 对捕获到的数据进行处理 将捕获到的数据进行存储
3.2 监听技术 3.2.1 局域网中的硬件设备简介 3.2.2 共享式局域网的监听技术 3.2.3 交换式局域网的监听技术 3.2.4 网络监听工具举例
3.2.3 交换式局域网的监听技术 什么是交换式局域网 交换式以太网就是用交换机或其它非广播式交换设备组建成的局域网。 这些设备根据收到的数据帧中的MAC地址决定数据帧应发向交换机的哪个端口。 因为端口间的帧传输彼此屏蔽,因此节点就不担心自己发送的帧会被发送到非目的节点中去。
3.2.3 交换式局域网的监听技术 产生交换式局域网的原因: 系统管理人员常常通过在本地网络中加入交换设备,来预防sniffer(嗅探器)的侵入。 交换机工作在数据链路层,工作时维护着一张MAC地址与端口的映射表。在这个表中记录着交换机每个端口绑定的MAC地址。不同于HUB的报文广播方式,交换机转发的报文是一一对应的。
3.2.3 交换式局域网的监听技术 交换式局域网在很大程度上解决了网络监听的困扰。 但是交换机的安全性也面临着严峻的考验,随着嗅探技术的发展,攻击者发现了有如下方法来实现在交换式以太网中的网络监听: 溢出攻击 ARP欺骗(常用技术)
3.2.3 交换式局域网的监听技术 溢出攻击 交换机工作时要维护一张MAC地址与端口的映射表。 这时交换机就会退回到HUB的广播方式,向所有的端口发送数据包,一旦如此,监听就很容易了。
3.2.3 交换式局域网的监听技术 ARP欺骗 计算机中维护着一个IP-MAC地址对应表,记录了IP地址和MAC地址之间的对应关系。该表将随着ARP请求及响应包不断更新。 通过ARP欺骗,改变表里的对应关系,攻击者可以成为被攻击者与交换机之间的“中间人”,使交换式局域网中的所有数据包都流经自己主机的网卡,这样就可以像共享式局域网一样分析数据包了。 dsniff和parasite等交换式局域网中的嗅探工具就是利用ARP欺骗来实现的。 ARP欺骗示意图见下页,具体过程会在欺骗攻击章节讲解。
Internet Internet 路由器 路由器 ARP欺骗 交换机 交换机 攻击者 主机 受害者 主机 攻击者 主机 受害者 主机 192.168.1.2 192.168.1.3 192.168.1.2 192.168.1.3
3.2 监听技术 3.2.1 局域网中的硬件设备简介 3.2.2 共享式局域网的监听技术 3.2.3 交换式局域网的监听技术 3.2.4 网络监听工具举例
3.2.4 网络监听工具举例 常用的网络监听工具 网络监听工具的主要功能大都相似,我们以Wireshark为例。 Tcpdump/Windump Ngrep Ethereal/Wireshark Sniffer Pro NetXray 网络监听工具的主要功能大都相似,我们以Wireshark为例。
Wireshark简介 Wireshark是一个免费的开源网络数据包分析工具,可以在Linux、Solaris、Windows等多种平台运行。 它允许用户从一个活动的网络中捕捉数据包并进行分析,详细探究数据包的协议字段信息和会话过程。 帮助网络管理员解决网络问题,帮助网络安全工程师检测安全隐患,开发人员可以用它来测试协议执行情况、学习网络协议。 具有很好的可扩展性,用户能自由地增加插件以实现额外功能。
Wireshark更名的故事 2006年6月8号, Ethereal软件的创始人Gerald Coombs宣布离开NIS公司(Ethereal所属公司),正式加入CaceTech。 由于Coombs最终没能与NIS公司达成协议,Coombs想保留Ethereal商标权,因此将Ethereal后续版本更名为Wireshark,属于CaceTech公司。 Ethereal原网站(http://ethereal.com/)依旧提供下载服务。
如何获得软件 Ethereal官网(终结版本0.99.0):http://www.Ethereal.com/ Wireshark官网(最新稳定版本1.2.8):http://www.wireshark.org/ 在安装Wireshark时,要同时安装Winpcap,它是提供Windows 系统所需要的封包捕获驱动程序
Wireshark的特点 支持多种通讯接口(如Ethernet、Token-ring、X.25等)及数据包协议类型(如ARP、TCP、UDP等),可以组合TCP上的封包且显示出以ASCII或是EBCDIC型态的数据(TCP Stream),所捕获的封包可以被储存。 支持Capture Filter(捕获前过滤)和Display Filter(捕获后过滤)功能帮助用户筛选想要的数据包。
Capture filter 在捕获数据包之前设定。用于设定捕获数据包时的过滤条件,属于捕获前过滤 好处:可以让你选择要抓取的数据包 Examples: tcp tcp or udp tcp || udp(此过滤规则是上一条的不同写法) tcp and ip.addr=192.168.1.34
Display filter 在捕获数据包结束后设定。用来设定显示数据包的条件,属于捕获后过滤 好处:可以让你选择要看的数据包 Example: 同Capture filter tcp.port == 80 tcp port 80 (此过滤规则是上一条的不同写法) tcp.port == 80 tcp port 80 这两种过滤是相同的结果
案例一:观察FTP数据流 设置capture filter,只对tcp包进行监测 开始抓取数据包,同时局域网内有ftp登陆 (隔一小段时间后) 停止抓取封包 观察数据包的格式内容 设置display filter,只查看21端口与ftp主机相关的数据包 使用follow tcp stream功能重组数据包,查看ftp登陆过程
设置Capture filter tcp
抓包正在进行中,只抓取了TCP包
抓包结束,查看封包内容 控制列 封包总览 封包内容 十六进制码
设置Display filter Port 21 and ip.addr==192.168.1.250
选定某一封包内容后,执行Follow TCP Stream ,即可对与被选中封包相关的所有封包内容进行重组,可更清楚的看到封包中的Data。 封包重组 ftp登陆过程 命令解释: USER命令:输入用户名 PASS命令:输入密码 SYST命令:获取FTP服务器操作系统类型 FEAT命令:请求FTP服务器列出它的所有的扩展命令与扩展功能 CLNT命令:告诉FTP服务器本地所使用的客户端软件版本号 CWD命令:改变远程系统的工作目录 PWD命令:显示服务器端的当前工作目录名
案例二:监听TCP通信过程 TCP通信过程回顾 实验环境 用Ethereal抓包 数据包详细分析
TCP通信过程回顾 TCP数据报格式 正常TCP通信过程: 建立连接 数据传输 断开连接
TCP数据报格式
TCP连接建立过程 CTL: Control Bits
TCP数据传输过程 ………… Established Established Sending1 Waiting1 OK1 ACK1 TCP Packet Established Established Sending1 SEQ=1001,ACK=751,dataLen=256 Waiting1 OK1 SEQ=751,ACK=1257 ACK1 Sending2 SEQ=1257,ACK=751,dataLen=256 Waiting2 OK2 SEQ=751,ACK=1513 ACK2 …………
TCP连接断开过程 Established Established FIN-WAIT-1 CLOSE-WAIT FIN-WAIT-2 TCP Packet Established Established FIN-WAIT-1 SEQ=1513,ACK=751,CTL=FIN|ACK CLOSE-WAIT FIN-WAIT-2 SEQ=751,ACK=1514,CTL=ACK CLOSE-WAIT TIME-WAIT SEQ=751,ACK=1514,CTL=FIN|ACK LAST-ACK TIME-WAIT SEQ=1514,ACK=752,CTL=ACK CLOSED CLOSED
实验环境 位于同一局域网内的两台主机,IP分别为:192.168.1.34,192.168.1.119 自己编写了一个C/S模式的程序,实现简单的TCP数据发送与接收 Client运行在192.168.1.34 Server运行在192.168.1.119
实验环境(2) Client发送两次数据,内容分别为123和456,然后发送0结束TCP连接。 程序截图如下。 客户端发送数据 服务端接收到数据
捕获数据包 在Client发送数据之前,在192.168.1.34主机(Client)上开启Ethereal。 在捕获前不进行过滤,直接捕获所有数据包。 当Client结束TCP连接之后,停止捕获数据包。 采用捕获后过滤的方法,过滤规则是 tcp AND ip.addr==192.168.1.119 其中,192.168.1.119是Server主机。 过滤后,共得到11个数据包,见下页图。
过滤后,共得到11个数据包。这些包分别如下: 1~3:三次握手,建立连接 4~5:第一次发送数据 6~7:第二次发送数据 8~11:断开连接
数据包详细分析 这11个数据包的含义如下: 下面将对这11个数据包进行详细分析。 1~3:三次握手,建立连接 4~5:第一次发送数据 6~7:第二次发送数据 8~11:断开连接 下面将对这11个数据包进行详细分析。
1 CS SYN SEQ=X+0 与TCP报文格式相对应
2 SC SYN,ACK SEQ=Y+0 ACK=X+1
3 CS ACK SEQ=X+1 ACK=Y+1 三次握手结束
SEQ=X+1, data length=256, next seq=257 ACK=Y+1 4 CS PSH,ACK SEQ=X+1, data length=256, next seq=257 ACK=Y+1 数据内容见下页图
TCP segment data(256 bytes) 这是第一次发送的数据123 TCP segment data(256 bytes)
5 SC ACK SEQ=Y+1 ACK=X+257 第一次传输数据结束
SEQ=X+257, data length=256, next seq=513 ACK=Y+1 6 CS PSH,ACK SEQ=X+257, data length=256, next seq=513 ACK=Y+1 数据内容见下页图
TCP segment data(256 bytes) 这是第二次发送的数据456 TCP segment data(256 bytes)
7 SC ACK SEQ=Y+1 ACK=X+513 第二次传输数据结束
8 CS FIN,ACK SEQ=X+513 ACK=Y+1
9 SC ACK SEQ=Y+1 ACK=X+514
10 SC FIN,ACK SEQ=Y+1 ACK=X+514
11 CS ACK SEQ=X+514 ACK=Y+2 TCP连接已经断开
案例三:观察登录BBS过程 设置网卡 如果有多个网络接口(网卡),首先在Capture Options中设置在哪个网络接口上抓包。勾选Capture packets in promiscuous mode选项,将网卡设置成混杂模式。
案例三:观察登录BBS过程 设置过滤条件:捕获前过滤
案例三:观察登录BBS过程 设置过滤条件:捕获后过滤 如果Filter框背景显示为绿色,说明所设定的过滤规则合乎Wireshark支持的语法规则。 如果Filter框背景显示为红色,说明所设定的过滤规则不符合语法规则。
案例三:观察登录BBS过程 主机向服 务器发送 的POST 请求 登录BBS的用户名和密码
3.3 监听的防御 3.3.1 通用策略 3.3.2 共享网络下的防监听 3.3.3 交换网络下的防监听
3.3.1 通用策略 由于嗅探器是一种被动攻击技术,因此非常难以被发现。 完全主动的解决方案很难找到并且因网络类型而有一些差异,但我们可以先采用一些被动但却是通用的防御措施。 这主要包括采用安全的网络拓扑结构和数据加密技术两方面。此外要注意重点区域的安全防范。
安全的拓扑结构 网络分段越细,嗅探器能够收集的信息就越少。 网络分段:将网络分成一些小的网络,每一个网段的集线器被连接到一个交换器 (Switch) 上,所以数据包只能在该网段的内部被网络监听器截获,这样网络的剩余部分(不在同一网段)便被保护了。网络有三种网络设备是嗅探器不可能跨过的:交换机、路由器、网桥。我们可以通过灵活的运用这些设备来进行网络分段。 划分VLAN:使得网络隔离不必要的数据传送,一般可以采用20个工作站为一组,这是一个比较合理的数字。网络分段只适应于中小的网络。网络分段需要昂贵的硬件设备。 (1)安全的拓扑结构 嗅探器只能在当前网络段上进行数据捕获。这就意味着,将网络分段工作进行得越细,嗅探器能够收集的信息就越少。但是,除非你的公司是一个ISP,或者资源相对不受限制,否则这样的解决方案需要很大的代价。网络分段需要昂贵的硬件设备。有三种网络设备是嗅探器不可能跨过的:交换机、路由器、网桥。我们可以通过灵活的运用这些设备来进行网络分段。大多数早期建立的内部网络都使用HUB集线器来连接多台工作站,这就为网络中数据的泛播(数据向所有工作站流通),让嗅探器能顺利地工作提供了便利。普通的嗅探器程序只是简单地进行数据的捕获,因此需要杜绝网络数据的泛播。 随着交换机的价格下降,网络改造变得可行且很必要了。不使用HUB而用交换机来连接网络,就能有效地避免数据进行泛播,也就是避免让一个工作站接收任何非与之相关的数据。 对网络进行分段,比如在交换机上设置VLAN,使得网络隔离不必要的数据传送。一般可以采用20个工作站为一组,这是一个比较合理的数字。然后,每个月人为地对每段进行检测(也可以每个月采用MD5随机地对某个段进行检测)。网络分段只适应于中小的网络。如果有一个500个工作站的网络,分布在50个以上的部门中,那么完全的分段的成本上是很高的。
数据加密 数据通道加密:正常的数据都是通过事先建立的通道进行传输的,以往许多应用协议中明文传输的账号、口令的敏感信息将受到严密保护。目前的数据加密通道方式主要有SSH 、SSL(Secure Socket Layer,安全套接字应用层)和VPN。 数据内容加密:主要采用的是将目前被证实的较为可靠的加密机制对对互联网上传输的邮件和文件进行加密。如PGP等。
3.3 监听的防御 3.3.1 通用策略 3.3.2 共享网络下的防监听 3.3.3 交换网络下的防监听
3.3.2 共享网络下的防监听 虽然共享式局域网中的嗅探很隐蔽,但也有一些方法来帮助判断: 检测技术 检测处于混杂模式的网卡 网络通讯丢包率非常高 网络带宽出现反常 检测技术 网络和主机响应时间测试 ARP检测(如AntiSniff 工具)
3.3.2 共享网络下的防监听 1. 网络和主机响应时间测试 这种检测已被证明是最有效的,它能够发现网络中处于监听模式的机器,而不管其操作系统是什么。
3.3.2 共享网络下的防监听 1. 网络和主机响应时间测试 测试原理是处于非监听模式的网卡提供了一定的硬件底层过滤机制,即目标地址为非本地(广播地址除外)的数据包将被网卡所丢弃。 这种情况下骤然增加目标地址不是本地的网络通讯流量对操作系统的影响很小。 而处于混杂模式下的机器则缺乏底层的过滤,骤然增加目标地址不是本地的网络通讯流量会对该机器造成较明显的影响(不同的操作系统/内核/用户方式会有不同)。
3.3.2 共享网络下的防监听 1. 网络和主机响应时间测试 实现方法是利用ICMP ECHO请求及响应计算出需要检测机器的响应时间基准和平均值。 在得到这个数据后,立刻向本地网络发送大量的伪造数据包,与此同时再次发送测试数据包以确定平均响应时间的变化值。 非监听模式的机器的响应时间变化量会很小,而监听模式的机器的响应时间变化量则通常会有1~4个数量级。
3.3.2 共享网络下的防监听 2. ARP检测 地址解析协议(Address Resolution Protocol,ARP)请求报文用来查询硬件地址到IP地址的解析。适用于所有基于以太网的IPV4协议。 我们可以使用这类分组来校验网卡是否被设置为混杂模式。
3.3.2 共享网络下的防监听 2. ARP检测 在混杂模式下,网卡不会阻塞目的地址不是自己的分组,而是照单全收,并将其传送给系统内核。然后,系统内核会返回包含错误信息的报文。 基于这种机制,我们可以假造一些ARP请求报文发送到网络上的各个节点,没有处于混杂模式的网卡会阻塞这些报文,但是如果某些节点有回应,就表示这些节点的网卡处于混杂模式下。这些处于混杂模式的节点就可能运行嗅探器程序。
3.3.2 共享网络下的防监听 ARP检测原理 例如:网络上一台IP地址为192.168.1.1的PC(X)以太网地址是00-00-00-00-00-01,这台PC(X)需要向网络上另外一台IP地址为192.168.1.10的PC(Y)发送消息。
集线器 PC(X) PC(Y) IP: 192.168.1.1 MAC: 00-00-00-00-00-01 网络上一台IP地址为192.168.1.1的PC(X)以太网地址是00-00-00-00-00-01, 这台PC(X)需要向网络上另外一台IP地址为192.168.1.10的PC(Y)发送消息。 IP: 192.168.1.1 MAC: 00-00-00-00-00-01 IP: 192.168.1.10
ARP检测原理(2) 在发送之前,X首先发出一个ARP请求包查询192.168.1.10对应的以太网地址。查询包的目的地址被设置为FF-FF-FF-FF-FF-FF(广播),从而本地网络上的所有节点都可以收到这个包。 收到之后,每个节点会检查这个ARP包查询的IP地址和本机的IP地址是否匹配。如果不同,就忽略这个ARP包;如果匹配(Y)就向X发出应答。 X收到应答之后就缓存Y的IP/硬件地址。然后,X就可以向Y发送实际的数据。
ARP检测原理(3) 进一步设想,如果我们把这个查询包的目的地址(以太网地址)设置为另外的地址,而不是原来的广播地址又将如何?
ARP检测原理(4) 例如:我们把查询包的目的地址设置为00-00-00-00-00-01会发生什么? 处于正常模式下网络节点的以太网卡会认为这个查询包是发往其它主机的,其硬件过滤器会拒绝接收这个包;然而,如果这个网络节点(192.168.1.10)的以太网卡处于混杂模式(promiscuous mode)下,那么即使以太网地址不匹配,其硬件过滤器也不进行任何过滤,从而使这个查询包能够进入到系统的内核。 因为这个节点的IP地址和查询包的要查询IP地址相同,其内核就会认为ARP查询包到达,应该作出应答。
ARP检测原理(5) 但是,在不同的操作系统中,这个处于混杂模式节点的内核可能不会应答ARP查询包。 这是因为这个包被系统内核过滤掉了。在这里我们把这叫作软件过滤器。 所以这个方法并不是完全奏效,但是此方法简单实用。
ARP检测原理(6) 概括地说,我们可以通过区别硬件过滤器和软件过滤器的不同特征来检测处于混杂模式的网络节点。我们需要构造应该被硬件过滤器阻塞,但是却能够通过软件过滤器的报文。如果把这种报文送到各个网络节点,那么处于普通模式下的网络节点将不做应答;而处于混杂模式的节点会进行应答。
3.3 监听的防御 3.3.1 通用策略 3.3.2 共享网络下的防监听 3.3.3 交换网络下的防监听
3.3.3 交换网络下的防监听 交换网络下防监听,主要要防止ARP欺骗及ARP过载。如何防范ARP欺骗将在后续章节讲述。ARP过载则是指通过发送大量ARP数据包使得交换设备出现信息过载,工作于广播模式。 交换网络下防范监听的措施主要包括: 不要把网络安全信任关系建立在单一的IP或MAC基础上,理想的关系应该建立在IP-MAC对应关系的基础上。 使用静态的ARP或者IP-MAC对应表代替动态的ARP或者IP-MAC对应表,禁止自动更新,使用手动更新。 定期检查ARP请求,使用ARP监视工具,例如ARPWatch等监视并探测ARP欺骗。 制定良好的安全管理策略,加强用户安全意识。
3.4 小结 最普遍同时也是最致命的安全威胁往往来自内部,其破坏性也远大于外部威胁。 其中网络嗅探对于一般的网络来说,威胁巨大。因此很多黑客也使用嗅探器进行网络入侵渗透。 网络嗅探器对信息安全的威胁来自其被动性和非干扰性,使得网络嗅探具有很强的隐蔽性,往往让网络信息泄密变得不容易被发现。 本节课分析了网络嗅探的原理,并提出一些防范措施。但对于用户而言除了技术手段以外,最重要的还是建立相应的安全意识,注意对隐私信息的加密保护。