网络安全实验指导书 - 图文

更新时间:2024-01-12 01:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

网络安全

验 指 导 信息技术工程学院

网络工程教研室

1

实 书

目 录

2

实验一 常用的网络命令

实验目的: 学会使用常用的网络命令对计算机或网络运行情况进行分析 实验内容: 判断主机是否连通的ping指令

查看IP地址配置情况的ipconfig指令 查看网络连接状态的netstat指令 进行网络操作的net指令 进行定时器操作的at指令

实验要求: 掌握这些命令的运行结果及其表示的意义 实验学时: 2学时 实验步骤:

1. ping命令

ping指令通过发送ICMP包来验证与另一台TCP/IP计算机的IP级连接。应答消息的接收情况将和往返过程的次数一起显示出来。ping指令用于检测网络的连接性和可到达性,如果不带参数,ping将显示帮助。

可以利用ping指令验证和对方计算机的连通性,使用的语法是“ping 对方计算机名或者IP地址”。如果连通的话,返回的信息如图2-40所示。

2. ipconfig指令

ipconfig指令显示所有TCP/IP网络配置信息、刷新动态主机配置协议(DHCP, Dynamic Host Configuration Protocol)和域名系统(DNS)设置。

使用不带参数的ipconfig可以显示所有适配器的IP地址、子网掩码和默认网关。在DOS命令行下输入ipconfig指令。

3

3. netstat指令

netstat指令显示活动的连接、计算机监听的端口、以太网统计信息、IP 路由表、IPv4统计信息(IP、ICMP、TCP和UDP协议)。使用“netstat -an”命令可以查看目前活动的连接和开放的端口,是网络管理员查看网络是否被入侵的最简单方法。使用的方法如图2-43所示。

4.net指令

net指令的功能非常的强大,net指令在网络安全领域通常用来查看计算机上的用户列表、添加和删除用户、和对方计算机建立连接、启动或者停止某网络服务等。利用“net user”查看计算机上的用户列表,如图2-44所示。

利用“net user 用户名 密码”给某用户修改密码,比如把管理员的密码修改成

4

“123456”,如图2-45所示。 net user jack 123456 /add

net localgroup administrators jack /add net user

只要拥有某主机的用户名和密码,就可以用“IPC$(Internet Protocol Control)”建立信任连接,建立完信任连接后,可以在命令行下完全控制对方计算机。 比如得到IP为172.18.25.109计算机的管理员密码为123456,可以利用指令“net use \\\\172.18.25.109\\ipc$ 123456 /user:administrator”,如图2-47所示。

建立完毕后,就可以操作对方的计算机,比如查看对方计算机上的文件,如图2-48所示。

5.at指令

net use * /del

net use \\\\172.18.25.109\\ipc$ 123456 /user:administrator net time \\\\172.18.25.109

at \\\\172.18.25.109 8:40 notepad.exe

5

实验二、网络扫描

实验目的: 学会使用软件对被攻击的计算机、网站或某个网段进行扫描,查出计算机或网站的漏洞

实验内容: 系统用户的扫描

开放端口的扫描 共享软件的扫描 以及漏洞的扫描

实验要求: 掌握这些扫描的方法及理解其结果,并据此提高安全方法的意义 实验学时: 2学时 实验步骤:

1.系统用户的扫描 可以使用工具软件:GetNTUser,该工具可以在Winnt4以及Win2000操作系统上使用,主要功能包括:

(1)扫描出NT主机上存在的用户名。

(2)自动猜测空密码和与用户名相同的密码。 (3)可以使用指定密码字典猜测密码。 (4)可以使用指定字符来穷举猜测密码。

对IP为172.18.25.109的计算机进行扫描,首先将该计算机添加到扫描列表中,选择菜单File下的菜单项“添加主机”,输入目标计算机的IP地址,如图4-3所示。

可以得到对方的用户列表了。点击工具栏上的图标,得到的用户列表如图4-4所示。

6

2. 端口扫描

得到对方开放了哪些端口也是扫描的重要一步。使用工具软件PortScan可以到得到对方计算机都开放了哪些端口,主界面如图4-8所示。

对172.18.25.109的计算机进行端口扫描,在Scan文本框中输入IP地址或某个网段,并根据扫描情况设置扫描的端口,点击按钮“START”,开始扫描如图4-9所示。 3. 关闭或禁用端口的方法

1)关闭软件开启的端口。可以打开本地连接的“属性→Internet 协议(TCP/IP)→属性 →高级→选项→TCP/IP 筛选属性”,然后都选上“只允许”(如图2)。请注意,如果发现某个常用的网络工具不能起作用的时候,请搞清它在你主机所开的端口,然

7

后在“TCP/IP 筛选”中添加相应的端口。 禁用NetBIOS。打开本地连接的“属性→Internet 协议(TCP/IP)→属性→高级→WINS →禁用 TCP/IP 上的 NetBIOS”(如图3)。这样一来就关闭了137、138以及139端口,从而预防IPC$入侵。

2)开启Windows XP 自带的网络防火墙。打开本地连接的“属性→高级” ,启用防火墙之后,单击设置可以设置系统开放关闭哪些服务。一般来说,这些服务都可以不要,关闭这些服务后,这些服务涉及的端口就不会被轻易打开了。

8

点击“例外”选项卡可以添加允许或禁用的端口。除此之外,点击“高级”项可以对相关服务进行设置。

9

实验三 漏洞扫描及网络监听

实验目的: 掌握使用Xscan等扫描工具对拟攻击网站进行漏洞扫描,学会Ethereal分析协议

数据包的技能

实验内容: Xscan工具的使用以及监听工具Ethereal的安装和使用

实验要求: 发现有关主机的漏洞;截获foxmail自动发送状态下邮箱密码 实验学时: 2学时

实验步骤: 1. Xscan工具的使用

使用工具软件X-Scan-v2.3

该软件的系统要求为:Windows 9x/NT4/2000。该软件采用多线程方式对指定IP地址段((或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式 扫描内容包括:远程操作系统类型及版本

标准端口状态及端口Banner信息、SNMP信息,CGI漏洞,IIS漏洞,RPC漏洞,SSL漏洞 SQL-SERVER、FTP-SERVER、SMTP-SERVER、POP3-SERVER NT-SERVER弱口令用户,NT服务器NETBIOS信息注册表信息等。 安装完成后的系统的主界面为:

可以利用该软件对系统存在的一些漏洞进行扫描,选择菜单栏设置下的菜单项“扫描参数”,扫描参数的设置如图4-15所示。

10

可以看出该软件可以对常用的网络以及系统的漏洞进行全面的扫描,选中几个复选框,点击按钮“确定”。

下面需要确定要扫描主机的IP地址或者IP地址段,选择菜单栏设置下的菜单项“扫描参数”,扫描一台主机,在指定IP范围框中输入:172.18.25.109-172.18.25.109,如图4-16所示。

设置完毕后,进行漏洞扫描,点击工具栏上的图标“开始”,开始对目标主机进行扫描,如图4-17所示

11

并且系统还能够生成网页式的报告。此扫描为我们下一步对网站进行入侵奠定了基础。

2. Ethereal进行网络监听

Ethereal是一个图形用户接口(GUI)的网络嗅探器,能够完成与Tcpdump相同的功能,但操作界面要友好很多。Ehtereal和Tcpdump都依赖于pcap库(libpcap),因此两者在许多方面非常相似(如都使用相同的过滤规则和关键字)。Ethereal和其它图形化的网络嗅探器都使用相同的界面模式,如果能熟练地使用Ethereal,那么其它图形用户界面的嗅探器基本都可以操作。

1. Ethereal的安装

在http://www.ethereal.com网站上可以下载到最新的Ethereal源码包。下面以Ethereal 0.9.9为例,讲述如何安装Ethereal,此处使用的操作系统是Red Hat 8.0。 首先下载最新的源码包,并将其解压缩:

# cp ethereal-0.9.9.tar.bz2 /usr/local/src/ # cd /usr/local/src/

# bzip2 -d ethereal-0.9.9.tar.bz2 # tar xvf ethereal-0.9.9.tar 同Tcpdump一样,在编译Ethereal之前应先确定已经安装pcap库(libpcap),这是编译Ethereal时所必需的。如果该库已经安装,就可以执行下面的命令来编译并安装Ethereal: # cd ethereal-0.9.9 # ./configure

2.设置Ethereal的过滤规则

当编译并安装好Ethereal后,就可以执行“ethereal”命令来启动Ethereal。在用Ethereal截获数据包之前,应该为其设置相应的过滤规则,可以只捕获感兴趣的数据包。Ethereal使用与Tcpdump相似的过滤规则,并且可以很方便地存储已经设置好的过滤规则。要为Ethereal配置过滤规则,首先单击“Edit”选单,然后选择“Capture Filters...”菜单项,打开“Edit Capture Filter List”对话框(如图1所示)。因为此时还没有添加任何过滤规则,因而该对话框右侧

12

的列表框是空的。

在Ethereal中添加过滤器时,需要为该过滤器指定名字及规则。例如,要在主机10.1.197.162和www.sohu.com间创建过滤器,可以在“Filter name”编辑框内输入过滤器名字“sohu”,在“Filter string”编辑框内输入过滤规则“host 10.1.197.162 and www.sohu.com”,然后单击“New”按钮即可。

在Ethereal中使用的过滤规则和Tcpdump几乎完全一致,这是因为两者都基于pcap库的缘故。Ethereal能够同时维护很多个过滤器。网络管理员可以根据实际需要选用不同的过滤器,这在很多情况下是非常有用的。例如,一个过滤器可能用于截获两个主机间的数据包,而另一个则可能用于截获ICMP包来诊断网络故障。 当所有需要的过滤器都创建好后,单击“Save”按钮保存创建的过滤器,然后单击“Close”按钮来关闭“Edit Capture Filter List”对话框。要将过滤器应用于嗅探过程,需要在截获数据包之前或之后指定过滤器。要为嗅探过程指定过滤器,并开始截获数据包,可以单击“Capture”选单,选择“Start...”选单项,打开“Capture Options”对话框,单击该对话框中的“Filter:”按钮,然后选择要使用的过滤器。

注意在“Capture Options”对话框中,“Update list of packets in real time”复选框被选中了。这样可以使每个数据包在被截获时就实时显示出来,而不是在嗅探过程结束之后才显示所有截获的数据包。 在选择了所需要的过滤器后,单击“OK”按钮,整个嗅探过程就开始了。Ethereal可以实时显示截获的数据包,因此能够帮助网络管理员及时了解网络的运行状况,从而使其对网络性能和流量能有一个比较准确的把握。 3.用Ethereal分析数据包

Ethereal和其它的图形化嗅探器使用基本类似的界面,整个窗口被分成三个部分:最上面为数据包列表,用来显示截获的每个数据包的总结性信息;中间为协议树,用来显示选定的数据包所属的协议信息;最下边是以十六进制形式表示的数据包内容,用来显示数据包在物理层上传输时的最终形式,包括该数据包的源地址、目的地址、所属等。图4是在Ethereal中对一个HTTP数据包进行时的情形。 在图3最上边的数据包列表中,显示了被截获的数据包的基本信息。从图中可以看出,当前选中数据包的源地址是10.1.197.162,目的地址为61.135.150.65,该数据包所属的是超文本传输使用Ethereal可以很方便地对截获的数据包进行分析协议分析协议协议(HTTP)。更详细的信息表明该数据包中含有一个HTTP的GET命令,要求下载starrtlog.js文件到客户端的Web浏览器。

13

选择网卡

在主界面选择第一项“List Available Capture Interface”,则出现下图的界面

在其中点击“Capture”捕获数据包,则在主界面

14

实验四 密码破解

实验目的: 掌握使用密码破解工具获取用户的各种密码

实验内容: 获取管理员密码、普通用户建立管理员账号、暴力破解 实验要求: 能够破解出一些文件的密码,提高信息安全意识 实验学时: 2学时 实验步骤:

1. 获取管理员密码

因为用户登录以后,所有的用户信息都存储在系统的一个进程中,这个进程是:“winlogon.exe”,可以利用程序将当前登录用户的密码解码出来,如图5-1所示。

使用FindPass等工具可以对该进程进行解码,然后将当前用户的密码显示出来。将

FindPass.exe拷贝到C盘根目录,执行该程序,将得到当前用户得登录名,如图5-2所示。

2. 权限提升

用普通用户帐号登录后,可以利用工具GetAdmin.exe将自己加到管理员组或者新建一个具有管理员权限的用户。利用Hacker帐户登录系统,在系统中执行程序GetAdmin.exe,程序自动读取所有用户列表,在对话框中点击按钮“New”,在框中输入要新建的管理员组的用户名,如图5-5所示。

15

成功之后查看自己所属的组,发现普通用户权限得到提升。 3. 暴力破解

安装软件Advanced OfficeXPPassword Recovery(AOXPPR),完成之后打开软件并点击工具栏按钮“Open File”,打开刚才建立的Word文档,程序打开成功后会在Log Window中显示成功打开的消息,如图5-15所示。

设置密码长度最短是一位,最长是三位,点击工具栏开始的图标,开始破解密码,大约两秒钟后,密码被破解了,如图5-16所示。

4. Unicode

Unicode漏洞是攻击者可通过IE浏览器远程运行被攻击计算机的cmd.exe文件,从而使该计算机的文件暴露,且可随意执行和更改文件的漏洞。登录202.113.244.99,手工利用漏洞进行软件和文件的下载。

http://202.113.244.99/share/pubfun_down_file.asp?orgfile=lkoa_wdfj_4947.pdf&savefile=../atthfiles/oawdfj/lkoa_wdfj_4947.pdf

上述连接就是带有Unicode漏洞的,在地址栏直接输入可以绕过用户登录。然后将

savefile=../atthfiles/oawdfj/lkoa_wdfj_4947.pdf中的4947改为其它数字,可以发现能够下载其它文件。 改变其中的路径,即savefile 在中的savefile的../atthfiles/oawdfj/部分下载其他文件。

16

实验五 恶意代码

恶意代码(Malicious Codes)是指黑客们编写的扰乱社会和他人的计算机程序。本次实验演示一些恶意代码以加深学生对恶意代码的理解以及掌握其运行机理。 一、脚本病毒

用记事本打开1209实验文件夹下的test1.html,阅读代码脚本。虽然该脚本比较简单,当在IE等浏览器中打开时会弹出\ha! you are hijacked!\的对话框,你点击该对话框的速度有多快,对话框弹出的有多快。Test2.html是该程序的升级版,当页面打开后,点击按钮,会发现IE中会一直打开新的窗口,并且窗口中显示“I Love You!”,该程序运行下去可以将内存消耗光从而使你的计算机死机。 二、吞金者脚本病毒

1.首先在D盘创建mytest文件夹

2. 在计算机上插入U盘,检查U盘盘符,如果U盘显示的盘符是G盘,则程序GoldEater不需要做任何修改,如果显示的是其它盘符,则打开程序,将其中的 fso.copyfile \

fso.copyfolder \

G盘符改为相应的盘符,然后运行程序(双击程序即可),稍等即可发现U盘内容被复制到d:\\mytest文件下。该程序具有自动拷贝U盘内容的功能从而得到用户数据,威胁用户数据的安全。

提示:可以进一步对该程序进行改进使程序具有自动检测U盘盘符的功能,这样程序运行后不管U盘盘符是什么,都会将其中内容拷贝到计算机上。 三、宏病毒代码

宏病毒是单独的一类病毒,因为它与传统的病毒有很大的不同,他不感染.EXE、.COM等可执行文件,而是将病毒代码以“宏”的形式潜伏在Office文档中,当采用Office软件打开这些染毒文件时,这些代码就会被执行并产生破坏作用。由于“宏”是使用VBA(Visual Basic For Application)这样的高级语言写的,因此其编写过程相对来说也比较简单,而功能又十分强大。

在office中打开文件macro virus.doc文件,检查其中内容是否会自动增加。如果会,则说明该文件的宏已经运行。否则,点击“工具”->“宏”在其中输入“宏”名称MacroTest,并将MacroTest.txt目录中的内容拷贝到宏编辑器中并保存,然后运行宏则会发现.doc中每过5秒钟就会自动增加若干行字符。关闭该文件如果编辑其它文件也会发现有该现象这说明宏病毒发作了。

对代码进行分析,理解为什么文档会一直不断地自动增加若干行字符。 四、普通病毒模拟

此程序test.cpp编译通过后,输入不同的参数会得到不同的情况。其中威力最大的是test.exe all。当在dos模式下运行该命令,程序自动监测机器上的盘符,并且采用递归的方式检查每一个盘符上的文件夹,并且在每一个文件夹下创建一个文本文件love.txt。通过该程序理解病毒的感染性。如果键入test.exe c:\\\\则仅仅感染C盘。阅读该程序,掌握病毒感染的机理,并试着对该程序进行改进以增大其威力。

17

实验六 网络监听

首先打开Cain,显示如图所示的界面。

但是它的功能可就不简单了。 Cain使用:

一、读取缓存密码:切换到“受保护的缓存口令”标签,点上面的那个加号

缓存在IE里的密码全都显示出来了。 二、查看网络状况

切换到“网络” 标签,可以清楚的看到当前网络的结构,我还看到内网其他的机器的共享目录,用户和服务,通过上图,我们清楚的看到Smm-DB1开启了IPC$默认共享连接和其他盘隐藏共享。

18

三、ARP欺骗与嗅探

ARP欺骗的原理是操纵两台主机的ARP缓存表,以改变它们之间的正常通信方向,这种通信注入的结果就是ARP欺骗攻击。ARP欺骗和嗅探是Cain我们用的最多的功能了,切换到“嗅探”标签。 在这里可以清晰的看到内网中各个机器的IP和MAC地址。我们首先要对Cain进行配置,先点最单击最上面的“配置”

在“嗅探器”中选择要嗅探的网卡,在“ARP(Arp Poison Routing)”中可以伪造IP地址和MAC地址进行欺骗,避免被网管发现。在“过滤与端口”中可以设置过滤器,可以根据自己的需要选择过滤的端口,如嗅探远程桌面密码的话,就钩选RDP 3389端口。单击网卡的那个标志开始嗅探,旁边的放射性标志则是ARP欺骗。 嗅探了N久之后,点击下面的 “截获密码”,嗅探所得到的密码会按分类呈现在大家面前,包括http、ftp、VNC、SMTP、ICQ等密码。如果目标主机使用voip电话的话,还可以获得他使用voip电话的录音(恐怖吧),如图

19

下面我们来进行Arp欺骗,点击下面的“ARP”标签,在右边的空白处单击,然后点上面的“加号”,出现“新建ARP欺骗”对话框,在左边选网关,右边选择被欺骗的IP。

20

实验四 缓冲区溢出攻击

下载回Metasploit的安装程序之后双击安装,傻瓜化的安装过程,这里就不多说了。

安装完成后可以看到安装目录下多了很多文件,主要的是:Msfconsole.bat和Msfweb.bat。第一个是这个工具包的控制台,第二个是这个程序的图形界面下的程序,下面我将和大家一起来领略它们的魅力!。

命令行下使用Metasploit

运行后首先看到的是Metasploit欢迎界面,我们输入“?”得到在线帮助(如图1所示):

可以看到里面有很多的命令,下面我将最重要的几个做简单解释:

“?”:得到帮助。

“cd”:更换当前的工作目录。 “exit”:退出。

“help”:得到帮助。

“info”:显示当前程序的信息。 “quit”:推出程序。

“reload”:载入Exploit和payloads。 “save”:保存当前设置

“setg”:设置一个环境变量。

“show”:显示可用的Exploit和payloads。 “use”:使用一个Exploit。 “version”:显示程序的版本。

虽然有这么多的命令可是常用的也就是“show”、“info”和“use”而已,它们究竟怎么使用呢?

此程序集成了众多的Exploit,所以我们要先了解一下程序中到底有那些溢出工具包,输入“show Exploits”看有哪些可用的Exploit程序先(如图2所示):

21

左面显示的是溢出程序的程序名称,右面是相应的简介。可以看到Metasploit中带的溢出程序包还是很多的,完全可以满足我们日常入侵的需要,以后我们就再也不用到存放溢出程序的文件夹中去找半天对应的程序了!

知道了有什么溢出程序,但是怎么使用呢?一般情况下,当我们拿到一个溢出程序后要先阅读溢出程序的帮助文件来查看使用方法,在Metasploit中怎样查看我们需要的溢出程序的使用方法呢?这就用到了Info命令。该命令的作用是显示溢出程序包的详细信息,比如我们想要查看 “iis50_webday_ntdll”溢出工具包的使用方法,在命令行下输入:“info Exploit iis50_webday_ntdll”后得到如图3所示的回显:

蝴蝶:在图3中我们需要注意的是一开始的部分和Available Options中的内容,开始的内容可以告诉我们这个溢出程序是针对什么系统的,而Available Options中的内容是我们下

22

一步所要用到的。

这里需要说明的是在输入的命令中的Exploit是向程序指明我们要查看的是Exploit的信息,当然可以查看的还有Payload的信息,但 Payload是什么呢?其实说白了Payload就是我们平时说的ShellCode。在Metasploit中,溢出所用的ShellCode并不像我们平时用到的溢出工具一样,Metasploit允许我们自己选择自己喜欢的ShellCode,这样就大大提高了溢出的灵活行。

在命令行下输入“show payloads”后可以看到可用的ShellCode列表(如图4所示):

同样,左面是ShellCode的名字,右面是相应的简介。我们再用Info命令来看一下ShellCode的具体信息,比如我们对一个叫Winexec的ShellCode比较感兴趣,在命令行下

输入:Info payload winexec,如图5所示。

在这个对话框中需要注意的同样是开头的信息和Available Options中的内容。在Available Options中,我们可以看到有Required和Optional的字样,Required 代表必选的意思Optional代表是可选可不选的。在下面的具体使用中我们需要用到这里面的选项。

23

蝴蝶:这里需要说明的是,以BSD开头的是针对BSD系统的ShellCode,以Linx开头的是针对Linux系统的ShellCode,以CMD和WIN开头的是针对Windows系统。因为为不同的系统对不同的ShellCode要求是不一样的,所一在此一定要选择合适的ShellCode才可以成功溢出。

看了这么多基本的命令介绍,下面我们实际溢出一次看看效果!

在实际的溢出中,我们要用到的是USE命令。这里我们仍然以“iis50_webdav_ntdll”溢出工具包为例。在命令行中输入“use iis50_webdav_ntdll”后会切换到“iis50_webdav_ntdll”目录下。输入Show options,查看溢出工具包要求指定输入的内容。如图6所示:

可以看到有两个Required项,这里的Required是和图3中一致的。下面我们来设置这些必须的选项,在命令行下依次输入: set RHOST 192.168.1.3 set RPORT 80 如图7所示:

24

在Metasploit中,ShellCode是可自己指定的,怎样指定呢?很简单,依次输入输入: set payload winexec

set CMD net user hacker 123 /add & net localgroup administrators hacker /add 如图8所示。

第一个命令是指定我们需要用什么样的ShellCode,但是第2个命令是什么意思呢?大家现在回过头去看看图5。发现了什么?呵呵,还记得我提到过的必选项吗?看看Available

25

Options中的CMD必选项和后面的说明。是的,这里的第2个命令的意思就是设置必选项CMD,其实设置的CMD的内容就是我们想要执行的命令。至于什么命令那就看大家的需要了!

好了最基本的设置我们已经完成,最后指明目标主机的操作系统就可以发动攻击了,输入:show targets

可以看到可供选择的操作系统类型的代表名称。接着输入:set target 0选定操作系统。我们确认一下,输入:Set,可以看到如图9所示的回显:

检查无误后就可以开始溢出了,输入Exploit 程序提示溢出开始,只不过我这次试验怎么溢出都不成功,因为对方系统早补了这个漏洞了,这里也就不把图贴出来丢人了,见谅。 图形界面下使用Metasploit

Metasploit图形界面的使用方法和命令行下没有太大的区别,只不过是操作方式的不同罢了:到Metasploit的安装目录下找到Msfweb.bat文件双击运行,一会后程序提示执行成功,如图10所示:

26

然后打开IE,在地址栏中输入http://127.0.0.1:55555等一会后看到图11所示的IE窗口:

在想要使用的溢出工具包上单击鼠标左键后进入到基本设置窗口,我们仍然以

27

iis50_webdav_ntdll为例,如图12所示:

单击“select payload”选项进入Payload选择界面,如图13所示:

28

选择合适的Payload后就进入基本信息的设定界面了,如图14所示:

29

实验五 SQL Server注入攻击

实验软件:SQLServer 注入工具v1.0 实验步骤: 一、攻击手段

1.没有正确过滤转义字符

在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞:

statement := \这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的那样了。例如,将用户名变量(即username)设置为:

a' or 't'='t,此时原始语句发生了变化:

SELECT * FROM users WHERE name = 'a' OR 't'='t';

如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。

在一些SQL服务器上,如在SQL Server中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。下面语句中的username的值将会导致删除“users”表,又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。

a';DROP TABLE users; SELECT * FROM data WHERE name LIKE '% 这就将最终的SQL语句变成下面这个样子:

SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE name LIKE '%';

其它的SQL执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,不过却不会阻止攻击者修改查询。

2.Incorrect type handling

如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如:

statement := \

从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_variable设置为:1;DROP TABLE users,它会将“users”表从数据库中删除,SQL语句变成:SELECT * FROM DATA WHERE id = 1;DROP TABLE users;

3.数据库服务器中的漏洞

有时,数据库服务器软件中也存在着漏洞,如MYSQL服务器中mysql_real_escape_string()函数漏洞。这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的SQL注入式攻击。

4.盲目SQL注入式攻击

当一个Web应用程序易于遭受攻击而其结果对攻击者却不见时,就会发生所谓的盲目SQL注入式攻击。有漏洞的网页可能并不会显示数据,而是根据注入到合法语句中的逻辑语句的结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节而精心构造一个新的语句。但是一旦漏洞的位置和目标信息的位置被确立以后,一种称为Absinthe的

30

工具就可以使这种攻击自动化。

5.条件响应

注意,有一种SQL注入迫使数据库在一个普通的应用程序屏幕上计算一个逻辑语句的值:

SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1 这会导致一个标准的面面,而语句

SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2在页面易于受到SQL注入式攻击时,它有可能给出一个不同的结果。如此这般的一次注入将会证明盲目的SQL注入是可能的,它会使攻击者根据另外一个表中的某字段内容设计可以评判真伪的语句。

6.条件性差错

如果WHERE语句为真,这种类型的盲目SQL注入会迫使数据库评判一个引起错误的语句,从而导致一个SQL错误。例如:

SELECT 1/0 FROM users WHERE username='Ralph'。显然,如果用户Ralph存在的话,被零除将导致错误。

7.时间延误

时间延误是一种盲目的SQL注入,根据所注入的逻辑,它可以导致SQL引擎执行一个长队列或者是一个时间延误语句。攻击者可以衡量页面加载的时间,从而决定所注入的语句是否为真。

以上仅是对SQL攻击的粗略分类。但从技术上讲,如今的SQL注入攻击者们在如何找出有漏洞的网站方面更加聪明,也更加全面了。出现了一些新型的SQL攻击手段。黑客们可以使用各种工具来加速漏洞的利用过程。我们不妨看看the Asprox Trojan这种木马,它主要通过一个发布邮件的僵尸网络来传播,其整个工作过程可以这样描述:首先,通过受到控制的主机发送的垃圾邮件将此木马安装到电脑上,然后,受到此木马感染的电脑会下载一段二进制代码,在其启动时,它会使用搜索引擎搜索用微软的ASP技术建立表单的、有漏洞的网站。搜索的结果就成为SQL注入攻击的靶子清单。接着,这个木马会向这些站点发动SQL注入式攻击,使有些网站受到控制、破坏。访问这些受到控制和破坏的网站的用户将会受到欺骗,从另外一个站点下载一段恶意的JavaScript代码。最后,这段代码将用户指引到第三个站点,这里有更多的恶意软件,如窃取口令的木马。

以前,我们经常警告或建议Web应用程序的程序员们对其代码进行测试并打补丁,虽然SQL注入漏洞被发现和利用的机率并不太高。但近来攻击者们越来越多地发现并恶意地利用这些漏洞。因此,在部署其软件之前,开发人员应当更加主动地测试其代码,并在新的漏洞出现后立即对代码打补丁。

二、防御和检查SQL注入的手段 1.使用参数化的过滤性语句

要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。参数化的语句使用参数而不是将用户输入嵌入到语句中。在多数情况中,SQL语句就得以修正。然后,用户输入就被限于一个参数。下面是一个使用Java和JDBC API例子:

PreparedStatement prep = conn.prepareStatement(\PASSWORD=?\prep.setString(1, pwd);

总体上讲,有两种方法可以保证应用程序不易受到SQL注入的攻击,一是使用代码复查,二是强迫使用参数化语句的。强迫使用参数化的语句意味着嵌入用户输入的SQL语句

31

在运行时将被拒绝。不过,目前支持这种特性的并不多。如H2 数据库引擎就支持。

2.还要避免使用解释程序,因为这正是黑客们借以执行非法命令的手段。

3.防范SQL注入,还要避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。

4.使用专业的漏洞扫描工具。但防御SQL注入攻击也是不够的。攻击者们目前正在自动搜索攻击目标并实施攻击。其技术甚至可以轻易地被应用于其它的Web架构中的漏洞。企业应当投资于一些专业的漏洞扫描工具,如大名鼎鼎的Acunetix的Web漏洞扫描程序等。一个完善的漏洞扫描程序不同于网络扫描程序,它专门查找网站上的SQL注入式漏洞。最新的漏洞扫描程序可以查找最新发现的漏洞。

5.最后一点,企业要在Web应用程序开发过程的所有阶段实施代码的安全检查。首先,要在部署Web应用之前实施安全测试,这种措施的意义比以前更大、更深远。企业还应当在部署之后用漏洞扫描工具和站点监视工具对网站进行测试。

32

实验五 电子邮件轰炸

电子邮件轰炸的表现形式是在很短时间内收到大量无用的电子邮件。实质是一种针对服务端口的攻击方式,它的原理是连接到邮件服务器有SMTP发送几行信息加上一堆文字,就形成了邮件。 1.telnet收邮件

键入命令:telnet pop.163.com 110 User 用户名

pass 123456(密码) stat

list(列出邮件)可以在list后跟参数

retr 9(9为这条命令的参数即要查看的邮件的编号,这条命令用于查看邮件信息) 2.telnet 发邮件

telnet smtp.126.com 25

Helo 服务器 (localhost) Auth login

用户名 (Base64编码) 密码 (Base64编码)

3. 根据上述原理,利用你所熟悉的计算机语言编写一个收发电子邮件的程序。 附:Base64编码

Option Explicit

Private Const BASE64CHR As String = \rstuvwxyz0123456789+/=\

Private psBase64Chr(0 To 63) As String '从一个经过Base64的字符串中解码到源字符串

Public Function DecodeBase64String(str2Decode As String) As String

DecodeBase64String = StrConv(DecodeBase64Byte(str2Decode), vbUnicode) End Function

'从一个经过Base64的字符串中解码到源字节数组

Public Function DecodeBase64Byte(str2Decode As String) As Byte() Dim lPtr As Long Dim iValue As Integer Dim iLen As Integer Dim iCtr As Integer Dim Bits(1 To 4) As Byte Dim strDecode As String Dim str As String Dim Output() As Byte

Dim iIndex As Long

Dim lFrom As Long

33

Dim lTo As Long InitBase '//除去回车

str = Replace(str2Decode, vbCrLf, \ '//每4个字符一组(4个字符表示3个字) For lPtr = 1 To Len(str) Step 4 iLen = 4 For iCtr = 0 To 3

'//查找字符在BASE64字符串中的位置

iValue = InStr(1, BASE64CHR, Mid$(str, lPtr + iCtr, 1), vbBinaryCompare) Select Case iValue 'A~Za~z0~9+/ Case 1 To 64:

Bits(iCtr + 1) = iValue - 1 Case 65 '= iLen = iCtr Exit For '//没有发现 Case 0: Exit Function End Select Next

'//转换4个6比特数成为3个8比特数

Bits(1) = Bits(1) * &H4 + (Bits(2) And &H30) \\ &H10

Bits(2) = (Bits(2) And &HF) * &H10 + (Bits(3) And &H3C) \\ &H4 Bits(3) = (Bits(3) And &H3) * &H40 + Bits(4) '//计算数组的起始位置 lFrom = lTo

lTo = lTo + (iLen - 1) - 1 '//重新定义输出数组

ReDim Preserve Output(0 To lTo) For iIndex = lFrom To lTo

Output(iIndex) = Bits(iIndex - lFrom + 1) Next

lTo = lTo + 1 Next

DecodeBase64Byte = Output End Function

'将一个Base64字符串解码,并写入二进制文件

Public Sub DecodeBase64StringToFile(strBase64 As String, strFilePath As String) Dim fso As New Scripting.FileSystemObject, _ i As Long

If fso.FileExists(strFilePath) Then fso.DeleteFile strFilePath, True End If i = FreeFile

34

Open strFilePath For Binary Access Write As i Put i, , DecodeBase64Byte(strBase64) Close i

Set fso = Nothing End Sub

'将一个Base64编码文件解码,并写入二进制文件

Public Sub DecodeBase64FileToFile(strBase64FilePath As String, strFilePath As String) Dim fso As New Scripting.FileSystemObject Dim ts As TextStream

If Not fso.FileExists(strBase64FilePath) Then Exit Sub Set ts = fso.OpenTextFile(strBase64FilePath) DecodeBase64StringToFile ts.ReadAll, strFilePath End Sub

'将一个字节数组进行Base64编码,并返回字符串

Public Function EncodeBase64Byte(sValue() As Byte) As String Dim lCtr As Long Dim lPtr As Long Dim lLen As Long Dim sEncoded As String Dim Bits8(1 To 3) As Byte Dim Bits6(1 To 4) As Byte Dim i As Integer InitBase

For lCtr = 1 To UBound(sValue) + 1 Step 3 For i = 1 To 3

If lCtr + i - 2 <= UBound(sValue) Then Bits8(i) = sValue(lCtr + i - 2) lLen = 3 Else Bits8(i) = 0 lLen = lLen - 1 End If Next

'//转换字符串为数组,然后转换为4个6位(0-63) Bits6(1) = (Bits8(1) And &HFC) \\ 4

Bits6(2) = (Bits8(1) And &H3) * &H10 + (Bits8(2) And &HF0) \\ &H10 Bits6(3) = (Bits8(2) And &HF) * 4 + (Bits8(3) And &HC0) \\ &H40 Bits6(4) = Bits8(3) And &H3F '//添加4个新字符 For lPtr = 1 To lLen + 1

sEncoded = sEncoded & psBase64Chr(Bits6(lPtr)) Next Next

35

'//不足4位,以=填充 Select Case lLen + 1

Case 2: sEncoded = sEncoded & \ Case 3: sEncoded = sEncoded & \ Case 4: End Select

EncodeBase64Byte = sEncoded End Function

'对字符串进行Base64编码并返回字符串

Public Function EncodeBase64String(str2Encode As String) As String Dim sValue() As Byte

sValue = StrConv(str2Encode, vbFromUnicode) EncodeBase64String = EncodeBase64Byte(sValue) End Function

'对文件进行Base64编码并返回编码后的Base64字符串 Public Function EncodFileToBase64String(strFileSource As String) Dim lpdata() As Byte, _ i As Long, _ n As Long, _

fso As New Scripting.FileSystemObject

If Not fso.FileExists(strFileSource) Then Exit Function i = FreeFile

Open strFileSource For Binary Access Read Lock Write As i n = LOF(i) - 1 ReDim lpdata(0 To n) Get i, , lpdata Close i

EncodFileToBase64String = EncodeBase64Byte(lpdata) End Function

'对文件进行Base64编码,并将编码后的内容直接写入一个文本文件中

Public Sub EncodFileToBase64File(strFileSource As String, strFileBase64Desti As String) Dim fso As New FileSystemObject, _ ts As TextStream

Set ts = fso.CreateTextFile(strFileBase64Desti, True) ts.Write (EncodFileToBase64String(strFileSource)) ts.Close Set ts = Nothing Set fso = Nothing End Sub

Private Sub InitBase() Dim iPtr As Integer

36

'初始化 BASE64数组 For iPtr = 0 To 63

psBase64Chr(iPtr) = Mid$(BASE64CHR, iPtr + 1, 1) Next End Sub

37

实验六 防火墙

一.实验目的 掌握防火墙的使用

二.实验内容: 防火墙以及个人防火墙的设置和使用. 三.实验要求: 掌握防火墙的基本原理和作用. 四.实验学时: 2学时 五.实验步骤:

网络的主要功能是向其他通信实体提供信息传输服务。网络安全技术的主要目的是为传输服务实施的全过程提供安全保障。在网络安全技术中,防火墙技术是一种经常被采用的对报文的访问控制技术。实施防火墙技术的目的是为了保护内部网络免遭非法数据包的侵害。为了对进入网络的数据进行访问控制,防火墙需要对每个进入的数据包按照预先设定

的规则进行检查。目前的防火墙也有检查由内到外的数据包的功能。我们在系统视图下,使用如下命令启用防火墙功能:

[Quidway]firewall enable

并在接口视图下利用如下命令将规则应用到该接口的某个方向上: [Quidway-Ethernet0]firewall packet-filter acl-number[inbound |outbound] 可以在系统视图下使用如下命令改变缺省行为: [Quidway]firewall default deny | permit 访问控制列表ACL

路由器的防火墙配置包括两个内容,一是定义对特定数据流的访问控制规则,即定义访问控制列表ACL;二是定义将特定的规则应用到具体的接口上,从而过滤特定方向上的数据流。常用的访问控制列表可以分为两种:标准访问控制列表和扩展访问控制列表。标准访问控制列表仅仅根据IP 报文的源地址域区分不同的数据流,扩展访问控制列表则可以根据IP 报文中更多的域(如目的IP 地址,22

38

上层协议信息等)来区分不同的数据流。所有访问控制列表都有一个编号,标准访问控制列表和扩展访问控制列表按照这个编号区分:标准访问控制列表编号范围为1~99,扩展访问控制列表为100~199。

定义标准访问控制列表的命令格式为:

[Quidway] acl acl-number[match-order config | auto]

[Quidway-acl-10] rule{normal|special}{permit|deny}[source source-addr source-wildcard | any]

以下是一个标准访问控制列表的例子: [Quidway]acl 20

[Quidway-acl-20]rule normal permit source 10.0.0.0 0.0.0.255 [Quidway-acl-20]rule normal deny source any

这个访问控制列表20 包含两条规则,共同表示除了源IP 地址在网络 10.0.0.0/24 内的允许通过以外,其他源IP 地址的数据包都禁止通过。 定义扩展访问控制列表的规则

[Quidway] acl acl-number[match-order config | auto]

[Quidway-acl-10] rule{normal|special}{permit | deny}pro-number [source source-addr source-wildcard | any][source-port operator

port1[port2]][destination dest-addr dest-wildcard | any][destination-port operator port1[port2]][icmp-type icmp-type icmp-code][logging] 以下是一个扩展访问控制列表的例子: [Quidway]acl 120

[Quidway-acl-120]rule normal permit ip source 10.0.0.1 0.0.0.0 destination 202.0.0.1 0.0.0.0

[Quidway-acl-120]rule normal deny ip source any destination any

这条访问控制列表120 规定了除主机10.0.0.1 到主机202.0.0.1 的数据 流可以通过外,其他一律禁止。 [Quidway]acl 121

[Quidway-acl-121]rule permit tcp source any destination 10.0.0.1 0.0.0.0 destination-port eaual ftp logging

[Quidway-acl-121]rule permit tcp source any destination 10.0.0.2 0.0.0.0 destination-port eaual telnet logging

[Quidway-acl-121]rule deny ip source any destination any

这种规则实现的需求是:仅允许目的为FTP 服务器10.0.0.1 的FTP 请求报文输入和目的为TELNET 服务器10.0.0.2 的TELNET 报文输入,禁止其他一切输入报文。

二. 实验内容:防火墙的配置

三. 实验目的:学习配置访问控制列表设计防火墙 四. 实验环境:实验环境:

39

本文来源:https://www.bwwdw.com/article/pwno.html

Top