实验六端口扫描攻击检测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 }:需要忽略的扫描主机列表。
用来优化针对动态主机,如Nat,nessus主机等的警告。
ignore_scanned { Snort IP List }:需忽略已扫描主机列表。
用来优化从syslog servers过来的活动主机的警报。
detect_ack_scans:检测ACK 扫描是很有必要的。
然而,这也可能会导致错误警报,特别是under heavy load with dropped packets,这也是这个原型默认是off的原因。
eg:preprocessor sfportscan: proto { all } /memcap { 10000000 } /sense_level { low }3、实验步骤第一步:修改snort配置文件,修改策略在snort.conf中写入如下内容:preprocessor sfportscan: proto { all } \memcap { 10000000 } \sense_level { high }确保include $RULE_PATH/scan.rules启用,将scan.rules内部规则规则全面的#去掉。
第二步:启动snortc:\snort\bin\snort -A full -c "c:\Snort\etc\snort.conf" -l "c:\Snort\log"第三步:实施攻击下载安装扫描软件ScanPort或Nmap,同组主机使用扫描软件对虚拟机进行扫描。
「注」若第一次端口扫描后portscan.log没有日志,不要退出snort,请同组主机进行第二次端口扫描。
第四步:查看告警信息[**] [1:1917:9] SCAN UPnP service discover attempt [**][Classification: Detection of a Network Scan] [Priority: 3]04/26-19:24:57.761396 59.75.129.71:64267 -> 239.255.255.250:1900UDP TTL:1 TOS:0x0 ID:1088 IpLen:20 DgmLen:161Len: 133[**] [1:1917:9] SCAN UPnP service discover attempt [**][Classification: Detection of a Network Scan] [Priority: 3]04/26-19:25:00.807235 59.75.129.71:64267 -> 239.255.255.250:1900UDP TTL:1 TOS:0x0 ID:1090 IpLen:20 DgmLen:161Len: 133思考题:如何监视具体网段是否存在恶意行为的端口扫描?。