作者:hacker发布时间:2022-07-13分类:破解邮箱浏览:89评论:2
Snort分析报告
1.--snort的简介
snort 是一个基于libpcap的数据包嗅探器并可以作为一个轻量级的网络入侵检测系统(
NIDS)。所谓的轻量级是指在检测时尽可能低地影响网络的正常操作,一个优秀的轻量
级的NIDS应该具备跨系统平台操作,对系统影响最小等特征并且管理员能够在短时间内
通过修改配置进行实时的安全响应,更为重要的是能够成为整体安全结构的重要成员。
Snort作为其典型范例,首先可以运行在多种操作系统平台,例如UNIX系列和Windows 9
X.(需要libpcap for Win32的支持),与很多商业产品相比,它对操作系统的依赖性比
较低。其次用户可以根据自己的需要及时在短时间内调整检测策略。就检测攻击的种类
来说,据最新数据表明(2000/12/4)snort共有21类(???)1271条检测规则,其中包括
对缓冲区溢出,端口扫描和CGI攻击等等。SNORT集成了多种告警机制来提供实时告警功
能,包括:syslog、用户指定文件、UNIXSocket、通过SMBClient使用WinPopup对Windo
ws客户端告警。 Snort的现实意义维作为开源软件填补了只有商业入侵检测系统的空白
,可以帮助中小网络的系统管理员有效地监视网络流量和检测入侵行为。
2.snort与其他工具的比较。
Snort的主要用途就是网络监视、数据包的记录和检测入侵行为,下面是与分别具有上述
两种功能的典型工具的比较。
1)--snort与tcpdump的比较
Tcpdump是最为经典的嗅探工具,主要是用于记录网络数据,网络故障的探测诊断工具。
Snort与它的最大的共同之处在于都是基于libpcap的并且支持BPF过滤机制,所以本质上
都是调用的捕获数据包的库函数,但是snort的目的不仅仅是在于记录这个数据包而是从
安全的角度考虑出发区解析它,并且tcpdump主要是分析第二层或者第三层的报文来进行
网络故障诊断,而snort则主要针对于应用层的数据进行分析从而实现检测入侵行为。除
此之外,由于tcpdump旨在快速完整地记录流量,所以它制定了特殊的输出格式,速度快
但是不易看懂,而snort就提供了更为友好的输出格式,有利于系统管理员的直接分析。
--Figure 1 - Typical Snort telnet packet display:
--------------------------------------------------------------------------
20:59:49.153313 0:10:4B:A9:66 - 0:60:97:7:C2:8E type:0x800 len:0x7D
192.168.1.3:23 - 192.168.1.4:1031 TCP TTL:64 TOS:0x10 DF
***PA* Seq: 0xDF4A6536 Ack: 0xB3A6FD01 Win: 0x446A
FF FA 22 03 03 E2 03 04 82 0F 07 E2 1C 08 82 04 ..".............
09 C2 1A 0A 82 7F 0B 82 15 0F 82 11 10 82 13 FF ................
F0 0D 0A 46 72 65 65 42 53 44 20 28 65 6C 72 69 ...FreeBSD (elri
63 2E 68 6F 6D 65 2E 6E 65 74 29 20 28 74 74 79 c.home.net) (tty
70 30 29 0D 0A 0D 0A p0)....
---------------------------------------------------------------------------
--Figure 2 - The same telnet packet as displayed by tcpdump:
---------------------------------------------------------------------------
20:59:49.153313 0:10:4b:d:a9:66 0:60:97:7:c2:8e 0800 125: 192.168.1.3.23
192.168.1.4.1031: P 76:147(71) ack 194 win 17514 (DF) [tos 0x10] (ttl 64,
id 660)
4510 006f 0294 4000 4006 b48d c0a8 0103
c0a8 0104 0017 0407 df4a 6536 b3a6 fd01
5018 446a d2ad 0000 fffa 2203 03e2 0304
820f 07e2 1c08 8204 09c2 1a0a 827f 0b82
150f 8211 1082 13ff f00d 0a46 7265 6542
5344 2028 656c 7269 632e 686f 6d65 2e6e
6574 2920 2874 7479 7030 290d 0a0d 0a
---------------------------------------------------------------------------
2)--snort与NFR的比较
根据Denmac System公司1999年11月的现有商用网络入侵检测工具的调查结果表明,NFR
的综合性能指数高于ISS公司的RealSecure和CA公司的SessionWall,所以其代表了目前
国际上的IDS的最高水准,是一个比较成熟的商业产品。Snort的许多设计思想类似于NF
R,但是在很多方面都显出不足之处,例如无法实现IP Defragmentation等功能,在探测
规则语言的格式上来说,NFR采用的是一种深层次的脚本语言,SNORT与其相比就略显单
薄。但是snort的优势就在于它是开源软件,全世界的爱好者都可以加入它的开发升级工
作中来,其前景是无法限量的。
2.--原理
snort作为一个NIDS[注:基于网络的入侵检测系统(NIDS),其工作原理为在基于共享
网络上检测原始的网络传输数据,通过分析捕获的数据包,主要工作为匹配入侵行为的
特征或者从网络活动的角度检测异常行为,进而采取入侵的预警或记录。从检测模式而
言,snort属于是误用检测(misuse detection)。[注:该方法对已知攻击的特征模式
进行匹配,包括利用工作在网卡混杂模式下的嗅探器被动地进行协议分析,以及对一系
列数据包解释分析特征。]从本质上上来说,snort是基于规则检测的入侵检测工具,即
针对每一种入侵行为,都提炼出它的特征值并按照规范写成检验规则,从而形成一个规
则数据库。其次将捕获得数据包按照规则库逐一匹配,若匹配成功,则认为该入侵行为
成立。目前,snort的检测规则库主要包括了以下几类的入侵行为:
snort的结构主要分为三个部分如图n-1:
l--数据包捕获和解析子系统(Capture Packet Mechanism from link layer and the
packet decoder ):
该子系统的功能为捕获网络得传输数据并按照TCP/IP协议的不同层次将数据包进行解析
。Snort利用libpcap库函数进行采集数据, 该库函数可以为应用程序提供直接从链路层
捕获数据包的接口函数并可以设置数据包的过滤器以来捕获指定的数据。(的详细介绍
请参阅附录N)。网络数据采集和解析机制是整个NIDS实现的基础,其中最关键的是要保
证高速和低的丢包率,这不仅仅取决于软件的效率还同硬件的处理能力相关。对于解析
机制来说,能够处理数据包的类型的多样性也同样非常重要,目前,snort可以处理以太
网,令牌环以及SLIP等多种链路类型的包。
l--检测引擎(the detect engine)
检测引擎是一个NIDS实现的核心,准确性和快速性是衡量其性能的重要指标,前者主要
取决于对入侵行为特征码的提炼的精确性和规则撰写的简洁实用性,由于网络入侵检测
系统自身角色的被动性——只能被动的检测流经本网络的数据,而不能主动发送数据包
去探测,所以只有将入侵行为的特征码归结为协议的不同字段的特征值,通过检测该特
征值来决定入侵行为是否发生。后者主要取决于引擎的组织结构,是否能够快速地进行
规则匹配。
Snort采用了灵活的插件形式来组织规则库,即按照入侵行为的种类划分为相应的插件,
用户可以根据需要选取对应的插件进行检测。目前包括的插件分别如下:
每一类插件中包括了数十条的检测规则,分别代表同一类型的不同入侵行为。对于规则
的定义,snort使用了一种简单的,轻量级的规则描述语言,上述已经提及到检测的最终
行为就是检测数据包中协议的不同字段,例如端口号就是重要的入侵线索。为了更为清
楚地阐述这个问题,我们举一例说明:
攻击名称--NT IIS Showcode ASP
攻击种类--获取非法访问权限。
攻击描述--通过构造特定的URL请求可以非法阅读服务器上的其他文件
host/msadc/Samples/SELECTOR/showcode.asp?source=/msadc/Samples/../../../../.
./boot.ini
入侵特征码 --IP地址:保护网段以外的IP地址。
--协议类型:TCP
--端口:80
--TCP标志位:PUS, ACK
--数据段内容:/selector/showcode.asp
CVE ID--CAN-1999-0736
Bugtraq ID --167
分析以上的这个入侵实例,我们可以看出其实检测该入侵行为的关键是判断端口号和数
据段内容,IP地址、协议类型和TCP标志位只是辅助的特征码。但是当开始分析原始数据
包时,是否应该就直接匹配端口和数据段的内容?无疑针对该入侵行为上述做法的匹配
效率是最高的。但是实际上这样做会降低整体检测的效率,因为入侵系统要对庞大的网
络数据逐一进行检测,应该遵循先检测所有入侵行为的共同特征其次才是个体特征的原
则,例如如果首先检测IP地址,一旦发现并不属于检测范围之内,就立即检测下一个数
据包而并非继续检测该包的其他字段。这样既保证了检测的快速性,又提高了报警的实
时性。
Snort正是按照上述原则定义规则的,将检测规则划分成两个部分:规则头和规则选项。
前者是所有规则共有的包括IP地址、协议类型、端口号,后者根据不同规则包括相应的
字段关键字,例如TCP的标志位或者窗口大小等。检测规则除了包括上述的关于“要检测
什么”还应该定义“检测到了该做什么”,snort定义了三种处理方式——alert(发送报
警信息),log(记录该数据包)和pass(忽略该数据包)并定义为规则的第一个匹配关键
字,这样设计的目的非常简单,旨在在程序中组织整个的规则库,即将所有的规则按照
处理方式组织成三个链表以用于更快速准确地进行匹配,体现了设计者的巧妙之处。
下面我们来举一实例来具体说明规则的定义:
alert tcp !$HOME_NET any - $HOME_NET 80 (msg:"CAN-1999-0736 - IIS-showcode"
;flagsA; content:"/selector/showcode.asp"; nocase
该实例正式针对表(N)中所示的入侵行为所定义的检测规则,通过该例可以看出snort
的规则语言简明实用,基本格式为:
规则动作 协议类型 IP地址 端口号 - 协议类型 IP地址 端口号 (规则选项)
源发送方 目的接受方
关于规则的具体书写规范不再赘述,下面就其关键和特别之处加以说明:
1.-- 变量和操作符
snort作为一个NIDS,主要的目的就是能够保护本网段即及时发现外部网对内部网的攻击
,所以规则中的IP地址的定义主要是针对外部网和内部网地址两种。由此snort引入了变
量的机制,即可以在规则中用变量表示IP地址字段,用户在运行前可根据实际的子网地
址来定义该变量,这样在解析检测规则时snort会自动替换变量值,增加了规则的灵活性
,不过只适应于像IP地址这种基本所有规则都具有同一值。
为了更为准确地表达规则和精确地表示检测范围,snort还定义了三类操作符:
l--否定操作符——“ ! ”
用于表示snort还增加了否定符“!”来区分内部网和外部网。例如例n的!$HOME_NET。
l--方向操作符——“-”和””
用于表示传输的方向,分别表示单向和双向传输。
l--端口描述符——“ : ”
用于表示端口的范围。例如: “600:“表示大于600的端口号。
2. 规则选项
规则选项作为检测时的重要标准组成了snort入侵检测引擎的核心,既易用又非常灵活强
大。首先其灵活性是指可以根据不同的不同行为制定相应的检测选项内容,其次其强大
性是指不仅检测具有一定的广度和深度并且定义了检测到时该做什么 。snort中有15个
规则选项关键字,其中有三个关键字是做为检测到后的回应:
msg - 在报警和包日志中打印一个消息
logto - 把包记录到用户指定的文件中而不是记录到标准输出
resp - 主动反应(切断连接等)
Resp关键字可以对匹配一条Snort规则的流量进行灵活的反应(flexible reponse
-FlexResp)。FlexResp代码允许Snort主动地关闭恶意的连接。该模块合法的参数如下
:
rst_snd - 向发送方发送TCP-RST数据包
rst_rcv - 向接受方发送TCP-RST数据包
rst_all - 向收发双方发送TCP_RST数据包
icmp_net - 向发送方发送ICMP_NET_UNREACH
icmp_host - 向发送方发送ICMP_HOST_UNREACH
icmp_port - 向发送方发送ICMP_PORT_UNREACH
icmp_all - 向发送方发送上述所有的ICMP数据包。
作为入侵检测系统,理论上只需要检测入侵,并不需要去回应入侵行为的。所以该功能
应该是作为SNORT的附加功能,但是值得一提的是,发送RST和ICMP UNREACH数据包向攻
击方可以暂缓其对目标主机的攻击,我们所研究的一个工具叫做dsniff中的tcpkill就是
利用这个原理进行切断非法连接,但是对于一般的拒绝服务攻击,该方法的作用就不甚
明显了。对于SNORT来说,实现该功能必然会降低检测的的效率尤其是在网络流量特别大
的时候。
另外12中关键字都是针对协议中的不同字段设置的:
关键字--检测内容--主要针对的攻击行为
ttl--检测ip头的ttl的值 --用于对traceroute探测的检测
id--检测ip头的分片id值--黑客的固定攻击,例如设置为31337
dsize--检测包的净荷尺寸的值--缓冲区溢出攻击。
content--在包的净荷中搜索指定的样式--最为重要的一个选项,用于在数据包的数据段
中搜索指定的内容并根据数据触发响应,可以搜索包含混合的文本和二进制数据。并设
置了三个辅助关键字:offset,dsize,nocase
Flags--检测tcp flags的值--非法端口扫描或者其他非法探测主机操作系统类型等。
Seq--检测tcp顺序号的值--检测主机发送的序列号集是否是固定的集合。入侵者可以利
用该值冒充合法用户向被入侵者发送数据,伪装正常的通信以窃取信息或者其他非法活
动。
Ack--检测tcp应答(acknowledgement)的值--Nmap的TCP PING会设置该项的值为0,从而
判断可能正在用Nmap进行非法扫描。
Itype--检测icmp type的值--拒绝服务攻击。注:只作为其中的一种特征。
Icode--检测icmp code的值--可疑的流量。
Session--记录指定会话的应用层信息的内容--记录在TCP会话中的会话数据。
Icmp_id--检测ICMP ECHO ID的值--
Icmp_seq--检测ICMP ECHO 顺序号的值--
Ipoption--监视IP option的特定代码--
Rpc--监视特定应用/进程调用的RPC服务--检测非法的RPC请求,查看RPC请求,并自动将
应用(Application),过程(procedure)和程序版本(program version)译码,如果
所有三个值都匹配的话,该规则就显示成功。
3.预处理程序
预处理程序从Snort版本1.5开始引入,其代码在检测引擎被调用之前先被运行,为检测
做铺垫,从而提高检测的准确性和速度。而且预处理机制采用插件形式,用户和程序员
能够将模块化的插件方便地融入Snort之中。目前snort现有的预处理程序模块有以下三
种:
l--Minfrag
Minfrag预处理程序检查给定尺寸限制的分片数据包。数据包被分片通常是由源和目的主
机之间的路由器引起的。一般说来,商业网络设备不会产生小于512字节的分片包。可以
利用这个事实,来监控含有小分片的流量。
l--HTTP Decode
HTTP Decode用于处理HTTP URI字符串,将串中的数据转化为可读的ASCII字串,用于检
测HTTP的数据信息对付隐蔽的WebURL扫描器和恶意的入侵者。
l--Portscan Detector
Snort Portscan预处理程序的用处:
向标准记录设备中记录从一个源IP地址来的端口扫描的开始和结束。
如果指定了一个记录文件,在记录扫描类型的同时也记录目的IP地址和端口。端口扫描
定义为在时间T(秒)之内向超过P个端口进行TCP连接尝试,或者在时间T(秒)之内向
超过P个端口发送UDP数据包。端口扫描可以是对任一IP地址的多个端口,也可以是对多
个IP地址的同一端口进行。现在这个版本可以处理一对一和一对多方式的端口扫描,下
一个完全版本将可以处理分布式的端口扫描(多对一或多对多)。端口扫描也包括单一
的秘密扫描(stealthscan)数据包,比如NULL,FIN,SYNFIN,XMAS等。如果包括秘密
扫描的话,端口扫描模块会对每一个扫描数据包告警。
network to monitor - 监视端口扫描的目标网络以network/CIDR表示
number of ports - 在探测期间访问的端口数目
detection period - 以秒计数的端口访问时间限制
logdir/filename - 告警信息存放的目录/文件名,告警也可以写入标准的告警文件中。
l--日志及报警子系统(logging/alerting subsystem)
入侵检测系统的输出结果系统的必要特征是实时性和多样性,前者指能够在检测到入侵
行为的同时及时记录和报警,后者是指能够根据需求选择多种方式进行记录和报警。一
个好的NIDS,更应该提供友好的输出界面或发声报警等等。
Snort是一个轻量级的NIDS,它的另外一个重要功能就是数据包记录器,所以该子系统主
要提供了方式:
1.--fast model :采取TCPDUMP的格式记录信息
2. readable model :按照协议格式记录,易于用户查看。
3.alert to syslog: 向syslog发送报警信息。
4.alert to text file :以明文形式记录报警信息。
值得提出的是,snort考虑到用户需要高性能的时候,即网络数据流量非常大,可以将数
据包信息进行压缩从而实习快速的报警。
3.-- 程序结构
1)--snort的整体结构
snort作为优秀的公开源代码的入侵检测系统范例,其整个程序结构清晰,构思巧妙,我
们对于其版本1.6.3的源码进行了深入的分析。Snort共有64个c文件和h文件,首先介绍
程序的整体结构,其流程图如下:
其中最为关键的函数就是ProcessPacket(),--其流程图如下:
2)--数据结构--
snort的主要数据结构就是几个链表,上述已经提及,snort组织规则库的巧妙之处就是
按照规则的处理动作来划分成三个链表,其中每个链表又按照协议类型:TCP,IP和ICMP
分成三个链表,所以所有的规则都会被分配到这个三个链表中。链表中的成员就是描述
每条规则的结构——RuleTreeNode,该结构中的一个重要成员就是记录该规则的处理函
数链表——RuleFpList,一条规则有时候需要调用多个处理函数来进行分析。该结构中
的另外一个重要成员就是规则选项的结构,该结构同样包括该规则的选项信息以及其处
理函数链表。
值得提出的是,并不是每一条规则都分配一个RuleTreeNode结构,因为很多规则的选项
前的头部分是相同的,只需要根据不同的规则选项链取不同的选项函数处理链表。基本
整体的结构如图n所示,所有链表的初始化都是在捕获数据包前进行的。
除以上链表外,snort还定义了预处理、输出的关键字和处理函数链表,设计链表的主要
意图是为了实现插件的思想,即用户何以根据需求添加删除预处理的功能模块。其只要
的数据结构如下:
typedef struct _PreprocessKeywordNode
{
char *keyword;
void (*func)(char *);
} PreprocessKeywordNode;
// 预处理关键字信息结构。
typedef struct _PreprocessKeywordList
{
PreprocessKeywordNode entry;
struct _PreprocessKeywordList *next;
} PreprocessKeywordList;
//预处理关键字链表。
typedef struct _PreprocessFuncNode
{
void (*func)(Packet *);
struct _PreprocessFuncNode *next;
} PreprocessFuncNode;
//预处理函数链表。
所有链表的初始化都是在捕获数据包前进行初始化的,一旦链表都已建立完毕,开始捕
获数据包,每收到一个数据包都会现首先调用预处理程序链表中的函数进行处理后,其
次按照默认地顺序遍历AlertList,PassList和LogList三个链表。遍历时首先根据数据包
的协议类型定位规则链表,其次调用递归函数进行规则的逐一匹配,即首先匹配规则头
,若匹配则继续递归匹配规则选项,若不匹配,直接匹配下一条规则。为了加快遍历的
速度,snort在规则选项中的”content”内容匹配时调用了Boyer-Moore算法。
4.--改进
1.--背景
我们认为snort已经具备了NIDS的基本功能,由于它本身定位在一个轻量级的入侵检测工
具,尽管与商业的入侵检测工具比起来,它的规则语言略显简陋,在报警方式和图形化
使用界面上也显露出不足之处,但是程序的整体结构清晰,规则语言简单实用并提供插
件的功能支持,用户可以添加自己的检测规则和处理函数,这对于规则库的及时更新有
着极为现实的意义。
通过分析,与商业的NIDS相比,SNORT 1.6.3没有设置对IP 分片包的处理功能,即对于
例如“Teardrop”和“Ping of Death”两类利用非法IP分片包进行的攻击无法检测:
?--teadrop——该攻击是针对很多操作系统的TCP/IP协议栈没有正确处理已分段的IP包
的重组。其特征是发送2个或更多特别的分段IP数据报。第一个包是偏移量为0的段,数
据段(分段长度)字节是N,并设置了MF位,第二个包是最后一个分段(MF==0),但它的偏移
量小于N,所有造成两个分段重叠了。为了重组这些包,有弱点的系统就会在TCP/IP栈中
分配非常大的空间,因此导致目标系统因为内存耗尽而停止响应或者重启。
?--Ping of Death——该攻击的特正是向攻击目标发送大量的ICMP分片数据包,当这些
数据包重组时其数据段已经大于65535个字节,系统会因为无法处理这种数据包而造成拒
绝服务或者重启。
?--
2.--方案
3.--实现
中间人攻击
维基百科,自由的百科全书
在密码学和计算机安全领域中,中间人攻击(Man-in-the-middle attack ,缩写:MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。在许多情况下这是很简单的(例如,在一个未加密的Wi-Fi 无线接入点的接受范围内的中间人攻击者,可以将自己作为一个中间人插入这个网络)。
一个中间人攻击能成功的前提条件是攻击者能将自己伪装成每一个参与会话的终端,并且不被其他终端识破。中间人攻击是一个(缺乏)相互认证的攻击。大多数的加密协议都专门加入了一些特殊的认证方法以阻止中间人攻击。例如,SSL协议可以验证参与通讯的一方或双方使用的证书是否是由权威的受信任的数字证书认证机构颁发,并且能执行双向身份认证。
目录
1 需要通过一个安全的通道做额外的传输
2 攻击示例
3 防御攻击
4 中间人攻击的取证分析
5 其他的非加密的中间人攻击
6 实现
7 参见
8 参考资料
需要通过一个安全的通道做额外的传输
与连锁协议不同,所有能抵御中间人攻击的加密系统都需要通过一个安全通道来传输或交换一些额外的信息。为了满足不同安全通道的不同安全需求,许多密钥交换协议已经被研究了出来。
攻击示例
假设爱丽丝(Alice)希望与鲍伯(Bob)通信。同时,马洛里(Mallory)希望拦截窃会话以进行窃听并可能在某些时候传送给鲍伯一个虚假的消息。
首先,爱丽丝会向鲍勃索取他的公钥。如果Bob将他的公钥发送给Alice,并且此时马洛里能够拦截到这个公钥,就可以实施中间人攻击。马洛里发送给爱丽丝一个伪造的消息,声称自己是鲍伯,并且附上了马洛里自己的公钥(而不是鲍伯的)。
爱丽丝收到公钥后相信这个公钥是鲍伯的,于是爱丽丝将她的消息用马洛里的公钥(爱丽丝以为是鲍伯的)加密,并将加密后的消息回给鲍伯。马洛里再次截获爱丽丝回给鲍伯的消息,并使用马洛里自己的私钥对消息进行解密,如果马洛里愿意,她也可以对消息进行修改,然后马洛里使用鲍伯原先发给爱丽丝的公钥对消息再次加密。当鲍伯收到新加密后的消息时,他会相信这是从爱丽丝那里发来的消息。
1.爱丽丝发送给鲍伯一条消息,却被马洛里截获:爱丽丝“嗨,鲍勃,我是爱丽丝。给我你的公钥” -- 马洛里 鲍勃
2.马洛里将这条截获的消息转送给鲍伯;此时鲍伯并无法分辨这条消息是否从真的爱丽丝那里发来的:爱丽丝 马洛里“嗨,鲍勃,我是爱丽丝。给我你的公钥” -- 鲍伯
3.鲍伯回应爱丽丝的消息,并附上了他的公钥:爱丽丝 马洛里-- [鲍伯的公钥]-- 鲍伯
4.马洛里用自己的密钥替换了消息中鲍伯的密钥,并将消息转发给爱丽丝,声称这是鲍伯的公钥:爱丽丝-- [马洛里的公钥]-- 马洛里 鲍勃
5.爱丽丝用她以为是鲍伯的公钥加密了她的消息,以为只有鲍伯才能读到它:爱丽丝“我们在公共汽车站见面!”--[使用马洛里的公钥加密] -- 马洛里 鲍勃
6.然而,由于这个消息实际上是用马洛里的密钥加密的,所以马洛里可以解密它,阅读它,并在愿意的时候修改它。他使用鲍伯的密钥重新加密,并将重新加密后的消息转发给鲍伯:爱丽丝 马洛里“在家等我!”--[使用鲍伯的公钥加密] -- 鲍伯
7.鲍勃认为,这条消息是经由安全的传输通道从爱丽丝那里传来的。
这个例子显示了爱丽丝和鲍伯需要某种方法来确定他们是真正拿到了属于对方的公钥,而不是拿到来自攻击者的公钥。否则,这类攻击一般都是可行的,在原理上,可以针对任何使用公钥——密钥技术的通讯消息发起攻击。幸运的是,有各种不同的技术可以帮助抵御MITM攻击。
防御攻击
许多抵御中间人攻击的技术基于以下认证技术:
公钥基础建设
在PKI方案中,主要防御中间人攻击的方案就是PKI的相互认证的机制。使用这样的机制并由应用程序验证用户,用户设备验证应用程序。但在某些流氓应用的情况下,这不是很有用,所以需要注意对流氓软件应与正规软件进行区分。
更强力的相互认证,例如:
密钥(通常是高信息熵的密钥,从而更安全),或密码(通常是低的信息熵的密钥,从而降低安全性)
延迟测试,例如使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。
第二(安全的)通道的校验
一次性密码本可以对中间人攻击免疫,这是在对一次密码本的安全性和信任上创建的。公钥体系的完整性通常必须以某种方式得到保障,但不需要进行保密。密码和共享密钥有额外的保密需求。公钥可以由证书颁发机构验证,这些公钥通过安全的渠道(例如,随Web浏览器或操作系统安装)分发。公共密钥也可以经由Web在线信任进行在线验证,可以通过安全的途径分发公钥(例如,通过面对面的途径分发公钥)。
查看密钥交换协议以了解不同类别的使用不同密钥形式或密码以抵御中间人攻击的协议。
中间人攻击的取证分析
从被怀疑是中间人攻击的链接中捕捉网络数据包并进行分析可以确定是否存在中间人攻击。在进行网络分析并对可疑的SSL中间人攻击进行取证时,重要的分析证据包括:
远程服务器的IP地址
DNS域名解析服务器
X.509证书服务器
证书是自签名证书吗?
证书是由信任的颁发机构颁发的吗?
证书是否已被吊销?
证书最近被更改过吗?
在互联网上的其他的客户端是否也得到了相同的证书?
其他的非加密的中间人攻击
一个著名的非加密中间人攻击的例子是贝尔金无线路由器2003年的某一个版本所造成的。它会周期性地接管通过它的HTTP连接,阻止数据包到达目的地。并将它自己对请求的回应作为应答返回。而它发送的回应,则是在用户原本应该显示网页的地方,显示一个关于其他贝尔金产品的广告。在遭到了解技术详情的用户的强烈抗议后,这个功能被贝尔金从路由器后续版本的固件中删除。[1]
另一个典型的非加密中间人攻击的例子是“图灵色情农场”。布赖恩·华纳说,这是垃圾邮件发送者用来绕过验证码的“可以想象的攻击”。垃圾邮件发送者设置了一个色情网站,而访问这个色情网站需要用户解决一些验证问题。这些验证问题实际上是其他网站的验证问题。这样就可以达到绕开网站验证发送垃圾邮件的目的。[2]然而,Jeff Atwood指出,这次袭击仅仅是理论上的——没有任何证据指出垃圾邮件发送者曾经在2006年创建了图灵色情农场。[3]然而,2007年10月有新闻报道称,垃圾邮件发送者确实创建了一个Windows游戏,当用户键入从雅虎收到的注册邮箱验证码后,程序将奖励用户色情图片。[4]这将允许垃圾邮件发送者创建临时的免费电子邮件帐户以发送垃圾邮件。
实现
dsniff - 一个实现SSH和SSL中间人攻击的工具
Cain and Abel - Windows图形界面的工具,它可以执行中间人攻击,嗅探和ARP投毒
Ettercap - 一个基于局域网的中间人攻击工具
Karma - 一个使用802.11 Evil Twin以执行MITM攻击的工具
AirJack -一个演示802.11 MITM攻击的工具
SSLStrip一个基于SSL的MITM攻击的工具。
SSLSniff一个基于SSL的MITM攻击的工具。原本是利用一个在Internet Explorer上缺陷实现的。
Intercepter-NG -- 一个有ARP投毒攻击能力的Windows网络密码嗅探器。可以进行包括SSLStrip在内的
基于SSL的MITM攻击。
Mallory - 一个透明的TCP和UDP MiTMing代理。扩展到MITM SSL,SSH和许多其他协议。
wsniff - 一个802.11HTTP / HTTPS的基于MITM攻击的工具
安装在自动取款机银行卡插槽上的附加读卡器和安装在键盘上的附加密码记录器。
参见
浏览器中间人攻击 -一种网页浏览器中间人攻击
Boy-in-the-browser - 一个简单的Web浏览器中间人攻击
Aspidistra transmitter -英国二战“入侵”行动中使用的无线电发射器,早期的中间人攻击。
计算机安全 - 安全的计算机系统的设计。
安全性分析 - 在不完全知道加密方法的情况下破解加密后的信息。
数字签名 -一个加密文字的真实性担保,通常是一个只有笔者预计将能够执行计算的结果。
联锁协议 -一个特定的协议,在密钥可能已经失密的情况下,规避可能发生的中间人攻击。
密钥管理 - 如何管理密钥,包括生成,交换和存储密钥。
密钥协商协议 - 又称密钥交换协议,一个协商如何创建适合双方通信的密钥的协议。
相互认证 -如何沟通各方的信心创建在彼此的身份。
密码认证密钥协议 -创建使用密码钥匙的协议。
量子密码 - 量子力学的使用提供安全加密(老方法,而依靠单向函数)。
安全通道 - 一种在通信中防截获和防篡改的方式。
欺骗攻击
HTTP严格传输安全
参考资料
1. ^ Leyden, John. Help! my Belkin router is spamming me. The Register. 2003-11-07.
2. ^ Petmail Documentation: Steal People's Time To Solve CAPTCHA Challenges. [2008-05-19].
3. ^ CAPTCHA Effectiveness. 2006-10-25.
4. ^ PC stripper helps spam to spread. BBC News. 2007-10-30.
取自“中间人攻击oldid=40088488”
本页面最后修订于2016年5月13日 (星期五) 03:04。
本站的全部文字在知识共享 署名-相同方式共享 3.0协议之条款下提供,附加条款亦可能应用(请参阅使用条款)。
Wikipedia®和维基百科标志是维基媒体基金会的注册商标;维基™是维基媒体基金会的商标。
维基媒体基金会是在美国佛罗里达州登记的501(c)(3)免税、非营利、慈善机构。
1、WireShark WireShark是一个开源免费的高性能网络协议分析软件,它的前身就是非常著名的网络分析软件Ethereal。你可以使用它来解决网络疑难问题,进行网络协议分析,以及作为软件或通信协议的开发参考,同时也可以用来作为学习各种网络协议的教学工具等等。WireShark支持现在已经出现了绝大多数的以太网网卡,以及主流的无线网卡。WireShark具有如下所示的特点:(1) 支持多种操作系统平台,可以运行于Windows、Linux、Mac OS X10.5.5、Solaris和FreeBSD等操作系统上;(2) 支持超过上千种的网络协议,并且还会不断的增加对新协议的支持;(3) 支持实时捕捉,然后可在离线状态下进行分析;(4) 支持对VOIP数据包进行分析;(5) 支持对通过IPsec、ISAKMP、Kerberos、SNMPv3、SSL/TLS、WEP和WPA/WPA2等协议加密了的数据包解密;(6) 可以实时获取来自以太网、IEEE 802.11、PPP/HDLC、ATM、蓝牙、令牌环和FDDI(光纤)等网络中的数据包;(7) 支持读取和分析许多其它网络嗅探软件保存的文件格式,包括Tcpdump、Sniffer pro、EtherPeek、Microsoft Network Monitor和CISCO Secure IDS 等软件;(8) 支持以各种过滤条件进行捕捉,支持通过设置显示过滤来显示指定的内容,并能以不同的颜色来显示过滤后的报文;(9) 具有网络报文数据统计功能;(10) 可以将它捕捉到的数据导出为XML、PostScript、CSV及普通文本文件的格式。运行WireShark所需的文件:现在WireShark的最终版本是1.0.5,我们可以到上下载它。如果WireShark要在Windows系统下运行时,还需要一个名为Winpcap的驱动库,现在它的稳定版本是WinPcap 4.0.2,最新的测试版本是WinPcap 4.1 beta3,我们可以从 上下载。如果是在Linux系统下使用时,就应当使用Libpcap驱动库,它现在的版本是Libpcap1.0.0,我们可以从上下载。2、Tcpdump和WindumpTcpdump是一个老牌的使用最频繁的网络协议分析软件之一,它是一个基于命令行的工具。Tcpdump通过使用基本的命令表达式,来过滤网络接口卡上要捕捉的流量。它支持现在已经出现了绝大多数的以太网适配器。Tcpdump是一个工作在被动模式下的网络嗅探器。我们可以用它来在Linux系统下捕获网络中进出某台主机接口卡中的数据包,或者整个网络段中的数据包,然后对这些捕获到的网络协议(如TCP、ARP)数据包进行分析和输出,来发现网络中正在发生的各种状况。例如当出现网络连通性故障时,通过对TCP三次握手过程进行分析,可以得出问题出现在哪个步骤。而许多网络或安全专家,都喜欢用它来发现网络中是否存在ARP地址欺骗。我们也可以将它捕获到的数据包先写入到一个文件当中,然后用WireShark等有图形界面的嗅探器读取 它的命令格式为:tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名][ -s snaplen] [ -T 类型 ] [ -w 文件名 ] [表达式 ]我们可以使用-i参数来指定要捕捉的网络接口卡,用-r来读取已经存在的捕捉文件,用-w来将捕捉到的数据写入到一个文件中。至于其它的参数,我们可以从它的man文档中得到详细的说明,或者通过输入“tcpdump –-help”来到它的帮助信息。Tcpdum有一个非常重要的特点就是可以使用正则表达式来作为过滤网络报文的条件,这使得它的使用变得非常灵活。我们可以通过它内建的各种关键字来指定想要过滤的条件,一旦一个网络数据包满足表达式的条件,则这个数据包就会被捕获。如果我们没有给出任何条件,那么所有通过指定网络接口卡中的网络报文都会被捕获。 Tcpdump使用以下三种类型的关键字:(1)、用于表式类型的关键字,主要有Host、Net和Port。它们分别用来指定主机的IP地址、指定网络地址和指定端口。如果你没有指定关键字,它就会使用缺省的Host类型。(2)、用于表式传输方向的关键字,主要有Src、Dst。分别用来指定要捕捉的源IP地址是什么或目的IP地址是什么的包。(3)、用来表式捕捉什么协议的关键字,主要有ip,arp,tcp,udp等。这些关键字之间可以使用逻辑运算关键字来连接,以便于我们指定某个范围或排除某个主机等。这些逻辑运算关键字也有三个,分别是取非运算“not”,或者可以用“!”符号表示;与运算“and”,可以用“” 符号表示;或运算“or”,可以用“||”符号表示。Tcpdump的关键字还有很多,我就不在此全部列出。其它的可以通过它的帮助文档来得到它们的详细说明。运行Tcpdump需要的文件:Tcpdump可以很好地运行在UNIX、Linux和Mac OSX操作系统上,它现在的最新版本是TCPDUMP 4.0.0,我们可以从上下载它的二进制包。同时,要运行它,也需要系统中安装有Libpcap1.0.0这个驱动库。 3、 DSniffDSniff是一个非常强大的网络嗅探软件套件,它是最先将传统的被动嗅探方式向主动方式改进的网络嗅探软件之一。DSniff软件套件中包含了许多具有特殊功能的网络嗅探软件,这些特殊的网络嗅探软件可以使用一系列的主动攻击方法,将网络流量重新定向到网络嗅探器主机,使得网络嗅探器有机会捕获到网络中某台主机或整个网络的流量。这样一来,我们就可以将DSniff在交换或路由的网络环境中,以及Cable modem拔号上网的环境中使用。甚至,当安装有DSniff的网络嗅探器不直接连接到目标网络当中,它依然可以通过运程的方式捕获到目标网络中的网络报文。DSniff支持Telnet 、Ftp、Smtp、P0P3、HTTP,以及其它的一些高层网络应用协议。它的套件当中,有一些网络嗅探软件具有特殊的窃取密码的方法,可以用来支持对SSL和SSH加密了的数据进行捕获和解密。DSniff支持现在已经出现了的绝大多数的以太网网卡。 4、 EttercapEttercap也是一个高级网络嗅探软件,它可以在使用交换机的网络环境中使用。Ettercap能够对大多数的网络协议数据包进行解码,不论这个数据包是不是加密过了的。它也支持现在已经出现了的绝大多数以太网网卡。Ettercap还拥有一些独特的方法,用来捕获主机或整个网络的流量,并对这些流量进行相应的分析 5、NetStumblerNetStumbler是一个用来寻找使用IEEE802.11a/b/g标准的无线局域网工具。它支持 包括PCMCIA 无线适配器在内的绝大多数主流无线适配器,同时,还加入了对全球 GPS 卫星定位系统的支持
标签:dsniff攻击软件
已有2位网友发表了看法:
访客 评论于 2022-07-14 05:00:07 回复
果马洛里愿意,她也可以对消息进行修改,然后马洛里使用鲍伯原先发给爱丽丝的公钥对消息再次加密。当鲍伯收到新加密后的消息时,他会相信这是从爱丽丝那里发来的消息。1.爱丽丝发送给鲍伯一条消息,却被马洛里截获:爱丽丝“嗨,鲍勃,我是爱丽丝。给我你的公钥” -
访客 评论于 2022-07-14 01:01:40 回复
检 测HTTP的数据信息对付隐蔽的WebURL扫描器和恶意的入侵者。 l--Portscan Detector Snort Portscan预处理程序的用处: 向标准记录设备中记录从一