mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
2fd0ab4d90
commit
ad4e0befdc
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## Serviços de Acesso Remoto
|
## Remote Access Services
|
||||||
|
|
||||||
Estes são os serviços comuns do macOS para acessá-los remotamente.\
|
Estes são os serviços comuns do macOS para acessá-los remotamente.\
|
||||||
Você pode habilitar/desabilitar esses serviços em `System Settings` --> `Sharing`
|
Você pode habilitar/desabilitar esses serviços em `System Settings` --> `Sharing`
|
||||||
@ -16,7 +16,7 @@ Verifique se algum está habilitado executando:
|
|||||||
```bash
|
```bash
|
||||||
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
|
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
|
||||||
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | wc -l);
|
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | wc -l);
|
||||||
flShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | egrep "\*.88|\*.445|\*.548" | wc -l);
|
flShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | egrep "\\*.88|\\*.445|\\*.548" | wc -l);
|
||||||
rLgn=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.22" | wc -l);
|
rLgn=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.22" | wc -l);
|
||||||
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
|
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
|
||||||
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
|
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
|
||||||
@ -24,7 +24,7 @@ printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharin
|
|||||||
```
|
```
|
||||||
### Pentesting ARD
|
### Pentesting ARD
|
||||||
|
|
||||||
Apple Remote Desktop (ARD) é uma versão aprimorada do [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) adaptada para macOS, oferecendo recursos adicionais. Uma vulnerabilidade notável no ARD é seu método de autenticação para a senha da tela de controle, que usa apenas os primeiros 8 caracteres da senha, tornando-o suscetível a [brute force attacks](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) com ferramentas como Hydra ou [GoRedShell](https://github.com/ahhh/GoRedShell/), já que não há limites de taxa padrão.
|
Apple Remote Desktop (ARD) é uma versão aprimorada do [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) adaptada para macOS, oferecendo recursos adicionais. Uma vulnerabilidade notável no ARD é seu método de autenticação para a senha da tela de controle, que usa apenas os primeiros 8 caracteres da senha, tornando-o suscetível a [ataques de força bruta](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) com ferramentas como Hydra ou [GoRedShell](https://github.com/ahhh/GoRedShell/), já que não há limites de taxa padrão.
|
||||||
|
|
||||||
Instâncias vulneráveis podem ser identificadas usando o script `vnc-info` do **nmap**. Serviços que suportam `VNC Authentication (2)` são especialmente suscetíveis a ataques de força bruta devido à truncagem da senha de 8 caracteres.
|
Instâncias vulneráveis podem ser identificadas usando o script `vnc-info` do **nmap**. Serviços que suportam `VNC Authentication (2)` são especialmente suscetíveis a ataques de força bruta devido à truncagem da senha de 8 caracteres.
|
||||||
|
|
||||||
@ -32,25 +32,47 @@ Para habilitar o ARD para várias tarefas administrativas, como escalonamento de
|
|||||||
```bash
|
```bash
|
||||||
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
||||||
```
|
```
|
||||||
ARD fornece níveis de controle versáteis, incluindo observação, controle compartilhado e controle total, com sessões persistindo mesmo após mudanças de senha do usuário. Permite o envio de comandos Unix diretamente, executando-os como root para usuários administrativos. O agendamento de tarefas e a pesquisa remota do Spotlight são recursos notáveis, facilitando buscas remotas de baixo impacto por arquivos sensíveis em várias máquinas.
|
ARD fornece níveis de controle versáteis, incluindo observação, controle compartilhado e controle total, com sessões persistindo mesmo após mudanças de senha do usuário. Permite o envio de comandos Unix diretamente, executando-os como root para usuários administrativos. O agendamento de tarefas e a pesquisa remota do Spotlight são recursos notáveis, facilitando pesquisas remotas de baixo impacto para arquivos sensíveis em várias máquinas.
|
||||||
|
|
||||||
|
#### Vulnerabilidades recentes de Compartilhamento de Tela / ARD (2023-2025)
|
||||||
|
|
||||||
|
| Ano | CVE | Componente | Impacto | Corrigido em |
|
||||||
|
|-----|-----|------------|---------|--------------|
|
||||||
|
|2023|CVE-2023-42940|Compartilhamento de Tela|Renderização de sessão incorreta poderia causar a transmissão da *mesa de trabalho* ou janela *errada*, resultando em vazamento de informações sensíveis|macOS Sonoma 14.2.1 (Dez 2023) |
|
||||||
|
|2024|CVE-2024-23296|launchservicesd / login|Bypass de proteção de memória do kernel que pode ser encadeado após um login remoto bem-sucedido (explorado ativamente na natureza)|macOS Ventura 13.6.4 / Sonoma 14.4 (Mar 2024) |
|
||||||
|
|
||||||
|
**Dicas de Hardening**
|
||||||
|
|
||||||
|
* Desative *Compartilhamento de Tela*/*Gerenciamento Remoto* quando não for estritamente necessário.
|
||||||
|
* Mantenha o macOS totalmente atualizado (a Apple geralmente envia correções de segurança para as três últimas versões principais).
|
||||||
|
* Use uma **Senha Forte** *e* aplique a opção *“visualizadores VNC podem controlar a tela com senha”* **desativada** sempre que possível.
|
||||||
|
* Coloque o serviço atrás de uma VPN em vez de expor TCP 5900/3283 à Internet.
|
||||||
|
* Adicione uma regra de Firewall de Aplicação para limitar `ARDAgent` à sub-rede local:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent
|
||||||
|
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockapp /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent on
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Protocolo Bonjour
|
## Protocolo Bonjour
|
||||||
|
|
||||||
Bonjour, uma tecnologia projetada pela Apple, permite que **dispositivos na mesma rede detectem os serviços oferecidos uns pelos outros**. Também conhecido como Rendezvous, **Zero Configuration** ou Zeroconf, permite que um dispositivo se junte a uma rede TCP/IP, **escolha automaticamente um endereço IP** e transmita seus serviços para outros dispositivos da rede.
|
Bonjour, uma tecnologia projetada pela Apple, permite que **dispositivos na mesma rede detectem os serviços oferecidos uns pelos outros**. Conhecido também como Rendezvous, **Zero Configuration**, ou Zeroconf, permite que um dispositivo se junte a uma rede TCP/IP, **escolha automaticamente um endereço IP** e transmita seus serviços para outros dispositivos da rede.
|
||||||
|
|
||||||
A Rede de Zero Configuração, fornecida pelo Bonjour, garante que os dispositivos possam:
|
A Rede de Zero Configuração, fornecida pelo Bonjour, garante que os dispositivos possam:
|
||||||
|
|
||||||
- **Obter automaticamente um endereço IP** mesmo na ausência de um servidor DHCP.
|
- **Obter automaticamente um Endereço IP** mesmo na ausência de um servidor DHCP.
|
||||||
- Realizar **tradução de nome para endereço** sem exigir um servidor DNS.
|
- Realizar **tradução de nome para endereço** sem exigir um servidor DNS.
|
||||||
- **Descobrir serviços** disponíveis na rede.
|
- **Descobrir serviços** disponíveis na rede.
|
||||||
|
|
||||||
Dispositivos que utilizam Bonjour atribuirão a si mesmos um **endereço IP da faixa 169.254/16** e verificarão sua exclusividade na rede. Macs mantêm uma entrada de tabela de roteamento para essa sub-rede, verificável via `netstat -rn | grep 169`.
|
Dispositivos que utilizam Bonjour atribuirão a si mesmos um **endereço IP da faixa 169.254/16** e verificarão sua exclusividade na rede. Macs mantêm uma entrada de tabela de roteamento para essa sub-rede, verificável via `netstat -rn | grep 169`.
|
||||||
|
|
||||||
Para DNS, o Bonjour utiliza o **protocolo Multicast DNS (mDNS)**. O mDNS opera sobre **a porta 5353/UDP**, empregando **consultas DNS padrão** mas direcionando para o **endereço multicast 224.0.0.251**. Essa abordagem garante que todos os dispositivos ouvindo na rede possam receber e responder às consultas, facilitando a atualização de seus registros.
|
Para DNS, o Bonjour utiliza o **protocolo Multicast DNS (mDNS)**. O mDNS opera sobre **a porta 5353/UDP**, empregando **consultas DNS padrão** mas direcionando para o **endereço multicast 224.0.0.251**. Essa abordagem garante que todos os dispositivos ouvintes na rede possam receber e responder às consultas, facilitando a atualização de seus registros.
|
||||||
|
|
||||||
Ao ingressar na rede, cada dispositivo auto-seleciona um nome, geralmente terminando em **.local**, que pode ser derivado do nome do host ou gerado aleatoriamente.
|
Ao ingressar na rede, cada dispositivo auto-seleciona um nome, geralmente terminando em **.local**, que pode ser derivado do nome do host ou gerado aleatoriamente.
|
||||||
|
|
||||||
A descoberta de serviços dentro da rede é facilitada pelo **DNS Service Discovery (DNS-SD)**. Aproveitando o formato dos registros DNS SRV, o DNS-SD utiliza **registros DNS PTR** para permitir a listagem de múltiplos serviços. Um cliente que busca um serviço específico solicitará um registro PTR para `<Service>.<Domain>`, recebendo em troca uma lista de registros PTR formatados como `<Instance>.<Service>.<Domain>` se o serviço estiver disponível a partir de múltiplos hosts.
|
A descoberta de serviços dentro da rede é facilitada pelo **DNS Service Discovery (DNS-SD)**. Aproveitando o formato dos registros DNS SRV, o DNS-SD utiliza **registros DNS PTR** para permitir a listagem de múltiplos serviços. Um cliente que busca um serviço específico solicitará um registro PTR para `<Service>.<Domain>`, recebendo em troca uma lista de registros PTR formatados como `<Instance>.<Service>.<Domain>` se o serviço estiver disponível de múltiplos hosts.
|
||||||
|
|
||||||
A utilidade `dns-sd` pode ser empregada para **descobrir e anunciar serviços de rede**. Aqui estão alguns exemplos de seu uso:
|
A utilidade `dns-sd` pode ser empregada para **descobrir e anunciar serviços de rede**. Aqui estão alguns exemplos de seu uso:
|
||||||
|
|
||||||
@ -74,7 +96,7 @@ Para então procurar serviços HTTP na rede:
|
|||||||
```bash
|
```bash
|
||||||
dns-sd -B _http._tcp
|
dns-sd -B _http._tcp
|
||||||
```
|
```
|
||||||
Quando um serviço é iniciado, ele anuncia sua disponibilidade para todos os dispositivos na sub-rede, transmitindo sua presença por multicast. Dispositivos interessados nesses serviços não precisam enviar solicitações, mas simplesmente ouvir esses anúncios.
|
Quando um serviço é iniciado, ele anuncia sua disponibilidade para todos os dispositivos na sub-rede, fazendo multicast de sua presença. Dispositivos interessados nesses serviços não precisam enviar solicitações, mas simplesmente ouvir esses anúncios.
|
||||||
|
|
||||||
Para uma interface mais amigável, o aplicativo **Discovery - DNS-SD Browser** disponível na Apple App Store pode visualizar os serviços oferecidos na sua rede local.
|
Para uma interface mais amigável, o aplicativo **Discovery - DNS-SD Browser** disponível na Apple App Store pode visualizar os serviços oferecidos na sua rede local.
|
||||||
|
|
||||||
@ -99,9 +121,46 @@ input("Press enter to exit...\n\n")
|
|||||||
finally:
|
finally:
|
||||||
zeroconf.close()
|
zeroconf.close()
|
||||||
```
|
```
|
||||||
### Desativando o Bonjour
|
### Enumerando Bonjour na rede
|
||||||
|
|
||||||
Se houver preocupações com a segurança ou outras razões para desativar o Bonjour, ele pode ser desligado usando o seguinte comando:
|
* **Nmap NSE** – descobrir serviços anunciados por um único host:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nmap -sU -p 5353 --script=dns-service-discovery <target>
|
||||||
|
```
|
||||||
|
|
||||||
|
O script `dns-service-discovery` envia uma consulta `_services._dns-sd._udp.local` e, em seguida, enumera cada tipo de serviço anunciado.
|
||||||
|
|
||||||
|
* **mdns_recon** – ferramenta Python que escaneia intervalos inteiros em busca de *respondedores* mDNS *mal configurados* que respondem a consultas unicast (útil para encontrar dispositivos acessíveis através de sub-redes/WAN):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/chadillac/mdns_recon && cd mdns_recon
|
||||||
|
python3 mdns_recon.py -r 192.0.2.0/24 -s _ssh._tcp.local
|
||||||
|
```
|
||||||
|
|
||||||
|
Isso retornará hosts expondo SSH via Bonjour fora do link local.
|
||||||
|
|
||||||
|
### Considerações de segurança & vulnerabilidades recentes (2024-2025)
|
||||||
|
|
||||||
|
| Ano | CVE | Severidade | Problema | Corrigido em |
|
||||||
|
|------|-----|----------|-------|------------|
|
||||||
|
|2024|CVE-2024-44183|Média|Um erro de lógica em *mDNSResponder* permitiu que um pacote manipulado acionasse uma **negação de serviço**|macOS Ventura 13.7 / Sonoma 14.7 / Sequoia 15.0 (Set 2024) |
|
||||||
|
|2025|CVE-2025-31222|Alta|Um problema de correção em *mDNSResponder* poderia ser explorado para **elevação de privilégio local**|macOS Ventura 13.7.6 / Sonoma 14.7.6 / Sequoia 15.5 (Mai 2025) |
|
||||||
|
|
||||||
|
**Orientações de mitigação**
|
||||||
|
|
||||||
|
1. Restringir UDP 5353 ao escopo *link-local* – bloquear ou limitar a taxa em controladores sem fio, roteadores e firewalls baseados em host.
|
||||||
|
2. Desativar Bonjour completamente em sistemas que não requerem descoberta de serviços:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||||
|
```
|
||||||
|
3. Para ambientes onde Bonjour é necessário internamente, mas nunca deve cruzar fronteiras de rede, use restrições de perfil de *AirPlay Receiver* (MDM) ou um proxy mDNS.
|
||||||
|
4. Ativar **Proteção de Integridade do Sistema (SIP)** e manter o macOS atualizado – ambas as vulnerabilidades acima foram corrigidas rapidamente, mas dependiam do SIP estar ativado para proteção total.
|
||||||
|
|
||||||
|
### Desativando Bonjour
|
||||||
|
|
||||||
|
Se houver preocupações sobre segurança ou outras razões para desativar Bonjour, ele pode ser desligado usando o seguinte comando:
|
||||||
```bash
|
```bash
|
||||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||||
```
|
```
|
||||||
@ -110,5 +169,7 @@ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.p
|
|||||||
- [**The Mac Hacker's Handbook**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt_other?_encoding=UTF8&me=&qid=)
|
- [**The Mac Hacker's Handbook**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt_other?_encoding=UTF8&me=&qid=)
|
||||||
- [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
|
- [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
|
||||||
- [**https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html**](https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html)
|
- [**https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html**](https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html)
|
||||||
|
- [**NVD – CVE-2023-42940**](https://nvd.nist.gov/vuln/detail/CVE-2023-42940)
|
||||||
|
- [**NVD – CVE-2024-44183**](https://nvd.nist.gov/vuln/detail/CVE-2024-44183)
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user