(很久没有看社区了,这是我写的一份关于网络安全的技术概要,都是最新的东西,和大家一起分享,希望有不同意见的同学,可以和我一起学习)
网络攻击技术是一把双刃剑。对攻击者而言,它是攻击技术,对安全人员来说,它是不可缺少的安全防护技术。网络的攻击和入侵都指通过非授权的行为对网络和系统造成某种形式的危害。其中攻击倾向于对网络或者系统造成破坏,例如拒绝服务攻击,让服务器无法提供服务甚至网络瘫痪;而入侵倾向于获取某些信息而不对系统造成破坏,例如获取系统的控制权力。实际上现在对这两个词的使用比较混乱,并没有明显区分。在本书除非专门说明,并没有刻意区分两个词。对系统的攻击和入侵,都是利用软件或系统漏洞进行。换句话说,如果一个系统完美无缺,并且在此系统上安装的所有软件也是完美的,同时对它们的管理也无懈可击。那么,就不存在入侵和攻击行为了。
但是,这种情况是不存在的,从前不存在,今后也不可能存在,甚至更糟糕。这是由人们认识世界和改造世界的能力缺陷所注定的。人们设计的软/硬件产品是不可能不留下任何缺陷和漏洞的。从这个意义上讲,信息安全问题永远都不可能得到根本的解决,信息系统始终都处于开放和安全的矛盾之中。然而,从哲学的观点来看,正是矛盾,才是发展的根本动力。比如,今天的软件系统一般非常复杂,越复杂,就越难预测它在各种可能场景下的反应方式,也就越难保证其安全性。当今操作系统应用程序的代码行数越来越多。Windows XP大概有4千万行代码,Windows2000有2900万行代码;Unix和Linux少一些,通常在2百万行代码左右。业界通常有这样一个估算方式,即每1000行代码中大约有5-50个bug。因此,从平均意义上估计,Windows XP中大约有120万个bug。试图从逻辑上理解1700万~4000万行代码并增强其安全性,难度是非常大的。如果进一步分析,不同的操作系统协议栈中集成了数以千计的协议,即使这些协议中存在安全漏洞,操作系统和应用程序也必须依赖这些协议在不同的系统和应用程序间传输数据,这必然造成安全隐患。另外,设备驱动程序由不同厂商开发并安装到操作系统中,在许多情况下,这些驱动开发得并不完美,并对操作系统的稳定性造成了影响。由于这部分的软件更加接近于硬件,向固件注入恶意代码,已经成为了一种流行的攻击手段。
大多数情况下,恶意攻击者使用的工具和安全技术人员是相同的,这意味着安全人员必须了解攻击者使用的工具和手段,知道新出现的攻击方式,不断更新自己的知识和技能,甚至要懂得更多,因为安全人员必须识别并解决某一环境中存在的所有漏洞,而攻击者只需要精通一到两种攻击方法即可实施攻击。
计算机网络攻击主要包括 3 个阶段。第一阶段,获得登录 账号及存在于 /etc/passwd、nis 映射中的加密口令文件,对其运 行 crack 进行账号破译。第二阶段,进入计算机网络系统后收 集各种类型信息查找计算机网络系统中的漏洞,并利用计算机 网络自身缺陷获取根访问权。随后发出格式适当的 UDP 数据 包进行 nfs 请求处理并将结果回送客户。若请求为“写”操作则 非法入侵者可以将信息写入服务器磁盘;若请求为“读”操作,则 非法入侵者可以利用服务器、客户机间窥探器,获得服务器磁 盘内全部信息即根访问权。第三阶段,在获得根访问权后,非 法入侵者可以登录 nfs 守护程序获得并修改口令,或者增设包 窥探仪、独立软件工具,动态获取网络通信口令并修改 unlx 内 核截击某一链接、终端,最终获得远程主机访问权。
当前一般的网络攻击流程都分为三个阶段,即攻击的准备阶段、攻击的实施阶段和攻击的善后阶段。
攻击的准备阶段:确定攻击目的、准备攻击工具和收集目标信息。
攻击的实施阶段:实施具体的攻击行动。一般步骤如下: 1. 隐藏自己的位置 2. 利用收集到的信息获取帐号和密码,登陆主机。 3. 利用漏洞或者其他方法获得控制权并窃取网络资源和特权。
攻击的善后阶段:消除攻击的痕迹、植入后门,退出。
本章将会简明描述最新的网络攻击趋势,然后通过分析攻击的几个步骤,叙述攻击的基本过程和防范方式。
需要说明的是,在这一章中用到了几个词:黑客、安全人员、入侵者、攻击者。这几个词所代表的群体有相似之处也有不同之处。
黑客(Hacker)指的是一个对(某领域内的)编程语言有足够了解,可以不经长时间思考就能创造出有用的软件的人。在本章中,黑客单纯指试图破解或破坏某个程序、系统及网络安全的人,可能为恶意,也可能为善意。一般来说,非法地视图破坏某个程序和系统的人,称之为“骇客”,一个试图破解某系统或网络以提醒该系统所有者的系统安全漏洞。这群人往往被称做“白帽黑客”或“匿名客”(sneaker)或红客。脚本小孩”则指那些完全没有或仅有一点点骇客技巧,而只是按照指示或运行某种骇客程序来达到破解目的的人。
安全人员,在这里指的是对计算机或者整个网络进行管理,并且从中分析出安全事件的人。实际上,很多安全从业人员曾经都是黑客。
入侵者和攻击者这两个词含义类似,但入侵者更加侧重于偷偷潜入系统,而攻击者的含义更加倾向于破坏系统。本章也没有刻意区分这两类人。
另外需要注意的是某个系统是安全的并不代表这个系统可以抵御任何攻击行为,即不存在攻不破的堡垒。在网络安全中,某个系统只要让入侵者入侵系统时所付出的代价大于他所获得的利益,就可以认为这个系统是安全的。
9.1网络安全趋势
今年3月,德国莱茵集团正式发布《2020年网络安全趋势——面向数字化转型,对网络安全和隐私的新思考》报告,对全球范围内个人数据、供应链、智能设备、航运业、实时操作系统、可穿戴医疗设备以及车辆和交通等。
根据赛迪智库网络安全研究所对其的编译,我们可以知道当下最新的网络安全趋势。
9.2 信息收集
信息收集是指通过各种方式获取主机或网络的信息,属于攻击前的准备阶段,也是一个关键的环节。收集的信息通常包含:
9.3 网络隐身
网络隐身指在网络中隐藏自己真实的 IP 地址,使受害者无法反向追踪到攻击者。常用方法包括:
9.4 端口扫描和漏洞扫描
扫描首先要确定主机的操作系统类型和版本、提供哪些服务、 服务软件的类型和版本等信息,然后检测这些系统软件和服务软件 的版本是否存在已经公开的漏洞,并且漏洞还没有及时打上补丁。
一个端口开放即意味着远程主机开启了一个服务,这可能是一个潜在的通信通道甚至是一个入侵通道。端口扫描就是找出目标主 机或目标设备开放的端口和提供的服务,为下一步攻击做好准备。 它向 TCP/UDP 服务端口发送探测报文,记录并分析响应报文以判断目标端口处于打开还是关闭状态,分为 TCP 端口扫描和UDP端口扫描两类。TCP端口扫描包括全连接扫描、半连接扫描、FIN扫描、 ACK扫描、NULL扫描、XMAS扫描、TCP窗口扫描和自定义扫描等, 除了全连接扫描外,其它扫描类型都属于隐蔽扫描,因为它们不会被日志审计系统发现。除了全连接和半连接扫描外,其它 TCP扫描类型的结果正确性都依赖于具体操作系统的实现。UDP 端口扫描只有唯一一种类型。
漏洞扫描是针对特定应用和服务查找目标网络中存在哪些漏洞,它们是成功实施攻击的关键所在。根据漏洞的属性和利用方法,漏洞分为操作系统漏洞、应用服务漏洞和配置漏洞等。操作系统漏洞按照不同系统分类,如 Windows、Linux、UNIX 系统等;应用服 务漏洞按照具体的服务类型、服务程序名和版本号分类;配置漏洞 按照系统类型、程序名称和设置选项分类。网络安全管理员需要定 期对管理的网络或设备进行漏洞扫描,提升网络安全性。漏洞扫描 技术包括基于漏洞数据库和基于插件两种。
漏洞扫描主要采取两种方法:
(1)根据端口和服务扫描的结果,与已知漏洞数据库进行匹配, 检测是否有满足匹配的漏洞存在。
(2)根据已知漏洞存在的原因设置必要的检测条件,对目标 进行浅层次的攻击测试,以判断漏洞是否存在,如存在则报告漏洞 的详细信息。
所谓浅层次攻击是指并不实际攻击系统,而是仅依据漏洞的特 征进行测试,以判断漏洞存在的可能性,所以扫描器的报告信息有 时未必十分准确。
9.4.1 端口扫描
1.端口的基本概念
“端口”在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。
端口是由计算机的通信协议TCP/IP协议定义的。其中规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有很多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向[A:端口]就可以实现通信了。
可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,入侵者通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。
2.端口的分类
端口是一个16bit的地址,用端口号进行标识不同作用的端口。端口一般分为两类。
熟知端口(公认端口):由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口,端口号一般为0~1023。表9-2和表9-3列出了常见的熟知端口。
一般端口:用来随时分配给请求通信的客户进程。
表9-2常见TCP端口
服务名称 端 口 号 说 明
FTP 21 文件传输服务
Telnet 23 远程登录服务
HTTP 80 网页浏览服务
POP3 110 邮件服务
SMTP 25 简单邮件传输服务
Socks 1080 代理服务
表9-3常见UDP熟知端口
服务名称 端 口 号 说 明
RPC 111 远程调用
SNMP 161 简单网络管理
TFTP 69 简单文件传输
3.TCP介绍
TCP概念:
TCP代表传输控制协议,是Internet协议套件中的基本协议,是一种网络通信协议;它规定如何建立和维护两个程序可以交换数据的连接,如何通过Internet发送信息。
TCP的工作是将消息或文件分解成更小的片段(称为数据包),在通过Internet发送。然后,这些数据包由另一个TCP层接收,然后将该数据重组为完整的文件或消息。TCP还负责对数据流进行错误检查,以确保数据的传递; 如果发现错误,则TCP重新传输数据包。
TCP三次握手:
这是在客户端与服务端建立连接时。
第一次握手:客户端主动给服务端发送一个数据包,包含SYN数据段和序列号。表示建立连接请求。
第二次握手:服务端收到后,会返回客户端一个SYN及序列号和ACK应答。表示收到请求,可以连接。
第三次握手:客户端收到服务端的数据包后,回应一个ACK,表示收到了,然后两边就可以开始数据传输。
以上称为全TCP连接,如果缺失第三次握手,则称为SYN扫描。
FIN扫描:在TCP报文首部中,有一个字段为FIN,FIN扫描则依靠发送FIN来判断目标计算机的指定端口是否活动。
发送一个FIN=1的TCP报文到一个关闭的端口时,该报文会被丢掉,并返回一个RST报文。但是,如果当FIN报文发到一个活动的端口时,该报文只是简单的丢掉,不会返回任何回应。
从FIN扫描可以看出,这种扫描没有涉及任何TCP连接部分,因此,这种扫描比前两种都安全,可以称之为秘密扫描。
第三方扫描:又称“代理扫描”,这种扫描是控制第三方主机来代替入侵者进行扫描。这个第三方主机一般是入侵者通过入侵其他计算机而得到的,该“第三方”主机常被入侵者称之为“肉鸡”。这些“肉鸡”一般为安全防御系数极低的个人计算机。严格来说,它的扫描方式还是以上三种中的某一个,但即使被对方发现,对方也无法准确得知入侵者的真实IP地址和身份,所以更加隐蔽
9.4.2 漏洞扫描**
1.漏洞概述
虽然目前在软件开发的过程中越来越重视软件测试,测试所耗费的资源甚至超过了开发。但无论从理论上还是工程上都没有任何人敢声称能够彻底消灭软件中的所有逻辑缺陷——bug。
在各种各样的软件逻辑漏洞中,有一部分会引起非常严重的后果,我们把会引起软件做一些超出设计范围事情的bug称为漏洞。
漏洞往往是病毒木马入侵计算机的突破口。如果掌握了漏洞的技术细节,能够写出漏洞利用(Exploit)程序,往往可以让目标主机执行任意代码。
已发布软件里的漏洞分为已经被发现的漏洞和未被发现的漏洞。
如果病毒利用非常严重的系统漏洞进行传播,可能很多电脑将在劫难逃。因为系统漏洞可以引起计算机被远程控制、病毒感染。例如横扫世界的冲击波蠕虫、Slamer蠕虫等就是这种类型的病毒。
如果服务器软件存在安全漏洞,或者系统中可以被RPC远程调用的函数中存在缓冲区溢出漏洞,攻击者也可以发起“主动”进攻。
如果浏览器在解析HTML文件时存在缓冲区溢出漏洞,那么攻击者就可以精心构造一个承载着恶意代码的HTML文件,当有人点击这种链接时,漏洞被触发从而导致HTML中所承载的恶意代码被执行。这段代码通常是在没有任何提示的情况下去指定的地方下载木马客户端并运行。
此外,第三方软件所加载的ActiveX控件中的漏洞也是被“木马”所经常利用的对象。Word文档、Power Point文档、Excel表格文档虽然并非可执行文件,但它们同样导致恶意代码的执行。这类文档本身虽然是数据文件,但是如果Office软件在解析这些数据文件的特定数据结构时存在缓冲区溢出漏洞的话,攻击者就可以通过一个精心构造的word文档来触发并利用漏洞。当用office软件打开这个word文档的时候,一段恶意代码可能已经悄无声息的被执行过了。
软件漏洞的技术细节是非常宝贵的资料,尤其是当软件漏洞对应的官方补丁尚未发布时,只有少数攻击者秘密的掌握漏洞及其利用方法,这时往往可以通过漏洞入侵并破坏任意一台Internet上的主机。
未被公开的漏洞被称作zero day (0 day)。可以把0day理解成未公开的系统后门。由于0day的特殊性质和价值,使得很多研究者和攻击者投身于漏洞挖掘的行列。一个0day漏洞的资料根据其影响程度的不同,在黑市上可以卖到从几千元到几十万元不等的价钱。因此0day一旦被发现往往会被当作商业机密,甚至军事机密。如果把冲击波蠕虫的shellcode从原先的一分钟倒计时关机改为穷凶极恶的格式化硬盘之类,那么花一百万买这样一个电子炸弹比花一百万买一枚导弹要划算得多。
为了防范这种漏洞,最好的办法是及时为操作系统和服务打补丁。所谓补丁,是软件公司为已发现的漏洞所作的修复行为。如果厂商能够迅速发布补丁,那么我们就能够避免应用程序因为有漏洞而长期暴露在不安全因素下。而对于有些漏洞还没有打补丁的,就要依靠其他一些安全手段,例如防火墙和入侵检测系统,以及安全人员的经验。例如,安全人员可以考虑,目前机器上所开放的服务是否必须的,如果不是,把它关闭。服务可以公开访问吗?如果不能,则用防火墙隔离。所有不安全的选项都关闭了吗?如果没有,则关闭。
9.43 扫描器的介绍
虽然对扫描有多种分类,例如弱口令扫描、系统漏洞扫描、主机服务扫描等数十种方式,但归根结底还是寻找系统或者网络的漏洞,所以可以归到漏洞扫描一类。
早期的扫描器大多是专用的,即一种扫描器只能扫描一种特定的信息。随着网络的发展,各种系统漏洞被越来越多的发现,扫描器的种类也随之增多,为了简化扫描过程,人们把众多的扫描器集成为一个扫描器。目前,正在使用的扫描器中,绝大多数都是这种综合扫描器。
单从危害来看,黑客进行对远程主机进行本地扫描的危害更大,这时说明黑客已经侵入了系统。此时,查找出黑客打开的后门并加以封锁是亡羊补牢成功与否的关键。
此外,对于远程扫描无法主动防范,因为远程扫描可能存在于网络的任何一个位置上。关闭不必要的服务与端口、及时安装各种补丁程序可以从一定程度上减少远程扫描带来的安全隐患。
X-Scan和M-Scaner是最常用的端口扫描器;当前主流的漏洞扫描技术有POP3漏洞扫描、HTTP漏洞扫描等。
9.5攻击的实施
通过信息收集和网络扫描收集到足够的目标信息后,攻击者即可开始实施网络攻击。攻击的目的一般分为信息泄露、完整性破坏、拒绝服务和非法访问4种基本类型,攻击的方式主要包括口令破解、 中间人攻击、恶意代码攻击、漏洞破解、拒绝服务攻击等。早期的 攻击工具往往是针对某个具体漏洞单独开发,如针对 Windows RPC 漏洞 MS03-026 的攻击工具 scanms.exe,其自动寻找网络中的漏洞 主机并可批量发起攻击。目前,网络攻击正在向平台化和集成化发展,攻击者可以根据研究者公开的漏洞直接在平台上利用已有模块 快速开发和部署漏洞破解程序,并集成其它的工具实施完整的攻击, 此类平台最著名的代表是 Rapid7 公司出品的 Metasploit 工具包,不仅包含大量最新的漏洞,还几乎集成了所有网络攻击所需要的软件 工具,同时提供了诸多开发模块,方便攻击者开发新的破解程序。
这里我将会介绍几种重要的攻击方式,已经Metasploit工具包。
9.5.1拒绝服务攻击DOS
拒绝服务攻击(Denial of Service,简称DoS)是指攻击者利用系统的缺陷,通过执行一些恶意的操作而使合法的系统用户不能及时的得到服务或者系统资源,如CPU处理时间、存储器、网络带宽、Web服务等。
这种攻击方式和前面讲的几种方式都不一样:它本身并不能使攻击者获取什么资源,例如系统的控制权力、秘密的文件等,它只是以破坏服务为目的,仅针对暴露于网络上的服务器或客户端的软、硬件服务进行干扰,迫使目标服务暂时性的失效,具有很强的破坏性。往往把这种方式称为“攻击”而不是“入侵”。
拒绝服务攻击往往造成计算机或网络无法正常工作,进而会使一个依赖于计算机或者网络服务的企业不能正常运转。例如各种网站服务器,一旦受到拒绝服务攻击,那么这个网站就无法登录了,在2000年发生的所谓“中美黑客大战”中,许多政府、商业网站都受到过拒绝服务攻击,使得无法提供正常服务,从而造成一定的损失。另外,拒绝服务攻击也是提供网络游戏服务的供应商很头疼的一种攻击方式。下面是一些常见的拒绝服务攻击方法。
1.基于网络带宽消耗的拒绝服务攻击(最流行)
攻击者有意制造大量的数据包或传输大量文件以占用有限的带宽资源,使合法用户无法正常使用网络资源,从而实现攻击者的意图。例如SYN Flood(同步风暴)就是利用了TCP/IP协议的漏洞,攻击者假造源IP地址发送多个同步数据包(SYN Packet)给服务器,服务器因无法收到确认数据包而需要处理大量的半连接状态,让主机无法处理正常的连接需求,影响正常运作。
2.消耗磁盘空间的拒绝服务攻击
这种拒绝服务攻击利用系统的缺陷,制造大量的垃圾信息。典型的攻击方法有垃圾邮件、
故意制造大量日志信息。
3.消耗CPU资源和内存的拒绝服务攻击
操作系统需要提供CPU和内存资源给许多进程共用,攻击者利用系统存在的缺陷,有意使用大量的CPU和内存资源,从而导致系统服务性能下降甚至造成系统崩溃。典型的攻击方法就是使用蠕虫程序。
4.基于系统缺陷的拒绝服务攻击
攻击者利用目标系统的漏洞和通信协议的弱点来实现拒绝服务攻击。下面是两种很典型的攻击方式。
Ping of Death:根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了Ping of Death攻击,该攻击会造成主机的瘫痪。
Teardrop:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。
9.5.2分布式拒绝服务攻击
分布式拒绝服务(Distributed Denial of Service,DDoS)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DoS攻击,从而成倍地提高拒绝服务攻击的威力。
DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高时的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了,目标对恶意攻击包的“消化能力”加强了不少,例如攻击软件每秒钟可以发送3000个攻击包,但目标主机与网络带宽每秒钟可以处理10000个攻击包,这样一来攻击就不会产生什么效果。
这时候分布式的拒绝服务攻击手段就应运而生了。如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,现在攻击者使用10台、100台攻击机同时攻击。DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。
通常,攻击者使用一个偷窃账号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在Internet上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行,这些安装了代理程序的机器被称为傀儡机。分布式拒绝服务攻击体系如图9-12所示。
图9-12 分布式拒绝服务攻击体系结构
高速广泛连接的网络给大家带来了方便,也为DDoS攻击创造了极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少,效果好。而现在电信骨干节点之间的连接都是以G为级别的,大城市之间更可以达到2.5G或者更高的连接,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以在分布在更大的范围,选择起来更灵活了。
如何防范呢?为了防范拒绝服务攻击,可以采取下列措施。
(1)确保所有服务器采用最新系统,并打上安全补丁。从已有的拒绝服务攻击事件分析来看,几乎每个曾受到DDoS攻击的系统都没有及时打上补丁。
(2)确保管理员对所有主机进行检查,而不仅针对关键主机。这是为了确保管理员知道每个主机系统在运行什么,谁在使用主机,哪些人可以访问主机。否则,即使黑客侵犯了系统,也很难查明。
(3)确保从服务器相应的目录或文件数据库中删除未使用的服务如FTP或NFS,守护程序是否存在一些已知的漏洞,黑客通过根攻击就能获得访问特权系统的权限,并能访问其他系统甚至是受防火墙保护的系统。
(4)确保运行在Unix上的所有服务都有TCP封装程序,限制对主机的访问权限。
(5)禁止使用网络访问程序如Telnet、Ftp、Rsh、Rlogin和Rcp,以更加安全的协议如SSH取代。SSH不会在网上以明文格式传送口令,而Telnet和Rlogin则正好相反,黑客能搜寻到这些口令,从而立即访问网络上的重要服务器。
(6)限制在防火墙外与网络文件共享。这会使黑客有机会截获系统文件,并以恶意代码替换它,文件传输功能将陷入瘫痪。
(7)在防火墙上运行端口映射程序或端口扫描程序。大多数事件是由于防火墙配置不当造成的,使DoS/DDoS攻击成功率很高,所以定要认真检查特权端口和非特权端口。
(8)检查所有网络设备和主机/服务器系统的日志。只要日志出现漏洞或时间出现变更,几乎可以肯定,相关的主机安全受到了危胁。
从实际情况来看,目前的技术对分布式拒绝服务攻击的防范效果并不太理想,但如果采取上述几项措施,能起到一定的预防作用。
9.5.3SQL注入攻击
很多网络应用都采用了B/S模式,即用户可以通过浏览器来获取某些服务。SQL命令注入的漏洞是Web系统特有的一类漏洞,源于PHP、ASP等脚本语言对用户输入数据解析的缺陷,将解析错误的语句发送给了MySQL数据库。
如果用户的输入能够影响到脚本中SQL命令串的生成,那么很可能在添加了单引号、“#”号等转义命令字符后,能够改变数据库最终执行的SQL命令,攻击者就利用这个特点修改自己的输入,最终获取数据库中自己所需要的信息,例如管理员密码。这就是SQL注入。
以PHP语言为例,如果程序员在编程时没有对待用户输入的变量$u和$p进行合理的限制,那么当攻击者把用户名输入为admin’#的时候,输入字符串中的单引号将和脚本中的变量的单引号形成配对,而输入字符串中的#号对于mysql的语言解释起来说是行注释符,因此后面的语句被作为注释处理。
mysql_db_query(‘db’,”selectfrom name where user=’$u’ and psw=’$p’);
mysql_db_query(‘db’,”selectfrom name where user=’admin’#’ adn psw=’123’)
“#”后的命令将被当成注释,最终执行的命令为:
select * from tabel_name where user=’admin’
通过这样的输入,攻击者就绕过了身份验证机制,没有正确的密码也可以看到管理员的信息。
SQL注入攻击的精髓在于构造巧妙的注入命令串,从服务器不同的反馈结果中,逐步分析出数据库中各个表项之间的关系,直到彻底攻破数据库。遇到功能强大的数据库,例如Microsoft SQL Server,如果数据库权限配置不合理,利用存储过程有时候甚至能够做到远程控制服务器。
缓冲区溢出需要掌握大量底层知识,而SQL注入攻击的技术门槛较低,只要懂得基本的Web技术和数据库知识就可以实施攻击。另外,一些自动化的攻击,例如NBSI2等,也使这类攻击变得容易。目前,这类技术已经发展成为一套比较完善的体系,成为破坏网站的主流技术。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以防火墙不会对SQL注入发出警报,如果管理员没查看日志的习惯,可能被入侵很长时间都不会发觉。
针对SQL注入攻击的防范,当务之急是对程序员进行安全培训。开发Web应用时要对用户输入的数据进行限制,过滤掉可能引起攻击的敏感字符。另外,数据库对大小写不敏感,所以要使用正则表达式,同时过滤掉select、SELECT、sEleCt等所有形式的保留字。
此外,有一些自动化的扫描工具可以帮助检测网站中的SQL注入漏洞,例如NGS公司生产的NGSSQuirreL就是这样一款工具。
9.5.3CRSF攻击
1.CRSF的概念
CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
2.CSRF的过程
CSRF攻击攻击原理及过程如下:
3.CSRF漏洞检测:
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击。
目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。
9.5.4序列化和反序列攻击
这些就是我们要关注的几个魔术方法了,如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞了。
2.利用思路
在反序列化中,我们所能控制的数据就是对象中的各个属性值,所以在PHP的反序列化有一种漏洞利用方法叫做 “面向属性编程” ,即 POP( Property Oriented Programming)。和二进制漏洞中常用的ROP技术类似。在ROP中我们往往需要一段初始化gadgets来开始我们的整个利用过程,然后继续调用其他gadgets。在PHP反序列化漏洞利用技术POP中,对应的初始化gadgets就是wakeup() 或者是destruct() 方法, 在最理想的情况下能够实现漏洞利用的点就在这两个函数中,但往往我们需要从这个函数开始,逐步的跟进在这个函数中调用到的所有函数,直至找到可以利用的点为止。
构造ROP攻击的难点在于,我们需要在整个进程空间中搜索我们需要的gadgets,这需要花费相当长的时间。但一旦完成了“搜索”和“拼接”,这样的攻击是无法抵挡的,因为它用到的都是程序中合法的的代码,普通的防护手段难以检测。反序列化漏洞需要满足两个条件:
9.5.5中间人攻击
在那些好莱坞大片中,总是对于电脑黑客有一些夸大不实的描述,譬如《虎胆龙威4》里,就把黑客神化,短短数秒就能够破解别人的密码、穿越网络防火墙,取得机密资料…。虽然有些夸张,但在现实生活里,技术高深的黑客也确实能在在短短数分钟之内,窃听网络上的一举一动,当然也包括了你刚才输入过的帐号密码!
1.中间人攻击原理
中间人攻击(Man-in-the-Middle Attack,简称MITM攻击)是一种通过窃取或窜改通信物理、逻辑链路间接完成攻击行为的网络攻击方法。这种攻击模式通过各种攻击手段入侵控制,或者直接以物理接入方式操控两台通信计算机之间的主机,并通过这台主机达到攻击两台通信计算机中任意一方的目的。这个被攻击者控制的通信节点就是所谓的“中间人”。
中间人攻击很早就成为了黑客常用的一种攻击手段,其思想可以追溯到上千年前的古代,春秋战国时期窃符救赵的信陵君,窃取兵符控制军队即是针对魏王与军队之间信息传递方式的典型中间人攻击。在网络通信系统最被被设计出来时,安全因素并没有被考虑到,互联网工程任务组(IETF)设计的ARP、DNS、DHCP等常用协议都没有考虑网络通信被人恶意窜改的情况,即使在局域网中没有攻击者,只要有个别操作人员错误的配置了网络中的一个非关键结点(如多启动一个DHCP服务器),就有可能影响网络中其它结点的正常网络通信。
这些早期的协议更无法对简单的物理连接改变而可能引发的安全问题进行防御。网络标准的向下兼容性决定了现代网络继承了这些问题,大家依然会被这些问题困扰。严格说起来,中间人攻击算是一种“概念”,它有很多实现方式。进行攻击的黑客,首先要找到网络协议的漏洞,对中间的网络设备进行偷天换日,神不知鬼不觉的把自己替换成网络传输过程必经的中间站,再纪录下特定网段内的数据包。
中间人攻击难以防御的地方在于:
2.背景知识介绍
1.HTTPS和HTTP
HTTPS是在HTTP应用层基础上使用SSL(完全套接层)作为子层,SSL使用数据加密技术确保数据在网络上传输而不会被截取及窃听。
2.中间人攻击
①SSLStrip (降级攻击)的工作原理及步骤
(1) 先进行中间人攻击来拦截 HTTP 流量。
(2) 将出现的 HTTPS 链接全部替换为 HTTP,同时记下所有改变的链接。
(3) 使用 HTTP 与受害者机器连接。
(4) 同时与合法的服务器建立 HTTPS。
(5) 受害者与合法服务器之间的全部通信经过了代理转发。
(6) 其中,出现的图标被替换成为用户熟悉的“小黄锁”图标,以建立信任。
(7) 这样,中间人攻击就成功骗取了密码、账号等信息,而受害者一无所知。
总而言之,SSLStrip是一种降级攻击。
②sslsplit(解密攻击)工作原理
工具的主要原理是以中间人的身份将证书插入到客户端和服务器中间,从而截断客户端和服务器之间的数据。
之前我们大多数做的都是针对于80端口的欺骗(http),也就是说,只要是超越了80端口我们就会有点棘手:比如常用的443端口(https),比如465(smtps)和587端口,这些都是通过SSL加密进行数据传输的,简单的80端口监听肯定是什么都拿不到的。这个时候,就体现出SSL证书劫持的作用了。
总而言之,SSLSplit是一种伪造证书攻击。
3.端口转发
数据包都是有原地址和目标地址的,NAT(network address translation,网络地址转换)就是要对数据包的原地址或者目标地址(也可以修改端口的)进行修改的技术。为什么我们要修改ip地址呢?是这样的互联网中只能传送公网地址的数据包,私有地址的数据包是无法传送的。这样你想下,你每天在wifi环境下看视频浏览网站的时候你的ip是什么(私有地址,你手机、pad、电脑发出来的所有数据包原地址都是私有地址。怎么在互联网上传送)。为了能让你的数据包在能在互联网上传送,必须给你一个公网ip才行。所以当你上互联网的时候,路由器会帮你把所有的数据包的原地址转换成它的wlan口的ip地址(这个就是公网ip,一般就是ADSL拨号获取的ip)。这个转换的技术就是NAT。当你所访问的服务器给你回应数据包时,路由器会把所有数据包目标地址,由它的wlan口的ip地址,改回你内网的ip地址。这样你才能上互联网。所以你每天都在使用NAT技术。
4.数据重定向的方法
如何重定向到攻击者电脑上成为靶机和服务器的中间人,其实有很多方式。
(1)arp攻击(伪装网关)
(2)DNS劫持(伪装服务器)
(3)wifi钓鱼(之前pxy他们组做的实验就可以利用起来)
(4)修改hosts文件(把舍友暴打一顿,然后把他的电脑里的hosts文件改掉)
(5)修改默认网关(把舍友暴打一顿,然后把他的电脑里的默认网关改成自己的ip)
2) DNS欺骗(DNS Spoofing)
DNS欺骗是攻击者冒充域名服务器让目标主机把域名转换成错误IP的一种欺骗行为,其目的是让受害主机把通过域名查询到的IP地址设为攻击者所控制主机的IP地址。如果受到此类攻击,用户通过域名连接的目标服务器可能被悄无声息地替换成了伪造服务。攻击者也可以在伪服务器上把受害主机的流量解析修改后冒名转发给真实的服务器,由“冒名顶替者”变为“中间人”。
DNS欺骗攻击是一种非常危险的中间人攻击,它容易被攻击者利用并且窃取用户的机密信息。其常被用于与钓鱼网站配合,如将用户对银行主页的访问重定向到攻击者所控制的钓鱼网站,骗取银行密码等。
中间人攻击是一种非常危险的攻击形式,时常与钓鱼网站、挂马网站等攻击形式结合,让你不知不觉中泄漏电脑里的秘密,另外它会主动引导你下载病毒木马或木码。更重要的是,这种攻击可能将我们认为绝对安全的网络连接变成完全被人监听控制的连接,使得网络连接的私密性得不到保障,造成重要数据轻易落入攻击者之手。由于网络环境的复杂性,我们有必要对中间人攻击有进行了解,具备初步判断网络连接安全性的能力。
9.5.6恶意代码攻击
1.恶意代码的概述
代码是指计算机程序代码,可以被执行完成特定功能。任何事物都有正反两面,人类发明的所有工具既可造福也可造孽,这完全取决于使用工具的人。计算机程序也不列外,软件工程师编写了大量的可用软件(操作系统,应用系统),同时,黑客们在编写扰乱社会和他人的计算机程序,这些代码统称为恶意代码(malicious Code)。
在Internet安全事件中,恶意代码造成的经济损失占有最大的比例。恶意代码主要包括计算机病毒(Virus)、蠕虫(Worm)、木马程序(Trojan Horse)、后门程序(Backdoor)、逻辑炸弹(Logic Bomb)等等。与此同时,恶意代码成为信息战、网络战的重要手段。日益严重的恶意代码问题,不仅使企业及用户蒙受了巨大经济损失,而且使国家的安全面临着严重威胁。
2003年,Slammer蠕虫在10分钟内导致互联网90%脆弱主机受到感染。同年8月,“冲击波”蠕虫爆发,8天内导致全球电脑用户损失高达20亿美元之多。2004年到2006年,振荡波蠕虫、爱情后门、波特后门等恶意代码利用电子邮件和系统漏洞对网络主机进行疯狂传播,给国家和社会造成了巨大的损失。目前,恶意代码问题成为信息安全需要解决的,迫在眉捷的、刻不容缓的安全问题。
90年代末,恶意代码的定义随着计算机网络技术的发展逐渐丰富,Grimes将恶意代码定义为,经过存储介质和网络进行传播,从一台计算机系统到另外一台计算机系统,未经授权认证破坏计算机系统完整性的程序或代码。它包含计算机病毒(Computer Virus)、蠕虫(Worms)、特洛伊木马(Trojan Horse)、逻辑炸弹(Logic Bombs)、病菌(Bacteria)、用户及Rootkit、核心级Rootkit、脚本恶意代码和恶意Activex控件等,由此定义,恶意代码两个显著特点是:非授权性和破坏性。
恶意代码的行为表现各异,破坏程度千差万别,但是作用机制大体相同,其整个作用过程分为:侵入系统、维持或提升现有特权、隐蔽策略、潜伏、破坏。
一段好的恶意代码,首先必须具有良好隐蔽性、生存性,不能轻松被软件或者用户察觉。然后,具有良好的攻击性。
2.恶意代码生存技术
生存技术包括4个方面,反跟踪技术、加密技术、模糊变换技术、自动生产技术。反跟踪技术可以减少被发现的可能性,加密技术是恶意代码自身保护的重要机制。
恶意代码采用反跟踪技术可以提高伪装能力和防破译能力,增加检测与清除恶意代码的难度。目前常用的方法有两类:反动态跟踪技术和反静态分析技术。
反动态跟踪技术包括4方面内容,禁止跟踪中断(针对调试分析工具运行系统的单步中断和断点中断服务程序,恶意代码通过修改中断服务程序的入口地址实现反跟踪目的,“1575”计算机病毒采用该方法将堆栈指针指向处于中断向量表中的INT0至INT3区域,阻止调试工具对其代码进行跟踪)、封锁键盘输入和屏幕显示、检测跟踪法(检测跟踪调试时和正常时的运行环境、中断入口和时间的差异,根据这些差异采取一定的措施,实现其反跟踪目的)、其他反跟踪技术(指令流队列法和逆指令流法)
反静态分析技术包括两方面内容,为了防止程序代码通过反汇编进行静态分析,程序代码以分块的密文形式装入内存,在执行时由解密程序进行译码,某一段代码执行完毕后立即清除,保证任何时刻分析者不可能从内存中得到完整的执行代码。伪指令法指在指令流中插入“废指令”,使得静态反汇编无法得到全部正常的指令,不能有效地进行静态分析。
加密技术是恶意代码自我保护地一种手段,加密技术和反跟踪技术地配合使用,使得分析者无法正常调试和阅读恶意代码,不知道恶意代码地工作原理,也无法抽取特征串。从加密地内容上看,可以分为信息加密、数据加密、程序代码加密三种。
模糊变换技术,使得恶意代码每感染一个客体对象时,潜入宿主程序的代码互不相同。同一种恶意代码具有多个不同样本,几乎没有稳定代码,采用基于特征的检测工具一般不能识别他们。这种技术的发展,使得病毒检测难度加大。它包含5种技术,指令替换技术(模糊变换引擎,对恶意代码的二进制进行反汇编,解码每一条指令,计算出指令长度,并对指令进行同义变换)、指令压缩技术(模糊变换器检测恶意代码反汇编的全部指令,对可进行压缩的一段指令进行同义压缩)、指令拓展技术(把每一条汇编指令进行同义拓展,所有压缩技术变换的指令都可以采用拓展技术实施逆变换)、伪指令技术(就是插入无效指令)、重编译技术(采用恶意代码的重编译技术,需要自带编译器或者操作系统提供编译器进行重新编译,这种技术既实现了变形的目的,也为跨平台的恶意代码出现打下了基础)。
恶意代码的自动生产技术,是针对人工分析技术的。“计算机病毒生成器”,使得对计算机病毒一无所知的用户,也能组合出算法不同、功能各异的计算机病毒。“多态性发生器”可将普通病毒编译成复杂多变的多态性病毒。多态变换引擎可以使得程序代码本身发生变化,并保持原有功能。“Dark Avenger”是较为著名的例子。反恶意代码软件如果采用基于特征的扫描技术,根本无法检测和清除这种恶意代码。
3.恶意代码攻击技术
常用的攻击技术,包括进程注入技术、三线程技术、端口复用技术、超级管理技术、端口反向连接技术、缓冲区溢出攻击技术。
当前操作系统中都有系统服务和网络服务,它们都在系统启动时自动加载。进程注入技术就是将这些与服务相关的可执行代码作为载体,恶意代码程序将自身嵌入到这些可执行代码之中,实现自身隐藏和启动的目的。这种形式的恶意代码只须要安装一次,以后就会被自动加载可执行文件的进程中,并且会被多个服务加载。只有系统关闭时,服务才会结束,所以恶意代码程序运行时始终保持激活状态。
一个进程可以同时拥有多个并发线程。三线程技术就是指一个恶意代码进程同时开启了三个线程,其中一个主线程负责远程控制的工作。另外两个辅助线程是监视线程和守护线程,监视线程负责检查恶意代码程序是否被删除或被停止自启动。守护线程注入其他可执行文件内,与恶意代码进程同步,一旦进程被停止,它就会重新启动该进程,并向主线程提供必要的数据,这样就能保证恶意代码运行的可持续性。比如“中国黑客”。
端口复用技术,是指重复利用系统网络打开的端口(25、80、135等)传送数据,这样可以欺骗防火墙,又可以少开新端口。它需要保证端口默认服务正常工作的条件下复用,具有很强的欺骗性。比如:特洛伊木马,利用80端口传递控制信息和数据,实现远程控制的目的。
一些恶意代码还具有攻击反恶意代码软件的能力。为了对抗反恶意代码软件,恶意代码采用超级管理技术对反恶意代码软件系统进行拒绝服务攻击,使得反恶意代码软件无法正常工作,比如,“广外女生”。
防火墙对于外部网络进入内部网络的数据流有严格的访问控制策略,但是对于从内网到外网的数据却疏于防范。端口反向连接技术,恶意代码攻击的服务端主动连接客户端。比如,“Boinet”,”网络神偷“,”灰鸽子“。
缓冲区溢出漏洞攻击占远程网络攻击的80%,这种攻击可以使得一个匿名的internet用户有机会获得一台主机的部分或全部的控制权,代表一类严重的安全威胁。恶意代码利用系统系统和网络服务的安全漏洞植入并且执行攻击代码,攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而获得被攻击主机的控制权。缓冲区溢出攻击成为恶意代码从被动式传播转为主动式传播的主要途径。比如,“红色代码“。
4.恶意代码隐蔽技术
隐藏通常保活本地隐藏和通信隐藏。本地隐藏主要有文件隐藏、进程隐藏、网络隐藏、内核模块隐藏、编译器隐藏等。网络隐藏主要包括通信内容隐藏和传输通道隐藏。
本地隐藏是指为了防止本地系统管理人员觉察而采取的隐蔽手段。本地系统管理人员通常使用“查看进程列表”,“查看目录”,“查看内核模块”,“查看系统网络连接状态”等管理命令来检测系统是否被植入了恶意代码。
文件隐藏,就是定制文件名,使得恶意文件更名为系统的合法程序文件名,或者附加到合法程序文件中。
进程隐藏,就是通过附在或者替换系统进程,使得恶意代码以合法服务的身份运行。可以通过修改进程列表程序,修改命令参数使得恶意代码进程信息无法查询。也可以借助Rootkit技术实现。
网络连接隐蔽,就是借用现有的服务的端口来实现网络连接隐蔽,如80,将自己数据包设置特殊标识,通过标识识别连接信息,未标识的WWW服务网络包仍转交给原服务程序处理。
编译器隐蔽,该方法可以使用实施原始分发攻击,恶意代码的植入者是编译器开发人员。
Rootkit隐藏,windows下,可以分为用户模式下的Rootkit和内核模式下的Rootkit。
使用加密算法对所传输的内容进行加密能够隐蔽通信内容。隐蔽通信内容虽然可以保护通信内容,但是无法隐蔽通信状态,因此传输信道的隐蔽也具有重要的意义。对传输信道的隐蔽主要采用隐蔽通道技术。
隐蔽通道是允许进程违反系统安全策略传输信息的通道。可以分为存储隐蔽通道和时间隐蔽通道。
存储隐蔽通道是一个进程能够直接或间接访问某个存储空间,而该存储空间又能够被另一个进程所访问,这两个进程之间所形成的通道称之为存储隐蔽通道。
时间隐蔽通道是一个进程对系统性能产生的影响可以被另一个进程观察到并且可以利用一个时间基准进行测量,这样形成的信息传递通道称为时间隐蔽通道。
9.5.7Metasploit工具包
Metasploit是少数几个可用于执行诸多渗透测试步骤的工具,其社区拥有超过200000名成员,是全球最大的信息安全交流社区。其中最重要也是最庞大的项目是开源的Metasploit框架,一套针对远程主机进行开发和执行“exploit代码”的工具,旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试(penetration testing)及入侵检测系统签名开发。当前社区成员及Rapid7核心研发团队每天都在更新Metasploit功能框架,不断完善,来给渗透测试从业者更优的使用体验。
在发现新漏洞时(这是很常见的),Metasploit会监控Rapid7,然后Metasploit的200,000多个用户会将漏洞添加到Metasploit的目录上。然后,任何人只要使用Metasploit,就可以用它来测试特定系统的是否有这个漏洞。
Metasploit框架使Metasploit具有良好的可扩展性,它的控制接口负责发现漏洞、攻击漏洞,提交漏洞,然后通过一些接口加入攻击后处理工具和报表工具。Metasploit框架可以从一个漏洞扫描程序导入数据,使用关于有漏洞主机的详细信息来发现可攻击漏洞,然后使用有效载荷对系统发起攻击。所有这些操作都可以通过Metasploit的Web界面进行管理,而它只是其中一种种管理接口,另外还有命令行工具和一些商业工具等等。
攻击者可以将来自漏洞扫描程序的结果导入到Metasploit框架的开源安全工具Armitage中,然后通过Metasploit的模块来确定漏洞。一旦发现了漏洞,攻击者就可以采取一种可行方法攻击系统,通过Shell或启动Metasploit的meterpreter来控制这个系统。
这些有效载荷就是在获得本地系统访问之后执行的一系列命令。这个过程需要参考一些文档并使用一些数据库技术,在发现漏洞之后开发一种可行的攻击方法。其中有效载荷数据库包含用于提取本地系统密码、安装其他软件或控制硬件等的模块,这些功能很像以前BO2K等工具所具备的功能。
9.6 设置后门
攻击者在成功完成对目标的远程攻击后,为保持对目标的长久 控制并再次方便地进入目标系统,需要建立一些进入系统的特殊途 径,即网络后门。理想的后门应该是无论用户账号是否变化,无论 系统服务是开启还是关闭,无论系统配置如何变化,都存在一条秘密通道能够让攻击者再次隐蔽进入目标系统或网络。创建后门的主 要方法包括:开放连接端口、修改系统配置、安装监控器、建立隐 蔽连接通道、创建用户账号、安装远程控制工具和替换系统文件等。
在整体架构上,一个优秀的后门应该充分考虑其功能、触发方式和通信方式等方面。针对不同的方面,杀软也会根据其特征进行处理。为了进一步的持续性控制以及后渗透,后门越显复杂化。从后门的发展史中可看出,这是一场攻与防的持续性较量。
从终端平台的角度看,后门可分为Linux型、Windows型和IOT型;
对于Linux而言,从后门的形式上看,可分为配置型、logger型和rookit型;
对于windows而言,从后门触发方式的角度看,可分为Registry型、Schtasks型和WMI型;
从通信方式的角度看,后门可分为http/https型、irc型、dns型、icmp型等等;
从网站应用的角度看,后门可分为模块扩展型、后端语言型和配置文件型。
9.7 清除痕迹
在所有的操作系统中,包括Windows和Unix系统,都有自己的日志系统。在日志中记载了各种信息,例如用户对其的操作、应用程序所作的行为、各种各样的安全事件等。当入侵者非法进入了系统后,往往会被这些日志记录下来。而管理员通过日志,则有可能分析出入侵者的行为,甚至是根据线索找到入侵者。
所以,一个相对专业的入侵者,会在入侵行为完成后,消除自己的痕迹,就像专业的小偷离开现场时,会小心的把指纹擦掉。
以Windows的日志系统为例。它自带了一个“事件查看器”,可以通过“开始→控制面板→管理工具→事件查看器”将其打开。事件查看器的界面如图9-11所示。
图9-11 事件查看器界面
1.应用程序日志
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于解决问题。
2.安全性日志
记录了诸如有效和无效的登录尝试等事件,以及与资源使用相关的事件,例如创建、打开或删除文件或其他对象,系统管理员可以指定在安全性日志中记录什么事件。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。
3.系统日志
包含Windows XP的系统组件记录的事件,例如在启动过程中加载驱动程序或其他系统组件失败将记录在系统日志中,默认情况下Windows会将系统事件记录到系统日志之中。
如果机器被配置为域控制器,那么还将包括目录服务日志、文件复制服务日志;如果机器被配置为域名系统(DNS)服务器,那么还将记录DNS服务器日志。当启动Windows时,“事件日志”服务(EventLog)会自动启动,所有用户都可以查看应用程序和系统日志,但只有管理员才能访问安全性日志。
这些日志文件都被存放在管理员用户的system32目录下,下面列出了一些例子:
DNS日志默认位置:%systemroot%\system32\config,默认文件大小512KB,管理员都会改变这个默认大小;
安全日志文件:%systemroot%\system32\config\SecEvent.EVT;
系统日志文件:%systemroot%\system32\config\SysEvent.EVT;
应用程序日志文件:%systemroot%\system32\config\AppEvent.EVT;
FTP日志默认位置:%systemroot%\system32\logfiles\msftpsvc1\,默认每天一个日志;
WWW日志默认位置:%systemroot%\system32\logfiles\w3svc1\,默认每天一个日志。
Unix的日志系统比windows更为强大。
日志文件通常有某项服务在后台保护,除了系统日志、安全日志、应用程序日志等等,它们的服务是Windows的关键进程,而且与注册表文件在一块,当Windows启动后,服务则马上被启动用来保护这些文件,所以很难删除。
虽然可以通过事件查看器把日志清空。但这种行为本身就是一个不正常事件。会让系统管理员产生怀疑。所以入侵者一般只是删掉和自己入侵内容相关的事件,这往往需要日志删除工具来配合。这样的工具目前非常普遍。
9.8 防御策略
9.8.1 分布式拒绝服务攻击防御
首先,应确保计算机服务器采用最新系统并打上安全补 丁,服务器软件无任何安全漏洞。同时在计算机服务器上删除 没有使用的服务、端口。其次,在计算机服务器前端加 CDN 中 转,采用 CDN 的 IP 进行域名解析,保证计算机服务器上部署的 其他域名均非真实 IP(均利用 CDN 解析),或者进行高仿盾机购 置,以便隐藏服务器真实 IP 地址。最后,从源头入手,避免随意 下载非系统商城应用,定期进行安全补丁更新,定期关闭非必要 端口,防备恶意链接。同时,合理设置路由器,优化对外服务主 机,限制全部在计算机网络上提供公开服务的主机,特别是邮 件发送功能,避免服务器对外传送消息(发送邮件)泄露 IP 地址。
9.8.2勒索软件防御
针对勒索软件,应从源头入手,第一时间安装微软发布的 最新安全补丁,如 Windows 10 Version 1511 等,并及时更新操 作系统信息。同时,关闭 135 端口、445 端口、138 端口、137 端口、139 端口及网络共享端口。在此基础上,用户应尽量 在 U 盘、移动硬盘等定期备份计算机内重要文件资料,并进行 相关磁盘的脱机保存,或者利用微软新发布的 OneDrive —— 勒索软件保护及文件恢复功能,从勒索软件的攻击中恢复文 件。此外,用户应提高网络安全意识,安装正版软件(特别是 Adobe Flash Player)、操作系统,避免随意点击不明链接、下载 不明文件、打开不明邮件。若上述方法无法有效防御,可以考 虑禁止使用 Windows 内置的服务卷影复制服务、WindowsScript Host,以防御勒索软件攻击。
9.8.3木马病毒防御
扫描端口是检测特洛伊木马病毒的主要用手段,在不 启动计算机网络内任意网络软件的前提下,可以打开接入 互联网的计算机 139 端口,进行端口扫描。同时通过“Win/ CTRL+ALT+DEL”,进入任务管理器,了解系统正在运行的全 部进程,清查可能出现的木马程序,或者运用杀毒软件、专用木 马查杀软件、防火墙软件,判断计算机网络系统内是否存在已 知木马程序,以及时发现并处理特洛伊木马病毒。此外,在日 常计算机网络维护过程中,用户应避免执行来历不明确软件或 邮件附件,降低共享文件夹使用频率。同时,将资源管理器配 置为始终显示扩展名状态(如 cute-dog.avi.exe、table.xlsx.scr等),定期升级系统,全程运行反木马实时监控程序。
9.8.4钓鱼邮件防御
钓鱼邮件主要指利用伪装电子邮件骗取收信人口令、账 号等信息的邮件,主要用于非法支票套现,或者迫使收信人购 买产品与服务、获取银行信息等高价值数据等。如近年来一种 新型钓鱼邮件——WannaRen 大范围传播,将恶意代码伪装在 邮件附件中,给大量用户造成损失。为避免受骗,用户应主动 了解钓鱼邮件的识别手段。首先,看发件人地址,若为公务邮 件,发件人大多会应用工作邮箱,若发现对方使用的为个人邮 箱账号,或者油箱账号拼写怪异,应提高警惕。同时,部分钓 鱼邮件发件人经常伪造地址,如伪造系统管理员账号(如系统 管理员 admin-mi@163.com 等)、伪造本单元域名的邮箱账号 等。随后看发件日期,一般公务邮件接收邮件时间在工作时 间内,而钓鱼邮件为非工作时间,如凌晨两点钟。此外,部分 PPT、Excel、PDF、Word、RAR 文件也会被植入间谍程序、木 马程序,应避免点击。需要注意的是,部分垃圾邮件正文内“退 订”多为虚置,点击后极可能收到大量垃圾邮件或被植入恶意 代码。
9.8.5缓冲区溢出攻击防御
针对缓冲区溢出攻击,应考虑其为一个编程问题,可以通过修复被破坏程序防御缓冲区溢出攻击。需要注意的是,在程 序开放时,应仔细检查缓冲区溢出情况,避免数据溢出缓冲区。 同时针对非执行的缓冲区,可以限制被攻击程序的数据段地址 空间,以达到限制非执行的缓冲区执行被植入攻击程序输入的 缓冲攻击代码的目的。此外,定期对没有缓冲共溢出的攻击进 行数组边界检查,及时了解数组溢出与否,并限制全部数组读 写操作,从根源上降低缓冲区溢出攻击发生概率。
**9.9总结**
学习地过程是愉快的,也是痛苦的。痛苦的原因是,随着知识的不断积累,总是会忘记或者模糊掉过往的知识。总结的目的,是为了减少痛苦,增加成就感。本章,首先我介绍了什么是网络攻击技术,从当前最新的网络安全的形式做手,简要的分析;然后按照网络攻击的一般流程(即攻击的准备阶段、攻击的实施阶段和攻击的善后阶段)来展开详细的介绍。
攻击的准备阶段,有信息收集,网络隐身,端口扫描和漏洞扫描。这一部分在之前的版本中,包含属于侦查、扫描及漏洞分析,主要的区别在于网络隐身。
攻击的实施阶段,介绍了几种当前市面上,最流行的几种手段,有拒绝服务攻击DOS、DDOS,SQL注入攻击,CSRF攻击,序列化攻击,中间人攻击,恶意代码攻击以及metasploit工具,再加上设置后门,保持权限。这部分在先前的访问获取权限内容、保持权限的基础上,我增加了一些内容,并且更为详尽。缓冲区溢出漏洞,仅仅只是恶意代码攻击的一种手段。
攻击的善后阶段,这部分的内容跟之前是相同的,没有改动。
后来我在文章的末尾添加上一个防御策略,一方面是为了补全前面的攻击,另一方面,也是按照当前工商银行攻防实验室的渗透流程模型,姑且相当于收益扩大这一部分。
本文的内容,我参照了一下文章:
【1】 计算机网络攻击及防御技术研究,2020.11
【2】 计算机网络系统渗透测试技术,2020.10
【3】 计算机网络黑客与网络攻防技术探讨,2020.10
【4】 计算机网络的攻击技术,2020.10
【5】 计算机网络安全与实用技术浅析,2020.05
【6】 计算机网络信息安全技术研究,2020.12
【7】 北京大学恶意代码攻击技术课件。
【8】 安全客,看雪等若干文章。
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
veek | 80.00 | 0 | 2021-01-28 15:03:44 | 感谢分享~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.