实验六 端口扫描攻击检测
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六端口扫描攻击检测
1、需求分析
针对内外网用户的恶意扫描检测,通过snort的端口扫描攻击检测,初步识别攻击的源和目的地址,进行及时防御,将威胁降到最低,更好的保护公司单位网络的安全。
外网用户的恶意扫描探测
2、实验原理
2.1 端口扫描基本知识
端口扫描向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。端口扫描也可以通过捕获本地主机或服务器的流入流出IP数据包来监视本地主机的运行情况,他仅能对接收的数据进行分析,帮助我们发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。
端口扫描技术行为作为恶意攻击的前奏,严重威胁用户的网络,snort通过扫描的行为特征准确地识别出恶意的扫描行为,并及时通知管理员。
常用的端口扫描技术:
(1)TCP 端口连接扫描:这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。
(2)TCP SYN扫描:这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。
如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。
这种扫描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。
(3)TCP FIN 扫描:有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。
并且这种方法在区分Unix和NT时,是十分有用的。
(4)IP段扫描:这种不能算是新方法,只是其它技术的变化。它并不是直接发送TCP探测数据包,是将数据包分成两个较小的IP段。这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。但必须小心。一些程序在处理这些小数据包时会有些麻烦。
(5)TCP 反向ident扫描:ident 协议允许(rfc1413)看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。因此你能,举个例子,连接
到http端口,然后用identd来发现服务器是否正在以root权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。
(6)FTP 返回攻击:FTP协议的一个有趣的特点是它支持代理(proxy)FTP连接。
即入侵者可以从自己的计算机和目标主机的FTP server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个server-PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。对于一个User-DTP,这是个推测,尽管RFC明确地定义请求一个服务器发送文件到另一个服务器是可以的。但现在这个方法好象不行了。这个协议的缺点是“能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙”。我们利用这个的目的是从一个代理的FTP 服务器来扫描TCP端口。这样,你能在一个防火墙后面连接到一个FTP服务器,然后扫描端口(这些原来有可能被阻塞)。如果FTP服务器允许从一个目录读写数据,你就能发送任意的数据到发现的打开的端口。对于端口扫描,这个技术是使用PORT命令来表示被动的User DTP正在目标计算机上的某个端口侦听。然后入侵者试图用LIST 命令列出当前目录,结果通过Server-DTP发送出去。如果目标主机正在某个端口侦听,传输就会成功(产生一个150或226的回应)。否则,会出现"425 Can't build data connection: Connection refused."。然后,使用另一个PORT命令,尝试目标计算机上的下一个端口。这种方法的优点很明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP服务器最终能得到一些线索,关闭代理功能。
2.2 sfPortscan预处理器
本实验通过攻击者常用的Nmap端口扫描工具进行端口扫描攻击,检测snort对端口扫描攻击的检测能力。
sfPortscan预处理器,是snort中端口扫描检测模块,可以检测各种不同类型的端口扫描。通过README.sfportscan可以得多更多关于检测原理、警告类型以及端口扫描细节。
常用端口扫描预处理器的格式:
preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low }
配置选项:
proto { tcp udp icmp ip all }:该参数列出你希望检测的协议类型。参数之间用空格分开并且不能有逗号。
scan_type { portscan portsweep decoy_portscan distributed_portscan all }:该参数描述你希望寻则检测的扫描类型,参数应用空格区分并且不能有逗号。
sense level { low|medium|high}:这个选项只需要一个参数,用来确定检测端口扫描的敏感度水平。‘low’级别使用通用方法来查找响应错误,如TCP RSTs和ICMP无法到达,这个级别需要最少的优化。medium级别会检测端口扫描和过滤端口扫描(那些没有收到响应的端口扫描),这个级别通常需要优化从NATed IPs以及DNS cache servers来的扫描事件。high 级别有最小的端口检测限制,比medium有更长的时间窗,需要more tuning and may be noisy on very active networks,然后这个界别捕获更多的扫描。
memcap { positive integer):分配给端口扫描的最大字节数。数字越高,越多节点可以被跟踪。
logfile { filename }:指定端口扫描和详细端口扫描值的写入日志文件位置。如果没有以/开头,snort会写入配置的log目录。通过README.sfportscan查看更详细的关于项log文件写日志的方法。
watchip { Snort IP List }:指定需要监视的主机列表。
ignore_scanners { snort IP list }:需要忽略的扫描主机列表。用来优化针对动态主机,如