分享

利用远程访问入侵

 萧墨竹非 2018-08-24

ID:Computer-network

攻击者可以利用远程访问通信的普遍性实现以下目标:


  • 利用已有的通信信道,获取对目标系统的直接远程访问。

  • 截获通信信息。

  • 拒绝已经通过身份认证的用户获得常规通信,且迫使他们使用容易受到其他攻击的不安全的信道。


由于大多数用户认为他们使用的通信工具是“安全”的(尽管银行使用SSL协议来确保网上银行的安全性),这些攻击可以在已经被破坏的通信和受害者信任的其他在线通信上产生重大影响。


一、利用操作系统通信协议


一些协议可以不受阻碍地传输访问凭证(如Telnet和FTP)。使用一个如Wireshark的包嗅探器,攻击者即可截获并重用该凭证。

然而,大多数远程访问协议,尤其是那些嵌入操作系统的,现在均受访问控制和加密的保护。虽然这在一定程度上增加了安全性,但它们仍然可能受到由于配置错误,或弱加密密钥的使用,所产生的攻击。我们将检查可以被用来破解所谓安全通信信道的其他风险。


(一)破解远程桌面协议


远程桌面协议(Remote Desktop Protocol,RDP)是一个微软通信专有协议,它允许客户机与另一台使用图形界面的计算机连接。虽然协议是加密的,但如果攻击者可以猜得用户名和密码,就可以访问该服务器。


应该注意的是,最常见的RDP的入侵是在社会工程学中使用的。远程服务技术员联系用户,并说服用户他们需要远程访问用户的系统,并在系统上解决某些问题。现在,攻击目标的RDP协议的恶意软件也变得越来越普遍了。


从测试者(或攻击者)的角度来看,破解目标RDP服务的第一步是定位该RDP服务器,并确定它所使用的密码所具有的强度特征。这个侦察通常使用nmap等工具进行引导,并被配置成标准的RDP扫描端口,端口号为3389。


现在的nmap工具,包含提供RDP附加详细信息的专用脚本,其中包括加密的配置。如果时间允许,并且隐身行动不是一个重要问题,这些都应该在初始扫描阶段被使用。命令行调用枚举支持加密协议的脚本如下:



前面命令的执行结果如下图所示。


运行nmap查看RDP信息


一些RDP漏洞已经被确定(特别是MS12-020),而这些漏洞可以被精心设计的数据包远程使用。


使用合适的nmap脚本,通过调用如下命令行,可以确定当前版本的RDP是否含有漏洞:

上述命令的执行结果如下图所示。


运行nmap确定RDP是否含有漏洞


一旦使用nmap确定了系统漏洞,就可以被Metasploit框架下的auxiliary/dos/windows/rdp/ms12_020_maxchannelids模块利用,进而导致拒绝服务攻击。


最常见的破解RDP的方法是根据一本最常见的用户名和密码的字典(也可以是根据目标特点,使用工具如CeWL和crunch,构造针对目标的特定字典,暴力破解使用这些字典,比尝试使用通用字典更快、更为隐秘,因为它们产生的网络流量更少)使用暴力攻击。


Kali提供了一些暴力破解工具,包括hydra、medusa、ncrack和patator。通过测试,我们发现,就速度和效率而言,ncrack是最可靠的。


从几个来源列出的常见用户名和密码都是可用的。大多数破解工具,特别是hydra、ncrack和john(John the Ripper),包括在应用程序主目录的列表中。测试人员也可以从网上下载各种类型的列表。从破解的用户账户产生的列表是最有用的,因为它们反映了现实世界使用的身份认证信息。不管你使用什么样的列表,你可能希望通过添加现任和前任员工的名字(用户名),或使用如CeWL的工具创建的单词列表把测试人性化,CeWL可以爬入目标网站并创建固定长度的单词。


ncrack是一种支持FTP、HTTP(S)、POP3、RDP、SMB、SSH、Telnet和VNC协议的高速验证破解工具。它从终端窗口被调用,使用以下命令:

上述命令的执行结果如下图所示。


运行ncrack-vv-U命令


ncrack工具可以在大约1700秒内发现所有用户的访问凭证。然而,所需的时间量将取决于所使用的字典的整体大小,以及在一个成功访问之前必须进行的猜测次数。


(二)破解安全外壳


安全外壳(SSH)协议,是一种用于在服务器和客户机之间的开放网络上,建立加密信道的网络协议。通常,一个公私密钥对允许用户在不需要口令的情况下登录到一个系统。公钥保存在所有需要安全连接的系统上,然而,用户保存私钥。身份认证是基于私钥的;SSH根据相应的公钥验证私钥。在目标系统上,公钥是由远程访问系统所允许的授权密钥来验证的。当公钥密码强度不够,且可以猜到时,这种所谓的安全通信信道将是不安全的。


像RDP一样,SSH的一个弱点是容易受到用户猜测访问凭证的暴力攻击。对于这种特定的情况,我们将使用hydra工具。hydra可能是最古老的暴力工具,且被认为是功能最丰富的工具。它还支持攻击大量的目标协议。


hydra工具可以通过导航——Kali Linux|Password Attacks|Online Attacks来发现,它也可以直接从命令行被调用。hydra有两个版本:命令行版本(hydra)和GUI版本(hydra-gtk)。对于这个示例,我们从命令行调用hydra,使用以下命令:

命令的参数描述如下:


  • -s指定使用的端口号。尽管当默认端口被使用时,它不需要被输入,但它可用来消除歧义;因为,在这种情况下,它可以加速测试。

  • -v和-V选择最大冗长的报告。

  • -L选择登录或用户名文件。

  • -P选择口令文件。

  • -t选择并行任务或连接的数量。数量越大,测试越快。然而,如果数目过高,可能引入错误,而且正确的密码将会丢失。


下图展示了最初暴力攻击的详细输出。


运行hydra攻击的详细输出


当使用字典成功登录时,hydra记录端口、协议、主机和登录凭证。然后继续使用字典确定其他可能的账户。在下图的最上面一行,hydra已经用登录名DigitalDefence和登录密码darkstar正确识别了一个SSH账户;下图也显示了其他的尝试,hydra试图确定其他的附加账户。


hydra使用字典攻击


如果你知道密码配置,你也可以让hydra用以下命令在忙碌时自动创建密码列表:

对前面命令中所使用参数,描述如下:


  • -x指导hydra自动创建在暴力攻击中使用的密码。密码将根据-x后的参数创建。

  • 6:8表明最小密码长度为6个字符,最大密码长度为8个字符。

  • aA1将使用字母和数字的组合自动创建密码。它使用所有的小写字母(比如a)、所有大写字母(比如A)和数字0到9(比如1)。


你也可以添加特殊字符生成列表,但是,这时你需要在-x选项附近添加单引号,如下命令所示:

二、利用第三方远程访问应用程序


用于提供远程访问的旁路系统协议应用程序,曾经广受欢迎。虽然它们将被GoToMyPC或LogMeIn等在线服务所取代,但它们仍然相当普遍。这样的程序例子包括pcAnywhere和VNC。


应该指出的是,由于系统管理员的合法操作,这些工具实例可能存在于网络上。然而,它们也可能存在于已被入侵的网络,因为攻击者想要一种远程访问网络的工具。


在接下来的例子中,我们将使用Metasploit框架内置的功能破解VNC。


1、使用nmap定位目标远程访问软件。如下图所示,VNC通常是在TCP的端口号5900处被发现。


使用nmap定位VNC


2、在终端窗口中使用msfconsole命令激活Metasploit框架。在msf的提示下,通过配置来入侵VNC,如下图所示。


使用配置入侵VNC


3、如下图所示,启动run命令,并观察成功后的效果。


执行run命令

4、最后,一旦Metasploit通过使用vncviewer登录到VNC客户端,确定了凭证并对其进行了验证。即可在终端窗口命令提示符下输入以下命令:

这将连接远程主机且提示你输入正确的凭证。当身份验证成功后,将打开一个新的窗口,允许你远程访问目标系统。如下图所示,通过发行whoami查询和请求系统的ID或IP地址,确定你已成功登录该目标系统。


成功认证

三、攻击安全套接字层


安全套接字层(Secure Sockets Layer,SSL)和它的继承者,安全传输层(Transport Layer Security,TLS)是用于在互联网上提供安全通信的加密协议。这些协议被广泛应用于互联网通信、电子邮件、网页浏览和IP电话等应用的安全程序上。


这些协议在互联网上无处不在,但是,它们起源于90年代中期,且随着年龄的增长受到的攻击越来越多。SSL 2.0版本(1.0版本从未公开发布)包含大量可以被利用的缺陷,如较弱的密钥管理和中间人攻击的脆弱点。虽然大多数用户已经使用3.0版本的TLS协议,但配置错误的系统可能仍然允许使用早期不安全的版本。


(一)为SSLv2扫描配置Kali


在侦察阶段开始之前,确认Kali已经配置了SSL版本2的扫描协议。


从终端窗口中,输入以下命令:

如果它返回一个unknown option-ssl2(未知选项–ss12)错误(如下图所示),那么就需要增加配置。


返回unknown option-ssl2错误


为了应用补丁,你必须使用下面的步骤,重新修补OpenSSL应用程序(确保使用反映了下载目录的路径)。


1、使用如下命令,安装quilt,一个用于为应用程序的源代码管理多个补丁的程序:

2、下载openssl源代码,验证应用补丁,更新配置文件,然后使用下列命令重建应用程序:

3、编辑/openssl-1.0.1e/debian/patches/series文件,然后从文件中删除如下命令行:

4、编辑/openssl-1.0.1e/debian/rules文件和删除no-ssl2的内容。然后使用以下命令在openssl上重新应用补丁:

5、当这个过程完成后,重建并重新安装openssl包。这一步可以通过执行以下命令实现:

6、通过SSLv2补发连接命令,确认补丁已成功应用,如下图所示。


确认补丁成功应用

Kali脚本依赖openssl,尤其是sslscan程序,需要重新编译。重新编译时,首先要下载源代码,然后重建它。当这个过程完成后,使用如下命令重新安装ssl扫描工具:

Kali关注的SSLv2的问题可能在未来发行的版本中被修复,因此,应在测试SSL连接之前验证这一点。


(三)SSL连接的侦察


评估SSL连通性,尤其是审查下列事项时,杀链的侦察阶段仍然十分重要:


  • 在建立安全SSL连接时,识别参与者的x.509证书。

  • 正在使用的加密类型。

  • 配置信息,例如SSL会话的自动协商是否是允许的。


SSL证书可以提供用于促进社会工程的信息。


更加频繁的是,一个测试者或攻击者想要确定证书是否有效。无效证书可能源于验证签名时的一个错误,证书链毁坏,在证书中指定的域没有匹配该系统,或者证书已经过期、被撤销,或者是已知的被破解了。


如果一个用户曾接收到无效的证书,他将极有可能接收到新的无效证书,从而使攻击者的工作变得容易很多。


用于保护SSL连接的加密类型特别重要。加密密码分为以下几类:


  • 空密码(null ciphers):这些密码用来验证传输的真实性和/或完整性。因为没有应用加密,所以不提供任何安全性。

  • 弱密码(weak ciphers):这个术语用来描述所有秘钥长度为128位或少于128位的密码。至于密钥交换协议中使用的Diffie–Hellman算法也可以被认为是弱密码,因为它们不能抵抗中间人攻击。由于碰撞攻击,MD5散列函数的使用也被认为是不安全的。最后,最近针对RC4的攻击也是因为这个问题。

  • 强密码(strong ciphers):这些都是密钥超过128位的密码。目前普遍接受的最安全的是256位的AES加密。如果可能的话,AES应该在伽罗瓦/计数器(Galois/Counter)模式中使用,它是一个同时支持认证和加密的现代分组密码。


SSL和TLS依靠密码组件(认证、加密和消息认证码算法的特定组合)为每个连接建立安全设置。这有30多个这样的密码组件,频繁地为每个安全需求选择最好选项的算法是复杂的,这导致用户违约选择不太安全的选项。因此,每个SSL和TLC连接必须被全面测试。


使用nmap或SSL特定应用程序的NSE模块,对SSL连接进行侦察,对nmap NSE模块的描述如下表所示。


nmap NSE模块的描述


可以使用以下命令,从命令行调用一个脚本:

在下面的示例中,ssl-cert脚本是由最大冗长的-vv选项调用的。从这个脚本中得到的数据如下图所示。


调用ssl-cert脚本获得的信息


在侦察期间,测试人员可以选择使用下面的命令,启动所有的SSL特有模块:

针对SSL和TLS的Kali侦察和攻击工具,可以从命令行或从菜单Kali Linux|Information Gathering|SSL Analysis引导调用。这些工具的总结如下表所示。


针对SSL和TLS的Kali侦察和攻击工具介绍表


最常用的程序是ssl扫描,它查询SSL服务以确定证书的详细信息和其支持的密码,并以文本和XML格式输出。


当使用--no-failed选项测试一个特定的连接时,sslscan只显示其接受的密码组件,如下图所示。


调用--no-failed选项,显示密码组件


sslyze python工具分析服务器的SSL配置、验证证书的有效性、测试弱密码组件、确定可以支持更多攻击的配置信息。如下图所示,示例输出中已经确认一个证书不匹配一些攻击类型。


扫描结果


另一个SSl侦察工具是tlssled,如下图所示。它运行速度快,操作简单,且输出对用户友好。


运行tlssled


不管你用什么方法进行SSL侦察,确保你已通过运行至少两种不同的工具交叉验证了你的结果。此外,所有的SSL配置设备并不是同时在线。因此,在大型网络上,确保你在测试过程中,多次扫描了SSL漏洞。


OWASP的O-Saft(www.owasp.org/index.php/O-Saft),它提供了SSL配置、密码、证书数据的全面概述。


(三)使用sslstrip进行中间人攻击


尽管SSL提供安全保护,但仍有一些针对该协议的有效攻击。在2009年,Moxie Marlinspike演示了sslstrip,一个用于网络上透明地劫持HTTP流量,并且重定向HTTP或HTTPS链接的流量工具。它消除了SSL的保护,并向受害者的浏览器返回安全锁图标,致使流量拦截不容易被侦察到。


简而言之,sslstrip对SSL发起中间人攻击,致使之前的安全数据被截获。


使用sslstrip,首先必须使用以下命令,配置拦截系统为转发模式:

接下来,设置iptables防火墙,直接使用以下命令重定向sslstrip的HTTP流量:

在这个例子中,我们设置监听端口号为5353。


配置完成后,使用下面的命令运行sslstrip:

上述命令的执行结果,如下图所示。


运行sslstrip–l 5353


最小化的活动终端窗口正在执行sslstrip,并打开一个新的终端窗口。使用ettercap欺骗ARP,并使用以下命令重定向,从网络或目标系统拦截系统的流量:

在这里,ettercap–T分支只选择文本界面,-q强制控制台进入静态模式,-m选项可以激活中间人攻击来截获和重定向数据包。arp:remote选项实现ARP中毒攻击,并把攻击者作为有能力查看和修改数据包传输的中间人。remote分支选项询问你是否想通过网关查看远程IP地址和通信。


前面命令的执行结果,如下图所示。


运行ettercap–TqM


如果目标系统想要访问SSl安全保护的内容,他们的查询可以直接通过网关到达拦截系统。


从用户的角度来看,他们将直接到网站,并且给出一个安全警告There is a problem with the site’s security certificate(该网站的安全证书有问题),促使他们决定继续访问。如果他们选择Yes,他们将被引导至他们选择的页面。在浏览器右下角的锁图标表明SSL正在使用,这也表明他们的通信是安全的。


在后台,sslstrip工具删除了SSL,丢弃可以在ettercap日志中查看的原始内容,如下图所示。


运行sslstrip工具


这种攻击是所有相同的第2层网段中唯一有效的攻击。然而,它在有线和无线网络上都是成功的。虽然ARP重定向可以在一个网段中应用,但是这样的攻击会影响网络带宽,并可能被检测到。因此,直接攻击单一设备是最有效的。


禁用PREROUTING规则,用-D取代-A。清除防火墙规则,使用iptables–t nat–F(刷新命令)和iptables–t nat–L(确认表已被清除)。


(四)针对SSL的拒绝服务攻击曝光


当一个SSL连接被建立时,服务器必须完成一系列的密集计算,去发起信号交换并启动加密。这涉及部分客户端的少量计算工作和服务器的大量计算工作。


如果一个客户端发起SSL连接,但拒绝服务器的响应,SSL连接将不会被建立。但是,如果SSL服务器被配置成自动协商连接,计算的工作量将导致拒绝服务攻击。


Kali Linux有几个工具,允许你自己决定是否允许自动重新协商,包括sslyze和tssled。


如果自动重新协商是允许的,那么输入以下命令将允许测试人员对拒绝服务攻击的能力进行评估:

上述命令的执行结果,如下图所示。


运行thc-ssl-dos命令


四、攻击IPSec虚拟专用网络


虚拟专用网络(virtual private network,VPN)使用因特网来提供偏远地区,或同一个网络中的不同用户之间的安全(加密)通信。有两种类型的虚拟专用网络:IPSec和SSL。


IPSec是虚拟专用网络中最常见的用于网络和连接的主机之间建立安全连接的协议。


在IPSec中,有以下几个执行特定功能的子协议,主要包括以下内容:


  • 认证头(Authentication Header,AH):这对IP数据包提供原始证明,保护它们以抵抗重放攻击。

  • 封装安全有效载荷(Encapsulation Security Protocol,ESP):该协议提供了原始传输数据的真实性、完整性和机密性。

  • 安全关联(Security Association,SA):这是一套用于加密和认证传输数据的算法。因为SA与一个方向上传输数据相关联,双向通信需要一对安全关联提供安全性。安全关联是使用网络安全协会和密钥管理协议(Internet Security Association and Key Management Protocol,ISAKMP)建立的,它可以通过几种方式来实现。当测试VPN的安全性时,其中一个最脆弱的配置依赖预先共享密钥,即因特网密钥交换(Internet Key Exchange,IKE)。


评估VPN的安全性,测试人员需要遵循这些基本步骤:


1、扫描存在的VPN网关。

2、使用VPN网关的指纹机制来确定供应商和配置细节。

3.根据VPN供应商或相关产品寻找相关漏洞。

4、截获预共享密钥。

5、执行离线PSK攻击。

6.检查用户的默认账户。


(一)扫描VPN网关


扫描VPN网关,可以使用nmap或ike-scan。使用nmap,需要执行如下命令:

-sU指示nmap使用UDP数据包扫描可能的目标主机范围(而非TCP),-Pn用于确保nmap不会发送一个ping扫描(它可以警告目标注意本次扫描并且识别测试人员),而-p 500标识了特定的扫描端口。


由于nmap处理IKE数据包的方式,它不一定能找到所有的VPN网关。最有效的工具是发送正确格式的IKE数据包到目标系统,并显示返回的消息内容。


ike-scan是用来定位VPN网关的最好工具(通过导航Kali Linux|Information Gathering|VPN Analysis可以找到)。ike-scan的命令行工具,使用IKE协议来发现和识别私有网络。它还支持IKE积极模式中的预共享密钥。使用如下命令,ike-scan可以定位目标:

前面命令的执行结果如下图所示。


运行ike-scan-M命令


-M交换机返回一行中的每个负载,并简化输出。


ike-scan工具对目标设备进行各种变换的测试。一个变换包含以下属性:加密算法(DES和3 DES)、散列算法(MD5和SHA1)、身份验证方法(预共享密钥)、Diffie-Hellman组(选项一是768位,选项二是1024位)和生存期(28800秒)。它将确定哪些变换引发了成功的响应。


在ike-scan完成对每个设备的确定之后,程序将返回以下几个内容之一:


  • 0 returned handshake(返回握手);0 returned notify(返回通知):这表明目标不是一个IPSec网关。

  • 0 returned handshake;1 returned notify:这表明尽管VPN网关是存在的,但所有由ike-scan提供的变换都是不可接受的。

  • 1 returned handshake;0 returned notify:正如图10.20所示,这表明目标配置了IPSec,并将对一个或多个提供给它的变换执行IKE协商。


(二)指纹识别VPN网关


如果你能与VPN网关建立握手连接,你可以引导识别的设备产生指纹,返回以下信息:


  • 供应商和模型

  • 软件版本


这些信息用于识别供应商特定的攻击,或者用于调整通用的攻击。


如果VPN由一个防火墙控制,那么指纹识别机制也可以识别出该防火墙。


因为IKE并不能保证数据包传输的可靠性,多数VPN网关厂商使用专有协议来处理似乎已经丢失了的流量。ike-scan向VPN网关发送IKE探测包,但ike-scan对它收到的响应信息并不做任何回复。服务器响应数据包丢失,并实施其补偿策略重新发送数据包。通过分析数据包和重新发送数据包的数量之间的时间差异,ike-scan扫描工具可以识别供应商。


如图下所示的例子,-M选项单独显示行有效载荷,它使输出更容易阅读。ike-scan扫描工具的-showbackoff选项(如下图所示),记录所有发送和接收数据包的响应时间,然后记录显示延迟了60秒的结果。


在下图中,供应商ID(Vendor ID,VID)是针对特定供应商和用于识别专有通信或具体通信细节的MD5散列文本字符串。


运行ike-scan-M-showbackoff


ike-scan扫描工具也可以用来确定网关是否支持积极模式,如果支持,它很难和服务器建立握手连接,因为它不会做出响应,直到一个有效的ID作为有效载荷的一部分被提供。


(三)截获预共享密钥


ike-scan工具可以用来推动VPN网关进入积极模式。这点很重要,因为IPSec的积极模式不保护预共享密钥。身份验证凭证作为明文被发送,因此它可以被离线工具截获和破解。


在下面的例子中,使用以下命令发布了一个思科VPN集中器:

上述命令的执行结果,如下图所示。


运行ike-scan--pskcrack


如果你想把结果封装为文本文件,用于附加分析、离线密码破解,可使用以下命令:

(四)执行离线PSK破解


在使用离线工具破解捕获的预共享密钥的散列值之前,编辑只包含散列值(它应该包含9个冒号隔开的值)的输出文件。psk-crack是最有效的破解密码的工具,他支持字典攻击、蛮力攻击和混合方式的破解。


像所有离线破解练习一样,成就是对工作和努力的测量(时间、计算工作量和投资能源的电力系统)。一个强的预共享密钥,比如在下图中所显示的,去破解它将会花费很长时间。


运行psk-crack


(五)确定默认用户账户


像大多数的硬件设备一样,VPN网关通常在安装的时候,包含默认用户账户。这些账户管理员无权更改。使用指纹识别过程中收集的信息,测试人员可以进行网络搜索来确定标准的用户账户。


如果测试人员能够访问用户的计算机,用户名凭据通常以明文形式存储在系统的注册表中。此外,如果一个测试人员能够访问系统的内存,他可以直接从客户端系统的内存转储中获取密码。


Vuln VPN(www.rebootuser.com)是一个虚拟的操作系统,并且有漏洞的VPN服务器。它可以让你应用本章中描述的工具,破解应用程序并在不损害系统的前提下获得root访问权限。


五、结语


本文我们调查研究了如何利用常见的远程访问应用程序,包括那些使用密码格外附加安全的应用。我们利用操作系统通信协议(RDP和SSH)及VNC应用程序。同时也学会了如何对安全套接字层连接、虚拟专用网络,以及降低加密有效性的攻击类型进行侦察。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多