网络安全考试Word下载.docx
《网络安全考试Word下载.docx》由会员分享,可在线阅读,更多相关《网络安全考试Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
桥接模式:
最简单的联网方式,直接将虚拟网卡桥接(bridging)到一个物理网卡上,与linux下一个网卡,绑定两个不同地址类似。
实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力。
桥接模式下,虚拟机内部的网卡直接连到了物理网卡所在的网段上,虚拟机(GuestOS)和HostOS处于同一网段上。
虚拟机(GuestOS)相当于网络中的一台“真实”主机,所以网络中的其他主机可以通过网络直接访问桥接的虚拟机。
虚拟机也可以直接访问网络中其他主机和主操作系统(HostOS)。
hostonly模式:
用的是vmnet1,它包括两个组件,位于HostOS上的主机虚拟网卡(HostVirtualAdapter)和虚拟交换机(VirtualSwitch)。
HostOS上的物理网卡和虚拟网卡HostVirtualAdapter之间不能通信。
而虚拟机上的网卡和HostVirtualAdapter都连接到虚拟交换机上,它们组成了一个局域网,这样虚拟机就可以通过HostVirtualAdapter访问到HostOS.
NAT模式:
实现HostOS与GuestOS的双向访问。
但网络内其他机器不能直接访问GuestOS,GuestOS可通过HostOS用NAT协议访问网络内其他机器。
NAT方式下hostOS内部出现了一个虚拟的网卡vmnet8(默认情况下),vmnet8就相当于连接到内网的网卡,而虚拟机本身则相当于运行在内网上的机器,虚拟机内的网卡(eth0)则独立于vmnet8。
NAT方式下,vmware自带的dhcp服务会默认地加载到vmnet8网卡上,虚拟机就可以使用dhcp服务获得一个随机的内部地址。
vmware自带了nat服务,提供了从vmnet8(内网)到外网的地址转换,所以这种情况是一个实实在在的nat服务器在运行,只不过是供虚拟机使用的。
网络嗅探技术
嗅探器是能够捕获网络报文的设备(软件或硬件),嗅探器这个术语源于通用网络公司(NetworkGeneral)开发的捕获网络数据包软件Sniffer。
以后的网络协议分析软件,嗅探软件,抓包软件都被称为Sniffer。
1sniffer的网卡工作模式
sniffer工作在共享式以太网,也就是说使用Hub来组成局域网,利用以太网数据传输采用广播方式的特点进行数据包的监听。
本机的网卡需要设置成混杂模式。
2BPF的组成结构(组件)以及每个组件的作用。
BPF:
数据包捕获技术
BPF是一个核心态的组件,也是一个过滤器
NetworkTap接收所有的数据包
KernelBuffer,内核保存过滤器送过来的数据包
UserBuffer,用户态上的数据包缓冲区
Filter:
用户定义的数据包过滤条件
3基于BPF和Libpcap的sniffer流程,不需要记住具体的函数名称,但需要知道每个步骤实现的功能。
1、正常情况下,链路层驱动程序将数据包发送给系统协议栈
2、如果BPF正在此接口监听,驱动程序首先调用BPF,BPF将数据包发送给过滤器,过滤器对数据包进行过滤,数据被提交给与过滤器关联的上层应用程序
3、链路层驱动将重新取得控制权,数据包被提交给上层的协议栈处理。
4知道BPF、libpcap、winpcap、tcpdump(课件中没有)、ethereal技术或软件的作用。
Libpcap:
Libpcap库封装了BPF接口的数据包过滤过程。
提供了系统独立的用户级网络数据包捕获接口并充分考虑到应用程序的可移植性。
Libpcap可以在绝大多数类unix平台下工作。
Winpcap:
在windows平台下,一个与libpcap很类似的函数包winpcap提供捕获功能。
Ethereal:
最优秀的跨平台开源嗅探工具,有图形化界面和命令行两种版本。
图形化的报文过滤器:
通过displayfilter对话框来创建报文过滤器,用户可以通过指定不同协议的不同字段值来生成报文过滤规则,并且可以使用布尔表达式AND和OR来组合这些过滤规则。
TCP会话流重组:
ethereal通过followTCPStream来重组同一TCP会话的所有数据包。
ScanningTechniques
网络扫描的目的是获取目标网络的拓扑结构,活动主机IP地址,主要服务器,路由器和防火墙。
被扫描主机的响应(TCP和UDP扫描)及其含义。
TCP扫描:
许多网络防火墙都阻塞ICMP消息,因此,发送一个TCPack包到80端口,如果获得了RST返回,机器是活跃的。
TCPconnect扫描:
最基本的扫描方式,实际上是利用linux提供的系统调用函数connect与目标主机建立TCP连接,完成三次握手。
UDP扫描:
这种扫描攻击用来确定目标主机上哪个UDP端口开放。
通常是通过发送零字节的UDP数据包到目标机器的各个UDP端口,如果我们收到一个ICMP端口无法到达的回应,那么该端口是关闭的,否则我们可以认为它是敞开大门的。
UDP扫描的意义:
确定目标主机是否存在那些基于UDP协议的服务如snmp,tftp,NFS,DNS。
ICMP数据包的发送速度有限制。
而UDP扫描速度更快。
TCP扫描的响应:
目标主机响应SYN/ACK,则表示这个端口开放。
目标主机发送RST,则表示这个端口没有开放。
目标主机没有响应,则可能是有防火墙或主机未运行。
UDP扫描的响应:
目标主机响应端口不可达的ICMP报文则表示这个端口关闭。
目标主机没有响应,并且目标主机响应了ping,则这个端口被打开,如果防火墙阻塞了ICMP消息,则这个端口可能是关闭的。
DoSTechniques
拒绝服务攻击(DoS):
就是利用系统的漏洞使计算机系统无法提供正常的服务。
DoS攻击除了利用漏洞进行攻击之外,也可以利用大量合法的服务请求来占用过多的服务资源,使服务过载,从而无法响应其他用户的合法请求。
这些服务资源包括网络带宽、文件空间、CPU处理能力、内存空间、连接的进程数。
目的:
使目标主机无法提供正常的服务或是使目标主机崩溃。
而其他类型攻击的目的都是为了获取其控制权。
掌握synflooding攻击和smurf攻击过程及所利用的漏洞。
SYNFLOOD攻击原理
利用协议设计缺陷:
操作系统的TCP/IP协议栈的请求建立TCP连接的队列长度是有限的。
当队列排满时,后面的连接请求就被拒绝。
在TCP连接的三次握手中,服务器在发出SYN+ACK应答报文后如果没有收到客户端的ACK报文的(三次握手无法完成)。
这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYNTimeout,一般来说这个时间大约为30秒-2分钟)
SYNFLOOD攻击过程
Step1:
攻击程序向被攻击服务器发送大量带有虚假源地址(未被使用的)的TCPSYN包,请求建立TCP连接。
Step2:
当服务器收到这些数据包时,向虚假源地址发送一个SYN/ACK的响应数据包,由于源地址是不存在的地址,因此,目标主机发送的SYN/ACK包不会得到确认,目标主机一直等待这个连接直至超时,当这种带有虚假地址的连接请求数目超过了系统规定的最大连接请求数目时,目标主机就无法为其他正常用户提供服务。
Synflood防御技术
缩短SYNTimeout时间
SYN-cookie技术
地址状态监控的解决方法
Smurf攻击原理:
Smurf攻击属于放大攻击。
放大攻击的基本原理就是发送一个数据包产生多个响应。
smurf攻击过程:
黑客向一个局域网(LAN)的广播地址发送一个ping数据包,如果路由器配置允许广播数据包,则路由器将这个广播消息发送给LAN的每一台主机,然后每台主机都发送一个ping响应数据包。
Smurf攻击需要指定被攻击主机为源地址。
Smurf攻击的条件
smurf攻击中包括三方:
攻击者、中间网络(也属于受害对象)、目标主机。
smurf攻击中攻击者发送一个源地址为目标主机的ICMP回显请求给中间网络的广播地址。
smurf攻击的关键是找到允许广播数据包的中间网络。
TrojanHorse&
Backdoor
木马的主要功能和实现木马的关键技术
主要功能
收集密码或密码文件
收集系统关键信息
远程文件操作
远程进程控制
修改注册表
其它的特殊功能
关键技术
传播方式
木马的传播:
手工,Email,利用漏洞,文件捆绑,文件伪装,web网页
启动方式
自启动方式:
修改配置、服务、驱动,替换或感染系统文件
修改配置:
注册表,修改默认Shell如explorer.exe,添加用户初始化程序、动态链接库,启动组。
Msconfig查询。
文件关联启动木马。
系统服务和驱动:
安装自己的服务、驱动(CreateService函数),修改原有(ImagePath、ServiceDll),替换、感染原有服务、驱动。
替换感染系统文件:
关闭sfc,替换系统文件,在导入表中添加后门Dll项。
隐藏方式:
木马程序的文件,进程,启动隐藏,包括程序启动隐藏,服务端进程隐藏,网络连接隐藏。
常见隐藏:
文件属性,相似文件名,隐藏目录,重绑定端口,dll加载,无进程,添加版权签名。
内核态的rootkit。
内核态,ring0:
特权级CPU指令,OS核心层,完全控制权。
运行方式:
作为进程,作为动态链接库(替换,动态嵌入hook,挂接api,远程线程等)。
获取活动进程信息:
PSAPI(ProcessStatus),系统钩子,金山词霸;
PDH;
ToolHelpAPI。
通讯方式:
与远程的木马客户控制端的通信,发送信息执行命令等.
常规方式
绑定端口,后门作为服务端运行,等待连接。
反向连接,后门作为客户端运行,主动连接外网的client。
重绑定合法端口,绕过防火墙。
传输的数据加密
传输的数据通过HTTP,SOAP等协议封装
利用FTP协议打开通路
端口复用
截获所有网络封包,检查特征字符
复制句柄(套接字)或对象(Object)
关闭原始句柄或对象,后门使用新的句柄或对象进行通讯
很容易就绕过防火墙,但是要注意传输的协议问题,如80对应HTTP
http-tunnel技术:
在HTTP连接上建立一个虚拟的双向数据传输通道。
自己的协议实现
实现自己的协议(可靠传输)或者TCP协议
利用RawSocket,IpFilterDriver,WinPcap等发送或接收IP报文
做到NDISMiniport一层完全绕过软件防火墙
自己实现的协议,Windows中看不到任何信息
nc的主要用法:
服务器监听,telnet模式
NetCat大小仅60k左右,但功能强大,故有“网络瑞士军刀”的美誉。
可用来管理系统和侦查网络的错误,也可以作为一个后门程序。
原理:
从网络的一端读入数据,然后输出到网络的另一端。
它可以使用tcp和udp协议。
Nc的主要功能:
连接远程端口(conneting)、监听本地端口(listening)、扫描远程主机(scaning)、远程主机绑定shell(binding)、文件传输(transfering)
简单服务器(监听模式)
nc-l-p//这里-l参数表明nc处于监听模式,-p指定port
例子:
nc-l-p1234[假设这台主机ip为192.168.0.1]
从客户端输入,nc192.168.0.11234,然后你从任一端输入的讯息就会显示在另一端了
telnet服务器模式(绑定命令)
Nc的-e选项,用来指定在连接后执行的程序
在windows平台上可以指定-ecmd.exe,linux则指定-ebash,或者是你自己编写的程序,通常是做为后门。
例子:
server:
nc-l-p1234-ecmd.exe
client:
nc192.168.0.11234就可以远程登陆server了
rootkit的主要功能和组件。
Rootkit一词最早出现在Unix系统上。
黑客为了取得系统管理员级的root权限,或者为了清除被系统记录的入侵痕迹,会重新编译一些软件程序(术语称为kit),例如ps、netstat、w、passwd等等,这些软件即称作Rootkit。
Rootkit也可视为一项技术。
组件
针对Unix和Linux的rootkit最多,rootkit是由几个独立的程序组成的,一个典型rootkit包括:
以太网嗅探器程序(networksniffer),用于获得网络上传输的用户名和密码等信息。
特洛伊木马程序(trojan),例如:
inetd或者login,为攻击者提供后门。
隐藏攻击者的目录和进程的程序,例如:
ps、netstat、rshd和ls等。
日志清理工具(logcleaner),如:
zap、zap2或者z2,清除wtmp、utmp和lastlog等日志文件。
提供telnet、shell和finger等后门服务。
清理/var/log和/var/adm目录中其它文件的一些脚本。
监视网络流量和击键记录。
SQLInjectionAttack
SQLInjection攻击原理及漏洞的原因
SQL注入攻击(SQLInjection)是发生于应用程序之数据库层的安全漏洞。
简而言之,是在输入的数据字符串之中夹带SQL指令,在设计不良的web程序当中忽略了检查,那么这些夹带进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此招致到破坏。
SQL注入攻击原因
在应用程序中使用字符串联结方式组合SQL指令。
在应用程序链接数据库时使用权限过大的帐户(系统管理员帐户sa)连接MSSQLServer数据库)。
在数据库中开放了不必要但权力过大的功能
太过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
SQL注入攻击原理
SQL支持多个命令的串接,以分号字符“;
”为不同命令的区别。
SQL命令对于传入的字符串参数是用单引号字符所包起来。
但连续2个单引号字符,在SQL数据库中,则视为字符串中的一个单引号字符。
SQL命令中可以夹带注解(连续2个减号字符--后的文字为注解,或“/*”与“*/”所包起来的文字为注解)
Googlehacking
1googlehacking的基本思想和原理,googlehacking的数据库
googlehackig的基本思想:
Googlehacking技术就是充分利用google搜索引擎强大的搜索及缓存网页资源,灵活运用google提供的搜索能力,实现入侵目标的快速扫描和准确定位。
googlehacking实际上可以被看成是一种高级的搜索技巧.黑客利用googe搜索引擎可以快速搜索到公开敏感信息的网站或是存在某种漏洞的网站。
也就是说将google作为漏洞扫描器来使用。
GoogleHackingDatabase(GHDB)
TheGHDBisthemainrepositoryforGooglehackingtipsandtricks
GoogleHacking数据库是主要的GoogleHacking技术与方法的知识库。
CreatedandMaintainedbyJohnnyLong
又JohnnyLong建立并不断维护。
Over900uniquesearchcriteriaforfindinginformation
目前知识库已经包含超过900条特别的用来信息发掘的搜索条件。
缓冲区溢出
1什么是缓冲区
缓冲区(buffer),简单说来是一块连续的计算机内存区域,可以保存相同数据类型的局部变量。
2堆和栈的区别和各自特点
堆栈或栈(stack)是存放函数返回地址、参数、局部变量的内存区域。
堆栈由编译器自动分配和释放。
堆(heap)是程序员自由操作的内存区域,程序运行时动态分配的内存区域,使用时先申请,用完后释放,如何使用完全由程序代码控制。
stack是有大小限制的,heap的大小与系统虚拟内存差不多;
stack的运算比heap快;
stack由编译器来管理,heap由程序员使用new,malloc,delete,free进行操作。
3栈底和栈顶指针含义
堆栈指针(StackPointer,SP/ESP)指向堆栈的栈顶,即堆栈的最后一个地址。
帧指针/局部基指针(FramePointer,BP/EBP)指向堆栈的栈底,这是一个固定的地址。
对局部变量和函数参数引用都使用EBP,因为它们到EBP的距离不会受到PUSH和POP操作的影响,从EBP的位置开始计算,函数参数的偏移量是正值,而局部变量的偏移量是负值。
4堆栈的用途和函数调用实现步骤
堆栈的用途
在函数调用时,需要使用堆栈来保存函数的参数和下一条指令的地址。
在函数调用结束时,根据堆栈中的返回地址继续执行后面的指令。
堆栈也用于给函数中使用的局部变量动态分配空间。
函数调用实现步骤
当程序中发生函数调用时,计算机做如下操作:
(1)首先把参数按从右到左的顺序压入堆栈;
(2)然后保存指令寄存器(IP)中的内容,做为返回地址(RET);
(3)第三个放入堆栈的是基址寄存器(FP);
(4)然后把当前的栈指针(SP)拷贝到FP,做为新的基地址;
(5)最后为本地变量留出一定空间,把SP减去适当的数值。
对局部变量的引用是通过对BP的偏移量来实现的。
通常,函数参数相对于BP的偏移是正的,局部变量是负的。
5缓冲区溢出的原因?
缓冲区溢出就是向固定大小的缓冲区填充超过其长度的数据,导致缓冲区后面的数据被覆盖。
堆栈可执行:
最流行的X86体系中,堆栈可执行。
C/C++语言对程序数组越界检查不够严格。
不安全库函数调用,比如strcpy,strcat,strncpy,strncat
操作系统中不安全系统调用,如Windows中vsprintf,WideCharToMultiByte,wsprintf等
6shellcode的含义,以及经典的缓冲区溢出攻击的结构以及每一部分的含义和作用。
Shellcode是指注入内存中获取shell命令执行环境的一段二进制机器码。
shellcode一般采用C或汇编编写,然后通过汇编程序成为机器码。
缓冲区攻击代码的一般结构:
NOPs+shellcode+NcopiesofaddressX
空指令NOP,猜地址:
在shellcode代码前面放一长串的NOP,返回地址可以指向这一串NOP中任一位置,执行完NOP指令后程序将激活shell进程。
截获栈底指针:
操作系统而言,一个shell下的每一个程序的堆栈段开始地址都是相同的。
可以写一个程序,获得运行时的堆栈起始地址。
execve函数将执行一个程序。
溢出之后,让程序执行我们指定的代码:
我们自己提供的一段代码、系统现有的调用函数。
这段代码(shellcode)不能太长,所以需要精心设计,并且充分利用系统中现有的函数和指令。
防火墙
防火墙是在被保护网络(内联子网Intranet和局域网LAN)与公共网络(如Internet)之间实现访问控制的一组硬件或软件系统。
1防火墙的类型
包过滤型防火墙(packetfiltering)(网络层防火墙)
状态检测型防火墙(StatefulInspection)
应用代理(网关)(applicationgateway)
电路层防火墙
混合型防火墙
2防火墙的两种默认访问控制策略
防火墙两种默认安全策略:
严格:
一切未被允许的就是禁止的。
宽松:
一切未被禁止的就是允许的。
3防火墙的规则动作
防火墙对流出入网络数据包有以下几种动作:
通过(accept):
允许数据包通过防火墙传输。
放弃(deny):
不允许数据包通过防火墙传输,但仅仅丢弃,不做任何响应。
拒绝(reject):
不允许数据包通过防火墙传输,并向源端发送目的主机不可达的ICMP报文。
返回(return):
没有发现匹配的规则,缺省动作。
4包过滤和应用网关的工作原理及优缺点
包过滤防火墙
属于网络层防火墙,它根据预定义的IP层访问控制策略(规则),对进出的数据包的IP地址及端口进行规则匹配,来决定数据包是否允许通过、阻断还是被丢弃。
访问控制策略主要网络数据包的源地址、报文的目标地址、协议类型、报文的源端口和目的端口等。
优点:
速度快,对用户透明。
缺点:
访问控制能力较弱,粒度较粗。
为完成某一项特定任务,包过滤规则逻辑关系可能比较复杂,且规则的逻辑性验证不易实现.
审计功能较弱,安全性较差。
用包过滤控制远程过程调用RPC也是比较困难的,因为RPC服务是通过服务号标识的,分配的服务端口不固定。
应用层(代理)网关
应用层代理也被称为:
应用级网关,堡垒主机,代理服务器等。
应用代理型防火墙(ApplicationProxy)工作在应用层。
通过对每种应用服务编制专门的代理程序,实现监视和控制应用层通信流的作用。
其特点是完全“阻隔”了网络通信流。
与包过滤防火墙相比,应用网关提供更高的安全性但是牺牲了服务透明性。
应用层代理对客户端程序来说是服务器,而对目标服务器来说是一个客户端。
代理服务器对客户请求进行验证,具体包括