Existe uma maneira de auditar o AD para uma senha específica?

8

Existe uma maneira de eu auditar o AD para verificar uma senha específica?

Costumávamos usar uma senha "padrão" para todos os novos usuários (por exemplo, MyPa55word ). Quero garantir que isso não seja mais usado em nenhum lugar de nossa propriedade.

A única maneira de pensar em como fazer isso seria: a) auditar o diretório de alguma forma para qualquer usuário com essa senha ou b) configurar um GP que especificamente não permitisse essa senha (o ideal seria solicitar aos usuários que redefinissem sua senha. )

Alguém tem alguma dica de como eu posso abordar isso?

Ta,

Ben


fonte
3
Pessoalmente, acho que você está adotando a abordagem errada. Em vez de tentar ver quem está mal, por que não impedi-lo, basta definir a opção 'O usuário deve alterar a senha no próximo logon' para todas as contas recém-criadas ?, certamente essa seria a solução mais fácil e segura?
Bryan
O método sugerido por Bryan existe especificamente para impedir que seu problema apareça.
John Gardeniers
Concordamos para o futuro, mas estamos tentando corrigir um problema que já aconteceu. O problema com a abordagem "forçar o usuário a alterar a senha no próximo logon" é que a maioria dos usuários trabalha remotamente - a alteração de senhas com usuários fora do escritório nos causou problemas no passado.

Respostas:

1

Aqui estão algumas idéias - nenhuma delas realmente muito boa (do ponto de vista perspicaz de que podem acionar alarmes de antivírus ou de detecção de intrusão):

  • Você pode despejar os hashes de senha do Active Directory e executar um cracker de senha neles. Caim e Abel podem fazer o crack para você. Você pode obter os hashes com o fgdump. Cuidado - esses dois utilitários provavelmente acionarão alarmes no seu software antivírus.

  • Você pode escrever um script simples para percorrer a saída de uma lista de usuários, verificando senhas válidas usando o comando "NET USE". Use algo como isto:

    @echo off

    rem Caminho de destino para "mapear" uma "unidade" para teste de senha
    definir DESTPATH ​​= \\ SERVER \ Share
    rem Letra da unidade usada para "mapear" uma "unidade" para teste de senha
    SET DRIVE_LETTER = Q:

    remova o nome de domínio NetBIOS para testar
    definir DOMAIN = DOMAIN

    Arquivo rem contendo lista de nomes de usuários, um por linha
    SET USERLIST = userlist.txt

    rem Senha para testar
    SET PASSWORD = MyPa55word

    rem Arquivo de saída
    SET OUTPUT = output.txt

    se existir "% DRIVE_LETTER% \." goto _letter_used

    para / f %% i em (% USERLIST%) do (
        uso líquido% DRIVE_LETTER%% DESTPATH% / USER:% DOMAIN% \ %% i% PASSWORD%

        se existir "% DRIVE_LETTER% \." a senha do eco %% i é% PASSWORD% >>% OUTPUT%

        uso líquido% DRIVE_LETTER% / d / a
    )

    ir ao fim

    : _letter_used
    eco% DRIVE_LETTER% já está em uso. Altere-o para uma letra de unidade livre e execute-o novamente.

    :fim

Coloque a lista de usuários em "userlist.txt" (um nome de usuário por linha), defina as variáveis ​​na parte superior do script para se referir a um caminho para o qual o usuário possa "mapear" uma "unidade" e verifique se o O PC em que está sendo executado não possui outras "unidades" "mapeadas" para o servidor de destino (já que um PC com Windows permite apenas um conjunto de credenciais para serem usadas nas conexões de clientes SMB com um determinado servidor por vez).

Como eu disse-- qualquer um dos métodos provavelmente não é uma ótima idéia. > sorriso <

Evan Anderson
fonte
11
se você despejar os hashes, tendo definido uma conta para ter sua senha padrão, saberá qual é o hash e poderá procurar por isso, não é?
xenny
Você, senhor, é uma lenda. Acho que não expliquei muito bem a pergunta - mas era exatamente disso que eu precisava. Foi depois de um rápido despejo de todos com essa senha específica, para que eu pudesse discretamente levá-los a alterá-las. Muito obrigado!
8

Não existe uma maneira oficial de visualizar senhas de usuário (é possível, mas você precisa se aprofundar em ... utilitários de segurança). Provavelmente, é melhor abordar isso de um ângulo de idade da senha. Parece que você pode comparar a data de criação do usuário com a data em que a senha foi alterada pela última vez e, se houver uma correspondência, alterne o campo 'alteração de senha no próximo login'.

Kara Marfia
fonte
Ah ... solução muito boa!
blank3
1

crie um compartilhamento no qual você esteja solicitando uma senha ao usar a rede. em seguida, escreva um script que tente mapear o compartilhamento com todos os nomes de usuário e o pw padrão. dessa forma, nenhum logon é necessário e você não quebrará a política

raerek
fonte
Isso é o que meu script na minha resposta faz, basicamente.
Evan Anderson
1

Você deve olhar para John the Ripper - é um utilitário de quebra de senha. Você pode executá-lo no modo de ataque de dicionário, que obtém uma lista de senhas de um arquivo de texto. Sua lista de palavras pode consistir apenas em sua senha padrão.

Deve ser bastante rápido, provavelmente mais rápido que o compartilhamento + conectar via script de senha proposto.

Christopher_G_Lewis
fonte
0

Você pode tentar encontrar uma maneira de criar script de uma tentativa de logon para um compartilhamento ou recurso que tente essa senha "padrão" para cada usuário em uma lista, como uma abordagem de arquivo em lote, e depois registre quais foram bem-sucedidas. Mas isso seria muito trabalhoso para uma única auditoria, se você não for um grande negócio com um grande número de contas. Pode haver alguns utilitários de segurança de chapéu cinza por aí, mas não sei o quanto você confiaria neles.

Você pode obter um utilitário de auditoria de senha com um ataque baseado em dicionário (l0phtcrack?) E usar apenas sua senha padrão como um dicionário personalizado. Isso pode tornar as coisas mais rápidas e fáceis.

Isso fica arriscado, pois esses utilitários são ferramentas que ajudam tanto quanto machucam. Alguns scanners de malware os sinalizam, mesmo se você os estiver usando para fins legítimos. O Windows não possui muitos utilitários de verificação de senha internos para administradores, pois foi configurado especificamente para que os administradores possam redefinir ou apagar as senhas, mas não saber quais eram as senhas "perdidas" ou "esquecidas".

Bart Silverstrim
fonte
0

Eu definiria Enforçar o histórico de senhas como um número alto (digamos 10) e diminuiria a idade da senha para 30 ou criaria uma senha de expiração para todos os usuários. A próxima coisa a fazer é examinar as contas de serviço e redefinir suas senhas. Se você tiver um ambiente amplo, isso será doloroso (portanto, as novas contas de serviço gerenciado em 2008). Concordo com Bart, pois os utilitários que podem recuperar a senha costumam ter mais problemas do que valem. Esperamos que você esteja em um ambiente em que eles permitam que você expire as senhas em intervalos regulares. Nesse caso, essa senha certamente desaparecerá com o tempo, desde que você tenha o histórico de senhas definido.

Jim B
fonte
0

Eu usei o pwdump 6 no passado para despejar hashes de senha.

Crie uma conta com antecedência com a senha. Se os usuários usarem a mesma senha, o hash da senha despejado para os usuários deverá ser o mesmo. Apenas verifique se você tem permissões, pois os hashes de senha são sensíveis, pois existem ferramentas como tabelas arco-íris com vários GB de tamanho e permitem que as pessoas encontrem a senha do usuário a partir do hash.

Os sistemas Linux e unix impedem as tabelas arco-íris, pois geralmente adicionam sal para garantir que as tabelas de hash de um sistema não possam ser usadas para um segundo sistema.

Trabalhei em uma empresa auditada por uma grande empresa que eles sugeriram que parássemos de fornecer senhas comuns ao configurar usuários, pois muitas vezes também recebem atribuições de grupo - o que significa que alguém que sabia que john smith estava começando poderia tentar fazer logon com o nome de usuário padrão de john smith junto com o senha padrão.

Marca

MarkL
fonte