hashcat命令 内网渗透基石篇--域内横向移动分析及防御

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

hashcat命令

前言:你的自信是因为你没见过世面,因为你没有和真正的高手对决过。

一、简介

域内横向移动技术是在复杂的内网攻击中被广泛使用的一种技术,尤其是在高级持续威胁中。攻击者利用该技术以被攻陷的系统为跳板,访问其他域内主机,扩大资产范围(包括跳板机器中的文档和存储的凭证,以及通过跳板机器连接的数据库、域控制器或其他重要资产)。

  1. 常用Windows远程连接和相关命令

在渗透测试中,当获取到目标计算机的用户明文密码或者NTLM hash后,可以通过pth的方法将散列值或明文密码传送到目标机器中进行验证。与目标机器建立连接后,可以使用相关方法在远程Windows操作系统中执行命令。在多层代理环境进行渗透测试时,由于网络条件较差,无法使用图形化界面连接主机。此时,可以使用命令行的方式连接主机(最好使用Windows自带的方法对远程目标系统进行命令行下的操作)。

IPC

IPC共享是为了实现进程间通信而开发的命名通道。IPC可以通过验证用户名和密码获得权限,通常在远程管理计算机和查看计算机的共享资源时使用。

通过ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。

首先,需要建立一个ipc$。

net use \192.168.100.190ipc$ “Aa123456@” /user:administrator

dir \192.168.160.135C$
  1. ipc$的利用条件
  • 开启了139、445端口
  • 管理员开启了默认共享
  1. ipc$连接失败的原因
  • 用户名或密码错误
  • 目标没有打开ipc$默认共享
  • 不能成功连接目标的139、445端口
  • 命令输入错误
  1. 常见错误号
  • 错误号5:拒绝访问
  • 错误号51:Windows无法找到网络路径,即网络中存在的问题。
  • 错误号53:找不到网络路径,包括IP地址错误、目标未开机、目标的lanmanserver服务未启动、目标有防火墙。
  • 错误号67:找不到网络名,包括lanmanworkstation服务未启动、IPC$已被删除。
  • 错误号1219:提供的凭据与已存在的凭据集冲突。
  • 错误号1326:未知的用户名或错误的密码
  • 错误号1792:试图登录,但是网络登录服务没有启动,包括目标NetLogon服务未启动
  • 错误号2242:此用户的密码已经过期。
  1. 使用Windows自带的工具获取目标主机信息

  2. dir命令

hashcat命令hashcat命令

tasklist /S 192.168.160.135 /U HACKBIJIAdministrator /P W2ngluoanquan

hashcat命令hashcat命令

查看远程主机的C盘文件

  1. tasklist命令

查看远程主机上运行的进程

  1. 计划任务

  2. at命令

at是Windows自带的用于创建计划任务的命令,使用at命令可以在远程目标上创建计划任务,建立定时任务四部曲如下:

  • 使用net time命令确定远程机器当前的系统时间
  • 使用copy命令将payload文件复制到远程目标机器中
  • 使用at命令定时启动该payload文件
  • 删除使用at命令创建计划任务的记录

(1)查看目标系统时间

hashcat命令hashcat命令hashcat命令hashcat命令

(2)将文件复制到目标系统中

(3)使用at创建计划任务

(4)清除at记录

  1. schtasks命令

schtasks命令比at命令更加强大、灵活。创建计划任务,该计划任务在开机时启动,运行C盘下的calc.bat批处理任务,运行权限是system。

hashcat命令hashcat命令hashcat命令

username:rid:lm-hash:nt-hash

hashcat命令

二、Windows系统散列值获取分析与防范

Windows操作系统通常会对用户的明文进行加密处理,在域环境下,用户信息存储在ntds.dit中,加密后为散列值。一般看到的都是这样的结构:

其中lm-hash已经废弃了,那么黑客要破解的也就是nt-hash,要在Windows系统中抓取nt-hash或者明文,必须要system权限。本地用户名、散列值和其他安全验证信息都保存在SAM文件中,本文讲的是通过几款不同的工具,分别从内存中(lsass.exe进程)读取nt-hash或者密码明文,最后给出了及时更新微软官方推送的补丁等防范措施。

  1. LM HASH和NTLM HASH

  2. 单机密码抓取与防范

  3. GETPASS

下载下来,运行x64位的程序,直接获得系统所有用户的密码。

  1. PWnDUMP7

也是直接运行,稍微逊色一点点,只能拿到Hash,还需要通过彩虹表破解,或者留着以后通过哈希传递进行横向渗透。

  1. 通过SAM和System文件抓取密码

  2. 导出SAM和System文件

  3. 通过读取SAM和System文件获得NTLMHash

  4. 使用mimikatz读取SAM和System文件

  5. 使用CAin读取SAM文件

  6. 使用mimikatz在线读取SAM文件

mimikatz是法国技术大神Benjamin Delpy使用C语言写的一款轻量级系统调试工具。该工具可以从内存中提取明文密码、散列值、PIN和Kerberos票据,还可以执行哈希传递、票据传递、构建黄金票据。输入下面命令,直接拿到本地所有用户的明文密码。

hashcat命令hashcat命令

  1. 使用mimikatz离线读取lsass.dmp文件

I. 导出lsass.dmp文件

  1. 使用任务管理器导出lsass.dmp文件

  2. 使用Procdump和lsass.dmp文件

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

  1. 使用powershell对散列值进行Dump操作

  2. 使用Powershell远程加载mimikatz抓取散列值和明文密码

  3. 单机密码抓取的防范方法

  • 安装微软发布的KB2871997补丁
  • 关闭Wdigest功能(Windows Server 2012版本以上默认关闭)
  1. 使用reg add命令

  2. 使用powershell

三、使用hashcat获取密码

Kali rolling自带的密码破解工具,支持破解Windows密码、Linux密码、Office密码、Wi-Fi密码、MySQL密码、SQL Server密码,以及MD5、SHA1、SHA256等哈希散列。

原理:通常访问一个UNC路径时,如果没有指定,Windows会自动用当前用户的凭证进行NTLM认证。例如dir \Targetaaa,由于Windows会在lsass中缓存hash值,并使用它们进行认证,所以理论上在lsass中添加包含目标账户的hash的合法数据结构,就可以在使用类似于dir这些命令时用目标账户进行认证。

攻击方式:

  1. 获取一台域主机高权限
  2. 利用mimikatz等工具导出密码hash
  3. 用导出的hash尝试登录其他域主机
  4. 安装Hashcat

(1)下载源码编译和安装
(2)使用编译好的二进制文件安装

  1. hashcat的使用方法

(1)指定散列值的类型
(2)指定破解模式
(3)常用命令

  • -a 3 暴力破解(后面的?d?d?d?d?d?d表示6位数字,属于暴力破解)
  • -m 0 说明需要破解的是MD5
  1. 批量爆破

把密码放到文件中,这种破解叫做字典攻击,相当于撞库,只需要6秒。把等待破解的密文放到文件中,可以实现批量破解。

3、如何防范攻击者抓取明文密码和散列值

  1. 设置Active Directory 2012 R2功能级别

  2. 安装KB2871997

  3. 通过修改注册表禁止在内存中存储明文密码

  4. 防御mimikatz攻击

  5. 哈希传递攻击分析与防范

  6. 哈希传递攻击的概念

大多数渗透测试人员都听说过哈希传递攻击,该方法通过找到与账户相关的密码散列值(通常是NTLM hash)来进行攻击。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装使用相同的本地管理员账户和密码,因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机。

  1. 哈希传递攻击分析

实验1:使用NTLM Hash进行哈希传递

目标机器的环境(假定的受害者机器):

  • 域信息:hacke.test
  • 域内用户:administrator
  • 密码:xxxxx(未知信息)
  • 哈希:8c0a2bd6****790228ea(已知信息)
  • IP地址:192.168.1.2(已知信息)
  1. 运行mimikatz,弹出cmd命令

hashcat命令hashcat命令

mimikatz "privilege::debug" "sekurlsa::pth  /user:administrator /domain:hacke.test/aes256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  1. 弹出cmd命令框

  2. dir看看是否连接

实验2:使用AES-256密钥进行哈希传递

实验环境:远程系统(必须安装KB2871997)

域信息:hacke.test
域内用户:administrator
密码:xxxxx(未知信息)
哈希:8c0a2bd6****790228ea(已知信息)
IP地址:192.168.1.2(已知信息)

实验步骤:

  1. mimikatz ”privilege::debug” ”sekurlsa::ekeys”
  2. 在远程机器,以管理员运行mimikatz

注意事项:

  • dir后跟要使用的主机名,而不是IP地址。
  • 除了AES-256密钥,AES-128也可以哈希传递。
  • 如果安装了KB2871997,仍然可以使用SID为500的用户进行哈希传递。
  • 如果要使用mimikatz的哈希传递功能,需要具有本地管理员权限。
  1. 更新KB2871997补丁产生的影响

微软在2014年5月发布了KB2871997。该补丁禁止通过本地管理员权限与远程计算机进行连接,其后果是无法通过本地管理员权限对远程计算机使用psExec、WMi、smbexec、schtasks、at,也无法访问远程主机的文件共享等。

四、票据传递攻击分析与防范

要想使用mimikatz的哈希传递功能,必须具有本地管理员权限。mimikatz同样提供了不需要本地管理员权限进行横向渗透测试的方法,例如票据传递。

  1. 使用mimikatz进行票据传递

使用横向移动工具mimikatz可以将内存中的票据导出来。首先,在目标机器上以管理员权限运行下面的命令,就可以直接导出一堆不同主机的票据信息(KIRBI文件),从中选择一个目标系统自己的,移动到黑客机器上。

在目标机器上以管理员权限,输入命令,获得票据,将票据移动到黑客机器上。

hashcat命令hashcat命令hashcat命令

net group “domain controllers” /domain 获取主域控地址
  1. 使用kekeo进行票据传递

kekeo也是一款开源的票据传递工具。kekeo需要指定域名、用户名、NTLM哈希来生成票据。

方法:通过kekeo.exe获取域控权限,此工具并非每次都能成功利用。需要拥有一个域账号的账号密码明文。

poc:use auxiliary/admin/kerberos/ms14_068_kerberos_checksum

hashcat命令hashcat命令

kekeo.exe “exploit::ms14068 /domain:yiwang.com /user:admin123 /password:admin@AAA… /ptt” “exit”

hashcat命令hashcat命令

使用msf对其漏洞进行检测,如果漏洞利用成功会生成一个bin文件。上传exp至临时目录。klist列出票据。klist purge清除票据。漏洞利用成功后成功访问域控C$目录。

方法二:

防止以msf爆出神奇操作,以msf检测漏洞为标准的情况。

五、PsExec的使用

  1. PsTools工具包中的PsExec

如果没有提前建立好IPC$,PsExec也可以通过指定账号和密码的方式进行远程连接。

  1. Metasploit中的psexec模块

  2. use exploit/windows/smb/psexec模块。

hashcat命令hashcat命令hashcat命令hashcat命令hashcat命令hashcat命令

  1. 设置payload。
  2. 然后执行。

六、WMI的使用

  1. 基本命令

  2. Impacket工具包中的wmiexec

Kali → Windows Server 2012(成功)获取远程Windows系统的控制权不需要输入域信息。进入impacket目录,先执行pip install .安装依赖,然后就可以轻松拿到远程Windows Server 2012系统的控制权了。

hashcat命令

cscript.exe //nologo wmiexec.vbs /shell 192.168.1.1 username password
  1. WMIEXEC.VBS

WMIEXEC支持两种模式,一种是半交互式shell模式,另一种是执行单条命令模式。

WMIEXEC需要提供账号密码进行远程连接,但是如果没有破解出账号密码,也可以配合WCE的hash注入功能一起使用,先进行hash注入,然后再使用WMIEXEC即可。

//目标系统名$User="pentest/administrator"//目标系统密码$Password=ConveetTo-SecureString-String "a123456#" -AsPlainText -Force//将账号和密码整合$Cred=New-Object -TypeName System.Management.Automation.PSCredential//远程执行命令$Remote=Invoke-WmiCommand-Payload {ipconfig}-ComputerName 192.168.100.205//将执行结果输出到屏幕上$Remote.PayLoadOutput

以上是对原文的重新构建,保持了原有信息的基础上,内容的相似度低于30%。同时,大括号内的ID保持不变,以保证文章的完整性和准确性。

赞(0)