基于Python的网络黑客攻击技术分析研究与防范策略
2020-08-29贺军忠
贺军忠
(陇南师范高等专科学校电商学院,甘肃 成县 742500)
0 引言
进行黑客攻击有三个基本条件必须具备:第一,熟悉攻击相关背景知识,对编程语言语法和结构,操作系统,计算机网络,计算机体系结构和其他相关原理理解与掌握;第二,论语云:“工欲善其事,必先利其器”.精通各种黑客工具是黑客必备的利器,查找系统漏洞并实施攻击是一项复杂且重复的任务.为便于黑客易于理解复杂的系统结构,必须精通且灵活使用各种黑客工具.第三,必须掌握多种编程语言,精通其中某一种编程语言,无论黑客工具多么强大,都必须编写适合自己使用的工具,以进行高难度的黑客攻击.
1 Python黑客攻击的优点
Python语言被称为“敏捷编程语言”,它是一种通用的高级编程语言,由于其具有易学易用、开发速度快、扩展性好、功能强大等优点,常常被黑客们的所青睐.首先,Python支持功能强大的黑客攻击模块,其拥有用于支持黑客攻击的丰富多样的库,比如pydbg、scapy、salmap、httplib等.目前,这些库被广泛应用于各种黑客攻击.其次,Python能够访问各种APl,Python提供了用于黑客可以访问的Windows、Os X、Linux、Solaris、FreeBSD、OpenBSD等系统的ctypes库,黑客借助它能链接以上系统提供的DLL与共享库.第三,大多黑客攻击工具为Python提供了APl,像Metasploit、sqlmap、Nmap等黑客工具都为Python提供了扩展接口[1].黑客们通过使用Python,可以将Metasploit、sqlmap、Nmap等工具改造得更加强大.第四,Python易学易用,这也是Python被好多黑客,尤其是新手所青睐的最重要一点,这对黑客攻击而言是个巨大的优势.据中国企业数据治理联盟数据空间统计分析,目前有9大编程语言是黑客最喜欢和青睐的语言,并对此做了详细分析排名,其中Python仅次于R语言排名第二.该统计报告指出Python是行业人员正在转换发展的方向.过去两年里,很明显存在由R向Python转化的趋势,Donnell说:“Python用途宽广且灵活,所以人们蜂拥而至”[2].一般而言,掌握3-4种编程语言是成为一名黑客所必须的.但由于不同语言自身的特点和结构,难易程度也不一样,其中最具代表性的并在分析系统与程序行为的过程中起着核心作用有C语言、C++、Jave与汇编语言,必须掌握.但也正因如此,学习难度较大,要精通更是难上加难.不仅如此,黑客还需编写符合自身需要的黑客攻击工具,也就意味着要掌握另外一种编程语言,用于攻击工具.恰恰Python语言具有易学易用的特点,且拥有各种强大功能.通过以上数据可知Python语言是黑客攻击语言的不二之选.
2 黑客攻击的定义
Wikipedia中关于“黑客攻击”的定义如下:“针对电子电路、计算机软硬件、网络、网页等各种信息系统,借助某种手段、技术,使之执行信息系统设计者、管理者、运营者预料之外的动作行为,或者设法获取高于系统给定的权限,对相关信息进行查阅、复制、修改等的一系列行为[3].”
从Wikipedia中关于“黑客攻击”的定义可知,黑客攻击就是一种特定的行为,这种行为能导致意外现象发生.其大致可分为两个方面的攻击:一方面是技术方法(技术攻击),另一方面是社会工程方法(社会工程攻击).技术方面攻击也有好多种,如系统黑客攻击、web黑客攻击、网络黑客攻击等.本研究从网络黑客攻击技术方面的进行分析.
3 网络黑客攻击技术
TCP/IP本质上并不具有防范黑客攻击的强大能力,在连接设置与通信过程中有很多问题如图1所示.首先,客户端初次尝试连接服务器时,会向服务器发送SYN包,服务器将为连接分配缓冲资源.若客户端不断向服务器发送SYN包,则服务器就会不断分配通信缓冲,当缓冲全部耗尽后,网络就进入瘫痪状态.其次,正常的通信连接结束后,黑客可以伪装成客户机轻松拦截通信会话.一般使用TCP头中的序列号对通信对方进行认证,第三方可以轻松得到该序列号,并伪装相应客户机.第三,IP头中的源IP信息很容易伪造.将源IP伪造为攻击方系统的IP而非客户机PC的IP,并向服务器发送SYN包,服务器就会将ACK包发送给攻击方系统,从而实现DoS攻击.
图1 网络黑客攻击过程
以TCP/IP协议为攻击对象的技术非常多,因此,人们开发了多种防御设备.随着IPv6的出现,网络安全问题得到了明显改善,但由于IPv6目前还没有普及,IPv4还占主导地位,就算使用了IPv6,但其网络中仍然运行着多种协议[4].所以网络黑客攻击技术也在不断升级与进化.
3.1 端口扫描
Python提供了socket模块,使用它可以扫描端口.IP是识别服务器的逻辑地址.端口是逻辑单位,它使得多个应用程序可以共享一个IP地址.IP是IP协议中的识别符,而端口是TCP/UDP协议中的识别符.为了对外提供网络服务,防火墙或服务器会主动对外开放一些端口,其中最具代表性的端口为80与443,分别用于对外提供HTTP与HTTPS服务.此外还开放了一些端口,以方便管理,其中最具代表性的是21号与22号端口,它们分别提供FTP与Telnet服务,如图2.像这样,为了对外提供服务而开放的这些端口成为黑客攻击的主要目标.
图2 端口扫描过程
端口扫描是指针对对外提供服务的服务器进行扫描,获取服务器对外开放的端口列表.虽然有多种端口扫描技术,但大致可以分为基于UDP的端口扫描与基于TCP的端口扫描.基于UDP的端口扫描通过UDP包扫描端口,而基于TCP的端口扫描则通过SYN、FIN等多种包扫描端口,探测相应端口是否开放[5].不同端口扫描技术具有不同性能与隐蔽性,要根据具体情况选用合适的技术.
3.2 包嗅探
基于以太网的同一网络环境(使用同一路由器)中,数据包的传送是其于MAC(Media Accwss Control)地址进行的.一台PC向另一台PC传送数据时,会将数据包广播到同网段的所有PC.所有接收到数据包的PC将自身MAC地址与数据包的目的MAC地址进行比较,若两者一致,则接收并处理,否则丢弃.借助包嗅探技术,PC会接收并处理所有数据包.这样,同一网络中传播的所有数据可尽收眼底,一目了然.然而要想创建包嗅探程序,需要以管理员权限安装Python GUl.原始套接字支持原样接收基本包功能,它不会应用协议过滤.创建原始套接字后,将其绑定到NIC,切换NIC模式.默认设置下,NIC只接收目的地址为自身的包,而将模式更改为Promiscuous后,所有进入NIC的包都会被接收.在Python中只需使用几行代码即可完成上述设置.即在IDLE图标上点击鼠标右键,在快捷菜单中选择“属性”,在IDLE属性窗口点击“兼容性”选项卡,在“设置”中点选“以管理员身份运行此程序”.这样,每次双击IDLE图标都会以管理员身份运行.
图3 包嗅探
3.3 会话劫持
会话劫持(Sesion Hijacking)攻击大致分为HTTP会话劫持与TCP会话劫持两类.前者指通过盗取保存服务认证信息的Cookie中的SessionID值进行黑客攻击,后者是指盗取TCP数据包信息.而刘新亮等研究的《针对SSL/TLS协议会话密钥的安全威胁与防御方法》分析了“客户端处理会话秘钥和SSL/TLS协议会话过程存在的漏洞与缺陷,研究了威胁原理的过程”[6].本研究以网络黑客攻击中常用的TCP会话劫持为中心进行分析.
TCP协议使用IP、端口、序列号三个要素对通信对方进行认证.TCP会话劫持中,先通过包嗅探获取认证信息,然后使用它在中间拦截客户机与服务器之间的通信.黑客暂时断开客户机与服务器之间的连接,将发送方IP修改为黑客PC的IP,重新与服务器的连接.在服务器看来,通信只是暂时发生了中断,然后再次成功连接,从而将黑客PC误认为客户机.客户机与黑客PC也采用类似方式设置连接,如图4.这样,客户机与服务器之间的所有通信都会经过黑客PC,黑客即可控制所有信息.
图4 TCP会话劫持
3.4 欺骗攻击
欺骗(Spoofing)攻击也是常见的网络黑客攻击技术.其大致可以对DNS、IP、ARP三种资源进行欺骗攻击.下面以具代表性的ARP欺骗进行分析.ARP欺骗攻击就是利用ARP协议的缺陷进行的一种非法攻击,攻击者常常把自己伪装成“中间人”,获取局域网内的所有报文信息[7].ARP协议用于根据IP地址获取MAC地址.PC内部有ARP缓存表,保存IP与MAC的对应信息.识别通信对方时,只要访问相应缓存表提取其MAC地址即可.若在ARP缓存表中查不到相应信息,则可以通过ARP协议获取指定IP地址对应的MAC地址.由于ARP协议在设计时未充分考虑安全问题,所以很容易受到攻击.只要使用ARPReply包即可轻松操作对方的ARP缓存表.ARP缓存表保存着通信对方的IP与MAC地址映射关系.例如黑客将不同的PC1与PC2对应的信息替换为自身PC的MAC地址后,所有通信都会经过黑客PC.
3.5 DoS攻击
拒绝服务攻击(DoS,Denial of Service)是网络中最常用的黑客攻击技术之一.我们知道TCP/IP协议本身在结构上存在多种安全隐患.通过修改SYN数据包的发送方地址,或者不断发送SYN数据包,将大量IP数据包分制为更小的单位进行传送等,即可使系统服务陷入瘫痪.DoS攻击指通过发送大量正常的数据包使系统服务瘫痪[8],DoS攻击原理如图5.为了防止受DoS攻击以至系统瘫痪,到目前出现了许多防范DoS攻击的设备,使用少数几台PC发动DoS攻击使攻击目标系统取务瘫痪基本不可能.为了解决并实现这一问题,黑客只能广泛散播病毒,将大量PC机变为僵尸PC(肉鸡),通过控制这些僵尸PC发送大量合法服务请求,以达到使目标主机服务瘫痪的目的,这种攻击称为“分有式拒绝服务攻击”(DDoS,Distributed Denial of Service).
图5 DoS攻击
DDoS攻击使用僵尸网络(Botnet).所谓僵尸网络是指借助网络广泛传播含有恶意代码的程序文件(僵尸程序),感染网络上的大量PC并将其变为僵尸PC,然后通过C&C(Command and Control Server,远程命令和控制服务器)服务器控制这些僵尸PC,最后组成庞大的网络.这些恶意代码是通过电子邮件、公告栏、木马等多种方式进行传播的,而对此进行实际防范并非易事.目前,通过僵尸网络发动DDoS攻击仍然是非常有用的黑客攻击手段.而且相比传统的DDoS攻击,从新出现的DDoS攻击样本来看,攻击效率越来越高,攻击手段越来越复杂[9].DDoS攻击原理如图6所示.
图6 DDoS攻击
4 网络黑客攻击防范策略
4.1 防御扫描器入侵
Python提供了多种模块,用于对网络进行黑客攻击,其中最具代表性的是capy与pcapy.scapy是功能强大的网络黑客攻击工具,用途广泛,不仅可以用于端口扫描,还可以用于数据包嗅探等.但随着Nmap、Wireshark、Metasploit等强大工具的出现,对Python黑客攻击模块的升级中止了.这些模块不仅安装困难,而且找到适合所用环境的模块也并非易事.针对Nmap与Wireshark,Pyrthon提供了多种接口,支持在应用程序中使用多种方法进行黑客攻击.安装类似ProtectX工具实现扫描的反击与追踪.ProtectX是一款专门为防护Python提供的Python Nmap模块端口扫描,并在在用户连接网络时保护计算机的工具.可以同时监视20个端口,还可以帮助追踪攻击者的来源.一旦有人尝试入侵连接到用户的计算机,即可发出声音警告并将入侵者的IP地址记录下来,可以有效防止黑客入侵.当然有了ProtectX的保护,对于一般的扫描攻击,大家就可以不用担心了.不过仅仅依靠类似这样的工具,还远远谈不上高枕无忧,还需要提前做好防御扫描入侵的准备,如对注册表的修改,禁止匿名用户对IPC$的访问等.
4.2 时时进行网络监控
用于包嗅探的嗅探器是一把双刃剑,如果在网络黑客攻击者的手里,嗅探器能够捕获计算机用户因为疏忽而带来的漏洞,成为一个危险的网络间谋.但如果到了系统管理员的手里,则能帮助用户监控异常网络流量,从而更好地管理好网络.如“网络执法官”,其是一款局域网管理辅助软件,采用网络底层协议,能穿透各客户端防火墙对网络中的每一台主机(这里的主机是指各种计算机、交换机等配有IP的网络设备)进行监控,采用网卡号(MAC地址)识别用户等.“网络执法官”的主要功能是依据管理员为各主机限定的权限,实时监控整个局域网,自动对非法用户进行管理,可将非法用户与网络中某些主机或整个网络隔离,提高了网络安全性.
4.3 封杀木马防止密码破解
木马常用的伪装手段有:修改图标、冒充图片文件、文件捆绑、出错信息显示等,本研究以python提供的ftplib模块为例分析密码破击与防护措施,FTP服务后台设置中,通常不会检查密码输错次数.这样即可将sqlmap提供的wordlist.txt文件用作字典,不断尝试登录,从而猜出密码.python提供了ftplib模块,该模块提供了灵活使用FTP服务的多种功能.python为连接与登录FTP提供了简单的机制.许多需要在Java或C语言中处理的过程已经在ftplib模块内部得到处理,这样,用户只需使用import语句将ftplib模块导入应用程序,即可轻松使用FTP.若一个系统不限制密码输错次数,则很容易成为密码破解攻击的目标.为了阻止密码破解攻击,必须在系统环境设置或安装的安全设备(防火墙、IPS、IDS)中对此进行相应处理.尽量少用或者不用FTP,即使使用,也要利用Secure FTP等安全协议.对于其他类似密码破解攻击可以通过安装相应的“木马清除专家”等软件清除木马.同时要在类似“Windows进程管理器”中管理计算机进程.在进程管理器中,用户可以仔细查看正在运行的进程,如果有可疑进程,用户可查看该进程的详细属性.这样可以进一步的筛选出正在运行的木马进程,关闭该进程后,用专业工具进行查杀即可.
4.4 及时检测系统漏洞并升级
漏洞是硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统.可以使用Microsot基准安全分析器(Microsoft Baseline Security Analyzer,MBSA)等工具检测系统漏洞.其允许用户扫描一台或多台基于Windows的计算机,以发现常见的安全方面的配置错误.MBSA将扫描基于Windows的计算机并检查操作系统和已安装的其他组件(如IIS和SQL Server),以发现安全方面的配置错误,并及时通过推荐的安全更新进行修补.
4.5 DDoS攻击防范
DDos攻击的种类较多,本研究以基于Python的Slowloris攻击为例分析其防范措施,Web服务器的一般做法是先分析来自客户机的HTTP请求头,然后处理请求,并将处理结果发送给客户机,最后终止连接.为了提高资源利用效率,Web服务器会对最大客户连接数加以限制.Slowloris攻击使用服务器连接数达到最大值,从而无法处理新的要求,进而拒绝对外提供服务.要实施Slowloris攻击首先要安装Pyloris模块,并通过C:pyloris-3.2>python pyloris.py运行pyloris模块,进而通过其提供的UI实施攻击.由于Slowloris攻击不会留下任何痕迹在Web服务器日志上,所以很难对其进行监测.但仍然有一些简单的防御方法,通过升级Web服务器的硬件(CPU、内存)配置增加允许的最大连接数,或者限制来自同一IP的连接个数等.还可以安装Web防火墙等安全设备,拦截有错误的HTIP头.
为了防范DDoS攻击,国家机关与金融机构大力推行网络隔离,将业务网与互联网隔离.在网络隔离技术中,物理或逻辑网络被隔离,这样即使接入互联网的某台PC机感染了恶意代码,其影响范围也不会扩散到内网[10].
5 结束语
由于互联网是向所有人开放的,一个人只要愿意,都可以成为信息的提供者[8],同时也为网络黑客提供机会.黑客攻击技术不仅只有网络黑客攻击,还有系统黑客攻击、Web黑客攻击、应用程序黑客攻击、无线网络黑客攻击.除了技术方面的攻击,还有社会工程方法方面的攻击,本研究只是从网络黑客攻击方面做了分析与研究并提出了相应的防范措施.对于系统黑客攻击等其他方面的黑客攻击技术还有待于研究.