
Todos que tentaram iniciar uma máquina virtual na nuvem sabem bem que a porta RDP padrão, se deixada aberta, será quase imediatamente atacada por ondas de tentativas de ataque de senha de vários endereços IP ao redor do mundo.
Neste artigo, vou mostrar como em pode ser configurada uma resposta automática para tentativas de ataque de senha, adicionando uma nova regra no firewall. InTrust é para coletar, analisar e armazenar dados não estruturados, que já possui centenas de reações pré-configuradas para diversos tipos de ataque.
No Quest InTrust, é possível configurar ações de resposta quando uma regra é acionada. O agente coletor de logs do InTrust recebe uma notificação de uma tentativa de autenticação malsucedida em uma estação de trabalho ou servidor. Para configurar a adição de novos endereços IP ao firewall, é necessário copiar uma regra especializada de detecção de múltiplas falhas de autenticação e abrir a cópia para edição:

Os eventos nos logs do Windows utilizam o que são chamados de InsertionString. (isso representa um logon malsucedido) e verá que os campos de nosso interesse estão armazenados em InsertionString14 (Nome da Estação de Trabalho) e InsertionString20 (Endereço de Rede de Origem). Durante um ataque pela internet, o campo Nome da Estação de Trabalho estará, provavelmente, vazio, por isso é importante preencher esse espaço com o valor do Endereço de Rede de Origem.
É assim que o texto do evento 4625 se parece
Uma conta falhou ao tentar fazer logon.
Assunto:
ID de Segurança: S-1-5-21-1135140816-2109348461-2107143693-500
Nome da Conta: ALebovsky
Domínio da Conta: LOGISTICS
ID de Logon: 0x2a88a
Tipo de Logon: 2
Conta para a qual o logon falhou:
ID de Segurança: S-1-0-0
Nome da Conta: Paul
Domínio da Conta: LOGISTICS
Informações de Falha:
Razão da Falha: Conta bloqueada.
Status: 0xc0000234
Substatus: 0x0
Informações do Processo:
ID do Processo Chamador: 0x3f8
Nome do Processo Chamador: C:WindowsSystem32svchost.exe
Informações da Rede:
Nome da Estação de Trabalho: DCC1
Endereço de Rede de Origem: ::1
Porta de Origem: 0
Informações Detalhadas de Autenticação:
Processo de Logon: seclogo
Pacote de Autenticação: Negociate
Serviços Transmitidos: -
Nome do Pacote (apenas NTLM): -
Comprimento da Chave: 0
Esse evento é gerado quando uma solicitação de logon falha. É gerado no computador onde o acesso foi tentado.
Os campos de sujeito indicam a conta no sistema local que solicitou o logon. Isso é mais comumente um serviço como o serviço de servidor, ou um processo local como Winlogon.exe ou Services.exe.
O campo tipo de logon indica o tipo de logon que foi solicitado. Os tipos mais comuns são 2 (interativo) e 3 (rede).
Os campos de informações do processo indicam qual conta e processo no sistema solicitaram o logon.
Os campos de informações da rede indicam de onde uma solicitação de logon remoto se originou. O nome da estação de trabalho nem sempre está disponível e pode ficar em branco em alguns casos.
Os campos de informações de autenticação fornecem informações detalhadas sobre esta solicitação de logon específica.
- Os serviços transmitidos indicam quais serviços intermediários participaram desta solicitação de logon.
- O nome do pacote indica qual subprotocolo foi utilizado entre os protocolos NTLM.
- O comprimento da chave indica o comprimento da chave de sessão gerada. Isso será 0 se nenhuma chave de sessão for solicitada.
Além disso, adicionaremos o valor Source Network Address ao texto do evento.

Em seguida, é necessário adicionar um script que bloqueie o endereço IP no firewall do Windows. Abaixo, um exemplo que pode ser utilizado para isso.
Script para configurar o firewall
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]
$SourceAddress
)
$SourceAddress = $SourceAddress.Trim()
$ErrorActionPreference = 'Stop'
$ruleName = 'Quest-InTrust-Block-Failed-Logons'
$ruleDisplayName = 'Quest InTrust: Bloqueia endereços IP de logons falhos'
function Get-BlockedIps {
(Get-NetFirewallRule -Name $ruleName -ErrorAction SilentlyContinue | get-netfirewalladdressfilter).RemoteAddress
}
$blockedIps = Get-BlockedIps
$allIps = [array]$SourceAddress + [array]$blockedIps | Select-Object -Unique | Sort-Object
if (Get-NetFirewallRule -Name $ruleName -ErrorAction SilentlyContinue) {
Set-NetFirewallRule -Name $ruleName -RemoteAddress $allIps
} else {
New-NetFirewallRule -Name $ruleName -DisplayName $ruleDisplayName -Direction Inbound -Action Block -RemoteAddress $allIps
}
Agora é possível alterar o nome da regra e sua descrição, para evitar confusões posteriormente.

Agora, é necessário adicionar este script como ação de resposta à regra, habilitar a regra e garantir que a regra correspondente está incluída na política de monitoramento para o modo em tempo real. O agente deve ter a capacidade de executar o script de resposta habilitada e deve ser fornecido o parâmetro correto.

Após as configurações realizadas, o número de tentativas de autenticação malsucedidas diminuiu em 80%. Lucro? Com certeza!

Às vezes, um pequeno aumento ocorre novamente, mas isso se deve ao aparecimento de novas fontes de ataque. Depois, tudo volta a cair.
Em uma semana de operação, 66 endereços IP foram adicionados à regra do firewall.

Abaixo, uma tabela com 10 nomes de usuários frequentes que foram utilizados para tentativas de autenticação.
Nome de usuário
Quantidade
Em percentual
administrator
1220235
40.78
admin
672109
22.46
user
219870
7.35
contoso
126088
4.21
contoso.com
73048
2.44
administrador
55319
1.85
servidor
39403
1.32
sgazlabdc01.contoso.com
32177
1.08
administrateur
32377
1.08
sgazlabdc01
31259
1.04
Conte-nos nos comentários como você implementou a resposta a ameaças à segurança da informação. Qual sistema você usa e quão conveniente ele é.
Se você estiver interessado em ver o InTrust em ação, no formulário de contato em nosso site ou me envie uma mensagem privada.
Leia nossos outros artigos sobre segurança da informação:
(artigo popular)
Fonte: habr.com
