O Windows tenta acessar o compartilhamento IPC $ antes do fornecido

3

Eu tenho um servidor samba onde desativei o acesso ao IPC$ share [1] por motivos de segurança (enumeração de usuários e compartilhamentos, consulta de informações do usuário, ...).

Eu posso acessar os compartilhamentos de dados neste servidor sem problemas de qualquer computador baseado em Unix com mount.cifs . No entanto, quando tento acessá-los em computadores Windows (testados com o Windows 7 e 10), recebo um erro Acesso negado logo após fornecer minhas credenciais.

Após gravar o tráfego SMB, notei que os computadores Windows sempre fazem Tree connect request no compartilhamento IPC$ antes de tentar acessar o compartilhamento fornecido (por meio de map network drive ou adicione local de rede ). Meu servidor samba retorna Acesso negado para o compartilhamento IPC$ e o Windows nunca tenta acessar o compartilhamento que eu quero.

Então, minha pergunta é: como posso evitar que o Windows faça essa solicitação inútil em IPC$ e simplesmente acessar o compartilhamento que eu forneci? Ou, pelo menos, como posso forçar o Windows a acessar o compartilhamento real depois que o IPC$ one retornou Acesso negado ?

Agradecemos antecipadamente por sua ajuda e boas festas!

Bob Esponja

[1] link

    
por spongebob 25.12.2016 / 23:07

1 resposta

2

Então, minha pergunta é: como posso evitar que o Windows faça essa solicitação inútil ...? Ou, pelo menos, como posso forçar o Windows a acessar o compartilhamento real depois ...?

A resposta é que você não pode! Desculpe dizer, mas este é o caso. No entanto, embora esta seja a verdadeira resposta à sua pergunta - não quero soar inútil. Eu quero ajudar, então espero que o que segue seja o melhor conselho que posso dar que será útil para você na sua situação.

Eu sou um testador de penetração profissional e geralmente uso acesso de compartilhamento anônimo (como IPC $) para obter informações sobre e invadir sistemas para fins de teste legítimos. O principal é impedir a enumeração de usuários e compartilhamentos por um usuário anônimo (alguém sem credenciais válidas). Depois que as credenciais válidas são obtidas, normalmente há outras formas de enumerar usuários (por exemplo, cat / etc / passwd), e isso se torna menos prioritário para um invasor de qualquer maneira.

O artigo que você mencionou contém o seguinte:

If you use this method, then clients will be given an 'access denied' reply when they try to access the IPC$ share. Those clients will not be able to browse shares and may also be unable to access some other resources. This is not recommended unless for some reason you cannot use one of the other methods just discussed.

O motivo pelo qual não é recomendado é porque "Esses clientes ... também podem não conseguir acessar alguns outros recursos". O Windows não sendo capaz de acessar qualquer compartilhamento na máquina é um exemplo disso. Infelizmente, o Windows requer acesso a IPC $ para visualizar os outros compartilhamentos. Se não puder ver IPC $, apenas assume que nenhuma outra ação está disponível e desiste.

A implementação de cliente Linux do Samba funciona de maneira um pouco diferente e, portanto, não apresenta o mesmo problema. Como não há uma maneira de contornar isso, eu apenas garantiria que a participação do IPC $ não estivesse dando informações para usuários anônimos.

Usar as seções Proteção baseada em host e Proteção baseada no usuário do artigo enviado são boas maneiras de impedir acesso indesejável a todo o Samba, incluindo o IPC $ compartilhar de fontes não confiáveis, e pode muito bem dar tudo o que você precisa.

No entanto, mais conselhos estão disponíveis nas seções especificadas desta página: link

Seções para analisar:

"access based share enum"

"browseable" - setting to "no" on all shares (except IPC$) should prevent them showing up but windows should still be able to access

"guest ok" - test whether setting to "no" on IPC$ share prevents Windows accessing other shares

Se você estiver usando o winbind, defina o seguinte para evitar enumerações:

winbind enum groups = no
winbind enum users = no
    
por 07.01.2017 / 11:44