PPT内容
这是黑客技术ppt,包括了黑客的类型和动机,黑客攻击的流程,常用黑客技术,小结等内容,欢迎点击下载。
《信息安全工程》之黑客技术
西南交通大学
信息科学与技术学院 李晓航
(xhli_scce@home.swjtu.edu.cn)
1、黑客的类型和动机
从黑客行为上划分,黑客有“善意”与“恶意”两种,即所谓白帽(White Hat)及黑帽(Black Hat)。
白帽利用他们的技能做一些善事,长期致力于改善计算机社会及其资源,为了改善服务质量及产品,他们不断寻找弱点及脆弱性并公布于众。
黑帽则利用他们的技能做一些恶事,主要从事一些破坏活动,从事的是一种犯罪行为。
“黑帽”的动机
1、 好奇心:许多黑帽声称,他们只是对计算机及电话网感到好奇,希望通过探究这些网络更好地了解它们是如何工作的。
2、个人声望:通过破坏具有高价值的目标以提高在黑客社会中的可信度及知名度。
3、智力挑战:为了向自己的智力极限挑战或为了向他人炫耀,证明自己的能力;还有些甚至不过是想做个“游戏高手”或仅仅为了“玩玩”而已。
4、窃取情报:在Internet上监视个人、企业及竞争对手的活动信息及数据文件,以达到窃取情报的目的。
“黑帽”的动机(续)
5、报复:电脑罪犯感到其雇主本该提升自己、增加薪水或以其他方式承认他的工作。电脑犯罪活动成为他反击雇主的方法,也希望借此引起别人的注意。
6、金钱:有相当一部分电脑犯罪是为了赚取金钱。
7、政治目的:任何政治因素都会反映到网络领域,主要表现有:
1)敌对国之间利用网络的破坏活动;
2)个人及组织对政府不满而产生的破坏活动。这类黑帽的动机不是钱,几乎永远都是为政治,一般采用的手法包括更改网页、植入电脑病毒等。
2、黑客攻击的流程
2.1 踩点
“踩点”的主要目的是获取目标的如下信息:
1) 因特网网络域名、网络地址分配、域名服务器、邮件交换主机、网关等关键系统的位置及软硬件信息。
2) 内联网与Internet内容类似,但主要关注内部网络的独立地址空间及名称空间。
3) 远程访问模拟/数字电话号码和VPN访问点。
4) 外联网与合作伙伴及子公司的网络的连接地址、连接类型及访问控制机制。
5) 开放资源未在前4类中列出的信息,例如 Usenet、雇员配置文件等。
踩点采用的主要技术
1、开放信息源搜索
通过一些标准搜索引擎,揭示一些有价值的信息。
2、whois查询
whois是目标Internet域名注册数据库,目前,可用的whois数据库很多。
3、DNS区域传送
DNS区域传送是一种DNS服务器的冗余机制。
局域网主机发现
主机发现
通过测试发现局域网内的活动主机
可以利用ARP协议实现主机发现。
ARP—Address Resolution Protocol
“地址解析”就是主机在发送帧前将目的逻辑地址转换成目的物理地址的过程。
在使用TCP/IP协议的以太网中ARP协议完成将IP地址(逻辑)映射到MAC地址(物理)的过程。
向目标主机发送一个ARP请求,如果目标主机处于活动状态则会返回其MAC地址,这样达到探测的目的。
ARP示意图
利用ARP进行主机发现
关键函数:SendARP函数
SendARP是Microsoft Platform SDK中提供用来获得目标主机的MAC地址的函数,它发送一个ARP请求报文,用来获得与指定IP地址相应的物理地址。
SendArp声明如下:
1)DestIP:目的IP地址,ARP协议将试图获得这个IP地址相对应的物理地址;
2)SrcIP:指定了发送者的IP地址,这个参数是可选的,调用者可以用0填充;
3)pMacAddr:一个指向无符号长整型的指针,如果函数调用成功,这个长整型变量将保存得到的物理地址;
4)phyAddrLen:一个指向无符号长整型的指针,如果函数调用成功,这个长整型变量将保存得到的物理地址的长度。
利用ARP进行主机发现(续)
参考流程
显示局域网所有活动主机的IP地址。
2.2 扫描
通过踩点已获得一定信息(IP地址范围、DNS服务器地址、邮件服务器地址等),下一步需要确定目标网络范围内哪些系统是“活动”的,以及它们提供哪些服务。
扫描的主要目的是使攻击者对攻击的目标系统所提供的各种服务进行评估,以便集中精力在最有希望的途径上发动攻击。
扫描中采用的主要技术有:
Ping扫射(Ping Sweep)、TCP/UDP端口扫描、操作系统检测以及旗标(banner)的获取。
利用TCP全扫描进行端口扫描
TCP全扫描
这种扫描方法直接连接到目标端口并完成一个完整的三次握手过程(SYN,SYN/ACK和ACK)。
Windows操作系统提供了“connect()”函数来完成系统调用,用来与每一个感兴趣的目标计算机的端口进行连接
如果端口处于侦听状态,那么connect()函数就能成功;否则,connect()函数将调用失败。
优点
不需要任何权限,系统中任何用户都有权利使用这个调用。
缺点
如果对每个目标端口以线性的方式使用单独的connect()函数调用,那么将会花费相当长的时间。
容易被发觉,并且很容易被过滤掉。
利用TCP全扫描进行端口扫描(续)
关键函数:connect
尝试与目标端口建立连接,若返回SOCKET_ERROR则表示目标端口关闭,否则目标端口开放。
参数
int mysocket;
struct sockaddr_in serAddr;
connect(mysocket, (sockaddr *)&serAddr, sizeof(sockaddr))
利用TCP全扫描进行端口扫描(续)
参考流程
漏洞扫描
漏洞扫描是一种网络安全扫描技术,它基于局域网或Internet远程检测目标网络或主机安全性
通过漏洞扫描,系统管理员能够发现所维护的Web服务器的各种TCP/IP端口的分配、开放的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞。
漏洞扫描技术采用积极的、非破坏性的办法来检验系统是否含有安全漏洞
网络安全扫描技术与防火墙、安全监控系统互相配合使用,能够为网络提供很高的安全性。
漏洞扫描(续)
漏洞扫描分为利用漏洞库的漏洞扫描和利用模拟攻击的漏洞扫描
利用漏洞库的漏洞扫描包括:CGI漏洞扫描、POP3漏洞扫描、FTP漏洞扫描、SSH漏洞扫描和HTTP漏洞扫描等。
利用模拟攻击的漏洞扫描包括:Unicode遍历目录漏洞探测、FTP弱口令探测、OPENRelay邮件转发漏洞探测等。
典型的工具:X-Scan 和 FTP-Scan 等。
2.3 查点
通过扫描,入侵者掌握了目标系统所使用的操作系统,下一步工作是查点。
查点就是搜索特定系统上用户和用户组名、路由表、SNMP信息、共享资源、服务程序及旗标等信息。
查点所采用的技术依操作系统而定:
在Windows系统上主要采用的技术有“查点NetBIOS”线路、空会话(Null Session)、SNMP代理、活动目录(Active Directory)等;
在UNIX系统上采用的技术有RPC查点、NIS查点、NFS查点及SNMP查点等。
2.4 获取访问权
在搜集到目标系统的足够信息后,下一步要完成的工作是得到目标系统的访问权进而完成对目标系统的入侵。
对于Windows系统采用的主要技术有:
NetBIOS SMB密码猜测(包括手工及字典猜测)、窃听LM及NTLM认证散列、攻击IIS Web服务器及远程缓冲区溢出。
UNIX系统采用的主要技术有:
蛮力密码攻击;密码窃听;通过向某个活动的服务发送精心构造的数据,以产生攻击者所希望的结果的数据驱动式攻击(例如缓冲区溢出、输入验证、字典攻击等);RPC攻击;NFS攻击以及针对X-Windows系统的攻击等。
2.5 权限提升
一旦攻击者通过前面4步获得了系统上任意普通用户的访问权限后,攻击者就会试图将普通用户权限提升至超级用户权限,以便完成对系统的完全控制。
这种从一个较低权限开始,通过各种攻击手段得到较高权限的过程称为权限提升。
权限提升所采取的技术有:
通过得到的密码文件,利用现有工具软件,破解系统上其他用户名及口令;利用不同操作系统及服务的漏洞(例如Windows 2000 NetDDE漏洞),利用管理员不正确的系统配置等。
2.6 窃取
一旦攻击者得到了系统的完全控制权,接下来将完成的工作是窃取,即进行一些敏感数据的篡改、添加、删除及复制(例如Windows系统的注册表、UNIX系统的rhost文件等)。
通过对敏感数据的分析,为进一步攻击应用系统做准备。
2.7 掩盖跟踪
一旦黑客入侵系统,会留下痕迹。
因此,黑客需要做的首要工作就是清除所有入侵痕迹,避免自己被检测出来,以便能够随时返回被入侵系统继续干坏事或作为入侵其他系统的中继跳板。
掩盖踪迹的主要工作有:
禁止系统审计、清空事件日志、隐藏作案工具及使用人们称为rootkit的工具组替换那些常用的操作系统命令。
2.8 创建后门
黑客最后常在受害系统上创建一些后门及陷阱,以便以后重新攻击系统,并能以特权用户的身份控制整个系统。
创建后门的主要方法有:
创建具有特权用户权限的虚假用户账号、安装批处理、安装远程控制工具、使用木马程序替换系统程序、安装监控机制及感染启动文件等。
2.9 拒绝服务攻击
如果黑客未能成功地完成第四步的获取访问权,那么他们可能采取的手段便是进行拒绝服务攻击:
即使用精心准备好的漏洞代码攻击系统使目标服务器资源耗尽或资源过载,以致于没有能力再向外提供服务。
攻击所采用的技术主要是利用协议漏洞及不同系统实现的漏洞。
3. 常用黑客技术
目前,在实施网络攻击中,黑客所使用的入侵技术主要包括以下几种:
协议漏洞渗透;
密码分析还原;
应用漏洞分析与渗透;
社会工程学;
拒绝服务攻击;
病毒或后门攻击。
可见,黑客的技术范围很广,涉及网络协议解析、源码安全性分析、密码强度分析和社会工程学等多个不同的学科。
3.1 协议漏洞渗透
网络中包含着种类繁多但层次清晰的网络协议规范,这些协议规范是网络运行的基本准则。
但对于部分底层网络协议来说,对于安全的考虑有着先天的不足,部分网络协议具有严重的安全漏洞。
通过对网络标准协议的分析,黑客可以从中总结出针对协议的攻击过程,利用协议的漏洞实现对目标网络的攻击。
这些技术主要包括:
1、会话侦听(Sniffer)与劫持技术
2、地址欺骗技术
会话侦听—网络数据包的截获
网络数据包的截获是黑客攻击的主要手段之一,也是基于网络的入侵检测(N-IDS)技术的工作基石。
根据网络类型的不同,网络数据截获可以通过两种方法实现:
一种是利用以太网络的广播特性,
另一种是通过设置路由器的监听端口或者是镜像端口来实现。
会话侦听—以太网环境下的数据截获
以太网数据传输是通过广播传输媒体实现
但是在系统正常工作时,应用程序只能接收到以本主机为目标主机的数据包,其他数据包将被网卡丢弃不作处理。
要截获到流经网卡的不属于自己主机的数据,必须绕过系统正常工作的处理机制,直接访问网络底层:
1)首先将网卡工作模式置于混杂(promiscuous)模式,使之可以接收目标MAC地址不是本机MAC地址的数据包。
2)然后直接访问数据链路层,截获相关数据,由应用程序而非上层协议如IP和TCP协议对数据进行过滤处理,这样就可以截获到流经网卡的所有数据。
一个Linux环境下的数据包截获示例
1 #include 〈stdio.h〉
2 #include 〈sys/socket.h〉
3 #include 〈socketbits.h〉
4 #include 〈sys/ioctl.h〉
5 #include 〈net/if.h〉
6 #include 〈netinet/in.h〉
7 #include 〈arpa/inet.h〉
8 #include 〈unistd.h〉
9 #include ″headers.h″
/*Prototype area*/
10 int Open_Raw_Socket (void);
11 int Set_Promisc (char *interface, int sock);
12 int main () {
13 int sock, bytes_recieved, fromlen;
14 char buffer[65535];
15 struct sockaddr_in from;
16 struct ip *ip;
17 struct tcp *tcp;
18 sock = Open_Raw_Socket (); --打开原始套接字
19 Set_Promisc (INTERFACE, sock); --设置网卡为“杂凑”模式
20 while (1) {
fromlen = sizeof(from);
bytes_recieved = recvfrom (sock, buffer, sizeof(buffer),
0, (struct sockaddr *)&from, &fromlen);
printf (″\\nBytes received∷: %5d\\n″,bytes_recieved);
printf (″Source address∷: %s\\n″,inet_ntoa(from.sin_addr));
ip = (struct ip *)buffer;
if (ip->ip_protocol == 6) {
printf (″IP header length∷: %d\\n″,ip->ip_length);
printf (″Protocol∷: %d\\n″,ip->ip_protocol);
tcp = (struct tcp *)(buffer + (4*ip->ip_length));
printf (″Source port∷: %d\\n″,ntohs (tcp->tcp_source_port));
printf (″Dest port ∷: %d\\n″,ntohs (tcp->tcp_dest_port));
} }
}
int Open_Raw_Socket () { --打开原始套接字函数
int sock;
if ((sock = socket (AF_INET, SOCK_RAW, IPPROTO_TCP)) < 0) {
perror (″The raw socket was not created″);
exit (0); };
return (sock); }
--设置杂凑模式
int Set_Promisc (char *interface, int sock) {
struct ifreq ifr;
strncpy (ifr.ifr_name, interface,strnlen(interface)+1);
if ((ioctl (sock, SIOCGIFFLAGS, &ifr) ==-1)) {
perror (″Could not retrive flags for the interface″);
exit (0);
}
printf (″The interface is∷: %s\\n″, interface);
perror (″Retrieved flags from interface successfully″);
ifr.ifr_flags |= IFF_PROMISC;
if (ioctl (sock, SIOCSIFFLAGS, &ifr) ==-1) {
perror (″Could not set the PROMISC flag:″);
exit (0);
}
printf (″Setting interface %s: to promisc″, interface);
return (0);
}
一个Linux环境下的数据包截获示例
上述程序的工作主流程如下:
1) 在18行调用Open_Raw_Socket(),获得可直接访问IP层数据包的SOCK_RAW类型套接字设备句柄。
2) 在19行调用Set_Promisc(),将指定的网络接口设置为混杂模式。
3) 进入主循环,打印所截获的网络数据包的相关信息,例如IP地址和TCP端口等。
不同的操作系统提供的接口功能并不相同,因此直接采用套接字设备的编程代码在不同系统平台上不能通用。
会话侦听— Libpcap 库
解决这一问题的办法之一是使用由美国洛仑兹伯克利国家实验室所编写的专用于数据包截获功能的API函数库—Libpcap。
Libpcap库函数对上层程序屏蔽了底层系统的不同数据包截获方法,提供了统一的编程接口,使得采用该编程接口的数据包截获模块可以方便地在不同平台上进行移植。
Libpcap 库(续)
LibCap所提供的若干函数接口:
1) pcap_open_live(): 用来获得一个数据截获描述符,该描述符用于查看在网络上传输的数据包。
2)pcap_stats(): 用来返回相关的状态参数。
3)pcap_read(): 用于读取底层数据包过滤机制缓冲区中的数据包,并对每个数据包用参数所设定的回调(Callback)函数进行处理。
4)pcap_setfilter(): 用于设定一个过滤器程序。
5)pcap_close(): 关闭相关的文件并释放对应资源。
Libpcap 库(续)
Libpcap库函数支持数据包过滤机制,即著名的伯克利数据包过滤器(BPF),它是一种用于UNIX的内核数据包过滤体制。
当一个数据包到达网络接口设备时,链路层设备驱动器通常把它传送给系统协议堆栈进行处理,但是,当BPF也在该网络接口上监听时,驱动器将会首先调用BPF。
Libpcap结构
会话侦听— Winpcap库
WIN32平台不提供直接的网络底层访问接口,必须通过虚拟设备驱动程序(VxD)实现网络数据包的截获功能,对应于Libpcap库的Windows版本是Winpcap库。
Winpcap架构包括3个模块:
1)NPF: 是一个虚拟设备驱动程序文件,它的功能是过滤数据包,并把数据包传递给用户态模块,这个过程中包括了一些操作系统所特有的代码。
2)Packet.dll: 该动态链接库为WIN 32平台提供了一个公共的接口。
3)Wipcap.dll: 该动态链接库提供了一个不依赖于操作系统类型的高层接口库,它提供了更加高层、抽象的函数。
Winpcap架构
Winpcap主要函数
1、pcap_findalldevs函数
2、pcap_freealldevs函数
3、pcap_open_live函数
4、pcap_next_ex函数
5、pcap_loop函数
6、pcap_setfilter函数
7、pcap_compile函数
8、pcap_close函数
Winpcap包捕获一般流程参考代码:实验平台中的 PcapApp.cpp
会话侦听—交换网络环境下的数据截获
在实际的网络环境中,许多网络采取了交换运行环境(例如交换机、路由器等),此时传输媒体不再具备广播特性,所以不能够单凭设置网络接口的混杂模式来截获所有的数据包。
常用的方法是利用交换机或者路由器上设置的监听端口或者镜像端口。
实际工作中,采用镜像端口的方法常碰到两个问题:
1)随着交换带宽的不断增长,并非所有的网络流量都会反映在镜像端口上。
2)并非所有的交换设备都提供类似的镜像端口。
3.2 密码分析还原
为了保证数据的安全性,现在通常的方法是对数据进行加密,防止可疑的截取行为造成的信息泄漏。
根据分析的出发点不同,密码分析还原技术主要分为密码还原技术和密码猜测技术。
对于网络上通用的标准加密算法来说,攻击这类具有很高强度加密算法的手段通常是使用后一种技术。
密码分析还原(续)
1、密码还原技术
密码还原技术主要针对的是强度较低的加密算法。通过对加密过程的分析,从加密算法中找出算法的薄弱环节,从加密样本中直接分析出相关的密钥和明文。
对于目前网络上通行的标准加密算法来说,从理论和实践中还没出现对应的密码还原过程,因此密码还原技术的使用并不多。
2、密码猜测技术
密码猜测技术的原理主要是利用穷举的方法猜测可能的明文密码,将猜测的明文经过加密后与实际的密文进行比较,如果所猜测的密文与实际的密文相符,则表明密码攻击成功。
从理论上讲,密码猜测的破解过程需要一段很长的时间,而实际上,应用密码猜测技术实现对系统的攻击是目前最为有效的攻击方式。
3.3 应用漏洞分析与渗透
任何的应用程序都不可避免地存在着一些逻辑漏洞,这一点,对于安全隐患也同样适用。
在这方面操作系统也不例外,几乎每天都有人宣布发现了某个操作系统的安全漏洞,这些安全漏洞也就成为了入侵者的攻击对象。
通过对这些安全漏洞的分析,确认漏洞的引发方式以及引发后对系统造成的影响,攻击者可以使用合适的攻击程序引发漏洞的启动,破坏整个服务系统的运行过程,进而渗透到服务系统中,造成目标网络的损失。
应用漏洞从错误类型上主要包括服务流程漏洞和边界条件漏洞。
应用漏洞分析与渗透(续)
1.服务流程漏洞
服务流程漏洞指服务程序在运行处理过程中,由于流程次序的颠倒或对意外条件的处理的随意性,造成用户有可能通过特殊类型的访问绕过安全控制部分或使服务进入到异常的运行状态。
2.边界条件漏洞
边界条件漏洞则主要针对服务程序中存在的边界处理不严谨的情况。
3.4 社会工程学
社会工程学与黑客使用的其他技术具有很大的差别,它所研究的对象不是严谨的计算机技术,而是目标网络的人员。
社会工程学主要是利用说服或欺骗的方法来获得对信息系统的访问,这种说服和欺骗通常是通过和人交流或其他互动方式实现的。
简单地说,社会工程学就是黑客对人类天性趋于信任倾向的聪明利用,人类那种天生愿意相信其他人的说辞的倾向让大多数人容易被这种手段所利用。
社会工程学(续)
可以从两个层次来对社会工程学类的攻击进行分析:物理上的和心理上的。
物理分析
物理上,入侵发生的物理地点可以是工作区、电话、目标企业垃圾堆,甚至是在网上(通过虚假的网页或电子邮件等)。
心理分析
除了物理手段以外,黑客也可能充分利用用户的心理,从心理学角度进行社会工程学式的攻击。基本的说服手段包括扮演、讨好、同情、拉关系等。
3.5 恶意拒绝服务攻击
拒绝服务攻击( DoS)最主要的目的是造成被攻击服务器资源耗尽或系统崩溃而无法提供服务。
这样的入侵对于服务器来说可能并不会造成损害,但可以造成人们对被攻击服务器所提供服务的信任度下降,影响公司的声誉以及用户对网络服务的使用。
这类攻击主要还是利用网络协议的一些薄弱环节,通过发送大量无效请求数据包造成服务器进程无法短期释放,大量积累耗尽系统资源,使得服务器无法对正常的请求进行响应,造成服务的瘫痪。
恶意拒绝服务攻击(续)
基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务器的响应。
单一DoS攻击一般是采用一对一的方式,当攻击目标CPU速度低、内存小或者网络带宽小等各项性能指标不高时,效果是明显的。
分布式拒绝服务(DDoS)攻击是在传统的DoS攻击基础之上产生的一类攻击方式
随着计算机与网络技术的发展,计算机的处理能力和网络带宽的增加,使得DoS攻击的困难程度加大了,这就出现了分布式的拒绝服务攻击手段(DDoS)。
一个比较完善的DDoS攻击体系分成 3 大部分:傀儡控制、攻击用傀儡和攻击目标。
恶意拒绝服务攻击(续)
DoS攻击的类型
1) 带宽耗用DoS攻击
2) 资源衰竭DoS攻击
3) 编程缺陷DoS攻击
4) 基于路由的DoS攻击
5) 基于DNS的DoS攻击
DoS攻击手段
1) Smurf攻击
2) SYN洪泛
3) PTR记录欺诈
3.6 病毒(或后门)攻击
现在的病毒不仅仅只是通过磁盘才能传播,为了适应网络日益普及的形式,病毒也在自身的传播方式中加入了网络这个可能会造成更大危害的传播媒介。
有些病毒(或者叫木马)感染计算机,为远程入侵者提供可以控制被感染计算机的后门。
病毒或后门攻击技术主要是漏洞攻击技术和社会工程学攻击技术的综合应用。
小结
1、黑客的类型和动机
2、黑客攻击和流程
3、常用的黑客技术
主要参考书
《网络安全》(第2版),胡道元,闵京华编著
《密码编码学与网络安全-原理与实践》(第四版),William Stallings 著